[
  {
    "path": ".github/ISSUE_TEMPLATE/Bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Smartphone (please complete the following information):**\n - Device: [e.g. iPhone6]\n - OS: [e.g. iOS8.1]\n - Browser [e.g. stock browser, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/custom.md",
    "content": "---\nname: Custom issue template\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n\n"
  },
  {
    "path": ".github/workflows/label.yml",
    "content": "# This workflow will triage pull requests and apply a label based on the\n# paths that are modified in the pull request.\n#\n# To use this workflow, you will need to set up a .github/labeler.yml\n# file with configuration.  For more information, see:\n# https://github.com/actions/labeler/blob/master/README.md\n\nname: Labeler\non: [pull_request]\n\njobs:\n  label:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/labeler@v2\n      with:\n        repo-token: \"${{ secrets.GITHUB_TOKEN }}\"\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Data files\n*.csv\n*.tsv\n*.json\n*.parquet\n*.feather\n*.pkl\n*.pickle\n\n# ML model artifacts\n*.h5\n*.hdf5\n*.onnx\n*.pt\n*.pth\n*.ckpt\n*.safetensors\n*.pb\nsaved_model/\ncheckpoints/\nmodels/\n\n# Distribution / packaging\n.Python\nenv/\nvenv/\n.venv/\nENV/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n*.rar\n*.zip\n*.tar.gz\n\n# PyInstaller\n*.manifest\n*.spec\n*.swp\n*.pyc\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\nrequirements.txt.lock\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Logs\n*.log\nlogs/\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n*.ipynb\n\n# IDEs\n.idea/\n.vscode/\n*.sublime-project\n*.sublime-workspace\n*.iml\n\n# OS files\n.DS_Store\nThumbs.db\ndesktop.ini\n\n# Environment files\n.env\n.env.local\n*.env.yaml\n*.env.json\n\n# TensorBoard\nruns/\ntensorboard/\n\n# Weights & Biases\nwandb/\n\n# MLflow\nmlruns/\nmlartifacts/\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n  - repo: https://github.com/psf/black\n    rev: 24.1.0\n    hooks:\n      - id: black\n        language_version: python3.11\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at diyago@ya.ru. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to ML-DL-scripts\n\nThank you for your interest in contributing! This repository contains Machine Learning and Deep Learning scripts, Kaggle solutions, and educational materials.\n\n## How to Contribute\n\n### Reporting Issues\n\nIf you find a bug or have a suggestion:\n1. Check if the issue already exists\n2. Open a new issue with a clear description\n3. Include code examples and error messages if applicable\n\n### Submitting Changes\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/your-feature`)\n3. Make your changes\n4. Ensure code follows the existing style (Black formatter)\n5. Commit with clear messages (`git commit -m \"Add: description\"`)\n6. Push to your fork (`git push origin feature/your-feature`)\n7. Open a Pull Request\n\n### Code Guidelines\n\n- Use Python 3.7+\n- Follow PEP 8 style guidelines\n- Use Black for code formatting\n- Add docstrings for functions and classes\n- Include examples where helpful\n- Keep notebooks clean (clear outputs before committing)\n\n### Project Structure\n\nPlace new scripts in appropriate folders:\n- `classification/` – Classification algorithms\n- `regression/` – Regression models\n- `clustering/` – Clustering methods\n- `DEEP LEARNING/` – Neural network implementations\n- `time series regression/` – Time series analysis\n- `statistics/` – Statistical tools\n- `deployment/` – Docker and deployment examples\n\n## Questions?\n\nContact via Telegram: [@ai_tablet](https://t.me/ai_tablet)\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at issues. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/README.md",
    "content": "[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n# GANs for tabular data\nWe well know GANs for success in the realistic image generation. However, they can be applied in tabular data generation. We will review and examine some recent papers about tabular GANs in action.\n\nMedium post: [GANs for tabular data](https://towardsdatascience.com/review-of-gans-for-tabular-data-a30a2199342)\n## Used datasets and expriment design\n\n**Task formalization**\n\nLet say we have **T_train** and **T_test** (train and test set respectively). We need to train the model on **T_train** and make predictions on **T_test**. However, we will increase the train by generating new data by GAN, somehow similar to **T_test**, without using ground truth labels of it.\n\n**Experiment design**\n\nLet say we have **T_train** and **T_test** (train and test set respectively). The size of **T_train** is smaller and might have different data distribution. First of all, we train CTGAN on **T_train** with ground truth labels (step 1), then generate additional data **T_synth** (step 2). Secondly, we train boosting in an adversarial way on concatenated **T_train** and **T_synth** (target set to 0) with **T_test** (target set to 1) (steps 3 & 4). The goal is to apply newly trained adversarial boosting to obtain rows more like **T_test**. Note - initial ground truth labels aren't used for adversarial training. As a result, we take top rows from **T_train** and **T_synth** sorted by correspondence to **T_test** (steps 5 & 6), and train new boosting on them and check results on **T_test**.\n\n![Experiment design and workflow](./images/workflow.png?raw=true)\n \n**Picture 1.1** Experiment design and workflow\n\nOf course for the benchmark purposes we will test ordinal training without these tricks and another original pipeline but without CTGAN (in step 3 we won't use **T_sync**).\n\n**Datasets**\n\nAll datasets came from different domains. They have a different number of observations, number of categorical and numerical features. \nThe objective for all datasets - binary classification. \nPreprocessing of datasets were simple: removed all time-based columns from datasets. \nRemaining columns were either categorical or numerical. \n\n\n**Table 1.1** Used datasets \n\n| Name | Total points | Train points | Test points | Number of features | Number of categorical features | Short description | \n| :--- | :---: | :---: | :---: | :---: | :---: | :---: |\n| [Telecom](https://www.kaggle.com/blastchar/telco-customer-churn)   | 7.0k | 4.2k |  2.8k |  20   |  16  | Churn prediction for telecom data |\n| [Adult](https://www.kaggle.com/wenruliu/adult-income-dataset)   | 48.8k | 29.3k | 19.5k  |  15  | 8 | Predict if persons' income is bigger 50k |\n| [Employee](https://www.kaggle.com/c/amazon-employee-access-challenge/data)   | 32.7k | 19.6k | 13.1k  | 10  | 9 | Predict an employee's access needs, given his/her job role|\n| [Credit](https://www.kaggle.com/c/home-credit-default-risk/data)   | 307.5k | 184.5k | 123k  |  121  | 18 | Loan repayment |\n| [Mortgages](https://www.crowdanalytix.com/contests/propensity-to-fund-mortgages)   |  45.6k | 27.4k | 18.2k | 20 | 9 | Predict if house mortgage is founded |\n| [Taxi](https://www.crowdanalytix.com/contests/mckinsey-big-data-hackathon) | 892.5k | 535.5k | 357k | 8 | 5 | Predict the probability of an offer being accepted by a certain driver |\n| [Poverty_A](https://www.drivendata.org/competitions/50/worldbank-poverty-prediction/page/99/)   | 37.6k | 22.5k | 15.0k | 41 | 38 | Predict whether or not a given household for a given country is poor or not |\n\n\n\n## Results\n\nTo determine the best encoderthe ROC AUC scores of each dataset were scaled (min-max scale) and then averaged results among the dataset. \nTo determine the best validation strategy, I compared the top score of each dataset for each type of validation. \n\n**Table 1.2** Different sampling results across the dataset, higher is better (100% - maximum per dataset ROC AUC)\n\n| dataset_name  |   None |   gan |   sample_original |\n|:-----------------------|-------------------:|------------------:|------------------------------:|\n| credit                 |           0.997 |          **0.998** |                      0.997 |\n| employee               |           **0.986** |          0.966 |                      0.972 |\n| mortgages              |           0.984 |          0.964 |                      **0.988** |\n| poverty_A              |           0.937 |          **0.950** |                      0.933 |\n| taxi                   |           0.966 |          0.938 |                      **0.987** |\n| adult                  |           0.995 |          0.967 |                      **0.998** |\n| telecom                |           **0.995** |          0.868 |                      0.992 |\n\n**Table 1.3** Different sampling results, higher is better for a mean (ROC AUC), lower is better for std (100% - maximum per dataset ROC AUC)\n\n| sample_type     |     mean |       std |\n|:----------------|---------:|----------:|\n| None            | 0.980 | 0.036 |\n| gan             | 0.969 | 0.06 |\n| sample_original | **0.981** | **0.032** |\n\n**Table 1.4** same_target_prop is equal 1 then the target rate for train and test are different no more than 5%. Higher is better.\n\n| sample_type     |   same_target_prop |   prop_test_score |\n|:----------------|-------------------:|------------------:|\n| None            |                  0 |          0.964 |\n| None            |                  1 |          0.985 |\n| gan             |                  0 |          0.966 |\n| gan             |                  1 |          0.945 |\n| sample_original |                  0 |          0.973 |\n| sample_original |                  1 |          0.984 |\n\n\n\n## References\n\n[1] Jonathan Hui. GAN — What is Generative Adversarial Networks GAN? (2018), medium article\n\n[2]Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio. Generative Adversarial Networks (2014). arXiv:1406.2661\n\n[3] Lei Xu LIDS, Kalyan Veeramachaneni. Synthesizing Tabular Data using Generative Adversarial Networks (2018). arXiv:1811.11264v1 [cs.LG]\n\n[4] Lei Xu, Maria Skoularidou, Alfredo Cuesta-Infante, Kalyan Veeramachaneni. Modeling Tabular Data using Conditional GAN (2019). arXiv:1907.00503v2 [cs.LG]\n\n[5] Denis Vorotyntsev. Benchmarking Categorical Encoders (2019). Medium post\n\n[6] Insaf Ashrapov. GAN-for-tabular-data (2020). Github repository.\n\n[7] Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila. Analyzing and Improving the Image Quality of StyleGAN (2019) arXiv:1912.04958v2 [cs.CV]\n\n\n\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/README.MD",
    "content": "REFERENCE (initial code): https://github.com/sdv-dev/CTGAN\n\n<p align=\"left\">\n<img width=15% src=\"https://dai.lids.mit.edu/wp-content/uploads/2018/06/Logo_DAI_highres.png\" alt=“sdv-dev” />\n<i>An open source project from Data to AI Lab at MIT.</i>\n</p>\n\n[![Development Status](https://img.shields.io/badge/Development%20Status-2%20--%20Pre--Alpha-yellow)](https://pypi.org/search/?c=Development+Status+%3A%3A+2+-+Pre-Alpha)\n[![PyPI Shield](https://img.shields.io/pypi/v/ctgan.svg)](https://pypi.python.org/pypi/ctgan)\n[![Travis CI Shield](https://travis-ci.org/sdv-dev/CTGAN.svg?branch=master)](https://travis-ci.org/sdv-dev/CTGAN)\n[![Downloads](https://pepy.tech/badge/ctgan)](https://pepy.tech/project/ctgan)\n[![Coverage Status](https://codecov.io/gh/sdv-dev/CTGAN/branch/master/graph/badge.svg)](https://codecov.io/gh/sdv-dev/CTGAN)\n\n# CTGAN\n\nImplementation of our NeurIPS paper [Modeling Tabular data using Conditional GAN](https://arxiv.org/abs/1907.00503).\n\nCTGAN is a GAN-based data synthesizer that can generate synthetic tabular data with high fidelity.\n\n* License: [MIT](https://github.com/sdv-dev/CTGAN/blob/master/LICENSE)\n* Development Status: [Pre-Alpha](https://pypi.org/search/?c=Development+Status+%3A%3A+2+-+Pre-Alpha)\n* Documentation: https://sdv-dev.github.io/CTGAN\n* Homepage: https://github.com/sdv-dev/CTGAN\n\n## Overview\n\nBased on previous work ([TGAN](https://github.com/sdv-dev/TGAN)) on synthetic data generation,\nwe develop a new model called CTGAN. Several major differences make CTGAN outperform TGAN.\n\n- **Preprocessing**: CTGAN uses more sophisticated Variational Gaussian Mixture Model to detect\n  modes of continuous columns.\n- **Network structure**: TGAN uses LSTM to generate synthetic data column by column. CTGAN uses\n  Fully-connected networks which is more efficient.\n- **Features to prevent mode collapse**: We design a conditional generator and resample the\n  training data to prevent model collapse on discrete columns. We use WGANGP and PacGAN to\n  stabilize the training of GAN.\n\n\n# Install\n\n## Requirements\n\n**CTGAN** has been developed and tested on [Python 3.5, 3.6 and 3.7](https://www.python.org/downloads/)\n\n## Install from PyPI\n\nThe recommended way to installing **CTGAN** is using [pip](https://pip.pypa.io/en/stable/):\n\n```bash\npip install ctgan\n```\n\nThis will pull and install the latest stable release from [PyPI](https://pypi.org/).\n\nIf you want to install from source or contribute to the project please read the\n[Contributing Guide](https://sdv-dev.github.io/CTGAN/contributing.html#get-started).\n\n# Data Format\n\n**CTGAN** expects the input data to be a table given as either a `numpy.ndarray` or a\n`pandas.DataFrame` object with two types of columns:\n\n* **Continuous Columns**: Columns that contain numerical values and which can take any value.\n* **Discrete columns**: Columns that only contain a finite number of possible values, wether\nthese are string values or not.\n\nThis is an example of a table with 4 columns:\n\n* A continuous column with float values\n* A continuous column with integer values\n* A discrete column with string values\n* A discrete column with integer values\n\n|   | A    | B   | C   | D |\n|---|------|-----|-----|---|\n| 0 | 0.1  | 100 | 'a' | 1 |\n| 1 | -1.3 | 28  | 'b' | 2 |\n| 2 | 0.3  | 14  | 'a' | 2 |\n| 3 | 1.4  | 87  | 'a' | 3 |\n| 4 | -0.1 | 69  | 'b' | 2 |\n\n\n**NOTE**: CTGAN does not distinguish between float and integer columns, which means that it will\nsample float values in all cases. If integer values are required, the outputted float values\nmust be rounded to integers in a later step, outside of CTGAN.\n\n# Python Quickstart\n\nIn this short tutorial we will guide you through a series of steps that will help you\ngetting started with **CTGAN**.\n\n## 1. Model the data\n\n### Step 1: Prepare your data\n\nBefore being able to use CTGAN you will need to prepare your data as specified above.\n\nFor this example, we will be loading some data using the `ctgan.load_demo` function.\n\n```python\nfrom ctgan import load_demo\n\ndata = load_demo()\n```\n\nThis will download a copy of the [Adult Census Dataset](https://archive.ics.uci.edu/ml/datasets/adult) as a dataframe:\n\n|   age | workclass        |   fnlwgt | ... |   hours-per-week | native-country   | income   |\n|-------|------------------|----------|-----|------------------|------------------|----------|\n|    39 | State-gov        |    77516 | ... |               40 | United-States    | <=50K    |\n|    50 | Self-emp-not-inc |    83311 | ... |               13 | United-States    | <=50K    |\n|    38 | Private          |   215646 | ... |               40 | United-States    | <=50K    |\n|    53 | Private          |   234721 | ... |               40 | United-States    | <=50K    |\n|    28 | Private          |   338409 | ... |               40 | Cuba             | <=50K    |\n|   ... | ...              |      ... | ... |              ... | ...              | ...      |\n\n\nAside from the table itself, you will need to create a list with the names of the discrete\nvariables.\n\nFor this example:\n\n```python\ndiscrete_columns = [\n    'workclass',\n    'education',\n    'marital-status',\n    'occupation',\n    'relationship',\n    'race',\n    'sex',\n    'native-country',\n    'income'\n]\n```\n\n### Step 2: Fit CTGAN to your data\n\nOnce you have the data ready, you need to import and create an instance of the `CTGANSynthesizer`\nclass and fit it passing your data and the list of discrete columns.\n\n```python\nfrom ctgan import CTGANSynthesizer\n\nctgan = CTGANSynthesizer()\nctgan.fit(data, discrete_columns)\n```\n\nThis process is likely to take a long time to run.\nIf you want to make the process shorter, or longer, you can control the number of training epochs\nthat the model will be performing by adding it to the `fit` call:\n\n```python\nctgan.fit(data, discrete_columns, epochs=5)\n```\n\n## 2. Generate synthetic data\n\nOnce the process has finished, all you need to do is call the `sample` method of your\n`CTGANSynthesizer` instance indicating the number of rows that you want to generate.\n\n```python\nsamples = ctgan.sample(1000)\n```\n\nThe output will be a table with the exact same format as the input and filled with the synthetic\ndata generated by the model.\n\n|     age | workclass    |    fnlwgt | ... |   hours-per-week | native-country   | income   |\n|---------|--------------|-----------|-----|------------------|------------------|----------|\n| 26.3191 | Private      | 124079    | ... |          40.1557 | United-States    | <=50K    |\n| 39.8558 | Private      | 133996    | ... |          40.2507 | United-States    | <=50K    |\n| 38.2477 | Self-emp-inc | 135955    | ... |          40.1124 | Ecuador          | <=50K    |\n| 29.6468 | Private      |   3331.86 | ... |          27.012  | United-States    | <=50K    |\n| 20.9853 | Private      | 120637    | ... |          40.0238 | United-States    | <=50K    |\n|     ... | ...          |       ... | ... |              ... | ...              | ...      |\n\n\n# Join our community\n\n1. If you would like to try more dataset examples, please have a look at the [examples folder](\nhttps://github.com/sdv-dev/CTGAN/tree/master/examples) of the repository. Please contact us\nif you have a usage example that you would want to share with the community.\n2. If you want to contribute to the project code, please head to the [Contributing Guide](\nhttps://sdv-dev.github.io/CTGAN/contributing.html#get-started) for more details about how to do it.\n3. If you have any doubts, feature requests or detect an error, please [open an issue on github](\nhttps://github.com/sdv-dev/CTGAN/issues)\n4. Also do not forget to check the [project documentation site](https://sdv-dev.github.io/CTGAN/)!\n\n\n# Citing TGAN\n\nIf you use CTGAN, please cite the following work:\n\n- *Lei Xu, Maria Skoularidou, Alfredo Cuesta-Infante, Kalyan Veeramachaneni.* **Modeling Tabular data using Conditional GAN**. NeurIPS, 2019.\n\n```LaTeX\n@inproceedings{xu2019modeling,\n  title={Modeling Tabular data using Conditional GAN},\n  author={Xu, Lei and Skoularidou, Maria and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan},\n  booktitle={Advances in Neural Information Processing Systems},\n  year={2019}\n}\n```\n\n# Related Projects\nPlease note that these libraries are external contributions and are not maintained nor supervised by\nthe MIT DAI-Lab team.\n\n## R interface for CTGAN\n\nA wrapper around **CTGAN** has been implemented by Kevin Kuo @kevinykuo, bringing the functionalities\nof **CTGAN** to **R** users.\n\nMore details can be found in the corresponding repository: https://github.com/kasaai/ctgan\n\n## CTGAN Server CLI\n\nA package to easily deploy **CTGAN** onto a remote server. This package is developed by Timothy Pillow @oregonpillow.\n\nMore details can be found in the corresponding repository: https://github.com/oregonpillow/ctgan-server-cli\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n\n\"\"\"Top-level package for ctgan.\"\"\"\n\n__author__ = \"MIT Data To AI Lab\"\n__email__ = \"dailabmit@gmail.com\"\n__version__ = \"0.2.1\"\n\nfrom ctgan.demo import load_demo\nfrom ctgan.synthesizer import CTGANSynthesizer\n\n__all__ = (\"CTGANSynthesizer\", \"load_demo\")\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/__main__.py",
    "content": "import argparse\n\nfrom ctgan.data import read_csv, read_tsv, write_tsv\nfrom ctgan.synthesizer import CTGANSynthesizer\n\n\ndef _parse_args():\n    parser = argparse.ArgumentParser(description=\"CTGAN Command Line Interface\")\n    parser.add_argument(\n        \"-e\", \"--epochs\", default=300, type=int, help=\"Number of training epochs\"\n    )\n    parser.add_argument(\n        \"-t\",\n        \"--tsv\",\n        action=\"store_true\",\n        help=\"Load data in TSV format instead of CSV\",\n    )\n    parser.add_argument(\n        \"--no-header\",\n        dest=\"header\",\n        action=\"store_false\",\n        help=\"The CSV file has no header. Discrete columns will be indices.\",\n    )\n\n    parser.add_argument(\"-m\", \"--metadata\", help=\"Path to the metadata\")\n    parser.add_argument(\n        \"-d\",\n        \"--discrete\",\n        help=\"Comma separated list of discrete columns, no whitespaces\",\n    )\n\n    parser.add_argument(\n        \"-n\",\n        \"--num-samples\",\n        type=int,\n        help=\"Number of rows to sample. Defaults to the training data size\",\n    )\n\n    parser.add_argument(\"data\", help=\"Path to training data\")\n    parser.add_argument(\"output\", help=\"Path of the output file\")\n\n    return parser.parse_args()\n\n\ndef main():\n    args = _parse_args()\n\n    if args.tsv:\n        data, discrete_columns = read_tsv(args.data, args.metadata)\n    else:\n        data, discrete_columns = read_csv(\n            args.data, args.metadata, args.header, args.discrete\n        )\n\n    model = CTGANSynthesizer()\n    model.fit(data, discrete_columns, args.epochs)\n\n    num_samples = args.num_samples or len(data)\n    sampled = model.sample(num_samples)\n\n    if args.tsv:\n        write_tsv(sampled, args.metadata, args.output)\n    else:\n        sampled.to_csv(args.output, index=False)\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/conditional.py",
    "content": "import numpy as np\n\n\nclass ConditionalGenerator(object):\n    def __init__(self, data, output_info, log_frequency):\n        self.model = []\n\n        start = 0\n        skip = False\n        max_interval = 0\n        counter = 0\n        for item in output_info:\n            if item[1] == \"tanh\":\n                start += item[0]\n                skip = True\n                continue\n\n            elif item[1] == \"softmax\":\n                if skip:\n                    skip = False\n                    start += item[0]\n                    continue\n\n                end = start + item[0]\n                max_interval = max(max_interval, end - start)\n                counter += 1\n                self.model.append(np.argmax(data[:, start:end], axis=-1))\n                start = end\n\n            else:\n                assert 0\n\n        assert start == data.shape[1]\n\n        self.interval = []\n        self.n_col = 0\n        self.n_opt = 0\n        skip = False\n        start = 0\n        self.p = np.zeros((counter, max_interval))\n        for item in output_info:\n            if item[1] == \"tanh\":\n                skip = True\n                start += item[0]\n                continue\n            elif item[1] == \"softmax\":\n                if skip:\n                    start += item[0]\n                    skip = False\n                    continue\n                end = start + item[0]\n                tmp = np.sum(data[:, start:end], axis=0)\n                if log_frequency:\n                    tmp = np.log(tmp + 1)\n                tmp = tmp / np.sum(tmp)\n                self.p[self.n_col, : item[0]] = tmp\n                self.interval.append((self.n_opt, item[0]))\n                self.n_opt += item[0]\n                self.n_col += 1\n                start = end\n            else:\n                assert 0\n\n        self.interval = np.asarray(self.interval)\n\n    def random_choice_prob_index(self, idx):\n        a = self.p[idx]\n        r = np.expand_dims(np.random.rand(a.shape[0]), axis=1)\n        return (a.cumsum(axis=1) > r).argmax(axis=1)\n\n    def sample(self, batch):\n        if self.n_col == 0:\n            return None\n\n        batch = batch\n        idx = np.random.choice(np.arange(self.n_col), batch)\n\n        vec1 = np.zeros((batch, self.n_opt), dtype=\"float32\")\n        mask1 = np.zeros((batch, self.n_col), dtype=\"float32\")\n        mask1[np.arange(batch), idx] = 1\n        opt1prime = self.random_choice_prob_index(idx)\n        opt1 = self.interval[idx, 0] + opt1prime\n        vec1[np.arange(batch), opt1] = 1\n\n        return vec1, mask1, idx, opt1prime\n\n    def sample_zero(self, batch):\n        if self.n_col == 0:\n            return None\n\n        vec = np.zeros((batch, self.n_opt), dtype=\"float32\")\n        idx = np.random.choice(np.arange(self.n_col), batch)\n        for i in range(batch):\n            col = idx[i]\n            pick = int(np.random.choice(self.model[col]))\n            vec[i, pick + self.interval[col, 0]] = 1\n\n        return vec\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/data.py",
    "content": "import json\n\nimport numpy as np\nimport pandas as pd\n\n\ndef read_csv(csv_filename, meta_filename=None, header=True, discrete=None):\n\n    data = pd.read_csv(csv_filename, header=\"infer\" if header else None)\n\n    if meta_filename:\n        with open(meta_filename) as meta_file:\n            metadata = json.load(meta_file)\n\n        discrete_columns = [\n            column[\"name\"]\n            for column in metadata[\"columns\"]\n            if column[\"type\"] != \"continuous\"\n        ]\n\n    elif discrete:\n        discrete_columns = discrete.split(\",\")\n        if not header:\n            discrete_columns = [int(i) for i in discrete_columns]\n\n    else:\n        discrete_columns = []\n\n    return data, discrete_columns\n\n\ndef read_tsv(data_filename, meta_filename):\n    with open(meta_filename) as f:\n        column_info = f.readlines()\n\n    column_info_raw = [\n        x.replace(\"{\", \" \").replace(\"}\", \" \").split() for x in column_info\n    ]\n\n    discrete = []\n    continuous = []\n    column_info = []\n\n    for idx, item in enumerate(column_info_raw):\n        if item[0] == \"C\":\n            continuous.append(idx)\n            column_info.append((float(item[1]), float(item[2])))\n        else:\n            assert item[0] == \"D\"\n            discrete.append(idx)\n            column_info.append(item[1:])\n\n    meta = {\n        \"continuous_columns\": continuous,\n        \"discrete_columns\": discrete,\n        \"column_info\": column_info,\n    }\n\n    with open(data_filename) as f:\n        lines = f.readlines()\n\n    data = []\n    for row in lines:\n        row_raw = row.split()\n        row = []\n        for idx, col in enumerate(row_raw):\n            if idx in continuous:\n                row.append(col)\n            else:\n                assert idx in discrete\n                row.append(column_info[idx].index(col))\n\n        data.append(row)\n\n    return np.asarray(data, dtype=\"float32\"), meta[\"discrete_columns\"]\n\n\ndef write_tsv(data, meta, output_filename):\n    with open(output_filename, \"w\") as f:\n        for row in data:\n            for idx, col in enumerate(row):\n                if idx in meta[\"continuous_columns\"]:\n                    print(col, end=\" \", file=f)\n                else:\n                    assert idx in meta[\"discrete_columns\"]\n                    print(meta[\"column_info\"][idx][int(col)], end=\" \", file=f)\n\n            print(file=f)\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/demo.py",
    "content": "import pandas as pd\n\nDEMO_URL = \"http://ctgan-data.s3.amazonaws.com/census.csv.gz\"\n\n\ndef load_demo():\n    return pd.read_csv(DEMO_URL, compression=\"gzip\")\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/models.py",
    "content": "import torch\nfrom torch.nn import BatchNorm1d, Dropout, LeakyReLU, Linear, Module, ReLU, Sequential\n\n\nclass Discriminator(Module):\n    def calc_gradient_penalty(\n        self, real_data, fake_data, device=\"cpu\", pac=10, lambda_=10\n    ):\n\n        alpha = torch.rand(real_data.size(0) // pac, 1, 1, device=device)\n        alpha = alpha.repeat(1, pac, real_data.size(1))\n        alpha = alpha.view(-1, real_data.size(1))\n\n        interpolates = alpha * real_data + ((1 - alpha) * fake_data)\n\n        disc_interpolates = self(interpolates)\n\n        gradients = torch.autograd.grad(\n            outputs=disc_interpolates,\n            inputs=interpolates,\n            grad_outputs=torch.ones(disc_interpolates.size(), device=device),\n            create_graph=True,\n            retain_graph=True,\n            only_inputs=True,\n        )[0]\n\n        gradient_penalty = (\n            (gradients.view(-1, pac * real_data.size(1)).norm(2, dim=1) - 1) ** 2\n        ).mean() * lambda_\n\n        return gradient_penalty\n\n    def __init__(self, input_dim, dis_dims, pack=10):\n        super(Discriminator, self).__init__()\n        dim = input_dim * pack\n        self.pack = pack\n        self.packdim = dim\n        seq = []\n        for item in list(dis_dims):\n            seq += [Linear(dim, item), LeakyReLU(0.2), Dropout(0.5)]\n            dim = item\n\n        seq += [Linear(dim, 1)]\n        self.seq = Sequential(*seq)\n\n    def forward(self, input):\n        assert input.size()[0] % self.pack == 0\n        return self.seq(input.view(-1, self.packdim))\n\n\nclass Residual(Module):\n    def __init__(self, i, o):\n        super(Residual, self).__init__()\n        self.fc = Linear(i, o)\n        self.bn = BatchNorm1d(o)\n        self.relu = ReLU()\n\n    def forward(self, input):\n        out = self.fc(input)\n        out = self.bn(out)\n        out = self.relu(out)\n        return torch.cat([out, input], dim=1)\n\n\nclass Generator(Module):\n    def __init__(self, embedding_dim, gen_dims, data_dim):\n        super(Generator, self).__init__()\n        dim = embedding_dim\n        seq = []\n        for item in list(gen_dims):\n            seq += [Residual(dim, item)]\n            dim += item\n        seq.append(Linear(dim, data_dim))\n        self.seq = Sequential(*seq)\n\n    def forward(self, input):\n        data = self.seq(input)\n        return data\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/sampler.py",
    "content": "import numpy as np\n\n\nclass Sampler(object):\n    \"\"\"docstring for Sampler.\"\"\"\n\n    def __init__(self, data, output_info):\n        super(Sampler, self).__init__()\n        self.data = data\n        self.model = []\n        self.n = len(data)\n\n        st = 0\n        skip = False\n        for item in output_info:\n            if item[1] == \"tanh\":\n                st += item[0]\n                skip = True\n            elif item[1] == \"softmax\":\n                if skip:\n                    skip = False\n                    st += item[0]\n                    continue\n\n                ed = st + item[0]\n                tmp = []\n                for j in range(item[0]):\n                    tmp.append(np.nonzero(data[:, st + j])[0])\n\n                self.model.append(tmp)\n                st = ed\n            else:\n                assert 0\n\n        assert st == data.shape[1]\n\n    def sample(self, n, col, opt):\n        if col is None:\n            idx = np.random.choice(np.arange(self.n), n)\n            return self.data[idx]\n\n        idx = []\n        for c, o in zip(col, opt):\n            idx.append(np.random.choice(self.model[c][o]))\n\n        return self.data[idx]\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/synthesizer.py",
    "content": "import numpy as np\nimport torch\nfrom ctgan.conditional import ConditionalGenerator\nfrom ctgan.models import Discriminator, Generator\nfrom ctgan.sampler import Sampler\nfrom ctgan.transformer import DataTransformer\nfrom torch import optim\nfrom torch.nn import functional\n\n\nclass EarlyStopping:\n    \"\"\"Early stops the training if validation loss doesn't improve after a given patience.\"\"\"\n\n    def __init__(self, patience=7, verbose=False, delta=0):\n        \"\"\"\n        Args:\n            patience (int): How long to wait after last time validation loss improved.\n                            Default: 7\n            verbose (bool): If True, prints a message for each validation loss improvement.\n                            Default: False\n            delta (float): Minimum change in the monitored quantity to qualify as an improvement.\n                            Default: 0\n        \"\"\"\n        self.patience = patience\n        self.verbose = verbose\n        self.counter = 0\n        self.best_score = None\n        self.early_stop = False\n        self.val_loss_min = np.Inf\n        self.delta = delta\n\n    def __call__(self, val_loss):\n\n        score = -val_loss\n\n        if self.best_score is None:\n            self.best_score = score\n        elif score < self.best_score + self.delta:\n            self.counter += 1\n            # print(f'EarlyStopping counter: {self.counter} out of {self.patience}')\n            if self.counter >= self.patience:\n                self.early_stop = True\n        else:\n            self.best_score = score\n            self.counter = 0\n\n\nclass CTGANSynthesizer(object):\n    \"\"\"Conditional Table GAN Synthesizer.\n\n    This is the core class of the CTGAN project, where the different components\n    are orchestrated together.\n\n    For more details about the process, please check the [Modeling Tabular data using\n    Conditional GAN](https://arxiv.org/abs/1907.00503) paper.\n\n    Args:\n        embedding_dim (int):\n            Size of the random sample passed to the Generator. Defaults to 128.\n        gen_dim (tuple or list of ints):\n            Size of the output samples for each one of the Residuals. A Resiudal Layer\n            will be created for each one of the values provided. Defaults to (256, 256).\n        dis_dim (tuple or list of ints):\n            Size of the output samples for each one of the Discriminator Layers. A Linear Layer\n            will be created for each one of the values provided. Defaults to (256, 256).\n        l2scale (float):\n            Wheight Decay for the Adam Optimizer. Defaults to 1e-6.\n        batch_size (int):\n            Number of data samples to process in each step.\n    \"\"\"\n\n    def __init__(\n        self,\n        embedding_dim=128,\n        gen_dim=(256, 256),\n        dis_dim=(256, 256),\n        l2scale=1e-6,\n        batch_size=500,\n        patience=25,\n    ):\n\n        self.embedding_dim = embedding_dim\n        self.gen_dim = gen_dim\n        self.dis_dim = dis_dim\n        self.patience = patience\n        self.l2scale = l2scale\n        self.batch_size = batch_size\n        self.device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n    def _apply_activate(self, data):\n        data_t = []\n        st = 0\n        for item in self.transformer.output_info:\n            if item[1] == \"tanh\":\n                ed = st + item[0]\n                data_t.append(torch.tanh(data[:, st:ed]))\n                st = ed\n            elif item[1] == \"softmax\":\n                ed = st + item[0]\n                data_t.append(functional.gumbel_softmax(data[:, st:ed], tau=0.2))\n                st = ed\n            else:\n                assert 0\n\n        return torch.cat(data_t, dim=1)\n\n    def _cond_loss(self, data, c, m):\n        loss = []\n        st = 0\n        st_c = 0\n        skip = False\n        for item in self.transformer.output_info:\n            if item[1] == \"tanh\":\n                st += item[0]\n                skip = True\n\n            elif item[1] == \"softmax\":\n                if skip:\n                    skip = False\n                    st += item[0]\n                    continue\n\n                ed = st + item[0]\n                ed_c = st_c + item[0]\n                tmp = functional.cross_entropy(\n                    data[:, st:ed],\n                    torch.argmax(c[:, st_c:ed_c], dim=1),\n                    reduction=\"none\",\n                )\n                loss.append(tmp)\n                st = ed\n                st_c = ed_c\n\n            else:\n                assert 0\n\n        loss = torch.stack(loss, dim=1)\n\n        return (loss * m).sum() / data.size()[0]\n\n    def fit(self, train_data, discrete_columns=tuple(), epochs=300, log_frequency=True):\n        \"\"\"Fit the CTGAN Synthesizer models to the training data.\n\n        Args:\n            train_data (numpy.ndarray or pandas.DataFrame):\n                Training Data. It must be a 2-dimensional numpy array or a\n                pandas.DataFrame.\n            discrete_columns (list-like):\n                List of discrete columns to be used to generate the Conditional\n                Vector. If ``train_data`` is a Numpy array, this list should\n                contain the integer indices of the columns. Otherwise, if it is\n                a ``pandas.DataFrame``, this list should contain the column names.\n            epochs (int):\n                Number of training epochs. Defaults to 300.\n            log_frequency (boolean):\n                Whether to use log frequency of categorical levels in conditional\n                sampling. Defaults to ``True``.\n        \"\"\"\n\n        self.transformer = DataTransformer()\n        self.transformer.fit(train_data, discrete_columns)\n        train_data = self.transformer.transform(train_data)\n\n        data_sampler = Sampler(train_data, self.transformer.output_info)\n\n        data_dim = self.transformer.output_dimensions\n        self.cond_generator = ConditionalGenerator(\n            train_data, self.transformer.output_info, log_frequency\n        )\n\n        self.generator = Generator(\n            self.embedding_dim + self.cond_generator.n_opt, self.gen_dim, data_dim\n        ).to(self.device)\n\n        discriminator = Discriminator(\n            data_dim + self.cond_generator.n_opt, self.dis_dim\n        ).to(self.device)\n\n        optimizerG = optim.Adam(\n            self.generator.parameters(),\n            lr=2e-4,\n            betas=(0.5, 0.9),\n            weight_decay=self.l2scale,\n        )\n        optimizerD = optim.Adam(discriminator.parameters(), lr=2e-4, betas=(0.5, 0.9))\n\n        assert self.batch_size % 2 == 0\n        mean = torch.zeros(self.batch_size, self.embedding_dim, device=self.device)\n        std = mean + 1\n\n        train_losses = []\n        early_stopping = EarlyStopping(patience=self.patience, verbose=False)\n\n        steps_per_epoch = max(len(train_data) // self.batch_size, 1)\n        for i in range(epochs):\n            for id_ in range(steps_per_epoch):\n                fakez = torch.normal(mean=mean, std=std)\n\n                condvec = self.cond_generator.sample(self.batch_size)\n                if condvec is None:\n                    c1, m1, col, opt = None, None, None, None\n                    real = data_sampler.sample(self.batch_size, col, opt)\n                else:\n                    c1, m1, col, opt = condvec\n                    c1 = torch.from_numpy(c1).to(self.device)\n                    m1 = torch.from_numpy(m1).to(self.device)\n                    fakez = torch.cat([fakez, c1], dim=1)\n\n                    perm = np.arange(self.batch_size)\n                    np.random.shuffle(perm)\n                    real = data_sampler.sample(self.batch_size, col[perm], opt[perm])\n                    c2 = c1[perm]\n\n                fake = self.generator(fakez)\n                fakeact = self._apply_activate(fake)\n\n                real = torch.from_numpy(real.astype(\"float32\")).to(self.device)\n\n                if c1 is not None:\n                    fake_cat = torch.cat([fakeact, c1], dim=1)\n                    real_cat = torch.cat([real, c2], dim=1)\n                else:\n                    real_cat = real\n                    fake_cat = fake\n\n                y_fake = discriminator(fake_cat)\n                y_real = discriminator(real_cat)\n\n                pen = discriminator.calc_gradient_penalty(\n                    real_cat, fake_cat, self.device\n                )\n                loss_d = -(torch.mean(y_real) - torch.mean(y_fake))\n                train_losses.append(loss_d.item())\n                optimizerD.zero_grad()\n                pen.backward(retain_graph=True)\n                loss_d.backward()\n                optimizerD.step()\n\n                fakez = torch.normal(mean=mean, std=std)\n                condvec = self.cond_generator.sample(self.batch_size)\n\n                if condvec is None:\n                    c1, m1, col, opt = None, None, None, None\n                else:\n                    c1, m1, col, opt = condvec\n                    c1 = torch.from_numpy(c1).to(self.device)\n                    m1 = torch.from_numpy(m1).to(self.device)\n                    fakez = torch.cat([fakez, c1], dim=1)\n\n                fake = self.generator(fakez)\n                fakeact = self._apply_activate(fake)\n\n                if c1 is not None:\n                    y_fake = discriminator(torch.cat([fakeact, c1], dim=1))\n                else:\n                    y_fake = discriminator(fakeact)\n\n                if condvec is None:\n                    cross_entropy = 0\n                else:\n                    cross_entropy = self._cond_loss(fake, c1, m1)\n\n                loss_g = -torch.mean(y_fake) + cross_entropy\n                train_losses.append(loss_g.item())\n                optimizerG.zero_grad()\n                loss_g.backward()\n                optimizerG.step()\n            early_stopping(np.average(train_losses))\n            if early_stopping.early_stop:\n                print(\"GAN: Early stopping after epochs {}\".format(i))\n                break\n            train_losses = []\n\n            # print(\"Epoch %d, Loss G: %.4f, Loss D: %.4f\" %\n            #       (i + 1, loss_g.detach().cpu(), loss_d.detach().cpu()),\n            #       flush=True)\n\n    def sample(self, n):\n        \"\"\"Sample data similar to the training data.\n\n        Args:\n            n (int):\n                Number of rows to sample.\n\n        Returns:\n            numpy.ndarray or pandas.DataFrame\n        \"\"\"\n\n        steps = n // self.batch_size + 1\n        data = []\n        for i in range(steps):\n            mean = torch.zeros(self.batch_size, self.embedding_dim)\n            std = mean + 1\n            fakez = torch.normal(mean=mean, std=std).to(self.device)\n\n            condvec = self.cond_generator.sample_zero(self.batch_size)\n            if condvec is None:\n                pass\n            else:\n                c1 = condvec\n                c1 = torch.from_numpy(c1).to(self.device)\n                fakez = torch.cat([fakez, c1], dim=1)\n\n            fake = self.generator(fakez)\n            fakeact = self._apply_activate(fake)\n            data.append(fakeact.detach().cpu().numpy())\n\n        data = np.concatenate(data, axis=0)\n        data = data[:n]\n\n        return self.transformer.inverse_transform(data, None)\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/ctgan/transformer.py",
    "content": "import numpy as np\nimport pandas as pd\nfrom sklearn.exceptions import ConvergenceWarning\nfrom sklearn.mixture import BayesianGaussianMixture\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.utils._testing import ignore_warnings\n\n\nclass DataTransformer(object):\n    \"\"\"Data Transformer.\n\n    Model continuous columns with a BayesianGMM and normalized to a scalar\n    [0, 1] and a vector.\n    Discrete columns are encoded using a scikit-learn OneHotEncoder.\n\n    Args:\n        n_cluster (int):\n            Number of modes.\n        epsilon (float):\n            Epsilon value.\n    \"\"\"\n\n    def __init__(self, n_clusters=10, epsilon=0.005):\n        self.n_clusters = n_clusters\n        self.epsilon = epsilon\n\n    @ignore_warnings(category=ConvergenceWarning)\n    def _fit_continuous(self, column, data):\n        gm = BayesianGaussianMixture(\n            self.n_clusters,\n            weight_concentration_prior_type=\"dirichlet_process\",\n            weight_concentration_prior=0.001,\n            n_init=1,\n        )\n        gm.fit(data)\n        components = gm.weights_ > self.epsilon\n        num_components = components.sum()\n\n        return {\n            \"name\": column,\n            \"model\": gm,\n            \"components\": components,\n            \"output_info\": [(1, \"tanh\"), (num_components, \"softmax\")],\n            \"output_dimensions\": 1 + num_components,\n        }\n\n    def _fit_discrete(self, column, data):\n        ohe = OneHotEncoder(sparse=False)\n        ohe.fit(data)\n        categories = len(ohe.categories_[0])\n\n        return {\n            \"name\": column,\n            \"encoder\": ohe,\n            \"output_info\": [(categories, \"softmax\")],\n            \"output_dimensions\": categories,\n        }\n\n    def fit(self, data, discrete_columns=tuple()):\n        self.output_info = []\n        self.output_dimensions = 0\n\n        if not isinstance(data, pd.DataFrame):\n            self.dataframe = False\n            data = pd.DataFrame(data)\n        else:\n            self.dataframe = True\n\n        self.meta = []\n        for column in data.columns:\n            column_data = data[[column]].values\n            if column in discrete_columns:\n                meta = self._fit_discrete(column, column_data)\n            else:\n                meta = self._fit_continuous(column, column_data)\n\n            self.output_info += meta[\"output_info\"]\n            self.output_dimensions += meta[\"output_dimensions\"]\n            self.meta.append(meta)\n\n    def _transform_continuous(self, column_meta, data):\n        components = column_meta[\"components\"]\n        model = column_meta[\"model\"]\n\n        means = model.means_.reshape((1, self.n_clusters))\n        stds = np.sqrt(model.covariances_).reshape((1, self.n_clusters))\n        features = (data - means) / (4 * stds)\n\n        probs = model.predict_proba(data)\n\n        n_opts = components.sum()\n        features = features[:, components]\n        probs = probs[:, components]\n\n        opt_sel = np.zeros(len(data), dtype=\"int\")\n        for i in range(len(data)):\n            pp = probs[i] + 1e-6\n            pp = pp / pp.sum()\n            opt_sel[i] = np.random.choice(np.arange(n_opts), p=pp)\n\n        idx = np.arange((len(features)))\n        features = features[idx, opt_sel].reshape([-1, 1])\n        features = np.clip(features, -0.99, 0.99)\n\n        probs_onehot = np.zeros_like(probs)\n        probs_onehot[np.arange(len(probs)), opt_sel] = 1\n        return [features, probs_onehot]\n\n    def _transform_discrete(self, column_meta, data):\n        encoder = column_meta[\"encoder\"]\n        return encoder.transform(data)\n\n    def transform(self, data):\n        if not isinstance(data, pd.DataFrame):\n            data = pd.DataFrame(data)\n\n        values = []\n        for meta in self.meta:\n            column_data = data[[meta[\"name\"]]].values\n            if \"model\" in meta:\n                values += self._transform_continuous(meta, column_data)\n            else:\n                values.append(self._transform_discrete(meta, column_data))\n\n        return np.concatenate(values, axis=1).astype(float)\n\n    def _inverse_transform_continuous(self, meta, data, sigma):\n        model = meta[\"model\"]\n        components = meta[\"components\"]\n\n        u = data[:, 0]\n        v = data[:, 1:]\n\n        if sigma is not None:\n            u = np.random.normal(u, sigma)\n\n        u = np.clip(u, -1, 1)\n        v_t = np.ones((len(data), self.n_clusters)) * -100\n        v_t[:, components] = v\n        v = v_t\n        means = model.means_.reshape([-1])\n        stds = np.sqrt(model.covariances_).reshape([-1])\n        p_argmax = np.argmax(v, axis=1)\n        std_t = stds[p_argmax]\n        mean_t = means[p_argmax]\n        column = u * 4 * std_t + mean_t\n\n        return column\n\n    def _inverse_transform_discrete(self, meta, data):\n        encoder = meta[\"encoder\"]\n        return encoder.inverse_transform(data)\n\n    def inverse_transform(self, data, sigmas):\n        start = 0\n        output = []\n        column_names = []\n        for meta in self.meta:\n            dimensions = meta[\"output_dimensions\"]\n            columns_data = data[:, start : start + dimensions]\n\n            if \"model\" in meta:\n                sigma = sigmas[start] if sigmas else None\n                inverted = self._inverse_transform_continuous(meta, columns_data, sigma)\n            else:\n                inverted = self._inverse_transform_discrete(meta, columns_data)\n\n            output.append(inverted)\n            column_names.append(meta[\"name\"])\n            start += dimensions\n\n        output = np.column_stack(output)\n        if self.dataframe:\n            output = pd.DataFrame(output, columns=column_names)\n\n        return output\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/encoders.py",
    "content": "from typing import List\n\nimport numpy as np\nimport pandas as pd\nfrom category_encoders.backward_difference import BackwardDifferenceEncoder\nfrom category_encoders.cat_boost import CatBoostEncoder\nfrom category_encoders.helmert import HelmertEncoder\nfrom category_encoders.james_stein import JamesSteinEncoder\nfrom category_encoders.leave_one_out import LeaveOneOutEncoder\nfrom category_encoders.m_estimate import MEstimateEncoder\nfrom category_encoders.one_hot import OneHotEncoder\nfrom category_encoders.ordinal import OrdinalEncoder\nfrom category_encoders.sum_coding import SumEncoder\nfrom category_encoders.target_encoder import TargetEncoder\nfrom category_encoders.woe import WOEEncoder\nfrom sklearn.model_selection import RepeatedStratifiedKFold\n\n\ndef get_single_encoder(encoder_name: str, cat_cols: list):\n    \"\"\"\n    Get encoder by its name\n    :param encoder_name: Name of desired encoder\n    :param cat_cols: Cat columns for encoding\n    :return: Categorical encoder\n    \"\"\"\n    if encoder_name == \"FrequencyEncoder\":\n        encoder = FrequencyEncoder(cols=cat_cols)\n\n    if encoder_name == \"WOEEncoder\":\n        encoder = WOEEncoder(cols=cat_cols)\n\n    if encoder_name == \"TargetEncoder\":\n        encoder = TargetEncoder(cols=cat_cols)\n\n    if encoder_name == \"SumEncoder\":\n        encoder = SumEncoder(cols=cat_cols)\n\n    if encoder_name == \"MEstimateEncoder\":\n        encoder = MEstimateEncoder(cols=cat_cols)\n\n    if encoder_name == \"LeaveOneOutEncoder\":\n        encoder = LeaveOneOutEncoder(cols=cat_cols)\n\n    if encoder_name == \"HelmertEncoder\":\n        encoder = HelmertEncoder(cols=cat_cols)\n\n    if encoder_name == \"BackwardDifferenceEncoder\":\n        encoder = BackwardDifferenceEncoder(cols=cat_cols)\n\n    if encoder_name == \"JamesSteinEncoder\":\n        encoder = JamesSteinEncoder(cols=cat_cols)\n\n    if encoder_name == \"OrdinalEncoder\":\n        encoder = OrdinalEncoder(cols=cat_cols)\n\n    if encoder_name == \"CatBoostEncoder\":\n        encoder = CatBoostEncoder(cols=cat_cols)\n\n    if encoder_name == \"MEstimateEncoder\":\n        encoder = MEstimateEncoder(cols=cat_cols)\n    if encoder_name == \"OneHotEncoder\":\n        encoder = OneHotEncoder(cols=cat_cols)\n    if encoder is None:\n        raise NotImplementedError(\"To be implemented\")\n    return encoder\n\n\nclass DoubleValidationEncoderNumerical:\n    \"\"\"\n    Encoder with validation within\n    \"\"\"\n\n    def __init__(self, cols, encoders_names_tuple=()):\n        \"\"\"\n        :param cols: Categorical columns\n        :param encoders_names_tuple: Tuple of str with encoders\n        \"\"\"\n        self.cols, self.num_cols = cols, None\n        self.encoders_names_tuple = encoders_names_tuple\n\n        self.n_folds, self.n_repeats = 5, 3\n        self.model_validation = RepeatedStratifiedKFold(\n            n_splits=self.n_folds, n_repeats=self.n_repeats, random_state=0\n        )\n        self.encoders_dict = {}\n\n        self.storage = None\n\n    def fit_transform(self, X: pd.DataFrame, y: np.array) -> pd.DataFrame:\n        self.num_cols = [col for col in X.columns if col not in self.cols]\n        self.storage = []\n\n        for encoder_name in self.encoders_names_tuple:\n            for n_fold, (train_idx, val_idx) in enumerate(\n                self.model_validation.split(X, y)\n            ):\n                encoder = get_single_encoder(encoder_name, self.cols)\n\n                X_train, X_val = (\n                    X.loc[train_idx].reset_index(drop=True),\n                    X.loc[val_idx].reset_index(drop=True),\n                )\n                y_train, y_val = y[train_idx], y[val_idx]\n                _ = encoder.fit_transform(X_train, y_train)\n\n                # transform validation part and get all necessary cols\n                val_t = encoder.transform(X_val)\n                val_t = val_t[\n                    [col for col in val_t.columns if col not in self.num_cols]\n                ].values\n\n                if encoder_name not in self.encoders_dict.keys():\n                    cols_representation = np.zeros((X.shape[0], val_t.shape[1]))\n                    self.encoders_dict[encoder_name] = [encoder]\n                else:\n                    self.encoders_dict[encoder_name].append(encoder)\n\n                cols_representation[val_idx, :] += val_t / self.n_repeats\n\n            cols_representation = pd.DataFrame(cols_representation)\n            cols_representation.columns = [\n                f\"encoded_{encoder_name}_{i}\"\n                for i in range(cols_representation.shape[1])\n            ]\n            self.storage.append(cols_representation)\n\n        for df in self.storage:\n            X = pd.concat([X, df], axis=1)\n\n        X.drop(self.cols, axis=1, inplace=True)\n        return X\n\n    def transform(self, X: pd.DataFrame) -> pd.DataFrame:\n        self.storage = []\n        for encoder_name in self.encoders_names_tuple:\n            cols_representation = None\n\n            for encoder in self.encoders_dict[encoder_name]:\n                test_tr = encoder.transform(X)\n                test_tr = test_tr[\n                    [col for col in test_tr.columns if col not in self.num_cols]\n                ].values\n\n                if cols_representation is None:\n                    cols_representation = np.zeros(test_tr.shape)\n\n                cols_representation = (\n                    cols_representation + test_tr / self.n_folds / self.n_repeats\n                )\n\n            cols_representation = pd.DataFrame(cols_representation)\n            cols_representation.columns = [\n                f\"encoded_{encoder_name}_{i}\"\n                for i in range(cols_representation.shape[1])\n            ]\n            self.storage.append(cols_representation)\n\n        for df in self.storage:\n            X = pd.concat([X, df], axis=1)\n\n        X.drop(self.cols, axis=1, inplace=True)\n        return X\n\n\nclass MultipleEncoder:\n    \"\"\"\n    Multiple encoder for categorical columns\n    \"\"\"\n\n    def __init__(self, cols: List[str], encoders_names_tuple=()):\n        \"\"\"\n        :param cols: List of categorical columns\n        :param encoders_names_tuple: Tuple of categorical encoders names. Possible values in tuple are:\n        \"FrequencyEncoder\", \"WOEEncoder\", \"TargetEncoder\", \"SumEncoder\", \"MEstimateEncoder\", \"LeaveOneOutEncoder\",\n        \"HelmertEncoder\", \"BackwardDifferenceEncoder\", \"JamesSteinEncoder\", \"OrdinalEncoder\"\"CatBoostEncoder\"\n        \"\"\"\n\n        self.cols = cols\n        self.num_cols = None\n        self.encoders_names_tuple = encoders_names_tuple\n        self.encoders_dict = {}\n\n        # list for storing results of transformation from each encoder\n        self.storage = None\n\n    def fit_transform(self, X: pd.DataFrame, y: np.array) -> pd.DataFrame:\n        self.num_cols = [col for col in X.columns if col not in self.cols]\n        self.storage = []\n        for encoder_name in self.encoders_names_tuple:\n            encoder = get_single_encoder(encoder_name=encoder_name, cat_cols=self.cols)\n\n            cols_representation = encoder.fit_transform(X, y)\n            self.encoders_dict[encoder_name] = encoder\n            cols_representation = cols_representation[\n                [col for col in cols_representation.columns if col not in self.num_cols]\n            ].values\n            cols_representation = pd.DataFrame(cols_representation)\n            cols_representation.columns = [\n                f\"encoded_{encoder_name}_{i}\"\n                for i in range(cols_representation.shape[1])\n            ]\n            self.storage.append(cols_representation)\n\n        # concat cat cols representations with initial dataframe\n        for df in self.storage:\n            X = pd.concat([X, df], axis=1)\n\n        # remove all columns as far as we have their representations\n        X.drop(self.cols, axis=1, inplace=True)\n        return X\n\n    def transform(self, X) -> pd.DataFrame:\n        self.storage = []\n        for encoder_name in self.encoders_names_tuple:\n            # get representation of cat columns and form a pd.DataFrame for it\n            cols_representation = self.encoders_dict[encoder_name].transform(X)\n            cols_representation = cols_representation[\n                [col for col in cols_representation.columns if col not in self.num_cols]\n            ].values\n            cols_representation = pd.DataFrame(cols_representation)\n            cols_representation.columns = [\n                f\"encoded_{encoder_name}_{i}\"\n                for i in range(cols_representation.shape[1])\n            ]\n            self.storage.append(cols_representation)\n\n        # concat cat cols representations with initial dataframe\n        for df in self.storage:\n            X = pd.concat([X, df], axis=1)\n\n        # remove all columns as far as we have their representations\n        X.drop(self.cols, axis=1, inplace=True)\n        return X\n\n\nclass FrequencyEncoder:\n    def __init__(self, cols):\n        self.cols = cols\n        self.counts_dict = None\n\n    def fit(self, X: pd.DataFrame, y=None) -> pd.DataFrame:\n        counts_dict = {}\n        for col in self.cols:\n            values, counts = np.unique(X[col], return_counts=True)\n            counts_dict[col] = dict(zip(values, counts))\n        self.counts_dict = counts_dict\n\n    def transform(self, X: pd.DataFrame) -> pd.DataFrame:\n        counts_dict_test = {}\n        res = []\n        for col in self.cols:\n            values, counts = np.unique(X[col], return_counts=True)\n            counts_dict_test[col] = dict(zip(values, counts))\n\n            # if value is in \"train\" keys - replace \"test\" counts with \"train\" counts\n            for k in [\n                key\n                for key in counts_dict_test[col].keys()\n                if key in self.counts_dict[col].keys()\n            ]:\n                counts_dict_test[col][k] = self.counts_dict[col][k]\n\n            res.append(X[col].map(counts_dict_test[col]).values.reshape(-1, 1))\n        res = np.hstack(res)\n\n        X[self.cols] = res\n        return X\n\n    def fit_transform(self, X: pd.DataFrame, y=None) -> pd.DataFrame:\n        self.fit(X, y)\n        X = self.transform(X)\n        return X\n\n\nif __name__ == \"__main__\":\n    df = pd.DataFrame({})\n    df[\"cat_col\"] = [1, 2, 3, 1, 2, 3, 1, 1, 1]\n    df[\"target\"] = [0, 1, 0, 1, 0, 1, 0, 1, 0]\n\n    #\n    temp = df.copy()\n    enc = CatBoostEncoder(cols=[\"cat_col\"])\n    print(enc.fit_transform(temp, temp[\"target\"]))\n\n    #\n    temp = df.copy()\n    enc = MultipleEncoder(cols=[\"cat_col\"], encoders_names_tuple=(\"CatBoostEncoder\",))\n    print(enc.fit_transform(temp, temp[\"target\"]))\n\n    #\n    temp = df.copy()\n    enc = DoubleValidationEncoderNumerical(\n        cols=[\"cat_col\"], encoders_names_tuple=(\"CatBoostEncoder\",)\n    )\n    print(enc.fit_transform(temp, temp[\"target\"]))\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/model.py",
    "content": "import numpy as np\nimport pandas as pd\nfrom lightgbm import LGBMClassifier\nfrom scipy.stats import rankdata\nfrom sklearn.metrics import roc_auc_score\nfrom sklearn.model_selection import StratifiedKFold\n\nfrom encoders import MultipleEncoder, DoubleValidationEncoderNumerical\n\n\nclass Model:\n    def __init__(\n        self,\n        cat_validation=\"None\",\n        encoders_names=None,\n        cat_cols=None,\n        model_validation=StratifiedKFold(n_splits=5, shuffle=True, random_state=42),\n        model_params=None,\n    ):\n        self.cat_validation = cat_validation\n        self.encoders_names = encoders_names\n        self.cat_cols = cat_cols\n        self.model_validation = model_validation\n\n        if model_params is None:\n            self.model_params = {\n                \"metrics\": \"AUC\",\n                \"n_estimators\": 5000,\n                \"learning_rate\": 0.04,\n                \"random_state\": 42,\n            }\n        else:\n            self.model_params = model_params\n\n        self.encoders_list = []\n        self.models_list = []\n        self.scores_list_train = []\n        self.scores_list_val = []\n        self.models_trees = []\n\n    def fit(self, X: pd.DataFrame, y: np.array) -> tuple:\n        # process cat cols\n        if self.cat_validation == \"None\":\n            encoder = MultipleEncoder(\n                cols=self.cat_cols, encoders_names_tuple=self.encoders_names\n            )\n            X = encoder.fit_transform(X, y)\n\n        for n_fold, (train_idx, val_idx) in enumerate(\n            self.model_validation.split(X, y)\n        ):\n            X_train, X_val = (\n                X.iloc[train_idx].reset_index(drop=True),\n                X.iloc[val_idx].reset_index(drop=True),\n            )\n            y_train, y_val = y.iloc[train_idx], y.iloc[val_idx]\n\n            if self.cat_validation == \"Single\":\n                encoder = MultipleEncoder(\n                    cols=self.cat_cols, encoders_names_tuple=self.encoders_names\n                )\n                X_train = encoder.fit_transform(X_train, y_train)\n                X_val = encoder.transform(X_val)\n            if self.cat_validation == \"Double\":\n                encoder = DoubleValidationEncoderNumerical(\n                    cols=self.cat_cols, encoders_names_tuple=self.encoders_names\n                )\n                X_train = encoder.fit_transform(X_train, y_train)\n                X_val = encoder.transform(X_val)\n                pass\n            self.encoders_list.append(encoder)\n\n            # check for OrdinalEncoder encoding\n            for col in [col for col in X_train.columns if \"OrdinalEncoder\" in col]:\n                X_train[col] = X_train[col].astype(\"category\")\n                X_val[col] = X_val[col].astype(\"category\")\n\n            # fit model\n\n            model = LGBMClassifier(**self.model_params)\n            model.fit(\n                X_train,\n                y_train,\n                eval_set=[(X_train, y_train), (X_val, y_val)],\n                early_stopping_rounds=50,\n                verbose=False,\n            )\n            self.models_trees.append(model.best_iteration_)\n            self.models_list.append(model)\n\n            y_hat = model.predict_proba(X_train)[:, 1]\n            score_train = roc_auc_score(y_train, y_hat)\n            self.scores_list_train.append(score_train)\n            y_hat = model.predict_proba(X_val)[:, 1]\n            score_val = roc_auc_score(y_val, y_hat)\n            self.scores_list_val.append(score_val)\n\n        mean_score_train = np.mean(self.scores_list_train)\n        mean_score_val = np.mean(self.scores_list_val)\n        avg_num_trees = int(np.mean(self.models_trees))\n        print(f\"Mean score train : {np.round(mean_score_train, 4)}\")\n        print(f\"Mean score val : {np.round(mean_score_val, 4)}\")\n        return mean_score_train, mean_score_val, avg_num_trees\n\n    def predict(self, X: pd.DataFrame, return_shape=True) -> np.array:\n        y_hat = np.zeros(X.shape[0])\n        for encoder, model in zip(self.encoders_list, self.models_list):\n            X_test = X.copy()\n            X_test = encoder.transform(X_test)\n\n            # check for OrdinalEncoder encoding\n            for col in [col for col in X_test.columns if \"OrdinalEncoder\" in col]:\n                X_test[col] = X_test[col].astype(\"category\")\n\n            unranked_preds = model.predict_proba(X_test)[:, 1]\n            y_hat += rankdata(unranked_preds)\n        if return_shape:\n            return y_hat, X_test.shape[1]\n        else:\n            return y_hat\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/results/fit_predict_scores.txt",
    "content": "dataset_name\tEncoder\tvalidation_type\tsample_type\ttrain_shape\ttest_shape\tmean_target_before_sampling_train\tmean_target_after_sampling_train\tmean_target_test\tnum_cat_cols\ttrain_score\tval_score\ttest_score\ttime\tfeatures_before_encoding\tfeatures_after_encoding\tavg_tress_number\ttrain_prop_size\ntelecom\tCatBoostEncoder\tSingle\tNone\t140\t4226\t0.24285714285714285\t0.24285714285714285\t0.26786559394226217\t16\t0.9203579209461562\t0.7823902288188003\t0.7783220858335179\t2.6647253036499023\t19\t19\t21\t0.05\ntelecom\tCatBoostEncoder\tSingle\tNone\t281\t4226\t0.2526690391459075\t0.2526690391459075\t0.26786559394226217\t16\t0.9721151837928155\t0.8211678004535148\t0.7922811962512648\t2.913510799407959\t19\t19\t51\t0.1\ntelecom\tCatBoostEncoder\tSingle\tNone\t704\t4226\t0.25\t0.25\t0.26786559394226217\t16\t0.9507839530560027\t0.7711436700466351\t0.7909773789918251\t2.9542291164398193\t19\t19\t28\t0.25\ntelecom\tCatBoostEncoder\tSingle\tNone\t1408\t4226\t0.2649147727272727\t0.2649147727272727\t0.26786559394226217\t16\t0.9473990035520276\t0.7625649127388258\t0.7941651857807543\t3.3633759021759033\t19\t19\t31\t0.5\ntelecom\tCatBoostEncoder\tSingle\tNone\t2112\t4226\t0.26609848484848486\t0.26609848484848486\t0.26786559394226217\t16\t0.9625114751219357\t0.796838984951674\t0.8173239668251101\t3.6398279666900635\t19\t19\t55\t0.75\ntelecom\tCatBoostEncoder\tSingle\tgan\t147\t4226\t0.24285714285714285\t0.2789115646258503\t0.26786559394226217\t16\t0.935829991087344\t0.7108946608946609\t0.7348377173647388\t2.7197842597961426\t19\t19\t126\t0.05\ntelecom\tCatBoostEncoder\tSingle\tgan\t309\t4226\t0.2526690391459075\t0.32038834951456313\t0.26786559394226217\t16\t0.9710341320072333\t0.8431954887218046\t0.7764859205438086\t2.84492826461792\t19\t19\t53\t0.1\ntelecom\tCatBoostEncoder\tSingle\tgan\t880\t4226\t0.25\t0.4\t0.26786559394226217\t16\t0.986566069551656\t0.8351047163484049\t0.7945499210828664\t3.8594696521759033\t19\t19\t106\t0.25\ntelecom\tCatBoostEncoder\tSingle\tgan\t2112\t4226\t0.2649147727272727\t0.5099431818181818\t0.26786559394226217\t16\t0.9774739758417266\t0.7292480245665282\t0.670671720713292\t3.547983407974243\t19\t19\t63\t0.5\ntelecom\tCatBoostEncoder\tSingle\tgan\t3696\t4226\t0.26609848484848486\t0.5308441558441559\t0.26786559394226217\t16\t0.9596056401070886\t0.579395160858396\t0.4839657458525677\t4.959321975708008\t19\t19\t205\t0.75\ntelecom\tCatBoostEncoder\tSingle\tsample_original\t147\t4226\t0.24285714285714285\t0.2789115646258503\t0.26786559394226217\t16\t0.9231801735845855\t0.8339375901875903\t0.7753863913056389\t2.622987985610962\t19\t19\t27\t0.05\ntelecom\tCatBoostEncoder\tSingle\tsample_original\t309\t4226\t0.2526690391459075\t0.32038834951456313\t0.26786559394226217\t16\t0.9652377185051236\t0.8419611528822056\t0.7942735398046143\t2.9789845943450928\t19\t19\t36\t0.1\ntelecom\tCatBoostEncoder\tSingle\tsample_original\t880\t4226\t0.25\t0.2840909090909091\t0.26786559394226217\t16\t0.9757579365079365\t0.7878412698412698\t0.7787949033921804\t3.535475969314575\t19\t19\t52\t0.25\ntelecom\tCatBoostEncoder\tSingle\tsample_original\t2112\t4226\t0.2649147727272727\t0.2689393939393939\t0.26786559394226217\t16\t0.9769307643413366\t0.8337605791432761\t0.8100511134054057\t3.666048288345337\t19\t19\t65\t0.5\ntelecom\tCatBoostEncoder\tSingle\tsample_original\t3696\t4226\t0.26609848484848486\t0.25703463203463206\t0.26786559394226217\t16\t0.9572892638827744\t0.8329185190995373\t0.8034537952174617\t3.8924672603607178\t19\t19\t57\t0.75\nadult\tCatBoostEncoder\tSingle\tNone\t976\t29306\t0.23668032786885246\t0.23668032786885246\t0.23995086330444276\t8\t0.9712404721251744\t0.847279737255462\t0.8868313280568222\t2.230457067489624\t14\t14\t46\t0.05\nadult\tCatBoostEncoder\tSingle\tNone\t1953\t29306\t0.24270353302611367\t0.24270353302611367\t0.23995086330444276\t8\t0.960174625363074\t0.8285939436314103\t0.8827378219839923\t2.432476282119751\t14\t14\t53\t0.1\nadult\tCatBoostEncoder\tSingle\tNone\t4884\t29306\t0.23361998361998362\t0.23361998361998362\t0.23995086330444276\t8\t0.9482754738723914\t0.8366190735101722\t0.8784073030913059\t2.8655831813812256\t14\t14\t71\t0.25\nadult\tCatBoostEncoder\tSingle\tNone\t9768\t29306\t0.23474610974610974\t0.23474610974610974\t0.23995086330444276\t8\t0.9206448457558245\t0.8782990082565686\t0.902996855636946\t3.118391275405884\t14\t14\t62\t0.5\nadult\tCatBoostEncoder\tSingle\tNone\t14652\t29306\t0.23744198744198744\t0.23744198744198744\t0.23995086330444276\t8\t0.9524850648340255\t0.8764301580520678\t0.9108225945747773\t5.403693914413452\t14\t14\t194\t0.75\nadult\tCatBoostEncoder\tSingle\tgan\t1024\t29306\t0.23668032786885246\t0.2724609375\t0.23995086330444276\t8\t0.9622633701507809\t0.8412385600976204\t0.8551866259124772\t2.529022455215454\t14\t14\t84\t0.05\nadult\tCatBoostEncoder\tSingle\tgan\t2148\t29306\t0.24270353302611367\t0.31145251396648044\t0.23995086330444276\t8\t0.9775502159218641\t0.8808715364664044\t0.8665231182420047\t2.5598251819610596\t14\t14\t65\t0.1\nadult\tCatBoostEncoder\tSingle\tgan\t6105\t29306\t0.23361998361998362\t0.3868959868959869\t0.23995086330444276\t8\t0.9643542299126151\t0.9215707610412934\t0.852855730107893\t2.577143430709839\t14\t14\t40\t0.25\nadult\tCatBoostEncoder\tSingle\tgan\t14652\t29306\t0.23474610974610974\t0.4224679224679225\t0.23995086330444276\t8\t0.9791659801783968\t0.9516803799287248\t0.8952397526391495\t5.079102039337158\t14\t14\t165\t0.5\nadult\tCatBoostEncoder\tSingle\tgan\t25641\t29306\t0.23744198744198744\t0.564057564057564\t0.23995086330444276\t8\t0.9774536571575293\t0.9655222496928223\t0.8646375819340936\t4.192373991012573\t14\t14\t51\t0.75\nadult\tCatBoostEncoder\tSingle\tsample_original\t1024\t29306\t0.23668032786885246\t0.2255859375\t0.23995086330444276\t8\t0.9800756039427319\t0.8421736597006977\t0.8876648999128958\t2.370562791824341\t14\t14\t65\t0.05\nadult\tCatBoostEncoder\tSingle\tsample_original\t2148\t29306\t0.24270353302611367\t0.2532588454376164\t0.23995086330444276\t8\t0.9861732005759378\t0.8412644823955254\t0.8810382421160062\t2.72615122795105\t14\t14\t87\t0.1\nadult\tCatBoostEncoder\tSingle\tsample_original\t6105\t29306\t0.23361998361998362\t0.23095823095823095\t0.23995086330444276\t8\t0.9262703787415312\t0.8858975520963149\t0.8959786368410068\t2.753687858581543\t14\t14\t42\t0.25\nadult\tCatBoostEncoder\tSingle\tsample_original\t14652\t29306\t0.23474610974610974\t0.2308899808899809\t0.23995086330444276\t8\t0.9100725384410294\t0.8825036397065548\t0.8970955438333802\t3.8601276874542236\t14\t14\t64\t0.5\nadult\tCatBoostEncoder\tSingle\tsample_original\t25641\t29306\t0.23744198744198744\t0.23294723294723294\t0.23995086330444276\t8\t0.9341026630291239\t0.8953411238314624\t0.912838220265893\t6.400696754455566\t14\t14\t184\t0.75\nemployee\tCatBoostEncoder\tSingle\tNone\t655\t19662\t0.9404580152671755\t0.9404580152671755\t0.9421218594242702\t9\t0.8574978229171155\t0.6160597205050392\t0.5376888159909587\t2.1917824745178223\t9\t9\t17\t0.05\nemployee\tCatBoostEncoder\tSingle\tNone\t1310\t19662\t0.9396946564885497\t0.9396946564885497\t0.9421218594242702\t9\t0.903871914678855\t0.521004390079326\t0.5498886117055574\t2.478717803955078\t9\t9\t16\t0.1\nemployee\tCatBoostEncoder\tSingle\tNone\t3276\t19662\t0.9377289377289377\t0.9377289377289377\t0.9421218594242702\t9\t0.8387308459573963\t0.5478813781285504\t0.541631428415291\t2.755147695541382\t9\t9\t13\t0.25\nemployee\tCatBoostEncoder\tSingle\tNone\t6553\t19662\t0.9410956813673127\t0.9410956813673127\t0.9421218594242702\t9\t0.8435260045008717\t0.5714672460292307\t0.5968346199050565\t3.289389133453369\t9\t9\t31\t0.5\nemployee\tCatBoostEncoder\tSingle\tNone\t9830\t19662\t0.9429298067141404\t0.9429298067141404\t0.9421218594242702\t9\t0.7700627326608164\t0.5572643636687524\t0.6047351433887695\t3.9642112255096436\t9\t9\t61\t0.75\nemployee\tCatBoostEncoder\tSingle\tgan\t687\t19662\t0.9404580152671755\t0.9432314410480349\t0.9421218594242702\t9\t0.9294351017812119\t0.5967550472783032\t0.5691309502440002\t2.377863645553589\t9\t9\t77\t0.05\nemployee\tCatBoostEncoder\tSingle\tgan\t1441\t19662\t0.9396946564885497\t0.945176960444136\t0.9421218594242702\t9\t0.9171099370426935\t0.5328193344645551\t0.5059988912877571\t2.5225038528442383\t9\t9\t23\t0.1\nemployee\tCatBoostEncoder\tSingle\tgan\t4095\t19662\t0.9377289377289377\t0.9501831501831501\t0.9421218594242702\t9\t0.8632844864380627\t0.5733728644924116\t0.5250210717943833\t2.941354751586914\t9\t9\t28\t0.25\nemployee\tCatBoostEncoder\tSingle\tgan\t9829\t19662\t0.9410956813673127\t0.9598127988605148\t0.9421218594242702\t9\t0.7717158950022815\t0.6473914752875848\t0.5719551731492399\t3.41788911819458\t9\t9\t4\t0.5\nemployee\tCatBoostEncoder\tSingle\tgan\t17202\t19662\t0.9429298067141404\t0.9667480525520288\t0.9421218594242702\t9\t0.8868439406407245\t0.7010561954836108\t0.6020863211132739\t5.74671196937561\t9\t9\t107\t0.75\nemployee\tCatBoostEncoder\tSingle\tsample_original\t687\t19662\t0.9404580152671755\t0.9432314410480349\t0.9421218594242702\t9\t0.892207108066352\t0.5881078030496635\t0.5588777101591286\t2.3120646476745605\t9\t9\t41\t0.05\nemployee\tCatBoostEncoder\tSingle\tsample_original\t1441\t19662\t0.9396946564885497\t0.945176960444136\t0.9421218594242702\t9\t0.9105744772730281\t0.5817287211358902\t0.5083986185783209\t2.5556788444519043\t9\t9\t26\t0.1\nemployee\tCatBoostEncoder\tSingle\tsample_original\t4095\t19662\t0.9377289377289377\t0.9391941391941392\t0.9421218594242702\t9\t0.8347272230137334\t0.5749850436180417\t0.5445894254316539\t2.9585955142974854\t9\t9\t25\t0.25\nemployee\tCatBoostEncoder\tSingle\tsample_original\t9829\t19662\t0.9410956813673127\t0.9384474514192696\t0.9421218594242702\t9\t0.7861733326006606\t0.5720584718432115\t0.5704311919102526\t3.5040416717529297\t9\t9\t10\t0.5\nemployee\tCatBoostEncoder\tSingle\tsample_original\t17202\t19662\t0.9429298067141404\t0.9450645273805371\t0.9421218594242702\t9\t0.7690751192353558\t0.576197312394728\t0.6096386998446702\t5.370056629180908\t9\t9\t92\t0.75\nmortgages\tCatBoostEncoder\tSingle\tNone\t912\t27386\t0.7763157894736842\t0.7763157894736842\t0.7893084057547652\t9\t0.9569518669341814\t0.6219996357665105\t0.5975373928677262\t2.4561352729797363\t19\t19\t30\t0.05\nmortgages\tCatBoostEncoder\tSingle\tNone\t1825\t27386\t0.7797260273972603\t0.7797260273972603\t0.7893084057547652\t9\t0.9071498432071694\t0.6354816393487632\t0.6131081933339063\t2.498446464538574\t19\t19\t18\t0.1\nmortgages\tCatBoostEncoder\tSingle\tNone\t4564\t27386\t0.7865907099035934\t0.7865907099035934\t0.7893084057547652\t9\t0.9019594727508462\t0.621371441067906\t0.6364322892279549\t3.0621771812438965\t19\t19\t46\t0.25\nmortgages\tCatBoostEncoder\tSingle\tNone\t9128\t27386\t0.7853856266432954\t0.7853856266432954\t0.7893084057547652\t9\t0.8534152166259004\t0.6354931025050673\t0.653587648343162\t3.783792734146118\t19\t19\t87\t0.5\nmortgages\tCatBoostEncoder\tSingle\tNone\t13692\t27386\t0.7879053461875548\t0.7879053461875548\t0.7893084057547652\t9\t0.8472016415045802\t0.6562038901988799\t0.6753054296066718\t4.733774662017822\t19\t19\t94\t0.75\nmortgages\tCatBoostEncoder\tSingle\tgan\t957\t27386\t0.7763157894736842\t0.786833855799373\t0.7893084057547652\t9\t0.939659739381808\t0.6163126043180961\t0.6027468019067974\t2.4967386722564697\t19\t19\t46\t0.05\nmortgages\tCatBoostEncoder\tSingle\tgan\t2007\t27386\t0.7797260273972603\t0.7997010463378177\t0.7893084057547652\t9\t0.983145339059089\t0.6609822699126957\t0.619393835941539\t2.7110533714294434\t19\t19\t46\t0.1\nmortgages\tCatBoostEncoder\tSingle\tgan\t5705\t27386\t0.7865907099035934\t0.8292725679228746\t0.7893084057547652\t9\t0.8963424681896441\t0.699274272063823\t0.6339991791496639\t3.1721582412719727\t19\t19\t45\t0.25\nmortgages\tCatBoostEncoder\tSingle\tgan\t13692\t27386\t0.7853856266432954\t0.8569237510955302\t0.7893084057547652\t9\t0.8794340464771435\t0.7679436604859984\t0.6327580098251888\t3.8494341373443604\t19\t19\t36\t0.5\nmortgages\tCatBoostEncoder\tSingle\tgan\t23961\t27386\t0.7879053461875548\t0.8616084470598055\t0.7893084057547652\t9\t0.9755118322911003\t0.7869008438365362\t0.6186028033666571\t10.492693901062012\t19\t19\t476\t0.75\nmortgages\tCatBoostEncoder\tSingle\tsample_original\t957\t27386\t0.7763157894736842\t0.7575757575757576\t0.7893084057547652\t9\t0.934040660794276\t0.6276841366550767\t0.575075710976015\t2.3680293560028076\t19\t19\t24\t0.05\nmortgages\tCatBoostEncoder\tSingle\tsample_original\t2007\t27386\t0.7797260273972603\t0.7747882411559541\t0.7893084057547652\t9\t0.9965417266065618\t0.6916640558441202\t0.6345660453390325\t3.2200515270233154\t19\t19\t113\t0.1\nmortgages\tCatBoostEncoder\tSingle\tsample_original\t5705\t27386\t0.7865907099035934\t0.7782646801051709\t0.7893084057547652\t9\t0.9704967751842751\t0.7198687818253034\t0.6499378028278687\t4.217786073684692\t19\t19\t172\t0.25\nmortgages\tCatBoostEncoder\tSingle\tsample_original\t13692\t27386\t0.7853856266432954\t0.7884896289804265\t0.7893084057547652\t9\t0.9336765448952681\t0.7434918857339071\t0.6622976817993476\t5.424570322036743\t19\t19\t158\t0.5\nmortgages\tCatBoostEncoder\tSingle\tsample_original\t23961\t27386\t0.7879053461875548\t0.791327573974375\t0.7893084057547652\t9\t0.9350927627392593\t0.7573637753339764\t0.6689071706303952\t9.380746364593506\t19\t19\t345\t0.75\npoverty_A\tCatBoostEncoder\tSingle\tNone\t751\t22536\t0.5619174434087882\t0.5619174434087882\t0.5274671636492723\t38\t0.8859743934446591\t0.5620650101532454\t0.5401530752584143\t7.994302988052368\t40\t40\t79\t0.05\npoverty_A\tCatBoostEncoder\tSingle\tNone\t1502\t22536\t0.5679094540612517\t0.5679094540612517\t0.5274671636492723\t38\t0.831990567462373\t0.5293249059135732\t0.5088747165207526\t7.762101411819458\t40\t40\t3\t0.1\npoverty_A\tCatBoostEncoder\tSingle\tNone\t3756\t22536\t0.5362087326943556\t0.5362087326943556\t0.5274671636492723\t38\t0.858324953012095\t0.5982342354289758\t0.6306323183875759\t8.875043392181396\t40\t40\t52\t0.25\npoverty_A\tCatBoostEncoder\tSingle\tNone\t7512\t22536\t0.5154419595314164\t0.5154419595314164\t0.5274671636492723\t38\t0.7746306123276163\t0.5485171975228239\t0.5720604833462329\t9.434112787246704\t40\t40\t25\t0.5\npoverty_A\tCatBoostEncoder\tSingle\tNone\t11268\t22536\t0.5154419595314164\t0.5154419595314164\t0.5274671636492723\t38\t0.7783769232796187\t0.5372990835640438\t0.5539699268307093\t11.178505897521973\t40\t40\t87\t0.75\npoverty_A\tCatBoostEncoder\tSingle\tgan\t788\t22536\t0.5619174434087882\t0.5824873096446701\t0.5274671636492723\t38\t0.9421522331067809\t0.5516229422751163\t0.5869937181884348\t8.291184902191162\t40\t40\t100\t0.05\npoverty_A\tCatBoostEncoder\tSingle\tgan\t1652\t22536\t0.5679094540612517\t0.6071428571428571\t0.5274671636492723\t38\t0.9128941151595166\t0.5922561736635842\t0.5445247344064106\t8.876214265823364\t40\t40\t74\t0.1\npoverty_A\tCatBoostEncoder\tSingle\tgan\t4695\t22536\t0.5362087326943556\t0.627689030883919\t0.5274671636492723\t38\t0.891289713449121\t0.6112995961809725\t0.5787338786848135\t9.212333679199219\t40\t40\t41\t0.25\npoverty_A\tCatBoostEncoder\tSingle\tgan\t11268\t22536\t0.5154419595314164\t0.6769613063542776\t0.5274671636492723\t38\t0.8806414626978063\t0.7688883144925891\t0.5688070955325766\t10.436711311340332\t40\t40\t42\t0.5\npoverty_A\tCatBoostEncoder\tSingle\tgan\t19719\t22536\t0.5154419595314164\t0.7230082661392565\t0.5274671636492723\t38\t0.8759691599411358\t0.8052530370215738\t0.5569678295071181\t13.256612777709961\t40\t40\t10\t0.75\npoverty_A\tCatBoostEncoder\tSingle\tsample_original\t788\t22536\t0.5619174434087882\t0.5355329949238579\t0.5274671636492723\t38\t0.9429218068418079\t0.527533157654028\t0.5362147347976903\t8.915942430496216\t40\t40\t135\t0.05\npoverty_A\tCatBoostEncoder\tSingle\tsample_original\t1652\t22536\t0.5679094540612517\t0.5163438256658596\t0.5274671636492723\t38\t0.9487247794533682\t0.5118483671218681\t0.49198515068132703\t8.978588819503784\t40\t40\t82\t0.1\npoverty_A\tCatBoostEncoder\tSingle\tsample_original\t4695\t22536\t0.5362087326943556\t0.5033013844515442\t0.5274671636492723\t38\t0.8632332457785014\t0.5921758366469347\t0.6177291359538557\t8.948752880096436\t40\t40\t44\t0.25\npoverty_A\tCatBoostEncoder\tSingle\tsample_original\t11268\t22536\t0.5154419595314164\t0.5195243166489173\t0.5274671636492723\t38\t0.7676107600906276\t0.6234098148367526\t0.6841640681225339\t11.036270380020142\t40\t40\t68\t0.5\npoverty_A\tCatBoostEncoder\tSingle\tsample_original\t19719\t22536\t0.5154419595314164\t0.5316699629798671\t0.5274671636492723\t38\t0.7549028313503439\t0.5012396290200846\t0.4823346055754006\t14.260282754898071\t40\t40\t58\t0.75\ncredit\tCatBoostEncoder\tSingle\tNone\t6150\t184507\t0.07788617886178861\t0.07788617886178861\t0.08026253746470324\t18\t0.9527241954477089\t0.7323328624969723\t0.7206022513811922\t13.163346529006958\t120\t120\t34\t0.05\ncredit\tCatBoostEncoder\tSingle\tNone\t12300\t184507\t0.07707317073170732\t0.07707317073170732\t0.08026253746470324\t18\t0.93940969341188\t0.7321126469942714\t0.727353023208482\t14.704874038696289\t120\t120\t60\t0.1\ncredit\tCatBoostEncoder\tSingle\tNone\t30751\t184507\t0.08012747552925108\t0.08012747552925108\t0.08026253746470324\t18\t0.8619422979468002\t0.7307417093245144\t0.7347498739187317\t18.71873188018799\t120\t120\t66\t0.25\ncredit\tCatBoostEncoder\tSingle\tNone\t61502\t184507\t0.08012747552925108\t0.08012747552925108\t0.08026253746470324\t18\t0.8156249961470617\t0.7276302952342422\t0.7347198003949358\t26.168806552886963\t120\t120\t74\t0.5\ncredit\tCatBoostEncoder\tSingle\tNone\t92253\t184507\t0.08095129697679208\t0.08095129697679208\t0.08026253746470324\t18\t0.8201713878566016\t0.7397918520907603\t0.7438959238341907\t34.938451051712036\t120\t120\t113\t0.75\ncredit\tCatBoostEncoder\tSingle\tgan\t6457\t184507\t0.07788617886178861\t0.07820969490475453\t0.08026253746470324\t18\t0.9764313232501689\t0.7512394460240639\t0.7233483986540664\t13.694202423095703\t120\t120\t62\t0.05\ncredit\tCatBoostEncoder\tSingle\tgan\t13530\t184507\t0.07707317073170732\t0.07612712490761271\t0.08026253746470324\t18\t0.9492452184466019\t0.7380827184466019\t0.7251976787296043\t14.91127061843872\t120\t120\t67\t0.1\ncredit\tCatBoostEncoder\tSingle\tgan\t38438\t184507\t0.08012747552925108\t0.08106561215463864\t0.08026253746470324\t18\t0.9090391347620926\t0.754624152577333\t0.7350776851368745\t22.562947273254395\t120\t120\t124\t0.25\ncredit\tCatBoostEncoder\tSingle\tgan\t92253\t184507\t0.08012747552925108\t0.08194855451855224\t0.08026253746470324\t18\t0.9420176537916681\t0.7938256531874146\t0.7389970416524646\t53.786041021347046\t120\t120\t433\t0.5\ncredit\tCatBoostEncoder\tSingle\tgan\t161442\t184507\t0.08095129697679208\t0.08093928469667125\t0.08026253746470324\t18\t0.9773945217063078\t0.831071104961706\t0.7412463491556259\t205.97851586341858\t120\t120\t1701\t0.75\ncredit\tCatBoostEncoder\tSingle\tsample_original\t6457\t184507\t0.07788617886178861\t0.07882917763667338\t0.08026253746470324\t18\t0.9632578345100518\t0.7369329014193641\t0.7176956499719532\t13.45695972442627\t120\t120\t74\t0.05\ncredit\tCatBoostEncoder\tSingle\tsample_original\t13530\t184507\t0.07707317073170732\t0.07723577235772358\t0.08026253746470324\t18\t0.9563164074401242\t0.7443696071649616\t0.7271938929573681\t16.719157934188843\t120\t120\t100\t0.1\ncredit\tCatBoostEncoder\tSingle\tsample_original\t38438\t184507\t0.08012747552925108\t0.08124772360684739\t0.08026253746470324\t18\t0.9243948541074898\t0.7622272437440326\t0.7365072545915403\t25.5328631401062\t120\t120\t198\t0.25\ncredit\tCatBoostEncoder\tSingle\tsample_original\t92253\t184507\t0.08012747552925108\t0.08205695207743921\t0.08026253746470324\t18\t0.9810895339132031\t0.8042303392590467\t0.7370427261844282\t79.69111585617065\t120\t120\t844\t0.5\ncredit\tCatBoostEncoder\tSingle\tsample_original\t161442\t184507\t0.08095129697679208\t0.08109413907161706\t0.08026253746470324\t18\t0.9687607131301714\t0.8255935205394949\t0.742136276798759\t141.1157841682434\t120\t120\t1042\t0.75\ntaxi\tCatBoostEncoder\tSingle\tNone\t17851\t535535\t0.561313091703546\t0.561313091703546\t0.8227697536108751\t5\t0.7615306475536557\t0.646381333555182\t0.5250318412788527\t4.8244500160217285\t7\t7\t29\t0.05\ntaxi\tCatBoostEncoder\tSingle\tNone\t35702\t535535\t0.4692454204246261\t0.4692454204246261\t0.8227697536108751\t5\t0.8141689234410135\t0.7586013081249271\t0.5155964532845364\t5.683969020843506\t7\t7\t30\t0.1\ntaxi\tCatBoostEncoder\tSingle\tNone\t89255\t535535\t0.5131253151083973\t0.5131253151083973\t0.8227697536108751\t5\t0.7451712701819895\t0.7748186166915605\t0.543891241982895\t8.106499910354614\t7\t7\t15\t0.25\ntaxi\tCatBoostEncoder\tSingle\tNone\t178511\t535535\t0.533126810112542\t0.533126810112542\t0.8227697536108751\t5\t0.7613935320974424\t0.728291886604595\t0.5629126746936868\t20.373082399368286\t7\t7\t109\t0.5\ntaxi\tCatBoostEncoder\tSingle\tNone\t267766\t535535\t0.5815226727814584\t0.5815226727814584\t0.8227697536108751\t5\t0.719079048652581\t0.6419974904886212\t0.49650558457388094\t20.892715215682983\t7\t7\t48\t0.75\ntaxi\tCatBoostEncoder\tSingle\tgan\t18743\t535535\t0.561313091703546\t0.5641572853865443\t0.8227697536108751\t5\t0.7598714244280431\t0.5914784556920778\t0.48656500218380583\t5.255659580230713\t7\t7\t29\t0.05\ntaxi\tCatBoostEncoder\tSingle\tgan\t39272\t535535\t0.4692454204246261\t0.47787227541250765\t0.8227697536108751\t5\t0.8336661476148247\t0.7698562281858764\t0.4912398915266225\t8.154317140579224\t7\t7\t76\t0.1\ntaxi\tCatBoostEncoder\tSingle\tgan\t111568\t535535\t0.5131253151083973\t0.48767567761365266\t0.8227697536108751\t5\t0.7911678584412571\t0.7797101169322348\t0.5265006448716775\t11.239099025726318\t7\t7\t50\t0.25\ntaxi\tCatBoostEncoder\tSingle\tgan\t267766\t535535\t0.533126810112542\t0.6559085171380982\t0.8227697536108751\t5\t0.8660098515755502\t0.8456732827961997\t0.5373428720240516\t20.924078226089478\t7\t7\t60\t0.5\ntaxi\tCatBoostEncoder\tSingle\tgan\t468590\t535535\t0.5815226727814584\t0.6128193089908022\t0.8227697536108751\t5\t0.825626069418726\t0.7902174878641041\t0.526980184147693\t40.348939657211304\t7\t7\t96\t0.75\ntaxi\tCatBoostEncoder\tSingle\tsample_original\t18743\t535535\t0.561313091703546\t0.5562610041082003\t0.8227697536108751\t5\t0.7675420142171343\t0.639305055797575\t0.5118678397122456\t5.168023109436035\t7\t7\t38\t0.05\ntaxi\tCatBoostEncoder\tSingle\tsample_original\t39272\t535535\t0.4692454204246261\t0.43649419433693215\t0.8227697536108751\t5\t0.8273389418647688\t0.8436326989449704\t0.5470727547432738\t7.189561367034912\t7\t7\t66\t0.1\ntaxi\tCatBoostEncoder\tSingle\tsample_original\t111568\t535535\t0.5131253151083973\t0.42115122615803813\t0.8227697536108751\t5\t0.8203346240505904\t0.7872740574701714\t0.5564292427170119\t12.47060513496399\t7\t7\t79\t0.25\ntaxi\tCatBoostEncoder\tSingle\tsample_original\t267766\t535535\t0.533126810112542\t0.3864232202744187\t0.8227697536108751\t5\t0.7782898628462955\t0.7787353721670882\t0.5418087488008634\t17.32105803489685\t7\t7\t17\t0.5\ntaxi\tCatBoostEncoder\tSingle\tsample_original\t468590\t535535\t0.5815226727814584\t0.4923237798501889\t0.8227697536108751\t5\t0.7478875643555635\t0.7609802109811412\t0.5445782397760078\t28.39053201675415\t7\t7\t27\t0.75\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/run_experiment.py",
    "content": "import time\n\nimport numpy as np\nimport pandas as pd\nfrom sklearn.metrics import roc_auc_score\nfrom sklearn.model_selection import train_test_split\nfrom tqdm import tqdm\n\nfrom model import Model\nfrom utils import save_exp_to_file, extend_gan_train, extend_from_original\n\n\ndef execute_experiment(dataset_name, encoders_list, validation_type, sample_type=None):\n    dataset_pth = f\"./data/{dataset_name}/{dataset_name}.gz\"\n    results = {}\n\n    # load processed dataset\n    data = pd.read_csv(dataset_pth)\n    data.fillna(data.mean(), inplace=True)\n\n    for train_prop_size in [0.05, 0.1, 0.25, 0.5, 0.75]:\n        # make train-test split\n        cat_cols = [col for col in data.columns if col.startswith(\"cat\")]\n        X_train, X_test, y_train, y_test = train_test_split(\n            data.drop(\"target\", axis=1),\n            data[\"target\"],\n            test_size=0.6,\n            shuffle=False,\n            random_state=42,\n        )\n        X_test, y_test = X_test.reset_index(drop=True), y_test.reset_index(drop=True)\n\n        train_size = X_train.shape[0]\n        X_train = X_train.head(int(train_size * train_prop_size)).reset_index(drop=True)\n        y_train = y_train.head(int(train_size * train_prop_size)).reset_index(drop=True)\n        mean_target_before_sampling_train = np.mean(y_train)\n        if train_prop_size == 1:\n            continue\n        elif sample_type == \"gan\":\n            X_train, y_train = extend_gan_train(\n                X_train,\n                y_train,\n                X_test,\n                cat_cols,\n                epochs=500,\n                gen_x_times=train_prop_size,\n            )\n        elif sample_type == \"sample_original\":\n            X_train, y_train = extend_from_original(\n                X_train, y_train, X_test, cat_cols, gen_x_times=train_prop_size\n            )\n        y_train, y_test = y_train, y_test\n\n        for encoders_tuple in encoders_list:\n            print(\n                f\"\\n{encoders_tuple}, {dataset_name}, train size {int(100 * train_prop_size)}%, \"\n                f\"validation_type {validation_type}, sample_type {sample_type}\"\n            )\n\n            time_start = time.time()\n\n            # train models\n            lgb_model = Model(\n                cat_validation=validation_type,\n                encoders_names=encoders_tuple,\n                cat_cols=cat_cols,\n            )\n            train_score, val_score, avg_num_trees = lgb_model.fit(X_train, y_train)\n            y_hat, test_features = lgb_model.predict(X_test)\n\n            # check score\n            test_score = roc_auc_score(y_test, y_hat)\n            time_end = time.time()\n\n            # write and save results\n            results = {\n                \"dataset_name\": dataset_name,\n                \"Encoder\": encoders_tuple[0],\n                \"validation_type\": validation_type,\n                \"sample_type\": sample_type,\n                \"train_shape\": X_train.shape[0],\n                \"test_shape\": X_test.shape[0],\n                \"mean_target_before_sampling_train\": mean_target_before_sampling_train,\n                \"mean_target_after_sampling_train\": np.mean(y_train),\n                \"mean_target_test\": np.mean(y_test),\n                \"num_cat_cols\": len(cat_cols),\n                \"train_score\": train_score,\n                \"val_score\": val_score,\n                \"test_score\": test_score,\n                \"time\": time_end - time_start,\n                \"features_before_encoding\": X_train.shape[1],\n                \"features_after_encoding\": test_features,\n                \"avg_tress_number\": avg_num_trees,\n                \"train_prop_size\": train_prop_size,\n            }\n            save_exp_to_file(dic=results, path=f\"./results/fit_predict_scores.txt\")\n\n\nif __name__ == \"__main__\":\n\n    encoders_list = [(\"CatBoostEncoder\",)]\n\n    dataset_list = [\n        \"telecom\",\n        \"adult\",\n        \"employee\",\n        \"mortgages\",\n        \"poverty_A\",\n        \"credit\",\n        \"taxi\",\n    ]  # \"kick\",\"kdd_upselling\"\n\n    for dataset_name in tqdm(dataset_list):\n        validation_type = \"Single\"\n        execute_experiment(dataset_name, encoders_list, validation_type)\n        execute_experiment(\n            dataset_name, encoders_list, validation_type, sample_type=\"gan\"\n        )\n        execute_experiment(\n            dataset_name, encoders_list, validation_type, sample_type=\"sample_original\"\n        )\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/GAN-for-tabular-data/utils.py",
    "content": "import gc\nfrom typing import List\n\nimport numpy as np\nimport pandas as pd\nfrom ctgan import CTGANSynthesizer\nfrom sklearn.model_selection import StratifiedKFold\n\nfrom model import Model\n\n\ndef save_dict_to_file(dic: dict, path: str, save_raw=False) -> None:\n    \"\"\"\n    Save dict values into txt file\n    :param dic: Dict with values\n    :param path: Path to .txt file\n    :return: None\n    \"\"\"\n\n    f = open(path, \"w\")\n    if save_raw:\n        f.write(str(dic))\n    else:\n        for k, v in dic.items():\n            f.write(str(k))\n            f.write(str(v))\n            f.write(\"\\n\\n\")\n    f.close()\n\n\ndef save_exp_to_file(dic: dict, path: str) -> None:\n    \"\"\"\n    Save dict values into txt file\n    :param dic: Dict with values\n    :param path: Path to .txt file\n    :return: None\n    \"\"\"\n\n    f = open(path, \"a+\")\n    keys = dic.keys()\n    vals = [str(val) for val in dic.values()]\n\n    if f.tell() == 0:\n        header = \"\\t\".join(keys)\n        f.write(header + \"\\n\")\n\n    row = \"\\t\".join(vals)\n    f.write(row + \"\\n\")\n    f.close()\n\n\ndef cat_cols_info(\n    X_train: pd.DataFrame, X_test: pd.DataFrame, cat_cols: List[str]\n) -> dict:\n    \"\"\"\n    Get the main info about cat columns in dataframe, i.e. num of values, uniqueness\n    :param X_train: Train dataframe\n    :param X_test: Test dataframe\n    :param cat_cols: List of categorical columns\n    :return: Dict with results\n    \"\"\"\n\n    cc_info = {}\n\n    for col in cat_cols:\n        train_values = set(X_train[col])\n        number_of_new_test = len(set(X_test[col]) - train_values)\n        fraction_of_new_test = np.mean(\n            X_test[col].apply(lambda v: v not in train_values)\n        )\n\n        cc_info[col] = {\n            \"num_uniq_train\": X_train[col].nunique(),\n            \"num_uniq_test\": X_test[col].nunique(),\n            \"number_of_new_test\": number_of_new_test,\n            \"fraction_of_new_test\": fraction_of_new_test,\n        }\n    return cc_info\n\n\ndef adversarial_test(left_df, right_df, cat_cols):\n    \"\"\"\n    Trains adversarial model to distinguish train from test\n    :param left_df:  dataframe\n    :param right_df: dataframe\n    :param cat_cols: List of categorical columns\n    :return: trained model\n    \"\"\"\n    # sample to shuffle the data\n    left_df = left_df.copy().sample(frac=1).reset_index(drop=True)\n    right_df = right_df.copy().sample(frac=1).reset_index(drop=True)\n\n    left_df = left_df.head(right_df.shape[0])\n    right_df = right_df.head(left_df.shape[0])\n\n    left_df[\"gt\"] = 0\n    right_df[\"gt\"] = 1\n\n    concated = pd.concat([left_df, right_df])\n    lgb_model = Model(\n        cat_validation=\"Single\",\n        encoders_names=(\"OrdinalEncoder\",),\n        cat_cols=cat_cols,\n        model_validation=StratifiedKFold(n_splits=3, shuffle=True, random_state=42),\n        model_params={\n            \"metrics\": \"AUC\",\n            \"max_depth\": 2,\n            \"max_bin\": 100,\n            \"n_estimators\": 500,\n            \"learning_rate\": 0.02,\n            \"random_state\": 42,\n        },\n    )\n    train_score, val_score, avg_num_trees = lgb_model.fit(\n        concated.drop(\"gt\", axis=1), concated[\"gt\"]\n    )\n\n    print(\n        \"ROC AUC adversarial: train %.2f%% val %.2f%%\"\n        % (train_score * 100.0, val_score * 100.0)\n    )\n    return lgb_model\n\n\ndef extend_gan_train(x_train, y_train, x_test, cat_cols, gen_x_times=1.2, epochs=300):\n    \"\"\"\n    Extends train by generating new data by GAN\n    :param x_train:  train dataframe\n    :param y_train: target for train dataframe\n    :param x_test: dataframe\n    :param cat_cols: List of categorical columns\n    :param gen_x_times: Factor for which initial dataframe should be increased\n    :param cat_cols: List of categorical columns\n    :param epochs: Number of epoch max to train the GAN\n    :return: extended train with target\n    \"\"\"\n\n    if gen_x_times == 0:\n        raise ValueError(\"Passed gen_x_times with value 0!\")\n    x_train[\"target\"] = y_train\n    x_test_bigger = int(1.1 * x_test.shape[0] / x_train.shape[0])\n    ctgan = CTGANSynthesizer()\n    ctgan.fit(x_train, cat_cols, epochs=epochs)\n    generated_df = ctgan.sample((x_test_bigger) * x_train.shape[0])\n    data_dtype = x_train.dtypes.values\n\n    for i in range(len(generated_df.columns)):\n        generated_df[generated_df.columns[i]] = generated_df[\n            generated_df.columns[i]\n        ].astype(data_dtype[i])\n\n    generated_df = pd.concat(\n        [\n            x_train.sample(frac=(x_test_bigger), replace=True, random_state=42),\n            generated_df,\n        ]\n    ).reset_index(drop=True)\n\n    num_cols = []\n    for col in x_train.columns:\n        if \"num\" in col:\n            num_cols.append(col)\n\n    for num_col in num_cols:\n        min_val = x_test[num_col].quantile(0.02)\n        max_val = x_test[num_col].quantile(0.98)\n        generated_df = generated_df.loc[\n            (generated_df[num_col] >= min_val) & (generated_df[num_col] <= max_val)\n        ]\n    generated_df = generated_df.reset_index(drop=True)\n    ad_model = adversarial_test(x_test, generated_df.drop(\"target\", axis=1), cat_cols)\n\n    generated_df[\"test_similarity\"] = ad_model.predict(\n        generated_df.drop(\"target\", axis=1), return_shape=False\n    )\n    generated_df.sort_values(\"test_similarity\", ascending=False, inplace=True)\n    generated_df = generated_df.head(int(gen_x_times * x_train.shape[0]))\n    x_train = pd.concat(\n        [x_train, generated_df.drop(\"test_similarity\", axis=1)], axis=0\n    ).reset_index(drop=True)\n    del generated_df\n    gc.collect()\n    return x_train.drop(\"target\", axis=1), x_train[\"target\"]\n\n\ndef extend_from_original(x_train, y_train, x_test, cat_cols, gen_x_times=1.2):\n    \"\"\"\n    Extends train by generating new data by GAN\n    :param x_train:  train dataframe\n    :param y_train: target for train dataframe\n    :param x_test: dataframe\n    :param cat_cols: List of categorical columns\n    :param gen_x_times: Factor for which initial dataframe should be increased\n    :param cat_cols: List of categorical columns\n    :return: extended train with target\n    \"\"\"\n    if gen_x_times == 0:\n        raise ValueError(\"Passed gen_x_times with value 0!\")\n    x_train[\"target\"] = y_train\n    x_test_bigger = int(1.1 * x_test.shape[0] / x_train.shape[0])\n    generated_df = x_train.sample(frac=x_test_bigger, replace=True, random_state=42)\n    num_cols = []\n    for col in x_train.columns:\n        if \"num\" in col:\n            num_cols.append(col)\n\n    for num_col in num_cols:\n        min_val = x_test[num_col].quantile(0.02)\n        max_val = x_test[num_col].quantile(0.98)\n        generated_df = generated_df.loc[\n            (generated_df[num_col] >= min_val) & (generated_df[num_col] <= max_val)\n        ]\n\n    generated_df = generated_df.reset_index(drop=True)\n    ad_model = adversarial_test(x_test, generated_df.drop(\"target\", axis=1), cat_cols)\n\n    generated_df[\"test_similarity\"] = ad_model.predict(\n        generated_df.drop(\"target\", axis=1), return_shape=False\n    )\n    generated_df.sort_values(\"test_similarity\", ascending=False, inplace=True)\n    generated_df = generated_df.head(int(gen_x_times * x_train.shape[0]))\n    x_train = pd.concat(\n        [x_train, generated_df.drop(\"test_similarity\", axis=1)], axis=0\n    ).reset_index(drop=True)\n    del generated_df\n    gc.collect()\n    return x_train.drop(\"target\", axis=1), x_train[\"target\"]\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/CGAN/ConditionalGAN.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# # Implementation of Conditional GANs\n# Reference: https://arxiv.org/pdf/1411.1784.pdf\n# https://github.com/Yangyangii/GAN-Tutorial/blob/master/MNIST/Conditional-GAN.ipynb\n# In[ ]:\n\n\n# Run the comment below only when using Google Colab\n# !pip install torch torchvision\n\n\n# In[1]:\n\n\nimport torch\nimport torchvision\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\n# In[2]:\n\n\nfrom torch.utils.data import DataLoader\nfrom torchvision import datasets\nfrom torchvision import transforms\nfrom torchvision.utils import save_image\n\n\n# In[3]:\n\n\nimport numpy as np\nimport datetime\nimport os, sys\n\n\n# In[4]:\n\n\nfrom matplotlib.pyplot import imshow, imsave\n\nget_ipython().run_line_magic(\"matplotlib\", \"inline\")\n\n\n# In[5]:\n\n\nMODEL_NAME = \"ConditionalGAN\"\nDEVICE = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n\n# In[6]:\n\n\ndef to_onehot(x, num_classes=10):\n    assert isinstance(x, int) or isinstance(\n        x, (torch.LongTensor, torch.cuda.LongTensor)\n    )\n    if isinstance(x, int):\n        c = torch.zeros(1, num_classes).long()\n        c[0][x] = 1\n    else:\n        x = x.cpu()\n        c = torch.LongTensor(x.size(0), num_classes)\n        c.zero_()\n        c.scatter_(1, x, 1)  # dim, index, src value\n    return c\n\n\n# In[7]:\n\n\ndef get_sample_image(G, n_noise=100):\n    \"\"\"\n        save sample 100 images\n    \"\"\"\n    img = np.zeros([280, 280])\n    for j in range(10):\n        c = torch.zeros([10, 10]).to(DEVICE)\n        c[:, j] = 1\n        z = torch.randn(10, n_noise).to(DEVICE)\n        y_hat = G(z, c).view(10, 28, 28)\n        result = y_hat.cpu().data.numpy()\n        img[j * 28 : (j + 1) * 28] = np.concatenate([x for x in result], axis=-1)\n    return img\n\n\n# In[8]:\n\n\nclass Discriminator(nn.Module):\n    \"\"\"\n        Simple Discriminator w/ MLP\n    \"\"\"\n\n    def __init__(self, input_size=784, condition_size=10, num_classes=1):\n        super(Discriminator, self).__init__()\n        self.layer = nn.Sequential(\n            nn.Linear(input_size + condition_size, 512),\n            nn.LeakyReLU(0.2),\n            nn.Linear(512, 256),\n            nn.LeakyReLU(0.2),\n            nn.Linear(256, num_classes),\n            nn.Sigmoid(),\n        )\n\n    def forward(self, x, c):\n        x, c = x.view(x.size(0), -1), c.view(c.size(0), -1).float()\n        v = torch.cat((x, c), 1)  # v: [input, label] concatenated vector\n        y_ = self.layer(v)\n        return y_\n\n\n# In[9]:\n\n\nclass Generator(nn.Module):\n    \"\"\"\n        Simple Generator w/ MLP\n    \"\"\"\n\n    def __init__(self, input_size=100, condition_size=10, num_classes=784):\n        super(Generator, self).__init__()\n        self.layer = nn.Sequential(\n            nn.Linear(input_size + condition_size, 128),\n            nn.LeakyReLU(0.2),\n            nn.Linear(128, 256),\n            nn.BatchNorm1d(256),\n            nn.LeakyReLU(0.2),\n            nn.Linear(256, 512),\n            nn.BatchNorm1d(512),\n            nn.LeakyReLU(0.2),\n            nn.Linear(512, 1024),\n            nn.BatchNorm1d(1024),\n            nn.LeakyReLU(0.2),\n            nn.Linear(1024, num_classes),\n            nn.Tanh(),\n        )\n\n    def forward(self, x, c):\n        x, c = x.view(x.size(0), -1), c.view(c.size(0), -1).float()\n        v = torch.cat((x, c), 1)  # v: [input, label] concatenated vector\n        y_ = self.layer(v)\n        y_ = y_.view(x.size(0), 1, 28, 28)\n        return y_\n\n\n# In[10]:\n\n\nD = Discriminator().to(DEVICE)\nG = Generator().to(DEVICE)\n\n\n# In[11]:\n\n\ntransform = transforms.Compose(\n    [transforms.ToTensor(), transforms.Normalize(mean=[0.5], std=[0.5])]\n)\n\n\n# In[12]:\n\n\nmnist = datasets.MNIST(root=\"../data/\", train=True, transform=transform, download=True)\n\n\n# In[13]:\n\n\nbatch_size = 64\ncondition_size = 10\n\n\n# In[14]:\n\n\ndata_loader = DataLoader(\n    dataset=mnist, batch_size=batch_size, shuffle=True, drop_last=True\n)\n\n\n# In[15]:\n\n\ncriterion = nn.BCELoss()\nD_opt = torch.optim.Adam(D.parameters(), lr=0.0002, betas=(0.5, 0.999))\nG_opt = torch.optim.Adam(G.parameters(), lr=0.0002, betas=(0.5, 0.999))\n\n\n# In[16]:\n\n\nmax_epoch = 30  # need more than 100 epochs for training generator\nstep = 0\nn_critic = 1  # for training more k steps about Discriminator\nn_noise = 100\n\n\n# In[17]:\n\n\nD_labels = torch.ones([batch_size, 1]).to(DEVICE)  # Discriminator Label to real\nD_fakes = torch.zeros([batch_size, 1]).to(DEVICE)  # Discriminator Label to fake\n\n\n# In[18]:\n\n\nif not os.path.exists(\"samples\"):\n    os.makedirs(\"samples\")\n\n\n# In[19]:\n\n\nfor epoch in range(max_epoch):\n    for idx, (images, labels) in enumerate(data_loader):\n        # Training Discriminator\n        x = images.to(DEVICE)\n        y = labels.view(batch_size, 1)\n        y = to_onehot(y).to(DEVICE)\n        x_outputs = D(x, y)\n        D_x_loss = criterion(x_outputs, D_labels)\n\n        z = torch.randn(batch_size, n_noise).to(DEVICE)\n        z_outputs = D(G(z, y), y)\n        D_z_loss = criterion(z_outputs, D_fakes)\n        D_loss = D_x_loss + D_z_loss\n\n        D.zero_grad()\n        D_loss.backward()\n        D_opt.step()\n\n        if step % n_critic == 0:\n            # Training Generator\n            z = torch.randn(batch_size, n_noise).to(DEVICE)\n            z_outputs = D(G(z, y), y)\n            G_loss = criterion(z_outputs, D_labels)\n\n            G.zero_grad()\n            G_loss.backward()\n            G_opt.step()\n\n        if step % 500 == 0:\n            print(\n                \"Epoch: {}/{}, Step: {}, D Loss: {}, G Loss: {}\".format(\n                    epoch, max_epoch, step, D_loss.item(), G_loss.item()\n                )\n            )\n\n        if step % 1000 == 0:\n            G.eval()\n            img = get_sample_image(G, n_noise)\n            imsave(\n                \"samples/{}_step{}.jpg\".format(MODEL_NAME, str(step).zfill(3)),\n                img,\n                cmap=\"gray\",\n            )\n            G.train()\n        step += 1\n\n\n# ## Sample\n\n# In[22]:\n\n\n# generation to image\nG.eval()\nimshow(get_sample_image(G, n_noise), cmap=\"gray\")\n\n\n# In[40]:\n\n\ndef save_checkpoint(state, file_name=\"checkpoint.pth.tar\"):\n    torch.save(state, file_name)\n\n\n# In[41]:\n\n\n# Saving params.\nsave_checkpoint(\n    {\"epoch\": epoch + 1, \"state_dict\": D.state_dict(), \"optimizer\": D_opt.state_dict()},\n    \"D_c.pth.tar\",\n)\nsave_checkpoint(\n    {\"epoch\": epoch + 1, \"state_dict\": G.state_dict(), \"optimizer\": G_opt.state_dict()},\n    \"G_c.pth.tar\",\n)\n\n\n# In[ ]:\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/DCGAN/dcgan.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# In[1]:\n\n\n# reference https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html\n\n\nfrom __future__ import print_function\n#%matplotlib inline\nimport argparse\nimport os\nimport random\nimport torch\nimport torch.nn as nn\nimport torch.nn.parallel\nimport torch.backends.cudnn as cudnn\nimport torch.optim as optim\nimport torch.utils.data\nimport torchvision.datasets as dset\nimport torchvision.transforms as transforms\nimport torchvision.utils as vutils\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nfrom IPython.display import HTML\n\n# Set random seed for reproducibility\nmanualSeed = 999\n#manualSeed = random.randint(1, 10000) # use if you want new results\nprint(\"Random Seed: \", manualSeed)\nrandom.seed(manualSeed)\ntorch.manual_seed(manualSeed)\n\n\n# In[16]:\n\n\nos.listdir(dataroot)\n\n\n# In[19]:\n\n\n# Root directory for dataset\ndataroot = \"./data/celeba/\"\n\n# Number of workers for dataloader\nworkers = 2\n\n# Batch size during training\nbatch_size = 128\n\n# Spatial size of training images. All images will be resized to this\n#   size using a transformer.\nimage_size = 64\n\n# Number of channels in the training images. For color images this is 3\nnc = 3\n\n# Size of z latent vector (i.e. size of generator input)\nnz = 100\n\n# Size of feature maps in generator\nngf = 64\n\n# Size of feature maps in discriminator\nndf = 64\n\n# Number of training epochs\nnum_epochs = 5\n\n# Learning rate for optimizers\nlr = 0.0002\n\n# Beta1 hyperparam for Adam optimizers\nbeta1 = 0.5\n\n# Number of GPUs available. Use 0 for CPU mode.\nngpu = 1\n\n\n# In[20]:\n\n\ndataset = dset.ImageFolder(root=dataroot,\n                           transform=transforms.Compose([\n                               transforms.Resize(image_size),\n                               transforms.CenterCrop(image_size),\n                               transforms.ToTensor(),\n                               transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),\n                           ]))\n# Create the dataloader\ndataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size,\n                                         shuffle=True, num_workers=workers)\n\n# Decide which device we want to run on\ndevice = torch.device(\"cuda:0\" if (torch.cuda.is_available() and ngpu > 0) else \"cpu\")\n\n# Plot some training images\nreal_batch = next(iter(dataloader))\nplt.figure(figsize=(8,8))\nplt.axis(\"off\")\nplt.title(\"Training Images\")\nplt.imshow(np.transpose(vutils.make_grid(real_batch[0].to(device)[:64], padding=2, normalize=True).cpu(),(1,2,0)))\n\n\n# In[21]:\n\n\n# custom weights initialization called on netG and netD\ndef weights_init(m):\n    classname = m.__class__.__name__\n    if classname.find('Conv') != -1:\n        nn.init.normal_(m.weight.data, 0.0, 0.02)\n    elif classname.find('BatchNorm') != -1:\n        nn.init.normal_(m.weight.data, 1.0, 0.02)\n        nn.init.constant_(m.bias.data, 0)\n\n\n# In[24]:\n\n\n# Generator Code\n\nclass Generator(nn.Module):\n    def __init__(self, ngpu):\n        super(Generator, self).__init__()\n        self.ngpu = ngpu\n        self.main = nn.Sequential(\n            # input is Z, going into a convolution\n            nn.ConvTranspose2d( nz, ngf * 8, 4, 1, 0, bias=False),\n            nn.BatchNorm2d(ngf * 8),\n            nn.ReLU(True),\n            # state size. (ngf*8) x 4 x 4\n            nn.ConvTranspose2d(ngf * 8, ngf * 4, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ngf * 4),\n            nn.ReLU(True),\n            # state size. (ngf*4) x 8 x 8\n            nn.ConvTranspose2d( ngf * 4, ngf * 2, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ngf * 2),\n            nn.ReLU(True),\n            # state size. (ngf*2) x 16 x 16\n            nn.ConvTranspose2d( ngf * 2, ngf, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ngf),\n            nn.ReLU(True),\n            # state size. (ngf) x 32 x 32\n            nn.ConvTranspose2d( ngf, nc, 4, 2, 1, bias=False),\n            nn.Tanh()\n            # state size. (nc) x 64 x 64\n        )\n\n    def forward(self, input):\n        return self.main(input)\n    \n# Create the generator\nnetG = Generator(ngpu).to(device)\n\n# Handle multi-gpu if desired\nif (device.type == 'cuda') and (ngpu > 1):\n    netG = nn.DataParallel(netG, list(range(ngpu)))\n\n# Apply the weights_init function to randomly initialize all weights\n#  to mean=0, stdev=0.2.\nnetG.apply(weights_init)\n\n# Print the model\nprint(netG)    \n\n\n# In[26]:\n\n\n# Discriminator\nclass Discriminator(nn.Module):\n    def __init__(self, ngpu):\n        super(Discriminator, self).__init__()\n        self.ngpu = ngpu\n        self.main = nn.Sequential(\n            # input is (nc) x 64 x 64\n            nn.Conv2d(nc, ndf, 4, 2, 1, bias=False),\n            nn.LeakyReLU(0.2, inplace=True),\n            # state size. (ndf) x 32 x 32\n            nn.Conv2d(ndf, ndf * 2, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ndf * 2),\n            nn.LeakyReLU(0.2, inplace=True),\n            # state size. (ndf*2) x 16 x 16\n            nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ndf * 4),\n            nn.LeakyReLU(0.2, inplace=True),\n            # state size. (ndf*4) x 8 x 8\n            nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(ndf * 8),\n            nn.LeakyReLU(0.2, inplace=True),\n            # state size. (ndf*8) x 4 x 4\n            nn.Conv2d(ndf * 8, 1, 4, 1, 0, bias=False),\n            nn.Sigmoid()\n        )\n\n    def forward(self, input):\n        return self.main(input)\n    \n# Create the Discriminator\nnetD = Discriminator(ngpu).to(device)\n\n# Handle multi-gpu if desired\nif (device.type == 'cuda') and (ngpu > 1):\n    netD = nn.DataParallel(netD, list(range(ngpu)))\n\n# Apply the weights_init function to randomly initialize all weights\n#  to mean=0, stdev=0.2.\nnetD.apply(weights_init)\n\n# Print the model\nprint(netD)    \n\n\n# In[27]:\n\n\n# Initialize BCELoss function\ncriterion = nn.BCELoss()\n\n# Create batch of latent vectors that we will use to visualize\n#  the progression of the generator\nfixed_noise = torch.randn(64, nz, 1, 1, device=device)\n\n# Establish convention for real and fake labels during training\nreal_label = 1\nfake_label = 0\n\n# Setup Adam optimizers for both G and D\noptimizerD = optim.Adam(netD.parameters(), lr=lr, betas=(beta1, 0.999))\noptimizerG = optim.Adam(netG.parameters(), lr=lr, betas=(beta1, 0.999))\n\n\n# * Loss_D - discriminator loss calculated as the sum of losses for the all real and all fake batches (log(D(x))+log(D(G(z)))).\n# * Loss_G - generator loss calculated as log(D(G(z)))\n# * D(x) - the average output (across the batch) of the discriminator for the all real batch. This should start close to 1 then theoretically converge to 0.5 when G gets better. Think about why this is.\n# * D(G(z)) - average discriminator outputs for the all fake batch. The first number is before D is updated and the second number is after D is updated. These numbers should start near 0 and converge to 0.5 as G gets better. Think about why this is.\n\n# In[28]:\n\n\n# Training Loop\n\n# Lists to keep track of progress\nimg_list = []\nG_losses = []\nD_losses = []\niters = 0\n\nprint(\"Starting Training Loop...\")\n# For each epoch\nfor epoch in range(num_epochs):\n    # For each batch in the dataloader\n    for i, data in enumerate(dataloader, 0):\n\n        ############################\n        # (1) Update D network: maximize log(D(x)) + log(1 - D(G(z)))\n        ###########################\n        ## Train with all-real batch\n        netD.zero_grad()\n        # Format batch\n        real_cpu = data[0].to(device)\n        b_size = real_cpu.size(0)\n        label = torch.full((b_size,), real_label, device=device)\n        # Forward pass real batch through D\n        output = netD(real_cpu).view(-1)\n        # Calculate loss on all-real batch\n        errD_real = criterion(output, label)\n        # Calculate gradients for D in backward pass\n        errD_real.backward()\n        D_x = output.mean().item()\n\n        ## Train with all-fake batch\n        # Generate batch of latent vectors\n        noise = torch.randn(b_size, nz, 1, 1, device=device)\n        # Generate fake image batch with G\n        fake = netG(noise)\n        label.fill_(fake_label)\n        # Classify all fake batch with D\n        output = netD(fake.detach()).view(-1)\n        # Calculate D's loss on the all-fake batch\n        errD_fake = criterion(output, label)\n        # Calculate the gradients for this batch\n        errD_fake.backward()\n        D_G_z1 = output.mean().item()\n        # Add the gradients from the all-real and all-fake batches\n        errD = errD_real + errD_fake\n        # Update D\n        optimizerD.step()\n\n        ############################\n        # (2) Update G network: maximize log(D(G(z)))\n        ###########################\n        netG.zero_grad()\n        label.fill_(real_label)  # fake labels are real for generator cost\n        # Since we just updated D, perform another forward pass of all-fake batch through D\n        output = netD(fake).view(-1)\n        # Calculate G's loss based on this output\n        errG = criterion(output, label)\n        # Calculate gradients for G\n        errG.backward()\n        D_G_z2 = output.mean().item()\n        # Update G\n        optimizerG.step()\n\n        # Output training stats\n        if i % 50 == 0:\n            print('[%d/%d][%d/%d]\\tLoss_D: %.4f\\tLoss_G: %.4f\\tD(x): %.4f\\tD(G(z)): %.4f / %.4f'\n                  % (epoch, num_epochs, i, len(dataloader),\n                     errD.item(), errG.item(), D_x, D_G_z1, D_G_z2))\n\n        # Save Losses for plotting later\n        G_losses.append(errG.item())\n        D_losses.append(errD.item())\n\n        # Check how the generator is doing by saving G's output on fixed_noise\n        if (iters % 500 == 0) or ((epoch == num_epochs-1) and (i == len(dataloader)-1)):\n            with torch.no_grad():\n                fake = netG(fixed_noise).detach().cpu()\n            img_list.append(vutils.make_grid(fake, padding=2, normalize=True))\n\n        iters += 1\n\n\n# In[29]:\n\n\nplt.figure(figsize=(10,5))\nplt.title(\"Generator and Discriminator Loss During Training\")\nplt.plot(G_losses,label=\"G\")\nplt.plot(D_losses,label=\"D\")\nplt.xlabel(\"iterations\")\nplt.ylabel(\"Loss\")\nplt.legend()\nplt.show()\n\n\n# In[30]:\n\n\n#%%capture\nfig = plt.figure(figsize=(8,8))\nplt.axis(\"off\")\nims = [[plt.imshow(np.transpose(i,(1,2,0)), animated=True)] for i in img_list]\nani = animation.ArtistAnimation(fig, ims, interval=1000, repeat_delay=1000, blit=True)\n\nHTML(ani.to_jshtml())\n\n\n# In[32]:\n\n\n# Grab a batch of real images from the dataloader\nreal_batch = next(iter(dataloader))\n\n# Plot the real images\nplt.figure(figsize=(15,15))\nplt.subplot(1,2,1)\nplt.axis(\"off\")\nplt.title(\"Real Images\")\nplt.imshow(np.transpose(vutils.make_grid(real_batch[0].to(device)[:64], padding=5, normalize=True).cpu(),(1,2,0)))\n\n# Plot the fake images from the last epoch\nplt.subplot(1,2,2)\nplt.axis(\"off\")\nplt.title(\"Fake Images\")\nplt.imshow(np.transpose(img_list[-1],(1,2,0)))\nplt.show()\n\n\n# Where to Go Next\n# We have reached the end of our journey, but there are several places you could go from here. You could:\n# \n# Train for longer to see how good the results get\n# Modify this model to take a different dataset and possibly change the size of the images and the model architecture\n# Check out some other cool GAN projects here\n# Create GANs that generate music\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/README.md",
    "content": "reference code and repo https://github.com/odegeasslbc/Progressive-GAN-pytorch\n\n# Progressive-GAN-pytorch\nA pytorch implementation of Progressive-GAN that is actually works, readable and simple to customize\n\n## Description\nI simplify the code of training a Progressive-GAN, making it easier to read and customize, for the purpose of research.  \nThis implementation is portable with minimal library dependency (only torch and torchvision) and just 2 code modules. In the code, you can easily modeify the training-schema, the loss function, and the network structure, etc.  \nThe key contributions in the paper: 1. progressively growing og GAN, 2. minibatch std on Discriminator, 3. pixel-norm on Generator, 4. equalized learning rate; are all implemented.  \nEnjoy the benefit of the progressive-growing infrastructure and port it to your own research and product!\n\n## How to run\nTo start a training, just run:\n```\npython train.py --path /path/to/image-folder\n```\nAn example with more configuration can be:\n```\npython train.py --path /path/to/imagefolder --trial_name experiment-1 --z_dim 100 --channel 512 --batch_size 4 --init_step 2 --total_iter 300000 --pixel_norm --tanh\n```\nFor a comprehensive explanation of all the parameters, run:\n```\npython train.py --help\n```\n  \nEach new running of the code will create a new folder with the specified trail_name, all the generated images, model checkpoints and loss value loging file will be stored in this new folder. A copy of the codes that you run will also be intimately stored (because you might have modefied them).\n\n## Dataset\nThis code is ready for your own image datasets with the **torchvision.datasets.ImageFolder** module.  \nPlace all your images in a way like:\n```\n<image_root_folder>\n        |--<subfolder 1>\n                |--image 1\n                |--image 2 ...\n        |--<subfolder 2>\n        ...\n```\n\n## Training results\nThis code performs consistently well on various datasets I tested, I just don't bother upload them here.\n\n## Reference\n1. *Progressive Growing of GANs for Improved Quality, Stability, and Variation*, **Tero Karras** (NVIDIA), **Timo Aila** (NVIDIA), **Samuli Laine** (NVIDIA), **Jaakko Lehtinen** (NVIDIA and Aalto University) [Paper (NVIDIA research)](http://research.nvidia.com/publication/2017-10_Progressive-Growing-of)\n2. This implementation is based on: https://github.com/rosinality/progressive-gan-pytorch\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/progan_modules.py",
    "content": "import torch\nfrom torch import nn\nfrom torch.nn import functional as F\n\nfrom math import sqrt\n\n\nclass EqualLR:\n    def __init__(self, name):\n        self.name = name\n\n    def compute_weight(self, module):\n        weight = getattr(module, self.name + \"_orig\")\n        fan_in = weight.data.size(1) * weight.data[0][0].numel()\n\n        return weight * sqrt(2 / fan_in)\n\n    @staticmethod\n    def apply(module, name):\n        fn = EqualLR(name)\n\n        weight = getattr(module, name)\n        del module._parameters[name]\n        module.register_parameter(name + \"_orig\", nn.Parameter(weight.data))\n        module.register_forward_pre_hook(fn)\n\n        return fn\n\n    def __call__(self, module, input):\n        weight = self.compute_weight(module)\n        setattr(module, self.name, weight)\n\n\ndef equal_lr(module, name=\"weight\"):\n    EqualLR.apply(module, name)\n\n    return module\n\n\nclass PixelNorm(nn.Module):\n    def __init__(self):\n        super().__init__()\n\n    def forward(self, input):\n        return input / torch.sqrt(torch.mean(input ** 2, dim=1, keepdim=True) + 1e-8)\n\n\nclass EqualConv2d(nn.Module):\n    def __init__(self, *args, **kwargs):\n        super().__init__()\n\n        conv = nn.Conv2d(*args, **kwargs)\n        conv.weight.data.normal_()\n        conv.bias.data.zero_()\n        self.conv = equal_lr(conv)\n\n    def forward(self, input):\n        return self.conv(input)\n\n\nclass EqualConvTranspose2d(nn.Module):\n    ### additional module for OOGAN usage\n    def __init__(self, *args, **kwargs):\n        super().__init__()\n\n        conv = nn.ConvTranspose2d(*args, **kwargs)\n        conv.weight.data.normal_()\n        conv.bias.data.zero_()\n        self.conv = equal_lr(conv)\n\n    def forward(self, input):\n        return self.conv(input)\n\n\nclass EqualLinear(nn.Module):\n    def __init__(self, in_dim, out_dim):\n        super().__init__()\n\n        linear = nn.Linear(in_dim, out_dim)\n        linear.weight.data.normal_()\n        linear.bias.data.zero_()\n\n        self.linear = equal_lr(linear)\n\n    def forward(self, input):\n        return self.linear(input)\n\n\nclass ConvBlock(nn.Module):\n    def __init__(\n        self,\n        in_channel,\n        out_channel,\n        kernel_size,\n        padding,\n        kernel_size2=None,\n        padding2=None,\n        pixel_norm=True,\n    ):\n        super().__init__()\n\n        pad1 = padding\n        pad2 = padding\n        if padding2 is not None:\n            pad2 = padding2\n\n        kernel1 = kernel_size\n        kernel2 = kernel_size\n        if kernel_size2 is not None:\n            kernel2 = kernel_size2\n\n        convs = [EqualConv2d(in_channel, out_channel, kernel1, padding=pad1)]\n        if pixel_norm:\n            convs.append(PixelNorm())\n        convs.append(nn.LeakyReLU(0.1))\n        convs.append(EqualConv2d(out_channel, out_channel, kernel2, padding=pad2))\n        if pixel_norm:\n            convs.append(PixelNorm())\n        convs.append(nn.LeakyReLU(0.1))\n\n        self.conv = nn.Sequential(*convs)\n\n    def forward(self, input):\n        out = self.conv(input)\n        return out\n\n\ndef upscale(feat):\n    return F.interpolate(feat, scale_factor=2, mode=\"bilinear\", align_corners=False)\n\n\nclass Generator(nn.Module):\n    def __init__(self, input_code_dim=128, in_channel=128, pixel_norm=True, tanh=True):\n        super().__init__()\n        self.input_dim = input_code_dim\n        self.tanh = tanh\n        self.input_layer = nn.Sequential(\n            EqualConvTranspose2d(input_code_dim, in_channel, 4, 1, 0),\n            PixelNorm(),\n            nn.LeakyReLU(0.1),\n        )\n\n        self.progression_4 = ConvBlock(\n            in_channel, in_channel, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_8 = ConvBlock(\n            in_channel, in_channel, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_16 = ConvBlock(\n            in_channel, in_channel, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_32 = ConvBlock(\n            in_channel, in_channel, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_64 = ConvBlock(\n            in_channel, in_channel // 2, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_128 = ConvBlock(\n            in_channel // 2, in_channel // 4, 3, 1, pixel_norm=pixel_norm\n        )\n        self.progression_256 = ConvBlock(\n            in_channel // 4, in_channel // 4, 3, 1, pixel_norm=pixel_norm\n        )\n\n        self.to_rgb_8 = EqualConv2d(in_channel, 3, 1)\n        self.to_rgb_16 = EqualConv2d(in_channel, 3, 1)\n        self.to_rgb_32 = EqualConv2d(in_channel, 3, 1)\n        self.to_rgb_64 = EqualConv2d(in_channel // 2, 3, 1)\n        self.to_rgb_128 = EqualConv2d(in_channel // 4, 3, 1)\n        self.to_rgb_256 = EqualConv2d(in_channel // 4, 3, 1)\n\n        self.max_step = 6\n\n    def progress(self, feat, module):\n        out = F.interpolate(feat, scale_factor=2, mode=\"bilinear\", align_corners=False)\n        out = module(out)\n        return out\n\n    def output(self, feat1, feat2, module1, module2, alpha):\n        if 0 <= alpha < 1:\n            skip_rgb = upscale(module1(feat1))\n            out = (1 - alpha) * skip_rgb + alpha * module2(feat2)\n        else:\n            out = module2(feat2)\n        if self.tanh:\n            return torch.tanh(out)\n        return out\n\n    def forward(self, input, step=0, alpha=-1):\n        if step > self.max_step:\n            step = self.max_step\n\n        out_4 = self.input_layer(input.view(-1, self.input_dim, 1, 1))\n        out_4 = self.progression_4(out_4)\n        out_8 = self.progress(out_4, self.progression_8)\n        if step == 1:\n            if self.tanh:\n                return torch.tanh(self.to_rgb_8(out_8))\n            return self.to_rgb_8(out_8)\n\n        out_16 = self.progress(out_8, self.progression_16)\n        if step == 2:\n            return self.output(out_8, out_16, self.to_rgb_8, self.to_rgb_16, alpha)\n\n        out_32 = self.progress(out_16, self.progression_32)\n        if step == 3:\n            return self.output(out_16, out_32, self.to_rgb_16, self.to_rgb_32, alpha)\n\n        out_64 = self.progress(out_32, self.progression_64)\n        if step == 4:\n            return self.output(out_32, out_64, self.to_rgb_32, self.to_rgb_64, alpha)\n\n        out_128 = self.progress(out_64, self.progression_128)\n        if step == 5:\n            return self.output(out_64, out_128, self.to_rgb_64, self.to_rgb_128, alpha)\n\n        out_256 = self.progress(out_128, self.progression_256)\n        if step == 6:\n            return self.output(\n                out_128, out_256, self.to_rgb_128, self.to_rgb_256, alpha\n            )\n\n\nclass Discriminator(nn.Module):\n    def __init__(self, feat_dim=128):\n        super().__init__()\n\n        self.progression = nn.ModuleList(\n            [\n                ConvBlock(feat_dim // 4, feat_dim // 4, 3, 1),\n                ConvBlock(feat_dim // 4, feat_dim // 2, 3, 1),\n                ConvBlock(feat_dim // 2, feat_dim, 3, 1),\n                ConvBlock(feat_dim, feat_dim, 3, 1),\n                ConvBlock(feat_dim, feat_dim, 3, 1),\n                ConvBlock(feat_dim, feat_dim, 3, 1),\n                ConvBlock(feat_dim + 1, feat_dim, 3, 1, 4, 0),\n            ]\n        )\n\n        self.from_rgb = nn.ModuleList(\n            [\n                EqualConv2d(3, feat_dim // 4, 1),\n                EqualConv2d(3, feat_dim // 4, 1),\n                EqualConv2d(3, feat_dim // 2, 1),\n                EqualConv2d(3, feat_dim, 1),\n                EqualConv2d(3, feat_dim, 1),\n                EqualConv2d(3, feat_dim, 1),\n                EqualConv2d(3, feat_dim, 1),\n            ]\n        )\n\n        self.n_layer = len(self.progression)\n\n        self.linear = EqualLinear(feat_dim, 1)\n\n    def forward(self, input, step=0, alpha=-1):\n        for i in range(step, -1, -1):\n            index = self.n_layer - i - 1\n\n            if i == step:\n                out = self.from_rgb[index](input)\n\n            if i == 0:\n                out_std = torch.sqrt(out.var(0, unbiased=False) + 1e-8)\n                mean_std = out_std.mean()\n                mean_std = mean_std.expand(out.size(0), 1, 4, 4)\n                out = torch.cat([out, mean_std], 1)\n\n            out = self.progression[index](out)\n\n            if i > 0:\n                # out = F.avg_pool2d(out, 2)\n                out = F.interpolate(\n                    out, scale_factor=0.5, mode=\"bilinear\", align_corners=False\n                )\n\n                if i == step and 0 <= alpha < 1:\n                    # skip_rgb = F.avg_pool2d(input, 2)\n                    skip_rgb = F.interpolate(\n                        input, scale_factor=0.5, mode=\"bilinear\", align_corners=False\n                    )\n                    skip_rgb = self.from_rgb[index + 1](skip_rgb)\n                    out = (1 - alpha) * skip_rgb + alpha * out\n\n        out = out.squeeze(2).squeeze(2)\n        # print(input.size(), out.size(), step)\n        out = self.linear(out)\n\n        return out\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/train.py",
    "content": "import argparse\nimport numpy as np\nimport random\nimport torch\nimport torch.nn.functional as F\nfrom PIL import Image\nfrom progan_modules import Generator, Discriminator\nfrom torch import nn, optim\nfrom torch.autograd import Variable, grad\nfrom torch.utils.data import DataLoader\nfrom torchvision import datasets, transforms, utils\nfrom tqdm import tqdm\n\n\ndef accumulate(model1, model2, decay=0.999):\n    par1 = dict(model1.named_parameters())\n    par2 = dict(model2.named_parameters())\n\n    for k in par1.keys():\n        par1[k].data.mul_(decay).add_(1 - decay, par2[k].data)\n\n\ndef imagefolder_loader(path):\n    def loader(transform):\n        data = datasets.ImageFolder(path, transform=transform)\n        data_loader = DataLoader(\n            data, shuffle=True, batch_size=batch_size, num_workers=4\n        )\n        return data_loader\n\n    return loader\n\n\ndef sample_data(dataloader, image_size=4):\n    transform = transforms.Compose(\n        [\n            transforms.Resize(image_size + int(image_size * 0.2) + 1),\n            transforms.RandomCrop(image_size),\n            transforms.RandomHorizontalFlip(),\n            transforms.ToTensor(),\n            transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),\n        ]\n    )\n\n    loader = dataloader(transform)\n\n    return loader\n\n\ndef train(generator, discriminator, init_step, loader, total_iter=600000):\n    step = init_step  # can be 1 = 8, 2 = 16, 3 = 32, 4 = 64, 5 = 128, 6 = 128\n    data_loader = sample_data(loader, 4 * 2 ** step)\n    dataset = iter(data_loader)\n\n    # total_iter = 600000\n    total_iter_remain = total_iter - (total_iter // 6) * (step - 1)\n\n    pbar = tqdm(range(total_iter_remain))\n\n    disc_loss_val = 0\n    gen_loss_val = 0\n    grad_loss_val = 0\n\n    from datetime import datetime\n    import os\n\n    date_time = datetime.now()\n    post_fix = \"%s_%s_%d_%d.txt\" % (\n        trial_name,\n        date_time.date(),\n        date_time.hour,\n        date_time.minute,\n    )\n    log_folder = \"trial_%s_%s_%d_%d\" % (\n        trial_name,\n        date_time.date(),\n        date_time.hour,\n        date_time.minute,\n    )\n\n    os.mkdir(log_folder)\n    os.mkdir(log_folder + \"/checkpoint\")\n    os.mkdir(log_folder + \"/sample\")\n\n    config_file_name = os.path.join(log_folder, \"train_config_\" + post_fix)\n    config_file = open(config_file_name, \"w\")\n    config_file.write(str(args))\n    config_file.close()\n\n    log_file_name = os.path.join(log_folder, \"train_log_\" + post_fix)\n    log_file = open(log_file_name, \"w\")\n    log_file.write(\"g,d,nll,onehot\\n\")\n    log_file.close()\n\n    from shutil import copy\n\n    copy(\"train.py\", log_folder + \"/train_%s.py\" % post_fix)\n    copy(\"progan_modules.py\", log_folder + \"/model_%s.py\" % post_fix)\n\n    alpha = 0\n    one = torch.tensor(1, dtype=torch.float).to(device)\n    mone = one * -1\n    iteration = 0\n\n    for i in pbar:\n        discriminator.zero_grad()\n\n        alpha = min(1, (2 / (total_iter // 6)) * iteration)\n\n        if iteration > total_iter // 6:\n            alpha = 0\n            iteration = 0\n            step += 1\n\n            if step > 6:\n                alpha = 1\n                step = 6\n            data_loader = sample_data(loader, 4 * 2 ** step)\n            dataset = iter(data_loader)\n\n        try:\n            real_image, label = next(dataset)\n\n        except (OSError, StopIteration):\n            dataset = iter(data_loader)\n            real_image, label = next(dataset)\n\n        iteration += 1\n\n        ### 1. train Discriminator\n        b_size = real_image.size(0)\n        real_image = real_image.to(device)\n        label = label.to(device)\n        real_predict = discriminator(real_image, step=step, alpha=alpha)\n        real_predict = real_predict.mean() - 0.001 * (real_predict ** 2).mean()\n        real_predict.backward(mone)\n\n        # sample input data: vector for Generator\n        gen_z = torch.randn(b_size, input_code_size).to(device)\n\n        fake_image = generator(gen_z, step=step, alpha=alpha)\n        fake_predict = discriminator(fake_image.detach(), step=step, alpha=alpha)\n        fake_predict = fake_predict.mean()\n        fake_predict.backward(one)\n\n        ### gradient penalty for D\n        eps = torch.rand(b_size, 1, 1, 1).to(device)\n        x_hat = eps * real_image.data + (1 - eps) * fake_image.detach().data\n        x_hat.requires_grad = True\n        hat_predict = discriminator(x_hat, step=step, alpha=alpha)\n        grad_x_hat = grad(outputs=hat_predict.sum(), inputs=x_hat, create_graph=True)[0]\n        grad_penalty = (\n            (grad_x_hat.view(grad_x_hat.size(0), -1).norm(2, dim=1) - 1) ** 2\n        ).mean()\n        grad_penalty = 10 * grad_penalty\n        grad_penalty.backward()\n        grad_loss_val += grad_penalty.item()\n        disc_loss_val += (real_predict - fake_predict).item()\n\n        d_optimizer.step()\n\n        ### 2. train Generator\n        if (i + 1) % n_critic == 0:\n            generator.zero_grad()\n            discriminator.zero_grad()\n\n            predict = discriminator(fake_image, step=step, alpha=alpha)\n\n            loss = -predict.mean()\n            gen_loss_val += loss.item()\n\n            loss.backward()\n            g_optimizer.step()\n            accumulate(g_running, generator)\n\n        if (i + 1) % 1000 == 0 or i == 0:\n            with torch.no_grad():\n                images = g_running(\n                    torch.randn(5 * 10, input_code_size).to(device),\n                    step=step,\n                    alpha=alpha,\n                ).data.cpu()\n\n                utils.save_image(\n                    images,\n                    f\"{log_folder}/sample/{str(i + 1).zfill(6)}.png\",\n                    nrow=10,\n                    normalize=True,\n                    range=(-1, 1),\n                )\n\n        if (i + 1) % 10000 == 0 or i == 0:\n            try:\n                torch.save(\n                    g_running.state_dict(),\n                    f\"{log_folder}/checkpoint/{str(i + 1).zfill(6)}_g.model\",\n                )\n                torch.save(\n                    discriminator.state_dict(),\n                    f\"{log_folder}/checkpoint/{str(i + 1).zfill(6)}_d.model\",\n                )\n            except:\n                pass\n\n        if (i + 1) % 500 == 0:\n            state_msg = (\n                f\"{i + 1}; G: {gen_loss_val / (500 // n_critic):.3f}; D: {disc_loss_val / 500:.3f};\"\n                f\" Grad: {grad_loss_val / 500:.3f}; Alpha: {alpha:.3f}\"\n            )\n\n            log_file = open(log_file_name, \"a+\")\n            new_line = \"%.5f,%.5f\\n\" % (\n                gen_loss_val / (500 // n_critic),\n                disc_loss_val / 500,\n            )\n            log_file.write(new_line)\n            log_file.close()\n\n            disc_loss_val = 0\n            gen_loss_val = 0\n            grad_loss_val = 0\n\n            print(state_msg)\n            # pbar.set_description(state_msg)\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser(\n        description=\"Progressive GAN, during training, the model will learn to generate  images from a low resolution, then progressively getting high resolution \"\n    )\n\n    parser.add_argument(\n        \"--path\",\n        type=str,\n        help=\"path of specified dataset, should be a folder that has one or many sub image folders inside\",\n    )\n    parser.add_argument(\n        \"--trial_name\",\n        type=str,\n        default=\"test1\",\n        help=\"a brief description of the training trial\",\n    )\n    parser.add_argument(\n        \"--gpu_id\",\n        type=int,\n        default=0,\n        help=\"0 is the first gpu, 1 is the second gpu, etc.\",\n    )\n    parser.add_argument(\n        \"--lr\",\n        type=float,\n        default=0.001,\n        help=\"learning rate, default is 1e-3, usually dont need to change it, you can try make it bigger, such as 2e-3\",\n    )\n    parser.add_argument(\n        \"--z_dim\",\n        type=int,\n        default=128,\n        help=\"the initial latent vector's dimension, can be smaller such as 64, if the dataset is not diverse\",\n    )\n    parser.add_argument(\n        \"--channel\",\n        type=int,\n        default=128,\n        help=\"determines how big the model is, smaller value means faster training, but less capacity of the model\",\n    )\n    parser.add_argument(\n        \"--batch_size\",\n        type=int,\n        default=4,\n        help=\"how many images to train together at one iteration\",\n    )\n    parser.add_argument(\n        \"--n_critic\",\n        type=int,\n        default=1,\n        help=\"train Dhow many times while train G 1 time\",\n    )\n    parser.add_argument(\n        \"--init_step\",\n        type=int,\n        default=1,\n        help=\"start from what resolution, 1 means 8x8 resolution, 2 means 16x16 resolution, ..., 6 means 256x256 resolution\",\n    )\n    parser.add_argument(\n        \"--total_iter\",\n        type=int,\n        default=300000,\n        help=\"how many iterations to train in total, the value is in assumption that init step is 1\",\n    )\n    parser.add_argument(\n        \"--pixel_norm\",\n        default=False,\n        action=\"store_true\",\n        help=\"a normalization method inside the model, you can try use it or not depends on the dataset\",\n    )\n    parser.add_argument(\n        \"--tanh\",\n        default=False,\n        action=\"store_true\",\n        help=\"an output non-linearity on the output of Generator, you can try use it or not depends on the dataset\",\n    )\n\n    args = parser.parse_args()\n\n    print(str(args))\n\n    trial_name = args.trial_name\n    device = torch.device(\"cuda:%d\" % (args.gpu_id))\n    input_code_size = args.z_dim\n    batch_size = args.batch_size\n    n_critic = args.n_critic\n\n    generator = Generator(\n        in_channel=args.channel,\n        input_code_dim=input_code_size,\n        pixel_norm=args.pixel_norm,\n        tanh=args.tanh,\n    ).to(device)\n    discriminator = Discriminator(feat_dim=args.channel).to(device)\n    g_running = Generator(\n        in_channel=args.channel,\n        input_code_dim=input_code_size,\n        pixel_norm=args.pixel_norm,\n        tanh=args.tanh,\n    ).to(device)\n\n    ## you can directly load a pretrained model here\n    generator.load_state_dict(\n        torch.load(\n            \"/home/dex/Desktop/ml/ML-DL-scripts/DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/trial_experiment-1_2020-01-08_23_5/checkpoint/010000_g.model\"\n        )\n    )\n    g_running.load_state_dict(\n        torch.load(\n            \"/home/dex/Desktop/ml/ML-DL-scripts/DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/trial_experiment-1_2020-01-08_23_5/checkpoint/010000_g.model\"\n        )\n    )\n    discriminator.load_state_dict(\n        torch.load(\n            \"/home/dex/Desktop/ml/ML-DL-scripts/DEEP LEARNING/Autoencoders GANS/pytorch/ProgressiveGAN/trial_experiment-1_2020-01-08_23_5/checkpoint/010000_d.model\"\n        )\n    )\n\n    g_running.train(False)\n\n    g_optimizer = optim.Adam(generator.parameters(), lr=args.lr, betas=(0.0, 0.99))\n    d_optimizer = optim.Adam(discriminator.parameters(), lr=args.lr, betas=(0.0, 0.99))\n\n    accumulate(g_running, generator, 0)\n\n    loader = imagefolder_loader(args.path)\n\n    train(generator, discriminator, args.init_step, loader, args.total_iter)\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/Semi-supervised GAN/Datasets.py",
    "content": "import numpy as np\nimport torch\nfrom torch.utils.data import TensorDataset\nfrom torchvision import datasets, transforms\n\n\ndef MnistLabel(class_num):\n    raw_dataset = datasets.MNIST(\n        \"../data\",\n        train=True,\n        download=True,\n        transform=transforms.Compose([transforms.ToTensor()]),\n    )\n    class_tot = [0] * 10\n    data = []\n    labels = []\n    positive_tot = 0\n    tot = 0\n    perm = np.random.permutation(raw_dataset.__len__())\n    for i in range(raw_dataset.__len__()):\n        datum, label = raw_dataset.__getitem__(perm[i])\n        if class_tot[label] < class_num:\n            data.append(datum.numpy())\n            labels.append(label)\n            class_tot[label] += 1\n            tot += 1\n            if tot >= 10 * class_num:\n                break\n    return TensorDataset(\n        torch.FloatTensor(np.array(data)), torch.LongTensor(np.array(labels))\n    )\n\n\ndef MnistUnlabel():\n    raw_dataset = datasets.MNIST(\n        \"../data\",\n        train=True,\n        download=True,\n        transform=transforms.Compose([transforms.ToTensor()]),\n    )\n    return raw_dataset\n\n\ndef MnistTest():\n    return datasets.MNIST(\n        \"../data\",\n        train=False,\n        download=True,\n        transform=transforms.Compose([transforms.ToTensor()]),\n    )\n\n\nif __name__ == \"__main__\":\n    print(dir(MnistTest()))\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/Semi-supervised GAN/ImprovedGAN.py",
    "content": "# -*- coding:utf-8 -*-\nfrom __future__ import print_function\n\nimport argparse\nimport numpy as np\nimport os\nimport pdb\nimport sys\nimport tensorboardX\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom Datasets import *\nfrom Nets import Generator, Discriminator\nfrom functional import log_sum_exp\nfrom torch.autograd import Variable\nfrom torch.utils.data import DataLoader, TensorDataset\n\n\nclass ImprovedGAN(object):\n    def __init__(self, G, D, labeled, unlabeled, test, args):\n        if os.path.exists(args.savedir):\n            print(\"Loading model from \" + args.savedir)\n            self.G = torch.load(os.path.join(args.savedir, \"G.pkl\"))\n            self.D = torch.load(os.path.join(args.savedir, \"D.pkl\"))\n        else:\n            os.makedirs(args.savedir)\n            self.G = G\n            self.D = D\n            torch.save(self.G, os.path.join(args.savedir, \"G.pkl\"))\n            torch.save(self.D, os.path.join(args.savedir, \"D.pkl\"))\n        self.writer = tensorboardX.SummaryWriter(log_dir=args.logdir)\n        if args.cuda:\n            self.G.cuda()\n            self.D.cuda()\n        self.labeled = labeled\n        self.unlabeled = unlabeled\n        self.test = test\n        self.Doptim = optim.Adam(\n            self.D.parameters(), lr=args.lr, betas=(args.momentum, 0.999)\n        )\n        self.Goptim = optim.Adam(\n            self.G.parameters(), lr=args.lr, betas=(args.momentum, 0.999)\n        )\n        self.args = args\n\n    def trainD(self, x_label, y, x_unlabel):\n        x_label, x_unlabel, y = (\n            Variable(x_label),\n            Variable(x_unlabel),\n            Variable(y, requires_grad=False),\n        )\n        if self.args.cuda:\n            x_label, x_unlabel, y = x_label.cuda(), x_unlabel.cuda(), y.cuda()\n        output_label, output_unlabel, output_fake = (\n            self.D(x_label, cuda=self.args.cuda),\n            self.D(x_unlabel, cuda=self.args.cuda),\n            self.D(\n                self.G(x_unlabel.size()[0], cuda=self.args.cuda)\n                .view(x_unlabel.size())\n                .detach(),\n                cuda=self.args.cuda,\n            ),\n        )\n        logz_label, logz_unlabel, logz_fake = (\n            log_sum_exp(output_label),\n            log_sum_exp(output_unlabel),\n            log_sum_exp(output_fake),\n        )  # log ∑e^x_i\n        prob_label = torch.gather(\n            output_label, 1, y.unsqueeze(1)\n        )  # log e^x_label = x_label\n        loss_supervised = -torch.mean(prob_label) + torch.mean(logz_label)\n        loss_unsupervised = 0.5 * (\n            -torch.mean(logz_unlabel)\n            + torch.mean(F.softplus(logz_unlabel))\n            + torch.mean(F.softplus(logz_fake))  # real_data: log Z/(1+Z)\n        )  # fake_data: log 1/(1+Z)\n        loss = loss_supervised + self.args.unlabel_weight * loss_unsupervised\n        acc = torch.mean((output_label.max(1)[1] == y).float())\n        self.Doptim.zero_grad()\n        loss.backward()\n        self.Doptim.step()\n        return (\n            loss_supervised.data.cpu().numpy(),\n            loss_unsupervised.data.cpu().numpy(),\n            acc,\n        )\n\n    def trainG(self, x_unlabel):\n        fake = self.G(x_unlabel.size()[0], cuda=self.args.cuda).view(x_unlabel.size())\n        mom_gen, output_fake = self.D(fake, feature=True, cuda=self.args.cuda)\n        mom_unlabel, _ = self.D(Variable(x_unlabel), feature=True, cuda=self.args.cuda)\n        mom_gen = torch.mean(mom_gen, dim=0)\n        mom_unlabel = torch.mean(mom_unlabel, dim=0)\n        loss_fm = torch.mean((mom_gen - mom_unlabel) ** 2)\n        loss = loss_fm\n        self.Goptim.zero_grad()\n        self.Doptim.zero_grad()\n        loss.backward()\n        self.Goptim.step()\n        return loss.data.cpu().numpy()\n\n    def train(self):\n        assert self.unlabeled.__len__() > self.labeled.__len__()\n        assert type(self.labeled) == TensorDataset\n        times = int(np.ceil(self.unlabeled.__len__() * 1.0 / self.labeled.__len__()))\n        t1 = self.labeled.tensors[0].clone()\n        t2 = self.labeled.tensors[1].clone()\n        tile_labeled = TensorDataset(t1.repeat(times, 1, 1, 1), t2.repeat(times))\n        gn = 0\n        for epoch in range(self.args.epochs):\n            self.G.train()\n            self.D.train()\n            unlabel_loader1 = DataLoader(\n                self.unlabeled,\n                batch_size=self.args.batch_size,\n                shuffle=True,\n                drop_last=True,\n                num_workers=4,\n            )\n            unlabel_loader2 = DataLoader(\n                self.unlabeled,\n                batch_size=self.args.batch_size,\n                shuffle=True,\n                drop_last=True,\n                num_workers=4,\n            ).__iter__()\n            label_loader = DataLoader(\n                tile_labeled,\n                batch_size=self.args.batch_size,\n                shuffle=True,\n                drop_last=True,\n                num_workers=4,\n            ).__iter__()\n            loss_supervised = loss_unsupervised = loss_gen = accuracy = 0.0\n            batch_num = 0\n            for (unlabel1, _label1) in unlabel_loader1:\n                batch_num += 1\n                unlabel2, _label2 = unlabel_loader2.next()\n                x, y = label_loader.next()\n                if args.cuda:\n                    x, y, unlabel1, unlabel2 = (\n                        x.cuda(),\n                        y.cuda(),\n                        unlabel1.cuda(),\n                        unlabel2.cuda(),\n                    )\n                ll, lu, acc = self.trainD(x, y, unlabel1)\n                loss_supervised += ll\n                loss_unsupervised += lu\n                accuracy += acc\n                lg = self.trainG(unlabel2)\n                if epoch > 1 and lg > 1:\n                    lg = self.trainG(unlabel2)\n                loss_gen += lg\n                if (batch_num + 1) % self.args.log_interval == 0:\n                    print(\"Training: %d / %d\" % (batch_num + 1, len(unlabel_loader1)))\n                    gn += 1\n                    with torch.no_grad():\n                        self.writer.add_scalars(\n                            \"loss\",\n                            {\n                                \"loss_supervised\": ll,\n                                \"loss_unsupervised\": lu,\n                                \"loss_gen\": lg,\n                            },\n                            gn,\n                        )\n                        self.writer.add_histogram(\n                            \"real_feature\",\n                            self.D(Variable(x), cuda=self.args.cuda, feature=True)[0],\n                            gn,\n                        )\n                        self.writer.add_histogram(\n                            \"fake_feature\",\n                            self.D(\n                                self.G(self.args.batch_size, cuda=self.args.cuda),\n                                cuda=self.args.cuda,\n                                feature=True,\n                            )[0],\n                            gn,\n                        )\n                        self.writer.add_histogram(\"fc3_bias\", self.G.fc3.bias, gn)\n                        self.writer.add_histogram(\n                            \"D_feature_weight\", self.D.layers[-1].weight, gn\n                        )\n                    self.D.train()\n                    self.G.train()\n            loss_supervised /= batch_num\n            loss_unsupervised /= batch_num\n            loss_gen /= batch_num\n            accuracy /= batch_num\n            print(\n                \"Iteration %d, loss_supervised = %.4f, loss_unsupervised = %.4f, loss_gen = %.4f train acc = %.4f\"\n                % (epoch, loss_supervised, loss_unsupervised, loss_gen, accuracy)\n            )\n            sys.stdout.flush()\n            if (epoch + 1) % self.args.eval_interval == 0:\n                print(\"Eval: correct %d / %d\" % (self.eval(), self.test.__len__()))\n                torch.save(self.G, os.path.join(args.savedir, \"G.pkl\"))\n                torch.save(self.D, os.path.join(args.savedir, \"D.pkl\"))\n\n    def predict(self, x):\n        with torch.no_grad():\n            ret = torch.max(self.D(Variable(x), cuda=self.args.cuda), 1)[1].data\n        return ret\n\n    def eval(self):\n        self.G.eval()\n        self.D.eval()\n        d, l = [], []\n        for (datum, label) in self.test:\n            d.append(datum)\n            l.append(label)\n        x, y = torch.stack(d), torch.LongTensor(l)\n        if self.args.cuda:\n            x, y = x.cuda(), y.cuda()\n        pred = self.predict(x)\n        return torch.sum(pred == y)\n\n    def draw(self, batch_size):\n        self.G.eval()\n        return self.G(batch_size, cuda=self.args.cuda)\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser(description=\"PyTorch Improved GAN\")\n    parser.add_argument(\n        \"--batch-size\",\n        type=int,\n        default=100,\n        metavar=\"N\",\n        help=\"input batch size for training (default: 64)\",\n    )\n    parser.add_argument(\n        \"--epochs\",\n        type=int,\n        default=10,\n        metavar=\"N\",\n        help=\"number of epochs to train (default: 10)\",\n    )\n    parser.add_argument(\n        \"--lr\",\n        type=float,\n        default=0.003,\n        metavar=\"LR\",\n        help=\"learning rate (default: 0.003)\",\n    )\n    parser.add_argument(\n        \"--momentum\",\n        type=float,\n        default=0.5,\n        metavar=\"M\",\n        help=\"SGD momentum (default: 0.5)\",\n    )\n    parser.add_argument(\n        \"--cuda\", action=\"store_true\", default=False, help=\"CUDA training\"\n    )\n    parser.add_argument(\n        \"--seed\", type=int, default=1, metavar=\"S\", help=\"random seed (default: 1)\"\n    )\n    parser.add_argument(\n        \"--log-interval\",\n        type=int,\n        default=100,\n        metavar=\"N\",\n        help=\"how many batches to wait before logging training status\",\n    )\n    parser.add_argument(\n        \"--eval-interval\",\n        type=int,\n        default=1,\n        metavar=\"N\",\n        help=\"how many epochs to wait before evaling training status\",\n    )\n    parser.add_argument(\n        \"--unlabel-weight\",\n        type=float,\n        default=1,\n        metavar=\"N\",\n        help=\"scale factor between labeled and unlabeled data\",\n    )\n    parser.add_argument(\n        \"--logdir\",\n        type=str,\n        default=\"./logfile\",\n        metavar=\"LOG_PATH\",\n        help=\"logfile path, tensorboard format\",\n    )\n    parser.add_argument(\n        \"--savedir\",\n        type=str,\n        default=\"./models\",\n        metavar=\"SAVE_PATH\",\n        help=\"saving path, pickle format\",\n    )\n    args = parser.parse_args()\n    args.cuda = args.cuda and torch.cuda.is_available()\n    np.random.seed(args.seed)\n    gan = ImprovedGAN(\n        Generator(100),\n        Discriminator(),\n        MnistLabel(10),\n        MnistUnlabel(),\n        MnistTest(),\n        args,\n    )\n    gan.train()\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/Semi-supervised GAN/Nets.py",
    "content": "import torch\nfrom torch.nn.parameter import Parameter\nfrom torch import nn\nfrom torch.nn import functional as F\nfrom torch.autograd import Variable\nimport pdb\nfrom functional import reset_normal_param, LinearWeightNorm\n\n\nclass Discriminator(nn.Module):\n    def __init__(self, input_dim=28 ** 2, output_dim=10):\n        super(Discriminator, self).__init__()\n        self.input_dim = input_dim\n        self.layers = torch.nn.ModuleList(\n            [\n                LinearWeightNorm(input_dim, 1000),\n                LinearWeightNorm(1000, 500),\n                LinearWeightNorm(500, 250),\n                LinearWeightNorm(250, 250),\n                LinearWeightNorm(250, 250),\n            ]\n        )\n        self.final = LinearWeightNorm(250, output_dim, weight_scale=1)\n\n    def forward(self, x, feature=False, cuda=False):\n        x = x.view(-1, self.input_dim)\n        noise = torch.randn(x.size()) * 0.3 if self.training else torch.Tensor([0])\n        if cuda:\n            noise = noise.cuda()\n        x = x + Variable(noise, requires_grad=False)\n        for i in range(len(self.layers)):\n            m = self.layers[i]\n            x_f = F.relu(m(x))\n            noise = (\n                torch.randn(x_f.size()) * 0.5 if self.training else torch.Tensor([0])\n            )\n            if cuda:\n                noise = noise.cuda()\n            x = x_f + Variable(noise, requires_grad=False)\n        if feature:\n            return x_f, self.final(x)\n        return self.final(x)\n\n\nclass Generator(nn.Module):\n    def __init__(self, z_dim, output_dim=28 ** 2):\n        super(Generator, self).__init__()\n        self.z_dim = z_dim\n        self.fc1 = nn.Linear(z_dim, 500, bias=False)\n        self.bn1 = nn.BatchNorm1d(500, affine=False, eps=1e-6, momentum=0.5)\n        self.fc2 = nn.Linear(500, 500, bias=False)\n        self.bn2 = nn.BatchNorm1d(500, affine=False, eps=1e-6, momentum=0.5)\n        self.fc3 = LinearWeightNorm(500, output_dim, weight_scale=1)\n        self.bn1_b = Parameter(torch.zeros(500))\n        self.bn2_b = Parameter(torch.zeros(500))\n        nn.init.xavier_uniform(self.fc1.weight)\n        nn.init.xavier_uniform(self.fc2.weight)\n\n    def forward(self, batch_size, cuda=False):\n        x = Variable(\n            torch.rand(batch_size, self.z_dim),\n            requires_grad=False,\n            volatile=not self.training,\n        )\n        if cuda:\n            x = x.cuda()\n        x = F.softplus(self.bn1(self.fc1(x)) + self.bn1_b)\n        x = F.softplus(self.bn2(self.fc2(x)) + self.bn2_b)\n        x = F.softplus(self.fc3(x))\n        return x\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/Semi-supervised GAN/README.md",
    "content": "reference https://github.com/Sleepychord/ImprovedGAN-pytorch\n\n# Improved GAN (Semi-supervised GAN)\nThis is an implementation of *Semi-supervised generative adversarial network* in the paper [Improved Techniques for Training GANs](https://arxiv.org/abs/1606.03498) for **Mnist** dataset.\nThis method and its extensions have marvellous performance on traditional CV datasets, and remain state-of-art (by the end of November, 2017).\n\n## Working Principle\nInspired by [Good Semi-supervised Learning that Requires a Bad GAN](https://arxiv.org/abs/1705.09783), semi-supervised GAN with feature matching actually generates unrealistic fake samples around high-density region. With the inborn continuity, the **fake region** in feature space split the bounds of different classes.\n\nRefer to [Semi-supervised Learning on Graphs with Generative Adversarial Nets](https://arxiv.org/abs/1809.00130) for more details about this **density gap splitting** explaination.\n\n## Running \nThe code was implemented in Python 3.7.\n\n`python ImprovedGAN.py` \n\nDefault configs include **CPU, saving and autoloading, generating logfile in tensorboard format, etc**. You can use `python ImprovedGAN.py --cuda` to run it on GPU.\n\nThe **latest** `torch`(1.2 version), `tensorboardX`, `torchvision` are needed.\n\n## Result\nDefault configs can train models achieving **98.5% accuracy** on test dataset with 100 labeled data(10 per class) and other 59,000 unlabeled data after 100 epochs.\n### Loss curve during training\n![](./loss.png)\n`loss_label => red, loss_unlabel => blue, loss_gen => green`\n \n\nIt must be noted that [OpenAI implementation](https://github.com/openai/improved-gan)(theano) demonstrates a different curve, where loss\\_gen is nearly zero and loss\\_unlabel increase gradually.\n \n## Remark\n* The implementation is based on [OpenAI implementation](https://github.com/openai/improved-gan). \n* But I found it hard to reproduce expected results and suffered from exploding gradients. I changed the final layer in generator from **Sigmoid** to **Softplus**, and therefore fixed it.\n* `./models` includes the trained model, you can simply delete it for retraining.\n* The archectures of networks are elaborately designed, among them `Weight Normalization` is very important.\n* Thank Jiapeng Hong for discussing with me.\n\n## Change Logs\n* (Nov 27, 2019) Update to pytorch 1.2 and Python 3.7. The version for pytorch 0.3 and Python 2.7 can be found in the history versions. Delete pretrained models.\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/Semi-supervised GAN/functional.py",
    "content": "import math\nimport pdb\nimport torch\nimport torch.nn.functional as F\nfrom torch.nn.parameter import Parameter\n\n\ndef log_sum_exp(x, axis=1):\n    m = torch.max(x, dim=1)[0]\n    return m + torch.log(torch.sum(torch.exp(x - m.unsqueeze(1)), dim=axis))\n\n\ndef reset_normal_param(L, stdv, weight_scale=1.0):\n    assert type(L) == torch.nn.Linear\n    torch.nn.init.normal(L.weight, std=weight_scale / math.sqrt(L.weight.size()[0]))\n\n\nclass LinearWeightNorm(torch.nn.Module):\n    def __init__(\n        self,\n        in_features,\n        out_features,\n        bias=True,\n        weight_scale=None,\n        weight_init_stdv=0.1,\n    ):\n        super(LinearWeightNorm, self).__init__()\n        self.in_features = in_features\n        self.out_features = out_features\n        self.weight = Parameter(\n            torch.randn(out_features, in_features) * weight_init_stdv\n        )\n        if bias:\n            self.bias = Parameter(torch.zeros(out_features))\n        else:\n            self.register_parameter(\"bias\", None)\n        if weight_scale is not None:\n            assert type(weight_scale) == int\n            self.weight_scale = Parameter(torch.ones(out_features, 1) * weight_scale)\n        else:\n            self.weight_scale = 1\n\n    def forward(self, x):\n        W = (\n            self.weight\n            * self.weight_scale\n            / torch.sqrt(torch.sum(self.weight ** 2, dim=1, keepdim=True))\n        )\n        return F.linear(x, W, self.bias)\n\n    def __repr__(self):\n        return (\n            self.__class__.__name__\n            + \"(\"\n            + \"in_features=\"\n            + str(self.in_features)\n            + \", out_features=\"\n            + str(self.out_features)\n            + \", weight_scale=\"\n            + str(self.weight_scale)\n            + \")\"\n        )\n"
  },
  {
    "path": "DEEP LEARNING/Autoencoders GANS/pytorch/VAE/VAR mnist.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# In[3]:\n\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nimport matplotlib.pyplot as plt\n\nfrom torch.utils.data import DataLoader\nfrom torchvision import datasets, transforms\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\n\n# In[ ]:\n\n\ntransforms = transforms.Compose([transforms.ToTensor()])\ntrain_dataset = datasets.MNIST(\n    './data',\n    train=True,\n    download=True,\n    transform=transforms)\n\ntest_dataset = datasets.MNIST(\n    './data',\n    train=False,\n    download=True,\n    transform=transforms\n)\n\n\n# In[5]:\n\n\nBATCH_SIZE = 64     # number of data points in each batch\nN_EPOCHS = 10       # times to run the model on complete data\nINPUT_DIM = 28 * 28 # size of each input\nHIDDEN_DIM = 256    # hidden dimension\nLATENT_DIM = 20     # latent vector dimension\nlr = 1e-3           # learning rate\n\n\n# In[6]:\n\n\ntrain_iterator = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True)\ntest_iterator = DataLoader(test_dataset, batch_size=BATCH_SIZE)\n\n\n# In[9]:\n\n\nclass Encoder(nn.Module):\n        ''' This the encoder of VAE\n\n        '''\n        def __init__(self, input_dim, hidden_dim, z_dim):\n            '''\n            Args:\n                input_dim: A integer indicating the size of input (in case of MNIST 28 * 28).\n                hidden_dim: A integer indicating the size of hidden dimension.\n                z_dim: A integer indicating the latent dimension.\n            '''\n            super().__init__()\n\n            self.linear = nn.Linear(input_dim, hidden_dim)\n            self.mu = nn.Linear(hidden_dim, z_dim)\n            self.var = nn.Linear(hidden_dim, z_dim)\n\n        def forward(self, x):\n            # x is of shape [batch_size, input_dim]\n\n            hidden = F.relu(self.linear(x))\n            # hidden is of shape [batch_size, hidden_dim]\n            z_mu = self.mu(hidden)\n            # z_mu is of shape [batch_size, latent_dim]\n            z_var = self.var(hidden)\n            # z_var is of shape [batch_size, latent_dim]\n\n            return z_mu, z_var\n        \nclass Decoder(nn.Module):\n    ''' This the decoder part of VAE\n\n    '''\n    def __init__(self, z_dim, hidden_dim, output_dim):\n        '''\n        Args:\n            z_dim: A integer indicating the latent size.\n            hidden_dim: A integer indicating the size of hidden dimension.\n            output_dim: A integer indicating the output dimension (in case of MNIST it is 28 * 28)\n        '''\n        super().__init__()\n\n        self.linear = nn.Linear(z_dim, hidden_dim)\n        self.out = nn.Linear(hidden_dim, output_dim)\n\n    def forward(self, x):\n        # x is of shape [batch_size, latent_dim]\n\n        hidden = F.relu(self.linear(x))\n        # hidden is of shape [batch_size, hidden_dim]\n\n        predicted = torch.sigmoid(self.out(hidden))\n        # predicted is of shape [batch_size, output_dim]\n\n        return predicted        \n\n\n# In[10]:\n\n\nclass VAE(nn.Module):\n       ''' This the VAE, which takes a encoder and decoder.\n\n       '''\n       def __init__(self, enc, dec):\n           super().__init__()\n\n           self.enc = enc\n           self.dec = dec\n\n       def forward(self, x):\n           # encode\n           z_mu, z_var = self.enc(x)\n\n           # sample from the distribution having latent parameters z_mu, z_var\n           # reparameterize\n           std = torch.exp(z_var / 2)\n           eps = torch.randn_like(std)\n           x_sample = eps.mul(std).add_(z_mu)\n\n           # decode\n           predicted = self.dec(x_sample)\n           return predicted, z_mu, z_var\n\n\n# In[11]:\n\n\n# encoder\nencoder = Encoder(INPUT_DIM, HIDDEN_DIM, LATENT_DIM)\n\n# decoder\ndecoder = Decoder(LATENT_DIM, HIDDEN_DIM, INPUT_DIM)\n\n# vae\nmodel = VAE(encoder, decoder).to(device)\n\n# optimizer\noptimizer = optim.Adam(model.parameters(), lr=lr)\n\n\n# In[12]:\n\n\ndef train():\n        # set the train mode\n        model.train()\n\n        # loss of the epoch\n        train_loss = 0\n\n        for i, (x, _) in enumerate(train_iterator):\n            # reshape the data into [batch_size, 784]\n            x = x.view(-1, 28 * 28)\n            x = x.to(device)\n            \n            # update the gradients to zero\n            optimizer.zero_grad()\n\n            # forward pass\n            x_sample, z_mu, z_var = model(x)\n\n            # reconstruction loss\n            recon_loss = F.binary_cross_entropy(x_sample, x, size_average=False)\n\n            # kl divergence loss\n            kl_loss = 0.5 * torch.sum(torch.exp(z_var) + z_mu**2 - 1.0 - z_var)\n\n            # total loss\n            loss = recon_loss + kl_loss\n\n            # backward pass\n            loss.backward()\n            train_loss += loss.item()\n            \n            # update the weights\n            optimizer.step()\n\n        return train_loss\n\ndef test():\n    # set the evaluation mode\n    model.eval()\n\n    # test loss for the data\n    test_loss = 0\n\n    # we don't need to track the gradients, since we are not updating the parameters during evaluation / testing\n    with torch.no_grad():\n        for i, (x, _) in enumerate(test_iterator):\n            # reshape the data\n            x = x.view(-1, 28 * 28)\n            x = x.to(device)\n\n            # forward pass\n            x_sample, z_mu, z_var = model(x)\n\n            # reconstruction loss\n            recon_loss = F.binary_cross_entropy(x_sample, x, size_average=False)\n\n            # kl divergence loss\n            kl_loss = 0.5 * torch.sum(torch.exp(z_var) + z_mu**2 - 1.0 - z_var)\n\n            # total loss\n            loss = recon_loss + kl_loss\n            test_loss += loss.item()\n\n    return test_loss\n    \n\n\n# In[14]:\n\n\nbest_test_loss = float('inf')\n\nfor e in range(N_EPOCHS):\n\n    train_loss = train()\n    test_loss = test()\n\n    train_loss /= len(train_dataset)\n    test_loss /= len(test_dataset)\n\n    print(f'Epoch {e}, Train Loss: {train_loss:.2f}, Test Loss: {test_loss:.2f}')\n\n    if best_test_loss > test_loss:\n        best_test_loss = test_loss\n        patience_counter = 1\n    else:\n        patience_counter += 1\n\n    if patience_counter > 3:\n        break\n\n\n# In[32]:\n\n\n# sample and generate a image\nz = torch.randn(1, LATENT_DIM).to(device)\n\n# run only the decoder\nreconstructed_img = model.dec(z).cpu()\nimg = reconstructed_img.view(28, 28).data\n\nprint(z.shape)\nprint(img.shape)\n\nplt.imshow(img, cmap='gray')\n\n\n# In[36]:\n\n\n# sample and generate a image\nz = torch.randn(1, LATENT_DIM).to(device)\n\n# run only the decoder\nreconstructed_img = model.dec(z).cpu()\nimg = reconstructed_img.view(28, 28).data\n\nprint(z.shape)\nprint(img.shape)\n\nplt.imshow(img, cmap='gray')\n\n"
  },
  {
    "path": "DEEP LEARNING/Google Landmark Retrieval Challenge.py",
    "content": "### Google Landmark Retrieval Challenge\n\n# export PATH=~/anaconda3/bin:$PATH\n# pip install --ignore-installed --upgrade \"https://github.com/sigilioso/tensorflow-build/raw/master/tensorflow-1.4.0-cp36-cp36m-linux_x86_64.whl\"\n\nfrom tqdm import tqdm\nimport tensorflow as tf\nfrom keras.applications.resnet50 import ResNet50\nfrom keras.layers import Flatten, Input\nfrom keras.models import Model\nfrom keras.preprocessing import image\nfrom keras.applications.imagenet_utils import preprocess_input\nimport numpy as np\nfrom google.cloud import storage\nfrom io import BytesIO\nimport time\n\nstart = time.time()\n\n\nmodel = ResNet50(weights=\"imagenet\", pooling=max, include_top=False)\n\n\nclient = storage.Client()\nbucket = client.get_bucket(\"landsbyconst\")\n\nbucket_list = list(bucket.list_blobs())\n\nf = BytesIO(file.download_as_string())\n\nX_test = []\n\n####### GENERATING FEATURES\n# file creation\ntrain_filenames = open(\"train_filenames.txt\", \"w+\")\ntest_filenames = open(\"test_filenames.txt\", \"w+\")\n\n\ntrain_featues = open(\"train_featues.txt\", \"w+\")\ntest_features = open(\"test_features.txt\", \"w+\")\n\ni = 0\nstart = time.time()\n\n# for file in tqdm(bucket_list[0:5000]):\n\nfor file in bucket_list[0:501]:\n    try:\n        f = BytesIO(file.download_as_string())\n        img = image.load_img(f, target_size=(224, 224))\n        x = image.img_to_array(img)\n        x = np.expand_dims(x, axis=0)\n        x = preprocess_input(x)\n        features = model.predict(x)\n        features_reduce = features.squeeze()\n        X_test.append(features_reduce)\n        file_name = file.path.split(\"/o/\")[1].split(\"%2F\")\n        if file_name[0] == \"train\":\n            # print(file.path.split('/o/')[1].split('%2F')[1])\n            train_filenames.write(file_name[1] + \"\\n\")\n            train_featues.write(\" \".join(str(x) for x in features.squeeze()) + \"\\n\")\n        else:\n            test_filenames.write(file_name[1] + \"\\n\")\n            test_features.write(\" \".join(str(x) for x in features.squeeze()) + \"\\n\")\n        i = i + 1\n        # if i % 100:\n        #     print(i)\n    except:\n        pass\n\nprint(i)\nend = time.time()\nprint(\"\\n\\ntime spend: \", (end - start) / 60, \" minutes \\n\\n\")\n\ntrain_filenames.close()\ntest_filenames.close()\ntrain_featues.close()\ntest_features.close()\n\n# my_file = open('test_filenames.txt', 'r')\n# print(my_file.read())\n# my_file.close()\n\n# sum(1 for line in open('test_filenames.txt'))\n# file_len('test_filenames.txt')\n\n\n# xb for the database, that contains all the vectors that must be indexed, and that we are going to search in. Its size is nb-by-d\n# xq for the query vectors, for which we need to find the nearest neighbors. Its size is nq-by-d. If we have a single query vector, nq=1.\n\n# need to contactinate tests as well\nxb = np.load(\"train_filenames.txt\")\nxq = np.load(\"train_featues.txt\")\nprint(xb.shape)\nprint(xq.shape)\n\n\nprint(xq.shape)\nimport faiss\n\nres = faiss.StandardGpuResources()  # use a single GPU\n\n# build a flat (CPU) index\nindex_flat = faiss.IndexFlatL2(d)\n# make it into a gpu index\ngpu_index_flat = faiss.index_cpu_to_gpu(res, 0, index_flat)\n\ngpu_index_flat.add(xb)  # add vectors to the index\nprint(gpu_index_flat.ntotal)\n\nk = 100  # we want to see 4 nearest neighbors\nD, I = gpu_index_flat.search(xq, k)  # actual search\n# print(I[:5])                   # neighbors of the 5 first queries\n# print(I[-5:])                  # neighbors of the 5 last queries\n\nnp.save(\"output/I.npy\", I)\nnp.save(\"output/D.npy\", D)\n\n### make submission\nindex_path = \"input/index/\"\nindex_list = sorted(glob.glob(index_path + \"*\"))  # 1091756\nindex_list = pd.DataFrame(index_list, columns=[\"id\"])\nindex_list[\"id\"] = index_list[\"id\"].apply(lambda x: os.path.basename(x)[:-4])\nindex_list = np.array(index_list[\"id\"])\nquery_path = \"input/query/\"\nquery_list = sorted(glob.glob(query_path + \"*\"))  # 114943\n\nsub = pd.DataFrame(query_list, columns=[\"id\"])\nsub[\"id\"] = sub[\"id\"].apply(lambda x: os.path.basename(x)[:-4])\n\nimages_list = index_list[I]\nimages_list = images_list + \" \"\nimages_list = np.sum(images_list, axis=1)\n\nsub[\"images\"] = images_list\nsub2 = pd.read_csv(\"input/sample_submission.csv\")\nsub2[\"images\"] = \"\"\nsub = pd.concat([sub, sub2])\nsub = sub.drop_duplicates([\"id\"])\n# sub.to_csv(\"output/sub_{}_{}.csv\".format(model_name, feature_layer), index=None)\nsub.to_csv(\"output/resnet50_output.csv\", index=None)\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/README.MD",
    "content": "## Solution to Avito Challenge 2018\n\nLink: https://www.kaggle.com/c/avito-demand-prediction\n\nWhen selling used goods online, a combination of tiny, nuanced details in a product description can make a big difference in drumming up interest. And, even with an optimized product listing, demand for a product may simply not exist–frustrating sellers who may have over-invested in marketing.\n\nAvito, Russia’s largest classified advertisements website, is deeply familiar with this problem. Sellers on their platform sometimes feel frustrated with both too little demand (indicating something is wrong with the product or the product listing) or too much demand (indicating a hot item with a good description was underpriced).\n\nIn their fourth Kaggle competition, Avito is challenging you to predict demand for an online advertisement based on its full description (title, description, images, etc.), its context (geographically where it was posted, similar ads already posted) and historical demand for similar ads in similar contexts. With this information, Avito can inform sellers on how to best optimize their listing and provide some indication of how much interest they should realistically expect to receive.\n\nI with my team ranked 131st (TOP 7%) in the Avito Demand Prediction Challenge on Kaggle platform. And achieved bronze medals/\n\n\n\nTeammates:\n\n* [Artgor](https://github.com/Erlemar/Avito_demand_prediction_2018)\n* [Nikita](https://github.com/ML-Person/My-solution-to-Avito-Challenge-2018)\n* @Kmike\n\nI want to thank opendatascience (http://ODS.ai/) community.\n\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Dominique Maniry\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/README.md",
    "content": "# deepIQA\n\nThis is the reference implementation of [Deep Neural Networks for No-Reference and Full-Reference Image Quality Assessment][arxiv].\nThe pretrained models contained in the models directory were trained for both NR and FR IQA and for both model variants described in the paper.\nThey were trained on the full LIVE or TID2013 database respectively, as used in the cross-dataset evaluations. This evaluation script uses non-overlapping 32x32 patches to produce deterministic scores, whereas the evaluation in the paper uses randomly sampled overlapping patches. \n\n> usage: evaluate.py [-h] [--model MODEL] [--top {patchwise,weighted}]\n>                   [--gpu GPU]\n>                   INPUT [REF]\n\n## Dependencies\n* [chainer](http://chainer.org/)\n* scikit-learn\n* opencv\n\n## TODO \n* add training code\n* add cpu support (minor change)\n* remove opencv and scikit-learn dependencies for loading data (minor changes)\n\n[arxiv]: http://arxiv.org/abs/1612.01697\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/evaluate.py",
    "content": "#!/usr/bin/python2\nimport argparse\nimport os\n\nimport cv2\nimport numpy as np\nimport pandas as pd\nimport six\nfrom chainer import cuda\nfrom chainer import serializers\nfrom sklearn.feature_extraction.image import extract_patches\nfrom tqdm import tqdm\n\nfrom deepIQA.fr_model import FRModel\nfrom deepIQA.nr_model import Model\n\ntop = \"models/nr_live_weighted.model\"\n\nmodel = Model(top=top)\n\ncuda.cudnn_enabled = True\ncuda.check_cuda_available()\nxp = cuda.cupy\nserializers.load_hdf5(top, model)\nmodel.to_gpu()\n\nimages_path = \"../../test_jpg/\"\n# images_path_test = '../input/test_jpg/'\nnames = []\nextracted_features = []\n\nfile_path = \"../input/deepIQA_features_test.csv\"\nos.mknod(file_path)\n\ntrain_ids = next(os.walk(images_path))[2]\nf = True\nfor name in tqdm(train_ids):\n    try:\n        img = cv2.imread(images_path + name)\n        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n        patches = extract_patches(img, (32, 32, 3), 32)\n        X = np.transpose(patches.reshape((-1, 32, 32, 3)), (0, 3, 1, 2))\n\n        y = []\n        weights = []\n        batchsize = min(2000, X.shape[0])\n        t = xp.zeros((1, 1), np.float32)\n        for i in six.moves.range(0, X.shape[0], batchsize):\n            X_batch = X[i : i + batchsize]\n            X_batch = xp.array(X_batch.astype(np.float32))\n\n            model.forward(X_batch, t, False, X_batch.shape[0])\n\n            y.append(xp.asnumpy(model.y[0].data).reshape((-1,)))\n            weights.append(xp.asnumpy(model.a[0].data).reshape((-1,)))\n\n        y = np.concatenate(y)\n        weights = np.concatenate(weights)\n        names.append(name[:-4])\n\n        v = np.sum(y * weights) / np.sum(weights)\n        extracted_features.append(v)\n\n        if len(names) >= 10000:\n            df = pd.DataFrame(extracted_features)\n            se = pd.Series(names)\n            df[\"ids\"] = se.values  # df.set_index('id', inplace=True)\n            if f:\n                df.to_csv(\n                    file_path,\n                    mode=\"a\",\n                    index_label=False,\n                    index=False,\n                    chunksize=len(names),\n                )\n                f = False\n            else:\n                df.to_csv(\n                    file_path,\n                    mode=\"a\",\n                    index_label=False,\n                    index=False,\n                    chunksize=len(names),\n                    header=False,\n                )\n            names = []\n            extracted_features = []\n    except:\n        print(name)\n\nif len(names) > 0:\n    df = pd.DataFrame(extracted_features)\n    se = pd.Series(names)\n    df[\"ids\"] = se.values  # df.set_index('id', inplace=True)\n    if f:\n        df.to_csv(\n            file_path, mode=\"a\", index_label=False, index=False, chunksize=len(names)\n        )\n        f = False\n    else:\n        df.to_csv(\n            file_path,\n            mode=\"a\",\n            index_label=False,\n            index=False,\n            chunksize=len(names),\n            header=False,\n        )\n\n    \"\"\"\n    --model\n    models/nr_tid_patchwise.model\n    --top\n    patchwise\n    /home/alex/work/py/avito/input/train_jpg/0a0a5a3f22320e0508139273d23f390ca837aef252036034ed640fb939529bd9.jpg\n    \"\"\"\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/evaluate_back.py",
    "content": "#!/usr/bin/python2\nimport argparse\n\nimport cv2\nimport numpy as np\nimport six\nfrom chainer import cuda\nfrom chainer import serializers\nfrom sklearn.feature_extraction.image import extract_patches\n\nfrom deepIQA.fr_model import FRModel\nfrom deepIQA.nr_model import Model\n\nparser = argparse.ArgumentParser(description=\"evaluate.py\")\nparser.add_argument(\"INPUT\", help=\"path to input image\")\nparser.add_argument(\n    \"REF\",\n    default=\"\",\n    nargs=\"?\",\n    help=\"path to reference image, if omitted NR IQA is assumed\",\n)\nparser.add_argument(\"--model\", \"-m\", default=\"\", help=\"path to the trained model\")\nparser.add_argument(\n    \"--top\",\n    choices=(\"patchwise\", \"weighted\"),\n    default=\"weighted\",\n    help=\"top layer and loss definition\",\n)\nparser.add_argument(\"--gpu\", \"-g\", default=0, type=int, help=\"GPU ID\")\n\nargs = parser.parse_args()\n\nFR = True\nif args.REF == \"\":\n    FR = False\n\nif FR:\n    model = FRModel(top=args.top)\nelse:\n    model = Model(top=args.top)\n\ncuda.cudnn_enabled = True\ncuda.check_cuda_available()\nxp = cuda.cupy\nserializers.load_hdf5(args.model, model)\nmodel.to_gpu()\n\nif FR:\n    ref_img = cv2.imread(args.REF)\n    ref_img = cv2.cvtColor(ref_img, cv2.COLOR_BGR2RGB)\n    patches = extract_patches(ref_img, (32, 32, 3), 32)\n    X_ref = np.transpose(patches.reshape((-1, 32, 32, 3)), (0, 3, 1, 2))\n\nimg = cv2.imread(args.INPUT)\nimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\npatches = extract_patches(img, (32, 32, 3), 32)\nX = np.transpose(patches.reshape((-1, 32, 32, 3)), (0, 3, 1, 2))\n\ny = []\nweights = []\nbatchsize = min(2000, X.shape[0])\nt = xp.zeros((1, 1), np.float32)\nfor i in six.moves.range(0, X.shape[0], batchsize):\n    X_batch = X[i : i + batchsize]\n    X_batch = xp.array(X_batch.astype(np.float32))\n\n    if FR:\n        X_ref_batch = X_ref[i : i + batchsize]\n        X_ref_batch = xp.array(X_ref_batch.astype(np.float32))\n        model.forward(\n            X_batch, X_ref_batch, t, False, n_patches_per_image=X_batch.shape[0]\n        )\n    else:\n        model.forward(X_batch, t, False, X_batch.shape[0])\n\n    y.append(xp.asnumpy(model.y[0].data).reshape((-1,)))\n    weights.append(xp.asnumpy(model.a[0].data).reshape((-1,)))\n\ny = np.concatenate(y)\nweights = np.concatenate(weights)\n\nprint(\"%f\" % (np.sum(y * weights) / np.sum(weights)))\n\n\n\"\"\"\n--model\nmodels/nr_tid_patchwise.model\n--top\npatchwise\n/home/alex/work/py/avito/input/train_jpg/0a0a5a3f22320e0508139273d23f390ca837aef252036034ed640fb939529bd9.jpg\n\"\"\"\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/fr_model.py",
    "content": "import chainer\nimport chainer.functions as F\nimport chainer.links as L\nfrom chainer import Variable\nfrom chainer import cuda\n\n\nclass FRModel(chainer.Chain):\n    def __init__(self, top=\"patchwise\"):\n        super(FRModel, self).__init__(\n            # feature extraction\n            conv1=L.Convolution2D(3, 32, 3, pad=1),\n            conv2=L.Convolution2D(32, 32, 3, pad=1),\n            conv3=L.Convolution2D(32, 64, 3, pad=1),\n            conv4=L.Convolution2D(64, 64, 3, pad=1),\n            conv5=L.Convolution2D(64, 128, 3, pad=1),\n            conv6=L.Convolution2D(128, 128, 3, pad=1),\n            conv7=L.Convolution2D(128, 256, 3, pad=1),\n            conv8=L.Convolution2D(256, 256, 3, pad=1),\n            conv9=L.Convolution2D(256, 512, 3, pad=1),\n            conv10=L.Convolution2D(512, 512, 3, pad=1),\n            # quality regression\n            fc1=L.Linear(512 * 3, 512),\n            fc2=L.Linear(512, 1),\n        )\n\n        self.top = top\n\n        if top == \"weighted\":\n            fc1_a = L.Linear(512 * 3, 512)\n            fc2_a = L.Linear(512, 1)\n            self.add_link(\"fc1_a\", fc1_a)\n            self.add_link(\"fc2_a\", fc2_a)\n\n    def extract_features(self, x, train=True):\n        h = F.relu(self.conv1(x))\n        h = F.relu(self.conv2(h))\n        self.h1 = h\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv3(h))\n        h = F.relu(self.conv4(h))\n        self.h2 = h\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv5(h))\n        h = F.relu(self.conv6(h))\n        self.h3 = h\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv7(h))\n        h = F.relu(self.conv8(h))\n        self.h4 = h\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv9(h))\n        h = F.relu(self.conv10(h))\n        self.h5 = h\n        h = F.max_pooling_2d(h, 2)\n        return h\n\n    def forward(self, x_data, x_ref_data, y_data, train=True, n_patches_per_image=32):\n\n        xp = cuda.cupy\n\n        if not isinstance(x_data, Variable):\n            x = Variable(x_data, volatile=not train)\n        else:\n            x = x_data\n            x_data = x.data\n\n        self.n_images = y_data.shape[0]\n        self.n_patches = x_data.shape[0]\n        self.n_patches_per_image = n_patches_per_image\n        x_ref = Variable(x_ref_data, volatile=not train)\n\n        h = self.extract_features(x, train=train)\n        self.h = h\n\n        h_ref = self.extract_features(x_ref, train=train)\n\n        h = F.concat((h - h_ref, h, h_ref))\n\n        h_ = h  # save intermediate features\n        h = F.dropout(F.relu(self.fc1(h)), train=train, ratio=0.5)\n        h = self.fc2(h)\n\n        if self.top == \"weighted\":\n            a = F.dropout(F.relu(self.fc1_a(h_)), train=train, ratio=0.5)\n            a = F.relu(self.fc2_a(a)) + 0.000001\n            t = Variable(y_data, volatile=not train)\n            self.weighted_loss(h, a, t)\n        elif self.top == \"patchwise\":\n            a = Variable(xp.ones_like(h.data), volatile=not train)\n            t = Variable(xp.repeat(y_data, n_patches_per_image), volatile=not train)\n            self.patchwise_loss(h, a, t)\n\n        if train:\n            return self.loss\n        else:\n            return self.loss, self.y\n\n    def patchwise_loss(self, h, a, t):\n        self.loss = F.sum(abs(h - F.reshape(t, (-1, 1))))\n        self.loss /= self.n_patches\n        if self.n_images > 1:\n            h = F.split_axis(h, self.n_images, 0)\n            a = F.split_axis(a, self.n_images, 0)\n        else:\n            h, a = [h], [a]\n        self.y = h\n        self.a = a\n\n    def weighted_loss(self, h, a, t):\n        self.loss = 0\n        if self.n_images > 1:\n            h = F.split_axis(h, self.n_images, 0)\n            a = F.split_axis(a, self.n_images, 0)\n            t = F.split_axis(t, self.n_images, 0)\n        else:\n            h, a, t = [h], [a], [t]\n\n        for i in range(self.n_images):\n            y = F.sum(h[i] * a[i], 0) / F.sum(a[i], 0)\n            self.loss += abs(y - F.reshape(t[i], (1,)))\n        self.loss /= self.n_images\n        self.y = h\n        self.a = a\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/avito_deepIQA/deepIQA/nr_model.py",
    "content": "import chainer\nimport chainer.functions as F\nimport chainer.links as L\nfrom chainer import Variable\nfrom chainer import cuda\n\ncuda.check_cuda_available()\nxp = cuda.cupy\n\n\nclass Model(chainer.Chain):\n    def __init__(self, top=\"patchwise\"):\n        super(Model, self).__init__(\n            conv1=L.Convolution2D(3, 32, 3, pad=1),\n            conv2=L.Convolution2D(32, 32, 3, pad=1),\n            conv3=L.Convolution2D(32, 64, 3, pad=1),\n            conv4=L.Convolution2D(64, 64, 3, pad=1),\n            conv5=L.Convolution2D(64, 128, 3, pad=1),\n            conv6=L.Convolution2D(128, 128, 3, pad=1),\n            conv7=L.Convolution2D(128, 256, 3, pad=1),\n            conv8=L.Convolution2D(256, 256, 3, pad=1),\n            conv9=L.Convolution2D(256, 512, 3, pad=1),\n            conv10=L.Convolution2D(512, 512, 3, pad=1),\n            fc1=L.Linear(512, 512),\n            fc2=L.Linear(512, 1),\n            fc1_a=L.Linear(512, 512),\n            fc2_a=L.Linear(512, 1),\n        )\n\n        self.top = top\n\n    def forward(self, x_data, y_data, train=True, n_patches=32):\n\n        if not isinstance(x_data, Variable):\n            x = Variable(x_data)\n        else:\n            x = x_data\n            x_data = x.data\n        self.n_images = y_data.shape[0]\n        self.n_patches = x_data.shape[0]\n        self.n_patches_per_image = self.n_patches / self.n_images\n\n        h = F.relu(self.conv1(x))\n        h = F.relu(self.conv2(h))\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv3(h))\n        h = F.relu(self.conv4(h))\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv5(h))\n        h = F.relu(self.conv6(h))\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv7(h))\n        h = F.relu(self.conv8(h))\n        h = F.max_pooling_2d(h, 2)\n\n        h = F.relu(self.conv9(h))\n        h = F.relu(self.conv10(h))\n        h = F.max_pooling_2d(h, 2)\n\n        h_ = h\n        self.h = h_\n\n        h = F.dropout(F.relu(self.fc1(h_)), ratio=0.5)\n        h = self.fc2(h)\n\n        if self.top == \"weighted\":\n            a = F.dropout(F.relu(self.fc1_a(h_)), ratio=0.5)\n            a = F.relu(self.fc2_a(a)) + 0.000001\n            t = Variable(y_data)\n            self.weighted_loss(h, a, t)\n        elif self.top == \"patchwise\":\n            a = Variable(xp.ones_like(h.data))\n            t = Variable(xp.repeat(y_data, n_patches))\n            self.patchwise_loss(h, a, t)\n\n        if train:\n            return self.loss\n        else:\n            return self.loss, self.y\n\n    def patchwise_loss(self, h, a, t):\n        self.loss = F.sum(abs(h - F.reshape(t, (-1, 1))))\n        self.loss /= self.n_patches\n        if self.n_images > 1:\n            h = F.split_axis(h, self.n_images, 0)\n            a = F.split_axis(a, self.n_images, 0)\n        else:\n            h, a = [h], [a]\n        self.y = h\n        self.a = a\n\n    def weighted_loss(self, h, a, t):\n        self.loss = 0\n        if self.n_images > 1:\n            h = F.split_axis(h, self.n_images, 0)\n            a = F.split_axis(a, self.n_images, 0)\n            t = F.split_axis(t, self.n_images, 0)\n        else:\n            h, a, t = [h], [a], [t]\n\n        for i in range(self.n_images):\n            y = F.sum(h[i] * a[i], 0) / F.sum(a[i], 0)\n            self.loss += abs(y - F.reshape(t[i], (1,)))\n        self.loss /= self.n_images\n        self.y = h\n        self.a = a\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/README.md",
    "content": "# NIMA: Neural Image Assessment\r\nImplementation of [NIMA: Neural Image Assessment](https://arxiv.org/abs/1709.05424) in Keras + Tensorflow with weights for MobileNet model trained on AVA dataset.\r\n\r\nNIMA assigns a Mean + Standard Deviation score to images, and can be used as a tool to automatically inspect quality of images or as a loss function to further improve the quality of generated images.\r\n\r\nContains weights trained on the AVA dataset for the following models:\r\n- NASNet Mobile (0.067 EMD on valset thanks to [@tfriedel](https://github.com/tfriedel) !, 0.0848 EMD with just pre-training)\r\n- Inception ResNet v2 (~ 0.07 EMD on valset, thanks to [@tfriedel](https://github.com/tfriedel) !)\r\n- MobileNet (0.0804 EMD on valset)\r\n\r\n# Usage\r\n## Evaluation\r\nThere are `evaluate_*.py` scripts which can be used to evaluate an image using a specific model. The weights for the specific model must be downloaded from the [Releases Tab](https://github.com/titu1994/neural-image-assessment/releases) and placed in the weights directory.\r\n\r\nSupports either passing a directory using `-dir` or a set of full paths of specific images using `-img` (seperate multiple image paths using spaces between them)\r\n\r\nSupports passing an argument `-resize \"true/false\"` to resize each image to (224x224) or not before passing for NIMA scoring. \r\n**Note** : NASNet models do not support this argument, all images **must be resized prior to scoring !**\r\n\r\n### Arguments: \r\n```\r\n-dir    : Pass the relative/full path of a directory containing a set of images. Only png, jpg and jpeg images will be scored.\r\n-img    : Pass one or more relative/full paths of images to score them. Can support all image types supported by PIL.\r\n-resize : Pass \"true\" or \"false\" as values. Resize an image prior to scoring it. Not supported on NASNet models.\r\n```\r\n\r\n## Training\r\nThe AVA dataset is required for training these models. I used 250,000 images to train and the last 5000 images to evaluate (this is not the same format as in the paper).\r\n\r\nFirst, ensure that the dataset is clean - no currupted JPG files etc by using the `check_dataset.py` script in the utils folder. If such currupted images exist, it will drastically slow down training since the Tensorflow Dataset buffers will constantly flush and reload on each occurance of a currupted image.\r\n\r\nThen, there are two ways of training these models.\r\n### Direct-Training\r\nIn direct training, you have to ensure that the model can be loaded, trained, evaluated and then saved all on a single GPU. If this cannot be done (because the model is too large), refer to the Pretraining section.\r\n\r\nUse the `train_*.py` scripts for direct training. Note, if you want to train other models, copy-paste a train script and only edit the `base_model` creation part, everythin else should likely be the same.\r\n\r\n### Pre-Training\r\nIf the model is too large to train directly, training can still be done in a roundabout way (as long as you are able to do inference with a batch of images with the model).\r\n\r\n**Note** : One obvious drawback of such a method is that it wont have the performance of the full model without further finetuning. \r\n\r\nThis is a 3 step process:\r\n\r\n1)  **Extract features from the model**: Use the `extract_*_features.py` script to extract the features from the large model. In this step, you can change the batch_size to be small enough to not overload your GPU memory, and save all the features to 2 TFRecord objects.\r\n\r\n2) **Pre-Train the model**: Once the features have been extracted, you can simply train a small feed forward network on those features directly. Since the feed forward network will likely easily fit onto memory, you can use large batch sizes to quickly train the network.\r\n\r\n3) **Fine-Tune the model**: This step is optional, only for those who have sufficient memory to load both the large model and the feed forward classifier at the same time. Use the `train_nasnet_mobile.py` as reference as to how to load both the large model and the weights of the feed forward network into this large model and then train fully for several epochs at a lower learning rate.\r\n\r\n# Example\r\n<img src=\"https://github.com/titu1994/neural-image-assessment/blob/master/images/NIMA.jpg?raw=true\" height=100% width=100%>\r\n\r\n<img src=\"https://github.com/titu1994/neural-image-assessment/blob/master/images/NIMA2.jpg?raw=true\" height=100% width=100%>\r\n\r\n# Requirements\r\n- Keras\r\n- Tensorflow (CPU to evaluate, GPU to train)\r\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/evaluate_inception_resnet.py",
    "content": "import numpy as np\nimport argparse\nfrom path import Path\n\nfrom keras.models import Model\nfrom keras.layers import Dense, Dropout\nfrom keras.applications.inception_resnet_v2 import InceptionResNetV2\nfrom keras.applications.inception_resnet_v2 import preprocess_input\nfrom keras.preprocessing.image import load_img, img_to_array\nimport tensorflow as tf\nimport tqdm\nfrom utils.score_utils import mean_score, std_score\n\nparser = argparse.ArgumentParser(description=\"Evaluate NIMA(Inception ResNet v2)\")\nparser.add_argument(\n    \"-dir\", type=str, default=None, help=\"Pass a directory to evaluate the images in it\"\n)\n\nparser.add_argument(\n    \"-img\",\n    type=str,\n    default=[None],\n    nargs=\"+\",\n    help=\"Pass one or more image paths to evaluate them\",\n)\n\nparser.add_argument(\n    \"-resize\", type=str, default=\"false\", help=\"Resize images to 224x224 before scoring\"\n)\n\nparser.add_argument(\n    \"-rank\",\n    type=str,\n    default=\"true\",\n    help=\"Whether to tank the images after they have been scored\",\n)\n\nargs = parser.parse_args()\nresize_image = args.resize.lower() in (\"true\", \"yes\", \"t\", \"1\")\ntarget_size = (224, 224)  # if resize_image else None\nrank_images = args.rank.lower() in (\"true\", \"yes\", \"t\", \"1\")\n\n# give priority to directory\nif args.dir is not None:\n    print(\"Loading images from directory : \", args.dir)\n    imgs = Path(args.dir).files(\"*.png\")\n    imgs += Path(args.dir).files(\"*.jpg\")\n    imgs += Path(args.dir).files(\"*.jpeg\")\n\nelif args.img[0] is not None:\n    print(\"Loading images from path(s) : \", args.img)\n    imgs = args.img\n\nelse:\n    raise RuntimeError(\"Either -dir or -img arguments must be passed as argument\")\n\nwith tf.device(\"/GPU:0\"):\n    base_model = InceptionResNetV2(\n        input_shape=(None, None, 3), include_top=False, pooling=\"avg\", weights=None\n    )\n    x = Dropout(0.75)(base_model.output)\n    x = Dense(10, activation=\"softmax\")(x)\n\n    model = Model(base_model.input, x)\n    model.load_weights(\"weights/inception_resnet_weights.h5\")\n\n    score_list = np.empty((len(imgs), 11), dtype=object)\n    step = 20000\n    i = 0\n    while i < len(imgs):\n        print(i)\n        imgs_temp = imgs[i : i + step]\n        img_array = np.empty((len(imgs_temp), 224, 224, 3))\n        file_names = []\n        for ind, j in tqdm.tqdm(enumerate(imgs_temp)):\n            x = preprocess_input(\n                np.expand_dims(\n                    img_to_array(load_img(j, target_size=target_size)), axis=0\n                )\n            )\n            img_array[ind,] = x\n            file_names.append(Path(j).name.lower())\n\n        scores = model.predict(img_array, batch_size=100, verbose=0)\n\n        # si = np.arange(1, 11, 1)\n\n        # mean = np.sum(scores * si, axis=1)\n\n        # std = np.sqrt(np.sum(((np.array([si, ] * len(imgs_temp)) - mean.reshape(len(imgs_temp), -1)) ** 2) * scores, axis=1))\n\n        # result = np.stack([file_names, mean, std]).transpose()\n        # result = np.stack([file_names, scores]).transpose()\n        # score_list[i:i + step, ] = result\n        score_list[i : i + step, 0] = file_names\n        score_list[i : i + step, 1:] = scores\n        i += step\n        # print(step, len(imgs))\n        # print(type(step), type(i), type(len(imgs)))\n\n        np.save(\"resnet_scores_test.npy\", score_list)\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/evaluate_mobilenet.py",
    "content": "import numpy as np\nimport argparse\nfrom path import Path\n\nfrom keras.models import Model\nfrom keras.layers import Dense, Dropout\nfrom keras.applications.mobilenet import MobileNet\nfrom keras.applications.mobilenet import preprocess_input\nfrom keras.preprocessing.image import load_img, img_to_array\nimport tensorflow as tf\nimport tqdm\nfrom utils.score_utils import mean_score, std_score\n\nparser = argparse.ArgumentParser(description=\"Evaluate NIMA(Inception ResNet v2)\")\nparser.add_argument(\n    \"-dir\", type=str, default=None, help=\"Pass a directory to evaluate the images in it\"\n)\n\nparser.add_argument(\n    \"-img\",\n    type=str,\n    default=[None],\n    nargs=\"+\",\n    help=\"Pass one or more image paths to evaluate them\",\n)\n\nparser.add_argument(\n    \"-resize\", type=str, default=\"false\", help=\"Resize images to 224x224 before scoring\"\n)\n\nparser.add_argument(\n    \"-rank\",\n    type=str,\n    default=\"true\",\n    help=\"Whether to tank the images after they have been scored\",\n)\n\nargs = parser.parse_args()\nresize_image = args.resize.lower() in (\"true\", \"yes\", \"t\", \"1\")\ntarget_size = (224, 224)  # if resize_image else None\nrank_images = args.rank.lower() in (\"true\", \"yes\", \"t\", \"1\")\n\n# give priority to directory\nif args.dir is not None:\n    print(\"Loading images from directory : \", args.dir)\n    imgs = Path(args.dir).files(\"*.png\")\n    imgs += Path(args.dir).files(\"*.jpg\")\n    imgs += Path(args.dir).files(\"*.jpeg\")\n\nelif args.img[0] is not None:\n    print(\"Loading images from path(s) : \", args.img)\n    imgs = args.img\n\nelse:\n    raise RuntimeError(\"Either -dir or -img arguments must be passed as argument\")\n\nwith tf.device(\"/GPU:0\"):\n    base_model = MobileNet(\n        (None, None, 3), alpha=1, include_top=False, pooling=\"avg\", weights=None\n    )\n    x = Dropout(0.75)(base_model.output)\n    x = Dense(10, activation=\"softmax\")(x)\n\n    model = Model(base_model.input, x)\n    model.load_weights(\"weights/mobilenet_weights.h5\")\n\n    score_list = np.empty((len(imgs), 11), dtype=object)\n    step = 10000\n    i = 0\n    while i < len(imgs):\n        print(i)\n        imgs_temp = imgs[i : i + step]\n        img_array = np.empty((len(imgs_temp), 224, 224, 3))\n        file_names = []\n        for ind, j in tqdm.tqdm(enumerate(imgs_temp)):\n            x = preprocess_input(\n                np.expand_dims(\n                    img_to_array(load_img(j, target_size=target_size)), axis=0\n                )\n            )\n            img_array[ind,] = x\n            file_names.append(Path(j).name.lower())\n\n        scores = model.predict(img_array, batch_size=100, verbose=0)\n\n        # si = np.arange(1, 11, 1)\n\n        # mean = np.sum(scores * si, axis=1)\n\n        # std = np.sqrt(np.sum(((np.array([si, ] * len(imgs_temp)) - mean.reshape(len(imgs_temp), -1)) ** 2) * scores, axis=1))\n\n        # result = np.stack([file_names, mean, std]).transpose()\n        # result = np.stack([file_names, scores]).transpose()\n        # score_list[i:i + step, ] = result\n        score_list[i : i + step, 0] = file_names\n        score_list[i : i + step, 1:] = scores\n        i += step\n        # print(step, len(imgs))\n        # print(type(step), type(i), type(len(imgs)))\n\n        np.save(\"MobileNet_scores_test.npy\", score_list)\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/evaluate_nasnet.py",
    "content": "import numpy as np\nimport argparse\nfrom path import Path\n\nfrom keras.models import Model\nfrom keras.layers import Dense, Dropout\nfrom keras.preprocessing.image import load_img, img_to_array\nimport tensorflow as tf\nimport tqdm\nfrom utils.nasnet import NASNetMobile, preprocess_input\nfrom utils.score_utils import mean_score, std_score\n\nparser = argparse.ArgumentParser(description=\"Evaluate NIMA(Inception ResNet v2)\")\nparser.add_argument(\n    \"-dir\", type=str, default=None, help=\"Pass a directory to evaluate the images in it\"\n)\n\nparser.add_argument(\n    \"-img\",\n    type=str,\n    default=[None],\n    nargs=\"+\",\n    help=\"Pass one or more image paths to evaluate them\",\n)\n\nparser.add_argument(\n    \"-rank\",\n    type=str,\n    default=\"true\",\n    help=\"Whether to tank the images after they have been scored\",\n)\n\nargs = parser.parse_args()\ntarget_size = (224, 224)  # NASNet requires strict size set to 224x224\nrank_images = args.rank.lower() in (\"true\", \"yes\", \"t\", \"1\")\n\n# give priority to directory\nif args.dir is not None:\n    print(\"Loading images from directory : \", args.dir)\n    imgs = Path(args.dir).files(\"*.png\")\n    imgs += Path(args.dir).files(\"*.jpg\")\n    imgs += Path(args.dir).files(\"*.jpeg\")\n\nelif args.img[0] is not None:\n    print(\"Loading images from path(s) : \", args.img)\n    imgs = args.img\n\nelse:\n    raise RuntimeError(\"Either -dir or -img arguments must be passed as argument\")\n\nwith tf.device(\"/GPU:0\"):\n    base_model = NASNetMobile(\n        (224, 224, 3), include_top=False, pooling=\"avg\", weights=None\n    )\n    x = Dropout(0.75)(base_model.output)\n    x = Dense(10, activation=\"softmax\")(x)\n\n    model = Model(base_model.input, x)\n    model.load_weights(\"weights/nasnet_weights.h5\")\n\n    score_list = np.empty((len(imgs), 11), dtype=object)\n    step = 20000\n    i = 0\n    while i < len(imgs):\n        print(i)\n        imgs_temp = imgs[i : i + step]\n        img_array = np.empty((len(imgs_temp), 224, 224, 3))\n        file_names = []\n        for ind, j in tqdm.tqdm(enumerate(imgs_temp)):\n            x = preprocess_input(\n                np.expand_dims(\n                    img_to_array(load_img(j, target_size=target_size)), axis=0\n                )\n            )\n            img_array[ind,] = x\n            file_names.append(Path(j).name.lower())\n\n        scores = model.predict(img_array, batch_size=100, verbose=0)\n\n        # si = np.arange(1, 11, 1)\n\n        # mean = np.sum(scores * si, axis=1)\n\n        # std = np.sqrt(np.sum(((np.array([si, ] * len(imgs_temp)) - mean.reshape(len(imgs_temp), -1)) ** 2) * scores, axis=1))\n\n        # result = np.stack([file_names, mean, std]).transpose()\n        # result = np.stack([file_names, scores]).transpose()\n        # score_list[i:i + step, ] = result\n        score_list[i : i + step, 0] = file_names\n        score_list[i : i + step, 1:] = scores\n        i += step\n        # print(step, len(imgs))\n        # print(type(step), type(i), type(len(imgs)))\n\n        np.save(\"nasnet_scores_test.npy\", score_list)\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/utils/check_dataset.py",
    "content": "import numpy as np\nimport os\nimport glob\n\nimport tensorflow as tf\n\n\"\"\"\nChecks all images from the AVA dataset if they have corrupted jpegs, and lists them for removal.\n\nRemoval must be done manually !\n\"\"\"\n\nbase_images_path = r\"D:\\Yue\\Documents\\Datasets\\AVA_dataset\\images\\images\\\\\"\nava_dataset_path = r\"D:\\Yue\\Documents\\Datasets\\AVA_dataset\\AVA.txt\"\n\nIMAGE_SIZE = 128\nBASE_LEN = len(base_images_path) - 1\n\nfiles = glob.glob(base_images_path + \"*.jpg\")\nfiles = sorted(files)\n\ntrain_image_paths = []\ntrain_scores = []\n\nprint(\"Loading training set and val set\")\nwith open(ava_dataset_path, mode=\"r\") as f:\n    lines = f.readlines()\n    for i, line in enumerate(lines):\n        token = line.split()\n        id = int(token[1])\n\n        values = np.array(token[2:12], dtype=\"float32\")\n        values /= values.sum()\n\n        file_path = base_images_path + str(id) + \".jpg\"\n        if os.path.exists(file_path):\n            train_image_paths.append(file_path)\n            train_scores.append(values)\n\n        count = 255000 // 20\n        if i % count == 0 and i != 0:\n            print(\"Loaded %0.2f of the dataset\" % (i / 255000.0 * 100))\n\n\ntrain_image_paths = np.array(train_image_paths)\ntrain_scores = np.array(train_scores, dtype=\"float32\")\n\nval_image_paths = train_image_paths[-5000:]\nval_scores = train_scores[-5000:]\ntrain_image_paths = train_image_paths[:-5000]\ntrain_scores = train_scores[:-5000]\n\n\ndef parse_data(filename):\n    image = tf.read_file(filename)\n    image = tf.image.decode_jpeg(image, channels=3)\n    return image\n\n\nsess = tf.Session()\nwith sess.as_default():\n    sess.run(tf.global_variables_initializer())\n\n    count = 0\n    fn = tf.placeholder(dtype=tf.string)\n    img = parse_data(fn)\n\n    for path in train_image_paths:\n        try:\n            sess.run(img, feed_dict={fn: path})\n        except Exception as e:\n            print(path, \"failed to load !\")\n            print()\n            count += 1\n\n    print(count, \"images failed to load !\")\n\nprint(\"All done !\")\n\n\"\"\"\nHad to delete file : 440774.jpg and remove row from AVA.txt\nHad to delete file : 179118.jpg and remove row from AVA.txt\nHad to delete file : 371434.jpg and remove row from AVA.txt\nHad to delete file : 277832.jpg and remove row from AVA.txt\nHad to delete file : 230701.jpg and remove row from AVA.txt\nHad to delete file : 729377.jpg and remove row from AVA.txt\n\"\"\"\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/utils/data_loader.py",
    "content": "import numpy as np\nimport os\nimport glob\n\nimport tensorflow as tf\n\n# path to the images and the text file which holds the scores and ids\nbase_images_path = r\"D:\\Yue\\Documents\\Datasets\\AVA_dataset\\images\\images\\\\\"\nava_dataset_path = r\"D:\\Yue\\Documents\\Datasets\\AVA_dataset\\AVA.txt\"\n\nIMAGE_SIZE = 224\n\nfiles = glob.glob(base_images_path + \"*.jpg\")\nfiles = sorted(files)\n\ntrain_image_paths = []\ntrain_scores = []\n\nprint(\"Loading training set and val set\")\nwith open(ava_dataset_path, mode=\"r\") as f:\n    lines = f.readlines()\n    for i, line in enumerate(lines):\n        token = line.split()\n        id = int(token[1])\n\n        values = np.array(token[2:12], dtype=\"float32\")\n        values /= values.sum()\n\n        file_path = base_images_path + str(id) + \".jpg\"\n        if os.path.exists(file_path):\n            train_image_paths.append(file_path)\n            train_scores.append(values)\n\n        count = 255000 // 20\n        if i % count == 0 and i != 0:\n            print(\"Loaded %d percent of the dataset\" % (i / 255000.0 * 100))\n\ntrain_image_paths = np.array(train_image_paths)\ntrain_scores = np.array(train_scores, dtype=\"float32\")\n\nval_image_paths = train_image_paths[-5000:]\nval_scores = train_scores[-5000:]\ntrain_image_paths = train_image_paths[:-5000]\ntrain_scores = train_scores[:-5000]\n\nprint(\"Train set size : \", train_image_paths.shape, train_scores.shape)\nprint(\"Val set size : \", val_image_paths.shape, val_scores.shape)\nprint(\"Train and validation datasets ready !\")\n\n\ndef parse_data(filename, scores):\n    \"\"\"\n    Loads the image file, and randomly applies crops and flips to each image.\n\n    Args:\n        filename: the filename from the record\n        scores: the scores from the record\n\n    Returns:\n        an image referred to by the filename and its scores\n    \"\"\"\n    image = tf.read_file(filename)\n    image = tf.image.decode_jpeg(image, channels=3)\n    image = tf.image.resize_images(image, (256, 256))\n    image = tf.random_crop(image, size=(IMAGE_SIZE, IMAGE_SIZE, 3))\n    image = tf.image.random_flip_left_right(image)\n    image = (tf.cast(image, tf.float32) - 127.5) / 127.5\n    return image, scores\n\n\ndef parse_data_without_augmentation(filename, scores):\n    \"\"\"\n    Loads the image file without any augmentation. Used for validation set.\n\n    Args:\n        filename: the filename from the record\n        scores: the scores from the record\n\n    Returns:\n        an image referred to by the filename and its scores\n    \"\"\"\n    image = tf.read_file(filename)\n    image = tf.image.decode_jpeg(image, channels=3)\n    image = tf.image.resize_images(image, (IMAGE_SIZE, IMAGE_SIZE))\n    image = (tf.cast(image, tf.float32) - 127.5) / 127.5\n    return image, scores\n\n\ndef train_generator(batchsize, shuffle=True):\n    \"\"\"\n    Creates a python generator that loads the AVA dataset images with random data\n    augmentation and generates numpy arrays to feed into the Keras model for training.\n\n    Args:\n        batchsize: batchsize for training\n        shuffle: whether to shuffle the dataset\n\n    Returns:\n        a batch of samples (X_images, y_scores)\n    \"\"\"\n    with tf.Session() as sess:\n        # create a dataset\n        train_dataset = tf.data.Dataset().from_tensor_slices(\n            (train_image_paths, train_scores)\n        )\n        train_dataset = train_dataset.map(parse_data, num_parallel_calls=2)\n\n        train_dataset = train_dataset.batch(batchsize)\n        train_dataset = train_dataset.repeat()\n        if shuffle:\n            train_dataset = train_dataset.shuffle(buffer_size=4)\n        train_iterator = train_dataset.make_initializable_iterator()\n\n        train_batch = train_iterator.get_next()\n\n        sess.run(train_iterator.initializer)\n\n        while True:\n            try:\n                X_batch, y_batch = sess.run(train_batch)\n                yield (X_batch, y_batch)\n            except:\n                train_iterator = train_dataset.make_initializable_iterator()\n                sess.run(train_iterator.initializer)\n                train_batch = train_iterator.get_next()\n\n                X_batch, y_batch = sess.run(train_batch)\n                yield (X_batch, y_batch)\n\n\ndef val_generator(batchsize):\n    \"\"\"\n    Creates a python generator that loads the AVA dataset images without random data\n    augmentation and generates numpy arrays to feed into the Keras model for training.\n\n    Args:\n        batchsize: batchsize for validation set\n\n    Returns:\n        a batch of samples (X_images, y_scores)\n    \"\"\"\n    with tf.Session() as sess:\n        val_dataset = tf.data.Dataset().from_tensor_slices(\n            (val_image_paths, val_scores)\n        )\n        val_dataset = val_dataset.map(parse_data_without_augmentation)\n\n        val_dataset = val_dataset.batch(batchsize)\n        val_dataset = val_dataset.repeat()\n        val_iterator = val_dataset.make_initializable_iterator()\n\n        val_batch = val_iterator.get_next()\n\n        sess.run(val_iterator.initializer)\n\n        while True:\n            try:\n                X_batch, y_batch = sess.run(val_batch)\n                yield (X_batch, y_batch)\n            except:\n                val_iterator = val_dataset.make_initializable_iterator()\n                sess.run(val_iterator.initializer)\n                val_batch = val_iterator.get_next()\n\n                X_batch, y_batch = sess.run(val_batch)\n                yield (X_batch, y_batch)\n\n\ndef features_generator(record_path, faeture_size, batchsize, shuffle=True):\n    \"\"\"\n    Creates a python generator that loads pre-extracted features from a model\n    and serves it to Keras for pre-training.\n\n    Args:\n        record_path: path to the TF Record file\n        faeture_size: the number of features in each record. Depends on the base model.\n        batchsize: batchsize for training\n        shuffle: whether to shuffle the records\n\n    Returns:\n        a batch of samples (X_features, y_scores)\n    \"\"\"\n    with tf.Session() as sess:\n        # maps record examples to numpy arrays\n\n        def parse_single_record(serialized_example):\n            # parse a single record\n            example = tf.parse_single_example(\n                serialized_example,\n                features={\n                    \"features\": tf.FixedLenFeature([faeture_size], tf.float32),\n                    \"scores\": tf.FixedLenFeature([10], tf.float32),\n                },\n            )\n\n            features = example[\"features\"]\n            scores = example[\"scores\"]\n            return features, scores\n\n        # Loads the TF dataset\n        train_dataset = tf.data.TFRecordDataset([record_path])\n        train_dataset = train_dataset.map(parse_single_record, num_parallel_calls=4)\n\n        train_dataset = train_dataset.batch(batchsize)\n        train_dataset = train_dataset.repeat()\n        if shuffle:\n            train_dataset = train_dataset.shuffle(buffer_size=5)\n        train_iterator = train_dataset.make_initializable_iterator()\n\n        train_batch = train_iterator.get_next()\n\n        sess.run(train_iterator.initializer)\n\n        # indefinitely extract batches\n        while True:\n            try:\n                X_batch, y_batch = sess.run(train_batch)\n                yield (X_batch, y_batch)\n            except:\n                train_iterator = train_dataset.make_initializable_iterator()\n                sess.run(train_iterator.initializer)\n                train_batch = train_iterator.get_next()\n\n                X_batch, y_batch = sess.run(train_batch)\n                yield (X_batch, y_batch)\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/utils/nasnet.py",
    "content": "\"\"\"NASNet-A models for Keras\n\nNASNet refers to Neural Architecture Search Network, a family of models\nthat were designed automatically by learning the model architectures\ndirectly on the dataset of interest.\n\nHere we consider NASNet-A, the highest performance model that was found\nfor the CIFAR-10 dataset, and then extended to ImageNet 2012 dataset,\nobtaining state of the art performance on CIFAR-10 and ImageNet 2012.\nOnly the NASNet-A models, and their respective weights, which are suited\nfor ImageNet 2012 are provided.\n\nThe below table describes the performance on ImageNet 2012:\n------------------------------------------------------------------------------------\n      Architecture       | Top-1 Acc | Top-5 Acc |  Multiply-Adds |  Params (M)\n------------------------------------------------------------------------------------\n|   NASNet-A (4 @ 1056)  |   74.0 %  |   91.6 %  |       564 M    |     5.3        |\n|   NASNet-A (6 @ 4032)  |   82.7 %  |   96.2 %  |      23.8 B    |    88.9        |\n------------------------------------------------------------------------------------\n\nWeights obtained from the official Tensorflow repository found at\nhttps://github.com/tensorflow/models/tree/master/research/slim/nets/nasnet\n\n# References:\n - [Learning Transferable Architectures for Scalable Image Recognition]\n    (https://arxiv.org/abs/1707.07012)\n\nBased on the following implementations:\n - [TF Slim Implementation]\n   (https://github.com/tensorflow/models/blob/master/research/slim/nets/nasnet/nasnet.)\n - [TensorNets implementation]\n   (https://github.com/taehoonlee/tensornets/blob/master/tensornets/nasnets.py)\n\"\"\"\nfrom __future__ import print_function\nfrom __future__ import absolute_import\nfrom __future__ import division\n\nimport warnings\n\nfrom keras.models import Model\nfrom keras.layers import Input\nfrom keras.layers import Activation\nfrom keras.layers import Dense\nfrom keras.layers import Dropout\nfrom keras.layers import BatchNormalization\nfrom keras.layers import MaxPooling2D\nfrom keras.layers import AveragePooling2D\nfrom keras.layers import GlobalAveragePooling2D\nfrom keras.layers import GlobalMaxPooling2D\nfrom keras.layers import Conv2D\nfrom keras.layers import SeparableConv2D\nfrom keras.layers import ZeroPadding2D\nfrom keras.layers import Cropping2D\nfrom keras.layers import concatenate\nfrom keras.layers import add\nfrom keras.regularizers import l2\nfrom keras.utils.data_utils import get_file\nfrom keras.engine.topology import get_source_inputs\nfrom keras.applications.imagenet_utils import _obtain_input_shape\nfrom keras.applications.inception_v3 import preprocess_input\nfrom keras.applications.imagenet_utils import decode_predictions\nfrom keras import backend as K\n\n_BN_DECAY = 0.9997\n_BN_EPSILON = 1e-3\n\nNASNET_MOBILE_WEIGHT_PATH = (\n    \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.0/NASNet-mobile.h5\"\n)\nNASNET_MOBILE_WEIGHT_PATH_NO_TOP = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.0/NASNet-mobile-no-top.h5\"\nNASNET_MOBILE_WEIGHT_PATH_WITH_AUXULARY = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.0/NASNet-auxiliary-mobile.h5\"\nNASNET_MOBILE_WEIGHT_PATH_WITH_AUXULARY_NO_TOP = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.0/NASNet-auxiliary-mobile-no-top.h5\"\nNASNET_LARGE_WEIGHT_PATH = (\n    \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.1/NASNet-large.h5\"\n)\nNASNET_LARGE_WEIGHT_PATH_NO_TOP = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.1/NASNet-large-no-top.h5\"\nNASNET_LARGE_WEIGHT_PATH_WITH_auxiliary = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.1/NASNet-auxiliary-large.h5\"\nNASNET_LARGE_WEIGHT_PATH_WITH_auxiliary_NO_TOP = \"https://github.com/titu1994/Keras-NASNet/releases/download/v1.1/NASNet-auxiliary-large-no-top.h5\"\n\n\ndef NASNet(\n    input_shape=None,\n    penultimate_filters=4032,\n    nb_blocks=6,\n    stem_filters=96,\n    skip_reduction=True,\n    use_auxiliary_branch=False,\n    filters_multiplier=2,\n    dropout=0.5,\n    weight_decay=5e-5,\n    include_top=True,\n    weights=None,\n    input_tensor=None,\n    pooling=None,\n    classes=1000,\n    default_size=None,\n):\n    \"\"\"Instantiates a NASNet architecture.\n    Note that only TensorFlow is supported for now,\n    therefore it only works with the data format\n    `image_data_format='channels_last'` in your Keras config\n    at `~/.keras/keras.json`.\n\n    # Arguments\n        input_shape: optional shape tuple, only to be specified\n            if `include_top` is False (otherwise the input shape\n            has to be `(331, 331, 3)` for NASNetLarge or\n            `(224, 224, 3)` for NASNetMobile\n            It should have exactly 3 inputs channels,\n            and width and height should be no smaller than 32.\n            E.g. `(224, 224, 3)` would be one valid value.\n        penultimate_filters: number of filters in the penultimate layer.\n            NASNet models use the notation `NASNet (N @ P)`, where:\n                -   N is the number of blocks\n                -   P is the number of penultimate filters\n        nb_blocks: number of repeated blocks of the NASNet model.\n            NASNet models use the notation `NASNet (N @ P)`, where:\n                -   N is the number of blocks\n                -   P is the number of penultimate filters\n        stem_filters: number of filters in the initial stem block\n        skip_reduction: Whether to skip the reduction step at the tail\n            end of the network. Set to `False` for CIFAR models.\n        use_auxiliary_branch: Whether to use the auxiliary branch during\n            training or evaluation.\n        filters_multiplier: controls the width of the network.\n            - If `filters_multiplier` < 1.0, proportionally decreases the number\n                of filters in each layer.\n            - If `filters_multiplier` > 1.0, proportionally increases the number\n                of filters in each layer.\n            - If `filters_multiplier` = 1, default number of filters from the paper\n                 are used at each layer.\n        dropout: dropout rate\n        weight_decay: l2 regularization weight\n        include_top: whether to include the fully-connected\n            layer at the top of the network.\n        weights: `None` (random initialization) or\n            `imagenet` (ImageNet weights)\n        input_tensor: optional Keras tensor (i.e. output of\n            `layers.Input()`)\n            to use as image input for the model.\n        pooling: Optional pooling mode for feature extraction\n            when `include_top` is `False`.\n            - `None` means that the output of the model\n                will be the 4D tensor output of the\n                last convolutional layer.\n            - `avg` means that global average pooling\n                will be applied to the output of the\n                last convolutional layer, and thus\n                the output of the model will be a\n                2D tensor.\n            - `max` means that global max pooling will\n                be applied.\n        classes: optional number of classes to classify images\n            into, only to be specified if `include_top` is True, and\n            if no `weights` argument is specified.\n        default_size: specifies the default image size of the model\n    # Returns\n        A Keras model instance.\n    # Raises\n        ValueError: in case of invalid argument for `weights`,\n            or invalid input shape.\n        RuntimeError: If attempting to run this model with a\n            backend that does not support separable convolutions.\n    \"\"\"\n    if K.backend() != \"tensorflow\":\n        raise RuntimeError(\n            \"Only Tensorflow backend is currently supported, \"\n            \"as other backends do not support \"\n            \"separable convolution.\"\n        )\n\n    if weights not in {\"imagenet\", None}:\n        raise ValueError(\n            \"The `weights` argument should be either \"\n            \"`None` (random initialization) or `imagenet` \"\n            \"(pre-training on ImageNet).\"\n        )\n\n    if weights == \"imagenet\" and include_top and classes != 1000:\n        raise ValueError(\n            \"If using `weights` as ImageNet with `include_top` \"\n            \"as true, `classes` should be 1000\"\n        )\n\n    if default_size is None:\n        default_size = 331\n\n    # Determine proper input shape and default size.\n    input_shape = _obtain_input_shape(\n        input_shape,\n        default_size=default_size,\n        min_size=32,\n        data_format=K.image_data_format(),\n        require_flatten=include_top,\n        weights=weights,\n    )\n\n    if K.image_data_format() != \"channels_last\":\n        warnings.warn(\n            \"The NASNet family of models is only available \"\n            'for the input data format \"channels_last\" '\n            \"(width, height, channels). \"\n            \"However your settings specify the default \"\n            'data format \"channels_first\" (channels, width, height).'\n            ' You should set `image_data_format=\"channels_last\"` '\n            \"in your Keras config located at ~/.keras/keras.json. \"\n            \"The model being returned right now will expect inputs \"\n            'to follow the \"channels_last\" data format.'\n        )\n        K.set_image_data_format(\"channels_last\")\n        old_data_format = \"channels_first\"\n    else:\n        old_data_format = None\n\n    if input_tensor is None:\n        img_input = Input(shape=input_shape)\n    else:\n        if not K.is_keras_tensor(input_tensor):\n            img_input = Input(tensor=input_tensor, shape=input_shape)\n        else:\n            img_input = input_tensor\n\n    assert penultimate_filters % 24 == 0, (\n        \"`penultimate_filters` needs to be divisible \" \"by 24.\"\n    )\n\n    channel_dim = 1 if K.image_data_format() == \"channels_first\" else -1\n    filters = penultimate_filters // 24\n\n    if not skip_reduction:\n        x = Conv2D(\n            stem_filters,\n            (3, 3),\n            strides=(2, 2),\n            padding=\"valid\",\n            use_bias=False,\n            name=\"stem_conv1\",\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(img_input)\n    else:\n        x = Conv2D(\n            stem_filters,\n            (3, 3),\n            strides=(1, 1),\n            padding=\"same\",\n            use_bias=False,\n            name=\"stem_conv1\",\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(img_input)\n\n    x = BatchNormalization(\n        axis=channel_dim, momentum=_BN_DECAY, epsilon=_BN_EPSILON, name=\"stem_bn1\"\n    )(x)\n\n    p = None\n    if not skip_reduction:  # imagenet / mobile mode\n        x, p = _reduction_A(\n            x, p, filters // (filters_multiplier ** 2), weight_decay, id=\"stem_1\"\n        )\n        x, p = _reduction_A(\n            x, p, filters // filters_multiplier, weight_decay, id=\"stem_2\"\n        )\n\n    for i in range(nb_blocks):\n        x, p = _normal_A(x, p, filters, weight_decay, id=\"%d\" % (i))\n\n    x, p0 = _reduction_A(\n        x, p, filters * filters_multiplier, weight_decay, id=\"reduce_%d\" % (nb_blocks)\n    )\n\n    p = p0 if not skip_reduction else p\n\n    for i in range(nb_blocks):\n        x, p = _normal_A(\n            x,\n            p,\n            filters * filters_multiplier,\n            weight_decay,\n            id=\"%d\" % (nb_blocks + i + 1),\n        )\n\n    auxiliary_x = None\n    if not skip_reduction:  # imagenet / mobile mode\n        if use_auxiliary_branch:\n            auxiliary_x = _add_auxiliary_head(x, classes, weight_decay)\n\n    x, p0 = _reduction_A(\n        x,\n        p,\n        filters * filters_multiplier ** 2,\n        weight_decay,\n        id=\"reduce_%d\" % (2 * nb_blocks),\n    )\n\n    if skip_reduction:  # CIFAR mode\n        if use_auxiliary_branch:\n            auxiliary_x = _add_auxiliary_head(x, classes, weight_decay)\n\n    p = p0 if not skip_reduction else p\n\n    for i in range(nb_blocks):\n        x, p = _normal_A(\n            x,\n            p,\n            filters * filters_multiplier ** 2,\n            weight_decay,\n            id=\"%d\" % (2 * nb_blocks + i + 1),\n        )\n\n    x = Activation(\"relu\")(x)\n\n    if include_top:\n        x = GlobalAveragePooling2D()(x)\n        x = Dropout(dropout)(x)\n        x = Dense(\n            classes,\n            activation=\"softmax\",\n            kernel_regularizer=l2(weight_decay),\n            name=\"predictions\",\n        )(x)\n    else:\n        if pooling == \"avg\":\n            x = GlobalAveragePooling2D()(x)\n        elif pooling == \"max\":\n            x = GlobalMaxPooling2D()(x)\n\n    # Ensure that the model takes into account\n    # any potential predecessors of `input_tensor`.\n    if input_tensor is not None:\n        inputs = get_source_inputs(input_tensor)\n    else:\n        inputs = img_input\n\n    # Create model.\n    if use_auxiliary_branch:\n        model = Model(inputs, [x, auxiliary_x], name=\"NASNet_with_auxiliary\")\n    else:\n        model = Model(inputs, x, name=\"NASNet\")\n\n    # load weights\n    if weights == \"imagenet\":\n        if default_size == 224:  # mobile version\n            if include_top:\n                if use_auxiliary_branch:\n                    weight_path = NASNET_MOBILE_WEIGHT_PATH_WITH_AUXULARY\n                    model_name = \"nasnet_mobile_with_aux.h5\"\n                else:\n                    weight_path = NASNET_MOBILE_WEIGHT_PATH\n                    model_name = \"nasnet_mobile.h5\"\n            else:\n                if use_auxiliary_branch:\n                    weight_path = NASNET_MOBILE_WEIGHT_PATH_WITH_AUXULARY_NO_TOP\n                    model_name = \"nasnet_mobile_with_aux_no_top.h5\"\n                else:\n                    weight_path = NASNET_MOBILE_WEIGHT_PATH_NO_TOP\n                    model_name = \"nasnet_mobile_no_top.h5\"\n\n            weights_file = get_file(model_name, weight_path, cache_subdir=\"models\")\n            model.load_weights(weights_file, by_name=True)\n\n        elif default_size == 331:  # large version\n            if include_top:\n                if use_auxiliary_branch:\n                    weight_path = NASNET_LARGE_WEIGHT_PATH_WITH_auxiliary\n                    model_name = \"nasnet_large_with_aux.h5\"\n                else:\n                    weight_path = NASNET_LARGE_WEIGHT_PATH\n                    model_name = \"nasnet_large.h5\"\n            else:\n                if use_auxiliary_branch:\n                    weight_path = NASNET_LARGE_WEIGHT_PATH_WITH_auxiliary_NO_TOP\n                    model_name = \"nasnet_large_with_aux_no_top.h5\"\n                else:\n                    weight_path = NASNET_LARGE_WEIGHT_PATH_NO_TOP\n                    model_name = \"nasnet_large_no_top.h5\"\n\n            weights_file = get_file(model_name, weight_path, cache_subdir=\"models\")\n            model.load_weights(weights_file, by_name=True)\n\n        else:\n            raise ValueError(\n                \"ImageNet weights can only be loaded on NASNetLarge or NASNetMobile\"\n            )\n\n    if old_data_format:\n        K.set_image_data_format(old_data_format)\n\n    return model\n\n\ndef NASNetLarge(\n    input_shape=(331, 331, 3),\n    dropout=0.5,\n    weight_decay=5e-5,\n    use_auxiliary_branch=False,\n    include_top=True,\n    weights=\"imagenet\",\n    input_tensor=None,\n    pooling=None,\n    classes=1000,\n):\n    \"\"\"Instantiates a NASNet architecture in ImageNet mode.\n    Note that only TensorFlow is supported for now,\n    therefore it only works with the data format\n    `image_data_format='channels_last'` in your Keras config\n    at `~/.keras/keras.json`.\n\n    # Arguments\n        input_shape: optional shape tuple, only to be specified\n            if `include_top` is False (otherwise the input shape\n            has to be `(331, 331, 3)` for NASNetLarge.\n            It should have exactly 3 inputs channels,\n            and width and height should be no smaller than 32.\n            E.g. `(224, 224, 3)` would be one valid value.\n        use_auxiliary_branch: Whether to use the auxiliary branch during\n            training or evaluation.\n        dropout: dropout rate\n        weight_decay: l2 regularization weight\n        include_top: whether to include the fully-connected\n            layer at the top of the network.\n        weights: `None` (random initialization) or\n            `imagenet` (ImageNet weights)\n        input_tensor: optional Keras tensor (i.e. output of\n            `layers.Input()`)\n            to use as image input for the model.\n        pooling: Optional pooling mode for feature extraction\n            when `include_top` is `False`.\n            - `None` means that the output of the model\n                will be the 4D tensor output of the\n                last convolutional layer.\n            - `avg` means that global average pooling\n                will be applied to the output of the\n                last convolutional layer, and thus\n                the output of the model will be a\n                2D tensor.\n            - `max` means that global max pooling will\n                be applied.\n        classes: optional number of classes to classify images\n            into, only to be specified if `include_top` is True, and\n            if no `weights` argument is specified.\n        default_size: specifies the default image size of the model\n    # Returns\n        A Keras model instance.\n    # Raises\n        ValueError: in case of invalid argument for `weights`,\n            or invalid input shape.\n        RuntimeError: If attempting to run this model with a\n            backend that does not support separable convolutions.\n    \"\"\"\n    global _BN_DECAY, _BN_EPSILON\n    _BN_DECAY = 0.9997\n    _BN_EPSILON = 1e-3\n\n    return NASNet(\n        input_shape,\n        penultimate_filters=4032,\n        nb_blocks=6,\n        stem_filters=96,\n        skip_reduction=False,\n        use_auxiliary_branch=use_auxiliary_branch,\n        filters_multiplier=2,\n        dropout=dropout,\n        weight_decay=weight_decay,\n        include_top=include_top,\n        weights=weights,\n        input_tensor=input_tensor,\n        pooling=pooling,\n        classes=classes,\n        default_size=331,\n    )\n\n\ndef NASNetMobile(\n    input_shape=(224, 224, 3),\n    dropout=0.5,\n    weight_decay=4e-5,\n    use_auxiliary_branch=False,\n    include_top=True,\n    weights=\"imagenet\",\n    input_tensor=None,\n    pooling=None,\n    classes=1000,\n):\n    \"\"\"Instantiates a NASNet architecture in Mobile ImageNet mode.\n    Note that only TensorFlow is supported for now,\n    therefore it only works with the data format\n    `image_data_format='channels_last'` in your Keras config\n    at `~/.keras/keras.json`.\n\n    # Arguments\n        input_shape: optional shape tuple, only to be specified\n            if `include_top` is False (otherwise the input shape\n            has to be `(224, 224, 3)` for NASNetMobile\n            It should have exactly 3 inputs channels,\n            and width and height should be no smaller than 32.\n            E.g. `(224, 224, 3)` would be one valid value.\n        use_auxiliary_branch: Whether to use the auxiliary branch during\n            training or evaluation.\n        dropout: dropout rate\n        weight_decay: l2 regularization weight\n        include_top: whether to include the fully-connected\n            layer at the top of the network.\n        weights: `None` (random initialization) or\n            `imagenet` (ImageNet weights)\n        input_tensor: optional Keras tensor (i.e. output of\n            `layers.Input()`)\n            to use as image input for the model.\n        pooling: Optional pooling mode for feature extraction\n            when `include_top` is `False`.\n            - `None` means that the output of the model\n                will be the 4D tensor output of the\n                last convolutional layer.\n            - `avg` means that global average pooling\n                will be applied to the output of the\n                last convolutional layer, and thus\n                the output of the model will be a\n                2D tensor.\n            - `max` means that global max pooling will\n                be applied.\n        classes: optional number of classes to classify images\n            into, only to be specified if `include_top` is True, and\n            if no `weights` argument is specified.\n        default_size: specifies the default image size of the model\n    # Returns\n        A Keras model instance.\n    # Raises\n        ValueError: in case of invalid argument for `weights`,\n            or invalid input shape.\n        RuntimeError: If attempting to run this model with a\n            backend that does not support separable convolutions.\n    \"\"\"\n    global _BN_DECAY, _BN_EPSILON\n    _BN_DECAY = 0.9997\n    _BN_EPSILON = 1e-3\n\n    return NASNet(\n        input_shape,\n        penultimate_filters=1056,\n        nb_blocks=4,\n        stem_filters=32,\n        skip_reduction=False,\n        use_auxiliary_branch=use_auxiliary_branch,\n        filters_multiplier=2,\n        dropout=dropout,\n        weight_decay=weight_decay,\n        include_top=include_top,\n        weights=weights,\n        input_tensor=input_tensor,\n        pooling=pooling,\n        classes=classes,\n        default_size=224,\n    )\n\n\ndef NASNetCIFAR(\n    input_shape=(32, 32, 3),\n    dropout=0.0,\n    weight_decay=5e-4,\n    use_auxiliary_branch=False,\n    include_top=True,\n    weights=None,\n    input_tensor=None,\n    pooling=None,\n    classes=10,\n):\n    \"\"\"Instantiates a NASNet architecture in CIFAR mode.\n    Note that only TensorFlow is supported for now,\n    therefore it only works with the data format\n    `image_data_format='channels_last'` in your Keras config\n    at `~/.keras/keras.json`.\n\n    # Arguments\n        input_shape: optional shape tuple, only to be specified\n            if `include_top` is False (otherwise the input shape\n            has to be `(32, 32, 3)` for NASNetMobile\n            It should have exactly 3 inputs channels,\n            and width and height should be no smaller than 32.\n            E.g. `(32, 32, 3)` would be one valid value.\n        use_auxiliary_branch: Whether to use the auxiliary branch during\n            training or evaluation.\n        dropout: dropout rate\n        weight_decay: l2 regularization weight\n        include_top: whether to include the fully-connected\n            layer at the top of the network.\n        weights: `None` (random initialization) or\n            `imagenet` (ImageNet weights)\n        input_tensor: optional Keras tensor (i.e. output of\n            `layers.Input()`)\n            to use as image input for the model.\n        pooling: Optional pooling mode for feature extraction\n            when `include_top` is `False`.\n            - `None` means that the output of the model\n                will be the 4D tensor output of the\n                last convolutional layer.\n            - `avg` means that global average pooling\n                will be applied to the output of the\n                last convolutional layer, and thus\n                the output of the model will be a\n                2D tensor.\n            - `max` means that global max pooling will\n                be applied.\n        classes: optional number of classes to classify images\n            into, only to be specified if `include_top` is True, and\n            if no `weights` argument is specified.\n        default_size: specifies the default image size of the model\n    # Returns\n        A Keras model instance.\n    # Raises\n        ValueError: in case of invalid argument for `weights`,\n            or invalid input shape.\n        RuntimeError: If attempting to run this model with a\n            backend that does not support separable convolutions.\n    \"\"\"\n    global _BN_DECAY, _BN_EPSILON\n    _BN_DECAY = 0.9\n    _BN_EPSILON = 1e-5\n\n    return NASNet(\n        input_shape,\n        penultimate_filters=768,\n        nb_blocks=6,\n        stem_filters=32,\n        skip_reduction=True,\n        use_auxiliary_branch=use_auxiliary_branch,\n        filters_multiplier=2,\n        dropout=dropout,\n        weight_decay=weight_decay,\n        include_top=include_top,\n        weights=weights,\n        input_tensor=input_tensor,\n        pooling=pooling,\n        classes=classes,\n        default_size=224,\n    )\n\n\ndef _separable_conv_block(\n    ip, filters, kernel_size=(3, 3), strides=(1, 1), weight_decay=5e-5, id=None\n):\n    \"\"\"Adds 2 blocks of [relu-separable conv-batchnorm]\n\n    # Arguments:\n        ip: input tensor\n        filters: number of output filters per layer\n        kernel_size: kernel size of separable convolutions\n        strides: strided convolution for downsampling\n        weight_decay: l2 regularization weight\n        id: string id\n\n    # Returns:\n        a Keras tensor\n    \"\"\"\n    channel_dim = 1 if K.image_data_format() == \"channels_first\" else -1\n\n    with K.name_scope(\"separable_conv_block_%s\" % id):\n        x = Activation(\"relu\")(ip)\n        x = SeparableConv2D(\n            filters,\n            kernel_size,\n            strides=strides,\n            name=\"separable_conv_1_%s\" % id,\n            padding=\"same\",\n            use_bias=False,\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(x)\n        x = BatchNormalization(\n            axis=channel_dim,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"separable_conv_1_bn_%s\" % (id),\n        )(x)\n        x = Activation(\"relu\")(x)\n        x = SeparableConv2D(\n            filters,\n            kernel_size,\n            name=\"separable_conv_2_%s\" % id,\n            padding=\"same\",\n            use_bias=False,\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(x)\n        x = BatchNormalization(\n            axis=channel_dim,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"separable_conv_2_bn_%s\" % (id),\n        )(x)\n    return x\n\n\ndef _adjust_block(p, ip, filters, weight_decay=5e-5, id=None):\n    \"\"\"\n    Adjusts the input `p` to match the shape of the `input`\n    or situations where the output number of filters needs to\n    be changed\n\n    # Arguments:\n        p: input tensor which needs to be modified\n        ip: input tensor whose shape needs to be matched\n        filters: number of output filters to be matched\n        weight_decay: l2 regularization weight\n        id: string id\n\n    # Returns:\n        an adjusted Keras tensor\n    \"\"\"\n    channel_dim = 1 if K.image_data_format() == \"channels_first\" else -1\n    img_dim = 2 if K.image_data_format() == \"channels_first\" else -2\n\n    with K.name_scope(\"adjust_block\"):\n        if p is None:\n            p = ip\n\n        elif p._keras_shape[img_dim] != ip._keras_shape[img_dim]:\n            with K.name_scope(\"adjust_reduction_block_%s\" % id):\n                p = Activation(\"relu\", name=\"adjust_relu_1_%s\" % id)(p)\n\n                p1 = AveragePooling2D(\n                    (1, 1),\n                    strides=(2, 2),\n                    padding=\"valid\",\n                    name=\"adjust_avg_pool_1_%s\" % id,\n                )(p)\n                p1 = Conv2D(\n                    filters // 2,\n                    (1, 1),\n                    padding=\"same\",\n                    use_bias=False,\n                    kernel_regularizer=l2(weight_decay),\n                    name=\"adjust_conv_1_%s\" % id,\n                    kernel_initializer=\"he_normal\",\n                )(p1)\n\n                p2 = ZeroPadding2D(padding=((0, 1), (0, 1)))(p)\n                p2 = Cropping2D(cropping=((1, 0), (1, 0)))(p2)\n                p2 = AveragePooling2D(\n                    (1, 1),\n                    strides=(2, 2),\n                    padding=\"valid\",\n                    name=\"adjust_avg_pool_2_%s\" % id,\n                )(p2)\n                p2 = Conv2D(\n                    filters // 2,\n                    (1, 1),\n                    padding=\"same\",\n                    use_bias=False,\n                    kernel_regularizer=l2(weight_decay),\n                    name=\"adjust_conv_2_%s\" % id,\n                    kernel_initializer=\"he_normal\",\n                )(p2)\n\n                p = concatenate([p1, p2], axis=channel_dim)\n                p = BatchNormalization(\n                    axis=channel_dim,\n                    momentum=_BN_DECAY,\n                    epsilon=_BN_EPSILON,\n                    name=\"adjust_bn_%s\" % id,\n                )(p)\n\n        elif p._keras_shape[channel_dim] != filters:\n            with K.name_scope(\"adjust_projection_block_%s\" % id):\n                p = Activation(\"relu\")(p)\n                p = Conv2D(\n                    filters,\n                    (1, 1),\n                    strides=(1, 1),\n                    padding=\"same\",\n                    name=\"adjust_conv_projection_%s\" % id,\n                    use_bias=False,\n                    kernel_regularizer=l2(weight_decay),\n                    kernel_initializer=\"he_normal\",\n                )(p)\n                p = BatchNormalization(\n                    axis=channel_dim,\n                    momentum=_BN_DECAY,\n                    epsilon=_BN_EPSILON,\n                    name=\"adjust_bn_%s\" % id,\n                )(p)\n    return p\n\n\ndef _normal_A(ip, p, filters, weight_decay=5e-5, id=None):\n    \"\"\"Adds a Normal cell for NASNet-A (Fig. 4 in the paper)\n\n    # Arguments:\n        ip: input tensor `x`\n        p: input tensor `p`\n        filters: number of output filters\n        weight_decay: l2 regularization weight\n        id: string id\n\n    # Returns:\n        a Keras tensor\n    \"\"\"\n    channel_dim = 1 if K.image_data_format() == \"channels_first\" else -1\n\n    with K.name_scope(\"normal_A_block_%s\" % id):\n        p = _adjust_block(p, ip, filters, weight_decay, id)\n\n        h = Activation(\"relu\")(ip)\n        h = Conv2D(\n            filters,\n            (1, 1),\n            strides=(1, 1),\n            padding=\"same\",\n            name=\"normal_conv_1_%s\" % id,\n            use_bias=False,\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(h)\n        h = BatchNormalization(\n            axis=channel_dim,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"normal_bn_1_%s\" % id,\n        )(h)\n\n        with K.name_scope(\"block_1\"):\n            x1_1 = _separable_conv_block(\n                h,\n                filters,\n                kernel_size=(5, 5),\n                weight_decay=weight_decay,\n                id=\"normal_left1_%s\" % id,\n            )\n            x1_2 = _separable_conv_block(\n                p, filters, weight_decay=weight_decay, id=\"normal_right1_%s\" % id\n            )\n            x1 = add([x1_1, x1_2], name=\"normal_add_1_%s\" % id)\n\n        with K.name_scope(\"block_2\"):\n            x2_1 = _separable_conv_block(\n                p, filters, (5, 5), weight_decay=weight_decay, id=\"normal_left2_%s\" % id\n            )\n            x2_2 = _separable_conv_block(\n                p,\n                filters,\n                (3, 3),\n                weight_decay=weight_decay,\n                id=\"normal_right2_%s\" % id,\n            )\n            x2 = add([x2_1, x2_2], name=\"normal_add_2_%s\" % id)\n\n        with K.name_scope(\"block_3\"):\n            x3 = AveragePooling2D(\n                (3, 3), strides=(1, 1), padding=\"same\", name=\"normal_left3_%s\" % (id)\n            )(h)\n            x3 = add([x3, p], name=\"normal_add_3_%s\" % id)\n\n        with K.name_scope(\"block_4\"):\n            x4_1 = AveragePooling2D(\n                (3, 3), strides=(1, 1), padding=\"same\", name=\"normal_left4_%s\" % (id)\n            )(p)\n            x4_2 = AveragePooling2D(\n                (3, 3), strides=(1, 1), padding=\"same\", name=\"normal_right4_%s\" % (id)\n            )(p)\n            x4 = add([x4_1, x4_2], name=\"normal_add_4_%s\" % id)\n\n        with K.name_scope(\"block_5\"):\n            x5 = _separable_conv_block(\n                h, filters, weight_decay=weight_decay, id=\"normal_left5_%s\" % id\n            )\n            x5 = add([x5, h], name=\"normal_add_5_%s\" % id)\n\n        x = concatenate(\n            [p, x1, x2, x3, x4, x5], axis=channel_dim, name=\"normal_concat_%s\" % id\n        )\n    return x, ip\n\n\ndef _reduction_A(ip, p, filters, weight_decay=5e-5, id=None):\n    \"\"\"Adds a Reduction cell for NASNet-A (Fig. 4 in the paper)\n\n    # Arguments:\n        ip: input tensor `x`\n        p: input tensor `p`\n        filters: number of output filters\n        weight_decay: l2 regularization weight\n        id: string id\n\n    # Returns:\n        a Keras tensor\n    \"\"\"\n    \"\"\"\"\"\"\n    channel_dim = 1 if K.image_data_format() == \"channels_first\" else -1\n\n    with K.name_scope(\"reduction_A_block_%s\" % id):\n        p = _adjust_block(p, ip, filters, weight_decay, id)\n\n        h = Activation(\"relu\")(ip)\n        h = Conv2D(\n            filters,\n            (1, 1),\n            strides=(1, 1),\n            padding=\"same\",\n            name=\"reduction_conv_1_%s\" % id,\n            use_bias=False,\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(h)\n        h = BatchNormalization(\n            axis=channel_dim,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"reduction_bn_1_%s\" % id,\n        )(h)\n\n        with K.name_scope(\"block_1\"):\n            x1_1 = _separable_conv_block(\n                h,\n                filters,\n                (5, 5),\n                strides=(2, 2),\n                weight_decay=weight_decay,\n                id=\"reduction_left1_%s\" % id,\n            )\n            x1_2 = _separable_conv_block(\n                p,\n                filters,\n                (7, 7),\n                strides=(2, 2),\n                weight_decay=weight_decay,\n                id=\"reduction_1_%s\" % id,\n            )\n            x1 = add([x1_1, x1_2], name=\"reduction_add_1_%s\" % id)\n\n        with K.name_scope(\"block_2\"):\n            x2_1 = MaxPooling2D(\n                (3, 3), strides=(2, 2), padding=\"same\", name=\"reduction_left2_%s\" % id\n            )(h)\n            x2_2 = _separable_conv_block(\n                p,\n                filters,\n                (7, 7),\n                strides=(2, 2),\n                weight_decay=weight_decay,\n                id=\"reduction_right2_%s\" % id,\n            )\n            x2 = add([x2_1, x2_2], name=\"reduction_add_2_%s\" % id)\n\n        with K.name_scope(\"block_3\"):\n            x3_1 = AveragePooling2D(\n                (3, 3), strides=(2, 2), padding=\"same\", name=\"reduction_left3_%s\" % id\n            )(h)\n            x3_2 = _separable_conv_block(\n                p,\n                filters,\n                (5, 5),\n                strides=(2, 2),\n                weight_decay=weight_decay,\n                id=\"reduction_right3_%s\" % id,\n            )\n            x3 = add([x3_1, x3_2], name=\"reduction_add3_%s\" % id)\n\n        with K.name_scope(\"block_4\"):\n            x4 = AveragePooling2D(\n                (3, 3), strides=(1, 1), padding=\"same\", name=\"reduction_left4_%s\" % id\n            )(x1)\n            x4 = add([x2, x4])\n\n        with K.name_scope(\"block_5\"):\n            x5_1 = _separable_conv_block(\n                x1,\n                filters,\n                (3, 3),\n                weight_decay=weight_decay,\n                id=\"reduction_left4_%s\" % id,\n            )\n            x5_2 = MaxPooling2D(\n                (3, 3), strides=(2, 2), padding=\"same\", name=\"reduction_right5_%s\" % id\n            )(h)\n            x5 = add([x5_1, x5_2], name=\"reduction_add4_%s\" % id)\n\n        x = concatenate(\n            [x2, x3, x4, x5], axis=channel_dim, name=\"reduction_concat_%s\" % id\n        )\n        return x, ip\n\n\ndef _add_auxiliary_head(x, classes, weight_decay):\n    \"\"\"Adds an auxiliary head for training the model\n\n    From section A.7 \"Training of ImageNet models\" of the paper, all NASNet models are\n    trained using an auxiliary classifier around 2/3 of the depth of the network, with\n    a loss weight of 0.4\n\n    # Arguments\n        x: input tensor\n        classes: number of output classes\n        weight_decay: l2 regularization weight\n\n    # Returns\n        a keras Tensor\n    \"\"\"\n    img_height = 1 if K.image_data_format() == \"channels_last\" else 2\n    img_width = 2 if K.image_data_format() == \"channels_last\" else 3\n    channel_axis = 1 if K.image_data_format() == \"channels_first\" else -1\n\n    with K.name_scope(\"auxiliary_branch\"):\n        auxiliary_x = Activation(\"relu\")(x)\n        auxiliary_x = AveragePooling2D(\n            (5, 5), strides=(3, 3), padding=\"valid\", name=\"aux_pool\"\n        )(auxiliary_x)\n        auxiliary_x = Conv2D(\n            128,\n            (1, 1),\n            padding=\"same\",\n            use_bias=False,\n            name=\"aux_conv_projection\",\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n        )(auxiliary_x)\n        auxiliary_x = BatchNormalization(\n            axis=channel_axis,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"aux_bn_projection\",\n        )(auxiliary_x)\n        auxiliary_x = Activation(\"relu\")(auxiliary_x)\n\n        auxiliary_x = Conv2D(\n            768,\n            (auxiliary_x._keras_shape[img_height], auxiliary_x._keras_shape[img_width]),\n            padding=\"valid\",\n            use_bias=False,\n            kernel_initializer=\"he_normal\",\n            kernel_regularizer=l2(weight_decay),\n            name=\"aux_conv_reduction\",\n        )(auxiliary_x)\n        auxiliary_x = BatchNormalization(\n            axis=channel_axis,\n            momentum=_BN_DECAY,\n            epsilon=_BN_EPSILON,\n            name=\"aux_bn_reduction\",\n        )(auxiliary_x)\n        auxiliary_x = Activation(\"relu\")(auxiliary_x)\n\n        auxiliary_x = GlobalAveragePooling2D()(auxiliary_x)\n        auxiliary_x = Dense(\n            classes,\n            activation=\"softmax\",\n            kernel_regularizer=l2(weight_decay),\n            name=\"aux_predictions\",\n        )(auxiliary_x)\n    return auxiliary_x\n\n\nif __name__ == \"__main__\":\n    import tensorflow as tf\n\n    sess = tf.Session()\n\n    K.set_session(sess)\n\n    model = NASNetLarge((331, 331, 3))\n    model.summary()\n\n    writer = tf.summary.FileWriter(\"./logs/\", graph=K.get_session().graph)\n    writer.close()\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/neural-image-assessment/utils/score_utils.py",
    "content": "import numpy as np\n\n# calculate mean score for AVA dataset\ndef mean_score(scores):\n    si = np.arange(1, 11, 1)\n    mean = np.sum(q * si, axis=1)\n    return mean\n\n\n# calculate standard deviation of scores for AVA dataset\ndef std_score(scores):\n    si = np.arange(1, 11, 1)\n    mean = mean_score(scores)\n    std = np.sqrt(np.sum(((si - mean) ** 2) * scores))\n    return std\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/image feat. extraction/nn_image_features.py",
    "content": "# @kmike `s code\n\n# image feature extractions\n\nimport numpy as np\nimport pandas as pd\nimport os\nfrom tqdm import tqdm\nimport traceback\nfrom functools import partial\n\n\nos.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n# 3 CPU\n# 2 1060\n# 0 1080Ti\nimport tensorflow as tf\nfrom keras.backend.tensorflow_backend import set_session\n\nconfig = tf.ConfigProto()\nconfig.gpu_options.allow_growth = True\nset_session(tf.Session(config=config))\n\nfrom keras.preprocessing import image\nfrom keras.applications import (\n    vgg16,\n    vgg19,\n    resnet50,\n    inception_v3,\n    inception_resnet_v2,\n    xception,\n    mobilenet,\n    densenet,\n)\n\nimport config as cfg\nimport utils\n\n\n@hdd_memory.cache\ndef get_names_paths(images_dir):\n    img_names = sorted(os.listdir(images_dir))\n    img_paths = [os.path.join(images_dir, name) for name in img_names]\n    img_names = [name.split(\".\", 1)[0] for name in img_names]\n\n    return img_paths, img_names\n\n\ndef img_generator(\n    img_paths, img_names, target_size, preprocess_func=None, batch_size=128\n):\n    pos = 0\n    preprocess_func = preprocess_func or (lambda arg: arg)\n\n    while True:\n        try:\n            names_batch = img_names[pos : pos + batch_size]\n            path_batch = img_paths[pos : pos + batch_size]\n            x = [\n                image.img_to_array(image.load_img(path, target_size=target_size))\n                for path in path_batch\n            ]\n            x = np.array(x)\n            x = preprocess_func(x)\n\n            yield pos, x, names_batch\n\n        except Exception:\n            traceback.print_exc()\n\n        finally:\n            pos += batch_size\n            if pos >= len(img_paths):\n                break\n\n\ndef get_model_and_data(mode, model_name):\n    if model_name == \"vgg16\":\n        model = vgg16.VGG16(weights=\"imagenet\", include_top=True)\n        preprocess_func = partial(vgg16.preprocess_input, mode=\"tf\")\n        target_size = (224, 224)\n\n    elif model_name == \"vgg19\":\n        model = vgg19.VGG19(weights=\"imagenet\", include_top=True)\n        preprocess_func = partial(vgg19.preprocess_input, mode=\"tf\")\n        target_size = (224, 224)\n\n    elif model_name == \"resnet50\":\n        model = resnet50.ResNet50(weights=\"imagenet\", include_top=True)\n        preprocess_func = partial(resnet50.preprocess_input, mode=\"tf\")\n        target_size = (224, 224)\n\n    elif model_name == \"inception_v3\":\n        model = inception_v3.InceptionV3(weights=\"imagenet\", include_top=True)\n        preprocess_func = inception_v3.preprocess_input\n        target_size = (299, 299)\n\n    elif model_name == \"inception_resnet_v2\":\n        model = inception_resnet_v2.InceptionResNetV2(\n            weights=\"imagenet\", include_top=True\n        )\n        preprocess_func = inception_resnet_v2.preprocess_input\n        target_size = (299, 299)\n\n    elif model_name == \"xception\":\n        model = xception.Xception(weights=\"imagenet\", include_top=True)\n        preprocess_func = xception.preprocess_input\n        target_size = (299, 299)\n\n    elif model_name == \"mobilenet\":\n        model = mobilenet.MobileNet(weights=\"imagenet\", include_top=True)\n        preprocess_func = mobilenet.preprocess_input\n        target_size = (224, 224)\n\n    elif model_name.startswith(\"densenet\"):\n        model_type = int(model_name[len(\"densenet\") :])\n\n        if model_type == 121:\n            model = densenet.DenseNet121(weights=\"imagenet\", include_top=True)\n        elif model_type == 169:\n            model = densenet.DenseNet169(weights=\"imagenet\", include_top=True)\n        elif model_type == 201:\n            model = densenet.DenseNet201(weights=\"imagenet\", include_top=True)\n        else:\n            raise ValueError(f\"Got incorrect DenseNet model type ({model_type}).\")\n\n        preprocess_func = densenet.preprocess_input\n        target_size = (224, 224)\n\n    else:\n        raise ValueError(f\"Got unknown NN model ({model_name}).\")\n\n    if mode == \"train\":\n        input_dir = cfg.TRAIN_IMAGES_DIR\n\n    elif mode == \"test\":\n        input_dir = cfg.TEST_IMAGES_DIR\n    else:\n        raise ValueError(f\"Got unknown proc mode ({mode}).\")\n\n    output_file = cfg.NN_IMAGE_FEATURES[model_name][mode][\"memmap\"]\n\n    return model, input_dir, output_file, preprocess_func, target_size\n\n\ndef extract_features(model_name=\"vgg16\", batch_size=64):\n    def proc_dataset(mode):\n        # create appropriate model and in/out data paths\n        model, input_dir, output_file, preprocess_func, target_size = get_model_and_data(\n            mode, model_name\n        )\n\n        # run image features extraction\n        img_paths, img_names = get_names_paths(input_dir)\n\n        gen = img_generator(\n            img_paths,\n            img_names,\n            target_size,\n            preprocess_func=preprocess_func,\n            batch_size=batch_size,\n        )\n\n        features = np.memmap(\n            output_file, dtype=\"float32\", mode=\"w+\", shape=(len(img_paths), 1000)\n        )\n\n        for pos, x_test, names in tqdm(gen, total=len(img_paths) // batch_size + 1):\n            features[pos : pos + batch_size, :] = model.predict(x_test)\n            features.flush()\n\n        del features\n\n    proc_dataset(\"train\")\n    proc_dataset(\"test\")\n\n\ndef create_features_df(model_name=\"vgg16\", mode=\"train\"):\n    if mode == \"train\":\n        images_dir_path = cfg.TRAIN_IMAGES_DIR\n    elif mode == \"test\":\n        images_dir_path = cfg.TEST_IMAGES_DIR\n    else:\n        raise ValueError(f\"Got unknown proc mode ({mode}).\")\n\n    features_file = cfg.NN_IMAGE_FEATURES[model_name][mode][\"memmap\"]\n    df_file = cfg.NN_IMAGE_FEATURES[model_name][mode][\"df\"]\n\n    df = pd.DataFrame()\n    img_paths, img_names = get_names_paths(images_dir_path)\n    df[\"image\"] = img_names\n\n    features = np.memmap(\n        features_file, dtype=\"float32\", mode=\"r\", shape=(df.shape[0], 1000)\n    )\n    for idx in tqdm(range(1000)):\n        df[f\"{model_name}_{idx}\"] = features[:, idx]\n\n    df.to_pickle(df_file, compression=\"gzip\")\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/stem to SVD.py",
    "content": "#Thanks for the approach https://github.com/ML-Person/My-solution-to-Avito-Challenge-2018 (@nikita)\nimport pandas as pd\nimport numpy as np\nimport gc\nimport os\nimport re\nimport pickle\nimport string\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\nfrom scipy.sparse import hstack, csr_matrix\nimport lightgbm as lgb\n\n# for text data\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.corpus import stopwords\nfrom sklearn.decomposition import TruncatedSVD\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nsns.set()\n%matplotlib inline\npd.set_option('max_columns', 84)\nimport warnings\nwarnings.filterwarnings('ignore')\n\nPATH_TO_DATA = '/Avito'\n\n\n\ntraintrain  ==  pdpd..read_csvread_cs (os.path.join(PATH_TO_DATA, 'train.csv'))\ntest = pd.read_csv(os.path.join(PATH_TO_DATA, 'test.csv'))\n\n'''\nitem_id - Ad id.\nuser_id - User id.\nregion - Ad region.\ncity - Ad city.\nparent_category_name - Top level ad category as classified by Avito's ad model.\ncategory_name - Fine grain ad category as classified by Avito's ad model.\nparam_1 - Optional parameter from Avito's ad model.\nparam_2 - Optional parameter from Avito's ad model.\nparam_3 - Optional parameter from Avito's ad model.\ntitle - Ad title.\ndescription - Ad description.\nprice - Ad price.\nitem_seq_number - Ad sequential number for user.\nactivation_date - Date ad was placed.\nuser_type - User type.\nimage - Id code of image. Ties to a jpg file in train_jpg. Not every ad has an image.\nimage_top_1 - Avito's classification code for the image.\ndeal_probability - The target variable. This is the likelihood that an ad actually sold something. It's not possible to verify every transaction with certainty, so this column's value can be any float from zero to one.\n'''\ncategorical = [\n    'image_top_1', 'param_1', 'param_2', 'param_3', \n    'city', 'region', 'category_name', 'parent_category_name', 'user_type'\n]\n\n# easy preprocessing\ntext_cols = [\n    'title', 'description', 'param_1', 'param_2', 'param_3',\n    'city', 'region', 'category_name', 'parent_category_name'\n]\nfor col in text_cols:\n    for df in [train, test]:\n        df[col] = df[col].str.replace(r\"[^А-Яа-яA-Za-z0-9,!?@\\'\\`\\\"\\_\\n]\", ' ')\n        df[col].fillna(\"NA\", inplace=True)\n        df[col] = df[col].str.lower()\n\n\nforfor  dfdf  inin  [[traintrain,,  testtest]:]:\n         dfdf[['len_description''len_de ] = df['description'].apply(lambda x: len(str(x)))\n    df['num_desc_punct'] = df['description'].apply(lambda x: len([c for c in str(x) if c in string.punctuation])) / df['len_description']\n    \n    for col in ['description', 'title']:\n        df['num_words_' + col] = df[col].apply(lambda comment: len(comment.split()))\n        df['num_unique_words_' + col] = df[col].apply(lambda comment: len(set(w for w in comment.split())))\n\n    # percentage of unique words\n    df['words_vs_unique_title'] = df['num_unique_words_title'] / df['num_words_title'] * 100\n    df['words_vs_unique_description'] = df['num_unique_words_description'] / df['num_words_description'] * 100\n \n\n# [DUMP] TRAIN + TEST# [DUMP] \ntrain.to_csv(os.path.join(PATH_TO_DATA, 'train_all_features.csv'), index=False, encoding='utf-8')\ntest.to_csv(os.path.join(PATH_TO_DATA, 'test_all_features.csv'), index=False, encoding='utf-8')\n\ndel train, test\ngc.collect()\n\ntrain = pd.read_csv(os.path.join(PATH_TO_DATA, 'train.csv'))\ntest = pd.read_csv(os.path.join(PATH_TO_DATA, 'test.csv\n\n\nstemmer = SnowballStemmer(\"russian\",  ignore_stopwords=False)\n\ntrain['title_stemm'] = train['title'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\ntest['title_stemm'] = test['title'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\ntrain['description_stemm'] = train['description'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\ntest['description_stemm'] = test['description'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\n\n\ntrain['text'] = train['param_1'] + \" \" + train['param_2'] + \" \" + train['param_3'] + \" \" + \\\n                train['city'] + \" \" + train['category_name'] + \" \" + train['parent_category_name']\ntest['text'] =  test['param_1'] + \" \" + test['param_2'] + \" \" + test['param_3'] + \" \" + \\\n                test['city'] + \" \" + test['category_name'] + \" \" + test['parent_category_name']\n\ntrain['text_stemm'] = train['text'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\ntest['text_stemm'] = test['text'].apply(lambda string: ' '.join([stemmer.stem(w) for w in string.split()]))\n\n\nfor df in [train, test]:\n    df.drop(['title', 'description', 'text'], axis=1, inplace=True)\n\n\n#TF-IDF + SVD \n\n# CountVectorizer for 'title'\ntitle_tfidf = CountVectorizer(stop_words=stopwords.words('russian'), lowercase=True,\n                              token_pattern=r'\\w{1,}', ngram_range=(1, 1))\n\nfull_tfidf = title_tfidf.fit_transform(train['title_stemm'].values.tolist() + test['title_stemm'].values.tolist())\ntrain_title_tfidf = title_tfidf.transform(train['title_stemm'].values.tolist())\ntest_title_tfidf = title_tfidf.transform(test['title_stemm'].values.tolist())\n\n### SVD Components ###\nn_comp = 10\nsvd_obj = TruncatedSVD(n_components=n_comp, algorithm='arpack')\nsvd_obj.fit(full_tfidf)\ntrain_svd = pd.DataFrame(svd_obj.transform(train_title_tfidf))\ntest_svd = pd.DataFrame(svd_obj.transform(test_title_tfidf))\ntrain_svd.columns = ['svd_title_'+str(i+1) for i in range(n_comp)]\ntest_svd.columns = ['svd_title_'+str(i+1) for i in range(n_comp)]\ntrain_svd['item_id'] = train['item_id']\ntest_svd['item_id'] = test['item_id']\n\n# Merge and delete\ntrain = train.merge(train_svd, on='item_id', how='left')\ntest = test.merge(test_svd, on='item_id', how='left')\ndel full_tfidf, train_svd, test_svd\ngc.collect()\n\n\n# TF-IDF for 'description'\ndesc_tfidf = TfidfVectorizer(stop_words=stopwords.words('russian'), token_pattern=r'\\w{1,}',\n                             lowercase=True, ngram_range=(1, 2),  norm='l2', smooth_idf=False,\n                             max_features=17000)\nfull_tfidf = desc_tfidf.fit_transform(train['description_stemm'].values.tolist() + test['description_stemm'].values.tolist())\ntrain_desc_tfidf = desc_tfidf.transform(train['description_stemm'].values.tolist())\ntest_desc_tfidf = desc_tfidf.transform(test['description_stemm'].values.tolist())\n\n### SVD Components ###\nn_comp = 10\nsvd_obj = TruncatedSVD(n_components=n_comp, algorithm='arpack')\nsvd_obj.fit(full_tfidf)\ntrain_svd = pd.DataFrame(svd_obj.transform(train_desc_tfidf))\ntest_svd = pd.DataFrame(svd_obj.transform(test_desc_tfidf))\ntrain_svd.columns = ['svd_description_'+str(i+1) for i in range(n_comp)]\ntest_svd.columns = ['svd_description_'+str(i+1) for i in range(n_comp)]\ntrain_svd['item_id'] = train['item_id']\ntest_svd['item_id'] = test['item_id']\n\n# Merge and delete\ntrain = train.merge(train_svd, on='item_id', how='left')\ntest = test.merge(test_svd, on='item_id', how='left')\ndel full_tfidf, train_svd, test_svd\ngc.collect()\n\n\n# [STACKING]# [STACK \ntrain_tfidf = csr_matrix(hstack([train_title_tfidf, train_desc_tfidf, train_text_tfidf])) \ntest_tfidf = csr_matrix(hstack([test_title_tfidf, test_desc_tfidf, test_text_tfidf]))\n\ndel train_title_tfidf, train_desc_tfidf, train_text_tfidf\ndel test_title_tfidf, test_desc_tfidf, test_text_tfidf\ngc.collect()\n\nvocab = np.hstack([\n    title_tfidf.get_feature_names(),\n    desc_tfidf.get_feature_names(),\n    text_tfidf.get_feature_names()\n])\n\n [DUMP] TF-IDF pickle files + vocabulary\nwith open(os.path.join(PATH_TO_DATA, 'train_tfidf.pkl'), 'wb') as train_tfidf_pkl:\n    pickle.dump(train_tfidf, train_tfidf_pkl, protocol=2)\nwith open(os.path.join(PATH_TO_DATA, 'test_tfidf.pkl'), 'wb') as test_tfidf_pkl:\n    pickle.dump(test_tfidf, test_tfidf_pkl, protocol=2)\nwith open(os.path.join(PATH_TO_DATA, 'vocab.pkl'), 'wb') as vocab_pkl:\n    pickle.dump(vocab, vocab_pkl, protocol=2)\n\ndel train, train_tfidf, test, test_tfidf, vocab\ngc.collect()\n\n"
  },
  {
    "path": "DEEP LEARNING/Kaggle Avito Demand Prediction Challenge/text embeddings.py",
    "content": "# @Kmike `s code\n# https://github.com/deepmipt/DeepPavlov/blob/a59703de60deda349fc39918a1fc1b242638b7f7/pretrained-vectors.md\n\nfrom tqdm import tqdm\nimport numpy as np  # linear algebra\nimport pandas as pd\n\n# read embeding\ndef embeding_reading(path):\n    embeddings_index = {}\n    f = open(path)\n    for line in f:\n        values = line.split(\" \")[:-1]\n        word = values[0]\n        coefs = np.asarray(values[1:], dtype=\"float32\")\n        embeddings_index[word] = coefs\n    f.close()\n\n    return embeddings_index\n\n\ndef text2features(embeddings_index, text):\n    vec_stack = []\n    for w in nltk.word_tokenize(text.lower()):\n        v = embeddings_index.get(w, None)\n        if v is not None:\n            vec_stack.append(v)\n\n    if len(vec_stack) != 0:\n        v_mean = np.mean(vec_stack, axis=0)\n    else:\n        v_mean = np.zeros(300)\n\n    return v_mean\n\n\ndef df_to_embed_features(df, column, embeddings_index):\n    embed_size = 300\n    X = np.zeros((df.shape[0], embed_size), dtype=\"float32\")\n\n    for i, text in tqdm(enumerate(df[column])):\n        X[i] = text2features(embeddings_index, text)\n\n    return X\n\n\npath = \"/mnt/nvme/jupyter/avito/embeding/ft_native_300_ru_wiki_lenta_lower_case.vec\"\nembeddings_index = embeding_reading(path)\nX = df_to_embed_features(test_df, column=\"title\", embeddings_index=embeddings_index)\n\n\n# 2nd aproach  @artgor aproach\ndef load_emb(embedding_path, tokenizer, max_features, default=False, embed_size=300):\n    \"\"\"Load embeddings.\"\"\"\n\n    fasttext_model = FastText.load(embedding_path)\n    word_index = tokenizer.word_index\n\n    # my pretrained embeddings have different index, so need to add offset.\n    if default:\n        nb_words = min(max_features, len(word_index))\n    else:\n        nb_words = min(max_features, len(word_index)) + 2\n\n    embedding_matrix = np.zeros((nb_words, embed_size))\n\n    for word, i in word_index.items():\n        if i >= max_features:\n            continue\n        try:\n            embedding_vector = fasttext_model[word]\n        except KeyError:\n            embedding_vector = None\n        if embedding_vector is not None:\n            embedding_matrix[i] = embedding_vector\n\n    return embedding_matrix\n\n\nembedding_matrix = nn_functions.load_emb(\n    \"f:/Avito/embeddings/avito_big_150m_sg1.w2v\", tokenizer, max_features, embed_size\n)\n"
  },
  {
    "path": "DEEP LEARNING/NLP/Kaggle Quora Insincere Questions Classification/3rd-place.py",
    "content": "from __future__ import absolute_import, division\n\nimport os\nimport time\nimport numpy as np\nimport pandas as pd\nimport gensim\nfrom tqdm import tqdm\nfrom nltk.stem import PorterStemmer\n\nps = PorterStemmer()\nfrom nltk.stem.lancaster import LancasterStemmer\n\nlc = LancasterStemmer()\nfrom nltk.stem import SnowballStemmer\n\nsb = SnowballStemmer(\"english\")\nimport gc\n\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.layers import (\n    Dense,\n    Input,\n    CuDNNLSTM,\n    Embedding,\n    Dropout,\n    Activation,\n    CuDNNGRU,\n    Conv1D,\n)\nfrom keras.layers import (\n    Bidirectional,\n    GlobalMaxPool1D,\n    GlobalMaxPooling1D,\n    GlobalAveragePooling1D,\n)\nfrom keras.layers import Input, Embedding, Dense, Conv2D, MaxPool2D, concatenate\nfrom keras.layers import Reshape, Flatten, Concatenate, Dropout, SpatialDropout1D\nfrom keras.optimizers import Adam\nfrom keras.models import Model\nfrom keras import backend as K\nfrom keras.engine.topology import Layer\nfrom keras import initializers, regularizers, constraints, optimizers, layers\n\nimport sys\nfrom os.path import dirname\n\n# sys.path.append(dirname(dirname(__file__)))\nfrom keras import initializers\nfrom keras.engine import InputSpec, Layer\nfrom keras import backend as K\n\nimport spacy\n\n# https://github.com/bfelbo/DeepMoji/blob/master/deepmoji/attlayer.py\nclass AttentionWeightedAverage(Layer):\n    \"\"\"\n    Computes a weighted average of the different channels across timesteps.\n    Uses 1 parameter pr. channel to compute the attention value for a single timestep.\n    \"\"\"\n\n    def __init__(self, return_attention=False, **kwargs):\n        self.init = initializers.get(\"uniform\")\n        self.supports_masking = True\n        self.return_attention = return_attention\n        super(AttentionWeightedAverage, self).__init__(**kwargs)\n\n    def build(self, input_shape):\n        self.input_spec = [InputSpec(ndim=3)]\n        assert len(input_shape) == 3\n\n        self.W = self.add_weight(\n            shape=(input_shape[2], 1),\n            name=\"{}_W\".format(self.name),\n            initializer=self.init,\n        )\n        self.trainable_weights = [self.W]\n        super(AttentionWeightedAverage, self).build(input_shape)\n\n    def call(self, x, mask=None):\n        # computes a probability distribution over the timesteps\n        # uses 'max trick' for numerical stability\n        # reshape is done to avoid issue with Tensorflow\n        # and 1-dimensional weights\n        logits = K.dot(x, self.W)\n        x_shape = K.shape(x)\n        logits = K.reshape(logits, (x_shape[0], x_shape[1]))\n        ai = K.exp(logits - K.max(logits, axis=-1, keepdims=True))\n\n        # masked timesteps have zero weight\n        if mask is not None:\n            mask = K.cast(mask, K.floatx())\n            ai = ai * mask\n        att_weights = ai / (K.sum(ai, axis=1, keepdims=True) + K.epsilon())\n        weighted_input = x * K.expand_dims(att_weights)\n        result = K.sum(weighted_input, axis=1)\n        if self.return_attention:\n            return [result, att_weights]\n        return result\n\n    def get_output_shape_for(self, input_shape):\n        return self.compute_output_shape(input_shape)\n\n    def compute_output_shape(self, input_shape):\n        output_len = input_shape[2]\n        if self.return_attention:\n            return [(input_shape[0], output_len), (input_shape[0], input_shape[1])]\n        return (input_shape[0], output_len)\n\n    def compute_mask(self, input, input_mask=None):\n        if isinstance(input_mask, list):\n            return [None] * len(input_mask)\n        else:\n            return None\n\n\n# https://www.kaggle.com/cpmpml/spell-checker-using-word2vec\nspell_model = gensim.models.KeyedVectors.load_word2vec_format(\n    \"../input/embeddings/wiki-news-300d-1M/wiki-news-300d-1M.vec\"\n)\nwords = spell_model.index2word\nw_rank = {}\nfor i, word in enumerate(words):\n    w_rank[word] = i\nWORDS = w_rank\n# Use fast text as vocabulary\ndef words(text):\n    return re.findall(r\"\\w+\", text.lower())\n\n\ndef P(word):\n    \"Probability of `word`.\"\n    # use inverse of rank as proxy\n    # returns 0 if the word isn't in the dictionary\n    return -WORDS.get(word, 0)\n\n\ndef correction(word):\n    \"Most probable spelling correction for word.\"\n    return max(candidates(word), key=P)\n\n\ndef candidates(word):\n    \"Generate possible spelling corrections for word.\"\n    return known([word]) or known(edits1(word)) or [word]\n\n\ndef known(words):\n    \"The subset of `words` that appear in the dictionary of WORDS.\"\n    return set(w for w in words if w in WORDS)\n\n\ndef edits1(word):\n    \"All edits that are one edit away from `word`.\"\n    letters = \"abcdefghijklmnopqrstuvwxyz\"\n    splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]\n    deletes = [L + R[1:] for L, R in splits if R]\n    transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R) > 1]\n    replaces = [L + c + R[1:] for L, R in splits if R for c in letters]\n    inserts = [L + c + R for L, R in splits for c in letters]\n    return set(deletes + transposes + replaces + inserts)\n\n\ndef edits2(word):\n    \"All edits that are two edits away from `word`.\"\n    return (e2 for e1 in edits1(word) for e2 in edits1(e1))\n\n\ndef singlify(word):\n    return \"\".join(\n        [letter for i, letter in enumerate(word) if i == 0 or letter != word[i - 1]]\n    )\n\n\n# modified version of\n# https://www.kaggle.com/sudalairajkumar/a-look-at-different-embeddings\n# https://www.kaggle.com/danofer/different-embeddings-with-attention-fork\n# https://www.kaggle.com/shujian/different-embeddings-with-attention-fork-fork\ndef load_glove(word_dict, lemma_dict):\n    EMBEDDING_FILE = \"../input/embeddings/glove.840B.300d/glove.840B.300d.txt\"\n\n    def get_coefs(word, *arr):\n        return word, np.asarray(arr, dtype=\"float32\")\n\n    embeddings_index = dict(get_coefs(*o.split(\" \")) for o in open(EMBEDDING_FILE))\n    embed_size = 300\n    nb_words = len(word_dict) + 1\n    embedding_matrix = np.zeros((nb_words, embed_size), dtype=np.float32)\n    unknown_vector = np.zeros((embed_size,), dtype=np.float32) - 1.0\n    print(unknown_vector[:5])\n    for key in tqdm(word_dict):\n        word = key\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.lower()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.upper()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.capitalize()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = ps.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lc.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = sb.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lemma_dict[key]\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        if len(key) > 1:\n            word = correction(key)\n            embedding_vector = embeddings_index.get(word)\n            if embedding_vector is not None:\n                embedding_matrix[word_dict[key]] = embedding_vector\n                continue\n        embedding_matrix[word_dict[key]] = unknown_vector\n    return embedding_matrix, nb_words\n\n\ndef load_fasttext(word_dict, lemma_dict):\n    EMBEDDING_FILE = \"../input/embeddings/wiki-news-300d-1M/wiki-news-300d-1M.vec\"\n\n    def get_coefs(word, *arr):\n        return word, np.asarray(arr, dtype=\"float32\")\n\n    embeddings_index = dict(\n        get_coefs(*o.split(\" \")) for o in open(EMBEDDING_FILE) if len(o) > 100\n    )\n    embed_size = 300\n    nb_words = len(word_dict) + 1\n    embedding_matrix = np.zeros((nb_words, embed_size), dtype=np.float32)\n    unknown_vector = np.zeros((embed_size,), dtype=np.float32) - 1.0\n    print(unknown_vector[:5])\n    for key in tqdm(word_dict):\n        word = key\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.lower()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.upper()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.capitalize()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = ps.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lc.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = sb.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lemma_dict[key]\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        if len(key) > 1:\n            word = correction(key)\n            embedding_vector = embeddings_index.get(word)\n            if embedding_vector is not None:\n                embedding_matrix[word_dict[key]] = embedding_vector\n                continue\n        embedding_matrix[word_dict[key]] = unknown_vector\n    return embedding_matrix, nb_words\n\n\ndef load_para(word_dict, lemma_dict):\n    EMBEDDING_FILE = \"../input/embeddings/paragram_300_sl999/paragram_300_sl999.txt\"\n\n    def get_coefs(word, *arr):\n        return word, np.asarray(arr, dtype=\"float32\")\n\n    embeddings_index = dict(\n        get_coefs(*o.split(\" \"))\n        for o in open(EMBEDDING_FILE, encoding=\"utf8\", errors=\"ignore\")\n        if len(o) > 100\n    )\n    embed_size = 300\n    nb_words = len(word_dict) + 1\n    embedding_matrix = np.zeros((nb_words, embed_size), dtype=np.float32)\n    unknown_vector = np.zeros((embed_size,), dtype=np.float32) - 1.0\n    print(unknown_vector[:5])\n    for key in tqdm(word_dict):\n        word = key\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.lower()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.upper()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = key.capitalize()\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = ps.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lc.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = sb.stem(key)\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        word = lemma_dict[key]\n        embedding_vector = embeddings_index.get(word)\n        if embedding_vector is not None:\n            embedding_matrix[word_dict[key]] = embedding_vector\n            continue\n        if len(key) > 1:\n            word = correction(key)\n            embedding_vector = embeddings_index.get(word)\n            if embedding_vector is not None:\n                embedding_matrix[word_dict[key]] = embedding_vector\n                continue\n        embedding_matrix[word_dict[key]] = unknown_vector\n    return embedding_matrix, nb_words\n\n\ndef build_model(embedding_matrix, nb_words, embedding_size=300):\n    inp = Input(shape=(max_length,))\n    x = Embedding(\n        nb_words, embedding_size, weights=[embedding_matrix], trainable=False\n    )(inp)\n    x = SpatialDropout1D(0.3)(x)\n    x1 = Bidirectional(CuDNNLSTM(256, return_sequences=True))(x)\n    x2 = Bidirectional(CuDNNGRU(128, return_sequences=True))(x1)\n    max_pool1 = GlobalMaxPooling1D()(x1)\n    max_pool2 = GlobalMaxPooling1D()(x2)\n    conc = Concatenate()([max_pool1, max_pool2])\n    predictions = Dense(1, activation=\"sigmoid\")(conc)\n    model = Model(inputs=inp, outputs=predictions)\n    adam = optimizers.Adam(lr=learning_rate)\n    model.compile(optimizer=adam, loss=\"binary_crossentropy\", metrics=[\"accuracy\"])\n    return model\n\n\nstart_time = time.time()\nprint(\"Loading data ...\")\ntrain = pd.read_csv(\"../input/train.csv\").fillna(\" \")\ntest = pd.read_csv(\"../input/test.csv\").fillna(\" \")\ntrain_text = train[\"question_text\"]\ntest_text = test[\"question_text\"]\ntext_list = pd.concat([train_text, test_text])\ny = train[\"target\"].values\nnum_train_data = y.shape[0]\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\nstart_time = time.time()\nprint(\"Spacy NLP ...\")\nnlp = spacy.load(\"en_core_web_lg\", disable=[\"parser\", \"ner\", \"tagger\"])\nnlp.vocab.add_flag(\n    lambda s: s.lower() in spacy.lang.en.stop_words.STOP_WORDS, spacy.attrs.IS_STOP\n)\nword_dict = {}\nword_index = 1\nlemma_dict = {}\ndocs = nlp.pipe(text_list, n_threads=2)\nword_sequences = []\nfor doc in tqdm(docs):\n    word_seq = []\n    for token in doc:\n        if (token.text not in word_dict) and (token.pos_ is not \"PUNCT\"):\n            word_dict[token.text] = word_index\n            word_index += 1\n            lemma_dict[token.text] = token.lemma_\n        if token.pos_ is not \"PUNCT\":\n            word_seq.append(word_dict[token.text])\n    word_sequences.append(word_seq)\ndel docs\ngc.collect()\ntrain_word_sequences = word_sequences[:num_train_data]\ntest_word_sequences = word_sequences[num_train_data:]\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\n# hyperparameters\nmax_length = 55\nembedding_size = 600\nlearning_rate = 0.001\nbatch_size = 512\nnum_epoch = 4\n\ntrain_word_sequences = pad_sequences(\n    train_word_sequences, maxlen=max_length, padding=\"post\"\n)\ntest_word_sequences = pad_sequences(\n    test_word_sequences, maxlen=max_length, padding=\"post\"\n)\nprint(train_word_sequences[:1])\nprint(test_word_sequences[:1])\npred_prob = np.zeros((len(test_word_sequences),), dtype=np.float32)\n\nstart_time = time.time()\nprint(\"Loading embedding matrix ...\")\nembedding_matrix_glove, nb_words = load_glove(word_dict, lemma_dict)\nembedding_matrix_fasttext, nb_words = load_fasttext(word_dict, lemma_dict)\nembedding_matrix = np.concatenate(\n    (embedding_matrix_glove, embedding_matrix_fasttext), axis=1\n)\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\nstart_time = time.time()\nprint(\"Start training ...\")\nmodel = build_model(embedding_matrix, nb_words, embedding_size)\nmodel.fit(\n    train_word_sequences, y, batch_size=batch_size, epochs=num_epoch - 1, verbose=2\n)\npred_prob += 0.15 * np.squeeze(\n    model.predict(test_word_sequences, batch_size=batch_size, verbose=2)\n)\nmodel.fit(train_word_sequences, y, batch_size=batch_size, epochs=1, verbose=2)\npred_prob += 0.35 * np.squeeze(\n    model.predict(test_word_sequences, batch_size=batch_size, verbose=2)\n)\ndel model, embedding_matrix_fasttext, embedding_matrix\ngc.collect()\nK.clear_session()\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\nstart_time = time.time()\nprint(\"Loading embedding matrix ...\")\nembedding_matrix_para, nb_words = load_para(word_dict, lemma_dict)\nembedding_matrix = np.concatenate(\n    (embedding_matrix_glove, embedding_matrix_para), axis=1\n)\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\nstart_time = time.time()\nprint(\"Start training ...\")\nmodel = build_model(embedding_matrix, nb_words, embedding_size)\nmodel.fit(\n    train_word_sequences, y, batch_size=batch_size, epochs=num_epoch - 1, verbose=2\n)\npred_prob += 0.15 * np.squeeze(\n    model.predict(test_word_sequences, batch_size=batch_size, verbose=2)\n)\nmodel.fit(train_word_sequences, y, batch_size=batch_size, epochs=1, verbose=2)\npred_prob += 0.35 * np.squeeze(\n    model.predict(test_word_sequences, batch_size=batch_size, verbose=2)\n)\nprint(\"--- %s seconds ---\" % (time.time() - start_time))\n\nsubmission = pd.DataFrame.from_dict({\"qid\": test[\"qid\"]})\nsubmission[\"prediction\"] = (pred_prob > 0.35).astype(int)\nsubmission.to_csv(\"submission.csv\", index=False)\n"
  },
  {
    "path": "DEEP LEARNING/NLP/Kaggle Quora Insincere Questions Classification/README.MD",
    "content": "## Solution to Quora Insincere Questions Classification\n\n\nLink: https://www.kaggle.com/c/microsoft-malware-prediction\n\nThe malware industry continues to be a well-organized, well-funded market dedicated to evading traditional security measures. Once a computer is infected by malware, criminals can hurt consumers and enterprises in many ways.\n\nWith more than one billion enterprise and consumer customers, Microsoft takes this problem very seriously and is deeply invested in improving security.\n\nAs one part of their overall strategy for doing so, Microsoft is challenging the data science community to develop techniques to predict if a machine will soon be hit with malware. As with their previous, Malware Challenge (2015), Microsoft is providing Kagglers with an unprecedented malware dataset to encourage open-source progress on effective techniques for predicting malware occurrences.\n\nCan you help protect more than one billion machines from damage BEFORE it happens?\n"
  },
  {
    "path": "DEEP LEARNING/NLP/Kaggle Quora Insincere Questions Classification/fix misspellings.py",
    "content": "import io\nimport collections\nimport matplotlib.pyplot as plt\nimport nltk\nimport enchant\n  ​\nwords = []\nwith io.open('corpus.txt', 'r', encoding='utf-8') as f:\n    for line in f:\n        line = line.strip()\n        words.extend(line.split())\n  ​\nvocab = collections.Counter(words)\nvocab.most_common(10)\n\n''' \n#output\n[('i', 174639),\n('to', 127111),\n('my', 84886),\n('is', 69504),\n('me', 67741),\n('the', 63488),\n('not', 51194),\n('you', 50830),\n('for', 47846),\n('?', 45599)]\n'''\n\nlist(reversed(vocab.most_common()[-10:]))\n''' \n#output\n[('酒店在haridwar', 1),\n  ('谢谢', 1),\n  ('谈', 1),\n  ('看不懂', 1),\n  ('的人##', 1),\n  ('现在呢', 1),\n  ('王建', 1),\n  ('火大金一女', 1),\n  ('李雙鈺', 1),\n  ('拜拜', 1)]\n'''\n#learning fasttext\n# $ fasttext skipgram -input corpus.txt -output model -minCount 1 -minn 3 -maxn 6 -lr 0.01 -dim 100 -ws 3 -epoch 10 -neg 20\n\nfrom gensim.fasttext import FastText \nmodel = FastText.load_fasttext_format('model')  \nprint(model.wv.most_similar('recharge', topn=5))\nprint(model.wv.most_similar('reminder', topn=5))\nprint(model.wv.most_similar('thanks', topn=5))\n\n\n'''\n#output\n[('rechargecharge', 0.9973811507225037),\n ('rechargea', 0.9964320063591003),\n ('rechargedd', 0.9945225715637207),\n ('erecharge', 0.9935820698738098),\n ('rechargw', 0.9932199716567993)]\n  \n [(\"reminder'⏰\", 0.992865264415741),\n ('sk-reminder', 0.9927705526351929),\n ('myreminder', 0.992688775062561),\n ('reminderw', 0.9921447038650513),\n ('ofreminder', 0.992128312587738)]\n  \n [('thanksd', 0.996020495891571),\n ('thanksll', 0.9954444169998169),\n ('thankseuy', 0.9953703880310059),\n ('thankss', 0.9946843385696411),\n'''\n\nword_to_mistakes = collections.defaultdict(list)\nnonalphabetic = re.compile(r'[^a-zA-Z]')\n  \nfor word, freq in vocab.items():\n    if freq < 500 or len(word) <= 3 or nonalphabetic.search(word) is not None:\n        #  To keep this task simple, we will not try finding\n        #  spelling mistakes for words that occur less than 500 times\n        #  or have length less than equal to 3 characters\n        #  or have anything other than English alphabets\n        continue\n  \n    # Query the fasttext model for 50 closest neighbors to the word\n    similar_words = model.wv.most_similar(word, topn=50)\n    for similar_word in results:\n        if include_spell_mistake(word, similar_word, similarity_score):\n            word_to_mistakes[word].append(similar_word)\n\n\nenchant_us = enchant.Dict('en_US')\nspell_mistake_min_frequency = 5\nfasttext_min_similarity = 0.96\ndef include_spell_mistake(word, similar_word, score):\n    \"\"\"\n    Check if similar word passes some rules to be considered a spelling mistake\n    \n    Rules:\n       1. Similarity score should be greater than a threshold\n       2. Length of the word with spelling error should be greater than 3.\n       3. spelling mistake must occur at least some N times in the corpus\n       4. Must not be a correct English word.\n       5. First character of both correct spelling and wrong spelling should be same.\n       6. Has edit distance less than 2\n    \"\"\"\n    edit_distance_threshold = 1 if len(word) <= 4 else 2\n    return (score > fasttext_min_similarity\n            and len(similar_word) > 3\n            and vocab[similar_word] >= spell_mistake_min_frequency\n            and not enchant_us.check(similar_word)\n            and word[0] == similar_word[0]\n            and nltk.edit_distance(word, similar_word) <= edit_distance_threshold)\n\n'''\nSome rules are straightforward:\n\nSpelling mistake word vector must have high vector similarity with correct word’s vector,\nSpelling mistake word must occur at least 5 times in our corpus,\nIt must have more than three characters\nIt should not be a legit English word (we use Enchant which has a convenient dictionary check function).\n'''\n#At this point, most of our work is done, let’s check word_to_mistakes:\n\n'''\nprint(list(word_to_mistakes.items())[:10])\n \n[\n ('want', ['wann', 'wanto', 'wanr', 'wany']),\n ('have', ['havea', 'havr']),\n ('this', ['thiss', 'thise']),\n ('please', ['pleasee', 'pleasr', 'pleasw', 'pleaseee', 'pleae', 'pleaae']),\n ('number', ['numbe', 'numbet', 'numbee', 'numbr']),\n ('call', ['calll']),\n ('will', ['willl', 'wiill']),\n ('account', ['aaccount', 'acccount', 'accouny', 'accoun', 'acount', 'accout', 'acoount']),\n ('match', ['matche', 'matchs', 'matchh', 'matcj', 'matcg', 'matc', 'matcha']), ('recharge', ['rechargr', 'recharg', 'rechage', 'recharege', 'recharje', 'recharhe', 'rechare'])\n ]\n'''\n\n#an inverted index for fast lookup:\ninverted_index = {}\nfor word, mistakes in word_to_mistakes.items():\n    for mistake in mistakes:\n        if mistake != word:\n            inverted_index[mistake] = word\n\n'''\nHowever, this method is not entirely accurate.\n\nVery common proper nouns can still slip through the rules and end up being corrected when they shouldn’t be.\nA manual inspection must still be done once to remove errors.\nAnother drawback is spelling mistakes that never occurred in the corpus will not have a correction in the index. Nevertheless, this was a fun experiment.\n'''\n"
  },
  {
    "path": "DEEP LEARNING/NLP/LSTM RNN/Next Chars pytorch/Char level RNN/data/anna.txt",
    "content": "Chapter 1\n\n\nHappy families are all alike; every unhappy family is unhappy in its own\nway.\n\nEverything was in confusion in the Oblonskys' house. The wife had\ndiscovered that the husband was carrying on an intrigue with a French\ngirl, who had been a governess in their family, and she had announced to\nher husband that she could not go on living in the same house with him.\nThis position of affairs had now lasted three days, and not only the\nhusband and wife themselves, but all the members of their family and\nhousehold, were painfully conscious of it. Every person in the house\nfelt that there was no sense in their living together, and that the\nstray people brought together by chance in any inn had more in common\nwith one another than they, the members of the family and household of\nthe Oblonskys. The wife did not leave her own room, the husband had not\nbeen at home for three days. The children ran wild all over the house;\nthe English governess quarreled with the housekeeper, and wrote to a\nfriend asking her to look out for a new situation for her; the man-cook\nhad walked off the day before just at dinner time; the kitchen-maid, and\nthe coachman had given warning.\n\nThree days after the quarrel, Prince Stepan Arkadyevitch\nOblonsky--Stiva, as he was called in the fashionable world--woke up at\nhis usual hour, that is, at eight o'clock in the morning, not in his\nwife's bedroom, but on the leather-covered sofa in his study. He turned\nover his stout, well-cared-for person on the springy sofa, as though he\nwould sink into a long sleep again; he vigorously embraced the pillow on\nthe other side and buried his face in it; but all at once he jumped up,\nsat up on the sofa, and opened his eyes.\n\n\"Yes, yes, how was it now?\" he thought, going over his dream. \"Now, how\nwas it? To be sure! Alabin was giving a dinner at Darmstadt; no, not\nDarmstadt, but something American. Yes, but then, Darmstadt was in\nAmerica. Yes, Alabin was giving a dinner on glass tables, and the tables\nsang, _Il mio tesoro_--not _Il mio tesoro_ though, but something better,\nand there were some sort of little decanters on the table, and they were\nwomen, too,\" he remembered.\n\nStepan Arkadyevitch's eyes twinkled gaily, and he pondered with a smile.\n\"Yes, it was nice, very nice. There was a great deal more that was\ndelightful, only there's no putting it into words, or even expressing it\nin one's thoughts awake.\" And noticing a gleam of light peeping in\nbeside one of the serge curtains, he cheerfully dropped his feet over\nthe edge of the sofa, and felt about with them for his slippers, a\npresent on his last birthday, worked for him by his wife on gold-colored\nmorocco. And, as he had done every day for the last nine years, he\nstretched out his hand, without getting up, towards the place where his\ndressing-gown always hung in his bedroom. And thereupon he suddenly\nremembered that he was not sleeping in his wife's room, but in his\nstudy, and why: the smile vanished from his face, he knitted his brows.\n\n\"Ah, ah, ah! Oo!...\" he muttered, recalling everything that had\nhappened. And again every detail of his quarrel with his wife was\npresent to his imagination, all the hopelessness of his position, and\nworst of all, his own fault.\n\n\"Yes, she won't forgive me, and she can't forgive me. And the most awful\nthing about it is that it's all my fault--all my fault, though I'm not\nto blame. That's the point of the whole situation,\" he reflected. \"Oh,\noh, oh!\" he kept repeating in despair, as he remembered the acutely\npainful sensations caused him by this quarrel.\n\nMost unpleasant of all was the first minute when, on coming, happy and\ngood-humored, from the theater, with a huge pear in his hand for his\nwife, he had not found his wife in the drawing-room, to his surprise had\nnot found her in the study either, and saw her at last in her bedroom\nwith the unlucky letter that revealed everything in her hand.\n\nShe, his Dolly, forever fussing and worrying over household details, and\nlimited in her ideas, as he considered, was sitting perfectly still with\nthe letter in her hand, looking at him with an expression of horror,\ndespair, and indignation.\n\n\"What's this? this?\" she asked, pointing to the letter.\n\nAnd at this recollection, Stepan Arkadyevitch, as is so often the case,\nwas not so much annoyed at the fact itself as at the way in which he had\nmet his wife's words.\n\nThere happened to him at that instant what does happen to people when\nthey are unexpectedly caught in something very disgraceful. He did not\nsucceed in adapting his face to the position in which he was placed\ntowards his wife by the discovery of his fault. Instead of being hurt,\ndenying, defending himself, begging forgiveness, instead of remaining\nindifferent even--anything would have been better than what he did\ndo--his face utterly involuntarily (reflex spinal action, reflected\nStepan Arkadyevitch, who was fond of physiology)--utterly involuntarily\nassumed its habitual, good-humored, and therefore idiotic smile.\n\nThis idiotic smile he could not forgive himself. Catching sight of that\nsmile, Dolly shuddered as though at physical pain, broke out with her\ncharacteristic heat into a flood of cruel words, and rushed out of the\nroom. Since then she had refused to see her husband.\n\n\"It's that idiotic smile that's to blame for it all,\" thought Stepan\nArkadyevitch.\n\n\"But what's to be done? What's to be done?\" he said to himself in\ndespair, and found no answer.\n\n\n\nChapter 2\n\n\nStepan Arkadyevitch was a truthful man in his relations with himself. He\nwas incapable of deceiving himself and persuading himself that he\nrepented of his conduct. He could not at this date repent of the fact\nthat he, a handsome, susceptible man of thirty-four, was not in love\nwith his wife, the mother of five living and two dead children, and only\na year younger than himself. All he repented of was that he had not\nsucceeded better in hiding it from his wife. But he felt all the\ndifficulty of his position and was sorry for his wife, his children, and\nhimself. Possibly he might have managed to conceal his sins better from\nhis wife if he had anticipated that the knowledge of them would have had\nsuch an effect on her. He had never clearly thought out the subject, but\nhe had vaguely conceived that his wife must long ago have suspected him\nof being unfaithful to her, and shut her eyes to the fact. He had even\nsupposed that she, a worn-out woman no longer young or good-looking, and\nin no way remarkable or interesting, merely a good mother, ought from a\nsense of fairness to take an indulgent view. It had turned out quite the\nother way.\n\n\"Oh, it's awful! oh dear, oh dear! awful!\" Stepan Arkadyevitch kept\nrepeating to himself, and he could think of nothing to be done. \"And how\nwell things were going up till now! how well we got on! She was\ncontented and happy in her children; I never interfered with her in\nanything; I let her manage the children and the house just as she liked.\nIt's true it's bad _her_ having been a governess in our house. That's\nbad! There's something common, vulgar, in flirting with one's governess.\nBut what a governess!\" (He vividly recalled the roguish black eyes of\nMlle. Roland and her smile.) \"But after all, while she was in the house,\nI kept myself in hand. And the worst of it all is that she's already ...\nit seems as if ill-luck would have it so! Oh, oh! But what, what is to\nbe done?\"\n\nThere was no solution, but that universal solution which life gives to\nall questions, even the most complex and insoluble. That answer is: one\nmust live in the needs of the day--that is, forget oneself. To forget\nhimself in sleep was impossible now, at least till nighttime; he could\nnot go back now to the music sung by the decanter-women; so he must\nforget himself in the dream of daily life.\n\n\"Then we shall see,\" Stepan Arkadyevitch said to himself, and getting up\nhe put on a gray dressing-gown lined with blue silk, tied the tassels in\na knot, and, drawing a deep breath of air into his broad, bare chest, he\nwalked to the window with his usual confident step, turning out his feet\nthat carried his full frame so easily. He pulled up the blind and rang\nthe bell loudly. It was at once answered by the appearance of an old\nfriend, his valet, Matvey, carrying his clothes, his boots, and a\ntelegram. Matvey was followed by the barber with all the necessaries for\nshaving.\n\n\"Are there any papers from the office?\" asked Stepan Arkadyevitch,\ntaking the telegram and seating himself at the looking-glass.\n\n\"On the table,\" replied Matvey, glancing with inquiring sympathy at his\nmaster; and, after a short pause, he added with a sly smile, \"They've\nsent from the carriage-jobbers.\"\n\nStepan Arkadyevitch made no reply, he merely glanced at Matvey in the\nlooking-glass. In the glance, in which their eyes met in the\nlooking-glass, it was clear that they understood one another. Stepan\nArkadyevitch's eyes asked: \"Why do you tell me that? don't you know?\"\n\nMatvey put his hands in his jacket pockets, thrust out one leg, and\ngazed silently, good-humoredly, with a faint smile, at his master.\n\n\"I told them to come on Sunday, and till then not to trouble you or\nthemselves for nothing,\" he said. He had obviously prepared the sentence\nbeforehand.\n\nStepan Arkadyevitch saw Matvey wanted to make a joke and attract\nattention to himself. Tearing open the telegram, he read it through,\nguessing at the words, misspelt as they always are in telegrams, and his\nface brightened.\n\n\"Matvey, my sister Anna Arkadyevna will be here tomorrow,\" he said,\nchecking for a minute the sleek, plump hand of the barber, cutting a\npink path through his long, curly whiskers.\n\n\"Thank God!\" said Matvey, showing by this response that he, like his\nmaster, realized the significance of this arrival--that is, that Anna\nArkadyevna, the sister he was so fond of, might bring about a\nreconciliation between husband and wife.\n\n\"Alone, or with her husband?\" inquired Matvey.\n\nStepan Arkadyevitch could not answer, as the barber was at work on his\nupper lip, and he raised one finger. Matvey nodded at the looking-glass.\n\n\"Alone. Is the room to be got ready upstairs?\"\n\n\"Inform Darya Alexandrovna: where she orders.\"\n\n\"Darya Alexandrovna?\" Matvey repeated, as though in doubt.\n\n\"Yes, inform her. Here, take the telegram; give it to her, and then do\nwhat she tells you.\"\n\n\"You want to try it on,\" Matvey understood, but he only said, \"Yes sir.\"\n\nStepan Arkadyevitch was already washed and combed and ready to be\ndressed, when Matvey, stepping deliberately in his creaky boots, came\nback into the room with the telegram in his hand. The barber had gone.\n\n\"Darya Alexandrovna told me to inform you that she is going away. Let\nhim do--that is you--do as he likes,\" he said, laughing only with his\neyes, and putting his hands in his pockets, he watched his master with\nhis head on one side. Stepan Arkadyevitch was silent a minute. Then a\ngood-humored and rather pitiful smile showed itself on his handsome\nface.\n\n\"Eh, Matvey?\" he said, shaking his head.\n\n\"It's all right, sir; she will come round,\" said Matvey.\n\n\"Come round?\"\n\n\"Yes, sir.\"\n\n\"Do you think so? Who's there?\" asked Stepan Arkadyevitch, hearing the\nrustle of a woman's dress at the door.\n\n\"It's I,\" said a firm, pleasant, woman's voice, and the stern,\npockmarked face of Matrona Philimonovna, the nurse, was thrust in at the\ndoorway.\n\n\"Well, what is it, Matrona?\" queried Stepan Arkadyevitch, going up to\nher at the door.\n\nAlthough Stepan Arkadyevitch was completely in the wrong as regards his\nwife, and was conscious of this himself, almost every one in the house\n(even the nurse, Darya Alexandrovna's chief ally) was on his side.\n\n\"Well, what now?\" he asked disconsolately.\n\n\"Go to her, sir; own your fault again. Maybe God will aid you. She is\nsuffering so, it's sad to see her; and besides, everything in the house\nis topsy-turvy. You must have pity, sir, on the children. Beg her\nforgiveness, sir. There's no help for it! One must take the\nconsequences...\"\n\n\"But she won't see me.\"\n\n\"You do your part. God is merciful; pray to God, sir, pray to God.\"\n\n\"Come, that'll do, you can go,\" said Stepan Arkadyevitch, blushing\nsuddenly. \"Well now, do dress me.\" He turned to Matvey and threw off his\ndressing-gown decisively.\n\nMatvey was already holding up the shirt like a horse's collar, and,\nblowing off some invisible speck, he slipped it with obvious pleasure\nover the well-groomed body of his master.\n\n\n\nChapter 3\n\n\nWhen he was dressed, Stepan Arkadyevitch sprinkled some scent on\nhimself, pulled down his shirt-cuffs, distributed into his pockets his\ncigarettes, pocketbook, matches, and watch with its double chain and\nseals, and shaking out his handkerchief, feeling himself clean,\nfragrant, healthy, and physically at ease, in spite of his unhappiness,\nhe walked with a slight swing on each leg into the dining-room, where\ncoffee was already waiting for him, and beside the coffee, letters and\npapers from the office.\n\nHe read the letters. One was very unpleasant, from a merchant who was\nbuying a forest on his wife's property. To sell this forest was\nabsolutely essential; but at present, until he was reconciled with his\nwife, the subject could not be discussed. The most unpleasant thing of\nall was that his pecuniary interests should in this way enter into the\nquestion of his reconciliation with his wife. And the idea that he might\nbe led on by his interests, that he might seek a reconciliation with his\nwife on account of the sale of the forest--that idea hurt him.\n\nWhen he had finished his letters, Stepan Arkadyevitch moved the\noffice-papers close to him, rapidly looked through two pieces of\nbusiness, made a few notes with a big pencil, and pushing away the\npapers, turned to his coffee. As he sipped his coffee, he opened a still\ndamp morning paper, and began reading it.\n\nStepan Arkadyevitch took in and read a liberal paper, not an extreme\none, but one advocating the views held by the majority. And in spite of\nthe fact that science, art, and politics had no special interest for\nhim, he firmly held those views on all these subjects which were held by\nthe majority and by his paper, and he only changed them when the\nmajority changed them--or, more strictly speaking, he did not change\nthem, but they imperceptibly changed of themselves within him.\n\nStepan Arkadyevitch had not chosen his political opinions or his views;\nthese political opinions and views had come to him of themselves, just\nas he did not choose the shapes of his hat and coat, but simply took\nthose that were being worn. And for him, living in a certain\nsociety--owing to the need, ordinarily developed at years of discretion,\nfor some degree of mental activity--to have views was just as\nindispensable as to have a hat. If there was a reason for his preferring\nliberal to conservative views, which were held also by many of his\ncircle, it arose not from his considering liberalism more rational, but\nfrom its being in closer accordance with his manner of life. The liberal\nparty said that in Russia everything is wrong, and certainly Stepan\nArkadyevitch had many debts and was decidedly short of money. The\nliberal party said that marriage is an institution quite out of date,\nand that it needs reconstruction; and family life certainly afforded\nStepan Arkadyevitch little gratification, and forced him into lying and\nhypocrisy, which was so repulsive to his nature. The liberal party said,\nor rather allowed it to be understood, that religion is only a curb to\nkeep in check the barbarous classes of the people; and Stepan\nArkadyevitch could not get through even a short service without his legs\naching from standing up, and could never make out what was the object of\nall the terrible and high-flown language about another world when life\nmight be so very amusing in this world. And with all this, Stepan\nArkadyevitch, who liked a joke, was fond of puzzling a plain man by\nsaying that if he prided himself on his origin, he ought not to stop at\nRurik and disown the first founder of his family--the monkey. And so\nLiberalism had become a habit of Stepan Arkadyevitch's, and he liked his\nnewspaper, as he did his cigar after dinner, for the slight fog it\ndiffused in his brain. He read the leading article, in which it was\nmaintained that it was quite senseless in our day to raise an outcry\nthat radicalism was threatening to swallow up all conservative elements,\nand that the government ought to take measures to crush the\nrevolutionary hydra; that, on the contrary, \"in our opinion the danger\nlies not in that fantastic revolutionary hydra, but in the obstinacy of\ntraditionalism clogging progress,\" etc., etc. He read another article,\ntoo, a financial one, which alluded to Bentham and Mill, and dropped\nsome innuendoes reflecting on the ministry. With his characteristic\nquickwittedness he caught the drift of each innuendo, divined whence it\ncame, at whom and on what ground it was aimed, and that afforded him, as\nit always did, a certain satisfaction. But today that satisfaction was\nembittered by Matrona Philimonovna's advice and the unsatisfactory state\nof the household. He read, too, that Count Beist was rumored to have\nleft for Wiesbaden, and that one need have no more gray hair, and of the\nsale of a light carriage, and of a young person seeking a situation; but\nthese items of information did not give him, as usual, a quiet, ironical\ngratification. Having finished the paper, a second cup of coffee and a\nroll and butter, he got up, shaking the crumbs of the roll off his\nwaistcoat; and, squaring his broad chest, he smiled joyously: not\nbecause there was anything particularly agreeable in his mind--the\njoyous smile was evoked by a good digestion.\n\nBut this joyous smile at once recalled everything to him, and he grew\nthoughtful.\n\nTwo childish voices (Stepan Arkadyevitch recognized the voices of\nGrisha, his youngest boy, and Tanya, his eldest girl) were heard outside\nthe door. They were carrying something, and dropped it.\n\n\"I told you not to sit passengers on the roof,\" said the little girl in\nEnglish; \"there, pick them up!\"\n\n\"Everything's in confusion,\" thought Stepan Arkadyevitch; \"there are the\nchildren running about by themselves.\" And going to the door, he called\nthem. They threw down the box, that represented a train, and came in to\ntheir father.\n\nThe little girl, her father's favorite, ran up boldly, embraced him, and\nhung laughingly on his neck, enjoying as she always did the smell of\nscent that came from his whiskers. At last the little girl kissed his\nface, which was flushed from his stooping posture and beaming with\ntenderness, loosed her hands, and was about to run away again; but her\nfather held her back.\n\n\"How is mamma?\" he asked, passing his hand over his daughter's smooth,\nsoft little neck. \"Good morning,\" he said, smiling to the boy, who had\ncome up to greet him. He was conscious that he loved the boy less, and\nalways tried to be fair; but the boy felt it, and did not respond with a\nsmile to his father's chilly smile.\n\n\"Mamma? She is up,\" answered the girl.\n\nStepan Arkadyevitch sighed. \"That means that she's not slept again all\nnight,\" he thought.\n\n\"Well, is she cheerful?\"\n\nThe little girl knew that there was a quarrel between her father and\nmother, and that her mother could not be cheerful, and that her father\nmust be aware of this, and that he was pretending when he asked about it\nso lightly. And she blushed for her father. He at once perceived it, and\nblushed too.\n\n\"I don't know,\" she said. \"She did not say we must do our lessons, but\nshe said we were to go for a walk with Miss Hoole to grandmamma's.\"\n\n\"Well, go, Tanya, my darling. Oh, wait a minute, though,\" he said, still\nholding her and stroking her soft little hand.\n\nHe took off the mantelpiece, where he had put it yesterday, a little box\nof sweets, and gave her two, picking out her favorites, a chocolate and\na fondant.\n\n\"For Grisha?\" said the little girl, pointing to the chocolate.\n\n\"Yes, yes.\" And still stroking her little shoulder, he kissed her on the\nroots of her hair and neck, and let her go.\n\n\"The carriage is ready,\" said Matvey; \"but there's some one to see you\nwith a petition.\"\n\n\"Been here long?\" asked Stepan Arkadyevitch.\n\n\"Half an hour.\"\n\n\"How many times have I told you to tell me at once?\"\n\n\"One must let you drink your coffee in peace, at least,\" said Matvey, in\nthe affectionately gruff tone with which it was impossible to be angry.\n\n\"Well, show the person up at once,\" said Oblonsky, frowning with\nvexation.\n\nThe petitioner, the widow of a staff captain Kalinin, came with a\nrequest impossible and unreasonable; but Stepan Arkadyevitch, as he\ngenerally did, made her sit down, heard her to the end attentively\nwithout interrupting her, and gave her detailed advice as to how and to\nwhom to apply, and even wrote her, in his large, sprawling, good and\nlegible hand, a confident and fluent little note to a personage who\nmight be of use to her. Having got rid of the staff captain's widow,\nStepan Arkadyevitch took his hat and stopped to recollect whether he had\nforgotten anything. It appeared that he had forgotten nothing except\nwhat he wanted to forget--his wife.\n\n\"Ah, yes!\" He bowed his head, and his handsome face assumed a harassed\nexpression. \"To go, or not to go!\" he said to himself; and an inner\nvoice told him he must not go, that nothing could come of it but\nfalsity; that to amend, to set right their relations was impossible,\nbecause it was impossible to make her attractive again and able to\ninspire love, or to make him an old man, not susceptible to love. Except\ndeceit and lying nothing could come of it now; and deceit and lying were\nopposed to his nature.\n\n\"It must be some time, though: it can't go on like this,\" he said,\ntrying to give himself courage. He squared his chest, took out a\ncigarette, took two whiffs at it, flung it into a mother-of-pearl\nashtray, and with rapid steps walked through the drawing room, and\nopened the other door into his wife's bedroom.\n\n\n\nChapter 4\n\n\nDarya Alexandrovna, in a dressing jacket, and with her now scanty, once\nluxuriant and beautiful hair fastened up with hairpins on the nape of\nher neck, with a sunken, thin face and large, startled eyes, which\nlooked prominent from the thinness of her face, was standing among a\nlitter of all sorts of things scattered all over the room, before an\nopen bureau, from which she was taking something. Hearing her husband's\nsteps, she stopped, looking towards the door, and trying assiduously to\ngive her features a severe and contemptuous expression. She felt she was\nafraid of him, and afraid of the coming interview. She was just\nattempting to do what she had attempted to do ten times already in these\nlast three days--to sort out the children's things and her own, so as to\ntake them to her mother's--and again she could not bring herself to do\nthis; but now again, as each time before, she kept saying to herself,\n\"that things cannot go on like this, that she must take some step\" to\npunish him, put him to shame, avenge on him some little part at least of\nthe suffering he had caused her. She still continued to tell herself\nthat she should leave him, but she was conscious that this was\nimpossible; it was impossible because she could not get out of the habit\nof regarding him as her husband and loving him. Besides this, she\nrealized that if even here in her own house she could hardly manage to\nlook after her five children properly, they would be still worse off\nwhere she was going with them all. As it was, even in the course of\nthese three days, the youngest was unwell from being given unwholesome\nsoup, and the others had almost gone without their dinner the day\nbefore. She was conscious that it was impossible to go away; but,\ncheating herself, she went on all the same sorting out her things and\npretending she was going.\n\nSeeing her husband, she dropped her hands into the drawer of the bureau\nas though looking for something, and only looked round at him when he\nhad come quite up to her. But her face, to which she tried to give a\nsevere and resolute expression, betrayed bewilderment and suffering.\n\n\"Dolly!\" he said in a subdued and timid voice. He bent his head towards\nhis shoulder and tried to look pitiful and humble, but for all that he\nwas radiant with freshness and health. In a rapid glance she scanned his\nfigure that beamed with health and freshness. \"Yes, he is happy and\ncontent!\" she thought; \"while I.... And that disgusting good nature,\nwhich every one likes him for and praises--I hate that good nature of\nhis,\" she thought. Her mouth stiffened, the muscles of the cheek\ncontracted on the right side of her pale, nervous face.\n\n\"What do you want?\" she said in a rapid, deep, unnatural voice.\n\n\"Dolly!\" he repeated, with a quiver in his voice. \"Anna is coming\ntoday.\"\n\n\"Well, what is that to me? I can't see her!\" she cried.\n\n\"But you must, really, Dolly...\"\n\n\"Go away, go away, go away!\" she shrieked, not looking at him, as though\nthis shriek were called up by physical pain.\n\nStepan Arkadyevitch could be calm when he thought of his wife, he could\nhope that she would _come round_, as Matvey expressed it, and could\nquietly go on reading his paper and drinking his coffee; but when he saw\nher tortured, suffering face, heard the tone of her voice, submissive to\nfate and full of despair, there was a catch in his breath and a lump in\nhis throat, and his eyes began to shine with tears.\n\n\"My God! what have I done? Dolly! For God's sake!.... You know....\" He\ncould not go on; there was a sob in his throat.\n\nShe shut the bureau with a slam, and glanced at him.\n\n\"Dolly, what can I say?.... One thing: forgive... Remember, cannot nine\nyears of my life atone for an instant....\"\n\nShe dropped her eyes and listened, expecting what he would say, as it\nwere beseeching him in some way or other to make her believe\ndifferently.\n\n\"--instant of passion?\" he said, and would have gone on, but at that\nword, as at a pang of physical pain, her lips stiffened again, and again\nthe muscles of her right cheek worked.\n\n\"Go away, go out of the room!\" she shrieked still more shrilly, \"and\ndon't talk to me of your passion and your loathsomeness.\"\n\nShe tried to go out, but tottered, and clung to the back of a chair to\nsupport herself. His face relaxed, his lips swelled, his eyes were\nswimming with tears.\n\n\"Dolly!\" he said, sobbing now; \"for mercy's sake, think of the children;\nthey are not to blame! I am to blame, and punish me, make me expiate my\nfault. Anything I can do, I am ready to do anything! I am to blame, no\nwords can express how much I am to blame! But, Dolly, forgive me!\"\n\nShe sat down. He listened to her hard, heavy breathing, and he was\nunutterably sorry for her. She tried several times to begin to speak,\nbut could not. He waited.\n\n\"You remember the children, Stiva, to play with them; but I remember\nthem, and know that this means their ruin,\" she said--obviously one of\nthe phrases she had more than once repeated to herself in the course of\nthe last few days.\n\nShe had called him \"Stiva,\" and he glanced at her with gratitude, and\nmoved to take her hand, but she drew back from him with aversion.\n\n\"I think of the children, and for that reason I would do anything in the\nworld to save them, but I don't myself know how to save them. By taking\nthem away from their father, or by leaving them with a vicious\nfather--yes, a vicious father.... Tell me, after what ... has happened,\ncan we live together? Is that possible? Tell me, eh, is it possible?\"\nshe repeated, raising her voice, \"after my husband, the father of my\nchildren, enters into a love affair with his own children's governess?\"\n\n\"But what could I do? what could I do?\" he kept saying in a pitiful\nvoice, not knowing what he was saying, as his head sank lower and lower.\n\n\"You are loathsome to me, repulsive!\" she shrieked, getting more and\nmore heated. \"Your tears mean nothing! You have never loved me; you have\nneither heart nor honorable feeling! You are hateful to me, disgusting,\na stranger--yes, a complete stranger!\" With pain and wrath she uttered\nthe word so terrible to herself--_stranger_.\n\nHe looked at her, and the fury expressed in her face alarmed and amazed\nhim. He did not understand how his pity for her exasperated her. She saw\nin him sympathy for her, but not love. \"No, she hates me. She will not\nforgive me,\" he thought.\n\n\"It is awful! awful!\" he said.\n\nAt that moment in the next room a child began to cry; probably it had\nfallen down. Darya Alexandrovna listened, and her face suddenly\nsoftened.\n\nShe seemed to be pulling herself together for a few seconds, as though\nshe did not know where she was, and what she was doing, and getting up\nrapidly, she moved towards the door.\n\n\"Well, she loves my child,\" he thought, noticing the change of her face\nat the child's cry, \"my child: how can she hate me?\"\n\n\"Dolly, one word more,\" he said, following her.\n\n\"If you come near me, I will call in the servants, the children! They\nmay all know you are a scoundrel! I am going away at once, and you may\nlive here with your mistress!\"\n\nAnd she went out, slamming the door.\n\nStepan Arkadyevitch sighed, wiped his face, and with a subdued tread\nwalked out of the room. \"Matvey says she will come round; but how? I\ndon't see the least chance of it. Ah, oh, how horrible it is! And how\nvulgarly she shouted,\" he said to himself, remembering her shriek and\nthe words--\"scoundrel\" and \"mistress.\" \"And very likely the maids were\nlistening! Horribly vulgar! horrible!\" Stepan Arkadyevitch stood a few\nseconds alone, wiped his face, squared his chest, and walked out of the\nroom.\n\nIt was Friday, and in the dining room the German watchmaker was winding\nup the clock. Stepan Arkadyevitch remembered his joke about this\npunctual, bald watchmaker, \"that the German was wound up for a whole\nlifetime himself, to wind up watches,\" and he smiled. Stepan\nArkadyevitch was fond of a joke: \"And maybe she will come round! That's\na good expression, '_come round,_'\" he thought. \"I must repeat that.\"\n\n\"Matvey!\" he shouted. \"Arrange everything with Darya in the sitting room\nfor Anna Arkadyevna,\" he said to Matvey when he came in.\n\n\"Yes, sir.\"\n\nStepan Arkadyevitch put on his fur coat and went out onto the steps.\n\n\"You won't dine at home?\" said Matvey, seeing him off.\n\n\"That's as it happens. But here's for the housekeeping,\" he said, taking\nten roubles from his pocketbook. \"That'll be enough.\"\n\n\"Enough or not enough, we must make it do,\" said Matvey, slamming the\ncarriage door and stepping back onto the steps.\n\nDarya Alexandrovna meanwhile having pacified the child, and knowing from\nthe sound of the carriage that he had gone off, went back again to her\nbedroom. It was her solitary refuge from the household cares which\ncrowded upon her directly she went out from it. Even now, in the short\ntime she had been in the nursery, the English governess and Matrona\nPhilimonovna had succeeded in putting several questions to her, which\ndid not admit of delay, and which only she could answer: \"What were the\nchildren to put on for their walk? Should they have any milk? Should not\na new cook be sent for?\"\n\n\"Ah, let me alone, let me alone!\" she said, and going back to her\nbedroom she sat down in the same place as she had sat when talking to\nher husband, clasping tightly her thin hands with the rings that slipped\ndown on her bony fingers, and fell to going over in her memory all the\nconversation. \"He has gone! But has he broken it off with her?\" she\nthought. \"Can it be he sees her? Why didn't I ask him! No, no,\nreconciliation is impossible. Even if we remain in the same house, we\nare strangers--strangers forever!\" She repeated again with special\nsignificance the word so dreadful to her. \"And how I loved him! my God,\nhow I loved him!.... How I loved him! And now don't I love him? Don't I\nlove him more than before? The most horrible thing is,\" she began, but\ndid not finish her thought, because Matrona Philimonovna put her head in\nat the door.\n\n\"Let us send for my brother,\" she said; \"he can get a dinner anyway, or\nwe shall have the children getting nothing to eat till six again, like\nyesterday.\"\n\n\"Very well, I will come directly and see about it. But did you send for\nsome new milk?\"\n\nAnd Darya Alexandrovna plunged into the duties of the day, and drowned\nher grief in them for a time.\n\n\n\nChapter 5\n\n\nStepan Arkadyevitch had learned easily at school, thanks to his\nexcellent abilities, but he had been idle and mischievous, and therefore\nwas one of the lowest in his class. But in spite of his habitually\ndissipated mode of life, his inferior grade in the service, and his\ncomparative youth, he occupied the honorable and lucrative position of\npresident of one of the government boards at Moscow. This post he had\nreceived through his sister Anna's husband, Alexey Alexandrovitch\nKarenin, who held one of the most important positions in the ministry to\nwhose department the Moscow office belonged. But if Karenin had not got\nhis brother-in-law this berth, then through a hundred other\npersonages--brothers, sisters, cousins, uncles, and aunts--Stiva\nOblonsky would have received this post, or some other similar one,\ntogether with the salary of six thousand absolutely needful for him, as\nhis affairs, in spite of his wife's considerable property, were in an\nembarrassed condition.\n\nHalf Moscow and Petersburg were friends and relations of Stepan\nArkadyevitch. He was born in the midst of those who had been and are the\npowerful ones of this world. One-third of the men in the government, the\nolder men, had been friends of his father's, and had known him in\npetticoats; another third were his intimate chums, and the remainder\nwere friendly acquaintances. Consequently the distributors of earthly\nblessings in the shape of places, rents, shares, and such, were all his\nfriends, and could not overlook one of their own set; and Oblonsky had\nno need to make any special exertion to get a lucrative post. He had\nonly not to refuse things, not to show jealousy, not to be quarrelsome\nor take offense, all of which from his characteristic good nature he\nnever did. It would have struck him as absurd if he had been told that\nhe would not get a position with the salary he required, especially as\nhe expected nothing out of the way; he only wanted what the men of his\nown age and standing did get, and he was no worse qualified for\nperforming duties of the kind than any other man.\n\nStepan Arkadyevitch was not merely liked by all who knew him for his\ngood humor, but for his bright disposition, and his unquestionable\nhonesty. In him, in his handsome, radiant figure, his sparkling eyes,\nblack hair and eyebrows, and the white and red of his face, there was\nsomething which produced a physical effect of kindliness and good humor\non the people who met him. \"Aha! Stiva! Oblonsky! Here he is!\" was\nalmost always said with a smile of delight on meeting him. Even though\nit happened at times that after a conversation with him it seemed that\nnothing particularly delightful had happened, the next day, and the\nnext, every one was just as delighted at meeting him again.\n\nAfter filling for three years the post of president of one of the\ngovernment boards at Moscow, Stepan Arkadyevitch had won the respect, as\nwell as the liking, of his fellow-officials, subordinates, and\nsuperiors, and all who had had business with him. The principal\nqualities in Stepan Arkadyevitch which had gained him this universal\nrespect in the service consisted, in the first place, of his extreme\nindulgence for others, founded on a consciousness of his own\nshortcomings; secondly, of his perfect liberalism--not the liberalism he\nread of in the papers, but the liberalism that was in his blood, in\nvirtue of which he treated all men perfectly equally and exactly the\nsame, whatever their fortune or calling might be; and thirdly--the most\nimportant point--his complete indifference to the business in which he\nwas engaged, in consequence of which he was never carried away, and\nnever made mistakes.\n\nOn reaching the offices of the board, Stepan Arkadyevitch, escorted by a\ndeferential porter with a portfolio, went into his little private room,\nput on his uniform, and went into the boardroom. The clerks and copyists\nall rose, greeting him with good-humored deference. Stepan Arkadyevitch\nmoved quickly, as ever, to his place, shook hands with his colleagues,\nand sat down. He made a joke or two, and talked just as much as was\nconsistent with due decorum, and began work. No one knew better than\nStepan Arkadyevitch how to hit on the exact line between freedom,\nsimplicity, and official stiffness necessary for the agreeable conduct\nof business. A secretary, with the good-humored deference common to\nevery one in Stepan Arkadyevitch's office, came up with papers, and\nbegan to speak in the familiar and easy tone which had been introduced\nby Stepan Arkadyevitch.\n\n\"We have succeeded in getting the information from the government\ndepartment of Penza. Here, would you care?....\"\n\n\"You've got them at last?\" said Stepan Arkadyevitch, laying his finger\non the paper. \"Now, gentlemen....\"\n\nAnd the sitting of the board began.\n\n\"If they knew,\" he thought, bending his head with a significant air as\nhe listened to the report, \"what a guilty little boy their president was\nhalf an hour ago.\" And his eyes were laughing during the reading of the\nreport. Till two o'clock the sitting would go on without a break, and at\ntwo o'clock there would be an interval and luncheon.\n\nIt was not yet two, when the large glass doors of the boardroom suddenly\nopened and someone came in.\n\nAll the officials sitting on the further side under the portrait of the\nTsar and the eagle, delighted at any distraction, looked round at the\ndoor; but the doorkeeper standing at the door at once drove out the\nintruder, and closed the glass door after him.\n\nWhen the case had been read through, Stepan Arkadyevitch got up and\nstretched, and by way of tribute to the liberalism of the times took out\na cigarette in the boardroom and went into his private room. Two of the\nmembers of the board, the old veteran in the service, Nikitin, and the\n_Kammerjunker Grinevitch_, went in with him.\n\n\"We shall have time to finish after lunch,\" said Stepan Arkadyevitch.\n\n\"To be sure we shall!\" said Nikitin.\n\n\"A pretty sharp fellow this Fomin must be,\" said Grinevitch of one of\nthe persons taking part in the case they were examining.\n\nStepan Arkadyevitch frowned at Grinevitch's words, giving him thereby to\nunderstand that it was improper to pass judgment prematurely, and made\nhim no reply.\n\n\"Who was that came in?\" he asked the doorkeeper.\n\n\"Someone, your excellency, crept in without permission directly my back\nwas turned. He was asking for you. I told him: when the members come\nout, then....\"\n\n\"Where is he?\"\n\n\"Maybe he's gone into the passage, but here he comes anyway. That is\nhe,\" said the doorkeeper, pointing to a strongly built, broad-shouldered\nman with a curly beard, who, without taking off his sheepskin cap, was\nrunning lightly and rapidly up the worn steps of the stone staircase.\nOne of the members going down--a lean official with a portfolio--stood\nout of his way and looked disapprovingly at the legs of the stranger,\nthen glanced inquiringly at Oblonsky.\n\nStepan Arkadyevitch was standing at the top of the stairs. His\ngood-naturedly beaming face above the embroidered collar of his uniform\nbeamed more than ever when he recognized the man coming up.\n\n\"Why, it's actually you, Levin, at last!\" he said with a friendly\nmocking smile, scanning Levin as he approached. \"How is it you have\ndeigned to look me up in this den?\" said Stepan Arkadyevitch, and not\ncontent with shaking hands, he kissed his friend. \"Have you been here\nlong?\"\n\n\"I have just come, and very much wanted to see you,\" said Levin, looking\nshyly and at the same time angrily and uneasily around.\n\n\"Well, let's go into my room,\" said Stepan Arkadyevitch, who knew his\nfriend's sensitive and irritable shyness, and, taking his arm, he drew\nhim along, as though guiding him through dangers.\n\nStepan Arkadyevitch was on familiar terms with almost all his\nacquaintances, and called almost all of them by their Christian names:\nold men of sixty, boys of twenty, actors, ministers, merchants, and\nadjutant-generals, so that many of his intimate chums were to be found\nat the extreme ends of the social ladder, and would have been very much\nsurprised to learn that they had, through the medium of Oblonsky,\nsomething in common. He was the familiar friend of everyone with whom he\ntook a glass of champagne, and he took a glass of champagne with\neveryone, and when in consequence he met any of his disreputable chums,\nas he used in joke to call many of his friends, in the presence of his\nsubordinates, he well knew how, with his characteristic tact, to\ndiminish the disagreeable impression made on them. Levin was not a\ndisreputable chum, but Oblonsky, with his ready tact, felt that Levin\nfancied he might not care to show his intimacy with him before his\nsubordinates, and so he made haste to take him off into his room.\n\nLevin was almost of the same age as Oblonsky; their intimacy did not\nrest merely on champagne. Levin had been the friend and companion of his\nearly youth. They were fond of one another in spite of the difference of\ntheir characters and tastes, as friends are fond of one another who have\nbeen together in early youth. But in spite of this, each of them--as is\noften the way with men who have selected careers of different\nkinds--though in discussion he would even justify the other's career, in\nhis heart despised it. It seemed to each of them that the life he led\nhimself was the only real life, and the life led by his friend was a\nmere phantasm. Oblonsky could not restrain a slight mocking smile at the\nsight of Levin. How often he had seen him come up to Moscow from the\ncountry where he was doing something, but what precisely Stepan\nArkadyevitch could never quite make out, and indeed he took no interest\nin the matter. Levin arrived in Moscow always excited and in a hurry,\nrather ill at ease and irritated by his own want of ease, and for the\nmost part with a perfectly new, unexpected view of things. Stepan\nArkadyevitch laughed at this, and liked it. In the same way Levin in his\nheart despised the town mode of life of his friend, and his official\nduties, which he laughed at, and regarded as trifling. But the\ndifference was that Oblonsky, as he was doing the same as every one did,\nlaughed complacently and good-humoredly, while Levin laughed without\ncomplacency and sometimes angrily.\n\n\"We have long been expecting you,\" said Stepan Arkadyevitch, going into\nhis room and letting Levin's hand go as though to show that here all\ndanger was over. \"I am very, very glad to see you,\" he went on. \"Well,\nhow are you? Eh? When did you come?\"\n\nLevin was silent, looking at the unknown faces of Oblonsky's two\ncompanions, and especially at the hand of the elegant Grinevitch, which\nhad such long white fingers, such long yellow filbert-shaped nails, and\nsuch huge shining studs on the shirt-cuff, that apparently they absorbed\nall his attention, and allowed him no freedom of thought. Oblonsky\nnoticed this at once, and smiled.\n\n\"Ah, to be sure, let me introduce you,\" he said. \"My colleagues: Philip\nIvanitch Nikitin, Mihail Stanislavitch Grinevitch\"--and turning to\nLevin--\"a district councilor, a modern district councilman, a gymnast\nwho lifts thirteen stone with one hand, a cattle-breeder and sportsman,\nand my friend, Konstantin Dmitrievitch Levin, the brother of Sergey\nIvanovitch Koznishev.\"\n\n\"Delighted,\" said the veteran.\n\n\"I have the honor of knowing your brother, Sergey Ivanovitch,\" said\nGrinevitch, holding out his slender hand with its long nails.\n\nLevin frowned, shook hands coldly, and at once turned to Oblonsky.\nThough he had a great respect for his half-brother, an author well known\nto all Russia, he could not endure it when people treated him not as\nKonstantin Levin, but as the brother of the celebrated Koznishev.\n\n\"No, I am no longer a district councilor. I have quarreled with them\nall, and don't go to the meetings any more,\" he said, turning to\nOblonsky.\n\n\"You've been quick about it!\" said Oblonsky with a smile. \"But how?\nwhy?\"\n\n\"It's a long story. I will tell you some time,\" said Levin, but he began\ntelling him at once. \"Well, to put it shortly, I was convinced that\nnothing was really done by the district councils, or ever could be,\" he\nbegan, as though some one had just insulted him. \"On one side it's a\nplaything; they play at being a parliament, and I'm neither young enough\nnor old enough to find amusement in playthings; and on the other side\"\n(he stammered) \"it's a means for the coterie of the district to make\nmoney. Formerly they had wardships, courts of justice, now they have the\ndistrict council--not in the form of bribes, but in the form of unearned\nsalary,\" he said, as hotly as though someone of those present had\nopposed his opinion.\n\n\"Aha! You're in a new phase again, I see--a conservative,\" said Stepan\nArkadyevitch. \"However, we can go into that later.\"\n\n\"Yes, later. But I wanted to see you,\" said Levin, looking with hatred\nat Grinevitch's hand.\n\nStepan Arkadyevitch gave a scarcely perceptible smile.\n\n\"How was it you used to say you would never wear European dress again?\"\nhe said, scanning his new suit, obviously cut by a French tailor. \"Ah! I\nsee: a new phase.\"\n\nLevin suddenly blushed, not as grown men blush, slightly, without being\nthemselves aware of it, but as boys blush, feeling that they are\nridiculous through their shyness, and consequently ashamed of it and\nblushing still more, almost to the point of tears. And it was so strange\nto see this sensible, manly face in such a childish plight, that\nOblonsky left off looking at him.\n\n\"Oh, where shall we meet? You know I want very much to talk to you,\"\nsaid Levin.\n\nOblonsky seemed to ponder.\n\n\"I'll tell you what: let's go to Gurin's to lunch, and there we can\ntalk. I am free till three.\"\n\n\"No,\" answered Levin, after an instant's thought, \"I have got to go on\nsomewhere else.\"\n\n\"All right, then, let's dine together.\"\n\n\"Dine together? But I have nothing very particular, only a few words to\nsay, and a question I want to ask you, and we can have a talk\nafterwards.\"\n\n\"Well, say the few words, then, at once, and we'll gossip after dinner.\"\n\n\"Well, it's this,\" said Levin; \"but it's of no importance, though.\"\n\nHis face all at once took an expression of anger from the effort he was\nmaking to surmount his shyness.\n\n\"What are the Shtcherbatskys doing? Everything as it used to be?\" he\nsaid.\n\nStepan Arkadyevitch, who had long known that Levin was in love with his\nsister-in-law, Kitty, gave a hardly perceptible smile, and his eyes\nsparkled merrily.\n\n\"You said a few words, but I can't answer in a few words, because....\nExcuse me a minute...\"\n\nA secretary came in, with respectful familiarity and the modest\nconsciousness, characteristic of every secretary, of superiority to his\nchief in the knowledge of their business; he went up to Oblonsky with\nsome papers, and began, under pretense of asking a question, to explain\nsome objection. Stepan Arkadyevitch, without hearing him out, laid his\nhand genially on the secretary's sleeve.\n\n\"No, you do as I told you,\" he said, softening his words with a smile,\nand with a brief explanation of his view of the matter he turned away\nfrom the papers, and said: \"So do it that way, if you please, Zahar\nNikititch.\"\n\nThe secretary retired in confusion. During the consultation with the\nsecretary Levin had completely recovered from his embarrassment. He was\nstanding with his elbows on the back of a chair, and on his face was a\nlook of ironical attention.\n\n\"I don't understand it, I don't understand it,\" he said.\n\n\"What don't you understand?\" said Oblonsky, smiling as brightly as ever,\nand picking up a cigarette. He expected some queer outburst from Levin.\n\n\"I don't understand what you are doing,\" said Levin, shrugging his\nshoulders. \"How can you do it seriously?\"\n\n\"Why not?\"\n\n\"Why, because there's nothing in it.\"\n\n\"You think so, but we're overwhelmed with work.\"\n\n\"On paper. But, there, you've a gift for it,\" added Levin.\n\n\"That's to say, you think there's a lack of something in me?\"\n\n\"Perhaps so,\" said Levin. \"But all the same I admire your grandeur, and\nam proud that I've a friend in such a great person. You've not answered\nmy question, though,\" he went on, with a desperate effort looking\nOblonsky straight in the face.\n\n\"Oh, that's all very well. You wait a bit, and you'll come to this\nyourself. It's very nice for you to have over six thousand acres in the\nKarazinsky district, and such muscles, and the freshness of a girl of\ntwelve; still you'll be one of us one day. Yes, as to your question,\nthere is no change, but it's a pity you've been away so long.\"\n\n\"Oh, why so?\" Levin queried, panic-stricken.\n\n\"Oh, nothing,\" responded Oblonsky. \"We'll talk it over. But what's\nbrought you up to town?\"\n\n\"Oh, we'll talk about that, too, later on,\" said Levin, reddening again\nup to his ears.\n\n\"All right. I see,\" said Stepan Arkadyevitch. \"I should ask you to come\nto us, you know, but my wife's not quite the thing. But I tell you what;\nif you want to see them, they're sure now to be at the Zoological\nGardens from four to five. Kitty skates. You drive along there, and I'll\ncome and fetch you, and we'll go and dine somewhere together.\"\n\n\"Capital. So good-bye till then.\"\n\n\"Now mind, you'll forget, I know you, or rush off home to the country!\"\nStepan Arkadyevitch called out laughing.\n\n\"No, truly!\"\n\nAnd Levin went out of the room, only when he was in the doorway\nremembering that he had forgotten to take leave of Oblonsky's\ncolleagues.\n\n\"That gentleman must be a man of great energy,\" said Grinevitch, when\nLevin had gone away.\n\n\"Yes, my dear boy,\" said Stepan Arkadyevitch, nodding his head, \"he's a\nlucky fellow! Over six thousand acres in the Karazinsky district;\neverything before him; and what youth and vigor! Not like some of us.\"\n\n\"You have a great deal to complain of, haven't you, Stepan\nArkadyevitch?\"\n\n\"Ah, yes, I'm in a poor way, a bad way,\" said Stepan Arkadyevitch with a\nheavy sigh.\n\n\n\nChapter 6\n\n\nWhen Oblonsky asked Levin what had brought him to town, Levin blushed,\nand was furious with himself for blushing, because he could not answer,\n\"I have come to make your sister-in-law an offer,\" though that was\nprecisely what he had come for.\n\nThe families of the Levins and the Shtcherbatskys were old, noble Moscow\nfamilies, and had always been on intimate and friendly terms. This\nintimacy had grown still closer during Levin's student days. He had both\nprepared for the university with the young Prince Shtcherbatsky, the\nbrother of Kitty and Dolly, and had entered at the same time with him.\nIn those days Levin used often to be in the Shtcherbatskys' house, and\nhe was in love with the Shtcherbatsky household. Strange as it may\nappear, it was with the household, the family, that Konstantin Levin was\nin love, especially with the feminine half of the household. Levin did\nnot remember his own mother, and his only sister was older than he was,\nso that it was in the Shtcherbatskys' house that he saw for the first\ntime that inner life of an old, noble, cultivated, and honorable family\nof which he had been deprived by the death of his father and mother. All\nthe members of that family, especially the feminine half, were pictured\nby him, as it were, wrapped about with a mysterious poetical veil, and\nhe not only perceived no defects whatever in them, but under the\npoetical veil that shrouded them he assumed the existence of the\nloftiest sentiments and every possible perfection. Why it was the three\nyoung ladies had one day to speak French, and the next English; why it\nwas that at certain hours they played by turns on the piano, the sounds\nof which were audible in their brother's room above, where the students\nused to work; why they were visited by those professors of French\nliterature, of music, of drawing, of dancing; why at certain hours all\nthe three young ladies, with Mademoiselle Linon, drove in the coach to\nthe Tversky boulevard, dressed in their satin cloaks, Dolly in a long\none, Natalia in a half-long one, and Kitty in one so short that her\nshapely legs in tightly-drawn red stockings were visible to all\nbeholders; why it was they had to walk about the Tversky boulevard\nescorted by a footman with a gold cockade in his hat--all this and much\nmore that was done in their mysterious world he did not understand, but\nhe was sure that everything that was done there was very good, and he\nwas in love precisely with the mystery of the proceedings.\n\nIn his student days he had all but been in love with the eldest, Dolly,\nbut she was soon married to Oblonsky. Then he began being in love with\nthe second. He felt, as it were, that he had to be in love with one of\nthe sisters, only he could not quite make out which. But Natalia, too,\nhad hardly made her appearance in the world when she married the\ndiplomat Lvov. Kitty was still a child when Levin left the university.\nYoung Shtcherbatsky went into the navy, was drowned in the Baltic, and\nLevin's relations with the Shtcherbatskys, in spite of his friendship\nwith Oblonsky, became less intimate. But when early in the winter of\nthis year Levin came to Moscow, after a year in the country, and saw the\nShtcherbatskys, he realized which of the three sisters he was indeed\ndestined to love.\n\nOne would have thought that nothing could be simpler than for him, a man\nof good family, rather rich than poor, and thirty-two years old, to make\nthe young Princess Shtcherbatskaya an offer of marriage; in all\nlikelihood he would at once have been looked upon as a good match. But\nLevin was in love, and so it seemed to him that Kitty was so perfect in\nevery respect that she was a creature far above everything earthly; and\nthat he was a creature so low and so earthly that it could not even be\nconceived that other people and she herself could regard him as worthy\nof her.\n\nAfter spending two months in Moscow in a state of enchantment, seeing\nKitty almost every day in society, into which he went so as to meet her,\nhe abruptly decided that it could not be, and went back to the country.\n\nLevin's conviction that it could not be was founded on the idea that in\nthe eyes of her family he was a disadvantageous and worthless match for\nthe charming Kitty, and that Kitty herself could not love him. In her\nfamily's eyes he had no ordinary, definite career and position in\nsociety, while his contemporaries by this time, when he was thirty-two,\nwere already, one a colonel, and another a professor, another director\nof a bank and railways, or president of a board like Oblonsky. But he\n(he knew very well how he must appear to others) was a country\ngentleman, occupied in breeding cattle, shooting game, and building\nbarns; in other words, a fellow of no ability, who had not turned out\nwell, and who was doing just what, according to the ideas of the world,\nis done by people fit for nothing else.\n\nThe mysterious, enchanting Kitty herself could not love such an ugly\nperson as he conceived himself to be, and, above all, such an ordinary,\nin no way striking person. Moreover, his attitude to Kitty in the\npast--the attitude of a grown-up person to a child, arising from his\nfriendship with her brother--seemed to him yet another obstacle to love.\nAn ugly, good-natured man, as he considered himself, might, he supposed,\nbe liked as a friend; but to be loved with such a love as that with\nwhich he loved Kitty, one would need to be a handsome and, still more, a\ndistinguished man.\n\nHe had heard that women often did care for ugly and ordinary men, but he\ndid not believe it, for he judged by himself, and he could not himself\nhave loved any but beautiful, mysterious, and exceptional women.\n\nBut after spending two months alone in the country, he was convinced\nthat this was not one of those passions of which he had had experience\nin his early youth; that this feeling gave him not an instant's rest;\nthat he could not live without deciding the question, would she or would\nshe not be his wife, and that his despair had arisen only from his own\nimaginings, that he had no sort of proof that he would be rejected. And\nhe had now come to Moscow with a firm determination to make an offer,\nand get married if he were accepted. Or ... he could not conceive what\nwould become of him if he were rejected.\n\n\n\nChapter 7\n\n\nOn arriving in Moscow by a morning train, Levin had put up at the house\nof his elder half-brother, Koznishev. After changing his clothes he went\ndown to his brother's study, intending to talk to him at once about the\nobject of his visit, and to ask his advice; but his brother was not\nalone. With him there was a well-known professor of philosophy, who had\ncome from Harkov expressly to clear up a difference that had arisen\nbetween them on a very important philosophical question. The professor\nwas carrying on a hot crusade against materialists. Sergey Koznishev had\nbeen following this crusade with interest, and after reading the\nprofessor's last article, he had written him a letter stating his\nobjections. He accused the professor of making too great concessions to\nthe materialists. And the professor had promptly appeared to argue the\nmatter out. The point in discussion was the question then in vogue: Is\nthere a line to be drawn between psychological and physiological\nphenomena in man? and if so, where?\n\nSergey Ivanovitch met his brother with the smile of chilly friendliness\nhe always had for everyone, and introducing him to the professor, went\non with the conversation.\n\nA little man in spectacles, with a narrow forehead, tore himself from\nthe discussion for an instant to greet Levin, and then went on talking\nwithout paying any further attention to him. Levin sat down to wait till\nthe professor should go, but he soon began to get interested in the\nsubject under discussion.\n\nLevin had come across the magazine articles about which they were\ndisputing, and had read them, interested in them as a development of the\nfirst principles of science, familiar to him as a natural science\nstudent at the university. But he had never connected these scientific\ndeductions as to the origin of man as an animal, as to reflex action,\nbiology, and sociology, with those questions as to the meaning of life\nand death to himself, which had of late been more and more often in his\nmind.\n\nAs he listened to his brother's argument with the professor, he noticed\nthat they connected these scientific questions with those spiritual\nproblems, that at times they almost touched on the latter; but every\ntime they were close upon what seemed to him the chief point, they\npromptly beat a hasty retreat, and plunged again into a sea of subtle\ndistinctions, reservations, quotations, allusions, and appeals to\nauthorities, and it was with difficulty that he understood what they\nwere talking about.\n\n\"I cannot admit it,\" said Sergey Ivanovitch, with his habitual\nclearness, precision of expression, and elegance of phrase. \"I cannot in\nany case agree with Keiss that my whole conception of the external world\nhas been derived from perceptions. The most fundamental idea, the idea\nof existence, has not been received by me through sensation; indeed,\nthere is no special sense-organ for the transmission of such an idea.\"\n\n\"Yes, but they--Wurt, and Knaust, and Pripasov--would answer that your\nconsciousness of existence is derived from the conjunction of all your\nsensations, that that consciousness of existence is the result of your\nsensations. Wurt, indeed, says plainly that, assuming there are no\nsensations, it follows that there is no idea of existence.\"\n\n\"I maintain the contrary,\" began Sergey Ivanovitch.\n\nBut here it seemed to Levin that just as they were close upon the real\npoint of the matter, they were again retreating, and he made up his mind\nto put a question to the professor.\n\n\"According to that, if my senses are annihilated, if my body is dead, I\ncan have no existence of any sort?\" he queried.\n\nThe professor, in annoyance, and, as it were, mental suffering at the\ninterruption, looked round at the strange inquirer, more like a bargeman\nthan a philosopher, and turned his eyes upon Sergey Ivanovitch, as\nthough to ask: What's one to say to him? But Sergey Ivanovitch, who had\nbeen talking with far less heat and one-sidedness than the professor,\nand who had sufficient breadth of mind to answer the professor, and at\nthe same time to comprehend the simple and natural point of view from\nwhich the question was put, smiled and said:\n\n\"That question we have no right to answer as yet.\"\n\n\"We have not the requisite data,\" chimed in the professor, and he went\nback to his argument. \"No,\" he said; \"I would point out the fact that\nif, as Pripasov directly asserts, perception is based on sensation, then\nwe are bound to distinguish sharply between these two conceptions.\"\n\nLevin listened no more, and simply waited for the professor to go.\n\n\n\nChapter 8\n\n\nWhen the professor had gone, Sergey Ivanovitch turned to his brother.\n\n\"Delighted that you've come. For some time, is it? How's your farming\ngetting on?\"\n\nLevin knew that his elder brother took little interest in farming, and\nonly put the question in deference to him, and so he only told him about\nthe sale of his wheat and money matters.\n\nLevin had meant to tell his brother of his determination to get married,\nand to ask his advice; he had indeed firmly resolved to do so. But after\nseeing his brother, listening to his conversation with the professor,\nhearing afterwards the unconsciously patronizing tone in which his\nbrother questioned him about agricultural matters (their mother's\nproperty had not been divided, and Levin took charge of both their\nshares), Levin felt that he could not for some reason begin to talk to\nhim of his intention of marrying. He felt that his brother would not\nlook at it as he would have wished him to.\n\n\"Well, how is your district council doing?\" asked Sergey Ivanovitch, who\nwas greatly interested in these local boards and attached great\nimportance to them.\n\n\"I really don't know.\"\n\n\"What! Why, surely you're a member of the board?\"\n\n\"No, I'm not a member now; I've resigned,\" answered Levin, \"and I no\nlonger attend the meetings.\"\n\n\"What a pity!\" commented Sergey Ivanovitch, frowning.\n\nLevin in self-defense began to describe what took place in the meetings\nin his district.\n\n\"That's how it always is!\" Sergey Ivanovitch interrupted him. \"We\nRussians are always like that. Perhaps it's our strong point, really,\nthe faculty of seeing our own shortcomings; but we overdo it, we comfort\nourselves with irony which we always have on the tip of our tongues. All\nI say is, give such rights as our local self-government to any other\nEuropean people--why, the Germans or the English would have worked their\nway to freedom from them, while we simply turn them into ridicule.\"\n\n\"But how can it be helped?\" said Levin penitently. \"It was my last\neffort. And I did try with all my soul. I can't. I'm no good at it.\"\n\n\"It's not that you're no good at it,\" said Sergey Ivanovitch; \"it is\nthat you don't look at it as you should.\"\n\n\"Perhaps not,\" Levin answered dejectedly.\n\n\"Oh! do you know brother Nikolay's turned up again?\"\n\nThis brother Nikolay was the elder brother of Konstantin Levin, and\nhalf-brother of Sergey Ivanovitch; a man utterly ruined, who had\ndissipated the greater part of his fortune, was living in the strangest\nand lowest company, and had quarreled with his brothers.\n\n\"What did you say?\" Levin cried with horror. \"How do you know?\"\n\n\"Prokofy saw him in the street.\"\n\n\"Here in Moscow? Where is he? Do you know?\" Levin got up from his chair,\nas though on the point of starting off at once.\n\n\"I am sorry I told you,\" said Sergey Ivanovitch, shaking his head at his\nyounger brother's excitement. \"I sent to find out where he is living,\nand sent him his IOU to Trubin, which I paid. This is the answer he sent\nme.\"\n\nAnd Sergey Ivanovitch took a note from under a paper-weight and handed\nit to his brother.\n\nLevin read in the queer, familiar handwriting: \"I humbly beg you to\nleave me in peace. That's the only favor I ask of my gracious\nbrothers.--Nikolay Levin.\"\n\nLevin read it, and without raising his head stood with the note in his\nhands opposite Sergey Ivanovitch.\n\nThere was a struggle in his heart between the desire to forget his\nunhappy brother for the time, and the consciousness that it would be\nbase to do so.\n\n\"He obviously wants to offend me,\" pursued Sergey Ivanovitch; \"but he\ncannot offend me, and I should have wished with all my heart to assist\nhim, but I know it's impossible to do that.\"\n\n\"Yes, yes,\" repeated Levin. \"I understand and appreciate your attitude\nto him; but I shall go and see him.\"\n\n\"If you want to, do; but I shouldn't advise it,\" said Sergey Ivanovitch.\n\"As regards myself, I have no fear of your doing so; he will not make\nyou quarrel with me; but for your own sake, I should say you would do\nbetter not to go. You can't do him any good; still, do as you please.\"\n\n\"Very likely I can't do any good, but I feel--especially at such a\nmoment--but that's another thing--I feel I could not be at peace.\"\n\n\"Well, that I don't understand,\" said Sergey Ivanovitch. \"One thing I do\nunderstand,\" he added; \"it's a lesson in humility. I have come to look\nvery differently and more charitably on what is called infamous since\nbrother Nikolay has become what he is ... you know what he did...\"\n\n\"Oh, it's awful, awful!\" repeated Levin.\n\nAfter obtaining his brother's address from Sergey Ivanovitch's footman,\nLevin was on the point of setting off at once to see him, but on second\nthought he decided to put off his visit till the evening. The first\nthing to do to set his heart at rest was to accomplish what he had come\nto Moscow for. From his brother's Levin went to Oblonsky's office, and\non getting news of the Shtcherbatskys from him, he drove to the place\nwhere he had been told he might find Kitty.\n\n\n\nChapter 9\n\n\nAt four o'clock, conscious of his throbbing heart, Levin stepped out of\na hired sledge at the Zoological Gardens, and turned along the path to\nthe frozen mounds and the skating ground, knowing that he would\ncertainly find her there, as he had seen the Shtcherbatskys' carriage at\nthe entrance.\n\nIt was a bright, frosty day. Rows of carriages, sledges, drivers, and\npolicemen were standing in the approach. Crowds of well-dressed people,\nwith hats bright in the sun, swarmed about the entrance and along the\nwell-swept little paths between the little houses adorned with carving\nin the Russian style. The old curly birches of the gardens, all their\ntwigs laden with snow, looked as though freshly decked in sacred\nvestments.\n\nHe walked along the path towards the skating-ground, and kept saying to\nhimself--\"You mustn't be excited, you must be calm. What's the matter\nwith you? What do you want? Be quiet, stupid,\" he conjured his heart.\nAnd the more he tried to compose himself, the more breathless he found\nhimself. An acquaintance met him and called him by his name, but Levin\ndid not even recognize him. He went towards the mounds, whence came the\nclank of the chains of sledges as they slipped down or were dragged up,\nthe rumble of the sliding sledges, and the sounds of merry voices. He\nwalked on a few steps, and the skating-ground lay open before his eyes,\nand at once, amidst all the skaters, he knew her.\n\nHe knew she was there by the rapture and the terror that seized on his\nheart. She was standing talking to a lady at the opposite end of the\nground. There was apparently nothing striking either in her dress or her\nattitude. But for Levin she was as easy to find in that crowd as a rose\namong nettles. Everything was made bright by her. She was the smile that\nshed light on all round her. \"Is it possible I can go over there on the\nice, go up to her?\" he thought. The place where she stood seemed to him\na holy shrine, unapproachable, and there was one moment when he was\nalmost retreating, so overwhelmed was he with terror. He had to make an\neffort to master himself, and to remind himself that people of all sorts\nwere moving about her, and that he too might come there to skate. He\nwalked down, for a long while avoiding looking at her as at the sun, but\nseeing her, as one does the sun, without looking.\n\nOn that day of the week and at that time of day people of one set, all\nacquainted with one another, used to meet on the ice. There were crack\nskaters there, showing off their skill, and learners clinging to chairs\nwith timid, awkward movements, boys, and elderly people skating with\nhygienic motives. They seemed to Levin an elect band of blissful beings\nbecause they were here, near her. All the skaters, it seemed, with\nperfect self-possession, skated towards her, skated by her, even spoke\nto her, and were happy, quite apart from her, enjoying the capital ice\nand the fine weather.\n\nNikolay Shtcherbatsky, Kitty's cousin, in a short jacket and tight\ntrousers, was sitting on a garden seat with his skates on. Seeing Levin,\nhe shouted to him:\n\n\"Ah, the first skater in Russia! Been here long? First-rate ice--do put\nyour skates on.\"\n\n\"I haven't got my skates,\" Levin answered, marveling at this boldness\nand ease in her presence, and not for one second losing sight of her,\nthough he did not look at her. He felt as though the sun were coming\nnear him. She was in a corner, and turning out her slender feet in their\nhigh boots with obvious timidity, she skated towards him. A boy in\nRussian dress, desperately waving his arms and bowed down to the ground,\novertook her. She skated a little uncertainly; taking her hands out of\nthe little muff that hung on a cord, she held them ready for emergency,\nand looking towards Levin, whom she had recognized, she smiled at him,\nand at her own fears. When she had got round the turn, she gave herself\na push off with one foot, and skated straight up to Shtcherbatsky.\nClutching at his arm, she nodded smiling to Levin. She was more splendid\nthan he had imagined her.\n\nWhen he thought of her, he could call up a vivid picture of her to\nhimself, especially the charm of that little fair head, so freely set on\nthe shapely girlish shoulders, and so full of childish brightness and\ngood humor. The childishness of her expression, together with the\ndelicate beauty of her figure, made up her special charm, and that he\nfully realized. But what always struck him in her as something unlooked\nfor, was the expression of her eyes, soft, serene, and truthful, and\nabove all, her smile, which always transported Levin to an enchanted\nworld, where he felt himself softened and tender, as he remembered\nhimself in some days of his early childhood.\n\n\"Have you been here long?\" she said, giving him her hand. \"Thank you,\"\nshe added, as he picked up the handkerchief that had fallen out of her\nmuff.\n\n\"I? I've not long ... yesterday ... I mean today ... I arrived,\"\nanswered Levin, in his emotion not at once understanding her question.\n\"I was meaning to come and see you,\" he said; and then, recollecting\nwith what intention he was trying to see her, he was promptly overcome\nwith confusion and blushed.\n\n\"I didn't know you could skate, and skate so well.\"\n\nShe looked at him earnestly, as though wishing to make out the cause of\nhis confusion.\n\n\"Your praise is worth having. The tradition is kept up here that you are\nthe best of skaters,\" she said, with her little black-gloved hand\nbrushing a grain of hoarfrost off her muff.\n\n\"Yes, I used once to skate with passion; I wanted to reach perfection.\"\n\n\"You do everything with passion, I think,\" she said smiling. \"I should\nso like to see how you skate. Put on skates, and let us skate together.\"\n\n\"Skate together! Can that be possible?\" thought Levin, gazing at her.\n\n\"I'll put them on directly,\" he said.\n\nAnd he went off to get skates.\n\n\"It's a long while since we've seen you here, sir,\" said the attendant,\nsupporting his foot, and screwing on the heel of the skate. \"Except you,\nthere's none of the gentlemen first-rate skaters. Will that be all\nright?\" said he, tightening the strap.\n\n\"Oh, yes, yes; make haste, please,\" answered Levin, with difficulty\nrestraining the smile of rapture which would overspread his face. \"Yes,\"\nhe thought, \"this now is life, this is happiness! _Together,_ she said;\n_let us skate together!_ Speak to her now? But that's just why I'm\nafraid to speak--because I'm happy now, happy in hope, anyway.... And\nthen?.... But I must! I must! I must! Away with weakness!\"\n\nLevin rose to his feet, took off his overcoat, and scurrying over the\nrough ice round the hut, came out on the smooth ice and skated without\neffort, as it were, by simple exercise of will, increasing and\nslackening speed and turning his course. He approached with timidity,\nbut again her smile reassured him.\n\nShe gave him her hand, and they set off side by side, going faster and\nfaster, and the more rapidly they moved the more tightly she grasped his\nhand.\n\n\"With you I should soon learn; I somehow feel confidence in you,\" she\nsaid to him.\n\n\"And I have confidence in myself when you are leaning on me,\" he said,\nbut was at once panic-stricken at what he had said, and blushed. And\nindeed, no sooner had he uttered these words, when all at once, like the\nsun going behind a cloud, her face lost all its friendliness, and Levin\ndetected the familiar change in her expression that denoted the working\nof thought; a crease showed on her smooth brow.\n\n\"Is there anything troubling you?--though I've no right to ask such a\nquestion,\" he added hurriedly.\n\n\"Oh, why so?.... No, I have nothing to trouble me,\" she responded\ncoldly; and she added immediately: \"You haven't seen Mlle. Linon, have\nyou?\"\n\n\"Not yet.\"\n\n\"Go and speak to her, she likes you so much.\"\n\n\"What's wrong? I have offended her. Lord help me!\" thought Levin, and he\nflew towards the old Frenchwoman with the gray ringlets, who was sitting\non a bench. Smiling and showing her false teeth, she greeted him as an\nold friend.\n\n\"Yes, you see we're growing up,\" she said to him, glancing towards\nKitty, \"and growing old. _Tiny bear_ has grown big now!\" pursued the\nFrenchwoman, laughing, and she reminded him of his joke about the three\nyoung ladies whom he had compared to the three bears in the English\nnursery tale. \"Do you remember that's what you used to call them?\"\n\nHe remembered absolutely nothing, but she had been laughing at the joke\nfor ten years now, and was fond of it.\n\n\"Now, go and skate, go and skate. Our Kitty has learned to skate nicely,\nhasn't she?\"\n\nWhen Levin darted up to Kitty her face was no longer stern; her eyes\nlooked at him with the same sincerity and friendliness, but Levin\nfancied that in her friendliness there was a certain note of deliberate\ncomposure. And he felt depressed. After talking a little of her old\ngoverness and her peculiarities, she questioned him about his life.\n\n\"Surely you must be dull in the country in the winter, aren't you?\" she\nsaid.\n\n\"No, I'm not dull, I am very busy,\" he said, feeling that she was\nholding him in check by her composed tone, which he would not have the\nforce to break through, just as it had been at the beginning of the\nwinter.\n\n\"Are you going to stay in town long?\" Kitty questioned him.\n\n\"I don't know,\" he answered, not thinking of what he was saying. The\nthought that if he were held in check by her tone of quiet friendliness\nhe would end by going back again without deciding anything came into his\nmind, and he resolved to make a struggle against it.\n\n\"How is it you don't know?\"\n\n\"I don't know. It depends upon you,\" he said, and was immediately\nhorror-stricken at his own words.\n\nWhether it was that she had heard his words, or that she did not want to\nhear them, she made a sort of stumble, twice struck out, and hurriedly\nskated away from him. She skated up to Mlle. Linon, said something to\nher, and went towards the pavilion where the ladies took off their\nskates.\n\n\"My God! what have I done! Merciful God! help me, guide me,\" said Levin,\npraying inwardly, and at the same time, feeling a need of violent\nexercise, he skated about describing inner and outer circles.\n\nAt that moment one of the young men, the best of the skaters of the day,\ncame out of the coffee-house in his skates, with a cigarette in his\nmouth. Taking a run, he dashed down the steps in his skates, crashing\nand bounding up and down. He flew down, and without even changing the\nposition of his hands, skated away over the ice.\n\n\"Ah, that's a new trick!\" said Levin, and he promptly ran up to the top\nto do this new trick.\n\n\"Don't break your neck! it needs practice!\" Nikolay Shtcherbatsky\nshouted after him.\n\nLevin went to the steps, took a run from above as best he could, and\ndashed down, preserving his balance in this unwonted movement with his\nhands. On the last step he stumbled, but barely touching the ice with\nhis hand, with a violent effort recovered himself, and skated off,\nlaughing.\n\n\"How splendid, how nice he is!\" Kitty was thinking at that time, as she\ncame out of the pavilion with Mlle. Linon, and looked towards him with a\nsmile of quiet affection, as though he were a favorite brother. \"And can\nit be my fault, can I have done anything wrong? They talk of flirtation.\nI know it's not he that I love; but still I am happy with him, and he's\nso jolly. Only, why did he say that?...\" she mused.\n\nCatching sight of Kitty going away, and her mother meeting her at the\nsteps, Levin, flushed from his rapid exercise, stood still and pondered\na minute. He took off his skates, and overtook the mother and daughter\nat the entrance of the gardens.\n\n\"Delighted to see you,\" said Princess Shtcherbatskaya. \"On Thursdays we\nare home, as always.\"\n\n\"Today, then?\"\n\n\"We shall be pleased to see you,\" the princess said stiffly.\n\nThis stiffness hurt Kitty, and she could not resist the desire to smooth\nover her mother's coldness. She turned her head, and with a smile said:\n\n\"Good-bye till this evening.\"\n\nAt that moment Stepan Arkadyevitch, his hat cocked on one side, with\nbeaming face and eyes, strode into the garden like a conquering hero.\nBut as he approached his mother-in-law, he responded in a mournful and\ncrestfallen tone to her inquiries about Dolly's health. After a little\nsubdued and dejected conversation with his mother-in-law, he threw out\nhis chest again, and put his arm in Levin's.\n\n\"Well, shall we set off?\" he asked. \"I've been thinking about you all\nthis time, and I'm very, very glad you've come,\" he said, looking him in\nthe face with a significant air.\n\n\"Yes, come along,\" answered Levin in ecstasy, hearing unceasingly the\nsound of that voice saying, \"Good-bye till this evening,\" and seeing the\nsmile with which it was said.\n\n\"To the England or the Hermitage?\"\n\n\"I don't mind which.\"\n\n\"All right, then, the England,\" said Stepan Arkadyevitch, selecting that\nrestaurant because he owed more there than at the Hermitage, and\nconsequently considered it mean to avoid it. \"Have you got a sledge?\nThat's first-rate, for I sent my carriage home.\"\n\nThe friends hardly spoke all the way. Levin was wondering what that\nchange in Kitty's expression had meant, and alternately assuring himself\nthat there was hope, and falling into despair, seeing clearly that his\nhopes were insane, and yet all the while he felt himself quite another\nman, utterly unlike what he had been before her smile and those words,\n\"Good-bye till this evening.\"\n\nStepan Arkadyevitch was absorbed during the drive in composing the menu\nof the dinner.\n\n\"You like turbot, don't you?\" he said to Levin as they were arriving.\n\n\"Eh?\" responded Levin. \"Turbot? Yes, I'm _awfully_ fond of turbot.\"\n\n\n\nChapter 10\n\n\nWhen Levin went into the restaurant with Oblonsky, he could not help\nnoticing a certain peculiarity of expression, as it were, a restrained\nradiance, about the face and whole figure of Stepan Arkadyevitch.\nOblonsky took off his overcoat, and with his hat over one ear walked\ninto the dining room, giving directions to the Tatar waiters, who were\nclustered about him in evening coats, bearing napkins. Bowing to right\nand left to the people he met, and here as everywhere joyously greeting\nacquaintances, he went up to the sideboard for a preliminary appetizer\nof fish and vodka, and said to the painted Frenchwoman decked in\nribbons, lace, and ringlets, behind the counter, something so amusing\nthat even that Frenchwoman was moved to genuine laughter. Levin for his\npart refrained from taking any vodka simply because he felt such a\nloathing of that Frenchwoman, all made up, it seemed, of false hair,\n_poudre de riz,_ and _vinaigre de toilette_. He made haste to move away\nfrom her, as from a dirty place. His whole soul was filled with memories\nof Kitty, and there was a smile of triumph and happiness shining in his\neyes.\n\n\"This way, your excellency, please. Your excellency won't be disturbed\nhere,\" said a particularly pertinacious, white-headed old Tatar with\nimmense hips and coat-tails gaping widely behind. \"Walk in, your\nexcellency,\" he said to Levin; by way of showing his respect to Stepan\nArkadyevitch, being attentive to his guest as well.\n\nInstantly flinging a fresh cloth over the round table under the bronze\nchandelier, though it already had a table cloth on it, he pushed up\nvelvet chairs, and came to a standstill before Stepan Arkadyevitch with\na napkin and a bill of fare in his hands, awaiting his commands.\n\n\"If you prefer it, your excellency, a private room will be free\ndirectly; Prince Golistin with a lady. Fresh oysters have come in.\"\n\n\"Ah! oysters.\"\n\nStepan Arkadyevitch became thoughtful.\n\n\"How if we were to change our program, Levin?\" he said, keeping his\nfinger on the bill of fare. And his face expressed serious hesitation.\n\"Are the oysters good? Mind now.\"\n\n\"They're Flensburg, your excellency. We've no Ostend.\"\n\n\"Flensburg will do, but are they fresh?\"\n\n\"Only arrived yesterday.\"\n\n\"Well, then, how if we were to begin with oysters, and so change the\nwhole program? Eh?\"\n\n\"It's all the same to me. I should like cabbage soup and porridge better\nthan anything; but of course there's nothing like that here.\"\n\n\"_Porridge a la Russe,_ your honor would like?\" said the Tatar, bending\ndown to Levin, like a nurse speaking to a child.\n\n\"No, joking apart, whatever you choose is sure to be good. I've been\nskating, and I'm hungry. And don't imagine,\" he added, detecting a look\nof dissatisfaction on Oblonsky's face, \"that I shan't appreciate your\nchoice. I am fond of good things.\"\n\n\"I should hope so! After all, it's one of the pleasures of life,\" said\nStepan Arkadyevitch. \"Well, then, my friend, you give us two--or better\nsay three--dozen oysters, clear soup with vegetables....\"\n\n\"_Printaniere,_\" prompted the Tatar. But Stepan Arkadyevitch apparently\ndid not care to allow him the satisfaction of giving the French names of\nthe dishes.\n\n\"With vegetables in it, you know. Then turbot with thick sauce, then ...\nroast beef; and mind it's good. Yes, and capons, perhaps, and then\nsweets.\"\n\nThe Tatar, recollecting that it was Stepan Arkadyevitch's way not to\ncall the dishes by the names in the French bill of fare, did not repeat\nthem after him, but could not resist rehearsing the whole menu to\nhimself according to the bill:--\"_Soupe printaniere, turbot, sauce\nBeaumarchais, poulard a l'estragon, macedoine de fruits_ ... etc.,\" and\nthen instantly, as though worked by springs, laying down one bound bill\nof fare, he took up another, the list of wines, and submitted it to\nStepan Arkadyevitch.\n\n\"What shall we drink?\"\n\n\"What you like, only not too much. Champagne,\" said Levin.\n\n\"What! to start with? You're right though, I dare say. Do you like the\nwhite seal?\"\n\n\"_Cachet blanc,_\" prompted the Tatar.\n\n\"Very well, then, give us that brand with the oysters, and then we'll\nsee.\"\n\n\"Yes, sir. And what table wine?\"\n\n\"You can give us Nuits. Oh, no, better the classic Chablis.\"\n\n\"Yes, sir. And _your_ cheese, your excellency?\"\n\n\"Oh, yes, Parmesan. Or would you like another?\"\n\n\"No, it's all the same to me,\" said Levin, unable to suppress a smile.\n\nAnd the Tatar ran off with flying coat-tails, and in five minutes darted\nin with a dish of opened oysters on mother-of-pearl shells, and a bottle\nbetween his fingers.\n\nStepan Arkadyevitch crushed the starchy napkin, tucked it into his\nwaistcoat, and settling his arms comfortably, started on the oysters.\n\n\"Not bad,\" he said, stripping the oysters from the pearly shell with a\nsilver fork, and swallowing them one after another. \"Not bad,\" he\nrepeated, turning his dewy, brilliant eyes from Levin to the Tatar.\n\nLevin ate the oysters indeed, though white bread and cheese would have\npleased him better. But he was admiring Oblonsky. Even the Tatar,\nuncorking the bottle and pouring the sparkling wine into the delicate\nglasses, glanced at Stepan Arkadyevitch, and settled his white cravat\nwith a perceptible smile of satisfaction.\n\n\"You don't care much for oysters, do you?\" said Stepan Arkadyevitch,\nemptying his wine glass, \"or you're worried about something. Eh?\"\n\nHe wanted Levin to be in good spirits. But it was not that Levin was not\nin good spirits; he was ill at ease. With what he had in his soul, he\nfelt sore and uncomfortable in the restaurant, in the midst of private\nrooms where men were dining with ladies, in all this fuss and bustle;\nthe surroundings of bronzes, looking glasses, gas, and waiters--all of\nit was offensive to him. He was afraid of sullying what his soul was\nbrimful of.\n\n\"I? Yes, I am; but besides, all this bothers me,\" he said. \"You can't\nconceive how queer it all seems to a country person like me, as queer as\nthat gentleman's nails I saw at your place...\"\n\n\"Yes, I saw how much interested you were in poor Grinevitch's nails,\"\nsaid Stepan Arkadyevitch, laughing.\n\n\"It's too much for me,\" responded Levin. \"Do try, now, and put yourself\nin my place, take the point of view of a country person. We in the\ncountry try to bring our hands into such a state as will be most\nconvenient for working with. So we cut our nails; sometimes we turn up\nour sleeves. And here people purposely let their nails grow as long as\nthey will, and link on small saucers by way of studs, so that they can\ndo nothing with their hands.\"\n\nStepan Arkadyevitch smiled gaily.\n\n\"Oh, yes, that's just a sign that he has no need to do coarse work. His\nwork is with the mind...\"\n\n\"Maybe. But still it's queer to me, just as at this moment it seems\nqueer to me that we country folks try to get our meals over as soon as\nwe can, so as to be ready for our work, while here are we trying to drag\nout our meal as long as possible, and with that object eating\noysters...\"\n\n\"Why, of course,\" objected Stepan Arkadyevitch. \"But that's just the aim\nof civilization--to make everything a source of enjoyment.\"\n\n\"Well, if that's its aim, I'd rather be a savage.\"\n\n\"And so you are a savage. All you Levins are savages.\"\n\nLevin sighed. He remembered his brother Nikolay, and felt ashamed and\nsore, and he scowled; but Oblonsky began speaking of a subject which at\nonce drew his attention.\n\n\"Oh, I say, are you going tonight to our people, the Shtcherbatskys', I\nmean?\" he said, his eyes sparkling significantly as he pushed away the\nempty rough shells, and drew the cheese towards him.\n\n\"Yes, I shall certainly go,\" replied Levin; \"though I fancied the\nprincess was not very warm in her invitation.\"\n\n\"What nonsense! That's her manner.... Come, boy, the soup!.... That's\nher manner--_grande dame,_\" said Stepan Arkadyevitch. \"I'm coming, too,\nbut I have to go to the Countess Bonina's rehearsal. Come, isn't it true\nthat you're a savage? How do you explain the sudden way in which you\nvanished from Moscow? The Shtcherbatskys were continually asking me\nabout you, as though I ought to know. The only thing I know is that you\nalways do what no one else does.\"\n\n\"Yes,\" said Levin, slowly and with emotion, \"you're right. I am a\nsavage. Only, my savageness is not in having gone away, but in coming\nnow. Now I have come...\"\n\n\"Oh, what a lucky fellow you are!\" broke in Stepan Arkadyevitch, looking\ninto Levin's eyes.\n\n\"Why?\"\n\n    \"I know a gallant steed by tokens sure,\n    And by his eyes I know a youth in love,\"\n\ndeclaimed Stepan Arkadyevitch. \"Everything is before you.\"\n\n\"Why, is it over for you already?\"\n\n\"No; not over exactly, but the future is yours, and the present is mine,\nand the present--well, it's not all that it might be.\"\n\n\"How so?\"\n\n\"Oh, things go wrong. But I don't want to talk of myself, and besides I\ncan't explain it all,\" said Stepan Arkadyevitch. \"Well, why have you\ncome to Moscow, then?.... Hi! take away!\" he called to the Tatar.\n\n\"You guess?\" responded Levin, his eyes like deep wells of light fixed on\nStepan Arkadyevitch.\n\n\"I guess, but I can't be the first to talk about it. You can see by that\nwhether I guess right or wrong,\" said Stepan Arkadyevitch, gazing at\nLevin with a subtle smile.\n\n\"Well, and what have you to say to me?\" said Levin in a quivering voice,\nfeeling that all the muscles of his face were quivering too. \"How do you\nlook at the question?\"\n\nStepan Arkadyevitch slowly emptied his glass of Chablis, never taking\nhis eyes off Levin.\n\n\"I?\" said Stepan Arkadyevitch, \"there's nothing I desire so much as\nthat--nothing! It would be the best thing that could be.\"\n\n\"But you're not making a mistake? You know what we're speaking of?\" said\nLevin, piercing him with his eyes. \"You think it's possible?\"\n\n\"I think it's possible. Why not possible?\"\n\n\"No! do you really think it's possible? No, tell me all you think! Oh,\nbut if ... if refusal's in store for me!... Indeed I feel sure...\"\n\n\"Why should you think that?\" said Stepan Arkadyevitch, smiling at his\nexcitement.\n\n\"It seems so to me sometimes. That will be awful for me, and for her\ntoo.\"\n\n\"Oh, well, anyway there's nothing awful in it for a girl. Every girl's\nproud of an offer.\"\n\n\"Yes, every girl, but not she.\"\n\nStepan Arkadyevitch smiled. He so well knew that feeling of Levin's,\nthat for him all the girls in the world were divided into two classes:\none class--all the girls in the world except her, and those girls with\nall sorts of human weaknesses, and very ordinary girls: the other\nclass--she alone, having no weaknesses of any sort and higher than all\nhumanity.\n\n\"Stay, take some sauce,\" he said, holding back Levin's hand as it pushed\naway the sauce.\n\nLevin obediently helped himself to sauce, but would not let Stepan\nArkadyevitch go on with his dinner.\n\n\"No, stop a minute, stop a minute,\" he said. \"You must understand that\nit's a question of life and death for me. I have never spoken to any one\nof this. And there's no one I could speak of it to, except you. You know\nwe're utterly unlike each other, different tastes and views and\neverything; but I know you're fond of me and understand me, and that's\nwhy I like you awfully. But for God's sake, be quite straightforward\nwith me.\"\n\n\"I tell you what I think,\" said Stepan Arkadyevitch, smiling. \"But I'll\nsay more: my wife is a wonderful woman...\" Stepan Arkadyevitch sighed,\nremembering his position with his wife, and, after a moment's silence,\nresumed--\"She has a gift of foreseeing things. She sees right through\npeople; but that's not all; she knows what will come to pass, especially\nin the way of marriages. She foretold, for instance, that Princess\nShahovskaya would marry Brenteln. No one would believe it, but it came\nto pass. And she's on your side.\"\n\n\"How do you mean?\"\n\n\"It's not only that she likes you--she says that Kitty is certain to be\nyour wife.\"\n\nAt these words Levin's face suddenly lighted up with a smile, a smile\nnot far from tears of emotion.\n\n\"She says that!\" cried Levin. \"I always said she was exquisite, your\nwife. There, that's enough, enough said about it,\" he said, getting up\nfrom his seat.\n\n\"All right, but do sit down.\"\n\nBut Levin could not sit down. He walked with his firm tread twice up and\ndown the little cage of a room, blinked his eyelids that his tears might\nnot fall, and only then sat down to the table.\n\n\"You must understand,\" said he, \"it's not love. I've been in love, but\nit's not that. It's not my feeling, but a sort of force outside me has\ntaken possession of me. I went away, you see, because I made up my mind\nthat it could never be, you understand, as a happiness that does not\ncome on earth; but I've struggled with myself, I see there's no living\nwithout it. And it must be settled.\"\n\n\"What did you go away for?\"\n\n\"Ah, stop a minute! Ah, the thoughts that come crowding on one! The\nquestions one must ask oneself! Listen. You can't imagine what you've\ndone for me by what you said. I'm so happy that I've become positively\nhateful; I've forgotten everything. I heard today that my brother\nNikolay ... you know, he's here ... I had even forgotten him. It seems\nto me that he's happy too. It's a sort of madness. But one thing's\nawful.... Here, you've been married, you know the feeling ... it's awful\nthat we--old--with a past ... not of love, but of sins ... are brought\nall at once so near to a creature pure and innocent; it's loathsome, and\nthat's why one can't help feeling oneself unworthy.\"\n\n\"Oh, well, you've not many sins on your conscience.\"\n\n\"Alas! all the same,\" said Levin, \"when with loathing I go over my life,\nI shudder and curse and bitterly regret it.... Yes.\"\n\n\"What would you have? The world's made so,\" said Stepan Arkadyevitch.\n\n\"The one comfort is like that prayer, which I always liked: 'Forgive me\nnot according to my unworthiness, but according to Thy lovingkindness.'\nThat's the only way she can forgive me.\"\n\n\n\nChapter 11\n\n\nLevin emptied his glass, and they were silent for a while.\n\n\"There's one other thing I ought to tell you. Do you know Vronsky?\"\nStepan Arkadyevitch asked Levin.\n\n\"No, I don't. Why do you ask?\"\n\n\"Give us another bottle,\" Stepan Arkadyevitch directed the Tatar, who\nwas filling up their glasses and fidgeting round them just when he was\nnot wanted.\n\n\"Why you ought to know Vronsky is that he's one of your rivals.\"\n\n\"Who's Vronsky?\" said Levin, and his face was suddenly transformed from\nthe look of childlike ecstasy which Oblonsky had just been admiring to\nan angry and unpleasant expression.\n\n\"Vronsky is one of the sons of Count Kirill Ivanovitch Vronsky, and one\nof the finest specimens of the gilded youth of Petersburg. I made his\nacquaintance in Tver when I was there on official business, and he came\nthere for the levy of recruits. Fearfully rich, handsome, great\nconnections, an aide-de-camp, and with all that a very nice,\ngood-natured fellow. But he's more than simply a good-natured fellow, as\nI've found out here--he's a cultivated man, too, and very intelligent;\nhe's a man who'll make his mark.\"\n\nLevin scowled and was dumb.\n\n\"Well, he turned up here soon after you'd gone, and as I can see, he's\nover head and ears in love with Kitty, and you know that her mother...\"\n\n\"Excuse me, but I know nothing,\" said Levin, frowning gloomily. And\nimmediately he recollected his brother Nikolay and how hateful he was to\nhave been able to forget him.\n\n\"You wait a bit, wait a bit,\" said Stepan Arkadyevitch, smiling and\ntouching his hand. \"I've told you what I know, and I repeat that in this\ndelicate and tender matter, as far as one can conjecture, I believe the\nchances are in your favor.\"\n\nLevin dropped back in his chair; his face was pale.\n\n\"But I would advise you to settle the thing as soon as may be,\" pursued\nOblonsky, filling up his glass.\n\n\"No, thanks, I can't drink any more,\" said Levin, pushing away his\nglass. \"I shall be drunk.... Come, tell me how are you getting on?\" he\nwent on, obviously anxious to change the conversation.\n\n\"One word more: in any case I advise you to settle the question soon.\nTonight I don't advise you to speak,\" said Stepan Arkadyevitch. \"Go\nround tomorrow morning, make an offer in due form, and God bless you...\"\n\n\"Oh, do you still think of coming to me for some shooting? Come next\nspring, do,\" said Levin.\n\nNow his whole soul was full of remorse that he had begun this\nconversation with Stepan Arkadyevitch. A feeling such as his was\nprofaned by talk of the rivalry of some Petersburg officer, of the\nsuppositions and the counsels of Stepan Arkadyevitch.\n\nStepan Arkadyevitch smiled. He knew what was passing in Levin's soul.\n\n\"I'll come some day,\" he said. \"But women, my boy, they're the pivot\neverything turns upon. Things are in a bad way with me, very bad. And\nit's all through women. Tell me frankly now,\" he pursued, picking up a\ncigar and keeping one hand on his glass; \"give me your advice.\"\n\n\"Why, what is it?\"\n\n\"I'll tell you. Suppose you're married, you love your wife, but you're\nfascinated by another woman...\"\n\n\"Excuse me, but I'm absolutely unable to comprehend how ... just as I\ncan't comprehend how I could now, after my dinner, go straight to a\nbaker's shop and steal a roll.\"\n\nStepan Arkadyevitch's eyes sparkled more than usual.\n\n\"Why not? A roll will sometimes smell so good one can't resist it.\"\n\n    \"Himmlisch ist's, wenn ich bezwungen\n    Meine irdische Begier;\n    Aber doch wenn's nich gelungen\n    Hatt' ich auch recht huebsch Plaisir!\"\n\nAs he said this, Stepan Arkadyevitch smiled subtly. Levin, too, could\nnot help smiling.\n\n\"Yes, but joking apart,\" resumed Stepan Arkadyevitch, \"you must\nunderstand that the woman is a sweet, gentle loving creature, poor and\nlonely, and has sacrificed everything. Now, when the thing's done, don't\nyou see, can one possibly cast her off? Even supposing one parts from\nher, so as not to break up one's family life, still, can one help\nfeeling for her, setting her on her feet, softening her lot?\"\n\n\"Well, you must excuse me there. You know to me all women are divided\ninto two classes ... at least no ... truer to say: there are women and\nthere are ... I've never seen exquisite fallen beings, and I never shall\nsee them, but such creatures as that painted Frenchwoman at the counter\nwith the ringlets are vermin to my mind, and all fallen women are the\nsame.\"\n\n\"But the Magdalen?\"\n\n\"Ah, drop that! Christ would never have said those words if He had known\nhow they would be abused. Of all the Gospel those words are the only\nones remembered. However, I'm not saying so much what I think, as what I\nfeel. I have a loathing for fallen women. You're afraid of spiders, and\nI of these vermin. Most likely you've not made a study of spiders and\ndon't know their character; and so it is with me.\"\n\n\"It's very well for you to talk like that; it's very much like that\ngentleman in Dickens who used to fling all difficult questions over his\nright shoulder. But to deny the facts is no answer. What's to be\ndone--you tell me that, what's to be done? Your wife gets older, while\nyou're full of life. Before you've time to look round, you feel that you\ncan't love your wife with love, however much you may esteem her. And\nthen all at once love turns up, and you're done for, done for,\" Stepan\nArkadyevitch said with weary despair.\n\nLevin half smiled.\n\n\"Yes, you're done for,\" resumed Oblonsky. \"But what's to be done?\"\n\n\"Don't steal rolls.\"\n\nStepan Arkadyevitch laughed outright.\n\n\"Oh, moralist! But you must understand, there are two women; one insists\nonly on her rights, and those rights are your love, which you can't give\nher; and the other sacrifices everything for you and asks for nothing.\nWhat are you to do? How are you to act? There's a fearful tragedy in\nit.\"\n\n\"If you care for my profession of faith as regards that, I'll tell you\nthat I don't believe there was any tragedy about it. And this is why. To\nmy mind, love ... both the sorts of love, which you remember Plato\ndefines in his Banquet, served as the test of men. Some men only\nunderstand one sort, and some only the other. And those who only know\nthe non-platonic love have no need to talk of tragedy. In such love\nthere can be no sort of tragedy. 'I'm much obliged for the\ngratification, my humble respects'--that's all the tragedy. And in\nplatonic love there can be no tragedy, because in that love all is clear\nand pure, because...\"\n\nAt that instant Levin recollected his own sins and the inner conflict he\nhad lived through. And he added unexpectedly:\n\n\"But perhaps you are right. Very likely ... I don't know, I don't know.\"\n\n\"It's this, don't you see,\" said Stepan Arkadyevitch, \"you're very much\nall of a piece. That's your strong point and your failing. You have a\ncharacter that's all of a piece, and you want the whole of life to be of\na piece too--but that's not how it is. You despise public official work\nbecause you want the reality to be invariably corresponding all the\nwhile with the aim--and that's not how it is. You want a man's work,\ntoo, always to have a defined aim, and love and family life always to be\nundivided--and that's not how it is. All the variety, all the charm, all\nthe beauty of life is made up of light and shadow.\"\n\nLevin sighed and made no reply. He was thinking of his own affairs, and\ndid not hear Oblonsky.\n\nAnd suddenly both of them felt that though they were friends, though\nthey had been dining and drinking together, which should have drawn them\ncloser, yet each was thinking only of his own affairs, and they had\nnothing to do with one another. Oblonsky had more than once experienced\nthis extreme sense of aloofness, instead of intimacy, coming on after\ndinner, and he knew what to do in such cases.\n\n\"Bill!\" he called, and he went into the next room where he promptly came\nacross an aide-de-camp of his acquaintance and dropped into conversation\nwith him about an actress and her protector. And at once in the\nconversation with the aide-de-camp Oblonsky had a sense of relaxation\nand relief after the conversation with Levin, which always put him to\ntoo great a mental and spiritual strain.\n\nWhen the Tatar appeared with a bill for twenty-six roubles and odd\nkopecks, besides a tip for himself, Levin, who would another time have\nbeen horrified, like any one from the country, at his share of fourteen\nroubles, did not notice it, paid, and set off homewards to dress and go\nto the Shtcherbatskys' there to decide his fate.\n\n\n\nChapter 12\n\n\nThe young Princess Kitty Shtcherbatskaya was eighteen. It was the first\nwinter that she had been out in the world. Her success in society had\nbeen greater than that of either of her elder sisters, and greater even\nthan her mother had anticipated. To say nothing of the young men who\ndanced at the Moscow balls being almost all in love with Kitty, two\nserious suitors had already this first winter made their appearance:\nLevin, and immediately after his departure, Count Vronsky.\n\nLevin's appearance at the beginning of the winter, his frequent visits,\nand evident love for Kitty, had led to the first serious conversations\nbetween Kitty's parents as to her future, and to disputes between them.\nThe prince was on Levin's side; he said he wished for nothing better for\nKitty. The princess for her part, going round the question in the manner\npeculiar to women, maintained that Kitty was too young, that Levin had\ndone nothing to prove that he had serious intentions, that Kitty felt no\ngreat attraction to him, and other side issues; but she did not state\nthe principal point, which was that she looked for a better match for\nher daughter, and that Levin was not to her liking, and she did not\nunderstand him. When Levin had abruptly departed, the princess was\ndelighted, and said to her husband triumphantly: \"You see I was right.\"\nWhen Vronsky appeared on the scene, she was still more delighted,\nconfirmed in her opinion that Kitty was to make not simply a good, but a\nbrilliant match.\n\nIn the mother's eyes there could be no comparison between Vronsky and\nLevin. She disliked in Levin his strange and uncompromising opinions and\nhis shyness in society, founded, as she supposed, on his pride and his\nqueer sort of life, as she considered it, absorbed in cattle and\npeasants. She did not very much like it that he, who was in love with\nher daughter, had kept coming to the house for six weeks, as though he\nwere waiting for something, inspecting, as though he were afraid he\nmight be doing them too great an honor by making an offer, and did not\nrealize that a man, who continually visits at a house where there is a\nyoung unmarried girl, is bound to make his intentions clear. And\nsuddenly, without doing so, he disappeared. \"It's as well he's not\nattractive enough for Kitty to have fallen in love with him,\" thought\nthe mother.\n\nVronsky satisfied all the mother's desires. Very wealthy, clever, of\naristocratic family, on the highroad to a brilliant career in the army\nand at court, and a fascinating man. Nothing better could be wished for.\n\nVronsky openly flirted with Kitty at balls, danced with her, and came\ncontinually to the house, consequently there could be no doubt of the\nseriousness of his intentions. But, in spite of that, the mother had\nspent the whole of that winter in a state of terrible anxiety and\nagitation.\n\nPrincess Shtcherbatskaya had herself been married thirty years ago, her\naunt arranging the match. Her husband, about whom everything was well\nknown before hand, had come, looked at his future bride, and been looked\nat. The match-making aunt had ascertained and communicated their mutual\nimpression. That impression had been favorable. Afterwards, on a day\nfixed beforehand, the expected offer was made to her parents, and\naccepted. All had passed very simply and easily. So it seemed, at least,\nto the princess. But over her own daughters she had felt how far from\nsimple and easy is the business, apparently so commonplace, of marrying\noff one's daughters. The panics that had been lived through, the\nthoughts that had been brooded over, the money that had been wasted, and\nthe disputes with her husband over marrying the two elder girls, Darya\nand Natalia! Now, since the youngest had come out, she was going through\nthe same terrors, the same doubts, and still more violent quarrels with\nher husband than she had over the elder girls. The old prince, like all\nfathers indeed, was exceedingly punctilious on the score of the honor\nand reputation of his daughters. He was irrationally jealous over his\ndaughters, especially over Kitty, who was his favorite. At every turn he\nhad scenes with the princess for compromising her daughter. The princess\nhad grown accustomed to this already with her other daughters, but now\nshe felt that there was more ground for the prince's touchiness. She saw\nthat of late years much was changed in the manners of society, that a\nmother's duties had become still more difficult. She saw that girls of\nKitty's age formed some sort of clubs, went to some sort of lectures,\nmixed freely in men's society; drove about the streets alone, many of\nthem did not curtsey, and, what was the most important thing, all the\ngirls were firmly convinced that to choose their husbands was their own\naffair, and not their parents'. \"Marriages aren't made nowadays as they\nused to be,\" was thought and said by all these young girls, and even by\ntheir elders. But how marriages were made now, the princess could not\nlearn from any one. The French fashion--of the parents arranging their\nchildren's future--was not accepted; it was condemned. The English\nfashion of the complete independence of girls was also not accepted, and\nnot possible in Russian society. The Russian fashion of match-making by\nthe offices of intermediate persons was for some reason considered\nunseemly; it was ridiculed by every one, and by the princess herself.\nBut how girls were to be married, and how parents were to marry them, no\none knew. Everyone with whom the princess had chanced to discuss the\nmatter said the same thing: \"Mercy on us, it's high time in our day to\ncast off all that old-fashioned business. It's the young people have to\nmarry; and not their parents; and so we ought to leave the young people\nto arrange it as they choose.\" It was very easy for anyone to say that\nwho had no daughters, but the princess realized that in the process of\ngetting to know each other, her daughter might fall in love, and fall in\nlove with someone who did not care to marry her or who was quite unfit\nto be her husband. And, however much it was instilled into the princess\nthat in our times young people ought to arrange their lives for\nthemselves, she was unable to believe it, just as she would have been\nunable to believe that, at any time whatever, the most suitable\nplaythings for children five years old ought to be loaded pistols. And\nso the princess was more uneasy over Kitty than she had been over her\nelder sisters.\n\nNow she was afraid that Vronsky might confine himself to simply flirting\nwith her daughter. She saw that her daughter was in love with him, but\ntried to comfort herself with the thought that he was an honorable man,\nand would not do this. But at the same time she knew how easy it is,\nwith the freedom of manners of today, to turn a girl's head, and how\nlightly men generally regard such a crime. The week before, Kitty had\ntold her mother of a conversation she had with Vronsky during a mazurka.\nThis conversation had partly reassured the princess; but perfectly at\nease she could not be. Vronsky had told Kitty that both he and his\nbrother were so used to obeying their mother that they never made up\ntheir minds to any important undertaking without consulting her. \"And\njust now, I am impatiently awaiting my mother's arrival from Petersburg,\nas peculiarly fortunate,\" he told her.\n\nKitty had repeated this without attaching any significance to the words.\nBut her mother saw them in a different light. She knew that the old lady\nwas expected from day to day, that she would be pleased at her son's\nchoice, and she felt it strange that he should not make his offer\nthrough fear of vexing his mother. However, she was so anxious for the\nmarriage itself, and still more for relief from her fears, that she\nbelieved it was so. Bitter as it was for the princess to see the\nunhappiness of her eldest daughter, Dolly, on the point of leaving her\nhusband, her anxiety over the decision of her youngest daughter's fate\nengrossed all her feelings. Today, with Levin's reappearance, a fresh\nsource of anxiety arose. She was afraid that her daughter, who had at\none time, as she fancied, a feeling for Levin, might, from extreme sense\nof honor, refuse Vronsky, and that Levin's arrival might generally\ncomplicate and delay the affair so near being concluded.\n\n\"Why, has he been here long?\" the princess asked about Levin, as they\nreturned home.\n\n\"He came today, mamma.\"\n\n\"There's one thing I want to say...\" began the princess, and from her\nserious and alert face, Kitty guessed what it would be.\n\n\"Mamma,\" she said, flushing hotly and turning quickly to her, \"please,\nplease don't say anything about that. I know, I know all about it.\"\n\nShe wished for what her mother wished for, but the motives of her\nmother's wishes wounded her.\n\n\"I only want to say that to raise hopes...\"\n\n\"Mamma, darling, for goodness' sake, don't talk about it. It's so\nhorrible to talk about it.\"\n\n\"I won't,\" said her mother, seeing the tears in her daughter's eyes;\n\"but one thing, my love; you promised me you would have no secrets from\nme. You won't?\"\n\n\"Never, mamma, none,\" answered Kitty, flushing a little, and looking her\nmother straight in the face, \"but there's no use in my telling you\nanything, and I ... I ... if I wanted to, I don't know what to say or\nhow ... I don't know...\"\n\n\"No, she could not tell an untruth with those eyes,\" thought the mother,\nsmiling at her agitation and happiness. The princess smiled that what\nwas taking place just now in her soul seemed to the poor child so\nimmense and so important.\n\n\n\nChapter 13\n\n\nAfter dinner, and till the beginning of the evening, Kitty was feeling a\nsensation akin to the sensation of a young man before a battle. Her\nheart throbbed violently, and her thoughts would not rest on anything.\n\nShe felt that this evening, when they would both meet for the first\ntime, would be a turning point in her life. And she was continually\npicturing them to herself, at one moment each separately, and then both\ntogether. When she mused on the past, she dwelt with pleasure, with\ntenderness, on the memories of her relations with Levin. The memories of\nchildhood and of Levin's friendship with her dead brother gave a special\npoetic charm to her relations with him. His love for her, of which she\nfelt certain, was flattering and delightful to her; and it was pleasant\nfor her to think of Levin. In her memories of Vronsky there always\nentered a certain element of awkwardness, though he was in the highest\ndegree well-bred and at ease, as though there were some false note--not\nin Vronsky, he was very simple and nice, but in herself, while with\nLevin she felt perfectly simple and clear. But, on the other hand,\ndirectly she thought of the future with Vronsky, there arose before her\na perspective of brilliant happiness; with Levin the future seemed\nmisty.\n\nWhen she went upstairs to dress, and looked into the looking-glass, she\nnoticed with joy that it was one of her good days, and that she was in\ncomplete possession of all her forces,--she needed this so for what lay\nbefore her: she was conscious of external composure and free grace in\nher movements.\n\nAt half-past seven she had only just gone down into the drawing room,\nwhen the footman announced, \"Konstantin Dmitrievitch Levin.\" The\nprincess was still in her room, and the prince had not come in. \"So it\nis to be,\" thought Kitty, and all the blood seemed to rush to her heart.\nShe was horrified at her paleness, as she glanced into the\nlooking-glass. At that moment she knew beyond doubt that he had come\nearly on purpose to find her alone and to make her an offer. And only\nthen for the first time the whole thing presented itself in a new,\ndifferent aspect; only then she realized that the question did not\naffect her only--with whom she would be happy, and whom she loved--but\nthat she would have that moment to wound a man whom she liked. And to\nwound him cruelly. What for? Because he, dear fellow, loved her, was in\nlove with her. But there was no help for it, so it must be, so it would\nhave to be.\n\n\"My God! shall I myself really have to say it to him?\" she thought. \"Can\nI tell him I don't love him? That will be a lie. What am I to say to\nhim? That I love someone else? No, that's impossible. I'm going away,\nI'm going away.\"\n\nShe had reached the door, when she heard his step. \"No! it's not honest.\nWhat have I to be afraid of? I have done nothing wrong. What is to be,\nwill be! I'll tell the truth. And with him one can't be ill at ease.\nHere he is,\" she said to herself, seeing his powerful, shy figure, with\nhis shining eyes fixed on her. She looked straight into his face, as\nthough imploring him to spare her, and gave her hand.\n\n\"It's not time yet; I think I'm too early,\" he said glancing round the\nempty drawing room. When he saw that his expectations were realized,\nthat there was nothing to prevent him from speaking, his face became\ngloomy.\n\n\"Oh, no,\" said Kitty, and sat down at the table.\n\n\"But this was just what I wanted, to find you alone,\" he began, not\nsitting down, and not looking at her, so as not to lose courage.\n\n\"Mamma will be down directly. She was very much tired.... Yesterday...\"\n\nShe talked on, not knowing what her lips were uttering, and not taking\nher supplicating and caressing eyes off him.\n\nHe glanced at her; she blushed, and ceased speaking.\n\n\"I told you I did not know whether I should be here long ... that it\ndepended on you...\"\n\nShe dropped her head lower and lower, not knowing herself what answer\nshe should make to what was coming.\n\n\"That it depended on you,\" he repeated. \"I meant to say ... I meant to\nsay ... I came for this ... to be my wife!\" he brought out, not knowing\nwhat he was saying; but feeling that the most terrible thing was said,\nhe stopped short and looked at her...\n\nShe was breathing heavily, not looking at him. She was feeling ecstasy.\nHer soul was flooded with happiness. She had never anticipated that the\nutterance of love would produce such a powerful effect on her. But it\nlasted only an instant. She remembered Vronsky. She lifted her clear,\ntruthful eyes, and seeing his desperate face, she answered hastily:\n\n\"That cannot be ... forgive me.\"\n\nA moment ago, and how close she had been to him, of what importance in\nhis life! And how aloof and remote from him she had become now!\n\n\"It was bound to be so,\" he said, not looking at her.\n\nHe bowed, and was meaning to retreat.\n\n\n\nChapter 14\n\n\nBut at that very moment the princess came in. There was a look of horror\non her face when she saw them alone, and their disturbed faces. Levin\nbowed to her, and said nothing. Kitty did not speak nor lift her eyes.\n\"Thank God, she has refused him,\" thought the mother, and her face\nlighted up with the habitual smile with which she greeted her guests on\nThursdays. She sat down and began questioning Levin about his life in\nthe country. He sat down again, waiting for other visitors to arrive, in\norder to retreat unnoticed.\n\nFive minutes later there came in a friend of Kitty's, married the\npreceding winter, Countess Nordston.\n\nShe was a thin, sallow, sickly, and nervous woman, with brilliant black\neyes. She was fond of Kitty, and her affection for her showed itself, as\nthe affection of married women for girls always does, in the desire to\nmake a match for Kitty after her own ideal of married happiness; she\nwanted her to marry Vronsky. Levin she had often met at the\nShtcherbatskys' early in the winter, and she had always disliked him.\nHer invariable and favorite pursuit, when they met, consisted in making\nfun of him.\n\n\"I do like it when he looks down at me from the height of his grandeur,\nor breaks off his learned conversation with me because I'm a fool, or is\ncondescending to me. I like that so; to see him condescending! I am so\nglad he can't bear me,\" she used to say of him.\n\nShe was right, for Levin actually could not bear her, and despised her\nfor what she was proud of and regarded as a fine characteristic--her\nnervousness, her delicate contempt and indifference for everything\ncoarse and earthly.\n\nThe Countess Nordston and Levin got into that relation with one another\nnot seldom seen in society, when two persons, who remain externally on\nfriendly terms, despise each other to such a degree that they cannot\neven take each other seriously, and cannot even be offended by each\nother.\n\nThe Countess Nordston pounced upon Levin at once.\n\n\"Ah, Konstantin Dmitrievitch! So you've come back to our corrupt\nBabylon,\" she said, giving him her tiny, yellow hand, and recalling what\nhe had chanced to say early in the winter, that Moscow was a Babylon.\n\"Come, is Babylon reformed, or have you degenerated?\" she added,\nglancing with a simper at Kitty.\n\n\"It's very flattering for me, countess, that you remember my words so\nwell,\" responded Levin, who had succeeded in recovering his composure,\nand at once from habit dropped into his tone of joking hostility to the\nCountess Nordston. \"They must certainly make a great impression on you.\"\n\n\"Oh, I should think so! I always note them all down. Well, Kitty, have\nyou been skating again?...\"\n\nAnd she began talking to Kitty. Awkward as it was for Levin to withdraw\nnow, it would still have been easier for him to perpetrate this\nawkwardness than to remain all the evening and see Kitty, who glanced at\nhim now and then and avoided his eyes. He was on the point of getting\nup, when the princess, noticing that he was silent, addressed him.\n\n\"Shall you be long in Moscow? You're busy with the district council,\nthough, aren't you, and can't be away for long?\"\n\n\"No, princess, I'm no longer a member of the council,\" he said. \"I have\ncome up for a few days.\"\n\n\"There's something the matter with him,\" thought Countess Nordston,\nglancing at his stern, serious face. \"He isn't in his old argumentative\nmood. But I'll draw him out. I do love making a fool of him before\nKitty, and I'll do it.\"\n\n\"Konstantin Dmitrievitch,\" she said to him, \"do explain to me, please,\nwhat's the meaning of it. You know all about such things. At home in our\nvillage of Kaluga all the peasants and all the women have drunk up all\nthey possessed, and now they can't pay us any rent. What's the meaning\nof that? You always praise the peasants so.\"\n\nAt that instant another lady came into the room, and Levin got up.\n\n\"Excuse me, countess, but I really know nothing about it, and can't tell\nyou anything,\" he said, and looked round at the officer who came in\nbehind the lady.\n\n\"That must be Vronsky,\" thought Levin, and, to be sure of it, glanced at\nKitty. She had already had time to look at Vronsky, and looked round at\nLevin. And simply from the look in her eyes, that grew unconsciously\nbrighter, Levin knew that she loved that man, knew it as surely as if\nshe had told him so in words. But what sort of a man was he? Now,\nwhether for good or for ill, Levin could not choose but remain; he must\nfind out what the man was like whom she loved.\n\nThere are people who, on meeting a successful rival, no matter in what,\nare at once disposed to turn their backs on everything good in him, and\nto see only what is bad. There are people, on the other hand, who desire\nabove all to find in that lucky rival the qualities by which he has\noutstripped them, and seek with a throbbing ache at heart only what is\ngood. Levin belonged to the second class. But he had no difficulty in\nfinding what was good and attractive in Vronsky. It was apparent at the\nfirst glance. Vronsky was a squarely built, dark man, not very tall,\nwith a good-humored, handsome, and exceedingly calm and resolute face.\nEverything about his face and figure, from his short-cropped black hair\nand freshly shaven chin down to his loosely fitting, brand-new uniform,\nwas simple and at the same time elegant. Making way for the lady who had\ncome in, Vronsky went up to the princess and then to Kitty.\n\nAs he approached her, his beautiful eyes shone with a specially tender\nlight, and with a faint, happy, and modestly triumphant smile (so it\nseemed to Levin), bowing carefully and respectfully over her, he held\nout his small broad hand to her.\n\nGreeting and saying a few words to everyone, he sat down without once\nglancing at Levin, who had never taken his eyes off him.\n\n\"Let me introduce you,\" said the princess, indicating Levin. \"Konstantin\nDmitrievitch Levin, Count Alexey Kirillovitch Vronsky.\"\n\nVronsky got up and, looking cordially at Levin, shook hands with him.\n\n\"I believe I was to have dined with you this winter,\" he said, smiling\nhis simple and open smile; \"but you had unexpectedly left for the\ncountry.\"\n\n\"Konstantin Dmitrievitch despises and hates town and us townspeople,\"\nsaid Countess Nordston.\n\n\"My words must make a deep impression on you, since you remember them so\nwell,\" said Levin, and, suddenly conscious that he had said just the\nsame thing before, he reddened.\n\nVronsky looked at Levin and Countess Nordston, and smiled.\n\n\"Are you always in the country?\" he inquired. \"I should think it must be\ndull in the winter.\"\n\n\"It's not dull if one has work to do; besides, one's not dull by\noneself,\" Levin replied abruptly.\n\n\"I am fond of the country,\" said Vronsky, noticing, and affecting not to\nnotice, Levin's tone.\n\n\"But I hope, count, you would not consent to live in the country\nalways,\" said Countess Nordston.\n\n\"I don't know; I have never tried for long. I experienced a queer\nfeeling once,\" he went on. \"I never longed so for the country, Russian\ncountry, with bast shoes and peasants, as when I was spending a winter\nwith my mother in Nice. Nice itself is dull enough, you know. And\nindeed, Naples and Sorrento are only pleasant for a short time. And it's\njust there that Russia comes back to me most vividly, and especially the\ncountry. It's as though...\"\n\nHe talked on, addressing both Kitty and Levin, turning his serene,\nfriendly eyes from one to the other, and saying obviously just what came\ninto his head.\n\nNoticing that Countess Nordston wanted to say something, he stopped\nshort without finishing what he had begun, and listened attentively to\nher.\n\nThe conversation did not flag for an instant, so that the princess, who\nalways kept in reserve, in case a subject should be lacking, two heavy\nguns--the relative advantages of classical and of modern education, and\nuniversal military service--had not to move out either of them, while\nCountess Nordston had not a chance of chaffing Levin.\n\nLevin wanted to, and could not, take part in the general conversation;\nsaying to himself every instant, \"Now go,\" he still did not go, as\nthough waiting for something.\n\nThe conversation fell upon table-turning and spirits, and Countess\nNordston, who believed in spiritualism, began to describe the marvels\nshe had seen.\n\n\"Ah, countess, you really must take me, for pity's sake do take me to\nsee them! I have never seen anything extraordinary, though I am always\non the lookout for it everywhere,\" said Vronsky, smiling.\n\n\"Very well, next Saturday,\" answered Countess Nordston. \"But you,\nKonstantin Dmitrievitch, do you believe in it?\" she asked Levin.\n\n\"Why do you ask me? You know what I shall say.\"\n\n\"But I want to hear your opinion.\"\n\n\"My opinion,\" answered Levin, \"is only that this table-turning simply\nproves that educated society--so called--is no higher than the peasants.\nThey believe in the evil eye, and in witchcraft and omens, while we...\"\n\n\"Oh, then you don't believe in it?\"\n\n\"I can't believe in it, countess.\"\n\n\"But if I've seen it myself?\"\n\n\"The peasant women too tell us they have seen goblins.\"\n\n\"Then you think I tell a lie?\"\n\nAnd she laughed a mirthless laugh.\n\n\"Oh, no, Masha, Konstantin Dmitrievitch said he could not believe in\nit,\" said Kitty, blushing for Levin, and Levin saw this, and, still more\nexasperated, would have answered, but Vronsky with his bright frank\nsmile rushed to the support of the conversation, which was threatening\nto become disagreeable.\n\n\"You do not admit the conceivability at all?\" he queried. \"But why not?\nWe admit the existence of electricity, of which we know nothing. Why\nshould there not be some new force, still unknown to us, which...\"\n\n\"When electricity was discovered,\" Levin interrupted hurriedly, \"it was\nonly the phenomenon that was discovered, and it was unknown from what it\nproceeded and what were its effects, and ages passed before its\napplications were conceived. But the spiritualists have begun with\ntables writing for them, and spirits appearing to them, and have only\nlater started saying that it is an unknown force.\"\n\nVronsky listened attentively to Levin, as he always did listen,\nobviously interested in his words.\n\n\"Yes, but the spiritualists say we don't know at present what this force\nis, but there is a force, and these are the conditions in which it acts.\nLet the scientific men find out what the force consists in. No, I don't\nsee why there should not be a new force, if it...\"\n\n\"Why, because with electricity,\" Levin interrupted again, \"every time\nyou rub tar against wool, a recognized phenomenon is manifested, but in\nthis case it does not happen every time, and so it follows it is not a\nnatural phenomenon.\"\n\nFeeling probably that the conversation was taking a tone too serious for\na drawing room, Vronsky made no rejoinder, but by way of trying to\nchange the conversation, he smiled brightly, and turned to the ladies.\n\n\"Do let us try at once, countess,\" he said; but Levin would finish\nsaying what he thought.\n\n\"I think,\" he went on, \"that this attempt of the spiritualists to\nexplain their marvels as some sort of new natural force is most futile.\nThey boldly talk of spiritual force, and then try to subject it to\nmaterial experiment.\"\n\nEvery one was waiting for him to finish, and he felt it.\n\n\"And I think you would be a first-rate medium,\" said Countess Nordston;\n\"there's something enthusiastic in you.\"\n\nLevin opened his mouth, was about to say something, reddened, and said\nnothing.\n\n\"Do let us try table-turning at once, please,\" said Vronsky. \"Princess,\nwill you allow it?\"\n\nAnd Vronsky stood up, looking for a little table.\n\nKitty got up to fetch a table, and as she passed, her eyes met Levin's.\nShe felt for him with her whole heart, the more because she was pitying\nhim for suffering of which she was herself the cause. \"If you can\nforgive me, forgive me,\" said her eyes, \"I am so happy.\"\n\n\"I hate them all, and you, and myself,\" his eyes responded, and he took\nup his hat. But he was not destined to escape. Just as they were\narranging themselves round the table, and Levin was on the point of\nretiring, the old prince came in, and after greeting the ladies,\naddressed Levin.\n\n\"Ah!\" he began joyously. \"Been here long, my boy? I didn't even know you\nwere in town. Very glad to see you.\" The old prince embraced Levin, and\ntalking to him did not observe Vronsky, who had risen, and was serenely\nwaiting till the prince should turn to him.\n\nKitty felt how distasteful her father's warmth was to Levin after what\nhad happened. She saw, too, how coldly her father responded at last to\nVronsky's bow, and how Vronsky looked with amiable perplexity at her\nfather, as though trying and failing to understand how and why anyone\ncould be hostilely disposed towards him, and she flushed.\n\n\"Prince, let us have Konstantin Dmitrievitch,\" said Countess Nordston;\n\"we want to try an experiment.\"\n\n\"What experiment? Table-turning? Well, you must excuse me, ladies and\ngentlemen, but to my mind it is better fun to play the ring game,\" said\nthe old prince, looking at Vronsky, and guessing that it had been his\nsuggestion. \"There's some sense in that, anyway.\"\n\nVronsky looked wonderingly at the prince with his resolute eyes, and,\nwith a faint smile, began immediately talking to Countess Nordston of\nthe great ball that was to come off next week.\n\n\"I hope you will be there?\" he said to Kitty. As soon as the old prince\nturned away from him, Levin went out unnoticed, and the last impression\nhe carried away with him of that evening was the smiling, happy face of\nKitty answering Vronsky's inquiry about the ball.\n\n\n\nChapter 15\n\n\nAt the end of the evening Kitty told her mother of her conversation with\nLevin, and in spite of all the pity she felt for Levin, she was glad at\nthe thought that she had received an _offer_. She had no doubt that she\nhad acted rightly. But after she had gone to bed, for a long while she\ncould not sleep. One impression pursued her relentlessly. It was Levin's\nface, with his scowling brows, and his kind eyes looking out in dark\ndejection below them, as he stood listening to her father, and glancing\nat her and at Vronsky. And she felt so sorry for him that tears came\ninto her eyes. But immediately she thought of the man for whom she had\ngiven him up. She vividly recalled his manly, resolute face, his noble\nself-possession, and the good nature conspicuous in everything towards\neveryone. She remembered the love for her of the man she loved, and once\nmore all was gladness in her soul, and she lay on the pillow, smiling\nwith happiness. \"I'm sorry, I'm sorry; but what could I do? It's not my\nfault,\" she said to herself; but an inner voice told her something else.\nWhether she felt remorse at having won Levin's love, or at having\nrefused him, she did not know. But her happiness was poisoned by doubts.\n\"Lord, have pity on us; Lord, have pity on us; Lord, have pity on us!\"\nshe repeated to herself, till she fell asleep.\n\nMeanwhile there took place below, in the prince's little library, one of\nthe scenes so often repeated between the parents on account of their\nfavorite daughter.\n\n\"What? I'll tell you what!\" shouted the prince, waving his arms, and at\nonce wrapping his squirrel-lined dressing-gown round him again. \"That\nyou've no pride, no dignity; that you're disgracing, ruining your\ndaughter by this vulgar, stupid match-making!\"\n\n\"But, really, for mercy's sake, prince, what have I done?\" said the\nprincess, almost crying.\n\nShe, pleased and happy after her conversation with her daughter, had\ngone to the prince to say good-night as usual, and though she had no\nintention of telling him of Levin's offer and Kitty's refusal, still she\nhinted to her husband that she fancied things were practically settled\nwith Vronsky, and that he would declare himself so soon as his mother\narrived. And thereupon, at those words, the prince had all at once flown\ninto a passion, and began to use unseemly language.\n\n\"What have you done? I'll tell you what. First of all, you're trying to\ncatch an eligible gentleman, and all Moscow will be talking of it, and\nwith good reason. If you have evening parties, invite everyone, don't\npick out the possible suitors. Invite all the young bucks. Engage a\npiano player, and let them dance, and not as you do things nowadays,\nhunting up good matches. It makes me sick, sick to see it, and you've\ngone on till you've turned the poor wench's head. Levin's a thousand\ntimes the better man. As for this little Petersburg swell, they're\nturned out by machinery, all on one pattern, and all precious rubbish.\nBut if he were a prince of the blood, my daughter need not run after\nanyone.\"\n\n\"But what have I done?\"\n\n\"Why, you've...\" The prince was crying wrathfully.\n\n\"I know if one were to listen to you,\" interrupted the princess, \"we\nshould never marry our daughter. If it's to be so, we'd better go into\nthe country.\"\n\n\"Well, and we had better.\"\n\n\"But do wait a minute. Do I try and catch them? I don't try to catch\nthem in the least. A young man, and a very nice one, has fallen in love\nwith her, and she, I fancy...\"\n\n\"Oh, yes, you fancy! And how if she really is in love, and he's no more\nthinking of marriage than I am!... Oh, that I should live to see it! Ah!\nspiritualism! Ah! Nice! Ah! the ball!\" And the prince, imagining that he\nwas mimicking his wife, made a mincing curtsey at each word. \"And this\nis how we're preparing wretchedness for Kitty; and she's really got the\nnotion into her head...\"\n\n\"But what makes you suppose so?\"\n\n\"I don't suppose; I know. We have eyes for such things, though\nwomen-folk haven't. I see a man who has serious intentions, that's\nLevin: and I see a peacock, like this feather-head, who's only amusing\nhimself.\"\n\n\"Oh, well, when once you get an idea into your head!...\"\n\n\"Well, you'll remember my words, but too late, just as with Dolly.\"\n\n\"Well, well, we won't talk of it,\" the princess stopped him,\nrecollecting her unlucky Dolly.\n\n\"By all means, and good night!\"\n\nAnd signing each other with the cross, the husband and wife parted with\na kiss, feeling that they each remained of their own opinion.\n\nThe princess had at first been quite certain that that evening had\nsettled Kitty's future, and that there could be no doubt of Vronsky's\nintentions, but her husband's words had disturbed her. And returning to\nher own room, in terror before the unknown future, she, too, like Kitty,\nrepeated several times in her heart, \"Lord, have pity; Lord, have pity;\nLord, have pity.\"\n\n\n\nChapter 16\n\n\nVronsky had never had a real home life. His mother had been in her youth\na brilliant society woman, who had had during her married life, and\nstill more afterwards, many love affairs notorious in the whole\nfashionable world. His father he scarcely remembered, and he had been\neducated in the Corps of Pages.\n\nLeaving the school very young as a brilliant officer, he had at once got\ninto the circle of wealthy Petersburg army men. Although he did go more\nor less into Petersburg society, his love affairs had always hitherto\nbeen outside it.\n\nIn Moscow he had for the first time felt, after his luxurious and coarse\nlife at Petersburg, all the charm of intimacy with a sweet and innocent\ngirl of his own rank, who cared for him. It never even entered his head\nthat there could be any harm in his relations with Kitty. At balls he\ndanced principally with her. He was a constant visitor at their house.\nHe talked to her as people commonly do talk in society--all sorts of\nnonsense, but nonsense to which he could not help attaching a special\nmeaning in her case. Although he said nothing to her that he could not\nhave said before everybody, he felt that she was becoming more and more\ndependent upon him, and the more he felt this, the better he liked it,\nand the tenderer was his feeling for her. He did not know that his mode\nof behavior in relation to Kitty had a definite character, that it is\ncourting young girls with no intention of marriage, and that such\ncourting is one of the evil actions common among brilliant young men\nsuch as he was. It seemed to him that he was the first who had\ndiscovered this pleasure, and he was enjoying his discovery.\n\nIf he could have heard what her parents were saying that evening, if he\ncould have put himself at the point of view of the family and have heard\nthat Kitty would be unhappy if he did not marry her, he would have been\ngreatly astonished, and would not have believed it. He could not believe\nthat what gave such great and delicate pleasure to him, and above all to\nher, could be wrong. Still less could he have believed that he ought to\nmarry.\n\nMarriage had never presented itself to him as a possibility. He not only\ndisliked family life, but a family, and especially a husband was, in\naccordance with the views general in the bachelor world in which he\nlived, conceived as something alien, repellant, and, above all,\nridiculous.\n\nBut though Vronsky had not the least suspicion what the parents were\nsaying, he felt on coming away from the Shtcherbatskys' that the secret\nspiritual bond which existed between him and Kitty had grown so much\nstronger that evening that some step must be taken. But what step could\nand ought to be taken he could not imagine.\n\n\"What is so exquisite,\" he thought, as he returned from the\nShtcherbatskys', carrying away with him, as he always did, a delicious\nfeeling of purity and freshness, arising partly from the fact that he\nhad not been smoking for a whole evening, and with it a new feeling of\ntenderness at her love for him--\"what is so exquisite is that not a word\nhas been said by me or by her, but we understand each other so well in\nthis unseen language of looks and tones, that this evening more clearly\nthan ever she told me she loves me. And how secretly, simply, and most\nof all, how trustfully! I feel myself better, purer. I feel that I have\na heart, and that there is a great deal of good in me. Those sweet,\nloving eyes! When she said: 'Indeed I do...'\n\n\"Well, what then? Oh, nothing. It's good for me, and good for her.\" And\nhe began wondering where to finish the evening.\n\nHe passed in review of the places he might go to. \"Club? a game of\nbezique, champagne with Ignatov? No, I'm not going. _Chateau des\nFleurs_; there I shall find Oblonsky, songs, the cancan. No, I'm sick of\nit. That's why I like the Shtcherbatskys', that I'm growing better. I'll\ngo home.\" He went straight to his room at Dussot's Hotel, ordered\nsupper, and then undressed, and as soon as his head touched the pillow,\nfell into a sound sleep.\n\n\n\nChapter 17\n\n\nNext day at eleven o'clock in the morning Vronsky drove to the station\nof the Petersburg railway to meet his mother, and the first person he\ncame across on the great flight of steps was Oblonsky, who was expecting\nhis sister by the same train.\n\n\"Ah! your excellency!\" cried Oblonsky, \"whom are you meeting?\"\n\n\"My mother,\" Vronsky responded, smiling, as everyone did who met\nOblonsky. He shook hands with him, and together they ascended the steps.\n\"She is to be here from Petersburg today.\"\n\n\"I was looking out for you till two o'clock last night. Where did you go\nafter the Shtcherbatskys'?\"\n\n\"Home,\" answered Vronsky. \"I must own I felt so well content yesterday\nafter the Shtcherbatskys' that I didn't care to go anywhere.\"\n\n    \"I know a gallant steed by tokens sure,\n    And by his eyes I know a youth in love,\"\n\ndeclaimed Stepan Arkadyevitch, just as he had done before to Levin.\n\nVronsky smiled with a look that seemed to say that he did not deny it,\nbut he promptly changed the subject.\n\n\"And whom are you meeting?\" he asked.\n\n\"I? I've come to meet a pretty woman,\" said Oblonsky.\n\n\"You don't say so!\"\n\n\"_Honi soit qui mal y pense!_ My sister Anna.\"\n\n\"Ah! that's Madame Karenina,\" said Vronsky.\n\n\"You know her, no doubt?\"\n\n\"I think I do. Or perhaps not ... I really am not sure,\" Vronsky\nanswered heedlessly, with a vague recollection of something stiff and\ntedious evoked by the name Karenina.\n\n\"But Alexey Alexandrovitch, my celebrated brother-in-law, you surely\nmust know. All the world knows him.\"\n\n\"I know him by reputation and by sight. I know that he's clever,\nlearned, religious somewhat.... But you know that's not ... _not in my\nline,_\" said Vronsky in English.\n\n\"Yes, he's a very remarkable man; rather a conservative, but a splendid\nman,\" observed Stepan Arkadyevitch, \"a splendid man.\"\n\n\"Oh, well, so much the better for him,\" said Vronsky smiling. \"Oh,\nyou've come,\" he said, addressing a tall old footman of his mother's,\nstanding at the door; \"come here.\"\n\nBesides the charm Oblonsky had in general for everyone, Vronsky had felt\nof late specially drawn to him by the fact that in his imagination he\nwas associated with Kitty.\n\n\"Well, what do you say? Shall we give a supper on Sunday for the\n_diva?_\" he said to him with a smile, taking his arm.\n\n\"Of course. I'm collecting subscriptions. Oh, did you make the\nacquaintance of my friend Levin?\" asked Stepan Arkadyevitch.\n\n\"Yes; but he left rather early.\"\n\n\"He's a capital fellow,\" pursued Oblonsky. \"Isn't he?\"\n\n\"I don't know why it is,\" responded Vronsky, \"in all Moscow\npeople--present company of course excepted,\" he put in jestingly,\n\"there's something uncompromising. They are all on the defensive, lose\ntheir tempers, as though they all want to make one feel something...\"\n\n\"Yes, that's true, it is so,\" said Stepan Arkadyevitch, laughing\ngood-humoredly.\n\n\"Will the train soon be in?\" Vronsky asked a railway official.\n\n\"The train's signaled,\" answered the man.\n\nThe approach of the train was more and more evident by the preparatory\nbustle in the station, the rush of porters, the movement of policemen\nand attendants, and people meeting the train. Through the frosty vapor\ncould be seen workmen in short sheepskins and soft felt boots crossing\nthe rails of the curving line. The hiss of the boiler could be heard on\nthe distant rails, and the rumble of something heavy.\n\n\"No,\" said Stepan Arkadyevitch, who felt a great inclination to tell\nVronsky of Levin's intentions in regard to Kitty. \"No, you've not got a\ntrue impression of Levin. He's a very nervous man, and is sometimes out\nof humor, it's true, but then he is often very nice. He's such a true,\nhonest nature, and a heart of gold. But yesterday there were special\nreasons,\" pursued Stepan Arkadyevitch, with a meaning smile, totally\noblivious of the genuine sympathy he had felt the day before for his\nfriend, and feeling the same sympathy now, only for Vronsky. \"Yes, there\nwere reasons why he could not help being either particularly happy or\nparticularly unhappy.\"\n\nVronsky stood still and asked directly: \"How so? Do you mean he made\nyour _belle-soeur_ an offer yesterday?\"\n\n\"Maybe,\" said Stepan Arkadyevitch. \"I fancied something of the sort\nyesterday. Yes, if he went away early, and was out of humor too, it must\nmean it.... He's been so long in love, and I'm very sorry for him.\"\n\n\"So that's it! I should imagine, though, she might reckon on a better\nmatch,\" said Vronsky, drawing himself up and walking about again,\n\"though I don't know him, of course,\" he added. \"Yes, that is a hateful\nposition! That's why most fellows prefer to have to do with Klaras. If\nyou don't succeed with them it only proves that you've not enough cash,\nbut in this case one's dignity's at stake. But here's the train.\"\n\nThe engine had already whistled in the distance. A few instants later\nthe platform was quivering, and with puffs of steam hanging low in the\nair from the frost, the engine rolled up, with the lever of the middle\nwheel rhythmically moving up and down, and the stooping figure of the\nengine-driver covered with frost. Behind the tender, setting the\nplatform more and more slowly swaying, came the luggage van with a dog\nwhining in it. At last the passenger carriages rolled in, oscillating\nbefore coming to a standstill.\n\nA smart guard jumped out, giving a whistle, and after him one by one the\nimpatient passengers began to get down: an officer of the guards,\nholding himself erect, and looking severely about him; a nimble little\nmerchant with a satchel, smiling gaily; a peasant with a sack over his\nshoulder.\n\nVronsky, standing beside Oblonsky, watched the carriages and the\npassengers, totally oblivious of his mother. What he had just heard\nabout Kitty excited and delighted him. Unconsciously he arched his\nchest, and his eyes flashed. He felt himself a conqueror.\n\n\"Countess Vronskaya is in that compartment,\" said the smart guard, going\nup to Vronsky.\n\nThe guard's words roused him, and forced him to think of his mother and\nhis approaching meeting with her. He did not in his heart respect his\nmother, and without acknowledging it to himself, he did not love her,\nthough in accordance with the ideas of the set in which he lived, and\nwith his own education, he could not have conceived of any behavior to\nhis mother not in the highest degree respectful and obedient, and the\nmore externally obedient and respectful his behavior, the less in his\nheart he respected and loved her.\n\n\n\nChapter 18\n\n\nVronsky followed the guard to the carriage, and at the door of the\ncompartment he stopped short to make room for a lady who was getting\nout.\n\nWith the insight of a man of the world, from one glance at this lady's\nappearance Vronsky classified her as belonging to the best society. He\nbegged pardon, and was getting into the carriage, but felt he must\nglance at her once more; not that she was very beautiful, not on account\nof the elegance and modest grace which were apparent in her whole\nfigure, but because in the expression of her charming face, as she\npassed close by him, there was something peculiarly caressing and soft.\nAs he looked round, she too turned her head. Her shining gray eyes, that\nlooked dark from the thick lashes, rested with friendly attention on his\nface, as though she were recognizing him, and then promptly turned away\nto the passing crowd, as though seeking someone. In that brief look\nVronsky had time to notice the suppressed eagerness which played over\nher face, and flitted between the brilliant eyes and the faint smile\nthat curved her red lips. It was as though her nature were so brimming\nover with something that against her will it showed itself now in the\nflash of her eyes, and now in her smile. Deliberately she shrouded the\nlight in her eyes, but it shone against her will in the faintly\nperceptible smile.\n\nVronsky stepped into the carriage. His mother, a dried-up old lady with\nblack eyes and ringlets, screwed up her eyes, scanning her son, and\nsmiled slightly with her thin lips. Getting up from the seat and handing\nher maid a bag, she gave her little wrinkled hand to her son to kiss,\nand lifting his head from her hand, kissed him on the cheek.\n\n\"You got my telegram? Quite well? Thank God.\"\n\n\"You had a good journey?\" said her son, sitting down beside her, and\ninvoluntarily listening to a woman's voice outside the door. He knew it\nwas the voice of the lady he had met at the door.\n\n\"All the same I don't agree with you,\" said the lady's voice.\n\n\"It's the Petersburg view, madame.\"\n\n\"Not Petersburg, but simply feminine,\" she responded.\n\n\"Well, well, allow me to kiss your hand.\"\n\n\"Good-bye, Ivan Petrovitch. And could you see if my brother is here, and\nsend him to me?\" said the lady in the doorway, and stepped back again\ninto the compartment.\n\n\"Well, have you found your brother?\" said Countess Vronskaya, addressing\nthe lady.\n\nVronsky understood now that this was Madame Karenina.\n\n\"Your brother is here,\" he said, standing up. \"Excuse me, I did not know\nyou, and, indeed, our acquaintance was so slight,\" said Vronsky, bowing,\n\"that no doubt you do not remember me.\"\n\n\"Oh, no,\" said she, \"I should have known you because your mother and I\nhave been talking, I think, of nothing but you all the way.\" As she\nspoke she let the eagerness that would insist on coming out show itself\nin her smile. \"And still no sign of my brother.\"\n\n\"Do call him, Alexey,\" said the old countess. Vronsky stepped out onto\nthe platform and shouted:\n\n\"Oblonsky! Here!\"\n\nMadame Karenina, however, did not wait for her brother, but catching\nsight of him she stepped out with her light, resolute step. And as soon\nas her brother had reached her, with a gesture that struck Vronsky by\nits decision and its grace, she flung her left arm around his neck, drew\nhim rapidly to her, and kissed him warmly. Vronsky gazed, never taking\nhis eyes from her, and smiled, he could not have said why. But\nrecollecting that his mother was waiting for him, he went back again\ninto the carriage.\n\n\"She's very sweet, isn't she?\" said the countess of Madame Karenina.\n\"Her husband put her with me, and I was delighted to have her. We've\nbeen talking all the way. And so you, I hear ... _vous filez le parfait\namour. Tant mieux, mon cher, tant mieux._\"\n\n\"I don't know what you are referring to, maman,\" he answered coldly.\n\"Come, maman, let us go.\"\n\nMadame Karenina entered the carriage again to say good-bye to the\ncountess.\n\n\"Well, countess, you have met your son, and I my brother,\" she said.\n\"And all my gossip is exhausted. I should have nothing more to tell\nyou.\"\n\n\"Oh, no,\" said the countess, taking her hand. \"I could go all around the\nworld with you and never be dull. You are one of those delightful women\nin whose company it's sweet to be silent as well as to talk. Now please\ndon't fret over your son; you can't expect never to be parted.\"\n\nMadame Karenina stood quite still, holding herself very erect, and her\neyes were smiling.\n\n\"Anna Arkadyevna,\" the countess said in explanation to her son, \"has a\nlittle son eight years old, I believe, and she has never been parted\nfrom him before, and she keeps fretting over leaving him.\"\n\n\"Yes, the countess and I have been talking all the time, I of my son and\nshe of hers,\" said Madame Karenina, and again a smile lighted up her\nface, a caressing smile intended for him.\n\n\"I am afraid that you must have been dreadfully bored,\" he said,\npromptly catching the ball of coquetry she had flung him. But apparently\nshe did not care to pursue the conversation in that strain, and she\nturned to the old countess.\n\n\"Thank you so much. The time has passed so quickly. Good-bye, countess.\"\n\n\"Good-bye, my love,\" answered the countess. \"Let me have a kiss of your\npretty face. I speak plainly, at my age, and I tell you simply that I've\nlost my heart to you.\"\n\nStereotyped as the phrase was, Madame Karenina obviously believed it and\nwas delighted by it. She flushed, bent down slightly, and put her cheek\nto the countess's lips, drew herself up again, and with the same smile\nfluttering between her lips and her eyes, she gave her hand to Vronsky.\nHe pressed the little hand she gave him, and was delighted, as though at\nsomething special, by the energetic squeeze with which she freely and\nvigorously shook his hand. She went out with the rapid step which bore\nher rather fully-developed figure with such strange lightness.\n\n\"Very charming,\" said the countess.\n\nThat was just what her son was thinking. His eyes followed her till her\ngraceful figure was out of sight, and then the smile remained on his\nface. He saw out of the window how she went up to her brother, put her\narm in his, and began telling him something eagerly, obviously something\nthat had nothing to do with him, Vronsky, and at that he felt annoyed.\n\n\"Well, maman, are you perfectly well?\" he repeated, turning to his\nmother.\n\n\"Everything has been delightful. Alexander has been very good, and Marie\nhas grown very pretty. She's very interesting.\"\n\nAnd she began telling him again of what interested her most--the\nchristening of her grandson, for which she had been staying in\nPetersburg, and the special favor shown her elder son by the Tsar.\n\n\"Here's Lavrenty,\" said Vronsky, looking out of the window; \"now we can\ngo, if you like.\"\n\nThe old butler who had traveled with the countess, came to the carriage\nto announce that everything was ready, and the countess got up to go.\n\n\"Come; there's not such a crowd now,\" said Vronsky.\n\nThe maid took a handbag and the lap dog, the butler and a porter the\nother baggage. Vronsky gave his mother his arm; but just as they were\ngetting out of the carriage several men ran suddenly by with\npanic-stricken faces. The station-master, too, ran by in his\nextraordinary colored cap. Obviously something unusual had happened. The\ncrowd who had left the train were running back again.\n\n\"What?... What?... Where?... Flung himself!... Crushed!...\" was heard\namong the crowd. Stepan Arkadyevitch, with his sister on his arm, turned\nback. They too looked scared, and stopped at the carriage door to avoid\nthe crowd.\n\nThe ladies got in, while Vronsky and Stepan Arkadyevitch followed the\ncrowd to find out details of the disaster.\n\nA guard, either drunk or too much muffled up in the bitter frost, had\nnot heard the train moving back, and had been crushed.\n\nBefore Vronsky and Oblonsky came back the ladies heard the facts from\nthe butler.\n\nOblonsky and Vronsky had both seen the mutilated corpse. Oblonsky was\nevidently upset. He frowned and seemed ready to cry.\n\n\"Ah, how awful! Ah, Anna, if you had seen it! Ah, how awful!\" he said.\n\nVronsky did not speak; his handsome face was serious, but perfectly\ncomposed.\n\n\"Oh, if you had seen it, countess,\" said Stepan Arkadyevitch. \"And his\nwife was there.... It was awful to see her!.... She flung herself on the\nbody. They say he was the only support of an immense family. How awful!\"\n\n\"Couldn't one do anything for her?\" said Madame Karenina in an agitated\nwhisper.\n\nVronsky glanced at her, and immediately got out of the carriage.\n\n\"I'll be back directly, maman,\" he remarked, turning round in the\ndoorway.\n\nWhen he came back a few minutes later, Stepan Arkadyevitch was already\nin conversation with the countess about the new singer, while the\ncountess was impatiently looking towards the door, waiting for her son.\n\n\"Now let us be off,\" said Vronsky, coming in. They went out together.\nVronsky was in front with his mother. Behind walked Madame Karenina with\nher brother. Just as they were going out of the station the\nstation-master overtook Vronsky.\n\n\"You gave my assistant two hundred roubles. Would you kindly explain for\nwhose benefit you intend them?\"\n\n\"For the widow,\" said Vronsky, shrugging his shoulders. \"I should have\nthought there was no need to ask.\"\n\n\"You gave that?\" cried Oblonsky, behind, and, pressing his sister's\nhand, he added: \"Very nice, very nice! Isn't he a splendid fellow?\nGood-bye, countess.\"\n\nAnd he and his sister stood still, looking for her maid.\n\nWhen they went out the Vronsky's carriage had already driven away.\nPeople coming in were still talking of what happened.\n\n\"What a horrible death!\" said a gentleman, passing by. \"They say he was\ncut in two pieces.\"\n\n\"On the contrary, I think it's the easiest--instantaneous,\" observed\nanother.\n\n\"How is it they don't take proper precautions?\" said a third.\n\nMadame Karenina seated herself in the carriage, and Stepan Arkadyevitch\nsaw with surprise that her lips were quivering, and she was with\ndifficulty restraining her tears.\n\n\"What is it, Anna?\" he asked, when they had driven a few hundred yards.\n\n\"It's an omen of evil,\" she said.\n\n\"What nonsense!\" said Stepan Arkadyevitch. \"You've come, that's the\nchief thing. You can't conceive how I'm resting my hopes on you.\"\n\n\"Have you known Vronsky long?\" she asked.\n\n\"Yes. You know we're hoping he will marry Kitty.\"\n\n\"Yes?\" said Anna softly. \"Come now, let us talk of you,\" she added,\ntossing her head, as though she would physically shake off something\nsuperfluous oppressing her. \"Let us talk of your affairs. I got your\nletter, and here I am.\"\n\n\"Yes, all my hopes are in you,\" said Stepan Arkadyevitch.\n\n\"Well, tell me all about it.\"\n\nAnd Stepan Arkadyevitch began to tell his story.\n\nOn reaching home Oblonsky helped his sister out, sighed, pressed her\nhand, and set off to his office.\n\n\n\nChapter 19\n\n\nWhen Anna went into the room, Dolly was sitting in the little\ndrawing-room with a white-headed fat little boy, already like his\nfather, giving him a lesson in French reading. As the boy read, he kept\ntwisting and trying to tear off a button that was nearly off his jacket.\nHis mother had several times taken his hand from it, but the fat little\nhand went back to the button again. His mother pulled the button off and\nput it in her pocket.\n\n\"Keep your hands still, Grisha,\" she said, and she took up her work, a\ncoverlet she had long been making. She always set to work on it at\ndepressed moments, and now she knitted at it nervously, twitching her\nfingers and counting the stitches. Though she had sent word the day\nbefore to her husband that it was nothing to her whether his sister came\nor not, she had made everything ready for her arrival, and was expecting\nher sister-in-law with emotion.\n\nDolly was crushed by her sorrow, utterly swallowed up by it. Still she\ndid not forget that Anna, her sister-in-law, was the wife of one of the\nmost important personages in Petersburg, and was a Petersburg _grande\ndame_. And, thanks to this circumstance, she did not carry out her\nthreat to her husband--that is to say, she remembered that her\nsister-in-law was coming. \"And, after all, Anna is in no wise to blame,\"\nthought Dolly. \"I know nothing of her except the very best, and I have\nseen nothing but kindness and affection from her towards myself.\" It was\ntrue that as far as she could recall her impressions at Petersburg at\nthe Karenins', she did not like their household itself; there was\nsomething artificial in the whole framework of their family life. \"But\nwhy should I not receive her? If only she doesn't take it into her head\nto console me!\" thought Dolly. \"All consolation and counsel and\nChristian forgiveness, all that I have thought over a thousand times,\nand it's all no use.\"\n\nAll these days Dolly had been alone with her children. She did not want\nto talk of her sorrow, but with that sorrow in her heart she could not\ntalk of outside matters. She knew that in one way or another she would\ntell Anna everything, and she was alternately glad at the thought of\nspeaking freely, and angry at the necessity of speaking of her\nhumiliation with her, his sister, and of hearing her ready-made phrases\nof good advice and comfort. She had been on the lookout for her,\nglancing at her watch every minute, and, as so often happens, let slip\njust that minute when her visitor arrived, so that she did not hear the\nbell.\n\nCatching a sound of skirts and light steps at the door, she looked\nround, and her care-worn face unconsciously expressed not gladness, but\nwonder. She got up and embraced her sister-in-law.\n\n\"What, here already!\" she said as she kissed her.\n\n\"Dolly, how glad I am to see you!\"\n\n\"I am glad, too,\" said Dolly, faintly smiling, and trying by the\nexpression of Anna's face to find out whether she knew. \"Most likely she\nknows,\" she thought, noticing the sympathy in Anna's face. \"Well, come\nalong, I'll take you to your room,\" she went on, trying to defer as long\nas possible the moment of confidences.\n\n\"Is this Grisha? Heavens, how he's grown!\" said Anna; and kissing him,\nnever taking her eyes off Dolly, she stood still and flushed a little.\n\"No, please, let us stay here.\"\n\nShe took off her kerchief and her hat, and catching it in a lock of her\nblack hair, which was a mass of curls, she tossed her head and shook her\nhair down.\n\n\"You are radiant with health and happiness!\" said Dolly, almost with\nenvy.\n\n\"I?.... Yes,\" said Anna. \"Merciful heavens, Tanya! You're the same age\nas my Seryozha,\" she added, addressing the little girl as she ran in.\nShe took her in her arms and kissed her. \"Delightful child, delightful!\nShow me them all.\"\n\nShe mentioned them, not only remembering the names, but the years,\nmonths, characters, illnesses of all the children, and Dolly could not\nbut appreciate that.\n\n\"Very well, we will go to them,\" she said. \"It's a pity Vassya's\nasleep.\"\n\nAfter seeing the children, they sat down, alone now, in the drawing\nroom, to coffee. Anna took the tray, and then pushed it away from her.\n\n\"Dolly,\" she said, \"he has told me.\"\n\nDolly looked coldly at Anna; she was waiting now for phrases of\nconventional sympathy, but Anna said nothing of the sort.\n\n\"Dolly, dear,\" she said, \"I don't want to speak for him to you, nor to\ntry to comfort you; that's impossible. But, darling, I'm simply sorry,\nsorry from my heart for you!\"\n\nUnder the thick lashes of her shining eyes tears suddenly glittered. She\nmoved nearer to her sister-in-law and took her hand in her vigorous\nlittle hand. Dolly did not shrink away, but her face did not lose its\nfrigid expression. She said:\n\n\"To comfort me's impossible. Everything's lost after what has happened,\neverything's over!\"\n\nAnd directly she had said this, her face suddenly softened. Anna lifted\nthe wasted, thin hand of Dolly, kissed it and said:\n\n\"But, Dolly, what's to be done, what's to be done? How is it best to act\nin this awful position--that's what you must think of.\"\n\n\"All's over, and there's nothing more,\" said Dolly. \"And the worst of\nall is, you see, that I can't cast him off: there are the children, I am\ntied. And I can't live with him! it's a torture to me to see him.\"\n\n\"Dolly, darling, he has spoken to me, but I want to hear it from you:\ntell me about it.\"\n\nDolly looked at her inquiringly.\n\nSympathy and love unfeigned were visible on Anna's face.\n\n\"Very well,\" she said all at once. \"But I will tell you it from the\nbeginning. You know how I was married. With the education mamma gave us\nI was more than innocent, I was stupid. I knew nothing. I know they say\nmen tell their wives of their former lives, but Stiva\"--she corrected\nherself--\"Stepan Arkadyevitch told me nothing. You'll hardly believe it,\nbut till now I imagined that I was the only woman he had known. So I\nlived eight years. You must understand that I was so far from suspecting\ninfidelity, I regarded it as impossible, and then--try to imagine\nit--with such ideas, to find out suddenly all the horror, all the\nloathsomeness.... You must try and understand me. To be fully convinced\nof one's happiness, and all at once...\" continued Dolly, holding back\nher sobs, \"to get a letter ... his letter to his mistress, my governess.\nNo, it's too awful!\" She hastily pulled out her handkerchief and hid her\nface in it. \"I can understand being carried away by feeling,\" she went\non after a brief silence, \"but deliberately, slyly deceiving me ... and\nwith whom?... To go on being my husband together with her ... it's\nawful! You can't understand...\"\n\n\"Oh, yes, I understand! I understand! Dolly, dearest, I do understand,\"\nsaid Anna, pressing her hand.\n\n\"And do you imagine he realizes all the awfulness of my position?\" Dolly\nresumed. \"Not the slightest! He's happy and contented.\"\n\n\"Oh, no!\" Anna interposed quickly. \"He's to be pitied, he's weighed down\nby remorse...\"\n\n\"Is he capable of remorse?\" Dolly interrupted, gazing intently into her\nsister-in-law's face.\n\n\"Yes. I know him. I could not look at him without feeling sorry for him.\nWe both know him. He's good-hearted, but he's proud, and now he's so\nhumiliated. What touched me most...\" (and here Anna guessed what would\ntouch Dolly most) \"he's tortured by two things: that he's ashamed for\nthe children's sake, and that, loving you--yes, yes, loving you beyond\neverything on earth,\" she hurriedly interrupted Dolly, who would have\nanswered--\"he has hurt you, pierced you to the heart. 'No, no, she\ncannot forgive me,' he keeps saying.\"\n\nDolly looked dreamily away beyond her sister-in-law as she listened to\nher words.\n\n\"Yes, I can see that his position is awful; it's worse for the guilty\nthan the innocent,\" she said, \"if he feels that all the misery comes\nfrom his fault. But how am I to forgive him, how am I to be his wife\nagain after her? For me to live with him now would be torture, just\nbecause I love my past love for him...\"\n\nAnd sobs cut short her words. But as though of set design, each time she\nwas softened she began to speak again of what exasperated her.\n\n\"She's young, you see, she's pretty,\" she went on. \"Do you know, Anna,\nmy youth and my beauty are gone, taken by whom? By him and his children.\nI have worked for him, and all I had has gone in his service, and now of\ncourse any fresh, vulgar creature has more charm for him. No doubt they\ntalked of me together, or, worse still, they were silent. Do you\nunderstand?\"\n\nAgain her eyes glowed with hatred.\n\n\"And after that he will tell me.... What! can I believe him? Never! No,\neverything is over, everything that once made my comfort, the reward of\nmy work, and my sufferings.... Would you believe it, I was teaching\nGrisha just now: once this was a joy to me, now it is a torture. What\nhave I to strive and toil for? Why are the children here? What's so\nawful is that all at once my heart's turned, and instead of love and\ntenderness, I have nothing but hatred for him; yes, hatred. I could kill\nhim.\"\n\n\"Darling Dolly, I understand, but don't torture yourself. You are so\ndistressed, so overwrought, that you look at many things mistakenly.\"\n\nDolly grew calmer, and for two minutes both were silent.\n\n\"What's to be done? Think for me, Anna, help me. I have thought over\neverything, and I see nothing.\"\n\nAnna could think of nothing, but her heart responded instantly to each\nword, to each change of expression of her sister-in-law.\n\n\"One thing I would say,\" began Anna. \"I am his sister, I know his\ncharacter, that faculty of forgetting everything, everything\" (she waved\nher hand before her forehead), \"that faculty for being completely\ncarried away, but for completely repenting too. He cannot believe it, he\ncannot comprehend now how he can have acted as he did.\"\n\n\"No; he understands, he understood!\" Dolly broke in. \"But I ... you are\nforgetting me ... does it make it easier for me?\"\n\n\"Wait a minute. When he told me, I will own I did not realize all the\nawfulness of your position. I saw nothing but him, and that the family\nwas broken up. I felt sorry for him, but after talking to you, I see it,\nas a woman, quite differently. I see your agony, and I can't tell you\nhow sorry I am for you! But, Dolly, darling, I fully realize your\nsufferings, only there is one thing I don't know; I don't know ... I\ndon't know how much love there is still in your heart for him. That you\nknow--whether there is enough for you to be able to forgive him. If\nthere is, forgive him!\"\n\n\"No,\" Dolly was beginning, but Anna cut her short, kissing her hand once\nmore.\n\n\"I know more of the world than you do,\" she said. \"I know how men like\nStiva look at it. You speak of his talking of you with her. That never\nhappened. Such men are unfaithful, but their home and wife are sacred to\nthem. Somehow or other these women are still looked on with contempt by\nthem, and do not touch on their feeling for their family. They draw a\nsort of line that can't be crossed between them and their families. I\ndon't understand it, but it is so.\"\n\n\"Yes, but he has kissed her...\"\n\n\"Dolly, hush, darling. I saw Stiva when he was in love with you. I\nremember the time when he came to me and cried, talking of you, and all\nthe poetry and loftiness of his feeling for you, and I know that the\nlonger he has lived with you the loftier you have been in his eyes. You\nknow we have sometimes laughed at him for putting in at every word:\n'Dolly's a marvelous woman.' You have always been a divinity for him,\nand you are that still, and this has not been an infidelity of the\nheart...\"\n\n\"But if it is repeated?\"\n\n\"It cannot be, as I understand it...\"\n\n\"Yes, but could you forgive it?\"\n\n\"I don't know, I can't judge.... Yes, I can,\" said Anna, thinking a\nmoment; and grasping the position in her thought and weighing it in her\ninner balance, she added: \"Yes, I can, I can, I can. Yes, I could\nforgive it. I could not be the same, no; but I could forgive it, and\nforgive it as though it had never been, never been at all...\"\n\n\"Oh, of course,\" Dolly interposed quickly, as though saying what she had\nmore than once thought, \"else it would not be forgiveness. If one\nforgives, it must be completely, completely. Come, let us go; I'll take\nyou to your room,\" she said, getting up, and on the way she embraced\nAnna. \"My dear, how glad I am you came. It has made things better, ever\nso much better.\"\n\n\n\nChapter 20\n\n\nThe whole of that day Anna spent at home, that's to say at the\nOblonskys', and received no one, though some of her acquaintances had\nalready heard of her arrival, and came to call the same day. Anna spent\nthe whole morning with Dolly and the children. She merely sent a brief\nnote to her brother to tell him that he must not fail to dine at home.\n\"Come, God is merciful,\" she wrote.\n\nOblonsky did dine at home: the conversation was general, and his wife,\nspeaking to him, addressed him as \"Stiva,\" as she had not done before.\nIn the relations of the husband and wife the same estrangement still\nremained, but there was no talk now of separation, and Stepan\nArkadyevitch saw the possibility of explanation and reconciliation.\n\nImmediately after dinner Kitty came in. She knew Anna Arkadyevna, but\nonly very slightly, and she came now to her sister's with some\ntrepidation, at the prospect of meeting this fashionable Petersburg\nlady, whom everyone spoke so highly of. But she made a favorable\nimpression on Anna Arkadyevna--she saw that at once. Anna was\nunmistakably admiring her loveliness and her youth: before Kitty knew\nwhere she was she found herself not merely under Anna's sway, but in\nlove with her, as young girls do fall in love with older and married\nwomen. Anna was not like a fashionable lady, nor the mother of a boy of\neight years old. In the elasticity of her movements, the freshness and\nthe unflagging eagerness which persisted in her face, and broke out in\nher smile and her glance, she would rather have passed for a girl of\ntwenty, had it not been for a serious and at times mournful look in her\neyes, which struck and attracted Kitty. Kitty felt that Anna was\nperfectly simple and was concealing nothing, but that she had another\nhigher world of interests inaccessible to her, complex and poetic.\n\nAfter dinner, when Dolly went away to her own room, Anna rose quickly\nand went up to her brother, who was just lighting a cigar.\n\n\"Stiva,\" she said to him, winking gaily, crossing him and glancing\ntowards the door, \"go, and God help you.\"\n\nHe threw down the cigar, understanding her, and departed through the\ndoorway.\n\nWhen Stepan Arkadyevitch had disappeared, she went back to the sofa\nwhere she had been sitting, surrounded by the children. Either because\nthe children saw that their mother was fond of this aunt, or that they\nfelt a special charm in her themselves, the two elder ones, and the\nyounger following their lead, as children so often do, had clung about\ntheir new aunt since before dinner, and would not leave her side. And it\nhad become a sort of game among them to sit a close as possible to their\naunt, to touch her, hold her little hand, kiss it, play with her ring,\nor even touch the flounce of her skirt.\n\n\"Come, come, as we were sitting before,\" said Anna Arkadyevna, sitting\ndown in her place.\n\nAnd again Grisha poked his little face under her arm, and nestled with\nhis head on her gown, beaming with pride and happiness.\n\n\"And when is your next ball?\" she asked Kitty.\n\n\"Next week, and a splendid ball. One of those balls where one always\nenjoys oneself.\"\n\n\"Why, are there balls where one always enjoys oneself?\" Anna said, with\ntender irony.\n\n\"It's strange, but there are. At the Bobrishtchevs' one always enjoys\noneself, and at the Nikitins' too, while at the Mezhkovs' it's always\ndull. Haven't you noticed it?\"\n\n\"No, my dear, for me there are no balls now where one enjoys oneself,\"\nsaid Anna, and Kitty detected in her eyes that mysterious world which\nwas not open to her. \"For me there are some less dull and tiresome.\"\n\n\"How can _you_ be dull at a ball?\"\n\n\"Why should not _I_ be dull at a ball?\" inquired Anna.\n\nKitty perceived that Anna knew what answer would follow.\n\n\"Because you always look nicer than anyone.\"\n\nAnna had the faculty of blushing. She blushed a little, and said:\n\n\"In the first place it's never so; and secondly, if it were, what\ndifference would it make to me?\"\n\n\"Are you coming to this ball?\" asked Kitty.\n\n\"I imagine it won't be possible to avoid going. Here, take it,\" she said\nto Tanya, who was pulling the loosely-fitting ring off her white,\nslender-tipped finger.\n\n\"I shall be so glad if you go. I should so like to see you at a ball.\"\n\n\"Anyway, if I do go, I shall comfort myself with the thought that it's a\npleasure to you ... Grisha, don't pull my hair. It's untidy enough\nwithout that,\" she said, putting up a straying lock, which Grisha had\nbeen playing with.\n\n\"I imagine you at the ball in lilac.\"\n\n\"And why in lilac precisely?\" asked Anna, smiling. \"Now, children, run\nalong, run along. Do you hear? Miss Hoole is calling you to tea,\" she\nsaid, tearing the children from her, and sending them off to the dining\nroom.\n\n\"I know why you press me to come to the ball. You expect a great deal of\nthis ball, and you want everyone to be there to take part in it.\"\n\n\"How do you know? Yes.\"\n\n\"Oh! what a happy time you are at,\" pursued Anna. \"I remember, and I\nknow that blue haze like the mist on the mountains in Switzerland. That\nmist which covers everything in that blissful time when childhood is\njust ending, and out of that vast circle, happy and gay, there is a path\ngrowing narrower and narrower, and it is delightful and alarming to\nenter the ballroom, bright and splendid as it is.... Who has not been\nthrough it?\"\n\nKitty smiled without speaking. \"But how did she go through it? How I\nshould like to know all her love story!\" thought Kitty, recalling the\nunromantic appearance of Alexey Alexandrovitch, her husband.\n\n\"I know something. Stiva told me, and I congratulate you. I liked him so\nmuch,\" Anna continued. \"I met Vronsky at the railway station.\"\n\n\"Oh, was he there?\" asked Kitty, blushing. \"What was it Stiva told you?\"\n\n\"Stiva gossiped about it all. And I should be so glad ... I traveled\nyesterday with Vronsky's mother,\" she went on; \"and his mother talked\nwithout a pause of him, he's her favorite. I know mothers are partial,\nbut...\"\n\n\"What did his mother tell you?\"\n\n\"Oh, a great deal! And I know that he's her favorite; still one can see\nhow chivalrous he is.... Well, for instance, she told me that he had\nwanted to give up all his property to his brother, that he had done\nsomething extraordinary when he was quite a child, saved a woman out of\nthe water. He's a hero, in fact,\" said Anna, smiling and recollecting\nthe two hundred roubles he had given at the station.\n\nBut she did not tell Kitty about the two hundred roubles. For some\nreason it was disagreeable to her to think of it. She felt that there\nwas something that had to do with her in it, and something that ought\nnot to have been.\n\n\"She pressed me very much to go and see her,\" Anna went on; \"and I shall\nbe glad to go to see her tomorrow. Stiva is staying a long while in\nDolly's room, thank God,\" Anna added, changing the subject, and getting\nup, Kitty fancied, displeased with something.\n\n\"No, I'm first! No, I!\" screamed the children, who had finished tea,\nrunning up to their Aunt Anna.\n\n\"All together,\" said Anna, and she ran laughing to meet them, and\nembraced and swung round all the throng of swarming children, shrieking\nwith delight.\n\n\n\nChapter 21\n\n\nDolly came out of her room to the tea of the grown-up people. Stepan\nArkadyevitch did not come out. He must have left his wife's room by the\nother door.\n\n\"I am afraid you'll be cold upstairs,\" observed Dolly, addressing Anna;\n\"I want to move you downstairs, and we shall be nearer.\"\n\n\"Oh, please, don't trouble about me,\" answered Anna, looking intently\ninto Dolly's face, trying to make out whether there had been a\nreconciliation or not.\n\n\"It will be lighter for you here,\" answered her sister-in-law.\n\n\"I assure you that I sleep everywhere, and always like a marmot.\"\n\n\"What's the question?\" inquired Stepan Arkadyevitch, coming out of his\nroom and addressing his wife.\n\nFrom his tone both Kitty and Anna knew that a reconciliation had taken\nplace.\n\n\"I want to move Anna downstairs, but we must hang up blinds. No one\nknows how to do it; I must see to it myself,\" answered Dolly addressing\nhim.\n\n\"God knows whether they are fully reconciled,\" thought Anna, hearing her\ntone, cold and composed.\n\n\"Oh, nonsense, Dolly, always making difficulties,\" answered her husband.\n\"Come, I'll do it all, if you like...\"\n\n\"Yes, they must be reconciled,\" thought Anna.\n\n\"I know how you do everything,\" answered Dolly. \"You tell Matvey to do\nwhat can't be done, and go away yourself, leaving him to make a muddle\nof everything,\" and her habitual, mocking smile curved the corners of\nDolly's lips as she spoke.\n\n\"Full, full reconciliation, full,\" thought Anna; \"thank God!\" and\nrejoicing that she was the cause of it, she went up to Dolly and kissed\nher.\n\n\"Not at all. Why do you always look down on me and Matvey?\" said Stepan\nArkadyevitch, smiling hardly perceptibly, and addressing his wife.\n\nThe whole evening Dolly was, as always, a little mocking in her tone to\nher husband, while Stepan Arkadyevitch was happy and cheerful, but not\nso as to seem as though, having been forgiven, he had forgotten his\noffense.\n\nAt half-past nine o'clock a particularly joyful and pleasant family\nconversation over the tea-table at the Oblonskys' was broken up by an\napparently simple incident. But this simple incident for some reason\nstruck everyone as strange. Talking about common acquaintances in\nPetersburg, Anna got up quickly.\n\n\"She is in my album,\" she said; \"and, by the way, I'll show you my\nSeryozha,\" she added, with a mother's smile of pride.\n\nTowards ten o'clock, when she usually said good-night to her son, and\noften before going to a ball put him to bed herself, she felt depressed\nat being so far from him; and whatever she was talking about, she kept\ncoming back in thought to her curly-headed Seryozha. She longed to look\nat his photograph and talk of him. Seizing the first pretext, she got\nup, and with her light, resolute step went for her album. The stairs up\nto her room came out on the landing of the great warm main staircase.\n\nJust as she was leaving the drawing room, a ring was heard in the hall.\n\n\"Who can that be?\" said Dolly.\n\n\"It's early for me to be fetched, and for anyone else it's late,\"\nobserved Kitty.\n\n\"Sure to be someone with papers for me,\" put in Stepan Arkadyevitch.\nWhen Anna was passing the top of the staircase, a servant was running up\nto announce the visitor, while the visitor himself was standing under a\nlamp. Anna glancing down at once recognized Vronsky, and a strange\nfeeling of pleasure and at the same time of dread of something stirred\nin her heart. He was standing still, not taking off his coat, pulling\nsomething out of his pocket. At the instant when she was just facing the\nstairs, he raised his eyes, caught sight of her, and into the expression\nof his face there passed a shade of embarrassment and dismay. With a\nslight inclination of her head she passed, hearing behind her Stepan\nArkadyevitch's loud voice calling him to come up, and the quiet, soft,\nand composed voice of Vronsky refusing.\n\nWhen Anna returned with the album, he was already gone, and Stepan\nArkadyevitch was telling them that he had called to inquire about the\ndinner they were giving next day to a celebrity who had just arrived.\n\"And nothing would induce him to come up. What a queer fellow he is!\"\nadded Stepan Arkadyevitch.\n\nKitty blushed. She thought that she was the only person who knew why he\nhad come, and why he would not come up. \"He has been at home,\" she\nthought, \"and didn't find me, and thought I should be here, but he did\nnot come up because he thought it late, and Anna's here.\"\n\nAll of them looked at each other, saying nothing, and began to look at\nAnna's album.\n\nThere was nothing either exceptional or strange in a man's calling at\nhalf-past nine on a friend to inquire details of a proposed dinner party\nand not coming in, but it seemed strange to all of them. Above all, it\nseemed strange and not right to Anna.\n\n\n\nChapter 22\n\n\nThe ball was only just beginning as Kitty and her mother walked up the\ngreat staircase, flooded with light, and lined with flowers and footmen\nin powder and red coats. From the rooms came a constant, steady hum, as\nfrom a hive, and the rustle of movement; and while on the landing\nbetween trees they gave last touches to their hair and dresses before\nthe mirror, they heard from the ballroom the careful, distinct notes of\nthe fiddles of the orchestra beginning the first waltz. A little old man\nin civilian dress, arranging his gray curls before another mirror, and\ndiffusing an odor of scent, stumbled against them on the stairs, and\nstood aside, evidently admiring Kitty, whom he did not know. A beardless\nyouth, one of those society youths whom the old Prince Shtcherbatsky\ncalled \"young bucks,\" in an exceedingly open waistcoat, straightening\nhis white tie as he went, bowed to them, and after running by, came back\nto ask Kitty for a quadrille. As the first quadrille had already been\ngiven to Vronsky, she had to promise this youth the second. An officer,\nbuttoning his glove, stood aside in the doorway, and stroking his\nmustache, admired rosy Kitty.\n\nAlthough her dress, her coiffure, and all the preparations for the ball\nhad cost Kitty great trouble and consideration, at this moment she\nwalked into the ballroom in her elaborate tulle dress over a pink slip\nas easily and simply as though all the rosettes and lace, all the minute\ndetails of her attire, had not cost her or her family a moment's\nattention, as though she had been born in that tulle and lace, with her\nhair done up high on her head, and a rose and two leaves on the top of\nit.\n\nWhen, just before entering the ballroom, the princess, her mother, tried\nto turn right side out of the ribbon of her sash, Kitty had drawn back a\nlittle. She felt that everything must be right of itself, and graceful,\nand nothing could need setting straight.\n\nIt was one of Kitty's best days. Her dress was not uncomfortable\nanywhere; her lace berthe did not droop anywhere; her rosettes were not\ncrushed nor torn off; her pink slippers with high, hollowed-out heels\ndid not pinch, but gladdened her feet; and the thick rolls of fair\nchignon kept up on her head as if they were her own hair. All the three\nbuttons buttoned up without tearing on the long glove that covered her\nhand without concealing its lines. The black velvet of her locket\nnestled with special softness round her neck. That velvet was delicious;\nat home, looking at her neck in the looking glass, Kitty had felt that\nthat velvet was speaking. About all the rest there might be a doubt, but\nthe velvet was delicious. Kitty smiled here too, at the ball, when she\nglanced at it in the glass. Her bare shoulders and arms gave Kitty a\nsense of chill marble, a feeling she particularly liked. Her eyes\nsparkled, and her rosy lips could not keep from smiling from the\nconsciousness of her own attractiveness. She had scarcely entered the\nballroom and reached the throng of ladies, all tulle, ribbons, lace, and\nflowers, waiting to be asked to dance--Kitty was never one of that\nthrong--when she was asked for a waltz, and asked by the best partner,\nthe first star in the hierarchy of the ballroom, a renowned director of\ndances, a married man, handsome and well-built, Yegorushka Korsunsky. He\nhad only just left the Countess Bonina, with whom he had danced the\nfirst half of the waltz, and, scanning his kingdom--that is to say, a\nfew couples who had started dancing--he caught sight of Kitty, entering,\nand flew up to her with that peculiar, easy amble which is confined to\ndirectors of balls. Without even asking her if she cared to dance, he\nput out his arm to encircle her slender waist. She looked round for\nsomeone to give her fan to, and their hostess, smiling to her, took it.\n\n\"How nice you've come in good time,\" he said to her, embracing her\nwaist; \"such a bad habit to be late.\" Bending her left hand, she laid it\non his shoulder, and her little feet in their pink slippers began\nswiftly, lightly, and rhythmically moving over the slippery floor in\ntime to the music.\n\n\"It's a rest to waltz with you,\" he said to her, as they fell into the\nfirst slow steps of the waltz. \"It's exquisite--such lightness,\nprecision.\" He said to her the same thing he said to almost all his\npartners whom he knew well.\n\nShe smiled at his praise, and continued to look about the room over his\nshoulder. She was not like a girl at her first ball, for whom all faces\nin the ballroom melt into one vision of fairyland. And she was not a\ngirl who had gone the stale round of balls till every face in the\nballroom was familiar and tiresome. But she was in the middle stage\nbetween these two; she was excited, and at the same time she had\nsufficient self-possession to be able to observe. In the left corner of\nthe ballroom she saw the cream of society gathered together.\nThere--incredibly naked--was the beauty Lidi, Korsunsky's wife; there\nwas the lady of the house; there shone the bald head of Krivin, always\nto be found where the best people were. In that direction gazed the\nyoung men, not venturing to approach. There, too, she descried Stiva,\nand there she saw the exquisite figure and head of Anna in a black\nvelvet gown. And _he_ was there. Kitty had not seen him since the\nevening she refused Levin. With her long-sighted eyes, she knew him at\nonce, and was even aware that he was looking at her.\n\n\"Another turn, eh? You're not tired?\" said Korsunsky, a little out of\nbreath.\n\n\"No, thank you!\"\n\n\"Where shall I take you?\"\n\n\"Madame Karenina's here, I think ... take me to her.\"\n\n\"Wherever you command.\"\n\nAnd Korsunsky began waltzing with measured steps straight towards the\ngroup in the left corner, continually saying, \"Pardon, mesdames, pardon,\npardon, mesdames\"; and steering his course through the sea of lace,\ntulle, and ribbon, and not disarranging a feather, he turned his partner\nsharply round, so that her slim ankles, in light transparent stockings,\nwere exposed to view, and her train floated out in fan shape and covered\nKrivin's knees. Korsunsky bowed, set straight his open shirt front, and\ngave her his arm to conduct her to Anna Arkadyevna. Kitty, flushed, took\nher train from Krivin's knees, and, a little giddy, looked round,\nseeking Anna. Anna was not in lilac, as Kitty had so urgently wished,\nbut in a black, low-cut, velvet gown, showing her full throat and\nshoulders, that looked as though carved in old ivory, and her rounded\narms, with tiny, slender wrists. The whole gown was trimmed with\nVenetian guipure. On her head, among her black hair--her own, with no\nfalse additions--was a little wreath of pansies, and a bouquet of the\nsame in the black ribbon of her sash among white lace. Her coiffure was\nnot striking. All that was noticeable was the little wilful tendrils of\nher curly hair that would always break free about her neck and temples.\nRound her well-cut, strong neck was a thread of pearls.\n\nKitty had been seeing Anna every day; she adored her, and had pictured\nher invariably in lilac. But now seeing her in black, she felt that she\nhad not fully seen her charm. She saw her now as someone quite new and\nsurprising to her. Now she understood that Anna could not have been in\nlilac, and that her charm was just that she always stood out against her\nattire, that her dress could never be noticeable on her. And her black\ndress, with its sumptuous lace, was not noticeable on her; it was only\nthe frame, and all that was seen was she--simple, natural, elegant, and\nat the same time gay and eager.\n\nShe was standing holding herself, as always, very erect, and when Kitty\ndrew near the group she was speaking to the master of the house, her\nhead slightly turned towards him.\n\n\"No, I don't throw stones,\" she was saying, in answer to something,\n\"though I can't understand it,\" she went on, shrugging her shoulders,\nand she turned at once with a soft smile of protection towards Kitty.\nWith a flying, feminine glance she scanned her attire, and made a\nmovement of her head, hardly perceptible, but understood by Kitty,\nsignifying approval of her dress and her looks. \"You came into the room\ndancing,\" she added.\n\n\"This is one of my most faithful supporters,\" said Korsunsky, bowing to\nAnna Arkadyevna, whom he had not yet seen. \"The princess helps to make\nballs happy and successful. Anna Arkadyevna, a waltz?\" he said, bending\ndown to her.\n\n\"Why, have you met?\" inquired their host.\n\n\"Is there anyone we have not met? My wife and I are like white\nwolves--everyone knows us,\" answered Korsunsky. \"A waltz, Anna\nArkadyevna?\"\n\n\"I don't dance when it's possible not to dance,\" she said.\n\n\"But tonight it's impossible,\" answered Korsunsky.\n\nAt that instant Vronsky came up.\n\n\"Well, since it's impossible tonight, let us start,\" she said, not\nnoticing Vronsky's bow, and she hastily put her hand on Korsunsky's\nshoulder.\n\n\"What is she vexed with him about?\" thought Kitty, discerning that Anna\nhad intentionally not responded to Vronsky's bow. Vronsky went up to\nKitty reminding her of the first quadrille, and expressing his regret\nthat he had not seen her all this time. Kitty gazed in admiration at\nAnna waltzing, and listened to him. She expected him to ask her for a\nwaltz, but he did not, and she glanced wonderingly at him. He flushed\nslightly, and hurriedly asked her to waltz, but he had only just put his\narm round her waist and taken the first step when the music suddenly\nstopped. Kitty looked into his face, which was so close to her own, and\nlong afterwards--for several years after--that look, full of love, to\nwhich he made no response, cut her to the heart with an agony of shame.\n\n\"_Pardon! pardon!_ Waltz! waltz!\" shouted Korsunsky from the other side\nof the room, and seizing the first young lady he came across he began\ndancing himself.\n\n\n\nChapter 23\n\n\nVronsky and Kitty waltzed several times round the room. After the first\nwaltz Kitty went to her mother, and she had hardly time to say a few\nwords to Countess Nordston when Vronsky came up again for the first\nquadrille. During the quadrille nothing of any significance was said:\nthere was disjointed talk between them of the Korsunskys, husband and\nwife, whom he described very amusingly, as delightful children at forty,\nand of the future town theater; and only once the conversation touched\nher to the quick, when he asked her about Levin, whether he was here,\nand added that he liked him so much. But Kitty did not expect much from\nthe quadrille. She looked forward with a thrill at her heart to the\nmazurka. She fancied that in the mazurka everything must be decided. The\nfact that he did not during the quadrille ask her for the mazurka did\nnot trouble her. She felt sure she would dance the mazurka with him as\nshe had done at former balls, and refused five young men, saying she was\nengaged for the mazurka. The whole ball up to the last quadrille was for\nKitty an enchanted vision of delightful colors, sounds, and motions. She\nonly sat down when she felt too tired and begged for a rest. But as she\nwas dancing the last quadrille with one of the tiresome young men whom\nshe could not refuse, she chanced to be vis-a-vis with Vronsky and Anna.\nShe had not been near Anna again since the beginning of the evening, and\nnow again she saw her suddenly quite new and surprising. She saw in her\nthe signs of that excitement of success she knew so well in herself; she\nsaw that she was intoxicated with the delighted admiration she was\nexciting. She knew that feeling and knew its signs, and saw them in\nAnna; saw the quivering, flashing light in her eyes, and the smile of\nhappiness and excitement unconsciously playing on her lips, and the\ndeliberate grace, precision, and lightness of her movements.\n\n\"Who?\" she asked herself. \"All or one?\" And not assisting the harassed\nyoung man she was dancing with in the conversation, the thread of which\nhe had lost and could not pick up again, she obeyed with external\nliveliness the peremptory shouts of Korsunsky starting them all into the\n_grand rond_, and then into the _chaine_, and at the same time she kept\nwatch with a growing pang at her heart. \"No, it's not the admiration of\nthe crowd has intoxicated her, but the adoration of one. And that one?\ncan it be he?\" Every time he spoke to Anna the joyous light flashed into\nher eyes, and the smile of happiness curved her red lips. she seemed to\nmake an effort to control herself, to try not to show these signs of\ndelight, but they came out on her face of themselves. \"But what of him?\"\nKitty looked at him and was filled with terror. What was pictured so\nclearly to Kitty in the mirror of Anna's face she saw in him. What had\nbecome of his always self-possessed resolute manner, and the carelessly\nserene expression of his face? Now every time he turned to her, he bent\nhis head, as though he would have fallen at her feet, and in his eyes\nthere was nothing but humble submission and dread. \"I would not offend\nyou,\" his eyes seemed every time to be saying, \"but I want to save\nmyself, and I don't know how.\" On his face was a look such as Kitty had\nnever seen before.\n\nThey were speaking of common acquaintances, keeping up the most trivial\nconversation, but to Kitty it seemed that every word they said was\ndetermining their fate and hers. And strange it was that they were\nactually talking of how absurd Ivan Ivanovitch was with his French, and\nhow the Eletsky girl might have made a better match, yet these words had\nall the while consequence for them, and they were feeling just as Kitty\ndid. The whole ball, the whole world, everything seemed lost in fog in\nKitty's soul. Nothing but the stern discipline of her bringing-up\nsupported her and forced her to do what was expected of her, that is, to\ndance, to answer questions, to talk, even to smile. But before the\nmazurka, when they were beginning to rearrange the chairs and a few\ncouples moved out of the smaller rooms into the big room, a moment of\ndespair and horror came for Kitty. She had refused five partners, and\nnow she was not dancing the mazurka. She had not even a hope of being\nasked for it, because she was so successful in society that the idea\nwould never occur to anyone that she had remained disengaged till now.\nShe would have to tell her mother she felt ill and go home, but she had\nnot the strength to do this. She felt crushed. She went to the furthest\nend of the little drawing room and sank into a low chair. Her light,\ntransparent skirts rose like a cloud about her slender waist; one bare,\nthin, soft, girlish arm, hanging listlessly, was lost in the folds of\nher pink tunic; in the other she held her fan, and with rapid, short\nstrokes fanned her burning face. But while she looked like a butterfly,\nclinging to a blade of grass, and just about to open its rainbow wings\nfor fresh flight, her heart ached with a horrible despair.\n\n\"But perhaps I am wrong, perhaps it was not so?\" And again she recalled\nall she had seen.\n\n\"Kitty, what is it?\" said Countess Nordston, stepping noiselessly over\nthe carpet towards her. \"I don't understand it.\"\n\nKitty's lower lip began to quiver; she got up quickly.\n\n\"Kitty, you're not dancing the mazurka?\"\n\n\"No, no,\" said Kitty in a voice shaking with tears.\n\n\"He asked her for the mazurka before me,\" said Countess Nordston,\nknowing Kitty would understand who were \"he\" and \"her.\" \"She said: 'Why,\naren't you going to dance it with Princess Shtcherbatskaya?'\"\n\n\"Oh, I don't care!\" answered Kitty.\n\nNo one but she herself understood her position; no one knew that she had\njust refused the man whom perhaps she loved, and refused him because she\nhad put her faith in another.\n\nCountess Nordston found Korsunsky, with whom she was to dance the\nmazurka, and told him to ask Kitty.\n\nKitty danced in the first couple, and luckily for her she had not to\ntalk, because Korsunsky was all the time running about directing the\nfigure. Vronsky and Anna sat almost opposite her. She saw them with her\nlong-sighted eyes, and saw them, too, close by, when they met in the\nfigures, and the more she saw of them the more convinced was she that\nher unhappiness was complete. She saw that they felt themselves alone in\nthat crowded room. And on Vronsky's face, always so firm and\nindependent, she saw that look that had struck her, of bewilderment and\nhumble submissiveness, like the expression of an intelligent dog when it\nhas done wrong.\n\nAnna smiled, and her smile was reflected by him. She grew thoughtful,\nand he became serious. Some supernatural force drew Kitty's eyes to\nAnna's face. She was fascinating in her simple black dress, fascinating\nwere her round arms with their bracelets, fascinating was her firm neck\nwith its thread of pearls, fascinating the straying curls of her loose\nhair, fascinating the graceful, light movements of her little feet and\nhands, fascinating was that lovely face in its eagerness, but there was\nsomething terrible and cruel in her fascination.\n\nKitty admired her more than ever, and more and more acute was her\nsuffering. Kitty felt overwhelmed, and her face showed it. When Vronsky\nsaw her, coming across her in the mazurka, he did not at once recognize\nher, she was so changed.\n\n\"Delightful ball!\" he said to her, for the sake of saying something.\n\n\"Yes,\" she answered.\n\nIn the middle of the mazurka, repeating a complicated figure, newly\ninvented by Korsunsky, Anna came forward into the center of the circle,\nchose two gentlemen, and summoned a lady and Kitty. Kitty gazed at her\nin dismay as she went up. Anna looked at her with drooping eyelids, and\nsmiled, pressing her hand. But, noticing that Kitty only responded to\nher smile by a look of despair and amazement, she turned away from her,\nand began gaily talking to the other lady.\n\n\"Yes, there is something uncanny, devilish and fascinating in her,\"\nKitty said to herself.\n\nAnna did not mean to stay to supper, but the master of the house began\nto press her to do so.\n\n\"Nonsense, Anna Arkadyevna,\" said Korsunsky, drawing her bare arm under\nthe sleeve of his dress coat, \"I've such an idea for a _cotillion! Un\nbijou!_\"\n\nAnd he moved gradually on, trying to draw her along with him. Their host\nsmiled approvingly.\n\n\"No, I am not going to stay,\" answered Anna, smiling, but in spite of\nher smile, both Korsunsky and the master of the house saw from her\nresolute tone that she would not stay.\n\n\"No; why, as it is, I have danced more at your ball in Moscow than I\nhave all the winter in Petersburg,\" said Anna, looking round at Vronsky,\nwho stood near her. \"I must rest a little before my journey.\"\n\n\"Are you certainly going tomorrow then?\" asked Vronsky.\n\n\"Yes, I suppose so,\" answered Anna, as it were wondering at the boldness\nof his question; but the irrepressible, quivering brilliance of her eyes\nand her smile set him on fire as she said it.\n\nAnna Arkadyevna did not stay to supper, but went home.\n\n\n\nChapter 24\n\n\n\"Yes, there is something in me hateful, repulsive,\" thought Levin, as he\ncame away from the Shtcherbatskys', and walked in the direction of his\nbrother's lodgings. \"And I don't get on with other people. Pride, they\nsay. No, I have no pride. If I had any pride, I should not have put\nmyself in such a position.\" And he pictured to himself Vronsky, happy,\ngood-natured, clever, and self-possessed, certainly never placed in the\nawful position in which he had been that evening. \"Yes, she was bound to\nchoose him. So it had to be, and I cannot complain of anyone or\nanything. I am myself to blame. What right had I to imagine she would\ncare to join her life to mine? Who am I and what am I? A nobody, not\nwanted by any one, nor of use to anybody.\" And he recalled his brother\nNikolay, and dwelt with pleasure on the thought of him. \"Isn't he right\nthat everything in the world is base and loathsome? And are we fair in\nour judgment of brother Nikolay? Of course, from the point of view of\nProkofy, seeing him in a torn cloak and tipsy, he's a despicable person.\nBut I know him differently. I know his soul, and know that we are like\nhim. And I, instead of going to seek him out, went out to dinner, and\ncame here.\" Levin walked up to a lamppost, read his brother's address,\nwhich was in his pocketbook, and called a sledge. All the long way to\nhis brother's, Levin vividly recalled all the facts familiar to him of\nhis brother Nikolay's life. He remembered how his brother, while at the\nuniversity, and for a year afterwards, had, in spite of the jeers of his\ncompanions, lived like a monk, strictly observing all religious rites,\nservices, and fasts, and avoiding every sort of pleasure, especially\nwomen. And afterwards, how he had all at once broken out: he had\nassociated with the most horrible people, and rushed into the most\nsenseless debauchery. He remembered later the scandal over a boy, whom\nhe had taken from the country to bring up, and, in a fit of rage, had so\nviolently beaten that proceedings were brought against him for\nunlawfully wounding. Then he recalled the scandal with a sharper, to\nwhom he had lost money, and given a promissory note, and against whom he\nhad himself lodged a complaint, asserting that he had cheated him. (This\nwas the money Sergey Ivanovitch had paid.) Then he remembered how he had\nspent a night in the lockup for disorderly conduct in the street. He\nremembered the shameful proceedings he had tried to get up against his\nbrother Sergey Ivanovitch, accusing him of not having paid him his share\nof his mother's fortune, and the last scandal, when he had gone to a\nwestern province in an official capacity, and there had got into trouble\nfor assaulting a village elder.... It was all horribly disgusting, yet\nto Levin it appeared not at all in the same disgusting light as it\ninevitably would to those who did not know Nikolay, did not know all his\nstory, did not know his heart.\n\nLevin remembered that when Nikolay had been in the devout stage, the\nperiod of fasts and monks and church services, when he was seeking in\nreligion a support and a curb for his passionate temperament, everyone,\nfar from encouraging him, had jeered at him, and he, too, with the\nothers. They had teased him, called him Noah and Monk; and, when he had\nbroken out, no one had helped him, but everyone had turned away from him\nwith horror and disgust.\n\nLevin felt that, in spite of all the ugliness of his life, his brother\nNikolay, in his soul, in the very depths of his soul, was no more in the\nwrong than the people who despised him. He was not to blame for having\nbeen born with his unbridled temperament and his somehow limited\nintelligence. But he had always wanted to be good. \"I will tell him\neverything, without reserve, and I will make him speak without reserve,\ntoo, and I'll show him that I love him, and so understand him,\" Levin\nresolved to himself, as, towards eleven o'clock, he reached the hotel of\nwhich he had the address.\n\n\"At the top, 12 and 13,\" the porter answered Levin's inquiry.\n\n\"At home?\"\n\n\"Sure to be at home.\"\n\nThe door of No. 12 was half open, and there came out into the streak of\nlight thick fumes of cheap, poor tobacco, and the sound of a voice,\nunknown to Levin; but he knew at once that his brother was there; he\nheard his cough.\n\nAs he went in the door, the unknown voice was saying:\n\n\"It all depends with how much judgment and knowledge the thing's done.\"\n\nKonstantin Levin looked in at the door, and saw that the speaker was a\nyoung man with an immense shock of hair, wearing a Russian jerkin, and\nthat a pockmarked woman in a woolen gown, without collar or cuffs, was\nsitting on the sofa. His brother was not to be seen. Konstantin felt a\nsharp pang at his heart at the thought of the strange company in which\nhis brother spent his life. No one had heard him, and Konstantin, taking\noff his galoshes, listened to what the gentleman in the jerkin was\nsaying. He was speaking of some enterprise.\n\n\"Well, the devil flay them, the privileged classes,\" his brother's voice\nresponded, with a cough. \"Masha! get us some supper and some wine if\nthere's any left; or else go and get some.\"\n\nThe woman rose, came out from behind the screen, and saw Konstantin.\n\n\"There's some gentleman, Nikolay Dmitrievitch,\" she said.\n\n\"Whom do you want?\" said the voice of Nikolay Levin, angrily.\n\n\"It's I,\" answered Konstantin Levin, coming forward into the light.\n\n\"Who's _I_?\" Nikolay's voice said again, still more angrily. He could be\nheard getting up hurriedly, stumbling against something, and Levin saw,\nfacing him in the doorway, the big, scared eyes, and the huge, thin,\nstooping figure of his brother, so familiar, and yet astonishing in its\nweirdness and sickliness.\n\nHe was even thinner than three years before, when Konstantin Levin had\nseen him last. He was wearing a short coat, and his hands and big bones\nseemed huger than ever. His hair had grown thinner, the same straight\nmustaches hid his lips, the same eyes gazed strangely and naively at his\nvisitor.\n\n\"Ah, Kostya!\" he exclaimed suddenly, recognizing his brother, and his\neyes lit up with joy. But the same second he looked round at the young\nman, and gave the nervous jerk of his head and neck that Konstantin knew\nso well, as if his neckband hurt him; and a quite different expression,\nwild, suffering, and cruel, rested on his emaciated face.\n\n\"I wrote to you and Sergey Ivanovitch both that I don't know you and\ndon't want to know you. What is it you want?\"\n\nHe was not at all the same as Konstantin had been fancying him. The\nworst and most tiresome part of his character, what made all relations\nwith him so difficult, had been forgotten by Konstantin Levin when he\nthought of him, and now, when he saw his face, and especially that\nnervous twitching of his head, he remembered it all.\n\n\"I didn't want to see you for anything,\" he answered timidly. \"I've\nsimply come to see you.\"\n\nHis brother's timidity obviously softened Nikolay. His lips twitched.\n\n\"Oh, so that's it?\" he said. \"Well, come in; sit down. Like some supper?\nMasha, bring supper for three. No, stop a minute. Do you know who this\nis?\" he said, addressing his brother, and indicating the gentleman in\nthe jerkin: \"This is Mr. Kritsky, my friend from Kiev, a very remarkable\nman. He's persecuted by the police, of course, because he's not a\nscoundrel.\"\n\nAnd he looked round in the way he always did at everyone in the room.\nSeeing that the woman standing in the doorway was moving to go, he\nshouted to her, \"Wait a minute, I said.\" And with the inability to\nexpress himself, the incoherence that Konstantin knew so well, he began,\nwith another look round at everyone, to tell his brother Kritsky's\nstory: how he had been expelled from the university for starting a\nbenefit society for the poor students and Sunday schools; and how he had\nafterwards been a teacher in a peasant school, and how he had been\ndriven out of that too, and had afterwards been condemned for something.\n\n\"You're of the Kiev university?\" said Konstantin Levin to Kritsky, to\nbreak the awkward silence that followed.\n\n\"Yes, I was of Kiev,\" Kritsky replied angrily, his face darkening.\n\n\"And this woman,\" Nikolay Levin interrupted him, pointing to her, \"is\nthe partner of my life, Marya Nikolaevna. I took her out of a bad\nhouse,\" and he jerked his neck saying this; \"but I love her and respect\nher, and any one who wants to know me,\" he added, raising his voice and\nknitting his brows, \"I beg to love her and respect her. She's just the\nsame as my wife, just the same. So now you know whom you've to do with.\nAnd if you think you're lowering yourself, well, here's the floor,\nthere's the door.\"\n\nAnd again his eyes traveled inquiringly over all of them.\n\n\"Why I should be lowering myself, I don't understand.\"\n\n\"Then, Masha, tell them to bring supper; three portions, spirits and\nwine.... No, wait a minute.... No, it doesn't matter.... Go along.\"\n\n\n\nChapter 25\n\n\n\"So you see,\" pursued Nikolay Levin, painfully wrinkling his forehead\nand twitching.\n\nIt was obviously difficult for him to think of what to say and do.\n\n\"Here, do you see?\"... He pointed to some sort of iron bars, fastened\ntogether with strings, lying in a corner of the room. \"Do you see that?\nThat's the beginning of a new thing we're going into. It's a productive\nassociation...\"\n\nKonstantin scarcely heard him. He looked into his sickly, consumptive\nface, and he was more and more sorry for him, and he could not force\nhimself to listen to what his brother was telling him about the\nassociation. He saw that this association was a mere anchor to save him\nfrom self-contempt. Nikolay Levin went on talking:\n\n\"You know that capital oppresses the laborer. The laborers with us, the\npeasants, bear all the burden of labor, and are so placed that however\nmuch they work they can't escape from their position of beasts of\nburden. All the profits of labor, on which they might improve their\nposition, and gain leisure for themselves, and after that education, all\nthe surplus values are taken from them by the capitalists. And society's\nso constituted that the harder they work, the greater the profit of the\nmerchants and landowners, while they stay beasts of burden to the end.\nAnd that state of things must be changed,\" he finished up, and he looked\nquestioningly at his brother.\n\n\"Yes, of course,\" said Konstantin, looking at the patch of red that had\ncome out on his brother's projecting cheek bones.\n\n\"And so we're founding a locksmiths' association, where all the\nproduction and profit and the chief instruments of production will be in\ncommon.\"\n\n\"Where is the association to be?\" asked Konstantin Levin.\n\n\"In the village of Vozdrem, Kazan government.\"\n\n\"But why in a village? In the villages, I think, there is plenty of work\nas it is. Why a locksmiths' association in a village?\"\n\n\"Why? Because the peasants are just as much slaves as they ever were,\nand that's why you and Sergey Ivanovitch don't like people to try and\nget them out of their slavery,\" said Nikolay Levin, exasperated by the\nobjection.\n\nKonstantin Levin sighed, looking meanwhile about the cheerless and dirty\nroom. This sigh seemed to exasperate Nikolay still more.\n\n\"I know your and Sergey Ivanovitch's aristocratic views. I know that he\napplies all the power of his intellect to justify existing evils.\"\n\n\"No; and what do you talk of Sergey Ivanovitch for?\" said Levin,\nsmiling.\n\n\"Sergey Ivanovitch? I'll tell you what for!\" Nikolay Levin shrieked\nsuddenly at the name of Sergey Ivanovitch. \"I'll tell you what for....\nBut what's the use of talking? There's only one thing.... What did you\ncome to me for? You look down on this, and you're welcome to,--and go\naway, in God's name go away!\" he shrieked, getting up from his chair.\n\"And go away, and go away!\"\n\n\"I don't look down on it at all,\" said Konstantin Levin timidly. \"I\ndon't even dispute it.\"\n\nAt that instant Marya Nikolaevna came back. Nikolay Levin looked round\nangrily at her. She went quickly to him, and whispered something.\n\n\"I'm not well; I've grown irritable,\" said Nikolay Levin, getting calmer\nand breathing painfully; \"and then you talk to me of Sergey Ivanovitch\nand his article. It's such rubbish, such lying, such self-deception.\nWhat can a man write of justice who knows nothing of it? Have you read\nhis article?\" he asked Kritsky, sitting down again at the table, and\nmoving back off half of it the scattered cigarettes, so as to clear a\nspace.\n\n\"I've not read it,\" Kritsky responded gloomily, obviously not desiring\nto enter into the conversation.\n\n\"Why not?\" said Nikolay Levin, now turning with exasperation upon\nKritsky.\n\n\"Because I didn't see the use of wasting my time over it.\"\n\n\"Oh, but excuse me, how did you know it would be wasting your time? That\narticle's too deep for many people--that's to say it's over their heads.\nBut with me, it's another thing; I see through his ideas, and I know\nwhere its weakness lies.\"\n\nEveryone was mute. Kritsky got up deliberately and reached his cap.\n\n\"Won't you have supper? All right, good-bye! Come round tomorrow with\nthe locksmith.\"\n\nKritsky had hardly gone out when Nikolay Levin smiled and winked.\n\n\"He's no good either,\" he said. \"I see, of course...\"\n\nBut at that instant Kritsky, at the door, called him...\n\n\"What do you want now?\" he said, and went out to him in the passage.\nLeft alone with Marya Nikolaevna, Levin turned to her.\n\n\"Have you been long with my brother?\" he said to her.\n\n\"Yes, more than a year. Nikolay Dmitrievitch's health has become very\npoor. Nikolay Dmitrievitch drinks a great deal,\" she said.\n\n\"That is ... how does he drink?\"\n\n\"Drinks vodka, and it's bad for him.\"\n\n\"And a great deal?\" whispered Levin.\n\n\"Yes,\" she said, looking timidly towards the doorway, where Nikolay\nLevin had reappeared.\n\n\"What were you talking about?\" he said, knitting his brows, and turning\nhis scared eyes from one to the other. \"What was it?\"\n\n\"Oh, nothing,\" Konstantin answered in confusion.\n\n\"Oh, if you don't want to say, don't. Only it's no good your talking to\nher. She's a wench, and you're a gentleman,\" he said with a jerk of the\nneck. \"You understand everything, I see, and have taken stock of\neverything, and look with commiseration on my shortcomings,\" he began\nagain, raising his voice.\n\n\"Nikolay Dmitrievitch, Nikolay Dmitrievitch,\" whispered Marya\nNikolaevna, again going up to him.\n\n\"Oh, very well, very well!... But where's the supper? Ah, here it is,\"\nhe said, seeing a waiter with a tray. \"Here, set it here,\" he added\nangrily, and promptly seizing the vodka, he poured out a glassful and\ndrank it greedily. \"Like a drink?\" he turned to his brother, and at once\nbecame better humored.\n\n\"Well, enough of Sergey Ivanovitch. I'm glad to see you, anyway. After\nall's said and done, we're not strangers. Come, have a drink. Tell me\nwhat you're doing,\" he went on, greedily munching a piece of bread, and\npouring out another glassful. \"How are you living?\"\n\n\"I live alone in the country, as I used to. I'm busy looking after the\nland,\" answered Konstantin, watching with horror the greediness with\nwhich his brother ate and drank, and trying to conceal that he noticed\nit.\n\n\"Why don't you get married?\"\n\n\"It hasn't happened so,\" Konstantin answered, reddening a little.\n\n\"Why not? For me now ... everything's at an end! I've made a mess of my\nlife. But this I've said, and I say still, that if my share had been\ngiven me when I needed it, my whole life would have been different.\"\n\nKonstantin made haste to change the conversation.\n\n\"Do you know your little Vanya's with me, a clerk in the countinghouse\nat Pokrovskoe.\"\n\nNikolay jerked his neck, and sank into thought.\n\n\"Yes, tell me what's going on at Pokrovskoe. Is the house standing\nstill, and the birch trees, and our schoolroom? And Philip the gardener,\nis he living? How I remember the arbor and the seat! Now mind and don't\nalter anything in the house, but make haste and get married, and make\neverything as it used to be again. Then I'll come and see you, if your\nwife is nice.\"\n\n\"But come to me now,\" said Levin. \"How nicely we would arrange it!\"\n\n\"I'd come and see you if I were sure I should not find Sergey\nIvanovitch.\"\n\n\"You wouldn't find him there. I live quite independently of him.\"\n\n\"Yes, but say what you like, you will have to choose between me and\nhim,\" he said, looking timidly into his brother's face.\n\nThis timidity touched Konstantin.\n\n\"If you want to hear my confession of faith on the subject, I tell you\nthat in your quarrel with Sergey Ivanovitch I take neither side. You're\nboth wrong. You're more wrong externally, and he inwardly.\"\n\n\"Ah, ah! You see that, you see that!\" Nikolay shouted joyfully.\n\n\"But I personally value friendly relations with you more because...\"\n\n\"Why, why?\"\n\nKonstantin could not say that he valued it more because Nikolay was\nunhappy, and needed affection. But Nikolay knew that this was just what\nhe meant to say, and scowling he took up the vodka again.\n\n\"Enough, Nikolay Dmitrievitch!\" said Marya Nikolaevna, stretching out\nher plump, bare arm towards the decanter.\n\n\"Let it be! Don't insist! I'll beat you!\" he shouted.\n\nMarya Nikolaevna smiled a sweet and good-humored smile, which was at\nonce reflected on Nikolay's face, and she took the bottle.\n\n\"And do you suppose she understands nothing?\" said Nikolay. \"She\nunderstands it all better than any of us. Isn't it true there's\nsomething good and sweet in her?\"\n\n\"Were you never before in Moscow?\" Konstantin said to her, for the sake\nof saying something.\n\n\"Only you mustn't be polite and stiff with her. It frightens her. No one\never spoke to her so but the justices of the peace who tried her for\ntrying to get out of a house of ill-fame. Mercy on us, the senselessness\nin the world!\" he cried suddenly. \"These new institutions, these\njustices of the peace, rural councils, what hideousness it all is!\"\n\nAnd he began to enlarge on his encounters with the new institutions.\n\nKonstantin Levin heard him, and the disbelief in the sense of all public\ninstitutions, which he shared with him, and often expressed, was\ndistasteful to him now from his brother's lips.\n\n\"In another world we shall understand it all,\" he said lightly.\n\n\"In another world! Ah, I don't like that other world! I don't like it,\"\nhe said, letting his scared eyes rest on his brother's eyes. \"Here one\nwould think that to get out of all the baseness and the mess, one's own\nand other people's, would be a good thing, and yet I'm afraid of death,\nawfully afraid of death.\" He shuddered. \"But do drink something. Would\nyou like some champagne? Or shall we go somewhere? Let's go to the\nGypsies! Do you know I have got so fond of the Gypsies and Russian\nsongs.\"\n\nHis speech had begun to falter, and he passed abruptly from one subject\nto another. Konstantin with the help of Masha persuaded him not to go\nout anywhere, and got him to bed hopelessly drunk.\n\nMasha promised to write to Konstantin in case of need, and to persuade\nNikolay Levin to go and stay with his brother.\n\n\n\nChapter 26\n\n\nIn the morning Konstantin Levin left Moscow, and towards evening he\nreached home. On the journey in the train he talked to his neighbors\nabout politics and the new railways, and, just as in Moscow, he was\novercome by a sense of confusion of ideas, dissatisfaction with himself,\nshame of something or other. But when he got out at his own station,\nwhen he saw his one-eyed coachman, Ignat, with the collar of his coat\nturned up; when, in the dim light reflected by the station fires, he saw\nhis own sledge, his own horses with their tails tied up, in their\nharness trimmed with rings and tassels; when the coachman Ignat, as he\nput in his luggage, told him the village news, that the contractor had\narrived, and that Pava had calved,--he felt that little by little the\nconfusion was clearing up, and the shame and self-dissatisfaction were\npassing away. He felt this at the mere sight of Ignat and the horses;\nbut when he had put on the sheepskin brought for him, had sat down\nwrapped up in the sledge, and had driven off pondering on the work that\nlay before him in the village, and staring at the side-horse, that had\nbeen his saddle-horse, past his prime now, but a spirited beast from the\nDon, he began to see what had happened to him in quite a different\nlight. He felt himself, and did not want to be any one else. All he\nwanted now was to be better than before. In the first place he resolved\nthat from that day he would give up hoping for any extraordinary\nhappiness, such as marriage must have given him, and consequently he\nwould not so disdain what he really had. Secondly, he would never again\nlet himself give way to low passion, the memory of which had so tortured\nhim when he had been making up his mind to make an offer. Then\nremembering his brother Nikolay, he resolved to himself that he would\nnever allow himself to forget him, that he would follow him up, and not\nlose sight of him, so as to be ready to help when things should go ill\nwith him. And that would be soon, he felt. Then, too, his brother's talk\nof communism, which he had treated so lightly at the time, now made him\nthink. He considered a revolution in economic conditions nonsense. But\nhe always felt the injustice of his own abundance in comparison with the\npoverty of the peasants, and now he determined that so as to feel quite\nin the right, though he had worked hard and lived by no means\nluxuriously before, he would now work still harder, and would allow\nhimself even less luxury. And all this seemed to him so easy a conquest\nover himself that he spent the whole drive in the pleasantest daydreams.\nWith a resolute feeling of hope in a new, better life, he reached home\nbefore nine o'clock at night.\n\nThe snow of the little quadrangle before the house was lit up by a light\nin the bedroom windows of his old nurse, Agafea Mihalovna, who performed\nthe duties of housekeeper in his house. She was not yet asleep. Kouzma,\nwaked up by her, came sidling sleepily out onto the steps. A setter\nbitch, Laska, ran out too, almost upsetting Kouzma, and whining, turned\nround about Levin's knees, jumping up and longing, but not daring, to\nput her forepaws on his chest.\n\n\"You're soon back again, sir,\" said Agafea Mihalovna.\n\n\"I got tired of it, Agafea Mihalovna. With friends, one is well; but at\nhome, one is better,\" he answered, and went into his study.\n\nThe study was slowly lit up as the candle was brought in. The familiar\ndetails came out: the stag's horns, the bookshelves, the looking-glass,\nthe stove with its ventilator, which had long wanted mending, his\nfather's sofa, a large table, on the table an open book, a broken ash\ntray, a manuscript book with his handwriting. As he saw all this, there\ncame over him for an instant a doubt of the possibility of arranging the\nnew life, of which he had been dreaming on the road. All these traces of\nhis life seemed to clutch him, and to say to him: \"No, you're not going\nto get away from us, and you're not going to be different, but you're\ngoing to be the same as you've always been; with doubts, everlasting\ndissatisfaction with yourself, vain efforts to amend, and falls, and\neverlasting expectation, of a happiness which you won't get, and which\nisn't possible for you.\"\n\nThis the things said to him, but another voice in his heart was telling\nhim that he must not fall under the sway of the past, and that one can\ndo anything with oneself. And hearing that voice, he went into the\ncorner where stood his two heavy dumbbells, and began brandishing them\nlike a gymnast, trying to restore his confident temper. There was a\ncreak of steps at the door. He hastily put down the dumbbells.\n\nThe bailiff came in, and said everything, thank God, was doing well; but\ninformed him that the buckwheat in the new drying machine had been a\nlittle scorched. This piece of news irritated Levin. The new drying\nmachine had been constructed and partly invented by Levin. The bailiff\nhad always been against the drying machine, and now it was with\nsuppressed triumph that he announced that the buckwheat had been\nscorched. Levin was firmly convinced that if the buckwheat had been\nscorched, it was only because the precautions had not been taken, for\nwhich he had hundreds of times given orders. He was annoyed, and\nreprimanded the bailiff. But there had been an important and joyful\nevent: Pava, his best cow, an expensive beast, bought at a show, had\ncalved.\n\n\"Kouzma, give me my sheepskin. And you tell them to take a lantern. I'll\ncome and look at her,\" he said to the bailiff.\n\nThe cowhouse for the more valuable cows was just behind the house.\nWalking across the yard, passing a snowdrift by the lilac tree, he went\ninto the cowhouse. There was the warm, steamy smell of dung when the\nfrozen door was opened, and the cows, astonished at the unfamiliar light\nof the lantern, stirred on the fresh straw. He caught a glimpse of the\nbroad, smooth, black and piebald back of Hollandka. Berkoot, the bull,\nwas lying down with his ring in his lip, and seemed about to get up, but\nthought better of it, and only gave two snorts as they passed by him.\nPava, a perfect beauty, huge as a hippopotamus, with her back turned to\nthem, prevented their seeing the calf, as she sniffed her all over.\n\nLevin went into the pen, looked Pava over, and lifted the red and\nspotted calf onto her long, tottering legs. Pava, uneasy, began lowing,\nbut when Levin put the calf close to her she was soothed, and, sighing\nheavily, began licking her with her rough tongue. The calf, fumbling,\npoked her nose under her mother's udder, and stiffened her tail out\nstraight.\n\n\"Here, bring the light, Fyodor, this way,\" said Levin, examining the\ncalf. \"Like the mother! though the color takes after the father; but\nthat's nothing. Very good. Long and broad in the haunch. Vassily\nFedorovitch, isn't she splendid?\" he said to the bailiff, quite\nforgiving him for the buckwheat under the influence of his delight in\nthe calf.\n\n\"How could she fail to be? Oh, Semyon the contractor came the day after\nyou left. You must settle with him, Konstantin Dmitrievitch,\" said the\nbailiff. \"I did inform you about the machine.\"\n\nThis question was enough to take Levin back to all the details of his\nwork on the estate, which was on a large scale, and complicated. He went\nstraight from the cowhouse to the counting house, and after a little\nconversation with the bailiff and Semyon the contractor, he went back to\nthe house and straight upstairs to the drawing room.\n\n\n\nChapter 27\n\n\nThe house was big and old-fashioned, and Levin, though he lived alone,\nhad the whole house heated and used. He knew that this was stupid, he\nknew that it was positively not right, and contrary to his present new\nplans, but this house was a whole world to Levin. It was the world in\nwhich his father and mother had lived and died. They had lived just the\nlife that to Levin seemed the ideal of perfection, and that he had\ndreamed of beginning with his wife, his family.\n\nLevin scarcely remembered his mother. His conception of her was for him\na sacred memory, and his future wife was bound to be in his imagination\na repetition of that exquisite, holy ideal of a woman that his mother\nhad been.\n\nHe was so far from conceiving of love for woman apart from marriage that\nhe positively pictured to himself first the family, and only secondarily\nthe woman who would give him a family. His ideas of marriage were,\nconsequently, quite unlike those of the great majority of his\nacquaintances, for whom getting married was one of the numerous facts of\nsocial life. For Levin it was the chief affair of life, on which its\nwhole happiness turned. And now he had to give up that.\n\nWhen he had gone into the little drawing room, where he always had tea,\nand had settled himself in his armchair with a book, and Agafea\nMihalovna had brought him tea, and with her usual, \"Well, I'll stay a\nwhile, sir,\" had taken a chair in the window, he felt that, however\nstrange it might be, he had not parted from his daydreams, and that he\ncould not live without them. Whether with her, or with another, still it\nwould be. He was reading a book, and thinking of what he was reading,\nand stopping to listen to Agafea Mihalovna, who gossiped away without\nflagging, and yet with all that, all sorts of pictures of family life\nand work in the future rose disconnectedly before his imagination. He\nfelt that in the depth of his soul something had been put in its place,\nsettled down, and laid to rest.\n\nHe heard Agafea Mihalovna talking of how Prohor had forgotten his duty\nto God, and with the money Levin had given him to buy a horse, had been\ndrinking without stopping, and had beaten his wife till he'd half killed\nher. He listened, and read his book, and recalled the whole train of\nideas suggested by his reading. It was Tyndall's _Treatise on Heat_. He\nrecalled his own criticisms of Tyndall of his complacent satisfaction in\nthe cleverness of his experiments, and for his lack of philosophic\ninsight. And suddenly there floated into his mind the joyful thought:\n\"In two years' time I shall have two Dutch cows; Pava herself will\nperhaps still be alive, a dozen young daughters of Berkoot and the three\nothers--how lovely!\"\n\nHe took up his book again. \"Very good, electricity and heat are the same\nthing; but is it possible to substitute the one quantity for the other\nin the equation for the solution of any problem? No. Well, then what of\nit? The connection between all the forces of nature is felt\ninstinctively.... It's particulary nice if Pava's daughter should be a\nred-spotted cow, and all the herd will take after her, and the other\nthree, too! Splendid! To go out with my wife and visitors to meet the\nherd.... My wife says, 'Kostya and I looked after that calf like a\nchild.' 'How can it interest you so much?' says a visitor. 'Everything\nthat interests him, interests me.' But who will she be?\" And he\nremembered what had happened at Moscow.... \"Well, there's nothing to be\ndone.... It's not my fault. But now everything shall go on in a new way.\nIt's nonsense to pretend that life won't let one, that the past won't\nlet one. One must struggle to live better, much better.\"... He raised\nhis head, and fell to dreaming. Old Laska, who had not yet fully\ndigested her delight at his return, and had run out into the yard to\nbark, came back wagging her tail, and crept up to him, bringing in the\nscent of fresh air, put her head under his hand, and whined plaintively,\nasking to be stroked.\n\n\"There, who'd have thought it?\" said Agafea Mihalovna. \"The dog now ...\nwhy, she understands that her master's come home, and that he's\nlow-spirited.\"\n\n\"Why low-spirited?\"\n\n\"Do you suppose I don't see it, sir? It's high time I should know the\ngentry. Why, I've grown up from a little thing with them. It's nothing,\nsir, so long as there's health and a clear conscience.\"\n\nLevin looked intently at her, surprised at how well she knew his\nthought.\n\n\"Shall I fetch you another cup?\" said she, and taking his cup she went\nout.\n\nLaska kept poking her head under his hand. He stroked her, and she\npromptly curled up at his feet, laying her head on a hindpaw. And in\ntoken of all now being well and satisfactory, she opened her mouth a\nlittle, smacked her lips, and settling her sticky lips more comfortably\nabout her old teeth, she sank into blissful repose. Levin watched all\nher movements attentively.\n\n\"That's what I'll do,\" he said to himself; \"that's what I'll do!\nNothing's amiss.... All's well.\"\n\n\n\nChapter 28\n\n\nAfter the ball, early next morning, Anna Arkadyevna sent her husband a\ntelegram that she was leaving Moscow the same day.\n\n\"No, I must go, I must go\"; she explained to her sister-in-law the\nchange in her plans in a tone that suggested that she had to remember so\nmany things that there was no enumerating them: \"no, it had really\nbetter be today!\"\n\nStepan Arkadyevitch was not dining at home, but he promised to come and\nsee his sister off at seven o'clock.\n\nKitty, too, did not come, sending a note that she had a headache. Dolly\nand Anna dined alone with the children and the English governess.\nWhether it was that the children were fickle, or that they had acute\nsenses, and felt that Anna was quite different that day from what she\nhad been when they had taken such a fancy to her, that she was not now\ninterested in them,--but they had abruptly dropped their play with their\naunt, and their love for her, and were quite indifferent that she was\ngoing away. Anna was absorbed the whole morning in preparations for her\ndeparture. She wrote notes to her Moscow acquaintances, put down her\naccounts, and packed. Altogether Dolly fancied she was not in a placid\nstate of mind, but in that worried mood, which Dolly knew well with\nherself, and which does not come without cause, and for the most part\ncovers dissatisfaction with self. After dinner, Anna went up to her room\nto dress, and Dolly followed her.\n\n\"How queer you are today!\" Dolly said to her.\n\n\"I? Do you think so? I'm not queer, but I'm nasty. I am like that\nsometimes. I keep feeling as if I could cry. It's very stupid, but it'll\npass off,\" said Anna quickly, and she bent her flushed face over a tiny\nbag in which she was packing a nightcap and some cambric handkerchiefs.\nHer eyes were particularly bright, and were continually swimming with\ntears. \"In the same way I didn't want to leave Petersburg, and now I\ndon't want to go away from here.\"\n\n\"You came here and did a good deed,\" said Dolly, looking intently at\nher.\n\nAnna looked at her with eyes wet with tears.\n\n\"Don't say that, Dolly. I've done nothing, and could do nothing. I often\nwonder why people are all in league to spoil me. What have I done, and\nwhat could I do? In your heart there was found love enough to\nforgive...\"\n\n\"If it had not been for you, God knows what would have happened! How\nhappy you are, Anna!\" said Dolly. \"Everything is clear and good in your\nheart.\"\n\n\"Every heart has its own _skeletons_, as the English say.\"\n\n\"You have no sort of _skeleton_, have you? Everything is so clear in\nyou.\"\n\n\"I have!\" said Anna suddenly, and, unexpectedly after her tears, a sly,\nironical smile curved her lips.\n\n\"Come, he's amusing, anyway, your _skeleton_, and not depressing,\" said\nDolly, smiling.\n\n\"No, he's depressing. Do you know why I'm going today instead of\ntomorrow? It's a confession that weighs on me; I want to make it to\nyou,\" said Anna, letting herself drop definitely into an armchair, and\nlooking straight into Dolly's face.\n\nAnd to her surprise Dolly saw that Anna was blushing up to her ears, up\nto the curly black ringlets on her neck.\n\n\"Yes,\" Anna went on. \"Do you know why Kitty didn't come to dinner? She's\njealous of me. I have spoiled ... I've been the cause of that ball being\na torture to her instead of a pleasure. But truly, truly, it's not my\nfault, or only my fault a little bit,\" she said, daintily drawling the\nwords \"a little bit.\"\n\n\"Oh, how like Stiva you said that!\" said Dolly, laughing.\n\nAnna was hurt.\n\n\"Oh no, oh no! I'm not Stiva,\" she said, knitting her brows. \"That's why\nI'm telling you, just because I could never let myself doubt myself for\nan instant,\" said Anna.\n\nBut at the very moment she was uttering the words, she felt that they\nwere not true. She was not merely doubting herself, she felt emotion at\nthe thought of Vronsky, and was going away sooner than she had meant,\nsimply to avoid meeting him.\n\n\"Yes, Stiva told me you danced the mazurka with him, and that he...\"\n\n\"You can't imagine how absurdly it all came about. I only meant to be\nmatchmaking, and all at once it turned out quite differently. Possibly\nagainst my own will...\"\n\nShe crimsoned and stopped.\n\n\"Oh, they feel it directly?\" said Dolly.\n\n\"But I should be in despair if there were anything serious in it on his\nside,\" Anna interrupted her. \"And I am certain it will all be forgotten,\nand Kitty will leave off hating me.\"\n\n\"All the same, Anna, to tell you the truth, I'm not very anxious for\nthis marriage for Kitty. And it's better it should come to nothing, if\nhe, Vronsky, is capable of falling in love with you in a single day.\"\n\n\"Oh, heavens, that would be too silly!\" said Anna, and again a deep\nflush of pleasure came out on her face, when she heard the idea, that\nabsorbed her, put into words. \"And so here I am going away, having made\nan enemy of Kitty, whom I liked so much! Ah, how sweet she is! But\nyou'll make it right, Dolly? Eh?\"\n\nDolly could scarcely suppress a smile. She loved Anna, but she enjoyed\nseeing that she too had her weaknesses.\n\n\"An enemy? That can't be.\"\n\n\"I did so want you all to care for me, as I do for you, and now I care\nfor you more than ever,\" said Anna, with tears in her eyes. \"Ah, how\nsilly I am today!\"\n\nShe passed her handkerchief over her face and began dressing.\n\nAt the very moment of starting Stepan Arkadyevitch arrived, late, rosy\nand good-humored, smelling of wine and cigars.\n\nAnna's emotionalism infected Dolly, and when she embraced her\nsister-in-law for the last time, she whispered: \"Remember, Anna, what\nyou've done for me--I shall never forget. And remember that I love you,\nand shall always love you as my dearest friend!\"\n\n\"I don't know why,\" said Anna, kissing her and hiding her tears.\n\n\"You understood me, and you understand. Good-bye, my darling!\"\n\n\n\nChapter 29\n\n\n\"Come, it's all over, and thank God!\" was the first thought that came to\nAnna Arkadyevna, when she had said good-bye for the last time to her\nbrother, who had stood blocking up the entrance to the carriage till the\nthird bell rang. She sat down on her lounge beside Annushka, and looked\nabout her in the twilight of the sleeping-carriage. \"Thank God! tomorrow\nI shall see Seryozha and Alexey Alexandrovitch, and my life will go on\nin the old way, all nice and as usual.\"\n\nStill in the same anxious frame of mind, as she had been all that day,\nAnna took pleasure in arranging herself for the journey with great care.\nWith her little deft hands she opened and shut her little red bag, took\nout a cushion, laid it on her knees, and carefully wrapping up her feet,\nsettled herself comfortably. An invalid lady had already lain down to\nsleep. Two other ladies began talking to Anna, and a stout elderly lady\ntucked up her feet, and made observations about the heating of the\ntrain. Anna answered a few words, but not foreseeing any entertainment\nfrom the conversation, she asked Annushka to get a lamp, hooked it onto\nthe arm of her seat, and took from her bag a paper knife and an English\nnovel. At first her reading made no progress. The fuss and bustle were\ndisturbing; then when the train had started, she could not help\nlistening to the noises; then the snow beating on the left window and\nsticking to the pane, and the sight of the muffled guard passing by,\ncovered with snow on one side, and the conversations about the terrible\nsnowstorm raging outside, distracted her attention. Farther on, it was\ncontinually the same again and again: the same shaking and rattling, the\nsame snow on the window, the same rapid transitions from steaming heat\nto cold, and back again to heat, the same passing glimpses of the same\nfigures in the twilight, and the same voices, and Anna began to read and\nto understand what she read. Annushka was already dozing, the red bag on\nher lap, clutched by her broad hands, in gloves, of which one was torn.\nAnna Arkadyevna read and understood, but it was distasteful to her to\nread, that is, to follow the reflection of other people's lives. She had\ntoo great a desire to live herself. If she read that the heroine of the\nnovel was nursing a sick man, she longed to move with noiseless steps\nabout the room of a sick man; if she read of a member of Parliament\nmaking a speech, she longed to be delivering the speech; if she read of\nhow Lady Mary had ridden after the hounds, and had provoked her\nsister-in-law, and had surprised everyone by her boldness, she too\nwished to be doing the same. But there was no chance of doing anything;\nand twisting the smooth paper knife in her little hands, she forced\nherself to read.\n\nThe hero of the novel was already almost reaching his English happiness,\na baronetcy and an estate, and Anna was feeling a desire to go with him\nto the estate, when she suddenly felt that _he_ ought to feel ashamed,\nand that she was ashamed of the same thing. But what had he to be\nashamed of? \"What have I to be ashamed of?\" she asked herself in injured\nsurprise. She laid down the book and sank against the back of the chair,\ntightly gripping the paper cutter in both hands. There was nothing. She\nwent over all her Moscow recollections. All were good, pleasant. She\nremembered the ball, remembered Vronsky and his face of slavish\nadoration, remembered all her conduct with him: there was nothing\nshameful. And for all that, at the same point in her memories, the\nfeeling of shame was intensified, as though some inner voice, just at\nthe point when she thought of Vronsky, were saying to her, \"Warm, very\nwarm, hot.\" \"Well, what is it?\" she said to herself resolutely, shifting\nher seat in the lounge. \"What does it mean? Am I afraid to look it\nstraight in the face? Why, what is it? Can it be that between me and\nthis officer boy there exist, or can exist, any other relations than\nsuch as are common with every acquaintance?\" She laughed contemptuously\nand took up her book again; but now she was definitely unable to follow\nwhat she read. She passed the paper knife over the window pane, then\nlaid its smooth, cool surface to her cheek, and almost laughed aloud at\nthe feeling of delight that all at once without cause came over her. She\nfelt as though her nerves were strings being strained tighter and\ntighter on some sort of screwing peg. She felt her eyes opening wider\nand wider, her fingers and toes twitching nervously, something within\noppressing her breathing, while all shapes and sounds seemed in the\nuncertain half-light to strike her with unaccustomed vividness. Moments\nof doubt were continually coming upon her, when she was uncertain\nwhether the train were going forwards or backwards, or were standing\nstill altogether; whether it were Annushka at her side or a stranger.\n\"What's that on the arm of the chair, a fur cloak or some beast? And\nwhat am I myself? Myself or some other woman?\" She was afraid of giving\nway to this delirium. But something drew her towards it, and she could\nyield to it or resist it at will. She got up to rouse herself, and\nslipped off her plaid and the cape of her warm dress. For a moment she\nregained her self-possession, and realized that the thin peasant who had\ncome in wearing a long overcoat, with buttons missing from it, was the\nstoveheater, that he was looking at the thermometer, that it was the\nwind and snow bursting in after him at the door; but then everything\ngrew blurred again.... That peasant with the long waist seemed to be\ngnawing something on the wall, the old lady began stretching her legs\nthe whole length of the carriage, and filling it with a black cloud;\nthen there was a fearful shrieking and banging, as though someone were\nbeing torn to pieces; then there was a blinding dazzle of red fire\nbefore her eyes and a wall seemed to rise up and hide everything. Anna\nfelt as though she were sinking down. But it was not terrible, but\ndelightful. The voice of a man muffled up and covered with snow shouted\nsomething in her ear. She got up and pulled herself together; she\nrealized that they had reached a station and that this was the guard.\nShe asked Annushka to hand her the cape she had taken off and her shawl,\nput them on and moved towards the door.\n\n\"Do you wish to get out?\" asked Annushka.\n\n\"Yes, I want a little air. It's very hot in here.\" And she opened the\ndoor. The driving snow and the wind rushed to meet her and struggled\nwith her over the door. But she enjoyed the struggle.\n\nShe opened the door and went out. The wind seemed as though lying in\nwait for her; with gleeful whistle it tried to snatch her up and bear\nher off, but she clung to the cold door post, and holding her skirt got\ndown onto the platform and under the shelter of the carriages. The wind\nhad been powerful on the steps, but on the platform, under the lee of\nthe carriages, there was a lull. With enjoyment she drew deep breaths of\nthe frozen, snowy air, and standing near the carriage looked about the\nplatform and the lighted station.\n\n\n\nChapter 30\n\n\nThe raging tempest rushed whistling between the wheels of the carriages,\nabout the scaffolding, and round the corner of the station. The\ncarriages, posts, people, everything that was to be seen was covered\nwith snow on one side, and was getting more and more thickly covered.\nFor a moment there would come a lull in the storm, but then it would\nswoop down again with such onslaughts that it seemed impossible to stand\nagainst it. Meanwhile men ran to and fro, talking merrily together,\ntheir steps crackling on the platform as they continually opened and\nclosed the big doors. The bent shadow of a man glided by at her feet,\nand she heard sounds of a hammer upon iron. \"Hand over that telegram!\"\ncame an angry voice out of the stormy darkness on the other side. \"This\nway! No. 28!\" several different voices shouted again, and muffled\nfigures ran by covered with snow. Two gentlemen with lighted cigarettes\npassed by her. She drew one more deep breath of the fresh air, and had\njust put her hand out of her muff to take hold of the door post and get\nback into the carriage, when another man in a military overcoat, quite\nclose beside her, stepped between her and the flickering light of the\nlamp post. She looked round, and the same instant recognized Vronsky's\nface. Putting his hand to the peak of his cap, he bowed to her and\nasked, Was there anything she wanted? Could he be of any service to her?\nShe gazed rather a long while at him without answering, and, in spite of\nthe shadow in which he was standing, she saw, or fancied she saw, both\nthe expression of his face and his eyes. It was again that expression of\nreverential ecstasy which had so worked upon her the day before. More\nthan once she had told herself during the past few days, and again only\na few moments before, that Vronsky was for her only one of the hundreds\nof young men, forever exactly the same, that are met everywhere, that\nshe would never allow herself to bestow a thought upon him. But now at\nthe first instant of meeting him, she was seized by a feeling of joyful\npride. She had no need to ask why he had come. She knew as certainly as\nif he had told her that he was here to be where she was.\n\n\"I didn't know you were going. What are you coming for?\" she said,\nletting fall the hand with which she had grasped the door post. And\nirrepressible delight and eagerness shone in her face.\n\n\"What am I coming for?\" he repeated, looking straight into her eyes.\n\"You know that I have come to be where you are,\" he said; \"I can't help\nit.\"\n\nAt that moment the wind, as it were, surmounting all obstacles, sent the\nsnow flying from the carriage roofs, and clanked some sheet of iron it\nhad torn off, while the hoarse whistle of the engine roared in front,\nplaintively and gloomily. All the awfulness of the storm seemed to her\nmore splendid now. He had said what her soul longed to hear, though she\nfeared it with her reason. She made no answer, and in her face he saw\nconflict.\n\n\"Forgive me, if you dislike what I said,\" he said humbly.\n\nHe had spoken courteously, deferentially, yet so firmly, so stubbornly,\nthat for a long while she could make no answer.\n\n\"It's wrong, what you say, and I beg you, if you're a good man, to\nforget what you've said, as I forget it,\" she said at last.\n\n\"Not one word, not one gesture of yours shall I, could I, ever\nforget...\"\n\n\"Enough, enough!\" she cried trying assiduously to give a stern\nexpression to her face, into which he was gazing greedily. And clutching\nat the cold door post, she clambered up the steps and got rapidly into\nthe corridor of the carriage. But in the little corridor she paused,\ngoing over in her imagination what had happened. Though she could not\nrecall her own words or his, she realized instinctively that the\nmomentary conversation had brought them fearfully closer; and she was\npanic-stricken and blissful at it. After standing still a few seconds,\nshe went into the carriage and sat down in her place. The overstrained\ncondition which had tormented her before did not only come back, but was\nintensified, and reached such a pitch that she was afraid every minute\nthat something would snap within her from the excessive tension. She did\nnot sleep all night. But in that nervous tension, and in the visions\nthat filled her imagination, there was nothing disagreeable or gloomy:\non the contrary there was something blissful, glowing, and exhilarating.\nTowards morning Anna sank into a doze, sitting in her place, and when\nshe waked it was daylight and the train was near Petersburg. At once\nthoughts of home, of husband and of son, and the details of that day and\nthe following came upon her.\n\nAt Petersburg, as soon as the train stopped and she got out, the first\nperson that attracted her attention was her husband. \"Oh, mercy! why do\nhis ears look like that?\" she thought, looking at his frigid and\nimposing figure, and especially the ears that struck her at the moment\nas propping up the brim of his round hat. Catching sight of her, he came\nto meet her, his lips falling into their habitual sarcastic smile, and\nhis big, tired eyes looking straight at her. An unpleasant sensation\ngripped at her heart when she met his obstinate and weary glance, as\nthough she had expected to see him different. She was especially struck\nby the feeling of dissatisfaction with herself that she experienced on\nmeeting him. That feeling was an intimate, familiar feeling, like a\nconsciousness of hypocrisy, which she experienced in her relations with\nher husband. But hitherto she had not taken note of the feeling, now she\nwas clearly and painfully aware of it.\n\n\"Yes, as you see, your tender spouse, as devoted as the first year after\nmarriage, burned with impatience to see you,\" he said in his deliberate,\nhigh-pitched voice, and in that tone which he almost always took with\nher, a tone of jeering at anyone who should say in earnest what he said.\n\n\"Is Seryozha quite well?\" she asked.\n\n\"And is this all the reward,\" said he, \"for my ardor? He's quite\nwell...\"\n\n\n\nChapter 31\n\n\nVronsky had not even tried to sleep all that night. He sat in his\narmchair, looking straight before him or scanning the people who got in\nand out. If he had indeed on previous occasions struck and impressed\npeople who did not know him by his air of unhesitating composure, he\nseemed now more haughty and self-possessed than ever. He looked at\npeople as if they were things. A nervous young man, a clerk in a law\ncourt, sitting opposite him, hated him for that look. The young man\nasked him for a light, and entered into conversation with him, and even\npushed against him, to make him feel that he was not a thing, but a\nperson. But Vronsky gazed at him exactly as he did at the lamp, and the\nyoung man made a wry face, feeling that he was losing his\nself-possession under the oppression of this refusal to recognize him as\na person.\n\nVronsky saw nothing and no one. He felt himself a king, not because he\nbelieved that he had made an impression on Anna--he did not yet believe\nthat,--but because the impression she had made on him gave him happiness\nand pride.\n\nWhat would come of it all he did not know, he did not even think. He\nfelt that all his forces, hitherto dissipated, wasted, were centered on\none thing, and bent with fearful energy on one blissful goal. And he was\nhappy at it. He knew only that he had told her the truth, that he had\ncome where she was, that all the happiness of his life, the only meaning\nin life for him, now lay in seeing and hearing her. And when he got out\nof the carriage at Bologova to get some seltzer water, and caught sight\nof Anna, involuntarily his first word had told her just what he thought.\nAnd he was glad he had told her it, that she knew it now and was\nthinking of it. He did not sleep all night. When he was back in the\ncarriage, he kept unceasingly going over every position in which he had\nseen her, every word she had uttered, and before his fancy, making his\nheart faint with emotion, floated pictures of a possible future.\n\nWhen he got out of the train at Petersburg, he felt after his sleepless\nnight as keen and fresh as after a cold bath. He paused near his\ncompartment, waiting for her to get out. \"Once more,\" he said to\nhimself, smiling unconsciously, \"once more I shall see her walk, her\nface; she will say something, turn her head, glance, smile, maybe.\" But\nbefore he caught sight of her, he saw her husband, whom the\nstation-master was deferentially escorting through the crowd. \"Ah, yes!\nThe husband.\" Only now for the first time did Vronsky realize clearly\nthe fact that there was a person attached to her, a husband. He knew\nthat she had a husband, but had hardly believed in his existence, and\nonly now fully believed in him, with his head and shoulders, and his\nlegs clad in black trousers; especially when he saw this husband calmly\ntake her arm with a sense of property.\n\nSeeing Alexey Alexandrovitch with his Petersburg face and severely\nself-confident figure, in his round hat, with his rather prominent\nspine, he believed in him, and was aware of a disagreeable sensation,\nsuch as a man might feel tortured by thirst, who, on reaching a spring,\nshould find a dog, a sheep, or a pig, who has drunk of it and muddied\nthe water. Alexey Alexandrovitch's manner of walking, with a swing of\nthe hips and flat feet, particularly annoyed Vronsky. He could recognize\nin no one but himself an indubitable right to love her. But she was\nstill the same, and the sight of her affected him the same way,\nphysically reviving him, stirring him, and filling his soul with\nrapture. He told his German valet, who ran up to him from the second\nclass, to take his things and go on, and he himself went up to her. He\nsaw the first meeting between the husband and wife, and noted with a\nlover's insight the signs of slight reserve with which she spoke to her\nhusband. \"No, she does not love him and cannot love him,\" he decided to\nhimself.\n\nAt the moment when he was approaching Anna Arkadyevna he noticed too\nwith joy that she was conscious of his being near, and looked round, and\nseeing him, turned again to her husband.\n\n\"Have you passed a good night?\" he asked, bowing to her and her husband\ntogether, and leaving it up to Alexey Alexandrovitch to accept the bow\non his own account, and to recognize it or not, as he might see fit.\n\n\"Thank you, very good,\" she answered.\n\nHer face looked weary, and there was not that play of eagerness in it,\npeeping out in her smile and her eyes; but for a single instant, as she\nglanced at him, there was a flash of something in her eyes, and although\nthe flash died away at once, he was happy for that moment. She glanced\nat her husband to find out whether he knew Vronsky. Alexey\nAlexandrovitch looked at Vronsky with displeasure, vaguely recalling who\nthis was. Vronsky's composure and self-confidence here struck, like a\nscythe against a stone, upon the cold self-confidence of Alexey\nAlexandrovitch.\n\n\"Count Vronsky,\" said Anna.\n\n\"Ah! We are acquainted, I believe,\" said Alexey Alexandrovitch\nindifferently, giving his hand.\n\n\"You set off with the mother and you return with the son,\" he said,\narticulating each syllable, as though each were a separate favor he was\nbestowing.\n\n\"You're back from leave, I suppose?\" he said, and without waiting for a\nreply, he turned to his wife in his jesting tone: \"Well, were a great\nmany tears shed at Moscow at parting?\"\n\nBy addressing his wife like this he gave Vronsky to understand that he\nwished to be left alone, and, turning slightly towards him, he touched\nhis hat; but Vronsky turned to Anna Arkadyevna.\n\n\"I hope I may have the honor of calling on you,\" he said.\n\nAlexey Alexandrovitch glanced with his weary eyes at Vronsky.\n\n\"Delighted,\" he said coldly. \"On Mondays we're at home. Most fortunate,\"\nhe said to his wife, dismissing Vronsky altogether, \"that I should just\nhave half an hour to meet you, so that I can prove my devotion,\" he went\non in the same jesting tone.\n\n\"You lay too much stress on your devotion for me to value it much,\" she\nresponded in the same jesting tone, involuntarily listening to the sound\nof Vronsky's steps behind them. \"But what has it to do with me?\" she\nsaid to herself, and she began asking her husband how Seryozha had got\non without her.\n\n\"Oh, capitally! Mariette says he has been very good, And ... I must\ndisappoint you ... but he has not missed you as your husband has. But\nonce more _merci,_ my dear, for giving me a day. Our dear _Samovar_ will\nbe delighted.\" (He used to call the Countess Lidia Ivanovna, well known\nin society, a samovar, because she was always bubbling over with\nexcitement.) \"She has been continually asking after you. And, do you\nknow, if I may venture to advise you, you should go and see her today.\nYou know how she takes everything to heart. Just now, with all her own\ncares, she's anxious about the Oblonskys being brought together.\"\n\nThe Countess Lidia Ivanovna was a friend of her husband's, and the\ncenter of that one of the coteries of the Petersburg world with which\nAnna was, through her husband, in the closest relations.\n\n\"But you know I wrote to her?\"\n\n\"Still she'll want to hear details. Go and see her, if you're not too\ntired, my dear. Well, Kondraty will take you in the carriage, while I go\nto my committee. I shall not be alone at dinner again,\" Alexey\nAlexandrovitch went on, no longer in a sarcastic tone. \"You wouldn't\nbelieve how I've missed...\" And with a long pressure of her hand and a\nmeaning smile, he put her in her carriage.\n\n\n\nChapter 32\n\n\nThe first person to meet Anna at home was her son. He dashed down the\nstairs to her, in spite of the governess's call, and with desperate joy\nshrieked: \"Mother! mother!\" Running up to her, he hung on her neck.\n\n\"I told you it was mother!\" he shouted to the governess. \"I knew!\"\n\nAnd her son, like her husband, aroused in Anna a feeling akin to\ndisappointment. She had imagined him better than he was in reality. She\nhad to let herself drop down to the reality to enjoy him as he really\nwas. But even as he was, he was charming, with his fair curls, his blue\neyes, and his plump, graceful little legs in tightly pulled-up\nstockings. Anna experienced almost physical pleasure in the sensation of\nhis nearness, and his caresses, and moral soothing, when she met his\nsimple, confiding, and loving glance, and heard his naive questions.\nAnna took out the presents Dolly's children had sent him, and told her\nson what sort of little girl was Tanya at Moscow, and how Tanya could\nread, and even taught the other children.\n\n\"Why, am I not so nice as she?\" asked Seryozha.\n\n\"To me you're nicer than anyone in the world.\"\n\n\"I know that,\" said Seryozha, smiling.\n\nAnna had not had time to drink her coffee when the Countess Lidia\nIvanovna was announced. The Countess Lidia Ivanovna was a tall, stout\nwoman, with an unhealthily sallow face and splendid, pensive black eyes.\nAnna liked her, but today she seemed to be seeing her for the first time\nwith all her defects.\n\n\"Well, my dear, so you took the olive branch?\" inquired Countess Lidia\nIvanovna, as soon as she came into the room.\n\n\"Yes, it's all over, but it was all much less serious than we had\nsupposed,\" answered Anna. \"My _belle-soeur_ is in general too hasty.\"\n\nBut Countess Lidia Ivanovna, though she was interested in everything\nthat did not concern her, had a habit of never listening to what\ninterested her; she interrupted Anna:\n\n\"Yes, there's plenty of sorrow and evil in the world. I am so worried\ntoday.\"\n\n\"Oh, why?\" asked Anna, trying to suppress a smile.\n\n\"I'm beginning to be weary of fruitlessly championing the truth, and\nsometimes I'm quite unhinged by it. The Society of the Little Sisters\"\n(this was a religiously-patriotic, philanthropic institution) \"was going\nsplendidly, but with these gentlemen it's impossible to do anything,\"\nadded Countess Lidia Ivanovna in a tone of ironical submission to\ndestiny. \"They pounce on the idea, and distort it, and then work it out\nso pettily and unworthily. Two or three people, your husband among them,\nunderstand all the importance of the thing, but the others simply drag\nit down. Yesterday Pravdin wrote to me...\"\n\nPravdin was a well-known Panslavist abroad, and Countess Lidia Ivanovna\ndescribed the purport of his letter.\n\nThen the countess told her of more disagreements and intrigues against\nthe work of the unification of the churches, and departed in haste, as\nshe had that day to be at the meeting of some society and also at the\nSlavonic committee.\n\n\"It was all the same before, of course; but why was it I didn't notice\nit before?\" Anna asked herself. \"Or has she been very much irritated\ntoday? It's really ludicrous; her object is doing good; she a Christian,\nyet she's always angry; and she always has enemies, and always enemies\nin the name of Christianity and doing good.\"\n\nAfter Countess Lidia Ivanovna another friend came, the wife of a chief\nsecretary, who told her all the news of the town. At three o'clock she\ntoo went away, promising to come to dinner. Alexey Alexandrovitch was at\nthe ministry. Anna, left alone, spent the time till dinner in assisting\nat her son's dinner (he dined apart from his parents) and in putting her\nthings in order, and in reading and answering the notes and letters\nwhich had accumulated on her table.\n\nThe feeling of causeless shame, which she had felt on the journey, and\nher excitement, too, had completely vanished. In the habitual conditions\nof her life she felt again resolute and irreproachable.\n\nShe recalled with wonder her state of mind on the previous day. \"What\nwas it? Nothing. Vronsky said something silly, which it was easy to put\na stop to, and I answered as I ought to have done. To speak of it to my\nhusband would be unnecessary and out of the question. To speak of it\nwould be to attach importance to what has no importance.\" She remembered\nhow she had told her husband of what was almost a declaration made her\nat Petersburg by a young man, one of her husband's subordinates, and how\nAlexey Alexandrovitch had answered that every woman living in the world\nwas exposed to such incidents, but that he had the fullest confidence in\nher tact, and could never lower her and himself by jealousy. \"So then\nthere's no reason to speak of it? And indeed, thank God, there's nothing\nto speak of,\" she told herself.\n\n\n\nChapter 33\n\n\nAlexey Alexandrovitch came back from the meeting of the ministers at\nfour o'clock, but as often happened, he had not time to come in to her.\nHe went into his study to see the people waiting for him with petitions,\nand to sign some papers brought him by his chief secretary. At dinner\ntime (there were always a few people dining with the Karenins) there\narrived an old lady, a cousin of Alexey Alexandrovitch, the chief\nsecretary of the department and his wife, and a young man who had been\nrecommended to Alexey Alexandrovitch for the service. Anna went into the\ndrawing room to receive these guests. Precisely at five o'clock, before\nthe bronze Peter the First clock had struck the fifth stroke, Alexey\nAlexandrovitch came in, wearing a white tie and evening coat with two\nstars, as he had to go out directly after dinner. Every minute of Alexey\nAlexandrovitch's life was portioned out and occupied. And to make time\nto get through all that lay before him every day, he adhered to the\nstrictest punctuality. \"Unhasting and unresting,\" was his motto. He came\ninto the dining hall, greeted everyone, and hurriedly sat down, smiling\nto his wife.\n\n\"Yes, my solitude is over. You wouldn't believe how uncomfortable\" (he\nlaid stress on the word _uncomfortable_) \"it is to dine alone.\"\n\nAt dinner he talked a little to his wife about Moscow matters, and, with\na sarcastic smile, asked her after Stepan Arkadyevitch; but the\nconversation was for the most part general, dealing with Petersburg\nofficial and public news. After dinner he spent half an hour with his\nguests, and again, with a smile, pressed his wife's hand, withdrew, and\ndrove off to the council. Anna did not go out that evening either to the\nPrincess Betsy Tverskaya, who, hearing of her return, had invited her,\nnor to the theater, where she had a box for that evening. She did not go\nout principally because the dress she had reckoned upon was not ready.\nAltogether, Anna, on turning, after the departure of her guests, to the\nconsideration of her attire, was very much annoyed. She was generally a\nmistress of the art of dressing well without great expense, and before\nleaving Moscow she had given her dressmaker three dresses to transform.\nThe dresses had to be altered so that they could not be recognized, and\nthey ought to have been ready three days before. It appeared that two\ndresses had not been done at all, while the other one had not been\naltered as Anna had intended. The dressmaker came to explain, declaring\nthat it would be better as she had done it, and Anna was so furious that\nshe felt ashamed when she thought of it afterwards. To regain her\nserenity completely she went into the nursery, and spent the whole\nevening with her son, put him to bed herself, signed him with the cross,\nand tucked him up. She was glad she had not gone out anywhere, and had\nspent the evening so well. She felt so light-hearted and serene, she saw\nso clearly that all that had seemed to her so important on her railway\njourney was only one of the common trivial incidents of fashionable\nlife, and that she had no reason to feel ashamed before anyone else or\nbefore herself. Anna sat down at the hearth with an English novel and\nwaited for her husband. Exactly at half-past nine she heard his ring,\nand he came into the room.\n\n\"Here you are at last!\" she observed, holding out her hand to him.\n\nHe kissed her hand and sat down beside her.\n\n\"Altogether then, I see your visit was a success,\" he said to her.\n\n\"Oh, yes,\" she said, and she began telling him about everything from the\nbeginning: her journey with Countess Vronskaya, her arrival, the\naccident at the station. Then she described the pity she had felt, first\nfor her brother, and afterwards for Dolly.\n\n\"I imagine one cannot exonerate such a man from blame, though he is your\nbrother,\" said Alexey Alexandrovitch severely.\n\nAnna smiled. She knew that he said that simply to show that family\nconsiderations could not prevent him from expressing his genuine\nopinion. She knew that characteristic in her husband, and liked it.\n\n\"I am glad it has all ended so satisfactorily, and that you are back\nagain,\" he went on. \"Come, what do they say about the new act I have got\npassed in the council?\"\n\nAnna had heard nothing of this act, and she felt conscience-stricken at\nhaving been able so readily to forget what was to him of such\nimportance.\n\n\"Here, on the other hand, it has made a great sensation,\" he said, with\na complacent smile.\n\nShe saw that Alexey Alexandrovitch wanted to tell her something pleasant\nto him about it, and she brought him by questions to telling it. With\nthe same complacent smile he told her of the ovations he had received in\nconsequence of the act he had passed.\n\n\"I was very, very glad. It shows that at last a reasonable and steady\nview of the matter is becoming prevalent among us.\"\n\nHaving drunk his second cup of tea with cream, and bread, Alexey\nAlexandrovitch got up, and was going towards his study.\n\n\"And you've not been anywhere this evening? You've been dull, I expect?\"\nhe said.\n\n\"Oh, no!\" she answered, getting up after him and accompanying him across\nthe room to his study. \"What are you reading now?\" she asked.\n\n\"Just now I'm reading Duc de Lille, _Poesie des Enfers,_\" he answered.\n\"A very remarkable book.\"\n\nAnna smiled, as people smile at the weaknesses of those they love, and,\nputting her hand under his, she escorted him to the door of the study.\nShe knew his habit, that had grown into a necessity, of reading in the\nevening. She knew, too, that in spite of his official duties, which\nswallowed up almost the whole of his time, he considered it his duty to\nkeep up with everything of note that appeared in the intellectual world.\nShe knew, too, that he was really interested in books dealing with\npolitics, philosophy, and theology, that art was utterly foreign to his\nnature; but, in spite of this, or rather, in consequence of it, Alexey\nAlexandrovitch never passed over anything in the world of art, but made\nit his duty to read everything. She knew that in politics, in\nphilosophy, in theology, Alexey Alexandrovitch often had doubts, and\nmade investigations; but on questions of art and poetry, and, above all,\nof music, of which he was totally devoid of understanding, he had the\nmost distinct and decided opinions. He was fond of talking about\nShakespeare, Raphael, Beethoven, of the significance of new schools of\npoetry and music, all of which were classified by him with very\nconspicuous consistency.\n\n\"Well, God be with you,\" she said at the door of the study, where a\nshaded candle and a decanter of water were already put by his armchair.\n\"And I'll write to Moscow.\"\n\nHe pressed her hand, and again kissed it.\n\n\"All the same he's a good man; truthful, good-hearted, and remarkable in\nhis own line,\" Anna said to herself going back to her room, as though\nshe were defending him to someone who had attacked him and said that one\ncould not love him. \"But why is it his ears stick out so strangely? Or\nhas he had his hair cut?\"\n\nPrecisely at twelve o'clock, when Anna was still sitting at her writing\ntable, finishing a letter to Dolly, she heard the sound of measured\nsteps in slippers, and Alexey Alexandrovitch, freshly washed and combed,\nwith a book under his arm, came in to her.\n\n\"It's time, it's time,\" said he, with a meaning smile, and he went into\ntheir bedroom.\n\n\"And what right had he to look at him like that?\" thought Anna,\nrecalling Vronsky's glance at Alexey Alexandrovitch.\n\nUndressing, she went into the bedroom; but her face had none of the\neagerness which, during her stay in Moscow, had fairly flashed from her\neyes and her smile; on the contrary, now the fire seemed quenched in\nher, hidden somewhere far away.\n\n\n\nChapter 34\n\n\nWhen Vronsky went to Moscow from Petersburg, he had left his large set\nof rooms in Morskaia to his friend and favorite comrade Petritsky.\n\nPetritsky was a young lieutenant, not particularly well-connected, and\nnot merely not wealthy, but always hopelessly in debt. Towards evening\nhe was always drunk, and he had often been locked up after all sorts of\nludicrous and disgraceful scandals, but he was a favorite both of his\ncomrades and his superior officers. On arriving at twelve o'clock from\nthe station at his flat, Vronsky saw, at the outer door, a hired\ncarriage familiar to him. While still outside his own door, as he rang,\nhe heard masculine laughter, the lisp of a feminine voice, and\nPetritsky's voice. \"If that's one of the villains, don't let him in!\"\nVronsky told the servant not to announce him, and slipped quietly into\nthe first room. Baroness Shilton, a friend of Petritsky's, with a rosy\nlittle face and flaxen hair, resplendent in a lilac satin gown, and\nfilling the whole room, like a canary, with her Parisian chatter, sat at\nthe round table making coffee. Petritsky, in his overcoat, and the\ncavalry captain Kamerovsky, in full uniform, probably just come from\nduty, were sitting each side of her.\n\n\"Bravo! Vronsky!\" shouted Petritsky, jumping up, scraping his chair.\n\"Our host himself! Baroness, some coffee for him out of the new coffee\npot. Why, we didn't expect you! Hope you're satisfied with the ornament\nof your study,\" he said, indicating the baroness. \"You know each other,\nof course?\"\n\n\"I should think so,\" said Vronsky, with a bright smile, pressing the\nbaroness's little hand. \"What next! I'm an old friend.\"\n\n\"You're home after a journey,\" said the baroness, \"so I'm flying. Oh,\nI'll be off this minute, if I'm in the way.\"\n\n\"You're home, wherever you are, baroness,\" said Vronsky. \"How do you do,\nKamerovsky?\" he added, coldly shaking hands with Kamerovsky.\n\n\"There, you never know how to say such pretty things,\" said the\nbaroness, turning to Petritsky.\n\n\"No; what's that for? After dinner I say things quite as good.\"\n\n\"After dinner there's no credit in them? Well, then, I'll make you some\ncoffee, so go and wash and get ready,\" said the baroness, sitting down\nagain, and anxiously turning the screw in the new coffee pot. \"Pierre,\ngive me the coffee,\" she said, addressing Petritsky, whom she called\nPierre as a contraction of his surname, making no secret of her\nrelations with him. \"I'll put it in.\"\n\n\"You'll spoil it!\"\n\n\"No, I won't spoil it! Well, and your wife?\" said the baroness suddenly,\ninterrupting Vronsky's conversation with his comrade. \"We've been\nmarrying you here. Have you brought your wife?\"\n\n\"No, baroness. I was born a Bohemian, and a Bohemian I shall die.\"\n\n\"So much the better, so much the better. Shake hands on it.\"\n\nAnd the baroness, detaining Vronsky, began telling him, with many jokes,\nabout her last new plans of life, asking his advice.\n\n\"He persists in refusing to give me a divorce! Well, what am I to do?\"\n(_He_ was her husband.) \"Now I want to begin a suit against him. What do\nyou advise? Kamerovsky, look after the coffee; it's boiling over. You\nsee, I'm engrossed with business! I want a lawsuit, because I must have\nmy property. Do you understand the folly of it, that on the pretext of\nmy being unfaithful to him,\" she said contemptuously, \"he wants to get\nthe benefit of my fortune.\"\n\nVronsky heard with pleasure this light-hearted prattle of a pretty\nwoman, agreed with her, gave her half-joking counsel, and altogether\ndropped at once into the tone habitual to him in talking to such women.\nIn his Petersburg world all people were divided into utterly opposed\nclasses. One, the lower class, vulgar, stupid, and, above all,\nridiculous people, who believe that one husband ought to live with the\none wife whom he has lawfully married; that a girl should be innocent, a\nwoman modest, and a man manly, self-controlled, and strong; that one\nought to bring up one's children, earn one's bread, and pay one's debts;\nand various similar absurdities. This was the class of old-fashioned and\nridiculous people. But there was another class of people, the real\npeople. To this class they all belonged, and in it the great thing was\nto be elegant, generous, plucky, gay, to abandon oneself without a blush\nto every passion, and to laugh at everything else.\n\nFor the first moment only, Vronsky was startled after the impression of\na quite different world that he had brought with him from Moscow. But\nimmediately as though slipping his feet into old slippers, he dropped\nback into the light-hearted, pleasant world he had always lived in.\n\nThe coffee was never really made, but spluttered over every one, and\nboiled away, doing just what was required of it--that is, providing much\ncause for much noise and laughter, and spoiling a costly rug and the\nbaroness's gown.\n\n\"Well now, good-bye, or you'll never get washed, and I shall have on my\nconscience the worst sin a gentleman can commit. So you would advise a\nknife to his throat?\"\n\n\"To be sure, and manage that your hand may not be far from his lips.\nHe'll kiss your hand, and all will end satisfactorily,\" answered\nVronsky.\n\n\"So at the Francais!\" and, with a rustle of her skirts, she vanished.\n\nKamerovsky got up too, and Vronsky, not waiting for him to go, shook\nhands and went off to his dressing room.\n\nWhile he was washing, Petritsky described to him in brief outlines his\nposition, as far as it had changed since Vronsky had left Petersburg. No\nmoney at all. His father said he wouldn't give him any and pay his\ndebts. His tailor was trying to get him locked up, and another fellow,\ntoo, was threatening to get him locked up. The colonel of the regiment\nhad announced that if these scandals did not cease he would have to\nleave. As for the baroness, he was sick to death of her, especially\nsince she'd taken to offering continually to lend him money. But he had\nfound a girl--he'd show her to Vronsky--a marvel, exquisite, in the\nstrict Oriental style, \"genre of the slave Rebecca, don't you know.\"\nHe'd had a row, too, with Berkoshov, and was going to send seconds to\nhim, but of course it would come to nothing. Altogether everything was\nsupremely amusing and jolly. And, not letting his comrade enter into\nfurther details of his position, Petritsky proceeded to tell him all the\ninteresting news. As he listened to Petritsky's familiar stories in the\nfamiliar setting of the rooms he had spent the last three years in,\nVronsky felt a delightful sense of coming back to the careless\nPetersburg life that he was used to.\n\n\"Impossible!\" he cried, letting down the pedal of the washing basin in\nwhich he had been sousing his healthy red neck. \"Impossible!\" he cried,\nat the news that Laura had flung over Fertinghof and had made up to\nMileev. \"And is he as stupid and pleased as ever? Well, and how's\nBuzulukov?\"\n\n\"Oh, there is a tale about Buzulukov--simply lovely!\" cried Petritsky.\n\"You know his weakness for balls, and he never misses a single court\nball. He went to a big ball in a new helmet. Have you seen the new\nhelmets? Very nice, lighter. Well, so he's standing.... No, I say, do\nlisten.\"\n\n\"I am listening,\" answered Vronsky, rubbing himself with a rough towel.\n\n\"Up comes the Grand Duchess with some ambassador or other, and, as\nill-luck would have it, she begins talking to him about the new helmets.\nThe Grand Duchess positively wanted to show the new helmet to the\nambassador. They see our friend standing there.\" (Petritsky mimicked how\nhe was standing with the helmet.) \"The Grand Duchess asked him to give\nher the helmet; he doesn't give it to her. What do you think of that?\nWell, every one's winking at him, nodding, frowning--give it to her, do!\nHe doesn't give it to her. He's mute as a fish. Only picture it!...\nWell, the ... what's his name, whatever he was ... tries to take the\nhelmet from him ... he won't give it up!... He pulls it from him, and\nhands it to the Grand Duchess. 'Here, your Highness,' says he, 'is the\nnew helmet.' She turned the helmet the other side up, And--just picture\nit!--plop went a pear and sweetmeats out of it, two pounds of\nsweetmeats!... He'd been storing them up, the darling!\"\n\nVronsky burst into roars of laughter. And long afterwards, when he was\ntalking of other things, he broke out into his healthy laugh, showing\nhis strong, close rows of teeth, when he thought of the helmet.\n\nHaving heard all the news, Vronsky, with the assistance of his valet,\ngot into his uniform, and went off to report himself. He intended, when\nhe had done that, to drive to his brother's and to Betsy's and to pay\nseveral visits with a view to beginning to go into that society where he\nmight meet Madame Karenina. As he always did in Petersburg, he left home\nnot meaning to return till late at night.\n\n\n\n\nPART TWO\n\n\n\nChapter 1\n\n\nAt the end of the winter, in the Shtcherbatskys' house, a consultation\nwas being held, which was to pronounce on the state of Kitty's health\nand the measures to be taken to restore her failing strength. She had\nbeen ill, and as spring came on she grew worse. The family doctor gave\nher cod liver oil, then iron, then nitrate of silver, but as the first\nand the second and the third were alike in doing no good, and as his\nadvice when spring came was to go abroad, a celebrated physician was\ncalled in. The celebrated physician, a very handsome man, still\nyoungish, asked to examine the patient. He maintained, with peculiar\nsatisfaction, it seemed, that maiden modesty is a mere relic of\nbarbarism, and that nothing could be more natural than for a man still\nyoungish to handle a young girl naked. He thought it natural because he\ndid it every day, and felt and thought, as it seemed to him, no harm as\nhe did it and consequently he considered modesty in the girl not merely\nas a relic of barbarism, but also as an insult to himself.\n\nThere was nothing for it but to submit, since, although all the doctors\nhad studied in the same school, had read the same books, and learned the\nsame science, and though some people said this celebrated doctor was a\nbad doctor, in the princess's household and circle it was for some\nreason accepted that this celebrated doctor alone had some special\nknowledge, and that he alone could save Kitty. After a careful\nexamination and sounding of the bewildered patient, dazed with shame,\nthe celebrated doctor, having scrupulously washed his hands, was\nstanding in the drawing room talking to the prince. The prince frowned\nand coughed, listening to the doctor. As a man who had seen something of\nlife, and neither a fool nor an invalid, he had no faith in medicine,\nand in his heart was furious at the whole farce, specially as he was\nperhaps the only one who fully comprehended the cause of Kitty's\nillness. \"Conceited blockhead!\" he thought, as he listened to the\ncelebrated doctor's chatter about his daughter's symptoms. The doctor\nwas meantime with difficulty restraining the expression of his contempt\nfor this old gentleman, and with difficulty condescending to the level\nof his intelligence. He perceived that it was no good talking to the old\nman, and that the principal person in the house was the mother. Before\nher he decided to scatter his pearls. At that instant the princess came\ninto the drawing room with the family doctor. The prince withdrew,\ntrying not to show how ridiculous he thought the whole performance. The\nprincess was distracted, and did not know what to do. She felt she had\nsinned against Kitty.\n\n\"Well, doctor, decide our fate,\" said the princess. \"Tell me\neverything.\"\n\n\"Is there hope?\" she meant to say, but her lips quivered, and she could\nnot utter the question. \"Well, doctor?\"\n\n\"Immediately, princess. I will talk it over with my colleague, and then\nI will have the honor of laying my opinion before you.\"\n\n\"So we had better leave you?\"\n\n\"As you please.\"\n\nThe princess went out with a sigh.\n\nWhen the doctors were left alone, the family doctor began timidly\nexplaining his opinion, that there was a commencement of tuberculous\ntrouble, but ... and so on. The celebrated doctor listened to him, and\nin the middle of his sentence looked at his big gold watch.\n\n\"Yes,\" said he. \"But...\"\n\nThe family doctor respectfully ceased in the middle of his observations.\n\n\"The commencement of the tuberculous process we are not, as you are\naware, able to define; till there are cavities, there is nothing\ndefinite. But we may suspect it. And there are indications;\nmalnutrition, nervous excitability, and so on. The question stands thus:\nin presence of indications of tuberculous process, what is to be done to\nmaintain nutrition?\"\n\n\"But, you know, there are always moral, spiritual causes at the back in\nthese cases,\" the family doctor permitted himself to interpolate with a\nsubtle smile.\n\n\"Yes, that's an understood thing,\" responded the celebrated physician,\nagain glancing at his watch. \"Beg pardon, is the Yausky bridge done yet,\nor shall I have to drive around?\" he asked. \"Ah! it is. Oh, well, then I\ncan do it in twenty minutes. So we were saying the problem may be put\nthus: to maintain nutrition and to give tone to the nerves. The one is\nin close connection with the other, one must attack both sides at once.\"\n\n\"And how about a tour abroad?\" asked the family doctor.\n\n\"I've no liking for foreign tours. And take note: if there is an early\nstage of tuberculous process, of which we cannot be certain, a foreign\ntour will be of no use. What is wanted is means of improving nutrition,\nand not for lowering it.\" And the celebrated doctor expounded his plan\nof treatment with Soden waters, a remedy obviously prescribed primarily\non the ground that they could do no harm.\n\nThe family doctor listened attentively and respectfully.\n\n\"But in favor of foreign travel I would urge the change of habits, the\nremoval from conditions calling up reminiscences. And then the mother\nwishes it,\" he added.\n\n\"Ah! Well, in that case, to be sure, let them go. Only, those German\nquacks are mischievous.... They ought to be persuaded.... Well, let them\ngo then.\"\n\nHe glanced once more at his watch.\n\n\"Oh! time's up already,\" And he went to the door. The celebrated doctor\nannounced to the princess (a feeling of what was due from him dictated\nhis doing so) that he ought to see the patient once more.\n\n\"What! another examination!\" cried the mother, with horror.\n\n\"Oh, no, only a few details, princess.\"\n\n\"Come this way.\"\n\nAnd the mother, accompanied by the doctor, went into the drawing room to\nKitty. Wasted and flushed, with a peculiar glitter in her eyes, left\nthere by the agony of shame she had been put through, Kitty stood in the\nmiddle of the room. When the doctor came in she flushed crimson, and her\neyes filled with tears. All her illness and treatment struck her as a\nthing so stupid, ludicrous even! Doctoring her seemed to her as absurd\nas putting together the pieces of a broken vase. Her heart was broken.\nWhy would they try to cure her with pills and powders? But she could not\ngrieve her mother, especially as her mother considered herself to blame.\n\n\"May I trouble you to sit down, princess?\" the celebrated doctor said to\nher.\n\nHe sat down with a smile, facing her, felt her pulse, and again began\nasking her tiresome questions. She answered him, and all at once got up,\nfurious.\n\n\"Excuse me, doctor, but there is really no object in this. This is the\nthird time you've asked me the same thing.\"\n\nThe celebrated doctor did not take offense.\n\n\"Nervous irritability,\" he said to the princess, when Kitty had left the\nroom. \"However, I had finished...\"\n\nAnd the doctor began scientifically explaining to the princess, as an\nexceptionally intelligent woman, the condition of the young princess,\nand concluded by insisting on the drinking of the waters, which were\ncertainly harmless. At the question: Should they go abroad? the doctor\nplunged into deep meditation, as though resolving a weighty problem.\nFinally his decision was pronounced: they were to go abroad, but to put\nno faith in foreign quacks, and to apply to him in any need.\n\nIt seemed as though some piece of good fortune had come to pass after\nthe doctor had gone. The mother was much more cheerful when she went\nback to her daughter, and Kitty pretended to be more cheerful. She had\noften, almost always, to be pretending now.\n\n\"Really, I'm quite well, mamma. But if you want to go abroad, let's go!\"\nshe said, and trying to appear interested in the proposed tour, she\nbegan talking of the preparations for the journey.\n\n\n\nChapter 2\n\n\nSoon after the doctor, Dolly had arrived. She knew that there was to be\na consultation that day, and though she was only just up after her\nconfinement (she had another baby, a little girl, born at the end of the\nwinter), though she had trouble and anxiety enough of her own, she had\nleft her tiny baby and a sick child, to come and hear Kitty's fate,\nwhich was to be decided that day.\n\n\"Well, well?\" she said, coming into the drawing room, without taking off\nher hat. \"You're all in good spirits. Good news, then?\"\n\nThey tried to tell her what the doctor had said, but it appeared that\nthough the doctor had talked distinctly enough and at great length, it\nwas utterly impossible to report what he had said. The only point of\ninterest was that it was settled they should go abroad.\n\nDolly could not help sighing. Her dearest friend, her sister, was going\naway. And her life was not a cheerful one. Her relations with Stepan\nArkadyevitch after their reconciliation had become humiliating. The\nunion Anna had cemented turned out to be of no solid character, and\nfamily harmony was breaking down again at the same point. There had been\nnothing definite, but Stepan Arkadyevitch was hardly ever at home;\nmoney, too, was hardly ever forthcoming, and Dolly was continually\ntortured by suspicions of infidelity, which she tried to dismiss,\ndreading the agonies of jealousy she had been through already. The first\nonslaught of jealousy, once lived through, could never come back again,\nand even the discovery of infidelities could never now affect her as it\nhad the first time. Such a discovery now would only mean breaking up\nfamily habits, and she let herself be deceived, despising him and still\nmore herself, for the weakness. Besides this, the care of her large\nfamily was a constant worry to her: first, the nursing of her young baby\ndid not go well, then the nurse had gone away, now one of the children\nhad fallen ill.\n\n\"Well, how are all of you?\" asked her mother.\n\n\"Ah, mamma, we have plenty of troubles of our own. Lili is ill, and I'm\nafraid it's scarlatina. I have come here now to hear about Kitty, and\nthen I shall shut myself up entirely, if--God forbid--it should be\nscarlatina.\"\n\nThe old prince too had come in from his study after the doctor's\ndeparture, and after presenting his cheek to Dolly, and saying a few\nwords to her, he turned to his wife:\n\n\"How have you settled it? you're going? Well, and what do you mean to do\nwith me?\"\n\n\"I suppose you had better stay here, Alexander,\" said his wife.\n\n\"That's as you like.\"\n\n\"Mamma, why shouldn't father come with us?\" said Kitty. \"It would be\nnicer for him and for us too.\"\n\nThe old prince got up and stroked Kitty's hair. She lifted her head and\nlooked at him with a forced smile. It always seemed to her that he\nunderstood her better than anyone in the family, though he did not say\nmuch about her. Being the youngest, she was her father's favorite, and\nshe fancied that his love gave him insight. When now her glance met his\nblue kindly eyes looking intently at her, it seemed to her that he saw\nright through her, and understood all that was not good that was passing\nwithin her. Reddening, she stretched out towards him expecting a kiss,\nbut he only patted her hair and said:\n\n\"These stupid chignons! There's no getting at the real daughter. One\nsimply strokes the bristles of dead women. Well, Dolinka,\" he turned to\nhis elder daughter, \"what's your young buck about, hey?\"\n\n\"Nothing, father,\" answered Dolly, understanding that her husband was\nmeant. \"He's always out; I scarcely ever see him,\" she could not resist\nadding with a sarcastic smile.\n\n\"Why, hasn't he gone into the country yet--to see about selling that\nforest?\"\n\n\"No, he's still getting ready for the journey.\"\n\n\"Oh, that's it!\" said the prince. \"And so am I to be getting ready for a\njourney too? At your service,\" he said to his wife, sitting down. \"And I\ntell you what, Katia,\" he went on to his younger daughter, \"you must\nwake up one fine day and say to yourself: Why, I'm quite well, and\nmerry, and going out again with father for an early morning walk in the\nfrost. Hey?\"\n\nWhat her father said seemed simple enough, yet at these words Kitty\nbecame confused and overcome like a detected criminal. \"Yes, he sees it\nall, he understands it all, and in these words he's telling me that\nthough I'm ashamed, I must get over my shame.\" She could not pluck up\nspirit to make any answer. She tried to begin, and all at once burst\ninto tears, and rushed out of the room.\n\n\"See what comes of your jokes!\" the princess pounced down on her\nhusband. \"You're always...\" she began a string of reproaches.\n\nThe prince listened to the princess's scolding rather a long while\nwithout speaking, but his face was more and more frowning.\n\n\"She's so much to be pitied, poor child, so much to be pitied, and you\ndon't feel how it hurts her to hear the slightest reference to the cause\nof it. Ah! to be so mistaken in people!\" said the princess, and by the\nchange in her tone both Dolly and the prince knew she was speaking of\nVronsky. \"I don't know why there aren't laws against such base,\ndishonorable people.\"\n\n\"Ah, I can't bear to hear you!\" said the prince gloomily, getting up\nfrom his low chair, and seeming anxious to get away, yet stopping in the\ndoorway. \"There are laws, madam, and since you've challenged me to it,\nI'll tell you who's to blame for it all: you and you, you and nobody\nelse. Laws against such young gallants there have always been, and there\nstill are! Yes, if there has been nothing that ought not to have been,\nold as I am, I'd have called him out to the barrier, the young dandy.\nYes, and now you physic her and call in these quacks.\"\n\nThe prince apparently had plenty more to say, but as soon as the\nprincess heard his tone she subsided at once, and became penitent, as\nshe always did on serious occasions.\n\n\"Alexander, Alexander,\" she whispered, moving to him and beginning to\nweep.\n\nAs soon as she began to cry the prince too calmed down. He went up to\nher.\n\n\"There, that's enough, that's enough! You're wretched too, I know. It\ncan't be helped. There's no great harm done. God is merciful ...\nthanks...\" he said, not knowing what he was saying, as he responded to\nthe tearful kiss of the princess that he felt on his hand. And the\nprince went out of the room.\n\nBefore this, as soon as Kitty went out of the room in tears, Dolly, with\nher motherly, family instincts, had promptly perceived that here a\nwoman's work lay before her, and she prepared to do it. She took off her\nhat, and, morally speaking, tucked up her sleeves and prepared for\naction. While her mother was attacking her father, she tried to restrain\nher mother, so far as filial reverence would allow. During the prince's\noutburst she was silent; she felt ashamed for her mother, and tender\ntowards her father for so quickly being kind again. But when her father\nleft them she made ready for what was the chief thing needful--to go to\nKitty and console her.\n\n\"I'd been meaning to tell you something for a long while, mamma: did you\nknow that Levin meant to make Kitty an offer when he was here the last\ntime? He told Stiva so.\"\n\n\"Well, what then? I don't understand...\"\n\n\"So did Kitty perhaps refuse him?... She didn't tell you so?\"\n\n\"No, she has said nothing to me either of one or the other; she's too\nproud. But I know it's all on account of the other.\"\n\n\"Yes, but suppose she has refused Levin, and she wouldn't have refused\nhim if it hadn't been for the other, I know. And then, he has deceived\nher so horribly.\"\n\nIt was too terrible for the princess to think how she had sinned against\nher daughter, and she broke out angrily.\n\n\"Oh, I really don't understand! Nowadays they will all go their own way,\nand mothers haven't a word to say in anything, and then...\"\n\n\"Mamma, I'll go up to her.\"\n\n\"Well, do. Did I tell you not to?\" said her mother.\n\n\n\nChapter 3\n\n\nWhen she went into Kitty's little room, a pretty, pink little room, full\nof knick-knacks in _vieux saxe,_ as fresh, and pink, and white, and gay\nas Kitty herself had been two months ago, Dolly remembered how they had\ndecorated the room the year before together, with what love and gaiety.\nHer heart turned cold when she saw Kitty sitting on a low chair near the\ndoor, her eyes fixed immovably on a corner of the rug. Kitty glanced at\nher sister, and the cold, rather ill-tempered expression of her face did\nnot change.\n\n\"I'm just going now, and I shall have to keep in and you won't be able\nto come to see me,\" said Dolly, sitting down beside her. \"I want to talk\nto you.\"\n\n\"What about?\" Kitty asked swiftly, lifting her head in dismay.\n\n\"What should it be, but your trouble?\"\n\n\"I have no trouble.\"\n\n\"Nonsense, Kitty. Do you suppose I could help knowing? I know all about\nit. And believe me, it's of so little consequence.... We've all been\nthrough it.\"\n\nKitty did not speak, and her face had a stern expression.\n\n\"He's not worth your grieving over him,\" pursued Darya Alexandrovna,\ncoming straight to the point.\n\n\"No, because he has treated me with contempt,\" said Kitty, in a breaking\nvoice. \"Don't talk of it! Please, don't talk of it!\"\n\n\"But who can have told you so? No one has said that. I'm certain he was\nin love with you, and would still be in love with you, if it hadn't...\n\n\"Oh, the most awful thing of all for me is this sympathizing!\" shrieked\nKitty, suddenly flying into a passion. She turned round on her chair,\nflushed crimson, and rapidly moving her fingers, pinched the clasp of\nher belt first with one hand and then with the other. Dolly knew this\ntrick her sister had of clenching her hands when she was much excited;\nshe knew, too, that in moments of excitement Kitty was capable of\nforgetting herself and saying a great deal too much, and Dolly would\nhave soothed her, but it was too late.\n\n\"What, what is it you want to make me feel, eh?\" said Kitty quickly.\n\"That I've been in love with a man who didn't care a straw for me, and\nthat I'm dying of love for him? And this is said to me by my own sister,\nwho imagines that ... that ... that she's sympathizing with me!... I\ndon't want these condolences and humbug!\"\n\n\"Kitty, you're unjust.\"\n\n\"Why are you tormenting me?\"\n\n\"But I ... quite the contrary ... I see you're unhappy...\"\n\nBut Kitty in her fury did not hear her.\n\n\"I've nothing to grieve over and be comforted about. I am too proud ever\nto allow myself to care for a man who does not love me.\"\n\n\"Yes, I don't say so either.... Only one thing. Tell me the truth,\" said\nDarya Alexandrovna, taking her by the hand: \"tell me, did Levin speak to\nyou?...\"\n\nThe mention of Levin's name seemed to deprive Kitty of the last vestige\nof self-control. She leaped up from her chair, and flinging her clasp on\nthe ground, she gesticulated rapidly with her hands and said:\n\n\"Why bring Levin in too? I can't understand what you want to torment me\nfor. I've told you, and I say it again, that I have some pride, and\nnever, _never_ would I do as you're doing--go back to a man who's\ndeceived you, who has cared for another woman. I can't understand it!\nYou may, but I can't!\"\n\nAnd saying these words she glanced at her sister, and seeing that Dolly\nsat silent, her head mournfully bowed, Kitty, instead of running out of\nthe room as she had meant to do, sat down near the door, and hid her\nface in her handkerchief.\n\nThe silence lasted for two minutes: Dolly was thinking of herself. That\nhumiliation of which she was always conscious came back to her with a\npeculiar bitterness when her sister reminded her of it. She had not\nlooked for such cruelty in her sister, and she was angry with her. But\nsuddenly she heard the rustle of a skirt, and with it the sound of\nheart-rending, smothered sobbing, and felt arms about her neck. Kitty\nwas on her knees before her.\n\n\"Dolinka, I am so, so wretched!\" she whispered penitently. And the sweet\nface covered with tears hid itself in Darya Alexandrovna's skirt.\n\nAs though tears were the indispensable oil, without which the machinery\nof mutual confidence could not run smoothly between the two sisters, the\nsisters after their tears talked, not of what was uppermost in their\nminds, but, though they talked of outside matters, they understood each\nother. Kitty knew that the words she had uttered in anger about her\nhusband's infidelity and her humiliating position had cut her poor\nsister to the heart, but that she had forgiven her. Dolly for her part\nknew all she had wanted to find out. She felt certain that her surmises\nwere correct; that Kitty's misery, her inconsolable misery, was due\nprecisely to the fact that Levin had made her an offer and she had\nrefused him, and Vronsky had deceived her, and that she was fully\nprepared to love Levin and to detest Vronsky. Kitty said not a word of\nthat; she talked of nothing but her spiritual condition.\n\n\"I have nothing to make me miserable,\" she said, getting calmer; \"but\ncan you understand that everything has become hateful, loathsome, coarse\nto me, and I myself most of all? You can't imagine what loathsome\nthoughts I have about everything.\"\n\n\"Why, whatever loathsome thoughts can you have?\" asked Dolly, smiling.\n\n\"The most utterly loathsome and coarse: I can't tell you. It's not\nunhappiness, or low spirits, but much worse. As though everything that\nwas good in me was all hidden away, and nothing was left but the most\nloathsome. Come, how am I to tell you?\" she went on, seeing the puzzled\nlook in her sister's eyes. \"Father began saying something to me just\nnow.... It seems to me he thinks all I want is to be married. Mother\ntakes me to a ball: it seems to me she only takes me to get me married\noff as soon as may be, and be rid of me. I know it's not the truth, but\nI can't drive away such thoughts. Eligible suitors, as they call them--I\ncan't bear to see them. It seems to me they're taking stock of me and\nsumming me up. In old days to go anywhere in a ball dress was a simple\njoy to me, I admired myself; now I feel ashamed and awkward. And then!\nThe doctor.... Then...\" Kitty hesitated; she wanted to say further that\never since this change had taken place in her, Stepan Arkadyevitch had\nbecome insufferably repulsive to her, and that she could not see him\nwithout the grossest and most hideous conceptions rising before her\nimagination.\n\n\"Oh, well, everything presents itself to me, in the coarsest, most\nloathsome light,\" she went on. \"That's my illness. Perhaps it will pass\noff.\"\n\n\"But you mustn't think about it.\"\n\n\"I can't help it. I'm never happy except with the children at your\nhouse.\"\n\n\"What a pity you can't be with me!\"\n\n\"Oh, yes, I'm coming. I've had scarlatina, and I'll persuade mamma to\nlet me.\"\n\nKitty insisted on having her way, and went to stay at her sister's and\nnursed the children all through the scarlatina, for scarlatina it turned\nout to be. The two sisters brought all the six children successfully\nthrough it, but Kitty was no better in health, and in Lent the\nShtcherbatskys went abroad.\n\n\n\nChapter 4\n\n\nThe highest Petersburg society is essentially one: in it everyone knows\neveryone else, everyone even visits everyone else. But this great set\nhas its subdivisions. Anna Arkadyevna Karenina had friends and close\nties in three different circles of this highest society. One circle was\nher husband's government official set, consisting of his colleagues and\nsubordinates, brought together in the most various and capricious\nmanner, and belonging to different social strata. Anna found it\ndifficult now to recall the feeling of almost awe-stricken reverence\nwhich she had at first entertained for these persons. Now she knew all\nof them as people know one another in a country town; she knew their\nhabits and weaknesses, and where the shoe pinched each one of them. She\nknew their relations with one another and with the head authorities,\nknew who was for whom, and how each one maintained his position, and\nwhere they agreed and disagreed. But the circle of political, masculine\ninterests had never interested her, in spite of countess Lidia\nIvanovna's influence, and she avoided it.\n\nAnother little set with which Anna was in close relations was the one by\nmeans of which Alexey Alexandrovitch had made his career. The center of\nthis circle was the Countess Lidia Ivanovna. It was a set made up of\nelderly, ugly, benevolent, and godly women, and clever, learned, and\nambitious men. One of the clever people belonging to the set had called\nit \"the conscience of Petersburg society.\" Alexey Alexandrovitch had the\nhighest esteem for this circle, and Anna with her special gift for\ngetting on with everyone, had in the early days of her life in\nPetersburg made friends in this circle also. Now, since her return from\nMoscow, she had come to feel this set insufferable. It seemed to her\nthat both she and all of them were insincere, and she felt so bored and\nill at ease in that world that she went to see the Countess Lidia\nIvanovna as little as possible.\n\nThe third circle with which Anna had ties was preeminently the\nfashionable world--the world of balls, of dinners, of sumptuous dresses,\nthe world that hung on to the court with one hand, so as to avoid\nsinking to the level of the demi-monde. For the demi-monde the members\nof that fashionable world believed that they despised, though their\ntastes were not merely similar, but in fact identical. Her connection\nwith this circle was kept up through Princess Betsy Tverskaya, her\ncousin's wife, who had an income of a hundred and twenty thousand\nroubles, and who had taken a great fancy to Anna ever since she first\ncame out, showed her much attention, and drew her into her set, making\nfun of Countess Lidia Ivanovna's coterie.\n\n\"When I'm old and ugly I'll be the same,\" Betsy used to say; \"but for a\npretty young woman like you it's early days for that house of charity.\"\n\nAnna had at first avoided as far as she could Princess Tverskaya's\nworld, because it necessitated an expenditure beyond her means, and\nbesides in her heart she preferred the first circle. But since her visit\nto Moscow she had done quite the contrary. She avoided her\nserious-minded friends, and went out into the fashionable world. There\nshe met Vronsky, and experienced an agitating joy at those meetings. She\nmet Vronsky specially often at Betsy's for Betsy was a Vronsky by birth\nand his cousin. Vronsky was everywhere where he had any chance of\nmeeting Anna, and speaking to her, when he could, of his love. She gave\nhim no encouragement, but every time she met him there surged up in her\nheart that same feeling of quickened life that had come upon her that\nday in the railway carriage when she saw him for the first time. She was\nconscious herself that her delight sparkled in her eyes and curved her\nlips into a smile, and she could not quench the expression of this\ndelight.\n\nAt first Anna sincerely believed that she was displeased with him for\ndaring to pursue her. Soon after her return from Moscow, on arriving at\na _soiree_ where she had expected to meet him, and not finding him\nthere, she realized distinctly from the rush of disappointment that she\nhad been deceiving herself, and that this pursuit was not merely not\ndistasteful to her, but that it made the whole interest of her life.\n\nA celebrated singer was singing for the second time, and all the\nfashionable world was in the theater. Vronsky, seeing his cousin from\nhis stall in the front row, did not wait till the entr'acte, but went to\nher box.\n\n\"Why didn't you come to dinner?\" she said to him. \"I marvel at the\nsecond sight of lovers,\" she added with a smile, so that no one but he\ncould hear; \"_she wasn't there_. But come after the opera.\"\n\nVronsky looked inquiringly at her. She nodded. He thanked her by a\nsmile, and sat down beside her.\n\n\"But how I remember your jeers!\" continued Princess Betsy, who took a\npeculiar pleasure in following up this passion to a successful issue.\n\"What's become of all that? You're caught, my dear boy.\"\n\n\"That's my one desire, to be caught,\" answered Vronsky, with his serene,\ngood-humored smile. \"If I complain of anything it's only that I'm not\ncaught enough, to tell the truth. I begin to lose hope.\"\n\n\"Why, whatever hope can you have?\" said Betsy, offended on behalf of her\nfriend. \"_Entendons nous...._\" But in her eyes there were gleams of\nlight that betrayed that she understood perfectly and precisely as he\ndid what hope he might have.\n\n\"None whatever,\" said Vronsky, laughing and showing his even rows of\nteeth. \"Excuse me,\" he added, taking an opera glass out of her hand, and\nproceeding to scrutinize, over her bare shoulder, the row of boxes\nfacing them. \"I'm afraid I'm becoming ridiculous.\"\n\nHe was very well aware that he ran no risk of being ridiculous in the\neyes of Betsy or any other fashionable people. He was very well aware\nthat in their eyes the position of an unsuccessful lover of a girl, or\nof any woman free to marry, might be ridiculous. But the position of a\nman pursuing a married woman, and, regardless of everything, staking his\nlife on drawing her into adultery, has something fine and grand about\nit, and can never be ridiculous; and so it was with a proud and gay\nsmile under his mustaches that he lowered the opera glass and looked at\nhis cousin.\n\n\"But why was it you didn't come to dinner?\" she said, admiring him.\n\n\"I must tell you about that. I was busily employed, and doing what, do\nyou suppose? I'll give you a hundred guesses, a thousand ... you'd never\nguess. I've been reconciling a husband with a man who'd insulted his\nwife. Yes, really!\"\n\n\"Well, did you succeed?\"\n\n\"Almost.\"\n\n\"You really must tell me about it,\" she said, getting up. \"Come to me in\nthe next _entr'acte._\"\n\n\"I can't; I'm going to the French theater.\"\n\n\"From Nilsson?\" Betsy queried in horror, though she could not herself\nhave distinguished Nilsson's voice from any chorus girl's.\n\n\"Can't help it. I've an appointment there, all to do with my mission of\npeace.\"\n\n\"'Blessed are the peacemakers; theirs is the kingdom of heaven,'\" said\nBetsy, vaguely recollecting she had heard some similar saying from\nsomeone. \"Very well, then, sit down, and tell me what it's all about.\"\n\nAnd she sat down again.\n\n\n\nChapter 5\n\n\n\"This is rather indiscreet, but it's so good it's an awful temptation to\ntell the story,\" said Vronsky, looking at her with his laughing eyes.\n\"I'm not going to mention any names.\"\n\n\"But I shall guess, so much the better.\"\n\n\"Well, listen: two festive young men were driving--\"\n\n\"Officers of your regiment, of course?\"\n\n\"I didn't say they were officers,--two young men who had been lunching.\"\n\n\"In other words, drinking.\"\n\n\"Possibly. They were driving on their way to dinner with a friend in the\nmost festive state of mind. And they beheld a pretty woman in a hired\nsledge; she overtakes them, looks round at them, and, so they fancy\nanyway, nods to them and laughs. They, of course, follow her. They\ngallop at full speed. To their amazement, the fair one alights at the\nentrance of the very house to which they were going. The fair one darts\nupstairs to the top story. They get a glimpse of red lips under a short\nveil, and exquisite little feet.\"\n\n\"You describe it with such feeling that I fancy you must be one of the\ntwo.\"\n\n\"And after what you said, just now! Well, the young men go in to their\ncomrade's; he was giving a farewell dinner. There they certainly did\ndrink a little too much, as one always does at farewell dinners. And at\ndinner they inquire who lives at the top in that house. No one knows;\nonly their host's valet, in answer to their inquiry whether any 'young\nladies' are living on the top floor, answered that there were a great\nmany of them about there. After dinner the two young men go into their\nhost's study, and write a letter to the unknown fair one. They compose\nan ardent epistle, a declaration in fact, and they carry the letter\nupstairs themselves, so as to elucidate whatever might appear not\nperfectly intelligible in the letter.\"\n\n\"Why are you telling me these horrible stories? Well?\"\n\n\"They ring. A maid-servant opens the door, they hand her the letter, and\nassure the maid that they're both so in love that they'll die on the\nspot at the door. The maid, stupefied, carries in their messages. All at\nonce a gentleman appears with whiskers like sausages, as red as a\nlobster, announces that there is no one living in the flat except his\nwife, and sends them both about their business.\"\n\n\"How do you know he had whiskers like sausages, as you say?\"\n\n\"Ah, you shall hear. I've just been to make peace between them.\"\n\n\"Well, and what then?\"\n\n\"That's the most interesting part of the story. It appears that it's a\nhappy couple, a government clerk and his lady. The government clerk\nlodges a complaint, and I became a mediator, and such a mediator!... I\nassure you Talleyrand couldn't hold a candle to me.\"\n\n\"Why, where was the difficulty?\"\n\n\"Ah, you shall hear.... We apologize in due form: we are in despair, we\nentreat forgiveness for the unfortunate misunderstanding. The government\nclerk with the sausages begins to melt, but he, too, desires to express\nhis sentiments, and as soon as ever he begins to express them, he begins\nto get hot and say nasty things, and again I'm obliged to trot out all\nmy diplomatic talents. I allowed that their conduct was bad, but I urged\nhim to take into consideration their heedlessness, their youth; then,\ntoo, the young men had only just been lunching together. 'You\nunderstand. They regret it deeply, and beg you to overlook their\nmisbehavior.' The government clerk was softened once more. 'I consent,\ncount, and am ready to overlook it; but you perceive that my wife--my\nwife's a respectable woman--has been exposed to the persecution, and\ninsults, and effrontery of young upstarts, scoundrels....' And you must\nunderstand, the young upstarts are present all the while, and I have to\nkeep the peace between them. Again I call out all my diplomacy, and\nagain as soon as the thing was about at an end, our friend the\ngovernment clerk gets hot and red, and his sausages stand on end with\nwrath, and once more I launch out into diplomatic wiles.\"\n\n\"Ah, he must tell you this story!\" said Betsy, laughing, to a lady who\ncame into her box. \"He has been making me laugh so.\"\n\n\"Well, _bonne chance_!\" she added, giving Vronsky one finger of the hand\nin which she held her fan, and with a shrug of her shoulders she\ntwitched down the bodice of her gown that had worked up, so as to be\nduly naked as she moved forward towards the footlights into the light of\nthe gas, and the sight of all eyes.\n\nVronsky drove to the French theater, where he really had to see the\ncolonel of his regiment, who never missed a single performance there. He\nwanted to see him, to report on the result of his mediation, which had\noccupied and amused him for the last three days. Petritsky, whom he\nliked, was implicated in the affair, and the other culprit was a capital\nfellow and first-rate comrade, who had lately joined the regiment, the\nyoung Prince Kedrov. And what was most important, the interests of the\nregiment were involved in it too.\n\nBoth the young men were in Vronsky's company. The colonel of the\nregiment was waited upon by the government clerk, Venden, with a\ncomplaint against his officers, who had insulted his wife. His young\nwife, so Venden told the story--he had been married half a year--was at\nchurch with her mother, and suddenly overcome by indisposition, arising\nfrom her interesting condition, she could not remain standing, she drove\nhome in the first sledge, a smart-looking one, she came across. On the\nspot the officers set off in pursuit of her; she was alarmed, and\nfeeling still more unwell, ran up the staircase home. Venden himself, on\nreturning from his office, heard a ring at their bell and voices, went\nout, and seeing the intoxicated officers with a letter, he had turned\nthem out. He asked for exemplary punishment.\n\n\"Yes, it's all very well,\" said the colonel to Vronsky, whom he had\ninvited to come and see him. \"Petritsky's becoming impossible. Not a\nweek goes by without some scandal. This government clerk won't let it\ndrop, he'll go on with the thing.\"\n\nVronsky saw all the thanklessness of the business, and that there could\nbe no question of a duel in it, that everything must be done to soften\nthe government clerk, and hush the matter up. The colonel had called in\nVronsky just because he knew him to be an honorable and intelligent man,\nand, more than all, a man who cared for the honor of the regiment. They\ntalked it over, and decided that Petritsky and Kedrov must go with\nVronsky to Venden's to apologize. The colonel and Vronsky were both\nfully aware that Vronsky's name and rank would be sure to contribute\ngreatly to the softening of the injured husband's feelings.\n\nAnd these two influences were not in fact without effect; though the\nresult remained, as Vronsky had described, uncertain.\n\nOn reaching the French theater, Vronsky retired to the foyer with the\ncolonel, and reported to him his success, or non-success. The colonel,\nthinking it all over, made up his mind not to pursue the matter further,\nbut then for his own satisfaction proceeded to cross-examine Vronsky\nabout his interview; and it was a long while before he could restrain\nhis laughter, as Vronsky described how the government clerk, after\nsubsiding for a while, would suddenly flare up again, as he recalled the\ndetails, and how Vronsky, at the last half word of conciliation,\nskillfully maneuvered a retreat, shoving Petritsky out before him.\n\n\"It's a disgraceful story, but killing. Kedrov really can't fight the\ngentleman! Was he so awfully hot?\" he commented, laughing. \"But what do\nyou say to Claire today? She's marvelous,\" he went on, speaking of a new\nFrench actress. \"However often you see her, every day she's different.\nIt's only the French who can do that.\"\n\n\n\nChapter 6\n\n\nPrincess Betsy drove home from the theater, without waiting for the end\nof the last act. She had only just time to go into her dressing room,\nsprinkle her long, pale face with powder, rub it, set her dress to\nrights, and order tea in the big drawing room, when one after another\ncarriages drove up to her huge house in Bolshaia Morskaia. Her guests\nstepped out at the wide entrance, and the stout porter, who used to read\nthe newspapers in the mornings behind the glass door, to the edification\nof the passers-by, noiselessly opened the immense door, letting the\nvisitors pass by him into the house.\n\nAlmost at the same instant the hostess, with freshly arranged coiffure\nand freshened face, walked in at one door and her guests at the other\ndoor of the drawing room, a large room with dark walls, downy rugs, and\na brightly lighted table, gleaming with the light of candles, white\ncloth, silver samovar, and transparent china tea things.\n\nThe hostess sat down at the table and took off her gloves. Chairs were\nset with the aid of footmen, moving almost imperceptibly about the room;\nthe party settled itself, divided into two groups: one round the samovar\nnear the hostess, the other at the opposite end of the drawing room,\nround the handsome wife of an ambassador, in black velvet, with sharply\ndefined black eyebrows. In both groups conversation wavered, as it\nalways does, for the first few minutes, broken up by meetings,\ngreetings, offers of tea, and as it were, feeling about for something to\nrest upon.\n\n\"She's exceptionally good as an actress; one can see she's studied\nKaulbach,\" said a diplomatic attache in the group round the ambassador's\nwife. \"Did you notice how she fell down?...\"\n\n\"Oh, please, don't let us talk about Nilsson! No one can possibly say\nanything new about her,\" said a fat, red-faced, flaxen-headed lady,\nwithout eyebrows and chignon, wearing an old silk dress. This was\nPrincess Myakaya, noted for her simplicity and the roughness of her\nmanners, and nicknamed _enfant terrible_. Princess Myakaya, sitting in\nthe middle between the two groups, and listening to both, took part in\nthe conversation first of one and then of the other. \"Three people have\nused that very phrase about Kaulbach to me today already, just as though\nthey had made a compact about it. And I can't see why they liked that\nremark so.\"\n\nThe conversation was cut short by this observation, and a new subject\nhad to be thought of again.\n\n\"Do tell me something amusing but not spiteful,\" said the ambassador's\nwife, a great proficient in the art of that elegant conversation called\nby the English, _small talk_. She addressed the attache, who was at a\nloss now what to begin upon.\n\n\"They say that that's a difficult task, that nothing's amusing that\nisn't spiteful,\" he began with a smile. \"But I'll try. Get me a subject.\nIt all lies in the subject. If a subject's given me, it's easy to spin\nsomething round it. I often think that the celebrated talkers of the\nlast century would have found it difficult to talk cleverly now.\nEverything clever is so stale...\"\n\n\"That has been said long ago,\" the ambassador's wife interrupted him,\nlaughing.\n\nThe conversation began amiably, but just because it was too amiable, it\ncame to a stop again. They had to have recourse to the sure,\nnever-failing topic--gossip.\n\n\"Don't you think there's something Louis Quinze about Tushkevitch?\" he\nsaid, glancing towards a handsome, fair-haired young man, standing at\nthe table.\n\n\"Oh, yes! He's in the same style as the drawing room and that's why it\nis he's so often here.\"\n\nThis conversation was maintained, since it rested on allusions to what\ncould not be talked of in that room--that is to say, of the relations of\nTushkevitch with their hostess.\n\nRound the samovar and the hostess the conversation had been meanwhile\nvacillating in just the same way between three inevitable topics: the\nlatest piece of public news, the theater, and scandal. It, too, came\nfinally to rest on the last topic, that is, ill-natured gossip.\n\n\"Have you heard the Maltishtcheva woman--the mother, not the\ndaughter--has ordered a costume in _diable rose_ color?\"\n\n\"Nonsense! No, that's too lovely!\"\n\n\"I wonder that with her sense--for she's not a fool, you know--that she\ndoesn't see how funny she is.\"\n\nEveryone had something to say in censure or ridicule of the luckless\nMadame Maltishtcheva, and the conversation crackled merrily, like a\nburning faggot-stack.\n\nThe husband of Princess Betsy, a good-natured fat man, an ardent\ncollector of engravings, hearing that his wife had visitors, came into\nthe drawing room before going to his club. Stepping noiselessly over the\nthick rugs, he went up to Princess Myakaya.\n\n\"How did you like Nilsson?\" he asked.\n\n\"Oh, how can you steal upon anyone like that! How you startled me!\" she\nresponded. \"Please don't talk to me about the opera; you know nothing\nabout music. I'd better meet you on your own ground, and talk about your\nmajolica and engravings. Come now, what treasure have you been buying\nlately at the old curiosity shops?\"\n\n\"Would you like me to show you? But you don't understand such things.\"\n\n\"Oh, do show me! I've been learning about them at those--what's their\nnames?... the bankers ... they've some splendid engravings. They showed\nthem to us.\"\n\n\"Why, have you been at the Schuetzburgs?\" asked the hostess from the\nsamovar.\n\n\"Yes, _ma chere_. They asked my husband and me to dinner, and told us\nthe sauce at that dinner cost a hundred pounds,\" Princess Myakaya said,\nspeaking loudly, and conscious everyone was listening; \"and very nasty\nsauce it was, some green mess. We had to ask them, and I made them sauce\nfor eighteen pence, and everybody was very much pleased with it. I can't\nrun to hundred-pound sauces.\"\n\n\"She's unique!\" said the lady of the house.\n\n\"Marvelous!\" said someone.\n\nThe sensation produced by Princess Myakaya's speeches was always unique,\nand the secret of the sensation she produced lay in the fact that though\nshe spoke not always appropriately, as now, she said simple things with\nsome sense in them. In the society in which she lived such plain\nstatements produced the effect of the wittiest epigram. Princess Myakaya\ncould never see why it had that effect, but she knew it had, and took\nadvantage of it.\n\nAs everyone had been listening while Princess Myakaya spoke, and so the\nconversation around the ambassador's wife had dropped, Princess Betsy\ntried to bring the whole party together, and turned to the ambassador's\nwife.\n\n\"Will you really not have tea? You should come over here by us.\"\n\n\"No, we're very happy here,\" the ambassador's wife responded with a\nsmile, and she went on with the conversation that had been begun.\n\nIt was a very agreeable conversation. They were criticizing the\nKarenins, husband and wife.\n\n\"Anna is quite changed since her stay in Moscow. There's something\nstrange about her,\" said her friend.\n\n\"The great change is that she brought back with her the shadow of Alexey\nVronsky,\" said the ambassador's wife.\n\n\"Well, what of it? There's a fable of Grimm's about a man without a\nshadow, a man who's lost his shadow. And that's his punishment for\nsomething. I never could understand how it was a punishment. But a woman\nmust dislike being without a shadow.\"\n\n\"Yes, but women with a shadow usually come to a bad end,\" said Anna's\nfriend.\n\n\"Bad luck to your tongue!\" said Princess Myakaya suddenly. \"Madame\nKarenina's a splendid woman. I don't like her husband, but I like her\nvery much.\"\n\n\"Why don't you like her husband? He's such a remarkable man,\" said the\nambassador's wife. \"My husband says there are few statesmen like him in\nEurope.\"\n\n\"And my husband tells me just the same, but I don't believe it,\" said\nPrincess Myakaya. \"If our husbands didn't talk to us, we should see the\nfacts as they are. Alexey Alexandrovitch, to my thinking, is simply a\nfool. I say it in a whisper ... but doesn't it really make everything\nclear? Before, when I was told to consider him clever, I kept looking\nfor his ability, and thought myself a fool for not seeing it; but\ndirectly I said, _he's a fool,_ though only in a whisper, everything's\nexplained, isn't it?\"\n\n\"How spiteful you are today!\"\n\n\"Not a bit. I'd no other way out of it. One of the two had to be a fool.\nAnd, well, you know one can't say that of oneself.\"\n\n\"'No one is satisfied with his fortune, and everyone is satisfied with\nhis wit.'\" The attache repeated the French saying.\n\n\"That's just it, just it,\" Princess Myakaya turned to him. \"But the\npoint is that I won't abandon Anna to your mercies. She's so nice, so\ncharming. How can she help it if they're all in love with her, and\nfollow her about like shadows?\"\n\n\"Oh, I had no idea of blaming her for it,\" Anna's friend said in\nself-defense.\n\n\"If no one follows us about like a shadow, that's no proof that we've\nany right to blame her.\"\n\nAnd having duly disposed of Anna's friend, the Princess Myakaya got up,\nand together with the ambassador's wife, joined the group at the table,\nwhere the conversation was dealing with the king of Prussia.\n\n\"What wicked gossip were you talking over there?\" asked Betsy.\n\n\"About the Karenins. The princess gave us a sketch of Alexey\nAlexandrovitch,\" said the ambassador's wife with a smile, as she sat\ndown at the table.\n\n\"Pity we didn't hear it!\" said Princess Betsy, glancing towards the\ndoor. \"Ah, here you are at last!\" she said, turning with a smile to\nVronsky, as he came in.\n\nVronsky was not merely acquainted with all the persons whom he was\nmeeting here; he saw them all every day; and so he came in with the\nquiet manner with which one enters a room full of people from whom one\nhas only just parted.\n\n\"Where do I come from?\" he said, in answer to a question from the\nambassador's wife. \"Well, there's no help for it, I must confess. From\nthe _opera bouffe_. I do believe I've seen it a hundred times, and\nalways with fresh enjoyment. It's exquisite! I know it's disgraceful,\nbut I go to sleep at the opera, and I sit out the _opera bouffe_ to the\nlast minute, and enjoy it. This evening...\"\n\nHe mentioned a French actress, and was going to tell something about\nher; but the ambassador's wife, with playful horror, cut him short.\n\n\"Please don't tell us about that horror.\"\n\n\"All right, I won't especially as everyone knows those horrors.\"\n\n\"And we should all go to see them if it were accepted as the correct\nthing, like the opera,\" chimed in Princess Myakaya.\n\n\n\nChapter 7\n\n\nSteps were heard at the door, and Princess Betsy, knowing it was Madame\nKarenina, glanced at Vronsky. He was looking towards the door, and his\nface wore a strange new expression. Joyfully, intently, and at the same\ntime timidly, he gazed at the approaching figure, and slowly he rose to\nhis feet. Anna walked into the drawing room. Holding herself extremely\nerect, as always, looking straight before her, and moving with her\nswift, resolute, and light step, that distinguished her from all other\nsociety women, she crossed the short space to her hostess, shook hands\nwith her, smiled, and with the same smile looked around at Vronsky.\nVronsky bowed low and pushed a chair up for her.\n\nShe acknowledged this only by a slight nod, flushed a little, and\nfrowned. But immediately, while rapidly greeting her acquaintances, and\nshaking the hands proffered to her, she addressed Princess Betsy:\n\n\"I have been at Countess Lidia's, and meant to have come here earlier,\nbut I stayed on. Sir John was there. He's very interesting.\"\n\n\"Oh, that's this missionary?\"\n\n\"Yes; he told us about the life in India, most interesting things.\"\n\nThe conversation, interrupted by her coming in, flickered up again like\nthe light of a lamp being blown out.\n\n\"Sir John! Yes, Sir John; I've seen him. He speaks well. The Vlassieva\ngirl's quite in love with him.\"\n\n\"And is it true the younger Vlassieva girl's to marry Topov?\"\n\n\"Yes, they say it's quite a settled thing.\"\n\n\"I wonder at the parents! They say it's a marriage for love.\"\n\n\"For love? What antediluvian notions you have! Can one talk of love in\nthese days?\" said the ambassador's wife.\n\n\"What's to be done? It's a foolish old fashion that's kept up still,\"\nsaid Vronsky.\n\n\"So much the worse for those who keep up the fashion. The only happy\nmarriages I know are marriages of prudence.\"\n\n\"Yes, but then how often the happiness of these prudent marriages flies\naway like dust just because that passion turns up that they have refused\nto recognize,\" said Vronsky.\n\n\"But by marriages of prudence we mean those in which both parties have\nsown their wild oats already. That's like scarlatina--one has to go\nthrough it and get it over.\"\n\n\"Then they ought to find out how to vaccinate for love, like smallpox.\"\n\n\"I was in love in my young days with a deacon,\" said the Princess\nMyakaya. \"I don't know that it did me any good.\"\n\n\"No; I imagine, joking apart, that to know love, one must make mistakes\nand then correct them,\" said Princess Betsy.\n\n\"Even after marriage?\" said the ambassador's wife playfully.\n\n\"'It's never too late to mend.'\" The attache repeated the English\nproverb.\n\n\"Just so,\" Betsy agreed; \"one must make mistakes and correct them. What\ndo you think about it?\" she turned to Anna, who, with a faintly\nperceptible resolute smile on her lips, was listening in silence to the\nconversation.\n\n\"I think,\" said Anna, playing with the glove she had taken off, \"I think\n... of so many men, so many minds, certainly so many hearts, so many\nkinds of love.\"\n\nVronsky was gazing at Anna, and with a fainting heart waiting for what\nshe would say. He sighed as after a danger escaped when she uttered\nthese words.\n\nAnna suddenly turned to him.\n\n\"Oh, I have had a letter from Moscow. They write me that Kitty\nShtcherbatskaya's very ill.\"\n\n\"Really?\" said Vronsky, knitting his brows.\n\nAnna looked sternly at him.\n\n\"That doesn't interest you?\"\n\n\"On the contrary, it does, very much. What was it exactly they told you,\nif I may know?\" he questioned.\n\nAnna got up and went to Betsy.\n\n\"Give me a cup of tea,\" she said, standing at her table.\n\nWhile Betsy was pouring out the tea, Vronsky went up to Anna.\n\n\"What is it they write to you?\" he repeated.\n\n\"I often think men have no understanding of what's not honorable though\nthey're always talking of it,\" said Anna, without answering him. \"I've\nwanted to tell you so a long while,\" she added, and moving a few steps\naway, she sat down at a table in a corner covered with albums.\n\n\"I don't quite understand the meaning of your words,\" he said, handing\nher the cup.\n\nShe glanced towards the sofa beside her, and he instantly sat down.\n\n\"Yes, I have been wanting to tell you,\" she said, not looking at him.\n\"You behaved wrongly, very wrongly.\"\n\n\"Do you suppose I don't know that I've acted wrongly? But who was the\ncause of my doing so?\"\n\n\"What do you say that to me for?\" she said, glancing severely at him.\n\n\"You know what for,\" he answered boldly and joyfully, meeting her glance\nand not dropping his eyes.\n\nNot he, but she, was confused.\n\n\"That only shows you have no heart,\" she said. But her eyes said that\nshe knew he had a heart, and that was why she was afraid of him.\n\n\"What you spoke of just now was a mistake, and not love.\"\n\n\"Remember that I have forbidden you to utter that word, that hateful\nword,\" said Anna, with a shudder. But at once she felt that by that very\nword \"forbidden\" she had shown that she acknowledged certain rights over\nhim, and by that very fact was encouraging him to speak of love. \"I have\nlong meant to tell you this,\" she went on, looking resolutely into his\neyes, and hot all over from the burning flush on her cheeks. \"I've come\non purpose this evening, knowing I should meet you. I have come to tell\nyou that this must end. I have never blushed before anyone, and you\nforce me to feel to blame for something.\"\n\nHe looked at her and was struck by a new spiritual beauty in her face.\n\n\"What do you wish of me?\" he said simply and seriously.\n\n\"I want you to go to Moscow and ask for Kitty's forgiveness,\" she said.\n\n\"You don't wish that?\" he said.\n\nHe saw she was saying what she forced herself to say, not what she\nwanted to say.\n\n\"If you love me, as you say,\" she whispered, \"do so that I may be at\npeace.\"\n\nHis face grew radiant.\n\n\"Don't you know that you're all my life to me? But I know no peace, and\nI can't give it to you; all myself--and love ... yes. I can't think of\nyou and myself apart. You and I are one to me. And I see no chance\nbefore us of peace for me or for you. I see a chance of despair, of\nwretchedness ... or I see a chance of bliss, what bliss!... Can it be\nthere's no chance of it?\" he murmured with his lips; but she heard.\n\nShe strained every effort of her mind to say what ought to be said. But\ninstead of that she let her eyes rest on him, full of love, and made no\nanswer.\n\n\"It's come!\" he thought in ecstasy. \"When I was beginning to despair,\nand it seemed there would be no end--it's come! She loves me! She owns\nit!\"\n\n\"Then do this for me: never say such things to me, and let us be\nfriends,\" she said in words; but her eyes spoke quite differently.\n\n\"Friends we shall never be, you know that yourself. Whether we shall be\nthe happiest or the wretchedest of people--that's in your hands.\"\n\nShe would have said something, but he interrupted her.\n\n\"I ask one thing only: I ask for the right to hope, to suffer as I do.\nBut if even that cannot be, command me to disappear, and I disappear.\nYou shall not see me if my presence is distasteful to you.\"\n\n\"I don't want to drive you away.\"\n\n\"Only don't change anything, leave everything as it is,\" he said in a\nshaky voice. \"Here's your husband.\"\n\nAt that instant Alexey Alexandrovitch did in fact walk into the room\nwith his calm, awkward gait.\n\nGlancing at his wife and Vronsky, he went up to the lady of the house,\nand sitting down for a cup of tea, began talking in his deliberate,\nalways audible voice, in his habitual tone of banter, ridiculing\nsomeone.\n\n\"Your Rambouillet is in full conclave,\" he said, looking round at all\nthe party; \"the graces and the muses.\"\n\nBut Princess Betsy could not endure that tone of his--\"sneering,\" as she\ncalled it, using the English word, and like a skillful hostess she at\nonce brought him into a serious conversation on the subject of universal\nconscription. Alexey Alexandrovitch was immediately interested in the\nsubject, and began seriously defending the new imperial decree against\nPrincess Betsy, who had attacked it.\n\nVronsky and Anna still sat at the little table.\n\n\"This is getting indecorous,\" whispered one lady, with an expressive\nglance at Madame Karenina, Vronsky, and her husband.\n\n\"What did I tell you?\" said Anna's friend.\n\nBut not only those ladies, almost everyone in the room, even the\nPrincess Myakaya and Betsy herself, looked several times in the\ndirection of the two who had withdrawn from the general circle, as\nthough that were a disturbing fact. Alexey Alexandrovitch was the only\nperson who did not once look in that direction, and was not diverted\nfrom the interesting discussion he had entered upon.\n\nNoticing the disagreeable impression that was being made on everyone,\nPrincess Betsy slipped someone else into her place to listen to Alexey\nAlexandrovitch, and went up to Anna.\n\n\"I'm always amazed at the clearness and precision of your husband's\nlanguage,\" she said. \"The most transcendental ideas seem to be within my\ngrasp when he's speaking.\"\n\n\"Oh, yes!\" said Anna, radiant with a smile of happiness, and not\nunderstanding a word of what Betsy had said. She crossed over to the big\ntable and took part in the general conversation.\n\nAlexey Alexandrovitch, after staying half an hour, went up to his wife\nand suggested that they should go home together. But she answered, not\nlooking at him, that she was staying to supper. Alexey Alexandrovitch\nmade his bows and withdrew.\n\nThe fat old Tatar, Madame Karenina's coachman, was with difficulty\nholding one of her pair of grays, chilled with the cold and rearing at\nthe entrance. A footman stood opening the carriage door. The hall porter\nstood holding open the great door of the house. Anna Arkadyevna, with\nher quick little hand, was unfastening the lace of her sleeve, caught in\nthe hook of her fur cloak, and with bent head listening to the words\nVronsky murmured as he escorted her down.\n\n\"You've said nothing, of course, and I ask nothing,\" he was saying; \"but\nyou know that friendship's not what I want: that there's only one\nhappiness in life for me, that word that you dislike so ... yes,\nlove!...\"\n\n\"Love,\" she repeated slowly, in an inner voice, and suddenly, at the\nvery instant she unhooked the lace, she added, \"Why I don't like the\nword is that it means too much to me, far more than you can understand,\"\nand she glanced into his face. \"_Au revoir!_\"\n\nShe gave him her hand, and with her rapid, springy step she passed by\nthe porter and vanished into the carriage.\n\nHer glance, the touch of her hand, set him aflame. He kissed the palm of\nhis hand where she had touched it, and went home, happy in the sense\nthat he had got nearer to the attainment of his aims that evening than\nduring the last two months.\n\n\n\nChapter 8\n\n\nAlexey Alexandrovitch had seen nothing striking or improper in the fact\nthat his wife was sitting with Vronsky at a table apart, in eager\nconversation with him about something. But he noticed that to the rest\nof the party this appeared something striking and improper, and for that\nreason it seemed to him too to be improper. He made up his mind that he\nmust speak of it to his wife.\n\nOn reaching home Alexey Alexandrovitch went to his study, as he usually\ndid, seated himself in his low chair, opened a book on the Papacy at the\nplace where he had laid the paper-knife in it, and read till one\no'clock, just as he usually did. But from time to time he rubbed his\nhigh forehead and shook his head, as though to drive away something. At\nhis usual time he got up and made his toilet for the night. Anna\nArkadyevna had not yet come in. With a book under his arm he went\nupstairs. But this evening, instead of his usual thoughts and\nmeditations upon official details, his thoughts were absorbed by his\nwife and something disagreeable connected with her. Contrary to his\nusual habit, he did not get into bed, but fell to walking up and down\nthe rooms with his hands clasped behind his back. He could not go to\nbed, feeling that it was absolutely needful for him first to think\nthoroughly over the position that had just arisen.\n\nWhen Alexey Alexandrovitch had made up his mind that he must talk to his\nwife about it, it had seemed a very easy and simple matter. But now,\nwhen he began to think over the question that had just presented itself,\nit seemed to him very complicated and difficult.\n\nAlexey Alexandrovitch was not jealous. Jealousy according to his notions\nwas an insult to one's wife, and one ought to have confidence in one's\nwife. Why one ought to have confidence--that is to say, complete\nconviction that his young wife would always love him--he did not ask\nhimself. But he had no experience of lack of confidence, because he had\nconfidence in her, and told himself that he ought to have it. Now,\nthough his conviction that jealousy was a shameful feeling and that one\nought to feel confidence, had not broken down, he felt that he was\nstanding face to face with something illogical and irrational, and did\nnot know what was to be done. Alexey Alexandrovitch was standing face to\nface with life, with the possibility of his wife's loving someone other\nthan himself, and this seemed to him very irrational and\nincomprehensible because it was life itself. All his life Alexey\nAlexandrovitch had lived and worked in official spheres, having to do\nwith the reflection of life. And every time he had stumbled against life\nitself he had shrunk away from it. Now he experienced a feeling akin to\nthat of a man who, while calmly crossing a precipice by a bridge, should\nsuddenly discover that the bridge is broken, and that there is a chasm\nbelow. That chasm was life itself, the bridge that artificial life in\nwhich Alexey Alexandrovitch had lived. For the first time the question\npresented itself to him of the possibility of his wife's loving someone\nelse, and he was horrified at it.\n\nHe did not undress, but walked up and down with his regular tread over\nthe resounding parquet of the dining room, where one lamp was burning,\nover the carpet of the dark drawing room, in which the light was\nreflected on the big new portrait of himself hanging over the sofa, and\nacross her boudoir, where two candles burned, lighting up the portraits\nof her parents and woman friends, and the pretty knick-knacks of her\nwriting table, that he knew so well. He walked across her boudoir to the\nbedroom door, and turned back again. At each turn in his walk,\nespecially at the parquet of the lighted dining room, he halted and said\nto himself, \"Yes, this I must decide and put a stop to; I must express\nmy view of it and my decision.\" And he turned back again. \"But express\nwhat--what decision?\" he said to himself in the drawing room, and he\nfound no reply. \"But after all,\" he asked himself before turning into\nthe boudoir, \"what has occurred? Nothing. She was talking a long while\nwith him. But what of that? Surely women in society can talk to whom\nthey please. And then, jealousy means lowering both myself and her,\" he\ntold himself as he went into her boudoir; but this dictum, which had\nalways had such weight with him before, had now no weight and no meaning\nat all. And from the bedroom door he turned back again; but as he\nentered the dark drawing room some inner voice told him that it was not\nso, and that if others noticed it that showed that there was something.\nAnd he said to himself again in the dining room, \"Yes, I must decide and\nput a stop to it, and express my view of it...\" And again at the turn in\nthe drawing room he asked himself, \"Decide how?\" And again he asked\nhimself, \"What had occurred?\" and answered, \"Nothing,\" and recollected\nthat jealousy was a feeling insulting to his wife; but again in the\ndrawing room he was convinced that something had happened. His thoughts,\nlike his body, went round a complete circle, without coming upon\nanything new. He noticed this, rubbed his forehead, and sat down in her\nboudoir.\n\nThere, looking at her table, with the malachite blotting case lying at\nthe top and an unfinished letter, his thoughts suddenly changed. He\nbegan to think of her, of what she was thinking and feeling. For the\nfirst time he pictured vividly to himself her personal life, her ideas,\nher desires, and the idea that she could and should have a separate life\nof her own seemed to him so alarming that he made haste to dispel it. It\nwas the chasm which he was afraid to peep into. To put himself in\nthought and feeling in another person's place was a spiritual exercise\nnot natural to Alexey Alexandrovitch. He looked on this spiritual\nexercise as a harmful and dangerous abuse of the fancy.\n\n\"And the worst of it all,\" thought he, \"is that just now, at the very\nmoment when my great work is approaching completion\" (he was thinking of\nthe project he was bringing forward at the time), \"when I stand in need\nof all my mental peace and all my energies, just now this stupid worry\nshould fall foul of me. But what's to be done? I'm not one of those men\nwho submit to uneasiness and worry without having the force of character\nto face them.\n\n\"I must think it over, come to a decision, and put it out of my mind,\"\nhe said aloud.\n\n\"The question of her feelings, of what has passed and may be passing in\nher soul, that's not my affair; that's the affair of her conscience, and\nfalls under the head of religion,\" he said to himself, feeling\nconsolation in the sense that he had found to which division of\nregulating principles this new circumstance could be properly referred.\n\n\"And so,\" Alexey Alexandrovitch said to himself, \"questions as to her\nfeelings, and so on, are questions for her conscience, with which I can\nhave nothing to do. My duty is clearly defined. As the head of the\nfamily, I am a person bound in duty to guide her, and consequently, in\npart the person responsible; I am bound to point out the danger I\nperceive, to warn her, even to use my authority. I ought to speak\nplainly to her.\" And everything that he would say tonight to his wife\ntook clear shape in Alexey Alexandrovitch's head. Thinking over what he\nwould say, he somewhat regretted that he should have to use his time and\nmental powers for domestic consumption, with so little to show for it,\nbut, in spite of that, the form and contents of the speech before him\nshaped itself as clearly and distinctly in his head as a ministerial\nreport.\n\n\"I must say and express fully the following points: first, exposition of\nthe value to be attached to public opinion and to decorum; secondly,\nexposition of religious significance of marriage; thirdly, if need be,\nreference to the calamity possibly ensuing to our son; fourthly,\nreference to the unhappiness likely to result to herself.\" And,\ninterlacing his fingers, Alexey Alexandrovitch stretched them, and the\njoints of the fingers cracked. This trick, a bad habit, the cracking of\nhis fingers, always soothed him, and gave precision to his thoughts, so\nneedful to him at this juncture.\n\nThere was the sound of a carriage driving up to the front door. Alexey\nAlexandrovitch halted in the middle of the room.\n\nA woman's step was heard mounting the stairs. Alexey Alexandrovitch,\nready for his speech, stood compressing his crossed fingers, waiting to\nsee if the crack would not come again. One joint cracked.\n\nAlready, from the sound of light steps on the stairs, he was aware that\nshe was close, and though he was satisfied with his speech, he felt\nfrightened of the explanation confronting him...\n\n\n\nChapter 9\n\n\nAnna came in with hanging head, playing with the tassels of her hood.\nHer face was brilliant and glowing; but this glow was not one of\nbrightness; it suggested the fearful glow of a conflagration in the\nmidst of a dark night. On seeing her husband, Anna raised her head and\nsmiled, as though she had just waked up.\n\n\"You're not in bed? What a wonder!\" she said, letting fall her hood, and\nwithout stopping, she went on into the dressing room. \"It's late, Alexey\nAlexandrovitch,\" she said, when she had gone through the doorway.\n\n\"Anna, it's necessary for me to have a talk with you.\"\n\n\"With me?\" she said, wonderingly. She came out from behind the door of\nthe dressing room, and looked at him. \"Why, what is it? What about?\" she\nasked, sitting down. \"Well, let's talk, if it's so necessary. But it\nwould be better to get to sleep.\"\n\nAnna said what came to her lips, and marveled, hearing herself, at her\nown capacity for lying. How simple and natural were her words, and how\nlikely that she was simply sleepy! She felt herself clad in an\nimpenetrable armor of falsehood. She felt that some unseen force had\ncome to her aid and was supporting her.\n\n\"Anna, I must warn you,\" he began.\n\n\"Warn me?\" she said. \"Of what?\"\n\nShe looked at him so simply, so brightly, that anyone who did not know\nher as her husband knew her could not have noticed anything unnatural,\neither in the sound or the sense of her words. But to him, knowing her,\nknowing that whenever he went to bed five minutes later than usual, she\nnoticed it, and asked him the reason; to him, knowing that every joy,\nevery pleasure and pain that she felt she communicated to him at once;\nto him, now to see that she did not care to notice his state of mind,\nthat she did not care to say a word about herself, meant a great deal.\nHe saw that the inmost recesses of her soul, that had always hitherto\nlain open before him, were closed against him. More than that, he saw\nfrom her tone that she was not even perturbed at that, but as it were\nsaid straight out to him: \"Yes, it's shut up, and so it must be, and\nwill be in future.\" Now he experienced a feeling such as a man might\nhave, returning home and finding his own house locked up. \"But perhaps\nthe key may yet be found,\" thought Alexey Alexandrovitch.\n\n\"I want to warn you,\" he said in a low voice, \"that through\nthoughtlessness and lack of caution you may cause yourself to be talked\nabout in society. Your too animated conversation this evening with Count\nVronsky\" (he enunciated the name firmly and with deliberate emphasis)\n\"attracted attention.\"\n\nHe talked and looked at her laughing eyes, which frightened him now with\ntheir impenetrable look, and, as he talked, he felt all the uselessness\nand idleness of his words.\n\n\"You're always like that,\" she answered, as though completely\nmisapprehending him, and of all he had said only taking in the last\nphrase. \"One time you don't like my being dull, and another time you\ndon't like my being lively. I wasn't dull. Does that offend you?\"\n\nAlexey Alexandrovitch shivered, and bent his hands to make the joints\ncrack.\n\n\"Oh, please, don't do that, I do so dislike it,\" she said.\n\n\"Anna, is this you?\" said Alexey Alexandrovitch, quietly making an\neffort over himself, and restraining the motion of his fingers.\n\n\"But what is it all about?\" she said, with such genuine and droll\nwonder. \"What do you want of me?\"\n\nAlexey Alexandrovitch paused, and rubbed his forehead and his eyes. He\nsaw that instead of doing as he had intended--that is to say, warning\nhis wife against a mistake in the eyes of the world--he had\nunconsciously become agitated over what was the affair of her\nconscience, and was struggling against the barrier he fancied between\nthem.\n\n\"This is what I meant to say to you,\" he went on coldly and composedly,\n\"and I beg you to listen to it. I consider jealousy, as you know, a\nhumiliating and degrading feeling, and I shall never allow myself to be\ninfluenced by it; but there are certain rules of decorum which cannot be\ndisregarded with impunity. This evening it was not I observed it, but\njudging by the impression made on the company, everyone observed that\nyour conduct and deportment were not altogether what could be desired.\"\n\n\"I positively don't understand,\" said Anna, shrugging her shoulders--\"He\ndoesn't care,\" she thought. \"But other people noticed it, and that's\nwhat upsets him.\"--\"You're not well, Alexey Alexandrovitch,\" she added,\nand she got up, and would have gone towards the door; but he moved\nforward as though he would stop her.\n\nHis face was ugly and forbidding, as Anna had never seen him. She\nstopped, and bending her head back and on one side, began with her rapid\nhand taking out her hairpins.\n\n\"Well, I'm listening to what's to come,\" she said, calmly and\nironically; \"and indeed I listen with interest, for I should like to\nunderstand what's the matter.\"\n\nShe spoke, and marveled at the confident, calm, and natural tone in\nwhich she was speaking, and the choice of the words she used.\n\n\"To enter into all the details of your feelings I have no right, and\nbesides, I regard that as useless and even harmful,\" began Alexey\nAlexandrovitch. \"Ferreting in one's soul, one often ferrets out\nsomething that might have lain there unnoticed. Your feelings are an\naffair of your own conscience; but I am in duty bound to you, to myself,\nand to God, to point out to you your duties. Our life has been joined,\nnot by man, but by God. That union can only be severed by a crime, and a\ncrime of that nature brings its own chastisement.\"\n\n\"I don't understand a word. And, oh dear! how sleepy I am, unluckily,\"\nshe said, rapidly passing her hand through her hair, feeling for the\nremaining hairpins.\n\n\"Anna, for God's sake don't speak like that!\" he said gently. \"Perhaps I\nam mistaken, but believe me, what I say, I say as much for myself as for\nyou. I am your husband, and I love you.\"\n\nFor an instant her face fell, and the mocking gleam in her eyes died\naway; but the word _love_ threw her into revolt again. She thought:\n\"Love? Can he love? If he hadn't heard there was such a thing as love,\nhe would never have used the word. He doesn't even know what love is.\"\n\n\"Alexey Alexandrovitch, really I don't understand,\" she said. \"Define\nwhat it is you find...\"\n\n\"Pardon, let me say all I have to say. I love you. But I am not speaking\nof myself; the most important persons in this matter are our son and\nyourself. It may very well be, I repeat, that my words seem to you\nutterly unnecessary and out of place; it may be that they are called\nforth by my mistaken impression. In that case, I beg you to forgive me.\nBut if you are conscious yourself of even the smallest foundation for\nthem, then I beg you to think a little, and if your heart prompts you,\nto speak out to me...\"\n\nAlexey Alexandrovitch was unconsciously saying something utterly unlike\nwhat he had prepared.\n\n\"I have nothing to say. And besides,\" she said hurriedly, with\ndifficulty repressing a smile, \"it's really time to be in bed.\"\n\nAlexey Alexandrovitch sighed, and, without saying more, went into the\nbedroom.\n\nWhen she came into the bedroom, he was already in bed. His lips were\nsternly compressed, and his eyes looked away from her. Anna got into her\nbed, and lay expecting every minute that he would begin to speak to her\nagain. She both feared his speaking and wished for it. But he was\nsilent. She waited for a long while without moving, and had forgotten\nabout him. She thought of that other; she pictured him, and felt how her\nheart was flooded with emotion and guilty delight at the thought of him.\nSuddenly she heard an even, tranquil snore. For the first instant Alexey\nAlexandrovitch seemed, as it were, appalled at his own snoring, and\nceased; but after an interval of two breathings the snore sounded again,\nwith a new tranquil rhythm.\n\n\"It's late, it's late,\" she whispered with a smile. A long while she\nlay, not moving, with open eyes, whose brilliance she almost fancied she\ncould herself see in the darkness.\n\n\n\nChapter 10\n\n\nFrom that time a new life began for Alexey Alexandrovitch and for his\nwife. Nothing special happened. Anna went out into society, as she had\nalways done, was particularly often at Princess Betsy's, and met Vronsky\neverywhere. Alexey Alexandrovitch saw this, but could do nothing. All\nhis efforts to draw her into open discussion she confronted with a\nbarrier which he could not penetrate, made up of a sort of amused\nperplexity. Outwardly everything was the same, but their inner relations\nwere completely changed. Alexey Alexandrovitch, a man of great power in\nthe world of politics, felt himself helpless in this. Like an ox with\nhead bent, submissively he awaited the blow which he felt was lifted\nover him. Every time he began to think about it, he felt that he must\ntry once more, that by kindness, tenderness, and persuasion there was\nstill hope of saving her, of bringing her back to herself, and every day\nhe made ready to talk to her. But every time he began talking to her, he\nfelt that the spirit of evil and deceit, which had taken possession of\nher, had possession of him too, and he talked to her in a tone quite\nunlike that in which he had meant to talk. Involuntarily he talked to\nher in his habitual tone of jeering at anyone who should say what he was\nsaying. And in that tone it was impossible to say what needed to be said\nto her.\n\n\n\nChapter 11\n\n\nThat which for Vronsky had been almost a whole year the one absorbing\ndesire of his life, replacing all his old desires; that which for Anna\nhad been an impossible, terrible, and even for that reason more\nentrancing dream of bliss, that desire had been fulfilled. He stood\nbefore her, pale, his lower jaw quivering, and besought her to be calm,\nnot knowing how or why.\n\n\"Anna! Anna!\" he said with a choking voice, \"Anna, for pity's sake!...\"\n\nBut the louder he spoke, the lower she dropped her once proud and gay,\nnow shame-stricken head, and she bowed down and sank from the sofa where\nshe was sitting, down on the floor, at his feet; she would have fallen\non the carpet if he had not held her.\n\n\"My God! Forgive me!\" she said, sobbing, pressing his hands to her\nbosom.\n\nShe felt so sinful, so guilty, that nothing was left her but to\nhumiliate herself and beg forgiveness; and as now there was no one in\nher life but him, to him she addressed her prayer for forgiveness.\nLooking at him, she had a physical sense of her humiliation, and she\ncould say nothing more. He felt what a murderer must feel, when he sees\nthe body he has robbed of life. That body, robbed by him of life, was\ntheir love, the first stage of their love. There was something awful and\nrevolting in the memory of what had been bought at this fearful price of\nshame. Shame at their spiritual nakedness crushed her and infected him.\nBut in spite of all the murderer's horror before the body of his victim,\nhe must hack it to pieces, hide the body, must use what he has gained by\nhis murder.\n\nAnd with fury, as it were with passion, the murderer falls on the body,\nand drags it and hacks at it; so he covered her face and shoulders with\nkisses. She held his hand, and did not stir. \"Yes, these kisses--that is\nwhat has been bought by this shame. Yes, and one hand, which will always\nbe mine--the hand of my accomplice.\" She lifted up that hand and kissed\nit. He sank on his knees and tried to see her face; but she hid it, and\nsaid nothing. At last, as though making an effort over herself, she got\nup and pushed him away. Her face was still as beautiful, but it was only\nthe more pitiful for that.\n\n\"All is over,\" she said; \"I have nothing but you. Remember that.\"\n\n\"I can never forget what is my whole life. For one instant of this\nhappiness...\"\n\n\"Happiness!\" she said with horror and loathing and her horror\nunconsciously infected him. \"For pity's sake, not a word, not a word\nmore.\"\n\nShe rose quickly and moved away from him.\n\n\"Not a word more,\" she repeated, and with a look of chill despair,\nincomprehensible to him, she parted from him. She felt that at that\nmoment she could not put into words the sense of shame, of rapture, and\nof horror at this stepping into a new life, and she did not want to\nspeak of it, to vulgarize this feeling by inappropriate words. But later\ntoo, and the next day and the third day, she still found no words in\nwhich she could express the complexity of her feelings; indeed, she\ncould not even find thoughts in which she could clearly think out all\nthat was in her soul.\n\nShe said to herself: \"No, just now I can't think of it, later on, when I\nam calmer.\" But this calm for thought never came; every time the thought\nrose of what she had done and what would happen to her, and what she\nought to do, a horror came over her and she drove those thoughts away.\n\n\"Later, later,\" she said--\"when I am calmer.\"\n\nBut in dreams, when she had no control over her thoughts, her position\npresented itself to her in all its hideous nakedness. One dream haunted\nher almost every night. She dreamed that both were her husbands at once,\nthat both were lavishing caresses on her. Alexey Alexandrovitch was\nweeping, kissing her hands, and saying, \"How happy we are now!\" And\nAlexey Vronsky was there too, and he too was her husband. And she was\nmarveling that it had once seemed impossible to her, was explaining to\nthem, laughing, that this was ever so much simpler, and that now both of\nthem were happy and contented. But this dream weighed on her like a\nnightmare, and she awoke from it in terror.\n\n\n\nChapter 12\n\n\nIn the early days after his return from Moscow, whenever Levin shuddered\nand grew red, remembering the disgrace of his rejection, he said to\nhimself: \"This was just how I used to shudder and blush, thinking myself\nutterly lost, when I was plucked in physics and did not get my remove;\nand how I thought myself utterly ruined after I had mismanaged that\naffair of my sister's that was entrusted to me. And yet, now that years\nhave passed, I recall it and wonder that it could distress me so much.\nIt will be the same thing too with this trouble. Time will go by and I\nshall not mind about this either.\"\n\nBut three months had passed and he had not left off minding about it;\nand it was as painful for him to think of it as it had been those first\ndays. He could not be at peace because after dreaming so long of family\nlife, and feeling himself so ripe for it, he was still not married, and\nwas further than ever from marriage. He was painfully conscious himself,\nas were all about him, that at his years it is not well for man to be\nalone. He remembered how before starting for Moscow he had once said to\nhis cowman Nikolay, a simple-hearted peasant, whom he liked talking to:\n\"Well, Nikolay! I mean to get married,\" and how Nikolay had promptly\nanswered, as of a matter on which there could be no possible doubt: \"And\nhigh time too, Konstantin Demitrievitch.\" But marriage had now become\nfurther off than ever. The place was taken, and whenever he tried to\nimagine any of the girls he knew in that place, he felt that it was\nutterly impossible. Moreover, the recollection of the rejection and the\npart he had played in the affair tortured him with shame. However often\nhe told himself that he was in no wise to blame in it, that\nrecollection, like other humiliating reminiscences of a similar kind,\nmade him twinge and blush. There had been in his past, as in every\nman's, actions, recognized by him as bad, for which his conscience ought\nto have tormented him; but the memory of these evil actions was far from\ncausing him so much suffering as those trivial but humiliating\nreminiscences. These wounds never healed. And with these memories was\nnow ranged his rejection and the pitiful position in which he must have\nappeared to others that evening. But time and work did their part.\nBitter memories were more and more covered up by the incidents--paltry\nin his eyes, but really important--of his country life. Every week he\nthought less often of Kitty. He was impatiently looking forward to the\nnews that she was married, or just going to be married, hoping that such\nnews would, like having a tooth out, completely cure him.\n\nMeanwhile spring came on, beautiful and kindly, without the delays and\ntreacheries of spring,--one of those rare springs in which plants,\nbeasts, and man rejoice alike. This lovely spring roused Levin still\nmore, and strengthened him in his resolution of renouncing all his past\nand building up his lonely life firmly and independently. Though many of\nthe plans with which he had returned to the country had not been carried\nout, still his most important resolution--that of purity--had been kept\nby him. He was free from that shame, which had usually harassed him\nafter a fall; and he could look everyone straight in the face. In\nFebruary he had received a letter from Marya Nikolaevna telling him that\nhis brother Nikolay's health was getting worse, but that he would not\ntake advice, and in consequence of this letter Levin went to Moscow to\nhis brother's and succeeded in persuading him to see a doctor and to go\nto a watering-place abroad. He succeeded so well in persuading his\nbrother, and in lending him money for the journey without irritating\nhim, that he was satisfied with himself in that matter. In addition to\nhis farming, which called for special attention in spring, and in\naddition to reading, Levin had begun that winter a work on agriculture,\nthe plan of which turned on taking into account the character of the\nlaborer on the land as one of the unalterable data of the question, like\nthe climate and the soil, and consequently deducing all the principles\nof scientific culture, not simply from the data of soil and climate, but\nfrom the data of soil, climate, and a certain unalterable character of\nthe laborer. Thus, in spite of his solitude, or in consequence of his\nsolitude, his life was exceedingly full. Only rarely he suffered from an\nunsatisfied desire to communicate his stray ideas to someone besides\nAgafea Mihalovna. With her indeed he not infrequently fell into\ndiscussion upon physics, the theory of agriculture, and especially\nphilosophy; philosophy was Agafea Mihalovna's favorite subject.\n\nSpring was slow in unfolding. For the last few weeks it had been\nsteadily fine frosty weather. In the daytime it thawed in the sun, but\nat night there were even seven degrees of frost. There was such a frozen\nsurface on the snow that they drove the wagons anywhere off the roads.\nEaster came in the snow. Then all of a sudden, on Easter Monday, a warm\nwind sprang up, storm clouds swooped down, and for three days and three\nnights the warm, driving rain fell in streams. On Thursday the wind\ndropped, and a thick gray fog brooded over the land as though hiding the\nmysteries of the transformations that were being wrought in nature.\nBehind the fog there was the flowing of water, the cracking and floating\nof ice, the swift rush of turbid, foaming torrents; and on the following\nMonday, in the evening, the fog parted, the storm clouds split up into\nlittle curling crests of cloud, the sky cleared, and the real spring had\ncome. In the morning the sun rose brilliant and quickly wore away the\nthin layer of ice that covered the water, and all the warm air was\nquivering with the steam that rose up from the quickened earth. The old\ngrass looked greener, and the young grass thrust up its tiny blades; the\nbuds of the guelder-rose and of the currant and the sticky birch-buds\nwere swollen with sap, and an exploring bee was humming about the golden\nblossoms that studded the willow. Larks trilled unseen above the velvety\ngreen fields and the ice-covered stubble-land; peewits wailed over the\nlow lands and marshes flooded by the pools; cranes and wild geese flew\nhigh across the sky uttering their spring calls. The cattle, bald in\npatches where the new hair had not grown yet, lowed in the pastures; the\nbowlegged lambs frisked round their bleating mothers. Nimble children\nran about the drying paths, covered with the prints of bare feet. There\nwas a merry chatter of peasant women over their linen at the pond, and\nthe ring of axes in the yard, where the peasants were repairing ploughs\nand harrows. The real spring had come.\n\n\n\nChapter 13\n\n\nLevin put on his big boots, and, for the first time, a cloth jacket,\ninstead of his fur cloak, and went out to look after his farm, stepping\nover streams of water that flashed in the sunshine and dazzled his eyes,\nand treading one minute on ice and the next into sticky mud.\n\nSpring is the time of plans and projects. And, as he came out into the\nfarmyard, Levin, like a tree in spring that knows not what form will be\ntaken by the young shoots and twigs imprisoned in its swelling buds,\nhardly knew what undertakings he was going to begin upon now in the farm\nwork that was so dear to him. But he felt that he was full of the most\nsplendid plans and projects. First of all he went to the cattle. The\ncows had been let out into their paddock, and their smooth sides were\nalready shining with their new, sleek, spring coats; they basked in the\nsunshine and lowed to go to the meadow. Levin gazed admiringly at the\ncows he knew so intimately to the minutest detail of their condition,\nand gave orders for them to be driven out into the meadow, and the\ncalves to be let into the paddock. The herdsman ran gaily to get ready\nfor the meadow. The cowherd girls, picking up their petticoats, ran\nsplashing through the mud with bare legs, still white, not yet brown\nfrom the sun, waving brush wood in their hands, chasing the calves that\nfrolicked in the mirth of spring.\n\nAfter admiring the young ones of that year, who were particularly\nfine--the early calves were the size of a peasant's cow, and Pava's\ndaughter, at three months old, was as big as a yearling--Levin gave\norders for a trough to be brought out and for them to be fed in the\npaddock. But it appeared that as the paddock had not been used during\nthe winter, the hurdles made in the autumn for it were broken. He sent\nfor the carpenter, who, according to his orders, ought to have been at\nwork at the thrashing machine. But it appeared that the carpenter was\nrepairing the harrows, which ought to have been repaired before Lent.\nThis was very annoying to Levin. It was annoying to come upon that\neverlasting slovenliness in the farm work against which he had been\nstriving with all his might for so many years. The hurdles, as he\nascertained, being not wanted in winter, had been carried to the\ncart-horses' stable; and there broken, as they were of light\nconstruction, only meant for feeding calves. Moreover, it was apparent\nalso that the harrows and all the agricultural implements, which he had\ndirected to be looked over and repaired in the winter, for which very\npurpose he had hired three carpenters, had not been put into repair, and\nthe harrows were being repaired when they ought to have been harrowing\nthe field. Levin sent for his bailiff, but immediately went off himself\nto look for him. The bailiff, beaming all over, like everyone that day,\nin a sheepskin bordered with astrachan, came out of the barn, twisting a\nbit of straw in his hands.\n\n\"Why isn't the carpenter at the thrashing machine?\"\n\n\"Oh, I meant to tell you yesterday, the harrows want repairing. Here\nit's time they got to work in the fields.\"\n\n\"But what were they doing in the winter, then?\"\n\n\"But what did you want the carpenter for?\"\n\n\"Where are the hurdles for the calves' paddock?\"\n\n\"I ordered them to be got ready. What would you have with those\npeasants!\" said the bailiff, with a wave of his hand.\n\n\"It's not those peasants but this bailiff!\" said Levin, getting angry.\n\"Why, what do I keep you for?\" he cried. But, bethinking himself that\nthis would not help matters, he stopped short in the middle of a\nsentence, and merely sighed. \"Well, what do you say? Can sowing begin?\"\nhe asked, after a pause.\n\n\"Behind Turkin tomorrow or the next day they might begin.\"\n\n\"And the clover?\"\n\n\"I've sent Vassily and Mishka; they're sowing. Only I don't know if\nthey'll manage to get through; it's so slushy.\"\n\n\"How many acres?\"\n\n\"About fifteen.\"\n\n\"Why not sow all?\" cried Levin.\n\nThat they were only sowing the clover on fifteen acres, not on all the\nforty-five, was still more annoying to him. Clover, as he knew, both\nfrom books and from his own experience, never did well except when it\nwas sown as early as possible, almost in the snow. And yet Levin could\nnever get this done.\n\n\"There's no one to send. What would you have with such a set of\npeasants? Three haven't turned up. And there's Semyon...\"\n\n\"Well, you should have taken some men from the thatching.\"\n\n\"And so I have, as it is.\"\n\n\"Where are the peasants, then?\"\n\n\"Five are making compote\" (which meant compost), \"four are shifting the\noats for fear of a touch of mildew, Konstantin Dmitrievitch.\"\n\nLevin knew very well that \"a touch of mildew\" meant that his English\nseed oats were already ruined. Again they had not done as he had\nordered.\n\n\"Why, but I told you during Lent to put in pipes,\" he cried.\n\n\"Don't put yourself out; we shall get it all done in time.\"\n\nLevin waved his hand angrily, went into the granary to glance at the\noats, and then to the stable. The oats were not yet spoiled. But the\npeasants were carrying the oats in spades when they might simply let\nthem slide down into the lower granary; and arranging for this to be\ndone, and taking two workmen from there for sowing clover, Levin got\nover his vexation with the bailiff. Indeed, it was such a lovely day\nthat one could not be angry.\n\n\"Ignat!\" he called to the coachman, who, with his sleeves tucked up, was\nwashing the carriage wheels, \"saddle me...\"\n\n\"Which, sir?\"\n\n\"Well, let it be Kolpik.\"\n\n\"Yes, sir.\"\n\nWhile they were saddling his horse, Levin again called up the bailiff,\nwho was hanging about in sight, to make it up with him, and began\ntalking to him about the spring operations before them, and his plans\nfor the farm.\n\nThe wagons were to begin carting manure earlier, so as to get all done\nbefore the early mowing. And the ploughing of the further land to go on\nwithout a break so as to let it ripen lying fallow. And the mowing to be\nall done by hired labor, not on half-profits. The bailiff listened\nattentively, and obviously made an effort to approve of his employer's\nprojects. But still he had that look Levin knew so well that always\nirritated him, a look of hopelessness and despondency. That look said:\n\"That's all very well, but as God wills.\"\n\nNothing mortified Levin so much as that tone. But it was the tone common\nto all the bailiffs he had ever had. They had all taken up that attitude\nto his plans, and so now he was not angered by it, but mortified, and\nfelt all the more roused to struggle against this, as it seemed,\nelemental force continually ranged against him, for which he could find\nno other expression than \"as God wills.\"\n\n\"If we can manage it, Konstantin Dmitrievitch,\" said the bailiff.\n\n\"Why ever shouldn't you manage it?\"\n\n\"We positively must have another fifteen laborers. And they don't turn\nup. There were some here today asking seventy roubles for the summer.\"\n\nLevin was silent. Again he was brought face to face with that opposing\nforce. He knew that however much they tried, they could not hire more\nthan forty--thirty-seven perhaps or thirty-eight--laborers for a\nreasonable sum. Some forty had been taken on, and there were no more.\nBut still he could not help struggling against it.\n\n\"Send to Sury, to Tchefirovka; if they don't come we must look for\nthem.\"\n\n\"Oh, I'll send, to be sure,\" said Vassily Fedorovitch despondently. \"But\nthere are the horses, too, they're not good for much.\"\n\n\"We'll get some more. I know, of course,\" Levin added laughing, \"you\nalways want to do with as little and as poor quality as possible; but\nthis year I'm not going to let you have things your own way. I'll see to\neverything myself.\"\n\n\"Why, I don't think you take much rest as it is. It cheers us up to work\nunder the master's eye...\"\n\n\"So they're sowing clover behind the Birch Dale? I'll go and have a look\nat them,\" he said, getting on to the little bay cob, Kolpik, who was led\nup by the coachman.\n\n\"You can't get across the streams, Konstantin Dmitrievitch,\" the\ncoachman shouted.\n\n\"All right, I'll go by the forest.\"\n\nAnd Levin rode through the slush of the farmyard to the gate and out\ninto the open country, his good little horse, after his long inactivity,\nstepping out gallantly, snorting over the pools, and asking, as it were,\nfor guidance. If Levin had felt happy before in the cattle pens and\nfarmyard, he felt happier yet in the open country. Swaying rhythmically\nwith the ambling paces of his good little cob, drinking in the warm yet\nfresh scent of the snow and the air, as he rode through his forest over\nthe crumbling, wasted snow, still left in parts, and covered with\ndissolving tracks, he rejoiced over every tree, with the moss reviving\non its bark and the buds swelling on its shoots. When he came out of the\nforest, in the immense plain before him, his grass fields stretched in\nan unbroken carpet of green, without one bare place or swamp, only\nspotted here and there in the hollows with patches of melting snow. He\nwas not put out of temper even by the sight of the peasants' horses and\ncolts trampling down his young grass (he told a peasant he met to drive\nthem out), nor by the sarcastic and stupid reply of the peasant Ipat,\nwhom he met on the way, and asked, \"Well, Ipat, shall we soon be\nsowing?\" \"We must get the ploughing done first, Konstantin\nDmitrievitch,\" answered Ipat. The further he rode, the happier he\nbecame, and plans for the land rose to his mind each better than the\nlast; to plant all his fields with hedges along the southern borders, so\nthat the snow should not lie under them; to divide them up into six\nfields of arable and three of pasture and hay; to build a cattle yard at\nthe further end of the estate, and to dig a pond and to construct\nmovable pens for the cattle as a means of manuring the land. And then\neight hundred acres of wheat, three hundred of potatoes, and four\nhundred of clover, and not one acre exhausted.\n\nAbsorbed in such dreams, carefully keeping his horse by the hedges, so\nas not to trample his young crops, he rode up to the laborers who had\nbeen sent to sow clover. A cart with the seed in it was standing, not at\nthe edge, but in the middle of the crop, and the winter corn had been\ntorn up by the wheels and trampled by the horse. Both the laborers were\nsitting in the hedge, probably smoking a pipe together. The earth in the\ncart, with which the seed was mixed, was not crushed to powder, but\ncrusted together or adhering in clods. Seeing the master, the laborer,\nVassily, went towards the cart, while Mishka set to work sowing. This\nwas not as it should be, but with the laborers Levin seldom lost his\ntemper. When Vassily came up, Levin told him to lead the horse to the\nhedge.\n\n\"It's all right, sir, it'll spring up again,\" responded Vassily.\n\n\"Please don't argue,\" said Levin, \"but do as you're told.\"\n\n\"Yes, sir,\" answered Vassily, and he took the horse's head. \"What a\nsowing, Konstantin Dmitrievitch,\" he said, hesitating; \"first rate. Only\nit's a work to get about! You drag a ton of earth on your shoes.\"\n\n\"Why is it you have earth that's not sifted?\" said Levin.\n\n\"Well, we crumble it up,\" answered Vassily, taking up some seed and\nrolling the earth in his palms.\n\nVassily was not to blame for their having filled up his cart with\nunsifted earth, but still it was annoying.\n\nLevin had more than once already tried a way he knew for stifling his\nanger, and turning all that seemed dark right again, and he tried that\nway now. He watched how Mishka strode along, swinging the huge clods of\nearth that clung to each foot; and getting off his horse, he took the\nsieve from Vassily and started sowing himself.\n\n\"Where did you stop?\"\n\nVassily pointed to the mark with his foot, and Levin went forward as\nbest he could, scattering the seed on the land. Walking was as difficult\nas on a bog, and by the time Levin had ended the row he was in a great\nheat, and he stopped and gave up the sieve to Vassily.\n\n\"Well, master, when summer's here, mind you don't scold me for these\nrows,\" said Vassily.\n\n\"Eh?\" said Levin cheerily, already feeling the effect of his method.\n\n\"Why, you'll see in the summer time. It'll look different. Look you\nwhere I sowed last spring. How I did work at it! I do my best,\nKonstantin Dmitrievitch, d'ye see, as I would for my own father. I don't\nlike bad work myself, nor would I let another man do it. What's good for\nthe master's good for us too. To look out yonder now,\" said Vassily,\npointing, \"it does one's heart good.\"\n\n\"It's a lovely spring, Vassily.\"\n\n\"Why, it's a spring such as the old men don't remember the like of. I\nwas up home; an old man up there has sown wheat too, about an acre of\nit. He was saying you wouldn't know it from rye.\"\n\n\"Have you been sowing wheat long?\"\n\n\"Why, sir, it was you taught us the year before last. You gave me two\nmeasures. We sold about eight bushels and sowed a rood.\"\n\n\"Well, mind you crumble up the clods,\" said Levin, going towards his\nhorse, \"and keep an eye on Mishka. And if there's a good crop you shall\nhave half a rouble for every acre.\"\n\n\"Humbly thankful. We are very well content, sir, as it is.\"\n\nLevin got on his horse and rode towards the field where was last year's\nclover, and the one which was ploughed ready for the spring corn.\n\nThe crop of clover coming up in the stubble was magnificent. It had\nsurvived everything, and stood up vividly green through the broken\nstalks of last year's wheat. The horse sank in up to the pasterns, and\nhe drew each hoof with a sucking sound out of the half-thawed ground.\nOver the ploughland riding was utterly impossible; the horse could only\nkeep a foothold where there was ice, and in the thawing furrows he sank\ndeep in at each step. The ploughland was in splendid condition; in a\ncouple of days it would be fit for harrowing and sowing. Everything was\ncapital, everything was cheering. Levin rode back across the streams,\nhoping the water would have gone down. And he did in fact get across,\nand startled two ducks. \"There must be snipe too,\" he thought, and just\nas he reached the turning homewards he met the forest keeper, who\nconfirmed his theory about the snipe.\n\nLevin went home at a trot, so as to have time to eat his dinner and get\nhis gun ready for the evening.\n\n\n\nChapter 14\n\n\nAs he rode up to the house in the happiest frame of mind, Levin heard\nthe bell ring at the side of the principal entrance of the house.\n\n\"Yes, that's someone from the railway station,\" he thought, \"just the\ntime to be here from the Moscow train ... Who could it be? What if it's\nbrother Nikolay? He did say: 'Maybe I'll go to the waters, or maybe I'll\ncome down to you.'\" He felt dismayed and vexed for the first minute,\nthat his brother Nikolay's presence should come to disturb his happy\nmood of spring. But he felt ashamed of the feeling, and at once he\nopened, as it were, the arms of his soul, and with a softened feeling of\njoy and expectation, now he hoped with all his heart that it was his\nbrother. He pricked up his horse, and riding out from behind the acacias\nhe saw a hired three-horse sledge from the railway station, and a\ngentleman in a fur coat. It was not his brother. \"Oh, if it were only\nsome nice person one could talk to a little!\" he thought.\n\n\"Ah,\" cried Levin joyfully, flinging up both his hands. \"Here's a\ndelightful visitor! Ah, how glad I am to see you!\" he shouted,\nrecognizing Stepan Arkadyevitch.\n\n\"I shall find out for certain whether she's married, or when she's going\nto be married,\" he thought. And on that delicious spring day he felt\nthat the thought of her did not hurt him at all.\n\n\"Well, you didn't expect me, eh?\" said Stepan Arkadyevitch, getting out\nof the sledge, splashed with mud on the bridge of his nose, on his\ncheek, and on his eyebrows, but radiant with health and good spirits.\n\"I've come to see you in the first place,\" he said, embracing and\nkissing him, \"to have some stand-shooting second, and to sell the forest\nat Ergushovo third.\"\n\n\"Delightful! What a spring we're having! How ever did you get along in a\nsledge?\"\n\n\"In a cart it would have been worse still, Konstantin Dmitrievitch,\"\nanswered the driver, who knew him.\n\n\"Well, I'm very, very glad to see you,\" said Levin, with a genuine smile\nof childlike delight.\n\nLevin led his friend to the room set apart for visitors, where Stepan\nArkadyevitch's things were carried also--a bag, a gun in a case, a\nsatchel for cigars. Leaving him there to wash and change his clothes,\nLevin went off to the counting house to speak about the ploughing and\nclover. Agafea Mihalovna, always very anxious for the credit of the\nhouse, met him in the hall with inquiries about dinner.\n\n\"Do just as you like, only let it be as soon as possible,\" he said, and\nwent to the bailiff.\n\nWhen he came back, Stepan Arkadyevitch, washed and combed, came out of\nhis room with a beaming smile, and they went upstairs together.\n\n\"Well, I am glad I managed to get away to you! Now I shall understand\nwhat the mysterious business is that you are always absorbed in here.\nNo, really, I envy you. What a house, how nice it all is! So bright, so\ncheerful!\" said Stepan Arkadyevitch, forgetting that it was not always\nspring and fine weather like that day. \"And your nurse is simply\ncharming! A pretty maid in an apron might be even more agreeable,\nperhaps; but for your severe monastic style it does very well.\"\n\nStepan Arkadyevitch told him many interesting pieces of news; especially\ninteresting to Levin was the news that his brother, Sergey Ivanovitch,\nwas intending to pay him a visit in the summer.\n\nNot one word did Stepan Arkadyevitch say in reference to Kitty and the\nShtcherbatskys; he merely gave him greetings from his wife. Levin was\ngrateful to him for his delicacy and was very glad of his visitor. As\nalways happened with him during his solitude, a mass of ideas and\nfeelings had been accumulating within him, which he could not\ncommunicate to those about him. And now he poured out upon Stepan\nArkadyevitch his poetic joy in the spring, and his failures and plans\nfor the land, and his thoughts and criticisms on the books he had been\nreading, and the idea of his own book, the basis of which really was,\nthough he was unaware of it himself, a criticism of all the old books on\nagriculture. Stepan Arkadyevitch, always charming, understanding\neverything at the slightest reference, was particularly charming on this\nvisit, and Levin noticed in him a special tenderness, as it were, and a\nnew tone of respect that flattered him.\n\nThe efforts of Agafea Mihalovna and the cook, that the dinner should be\nparticularly good, only ended in the two famished friends attacking the\npreliminary course, eating a great deal of bread and butter, salt goose\nand salted mushrooms, and in Levin's finally ordering the soup to be\nserved without the accompaniment of little pies, with which the cook had\nparticularly meant to impress their visitor. But though Stepan\nArkadyevitch was accustomed to very different dinners, he thought\neverything excellent: the herb brandy, and the bread, and the butter,\nand above all the salt goose and the mushrooms, and the nettle soup, and\nthe chicken in white sauce, and the white Crimean wine--everything was\nsuperb and delicious.\n\n\"Splendid, splendid!\" he said, lighting a fat cigar after the roast. \"I\nfeel as if, coming to you, I had landed on a peaceful shore after the\nnoise and jolting of a steamer. And so you maintain that the laborer\nhimself is an element to be studied and to regulate the choice of\nmethods in agriculture. Of course, I'm an ignorant outsider; but I\nshould fancy theory and its application will have its influence on the\nlaborer too.\"\n\n\"Yes, but wait a bit. I'm not talking of political economy, I'm talking\nof the science of agriculture. It ought to be like the natural sciences,\nand to observe given phenomena and the laborer in his economic,\nethnographical...\"\n\nAt that instant Agafea Mihalovna came in with jam.\n\n\"Oh, Agafea Mihalovna,\" said Stepan Arkadyevitch, kissing the tips of\nhis plump fingers, \"what salt goose, what herb brandy!... What do you\nthink, isn't it time to start, Kostya?\" he added.\n\nLevin looked out of the window at the sun sinking behind the bare\ntree-tops of the forest.\n\n\"Yes, it's time,\" he said. \"Kouzma, get ready the trap,\" and he ran\ndownstairs.\n\nStepan Arkadyevitch, going down, carefully took the canvas cover off his\nvarnished gun case with his own hands, and opening it, began to get\nready his expensive new-fashioned gun. Kouzma, who already scented a big\ntip, never left Stepan Arkadyevitch's side, and put on him both his\nstockings and boots, a task which Stepan Arkadyevitch readily left him.\n\n\"Kostya, give orders that if the merchant Ryabinin comes ... I told him\nto come today, he's to be brought in and to wait for me...\"\n\n\"Why, do you mean to say you're selling the forest to Ryabinin?\"\n\n\"Yes. Do you know him?\"\n\n\"To be sure I do. I have had to do business with him, 'positively and\nconclusively.'\"\n\nStepan Arkadyevitch laughed. \"Positively and conclusively\" were the\nmerchant's favorite words.\n\n\"Yes, it's wonderfully funny the way he talks. She knows where her\nmaster's going!\" he added, patting Laska, who hung about Levin, whining\nand licking his hands, his boots, and his gun.\n\nThe trap was already at the steps when they went out.\n\n\"I told them to bring the trap round; or would you rather walk?\"\n\n\"No, we'd better drive,\" said Stepan Arkadyevitch, getting into the\ntrap. He sat down, tucked the tiger-skin rug round him, and lighted a\ncigar. \"How is it you don't smoke? A cigar is a sort of thing, not\nexactly a pleasure, but the crown and outward sign of pleasure. Come,\nthis is life! How splendid it is! This is how I should like to live!\"\n\n\"Why, who prevents you?\" said Levin, smiling.\n\n\"No, you're a lucky man! You've got everything you like. You like\nhorses--and you have them; dogs--you have them; shooting--you have it;\nfarming--you have it.\"\n\n\"Perhaps because I rejoice in what I have, and don't fret for what I\nhaven't,\" said Levin, thinking of Kitty.\n\nStepan Arkadyevitch comprehended, looked at him, but said nothing.\n\nLevin was grateful to Oblonsky for noticing, with his never-failing\ntact, that he dreaded conversation about the Shtcherbatskys, and so\nsaying nothing about them. But now Levin was longing to find out what\nwas tormenting him so, yet he had not the courage to begin.\n\n\"Come, tell me how things are going with you,\" said Levin, bethinking\nhimself that it was not nice of him to think only of himself.\n\nStepan Arkadyevitch's eyes sparkled merrily.\n\n\"You don't admit, I know, that one can be fond of new rolls when one has\nhad one's rations of bread--to your mind it's a crime; but I don't count\nlife as life without love,\" he said, taking Levin's question his own\nway. \"What am I to do? I'm made that way. And really, one does so little\nharm to anyone, and gives oneself so much pleasure...\"\n\n\"What! is there something new, then?\" queried Levin.\n\n\"Yes, my boy, there is! There, do you see, you know the type of Ossian's\nwomen.... Women, such as one sees in dreams.... Well, these women are\nsometimes to be met in reality ... and these women are terrible. Woman,\ndon't you know, is such a subject that however much you study it, it's\nalways perfectly new.\"\n\n\"Well, then, it would be better not to study it.\"\n\n\"No. Some mathematician has said that enjoyment lies in the search for\ntruth, not in the finding it.\"\n\nLevin listened in silence, and in spite of all the efforts he made, he\ncould not in the least enter into the feelings of his friend and\nunderstand his sentiments and the charm of studying such women.\n\n\n\nChapter 15\n\n\nThe place fixed on for the stand-shooting was not far above a stream in\na little aspen copse. On reaching the copse, Levin got out of the trap\nand led Oblonsky to a corner of a mossy, swampy glade, already quite\nfree from snow. He went back himself to a double birch tree on the other\nside, and leaning his gun on the fork of a dead lower branch, he took\noff his full overcoat, fastened his belt again, and worked his arms to\nsee if they were free.\n\nGray old Laska, who had followed them, sat down warily opposite him and\npricked up her ears. The sun was setting behind a thick forest, and in\nthe glow of sunset the birch trees, dotted about in the aspen copse,\nstood out clearly with their hanging twigs, and their buds swollen\nalmost to bursting.\n\nFrom the thickest parts of the copse, where the snow still remained,\ncame the faint sound of narrow winding threads of water running away.\nTiny birds twittered, and now and then fluttered from tree to tree.\n\nIn the pauses of complete stillness there came the rustle of last year's\nleaves, stirred by the thawing of the earth and the growth of the grass.\n\n\"Imagine! One can hear and see the grass growing!\" Levin said to\nhimself, noticing a wet, slate-colored aspen leaf moving beside a blade\nof young grass. He stood, listened, and gazed sometimes down at the wet\nmossy ground, sometimes at Laska listening all alert, sometimes at the\nsea of bare tree tops that stretched on the slope below him, sometimes\nat the darkening sky, covered with white streaks of cloud.\n\nA hawk flew high over a forest far away with slow sweep of its wings;\nanother flew with exactly the same motion in the same direction and\nvanished. The birds twittered more and more loudly and busily in the\nthicket. An owl hooted not far off, and Laska, starting, stepped\ncautiously a few steps forward, and putting her head on one side, began\nto listen intently. Beyond the stream was heard the cuckoo. Twice she\nuttered her usual cuckoo call, and then gave a hoarse, hurried call and\nbroke down.\n\n\"Imagine! the cuckoo already!\" said Stepan Arkadyevitch, coming out from\nbehind a bush.\n\n\"Yes, I hear it,\" answered Levin, reluctantly breaking the stillness\nwith his voice, which sounded disagreeable to himself. \"Now it's\ncoming!\"\n\nStepan Arkadyevitch's figure again went behind the bush, and Levin saw\nnothing but the bright flash of a match, followed by the red glow and\nblue smoke of a cigarette.\n\n\"Tchk! tchk!\" came the snapping sound of Stepan Arkadyevitch cocking his\ngun.\n\n\"What's that cry?\" asked Oblonsky, drawing Levin's attention to a\nprolonged cry, as though a colt were whinnying in a high voice, in play.\n\n\"Oh, don't you know it? That's the hare. But enough talking! Listen,\nit's flying!\" almost shrieked Levin, cocking his gun.\n\nThey heard a shrill whistle in the distance, and in the exact time, so\nwell known to the sportsman, two seconds later--another, a third, and\nafter the third whistle the hoarse, guttural cry could be heard.\n\nLevin looked about him to right and to left, and there, just facing him\nagainst the dusky blue sky above the confused mass of tender shoots of\nthe aspens, he saw the flying bird. It was flying straight towards him;\nthe guttural cry, like the even tearing of some strong stuff, sounded\nclose to his ear; the long beak and neck of the bird could be seen, and\nat the very instant when Levin was taking aim, behind the bush where\nOblonsky stood, there was a flash of red lightning: the bird dropped\nlike an arrow, and darted upwards again. Again came the red flash and\nthe sound of a blow, and fluttering its wings as though trying to keep\nup in the air, the bird halted, stopped still an instant, and fell with\na heavy splash on the slushy ground.\n\n\"Can I have missed it?\" shouted Stepan Arkadyevitch, who could not see\nfor the smoke.\n\n\"Here it is!\" said Levin, pointing to Laska, who with one ear raised,\nwagging the end of her shaggy tail, came slowly back as though she would\nprolong the pleasure, and as it were smiling, brought the dead bird to\nher master. \"Well, I'm glad you were successful,\" said Levin, who, at\nthe same time, had a sense of envy that he had not succeeded in shooting\nthe snipe.\n\n\"It was a bad shot from the right barrel,\" responded Stepan\nArkadyevitch, loading his gun. \"Sh... it's flying!\"\n\nThe shrill whistles rapidly following one another were heard again. Two\nsnipe, playing and chasing one another, and only whistling, not crying,\nflew straight at the very heads of the sportsmen. There was the report\nof four shots, and like swallows the snipe turned swift somersaults in\nthe air and vanished from sight.\n\nThe stand-shooting was capital. Stepan Arkadyevitch shot two more birds\nand Levin two, of which one was not found. It began to get dark. Venus,\nbright and silvery, shone with her soft light low down in the west\nbehind the birch trees, and high up in the east twinkled the red lights\nof Arcturus. Over his head Levin made out the stars of the Great Bear\nand lost them again. The snipe had ceased flying; but Levin resolved to\nstay a little longer, till Venus, which he saw below a branch of birch,\nshould be above it, and the stars of the Great Bear should be perfectly\nplain. Venus had risen above the branch, and the ear of the Great Bear\nwith its shaft was now all plainly visible against the dark blue sky,\nyet still he waited.\n\n\"Isn't it time to go home?\" said Stepan Arkadyevitch.\n\nIt was quite still now in the copse, and not a bird was stirring.\n\n\"Let's stay a little while,\" answered Levin.\n\n\"As you like.\"\n\nThey were standing now about fifteen paces from one another.\n\n\"Stiva!\" said Levin unexpectedly; \"how is it you don't tell me whether\nyour sister-in-law's married yet, or when she's going to be?\"\n\nLevin felt so resolute and serene that no answer, he fancied, could\naffect him. But he had never dreamed of what Stepan Arkadyevitch\nreplied.\n\n\"She's never thought of being married, and isn't thinking of it; but\nshe's very ill, and the doctors have sent her abroad. They're positively\nafraid she may not live.\"\n\n\"What!\" cried Levin. \"Very ill? What is wrong with her? How has she...?\"\n\nWhile they were saying this, Laska, with ears pricked up, was looking\nupwards at the sky, and reproachfully at them.\n\n\"They have chosen a time to talk,\" she was thinking. \"It's on the\nwing.... Here it is, yes, it is. They'll miss it,\" thought Laska.\n\nBut at that very instant both suddenly heard a shrill whistle which, as\nit were, smote on their ears, and both suddenly seized their guns and\ntwo flashes gleamed, and two bangs sounded at the very same instant. The\nsnipe flying high above instantly folded its wings and fell into a\nthicket, bending down the delicate shoots.\n\n\"Splendid! Together!\" cried Levin, and he ran with Laska into the\nthicket to look for the snipe.\n\n\"Oh, yes, what was it that was unpleasant?\" he wondered. \"Yes, Kitty's\nill.... Well, it can't be helped; I'm very sorry,\" he thought.\n\n\"She's found it! Isn't she a clever thing?\" he said, taking the warm\nbird from Laska's mouth and packing it into the almost full game bag.\n\"I've got it, Stiva!\" he shouted.\n\n\n\nChapter 16\n\n\nOn the way home Levin asked all details of Kitty's illness and the\nShtcherbatskys' plans, and though he would have been ashamed to admit\nit, he was pleased at what he heard. He was pleased that there was still\nhope, and still more pleased that she should be suffering who had made\nhim suffer so much. But when Stepan Arkadyevitch began to speak of the\ncauses of Kitty's illness, and mentioned Vronsky's name, Levin cut him\nshort.\n\n\"I have no right whatever to know family matters, and, to tell the\ntruth, no interest in them either.\"\n\nStepan Arkadyevitch smiled hardly perceptibly, catching the\ninstantaneous change he knew so well in Levin's face, which had become\nas gloomy as it had been bright a minute before.\n\n\"Have you quite settled about the forest with Ryabinin?\" asked Levin.\n\n\"Yes, it's settled. The price is magnificent; thirty-eight thousand.\nEight straight away, and the rest in six years. I've been bothering\nabout it for ever so long. No one would give more.\"\n\n\"Then you've as good as given away your forest for nothing,\" said Levin\ngloomily.\n\n\"How do you mean for nothing?\" said Stepan Arkadyevitch with a\ngood-humored smile, knowing that nothing would be right in Levin's eyes\nnow.\n\n\"Because the forest is worth at least a hundred and fifty roubles the\nacre,\" answered Levin.\n\n\"Oh, these farmers!\" said Stepan Arkadyevitch playfully. \"Your tone of\ncontempt for us poor townsfolk!... But when it comes to business, we do\nit better than anyone. I assure you I have reckoned it all out,\" he\nsaid, \"and the forest is fetching a very good price--so much so that I'm\nafraid of this fellow's crying off, in fact. You know it's not\n'timber,'\" said Stepan Arkadyevitch, hoping by this distinction to\nconvince Levin completely of the unfairness of his doubts. \"And it won't\nrun to more than twenty-five yards of fagots per acre, and he's giving\nme at the rate of seventy roubles the acre.\"\n\nLevin smiled contemptuously. \"I know,\" he thought, \"that fashion not\nonly in him, but in all city people, who, after being twice in ten years\nin the country, pick up two or three phrases and use them in season and\nout of season, firmly persuaded that they know all about it. '_Timber,\nrun to so many yards the acre._' He says those words without\nunderstanding them himself.\"\n\n\"I wouldn't attempt to teach you what you write about in your office,\"\nsaid he, \"and if need arose, I should come to you to ask about it. But\nyou're so positive you know all the lore of the forest. It's difficult.\nHave you counted the trees?\"\n\n\"How count the trees?\" said Stepan Arkadyevitch, laughing, still trying\nto draw his friend out of his ill-temper. \"Count the sands of the sea,\nnumber the stars. Some higher power might do it.\"\n\n\"Oh, well, the higher power of Ryabinin can. Not a single merchant ever\nbuys a forest without counting the trees, unless they get it given them\nfor nothing, as you're doing now. I know your forest. I go there every\nyear shooting, and your forest's worth a hundred and fifty roubles an\nacre paid down, while he's giving you sixty by installments. So that in\nfact you're making him a present of thirty thousand.\"\n\n\"Come, don't let your imagination run away with you,\" said Stepan\nArkadyevitch piteously. \"Why was it none would give it, then?\"\n\n\"Why, because he has an understanding with the merchants; he's bought\nthem off. I've had to do with all of them; I know them. They're not\nmerchants, you know: they're speculators. He wouldn't look at a bargain\nthat gave him ten, fifteen per cent profit, but holds back to buy a\nrouble's worth for twenty kopecks.\"\n\n\"Well, enough of it! You're out of temper.\"\n\n\"Not the least,\" said Levin gloomily, as they drove up to the house.\n\nAt the steps there stood a trap tightly covered with iron and leather,\nwith a sleek horse tightly harnessed with broad collar-straps. In the\ntrap sat the chubby, tightly belted clerk who served Ryabinin as\ncoachman. Ryabinin himself was already in the house, and met the friends\nin the hall. Ryabinin was a tall, thinnish, middle-aged man, with\nmustache and a projecting clean-shaven chin, and prominent muddy-looking\neyes. He was dressed in a long-skirted blue coat, with buttons below the\nwaist at the back, and wore high boots wrinkled over the ankles and\nstraight over the calf, with big galoshes drawn over them. He rubbed his\nface with his handkerchief, and wrapping round him his coat, which sat\nextremely well as it was, he greeted them with a smile, holding out his\nhand to Stepan Arkadyevitch, as though he wanted to catch something.\n\n\"So here you are,\" said Stepan Arkadyevitch, giving him his hand.\n\"That's capital.\"\n\n\"I did not venture to disregard your excellency's commands, though the\nroad was extremely bad. I positively walked the whole way, but I am here\nat my time. Konstantin Dmitrievitch, my respects\"; he turned to Levin,\ntrying to seize his hand too. But Levin, scowling, made as though he did\nnot notice his hand, and took out the snipe. \"Your honors have been\ndiverting yourselves with the chase? What kind of bird may it be, pray?\"\nadded Ryabinin, looking contemptuously at the snipe: \"a great delicacy,\nI suppose.\" And he shook his head disapprovingly, as though he had grave\ndoubts whether this game were worth the candle.\n\n\"Would you like to go into my study?\" Levin said in French to Stepan\nArkadyevitch, scowling morosely. \"Go into my study; you can talk there.\"\n\n\"Quite so, where you please,\" said Ryabinin with contemptuous dignity,\nas though wishing to make it felt that others might be in difficulties\nas to how to behave, but that he could never be in any difficulty about\nanything.\n\nOn entering the study Ryabinin looked about, as his habit was, as though\nseeking the holy picture, but when he had found it, he did not cross\nhimself. He scanned the bookcases and bookshelves, and with the same\ndubious air with which he had regarded the snipe, he smiled\ncontemptuously and shook his head disapprovingly, as though by no means\nwilling to allow that this game were worth the candle.\n\n\"Well, have you brought the money?\" asked Oblonsky. \"Sit down.\"\n\n\"Oh, don't trouble about the money. I've come to see you to talk it\nover.\"\n\n\"What is there to talk over? But do sit down.\"\n\n\"I don't mind if I do,\" said Ryabinin, sitting down and leaning his\nelbows on the back of his chair in a position of the intensest\ndiscomfort to himself. \"You must knock it down a bit, prince. It would\nbe too bad. The money is ready conclusively to the last farthing. As to\npaying the money down, there'll be no hitch there.\"\n\nLevin, who had meanwhile been putting his gun away in the cupboard, was\njust going out of the door, but catching the merchant's words, he\nstopped.\n\n\"Why, you've got the forest for nothing as it is,\" he said. \"He came to\nme too late, or I'd have fixed the price for him.\"\n\nRyabinin got up, and in silence, with a smile, he looked Levin down and\nup.\n\n\"Very close about money is Konstantin Dmitrievitch,\" he said with a\nsmile, turning to Stepan Arkadyevitch; \"there's positively no dealing\nwith him. I was bargaining for some wheat of him, and a pretty price I\noffered too.\"\n\n\"Why should I give you my goods for nothing? I didn't pick it up on the\nground, nor steal it either.\"\n\n\"Mercy on us! nowadays there's no chance at all of stealing. With the\nopen courts and everything done in style, nowadays there's no question\nof stealing. We are just talking things over like gentlemen. His\nexcellency's asking too much for the forest. I can't make both ends meet\nover it. I must ask for a little concession.\"\n\n\"But is the thing settled between you or not? If it's settled, it's\nuseless haggling; but if it's not,\" said Levin, \"I'll buy the forest.\"\n\nThe smile vanished at once from Ryabinin's face. A hawklike, greedy,\ncruel expression was left upon it. With rapid, bony fingers he\nunbuttoned his coat, revealing a shirt, bronze waistcoat buttons, and a\nwatch chain, and quickly pulled out a fat old pocketbook.\n\n\"Here you are, the forest is mine,\" he said, crossing himself quickly,\nand holding out his hand. \"Take the money; it's my forest. That's\nRyabinin's way of doing business; he doesn't haggle over every\nhalf-penny,\" he added, scowling and waving the pocketbook.\n\n\"I wouldn't be in a hurry if I were you,\" said Levin.\n\n\"Come, really,\" said Oblonsky in surprise. \"I've given my word, you\nknow.\"\n\nLevin went out of the room, slamming the door. Ryabinin looked towards\nthe door and shook his head with a smile.\n\n\"It's all youthfulness--positively nothing but boyishness. Why, I'm\nbuying it, upon my honor, simply, believe me, for the glory of it, that\nRyabinin, and no one else, should have bought the copse of Oblonsky. And\nas to the profits, why, I must make what God gives. In God's name. If\nyou would kindly sign the title-deed...\"\n\nWithin an hour the merchant, stroking his big overcoat neatly down, and\nhooking up his jacket, with the agreement in his pocket, seated himself\nin his tightly covered trap, and drove homewards.\n\n\"Ugh, these gentlefolks!\" he said to the clerk. \"They--they're a nice\nlot!\"\n\n\"That's so,\" responded the clerk, handing him the reins and buttoning\nthe leather apron. \"But I can congratulate you on the purchase, Mihail\nIgnatitch?\"\n\n\"Well, well...\"\n\n\n\nChapter 17\n\n\nStepan Arkadyevitch went upstairs with his pocket bulging with notes,\nwhich the merchant had paid him for three months in advance. The\nbusiness of the forest was over, the money in his pocket; their shooting\nhad been excellent, and Stepan Arkadyevitch was in the happiest frame of\nmind, and so he felt specially anxious to dissipate the ill-humor that\nhad come upon Levin. He wanted to finish the day at supper as pleasantly\nas it had been begun.\n\nLevin certainly was out of humor, and in spite of all his desire to be\naffectionate and cordial to his charming visitor, he could not control\nhis mood. The intoxication of the news that Kitty was not married had\ngradually begun to work upon him.\n\nKitty was not married, but ill, and ill from love for a man who had\nslighted her. This slight, as it were, rebounded upon him. Vronsky had\nslighted her, and she had slighted him, Levin. Consequently Vronsky had\nthe right to despise Levin, and therefore he was his enemy. But all this\nLevin did not think out. He vaguely felt that there was something in it\ninsulting to him, and he was not angry now at what had disturbed him,\nbut he fell foul of everything that presented itself. The stupid sale of\nthe forest, the fraud practiced upon Oblonsky and concluded in his\nhouse, exasperated him.\n\n\"Well, finished?\" he said, meeting Stepan Arkadyevitch upstairs. \"Would\nyou like supper?\"\n\n\"Well, I wouldn't say no to it. What an appetite I get in the country!\nWonderful! Why didn't you offer Ryabinin something?\"\n\n\"Oh, damn him!\"\n\n\"Still, how you do treat him!\" said Oblonsky. \"You didn't even shake\nhands with him. Why not shake hands with him?\"\n\n\"Because I don't shake hands with a waiter, and a waiter's a hundred\ntimes better than he is.\"\n\n\"What a reactionist you are, really! What about the amalgamation of\nclasses?\" said Oblonsky.\n\n\"Anyone who likes amalgamating is welcome to it, but it sickens me.\"\n\n\"You're a regular reactionist, I see.\"\n\n\"Really, I have never considered what I am. I am Konstantin Levin, and\nnothing else.\"\n\n\"And Konstantin Levin very much out of temper,\" said Stepan\nArkadyevitch, smiling.\n\n\"Yes, I am out of temper, and do you know why? Because--excuse me--of\nyour stupid sale...\"\n\nStepan Arkadyevitch frowned good-humoredly, like one who feels himself\nteased and attacked for no fault of his own.\n\n\"Come, enough about it!\" he said. \"When did anybody ever sell anything\nwithout being told immediately after the sale, 'It was worth much more'?\nBut when one wants to sell, no one will give anything.... No, I see\nyou've a grudge against that unlucky Ryabinin.\"\n\n\"Maybe I have. And do you know why? You'll say again that I'm a\nreactionist, or some other terrible word; but all the same it does annoy\nand anger me to see on all sides the impoverishing of the nobility to\nwhich I belong, and, in spite of the amalgamation of classes, I'm glad\nto belong. And their impoverishment is not due to extravagance--that\nwould be nothing; living in good style--that's the proper thing for\nnoblemen; it's only the nobles who know how to do it. Now the peasants\nabout us buy land, and I don't mind that. The gentleman does nothing,\nwhile the peasant works and supplants the idle man. That's as it ought\nto be. And I'm very glad for the peasant. But I do mind seeing the\nprocess of impoverishment from a sort of--I don't know what to call\nit--innocence. Here a Polish speculator bought for half its value a\nmagnificent estate from a young lady who lives in Nice. And there a\nmerchant will get three acres of land, worth ten roubles, as security\nfor the loan of one rouble. Here, for no kind of reason, you've made\nthat rascal a present of thirty thousand roubles.\"\n\n\"Well, what should I have done? Counted every tree?\"\n\n\"Of course, they must be counted. You didn't count them, but Ryabinin\ndid. Ryabinin's children will have means of livelihood and education,\nwhile yours maybe will not!\"\n\n\"Well, you must excuse me, but there's something mean in this counting.\nWe have our business and they have theirs, and they must make their\nprofit. Anyway, the thing's done, and there's an end of it. And here\ncome some poached eggs, my favorite dish. And Agafea Mihalovna will give\nus that marvelous herb-brandy...\"\n\nStepan Arkadyevitch sat down at the table and began joking with Agafea\nMihalovna, assuring her that it was long since he had tasted such a\ndinner and such a supper.\n\n\"Well, you do praise it, anyway,\" said Agafea Mihalovna, \"but Konstantin\nDmitrievitch, give him what you will--a crust of bread--he'll eat it and\nwalk away.\"\n\nThough Levin tried to control himself, he was gloomy and silent. He\nwanted to put one question to Stepan Arkadyevitch, but he could not\nbring himself to the point, and could not find the words or the moment\nin which to put it. Stepan Arkadyevitch had gone down to his room,\nundressed, again washed, and attired in a nightshirt with goffered\nfrills, he had got into bed, but Levin still lingered in his room,\ntalking of various trifling matters, and not daring to ask what he\nwanted to know.\n\n\"How wonderfully they make this soap,\" he said gazing at a piece of soap\nhe was handling, which Agafea Mihalovna had put ready for the visitor\nbut Oblonsky had not used. \"Only look; why, it's a work of art.\"\n\n\"Yes, everything's brought to such a pitch of perfection nowadays,\" said\nStepan Arkadyevitch, with a moist and blissful yawn. \"The theater, for\ninstance, and the entertainments ... a--a--a!\" he yawned. \"The electric\nlight everywhere ... a--a--a!\"\n\n\"Yes, the electric light,\" said Levin. \"Yes. Oh, and where's Vronsky\nnow?\" he asked suddenly, laying down the soap.\n\n\"Vronsky?\" said Stepan Arkadyevitch, checking his yawn; \"he's in\nPetersburg. He left soon after you did, and he's not once been in Moscow\nsince. And do you know, Kostya, I'll tell you the truth,\" he went on,\nleaning his elbow on the table, and propping on his hand his handsome\nruddy face, in which his moist, good-natured, sleepy eyes shone like\nstars. \"It's your own fault. You took fright at the sight of your rival.\nBut, as I told you at the time, I couldn't say which had the better\nchance. Why didn't you fight it out? I told you at the time that....\" He\nyawned inwardly, without opening his mouth.\n\n\"Does he know, or doesn't he, that I did make an offer?\" Levin wondered,\ngazing at him. \"Yes, there's something humbugging, diplomatic in his\nface,\" and feeling he was blushing, he looked Stepan Arkadyevitch\nstraight in the face without speaking.\n\n\"If there was anything on her side at the time, it was nothing but a\nsuperficial attraction,\" pursued Oblonsky. \"His being such a perfect\naristocrat, don't you know, and his future position in society, had an\ninfluence not with her, but with her mother.\"\n\nLevin scowled. The humiliation of his rejection stung him to the heart,\nas though it were a fresh wound he had only just received. But he was at\nhome, and the walls of home are a support.\n\n\"Stay, stay,\" he began, interrupting Oblonsky. \"You talk of his being an\naristocrat. But allow me to ask what it consists in, that aristocracy of\nVronsky or of anybody else, beside which I can be looked down upon? You\nconsider Vronsky an aristocrat, but I don't. A man whose father crawled\nup from nothing at all by intrigue, and whose mother--God knows whom she\nwasn't mixed up with.... No, excuse me, but I consider myself\naristocratic, and people like me, who can point back in the past to\nthree or four honorable generations of their family, of the highest\ndegree of breeding (talent and intellect, of course that's another\nmatter), and have never curried favor with anyone, never depended on\nanyone for anything, like my father and my grandfather. And I know many\nsuch. You think it mean of me to count the trees in my forest, while you\nmake Ryabinin a present of thirty thousand; but you get rents from your\nlands and I don't know what, while I don't and so I prize what's come to\nme from my ancestors or been won by hard work.... We are aristocrats,\nand not those who can only exist by favor of the powerful of this world,\nand who can be bought for twopence halfpenny.\"\n\n\"Well, but whom are you attacking? I agree with you,\" said Stepan\nArkadyevitch, sincerely and genially; though he was aware that in the\nclass of those who could be bought for twopence halfpenny Levin was\nreckoning him too. Levin's warmth gave him genuine pleasure. \"Whom are\nyou attacking? Though a good deal is not true that you say about\nVronsky, but I won't talk about that. I tell you straight out, if I were\nyou, I should go back with me to Moscow, and...\"\n\n\"No; I don't know whether you know it or not, but I don't care. And I\ntell you--I did make an offer and was rejected, and Katerina\nAlexandrovna is nothing now to me but a painful and humiliating\nreminiscence.\"\n\n\"What ever for? What nonsense!\"\n\n\"But we won't talk about it. Please forgive me, if I've been nasty,\"\nsaid Levin. Now that he had opened his heart, he became as he had been\nin the morning. \"You're not angry with me, Stiva? Please don't be\nangry,\" he said, and smiling, he took his hand.\n\n\"Of course not; not a bit, and no reason to be. I'm glad we've spoken\nopenly. And do you know, stand-shooting in the morning is unusually\ngood--why not go? I couldn't sleep the night anyway, but I might go\nstraight from shooting to the station.\"\n\n\"Capital.\"\n\n\n\nChapter 18\n\n\nAlthough all Vronsky's inner life was absorbed in his passion, his\nexternal life unalterably and inevitably followed along the old\naccustomed lines of his social and regimental ties and interests. The\ninterests of his regiment took an important place in Vronsky's life,\nboth because he was fond of the regiment, and because the regiment was\nfond of him. They were not only fond of Vronsky in his regiment, they\nrespected him too, and were proud of him; proud that this man, with his\nimmense wealth, his brilliant education and abilities, and the path open\nbefore him to every kind of success, distinction, and ambition, had\ndisregarded all that, and of all the interests of life had the interests\nof his regiment and his comrades nearest to his heart. Vronsky was aware\nof his comrades' view of him, and in addition to his liking for the\nlife, he felt bound to keep up that reputation.\n\nIt need not be said that he did not speak of his love to any of his\ncomrades, nor did he betray his secret even in the wildest drinking\nbouts (though indeed he was never so drunk as to lose all control of\nhimself). And he shut up any of his thoughtless comrades who attempted\nto allude to his connection. But in spite of that, his love was known to\nall the town; everyone guessed with more or less confidence at his\nrelations with Madame Karenina. The majority of the younger men envied\nhim for just what was the most irksome factor in his love--the exalted\nposition of Karenin, and the consequent publicity of their connection in\nsociety.\n\nThe greater number of the young women, who envied Anna and had long been\nweary of hearing her called _virtuous_, rejoiced at the fulfillment of\ntheir predictions, and were only waiting for a decisive turn in public\nopinion to fall upon her with all the weight of their scorn. They were\nalready making ready their handfuls of mud to fling at her when the\nright moment arrived. The greater number of the middle-aged people and\ncertain great personages were displeased at the prospect of the\nimpending scandal in society.\n\nVronsky's mother, on hearing of his connection, was at first pleased at\nit, because nothing to her mind gave such a finishing touch to a\nbrilliant young man as a _liaison_ in the highest society; she was\npleased, too, that Madame Karenina, who had so taken her fancy, and had\ntalked so much of her son, was, after all, just like all other pretty\nand well-bred women,--at least according to the Countess Vronskaya's\nideas. But she had heard of late that her son had refused a position\noffered him of great importance to his career, simply in order to remain\nin the regiment, where he could be constantly seeing Madame Karenina.\nShe learned that great personages were displeased with him on this\naccount, and she changed her opinion. She was vexed, too, that from all\nshe could learn of this connection it was not that brilliant, graceful,\nworldly _liaison_ which she would have welcomed, but a sort of\nWertherish, desperate passion, so she was told, which might well lead\nhim into imprudence. She had not seen him since his abrupt departure\nfrom Moscow, and she sent her elder son to bid him come to see her.\n\nThis elder son, too, was displeased with his younger brother. He did not\ndistinguish what sort of love his might be, big or little, passionate or\npassionless, lasting or passing (he kept a ballet girl himself, though\nhe was the father of a family, so he was lenient in these matters), but\nhe knew that this love affair was viewed with displeasure by those whom\nit was necessary to please, and therefore he did not approve of his\nbrother's conduct.\n\nBesides the service and society, Vronsky had another great\ninterest--horses; he was passionately fond of horses.\n\nThat year races and a steeplechase had been arranged for the officers.\nVronsky had put his name down, bought a thoroughbred English mare, and\nin spite of his love affair, he was looking forward to the races with\nintense, though reserved, excitement...\n\nThese two passions did not interfere with one another. On the contrary,\nhe needed occupation and distraction quite apart from his love, so as to\nrecruit and rest himself from the violent emotions that agitated him.\n\n\n\nChapter 19\n\n\nOn the day of the races at Krasnoe Selo, Vronsky had come earlier than\nusual to eat beefsteak in the common messroom of the regiment. He had no\nneed to be strict with himself, as he had very quickly been brought down\nto the required light weight; but still he had to avoid gaining flesh,\nand so he eschewed farinaceous and sweet dishes. He sat with his coat\nunbuttoned over a white waistcoat, resting both elbows on the table, and\nwhile waiting for the steak he had ordered he looked at a French novel\nthat lay open on his plate. He was only looking at the book to avoid\nconversation with the officers coming in and out; he was thinking.\n\nHe was thinking of Anna's promise to see him that day after the races.\nBut he had not seen her for three days, and as her husband had just\nreturned from abroad, he did not know whether she would be able to meet\nhim today or not, and he did not know how to find out. He had had his\nlast interview with her at his cousin Betsy's summer villa. He visited\nthe Karenins' summer villa as rarely as possible. Now he wanted to go\nthere, and he pondered the question how to do it.\n\n\"Of course I shall say Betsy has sent me to ask whether she's coming to\nthe races. Of course, I'll go,\" he decided, lifting his head from the\nbook. And as he vividly pictured the happiness of seeing her, his face\nlighted up.\n\n\"Send to my house, and tell them to have out the carriage and three\nhorses as quick as they can,\" he said to the servant, who handed him the\nsteak on a hot silver dish, and moving the dish up he began eating.\n\nFrom the billiard room next door came the sound of balls knocking, of\ntalk and laughter. Two officers appeared at the entrance-door: one, a\nyoung fellow, with a feeble, delicate face, who had lately joined the\nregiment from the Corps of Pages; the other, a plump, elderly officer,\nwith a bracelet on his wrist, and little eyes, lost in fat.\n\nVronsky glanced at them, frowned, and looking down at his book as though\nhe had not noticed them, he proceeded to eat and read at the same time.\n\n\"What? Fortifying yourself for your work?\" said the plump officer,\nsitting down beside him.\n\n\"As you see,\" responded Vronsky, knitting his brows, wiping his mouth,\nand not looking at the officer.\n\n\"So you're not afraid of getting fat?\" said the latter, turning a chair\nround for the young officer.\n\n\"What?\" said Vronsky angrily, making a wry face of disgust, and showing\nhis even teeth.\n\n\"You're not afraid of getting fat?\"\n\n\"Waiter, sherry!\" said Vronsky, without replying, and moving the book to\nthe other side of him, he went on reading.\n\nThe plump officer took up the list of wines and turned to the young\nofficer.\n\n\"You choose what we're to drink,\" he said, handing him the card, and\nlooking at him.\n\n\"Rhine wine, please,\" said the young officer, stealing a timid glance at\nVronsky, and trying to pull his scarcely visible mustache. Seeing that\nVronsky did not turn round, the young officer got up.\n\n\"Let's go into the billiard room,\" he said.\n\nThe plump officer rose submissively, and they moved towards the door.\n\nAt that moment there walked into the room the tall and well-built\nCaptain Yashvin. Nodding with an air of lofty contempt to the two\nofficers, he went up to Vronsky.\n\n\"Ah! here he is!\" he cried, bringing his big hand down heavily on his\nepaulet. Vronsky looked round angrily, but his face lighted up\nimmediately with his characteristic expression of genial and manly\nserenity.\n\n\"That's it, Alexey,\" said the captain, in his loud baritone. \"You must\njust eat a mouthful, now, and drink only one tiny glass.\"\n\n\"Oh, I'm not hungry.\"\n\n\"There go the inseparables,\" Yashvin dropped, glancing sarcastically at\nthe two officers who were at that instant leaving the room. And he bent\nhis long legs, swathed in tight riding breeches, and sat down in the\nchair, too low for him, so that his knees were cramped up in a sharp\nangle.\n\n\"Why didn't you turn up at the Red Theater yesterday? Numerova wasn't at\nall bad. Where were you?\"\n\n\"I was late at the Tverskoys',\" said Vronsky.\n\n\"Ah!\" responded Yashvin.\n\nYashvin, a gambler and a rake, a man not merely without moral\nprinciples, but of immoral principles, Yashvin was Vronsky's greatest\nfriend in the regiment. Vronsky liked him both for his exceptional\nphysical strength, which he showed for the most part by being able to\ndrink like a fish, and do without sleep without being in the slightest\ndegree affected by it; and for his great strength of character, which he\nshowed in his relations with his comrades and superior officers,\ncommanding both fear and respect, and also at cards, when he would play\nfor tens of thousands and however much he might have drunk, always with\nsuch skill and decision that he was reckoned the best player in the\nEnglish Club. Vronsky respected and liked Yashvin particularly because\nhe felt Yashvin liked him, not for his name and his money, but for\nhimself. And of all men he was the only one with whom Vronsky would have\nliked to speak of his love. He felt that Yashvin, in spite of his\napparent contempt for every sort of feeling, was the only man who could,\nso he fancied, comprehend the intense passion which now filled his whole\nlife. Moreover, he felt certain that Yashvin, as it was, took no delight\nin gossip and scandal, and interpreted his feeling rightly, that is to\nsay, knew and believed that this passion was not a jest, not a pastime,\nbut something more serious and important.\n\nVronsky had never spoken to him of his passion, but he was aware that he\nknew all about it, and that he put the right interpretation on it, and\nhe was glad to see that in his eyes.\n\n\"Ah! yes,\" he said, to the announcement that Vronsky had been at the\nTverskoys'; and his black eyes shining, he plucked at his left mustache,\nand began twisting it into his mouth, a bad habit he had.\n\n\"Well, and what did you do yesterday? Win anything?\" asked Vronsky.\n\n\"Eight thousand. But three don't count; he won't pay up.\"\n\n\"Oh, then you can afford to lose over me,\" said Vronsky, laughing.\n(Yashvin had bet heavily on Vronsky in the races.)\n\n\"No chance of my losing. Mahotin's the only one that's risky.\"\n\nAnd the conversation passed to forecasts of the coming race, the only\nthing Vronsky could think of just now.\n\n\"Come along, I've finished,\" said Vronsky, and getting up he went to the\ndoor. Yashvin got up too, stretching his long legs and his long back.\n\n\"It's too early for me to dine, but I must have a drink. I'll come along\ndirectly. Hi, wine!\" he shouted, in his rich voice, that always rang out\nso loudly at drill, and set the windows shaking now.\n\n\"No, all right,\" he shouted again immediately after. \"You're going home,\nso I'll go with you.\"\n\nAnd he walked out with Vronsky.\n\n\n\nChapter 20\n\n\nVronsky was staying in a roomy, clean, Finnish hut, divided into two by\na partition. Petritsky lived with him in camp too. Petritsky was asleep\nwhen Vronsky and Yashvin came into the hut.\n\n\"Get up, don't go on sleeping,\" said Yashvin, going behind the partition\nand giving Petritsky, who was lying with ruffled hair and with his nose\nin the pillow, a prod on the shoulder.\n\nPetritsky jumped up suddenly onto his knees and looked round.\n\n\"Your brother's been here,\" he said to Vronsky. \"He waked me up, damn\nhim, and said he'd look in again.\" And pulling up the rug he flung\nhimself back on the pillow. \"Oh, do shut up, Yashvin!\" he said, getting\nfurious with Yashvin, who was pulling the rug off him. \"Shut up!\" He\nturned over and opened his eyes. \"You'd better tell me what to drink;\nsuch a nasty taste in my mouth, that...\"\n\n\"Brandy's better than anything,\" boomed Yashvin. \"Tereshtchenko! brandy\nfor your master and cucumbers,\" he shouted, obviously taking pleasure in\nthe sound of his own voice.\n\n\"Brandy, do you think? Eh?\" queried Petritsky, blinking and rubbing his\neyes. \"And you'll drink something? All right then, we'll have a drink\ntogether! Vronsky, have a drink?\" said Petritsky, getting up and\nwrapping the tiger-skin rug round him. He went to the door of the\npartition wall, raised his hands, and hummed in French, \"There was a\nking in Thule.\" \"Vronsky, will you have a drink?\"\n\n\"Go along,\" said Vronsky, putting on the coat his valet handed to him.\n\n\"Where are you off to?\" asked Yashvin. \"Oh, here are your three horses,\"\nhe added, seeing the carriage drive up.\n\n\"To the stables, and I've got to see Bryansky, too, about the horses,\"\nsaid Vronsky.\n\nVronsky had as a fact promised to call at Bryansky's, some eight miles\nfrom Peterhof, and to bring him some money owing for some horses; and he\nhoped to have time to get that in too. But his comrades were at once\naware that he was not only going there.\n\nPetritsky, still humming, winked and made a pout with his lips, as\nthough he would say: \"Oh, yes, we know your Bryansky.\"\n\n\"Mind you're not late!\" was Yashvin's only comment; and to change the\nconversation: \"How's my roan? is he doing all right?\" he inquired,\nlooking out of the window at the middle one of the three horses, which\nhe had sold Vronsky.\n\n\"Stop!\" cried Petritsky to Vronsky as he was just going out. \"Your\nbrother left a letter and a note for you. Wait a bit; where are they?\"\n\nVronsky stopped.\n\n\"Well, where are they?\"\n\n\"Where are they? That's just the question!\" said Petritsky solemnly,\nmoving his forefinger upwards from his nose.\n\n\"Come, tell me; this is silly!\" said Vronsky smiling.\n\n\"I have not lighted the fire. Here somewhere about.\"\n\n\"Come, enough fooling! Where is the letter?\"\n\n\"No, I've forgotten really. Or was it a dream? Wait a bit, wait a bit!\nBut what's the use of getting in a rage. If you'd drunk four bottles\nyesterday as I did you'd forget where you were lying. Wait a bit, I'll\nremember!\"\n\nPetritsky went behind the partition and lay down on his bed.\n\n\"Wait a bit! This was how I was lying, and this was how he was standing.\nYes--yes--yes.... Here it is!\"--and Petritsky pulled a letter out from\nunder the mattress, where he had hidden it.\n\nVronsky took the letter and his brother's note. It was the letter he was\nexpecting--from his mother, reproaching him for not having been to see\nher--and the note was from his brother to say that he must have a little\ntalk with him. Vronsky knew that it was all about the same thing. \"What\nbusiness is it of theirs!\" thought Vronsky, and crumpling up the letters\nhe thrust them between the buttons of his coat so as to read them\ncarefully on the road. In the porch of the hut he was met by two\nofficers; one of his regiment and one of another.\n\nVronsky's quarters were always a meeting place for all the officers.\n\n\"Where are you off to?\"\n\n\"I must go to Peterhof.\"\n\n\"Has the mare come from Tsarskoe?\"\n\n\"Yes, but I've not seen her yet.\"\n\n\"They say Mahotin's Gladiator's lame.\"\n\n\"Nonsense! But however are you going to race in this mud?\" said the\nother.\n\n\"Here are my saviors!\" cried Petritsky, seeing them come in. Before him\nstood the orderly with a tray of brandy and salted cucumbers. \"Here's\nYashvin ordering me to drink a pick-me-up.\"\n\n\"Well, you did give it to us yesterday,\" said one of those who had come\nin; \"you didn't let us get a wink of sleep all night.\"\n\n\"Oh, didn't we make a pretty finish!\" said Petritsky. \"Volkov climbed\nonto the roof and began telling us how sad he was. I said: 'Let's have\nmusic, the funeral march!' He fairly dropped asleep on the roof over the\nfuneral march.\"\n\n\"Drink it up; you positively must drink the brandy, and then seltzer\nwater and a lot of lemon,\" said Yashvin, standing over Petritsky like a\nmother making a child take medicine, \"and then a little champagne--just\na small bottle.\"\n\n\"Come, there's some sense in that. Stop a bit, Vronsky. We'll all have a\ndrink.\"\n\n\"No; good-bye all of you. I'm not going to drink today.\"\n\n\"Why, are you gaining weight? All right, then we must have it alone.\nGive us the seltzer water and lemon.\"\n\n\"Vronsky!\" shouted someone when he was already outside.\n\n\"Well?\"\n\n\"You'd better get your hair cut, it'll weigh you down, especially at the\ntop.\"\n\nVronsky was in fact beginning, prematurely, to get a little bald. He\nlaughed gaily, showing his even teeth, and pulling his cap over the thin\nplace, went out and got into his carriage.\n\n\"To the stables!\" he said, and was just pulling out the letters to read\nthem through, but he thought better of it, and put off reading them so\nas not to distract his attention before looking at the mare. \"Later!\"\n\n\n\nChapter 21\n\n\nThe temporary stable, a wooden shed, had been put up close to the race\ncourse, and there his mare was to have been taken the previous day. He\nhad not yet seen her there.\n\nDuring the last few days he had not ridden her out for exercise himself,\nbut had put her in the charge of the trainer, and so now he positively\ndid not know in what condition his mare had arrived yesterday and was\ntoday. He had scarcely got out of his carriage when his groom, the\nso-called \"stable boy,\" recognizing the carriage some way off, called\nthe trainer. A dry-looking Englishman, in high boots and a short jacket,\nclean-shaven, except for a tuft below his chin, came to meet him,\nwalking with the uncouth gait of jockey, turning his elbows out and\nswaying from side to side.\n\n\"Well, how's Frou-Frou?\" Vronsky asked in English.\n\n\"All right, sir,\" the Englishman's voice responded somewhere in the\ninside of his throat. \"Better not go in,\" he added, touching his hat.\n\"I've put a muzzle on her, and the mare's fidgety. Better not go in,\nit'll excite the mare.\"\n\n\"No, I'm going in. I want to look at her.\"\n\n\"Come along, then,\" said the Englishman, frowning, and speaking with his\nmouth shut, and, with swinging elbows, he went on in front with his\ndisjointed gait.\n\nThey went into the little yard in front of the shed. A stable boy,\nspruce and smart in his holiday attire, met them with a broom in his\nhand, and followed them. In the shed there were five horses in their\nseparate stalls, and Vronsky knew that his chief rival, Gladiator, a\nvery tall chestnut horse, had been brought there, and must be standing\namong them. Even more than his mare, Vronsky longed to see Gladiator,\nwhom he had never seen. But he knew that by the etiquette of the race\ncourse it was not merely impossible for him to see the horse, but\nimproper even to ask questions about him. Just as he was passing along\nthe passage, the boy opened the door into the second horse-box on the\nleft, and Vronsky caught a glimpse of a big chestnut horse with white\nlegs. He knew that this was Gladiator, but, with the feeling of a man\nturning away from the sight of another man's open letter, he turned\nround and went into Frou-Frou's stall.\n\n\"The horse is here belonging to Mak... Mak... I never can say the name,\"\nsaid the Englishman, over his shoulder, pointing his big finger and\ndirty nail towards Gladiator's stall.\n\n\"Mahotin? Yes, he's my most serious rival,\" said Vronsky.\n\n\"If you were riding him,\" said the Englishman, \"I'd bet on you.\"\n\n\"Frou-Frou's more nervous; he's stronger,\" said Vronsky, smiling at the\ncompliment to his riding.\n\n\"In a steeplechase it all depends on riding and on pluck,\" said the\nEnglishman.\n\nOf pluck--that is, energy and courage--Vronsky did not merely feel that\nhe had enough; what was of far more importance, he was firmly convinced\nthat no one in the world could have more of this \"pluck\" than he had.\n\n\"Don't you think I want more thinning down?\"\n\n\"Oh, no,\" answered the Englishman. \"Please, don't speak loud. The mare's\nfidgety,\" he added, nodding towards the horse-box, before which they\nwere standing, and from which came the sound of restless stamping in the\nstraw.\n\nHe opened the door, and Vronsky went into the horse-box, dimly lighted\nby one little window. In the horse-box stood a dark bay mare, with a\nmuzzle on, picking at the fresh straw with her hoofs. Looking round him\nin the twilight of the horse-box, Vronsky unconsciously took in once\nmore in a comprehensive glance all the points of his favorite mare.\nFrou-Frou was a beast of medium size, not altogether free from reproach,\nfrom a breeder's point of view. She was small-boned all over; though her\nchest was extremely prominent in front, it was narrow. Her hind-quarters\nwere a little drooping, and in her fore-legs, and still more in her\nhind-legs, there was a noticeable curvature. The muscles of both hind-\nand fore-legs were not very thick; but across her shoulders the mare was\nexceptionally broad, a peculiarity specially striking now that she was\nlean from training. The bones of her legs below the knees looked no\nthicker than a finger from in front, but were extraordinarily thick seen\nfrom the side. She looked altogether, except across the shoulders, as it\nwere, pinched in at the sides and pressed out in depth. But she had in\nthe highest degree the quality that makes all defects forgotten: that\nquality was _blood_, the blood _that tells_, as the English expression\nhas it. The muscles stood up sharply under the network of sinews,\ncovered with the delicate, mobile skin, soft as satin, and they were\nhard as bone. Her clean-cut head, with prominent, bright, spirited eyes,\nbroadened out at the open nostrils, that showed the red blood in the\ncartilage within. About all her figure, and especially her head, there\nwas a certain expression of energy, and, at the same time, of softness.\nShe was one of those creatures which seem only not to speak because the\nmechanism of their mouth does not allow them to.\n\nTo Vronsky, at any rate, it seemed that she understood all he felt at\nthat moment, looking at her.\n\nDirectly Vronsky went towards her, she drew in a deep breath, and,\nturning back her prominent eye till the white looked bloodshot, she\nstarted at the approaching figures from the opposite side, shaking her\nmuzzle, and shifting lightly from one leg to the other.\n\n\"There, you see how fidgety she is,\" said the Englishman.\n\n\"There, darling! There!\" said Vronsky, going up to the mare and speaking\nsoothingly to her.\n\nBut the nearer he came, the more excited she grew. Only when he stood by\nher head, she was suddenly quieter, while the muscles quivered under her\nsoft, delicate coat. Vronsky patted her strong neck, straightened over\nher sharp withers a stray lock of her mane that had fallen on the other\nside, and moved his face near her dilated nostrils, transparent as a\nbat's wing. She drew a loud breath and snorted out through her tense\nnostrils, started, pricked up her sharp ear, and put out her strong,\nblack lip towards Vronsky, as though she would nip hold of his sleeve.\nBut remembering the muzzle, she shook it and again began restlessly\nstamping one after the other her shapely legs.\n\n\"Quiet, darling, quiet!\" he said, patting her again over her\nhind-quarters; and with a glad sense that his mare was in the best\npossible condition, he went out of the horse-box.\n\nThe mare's excitement had infected Vronsky. He felt that his heart was\nthrobbing, and that he, too, like the mare, longed to move, to bite; it\nwas both dreadful and delicious.\n\n\"Well, I rely on you, then,\" he said to the Englishman; \"half-past six\non the ground.\"\n\n\"All right,\" said the Englishman. \"Oh, where are you going, my lord?\" he\nasked suddenly, using the title \"my lord,\" which he had scarcely ever\nused before.\n\nVronsky in amazement raised his head, and stared, as he knew how to\nstare, not into the Englishman's eyes, but at his forehead, astounded at\nthe impertinence of his question. But realizing that in asking this the\nEnglishman had been looking at him not as an employer, but as a jockey,\nhe answered:\n\n\"I've got to go to Bryansky's; I shall be home within an hour.\"\n\n\"How often I'm asked that question today!\" he said to himself, and he\nblushed, a thing which rarely happened to him. The Englishman looked\ngravely at him; and, as though he, too, knew where Vronsky was going, he\nadded:\n\n\"The great thing's to keep quiet before a race,\" said he; \"don't get out\nof temper or upset about anything.\"\n\n\"All right,\" answered Vronsky, smiling; and jumping into his carriage,\nhe told the man to drive to Peterhof.\n\nBefore he had driven many paces away, the dark clouds that had been\nthreatening rain all day broke, and there was a heavy downpour of rain.\n\n\"What a pity!\" thought Vronsky, putting up the roof of the carriage. \"It\nwas muddy before, now it will be a perfect swamp.\" As he sat in solitude\nin the closed carriage, he took out his mother's letter and his\nbrother's note, and read them through.\n\nYes, it was the same thing over and over again. Everyone, his mother,\nhis brother, everyone thought fit to interfere in the affairs of his\nheart. This interference aroused in him a feeling of angry hatred--a\nfeeling he had rarely known before. \"What business is it of theirs? Why\ndoes everybody feel called upon to concern himself about me? And why do\nthey worry me so? Just because they see that this is something they\ncan't understand. If it were a common, vulgar, worldly intrigue, they\nwould have left me alone. They feel that this is something different,\nthat this is not a mere pastime, that this woman is dearer to me than\nlife. And this is incomprehensible, and that's why it annoys them.\nWhatever our destiny is or may be, we have made it ourselves, and we do\nnot complain of it,\" he said, in the word _we_ linking himself with\nAnna. \"No, they must needs teach us how to live. They haven't an idea of\nwhat happiness is; they don't know that without our love, for us there\nis neither happiness nor unhappiness--no life at all,\" he thought.\n\nHe was angry with all of them for their interference just because he\nfelt in his soul that they, all these people, were right. He felt that\nthe love that bound him to Anna was not a momentary impulse, which would\npass, as worldly intrigues do pass, leaving no other traces in the life\nof either but pleasant or unpleasant memories. He felt all the torture\nof his own and her position, all the difficulty there was for them,\nconspicuous as they were in the eye of all the world, in concealing\ntheir love, in lying and deceiving; and in lying, deceiving, feigning,\nand continually thinking of others, when the passion that united them\nwas so intense that they were both oblivious of everything else but\ntheir love.\n\nHe vividly recalled all the constantly recurring instances of inevitable\nnecessity for lying and deceit, which were so against his natural bent.\nHe recalled particularly vividly the shame he had more than once\ndetected in her at this necessity for lying and deceit. And he\nexperienced the strange feeling that had sometimes come upon him since\nhis secret love for Anna. This was a feeling of loathing for\nsomething--whether for Alexey Alexandrovitch, or for himself, or for the\nwhole world, he could not have said. But he always drove away this\nstrange feeling. Now, too, he shook it off and continued the thread of\nhis thoughts.\n\n\"Yes, she was unhappy before, but proud and at peace; and now she cannot\nbe at peace and feel secure in her dignity, though she does not show it.\nYes, we must put an end to it,\" he decided.\n\nAnd for the first time the idea clearly presented itself that it was\nessential to put an end to this false position, and the sooner the\nbetter. \"Throw up everything, she and I, and hide ourselves somewhere\nalone with our love,\" he said to himself.\n\n\n\nChapter 22\n\n\nThe rain did not last long, and by the time Vronsky arrived, his\nshaft-horse trotting at full speed and dragging the trace-horses\ngalloping through the mud, with their reins hanging loose, the sun had\npeeped out again, the roofs of the summer villas and the old limetrees\nin the gardens on both sides of the principal streets sparkled with wet\nbrilliance, and from the twigs came a pleasant drip and from the roofs\nrushing streams of water. He thought no more of the shower spoiling the\nrace course, but was rejoicing now that--thanks to the rain--he would be\nsure to find her at home and alone, as he knew that Alexey\nAlexandrovitch, who had lately returned from a foreign watering place,\nhad not moved from Petersburg.\n\nHoping to find her alone, Vronsky alighted, as he always did, to avoid\nattracting attention, before crossing the bridge, and walked to the\nhouse. He did not go up the steps to the street door, but went into the\ncourt.\n\n\"Has your master come?\" he asked a gardener.\n\n\"No, sir. The mistress is at home. But will you please go to the front\ndoor; there are servants there,\" the gardener answered. \"They'll open\nthe door.\"\n\n\"No, I'll go in from the garden.\"\n\nAnd feeling satisfied that she was alone, and wanting to take her by\nsurprise, since he had not promised to be there today, and she would\ncertainly not expect him to come before the races, he walked, holding\nhis sword and stepping cautiously over the sandy path, bordered with\nflowers, to the terrace that looked out upon the garden. Vronsky forgot\nnow all that he had thought on the way of the hardships and difficulties\nof their position. He thought of nothing but that he would see her\ndirectly, not in imagination, but living, all of her, as she was in\nreality. He was just going in, stepping on his whole foot so as not to\ncreak, up the worn steps of the terrace, when he suddenly remembered\nwhat he always forgot, and what caused the most torturing side of his\nrelations with her, her son with his questioning--hostile, as he\nfancied--eyes.\n\nThis boy was more often than anyone else a check upon their freedom.\nWhen he was present, both Vronsky and Anna did not merely avoid speaking\nof anything that they could not have repeated before everyone; they did\nnot even allow themselves to refer by hints to anything the boy did not\nunderstand. They had made no agreement about this, it had settled\nitself. They would have felt it wounding themselves to deceive the\nchild. In his presence they talked like acquaintances. But in spite of\nthis caution, Vronsky often saw the child's intent, bewildered glance\nfixed upon him, and a strange shyness, uncertainty, at one time\nfriendliness, at another, coldness and reserve, in the boy's manner to\nhim; as though the child felt that between this man and his mother there\nexisted some important bond, the significance of which he could not\nunderstand.\n\nAs a fact, the boy did feel that he could not understand this relation,\nand he tried painfully, and was not able to make clear to himself what\nfeeling he ought to have for this man. With a child's keen instinct for\nevery manifestation of feeling, he saw distinctly that his father, his\ngoverness, his nurse,--all did not merely dislike Vronsky, but looked on\nhim with horror and aversion, though they never said anything about him,\nwhile his mother looked on him as her greatest friend.\n\n\"What does it mean? Who is he? How ought I to love him? If I don't know,\nit's my fault; either I'm stupid or a naughty boy,\" thought the child.\nAnd this was what caused his dubious, inquiring, sometimes hostile,\nexpression, and the shyness and uncertainty which Vronsky found so\nirksome. This child's presence always and infallibly called up in\nVronsky that strange feeling of inexplicable loathing which he had\nexperienced of late. This child's presence called up both in Vronsky and\nin Anna a feeling akin to the feeling of a sailor who sees by the\ncompass that the direction in which he is swiftly moving is far from the\nright one, but that to arrest his motion is not in his power, that every\ninstant is carrying him further and further away, and that to admit to\nhimself his deviation from the right direction is the same as admitting\nhis certain ruin.\n\nThis child, with his innocent outlook upon life, was the compass that\nshowed them the point to which they had departed from what they knew,\nbut did not want to know.\n\nThis time Seryozha was not at home, and she was completely alone. She\nwas sitting on the terrace waiting for the return of her son, who had\ngone out for his walk and been caught in the rain. She had sent a\nmanservant and a maid out to look for him. Dressed in a white gown,\ndeeply embroidered, she was sitting in a corner of the terrace behind\nsome flowers, and did not hear him. Bending her curly black head, she\npressed her forehead against a cool watering pot that stood on the\nparapet, and both her lovely hands, with the rings he knew so well,\nclasped the pot. The beauty of her whole figure, her head, her neck, her\nhands, struck Vronsky every time as something new and unexpected. He\nstood still, gazing at her in ecstasy. But, directly he would have made\na step to come nearer to her, she was aware of his presence, pushed away\nthe watering pot, and turned her flushed face towards him.\n\n\"What's the matter? You are ill?\" he said to her in French, going up to\nher. He would have run to her, but remembering that there might be\nspectators, he looked round towards the balcony door, and reddened a\nlittle, as he always reddened, feeling that he had to be afraid and be\non his guard.\n\n\"No, I'm quite well,\" she said, getting up and pressing his outstretched\nhand tightly. \"I did not expect ... thee.\"\n\n\"Mercy! what cold hands!\" he said.\n\n\"You startled me,\" she said. \"I'm alone, and expecting Seryozha; he's\nout for a walk; they'll come in from this side.\"\n\nBut, in spite of her efforts to be calm, her lips were quivering.\n\n\"Forgive me for coming, but I couldn't pass the day without seeing you,\"\nhe went on, speaking French, as he always did to avoid using the stiff\nRussian plural form, so impossibly frigid between them, and the\ndangerously intimate singular.\n\n\"Forgive you? I'm so glad!\"\n\n\"But you're ill or worried,\" he went on, not letting go her hands and\nbending over her. \"What were you thinking of?\"\n\n\"Always the same thing,\" she said, with a smile.\n\nShe spoke the truth. If ever at any moment she had been asked what she\nwas thinking of, she could have answered truly: of the same thing, of\nher happiness and her unhappiness. She was thinking, just when he came\nupon her, of this: why was it, she wondered, that to others, to Betsy\n(she knew of her secret connection with Tushkevitch) it was all easy,\nwhile to her it was such torture? Today this thought gained special\npoignancy from certain other considerations. She asked him about the\nraces. He answered her questions, and, seeing that she was agitated,\ntrying to calm her, he began telling her in the simplest tone the\ndetails of his preparations for the races.\n\n\"Tell him or not tell him?\" she thought, looking into his quiet,\naffectionate eyes. \"He is so happy, so absorbed in his races that he\nwon't understand as he ought, he won't understand all the gravity of\nthis fact to us.\"\n\n\"But you haven't told me what you were thinking of when I came in,\" he\nsaid, interrupting his narrative; \"please tell me!\"\n\nShe did not answer, and, bending her head a little, she looked\ninquiringly at him from under her brows, her eyes shining under their\nlong lashes. Her hand shook as it played with a leaf she had picked. He\nsaw it, and his face expressed that utter subjection, that slavish\ndevotion, which had done so much to win her.\n\n\"I see something has happened. Do you suppose I can be at peace, knowing\nyou have a trouble I am not sharing? Tell me, for God's sake,\" he\nrepeated imploringly.\n\n\"Yes, I shan't be able to forgive him if he does not realize all the\ngravity of it. Better not tell; why put him to the proof?\" she thought,\nstill staring at him in the same way, and feeling the hand that held the\nleaf was trembling more and more.\n\n\"For God's sake!\" he repeated, taking her hand.\n\n\"Shall I tell you?\"\n\n\"Yes, yes, yes . . .\"\n\n\"I'm with child,\" she said, softly and deliberately. The leaf in her\nhand shook more violently, but she did not take her eyes off him,\nwatching how he would take it. He turned white, would have said\nsomething, but stopped; he dropped her hand, and his head sank on his\nbreast. \"Yes, he realizes all the gravity of it,\" she thought, and\ngratefully she pressed his hand.\n\nBut she was mistaken in thinking he realized the gravity of the fact as\nshe, a woman, realized it. On hearing it, he felt come upon him with\ntenfold intensity that strange feeling of loathing of someone. But at\nthe same time, he felt that the turning-point he had been longing for\nhad come now; that it was impossible to go on concealing things from her\nhusband, and it was inevitable in one way or another that they should\nsoon put an end to their unnatural position. But, besides that, her\nemotion physically affected him in the same way. He looked at her with a\nlook of submissive tenderness, kissed her hand, got up, and, in silence,\npaced up and down the terrace.\n\n\"Yes,\" he said, going up to her resolutely. \"Neither you nor I have\nlooked on our relations as a passing amusement, and now our fate is\nsealed. It is absolutely necessary to put an end\"--he looked round as he\nspoke--\"to the deception in which we are living.\"\n\n\"Put an end? How put an end, Alexey?\" she said softly.\n\nShe was calmer now, and her face lighted up with a tender smile.\n\n\"Leave your husband and make our life one.\"\n\n\"It is one as it is,\" she answered, scarcely audibly.\n\n\"Yes, but altogether; altogether.\"\n\n\"But how, Alexey, tell me how?\" she said in melancholy mockery at the\nhopelessness of her own position. \"Is there any way out of such a\nposition? Am I not the wife of my husband?\"\n\n\"There is a way out of every position. We must take our line,\" he said.\n\"Anything's better than the position in which you're living. Of course,\nI see how you torture yourself over everything--the world and your son\nand your husband.\"\n\n\"Oh, not over my husband,\" she said, with a quiet smile. \"I don't know\nhim, I don't think of him. He doesn't exist.\"\n\n\"You're not speaking sincerely. I know you. You worry about him too.\"\n\n\"Oh, he doesn't even know,\" she said, and suddenly a hot flush came over\nher face; her cheeks, her brow, her neck crimsoned, and tears of shame\ncame into her eyes. \"But we won't talk of him.\"\n\n\n\nChapter 23\n\n\nVronsky had several times already, though not so resolutely as now,\ntried to bring her to consider their position, and every time he had\nbeen confronted by the same superficiality and triviality with which she\nmet his appeal now. It was as though there were something in this which\nshe could not or would not face, as though directly she began to speak\nof this, she, the real Anna, retreated somehow into herself, and another\nstrange and unaccountable woman came out, whom he did not love, and whom\nhe feared, and who was in opposition to him. But today he was resolved\nto have it out.\n\n\"Whether he knows or not,\" said Vronsky, in his usual quiet and resolute\ntone, \"that's nothing to do with us. We cannot ... you cannot stay like\nthis, especially now.\"\n\n\"What's to be done, according to you?\" she asked with the same frivolous\nirony. She who had so feared he would take her condition too lightly was\nnow vexed with him for deducing from it the necessity of taking some\nstep.\n\n\"Tell him everything, and leave him.\"\n\n\"Very well, let us suppose I do that,\" she said. \"Do you know what the\nresult of that would be? I can tell you it all beforehand,\" and a wicked\nlight gleamed in her eyes, that had been so soft a minute before. \"'Eh,\nyou love another man, and have entered into criminal intrigues with\nhim?'\" (Mimicking her husband, she threw an emphasis on the word\n\"criminal,\" as Alexey Alexandrovitch did.) \"'I warned you of the results\nin the religious, the civil, and the domestic relation. You have not\nlistened to me. Now I cannot let you disgrace my name,--'\" \"and my son,\"\nshe had meant to say, but about her son she could not jest,--\"'disgrace\nmy name, and'--and more in the same style,\" she added. \"In general\nterms, he'll say in his official manner, and with all distinctness and\nprecision, that he cannot let me go, but will take all measures in his\npower to prevent scandal. And he will calmly and punctually act in\naccordance with his words. That's what will happen. He's not a man, but\na machine, and a spiteful machine when he's angry,\" she added, recalling\nAlexey Alexandrovitch as she spoke, with all the peculiarities of his\nfigure and manner of speaking, and reckoning against him every defect\nshe could find in him, softening nothing for the great wrong she herself\nwas doing him.\n\n\"But, Anna,\" said Vronsky, in a soft and persuasive voice, trying to\nsoothe her, \"we absolutely must, anyway, tell him, and then be guided by\nthe line he takes.\"\n\n\"What, run away?\"\n\n\"And why not run away? I don't see how we can keep on like this. And not\nfor my sake--I see that you suffer.\"\n\n\"Yes, run away, and become your mistress,\" she said angrily.\n\n\"Anna,\" he said, with reproachful tenderness.\n\n\"Yes,\" she went on, \"become your mistress, and complete the ruin of...\"\n\nAgain she would have said \"my son,\" but she could not utter that word.\n\nVronsky could not understand how she, with her strong and truthful\nnature, could endure this state of deceit, and not long to get out of\nit. But he did not suspect that the chief cause of it was the\nword--_son_, which she could not bring herself to pronounce. When she\nthought of her son, and his future attitude to his mother, who had\nabandoned his father, she felt such terror at what she had done, that\nshe could not face it; but, like a woman, could only try to comfort\nherself with lying assurances that everything would remain as it always\nhad been, and that it was possible to forget the fearful question of how\nit would be with her son.\n\n\"I beg you, I entreat you,\" she said suddenly, taking his hand, and\nspeaking in quite a different tone, sincere and tender, \"never speak to\nme of that!\"\n\n\"But, Anna...\"\n\n\"Never. Leave it to me. I know all the baseness, all the horror of my\nposition; but it's not so easy to arrange as you think. And leave it to\nme, and do what I say. Never speak to me of it. Do you promise me?...\nNo, no, promise!...\"\n\n\"I promise everything, but I can't be at peace, especially after what\nyou have told me. I can't be at peace, when you can't be at peace....\"\n\n\"I?\" she repeated. \"Yes, I am worried sometimes; but that will pass, if\nyou will never talk about this. When you talk about it--it's only then\nit worries me.\"\n\n\"I don't understand,\" he said.\n\n\"I know,\" she interrupted him, \"how hard it is for your truthful nature\nto lie, and I grieve for you. I often think that you have ruined your\nwhole life for me.\"\n\n\"I was just thinking the very same thing,\" he said; \"how could you\nsacrifice everything for my sake? I can't forgive myself that you're\nunhappy!\"\n\n\"I unhappy?\" she said, coming closer to him, and looking at him with an\necstatic smile of love. \"I am like a hungry man who has been given food.\nHe may be cold, and dressed in rags, and ashamed, but he is not unhappy.\nI unhappy? No, this is my unhappiness....\"\n\nShe could hear the sound of her son's voice coming towards them, and\nglancing swiftly round the terrace, she got up impulsively. Her eyes\nglowed with the fire he knew so well; with a rapid movement she raised\nher lovely hands, covered with rings, took his head, looked a long look\ninto his face, and, putting up her face with smiling, parted lips,\nswiftly kissed his mouth and both eyes, and pushed him away. She would\nhave gone, but he held her back.\n\n\"When?\" he murmured in a whisper, gazing in ecstasy at her.\n\n\"Tonight, at one o'clock,\" she whispered, and, with a heavy sigh, she\nwalked with her light, swift step to meet her son.\n\nSeryozha had been caught by the rain in the big garden, and he and his\nnurse had taken shelter in an arbor.\n\n\"Well, _au revoir_,\" she said to Vronsky. \"I must soon be getting ready\nfor the races. Betsy promised to fetch me.\"\n\nVronsky, looking at his watch, went away hurriedly.\n\n\n\nChapter 24\n\n\nWhen Vronsky looked at his watch on the Karenins' balcony, he was so\ngreatly agitated and lost in his thoughts that he saw the figures on the\nwatch's face, but could not take in what time it was. He came out on to\nthe high road and walked, picking his way carefully through the mud, to\nhis carriage. He was so completely absorbed in his feeling for Anna,\nthat he did not even think what o'clock it was, and whether he had time\nto go to Bryansky's. He had left him, as often happens, only the\nexternal faculty of memory, that points out each step one has to take,\none after the other. He went up to his coachman, who was dozing on the\nbox in the shadow, already lengthening, of a thick limetree; he admired\nthe shifting clouds of midges circling over the hot horses, and, waking\nthe coachman, he jumped into the carriage, and told him to drive to\nBryansky's. It was only after driving nearly five miles that he had\nsufficiently recovered himself to look at his watch, and realize that it\nwas half-past five, and he was late.\n\nThere were several races fixed for that day: the Mounted Guards' race,\nthen the officers' mile-and-a-half race, then the three-mile race, and\nthen the race for which he was entered. He could still be in time for\nhis race, but if he went to Bryansky's he could only just be in time,\nand he would arrive when the whole of the court would be in their\nplaces. That would be a pity. But he had promised Bryansky to come, and\nso he decided to drive on, telling the coachman not to spare the horses.\n\nHe reached Bryansky's, spent five minutes there, and galloped back. This\nrapid drive calmed him. All that was painful in his relations with Anna,\nall the feeling of indefiniteness left by their conversation, had\nslipped out of his mind. He was thinking now with pleasure and\nexcitement of the race, of his being anyhow, in time, and now and then\nthe thought of the blissful interview awaiting him that night flashed\nacross his imagination like a flaming light.\n\nThe excitement of the approaching race gained upon him as he drove\nfurther and further into the atmosphere of the races, overtaking\ncarriages driving up from the summer villas or out of Petersburg.\n\nAt his quarters no one was left at home; all were at the races, and his\nvalet was looking out for him at the gate. While he was changing his\nclothes, his valet told him that the second race had begun already, that\na lot of gentlemen had been to ask for him, and a boy had twice run up\nfrom the stables. Dressing without hurry (he never hurried himself, and\nnever lost his self-possession), Vronsky drove to the sheds. From the\nsheds he could see a perfect sea of carriages, and people on foot,\nsoldiers surrounding the race course, and pavilions swarming with\npeople. The second race was apparently going on, for just as he went\ninto the sheds he heard a bell ringing. Going towards the stable, he met\nthe white-legged chestnut, Mahotin's Gladiator, being led to the\nrace-course in a blue forage horsecloth, with what looked like huge ears\nedged with blue.\n\n\"Where's Cord?\" he asked the stable-boy.\n\n\"In the stable, putting on the saddle.\"\n\nIn the open horse-box stood Frou-Frou, saddled ready. They were just\ngoing to lead her out.\n\n\"I'm not too late?\"\n\n\"All right! All right!\" said the Englishman; \"don't upset yourself!\"\n\nVronsky once more took in in one glance the exquisite lines of his\nfavorite mare; who was quivering all over, and with an effort he tore\nhimself from the sight of her, and went out of the stable. He went\ntowards the pavilions at the most favorable moment for escaping\nattention. The mile-and-a-half race was just finishing, and all eyes\nwere fixed on the horse-guard in front and the light hussar behind,\nurging their horses on with a last effort close to the winning post.\nFrom the center and outside of the ring all were crowding to the winning\npost, and a group of soldiers and officers of the horse-guards were\nshouting loudly their delight at the expected triumph of their officer\nand comrade. Vronsky moved into the middle of the crowd unnoticed,\nalmost at the very moment when the bell rang at the finish of the race,\nand the tall, mudspattered horse-guard who came in first, bending over\nthe saddle, let go the reins of his panting gray horse that looked dark\nwith sweat.\n\nThe horse, stiffening out its legs, with an effort stopped its rapid\ncourse, and the officer of the horse-guards looked round him like a man\nwaking up from a heavy sleep, and just managed to smile. A crowd of\nfriends and outsiders pressed round him.\n\nVronsky intentionally avoided that select crowd of the upper world,\nwhich was moving and talking with discreet freedom before the pavilions.\nHe knew that Madame Karenina was there, and Betsy, and his brother's\nwife, and he purposely did not go near them for fear of something\ndistracting his attention. But he was continually met and stopped by\nacquaintances, who told him about the previous races, and kept asking\nhim why he was so late.\n\nAt the time when the racers had to go to the pavilion to receive the\nprizes, and all attention was directed to that point, Vronsky's elder\nbrother, Alexander, a colonel with heavy fringed epaulets, came up to\nhim. He was not tall, though as broadly built as Alexey, and handsomer\nand rosier than he; he had a red nose, and an open, drunken-looking\nface.\n\n\"Did you get my note?\" he said. \"There's never any finding you.\"\n\nAlexander Vronsky, in spite of the dissolute life, and in especial the\ndrunken habits, for which he was notorious, was quite one of the court\ncircle.\n\nNow, as he talked to his brother of a matter bound to be exceedingly\ndisagreeable to him, knowing that the eyes of many people might be fixed\nupon him, he kept a smiling countenance, as though he were jesting with\nhis brother about something of little moment.\n\n\"I got it, and I really can't make out what _you_ are worrying yourself\nabout,\" said Alexey.\n\n\"I'm worrying myself because the remark has just been made to me that\nyou weren't here, and that you were seen in Peterhof on Monday.\"\n\n\"There are matters which only concern those directly interested in them,\nand the matter you are so worried about is...\"\n\n\"Yes, but if so, you may as well cut the service....\"\n\n\"I beg you not to meddle, and that's all I have to say.\"\n\nAlexey Vronsky's frowning face turned white, and his prominent lower jaw\nquivered, which happened rarely with him. Being a man of very warm\nheart, he was seldom angry; but when he was angry, and when his chin\nquivered, then, as Alexander Vronsky knew, he was dangerous. Alexander\nVronsky smiled gaily.\n\n\"I only wanted to give you Mother's letter. Answer it, and don't worry\nabout anything just before the race. _Bonne chance,_\" he added, smiling\nand he moved away from him. But after him another friendly greeting\nbrought Vronsky to a standstill.\n\n\"So you won't recognize your friends! How are you, _mon cher?_\" said\nStepan Arkadyevitch, as conspicuously brilliant in the midst of all the\nPetersburg brilliance as he was in Moscow, his face rosy, and his\nwhiskers sleek and glossy. \"I came up yesterday, and I'm delighted that\nI shall see your triumph. When shall we meet?\"\n\n\"Come tomorrow to the messroom,\" said Vronsky, and squeezing him by the\nsleeve of his coat, with apologies, he moved away to the center of the\nrace course, where the horses were being led for the great steeplechase.\n\nThe horses who had run in the last race were being led home, steaming\nand exhausted, by the stable-boys, and one after another the fresh\nhorses for the coming race made their appearance, for the most part\nEnglish racers, wearing horsecloths, and looking with their drawn-up\nbellies like strange, huge birds. On the right was led in Frou-Frou,\nlean and beautiful, lifting up her elastic, rather long pasterns, as\nthough moved by springs. Not far from her they were taking the rug off\nthe lop-eared Gladiator. The strong, exquisite, perfectly correct lines\nof the stallion, with his superb hind-quarters and excessively short\npasterns almost over his hoofs, attracted Vronsky's attention in spite\nof himself. He would have gone up to his mare, but he was again detained\nby an acquaintance.\n\n\"Oh, there's Karenin!\" said the acquaintance with whom he was chatting.\n\"He's looking for his wife, and she's in the middle of the pavilion.\nDidn't you see her?\"\n\n\"No,\" answered Vronsky, and without even glancing round towards the\npavilion where his friend was pointing out Madame Karenina, he went up\nto his mare.\n\nVronsky had not had time to look at the saddle, about which he had to\ngive some direction, when the competitors were summoned to the pavilion\nto receive their numbers and places in the row at starting. Seventeen\nofficers, looking serious and severe, many with pale faces, met together\nin the pavilion and drew the numbers. Vronsky drew the number seven. The\ncry was heard: \"Mount!\"\n\nFeeling that with the others riding in the race, he was the center upon\nwhich all eyes were fastened, Vronsky walked up to his mare in that\nstate of nervous tension in which he usually became deliberate and\ncomposed in his movements. Cord, in honor of the races, had put on his\nbest clothes, a black coat buttoned up, a stiffly starched collar, which\npropped up his cheeks, a round black hat, and top boots. He was calm and\ndignified as ever, and was with his own hands holding Frou-Frou by both\nreins, standing straight in front of her. Frou-Frou was still trembling\nas though in a fever. Her eye, full of fire, glanced sideways at\nVronsky. Vronsky slipped his finger under the saddle-girth. The mare\nglanced aslant at him, drew up her lip, and twitched her ear. The\nEnglishman puckered up his lips, intending to indicate a smile that\nanyone should verify his saddling.\n\n\"Get up; you won't feel so excited.\"\n\nVronsky looked round for the last time at his rivals. He knew that he\nwould not see them during the race. Two were already riding forward to\nthe point from which they were to start. Galtsin, a friend of Vronsky's\nand one of his more formidable rivals, was moving round a bay horse that\nwould not let him mount. A little light hussar in tight riding breeches\nrode off at a gallop, crouched up like a cat on the saddle, in imitation\nof English jockeys. Prince Kuzovlev sat with a white face on his\nthoroughbred mare from the Grabovsky stud, while an English groom led\nher by the bridle. Vronsky and all his comrades knew Kuzovlev and his\npeculiarity of \"weak nerves\" and terrible vanity. They knew that he was\nafraid of everything, afraid of riding a spirited horse. But now, just\nbecause it was terrible, because people broke their necks, and there was\na doctor standing at each obstacle, and an ambulance with a cross on it,\nand a sister of mercy, he had made up his mind to take part in the race.\nTheir eyes met, and Vronsky gave him a friendly and encouraging nod.\nOnly one he did not see, his chief rival, Mahotin on Gladiator.\n\n\"Don't be in a hurry,\" said Cord to Vronsky, \"and remember one thing:\ndon't hold her in at the fences, and don't urge her on; let her go as\nshe likes.\"\n\n\"All right, all right,\" said Vronsky, taking the reins.\n\n\"If you can, lead the race; but don't lose heart till the last minute,\neven if you're behind.\"\n\nBefore the mare had time to move, Vronsky stepped with an agile,\nvigorous movement into the steel-toothed stirrup, and lightly and firmly\nseated himself on the creaking leather of the saddle. Getting his right\nfoot in the stirrup, he smoothed the double reins, as he always did,\nbetween his fingers, and Cord let go.\n\nAs though she did not know which foot to put first, Frou-Frou started,\ndragging at the reins with her long neck, and as though she were on\nsprings, shaking her rider from side to side. Cord quickened his step,\nfollowing him. The excited mare, trying to shake off her rider first on\none side and then the other, pulled at the reins, and Vronsky tried in\nvain with voice and hand to soothe her.\n\nThey were just reaching the dammed-up stream on their way to the\nstarting point. Several of the riders were in front and several behind,\nwhen suddenly Vronsky heard the sound of a horse galloping in the mud\nbehind him, and he was overtaken by Mahotin on his white-legged,\nlop-eared Gladiator. Mahotin smiled, showing his long teeth, but Vronsky\nlooked angrily at him. He did not like him, and regarded him now as his\nmost formidable rival. He was angry with him for galloping past and\nexciting his mare. Frou-Frou started into a gallop, her left foot\nforward, made two bounds, and fretting at the tightened reins, passed\ninto a jolting trot, bumping her rider up and down. Cord, too, scowled,\nand followed Vronsky almost at a trot.\n\n\n\nChapter 25\n\n\nThere were seventeen officers in all riding in this race. The race\ncourse was a large three-mile ring of the form of an ellipse in front of\nthe pavilion. On this course nine obstacles had been arranged: the\nstream, a big and solid barrier five feet high, just before the\npavilion, a dry ditch, a ditch full of water, a precipitous slope, an\nIrish barricade (one of the most difficult obstacles, consisting of a\nmound fenced with brushwood, beyond which was a ditch out of sight for\nthe horses, so that the horse had to clear both obstacles or might be\nkilled); then two more ditches filled with water, and one dry one; and\nthe end of the race was just facing the pavilion. But the race began not\nin the ring, but two hundred yards away from it, and in that part of the\ncourse was the first obstacle, a dammed-up stream, seven feet in\nbreadth, which the racers could leap or wade through as they preferred.\n\nThree times they were ranged ready to start, but each time some horse\nthrust itself out of line, and they had to begin again. The umpire who\nwas starting them, Colonel Sestrin, was beginning to lose his temper,\nwhen at last for the fourth time he shouted \"Away!\" and the racers\nstarted.\n\nEvery eye, every opera glass, was turned on the brightly colored group\nof riders at the moment they were in line to start.\n\n\"They're off! They're starting!\" was heard on all sides after the hush\nof expectation.\n\nAnd little groups and solitary figures among the public began running\nfrom place to place to get a better view. In the very first minute the\nclose group of horsemen drew out, and it could be seen that they were\napproaching the stream in twos and threes and one behind another. To the\nspectators it seemed as though they had all started simultaneously, but\nto the racers there were seconds of difference that had great value to\nthem.\n\nFrou-Frou, excited and over-nervous, had lost the first moment, and\nseveral horses had started before her, but before reaching the stream,\nVronsky, who was holding in the mare with all his force as she tugged at\nthe bridle, easily overtook three, and there were left in front of him\nMahotin's chestnut Gladiator, whose hind-quarters were moving lightly\nand rhythmically up and down exactly in front of Vronsky, and in front\nof all, the dainty mare Diana bearing Kuzovlev more dead than alive.\n\nFor the first instant Vronsky was not master either of himself or his\nmare. Up to the first obstacle, the stream, he could not guide the\nmotions of his mare.\n\nGladiator and Diana came up to it together and almost at the same\ninstant; simultaneously they rose above the stream and flew across to\nthe other side; Frou-Frou darted after them, as if flying; but at the\nvery moment when Vronsky felt himself in the air, he suddenly saw almost\nunder his mare's hoofs Kuzovlev, who was floundering with Diana on the\nfurther side of the stream. (Kuzovlev had let go the reins as he took\nthe leap, and the mare had sent him flying over her head.) Those details\nVronsky learned later; at the moment all he saw was that just under him,\nwhere Frou-Frou must alight, Diana's legs or head might be in the way.\nBut Frou-Frou drew up her legs and back in the very act of leaping, like\na falling cat, and, clearing the other mare, alighted beyond her.\n\n\"O the darling!\" thought Vronsky.\n\nAfter crossing the stream Vronsky had complete control of his mare, and\nbegan holding her in, intending to cross the great barrier behind\nMahotin, and to try to overtake him in the clear ground of about five\nhundred yards that followed it.\n\nThe great barrier stood just in front of the imperial pavilion. The Tsar\nand the whole court and crowds of people were all gazing at them--at\nhim, and Mahotin a length ahead of him, as they drew near the \"devil,\"\nas the solid barrier was called. Vronsky was aware of those eyes\nfastened upon him from all sides, but he saw nothing except the ears and\nneck of his own mare, the ground racing to meet him, and the back and\nwhite legs of Gladiator beating time swiftly before him, and keeping\nalways the same distance ahead. Gladiator rose, with no sound of\nknocking against anything. With a wave of his short tail he disappeared\nfrom Vronsky's sight.\n\n\"Bravo!\" cried a voice.\n\nAt the same instant, under Vronsky's eyes, right before him flashed the\npalings of the barrier. Without the slightest change in her action his\nmare flew over it; the palings vanished, and he heard only a crash\nbehind him. The mare, excited by Gladiator's keeping ahead, had risen\ntoo soon before the barrier, and grazed it with her hind hoofs. But her\npace never changed, and Vronsky, feeling a spatter of mud in his face,\nrealized that he was once more the same distance from Gladiator. Once\nmore he perceived in front of him the same back and short tail, and\nagain the same swiftly moving white legs that got no further away.\n\nAt the very moment when Vronsky thought that now was the time to\novertake Mahotin, Frou-Frou herself, understanding his thoughts, without\nany incitement on his part, gained ground considerably, and began\ngetting alongside of Mahotin on the most favorable side, close to the\ninner cord. Mahotin would not let her pass that side. Vronsky had hardly\nformed the thought that he could perhaps pass on the outer side, when\nFrou-Frou shifted her pace and began overtaking him on the other side.\nFrou-Frou's shoulder, beginning by now to be dark with sweat, was even\nwith Gladiator's back. For a few lengths they moved evenly. But before\nthe obstacle they were approaching, Vronsky began working at the reins,\nanxious to avoid having to take the outer circle, and swiftly passed\nMahotin just upon the declivity. He caught a glimpse of his mud-stained\nface as he flashed by. He even fancied that he smiled. Vronsky passed\nMahotin, but he was immediately aware of him close upon him, and he\nnever ceased hearing the even-thudding hoofs and the rapid and still\nquite fresh breathing of Gladiator.\n\nThe next two obstacles, the water course and the barrier, were easily\ncrossed, but Vronsky began to hear the snorting and thud of Gladiator\ncloser upon him. He urged on his mare, and to his delight felt that she\neasily quickened her pace, and the thud of Gladiator's hoofs was again\nheard at the same distance away.\n\nVronsky was at the head of the race, just as he wanted to be and as Cord\nhad advised, and now he felt sure of being the winner. His excitement,\nhis delight, and his tenderness for Frou-Frou grew keener and keener. He\nlonged to look round again, but he did not dare do this, and tried to be\ncool and not to urge on his mare so to keep the same reserve of force in\nher as he felt that Gladiator still kept. There remained only one\nobstacle, the most difficult; if he could cross it ahead of the others\nhe would come in first. He was flying towards the Irish barricade,\nFrou-Frou and he both together saw the barricade in the distance, and\nboth the man and the mare had a moment's hesitation. He saw the\nuncertainty in the mare's ears and lifted the whip, but at the same time\nfelt that his fears were groundless; the mare knew what was wanted. She\nquickened her pace and rose smoothly, just as he had fancied she would,\nand as she left the ground gave herself up to the force of her rush,\nwhich carried her far beyond the ditch; and with the same rhythm,\nwithout effort, with the same leg forward, Frou-Frou fell back into her\npace again.\n\n\"Bravo, Vronsky!\" he heard shouts from a knot of men--he knew they were\nhis friends in the regiment--who were standing at the obstacle. He could\nnot fail to recognize Yashvin's voice though he did not see him.\n\n\"O my sweet!\" he said inwardly to Frou-Frou, as he listened for what was\nhappening behind. \"He's cleared it!\" he thought, catching the thud of\nGladiator's hoofs behind him. There remained only the last ditch, filled\nwith water and five feet wide. Vronsky did not even look at it, but\nanxious to get in a long way first began sawing away at the reins,\nlifting the mare's head and letting it go in time with her paces. He\nfelt that the mare was at her very last reserve of strength; not her\nneck and shoulders merely were wet, but the sweat was standing in drops\non her mane, her head, her sharp ears, and her breath came in short,\nsharp gasps. But he knew that she had strength left more than enough for\nthe remaining five hundred yards. It was only from feeling himself\nnearer the ground and from the peculiar smoothness of his motion that\nVronsky knew how greatly the mare had quickened her pace. She flew over\nthe ditch as though not noticing it. She flew over it like a bird; but\nat the same instant Vronsky, to his horror, felt that he had failed to\nkeep up with the mare's pace, that he had, he did not know how, made a\nfearful, unpardonable mistake, in recovering his seat in the saddle. All\nat once his position had shifted and he knew that something awful had\nhappened. He could not yet make out what had happened, when the white\nlegs of a chestnut horse flashed by close to him, and Mahotin passed at\na swift gallop. Vronsky was touching the ground with one foot, and his\nmare was sinking on that foot. He just had time to free his leg when she\nfell on one side, gasping painfully, and, making vain efforts to rise\nwith her delicate, soaking neck, she fluttered on the ground at his feet\nlike a shot bird. The clumsy movement made by Vronsky had broken her\nback. But that he only knew much later. At that moment he knew only that\nMahotin had flown swiftly by, while he stood staggering alone on the\nmuddy, motionless ground, and Frou-Frou lay gasping before him, bending\nher head back and gazing at him with her exquisite eyes. Still unable to\nrealize what had happened, Vronsky tugged at his mare's reins. Again she\nstruggled all over like a fish, and her shoulders setting the saddle\nheaving, she rose on her front legs but unable to lift her back, she\nquivered all over and again fell on her side. With a face hideous with\npassion, his lower jaw trembling, and his cheeks white, Vronsky kicked\nher with his heel in the stomach and again fell to tugging at the rein.\nShe did not stir, but thrusting her nose into the ground, she simply\ngazed at her master with her speaking eyes.\n\n\"A--a--a!\" groaned Vronsky, clutching at his head. \"Ah! what have I\ndone!\" he cried. \"The race lost! And my fault! shameful, unpardonable!\nAnd the poor darling, ruined mare! Ah! what have I done!\"\n\nA crowd of men, a doctor and his assistant, the officers of his\nregiment, ran up to him. To his misery he felt that he was whole and\nunhurt. The mare had broken her back, and it was decided to shoot her.\nVronsky could not answer questions, could not speak to anyone. He\nturned, and without picking up his cap that had fallen off, walked away\nfrom the race course, not knowing where he was going. He felt utterly\nwretched. For the first time in his life he knew the bitterest sort of\nmisfortune, misfortune beyond remedy, and caused by his own fault.\n\nYashvin overtook him with his cap, and led him home, and half an hour\nlater Vronsky had regained his self-possession. But the memory of that\nrace remained for long in his heart, the cruelest and bitterest memory\nof his life.\n\n\n\nChapter 26\n\n\nThe external relations of Alexey Alexandrovitch and his wife had\nremained unchanged. The sole difference lay in the fact that he was more\nbusily occupied than ever. As in former years, at the beginning of the\nspring he had gone to a foreign watering-place for the sake of his\nhealth, deranged by the winter's work that every year grew heavier. And\njust as always he returned in July and at once fell to work as usual\nwith increased energy. As usual, too, his wife had moved for the summer\nto a villa out of town, while he remained in Petersburg. From the date\nof their conversation after the party at Princess Tverskaya's he had\nnever spoken again to Anna of his suspicions and his jealousies, and\nthat habitual tone of his bantering mimicry was the most convenient tone\npossible for his present attitude to his wife. He was a little colder to\nhis wife. He simply seemed to be slightly displeased with her for that\nfirst midnight conversation, which she had repelled. In his attitude to\nher there was a shade of vexation, but nothing more. \"You would not be\nopen with me,\" he seemed to say, mentally addressing her; \"so much the\nworse for you. Now you may beg as you please, but I won't be open with\nyou. So much the worse for you!\" he said mentally, like a man who, after\nvainly attempting to extinguish a fire, should fly in a rage with his\nvain efforts and say, \"Oh, very well then! you shall burn for this!\"\nThis man, so subtle and astute in official life, did not realize all the\nsenselessness of such an attitude to his wife. He did not realize it,\nbecause it was too terrible to him to realize his actual position, and\nhe shut down and locked and sealed up in his heart that secret place\nwhere lay hid his feelings towards his family, that is, his wife and\nson. He who had been such a careful father, had from the end of that\nwinter become peculiarly frigid to his son, and adopted to him just the\nsame bantering tone he used with his wife. \"Aha, young man!\" was the\ngreeting with which he met him.\n\nAlexey Alexandrovitch asserted and believed that he had never in any\nprevious year had so much official business as that year. But he was not\naware that he sought work for himself that year, that this was one of\nthe means for keeping shut that secret place where lay hid his feelings\ntowards his wife and son and his thoughts about them, which became more\nterrible the longer they lay there. If anyone had had the right to ask\nAlexey Alexandrovitch what he thought of his wife's behavior, the mild\nand peaceable Alexey Alexandrovitch would have made no answer, but he\nwould have been greatly angered with any man who should question him on\nthat subject. For this reason there positively came into Alexey\nAlexandrovitch's face a look of haughtiness and severity whenever anyone\ninquired after his wife's health. Alexey Alexandrovitch did not want to\nthink at all about his wife's behavior, and he actually succeeded in not\nthinking about it at all.\n\nAlexey Alexandrovitch's permanent summer villa was in Peterhof, and the\nCountess Lidia Ivanovna used as a rule to spend the summer there, close\nto Anna, and constantly seeing her. That year Countess Lidia Ivanovna\ndeclined to settle in Peterhof, was not once at Anna Arkadyevna's, and\nin conversation with Alexey Alexandrovitch hinted at the unsuitability\nof Anna's close intimacy with Betsy and Vronsky. Alexey Alexandrovitch\nsternly cut her short, roundly declaring his wife to be above suspicion,\nand from that time began to avoid Countess Lidia Ivanovna. He did not\nwant to see, and did not see, that many people in society cast dubious\nglances on his wife; he did not want to understand, and did not\nunderstand, why his wife had so particularly insisted on staying at\nTsarskoe, where Betsy was staying, and not far from the camp of\nVronsky's regiment. He did not allow himself to think about it, and he\ndid not think about it; but all the same though he never admitted it to\nhimself, and had no proofs, not even suspicious evidence, in the bottom\nof his heart he knew beyond all doubt that he was a deceived husband,\nand he was profoundly miserable about it.\n\nHow often during those eight years of happy life with his wife Alexey\nAlexandrovitch had looked at other men's faithless wives and other\ndeceived husbands and asked himself: \"How can people descend to that?\nhow is it they don't put an end to such a hideous position?\" But now,\nwhen the misfortune had come upon himself, he was so far from thinking\nof putting an end to the position that he would not recognize it at all,\nwould not recognize it just because it was too awful, too unnatural.\n\nSince his return from abroad Alexey Alexandrovitch had twice been at\ntheir country villa. Once he dined there, another time he spent the\nevening there with a party of friends, but he had not once stayed the\nnight there, as it had been his habit to do in previous years.\n\nThe day of the races had been a very busy day for Alexey Alexandrovitch;\nbut when mentally sketching out the day in the morning, he made up his\nmind to go to their country house to see his wife immediately after\ndinner, and from there to the races, which all the Court were to\nwitness, and at which he was bound to be present. He was going to see\nhis wife, because he had determined to see her once a week to keep up\nappearances. And besides, on that day, as it was the fifteenth, he had\nto give his wife some money for her expenses, according to their usual\narrangement.\n\nWith his habitual control over his thoughts, though he thought all this\nabout his wife, he did not let his thoughts stray further in regard to\nher.\n\nThat morning was a very full one for Alexey Alexandrovitch. The evening\nbefore, Countess Lidia Ivanovna had sent him a pamphlet by a celebrated\ntraveler in China, who was staying in Petersburg, and with it she\nenclosed a note begging him to see the traveler himself, as he was an\nextremely interesting person from various points of view, and likely to\nbe useful. Alexey Alexandrovitch had not had time to read the pamphlet\nthrough in the evening, and finished it in the morning. Then people\nbegan arriving with petitions, and there came the reports, interviews,\nappointments, dismissals, apportionment of rewards, pensions, grants,\nnotes, the workaday round, as Alexey Alexandrovitch called it, that\nalways took up so much time. Then there was private business of his own,\na visit from the doctor and the steward who managed his property. The\nsteward did not take up much time. He simply gave Alexey Alexandrovitch\nthe money he needed together with a brief statement of the position of\nhis affairs, which was not altogether satisfactory, as it had happened\nthat during that year, owing to increased expenses, more had been paid\nout than usual, and there was a deficit. But the doctor, a celebrated\nPetersburg doctor, who was an intimate acquaintance of Alexey\nAlexandrovitch, took up a great deal of time. Alexey Alexandrovitch had\nnot expected him that day, and was surprised at his visit, and still\nmore so when the doctor questioned him very carefully about his health,\nlistened to his breathing, and tapped at his liver. Alexey\nAlexandrovitch did not know that his friend Lidia Ivanovna, noticing\nthat he was not as well as usual that year, had begged the doctor to go\nand examine him. \"Do this for my sake,\" the Countess Lidia Ivanovna had\nsaid to him.\n\n\"I will do it for the sake of Russia, countess,\" replied the doctor.\n\n\"A priceless man!\" said the Countess Lidia Ivanovna.\n\nThe doctor was extremely dissatisfied with Alexey Alexandrovitch. He\nfound the liver considerably enlarged, and the digestive powers\nweakened, while the course of mineral waters had been quite without\neffect. He prescribed more physical exercise as far as possible, and as\nfar as possible less mental strain, and above all no worry--in other\nwords, just what was as much out of Alexey Alexandrovitch's power as\nabstaining from breathing. Then he withdrew, leaving in Alexey\nAlexandrovitch an unpleasant sense that something was wrong with him,\nand that there was no chance of curing it.\n\nAs he was coming away, the doctor chanced to meet on the staircase an\nacquaintance of his, Sludin, who was secretary of Alexey\nAlexandrovitch's department. They had been comrades at the university,\nand though they rarely met, they thought highly of each other and were\nexcellent friends, and so there was no one to whom the doctor would have\ngiven his opinion of a patient so freely as to Sludin.\n\n\"How glad I am you've been seeing him!\" said Sludin. \"He's not well, and\nI fancy.... Well, what do you think of him?\"\n\n\"I'll tell you,\" said the doctor, beckoning over Sludin's head to his\ncoachman to bring the carriage round. \"It's just this,\" said the doctor,\ntaking a finger of his kid glove in his white hands and pulling it, \"if\nyou don't strain the strings, and then try to break them, you'll find it\na difficult job; but strain a string to its very utmost, and the mere\nweight of one finger on the strained string will snap it. And with his\nclose assiduity, his conscientious devotion to his work, he's strained\nto the utmost; and there's some outside burden weighing on him, and not\na light one,\" concluded the doctor, raising his eyebrows significantly.\n\"Will you be at the races?\" he added, as he sank into his seat in the\ncarriage.\n\n\"Yes, yes, to be sure; it does waste a lot of time,\" the doctor\nresponded vaguely to some reply of Sludin's he had not caught.\n\nDirectly after the doctor, who had taken up so much time, came the\ncelebrated traveler, and Alexey Alexandrovitch, by means of the pamphlet\nhe had only just finished reading and his previous acquaintance with the\nsubject, impressed the traveler by the depth of his knowledge of the\nsubject and the breadth and enlightenment of his view of it.\n\nAt the same time as the traveler there was announced a provincial\nmarshal of nobility on a visit to Petersburg, with whom Alexey\nAlexandrovitch had to have some conversation. After his departure, he\nhad to finish the daily routine of business with his secretary, and then\nhe still had to drive round to call on a certain great personage on a\nmatter of grave and serious import. Alexey Alexandrovitch only just\nmanaged to be back by five o'clock, his dinner-hour, and after dining\nwith his secretary, he invited him to drive with him to his country\nvilla and to the races.\n\nThough he did not acknowledge it to himself, Alexey Alexandrovitch\nalways tried nowadays to secure the presence of a third person in his\ninterviews with his wife.\n\n\n\nChapter 27\n\n\nAnna was upstairs, standing before the looking glass, and, with\nAnnushka's assistance, pinning the last ribbon on her gown when she\nheard carriage wheels crunching the gravel at the entrance.\n\n\"It's too early for Betsy,\" she thought, and glancing out of the window\nshe caught sight of the carriage and the black hat of Alexey\nAlexandrovitch, and the ears that she knew so well sticking up each side\nof it. \"How unlucky! Can he be going to stay the night?\" she wondered,\nand the thought of all that might come of such a chance struck her as so\nawful and terrible that, without dwelling on it for a moment, she went\ndown to meet him with a bright and radiant face; and conscious of the\npresence of that spirit of falsehood and deceit in herself that she had\ncome to know of late, she abandoned herself to that spirit and began\ntalking, hardly knowing what she was saying.\n\n\"Ah, how nice of you!\" she said, giving her husband her hand, and\ngreeting Sludin, who was like one of the family, with a smile. \"You're\nstaying the night, I hope?\" was the first word the spirit of falsehood\nprompted her to utter; \"and now we'll go together. Only it's a pity I've\npromised Betsy. She's coming for me.\"\n\nAlexey Alexandrovitch knit his brows at Betsy's name.\n\n\"Oh, I'm not going to separate the inseparables,\" he said in his usual\nbantering tone. \"I'm going with Mihail Vassilievitch. I'm ordered\nexercise by the doctors too. I'll walk, and fancy myself at the springs\nagain.\"\n\n\"There's no hurry,\" said Anna. \"Would you like tea?\"\n\nShe rang.\n\n\"Bring in tea, and tell Seryozha that Alexey Alexandrovitch is here.\nWell, tell me, how have you been? Mihail Vassilievitch, you've not been\nto see me before. Look how lovely it is out on the terrace,\" she said,\nturning first to one and then to the other.\n\nShe spoke very simply and naturally, but too much and too fast. She was\nthe more aware of this from noticing in the inquisitive look Mihail\nVassilievitch turned on her that he was, as it were, keeping watch on\nher.\n\nMihail Vassilievitch promptly went out on the terrace.\n\nShe sat down beside her husband.\n\n\"You don't look quite well,\" she said.\n\n\"Yes,\" he said; \"the doctor's been with me today and wasted an hour of\nmy time. I feel that some one of our friends must have sent him: my\nhealth's so precious, it seems.\"\n\n\"No; what did he say?\"\n\nShe questioned him about his health and what he had been doing, and\ntried to persuade him to take a rest and come out to her.\n\nAll this she said brightly, rapidly, and with a peculiar brilliance in\nher eyes. But Alexey Alexandrovitch did not now attach any special\nsignificance to this tone of hers. He heard only her words and gave them\nonly the direct sense they bore. And he answered simply, though\njestingly. There was nothing remarkable in all this conversation, but\nnever after could Anna recall this brief scene without an agonizing pang\nof shame.\n\nSeryozha came in preceded by his governess. If Alexey Alexandrovitch had\nallowed himself to observe he would have noticed the timid and\nbewildered eyes with which Seryozha glanced first at his father and then\nat his mother. But he would not see anything, and he did not see it.\n\n\"Ah, the young man! He's grown. Really, he's getting quite a man. How\nare you, young man?\"\n\nAnd he gave his hand to the scared child. Seryozha had been shy of his\nfather before, and now, ever since Alexey Alexandrovitch had taken to\ncalling him young man, and since that insoluble question had occurred to\nhim whether Vronsky were a friend or a foe, he avoided his father. He\nlooked round towards his mother as though seeking shelter. It was only\nwith his mother that he was at ease. Meanwhile, Alexey Alexandrovitch\nwas holding his son by the shoulder while he was speaking to the\ngoverness, and Seryozha was so miserably uncomfortable that Anna saw he\nwas on the point of tears.\n\nAnna, who had flushed a little the instant her son came in, noticing\nthat Seryozha was uncomfortable, got up hurriedly, took Alexey\nAlexandrovitch's hand from her son's shoulder, and kissing the boy, led\nhim out onto the terrace, and quickly came back.\n\n\"It's time to start, though,\" said she, glancing at her watch. \"How is\nit Betsy doesn't come?...\"\n\n\"Yes,\" said Alexey Alexandrovitch, and getting up, he folded his hands\nand cracked his fingers. \"I've come to bring you some money, too, for\nnightingales, we know, can't live on fairy tales,\" he said. \"You want\nit, I expect?\"\n\n\"No, I don't ... yes, I do,\" she said, not looking at him, and\ncrimsoning to the roots of her hair. \"But you'll come back here after\nthe races, I suppose?\"\n\n\"Oh, yes!\" answered Alexey Alexandrovitch. \"And here's the glory of\nPeterhof, Princess Tverskaya,\" he added, looking out of the window at\nthe elegant English carriage with the tiny seats placed extremely high.\n\"What elegance! Charming! Well, let us be starting too, then.\"\n\nPrincess Tverskaya did not get out of her carriage, but her groom, in\nhigh boots, a cape, and black hat, darted out at the entrance.\n\n\"I'm going; good-bye!\" said Anna, and kissing her son, she went up to\nAlexey Alexandrovitch and held out her hand to him. \"It was ever so nice\nof you to come.\"\n\nAlexey Alexandrovitch kissed her hand.\n\n\"Well, _au revoir_, then! You'll come back for some tea; that's\ndelightful!\" she said, and went out, gay and radiant. But as soon as she\nno longer saw him, she was aware of the spot on her hand that his lips\nhad touched, and she shuddered with repulsion.\n\n\n\nChapter 28\n\n\nWhen Alexey Alexandrovitch reached the race-course, Anna was already\nsitting in the pavilion beside Betsy, in that pavilion where all the\nhighest society had gathered. She caught sight of her husband in the\ndistance. Two men, her husband and her lover, were the two centers of\nher existence, and unaided by her external senses she was aware of their\nnearness. She was aware of her husband approaching a long way off, and\nshe could not help following him in the surging crowd in the midst of\nwhich he was moving. She watched his progress towards the pavilion, saw\nhim now responding condescendingly to an ingratiating bow, now\nexchanging friendly, nonchalant greetings with his equals, now\nassiduously trying to catch the eye of some great one of this world, and\ntaking off his big round hat that squeezed the tips of his ears. All\nthese ways of his she knew, and all were hateful to her. \"Nothing but\nambition, nothing but the desire to get on, that's all there is in his\nsoul,\" she thought; \"as for these lofty ideals, love of culture,\nreligion, they are only so many tools for getting on.\"\n\nFrom his glances towards the ladies' pavilion (he was staring straight\nat her, but did not distinguish his wife in the sea of muslin, ribbons,\nfeathers, parasols and flowers) she saw that he was looking for her, but\nshe purposely avoided noticing him.\n\n\"Alexey Alexandrovitch!\" Princess Betsy called to him; \"I'm sure you\ndon't see your wife: here she is.\"\n\nHe smiled his chilly smile.\n\n\"There's so much splendor here that one's eyes are dazzled,\" he said,\nand he went into the pavilion. He smiled to his wife as a man should\nsmile on meeting his wife after only just parting from her, and greeted\nthe princess and other acquaintances, giving to each what was due--that\nis to say, jesting with the ladies and dealing out friendly greetings\namong the men. Below, near the pavilion, was standing an\nadjutant-general of whom Alexey Alexandrovitch had a high opinion, noted\nfor his intelligence and culture. Alexey Alexandrovitch entered into\nconversation with him.\n\nThere was an interval between the races, and so nothing hindered\nconversation. The adjutant-general expressed his disapproval of races.\nAlexey Alexandrovitch replied defending them. Anna heard his high,\nmeasured tones, not losing one word, and every word struck her as false,\nand stabbed her ears with pain.\n\nWhen the three-mile steeplechase was beginning, she bent forward and\ngazed with fixed eyes at Vronsky as he went up to his horse and mounted,\nand at the same time she heard that loathsome, never-ceasing voice of\nher husband. She was in an agony of terror for Vronsky, but a still\ngreater agony was the never-ceasing, as it seemed to her, stream of her\nhusband's shrill voice with its familiar intonations.\n\n\"I'm a wicked woman, a lost woman,\" she thought; \"but I don't like\nlying, I can't endure falsehood, while as for _him_ (her husband) it's\nthe breath of his life--falsehood. He knows all about it, he sees it\nall; what does he care if he can talk so calmly? If he were to kill me,\nif he were to kill Vronsky, I might respect him. No, all he wants is\nfalsehood and propriety,\" Anna said to herself, not considering exactly\nwhat it was she wanted of her husband, and how she would have liked to\nsee him behave. She did not understand either that Alexey\nAlexandrovitch's peculiar loquacity that day, so exasperating to her,\nwas merely the expression of his inward distress and uneasiness. As a\nchild that has been hurt skips about, putting all his muscles into\nmovement to drown the pain, in the same way Alexey Alexandrovitch needed\nmental exercise to drown the thoughts of his wife that in her presence\nand in Vronsky's, and with the continual iteration of his name, would\nforce themselves on his attention. And it was as natural for him to talk\nwell and cleverly, as it is natural for a child to skip about. He was\nsaying:\n\n\"Danger in the races of officers, of cavalry men, is an essential\nelement in the race. If England can point to the most brilliant feats of\ncavalry in military history, it is simply owing to the fact that she has\nhistorically developed this force both in beasts and in men. Sport has,\nin my opinion, a great value, and as is always the case, we see nothing\nbut what is most superficial.\"\n\n\"It's not superficial,\" said Princess Tverskaya. \"One of the officers,\nthey say, has broken two ribs.\"\n\nAlexey Alexandrovitch smiled his smile, which uncovered his teeth, but\nrevealed nothing more.\n\n\"We'll admit, princess, that that's not superficial,\" he said, \"but\ninternal. But that's not the point,\" and he turned again to the general\nwith whom he was talking seriously; \"we mustn't forget that those who\nare taking part in the race are military men, who have chosen that\ncareer, and one must allow that every calling has its disagreeable side.\nIt forms an integral part of the duties of an officer. Low sports, such\nas prize-fighting or Spanish bull-fights, are a sign of barbarity. But\nspecialized trials of skill are a sign of development.\"\n\n\"No, I shan't come another time; it's too upsetting,\" said Princess\nBetsy. \"Isn't it, Anna?\"\n\n\"It is upsetting, but one can't tear oneself away,\" said another lady.\n\"If I'd been a Roman woman I should never have missed a single circus.\"\n\nAnna said nothing, and keeping her opera glass up, gazed always at the\nsame spot.\n\nAt that moment a tall general walked through the pavilion. Breaking off\nwhat he was saying, Alexey Alexandrovitch got up hurriedly, though with\ndignity, and bowed low to the general.\n\n\"You're not racing?\" the officer asked, chaffing him.\n\n\"My race is a harder one,\" Alexey Alexandrovitch responded\ndeferentially.\n\nAnd though the answer meant nothing, the general looked as though he had\nheard a witty remark from a witty man, and fully relished _la pointe de\nla sauce_.\n\n\"There are two aspects,\" Alexey Alexandrovitch resumed: \"those who take\npart and those who look on; and love for such spectacles is an\nunmistakable proof of a low degree of development in the spectator, I\nadmit, but...\"\n\n\"Princess, bets!\" sounded Stepan Arkadyevitch's voice from below,\naddressing Betsy. \"Who's your favorite?\"\n\n\"Anna and I are for Kuzovlev,\" replied Betsy.\n\n\"I'm for Vronsky. A pair of gloves?\"\n\n\"Done!\"\n\n\"But it is a pretty sight, isn't it?\"\n\nAlexey Alexandrovitch paused while there was talking about him, but he\nbegan again directly.\n\n\"I admit that manly sports do not...\" he was continuing.\n\nBut at that moment the racers started, and all conversation ceased.\nAlexey Alexandrovitch too was silent, and everyone stood up and turned\ntowards the stream. Alexey Alexandrovitch took no interest in the race,\nand so he did not watch the racers, but fell listlessly to scanning the\nspectators with his weary eyes. His eyes rested upon Anna.\n\nHer face was white and set. She was obviously seeing nothing and no one\nbut one man. Her hand had convulsively clutched her fan, and she held\nher breath. He looked at her and hastily turned away, scrutinizing other\nfaces.\n\n\"But here's this lady too, and others very much moved as well; it's very\nnatural,\" Alexey Alexandrovitch told himself. He tried not to look at\nher, but unconsciously his eyes were drawn to her. He examined that face\nagain, trying not to read what was so plainly written on it, and against\nhis own will, with horror read on it what he did not want to know.\n\nThe first fall--Kuzovlev's, at the stream--agitated everyone, but Alexey\nAlexandrovitch saw distinctly on Anna's pale, triumphant face that the\nman she was watching had not fallen. When, after Mahotin and Vronsky had\ncleared the worst barrier, the next officer had been thrown straight on\nhis head at it and fatally injured, and a shudder of horror passed over\nthe whole public, Alexey Alexandrovitch saw that Anna did not even\nnotice it, and had some difficulty in realizing what they were talking\nof about her. But more and more often, and with greater persistence, he\nwatched her. Anna, wholly engrossed as she was with the race, became\naware of her husband's cold eyes fixed upon her from one side.\n\nShe glanced round for an instant, looked inquiringly at him, and with a\nslight frown turned away again.\n\n\"Ah, I don't care!\" she seemed to say to him, and she did not once\nglance at him again.\n\nThe race was an unlucky one, and of the seventeen officers who rode in\nit more than half were thrown and hurt. Towards the end of the race\neveryone was in a state of agitation, which was intensified by the fact\nthat the Tsar was displeased.\n\n\n\nChapter 29\n\n\nEveryone was loudly expressing disapprobation, everyone was repeating a\nphrase some one had uttered--\"The lions and gladiators will be the next\nthing,\" and everyone was feeling horrified; so that when Vronsky fell to\nthe ground, and Anna moaned aloud, there was nothing very out of the way\nin it. But afterwards a change came over Anna's face which really was\nbeyond decorum. She utterly lost her head. She began fluttering like a\ncaged bird, at one moment would have got up and moved away, at the next\nturned to Betsy.\n\n\"Let us go, let us go!\" she said.\n\nBut Betsy did not hear her. She was bending down, talking to a general\nwho had come up to her.\n\nAlexey Alexandrovitch went up to Anna and courteously offered her his\narm.\n\n\"Let us go, if you like,\" he said in French, but Anna was listening to\nthe general and did not notice her husband.\n\n\"He's broken his leg too, so they say,\" the general was saying. \"This is\nbeyond everything.\"\n\nWithout answering her husband, Anna lifted her opera glass and gazed\ntowards the place where Vronsky had fallen; but it was so far off, and\nthere was such a crowd of people about it, that she could make out\nnothing. She laid down the opera glass, and would have moved away, but\nat that moment an officer galloped up and made some announcement to the\nTsar. Anna craned forward, listening.\n\n\"Stiva! Stiva!\" she cried to her brother.\n\nBut her brother did not hear her. Again she would have moved away.\n\n\"Once more I offer you my arm if you want to be going,\" said Alexey\nAlexandrovitch, reaching towards her hand.\n\nShe drew back from him with aversion, and without looking in his face\nanswered:\n\n\"No, no, let me be, I'll stay.\"\n\nShe saw now that from the place of Vronsky's accident an officer was\nrunning across the course towards the pavilion. Betsy waved her\nhandkerchief to him. The officer brought the news that the rider was not\nkilled, but the horse had broken its back.\n\nOn hearing this Anna sat down hurriedly, and hid her face in her fan.\nAlexey Alexandrovitch saw that she was weeping, and could not control\nher tears, nor even the sobs that were shaking her bosom. Alexey\nAlexandrovitch stood so as to screen her, giving her time to recover\nherself.\n\n\"For the third time I offer you my arm,\" he said to her after a little\ntime, turning to her. Anna gazed at him and did not know what to say.\nPrincess Betsy came to her rescue.\n\n\"No, Alexey Alexandrovitch; I brought Anna and I promised to take her\nhome,\" put in Betsy.\n\n\"Excuse me, princess,\" he said, smiling courteously but looking her very\nfirmly in the face, \"but I see that Anna's not very well, and I wish her\nto come home with me.\"\n\nAnna looked about her in a frightened way, got up submissively, and laid\nher hand on her husband's arm.\n\n\"I'll send to him and find out, and let you know,\" Betsy whispered to\nher.\n\nAs they left the pavilion, Alexey Alexandrovitch, as always, talked to\nthose he met, and Anna had, as always, to talk and answer; but she was\nutterly beside herself, and moved hanging on her husband's arm as though\nin a dream.\n\n\"Is he killed or not? Is it true? Will he come or not? Shall I see him\ntoday?\" she was thinking.\n\nShe took her seat in her husband's carriage in silence, and in silence\ndrove out of the crowd of carriages. In spite of all he had seen, Alexey\nAlexandrovitch still did not allow himself to consider his wife's real\ncondition. He merely saw the outward symptoms. He saw that she was\nbehaving unbecomingly, and considered it his duty to tell her so. But it\nwas very difficult for him not to say more, to tell her nothing but\nthat. He opened his mouth to tell her she had behaved unbecomingly, but\nhe could not help saying something utterly different.\n\n\"What an inclination we all have, though, for these cruel spectacles,\"\nhe said. \"I observe...\"\n\n\"Eh? I don't understand,\" said Anna contemptuously.\n\nHe was offended, and at once began to say what he had meant to say.\n\n\"I am obliged to tell you,\" he began.\n\n\"So now we are to have it out,\" she thought, and she felt frightened.\n\n\"I am obliged to tell you that your behavior has been unbecoming today,\"\nhe said to her in French.\n\n\"In what way has my behavior been unbecoming?\" she said aloud, turning\nher head swiftly and looking him straight in the face, not with the\nbright expression that seemed covering something, but with a look of\ndetermination, under which she concealed with difficulty the dismay she\nwas feeling.\n\n\"Mind,\" he said, pointing to the open window opposite the coachman.\n\nHe got up and pulled up the window.\n\n\"What did you consider unbecoming?\" she repeated.\n\n\"The despair you were unable to conceal at the accident to one of the\nriders.\"\n\nHe waited for her to answer, but she was silent, looking straight before\nher.\n\n\"I have already begged you so to conduct yourself in society that even\nmalicious tongues can find nothing to say against you. There was a time\nwhen I spoke of your inward attitude, but I am not speaking of that now.\nNow I speak only of your external attitude. You have behaved improperly,\nand I would wish it not to occur again.\"\n\nShe did not hear half of what he was saying; she felt panic-stricken\nbefore him, and was thinking whether it was true that Vronsky was not\nkilled. Was it of him they were speaking when they said the rider was\nunhurt, but the horse had broken its back? She merely smiled with a\npretense of irony when he finished, and made no reply, because she had\nnot heard what he said. Alexey Alexandrovitch had begun to speak boldly,\nbut as he realized plainly what he was speaking of, the dismay she was\nfeeling infected him too. He saw the smile, and a strange\nmisapprehension came over him.\n\n\"She is smiling at my suspicions. Yes, she will tell me directly what\nshe told me before; that there is no foundation for my suspicions, that\nit's absurd.\"\n\nAt that moment, when the revelation of everything was hanging over him,\nthere was nothing he expected so much as that she would answer mockingly\nas before that his suspicions were absurd and utterly groundless. So\nterrible to him was what he knew that now he was ready to believe\nanything. But the expression of her face, scared and gloomy, did not now\npromise even deception.\n\n\"Possibly I was mistaken,\" said he. \"If so, I beg your pardon.\"\n\n\"No, you were not mistaken,\" she said deliberately, looking desperately\ninto his cold face. \"You were not mistaken. I was, and I could not help\nbeing in despair. I hear you, but I am thinking of him. I love him, I am\nhis mistress; I can't bear you; I'm afraid of you, and I hate you....\nYou can do what you like to me.\"\n\nAnd dropping back into the corner of the carriage, she broke into sobs,\nhiding her face in her hands. Alexey Alexandrovitch did not stir, and\nkept looking straight before him. But his whole face suddenly bore the\nsolemn rigidity of the dead, and his expression did not change during\nthe whole time of the drive home. On reaching the house he turned his\nhead to her, still with the same expression.\n\n\"Very well! But I expect a strict observance of the external forms of\npropriety till such time\"--his voice shook--\"as I may take measures to\nsecure my honor and communicate them to you.\"\n\nHe got out first and helped her to get out. Before the servants he\npressed her hand, took his seat in the carriage, and drove back to\nPetersburg. Immediately afterwards a footman came from Princess Betsy\nand brought Anna a note.\n\n\"I sent to Alexey to find out how he is, and he writes me he is quite\nwell and unhurt, but in despair.\"\n\n\"So _he_ will be here,\" she thought. \"What a good thing I told him all!\"\n\nShe glanced at her watch. She had still three hours to wait, and the\nmemories of their last meeting set her blood in flame.\n\n\"My God, how light it is! It's dreadful, but I do love to see his face,\nand I do love this fantastic light.... My husband! Oh! yes.... Well,\nthank God! everything's over with him.\"\n\n\n\nChapter 30\n\n\nIn the little German watering-place to which the Shtcherbatskys had\nbetaken themselves, as in all places indeed where people are gathered\ntogether, the usual process, as it were, of the crystallization of\nsociety went on, assigning to each member of that society a definite and\nunalterable place. Just as the particle of water in frost, definitely\nand unalterably, takes the special form of the crystal of snow, so each\nnew person that arrived at the springs was at once placed in his special\nplace.\n\n_Fuerst_ Shtcherbatsky, _sammt Gemahlin und Tochter_, by the apartments\nthey took, and from their name and from the friends they made, were\nimmediately crystallized into a definite place marked out for them.\n\nThere was visiting the watering-place that year a real German Fuerstin,\nin consequence of which the crystallizing process went on more\nvigorously than ever. Princess Shtcherbatskaya wished, above everything,\nto present her daughter to this German princess, and the day after their\narrival she duly performed this rite. Kitty made a low and graceful\ncurtsey in the _very simple_, that is to say, very elegant frock that\nhad been ordered her from Paris. The German princess said, \"I hope the\nroses will soon come back to this pretty little face,\" and for the\nShtcherbatskys certain definite lines of existence were at once laid\ndown from which there was no departing. The Shtcherbatskys made the\nacquaintance too of the family of an English Lady Somebody, and of a\nGerman countess and her son, wounded in the last war, and of a learned\nSwede, and of M. Canut and his sister. But yet inevitably the\nShtcherbatskys were thrown most into the society of a Moscow lady, Marya\nYevgenyevna Rtishtcheva and her daughter, whom Kitty disliked, because\nshe had fallen ill, like herself, over a love affair, and a Moscow\ncolonel, whom Kitty had known from childhood, and always seen in uniform\nand epaulets, and who now, with his little eyes and his open neck and\nflowered cravat, was uncommonly ridiculous and tedious, because there\nwas no getting rid of him. When all this was so firmly established,\nKitty began to be very much bored, especially as the prince went away to\nCarlsbad and she was left alone with her mother. She took no interest in\nthe people she knew, feeling that nothing fresh would come of them. Her\nchief mental interest in the watering-place consisted in watching and\nmaking theories about the people she did not know. It was characteristic\nof Kitty that she always imagined everything in people in the most\nfavorable light possible, especially so in those she did not know. And\nnow as she made surmises as to who people were, what were their\nrelations to one another, and what they were like, Kitty endowed them\nwith the most marvelous and noble characters, and found confirmation of\nher idea in her observations.\n\nOf these people the one that attracted her most was a Russian girl who\nhad come to the watering-place with an invalid Russian lady, Madame\nStahl, as everyone called her. Madame Stahl belonged to the highest\nsociety, but she was so ill that she could not walk, and only on\nexceptionally fine days made her appearance at the springs in an invalid\ncarriage. But it was not so much from ill-health as from pride--so\nPrincess Shtcherbatskaya interpreted it--that Madame Stahl had not made\nthe acquaintance of anyone among the Russians there. The Russian girl\nlooked after Madame Stahl, and besides that, she was, as Kitty observed,\non friendly terms with all the invalids who were seriously ill, and\nthere were many of them at the springs, and looked after them in the\nmost natural way. This Russian girl was not, as Kitty gathered, related\nto Madame Stahl, nor was she a paid attendant. Madame Stahl called her\nVarenka, and other people called her \"Mademoiselle Varenka.\" Apart from\nthe interest Kitty took in this girl's relations with Madame Stahl and\nwith other unknown persons, Kitty, as often happened, felt an\ninexplicable attraction to Mademoiselle Varenka, and was aware when\ntheir eyes met that she too liked her.\n\nOf Mademoiselle Varenka one would not say that she had passed her first\nyouth, but she was, as it were, a creature without youth; she might have\nbeen taken for nineteen or for thirty. If her features were criticized\nseparately, she was handsome rather than plain, in spite of the sickly\nhue of her face. She would have been a good figure, too, if it had not\nbeen for her extreme thinness and the size of her head, which was too\nlarge for her medium height. But she was not likely to be attractive to\nmen. She was like a fine flower, already past its bloom and without\nfragrance, though the petals were still unwithered. Moreover, she would\nhave been unattractive to men also from the lack of just what Kitty had\ntoo much of--of the suppressed fire of vitality, and the consciousness\nof her own attractiveness.\n\nShe always seemed absorbed in work about which there could be no doubt,\nand so it seemed she could not take interest in anything outside it. It\nwas just this contrast with her own position that was for Kitty the\ngreat attraction of Mademoiselle Varenka. Kitty felt that in her, in her\nmanner of life, she would find an example of what she was now so\npainfully seeking: interest in life, a dignity in life--apart from the\nworldly relations of girls with men, which so revolted Kitty, and\nappeared to her now as a shameful hawking about of goods in search of a\npurchaser. The more attentively Kitty watched her unknown friend, the\nmore convinced she was this girl was the perfect creature she fancied\nher, and the more eagerly she wished to make her acquaintance.\n\nThe two girls used to meet several times a day, and every time they met,\nKitty's eyes said: \"Who are you? What are you? Are you really the\nexquisite creature I imagine you to be? But for goodness' sake don't\nsuppose,\" her eyes added, \"that I would force my acquaintance on you, I\nsimply admire you and like you.\" \"I like you too, and you're very, very\nsweet. And I should like you better still, if I had time,\" answered the\neyes of the unknown girl. Kitty saw indeed, that she was always busy.\nEither she was taking the children of a Russian family home from the\nsprings, or fetching a shawl for a sick lady, and wrapping her up in it,\nor trying to interest an irritable invalid, or selecting and buying\ncakes for tea for someone.\n\nSoon after the arrival of the Shtcherbatskys there appeared in the\nmorning crowd at the springs two persons who attracted universal and\nunfavorable attention. These were a tall man with a stooping figure, and\nhuge hands, in an old coat too short for him, with black, simple, and\nyet terrible eyes, and a pockmarked, kind-looking woman, very badly and\ntastelessly dressed. Recognizing these persons as Russians, Kitty had\nalready in her imagination begun constructing a delightful and touching\nromance about them. But the princess, having ascertained from the\nvisitors' list that this was Nikolay Levin and Marya Nikolaevna,\nexplained to Kitty what a bad man this Levin was, and all her fancies\nabout these two people vanished. Not so much from what her mother told\nher, as from the fact that it was Konstantin's brother, this pair\nsuddenly seemed to Kitty intensely unpleasant. This Levin, with his\ncontinual twitching of his head, aroused in her now an irrepressible\nfeeling of disgust.\n\nIt seemed to her that his big, terrible eyes, which persistently pursued\nher, expressed a feeling of hatred and contempt, and she tried to avoid\nmeeting him.\n\n\n\nChapter 31\n\n\nIt was a wet day; it had been raining all the morning, and the invalids,\nwith their parasols, had flocked into the arcades.\n\nKitty was walking there with her mother and the Moscow colonel, smart\nand jaunty in his European coat, bought ready-made at Frankfort. They\nwere walking on one side of the arcade, trying to avoid Levin, who was\nwalking on the other side. Varenka, in her dark dress, in a black hat\nwith a turn-down brim, was walking up and down the whole length of the\narcade with a blind Frenchwoman, and, every time she met Kitty, they\nexchanged friendly glances.\n\n\"Mamma, couldn't I speak to her?\" said Kitty, watching her unknown\nfriend, and noticing that she was going up to the spring, and that they\nmight come there together.\n\n\"Oh, if you want to so much, I'll find out about her first and make her\nacquaintance myself,\" answered her mother. \"What do you see in her out\nof the way? A companion, she must be. If you like, I'll make\nacquaintance with Madame Stahl; I used to know her _belle-soeur_,\" added\nthe princess, lifting her head haughtily.\n\nKitty knew that the princess was offended that Madame Stahl had seemed\nto avoid making her acquaintance. Kitty did not insist.\n\n\"How wonderfully sweet she is!\" she said, gazing at Varenka just as she\nhanded a glass to the Frenchwoman. \"Look how natural and sweet it all\nis.\"\n\n\"It's so funny to see your _engouements_,\" said the princess. \"No, we'd\nbetter go back,\" she added, noticing Levin coming towards them with his\ncompanion and a German doctor, to whom he was talking very noisily and\nangrily.\n\nThey turned to go back, when suddenly they heard, not noisy talk, but\nshouting. Levin, stopping short, was shouting at the doctor, and the\ndoctor, too, was excited. A crowd gathered about them. The princess and\nKitty beat a hasty retreat, while the colonel joined the crowd to find\nout what was the matter.\n\nA few minutes later the colonel overtook them.\n\n\"What was it?\" inquired the princess.\n\n\"Scandalous and disgraceful!\" answered the colonel. \"The one thing to be\ndreaded is meeting Russians abroad. That tall gentleman was abusing the\ndoctor, flinging all sorts of insults at him because he wasn't treating\nhim quite as he liked, and he began waving his stick at him. It's simply\na scandal!\"\n\n\"Oh, how unpleasant!\" said the princess. \"Well, and how did it end?\"\n\n\"Luckily at that point that ... the one in the mushroom hat ...\nintervened. A Russian lady, I think she is,\" said the colonel.\n\n\"Mademoiselle Varenka?\" asked Kitty.\n\n\"Yes, yes. She came to the rescue before anyone; she took the man by the\narm and led him away.\"\n\n\"There, mamma,\" said Kitty; \"you wonder that I'm enthusiastic about\nher.\"\n\nThe next day, as she watched her unknown friend, Kitty noticed that\nMademoiselle Varenka was already on the same terms with Levin and his\ncompanion as with her other _proteges_. She went up to them, entered\ninto conversation with them, and served as interpreter for the woman,\nwho could not speak any foreign language.\n\nKitty began to entreat her mother still more urgently to let her make\nfriends with Varenka. And, disagreeable as it was to the princess to\nseem to take the first step in wishing to make the acquaintance of\nMadame Stahl, who thought fit to give herself airs, she made inquiries\nabout Varenka, and, having ascertained particulars about her tending to\nprove that there could be no harm though little good in the\nacquaintance, she herself approached Varenka and made acquaintance with\nher.\n\nChoosing a time when her daughter had gone to the spring, while Varenka\nhad stopped outside the baker's, the princess went up to her.\n\n\"Allow me to make your acquaintance,\" she said, with her dignified\nsmile. \"My daughter has lost her heart to you,\" she said. \"Possibly you\ndo not know me. I am...\"\n\n\"That feeling is more than reciprocal, princess,\" Varenka answered\nhurriedly.\n\n\"What a good deed you did yesterday to our poor compatriot!\" said the\nprincess.\n\nVarenka flushed a little. \"I don't remember. I don't think I did\nanything,\" she said.\n\n\"Why, you saved that Levin from disagreeable consequences.\"\n\n\"Yes, _sa compagne_ called me, and I tried to pacify him, he's very ill,\nand was dissatisfied with the doctor. I'm used to looking after such\ninvalids.\"\n\n\"Yes, I've heard you live at Mentone with your aunt--I think--Madame\nStahl: I used to know her _belle-soeur_.\"\n\n\"No, she's not my aunt. I call her mamma, but I am not related to her; I\nwas brought up by her,\" answered Varenka, flushing a little again.\n\nThis was so simply said, and so sweet was the truthful and candid\nexpression of her face, that the princess saw why Kitty had taken such a\nfancy to Varenka.\n\n\"Well, and what's this Levin going to do?\" asked the princess.\n\n\"He's going away,\" answered Varenka.\n\nAt that instant Kitty came up from the spring beaming with delight that\nher mother had become acquainted with her unknown friend.\n\n\"Well, see, Kitty, your intense desire to make friends with\nMademoiselle. . .\"\n\n\"Varenka,\" Varenka put in smiling, \"that's what everyone calls me.\"\n\nKitty blushed with pleasure, and slowly, without speaking, pressed her\nnew friend's hand, which did not respond to her pressure, but lay\nmotionless in her hand. The hand did not respond to her pressure, but\nthe face of Mademoiselle Varenka glowed with a soft, glad, though rather\nmournful smile, that showed large but handsome teeth.\n\n\"I have long wished for this too,\" she said.\n\n\"But you are so busy.\"\n\n\"Oh, no, I'm not at all busy,\" answered Varenka, but at that moment she\nhad to leave her new friends because two little Russian girls, children\nof an invalid, ran up to her.\n\n\"Varenka, mamma's calling!\" they cried.\n\nAnd Varenka went after them.\n\n\n\nChapter 32\n\n\nThe particulars which the princess had learned in regard to Varenka's\npast and her relations with Madame Stahl were as follows:\n\nMadame Stahl, of whom some people said that she had worried her husband\nout of his life, while others said it was he who had made her wretched\nby his immoral behavior, had always been a woman of weak health and\nenthusiastic temperament. When, after her separation from her husband,\nshe gave birth to her only child, the child had died almost immediately,\nand the family of Madame Stahl, knowing her sensibility, and fearing the\nnews would kill her, had substituted another child, a baby born the same\nnight and in the same house in Petersburg, the daughter of the chief\ncook of the Imperial Household. This was Varenka. Madame Stahl learned\nlater on that Varenka was not her own child, but she went on bringing\nher up, especially as very soon afterwards Varenka had not a relation of\nher own living. Madame Stahl had now been living more than ten years\ncontinuously abroad, in the south, never leaving her couch. And some\npeople said that Madame Stahl had made her social position as a\nphilanthropic, highly religious woman; other people said she really was\nat heart the highly ethical being, living for nothing but the good of\nher fellow creatures, which she represented herself to be. No one knew\nwhat her faith was--Catholic, Protestant, or Orthodox. But one fact was\nindubitable--she was in amicable relations with the highest dignitaries\nof all the churches and sects.\n\nVarenka lived with her all the while abroad, and everyone who knew\nMadame Stahl knew and liked Mademoiselle Varenka, as everyone called\nher.\n\nHaving learned all these facts, the princess found nothing to object to\nin her daughter's intimacy with Varenka, more especially as Varenka's\nbreeding and education were of the best--she spoke French and English\nextremely well--and what was of the most weight, brought a message from\nMadame Stahl expressing her regret that she was prevented by her ill\nhealth from making the acquaintance of the princess.\n\nAfter getting to know Varenka, Kitty became more and more fascinated by\nher friend, and every day she discovered new virtues in her.\n\nThe princess, hearing that Varenka had a good voice, asked her to come\nand sing to them in the evening.\n\n\"Kitty plays, and we have a piano; not a good one, it's true, but you\nwill give us so much pleasure,\" said the princess with her affected\nsmile, which Kitty disliked particularly just then, because she noticed\nthat Varenka had no inclination to sing. Varenka came, however, in the\nevening and brought a roll of music with her. The princess had invited\nMarya Yevgenyevna and her daughter and the colonel.\n\nVarenka seemed quite unaffected by there being persons present she did\nnot know, and she went directly to the piano. She could not accompany\nherself, but she could sing music at sight very well. Kitty, who played\nwell, accompanied her.\n\n\"You have an extraordinary talent,\" the princess said to her after\nVarenka had sung the first song extremely well.\n\nMarya Yevgenyevna and her daughter expressed their thanks and\nadmiration.\n\n\"Look,\" said the colonel, looking out of the window, \"what an audience\nhas collected to listen to you.\" There actually was quite a considerable\ncrowd under the windows.\n\n\"I am very glad it gives you pleasure,\" Varenka answered simply.\n\nKitty looked with pride at her friend. She was enchanted by her talent,\nand her voice, and her face, but most of all by her manner, by the way\nVarenka obviously thought nothing of her singing and was quite unmoved\nby their praises. She seemed only to be asking: \"Am I to sing again, or\nis that enough?\"\n\n\"If it had been I,\" thought Kitty, \"how proud I should have been! How\ndelighted I should have been to see that crowd under the windows! But\nshe's utterly unmoved by it. Her only motive is to avoid refusing and to\nplease mamma. What is there in her? What is it gives her the power to\nlook down on everything, to be calm independently of everything? How I\nshould like to know it and to learn it of her!\" thought Kitty, gazing\ninto her serene face. The princess asked Varenka to sing again, and\nVarenka sang another song, also smoothly, distinctly, and well, standing\nerect at the piano and beating time on it with her thin, dark-skinned\nhand.\n\nThe next song in the book was an Italian one. Kitty played the opening\nbars, and looked round at Varenka.\n\n\"Let's skip that,\" said Varenka, flushing a little. Kitty let her eyes\nrest on Varenka's face, with a look of dismay and inquiry.\n\n\"Very well, the next one,\" she said hurriedly, turning over the pages,\nand at once feeling that there was something connected with the song.\n\n\"No,\" answered Varenka with a smile, laying her hand on the music, \"no,\nlet's have that one.\" And she sang it just as quietly, as coolly, and as\nwell as the others.\n\nWhen she had finished, they all thanked her again, and went off to tea.\nKitty and Varenka went out into the little garden that adjoined the\nhouse.\n\n\"Am I right, that you have some reminiscences connected with that song?\"\nsaid Kitty. \"Don't tell me,\" she added hastily, \"only say if I'm right.\"\n\n\"No, why not? I'll tell you simply,\" said Varenka, and, without waiting\nfor a reply, she went on: \"Yes, it brings up memories, once painful\nones. I cared for someone once, and I used to sing him that song.\"\n\nKitty with big, wide-open eyes gazed silently, sympathetically at\nVarenka.\n\n\"I cared for him, and he cared for me; but his mother did not wish it,\nand he married another girl. He's living now not far from us, and I see\nhim sometimes. You didn't think I had a love story too,\" she said, and\nthere was a faint gleam in her handsome face of that fire which Kitty\nfelt must once have glowed all over her.\n\n\"I didn't think so? Why, if I were a man, I could never care for anyone\nelse after knowing you. Only I can't understand how he could, to please\nhis mother, forget you and make you unhappy; he had no heart.\"\n\n\"Oh, no, he's a very good man, and I'm not unhappy; quite the contrary,\nI'm very happy. Well, so we shan't be singing any more now,\" she added,\nturning towards the house.\n\n\"How good you are! how good you are!\" cried Kitty, and stopping her, she\nkissed her. \"If I could only be even a little like you!\"\n\n\"Why should you be like anyone? You're nice as you are,\" said Varenka,\nsmiling her gentle, weary smile.\n\n\"No, I'm not nice at all. Come, tell me.... Stop a minute, let's sit\ndown,\" said Kitty, making her sit down again beside her. \"Tell me, isn't\nit humiliating to think that a man has disdained your love, that he\nhasn't cared for it?...\"\n\n\"But he didn't disdain it; I believe he cared for me, but he was a\ndutiful son...\"\n\n\"Yes, but if it hadn't been on account of his mother, if it had been his\nown doing?...\" said Kitty, feeling she was giving away her secret, and\nthat her face, burning with the flush of shame, had betrayed her\nalready.\n\n\"In that case he would have done wrong, and I should not have regretted\nhim,\" answered Varenka, evidently realizing that they were now talking\nnot of her, but of Kitty.\n\n\"But the humiliation,\" said Kitty, \"the humiliation one can never\nforget, can never forget,\" she said, remembering her look at the last\nball during the pause in the music.\n\n\"Where is the humiliation? Why, you did nothing wrong?\"\n\n\"Worse than wrong--shameful.\"\n\nVarenka shook her head and laid her hand on Kitty's hand.\n\n\"Why, what is there shameful?\" she said. \"You didn't tell a man, who\ndidn't care for you, that you loved him, did you?\"\n\n\"Of course not; I never said a word, but he knew it. No, no, there are\nlooks, there are ways; I can't forget it, if I live a hundred years.\"\n\n\"Why so? I don't understand. The whole point is whether you love him now\nor not,\" said Varenka, who called everything by its name.\n\n\"I hate him; I can't forgive myself.\"\n\n\"Why, what for?\"\n\n\"The shame, the humiliation!\"\n\n\"Oh! if everyone were as sensitive as you are!\" said Varenka. \"There\nisn't a girl who hasn't been through the same. And it's all so\nunimportant.\"\n\n\"Why, what is important?\" said Kitty, looking into her face with\ninquisitive wonder.\n\n\"Oh, there's so much that's important,\" said Varenka, smiling.\n\n\"Why, what?\"\n\n\"Oh, so much that's more important,\" answered Varenka, not knowing what\nto say. But at that instant they heard the princess's voice from the\nwindow. \"Kitty, it's cold! Either get a shawl, or come indoors.\"\n\n\"It really is time to go in!\" said Varenka, getting up. \"I have to go on\nto Madame Berthe's; she asked me to.\"\n\nKitty held her by the hand, and with passionate curiosity and entreaty\nher eyes asked her: \"What is it, what is this of such importance that\ngives you such tranquillity? You know, tell me!\" But Varenka did not\neven know what Kitty's eyes were asking her. She merely thought that she\nhad to go to see Madame Berthe too that evening, and to make haste home\nin time for _maman's_ tea at twelve o'clock. She went indoors, collected\nher music, and saying good-bye to everyone, was about to go.\n\n\"Allow me to see you home,\" said the colonel.\n\n\"Yes, how can you go alone at night like this?\" chimed in the princess.\n\"Anyway, I'll send Parasha.\"\n\nKitty saw that Varenka could hardly restrain a smile at the idea that\nshe needed an escort.\n\n\"No, I always go about alone and nothing ever happens to me,\" she said,\ntaking her hat. And kissing Kitty once more, without saying what was\nimportant, she stepped out courageously with the music under her arm and\nvanished into the twilight of the summer night, bearing away with her\nher secret of what was important and what gave her the calm and dignity\nso much to be envied.\n\n\n\nChapter 33\n\n\nKitty made the acquaintance of Madame Stahl too, and this acquaintance,\ntogether with her friendship with Varenka, did not merely exercise a\ngreat influence on her, it also comforted her in her mental distress.\nShe found this comfort through a completely new world being opened to\nher by means of this acquaintance, a world having nothing in common with\nher past, an exalted, noble world, from the height of which she could\ncontemplate her past calmly. It was revealed to her that besides the\ninstinctive life to which Kitty had given herself up hitherto there was\na spiritual life. This life was disclosed in religion, but a religion\nhaving nothing in common with that one which Kitty had known from\nchildhood, and which found expression in litanies and all-night services\nat the Widow's Home, where one might meet one's friends, and in learning\nby heart Slavonic texts with the priest. This was a lofty, mysterious\nreligion connected with a whole series of noble thoughts and feelings,\nwhich one could do more than merely believe because one was told to,\nwhich one could love.\n\nKitty found all this out not from words. Madame Stahl talked to Kitty as\nto a charming child that one looks on with pleasure as on the memory of\none's youth, and only once she said in passing that in all human sorrows\nnothing gives comfort but love and faith, and that in the sight of\nChrist's compassion for us no sorrow is trifling--and immediately talked\nof other things. But in every gesture of Madame Stahl, in every word, in\nevery heavenly--as Kitty called it--look, and above all in the whole\nstory of her life, which she heard from Varenka, Kitty recognized that\nsomething \"that was important,\" of which, till then, she had known\nnothing.\n\nYet, elevated as Madame Stahl's character was, touching as was her\nstory, and exalted and moving as was her speech, Kitty could not help\ndetecting in her some traits which perplexed her. She noticed that when\nquestioning her about her family, Madame Stahl had smiled\ncontemptuously, which was not in accord with Christian meekness. She\nnoticed, too, that when she had found a Catholic priest with her, Madame\nStahl had studiously kept her face in the shadow of the lamp-shade and\nhad smiled in a peculiar way. Trivial as these two observations were,\nthey perplexed her, and she had her doubts as to Madame Stahl. But on\nthe other hand Varenka, alone in the world, without friends or\nrelations, with a melancholy disappointment in the past, desiring\nnothing, regretting nothing, was just that perfection of which Kitty\ndared hardly dream. In Varenka she realized that one has but to forget\noneself and love others, and one will be calm, happy, and noble. And\nthat was what Kitty longed to be. Seeing now clearly what was _the most\nimportant_, Kitty was not satisfied with being enthusiastic over it; she\nat once gave herself up with her whole soul to the new life that was\nopening to her. From Varenka's accounts of the doings of Madame Stahl\nand other people whom she mentioned, Kitty had already constructed the\nplan of her own future life. She would, like Madame Stahl's niece,\nAline, of whom Varenka had talked to her a great deal, seek out those\nwho were in trouble, wherever she might be living, help them as far as\nshe could, give them the Gospel, read the Gospel to the sick, to\ncriminals, to the dying. The idea of reading the Gospel to criminals, as\nAline did, particularly fascinated Kitty. But all these were secret\ndreams, of which Kitty did not talk either to her mother or to Varenka.\n\nWhile awaiting the time for carrying out her plans on a large scale,\nhowever, Kitty, even then at the springs, where there were so many\npeople ill and unhappy, readily found a chance for practicing her new\nprinciples in imitation of Varenka.\n\nAt first the princess noticed nothing but that Kitty was much under the\ninfluence of her _engouement_, as she called it, for Madame Stahl, and\nstill more for Varenka. She saw that Kitty did not merely imitate\nVarenka in her conduct, but unconsciously imitated her in her manner of\nwalking, of talking, of blinking her eyes. But later on the princess\nnoticed that, apart from this adoration, some kind of serious spiritual\nchange was taking place in her daughter.\n\nThe princess saw that in the evenings Kitty read a French testament that\nMadame Stahl had given her--a thing she had never done before; that she\navoided society acquaintances and associated with the sick people who\nwere under Varenka's protection, and especially one poor family, that of\na sick painter, Petrov. Kitty was unmistakably proud of playing the part\nof a sister of mercy in that family. All this was well enough, and the\nprincess had nothing to say against it, especially as Petrov's wife was\na perfectly nice sort of woman, and that the German princess, noticing\nKitty's devotion, praised her, calling her an angel of consolation. All\nthis would have been very well, if there had been no exaggeration. But\nthe princess saw that her daughter was rushing into extremes, and so\nindeed she told her.\n\n\"_Il ne faut jamais rien outrer_,\" she said to her.\n\nHer daughter made her no reply, only in her heart she thought that one\ncould not talk about exaggeration where Christianity was concerned. What\nexaggeration could there be in the practice of a doctrine wherein one\nwas bidden to turn the other cheek when one was smitten, and give one's\ncloak if one's coat were taken? But the princess disliked this\nexaggeration, and disliked even more the fact that she felt her daughter\ndid not care to show her all her heart. Kitty did in fact conceal her\nnew views and feelings from her mother. She concealed them not because\nshe did not respect or did not love her mother, but simply because she\nwas her mother. She would have revealed them to anyone sooner than to\nher mother.\n\n\"How is it Anna Pavlovna's not been to see us for so long?\" the princess\nsaid one day of Madame Petrova. \"I've asked her, but she seems put out\nabout something.\"\n\n\"No, I've not noticed it, maman,\" said Kitty, flushing hotly.\n\n\"Is it long since you went to see them?\"\n\n\"We're meaning to make an expedition to the mountains tomorrow,\"\nanswered Kitty.\n\n\"Well, you can go,\" answered the princess, gazing at her daughter's\nembarrassed face and trying to guess the cause of her embarrassment.\n\nThat day Varenka came to dinner and told them that Anna Pavlovna had\nchanged her mind and given up the expedition for the morrow. And the\nprincess noticed again that Kitty reddened.\n\n\"Kitty, haven't you had some misunderstanding with the Petrovs?\" said\nthe princess, when they were left alone. \"Why has she given up sending\nthe children and coming to see us?\"\n\nKitty answered that nothing had happened between them, and that she\ncould not tell why Anna Pavlovna seemed displeased with her. Kitty\nanswered perfectly truly. She did not know the reason Anna Pavlovna had\nchanged to her, but she guessed it. She guessed at something which she\ncould not tell her mother, which she did not put into words to herself.\nIt was one of those things which one knows but which one can never speak\nof even to oneself, so terrible and shameful would it be to be mistaken.\n\nAgain and again she went over in her memory all her relations with the\nfamily. She remembered the simple delight expressed on the round,\ngood-humored face of Anna Pavlovna at their meetings; she remembered\ntheir secret confabulations about the invalid, their plots to draw him\naway from the work which was forbidden him, and to get him out-of-doors;\nthe devotion of the youngest boy, who used to call her \"my Kitty,\" and\nwould not go to bed without her. How nice it all was! Then she recalled\nthe thin, terribly thin figure of Petrov, with his long neck, in his\nbrown coat, his scant, curly hair, his questioning blue eyes that were\nso terrible to Kitty at first, and his painful attempts to seem hearty\nand lively in her presence. She recalled the efforts she had made at\nfirst to overcome the repugnance she felt for him, as for all\nconsumptive people, and the pains it had cost her to think of things to\nsay to him. She recalled the timid, softened look with which he gazed at\nher, and the strange feeling of compassion and awkwardness, and later of\na sense of her own goodness, which she had felt at it. How nice it all\nwas! But all that was at first. Now, a few days ago, everything was\nsuddenly spoiled. Anna Pavlovna had met Kitty with affected cordiality,\nand had kept continual watch on her and on her husband.\n\nCould that touching pleasure he showed when she came near be the cause\nof Anna Pavlovna's coolness?\n\n\"Yes,\" she mused, \"there was something unnatural about Anna Pavlovna,\nand utterly unlike her good nature, when she said angrily the day before\nyesterday: 'There, he will keep waiting for you; he wouldn't drink his\ncoffee without you, though he's grown so dreadfully weak.'\"\n\n\"Yes, perhaps, too, she didn't like it when I gave him the rug. It was\nall so simple, but he took it so awkwardly, and was so long thanking me,\nthat I felt awkward too. And then that portrait of me he did so well.\nAnd most of all that look of confusion and tenderness! Yes, yes, that's\nit!\" Kitty repeated to herself with horror. \"No, it can't be, it\noughtn't to be! He's so much to be pitied!\" she said to herself directly\nafter.\n\nThis doubt poisoned the charm of her new life.\n\n\n\nChapter 34\n\n\nBefore the end of the course of drinking the waters, Prince\nShtcherbatsky, who had gone on from Carlsbad to Baden and Kissingen to\nRussian friends--to get a breath of Russian air, as he said--came back\nto his wife and daughter.\n\nThe views of the prince and of the princess on life abroad were\ncompletely opposed. The princess thought everything delightful, and in\nspite of her established position in Russian society, she tried abroad\nto be like a European fashionable lady, which she was not--for the\nsimple reason that she was a typical Russian gentlewoman; and so she was\naffected, which did not altogether suit her. The prince, on the\ncontrary, thought everything foreign detestable, got sick of European\nlife, kept to his Russian habits, and purposely tried to show himself\nabroad less European than he was in reality.\n\nThe prince returned thinner, with the skin hanging in loose bags on his\ncheeks, but in the most cheerful frame of mind. His good humor was even\ngreater when he saw Kitty completely recovered. The news of Kitty's\nfriendship with Madame Stahl and Varenka, and the reports the princess\ngave him of some kind of change she had noticed in Kitty, troubled the\nprince and aroused his habitual feeling of jealousy of everything that\ndrew his daughter away from him, and a dread that his daughter might\nhave got out of the reach of his influence into regions inaccessible to\nhim. But these unpleasant matters were all drowned in the sea of\nkindliness and good humor which was always within him, and more so than\never since his course of Carlsbad waters.\n\nThe day after his arrival the prince, in his long overcoat, with his\nRussian wrinkles and baggy cheeks propped up by a starched collar, set\noff with his daughter to the spring in the greatest good humor.\n\nIt was a lovely morning: the bright, cheerful houses with their little\ngardens, the sight of the red-faced, red-armed, beer-drinking German\nwaitresses, working away merrily, did the heart good. But the nearer\nthey got to the springs the oftener they met sick people; and their\nappearance seemed more pitiable than ever among the everyday conditions\nof prosperous German life. Kitty was no longer struck by this contrast.\nThe bright sun, the brilliant green of the foliage, the strains of the\nmusic were for her the natural setting of all these familiar faces, with\ntheir changes to greater emaciation or to convalescence, for which she\nwatched. But to the prince the brightness and gaiety of the June\nmorning, and the sound of the orchestra playing a gay waltz then in\nfashion, and above all, the appearance of the healthy attendants, seemed\nsomething unseemly and monstrous, in conjunction with these slowly\nmoving, dying figures gathered together from all parts of Europe. In\nspite of his feeling of pride and, as it were, of the return of youth,\nwith his favorite daughter on his arm, he felt awkward, and almost\nashamed of his vigorous step and his sturdy, stout limbs. He felt almost\nlike a man not dressed in a crowd.\n\n\"Present me to your new friends,\" he said to his daughter, squeezing her\nhand with his elbow. \"I like even your horrid Soden for making you so\nwell again. Only it's melancholy, very melancholy here. Who's that?\"\n\nKitty mentioned the names of all the people they met, with some of whom\nshe was acquainted and some not. At the entrance of the garden they met\nthe blind lady, Madame Berthe, with her guide, and the prince was\ndelighted to see the old Frenchwoman's face light up when she heard\nKitty's voice. She at once began talking to him with French exaggerated\npoliteness, applauding him for having such a delightful daughter,\nextolling Kitty to the skies before her face, and calling her a\ntreasure, a pearl, and a consoling angel.\n\n\"Well, she's the second angel, then,\" said the prince, smiling. \"she\ncalls Mademoiselle Varenka angel number one.\"\n\n\"Oh! Mademoiselle Varenka, she's a real angel, allez,\" Madame Berthe\nassented.\n\nIn the arcade they met Varenka herself. She was walking rapidly towards\nthem carrying an elegant red bag.\n\n\"Here is papa come,\" Kitty said to her.\n\nVarenka made--simply and naturally as she did everything--a movement\nbetween a bow and a curtsey, and immediately began talking to the\nprince, without shyness, naturally, as she talked to everyone.\n\n\"Of course I know you; I know you very well,\" the prince said to her\nwith a smile, in which Kitty detected with joy that her father liked her\nfriend. \"Where are you off to in such haste?\"\n\n\"Maman's here,\" she said, turning to Kitty. \"She has not slept all\nnight, and the doctor advised her to go out. I'm taking her her work.\"\n\n\"So that's angel number one?\" said the prince when Varenka had gone on.\n\nKitty saw that her father had meant to make fun of Varenka, but that he\ncould not do it because he liked her.\n\n\"Come, so we shall see all your friends,\" he went on, \"even Madame\nStahl, if she deigns to recognize me.\"\n\n\"Why, did you know her, papa?\" Kitty asked apprehensively, catching the\ngleam of irony that kindled in the prince's eyes at the mention of\nMadame Stahl.\n\n\"I used to know her husband, and her too a little, before she'd joined\nthe Pietists.\"\n\n\"What is a Pietist, papa?\" asked Kitty, dismayed to find that what she\nprized so highly in Madame Stahl had a name.\n\n\"I don't quite know myself. I only know that she thanks God for\neverything, for every misfortune, and thanks God too that her husband\ndied. And that's rather droll, as they didn't get on together.\"\n\n\"Who's that? What a piteous face!\" he asked, noticing a sick man of\nmedium height sitting on a bench, wearing a brown overcoat and white\ntrousers that fell in strange folds about his long, fleshless legs. This\nman lifted his straw hat, showed his scanty curly hair and high\nforehead, painfully reddened by the pressure of the hat.\n\n\"That's Petrov, an artist,\" answered Kitty, blushing. \"And that's his\nwife,\" she added, indicating Anna Pavlovna, who, as though on purpose,\nat the very instant they approached walked away after a child that had\nrun off along a path.\n\n\"Poor fellow! and what a nice face he has!\" said the prince. \"Why don't\nyou go up to him? He wanted to speak to you.\"\n\n\"Well, let us go, then,\" said Kitty, turning round resolutely. \"How are\nyou feeling today?\" she asked Petrov.\n\nPetrov got up, leaning on his stick, and looked shyly at the prince.\n\n\"This is my daughter,\" said the prince. \"Let me introduce myself.\"\n\nThe painter bowed and smiled, showing his strangely dazzling white\nteeth.\n\n\"We expected you yesterday, princess,\" he said to Kitty. He staggered as\nhe said this, and then repeated the motion, trying to make it seem as if\nit had been intentional.\n\n\"I meant to come, but Varenka said that Anna Pavlovna sent word you were\nnot going.\"\n\n\"Not going!\" said Petrov, blushing, and immediately beginning to cough,\nand his eyes sought his wife. \"Anita! Anita!\" he said loudly, and the\nswollen veins stood out like cords on his thin white neck.\n\nAnna Pavlovna came up.\n\n\"So you sent word to the princess that we weren't going!\" he whispered\nto her angrily, losing his voice.\n\n\"Good morning, princess,\" said Anna Pavlovna, with an assumed smile\nutterly unlike her former manner. \"Very glad to make your acquaintance,\"\nshe said to the prince. \"You've long been expected, prince.\"\n\n\"What did you send word to the princess that we weren't going for?\" the\nartist whispered hoarsely once more, still more angrily, obviously\nexasperated that his voice failed him so that he could not give his\nwords the expression he would have liked to.\n\n\"Oh, mercy on us! I thought we weren't going,\" his wife answered\ncrossly.\n\n\"What, when....\" He coughed and waved his hand. The prince took off his\nhat and moved away with his daughter.\n\n\"Ah! ah!\" he sighed deeply. \"Oh, poor things!\"\n\n\"Yes, papa,\" answered Kitty. \"And you must know they've three children,\nno servant, and scarcely any means. He gets something from the Academy,\"\nshe went on briskly, trying to drown the distress that the queer change\nin Anna Pavlovna's manner to her had aroused in her.\n\n\"Oh, here's Madame Stahl,\" said Kitty, indicating an invalid carriage,\nwhere, propped on pillows, something in gray and blue was lying under a\nsunshade. This was Madame Stahl. Behind her stood the gloomy,\nhealthy-looking German workman who pushed the carriage. Close by was\nstanding a flaxen-headed Swedish count, whom Kitty knew by name. Several\ninvalids were lingering near the low carriage, staring at the lady as\nthough she were some curiosity.\n\nThe prince went up to her, and Kitty detected that disconcerting gleam\nof irony in his eyes. He went up to Madame Stahl, and addressed her with\nextreme courtesy and affability in that excellent French that so few\nspeak nowadays.\n\n\"I don't know if you remember me, but I must recall myself to thank you\nfor your kindness to my daughter,\" he said, taking off his hat and not\nputting it on again.\n\n\"Prince Alexander Shtcherbatsky,\" said Madame Stahl, lifting upon him\nher heavenly eyes, in which Kitty discerned a look of annoyance.\n\"Delighted! I have taken a great fancy to your daughter.\"\n\n\"You are still in weak health?\"\n\n\"Yes; I'm used to it,\" said Madame Stahl, and she introduced the prince\nto the Swedish count.\n\n\"You are scarcely changed at all,\" the prince said to her. \"It's ten or\neleven years since I had the honor of seeing you.\"\n\n\"Yes; God sends the cross and sends the strength to bear it. Often one\nwonders what is the goal of this life?... The other side!\" she said\nangrily to Varenka, who had rearranged the rug over her feet not to her\nsatisfaction.\n\n\"To do good, probably,\" said the prince with a twinkle in his eye.\n\n\"That is not for us to judge,\" said Madame Stahl, perceiving the shade\nof expression on the prince's face. \"So you will send me that book, dear\ncount? I'm very grateful to you,\" she said to the young Swede.\n\n\"Ah!\" cried the prince, catching sight of the Moscow colonel standing\nnear, and with a bow to Madame Stahl he walked away with his daughter\nand the Moscow colonel, who joined them.\n\n\"That's our aristocracy, prince!\" the Moscow colonel said with ironical\nintention. He cherished a grudge against Madame Stahl for not making his\nacquaintance.\n\n\"She's just the same,\" replied the prince.\n\n\"Did you know her before her illness, prince--that's to say before she\ntook to her bed?\"\n\n\"Yes. She took to her bed before my eyes,\" said the prince.\n\n\"They say it's ten years since she has stood on her feet.\"\n\n\"She doesn't stand up because her legs are too short. She's a very bad\nfigure.\"\n\n\"Papa, it's not possible!\" cried Kitty.\n\n\"That's what wicked tongues say, my darling. And your Varenka catches it\ntoo,\" he added. \"Oh, these invalid ladies!\"\n\n\"Oh, no, papa!\" Kitty objected warmly. \"Varenka worships her. And then\nshe does so much good! Ask anyone! Everyone knows her and Aline Stahl.\"\n\n\"Perhaps so,\" said the prince, squeezing her hand with his elbow; \"but\nit's better when one does good so that you may ask everyone and no one\nknows.\"\n\nKitty did not answer, not because she had nothing to say, but because\nshe did not care to reveal her secret thoughts even to her father. But,\nstrange to say, although she had so made up her mind not to be\ninfluenced by her father's views, not to let him into her inmost\nsanctuary, she felt that the heavenly image of Madame Stahl, which she\nhad carried for a whole month in her heart, had vanished, never to\nreturn, just as the fantastic figure made up of some clothes thrown down\nat random vanishes when one sees that it is only some garment lying\nthere. All that was left was a woman with short legs, who lay down\nbecause she had a bad figure, and worried patient Varenka for not\narranging her rug to her liking. And by no effort of the imagination\ncould Kitty bring back the former Madame Stahl.\n\n\n\nChapter 35\n\n\nThe prince communicated his good humor to his own family and his\nfriends, and even to the German landlord in whose rooms the\nShtcherbatskys were staying.\n\nOn coming back with Kitty from the springs, the prince, who had asked\nthe colonel, and Marya Yevgenyevna, and Varenka all to come and have\ncoffee with them, gave orders for a table and chairs to be taken into\nthe garden under the chestnut tree, and lunch to be laid there. The\nlandlord and the servants, too, grew brisker under the influence of his\ngood spirits. They knew his open-handedness; and half an hour later the\ninvalid doctor from Hamburg, who lived on the top floor, looked\nenviously out of the window at the merry party of healthy Russians\nassembled under the chestnut tree. In the trembling circles of shadow\ncast by the leaves, at a table, covered with a white cloth, and set with\ncoffeepot, bread-and-butter, cheese, and cold game, sat the princess in\na high cap with lilac ribbons, distributing cups and bread-and-butter.\nAt the other end sat the prince, eating heartily, and talking loudly and\nmerrily. The prince had spread out near him his purchases, carved boxes,\nand knick-knacks, paper-knives of all sorts, of which he bought a heap\nat every watering-place, and bestowed them upon everyone, including\nLieschen, the servant girl, and the landlord, with whom he jested in his\ncomically bad German, assuring him that it was not the water had cured\nKitty, but his splendid cookery, especially his plum soup. The princess\nlaughed at her husband for his Russian ways, but she was more lively and\ngood-humored than she had been all the while she had been at the waters.\nThe colonel smiled, as he always did, at the prince's jokes, but as far\nas regards Europe, of which he believed himself to be making a careful\nstudy, he took the princess's side. The simple-hearted Marya Yevgenyevna\nsimply roared with laughter at everything absurd the prince said, and\nhis jokes made Varenka helpless with feeble but infectious laughter,\nwhich was something Kitty had never seen before.\n\nKitty was glad of all this, but she could not be light-hearted. She\ncould not solve the problem her father had unconsciously set her by his\ngoodhumored view of her friends, and of the life that had so attracted\nher. To this doubt there was joined the change in her relations with the\nPetrovs, which had been so conspicuously and unpleasantly marked that\nmorning. Everyone was good humored, but Kitty could not feel good\nhumored, and this increased her distress. She felt a feeling such as she\nhad known in childhood, when she had been shut in her room as a\npunishment, and had heard her sisters' merry laughter outside.\n\n\"Well, but what did you buy this mass of things for?\" said the princess,\nsmiling, and handing her husband a cup of coffee.\n\n\"One goes for a walk, one looks in a shop, and they ask you to buy.\n'_Erlaucht, Durchlaucht?_' Directly they say '_Durchlaucht_,' I can't\nhold out. I lose ten thalers.\"\n\n\"It's simply from boredom,\" said the princess.\n\n\"Of course it is. Such boredom, my dear, that one doesn't know what to\ndo with oneself.\"\n\n\"How can you be bored, prince? There's so much that's interesting now in\nGermany,\" said Marya Yevgenyevna.\n\n\"But I know everything that's interesting: the plum soup I know, and the\npea sausages I know. I know everything.\"\n\n\"No, you may say what you like, prince, there's the interest of their\ninstitutions,\" said the colonel.\n\n\"But what is there interesting about it? They're all as pleased as brass\nhalfpence. They've conquered everybody, and why am I to be pleased at\nthat? I haven't conquered anyone; and I'm obliged to take off my own\nboots, yes, and put them away too; in the morning, get up and dress at\nonce, and go to the dining room to drink bad tea! How different it is at\nhome! You get up in no haste, you get cross, grumble a little, and come\nround again. You've time to think things over, and no hurry.\"\n\n\"But time's money, you forget that,\" said the colonel.\n\n\"Time, indeed, that depends! Why, there's time one would give a month of\nfor sixpence, and time you wouldn't give half an hour of for any money.\nIsn't that so, Katinka? What is it? why are you so depressed?\"\n\n\"I'm not depressed.\"\n\n\"Where are you off to? Stay a little longer,\" he said to Varenka.\n\n\"I must be going home,\" said Varenka, getting up, and again she went off\ninto a giggle. When she had recovered, she said good-bye, and went into\nthe house to get her hat.\n\nKitty followed her. Even Varenka struck her as different. She was not\nworse, but different from what she had fancied her before.\n\n\"Oh, dear! it's a long while since I've laughed so much!\" said Varenka,\ngathering up her parasol and her bag. \"How nice he is, your father!\"\n\nKitty did not speak.\n\n\"When shall I see you again?\" asked Varenka.\n\n\"Mamma meant to go and see the Petrovs. Won't you be there?\" said Kitty,\nto try Varenka.\n\n\"Yes,\" answered Varenka. \"They're getting ready to go away, so I\npromised to help them pack.\"\n\n\"Well, I'll come too, then.\"\n\n\"No, why should you?\"\n\n\"Why not? why not? why not?\" said Kitty, opening her eyes wide, and\nclutching at Varenka's parasol, so as not to let her go. \"No, wait a\nminute; why not?\"\n\n\"Oh, nothing; your father has come, and besides, they will feel awkward\nat your helping.\"\n\n\"No, tell me why you don't want me to be often at the Petrovs'. You\ndon't want me to--why not?\"\n\n\"I didn't say that,\" said Varenka quietly.\n\n\"No, please tell me!\"\n\n\"Tell you everything?\" asked Varenka.\n\n\"Everything, everything!\" Kitty assented.\n\n\"Well, there's really nothing of any consequence; only that Mihail\nAlexeyevitch\" (that was the artist's name) \"had meant to leave earlier,\nand now he doesn't want to go away,\" said Varenka, smiling.\n\n\"Well, well!\" Kitty urged impatiently, looking darkly at Varenka.\n\n\"Well, and for some reason Anna Pavlovna told him that he didn't want to\ngo because you are here. Of course, that was nonsense; but there was a\ndispute over it--over you. You know how irritable these sick people\nare.\"\n\nKitty, scowling more than ever, kept silent, and Varenka went on\nspeaking alone, trying to soften or soothe her, and seeing a storm\ncoming--she did not know whether of tears or of words.\n\n\"So you'd better not go.... You understand; you won't be offended?...\"\n\n\"And it serves me right! And it serves me right!\" Kitty cried quickly,\nsnatching the parasol out of Varenka's hand, and looking past her\nfriend's face.\n\nVarenka felt inclined to smile, looking at her childish fury, but she\nwas afraid of wounding her.\n\n\"How does it serve you right? I don't understand,\" she said.\n\n\"It serves me right, because it was all sham; because it was all done on\npurpose, and not from the heart. What business had I to interfere with\noutsiders? And so it's come about that I'm a cause of quarrel, and that\nI've done what nobody asked me to do. Because it was all a sham! a sham!\na sham!...\"\n\n\"A sham! with what object?\" said Varenka gently.\n\n\"Oh, it's so idiotic! so hateful! There was no need whatever for me....\nNothing but sham!\" she said, opening and shutting the parasol.\n\n\"But with what object?\"\n\n\"To seem better to people, to myself, to God; to deceive everyone. No!\nnow I won't descend to that. I'll be bad; but anyway not a liar, a\ncheat.\"\n\n\"But who is a cheat?\" said Varenka reproachfully. \"You speak as if...\"\n\nBut Kitty was in one of her gusts of fury, and she would not let her\nfinish.\n\n\"I don't talk about you, not about you at all. You're perfection. Yes,\nyes, I know you're all perfection; but what am I to do if I'm bad? This\nwould never have been if I weren't bad. So let me be what I am. I won't\nbe a sham. What have I to do with Anna Pavlovna? Let them go their way,\nand me go mine. I can't be different.... And yet it's not that, it's not\nthat.\"\n\n\"What is not that?\" asked Varenka in bewilderment.\n\n\"Everything. I can't act except from the heart, and you act from\nprinciple. I liked you simply, but you most likely only wanted to save\nme, to improve me.\"\n\n\"You are unjust,\" said Varenka.\n\n\"But I'm not speaking of other people, I'm speaking of myself.\"\n\n\"Kitty,\" they heard her mother's voice, \"come here, show papa your\nnecklace.\"\n\nKitty, with a haughty air, without making peace with her friend, took\nthe necklace in a little box from the table and went to her mother.\n\n\"What's the matter? Why are you so red?\" her mother and father said to\nher with one voice.\n\n\"Nothing,\" she answered. \"I'll be back directly,\" and she ran back.\n\n\"She's still here,\" she thought. \"What am I to say to her? Oh, dear!\nwhat have I done, what have I said? Why was I rude to her? What am I to\ndo? What am I to say to her?\" thought Kitty, and she stopped in the\ndoorway.\n\nVarenka in her hat and with the parasol in her hands was sitting at the\ntable examining the spring which Kitty had broken. She lifted her head.\n\n\"Varenka, forgive me, do forgive me,\" whispered Kitty, going up to her.\n\"I don't remember what I said. I...\"\n\n\"I really didn't mean to hurt you,\" said Varenka, smiling.\n\nPeace was made. But with her father's coming all the world in which she\nhad been living was transformed for Kitty. She did not give up\neverything she had learned, but she became aware that she had deceived\nherself in supposing she could be what she wanted to be. Her eyes were,\nit seemed, opened; she felt all the difficulty of maintaining herself\nwithout hypocrisy and self-conceit on the pinnacle to which she had\nwished to mount. Moreover, she became aware of all the dreariness of the\nworld of sorrow, of sick and dying people, in which she had been living.\nThe efforts she had made to like it seemed to her intolerable, and she\nfelt a longing to get back quickly into the fresh air, to Russia, to\nErgushovo, where, as she knew from letters, her sister Dolly had already\ngone with her children.\n\nBut her affection for Varenka did not wane. As she said good-bye, Kitty\nbegged her to come to them in Russia.\n\n\"I'll come when you get married,\" said Varenka.\n\n\"I shall never marry.\"\n\n\"Well, then, I shall never come.\"\n\n\"Well, then, I shall be married simply for that. Mind now, remember your\npromise,\" said Kitty.\n\nThe doctor's prediction was fulfilled. Kitty returned home to Russia\ncured. She was not so gay and thoughtless as before, but she was serene.\nHer Moscow troubles had become a memory to her.\n\n\n\n\nPART THREE\n\n\n\nChapter 1\n\n\nSergey Ivanovitch Koznishev wanted a rest from mental work, and instead\nof going abroad as he usually did, he came towards the end of May to\nstay in the country with his brother. In his judgment the best sort of\nlife was a country life. He had come now to enjoy such a life at his\nbrother's. Konstantin Levin was very glad to have him, especially as he\ndid not expect his brother Nikolay that summer. But in spite of his\naffection and respect for Sergey Ivanovitch, Konstantin Levin was\nuncomfortable with his brother in the country. It made him\nuncomfortable, and it positively annoyed him to see his brother's\nattitude to the country. To Konstantin Levin the country was the\nbackground of life, that is of pleasures, endeavors, labor. To Sergey\nIvanovitch the country meant on one hand rest from work, on the other a\nvaluable antidote to the corrupt influences of town, which he took with\nsatisfaction and a sense of its utility. To Konstantin Levin the country\nwas good first because it afforded a field for labor, of the usefulness\nof which there could be no doubt. To Sergey Ivanovitch the country was\nparticularly good, because there it was possible and fitting to do\nnothing. Moreover, Sergey Ivanovitch's attitude to the peasants rather\npiqued Konstantin. Sergey Ivanovitch used to say that he knew and liked\nthe peasantry, and he often talked to the peasants, which he knew how to\ndo without affectation or condescension, and from every such\nconversation he would deduce general conclusions in favor of the\npeasantry and in confirmation of his knowing them. Konstantin Levin did\nnot like such an attitude to the peasants. To Konstantin the peasant was\nsimply the chief partner in their common labor, and in spite of all the\nrespect and the love, almost like that of kinship, he had for the\npeasant--sucked in probably, as he said himself, with the milk of his\npeasant nurse--still as a fellow-worker with him, while sometimes\nenthusiastic over the vigor, gentleness, and justice of these men, he\nwas very often, when their common labors called for other qualities,\nexasperated with the peasant for his carelessness, lack of method,\ndrunkenness, and lying. If he had been asked whether he liked or didn't\nlike the peasants, Konstantin Levin would have been absolutely at a loss\nwhat to reply. He liked and did not like the peasants, just as he liked\nand did not like men in general. Of course, being a good-hearted man, he\nliked men rather than he disliked them, and so too with the peasants.\nBut like or dislike \"the people\" as something apart he could not, not\nonly because he lived with \"the people,\" and all his interests were\nbound up with theirs, but also because he regarded himself as a part of\n\"the people,\" did not see any special qualities or failings\ndistinguishing himself and \"the people,\" and could not contrast himself\nwith them. Moreover, although he had lived so long in the closest\nrelations with the peasants, as farmer and arbitrator, and what was\nmore, as adviser (the peasants trusted him, and for thirty miles round\nthey would come to ask his advice), he had no definite views of \"the\npeople,\" and would have been as much at a loss to answer the question\nwhether he knew \"the people\" as the question whether he liked them. For\nhim to say he knew the peasantry would have been the same as to say he\nknew men. He was continually watching and getting to know people of all\nsorts, and among them peasants, whom he regarded as good and interesting\npeople, and he was continually observing new points in them, altering\nhis former views of them and forming new ones. With Sergey Ivanovitch it\nwas quite the contrary. Just as he liked and praised a country life in\ncomparison with the life he did not like, so too he liked the peasantry\nin contradistinction to the class of men he did not like, and so too he\nknew the peasantry as something distinct from and opposed to men\ngenerally. In his methodical brain there were distinctly formulated\ncertain aspects of peasant life, deduced partly from that life itself,\nbut chiefly from contrast with other modes of life. He never changed his\nopinion of the peasantry and his sympathetic attitude towards them.\n\nIn the discussions that arose between the brothers on their views of the\npeasantry, Sergey Ivanovitch always got the better of his brother,\nprecisely because Sergey Ivanovitch had definite ideas about the\npeasant--his character, his qualities, and his tastes. Konstantin Levin\nhad no definite and unalterable idea on the subject, and so in their\narguments Konstantin was readily convicted of contradicting himself.\n\nIn Sergey Ivanovitch's eyes his younger brother was a capital fellow,\n_with his heart in the right place_ (as he expressed it in French), but\nwith a mind which, though fairly quick, was too much influenced by the\nimpressions of the moment, and consequently filled with contradictions.\nWith all the condescension of an elder brother he sometimes explained to\nhim the true import of things, but he derived little satisfaction from\narguing with him because he got the better of him too easily.\n\nKonstantin Levin regarded his brother as a man of immense intellect and\nculture, as generous in the highest sense of the word, and possessed of\na special faculty for working for the public good. But in the depths of\nhis heart, the older he became, and the more intimately he knew his\nbrother, the more and more frequently the thought struck him that this\nfaculty of working for the public good, of which he felt himself utterly\ndevoid, was possibly not so much a quality as a lack of something--not a\nlack of good, honest, noble desires and tastes, but a lack of vital\nforce, of what is called heart, of that impulse which drives a man to\nchoose someone out of the innumerable paths of life, and to care only\nfor that one. The better he knew his brother, the more he noticed that\nSergey Ivanovitch, and many other people who worked for the public\nwelfare, were not led by an impulse of the heart to care for the public\ngood, but reasoned from intellectual considerations that it was a right\nthing to take interest in public affairs, and consequently took interest\nin them. Levin was confirmed in this generalization by observing that\nhis brother did not take questions affecting the public welfare or the\nquestion of the immortality of the soul a bit more to heart than he did\nchess problems, or the ingenious construction of a new machine.\n\nBesides this, Konstantin Levin was not at his ease with his brother,\nbecause in summer in the country Levin was continually busy with work on\nthe land, and the long summer day was not long enough for him to get\nthrough all he had to do, while Sergey Ivanovitch was taking a holiday.\nBut though he was taking a holiday now, that is to say, he was doing no\nwriting, he was so used to intellectual activity that he liked to put\ninto concise and eloquent shape the ideas that occurred to him, and\nliked to have someone to listen to him. His most usual and natural\nlistener was his brother. And so in spite of the friendliness and\ndirectness of their relations, Konstantin felt an awkwardness in leaving\nhim alone. Sergey Ivanovitch liked to stretch himself on the grass in\nthe sun, and to lie so, basking and chatting lazily.\n\n\"You wouldn't believe,\" he would say to his brother, \"what a pleasure\nthis rural laziness is to me. Not an idea in one's brain, as empty as a\ndrum!\"\n\nBut Konstantin Levin found it dull sitting and listening to him,\nespecially when he knew that while he was away they would be carting\ndung onto the fields not ploughed ready for it, and heaping it all up\nanyhow; and would not screw the shares in the ploughs, but would let\nthem come off and then say that the new ploughs were a silly invention,\nand there was nothing like the old Andreevna plough, and so on.\n\n\"Come, you've done enough trudging about in the heat,\" Sergey Ivanovitch\nwould say to him.\n\n\"No, I must just run round to the counting-house for a minute,\" Levin\nwould answer, and he would run off to the fields.\n\n\n\nChapter 2\n\n\nEarly in June it happened that Agafea Mihalovna, the old nurse and\nhousekeeper, in carrying to the cellar a jar of mushrooms she had just\npickled, slipped, fell, and sprained her wrist. The district doctor, a\ntalkative young medical student, who had just finished his studies, came\nto see her. He examined the wrist, said it was not broken, was delighted\nat a chance of talking to the celebrated Sergey Ivanovitch Koznishev,\nand to show his advanced views of things told him all the scandal of the\ndistrict, complaining of the poor state into which the district council\nhad fallen. Sergey Ivanovitch listened attentively, asked him questions,\nand, roused by a new listener, he talked fluently, uttered a few keen\nand weighty observations, respectfully appreciated by the young doctor,\nand was soon in that eager frame of mind his brother knew so well, which\nalways, with him, followed a brilliant and eager conversation. After the\ndeparture of the doctor, he wanted to go with a fishing rod to the\nriver. Sergey Ivanovitch was fond of angling, and was, it seemed, proud\nof being able to care for such a stupid occupation.\n\nKonstantin Levin, whose presence was needed in the plough land and\nmeadows, had come to take his brother in the trap.\n\nIt was that time of the year, the turning-point of summer, when the\ncrops of the present year are a certainty, when one begins to think of\nthe sowing for next year, and the mowing is at hand; when the rye is all\nin ear, though its ears are still light, not yet full, and it waves in\ngray-green billows in the wind; when the green oats, with tufts of\nyellow grass scattered here and there among it, droop irregularly over\nthe late-sown fields; when the early buckwheat is already out and hiding\nthe ground; when the fallow lands, trodden hard as stone by the cattle,\nare half ploughed over, with paths left untouched by the plough; when\nfrom the dry dung-heaps carted onto the fields there comes at sunset a\nsmell of manure mixed with meadow-sweet, and on the low-lying lands the\nriverside meadows are a thick sea of grass waiting for the mowing, with\nblackened heaps of the stalks of sorrel among it.\n\nIt was the time when there comes a brief pause in the toil of the fields\nbefore the beginning of the labors of harvest--every year recurring,\nevery year straining every nerve of the peasants. The crop was a\nsplendid one, and bright, hot summer days had set in with short, dewy\nnights.\n\nThe brothers had to drive through the woods to reach the meadows. Sergey\nIvanovitch was all the while admiring the beauty of the woods, which\nwere a tangled mass of leaves, pointing out to his brother now an old\nlime tree on the point of flowering, dark on the shady side, and\nbrightly spotted with yellow stipules, now the young shoots of this\nyear's saplings brilliant with emerald. Konstantin Levin did not like\ntalking and hearing about the beauty of nature. Words for him took away\nthe beauty of what he saw. He assented to what his brother said, but he\ncould not help beginning to think of other things. When they came out of\nthe woods, all his attention was engrossed by the view of the fallow\nland on the upland, in parts yellow with grass, in parts trampled and\ncheckered with furrows, in parts dotted with ridges of dung, and in\nparts even ploughed. A string of carts was moving across it. Levin\ncounted the carts, and was pleased that all that were wanted had been\nbrought, and at the sight of the meadows his thoughts passed to the\nmowing. He always felt something special moving him to the quick at the\nhay-making. On reaching the meadow Levin stopped the horse.\n\nThe morning dew was still lying on the thick undergrowth of the grass,\nand that he might not get his feet wet, Sergey Ivanovitch asked his\nbrother to drive him in the trap up to the willow tree from which the\ncarp was caught. Sorry as Konstantin Levin was to crush down his mowing\ngrass, he drove him into the meadow. The high grass softly turned about\nthe wheels and the horse's legs, leaving its seeds clinging to the wet\naxles and spokes of the wheels. His brother seated himself under a bush,\narranging his tackle, while Levin led the horse away, fastened him up,\nand walked into the vast gray-green sea of grass unstirred by the wind.\nThe silky grass with its ripe seeds came almost to his waist in the\ndampest spots.\n\nCrossing the meadow, Konstantin Levin came out onto the road, and met an\nold man with a swollen eye, carrying a skep on his shoulder.\n\n\"What? taken a stray swarm, Fomitch?\" he asked.\n\n\"No, indeed, Konstantin Dmitrich! All we can do to keep our own! This is\nthe second swarm that has flown away.... Luckily the lads caught them.\nThey were ploughing your field. They unyoked the horses and galloped\nafter them.\"\n\n\"Well, what do you say, Fomitch--start mowing or wait a bit?\"\n\n\"Eh, well. Our way's to wait till St. Peter's Day. But you always mow\nsooner. Well, to be sure, please God, the hay's good. There'll be plenty\nfor the beasts.\"\n\n\"What do you think about the weather?\"\n\n\"That's in God's hands. Maybe it will be fine.\"\n\nLevin went up to his brother.\n\nSergey Ivanovitch had caught nothing, but he was not bored, and seemed\nin the most cheerful frame of mind. Levin saw that, stimulated by his\nconversation with the doctor, he wanted to talk. Levin, on the other\nhand, would have liked to get home as soon as possible to give orders\nabout getting together the mowers for next day, and to set at rest his\ndoubts about the mowing, which greatly absorbed him.\n\n\"Well, let's be going,\" he said.\n\n\"Why be in such a hurry? Let's stay a little. But how wet you are! Even\nthough one catches nothing, it's nice. That's the best thing about every\npart of sport, that one has to do with nature. How exquisite this steely\nwater is!\" said Sergey Ivanovitch. \"These riverside banks always remind\nme of the riddle--do you know it? 'The grass says to the water: we\nquiver and we quiver.'\"\n\n\"I don't know the riddle,\" answered Levin wearily.\n\n\n\nChapter 3\n\n\n\"Do you know, I've been thinking about you,\" said Sergey Ivanovitch.\n\"It's beyond everything what's being done in the district, according to\nwhat this doctor tells me. He's a very intelligent fellow. And as I've\ntold you before, I tell you again: it's not right for you not to go to\nthe meetings, and altogether to keep out of the district business. If\ndecent people won't go into it, of course it's bound to go all wrong. We\npay the money, and it all goes in salaries, and there are no schools,\nnor district nurses, nor midwives, nor drugstores--nothing.\"\n\n\"Well, I did try, you know,\" Levin said slowly and unwillingly. \"I\ncan't! and so there's no help for it.\"\n\n\"But why can't you? I must own I can't make it out. Indifference,\nincapacity--I won't admit; surely it's not simply laziness?\"\n\n\"None of those things. I've tried, and I see I can do nothing,\" said\nLevin.\n\nHe had hardly grasped what his brother was saying. Looking towards the\nplough land across the river, he made out something black, but he could\nnot distinguish whether it was a horse or the bailiff on horseback.\n\n\"Why is it you can do nothing? You made an attempt and didn't succeed,\nas you think, and you give in. How can you have so little self-respect?\"\n\n\"Self-respect!\" said Levin, stung to the quick by his brother's words;\n\"I don't understand. If they'd told me at college that other people\nunderstood the integral calculus, and I didn't, then pride would have\ncome in. But in this case one wants first to be convinced that one has\ncertain qualifications for this sort of business, and especially that\nall this business is of great importance.\"\n\n\"What! do you mean to say it's not of importance?\" said Sergey\nIvanovitch, stung to the quick too at his brother's considering anything\nof no importance that interested him, and still more at his obviously\npaying little attention to what he was saying.\n\n\"I don't think it important; it does not take hold of me, I can't help\nit,\" answered Levin, making out that what he saw was the bailiff, and\nthat the bailiff seemed to be letting the peasants go off the ploughed\nland. They were turning the plough over. \"Can they have finished\nploughing?\" he wondered.\n\n\"Come, really though,\" said the elder brother, with a frown on his\nhandsome, clever face, \"there's a limit to everything. It's very well to\nbe original and genuine, and to dislike everything conventional--I know\nall about that; but really, what you're saying either has no meaning, or\nit has a very wrong meaning. How can you think it a matter of no\nimportance whether the peasant, whom you love as you assert...\"\n\n\"I never did assert it,\" thought Konstantin Levin.\n\n\"... dies without help? The ignorant peasant-women starve the children,\nand the people stagnate in darkness, and are helpless in the hands of\nevery village clerk, while you have at your disposal a means of helping\nthem, and don't help them because to your mind it's of no importance.\"\n\nAnd Sergey Ivanovitch put before him the alternative: either you are so\nundeveloped that you can't see all that you can do, or you won't\nsacrifice your ease, your vanity, or whatever it is, to do it.\n\nKonstantin Levin felt that there was no course open to him but to\nsubmit, or to confess to a lack of zeal for the public good. And this\nmortified him and hurt his feelings.\n\n\"It's both,\" he said resolutely: \"I don't see that it was possible...\"\n\n\"What! was it impossible, if the money were properly laid out, to\nprovide medical aid?\"\n\n\"Impossible, as it seems to me.... For the three thousand square miles\nof our district, what with our thaws, and the storms, and the work in\nthe fields, I don't see how it is possible to provide medical aid all\nover. And besides, I don't believe in medicine.\"\n\n\"Oh, well, that's unfair ... I can quote to you thousands of\ninstances.... But the schools, anyway.\"\n\n\"Why have schools?\"\n\n\"What do you mean? Can there be two opinions of the advantage of\neducation? If it's a good thing for you, it's a good thing for\neveryone.\"\n\nKonstantin Levin felt himself morally pinned against a wall, and so he\ngot hot, and unconsciously blurted out the chief cause of his\nindifference to public business.\n\n\"Perhaps it may all be very good; but why should I worry myself about\nestablishing dispensaries which I shall never make use of, and schools\nto which I shall never send my children, to which even the peasants\ndon't want to send their children, and to which I've no very firm faith\nthat they ought to send them?\" said he.\n\nSergey Ivanovitch was for a minute surprised at this unexpected view of\nthe subject; but he promptly made a new plan of attack. He was silent\nfor a little, drew out a hook, threw it in again, and turned to his\nbrother smiling.\n\n\"Come, now.... In the first place, the dispensary is needed. We\nourselves sent for the district doctor for Agafea Mihalovna.\"\n\n\"Oh, well, but I fancy her wrist will never be straight again.\"\n\n\"That remains to be proved.... Next, the peasant who can read and write\nis as a workman of more use and value to you.\"\n\n\"No, you can ask anyone you like,\" Konstantin Levin answered with\ndecision, \"the man that can read and write is much inferior as a\nworkman. And mending the highroads is an impossibility; and as soon as\nthey put up bridges they're stolen.\"\n\n\"Still, that's not the point,\" said Sergey Ivanovitch, frowning. He\ndisliked contradiction, and still more, arguments that were continually\nskipping from one thing to another, introducing new and disconnected\npoints, so that there was no knowing to which to reply. \"Do you admit\nthat education is a benefit for the people?\"\n\n\"Yes, I admit it,\" said Levin without thinking, and he was conscious\nimmediately that he had said what he did not think. He felt that if he\nadmitted that, it would be proved that he had been talking meaningless\nrubbish. How it would be proved he could not tell, but he knew that this\nwould inevitably be logically proved to him, and he awaited the proofs.\n\nThe argument turned out to be far simpler than he had expected.\n\n\"If you admit that it is a benefit,\" said Sergey Ivanovitch, \"then, as\nan honest man, you cannot help caring about it and sympathizing with the\nmovement, and so wishing to work for it.\"\n\n\"But I still do not admit this movement to be just,\" said Konstantin\nLevin, reddening a little.\n\n\"What! But you said just now...\"\n\n\"That's to say, I don't admit it's being either good or possible.\"\n\n\"That you can't tell without making the trial.\"\n\n\"Well, supposing that's so,\" said Levin, though he did not suppose so at\nall, \"supposing that is so, still I don't see, all the same, what I'm to\nworry myself about it for.\"\n\n\"How so?\"\n\n\"No; since we are talking, explain it to me from the philosophical point\nof view,\" said Levin.\n\n\"I can't see where philosophy comes in,\" said Sergey Ivanovitch, in a\ntone, Levin fancied, as though he did not admit his brother's right to\ntalk about philosophy. And that irritated Levin.\n\n\"I'll tell you, then,\" he said with heat, \"I imagine the mainspring of\nall our actions is, after all, self-interest. Now in the local\ninstitutions I, as a nobleman, see nothing that could conduce to my\nprosperity, and the roads are not better and could not be better; my\nhorses carry me well enough over bad ones. Doctors and dispensaries are\nno use to me. An arbitrator of disputes is no use to me. I never appeal\nto him, and never shall appeal to him. The schools are no good to me,\nbut positively harmful, as I told you. For me the district institutions\nsimply mean the liability to pay fourpence halfpenny for every three\nacres, to drive into the town, sleep with bugs, and listen to all sorts\nof idiocy and loathsomeness, and self-interest offers me no inducement.\"\n\n\"Excuse me,\" Sergey Ivanovitch interposed with a smile, \"self-interest\ndid not induce us to work for the emancipation of the serfs, but we did\nwork for it.\"\n\n\"No!\" Konstantin Levin broke in with still greater heat; \"the\nemancipation of the serfs was a different matter. There self-interest\ndid come in. One longed to throw off that yoke that crushed us, all\ndecent people among us. But to be a town councilor and discuss how many\ndustmen are needed, and how chimneys shall be constructed in the town in\nwhich I don't live--to serve on a jury and try a peasant who's stolen a\nflitch of bacon, and listen for six hours at a stretch to all sorts of\njabber from the counsel for the defense and the prosecution, and the\npresident cross-examining my old half-witted Alioshka, 'Do you admit,\nprisoner in the dock, the fact of the removal of the bacon?' 'Eh?'\"\n\nKonstantin Levin had warmed to his subject, and began mimicking the\npresident and the half-witted Alioshka: it seemed to him that it was all\nto the point.\n\nBut Sergey Ivanovitch shrugged his shoulders.\n\n\"Well, what do you mean to say, then?\"\n\n\"I simply mean to say that those rights that touch me ... my interest, I\nshall always defend to the best of my ability; that when they made raids\non us students, and the police read our letters, I was ready to defend\nthose rights to the utmost, to defend my rights to education and\nfreedom. I can understand compulsory military service, which affects my\nchildren, my brothers, and myself, I am ready to deliberate on what\nconcerns me; but deliberating on how to spend forty thousand roubles of\ndistrict council money, or judging the half-witted Alioshka--I don't\nunderstand, and I can't do it.\"\n\nKonstantin Levin spoke as though the floodgates of his speech had burst\nopen. Sergey Ivanovitch smiled.\n\n\"But tomorrow it'll be your turn to be tried; would it have suited your\ntastes better to be tried in the old criminal tribunal?\"\n\n\"I'm not going to be tried. I shan't murder anybody, and I've no need of\nit. Well, I tell you what,\" he went on, flying off again to a subject\nquite beside the point, \"our district self-government and all the rest\nof it--it's just like the birch branches we stick in the ground on\nTrinity Day, for instance, to look like a copse which has grown up of\nitself in Europe, and I can't gush over these birch branches and believe\nin them.\"\n\nSergey Ivanovitch merely shrugged his shoulders, as though to express\nhis wonder how the birch branches had come into their argument at that\npoint, though he did really understand at once what his brother meant.\n\n\"Excuse me, but you know one really can't argue in that way,\" he\nobserved.\n\nBut Konstantin Levin wanted to justify himself for the failing, of which\nhe was conscious, of lack of zeal for the public welfare, and he went\non.\n\n\"I imagine,\" he said, \"that no sort of activity is likely to be lasting\nif it is not founded on self-interest, that's a universal principle, a\nphilosophical principle,\" he said, repeating the word \"philosophical\"\nwith determination, as though wishing to show that he had as much right\nas any one else to talk of philosophy.\n\nSergey Ivanovitch smiled. \"He too has a philosophy of his own at the\nservice of his natural tendencies,\" he thought.\n\n\"Come, you'd better let philosophy alone,\" he said. \"The chief problem\nof the philosophy of all ages consists just in finding the indispensable\nconnection which exists between individual and social interests. But\nthat's not to the point; what is to the point is a correction I must\nmake in your comparison. The birches are not simply stuck in, but some\nare sown and some are planted, and one must deal carefully with them.\nIt's only those peoples that have an intuitive sense of what's of\nimportance and significance in their institutions, and know how to value\nthem, that have a future before them--it's only those peoples that one\ncan truly call historical.\"\n\nAnd Sergey Ivanovitch carried the subject into the regions of\nphilosophical history where Konstantin Levin could not follow him, and\nshowed him all the incorrectness of his view.\n\n\"As for your dislike of it, excuse my saying so, that's simply our\nRussian sloth and old serf-owner's ways, and I'm convinced that in you\nit's a temporary error and will pass.\"\n\nKonstantin was silent. He felt himself vanquished on all sides, but he\nfelt at the same time that what he wanted to say was unintelligible to\nhis brother. Only he could not make up his mind whether it was\nunintelligible because he was not capable of expressing his meaning\nclearly, or because his brother would not or could not understand him.\nBut he did not pursue the speculation, and without replying, he fell to\nmusing on a quite different and personal matter.\n\nSergey Ivanovitch wound up the last line, untied the horse, and they\ndrove off.\n\n\n\nChapter 4\n\n\nThe personal matter that absorbed Levin during his conversation with his\nbrother was this. Once in a previous year he had gone to look at the\nmowing, and being made very angry by the bailiff he had recourse to his\nfavorite means for regaining his temper,--he took a scythe from a\npeasant and began mowing.\n\nHe liked the work so much that he had several times tried his hand at\nmowing since. He had cut the whole of the meadow in front of his house,\nand this year ever since the early spring he had cherished a plan for\nmowing for whole days together with the peasants. Ever since his\nbrother's arrival, he had been in doubt whether to mow or not. He was\nloath to leave his brother alone all day long, and he was afraid his\nbrother would laugh at him about it. But as he drove into the meadow,\nand recalled the sensations of mowing, he came near deciding that he\nwould go mowing. After the irritating discussion with his brother, he\npondered over this intention again.\n\n\"I must have physical exercise, or my temper'll certainly be ruined,\" he\nthought, and he determined he would go mowing, however awkward he might\nfeel about it with his brother or the peasants.\n\nTowards evening Konstantin Levin went to his counting house, gave\ndirections as to the work to be done, and sent about the village to\nsummon the mowers for the morrow, to cut the hay in Kalinov meadow, the\nlargest and best of his grass lands.\n\n\"And send my scythe, please, to Tit, for him to set it, and bring it\nround tomorrow. I shall maybe do some mowing myself too,\" he said,\ntrying not to be embarrassed.\n\nThe bailiff smiled and said: \"Yes, sir.\"\n\nAt tea the same evening Levin said to his brother:\n\n\"I fancy the fine weather will last. Tomorrow I shall start mowing.\"\n\n\"I'm so fond of that form of field labor,\" said Sergey Ivanovitch.\n\n\"I'm awfully fond of it. I sometimes mow myself with the peasants, and\ntomorrow I want to try mowing the whole day.\"\n\nSergey Ivanovitch lifted his head, and looked with interest at his\nbrother.\n\n\"How do you mean? Just like one of the peasants, all day long?\"\n\n\"Yes, it's very pleasant,\" said Levin.\n\n\"It's splendid as exercise, only you'll hardly be able to stand it,\"\nsaid Sergey Ivanovitch, without a shade of irony.\n\n\"I've tried it. It's hard work at first, but you get into it. I dare say\nI shall manage to keep it up...\"\n\n\"Really! what an idea! But tell me, how do the peasants look at it? I\nsuppose they laugh in their sleeves at their master's being such a queer\nfish?\"\n\n\"No, I don't think so; but it's so delightful, and at the same time such\nhard work, that one has no time to think about it.\"\n\n\"But how will you do about dining with them? To send you a bottle of\nLafitte and roast turkey out there would be a little awkward.\"\n\n\"No, I'll simply come home at the time of their noonday rest.\"\n\nNext morning Konstantin Levin got up earlier than usual, but he was\ndetained giving directions on the farm, and when he reached the mowing\ngrass the mowers were already at their second row.\n\nFrom the uplands he could get a view of the shaded cut part of the\nmeadow below, with its grayish ridges of cut grass, and the black heaps\nof coats, taken off by the mowers at the place from which they had\nstarted cutting.\n\nGradually, as he rode towards the meadow, the peasants came into sight,\nsome in coats, some in their shirts mowing, one behind another in a long\nstring, swinging their scythes differently. He counted forty-two of\nthem.\n\nThey were mowing slowly over the uneven, low-lying parts of the meadow,\nwhere there had been an old dam. Levin recognized some of his own men.\nHere was old Yermil in a very long white smock, bending forward to swing\na scythe; there was a young fellow, Vaska, who had been a coachman of\nLevin's, taking every row with a wide sweep. Here, too, was Tit, Levin's\npreceptor in the art of mowing, a thin little peasant. He was in front\nof all, and cut his wide row without bending, as though playing with the\nscythe.\n\nLevin got off his mare, and fastening her up by the roadside went to\nmeet Tit, who took a second scythe out of a bush and gave it to him.\n\n\"It's ready, sir; it's like a razor, cuts of itself,\" said Tit, taking\noff his cap with a smile and giving him the scythe.\n\nLevin took the scythe, and began trying it. As they finished their rows,\nthe mowers, hot and good-humored, came out into the road one after\nanother, and, laughing a little, greeted the master. They all stared at\nhim, but no one made any remark, till a tall old man, with a wrinkled,\nbeardless face, wearing a short sheepskin jacket, came out into the road\nand accosted him.\n\n\"Look'ee now, master, once take hold of the rope there's no letting it\ngo!\" he said, and Levin heard smothered laughter among the mowers.\n\n\"I'll try not to let it go,\" he said, taking his stand behind Tit, and\nwaiting for the time to begin.\n\n\"Mind'ee,\" repeated the old man.\n\nTit made room, and Levin started behind him. The grass was short close\nto the road, and Levin, who had not done any mowing for a long while,\nand was disconcerted by the eyes fastened upon him, cut badly for the\nfirst moments, though he swung his scythe vigorously. Behind him he\nheard voices:\n\n\"It's not set right; handle's too high; see how he has to stoop to it,\"\nsaid one.\n\n\"Press more on the heel,\" said another.\n\n\"Never mind, he'll get on all right,\" the old man resumed.\n\n\"He's made a start.... You swing it too wide, you'll tire yourself\nout.... The master, sure, does his best for himself! But see the grass\nmissed out! For such work us fellows would catch it!\"\n\nThe grass became softer, and Levin, listening without answering,\nfollowed Tit, trying to do the best he could. They moved a hundred\npaces. Tit kept moving on, without stopping, not showing the slightest\nweariness, but Levin was already beginning to be afraid he would not be\nable to keep it up: he was so tired.\n\nHe felt as he swung his scythe that he was at the very end of his\nstrength, and was making up his mind to ask Tit to stop. But at that\nvery moment Tit stopped of his own accord, and stooping down picked up\nsome grass, rubbed his scythe, and began whetting it. Levin straightened\nhimself, and drawing a deep breath looked round. Behind him came a\npeasant, and he too was evidently tired, for he stopped at once without\nwaiting to mow up to Levin, and began whetting his scythe. Tit sharpened\nhis scythe and Levin's, and they went on. The next time it was just the\nsame. Tit moved on with sweep after sweep of his scythe, not stopping\nnor showing signs of weariness. Levin followed him, trying not to get\nleft behind, and he found it harder and harder: the moment came when he\nfelt he had no strength left, but at that very moment Tit stopped and\nwhetted the scythes.\n\nSo they mowed the first row. And this long row seemed particularly hard\nwork to Levin; but when the end was reached and Tit, shouldering his\nscythe, began with deliberate stride returning on the tracks left by his\nheels in the cut grass, and Levin walked back in the same way over the\nspace he had cut, in spite of the sweat that ran in streams over his\nface and fell in drops down his nose, and drenched his back as though he\nhad been soaked in water, he felt very happy. What delighted him\nparticularly was that now he knew he would be able to hold out.\n\nHis pleasure was only disturbed by his row not being well cut. \"I will\nswing less with my arm and more with my whole body,\" he thought,\ncomparing Tit's row, which looked as if it had been cut with a line,\nwith his own unevenly and irregularly lying grass.\n\nThe first row, as Levin noticed, Tit had mowed specially quickly,\nprobably wishing to put his master to the test, and the row happened to\nbe a long one. The next rows were easier, but still Levin had to strain\nevery nerve not to drop behind the peasants.\n\nHe thought of nothing, wished for nothing, but not to be left behind the\npeasants, and to do his work as well as possible. He heard nothing but\nthe swish of scythes, and saw before him Tit's upright figure mowing\naway, the crescent-shaped curve of the cut grass, the grass and flower\nheads slowly and rhythmically falling before the blade of his scythe,\nand ahead of him the end of the row, where would come the rest.\n\nSuddenly, in the midst of his toil, without understanding what it was or\nwhence it came, he felt a pleasant sensation of chill on his hot, moist\nshoulders. He glanced at the sky in the interval for whetting the\nscythes. A heavy, lowering storm cloud had blown up, and big raindrops\nwere falling. Some of the peasants went to their coats and put them on;\nothers--just like Levin himself--merely shrugged their shoulders,\nenjoying the pleasant coolness of it.\n\nAnother row, and yet another row, followed--long rows and short rows,\nwith good grass and with poor grass. Levin lost all sense of time, and\ncould not have told whether it was late or early now. A change began to\ncome over his work, which gave him immense satisfaction. In the midst of\nhis toil there were moments during which he forgot what he was doing,\nand it came all easy to him, and at those same moments his row was\nalmost as smooth and well cut as Tit's. But so soon as he recollected\nwhat he was doing, and began trying to do better, he was at once\nconscious of all the difficulty of his task, and the row was badly mown.\n\nOn finishing yet another row he would have gone back to the top of the\nmeadow again to begin the next, but Tit stopped, and going up to the old\nman said something in a low voice to him. They both looked at the sun.\n\"What are they talking about, and why doesn't he go back?\" thought\nLevin, not guessing that the peasants had been mowing no less than four\nhours without stopping, and it was time for their lunch.\n\n\"Lunch, sir,\" said the old man.\n\n\"Is it really time? That's right; lunch, then.\"\n\nLevin gave his scythe to Tit, and together with the peasants, who were\ncrossing the long stretch of mown grass, slightly sprinkled with rain,\nto get their bread from the heap of coats, he went towards his house.\nOnly then he suddenly awoke to the fact that he had been wrong about the\nweather and the rain was drenching his hay.\n\n\"The hay will be spoiled,\" he said.\n\n\"Not a bit of it, sir; mow in the rain, and you'll rake in fine\nweather!\" said the old man.\n\nLevin untied his horse and rode home to his coffee. Sergey Ivanovitch\nwas only just getting up. When he had drunk his coffee, Levin rode back\nagain to the mowing before Sergey Ivanovitch had had time to dress and\ncome down to the dining room.\n\n\n\nChapter 5\n\n\nAfter lunch Levin was not in the same place in the string of mowers as\nbefore, but stood between the old man who had accosted him jocosely, and\nnow invited him to be his neighbor, and a young peasant, who had only\nbeen married in the autumn, and who was mowing this summer for the first\ntime.\n\nThe old man, holding himself erect, moved in front, with his feet turned\nout, taking long, regular strides, and with a precise and regular action\nwhich seemed to cost him no more effort than swinging one's arms in\nwalking, as though it were in play, he laid down the high, even row of\ngrass. It was as though it were not he but the sharp scythe of itself\nswishing through the juicy grass.\n\nBehind Levin came the lad Mishka. His pretty, boyish face, with a twist\nof fresh grass bound round his hair, was all working with effort; but\nwhenever anyone looked at him he smiled. He would clearly have died\nsooner than own it was hard work for him.\n\nLevin kept between them. In the very heat of the day the mowing did not\nseem such hard work to him. The perspiration with which he was drenched\ncooled him, while the sun, that burned his back, his head, and his arms,\nbare to the elbow, gave a vigor and dogged energy to his labor; and more\nand more often now came those moments of unconsciousness, when it was\npossible not to think what one was doing. The scythe cut of itself.\nThese were happy moments. Still more delightful were the moments when\nthey reached the stream where the rows ended, and the old man rubbed his\nscythe with the wet, thick grass, rinsed its blade in the fresh water of\nthe stream, ladled out a little in a tin dipper, and offered Levin a\ndrink.\n\n\"What do you say to my home-brew, eh? Good, eh?\" said he, winking.\n\nAnd truly Levin had never drunk any liquor so good as this warm water\nwith green bits floating in it, and a taste of rust from the tin dipper.\nAnd immediately after this came the delicious, slow saunter, with his\nhand on the scythe, during which he could wipe away the streaming sweat,\ntake deep breaths of air, and look about at the long string of mowers\nand at what was happening around in the forest and the country.\n\nThe longer Levin mowed, the oftener he felt the moments of\nunconsciousness in which it seemed not his hands that swung the scythe,\nbut the scythe mowing of itself, a body full of life and consciousness\nof its own, and as though by magic, without thinking of it, the work\nturned out regular and well-finished of itself. These were the most\nblissful moments.\n\nIt was only hard work when he had to break off the motion, which had\nbecome unconscious, and to think; when he had to mow round a hillock or\na tuft of sorrel. The old man did this easily. When a hillock came he\nchanged his action, and at one time with the heel, and at another with\nthe tip of his scythe, clipped the hillock round both sides with short\nstrokes. And while he did this he kept looking about and watching what\ncame into his view: at one moment he picked a wild berry and ate it or\noffered it to Levin, then he flung away a twig with the blade of the\nscythe, then he looked at a quail's nest, from which the bird flew just\nunder the scythe, or caught a snake that crossed his path, and lifting\nit on the scythe as though on a fork showed it to Levin and threw it\naway.\n\nFor both Levin and the young peasant behind him, such changes of\nposition were difficult. Both of them, repeating over and over again the\nsame strained movement, were in a perfect frenzy of toil, and were\nincapable of shifting their position and at the same time watching what\nwas before them.\n\nLevin did not notice how time was passing. If he had been asked how long\nhe had been working he would have said half an hour--and it was getting\non for dinner time. As they were walking back over the cut grass, the\nold man called Levin's attention to the little girls and boys who were\ncoming from different directions, hardly visible through the long grass,\nand along the road towards the mowers, carrying sacks of bread dragging\nat their little hands and pitchers of the sour rye-beer, with cloths\nwrapped round them.\n\n\"Look'ee, the little emmets crawling!\" he said, pointing to them, and he\nshaded his eyes with his hand to look at the sun. They mowed two more\nrows; the old man stopped.\n\n\"Come, master, dinner time!\" he said briskly. And on reaching the stream\nthe mowers moved off across the lines of cut grass towards their pile of\ncoats, where the children who had brought their dinners were sitting\nwaiting for them. The peasants gathered into groups--those further away\nunder a cart, those nearer under a willow bush.\n\nLevin sat down by them; he felt disinclined to go away.\n\nAll constraint with the master had disappeared long ago. The peasants\ngot ready for dinner. Some washed, the young lads bathed in the stream,\nothers made a place comfortable for a rest, untied their sacks of bread,\nand uncovered the pitchers of rye-beer. The old man crumbled up some\nbread in a cup, stirred it with the handle of a spoon, poured water on\nit from the dipper, broke up some more bread, and having seasoned it\nwith salt, he turned to the east to say his prayer.\n\n\"Come, master, taste my sop,\" said he, kneeling down before the cup.\n\nThe sop was so good that Levin gave up the idea of going home. He dined\nwith the old man, and talked to him about his family affairs, taking the\nkeenest interest in them, and told him about his own affairs and all the\ncircumstances that could be of interest to the old man. He felt much\nnearer to him than to his brother, and could not help smiling at the\naffection he felt for this man. When the old man got up again, said his\nprayer, and lay down under a bush, putting some grass under his head for\na pillow, Levin did the same, and in spite of the clinging flies that\nwere so persistent in the sunshine, and the midges that tickled his hot\nface and body, he fell asleep at once and only waked when the sun had\npassed to the other side of the bush and reached him. The old man had\nbeen awake a long while, and was sitting up whetting the scythes of the\nyounger lads.\n\nLevin looked about him and hardly recognized the place, everything was\nso changed. The immense stretch of meadow had been mown and was\nsparkling with a peculiar fresh brilliance, with its lines of already\nsweet-smelling grass in the slanting rays of the evening sun. And the\nbushes about the river had been cut down, and the river itself, not\nvisible before, now gleaming like steel in its bends, and the moving,\nascending, peasants, and the sharp wall of grass of the unmown part of\nthe meadow, and the hawks hovering over the stripped meadow--all was\nperfectly new. Raising himself, Levin began considering how much had\nbeen cut and how much more could still be done that day.\n\nThe work done was exceptionally much for forty-two men. They had cut the\nwhole of the big meadow, which had, in the years of serf labor, taken\nthirty scythes two days to mow. Only the corners remained to do, where\nthe rows were short. But Levin felt a longing to get as much mowing done\nthat day as possible, and was vexed with the sun sinking so quickly in\nthe sky. He felt no weariness; all he wanted was to get his work done\nmore and more quickly and as much done as possible.\n\n\"Could you cut Mashkin Upland too?--what do you think?\" he said to the\nold man.\n\n\"As God wills, the sun's not high. A little vodka for the lads?\"\n\nAt the afternoon rest, when they were sitting down again, and those who\nsmoked had lighted their pipes, the old man told the men that \"Mashkin\nUpland's to be cut--there'll be some vodka.\"\n\n\"Why not cut it? Come on, Tit! We'll look sharp! We can eat at night.\nCome on!\" cried voices, and eating up their bread, the mowers went back\nto work.\n\n\"Come, lads, keep it up!\" said Tit, and ran on ahead almost at a trot.\n\n\"Get along, get along!\" said the old man, hurrying after him and easily\novertaking him, \"I'll mow you down, look out!\"\n\nAnd young and old mowed away, as though they were racing with one\nanother. But however fast they worked, they did not spoil the grass, and\nthe rows were laid just as neatly and exactly. The little piece left\nuncut in the corner was mown in five minutes. The last of the mowers\nwere just ending their rows while the foremost snatched up their coats\nonto their shoulders, and crossed the road towards Mashkin Upland.\n\nThe sun was already sinking into the trees when they went with their\njingling dippers into the wooded ravine of Mashkin Upland. The grass was\nup to their waists in the middle of the hollow, soft, tender, and\nfeathery, spotted here and there among the trees with wild heart's-ease.\n\nAfter a brief consultation--whether to take the rows lengthwise or\ndiagonally--Prohor Yermilin, also a renowned mower, a huge, black-haired\npeasant, went on ahead. He went up to the top, turned back again and\nstarted mowing, and they all proceeded to form in line behind him, going\ndownhill through the hollow and uphill right up to the edge of the\nforest. The sun sank behind the forest. The dew was falling by now; the\nmowers were in the sun only on the hillside, but below, where a mist was\nrising, and on the opposite side, they mowed into the fresh, dewy shade.\nThe work went rapidly. The grass cut with a juicy sound, and was at once\nlaid in high, fragrant rows. The mowers from all sides, brought closer\ntogether in the short row, kept urging one another on to the sound of\njingling dippers and clanging scythes, and the hiss of the whetstones\nsharpening them, and good-humored shouts.\n\nLevin still kept between the young peasant and the old man. The old man,\nwho had put on his short sheepskin jacket, was just as good-humored,\njocose, and free in his movements. Among the trees they were continually\ncutting with their scythes the so-called \"birch mushrooms,\" swollen fat\nin the succulent grass. But the old man bent down every time he came\nacross a mushroom, picked it up and put it in his bosom. \"Another\npresent for my old woman,\" he said as he did so.\n\nEasy as it was to mow the wet, soft grass, it was hard work going up and\ndown the steep sides of the ravine. But this did not trouble the old\nman. Swinging his scythe just as ever, and moving his feet in their big,\nplaited shoes with firm, little steps, he climbed slowly up the steep\nplace, and though his breeches hanging out below his smock, and his\nwhole frame trembled with effort, he did not miss one blade of grass or\none mushroom on his way, and kept making jokes with the peasants and\nLevin. Levin walked after him and often thought he must fall, as he\nclimbed with a scythe up a steep cliff where it would have been hard\nwork to clamber without anything. But he climbed up and did what he had\nto do. He felt as though some external force were moving him.\n\n\n\nChapter 6\n\n\nMashkin Upland was mown, the last row finished, the peasants had put on\ntheir coats and were gaily trudging home. Levin got on his horse and,\nparting regretfully from the peasants, rode homewards. On the hillside\nhe looked back; he could not see them in the mist that had risen from\nthe valley; he could only hear rough, good-humored voices, laughter, and\nthe sound of clanking scythes.\n\nSergey Ivanovitch had long ago finished dinner, and was drinking iced\nlemon and water in his own room, looking through the reviews and papers\nwhich he had only just received by post, when Levin rushed into the\nroom, talking merrily, with his wet and matted hair sticking to his\nforehead, and his back and chest grimed and moist.\n\n\"We mowed the whole meadow! Oh, it is nice, delicious! And how have you\nbeen getting on?\" said Levin, completely forgetting the disagreeable\nconversation of the previous day.\n\n\"Mercy! what do you look like!\" said Sergey Ivanovitch, for the first\nmoment looking round with some dissatisfaction. \"And the door, do shut\nthe door!\" he cried. \"You must have let in a dozen at least.\"\n\nSergey Ivanovitch could not endure flies, and in his own room he never\nopened the window except at night, and carefully kept the door shut.\n\n\"Not one, on my honor. But if I have, I'll catch them. You wouldn't\nbelieve what a pleasure it is! How have you spent the day?\"\n\n\"Very well. But have you really been mowing the whole day? I expect\nyou're as hungry as a wolf. Kouzma has got everything ready for you.\"\n\n\"No, I don't feel hungry even. I had something to eat there. But I'll go\nand wash.\"\n\n\"Yes, go along, go along, and I'll come to you directly,\" said Sergey\nIvanovitch, shaking his head as he looked at his brother. \"Go along,\nmake haste,\" he added smiling, and gathering up his books, he prepared\nto go too. He, too, felt suddenly good-humored and disinclined to leave\nhis brother's side. \"But what did you do while it was raining?\"\n\n\"Rain? Why, there was scarcely a drop. I'll come directly. So you had a\nnice day too? That's first-rate.\" And Levin went off to change his\nclothes.\n\nFive minutes later the brothers met in the dining room. Although it\nseemed to Levin that he was not hungry, and he sat down to dinner simply\nso as not to hurt Kouzma's feelings, yet when he began to eat the dinner\nstruck him as extraordinarily good. Sergey Ivanovitch watched him with a\nsmile.\n\n\"Oh, by the way, there's a letter for you,\" said he. \"Kouzma, bring it\ndown, please. And mind you shut the doors.\"\n\nThe letter was from Oblonsky. Levin read it aloud. Oblonsky wrote to him\nfrom Petersburg: \"I have had a letter from Dolly; she's at Ergushovo,\nand everything seems going wrong there. Do ride over and see her,\nplease; help her with advice; you know all about it. She will be so glad\nto see you. She's quite alone, poor thing. My mother-in-law and all of\nthem are still abroad.\"\n\n\"That's capital! I will certainly ride over to her,\" said Levin. \"Or\nwe'll go together. She's such a splendid woman, isn't she?\"\n\n\"They're not far from here, then?\"\n\n\"Twenty-five miles. Or perhaps it is thirty. But a capital road.\nCapital, we'll drive over.\"\n\n\"I shall be delighted,\" said Sergey Ivanovitch, still smiling. The sight\nof his younger brother's appearance had immediately put him in a good\nhumor.\n\n\"Well, you have an appetite!\" he said, looking at his dark-red, sunburnt\nface and neck bent over the plate.\n\n\"Splendid! You can't imagine what an effectual remedy it is for every\nsort of foolishness. I want to enrich medicine with a new word:\n_Arbeitskur_.\"\n\n\"Well, but you don't need it, I should fancy.\"\n\n\"No, but for all sorts of nervous invalids.\"\n\n\"Yes, it ought to be tried. I had meant to come to the mowing to look at\nyou, but it was so unbearably hot that I got no further than the forest.\nI sat there a little, and went on by the forest to the village, met your\nold nurse, and sounded her as to the peasants' view of you. As far as I\ncan make out, they don't approve of this. She said: 'It's not a\ngentleman's work.' Altogether, I fancy that in the people's ideas there\nare very clear and definite notions of certain, as they call it,\n'gentlemanly' lines of action. And they don't sanction the gentry's\nmoving outside bounds clearly laid down in their ideas.\"\n\n\"Maybe so; but anyway it's a pleasure such as I have never known in my\nlife. And there's no harm in it, you know. Is there?\" answered Levin. \"I\ncan't help it if they don't like it. Though I do believe it's all right.\nEh?\"\n\n\"Altogether,\" pursued Sergey Ivanovitch, \"you're satisfied with your\nday?\"\n\n\"Quite satisfied. We cut the whole meadow. And such a splendid old man I\nmade friends with there! You can't fancy how delightful he was!\"\n\n\"Well, so you're content with your day. And so am I. First, I solved two\nchess problems, and one a very pretty one--a pawn opening. I'll show it\nyou. And then--I thought over our conversation yesterday.\"\n\n\"Eh! our conversation yesterday?\" said Levin, blissfully dropping his\neyelids and drawing deep breaths after finishing his dinner, and\nabsolutely incapable of recalling what their conversation yesterday was\nabout.\n\n\"I think you are partly right. Our difference of opinion amounts to\nthis, that you make the mainspring self-interest, while I suppose that\ninterest in the common weal is bound to exist in every man of a certain\ndegree of advancement. Possibly you are right too, that action founded\non material interest would be more desirable. You are altogether, as the\nFrench say, too _primesautiere_ a nature; you must have intense,\nenergetic action, or nothing.\"\n\nLevin listened to his brother and did not understand a single word, and\ndid not want to understand. He was only afraid his brother might ask him\nsome question which would make it evident he had not heard.\n\n\"So that's what I think it is, my dear boy,\" said Sergey Ivanovitch,\ntouching him on the shoulder.\n\n\"Yes, of course. But, do you know? I won't stand up for my view,\"\nanswered Levin, with a guilty, childlike smile. \"Whatever was it I was\ndisputing about?\" he wondered. \"Of course, I'm right, and he's right,\nand it's all first-rate. Only I must go round to the counting house and\nsee to things.\" He got up, stretching and smiling. Sergey Ivanovitch\nsmiled too.\n\n\"If you want to go out, let's go together,\" he said, disinclined to be\nparted from his brother, who seemed positively breathing out freshness\nand energy. \"Come, we'll go to the counting house, if you have to go\nthere.\"\n\n\"Oh, heavens!\" shouted Levin, so loudly that Sergey Ivanovitch was quite\nfrightened.\n\n\"What, what is the matter?\"\n\n\"How's Agafea Mihalovna's hand?\" said Levin, slapping himself on the\nhead. \"I'd positively forgotten her even.\"\n\n\"It's much better.\"\n\n\"Well, anyway I'll run down to her. Before you've time to get your hat\non, I'll be back.\"\n\nAnd he ran downstairs, clattering with his heels like a spring-rattle.\n\n\n\nChapter 7\n\n\nStephan Arkadyevitch had gone to Petersburg to perform the most natural\nand essential official duty--so familiar to everyone in the government\nservice, though incomprehensible to outsiders--that duty, but for which\none could hardly be in government service, of reminding the ministry of\nhis existence--and having, for the due performance of this rite, taken\nall the available cash from home, was gaily and agreeably spending his\ndays at the races and in the summer villas. Meanwhile Dolly and the\nchildren had moved into the country, to cut down expenses as much as\npossible. She had gone to Ergushovo, the estate that had been her dowry,\nand the one where in spring the forest had been sold. It was nearly\nforty miles from Levin's Pokrovskoe. The big, old house at Ergushovo had\nbeen pulled down long ago, and the old prince had had the lodge done up\nand built on to. Twenty years before, when Dolly was a child, the lodge\nhad been roomy and comfortable, though, like all lodges, it stood\nsideways to the entrance avenue, and faced the south. But by now this\nlodge was old and dilapidated. When Stepan Arkadyevitch had gone down in\nthe spring to sell the forest, Dolly had begged him to look over the\nhouse and order what repairs might be needed. Stepan Arkadyevitch, like\nall unfaithful husbands indeed, was very solicitous for his wife's\ncomfort, and he had himself looked over the house, and given\ninstructions about everything that he considered necessary. What he\nconsidered necessary was to cover all the furniture with cretonne, to\nput up curtains, to weed the garden, to make a little bridge on the\npond, and to plant flowers. But he forgot many other essential matters,\nthe want of which greatly distressed Darya Alexandrovna later on.\n\nIn spite of Stepan Arkadyevitch's efforts to be an attentive father and\nhusband, he never could keep in his mind that he had a wife and\nchildren. He had bachelor tastes, and it was in accordance with them\nthat he shaped his life. On his return to Moscow he informed his wife\nwith pride that everything was ready, that the house would be a little\nparadise, and that he advised her most certainly to go. His wife's\nstaying away in the country was very agreeable to Stepan Arkadyevitch\nfrom every point of view: it did the children good, it decreased\nexpenses, and it left him more at liberty. Darya Alexandrovna regarded\nstaying in the country for the summer as essential for the children,\nespecially for the little girl, who had not succeeded in regaining her\nstrength after the scarlatina, and also as a means of escaping the petty\nhumiliations, the little bills owing to the wood-merchant, the\nfishmonger, the shoemaker, which made her miserable. Besides this, she\nwas pleased to go away to the country because she was dreaming of\ngetting her sister Kitty to stay with her there. Kitty was to be back\nfrom abroad in the middle of the summer, and bathing had been prescribed\nfor her. Kitty wrote that no prospect was so alluring as to spend the\nsummer with Dolly at Ergushovo, full of childish associations for both\nof them.\n\nThe first days of her existence in the country were very hard for Dolly.\nShe used to stay in the country as a child, and the impression she had\nretained of it was that the country was a refuge from all the\nunpleasantness of the town, that life there, though not luxurious--Dolly\ncould easily make up her mind to that--was cheap and comfortable; that\nthere was plenty of everything, everything was cheap, everything could\nbe got, and children were happy. But now coming to the country as the\nhead of a family, she perceived that it was all utterly unlike what she\nhad fancied.\n\nThe day after their arrival there was a heavy fall of rain, and in the\nnight the water came through in the corridor and in the nursery, so that\nthe beds had to be carried into the drawing room. There was no kitchen\nmaid to be found; of the nine cows, it appeared from the words of the\ncowherd-woman that some were about to calve, others had just calved,\nothers were old, and others again hard-uddered; there was not butter nor\nmilk enough even for the children. There were no eggs. They could get no\nfowls; old, purplish, stringy cocks were all they had for roasting and\nboiling. Impossible to get women to scrub the floors--all were\npotato-hoeing. Driving was out of the question, because one of the\nhorses was restive, and bolted in the shafts. There was no place where\nthey could bathe; the whole of the river-bank was trampled by the cattle\nand open to the road; even walks were impossible, for the cattle strayed\ninto the garden through a gap in the hedge, and there was one terrible\nbull, who bellowed, and therefore might be expected to gore somebody.\nThere were no proper cupboards for their clothes; what cupboards there\nwere either would not close at all, or burst open whenever anyone passed\nby them. There were no pots and pans; there was no copper in the\nwashhouse, nor even an ironing-board in the maids' room.\n\nFinding instead of peace and rest all these, from her point of view,\nfearful calamities, Darya Alexandrovna was at first in despair. She\nexerted herself to the utmost, felt the hopelessness of the position,\nand was every instant suppressing the tears that started into her eyes.\nThe bailiff, a retired quartermaster, whom Stepan Arkadyevitch had taken\na fancy to and had appointed bailiff on account of his handsome and\nrespectful appearance as a hall-porter, showed no sympathy for Darya\nAlexandrovna's woes. He said respectfully, \"nothing can be done, the\npeasants are such a wretched lot,\" and did nothing to help her.\n\nThe position seemed hopeless. But in the Oblonskys' household, as in all\nfamilies indeed, there was one inconspicuous but most valuable and\nuseful person, Marya Philimonovna. She soothed her mistress, assured her\nthat everything would _come round_ (it was her expression, and Matvey\nhad borrowed it from her), and without fuss or hurry proceeded to set to\nwork herself. She had immediately made friends with the bailiff's wife,\nand on the very first day she drank tea with her and the bailiff under\nthe acacias, and reviewed all the circumstances of the position. Very\nsoon Marya Philimonovna had established her club, so to say, under the\nacacias, and there it was, in this club, consisting of the bailiff's\nwife, the village elder, and the counting house clerk, that the\ndifficulties of existence were gradually smoothed away, and in a week's\ntime everything actually had come round. The roof was mended, a kitchen\nmaid was found--a crony of the village elder's--hens were bought, the\ncows began giving milk, the garden hedge was stopped up with stakes, the\ncarpenter made a mangle, hooks were put in the cupboards, and they\nceased to burst open spontaneously, and an ironing-board covered with\narmy cloth was placed across from the arm of a chair to the chest of\ndrawers, and there was a smell of flatirons in the maids' room.\n\n\"Just see, now, and you were quite in despair,\" said Marya Philimonovna,\npointing to the ironing-board. They even rigged up a bathing-shed of\nstraw hurdles. Lily began to bathe, and Darya Alexandrovna began to\nrealize, if only in part, her expectations, if not of a peaceful, at\nleast of a comfortable, life in the country. Peaceful with six children\nDarya Alexandrovna could not be. One would fall ill, another might\neasily become so, a third would be without something necessary, a fourth\nwould show symptoms of a bad disposition, and so on. Rare indeed were\nthe brief periods of peace. But these cares and anxieties were for Darya\nAlexandrovna the sole happiness possible. Had it not been for them, she\nwould have been left alone to brood over her husband who did not love\nher. And besides, hard though it was for the mother to bear the dread of\nillness, the illnesses themselves, and the grief of seeing signs of evil\npropensities in her children--the children themselves were even now\nrepaying her in small joys for her sufferings. Those joys were so small\nthat they passed unnoticed, like gold in sand, and at bad moments she\ncould see nothing but the pain, nothing but sand; but there were good\nmoments too when she saw nothing but the joy, nothing but gold.\n\nNow in the solitude of the country, she began to be more and more\nfrequently aware of those joys. Often, looking at them, she would make\nevery possible effort to persuade herself that she was mistaken, that\nshe as a mother was partial to her children. All the same, she could not\nhelp saying to herself that she had charming children, all six of them\nin different ways, but a set of children such as is not often to be met\nwith, and she was happy in them, and proud of them.\n\n\n\nChapter 8\n\n\nTowards the end of May, when everything had been more or less\nsatisfactorily arranged, she received her husband's answer to her\ncomplaints of the disorganized state of things in the country. He wrote\nbegging her forgiveness for not having thought of everything before, and\npromised to come down at the first chance. This chance did not present\nitself, and till the beginning of June Darya Alexandrovna stayed alone\nin the country.\n\nOn the Sunday in St. Peter's week Darya Alexandrovna drove to mass for\nall her children to take the sacrament. Darya Alexandrovna in her\nintimate, philosophical talks with her sister, her mother, and her\nfriends very often astonished them by the freedom of her views in regard\nto religion. She had a strange religion of transmigration of souls all\nher own, in which she had firm faith, troubling herself little about the\ndogmas of the Church. But in her family she was strict in carrying out\nall that was required by the Church--and not merely in order to set an\nexample, but with all her heart in it. The fact that the children had\nnot been at the sacrament for nearly a year worried her extremely, and\nwith the full approval and sympathy of Marya Philimonovna she decided\nthat this should take place now in the summer.\n\nFor several days before, Darya Alexandrovna was busily deliberating on\nhow to dress all the children. Frocks were made or altered and washed,\nseams and flounces were let out, buttons were sewn on, and ribbons got\nready. One dress, Tanya's, which the English governess had undertaken,\ncost Darya Alexandrovna much loss of temper. The English governess in\naltering it had made the seams in the wrong place, had taken up the\nsleeves too much, and altogether spoilt the dress. It was so narrow on\nTanya's shoulders that it was quite painful to look at her. But Marya\nPhilimonovna had the happy thought of putting in gussets, and adding a\nlittle shoulder-cape. The dress was set right, but there was nearly a\nquarrel with the English governess. On the morning, however, all was\nhappily arranged, and towards ten o'clock--the time at which they had\nasked the priest to wait for them for the mass--the children in their\nnew dresses, with beaming faces, stood on the step before the carriage\nwaiting for their mother.\n\nTo the carriage, instead of the restive Raven, they had harnessed,\nthanks to the representations of Marya Philimonovna, the bailiff's\nhorse, Brownie, and Darya Alexandrovna, delayed by anxiety over her own\nattire, came out and got in, dressed in a white muslin gown.\n\nDarya Alexandrovna had done her hair, and dressed with care and\nexcitement. In the old days she had dressed for her own sake to look\npretty and be admired. Later on, as she got older, dress became more and\nmore distasteful to her. She saw that she was losing her good looks. But\nnow she began to feel pleasure and interest in dress again. Now she did\nnot dress for her own sake, not for the sake of her own beauty, but\nsimply that as the mother of those exquisite creatures she might not\nspoil the general effect. And looking at herself for the last time in\nthe looking-glass she was satisfied with herself. She looked nice. Not\nnice as she would have wished to look nice in old days at a ball, but\nnice for the object which she now had in view.\n\nIn the church there was no one but the peasants, the servants and their\nwomen-folk. But Darya Alexandrovna saw, or fancied she saw, the\nsensation produced by her children and her. The children were not only\nbeautiful to look at in their smart little dresses, but they were\ncharming in the way they behaved. Aliosha, it is true, did not stand\nquite correctly; he kept turning round, trying to look at his little\njacket from behind; but all the same he was wonderfully sweet. Tanya\nbehaved like a grownup person, and looked after the little ones. And the\nsmallest, Lily, was bewitching in her naive astonishment at everything,\nand it was difficult not to smile when, after taking the sacrament, she\nsaid in English, \"Please, some more.\"\n\nOn the way home the children felt that something solemn had happened,\nand were very sedate.\n\nEverything went happily at home too; but at lunch Grisha began\nwhistling, and, what was worse, was disobedient to the English\ngoverness, and was forbidden to have any tart. Darya Alexandrovna would\nnot have let things go so far on such a day had she been present; but\nshe had to support the English governess's authority, and she upheld her\ndecision that Grisha should have no tart. This rather spoiled the\ngeneral good humor. Grisha cried, declaring that Nikolinka had whistled\ntoo, and he was not punished, and that he wasn't crying for the tart--he\ndidn't care--but at being unjustly treated. This was really too tragic,\nand Darya Alexandrovna made up her mind to persuade the English\ngoverness to forgive Grisha, and she went to speak to her. But on the\nway, as she passed the drawing room, she beheld a scene, filling her\nheart with such pleasure that the tears came into her eyes, and she\nforgave the delinquent herself.\n\nThe culprit was sitting at the window in the corner of the drawing room;\nbeside him was standing Tanya with a plate. On the pretext of wanting to\ngive some dinner to her dolls, she had asked the governess's permission\nto take her share of tart to the nursery, and had taken it instead to\nher brother. While still weeping over the injustice of his punishment,\nhe was eating the tart, and kept saying through his sobs, \"Eat yourself;\nlet's eat it together ... together.\"\n\nTanya had at first been under the influence of her pity for Grisha, then\nof a sense of her noble action, and tears were standing in her eyes too;\nbut she did not refuse, and ate her share.\n\nOn catching sight of their mother they were dismayed, but, looking into\nher face, they saw they were not doing wrong. They burst out laughing,\nand, with their mouths full of tart, they began wiping their smiling\nlips with their hands, and smearing their radiant faces all over with\ntears and jam.\n\n\"Mercy! Your new white frock! Tanya! Grisha!\" said their mother, trying\nto save the frock, but with tears in her eyes, smiling a blissful,\nrapturous smile.\n\nThe new frocks were taken off, and orders were given for the little\ngirls to have their blouses put on, and the boys their old jackets, and\nthe wagonette to be harnessed; with Brownie, to the bailiff's annoyance,\nagain in the shafts, to drive out for mushroom picking and bathing. A\nroar of delighted shrieks arose in the nursery, and never ceased till\nthey had set off for the bathing-place.\n\nThey gathered a whole basketful of mushrooms; even Lily found a birch\nmushroom. It had always happened before that Miss Hoole found them and\npointed them out to her; but this time she found a big one quite of\nherself, and there was a general scream of delight, \"Lily has found a\nmushroom!\"\n\nThen they reached the river, put the horses under the birch trees, and\nwent to the bathing-place. The coachman, Terenty, fastened the horses,\nwho kept whisking away the flies, to a tree, and, treading down the\ngrass, lay down in the shade of a birch and smoked his shag, while the\nnever-ceasing shrieks of delight of the children floated across to him\nfrom the bathing-place.\n\nThough it was hard work to look after all the children and restrain\ntheir wild pranks, though it was difficult too to keep in one's head and\nnot mix up all the stockings, little breeches, and shoes for the\ndifferent legs, and to undo and to do up again all the tapes and\nbuttons, Darya Alexandrovna, who had always liked bathing herself, and\nbelieved it to be very good for the children, enjoyed nothing so much as\nbathing with all the children. To go over all those fat little legs,\npulling on their stockings, to take in her arms and dip those little\nnaked bodies, and to hear their screams of delight and alarm, to see the\nbreathless faces with wide-open, scared, and happy eyes of all her\nsplashing cherubs, was a great pleasure to her.\n\nWhen half the children had been dressed, some peasant women in holiday\ndress, out picking herbs, came up to the bathing-shed and stopped shyly.\nMarya Philimonovna called one of them and handed her a sheet and a shirt\nthat had dropped into the water for her to dry them, and Darya\nAlexandrovna began to talk to the women. At first they laughed behind\ntheir hands and did not understand her questions, but soon they grew\nbolder and began to talk, winning Darya Alexandrovna's heart at once by\nthe genuine admiration of the children that they showed.\n\n\"My, what a beauty! as white as sugar,\" said one, admiring Tanitchka,\nand shaking her head; \"but thin...\"\n\n\"Yes, she has been ill.\"\n\n\"And so they've been bathing you too,\" said another to the baby.\n\n\"No; he's only three months old,\" answered Darya Alexandrovna with\npride.\n\n\"You don't say so!\"\n\n\"And have you any children?\"\n\n\"I've had four; I've two living--a boy and a girl. I weaned her last\ncarnival.\"\n\n\"How old is she?\"\n\n\"Why, two years old.\"\n\n\"Why did you nurse her so long?\"\n\n\"It's our custom; for three fasts...\"\n\nAnd the conversation became most interesting to Darya Alexandrovna. What\nsort of time did she have? What was the matter with the boy? Where was\nher husband? Did it often happen?\n\nDarya Alexandrovna felt disinclined to leave the peasant women, so\ninteresting to her was their conversation, so completely identical were\nall their interests. What pleased her most of all was that she saw\nclearly what all the women admired more than anything was her having so\nmany children, and such fine ones. The peasant women even made Darya\nAlexandrovna laugh, and offended the English governess, because she was\nthe cause of the laughter she did not understand. One of the younger\nwomen kept staring at the Englishwoman, who was dressing after all the\nrest, and when she put on her third petticoat she could not refrain from\nthe remark, \"My, she keeps putting on and putting on, and she'll never\nhave done!\" she said, and they all went off into roars.\n\n\n\nChapter 9\n\n\nOn the drive home, as Darya Alexandrovna, with all her children round\nher, their heads still wet from their bath, and a kerchief tied over her\nown head, was getting near the house, the coachman said, \"There's some\ngentleman coming: the master of Pokrovskoe, I do believe.\"\n\nDarya Alexandrovna peeped out in front, and was delighted when she\nrecognized in the gray hat and gray coat the familiar figure of Levin\nwalking to meet them. She was glad to see him at any time, but at this\nmoment she was specially glad he should see her in all her glory. No one\nwas better able to appreciate her grandeur than Levin.\n\nSeeing her, he found himself face to face with one of the pictures of\nhis daydream of family life.\n\n\"You're like a hen with your chickens, Darya Alexandrovna.\"\n\n\"Ah, how glad I am to see you!\" she said, holding out her hand to him.\n\n\"Glad to see me, but you didn't let me know. My brother's staying with\nme. I got a note from Stiva that you were here.\"\n\n\"From Stiva?\" Darya Alexandrovna asked with surprise.\n\n\"Yes; he writes that you are here, and that he thinks you might allow me\nto be of use to you,\" said Levin, and as he said it he became suddenly\nembarrassed, and, stopping abruptly, he walked on in silence by the\nwagonette, snapping off the buds of the lime trees and nibbling them. He\nwas embarrassed through a sense that Darya Alexandrovna would be annoyed\nby receiving from an outsider help that should by rights have come from\nher own husband. Darya Alexandrovna certainly did not like this little\nway of Stepan Arkadyevitch's of foisting his domestic duties on others.\nAnd she was at once aware that Levin was aware of this. It was just for\nthis fineness of perception, for this delicacy, that Darya Alexandrovna\nliked Levin.\n\n\"I know, of course,\" said Levin, \"that that simply means that you would\nlike to see me, and I'm exceedingly glad. Though I can fancy that, used\nto town housekeeping as you are, you must feel in the wilds here, and if\nthere's anything wanted, I'm altogether at your disposal.\"\n\n\"Oh, no!\" said Dolly. \"At first things were rather uncomfortable, but\nnow we've settled everything capitally--thanks to my old nurse,\" she\nsaid, indicating Marya Philimonovna, who, seeing that they were speaking\nof her, smiled brightly and cordially to Levin. She knew him, and knew\nthat he would be a good match for her young lady, and was very keen to\nsee the matter settled.\n\n\"Won't you get in, sir, we'll make room this side!\" she said to him.\n\n\"No, I'll walk. Children, who'd like to race the horses with me?\" The\nchildren knew Levin very little, and could not remember when they had\nseen him, but they experienced in regard to him none of that strange\nfeeling of shyness and hostility which children so often experience\ntowards hypocritical, grown-up people, and for which they are so often\nand miserably punished. Hypocrisy in anything whatever may deceive the\ncleverest and most penetrating man, but the least wide-awake of children\nrecognizes it, and is revolted by it, however ingeniously it may be\ndisguised. Whatever faults Levin had, there was not a trace of hypocrisy\nin him, and so the children showed him the same friendliness that they\nsaw in their mother's face. On his invitation, the two elder ones at\nonce jumped out to him and ran with him as simply as they would have\ndone with their nurse or Miss Hoole or their mother. Lily, too, began\nbegging to go to him, and her mother handed her to him; he sat her on\nhis shoulder and ran along with her.\n\n\"Don't be afraid, don't be afraid, Darya Alexandrovna!\" he said, smiling\ngood-humoredly to the mother; \"there's no chance of my hurting or\ndropping her.\"\n\nAnd, looking at his strong, agile, assiduously careful and needlessly\nwary movements, the mother felt her mind at rest, and smiled gaily and\napprovingly as she watched him.\n\nHere, in the country, with children, and with Darya Alexandrovna, with\nwhom he was in sympathy, Levin was in a mood not infrequent with him, of\nchildlike light-heartedness that she particularly liked in him. As he\nran with the children, he taught them gymnastic feats, set Miss Hoole\nlaughing with his queer English accent, and talked to Darya Alexandrovna\nof his pursuits in the country.\n\nAfter dinner, Darya Alexandrovna, sitting alone with him on the balcony,\nbegan to speak of Kitty.\n\n\"You know, Kitty's coming here, and is going to spend the summer with\nme.\"\n\n\"Really,\" he said, flushing, and at once, to change the conversation, he\nsaid: \"Then I'll send you two cows, shall I? If you insist on a bill you\nshall pay me five roubles a month; but it's really too bad of you.\"\n\n\"No, thank you. We can manage very well now.\"\n\n\"Oh, well, then, I'll have a look at your cows, and if you'll allow me,\nI'll give directions about their food. Everything depends on their\nfood.\"\n\nAnd Levin, to turn the conversation, explained to Darya Alexandrovna the\ntheory of cow-keeping, based on the principle that the cow is simply a\nmachine for the transformation of food into milk, and so on.\n\nHe talked of this, and passionately longed to hear more of Kitty, and,\nat the same time, was afraid of hearing it. He dreaded the breaking up\nof the inward peace he had gained with such effort.\n\n\"Yes, but still all this has to be looked after, and who is there to\nlook after it?\" Darya Alexandrovna responded, without interest.\n\nShe had by now got her household matters so satisfactorily arranged,\nthanks to Marya Philimonovna, that she was disinclined to make any\nchange in them; besides, she had no faith in Levin's knowledge of\nfarming. General principles, as to the cow being a machine for the\nproduction of milk, she looked on with suspicion. It seemed to her that\nsuch principles could only be a hindrance in farm management. It all\nseemed to her a far simpler matter: all that was needed, as Marya\nPhilimonovna had explained, was to give Brindle and Whitebreast more\nfood and drink, and not to let the cook carry all the kitchen slops to\nthe laundry maid's cow. That was clear. But general propositions as to\nfeeding on meal and on grass were doubtful and obscure. And, what was\nmost important, she wanted to talk about Kitty.\n\n\n\nChapter 10\n\n\n\"Kitty writes to me that there's nothing she longs for so much as quiet\nand solitude,\" Dolly said after the silence that had followed.\n\n\"And how is she--better?\" Levin asked in agitation.\n\n\"Thank God, she's quite well again. I never believed her lungs were\naffected.\"\n\n\"Oh, I'm very glad!\" said Levin, and Dolly fancied she saw something\ntouching, helpless, in his face as he said this and looked silently into\nher face.\n\n\"Let me ask you, Konstantin Dmitrievitch,\" said Darya Alexandrovna,\nsmiling her kindly and rather mocking smile, \"why is it you are angry\nwith Kitty?\"\n\n\"I? I'm not angry with her,\" said Levin.\n\n\"Yes, you are angry. Why was it you did not come to see us nor them when\nyou were in Moscow?\"\n\n\"Darya Alexandrovna,\" he said, blushing up to the roots of his hair, \"I\nwonder really that with your kind heart you don't feel this. How it is\nyou feel no pity for me, if nothing else, when you know...\"\n\n\"What do I know?\"\n\n\"You know I made an offer and that I was refused,\" said Levin, and all\nthe tenderness he had been feeling for Kitty a minute before was\nreplaced by a feeling of anger for the slight he had suffered.\n\n\"What makes you suppose I know?\"\n\n\"Because everybody knows it...\"\n\n\"That's just where you are mistaken; I did not know it, though I had\nguessed it was so.\"\n\n\"Well, now you know it.\"\n\n\"All I knew was that something had happened that made her dreadfully\nmiserable, and that she begged me never to speak of it. And if she would\nnot tell me, she would certainly not speak of it to anyone else. But\nwhat did pass between you? Tell me.\"\n\n\"I have told you.\"\n\n\"When was it?\"\n\n\"When I was at their house the last time.\"\n\n\"Do you know that,\" said Darya Alexandrovna, \"I am awfully, awfully\nsorry for her. You suffer only from pride....\"\n\n\"Perhaps so,\" said Levin, \"but...\"\n\nShe interrupted him.\n\n\"But she, poor girl ... I am awfully, awfully sorry for her. Now I see\nit all.\"\n\n\"Well, Darya Alexandrovna, you must excuse me,\" he said, getting up.\n\"Good-bye, Darya Alexandrovna, till we meet again.\"\n\n\"No, wait a minute,\" she said, clutching him by the sleeve. \"Wait a\nminute, sit down.\"\n\n\"Please, please, don't let us talk of this,\" he said, sitting down, and\nat the same time feeling rise up and stir within his heart a hope he had\nbelieved to be buried.\n\n\"If I did not like you,\" she said, and tears came into her eyes; \"if I\ndid not know you, as I do know you . . .\"\n\nThe feeling that had seemed dead revived more and more, rose up and took\npossession of Levin's heart.\n\n\"Yes, I understand it all now,\" said Darya Alexandrovna. \"You can't\nunderstand it; for you men, who are free and make your own choice, it's\nalways clear whom you love. But a girl's in a position of suspense, with\nall a woman's or maiden's modesty, a girl who sees you men from afar,\nwho takes everything on trust,--a girl may have, and often has, such a\nfeeling that she cannot tell what to say.\"\n\n\"Yes, if the heart does not speak...\"\n\n\"No, the heart does speak; but just consider: you men have views about a\ngirl, you come to the house, you make friends, you criticize, you wait\nto see if you have found what you love, and then, when you are sure you\nlove her, you make an offer....\"\n\n\"Well, that's not quite it.\"\n\n\"Anyway you make an offer, when your love is ripe or when the balance\nhas completely turned between the two you are choosing from. But a girl\nis not asked. She is expected to make her choice, and yet she cannot\nchoose, she can only answer 'yes' or 'no.'\"\n\n\"Yes, to choose between me and Vronsky,\" thought Levin, and the dead\nthing that had come to life within him died again, and only weighed on\nhis heart and set it aching.\n\n\"Darya Alexandrovna,\" he said, \"that's how one chooses a new dress or\nsome purchase or other, not love. The choice has been made, and so much\nthe better.... And there can be no repeating it.\"\n\n\"Ah, pride, pride!\" said Darya Alexandrovna, as though despising him for\nthe baseness of this feeling in comparison with that other feeling which\nonly women know. \"At the time when you made Kitty an offer she was just\nin a position in which she could not answer. She was in doubt. Doubt\nbetween you and Vronsky. Him she was seeing every day, and you she had\nnot seen for a long while. Supposing she had been older ... I, for\ninstance, in her place could have felt no doubt. I always disliked him,\nand so it has turned out.\"\n\nLevin recalled Kitty's answer. She had said: \"_No, that cannot be_...\"\n\n\"Darya Alexandrovna,\" he said dryly, \"I appreciate your confidence in\nme; I believe you are making a mistake. But whether I am right or wrong,\nthat pride you so despise makes any thought of Katerina Alexandrovna out\nof the question for me,--you understand, utterly out of the question.\"\n\n\"I will only say one thing more: you know that I am speaking of my\nsister, whom I love as I love my own children. I don't say she cared for\nyou, all I meant to say is that her refusal at that moment proves\nnothing.\"\n\n\"I don't know!\" said Levin, jumping up. \"If you only knew how you are\nhurting me. It's just as if a child of yours were dead, and they were to\nsay to you: He would have been like this and like that, and he might\nhave lived, and how happy you would have been in him. But he's dead,\ndead, dead!...\"\n\n\"How absurd you are!\" said Darya Alexandrovna, looking with mournful\ntenderness at Levin's excitement. \"Yes, I see it all more and more\nclearly,\" she went on musingly. \"So you won't come to see us, then, when\nKitty's here?\"\n\n\"No, I shan't come. Of course I won't avoid meeting Katerina\nAlexandrovna, but as far as I can, I will try to save her the annoyance\nof my presence.\"\n\n\"You are very, very absurd,\" repeated Darya Alexandrovna, looking with\ntenderness into his face. \"Very well then, let it be as though we had\nnot spoken of this. What have you come for, Tanya?\" she said in French\nto the little girl who had come in.\n\n\"Where's my spade, mamma?\"\n\n\"I speak French, and you must too.\"\n\nThe little girl tried to say it in French, but could not remember the\nFrench for spade; the mother prompted her, and then told her in French\nwhere to look for the spade. And this made a disagreeable impression on\nLevin.\n\nEverything in Darya Alexandrovna's house and children struck him now as\nby no means so charming as a little while before. \"And what does she\ntalk French with the children for?\" he thought; \"how unnatural and false\nit is! And the children feel it so: Learning French and unlearning\nsincerity,\" he thought to himself, unaware that Darya Alexandrovna had\nthought all that over twenty times already, and yet, even at the cost of\nsome loss of sincerity, believed it necessary to teach her children\nFrench in that way.\n\n\"But why are you going? Do stay a little.\"\n\nLevin stayed to tea; but his good-humor had vanished, and he felt ill at\nease.\n\nAfter tea he went out into the hall to order his horses to be put in,\nand, when he came back, he found Darya Alexandrovna greatly disturbed,\nwith a troubled face, and tears in her eyes. While Levin had been\noutside, an incident had occurred which had utterly shattered all the\nhappiness she had been feeling that day, and her pride in her children.\nGrisha and Tanya had been fighting over a ball. Darya Alexandrovna,\nhearing a scream in the nursery, ran in and saw a terrible sight. Tanya\nwas pulling Grisha's hair, while he, with a face hideous with rage, was\nbeating her with his fists wherever he could get at her. Something\nsnapped in Darya Alexandrovna's heart when she saw this. It was as if\ndarkness had swooped down upon her life; she felt that these children of\nhers, that she was so proud of, were not merely most ordinary, but\npositively bad, ill-bred children, with coarse, brutal\npropensities--wicked children.\n\nShe could not talk or think of anything else, and she could not speak to\nLevin of her misery.\n\nLevin saw she was unhappy and tried to comfort her, saying that it\nshowed nothing bad, that all children fight; but, even as he said it, he\nwas thinking in his heart: \"No, I won't be artificial and talk French\nwith my children; but my children won't be like that. All one has to do\nis not spoil children, not to distort their nature, and they'll be\ndelightful. No, my children won't be like that.\"\n\nHe said good-bye and drove away, and she did not try to keep him.\n\n\n\nChapter 11\n\n\nIn the middle of July the elder of the village on Levin's sister's\nestate, about fifteen miles from Pokrovskoe, came to Levin to report on\nhow things were going there and on the hay. The chief source of income\non his sister's estate was from the riverside meadows. In former years\nthe hay had been bought by the peasants for twenty roubles the three\nacres. When Levin took over the management of the estate, he thought on\nexamining the grasslands that they were worth more, and he fixed the\nprice at twenty-five roubles the three acres. The peasants would not\ngive that price, and, as Levin suspected, kept off other purchasers.\nThen Levin had driven over himself, and arranged to have the grass cut,\npartly by hired labor, partly at a payment of a certain proportion of\nthe crop. His own peasants put every hindrance they could in the way of\nthis new arrangement, but it was carried out, and the first year the\nmeadows had yielded a profit almost double. The previous year--which was\nthe third year--the peasants had maintained the same opposition to the\narrangement, and the hay had been cut on the same system. This year the\npeasants were doing all the mowing for a third of the hay crop, and the\nvillage elder had come now to announce that the hay had been cut, and\nthat, fearing rain, they had invited the counting-house clerk over, had\ndivided the crop in his presence, and had raked together eleven stacks\nas the owner's share. From the vague answers to his question how much\nhay had been cut on the principal meadow, from the hurry of the village\nelder who had made the division, not asking leave, from the whole tone\nof the peasant, Levin perceived that there was something wrong in the\ndivision of the hay, and made up his mind to drive over himself to look\ninto the matter.\n\nArriving for dinner at the village, and leaving his horse at the cottage\nof an old friend of his, the husband of his brother's wet-nurse, Levin\nwent to see the old man in his bee-house, wanting to find out from him\nthe truth about the hay. Parmenitch, a talkative, comely old man, gave\nLevin a very warm welcome, showed him all he was doing, told him\neverything about his bees and the swarms of that year; but gave vague\nand unwilling answers to Levin's inquiries about the mowing. This\nconfirmed Levin still more in his suspicions. He went to the hay fields\nand examined the stacks. The haystacks could not possibly contain fifty\nwagon-loads each, and to convict the peasants Levin ordered the wagons\nthat had carried the hay to be brought up directly, to lift one stack,\nand carry it into the barn. There turned out to be only thirty-two loads\nin the stack. In spite of the village elder's assertions about the\ncompressibility of hay, and its having settled down in the stacks, and\nhis swearing that everything had been done in the fear of God, Levin\nstuck to his point that the hay had been divided without his orders, and\nthat, therefore, he would not accept that hay as fifty loads to a stack.\nAfter a prolonged dispute the matter was decided by the peasants taking\nthese eleven stacks, reckoning them as fifty loads each. The arguments\nand the division of the haycocks lasted the whole afternoon. When the\nlast of the hay had been divided, Levin, intrusting the superintendence\nof the rest to the counting-house clerk, sat down on a haycock marked\noff by a stake of willow, and looked admiringly at the meadow swarming\nwith peasants.\n\nIn front of him, in the bend of the river beyond the marsh, moved a\nbright-colored line of peasant women, and the scattered hay was being\nrapidly formed into gray winding rows over the pale green stubble. After\nthe women came the men with pitchforks, and from the gray rows there\nwere growing up broad, high, soft haycocks. To the left, carts were\nrumbling over the meadow that had been already cleared, and one after\nanother the haycocks vanished, flung up in huge forkfuls, and in their\nplace there were rising heavy cartloads of fragrant hay hanging over the\nhorses' hind-quarters.\n\n\"What weather for haying! What hay it'll be!\" said an old man, squatting\ndown beside Levin. \"It's tea, not hay! It's like scattering grain to the\nducks, the way they pick it up!\" he added, pointing to the growing\nhaycocks. \"Since dinnertime they've carried a good half of it.\"\n\n\"The last load, eh?\" he shouted to a young peasant, who drove by,\nstanding in the front of an empty cart, shaking the cord reins.\n\n\"The last, dad!\" the lad shouted back, pulling in the horse, and,\nsmiling, he looked round at a bright, rosy-checked peasant girl who sat\nin the cart smiling too, and drove on.\n\n\"Who's that? Your son?\" asked Levin.\n\n\"My baby,\" said the old man with a tender smile.\n\n\"What a fine fellow!\"\n\n\"The lad's all right.\"\n\n\"Married already?\"\n\n\"Yes, it's two years last St. Philip's day.\"\n\n\"Any children?\"\n\n\"Children indeed! Why, for over a year he was innocent as a babe\nhimself, and bashful too,\" answered the old man. \"Well, the hay! It's as\nfragrant as tea!\" he repeated, wishing to change the subject.\n\nLevin looked more attentively at Ivan Parmenov and his wife. They were\nloading a haycock onto the cart not far from him. Ivan Parmenov was\nstanding on the cart, taking, laying in place, and stamping down the\nhuge bundles of hay, which his pretty young wife deftly handed up to\nhim, at first in armfuls, and then on the pitchfork. The young wife\nworked easily, merrily, and dexterously. The close-packed hay did not\nonce break away off her fork. First she gathered it together, stuck the\nfork into it, then with a rapid, supple movement leaned the whole weight\nof her body on it, and at once with a bend of her back under the red\nbelt she drew herself up, and arching her full bosom under the white\nsmock, with a smart turn swung the fork in her arms, and flung the\nbundle of hay high onto the cart. Ivan, obviously doing his best to save\nher every minute of unnecessary labor, made haste, opening his arms to\nclutch the bundle and lay it in the cart. As she raked together what was\nleft of the hay, the young wife shook off the bits of hay that had\nfallen on her neck, and straightening the red kerchief that had dropped\nforward over her white brow, not browned like her face by the sun, she\ncrept under the cart to tie up the load. Ivan directed her how to fasten\nthe cord to the cross-piece, and at something she said he laughed aloud.\nIn the expressions of both faces was to be seen vigorous, young, freshly\nawakened love.\n\n\n\nChapter 12\n\n\nThe load was tied on. Ivan jumped down and took the quiet, sleek horse\nby the bridle. The young wife flung the rake up on the load, and with a\nbold step, swinging her arms, she went to join the women, who were\nforming a ring for the haymakers' dance. Ivan drove off to the road and\nfell into line with the other loaded carts. The peasant women, with\ntheir rakes on their shoulders, gay with bright flowers, and chattering\nwith ringing, merry voices, walked behind the hay cart. One wild\nuntrained female voice broke into a song, and sang it alone through a\nverse, and then the same verse was taken up and repeated by half a\nhundred strong healthy voices, of all sorts, coarse and fine, singing in\nunison.\n\nThe women, all singing, began to come close to Levin, and he felt as\nthough a storm were swooping down upon him with a thunder of merriment.\nThe storm swooped down, enveloped him and the haycock on which he was\nlying, and the other haycocks, and the wagon-loads, and the whole meadow\nand distant fields all seemed to be shaking and singing to the measures\nof this wild merry song with its shouts and whistles and clapping. Levin\nfelt envious of this health and mirthfulness; he longed to take part in\nthe expression of this joy of life. But he could do nothing, and had to\nlie and look on and listen. When the peasants, with their singing, had\nvanished out of sight and hearing, a weary feeling of despondency at his\nown isolation, his physical inactivity, his alienation from this world,\ncame over Levin.\n\nSome of the very peasants who had been most active in wrangling with him\nover the hay, some whom he had treated with contumely, and who had tried\nto cheat him, those very peasants had greeted him goodhumoredly, and\nevidently had not, were incapable of having any feeling of rancor\nagainst him, any regret, any recollection even of having tried to\ndeceive him. All that was drowned in a sea of merry common labor. God\ngave the day, God gave the strength. And the day and the strength were\nconsecrated to labor, and that labor was its own reward. For whom the\nlabor? What would be its fruits? These were idle considerations--beside\nthe point.\n\nOften Levin had admired this life, often he had a sense of envy of the\nmen who led this life; but today for the first time, especially under\nthe influence of what he had seen in the attitude of Ivan Parmenov to\nhis young wife, the idea presented itself definitely to his mind that it\nwas in his power to exchange the dreary, artificial, idle, and\nindividualistic life he was leading for this laborious, pure, and\nsocially delightful life.\n\nThe old man who had been sitting beside him had long ago gone home; the\npeople had all separated. Those who lived near had gone home, while\nthose who came from far were gathered into a group for supper, and to\nspend the night in the meadow. Levin, unobserved by the peasants, still\nlay on the haycock, and still looked on and listened and mused. The\npeasants who remained for the night in the meadow scarcely slept all the\nshort summer night. At first there was the sound of merry talk and\nlaughing all together over the supper, then singing again and laughter.\n\nAll the long day of toil had left no trace in them but lightness of\nheart. Before the early dawn all was hushed. Nothing was to be heard but\nthe night sounds of the frogs that never ceased in the marsh, and the\nhorses snorting in the mist that rose over the meadow before the\nmorning. Rousing himself, Levin got up from the haycock, and looking at\nthe stars, he saw that the night was over.\n\n\"Well, what am I going to do? How am I to set about it?\" he said to\nhimself, trying to express to himself all the thoughts and feelings he\nhad passed through in that brief night. All the thoughts and feelings he\nhad passed through fell into three separate trains of thought. One was\nthe renunciation of his old life, of his utterly useless education. This\nrenunciation gave him satisfaction, and was easy and simple. Another\nseries of thoughts and mental images related to the life he longed to\nlive now. The simplicity, the purity, the sanity of this life he felt\nclearly, and he was convinced he would find in it the content, the\npeace, and the dignity, of the lack of which he was so miserably\nconscious. But a third series of ideas turned upon the question how to\neffect this transition from the old life to the new. And there nothing\ntook clear shape for him. \"Have a wife? Have work and the necessity of\nwork? Leave Pokrovskoe? Buy land? Become a member of a peasant\ncommunity? Marry a peasant girl? How am I to set about it?\" he asked\nhimself again, and could not find an answer. \"I haven't slept all night,\nthough, and I can't think it out clearly,\" he said to himself. \"I'll\nwork it out later. One thing's certain, this night has decided my fate.\nAll my old dreams of home life were absurd, not the real thing,\" he told\nhimself. \"It's all ever so much simpler and better...\"\n\n\"How beautiful!\" he thought, looking at the strange, as it were,\nmother-of-pearl shell of white fleecy cloudlets resting right over his\nhead in the middle of the sky. \"How exquisite it all is in this\nexquisite night! And when was there time for that cloud-shell to form?\nJust now I looked at the sky, and there was nothing in it--only two\nwhite streaks. Yes, and so imperceptibly too my views of life changed!\"\n\nHe went out of the meadow and walked along the highroad towards the\nvillage. A slight wind arose, and the sky looked gray and sullen. The\ngloomy moment had come that usually precedes the dawn, the full triumph\nof light over darkness.\n\nShrinking from the cold, Levin walked rapidly, looking at the ground.\n\"What's that? Someone coming,\" he thought, catching the tinkle of bells,\nand lifting his head. Forty paces from him a carriage with four horses\nharnessed abreast was driving towards him along the grassy road on which\nhe was walking. The shaft-horses were tilted against the shafts by the\nruts, but the dexterous driver sitting on the box held the shaft over\nthe ruts, so that the wheels ran on the smooth part of the road.\n\nThis was all Levin noticed, and without wondering who it could be, he\ngazed absently at the coach.\n\nIn the coach was an old lady dozing in one corner, and at the window,\nevidently only just awake, sat a young girl holding in both hands the\nribbons of a white cap. With a face full of light and thought, full of a\nsubtle, complex inner life, that was remote from Levin, she was gazing\nbeyond him at the glow of the sunrise.\n\nAt the very instant when this apparition was vanishing, the truthful\neyes glanced at him. She recognized him, and her face lighted up with\nwondering delight.\n\nHe could not be mistaken. There were no other eyes like those in the\nworld. There was only one creature in the world that could concentrate\nfor him all the brightness and meaning of life. It was she. It was\nKitty. He understood that she was driving to Ergushovo from the railway\nstation. And everything that had been stirring Levin during that\nsleepless night, all the resolutions he had made, all vanished at once.\nHe recalled with horror his dreams of marrying a peasant girl. There\nonly, in the carriage that had crossed over to the other side of the\nroad, and was rapidly disappearing, there only could he find the\nsolution of the riddle of his life, which had weighed so agonizingly\nupon him of late.\n\nShe did not look out again. The sound of the carriage-springs was no\nlonger audible, the bells could scarcely be heard. The barking of dogs\nshowed the carriage had reached the village, and all that was left was\nthe empty fields all round, the village in front, and he himself\nisolated and apart from it all, wandering lonely along the deserted\nhighroad.\n\nHe glanced at the sky, expecting to find there the cloud shell he had\nbeen admiring and taking as the symbol of the ideas and feelings of that\nnight. There was nothing in the sky in the least like a shell. There, in\nthe remote heights above, a mysterious change had been accomplished.\nThere was no trace of shell, and there was stretched over fully half the\nsky an even cover of tiny and ever tinier cloudlets. The sky had grown\nblue and bright; and with the same softness, but with the same\nremoteness, it met his questioning gaze.\n\n\"No,\" he said to himself, \"however good that life of simplicity and toil\nmay be, I cannot go back to it. I love _her_.\"\n\n\n\nChapter 13\n\n\nNone but those who were most intimate with Alexey Alexandrovitch knew\nthat, while on the surface the coldest and most reasonable of men, he\nhad one weakness quite opposed to the general trend of his character.\nAlexey Alexandrovitch could not hear or see a child or woman crying\nwithout being moved. The sight of tears threw him into a state of\nnervous agitation, and he utterly lost all power of reflection. The\nchief secretary of his department and his private secretary were aware\nof this, and used to warn women who came with petitions on no account to\ngive way to tears, if they did not want to ruin their chances. \"He will\nget angry, and will not listen to you,\" they used to say. And as a fact,\nin such cases the emotional disturbance set up in Alexey Alexandrovitch\nby the sight of tears found expression in hasty anger. \"I can do\nnothing. Kindly leave the room!\" he would commonly cry in such cases.\n\nWhen returning from the races Anna had informed him of her relations\nwith Vronsky, and immediately afterwards had burst into tears, hiding\nher face in her hands, Alexey Alexandrovitch, for all the fury aroused\nin him against her, was aware at the same time of a rush of that\nemotional disturbance always produced in him by tears. Conscious of it,\nand conscious that any expression of his feelings at that minute would\nbe out of keeping with the position, he tried to suppress every\nmanifestation of life in himself, and so neither stirred nor looked at\nher. This was what had caused that strange expression of deathlike\nrigidity in his face which had so impressed Anna.\n\nWhen they reached the house he helped her to get out of the carriage,\nand making an effort to master himself, took leave of her with his usual\nurbanity, and uttered that phrase that bound him to nothing; he said\nthat tomorrow he would let her know his decision.\n\nHis wife's words, confirming his worst suspicions, had sent a cruel pang\nto the heart of Alexey Alexandrovitch. That pang was intensified by the\nstrange feeling of physical pity for her set up by her tears. But when\nhe was all alone in the carriage Alexey Alexandrovitch, to his surprise\nand delight, felt complete relief both from this pity and from the\ndoubts and agonies of jealousy.\n\nHe experienced the sensations of a man who has had a tooth out after\nsuffering long from toothache. After a fearful agony and a sense of\nsomething huge, bigger than the head itself, being torn out of his jaw,\nthe sufferer, hardly able to believe in his own good luck, feels all at\nonce that what has so long poisoned his existence and enchained his\nattention, exists no longer, and that he can live and think again, and\ntake interest in other things besides his tooth. This feeling Alexey\nAlexandrovitch was experiencing. The agony had been strange and\nterrible, but now it was over; he felt that he could live again and\nthink of something other than his wife.\n\n\"No honor, no heart, no religion; a corrupt woman. I always knew it and\nalways saw it, though I tried to deceive myself to spare her,\" he said\nto himself. And it actually seemed to him that he always had seen it: he\nrecalled incidents of their past life, in which he had never seen\nanything wrong before--now these incidents proved clearly that she had\nalways been a corrupt woman. \"I made a mistake in linking my life to\nhers; but there was nothing wrong in my mistake, and so I cannot be\nunhappy. It's not I that am to blame,\" he told himself, \"but she. But I\nhave nothing to do with her. She does not exist for me...\"\n\nEverything relating to her and her son, towards whom his sentiments were\nas much changed as towards her, ceased to interest him. The only thing\nthat interested him now was the question of in what way he could best,\nwith most propriety and comfort for himself, and thus with most justice,\nextricate himself from the mud with which she had spattered him in her\nfall, and then proceed along his path of active, honorable, and useful\nexistence.\n\n\"I cannot be made unhappy by the fact that a contemptible woman has\ncommitted a crime. I have only to find the best way out of the difficult\nposition in which she has placed me. And I shall find it,\" he said to\nhimself, frowning more and more. \"I'm not the first nor the last.\" And\nto say nothing of historical instances dating from the \"Fair Helen\" of\nMenelaus, recently revived in the memory of all, a whole list of\ncontemporary examples of husbands with unfaithful wives in the highest\nsociety rose before Alexey Alexandrovitch's imagination. \"Daryalov,\nPoltavsky, Prince Karibanov, Count Paskudin, Dram.... Yes, even Dram,\nsuch an honest, capable fellow ... Semyonov, Tchagin, Sigonin,\" Alexey\nAlexandrovitch remembered. \"Admitting that a certain quite irrational\n_ridicule_ falls to the lot of these men, yet I never saw anything but a\nmisfortune in it, and always felt sympathy for it,\" Alexey\nAlexandrovitch said to himself, though indeed this was not the fact, and\nhe had never felt sympathy for misfortunes of that kind, but the more\nfrequently he had heard of instances of unfaithful wives betraying their\nhusbands, the more highly he had thought of himself. \"It is a misfortune\nwhich may befall anyone. And this misfortune has befallen me. The only\nthing to be done is to make the best of the position.\"\n\nAnd he began passing in review the methods of proceeding of men who had\nbeen in the same position that he was in.\n\n\"Daryalov fought a duel....\"\n\nThe duel had particularly fascinated the thoughts of Alexey\nAlexandrovitch in his youth, just because he was physically a coward,\nand was himself well aware of the fact. Alexey Alexandrovitch could not\nwithout horror contemplate the idea of a pistol aimed at himself, and\nhad never made use of any weapon in his life. This horror had in his\nyouth set him pondering on dueling, and picturing himself in a position\nin which he would have to expose his life to danger. Having attained\nsuccess and an established position in the world, he had long ago\nforgotten this feeling; but the habitual bent of feeling reasserted\nitself, and dread of his own cowardice proved even now so strong that\nAlexey Alexandrovitch spent a long while thinking over the question of\ndueling in all its aspects, and hugging the idea of a duel, though he\nwas fully aware beforehand that he would never under any circumstances\nfight one.\n\n\"There's no doubt our society is still so barbarous (it's not the same\nin England) that very many\"--and among these were those whose opinion\nAlexey Alexandrovitch particularly valued--\"look favorably on the duel;\nbut what result is attained by it? Suppose I call him out,\" Alexey\nAlexandrovitch went on to himself, and vividly picturing the night he\nwould spend after the challenge, and the pistol aimed at him, he\nshuddered, and knew that he never would do it--\"suppose I call him out.\nSuppose I am taught,\" he went on musing, \"to shoot; I press the\ntrigger,\" he said to himself, closing his eyes, \"and it turns out I have\nkilled him,\" Alexey Alexandrovitch said to himself, and he shook his\nhead as though to dispel such silly ideas. \"What sense is there in\nmurdering a man in order to define one's relation to a guilty wife and\nson? I should still just as much have to decide what I ought to do with\nher. But what is more probable and what would doubtless occur--I should\nbe killed or wounded. I, the innocent person, should be the\nvictim--killed or wounded. It's even more senseless. But apart from\nthat, a challenge to fight would be an act hardly honest on my side.\nDon't I know perfectly well that my friends would never allow me to\nfight a duel--would never allow the life of a statesman, needed by\nRussia, to be exposed to danger? Knowing perfectly well beforehand that\nthe matter would never come to real danger, it would amount to my simply\ntrying to gain a certain sham reputation by such a challenge. That would\nbe dishonest, that would be false, that would be deceiving myself and\nothers. A duel is quite irrational, and no one expects it of me. My aim\nis simply to safeguard my reputation, which is essential for the\nuninterrupted pursuit of my public duties.\" Official duties, which had\nalways been of great consequence in Alexey Alexandrovitch's eyes, seemed\nof special importance to his mind at this moment. Considering and\nrejecting the duel, Alexey Alexandrovitch turned to divorce--another\nsolution selected by several of the husbands he remembered. Passing in\nmental review all the instances he knew of divorces (there were plenty\nof them in the very highest society with which he was very familiar),\nAlexey Alexandrovitch could not find a single example in which the\nobject of divorce was that which he had in view. In all these instances\nthe husband had practically ceded or sold his unfaithful wife, and the\nvery party which, being in fault, had not the right to contract a fresh\nmarriage, had formed counterfeit, pseudo-matrimonial ties with a\nself-styled husband. In his own case, Alexey Alexandrovitch saw that a\nlegal divorce, that is to say, one in which only the guilty wife would\nbe repudiated, was impossible of attainment. He saw that the complex\nconditions of the life they led made the coarse proofs of his wife's\nguilt, required by the law, out of the question; he saw that a certain\nrefinement in that life would not admit of such proofs being brought\nforward, even if he had them, and that to bring forward such proofs\nwould damage him in the public estimation more than it would her.\n\nAn attempt at divorce could lead to nothing but a public scandal, which\nwould be a perfect godsend to his enemies for calumny and attacks on his\nhigh position in society. His chief object, to define the position with\nthe least amount of disturbance possible, would not be attained by\ndivorce either. Moreover, in the event of divorce, or even of an attempt\nto obtain a divorce, it was obvious that the wife broke off all\nrelations with the husband and threw in her lot with the lover. And in\nspite of the complete, as he supposed, contempt and indifference he now\nfelt for his wife, at the bottom of his heart Alexey Alexandrovitch\nstill had one feeling left in regard to her--a disinclination to see her\nfree to throw in her lot with Vronsky, so that her crime would be to her\nadvantage. The mere notion of this so exasperated Alexey Alexandrovitch,\nthat directly it rose to his mind he groaned with inward agony, and got\nup and changed his place in the carriage, and for a long while after, he\nsat with scowling brows, wrapping his numbed and bony legs in the fleecy\nrug.\n\n\"Apart from formal divorce, One might still do like Karibanov, Paskudin,\nand that good fellow Dram--that is, separate from one's wife,\" he went\non thinking, when he had regained his composure. But this step too\npresented the same drawback of public scandal as a divorce, and what was\nmore, a separation, quite as much as a regular divorce, flung his wife\ninto the arms of Vronsky. \"No, it's out of the question, out of the\nquestion!\" he said again, twisting his rug about him again. \"I cannot be\nunhappy, but neither she nor he ought to be happy.\"\n\nThe feeling of jealousy, which had tortured him during the period of\nuncertainty, had passed away at the instant when the tooth had been with\nagony extracted by his wife's words. But that feeling had been replaced\nby another, the desire, not merely that she should not be triumphant,\nbut that she should get due punishment for her crime. He did not\nacknowledge this feeling, but at the bottom of his heart he longed for\nher to suffer for having destroyed his peace of mind--his honor. And\ngoing once again over the conditions inseparable from a duel, a divorce,\na separation, and once again rejecting them, Alexey Alexandrovitch felt\nconvinced that there was only one solution,--to keep her with him,\nconcealing what had happened from the world, and using every measure in\nhis power to break off the intrigue, and still more--though this he did\nnot admit to himself--to punish her. \"I must inform her of my\nconclusion, that thinking over the terrible position in which she has\nplaced her family, all other solutions will be worse for both sides than\nan external _status quo_, and that such I agree to retain, on the strict\ncondition of obedience on her part to my wishes, that is to say,\ncessation of all intercourse with her lover.\" When this decision had\nbeen finally adopted, another weighty consideration occurred to Alexey\nAlexandrovitch in support of it. \"By such a course only shall I be\nacting in accordance with the dictates of religion,\" he told himself.\n\"In adopting this course, I am not casting off a guilty wife, but giving\nher a chance of amendment; and, indeed, difficult as the task will be to\nme, I shall devote part of my energies to her reformation and\nsalvation.\"\n\nThough Alexey Alexandrovitch was perfectly aware that he could not exert\nany moral influence over his wife, that such an attempt at reformation\ncould lead to nothing but falsity; though in passing through these\ndifficult moments he had not once thought of seeking guidance in\nreligion, yet now, when his conclusion corresponded, as it seemed to\nhim, with the requirements of religion, this religious sanction to his\ndecision gave him complete satisfaction, and to some extent restored his\npeace of mind. He was pleased to think that, even in such an important\ncrisis in life, no one would be able to say that he had not acted in\naccordance with the principles of that religion whose banner he had\nalways held aloft amid the general coolness and indifference. As he\npondered over subsequent developments, Alexey Alexandrovitch did not\nsee, indeed, why his relations with his wife should not remain\npractically the same as before. No doubt, she could never regain his\nesteem, but there was not, and there could not be, any sort of reason\nthat his existence should be troubled, and that he should suffer because\nshe was a bad and faithless wife. \"Yes, time will pass; time, which\narranges all things, and the old relations will be reestablished,\"\nAlexey Alexandrovitch told himself; \"so far reestablished, that is, that\nI shall not be sensible of a break in the continuity of my life. She is\nbound to be unhappy, but I am not to blame, and so I cannot be unhappy.\"\n\n\n\nChapter 14\n\n\nAs he neared Petersburg, Alexey Alexandrovitch not only adhered entirely\nto his decision, but was even composing in his head the letter he would\nwrite to his wife. Going into the porter's room, Alexey Alexandrovitch\nglanced at the letters and papers brought from his office, and directed\nthat they should be brought to him in his study.\n\n\"The horses can be taken out and I will see no one,\" he said in answer\nto the porter, with a certain pleasure, indicative of his agreeable\nframe of mind, emphasizing the words, \"see no one.\"\n\nIn his study Alexey Alexandrovitch walked up and down twice, and stopped\nat an immense writing-table, on which six candles had already been\nlighted by the valet who had preceded him. He cracked his knuckles and\nsat down, sorting out his writing appurtenances. Putting his elbows on\nthe table, he bent his head on one side, thought a minute, and began to\nwrite, without pausing for a second. He wrote without using any form of\naddress to her, and wrote in French, making use of the plural \"_vous_,\"\nwhich has not the same note of coldness as the corresponding Russian\nform.\n\n    \"At our last conversation, I notified you of my intention to\n    communicate to you my decision in regard to the subject of that\n    conversation. Having carefully considered everything, I am\n    writing now with the object of fulfilling that promise. My\n    decision is as follows. Whatever your conduct may have been, I\n    do not consider myself justified in breaking the ties in which\n    we are bound by a Higher Power. The family cannot be broken up\n    by a whim, a caprice, or even by the sin of one of the partners\n    in the marriage, and our life must go on as it has done in the\n    past. This is essential for me, for you, and for our son. I am\n    fully persuaded that you have repented and do repent of what has\n    called forth the present letter, and that you will cooperate\n    with me in eradicating the cause of our estrangement, and\n    forgetting the past. In the contrary event, you can conjecture\n    what awaits you and your son. All this I hope to discuss more in\n    detail in a personal interview. As the season is drawing to a\n    close, I would beg you to return to Petersburg as quickly as\n    possible, not later than Tuesday. All necessary preparations\n    shall be made for your arrival here. I beg you to note that I\n    attach particular significance to compliance with this request.\n\n                                                          A. Karenin\n\n    \"P.S.--I enclose the money which may be needed for your\n    expenses.\"\n\nHe read the letter through and felt pleased with it, and especially that\nhe had remembered to enclose money: there was not a harsh word, not a\nreproach in it, nor was there undue indulgence. Most of all, it was a\ngolden bridge for return. Folding the letter and smoothing it with a\nmassive ivory knife, and putting it in an envelope with the money, he\nrang the bell with the gratification it always afforded him to use the\nwell arranged appointments of his writing-table.\n\n\"Give this to the courier to be delivered to Anna Arkadyevna tomorrow at\nthe summer villa,\" he said, getting up.\n\n\"Certainly, your excellency; tea to be served in the study?\"\n\nAlexey Alexandrovitch ordered tea to be brought to the study, and\nplaying with the massive paper-knife, he moved to his easy chair, near\nwhich there had been placed ready for him a lamp and the French work on\nEgyptian hieroglyphics that he had begun. Over the easy chair there hung\nin a gold frame an oval portrait of Anna, a fine painting by a\ncelebrated artist. Alexey Alexandrovitch glanced at it. The unfathomable\neyes gazed ironically and insolently at him. Insufferably insolent and\nchallenging was the effect in Alexey Alexandrovitch's eyes of the black\nlace about the head, admirably touched in by the painter, the black hair\nand handsome white hand with one finger lifted, covered with rings.\nAfter looking at the portrait for a minute, Alexey Alexandrovitch\nshuddered so that his lips quivered and he uttered the sound \"brrr,\" and\nturned away. He made haste to sit down in his easy chair and opened the\nbook. He tried to read, but he could not revive the very vivid interest\nhe had felt before in Egyptian hieroglyphics. He looked at the book and\nthought of something else. He thought not of his wife, but of a\ncomplication that had arisen in his official life, which at the time\nconstituted the chief interest of it. He felt that he had penetrated\nmore deeply than ever before into this intricate affair, and that he had\noriginated a leading idea--he could say it without\nself-flattery--calculated to clear up the whole business, to strengthen\nhim in his official career, to discomfit his enemies, and thereby to be\nof the greatest benefit to the government. Directly the servant had set\nthe tea and left the room, Alexey Alexandrovitch got up and went to the\nwriting-table. Moving into the middle of the table a portfolio of\npapers, with a scarcely perceptible smile of self-satisfaction, he took\na pencil from a rack and plunged into the perusal of a complex report\nrelating to the present complication. The complication was of this\nnature: Alexey Alexandrovitch's characteristic quality as a politician,\nthat special individual qualification that every rising functionary\npossesses, the qualification that with his unflagging ambition, his\nreserve, his honesty, and with his self-confidence had made his career,\nwas his contempt for red tape, his cutting down of correspondence, his\ndirect contact, wherever possible, with the living fact, and his\neconomy. It happened that the famous Commission of the 2nd of June had\nset on foot an inquiry into the irrigation of lands in the Zaraisky\nprovince, which fell under Alexey Alexandrovitch's department, and was a\nglaring example of fruitless expenditure and paper reforms. Alexey\nAlexandrovitch was aware of the truth of this. The irrigation of these\nlands in the Zaraisky province had been initiated by the predecessor of\nAlexey Alexandrovitch's predecessor. And vast sums of money had actually\nbeen spent and were still being spent on this business, and utterly\nunproductively, and the whole business could obviously lead to nothing\nwhatever. Alexey Alexandrovitch had perceived this at once on entering\noffice, and would have liked to lay hands on the Board of Irrigation.\nBut at first, when he did not yet feel secure in his position, he knew\nit would affect too many interests, and would be injudicious. Later on\nhe had been engrossed in other questions, and had simply forgotten the\nBoard of Irrigation. It went of itself, like all such boards, by the\nmere force of inertia. (Many people gained their livelihood by the Board\nof Irrigation, especially one highly conscientious and musical family:\nall the daughters played on stringed instruments, and Alexey\nAlexandrovitch knew the family and had stood godfather to one of the\nelder daughters.) The raising of this question by a hostile department\nwas in Alexey Alexandrovitch's opinion a dishonorable proceeding, seeing\nthat in every department there were things similar and worse, which no\none inquired into, for well-known reasons of official etiquette.\nHowever, now that the glove had been thrown down to him, he had boldly\npicked it up and demanded the appointment of a special commission to\ninvestigate and verify the working of the Board of Irrigation of the\nlands in the Zaraisky province. But in compensation he gave no quarter\nto the enemy either. He demanded the appointment of another special\ncommission to inquire into the question of the Native Tribes\nOrganization Committee. The question of the Native Tribes had been\nbrought up incidentally in the Commission of the 2nd of June, and had\nbeen pressed forward actively by Alexey Alexandrovitch as one admitting\nof no delay on account of the deplorable condition of the native tribes.\nIn the commission this question had been a ground of contention between\nseveral departments. The department hostile to Alexey Alexandrovitch\nproved that the condition of the native tribes was exceedingly\nflourishing, that the proposed reconstruction might be the ruin of their\nprosperity, and that if there were anything wrong, it arose mainly from\nthe failure on the part of Alexey Alexandrovitch's department to carry\nout the measures prescribed by law. Now Alexey Alexandrovitch intended\nto demand: First, that a new commission should be formed which should be\nempowered to investigate the condition of the native tribes on the spot;\nsecondly, if it should appear that the condition of the native tribes\nactually was such as it appeared to be from the official documents in\nthe hands of the committee, that another new scientific commission\nshould be appointed to investigate the deplorable condition of the\nnative tribes from the--(1) political, (2) administrative, (3) economic,\n(4) ethnographical, (5) material, and (6) religious points of view;\nthirdly, that evidence should be required from the rival department of\nthe measures that had been taken during the last ten years by that\ndepartment for averting the disastrous conditions in which the native\ntribes were now placed; and fourthly and finally, that that department\nexplain why it had, as appeared from the evidence before the committee,\nfrom No. 17,015 and 18,038, from December 5, 1863, and June 7, 1864,\nacted in direct contravention of the intent of the law T... Act 18, and\nthe note to Act 36. A flash of eagerness suffused the face of Alexey\nAlexandrovitch as he rapidly wrote out a synopsis of these ideas for his\nown benefit. Having filled a sheet of paper, he got up, rang, and sent a\nnote to the chief secretary of his department to look up certain\nnecessary facts for him. Getting up and walking about the room, he\nglanced again at the portrait, frowned, and smiled contemptuously. After\nreading a little more of the book on Egyptian hieroglyphics, and\nrenewing his interest in it, Alexey Alexandrovitch went to bed at eleven\no'clock, and recollecting as he lay in bed the incident with his wife,\nhe saw it now in by no means such a gloomy light.\n\n\n\nChapter 15\n\n\nThough Anna had obstinately and with exasperation contradicted Vronsky\nwhen he told her their position was impossible, at the bottom of her\nheart she regarded her own position as false and dishonorable, and she\nlonged with her whole soul to change it. On the way home from the races\nshe had told her husband the truth in a moment of excitement, and in\nspite of the agony she had suffered in doing so, she was glad of it.\nAfter her husband had left her, she told herself that she was glad, that\nnow everything was made clear, and at least there would be no more lying\nand deception. It seemed to her beyond doubt that her position was now\nmade clear forever. It might be bad, this new position, but it would be\nclear; there would be no indefiniteness or falsehood about it. The pain\nshe had caused herself and her husband in uttering those words would be\nrewarded now by everything being made clear, she thought. That evening\nshe saw Vronsky, but she did not tell him of what had passed between her\nand her husband, though, to make the position definite, it was necessary\nto tell him.\n\nWhen she woke up next morning the first thing that rose to her mind was\nwhat she had said to her husband, and those words seemed to her so awful\nthat she could not conceive now how she could have brought herself to\nutter those strange, coarse words, and could not imagine what would come\nof it. But the words were spoken, and Alexey Alexandrovitch had gone\naway without saying anything. \"I saw Vronsky and did not tell him. At\nthe very instant he was going away I would have turned him back and told\nhim, but I changed my mind, because it was strange that I had not told\nhim the first minute. Why was it I wanted to tell him and did not tell\nhim?\" And in answer to this question a burning blush of shame spread\nover her face. She knew what had kept her from it, she knew that she had\nbeen ashamed. Her position, which had seemed to her simplified the night\nbefore, suddenly struck her now as not only not simple, but as\nabsolutely hopeless. She felt terrified at the disgrace, of which she\nhad not ever thought before. Directly she thought of what her husband\nwould do, the most terrible ideas came to her mind. She had a vision of\nbeing turned out of the house, of her shame being proclaimed to all the\nworld. She asked herself where she should go when she was turned out of\nthe house, and she could not find an answer.\n\nWhen she thought of Vronsky, it seemed to her that he did not love her,\nthat he was already beginning to be tired of her, that she could not\noffer herself to him, and she felt bitter against him for it. It seemed\nto her that the words that she had spoken to her husband, and had\ncontinually repeated in her imagination, she had said to everyone, and\neveryone had heard them. She could not bring herself to look those of\nher own household in the face. She could not bring herself to call her\nmaid, and still less go downstairs and see her son and his governess.\n\nThe maid, who had been listening at her door for a long while, came into\nher room of her own accord. Anna glanced inquiringly into her face, and\nblushed with a scared look. The maid begged her pardon for coming in,\nsaying that she had fancied the bell rang. She brought her clothes and a\nnote. The note was from Betsy. Betsy reminded her that Liza Merkalova\nand Baroness Shtoltz were coming to play croquet with her that morning\nwith their adorers, Kaluzhsky and old Stremov. \"Come, if only as a study\nin morals. I shall expect you,\" she finished.\n\nAnna read the note and heaved a deep sigh.\n\n\"Nothing, I need nothing,\" she said to Annushka, who was rearranging the\nbottles and brushes on the dressing table. \"You can go. I'll dress at\nonce and come down. I need nothing.\"\n\nAnnushka went out, but Anna did not begin dressing, and sat in the same\nposition, her head and hands hanging listlessly, and every now and then\nshe shivered all over, seemed as though she would make some gesture,\nutter some word, and sank back into lifelessness again. She repeated\ncontinually, \"My God! my God!\" But neither \"God\" nor \"my\" had any\nmeaning to her. The idea of seeking help in her difficulty in religion\nwas as remote from her as seeking help from Alexey Alexandrovitch\nhimself, although she had never had doubts of the faith in which she had\nbeen brought up. She knew that the support of religion was possible only\nupon condition of renouncing what made up for her the whole meaning of\nlife. She was not simply miserable, she began to feel alarm at the new\nspiritual condition, never experienced before, in which she found\nherself. She felt as though everything were beginning to be double in\nher soul, just as objects sometimes appear double to over-tired eyes.\nShe hardly knew at times what it was she feared, and what she hoped for.\nWhether she feared or desired what had happened, or what was going to\nhappen, and exactly what she longed for, she could not have said.\n\n\"Ah, what am I doing!\" she said to herself, feeling a sudden thrill of\npain in both sides of her head. When she came to herself, she saw that\nshe was holding her hair in both hands, each side of her temples, and\npulling it. She jumped up, and began walking about.\n\n\"The coffee is ready, and mademoiselle and Seryozha are waiting,\" said\nAnnushka, coming back again and finding Anna in the same position.\n\n\"Seryozha? What about Seryozha?\" Anna asked, with sudden eagerness,\nrecollecting her son's existence for the first time that morning.\n\n\"He's been naughty, I think,\" answered Annushka with a smile.\n\n\"In what way?\"\n\n\"Some peaches were lying on the table in the corner room. I think he\nslipped in and ate one of them on the sly.\"\n\nThe recollection of her son suddenly roused Anna from the helpless\ncondition in which she found herself. She recalled the partly sincere,\nthough greatly exaggerated, role of the mother living for her child,\nwhich she had taken up of late years, and she felt with joy that in the\nplight in which she found herself she had a support, quite apart from\nher relation to her husband or to Vronsky. This support was her son. In\nwhatever position she might be placed, she could not lose her son. Her\nhusband might put her to shame and turn her out, Vronsky might grow cold\nto her and go on living his own life apart (she thought of him again\nwith bitterness and reproach); she could not leave her son. She had an\naim in life. And she must act; act to secure this relation to her son,\nso that he might not be taken from her. Quickly indeed, as quickly as\npossible, she must take action before he was taken from her. She must\ntake her son and go away. Here was the one thing she had to do now. She\nneeded consolation. She must be calm, and get out of this insufferable\nposition. The thought of immediate action binding her to her son, of\ngoing away somewhere with him, gave her this consolation.\n\nShe dressed quickly, went downstairs, and with resolute steps walked\ninto the drawing room, where she found, as usual, waiting for her, the\ncoffee, Seryozha, and his governess. Seryozha, all in white, with his\nback and head bent, was standing at a table under a looking-glass, and\nwith an expression of intense concentration which she knew well, and in\nwhich he resembled his father, he was doing something to the flowers he\ncarried.\n\nThe governess had a particularly severe expression. Seryozha screamed\nshrilly, as he often did, \"Ah, mamma!\" and stopped, hesitating whether\nto go to greet his mother and put down the flowers, or to finish making\nthe wreath and go with the flowers.\n\nThe governess, after saying good-morning, began a long and detailed\naccount of Seryozha's naughtiness, but Anna did not hear her; she was\nconsidering whether she would take her with her or not. \"No, I won't\ntake her,\" she decided. \"I'll go alone with my child.\"\n\n\"Yes, it's very wrong,\" said Anna, and taking her son by the shoulder\nshe looked at him, not severely, but with a timid glance that bewildered\nand delighted the boy, and she kissed him. \"Leave him to me,\" she said\nto the astonished governess, and not letting go of her son, she sat down\nat the table, where coffee was set ready for her.\n\n\"Mamma! I ... I ... didn't...\" he said, trying to make out from her\nexpression what was in store for him in regard to the peaches.\n\n\"Seryozha,\" she said, as soon as the governess had left the room, \"that\nwas wrong, but you'll never do it again, will you?... You love me?\"\n\nShe felt that the tears were coming into her eyes. \"Can I help loving\nhim?\" she said to herself, looking deeply into his scared and at the\nsame time delighted eyes. \"And can he ever join his father in punishing\nme? Is it possible he will not feel for me?\" Tears were already flowing\ndown her face, and to hide them she got up abruptly and almost ran out\non to the terrace.\n\nAfter the thunder showers of the last few days, cold, bright weather had\nset in. The air was cold in the bright sun that filtered through the\nfreshly washed leaves.\n\nShe shivered, both from the cold and from the inward horror which had\nclutched her with fresh force in the open air.\n\n\"Run along, run along to Mariette,\" she said to Seryozha, who had\nfollowed her out, and she began walking up and down on the straw matting\nof the terrace. \"Can it be that they won't forgive me, won't understand\nhow it all couldn't be helped?\" she said to herself.\n\nStanding still, and looking at the tops of the aspen trees waving in the\nwind, with their freshly washed, brightly shining leaves in the cold\nsunshine, she knew that they would not forgive her, that everyone and\neverything would be merciless to her now as was that sky, that green.\nAnd again she felt that everything was split in two in her soul. \"I\nmustn't, mustn't think,\" she said to herself. \"I must get ready. To go\nwhere? When? Whom to take with me? Yes, to Moscow by the evening train.\nAnnushka and Seryozha, and only the most necessary things. But first I\nmust write to them both.\" She went quickly indoors into her boudoir, sat\ndown at the table, and wrote to her husband:--\"After what has happened,\nI cannot remain any longer in your house. I am going away, and taking my\nson with me. I don't know the law, and so I don't know with which of the\nparents the son should remain; but I take him with me because I cannot\nlive without him. Be generous, leave him to me.\"\n\nUp to this point she wrote rapidly and naturally, but the appeal to his\ngenerosity, a quality she did not recognize in him, and the necessity of\nwinding up the letter with something touching, pulled her up. \"Of my\nfault and my remorse I cannot speak, because...\"\n\nShe stopped again, finding no connection in her ideas. \"No,\" she said to\nherself, \"there's no need of anything,\" and tearing up the letter, she\nwrote it again, leaving out the allusion to generosity, and sealed it\nup.\n\nAnother letter had to be written to Vronsky. \"I have told my husband,\"\nshe wrote, and she sat a long while unable to write more. It was so\ncoarse, so unfeminine. \"And what more am I to write to him?\" she said to\nherself. Again a flush of shame spread over her face; she recalled his\ncomposure, and a feeling of anger against him impelled her to tear the\nsheet with the phrase she had written into tiny bits. \"No need of\nanything,\" she said to herself, and closing her blotting-case she went\nupstairs, told the governess and the servants that she was going that\nday to Moscow, and at once set to work to pack up her things.\n\n\n\nChapter 16\n\n\nAll the rooms of the summer villa were full of porters, gardeners, and\nfootmen going to and fro carrying out things. Cupboards and chests were\nopen; twice they had sent to the shop for cord; pieces of newspaper were\ntossing about on the floor. Two trunks, some bags and strapped-up rugs,\nhad been carried down into the hall. The carriage and two hired cabs\nwere waiting at the steps. Anna, forgetting her inward agitation in the\nwork of packing, was standing at a table in her boudoir, packing her\ntraveling bag, when Annushka called her attention to the rattle of some\ncarriage driving up. Anna looked out of the window and saw Alexey\nAlexandrovitch's courier on the steps, ringing at the front door bell.\n\n\"Run and find out what it is,\" she said, and with a calm sense of being\nprepared for anything, she sat down in a low chair, folding her hands on\nher knees. A footman brought in a thick packet directed in Alexey\nAlexandrovitch's hand.\n\n\"The courier has orders to wait for an answer,\" he said.\n\n\"Very well,\" she said, and as soon as he had left the room she tore open\nthe letter with trembling fingers. A roll of unfolded notes done up in a\nwrapper fell out of it. She disengaged the letter and began reading it\nat the end. \"Preparations shall be made for your arrival here ... I\nattach particular significance to compliance...\" she read. She ran on,\nthen back, read it all through, and once more read the letter all\nthrough again from the beginning. When she had finished, she felt that\nshe was cold all over, and that a fearful calamity, such as she had not\nexpected, had burst upon her.\n\nIn the morning she had regretted that she had spoken to her husband, and\nwished for nothing so much as that those words could be unspoken. And\nhere this letter regarded them as unspoken, and gave her what she had\nwanted. But now this letter seemed to her more awful than anything she\nhad been able to conceive.\n\n\"He's right!\" she said; \"of course, he's always right; he's a Christian,\nhe's generous! Yes, vile, base creature! And no one understands it\nexcept me, and no one ever will; and I can't explain it. They say he's\nso religious, so high-principled, so upright, so clever; but they don't\nsee what I've seen. They don't know how he has crushed my life for eight\nyears, crushed everything that was living in me--he has not once even\nthought that I'm a live woman who must have love. They don't know how at\nevery step he's humiliated me, and been just as pleased with himself.\nHaven't I striven, striven with all my strength, to find something to\ngive meaning to my life? Haven't I struggled to love him, to love my son\nwhen I could not love my husband? But the time came when I knew that I\ncouldn't cheat myself any longer, that I was alive, that I was not to\nblame, that God has made me so that I must love and live. And now what\ndoes he do? If he'd killed me, if he'd killed him, I could have borne\nanything, I could have forgiven anything; but, no, he.... How was it I\ndidn't guess what he would do? He's doing just what's characteristic of\nhis mean character. He'll keep himself in the right, while me, in my\nruin, he'll drive still lower to worse ruin yet....\"\n\nShe recalled the words from the letter. \"You can conjecture what awaits\nyou and your son....\" \"That's a threat to take away my child, and most\nlikely by their stupid law he can. But I know very well why he says it.\nHe doesn't believe even in my love for my child, or he despises it (just\nas he always used to ridicule it). He despises that feeling in me, but\nhe knows that I won't abandon my child, that I can't abandon my child,\nthat there could be no life for me without my child, even with him whom\nI love; but that if I abandoned my child and ran away from him, I should\nbe acting like the most infamous, basest of women. He knows that, and\nknows that I am incapable of doing that.\"\n\nShe recalled another sentence in the letter. \"Our life must go on as it\nhas done in the past....\" \"That life was miserable enough in the old\ndays; it has been awful of late. What will it be now? And he knows all\nthat; he knows that I can't repent that I breathe, that I love; he knows\nthat it can lead to nothing but lying and deceit; but he wants to go on\ntorturing me. I know him; I know that he's at home and is happy in\ndeceit, like a fish swimming in the water. No, I won't give him that\nhappiness. I'll break through the spiderweb of lies in which he wants to\ncatch me, come what may. Anything's better than lying and deceit.\n\n\"But how? My God! my God! Was ever a woman so miserable as I am?...\"\n\n\"No; I will break through it, I will break through it!\" she cried,\njumping up and keeping back her tears. And she went to the writing table\nto write him another letter. But at the bottom of her heart she felt\nthat she was not strong enough to break through anything, that she was\nnot strong enough to get out of her old position, however false and\ndishonorable it might be.\n\nShe sat down at the writing table, but instead of writing she clasped\nher hands on the table, and, laying her head on them, burst into tears,\nwith sobs and heaving breast like a child crying. She was weeping that\nher dream of her position being made clear and definite had been\nannihilated forever. She knew beforehand that everything would go on in\nthe old way, and far worse, indeed, than in the old way. She felt that\nthe position in the world that she enjoyed, and that had seemed to her\nof so little consequence in the morning, that this position was precious\nto her, that she would not have the strength to exchange it for the\nshameful position of a woman who has abandoned husband and child to join\nher lover; that however much she might struggle, she could not be\nstronger than herself. She would never know freedom in love, but would\nremain forever a guilty wife, with the menace of detection hanging over\nher at every instant; deceiving her husband for the sake of a shameful\nconnection with a man living apart and away from her, whose life she\ncould never share. She knew that this was how it would be, and at the\nsame time it was so awful that she could not even conceive what it would\nend in. And she cried without restraint, as children cry when they are\npunished.\n\nThe sound of the footman's steps forced her to rouse herself, and,\nhiding her face from him, she pretended to be writing.\n\n\"The courier asks if there's an answer,\" the footman announced.\n\n\"An answer? Yes,\" said Anna. \"Let him wait. I'll ring.\"\n\n\"What can I write?\" she thought. \"What can I decide upon alone? What do\nI know? What do I want? What is there I care for?\" Again she felt that\nher soul was beginning to be split in two. She was terrified again at\nthis feeling, and clutched at the first pretext for doing something\nwhich might divert her thoughts from herself. \"I ought to see Alexey\"\n(so she called Vronsky in her thoughts); \"no one but he can tell me what\nI ought to do. I'll go to Betsy's, perhaps I shall see him there,\" she\nsaid to herself, completely forgetting that when she had told him the\nday before that she was not going to Princess Tverskaya's, he had said\nthat in that case he should not go either. She went up to the table,\nwrote to her husband, \"I have received your letter.--A.\"; and, ringing\nthe bell, gave it to the footman.\n\n\"We are not going,\" she said to Annushka, as she came in.\n\n\"Not going at all?\"\n\n\"No; don't unpack till tomorrow, and let the carriage wait. I'm going to\nthe princess's.\"\n\n\"Which dress am I to get ready?\"\n\n\n\nChapter 17\n\n\nThe croquet party to which the Princess Tverskaya had invited Anna was\nto consist of two ladies and their adorers. These two ladies were the\nchief representatives of a select new Petersburg circle, nicknamed, in\nimitation of some imitation, _les sept merveilles du monde_. These\nladies belonged to a circle which, though of the highest society, was\nutterly hostile to that in which Anna moved. Moreover, Stremov, one of\nthe most influential people in Petersburg, and the elderly admirer of\nLiza Merkalova, was Alexey Alexandrovitch's enemy in the political\nworld. From all these considerations Anna had not meant to go, and the\nhints in Princess Tverskaya's note referred to her refusal. But now Anna\nwas eager to go, in the hope of seeing Vronsky.\n\nAnna arrived at Princess Tverskaya's earlier than the other guests.\n\nAt the same moment as she entered, Vronsky's footman, with side-whiskers\ncombed out like a _Kammerjunker_, went in too. He stopped at the door,\nand, taking off his cap, let her pass. Anna recognized him, and only\nthen recalled that Vronsky had told her the day before that he would not\ncome. Most likely he was sending a note to say so.\n\nAs she took off her outer garment in the hall, she heard the footman,\npronouncing his \"r's\" even like a _Kammerjunker_, say, \"From the count\nfor the princess,\" and hand the note.\n\nShe longed to question him as to where his master was. She longed to\nturn back and send him a letter to come and see her, or to go herself to\nsee him. But neither the first nor the second nor the third course was\npossible. Already she heard bells ringing to announce her arrival ahead\nof her, and Princess Tverskaya's footman was standing at the open door\nwaiting for her to go forward into the inner rooms.\n\n\"The princess is in the garden; they will inform her immediately. Would\nyou be pleased to walk into the garden?\" announced another footman in\nanother room.\n\nThe position of uncertainty, of indecision, was still the same as at\nhome--worse, in fact, since it was impossible to take any step,\nimpossible to see Vronsky, and she had to remain here among outsiders,\nin company so uncongenial to her present mood. But she was wearing a\ndress that she knew suited her. She was not alone; all around was that\nluxurious setting of idleness that she was used to, and she felt less\nwretched than at home. She was not forced to think what she was to do.\nEverything would be done of itself. On meeting Betsy coming towards her\nin a white gown that struck her by its elegance, Anna smiled at her just\nas she always did. Princess Tverskaya was walking with Tushkevitch and a\nyoung lady, a relation, who, to the great joy of her parents in the\nprovinces, was spending the summer with the fashionable princess.\n\nThere was probably something unusual about Anna, for Betsy noticed it at\nonce.\n\n\"I slept badly,\" answered Anna, looking intently at the footman who came\nto meet them, and, as she supposed, brought Vronsky's note.\n\n\"How glad I am you've come!\" said Betsy. \"I'm tired, and was just\nlonging to have some tea before they come. You might go\"--she turned to\nTushkevitch--\"with Masha, and try the croquet ground over there where\nthey've been cutting it. We shall have time to talk a little over tea;\nwe'll have a cozy chat, eh?\" she said in English to Anna, with a smile,\npressing the hand with which she held a parasol.\n\n\"Yes, especially as I can't stay very long with you. I'm forced to go on\nto old Madame Vrede. I've been promising to go for a century,\" said\nAnna, to whom lying, alien as it was to her nature, had become not\nmerely simple and natural in society, but a positive source of\nsatisfaction. Why she said this, which she had not thought of a second\nbefore, she could not have explained. She had said it simply from the\nreflection that as Vronsky would not be here, she had better secure her\nown freedom, and try to see him somehow. But why she had spoken of old\nMadame Vrede, whom she had to go and see, as she had to see many other\npeople, she could not have explained; and yet, as it afterwards turned\nout, had she contrived the most cunning devices to meet Vronsky, she\ncould have thought of nothing better.\n\n\"No. I'm not going to let you go for anything,\" answered Betsy, looking\nintently into Anna's face. \"Really, if I were not fond of you, I should\nfeel offended. One would think you were afraid my society would\ncompromise you. Tea in the little dining room, please,\" she said, half\nclosing her eyes, as she always did when addressing the footman.\n\nTaking the note from him, she read it.\n\n\"Alexey's playing us false,\" she said in French; \"he writes that he\ncan't come,\" she added in a tone as simple and natural as though it\ncould never enter her head that Vronsky could mean anything more to Anna\nthan a game of croquet. Anna knew that Betsy knew everything, but,\nhearing how she spoke of Vronsky before her, she almost felt persuaded\nfor a minute that she knew nothing.\n\n\"Ah!\" said Anna indifferently, as though not greatly interested in the\nmatter, and she went on smiling: \"How can you or your friends compromise\nanyone?\"\n\nThis playing with words, this hiding of a secret, had a great\nfascination for Anna, as, indeed, it has for all women. And it was not\nthe necessity of concealment, not the aim with which the concealment was\ncontrived, but the process of concealment itself which attracted her.\n\n\"I can't be more Catholic than the Pope,\" she said. \"Stremov and Liza\nMerkalova, why, they're the cream of the cream of society. Besides,\nthey're received everywhere, and _I_\"--she laid special stress on the\nI--\"have never been strict and intolerant. It's simply that I haven't\nthe time.\"\n\n\"No; you don't care, perhaps, to meet Stremov? Let him and Alexey\nAlexandrovitch tilt at each other in the committee--that's no affair of\nours. But in the world, he's the most amiable man I know, and a devoted\ncroquet player. You shall see. And, in spite of his absurd position as\nLiza's lovesick swain at his age, you ought to see how he carries off\nthe absurd position. He's very nice. Sappho Shtoltz you don't know? Oh,\nthat's a new type, quite new.\"\n\nBetsy said all this, and, at the same time, from her good-humored,\nshrewd glance, Anna felt that she partly guessed her plight, and was\nhatching something for her benefit. They were in the little boudoir.\n\n\"I must write to Alexey though,\" and Betsy sat down to the table,\nscribbled a few lines, and put the note in an envelope.\n\n\"I'm telling him to come to dinner. I've one lady extra to dinner with\nme, and no man to take her in. Look what I've said, will that persuade\nhim? Excuse me, I must leave you for a minute. Would you seal it up,\nplease, and send it off?\" she said from the door; \"I have to give some\ndirections.\"\n\nWithout a moment's thought, Anna sat down to the table with Betsy's\nletter, and, without reading it, wrote below: \"It's essential for me to\nsee you. Come to the Vrede garden. I shall be there at six o'clock.\" She\nsealed it up, and, Betsy coming back, in her presence handed the note to\nbe taken.\n\nAt tea, which was brought them on a little tea-table in the cool little\ndrawing room, the cozy chat promised by Princess Tverskaya before the\narrival of her visitors really did come off between the two women. They\ncriticized the people they were expecting, and the conversation fell\nupon Liza Merkalova.\n\n\"She's very sweet, and I always liked her,\" said Anna.\n\n\"You ought to like her. She raves about you. Yesterday she came up to me\nafter the races and was in despair at not finding you. She says you're a\nreal heroine of romance, and that if she were a man she would do all\nsorts of mad things for your sake. Stremov says she does that as it is.\"\n\n\"But do tell me, please, I never could make it out,\" said Anna, after\nbeing silent for some time, speaking in a tone that showed she was not\nasking an idle question, but that what she was asking was of more\nimportance to her than it should have been; \"do tell me, please, what\nare her relations with Prince Kaluzhsky, Mishka, as he's called? I've\nmet them so little. What does it mean?\"\n\nBetsy smiled with her eyes, and looked intently at Anna.\n\n\"It's a new manner,\" she said. \"They've all adopted that manner. They've\nflung their caps over the windmills. But there are ways and ways of\nflinging them.\"\n\n\"Yes, but what are her relations precisely with Kaluzhsky?\"\n\nBetsy broke into unexpectedly mirthful and irrepressible laughter, a\nthing which rarely happened with her.\n\n\"You're encroaching on Princess Myakaya's special domain now. That's the\nquestion of an _enfant terrible_,\" and Betsy obviously tried to restrain\nherself, but could not, and went off into peals of that infectious\nlaughter that people laugh who do not laugh often. \"You'd better ask\nthem,\" she brought out, between tears of laughter.\n\n\"No; you laugh,\" said Anna, laughing too in spite of herself, \"but I\nnever could understand it. I can't understand the husband's role in it.\"\n\n\"The husband? Liza Merkalova's husband carries her shawl, and is always\nready to be of use. But anything more than that in reality, no one cares\nto inquire. You know in decent society one doesn't talk or think even of\ncertain details of the toilet. That's how it is with this.\"\n\n\"Will you be at Madame Rolandak's fete?\" asked Anna, to change the\nconversation.\n\n\"I don't think so,\" answered Betsy, and, without looking at her friend,\nshe began filling the little transparent cups with fragrant tea. Putting\na cup before Anna, she took out a cigarette, and, fitting it into a\nsilver holder, she lighted it.\n\n\"It's like this, you see: I'm in a fortunate position,\" she began, quite\nserious now, as she took up her cup. \"I understand you, and I understand\nLiza. Liza now is one of those naive natures that, like children, don't\nknow what's good and what's bad. Anyway, she didn't comprehend it when\nshe was very young. And now she's aware that the lack of comprehension\nsuits her. Now, perhaps, she doesn't know on purpose,\" said Betsy, with\na subtle smile. \"But, anyway, it suits her. The very same thing, don't\nyou see, may be looked at tragically, and turned into a misery, or it\nmay be looked at simply and even humorously. Possibly you are inclined\nto look at things too tragically.\"\n\n\"How I should like to know other people just as I know myself!\" said\nAnna, seriously and dreamily. \"Am I worse than other people, or better?\nI think I'm worse.\"\n\n\"_Enfant terrible, enfant terrible!_\" repeated Betsy. \"But here they\nare.\"\n\n\n\nChapter 18\n\n\nThey heard the sound of steps and a man's voice, then a woman's voice\nand laughter, and immediately thereafter there walked in the expected\nguests: Sappho Shtoltz, and a young man beaming with excess of health,\nthe so-called Vaska. It was evident that ample supplies of beefsteak,\ntruffles, and Burgundy never failed to reach him at the fitting hour.\nVaska bowed to the two ladies, and glanced at them, but only for one\nsecond. He walked after Sappho into the drawing-room, and followed her\nabout as though he were chained to her, keeping his sparkling eyes fixed\non her as though he wanted to eat her. Sappho Shtoltz was a blonde\nbeauty with black eyes. She walked with smart little steps in\nhigh-heeled shoes, and shook hands with the ladies vigorously like a\nman.\n\nAnna had never met this new star of fashion, and was struck by her\nbeauty, the exaggerated extreme to which her dress was carried, and the\nboldness of her manners. On her head there was such a superstructure of\nsoft, golden hair--her own and false mixed--that her head was equal in\nsize to the elegantly rounded bust, of which so much was exposed in\nfront. The impulsive abruptness of her movements was such that at every\nstep the lines of her knees and the upper part of her legs were\ndistinctly marked under her dress, and the question involuntarily rose\nto the mind where in the undulating, piled-up mountain of material at\nthe back the real body of the woman, so small and slender, so naked in\nfront, and so hidden behind and below, really came to an end.\n\nBetsy made haste to introduce her to Anna.\n\n\"Only fancy, we all but ran over two soldiers,\" she began telling them\nat once, using her eyes, smiling and twitching away her tail, which she\nflung back at one stroke all on one side. \"I drove here with Vaska....\nAh, to be sure, you don't know each other.\" And mentioning his surname\nshe introduced the young man, and reddening a little, broke into a\nringing laugh at her mistake--that is, at her having called him Vaska to\na stranger. Vaska bowed once more to Anna, but he said nothing to her.\nHe addressed Sappho: \"You've lost your bet. We got here first. Pay up,\"\nsaid he, smiling.\n\nSappho laughed still more festively.\n\n\"Not just now,\" said she.\n\n\"Oh, all right, I'll have it later.\"\n\n\"Very well, very well. Oh, yes.\" She turned suddenly to Princess Betsy:\n\"I am a nice person ... I positively forgot it ... I've brought you a\nvisitor. And here he comes.\" The unexpected young visitor, whom Sappho\nhad invited, and whom she had forgotten, was, however, a personage of\nsuch consequence that, in spite of his youth, both the ladies rose on\nhis entrance.\n\nHe was a new admirer of Sappho's. He now dogged her footsteps, like\nVaska.\n\nSoon after Prince Kaluzhsky arrived, and Liza Merkalova with Stremov.\nLiza Merkalova was a thin brunette, with an Oriental, languid type of\nface, and--as everyone used to say--exquisite enigmatic eyes. The tone\nof her dark dress (Anna immediately observed and appreciated the fact)\nwas in perfect harmony with her style of beauty. Liza was as soft and\nenervated as Sappho was smart and abrupt.\n\nBut to Anna's taste Liza was far more attractive. Betsy had said to Anna\nthat she had adopted the pose of an innocent child, but when Anna saw\nher, she felt that this was not the truth. She really was both innocent\nand corrupt, but a sweet and passive woman. It is true that her tone was\nthe same as Sappho's; that like Sappho, she had two men, one young and\none old, tacked onto her, and devouring her with their eyes. But there\nwas something in her higher than what surrounded her. There was in her\nthe glow of the real diamond among glass imitations. This glow shone out\nin her exquisite, truly enigmatic eyes. The weary, and at the same time\npassionate, glance of those eyes, encircled by dark rings, impressed one\nby its perfect sincerity. Everyone looking into those eyes fancied he\nknew her wholly, and knowing her, could not but love her. At the sight\nof Anna, her whole face lighted up at once with a smile of delight.\n\n\"Ah, how glad I am to see you!\" she said, going up to her. \"Yesterday at\nthe races all I wanted was to get to you, but you'd gone away. I did so\nwant to see you, yesterday especially. Wasn't it awful?\" she said,\nlooking at Anna with eyes that seemed to lay bare all her soul.\n\n\"Yes; I had no idea it would be so thrilling,\" said Anna, blushing.\n\nThe company got up at this moment to go into the garden.\n\n\"I'm not going,\" said Liza, smiling and settling herself close to Anna.\n\"You won't go either, will you? Who wants to play croquet?\"\n\n\"Oh, I like it,\" said Anna.\n\n\"There, how do you manage never to be bored by things? It's delightful\nto look at you. You're alive, but I'm bored.\"\n\n\"How can you be bored? Why, you live in the liveliest set in\nPetersburg,\" said Anna.\n\n\"Possibly the people who are not of our set are even more bored; but\nwe--I certainly--are not happy, but awfully, awfully bored.\"\n\nSappho smoking a cigarette went off into the garden with the two young\nmen. Betsy and Stremov remained at the tea-table.\n\n\"What, bored!\" said Betsy. \"Sappho says they did enjoy themselves\ntremendously at your house last night.\"\n\n\"Ah, how dreary it all was!\" said Liza Merkalova. \"We all drove back to\nmy place after the races. And always the same people, always the same.\nAlways the same thing. We lounged about on sofas all the evening. What\nis there to enjoy in that? No; do tell me how you manage never to be\nbored?\" she said, addressing Anna again. \"One has but to look at you and\none sees, here's a woman who may be happy or unhappy, but isn't bored.\nTell me how you do it?\"\n\n\"I do nothing,\" answered Anna, blushing at these searching questions.\n\n\"That's the best way,\" Stremov put in. Stremov was a man of fifty,\npartly gray, but still vigorous-looking, very ugly, but with a\ncharacteristic and intelligent face. Liza Merkalova was his wife's\nniece, and he spent all his leisure hours with her. On meeting Anna\nKarenina, as he was Alexey Alexandrovitch's enemy in the government, he\ntried, like a shrewd man and a man of the world, to be particularly\ncordial with her, the wife of his enemy.\n\n\"'Nothing,'\" he put in with a subtle smile, \"that's the very best way. I\ntold you long ago,\" he said, turning to Liza Merkalova, \"that if you\ndon't want to be bored, you mustn't think you're going to be bored. It's\njust as you mustn't be afraid of not being able to fall asleep, if\nyou're afraid of sleeplessness. That's just what Anna Arkadyevna has\njust said.\"\n\n\"I should be very glad if I had said it, for it's not only clever but\ntrue,\" said Anna, smiling.\n\n\"No, do tell me why it is one can't go to sleep, and one can't help\nbeing bored?\"\n\n\"To sleep well one ought to work, and to enjoy oneself one ought to work\ntoo.\"\n\n\"What am I to work for when my work is no use to anybody? And I can't\nand won't knowingly make a pretense about it.\"\n\n\"You're incorrigible,\" said Stremov, not looking at her, and he spoke\nagain to Anna. As he rarely met Anna, he could say nothing but\ncommonplaces to her, but he said those commonplaces as to when she was\nreturning to Petersburg, and how fond Countess Lidia Ivanovna was of\nher, with an expression which suggested that he longed with his whole\nsoul to please her and show his regard for her and even more than that.\n\nTushkevitch came in, announcing that the party were awaiting the other\nplayers to begin croquet.\n\n\"No, don't go away, please don't,\" pleaded Liza Merkalova, hearing that\nAnna was going. Stremov joined in her entreaties.\n\n\"It's too violent a transition,\" he said, \"to go from such company to\nold Madame Vrede. And besides, you will only give her a chance for\ntalking scandal, while here you arouse none but such different feelings\nof the highest and most opposite kind,\" he said to her.\n\nAnna pondered for an instant in uncertainty. This shrewd man's\nflattering words, the naive, childlike affection shown her by Liza\nMerkalova, and all the social atmosphere she was used to,--it was all so\neasy, and what was in store for her was so difficult, that she was for a\nminute in uncertainty whether to remain, whether to put off a little\nlonger the painful moment of explanation. But remembering what was in\nstore for her alone at home, if she did not come to some decision,\nremembering that gesture--terrible even in memory--when she had clutched\nher hair in both hands--she said good-bye and went away.\n\n\n\nChapter 19\n\n\nIn spite of Vronsky's apparently frivolous life in society, he was a man\nwho hated irregularity. In early youth in the Corps of Pages, he had\nexperienced the humiliation of a refusal, when he had tried, being in\ndifficulties, to borrow money, and since then he had never once put\nhimself in the same position again.\n\nIn order to keep his affairs in some sort of order, he used about five\ntimes a year (more or less frequently, according to circumstances) to\nshut himself up alone and put all his affairs into definite shape. This\nhe used to call his day of reckoning or _faire la lessive_.\n\nOn waking up the day after the races, Vronsky put on a white linen coat,\nand without shaving or taking his bath, he distributed about the table\nmoneys, bills, and letters, and set to work. Petritsky, who knew he was\nill-tempered on such occasions, on waking up and seeing his comrade at\nthe writing-table, quietly dressed and went out without getting in his\nway.\n\nEvery man who knows to the minutest details all the complexity of the\nconditions surrounding him, cannot help imagining that the complexity of\nthese conditions, and the difficulty of making them clear, is something\nexceptional and personal, peculiar to himself, and never supposes that\nothers are surrounded by just as complicated an array of personal\naffairs as he is. So indeed it seemed to Vronsky. And not without inward\npride, and not without reason, he thought that any other man would long\nago have been in difficulties, would have been forced to some\ndishonorable course, if he had found himself in such a difficult\nposition. But Vronsky felt that now especially it was essential for him\nto clear up and define his position if he were to avoid getting into\ndifficulties.\n\nWhat Vronsky attacked first as being the easiest was his pecuniary\nposition. Writing out on note paper in his minute hand all that he owed,\nhe added up the amount and found that his debts amounted to seventeen\nthousand and some odd hundreds, which he left out for the sake of\nclearness. Reckoning up his money and his bank book, he found that he\nhad left one thousand eight hundred roubles, and nothing coming in\nbefore the New Year. Reckoning over again his list of debts, Vronsky\ncopied it, dividing it into three classes. In the first class he put the\ndebts which he would have to pay at once, or for which he must in any\ncase have the money ready so that on demand for payment there could not\nbe a moment's delay in paying. Such debts amounted to about four\nthousand: one thousand five hundred for a horse, and two thousand five\nhundred as surety for a young comrade, Venovsky, who had lost that sum\nto a cardsharper in Vronsky's presence. Vronsky had wanted to pay the\nmoney at the time (he had that amount then), but Venovsky and Yashvin\nhad insisted that they would pay and not Vronsky, who had not played.\nThat was so far well, but Vronsky knew that in this dirty business,\nthough his only share in it was undertaking by word of mouth to be\nsurety for Venovsky, it was absolutely necessary for him to have the two\nthousand five hundred roubles so as to be able to fling it at the\nswindler, and have no more words with him. And so for this first and\nmost important division he must have four thousand roubles. The second\nclass--eight thousand roubles--consisted of less important debts. These\nwere principally accounts owing in connection with his race horses, to\nthe purveyor of oats and hay, the English saddler, and so on. He would\nhave to pay some two thousand roubles on these debts too, in order to be\nquite free from anxiety. The last class of debts--to shops, to hotels,\nto his tailor--were such as need not be considered. So that he needed at\nleast six thousand roubles for current expenses, and he only had one\nthousand eight hundred. For a man with one hundred thousand roubles of\nrevenue, which was what everyone fixed as Vronsky's income, such debts,\none would suppose, could hardly be embarrassing; but the fact was that\nhe was far from having one hundred thousand. His father's immense\nproperty, which alone yielded a yearly income of two hundred thousand,\nwas left undivided between the brothers. At the time when the elder\nbrother, with a mass of debts, married Princess Varya Tchirkova, the\ndaughter of a Decembrist without any fortune whatever, Alexey had given\nup to his elder brother almost the whole income from his father's\nestate, reserving for himself only twenty-five thousand a year from it.\nAlexey had said at the time to his brother that that sum would be\nsufficient for him until he married, which he probably never would do.\nAnd his brother, who was in command of one of the most expensive\nregiments, and was only just married, could not decline the gift. His\nmother, who had her own separate property, had allowed Alexey every year\ntwenty thousand in addition to the twenty-five thousand he had reserved,\nand Alexey had spent it all. Of late his mother, incensed with him on\naccount of his love affair and his leaving Moscow, had given up sending\nhim the money. And in consequence of this, Vronsky, who had been in the\nhabit of living on the scale of forty-five thousand a year, having only\nreceived twenty thousand that year, found himself now in difficulties.\nTo get out of these difficulties, he could not apply to his mother for\nmoney. Her last letter, which he had received the day before, had\nparticularly exasperated him by the hints in it that she was quite ready\nto help him to succeed in the world and in the army, but not to lead a\nlife which was a scandal to all good society. His mother's attempt to\nbuy him stung him to the quick and made him feel colder than ever to\nher. But he could not draw back from the generous word when it was once\nuttered, even though he felt now, vaguely foreseeing certain\neventualities in his intrigue with Madame Karenina, that this generous\nword had been spoken thoughtlessly, and that even though he were not\nmarried he might need all the hundred thousand of income. But it was\nimpossible to draw back. He had only to recall his brother's wife, to\nremember how that sweet, delightful Varya sought, at every convenient\nopportunity, to remind him that she remembered his generosity and\nappreciated it, to grasp the impossibility of taking back his gift. It\nwas as impossible as beating a woman, stealing, or lying. One thing only\ncould and ought to be done, and Vronsky determined upon it without an\ninstant's hesitation: to borrow money from a money-lender, ten thousand\nroubles, a proceeding which presented no difficulty, to cut down his\nexpenses generally, and to sell his race horses. Resolving on this, he\npromptly wrote a note to Rolandak, who had more than once sent to him\nwith offers to buy horses from him. Then he sent for the Englishman and\nthe money-lender, and divided what money he had according to the\naccounts he intended to pay. Having finished this business, he wrote a\ncold and cutting answer to his mother. Then he took out of his notebook\nthree notes of Anna's, read them again, burned them, and remembering\ntheir conversation on the previous day, he sank into meditation.\n\n\n\nChapter 20\n\n\nVronsky's life was particularly happy in that he had a code of\nprinciples, which defined with unfailing certitude what he ought and\nwhat he ought not to do. This code of principles covered only a very\nsmall circle of contingencies, but then the principles were never\ndoubtful, and Vronsky, as he never went outside that circle, had never\nhad a moment's hesitation about doing what he ought to do. These\nprinciples laid down as invariable rules: that one must pay a\ncardsharper, but need not pay a tailor; that one must never tell a lie\nto a man, but one may to a woman; that one must never cheat anyone, but\none may a husband; that one must never pardon an insult, but one may\ngive one and so on. These principles were possibly not reasonable and\nnot good, but they were of unfailing certainty, and so long as he\nadhered to them, Vronsky felt that his heart was at peace and he could\nhold his head up. Only quite lately in regard to his relations with\nAnna, Vronsky had begun to feel that his code of principles did not\nfully cover all possible contingencies, and to foresee in the future\ndifficulties and perplexities for which he could find no guiding clue.\n\nHis present relation to Anna and to her husband was to his mind clear\nand simple. It was clearly and precisely defined in the code of\nprinciples by which he was guided.\n\nShe was an honorable woman who had bestowed her love upon him, and he\nloved her, and therefore she was in his eyes a woman who had a right to\nthe same, or even more, respect than a lawful wife. He would have had\nhis hand chopped off before he would have allowed himself by a word, by\na hint, to humiliate her, or even to fall short of the fullest respect a\nwoman could look for.\n\nHis attitude to society, too, was clear. Everyone might know, might\nsuspect it, but no one might dare to speak of it. If any did so, he was\nready to force all who might speak to be silent and to respect the\nnon-existent honor of the woman he loved.\n\nHis attitude to the husband was the clearest of all. From the moment\nthat Anna loved Vronsky, he had regarded his own right over her as the\none thing unassailable. Her husband was simply a superfluous and\ntiresome person. No doubt he was in a pitiable position, but how could\nthat be helped? The one thing the husband had a right to was to demand\nsatisfaction with a weapon in his hand, and Vronsky was prepared for\nthis at any minute.\n\nBut of late new inner relations had arisen between him and her, which\nfrightened Vronsky by their indefiniteness. Only the day before she had\ntold him that she was with child. And he felt that this fact and what\nshe expected of him called for something not fully defined in that code\nof principles by which he had hitherto steered his course in life. And\nhe had been indeed caught unawares, and at the first moment when she\nspoke to him of her position, his heart had prompted him to beg her to\nleave her husband. He had said that, but now thinking things over he saw\nclearly that it would be better to manage to avoid that; and at the same\ntime, as he told himself so, he was afraid whether it was not wrong.\n\n\"If I told her to leave her husband, that must mean uniting her life\nwith mine; am I prepared for that? How can I take her away now, when I\nhave no money? Supposing I could arrange.... But how can I take her away\nwhile I'm in the service? If I say that--I ought to be prepared to do\nit, that is, I ought to have the money and to retire from the army.\"\n\nAnd he grew thoughtful. The question whether to retire from the service\nor not brought him to the other and perhaps the chief though hidden\ninterest of his life, of which none knew but he.\n\nAmbition was the old dream of his youth and childhood, a dream which he\ndid not confess even to himself, though it was so strong that now this\npassion was even doing battle with his love. His first steps in the\nworld and in the service had been successful, but two years before he\nhad made a great mistake. Anxious to show his independence and to\nadvance, he had refused a post that had been offered him, hoping that\nthis refusal would heighten his value; but it turned out that he had\nbeen too bold, and he was passed over. And having, whether he liked or\nnot, taken up for himself the position of an independent man, he carried\nit off with great tact and good sense, behaving as though he bore no\ngrudge against anyone, did not regard himself as injured in any way, and\ncared for nothing but to be left alone since he was enjoying himself. In\nreality he had ceased to enjoy himself as long ago as the year before,\nwhen he went away to Moscow. He felt that this independent attitude of a\nman who might have done anything, but cared to do nothing, was already\nbeginning to pall, that many people were beginning to fancy that he was\nnot really capable of anything but being a straightforward, good-natured\nfellow. His connection with Madame Karenina, by creating so much\nsensation and attracting general attention, had given him a fresh\ndistinction which soothed his gnawing worm of ambition for a while, but\na week before that worm had been roused up again with fresh force. The\nfriend of his childhood, a man of the same set, of the same coterie, his\ncomrade in the Corps of Pages, Serpuhovskoy, who had left school with\nhim and had been his rival in class, in gymnastics, in their scrapes and\ntheir dreams of glory, had come back a few days before from Central\nAsia, where he had gained two steps up in rank, and an order rarely\nbestowed upon generals so young.\n\nAs soon as he arrived in Petersburg, people began to talk about him as a\nnewly risen star of the first magnitude. A schoolfellow of Vronsky's and\nof the same age, he was a general and was expecting a command, which\nmight have influence on the course of political events; while Vronsky,\nindependent and brilliant and beloved by a charming woman though he was,\nwas simply a cavalry captain who was readily allowed to be as\nindependent as ever he liked. \"Of course I don't envy Serpuhovskoy and\nnever could envy him; but his advancement shows me that one has only to\nwatch one's opportunity, and the career of a man like me may be very\nrapidly made. Three years ago he was in just the same position as I am.\nIf I retire, I burn my ships. If I remain in the army, I lose nothing.\nShe said herself she did not wish to change her position. And with her\nlove I cannot feel envious of Serpuhovskoy.\" And slowly twirling his\nmustaches, he got up from the table and walked about the room. His eyes\nshone particularly brightly, and he felt in that confident, calm, and\nhappy frame of mind which always came after he had thoroughly faced his\nposition. Everything was straight and clear, just as after former days\nof reckoning. He shaved, took a cold bath, dressed and went out.\n\n\n\nChapter 21\n\n\n\"We've come to fetch you. Your _lessive_ lasted a good time today,\" said\nPetritsky. \"Well, is it over?\"\n\n\"It is over,\" answered Vronsky, smiling with his eyes only, and twirling\nthe tips of his mustaches as circumspectly as though after the perfect\norder into which his affairs had been brought any over-bold or rapid\nmovement might disturb it.\n\n\"You're always just as if you'd come out of a bath after it,\" said\nPetritsky. \"I've come from Gritsky's\" (that was what they called the\ncolonel); \"they're expecting you.\"\n\nVronsky, without answering, looked at his comrade, thinking of something\nelse.\n\n\"Yes; is that music at his place?\" he said, listening to the familiar\nsounds of polkas and waltzes floating across to him. \"What's the fete?\"\n\n\"Serpuhovskoy's come.\"\n\n\"Aha!\" said Vronsky, \"why, I didn't know.\"\n\nThe smile in his eyes gleamed more brightly than ever.\n\nHaving once made up his mind that he was happy in his love, that he\nsacrificed his ambition to it--having anyway taken up this position,\nVronsky was incapable of feeling either envious of Serpuhovskoy or hurt\nwith him for not coming first to him when he came to the regiment.\nSerpuhovskoy was a good friend, and he was delighted he had come.\n\n\"Ah, I'm very glad!\"\n\nThe colonel, Demin, had taken a large country house. The whole party\nwere in the wide lower balcony. In the courtyard the first objects that\nmet Vronsky's eyes were a band of singers in white linen coats, standing\nnear a barrel of vodka, and the robust, good-humored figure of the\ncolonel surrounded by officers. He had gone out as far as the first step\nof the balcony and was loudly shouting across the band that played\nOffenbach's quadrille, waving his arms and giving some orders to a few\nsoldiers standing on one side. A group of soldiers, a quartermaster, and\nseveral subalterns came up to the balcony with Vronsky. The colonel\nreturned to the table, went out again onto the steps with a tumbler in\nhis hand, and proposed the toast, \"To the health of our former comrade,\nthe gallant general, Prince Serpuhovskoy. Hurrah!\"\n\nThe colonel was followed by Serpuhovskoy, who came out onto the steps\nsmiling, with a glass in his hand.\n\n\"You always get younger, Bondarenko,\" he said to the rosy-checked,\nsmart-looking quartermaster standing just before him, still youngish\nlooking though doing his second term of service.\n\nIt was three years since Vronsky had seen Serpuhovskoy. He looked more\nrobust, had let his whiskers grow, but was still the same graceful\ncreature, whose face and figure were even more striking from their\nsoftness and nobility than their beauty. The only change Vronsky\ndetected in him was that subdued, continual radiance of beaming content\nwhich settles on the faces of men who are successful and are sure of the\nrecognition of their success by everyone. Vronsky knew that radiant air,\nand immediately observed it in Serpuhovskoy.\n\nAs Serpuhovskoy came down the steps he saw Vronsky. A smile of pleasure\nlighted up his face. He tossed his head upwards and waved the glass in\nhis hand, greeting Vronsky, and showing him by the gesture that he could\nnot come to him before the quartermaster, who stood craning forward his\nlips ready to be kissed.\n\n\"Here he is!\" shouted the colonel. \"Yashvin told me you were in one of\nyour gloomy tempers.\"\n\nSerpuhovskoy kissed the moist, fresh lips of the gallant-looking\nquartermaster, and wiping his mouth with his handkerchief, went up to\nVronsky.\n\n\"How glad I am!\" he said, squeezing his hand and drawing him on one\nside.\n\n\"You look after him,\" the colonel shouted to Yashvin, pointing to\nVronsky; and he went down below to the soldiers.\n\n\"Why weren't you at the races yesterday? I expected to see you there,\"\nsaid Vronsky, scrutinizing Serpuhovskoy.\n\n\"I did go, but late. I beg your pardon,\" he added, and he turned to the\nadjutant: \"Please have this divided from me, each man as much as it runs\nto.\" And he hurriedly took notes for three hundred roubles from his\npocketbook, blushing a little.\n\n\"Vronsky! Have anything to eat or drink?\" asked Yashvin. \"Hi, something\nfor the count to eat! Ah, here it is: have a glass!\"\n\nThe fete at the colonel's lasted a long while. There was a great deal of\ndrinking. They tossed Serpuhovskoy in the air and caught him again\nseveral times. Then they did the same to the colonel. Then, to the\naccompaniment of the band, the colonel himself danced with Petritsky.\nThen the colonel, who began to show signs of feebleness, sat down on a\nbench in the courtyard and began demonstrating to Yashvin the\nsuperiority of Russia over Poland, especially in cavalry attack, and\nthere was a lull in the revelry for a moment. Serpuhovskoy went into the\nhouse to the bathroom to wash his hands and found Vronsky there; Vronsky\nwas drenching his head with water. He had taken off his coat and put his\nsunburnt, hairy neck under the tap, and was rubbing it and his head with\nhis hands. When he had finished, Vronsky sat down by Serpuhovskoy. They\nboth sat down in the bathroom on a lounge, and a conversation began\nwhich was very interesting to both of them.\n\n\"I've always been hearing about you through my wife,\" said Serpuhovskoy.\n\"I'm glad you've been seeing her pretty often.\"\n\n\"She's friendly with Varya, and they're the only women in Petersburg I\ncare about seeing,\" answered Vronsky, smiling. He smiled because he\nforesaw the topic the conversation would turn on, and he was glad of it.\n\n\"The only ones?\" Serpuhovskoy queried, smiling.\n\n\"Yes; and I heard news of you, but not only through your wife,\" said\nVronsky, checking his hint by a stern expression of face. \"I was greatly\ndelighted to hear of your success, but not a bit surprised. I expected\neven more.\"\n\nSerpuhovskoy smiled. Such an opinion of him was obviously agreeable to\nhim, and he did not think it necessary to conceal it.\n\n\"Well, I on the contrary expected less--I'll own frankly. But I'm glad,\nvery glad. I'm ambitious; that's my weakness, and I confess to it.\"\n\n\"Perhaps you wouldn't confess to it if you hadn't been successful,\" said\nVronsky.\n\n\"I don't suppose so,\" said Serpuhovskoy, smiling again. \"I won't say\nlife wouldn't be worth living without it, but it would be dull. Of\ncourse I may be mistaken, but I fancy I have a certain capacity for the\nline I've chosen, and that power of any sort in my hands, if it is to\nbe, will be better than in the hands of a good many people I know,\" said\nSerpuhovskoy, with beaming consciousness of success; \"and so the nearer\nI get to it, the better pleased I am.\"\n\n\"Perhaps that is true for you, but not for everyone. I used to think so\ntoo, but here I live and think life worth living not only for that.\"\n\n\"There it's out! here it comes!\" said Serpuhovskoy, laughing. \"Ever\nsince I heard about you, about your refusal, I began.... Of course, I\napproved of what you did. But there are ways of doing everything. And I\nthink your action was good in itself, but you didn't do it quite in the\nway you ought to have done.\"\n\n\"What's done can't be undone, and you know I never go back on what I've\ndone. And besides, I'm very well off.\"\n\n\"Very well off--for the time. But you're not satisfied with that. I\nwouldn't say this to your brother. He's a nice child, like our host\nhere. There he goes!\" he added, listening to the roar of \"hurrah!\"--\"and\nhe's happy, but that does not satisfy you.\"\n\n\"I didn't say it did satisfy me.\"\n\n\"Yes, but that's not the only thing. Such men as you are wanted.\"\n\n\"By whom?\"\n\n\"By whom? By society, by Russia. Russia needs men; she needs a party, or\nelse everything goes and will go to the dogs.\"\n\n\"How do you mean? Bertenev's party against the Russian communists?\"\n\n\"No,\" said Serpuhovskoy, frowning with vexation at being suspected of\nsuch an absurdity. \"_Tout ca est une blague_. That's always been and\nalways will be. There are no communists. But intriguing people have to\ninvent a noxious, dangerous party. It's an old trick. No, what's wanted\nis a powerful party of independent men like you and me.\"\n\n\"But why so?\" Vronsky mentioned a few men who were in power. \"Why aren't\nthey independent men?\"\n\n\"Simply because they have not, or have not had from birth, an\nindependent fortune; they've not had a name, they've not been close to\nthe sun and center as we have. They can be bought either by money or by\nfavor. And they have to find a support for themselves in inventing a\npolicy. And they bring forward some notion, some policy that they don't\nbelieve in, that does harm; and the whole policy is really only a means\nto a government house and so much income. _Cela n'est pas plus fin que\nca_, when you get a peep at their cards. I may be inferior to them,\nstupider perhaps, though I don't see why I should be inferior to them.\nBut you and I have one important advantage over them for certain, in\nbeing more difficult to buy. And such men are more needed than ever.\"\n\nVronsky listened attentively, but he was not so much interested by the\nmeaning of the words as by the attitude of Serpuhovskoy who was already\ncontemplating a struggle with the existing powers, and already had his\nlikes and dislikes in that higher world, while his own interest in the\ngoverning world did not go beyond the interests of his regiment. Vronsky\nfelt, too, how powerful Serpuhovskoy might become through his\nunmistakable faculty for thinking things out and for taking things in,\nthrough his intelligence and gift of words, so rarely met with in the\nworld in which he moved. And, ashamed as he was of the feeling, he felt\nenvious.\n\n\"Still I haven't the one thing of most importance for that,\" he\nanswered; \"I haven't the desire for power. I had it once, but it's\ngone.\"\n\n\"Excuse me, that's not true,\" said Serpuhovskoy, smiling.\n\n\"Yes, it is true, it is true ... now!\" Vronsky added, to be truthful.\n\n\"Yes, it's true now, that's another thing; but that _now_ won't last\nforever.\"\n\n\"Perhaps,\" answered Vronsky.\n\n\"You say _perhaps_,\" Serpuhovskoy went on, as though guessing his\nthoughts, \"but I say _for certain_. And that's what I wanted to see you\nfor. Your action was just what it should have been. I see that, but you\nought not to keep it up. I only ask you to give me carte blanche. I'm\nnot going to offer you my protection ... though, indeed, why shouldn't I\nprotect you?--you've protected me often enough! I should hope our\nfriendship rises above all that sort of thing. Yes,\" he said, smiling to\nhim as tenderly as a woman, \"give me _carte blanche_, retire from the\nregiment, and I'll draw you upwards imperceptibly.\"\n\n\"But you must understand that I want nothing,\" said Vronsky, \"except\nthat all should be as it is.\"\n\nSerpuhovskoy got up and stood facing him.\n\n\"You say that all should be as it is. I understand what that means. But\nlisten: we're the same age, you've known a greater number of women\nperhaps than I have.\" Serpohovskoy's smile and gestures told Vronsky\nthat he mustn't be afraid, that he would be tender and careful in\ntouching the sore place. \"But I'm married, and believe me, in getting to\nknow thoroughly one's wife, if one loves her, as someone has said, one\ngets to know all women better than if one knew thousands of them.\"\n\n\"We're coming directly!\" Vronsky shouted to an officer, who looked into\nthe room and called them to the colonel.\n\nVronsky was longing now to hear to the end and know what Serpuhovskey\nwould say to him.\n\n\"And here's my opinion for you. Women are the chief stumbling block in a\nman's career. It's hard to love a woman and do anything. There's only\none way of having love conveniently without its being a\nhindrance--that's marriage. How, how am I to tell you what I mean?\" said\nSerpuhovskoy, who liked similes. \"Wait a minute, wait a minute! Yes,\njust as you can only carry a _fardeau_ and do something with your hands,\nwhen the fardeau is tied on your back, and that's marriage. And that's\nwhat I felt when I was married. My hands were suddenly set free. But to\ndrag that _fardeau_ about with you without marriage, your hands will\nalways be so full that you can do nothing. Look at Mazankov, at Krupov.\nThey've ruined their careers for the sake of women.\"\n\n\"What women!\" said Vronsky, recalling the Frenchwoman and the actress\nwith whom the two men he had mentioned were connected.\n\n\"The firmer the woman's footing in society, the worse it is. That's much\nthe same as--not merely carrying the _fardeau_ in your arms--but tearing\nit away from someone else.\"\n\n\"You have never loved,\" Vronsky said softly, looking straight before him\nand thinking of Anna.\n\n\"Perhaps. But you remember what I've said to you. And another thing,\nwomen are all more materialistic than men. We make something immense out\nof love, but they are always _terre-a-terre_.\"\n\n\"Directly, directly!\" he cried to a footman who came in. But the footman\nhad not come to call them again, as he supposed. The footman brought\nVronsky a note.\n\n\"A man brought it from Princess Tverskaya.\"\n\nVronsky opened the letter, and flushed crimson.\n\n\"My head's begun to ache; I'm going home,\" he said to Serpuhovskoy.\n\n\"Oh, good-bye then. You give me _carte blanche!_\"\n\n\"We'll talk about it later on; I'll look you up in Petersburg.\"\n\n\n\nChapter 22\n\n\nIt was six o'clock already, and so, in order to be there quickly, and at\nthe same time not to drive with his own horses, known to everyone,\nVronsky got into Yashvin's hired fly, and told the driver to drive as\nquickly as possible. It was a roomy, old-fashioned fly, with seats for\nfour. He sat in one corner, stretched his legs out on the front seat,\nand sank into meditation.\n\nA vague sense of the order into which his affairs had been brought, a\nvague recollection of the friendliness and flattery of Serpuhovskoy, who\nhad considered him a man that was needed, and most of all, the\nanticipation of the interview before him--all blended into a general,\njoyous sense of life. This feeling was so strong that he could not help\nsmiling. He dropped his legs, crossed one leg over the other knee, and\ntaking it in his hand, felt the springy muscle of the calf, where it had\nbeen grazed the day before by his fall, and leaning back he drew several\ndeep breaths.\n\n\"I'm happy, very happy!\" he said to himself. He had often before had\nthis sense of physical joy in his own body, but he had never felt so\nfond of himself, of his own body, as at that moment. He enjoyed the\nslight ache in his strong leg, he enjoyed the muscular sensation of\nmovement in his chest as he breathed. The bright, cold August day, which\nhad made Anna feel so hopeless, seemed to him keenly stimulating, and\nrefreshed his face and neck that still tingled from the cold water. The\nscent of brilliantine on his whiskers struck him as particularly\npleasant in the fresh air. Everything he saw from the carriage window,\neverything in that cold pure air, in the pale light of the sunset, was\nas fresh, and gay, and strong as he was himself: the roofs of the houses\nshining in the rays of the setting sun, the sharp outlines of fences and\nangles of buildings, the figures of passers-by, the carriages that met\nhim now and then, the motionless green of the trees and grass, the\nfields with evenly drawn furrows of potatoes, and the slanting shadows\nthat fell from the houses, and trees, and bushes, and even from the rows\nof potatoes--everything was bright like a pretty landscape just finished\nand freshly varnished.\n\n\"Get on, get on!\" he said to the driver, putting his head out of the\nwindow, and pulling a three-rouble note out of his pocket he handed it\nto the man as he looked round. The driver's hand fumbled with something\nat the lamp, the whip cracked, and the carriage rolled rapidly along the\nsmooth highroad.\n\n\"I want nothing, nothing but this happiness,\" he thought, staring at the\nbone button of the bell in the space between the windows, and picturing\nto himself Anna just as he had seen her last time. \"And as I go on, I\nlove her more and more. Here's the garden of the Vrede Villa.\nWhereabouts will she be? Where? How? Why did she fix on this place to\nmeet me, and why does she write in Betsy's letter?\" he thought,\nwondering now for the first time at it. But there was now no time for\nwonder. He called to the driver to stop before reaching the avenue, and\nopening the door, jumped out of the carriage as it was moving, and went\ninto the avenue that led up to the house. There was no one in the\navenue; but looking round to the right he caught sight of her. Her face\nwas hidden by a veil, but he drank in with glad eyes the special\nmovement in walking, peculiar to her alone, the slope of the shoulders,\nand the setting of the head, and at once a sort of electric shock ran\nall over him. With fresh force, he felt conscious of himself from the\nspringy motions of his legs to the movements of his lungs as he\nbreathed, and something set his lips twitching.\n\nJoining him, she pressed his hand tightly.\n\n\"You're not angry that I sent for you? I absolutely had to see you,\" she\nsaid; and the serious and set line of her lips, which he saw under the\nveil, transformed his mood at once.\n\n\"I angry! But how have you come, where from?\"\n\n\"Never mind,\" she said, laying her hand on his, \"come along, I must talk\nto you.\"\n\nHe saw that something had happened, and that the interview would not be\na joyous one. In her presence he had no will of his own: without knowing\nthe grounds of her distress, he already felt the same distress\nunconsciously passing over him.\n\n\"What is it? what?\" he asked her, squeezing her hand with his elbow, and\ntrying to read her thoughts in her face.\n\nShe walked on a few steps in silence, gathering up her courage; then\nsuddenly she stopped.\n\n\"I did not tell you yesterday,\" she began, breathing quickly and\npainfully, \"that coming home with Alexey Alexandrovitch I told him\neverything ... told him I could not be his wife, that ... and told him\neverything.\"\n\nHe heard her, unconsciously bending his whole figure down to her as\nthough hoping in this way to soften the hardness of her position for\nher. But directly she had said this he suddenly drew himself up, and a\nproud and hard expression came over his face.\n\n\"Yes, yes, that's better, a thousand times better! I know how painful it\nwas,\" he said. But she was not listening to his words, she was reading\nhis thoughts from the expression of his face. She could not guess that\nthat expression arose from the first idea that presented itself to\nVronsky--that a duel was now inevitable. The idea of a duel had never\ncrossed her mind, and so she put a different interpretation on this\npassing expression of hardness.\n\nWhen she got her husband's letter, she knew then at the bottom of her\nheart that everything would go on in the old way, that she would not\nhave the strength of will to forego her position, to abandon her son,\nand to join her lover. The morning spent at Princess Tverskaya's had\nconfirmed her still more in this. But this interview was still of the\nutmost gravity for her. She hoped that this interview would transform\nher position, and save her. If on hearing this news he were to say to\nher resolutely, passionately, without an instant's wavering: \"Throw up\neverything and come with me!\" she would give up her son and go away with\nhim. But this news had not produced what she had expected in him; he\nsimply seemed as though he were resenting some affront.\n\n\"It was not in the least painful to me. It happened of itself,\" she said\nirritably; \"and see...\" she pulled her husband's letter out of her\nglove.\n\n\"I understand, I understand,\" he interrupted her, taking the letter, but\nnot reading it, and trying to soothe her. \"The one thing I longed for,\nthe one thing I prayed for, was to cut short this position, so as to\ndevote my life to your happiness.\"\n\n\"Why do you tell me that?\" she said. \"Do you suppose I can doubt it? If\nI doubted...\"\n\n\"Who's that coming?\" said Vronsky suddenly, pointing to two ladies\nwalking towards them. \"Perhaps they know us!\" and he hurriedly turned\noff, drawing her after him into a side path.\n\n\"Oh, I don't care!\" she said. Her lips were quivering. And he fancied\nthat her eyes looked with strange fury at him from under the veil. \"I\ntell you that's not the point--I can't doubt that; but see what he\nwrites to me. Read it.\" She stood still again.\n\nAgain, just as at the first moment of hearing of her rupture with her\nhusband, Vronsky, on reading the letter, was unconsciously carried away\nby the natural sensation aroused in him by his own relation to the\nbetrayed husband. Now while he held his letter in his hands, he could\nnot help picturing the challenge, which he would most likely find at\nhome today or tomorrow, and the duel itself, in which, with the same\ncold and haughty expression that his face was assuming at this moment he\nwould await the injured husband's shot, after having himself fired into\nthe air. And at that instant there flashed across his mind the thought\nof what Serpuhovskoy had just said to him, and what he had himself been\nthinking in the morning--that it was better not to bind himself--and he\nknew that this thought he could not tell her.\n\nHaving read the letter, he raised his eyes to her, and there was no\ndetermination in them. She saw at once that he had been thinking about\nit before by himself. She knew that whatever he might say to her, he\nwould not say all he thought. And she knew that her last hope had failed\nher. This was not what she had been reckoning on.\n\n\"You see the sort of man he is,\" she said, with a shaking voice; \"he...\"\n\n\"Forgive me, but I rejoice at it,\" Vronsky interrupted. \"For God's sake,\nlet me finish!\" he added, his eyes imploring her to give him time to\nexplain his words. \"I rejoice, because things cannot, cannot possibly\nremain as he supposes.\"\n\n\"Why can't they?\" Anna said, restraining her tears, and obviously\nattaching no sort of consequence to what he said. She felt that her fate\nwas sealed.\n\nVronsky meant that after the duel--inevitable, he thought--things could\nnot go on as before, but he said something different.\n\n\"It can't go on. I hope that now you will leave him. I hope\"--he was\nconfused, and reddened--\"that you will let me arrange and plan our life.\nTomorrow...\" he was beginning.\n\nShe did not let him go on.\n\n\"But my child!\" she shrieked. \"You see what he writes! I should have to\nleave him, and I can't and won't do that.\"\n\n\"But, for God's sake, which is better?--leave your child, or keep up\nthis degrading position?\"\n\n\"To whom is it degrading?\"\n\n\"To all, and most of all to you.\"\n\n\"You say degrading ... don't say that. Those words have no meaning for\nme,\" she said in a shaking voice. She did not want him now to say what\nwas untrue. She had nothing left her but his love, and she wanted to\nlove him. \"Don't you understand that from the day I loved you everything\nhas changed for me? For me there is one thing, and one thing only--your\nlove. If that's mine, I feel so exalted, so strong, that nothing can be\nhumiliating to me. I am proud of my position, because ... proud of being\n... proud....\" She could not say what she was proud of. Tears of shame\nand despair choked her utterance. She stood still and sobbed.\n\nHe felt, too, something swelling in his throat and twitching in his\nnose, and for the first time in his life he felt on the point of\nweeping. He could not have said exactly what it was touched him so. He\nfelt sorry for her, and he felt he could not help her, and with that he\nknew that he was to blame for her wretchedness, and that he had done\nsomething wrong.\n\n\"Is not a divorce possible?\" he said feebly. She shook her head, not\nanswering. \"Couldn't you take your son, and still leave him?\"\n\n\"Yes; but it all depends on him. Now I must go to him,\" she said\nshortly. Her presentiment that all would again go on in the old way had\nnot deceived her.\n\n\"On Tuesday I shall be in Petersburg, and everything can be settled.\"\n\n\"Yes,\" she said. \"But don't let us talk any more of it.\"\n\nAnna's carriage, which she had sent away, and ordered to come back to\nthe little gate of the Vrede garden, drove up. Anna said good-bye to\nVronsky, and drove home.\n\n\n\nChapter 23\n\n\nOn Monday there was the usual sitting of the Commission of the 2nd of\nJune. Alexey Alexandrovitch walked into the hall where the sitting was\nheld, greeted the members and the president, as usual, and sat down in\nhis place, putting his hand on the papers laid ready before him. Among\nthese papers lay the necessary evidence and a rough outline of the\nspeech he intended to make. But he did not really need these documents.\nHe remembered every point, and did not think it necessary to go over in\nhis memory what he would say. He knew that when the time came, and when\nhe saw his enemy facing him, and studiously endeavoring to assume an\nexpression of indifference, his speech would flow of itself better than\nhe could prepare it now. He felt that the import of his speech was of\nsuch magnitude that every word of it would have weight. Meantime, as he\nlistened to the usual report, he had the most innocent and inoffensive\nair. No one, looking at his white hands, with their swollen veins and\nlong fingers, so softly stroking the edges of the white paper that lay\nbefore him, and at the air of weariness with which his head drooped on\none side, would have suspected that in a few minutes a torrent of words\nwould flow from his lips that would arouse a fearful storm, set the\nmembers shouting and attacking one another, and force the president to\ncall for order. When the report was over, Alexey Alexandrovitch\nannounced in his subdued, delicate voice that he had several points to\nbring before the meeting in regard to the Commission for the\nReorganization of the Native Tribes. All attention was turned upon him.\nAlexey Alexandrovitch cleared his throat, and not looking at his\nopponent, but selecting, as he always did while he was delivering his\nspeeches, the first person sitting opposite him, an inoffensive little\nold man, who never had an opinion of any sort in the Commission, began\nto expound his views. When he reached the point about the fundamental\nand radical law, his opponent jumped up and began to protest. Stremov,\nwho was also a member of the Commission, and also stung to the quick,\nbegan defending himself, and altogether a stormy sitting followed; but\nAlexey Alexandrovitch triumphed, and his motion was carried, three new\ncommissions were appointed, and the next day in a certain Petersburg\ncircle nothing else was talked of but this sitting. Alexey\nAlexandrovitch's success had been even greater than he had anticipated.\n\nNext morning, Tuesday, Alexey Alexandrovitch, on waking up, recollected\nwith pleasure his triumph of the previous day, and he could not help\nsmiling, though he tried to appear indifferent, when the chief secretary\nof his department, anxious to flatter him, informed him of the rumors\nthat had reached him concerning what had happened in the Commission.\n\nAbsorbed in business with the chief secretary, Alexey Alexandrovitch had\ncompletely forgotten that it was Tuesday, the day fixed by him for the\nreturn of Anna Arkadyevna, and he was surprised and received a shock of\nannoyance when a servant came in to inform him of her arrival.\n\nAnna had arrived in Petersburg early in the morning; the carriage had\nbeen sent to meet her in accordance with her telegram, and so Alexey\nAlexandrovitch might have known of her arrival. But when she arrived, he\ndid not meet her. She was told that he had not yet gone out, but was\nbusy with his secretary. She sent word to her husband that she had come,\nwent to her own room, and occupied herself in sorting out her things,\nexpecting he would come to her. But an hour passed; he did not come. She\nwent into the dining room on the pretext of giving some directions, and\nspoke loudly on purpose, expecting him to come out there; but he did not\ncome, though she heard him go to the door of his study as he parted from\nthe chief secretary. She knew that he usually went out quickly to his\noffice, and she wanted to see him before that, so that their attitude to\none another might be defined.\n\nShe walked across the drawing room and went resolutely to him. When she\nwent into his study he was in official uniform, obviously ready to go\nout, sitting at a little table on which he rested his elbows, looking\ndejectedly before him. She saw him before he saw her, and she saw that\nhe was thinking of her.\n\nOn seeing her, he would have risen, but changed his mind, then his face\nflushed hotly--a thing Anna had never seen before, and he got up quickly\nand went to meet her, looking not at her eyes, but above them at her\nforehead and hair. He went up to her, took her by the hand, and asked\nher to sit down.\n\n\"I am very glad you have come,\" he said, sitting down beside her, and\nobviously wishing to say something, he stuttered. Several times he tried\nto begin to speak, but stopped. In spite of the fact that, preparing\nherself for meeting him, she had schooled herself to despise and\nreproach him, she did not know what to say to him, and she felt sorry\nfor him. And so the silence lasted for some time. \"Is Seryozha quite\nwell?\" he said, and not waiting for an answer, he added: \"I shan't be\ndining at home today, and I have got to go out directly.\"\n\n\"I had thought of going to Moscow,\" she said.\n\n\"No, you did quite, quite right to come,\" he said, and was silent again.\n\nSeeing that he was powerless to begin the conversation, she began\nherself.\n\n\"Alexey Alexandrovitch,\" she said, looking at him and not dropping her\neyes under his persistent gaze at her hair, \"I'm a guilty woman, I'm a\nbad woman, but I am the same as I was, as I told you then, and I have\ncome to tell you that I can change nothing.\"\n\n\"I have asked you no question about that,\" he said, all at once,\nresolutely and with hatred looking her straight in the face; \"that was\nas I had supposed.\" Under the influence of anger he apparently regained\ncomplete possession of all his faculties. \"But as I told you then, and\nhave written to you,\" he said in a thin, shrill voice, \"I repeat now,\nthat I am not bound to know this. I ignore it. Not all wives are so kind\nas you, to be in such a hurry to communicate such agreeable news to\ntheir husbands.\" He laid special emphasis on the word \"agreeable.\" \"I\nshall ignore it so long as the world knows nothing of it, so long as my\nname is not disgraced. And so I simply inform you that our relations\nmust be just as they have always been, and that only in the event of\nyour compromising me I shall be obliged to take steps to secure my\nhonor.\"\n\n\"But our relations cannot be the same as always,\" Anna began in a timid\nvoice, looking at him with dismay.\n\nWhen she saw once more those composed gestures, heard that shrill,\nchildish, and sarcastic voice, her aversion for him extinguished her\npity for him, and she felt only afraid, but at all costs she wanted to\nmake clear her position.\n\n\"I cannot be your wife while I....\" she began.\n\nHe laughed a cold and malignant laugh.\n\n\"The manner of life you have chosen is reflected, I suppose, in your\nideas. I have too much respect or contempt, or both ... I respect your\npast and despise your present ... that I was far from the interpretation\nyou put on my words.\"\n\nAnna sighed and bowed her head.\n\n\"Though indeed I fail to comprehend how, with the independence you\nshow,\" he went on, getting hot, \"--announcing your infidelity to your\nhusband and seeing nothing reprehensible in it, apparently--you can see\nanything reprehensible in performing a wife's duties in relation to your\nhusband.\"\n\n\"Alexey Alexandrovitch! What is it you want of me?\"\n\n\"I want you not to meet that man here, and to conduct yourself so that\nneither the world nor the servants can reproach you ... not to see him.\nThat's not much, I think. And in return you will enjoy all the\nprivileges of a faithful wife without fulfilling her duties. That's all\nI have to say to you. Now it's time for me to go. I'm not dining at\nhome.\" He got up and moved towards the door.\n\nAnna got up too. Bowing in silence, he let her pass before him.\n\n\n\nChapter 24\n\n\nThe night spent by Levin on the haycock did not pass without result for\nhim. The way in which he had been managing his land revolted him and had\nlost all attraction for him. In spite of the magnificent harvest, never\nhad there been, or, at least, never it seemed to him, had there been so\nmany hindrances and so many quarrels between him and the peasants as\nthat year, and the origin of these failures and this hostility was now\nperfectly comprehensible to him. The delight he had experienced in the\nwork itself, and the consequent greater intimacy with the peasants, the\nenvy he felt of them, of their life, the desire to adopt that life,\nwhich had been to him that night not a dream but an intention, the\nexecution of which he had thought out in detail--all this had so\ntransformed his view of the farming of the land as he had managed it,\nthat he could not take his former interest in it, and could not help\nseeing that unpleasant relation between him and the workpeople which was\nthe foundation of it all. The herd of improved cows such as Pava, the\nwhole land ploughed over and enriched, the nine level fields surrounded\nwith hedges, the two hundred and forty acres heavily manured, the seed\nsown in drills, and all the rest of it--it was all splendid if only the\nwork had been done for themselves, or for themselves and\ncomrades--people in sympathy with them. But he saw clearly now (his work\non a book of agriculture, in which the chief element in husbandry was to\nhave been the laborer, greatly assisted him in this) that the sort of\nfarming he was carrying on was nothing but a cruel and stubborn struggle\nbetween him and the laborers, in which there was on one side--his\nside--a continual intense effort to change everything to a pattern he\nconsidered better; on the other side, the natural order of things. And\nin this struggle he saw that with immense expenditure of force on his\nside, and with no effort or even intention on the other side, all that\nwas attained was that the work did not go to the liking of either side,\nand that splendid tools, splendid cattle and land were spoiled with no\ngood to anyone. Worst of all, the energy expended on this work was not\nsimply wasted. He could not help feeling now, since the meaning of this\nsystem had become clear to him, that the aim of his energy was a most\nunworthy one. In reality, what was the struggle about? He was struggling\nfor every farthing of his share (and he could not help it, for he had\nonly to relax his efforts, and he would not have had the money to pay\nhis laborers' wages), while they were only struggling to be able to do\ntheir work easily and agreeably, that is to say, as they were used to\ndoing it. It was for his interests that every laborer should work as\nhard as possible, and that while doing so he should keep his wits about\nhim, so as to try not to break the winnowing machines, the horse rakes,\nthe thrashing machines, that he should attend to what he was doing. What\nthe laborer wanted was to work as pleasantly as possible, with rests,\nand above all, carelessly and heedlessly, without thinking. That summer\nLevin saw this at every step. He sent the men to mow some clover for\nhay, picking out the worst patches where the clover was overgrown with\ngrass and weeds and of no use for seed; again and again they mowed the\nbest acres of clover, justifying themselves by the pretense that the\nbailiff had told them to, and trying to pacify him with the assurance\nthat it would be splendid hay; but he knew that it was owing to those\nacres being so much easier to mow. He sent out a hay machine for\npitching the hay--it was broken at the first row because it was dull\nwork for a peasant to sit on the seat in front with the great wings\nwaving above him. And he was told, \"Don't trouble, your honor, sure, the\nwomenfolks will pitch it quick enough.\" The ploughs were practically\nuseless, because it never occurred to the laborer to raise the share\nwhen he turned the plough, and forcing it round, he strained the horses\nand tore up the ground, and Levin was begged not to mind about it. The\nhorses were allowed to stray into the wheat because not a single laborer\nwould consent to be night-watchman, and in spite of orders to the\ncontrary, the laborers insisted on taking turns for night duty, and\nIvan, after working all day long, fell asleep, and was very penitent for\nhis fault, saying, \"Do what you will to me, your honor.\"\n\nThey killed three of the best calves by letting them into the clover\naftermath without care as to their drinking, and nothing would make the\nmen believe that they had been blown out by the clover, but they told\nhim, by way of consolation, that one of his neighbors had lost a hundred\nand twelve head of cattle in three days. All this happened, not because\nanyone felt ill-will to Levin or his farm; on the contrary, he knew that\nthey liked him, thought him a simple gentleman (their highest praise);\nbut it happened simply because all they wanted was to work merrily and\ncarelessly, and his interests were not only remote and incomprehensible\nto them, but fatally opposed to their most just claims. Long before,\nLevin had felt dissatisfaction with his own position in regard to the\nland. He saw where his boat leaked, but he did not look for the leak,\nperhaps purposely deceiving himself. (Nothing would be left him if he\nlost faith in it.) But now he could deceive himself no longer. The\nfarming of the land, as he was managing it, had become not merely\nunattractive but revolting to him, and he could take no further interest\nin it.\n\nTo this now was joined the presence, only twenty-five miles off, of\nKitty Shtcherbatskaya, whom he longed to see and could not see. Darya\nAlexandrovna Oblonskaya had invited him, when he was over there, to\ncome; to come with the object of renewing his offer to her sister, who\nwould, so she gave him to understand, accept him now. Levin himself had\nfelt on seeing Kitty Shtcherbatskaya that he had never ceased to love\nher; but he could not go over to the Oblonskys', knowing she was there.\nThe fact that he had made her an offer, and she had refused him, had\nplaced an insuperable barrier between her and him. \"I can't ask her to\nbe my wife merely because she can't be the wife of the man she wanted to\nmarry,\" he said to himself. The thought of this made him cold and\nhostile to her. \"I should not be able to speak to her without a feeling\nof reproach; I could not look at her without resentment; and she will\nonly hate me all the more, as she's bound to. And besides, how can I\nnow, after what Darya Alexandrovna told me, go to see them? Can I help\nshowing that I know what she told me? And me to go magnanimously to\nforgive her, and have pity on her! Me go through a performance before\nher of forgiving, and deigning to bestow my love on her!... What induced\nDarya Alexandrovna to tell me that? By chance I might have seen her,\nthen everything would have happened of itself; but, as it is, it's out\nof the question, out of the question!\"\n\nDarya Alexandrovna sent him a letter, asking him for a side-saddle for\nKitty's use. \"I'm told you have a side-saddle,\" she wrote to him; \"I\nhope you will bring it over yourself.\"\n\nThis was more than he could stand. How could a woman of any\nintelligence, of any delicacy, put her sister in such a humiliating\nposition! He wrote ten notes, and tore them all up, and sent the saddle\nwithout any reply. To write that he would go was impossible, because he\ncould not go; to write that he could not come because something\nprevented him, or that he would be away, that was still worse. He sent\nthe saddle without an answer, and with a sense of having done something\nshameful; he handed over all the now revolting business of the estate to\nthe bailiff, and set off next day to a remote district to see his friend\nSviazhsky, who had splendid marshes for grouse in his neighborhood, and\nhad lately written to ask him to keep a long-standing promise to stay\nwith him. The grouse-marsh, in the Surovsky district, had long tempted\nLevin, but he had continually put off this visit on account of his work\non the estate. Now he was glad to get away from the neighborhood of the\nShtcherbatskys, and still more from his farm work, especially on a\nshooting expedition, which always in trouble served as the best\nconsolation.\n\n\n\nChapter 25\n\n\nIn the Surovsky district there was no railway nor service of post\nhorses, and Levin drove there with his own horses in his big,\nold-fashioned carriage.\n\nHe stopped halfway at a well-to-do peasant's to feed his horses. A bald,\nwell-preserved old man, with a broad, red beard, gray on his cheeks,\nopened the gate, squeezing against the gatepost to let the three horses\npass. Directing the coachman to a place under the shed in the big,\nclean, tidy yard, with charred, old-fashioned ploughs in it, the old man\nasked Levin to come into the parlor. A cleanly dressed young woman, with\nclogs on her bare feet, was scrubbing the floor in the new outer room.\nShe was frightened of the dog, that ran in after Levin, and uttered a\nshriek, but began laughing at her own fright at once when she was told\nthe dog would not hurt her. Pointing Levin with her bare arm to the door\ninto the parlor, she bent down again, hiding her handsome face, and went\non scrubbing.\n\n\"Would you like the samovar?\" she asked.\n\n\"Yes, please.\"\n\nThe parlor was a big room, with a Dutch stove, and a screen dividing it\ninto two. Under the holy pictures stood a table painted in patterns, a\nbench, and two chairs. Near the entrance was a dresser full of crockery.\nThe shutters were closed, there were few flies, and it was so clean that\nLevin was anxious that Laska, who had been running along the road and\nbathing in puddles, should not muddy the floor, and ordered her to a\nplace in the corner by the door. After looking round the parlor, Levin\nwent out in the back yard. The good-looking young woman in clogs,\nswinging the empty pails on the yoke, ran on before him to the well for\nwater.\n\n\"Look sharp, my girl!\" the old man shouted after her, good-humoredly,\nand he went up to Levin. \"Well, sir, are you going to Nikolay Ivanovitch\nSviazhsky? His honor comes to us too,\" he began, chatting, leaning his\nelbows on the railing of the steps. In the middle of the old man's\naccount of his acquaintance with Sviazhsky, the gates creaked again, and\nlaborers came into the yard from the fields, with wooden ploughs and\nharrows. The horses harnessed to the ploughs and harrows were sleek and\nfat. The laborers were obviously of the household: two were young men in\ncotton shirts and caps, the two others were hired laborers in homespun\nshirts, one an old man, the other a young fellow. Moving off from the\nsteps, the old man went up to the horses and began unharnessing them.\n\n\"What have they been ploughing?\" asked Levin.\n\n\"Ploughing up the potatoes. We rent a bit of land too. Fedot, don't let\nout the gelding, but take it to the trough, and we'll put the other in\nharness.\"\n\n\"Oh, father, the ploughshares I ordered, has he brought them along?\"\nasked the big, healthy-looking fellow, obviously the old man's son.\n\n\"There ... in the outer room,\" answered the old man, bundling together\nthe harness he had taken off, and flinging it on the ground. \"You can\nput them on, while they have dinner.\"\n\nThe good-looking young woman came into the outer room with the full\npails dragging at her shoulders. More women came on the scene from\nsomewhere, young and handsome, middle-aged, old and ugly, with children\nand without children.\n\nThe samovar was beginning to sing; the laborers and the family, having\ndisposed of the horses, came in to dinner. Levin, getting his provisions\nout of his carriage, invited the old man to take tea with him.\n\n\"Well, I have had some today already,\" said the old man, obviously\naccepting the invitation with pleasure. \"But just a glass for company.\"\n\nOver their tea Levin heard all about the old man's farming. Ten years\nbefore, the old man had rented three hundred acres from the lady who\nowned them, and a year ago he had bought them and rented another three\nhundred from a neighboring landowner. A small part of the land--the\nworst part--he let out for rent, while a hundred acres of arable land he\ncultivated himself with his family and two hired laborers. The old man\ncomplained that things were doing badly. But Levin saw that he simply\ndid so from a feeling of propriety, and that his farm was in a\nflourishing condition. If it had been unsuccessful he would not have\nbought land at thirty-five roubles the acre, he would not have married\nhis three sons and a nephew, he would not have rebuilt twice after\nfires, and each time on a larger scale. In spite of the old man's\ncomplaints, it was evident that he was proud, and justly proud, of his\nprosperity, proud of his sons, his nephew, his sons' wives, his horses\nand his cows, and especially of the fact that he was keeping all this\nfarming going. From his conversation with the old man, Levin thought he\nwas not averse to new methods either. He had planted a great many\npotatoes, and his potatoes, as Levin had seen driving past, were already\npast flowering and beginning to die down, while Levin's were only just\ncoming into flower. He earthed up his potatoes with a modern plough\nborrowed from a neighboring landowner. He sowed wheat. The trifling fact\nthat, thinning out his rye, the old man used the rye he thinned out for\nhis horses, specially struck Levin. How many times had Levin seen this\nsplendid fodder wasted, and tried to get it saved; but always it had\nturned out to be impossible. The peasant got this done, and he could not\nsay enough in praise of it as food for the beasts.\n\n\"What have the wenches to do? They carry it out in bundles to the\nroadside, and the cart brings it away.\"\n\n\"Well, we landowners can't manage well with our laborers,\" said Levin,\nhanding him a glass of tea.\n\n\"Thank you,\" said the old man, and he took the glass, but refused sugar,\npointing to a lump he had left. \"They're simple destruction,\" said he.\n\"Look at Sviazhsky's, for instance. We know what the land's\nlike--first-rate, yet there's not much of a crop to boast of. It's not\nlooked after enough--that's all it is!\"\n\n\"But you work your land with hired laborers?\"\n\n\"We're all peasants together. We go into everything ourselves. If a\nman's no use, he can go, and we can manage by ourselves.\"\n\n\"Father, Finogen wants some tar,\" said the young woman in the clogs,\ncoming in.\n\n\"Yes, yes, that's how it is, sir!\" said the old man, getting up, and\ncrossing himself deliberately, he thanked Levin and went out.\n\nWhen Levin went into the kitchen to call his coachman he saw the whole\nfamily at dinner. The women were standing up waiting on them. The young,\nsturdy-looking son was telling something funny with his mouth full of\npudding, and they were all laughing, the woman in the clogs, who was\npouring cabbage soup into a bowl, laughing most merrily of all.\n\nVery probably the good-looking face of the young woman in the clogs had\na good deal to do with the impression of well-being this peasant\nhousehold made upon Levin, but the impression was so strong that Levin\ncould never get rid of it. And all the way from the old peasant's to\nSviazhsky's he kept recalling this peasant farm as though there were\nsomething in this impression that demanded his special attention.\n\n\n\nChapter 26\n\n\nSviazhsky was the marshal of his district. He was five years older than\nLevin, and had long been married. His sister-in-law, a young girl Levin\nliked very much, lived in his house; and Levin knew that Sviazhsky and\nhis wife would have greatly liked to marry the girl to him. He knew this\nwith certainty, as so-called eligible young men always know it, though\nhe could never have brought himself to speak of it to anyone; and he\nknew too that, although he wanted to get married, and although by every\ntoken this very attractive girl would make an excellent wife, he could\nno more have married her, even if he had not been in love with Kitty\nShtcherbatskaya, than he could have flown up to the sky. And this\nknowledge poisoned the pleasure he had hoped to find in the visit to\nSviazhsky.\n\nOn getting Sviazhsky's letter with the invitation for shooting, Levin\nhad immediately thought of this; but in spite of it he had made up his\nmind that Sviazhsky's having such views for him was simply his own\ngroundless supposition, and so he would go, all the same. Besides, at\nthe bottom of his heart he had a desire to try himself, put himself to\nthe test in regard to this girl. The Sviazhskys' home-life was\nexceedingly pleasant, and Sviazhsky himself, the best type of man taking\npart in local affairs that Levin knew, was very interesting to him.\n\nSviazhsky was one of those people, always a source of wonder to Levin,\nwhose convictions, very logical though never original, go one way by\nthemselves, while their life, exceedingly definite and firm in its\ndirection, goes its way quite apart and almost always in direct\ncontradiction to their convictions. Sviazhsky was an extremely advanced\nman. He despised the nobility, and believed the mass of the nobility to\nbe secretly in favor of serfdom, and only concealing their views from\ncowardice. He regarded Russia as a ruined country, rather after the\nstyle of Turkey, and the government of Russia as so bad that he never\npermitted himself to criticize its doings seriously, and yet he was a\nfunctionary of that government and a model marshal of nobility, and when\nhe drove about he always wore the cockade of office and the cap with the\nred band. He considered human life only tolerable abroad, and went\nabroad to stay at every opportunity, and at the same time he carried on\na complex and improved system of agriculture in Russia, and with extreme\ninterest followed everything and knew everything that was being done in\nRussia. He considered the Russian peasant as occupying a stage of\ndevelopment intermediate between the ape and the man, and at the same\ntime in the local assemblies no one was readier to shake hands with the\npeasants and listen to their opinion. He believed neither in God nor the\ndevil, but was much concerned about the question of the improvement of\nthe clergy and the maintenance of their revenues, and took special\ntrouble to keep up the church in his village.\n\nOn the woman question he was on the side of the extreme advocates of\ncomplete liberty for women, and especially their right to labor. But he\nlived with his wife on such terms that their affectionate childless home\nlife was the admiration of everyone, and arranged his wife's life so\nthat she did nothing and could do nothing but share her husband's\nefforts that her time should pass as happily and as agreeably as\npossible.\n\nIf it had not been a characteristic of Levin's to put the most favorable\ninterpretation on people, Sviazhsky's character would have presented no\ndoubt or difficulty to him: he would have said to himself, \"a fool or a\nknave,\" and everything would have seemed clear. But he could not say \"a\nfool,\" because Sviazhsky was unmistakably clever, and moreover, a highly\ncultivated man, who was exceptionally modest over his culture. There was\nnot a subject he knew nothing of. But he did not display his knowledge\nexcept when he was compelled to do so. Still less could Levin say that\nhe was a knave, as Sviazhsky was unmistakably an honest, good-hearted,\nsensible man, who worked good-humoredly, keenly, and perseveringly at\nhis work; he was held in high honor by everyone about him, and certainly\nhe had never consciously done, and was indeed incapable of doing,\nanything base.\n\nLevin tried to understand him, and could not understand him, and looked\nat him and his life as at a living enigma.\n\nLevin and he were very friendly, and so Levin used to venture to sound\nSviazhsky, to try to get at the very foundation of his view of life; but\nit was always in vain. Every time Levin tried to penetrate beyond the\nouter chambers of Sviazhsky's mind, which were hospitably open to all,\nhe noticed that Sviazhsky was slightly disconcerted; faint signs of\nalarm were visible in his eyes, as though he were afraid Levin would\nunderstand him, and he would give him a kindly, good-humored repulse.\n\nJust now, since his disenchantment with farming, Levin was particularly\nglad to stay with Sviazhsky. Apart from the fact that the sight of this\nhappy and affectionate couple, so pleased with themselves and everyone\nelse, and their well-ordered home had always a cheering effect on Levin,\nhe felt a longing, now that he was so dissatisfied with his own life, to\nget at that secret in Sviazhsky that gave him such clearness,\ndefiniteness, and good courage in life. Moreover, Levin knew that at\nSviazhsky's he should meet the landowners of the neighborhood, and it\nwas particularly interesting for him just now to hear and take part in\nthose rural conversations concerning crops, laborers' wages, and so on,\nwhich, he was aware, are conventionally regarded as something very low,\nbut which seemed to him just now to constitute the one subject of\nimportance. \"It was not, perhaps, of importance in the days of serfdom,\nand it may not be of importance in England. In both cases the conditions\nof agriculture are firmly established; but among us now, when everything\nhas been turned upside down and is only just taking shape, the question\nwhat form these conditions will take is the one question of importance\nin Russia,\" thought Levin.\n\nThe shooting turned out to be worse than Levin had expected. The marsh\nwas dry and there were no grouse at all. He walked about the whole day\nand only brought back three birds, but to make up for that--he brought\nback, as he always did from shooting, an excellent appetite, excellent\nspirits, and that keen, intellectual mood which with him always\naccompanied violent physical exertion. And while out shooting, when he\nseemed to be thinking of nothing at all, suddenly the old man and his\nfamily kept coming back to his mind, and the impression of them seemed\nto claim not merely his attention, but the solution of some question\nconnected with them.\n\nIn the evening at tea, two landowners who had come about some business\nconnected with a wardship were of the party, and the interesting\nconversation Levin had been looking forward to sprang up.\n\nLevin was sitting beside his hostess at the tea table, and was obliged\nto keep up a conversation with her and her sister, who was sitting\nopposite him. Madame Sviazhskaya was a round-faced, fair-haired, rather\nshort woman, all smiles and dimples. Levin tried through her to get a\nsolution of the weighty enigma her husband presented to his mind; but he\nhad not complete freedom of ideas, because he was in an agony of\nembarrassment. This agony of embarrassment was due to the fact that the\nsister-in-law was sitting opposite to him, in a dress, specially put on,\nas he fancied, for his benefit, cut particularly open, in the shape of a\ntrapeze, on her white bosom. This quadrangular opening, in spite of the\nbosom's being very white, or just because it was very white, deprived\nLevin of the full use of his faculties. He imagined, probably\nmistakenly, that this low-necked bodice had been made on his account,\nand felt that he had no right to look at it, and tried not to look at\nit; but he felt that he was to blame for the very fact of the low-necked\nbodice having been made. It seemed to Levin that he had deceived\nsomeone, that he ought to explain something, but that to explain it was\nimpossible, and for that reason he was continually blushing, was ill at\nease and awkward. His awkwardness infected the pretty sister-in-law too.\nBut their hostess appeared not to observe this, and kept purposely\ndrawing her into the conversation.\n\n\"You say,\" she said, pursuing the subject that had been started, \"that\nmy husband cannot be interested in what's Russian. It's quite the\ncontrary; he is always in cheerful spirits abroad, but not as he is\nhere. Here, he feels in his proper place. He has so much to do, and he\nhas the faculty of interesting himself in everything. Oh, you've not\nbeen to see our school, have you?\"\n\n\"I've seen it.... The little house covered with ivy, isn't it?\"\n\n\"Yes; that's Nastia's work,\" she said, indicating her sister.\n\n\"You teach in it yourself?\" asked Levin, trying to look above the open\nneck, but feeling that wherever he looked in that direction he should\nsee it.\n\n\"Yes; I used to teach in it myself, and do teach still, but we have a\nfirst-rate schoolmistress now. And we've started gymnastic exercises.\"\n\n\"No, thank you, I won't have any more tea,\" said Levin, and conscious of\ndoing a rude thing, but incapable of continuing the conversation, he got\nup, blushing. \"I hear a very interesting conversation,\" he added, and\nwalked to the other end of the table, where Sviazhsky was sitting with\nthe two gentlemen of the neighborhood. Sviazhsky was sitting sideways,\nwith one elbow on the table, and a cup in one hand, while with the other\nhand he gathered up his beard, held it to his nose and let it drop\nagain, as though he were smelling it. His brilliant black eyes were\nlooking straight at the excited country gentleman with gray whiskers,\nand apparently he derived amusement from his remarks. The gentleman was\ncomplaining of the peasants. It was evident to Levin that Sviazhsky knew\nan answer to this gentleman's complaints, which would at once demolish\nhis whole contention, but that in his position he could not give\nutterance to this answer, and listened, not without pleasure, to the\nlandowner's comic speeches.\n\nThe gentleman with the gray whiskers was obviously an inveterate\nadherent of serfdom and a devoted agriculturist, who had lived all his\nlife in the country. Levin saw proofs of this in his dress, in the\nold-fashioned threadbare coat, obviously not his everyday attire, in his\nshrewd, deep-set eyes, in his idiomatic, fluent Russian, in the\nimperious tone that had become habitual from long use, and in the\nresolute gestures of his large, red, sunburnt hands, with an old\nbetrothal ring on the little finger.\n\n\n\nChapter 27\n\n\n\"If I'd only the heart to throw up what's been set going ... such a lot\nof trouble wasted ... I'd turn my back on the whole business, sell up,\ngo off like Nikolay Ivanovitch ... to hear _La Belle Helene_,\" said the\nlandowner, a pleasant smile lighting up his shrewd old face.\n\n\"But you see you don't throw it up,\" said Nikolay Ivanovitch Sviazhsky;\n\"so there must be something gained.\"\n\n\"The only gain is that I live in my own house, neither bought nor hired.\nBesides, one keeps hoping the people will learn sense. Though, instead\nof that, you'd never believe it--the drunkenness, the immorality! They\nkeep chopping and changing their bits of land. Not a sight of a horse or\na cow. The peasant's dying of hunger, but just go and take him on as a\nlaborer, he'll do his best to do you a mischief, and then bring you up\nbefore the justice of the peace.\"\n\n\"But then you make complaints to the justice too,\" said Sviazhsky.\n\n\"I lodge complaints? Not for anything in the world! Such a talking, and\nsuch a to-do, that one would have cause to regret it. At the works, for\ninstance, they pocketed the advance-money and made off. What did the\njustice do? Why, acquitted them. Nothing keeps them in order but their\nown communal court and their village elder. He'll flog them in the good\nold style! But for that there'd be nothing for it but to give it all up\nand run away.\"\n\nObviously the landowner was chaffing Sviazhsky, who, far from resenting\nit, was apparently amused by it.\n\n\"But you see we manage our land without such extreme measures,\" said he,\nsmiling: \"Levin and I and this gentleman.\"\n\nHe indicated the other landowner.\n\n\"Yes, the thing's done at Mihail Petrovitch's, but ask him how it's\ndone. Do you call that a rational system?\" said the landowner, obviously\nrather proud of the word \"rational.\"\n\n\"My system's very simple,\" said Mihail Petrovitch, \"thank God. All my\nmanagement rests on getting the money ready for the autumn taxes, and\nthe peasants come to me, 'Father, master, help us!' Well, the peasants\nare all one's neighbors; one feels for them. So one advances them a\nthird, but one says: 'Remember, lads, I have helped you, and you must\nhelp me when I need it--whether it's the sowing of the oats, or the\nhaycutting, or the harvest'; and well, one agrees, so much for each\ntaxpayer--though there are dishonest ones among them too, it's true.\"\n\nLevin, who had long been familiar with these patriarchal methods,\nexchanged glances with Sviazhsky and interrupted Mihail Petrovitch,\nturning again to the gentleman with the gray whiskers.\n\n\"Then what do you think?\" he asked; \"what system is one to adopt\nnowadays?\"\n\n\"Why, manage like Mihail Petrovitch, or let the land for half the crop\nor for rent to the peasants; that one can do--only that's just how the\ngeneral prosperity of the country is being ruined. Where the land with\nserf-labor and good management gave a yield of nine to one, on the\nhalf-crop system it yields three to one. Russia has been ruined by the\nemancipation!\"\n\nSviazhsky looked with smiling eyes at Levin, and even made a faint\ngesture of irony to him; but Levin did not think the landowner's words\nabsurd, he understood them better than he did Sviazhsky. A great deal\nmore of what the gentleman with the gray whiskers said to show in what\nway Russia was ruined by the emancipation struck him indeed as very\ntrue, new to him, and quite incontestable. The landowner unmistakably\nspoke his own individual thought--a thing that very rarely happens--and\na thought to which he had been brought not by a desire of finding some\nexercise for an idle brain, but a thought which had grown up out of the\nconditions of his life, which he had brooded over in the solitude of his\nvillage, and had considered in every aspect.\n\n\"The point is, don't you see, that progress of every sort is only made\nby the use of authority,\" he said, evidently wishing to show he was not\nwithout culture. \"Take the reforms of Peter, of Catherine, of Alexander.\nTake European history. And progress in agriculture more than anything\nelse--the potato, for instance, that was introduced among us by force.\nThe wooden plough too wasn't always used. It was introduced maybe in the\ndays before the Empire, but it was probably brought in by force. Now, in\nour own day, we landowners in the serf times used various improvements\nin our husbandry: drying machines and thrashing machines, and carting\nmanure and all the modern implements--all that we brought into use by\nour authority, and the peasants opposed it at first, and ended by\nimitating us. Now, by the abolition of serfdom we have been deprived of\nour authority; and so our husbandry, where it had been raised to a high\nlevel, is bound to sink to the most savage primitive condition. That's\nhow I see it.\"\n\n\"But why so? If it's rational, you'll be able to keep up the same system\nwith hired labor,\" said Sviazhsky.\n\n\"We've no power over them. With whom am I going to work the system,\nallow me to ask?\"\n\n\"There it is--the labor force--the chief element in agriculture,\"\nthought Levin.\n\n\"With laborers.\"\n\n\"The laborers won't work well, and won't work with good implements. Our\nlaborer can do nothing but get drunk like a pig, and when he's drunk he\nruins everything you give him. He makes the horses ill with too much\nwater, cuts good harness, barters the tires of the wheels for drink,\ndrops bits of iron into the thrashing machine, so as to break it. He\nloathes the sight of anything that's not after his fashion. And that's\nhow it is the whole level of husbandry has fallen. Lands gone out of\ncultivation, overgrown with weeds, or divided among the peasants, and\nwhere millions of bushels were raised you get a hundred thousand; the\nwealth of the country has decreased. If the same thing had been done,\nbut with care that...\"\n\nAnd he proceeded to unfold his own scheme of emancipation by means of\nwhich these drawbacks might have been avoided.\n\nThis did not interest Levin, but when he had finished, Levin went back\nto his first position, and, addressing Sviazhsky, and trying to draw him\ninto expressing his serious opinion:-`\n\n\"That the standard of culture is falling, and that with our present\nrelations to the peasants there is no possibility of farming on a\nrational system to yield a profit--that's perfectly true,\" said he.\n\n\"I don't believe it,\" Sviazhsky replied quite seriously; \"all I see is\nthat we don't know how to cultivate the land, and that our system of\nagriculture in the serf days was by no means too high, but too low. We\nhave no machines, no good stock, no efficient supervision; we don't even\nknow how to keep accounts. Ask any landowner; he won't be able to tell\nyou what crop's profitable, and what's not.\"\n\n\"Italian bookkeeping,\" said the gentleman of the gray whiskers\nironically. \"You may keep your books as you like, but if they spoil\neverything for you, there won't be any profit.\"\n\n\"Why do they spoil things? A poor thrashing machine, or your Russian\npresser, they will break, but my steam press they don't break. A\nwretched Russian nag they'll ruin, but keep good dray-horses--they won't\nruin them. And so it is all round. We must raise our farming to a higher\nlevel.\"\n\n\"Oh, if one only had the means to do it, Nikolay Ivanovitch! It's all\nvery well for you; but for me, with a son to keep at the university,\nlads to be educated at the high school--how am I going to buy these\ndray-horses?\"\n\n\"Well, that's what the land banks are for.\"\n\n\"To get what's left me sold by auction? No, thank you.\"\n\n\"I don't agree that it's necessary or possible to raise the level of\nagriculture still higher,\" said Levin. \"I devote myself to it, and I\nhave means, but I can do nothing. As to the banks, I don't know to whom\nthey're any good. For my part, anyway, whatever I've spent money on in\nthe way of husbandry, it has been a loss: stock--a loss, machinery--a\nloss.\"\n\n\"That's true enough,\" the gentleman with the gray whiskers chimed in,\npositively laughing with satisfaction.\n\n\"And I'm not the only one,\" pursued Levin. \"I mix with all the\nneighboring landowners, who are cultivating their land on a rational\nsystem; they all, with rare exceptions, are doing so at a loss. Come,\ntell us how does your land do--does it pay?\" said Levin, and at once in\nSviazhsky's eyes he detected that fleeting expression of alarm which he\nhad noticed whenever he had tried to penetrate beyond the outer chambers\nof Sviazhsky's mind.\n\nMoreover, this question on Levin's part was not quite in good faith.\nMadame Sviazhskaya had just told him at tea that they had that summer\ninvited a German expert in bookkeeping from Moscow, who for a\nconsideration of five hundred roubles had investigated the management of\ntheir property, and found that it was costing them a loss of three\nthousand odd roubles. She did not remember the precise sum, but it\nappeared that the German had worked it out to the fraction of a\nfarthing.\n\nThe gray-whiskered landowner smiled at the mention of the profits of\nSviazhsky's famling, obviously aware how much gain his neighbor and\nmarshal was likely to be making.\n\n\"Possibly it does not pay,\" answered Sviazhsky. \"That merely proves\neither that I'm a bad manager, or that I've sunk my capital for the\nincrease of my rents.\"\n\n\"Oh, rent!\" Levin cried with horror. \"Rent there may be in Europe, where\nland has been improved by the labor put into it, but with us all the\nland is deteriorating from the labor put into it--in other words they're\nworking it out; so there's no question of rent.\"\n\n\"How no rent? It's a law.\"\n\n\"Then we're outside the law; rent explains nothing for us, but simply\nmuddles us. No, tell me how there can be a theory of rent?...\"\n\n\"Will you have some junket? Masha, pass us some junket or raspberries.\"\nHe turned to his wife. \"Extraordinarily late the raspberries are lasting\nthis year.\"\n\nAnd in the happiest frame of mind Sviazhsky got up and walked off,\napparently supposing the conversation to have ended at the very point\nwhen to Levin it seemed that it was only just beginning.\n\nHaving lost his antagonist, Levin continued the conversation with the\ngray-whiskered landowner, trying to prove to him that all the difficulty\narises from the fact that we don't find out the peculiarities and habits\nof our laborer; but the landowner, like all men who think independently\nand in isolation, was slow in taking in any other person's idea, and\nparticularly partial to his own. He stuck to it that the Russian peasant\nis a swine and likes swinishness, and that to get him out of his\nswinishness one must have authority, and there is none; one must have\nthe stick, and we have become so liberal that we have all of a sudden\nreplaced the stick that served us for a thousand years by lawyers and\nmodel prisons, where the worthless, stinking peasant is fed on good soup\nand has a fixed allowance of cubic feet of air.\n\n\"What makes you think,\" said Levin, trying to get back to the question,\n\"that it's impossible to find some relation to the laborer in which the\nlabor would become productive?\"\n\n\"That never could be so with the Russian peasantry; we've no power over\nthem,\" answered the landowner.\n\n\"How can new conditions be found?\" said Sviazhsky. Having eaten some\njunket and lighted a cigarette, he came back to the discussion. \"All\npossible relations to the labor force have been defined and studied,\" he\nsaid. \"The relic of barbarism, the primitive commune with each guarantee\nfor all, will disappear of itself; serfdom has been abolished--there\nremains nothing but free labor, and its forms are fixed and ready made,\nand must be adopted. Permanent hands, day-laborers, rammers--you can't\nget out of those forms.\"\n\n\"But Europe is dissatisfied with these forms.\"\n\n\"Dissatisfied, and seeking new ones. And will find them, in all\nprobability.\"\n\n\"That's just what I was meaning,\" answered Levin. \"Why shouldn't we seek\nthem for ourselves?\"\n\n\"Because it would be just like inventing afresh the means for\nconstructing railways. They are ready, invented.\"\n\n\"But if they don't do for us, if they're stupid?\" said Levin.\n\nAnd again he detected the expression of alarm in the eyes of Sviazhsky.\n\n\"Oh, yes; we'll bury the world under our caps! We've found the secret\nEurope was seeking for! I've heard all that; but, excuse me, do you know\nall that's been done in Europe on the question of the organization of\nlabor?\"\n\n\"No, very little.\"\n\n\"That question is now absorbing the best minds in Europe. The\nSchulze-Delitsch movement.... And then all this enormous literature of\nthe labor question, the most liberal Lassalle movement ... the Mulhausen\nexperiment? That's a fact by now, as you're probably aware.\"\n\n\"I have some idea of it, but very vague.\"\n\n\"No, you only say that; no doubt you know all about it as well as I do.\nI'm not a professor of sociology, of course, but it interested me, and\nreally, if it interests you, you ought to study it.\"\n\n\"But what conclusion have they come to?\"\n\n\"Excuse me...\"\n\nThe two neighbors had risen, and Sviazhsky, once more checking Levin in\nhis inconvenient habit of peeping into what was beyond the outer\nchambers of his mind, went to see his guests out.\n\n\n\nChapter 28\n\n\nLevin was insufferably bored that evening with the ladies; he was\nstirred as he had never been before by the idea that the dissatisfaction\nhe was feeling with his system of managing his land was not an\nexceptional case, but the general condition of things in Russia; that\nthe organization of some relation of the laborers to the soil in which\nthey would work, as with the peasant he had met half-way to the\nSviazhskys', was not a dream, but a problem which must be solved. And it\nseemed to him that the problem could be solved, and that he ought to try\nand solve it.\n\nAfter saying good-night to the ladies, and promising to stay the whole\nof the next day, so as to make an expedition on horseback with them to\nsee an interesting ruin in the crown forest, Levin went, before going to\nbed, into his host's study to get the books on the labor question that\nSviazhsky had offered him. Sviazhsky's study was a huge room, surrounded\nby bookcases and with two tables in it--one a massive writing table,\nstanding in the middle of the room, and the other a round table, covered\nwith recent numbers of reviews and journals in different languages,\nranged like the rays of a star round the lamp. On the writing table was\na stand of drawers marked with gold lettering, and full of papers of\nvarious sorts.\n\nSviazhsky took out the books, and sat down in a rocking-chair.\n\n\"What are you looking at there?\" he said to Levin, who was standing at\nthe round table looking through the reviews.\n\n\"Oh, yes, there's a very interesting article here,\" said Sviazhsky of\nthe review Levin was holding in his hand. \"It appears,\" he went on, with\neager interest, \"that Friedrich was not, after all, the person chiefly\nresponsible for the partition of Poland. It is proved...\"\n\nAnd with his characteristic clearness, he summed up those new, very\nimportant, and interesting revelations. Although Levin was engrossed at\nthe moment by his ideas about the problem of the land, he wondered, as\nhe heard Sviazhsky: \"What is there inside of him? And why, why is he\ninterested in the partition of Poland?\" When Sviazhsky had finished,\nLevin could not help asking: \"Well, and what then?\" But there was\nnothing to follow. It was simply interesting that it had been proved to\nbe so and so. But Sviazhsky did not explain, and saw no need to explain\nwhy it was interesting to him.\n\n\"Yes, but I was very much interested by your irritable neighbor,\" said\nLevin, sighing. \"He's a clever fellow, and said a lot that was true.\"\n\n\"Oh, get along with you! An inveterate supporter of serfdom at heart,\nlike all of them!\" said Sviazhsky.\n\n\"Whose marshal you are.\"\n\n\"Yes, only I marshal them in the other direction,\" said Sviazhsky,\nlaughing.\n\n\"I'll tell you what interests me very much,\" said Levin. \"He's right\nthat our system, that's to say of rational farming, doesn't answer, that\nthe only thing that answers is the money-lender system, like that\nmeek-looking gentleman's, or else the very simplest.... Whose fault is\nit?\"\n\n\"Our own, of course. Besides, it's not true that it doesn't answer. It\nanswers with Vassiltchikov.\"\n\n\"A factory...\"\n\n\"But I really don't know what it is you are surprised at. The people are\nat such a low stage of rational and moral development, that it's obvious\nthey're bound to oppose everything that's strange to them. In Europe, a\nrational system answers because the people are educated; it follows that\nwe must educate the people--that's all.\"\n\n\"But how are we to educate the people?\"\n\n\"To educate the people three things are needed: schools, and schools,\nand schools.\n\n\"But you said yourself the people are at such a low stage of material\ndevelopment: what help are schools for that?\"\n\n\"Do you know, you remind me of the story of the advice given to the sick\nman--You should try purgative medicine. Taken: worse. Try leeches. Tried\nthem: worse. Well, then, there's nothing left but to pray to God. Tried\nit: worse. That's just how it is with us. I say political economy; you\nsay--worse. I say socialism: worse. Education: worse.\"\n\n\"But how do schools help matters?\"\n\n\"They give the peasant fresh wants.\"\n\n\"Well, that's a thing I've never understood,\" Levin replied with heat.\n\"In what way are schools going to help the people to improve their\nmaterial position? You say schools, education, will give them fresh\nwants. So much the worse, since they won't be capable of satisfying\nthem. And in what way a knowledge of addition and subtraction and the\ncatechism is going to improve their material condition, I never could\nmake out. The day before yesterday, I met a peasant woman in the evening\nwith a little baby, and asked her where she was going. She said she was\ngoing to the wise woman; her boy had screaming fits, so she was taking\nhim to be doctored. I asked, 'Why, how does the wise woman cure\nscreaming fits?' 'She puts the child on the hen-roost and repeats some\ncharm....'\"\n\n\"Well, you're saying it yourself! What's wanted to prevent her taking\nher child to the hen-roost to cure it of screaming fits is just...\"\nSviazhsky said, smiling good-humoredly.\n\n\"Oh, no!\" said Levin with annoyance; \"that method of doctoring I merely\nmeant as a simile for doctoring the people with schools. The people are\npoor and ignorant--that we see as surely as the peasant woman sees the\nbaby is ill because it screams. But in what way this trouble of poverty\nand ignorance is to be cured by schools is as incomprehensible as how\nthe hen-roost affects the screaming. What has to be cured is what makes\nhim poor.\"\n\n\"Well, in that, at least, you're in agreement with Spencer, whom you\ndislike so much. He says, too, that education may be the consequence of\ngreater prosperity and comfort, of more frequent washing, as he says,\nbut not of being able to read and write...\"\n\n\"Well, then, I'm very glad--or the contrary, very sorry, that I'm in\nagreement with Spencer; only I've known it a long while. Schools can do\nno good; what will do good is an economic organization in which the\npeople will become richer, will have more leisure--and then there will\nbe schools.\"\n\n\"Still, all over Europe now schools are obligatory.\"\n\n\"And how far do you agree with Spencer yourself about it?\" asked Levin.\n\nBut there was a gleam of alarm in Sviazhsky's eyes, and he said smiling:\n\n\"No; that screaming story is positively capital! Did you really hear it\nyourself?\"\n\nLevin saw that he was not to discover the connection between this man's\nlife and his thoughts. Obviously he did not care in the least what his\nreasoning led him to; all he wanted was the process of reasoning. And he\ndid not like it when the process of reasoning brought him into a blind\nalley. That was the only thing he disliked, and avoided by changing the\nconversation to something agreeable and amusing.\n\nAll the impressions of the day, beginning with the impression made by\nthe old peasant, which served, as it were, as the fundamental basis of\nall the conceptions and ideas of the day, threw Levin into violent\nexcitement. This dear good Sviazhsky, keeping a stock of ideas simply\nfor social purposes, and obviously having some other principles hidden\nfrom Levin, while with the crowd, whose name is legion, he guided public\nopinion by ideas he did not share; that irascible country gentleman,\nperfectly correct in the conclusions that he had been worried into by\nlife, but wrong in his exasperation against a whole class, and that the\nbest class in Russia; his own dissatisfaction with the work he had been\ndoing, and the vague hope of finding a remedy for all this--all was\nblended in a sense of inward turmoil, and anticipation of some solution\nnear at hand.\n\nLeft alone in the room assigned him, lying on a spring mattress that\nyielded unexpectedly at every movement of his arm or his leg, Levin did\nnot fall asleep for a long while. Not one conversation with Sviazhsky,\nthough he had said a great deal that was clever, had interested Levin;\nbut the conclusions of the irascible landowner required consideration.\nLevin could not help recalling every word he had said, and in\nimagination amending his own replies.\n\n\"Yes, I ought to have said to him: You say that our husbandry does not\nanswer because the peasant hates improvements, and that they must be\nforced on him by authority. If no system of husbandry answered at all\nwithout these improvements, you would be quite right. But the only\nsystem that does answer is where laborer is working in accordance with\nhis habits, just as on the old peasant's land half-way here. Your and\nour general dissatisfaction with the system shows that either we are to\nblame or the laborers. We have gone our way--the European way--a long\nwhile, without asking ourselves about the qualities of our labor force.\nLet us try to look upon the labor force not as an abstract force, but as\nthe _Russian peasant_ with his instincts, and we shall arrange our\nsystem of culture in accordance with that. Imagine, I ought to have said\nto him, that you have the same system as the old peasant has, that you\nhave found means of making your laborers take an interest in the success\nof the work, and have found the happy mean in the way of improvements\nwhich they will admit, and you will, without exhausting the soil, get\ntwice or three times the yield you got before. Divide it in halves, give\nhalf as the share of labor, the surplus left you will be greater, and\nthe share of labor will be greater too. And to do this one must lower\nthe standard of husbandry and interest the laborers in its success. How\nto do this?--that's a matter of detail; but undoubtedly it can be done.\"\n\nThis idea threw Levin into a great excitement. He did not sleep half the\nnight, thinking over in detail the putting of his idea into practice. He\nhad not intended to go away next day, but he now determined to go home\nearly in the morning. Besides, the sister-in-law with her low-necked\nbodice aroused in him a feeling akin to shame and remorse for some\nutterly base action. Most important of all--he must get back without\ndelay: he would have to make haste to put his new project to the\npeasants before the sowing of the winter wheat, so that the sowing might\nbe undertaken on a new basis. He had made up his mind to revolutionize\nhis whole system.\n\n\n\nChapter 29\n\n\nThe carrying out of Levin's plan presented many difficulties; but he\nstruggled on, doing his utmost, and attained a result which, though not\nwhat he desired, was enough to enable him, without self-deception, to\nbelieve that the attempt was worth the trouble. One of the chief\ndifficulties was that the process of cultivating the land was in full\nswing, that it was impossible to stop everything and begin it all again\nfrom the beginning, and the machine had to be mended while in motion.\n\nWhen on the evening that he arrived home he informed the bailiff of his\nplans, the latter with visible pleasure agreed with what he said so long\nas he was pointing out that all that had been done up to that time was\nstupid and useless. The bailiff said that he had said so a long while\nago, but no heed had been paid him. But as for the proposal made by\nLevin--to take a part as shareholder with his laborers in each\nagricultural undertaking--at this the bailiff simply expressed a\nprofound despondency, and offered no definite opinion, but began\nimmediately talking of the urgent necessity of carrying the remaining\nsheaves of rye the next day, and of sending the men out for the second\nploughing, so that Levin felt that this was not the time for discussing\nit.\n\nOn beginning to talk to the peasants about it, and making a proposition\nto cede them the land on new terms, he came into collision with the same\ngreat difficulty that they were so much absorbed by the current work of\nthe day, that they had not time to consider the advantages and\ndisadvantages of the proposed scheme.\n\nThe simple-hearted Ivan, the cowherd, seemed completely to grasp Levin's\nproposal--that he should with his family take a share of the profits of\nthe cattle-yard--and he was in complete sympathy with the plan. But when\nLevin hinted at the future advantages, Ivan's face expressed alarm and\nregret that he could not hear all he had to say, and he made haste to\nfind himself some task that would admit of no delay: he either snatched\nup the fork to pitch the hay out of the pens, or ran to get water or to\nclear out the dung.\n\nAnother difficulty lay in the invincible disbelief of the peasant that a\nlandowner's object could be anything else than a desire to squeeze all\nhe could out of them. They were firmly convinced that his real aim\n(whatever he might say to them) would always be in what he did not say\nto them. And they themselves, in giving their opinion, said a great deal\nbut never said what was their real object. Moreover (Levin felt that the\nirascible landowner had been right) the peasants made their first and\nunalterable condition of any agreement whatever that they should not be\nforced to any new methods of tillage of any kind, nor to use new\nimplements. They agreed that the modern plough ploughed better, that the\nscarifier did the work more quickly, but they found thousands of reasons\nthat made it out of the question for them to use either of them; and\nthough he had accepted the conviction that he would have to lower the\nstandard of cultivation, he felt sorry to give up improved methods, the\nadvantages of which were so obvious. But in spite of all these\ndifficulties he got his way, and by autumn the system was working, or at\nleast so it seemed to him.\n\nAt first Levin had thought of giving up the whole farming of the land\njust as it was to the peasants, the laborers, and the bailiff on new\nconditions of partnership; but he was very soon convinced that this was\nimpossible, and determined to divide it up. The cattle-yard, the garden,\nhay fields, and arable land, divided into several parts, had to be made\ninto separate lots. The simple-hearted cowherd, Ivan, who, Levin\nfancied, understood the matter better than any of them, collecting\ntogether a gang of workers to help him, principally of his own family,\nbecame a partner in the cattle-yard. A distant part of the estate, a\ntract of waste land that had lain fallow for eight years, was with the\nhelp of the clever carpenter, Fyodor Ryezunov, taken by six families of\npeasants on new conditions of partnership, and the peasant Shuraev took\nthe management of all the vegetable gardens on the same terms. The\nremainder of the land was still worked on the old system, but these\nthree associated partnerships were the first step to a new organization\nof the whole, and they completely took up Levin's time.\n\nIt is true that in the cattle-yard things went no better than before,\nand Ivan strenuously opposed warm housing for the cows and butter made\nof fresh cream, affirming that cows require less food if kept cold, and\nthat butter is more profitable made from sour cream, and he asked for\nwages just as under the old system, and took not the slightest interest\nin the fact that the money he received was not wages but an advance out\nof his future share in the profits.\n\nIt is true that Fyodor Ryezunov's company did not plough over the ground\ntwice before sowing, as had been agreed, justifying themselves on the\nplea that the time was too short. It is true that the peasants of the\nsame company, though they had agreed to work the land on new conditions,\nalways spoke of the land, not as held in partnership, but as rented for\nhalf the crop, and more than once the peasants and Ryezunov himself said\nto Levin, \"If you would take a rent for the land, it would save you\ntrouble, and we should be more free.\" Moreover the same peasants kept\nputting off, on various excuses, the building of a cattleyard and barn\non the land as agreed upon, and delayed doing it till the winter.\n\nIt is true that Shuraev would have liked to let out the kitchen gardens\nhe had undertaken in small lots to the peasants. He evidently quite\nmisunderstood, and apparently intentionally misunderstood, the\nconditions upon which the land had been given to him.\n\nOften, too, talking to the peasants and explaining to them all the\nadvantages of the plan, Levin felt that the peasants heard nothing but\nthe sound of his voice, and were firmly resolved, whatever he might say,\nnot to let themselves be taken in. He felt this especially when he\ntalked to the cleverest of the peasants, Ryezunov, and detected the\ngleam in Ryezunov's eyes which showed so plainly both ironical amusement\nat Levin, and the firm conviction that, if any one were to be taken in,\nit would not be he, Ryezunov. But in spite of all this Levin thought the\nsystem worked, and that by keeping accounts strictly and insisting on\nhis own way, he would prove to them in the future the advantages of the\narrangement, and then the system would go of itself.\n\nThese matters, together with the management of the land still left on\nhis hands, and the indoor work over his book, so engrossed Levin the\nwhole summer that he scarcely ever went out shooting. At the end of\nAugust he heard that the Oblonskys had gone away to Moscow, from their\nservant who brought back the side-saddle. He felt that in not answering\nDarya Alexandrovna's letter he had by his rudeness, of which he could\nnot think without a flush of shame, burned his ships, and that he would\nnever go and see them again. He had been just as rude with the\nSviazhskys, leaving them without saying good-bye. But he would never go\nto see them again either. He did not care about that now. The business\nof reorganizing the farming of his land absorbed him as completely as\nthough there would never be anything else in his life. He read the books\nlent him by Sviazhsky, and copying out what he had not got, he read both\nthe economic and socialistic books on the subject, but, as he had\nanticipated, found nothing bearing on the scheme he had undertaken. In\nthe books on political economy--in Mill, for instance, whom he studied\nfirst with great ardor, hoping every minute to find an answer to the\nquestions that were engrossing him--he found laws deduced from the\ncondition of land culture in Europe; but he did not see why these laws,\nwhich did not apply in Russia, must be general. He saw just the same\nthing in the socialistic books: either they were the beautiful but\nimpracticable fantasies which had fascinated him when he was a student,\nor they were attempts at improving, rectifying the economic position in\nwhich Europe was placed, with which the system of land tenure in Russia\nhad nothing in common. Political economy told him that the laws by which\nthe wealth of Europe had been developed, and was developing, were\nuniversal and unvarying. Socialism told him that development along these\nlines leads to ruin. And neither of them gave an answer, or even a hint,\nin reply to the question what he, Levin, and all the Russian peasants\nand landowners, were to do with their millions of hands and millions of\nacres, to make them as productive as possible for the common weal.\n\nHaving once taken the subject up, he read conscientiously everything\nbearing on it, and intended in the autumn to go abroad to study land\nsystems on the spot, in order that he might not on this question be\nconfronted with what so often met him on various subjects. Often, just\nas he was beginning to understand the idea in the mind of anyone he was\ntalking to, and was beginning to explain his own, he would suddenly be\ntold: \"But Kauffmann, but Jones, but Dubois, but Michelli? You haven't\nread them: they've thrashed that question out thoroughly.\"\n\nHe saw now distinctly that Kauffmann and Michelli had nothing to tell\nhim. He knew what he wanted. He saw that Russia has splendid land,\nsplendid laborers, and that in certain cases, as at the peasant's on the\nway to Sviazhsky's, the produce raised by the laborers and the land is\ngreat--in the majority of cases when capital is applied in the European\nway the produce is small, and that this simply arises from the fact that\nthe laborers want to work and work well only in their own peculiar way,\nand that this antagonism is not incidental but invariable, and has its\nroots in the national spirit. He thought that the Russian people whose\ntask it was to colonize and cultivate vast tracts of unoccupied land,\nconsciously adhered, till all their land was occupied, to the methods\nsuitable to their purpose, and that their methods were by no means so\nbad as was generally supposed. And he wanted to prove this theoretically\nin his book and practically on his land.\n\n\n\nChapter 30\n\n\nAt the end of September the timber had been carted for building the\ncattleyard on the land that had been allotted to the association of\npeasants, and the butter from the cows was sold and the profits divided.\nIn practice the system worked capitally, or, at least, so it seemed to\nLevin. In order to work out the whole subject theoretically and to\ncomplete his book, which, in Levin's daydreams, was not merely to effect\na revolution in political economy, but to annihilate that science\nentirely and to lay the foundation of a new science of the relation of\nthe people to the soil, all that was left to do was to make a tour\nabroad, and to study on the spot all that had been done in the same\ndirection, and to collect conclusive evidence that all that had been\ndone there was not what was wanted. Levin was only waiting for the\ndelivery of his wheat to receive the money for it and go abroad. But the\nrains began, preventing the harvesting of the corn and potatoes left in\nthe fields, and putting a stop to all work, even to the delivery of the\nwheat.\n\nThe mud was impassable along the roads; two mills were carried away, and\nthe weather got worse and worse.\n\nOn the 30th of September the sun came out in the morning, and hoping for\nfine weather, Levin began making final preparations for his journey. He\ngave orders for the wheat to be delivered, sent the bailiff to the\nmerchant to get the money owing him, and went out himself to give some\nfinal directions on the estate before setting off.\n\nHaving finished all his business, soaked through with the streams of\nwater which kept running down the leather behind his neck and his\ngaiters, but in the keenest and most confident temper, Levin returned\nhomewards in the evening. The weather had become worse than ever towards\nevening; the hail lashed the drenched mare so cruelly that she went\nalong sideways, shaking her head and ears; but Levin was all right under\nhis hood, and he looked cheerfully about him at the muddy streams\nrunning under the wheels, at the drops hanging on every bare twig, at\nthe whiteness of the patch of unmelted hailstones on the planks of the\nbridge, at the thick layer of still juicy, fleshy leaves that lay heaped\nup about the stripped elm-tree. In spite of the gloominess of nature\naround him, he felt peculiarly eager. The talks he had been having with\nthe peasants in the further village had shown that they were beginning\nto get used to their new position. The old servant to whose hut he had\ngone to get dry evidently approved of Levin's plan, and of his own\naccord proposed to enter the partnership by the purchase of cattle.\n\n\"I have only to go stubbornly on towards my aim, and I shall attain my\nend,\" thought Levin; \"and it's something to work and take trouble for.\nThis is not a matter of myself individually; the question of the public\nwelfare comes into it. The whole system of culture, the chief element in\nthe condition of the people, must be completely transformed. Instead of\npoverty, general prosperity and content; instead of hostility, harmony\nand unity of interests. In short, a bloodless revolution, but a\nrevolution of the greatest magnitude, beginning in the little circle of\nour district, then the province, then Russia, the whole world. Because a\njust idea cannot but be fruitful. Yes, it's an aim worth working for.\nAnd its being me, Kostya Levin, who went to a ball in a black tie, and\nwas refused by the Shtcherbatskaya girl, and who was intrinsically such\na pitiful, worthless creature--that proves nothing; I feel sure Franklin\nfelt just as worthless, and he too had no faith in himself, thinking of\nhimself as a whole. That means nothing. And he too, most likely, had an\nAgafea Mihalovna to whom he confided his secrets.\"\n\nMusing on such thoughts Levin reached home in the darkness.\n\nThe bailiff, who had been to the merchant, had come back and brought\npart of the money for the wheat. An agreement had been made with the old\nservant, and on the road the bailiff had learned that everywhere the\ncorn was still standing in the fields, so that his one hundred and sixty\nshocks that had not been carried were nothing in comparison with the\nlosses of others.\n\nAfter dinner Levin was sitting, as he usually did, in an easy chair with\na book, and as he read he went on thinking of the journey before him in\nconnection with his book. Today all the significance of his book rose\nbefore him with special distinctness, and whole periods ranged\nthemselves in his mind in illustration of his theories. \"I must write\nthat down,\" he thought. \"That ought to form a brief introduction, which\nI thought unnecessary before.\" He got up to go to his writing table, and\nLaska, lying at his feet, got up too, stretching and looking at him as\nthough to inquire where to go. But he had not time to write it down, for\nthe head peasants had come round, and Levin went out into the hall to\nthem.\n\nAfter his levee, that is to say, giving directions about the labors of\nthe next day, and seeing all the peasants who had business with him,\nLevin went back to his study and sat down to work.\n\nLaska lay under the table; Agafea Mihalovna settled herself in her place\nwith her stocking.\n\nAfter writing for a little while, Levin suddenly thought with\nexceptional vividness of Kitty, her refusal, and their last meeting. He\ngot up and began walking about the room.\n\n\"What's the use of being dreary?\" said Agafea Mihalovna. \"Come, why do\nyou stay on at home? You ought to go to some warm springs, especially\nnow you're ready for the journey.\"\n\n\"Well, I am going away the day after tomorrow, Agafea Mihalovna; I must\nfinish my work.\"\n\n\"There, there, your work, you say! As if you hadn't done enough for the\npeasants! Why, as 'tis, they're saying, 'Your master will be getting\nsome honor from the Tsar for it.' Indeed and it is a strange thing; why\nneed you worry about the peasants?\"\n\n\"I'm not worrying about them; I'm doing it for my own good.\"\n\nAgafea Mihalovna knew every detail of Levin's plans for his land. Levin\noften put his views before her in all their complexity, and not\nuncommonly he argued with her and did not agree with her comments. But\non this occasion she entirely misinterpreted what he had said.\n\n\"Of one's soul's salvation we all know and must think before all else,\"\nshe said with a sigh. \"Parfen Denisitch now, for all he was no scholar,\nhe died a death that God grant every one of us the like,\" she said,\nreferring to a servant who had died recently. \"Took the sacrament and\nall.\"\n\n\"That's not what I mean,\" said he. \"I mean that I'm acting for my own\nadvantage. It's all the better for me if the peasants do their work\nbetter.\"\n\n\"Well, whatever you do, if he's a lazy good-for-nought, everything'll be\nat sixes and sevens. If he has a conscience, he'll work, and if not,\nthere's no doing anything.\"\n\n\"Oh, come, you say yourself Ivan has begun looking after the cattle\nbetter.\"\n\n\"All I say is,\" answered Agafea Mihalovna, evidently not speaking at\nrandom, but in strict sequence of idea, \"that you ought to get married,\nthat's what I say.\"\n\nAgafea Mihalovna's allusion to the very subject he had only just been\nthinking about, hurt and stung him. Levin scowled, and without answering\nher, he sat down again to his work, repeating to himself all that he had\nbeen thinking of the real significance of that work. Only at intervals\nhe listened in the stillness to the click of Agafea Mihalovna's needles,\nand recollecting what he did not want to remember, he frowned again.\n\nAt nine o'clock they heard the bell and the faint vibration of a\ncarriage over the mud.\n\n\"Well, here's visitors come to us, and you won't be dull,\" said Agafea\nMihalovna, getting up and going to the door. But Levin overtook her. His\nwork was not going well now, and he was glad of a visitor, whoever it\nmight be.\n\n\n\nChapter 31\n\n\nRunning halfway down the staircase, Levin caught a sound he knew, a\nfamiliar cough in the hall. But he heard it indistinctly through the\nsound of his own footsteps, and hoped he was mistaken. Then he caught\nsight of a long, bony, familiar figure, and now it seemed there was no\npossibility of mistake; and yet he still went on hoping that this tall\nman taking off his fur cloak and coughing was not his brother Nikolay.\n\nLevin loved his brother, but being with him was always a torture. Just\nnow, when Levin, under the influence of the thoughts that had come to\nhim, and Agafea Mihalovna's hint, was in a troubled and uncertain humor,\nthe meeting with his brother that he had to face seemed particularly\ndifficult. Instead of a lively, healthy visitor, some outsider who\nwould, he hoped, cheer him up in his uncertain humor, he had to see his\nbrother, who knew him through and through, who would call forth all the\nthoughts nearest his heart, would force him to show himself fully. And\nthat he was not disposed to do.\n\nAngry with himself for so base a feeling, Levin ran into the hall; as\nsoon as he had seen his brother close, this feeling of selfish\ndisappointment vanished instantly and was replaced by pity. Terrible as\nhis brother Nikolay had been before in his emaciation and sickliness,\nnow he looked still more emaciated, still more wasted. He was a skeleton\ncovered with skin.\n\nHe stood in the hall, jerking his long thin neck, and pulling the scarf\noff it, and smiled a strange and pitiful smile. When he saw that smile,\nsubmissive and humble, Levin felt something clutching at his throat.\n\n\"You see, I've come to you,\" said Nikolay in a thick voice, never for\none second taking his eyes off his brother's face. \"I've been meaning to\na long while, but I've been unwell all the time. Now I'm ever so much\nbetter,\" he said, rubbing his beard with his big thin hands.\n\n\"Yes, yes!\" answered Levin. And he felt still more frightened when,\nkissing him, he felt with his lips the dryness of his brother's skin and\nsaw close to him his big eyes, full of a strange light.\n\nA few weeks before, Konstantin Levin had written to his brother that\nthrough the sale of the small part of the property, that had remained\nundivided, there was a sum of about two thousand roubles to come to him\nas his share.\n\nNikolay said that he had come now to take this money and, what was more\nimportant, to stay a while in the old nest, to get in touch with the\nearth, so as to renew his strength like the heroes of old for the work\nthat lay before him. In spite of his exaggerated stoop, and the\nemaciation that was so striking from his height, his movements were as\nrapid and abrupt as ever. Levin led him into his study.\n\nHis brother dressed with particular care--a thing he never used to\ndo--combed his scanty, lank hair, and, smiling, went upstairs.\n\nHe was in the most affectionate and good-humored mood, just as Levin\noften remembered him in childhood. He even referred to Sergey Ivanovitch\nwithout rancor. When he saw Agafea Mihalovna, he made jokes with her and\nasked after the old servants. The news of the death of Parfen Denisitch\nmade a painful impression on him. A look of fear crossed his face, but\nhe regained his serenity immediately.\n\n\"Of course he was quite old,\" he said, and changed the subject. \"Well,\nI'll spend a month or two with you, and then I'm off to Moscow. Do you\nknow, Myakov has promised me a place there, and I'm going into the\nservice. Now I'm going to arrange my life quite differently,\" he went\non. \"You know I got rid of that woman.\"\n\n\"Marya Nikolaevna? Why, what for?\"\n\n\"Oh, she was a horrid woman! She caused me all sorts of worries.\" But he\ndid not say what the annoyances were. He could not say that he had cast\noff Marya Nikolaevna because the tea was weak, and, above all, because\nshe would look after him, as though he were an invalid.\n\n\"Besides, I want to turn over a new leaf completely now. I've done silly\nthings, of course, like everyone else, but money's the last\nconsideration; I don't regret it. So long as there's health, and my\nhealth, thank God, is quite restored.\"\n\nLevin listened and racked his brains, but could think of nothing to say.\nNikolay probably felt the same; he began questioning his brother about\nhis affairs; and Levin was glad to talk about himself, because then he\ncould speak without hypocrisy. He told his brother of his plans and his\ndoings.\n\nHis brother listened, but evidently he was not interested by it.\n\nThese two men were so akin, so near each other, that the slightest\ngesture, the tone of voice, told both more than could be said in words.\n\nBoth of them now had only one thought--the illness of Nikolay and the\nnearness of his death--which stifled all else. But neither of them dared\nto speak of it, and so whatever they said--not uttering the one thought\nthat filled their minds--was all falsehood. Never had Levin been so glad\nwhen the evening was over and it was time to go to bed. Never with any\noutside person, never on any official visit had he been so unnatural and\nfalse as he was that evening. And the consciousness of this\nunnaturalness, and the remorse he felt at it, made him even more\nunnatural. He wanted to weep over his dying, dearly loved brother, and\nhe had to listen and keep on talking of how he meant to live.\n\nAs the house was damp, and only one bedroom had been kept heated, Levin\nput his brother to sleep in his own bedroom behind a screen.\n\nHis brother got into bed, and whether he slept or did not sleep, tossed\nabout like a sick man, coughed, and when he could not get his throat\nclear, mumbled something. Sometimes when his breathing was painful, he\nsaid, \"Oh, my God!\" Sometimes when he was choking he muttered angrily,\n\"Ah, the devil!\" Levin could not sleep for a long while, hearing him.\nHis thoughts were of the most various, but the end of all his thoughts\nwas the same--death. Death, the inevitable end of all, for the first\ntime presented itself to him with irresistible force. And death, which\nwas here in this loved brother, groaning half asleep and from habit\ncalling without distinction on God and the devil, was not so remote as\nit had hitherto seemed to him. It was in himself too, he felt that. If\nnot today, tomorrow, if not tomorrow, in thirty years, wasn't it all the\nsame! And what was this inevitable death--he did not know, had never\nthought about it, and what was more, had not the power, had not the\ncourage to think about it.\n\n\"I work, I want to do something, but I had forgotten it must all end; I\nhad forgotten--death.\"\n\nHe sat on his bed in the darkness, crouched up, hugging his knees, and\nholding his breath from the strain of thought, he pondered. But the more\nintensely he thought, the clearer it became to him that it was\nindubitably so, that in reality, looking upon life, he had forgotten one\nlittle fact--that death will come, and all ends; that nothing was even\nworth beginning, and that there was no helping it anyway. Yes, it was\nawful, but it was so.\n\n\"But I am alive still. Now what's to be done? what's to be done?\" he\nsaid in despair. He lighted a candle, got up cautiously and went to the\nlooking-glass, and began looking at his face and hair. Yes, there were\ngray hairs about his temples. He opened his mouth. His back teeth were\nbeginning to decay. He bared his muscular arms. Yes, there was strength\nin them. But Nikolay, who lay there breathing with what was left of\nlungs, had had a strong, healthy body too. And suddenly he recalled how\nthey used to go to bed together as children, and how they only waited\ntill Fyodor Bogdanitch was out of the room to fling pillows at each\nother and laugh, laugh irrepressibly, so that even their awe of Fyodor\nBogdanitch could not check the effervescing, overbrimming sense of life\nand happiness. \"And now that bent, hollow chest ... and I, not knowing\nwhat will become of me, or wherefore...\"\n\n\"K...ha! K...ha! Damnation! Why do you keep fidgeting, why don't you go\nto sleep?\" his brother's voice called to him.\n\n\"Oh, I don't know, I'm not sleepy.\"\n\n\"I have had a good sleep, I'm not in a sweat now. Just see, feel my\nshirt; it's not wet, is it?\"\n\nLevin felt, withdrew behind the screen, and put out the candle, but for\na long while he could not sleep. The question how to live had hardly\nbegun to grow a little clearer to him, when a new, insoluble question\npresented itself--death.\n\n\"Why, he's dying--yes, he'll die in the spring, and how help him? What\ncan I say to him? What do I know about it? I'd even forgotten that it\nwas at all.\"\n\n\n\nChapter 32\n\n\nLevin had long before made the observation that when one is\nuncomfortable with people from their being excessively amenable and\nmeek, one is apt very soon after to find things intolerable from their\ntouchiness and irritability. He felt that this was how it would be with\nhis brother. And his brother Nikolay's gentleness did in fact not last\nout for long. The very next morning he began to be irritable, and seemed\ndoing his best to find fault with his brother, attacking him on his\ntenderest points.\n\nLevin felt himself to blame, and could not set things right. He felt\nthat if they had both not kept up appearances, but had spoken, as it is\ncalled, from the heart--that is to say, had said only just what they\nwere thinking and feeling--they would simply have looked into each\nother's faces, and Konstantin could only have said, \"You're dying,\nyou're dying!\" and Nikolay could only have answered, \"I know I'm dying,\nbut I'm afraid, I'm afraid, I'm afraid!\" And they could have said\nnothing more, if they had said only what was in their hearts. But life\nlike that was impossible, and so Konstantin tried to do what he had been\ntrying to do all his life, and never could learn to do, though, as far\nas he could observe, many people knew so well how to do it, and without\nit there was no living at all. He tried to say what he was not thinking,\nbut he felt continually that it had a ring of falsehood, that his\nbrother detected him in it, and was exasperated at it.\n\nThe third day Nikolay induced his brother to explain his plan to him\nagain, and began not merely attacking it, but intentionally confounding\nit with communism.\n\n\"You've simply borrowed an idea that's not your own, but you've\ndistorted it, and are trying to apply it where it's not applicable.\"\n\n\"But I tell you it's nothing to do with it. They deny the justice of\nproperty, of capital, of inheritance, while I do not deny this chief\nstimulus.\" (Levin felt disgusted himself at using such expressions, but\never since he had been engrossed by his work, he had unconsciously come\nmore and more frequently to use words not Russian.) \"All I want is to\nregulate labor.\"\n\n\"Which means, you've borrowed an idea, stripped it of all that gave it\nits force, and want to make believe that it's something new,\" said\nNikolay, angrily tugging at his necktie.\n\n\"But my idea has nothing in common...\"\n\n\"That, anyway,\" said Nikolay Levin, with an ironical smile, his eyes\nflashing malignantly, \"has the charm of--what's one to call\nit?--geometrical symmetry, of clearness, of definiteness. It may be a\nUtopia. But if once one allows the possibility of making of all the past\na _tabula rasa_--no property, no family--then labor would organize\nitself. But you gain nothing...\"\n\n\"Why do you mix things up? I've never been a communist.\"\n\n\"But I have, and I consider it's premature, but rational, and it has a\nfuture, just like Christianity in its first ages.\"\n\n\"All that I maintain is that the labor force ought to be investigated\nfrom the point of view of natural science; that is to say, it ought to\nbe studied, its qualities ascertained...\"\n\n\"But that's utter waste of time. That force finds a certain form of\nactivity of itself, according to the stage of its development. There\nhave been slaves first everywhere, then metayers; and we have the\nhalf-crop system, rent, and day laborers. What are you trying to find?\"\n\nLevin suddenly lost his temper at these words, because at the bottom of\nhis heart he was afraid that it was true--true that he was trying to\nhold the balance even between communism and the familiar forms, and that\nthis was hardly possible.\n\n\"I am trying to find means of working productively for myself and for\nthe laborers. I want to organize...\" he answered hotly.\n\n\"You don't want to organize anything; it's simply just as you've been\nall your life, that you want to be original to pose as not exploiting\nthe peasants simply, but with some idea in view.\"\n\n\"Oh, all right, that's what you think--and let me alone!\" answered\nLevin, feeling the muscles of his left cheek twitching uncontrollably.\n\n\"You've never had, and never have, convictions; all you want is to\nplease your vanity.\"\n\n\"Oh, very well; then let me alone!\"\n\n\"And I will let you alone! and it's high time I did, and go to the devil\nwith you! and I'm very sorry I ever came!\"\n\nIn spite of all Levin's efforts to soothe his brother afterwards,\nNikolay would listen to nothing he said, declaring that it was better to\npart, and Konstantin saw that it simply was that life was unbearable to\nhim.\n\nNikolay was just getting ready to go, when Konstantin went in to him\nagain and begged him, rather unnaturally, to forgive him if he had hurt\nhis feelings in any way.\n\n\"Ah, generosity!\" said Nikolay, and he smiled. \"If you want to be right,\nI can give you that satisfaction. You're in the right; but I'm going all\nthe same.\"\n\nIt was only just at parting that Nikolay kissed him, and said, looking\nwith sudden strangeness and seriousness at his brother:\n\n\"Anyway, don't remember evil against me, Kostya!\" and his voice\nquivered. These were the only words that had been spoken sincerely\nbetween them. Levin knew that those words meant, \"You see, and you know,\nthat I'm in a bad way, and maybe we shall not see each other again.\"\nLevin knew this, and the tears gushed from his eyes. He kissed his\nbrother once more, but he could not speak, and knew not what to say.\n\nThree days after his brother's departure, Levin too set off for his\nforeign tour. Happening to meet Shtcherbatsky, Kitty's cousin, in the\nrailway train, Levin greatly astonished him by his depression.\n\n\"What's the matter with you?\" Shtcherbatsky asked him.\n\n\"Oh, nothing; there's not much happiness in life.\"\n\n\"Not much? You come with me to Paris instead of to Mulhausen. You shall\nsee how to be happy.\"\n\n\"No, I've done with it all. It's time I was dead.\"\n\n\"Well, that's a good one!\" said Shtcherbatsky, laughing; \"why, I'm only\njust getting ready to begin.\"\n\n\"Yes, I thought the same not long ago, but now I know I shall soon be\ndead.\"\n\nLevin said what he had genuinely been thinking of late. He saw nothing\nbut death or the advance towards death in everything. But his cherished\nscheme only engrossed him the more. Life had to be got through somehow\ntill death did come. Darkness had fallen upon everything for him; but\njust because of this darkness he felt that the one guiding clue in the\ndarkness was his work, and he clutched it and clung to it with all his\nstrength.\n\n\n\n\nPART FOUR\n\n\n\nChapter 1\n\n\nThe Karenins, husband and wife, continued living in the same house, met\nevery day, but were complete strangers to one another. Alexey\nAlexandrovitch made it a rule to see his wife every day, so that the\nservants might have no grounds for suppositions, but avoided dining at\nhome. Vronsky was never at Alexey Alexandrovitch's house, but Anna saw\nhim away from home, and her husband was aware of it.\n\nThe position was one of misery for all three; and not one of them would\nhave been equal to enduring this position for a single day, if it had\nnot been for the expectation that it would change, that it was merely a\ntemporary painful ordeal which would pass over. Alexey Alexandrovitch\nhoped that this passion would pass, as everything does pass, that\neveryone would forget about it, and his name would remain unsullied.\nAnna, on whom the position depended, and for whom it was more miserable\nthan for anyone, endured it because she not merely hoped, but firmly\nbelieved, that it would all very soon be settled and come right. She had\nnot the least idea what would settle the position, but she firmly\nbelieved that something would very soon turn up now. Vronsky, against\nhis own will or wishes, followed her lead, hoped too that something,\napart from his own action, would be sure to solve all difficulties.\n\nIn the middle of the winter Vronsky spent a very tiresome week. A\nforeign prince, who had come on a visit to Petersburg, was put under his\ncharge, and he had to show him the sights worth seeing. Vronsky was of\ndistinguished appearance; he possessed, moreover, the art of behaving\nwith respectful dignity, and was used to having to do with such grand\npersonages--that was how he came to be put in charge of the prince. But\nhe felt his duties very irksome. The prince was anxious to miss nothing\nof which he would be asked at home, had he seen that in Russia? And on\nhis own account he was anxious to enjoy to the utmost all Russian forms\nof amusement. Vronsky was obliged to be his guide in satisfying both\nthese inclinations. The mornings they spent driving to look at places of\ninterest; the evenings they passed enjoying the national entertainments.\nThe prince rejoiced in health exceptional even among princes. By\ngymnastics and careful attention to his health he had brought himself to\nsuch a point that in spite of his excess in pleasure he looked as fresh\nas a big glossy green Dutch cucumber. The prince had traveled a great\ndeal, and considered one of the chief advantages of modern facilities of\ncommunication was the accessibility of the pleasures of all nations.\n\nHe had been in Spain, and there had indulged in serenades and had made\nfriends with a Spanish girl who played the mandolin. In Switzerland he\nhad killed chamois. In England he had galloped in a red coat over hedges\nand killed two hundred pheasants for a bet. In Turkey he had got into a\nharem; in India he had hunted on an elephant, and now in Russia he\nwished to taste all the specially Russian forms of pleasure.\n\nVronsky, who was, as it were, chief master of the ceremonies to him, was\nat great pains to arrange all the Russian amusements suggested by\nvarious persons to the prince. They had race horses, and Russian\npancakes and bear hunts and three-horse sledges, and gypsies and\ndrinking feasts, with the Russian accompaniment of broken crockery. And\nthe prince with surprising ease fell in with the Russian spirit, smashed\ntrays full of crockery, sat with a gypsy girl on his knee, and seemed to\nbe asking--what more, and does the whole Russian spirit consist in just\nthis?\n\nIn reality, of all the Russian entertainments the prince liked best\nFrench actresses and ballet dancers and white-seal champagne. Vronsky\nwas used to princes, but, either because he had himself changed of late,\nor that he was in too close proximity to the prince, that week seemed\nfearfully wearisome to him. The whole of that week he experienced a\nsensation such as a man might have set in charge of a dangerous madman,\nafraid of the madman, and at the same time, from being with him, fearing\nfor his own reason. Vronsky was continually conscious of the necessity\nof never for a second relaxing the tone of stern official\nrespectfulness, that he might not himself be insulted. The prince's\nmanner of treating the very people who, to Vronsky's surprise, were\nready to descend to any depths to provide him with Russian amusements,\nwas contemptuous. His criticisms of Russian women, whom he wished to\nstudy, more than once made Vronsky crimson with indignation. The chief\nreason why the prince was so particularly disagreeable to Vronsky was\nthat he could not help seeing himself in him. And what he saw in this\nmirror did not gratify his self-esteem. He was a very stupid and very\nself-satisfied and very healthy and very well-washed man, and nothing\nelse. He was a gentleman--that was true, and Vronsky could not deny it.\nHe was equable and not cringing with his superiors, was free and\ningratiating in his behavior with his equals, and was contemptuously\nindulgent with his inferiors. Vronsky was himself the same, and regarded\nit as a great merit to be so. But for this prince he was an inferior,\nand his contemptuous and indulgent attitude to him revolted him.\n\n\"Brainless beef! can I be like that?\" he thought.\n\nBe that as it might, when, on the seventh day, he parted from the\nprince, who was starting for Moscow, and received his thanks, he was\nhappy to be rid of his uncomfortable position and the unpleasant\nreflection of himself. He said good-bye to him at the station on their\nreturn from a bear hunt, at which they had had a display of Russian\nprowess kept up all night.\n\n\n\nChapter 2\n\n\nWhen he got home, Vronsky found there a note from Anna. She wrote, \"I am\nill and unhappy. I cannot come out, but I cannot go on longer without\nseeing you. Come in this evening. Alexey Alexandrovitch goes to the\ncouncil at seven and will be there till ten.\" Thinking for an instant of\nthe strangeness of her bidding him come straight to her, in spite of her\nhusband's insisting on her not receiving him, he decided to go.\n\nVronsky had that winter got his promotion, was now a colonel, had left\nthe regimental quarters, and was living alone. After having some lunch,\nhe lay down on the sofa immediately, and in five minutes memories of the\nhideous scenes he had witnessed during the last few days were confused\ntogether and joined on to a mental image of Anna and of the peasant who\nhad played an important part in the bear hunt, and Vronsky fell asleep.\nHe waked up in the dark, trembling with horror, and made haste to light\na candle. \"What was it? What? What was the dreadful thing I dreamed?\nYes, yes; I think a little dirty man with a disheveled beard was\nstooping down doing something, and all of a sudden he began saying some\nstrange words in French. Yes, there was nothing else in the dream,\" he\nsaid to himself. \"But why was it so awful?\" He vividly recalled the\npeasant again and those incomprehensible French words the peasant had\nuttered, and a chill of horror ran down his spine.\n\n\"What nonsense!\" thought Vronsky, and glanced at his watch.\n\nIt was half-past eight already. He rang up his servant, dressed in\nhaste, and went out onto the steps, completely forgetting the dream and\nonly worried at being late. As he drove up to the Karenins' entrance he\nlooked at his watch and saw it was ten minutes to nine. A high, narrow\ncarriage with a pair of grays was standing at the entrance. He\nrecognized Anna's carriage. \"She is coming to me,\" thought Vronsky, \"and\nbetter she should. I don't like going into that house. But no matter; I\ncan't hide myself,\" he thought, and with that manner peculiar to him\nfrom childhood, as of a man who has nothing to be ashamed of, Vronsky\ngot out of his sledge and went to the door. The door opened, and the\nhall porter with a rug on his arm called the carriage. Vronsky, though\nhe did not usually notice details, noticed at this moment the amazed\nexpression with which the porter glanced at him. In the very doorway\nVronsky almost ran up against Alexey Alexandrovitch. The gas jet threw\nits full light on the bloodless, sunken face under the black hat and on\nthe white cravat, brilliant against the beaver of the coat. Karenin's\nfixed, dull eyes were fastened upon Vronsky's face. Vronsky bowed, and\nAlexey Alexandrovitch, chewing his lips, lifted his hand to his hat and\nwent on. Vronsky saw him without looking round get into the carriage,\npick up the rug and the opera-glass at the window and disappear. Vronsky\nwent into the hall. His brows were scowling, and his eyes gleamed with a\nproud and angry light in them.\n\n\"What a position!\" he thought. \"If he would fight, would stand up for\nhis honor, I could act, could express my feelings; but this weakness or\nbaseness.... He puts me in the position of playing false, which I never\nmeant and never mean to do.\"\n\nVronsky's ideas had changed since the day of his conversation with Anna\nin the Vrede garden. Unconsciously yielding to the weakness of Anna--who\nhad surrendered herself up to him utterly, and simply looked to him to\ndecide her fate, ready to submit to anything--he had long ceased to\nthink that their tie might end as he had thought then. His ambitious\nplans had retreated into the background again, and feeling that he had\ngot out of that circle of activity in which everything was definite, he\nhad given himself entirely to his passion, and that passion was binding\nhim more and more closely to her.\n\nHe was still in the hall when he caught the sound of her retreating\nfootsteps. He knew she had been expecting him, had listened for him, and\nwas now going back to the drawing room.\n\n\"No,\" she cried, on seeing him, and at the first sound of her voice the\ntears came into her eyes. \"No; if things are to go on like this, the end\nwill come much, much too soon.\"\n\n\"What is it, dear one?\"\n\n\"What? I've been waiting in agony for an hour, two hours ... No, I won't\n... I can't quarrel with you. Of course you couldn't come. No, I won't.\"\nShe laid her two hands on his shoulders, and looked a long while at him\nwith a profound, passionate, and at the same time searching look. She\nwas studying his face to make up for the time she had not seen him. She\nwas, every time she saw him, making the picture of him in her\nimagination (incomparably superior, impossible in reality) fit with him\nas he really was.\n\n\n\nChapter 3\n\n\n\"You met him?\" she asked, when they had sat down at the table in the\nlamplight. \"You're punished, you see, for being late.\"\n\n\"Yes; but how was it? Wasn't he to be at the council?\"\n\n\"He had been and come back, and was going out somewhere again. But\nthat's no matter. Don't talk about it. Where have you been? With the\nprince still?\"\n\nShe knew every detail of his existence. He was going to say that he had\nbeen up all night and had dropped asleep, but looking at her thrilled\nand rapturous face, he was ashamed. And he said he had had to go to\nreport on the prince's departure.\n\n\"But it's over now? He is gone?\"\n\n\"Thank God it's over! You wouldn't believe how insufferable it's been\nfor me.\"\n\n\"Why so? Isn't it the life all of you, all young men, always lead?\" she\nsaid, knitting her brows; and taking up the crochet work that was lying\non the table, she began drawing the hook out of it, without looking at\nVronsky.\n\n\"I gave that life up long ago,\" said he, wondering at the change in her\nface, and trying to divine its meaning. \"And I confess,\" he said, with a\nsmile, showing his thick, white teeth, \"this week I've been, as it were,\nlooking at myself in a glass, seeing that life, and I didn't like it.\"\n\nShe held the work in her hands, but did not crochet, and looked at him\nwith strange, shining, and hostile eyes.\n\n\"This morning Liza came to see me--they're not afraid to call on me, in\nspite of the Countess Lidia Ivanovna,\" she put in--\"and she told me\nabout your Athenian evening. How loathsome!\"\n\n\"I was just going to say...\"\n\nShe interrupted him. \"It was that Therese you used to know?\"\n\n\"I was just saying...\"\n\n\"How disgusting you are, you men! How is it you can't understand that a\nwoman can never forget that,\" she said, getting more and more angry, and\nso letting him see the cause of her irritation, \"especially a woman who\ncannot know your life? What do I know? What have I ever known?\" she\nsaid, \"what you tell me. And how do I know whether you tell me the\ntruth?...\"\n\n\"Anna, you hurt me. Don't you trust me? Haven't I told you that I\nhaven't a thought I wouldn't lay bare to you?\"\n\n\"Yes, yes,\" she said, evidently trying to suppress her jealous thoughts.\n\"But if only you knew how wretched I am! I believe you, I believe\nyou.... What were you saying?\"\n\nBut he could not at once recall what he had been going to say. These\nfits of jealousy, which of late had been more and more frequent with\nher, horrified him, and however much he tried to disguise the fact, made\nhim feel cold to her, although he knew the cause of her jealousy was her\nlove for him. How often he had told himself that her love was happiness;\nand now she loved him as a woman can love when love has outweighed for\nher all the good things of life--and he was much further from happiness\nthan when he had followed her from Moscow. Then he had thought himself\nunhappy, but happiness was before him; now he felt that the best\nhappiness was already left behind. She was utterly unlike what she had\nbeen when he first saw her. Both morally and physically she had changed\nfor the worse. She had broadened out all over, and in her face at the\ntime when she was speaking of the actress there was an evil expression\nof hatred that distorted it. He looked at her as a man looks at a faded\nflower he has gathered, with difficulty recognizing in it the beauty for\nwhich he picked and ruined it. And in spite of this he felt that then,\nwhen his love was stronger, he could, if he had greatly wished it, have\ntorn that love out of his heart; but now, when as at that moment it\nseemed to him he felt no love for her, he knew that what bound him to\nher could not be broken.\n\n\"Well, well, what was it you were going to say about the prince? I have\ndriven away the fiend,\" she added. The fiend was the name they had given\nher jealousy. \"What did you begin to tell me about the prince? Why did\nyou find it so tiresome?\"\n\n\"Oh, it was intolerable!\" he said, trying to pick up the thread of his\ninterrupted thought. \"He does not improve on closer acquaintance. If you\nwant him defined, here he is: a prime, well-fed beast such as takes\nmedals at the cattle shows, and nothing more,\" he said, with a tone of\nvexation that interested her.\n\n\"No; how so?\" she replied. \"He's seen a great deal, anyway; he's\ncultured?\"\n\n\"It's an utterly different culture--their culture. He's cultivated, one\nsees, simply to be able to despise culture, as they despise everything\nbut animal pleasures.\"\n\n\"But don't you all care for these animal pleasures?\" she said, and again\nhe noticed a dark look in her eyes that avoided him.\n\n\"How is it you're defending him?\" he said, smiling.\n\n\"I'm not defending him, it's nothing to me; but I imagine, if you had\nnot cared for those pleasures yourself, you might have got out of them.\nBut if it affords you satisfaction to gaze at Therese in the attire of\nEve...\"\n\n\"Again, the devil again,\" Vronsky said, taking the hand she had laid on\nthe table and kissing it.\n\n\"Yes; but I can't help it. You don't know what I have suffered waiting\nfor you. I believe I'm not jealous. I'm not jealous: I believe you when\nyou're here; but when you're away somewhere leading your life, so\nincomprehensible to me...\"\n\nShe turned away from him, pulled the hook at last out of the crochet\nwork, and rapidly, with the help of her forefinger, began working loop\nafter loop of the wool that was dazzling white in the lamplight, while\nthe slender wrist moved swiftly, nervously in the embroidered cuff.\n\n\"How was it, then? Where did you meet Alexey Alexandrovitch?\" Her voice\nsounded in an unnatural and jarring tone.\n\n\"We ran up against each other in the doorway.\"\n\n\"And he bowed to you like this?\"\n\nShe drew a long face, and half-closing her eyes, quickly transformed her\nexpression, folded her hands, and Vronsky suddenly saw in her beautiful\nface the very expression with which Alexey Alexandrovitch had bowed to\nhim. He smiled, while she laughed gaily, with that sweet, deep laugh,\nwhich was one of her greatest charms.\n\n\"I don't understand him in the least,\" said Vronsky. \"If after your\navowal to him at your country house he had broken with you, if he had\ncalled me out--but this I can't understand. How can he put up with such\na position? He feels it, that's evident.\"\n\n\"He?\" she said sneeringly. \"He's perfectly satisfied.\"\n\n\"What are we all miserable for, when everything might be so happy?\"\n\n\"Only not he. Don't I know him, the falsity in which he's utterly\nsteeped?... Could one, with any feeling, live as he is living with me?\nHe understands nothing, and feels nothing. Could a man of any feeling\nlive in the same house with his unfaithful wife? Could he talk to her,\ncall her 'my dear'?\"\n\nAnd again she could not help mimicking him: \"'Anna, _ma chere_; Anna,\ndear'!\"\n\n\"He's not a man, not a human being--he's a doll! No one knows him; but I\nknow him. Oh, if I'd been in his place, I'd long ago have killed, have\ntorn to pieces a wife like me. I wouldn't have said, 'Anna, _ma chere_'!\nHe's not a man, he's an official machine. He doesn't understand that I'm\nyour wife, that he's outside, that he's superfluous.... Don't let's talk\nof him!...\"\n\n\"You're unfair, very unfair, dearest,\" said Vronsky, trying to soothe\nher. \"But never mind, don't let's talk of him. Tell me what you've been\ndoing? What is the matter? What has been wrong with you, and what did\nthe doctor say?\"\n\nShe looked at him with mocking amusement. Evidently she had hit on other\nabsurd and grotesque aspects in her husband and was awaiting the moment\nto give expression to them.\n\nBut he went on:\n\n\"I imagine that it's not illness, but your condition. When will it be?\"\n\nThe ironical light died away in her eyes, but a different smile, a\nconsciousness of something, he did not know what, and of quiet\nmelancholy, came over her face.\n\n\"Soon, soon. You say that our position is miserable, that we must put an\nend to it. If you knew how terrible it is to me, what I would give to be\nable to love you freely and boldly! I should not torture myself and\ntorture you with my jealousy.... And it will come soon, but not as we\nexpect.\"\n\nAnd at the thought of how it would come, she seemed so pitiable to\nherself that tears came into her eyes, and she could not go on. She laid\nher hand on his sleeve, dazzling and white with its rings in the\nlamplight.\n\n\"It won't come as we suppose. I didn't mean to say this to you, but\nyou've made me. Soon, soon, all will be over, and we shall all, all be\nat peace, and suffer no more.\"\n\n\"I don't understand,\" he said, understanding her.\n\n\"You asked when? Soon. And I shan't live through it. Don't interrupt\nme!\" and she made haste to speak. \"I know it; I know for certain. I\nshall die; and I'm very glad I shall die, and release myself and you.\"\n\nTears dropped from her eyes; he bent down over her hand and began\nkissing it, trying to hide his emotion, which, he knew, had no sort of\ngrounds, though he could not control it.\n\n\"Yes, it's better so,\" she said, tightly gripping his hand. \"That's the\nonly way, the only way left us.\"\n\nHe had recovered himself, and lifted his head.\n\n\"How absurd! What absurd nonsense you are talking!\"\n\n\"No, it's the truth.\"\n\n\"What, what's the truth?\"\n\n\"That I shall die. I have had a dream.\"\n\n\"A dream?\" repeated Vronsky, and instantly he recalled the peasant of\nhis dream.\n\n\"Yes, a dream,\" she said. \"It's a long while since I dreamed it. I\ndreamed that I ran into my bedroom, that I had to get something there,\nto find out something; you know how it is in dreams,\" she said, her eyes\nwide with horror; \"and in the bedroom, in the corner, stood something.\"\n\n\"Oh, what nonsense! How can you believe...\"\n\nBut she would not let him interrupt her. What she was saying was too\nimportant to her.\n\n\"And the something turned round, and I saw it was a peasant with a\ndisheveled beard, little, and dreadful looking. I wanted to run away,\nbut he bent down over a sack, and was fumbling there with his hands...\"\n\nShe showed how he had moved his hands. There was terror in her face. And\nVronsky, remembering his dream, felt the same terror filling his soul.\n\n\"He was fumbling and kept talking quickly, quickly in French, you know:\n_Il faut le battre, le fer, le brayer, le petrir_.... And in my horror I\ntried to wake up, and woke up ... but woke up in the dream. And I began\nasking myself what it meant. And Korney said to me: 'In childbirth\nyou'll die, ma'am, you'll die....' And I woke up.\"\n\n\"What nonsense, what nonsense!\" said Vronsky; but he felt himself that\nthere was no conviction in his voice.\n\n\"But don't let's talk of it. Ring the bell, I'll have tea. And stay a\nlittle now; it's not long I shall...\"\n\nBut all at once she stopped. The expression of her face instantaneously\nchanged. Horror and excitement were suddenly replaced by a look of soft,\nsolemn, blissful attention. He could not comprehend the meaning of the\nchange. She was listening to the stirring of the new life within her.\n\n\n\nChapter 4\n\n\nAlexey Alexandrovitch, after meeting Vronsky on his own steps, drove, as\nhe had intended, to the Italian opera. He sat through two acts there,\nand saw everyone he had wanted to see. On returning home, he carefully\nscrutinized the hat stand, and noticing that there was not a military\novercoat there, he went, as usual, to his own room. But, contrary to his\nusual habit, he did not go to bed, he walked up and down his study till\nthree o'clock in the morning. The feeling of furious anger with his\nwife, who would not observe the proprieties and keep to the one\nstipulation he had laid on her, not to receive her lover in her own\nhome, gave him no peace. She had not complied with his request, and he\nwas bound to punish her and carry out his threat--obtain a divorce and\ntake away his son. He knew all the difficulties connected with this\ncourse, but he had said he would do it, and now he must carry out his\nthreat. Countess Lidia Ivanovna had hinted that this was the best way\nout of his position, and of late the obtaining of divorces had been\nbrought to such perfection that Alexey Alexandrovitch saw a possibility\nof overcoming the formal difficulties. Misfortunes never come singly,\nand the affairs of the reorganization of the native tribes, and of the\nirrigation of the lands of the Zaraisky province, had brought such\nofficial worries upon Alexey Alexandrovitch that he had been of late in\na continual condition of extreme irritability.\n\nHe did not sleep the whole night, and his fury, growing in a sort of\nvast, arithmetical progression, reached its highest limits in the\nmorning. He dressed in haste, and as though carrying his cup full of\nwrath, and fearing to spill any over, fearing to lose with his wrath the\nenergy necessary for the interview with his wife, he went into her room\ndirectly he heard she was up.\n\nAnna, who had thought she knew her husband so well, was amazed at his\nappearance when he went in to her. His brow was lowering, and his eyes\nstared darkly before him, avoiding her eyes; his mouth was tightly and\ncontemptuously shut. In his walk, in his gestures, in the sound of his\nvoice there was a determination and firmness such as his wife had never\nseen in him. He went into her room, and without greeting her, walked\nstraight up to her writing-table, and taking her keys, opened a drawer.\n\n\"What do you want?\" she cried.\n\n\"Your lover's letters,\" he said.\n\n\"They're not here,\" she said, shutting the drawer; but from that action\nhe saw he had guessed right, and roughly pushing away her hand, he\nquickly snatched a portfolio in which he knew she used to put her most\nimportant papers. She tried to pull the portfolio away, but he pushed\nher back.\n\n\"Sit down! I have to speak to you,\" he said, putting the portfolio under\nhis arm, and squeezing it so tightly with his elbow that his shoulder\nstood up. Amazed and intimidated, she gazed at him in silence.\n\n\"I told you that I would not allow you to receive your lover in this\nhouse.\"\n\n\"I had to see him to...\"\n\nShe stopped, not finding a reason.\n\n\"I do not enter into the details of why a woman wants to see her lover.\"\n\n\"I meant, I only...\" she said, flushing hotly. This coarseness of his\nangered her, and gave her courage. \"Surely you must feel how easy it is\nfor you to insult me?\" she said.\n\n\"An honest man and an honest woman may be insulted, but to tell a thief\nhe's a thief is simply _la constatation d'un fait_.\"\n\n\"This cruelty is something new I did not know in you.\"\n\n\"You call it cruelty for a husband to give his wife liberty, giving her\nthe honorable protection of his name, simply on the condition of\nobserving the proprieties: is that cruelty?\"\n\n\"It's worse than cruel--it's base, if you want to know!\" Anna cried, in\na rush of hatred, and getting up, she was going away.\n\n\"No!\" he shrieked, in his shrill voice, which pitched a note higher than\nusual even, and his big hands clutching her by the arm so violently that\nred marks were left from the bracelet he was squeezing, he forcibly sat\nher down in her place.\n\n\"Base! If you care to use that word, what is base is to forsake husband\nand child for a lover, while you eat your husband's bread!\"\n\nShe bowed her head. She did not say what she had said the evening before\nto her lover, that _he_ was her husband, and her husband was\nsuperfluous; she did not even think that. She felt all the justice of\nhis words, and only said softly:\n\n\"You cannot describe my position as worse than I feel it to be myself;\nbut what are you saying all this for?\"\n\n\"What am I saying it for? what for?\" he went on, as angrily. \"That you\nmay know that since you have not carried out my wishes in regard to\nobserving outward decorum, I will take measures to put an end to this\nstate of things.\"\n\n\"Soon, very soon, it will end, anyway,\" she said; and again, at the\nthought of death near at hand and now desired, tears came into her eyes.\n\n\"It will end sooner than you and your lover have planned! If you must\nhave the satisfaction of animal passion...\"\n\n\"Alexey Alexandrovitch! I won't say it's not generous, but it's not like\na gentleman to strike anyone who's down.\"\n\n\"Yes, you only think of yourself! But the sufferings of a man who was\nyour husband have no interest for you. You don't care that his whole\nlife is ruined, that he is thuff ... thuff...\"\n\nAlexey Alexandrovitch was speaking so quickly that he stammered, and was\nutterly unable to articulate the word \"suffering.\" In the end he\npronounced it \"thuffering.\" She wanted to laugh, and was immediately\nashamed that anything could amuse her at such a moment. And for the\nfirst time, for an instant, she felt for him, put herself in his place,\nand was sorry for him. But what could she say or do? Her head sank, and\nshe sat silent. He too was silent for some time, and then began speaking\nin a frigid, less shrill voice, emphasizing random words that had no\nspecial significance.\n\n\"I came to tell you...\" he said.\n\nShe glanced at him. \"No, it was my fancy,\" she thought, recalling the\nexpression of his face when he stumbled over the word \"suffering.\" \"No;\ncan a man with those dull eyes, with that self-satisfied complacency,\nfeel anything?\"\n\n\"I cannot change anything,\" she whispered.\n\n\"I have come to tell you that I am going tomorrow to Moscow, and shall\nnot return again to this house, and you will receive notice of what I\ndecide through the lawyer into whose hands I shall intrust the task of\ngetting a divorce. My son is going to my sister's,\" said Alexey\nAlexandrovitch, with an effort recalling what he had meant to say about\nhis son.\n\n\"You take Seryozha to hurt me,\" she said, looking at him from under her\nbrows. \"You do not love him.... Leave me Seryozha!\"\n\n\"Yes, I have lost even my affection for my son, because he is associated\nwith the repulsion I feel for you. But still I shall take him. Goodbye!\"\n\nAnd he was going away, but now she detained him.\n\n\"Alexey Alexandrovitch, leave me Seryozha!\" she whispered once more. \"I\nhave nothing else to say. Leave Seryozha till my ... I shall soon be\nconfined; leave him!\"\n\nAlexey Alexandrovitch flew into a rage, and, snatching his hand from\nher, he went out of the room without a word.\n\n\n\nChapter 5\n\n\nThe waiting-room of the celebrated Petersburg lawyer was full when\nAlexey Alexandrovitch entered it. Three ladies--an old lady, a young\nlady, and a merchant's wife--and three gentlemen--one a German banker\nwith a ring on his finger, the second a merchant with a beard, and the\nthird a wrathful-looking government clerk in official uniform, with a\ncross on his neck--had obviously been waiting a long while already. Two\nclerks were writing at tables with scratching pens. The appurtenances of\nthe writing-tables, about which Alexey Alexandrovitch was himself very\nfastidious, were exceptionally good. He could not help observing this.\nOne of the clerks, without getting up, turned wrathfully to Alexey\nAlexandrovitch, half closing his eyes. \"What are you wanting?\"\n\nHe replied that he had to see the lawyer on some business.\n\n\"He is engaged,\" the clerk responded severely, and he pointed with his\npen at the persons waiting, and went on writing.\n\n\"Can't he spare time to see me?\" said Alexey Alexandrovitch.\n\n\"He has no time free; he is always busy. Kindly wait your turn.\"\n\n\"Then I must trouble you to give him my card,\" Alexey Alexandrovitch\nsaid with dignity, seeing the impossibility of preserving his incognito.\n\nThe clerk took the card and, obviously not approving of what he read on\nit, went to the door.\n\nAlexey Alexandrovitch was in principle in favor of the publicity of\nlegal proceedings, though for some higher official considerations he\ndisliked the application of the principle in Russia, and disapproved of\nit, as far as he could disapprove of anything instituted by authority of\nthe Emperor. His whole life had been spent in administrative work, and\nconsequently, when he did not approve of anything, his disapproval was\nsoftened by the recognition of the inevitability of mistakes and the\npossibility of reform in every department. In the new public law courts\nhe disliked the restrictions laid on the lawyers conducting cases. But\ntill then he had had nothing to do with the law courts, and so had\ndisapproved of their publicity simply in theory; now his disapprobation\nwas strengthened by the unpleasant impression made on him in the\nlawyer's waiting room.\n\n\"Coming immediately,\" said the clerk; and two minutes later there did\nactually appear in the doorway the large figure of an old solicitor who\nhad been consulting with the lawyer himself.\n\nThe lawyer was a little, squat, bald man, with a dark, reddish beard,\nlight-colored long eyebrows, and an overhanging brow. He was attired as\nthough for a wedding, from his cravat to his double watch-chain and\nvarnished boots. His face was clever and manly, but his dress was\ndandified and in bad taste.\n\n\"Pray walk in,\" said the lawyer, addressing Alexey Alexandrovitch; and,\ngloomily ushering Karenin in before him, he closed the door.\n\n\"Won't you sit down?\" He indicated an armchair at a writing table\ncovered with papers. He sat down himself, and, rubbing his little hands\nwith short fingers covered with white hairs, he bent his head on one\nside. But as soon as he was settled in this position a moth flew over\nthe table. The lawyer, with a swiftness that could never have been\nexpected of him, opened his hands, caught the moth, and resumed his\nformer attitude.\n\n\"Before beginning to speak of my business,\" said Alexey Alexandrovitch,\nfollowing the lawyer's movements with wondering eyes, \"I ought to\nobserve that the business about which I have to speak to you is to be\nstrictly private.\"\n\nThe lawyer's overhanging reddish mustaches were parted in a scarcely\nperceptible smile.\n\n\"I should not be a lawyer if I could not keep the secrets confided to\nme. But if you would like proof...\"\n\nAlexey Alexandrovitch glanced at his face, and saw that the shrewd, gray\neyes were laughing, and seemed to know all about it already.\n\n\"You know my name?\" Alexey Alexandrovitch resumed.\n\n\"I know you and the good\"--again he caught a moth--\"work you are doing,\nlike every Russian,\" said the lawyer, bowing.\n\nAlexey Alexandrovitch sighed, plucking up his courage. But having once\nmade up his mind he went on in his shrill voice, without timidity--or\nhesitation, accentuating here and there a word.\n\n\"I have the misfortune,\" Alexey Alexandrovitch began, \"to have been\ndeceived in my married life, and I desire to break off all relations\nwith my wife by legal means--that is, to be divorced, but to do this so\nthat my son may not remain with his mother.\"\n\nThe lawyer's gray eyes tried not to laugh, but they were dancing with\nirrepressible glee, and Alexey Alexandrovitch saw that it was not simply\nthe delight of a man who has just got a profitable job: there was\ntriumph and joy, there was a gleam like the malignant gleam he saw in\nhis wife's eyes.\n\n\"You desire my assistance in securing a divorce?\"\n\n\"Yes, precisely so; but I ought to warn you that I may be wasting your\ntime and attention. I have come simply to consult you as a preliminary\nstep. I want a divorce, but the form in which it is possible is of great\nconsequence to me. It is very possible that if that form does not\ncorrespond with my requirements I may give up a legal divorce.\"\n\n\"Oh, that's always the case,\" said the lawyer, \"and that's always for\nyou to decide.\"\n\nHe let his eyes rest on Alexey Alexandrovitch's feet, feeling that he\nmight offend his client by the sight of his irrepressible amusement. He\nlooked at a moth that flew before his nose, and moved his hands, but did\nnot catch it from regard for Alexey Alexandrovitch's position.\n\n\"Though in their general features our laws on this subject are known to\nme,\" pursued Alexey Alexandrovitch, \"I should be glad to have an idea of\nthe forms in which such things are done in practice.\"\n\n\"You would be glad,\" the lawyer, without lifting his eyes, responded,\nadopting, with a certain satisfaction, the tone of his client's remarks,\n\"for me to lay before you all the methods by which you could secure what\nyou desire?\"\n\nAnd on receiving an assuring nod from Alexey Alexandrovitch, he went on,\nstealing a glance now and then at Alexey Alexandrovitch's face, which\nwas growing red in patches.\n\n\"Divorce by our laws,\" he said, with a slight shade of disapprobation of\nour laws, \"is possible, as you are aware, in the following cases....\nWait a little!\" he called to a clerk who put his head in at the door,\nbut he got up all the same, said a few words to him, and sat down again.\n\"... In the following cases: physical defect in the married parties,\ndesertion without communication for five years,\" he said, crooking a\nshort finger covered with hair, \"adultery\" (this word he pronounced with\nobvious satisfaction), \"subdivided as follows\" (he continued to crook\nhis fat fingers, though the three cases and their subdivisions could\nobviously not be classified together): \"physical defect of the husband\nor of the wife, adultery of the husband or of the wife.\" As by now all\nhis fingers were used up, he uncrooked all his fingers and went on:\n\"This is the theoretical view; but I imagine you have done me the honor\nto apply to me in order to learn its application in practice. And\ntherefore, guided by precedents, I must inform you that in practice\ncases of divorce may all be reduced to the following--there's no\nphysical defect, I may assume, nor desertion?...\"\n\nAlexey Alexandrovitch bowed his head in assent.\n\n\"--May be reduced to the following: adultery of one of the married\nparties, and the detection in the fact of the guilty party by mutual\nagreement, and failing such agreement, accidental detection. It must be\nadmitted that the latter case is rarely met with in practice,\" said the\nlawyer, and stealing a glance at Alexey Alexandrovitch he paused, as a\nman selling pistols, after enlarging on the advantages of each weapon,\nmight await his customer's choice. But Alexey Alexandrovitch said\nnothing, and therefore the lawyer went on: \"The most usual and simple,\nthe sensible course, I consider, is adultery by mutual consent. I should\nnot permit myself to express it so, speaking with a man of no\neducation,\" he said, \"but I imagine that to you this is comprehensible.\"\n\nAlexey Alexandrovitch was, however, so perturbed that he did not\nimmediately comprehend all the good sense of adultery by mutual consent,\nand his eyes expressed this uncertainty; but the lawyer promptly came to\nhis assistance.\n\n\"People cannot go on living together--here you have a fact. And if both\nare agreed about it, the details and formalities become a matter of no\nimportance. And at the same time this is the simplest and most certain\nmethod.\"\n\nAlexey Alexandrovitch fully understood now. But he had religious\nscruples, which hindered the execution of such a plan.\n\n\"That is out of the question in the present case,\" he said. \"Only one\nalternative is possible: undesigned detection, supported by letters\nwhich I have.\"\n\nAt the mention of letters the lawyer pursed up his lips, and gave\nutterance to a thin little compassionate and contemptuous sound.\n\n\"Kindly consider,\" he began, \"cases of that kind are, as you are aware,\nunder ecclesiastical jurisdiction; the reverend fathers are fond of\ngoing into the minutest details in cases of that kind,\" he said with a\nsmile, which betrayed his sympathy with the reverend fathers' taste.\n\"Letters may, of course, be a partial confirmation; but detection in the\nfact there must be of the most direct kind, that is, by eyewitnesses. In\nfact, if you do me the honor to intrust your confidence to me, you will\ndo well to leave me the choice of the measures to be employed. If one\nwants the result, one must admit the means.\"\n\n\"If it is so...\" Alexey Alexandrovitch began, suddenly turning white;\nbut at that moment the lawyer rose and again went to the door to speak\nto the intruding clerk.\n\n\"Tell her we don't haggle over fees!\" he said, and returned to Alexey\nAlexandrovitch.\n\nOn his way back he caught unobserved another moth. \"Nice state my rep\ncurtains will be in by the summer!\" he thought, frowning.\n\n\"And so you were saying?...\" he said.\n\n\"I will communicate my decision to you by letter,\" said Alexey\nAlexandrovitch, getting up, and he clutched at the table. After standing\na moment in silence, he said: \"From your words I may consequently\nconclude that a divorce may be obtained? I would ask you to let me know\nwhat are your terms.\"\n\n\"It may be obtained if you give me complete liberty of action,\" said the\nlawyer, not answering his question. \"When can I reckon on receiving\ninformation from you?\" he asked, moving towards the door, his eyes and\nhis varnished boots shining.\n\n\"In a week's time. Your answer as to whether you will undertake to\nconduct the case, and on what terms, you will be so good as to\ncommunicate to me.\"\n\n\"Very good.\"\n\nThe lawyer bowed respectfully, let his client out of the door, and, left\nalone, gave himself up to his sense of amusement. He felt so mirthful\nthat, contrary to his rules, he made a reduction in his terms to the\nhaggling lady, and gave up catching moths, finally deciding that next\nwinter he must have the furniture covered with velvet, like Sigonin's.\n\n\n\nChapter 6\n\n\nAlexey Alexandrovitch had gained a brilliant victory at the sitting of\nthe Commission of the 17th of August, but in the sequel this victory cut\nthe ground from under his feet. The new commission for the inquiry into\nthe condition of the native tribes in all its branches had been formed\nand despatched to its destination with an unusual speed and energy\ninspired by Alexey Alexandrovitch. Within three months a report was\npresented. The condition of the native tribes was investigated in its\npolitical, administrative, economic, ethnographic, material, and\nreligious aspects. To all these questions there were answers admirably\nstated, and answers admitting no shade of doubt, since they were not a\nproduct of human thought, always liable to error, but were all the\nproduct of official activity. The answers were all based on official\ndata furnished by governors and heads of churches, and founded on the\nreports of district magistrates and ecclesiastical superintendents,\nfounded in their turn on the reports of parochial overseers and parish\npriests; and so all of these answers were unhesitating and certain. All\nsuch questions as, for instance, of the cause of failure of crops, of\nthe adherence of certain tribes to their ancient beliefs,\netc.--questions which, but for the convenient intervention of the\nofficial machine, are not, and cannot be solved for ages--received full,\nunhesitating solution. And this solution was in favor of Alexey\nAlexandrovitch's contention. But Stremov, who had felt stung to the\nquick at the last sitting, had, on the reception of the commission's\nreport, resorted to tactics which Alexey Alexandrovitch had not\nanticipated. Stremov, carrying with him several members, went over to\nAlexey Alexandrovitch's side, and not contenting himself with warmly\ndefending the measure proposed by Karenin, proposed other more extreme\nmeasures in the same direction. These measures, still further\nexaggerated in opposition to what was Alexey Alexandrovitch's\nfundamental idea, were passed by the commission, and then the aim of\nStremov's tactics became apparent. Carried to an extreme, the measures\nseemed at once to be so absurd that the highest authorities, and public\nopinion, and intellectual ladies, and the newspapers, all at the same\ntime fell foul of them, expressing their indignation both with the\nmeasures and their nominal father, Alexey Alexandrovitch. Stremov drew\nback, affecting to have blindly followed Karenin, and to be astounded\nand distressed at what had been done. This meant the defeat of Alexey\nAlexandrovitch. But in spite of failing health, in spite of his domestic\ngriefs, he did not give in. There was a split in the commission. Some\nmembers, with Stremov at their head, justified their mistake on the\nground that they had put faith in the commission of revision, instituted\nby Alexey Alexandrovitch, and maintained that the report of the\ncommission was rubbish, and simply so much waste paper. Alexey\nAlexandrovitch, with a following of those who saw the danger of so\nrevolutionary an attitude to official documents, persisted in upholding\nthe statements obtained by the revising commission. In consequence of\nthis, in the higher spheres, and even in society, all was chaos, and\nalthough everyone was interested, no one could tell whether the native\ntribes really were becoming impoverished and ruined, or whether they\nwere in a flourishing condition. The position of Alexey Alexandrovitch,\nowing to this, and partly owing to the contempt lavished on him for his\nwife's infidelity, became very precarious. And in this position he took\nan important resolution. To the astonishment of the commission, he\nannounced that he should ask permission to go himself to investigate the\nquestion on the spot. And having obtained permission, Alexey\nAlexandrovitch prepared to set off to these remote provinces.\n\nAlexey Alexandrovitch's departure made a great sensation, the more so as\njust before he started he officially returned the posting-fares allowed\nhim for twelve horses, to drive to his destination.\n\n\"I think it very noble,\" Betsy said about this to the Princess Myakaya.\n\"Why take money for posting-horses when everyone knows that there are\nrailways everywhere now?\"\n\nBut Princess Myakaya did not agree, and the Princess Tverskaya's opinion\nannoyed her indeed.\n\n\"It's all very well for you to talk,\" said she, \"when you have I don't\nknow how many millions; but I am very glad when my husband goes on a\nrevising tour in the summer. It's very good for him and pleasant\ntraveling about, and it's a settled arrangement for me to keep a\ncarriage and coachman on the money.\"\n\nOn his way to the remote provinces Alexey Alexandrovitch stopped for\nthree days at Moscow.\n\nThe day after his arrival he was driving back from calling on the\ngovernor-general. At the crossroads by Gazetoy Place, where there are\nalways crowds of carriages and sledges, Alexey Alexandrovitch suddenly\nheard his name called out in such a loud and cheerful voice that he\ncould not help looking round. At the corner of the pavement, in a short,\nstylish overcoat and a low-crowned fashionable hat, jauntily askew, with\na smile that showed a gleam of white teeth and red lips, stood Stepan\nArkadyevitch, radiant, young, and beaming. He called him vigorously and\nurgently, and insisted on his stopping. He had one arm on the window of\na carriage that was stopping at the corner, and out of the window were\nthrust the heads of a lady in a velvet hat, and two children. Stepan\nArkadyevitch was smiling and beckoning to his brother-in-law. The lady\nsmiled a kindly smile too, and she too waved her hand to Alexey\nAlexandrovitch. It was Dolly with her children.\n\nAlexey Alexandrovitch did not want to see anyone in Moscow, and least of\nall his wife's brother. He raised his hat and would have driven on, but\nStepan Arkadyevitch told his coachman to stop, and ran across the snow\nto him.\n\n\"Well, what a shame not to have let us know! Been here long? I was at\nDussot's yesterday and saw 'Karenin' on the visitors' list, but it never\nentered my head that it was you,\" said Stepan Arkadyevitch, sticking his\nhead in at the window of the carriage, \"or I should have looked you up.\nI am glad to see you!\" he said, knocking one foot against the other to\nshake the snow off. \"What a shame of you not to let us know!\" he\nrepeated.\n\n\"I had no time; I am very busy,\" Alexey Alexandrovitch responded dryly.\n\n\"Come to my wife, she does so want to see you.\"\n\nAlexey Alexandrovitch unfolded the rug in which his frozen feet were\nwrapped, and getting out of his carriage made his way over the snow to\nDarya Alexandrovna.\n\n\"Why, Alexey Alexandrovitch, what are you cutting us like this for?\"\nsaid Dolly, smiling.\n\n\"I was very busy. Delighted to see you!\" he said in a tone clearly\nindicating that he was annoyed by it. \"How are you?\"\n\n\"Tell me, how is my darling Anna?\"\n\nAlexey Alexandrovitch mumbled something and would have gone on. But\nStepan Arkadyevitch stopped him.\n\n\"I tell you what we'll do tomorrow. Dolly, ask him to dinner. We'll ask\nKoznishev and Pestsov, so as to entertain him with our Moscow\ncelebrities.\"\n\n\"Yes, please, do come,\" said Dolly; \"we will expect you at five, or six\no'clock, if you like. How is my darling Anna? How long...\"\n\n\"She is quite well,\" Alexey Alexandrovitch mumbled, frowning.\n\"Delighted!\" and he moved away towards his carriage.\n\n\"You will come?\" Dolly called after him.\n\nAlexey Alexandrovitch said something which Dolly could not catch in the\nnoise of the moving carriages.\n\n\"I shall come round tomorrow!\" Stepan Arkadyevitch shouted to him.\n\nAlexey Alexandrovitch got into his carriage, and buried himself in it so\nas neither to see nor be seen.\n\n\"Queer fish!\" said Stepan Arkadyevitch to his wife, and glancing at his\nwatch, he made a motion of his hand before his face, indicating a caress\nto his wife and children, and walked jauntily along the pavement.\n\n\"Stiva! Stiva!\" Dolly called, reddening.\n\nHe turned round.\n\n\"I must get coats, you know, for Grisha and Tanya. Give me the money.\"\n\n\"Never mind; you tell them I'll pay the bill!\" and he vanished, nodding\ngenially to an acquaintance who drove by.\n\n\n\nChapter 7\n\n\nThe next day was Sunday. Stepan Arkadyevitch went to the Grand Theater\nto a rehearsal of the ballet, and gave Masha Tchibisova, a pretty\ndancing-girl whom he had just taken under his protection, the coral\nnecklace he had promised her the evening before, and behind the scenes\nin the dim daylight of the theater, managed to kiss her pretty little\nface, radiant over her present. Besides the gift of the necklace he\nwanted to arrange with her about meeting after the ballet. After\nexplaining that he could not come at the beginning of the ballet, he\npromised he would come for the last act and take her to supper. From the\ntheater Stepan Arkadyevitch drove to Ohotny Row, selected himself the\nfish and asparagus for dinner, and by twelve o'clock was at Dussot's,\nwhere he had to see three people, luckily all staying at the same hotel:\nLevin, who had recently come back from abroad and was staying there; the\nnew head of his department, who had just been promoted to that position,\nand had come on a tour of revision to Moscow; and his brother-in-law,\nKarenin, whom he must see, so as to be sure of bringing him to dinner.\n\nStepan Arkadyevitch liked dining, but still better he liked to give a\ndinner, small, but very choice, both as regards the food and drink and\nas regards the selection of guests. He particularly liked the program of\nthat day's dinner. There would be fresh perch, asparagus, and _la piece\nde resistance_--first-rate, but quite plain, roast beef, and wines to\nsuit: so much for the eating and drinking. Kitty and Levin would be of\nthe party, and that this might not be obtrusively evident, there would\nbe a girl cousin too, and young Shtcherbatsky, and _la piece de\nresistance_ among the guests--Sergey Koznishev and Alexey\nAlexandrovitch. Sergey Ivanovitch was a Moscow man, and a philosopher;\nAlexey Alexandrovitch a Petersburger, and a practical politician. He was\nasking, too, the well-known eccentric enthusiast, Pestsov, a liberal, a\ngreat talker, a musician, an historian, and the most delightfully\nyouthful person of fifty, who would be a sauce or garnish for Koznishev\nand Karenin. He would provoke them and set them off.\n\nThe second installment for the forest had been received from the\nmerchant and was not yet exhausted; Dolly had been very amiable and\ngoodhumored of late, and the idea of the dinner pleased Stepan\nArkadyevitch from every point of view. He was in the most light-hearted\nmood. There were two circumstances a little unpleasant, but these two\ncircumstances were drowned in the sea of good-humored gaiety which\nflooded the soul of Stepan Arkadyevitch. These two circumstances were:\nfirst, that on meeting Alexey Alexandrovitch the day before in the\nstreet he had noticed that he was cold and reserved with him, and\nputting the expression of Alexey Alexandrovitch's face and the fact that\nhe had not come to see them or let them know of his arrival with the\nrumors he had heard about Anna and Vronsky, Stepan Arkadyevitch guessed\nthat something was wrong between the husband and wife.\n\nThat was one disagreeable thing. The other slightly disagreeable fact\nwas that the new head of his department, like all new heads, had the\nreputation already of a terrible person, who got up at six o'clock in\nthe morning, worked like a horse, and insisted on his subordinates\nworking in the same way. Moreover, this new head had the further\nreputation of being a bear in his manners, and was, according to all\nreports, a man of a class in all respects the opposite of that to which\nhis predecessor had belonged, and to which Stepan Arkadyevitch had\nhitherto belonged himself. On the previous day Stepan Arkadyevitch had\nappeared at the office in a uniform, and the new chief had been very\naffable and had talked to him as to an acquaintance. Consequently Stepan\nArkadyevitch deemed it his duty to call upon him in his non-official\ndress. The thought that the new chief might not tender him a warm\nreception was the other unpleasant thing. But Stepan Arkadyevitch\ninstinctively felt that everything would _come round_ all right.\n\"They're all people, all men, like us poor sinners; why be nasty and\nquarrelsome?\" he thought as he went into the hotel.\n\n\"Good-day, Vassily,\" he said, walking into the corridor with his hat\ncocked on one side, and addressing a footman he knew; \"why, you've let\nyour whiskers grow! Levin, number seven, eh? Take me up, please. And\nfind out whether Count Anitchkin\" (this was the new head) \"is\nreceiving.\"\n\n\"Yes, sir,\" Vassily responded, smiling. \"You've not been to see us for a\nlong while.\"\n\n\"I was here yesterday, but at the other entrance. Is this number seven?\"\n\nLevin was standing with a peasant from Tver in the middle of the room,\nmeasuring a fresh bearskin, when Stepan Arkadyevitch went in.\n\n\"What! you killed him?\" cried Stepan Arkadyevitch. \"Well done! A\nshe-bear? How are you, Arhip!\"\n\nHe shook hands with the peasant and sat down on the edge of a chair,\nwithout taking off his coat and hat.\n\n\"Come, take off your coat and stay a little,\" said Levin, taking his\nhat.\n\n\"No, I haven't time; I've only looked in for a tiny second,\" answered\nStepan Arkadyevitch. He threw open his coat, but afterwards did take it\noff, and sat on for a whole hour, talking to Levin about hunting and the\nmost intimate subjects.\n\n\"Come, tell me, please, what you did abroad? Where have you been?\" said\nStepan Arkadyevitch, when the peasant had gone.\n\n\"Oh, I stayed in Germany, in Prussia, in France, and in England--not in\nthe capitals, but in the manufacturing towns, and saw a great deal that\nwas new to me. And I'm glad I went.\"\n\n\"Yes, I knew your idea of the solution of the labor question.\"\n\n\"Not a bit: in Russia there can be no labor question. In Russia the\nquestion is that of the relation of the working people to the land;\nthough the question exists there too--but there it's a matter of\nrepairing what's been ruined, while with us...\"\n\nStepan Arkadyevitch listened attentively to Levin.\n\n\"Yes, yes!\" he said, \"it's very possible you're right. But I'm glad\nyou're in good spirits, and are hunting bears, and working, and\ninterested. Shtcherbatsky told me another story--he met you--that you\nwere in such a depressed state, talking of nothing but death....\"\n\n\"Well, what of it? I've not given up thinking of death,\" said Levin.\n\"It's true that it's high time I was dead; and that all this is\nnonsense. It's the truth I'm telling you. I do value my idea and my work\nawfully; but in reality only consider this: all this world of ours is\nnothing but a speck of mildew, which has grown up on a tiny planet. And\nfor us to suppose we can have something great--ideas, work--it's all\ndust and ashes.\"\n\n\"But all that's as old as the hills, my boy!\"\n\n\"It is old; but do you know, when you grasp this fully, then somehow\neverything becomes of no consequence. When you understand that you will\ndie tomorrow, if not today, and nothing will be left, then everything is\nso unimportant! And I consider my idea very important, but it turns out\nreally to be as unimportant too, even if it were carried out, as doing\nfor that bear. So one goes on living, amusing oneself with hunting, with\nwork--anything so as not to think of death!\"\n\nStepan Arkadyevitch smiled a subtle affectionate smile as he listened to\nLevin.\n\n\"Well, of course! Here you've come round to my point. Do you remember\nyou attacked me for seeking enjoyment in life? Don't be so severe, O\nmoralist!\"\n\n\"No; all the same, what's fine in life is...\" Levin hesitated--\"oh, I\ndon't know. All I know is that we shall soon be dead.\"\n\n\"Why so soon?\"\n\n\"And do you know, there's less charm in life, when one thinks of death,\nbut there's more peace.\"\n\n\"On the contrary, the finish is always the best. But I must be going,\"\nsaid Stepan Arkadyevitch, getting up for the tenth time.\n\n\"Oh, no, stay a bit!\" said Levin, keeping him. \"Now, when shall we see\neach other again? I'm going tomorrow.\"\n\n\"I'm a nice person! Why, that's just what I came for! You simply must\ncome to dinner with us today. Your brother's coming, and Karenin, my\nbrother-in-law.\"\n\n\"You don't mean to say he's here?\" said Levin, and he wanted to inquire\nabout Kitty. He had heard at the beginning of the winter that she was at\nPetersburg with her sister, the wife of the diplomat, and he did not\nknow whether she had come back or not; but he changed his mind and did\nnot ask. \"Whether she's coming or not, I don't care,\" he said to\nhimself.\n\n\"So you'll come?\"\n\n\"Of course.\"\n\n\"At five o'clock, then, and not evening dress.\"\n\nAnd Stepan Arkadyevitch got up and went down below to the new head of\nhis department. Instinct had not misled Stepan Arkadyevitch. The\nterrible new head turned out to be an extremely amenable person, and\nStepan Arkadyevitch lunched with him and stayed on, so that it was four\no'clock before he got to Alexey Alexandrovitch.\n\n\n\nChapter 8\n\n\nAlexey Alexandrovitch, on coming back from church service, had spent the\nwhole morning indoors. He had two pieces of business before him that\nmorning; first, to receive and send on a deputation from the native\ntribes which was on its way to Petersburg, and now at Moscow; secondly,\nto write the promised letter to the lawyer. The deputation, though it\nhad been summoned at Alexey Alexandrovitch's instigation, was not\nwithout its discomforting and even dangerous aspect, and he was glad he\nhad found it in Moscow. The members of this deputation had not the\nslightest conception of their duty and the part they were to play. They\nnaively believed that it was their business to lay before the commission\ntheir needs and the actual condition of things, and to ask assistance of\nthe government, and utterly failed to grasp that some of their\nstatements and requests supported the contention of the enemy's side,\nand so spoiled the whole business. Alexey Alexandrovitch was busily\nengaged with them for a long while, drew up a program for them from\nwhich they were not to depart, and on dismissing them wrote a letter to\nPetersburg for the guidance of the deputation. He had his chief support\nin this affair in the Countess Lidia Ivanovna. She was a specialist in\nthe matter of deputations, and no one knew better than she how to manage\nthem, and put them in the way they should go. Having completed this\ntask, Alexey Alexandrovitch wrote the letter to the lawyer. Without the\nslightest hesitation he gave him permission to act as he might judge\nbest. In the letter he enclosed three of Vronsky's notes to Anna, which\nwere in the portfolio he had taken away.\n\nSince Alexey Alexandrovitch had left home with the intention of not\nreturning to his family again, and since he had been at the lawyer's and\nhad spoken, though only to one man, of his intention, since especially\nhe had translated the matter from the world of real life to the world of\nink and paper, he had grown more and more used to his own intention, and\nby now distinctly perceived the feasibility of its execution.\n\nHe was sealing the envelope to the lawyer, when he heard the loud tones\nof Stepan Arkadyevitch's voice. Stepan Arkadyevitch was disputing with\nAlexey Alexandrovitch's servant, and insisting on being announced.\n\n\"No matter,\" thought Alexey Alexandrovitch, \"so much the better. I will\ninform him at once of my position in regard to his sister, and explain\nwhy it is I can't dine with him.\"\n\n\"Come in!\" he said aloud, collecting his papers, and putting them in the\nblotting-paper.\n\n\"There, you see, you're talking nonsense, and he's at home!\" responded\nStepan Arkadyevitch's voice, addressing the servant, who had refused to\nlet him in, and taking off his coat as he went, Oblonsky walked into the\nroom. \"Well, I'm awfully glad I've found you! So I hope...\" Stepan\nArkadyevitch began cheerfully.\n\n\"I cannot come,\" Alexey Alexandrovitch said coldly, standing and not\nasking his visitor to sit down.\n\nAlexey Alexandrovitch had thought to pass at once into those frigid\nrelations in which he ought to stand with the brother of a wife against\nwhom he was beginning a suit for divorce. But he had not taken into\naccount the ocean of kindliness brimming over in the heart of Stepan\nArkadyevitch.\n\nStepan Arkadyevitch opened wide his clear, shining eyes.\n\n\"Why can't you? What do you mean?\" he asked in perplexity, speaking in\nFrench. \"Oh, but it's a promise. And we're all counting on you.\"\n\n\"I want to tell you that I can't dine at your house, because the terms\nof relationship which have existed between us must cease.\"\n\n\"How? How do you mean? What for?\" said Stepan Arkadyevitch with a smile.\n\n\"Because I am beginning an action for divorce against your sister, my\nwife. I ought to have...\"\n\nBut, before Alexey Alexandrovitch had time to finish his sentence,\nStepan Arkadyevitch was behaving not at all as he had expected. He\ngroaned and sank into an armchair.\n\n\"No, Alexey Alexandrovitch! What are you saying?\" cried Oblonsky, and\nhis suffering was apparent in his face.\n\n\"It is so.\"\n\n\"Excuse me, I can't, I can't believe it!\"\n\nAlexey Alexandrovitch sat down, feeling that his words had not had the\neffect he anticipated, and that it would be unavoidable for him to\nexplain his position, and that, whatever explanations he might make, his\nrelations with his brother-in-law would remain unchanged.\n\n\"Yes, I am brought to the painful necessity of seeking a divorce,\" he\nsaid.\n\n\"I will say one thing, Alexey Alexandrovitch. I know you for an\nexcellent, upright man; I know Anna--excuse me, I can't change my\nopinion of her--for a good, an excellent woman; and so, excuse me, I\ncannot believe it. There is some misunderstanding,\" said he.\n\n\"Oh, if it were merely a misunderstanding!...\"\n\n\"Pardon, I understand,\" interposed Stepan Arkadyevitch. \"But of\ncourse.... One thing: you must not act in haste. You must not, you must\nnot act in haste!\"\n\n\"I am not acting in haste,\" Alexey Alexandrovitch said coldly, \"but one\ncannot ask advice of anyone in such a matter. I have quite made up my\nmind.\"\n\n\"This is awful!\" said Stepan Arkadyevitch. \"I would do one thing, Alexey\nAlexandrovitch. I beseech you, do it!\" he said. \"No action has yet been\ntaken, if I understand rightly. Before you take advice, see my wife,\ntalk to her. She loves Anna like a sister, she loves you, and she's a\nwonderful woman. For God's sake, talk to her! Do me that favor, I\nbeseech you!\"\n\nAlexey Alexandrovitch pondered, and Stepan Arkadyevitch looked at him\nsympathetically, without interrupting his silence.\n\n\"You will go to see her?\"\n\n\"I don't know. That was just why I have not been to see you. I imagine\nour relations must change.\"\n\n\"Why so? I don't see that. Allow me to believe that apart from our\nconnection you have for me, at least in part, the same friendly feeling\nI have always had for you ... and sincere esteem,\" said Stepan\nArkadyevitch, pressing his hand. \"Even if your worst suppositions were\ncorrect, I don't--and never would--take on myself to judge either side,\nand I see no reason why our relations should be affected. But now, do\nthis, come and see my wife.\"\n\n\"Well, we look at the matter differently,\" said Alexey Alexandrovitch\ncoldly. \"However, we won't discuss it.\"\n\n\"No; why shouldn't you come today to dine, anyway? My wife's expecting\nyou. Please, do come. And, above all, talk it over with her. She's a\nwonderful woman. For God's sake, on my knees, I implore you!\"\n\n\"If you so much wish it, I will come,\" said Alexey Alexandrovitch,\nsighing.\n\nAnd, anxious to change the conversation, he inquired about what\ninterested them both--the new head of Stepan Arkadyevitch's department,\na man not yet old, who had suddenly been promoted to so high a position.\n\nAlexey Alexandrovitch had previously felt no liking for Count Anitchkin,\nand had always differed from him in his opinions. But now, from a\nfeeling readily comprehensible to officials--that hatred felt by one who\nhas suffered a defeat in the service for one who has received a\npromotion, he could not endure him.\n\n\"Well, have you seen him?\" said Alexey Alexandrovitch with a malignant\nsmile.\n\n\"Of course; he was at our sitting yesterday. He seems to know his work\ncapitally, and to be very energetic.\"\n\n\"Yes, but what is his energy directed to?\" said Alexey Alexandrovitch.\n\"Is he aiming at doing anything, or simply undoing what's been done?\nIt's the great misfortune of our government--this paper administration,\nof which he's a worthy representative.\"\n\n\"Really, I don't know what fault one could find with him. His policy I\ndon't know, but one thing--he's a very nice fellow,\" answered Stepan\nArkadyevitch. \"I've just been seeing him, and he's really a capital\nfellow. We lunched together, and I taught him how to make, you know that\ndrink, wine and oranges. It's so cooling. And it's a wonder he didn't\nknow it. He liked it awfully. No, really he's a capital fellow.\"\n\nStepan Arkadyevitch glanced at his watch.\n\n\"Why, good heavens, it's four already, and I've still to go to\nDolgovushin's! So please come round to dinner. You can't imagine how you\nwill grieve my wife and me.\"\n\nThe way in which Alexey Alexandrovitch saw his brother-in-law out was\nvery different from the manner in which he had met him.\n\n\"I've promised, and I'll come,\" he answered wearily.\n\n\"Believe me, I appreciate it, and I hope you won't regret it,\" answered\nStepan Arkadyevitch, smiling.\n\nAnd, putting on his coat as he went, he patted the footman on the head,\nchuckled, and went out.\n\n\"At five o'clock, and not evening dress, please,\" he shouted once more,\nturning at the door.\n\n\n\nChapter 9\n\n\nIt was past five, and several guests had already arrived, before the\nhost himself got home. He went in together with Sergey Ivanovitch\nKoznishev and Pestsov, who had reached the street door at the same\nmoment. These were the two leading representatives of the Moscow\nintellectuals, as Oblonsky had called them. Both were men respected for\ntheir character and their intelligence. They respected each other, but\nwere in complete and hopeless disagreement upon almost every subject,\nnot because they belonged to opposite parties, but precisely because\nthey were of the same party (their enemies refused to see any\ndistinction between their views); but, in that party, each had his own\nspecial shade of opinion. And since no difference is less easily\novercome than the difference of opinion about semi-abstract questions,\nthey never agreed in any opinion, and had long, indeed, been accustomed\nto jeer without anger, each at the other's incorrigible aberrations.\n\nThey were just going in at the door, talking of the weather, when Stepan\nArkadyevitch overtook them. In the drawing room there were already\nsitting Prince Alexander Dmitrievitch Shtcherbatsky, young\nShtcherbatsky, Turovtsin, Kitty, and Karenin.\n\nStepan Arkadyevitch saw immediately that things were not going well in\nthe drawing-room without him. Darya Alexandrovna, in her best gray silk\ngown, obviously worried about the children, who were to have their\ndinner by themselves in the nursery, and by her husband's absence, was\nnot equal to the task of making the party mix without him. All were\nsitting like so many priests' wives on a visit (so the old prince\nexpressed it), obviously wondering why they were there, and pumping up\nremarks simply to avoid being silent. Turovtsin--good, simple man--felt\nunmistakably a fish out of water, and the smile with which his thick\nlips greeted Stepan Arkadyevitch said, as plainly as words: \"Well, old\nboy, you have popped me down in a learned set! A drinking party now, or\nthe _Chateau des Fleurs_, would be more in my line!\" The old prince sat\nin silence, his bright little eyes watching Karenin from one side, and\nStepan Arkadyevitch saw that he had already formed a phrase to sum up\nthat politician of whom guests were invited to partake as though he were\na sturgeon. Kitty was looking at the door, calling up all her energies\nto keep her from blushing at the entrance of Konstantin Levin. Young\nShtcherbatsky, who had not been introduced to Karenin, was trying to\nlook as though he were not in the least conscious of it. Karenin himself\nhad followed the Petersburg fashion for a dinner with ladies and was\nwearing evening dress and a white tie. Stepan Arkadyevitch saw by his\nface that he had come simply to keep his promise, and was performing a\ndisagreeable duty in being present at this gathering. He was indeed the\nperson chiefly responsible for the chill benumbing all the guests before\nStepan Arkadyevitch came in.\n\nOn entering the drawing room Stepan Arkadyevitch apologized, explaining\nthat he had been detained by that prince, who was always the scapegoat\nfor all his absences and unpunctualities, and in one moment he had made\nall the guests acquainted with each other, and, bringing together Alexey\nAlexandrovitch and Sergey Koznishev, started them on a discussion of the\nRussification of Poland, into which they immediately plunged with\nPestsov. Slapping Turovtsin on the shoulder, he whispered something\ncomic in his ear, and set him down by his wife and the old prince. Then\nhe told Kitty she was looking very pretty that evening, and presented\nShtcherbatsky to Karenin. In a moment he had so kneaded together the\nsocial dough that the drawing room became very lively, and there was a\nmerry buzz of voices. Konstantin Levin was the only person who had not\narrived. But this was so much the better, as going into the dining room,\nStepan Arkadyevitch found to his horror that the port and sherry had\nbeen procured from Depre, and not from Levy, and, directing that the\ncoachman should be sent off as speedily as possible to Levy's, he was\ngoing back to the drawing room.\n\nIn the dining room he was met by Konstantin Levin.\n\n\"I'm not late?\"\n\n\"You can never help being late!\" said Stepan Arkadyevitch, taking his\narm.\n\n\"Have you a lot of people? Who's here?\" asked Levin, unable to help\nblushing, as he knocked the snow off his cap with his glove.\n\n\"All our own set. Kitty's here. Come along, I'll introduce you to\nKarenin.\"\n\nStepan Arkadyevitch, for all his liberal views, was well aware that to\nmeet Karenin was sure to be felt a flattering distinction, and so\ntreated his best friends to this honor. But at that instant Konstantin\nLevin was not in a condition to feel all the gratification of making\nsuch an acquaintance. He had not seen Kitty since that memorable evening\nwhen he met Vronsky, not counting, that is, the moment when he had had a\nglimpse of her on the highroad. He had known at the bottom of his heart\nthat he would see her here today. But to keep his thoughts free, he had\ntried to persuade himself that he did not know it. Now when he heard\nthat she was here, he was suddenly conscious of such delight, and at the\nsame time of such dread, that his breath failed him and he could not\nutter what he wanted to say.\n\n\"What is she like, what is she like? Like what she used to be, or like\nwhat she was in the carriage? What if Darya Alexandrovna told the truth?\nWhy shouldn't it be the truth?\" he thought.\n\n\"Oh, please, introduce me to Karenin,\" he brought out with an effort,\nand with a desperately determined step he walked into the drawing room\nand beheld her.\n\nShe was not the same as she used to be, nor was she as she had been in\nthe carriage; she was quite different.\n\nShe was scared, shy, shame-faced, and still more charming from it. She\nsaw him the very instant he walked into the room. She had been expecting\nhim. She was delighted, and so confused at her own delight that there\nwas a moment, the moment when he went up to her sister and glanced again\nat her, when she, and he, and Dolly, who saw it all, thought she would\nbreak down and would begin to cry. She crimsoned, turned white,\ncrimsoned again, and grew faint, waiting with quivering lips for him to\ncome to her. He went up to her, bowed, and held out his hand without\nspeaking. Except for the slight quiver of her lips and the moisture in\nher eyes that made them brighter, her smile was almost calm as she said:\n\n\"How long it is since we've seen each other!\" and with desperate\ndetermination she pressed his hand with her cold hand.\n\n\"You've not seen me, but I've seen you,\" said Levin, with a radiant\nsmile of happiness. \"I saw you when you were driving from the railway\nstation to Ergushovo.\"\n\n\"When?\" she asked, wondering.\n\n\"You were driving to Ergushovo,\" said Levin, feeling as if he would sob\nwith the rapture that was flooding his heart. \"And how dared I associate\na thought of anything not innocent with this touching creature? And,\nyes, I do believe it's true what Darya Alexandrovna told me,\" he\nthought.\n\nStepan Arkadyevitch took him by the arm and led him away to Karenin.\n\n\"Let me introduce you.\" He mentioned their names.\n\n\"Very glad to meet you again,\" said Alexey Alexandrovitch coldly,\nshaking hands with Levin.\n\n\"You are acquainted?\" Stepan Arkadyevitch asked in surprise.\n\n\"We spent three hours together in the train,\" said Levin smiling, \"but\ngot out, just as in a masquerade, quite mystified--at least I was.\"\n\n\"Nonsense! Come along, please,\" said Stepan Arkadyevitch, pointing in\nthe direction of the dining room.\n\nThe men went into the dining-room and went up to a table, laid with six\nsorts of spirits and as many kinds of cheese, some with little silver\nspades and some without, caviar, herrings, preserves of various kinds,\nand plates with slices of French bread.\n\nThe men stood round the strong-smelling spirits and salt delicacies, and\nthe discussion of the Russification of Poland between Koznishev,\nKarenin, and Pestsov died down in anticipation of dinner.\n\nSergey Ivanovitch was unequaled in his skill in winding up the most\nheated and serious argument by some unexpected pinch of Attic salt that\nchanged the disposition of his opponent. He did this now.\n\nAlexey Alexandrovitch had been maintaining that the Russification of\nPoland could only be accomplished as a result of larger measures which\nought to be introduced by the Russian government.\n\nPestsov insisted that one country can only absorb another when it is the\nmore densely populated.\n\nKoznishev admitted both points, but with limitations. As they were going\nout of the drawing room to conclude the argument, Koznishev said,\nsmiling:\n\n\"So, then, for the Russification of our foreign populations there is but\none method--to bring up as many children as one can. My brother and I\nare terribly in fault, I see. You married men, especially you, Stepan\nArkadyevitch, are the real patriots: what number have you reached?\" he\nsaid, smiling genially at their host and holding out a tiny wine glass\nto him.\n\nEveryone laughed, and Stepan Arkadyevitch with particular good humor.\n\n\"Oh, yes, that's the best method!\" he said, munching cheese and filling\nthe wine-glass with a special sort of spirit. The conversation dropped\nat the jest.\n\n\"This cheese is not bad. Shall I give you some?\" said the master of the\nhouse. \"Why, have you been going in for gymnastics again?\" he asked\nLevin, pinching his muscle with his left hand. Levin smiled, bent his\narm, and under Stepan Arkadyevitch's fingers the muscles swelled up like\na sound cheese, hard as a knob of iron, through the fine cloth of the\ncoat.\n\n\"What biceps! A perfect Samson!\"\n\n\"I imagine great strength is needed for hunting bears,\" observed Alexey\nAlexandrovitch, who had the mistiest notions about the chase. He cut off\nand spread with cheese a wafer of bread fine as a spider-web.\n\nLevin smiled.\n\n\"Not at all. Quite the contrary; a child can kill a bear,\" he said, with\na slight bow moving aside for the ladies, who were approaching the\ntable.\n\n\"You have killed a bear, I've been told!\" said Kitty, trying assiduously\nto catch with her fork a perverse mushroom that would slip away, and\nsetting the lace quivering over her white arm. \"Are there bears on your\nplace?\" she added, turning her charming little head to him and smiling.\n\nThere was apparently nothing extraordinary in what she said, but what\nunutterable meaning there was for him in every sound, in every turn of\nher lips, her eyes, her hand as she said it! There was entreaty for\nforgiveness, and trust in him, and tenderness--soft, timid\ntenderness--and promise and hope and love for him, which he could not\nbut believe in and which choked him with happiness.\n\n\"No, we've been hunting in the Tver province. It was coming back from\nthere that I met your _beaufrere_ in the train, or your _beaufrere's_\nbrother-in-law,\" he said with a smile. \"It was an amusing meeting.\"\n\nAnd he began telling with droll good-humor how, after not sleeping all\nnight, he had, wearing an old fur-lined, full-skirted coat, got into\nAlexey Alexandrovitch's compartment.\n\n\"The conductor, forgetting the proverb, would have chucked me out on\naccount of my attire; but thereupon I began expressing my feelings in\nelevated language, and ... you, too,\" he said, addressing Karenin and\nforgetting his name, \"at first would have ejected me on the ground of\nthe old coat, but afterwards you took my part, for which I am extremely\ngrateful.\"\n\n\"The rights of passengers generally to choose their seats are too\nill-defined,\" said Alexey Alexandrovitch, rubbing the tips of his\nfingers on his handkerchief.\n\n\"I saw you were in uncertainty about me,\" said Levin, smiling\ngood-naturedly, \"but I made haste to plunge into intellectual\nconversation to smooth over the defects of my attire.\" Sergey\nIvanovitch, while he kept up a conversation with their hostess, had one\near for his brother, and he glanced askance at him. \"What is the matter\nwith him today? Why such a conquering hero?\" he thought. He did not know\nthat Levin was feeling as though he had grown wings. Levin knew she was\nlistening to his words and that she was glad to listen to him. And this\nwas the only thing that interested him. Not in that room only, but in\nthe whole world, there existed for him only himself, with enormously\nincreased importance and dignity in his own eyes, and she. He felt\nhimself on a pinnacle that made him giddy, and far away down below were\nall those nice excellent Karenins, Oblonskys, and all the world.\n\nQuite without attracting notice, without glancing at them, as though\nthere were no other places left, Stepan Arkadyevitch put Levin and Kitty\nside by side.\n\n\"Oh, you may as well sit there,\" he said to Levin.\n\nThe dinner was as choice as the china, in which Stepan Arkadyevitch was\na connoisseur. The _soupe Marie-Louise_ was a splendid success; the tiny\npies eaten with it melted in the mouth and were irreproachable. The two\nfootmen and Matvey, in white cravats, did their duty with the dishes and\nwines unobtrusively, quietly, and swiftly. On the material side the\ndinner was a success; it was no less so on the immaterial. The\nconversation, at times general and at times between individuals, never\npaused, and towards the end the company was so lively that the men rose\nfrom the table, without stopping speaking, and even Alexey\nAlexandrovitch thawed.\n\n\n\nChapter 10\n\n\nPestsov liked thrashing an argument out to the end, and was not\nsatisfied with Sergey Ivanovitch's words, especially as he felt the\ninjustice of his view.\n\n\"I did not mean,\" he said over the soup, addressing Alexey\nAlexandrovitch, \"mere density of population alone, but in conjunction\nwith fundamental ideas, and not by means of principles.\"\n\n\"It seems to me,\" Alexey Alexandrovitch said languidly, and with no\nhaste, \"that that's the same thing. In my opinion, influence over\nanother people is only possible to the people which has the higher\ndevelopment, which...\"\n\n\"But that's just the question,\" Pestsov broke in in his bass.\n\nHe was always in a hurry to speak, and seemed always to put his whole\nsoul into what he was saying. \"In what are we to make higher development\nconsist? The English, the French, the Germans, which is at the highest\nstage of development? Which of them will nationalize the other? We see\nthe Rhine provinces have been turned French, but the Germans are not at\na lower stage!\" he shouted. \"There is another law at work there.\"\n\n\"I fancy that the greater influence is always on the side of true\ncivilization,\" said Alexey Alexandrovitch, slightly lifting his\neyebrows.\n\n\"But what are we to lay down as the outward signs of true civilization?\"\nsaid Pestsov.\n\n\"I imagine such signs are generally very well known,\" said Alexey\nAlexandrovitch.\n\n\"But are they fully known?\" Sergey Ivanovitch put in with a subtle\nsmile. \"It is the accepted view now that real culture must be purely\nclassical; but we see most intense disputes on each side of the\nquestion, and there is no denying that the opposite camp has strong\npoints in its favor.\"\n\n\"You are for classics, Sergey Ivanovitch. Will you take red wine?\" said\nStepan Arkadyevitch.\n\n\"I am not expressing my own opinion of either form of culture,\" Sergey\nIvanovitch said, holding out his glass with a smile of condescension, as\nto a child. \"I only say that both sides have strong arguments to support\nthem,\" he went on, addressing Alexey Alexandrovitch. \"My sympathies are\nclassical from education, but in this discussion I am personally unable\nto arrive at a conclusion. I see no distinct grounds for classical\nstudies being given a preeminence over scientific studies.\"\n\n\"The natural sciences have just as great an educational value,\" put in\nPestsov. \"Take astronomy, take botany, or zoology with its system of\ngeneral principles.\"\n\n\"I cannot quite agree with that,\" responded Alexey Alexandrovitch \"It\nseems to me that one must admit that the very process of studying the\nforms of language has a peculiarly favorable influence on intellectual\ndevelopment. Moreover, it cannot be denied that the influence of the\nclassical authors is in the highest degree moral, while, unfortunately,\nwith the study of the natural sciences are associated the false and\nnoxious doctrines which are the curse of our day.\"\n\nSergey Ivanovitch would have said something, but Pestsov interrupted him\nin his rich bass. He began warmly contesting the justice of this view.\nSergey Ivanovitch waited serenely to speak, obviously with a convincing\nreply ready.\n\n\"But,\" said Sergey Ivanovitch, smiling subtly, and addressing Karenin,\n\"One must allow that to weigh all the advantages and disadvantages of\nclassical and scientific studies is a difficult task, and the question\nwhich form of education was to be preferred would not have been so\nquickly and conclusively decided if there had not been in favor of\nclassical education, as you expressed it just now, its moral--disons le\nmot--anti-nihilist influence.\"\n\n\"Undoubtedly.\"\n\n\"If it had not been for the distinctive property of anti-nihilistic\ninfluence on the side of classical studies, we should have considered\nthe subject more, have weighed the arguments on both sides,\" said Sergey\nIvanovitch with a subtle smile, \"we should have given elbow-room to both\ntendencies. But now we know that these little pills of classical\nlearning possess the medicinal property of anti-nihilism, and we boldly\nprescribe them to our patients.... But what if they had no such\nmedicinal property?\" he wound up humorously.\n\nAt Sergey Ivanovitch's little pills, everyone laughed; Turovtsin in\nespecial roared loudly and jovially, glad at last to have found\nsomething to laugh at, all he ever looked for in listening to\nconversation.\n\nStepan Arkadyevitch had not made a mistake in inviting Pestsov. With\nPestsov intellectual conversation never flagged for an instant. Directly\nSergey Ivanovitch had concluded the conversation with his jest, Pestsov\npromptly started a new one.\n\n\"I can't agree even,\" said he, \"that the government had that aim. The\ngovernment obviously is guided by abstract considerations, and remains\nindifferent to the influence its measures may exercise. The education of\nwomen, for instance, would naturally be regarded as likely to be\nharmful, but the government opens schools and universities for women.\"\n\nAnd the conversation at once passed to the new subject of the education\nof women.\n\nAlexey Alexandrovitch expressed the idea that the education of women is\napt to be confounded with the emancipation of women, and that it is only\nso that it can be considered dangerous.\n\n\"I consider, on the contrary, that the two questions are inseparably\nconnected together,\" said Pestsov; \"it is a vicious circle. Woman is\ndeprived of rights from lack of education, and the lack of education\nresults from the absence of rights. We must not forget that the\nsubjection of women is so complete, and dates from such ages back that\nwe are often unwilling to recognize the gulf that separates them from\nus,\" said he.\n\n\"You said rights,\" said Sergey Ivanovitch, waiting till Pestsov had\nfinished, \"meaning the right of sitting on juries, of voting, of\npresiding at official meetings, the right of entering the civil service,\nof sitting in parliament...\"\n\n\"Undoubtedly.\"\n\n\"But if women, as a rare exception, can occupy such positions, it seems\nto me you are wrong in using the expression 'rights.' It would be more\ncorrect to say duties. Every man will agree that in doing the duty of a\njuryman, a witness, a telegraph clerk, we feel we are performing duties.\nAnd therefore it would be correct to say that women are seeking duties,\nand quite legitimately. And one can but sympathize with this desire to\nassist in the general labor of man.\"\n\n\"Quite so,\" Alexey Alexandrovitch assented. \"The question, I imagine, is\nsimply whether they are fitted for such duties.\"\n\n\"They will most likely be perfectly fitted,\" said Stepan Arkadyevitch,\n\"when education has become general among them. We see this...\"\n\n\"How about the proverb?\" said the prince, who had a long while been\nintent on the conversation, his little comical eyes twinkling. \"I can\nsay it before my daughter: her hair is long, because her wit is...\"\n\n\"Just what they thought of the negroes before their emancipation!\" said\nPestsov angrily.\n\n\"What seems strange to me is that women should seek fresh duties,\" said\nSergey Ivanovitch, \"while we see, unhappily, that men usually try to\navoid them.\"\n\n\"Duties are bound up with rights--power, money, honor; those are what\nwomen are seeking,\" said Pestsov.\n\n\"Just as though I should seek the right to be a wet-nurse and feel\ninjured because women are paid for the work, while no one will take me,\"\nsaid the old prince.\n\nTurovtsin exploded in a loud roar of laughter and Sergey Ivanovitch\nregretted that he had not made this comparison. Even Alexey\nAlexandrovitch smiled.\n\n\"Yes, but a man can't nurse a baby,\" said Pestsov, \"while a woman...\"\n\n\"No, there was an Englishman who did suckle his baby on board ship,\"\nsaid the old prince, feeling this freedom in conversation permissible\nbefore his own daughters.\n\n\"There are as many such Englishmen as there would be women officials,\"\nsaid Sergey Ivanovitch.\n\n\"Yes, but what is a girl to do who has no family?\" put in Stepan\nArkadyevitch, thinking of Masha Tchibisova, whom he had had in his mind\nall along, in sympathizing with Pestsov and supporting him.\n\n\"If the story of such a girl were thoroughly sifted, you would find she\nhad abandoned a family--her own or a sister's, where she might have\nfound a woman's duties,\" Darya Alexandrovna broke in unexpectedly in a\ntone of exasperation, probably suspecting what sort of girl Stepan\nArkadyevitch was thinking of.\n\n\"But we take our stand on principle as the ideal,\" replied Pestsov in\nhis mellow bass. \"Woman desires to have rights, to be independent,\neducated. She is oppressed, humiliated by the consciousness of her\ndisabilities.\"\n\n\"And I'm oppressed and humiliated that they won't engage me at the\nFoundling,\" the old prince said again, to the huge delight of Turovtsin,\nwho in his mirth dropped his asparagus with the thick end in the sauce.\n\n\n\nChapter 11\n\n\nEveryone took part in the conversation except Kitty and Levin. At first,\nwhen they were talking of the influence that one people has on another,\nthere rose to Levin's mind what he had to say on the subject. But these\nideas, once of such importance in his eyes, seemed to come into his\nbrain as in a dream, and had now not the slightest interest for him. It\neven struck him as strange that they should be so eager to talk of what\nwas of no use to anyone. Kitty, too, should, one would have supposed,\nhave been interested in what they were saying of the rights and\neducation of women. How often she had mused on the subject, thinking of\nher friend abroad, Varenka, of her painful state of dependence, how\noften she had wondered about herself what would become of her if she did\nnot marry, and how often she had argued with her sister about it! But it\ndid not interest her at all. She and Levin had a conversation of their\nown, yet not a conversation, but some sort of mysterious communication,\nwhich brought them every moment nearer, and stirred in both a sense of\nglad terror before the unknown into which they were entering.\n\nAt first Levin, in answer to Kitty's question how he could have seen her\nlast year in the carriage, told her how he had been coming home from the\nmowing along the highroad and had met her.\n\n\"It was very, very early in the morning. You were probably only just\nawake. Your mother was asleep in the corner. It was an exquisite\nmorning. I was walking along wondering who it could be in a\nfour-in-hand? It was a splendid set of four horses with bells, and in a\nsecond you flashed by, and I saw you at the window--you were sitting\nlike this, holding the strings of your cap in both hands, and thinking\nawfully deeply about something,\" he said, smiling. \"How I should like to\nknow what you were thinking about then! Something important?\"\n\n\"Wasn't I dreadfully untidy?\" she wondered, but seeing the smile of\necstasy these reminiscences called up, she felt that the impression she\nhad made had been very good. She blushed and laughed with delight;\n\"Really I don't remember.\"\n\n\"How nicely Turovtsin laughs!\" said Levin, admiring his moist eyes and\nshaking chest.\n\n\"Have you known him long?\" asked Kitty.\n\n\"Oh, everyone knows him!\"\n\n\"And I see you think he's a horrid man?\"\n\n\"Not horrid, but nothing in him.\"\n\n\"Oh, you're wrong! And you must give up thinking so directly!\" said\nKitty. \"I used to have a very poor opinion of him too, but he, he's an\nawfully nice and wonderfully good-hearted man. He has a heart of gold.\"\n\n\"How could you find out what sort of heart he has?\"\n\n\"We are great friends. I know him very well. Last winter, soon after ...\nyou came to see us,\" she said, with a guilty and at the same time\nconfiding smile, \"all Dolly's children had scarlet fever, and he\nhappened to come and see her. And only fancy,\" she said in a whisper,\n\"he felt so sorry for her that he stayed and began to help her look\nafter the children. Yes, and for three weeks he stopped with them, and\nlooked after the children like a nurse.\"\n\n\"I am telling Konstantin Dmitrievitch about Turovtsin in the scarlet\nfever,\" she said, bending over to her sister.\n\n\"Yes, it was wonderful, noble!\" said Dolly, glancing towards Turovtsin,\nwho had become aware they were talking of him, and smiling gently to\nhim. Levin glanced once more at Turovtsin, and wondered how it was he\nhad not realized all this man's goodness before.\n\n\"I'm sorry, I'm sorry, and I'll never think ill of people again!\" he\nsaid gaily, genuinely expressing what he felt at the moment.\n\n\n\nChapter 12\n\n\nConnected with the conversation that had sprung up on the rights of\nwomen there were certain questions as to the inequality of rights in\nmarriage improper to discuss before the ladies. Pestsov had several\ntimes during dinner touched upon these questions, but Sergey Ivanovitch\nand Stepan Arkadyevitch carefully drew him off them.\n\nWhen they rose from the table and the ladies had gone out, Pestsov did\nnot follow them, but addressing Alexey Alexandrovitch, began to expound\nthe chief ground of inequality. The inequality in marriage, in his\nopinion, lay in the fact that the infidelity of the wife and the\ninfidelity of the husband are punished unequally, both by the law and by\npublic opinion. Stepan Arkadyevitch went hurriedly up to Alexey\nAlexandrovitch and offered him a cigar.\n\n\"No, I don't smoke,\" Alexey Alexandrovitch answered calmly, and as\nthough purposely wishing to show that he was not afraid of the subject,\nhe turned to Pestsov with a chilly smile.\n\n\"I imagine that such a view has a foundation in the very nature of\nthings,\" he said, and would have gone on to the drawing room. But at\nthis point Turovtsin broke suddenly and unexpectedly into the\nconversation, addressing Alexey Alexandrovitch.\n\n\"You heard, perhaps, about Pryatchnikov?\" said Turovtsin, warmed up by\nthe champagne he had drunk, and long waiting for an opportunity to break\nthe silence that had weighed on him. \"Vasya Pryatchnikov,\" he said, with\na good-natured smile on his damp, red lips, addressing himself\nprincipally to the most important guest, Alexey Alexandrovitch, \"they\ntold me today he fought a duel with Kvitsky at Tver, and has killed\nhim.\"\n\nJust as it always seems that one bruises oneself on a sore place, so\nStepan Arkadyevitch felt now that the conversation would by ill luck\nfall every moment on Alexey Alexandrovitch's sore spot. He would again\nhave got his brother-in-law away, but Alexey Alexandrovitch himself\ninquired, with curiosity:\n\n\"What did Pryatchnikov fight about?\"\n\n\"His wife. Acted like a man, he did! Called him out and shot him!\"\n\n\"Ah!\" said Alexey Alexandrovitch indifferently, and lifting his\neyebrows, he went into the drawing room.\n\n\"How glad I am you have come,\" Dolly said with a frightened smile,\nmeeting him in the outer drawing room. \"I must talk to you. Let's sit\nhere.\"\n\nAlexey Alexandrovitch, with the same expression of indifference, given\nhim by his lifted eyebrows, sat down beside Darya Alexandrovna, and\nsmiled affectedly.\n\n\"It's fortunate,\" said he, \"especially as I was meaning to ask you to\nexcuse me, and to be taking leave. I have to start tomorrow.\"\n\nDarya Alexandrovna was firmly convinced of Anna's innocence, and she\nfelt herself growing pale and her lips quivering with anger at this\nfrigid, unfeeling man, who was so calmly intending to ruin her innocent\nfriend.\n\n\"Alexey Alexandrovitch,\" she said, with desperate resolution looking him\nin the face, \"I asked you about Anna, you made me no answer. How is\nshe?\"\n\n\"She is, I believe, quite well, Darya Alexandrovna,\" replied Alexey\nAlexandrovitch, not looking at her.\n\n\"Alexey Alexandrovitch, forgive me, I have no right ... but I love Anna\nas a sister, and esteem her; I beg, I beseech you to tell me what is\nwrong between you? what fault do you find with her?\"\n\nAlexey Alexandrovitch frowned, and almost closing his eyes, dropped his\nhead.\n\n\"I presume that your husband has told you the grounds on which I\nconsider it necessary to change my attitude to Anna Arkadyevna?\" he\nsaid, not looking her in the face, but eyeing with displeasure\nShtcherbatsky, who was walking across the drawing room.\n\n\"I don't believe it, I don't believe it, I can't believe it!\" Dolly\nsaid, clasping her bony hands before her with a vigorous gesture. She\nrose quickly, and laid her hand on Alexey Alexandrovitch's sleeve. \"We\nshall be disturbed here. Come this way, please.\"\n\nDolly's agitation had an effect on Alexey Alexandrovitch. He got up and\nsubmissively followed her to the schoolroom. They sat down to a table\ncovered with an oilcloth cut in slits by penknives.\n\n\"I don't, I don't believe it!\" Dolly said, trying to catch his glance\nthat avoided her.\n\n\"One cannot disbelieve facts, Darya Alexandrovna,\" said he, with an\nemphasis on the word \"facts.\"\n\n\"But what has she done?\" said Darya Alexandrovna. \"What precisely has\nshe done?\"\n\n\"She has forsaken her duty, and deceived her husband. That's what she\nhas done,\" said he.\n\n\"No, no, it can't be! No, for God's sake, you are mistaken,\" said Dolly,\nputting her hands to her temples and closing her eyes.\n\nAlexey Alexandrovitch smiled coldly, with his lips alone, meaning to\nsignify to her and to himself the firmness of his conviction; but this\nwarm defense, though it could not shake him, reopened his wound. He\nbegan to speak with greater heat.\n\n\"It is extremely difficult to be mistaken when a wife herself informs\nher husband of the fact--informs him that eight years of her life, and a\nson, all that's a mistake, and that she wants to begin life again,\" he\nsaid angrily, with a snort.\n\n\"Anna and sin--I cannot connect them, I cannot believe it!\"\n\n\"Darya Alexandrovna,\" he said, now looking straight into Dolly's kindly,\ntroubled face, and feeling that his tongue was being loosened in spite\nof himself, \"I would give a great deal for doubt to be still possible.\nWhen I doubted, I was miserable, but it was better than now. When I\ndoubted, I had hope; but now there is no hope, and still I doubt of\neverything. I am in such doubt of everything that I even hate my son,\nand sometimes do not believe he is my son. I am very unhappy.\"\n\nHe had no need to say that. Darya Alexandrovna had seen that as soon as\nhe glanced into her face; and she felt sorry for him, and her faith in\nthe innocence of her friend began to totter.\n\n\"Oh, this is awful, awful! But can it be true that you are resolved on a\ndivorce?\"\n\n\"I am resolved on extreme measures. There is nothing else for me to do.\"\n\n\"Nothing else to do, nothing else to do...\" she replied, with tears in\nher eyes. \"Oh no, don't say nothing else to do!\" she said.\n\n\"What is horrible in a trouble of this kind is that one cannot, as in\nany other--in loss, in death--bear one's trouble in peace, but that one\nmust act,\" said he, as though guessing her thought. \"One must get out of\nthe humiliating position in which one is placed; one can't live _a\ntrois_.\"\n\n\"I understand, I quite understand that,\" said Dolly, and her head sank.\nShe was silent for a little, thinking of herself, of her own grief in\nher family, and all at once, with an impulsive movement, she raised her\nhead and clasped her hands with an imploring gesture. \"But wait a\nlittle! You are a Christian. Think of her! What will become of her, if\nyou cast her off?\"\n\n\"I have thought, Darya Alexandrovna, I have thought a great deal,\" said\nAlexey Alexandrovitch. His face turned red in patches, and his dim eyes\nlooked straight before him. Darya Alexandrovna at that moment pitied him\nwith all her heart. \"That was what I did indeed when she herself made\nknown to me my humiliation; I left everything as of old. I gave her a\nchance to reform, I tried to save her. And with what result? She would\nnot regard the slightest request--that she should observe decorum,\" he\nsaid, getting heated. \"One may save anyone who does not want to be\nruined; but if the whole nature is so corrupt, so depraved, that ruin\nitself seems to be her salvation, what's to be done?\"\n\n\"Anything, only not divorce!\" answered Darya Alexandrovna\n\n\"But what is anything?\"\n\n\"No, it is awful! She will be no one's wife, she will be lost!\"\n\n\"What can I do?\" said Alexey Alexandrovitch, raising his shoulders and\nhis eyebrows. The recollection of his wife's last act had so incensed\nhim that he had become frigid, as at the beginning of the conversation.\n\"I am very grateful for your sympathy, but I must be going,\" he said,\ngetting up.\n\n\"No, wait a minute. You must not ruin her. Wait a little; I will tell\nyou about myself. I was married, and my husband deceived me; in anger\nand jealousy, I would have thrown up everything, I would myself.... But\nI came to myself again; and who did it? Anna saved me. And here I am\nliving on. The children are growing up, my husband has come back to his\nfamily, and feels his fault, is growing purer, better, and I live on....\nI have forgiven it, and you ought to forgive!\"\n\nAlexey Alexandrovitch heard her, but her words had no effect on him now.\nAll the hatred of that day when he had resolved on a divorce had sprung\nup again in his soul. He shook himself, and said in a shrill, loud\nvoice:--\n\n\"Forgive I cannot, and do not wish to, and I regard it as wrong. I have\ndone everything for this woman, and she has trodden it all in the mud to\nwhich she is akin. I am not a spiteful man, I have never hated anyone,\nbut I hate her with my whole soul, and I cannot even forgive her,\nbecause I hate her too much for all the wrong she has done me!\" he said,\nwith tones of hatred in his voice.\n\n\"Love those that hate you....\" Darya Alexandrovna whispered timorously.\n\nAlexey Alexandrovitch smiled contemptuously. That he knew long ago, but\nit could not be applied to his case.\n\n\"Love those that hate you, but to love those one hates is impossible.\nForgive me for having troubled you. Everyone has enough to bear in his\nown grief!\" And regaining his self-possession, Alexey Alexandrovitch\nquietly took leave and went away.\n\n\n\nChapter 13\n\n\nWhen they rose from table, Levin would have liked to follow Kitty into\nthe drawing room; but he was afraid she might dislike this, as too\nobviously paying her attention. He remained in the little ring of men,\ntaking part in the general conversation, and without looking at Kitty,\nhe was aware of her movements, her looks, and the place where she was in\nthe drawing room.\n\nHe did at once, and without the smallest effort, keep the promise he had\nmade her--always to think well of all men, and to like everyone always.\nThe conversation fell on the village commune, in which Pestsov saw a\nsort of special principle, called by him the choral principle. Levin did\nnot agree with Pestsov, nor with his brother, who had a special attitude\nof his own, both admitting and not admitting the significance of the\nRussian commune. But he talked to them, simply trying to reconcile and\nsoften their differences. He was not in the least interested in what he\nsaid himself, and even less so in what they said; all he wanted was that\nthey and everyone should be happy and contented. He knew now the one\nthing of importance; and that one thing was at first there, in the\ndrawing room, and then began moving across and came to a standstill at\nthe door. Without turning round he felt the eyes fixed on him, and the\nsmile, and he could not help turning round. She was standing in the\ndoorway with Shtcherbatsky, looking at him.\n\n\"I thought you were going towards the piano,\" said he, going up to her.\n\"That's something I miss in the country--music.\"\n\n\"No; we only came to fetch you and thank you,\" she said, rewarding him\nwith a smile that was like a gift, \"for coming. What do they want to\nargue for? No one ever convinces anyone, you know.\"\n\n\"Yes; that's true,\" said Levin; \"it generally happens that one argues\nwarmly simply because one can't make out what one's opponent wants to\nprove.\"\n\nLevin had often noticed in discussions between the most intelligent\npeople that after enormous efforts, and an enormous expenditure of\nlogical subtleties and words, the disputants finally arrived at being\naware that what they had so long been struggling to prove to one another\nhad long ago, from the beginning of the argument, been known to both,\nbut that they liked different things, and would not define what they\nliked for fear of its being attacked. He had often had the experience of\nsuddenly in a discussion grasping what it was his opponent liked and at\nonce liking it too, and immediately he found himself agreeing, and then\nall arguments fell away as useless. Sometimes, too, he had experienced\nthe opposite, expressing at last what he liked himself, which he was\ndevising arguments to defend, and, chancing to express it well and\ngenuinely, he had found his opponent at once agreeing and ceasing to\ndispute his position. He tried to say this.\n\nShe knitted her brow, trying to understand. But directly he began to\nillustrate his meaning, she understood at once.\n\n\"I know: one must find out what he is arguing for, what is precious to\nhim, then one can...\"\n\nShe had completely guessed and expressed his badly expressed idea. Levin\nsmiled joyfully; he was struck by this transition from the confused,\nverbose discussion with Pestsov and his brother to this laconic, clear,\nalmost wordless communication of the most complex ideas.\n\nShtcherbatsky moved away from them, and Kitty, going up to a card table,\nsat down, and, taking up the chalk, began drawing diverging circles over\nthe new green cloth.\n\nThey began again on the subject that had been started at dinner--the\nliberty and occupations of women. Levin was of the opinion of Darya\nAlexandrovna that a girl who did not marry should find a woman's duties\nin a family. He supported this view by the fact that no family can get\non without women to help; that in every family, poor or rich, there are\nand must be nurses, either relations or hired.\n\n\"No,\" said Kitty, blushing, but looking at him all the more boldly with\nher truthful eyes; \"a girl may be so circumstanced that she cannot live\nin the family without humiliation, while she herself...\"\n\nAt the hint he understood her.\n\n\"Oh, yes,\" he said. \"Yes, yes, yes--you're right; you're right!\"\n\nAnd he saw all that Pestsov had been maintaining at dinner of the\nliberty of woman, simply from getting a glimpse of the terror of an old\nmaid's existence and its humiliation in Kitty's heart; and loving her,\nhe felt that terror and humiliation, and at once gave up his arguments.\n\nA silence followed. She was still drawing with the chalk on the table.\nHer eyes were shining with a soft light. Under the influence of her mood\nhe felt in all his being a continually growing tension of happiness.\n\n\"Ah! I've scribbled all over the table!\" she said, and, laying down the\nchalk, she made a movement as though to get up.\n\n\"What! shall I be left alone--without her?\" he thought with horror, and\nhe took the chalk. \"Wait a minute,\" he said, sitting down to the table.\n\"I've long wanted to ask you one thing.\"\n\nHe looked straight into her caressing, though frightened eyes.\n\n\"Please, ask it.\"\n\n\"Here,\" he said; and he wrote the initial letters, _w, y, t, m, i, c, n,\nb, d, t, m, n, o, t_. These letters meant, \"When you told me it could\nnever be, did that mean never, or then?\" There seemed no likelihood that\nshe could make out this complicated sentence; but he looked at her as\nthough his life depended on her understanding the words. She glanced at\nhim seriously, then leaned her puckered brow on her hands and began to\nread. Once or twice she stole a look at him, as though asking him, \"Is\nit what I think?\"\n\n\"I understand,\" she said, flushing a little.\n\n\"What is this word?\" he said, pointing to the n that stood for _never_.\n\n\"It means _never_,\" she said; \"but that's not true!\"\n\nHe quickly rubbed out what he had written, gave her the chalk, and stood\nup. She wrote, _t, i, c, n, a, d_.\n\nDolly was completely comforted in the depression caused by her\nconversation with Alexey Alexandrovitch when she caught sight of the two\nfigures: Kitty with the chalk in her hand, with a shy and happy smile\nlooking upwards at Levin, and his handsome figure bending over the table\nwith glowing eyes fastened one minute on the table and the next on her.\nHe was suddenly radiant: he had understood. It meant, \"Then I could not\nanswer differently.\"\n\nHe glanced at her questioningly, timidly.\n\n\"Only then?\"\n\n\"Yes,\" her smile answered.\n\n\"And n... and now?\" he asked.\n\n\"Well, read this. I'll tell you what I should like--should like so\nmuch!\" she wrote the initial letters, i, y, c, f, a, f, w, h. This\nmeant, \"If you could forget and forgive what happened.\"\n\nHe snatched the chalk with nervous, trembling fingers, and breaking it,\nwrote the initial letters of the following phrase, \"I have nothing to\nforget and to forgive; I have never ceased to love you.\"\n\nShe glanced at him with a smile that did not waver.\n\n\"I understand,\" she said in a whisper.\n\nHe sat down and wrote a long phrase. She understood it all, and without\nasking him, \"Is it this?\" took the chalk and at once answered.\n\nFor a long while he could not understand what she had written, and often\nlooked into her eyes. He was stupefied with happiness. He could not\nsupply the word she had meant; but in her charming eyes, beaming with\nhappiness, he saw all he needed to know. And he wrote three letters. But\nhe had hardly finished writing when she read them over her arm, and\nherself finished and wrote the answer, \"Yes.\"\n\n\"You're playing _secretaire_?\" said the old prince. \"But we must really\nbe getting along if you want to be in time at the theater.\"\n\nLevin got up and escorted Kitty to the door.\n\nIn their conversation everything had been said; it had been said that\nshe loved him, and that she would tell her father and mother that he\nwould come tomorrow morning.\n\n\n\nChapter 14\n\n\nWhen Kitty had gone and Levin was left alone, he felt such uneasiness\nwithout her, and such an impatient longing to get as quickly, as quickly\nas possible, to tomorrow morning, when he would see her again and be\nplighted to her forever, that he felt afraid, as though of death, of\nthose fourteen hours that he had to get through without her. It was\nessential for him to be with someone to talk to, so as not to be left\nalone, to kill time. Stepan Arkadyevitch would have been the companion\nmost congenial to him, but he was going out, he said, to a _soiree_, in\nreality to the ballet. Levin only had time to tell him he was happy, and\nthat he loved him, and would never, never forget what he had done for\nhim. The eyes and the smile of Stepan Arkadyevitch showed Levin that he\ncomprehended that feeling fittingly.\n\n\"Oh, so it's not time to die yet?\" said Stepan Arkadyevitch, pressing\nLevin's hand with emotion.\n\n\"N-n-no!\" said Levin.\n\nDarya Alexandrovna too, as she said good-bye to him, gave him a sort of\ncongratulation, saying, \"How glad I am you have met Kitty again! One\nmust value old friends.\" Levin did not like these words of Darya\nAlexandrovna's. She could not understand how lofty and beyond her it all\nwas, and she ought not to have dared to allude to it. Levin said\ngood-bye to them, but, not to be left alone, he attached himself to his\nbrother.\n\n\"Where are you going?\"\n\n\"I'm going to a meeting.\"\n\n\"Well, I'll come with you. May I?\"\n\n\"What for? Yes, come along,\" said Sergey Ivanovitch, smiling. \"What is\nthe matter with you today?\"\n\n\"With me? Happiness is the matter with me!\" said Levin, letting down the\nwindow of the carriage they were driving in. \"You don't mind?--it's so\nstifling. It's happiness is the matter with me! Why is it you have never\nmarried?\"\n\nSergey Ivanovitch smiled.\n\n\"I am very glad, she seems a nice gi...\" Sergey Ivanovitch was\nbeginning.\n\n\"Don't say it! don't say it!\" shouted Levin, clutching at the collar of\nhis fur coat with both hands, and muffling him up in it. \"She's a nice\ngirl\" were such simple, humble words, so out of harmony with his\nfeeling.\n\nSergey Ivanovitch laughed outright a merry laugh, which was rare with\nhim. \"Well, anyway, I may say that I'm very glad of it.\"\n\n\"That you may do tomorrow, tomorrow and nothing more! Nothing, nothing,\nsilence,\" said Levin, and muffling him once more in his fur coat, he\nadded: \"I do like you so! Well, is it possible for me to be present at\nthe meeting?\"\n\n\"Of course it is.\"\n\n\"What is your discussion about today?\" asked Levin, never ceasing\nsmiling.\n\nThey arrived at the meeting. Levin heard the secretary hesitatingly read\nthe minutes which he obviously did not himself understand; but Levin saw\nfrom this secretary's face what a good, nice, kind-hearted person he\nwas. This was evident from his confusion and embarrassment in reading\nthe minutes. Then the discussion began. They were disputing about the\nmisappropriation of certain sums and the laying of certain pipes, and\nSergey Ivanovitch was very cutting to two members, and said something at\ngreat length with an air of triumph; and another member, scribbling\nsomething on a bit of paper, began timidly at first, but afterwards\nanswered him very viciously and delightfully. And then Sviazhsky (he was\nthere too) said something too, very handsomely and nobly. Levin listened\nto them, and saw clearly that these missing sums and these pipes were\nnot anything real, and that they were not at all angry, but were all the\nnicest, kindest people, and everything was as happy and charming as\npossible among them. They did no harm to anyone, and were all enjoying\nit. What struck Levin was that he could see through them all today, and\nfrom little, almost imperceptible signs knew the soul of each, and saw\ndistinctly that they were all good at heart. And Levin himself in\nparticular they were all extremely fond of that day. That was evident\nfrom the way they spoke to him, from the friendly, affectionate way even\nthose he did not know looked at him.\n\n\"Well, did you like it?\" Sergey Ivanovitch asked him.\n\n\"Very much. I never supposed it was so interesting! Capital! Splendid!\"\n\nSviazhsky went up to Levin and invited him to come round to tea with\nhim. Levin was utterly at a loss to comprehend or recall what it was he\nhad disliked in Sviazhsky, what he had failed to find in him. He was a\nclever and wonderfully good-hearted man.\n\n\"Most delighted,\" he said, and asked after his wife and sister-in-law.\nAnd from a queer association of ideas, because in his imagination the\nidea of Sviazhsky's sister-in-law was connected with marriage, it\noccurred to him that there was no one to whom he could more suitably\nspeak of his happiness, and he was very glad to go and see them.\n\nSviazhsky questioned him about his improvements on his estate,\npresupposing, as he always did, that there was no possibility of doing\nanything not done already in Europe, and now this did not in the least\nannoy Levin. On the contrary, he felt that Sviazhsky was right, that the\nwhole business was of little value, and he saw the wonderful softness\nand consideration with which Sviazhsky avoided fully expressing his\ncorrect view. The ladies of the Sviazhsky household were particularly\ndelightful. It seemed to Levin that they knew all about it already and\nsympathized with him, saying nothing merely from delicacy. He stayed\nwith them one hour, two, three, talking of all sorts of subjects but the\none thing that filled his heart, and did not observe that he was boring\nthem dreadfully, and that it was long past their bedtime.\n\nSviazhsky went with him into the hall, yawning and wondering at the\nstrange humor his friend was in. It was past one o'clock. Levin went\nback to his hotel, and was dismayed at the thought that all alone now\nwith his impatience he had ten hours still left to get through. The\nservant, whose turn it was to be up all night, lighted his candles, and\nwould have gone away, but Levin stopped him. This servant, Yegor, whom\nLevin had noticed before, struck him as a very intelligent, excellent,\nand, above all, good-hearted man.\n\n\"Well, Yegor, it's hard work not sleeping, isn't it?\"\n\n\"One's got to put up with it! It's part of our work, you see. In a\ngentleman's house it's easier; but then here one makes more.\"\n\nIt appeared that Yegor had a family, three boys and a daughter, a\nsempstress, whom he wanted to marry to a cashier in a saddler's shop.\n\nLevin, on hearing this, informed Yegor that, in his opinion, in marriage\nthe great thing was love, and that with love one would always be happy,\nfor happiness rests only on oneself. Yegor listened attentively, and\nobviously quite took in Levin's idea, but by way of assent to it he\nenunciated, greatly to Levin's surprise, the observation that when he\nhad lived with good masters he had always been satisfied with his\nmasters, and now was perfectly satisfied with his employer, though he\nwas a Frenchman.\n\n\"Wonderfully good-hearted fellow!\" thought Levin.\n\n\"Well, but you yourself, Yegor, when you got married, did you love your\nwife?\"\n\n\"Ay! and why not?\" responded Yegor.\n\nAnd Levin saw that Yegor too was in an excited state and intending to\nexpress all his most heartfelt emotions.\n\n\"My life, too, has been a wonderful one. From a child up...\" he was\nbeginning with flashing eyes, apparently catching Levin's enthusiasm,\njust as people catch yawning.\n\nBut at that moment a ring was heard. Yegor departed, and Levin was left\nalone. He had eaten scarcely anything at dinner, had refused tea and\nsupper at Sviazhsky's, but he was incapable of thinking of supper. He\nhad not slept the previous night, but was incapable of thinking of sleep\neither. His room was cold, but he was oppressed by heat. He opened both\nthe movable panes in his window and sat down to the table opposite the\nopen panes. Over the snow-covered roofs could be seen a decorated cross\nwith chains, and above it the rising triangle of Charles's Wain with the\nyellowish light of Capella. He gazed at the cross, then at the stars,\ndrank in the fresh freezing air that flowed evenly into the room, and\nfollowed as though in a dream the images and memories that rose in his\nimagination. At four o'clock he heard steps in the passage and peeped\nout at the door. It was the gambler Myaskin, whom he knew, coming from\nthe club. He walked gloomily, frowning and coughing. \"Poor, unlucky\nfellow!\" thought Levin, and tears came into his eyes from love and pity\nfor this man. He would have talked with him, and tried to comfort him,\nbut remembering that he had nothing but his shirt on, he changed his\nmind and sat down again at the open pane to bathe in the cold air and\ngaze at the exquisite lines of the cross, silent, but full of meaning\nfor him, and the mounting lurid yellow star. At seven o'clock there was\na noise of people polishing the floors, and bells ringing in some\nservants' department, and Levin felt that he was beginning to get\nfrozen. He closed the pane, washed, dressed, and went out into the\nstreet.\n\n\n\nChapter 15\n\n\nThe streets were still empty. Levin went to the house of the\nShtcherbatskys. The visitors' doors were closed and everything was\nasleep. He walked back, went into his room again, and asked for coffee.\nThe day servant, not Yegor this time, brought it to him. Levin would\nhave entered into conversation with him, but a bell rang for the\nservant, and he went out. Levin tried to drink coffee and put some roll\nin his mouth, but his mouth was quite at a loss what to do with the\nroll. Levin, rejecting the roll, put on his coat and went out again for\na walk. It was nine o'clock when he reached the Shtcherbatskys' steps\nthe second time. In the house they were only just up, and the cook came\nout to go marketing. He had to get through at least two hours more.\n\nAll that night and morning Levin lived perfectly unconsciously, and felt\nperfectly lifted out of the conditions of material life. He had eaten\nnothing for a whole day, he had not slept for two nights, had spent\nseveral hours undressed in the frozen air, and felt not simply fresher\nand stronger than ever, but felt utterly independent of his body; he\nmoved without muscular effort, and felt as if he could do anything. He\nwas convinced he could fly upwards or lift the corner of the house, if\nneed be. He spent the remainder of the time in the street, incessantly\nlooking at his watch and gazing about him.\n\nAnd what he saw then, he never saw again after. The children especially\ngoing to school, the bluish doves flying down from the roofs to the\npavement, and the little loaves covered with flour, thrust out by an\nunseen hand, touched him. Those loaves, those doves, and those two boys\nwere not earthly creatures. It all happened at the same time: a boy ran\ntowards a dove and glanced smiling at Levin; the dove, with a whir of\nher wings, darted away, flashing in the sun, amid grains of snow that\nquivered in the air, while from a little window there came a smell of\nfresh-baked bread, and the loaves were put out. All of this together was\nso extraordinarily nice that Levin laughed and cried with delight. Going\na long way round by Gazetny Place and Kislovka, he went back again to\nthe hotel, and putting his watch before him, he sat down to wait for\ntwelve o'clock. In the next room they were talking about some sort of\nmachines, and swindling, and coughing their morning coughs. They did not\nrealize that the hand was near twelve. The hand reached it. Levin went\nout onto the steps. The sledge-drivers clearly knew all about it. They\ncrowded round Levin with happy faces, quarreling among themselves, and\noffering their services. Trying not to offend the other sledge drivers,\nand promising to drive with them too, Levin took one and told him to\ndrive to the Shtcherbatskys'. The sledge-driver was splendid in a white\nshirt-collar sticking out over his overcoat and into his strong,\nfull-blooded red neck. The sledge was high and comfortable, and\naltogether such a one as Levin never drove in after, and the horse was a\ngood one, and tried to gallop but didn't seem to move. The driver knew\nthe Shtcherbatskys' house, and drew up at the entrance with a curve of\nhis arm and a \"Wo!\" especially indicative of respect for his fare. The\nShtcherbatskys' hall-porter certainly knew all about it. This was\nevident from the smile in his eyes and the way he said:\n\n\"Well, it's a long while since you've been to see us, Konstantin\nDemitrievitch!\"\n\nNot only he knew all about it, but he was unmistakably delighted and\nmaking efforts to conceal his joy. Looking into his kindly old eyes,\nLevin realized even something new in his happiness.\n\n\"Are they up?\"\n\n\"Pray walk in! Leave it here,\" said he, smiling, as Levin would have\ncome back to take his hat. That meant something.\n\n\"To whom shall I announce your honor?\" asked the footman.\n\nThe footman, though a young man, and one of the new school of footmen, a\ndandy, was a very kind-hearted, good fellow, and he too knew all about\nit.\n\n\"The princess ... the prince ... the young princess...\" said Levin.\n\nThe first person he saw was Mademoiselle Linon. She walked across the\nroom, and her ringlets and her face were beaming. He had only just\nspoken to her, when suddenly he heard the rustle of a skirt at the door,\nand Mademoiselle Linon vanished from Levin's eyes, and a joyful terror\ncame over him at the nearness of his happiness. Mademoiselle Linon was\nin great haste, and leaving him, went out at the other door. Directly\nshe had gone out, swift, swift light steps sounded on the parquet, and\nhis bliss, his life, himself--what was best in himself, what he had so\nlong sought and longed for--was quickly, so quickly approaching him. She\ndid not walk, but seemed, by some unseen force, to float to him. He saw\nnothing but her clear, truthful eyes, frightened by the same bliss of\nlove that flooded his heart. Those eyes were shining nearer and nearer,\nblinding him with their light of love. She stopped still close to him,\ntouching him. Her hands rose and dropped onto his shoulders.\n\nShe had done all she could--she had run up to him and given herself up\nentirely, shy and happy. He put his arms round her and pressed his lips\nto her mouth that sought his kiss.\n\nShe too had not slept all night, and had been expecting him all the\nmorning.\n\nHer mother and father had consented without demur, and were happy in her\nhappiness. She had been waiting for him. She wanted to be the first to\ntell him her happiness and his. She had got ready to see him alone, and\nhad been delighted at the idea, and had been shy and ashamed, and did\nnot know herself what she was doing. She had heard his steps and voice,\nand had waited at the door for Mademoiselle Linon to go. Mademoiselle\nLinon had gone away. Without thinking, without asking herself how and\nwhat, she had gone up to him, and did as she was doing.\n\n\"Let us go to mamma!\" she said, taking him by the hand. For a long while\nhe could say nothing, not so much because he was afraid of desecrating\nthe loftiness of his emotion by a word, as that every time he tried to\nsay something, instead of words he felt that tears of happiness were\nwelling up. He took her hand and kissed it.\n\n\"Can it be true?\" he said at last in a choked voice. \"I can't believe\nyou love me, dear!\"\n\nShe smiled at that \"dear,\" and at the timidity with which he glanced at\nher.\n\n\"Yes!\" she said significantly, deliberately. \"I am so happy!\"\n\nNot letting go his hands, she went into the drawing room. The princess,\nseeing them, breathed quickly, and immediately began to cry and then\nimmediately began to laugh, and with a vigorous step Levin had not\nexpected, ran up to him, and hugging his head, kissed him, wetting his\ncheeks with her tears.\n\n\"So it is all settled! I am glad. Love her. I am glad.... Kitty!\"\n\n\"You've not been long settling things,\" said the old prince, trying to\nseem unmoved; but Levin noticed that his eyes were wet when he turned to\nhim.\n\n\"I've long, always wished for this!\" said the prince, taking Levin by\nthe arm and drawing him towards himself. \"Even when this little\nfeather-head fancied...\"\n\n\"Papa!\" shrieked Kitty, and shut his mouth with her hands.\n\n\"Well, I won't!\" he said. \"I'm very, very ... plea... Oh, what a fool I\nam...\"\n\nHe embraced Kitty, kissed her face, her hand, her face again, and made\nthe sign of the cross over her.\n\nAnd there came over Levin a new feeling of love for this man, till then\nso little known to him, when he saw how slowly and tenderly Kitty kissed\nhis muscular hand.\n\n\n\nChapter 16\n\n\nThe princess sat in her armchair, silent and smiling; the prince sat\ndown beside her. Kitty stood by her father's chair, still holding his\nhand. All were silent.\n\nThe princess was the first to put everything into words, and to\ntranslate all thoughts and feelings into practical questions. And all\nequally felt this strange and painful for the first minute.\n\n\"When is it to be? We must have the benediction and announcement. And\nwhen's the wedding to be? What do you think, Alexander?\"\n\n\"Here he is,\" said the old prince, pointing to Levin--\"he's the\nprincipal person in the matter.\"\n\n\"When?\" said Levin blushing. \"Tomorrow; If you ask me, I should say, the\nbenediction today and the wedding tomorrow.\"\n\n\"Come, _mon cher_, that's nonsense!\"\n\n\"Well, in a week.\"\n\n\"He's quite mad.\"\n\n\"No, why so?\"\n\n\"Well, upon my word!\" said the mother, smiling, delighted at this haste.\n\"How about the trousseau?\"\n\n\"Will there really be a trousseau and all that?\" Levin thought with\nhorror. \"But can the trousseau and the benediction and all that--can it\nspoil my happiness? Nothing can spoil it!\" He glanced at Kitty, and\nnoticed that she was not in the least, not in the very least, disturbed\nby the idea of the trousseau. \"Then it must be all right,\" he thought.\n\n\"Oh, I know nothing about it; I only said what I should like,\" he said\napologetically.\n\n\"We'll talk it over, then. The benediction and announcement can take\nplace now. That's very well.\"\n\nThe princess went up to her husband, kissed him, and would have gone\naway, but he kept her, embraced her, and, tenderly as a young lover,\nkissed her several times, smiling. The old people were obviously muddled\nfor a moment, and did not quite know whether it was they who were in\nlove again or their daughter. When the prince and the princess had gone,\nLevin went up to his betrothed and took her hand. He was self-possessed\nnow and could speak, and he had a great deal he wanted to tell her. But\nhe said not at all what he had to say.\n\n\"How I knew it would be so! I never hoped for it; and yet in my heart I\nwas always sure,\" he said. \"I believe that it was ordained.\"\n\n\"And I!\" she said. \"Even when....\" She stopped and went on again,\nlooking at him resolutely with her truthful eyes, \"Even when I thrust\nfrom me my happiness. I always loved you alone, but I was carried away.\nI ought to tell you.... Can you forgive that?\"\n\n\"Perhaps it was for the best. You will have to forgive me so much. I\nought to tell you...\"\n\nThis was one of the things he had meant to speak about. He had resolved\nfrom the first to tell her two things--that he was not chaste as she\nwas, and that he was not a believer. It was agonizing, but he considered\nhe ought to tell her both these facts.\n\n\"No, not now, later!\" he said.\n\n\"Very well, later, but you must certainly tell me. I'm not afraid of\nanything. I want to know everything. Now it is settled.\"\n\nHe added: \"Settled that you'll take me whatever I may be--you won't give\nme up? Yes?\"\n\n\"Yes, yes.\"\n\nTheir conversation was interrupted by Mademoiselle Linon, who with an\naffected but tender smile came to congratulate her favorite pupil.\nBefore she had gone, the servants came in with their congratulations.\nThen relations arrived, and there began that state of blissful absurdity\nfrom which Levin did not emerge till the day after his wedding. Levin\nwas in a continual state of awkwardness and discomfort, but the\nintensity of his happiness went on all the while increasing. He felt\ncontinually that a great deal was being expected of him--what, he did\nnot know; and he did everything he was told, and it all gave him\nhappiness. He had thought his engagement would have nothing about it\nlike others, that the ordinary conditions of engaged couples would spoil\nhis special happiness; but it ended in his doing exactly as other people\ndid, and his happiness being only increased thereby and becoming more\nand more special, more and more unlike anything that had ever happened.\n\n\"Now we shall have sweetmeats to eat,\" said Mademoiselle Linon--and\nLevin drove off to buy sweetmeats.\n\n\"Well, I'm very glad,\" said Sviazhsky. \"I advise you to get the bouquets\nfrom Fomin's.\"\n\n\"Oh, are they wanted?\" And he drove to Fomin's.\n\nHis brother offered to lend him money, as he would have so many\nexpenses, presents to give....\n\n\"Oh, are presents wanted?\" And he galloped to Foulde's.\n\nAnd at the confectioner's, and at Fomin's, and at Foulde's he saw that\nhe was expected; that they were pleased to see him, and prided\nthemselves on his happiness, just as every one whom he had to do with\nduring those days. What was extraordinary was that everyone not only\nliked him, but even people previously unsympathetic, cold, and callous,\nwere enthusiastic over him, gave way to him in everything, treated his\nfeeling with tenderness and delicacy, and shared his conviction that he\nwas the happiest man in the world because his betrothed was beyond\nperfection. Kitty too felt the same thing. When Countess Nordston\nventured to hint that she had hoped for something better, Kitty was so\nangry and proved so conclusively that nothing in the world could be\nbetter than Levin, that Countess Nordston had to admit it, and in\nKitty's presence never met Levin without a smile of ecstatic admiration.\n\nThe confession he had promised was the one painful incident of this\ntime. He consulted the old prince, and with his sanction gave Kitty his\ndiary, in which there was written the confession that tortured him. He\nhad written this diary at the time with a view to his future wife. Two\nthings caused him anguish: his lack of purity and his lack of faith. His\nconfession of unbelief passed unnoticed. She was religious, had never\ndoubted the truths of religion, but his external unbelief did not affect\nher in the least. Through love she knew all his soul, and in his soul\nshe saw what she wanted, and that such a state of soul should be called\nunbelieving was to her a matter of no account. The other confession set\nher weeping bitterly.\n\nLevin, not without an inner struggle, handed her his diary. He knew that\nbetween him and her there could not be, and should not be, secrets, and\nso he had decided that so it must be. But he had not realized what an\neffect it would have on her, he had not put himself in her place. It was\nonly when the same evening he came to their house before the theater,\nwent into her room and saw her tear-stained, pitiful, sweet face,\nmiserable with suffering he had caused and nothing could undo, he felt\nthe abyss that separated his shameful past from her dovelike purity, and\nwas appalled at what he had done.\n\n\"Take them, take these dreadful books!\" she said, pushing away the\nnotebooks lying before her on the table. \"Why did you give them me? No,\nit was better anyway,\" she added, touched by his despairing face. \"But\nit's awful, awful!\"\n\nHis head sank, and he was silent. He could say nothing.\n\n\"You can't forgive me,\" he whispered.\n\n\"Yes, I forgive you; but it's terrible!\"\n\nBut his happiness was so immense that this confession did not shatter\nit, it only added another shade to it. She forgave him; but from that\ntime more than ever he considered himself unworthy of her, morally bowed\ndown lower than ever before her, and prized more highly than ever his\nundeserved happiness.\n\n\n\nChapter 17\n\n\nUnconsciously going over in his memory the conversations that had taken\nplace during and after dinner, Alexey Alexandrovitch returned to his\nsolitary room. Darya Alexandrovna's words about forgiveness had aroused\nin him nothing but annoyance. The applicability or non-applicability of\nthe Christian precept to his own case was too difficult a question to be\ndiscussed lightly, and this question had long ago been answered by\nAlexey Alexandrovitch in the negative. Of all that had been said, what\nstuck most in his memory was the phrase of stupid, good-natured\nTurovtsin--\"_Acted like a man, he did! Called him out and shot him!_\"\nEveryone had apparently shared this feeling, though from politeness they\nhad not expressed it.\n\n\"But the matter is settled, it's useless thinking about it,\" Alexey\nAlexandrovitch told himself. And thinking of nothing but the journey\nbefore him, and the revision work he had to do, he went into his room\nand asked the porter who escorted him where his man was. The porter said\nthat the man had only just gone out. Alexey Alexandrovitch ordered tea\nto be sent him, sat down to the table, and taking the guidebook, began\nconsidering the route of his journey.\n\n\"Two telegrams,\" said his manservant, coming into the room. \"I beg your\npardon, your excellency; I'd only just that minute gone out.\"\n\nAlexey Alexandrovitch took the telegrams and opened them. The first\ntelegram was the announcement of Stremov's appointment to the very post\nKarenin had coveted. Alexey Alexandrovitch flung the telegram down, and\nflushing a little, got up and began to pace up and down the room. \"_Quos\nvult perdere dementat_,\" he said, meaning by _quos_ the persons\nresponsible for this appointment. He was not so much annoyed that he had\nnot received the post, that he had been conspicuously passed over; but\nit was incomprehensible, amazing to him that they did not see that the\nwordy phrase-monger Stremov was the last man fit for it. How could they\nfail to see how they were ruining themselves, lowering their _prestige_\nby this appointment?\n\n\"Something else in the same line,\" he said to himself bitterly, opening\nthe second telegram. The telegram was from his wife. Her name, written\nin blue pencil, \"Anna,\" was the first thing that caught his eye. \"I am\ndying; I beg, I implore you to come. I shall die easier with your\nforgiveness,\" he read. He smiled contemptuously, and flung down the\ntelegram. That this was a trick and a fraud, of that, he thought for the\nfirst minute, there could be no doubt.\n\n\"There is no deceit she would stick at. She was near her confinement.\nPerhaps it is the confinement. But what can be their aim? To legitimize\nthe child, to compromise me, and prevent a divorce,\" he thought. \"But\nsomething was said in it: I am dying....\" He read the telegram again,\nand suddenly the plain meaning of what was said in it struck him.\n\n\"And if it is true?\" he said to himself. \"If it is true that in the\nmoment of agony and nearness to death she is genuinely penitent, and I,\ntaking it for a trick, refuse to go? That would not only be cruel, and\neveryone would blame me, but it would be stupid on my part.\"\n\n\"Piotr, call a coach; I am going to Petersburg,\" he said to his servant.\n\nAlexey Alexandrovitch decided that he would go to Petersburg and see his\nwife. If her illness was a trick, he would say nothing and go away\nagain. If she was really in danger, and wished to see him before her\ndeath, he would forgive her if he found her alive, and pay her the last\nduties if he came too late.\n\nAll the way he thought no more of what he ought to do.\n\nWith a sense of weariness and uncleanness from the night spent in the\ntrain, in the early fog of Petersburg Alexey Alexandrovitch drove\nthrough the deserted Nevsky and stared straight before him, not thinking\nof what was awaiting him. He could not think about it, because in\npicturing what would happen, he could not drive away the reflection that\nher death would at once remove all the difficulty of his position.\nBakers, closed shops, night-cabmen, porters sweeping the pavements\nflashed past his eyes, and he watched it all, trying to smother the\nthought of what was awaiting him, and what he dared not hope for, and\nyet was hoping for. He drove up to the steps. A sledge and a carriage\nwith the coachman asleep stood at the entrance. As he went into the\nentry, Alexey Alexandrovitch, as it were, got out his resolution from\nthe remotest corner of his brain, and mastered it thoroughly. Its\nmeaning ran: \"If it's a trick, then calm contempt and departure. If\ntruth, do what is proper.\"\n\nThe porter opened the door before Alexey Alexandrovitch rang. The\nporter, Kapitonitch, looked queer in an old coat, without a tie, and in\nslippers.\n\n\"How is your mistress?\"\n\n\"A successful confinement yesterday.\"\n\nAlexey Alexandrovitch stopped short and turned white. He felt distinctly\nnow how intensely he had longed for her death.\n\n\"And how is she?\"\n\nKorney in his morning apron ran downstairs.\n\n\"Very ill,\" he answered. \"There was a consultation yesterday, and the\ndoctor's here now.\"\n\n\"Take my things,\" said Alexey Alexandrovitch, and feeling some relief at\nthe news that there was still hope of her death, he went into the hall.\n\nOn the hatstand there was a military overcoat. Alexey Alexandrovitch\nnoticed it and asked:\n\n\"Who is here?\"\n\n\"The doctor, the midwife, and Count Vronsky.\"\n\nAlexey Alexandrovitch went into the inner rooms.\n\nIn the drawing room there was no one; at the sound of his steps there\ncame out of her boudoir the midwife in a cap with lilac ribbons.\n\nShe went up to Alexey Alexandrovitch, and with the familiarity given by\nthe approach of death took him by the arm and drew him towards the\nbedroom.\n\n\"Thank God you've come! She keeps on about you and nothing but you,\" she\nsaid.\n\n\"Make haste with the ice!\" the doctor's peremptory voice said from the\nbedroom.\n\nAlexey Alexandrovitch went into her boudoir.\n\nAt the table, sitting sideways in a low chair, was Vronsky, his face\nhidden in his hands, weeping. He jumped up at the doctor's voice, took\nhis hands from his face, and saw Alexey Alexandrovitch. Seeing the\nhusband, he was so overwhelmed that he sat down again, drawing his head\ndown to his shoulders, as if he wanted to disappear; but he made an\neffort over himself, got up and said:\n\n\"She is dying. The doctors say there is no hope. I am entirely in your\npower, only let me be here ... though I am at your disposal. I...\"\n\nAlexey Alexandrovitch, seeing Vronsky's tears, felt a rush of that\nnervous emotion always produced in him by the sight of other people's\nsuffering, and turning away his face, he moved hurriedly to the door,\nwithout hearing the rest of his words. From the bedroom came the sound\nof Anna's voice saying something. Her voice was lively, eager, with\nexceedingly distinct intonations. Alexey Alexandrovitch went into the\nbedroom, and went up to the bed. She was lying turned with her face\ntowards him. Her cheeks were flushed crimson, her eyes glittered, her\nlittle white hands thrust out from the sleeves of her dressing gown were\nplaying with the quilt, twisting it about. It seemed as though she were\nnot only well and blooming, but in the happiest frame of mind. She was\ntalking rapidly, musically, and with exceptionally correct articulation\nand expressive intonation.\n\n\"For Alexey--I am speaking of Alexey Alexandrovitch (what a strange and\nawful thing that both are Alexey, isn't it?)--Alexey would not refuse\nme. I should forget, he would forgive.... But why doesn't he come? He's\nso good he doesn't know himself how good he is. Ah, my God, what agony!\nGive me some water, quick! Oh, that will be bad for her, my little girl!\nOh, very well then, give her to a nurse. Yes, I agree, it's better in\nfact. He'll be coming; it will hurt him to see her. Give her to the\nnurse.\"\n\n\"Anna Arkadyevna, he has come. Here he is!\" said the midwife, trying to\nattract her attention to Alexey Alexandrovitch.\n\n\"Oh, what nonsense!\" Anna went on, not seeing her husband. \"No, give her\nto me; give me my little one! He has not come yet. You say he won't\nforgive me, because you don't know him. No one knows him. I'm the only\none, and it was hard for me even. His eyes I ought to know--Seryozha has\njust the same eyes--and I can't bear to see them because of it. Has\nSeryozha had his dinner? I know everyone will forget him. He would not\nforget. Seryozha must be moved into the corner room, and Mariette must\nbe asked to sleep with him.\"\n\nAll of a sudden she shrank back, was silent; and in terror, as though\nexpecting a blow, as though to defend herself, she raised her hands to\nher face. She had seen her husband.\n\n\"No, no!\" she began. \"I am not afraid of him; I am afraid of death.\nAlexey, come here. I am in a hurry, because I've no time, I've not long\nleft to live; the fever will begin directly and I shall understand\nnothing more. Now I understand, I understand it all, I see it all!\"\n\nAlexey Alexandrovitch's wrinkled face wore an expression of agony; he\ntook her by the hand and tried to say something, but he could not utter\nit; his lower lip quivered, but he still went on struggling with his\nemotion, and only now and then glanced at her. And each time he glanced\nat her, he saw her eyes gazing at him with such passionate and\ntriumphant tenderness as he had never seen in them.\n\n\"Wait a minute, you don't know ... stay a little, stay!...\" She stopped,\nas though collecting her ideas. \"Yes,\" she began; \"yes, yes, yes. This\nis what I wanted to say. Don't be surprised at me. I'm still the\nsame.... But there is another woman in me, I'm afraid of her: she loved\nthat man, and I tried to hate you, and could not forget about her that\nused to be. I'm not that woman. Now I'm my real self, all myself. I'm\ndying now, I know I shall die, ask him. Even now I feel--see here, the\nweights on my feet, on my hands, on my fingers. My fingers--see how huge\nthey are! But this will soon all be over.... Only one thing I want:\nforgive me, forgive me quite. I'm terrible, but my nurse used to tell\nme; the holy martyr--what was her name? She was worse. And I'll go to\nRome; there's a wilderness, and there I shall be no trouble to any one,\nonly I'll take Seryozha and the little one.... No, you can't forgive me!\nI know, it can't be forgiven! No, no, go away, you're too good!\" She\nheld his hand in one burning hand, while she pushed him away with the\nother.\n\nThe nervous agitation of Alexey Alexandrovitch kept increasing, and had\nby now reached such a point that he ceased to struggle with it. He\nsuddenly felt that what he had regarded as nervous agitation was on the\ncontrary a blissful spiritual condition that gave him all at once a new\nhappiness he had never known. He did not think that the Christian law\nthat he had been all his life trying to follow, enjoined on him to\nforgive and love his enemies; but a glad feeling of love and forgiveness\nfor his enemies filled his heart. He knelt down, and laying his head in\nthe curve of her arm, which burned him as with fire through the sleeve,\nhe sobbed like a little child. She put her arm around his head, moved\ntowards him, and with defiant pride lifted up her eyes.\n\n\"That is he. I knew him! Now, forgive me, everyone, forgive me!...\nThey've come again; why don't they go away?... Oh, take these cloaks off\nme!\"\n\nThe doctor unloosed her hands, carefully laying her on the pillow, and\ncovered her up to the shoulders. She lay back submissively, and looked\nbefore her with beaming eyes.\n\n\"Remember one thing, that I needed nothing but forgiveness, and I want\nnothing more.... Why doesn't _he_ come?\" she said, turning to the door\ntowards Vronsky. \"Do come, do come! Give him your hand.\"\n\nVronsky came to the side of the bed, and seeing Anna, again hid his face\nin his hands.\n\n\"Uncover your face--look at him! He's a saint,\" she said. \"Oh! uncover\nyour face, do uncover it!\" she said angrily. \"Alexey Alexandrovitch, do\nuncover his face! I want to see him.\"\n\nAlexey Alexandrovitch took Vronsky's hands and drew them away from his\nface, which was awful with the expression of agony and shame upon it.\n\n\"Give him your hand. Forgive him.\"\n\nAlexey Alexandrovitch gave him his hand, not attempting to restrain the\ntears that streamed from his eyes.\n\n\"Thank God, thank God!\" she said, \"now everything is ready. Only to\nstretch my legs a little. There, that's capital. How badly these flowers\nare done--not a bit like a violet,\" she said, pointing to the hangings.\n\"My God, my God! when will it end? Give me some morphine. Doctor, give\nme some morphine! Oh, my God, my God!\"\n\nAnd she tossed about on the bed.\n\nThe doctors said that it was puerperal fever, and that it was\nninety-nine chances in a hundred it would end in death. The whole day\nlong there was fever, delirium, and unconsciousness. At midnight the\npatient lay without consciousness, and almost without pulse.\n\nThe end was expected every minute.\n\nVronsky had gone home, but in the morning he came to inquire, and Alexey\nAlexandrovitch meeting him in the hall, said: \"Better stay, she might\nask for you,\" and himself led him to his wife's boudoir. Towards\nmorning, there was a return again of excitement, rapid thought and talk,\nand again it ended in unconsciousness. On the third day it was the same\nthing, and the doctors said there was hope. That day Alexey\nAlexandrovitch went into the boudoir where Vronsky was sitting, and\nclosing the door sat down opposite him.\n\n\"Alexey Alexandrovitch,\" said Vronsky, feeling that a statement of the\nposition was coming, \"I can't speak, I can't understand. Spare me!\nHowever hard it is for you, believe me, it is more terrible for me.\"\n\nHe would have risen; but Alexey Alexandrovitch took him by the hand and\nsaid:\n\n\"I beg you to hear me out; it is necessary. I must explain my feelings,\nthe feelings that have guided me and will guide me, so that you may not\nbe in error regarding me. You know I had resolved on a divorce, and had\neven begun to take proceedings. I won't conceal from you that in\nbeginning this I was in uncertainty, I was in misery; I will confess\nthat I was pursued by a desire to revenge myself on you and on her. When\nI got the telegram, I came here with the same feelings; I will say more,\nI longed for her death. But....\" He paused, pondering whether to\ndisclose or not to disclose his feeling to him. \"But I saw her and\nforgave her. And the happiness of forgiveness has revealed to me my\nduty. I forgive completely. I would offer the other cheek, I would give\nmy cloak if my coat be taken. I pray to God only not to take from me the\nbliss of forgiveness!\"\n\nTears stood in his eyes, and the luminous, serene look in them impressed\nVronsky.\n\n\"This is my position: you can trample me in the mud, make me the\nlaughing-stock of the world, I will not abandon her, and I will never\nutter a word of reproach to you,\" Alexey Alexandrovitch went on. \"My\nduty is clearly marked for me; I ought to be with her, and I will be. If\nshe wishes to see you, I will let you know, but now I suppose it would\nbe better for you to go away.\"\n\nHe got up, and sobs cut short his words. Vronsky too was getting up, and\nin a stooping, not yet erect posture, looked up at him from under his\nbrows. He did not understand Alexey Alexandrovitch's feeling, but he\nfelt that it was something higher and even unattainable for him with his\nview of life.\n\n\n\nChapter 18\n\n\nAfter the conversation with Alexey Alexandrovitch, Vronsky went out onto\nthe steps of the Karenins' house and stood still, with difficulty\nremembering where he was, and where he ought to walk or drive. He felt\ndisgraced, humiliated, guilty, and deprived of all possibility of\nwashing away his humiliation. He felt thrust out of the beaten track\nalong which he had so proudly and lightly walked till then. All the\nhabits and rules of his life that had seemed so firm, had turned out\nsuddenly false and inapplicable. The betrayed husband, who had figured\ntill that time as a pitiful creature, an incidental and somewhat\nludicrous obstacle to his happiness, had suddenly been summoned by her\nherself, elevated to an awe-inspiring pinnacle, and on the pinnacle that\nhusband had shown himself, not malignant, not false, not ludicrous, but\nkind and straightforward and large. Vronsky could not but feel this, and\nthe parts were suddenly reversed. Vronsky felt his elevation and his own\nabasement, his truth and his own falsehood. He felt that the husband was\nmagnanimous even in his sorrow, while he had been base and petty in his\ndeceit. But this sense of his own humiliation before the man he had\nunjustly despised made up only a small part of his misery. He felt\nunutterably wretched now, for his passion for Anna, which had seemed to\nhim of late to be growing cooler, now that he knew he had lost her\nforever, was stronger than ever it had been. He had seen all of her in\nher illness, had come to know her very soul, and it seemed to him that\nhe had never loved her till then. And now when he had learned to know\nher, to love her as she should be loved, he had been humiliated before\nher, and had lost her forever, leaving with her nothing of himself but a\nshameful memory. Most terrible of all had been his ludicrous, shameful\nposition when Alexey Alexandrovitch had pulled his hands away from his\nhumiliated face. He stood on the steps of the Karenins' house like one\ndistraught, and did not know what to do.\n\n\"A sledge, sir?\" asked the porter.\n\n\"Yes, a sledge.\"\n\nOn getting home, after three sleepless nights, Vronsky, without\nundressing, lay down flat on the sofa, clasping his hands and laying his\nhead on them. His head was heavy. Images, memories, and ideas of the\nstrangest description followed one another with extraordinary rapidity\nand vividness. First it was the medicine he had poured out for the\npatient and spilt over the spoon, then the midwife's white hands, then\nthe queer posture of Alexey Alexandrovitch on the floor beside the bed.\n\n\"To sleep! To forget!\" he said to himself with the serene confidence of\na healthy man that if he is tired and sleepy, he will go to sleep at\nonce. And the same instant his head did begin to feel drowsy and he\nbegan to drop off into forgetfulness. The waves of the sea of\nunconsciousness had begun to meet over his head, when all at once--it\nwas as though a violent shock of electricity had passed over him. He\nstarted so that he leaped up on the springs of the sofa, and leaning on\nhis arms got in a panic onto his knees. His eyes were wide open as\nthough he had never been asleep. The heaviness in his head and the\nweariness in his limbs that he had felt a minute before had suddenly\ngone.\n\n\"You may trample me in the mud,\" he heard Alexey Alexandrovitch's words\nand saw him standing before him, and saw Anna's face with its burning\nflush and glittering eyes, gazing with love and tenderness not at him\nbut at Alexey Alexandrovitch; he saw his own, as he fancied, foolish and\nludicrous figure when Alexey Alexandrovitch took his hands away from his\nface. He stretched out his legs again and flung himself on the sofa in\nthe same position and shut his eyes.\n\n\"To sleep! To forget!\" he repeated to himself. But with his eyes shut he\nsaw more distinctly than ever Anna's face as it had been on the\nmemorable evening before the races.\n\n\"That is not and will not be, and she wants to wipe it out of her\nmemory. But I cannot live without it. How can we be reconciled? how can\nwe be reconciled?\" he said aloud, and unconsciously began to repeat\nthese words. This repetition checked the rising up of fresh images and\nmemories, which he felt were thronging in his brain. But repeating words\ndid not check his imagination for long. Again in extraordinarily rapid\nsuccession his best moments rose before his mind, and then his recent\nhumiliation. \"Take away his hands,\" Anna's voice says. He takes away his\nhands and feels the shamestruck and idiotic expression of his face.\n\nHe still lay down, trying to sleep, though he felt there was not the\nsmallest hope of it, and kept repeating stray words from some chain of\nthought, trying by this to check the rising flood of fresh images. He\nlistened, and heard in a strange, mad whisper words repeated: \"I did not\nappreciate it, did not make enough of it. I did not appreciate it, did\nnot make enough of it.\"\n\n\"What's this? Am I going out of my mind?\" he said to himself. \"Perhaps.\nWhat makes men go out of their minds; what makes men shoot themselves?\"\nhe answered himself, and opening his eyes, he saw with wonder an\nembroidered cushion beside him, worked by Varya, his brother's wife. He\ntouched the tassel of the cushion, and tried to think of Varya, of when\nhe had seen her last. But to think of anything extraneous was an\nagonizing effort. \"No, I must sleep!\" He moved the cushion up, and\npressed his head into it, but he had to make an effort to keep his eyes\nshut. He jumped up and sat down. \"That's all over for me,\" he said to\nhimself. \"I must think what to do. What is left?\" His mind rapidly ran\nthrough his life apart from his love of Anna.\n\n\"Ambition? Serpuhovskoy? Society? The court?\" He could not come to a\npause anywhere. All of it had had meaning before, but now there was no\nreality in it. He got up from the sofa, took off his coat, undid his\nbelt, and uncovering his hairy chest to breathe more freely, walked up\nand down the room. \"This is how people go mad,\" he repeated, \"and how\nthey shoot themselves ... to escape humiliation,\" he added slowly.\n\nHe went to the door and closed it, then with fixed eyes and clenched\nteeth he went up to the table, took a revolver, looked round him, turned\nit to a loaded barrel, and sank into thought. For two minutes, his head\nbent forward with an expression of an intense effort of thought, he\nstood with the revolver in his hand, motionless, thinking.\n\n\"Of course,\" he said to himself, as though a logical, continuous, and\nclear chain of reasoning had brought him to an indubitable conclusion.\nIn reality this \"of course,\" that seemed convincing to him, was simply\nthe result of exactly the same circle of memories and images through\nwhich he had passed ten times already during the last hour--memories of\nhappiness lost forever. There was the same conception of the\nsenselessness of everything to come in life, the same consciousness of\nhumiliation. Even the sequence of these images and emotions was the\nsame.\n\n\"Of course,\" he repeated, when for the third time his thought passed\nagain round the same spellbound circle of memories and images, and\npulling the revolver to the left side of his chest, and clutching it\nvigorously with his whole hand, as it were, squeezing it in his fist, he\npulled the trigger. He did not hear the sound of the shot, but a violent\nblow on his chest sent him reeling. He tried to clutch at the edge of\nthe table, dropped the revolver, staggered, and sat down on the ground,\nlooking about him in astonishment. He did not recognize his room,\nlooking up from the ground, at the bent legs of the table, at the\nwastepaper basket, and the tiger-skin rug. The hurried, creaking steps\nof his servant coming through the drawing room brought him to his\nsenses. He made an effort at thought, and was aware that he was on the\nfloor; and seeing blood on the tiger-skin rug and on his arm, he knew he\nhad shot himself.\n\n\"Idiotic! Missed!\" he said, fumbling after the revolver. The revolver\nwas close beside him--he sought further off. Still feeling for it, he\nstretched out to the other side, and not being strong enough to keep his\nbalance, fell over, streaming with blood.\n\nThe elegant, whiskered manservant, who used to be continually\ncomplaining to his acquaintances of the delicacy of his nerves, was so\npanic-stricken on seeing his master lying on the floor, that he left him\nlosing blood while he ran for assistance. An hour later Varya, his\nbrother's wife, had arrived, and with the assistance of three doctors,\nwhom she had sent for in all directions, and who all appeared at the\nsame moment, she got the wounded man to bed, and remained to nurse him.\n\n\n\nChapter 19\n\n\nThe mistake made by Alexey Alexandrovitch in that, when preparing for\nseeing his wife, he had overlooked the possibility that her repentance\nmight be sincere, and he might forgive her, and she might not die--this\nmistake was two months after his return from Moscow brought home to him\nin all its significance. But the mistake made by him had arisen not\nsimply from his having overlooked that contingency, but also from the\nfact that until that day of his interview with his dying wife, he had\nnot known his own heart. At his sick wife's bedside he had for the first\ntime in his life given way to that feeling of sympathetic suffering\nalways roused in him by the sufferings of others, and hitherto looked on\nby him with shame as a harmful weakness. And pity for her, and remorse\nfor having desired her death, and most of all, the joy of forgiveness,\nmade him at once conscious, not simply of the relief of his own\nsufferings, but of a spiritual peace he had never experienced before. He\nsuddenly felt that the very thing that was the source of his sufferings\nhad become the source of his spiritual joy; that what had seemed\ninsoluble while he was judging, blaming, and hating, had become clear\nand simple when he forgave and loved.\n\nHe forgave his wife and pitied her for her sufferings and her remorse.\nHe forgave Vronsky, and pitied him, especially after reports reached him\nof his despairing action. He felt more for his son than before. And he\nblamed himself now for having taken too little interest in him. But for\nthe little newborn baby he felt a quite peculiar sentiment, not of pity,\nonly, but of tenderness. At first, from a feeling of compassion alone,\nhe had been interested in the delicate little creature, who was not his\nchild, and who was cast on one side during her mother's illness, and\nwould certainly have died if he had not troubled about her, and he did\nnot himself observe how fond he became of her. He would go into the\nnursery several times a day, and sit there for a long while, so that the\nnurses, who were at first afraid of him, got quite used to his presence.\nSometimes for half an hour at a stretch he would sit silently gazing at\nthe saffron-red, downy, wrinkled face of the sleeping baby, watching the\nmovements of the frowning brows, and the fat little hands, with clenched\nfingers, that rubbed the little eyes and nose. At such moments\nparticularly, Alexey Alexandrovitch had a sense of perfect peace and\ninward harmony, and saw nothing extraordinary in his position, nothing\nthat ought to be changed.\n\nBut as time went on, he saw more and more distinctly that however\nnatural the position now seemed to him, he would not long be allowed to\nremain in it. He felt that besides the blessed spiritual force\ncontrolling his soul, there was another, a brutal force, as powerful, or\nmore powerful, which controlled his life, and that this force would not\nallow him that humble peace he longed for. He felt that everyone was\nlooking at him with inquiring wonder, that he was not understood, and\nthat something was expected of him. Above all, he felt the instability\nand unnaturalness of his relations with his wife.\n\nWhen the softening effect of the near approach of death had passed away,\nAlexey Alexandrovitch began to notice that Anna was afraid of him, ill\nat ease with him, and could not look him straight in the face. She\nseemed to be wanting, and not daring, to tell him something; and as\nthough foreseeing their present relations could not continue, she seemed\nto be expecting something from him.\n\nTowards the end of February it happened that Anna's baby daughter, who\nhad been named Anna too, fell ill. Alexey Alexandrovitch was in the\nnursery in the morning, and leaving orders for the doctor to be sent\nfor, he went to his office. On finishing his work, he returned home at\nfour. Going into the hall he saw a handsome groom, in a braided livery\nand a bear fur cape, holding a white fur cloak.\n\n\"Who is here?\" asked Alexey Alexandrovitch.\n\n\"Princess Elizaveta Federovna Tverskaya,\" the groom answered, and it\nseemed to Alexey Alexandrovitch that he grinned.\n\nDuring all this difficult time Alexey Alexandrovitch had noticed that\nhis worldly acquaintances, especially women, took a peculiar interest in\nhim and his wife. All these acquaintances he observed with difficulty\nconcealing their mirth at something; the same mirth that he had\nperceived in the lawyer's eyes, and just now in the eyes of this groom.\nEveryone seemed, somehow, hugely delighted, as though they had just been\nat a wedding. When they met him, with ill-disguised enjoyment they\ninquired after his wife's health. The presence of Princess Tverskaya was\nunpleasant to Alexey Alexandrovitch from the memories associated with\nher, and also because he disliked her, and he went straight to the\nnursery. In the day nursery Seryozha, leaning on the table with his legs\non a chair, was drawing and chatting away merrily. The English\ngoverness, who had during Anna's illness replaced the French one, was\nsitting near the boy knitting a shawl. She hurriedly got up, curtseyed,\nand pulled Seryozha.\n\nAlexey Alexandrovitch stroked his son's hair, answered the governess's\ninquiries about his wife, and asked what the doctor had said of the\nbaby.\n\n\"The doctor said it was nothing serious, and he ordered a bath, sir.\"\n\n\"But she is still in pain,\" said Alexey Alexandrovitch, listening to the\nbaby's screaming in the next room.\n\n\"I think it's the wet-nurse, sir,\" the Englishwoman said firmly.\n\n\"What makes you think so?\" he asked, stopping short.\n\n\"It's just as it was at Countess Paul's, sir. They gave the baby\nmedicine, and it turned out that the baby was simply hungry: the nurse\nhad no milk, sir.\"\n\nAlexey Alexandrovitch pondered, and after standing still a few seconds\nhe went in at the other door. The baby was lying with its head thrown\nback, stiffening itself in the nurse's arms, and would not take the\nplump breast offered it; and it never ceased screaming in spite of the\ndouble hushing of the wet-nurse and the other nurse, who was bending\nover her.\n\n\"Still no better?\" said Alexey Alexandrovitch.\n\n\"She's very restless,\" answered the nurse in a whisper.\n\n\"Miss Edwarde says that perhaps the wet-nurse has no milk,\" he said.\n\n\"I think so too, Alexey Alexandrovitch.\"\n\n\"Then why didn't you say so?\"\n\n\"Who's one to say it to? Anna Arkadyevna still ill...\" said the nurse\ndiscontentedly.\n\nThe nurse was an old servant of the family. And in her simple words\nthere seemed to Alexey Alexandrovitch an allusion to his position.\n\nThe baby screamed louder than ever, struggling and sobbing. The nurse,\nwith a gesture of despair, went to it, took it from the wet-nurse's\narms, and began walking up and down, rocking it.\n\n\"You must ask the doctor to examine the wet-nurse,\" said Alexey\nAlexandrovitch. The smartly dressed and healthy-looking nurse,\nfrightened at the idea of losing her place, muttered something to\nherself, and covering her bosom, smiled contemptuously at the idea of\ndoubts being cast on her abundance of milk. In that smile, too, Alexey\nAlexandrovitch saw a sneer at his position.\n\n\"Luckless child!\" said the nurse, hushing the baby, and still walking up\nand down with it.\n\nAlexey Alexandrovitch sat down, and with a despondent and suffering face\nwatched the nurse walking to and fro.\n\nWhen the child at last was still, and had been put in a deep bed, and\nthe nurse, after smoothing the little pillow, had left her, Alexey\nAlexandrovitch got up, and walking awkwardly on tiptoe, approached the\nbaby. For a minute he was still, and with the same despondent face gazed\nat the baby; but all at once a smile, that moved his hair and the skin\nof his forehead, came out on his face, and he went as softly out of the\nroom.\n\nIn the dining room he rang the bell, and told the servant who came in to\nsend again for the doctor. He felt vexed with his wife for not being\nanxious about this exquisite baby, and in this vexed humor he had no\nwish to go to her; he had no wish, either, to see Princess Betsy. But\nhis wife might wonder why he did not go to her as usual; and so,\novercoming his disinclination, he went towards the bedroom. As he walked\nover the soft rug towards the door, he could not help overhearing a\nconversation he did not want to hear.\n\n\"If he hadn't been going away, I could have understood your answer and\nhis too. But your husband ought to be above that,\" Betsy was saying.\n\n\"It's not for my husband; for myself I don't wish it. Don't say that!\"\nanswered Anna's excited voice.\n\n\"Yes, but you must care to say good-bye to a man who has shot himself on\nyour account....\"\n\n\"That's just why I don't want to.\"\n\nWith a dismayed and guilty expression, Alexey Alexandrovitch stopped and\nwould have gone back unobserved. But reflecting that this would be\nundignified, he turned back again, and clearing his throat, he went up\nto the bedroom. The voices were silent, and he went in.\n\nAnna, in a gray dressing gown, with a crop of short clustering black\ncurls on her round head, was sitting on a settee. The eagerness died out\nof her face, as it always did, at the sight of her husband; she dropped\nher head and looked round uneasily at Betsy. Betsy, dressed in the\nheight of the latest fashion, in a hat that towered somewhere over her\nhead like a shade on a lamp, in a blue dress with violet crossway\nstripes slanting one way on the bodice and the other way on the skirt,\nwas sitting beside Anna, her tall flat figure held erect. Bowing her\nhead, she greeted Alexey Alexandrovitch with an ironical smile.\n\n\"Ah!\" she said, as though surprised. \"I'm very glad you're at home. You\nnever put in an appearance anywhere, and I haven't seen you ever since\nAnna has been ill. I have heard all about it--your anxiety. Yes, you're\na wonderful husband!\" she said, with a meaning and affable air, as\nthough she were bestowing an order of magnanimity on him for his conduct\nto his wife.\n\nAlexey Alexandrovitch bowed frigidly, and kissing his wife's hand, asked\nhow she was.\n\n\"Better, I think,\" she said, avoiding his eyes.\n\n\"But you've rather a feverish-looking color,\" he said, laying stress on\nthe word \"feverish.\"\n\n\"We've been talking too much,\" said Betsy. \"I feel it's selfishness on\nmy part, and I am going away.\"\n\nShe got up, but Anna, suddenly flushing, quickly caught at her hand.\n\n\"No, wait a minute, please. I must tell you ... no, you.\" she turned to\nAlexey Alexandrovitch, and her neck and brow were suffused with crimson.\n\"I won't and can't keep anything secret from you,\" she said.\n\nAlexey Alexandrovitch cracked his fingers and bowed his head.\n\n\"Betsy's been telling me that Count Vronsky wants to come here to say\ngood-bye before his departure for Tashkend.\" She did not look at her\nhusband, and was evidently in haste to have everything out, however hard\nit might be for her. \"I told her I could not receive him.\"\n\n\"You said, my dear, that it would depend on Alexey Alexandrovitch,\"\nBetsy corrected her.\n\n\"Oh, no, I can't receive him; and what object would there....\" She\nstopped suddenly, and glanced inquiringly at her husband (he did not\nlook at her). \"In short, I don't wish it....\"\n\nAlexey Alexandrovitch advanced and would have taken her hand.\n\nHer first impulse was to jerk back her hand from the damp hand with big\nswollen veins that sought hers, but with an obvious effort to control\nherself she pressed his hand.\n\n\"I am very grateful to you for your confidence, but...\" he said, feeling\nwith confusion and annoyance that what he could decide easily and\nclearly by himself, he could not discuss before Princess Tverskaya, who\nto him stood for the incarnation of that brute force which would\ninevitably control him in the life he led in the eyes of the world, and\nhinder him from giving way to his feeling of love and forgiveness. He\nstopped short, looking at Princess Tverskaya.\n\n\"Well, good-bye, my darling,\" said Betsy, getting up. She kissed Anna,\nand went out. Alexey Alexandrovitch escorted her out.\n\n\"Alexey Alexandrovitch! I know you are a truly magnanimous man,\" said\nBetsy, stopping in the little drawing-room, and with special warmth\nshaking hands with him once more. \"I am an outsider, but I so love her\nand respect you that I venture to advise. Receive him. Alexey Vronsky is\nthe soul of honor, and he is going away to Tashkend.\"\n\n\"Thank you, princess, for your sympathy and advice. But the question of\nwhether my wife can or cannot see anyone she must decide herself.\"\n\nHe said this from habit, lifting his brows with dignity, and reflected\nimmediately that whatever his words might be, there could be no dignity\nin his position. And he saw this by the suppressed, malicious, and\nironical smile with which Betsy glanced at him after this phrase.\n\n\n\nChapter 20\n\n\nAlexey Alexandrovitch took leave of Betsy in the drawing room, and went\nto his wife. She was lying down, but hearing his steps she sat up\nhastily in her former attitude, and looked in a scared way at him. He\nsaw she had been crying.\n\n\"I am very grateful for your confidence in me.\" He repeated gently in\nRussian the phrase he had said in Betsy's presence in French, and sat\ndown beside her. When he spoke to her in Russian, using the Russian\n\"thou\" of intimacy and affection, it was insufferably irritating to\nAnna. \"And I am very grateful for your decision. I, too, imagine that\nsince he is going away, there is no sort of necessity for Count Vronsky\nto come here. However, if...\"\n\n\"But I've said so already, so why repeat it?\" Anna suddenly interrupted\nhim with an irritation she could not succeed in repressing. \"No sort of\nnecessity,\" she thought, \"for a man to come and say good-bye to the\nwoman he loves, for whom he was ready to ruin himself, and has ruined\nhimself, and who cannot live without him. No sort of necessity!\" she\ncompressed her lips, and dropped her burning eyes to his hands with\ntheir swollen veins. They were rubbing each other.\n\n\"Let us never speak of it,\" she added more calmly.\n\n\"I have left this question to you to decide, and I am very glad to\nsee...\" Alexey Alexandrovitch was beginning.\n\n\"That my wish coincides with your own,\" she finished quickly,\nexasperated at his talking so slowly while she knew beforehand all he\nwould say.\n\n\"Yes,\" he assented; \"and Princess Tverskaya's interference in the most\ndifficult private affairs is utterly uncalled for. She especially...\"\n\n\"I don't believe a word of what's said about her,\" said Anna quickly. \"I\nknow she really cares for me.\"\n\nAlexey Alexandrovitch sighed and said nothing. She played nervously with\nthe tassel of her dressing-gown, glancing at him with that torturing\nsensation of physical repulsion for which she blamed herself, though she\ncould not control it. Her only desire now was to be rid of his\noppressive presence.\n\n\"I have just sent for the doctor,\" said Alexey Alexandrovitch.\n\n\"I am very well; what do I want the doctor for?\"\n\n\"No, the little one cries, and they say the nurse hasn't enough milk.\"\n\n\"Why didn't you let me nurse her, when I begged to? Anyway\" (Alexey\nAlexandrovitch knew what was meant by that \"anyway\"), \"she's a baby, and\nthey're killing her.\" She rang the bell and ordered the baby to be\nbrought her. \"I begged to nurse her, I wasn't allowed to, and now I'm\nblamed for it.\"\n\n\"I don't blame...\"\n\n\"Yes, you do blame me! My God! why didn't I die!\" And she broke into\nsobs. \"Forgive me, I'm nervous, I'm unjust,\" she said, controlling\nherself, \"but do go away...\"\n\n\"No, it can't go on like this,\" Alexey Alexandrovitch said to himself\ndecidedly as he left his wife's room.\n\nNever had the impossibility of his position in the world's eyes, and his\nwife's hatred of him, and altogether the might of that mysterious brutal\nforce that guided his life against his spiritual inclinations, and\nexacted conformity with its decrees and change in his attitude to his\nwife, been presented to him with such distinctness as that day. He saw\nclearly that all the world and his wife expected of him something, but\nwhat exactly, he could not make out. He felt that this was rousing in\nhis soul a feeling of anger destructive of his peace of mind and of all\nthe good of his achievement. He believed that for Anna herself it would\nbe better to break off all relations with Vronsky; but if they all\nthought this out of the question, he was even ready to allow these\nrelations to be renewed, so long as the children were not disgraced, and\nhe was not deprived of them nor forced to change his position. Bad as\nthis might be, it was anyway better than a rupture, which would put her\nin a hopeless and shameful position, and deprive him of everything he\ncared for. But he felt helpless; he knew beforehand that every one was\nagainst him, and that he would not be allowed to do what seemed to him\nnow so natural and right, but would be forced to do what was wrong,\nthough it seemed the proper thing to them.\n\n\n\nChapter 21\n\n\nBefore Betsy had time to walk out of the drawing-room, she was met in\nthe doorway by Stepan Arkadyevitch, who had just come from Yeliseev's,\nwhere a consignment of fresh oysters had been received.\n\n\"Ah! princess! what a delightful meeting!\" he began. \"I've been to see\nyou.\"\n\n\"A meeting for one minute, for I'm going,\" said Betsy, smiling and\nputting on her glove.\n\n\"Don't put on your glove yet, princess; let me kiss your hand. There's\nnothing I'm so thankful to the revival of the old fashions for as the\nkissing the hand.\" He kissed Betsy's hand. \"When shall we see each\nother?\"\n\n\"You don't deserve it,\" answered Betsy, smiling.\n\n\"Oh, yes, I deserve a great deal, for I've become a most serious person.\nI don't only manage my own affairs, but other people's too,\" he said,\nwith a significant expression.\n\n\"Oh, I'm so glad!\" answered Betsy, at once understanding that he was\nspeaking of Anna. And going back into the drawing room, they stood in a\ncorner. \"He's killing her,\" said Betsy in a whisper full of meaning.\n\"It's impossible, impossible...\"\n\n\"I'm so glad you think so,\" said Stepan Arkadyevitch, shaking his head\nwith a serious and sympathetically distressed expression, \"that's what\nI've come to Petersburg for.\"\n\n\"The whole town's talking of it,\" she said. \"It's an impossible\nposition. She pines and pines away. He doesn't understand that she's one\nof those women who can't trifle with their feelings. One of two things:\neither let him take her away, act with energy, or give her a divorce.\nThis is stifling her.\"\n\n\"Yes, yes ... just so...\" Oblonsky said, sighing. \"That's what I've come\nfor. At least not solely for that ... I've been made a _Kammerherr_; of\ncourse, one has to say thank you. But the chief thing was having to\nsettle this.\"\n\n\"Well, God help you!\" said Betsy.\n\nAfter accompanying Betsy to the outside hall, once more kissing her hand\nabove the glove, at the point where the pulse beats, and murmuring to\nher such unseemly nonsense that she did not know whether to laugh or be\nangry, Stepan Arkadyevitch went to his sister. He found her in tears.\n\nAlthough he happened to be bubbling over with good spirits, Stepan\nArkadyevitch immediately and quite naturally fell into the sympathetic,\npoetically emotional tone which harmonized with her mood. He asked her\nhow she was, and how she had spent the morning.\n\n\"Very, very miserably. Today and this morning and all past days and days\nto come,\" she said.\n\n\"I think you're giving way to pessimism. You must rouse yourself, you\nmust look life in the face. I know it's hard, but...\"\n\n\"I have heard it said that women love men even for their vices,\" Anna\nbegan suddenly, \"but I hate him for his virtues. I can't live with him.\nDo you understand? the sight of him has a physical effect on me, it\nmakes me beside myself. I can't, I can't live with him. What am I to do?\nI have been unhappy, and used to think one couldn't be more unhappy, but\nthe awful state of things I am going through now, I could never have\nconceived. Would you believe it, that knowing he's a good man, a\nsplendid man, that I'm not worth his little finger, still I hate him. I\nhate him for his generosity. And there's nothing left for me but...\"\n\nShe would have said death, but Stepan Arkadyevitch would not let her\nfinish.\n\n\"You are ill and overwrought,\" he said; \"believe me, you're exaggerating\ndreadfully. There's nothing so terrible in it.\"\n\nAnd Stepan Arkadyevitch smiled. No one else in Stepan Arkadyevitch's\nplace, having to do with such despair, would have ventured to smile (the\nsmile would have seemed brutal); but in his smile there was so much of\nsweetness and almost feminine tenderness that his smile did not wound,\nbut softened and soothed. His gentle, soothing words and smiles were as\nsoothing and softening as almond oil. And Anna soon felt this.\n\n\"No, Stiva,\" she said, \"I'm lost, lost! worse than lost! I can't say yet\nthat all is over; on the contrary, I feel that it's not over. I'm an\noverstrained string that must snap. But it's not ended yet ... and it\nwill have a fearful end.\"\n\n\"No matter, we must let the string be loosened, little by little.\nThere's no position from which there is no way of escape.\"\n\n\"I have thought, and thought. Only one...\"\n\nAgain he knew from her terrified eyes that this one way of escape in her\nthought was death, and he would not let her say it.\n\n\"Not at all,\" he said. \"Listen to me. You can't see your own position as\nI can. Let me tell you candidly my opinion.\" Again he smiled discreetly\nhis almond-oil smile. \"I'll begin from the beginning. You married a man\ntwenty years older than yourself. You married him without love and not\nknowing what love was. It was a mistake, let's admit.\"\n\n\"A fearful mistake!\" said Anna.\n\n\"But I repeat, it's an accomplished fact. Then you had, let us say, the\nmisfortune to love a man not your husband. That was a misfortune; but\nthat, too, is an accomplished fact. And your husband knew it and forgave\nit.\" He stopped at each sentence, waiting for her to object, but she\nmade no answer. \"That's so. Now the question is: can you go on living\nwith your husband? Do you wish it? Does he wish it?\"\n\n\"I know nothing, nothing.\"\n\n\"But you said yourself that you can't endure him.\"\n\n\"No, I didn't say so. I deny it. I can't tell, I don't know anything\nabout it.\"\n\n\"Yes, but let...\"\n\n\"You can't understand. I feel I'm lying head downwards in a sort of pit,\nbut I ought not to save myself. And I can't . . .\"\n\n\"Never mind, we'll slip something under and pull you out. I understand\nyou: I understand that you can't take it on yourself to express your\nwishes, your feelings.\"\n\n\"There's nothing, nothing I wish ... except for it to be all over.\"\n\n\"But he sees this and knows it. And do you suppose it weighs on him any\nless than on you? You're wretched, he's wretched, and what good can come\nof it? while divorce would solve the difficulty completely.\" With some\neffort Stepan Arkadyevitch brought out his central idea, and looked\nsignificantly at her.\n\nShe said nothing, and shook her cropped head in dissent. But from the\nlook in her face, that suddenly brightened into its old beauty, he saw\nthat if she did not desire this, it was simply because it seemed to her\nunattainable happiness.\n\n\"I'm awfully sorry for you! And how happy I should be if I could arrange\nthings!\" said Stepan Arkadyevitch, smiling more boldly. \"Don't speak,\ndon't say a word! God grant only that I may speak as I feel. I'm going\nto him.\"\n\nAnna looked at him with dreamy, shining eyes, and said nothing.\n\n\n\nChapter 22\n\n\nStepan Arkadyevitch, with the same somewhat solemn expression with which\nhe used to take his presidential chair at his board, walked into Alexey\nAlexandrovitch's room. Alexey Alexandrovitch was walking about his room\nwith his hands behind his back, thinking of just what Stepan\nArkadyevitch had been discussing with his wife.\n\n\"I'm not interrupting you?\" said Stepan Arkadyevitch, on the sight of\nhis brother-in-law becoming suddenly aware of a sense of embarrassment\nunusual with him. To conceal this embarrassment he took out a cigarette\ncase he had just bought that opened in a new way, and sniffing the\nleather, took a cigarette out of it.\n\n\"No. Do you want anything?\" Alexey Alexandrovitch asked without\neagerness.\n\n\"Yes, I wished ... I wanted ... yes, I wanted to talk to you,\" said\nStepan Arkadyevitch, with surprise aware of an unaccustomed timidity.\n\nThis feeling was so unexpected and so strange that he did not believe it\nwas the voice of conscience telling him that what he was meaning to do\nwas wrong.\n\nStepan Arkadyevitch made an effort and struggled with the timidity that\nhad come over him.\n\n\"I hope you believe in my love for my sister and my sincere affection\nand respect for you,\" he said, reddening.\n\nAlexey Alexandrovitch stood still and said nothing, but his face struck\nStepan Arkadyevitch by its expression of an unresisting sacrifice.\n\n\"I intended ... I wanted to have a little talk with you about my sister\nand your mutual position,\" he said, still struggling with an\nunaccustomed constraint.\n\nAlexey Alexandrovitch smiled mournfully, looked at his brother-in-law,\nand without answering went up to the table, took from it an unfinished\nletter, and handed it to his brother-in-law.\n\n\"I think unceasingly of the same thing. And here is what I had begun\nwriting, thinking I could say it better by letter, and that my presence\nirritates her,\" he said, as he gave him the letter.\n\nStepan Arkadyevitch took the letter, looked with incredulous surprise at\nthe lusterless eyes fixed so immovably on him, and began to read.\n\n\"I see that my presence is irksome to you. Painful as it is to me to\nbelieve it, I see that it is so, and cannot be otherwise. I don't blame\nyou, and God is my witness that on seeing you at the time of your\nillness I resolved with my whole heart to forget all that had passed\nbetween us and to begin a new life. I do not regret, and shall never\nregret, what I have done; but I have desired one thing--your good, the\ngood of your soul--and now I see I have not attained that. Tell me\nyourself what will give you true happiness and peace to your soul. I put\nmyself entirely in your hands, and trust to your feeling of what's\nright.\"\n\nStepan Arkadyevitch handed back the letter, and with the same surprise\ncontinued looking at his brother-in-law, not knowing what to say. This\nsilence was so awkward for both of them that Stepan Arkadyevitch's lips\nbegan twitching nervously, while he still gazed without speaking at\nKarenin's face.\n\n\"That's what I wanted to say to her,\" said Alexey Alexandrovitch,\nturning away.\n\n\"Yes, yes...\" said Stepan Arkadyevitch, not able to answer for the tears\nthat were choking him.\n\n\"Yes, yes, I understand you,\" he brought out at last.\n\n\"I want to know what she would like,\" said Alexey Alexandrovitch.\n\n\"I am afraid she does not understand her own position. She is not a\njudge,\" said Stepan Arkadyevitch, recovering himself. \"She is crushed,\nsimply crushed by your generosity. If she were to read this letter, she\nwould be incapable of saying anything, she would only hang her head\nlower than ever.\"\n\n\"Yes, but what's to be done in that case? how explain, how find out her\nwishes?\"\n\n\"If you will allow me to give my opinion, I think that it lies with you\nto point out directly the steps you consider necessary to end the\nposition.\"\n\n\"So you consider it must be ended?\" Alexey Alexandrovitch interrupted\nhim. \"But how?\" he added, with a gesture of his hands before his eyes\nnot usual with him. \"I see no possible way out of it.\"\n\n\"There is some way of getting out of every position,\" said Stepan\nArkadyevitch, standing up and becoming more cheerful. \"There was a time\nwhen you thought of breaking off.... If you are convinced now that you\ncannot make each other happy...\"\n\n\"Happiness may be variously understood. But suppose that I agree to\neverything, that I want nothing: what way is there of getting out of our\nposition?\"\n\n\"If you care to know my opinion,\" said Stepan Arkadyevitch with the same\nsmile of softening, almond-oil tenderness with which he had been talking\nto Anna. His kindly smile was so winning that Alexey Alexandrovitch,\nfeeling his own weakness and unconsciously swayed by it, was ready to\nbelieve what Stepan Arkadyevitch was saying.\n\n\"She will never speak out about it. But one thing is possible, one thing\nshe might desire,\" he went on, \"that is the cessation of your relations\nand all memories associated with them. To my thinking, in your position\nwhat's essential is the formation of a new attitude to one another. And\nthat can only rest on a basis of freedom on both sides.\"\n\n\"Divorce,\" Alexey Alexandrovitch interrupted, in a tone of aversion.\n\n\"Yes, I imagine that divorce--yes, divorce,\" Stepan Arkadyevitch\nrepeated, reddening. \"That is from every point of view the most rational\ncourse for married people who find themselves in the position you are\nin. What can be done if married people find that life is impossible for\nthem together? That may always happen.\"\n\nAlexey Alexandrovitch sighed heavily and closed his eyes.\n\n\"There's only one point to be considered: is either of the parties\ndesirous of forming new ties? If not, it is very simple,\" said Stepan\nArkadyevitch, feeling more and more free from constraint.\n\nAlexey Alexandrovitch, scowling with emotion, muttered something to\nhimself, and made no answer. All that seemed so simple to Stepan\nArkadyevitch, Alexey Alexandrovitch had thought over thousands of times.\nAnd, so far from being simple, it all seemed to him utterly impossible.\nDivorce, the details of which he knew by this time, seemed to him now\nout of the question, because the sense of his own dignity and respect\nfor religion forbade his taking upon himself a fictitious charge of\nadultery, and still more suffering his wife, pardoned and beloved by\nhim, to be caught in the fact and put to public shame. Divorce appeared\nto him impossible also on other still more weighty grounds.\n\nWhat would become of his son in case of a divorce? To leave him with his\nmother was out of the question. The divorced mother would have her own\nillegitimate family, in which his position as a stepson and his\neducation would not be good. Keep him with him? He knew that would be an\nact of vengeance on his part, and that he did not want. But apart from\nthis, what more than all made divorce seem impossible to Alexey\nAlexandrovitch was, that by consenting to a divorce he would be\ncompletely ruining Anna. The saying of Darya Alexandrovna at Moscow,\nthat in deciding on a divorce he was thinking of himself, and not\nconsidering that by this he would be ruining her irrevocably, had sunk\ninto his heart. And connecting this saying with his forgiveness of her,\nwith his devotion to the children, he understood it now in his own way.\nTo consent to a divorce, to give her her freedom, meant in his thoughts\nto take from himself the last tie that bound him to life--the children\nwhom he loved; and to take from her the last prop that stayed her on the\npath of right, to thrust her down to her ruin. If she were divorced, he\nknew she would join her life to Vronsky's, and their tie would be an\nillegitimate and criminal one, since a wife, by the interpretation of\nthe ecclesiastical law, could not marry while her husband was living.\n\"She will join him, and in a year or two he will throw her over, or she\nwill form a new tie,\" thought Alexey Alexandrovitch. \"And I, by agreeing\nto an unlawful divorce, shall be to blame for her ruin.\" He had thought\nit all over hundreds of times, and was convinced that a divorce was not\nat all simple, as Stepan Arkadyevitch had said, but was utterly\nimpossible. He did not believe a single word Stepan Arkadyevitch said to\nhim; to every word he had a thousand objections to make, but he listened\nto him, feeling that his words were the expression of that mighty brutal\nforce which controlled his life and to which he would have to submit.\n\n\"The only question is on what terms you agree to give her a divorce. She\ndoes not want anything, does not dare ask you for anything, she leaves\nit all to your generosity.\"\n\n\"My God, my God! what for?\" thought Alexey Alexandrovitch, remembering\nthe details of divorce proceedings in which the husband took the blame\non himself, and with just the same gesture with which Vronsky had done\nthe same, he hid his face for shame in his hands.\n\n\"You are distressed, I understand that. But if you think it over...\"\n\n\"Whosoever shall smite thee on thy right cheek, turn to him the other\nalso; and if any man take away thy coat, let him have thy cloak also,\"\nthought Alexey Alexandrovitch.\n\n\"Yes, yes!\" he cried in a shrill voice. \"I will take the disgrace on\nmyself, I will give up even my son, but ... but wouldn't it be better to\nlet it alone? Still you may do as you like...\"\n\nAnd turning away so that his brother-in-law could not see him, he sat\ndown on a chair at the window. There was bitterness, there was shame in\nhis heart, but with bitterness and shame he felt joy and emotion at the\nheight of his own meekness.\n\nStepan Arkadyevitch was touched. He was silent for a space.\n\n\"Alexey Alexandrovitch, believe me, she appreciates your generosity,\" he\nsaid. \"But it seems it was the will of God,\" he added, and as he said it\nfelt how foolish a remark it was, and with difficulty repressed a smile\nat his own foolishness.\n\nAlexey Alexandrovitch would have made some reply, but tears stopped him.\n\n\"This is an unhappy fatality, and one must accept it as such. I accept\nthe calamity as an accomplished fact, and am doing my best to help both\nher and you,\" said Stepan Arkadyevitch.\n\nWhen he went out of his brother-in-law's room he was touched, but that\ndid not prevent him from being glad he had successfully brought the\nmatter to a conclusion, for he felt certain Alexey Alexandrovitch would\nnot go back on his words. To this satisfaction was added the fact that\nan idea had just struck him for a riddle turning on his successful\nachievement, that when the affair was over he would ask his wife and\nmost intimate friends. He put this riddle into two or three different\nways. \"But I'll work it out better than that,\" he said to himself with a\nsmile.\n\n\n\nChapter 23\n\n\nVronsky's wound had been a dangerous one, though it did not touch the\nheart, and for several days he had lain between life and death. The\nfirst time he was able to speak, Varya, his brother's wife, was alone in\nthe room.\n\n\"Varya,\" he said, looking sternly at her, \"I shot myself by accident.\nAnd please never speak of it, and tell everyone so. Or else it's too\nridiculous.\"\n\nWithout answering his words, Varya bent over him, and with a delighted\nsmile gazed into his face. His eyes were clear, not feverish; but their\nexpression was stern.\n\n\"Thank God!\" she said. \"You're not in pain?\"\n\n\"A little here.\" He pointed to his breast.\n\n\"Then let me change your bandages.\"\n\nIn silence, stiffening his broad jaws, he looked at her while she\nbandaged him up. When she had finished he said:\n\n\"I'm not delirious. Please manage that there may be no talk of my having\nshot myself on purpose.\"\n\n\"No one does say so. Only I hope you won't shoot yourself by accident\nany more,\" she said, with a questioning smile.\n\n\"Of course I won't, but it would have been better...\"\n\nAnd he smiled gloomily.\n\nIn spite of these words and this smile, which so frightened Varya, when\nthe inflammation was over and he began to recover, he felt that he was\ncompletely free from one part of his misery. By his action he had, as it\nwere, washed away the shame and humiliation he had felt before. He could\nnow think calmly of Alexey Alexandrovitch. He recognized all his\nmagnanimity, but he did not now feel himself humiliated by it. Besides,\nhe got back again into the beaten track of his life. He saw the\npossibility of looking men in the face again without shame, and he could\nlive in accordance with his own habits. One thing he could not pluck out\nof his heart, though he never ceased struggling with it, was the regret,\namounting to despair, that he had lost her forever. That now, having\nexpiated his sin against the husband, he was bound to renounce her, and\nnever in future to stand between her with her repentance and her\nhusband, he had firmly decided in his heart; but he could not tear out\nof his heart his regret at the loss of her love, he could not erase from\nhis memory those moments of happiness that he had so little prized at\nthe time, and that haunted him in all their charm.\n\nSerpuhovskoy had planned his appointment at Tashkend, and Vronsky agreed\nto the proposition without the slightest hesitation. But the nearer the\ntime of departure came, the bitterer was the sacrifice he was making to\nwhat he thought his duty.\n\nHis wound had healed, and he was driving about making preparations for\nhis departure for Tashkend.\n\n\"To see her once and then to bury myself, to die,\" he thought, and as he\nwas paying farewell visits, he uttered this thought to Betsy. Charged\nwith this commission, Betsy had gone to Anna, and brought him back a\nnegative reply.\n\n\"So much the better,\" thought Vronsky, when he received the news. \"It\nwas a weakness, which would have shattered what strength I have left.\"\n\nNext day Betsy herself came to him in the morning, and announced that\nshe had heard through Oblonsky as a positive fact that Alexey\nAlexandrovitch had agreed to a divorce, and that therefore Vronsky could\nsee Anna.\n\nWithout even troubling himself to see Betsy out of his flat, forgetting\nall his resolutions, without asking when he could see her, where her\nhusband was, Vronsky drove straight to the Karenins'. He ran up the\nstairs seeing no one and nothing, and with a rapid step, almost breaking\ninto a run, he went into her room. And without considering, without\nnoticing whether there was anyone in the room or not, he flung his arms\nround her, and began to cover her face, her hands, her neck with kisses.\n\nAnna had been preparing herself for this meeting, had thought what she\nwould say to him, but she did not succeed in saying anything of it; his\npassion mastered her. She tried to calm him, to calm herself, but it was\ntoo late. His feeling infected her. Her lips trembled so that for a long\nwhile she could say nothing.\n\n\"Yes, you have conquered me, and I am yours,\" she said at last, pressing\nhis hands to her bosom.\n\n\"So it had to be,\" he said. \"So long as we live, it must be so. I know\nit now.\"\n\n\"That's true,\" she said, getting whiter and whiter, and embracing his\nhead. \"Still there is something terrible in it after all that has\nhappened.\"\n\n\"It will all pass, it will all pass; we shall be so happy. Our love, if\nit could be stronger, will be strengthened by there being something\nterrible in it,\" he said, lifting his head and parting his strong teeth\nin a smile.\n\nAnd she could not but respond with a smile--not to his words, but to the\nlove in his eyes. She took his hand and stroked her chilled cheeks and\ncropped head with it.\n\n\"I don't know you with this short hair. You've grown so pretty. A boy.\nBut how pale you are!\"\n\n\"Yes, I'm very weak,\" she said, smiling. And her lips began trembling\nagain.\n\n\"We'll go to Italy; you will get strong,\" he said.\n\n\"Can it be possible we could be like husband and wife, alone, your\nfamily with you?\" she said, looking close into his eyes.\n\n\"It only seems strange to me that it can ever have been otherwise.\"\n\n\"Stiva says that _he_ has agreed to everything, but I can't accept _his_\ngenerosity,\" she said, looking dreamily past Vronsky's face. \"I don't\nwant a divorce; it's all the same to me now. Only I don't know what he\nwill decide about Seryozha.\"\n\nHe could not conceive how at this moment of their meeting she could\nremember and think of her son, of divorce. What did it all matter?\n\n\"Don't speak of that, don't think of it,\" he said, turning her hand in\nhis, and trying to draw her attention to him; but still she did not look\nat him.\n\n\"Oh, why didn't I die! it would have been better,\" she said, and silent\ntears flowed down both her cheeks; but she tried to smile, so as not to\nwound him.\n\nTo decline the flattering and dangerous appointment at Tashkend would\nhave been, Vronsky had till then considered, disgraceful and impossible.\nBut now, without an instant's consideration, he declined it, and\nobserving dissatisfaction in the most exalted quarters at this step, he\nimmediately retired from the army.\n\nA month later Alexey Alexandrovitch was left alone with his son in his\nhouse at Petersburg, while Anna and Vronsky had gone abroad, not having\nobtained a divorce, but having absolutely declined all idea of one.\n\n\n\n\nPART FIVE\n\n\n\nChapter 1\n\n\nPrincess Shtcherbatskaya considered that it was out of the question for\nthe wedding to take place before Lent, just five weeks off, since not\nhalf the trousseau could possibly be ready by that time. But she could\nnot but agree with Levin that to fix it for after Lent would be putting\nit off too late, as an old aunt of Prince Shtcherbatsky's was seriously\nill and might die, and then the mourning would delay the wedding still\nlonger. And therefore, deciding to divide the trousseau into two\nparts--a larger and smaller trousseau--the princess consented to have\nthe wedding before Lent. She determined that she would get the smaller\npart of the trousseau all ready now, and the larger part should be made\nlater, and she was much vexed with Levin because he was incapable of\ngiving her a serious answer to the question whether he agreed to this\narrangement or not. The arrangement was the more suitable as,\nimmediately after the wedding, the young people were to go to the\ncountry, where the more important part of the trousseau would not be\nwanted.\n\nLevin still continued in the same delirious condition in which it seemed\nto him that he and his happiness constituted the chief and sole aim of\nall existence, and that he need not now think or care about anything,\nthat everything was being done and would be done for him by others. He\nhad not even plans and aims for the future, he left its arrangement to\nothers, knowing that everything would be delightful. His brother Sergey\nIvanovitch, Stepan Arkadyevitch, and the princess guided him in doing\nwhat he had to do. All he did was to agree entirely with everything\nsuggested to him. His brother raised money for him, the princess advised\nhim to leave Moscow after the wedding. Stepan Arkadyevitch advised him\nto go abroad. He agreed to everything. \"Do what you choose, if it amuses\nyou. I'm happy, and my happiness can be no greater and no less for\nanything you do,\" he thought. When he told Kitty of Stepan\nArkadyevitch's advice that they should go abroad, he was much surprised\nthat she did not agree to this, and had some definite requirements of\nher own in regard to their future. She knew Levin had work he loved in\nthe country. She did not, as he saw, understand this work, she did not\neven care to understand it. But that did not prevent her from regarding\nit as a matter of great importance. And then she knew their home would\nbe in the country, and she wanted to go, not abroad where she was not\ngoing to live, but to the place where their home would be. This\ndefinitely expressed purpose astonished Levin. But since he did not care\neither way, he immediately asked Stepan Arkadyevitch, as though it were\nhis duty, to go down to the country and to arrange everything there to\nthe best of his ability with the taste of which he had so much.\n\n\"But I say,\" Stepan Arkadyevitch said to him one day after he had come\nback from the country, where he had got everything ready for the young\npeople's arrival, \"have you a certificate of having been at confession?\"\n\n\"No. But what of it?\"\n\n\"You can't be married without it.\"\n\n\"_Aie, aie, aie!_\" cried Levin. \"Why, I believe it's nine years since\nI've taken the sacrament! I never thought of it.\"\n\n\"You're a pretty fellow!\" said Stepan Arkadyevitch laughing, \"and you\ncall me a Nihilist! But this won't do, you know. You must take the\nsacrament.\"\n\n\"When? There are four days left now.\"\n\nStepan Arkadyevitch arranged this also, and Levin had to go to\nconfession. To Levin, as to any unbeliever who respects the beliefs of\nothers, it was exceedingly disagreeable to be present at and take part\nin church ceremonies. At this moment, in his present softened state of\nfeeling, sensitive to everything, this inevitable act of hypocrisy was\nnot merely painful to Levin, it seemed to him utterly impossible. Now,\nin the heyday of his highest glory, his fullest flower, he would have to\nbe a liar or a scoffer. He felt incapable of being either. But though he\nrepeatedly plied Stepan Arkadyevitch with questions as to the\npossibility of obtaining a certificate without actually communicating,\nStepan Arkadyevitch maintained that it was out of the question.\n\n\"Besides, what is it to you--two days? And he's an awfully nice clever\nold fellow. He'll pull the tooth out for you so gently, you won't notice\nit.\"\n\nStanding at the first litany, Levin attempted to revive in himself his\nyouthful recollections of the intense religious emotion he had passed\nthrough between the ages of sixteen and seventeen.\n\nBut he was at once convinced that it was utterly impossible to him. He\nattempted to look at it all as an empty custom, having no sort of\nmeaning, like the custom of paying calls. But he felt that he could not\ndo that either. Levin found himself, like the majority of his\ncontemporaries, in the vaguest position in regard to religion. Believe\nhe could not, and at the same time he had no firm conviction that it was\nall wrong. And consequently, not being able to believe in the\nsignificance of what he was doing nor to regard it with indifference as\nan empty formality, during the whole period of preparing for the\nsacrament he was conscious of a feeling of discomfort and shame at doing\nwhat he did not himself understand, and what, as an inner voice told\nhim, was therefore false and wrong.\n\nDuring the service he would first listen to the prayers, trying to\nattach some meaning to them not discordant with his own views; then\nfeeling that he could not understand and must condemn them, he tried not\nto listen to them, but to attend to the thoughts, observations, and\nmemories which floated through his brain with extreme vividness during\nthis idle time of standing in church.\n\nHe had stood through the litany, the evening service and the midnight\nservice, and the next day he got up earlier than usual, and without\nhaving tea went at eight o'clock in the morning to the church for the\nmorning service and the confession.\n\nThere was no one in the church but a beggar soldier, two old women, and\nthe church officials. A young deacon, whose long back showed in two\ndistinct halves through his thin undercassock, met him, and at once\ngoing to a little table at the wall read the exhortation. During the\nreading, especially at the frequent and rapid repetition of the same\nwords, \"Lord, have mercy on us!\" which resounded with an echo, Levin\nfelt that thought was shut and sealed up, and that it must not be\ntouched or stirred now or confusion would be the result; and so standing\nbehind the deacon he went on thinking of his own affairs, neither\nlistening nor examining what was said. \"It's wonderful what expression\nthere is in her hand,\" he thought, remembering how they had been sitting\nthe day before at a corner table. They had nothing to talk about, as was\nalmost always the case at this time, and laying her hand on the table\nshe kept opening and shutting it, and laughed herself as she watched her\naction. He remembered how he had kissed it and then had examined the\nlines on the pink palm. \"Have mercy on us again!\" thought Levin,\ncrossing himself, bowing, and looking at the supple spring of the\ndeacon's back bowing before him. \"She took my hand then and examined the\nlines 'You've got a splendid hand,' she said.\" And he looked at his own\nhand and the short hand of the deacon. \"Yes, now it will soon be over,\"\nhe thought. \"No, it seems to be beginning again,\" he thought, listening\nto the prayers. \"No, it's just ending: there he is bowing down to the\nground. That's always at the end.\"\n\nThe deacon's hand in a plush cuff accepted a three-rouble note\nunobtrusively, and the deacon said he would put it down in the register,\nand his new boots creaking jauntily over the flagstones of the empty\nchurch, he went to the altar. A moment later he peeped out thence and\nbeckoned to Levin. Thought, till then locked up, began to stir in\nLevin's head, but he made haste to drive it away. \"It will come right\nsomehow,\" he thought, and went towards the altar-rails. He went up the\nsteps, and turning to the right saw the priest. The priest, a little old\nman with a scanty grizzled beard and weary, good-natured eyes, was\nstanding at the altar-rails, turning over the pages of a missal. With a\nslight bow to Levin he began immediately reading prayers in the official\nvoice. When he had finished them he bowed down to the ground and turned,\nfacing Levin.\n\n\"Christ is present here unseen, receiving your confession,\" he said,\npointing to the crucifix. \"Do you believe in all the doctrines of the\nHoly Apostolic Church?\" the priest went on, turning his eyes away from\nLevin's face and folding his hands under his stole.\n\n\"I have doubted, I doubt everything,\" said Levin in a voice that jarred\non himself, and he ceased speaking.\n\nThe priest waited a few seconds to see if he would not say more, and\nclosing his eyes he said quickly, with a broad, Vladimirsky accent:\n\n\"Doubt is natural to the weakness of mankind, but we must pray that God\nin His mercy will strengthen us. What are your special sins?\" he added,\nwithout the slightest interval, as though anxious not to waste time.\n\n\"My chief sin is doubt. I have doubts of everything, and for the most\npart I am in doubt.\"\n\n\"Doubt is natural to the weakness of mankind,\" the priest repeated the\nsame words. \"What do you doubt about principally?\"\n\n\"I doubt of everything. I sometimes even have doubts of the existence of\nGod,\" Levin could not help saying, and he was horrified at the\nimpropriety of what he was saying. But Levin's words did not, it seemed,\nmake much impression on the priest.\n\n\"What sort of doubt can there be of the existence of God?\" he said\nhurriedly, with a just perceptible smile.\n\nLevin did not speak.\n\n\"What doubt can you have of the Creator when you behold His creation?\"\nthe priest went on in the rapid customary jargon. \"Who has decked the\nheavenly firmament with its lights? Who has clothed the earth in its\nbeauty? How explain it without the Creator?\" he said, looking\ninquiringly at Levin.\n\nLevin felt that it would be improper to enter upon a metaphysical\ndiscussion with the priest, and so he said in reply merely what was a\ndirect answer to the question.\n\n\"I don't know,\" he said.\n\n\"You don't know! Then how can you doubt that God created all?\" the\npriest said, with good-humored perplexity.\n\n\"I don't understand it at all,\" said Levin, blushing, and feeling that\nhis words were stupid, and that they could not be anything but stupid in\nsuch a position.\n\n\"Pray to God and beseech Him. Even the holy fathers had doubts, and\nprayed to God to strengthen their faith. The devil has great power, and\nwe must resist him. Pray to God, beseech Him. Pray to God,\" he repeated\nhurriedly.\n\nThe priest paused for some time, as though meditating.\n\n\"You're about, I hear, to marry the daughter of my parishioner and son\nin the spirit, Prince Shtcherbatsky?\" he resumed, with a smile. \"An\nexcellent young lady.\"\n\n\"Yes,\" answered Levin, blushing for the priest. \"What does he want to\nask me about this at confession for?\" he thought.\n\nAnd, as though answering his thought, the priest said to him:\n\n\"You are about to enter into holy matrimony, and God may bless you with\noffspring. Well, what sort of bringing-up can you give your babes if you\ndo not overcome the temptation of the devil, enticing you to\ninfidelity?\" he said, with gentle reproachfulness. \"If you love your\nchild as a good father, you will not desire only wealth, luxury, honor\nfor your infant; you will be anxious for his salvation, his spiritual\nenlightenment with the light of truth. Eh? What answer will you make him\nwhen the innocent babe asks you: 'Papa! who made all that enchants me in\nthis world--the earth, the waters, the sun, the flowers, the grass?' Can\nyou say to him: 'I don't know'? You cannot but know, since the Lord God\nin His infinite mercy has revealed it to us. Or your child will ask you:\n'What awaits me in the life beyond the tomb?' What will you say to him\nwhen you know nothing? How will you answer him? Will you leave him to\nthe allurements of the world and the devil? That's not right,\" he said,\nand he stopped, putting his head on one side and looking at Levin with\nhis kindly, gentle eyes.\n\nLevin made no answer this time, not because he did not want to enter\nupon a discussion with the priest, but because, so far, no one had ever\nasked him such questions, and when his babes did ask him those\nquestions, it would be time enough to think about answering them.\n\n\"You are entering upon a time of life,\" pursued the priest, \"when you\nmust choose your path and keep to it. Pray to God that He may in His\nmercy aid you and have mercy on you!\" he concluded. \"Our Lord and God,\nJesus Christ, in the abundance and riches of His lovingkindness,\nforgives this child...\" and, finishing the prayer of absolution, the\npriest blessed him and dismissed him.\n\nOn getting home that day, Levin had a delightful sense of relief at the\nawkward position being over and having been got through without his\nhaving to tell a lie. Apart from this, there remained a vague memory\nthat what the kind, nice old fellow had said had not been at all so\nstupid as he had fancied at first, and that there was something in it\nthat must be cleared up.\n\n\"Of course, not now,\" thought Levin, \"but some day later on.\" Levin felt\nmore than ever now that there was something not clear and not clean in\nhis soul, and that, in regard to religion, he was in the same position\nwhich he perceived so clearly and disliked in others, and for which he\nblamed his friend Sviazhsky.\n\nLevin spent that evening with his betrothed at Dolly's, and was in very\nhigh spirits. To explain to Stepan Arkadyevitch the state of excitement\nin which he found himself, he said that he was happy like a dog being\ntrained to jump through a hoop, who, having at last caught the idea, and\ndone what was required of him, whines and wags its tail, and jumps up to\nthe table and the windows in its delight.\n\n\n\nChapter 2\n\n\nOn the day of the wedding, according to the Russian custom (the princess\nand Darya Alexandrovna insisted on strictly keeping all the customs),\nLevin did not see his betrothed, and dined at his hotel with three\nbachelor friends, casually brought together at his rooms. These were\nSergey Ivanovitch, Katavasov, a university friend, now professor of\nnatural science, whom Levin had met in the street and insisted on taking\nhome with him, and Tchirikov, his best man, a Moscow conciliation-board\njudge, Levin's companion in his bear-hunts. The dinner was a very merry\none: Sergey Ivanovitch was in his happiest mood, and was much amused by\nKatavasov's originality. Katavasov, feeling his originality was\nappreciated and understood, made the most of it. Tchirikov always gave a\nlively and good-humored support to conversation of any sort.\n\n\"See, now,\" said Katavasov, drawling his words from a habit acquired in\nthe lecture-room, \"what a capable fellow was our friend Konstantin\nDmitrievitch. I'm not speaking of present company, for he's absent. At\nthe time he left the university he was fond of science, took an interest\nin humanity; now one-half of his abilities is devoted to deceiving\nhimself, and the other to justifying the deceit.\"\n\n\"A more determined enemy of matrimony than you I never saw,\" said Sergey\nIvanovitch.\n\n\"Oh, no, I'm not an enemy of matrimony. I'm in favor of division of\nlabor. People who can do nothing else ought to rear people while the\nrest work for their happiness and enlightenment. That's how I look at\nit. To muddle up two trades is the error of the amateur; I'm not one of\ntheir number.\"\n\n\"How happy I shall be when I hear that you're in love!\" said Levin.\n\"Please invite me to the wedding.\"\n\n\"I'm in love now.\"\n\n\"Yes, with a cuttlefish! You know,\" Levin turned to his brother, \"Mihail\nSemyonovitch is writing a work on the digestive organs of the...\"\n\n\"Now, make a muddle of it! It doesn't matter what about. And the fact\nis, I certainly do love cuttlefish.\"\n\n\"But that's no hindrance to your loving your wife.\"\n\n\"The cuttlefish is no hindrance. The wife is the hindrance.\"\n\n\"Why so?\"\n\n\"Oh, you'll see! You care about farming, hunting,--well, you'd better\nlook out!\"\n\n\"Arhip was here today; he said there were a lot of elks in Prudno, and\ntwo bears,\" said Tchirikov.\n\n\"Well, you must go and get them without me.\"\n\n\"Ah, that's the truth,\" said Sergey Ivanovitch. \"And you may say\ngood-bye to bear-hunting for the future--your wife won't allow it!\"\n\nLevin smiled. The picture of his wife not letting him go was so pleasant\nthat he was ready to renounce the delights of looking upon bears\nforever.\n\n\"Still, it's a pity they should get those two bears without you. Do you\nremember last time at Hapilovo? That was a delightful hunt!\" said\nTchirikov.\n\nLevin had not the heart to disillusion him of the notion that there\ncould be something delightful apart from her, and so said nothing.\n\n\"There's some sense in this custom of saying good-bye to bachelor life,\"\nsaid Sergey Ivanovitch. \"However happy you may be, you must regret your\nfreedom.\"\n\n\"And confess there is a feeling that you want to jump out of the window,\nlike Gogol's bridegroom?\"\n\n\"Of course there is, but it isn't confessed,\" said Katavasov, and he\nbroke into loud laughter.\n\n\"Oh, well, the window's open. Let's start off this instant to Tver!\nThere's a big she-bear; one can go right up to the lair. Seriously,\nlet's go by the five o'clock! And here let them do what they like,\" said\nTchirikov, smiling.\n\n\"Well, now, on my honor,\" said Levin, smiling, \"I can't find in my heart\nthat feeling of regret for my freedom.\"\n\n\"Yes, there's such a chaos in your heart just now that you can't find\nanything there,\" said Katavasov. \"Wait a bit, when you set it to rights\na little, you'll find it!\"\n\n\"No; if so, I should have felt a little, apart from my feeling\" (he\ncould not say love before them) \"and happiness, a certain regret at\nlosing my freedom.... On the contrary, I am glad at the very loss of my\nfreedom.\"\n\n\"Awful! It's a hopeless case!\" said Katavasov. \"Well, let's drink to his\nrecovery, or wish that a hundredth part of his dreams may be\nrealized--and that would be happiness such as never has been seen on\nearth!\"\n\nSoon after dinner the guests went away to be in time to be dressed for\nthe wedding.\n\nWhen he was left alone, and recalled the conversation of these bachelor\nfriends, Levin asked himself: had he in his heart that regret for his\nfreedom of which they had spoken? He smiled at the question. \"Freedom!\nWhat is freedom for? Happiness is only in loving and wishing her wishes,\nthinking her thoughts, that is to say, not freedom at all--that's\nhappiness!\"\n\n\"But do I know her ideas, her wishes, her feelings?\" some voice suddenly\nwhispered to him. The smile died away from his face, and he grew\nthoughtful. And suddenly a strange feeling came upon him. There came\nover him a dread and doubt--doubt of everything.\n\n\"What if she does not love me? What if she's marrying me simply to be\nmarried? What if she doesn't see herself what she's doing?\" he asked\nhimself. \"She may come to her senses, and only when she is being married\nrealize that she does not and cannot love me.\" And strange, most evil\nthoughts of her began to come to him. He was jealous of Vronsky, as he\nhad been a year ago, as though the evening he had seen her with Vronsky\nhad been yesterday. He suspected she had not told him everything.\n\nHe jumped up quickly. \"No, this can't go on!\" he said to himself in\ndespair. \"I'll go to her; I'll ask her; I'll say for the last time: we\nare free, and hadn't we better stay so? Anything's better than endless\nmisery, disgrace, unfaithfulness!\" With despair in his heart and bitter\nanger against all men, against himself, against her, he went out of the\nhotel and drove to her house.\n\nHe found her in one of the back rooms. She was sitting on a chest and\nmaking some arrangements with her maid, sorting over heaps of dresses of\ndifferent colors, spread on the backs of chairs and on the floor.\n\n\"Ah!\" she cried, seeing him, and beaming with delight. \"Kostya!\nKonstantin Dmitrievitch!\" (These latter days she used these names almost\nalternately.) \"I didn't expect you! I'm going through my wardrobe to see\nwhat's for whom...\"\n\n\"Oh! that's very nice!\" he said gloomily, looking at the maid.\n\n\"You can go, Dunyasha, I'll call you presently,\" said Kitty. \"Kostya,\nwhat's the matter?\" she asked, definitely adopting this familiar name as\nsoon as the maid had gone out. She noticed his strange face, agitated\nand gloomy, and a panic came over her.\n\n\"Kitty! I'm in torture. I can't suffer alone,\" he said with despair in\nhis voice, standing before her and looking imploringly into her eyes. He\nsaw already from her loving, truthful face, that nothing could come of\nwhat he had meant to say, but yet he wanted her to reassure him herself.\n\"I've come to say that there's still time. This can all be stopped and\nset right.\"\n\n\"What? I don't understand. What is the matter?\"\n\n\"What I have said a thousand times over, and can't help thinking ...\nthat I'm not worthy of you. You couldn't consent to marry me. Think a\nlittle. You've made a mistake. Think it over thoroughly. You can't love\nme.... If ... better say so,\" he said, not looking at her. \"I shall be\nwretched. Let people say what they like; anything's better than\nmisery.... Far better now while there's still time....\"\n\n\"I don't understand,\" she answered, panic-stricken; \"you mean you want\nto give it up ... don't want it?\"\n\n\"Yes, if you don't love me.\"\n\n\"You're out of your mind!\" she cried, turning crimson with vexation. But\nhis face was so piteous, that she restrained her vexation, and flinging\nsome clothes off an arm-chair, she sat down beside him. \"What are you\nthinking? tell me all.\"\n\n\"I am thinking you can't love me. What can you love me for?\"\n\n\"My God! what can I do?...\" she said, and burst into tears.\n\n\"Oh! what have I done?\" he cried, and kneeling before her, he fell to\nkissing her hands.\n\nWhen the princess came into the room five minutes later, she found them\ncompletely reconciled. Kitty had not simply assured him that she loved\nhim, but had gone so far--in answer to his question, what she loved him\nfor--as to explain what for. She told him that she loved him because she\nunderstood him completely, because she knew what he would like, and\nbecause everything he liked was good. And this seemed to him perfectly\nclear. When the princess came to them, they were sitting side by side on\nthe chest, sorting the dresses and disputing over Kitty's wanting to\ngive Dunyasha the brown dress she had been wearing when Levin proposed\nto her, while he insisted that that dress must never be given away, but\nDunyasha must have the blue one.\n\n\"How is it you don't see? She's a brunette, and it won't suit her....\nI've worked it all out.\"\n\nHearing why he had come, the princess was half humorously, half\nseriously angry with him, and sent him home to dress and not to hinder\nKitty's hair-dressing, as Charles the hair-dresser was just coming.\n\n\"As it is, she's been eating nothing lately and is losing her looks, and\nthen you must come and upset her with your nonsense,\" she said to him.\n\"Get along with you, my dear!\"\n\nLevin, guilty and shamefaced, but pacified, went back to his hotel. His\nbrother, Darya Alexandrovna, and Stepan Arkadyevitch, all in full dress,\nwere waiting for him to bless him with the holy picture. There was no\ntime to lose. Darya Alexandrovna had to drive home again to fetch her\ncurled and pomaded son, who was to carry the holy pictures after the\nbride. Then a carriage had to be sent for the best man, and another that\nwould take Sergey Ivanovitch away would have to be sent back....\nAltogether there were a great many most complicated matters to be\nconsidered and arranged. One thing was unmistakable, that there must be\nno delay, as it was already half-past six.\n\nNothing special happened at the ceremony of benediction with the holy\npicture. Stepan Arkadyevitch stood in a comically solemn pose beside his\nwife, took the holy picture, and telling Levin to bow down to the\nground, he blessed him with his kindly, ironical smile, and kissed him\nthree times; Darya Alexandrovna did the same, and immediately was in a\nhurry to get off, and again plunged into the intricate question of the\ndestinations of the various carriages.\n\n\"Come, I'll tell you how we'll manage: you drive in our carriage to\nfetch him, and Sergey Ivanovitch, if he'll be so good, will drive there\nand then send his carriage.\"\n\n\"Of course; I shall be delighted.\"\n\n\"We'll come on directly with him. Are your things sent off?\" said Stepan\nArkadyevitch.\n\n\"Yes,\" answered Levin, and he told Kouzma to put out his clothes for him\nto dress.\n\n\n\nChapter 3\n\n\nA crowd of people, principally women, was thronging round the church\nlighted up for the wedding. Those who had not succeeded in getting into\nthe main entrance were crowding about the windows, pushing, wrangling,\nand peeping through the gratings.\n\nMore than twenty carriages had already been drawn up in ranks along the\nstreet by the police. A police officer, regardless of the frost, stood\nat the entrance, gorgeous in his uniform. More carriages were\ncontinually driving up, and ladies wearing flowers and carrying their\ntrains, and men taking off their helmets or black hats kept walking into\nthe church. Inside the church both lusters were already lighted, and all\nthe candles before the holy pictures. The gilt on the red ground of the\nholy picture-stand, and the gilt relief on the pictures, and the silver\nof the lusters and candlesticks, and the stones of the floor, and the\nrugs, and the banners above in the choir, and the steps of the altar,\nand the old blackened books, and the cassocks and surplices--all were\nflooded with light. On the right side of the warm church, in the crowd\nof frock coats and white ties, uniforms and broadcloth, velvet, satin,\nhair and flowers, bare shoulders and arms and long gloves, there was\ndiscreet but lively conversation that echoed strangely in the high\ncupola. Every time there was heard the creak of the opened door the\nconversation in the crowd died away, and everybody looked round\nexpecting to see the bride and bridegroom come in. But the door had\nopened more than ten times, and each time it was either a belated guest\nor guests, who joined the circle of the invited on the right, or a\nspectator, who had eluded or softened the police officer, and went to\njoin the crowd of outsiders on the left. Both the guests and the outside\npublic had by now passed through all the phases of anticipation.\n\nAt first they imagined that the bride and bridegroom would arrive\nimmediately, and attached no importance at all to their being late. Then\nthey began to look more and more often towards the door, and to talk of\nwhether anything could have happened. Then the long delay began to be\npositively discomforting, and relations and guests tried to look as if\nthey were not thinking of the bridegroom but were engrossed in\nconversation.\n\nThe head deacon, as though to remind them of the value of his time,\ncoughed impatiently, making the window-panes quiver in their frames. In\nthe choir the bored choristers could be heard trying their voices and\nblowing their noses. The priest was continually sending first the beadle\nand then the deacon to find out whether the bridegroom had not come,\nmore and more often he went himself, in a lilac vestment and an\nembroidered sash, to the side door, expecting to see the bridegroom. At\nlast one of the ladies, glancing at her watch, said, \"It really is\nstrange, though!\" and all the guests became uneasy and began loudly\nexpressing their wonder and dissatisfaction. One of the bridegroom's\nbest men went to find out what had happened. Kitty meanwhile had long\nago been quite ready, and in her white dress and long veil and wreath of\norange blossoms she was standing in the drawing-room of the\nShtcherbatskys' house with her sister, Madame Lvova, who was her\nbridal-mother. She was looking out of the window, and had been for over\nhalf an hour anxiously expecting to hear from the best man that her\nbridegroom was at the church.\n\nLevin meanwhile, in his trousers, but without his coat and waistcoat,\nwas walking to and fro in his room at the hotel, continually putting his\nhead out of the door and looking up and down the corridor. But in the\ncorridor there was no sign of the person he was looking for and he came\nback in despair, and frantically waving his hands addressed Stepan\nArkadyevitch, who was smoking serenely.\n\n\"Was ever a man in such a fearful fool's position?\" he said.\n\n\"Yes, it is stupid,\" Stepan Arkadyevitch assented, smiling soothingly.\n\"But don't worry, it'll be brought directly.\"\n\n\"No, what is to be done!\" said Levin, with smothered fury. \"And these\nfools of open waistcoats! Out of the question!\" he said, looking at the\ncrumpled front of his shirt. \"And what if the things have been taken on\nto the railway station!\" he roared in desperation.\n\n\"Then you must put on mine.\"\n\n\"I ought to have done so long ago, if at all.\"\n\n\"It's not nice to look ridiculous.... Wait a bit! it will _come round_.\"\n\nThe point was that when Levin asked for his evening suit, Kouzma, his\nold servant, had brought him the coat, waistcoat, and everything that\nwas wanted.\n\n\"But the shirt!\" cried Levin.\n\n\"You've got a shirt on,\" Kouzma answered, with a placid smile.\n\nKouzma had not thought of leaving out a clean shirt, and on receiving\ninstructions to pack up everything and send it round to the\nShtcherbatskys' house, from which the young people were to set out the\nsame evening, he had done so, packing everything but the dress suit. The\nshirt worn since the morning was crumpled and out of the question with\nthe fashionable open waistcoat. It was a long way to send to the\nShtcherbatskys'. They sent out to buy a shirt. The servant came back;\neverything was shut up--it was Sunday. They sent to Stepan\nArkadyevitch's and brought a shirt--it was impossibly wide and short.\nThey sent finally to the Shtcherbatskys' to unpack the things. The\nbridegroom was expected at the church while he was pacing up and down\nhis room like a wild beast in a cage, peeping out into the corridor, and\nwith horror and despair recalling what absurd things he had said to\nKitty and what she might be thinking now.\n\nAt last the guilty Kouzma flew panting into the room with the shirt.\n\n\"Only just in time. They were just lifting it into the van,\" said\nKouzma.\n\nThree minutes later Levin ran full speed into the corridor, not looking\nat his watch for fear of aggravating his sufferings.\n\n\"You won't help matters like this,\" said Stepan Arkadyevitch with a\nsmile, hurrying with more deliberation after him. \"It will come round,\nit will come round ... I tell you.\"\n\n\n\nChapter 4\n\n\n\"They've come!\" \"Here he is!\" \"Which one?\" \"Rather young, eh?\" \"Why, my\ndear soul, she looks more dead than alive!\" were the comments in the\ncrowd, when Levin, meeting his bride in the entrance, walked with her\ninto the church.\n\nStepan Arkadyevitch told his wife the cause of the delay, and the guests\nwere whispering it with smiles to one another. Levin saw nothing and no\none; he did not take his eyes off his bride.\n\nEveryone said she had lost her looks dreadfully of late, and was not\nnearly so pretty on her wedding day as usual; but Levin did not think\nso. He looked at her hair done up high, with the long white veil and\nwhite flowers and the high, stand-up, scalloped collar, that in such a\nmaidenly fashion hid her long neck at the sides and only showed it in\nfront, her strikingly slender figure, and it seemed to him that she\nlooked better than ever--not because these flowers, this veil, this gown\nfrom Paris added anything to her beauty; but because, in spite of the\nelaborate sumptuousness of her attire, the expression of her sweet face,\nof her eyes, of her lips was still her own characteristic expression of\nguileless truthfulness.\n\n\"I was beginning to think you meant to run away,\" she said, and smiled\nto him.\n\n\"It's so stupid, what happened to me, I'm ashamed to speak of it!\" he\nsaid, reddening, and he was obliged to turn to Sergey Ivanovitch, who\ncame up to him.\n\n\"This is a pretty story of yours about the shirt!\" said Sergey\nIvanovitch, shaking his head and smiling.\n\n\"Yes, yes!\" answered Levin, without an idea of what they were talking\nabout.\n\n\"Now, Kostya, you have to decide,\" said Stepan Arkadyevitch with an air\nof mock dismay, \"a weighty question. You are at this moment just in the\nhumor to appreciate all its gravity. They ask me, are they to light the\ncandles that have been lighted before or candles that have never been\nlighted? It's a matter of ten roubles,\" he added, relaxing his lips into\na smile. \"I have decided, but I was afraid you might not agree.\"\n\nLevin saw it was a joke, but he could not smile.\n\n\"Well, how's it to be then?--unlighted or lighted candles? that's the\nquestion.\"\n\n\"Yes, yes, unlighted.\"\n\n\"Oh, I'm very glad. The question's decided!\" said Stepan Arkadyevitch,\nsmiling. \"How silly men are, though, in this position,\" he said to\nTchirikov, when Levin, after looking absently at him, had moved back to\nhis bride.\n\n\"Kitty, mind you're the first to step on the carpet,\" said Countess\nNordston, coming up. \"You're a nice person!\" she said to Levin.\n\n\"Aren't you frightened, eh?\" said Marya Dmitrievna, an old aunt.\n\n\"Are you cold? You're pale. Stop a minute, stoop down,\" said Kitty's\nsister, Madame Lvova, and with her plump, handsome arms she smilingly\nset straight the flowers on her head.\n\nDolly came up, tried to say something, but could not speak, cried, and\nthen laughed unnaturally.\n\nKitty looked at all of them with the same absent eyes as Levin.\n\nMeanwhile the officiating clergy had got into their vestments, and the\npriest and deacon came out to the lectern, which stood in the forepart\nof the church. The priest turned to Levin saying something. Levin did\nnot hear what the priest said.\n\n\"Take the bride's hand and lead her up,\" the best man said to Levin.\n\nIt was a long while before Levin could make out what was expected of\nhim. For a long time they tried to set him right and made him begin\nagain--because he kept taking Kitty by the wrong arm or with the wrong\narm--till he understood at last that what he had to do was, without\nchanging his position, to take her right hand in his right hand. When at\nlast he had taken the bride's hand in the correct way, the priest walked\na few paces in front of them and stopped at the lectern. The crowd of\nfriends and relations moved after them, with a buzz of talk and a rustle\nof skirts. Someone stooped down and pulled out the bride's train. The\nchurch became so still that the drops of wax could be heard falling from\nthe candles.\n\nThe little old priest in his ecclesiastical cap, with his long\nsilvery-gray locks of hair parted behind his ears, was fumbling with\nsomething at the lectern, putting out his little old hands from under\nthe heavy silver vestment with the gold cross on the back of it.\n\nStepan Arkadyevitch approached him cautiously, whispered something, and\nmaking a sign to Levin, walked back again.\n\nThe priest lighted two candles, wreathed with flowers, and holding them\nsideways so that the wax dropped slowly from them he turned, facing the\nbridal pair. The priest was the same old man that had confessed Levin.\nHe looked with weary and melancholy eyes at the bride and bridegroom,\nsighed, and putting his right hand out from his vestment, blessed the\nbridegroom with it, and also with a shade of solicitous tenderness laid\nthe crossed fingers on the bowed head of Kitty. Then he gave them the\ncandles, and taking the censer, moved slowly away from them.\n\n\"Can it be true?\" thought Levin, and he looked round at his bride.\nLooking down at her he saw her face in profile, and from the scarcely\nperceptible quiver of her lips and eyelashes he knew she was aware of\nhis eyes upon her. She did not look round, but the high scalloped\ncollar, that reached her little pink ear, trembled faintly. He saw that\na sigh was held back in her throat, and the little hand in the long\nglove shook as it held the candle.\n\nAll the fuss of the shirt, of being late, all the talk of friends and\nrelations, their annoyance, his ludicrous position--all suddenly passed\naway and he was filled with joy and dread.\n\nThe handsome, stately head-deacon wearing a silver robe and his curly\nlocks standing out at each side of his head, stepped smartly forward,\nand lifting his stole on two fingers, stood opposite the priest.\n\n\"Blessed be the name of the Lord,\" the solemn syllables rang out slowly\none after another, setting the air quivering with waves of sound.\n\n\"Blessed is the name of our God, from the beginning, is now, and ever\nshall be,\" the little old priest answered in a submissive, piping voice,\nstill fingering something at the lectern. And the full chorus of the\nunseen choir rose up, filling the whole church, from the windows to the\nvaulted roof, with broad waves of melody. It grew stronger, rested for\nan instant, and slowly died away.\n\nThey prayed, as they always do, for peace from on high and for\nsalvation, for the Holy Synod, and for the Tsar; they prayed, too, for\nthe servants of God, Konstantin and Ekaterina, now plighting their\ntroth.\n\n\"Vouchsafe to them love made perfect, peace and help, O Lord, we beseech\nThee,\" the whole church seemed to breathe with the voice of the head\ndeacon.\n\nLevin heard the words, and they impressed him. \"How did they guess that\nit is help, just help that one wants?\" he thought, recalling all his\nfears and doubts of late. \"What do I know? what can I do in this fearful\nbusiness,\" he thought, \"without help? Yes, it is help I want now.\"\n\nWhen the deacon had finished the prayer for the Imperial family, the\npriest turned to the bridal pair with a book: \"Eternal God, that joinest\ntogether in love them that were separate,\" he read in a gentle, piping\nvoice: \"who hast ordained the union of holy wedlock that cannot be set\nasunder, Thou who didst bless Isaac and Rebecca and their descendants,\naccording to Thy Holy Covenant; bless Thy servants, Konstantin and\nEkaterina, leading them in the path of all good works. For gracious and\nmerciful art Thou, our Lord, and glory be to Thee, the Father, the Son,\nand the Holy Ghost, now and ever shall be.\"\n\n\"Amen!\" the unseen choir sent rolling again upon the air.\n\n\"'Joinest together in love them that were separate.' What deep meaning\nin those words, and how they correspond with what one feels at this\nmoment,\" thought Levin. \"Is she feeling the same as I?\"\n\nAnd looking round, he met her eyes, and from their expression he\nconcluded that she was understanding it just as he was. But this was a\nmistake; she almost completely missed the meaning of the words of the\nservice; she had not heard them, in fact. She could not listen to them\nand take them in, so strong was the one feeling that filled her breast\nand grew stronger and stronger. That feeling was joy at the completion\nof the process that for the last month and a half had been going on in\nher soul, and had during those six weeks been a joy and a torture to\nher. On the day when in the drawing room of the house in Arbaty Street\nshe had gone up to him in her brown dress, and given herself to him\nwithout a word--on that day, at that hour, there took place in her heart\na complete severance from all her old life, and a quite different, new,\nutterly strange life had begun for her, while the old life was actually\ngoing on as before. Those six weeks had for her been a time of the\nutmost bliss and the utmost misery. All her life, all her desires and\nhopes were concentrated on this one man, still uncomprehended by her, to\nwhom she was bound by a feeling of alternate attraction and repulsion,\neven less comprehended than the man himself, and all the while she was\ngoing on living in the outward conditions of her old life. Living the\nold life, she was horrified at herself, at her utter insurmountable\ncallousness to all her own past, to things, to habits, to the people she\nhad loved, who loved her--to her mother, who was wounded by her\nindifference, to her kind, tender father, till then dearer than all the\nworld. At one moment she was horrified at this indifference, at another\nshe rejoiced at what had brought her to this indifference. She could not\nframe a thought, not a wish apart from life with this man; but this new\nlife was not yet, and she could not even picture it clearly to herself.\nThere was only anticipation, the dread and joy of the new and the\nunknown. And now behold--anticipation and uncertainty and remorse at the\nabandonment of the old life--all was ending, and the new was beginning.\nThis new life could not but have terrors for her inexperience; but,\nterrible or not, the change had been wrought six weeks before in her\nsoul, and this was merely the final sanction of what had long been\ncompleted in her heart.\n\nTurning again to the lectern, the priest with some difficulty took\nKitty's little ring, and asking Levin for his hand, put it on the first\njoint of his finger. \"The servant of God, Konstantin, plights his troth\nto the servant of God, Ekaterina.\" And putting his big ring on Kitty's\ntouchingly weak, pink little finger, the priest said the same thing.\n\nAnd the bridal pair tried several times to understand what they had to\ndo, and each time made some mistake and were corrected by the priest in\na whisper. At last, having duly performed the ceremony, having signed\nthe rings with the cross, the priest handed Kitty the big ring, and\nLevin the little one. Again they were puzzled, and passed the rings from\nhand to hand, still without doing what was expected.\n\nDolly, Tchirikov, and Stepan Arkadyevitch stepped forward to set them\nright. There was an interval of hesitation, whispering, and smiles; but\nthe expression of solemn emotion on the faces of the betrothed pair did\nnot change: on the contrary, in their perplexity over their hands they\nlooked more grave and deeply moved than before, and the smile with which\nStepan Arkadyevitch whispered to them that now they would each put on\ntheir own ring died away on his lips. He had a feeling that any smile\nwould jar on them.\n\n\"Thou who didst from the beginning create male and female,\" the priest\nread after the exchange of rings, \"from Thee woman was given to man to\nbe a helpmeet to him, and for the procreation of children. O Lord, our\nGod, who hast poured down the blessings of Thy Truth according to Thy\nHoly Covenant upon Thy chosen servants, our fathers, from generation to\ngeneration, bless Thy servants Konstantin and Ekaterina, and make their\ntroth fast in faith, and union of hearts, and truth, and love....\"\n\nLevin felt more and more that all his ideas of marriage, all his dreams\nof how he would order his life, were mere childishness, and that it was\nsomething he had not understood hitherto, and now understood less than\never, though it was being performed upon him. The lump in his throat\nrose higher and higher, tears that would not be checked came into his\neyes.\n\n\n\nChapter 5\n\n\nIn the church there was all Moscow, all the friends and relations; and\nduring the ceremony of plighting troth, in the brilliantly lighted\nchurch, there was an incessant flow of discreetly subdued talk in the\ncircle of gaily dressed women and girls, and men in white ties,\nfrockcoats, and uniforms. The talk was principally kept up by the men,\nwhile the women were absorbed in watching every detail of the ceremony,\nwhich always means so much to them.\n\nIn the little group nearest to the bride were her two sisters: Dolly,\nand the other one, the self-possessed beauty, Madame Lvova, who had just\narrived from abroad.\n\n\"Why is it Marie's in lilac, as bad as black, at a wedding?\" said Madame\nKorsunskaya.\n\n\"With her complexion, it's the one salvation,\" responded Madame\nTrubetskaya. \"I wonder why they had the wedding in the evening? It's\nlike shop-people...\"\n\n\"So much prettier. I was married in the evening too...\" answered Madame\nKorsunskaya, and she sighed, remembering how charming she had been that\nday, and how absurdly in love her husband was, and how different it all\nwas now.\n\n\"They say if anyone's best man more than ten times, he'll never be\nmarried. I wanted to be for the tenth time, but the post was taken,\"\nsaid Count Siniavin to the pretty Princess Tcharskaya, who had designs\non him.\n\nPrincess Tcharskaya only answered with a smile. She looked at Kitty,\nthinking how and when she would stand with Count Siniavin in Kitty's\nplace, and how she would remind him then of his joke today.\n\nShtcherbatsky told the old maid of honor, Madame Nikolaeva, that he\nmeant to put the crown on Kitty's chignon for luck.\n\n\"She ought not to have worn a chignon,\" answered Madame Nikolaeva, who\nhad long ago made up her mind that if the elderly widower she was\nangling for married her, the wedding should be of the simplest. \"I don't\nlike such grandeur.\"\n\nSergey Ivanovitch was talking to Darya Dmitrievna, jestingly assuring\nher that the custom of going away after the wedding was becoming common\nbecause newly married people always felt a little ashamed of themselves.\n\n\"Your brother may feel proud of himself. She's a marvel of sweetness. I\nbelieve you're envious.\"\n\n\"Oh, I've got over that, Darya Dmitrievna,\" he answered, and a\nmelancholy and serious expression suddenly came over his face.\n\nStepan Arkadyevitch was telling his sister-in-law his joke about\ndivorce.\n\n\"The wreath wants setting straight,\" she answered, not hearing him.\n\n\"What a pity she's lost her looks so,\" Countess Nordston said to Madame\nLvova. \"Still he's not worth her little finger, is he?\"\n\n\"Oh, I like him so--not because he's my future _beau-frere_,\" answered\nMadame Lvova. \"And how well he's behaving! It's so difficult, too, to\nlook well in such a position, not to be ridiculous. And he's not\nridiculous, and not affected; one can see he's moved.\"\n\n\"You expected it, I suppose?\"\n\n\"Almost. She always cared for him.\"\n\n\"Well, we shall see which of them will step on the rug first. I warned\nKitty.\"\n\n\"It will make no difference,\" said Madame Lvova; \"we're all obedient\nwives; it's in our family.\"\n\n\"Oh, I stepped on the rug before Vassily on purpose. And you, Dolly?\"\n\nDolly stood beside them; she heard them, but she did not answer. She was\ndeeply moved. The tears stood in her eyes, and she could not have spoken\nwithout crying. She was rejoicing over Kitty and Levin; going back in\nthought to her own wedding, she glanced at the radiant figure of Stepan\nArkadyevitch, forgot all the present, and remembered only her own\ninnocent love. She recalled not herself only, but all her women-friends\nand acquaintances. She thought of them on the one day of their triumph,\nwhen they had stood like Kitty under the wedding crown, with love and\nhope and dread in their hearts, renouncing the past, and stepping\nforward into the mysterious future. Among the brides that came back to\nher memory, she thought too of her darling Anna, of whose proposed\ndivorce she had just been hearing. And she had stood just as innocent in\norange flowers and bridal veil. And now? \"It's terribly strange,\" she\nsaid to herself. It was not merely the sisters, the women-friends and\nfemale relations of the bride who were following every detail of the\nceremony. Women who were quite strangers, mere spectators, were watching\nit excitedly, holding their breath, in fear of losing a single movement\nor expression of the bride and bridegroom, and angrily not answering,\noften not hearing, the remarks of the callous men, who kept making\njoking or irrelevant observations.\n\n\"Why has she been crying? Is she being married against her will?\"\n\n\"Against her will to a fine fellow like that? A prince, isn't he?\"\n\n\"Is that her sister in the white satin? Just listen how the deacon booms\nout, 'And fearing her husband.'\"\n\n\"Are the choristers from Tchudovo?\"\n\n\"No, from the Synod.\"\n\n\"I asked the footman. He says he's going to take her home to his country\nplace at once. Awfully rich, they say. That's why she's being married to\nhim.\"\n\n\"No, they're a well-matched pair.\"\n\n\"I say, Marya Vassilievna, you were making out those fly-away crinolines\nwere not being worn. Just look at her in the puce dress--an ambassador's\nwife they say she is--how her skirt bounces out from side to side!\"\n\n\"What a pretty dear the bride is--like a lamb decked with flowers! Well,\nsay what you will, we women feel for our sister.\"\n\nSuch were the comments in the crowd of gazing women who had succeeded in\nslipping in at the church doors.\n\n\n\nChapter 6\n\n\nWhen the ceremony of plighting troth was over, the beadle spread before\nthe lectern in the middle of the church a piece of pink silken stuff,\nthe choir sang a complicated and elaborate psalm, in which the bass and\ntenor sang responses to one another, and the priest turning round\npointed the bridal pair to the pink silk rug. Though both had often\nheard a great deal about the saying that the one who steps first on the\nrug will be the head of the house, neither Levin nor Kitty were capable\nof recollecting it, as they took the few steps towards it. They did not\nhear the loud remarks and disputes that followed, some maintaining he\nhad stepped on first, and others that both had stepped on together.\n\nAfter the customary questions, whether they desired to enter upon\nmatrimony, and whether they were pledged to anyone else, and their\nanswers, which sounded strange to themselves, a new ceremony began.\nKitty listened to the words of the prayer, trying to make out their\nmeaning, but she could not. The feeling of triumph and radiant happiness\nflooded her soul more and more as the ceremony went on, and deprived her\nof all power of attention.\n\nThey prayed: \"Endow them with continence and fruitfulness, and vouchsafe\nthat their hearts may rejoice looking upon their sons and daughters.\"\nThey alluded to God's creation of a wife from Adam's rib \"and for this\ncause a man shall leave father and mother, and cleave unto his wife, and\nthey two shall be one flesh,\" and that \"this is a great mystery\"; they\nprayed that God would make them fruitful and bless them, like Isaac and\nRebecca, Joseph, Moses and Zipporah, and that they might look upon their\nchildren's children. \"That's all splendid,\" thought Kitty, catching the\nwords, \"all that's just as it should be,\" and a smile of happiness,\nunconsciously reflected in everyone who looked at her, beamed on her\nradiant face.\n\n\"Put it on quite,\" voices were heard urging when the priest had put on\nthe wedding crowns and Shtcherbatsky, his hand shaking in its\nthree-button glove, held the crown high above her head.\n\n\"Put it on!\" she whispered, smiling.\n\nLevin looked round at her, and was struck by the joyful radiance on her\nface, and unconsciously her feeling infected him. He too, like her felt\nglad and happy.\n\nThey enjoyed hearing the epistle read, and the roll of the head deacon's\nvoice at the last verse, awaited with such impatience by the outside\npublic. They enjoyed drinking out of the shallow cup of warm red wine\nand water, and they were still more pleased when the priest, flinging\nback his stole and taking both their hands in his, led them round the\nlectern to the accompaniment of bass voices chanting \"Glory to God.\"\n\nShtcherbatsky and Tchirikov, supporting the crowns and stumbling over\nthe bride's train, smiling too and seeming delighted at something, were\nat one moment left behind, at the next treading on the bridal pair as\nthe priest came to a halt. The spark of joy kindled in Kitty seemed to\nhave infected everyone in the church. It seemed to Levin that the priest\nand the deacon too wanted to smile just as he did.\n\nTaking the crowns off their heads the priest read the last prayer and\ncongratulated the young people. Levin looked at Kitty, and he had never\nbefore seen her look as she did. She was charming with the new radiance\nof happiness in her face. Levin longed to say something to her, but he\ndid not know whether it was all over. The priest got him out of his\ndifficulty. He smiled his kindly smile and said gently, \"Kiss your wife,\nand you kiss your husband,\" and took the candles out of their hands.\n\nLevin kissed her smiling lips with timid care, gave her his arm, and\nwith a new strange sense of closeness, walked out of the church. He did\nnot believe, he could not believe, that it was true. It was only when\ntheir wondering and timid eyes met that he believed in it, because he\nfelt that they were one.\n\nAfter supper, the same night, the young people left for the country.\n\n\n\nChapter 7\n\n\nVronsky and Anna had been traveling for three months together in Europe.\nThey had visited Venice, Rome, and Naples, and had just arrived at a\nsmall Italian town where they meant to stay some time. A handsome head\nwaiter, with thick pomaded hair parted from the neck upwards, an evening\ncoat, a broad white cambric shirt front, and a bunch of trinkets hanging\nabove his rounded stomach, stood with his hands in the full curve of his\npockets, looking contemptuously from under his eyelids while he gave\nsome frigid reply to a gentleman who had stopped him. Catching the sound\nof footsteps coming from the other side of the entry towards the\nstaircase, the head waiter turned round, and seeing the Russian count,\nwho had taken their best rooms, he took his hands out of his pockets\ndeferentially, and with a bow informed him that a courier had been, and\nthat the business about the palazzo had been arranged. The steward was\nprepared to sign the agreement.\n\n\"Ah! I'm glad to hear it,\" said Vronsky. \"Is madame at home or not?\"\n\n\"Madame has been out for a walk but has returned now,\" answered the\nwaiter.\n\nVronsky took off his soft, wide-brimmed hat and passed his handkerchief\nover his heated brow and hair, which had grown half over his ears, and\nwas brushed back covering the bald patch on his head. And glancing\ncasually at the gentleman, who still stood there gazing intently at him,\nhe would have gone on.\n\n\"This gentleman is a Russian, and was inquiring after you,\" said the\nhead waiter.\n\nWith mingled feelings of annoyance at never being able to get away from\nacquaintances anywhere, and longing to find some sort of diversion from\nthe monotony of his life, Vronsky looked once more at the gentleman, who\nhad retreated and stood still again, and at the same moment a light came\ninto the eyes of both.\n\n\"Golenishtchev!\"\n\n\"Vronsky!\"\n\nIt really was Golenishtchev, a comrade of Vronsky's in the Corps of\nPages. In the corps Golenishtchev had belonged to the liberal party; he\nleft the corps without entering the army, and had never taken office\nunder the government. Vronsky and he had gone completely different ways\non leaving the corps, and had only met once since.\n\nAt that meeting Vronsky perceived that Golenishtchev had taken up a sort\nof lofty, intellectually liberal line, and was consequently disposed to\nlook down upon Vronsky's interests and calling in life. Hence Vronsky\nhad met him with the chilling and haughty manner he so well knew how to\nassume, the meaning of which was: \"You may like or dislike my way of\nlife, that's a matter of the most perfect indifference to me; you will\nhave to treat me with respect if you want to know me.\" Golenishtchev had\nbeen contemptuously indifferent to the tone taken by Vronsky. This\nsecond meeting might have been expected, one would have supposed, to\nestrange them still more. But now they beamed and exclaimed with delight\non recognizing one another. Vronsky would never have expected to be so\npleased to see Golenishtchev, but probably he was not himself aware how\nbored he was. He forgot the disagreeable impression of their last\nmeeting, and with a face of frank delight held out his hand to his old\ncomrade. The same expression of delight replaced the look of uneasiness\non Golenishtchev's face.\n\n\"How glad I am to meet you!\" said Vronsky, showing his strong white\nteeth in a friendly smile.\n\n\"I heard the name Vronsky, but I didn't know which one. I'm very, very\nglad!\"\n\n\"Let's go in. Come, tell me what you're doing.\"\n\n\"I've been living here for two years. I'm working.\"\n\n\"Ah!\" said Vronsky, with sympathy; \"let's go in.\" And with the habit\ncommon with Russians, instead of saying in Russian what he wanted to\nkeep from the servants, he began to speak in French.\n\n\"Do you know Madame Karenina? We are traveling together. I am going to\nsee her now,\" he said in French, carefully scrutinizing Golenishtchev's\nface.\n\n\"Ah! I did not know\" (though he did know), Golenishtchev answered\ncarelessly. \"Have you been here long?\" he added.\n\n\"Four days,\" Vronsky answered, once more scrutinizing his friend's face\nintently.\n\n\"Yes, he's a decent fellow, and will look at the thing properly,\"\nVronsky said to himself, catching the significance of Golenishtchev's\nface and the change of subject. \"I can introduce him to Anna, he looks\nat it properly.\"\n\nDuring those three months that Vronsky had spent abroad with Anna, he\nhad always on meeting new people asked himself how the new person would\nlook at his relations with Anna, and for the most part, in men, he had\nmet with the \"proper\" way of looking at it. But if he had been asked,\nand those who looked at it \"properly\" had been asked, exactly how they\ndid look at it, both he and they would have been greatly puzzled to\nanswer.\n\nIn reality, those who in Vronsky's opinion had the \"proper\" view had no\nsort of view at all, but behaved in general as well-bred persons do\nbehave in regard to all the complex and insoluble problems with which\nlife is encompassed on all sides; they behaved with propriety, avoiding\nallusions and unpleasant questions. They assumed an air of fully\ncomprehending the import and force of the situation, of accepting and\neven approving of it, but of considering it superfluous and uncalled for\nto put all this into words.\n\nVronsky at once divined that Golenishtchev was of this class, and\ntherefore was doubly pleased to see him. And in fact, Golenishtchev's\nmanner to Madame Karenina, when he was taken to call on her, was all\nthat Vronsky could have desired. Obviously without the slightest effort\nhe steered clear of all subjects which might lead to embarrassment.\n\nHe had never met Anna before, and was struck by her beauty, and still\nmore by the frankness with which she accepted her position. She blushed\nwhen Vronsky brought in Golenishtchev, and he was extremely charmed by\nthis childish blush overspreading her candid and handsome face. But what\nhe liked particularly was the way in which at once, as though on purpose\nthat there might be no misunderstanding with an outsider, she called\nVronsky simply Alexey, and said they were moving into a house they had\njust taken, what was here called a palazzo. Golenishtchev liked this\ndirect and simple attitude to her own position. Looking at Anna's manner\nof simple-hearted, spirited gaiety, and knowing Alexey Alexandrovitch\nand Vronsky, Golenishtchev fancied that he understood her perfectly. He\nfancied that he understood what she was utterly unable to understand:\nhow it was that, having made her husband wretched, having abandoned him\nand her son and lost her good name, she yet felt full of spirits,\ngaiety, and happiness.\n\n\"It's in the guide-book,\" said Golenishtchev, referring to the palazzo\nVronsky had taken. \"There's a first-rate Tintoretto there. One of his\nlatest period.\"\n\n\"I tell you what: it's a lovely day, let's go and have another look at\nit,\" said Vronsky, addressing Anna.\n\n\"I shall be very glad to; I'll go and put on my hat. Would you say it's\nhot?\" she said, stopping short in the doorway and looking inquiringly at\nVronsky. And again a vivid flush overspread her face.\n\nVronsky saw from her eyes that she did not know on what terms he cared\nto be with Golenishtchev, and so was afraid of not behaving as he would\nwish.\n\nHe looked a long, tender look at her.\n\n\"No, not very,\" he said.\n\nAnd it seemed to her that she understood everything, most of all, that\nhe was pleased with her; and smiling to him, she walked with her rapid\nstep out at the door.\n\nThe friends glanced at one another, and a look of hesitation came into\nboth faces, as though Golenishtchev, unmistakably admiring her, would\nhave liked to say something about her, and could not find the right\nthing to say, while Vronsky desired and dreaded his doing so.\n\n\"Well then,\" Vronsky began to start a conversation of some sort; \"so\nyou're settled here? You're still at the same work, then?\" he went on,\nrecalling that he had been told Golenishtchev was writing something.\n\n\"Yes, I'm writing the second part of the _Two Elements_,\" said\nGolenishtchev, coloring with pleasure at the question--\"that is, to be\nexact, I am not writing it yet; I am preparing, collecting materials. It\nwill be of far wider scope, and will touch on almost all questions. We\nin Russia refuse to see that we are the heirs of Byzantium,\" and he\nlaunched into a long and heated explanation of his views.\n\nVronsky at the first moment felt embarrassed at not even knowing of the\nfirst part of the _Two Elements_, of which the author spoke as something\nwell known. But as Golenishtchev began to lay down his opinions and\nVronsky was able to follow them even without knowing the _Two Elements_,\nhe listened to him with some interest, for Golenishtchev spoke well. But\nVronsky was startled and annoyed by the nervous irascibility with which\nGolenishtchev talked of the subject that engrossed him. As he went on\ntalking, his eyes glittered more and more angrily; he was more and more\nhurried in his replies to imaginary opponents, and his face grew more\nand more excited and worried. Remembering Golenishtchev, a thin, lively,\ngood-natured and well-bred boy, always at the head of the class, Vronsky\ncould not make out the reason of his irritability, and he did not like\nit. What he particularly disliked was that Golenishtchev, a man\nbelonging to a good set, should put himself on a level with some\nscribbling fellows, with whom he was irritated and angry. Was it worth\nit? Vronsky disliked it, yet he felt that Golenishtchev was unhappy, and\nwas sorry for him. Unhappiness, almost mental derangement, was visible\non his mobile, rather handsome face, while without even noticing Anna's\ncoming in, he went on hurriedly and hotly expressing his views.\n\nWhen Anna came in in her hat and cape, and her lovely hand rapidly\nswinging her parasol, and stood beside him, it was with a feeling of\nrelief that Vronsky broke away from the plaintive eyes of Golenishtchev\nwhich fastened persistently upon him, and with a fresh rush of love\nlooked at his charming companion, full of life and happiness.\nGolenishtchev recovered himself with an effort, and at first was\ndejected and gloomy, but Anna, disposed to feel friendly with everyone\nas she was at that time, soon revived his spirits by her direct and\nlively manner. After trying various subjects of conversation, she got\nhim upon painting, of which he talked very well, and she listened to him\nattentively. They walked to the house they had taken, and looked over\nit.\n\n\"I am very glad of one thing,\" said Anna to Golenishtchev when they were\non their way back, \"Alexey will have a capital _atelier_. You must\ncertainly take that room,\" she said to Vronsky in Russian, using the\naffectionately familiar form as though she saw that Golenishtchev would\nbecome intimate with them in their isolation, and that there was no need\nof reserve before him.\n\n\"Do you paint?\" said Golenishtchev, turning round quickly to Vronsky.\n\n\"Yes, I used to study long ago, and now I have begun to do a little,\"\nsaid Vronsky, reddening.\n\n\"He has great talent,\" said Anna with a delighted smile. \"I'm no judge,\nof course. But good judges have said the same.\"\n\n\n\nChapter 8\n\n\nAnna, in that first period of her emancipation and rapid return to\nhealth, felt herself unpardonably happy and full of the joy of life. The\nthought of her husband's unhappiness did not poison her happiness. On\none side that memory was too awful to be thought of. On the other side\nher husband's unhappiness had given her too much happiness to be\nregretted. The memory of all that had happened after her illness: her\nreconciliation with her husband, its breakdown, the news of Vronsky's\nwound, his visit, the preparations for divorce, the departure from her\nhusband's house, the parting from her son--all that seemed to her like a\ndelirious dream, from which she had waked up alone with Vronsky abroad.\nThe thought of the harm caused to her husband aroused in her a feeling\nlike repulsion, and akin to what a drowning man might feel who has\nshaken off another man clinging to him. That man did drown. It was an\nevil action, of course, but it was the sole means of escape, and better\nnot to brood over these fearful facts.\n\nOne consolatory reflection upon her conduct had occurred to her at the\nfirst moment of the final rupture, and when now she recalled all the\npast, she remembered that one reflection. \"I have inevitably made that\nman wretched,\" she thought; \"but I don't want to profit by his misery. I\ntoo am suffering, and shall suffer; I am losing what I prized above\neverything--I am losing my good name and my son. I have done wrong, and\nso I don't want happiness, I don't want a divorce, and shall suffer from\nmy shame and the separation from my child.\" But, however sincerely Anna\nhad meant to suffer, she was not suffering. Shame there was not. With\nthe tact of which both had such a large share, they had succeeded in\navoiding Russian ladies abroad, and so had never placed themselves in a\nfalse position, and everywhere they had met people who pretended that\nthey perfectly understood their position, far better indeed than they\ndid themselves. Separation from the son she loved--even that did not\ncause her anguish in these early days. The baby girl--_his_ child--was\nso sweet, and had so won Anna's heart, since she was all that was left\nher, that Anna rarely thought of her son.\n\nThe desire for life, waxing stronger with recovered health, was so\nintense, and the conditions of life were so new and pleasant, that Anna\nfelt unpardonably happy. The more she got to know Vronsky, the more she\nloved him. She loved him for himself, and for his love for her. Her\ncomplete ownership of him was a continual joy to her. His presence was\nalways sweet to her. All the traits of his character, which she learned\nto know better and better, were unutterably dear to her. His appearance,\nchanged by his civilian dress, was as fascinating to her as though she\nwere some young girl in love. In everything he said, thought, and did,\nshe saw something particularly noble and elevated. Her adoration of him\nalarmed her indeed; she sought and could not find in him anything not\nfine. She dared not show him her sense of her own insignificance beside\nhim. It seemed to her that, knowing this, he might sooner cease to love\nher; and she dreaded nothing now so much as losing his love, though she\nhad no grounds for fearing it. But she could not help being grateful to\nhim for his attitude to her, and showing that she appreciated it. He,\nwho had in her opinion such a marked aptitude for a political career, in\nwhich he would have been certain to play a leading part--he had\nsacrificed his ambition for her sake, and never betrayed the slightest\nregret. He was more lovingly respectful to her than ever, and the\nconstant care that she should not feel the awkwardness of her position\nnever deserted him for a single instant. He, so manly a man, never\nopposed her, had indeed, with her, no will of his own, and was anxious,\nit seemed, for nothing but to anticipate her wishes. And she could not\nbut appreciate this, even though the very intensity of his solicitude\nfor her, the atmosphere of care with which he surrounded her, sometimes\nweighed upon her.\n\nVronsky, meanwhile, in spite of the complete realization of what he had\nso long desired, was not perfectly happy. He soon felt that the\nrealization of his desires gave him no more than a grain of sand out of\nthe mountain of happiness he had expected. It showed him the mistake men\nmake in picturing to themselves happiness as the realization of their\ndesires. For a time after joining his life to hers, and putting on\ncivilian dress, he had felt all the delight of freedom in general of\nwhich he had known nothing before, and of freedom in his love,--and he\nwas content, but not for long. He was soon aware that there was\nspringing up in his heart a desire for desires--_ennui_. Without\nconscious intention he began to clutch at every passing caprice, taking\nit for a desire and an object. Sixteen hours of the day must be occupied\nin some way, since they were living abroad in complete freedom, outside\nthe conditions of social life which filled up time in Petersburg. As for\nthe amusements of bachelor existence, which had provided Vronsky with\nentertainment on previous tours abroad, they could not be thought of,\nsince the sole attempt of the sort had led to a sudden attack of\ndepression in Anna, quite out of proportion with the cause--a late\nsupper with bachelor friends. Relations with the society of the\nplace--foreign and Russian--were equally out of the question owing to\nthe irregularity of their position. The inspection of objects of\ninterest, apart from the fact that everything had been seen already, had\nnot for Vronsky, a Russian and a sensible man, the immense significance\nEnglishmen are able to attach to that pursuit.\n\nAnd just as the hungry stomach eagerly accepts every object it can get,\nhoping to find nourishment in it, Vronsky quite unconsciously clutched\nfirst at politics, then at new books, and then at pictures.\n\nAs he had from a child a taste for painting, and as, not knowing what to\nspend his money on, he had begun collecting engravings, he came to a\nstop at painting, began to take interest in it, and concentrated upon it\nthe unoccupied mass of desires which demanded satisfaction.\n\nHe had a ready appreciation of art, and probably, with a taste for\nimitating art, he supposed himself to have the real thing essential for\nan artist, and after hesitating for some time which style of painting to\nselect--religious, historical, realistic, or genre painting--he set to\nwork to paint. He appreciated all kinds, and could have felt inspired by\nany one of them; but he had no conception of the possibility of knowing\nnothing at all of any school of painting, and of being inspired directly\nby what is within the soul, without caring whether what is painted will\nbelong to any recognized school. Since he knew nothing of this, and drew\nhis inspiration, not directly from life, but indirectly from life\nembodied in art, his inspiration came very quickly and easily, and as\nquickly and easily came his success in painting something very similar\nto the sort of painting he was trying to imitate.\n\nMore than any other style he liked the French--graceful and\neffective--and in that style he began to paint Anna's portrait in\nItalian costume, and the portrait seemed to him, and to everyone who saw\nit, extremely successful.\n\n\n\nChapter 9\n\n\nThe old neglected palazzo, with its lofty carved ceilings and frescoes\non the walls, with its floors of mosaic, with its heavy yellow stuff\ncurtains on the windows, with its vases on pedestals, and its open\nfireplaces, its carved doors and gloomy reception rooms, hung with\npictures--this palazzo did much, by its very appearance after they had\nmoved into it, to confirm in Vronsky the agreeable illusion that he was\nnot so much a Russian country gentleman, a retired army officer, as an\nenlightened amateur and patron of the arts, himself a modest artist who\nhad renounced the world, his connections, and his ambition for the sake\nof the woman he loved.\n\nThe pose chosen by Vronsky with their removal into the palazzo was\ncompletely successful, and having, through Golenishtchev, made\nacquaintance with a few interesting people, for a time he was satisfied.\nHe painted studies from nature under the guidance of an Italian\nprofessor of painting, and studied mediaeval Italian life. Mediaeval\nItalian life so fascinated Vronsky that he even wore a hat and flung a\ncloak over his shoulder in the mediaeval style, which, indeed, was\nextremely becoming to him.\n\n\"Here we live, and know nothing of what's going on,\" Vronsky said to\nGolenishtchev as he came to see him one morning. \"Have you seen\nMihailov's picture?\" he said, handing him a Russian gazette he had\nreceived that morning, and pointing to an article on a Russian artist,\nliving in the very same town, and just finishing a picture which had\nlong been talked about, and had been bought beforehand. The article\nreproached the government and the academy for letting so remarkable an\nartist be left without encouragement and support.\n\n\"I've seen it,\" answered Golenishtchev. \"Of course, he's not without\ntalent, but it's all in a wrong direction. It's all the\nIvanov-Strauss-Renan attitude to Christ and to religious painting.\"\n\n\"What is the subject of the picture?\" asked Anna.\n\n\"Christ before Pilate. Christ is represented as a Jew with all the\nrealism of the new school.\"\n\nAnd the question of the subject of the picture having brought him to one\nof his favorite theories, Golenishtchev launched forth into a\ndisquisition on it.\n\n\"I can't understand how they can fall into such a gross mistake. Christ\nalways has His definite embodiment in the art of the great masters. And\ntherefore, if they want to depict, not God, but a revolutionist or a\nsage, let them take from history a Socrates, a Franklin, a Charlotte\nCorday, but not Christ. They take the very figure which cannot be taken\nfor their art, and then...\"\n\n\"And is it true that this Mihailov is in such poverty?\" asked Vronsky,\nthinking that, as a Russian Maecenas, it was his duty to assist the\nartist regardless of whether the picture were good or bad.\n\n\"I should say not. He's a remarkable portrait-painter. Have you ever\nseen his portrait of Madame Vassiltchikova? But I believe he doesn't\ncare about painting any more portraits, and so very likely he is in\nwant. I maintain that...\"\n\n\"Couldn't we ask him to paint a portrait of Anna Arkadyevna?\" said\nVronsky.\n\n\"Why mine?\" said Anna. \"After yours I don't want another portrait.\nBetter have one of Annie\" (so she called her baby girl). \"Here she is,\"\nshe added, looking out of the window at the handsome Italian nurse, who\nwas carrying the child out into the garden, and immediately glancing\nunnoticed at Vronsky. The handsome nurse, from whom Vronsky was painting\na head for his picture, was the one hidden grief in Anna's life. He\npainted with her as his model, admired her beauty and mediaevalism, and\nAnna dared not confess to herself that she was afraid of becoming\njealous of this nurse, and was for that reason particularly gracious and\ncondescending both to her and her little son. Vronsky, too, glanced out\nof the window and into Anna's eyes, and, turning at once to\nGolenishtchev, he said:\n\n\"Do you know this Mihailov?\"\n\n\"I have met him. But he's a queer fish, and quite without breeding. You\nknow, one of those uncouth new people one's so often coming across\nnowadays, one of those free-thinkers you know, who are reared _d'emblee_\nin theories of atheism, scepticism, and materialism. In former days,\"\nsaid Golenishtchev, not observing, or not willing to observe, that both\nAnna and Vronsky wanted to speak, \"in former days the free-thinker was a\nman who had been brought up in ideas of religion, law, and morality, and\nonly through conflict and struggle came to free-thought; but now there\nhas sprung up a new type of born free-thinkers who grow up without even\nhaving heard of principles of morality or of religion, of the existence\nof authorities, who grow up directly in ideas of negation in everything,\nthat is to say, savages. Well, he's of that class. He's the son, it\nappears, of some Moscow butler, and has never had any sort of\nbringing-up. When he got into the academy and made his reputation he\ntried, as he's no fool, to educate himself. And he turned to what seemed\nto him the very source of culture--the magazines. In old times, you see,\na man who wanted to educate himself--a Frenchman, for instance--would\nhave set to work to study all the classics and theologians and\ntragedians and historiaris and philosophers, and, you know, all the\nintellectual work that came in his way. But in our day he goes straight\nfor the literature of negation, very quickly assimilates all the\nextracts of the science of negation, and he's ready. And that's not\nall--twenty years ago he would have found in that literature traces of\nconflict with authorities, with the creeds of the ages; he would have\nperceived from this conflict that there was something else; but now he\ncomes at once upon a literature in which the old creeds do not even\nfurnish matter for discussion, but it is stated baldly that there is\nnothing else--evolution, natural selection, struggle for existence--and\nthat's all. In my article I've...\"\n\n\"I tell you what,\" said Anna, who had for a long while been exchanging\nwary glances with Vronsky, and knew that he was not in the least\ninterested in the education of this artist, but was simply absorbed by\nthe idea of assisting him, and ordering a portrait of him; \"I tell you\nwhat,\" she said, resolutely interrupting Golenishtchev, who was still\ntalking away, \"let's go and see him!\"\n\nGolenishtchev recovered his self-possession and readily agreed. But as\nthe artist lived in a remote suburb, it was decided to take the\ncarriage.\n\nAn hour later Anna, with Golenishtchev by her side and Vronsky on the\nfront seat of the carriage, facing them, drove up to a new ugly house in\nthe remote suburb. On learning from the porter's wife, who came out to\nthem, that Mihailov saw visitors at his studio, but that at that moment\nhe was in his lodging only a couple of steps off, they sent her to him\nwith their cards, asking permission to see his picture.\n\n\n\nChapter 10\n\n\nThe artist Mihailov was, as always, at work when the cards of Count\nVronsky and Golenishtchev were brought to him. In the morning he had\nbeen working in his studio at his big picture. On getting home he flew\ninto a rage with his wife for not having managed to put off the\nlandlady, who had been asking for money.\n\n\"I've said it to you twenty times, don't enter into details. You're fool\nenough at all times, and when you start explaining things in Italian\nyou're a fool three times as foolish,\" he said after a long dispute.\n\n\"Don't let it run so long; it's not my fault. If I had the money...\"\n\n\"Leave me in peace, for God's sake!\" Mihailov shrieked, with tears in\nhis voice, and, stopping his ears, he went off into his working room,\nthe other side of a partition wall, and closed the door after him.\n\"Idiotic woman!\" he said to himself, sat down to the table, and, opening\na portfolio, he set to work at once with peculiar fervor at a sketch he\nhad begun.\n\nNever did he work with such fervor and success as when things went ill\nwith him, and especially when he quarreled with his wife. \"Oh! damn them\nall!\" he thought as he went on working. He was making a sketch for the\nfigure of a man in a violent rage. A sketch had been made before, but he\nwas dissatisfied with it. \"No, that one was better ... where is it?\" He\nwent back to his wife, and scowling, and not looking at her, asked his\neldest little girl, where was that piece of paper he had given them? The\npaper with the discarded sketch on it was found, but it was dirty, and\nspotted with candle-grease. Still, he took the sketch, laid it on his\ntable, and, moving a little away, screwing up his eyes, he fell to\ngazing at it. All at once he smiled and gesticulated gleefully.\n\n\"That's it! that's it!\" he said, and, at once picking up the pencil, he\nbegan rapidly drawing. The spot of tallow had given the man a new pose.\n\nHe had sketched this new pose, when all at once he recalled the face of\na shopkeeper of whom he had bought cigars, a vigorous face with a\nprominent chin, and he sketched this very face, this chin on to the\nfigure of the man. He laughed aloud with delight. The figure from a\nlifeless imagined thing had become living, and such that it could never\nbe changed. That figure lived, and was clearly and unmistakably defined.\nThe sketch might be corrected in accordance with the requirements of the\nfigure, the legs, indeed, could and must be put differently, and the\nposition of the left hand must be quite altered; the hair too might be\nthrown back. But in making these corrections he was not altering the\nfigure but simply getting rid of what concealed the figure. He was, as\nit were, stripping off the wrappings which hindered it from being\ndistinctly seen. Each new feature only brought out the whole figure in\nall its force and vigor, as it had suddenly come to him from the spot of\ntallow. He was carefully finishing the figure when the cards were\nbrought him.\n\n\"Coming, coming!\"\n\nHe went in to his wife.\n\n\"Come, Sasha, don't be cross!\" he said, smiling timidly and\naffectionately at her. \"You were to blame. I was to blame. I'll make it\nall right.\" And having made peace with his wife he put on an olive-green\novercoat with a velvet collar and a hat, and went towards his studio.\nThe successful figure he had already forgotten. Now he was delighted and\nexcited at the visit of these people of consequence, Russians, who had\ncome in their carriage.\n\nOf his picture, the one that stood now on his easel, he had at the\nbottom of his heart one conviction--that no one had ever painted a\npicture like it. He did not believe that his picture was better than all\nthe pictures of Raphael, but he knew that what he tried to convey in\nthat picture, no one ever had conveyed. This he knew positively, and had\nknown a long while, ever since he had begun to paint it. But other\npeople's criticisms, whatever they might be, had yet immense consequence\nin his eyes, and they agitated him to the depths of his soul. Any\nremark, the most insignificant, that showed that the critic saw even the\ntiniest part of what he saw in the picture, agitated him to the depths\nof his soul. He always attributed to his critics a more profound\ncomprehension than he had himself, and always expected from them\nsomething he did not himself see in the picture. And often in their\ncriticisms he fancied that he had found this.\n\nHe walked rapidly to the door of his studio, and in spite of his\nexcitement he was struck by the soft light on Anna's figure as she stood\nin the shade of the entrance listening to Golenishtchev, who was eagerly\ntelling her something, while she evidently wanted to look round at the\nartist. He was himself unconscious how, as he approached them, he seized\non this impression and absorbed it, as he had the chin of the shopkeeper\nwho had sold him the cigars, and put it away somewhere to be brought out\nwhen he wanted it. The visitors, not agreeably impressed beforehand by\nGolenishtchev's account of the artist, were still less so by his\npersonal appearance. Thick-set and of middle height, with nimble\nmovements, with his brown hat, olive-green coat and narrow\ntrousers--though wide trousers had been a long while in fashion,--most\nof all, with the ordinariness of his broad face, and the combined\nexpression of timidity and anxiety to keep up his dignity, Mihailov made\nan unpleasant impression.\n\n\"Please step in,\" he said, trying to look indifferent, and going into\nthe passage he took a key out of his pocket and opened the door.\n\n\n\nChapter 11\n\n\nOn entering the studio, Mihailov once more scanned his visitors and\nnoted down in his imagination Vronsky's expression too, and especially\nhis jaws. Although his artistic sense was unceasingly at work collecting\nmaterials, although he felt a continually increasing excitement as the\nmoment of criticizing his work drew nearer, he rapidly and subtly\nformed, from imperceptible signs, a mental image of these three persons.\n\nThat fellow (Golenishtchev) was a Russian living here. Mihailov did not\nremember his surname nor where he had met him, nor what he had said to\nhim. He only remembered his face as he remembered all the faces he had\never seen; but he remembered, too, that it was one of the faces laid by\nin his memory in the immense class of the falsely consequential and poor\nin expression. The abundant hair and very open forehead gave an\nappearance of consequence to the face, which had only one expression--a\npetty, childish, peevish expression, concentrated just above the bridge\nof the narrow nose. Vronsky and Madame Karenina must be, Mihailov\nsupposed, distinguished and wealthy Russians, knowing nothing about art,\nlike all those wealthy Russians, but posing as amateurs and\nconnoisseurs. \"Most likely they've already looked at all the antiques,\nand now they're making the round of the studios of the new people, the\nGerman humbug, and the cracked Pre-Raphaelite English fellow, and have\nonly come to me to make the point of view complete,\" he thought. He was\nwell acquainted with the way dilettanti have (the cleverer they were the\nworse he found them) of looking at the works of contemporary artists\nwith the sole object of being in a position to say that art is a thing\nof the past, and that the more one sees of the new men the more one sees\nhow inimitable the works of the great old masters have remained. He\nexpected all this; he saw it all in their faces, he saw it in the\ncareless indifference with which they talked among themselves, stared at\nthe lay figures and busts, and walked about in leisurely fashion,\nwaiting for him to uncover his picture. But in spite of this, while he\nwas turning over his studies, pulling up the blinds and taking off the\nsheet, he was in intense excitement, especially as, in spite of his\nconviction that all distinguished and wealthy Russians were certain to\nbe beasts and fools, he liked Vronsky, and still more Anna.\n\n\"Here, if you please,\" he said, moving on one side with his nimble gait\nand pointing to his picture, \"it's the exhortation to Pilate. Matthew,\nchapter xxvii,\" he said, feeling his lips were beginning to tremble with\nemotion. He moved away and stood behind them.\n\nFor the few seconds during which the visitors were gazing at the picture\nin silence Mihailov too gazed at it with the indifferent eye of an\noutsider. For those few seconds he was sure in anticipation that a\nhigher, juster criticism would be uttered by them, by those very\nvisitors whom he had been so despising a moment before. He forgot all he\nhad thought about his picture before during the three years he had been\npainting it; he forgot all its qualities which had been absolutely\ncertain to him--he saw the picture with their indifferent, new, outside\neyes, and saw nothing good in it. He saw in the foreground Pilate's\nirritated face and the serene face of Christ, and in the background the\nfigures of Pilate's retinue and the face of John watching what was\nhappening. Every face that, with such agony, such blunders and\ncorrections had grown up within him with its special character, every\nface that had given him such torments and such raptures, and all these\nfaces so many times transposed for the sake of the harmony of the whole,\nall the shades of color and tones that he had attained with such\nlabor--all of this together seemed to him now, looking at it with their\neyes, the merest vulgarity, something that had been done a thousand\ntimes over. The face dearest to him, the face of Christ, the center of\nthe picture, which had given him such ecstasy as it unfolded itself to\nhim, was utterly lost to him when he glanced at the picture with their\neyes. He saw a well-painted (no, not even that--he distinctly saw now a\nmass of defects) repetition of those endless Christs of Titian, Raphael,\nRubens, and the same soldiers and Pilate. It was all common, poor, and\nstale, and positively badly painted--weak and unequal. They would be\njustified in repeating hypocritically civil speeches in the presence of\nthe painter, and pitying him and laughing at him when they were alone\nagain.\n\nThe silence (though it lasted no more than a minute) became too\nintolerable to him. To break it, and to show he was not agitated, he\nmade an effort and addressed Golenishtchev.\n\n\"I think I've had the pleasure of meeting you,\" he said, looking\nuneasily first at Anna, then at Vronsky, in fear of losing any shade of\ntheir expression.\n\n\"To be sure! We met at Rossi's, do you remember, at that _soiree_ when\nthat Italian lady recited--the new Rachel?\" Golenishtchev answered\neasily, removing his eyes without the slightest regret from the picture\nand turning to the artist.\n\nNoticing, however, that Mihailov was expecting a criticism of the\npicture, he said:\n\n\"Your picture has got on a great deal since I saw it last time; and what\nstrikes me particularly now, as it did then, is the figure of Pilate.\nOne so knows the man: a good-natured, capital fellow, but an official\nthrough and through, who does not know what it is he's doing. But I\nfancy...\"\n\nAll Mihailov's mobile face beamed at once; his eyes sparkled. He tried\nto say something, but he could not speak for excitement, and pretended\nto be coughing. Low as was his opinion of Golenishtchev's capacity for\nunderstanding art, trifling as was the true remark upon the fidelity of\nthe expression of Pilate as an official, and offensive as might have\nseemed the utterance of so unimportant an observation while nothing was\nsaid of more serious points, Mihailov was in an ecstasy of delight at\nthis observation. He had himself thought about Pilate's figure just what\nGolenishtchev said. The fact that this reflection was but one of\nmillions of reflections, which as Mihailov knew for certain would be\ntrue, did not diminish for him the significance of Golenishtchev's\nremark. His heart warmed to Golenishtchev for this remark, and from a\nstate of depression he suddenly passed to ecstasy. At once the whole of\nhis picture lived before him in all the indescribable complexity of\neverything living. Mihailov again tried to say that that was how he\nunderstood Pilate, but his lips quivered intractably, and he could not\npronounce the words. Vronsky and Anna too said something in that subdued\nvoice in which, partly to avoid hurting the artist's feelings and partly\nto avoid saying out loud something silly--so easily said when talking of\nart--people usually speak at exhibitions of pictures. Mihailov fancied\nthat the picture had made an impression on them too. He went up to them.\n\n\"How marvelous Christ's expression is!\" said Anna. Of all she saw she\nliked that expression most of all, and she felt that it was the center\nof the picture, and so praise of it would be pleasant to the artist.\n\"One can see that He is pitying Pilate.\"\n\nThis again was one of the million true reflections that could be found\nin his picture and in the figure of Christ. She said that He was pitying\nPilate. In Christ's expression there ought to be indeed an expression of\npity, since there is an expression of love, of heavenly peace, of\nreadiness for death, and a sense of the vanity of words. Of course there\nis the expression of an official in Pilate and of pity in Christ, seeing\nthat one is the incarnation of the fleshly and the other of the\nspiritual life. All this and much more flashed into Mihailov's thoughts.\n\n\"Yes, and how that figure is done--what atmosphere! One can walk round\nit,\" said Golenishtchev, unmistakably betraying by this remark that he\ndid not approve of the meaning and idea of the figure.\n\n\"Yes, there's a wonderful mastery!\" said Vronsky. \"How those figures in\nthe background stand out! There you have technique,\" he said, addressing\nGolenishtchev, alluding to a conversation between them about Vronsky's\ndespair of attaining this technique.\n\n\"Yes, yes, marvelous!\" Golenishtchev and Anna assented. In spite of the\nexcited condition in which he was, the sentence about technique had sent\na pang to Mihailov's heart, and looking angrily at Vronsky he suddenly\nscowled. He had often heard this word technique, and was utterly unable\nto understand what was understood by it. He knew that by this term was\nunderstood a mechanical facility for painting or drawing, entirely apart\nfrom its subject. He had noticed often that even in actual praise\ntechnique was opposed to essential quality, as though one could paint\nwell something that was bad. He knew that a great deal of attention and\ncare was necessary in taking off the coverings, to avoid injuring the\ncreation itself, and to take off all the coverings; but there was no art\nof painting--no technique of any sort--about it. If to a little child or\nto his cook were revealed what he saw, it or she would have been able to\npeel the wrappings off what was seen. And the most experienced and\nadroit painter could not by mere mechanical facility paint anything if\nthe lines of the subject were not revealed to him first. Besides, he saw\nthat if it came to talking about technique, it was impossible to praise\nhim for it. In all he had painted and repainted he saw faults that hurt\nhis eyes, coming from want of care in taking off the wrappings--faults\nhe could not correct now without spoiling the whole. And in almost all\nthe figures and faces he saw, too, remnants of the wrappings not\nperfectly removed that spoiled the picture.\n\n\"One thing might be said, if you will allow me to make the remark...\"\nobserved Golenishtchev.\n\n\"Oh, I shall be delighted, I beg you,\" said Mihailov with a forced\nsmile.\n\n\"That is, that you make Him the man-god, and not the God-man. But I know\nthat was what you meant to do.\"\n\n\"I cannot paint a Christ that is not in my heart,\" said Mihailov\ngloomily.\n\n\"Yes; but in that case, if you will allow me to say what I think....\nYour picture is so fine that my observation cannot detract from it, and,\nbesides, it is only my personal opinion. With you it is different. Your\nvery motive is different. But let us take Ivanov. I imagine that if\nChrist is brought down to the level of an historical character, it would\nhave been better for Ivanov to select some other historical subject,\nfresh, untouched.\"\n\n\"But if this is the greatest subject presented to art?\"\n\n\"If one looked one would find others. But the point is that art cannot\nsuffer doubt and discussion. And before the picture of Ivanov the\nquestion arises for the believer and the unbeliever alike, 'Is it God,\nor is it not God?' and the unity of the impression is destroyed.\"\n\n\"Why so? I think that for educated people,\" said Mihailov, \"the question\ncannot exist.\"\n\nGolenishtchev did not agree with this, and confounded Mihailov by his\nsupport of his first idea of the unity of the impression being essential\nto art.\n\nMihailov was greatly perturbed, but he could say nothing in defense of\nhis own idea.\n\n\n\nChapter 12\n\n\nAnna and Vronsky had long been exchanging glances, regretting their\nfriend's flow of cleverness. At last Vronsky, without waiting for the\nartist, walked away to another small picture.\n\n\"Oh, how exquisite! What a lovely thing! A gem! How exquisite!\" they\ncried with one voice.\n\n\"What is it they're so pleased with?\" thought Mihailov. He had\npositively forgotten that picture he had painted three years ago. He had\nforgotten all the agonies and the ecstasies he had lived through with\nthat picture when for several months it had been the one thought\nhaunting him day and night. He had forgotten, as he always forgot, the\npictures he had finished. He did not even like to look at it, and had\nonly brought it out because he was expecting an Englishman who wanted to\nbuy it.\n\n\"Oh, that's only an old study,\" he said.\n\n\"How fine!\" said Golenishtchev, he too, with unmistakable sincerity,\nfalling under the spell of the picture.\n\nTwo boys were angling in the shade of a willow-tree. The elder had just\ndropped in the hook, and was carefully pulling the float from behind a\nbush, entirely absorbed in what he was doing. The other, a little\nyounger, was lying in the grass leaning on his elbows, with his tangled,\nflaxen head in his hands, staring at the water with his dreamy blue\neyes. What was he thinking of?\n\nThe enthusiasm over this picture stirred some of the old feeling for it\nin Mihailov, but he feared and disliked this waste of feeling for things\npast, and so, even though this praise was grateful to him, he tried to\ndraw his visitors away to a third picture.\n\nBut Vronsky asked whether the picture was for sale. To Mihailov at that\nmoment, excited by visitors, it was extremely distasteful to speak of\nmoney matters.\n\n\"It is put up there to be sold,\" he answered, scowling gloomily.\n\nWhen the visitors had gone, Mihailov sat down opposite the picture of\nPilate and Christ, and in his mind went over what had been said, and\nwhat, though not said, had been implied by those visitors. And, strange\nto say, what had had such weight with him, while they were there and\nwhile he mentally put himself at their point of view, suddenly lost all\nimportance for him. He began to look at his picture with all his own\nfull artist vision, and was soon in that mood of conviction of the\nperfectibility, and so of the significance, of his picture--a conviction\nessential to the most intense fervor, excluding all other interests--in\nwhich alone he could work.\n\nChrist's foreshortened leg was not right, though. He took his palette\nand began to work. As he corrected the leg he looked continually at the\nfigure of John in the background, which his visitors had not even\nnoticed, but which he knew was beyond perfection. When he had finished\nthe leg he wanted to touch that figure, but he felt too much excited for\nit. He was equally unable to work when he was cold and when he was too\nmuch affected and saw everything too much. There was only one stage in\nthe transition from coldness to inspiration, at which work was possible.\nToday he was too much agitated. He would have covered the picture, but\nhe stopped, holding the cloth in his hand, and, smiling blissfully,\ngazed a long while at the figure of John. At last, as it were\nregretfully tearing himself away, he dropped the cloth, and, exhausted\nbut happy, went home.\n\nVronsky, Anna, and Golenishtchev, on their way home, were particularly\nlively and cheerful. They talked of Mihailov and his pictures. The word\n_talent_, by which they meant an inborn, almost physical, aptitude apart\nfrom brain and heart, and in which they tried to find an expression for\nall the artist had gained from life, recurred particularly often in\ntheir talk, as though it were necessary for them to sum up what they had\nno conception of, though they wanted to talk of it. They said that there\nwas no denying his talent, but that his talent could not develop for\nwant of education--the common defect of our Russian artists. But the\npicture of the boys had imprinted itself on their memories, and they\nwere continually coming back to it. \"What an exquisite thing! How he has\nsucceeded in it, and how simply! He doesn't even comprehend how good it\nis. Yes, I mustn't let it slip; I must buy it,\" said Vronsky.\n\n\n\nChapter 13\n\n\nMihailov sold Vronsky his picture, and agreed to paint a portrait of\nAnna. On the day fixed he came and began the work.\n\nFrom the fifth sitting the portrait impressed everyone, especially\nVronsky, not only by its resemblance, but by its characteristic beauty.\nIt was strange how Mihailov could have discovered just her\ncharacteristic beauty. \"One needs to know and love her as I have loved\nher to discover the very sweetest expression of her soul,\" Vronsky\nthought, though it was only from this portrait that he had himself\nlearned this sweetest expression of her soul. But the expression was so\ntrue that he, and others too, fancied they had long known it.\n\n\"I have been struggling on for ever so long without doing anything,\" he\nsaid of his own portrait of her, \"and he just looked and painted it.\nThat's where technique comes in.\"\n\n\"That will come,\" was the consoling reassurance given him by\nGolenishtchev, in whose view Vronsky had both talent, and what was most\nimportant, culture, giving him a wider outlook on art. Golenishtchev's\nfaith in Vronsky's talent was propped up by his own need of Vronsky's\nsympathy and approval for his own articles and ideas, and he felt that\nthe praise and support must be mutual.\n\nIn another man's house, and especially in Vronsky's palazzo, Mihailov\nwas quite a different man from what he was in his studio. He behaved\nwith hostile courtesy, as though he were afraid of coming closer to\npeople he did not respect. He called Vronsky \"your excellency,\" and\nnotwithstanding Anna's and Vronsky's invitations, he would never stay to\ndinner, nor come except for the sittings. Anna was even more friendly to\nhim than to other people, and was very grateful for her portrait.\nVronsky was more than cordial with him, and was obviously interested to\nknow the artist's opinion of his picture. Golenishtchev never let slip\nan opportunity of instilling sound ideas about art into Mihailov. But\nMihailov remained equally chilly to all of them. Anna was aware from his\neyes that he liked looking at her, but he avoided conversation with her.\nVronsky's talk about his painting he met with stubborn silence, and he\nwas as stubbornly silent when he was shown Vronsky's picture. He was\nunmistakably bored by Golenishtchev's conversation, and he did not\nattempt to oppose him.\n\nAltogether Mihailov, with his reserved and disagreeable, as it were,\nhostile attitude, was quite disliked by them as they got to know him\nbetter; and they were glad when the sittings were over, and they were\nleft with a magnificent portrait in their possession, and he gave up\ncoming. Golenishtchev was the first to give expression to an idea that\nhad occurred to all of them, which was that Mihailov was simply jealous\nof Vronsky.\n\n\"Not envious, let us say, since he has _talent_; but it annoys him that\na wealthy man of the highest society, and a count, too (you know they\nall detest a title), can, without any particular trouble, do as well, if\nnot better, than he who has devoted all his life to it. And more than\nall, it's a question of culture, which he is without.\"\n\nVronsky defended Mihailov, but at the bottom of his heart he believed\nit, because in his view a man of a different, lower world would be sure\nto be envious.\n\nAnna's portrait--the same subject painted from nature both by him and by\nMihailov--ought to have shown Vronsky the difference between him and\nMihailov; but he did not see it. Only after Mihailov's portrait was\npainted he left off painting his portrait of Anna, deciding that it was\nnow not needed. His picture of mediaeval life he went on with. And he\nhimself, and Golenishtchev, and still more Anna, thought it very good,\nbecause it was far more like the celebrated pictures they knew than\nMihailov's picture.\n\nMihailov meanwhile, although Anna's portrait greatly fascinated him, was\neven more glad than they were when the sittings were over, and he had no\nlonger to listen to Golenishtchev's disquisitions upon art, and could\nforget about Vronsky's painting. He knew that Vronsky could not be\nprevented from amusing himself with painting; he knew that he and all\ndilettanti had a perfect right to paint what they liked, but it was\ndistasteful to him. A man could not be prevented from making himself a\nbig wax doll, and kissing it. But if the man were to come with the doll\nand sit before a man in love, and begin caressing his doll as the lover\ncaressed the woman he loved, it would be distasteful to the lover. Just\nsuch a distasteful sensation was what Mihailov felt at the sight of\nVronsky's painting: he felt it both ludicrous and irritating, both\npitiable and offensive.\n\nVronsky's interest in painting and the Middle Ages did not last long. He\nhad enough taste for painting to be unable to finish his picture. The\npicture came to a standstill. He was vaguely aware that its defects,\ninconspicuous at first, would be glaring if he were to go on with it.\nThe same experience befell him as Golenishtchev, who felt that he had\nnothing to say, and continually deceived himself with the theory that\nhis idea was not yet mature, that he was working it out and collecting\nmaterials. This exasperated and tortured Golenishtchev, but Vronsky was\nincapable of deceiving and torturing himself, and even more incapable of\nexasperation. With his characteristic decision, without explanation or\napology, he simply ceased working at painting.\n\nBut without this occupation, the life of Vronsky and of Anna, who\nwondered at his loss of interest in it, struck them as intolerably\ntedious in an Italian town. The palazzo suddenly seemed so obtrusively\nold and dirty, the spots on the curtains, the cracks in the floors, the\nbroken plaster on the cornices became so disagreeably obvious, and the\neverlasting sameness of Golenishtchev, and the Italian professor and the\nGerman traveler became so wearisome, that they had to make some change.\nThey resolved to go to Russia, to the country. In Petersburg Vronsky\nintended to arrange a partition of the land with his brother, while Anna\nmeant to see her son. The summer they intended to spend on Vronsky's\ngreat family estate.\n\n\n\nChapter 14\n\n\nLevin had been married three months. He was happy, but not at all in the\nway he had expected to be. At every step he found his former dreams\ndisappointed, and new, unexpected surprises of happiness. He was happy;\nbut on entering upon family life he saw at every step that it was\nutterly different from what he had imagined. At every step he\nexperienced what a man would experience who, after admiring the smooth,\nhappy course of a little boat on a lake, should get himself into that\nlittle boat. He saw that it was not all sitting still, floating\nsmoothly; that one had to think too, not for an instant to forget where\none was floating; and that there was water under one, and that one must\nrow; and that his unaccustomed hands would be sore; and that it was only\nto look at it that was easy; but that doing it, though very delightful,\nwas very difficult.\n\nAs a bachelor, when he had watched other people's married life, seen the\npetty cares, the squabbles, the jealousy, he had only smiled\ncontemptuously in his heart. In his future married life there could be,\nhe was convinced, nothing of that sort; even the external forms, indeed,\nhe fancied, must be utterly unlike the life of others in everything. And\nall of a sudden, instead of his life with his wife being made on an\nindividual pattern, it was, on the contrary, entirely made up of the\npettiest details, which he had so despised before, but which now, by no\nwill of his own, had gained an extraordinary importance that it was\nuseless to contend against. And Levin saw that the organization of all\nthese details was by no means so easy as he had fancied before. Although\nLevin believed himself to have the most exact conceptions of domestic\nlife, unconsciously, like all men, he pictured domestic life as the\nhappiest enjoyment of love, with nothing to hinder and no petty cares to\ndistract. He ought, as he conceived the position, to do his work, and to\nfind repose from it in the happiness of love. She ought to be beloved,\nand nothing more. But, like all men, he forgot that she too would want\nwork. And he was surprised that she, his poetic, exquisite Kitty, could,\nnot merely in the first weeks, but even in the first days of their\nmarried life, think, remember, and busy herself about tablecloths, and\nfurniture, about mattresses for visitors, about a tray, about the cook,\nand the dinner, and so on. While they were still engaged, he had been\nstruck by the definiteness with which she had declined the tour abroad\nand decided to go into the country, as though she knew of something she\nwanted, and could still think of something outside her love. This had\njarred upon him then, and now her trivial cares and anxieties jarred\nupon him several times. But he saw that this was essential for her. And,\nloving her as he did, though he did not understand the reason of them,\nand jeered at these domestic pursuits, he could not help admiring them.\nHe jeered at the way in which she arranged the furniture they had\nbrought from Moscow; rearranged their room; hung up curtains; prepared\nrooms for visitors; a room for Dolly; saw after an abode for her new\nmaid; ordered dinner of the old cook; came into collision with Agafea\nMihalovna, taking from her the charge of the stores. He saw how the old\ncook smiled, admiring her, and listening to her inexperienced,\nimpossible orders, how mournfully and tenderly Agafea Mihalovna shook\nher head over the young mistress's new arrangements. He saw that Kitty\nwas extraordinarily sweet when, laughing and crying, she came to tell\nhim that her maid, Masha, was used to looking upon her as her young\nlady, and so no one obeyed her. It seemed to him sweet, but strange, and\nhe thought it would have been better without this.\n\nHe did not know how great a sense of change she was experiencing; she,\nwho at home had sometimes wanted some favorite dish, or sweets, without\nthe possibility of getting either, now could order what she liked, buy\npounds of sweets, spend as much money as she liked, and order any\npuddings she pleased.\n\nShe was dreaming with delight now of Dolly's coming to them with her\nchildren, especially because she would order for the children their\nfavorite puddings and Dolly would appreciate all her new housekeeping.\nShe did not know herself why and wherefore, but the arranging of her\nhouse had an irresistible attraction for her. Instinctively feeling the\napproach of spring, and knowing that there would be days of rough\nweather too, she built her nest as best she could, and was in haste at\nthe same time to build it and to learn how to do it.\n\nThis care for domestic details in Kitty, so opposed to Levin's ideal of\nexalted happiness, was at first one of the disappointments; and this\nsweet care of her household, the aim of which he did not understand, but\ncould not help loving, was one of the new happy surprises.\n\nAnother disappointment and happy surprise came in their quarrels. Levin\ncould never have conceived that between him and his wife any relations\ncould arise other than tender, respectful and loving, and all at once in\nthe very early days they quarreled, so that she said he did not care for\nher, that he cared for no one but himself, burst into tears, and wrung\nher arms.\n\nThis first quarrel arose from Levin's having gone out to a new farmhouse\nand having been away half an hour too long, because he had tried to get\nhome by a short cut and had lost his way. He drove home thinking of\nnothing but her, of her love, of his own happiness, and the nearer he\ndrew to home, the warmer was his tenderness for her. He ran into the\nroom with the same feeling, with an even stronger feeling than he had\nhad when he reached the Shtcherbatskys' house to make his offer. And\nsuddenly he was met by a lowering expression he had never seen in her.\nHe would have kissed her; she pushed him away.\n\n\"What is it?\"\n\n\"You've been enjoying yourself,\" she began, trying to be calm and\nspiteful. But as soon as she opened her mouth, a stream of reproach, of\nsenseless jealousy, of all that had been torturing her during that half\nhour which she had spent sitting motionless at the window, burst from\nher. It was only then, for the first time, that he clearly understood\nwhat he had not understood when he led her out of the church after the\nwedding. He felt now that he was not simply close to her, but that he\ndid not know where he ended and she began. He felt this from the\nagonizing sensation of division that he experienced at that instant. He\nwas offended for the first instant, but the very same second he felt\nthat he could not be offended by her, that she was himself. He felt for\nthe first moment as a man feels when, having suddenly received a violent\nblow from behind, he turns round, angry and eager to avenge himself, to\nlook for his antagonist, and finds that it is he himself who has\naccidentally struck himself, that there is no one to be angry with, and\nthat he must put up with and try to soothe the pain.\n\nNever afterwards did he feel it with such intensity, but this first time\nhe could not for a long while get over it. His natural feeling urged him\nto defend himself, to prove to her she was wrong; but to prove her wrong\nwould mean irritating her still more and making the rupture greater that\nwas the cause of all his suffering. One habitual feeling impelled him to\nget rid of the blame and to pass it on to her. Another feeling, even\nstronger, impelled him as quickly as possible to smooth over the rupture\nwithout letting it grow greater. To remain under such undeserved\nreproach was wretched, but to make her suffer by justifying himself was\nworse still. Like a man half-awake in an agony of pain, he wanted to\ntear out, to fling away the aching place, and coming to his senses, he\nfelt that the aching place was himself. He could do nothing but try to\nhelp the aching place to bear it, and this he tried to do.\n\nThey made peace. She, recognizing that she was wrong, though she did not\nsay so, became tenderer to him, and they experienced new, redoubled\nhappiness in their love. But that did not prevent such quarrels from\nhappening again, and exceedingly often too, on the most unexpected and\ntrivial grounds. These quarrels frequently arose from the fact that they\ndid not yet know what was of importance to each other and that all this\nearly period they were both often in a bad temper. When one was in a\ngood temper, and the other in a bad temper, the peace was not broken;\nbut when both happened to be in an ill-humor, quarrels sprang up from\nsuch incomprehensibly trifling causes, that they could never remember\nafterwards what they had quarreled about. It is true that when they were\nboth in a good temper their enjoyment of life was redoubled. But still\nthis first period of their married life was a difficult time for them.\n\nDuring all this early time they had a peculiarly vivid sense of tension,\nas it were, a tugging in opposite directions of the chain by which they\nwere bound. Altogether their honeymoon--that is to say, the month after\ntheir wedding--from which from tradition Levin expected so much, was not\nmerely not a time of sweetness, but remained in the memories of both as\nthe bitterest and most humiliating period in their lives. They both\nalike tried in later life to blot out from their memories all the\nmonstrous, shameful incidents of that morbid period, when both were\nrarely in a normal frame of mind, both were rarely quite themselves.\n\nIt was only in the third month of their married life, after their return\nfrom Moscow, where they had been staying for a month, that their life\nbegan to go more smoothly.\n\n\n\nChapter 15\n\n\nThey had just come back from Moscow, and were glad to be alone. He was\nsitting at the writing table in his study, writing. She, wearing the\ndark lilac dress she had worn during the first days of their married\nlife, and put on again today, a dress particularly remembered and loved\nby him, was sitting on the sofa, the same old-fashioned leather sofa\nwhich had always stood in the study in Levin's father's and\ngrandfather's days. She was sewing at _broderie anglaise_. He thought\nand wrote, never losing the happy consciousness of her presence. His\nwork, both on the land and on the book, in which the principles of the\nnew land system were to be laid down, had not been abandoned; but just\nas formerly these pursuits and ideas had seemed to him petty and trivial\nin comparison with the darkness that overspread all life, now they\nseemed as unimportant and petty in comparison with the life that lay\nbefore him suffused with the brilliant light of happiness. He went on\nwith his work, but he felt now that the center of gravity of his\nattention had passed to something else, and that consequently he looked\nat his work quite differently and more clearly. Formerly this work had\nbeen for him an escape from life. Formerly he had felt that without this\nwork his life would be too gloomy. Now these pursuits were necessary for\nhim that life might not be too uniformly bright. Taking up his\nmanuscript, reading through what he had written, he found with pleasure\nthat the work was worth his working at. Many of his old ideas seemed to\nhim superfluous and extreme, but many blanks became distinct to him when\nhe reviewed the whole thing in his memory. He was writing now a new\nchapter on the causes of the present disastrous condition of agriculture\nin Russia. He maintained that the poverty of Russia arises not merely\nfrom the anomalous distribution of landed property and misdirected\nreforms, but that what had contributed of late years to this result was\nthe civilization from without abnormally grafted upon Russia, especially\nfacilities of communication, as railways, leading to centralization in\ntowns, the development of luxury, and the consequent development of\nmanufactures, credit and its accompaniment of speculation--all to the\ndetriment of agriculture. It seemed to him that in a normal development\nof wealth in a state all these phenomena would arise only when a\nconsiderable amount of labor had been put into agriculture, when it had\ncome under regular, or at least definite, conditions; that the wealth of\na country ought to increase proportionally, and especially in such a way\nthat other sources of wealth should not outstrip agriculture; that in\nharmony with a certain stage of agriculture there should be means of\ncommunication corresponding to it, and that in our unsettled condition\nof the land, railways, called into being by political and not by\neconomic needs, were premature, and instead of promoting agriculture, as\nwas expected of them, they were competing with agriculture and promoting\nthe development of manufactures and credit, and so arresting its\nprogress; and that just as the one-sided and premature development of\none organ in an animal would hinder its general development, so in the\ngeneral development of wealth in Russia, credit, facilities of\ncommunication, manufacturing activity, indubitably necessary in Europe,\nwhere they had arisen in their proper time, had with us only done harm,\nby throwing into the background the chief question calling for\nsettlement--the question of the organization of agriculture.\n\nWhile he was writing his ideas she was thinking how unnaturally cordial\nher husband had been to young Prince Tcharsky, who had, with great want\nof tact, flirted with her the day before they left Moscow. \"He's\njealous,\" she thought. \"Goodness! how sweet and silly he is! He's\njealous of me! If he knew that I think no more of them than of Piotr the\ncook,\" she thought, looking at his head and red neck with a feeling of\npossession strange to herself. \"Though it's a pity to take him from his\nwork (but he has plenty of time!), I must look at his face; will he feel\nI'm looking at him? I wish he'd turn round ... I'll _will_ him to!\" and\nshe opened her eyes wide, as though to intensify the influence of her\ngaze.\n\n\"Yes, they draw away all the sap and give a false appearance of\nprosperity,\" he muttered, stopping to write, and, feeling that she was\nlooking at him and smiling, he looked round.\n\n\"Well?\" he queried, smiling, and getting up.\n\n\"He looked round,\" she thought.\n\n\"It's nothing; I wanted you to look round,\" she said, watching him, and\ntrying to guess whether he was vexed at being interrupted or not.\n\n\"How happy we are alone together!--I am, that is,\" he said, going up to\nher with a radiant smile of happiness.\n\n\"I'm just as happy. I'll never go anywhere, especially not to Moscow.\"\n\n\"And what were you thinking about?\"\n\n\"I? I was thinking.... No, no, go along, go on writing; don't break\noff,\" she said, pursing up her lips, \"and I must cut out these little\nholes now, do you see?\"\n\nShe took up her scissors and began cutting them out.\n\n\"No; tell me, what was it?\" he said, sitting down beside her and\nwatching the tiny scissors moving round.\n\n\"Oh! what was I thinking about? I was thinking about Moscow, about the\nback of your head.\"\n\n\"Why should I, of all people, have such happiness! It's unnatural, too\ngood,\" he said, kissing her hand.\n\n\"I feel quite the opposite; the better things are, the more natural it\nseems to me.\"\n\n\"And you've got a little curl loose,\" he said, carefully turning her\nhead round.\n\n\"A little curl, oh yes. No, no, we are busy at our work!\"\n\nWork did not progress further, and they darted apart from one another\nlike culprits when Kouzma came in to announce that tea was ready.\n\n\"Have they come from the town?\" Levin asked Kouzma.\n\n\"They've just come; they're unpacking the things.\"\n\n\"Come quickly,\" she said to him as she went out of the study, \"or else I\nshall read your letters without you.\"\n\nLeft alone, after putting his manuscripts together in the new portfolio\nbought by her, he washed his hands at the new washstand with the elegant\nfittings, that had all made their appearance with her. Levin smiled at\nhis own thoughts, and shook his head disapprovingly at those thoughts; a\nfeeling akin to remorse fretted him. There was something shameful,\neffeminate, Capuan, as he called it to himself, in his present mode of\nlife. \"It's not right to go on like this,\" he thought. \"It'll soon be\nthree months, and I'm doing next to nothing. Today, almost for the first\ntime, I set to work seriously, and what happened? I did nothing but\nbegin and throw it aside. Even my ordinary pursuits I have almost given\nup. On the land I scarcely walk or drive about at all to look after\nthings. Either I am loath to leave her, or I see she's dull alone. And I\nused to think that, before marriage, life was nothing much, somehow\ndidn't count, but that after marriage, life began in earnest. And here\nalmost three months have passed, and I have spent my time so idly and\nunprofitably. No, this won't do; I must begin. Of course, it's not her\nfault. She's not to blame in any way. I ought myself to be firmer, to\nmaintain my masculine independence of action; or else I shall get into\nsuch ways, and she'll get used to them too.... Of course she's not to\nblame,\" he told himself.\n\nBut it is hard for anyone who is dissatisfied not to blame someone else,\nand especially the person nearest of all to him, for the ground of his\ndissatisfaction. And it vaguely came into Levin's mind that she herself\nwas not to blame (she could not be to blame for anything), but what was\nto blame was her education, too superficial and frivolous. (\"That fool\nTcharsky: she wanted, I know, to stop him, but didn't know how to.\")\n\"Yes, apart from her interest in the house (that she has), apart from\ndress and _broderie anglaise_, she has no serious interests. No interest\nin her work, in the estate, in the peasants, nor in music, though she's\nrather good at it, nor in reading. She does nothing, and is perfectly\nsatisfied.\" Levin, in his heart, censured this, and did not as yet\nunderstand that she was preparing for that period of activity which was\nto come for her when she would at once be the wife of her husband and\nmistress of the house, and would bear, and nurse, and bring up children.\nHe knew not that she was instinctively aware of this, and preparing\nherself for this time of terrible toil, did not reproach herself for the\nmoments of carelessness and happiness in her love that she enjoyed now\nwhile gaily building her nest for the future.\n\n\n\nChapter 16\n\n\nWhen Levin went upstairs, his wife was sitting near the new silver\nsamovar behind the new tea service, and, having settled old Agafea\nMihalovna at a little table with a full cup of tea, was reading a letter\nfrom Dolly, with whom they were in continual and frequent\ncorrespondence.\n\n\"You see, your good lady's settled me here, told me to sit a bit with\nher,\" said Agafea Mihalovna, smiling affectionately at Kitty.\n\nIn these words of Agafea Mihalovna, Levin read the final act of the\ndrama which had been enacted of late between her and Kitty. He saw that,\nin spite of Agafea Mihalovna's feelings being hurt by a new mistress\ntaking the reins of government out of her hands, Kitty had yet conquered\nher and made her love her.\n\n\"Here, I opened your letter too,\" said Kitty, handing him an illiterate\nletter. \"It's from that woman, I think, your brother's...\" she said. \"I\ndid not read it through. This is from my people and from Dolly. Fancy!\nDolly took Tanya and Grisha to a children's ball at the Sarmatskys':\nTanya was a French marquise.\"\n\nBut Levin did not hear her. Flushing, he took the letter from Marya\nNikolaevna, his brother's former mistress, and began to read it. This\nwas the second letter he had received from Marya Nikolaevna. In the\nfirst letter, Marya Nikolaevna wrote that his brother had sent her away\nfor no fault of hers, and, with touching simplicity, added that though\nshe was in want again, she asked for nothing, and wished for nothing,\nbut was only tormented by the thought that Nikolay Dmitrievitch would\ncome to grief without her, owing to the weak state of his health, and\nbegged his brother to look after him. Now she wrote quite differently.\nShe had found Nikolay Dmitrievitch, had again made it up with him in\nMoscow, and had moved with him to a provincial town, where he had\nreceived a post in the government service. But that he had quarreled\nwith the head official, and was on his way back to Moscow, only he had\nbeen taken so ill on the road that it was doubtful if he would ever\nleave his bed again, she wrote. \"It's always of you he has talked, and,\nbesides, he has no more money left.\"\n\n\"Read this; Dolly writes about you,\" Kitty was beginning, with a smile;\nbut she stopped suddenly, noticing the changed expression on her\nhusband's face.\n\n\"What is it? What's the matter?\"\n\n\"She writes to me that Nikolay, my brother, is at death's door. I shall\ngo to him.\"\n\nKitty's face changed at once. Thoughts of Tanya as a marquise, of Dolly,\nall had vanished.\n\n\"When are you going?\" she said.\n\n\"Tomorrow.\"\n\n\"And I will go with you, can I?\" she said.\n\n\"Kitty! What are you thinking of?\" he said reproachfully.\n\n\"How do you mean?\" offended that he should seem to take her suggestion\nunwillingly and with vexation. \"Why shouldn't I go? I shan't be in your\nway. I...\"\n\n\"I'm going because my brother is dying,\" said Levin. \"Why should you...\"\n\n\"Why? For the same reason as you.\"\n\n\"And, at a moment of such gravity for me, she only thinks of her being\ndull by herself,\" thought Levin. And this lack of candor in a matter of\nsuch gravity infuriated him.\n\n\"It's out of the question,\" he said sternly.\n\nAgafea Mihalovna, seeing that it was coming to a quarrel, gently put\ndown her cup and withdrew. Kitty did not even notice her. The tone in\nwhich her husband had said the last words wounded her, especially\nbecause he evidently did not believe what she had said.\n\n\"I tell you, that if you go, I shall come with you; I shall certainly\ncome,\" she said hastily and wrathfully. \"Why out of the question? Why do\nyou say it's out of the question?\"\n\n\"Because it'll be going God knows where, by all sorts of roads and to\nall sorts of hotels. You would be a hindrance to me,\" said Levin, trying\nto be cool.\n\n\"Not at all. I don't want anything. Where you can go, I can....\"\n\n\"Well, for one thing then, because this woman's there whom you can't\nmeet.\"\n\n\"I don't know and don't care to know who's there and what. I know that\nmy husband's brother is dying and my husband is going to him, and I go\nwith my husband too....\"\n\n\"Kitty! Don't get angry. But just think a little: this is a matter of\nsuch importance that I can't bear to think that you should bring in a\nfeeling of weakness, of dislike to being left alone. Come, you'll be\ndull alone, so go and stay at Moscow a little.\"\n\n\"There, you always ascribe base, vile motives to me,\" she said with\ntears of wounded pride and fury. \"I didn't mean, it wasn't weakness, it\nwasn't ... I feel that it's my duty to be with my husband when he's in\ntrouble, but you try on purpose to hurt me, you try on purpose not to\nunderstand....\"\n\n\"No; this is awful! To be such a slave!\" cried Levin, getting up, and\nunable to restrain his anger any longer. But at the same second he felt\nthat he was beating himself.\n\n\"Then why did you marry? You could have been free. Why did you, if you\nregret it?\" she said, getting up and running away into the drawing room.\n\nWhen he went to her, she was sobbing.\n\nHe began to speak, trying to find words not to dissuade but simply to\nsoothe her. But she did not heed him, and would not agree to anything.\nHe bent down to her and took her hand, which resisted him. He kissed her\nhand, kissed her hair, kissed her hand again--still she was silent. But\nwhen he took her face in both his hands and said \"Kitty!\" she suddenly\nrecovered herself, and began to cry, and they were reconciled.\n\nIt was decided that they should go together the next day. Levin told his\nwife that he believed she wanted to go simply in order to be of use,\nagreed that Marya Nikolaevna's being with his brother did not make her\ngoing improper, but he set off at the bottom of his heart dissatisfied\nboth with her and with himself. He was dissatisfied with her for being\nunable to make up her mind to let him go when it was necessary (and how\nstrange it was for him to think that he, so lately hardly daring to\nbelieve in such happiness as that she could love him--now was unhappy\nbecause she loved him too much!), and he was dissatisfied with himself\nfor not showing more strength of will. Even greater was the feeling of\ndisagreement at the bottom of his heart as to her not needing to\nconsider the woman who was with his brother, and he thought with horror\nof all the contingencies they might meet with. The mere idea of his\nwife, his Kitty, being in the same room with a common wench, set him\nshuddering with horror and loathing.\n\n\n\nChapter 17\n\n\nThe hotel of the provincial town where Nikolay Levin was lying ill was\none of those provincial hotels which are constructed on the newest model\nof modern improvements, with the best intentions of cleanliness,\ncomfort, and even elegance, but owing to the public that patronizes\nthem, are with astounding rapidity transformed into filthy taverns with\na pretension of modern improvement that only makes them worse than the\nold-fashioned, honestly filthy hotels. This hotel had already reached\nthat stage, and the soldier in a filthy uniform smoking in the entry,\nsupposed to stand for a hall-porter, and the cast-iron, slippery, dark,\nand disagreeable staircase, and the free and easy waiter in a filthy\nfrock coat, and the common dining room with a dusty bouquet of wax\nflowers adorning the table, and filth, dust, and disorder everywhere,\nand at the same time the sort of modern up-to-date self-complacent\nrailway uneasiness of this hotel, aroused a most painful feeling in\nLevin after their fresh young life, especially because the impression of\nfalsity made by the hotel was so out of keeping with what awaited them.\n\nAs is invariably the case, after they had been asked at what price they\nwanted rooms, it appeared that there was not one decent room for them;\none decent room had been taken by the inspector of railroads, another by\na lawyer from Moscow, a third by Princess Astafieva from the country.\nThere remained only one filthy room, next to which they promised that\nanother should be empty by the evening. Feeling angry with his wife\nbecause what he had expected had come to pass, which was that at the\nmoment of arrival, when his heart throbbed with emotion and anxiety to\nknow how his brother was getting on, he should have to be seeing after\nher, instead of rushing straight to his brother, Levin conducted her to\nthe room assigned them.\n\n\"Go, do go!\" she said, looking at him with timid and guilty eyes.\n\nHe went out of the door without a word, and at once stumbled over Marya\nNikolaevna, who had heard of his arrival and had not dared to go in to\nsee him. She was just the same as when he saw her in Moscow; the same\nwoolen gown, and bare arms and neck, and the same good-naturedly stupid,\npockmarked face, only a little plumper.\n\n\"Well, how is he? how is he?\"\n\n\"Very bad. He can't get up. He has kept expecting you. He.... Are you\n... with your wife?\"\n\nLevin did not for the first moment understand what it was confused her,\nbut she immediately enlightened him.\n\n\"I'll go away. I'll go down to the kitchen,\" she brought out. \"Nikolay\nDmitrievitch will be delighted. He heard about it, and knows your lady,\nand remembers her abroad.\"\n\nLevin realized that she meant his wife, and did not know what answer to\nmake.\n\n\"Come along, come along to him!\" he said.\n\nBut as soon as he moved, the door of his room opened and Kitty peeped\nout. Levin crimsoned both from shame and anger with his wife, who had\nput herself and him in such a difficult position; but Marya Nikolaevna\ncrimsoned still more. She positively shrank together and flushed to the\npoint of tears, and clutching the ends of her apron in both hands,\ntwisted them in her red fingers without knowing what to say and what to\ndo.\n\nFor the first instant Levin saw an expression of eager curiosity in the\neyes with which Kitty looked at this awful woman, so incomprehensible to\nher; but it lasted only a single instant.\n\n\"Well! how is he?\" she turned to her husband and then to her.\n\n\"But one can't go on talking in the passage like this!\" Levin said,\nlooking angrily at a gentleman who walked jauntily at that instant\nacross the corridor, as though about his affairs.\n\n\"Well then, come in,\" said Kitty, turning to Marya Nikolaevna, who had\nrecovered herself, but noticing her husband's face of dismay, \"or go on;\ngo, and then come for me,\" she said, and went back into the room.\n\nLevin went to his brother's room. He had not in the least expected what\nhe saw and felt in his brother's room. He had expected to find him in\nthe same state of self-deception which he had heard was so frequent with\nthe consumptive, and which had struck him so much during his brother's\nvisit in the autumn. He had expected to find the physical signs of the\napproach of death more marked--greater weakness, greater emaciation, but\nstill almost the same condition of things. He had expected himself to\nfeel the same distress at the loss of the brother he loved and the same\nhorror in face of death as he had felt then, only in a greater degree.\nAnd he had prepared himself for this; but he found something utterly\ndifferent.\n\nIn a little dirty room with the painted panels of its walls filthy with\nspittle, and conversation audible through the thin partition from the\nnext room, in a stifling atmosphere saturated with impurities, on a\nbedstead moved away from the wall, there lay covered with a quilt, a\nbody. One arm of this body was above the quilt, and the wrist, huge as a\nrake-handle, was attached, inconceivably it seemed, to the thin, long\nbone of the arm smooth from the beginning to the middle. The head lay\nsideways on the pillow. Levin could see the scanty locks wet with sweat\non the temples and tense, transparent-looking forehead.\n\n\"It cannot be that that fearful body was my brother Nikolay?\" thought\nLevin. But he went closer, saw the face, and doubt became impossible. In\nspite of the terrible change in the face, Levin had only to glance at\nthose eager eyes raised at his approach, only to catch the faint\nmovement of the mouth under the sticky mustache, to realize the terrible\ntruth that this death-like body was his living brother.\n\nThe glittering eyes looked sternly and reproachfully at his brother as\nhe drew near. And immediately this glance established a living\nrelationship between living men. Levin immediately felt the reproach in\nthe eyes fixed on him, and felt remorse at his own happiness.\n\nWhen Konstantin took him by the hand, Nikolay smiled. The smile was\nfaint, scarcely perceptible, and in spite of the smile the stern\nexpression of the eyes was unchanged.\n\n\"You did not expect to find me like this,\" he articulated with effort.\n\n\"Yes ... no,\" said Levin, hesitating over his words. \"How was it you\ndidn't let me know before, that is, at the time of my wedding? I made\ninquiries in all directions.\"\n\nHe had to talk so as not to be silent, and he did not know what to say,\nespecially as his brother made no reply, and simply stared without\ndropping his eyes, and evidently penetrated to the inner meaning of each\nword. Levin told his brother that his wife had come with him. Nikolay\nexpressed pleasure, but said he was afraid of frightening her by his\ncondition. A silence followed. Suddenly Nikolay stirred, and began to\nsay something. Levin expected something of peculiar gravity and\nimportance from the expression of his face, but Nikolay began speaking\nof his health. He found fault with the doctor, regretting he had not a\ncelebrated Moscow doctor. Levin saw that he still hoped.\n\nSeizing the first moment of silence, Levin got up, anxious to escape, if\nonly for an instant, from his agonizing emotion, and said that he would\ngo and fetch his wife.\n\n\"Very well, and I'll tell her to tidy up here. It's dirty and stinking\nhere, I expect. Marya! clear up the room,\" the sick man said with\neffort. \"Oh, and when you've cleared up, go away yourself,\" he added,\nlooking inquiringly at his brother.\n\nLevin made no answer. Going out into the corridor, he stopped short. He\nhad said he would fetch his wife, but now, taking stock of the emotion\nhe was feeling, he decided that he would try on the contrary to persuade\nher not to go in to the sick man. \"Why should she suffer as I am\nsuffering?\" he thought.\n\n\"Well, how is he?\" Kitty asked with a frightened face.\n\n\"Oh, it's awful, it's awful! What did you come for?\" said Levin.\n\nKitty was silent for a few seconds, looking timidly and ruefully at her\nhusband; then she went up and took him by the elbow with both hands.\n\n\"Kostya! take me to him; it will be easier for us to bear it together.\nYou only take me, take me to him, please, and go away,\" she said. \"You\nmust understand that for me to see you, and not to see him, is far more\npainful. There I might be a help to you and to him. Please, let me!\" she\nbesought her husband, as though the happiness of her life depended on\nit.\n\nLevin was obliged to agree, and regaining his composure, and completely\nforgetting about Marya Nikolaevna by now, he went again in to his\nbrother with Kitty.\n\nStepping lightly, and continually glancing at her husband, showing him a\nvalorous and sympathetic face, Kitty went into the sick-room, and,\nturning without haste, noiselessly closed the door. With inaudible steps\nshe went quickly to the sick man's bedside, and going up so that he had\nnot to turn his head, she immediately clasped in her fresh young hand\nthe skeleton of his huge hand, pressed it, and began speaking with that\nsoft eagerness, sympathetic and not jarring, which is peculiar to women.\n\n\"We have met, though we were not acquainted, at Soden,\" she said. \"You\nnever thought I was to be your sister?\"\n\n\"You would not have recognized me?\" he said, with a radiant smile at her\nentrance.\n\n\"Yes, I should. What a good thing you let us know! Not a day has passed\nthat Kostya has not mentioned you, and been anxious.\"\n\nBut the sick man's interest did not last long.\n\nBefore she had finished speaking, there had come back into his face the\nstern, reproachful expression of the dying man's envy of the living.\n\n\"I am afraid you are not quite comfortable here,\" she said, turning away\nfrom his fixed stare, and looking about the room. \"We must ask about\nanother room,\" she said to her husband, \"so that we might be nearer.\"\n\n\n\nChapter 18\n\n\nLevin could not look calmly at his brother; he could not himself be\nnatural and calm in his presence. When he went in to the sick man, his\neyes and his attention were unconsciously dimmed, and he did not see and\ndid not distinguish the details of his brother's position. He smelt the\nawful odor, saw the dirt, disorder, and miserable condition, and heard\nthe groans, and felt that nothing could be done to help. It never\nentered his head to analyze the details of the sick man's situation, to\nconsider how that body was lying under the quilt, how those emaciated\nlegs and thighs and spine were lying huddled up, and whether they could\nnot be made more comfortable, whether anything could not be done to make\nthings, if not better, at least less bad. It made his blood run cold\nwhen he began to think of all these details. He was absolutely convinced\nthat nothing could be done to prolong his brother's life or to relieve\nhis suffering. But a sense of his regarding all aid as out of the\nquestion was felt by the sick man, and exasperated him. And this made it\nstill more painful for Levin. To be in the sick-room was agony to him,\nnot to be there still worse. And he was continually, on various\npretexts, going out of the room, and coming in again, because he was\nunable to remain alone.\n\nBut Kitty thought, and felt, and acted quite differently. On seeing the\nsick man, she pitied him. And pity in her womanly heart did not arouse\nat all that feeling of horror and loathing that it aroused in her\nhusband, but a desire to act, to find out all the details of his state,\nand to remedy them. And since she had not the slightest doubt that it\nwas her duty to help him, she had no doubt either that it was possible,\nand immediately set to work. The very details, the mere thought of which\nreduced her husband to terror, immediately engaged her attention. She\nsent for the doctor, sent to the chemist's, set the maid who had come\nwith her and Marya Nikolaevna to sweep and dust and scrub; she herself\nwashed up something, washed out something else, laid something under the\nquilt. Something was by her directions brought into the sick-room,\nsomething else was carried out. She herself went several times to her\nroom, regardless of the men she met in the corridor, got out and brought\nin sheets, pillow cases, towels, and shirts.\n\nThe waiter, who was busy with a party of engineers dining in the dining\nhall, came several times with an irate countenance in answer to her\nsummons, and could not avoid carrying out her orders, as she gave them\nwith such gracious insistence that there was no evading her. Levin did\nnot approve of all this; he did not believe it would be of any good to\nthe patient. Above all, he feared the patient would be angry at it. But\nthe sick man, though he seemed and was indifferent about it, was not\nangry, but only abashed, and on the whole as it were interested in what\nshe was doing with him. Coming back from the doctor to whom Kitty had\nsent him, Levin, on opening the door, came upon the sick man at the\ninstant when, by Kitty's directions, they were changing his linen. The\nlong white ridge of his spine, with the huge, prominent shoulder blades\nand jutting ribs and vertebrae, was bare, and Marya Nikolaevna and the\nwaiter were struggling with the sleeve of the night shirt, and could not\nget the long, limp arm into it. Kitty, hurriedly closing the door after\nLevin, was not looking that way; but the sick man groaned, and she moved\nrapidly towards him.\n\n\"Make haste,\" she said.\n\n\"Oh, don't you come,\" said the sick man angrily. \"I'll do it my\nmyself....\"\n\n\"What say?\" queried Marya Nikolaevna. But Kitty heard and saw he was\nashamed and uncomfortable at being naked before her.\n\n\"I'm not looking, I'm not looking!\" she said, putting the arm in. \"Marya\nNikolaevna, you come this side, you do it,\" she added.\n\n\"Please go for me, there's a little bottle in my small bag,\" she said,\nturning to her husband, \"you know, in the side pocket; bring it, please,\nand meanwhile they'll finish clearing up here.\"\n\nReturning with the bottle, Levin found the sick man settled comfortably\nand everything about him completely changed. The heavy smell was\nreplaced by the smell of aromatic vinegar, which Kitty with pouting lips\nand puffed-out, rosy cheeks was squirting through a little pipe. There\nwas no dust visible anywhere, a rug was laid by the bedside. On the\ntable stood medicine bottles and decanters tidily arranged, and the\nlinen needed was folded up there, and Kitty's _broderie anglaise_. On\nthe other table by the patient's bed there were candles and drink and\npowders. The sick man himself, washed and combed, lay in clean sheets on\nhigh raised pillows, in a clean night-shirt with a white collar about\nhis astoundingly thin neck, and with a new expression of hope looked\nfixedly at Kitty.\n\nThe doctor brought by Levin, and found by him at the club, was not the\none who had been attending Nikolay Levin, as the patient was\ndissatisfied with him. The new doctor took up a stethoscope and sounded\nthe patient, shook his head, prescribed medicine, and with extreme\nminuteness explained first how to take the medicine and then what diet\nwas to be kept to. He advised eggs, raw or hardly cooked, and seltzer\nwater, with warm milk at a certain temperature. When the doctor had gone\naway the sick man said something to his brother, of which Levin could\ndistinguish only the last words: \"Your Katya.\" By the expression with\nwhich he gazed at her, Levin saw that he was praising her. He called\nindeed to Katya, as he called her.\n\n\"I'm much better already,\" he said. \"Why, with you I should have got\nwell long ago. How nice it is!\" he took her hand and drew it towards his\nlips, but as though afraid she would dislike it he changed his mind, let\nit go, and only stroked it. Kitty took his hand in both hers and pressed\nit.\n\n\"Now turn me over on the left side and go to bed,\" he said.\n\nNo one could make out what he said but Kitty; she alone understood. She\nunderstood because she was all the while mentally keeping watch on what\nhe needed.\n\n\"On the other side,\" she said to her husband, \"he always sleeps on that\nside. Turn him over, it's so disagreeable calling the servants. I'm not\nstrong enough. Can you?\" she said to Marya Nikolaevna.\n\n\"I'm afraid not,\" answered Marya Nikolaevna.\n\nTerrible as it was to Levin to put his arms round that terrible body, to\ntake hold of that under the quilt, of which he preferred to know\nnothing, under his wife's influence he made his resolute face that she\nknew so well, and putting his arms into the bed took hold of the body,\nbut in spite of his own strength he was struck by the strange heaviness\nof those powerless limbs. While he was turning him over, conscious of\nthe huge emaciated arm about his neck, Kitty swiftly and noiselessly\nturned the pillow, beat it up and settled in it the sick man's head,\nsmoothing back his hair, which was sticking again to his moist brow.\n\nThe sick man kept his brother's hand in his own. Levin felt that he\nmeant to do something with his hand and was pulling it somewhere. Levin\nyielded with a sinking heart: yes, he drew it to his mouth and kissed\nit. Levin, shaking with sobs and unable to articulate a word, went out\nof the room.\n\n\n\nChapter 19\n\n\n\"Thou hast hid these things from the wise and prudent, and hast revealed\nthem unto babes.\" So Levin thought about his wife as he talked to her\nthat evening.\n\nLevin thought of the text, not because he considered himself \"wise and\nprudent.\" He did not so consider himself, but he could not help knowing\nthat he had more intellect than his wife and Agafea Mihalovna, and he\ncould not help knowing that when he thought of death, he thought with\nall the force of his intellect. He knew too that the brains of many\ngreat men, whose thoughts he had read, had brooded over death and yet\nknew not a hundredth part of what his wife and Agafea Mihalovna knew\nabout it. Different as those two women were, Agafea Mihalovna and Katya,\nas his brother Nikolay had called her, and as Levin particularly liked\nto call her now, they were quite alike in this. Both knew, without a\nshade of doubt, what sort of thing life was and what was death, and\nthough neither of them could have answered, and would even not have\nunderstood the questions that presented themselves to Levin, both had no\ndoubt of the significance of this event, and were precisely alike in\ntheir way of looking at it, which they shared with millions of people.\nThe proof that they knew for a certainty the nature of death lay in the\nfact that they knew without a second of hesitation how to deal with the\ndying, and were not frightened of them. Levin and other men like him,\nthough they could have said a great deal about death, obviously did not\nknow this since they were afraid of death, and were absolutely at a loss\nwhat to do when people were dying. If Levin had been alone now with his\nbrother Nikolay, he would have looked at him with terror, and with still\ngreater terror waited, and would not have known what else to do.\n\nMore than that, he did not know what to say, how to look, how to move.\nTo talk of outside things seemed to him shocking, impossible, to talk of\ndeath and depressing subjects--also impossible. To be silent, also\nimpossible. \"If I look at him he will think I am studying him, I am\nafraid; if I don't look at him, he'll think I'm thinking of other\nthings. If I walk on tiptoe, he will be vexed; to tread firmly, I'm\nashamed.\" Kitty evidently did not think of herself, and had no time to\nthink about herself: she was thinking about him because she knew\nsomething, and all went well. She told him about herself even and about\nher wedding, and smiled and sympathized with him and petted him, and\ntalked of cases of recovery and all went well; so then she must know.\nThe proof that her behavior and Agafea Mihalovna's was not instinctive,\nanimal, irrational, was that apart from the physical treatment, the\nrelief of suffering, both Agafea Mihalovna and Kitty required for the\ndying man something else more important than the physical treatment, and\nsomething which had nothing in common with physical conditions. Agafea\nMihalovna, speaking of the man just dead, had said: \"Well, thank God, he\ntook the sacrament and received absolution; God grant each one of us\nsuch a death.\" Katya in just the same way, besides all her care about\nlinen, bedsores, drink, found time the very first day to persuade the\nsick man of the necessity of taking the sacrament and receiving\nabsolution.\n\nOn getting back from the sick-room to their own two rooms for the night,\nLevin sat with hanging head not knowing what to do. Not to speak of\nsupper, of preparing for bed, of considering what they were going to do,\nhe could not even talk to his wife; he was ashamed to. Kitty, on the\ncontrary, was more active than usual. She was even livelier than usual.\nShe ordered supper to be brought, herself unpacked their things, and\nherself helped to make the beds, and did not even forget to sprinkle\nthem with Persian powder. She showed that alertness, that swiftness of\nreflection comes out in men before a battle, in conflict, in the\ndangerous and decisive moments of life--those moments when a man shows\nonce and for all his value, and that all his past has not been wasted\nbut has been a preparation for these moments.\n\nEverything went rapidly in her hands, and before it was twelve o'clock\nall their things were arranged cleanly and tidily in her rooms, in such\na way that the hotel rooms seemed like home: the beds were made,\nbrushes, combs, looking-glasses were put out, table napkins were spread.\n\nLevin felt that it was unpardonable to eat, to sleep, to talk even now,\nand it seemed to him that every movement he made was unseemly. She\narranged the brushes, but she did it all so that there was nothing\nshocking in it.\n\nThey could neither of them eat, however, and for a long while they could\nnot sleep, and did not even go to bed.\n\n\"I am very glad I persuaded him to receive extreme unction tomorrow,\"\nshe said, sitting in her dressing jacket before her folding looking\nglass, combing her soft, fragrant hair with a fine comb. \"I have never\nseen it, but I know, mamma has told me, there are prayers said for\nrecovery.\"\n\n\"Do you suppose he can possibly recover?\" said Levin, watching a slender\ntress at the back of her round little head that was continually hidden\nwhen she passed the comb through the front.\n\n\"I asked the doctor; he said he couldn't live more than three days. But\ncan they be sure? I'm very glad, anyway, that I persuaded him,\" she\nsaid, looking askance at her husband through her hair. \"Anything is\npossible,\" she added with that peculiar, rather sly expression that was\nalways in her face when she spoke of religion.\n\nSince their conversation about religion when they were engaged neither\nof them had ever started a discussion of the subject, but she performed\nall the ceremonies of going to church, saying her prayers, and so on,\nalways with the unvarying conviction that this ought to be so. In spite\nof his assertion to the contrary, she was firmly persuaded that he was\nas much a Christian as she, and indeed a far better one; and all that he\nsaid about it was simply one of his absurd masculine freaks, just as he\nwould say about her _broderie anglaise_ that good people patch holes,\nbut that she cut them on purpose, and so on.\n\n\"Yes, you see this woman, Marya Nikolaevna, did not know how to manage\nall this,\" said Levin. \"And ... I must own I'm very, very glad you came.\nYou are such purity that....\" He took her hand and did not kiss it (to\nkiss her hand in such closeness to death seemed to him improper); he\nmerely squeezed it with a penitent air, looking at her brightening eyes.\n\n\"It would have been miserable for you to be alone,\" she said, and\nlifting her hands which hid her cheeks flushing with pleasure, twisted\nher coil of hair on the nape of her neck and pinned it there. \"No,\" she\nwent on, \"she did not know how.... Luckily, I learned a lot at Soden.\"\n\n\"Surely there are not people there so ill?\"\n\n\"Worse.\"\n\n\"What's so awful to me is that I can't see him as he was when he was\nyoung. You would not believe how charming he was as a youth, but I did\nnot understand him then.\"\n\n\"I can quite, quite believe it. How I feel that we might have been\nfriends!\" she said; and, distressed at what she had said, she looked\nround at her husband, and tears came into her eyes.\n\n\"Yes, _might have been_,\" he said mournfully. \"He's just one of those\npeople of whom they say they're not for this world.\"\n\n\"But we have many days before us; we must go to bed,\" said Kitty,\nglancing at her tiny watch.\n\n\n\nChapter 20\n\n\nThe next day the sick man received the sacrament and extreme unction.\nDuring the ceremony Nikolay Levin prayed fervently. His great eyes,\nfastened on the holy image that was set out on a card table covered with\na colored napkin, expressed such passionate prayer and hope that it was\nawful to Levin to see it. Levin knew that this passionate prayer and\nhope would only make him feel more bitterly parting from the life he so\nloved. Levin knew his brother and the workings of his intellect: he knew\nthat his unbelief came not from life being easier for him without faith,\nbut had grown up because step by step the contemporary scientific\ninterpretation of natural phenomena crushed out the possibility of\nfaith; and so he knew that his present return was not a legitimate one,\nbrought about by way of the same working of his intellect, but simply a\ntemporary, interested return to faith in a desperate hope of recovery.\nLevin knew too that Kitty had strengthened his hope by accounts of the\nmarvelous recoveries she had heard of. Levin knew all this; and it was\nagonizingly painful to him to behold the supplicating, hopeful eyes and\nthe emaciated wrist, lifted with difficulty, making the sign of the\ncross on the tense brow, and the prominent shoulders and hollow, gasping\nchest, which one could not feel consistent with the life the sick man\nwas praying for. During the sacrament Levin did what he, an unbeliever,\nhad done a thousand times. He said, addressing God, \"If Thou dost exist,\nmake this man to recover\" (of course this same thing has been repeated\nmany times), \"and Thou wilt save him and me.\"\n\nAfter extreme unction the sick man became suddenly much better. He did\nnot cough once in the course of an hour, smiled, kissed Kitty's hand,\nthanking her with tears, and said he was comfortable, free from pain,\nand that he felt strong and had an appetite. He even raised himself when\nhis soup was brought, and asked for a cutlet as well. Hopelessly ill as\nhe was, obvious as it was at the first glance that he could not recover,\nLevin and Kitty were for that hour both in the same state of excitement,\nhappy, though fearful of being mistaken.\n\n\"Is he better?\"\n\n\"Yes, much.\"\n\n\"It's wonderful.\"\n\n\"There's nothing wonderful in it.\"\n\n\"Anyway, he's better,\" they said in a whisper, smiling to one another.\n\nThis self-deception was not of long duration. The sick man fell into a\nquiet sleep, but he was waked up half an hour later by his cough. And\nall at once every hope vanished in those about him and in himself. The\nreality of his suffering crushed all hopes in Levin and Kitty and in the\nsick man himself, leaving no doubt, no memory even of past hopes.\n\nWithout referring to what he had believed in half an hour before, as\nthough ashamed even to recall it, he asked for iodine to inhale in a\nbottle covered with perforated paper. Levin gave him the bottle, and the\nsame look of passionate hope with which he had taken the sacrament was\nnow fastened on his brother, demanding from him the confirmation of the\ndoctor's words that inhaling iodine worked wonders.\n\n\"Is Katya not here?\" he gasped, looking round while Levin reluctantly\nassented to the doctor's words. \"No; so I can say it.... It was for her\nsake I went through that farce. She's so sweet; but you and I can't\ndeceive ourselves. This is what I believe in,\" he said, and, squeezing\nthe bottle in his bony hand, he began breathing over it.\n\nAt eight o'clock in the evening Levin and his wife were drinking tea in\ntheir room when Marya Nikolaevna ran in to them breathlessly. She was\npale, and her lips were quivering. \"He is dying!\" she whispered. \"I'm\nafraid will die this minute.\"\n\nBoth of them ran to him. He was sitting raised up with one elbow on the\nbed, his long back bent, and his head hanging low.\n\n\"How do you feel?\" Levin asked in a whisper, after a silence.\n\n\"I feel I'm setting off,\" Nikolay said with difficulty, but with extreme\ndistinctness, screwing the words out of himself. He did not raise his\nhead, but simply turned his eyes upwards, without their reaching his\nbrother's face. \"Katya, go away!\" he added.\n\nLevin jumped up, and with a peremptory whisper made her go out.\n\n\"I'm setting off,\" he said again.\n\n\"Why do you think so?\" said Levin, so as to say something.\n\n\"Because I'm setting off,\" he repeated, as though he had a liking for\nthe phrase. \"It's the end.\"\n\nMarya Nikolaevna went up to him.\n\n\"You had better lie down; you'd be easier,\" she said.\n\n\"I shall lie down soon enough,\" he pronounced slowly, \"when I'm dead,\"\nhe said sarcastically, wrathfully. \"Well, you can lay me down if you\nlike.\"\n\nLevin laid his brother on his back, sat down beside him, and gazed at\nhis face, holding his breath. The dying man lay with closed eyes, but\nthe muscles twitched from time to time on his forehead, as with one\nthinking deeply and intensely. Levin involuntarily thought with him of\nwhat it was that was happening to him now, but in spite of all his\nmental efforts to go along with him he saw by the expression of that\ncalm, stern face that for the dying man all was growing clearer and\nclearer that was still as dark as ever for Levin.\n\n\"Yes, yes, so,\" the dying man articulated slowly at intervals. \"Wait a\nlittle.\" He was silent. \"Right!\" he pronounced all at once reassuringly,\nas though all were solved for him. \"O Lord!\" he murmured, and sighed\ndeeply.\n\nMarya Nikolaevna felt his feet. \"They're getting cold,\" she whispered.\n\nFor a long while, a very long while it seemed to Levin, the sick man lay\nmotionless. But he was still alive, and from time to time he sighed.\nLevin by now was exhausted from mental strain. He felt that, with no\nmental effort, could he understand what it was that was _right_. He\ncould not even think of the problem of death itself, but with no will of\nhis own thoughts kept coming to him of what he had to do next; closing\nthe dead man's eyes, dressing him, ordering the coffin. And, strange to\nsay, he felt utterly cold, and was not conscious of sorrow nor of loss,\nless still of pity for his brother. If he had any feeling for his\nbrother at that moment, it was envy for the knowledge the dying man had\nnow that he could not have.\n\nA long time more he sat over him so, continually expecting the end. But\nthe end did not come. The door opened and Kitty appeared. Levin got up\nto stop her. But at the moment he was getting up, he caught the sound of\nthe dying man stirring.\n\n\"Don't go away,\" said Nikolay and held out his hand. Levin gave him his,\nand angrily waved to his wife to go away.\n\nWith the dying man's hand in his hand, he sat for half an hour, an hour,\nanother hour. He did not think of death at all now. He wondered what\nKitty was doing; who lived in the next room; whether the doctor lived in\na house of his own. He longed for food and for sleep. He cautiously drew\naway his hand and felt the feet. The feet were cold, but the sick man\nwas still breathing. Levin tried again to move away on tiptoe, but the\nsick man stirred again and said: \"Don't go.\"\n\n                                  ----\n\nThe dawn came; the sick man's condition was unchanged. Levin stealthily\nwithdrew his hand, and without looking at the dying man, went off to his\nown room and went to sleep. When he woke up, instead of news of his\nbrother's death which he expected, he learned that the sick man had\nreturned to his earlier condition. He had begun sitting up again,\ncoughing, had begun eating again, talking again, and again had ceased to\ntalk of death, again had begun to express hope of his recovery, and had\nbecome more irritable and more gloomy than ever. No one, neither his\nbrother nor Kitty, could soothe him. He was angry with everyone, and\nsaid nasty things to everyone, reproached everyone for his sufferings,\nand insisted that they should get him a celebrated doctor from Moscow.\nTo all inquiries made him as to how he felt, he made the same answer\nwith an expression of vindictive reproachfulness, \"I'm suffering\nhorribly, intolerably!\"\n\nThe sick man was suffering more and more, especially from bedsores,\nwhich it was impossible now to remedy, and grew more and more angry with\neveryone about him, blaming them for everything, and especially for not\nhaving brought him a doctor from Moscow. Kitty tried in every possible\nway to relieve him, to soothe him; but it was all in vain, and Levin saw\nthat she herself was exhausted both physically and morally, though she\nwould not admit it. The sense of death, which had been evoked in all by\nhis taking leave of life on the night when he had sent for his brother,\nwas broken up. Everyone knew that he must inevitably die soon, that he\nwas half dead already. Everyone wished for nothing but that he should\ndie as soon as possible, and everyone, concealing this, gave him\nmedicines, tried to find remedies and doctors, and deceived him and\nthemselves and each other. All this was falsehood, disgusting,\nirreverent deceit. And owing to the bent of his character, and because\nhe loved the dying man more than anyone else did, Levin was most\npainfully conscious of this deceit.\n\nLevin, who had long been possessed by the idea of reconciling his\nbrothers, at least in face of death, had written to his brother, Sergey\nIvanovitch, and having received an answer from him, he read this letter\nto the sick man. Sergey Ivanovitch wrote that he could not come himself,\nand in touching terms he begged his brother's forgiveness.\n\nThe sick man said nothing.\n\n\"What am I to write to him?\" said Levin. \"I hope you are not angry with\nhim?\"\n\n\"No, not the least!\" Nikolay answered, vexed at the question. \"Tell him\nto send me a doctor.\"\n\nThree more days of agony followed; the sick man was still in the same\ncondition. The sense of longing for his death was felt by everyone now\nat the mere sight of him, by the waiters and the hotel-keeper and all\nthe people staying in the hotel, and the doctor and Marya Nikolaevna and\nLevin and Kitty. The sick man alone did not express this feeling, but on\nthe contrary was furious at their not getting him doctors, and went on\ntaking medicine and talking of life. Only at rare moments, when the\nopium gave him an instant's relief from the never-ceasing pain, he would\nsometimes, half asleep, utter what was ever more intense in his heart\nthan in all the others: \"Oh, if it were only the end!\" or: \"When will it\nbe over?\"\n\nHis sufferings, steadily growing more intense, did their work and\nprepared him for death. There was no position in which he was not in\npain, there was not a minute in which he was unconscious of it, not a\nlimb, not a part of his body that did not ache and cause him agony. Even\nthe memories, the impressions, the thoughts of this body awakened in him\nnow the same aversion as the body itself. The sight of other people,\ntheir remarks, his own reminiscences, everything was for him a source of\nagony. Those about him felt this, and instinctively did not allow\nthemselves to move freely, to talk, to express their wishes before him.\nAll his life was merged in the one feeling of suffering and desire to be\nrid of it.\n\nThere was evidently coming over him that revulsion that would make him\nlook upon death as the goal of his desires, as happiness. Hitherto each\nindividual desire, aroused by suffering or privation, such as hunger,\nfatigue, thirst, had been satisfied by some bodily function giving\npleasure. But now no physical craving or suffering received relief, and\nthe effort to relieve them only caused fresh suffering. And so all\ndesires were merged in one--the desire to be rid of all his sufferings\nand their source, the body. But he had no words to express this desire\nof deliverance, and so he did not speak of it, and from habit asked for\nthe satisfaction of desires which could not now be satisfied. \"Turn me\nover on the other side,\" he would say, and immediately after he would\nask to be turned back again as before. \"Give me some broth. Take away\nthe broth. Talk of something: why are you silent?\" And directly they\nbegan to talk he would close his eyes, and would show weariness,\nindifference, and loathing.\n\nOn the tenth day from their arrival at the town, Kitty was unwell. She\nsuffered from headache and sickness, and she could not get up all the\nmorning.\n\nThe doctor opined that the indisposition arose from fatigue and\nexcitement, and prescribed rest.\n\nAfter dinner, however, Kitty got up and went as usual with her work to\nthe sick man. He looked at her sternly when she came in, and smiled\ncontemptuously when she said she had been unwell. That day he was\ncontinually blowing his nose, and groaning piteously.\n\n\"How do you feel?\" she asked him.\n\n\"Worse,\" he articulated with difficulty. \"In pain!\"\n\n\"In pain, where?\"\n\n\"Everywhere.\"\n\n\"It will be over today, you will see,\" said Marya Nikolaevna. Though it\nwas said in a whisper, the sick man, whose hearing Levin had noticed was\nvery keen, must have heard. Levin said hush to her, and looked round at\nthe sick man. Nikolay had heard; but these words produced no effect on\nhim. His eyes had still the same intense, reproachful look.\n\n\"Why do you think so?\" Levin asked her, when she had followed him into\nthe corridor.\n\n\"He has begun picking at himself,\" said Marya Nikolaevna.\n\n\"How do you mean?\"\n\n\"Like this,\" she said, tugging at the folds of her woolen skirt. Levin\nnoticed, indeed, that all that day the patient pulled at himself, as it\nwere, trying to snatch something away.\n\nMarya Nikolaevna's prediction came true. Towards night the sick man was\nnot able to lift his hands, and could only gaze before him with the same\nintensely concentrated expression in his eyes. Even when his brother or\nKitty bent over him, so that he could see them, he looked just the same.\nKitty sent for the priest to read the prayer for the dying.\n\nWhile the priest was reading it, the dying man did not show any sign of\nlife; his eyes were closed. Levin, Kitty, and Marya Nikolaevna stood at\nthe bedside. The priest had not quite finished reading the prayer when\nthe dying man stretched, sighed, and opened his eyes. The priest, on\nfinishing the prayer, put the cross to the cold forehead, then slowly\nreturned it to the stand, and after standing for two minutes more in\nsilence, he touched the huge, bloodless hand that was turning cold.\n\n\"He is gone,\" said the priest, and would have moved away; but suddenly\nthere was a faint stir in the mustaches of the dead man that seemed\nglued together, and quite distinctly in the hush they heard from the\nbottom of the chest the sharply defined sounds:\n\n\"Not quite ... soon.\"\n\nAnd a minute later the face brightened, a smile came out under the\nmustaches, and the women who had gathered round began carefully laying\nout the corpse.\n\nThe sight of his brother, and the nearness of death, revived in Levin\nthat sense of horror in face of the insoluble enigma, together with the\nnearness and inevitability of death, that had come upon him that autumn\nevening when his brother had come to him. This feeling was now even\nstronger than before; even less than before did he feel capable of\napprehending the meaning of death, and its inevitability rose up before\nhim more terrible than ever. But now, thanks to his wife's presence,\nthat feeling did not reduce him to despair. In spite of death, he felt\nthe need of life and love. He felt that love saved him from despair, and\nthat this love, under the menace of despair, had become still stronger\nand purer. The one mystery of death, still unsolved, had scarcely passed\nbefore his eyes, when another mystery had arisen, as insoluble, urging\nhim to love and to life.\n\nThe doctor confirmed his suppositions in regard to Kitty. Her\nindisposition was a symptom that she was with child.\n\n\n\nChapter 21\n\n\nFrom the moment when Alexey Alexandrovitch understood from his\ninterviews with Betsy and with Stepan Arkadyevitch that all that was\nexpected of him was to leave his wife in peace, without burdening her\nwith his presence, and that his wife herself desired this, he felt so\ndistraught that he could come to no decision of himself; he did not know\nhimself what he wanted now, and putting himself in the hands of those\nwho were so pleased to interest themselves in his affairs, he met\neverything with unqualified assent. It was only when Anna had left his\nhouse, and the English governess sent to ask him whether she should dine\nwith him or separately, that for the first time he clearly comprehended\nhis position, and was appalled by it. Most difficult of all in this\nposition was the fact that he could not in any way connect and reconcile\nhis past with what was now. It was not the past when he had lived\nhappily with his wife that troubled him. The transition from that past\nto a knowledge of his wife's unfaithfulness he had lived through\nmiserably already; that state was painful, but he could understand it.\nIf his wife had then, on declaring to him her unfaithfulness, left him,\nhe would have been wounded, unhappy, but he would not have been in the\nhopeless position--incomprehensible to himself--in which he felt himself\nnow. He could not now reconcile his immediate past, his tenderness, his\nlove for his sick wife, and for the other man's child with what was now\nthe case, that is with the fact that, as it were, in return for all this\nhe now found himself alone, put to shame, a laughing-stock, needed by no\none, and despised by everyone.\n\nFor the first two days after his wife's departure Alexey Alexandrovitch\nreceived applicants for assistance and his chief secretary, drove to the\ncommittee, and went down to dinner in the dining room as usual. Without\ngiving himself a reason for what he was doing, he strained every nerve\nof his being for those two days, simply to preserve an appearance of\ncomposure, and even of indifference. Answering inquiries about the\ndisposition of Anna Arkadyevna's rooms and belongings, he had exercised\nimmense self-control to appear like a man in whose eyes what had\noccurred was not unforeseen nor out of the ordinary course of events,\nand he attained his aim: no one could have detected in him signs of\ndespair. But on the second day after her departure, when Korney gave him\na bill from a fashionable draper's shop, which Anna had forgotten to\npay, and announced that the clerk from the shop was waiting, Alexey\nAlexandrovitch told him to show the clerk up.\n\n\"Excuse me, your excellency, for venturing to trouble you. But if you\ndirect us to apply to her excellency, would you graciously oblige us\nwith her address?\"\n\nAlexey Alexandrovitch pondered, as it seemed to the clerk, and all at\nonce, turning round, he sat down at the table. Letting his head sink\ninto his hands, he sat for a long while in that position, several times\nattempted to speak and stopped short. Korney, perceiving his master's\nemotion, asked the clerk to call another time. Left alone, Alexey\nAlexandrovitch recognized that he had not the strength to keep up the\nline of firmness and composure any longer. He gave orders for the\ncarriage that was awaiting him to be taken back, and for no one to be\nadmitted, and he did not go down to dinner.\n\nHe felt that he could not endure the weight of universal contempt and\nexasperation, which he had distinctly seen in the face of the clerk and\nof Korney, and of everyone, without exception, whom he had met during\nthose two days. He felt that he could not turn aside from himself the\nhatred of men, because that hatred did not come from his being bad (in\nthat case he could have tried to be better), but from his being\nshamefully and repulsively unhappy. He knew that for this, for the very\nfact that his heart was torn with grief, they would be merciless to him.\nHe felt that men would crush him as dogs strangle a torn dog yelping\nwith pain. He knew that his sole means of security against people was to\nhide his wounds from them, and instinctively he tried to do this for two\ndays, but now he felt incapable of keeping up the unequal struggle.\n\nHis despair was even intensified by the consciousness that he was\nutterly alone in his sorrow. In all Petersburg there was not a human\nbeing to whom he could express what he was feeling, who would feel for\nhim, not as a high official, not as a member of society, but simply as a\nsuffering man; indeed he had not such a one in the whole world.\n\nAlexey Alexandrovitch grew up an orphan. There were two brothers. They\ndid not remember their father, and their mother died when Alexey\nAlexandrovitch was ten years old. The property was a small one. Their\nuncle, Karenin, a government official of high standing, at one time a\nfavorite of the late Tsar, had brought them up.\n\nOn completing his high school and university courses with medals, Alexey\nAlexandrovitch had, with his uncle's aid, immediately started in a\nprominent position in the service, and from that time forward he had\ndevoted himself exclusively to political ambition. In the high school\nand the university, and afterwards in the service, Alexey Alexandrovitch\nhad never formed a close friendship with anyone. His brother had been\nthe person nearest to his heart, but he had a post in the Ministry of\nForeign Affairs, and was always abroad, where he had died shortly after\nAlexey Alexandrovitch's marriage.\n\nWhile he was governor of a province, Anna's aunt, a wealthy provincial\nlady, had thrown him--middle-aged as he was, though young for a\ngovernor--with her niece, and had succeeded in putting him in such a\nposition that he had either to declare himself or to leave the town.\nAlexey Alexandrovitch was not long in hesitation. There were at the time\nas many reasons for the step as against it, and there was no\noverbalancing consideration to outweigh his invariable rule of\nabstaining when in doubt. But Anna's aunt had through a common\nacquaintance insinuated that he had already compromised the girl, and\nthat he was in honor bound to make her an offer. He made the offer, and\nconcentrated on his betrothed and his wife all the feeling of which he\nwas capable.\n\nThe attachment he felt to Anna precluded in his heart every need of\nintimate relations with others. And now among all his acquaintances he\nhad not one friend. He had plenty of so-called connections, but no\nfriendships. Alexey Alexandrovitch had plenty of people whom he could\ninvite to dinner, to whose sympathy he could appeal in any public affair\nhe was concerned about, whose interest he could reckon upon for anyone\nhe wished to help, with whom he could candidly discuss other people's\nbusiness and affairs of state. But his relations with these people were\nconfined to one clearly defined channel, and had a certain routine from\nwhich it was impossible to depart. There was one man, a comrade of his\nat the university, with whom he had made friends later, and with whom he\ncould have spoken of a personal sorrow; but this friend had a post in\nthe Department of Education in a remote part of Russia. Of the people in\nPetersburg the most intimate and most possible were his chief secretary\nand his doctor.\n\nMihail Vassilievitch Sludin, the chief secretary, was a straightforward,\nintelligent, good-hearted, and conscientious man, and Alexey\nAlexandrovitch was aware of his personal goodwill. But their five years\nof official work together seemed to have put a barrier between them that\ncut off warmer relations.\n\nAfter signing the papers brought him, Alexey Alexandrovitch had sat for\na long while in silence, glancing at Mihail Vassilievitch, and several\ntimes he attempted to speak, but could not. He had already prepared the\nphrase: \"You have heard of my trouble?\" But he ended by saying, as\nusual: \"So you'll get this ready for me?\" and with that dismissed him.\n\nThe other person was the doctor, who had also a kindly feeling for him;\nbut there had long existed a taciturn understanding between them that\nboth were weighed down by work, and always in a hurry.\n\nOf his women friends, foremost amongst them Countess Lidia Ivanovna,\nAlexey Alexandrovitch never thought. All women, simply as women, were\nterrible and distasteful to him.\n\n\n\nChapter 22\n\n\nAlexey Alexandrovitch had forgotten the Countess Lidia Ivanovna, but she\nhad not forgotten him. At the bitterest moment of his lonely despair she\ncame to him, and without waiting to be announced, walked straight into\nhis study. She found him as he was sitting with his head in both hands.\n\n\"_J'ai force la consigne_,\" she said, walking in with rapid steps and\nbreathing hard with excitement and rapid exercise. \"I have heard all!\nAlexey Alexandrovitch! Dear friend!\" she went on, warmly squeezing his\nhand in both of hers and gazing with her fine pensive eyes into his.\n\nAlexey Alexandrovitch, frowning, got up, and disengaging his hand, moved\nher a chair.\n\n\"Won't you sit down, countess? I'm seeing no one because I'm unwell,\ncountess,\" he said, and his lips twitched.\n\n\"Dear friend!\" repeated Countess Lidia Ivanovna, never taking her eyes\noff his, and suddenly her eyebrows rose at the inner corners, describing\na triangle on her forehead, her ugly yellow face became still uglier,\nbut Alexey Alexandrovitch felt that she was sorry for him and was\npreparing to cry. And he too was softened; he snatched her plump hand\nand proceeded to kiss it.\n\n\"Dear friend!\" she said in a voice breaking with emotion. \"You ought not\nto give way to grief. Your sorrow is a great one, but you ought to find\nconsolation.\"\n\n\"I am crushed, I am annihilated, I am no longer a man!\" said Alexey\nAlexandrovitch, letting go her hand, but still gazing into her brimming\neyes. \"My position is so awful because I can find nowhere, I cannot find\nwithin me strength to support me.\"\n\n\"You will find support; seek it--not in me, though I beseech you to\nbelieve in my friendship,\" she said, with a sigh. \"Our support is love,\nthat love that He has vouchsafed us. His burden is light,\" she said,\nwith the look of ecstasy Alexey Alexandrovitch knew so well. \"He will be\nyour support and your succor.\"\n\nAlthough there was in these words a flavor of that sentimental emotion\nat her own lofty feelings, and that new mystical fervor which had lately\ngained ground in Petersburg, and which seemed to Alexey Alexandrovitch\ndisproportionate, still it was pleasant to him to hear this now.\n\n\"I am weak. I am crushed. I foresaw nothing, and now I understand\nnothing.\"\n\n\"Dear friend,\" repeated Lidia Ivanovna.\n\n\"It's not the loss of what I have not now, it's not that!\" pursued\nAlexey Alexandrovitch. \"I do not grieve for that. But I cannot help\nfeeling humiliated before other people for the position I am placed in.\nIt is wrong, but I can't help it, I can't help it.\"\n\n\"Not you it was performed that noble act of forgiveness, at which I was\nmoved to ecstasy, and everyone else too, but He, working within your\nheart,\" said Countess Lidia Ivanovna, raising her eyes rapturously, \"and\nso you cannot be ashamed of your act.\"\n\nAlexey Alexandrovitch knitted his brows, and crooking his hands, he\ncracked his fingers.\n\n\"One must know all the facts,\" he said in his thin voice. \"A man's\nstrength has its limits, countess, and I have reached my limits. The\nwhole day I have had to be making arrangements, arrangements about\nhousehold matters arising\" (he emphasized the word _arising_) \"from my\nnew, solitary position. The servants, the governess, the accounts....\nThese pinpricks have stabbed me to the heart, and I have not the\nstrength to bear it. At dinner ... yesterday, I was almost getting up\nfrom the dinner table. I could not bear the way my son looked at me. He\ndid not ask me the meaning of it all, but he wanted to ask, and I could\nnot bear the look in his eyes. He was afraid to look at me, but that is\nnot all....\" Alexey Alexandrovitch would have referred to the bill that\nhad been brought him, but his voice shook, and he stopped. That bill on\nblue paper, for a hat and ribbons, he could not recall without a rush of\nself-pity.\n\n\"I understand, dear friend,\" said Lidia Ivanovna. \"I understand it all.\nSuccor and comfort you will find not in me, though I have come only to\naid you if I can. If I could take from off you all these petty,\nhumiliating cares ... I understand that a woman's word, a woman's\nsuperintendence is needed. You will intrust it to me?\"\n\nSilently and gratefully Alexey Alexandrovitch pressed her hand.\n\n\"Together we will take care of Seryozha. Practical affairs are not my\nstrong point. But I will set to work. I will be your housekeeper. Don't\nthank me. I do it not from myself...\"\n\n\"I cannot help thanking you.\"\n\n\"But, dear friend, do not give way to the feeling of which you\nspoke--being ashamed of what is the Christian's highest glory: _he who\nhumbles himself shall be exalted_. And you cannot thank me. You must\nthank Him, and pray to Him for succor. In Him alone we find peace,\nconsolation, salvation, and love,\" she said, and turning her eyes\nheavenwards, she began praying, as Alexey Alexandrovitch gathered from\nher silence.\n\nAlexey Alexandrovitch listened to her now, and those expressions which\nhad seemed to him, if not distasteful, at least exaggerated, now seemed\nto him natural and consolatory. Alexey Alexandrovitch had disliked this\nnew enthusiastic fervor. He was a believer, who was interested in\nreligion primarily in its political aspect, and the new doctrine which\nventured upon several new interpretations, just because it paved the way\nto discussion and analysis, was in principle disagreeable to him. He had\nhitherto taken up a cold and even antagonistic attitude to this new\ndoctrine, and with Countess Lidia Ivanovna, who had been carried away by\nit, he had never argued, but by silence had assiduously parried her\nattempts to provoke him into argument. Now for the first time he heard\nher words with pleasure, and did not inwardly oppose them.\n\n\"I am very, very grateful to you, both for your deeds and for your\nwords,\" he said, when she had finished praying.\n\nCountess Lidia Ivanovna once more pressed both her friend's hands.\n\n\"Now I will enter upon my duties,\" she said with a smile after a pause,\nas she wiped away the traces of tears. \"I am going to Seryozha. Only in\nthe last extremity shall I apply to you.\" And she got up and went out.\n\nCountess Lidia Ivanovna went into Seryozha's part of the house, and\ndropping tears on the scared child's cheeks, she told him that his\nfather was a saint and his mother was dead.\n\nCountess Lidia Ivanovna kept her promise. She did actually take upon\nherself the care of the organization and management of Alexey\nAlexandrovitch's household. But she had not overstated the case when\nsaying that practical affairs were not her strong point. All her\narrangements had to be modified because they could not be carried out,\nand they were modified by Korney, Alexey Alexandrovitch's valet, who,\nthough no one was aware of the fact, now managed Karenin's household,\nand quietly and discreetly reported to his master while he was dressing\nall it was necessary for him to know. But Lidia Ivanovna's help was none\nthe less real; she gave Alexey Alexandrovitch moral support in the\nconsciousness of her love and respect for him, and still more, as it was\nsoothing to her to believe, in that she almost turned him to\nChristianity--that is, from an indifferent and apathetic believer she\nturned him into an ardent and steadfast adherent of the new\ninterpretation of Christian doctrine, which had been gaining ground of\nlate in Petersburg. It was easy for Alexey Alexandrovitch to believe in\nthis teaching. Alexey Alexandrovitch, like Lidia Ivanovna indeed, and\nothers who shared their views, was completely devoid of vividness of\nimagination, that spiritual faculty in virtue of which the conceptions\nevoked by the imagination become so vivid that they must needs be in\nharmony with other conceptions, and with actual fact. He saw nothing\nimpossible and inconceivable in the idea that death, though existing for\nunbelievers, did not exist for him, and that, as he was possessed of the\nmost perfect faith, of the measure of which he was himself the judge,\ntherefore there was no sin in his soul, and he was experiencing complete\nsalvation here on earth.\n\nIt is true that the erroneousness and shallowness of this conception of\nhis faith was dimly perceptible to Alexey Alexandrovitch, and he knew\nthat when, without the slightest idea that his forgiveness was the\naction of a higher power, he had surrendered directly to the feeling of\nforgiveness, he had felt more happiness than now when he was thinking\nevery instant that Christ was in his heart, and that in signing official\npapers he was doing His will. But for Alexey Alexandrovitch it was a\nnecessity to think in that way; it was such a necessity for him in his\nhumiliation to have some elevated standpoint, however imaginary, from\nwhich, looked down upon by all, he could look down on others, that he\nclung, as to his one salvation, to his delusion of salvation.\n\n\n\nChapter 23\n\n\nThe Countess Lidia Ivanovna had, as a very young and sentimental girl,\nbeen married to a wealthy man of high rank, an extremely good-natured,\njovial, and extremely dissipated rake. Two months after marriage her\nhusband abandoned her, and her impassioned protestations of affection he\nmet with a sarcasm and even hostility that people knowing the count's\ngood heart, and seeing no defects in the sentimental Lidia, were at a\nloss to explain. Though they were divorced and lived apart, yet whenever\nthe husband met the wife, he invariably behaved to her with the same\nmalignant irony, the cause of which was incomprehensible.\n\nCountess Lidia Ivanovna had long given up being in love with her\nhusband, but from that time she had never given up being in love with\nsomeone. She was in love with several people at once, both men and\nwomen; she had been in love with almost everyone who had been\nparticularly distinguished in any way. She was in love with all the new\nprinces and princesses who married into the imperial family; she had\nbeen in love with a high dignitary of the Church, a vicar, and a parish\npriest; she had been in love with a journalist, three Slavophiles, with\nKomissarov, with a minister, a doctor, an English missionary and\nKarenin. All these passions constantly waning or growing more ardent,\ndid not prevent her from keeping up the most extended and complicated\nrelations with the court and fashionable society. But from the time that\nafter Karenin's trouble she took him under her special protection, from\nthe time that she set to work in Karenin's household looking after his\nwelfare, she felt that all her other attachments were not the real\nthing, and that she was now genuinely in love, and with no one but\nKarenin. The feeling she now experienced for him seemed to her stronger\nthan any of her former feelings. Analyzing her feeling, and comparing it\nwith former passions, she distinctly perceived that she would not have\nbeen in love with Komissarov if he had not saved the life of the Tsar,\nthat she would not have been in love with Ristitch-Kudzhitsky if there\nhad been no Slavonic question, but that she loved Karenin for himself,\nfor his lofty, uncomprehended soul, for the sweet--to her--high notes of\nhis voice, for his drawling intonation, his weary eyes, his character,\nand his soft white hands with their swollen veins. She was not simply\noverjoyed at meeting him, but she sought in his face signs of the\nimpression she was making on him. She tried to please him, not by her\nwords only, but in her whole person. For his sake it was that she now\nlavished more care on her dress than before. She caught herself in\nreveries on what might have been, if she had not been married and he had\nbeen free. She blushed with emotion when he came into the room, she\ncould not repress a smile of rapture when he said anything amiable to\nher.\n\nFor several days now Countess Lidia Ivanovna had been in a state of\nintense excitement. She had learned that Anna and Vronsky were in\nPetersburg. Alexey Alexandrovitch must be saved from seeing her, he must\nbe saved even from the torturing knowledge that that awful woman was in\nthe same town with him, and that he might meet her any minute.\n\nLidia Ivanovna made inquiries through her friends as to what those\n_infamous people_, as she called Anna and Vronsky, intended doing, and\nshe endeavored so to guide every movement of her friend during those\ndays that he could not come across them. The young adjutant, an\nacquaintance of Vronsky, through whom she obtained her information, and\nwho hoped through Countess Lidia Ivanovna to obtain a concession, told\nher that they had finished their business and were going away next day.\nLidia Ivanovna had already begun to calm down, when the next morning a\nnote was brought her, the handwriting of which she recognized with\nhorror. It was the handwriting of Anna Karenina. The envelope was of\npaper as thick as bark; on the oblong yellow paper there was a huge\nmonogram, and the letter smelt of agreeable scent.\n\n\"Who brought it?\"\n\n\"A commissionaire from the hotel.\"\n\nIt was some time before Countess Lidia Ivanovna could sit down to read\nthe letter. Her excitement brought on an attack of asthma, to which she\nwas subject. When she had recovered her composure, she read the\nfollowing letter in French:\n\n    \"Madame la Comtesse,\n\n    \"The Christian feelings with which your heart is filled give me\n    the, I feel, unpardonable boldness to write to you. I am\n    miserable at being separated from my son. I entreat permission\n    to see him once before my departure. Forgive me for recalling\n    myself to your memory. I apply to you and not to Alexey\n    Alexandrovitch, simply because I do not wish to cause that\n    generous man to suffer in remembering me. Knowing your\n    friendship for him, I know you will understand me. Could you\n    send Seryozha to me, or should I come to the house at some fixed\n    hour, or will you let me know when and where I could see him\n    away from home? I do not anticipate a refusal, knowing the\n    magnanimity of him with whom it rests. You cannot conceive the\n    craving I have to see him, and so cannot conceive the gratitude\n    your help will arouse in me.\n\n                                                               Anna\"\n\nEverything in this letter exasperated Countess Lidia Ivanovna: its\ncontents and the allusion to magnanimity, and especially its free and\neasy--as she considered--tone.\n\n\"Say that there is no answer,\" said Countess Lidia Ivanovna, and\nimmediately opening her blotting-book, she wrote to Alexey\nAlexandrovitch that she hoped to see him at one o'clock at the levee.\n\n\"I must talk with you of a grave and painful subject. There we will\narrange where to meet. Best of all at my house, where I will order tea\n_as you like it_. Urgent. He lays the cross, but He gives the strength\nto bear it,\" she added, so as to give him some slight preparation.\nCountess Lidia Ivanovna usually wrote some two or three letters a day to\nAlexey Alexandrovitch. She enjoyed that form of communication, which\ngave opportunity for a refinement and air of mystery not afforded by\ntheir personal interviews.\n\n\n\nChapter 24\n\n\nThe levee was drawing to a close. People met as they were going away,\nand gossiped of the latest news, of the newly bestowed honors and the\nchanges in the positions of the higher functionaries.\n\n\"If only Countess Marya Borissovna were Minister of War, and Princess\nVatkovskaya were Commander-in-Chief,\" said a gray-headed, little old man\nin a gold-embroidered uniform, addressing a tall, handsome maid of honor\nwho had questioned him about the new appointments.\n\n\"And me among the adjutants,\" said the maid of honor, smiling.\n\n\"You have an appointment already. You're over the ecclesiastical\ndepartment. And your assistant's Karenin.\"\n\n\"Good-day, prince!\" said the little old man to a man who came up to him.\n\n\"What were you saying of Karenin?\" said the prince.\n\n\"He and Putyatov have received the Alexander Nevsky.\"\n\n\"I thought he had it already.\"\n\n\"No. Just look at him,\" said the little old man, pointing with his\nembroidered hat to Karenin in a court uniform with the new red ribbon\nacross his shoulders, standing in the doorway of the hall with an\ninfluential member of the Imperial Council. \"Pleased and happy as a\nbrass farthing,\" he added, stopping to shake hands with a handsome\ngentleman of the bedchamber of colossal proportions.\n\n\"No; he's looking older,\" said the gentleman of the bedchamber.\n\n\"From overwork. He's always drawing up projects nowadays. He won't let a\npoor devil go nowadays till he's explained it all to him under heads.\"\n\n\"Looking older, did you say? _Il fait des passions_. I believe Countess\nLidia Ivanovna's jealous now of his wife.\"\n\n\"Oh, come now, please don't say any harm of Countess Lidia Ivanovna.\"\n\n\"Why, is there any harm in her being in love with Karenin?\"\n\n\"But is it true Madame Karenina's here?\"\n\n\"Well, not here in the palace, but in Petersburg. I met her yesterday\nwith Alexey Vronsky, _bras dessous, bras dessous_, in the Morsky.\"\n\n\"C'est un homme qui n'a pas...\" the gentleman of the bedchamber was\nbeginning, but he stopped to make room, bowing, for a member of the\nImperial family to pass.\n\nThus people talked incessantly of Alexey Alexandrovitch, finding fault\nwith him and laughing at him, while he, blocking up the way of the\nmember of the Imperial Council he had captured, was explaining to him\npoint by point his new financial project, never interrupting his\ndiscourse for an instant for fear he should escape.\n\nAlmost at the same time that his wife left Alexey Alexandrovitch there\nhad come to him that bitterest moment in the life of an official--the\nmoment when his upward career comes to a full stop. This full stop had\narrived and everyone perceived it, but Alexey Alexandrovitch himself was\nnot yet aware that his career was over. Whether it was due to his feud\nwith Stremov, or his misfortune with his wife, or simply that Alexey\nAlexandrovitch had reached his destined limits, it had become evident to\neveryone in the course of that year that his career was at an end. He\nstill filled a position of consequence, he sat on many commissions and\ncommittees, but he was a man whose day was over, and from whom nothing\nwas expected. Whatever he said, whatever he proposed, was heard as\nthough it were something long familiar, and the very thing that was not\nneeded. But Alexey Alexandrovitch was not aware of this, and, on the\ncontrary, being cut off from direct participation in governmental\nactivity, he saw more clearly than ever the errors and defects in the\naction of others, and thought it his duty to point out means for their\ncorrection. Shortly after his separation from his wife, he began writing\nhis first note on the new judicial procedure, the first of the endless\nseries of notes he was destined to write in the future.\n\nAlexey Alexandrovitch did not merely fail to observe his hopeless\nposition in the official world, he was not merely free from anxiety on\nthis head, he was positively more satisfied than ever with his own\nactivity.\n\n\"He that is unmarried careth for the things that belong to the Lord, how\nhe may please the Lord: But he that is married careth for the things\nthat are of the world, how he may please his wife,\" says the Apostle\nPaul, and Alexey Alexandrovitch, who was now guided in every action by\nScripture, often recalled this text. It seemed to him that ever since he\nhad been left without a wife, he had in these very projects of reform\nbeen serving the Lord more zealously than before.\n\nThe unmistakable impatience of the member of the Council trying to get\naway from him did not trouble Alexey Alexandrovitch; he gave up his\nexposition only when the member of the Council, seizing his chance when\none of the Imperial family was passing, slipped away from him.\n\nLeft alone, Alexey Alexandrovitch looked down, collecting his thoughts,\nthen looked casually about him and walked towards the door, where he\nhoped to meet Countess Lidia Ivanovna.\n\n\"And how strong they all are, how sound physically,\" thought Alexey\nAlexandrovitch, looking at the powerfully built gentleman of the\nbedchamber with his well-combed, perfumed whiskers, and at the red neck\nof the prince, pinched by his tight uniform. He had to pass them on his\nway. \"Truly is it said that all the world is evil,\" he thought, with\nanother sidelong glance at the calves of the gentleman of the\nbedchamber.\n\nMoving forward deliberately, Alexey Alexandrovitch bowed with his\ncustomary air of weariness and dignity to the gentleman who had been\ntalking about him, and looking towards the door, his eyes sought\nCountess Lidia Ivanovna.\n\n\"Ah! Alexey Alexandrovitch!\" said the little old man, with a malicious\nlight in his eyes, at the moment when Karenin was on a level with them,\nand was nodding with a frigid gesture, \"I haven't congratulated you\nyet,\" said the old man, pointing to his newly received ribbon.\n\n\"Thank you,\" answered Alexey Alexandrovitch. \"What an _exquisite_ day\ntoday,\" he added, laying emphasis in his peculiar way on the word\n_exquisite_.\n\nThat they laughed at him he was well aware, but he did not expect\nanything but hostility from them; he was used to that by now.\n\nCatching sight of the yellow shoulders of Lidia Ivanovna jutting out\nabove her corset, and her fine pensive eyes bidding him to her, Alexey\nAlexandrovitch smiled, revealing untarnished white teeth, and went\ntowards her.\n\nLidia Ivanovna's dress had cost her great pains, as indeed all her\ndresses had done of late. Her aim in dress was now quite the reverse of\nthat she had pursued thirty years before. Then her desire had been to\nadorn herself with something, and the more adorned the better. Now, on\nthe contrary, she was perforce decked out in a way so inconsistent with\nher age and her figure, that her one anxiety was to contrive that the\ncontrast between these adornments and her own exterior should not be too\nappalling. And as far as Alexey Alexandrovitch was concerned she\nsucceeded, and was in his eyes attractive. For him she was the one\nisland not only of goodwill to him, but of love in the midst of the sea\nof hostility and jeering that surrounded him.\n\nPassing through rows of ironical eyes, he was drawn as naturally to her\nloving glance as a plant to the sun.\n\n\"I congratulate you,\" she said to him, her eyes on his ribbon.\n\nSuppressing a smile of pleasure, he shrugged his shoulders, closing his\neyes, as though to say that that could not be a source of joy to him.\nCountess Lidia Ivanovna was very well aware that it was one of his chief\nsources of satisfaction, though he never admitted it.\n\n\"How is our angel?\" said Countess Lidia Ivanovna, meaning Seryozha.\n\n\"I can't say I was quite pleased with him,\" said Alexey Alexandrovitch,\nraising his eyebrows and opening his eyes. \"And Sitnikov is not\nsatisfied with him.\" (Sitnikov was the tutor to whom Seryozha's secular\neducation had been intrusted.) \"As I have mentioned to you, there's a\nsort of coldness in him towards the most important questions which ought\nto touch the heart of every man and every child....\" Alexey\nAlexandrovitch began expounding his views on the sole question that\ninterested him besides the service--the education of his son.\n\nWhen Alexey Alexandrovitch with Lidia Ivanovna's help had been brought\nback anew to life and activity, he felt it his duty to undertake the\neducation of the son left on his hands. Having never before taken any\ninterest in educational questions, Alexey Alexandrovitch devoted some\ntime to the theoretical study of the subject. After reading several\nbooks on anthropology, education, and didactics, Alexey Alexandrovitch\ndrew up a plan of education, and engaging the best tutor in Petersburg\nto superintend it, he set to work, and the subject continually absorbed\nhim.\n\n\"Yes, but the heart. I see in him his father's heart, and with such a\nheart a child cannot go far wrong,\" said Lidia Ivanovna with enthusiasm.\n\n\"Yes, perhaps.... As for me, I do my duty. It's all I can do.\"\n\n\"You're coming to me,\" said Countess Lidia Ivanovna, after a pause; \"we\nhave to speak of a subject painful for you. I would give anything to\nhave spared you certain memories, but others are not of the same mind. I\nhave received a letter from _her_. _She_ is here in Petersburg.\"\n\nAlexey Alexandrovitch shuddered at the allusion to his wife, but\nimmediately his face assumed the deathlike rigidity which expressed\nutter helplessness in the matter.\n\n\"I was expecting it,\" he said.\n\nCountess Lidia Ivanovna looked at him ecstatically, and tears of rapture\nat the greatness of his soul came into her eyes.\n\n\n\nChapter 25\n\n\nWhen Alexey Alexandrovitch came into the Countess Lidia Ivanovna's snug\nlittle boudoir, decorated with old china and hung with portraits, the\nlady herself had not yet made her appearance.\n\nShe was changing her dress.\n\nA cloth was laid on a round table, and on it stood a china tea service\nand a silver spirit-lamp and tea kettle. Alexey Alexandrovitch looked\nidly about at the endless familiar portraits which adorned the room, and\nsitting down to the table, he opened a New Testament lying upon it. The\nrustle of the countess's silk skirt drew his attention off.\n\n\"Well now, we can sit quietly,\" said Countess Lidia Ivanovna, slipping\nhurriedly with an agitated smile between the table and the sofa, \"and\ntalk over our tea.\"\n\nAfter some words of preparation, Countess Lidia Ivanovna, breathing hard\nand flushing crimson, gave into Alexey Alexandrovitch's hands the letter\nshe had received.\n\nAfter reading the letter, he sat a long while in silence.\n\n\"I don't think I have the right to refuse her,\" he said, timidly lifting\nhis eyes.\n\n\"Dear friend, you never see evil in anyone!\"\n\n\"On the contrary, I see that all is evil. But whether it is just...\"\n\nHis face showed irresolution, and a seeking for counsel, support, and\nguidance in a matter he did not understand.\n\n\"No,\" Countess Lidia Ivanovna interrupted him; \"there are limits to\neverything. I can understand immorality,\" she said, not quite\ntruthfully, since she never could understand that which leads women to\nimmorality; \"but I don't understand cruelty: to whom? to you! How can\nshe stay in the town where you are? No, the longer one lives the more\none learns. And I'm learning to understand your loftiness and her\nbaseness.\"\n\n\"Who is to throw a stone?\" said Alexey Alexandrovitch, unmistakably\npleased with the part he had to play. \"I have forgiven all, and so I\ncannot deprive her of what is exacted by love in her--by her love for\nher son....\"\n\n\"But is that love, my friend? Is it sincere? Admitting that you have\nforgiven--that you forgive--have we the right to work on the feelings of\nthat angel? He looks on her as dead. He prays for her, and beseeches God\nto have mercy on her sins. And it is better so. But now what will he\nthink?\"\n\n\"I had not thought of that,\" said Alexey Alexandrovitch, evidently\nagreeing.\n\nCountess Lidia Ivanovna hid her face in her hands and was silent. She\nwas praying.\n\n\"If you ask my advice,\" she said, having finished her prayer and\nuncovered her face, \"I do not advise you to do this. Do you suppose I\ndon't see how you are suffering, how this has torn open your wounds? But\nsupposing that, as always, you don't think of yourself, what can it lead\nto?--to fresh suffering for you, to torture for the child. If there were\na trace of humanity left in her, she ought not to wish for it herself.\nNo, I have no hesitation in saying I advise not, and if you will intrust\nit to me, I will write to her.\"\n\nAnd Alexey Alexandrovitch consented, and Countess Lidia Ivanovna sent\nthe following letter in French:\n\n    \"Dear Madame,\n\n    \"To be reminded of you might have results for your son in\n    leading to questions on his part which could not be answered\n    without implanting in the child's soul a spirit of censure\n    towards what should be for him sacred, and therefore I beg you\n    to interpret your husband's refusal in the spirit of Christian\n    love. I pray to Almighty God to have mercy on you.\n\n                                                     Countess Lidia\"\n\nThis letter attained the secret object which Countess Lidia Ivanovna had\nconcealed from herself. It wounded Anna to the quick.\n\nFor his part, Alexey Alexandrovitch, on returning home from Lidia\nIvanovna's, could not all that day concentrate himself on his usual\npursuits, and find that spiritual peace of one saved and believing which\nhe had felt of late.\n\nThe thought of his wife, who had so greatly sinned against him, and\ntowards whom he had been so saintly, as Countess Lidia Ivanovna had so\njustly told him, ought not to have troubled him; but he was not easy; he\ncould not understand the book he was reading; he could not drive away\nharassing recollections of his relations with her, of the mistake which,\nas it now seemed, he had made in regard to her. The memory of how he had\nreceived her confession of infidelity on their way home from the races\n(especially that he had insisted only on the observance of external\ndecorum, and had not sent a challenge) tortured him like a remorse. He\nwas tortured too by the thought of the letter he had written her; and\nmost of all, his forgiveness, which nobody wanted, and his care of the\nother man's child made his heart burn with shame and remorse.\n\nAnd just the same feeling of shame and regret he felt now, as he\nreviewed all his past with her, recalling the awkward words in which,\nafter long wavering, he had made her an offer.\n\n\"But how have I been to blame?\" he said to himself. And this question\nalways excited another question in him--whether they felt differently,\ndid their loving and marrying differently, these Vronskys and Oblonskys\n... these gentlemen of the bedchamber, with their fine calves. And there\npassed before his mind a whole series of these mettlesome, vigorous,\nself-confident men, who always and everywhere drew his inquisitive\nattention in spite of himself. He tried to dispel these thoughts, he\ntried to persuade himself that he was not living for this transient\nlife, but for the life of eternity, and that there was peace and love in\nhis heart.\n\nBut the fact that he had in this transient, trivial life made, as it\nseemed to him, a few trivial mistakes tortured him as though the eternal\nsalvation in which he believed had no existence. But this temptation did\nnot last long, and soon there was reestablished once more in Alexey\nAlexandrovitch's soul the peace and the elevation by virtue of which he\ncould forget what he did not want to remember.\n\n\n\nChapter 26\n\n\n\"Well, Kapitonitch?\" said Seryozha, coming back rosy and good-humored\nfrom his walk the day before his birthday, and giving his overcoat to\nthe tall old hall porter, who smiled down at the little person from the\nheight of his long figure. \"Well, has the bandaged clerk been here\ntoday? Did papa see him?\"\n\n\"He saw him. The minute the chief secretary came out, I announced him,\"\nsaid the hall porter with a good-humored wink. \"Here, I'll take it off.\"\n\n\"Seryozha!\" said the tutor, stopping in the doorway leading to the inner\nrooms. \"Take it off yourself.\" But Seryozha, though he heard his tutor's\nfeeble voice, did not pay attention to it. He stood keeping hold of the\nhall porter's belt, and gazing into his face.\n\n\"Well, and did papa do what he wanted for him?\"\n\nThe hall porter nodded his head affirmatively. The clerk with his face\ntied up, who had already been seven times to ask some favor of Alexey\nAlexandrovitch, interested both Seryozha and the hall porter. Seryozha\nhad come upon him in the hall, and had heard him plaintively beg the\nhall porter to announce him, saying that he and his children had death\nstaring them in the face.\n\nSince then Seryozha, having met him a second time in the hall, took\ngreat interest in him.\n\n\"Well, was he very glad?\" he asked.\n\n\"Glad? I should think so! Almost dancing as he walked away.\"\n\n\"And has anything been left?\" asked Seryozha, after a pause.\n\n\"Come, sir,\" said the hall-porter; then with a shake of his head he\nwhispered, \"Something from the countess.\"\n\nSeryozha understood at once that what the hall porter was speaking of\nwas a present from Countess Lidia Ivanovna for his birthday.\n\n\"What do you say? Where?\"\n\n\"Korney took it to your papa. A fine plaything it must be too!\"\n\n\"How big? Like this?\"\n\n\"Rather small, but a fine thing.\"\n\n\"A book.\"\n\n\"No, a thing. Run along, run along, Vassily Lukitch is calling you,\"\nsaid the porter, hearing the tutor's steps approaching, and carefully\ntaking away from his belt the little hand in the glove half pulled off,\nhe signed with his head towards the tutor.\n\n\"Vassily Lukitch, in a tiny minute!\" answered Seryozha with that gay and\nloving smile which always won over the conscientious Vassily Lukitch.\n\nSeryozha was too happy, everything was too delightful for him to be able\nto help sharing with his friend the porter the family good fortune of\nwhich he had heard during his walk in the public gardens from Lidia\nIvanovna's niece. This piece of good news seemed to him particularly\nimportant from its coming at the same time with the gladness of the\nbandaged clerk and his own gladness at toys having come for him. It\nseemed to Seryozha that this was a day on which everyone ought to be\nglad and happy.\n\n\"You know papa's received the Alexander Nevsky today?\"\n\n\"To be sure I do! People have been already to congratulate him.\"\n\n\"And is he glad?\"\n\n\"Glad at the Tsar's gracious favor! I should think so! It's a proof he's\ndeserved it,\" said the porter severely and seriously.\n\nSeryozha fell to dreaming, gazing up at the face of the porter, which he\nhad thoroughly studied in every detail, especially the chin that hung\ndown between the gray whiskers, never seen by anyone but Seryozha, who\nsaw him only from below.\n\n\"Well, and has your daughter been to see you lately?\"\n\nThe porter's daughter was a ballet dancer.\n\n\"When is she to come on week-days? They've their lessons to learn too.\nAnd you've your lesson, sir; run along.\"\n\nOn coming into the room, Seryozha, instead of sitting down to his\nlessons, told his tutor of his supposition that what had been brought\nhim must be a machine. \"What do you think?\" he inquired.\n\nBut Vassily Lukitch was thinking of nothing but the necessity of\nlearning the grammar lesson for the teacher, who was coming at two.\n\n\"No, do just tell me, Vassily Lukitch,\" he asked suddenly, when he was\nseated at their work table with the book in his hands, \"what is greater\nthan the Alexander Nevsky? You know papa's received the Alexander\nNevsky?\"\n\nVassily Lukitch replied that the Vladimir was greater than the Alexander\nNevsky.\n\n\"And higher still?\"\n\n\"Well, highest of all is the Andrey Pervozvanny.\"\n\n\"And higher than the Andrey?\"\n\n\"I don't know.\"\n\n\"What, you don't know?\" and Seryozha, leaning on his elbows, sank into\ndeep meditation.\n\nHis meditations were of the most complex and diverse character. He\nimagined his father's having suddenly been presented with both the\nVladimir and the Andrey today, and in consequence being much better\ntempered at his lesson, and dreamed how, when he was grown up, he would\nhimself receive all the orders, and what they might invent higher than\nthe Andrey. Directly any higher order were invented, he would win it.\nThey would make a higher one still, and he would immediately win that\ntoo.\n\nThe time passed in such meditations, and when the teacher came, the\nlesson about the adverbs of place and time and manner of action was not\nready, and the teacher was not only displeased, but hurt. This touched\nSeryozha. He felt he was not to blame for not having learned the lesson;\nhowever much he tried, he was utterly unable to do that. As long as the\nteacher was explaining to him, he believed him and seemed to comprehend,\nbut as soon as he was left alone, he was positively unable to recollect\nand to understand that the short and familiar word \"suddenly\" is an\nadverb of manner of action. Still he was sorry that he had disappointed\nthe teacher.\n\nHe chose a moment when the teacher was looking in silence at the book.\n\n\"Mihail Ivanitch, when is your birthday?\" he asked all, of a sudden.\n\n\"You'd much better be thinking about your work. Birthdays are of no\nimportance to a rational being. It's a day like any other on which one\nhas to do one's work.\"\n\nSeryozha looked intently at the teacher, at his scanty beard, at his\nspectacles, which had slipped down below the ridge on his nose, and fell\ninto so deep a reverie that he heard nothing of what the teacher was\nexplaining to him. He knew that the teacher did not think what he said;\nhe felt it from the tone in which it was said. \"But why have they all\nagreed to speak just in the same manner always the dreariest and most\nuseless stuff? Why does he keep me off; why doesn't he love me?\" he\nasked himself mournfully, and could not think of an answer.\n\n\n\nChapter 27\n\n\nAfter the lesson with the grammar teacher came his father's lesson.\nWhile waiting for his father, Seryozha sat at the table playing with a\npenknife, and fell to dreaming. Among Seryozha's favorite occupations\nwas searching for his mother during his walks. He did not believe in\ndeath generally, and in her death in particular, in spite of what Lidia\nIvanovna had told him and his father had confirmed, and it was just\nbecause of that, and after he had been told she was dead, that he had\nbegun looking for her when out for a walk. Every woman of full, graceful\nfigure with dark hair was his mother. At the sight of such a woman such\na feeling of tenderness was stirred within him that his breath failed\nhim, and tears came into his eyes. And he was on the tiptoe of\nexpectation that she would come up to him, would lift her veil. All her\nface would be visible, she would smile, she would hug him, he would\nsniff her fragrance, feel the softness of her arms, and cry with\nhappiness, just as he had one evening lain on her lap while she tickled\nhim, and he laughed and bit her white, ring-covered fingers. Later, when\nhe accidentally learned from his old nurse that his mother was not dead,\nand his father and Lidia Ivanovna had explained to him that she was dead\nto him because she was wicked (which he could not possibly believe,\nbecause he loved her), he went on seeking her and expecting her in the\nsame way. That day in the public gardens there had been a lady in a\nlilac veil, whom he had watched with a throbbing heart, believing it to\nbe she as she came towards them along the path. The lady had not come up\nto them, but had disappeared somewhere. That day, more intensely than\never, Seryozha felt a rush of love for her, and now, waiting for his\nfather, he forgot everything, and cut all round the edge of the table\nwith his penknife, staring straight before him with sparkling eyes and\ndreaming of her.\n\n\"Here is your papa!\" said Vassily Lukitch, rousing him.\n\nSeryozha jumped up and went up to his father, and kissing his hand,\nlooked at him intently, trying to discover signs of his joy at receiving\nthe Alexander Nevsky.\n\n\"Did you have a nice walk?\" said Alexey Alexandrovitch, sitting down in\nhis easy chair, pulling the volume of the Old Testament to him and\nopening it. Although Alexey Alexandrovitch had more than once told\nSeryozha that every Christian ought to know Scripture history\nthoroughly, he often referred to the Bible himself during the lesson,\nand Seryozha observed this.\n\n\"Yes, it was very nice indeed, papa,\" said Seryozha, sitting sideways on\nhis chair and rocking it, which was forbidden. \"I saw Nadinka\" (Nadinka\nwas a niece of Lidia Ivanovna's who was being brought up in her house).\n\"She told me you'd been given a new star. Are you glad, papa?\"\n\n\"First of all, don't rock your chair, please,\" said Alexey\nAlexandrovitch. \"And secondly, it's not the reward that's precious, but\nthe work itself. And I could have wished you understood that. If you now\nare going to work, to study in order to win a reward, then the work will\nseem hard to you; but when you work\" (Alexey Alexandrovitch, as he\nspoke, thought of how he had been sustained by a sense of duty through\nthe wearisome labor of the morning, consisting of signing one hundred\nand eighty papers), \"loving your work, you will find your reward in it.\"\n\nSeryozha's eyes, that had been shining with gaiety and tenderness, grew\ndull and dropped before his father's gaze. This was the same\nlong-familiar tone his father always took with him, and Seryozha had\nlearned by now to fall in with it. His father always talked to him--so\nSeryozha felt--as though he were addressing some boy of his own\nimagination, one of those boys that exist in books, utterly unlike\nhimself. And Seryozha always tried with his father to act being the\nstory-book boy.\n\n\"You understand that, I hope?\" said his father.\n\n\"Yes, papa,\" answered Seryozha, acting the part of the imaginary boy.\n\nThe lesson consisted of learning by heart several verses out of the\nGospel and the repetition of the beginning of the Old Testament. The\nverses from the Gospel Seryozha knew fairly well, but at the moment when\nhe was saying them he became so absorbed in watching the sharply\nprotruding, bony knobbiness of his father's forehead, that he lost the\nthread, and he transposed the end of one verse and the beginning of\nanother. So it was evident to Alexey Alexandrovitch that he did not\nunderstand what he was saying, and that irritated him.\n\nHe frowned, and began explaining what Seryozha had heard many times\nbefore and never could remember, because he understood it too well, just\nas that \"suddenly\" is an adverb of manner of action. Seryozha looked\nwith scared eyes at his father, and could think of nothing but whether\nhis father would make him repeat what he had said, as he sometimes did.\nAnd this thought so alarmed Seryozha that he now understood nothing. But\nhis father did not make him repeat it, and passed on to the lesson out\nof the Old Testament. Seryozha recounted the events themselves well\nenough, but when he had to answer questions as to what certain events\nprefigured, he knew nothing, though he had already been punished over\nthis lesson. The passage at which he was utterly unable to say anything,\nand began fidgeting and cutting the table and swinging his chair, was\nwhere he had to repeat the patriarchs before the Flood. He did not know\none of them, except Enoch, who had been taken up alive to heaven. Last\ntime he had remembered their names, but now he had forgotten them\nutterly, chiefly because Enoch was the personage he liked best in the\nwhole of the Old Testament, and Enoch's translation to heaven was\nconnected in his mind with a whole long train of thought, in which he\nbecame absorbed now while he gazed with fascinated eyes at his father's\nwatch-chain and a half-unbuttoned button on his waistcoat.\n\nIn death, of which they talked to him so often, Seryozha disbelieved\nentirely. He did not believe that those he loved could die, above all\nthat he himself would die. That was to him something utterly\ninconceivable and impossible. But he had been told that all men die; he\nhad asked people, indeed, whom he trusted, and they too, had confirmed\nit; his old nurse, too, said the same, though reluctantly. But Enoch had\nnot died, and so it followed that everyone did not die. \"And why cannot\nanyone else so serve God and be taken alive to heaven?\" thought\nSeryozha. Bad people, that is those Seryozha did not like, they might\ndie, but the good might all be like Enoch.\n\n\"Well, what are the names of the patriarchs?\"\n\n\"Enoch, Enos--\"\n\n\"But you have said that already. This is bad, Seryozha, very bad. If you\ndon't try to learn what is more necessary than anything for a\nChristian,\" said his father, getting up, \"whatever can interest you? I\nam displeased with you, and Piotr Ignatitch\" (this was the most\nimportant of his teachers) \"is displeased with you.... I shall have to\npunish you.\"\n\nHis father and his teacher were both displeased with Seryozha, and he\ncertainly did learn his lessons very badly. But still it could not be\nsaid he was a stupid boy. On the contrary, he was far cleverer than the\nboys his teacher held up as examples to Seryozha. In his father's\nopinion, he did not want to learn what he was taught. In reality he\ncould not learn that. He could not, because the claims of his own soul\nwere more binding on him than those claims his father and his teacher\nmade upon him. Those claims were in opposition, and he was in direct\nconflict with his education. He was nine years old; he was a child; but\nhe knew his own soul, it was precious to him, he guarded it as the\neyelid guards the eye, and without the key of love he let no one into\nhis soul. His teachers complained that he would not learn, while his\nsoul was brimming over with thirst for knowledge. And he learned from\nKapitonitch, from his nurse, from Nadinka, from Vassily Lukitch, but not\nfrom his teachers. The spring his father and his teachers reckoned upon\nto turn their mill-wheels had long dried up at the source, but its\nwaters did their work in another channel.\n\nHis father punished Seryozha by not letting him go to see Nadinka, Lidia\nIvanovna's niece; but this punishment turned out happily for Seryozha.\nVassily Lukitch was in a good humor, and showed him how to make\nwindmills. The whole evening passed over this work and in dreaming how\nto make a windmill on which he could turn himself--clutching at the\nsails or tying himself on and whirling round. Of his mother Seryozha did\nnot think all the evening, but when he had gone to bed, he suddenly\nremembered her, and prayed in his own words that his mother tomorrow for\nhis birthday might leave off hiding herself and come to him.\n\n\"Vassily Lukitch, do you know what I prayed for tonight extra besides\nthe regular things?\"\n\n\"That you might learn your lessons better?\"\n\n\"No.\"\n\n\"Toys?\"\n\n\"No. You'll never guess. A splendid thing; but it's a secret! When it\ncomes to pass I'll tell you. Can't you guess!\"\n\n\"No, I can't guess. You tell me,\" said Vassily Lukitch with a smile,\nwhich was rare with him. \"Come, lie down, I'm putting out the candle.\"\n\n\"Without the candle I can see better what I see and what I prayed for.\nThere! I was almost telling the secret!\" said Seryozha, laughing gaily.\n\nWhen the candle was taken away, Seryozha heard and felt his mother. She\nstood over him, and with loving eyes caressed him. But then came\nwindmills, a knife, everything began to be mixed up, and he fell asleep.\n\n\n\nChapter 28\n\n\nOn arriving in Petersburg, Vronsky and Anna stayed at one of the best\nhotels; Vronsky apart in a lower story, Anna above with her child, its\nnurse, and her maid, in a large suite of four rooms.\n\nOn the day of his arrival Vronsky went to his brother's. There he found\nhis mother, who had come from Moscow on business. His mother and\nsister-in-law greeted him as usual: they asked him about his stay\nabroad, and talked of their common acquaintances, but did not let drop a\nsingle word in allusion to his connection with Anna. His brother came\nthe next morning to see Vronsky, and of his own accord asked him about\nher, and Alexey Vronsky told him directly that he looked upon his\nconnection with Madame Karenina as marriage; that he hoped to arrange a\ndivorce, and then to marry her, and until then he considered her as much\na wife as any other wife, and he begged him to tell their mother and his\nwife so.\n\n\"If the world disapproves, I don't care,\" said Vronsky; \"but if my\nrelations want to be on terms of relationship with me, they will have to\nbe on the same terms with my wife.\"\n\nThe elder brother, who had always a respect for his younger brother's\njudgment, could not well tell whether he was right or not till the world\nhad decided the question; for his part he had nothing against it, and\nwith Alexey he went up to see Anna.\n\nBefore his brother, as before everyone, Vronsky addressed Anna with a\ncertain formality, treating her as he might a very intimate friend, but\nit was understood that his brother knew their real relations, and they\ntalked about Anna's going to Vronsky's estate.\n\nIn spite of all his social experience Vronsky was, in consequence of the\nnew position in which he was placed, laboring under a strange\nmisapprehension. One would have thought he must have understood that\nsociety was closed for him and Anna; but now some vague ideas had sprung\nup in his brain that this was only the case in old-fashioned days, and\nthat now with the rapidity of modern progress (he had unconsciously\nbecome by now a partisan of every sort of progress) the views of society\nhad changed, and that the question whether they would be received in\nsociety was not a foregone conclusion. \"Of course,\" he thought, \"she\nwould not be received at court, but intimate friends can and must look\nat it in the proper light.\" One may sit for several hours at a stretch\nwith one's legs crossed in the same position, if one knows that there's\nnothing to prevent one's changing one's position; but if a man knows\nthat he must remain sitting so with crossed legs, then cramps come on,\nthe legs begin to twitch and to strain towards the spot to which one\nwould like to draw them. This was what Vronsky was experiencing in\nregard to the world. Though at the bottom of his heart he knew that the\nworld was shut on them, he put it to the test whether the world had not\nchanged by now and would not receive them. But he very quickly perceived\nthat though the world was open for him personally, it was closed for\nAnna. Just as in the game of cat and mouse, the hands raised for him\nwere dropped to bar the way for Anna.\n\nOne of the first ladies of Petersburg society whom Vronsky saw was his\ncousin Betsy.\n\n\"At last!\" she greeted him joyfully. \"And Anna? How glad I am! Where are\nyou stopping? I can fancy after your delightful travels you must find\nour poor Petersburg horrid. I can fancy your honeymoon in Rome. How\nabout the divorce? Is that all over?\"\n\nVronsky noticed that Betsy's enthusiasm waned when she learned that no\ndivorce had as yet taken place.\n\n\"People will throw stones at me, I know,\" she said, \"but I shall come\nand see Anna; yes, I shall certainly come. You won't be here long, I\nsuppose?\"\n\nAnd she did certainly come to see Anna the same day, but her tone was\nnot at all the same as in former days. She unmistakably prided herself\non her courage, and wished Anna to appreciate the fidelity of her\nfriendship. She only stayed ten minutes, talking of society gossip, and\non leaving she said:\n\n\"You've never told me when the divorce is to be? Supposing I'm ready to\nfling my cap over the mill, other starchy people will give you the cold\nshoulder until you're married. And that's so simple nowadays. _Ca se\nfait_. So you're going on Friday? Sorry we shan't see each other again.\"\n\nFrom Betsy's tone Vronsky might have grasped what he had to expect from\nthe world; but he made another effort in his own family. His mother he\ndid not reckon upon. He knew that his mother, who had been so\nenthusiastic over Anna at their first acquaintance, would have no mercy\non her now for having ruined her son's career. But he had more hope of\nVarya, his brother's wife. He fancied she would not throw stones, and\nwould go simply and directly to see Anna, and would receive her in her\nown house.\n\nThe day after his arrival Vronsky went to her, and finding her alone,\nexpressed his wishes directly.\n\n\"You know, Alexey,\" she said after hearing him, \"how fond I am of you,\nand how ready I am to do anything for you; but I have not spoken,\nbecause I knew I could be of no use to you and to Anna Arkadyevna,\" she\nsaid, articulating the name \"Anna Arkadyevna\" with particular care.\n\"Don't suppose, please, that I judge her. Never; perhaps in her place I\nshould have done the same. I don't and can't enter into that,\" she said,\nglancing timidly at his gloomy face. \"But one must call things by their\nnames. You want me to go and see her, to ask her here, and to\nrehabilitate her in society; but do understand that I _cannot_ do so. I\nhave daughters growing up, and I must live in the world for my husband's\nsake. Well, I'm ready to come and see Anna Arkadyevna: she will\nunderstand that I can't ask her here, or I should have to do so in such\na way that she would not meet people who look at things differently;\nthat would offend her. I can't raise her...\"\n\n\"Oh, I don't regard her as fallen more than hundreds of women you do\nreceive!\" Vronsky interrupted her still more gloomily, and he got up in\nsilence, understanding that his sister-in-law's decision was not to be\nshaken.\n\n\"Alexey! don't be angry with me. Please understand that I'm not to\nblame,\" began Varya, looking at him with a timid smile.\n\n\"I'm not angry with you,\" he said still as gloomily; \"but I'm sorry in\ntwo ways. I'm sorry, too, that this means breaking up our friendship--if\nnot breaking up, at least weakening it. You will understand that for me,\ntoo, it cannot be otherwise.\"\n\nAnd with that he left her.\n\nVronsky knew that further efforts were useless, and that he had to spend\nthese few days in Petersburg as though in a strange town, avoiding every\nsort of relation with his own old circle in order not to be exposed to\nthe annoyances and humiliations which were so intolerable to him. One of\nthe most unpleasant features of his position in Petersburg was that\nAlexey Alexandrovitch and his name seemed to meet him everywhere. He\ncould not begin to talk of anything without the conversation turning on\nAlexey Alexandrovitch; he could not go anywhere without risk of meeting\nhim. So at least it seemed to Vronsky, just as it seems to a man with a\nsore finger that he is continually, as though on purpose, grazing his\nsore finger on everything.\n\nTheir stay in Petersburg was the more painful to Vronsky that he\nperceived all the time a sort of new mood that he could not understand\nin Anna. At one time she would seem in love with him, and then she would\nbecome cold, irritable, and impenetrable. She was worrying over\nsomething, and keeping something back from him, and did not seem to\nnotice the humiliations which poisoned his existence, and for her, with\nher delicate intuition, must have been still more unbearable.\n\n\n\nChapter 29\n\n\nOne of Anna's objects in coming back to Russia had been to see her son.\nFrom the day she left Italy the thought of it had never ceased to\nagitate her. And as she got nearer to Petersburg, the delight and\nimportance of this meeting grew ever greater in her imagination. She did\nnot even put to herself the question how to arrange it. It seemed to her\nnatural and simple to see her son when she should be in the same town\nwith him. But on her arrival in Petersburg she was suddenly made\ndistinctly aware of her present position in society, and she grasped the\nfact that to arrange this meeting was no easy matter.\n\nShe had now been two days in Petersburg. The thought of her son never\nleft her for a single instant, but she had not yet seen him. To go\nstraight to the house, where she might meet Alexey Alexandrovitch, that\nshe felt she had no right to do. She might be refused admittance and\ninsulted. To write and so enter into relations with her husband--that it\nmade her miserable to think of doing; she could only be at peace when\nshe did not think of her husband. To get a glimpse of her son out\nwalking, finding out where and when he went out, was not enough for her;\nshe had so looked forward to this meeting, she had so much she must say\nto him, she so longed to embrace him, to kiss him. Seryozha's old nurse\nmight be a help to her and show her what to do. But the nurse was not\nnow living in Alexey Alexandrovitch's house. In this uncertainty, and in\nefforts to find the nurse, two days had slipped by.\n\nHearing of the close intimacy between Alexey Alexandrovitch and Countess\nLidia Ivanovna, Anna decided on the third day to write to her a letter,\nwhich cost her great pains, and in which she intentionally said that\npermission to see her son must depend on her husband's generosity. She\nknew that if the letter were shown to her husband, he would keep up his\ncharacter of magnanimity, and would not refuse her request.\n\nThe commissionaire who took the letter had brought her back the most\ncruel and unexpected answer, that there was no answer. She had never\nfelt so humiliated as at the moment when, sending for the\ncommissionaire, she heard from him the exact account of how he had\nwaited, and how afterwards he had been told there was no answer. Anna\nfelt humiliated, insulted, but she saw that from her point of view\nCountess Lidia Ivanovna was right. Her suffering was the more poignant\nthat she had to bear it in solitude. She could not and would not share\nit with Vronsky. She knew that to him, although he was the primary cause\nof her distress, the question of her seeing her son would seem a matter\nof very little consequence. She knew that he would never be capable of\nunderstanding all the depth of her suffering, that for his cool tone at\nany allusion to it she would begin to hate him. And she dreaded that\nmore than anything in the world, and so she hid from him everything that\nrelated to her son. Spending the whole day at home she considered ways\nof seeing her son, and had reached a decision to write to her husband.\nShe was just composing this letter when she was handed the letter from\nLidia Ivanovna. The countess's silence had subdued and depressed her,\nbut the letter, all that she read between the lines in it, so\nexasperated her, this malice was so revolting beside her passionate,\nlegitimate tenderness for her son, that she turned against other people\nand left off blaming herself.\n\n\"This coldness--this pretense of feeling!\" she said to herself. \"They\nmust needs insult me and torture the child, and I am to submit to it!\nNot on any consideration! She is worse than I am. I don't lie, anyway.\"\nAnd she decided on the spot that next day, Seryozha's birthday, she\nwould go straight to her husband's house, bribe or deceive the servants,\nbut at any cost see her son and overturn the hideous deception with\nwhich they were encompassing the unhappy child.\n\nShe went to a toy shop, bought toys and thought over a plan of action.\nShe would go early in the morning at eight o'clock, when Alexey\nAlexandrovitch would be certain not to be up. She would have money in\nher hand to give the hall porter and the footman, so that they should\nlet her in, and not raising her veil, she would say that she had come\nfrom Seryozha's godfather to congratulate him, and that she had been\ncharged to leave the toys at his bedside. She had prepared everything\nbut the words she should say to her son. Often as she had dreamed of it,\nshe could never think of anything.\n\nThe next day, at eight o'clock in the morning, Anna got out of a hired\nsledge and rang at the front entrance of her former home.\n\n\"Run and see what's wanted. Some lady,\" said Kapitonitch, who, not yet\ndressed, in his overcoat and galoshes, had peeped out of the window and\nseen a lady in a veil standing close up to the door. His assistant, a\nlad Anna did not know, had no sooner opened the door to her than she\ncame in, and pulling a three-rouble note out of her muff put it\nhurriedly into his hand.\n\n\"Seryozha--Sergey Alexeitch,\" she said, and was going on. Scrutinizing\nthe note, the porter's assistant stopped her at the second glass door.\n\n\"Whom do you want?\" he asked.\n\nShe did not hear his words and made no answer.\n\nNoticing the embarrassment of the unknown lady, Kapitonitch went out to\nher, opened the second door for her, and asked her what she was pleased\nto want.\n\n\"From Prince Skorodumov for Sergey Alexeitch,\" she said.\n\n\"His honor's not up yet,\" said the porter, looking at her attentively.\n\nAnna had not anticipated that the absolutely unchanged hall of the house\nwhere she had lived for nine years would so greatly affect her. Memories\nsweet and painful rose one after another in her heart, and for a moment\nshe forgot what she was here for.\n\n\"Would you kindly wait?\" said Kapitonitch, taking off her fur cloak.\n\nAs he took off the cloak, Kapitonitch glanced at her face, recognized\nher, and made her a low bow in silence.\n\n\"Please walk in, your excellency,\" he said to her.\n\nShe tried to say something, but her voice refused to utter any sound;\nwith a guilty and imploring glance at the old man she went with light,\nswift steps up the stairs. Bent double, and his galoshes catching in the\nsteps, Kapitonitch ran after her, trying to overtake her.\n\n\"The tutor's there; maybe he's not dressed. I'll let him know.\"\n\nAnna still mounted the familiar staircase, not understanding what the\nold man was saying.\n\n\"This way, to the left, if you please. Excuse its not being tidy. His\nhonor's in the old parlor now,\" the hall porter said, panting. \"Excuse\nme, wait a little, your excellency; I'll just see,\" he said, and\novertaking her, he opened the high door and disappeared behind it. Anna\nstood still waiting. \"He's only just awake,\" said the hall porter,\ncoming out. And at the very instant the porter said this, Anna caught\nthe sound of a childish yawn. From the sound of this yawn alone she knew\nher son and seemed to see him living before her eyes.\n\n\"Let me in; go away!\" she said, and went in through the high doorway. On\nthe right of the door stood a bed, and sitting up in the bed was the\nboy. His little body bent forward with his nightshirt unbuttoned, he was\nstretching and still yawning. The instant his lips came together they\ncurved into a blissfully sleepy smile, and with that smile he slowly and\ndeliciously rolled back again.\n\n\"Seryozha!\" she whispered, going noiselessly up to him.\n\nWhen she was parted from him, and all this latter time when she had been\nfeeling a fresh rush of love for him, she had pictured him as he was at\nfour years old, when she had loved him most of all. Now he was not even\nthe same as when she had left him; he was still further from the\nfour-year-old baby, more grown and thinner. How thin his face was, how\nshort his hair was! What long hands! How he had changed since she left\nhim! But it was he with his head, his lips, his soft neck and broad\nlittle shoulders.\n\n\"Seryozha!\" she repeated just in the child's ear.\n\nHe raised himself again on his elbow, turned his tangled head from side\nto side as though looking for something, and opened his eyes. Slowly and\ninquiringly he looked for several seconds at his mother standing\nmotionless before him, then all at once he smiled a blissful smile, and\nshutting his eyes, rolled not backwards but towards her into her arms.\n\n\"Seryozha! my darling boy!\" she said, breathing hard and putting her\narms round his plump little body. \"Mother!\" he said, wriggling about in\nher arms so as to touch her hands with different parts of him.\n\nSmiling sleepily still with closed eyes, he flung fat little arms round\nher shoulders, rolled towards her, with the delicious sleepy warmth and\nfragrance that is only found in children, and began rubbing his face\nagainst her neck and shoulders.\n\n\"I know,\" he said, opening his eyes; \"it's my birthday today. I knew\nyou'd come. I'll get up directly.\"\n\nAnd saying that he dropped asleep.\n\nAnna looked at him hungrily; she saw how he had grown and changed in her\nabsence. She knew, and did not know, the bare legs so long now, that\nwere thrust out below the quilt, those short-cropped curls on his neck\nin which she had so often kissed him. She touched all this and could say\nnothing; tears choked her.\n\n\"What are you crying for, mother?\" he said, waking completely up.\n\"Mother, what are you crying for?\" he cried in a tearful voice.\n\n\"I won't cry ... I'm crying for joy. It's so long since I've seen you. I\nwon't, I won't,\" she said, gulping down her tears and turning away.\n\"Come, it's time for you to dress now,\" she added, after a pause, and,\nnever letting go his hands, she sat down by his bedside on the chair,\nwhere his clothes were put ready for him.\n\n\"How do you dress without me? How...\" she tried to begin talking simply\nand cheerfully, but she could not, and again she turned away.\n\n\"I don't have a cold bath, papa didn't order it. And you've not seen\nVassily Lukitch? He'll come in soon. Why, you're sitting on my clothes!\"\n\nAnd Seryozha went off into a peal of laughter. She looked at him and\nsmiled.\n\n\"Mother, darling, sweet one!\" he shouted, flinging himself on her again\nand hugging her. It was as though only now, on seeing her smile, he\nfully grasped what had happened.\n\n\"I don't want that on,\" he said, taking off her hat. And as it were,\nseeing her afresh without her hat, he fell to kissing her again.\n\n\"But what did you think about me? You didn't think I was dead?\"\n\n\"I never believed it.\"\n\n\"You didn't believe it, my sweet?\"\n\n\"I knew, I knew!\" he repeated his favorite phrase, and snatching the\nhand that was stroking his hair, he pressed the open palm to his mouth\nand kissed it.\n\n\n\nChapter 30\n\n\nMeanwhile Vassily Lukitch had not at first understood who this lady was,\nand had learned from their conversation that it was no other person than\nthe mother who had left her husband, and whom he had not seen, as he had\nentered the house after her departure. He was in doubt whether to go in\nor not, or whether to communicate with Alexey Alexandrovitch. Reflecting\nfinally that his duty was to get Seryozha up at the hour fixed, and that\nit was therefore not his business to consider who was there, the mother\nor anyone else, but simply to do his duty, he finished dressing, went to\nthe door and opened it.\n\nBut the embraces of the mother and child, the sound of their voices, and\nwhat they were saying, made him change his mind.\n\nHe shook his head, and with a sigh he closed the door. \"I'll wait\nanother ten minutes,\" he said to himself, clearing his throat and wiping\naway tears.\n\nAmong the servants of the household there was intense excitement all\nthis time. All had heard that their mistress had come, and that\nKapitonitch had let her in, and that she was even now in the nursery,\nand that their master always went in person to the nursery at nine\no'clock, and every one fully comprehended that it was impossible for the\nhusband and wife to meet, and that they must prevent it. Korney, the\nvalet, going down to the hall porter's room, asked who had let her in,\nand how it was he had done so, and ascertaining that Kapitonitch had\nadmitted her and shown her up, he gave the old man a talking-to. The\nhall porter was doggedly silent, but when Korney told him he ought to be\nsent away, Kapitonitch darted up to him, and waving his hands in\nKorney's face, began:\n\n\"Oh yes, to be sure you'd not have let her in! After ten years' service,\nand never a word but of kindness, and there you'd up and say, 'Be off,\ngo along, get away with you!' Oh yes, you're a shrewd one at politics, I\ndare say! You don't need to be taught how to swindle the master, and to\nfilch fur coats!\"\n\n\"Soldier!\" said Korney contemptuously, and he turned to the nurse who\nwas coming in. \"Here, what do you think, Marya Efimovna: he let her in\nwithout a word to anyone,\" Korney said addressing her. \"Alexey\nAlexandrovitch will be down immediately--and go into the nursery!\"\n\n\"A pretty business, a pretty business!\" said the nurse. \"You, Korney\nVassilievitch, you'd best keep him some way or other, the master, while\nI'll run and get her away somehow. A pretty business!\"\n\nWhen the nurse went into the nursery, Seryozha was telling his mother\nhow he and Nadinka had had a fall in sledging downhill, and had turned\nover three times. She was listening to the sound of his voice, watching\nhis face and the play of expression on it, touching his hand, but she\ndid not follow what he was saying. She must go, she must leave\nhim,--this was the only thing she was thinking and feeling. She heard\nthe steps of Vassily Lukitch coming up to the door and coughing; she\nheard, too, the steps of the nurse as she came near; but she sat like\none turned to stone, incapable of beginning to speak or to get up.\n\n\"Mistress, darling!\" began the nurse, going up to Anna and kissing her\nhands and shoulders. \"God has brought joy indeed to our boy on his\nbirthday. You aren't changed one bit.\"\n\n\"Oh, nurse dear, I didn't know you were in the house,\" said Anna,\nrousing herself for a moment.\n\n\"I'm not living here, I'm living with my daughter. I came for the\nbirthday, Anna Arkadyevna, darling!\"\n\nThe nurse suddenly burst into tears, and began kissing her hand again.\n\nSeryozha, with radiant eyes and smiles, holding his mother by one hand\nand his nurse by the other, pattered on the rug with his fat little bare\nfeet. The tenderness shown by his beloved nurse to his mother threw him\ninto an ecstasy.\n\n\"Mother! She often comes to see me, and when she comes...\" he was\nbeginning, but he stopped, noticing that the nurse was saying something\nin a whisper to his mother, and that in his mother's face there was a\nlook of dread and something like shame, which was so strangely\nunbecoming to her.\n\nShe went up to him.\n\n\"My sweet!\" she said.\n\nShe could not say _good-bye_, but the expression on her face said it,\nand he understood. \"Darling, darling Kootik!\" she used the name by which\nshe had called him when he was little, \"you won't forget me? You...\" but\nshe could not say more.\n\nHow often afterwards she thought of words she might have said. But now\nshe did not know how to say it, and could say nothing. But Seryozha knew\nall she wanted to say to him. He understood that she was unhappy and\nloved him. He understood even what the nurse had whispered. He had\ncaught the words \"always at nine o'clock,\" and he knew that this was\nsaid of his father, and that his father and mother could not meet. That\nhe understood, but one thing he could not understand--why there should\nbe a look of dread and shame in her face?... She was not in fault, but\nshe was afraid of him and ashamed of something. He would have liked to\nput a question that would have set at rest this doubt, but he did not\ndare; he saw that she was miserable, and he felt for her. Silently he\npressed close to her and whispered, \"Don't go yet. He won't come just\nyet.\"\n\nThe mother held him away from her to see what he was thinking, what to\nsay to him, and in his frightened face she read not only that he was\nspeaking of his father, but, as it were, asking her what he ought to\nthink about his father.\n\n\"Seryozha, my darling,\" she said, \"love him; he's better and kinder than\nI am, and I have done him wrong. When you grow up you will judge.\"\n\n\"There's no one better than you!...\" he cried in despair through his\ntears, and, clutching her by the shoulders, he began squeezing her with\nall his force to him, his arms trembling with the strain.\n\n\"My sweet, my little one!\" said Anna, and she cried as weakly and\nchildishly as he.\n\nAt that moment the door opened. Vassily Lukitch came in.\n\nAt the other door there was the sound of steps, and the nurse in a\nscared whisper said, \"He's coming,\" and gave Anna her hat.\n\nSeryozha sank onto the bed and sobbed, hiding his face in his hands.\nAnna removed his hands, once more kissed his wet face, and with rapid\nsteps went to the door. Alexey Alexandrovitch walked in, meeting her.\nSeeing her, he stopped short and bowed his head.\n\nAlthough she had just said he was better and kinder than she, in the\nrapid glance she flung at him, taking in his whole figure in all its\ndetails, feelings of repulsion and hatred for him and jealousy over her\nson took possession of her. With a swift gesture she put down her veil,\nand, quickening her pace, almost ran out of the room.\n\nShe had not time to undo, and so carried back with her, the parcel of\ntoys she had chosen the day before in a toy shop with such love and\nsorrow.\n\n\n\nChapter 31\n\n\nAs intensely as Anna had longed to see her son, and long as she had been\nthinking of it and preparing herself for it, she had not in the least\nexpected that seeing him would affect her so deeply. On getting back to\nher lonely rooms in the hotel she could not for a long while understand\nwhy she was there. \"Yes, it's all over, and I am again alone,\" she said\nto herself, and without taking off her hat she sat down in a low chair\nby the hearth. Fixing her eyes on a bronze clock standing on a table\nbetween the windows, she tried to think.\n\nThe French maid brought from abroad came in to suggest she should dress.\nShe gazed at her wonderingly and said, \"Presently.\" A footman offered\nher coffee. \"Later on,\" she said.\n\nThe Italian nurse, after having taken the baby out in her best, came in\nwith her, and brought her to Anna. The plump, well-fed little baby, on\nseeing her mother, as she always did, held out her fat little hands, and\nwith a smile on her toothless mouth, began, like a fish with a float,\nbobbing her fingers up and down the starched folds of her embroidered\nskirt, making them rustle. It was impossible not to smile, not to kiss\nthe baby, impossible not to hold out a finger for her to clutch, crowing\nand prancing all over; impossible not to offer her a lip which she\nsucked into her little mouth by way of a kiss. And all this Anna did,\nand took her in her arms and made her dance, and kissed her fresh little\ncheek and bare little elbows; but at the sight of this child it was\nplainer than ever to her that the feeling she had for her could not be\ncalled love in comparison with what she felt for Seryozha. Everything in\nthis baby was charming, but for some reason all this did not go deep to\nher heart. On her first child, though the child of an unloved father,\nhad been concentrated all the love that had never found satisfaction.\nHer baby girl had been born in the most painful circumstances and had\nnot had a hundredth part of the care and thought which had been\nconcentrated on her first child. Besides, in the little girl everything\nwas still in the future, while Seryozha was by now almost a personality,\nand a personality dearly loved. In him there was a conflict of thought\nand feeling; he understood her, he loved her, he judged her, she\nthought, recalling his words and his eyes. And she was forever--not\nphysically only but spiritually--divided from him, and it was impossible\nto set this right.\n\nShe gave the baby back to the nurse, let her go, and opened the locket\nin which there was Seryozha's portrait when he was almost of the same\nage as the girl. She got up, and, taking off her hat, took up from a\nlittle table an album in which there were photographs of her son at\ndifferent ages. She wanted to compare them, and began taking them out of\nthe album. She took them all out except one, the latest and best\nphotograph. In it he was in a white smock, sitting astride a chair, with\nfrowning eyes and smiling lips. It was his best, most characteristic\nexpression. With her little supple hands, her white, delicate fingers,\nthat moved with a peculiar intensity today, she pulled at a corner of\nthe photograph, but the photograph had caught somewhere, and she could\nnot get it out. There was no paper knife on the table, and so, pulling\nout the photograph that was next to her son's (it was a photograph of\nVronsky taken at Rome in a round hat and with long hair), she used it to\npush out her son's photograph. \"Oh, here is he!\" she said, glancing at\nthe portrait of Vronsky, and she suddenly recalled that he was the cause\nof her present misery. She had not once thought of him all the morning.\nBut now, coming all at once upon that manly, noble face, so familiar and\nso dear to her, she felt a sudden rush of love for him.\n\n\"But where is he? How is it he leaves me alone in my misery?\" she\nthought all at once with a feeling of reproach, forgetting she had\nherself kept from him everything concerning her son. She sent to ask him\nto come to her immediately; with a throbbing heart she awaited him,\nrehearsing to herself the words in which she would tell him all, and the\nexpressions of love with which he would console her. The messenger\nreturned with the answer that he had a visitor with him, but that he\nwould come immediately, and that he asked whether she would let him\nbring with him Prince Yashvin, who had just arrived in Petersburg. \"He's\nnot coming alone, and since dinner yesterday he has not seen me,\" she\nthought; \"he's not coming so that I could tell him everything, but\ncoming with Yashvin.\" And all at once a strange idea came to her: what\nif he had ceased to love her?\n\nAnd going over the events of the last few days, it seemed to her that\nshe saw in everything a confirmation of this terrible idea. The fact\nthat he had not dined at home yesterday, and the fact that he had\ninsisted on their taking separate sets of rooms in Petersburg, and that\neven now he was not coming to her alone, as though he were trying to\navoid meeting her face to face.\n\n\"But he ought to tell me so. I must know that it is so. If I knew it,\nthen I know what I should do,\" she said to herself, utterly unable to\npicture to herself the position she would be in if she were convinced of\nhis not caring for her. She thought he had ceased to love her, she felt\nclose upon despair, and consequently she felt exceptionally alert. She\nrang for her maid and went to her dressing room. As she dressed, she\ntook more care over her appearance than she had done all those days, as\nthough he might, if he had grown cold to her, fall in love with her\nagain because she had dressed and arranged her hair in the way most\nbecoming to her.\n\nShe heard the bell ring before she was ready. When she went into the\ndrawing room it was not he, but Yashvin, who met her eyes. Vronsky was\nlooking through the photographs of her son, which she had forgotten on\nthe table, and he made no haste to look round at her.\n\n\"We have met already,\" she said, putting her little hand into the huge\nhand of Yashvin, whose bashfulness was so queerly out of keeping with\nhis immense frame and coarse face. \"We met last year at the races. Give\nthem to me,\" she said, with a rapid movement snatching from Vronsky the\nphotographs of her son, and glancing significantly at him with flashing\neyes. \"Were the races good this year? Instead of them I saw the races in\nthe Corso in Rome. But you don't care for life abroad,\" she said with a\ncordial smile. \"I know you and all your tastes, though I have seen so\nlittle of you.\"\n\n\"I'm awfully sorry for that, for my tastes are mostly bad,\" said\nYashvin, gnawing at his left mustache.\n\nHaving talked a little while, and noticing that Vronsky glanced at the\nclock, Yashvin asked her whether she would be staying much longer in\nPetersburg, and unbending his huge figure reached after his cap.\n\n\"Not long, I think,\" she said hesitatingly, glancing at Vronsky.\n\n\"So then we shan't meet again?\"\n\n\"Come and dine with me,\" said Anna resolutely, angry it seemed with\nherself for her embarrassment, but flushing as she always did when she\ndefined her position before a fresh person. \"The dinner here is not\ngood, but at least you will see him. There is no one of his old friends\nin the regiment Alexey cares for as he does for you.\"\n\n\"Delighted,\" said Yashvin with a smile, from which Vronsky could see\nthat he liked Anna very much.\n\nYashvin said good-bye and went away; Vronsky stayed behind.\n\n\"Are you going too?\" she said to him.\n\n\"I'm late already,\" he answered. \"Run along! I'll catch you up in a\nmoment,\" he called to Yashvin.\n\nShe took him by the hand, and without taking her eyes off him, gazed at\nhim while she ransacked her mind for the words to say that would keep\nhim.\n\n\"Wait a minute, there's something I want to say to you,\" and taking his\nbroad hand she pressed it on her neck. \"Oh, was it right my asking him\nto dinner?\"\n\n\"You did quite right,\" he said with a serene smile that showed his even\nteeth, and he kissed her hand.\n\n\"Alexey, you have not changed to me?\" she said, pressing his hand in\nboth of hers. \"Alexey, I am miserable here. When are we going away?\"\n\n\"Soon, soon. You wouldn't believe how disagreeable our way of living\nhere is to me too,\" he said, and he drew away his hand.\n\n\"Well, go, go!\" she said in a tone of offense, and she walked quickly\naway from him.\n\n\n\nChapter 32\n\n\nWhen Vronsky returned home, Anna was not yet home. Soon after he had\nleft, some lady, so they told him, had come to see her, and she had gone\nout with her. That she had gone out without leaving word where she was\ngoing, that she had not yet come back, and that all the morning she had\nbeen going about somewhere without a word to him--all this, together\nwith the strange look of excitement in her face in the morning, and the\nrecollection of the hostile tone with which she had before Yashvin\nalmost snatched her son's photographs out of his hands, made him\nserious. He decided he absolutely must speak openly with her. And he\nwaited for her in her drawing room. But Anna did not return alone, but\nbrought with her her old unmarried aunt, Princess Oblonskaya. This was\nthe lady who had come in the morning, and with whom Anna had gone out\nshopping. Anna appeared not to notice Vronsky's worried and inquiring\nexpression, and began a lively account of her morning's shopping. He saw\nthat there was something working within her; in her flashing eyes, when\nthey rested for a moment on him, there was an intense concentration, and\nin her words and movements there was that nervous rapidity and grace\nwhich, during the early period of their intimacy, had so fascinated him,\nbut which now so disturbed and alarmed him.\n\nThe dinner was laid for four. All were gathered together and about to go\ninto the little dining room when Tushkevitch made his appearance with a\nmessage from Princess Betsy. Princess Betsy begged her to excuse her not\nhaving come to say good-bye; she had been indisposed, but begged Anna to\ncome to her between half-past six and nine o'clock. Vronsky glanced at\nAnna at the precise limit of time, so suggestive of steps having been\ntaken that she should meet no one; but Anna appeared not to notice it.\n\n\"Very sorry that I can't come just between half-past six and nine,\" she\nsaid with a faint smile.\n\n\"The princess will be very sorry.\"\n\n\"And so am I.\"\n\n\"You're going, no doubt, to hear Patti?\" said Tushkevitch.\n\n\"Patti? You suggest the idea to me. I would go if it were possible to\nget a box.\"\n\n\"I can get one,\" Tushkevitch offered his services.\n\n\"I should be very, very grateful to you,\" said Anna. \"But won't you dine\nwith us?\"\n\nVronsky gave a hardly perceptible shrug. He was at a complete loss to\nunderstand what Anna was about. What had she brought the old Princess\nOblonskaya home for, what had she made Tushkevitch stay to dinner for,\nand, most amazing of all, why was she sending him for a box? Could she\npossibly think in her position of going to Patti's benefit, where all\nthe circle of her acquaintances would be? He looked at her with serious\neyes, but she responded with that defiant, half-mirthful, half-desperate\nlook, the meaning of which he could not comprehend. At dinner Anna was\nin aggressively high spirits--she almost flirted both with Tushkevitch\nand with Yashvin. When they got up from dinner and Tushkevitch had gone\nto get a box at the opera, Yashvin went to smoke, and Vronsky went down\nwith him to his own rooms. After sitting there for some time he ran\nupstairs. Anna was already dressed in a low-necked gown of light silk\nand velvet that she had had made in Paris, and with costly white lace on\nher head, framing her face, and particularly becoming, showing up her\ndazzling beauty.\n\n\"Are you really going to the theater?\" he said, trying not to look at\nher.\n\n\"Why do you ask with such alarm?\" she said, wounded again at his not\nlooking at her. \"Why shouldn't I go?\"\n\nShe appeared not to understand the motive of his words.\n\n\"Oh, of course, there's no reason whatever,\" he said, frowning.\n\n\"That's just what I say,\" she said, willfully refusing to see the irony\nof his tone, and quietly turning back her long, perfumed glove.\n\n\"Anna, for God's sake! what is the matter with you?\" he said, appealing\nto her exactly as once her husband had done.\n\n\"I don't understand what you are asking.\"\n\n\"You know that it's out of the question to go.\"\n\n\"Why so? I'm not going alone. Princess Varvara has gone to dress, she is\ngoing with me.\"\n\nHe shrugged his shoulders with an air of perplexity and despair.\n\n\"But do you mean to say you don't know?...\" he began.\n\n\"But I don't care to know!\" she almost shrieked. \"I don't care to. Do I\nregret what I have done? No, no, no! If it were all to do again from the\nbeginning, it would be the same. For us, for you and for me, there is\nonly one thing that matters, whether we love each other. Other people we\nneed not consider. Why are we living here apart and not seeing each\nother? Why can't I go? I love you, and I don't care for anything,\" she\nsaid in Russian, glancing at him with a peculiar gleam in her eyes that\nhe could not understand. \"If you have not changed to me, why don't you\nlook at me?\"\n\nHe looked at her. He saw all the beauty of her face and full dress,\nalways so becoming to her. But now her beauty and elegance were just\nwhat irritated him.\n\n\"My feeling cannot change, you know, but I beg you, I entreat you,\" he\nsaid again in French, with a note of tender supplication in his voice,\nbut with coldness in his eyes.\n\nShe did not hear his words, but she saw the coldness of his eyes, and\nanswered with irritation:\n\n\"And I beg you to explain why I should not go.\"\n\n\"Because it might cause you...\" he hesitated.\n\n\"I don't understand. Yashvin _n'est pas compromettant_, and Princess\nVarvara is no worse than others. Oh, here she is!\"\n\n\n\nChapter 33\n\n\nVronsky for the first time experienced a feeling of anger against Anna,\nalmost a hatred for her willfully refusing to understand her own\nposition. This feeling was aggravated by his being unable to tell her\nplainly the cause of his anger. If he had told her directly what he was\nthinking, he would have said:\n\n\"In that dress, with a princess only too well known to everyone, to show\nyourself at the theater is equivalent not merely to acknowledging your\nposition as a fallen woman, but is flinging down a challenge to society,\nthat is to say, cutting yourself off from it forever.\"\n\nHe could not say that to her. \"But how can she fail to see it, and what\nis going on in her?\" he said to himself. He felt at the same time that\nhis respect for her was diminished while his sense of her beauty was\nintensified.\n\nHe went back scowling to his rooms, and sitting down beside Yashvin,\nwho, with his long legs stretched out on a chair, was drinking brandy\nand seltzer water, he ordered a glass of the same for himself.\n\n\"You were talking of Lankovsky's Powerful. That's a fine horse, and I\nwould advise you to buy him,\" said Yashvin, glancing at his comrade's\ngloomy face. \"His hind-quarters aren't quite first-rate, but the legs\nand head--one couldn't wish for anything better.\"\n\n\"I think I will take him,\" answered Vronsky.\n\nTheir conversation about horses interested him, but he did not for an\ninstant forget Anna, and could not help listening to the sound of steps\nin the corridor and looking at the clock on the chimney piece.\n\n\"Anna Arkadyevna gave orders to announce that she has gone to the\ntheater.\"\n\nYashvin, tipping another glass of brandy into the bubbling water, drank\nit and got up, buttoning his coat.\n\n\"Well, let's go,\" he said, faintly smiling under his mustache, and\nshowing by this smile that he knew the cause of Vronsky's gloominess,\nand did not attach any significance to it.\n\n\"I'm not going,\" Vronsky answered gloomily.\n\n\"Well, I must, I promised to. Good-bye, then. If you do, come to the\nstalls; you can take Kruzin's stall,\" added Yashvin as he went out.\n\n\"No, I'm busy.\"\n\n\"A wife is a care, but it's worse when she's not a wife,\" thought\nYashvin, as he walked out of the hotel.\n\nVronsky, left alone, got up from his chair and began pacing up and down\nthe room.\n\n\"And what's today? The fourth night.... Yegor and his wife are there,\nand my mother, most likely. Of course all Petersburg's there. Now she's\ngone in, taken off her cloak and come into the light. Tushkevitch,\nYashvin, Princess Varvara,\" he pictured them to himself.... \"What about\nme? Either that I'm frightened or have given up to Tushkevitch the right\nto protect her? From every point of view--stupid, stupid!... And why is\nshe putting me in such a position?\" he said with a gesture of despair.\n\nWith that gesture he knocked against the table, on which there was\nstanding the seltzer water and the decanter of brandy, and almost upset\nit. He tried to catch it, let it slip, and angrily kicked the table over\nand rang.\n\n\"If you care to be in my service,\" he said to the valet who came in,\n\"you had better remember your duties. This shouldn't be here. You ought\nto have cleared away.\"\n\nThe valet, conscious of his own innocence, would have defended himself,\nbut glancing at his master, he saw from his face that the only thing to\ndo was to be silent, and hurriedly threading his way in and out, dropped\ndown on the carpet and began gathering up the whole and broken glasses\nand bottles.\n\n\"That's not your duty; send the waiter to clear away, and get my dress\ncoat out.\"\n\nVronsky went into the theater at half-past eight. The performance was in\nfull swing. The little old box-keeper, recognizing Vronsky as he helped\nhim off with his fur coat, called him \"Your Excellency,\" and suggested\nhe should not take a number but should simply call Fyodor. In the\nbrightly lighted corridor there was no one but the box-opener and two\nattendants with fur cloaks on their arms listening at the doors. Through\nthe closed doors came the sounds of the discreet _staccato_\naccompaniment of the orchestra, and a single female voice rendering\ndistinctly a musical phrase. The door opened to let the box-opener slip\nthrough, and the phrase drawing to the end reached Vronsky's hearing\nclearly. But the doors were closed again at once, and Vronsky did not\nhear the end of the phrase and the cadence of the accompaniment, though\nhe knew from the thunder of applause that it was over. When he entered\nthe hall, brilliantly lighted with chandeliers and gas jets, the noise\nwas still going on. On the stage the singer, bowing and smiling, with\nbare shoulders flashing with diamonds, was, with the help of the tenor\nwho had given her his arm, gathering up the bouquets that were flying\nawkwardly over the footlights. Then she went up to a gentleman with\nglossy pomaded hair parted down the center, who was stretching across\nthe footlights holding out something to her, and all the public in the\nstalls as well as in the boxes was in excitement, craning forward,\nshouting and clapping. The conductor in his high chair assisted in\npassing the offering, and straightened his white tie. Vronsky walked\ninto the middle of the stalls, and, standing still, began looking about\nhim. That day less than ever was his attention turned upon the familiar,\nhabitual surroundings, the stage, the noise, all the familiar,\nuninteresting, particolored herd of spectators in the packed theater.\n\nThere were, as always, the same ladies of some sort with officers of\nsome sort in the back of the boxes; the same gaily dressed women--God\nknows who--and uniforms and black coats; the same dirty crowd in the\nupper gallery; and among the crowd, in the boxes and in the front rows,\nwere some forty of the _real_ people. And to those oases Vronsky at once\ndirected his attention, and with them he entered at once into relation.\n\nThe act was over when he went in, and so he did not go straight to his\nbrother's box, but going up to the first row of stalls stopped at the\nfootlights with Serpuhovskoy, who, standing with one knee raised and his\nheel on the footlights, caught sight of him in the distance and beckoned\nto him, smiling.\n\nVronsky had not yet seen Anna. He purposely avoided looking in her\ndirection. But he knew by the direction of people's eyes where she was.\nHe looked round discreetly, but he was not seeking her; expecting the\nworst, his eyes sought for Alexey Alexandrovitch. To his relief Alexey\nAlexandrovitch was not in the theater that evening.\n\n\"How little of the military man there is left in you!\" Serpuhovskoy was\nsaying to him. \"A diplomat, an artist, something of that sort, one would\nsay.\"\n\n\"Yes, it was like going back home when I put on a black coat,\" answered\nVronsky, smiling and slowly taking out his opera glass.\n\n\"Well, I'll own I envy you there. When I come back from abroad and put\non this,\" he touched his epaulets, \"I regret my freedom.\"\n\nSerpuhovskoy had long given up all hope of Vronsky's career, but he\nliked him as before, and was now particularly cordial to him.\n\n\"What a pity you were not in time for the first act!\"\n\nVronsky, listening with one ear, moved his opera glass from the stalls\nand scanned the boxes. Near a lady in a turban and a bald old man, who\nseemed to wave angrily in the moving opera glass, Vronsky suddenly\ncaught sight of Anna's head, proud, strikingly beautiful, and smiling in\nthe frame of lace. She was in the fifth box, twenty paces from him. She\nwas sitting in front, and slightly turning, was saying something to\nYashvin. The setting of her head on her handsome, broad shoulders, and\nthe restrained excitement and brilliance of her eyes and her whole face\nreminded him of her just as he had seen her at the ball in Moscow. But\nhe felt utterly different towards her beauty now. In his feeling for her\nnow there was no element of mystery, and so her beauty, though it\nattracted him even more intensely than before, gave him now a sense of\ninjury. She was not looking in his direction, but Vronsky felt that she\nhad seen him already.\n\nWhen Vronsky turned the opera glass again in that direction, he noticed\nthat Princess Varvara was particularly red, and kept laughing\nunnaturally and looking round at the next box. Anna, folding her fan and\ntapping it on the red velvet, was gazing away and did not see, and\nobviously did not wish to see, what was taking place in the next box.\nYashvin's face wore the expression which was common when he was losing\nat cards. Scowling, he sucked the left end of his mustache further and\nfurther into his mouth, and cast sidelong glances at the next box.\n\nIn that box on the left were the Kartasovs. Vronsky knew them, and knew\nthat Anna was acquainted with them. Madame Kartasova, a thin little\nwoman, was standing up in her box, and, her back turned upon Anna, she\nwas putting on a mantle that her husband was holding for her. Her face\nwas pale and angry, and she was talking excitedly. Kartasov, a fat, bald\nman, was continually looking round at Anna, while he attempted to soothe\nhis wife. When the wife had gone out, the husband lingered a long while,\nand tried to catch Anna's eye, obviously anxious to bow to her. But\nAnna, with unmistakable intention, avoided noticing him, and talked to\nYashvin, whose cropped head was bent down to her. Kartasov went out\nwithout making his salutation, and the box was left empty.\n\nVronsky could not understand exactly what had passed between the\nKartasovs and Anna, but he saw that something humiliating for Anna had\nhappened. He knew this both from what he had seen, and most of all from\nthe face of Anna, who, he could see, was taxing every nerve to carry\nthrough the part she had taken up. And in maintaining this attitude of\nexternal composure she was completely successful. Anyone who did not\nknow her and her circle, who had not heard all the utterances of the\nwomen expressive of commiseration, indignation, and amazement, that she\nshould show herself in society, and show herself so conspicuously with\nher lace and her beauty, would have admired the serenity and loveliness\nof this woman without a suspicion that she was undergoing the sensations\nof a man in the stocks.\n\nKnowing that something had happened, but not knowing precisely what,\nVronsky felt a thrill of agonizing anxiety, and hoping to find out\nsomething, he went towards his brother's box. Purposely choosing the way\nround furthest from Anna's box, he jostled as he came out against the\ncolonel of his old regiment talking to two acquaintances. Vronsky heard\nthe name of Madame Karenina, and noticed how the colonel hastened to\naddress Vronsky loudly by name, with a meaning glance at his companions.\n\n\"Ah, Vronsky! When are you coming to the regiment? We can't let you off\nwithout a supper. You're one of the old set,\" said the colonel of his\nregiment.\n\n\"I can't stop, awfully sorry, another time,\" said Vronsky, and he ran\nupstairs towards his brother's box.\n\nThe old countess, Vronsky's mother, with her steel-gray curls, was in\nhis brother's box. Varya with the young Princess Sorokina met him in the\ncorridor.\n\nLeaving the Princess Sorokina with her mother, Varya held out her hand\nto her brother-in-law, and began immediately to speak of what interested\nhim. She was more excited than he had ever seen her.\n\n\"I think it's mean and hateful, and Madame Kartasova had no right to do\nit. Madame Karenina...\" she began.\n\n\"But what is it? I don't know.\"\n\n\"What? you've not heard?\"\n\n\"You know I should be the last person to hear of it.\"\n\n\"There isn't a more spiteful creature than that Madame Kartasova!\"\n\n\"But what did she do?\"\n\n\"My husband told me.... She has insulted Madame Karenina. Her husband\nbegan talking to her across the box, and Madame Kartasova made a scene.\nShe said something aloud, he says, something insulting, and went away.\"\n\n\"Count, your maman is asking for you,\" said the young Princess Sorokina,\npeeping out of the door of the box.\n\n\"I've been expecting you all the while,\" said his mother, smiling\nsarcastically. \"You were nowhere to be seen.\"\n\nHer son saw that she could not suppress a smile of delight.\n\n\"Good evening, maman. I have come to you,\" he said coldly.\n\n\"Why aren't you going to _faire la cour a Madame Karenina?_\" she went\non, when Princess Sorokina had moved away. \"_Elle fait sensation. On\noublie la Patti pour elle_.\"\n\n\"Maman, I have asked you not to say anything to me of that,\" he\nanswered, scowling.\n\n\"I'm only saying what everyone's saying.\"\n\nVronsky made no reply, and saying a few words to Princess Sorokina, he\nwent away. At the door he met his brother.\n\n\"Ah, Alexey!\" said his brother. \"How disgusting! Idiot of a woman,\nnothing else.... I wanted to go straight to her. Let's go together.\"\n\nVronsky did not hear him. With rapid steps he went downstairs; he felt\nthat he must do something, but he did not know what. Anger with her for\nhaving put herself and him in such a false position, together with pity\nfor her suffering, filled his heart. He went down, and made straight for\nAnna's box. At her box stood Stremov, talking to her.\n\n\"There are no more tenors. _Le moule en est brise!_\"\n\nVronsky bowed to her and stopped to greet Stremov.\n\n\"You came in late, I think, and have missed the best song,\" Anna said to\nVronsky, glancing ironically, he thought, at him.\n\n\"I am a poor judge of music,\" he said, looking sternly at her.\n\n\"Like Prince Yashvin,\" she said smiling, \"who considers that Patti sings\ntoo loud.\"\n\n\"Thank you,\" she said, her little hand in its long glove taking the\nplaybill Vronsky picked up, and suddenly at that instant her lovely face\nquivered. She got up and went into the interior of the box.\n\nNoticing in the next act that her box was empty, Vronsky, rousing\nindignant \"hushes\" in the silent audience, went out in the middle of a\nsolo and drove home.\n\nAnna was already at home. When Vronsky went up to her, she was in the\nsame dress as she had worn at the theater. She was sitting in the first\narmchair against the wall, looking straight before her. She looked at\nhim, and at once resumed her former position.\n\n\"Anna,\" he said.\n\n\"You, you are to blame for everything!\" she cried, with tears of despair\nand hatred in her voice, getting up.\n\n\"I begged, I implored you not to go, I knew it would be unpleasant....\"\n\n\"Unpleasant!\" she cried--\"hideous! As long as I live I shall never\nforget it. She said it was a disgrace to sit beside me.\"\n\n\"A silly woman's chatter,\" he said: \"but why risk it, why provoke?...\"\n\n\"I hate your calm. You ought not to have brought me to this. If you had\nloved me...\"\n\n\"Anna! How does the question of my love come in?\"\n\n\"Oh, if you loved me, as I love, if you were tortured as I am!...\" she\nsaid, looking at him with an expression of terror.\n\nHe was sorry for her, and angry notwithstanding. He assured her of his\nlove because he saw that this was the only means of soothing her, and he\ndid not reproach her in words, but in his heart he reproached her.\n\nAnd the asseverations of his love, which seemed to him so vulgar that he\nwas ashamed to utter them, she drank in eagerly, and gradually became\ncalmer. The next day, completely reconciled, they left for the country.\n\n\n\n\nPART SIX\n\n\n\nChapter 1\n\n\nDarya Alexandrovna spent the summer with her children at Pokrovskoe, at\nher sister Kitty Levin's. The house on her own estate was quite in\nruins, and Levin and his wife had persuaded her to spend the summer with\nthem. Stepan Arkadyevitch greatly approved of the arrangement. He said\nhe was very sorry his official duties prevented him from spending the\nsummer in the country with his family, which would have been the\ngreatest happiness for him; and remaining in Moscow, he came down to the\ncountry from time to time for a day or two. Besides the Oblonskys, with\nall their children and their governess, the old princess too came to\nstay that summer with the Levins, as she considered it her duty to watch\nover her inexperienced daughter in her _interesting condition_.\nMoreover, Varenka, Kitty's friend abroad, kept her promise to come to\nKitty when she was married, and stayed with her friend. All of these\nwere friends or relations of Levin's wife. And though he liked them all,\nhe rather regretted his own Levin world and ways, which was smothered by\nthis influx of the \"Shtcherbatsky element,\" as he called it to himself.\nOf his own relations there stayed with him only Sergey Ivanovitch, but\nhe too was a man of the Koznishev and not the Levin stamp, so that the\nLevin spirit was utterly obliterated.\n\nIn the Levins' house, so long deserted, there were now so many people\nthat almost all the rooms were occupied, and almost every day it\nhappened that the old princess, sitting down to table, counted them all\nover, and put the thirteenth grandson or granddaughter at a separate\ntable. And Kitty, with her careful housekeeping, had no little trouble\nto get all the chickens, turkeys, and geese, of which so many were\nneeded to satisfy the summer appetites of the visitors and children.\n\nThe whole family were sitting at dinner. Dolly's children, with their\ngoverness and Varenka, were making plans for going to look for\nmushrooms. Sergey Ivanovitch, who was looked up to by all the party for\nhis intellect and learning, with a respect that almost amounted to awe,\nsurprised everyone by joining in the conversation about mushrooms.\n\n\"Take me with you. I am very fond of picking mushrooms,\" he said,\nlooking at Varenka; \"I think it's a very nice occupation.\"\n\n\"Oh, we shall be delighted,\" answered Varenka, coloring a little. Kitty\nexchanged meaningful glances with Dolly. The proposal of the learned and\nintellectual Sergey Ivanovitch to go looking for mushrooms with Varenka\nconfirmed certain theories of Kitty's with which her mind had been very\nbusy of late. She made haste to address some remark to her mother, so\nthat her look should not be noticed. After dinner Sergey Ivanovitch sat\nwith his cup of coffee at the drawing-room window, and while he took\npart in a conversation he had begun with his brother, he watched the\ndoor through which the children would start on the mushroom-picking\nexpedition. Levin was sitting in the window near his brother.\n\nKitty stood beside her husband, evidently awaiting the end of a\nconversation that had no interest for her, in order to tell him\nsomething.\n\n\"You have changed in many respects since your marriage, and for the\nbetter,\" said Sergey Ivanovitch, smiling to Kitty, and obviously little\ninterested in the conversation, \"but you have remained true to your\npassion for defending the most paradoxical theories.\"\n\n\"Katya, it's not good for you to stand,\" her husband said to her,\nputting a chair for her and looking significantly at her.\n\n\"Oh, and there's no time either,\" added Sergey Ivanovitch, seeing the\nchildren running out.\n\nAt the head of them all Tanya galloped sideways, in her tightly-drawn\nstockings, and waving a basket and Sergey Ivanovitch's hat, she ran\nstraight up to him.\n\nBoldly running up to Sergey Ivanovitch with shining eyes, so like her\nfather's fine eyes, she handed him his hat and made as though she would\nput it on for him, softening her freedom by a shy and friendly smile.\n\n\"Varenka's waiting,\" she said, carefully putting his hat on, seeing from\nSergey Ivanovitch's smile that she might do so.\n\nVarenka was standing at the door, dressed in a yellow print gown, with a\nwhite kerchief on her head.\n\n\"I'm coming, I'm coming, Varvara Andreevna,\" said Sergey Ivanovitch,\nfinishing his cup of coffee, and putting into their separate pockets his\nhandkerchief and cigar-case.\n\n\"And how sweet my Varenka is! eh?\" said Kitty to her husband, as soon as\nSergey Ivanovitch rose. She spoke so that Sergey Ivanovitch could hear,\nand it was clear that she meant him to do so. \"And how good-looking she\nis--such a refined beauty! Varenka!\" Kitty shouted. \"Shall you be in the\nmill copse? We'll come out to you.\"\n\n\"You certainly forget your condition, Kitty,\" said the old princess,\nhurriedly coming out at the door. \"You mustn't shout like that.\"\n\nVarenka, hearing Kitty's voice and her mother's reprimand, went with\nlight, rapid steps up to Kitty. The rapidity of her movement, her\nflushed and eager face, everything betrayed that something out of the\ncommon was going on in her. Kitty knew what this was, and had been\nwatching her intently. She called Varenka at that moment merely in order\nmentally to give her a blessing for the important event which, as Kitty\nfancied, was bound to come to pass that day after dinner in the wood.\n\n\"Varenka, I should be very happy if a certain something were to happen,\"\nshe whispered as she kissed her.\n\n\"And are you coming with us?\" Varenka said to Levin in confusion,\npretending not to have heard what had been said.\n\n\"I am coming, but only as far as the threshing-floor, and there I shall\nstop.\"\n\n\"Why, what do you want there?\" said Kitty.\n\n\"I must go to have a look at the new wagons, and to check the invoice,\"\nsaid Levin; \"and where will you be?\"\n\n\"On the terrace.\"\n\n\n\nChapter 2\n\n\nOn the terrace were assembled all the ladies of the party. They always\nliked sitting there after dinner, and that day they had work to do there\ntoo. Besides the sewing and knitting of baby clothes, with which all of\nthem were busy, that afternoon jam was being made on the terrace by a\nmethod new to Agafea Mihalovna, without the addition of water. Kitty had\nintroduced this new method, which had been in use in her home. Agafea\nMihalovna, to whom the task of jam-making had always been intrusted,\nconsidering that what had been done in the Levin household could not be\namiss, had nevertheless put water with the strawberries, maintaining\nthat the jam could not be made without it. She had been caught in the\nact, and was now making jam before everyone, and it was to be proved to\nher conclusively that jam could be very well made without water.\n\nAgafea Mihalovna, her face heated and angry, her hair untidy, and her\nthin arms bare to the elbows, was turning the preserving-pan over the\ncharcoal stove, looking darkly at the raspberries and devoutly hoping\nthey would stick and not cook properly. The princess, conscious that\nAgafea Mihalovna's wrath must be chiefly directed against her, as the\nperson responsible for the raspberry jam-making, tried to appear to be\nabsorbed in other things and not interested in the jam, talked of other\nmatters, but cast stealthy glances in the direction of the stove.\n\n\"I always buy my maids' dresses myself, of some cheap material,\" the\nprincess said, continuing the previous conversation. \"Isn't it time to\nskim it, my dear?\" she added, addressing Agafea Mihalovna. \"There's not\nthe slightest need for you to do it, and it's hot for you,\" she said,\nstopping Kitty.\n\n\"I'll do it,\" said Dolly, and getting up, she carefully passed the spoon\nover the frothing sugar, and from time to time shook off the clinging\njam from the spoon by knocking it on a plate that was covered with\nyellow-red scum and blood-colored syrup. \"How they'll enjoy this at\ntea-time!\" she thought of her children, remembering how she herself as a\nchild had wondered how it was the grown-up people did not eat what was\nbest of all--the scum of the jam.\n\n\"Stiva says it's much better to give money.\" Dolly took up meanwhile the\nweighty subject under discussion, what presents should be made to\nservants. \"But...\"\n\n\"Money's out of the question!\" the princess and Kitty exclaimed with one\nvoice. \"They appreciate a present...\"\n\n\"Well, last year, for instance, I bought our Matrona Semyenovna, not a\npoplin, but something of that sort,\" said the princess.\n\n\"I remember she was wearing it on your nameday.\"\n\n\"A charming pattern--so simple and refined,--I should have liked it\nmyself, if she hadn't had it. Something like Varenka's. So pretty and\ninexpensive.\"\n\n\"Well, now I think it's done,\" said Dolly, dropping the syrup from the\nspoon.\n\n\"When it sets as it drops, it's ready. Cook it a little longer, Agafea\nMihalovna.\"\n\n\"The flies!\" said Agafea Mihalovna angrily. \"It'll be just the same,\"\nshe added.\n\n\"Ah! how sweet it is! don't frighten it!\" Kitty said suddenly, looking\nat a sparrow that had settled on the step and was pecking at the center\nof a raspberry.\n\n\"Yes, but you keep a little further from the stove,\" said her mother.\n\n\"_A propos de Varenka_,\" said Kitty, speaking in French, as they had\nbeen doing all the while, so that Agafea Mihalovna should not understand\nthem, \"you know, mamma, I somehow expect things to be settled today. You\nknow what I mean. How splendid it would be!\"\n\n\"But what a famous matchmaker she is!\" said Dolly. \"How carefully and\ncleverly she throws them together!...\"\n\n\"No; tell me, mamma, what do you think?\"\n\n\"Why, what is one to think? He\" (_he_ meant Sergey Ivanovitch) \"might at\nany time have been a match for anyone in Russia; now, of course, he's\nnot quite a young man, still I know ever so many girls would be glad to\nmarry him even now.... She's a very nice girl, but he might...\"\n\n\"Oh, no, mamma, do understand why, for him and for her too, nothing\nbetter could be imagined. In the first place, she's charming!\" said\nKitty, crooking one of her fingers.\n\n\"He thinks her very attractive, that's certain,\" assented Dolly.\n\n\"Then he occupies such a position in society that he has no need to look\nfor either fortune or position in his wife. All he needs is a good,\nsweet wife--a restful one.\"\n\n\"Well, with her he would certainly be restful,\" Dolly assented.\n\n\"Thirdly, that she should love him. And so it is ... that is, it would\nbe so splendid!... I look forward to seeing them coming out of the\nforest--and everything settled. I shall see at once by their eyes. I\nshould be so delighted! What do you think, Dolly?\"\n\n\"But don't excite yourself. It's not at all the thing for you to be\nexcited,\" said her mother.\n\n\"Oh, I'm not excited, mamma. I fancy he will make her an offer today.\"\n\n\"Ah, that's so strange, how and when a man makes an offer!... There is a\nsort of barrier, and all at once it's broken down,\" said Dolly, smiling\npensively and recalling her past with Stepan Arkadyevitch.\n\n\"Mamma, how did papa make you an offer?\" Kitty asked suddenly.\n\n\"There was nothing out of the way, it was very simple,\" answered the\nprincess, but her face beamed all over at the recollection.\n\n\"Oh, but how was it? You loved him, anyway, before you were allowed to\nspeak?\"\n\nKitty felt a peculiar pleasure in being able now to talk to her mother\non equal terms about those questions of such paramount interest in a\nwoman's life.\n\n\"Of course I did; he had come to stay with us in the country.\"\n\n\"But how was it settled between you, mamma?\"\n\n\"You imagine, I dare say, that you invented something quite new? It's\nalways just the same: it was settled by the eyes, by smiles...\"\n\n\"How nicely you said that, mamma! It's just by the eyes, by smiles that\nit's done,\" Dolly assented.\n\n\"But what words did he say?\"\n\n\"What did Kostya say to you?\"\n\n\"He wrote it in chalk. It was wonderful.... How long ago it seems!\" she\nsaid.\n\nAnd the three women all fell to musing on the same thing. Kitty was the\nfirst to break the silence. She remembered all that last winter before\nher marriage, and her passion for Vronsky.\n\n\"There's one thing ... that old love affair of Varenka's,\" she said, a\nnatural chain of ideas bringing her to this point. \"I should have liked\nto say something to Sergey Ivanovitch, to prepare him. They're all--all\nmen, I mean,\" she added, \"awfully jealous over our past.\"\n\n\"Not all,\" said Dolly. \"You judge by your own husband. It makes him\nmiserable even now to remember Vronsky. Eh? that's true, isn't it?\"\n\n\"Yes,\" Kitty answered, a pensive smile in her eyes.\n\n\"But I really don't know,\" the mother put in in defense of her motherly\ncare of her daughter, \"what there was in your past that could worry him?\nThat Vronsky paid you attentions--that happens to every girl.\"\n\n\"Oh, yes, but we didn't mean that,\" Kitty said, flushing a little.\n\n\"No, let me speak,\" her mother went on, \"why, you yourself would not let\nme have a talk to Vronsky. Don't you remember?\"\n\n\"Oh, mamma!\" said Kitty, with an expression of suffering.\n\n\"There's no keeping you young people in check nowadays.... Your\nfriendship could not have gone beyond what was suitable. I should myself\nhave called upon him to explain himself. But, my darling, it's not right\nfor you to be agitated. Please remember that, and calm yourself.\"\n\n\"I'm perfectly calm, maman.\"\n\n\"How happy it was for Kitty that Anna came then,\" said Dolly, \"and how\nunhappy for her. It turned out quite the opposite,\" she said, struck by\nher own ideas. \"Then Anna was so happy, and Kitty thought herself\nunhappy. Now it is just the opposite. I often think of her.\"\n\n\"A nice person to think about! Horrid, repulsive woman--no heart,\" said\nher mother, who could not forget that Kitty had married not Vronsky, but\nLevin.\n\n\"What do you want to talk of it for?\" Kitty said with annoyance. \"I\nnever think about it, and I don't want to think of it.... And I don't\nwant to think of it,\" she said, catching the sound of her husband's\nwell-known step on the steps of the terrace.\n\n\"What's that you don't want to think about?\" inquired Levin, coming onto\nthe terrace.\n\nBut no one answered him, and he did not repeat the question.\n\n\"I'm sorry I've broken in on your feminine parliament,\" he said, looking\nround on every one discontentedly, and perceiving that they had been\ntalking of something which they would not talk about before him.\n\nFor a second he felt that he was sharing the feeling of Agafea\nMihalovna, vexation at their making jam without water, and altogether at\nthe outside Shtcherbatsky element. He smiled, however, and went up to\nKitty.\n\n\"Well, how are you?\" he asked her, looking at her with the expression\nwith which everyone looked at her now.\n\n\"Oh, very well,\" said Kitty, smiling, \"and how have things gone with\nyou?\"\n\n\"The wagons held three times as much as the old carts did. Well, are we\ngoing for the children? I've ordered the horses to be put in.\"\n\n\"What! you want to take Kitty in the wagonette?\" her mother said\nreproachfully.\n\n\"Yes, at a walking pace, princess.\"\n\nLevin never called the princess \"maman\" as men often do call their\nmothers-in-law, and the princess disliked his not doing so. But though\nhe liked and respected the princess, Levin could not call her so without\na sense of profaning his feeling for his dead mother.\n\n\"Come with us, maman,\" said Kitty.\n\n\"I don't like to see such imprudence.\"\n\n\"Well, I'll walk then, I'm so well.\" Kitty got up and went to her\nhusband and took his hand.\n\n\"You may be well, but everything in moderation,\" said the princess.\n\n\"Well, Agafea Mihalovna, is the jam done?\" said Levin, smiling to Agafea\nMihalovna, and trying to cheer her up. \"Is it all right in the new way?\"\n\n\"I suppose it's all right. For our notions it's boiled too long.\"\n\n\"It'll be all the better, Agafea Mihalovna, it won't mildew, even though\nour ice has begun to thaw already, so that we've no cool cellar to store\nit,\" said Kitty, at once divining her husband's motive, and addressing\nthe old housekeeper with the same feeling; \"but your pickle's so good,\nthat mamma says she never tasted any like it,\" she added, smiling, and\nputting her kerchief straight.\n\nAgafea Mihalovna looked angrily at Kitty.\n\n\"You needn't try to console me, mistress. I need only to look at you\nwith him, and I feel happy,\" she said, and something in the rough\nfamiliarity of that _with him_ touched Kitty.\n\n\"Come along with us to look for mushrooms, you will show us the best\nplaces.\" Agafea Mihalovna smiled and shook her head, as though to say:\n\"I should like to be angry with you too, but I can't.\"\n\n\"Do it, please, by my receipt,\" said the princess; \"put some paper over\nthe jam, and moisten it with a little rum, and without even ice, it will\nnever go mildewy.\"\n\n\n\nChapter 3\n\n\nKitty was particularly glad of a chance of being alone with her husband,\nfor she had noticed the shade of mortification that had passed over his\nface--always so quick to reflect every feeling--at the moment when he\nhad come onto the terrace and asked what they were talking of, and had\ngot no answer.\n\nWhen they had set off on foot ahead of the others, and had come out of\nsight of the house onto the beaten dusty road, marked with rusty wheels\nand sprinkled with grains of corn, she clung faster to his arm and\npressed it closer to her. He had quite forgotten the momentary\nunpleasant impression, and alone with her he felt, now that the thought\nof her approaching motherhood was never for a moment absent from his\nmind, a new and delicious bliss, quite pure from all alloy of sense, in\nthe being near to the woman he loved. There was no need of speech, yet\nhe longed to hear the sound of her voice, which like her eyes had\nchanged since she had been with child. In her voice, as in her eyes,\nthere was that softness and gravity which is found in people continually\nconcentrated on some cherished pursuit.\n\n\"So you're not tired? Lean more on me,\" said he.\n\n\"No, I'm so glad of a chance of being alone with you, and I must own,\nthough I'm happy with them, I do regret our winter evenings alone.\"\n\n\"That was good, but this is even better. Both are better,\" he said,\nsqueezing her hand.\n\n\"Do you know what we were talking about when you came in?\"\n\n\"About jam?\"\n\n\"Oh, yes, about jam too; but afterwards, about how men make offers.\"\n\n\"Ah!\" said Levin, listening more to the sound of her voice than to the\nwords she was saying, and all the while paying attention to the road,\nwhich passed now through the forest, and avoiding places where she might\nmake a false step.\n\n\"And about Sergey Ivanovitch and Varenka. You've noticed?... I'm very\nanxious for it,\" she went on. \"What do you think about it?\" And she\npeeped into his face.\n\n\"I don't know what to think,\" Levin answered, smiling. \"Sergey seems\nvery strange to me in that way. I told you, you know...\"\n\n\"Yes, that he was in love with that girl who died....\"\n\n\"That was when I was a child; I know about it from hearsay and\ntradition. I remember him then. He was wonderfully sweet. But I've\nwatched him since with women; he is friendly, some of them he likes, but\none feels that to him they're simply people, not women.\"\n\n\"Yes, but now with Varenka ... I fancy there's something...\"\n\n\"Perhaps there is.... But one has to know him.... He's a peculiar,\nwonderful person. He lives a spiritual life only. He's too pure, too\nexalted a nature.\"\n\n\"Why? Would this lower him, then?\"\n\n\"No, but he's so used to a spiritual life that he can't reconcile\nhimself with actual fact, and Varenka is after all fact.\"\n\nLevin had grown used by now to uttering his thought boldly, without\ntaking the trouble of clothing it in exact language. He knew that his\nwife, in such moments of loving tenderness as now, would understand what\nhe meant to say from a hint, and she did understand him.\n\n\"Yes, but there's not so much of that actual fact about her as about me.\nI can see that he would never have cared for me. She is altogether\nspiritual.\"\n\n\"Oh, no, he is so fond of you, and I am always so glad when my people\nlike you....\"\n\n\"Yes, he's very nice to me; but...\"\n\n\"It's not as it was with poor Nikolay ... you really cared for each\nother,\" Levin finished. \"Why not speak of him?\" he added. \"I sometimes\nblame myself for not; it ends in one's forgetting. Ah, how terrible and\ndear he was!... Yes, what were we talking about?\" Levin said, after a\npause.\n\n\"You think he can't fall in love,\" said Kitty, translating into her own\nlanguage.\n\n\"It's not so much that he can't fall in love,\" Levin said, smiling, \"but\nhe has not the weakness necessary.... I've always envied him, and even\nnow, when I'm so happy, I still envy him.\"\n\n\"You envy him for not being able to fall in love?\"\n\n\"I envy him for being better than I,\" said Levin. \"He does not live for\nhimself. His whole life is subordinated to his duty. And that's why he\ncan be calm and contented.\"\n\n\"And you?\" Kitty asked, with an ironical and loving smile.\n\nShe could never have explained the chain of thought that made her smile;\nbut the last link in it was that her husband, in exalting his brother\nand abasing himself, was not quite sincere. Kitty knew that this\ninsincerity came from his love for his brother, from his sense of shame\nat being too happy, and above all from his unflagging craving to be\nbetter--she loved it in him, and so she smiled.\n\n\"And you? What are you dissatisfied with?\" she asked, with the same\nsmile.\n\nHer disbelief in his self-dissatisfaction delighted him, and\nunconsciously he tried to draw her into giving utterance to the grounds\nof her disbelief.\n\n\"I am happy, but dissatisfied with myself...\" he said.\n\n\"Why, how can you be dissatisfied with yourself if you are happy?\"\n\n\"Well, how shall I say?... In my heart I really care for nothing\nwhatever but that you should not stumble--see? Oh, but really you\nmustn't skip about like that!\" he cried, breaking off to scold her for\ntoo agile a movement in stepping over a branch that lay in the path.\n\"But when I think about myself, and compare myself with others,\nespecially with my brother, I feel I'm a poor creature.\"\n\n\"But in what way?\" Kitty pursued with the same smile. \"Don't you too\nwork for others? What about your co-operative settlement, and your work\non the estate, and your book?...\"\n\n\"Oh, but I feel, and particularly just now--it's your fault,\" he said,\npressing her hand--\"that all that doesn't count. I do it in a way\nhalfheartedly. If I could care for all that as I care for you!...\nInstead of that, I do it in these days like a task that is set me.\"\n\n\"Well, what would you say about papa?\" asked Kitty. \"Is he a poor\ncreature then, as he does nothing for the public good?\"\n\n\"He?--no! But then one must have the simplicity, the\nstraightforwardness, the goodness of your father: and I haven't got\nthat. I do nothing, and I fret about it. It's all your doing. Before\nthere was you--and _this_ too,\" he added with a glance towards her waist\nthat she understood--\"I put all my energies into work; now I can't, and\nI'm ashamed; I do it just as though it were a task set me, I'm\npretending....\"\n\n\"Well, but would you like to change this minute with Sergey Ivanovitch?\"\nsaid Kitty. \"Would you like to do this work for the general good, and to\nlove the task set you, as he does, and nothing else?\"\n\n\"Of course not,\" said Levin. \"But I'm so happy that I don't understand\nanything. So you think he'll make her an offer today?\" he added after a\nbrief silence.\n\n\"I think so, and I don't think so. Only, I'm awfully anxious for it.\nHere, wait a minute.\" She stooped down and picked a wild camomile at the\nedge of the path. \"Come, count: he does propose, he doesn't,\" she said,\ngiving him the flower.\n\n\"He does, he doesn't,\" said Levin, tearing off the white petals.\n\n\"No, no!\" Kitty, snatching at his hand, stopped him. She had been\nwatching his fingers with interest. \"You picked off two.\"\n\n\"Oh, but see, this little one shan't count to make up,\" said Levin,\ntearing off a little half-grown petal. \"Here's the wagonette overtaking\nus.\"\n\n\"Aren't you tired, Kitty?\" called the princess.\n\n\"Not in the least.\"\n\n\"If you are you can get in, as the horses are quiet and walking.\"\n\nBut it was not worth while to get in, they were quite near the place,\nand all walked on together.\n\n\n\nChapter 4\n\n\nVarenka, with her white kerchief on her black hair, surrounded by the\nchildren, gaily and good-humoredly looking after them, and at the same\ntime visibly excited at the possibility of receiving a declaration from\nthe man she cared for, was very attractive. Sergey Ivanovitch walked\nbeside her, and never left off admiring her. Looking at her, he recalled\nall the delightful things he had heard from her lips, all the good he\nknew about her, and became more and more conscious that the feeling he\nhad for her was something special that he had felt long, long ago, and\nonly once, in his early youth. The feeling of happiness in being near\nher continually grew, and at last reached such a point that, as he put a\nhuge, slender-stalked agaric fungus in her basket, he looked straight\ninto her face, and noticing the flush of glad and alarmed excitement\nthat overspread her face, he was confused himself, and smiled to her in\nsilence a smile that said too much.\n\n\"If so,\" he said to himself, \"I ought to think it over and make up my\nmind, and not give way like a boy to the impulse of a moment.\"\n\n\"I'm going to pick by myself apart from all the rest, or else my efforts\nwill make no show,\" he said, and he left the edge of the forest where\nthey were walking on low silky grass between old birch trees standing\nfar apart, and went more into the heart of the wood, where between the\nwhite birch trunks there were gray trunks of aspen and dark bushes of\nhazel. Walking some forty paces away, Sergey Ivanovitch, knowing he was\nout of sight, stood still behind a bushy spindle-tree in full flower\nwith its rosy red catkins. It was perfectly still all round him. Only\noverhead in the birches under which he stood, the flies, like a swarm of\nbees, buzzed unceasingly, and from time to time the children's voices\nwere floated across to him. All at once he heard, not far from the edge\nof the wood, the sound of Varenka's contralto voice, calling Grisha, and\na smile of delight passed over Sergey Ivanovitch's face. Conscious of\nthis smile, he shook his head disapprovingly at his own condition, and\ntaking out a cigar, he began lighting it. For a long while he could not\nget a match to light against the trunk of a birch tree. The soft scales\nof the white bark rubbed off the phosphorus, and the light went out. At\nlast one of the matches burned, and the fragrant cigar smoke, hovering\nuncertainly in flat, wide coils, stretched away forwards and upwards\nover a bush under the overhanging branches of a birch tree. Watching the\nstreak of smoke, Sergey Ivanovitch walked gently on, deliberating on his\nposition.\n\n\"Why not?\" he thought. \"If it were only a passing fancy or a passion, if\nit were only this attraction--this mutual attraction (I can call it a\n_mutual_ attraction), but if I felt that it was in contradiction with\nthe whole bent of my life--if I felt that in giving way to this\nattraction I should be false to my vocation and my duty ... but it's not\nso. The only thing I can say against it is that, when I lost Marie, I\nsaid to myself that I would remain faithful to her memory. That's the\nonly thing I can say against my feeling.... That's a great thing,\"\nSergey Ivanovitch said to himself, feeling at the same time that this\nconsideration had not the slightest importance for him personally, but\nwould only perhaps detract from his romantic character in the eyes of\nothers. \"But apart from that, however much I searched, I should never\nfind anything to say against my feeling. If I were choosing by\nconsiderations of suitability alone, I could not have found anything\nbetter.\"\n\nHowever many women and girls he thought of whom he knew, he could not\nthink of a girl who united to such a degree all, positively all, the\nqualities he would wish to see in his wife. She had all the charm and\nfreshness of youth, but she was not a child; and if she loved him, she\nloved him consciously as a woman ought to love; that was one thing.\nAnother point: she was not only far from being worldly, but had an\nunmistakable distaste for worldly society, and at the same time she knew\nthe world, and had all the ways of a woman of the best society, which\nwere absolutely essential to Sergey Ivanovitch's conception of the woman\nwho was to share his life. Thirdly: she was religious, and not like a\nchild, unconsciously religious and good, as Kitty, for example, was, but\nher life was founded on religious principles. Even in trifling matters,\nSergey Ivanovitch found in her all that he wanted in his wife: she was\npoor and alone in the world, so she would not bring with her a mass of\nrelations and their influence into her husband's house, as he saw now in\nKitty's case. She would owe everything to her husband, which was what he\nhad always desired too for his future family life. And this girl, who\nunited all these qualities, loved him. He was a modest man, but he could\nnot help seeing it. And he loved her. There was one consideration\nagainst it--his age. But he came of a long-lived family, he had not a\nsingle gray hair, no one would have taken him for forty, and he\nremembered Varenka's saying that it was only in Russia that men of fifty\nthought themselves old, and that in France a man of fifty considers\nhimself _dans la force de l'age_, while a man of forty is _un jeune\nhomme_. But what did the mere reckoning of years matter when he felt as\nyoung in heart as he had been twenty years ago? Was it not youth to feel\nas he felt now, when coming from the other side to the edge of the wood\nhe saw in the glowing light of the slanting sunbeams the gracious figure\nof Varenka in her yellow gown with her basket, walking lightly by the\ntrunk of an old birch tree, and when this impression of the sight of\nVarenka blended so harmoniously with the beauty of the view, of the\nyellow oatfield lying bathed in the slanting sunshine, and beyond it the\ndistant ancient forest flecked with yellow and melting into the blue of\nthe distance? His heart throbbed joyously. A softened feeling came over\nhim. He felt that he had made up his mind. Varenka, who had just\ncrouched down to pick a mushroom, rose with a supple movement and looked\nround. Flinging away the cigar, Sergey Ivanovitch advanced with resolute\nsteps towards her.\n\n\n\nChapter 5\n\n\n\"Varvara Andreevna, when I was very young, I set before myself the ideal\nof the woman I loved and should be happy to call my wife. I have lived\nthrough a long life, and now for the first time I have met what I\nsought--in you. I love you, and offer you my hand.\"\n\nSergey Ivanovitch was saying this to himself while he was ten paces from\nVarvara. Kneeling down, with her hands over the mushrooms to guard them\nfrom Grisha, she was calling little Masha.\n\n\"Come here, little ones! There are so many!\" she was saying in her\nsweet, deep voice.\n\nSeeing Sergey Ivanovitch approaching, she did not get up and did not\nchange her position, but everything told him that she felt his presence\nand was glad of it.\n\n\"Well, did you find some?\" she asked from under the white kerchief,\nturning her handsome, gently smiling face to him.\n\n\"Not one,\" said Sergey Ivanovitch. \"Did you?\"\n\nShe did not answer, busy with the children who thronged about her.\n\n\"That one too, near the twig,\" she pointed out to little Masha a little\nfungus, split in half across its rosy cap by the dry grass from under\nwhich it thrust itself. Varenka got up while Masha picked the fungus,\nbreaking it into two white halves. \"This brings back my childhood,\" she\nadded, moving apart from the children beside Sergey Ivanovitch.\n\nThey walked on for some steps in silence. Varenka saw that he wanted to\nspeak; she guessed of what, and felt faint with joy and panic. They had\nwalked so far away that no one could hear them now, but still he did not\nbegin to speak. It would have been better for Varenka to be silent.\nAfter a silence it would have been easier for them to say what they\nwanted to say than after talking about mushrooms. But against her own\nwill, as it were accidentally, Varenka said:\n\n\"So you found nothing? In the middle of the wood there are always fewer,\nthough.\" Sergey Ivanovitch sighed and made no answer. He was annoyed\nthat she had spoken about the mushrooms. He wanted to bring her back to\nthe first words she had uttered about her childhood; but after a pause\nof some length, as though against his own will, he made an observation\nin response to her last words.\n\n\"I have heard that the white edible funguses are found principally at\nthe edge of the wood, though I can't tell them apart.\"\n\nSome minutes more passed, they moved still further away from the\nchildren, and were quite alone. Varenka's heart throbbed so that she\nheard it beating, and felt that she was turning red and pale and red\nagain.\n\nTo be the wife of a man like Koznishev, after her position with Madame\nStahl, was to her imagination the height of happiness. Besides, she was\nalmost certain that she was in love with him. And this moment it would\nhave to be decided. She felt frightened. She dreaded both his speaking\nand his not speaking.\n\nNow or never it must be said--that Sergey Ivanovitch felt too.\nEverything in the expression, the flushed cheeks and the downcast eyes\nof Varenka betrayed a painful suspense. Sergey Ivanovitch saw it and\nfelt sorry for her. He felt even that to say nothing now would be a\nslight to her. Rapidly in his own mind he ran over all the arguments in\nsupport of his decision. He even said over to himself the words in which\nhe meant to put his offer, but instead of those words, some utterly\nunexpected reflection that occurred to him made him ask:\n\n\"What is the difference between the 'birch' mushroom and the 'white'\nmushroom?\"\n\nVarenka's lips quivered with emotion as she answered:\n\n\"In the top part there is scarcely any difference, it's in the stalk.\"\n\nAnd as soon as these words were uttered, both he and she felt that it\nwas over, that what was to have been said would not be said; and their\nemotion, which had up to then been continually growing more intense,\nbegan to subside.\n\n\"The birch mushroom's stalk suggests a dark man's chin after two days\nwithout shaving,\" said Sergey Ivanovitch, speaking quite calmly now.\n\n\"Yes, that's true,\" answered Varenka smiling, and unconsciously the\ndirection of their walk changed. They began to turn towards the\nchildren. Varenka felt both sore and ashamed; at the same time she had a\nsense of relief.\n\nWhen he had got home again and went over the whole subject, Sergey\nIvanovitch thought his previous decision had been a mistaken one. He\ncould not be false to the memory of Marie.\n\n\"Gently, children, gently!\" Levin shouted quite angrily to the children,\nstanding before his wife to protect her when the crowd of children flew\nwith shrieks of delight to meet them.\n\nBehind the children Sergey Ivanovitch and Varenka walked out of the\nwood. Kitty had no need to ask Varenka; she saw from the calm and\nsomewhat crestfallen faces of both that her plans had not come off.\n\n\"Well?\" her husband questioned her as they were going home again.\n\n\"It doesn't bite,\" said Kitty, her smile and manner of speaking\nrecalling her father, a likeness Levin often noticed with pleasure.\n\n\"How doesn't bite?\"\n\n\"I'll show you,\" she said, taking her husband's hand, lifting it to her\nmouth, and just faintly brushing it with closed lips. \"Like a kiss on a\npriest's hand.\"\n\n\"Which didn't it bite with?\" he said, laughing.\n\n\"Both. But it should have been like this...\"\n\n\"There are some peasants coming...\"\n\n\"Oh, they didn't see.\"\n\n\n\nChapter 6\n\n\nDuring the time of the children's tea the grown-up people sat in the\nbalcony and talked as though nothing had happened, though they all,\nespecially Sergey Ivanovitch and Varenka, were very well aware that\nthere had happened an event which, though negative, was of very great\nimportance. They both had the same feeling, rather like that of a\nschoolboy after an examination, which has left him in the same class or\nshut him out of the school forever. Everyone present, feeling too that\nsomething had happened, talked eagerly about extraneous subjects. Levin\nand Kitty were particularly happy and conscious of their love that\nevening. And their happiness in their love seemed to imply a\ndisagreeable slur on those who would have liked to feel the same and\ncould not--and they felt a prick of conscience.\n\n\"Mark my words, Alexander will not come,\" said the old princess.\n\nThat evening they were expecting Stepan Arkadyevitch to come down by\ntrain, and the old prince had written that possibly he might come too.\n\n\"And I know why,\" the princess went on; \"he says that young people ought\nto be left alone for a while at first.\"\n\n\"But papa has left us alone. We've never seen him,\" said Kitty.\n\"Besides, we're not young people!--we're old, married people by now.\"\n\n\"Only if he doesn't come, I shall say good-bye to you children,\" said\nthe princess, sighing mournfully.\n\n\"What nonsense, mamma!\" both the daughters fell upon her at once.\n\n\"How do you suppose he is feeling? Why, now...\"\n\nAnd suddenly there was an unexpected quiver in the princess's voice. Her\ndaughters were silent, and looked at one another. \"Maman always finds\nsomething to be miserable about,\" they said in that glance. They did not\nknow that happy as the princess was in her daughter's house, and useful\nas she felt herself to be there, she had been extremely miserable, both\non her own account and her husband's, ever since they had married their\nlast and favorite daughter, and the old home had been left empty.\n\n\"What is it, Agafea Mihalovna?\" Kitty asked suddenly of Agafea\nMihalovna, who was standing with a mysterious air, and a face full of\nmeaning.\n\n\"About supper.\"\n\n\"Well, that's right,\" said Dolly; \"you go and arrange about it, and I'll\ngo and hear Grisha repeat his lesson, or else he will have nothing done\nall day.\"\n\n\"That's my lesson! No, Dolly, I'm going,\" said Levin, jumping up.\n\nGrisha, who was by now at a high school, had to go over the lessons of\nthe term in the summer holidays. Darya Alexandrovna, who had been\nstudying Latin with her son in Moscow before, had made it a rule on\ncoming to the Levins' to go over with him, at least once a day, the most\ndifficult lessons of Latin and arithmetic. Levin had offered to take her\nplace, but the mother, having once overheard Levin's lesson, and\nnoticing that it was not given exactly as the teacher in Moscow had\ngiven it, said resolutely, though with much embarrassment and anxiety\nnot to mortify Levin, that they must keep strictly to the book as the\nteacher had done, and that she had better undertake it again herself.\nLevin was amazed both at Stepan Arkadyevitch, who, by neglecting his\nduty, threw upon the mother the supervision of studies of which she had\nno comprehension, and at the teachers for teaching the children so\nbadly. But he promised his sister-in-law to give the lessons exactly as\nshe wished. And he went on teaching Grisha, not in his own way, but by\nthe book, and so took little interest in it, and often forgot the hour\nof the lesson. So it had been today.\n\n\"No, I'm going, Dolly, you sit still,\" he said. \"We'll do it all\nproperly, like the book. Only when Stiva comes, and we go out shooting,\nthen we shall have to miss it.\"\n\nAnd Levin went to Grisha.\n\nVarenka was saying the same thing to Kitty. Even in the happy,\nwell-ordered household of the Levins Varenka had succeeded in making\nherself useful.\n\n\"I'll see to the supper, you sit still,\" she said, and got up to go to\nAgafea Mihalovna.\n\n\"Yes, yes, most likely they've not been able to get chickens. If so,\nours...\"\n\n\"Agafea Mihalovna and I will see about it,\" and Varenka vanished with\nher.\n\n\"What a nice girl!\" said the princess.\n\n\"Not nice, maman; she's an exquisite girl; there's no one else like\nher.\"\n\n\"So you are expecting Stepan Arkadyevitch today?\" said Sergey\nIvanovitch, evidently not disposed to pursue the conversation about\nVarenka. \"It would be difficult to find two sons-in-law more unlike than\nyours,\" he said with a subtle smile. \"One all movement, only living in\nsociety, like a fish in water; the other our Kostya, lively, alert,\nquick in everything, but as soon as he is in society, he either sinks\ninto apathy, or struggles helplessly like a fish on land.\"\n\n\"Yes, he's very heedless,\" said the princess, addressing Sergey\nIvanovitch. \"I've been meaning, indeed, to ask you to tell him that it's\nout of the question for her\" (she indicated Kitty) \"to stay here; that\nshe positively must come to Moscow. He talks of getting a doctor\ndown...\"\n\n\"Maman, he'll do everything; he has agreed to everything,\" Kitty said,\nangry with her mother for appealing to Sergey Ivanovitch to judge in\nsuch a matter.\n\nIn the middle of their conversation they heard the snorting of horses\nand the sound of wheels on the gravel. Dolly had not time to get up to\ngo and meet her husband, when from the window of the room below, where\nGrisha was having his lesson, Levin leaped out and helped Grisha out\nafter him.\n\n\"It's Stiva!\" Levin shouted from under the balcony. \"We've finished,\nDolly, don't be afraid!\" he added, and started running like a boy to\nmeet the carriage.\n\n\"_Is ea id, ejus, ejus, ejus!_\" shouted Grisha, skipping along the\navenue.\n\n\"And some one else too! Papa, of course!\" cried Levin, stopping at the\nentrance of the avenue. \"Kitty, don't come down the steep staircase, go\nround.\"\n\nBut Levin had been mistaken in taking the person sitting in the carriage\nfor the old prince. As he got nearer to the carriage he saw beside\nStepan Arkadyevitch not the prince but a handsome, stout young man in a\nScotch cap, with long ends of ribbon behind. This was Vassenka\nVeslovsky, a distant cousin of the Shtcherbatskys, a brilliant young\ngentleman in Petersburg and Moscow society. \"A capital fellow, and a\nkeen sportsman,\" as Stepan Arkadyevitch said, introducing him.\n\nNot a whit abashed by the disappointment caused by his having come in\nplace of the old prince, Veslovsky greeted Levin gaily, claiming\nacquaintance with him in the past, and snatching up Grisha into the\ncarriage, lifted him over the pointer that Stepan Arkadyevitch had\nbrought with him.\n\nLevin did not get into the carriage, but walked behind. He was rather\nvexed at the non-arrival of the old prince, whom he liked more and more\nthe more he saw of him, and also at the arrival of this Vassenka\nVeslovsky, a quite uncongenial and superfluous person. He seemed to him\nstill more uncongenial and superfluous when, on approaching the steps\nwhere the whole party, children and grown-up, were gathered together in\nmuch excitement, Levin saw Vassenka Veslovsky, with a particularly warm\nand gallant air, kissing Kitty's hand.\n\n\"Your wife and I are cousins and very old friends,\" said Vassenka\nVeslovsky, once more shaking Levin's hand with great warmth.\n\n\"Well, are there plenty of birds?\" Stepan Arkadyevitch said to Levin,\nhardly leaving time for everyone to utter their greetings. \"We've come\nwith the most savage intentions. Why, maman, they've not been in Moscow\nsince! Look, Tanya, here's something for you! Get it, please, it's in\nthe carriage, behind!\" he talked in all directions. \"How pretty you've\ngrown, Dolly,\" he said to his wife, once more kissing her hand, holding\nit in one of his, and patting it with the other.\n\nLevin, who a minute before had been in the happiest frame of mind, now\nlooked darkly at everyone, and everything displeased him.\n\n\"Who was it he kissed yesterday with those lips?\" he thought, looking at\nStepan Arkadyevitch's tender demonstrations to his wife. He looked at\nDolly, and he did not like her either.\n\n\"She doesn't believe in his love. So what is she so pleased about?\nRevolting!\" thought Levin.\n\nHe looked at the princess, who had been so dear to him a minute before,\nand he did not like the manner in which she welcomed this Vassenka, with\nhis ribbons, just as though she were in her own house.\n\nEven Sergey Ivanovitch, who had come out too onto the steps, seemed to\nhim unpleasant with the show of cordiality with which he met Stepan\nArkadyevitch, though Levin knew that his brother neither liked nor\nrespected Oblonsky.\n\nAnd Varenka, even she seemed hateful, with her air _sainte nitouche_\nmaking the acquaintance of this gentleman, while all the while she was\nthinking of nothing but getting married.\n\nAnd more hateful than anyone was Kitty for falling in with the tone of\ngaiety with which this gentleman regarded his visit in the country, as\nthough it were a holiday for himself and everyone else. And, above all,\nunpleasant was that particular smile with which she responded to his\nsmile.\n\nNoisily talking, they all went into the house; but as soon as they were\nall seated, Levin turned and went out.\n\nKitty saw something was wrong with her husband. She tried to seize a\nmoment to speak to him alone, but he made haste to get away from her,\nsaying he was wanted at the counting-house. It was long since his own\nwork on the estate had seemed to him so important as at that moment.\n\"It's all holiday for them,\" he thought; \"but these are no holiday\nmatters, they won't wait, and there's no living without them.\"\n\n\n\nChapter 7\n\n\nLevin came back to the house only when they sent to summon him to\nsupper. On the stairs were standing Kitty and Agafea Mihalovna,\nconsulting about wines for supper.\n\n\"But why are you making all this fuss? Have what we usually do.\"\n\n\"No, Stiva doesn't drink ... Kostya, stop, what's the matter?\" Kitty\nbegan, hurrying after him, but he strode ruthlessly away to the dining\nroom without waiting for her, and at once joined in the lively general\nconversation which was being maintained there by Vassenka Veslovsky and\nStepan Arkadyevitch.\n\n\"Well, what do you say, are we going shooting tomorrow?\" said Stepan\nArkadyevitch.\n\n\"Please, do let's go,\" said Veslovsky, moving to another chair, where he\nsat down sideways, with one fat leg crossed under him.\n\n\"I shall be delighted, we will go. And have you had any shooting yet\nthis year?\" said Levin to Veslovsky, looking intently at his leg, but\nspeaking with that forced amiability that Kitty knew so well in him, and\nthat was so out of keeping with him. \"I can't answer for our finding\ngrouse, but there are plenty of snipe. Only we ought to start early.\nYou're not tired? Aren't you tired, Stiva?\"\n\n\"Me tired? I've never been tired yet. Suppose we stay up all night.\nLet's go for a walk!\"\n\n\"Yes, really, let's not go to bed at all! Capital!\" Veslovsky chimed in.\n\n\"Oh, we all know you can do without sleep, and keep other people up\ntoo,\" Dolly said to her husband, with that faint note of irony in her\nvoice which she almost always had now with her husband. \"But to my\nthinking, it's time for bed now.... I'm going, I don't want supper.\"\n\n\"No, do stay a little, Dolly,\" said Stepan Arkadyevitch, going round to\nher side behind the table where they were having supper. \"I've so much\nstill to tell you.\"\n\n\"Nothing really, I suppose.\"\n\n\"Do you know Veslovsky has been at Anna's, and he's going to them again?\nYou know they're hardly fifty miles from you, and I too must certainly\ngo over there. Veslovsky, come here!\"\n\nVassenka crossed over to the ladies, and sat down beside Kitty.\n\n\"Ah, do tell me, please; you have stayed with her? How was she?\" Darya\nAlexandrovna appealed to him.\n\nLevin was left at the other end of the table, and though never pausing\nin his conversation with the princess and Varenka, he saw that there was\nan eager and mysterious conversation going on between Stepan\nArkadyevitch, Dolly, Kitty, and Veslovsky. And that was not all. He saw\non his wife's face an expression of real feeling as she gazed with fixed\neyes on the handsome face of Vassenka, who was telling them something\nwith great animation.\n\n\"It's exceedingly nice at their place,\" Veslovsky was telling them about\nVronsky and Anna. \"I can't, of course, take it upon myself to judge, but\nin their house you feel the real feeling of home.\"\n\n\"What do they intend doing?\"\n\n\"I believe they think of going to Moscow.\"\n\n\"How jolly it would be for us all to go over to them together! When are\nyou going there?\" Stepan Arkadyevitch asked Vassenka.\n\n\"I'm spending July there.\"\n\n\"Will you go?\" Stepan Arkadyevitch said to his wife.\n\n\"I've been wanting to a long while; I shall certainly go,\" said Dolly.\n\"I am sorry for her, and I know her. She's a splendid woman. I will go\nalone, when you go back, and then I shall be in no one's way. And it\nwill be better indeed without you.\"\n\n\"To be sure,\" said Stepan Arkadyevitch. \"And you, Kitty?\"\n\n\"I? Why should I go?\" Kitty said, flushing all over, and she glanced\nround at her husband.\n\n\"Do you know Anna Arkadyevna, then?\" Veslovsky asked her. \"She's a very\nfascinating woman.\"\n\n\"Yes,\" she answered Veslovsky, crimsoning still more. She got up and\nwalked across to her husband.\n\n\"Are you going shooting, then, tomorrow?\" she said.\n\nHis jealousy had in these few moments, especially at the flush that had\noverspread her cheeks while she was talking to Veslovsky, gone far\nindeed. Now as he heard her words, he construed them in his own fashion.\nStrange as it was to him afterwards to recall it, it seemed to him at\nthe moment clear that in asking whether he was going shooting, all she\ncared to know was whether he would give that pleasure to Vassenka\nVeslovsky, with whom, as he fancied, she was in love.\n\n\"Yes, I'm going,\" he answered her in an unnatural voice, disagreeable to\nhimself.\n\n\"No, better spend the day here tomorrow, or Dolly won't see anything of\nher husband, and set off the day after,\" said Kitty.\n\nThe motive of Kitty's words was interpreted by Levin thus: \"Don't\nseparate me from _him_. I don't care about _your_ going, but do let me\nenjoy the society of this delightful young man.\"\n\n\"Oh, if you wish, we'll stay here tomorrow,\" Levin answered, with\npeculiar amiability.\n\nVassenka meanwhile, utterly unsuspecting the misery his presence had\noccasioned, got up from the table after Kitty, and watching her with\nsmiling and admiring eyes, he followed her.\n\nLevin saw that look. He turned white, and for a minute he could hardly\nbreathe. \"How dare he look at my wife like that!\" was the feeling that\nboiled within him.\n\n\"Tomorrow, then? Do, please, let us go,\" said Vassenka, sitting down on\na chair, and again crossing his leg as his habit was.\n\nLevin's jealousy went further still. Already he saw himself a deceived\nhusband, looked upon by his wife and her lover as simply necessary to\nprovide them with the conveniences and pleasures of life.... But in\nspite of that he made polite and hospitable inquiries of Vassenka about\nhis shooting, his gun, and his boots, and agreed to go shooting next\nday.\n\nHappily for Levin, the old princess cut short his agonies by getting up\nherself and advising Kitty to go to bed. But even at this point Levin\ncould not escape another agony. As he said good-night to his hostess,\nVassenka would again have kissed her hand, but Kitty, reddening, drew\nback her hand and said with a naive bluntness, for which the old\nprincess scolded her afterwards:\n\n\"We don't like that fashion.\"\n\nIn Levin's eyes she was to blame for having allowed such relations to\narise, and still more to blame for showing so awkwardly that she did not\nlike them.\n\n\"Why, how can one want to go to bed!\" said Stepan Arkadyevitch, who,\nafter drinking several glasses of wine at supper, was now in his most\ncharming and sentimental humor. \"Look, Kitty,\" he said, pointing to the\nmoon, which had just risen behind the lime trees--\"how exquisite!\nVeslovsky, this is the time for a serenade. You know, he has a splendid\nvoice; we practiced songs together along the road. He has brought some\nlovely songs with him, two new ones. Varvara Andreevna and he must sing\nsome duets.\"\n\nWhen the party had broken up, Stepan Arkadyevitch walked a long while\nabout the avenue with Veslovsky; their voices could be heard singing one\nof the new songs.\n\nLevin hearing these voices sat scowling in an easy-chair in his wife's\nbedroom, and maintained an obstinate silence when she asked him what was\nwrong. But when at last with a timid glance she hazarded the question:\n\"Was there perhaps something you disliked about Veslovsky?\"--it all\nburst out, and he told her all. He was humiliated himself at what he was\nsaying, and that exasperated him all the more.\n\nHe stood facing her with his eyes glittering menacingly under his\nscowling brows, and he squeezed his strong arms across his chest, as\nthough he were straining every nerve to hold himself in. The expression\nof his face would have been grim, and even cruel, if it had not at the\nsame time had a look of suffering which touched her. His jaws were\ntwitching, and his voice kept breaking.\n\n\"You must understand that I'm not jealous, that's a nasty word. I can't\nbe jealous, and believe that.... I can't say what I feel, but this is\nawful.... I'm not jealous, but I'm wounded, humiliated that anybody dare\nthink, that anybody dare look at you with eyes like that.\"\n\n\"Eyes like what?\" said Kitty, trying as conscientiously as possible to\nrecall every word and gesture of that evening and every shade implied in\nthem.\n\nAt the very bottom of her heart she did think there had been something\nprecisely at the moment when he had crossed over after her to the other\nend of the table; but she dared not own it even to herself, and would\nhave been even more unable to bring herself to say so to him, and so\nincrease his suffering.\n\n\"And what can there possibly be attractive about me as I am now?...\"\n\n\"Ah!\" he cried, clutching at his head, \"you shouldn't say that!... If\nyou had been attractive then...\"\n\n\"Oh, no, Kostya, oh, wait a minute, oh, do listen!\" she said, looking at\nhim with an expression of pained commiseration. \"Why, what can you be\nthinking about! When for me there's no one in the world, no one, no\none!... Would you like me never to see anyone?\"\n\nFor the first minute she had been offended at his jealousy; she was\nangry that the slightest amusement, even the most innocent, should be\nforbidden her; but now she would readily have sacrificed, not merely\nsuch trifles, but everything, for his peace of mind, to save him from\nthe agony he was suffering.\n\n\"You must understand the horror and comedy of my position,\" he went on\nin a desperate whisper; \"that he's in my house, that he's done nothing\nimproper positively except his free and easy airs and the way he sits on\nhis legs. He thinks it's the best possible form, and so I'm obliged to\nbe civil to him.\"\n\n\"But, Kostya, you're exaggerating,\" said Kitty, at the bottom of her\nheart rejoicing at the depth of his love for her, shown now in his\njealousy.\n\n\"The most awful part of it all is that you're just as you always are,\nand especially now when to me you're something sacred, and we're so\nhappy, so particularly happy--and all of a sudden a little wretch....\nHe's not a little wretch; why should I abuse him? I have nothing to do\nwith him. But why should my, and your, happiness...\"\n\n\"Do you know, I understand now what it's all come from,\" Kitty was\nbeginning.\n\n\"Well, what? what?\"\n\n\"I saw how you looked while we were talking at supper.\"\n\n\"Well, well!\" Levin said in dismay.\n\nShe told him what they had been talking about. And as she told him, she\nwas breathless with emotion. Levin was silent for a space, then he\nscanned her pale and distressed face, and suddenly he clutched at his\nhead.\n\n\"Katya, I've been worrying you! Darling, forgive me! It's madness!\nKatya, I'm a criminal. And how could you be so distressed at such\nidiocy?\"\n\n\"Oh, I was sorry for you.\"\n\n\"For me? for me? How mad I am!... But why make you miserable? It's awful\nto think that any outsider can shatter our happiness.\"\n\n\"It's humiliating too, of course.\"\n\n\"Oh, then I'll keep him here all the summer, and will overwhelm him with\ncivility,\" said Levin, kissing her hands. \"You shall see. Tomorrow....\nOh, yes, we are going tomorrow.\"\n\n\n\nChapter 8\n\n\nNext day, before the ladies were up, the wagonette and a trap for the\nshooting party were at the door, and Laska, aware since early morning\nthat they were going shooting, after much whining and darting to and\nfro, had sat herself down in the wagonette beside the coachman, and,\ndisapproving of the delay, was excitedly watching the door from which\nthe sportsmen still did not come out. The first to come out was Vassenka\nVeslovsky, in new high boots that reached half-way up his thick thighs,\nin a green blouse, with a new Russian leather cartridge-belt, and in his\nScotch cap with ribbons, with a brand-new English gun without a sling.\nLaska flew up to him, welcomed him, and jumping up, asked him in her own\nway whether the others were coming soon, but getting no answer from him,\nshe returned to her post of observation and sank into repose again, her\nhead on one side, and one ear pricked up to listen. At last the door\nopened with a creak, and Stepan Arkadyevitch's spot-and-tan pointer Krak\nflew out, running round and round and turning over in the air. Stepan\nArkadyevitch himself followed with a gun in his hand and a cigar in his\nmouth.\n\n\"Good dog, good dog, Krak!\" he cried encouragingly to the dog, who put\nhis paws up on his chest, catching at his game bag. Stepan Arkadyevitch\nwas dressed in rough leggings and spats, in torn trousers and a short\ncoat. On his head there was a wreck of a hat of indefinite form, but his\ngun of a new patent was a perfect gem, and his game bag and cartridge\nbelt, though worn, were of the very best quality.\n\nVassenka Veslovsky had had no notion before that it was truly _chic_ for\na sportsman to be in tatters, but to have his shooting outfit of the\nbest quality. He saw it now as he looked at Stepan Arkadyevitch, radiant\nin his rags, graceful, well-fed, and joyous, a typical Russian nobleman.\nAnd he made up his mind that next time he went shooting he would\ncertainly adopt the same get-up.\n\n\"Well, and what about our host?\" he asked.\n\n\"A young wife,\" said Stepan Arkadyevitch, smiling.\n\n\"Yes, and such a charming one!\"\n\n\"He came down dressed. No doubt he's run up to her again.\"\n\nStepan Arkadyevitch guessed right. Levin had run up again to his wife to\nask her once more if she forgave him for his idiocy yesterday, and,\nmoreover, to beg her for Christ's sake to be more careful. The great\nthing was for her to keep away from the children--they might any minute\npush against her. Then he had once more to hear her declare that she was\nnot angry with him for going away for two days, and to beg her to be\nsure to send him a note next morning by a servant on horseback, to write\nhim, if it were but two words only, to let him know that all was well\nwith her.\n\nKitty was distressed, as she always was, at parting for a couple of days\nfrom her husband, but when she saw his eager figure, looking big and\nstrong in his shooting-boots and his white blouse, and a sort of\nsportsman elation and excitement incomprehensible to her, she forgot her\nown chagrin for the sake of his pleasure, and said good-bye to him\ncheerfully.\n\n\"Pardon, gentlemen!\" he said, running out onto the steps. \"Have you put\nthe lunch in? Why is the chestnut on the right? Well, it doesn't matter.\nLaska, down; go and lie down!\"\n\n\"Put it with the herd of oxen,\" he said to the herdsman, who was waiting\nfor him at the steps with some question. \"Excuse me, here comes another\nvillain.\"\n\nLevin jumped out of the wagonette, in which he had already taken his\nseat, to meet the carpenter, who came towards the steps with a rule in\nhis hand.\n\n\"You didn't come to the counting house yesterday, and now you're\ndetaining me. Well, what is it?\"\n\n\"Would your honor let me make another turning? It's only three steps to\nadd. And we make it just fit at the same time. It will be much more\nconvenient.\"\n\n\"You should have listened to me,\" Levin answered with annoyance. \"I\nsaid: Put the lines and then fit in the steps. Now there's no setting it\nright. Do as I told you, and make a new staircase.\"\n\nThe point was that in the lodge that was being built the carpenter had\nspoiled the staircase, fitting it together without calculating the space\nit was to fill, so that the steps were all sloping when it was put in\nplace. Now the carpenter wanted, keeping the same staircase, to add\nthree steps.\n\n\"It will be much better.\"\n\n\"But where's your staircase coming out with its three steps?\"\n\n\"Why, upon my word, sir,\" the carpenter said with a contemptuous smile.\n\"It comes out right at the very spot. It starts, so to speak,\" he said,\nwith a persuasive gesture; \"it comes down, and comes down, and comes\nout.\"\n\n\"But three steps will add to the length too ... where is it to come\nout?\"\n\n\"Why, to be sure, it'll start from the bottom and go up and go up, and\ncome out so,\" the carpenter said obstinately and convincingly.\n\n\"It'll reach the ceiling and the wall.\"\n\n\"Upon my word! Why, it'll go up, and up, and come out like this.\"\n\nLevin took out a ramrod and began sketching him the staircase in the\ndust.\n\n\"There, do you see?\"\n\n\"As your honor likes,\" said the carpenter, with a sudden gleam in his\neyes, obviously understanding the thing at last. \"It seems it'll be best\nto make a new one.\"\n\n\"Well, then, do it as you're told,\" Levin shouted, seating himself in\nthe wagonette. \"Down! Hold the dogs, Philip!\"\n\nLevin felt now at leaving behind all his family and household cares such\nan eager sense of joy in life and expectation that he was not disposed\nto talk. Besides that, he had that feeling of concentrated excitement\nthat every sportsman experiences as he approaches the scene of action.\nIf he had anything on his mind at that moment, it was only the doubt\nwhether they would start anything in the Kolpensky marsh, whether Laska\nwould show to advantage in comparison with Krak, and whether he would\nshoot well that day himself. Not to disgrace himself before a new\nspectator--not to be outdone by Oblonsky--that too was a thought that\ncrossed his brain.\n\nOblonsky was feeling the same, and he too was not talkative. Vassenka\nVeslovsky kept up alone a ceaseless flow of cheerful chatter. As he\nlistened to him now, Levin felt ashamed to think how unfair he had been\nto him the day before. Vassenka was really a nice fellow, simple,\ngood-hearted, and very good-humored. If Levin had met him before he was\nmarried, he would have made friends with him. Levin rather disliked his\nholiday attitude to life and a sort of free and easy assumption of\nelegance. It was as though he assumed a high degree of importance in\nhimself that could not be disputed, because he had long nails and a\nstylish cap, and everything else to correspond; but this could be\nforgiven for the sake of his good nature and good breeding. Levin liked\nhim for his good education, for speaking French and English with such an\nexcellent accent, and for being a man of his world.\n\nVassenka was extremely delighted with the left horse, a horse of the Don\nSteppes. He kept praising him enthusiastically. \"How fine it must be\ngalloping over the steppes on a steppe horse! Eh? isn't it?\" he said. He\nhad imagined riding on a steppe horse as something wild and romantic,\nand it turned out nothing of the sort. But his simplicity, particularly\nin conjunction with his good looks, his amiable smile, and the grace of\nhis movements, was very attractive. Either because his nature was\nsympathetic to Levin, or because Levin was trying to atone for his sins\nof the previous evening by seeing nothing but what was good in him,\nanyway he liked his society.\n\nAfter they had driven over two miles from home, Veslovsky all at once\nfelt for a cigar and his pocketbook, and did not know whether he had\nlost them or left them on the table. In the pocketbook there were\nthirty-seven pounds, and so the matter could not be left in uncertainty.\n\n\"Do you know what, Levin, I'll gallop home on that left trace-horse.\nThat will be splendid. Eh?\" he said, preparing to get out.\n\n\"No, why should you?\" answered Levin, calculating that Vassenka could\nhardly weigh less than seventeen stone. \"I'll send the coachman.\"\n\nThe coachman rode back on the trace-horse, and Levin himself drove the\nremaining pair.\n\n\n\nChapter 9\n\n\n\"Well, now what's our plan of campaign? Tell us all about it,\" said\nStepan Arkadyevitch.\n\n\"Our plan is this. Now we're driving to Gvozdyov. In Gvozdyov there's a\ngrouse marsh on this side, and beyond Gvozdyov come some magnificent\nsnipe marshes where there are grouse too. It's hot now, and we'll get\nthere--it's fifteen miles or so--towards evening and have some evening\nshooting; we'll spend the night there and go on tomorrow to the bigger\nmoors.\"\n\n\"And is there nothing on the way?\"\n\n\"Yes; but we'll reserve ourselves; besides it's hot. There are two nice\nlittle places, but I doubt there being anything to shoot.\"\n\nLevin would himself have liked to go into these little places, but they\nwere near home; he could shoot them over any time, and they were only\nlittle places--there would hardly be room for three to shoot. And so,\nwith some insincerity, he said that he doubted there being anything to\nshoot. When they reached a little marsh Levin would have driven by, but\nStepan Arkadyevitch, with the experienced eye of a sportsman, at once\ndetected reeds visible from the road.\n\n\"Shan't we try that?\" he said, pointing to the little marsh.\n\n\"Levin, do, please! how delightful!\" Vassenka Veslovsky began begging,\nand Levin could but consent.\n\nBefore they had time to stop, the dogs had flown one before the other\ninto the marsh.\n\n\"Krak! Laska!...\"\n\nThe dogs came back.\n\n\"There won't be room for three. I'll stay here,\" said Levin, hoping they\nwould find nothing but peewits, who had been startled by the dogs, and\nturning over in their flight, were plaintively wailing over the marsh.\n\n\"No! Come along, Levin, let's go together!\" Veslovsky called.\n\n\"Really, there's not room. Laska, back, Laska! You won't want another\ndog, will you?\"\n\nLevin remained with the wagonette, and looked enviously at the\nsportsmen. They walked right across the marsh. Except little birds and\npeewits, of which Vassenka killed one, there was nothing in the marsh.\n\n\"Come, you see now that it was not that I grudged the marsh,\" said\nLevin, \"only it's wasting time.\"\n\n\"Oh, no, it was jolly all the same. Did you see us?\" said Vassenka\nVeslovsky, clambering awkwardly into the wagonette with his gun and his\npeewit in his hands. \"How splendidly I shot this bird! Didn't I? Well,\nshall we soon be getting to the real place?\"\n\nThe horses started off suddenly, Levin knocked his head against the\nstock of someone's gun, and there was the report of a shot. The gun did\nactually go off first, but that was how it seemed to Levin. It appeared\nthat Vassenka Veslovsky had pulled only one trigger, and had left the\nother hammer still cocked. The charge flew into the ground without doing\nharm to anyone. Stepan Arkadyevitch shook his head and laughed\nreprovingly at Veslovsky. But Levin had not the heart to reprove him. In\nthe first place, any reproach would have seemed to be called forth by\nthe danger he had incurred and the bump that had come up on Levin's\nforehead. And besides, Veslovsky was at first so naively distressed, and\nthen laughed so good-humoredly and infectiously at their general dismay,\nthat one could not but laugh with him.\n\nWhen they reached the second marsh, which was fairly large, and would\ninevitably take some time to shoot over, Levin tried to persuade them to\npass it by. But Veslovsky again overpersuaded him. Again, as the marsh\nwas narrow, Levin, like a good host, remained with the carriage.\n\nKrak made straight for some clumps of sedge. Vassenka Veslovsky was the\nfirst to run after the dog. Before Stepan Arkadyevitch had time to come\nup, a grouse flew out. Veslovsky missed it and it flew into an unmown\nmeadow. This grouse was left for Veslovsky to follow up. Krak found it\nagain and pointed, and Veslovsky shot it and went back to the carriage.\n\"Now you go and I'll stay with the horses,\" he said.\n\nLevin had begun to feel the pangs of a sportsman's envy. He handed the\nreins to Veslovsky and walked into the marsh.\n\nLaska, who had been plaintively whining and fretting against the\ninjustice of her treatment, flew straight ahead to a hopeful place that\nLevin knew well, and that Krak had not yet come upon.\n\n\"Why don't you stop her?\" shouted Stepan Arkadyevitch.\n\n\"She won't scare them,\" answered Levin, sympathizing with his bitch's\npleasure and hurrying after her.\n\nAs she came nearer and nearer to the familiar breeding places there was\nmore and more earnestness in Laska's exploration. A little marsh bird\ndid not divert her attention for more than an instant. She made one\ncircuit round the clump of reeds, was beginning a second, and suddenly\nquivered with excitement and became motionless.\n\n\"Come, come, Stiva!\" shouted Levin, feeling his heart beginning to beat\nmore violently; and all of a sudden, as though some sort of shutter had\nbeen drawn back from his straining ears, all sounds, confused but loud,\nbegan to beat on his hearing, losing all sense of distance. He heard the\nsteps of Stepan Arkadyevitch, mistaking them for the tramp of the horses\nin the distance; he heard the brittle sound of the twigs on which he had\ntrodden, taking this sound for the flying of a grouse. He heard too, not\nfar behind him, a splashing in the water, which he could not explain to\nhimself.\n\nPicking his steps, he moved up to the dog.\n\n\"Fetch it!\"\n\nNot a grouse but a snipe flew up from beside the dog. Levin had lifted\nhis gun, but at the very instant when he was taking aim, the sound of\nsplashing grew louder, came closer, and was joined with the sound of\nVeslovsky's voice, shouting something with strange loudness. Levin saw\nhe had his gun pointed behind the snipe, but still he fired.\n\nWhen he had made sure he had missed, Levin looked round and saw the\nhorses and the wagonette not on the road but in the marsh.\n\nVeslovsky, eager to see the shooting, had driven into the marsh, and got\nthe horses stuck in the mud.\n\n\"Damn the fellow!\" Levin said to himself, as he went back to the\ncarriage that had sunk in the mire. \"What did you drive in for?\" he said\nto him dryly, and calling the coachman, he began pulling the horses out.\n\nLevin was vexed both at being hindered from shooting and at his horses\ngetting stuck in the mud, and still more at the fact that neither Stepan\nArkadyevitch nor Veslovsky helped him and the coachman to unharness the\nhorses and get them out, since neither of them had the slightest notion\nof harnessing. Without vouchsafing a syllable in reply to Vassenka's\nprotestations that it had been quite dry there, Levin worked in silence\nwith the coachman at extricating the horses. But then, as he got warm at\nthe work and saw how assiduously Veslovsky was tugging at the wagonette\nby one of the mud-guards, so that he broke it indeed, Levin blamed\nhimself for having under the influence of yesterday's feelings been too\ncold to Veslovsky, and tried to be particularly genial so as to smooth\nover his chilliness. When everything had been put right, and the\ncarriage had been brought back to the road, Levin had the lunch served.\n\n\"_Bon appetit--bonne conscience! Ce poulet va tomber jusqu'au fond de\nmes bottes_,\" Vassenka, who had recovered his spirits, quoted the French\nsaying as he finished his second chicken. \"Well, now our troubles are\nover, now everything's going to go well. Only, to atone for my sins, I'm\nbound to sit on the box. That's so? eh? No, no! I'll be your Automedon.\nYou shall see how I'll get you along,\" he answered, not letting go the\nrein, when Levin begged him to let the coachman drive. \"No, I must atone\nfor my sins, and I'm very comfortable on the box.\" And he drove.\n\nLevin was a little afraid he would exhaust the horses, especially the\nchestnut, whom he did not know how to hold in; but unconsciously he fell\nunder the influence of his gaiety and listened to the songs he sang all\nthe way on the box, or the descriptions and representations he gave of\ndriving in the English fashion, four-in-hand; and it was in the very\nbest of spirits that after lunch they drove to the Gvozdyov marsh.\n\n\n\nChapter 10\n\n\nVassenka drove the horses so smartly that they reached the marsh too\nearly, while it was still hot.\n\nAs they drew near this more important marsh, the chief aim of their\nexpedition, Levin could not help considering how he could get rid of\nVassenka and be free in his movements. Stepan Arkadyevitch evidently had\nthe same desire, and on his face Levin saw the look of anxiety always\npresent in a true sportsman when beginning shooting, together with a\ncertain good-humored slyness peculiar to him.\n\n\"How shall we go? It's a splendid marsh, I see, and there are hawks,\"\nsaid Stepan Arkadyevitch, pointing to two great birds hovering over the\nreeds. \"Where there are hawks, there is sure to be game.\"\n\n\"Now, gentlemen,\" said Levin, pulling up his boots and examining the\nlock of his gun with rather a gloomy expression, \"do you see those\nreeds?\" He pointed to an oasis of blackish green in the huge half-mown\nwet meadow that stretched along the right bank of the river. \"The marsh\nbegins here, straight in front of us, do you see--where it is greener?\nFrom here it runs to the right where the horses are; there are breeding\nplaces there, and grouse, and all round those reeds as far as that\nalder, and right up to the mill. Over there, do you see, where the pools\nare? That's the best place. There I once shot seventeen snipe. We'll\nseparate with the dogs and go in different directions, and then meet\nover there at the mill.\"\n\n\"Well, which shall go to left and which to right?\" asked Stepan\nArkadyevitch. \"It's wider to the right; you two go that way and I'll\ntake the left,\" he said with apparent carelessness.\n\n\"Capital! we'll make the bigger bag! Yes, come along, come along!\"\nVassenka exclaimed.\n\nLevin could do nothing but agree, and they divided.\n\nAs soon as they entered the marsh, the two dogs began hunting about\ntogether and made towards the green, slime-covered pool. Levin knew\nLaska's method, wary and indefinite; he knew the place too and expected\na whole covey of snipe.\n\n\"Veslovsky, beside me, walk beside me!\" he said in a faint voice to his\ncompanion splashing in the water behind him. Levin could not help\nfeeling an interest in the direction his gun was pointed, after that\ncasual shot near the Kolpensky marsh.\n\n\"Oh, I won't get in your way, don't trouble about me.\"\n\nBut Levin could not help troubling, and recalled Kitty's words at\nparting: \"Mind you don't shoot one another.\" The dogs came nearer and\nnearer, passed each other, each pursuing its own scent. The expectation\nof snipe was so intense that to Levin the squelching sound of his own\nheel, as he drew it up out of the mire, seemed to be the call of a\nsnipe, and he clutched and pressed the lock of his gun.\n\n\"Bang! bang!\" sounded almost in his ear. Vassenka had fired at a flock\nof ducks which was hovering over the marsh and flying at that moment\ntowards the sportsmen, far out of range. Before Levin had time to look\nround, there was the whir of one snipe, another, a third, and some eight\nmore rose one after another.\n\nStepan Arkadyevitch hit one at the very moment when it was beginning its\nzigzag movements, and the snipe fell in a heap into the mud. Oblonsky\naimed deliberately at another, still flying low in the reeds, and\ntogether with the report of the shot, that snipe too fell, and it could\nbe seen fluttering out where the sedge had been cut, its unhurt wing\nshowing white beneath.\n\nLevin was not so lucky: he aimed at his first bird too low, and missed;\nhe aimed at it again, just as it was rising, but at that instant another\nsnipe flew up at his very feet, distracting him so that he missed again.\n\nWhile they were loading their guns, another snipe rose, and Veslovsky,\nwho had had time to load again, sent two charges of small-shot into the\nwater. Stepan Arkadyevitch picked up his snipe, and with sparkling eyes\nlooked at Levin.\n\n\"Well, now let us separate,\" said Stepan Arkadyevitch, and limping on\nhis left foot, holding his gun in readiness and whistling to his dog, he\nwalked off in one direction. Levin and Veslovsky walked in the other.\n\nIt always happened with Levin that when his first shots were a failure\nhe got hot and out of temper, and shot badly the whole day. So it was\nthat day. The snipe showed themselves in numbers. They kept flying up\nfrom just under the dogs, from under the sportsmen's legs, and Levin\nmight have retrieved his ill luck. But the more he shot, the more he\nfelt disgraced in the eyes of Veslovsky, who kept popping away merrily\nand indiscriminately, killing nothing, and not in the slightest abashed\nby his ill success. Levin, in feverish haste, could not restrain\nhimself, got more and more out of temper, and ended by shooting almost\nwithout a hope of hitting. Laska, indeed, seemed to understand this. She\nbegan looking more languidly, and gazed back at the sportsmen, as it\nwere, with perplexity or reproach in her eyes. Shots followed shots in\nrapid succession. The smoke of the powder hung about the sportsmen,\nwhile in the great roomy net of the game bag there were only three light\nlittle snipe. And of these one had been killed by Veslovsky alone, and\none by both of them together. Meanwhile from the other side of the marsh\ncame the sound of Stepan Arkadyevitch's shots, not frequent, but, as\nLevin fancied, well-directed, for almost after each they heard \"Krak,\nKrak, _apporte_!\"\n\nThis excited Levin still more. The snipe were floating continually in\nthe air over the reeds. Their whirring wings close to the earth, and\ntheir harsh cries high in the air, could be heard on all sides; the\nsnipe that had risen first and flown up into the air, settled again\nbefore the sportsmen. Instead of two hawks there were now dozens of them\nhovering with shrill cries over the marsh.\n\nAfter walking through the larger half of the marsh, Levin and Veslovsky\nreached the place where the peasants' mowing-grass was divided into long\nstrips reaching to the reeds, marked off in one place by the trampled\ngrass, in another by a path mown through it. Half of these strips had\nalready been mown.\n\nThough there was not so much hope of finding birds in the uncut part as\nthe cut part, Levin had promised Stepan Arkadyevitch to meet him, and so\nhe walked on with his companion through the cut and uncut patches.\n\n\"Hi, sportsmen!\" shouted one of a group of peasants, sitting on an\nunharnessed cart; \"come and have some lunch with us! Have a drop of\nwine!\"\n\nLevin looked round.\n\n\"Come along, it's all right!\" shouted a good-humored-looking bearded\npeasant with a red face, showing his white teeth in a grin, and holding\nup a greenish bottle that flashed in the sunlight.\n\n\"_Qu'est-ce qu'ils disent_?\" asked Veslovsky.\n\n\"They invite you to have some vodka. Most likely they've been dividing\nthe meadow into lots. I should have some,\" said Levin, not without some\nguile, hoping Veslovsky would be tempted by the vodka, and would go away\nto them.\n\n\"Why do they offer it?\"\n\n\"Oh, they're merry-making. Really, you should join them. You would be\ninterested.\"\n\n\"_Allons, c'est curieux_.\"\n\n\"You go, you go, you'll find the way to the mill!\" cried Levin, and\nlooking round he perceived with satisfaction that Veslovsky, bent and\nstumbling with weariness, holding his gun out at arm's length, was\nmaking his way out of the marsh towards the peasants.\n\n\"You come too!\" the peasants shouted to Levin. \"Never fear! You taste\nour cake!\"\n\nLevin felt a strong inclination to drink a little vodka and to eat some\nbread. He was exhausted, and felt it a great effort to drag his\nstaggering legs out of the mire, and for a minute he hesitated. But\nLaska was setting. And immediately all his weariness vanished, and he\nwalked lightly through the swamp towards the dog. A snipe flew up at his\nfeet; he fired and killed it. Laska still pointed.--\"Fetch it!\" Another\nbird flew up close to the dog. Levin fired. But it was an unlucky day\nfor him; he missed it, and when he went to look for the one he had shot,\nhe could not find that either. He wandered all about the reeds, but\nLaska did not believe he had shot it, and when he sent her to find it,\nshe pretended to hunt for it, but did not really. And in the absence of\nVassenka, on whom Levin threw the blame of his failure, things went no\nbetter. There were plenty of snipe still, but Levin made one miss after\nanother.\n\nThe slanting rays of the sun were still hot; his clothes, soaked through\nwith perspiration, stuck to his body; his left boot full of water\nweighed heavily on his leg and squeaked at every step; the sweat ran in\ndrops down his powder-grimed face, his mouth was full of the bitter\ntaste, his nose of the smell of powder and stagnant water, his ears were\nringing with the incessant whir of the snipe; he could not touch the\nstock of his gun, it was so hot; his heart beat with short, rapid\nthrobs; his hands shook with excitement, and his weary legs stumbled and\nstaggered over the hillocks and in the swamp, but still he walked on and\nstill he shot. At last, after a disgraceful miss, he flung his gun and\nhis hat on the ground.\n\n\"No, I must control myself,\" he said to himself. Picking up his gun and\nhis hat, he called Laska, and went out of the swamp. When he got on to\ndry ground he sat down, pulled off his boot and emptied it, then walked\nto the marsh, drank some stagnant-tasting water, moistened his burning\nhot gun, and washed his face and hands. Feeling refreshed, he went back\nto the spot where a snipe had settled, firmly resolved to keep cool.\n\nHe tried to be calm, but it was the same again. His finger pressed the\ncock before he had taken a good aim at the bird. It got worse and worse.\n\nHe had only five birds in his game-bag when he walked out of the marsh\ntowards the alders where he was to rejoin Stepan Arkadyevitch.\n\nBefore he caught sight of Stepan Arkadyevitch he saw his dog. Krak\ndarted out from behind the twisted root of an alder, black all over with\nthe stinking mire of the marsh, and with the air of a conqueror sniffed\nat Laska. Behind Krak there came into view in the shade of the alder\ntree the shapely figure of Stepan Arkadyevitch. He came to meet him, red\nand perspiring, with unbuttoned neckband, still limping in the same way.\n\n\"Well? You have been popping away!\" he said, smiling good-humoredly.\n\n\"How have you got on?\" queried Levin. But there was no need to ask, for\nhe had already seen the full game bag.\n\n\"Oh, pretty fair.\"\n\nHe had fourteen birds.\n\n\"A splendid marsh! I've no doubt Veslovsky got in your way. It's awkward\ntoo, shooting with one dog,\" said Stepan Arkadyevitch, to soften his\ntriumph.\n\n\n\nChapter 11\n\n\nWhen Levin and Stepan Arkadyevitch reached the peasant's hut where Levin\nalways used to stay, Veslovsky was already there. He was sitting in the\nmiddle of the hut, clinging with both hands to the bench from which he\nwas being pulled by a soldier, the brother of the peasant's wife, who\nwas helping him off with his miry boots. Veslovsky was laughing his\ninfectious, good-humored laugh.\n\n\"I've only just come. _Ils ont ete charmants_. Just fancy, they gave me\ndrink, fed me! Such bread, it was exquisite! _Delicieux!_ And the vodka,\nI never tasted any better. And they would not take a penny for anything.\nAnd they kept saying: 'Excuse our homely ways.'\"\n\n\"What should they take anything for? They were entertaining you, to be\nsure. Do you suppose they keep vodka for sale?\" said the soldier,\nsucceeding at last in pulling the soaked boot off the blackened\nstocking.\n\nIn spite of the dirtiness of the hut, which was all muddied by their\nboots and the filthy dogs licking themselves clean, and the smell of\nmarsh mud and powder that filled the room, and the absence of knives and\nforks, the party drank their tea and ate their supper with a relish only\nknown to sportsmen. Washed and clean, they went into a hay-barn swept\nready for them, where the coachman had been making up beds for the\ngentlemen.\n\nThough it was dusk, not one of them wanted to go to sleep.\n\nAfter wavering among reminiscences and anecdotes of guns, of dogs, and\nof former shooting parties, the conversation rested on a topic that\ninterested all of them. After Vassenka had several times over expressed\nhis appreciation of this delightful sleeping place among the fragrant\nhay, this delightful broken cart (he supposed it to be broken because\nthe shafts had been taken out), of the good nature of the peasants that\nhad treated him to vodka, of the dogs who lay at the feet of their\nrespective masters, Oblonsky began telling them of a delightful shooting\nparty at Malthus's, where he had stayed the previous summer.\n\nMalthus was a well-known capitalist, who had made his money by\nspeculation in railway shares. Stepan Arkadyevitch described what grouse\nmoors this Malthus had bought in the Tver province, and how they were\npreserved, and of the carriages and dogcarts in which the shooting party\nhad been driven, and the luncheon pavilion that had been rigged up at\nthe marsh.\n\n\"I don't understand you,\" said Levin, sitting up in the hay; \"how is it\nsuch people don't disgust you? I can understand a lunch with Lafitte is\nall very pleasant, but don't you dislike just that very sumptuousness?\nAll these people, just like our spirit monopolists in old days, get\ntheir money in a way that gains them the contempt of everyone. They\ndon't care for their contempt, and then they use their dishonest gains\nto buy off the contempt they have deserved.\"\n\n\"Perfectly true!\" chimed in Vassenka Veslovsky. \"Perfectly! Oblonsky, of\ncourse, goes out of _bonhomie_, but other people say: 'Well, Oblonsky\nstays with them.'...\"\n\n\"Not a bit of it.\" Levin could hear that Oblonsky was smiling as he\nspoke. \"I simply don't consider him more dishonest than any other\nwealthy merchant or nobleman. They've all made their money alike--by\ntheir work and their intelligence.\"\n\n\"Oh, by what work? Do you call it work to get hold of concessions and\nspeculate with them?\"\n\n\"Of course it's work. Work in this sense, that if it were not for him\nand others like him, there would have been no railways.\"\n\n\"But that's not work, like the work of a peasant or a learned\nprofession.\"\n\n\"Granted, but it's work in the sense that his activity produces a\nresult--the railways. But of course you think the railways useless.\"\n\n\"No, that's another question; I am prepared to admit that they're\nuseful. But all profit that is out of proportion to the labor expended\nis dishonest.\"\n\n\"But who is to define what is proportionate?\"\n\n\"Making profit by dishonest means, by trickery,\" said Levin, conscious\nthat he could not draw a distinct line between honesty and dishonesty.\n\"Such as banking, for instance,\" he went on. \"It's an evil--the amassing\nof huge fortunes without labor, just the same thing as with the spirit\nmonopolies, it's only the form that's changed. _Le roi est mort, vive le\nroi_. No sooner were the spirit monopolies abolished than the railways\ncame up, and banking companies; that, too, is profit without work.\"\n\n\"Yes, that may all be very true and clever.... Lie down, Krak!\" Stepan\nArkadyevitch called to his dog, who was scratching and turning over all\nthe hay. He was obviously convinced of the correctness of his position,\nand so talked serenely and without haste. \"But you have not drawn the\nline between honest and dishonest work. That I receive a bigger salary\nthan my chief clerk, though he knows more about the work than I\ndo--that's dishonest, I suppose?\"\n\n\"I can't say.\"\n\n\"Well, but I can tell you: your receiving some five thousand, let's say,\nfor your work on the land, while our host, the peasant here, however\nhard he works, can never get more than fifty roubles, is just as\ndishonest as my earning more than my chief clerk, and Malthus getting\nmore than a station-master. No, quite the contrary; I see that society\ntakes up a sort of antagonistic attitude to these people, which is\nutterly baseless, and I fancy there's envy at the bottom of it....\"\n\n\"No, that's unfair,\" said Veslovsky; \"how could envy come in? There is\nsomething not nice about that sort of business.\"\n\n\"You say,\" Levin went on, \"that it's unjust for me to receive five\nthousand, while the peasant has fifty; that's true. It is unfair, and I\nfeel it, but...\"\n\n\"It really is. Why is it we spend our time riding, drinking, shooting,\ndoing nothing, while they are forever at work?\" said Vassenka Veslovsky,\nobviously for the first time in his life reflecting on the question, and\nconsequently considering it with perfect sincerity.\n\n\"Yes, you feel it, but you don't give him your property,\" said Stepan\nArkadyevitch, intentionally, as it seemed, provoking Levin.\n\nThere had arisen of late something like a secret antagonism between the\ntwo brothers-in-law; as though, since they had married sisters, a kind\nof rivalry had sprung up between them as to which was ordering his life\nbest, and now this hostility showed itself in the conversation, as it\nbegan to take a personal note.\n\n\"I don't give it away, because no one demands that from me, and if I\nwanted to, I could not give it away,\" answered Levin, \"and have no one\nto give it to.\"\n\n\"Give it to this peasant, he would not refuse it.\"\n\n\"Yes, but how am I to give it up? Am I to go to him and make a deed of\nconveyance?\"\n\n\"I don't know; but if you are convinced that you have no right...\"\n\n\"I'm not at all convinced. On the contrary, I feel I have no right to\ngive it up, that I have duties both to the land and to my family.\"\n\n\"No, excuse me, but if you consider this inequality is unjust, why is it\nyou don't act accordingly?...\"\n\n\"Well, I do act negatively on that idea, so far as not trying to\nincrease the difference of position existing between him and me.\"\n\n\"No, excuse me, that's a paradox.\"\n\n\"Yes, there's something of a sophistry about that,\" Veslovsky agreed.\n\"Ah! our host; so you're not asleep yet?\" he said to the peasant who\ncame into the barn, opening the creaking door. \"How is it you're not\nasleep?\"\n\n\"No, how's one to sleep! I thought our gentlemen would be asleep, but I\nheard them chattering. I want to get a hook from here. She won't bite?\"\nhe added, stepping cautiously with his bare feet.\n\n\"And where are you going to sleep?\"\n\n\"We are going out for the night with the beasts.\"\n\n\"Ah, what a night!\" said Veslovsky, looking out at the edge of the hut\nand the unharnessed wagonette that could be seen in the faint light of\nthe evening glow in the great frame of the open doors. \"But listen,\nthere are women's voices singing, and, on my word, not badly too. Who's\nthat singing, my friend?\"\n\n\"That's the maids from hard by here.\"\n\n\"Let's go, let's have a walk! We shan't go to sleep, you know. Oblonsky,\ncome along!\"\n\n\"If one could only do both, lie here and go,\" answered Oblonsky,\nstretching. \"It's capital lying here.\"\n\n\"Well, I shall go by myself,\" said Veslovsky, getting up eagerly, and\nputting on his shoes and stockings. \"Good-bye, gentlemen. If it's fun,\nI'll fetch you. You've treated me to some good sport, and I won't forget\nyou.\"\n\n\"He really is a capital fellow, isn't he?\" said Stepan Arkadyevitch,\nwhen Veslovsky had gone out and the peasant had closed the door after\nhim.\n\n\"Yes, capital,\" answered Levin, still thinking of the subject of their\nconversation just before. It seemed to him that he had clearly expressed\nhis thoughts and feelings to the best of his capacity, and yet both of\nthem, straightforward men and not fools, had said with one voice that he\nwas comforting himself with sophistries. This disconcerted him.\n\n\"It's just this, my dear boy. One must do one of two things: either\nadmit that the existing order of society is just, and then stick up for\none's rights in it; or acknowledge that you are enjoying unjust\nprivileges, as I do, and then enjoy them and be satisfied.\"\n\n\"No, if it were unjust, you could not enjoy these advantages and be\nsatisfied--at least I could not. The great thing for me is to feel that\nI'm not to blame.\"\n\n\"What do you say, why not go after all?\" said Stepan Arkadyevitch,\nevidently weary of the strain of thought. \"We shan't go to sleep, you\nknow. Come, let's go!\"\n\nLevin did not answer. What they had said in the conversation, that he\nacted justly only in a negative sense, absorbed his thoughts. \"Can it be\nthat it's only possible to be just negatively?\" he was asking himself.\n\n\"How strong the smell of the fresh hay is, though,\" said Stepan\nArkadyevitch, getting up. \"There's not a chance of sleeping. Vassenka\nhas been getting up some fun there. Do you hear the laughing and his\nvoice? Hadn't we better go? Come along!\"\n\n\"No, I'm not coming,\" answered Levin.\n\n\"Surely that's not a matter of principle too,\" said Stepan Arkadyevitch,\nsmiling, as he felt about in the dark for his cap.\n\n\"It's not a matter of principle, but why should I go?\"\n\n\"But do you know you are preparing trouble for yourself,\" said Stepan\nArkadyevitch, finding his cap and getting up.\n\n\"How so?\"\n\n\"Do you suppose I don't see the line you've taken up with your wife? I\nheard how it's a question of the greatest consequence, whether or not\nyou're to be away for a couple of days' shooting. That's all very well\nas an idyllic episode, but for your whole life that won't answer. A man\nmust be independent; he has his masculine interests. A man has to be\nmanly,\" said Oblonsky, opening the door.\n\n\"In what way? To go running after servant girls?\" said Levin.\n\n\"Why not, if it amuses him? _Ca ne tire pas a consequence_. It won't do\nmy wife any harm, and it'll amuse me. The great thing is to respect the\nsanctity of the home. There should be nothing in the home. But don't tie\nyour own hands.\"\n\n\"Perhaps so,\" said Levin dryly, and he turned on his side. \"Tomorrow,\nearly, I want to go shooting, and I won't wake anyone, and shall set off\nat daybreak.\"\n\n\"_Messieurs, venez vite!_\" they heard the voice of Veslovsky coming\nback. \"_Charmante!_ I've made such a discovery. _Charmante!_ a perfect\nGretchen, and I've already made friends with her. Really, exceedingly\npretty,\" he declared in a tone of approval, as though she had been made\npretty entirely on his account, and he was expressing his satisfaction\nwith the entertainment that had been provided for him.\n\nLevin pretended to be asleep, while Oblonsky, putting on his slippers,\nand lighting a cigar, walked out of the barn, and soon their voices were\nlost.\n\nFor a long while Levin could not get to sleep. He heard the horses\nmunching hay, then he heard the peasant and his elder boy getting ready\nfor the night, and going off for the night watch with the beasts, then\nhe heard the soldier arranging his bed on the other side of the barn,\nwith his nephew, the younger son of their peasant host. He heard the boy\nin his shrill little voice telling his uncle what he thought about the\ndogs, who seemed to him huge and terrible creatures, and asking what the\ndogs were going to hunt next day, and the soldier in a husky, sleepy\nvoice, telling him the sportsmen were going in the morning to the marsh,\nand would shoot with their guns; and then, to check the boy's questions,\nhe said, \"Go to sleep, Vaska; go to sleep, or you'll catch it,\" and soon\nafter he began snoring himself, and everything was still. He could only\nhear the snort of the horses, and the guttural cry of a snipe.\n\n\"Is it really only negative?\" he repeated to himself. \"Well, what of it?\nIt's not my fault.\" And he began thinking about the next day.\n\n\"Tomorrow I'll go out early, and I'll make a point of keeping cool.\nThere are lots of snipe; and there are grouse too. When I come back\nthere'll be the note from Kitty. Yes, Stiva may be right, I'm not manly\nwith her, I'm tied to her apron-strings.... Well, it can't be helped!\nNegative again....\"\n\nHalf asleep, he heard the laughter and mirthful talk of Veslovsky and\nStepan Arkadyevitch. For an instant he opened his eyes: the moon was up,\nand in the open doorway, brightly lighted up by the moonlight, they were\nstanding talking. Stepan Arkadyevitch was saying something of the\nfreshness of one girl, comparing her to a freshly peeled nut, and\nVeslovsky with his infectious laugh was repeating some words, probably\nsaid to him by a peasant: \"Ah, you do your best to get round her!\"\nLevin, half asleep, said:\n\n\"Gentlemen, tomorrow before daylight!\" and fell asleep.\n\n\n\nChapter 12\n\n\nWaking up at earliest dawn, Levin tried to wake his companions.\nVassenka, lying on his stomach, with one leg in a stocking thrust out,\nwas sleeping so soundly that he could elicit no response. Oblonsky, half\nasleep, declined to get up so early. Even Laska, who was asleep, curled\nup in the hay, got up unwillingly, and lazily stretched out and\nstraightened her hind legs one after the other. Getting on his boots and\nstockings, taking his gun, and carefully opening the creaking door of\nthe barn, Levin went out into the road. The coachmen were sleeping in\ntheir carriages, the horses were dozing. Only one was lazily eating\noats, dipping its nose into the manger. It was still gray out-of-doors.\n\n\"Why are you up so early, my dear?\" the old woman, their hostess, said,\ncoming out of the hut and addressing him affectionately as an old\nfriend.\n\n\"Going shooting, granny. Do I go this way to the marsh?\"\n\n\"Straight out at the back; by our threshing floor, my dear, and hemp\npatches; there's a little footpath.\" Stepping carefully with her\nsunburnt, bare feet, the old woman conducted Levin, and moved back the\nfence for him by the threshing floor.\n\n\"Straight on and you'll come to the marsh. Our lads drove the cattle\nthere yesterday evening.\"\n\nLaska ran eagerly forward along the little path. Levin followed her with\na light, rapid step, continually looking at the sky. He hoped the sun\nwould not be up before he reached the marsh. But the sun did not delay.\nThe moon, which had been bright when he went out, by now shone only like\na crescent of quicksilver. The pink flush of dawn, which one could not\nhelp seeing before, now had to be sought to be discerned at all. What\nwere before undefined, vague blurs in the distant countryside could now\nbe distinctly seen. They were sheaves of rye. The dew, not visible till\nthe sun was up, wetted Levin's legs and his blouse above his belt in the\nhigh growing, fragrant hemp patch, from which the pollen had already\nfallen out. In the transparent stillness of morning the smallest sounds\nwere audible. A bee flew by Levin's ear with the whizzing sound of a\nbullet. He looked carefully, and saw a second and a third. They were all\nflying from the beehives behind the hedge, and they disappeared over the\nhemp patch in the direction of the marsh. The path led straight to the\nmarsh. The marsh could be recognized by the mist which rose from it,\nthicker in one place and thinner in another, so that the reeds and\nwillow bushes swayed like islands in this mist. At the edge of the marsh\nand the road, peasant boys and men, who had been herding for the night,\nwere lying, and in the dawn all were asleep under their coats. Not far\nfrom them were three hobbled horses. One of them clanked a chain. Laska\nwalked beside her master, pressing a little forward and looking round.\nPassing the sleeping peasants and reaching the first reeds, Levin\nexamined his pistols and let his dog off. One of the horses, a sleek,\ndark-brown three-year-old, seeing the dog, started away, switched its\ntail and snorted. The other horses too were frightened, and splashing\nthrough the water with their hobbled legs, and drawing their hoofs out\nof the thick mud with a squelching sound, they bounded out of the marsh.\nLaska stopped, looking ironically at the horses and inquiringly at\nLevin. Levin patted Laska, and whistled as a sign that she might begin.\n\nLaska ran joyfully and anxiously through the slush that swayed under\nher.\n\nRunning into the marsh among the familiar scents of roots, marsh plants,\nand slime, and the extraneous smell of horse dung, Laska detected at\nonce a smell that pervaded the whole marsh, the scent of that\nstrong-smelling bird that always excited her more than any other. Here\nand there among the moss and marsh plants this scent was very strong,\nbut it was impossible to determine in which direction it grew stronger\nor fainter. To find the direction, she had to go farther away from the\nwind. Not feeling the motion of her legs, Laska bounded with a stiff\ngallop, so that at each bound she could stop short, to the right, away\nfrom the wind that blew from the east before sunrise, and turned facing\nthe wind. Sniffing in the air with dilated nostrils, she felt at once\nthat not their tracks only but they themselves were here before her, and\nnot one, but many. Laska slackened her speed. They were here, but where\nprecisely she could not yet determine. To find the very spot, she began\nto make a circle, when suddenly her master's voice drew her off. \"Laska!\nhere?\" he asked, pointing her to a different direction. She stopped,\nasking him if she had better not go on doing as she had begun. But he\nrepeated his command in an angry voice, pointing to a spot covered with\nwater, where there could not be anything. She obeyed him, pretending she\nwas looking, so as to please him, went round it, and went back to her\nformer position, and was at once aware of the scent again. Now when he\nwas not hindering her, she knew what to do, and without looking at what\nwas under her feet, and to her vexation stumbling over a high stump into\nthe water, but righting herself with her strong, supple legs, she began\nmaking the circle which was to make all clear to her. The scent of them\nreached her, stronger and stronger, and more and more defined, and all\nat once it became perfectly clear to her that one of them was here,\nbehind this tuft of reeds, five paces in front of her; she stopped, and\nher whole body was still and rigid. On her short legs she could see\nnothing in front of her, but by the scent she knew it was sitting not\nmore than five paces off. She stood still, feeling more and more\nconscious of it, and enjoying it in anticipation. Her tail was stretched\nstraight and tense, and only wagging at the extreme end. Her mouth was\nslightly open, her ears raised. One ear had been turned wrong side out\nas she ran up, and she breathed heavily but warily, and still more\nwarily looked round, but more with her eyes than her head, to her\nmaster. He was coming along with the face she knew so well, though the\neyes were always terrible to her. He stumbled over the stump as he came,\nand moved, as she thought, extraordinarily slowly. She thought he came\nslowly, but he was running.\n\nNoticing Laska's special attitude as she crouched on the ground, as it\nwere, scratching big prints with her hind paws, and with her mouth\nslightly open, Levin knew she was pointing at grouse, and with an inward\nprayer for luck, especially with the first bird, he ran up to her.\nComing quite close up to her, he could from his height look beyond her,\nand he saw with his eyes what she was seeing with her nose. In a space\nbetween two little thickets, at a couple of yards' distance, he could\nsee a grouse. Turning its head, it was listening. Then lightly preening\nand folding its wings, it disappeared round a corner with a clumsy wag\nof its tail.\n\n\"Fetch it, fetch it!\" shouted Levin, giving Laska a shove from behind.\n\n\"But I can't go,\" thought Laska. \"Where am I to go? From here I feel\nthem, but if I move forward I shall know nothing of where they are or\nwho they are.\" But then he shoved her with his knee, and in an excited\nwhisper said, \"Fetch it, Laska.\"\n\n\"Well, if that's what he wishes, I'll do it, but I can't answer for\nmyself now,\" she thought, and darted forward as fast as her legs would\ncarry her between the thick bushes. She scented nothing now; she could\nonly see and hear, without understanding anything.\n\nTen paces from her former place a grouse rose with a guttural cry and\nthe peculiar round sound of its wings. And immediately after the shot it\nsplashed heavily with its white breast on the wet mire. Another bird did\nnot linger, but rose behind Levin without the dog. When Levin turned\ntowards it, it was already some way off. But his shot caught it. Flying\ntwenty paces further, the second grouse rose upwards, and whirling round\nlike a ball, dropped heavily on a dry place.\n\n\"Come, this is going to be some good!\" thought Levin, packing the warm\nand fat grouse into his game bag. \"Eh, Laska, will it be good?\"\n\nWhen Levin, after loading his gun, moved on, the sun had fully risen,\nthough unseen behind the storm-clouds. The moon had lost all of its\nluster, and was like a white cloud in the sky. Not a single star could\nbe seen. The sedge, silvery with dew before, now shone like gold. The\nstagnant pools were all like amber. The blue of the grass had changed to\nyellow-green. The marsh birds twittered and swarmed about the brook and\nupon the bushes that glittered with dew and cast long shadows. A hawk\nwoke up and settled on a haycock, turning its head from side to side and\nlooking discontentedly at the marsh. Crows were flying about the field,\nand a bare-legged boy was driving the horses to an old man, who had got\nup from under his long coat and was combing his hair. The smoke from the\ngun was white as milk over the green of the grass.\n\nOne of the boys ran up to Levin.\n\n\"Uncle, there were ducks here yesterday!\" he shouted to him, and he\nwalked a little way off behind him.\n\nAnd Levin was doubly pleased, in sight of the boy, who expressed his\napproval, at killing three snipe, one after another, straight off.\n\n\n\nChapter 13\n\n\nThe sportsman's saying, that if the first beast or the first bird is not\nmissed, the day will be lucky, turned out correct.\n\nAt ten o'clock Levin, weary, hungry, and happy after a tramp of twenty\nmiles, returned to his night's lodging with nineteen head of fine game\nand one duck, which he tied to his belt, as it would not go into the\ngame bag. His companions had long been awake, and had had time to get\nhungry and have breakfast.\n\n\"Wait a bit, wait a bit, I know there are nineteen,\" said Levin,\ncounting a second time over the grouse and snipe, that looked so much\nless important now, bent and dry and bloodstained, with heads crooked\naside, than they did when they were flying.\n\nThe number was verified, and Stepan Arkadyevitch's envy pleased Levin.\nHe was pleased too on returning to find the man sent by Kitty with a\nnote was already there.\n\n\"I am perfectly well and happy. If you were uneasy about me, you can\nfeel easier than ever. I've a new bodyguard, Marya Vlasyevna,\"--this was\nthe midwife, a new and important personage in Levin's domestic life.\n\"She has come to have a look at me. She found me perfectly well, and we\nhave kept her till you are back. All are happy and well, and please,\ndon't be in a hurry to come back, but, if the sport is good, stay\nanother day.\"\n\nThese two pleasures, his lucky shooting and the letter from his wife,\nwere so great that two slightly disagreeable incidents passed lightly\nover Levin. One was that the chestnut trace horse, who had been\nunmistakably overworked on the previous day, was off his feed and out of\nsorts. The coachman said he was \"Overdriven yesterday, Konstantin\nDmitrievitch. Yes, indeed! driven ten miles with no sense!\"\n\nThe other unpleasant incident, which for the first minute destroyed his\ngood humor, though later he laughed at it a great deal, was to find that\nof all the provisions Kitty had provided in such abundance that one\nwould have thought there was enough for a week, nothing was left. On his\nway back, tired and hungry from shooting, Levin had so distinct a vision\nof meat-pies that as he approached the hut he seemed to smell and taste\nthem, as Laska had smelt the game, and he immediately told Philip to\ngive him some. It appeared that there were no pies left, nor even any\nchicken.\n\n\"Well, this fellow's appetite!\" said Stepan Arkadyevitch, laughing and\npointing at Vassenka Veslovsky. \"I never suffer from loss of appetite,\nbut he's really marvelous!...\"\n\n\"Well, it can't be helped,\" said Levin, looking gloomily at Veslovsky.\n\"Well, Philip, give me some beef, then.\"\n\n\"The beef's been eaten, and the bones given to the dogs,\" answered\nPhilip.\n\nLevin was so hurt that he said, in a tone of vexation, \"You might have\nleft me something!\" and he felt ready to cry.\n\n\"Then put away the game,\" he said in a shaking voice to Philip, trying\nnot to look at Vassenka, \"and cover them with some nettles. And you\nmight at least ask for some milk for me.\"\n\nBut when he had drunk some milk, he felt ashamed immediately at having\nshown his annoyance to a stranger, and he began to laugh at his hungry\nmortification.\n\nIn the evening they went shooting again, and Veslovsky had several\nsuccessful shots, and in the night they drove home.\n\nTheir homeward journey was as lively as their drive out had been.\nVeslovsky sang songs and related with enjoyment his adventures with the\npeasants, who had regaled him with vodka, and said to him, \"Excuse our\nhomely ways,\" and his night's adventures with kiss-in-the-ring and the\nservant-girl and the peasant, who had asked him was he married, and on\nlearning that he was not, said to him, \"Well, mind you don't run after\nother men's wives--you'd better get one of your own.\" These words had\nparticularly amused Veslovsky.\n\n\"Altogether, I've enjoyed our outing awfully. And you, Levin?\"\n\n\"I have, very much,\" Levin said quite sincerely. It was particularly\ndelightful to him to have got rid of the hostility he had been feeling\ntowards Vassenka Veslovsky at home, and to feel instead the most\nfriendly disposition to him.\n\n\n\nChapter 14\n\n\nNext day at ten o'clock Levin, who had already gone his rounds, knocked\nat the room where Vassenka had been put for the night.\n\n\"_Entrez!_\" Veslovsky called to him. \"Excuse me, I've only just finished\nmy ablutions,\" he said, smiling, standing before him in his underclothes\nonly.\n\n\"Don't mind me, please.\" Levin sat down in the window. \"Have you slept\nwell?\"\n\n\"Like the dead. What sort of day is it for shooting?\"\n\n\"What will you take, tea or coffee?\"\n\n\"Neither. I'll wait till lunch. I'm really ashamed. I suppose the ladies\nare down? A walk now would be capital. You show me your horses.\"\n\nAfter walking about the garden, visiting the stable, and even doing some\ngymnastic exercises together on the parallel bars, Levin returned to the\nhouse with his guest, and went with him into the drawing room.\n\n\"We had splendid shooting, and so many delightful experiences!\" said\nVeslovsky, going up to Kitty, who was sitting at the samovar. \"What a\npity ladies are cut off from these delights!\"\n\n\"Well, I suppose he must say something to the lady of the house,\" Levin\nsaid to himself. Again he fancied something in the smile, in the\nall-conquering air with which their guest addressed Kitty....\n\nThe princess, sitting on the other side of the table with Marya\nVlasyevna and Stepan Arkadyevitch, called Levin to her side, and began\nto talk to him about moving to Moscow for Kitty's confinement, and\ngetting ready rooms for them. Just as Levin had disliked all the trivial\npreparations for his wedding, as derogatory to the grandeur of the\nevent, now he felt still more offensive the preparations for the\napproaching birth, the date of which they reckoned, it seemed, on their\nfingers. He tried to turn a deaf ear to these discussions of the best\npatterns of long clothes for the coming baby; tried to turn away and\navoid seeing the mysterious, endless strips of knitting, the triangles\nof linen, and so on, to which Dolly attached special importance. The\nbirth of a son (he was certain it would be a son) which was promised\nhim, but which he still could not believe in--so marvelous it\nseemed--presented itself to his mind, on one hand, as a happiness so\nimmense, and therefore so incredible; on the other, as an event so\nmysterious, that this assumption of a definite knowledge of what would\nbe, and consequent preparation for it, as for something ordinary that\ndid happen to people, jarred on him as confusing and humiliating.\n\nBut the princess did not understand his feelings, and put down his\nreluctance to think and talk about it to carelessness and indifference,\nand so she gave him no peace. She had commissioned Stepan Arkadyevitch\nto look at a flat, and now she called Levin up.\n\n\"I know nothing about it, princess. Do as you think fit,\" he said.\n\n\"You must decide when you will move.\"\n\n\"I really don't know. I know millions of children are born away from\nMoscow, and doctors ... why...\"\n\n\"But if so...\"\n\n\"Oh, no, as Kitty wishes.\"\n\n\"We can't talk to Kitty about it! Do you want me to frighten her? Why,\nthis spring Natalia Golitzina died from having an ignorant doctor.\"\n\n\"I will do just what you say,\" he said gloomily.\n\nThe princess began talking to him, but he did not hear her. Though the\nconversation with the princess had indeed jarred upon him, he was\ngloomy, not on account of that conversation, but from what he saw at the\nsamovar.\n\n\"No, it's impossible,\" he thought, glancing now and then at Vassenka\nbending over Kitty, telling her something with his charming smile, and\nat her, flushed and disturbed.\n\nThere was something not nice in Vassenka's attitude, in his eyes, in his\nsmile. Levin even saw something not nice in Kitty's attitude and look.\nAnd again the light died away in his eyes. Again, as before, all of a\nsudden, without the slightest transition, he felt cast down from a\npinnacle of happiness, peace, and dignity, into an abyss of despair,\nrage, and humiliation. Again everything and everyone had become hateful\nto him.\n\n\"You do just as you think best, princess,\" he said again, looking round.\n\n\"Heavy is the cap of Monomach,\" Stepan Arkadyevitch said playfully,\nhinting, evidently, not simply at the princess's conversation, but at\nthe cause of Levin's agitation, which he had noticed.\n\n\"How late you are today, Dolly!\"\n\nEveryone got up to greet Darya Alexandrovna. Vassenka only rose for an\ninstant, and with the lack of courtesy to ladies characteristic of the\nmodern young man, he scarcely bowed, and resumed his conversation again,\nlaughing at something.\n\n\"I've been worried about Masha. She did not sleep well, and is\ndreadfully tiresome today,\" said Dolly.\n\nThe conversation Vassenka had started with Kitty was running on the same\nlines as on the previous evening, discussing Anna, and whether love is\nto be put higher than worldly considerations. Kitty disliked the\nconversation, and she was disturbed both by the subject and the tone in\nwhich it was conducted, and also by the knowledge of the effect it would\nhave on her husband. But she was too simple and innocent to know how to\ncut short this conversation, or even to conceal the superficial pleasure\nafforded her by the young man's very obvious admiration. She wanted to\nstop it, but she did not know what to do. Whatever she did she knew\nwould be observed by her husband, and the worst interpretation put on\nit. And, in fact, when she asked Dolly what was wrong with Masha, and\nVassenka, waiting till this uninteresting conversation was over, began\nto gaze indifferently at Dolly, the question struck Levin as an\nunnatural and disgusting piece of hypocrisy.\n\n\"What do you say, shall we go and look for mushrooms today?\" said Dolly.\n\n\"By all means, please, and I shall come too,\" said Kitty, and she\nblushed. She wanted from politeness to ask Vassenka whether he would\ncome, and she did not ask him. \"Where are you going, Kostya?\" she asked\nher husband with a guilty face, as he passed by her with a resolute\nstep. This guilty air confirmed all his suspicions.\n\n\"The mechanician came when I was away; I haven't seen him yet,\" he said,\nnot looking at her.\n\nHe went downstairs, but before he had time to leave his study he heard\nhis wife's familiar footsteps running with reckless speed to him.\n\n\"What do you want?\" he said to her shortly. \"We are busy.\"\n\n\"I beg your pardon,\" she said to the German mechanician; \"I want a few\nwords with my husband.\"\n\nThe German would have left the room, but Levin said to him:\n\n\"Don't disturb yourself.\"\n\n\"The train is at three?\" queried the German. \"I mustn't be late.\"\n\nLevin did not answer him, but walked out himself with his wife.\n\n\"Well, what have you to say to me?\" he said to her in French.\n\nHe did not look her in the face, and did not care to see that she in her\ncondition was trembling all over, and had a piteous, crushed look.\n\n\"I ... I want to say that we can't go on like this; that this is\nmisery...\" she said.\n\n\"The servants are here at the sideboard,\" he said angrily; \"don't make a\nscene.\"\n\n\"Well, let's go in here!\"\n\nThey were standing in the passage. Kitty would have gone into the next\nroom, but there the English governess was giving Tanya a lesson.\n\n\"Well, come into the garden.\"\n\nIn the garden they came upon a peasant weeding the path. And no longer\nconsidering that the peasant could see her tear-stained and his agitated\nface, that they looked like people fleeing from some disaster, they went\non with rapid steps, feeling that they must speak out and clear up\nmisunderstandings, must be alone together, and so get rid of the misery\nthey were both feeling.\n\n\"We can't go on like this! It's misery! I am wretched; you are wretched.\nWhat for?\" she said, when they had at last reached a solitary garden\nseat at a turn in the lime tree avenue.\n\n\"But tell me one thing: was there in his tone anything unseemly, not\nnice, humiliatingly horrible?\" he said, standing before her again in the\nsame position with his clenched fists on his chest, as he had stood\nbefore her that night.\n\n\"Yes,\" she said in a shaking voice; \"but, Kostya, surely you see I'm not\nto blame? All the morning I've been trying to take a tone ... but such\npeople.... Why did he come? How happy we were!\" she said, breathless\nwith the sobs that shook her.\n\nAlthough nothing had been pursuing them, and there was nothing to run\naway from, and they could not possibly have found anything very\ndelightful on that garden seat, the gardener saw with astonishment that\nthey passed him on their way home with comforted and radiant faces.\n\n\n\nChapter 15\n\n\nAfter escorting his wife upstairs, Levin went to Dolly's part of the\nhouse. Darya Alexandrovna, for her part, was in great distress too that\nday. She was walking about the room, talking angrily to a little girl,\nwho stood in the corner roaring.\n\n\"And you shall stand all day in the corner, and have your dinner all\nalone, and not see one of your dolls, and I won't make you a new frock,\"\nshe said, not knowing how to punish her.\n\n\"Oh, she is a disgusting child!\" she turned to Levin. \"Where does she\nget such wicked propensities?\"\n\n\"Why, what has she done?\" Levin said without much interest, for he had\nwanted to ask her advice, and so was annoyed that he had come at an\nunlucky moment.\n\n\"Grisha and she went into the raspberries, and there ... I can't tell\nyou really what she did. It's a thousand pities Miss Elliot's not with\nus. This one sees to nothing--she's a machine.... _Figurez-vous que la\npetite_?...\"\n\nAnd Darya Alexandrovna described Masha's crime.\n\n\"That proves nothing; it's not a question of evil propensities at all,\nit's simply mischief,\" Levin assured her.\n\n\"But you are upset about something? What have you come for?\" asked\nDolly. \"What's going on there?\"\n\nAnd in the tone of her question Levin heard that it would be easy for\nhim to say what he had meant to say.\n\n\"I've not been in there, I've been alone in the garden with Kitty. We've\nhad a quarrel for the second time since ... Stiva came.\"\n\nDolly looked at him with her shrewd, comprehending eyes.\n\n\"Come, tell me, honor bright, has there been ... not in Kitty, but in\nthat gentleman's behavior, a tone which might be unpleasant--not\nunpleasant, but horrible, offensive to a husband?\"\n\n\"You mean, how shall I say.... Stay, stay in the corner!\" she said to\nMasha, who, detecting a faint smile in her mother's face, had been\nturning round. \"The opinion of the world would be that he is behaving as\nyoung men do behave. _Il fait la cour a une jeune et jolie femme_, and a\nhusband who's a man of the world should only be flattered by it.\"\n\n\"Yes, yes,\" said Levin gloomily; \"but you noticed it?\"\n\n\"Not only I, but Stiva noticed it. Just after breakfast he said to me in\nso many words, _Je crois que Veslovsky fait un petit brin de cour a\nKitty_.\"\n\n\"Well, that's all right then; now I'm satisfied. I'll send him away,\"\nsaid Levin.\n\n\"What do you mean! Are you crazy?\" Dolly cried in horror; \"nonsense,\nKostya, only think!\" she said, laughing. \"You can go now to Fanny,\" she\nsaid to Masha. \"No, if you wish it, I'll speak to Stiva. He'll take him\naway. He can say you're expecting visitors. Altogether he doesn't fit\ninto the house.\"\n\n\"No, no, I'll do it myself.\"\n\n\"But you'll quarrel with him?\"\n\n\"Not a bit. I shall so enjoy it,\" Levin said, his eyes flashing with\nreal enjoyment. \"Come, forgive her, Dolly, she won't do it again,\" he\nsaid of the little sinner, who had not gone to Fanny, but was standing\nirresolutely before her mother, waiting and looking up from under her\nbrows to catch her mother's eye.\n\nThe mother glanced at her. The child broke into sobs, hid her face on\nher mother's lap, and Dolly laid her thin, tender hand on her head.\n\n\"And what is there in common between us and him?\" thought Levin, and he\nwent off to look for Veslovsky.\n\nAs he passed through the passage he gave orders for the carriage to be\ngot ready to drive to the station.\n\n\"The spring was broken yesterday,\" said the footman.\n\n\"Well, the covered trap, then, and make haste. Where's the visitor?\"\n\n\"The gentleman's gone to his room.\"\n\nLevin came upon Veslovsky at the moment when the latter, having unpacked\nhis things from his trunk, and laid out some new songs, was putting on\nhis gaiters to go out riding.\n\nWhether there was something exceptional in Levin's face, or that\nVassenka was himself conscious that _ce petit brin de cour_ he was\nmaking was out of place in this family, but he was somewhat (as much as\na young man in society can be) disconcerted at Levin's entrance.\n\n\"You ride in gaiters?\"\n\n\"Yes, it's much cleaner,\" said Vassenka, putting his fat leg on a chair,\nfastening the bottom hook, and smiling with simple-hearted good humor.\n\nHe was undoubtedly a good-natured fellow, and Levin felt sorry for him\nand ashamed of himself, as his host, when he saw the shy look on\nVassenka's face.\n\nOn the table lay a piece of stick which they had broken together that\nmorning, trying their strength. Levin took the fragment in his hands and\nbegan smashing it up, breaking bits off the stick, not knowing how to\nbegin.\n\n\"I wanted....\" He paused, but suddenly, remembering Kitty and everything\nthat had happened, he said, looking him resolutely in the face: \"I have\nordered the horses to be put-to for you.\"\n\n\"How so?\" Vassenka began in surprise. \"To drive where?\"\n\n\"For you to drive to the station,\" Levin said gloomily.\n\n\"Are you going away, or has something happened?\"\n\n\"It happens that I expect visitors,\" said Levin, his strong fingers more\nand more rapidly breaking off the ends of the split stick. \"And I'm not\nexpecting visitors, and nothing has happened, but I beg you to go away.\nYou can explain my rudeness as you like.\"\n\nVassenka drew himself up.\n\n\"I beg you to explain...\" he said with dignity, understanding at last.\n\n\"I can't explain,\" Levin said softly and deliberately, trying to control\nthe trembling of his jaw; \"and you'd better not ask.\"\n\nAnd as the split ends were all broken off, Levin clutched the thick ends\nin his finger, broke the stick in two, and carefully caught the end as\nit fell.\n\nProbably the sight of those nervous fingers, of the muscles he had\nproved that morning at gymnastics, of the glittering eyes, the soft\nvoice, and quivering jaws, convinced Vassenka better than any words. He\nbowed, shrugging his shoulders, and smiling contemptuously.\n\n\"Can I not see Oblonsky?\"\n\nThe shrug and the smile did not irritate Levin.\n\n\"What else was there for him to do?\" he thought.\n\n\"I'll send him to you at once.\"\n\n\"What madness is this?\" Stepan Arkadyevitch said when, after hearing\nfrom his friend that he was being turned out of the house, he found\nLevin in the garden, where he was walking about waiting for his guest's\ndeparture. \"_Mais c'est ridicule!_ What fly has stung you? _Mais c'est\ndu dernier ridicule!_ What did you think, if a young man...\"\n\nBut the place where Levin had been stung was evidently still sore, for\nhe turned pale again, when Stepan Arkadyevitch would have enlarged on\nthe reason, and he himself cut him short.\n\n\"Please don't go into it! I can't help it. I feel ashamed of how I'm\ntreating you and him. But it won't be, I imagine, a great grief to him\nto go, and his presence was distasteful to me and to my wife.\"\n\n\"But it's insulting to him! _Et puis c'est ridicule_.\"\n\n\"And to me it's both insulting and distressing! And I'm not at fault in\nany way, and there's no need for me to suffer.\"\n\n\"Well, this I didn't expect of you! _On peut etre jaloux, mais a ce\npoint, c'est du dernier ridicule!_\"\n\nLevin turned quickly, and walked away from him into the depths of the\navenue, and he went on walking up and down alone. Soon he heard the\nrumble of the trap, and saw from behind the trees how Vassenka, sitting\nin the hay (unluckily there was no seat in the trap) in his Scotch cap,\nwas driven along the avenue, jolting up and down over the ruts.\n\n\"What's this?\" Levin thought, when a footman ran out of the house and\nstopped the trap. It was the mechanician, whom Levin had totally\nforgotten. The mechanician, bowing low, said something to Veslovsky,\nthen clambered into the trap, and they drove off together.\n\nStepan Arkadyevitch and the princess were much upset by Levin's action.\nAnd he himself felt not only in the highest degree _ridicule_, but also\nutterly guilty and disgraced. But remembering what sufferings he and his\nwife had been through, when he asked himself how he should act another\ntime, he answered that he should do just the same again.\n\nIn spite of all this, towards the end of that day, everyone except the\nprincess, who could not pardon Levin's action, became extraordinarily\nlively and good humored, like children after a punishment or grown-up\npeople after a dreary, ceremonious reception, so that by the evening\nVassenka's dismissal was spoken of, in the absence of the princess, as\nthough it were some remote event. And Dolly, who had inherited her\nfather's gift of humorous storytelling, made Varenka helpless with\nlaughter as she related for the third and fourth time, always with fresh\nhumorous additions, how she had only just put on her new shoes for the\nbenefit of the visitor, and on going into the drawing room, heard\nsuddenly the rumble of the trap. And who should be in the trap but\nVassenka himself, with his Scotch cap, and his songs and his gaiters,\nand all, sitting in the hay.\n\n\"If only you'd ordered out the carriage! But no! and then I hear:\n'Stop!' Oh, I thought they've relented. I look out, and behold a fat\nGerman being sat down by him and driving away.... And my new shoes all\nfor nothing!...\"\n\n\n\nChapter 16\n\n\nDarya Alexandrovna carried out her intention and went to see Anna. She\nwas sorry to annoy her sister and to do anything Levin disliked. She\nquite understood how right the Levins were in not wishing to have\nanything to do with Vronsky. But she felt she must go and see Anna, and\nshow her that her feelings could not be changed, in spite of the change\nin her position. That she might be independent of the Levins in this\nexpedition, Darya Alexandrovna sent to the village to hire horses for\nthe drive; but Levin learning of it went to her to protest.\n\n\"What makes you suppose that I dislike your going? But, even if I did\ndislike it, I should still more dislike your not taking my horses,\" he\nsaid. \"You never told me that you were going for certain. Hiring horses\nin the village is disagreeable to me, and, what's of more importance,\nthey'll undertake the job and never get you there. I have horses. And if\nyou don't want to wound me, you'll take mine.\"\n\nDarya Alexandrovna had to consent, and on the day fixed Levin had ready\nfor his sister-in-law a set of four horses and relays, getting them\ntogether from the farm- and saddle-horses--not at all a smart-looking\nset, but capable of taking Darya Alexandrovna the whole distance in a\nsingle day. At that moment, when horses were wanted for the princess,\nwho was going, and for the midwife, it was a difficult matter for Levin\nto make up the number, but the duties of hospitality would not let him\nallow Darya Alexandrovna to hire horses when staying in his house.\nMoreover, he was well aware that the twenty roubles that would be asked\nfor the journey were a serious matter for her; Darya Alexandrovna's\npecuniary affairs, which were in a very unsatisfactory state, were taken\nto heart by the Levins as if they were their own.\n\nDarya Alexandrovna, by Levin's advice, started before daybreak. The road\nwas good, the carriage comfortable, the horses trotted along merrily,\nand on the box, besides the coachman, sat the counting-house clerk, whom\nLevin was sending instead of a groom for greater security. Darya\nAlexandrovna dozed and waked up only on reaching the inn where the\nhorses were to be changed.\n\nAfter drinking tea at the same well-to-do peasant's with whom Levin had\nstayed on the way to Sviazhsky's, and chatting with the women about\ntheir children, and with the old man about Count Vronsky, whom the\nlatter praised very highly, Darya Alexandrovna, at ten o'clock, went on\nagain. At home, looking after her children, she had no time to think. So\nnow, after this journey of four hours, all the thoughts she had\nsuppressed before rushed swarming into her brain, and she thought over\nall her life as she never had before, and from the most different points\nof view. Her thoughts seemed strange even to herself. At first she\nthought about the children, about whom she was uneasy, although the\nprincess and Kitty (she reckoned more upon her) had promised to look\nafter them. \"If only Masha does not begin her naughty tricks, if Grisha\nisn't kicked by a horse, and Lily's stomach isn't upset again!\" she\nthought. But these questions of the present were succeeded by questions\nof the immediate future. She began thinking how she had to get a new\nflat in Moscow for the coming winter, to renew the drawing room\nfurniture, and to make her elder girl a cloak. Then questions of the\nmore remote future occurred to her: how she was to place her children in\nthe world. \"The girls are all right,\" she thought; \"but the boys?\"\n\n\"It's very well that I'm teaching Grisha, but of course that's only\nbecause I am free myself now, I'm not with child. Stiva, of course,\nthere's no counting on. And with the help of good-natured friends I can\nbring them up; but if there's another baby coming?...\" And the thought\nstruck her how untruly it was said that the curse laid on woman was that\nin sorrow she should bring forth children.\n\n\"The birth itself, that's nothing; but the months of carrying the\nchild--that's what's so intolerable,\" she thought, picturing to herself\nher last pregnancy, and the death of the last baby. And she recalled the\nconversation she had just had with the young woman at the inn. On being\nasked whether she had any children, the handsome young woman had\nanswered cheerfully:\n\n\"I had a girl baby, but God set me free; I buried her last Lent.\"\n\n\"Well, did you grieve very much for her?\" asked Darya Alexandrovna.\n\n\"Why grieve? The old man has grandchildren enough as it is. It was only\na trouble. No working, nor nothing. Only a tie.\"\n\nThis answer had struck Darya Alexandrovna as revolting in spite of the\ngood-natured and pleasing face of the young woman; but now she could not\nhelp recalling these words. In those cynical words there was indeed a\ngrain of truth.\n\n\"Yes, altogether,\" thought Darya Alexandrovna, looking back over her\nwhole existence during those fifteen years of her married life,\n\"pregnancy, sickness, mental incapacity, indifference to everything, and\nmost of all--hideousness. Kitty, young and pretty as she is, even Kitty\nhas lost her looks; and I when I'm with child become hideous, I know it.\nThe birth, the agony, the hideous agonies, that last moment ... then the\nnursing, the sleepless nights, the fearful pains....\"\n\nDarya Alexandrovna shuddered at the mere recollection of the pain from\nsore breasts which she had suffered with almost every child. \"Then the\nchildren's illnesses, that everlasting apprehension; then bringing them\nup; evil propensities\" (she thought of little Masha's crime among the\nraspberries), \"education, Latin--it's all so incomprehensible and\ndifficult. And on the top of it all, the death of these children.\" And\nthere rose again before her imagination the cruel memory, that always\ntore her mother's heart, of the death of her last little baby, who had\ndied of croup; his funeral, the callous indifference of all at the\nlittle pink coffin, and her own torn heart, and her lonely anguish at\nthe sight of the pale little brow with its projecting temples, and the\nopen, wondering little mouth seen in the coffin at the moment when it\nwas being covered with the little pink lid with a cross braided on it.\n\n\"And all this, what's it for? What is to come of it all? That I'm\nwasting my life, never having a moment's peace, either with child, or\nnursing a child, forever irritable, peevish, wretched myself and\nworrying others, repulsive to my husband, while the children are growing\nup unhappy, badly educated, and penniless. Even now, if it weren't for\nspending the summer at the Levins', I don't know how we should be\nmanaging to live. Of course Kostya and Kitty have so much tact that we\ndon't feel it; but it can't go on. They'll have children, they won't be\nable to keep us; it's a drag on them as it is. How is papa, who has\nhardly anything left for himself, to help us? So that I can't even bring\nthe children up by myself, and may find it hard with the help of other\npeople, at the cost of humiliation. Why, even if we suppose the greatest\ngood luck, that the children don't die, and I bring them up somehow. At\nthe very best they'll simply be decent people. That's all I can hope\nfor. And to gain simply that--what agonies, what toil!... One's whole\nlife ruined!\" Again she recalled what the young peasant woman had said,\nand again she was revolted at the thought; but she could not help\nadmitting that there was a grain of brutal truth in the words.\n\n\"Is it far now, Mihail?\" Darya Alexandrovna asked the counting house\nclerk, to turn her mind from thoughts that were frightening her.\n\n\"From this village, they say, it's five miles.\" The carriage drove along\nthe village street and onto a bridge. On the bridge was a crowd of\npeasant women with coils of ties for the sheaves on their shoulders,\ngaily and noisily chattering. They stood still on the bridge, staring\ninquisitively at the carriage. All the faces turned to Darya\nAlexandrovna looked to her healthy and happy, making her envious of\ntheir enjoyment of life. \"They're all living, they're all enjoying\nlife,\" Darya Alexandrovna still mused when she had passed the peasant\nwomen and was driving uphill again at a trot, seated comfortably on the\nsoft springs of the old carriage, \"while I, let out, as it were from\nprison, from the world of worries that fret me to death, am only looking\nabout me now for an instant. They all live; those peasant women and my\nsister Natalia and Varenka and Anna, whom I am going to see--all, but\nnot I.\n\n\"And they attack Anna. What for? am I any better? I have, anyway, a\nhusband I love--not as I should like to love him, still I do love him,\nwhile Anna never loved hers. How is she to blame? She wants to live. God\nhas put that in our hearts. Very likely I should have done the same.\nEven to this day I don't feel sure I did right in listening to her at\nthat terrible time when she came to me in Moscow. I ought then to have\ncast off my husband and have begun my life fresh. I might have loved and\nhave been loved in reality. And is it any better as it is? I don't\nrespect him. He's necessary to me,\" she thought about her husband, \"and\nI put up with him. Is that any better? At that time I could still have\nbeen admired, I had beauty left me still,\" Darya Alexandrovna pursued\nher thoughts, and she would have liked to look at herself in the looking\nglass. She had a traveling looking glass in her handbag, and she wanted\nto take it out; but looking at the backs of the coachman and the swaying\ncounting house clerk, she felt that she would be ashamed if either of\nthem were to look round, and she did not take out the glass.\n\nBut without looking in the glass, she thought that even now it was not\ntoo late; and she thought of Sergey Ivanovitch, who was always\nparticularly attentive to her, of Stiva's good-hearted friend,\nTurovtsin, who had helped her nurse her children through the scarlatina,\nand was in love with her. And there was someone else, a quite young man,\nwho--her husband had told her it as a joke--thought her more beautiful\nthan either of her sisters. And the most passionate and impossible\nromances rose before Darya Alexandrovna's imagination. \"Anna did quite\nright, and certainly I shall never reproach her for it. She is happy,\nshe makes another person happy, and she's not broken down as I am, but\nmost likely just as she always was, bright, clever, open to every\nimpression,\" thought Darya Alexandrovna,--and a sly smile curved her\nlips, for, as she pondered on Anna's love affair, Darya Alexandrovna\nconstructed on parallel lines an almost identical love affair for\nherself, with an imaginary composite figure, the ideal man who was in\nlove with her. She, like Anna, confessed the whole affair to her\nhusband. And the amazement and perplexity of Stepan Arkadyevitch at this\navowal made her smile.\n\nIn such daydreams she reached the turning of the highroad that led to\nVozdvizhenskoe.\n\n\n\nChapter 17\n\n\nThe coachman pulled up his four horses and looked round to the right, to\na field of rye, where some peasants were sitting on a cart. The counting\nhouse clerk was just going to jump down, but on second thoughts he\nshouted peremptorily to the peasants instead, and beckoned to them to\ncome up. The wind, that seemed to blow as they drove, dropped when the\ncarriage stood still; gadflies settled on the steaming horses that\nangrily shook them off. The metallic clank of a whetstone against a\nscythe, that came to them from the cart, ceased. One of the peasants got\nup and came towards the carriage.\n\n\"Well, you are slow!\" the counting house clerk shouted angrily to the\npeasant who was stepping slowly with his bare feet over the ruts of the\nrough dry road. \"Come along, do!\"\n\nA curly-headed old man with a bit of bast tied round his hair, and his\nbent back dark with perspiration, came towards the carriage, quickening\nhis steps, and took hold of the mud-guard with his sunburnt hand.\n\n\"Vozdvizhenskoe, the manor house? the count's?\" he repeated; \"go on to\nthe end of this track. Then turn to the left. Straight along the avenue\nand you'll come right upon it. But whom do you want? The count himself?\"\n\n\"Well, are they at home, my good man?\" Darya Alexandrovna said vaguely,\nnot knowing how to ask about Anna, even of this peasant.\n\n\"At home for sure,\" said the peasant, shifting from one bare foot to the\nother, and leaving a distinct print of five toes and a heel in the dust.\n\"Sure to be at home,\" he repeated, evidently eager to talk. \"Only\nyesterday visitors arrived. There's a sight of visitors come. What do\nyou want?\" He turned round and called to a lad, who was shouting\nsomething to him from the cart. \"Oh! They all rode by here not long\nsince, to look at a reaping machine. They'll be home by now. And who\nwill you be belonging to?...\"\n\n\"We've come a long way,\" said the coachman, climbing onto the box. \"So\nit's not far?\"\n\n\"I tell you, it's just here. As soon as you get out...\" he said, keeping\nhold all the while of the carriage.\n\nA healthy-looking, broad-shouldered young fellow came up too.\n\n\"What, is it laborers they want for the harvest?\" he asked.\n\n\"I don't know, my boy.\"\n\n\"So you keep to the left, and you'll come right on it,\" said the\npeasant, unmistakably loth to let the travelers go, and eager to\nconverse.\n\nThe coachman started the horses, but they were only just turning off\nwhen the peasant shouted: \"Stop! Hi, friend! Stop!\" called the two\nvoices. The coachman stopped.\n\n\"They're coming! They're yonder!\" shouted the peasant. \"See what a\nturn-out!\" he said, pointing to four persons on horseback, and two in a\n_char-a-banc_, coming along the road.\n\nThey were Vronsky with a jockey, Veslovsky and Anna on horseback, and\nPrincess Varvara and Sviazhsky in the _char-a-banc_. They had gone out\nto look at the working of a new reaping machine.\n\nWhen the carriage stopped, the party on horseback were coming at a\nwalking pace. Anna was in front beside Veslovsky. Anna, quietly walking\nher horse, a sturdy English cob with cropped mane and short tail, her\nbeautiful head with her black hair straying loose under her high hat,\nher full shoulders, her slender waist in her black riding habit, and all\nthe ease and grace of her deportment, impressed Dolly.\n\nFor the first minute it seemed to her unsuitable for Anna to be on\nhorseback. The conception of riding on horseback for a lady was, in\nDarya Alexandrovna's mind, associated with ideas of youthful flirtation\nand frivolity, which, in her opinion, was unbecoming in Anna's position.\nBut when she had scrutinized her, seeing her closer, she was at once\nreconciled to her riding. In spite of her elegance, everything was so\nsimple, quiet, and dignified in the attitude, the dress and the\nmovements of Anna, that nothing could have been more natural.\n\nBeside Anna, on a hot-looking gray cavalry horse, was Vassenka Veslovsky\nin his Scotch cap with floating ribbons, his stout legs stretched out in\nfront, obviously pleased with his own appearance. Darya Alexandrovna\ncould not suppress a good-humored smile as she recognized him. Behind\nrode Vronsky on a dark bay mare, obviously heated from galloping. He was\nholding her in, pulling at the reins.\n\nAfter him rode a little man in the dress of a jockey. Sviazhsky and\nPrincess Varvara in a new _char-a-banc_ with a big, raven-black trotting\nhorse, overtook the party on horseback.\n\nAnna's face suddenly beamed with a joyful smile at the instant when, in\nthe little figure huddled in a corner of the old carriage, she\nrecognized Dolly. She uttered a cry, started in the saddle, and set her\nhorse into a gallop. On reaching the carriage she jumped off without\nassistance, and holding up her riding habit, she ran up to greet Dolly.\n\n\"I thought it was you and dared not think it. How delightful! You can't\nfancy how glad I am!\" she said, at one moment pressing her face against\nDolly and kissing her, and at the next holding her off and examining her\nwith a smile.\n\n\"Here's a delightful surprise, Alexey!\" she said, looking round at\nVronsky, who had dismounted, and was walking towards them.\n\nVronsky, taking off his tall gray hat, went up to Dolly.\n\n\"You wouldn't believe how glad we are to see you,\" he said, giving\npeculiar significance to the words, and showing his strong white teeth\nin a smile.\n\nVassenka Veslovsky, without getting off his horse, took off his cap and\ngreeted the visitor by gleefully waving the ribbons over his head.\n\n\"That's Princess Varvara,\" Anna said in reply to a glance of inquiry\nfrom Dolly as the _char-a-banc_ drove up.\n\n\"Ah!\" said Darya Alexandrovna, and unconsciously her face betrayed her\ndissatisfaction.\n\nPrincess Varvara was her husband's aunt, and she had long known her, and\ndid not respect her. She knew that Princess Varvara had passed her whole\nlife toadying on her rich relations, but that she should now be sponging\non Vronsky, a man who was nothing to her, mortified Dolly on account of\nher kinship with her husband. Anna noticed Dolly's expression, and was\ndisconcerted by it. She blushed, dropped her riding habit, and stumbled\nover it.\n\nDarya Alexandrovna went up to the _char-a-banc_ and coldly greeted\nPrincess Varvara. Sviazhsky too she knew. He inquired how his queer\nfriend with the young wife was, and running his eyes over the\nill-matched horses and the carriage with its patched mud-guards,\nproposed to the ladies that they should get into the _char-a-banc_.\n\n\"And I'll get into this vehicle,\" he said. \"The horse is quiet, and the\nprincess drives capitally.\"\n\n\"No, stay as you were,\" said Anna, coming up, \"and we'll go in the\ncarriage,\" and taking Dolly's arm, she drew her away.\n\nDarya Alexandrovna's eyes were fairly dazzled by the elegant carriage of\na pattern she had never seen before, the splendid horses, and the\nelegant and gorgeous people surrounding her. But what struck her most of\nall was the change that had taken place in Anna, whom she knew so well\nand loved. Any other woman, a less close observer, not knowing Anna\nbefore, or not having thought as Darya Alexandrovna had been thinking on\nthe road, would not have noticed anything special in Anna. But now Dolly\nwas struck by that temporary beauty, which is only found in women during\nthe moments of love, and which she saw now in Anna's face. Everything in\nher face, the clearly marked dimples in her cheeks and chin, the line of\nher lips, the smile which, as it were, fluttered about her face, the\nbrilliance of her eyes, the grace and rapidity of her movements, the\nfulness of the notes of her voice, even the manner in which, with a sort\nof angry friendliness, she answered Veslovsky when he asked permission\nto get on her cob, so as to teach it to gallop with the right leg\nforemost--it was all peculiarly fascinating, and it seemed as if she\nwere herself aware of it, and rejoicing in it.\n\nWhen both the women were seated in the carriage, a sudden embarrassment\ncame over both of them. Anna was disconcerted by the intent look of\ninquiry Dolly fixed upon her. Dolly was embarrassed because after\nSviazhsky's phrase about \"this vehicle,\" she could not help feeling\nashamed of the dirty old carriage in which Anna was sitting with her.\nThe coachman Philip and the counting house clerk were experiencing the\nsame sensation. The counting house clerk, to conceal his confusion,\nbusied himself settling the ladies, but Philip the coachman became\nsullen, and was bracing himself not to be overawed in future by this\nexternal superiority. He smiled ironically, looking at the raven horse,\nand was already deciding in his own mind that this smart trotter in the\n_char-a-banc_ was only good for _promenade_, and wouldn't do thirty\nmiles straight off in the heat.\n\nThe peasants had all got up from the cart and were inquisitively and\nmirthfully staring at the meeting of the friends, making their comments\non it.\n\n\"They're pleased, too; haven't seen each other for a long while,\" said\nthe curly-headed old man with the bast round his hair.\n\n\"I say, Uncle Gerasim, if we could take that raven horse now, to cart\nthe corn, that 'ud be quick work!\"\n\n\"Look-ee! Is that a woman in breeches?\" said one of them, pointing to\nVassenka Veslovsky sitting in a side saddle.\n\n\"Nay, a man! See how smartly he's going it!\"\n\n\"Eh, lads! seems we're not going to sleep, then?\"\n\n\"What chance of sleep today!\" said the old man, with a sidelong look at\nthe sun. \"Midday's past, look-ee! Get your hooks, and come along!\"\n\n\n\nChapter 18\n\n\nAnna looked at Dolly's thin, care-worn face, with its wrinkles filled\nwith dust from the road, and she was on the point of saying what she was\nthinking, that is, that Dolly had got thinner. But, conscious that she\nherself had grown handsomer, and that Dolly's eyes were telling her so,\nshe sighed and began to speak about herself.\n\n\"You are looking at me,\" she said, \"and wondering how I can be happy in\nmy position? Well! it's shameful to confess, but I ... I'm inexcusably\nhappy. Something magical has happened to me, like a dream, when you're\nfrightened, panic-stricken, and all of a sudden you wake up and all the\nhorrors are no more. I have waked up. I have lived through the misery,\nthe dread, and now for a long while past, especially since we've been\nhere, I've been so happy!...\" she said, with a timid smile of inquiry\nlooking at Dolly.\n\n\"How glad I am!\" said Dolly smiling, involuntarily speaking more coldly\nthan she wanted to. \"I'm very glad for you. Why haven't you written to\nme?\"\n\n\"Why?... Because I hadn't the courage.... You forget my position...\"\n\n\"To me? Hadn't the courage? If you knew how I ... I look at...\"\n\nDarya Alexandrovna wanted to express her thoughts of the morning, but\nfor some reason it seemed to her now out of place to do so.\n\n\"But of that we'll talk later. What's this, what are all these\nbuildings?\" she asked, wanting to change the conversation and pointing\nto the red and green roofs that came into view behind the green hedges\nof acacia and lilac. \"Quite a little town.\"\n\nBut Anna did not answer.\n\n\"No, no! How do you look at my position, what do you think of it?\" she\nasked.\n\n\"I consider...\" Darya Alexandrovna was beginning, but at that instant\nVassenka Veslovsky, having brought the cob to gallop with the right leg\nforemost, galloped past them, bumping heavily up and down in his short\njacket on the chamois leather of the side saddle. \"He's doing it, Anna\nArkadyevna!\" he shouted.\n\nAnna did not even glance at him; but again it seemed to Darya\nAlexandrovna out of place to enter upon such a long conversation in the\ncarriage, and so she cut short her thought.\n\n\"I don't think anything,\" she said, \"but I always loved you, and if one\nloves anyone, one loves the whole person, just as they are and not as\none would like them to be....\"\n\nAnna, taking her eyes off her friend's face and dropping her eyelids\n(this was a new habit Dolly had not seen in her before), pondered,\ntrying to penetrate the full significance of the words. And obviously\ninterpreting them as she would have wished, she glanced at Dolly.\n\n\"If you had any sins,\" she said, \"they would all be forgiven you for\nyour coming to see me and these words.\"\n\nAnd Dolly saw that tears stood in her eyes. She pressed Anna's hand in\nsilence.\n\n\"Well, what are these buildings? How many there are of them!\" After a\nmoment's silence she repeated her question.\n\n\"These are the servants' houses, barns, and stables,\" answered Anna.\n\"And there the park begins. It had all gone to ruin, but Alexey had\neverything renewed. He is very fond of this place, and, what I never\nexpected, he has become intensely interested in looking after it. But\nhis is such a rich nature! Whatever he takes up, he does splendidly. So\nfar from being bored by it, he works with passionate interest. He--with\nhis temperament as I know it--he has become careful and businesslike, a\nfirst-rate manager, he positively reckons every penny in his management\nof the land. But only in that. When it's a question of tens of\nthousands, he doesn't think of money.\" She spoke with that gleefully sly\nsmile with which women often talk of the secret characteristics only\nknown to them--of those they love. \"Do you see that big building? that's\nthe new hospital. I believe it will cost over a hundred thousand; that's\nhis hobby just now. And do you know how it all came about? The peasants\nasked him for some meadowland, I think it was, at a cheaper rate, and he\nrefused, and I accused him of being miserly. Of course it was not really\nbecause of that, but everything together, he began this hospital to\nprove, do you see, that he was not miserly about money. _C'est une\npetitesse_, if you like, but I love him all the more for it. And now\nyou'll see the house in a moment. It was his grandfather's house, and he\nhas had nothing changed outside.\"\n\n\"How beautiful!\" said Dolly, looking with involuntary admiration at the\nhandsome house with columns, standing out among the different-colored\ngreens of the old trees in the garden.\n\n\"Isn't it fine? And from the house, from the top, the view is\nwonderful.\"\n\nThey drove into a courtyard strewn with gravel and bright with flowers,\nin which two laborers were at work putting an edging of stones round the\nlight mould of a flower bed, and drew up in a covered entry.\n\n\"Ah, they're here already!\" said Anna, looking at the saddle horses,\nwhich were just being led away from the steps. \"It is a nice horse,\nisn't it? It's my cob; my favorite. Lead him here and bring me some\nsugar. Where is the count?\" she inquired of two smart footmen who darted\nout. \"Ah, there he is!\" she said, seeing Vronsky coming to meet her with\nVeslovsky.\n\n\"Where are you going to put the princess?\" said Vronsky in French,\naddressing Anna, and without waiting for a reply, he once more greeted\nDarya Alexandrovna, and this time he kissed her hand. \"I think the big\nbalcony room.\"\n\n\"Oh, no, that's too far off! Better in the corner room, we shall see\neach other more. Come, let's go up,\" said Anna, as she gave her favorite\nhorse the sugar the footman had brought her.\n\n\"_Et vous oubliez votre devoir_,\" she said to Veslovsky, who came out\ntoo on the steps.\n\n\"_Pardon, j'en ai tout plein les poches_,\" he answered, smiling, putting\nhis fingers in his waistcoat pocket.\n\n\"_Mais vous venez trop tard_,\" she said, rubbing her handkerchief on her\nhand, which the horse had made wet in taking the sugar.\n\nAnna turned to Dolly. \"You can stay some time? For one day only? That's\nimpossible!\"\n\n\"I promised to be back, and the children...\" said Dolly, feeling\nembarrassed both because she had to get her bag out of the carriage, and\nbecause she knew her face must be covered with dust.\n\n\"No, Dolly, darling!... Well, we'll see. Come along, come along!\" and\nAnna led Dolly to her room.\n\nThat room was not the smart guest chamber Vronsky had suggested, but the\none of which Anna had said that Dolly would excuse it. And this room,\nfor which excuse was needed, was more full of luxury than any in which\nDolly had ever stayed, a luxury that reminded her of the best hotels\nabroad.\n\n\"Well, darling, how happy I am!\" Anna said, sitting down in her riding\nhabit for a moment beside Dolly. \"Tell me about all of you. Stiva I had\nonly a glimpse of, and he cannot tell one about the children. How is my\nfavorite, Tanya? Quite a big girl, I expect?\"\n\n\"Yes, she's very tall,\" Darya Alexandrovna answered shortly, surprised\nherself that she should respond so coolly about her children. \"We are\nhaving a delightful stay at the Levins',\" she added.\n\n\"Oh, if I had known,\" said Anna, \"that you do not despise me!... You\nmight have all come to us. Stiva's an old friend and a great friend of\nAlexey's, you know,\" she added, and suddenly she blushed.\n\n\"Yes, but we are all...\" Dolly answered in confusion.\n\n\"But in my delight I'm talking nonsense. The one thing, darling, is that\nI am so glad to have you!\" said Anna, kissing her again. \"You haven't\ntold me yet how and what you think about me, and I keep wanting to know.\nBut I'm glad you will see me as I am. The chief thing I shouldn't like\nwould be for people to imagine I want to prove anything. I don't want to\nprove anything; I merely want to live, to do no one harm but myself. I\nhave the right to do that, haven't I? But it is a big subject, and we'll\ntalk over everything properly later. Now I'll go and dress and send a\nmaid to you.\"\n\n\n\nChapter 19\n\n\nLeft alone, Darya Alexandrovna, with a good housewife's eye, scanned her\nroom. All she had seen in entering the house and walking through it, and\nall she saw now in her room, gave her an impression of wealth and\nsumptuousness and of that modern European luxury of which she had only\nread in English novels, but had never seen in Russia and in the country.\nEverything was new from the new French hangings on the walls to the\ncarpet which covered the whole floor. The bed had a spring mattress, and\na special sort of bolster and silk pillowcases on the little pillows.\nThe marble washstand, the dressing table, the little sofa, the tables,\nthe bronze clock on the chimney piece, the window curtains, and the\n_portieres_ were all new and expensive.\n\nThe smart maid, who came in to offer her services, with her hair done up\nhigh, and a gown more fashionable than Dolly's, was as new and expensive\nas the whole room. Darya Alexandrovna liked her neatness, her\ndeferential and obliging manners, but she felt ill at ease with her. She\nfelt ashamed of her seeing the patched dressing jacket that had\nunluckily been packed by mistake for her. She was ashamed of the very\npatches and darned places of which she had been so proud at home. At\nhome it had been so clear that for six dressing jackets there would be\nneeded twenty-four yards of nainsook at sixteen pence the yard, which\nwas a matter of thirty shillings besides the cutting-out and making, and\nthese thirty shillings had been saved. But before the maid she felt, if\nnot exactly ashamed, at least uncomfortable.\n\nDarya Alexandrovna had a great sense of relief when Annushka, whom she\nhad known for years, walked in. The smart maid was sent for to go to her\nmistress, and Annushka remained with Darya Alexandrovna.\n\nAnnushka was obviously much pleased at that lady's arrival, and began to\nchatter away without a pause. Dolly observed that she was longing to\nexpress her opinion in regard to her mistress's position, especially as\nto the love and devotion of the count to Anna Arkadyevna, but Dolly\ncarefully interrupted her whenever she began to speak about this.\n\n\"I grew up with Anna Arkadyevna; my lady's dearer to me than anything.\nWell, it's not for us to judge. And, to be sure, there seems so much\nlove...\"\n\n\"Kindly pour out the water for me to wash now, please,\" Darya\nAlexandrovna cut her short.\n\n\"Certainly. We've two women kept specially for washing small things, but\nmost of the linen's done by machinery. The count goes into everything\nhimself. Ah, what a husband!...\"\n\nDolly was glad when Anna came in, and by her entrance put a stop to\nAnnushka's gossip.\n\nAnna had put on a very simple batiste gown. Dolly scrutinized that\nsimple gown attentively. She knew what it meant, and the price at which\nsuch simplicity was obtained.\n\n\"An old friend,\" said Anna of Annushka.\n\nAnna was not embarrassed now. She was perfectly composed and at ease.\nDolly saw that she had now completely recovered from the impression her\narrival had made on her, and had assumed that superficial, careless tone\nwhich, as it were, closed the door on that compartment in which her\ndeeper feelings and ideas were kept.\n\n\"Well, Anna, and how is your little girl?\" asked Dolly.\n\n\"Annie?\" (This was what she called her little daughter Anna.) \"Very\nwell. She has got on wonderfully. Would you like to see her? Come, I'll\nshow her to you. We had a terrible bother,\" she began telling her, \"over\nnurses. We had an Italian wet-nurse. A good creature, but so stupid! We\nwanted to get rid of her, but the baby is so used to her that we've gone\non keeping her still.\"\n\n\"But how have you managed?...\" Dolly was beginning a question as to what\nname the little girl would have; but noticing a sudden frown on Anna's\nface, she changed the drift of her question.\n\n\"How did you manage? have you weaned her yet?\"\n\nBut Anna had understood.\n\n\"You didn't mean to ask that? You meant to ask about her surname. Yes?\nThat worries Alexey. She has no name--that is, she's a Karenina,\" said\nAnna, dropping her eyelids till nothing could be seen but the eyelashes\nmeeting. \"But we'll talk about all that later,\" her face suddenly\nbrightening. \"Come, I'll show you her. _Elle est tres gentille_. She\ncrawls now.\"\n\nIn the nursery the luxury which had impressed Dolly in the whole house\nstruck her still more. There were little go-carts ordered from England,\nand appliances for learning to walk, and a sofa after the fashion of a\nbilliard table, purposely constructed for crawling, and swings and\nbaths, all of special pattern, and modern. They were all English, solid,\nand of good make, and obviously very expensive. The room was large, and\nvery light and lofty.\n\nWhen they went in, the baby, with nothing on but her little smock, was\nsitting in a little elbow chair at the table, having her dinner of\nbroth, which she was spilling all over her little chest. The baby was\nbeing fed, and the Russian nursery maid was evidently sharing her meal.\nNeither the wet-nurse nor the head nurse were there; they were in the\nnext room, from which came the sound of their conversation in the queer\nFrench which was their only means of communication.\n\nHearing Anna's voice, a smart, tall, English nurse with a disagreeable\nface and a dissolute expression walked in at the door, hurriedly shaking\nher fair curls, and immediately began to defend herself though Anna had\nnot found fault with her. At every word Anna said, the English nurse\nsaid hurriedly several times, \"Yes, my lady.\"\n\nThe rosy baby with her black eyebrows and hair, her sturdy red little\nbody with tight goose-flesh skin, delighted Darya Alexandrovna in spite\nof the cross expression with which she stared at the stranger. She\npositively envied the baby's healthy appearance. She was delighted, too,\nat the baby's crawling. Not one of her own children had crawled like\nthat. When the baby was put on the carpet and its little dress tucked up\nbehind, it was wonderfully charming. Looking round like some little wild\nanimal at the grown-up big people with her bright black eyes, she\nsmiled, unmistakably pleased at their admiring her, and holding her legs\nsideways, she pressed vigorously on her arms, and rapidly drew her whole\nback up after, and then made another step forward with her little arms.\n\nBut the whole atmosphere of the nursery, and especially the English\nnurse, Darya Alexandrovna did not like at all. It was only on the\nsupposition that no good nurse would have entered so irregular a\nhousehold as Anna's that Darya Alexandrovna could explain to herself how\nAnna with her insight into people could take such an unprepossessing,\ndisreputable-looking woman as nurse to her child.\n\nBesides, from a few words that were dropped, Darya Alexandrovna saw at\nonce that Anna, the two nurses, and the child had no common existence,\nand that the mother's visit was something exceptional. Anna wanted to\nget the baby her plaything, and could not find it.\n\nMost amazing of all was the fact that on being asked how many teeth the\nbaby had, Anna answered wrong, and knew nothing about the two last\nteeth.\n\n\"I sometimes feel sorry I'm so superfluous here,\" said Anna, going out\nof the nursery and holding up her skirt so as to escape the plaything\nstanding in the doorway. \"It was very different with my first child.\"\n\n\"I expected it to be the other way,\" said Darya Alexandrovna shyly.\n\n\"Oh, no! By the way, do you know I saw Seryozha?\" said Anna, screwing up\nher eyes, as though looking at something far away. \"But we'll talk about\nthat later. You wouldn't believe it, I'm like a hungry beggar woman when\na full dinner is set before her, and she does not know what to begin on\nfirst. The dinner is you, and the talks I have before me with you, which\nI could never have with anyone else; and I don't know which subject to\nbegin upon first. _Mais je ne vous ferai grace de rien_. I must have\neverything out with you.\"\n\n\"Oh, I ought to give you a sketch of the company you will meet with us,\"\nshe went on. \"I'll begin with the ladies. Princess Varvara--you know\nher, and I know your opinion and Stiva's about her. Stiva says the whole\naim of her existence is to prove her superiority over Auntie Katerina\nPavlovna: that's all true; but she's a good-natured woman, and I am so\ngrateful to her. In Petersburg there was a moment when a chaperon was\nabsolutely essential for me. Then she turned up. But really she is\ngood-natured. She did a great deal to alleviate my position. I see you\ndon't understand all the difficulty of my position ... there in\nPetersburg,\" she added. \"Here I'm perfectly at ease and happy. Well, of\nthat later on, though. Then Sviazhsky--he's the marshal of the district,\nand he's a very good sort of a man, but he wants to get something out of\nAlexey. You understand, with his property, now that we are settled in\nthe country, Alexey can exercise great influence. Then there's\nTushkevitch--you have seen him, you know--Betsy's admirer. Now he's been\nthrown over and he's come to see us. As Alexey says, he's one of those\npeople who are very pleasant if one accepts them for what they try to\nappear to be, _et puis il est comme il faut_, as Princess Varvara says.\nThen Veslovsky ... you know him. A very nice boy,\" she said, and a sly\nsmile curved her lips. \"What's this wild story about him and the Levins?\nVeslovsky told Alexey about it, and we don't believe it. _Il est tres\ngentil et naif_,\" she said again with the same smile. \"Men need\noccupation, and Alexey needs a circle, so I value all these people. We\nhave to have the house lively and gay, so that Alexey may not long for\nany novelty. Then you'll see the steward--a German, a very good fellow,\nand he understands his work. Alexey has a very high opinion of him. Then\nthe doctor, a young man, not quite a Nihilist perhaps, but you know,\neats with his knife ... but a very good doctor. Then the architect....\n_Une petite cour!_\"\n\n\n\nChapter 20\n\n\n\"Here's Dolly for you, princess, you were so anxious to see her,\" said\nAnna, coming out with Darya Alexandrovna onto the stone terrace where\nPrincess Varvara was sitting in the shade at an embroidery frame,\nworking at a cover for Count Alexey Kirillovitch's easy chair. \"She says\nshe doesn't want anything before dinner, but please order some lunch for\nher, and I'll go and look for Alexey and bring them all in.\"\n\nPrincess Varvara gave Dolly a cordial and rather patronizing reception,\nand began at once explaining to her that she was living with Anna\nbecause she had always cared more for her than her sister Katerina\nPavlovna, the aunt that had brought Anna up, and that now, when every\none had abandoned Anna, she thought it her duty to help her in this most\ndifficult period of transition.\n\n\"Her husband will give her a divorce, and then I shall go back to my\nsolitude; but now I can be of use, and I am doing my duty, however\ndifficult it may be for me--not like some other people. And how sweet it\nis of you, how right of you to have come! They live like the best of\nmarried couples; it's for God to judge them, not for us. And didn't\nBiryuzovsky and Madame Avenieva ... and Sam Nikandrov, and Vassiliev and\nMadame Mamonova, and Liza Neptunova... Did no one say anything about\nthem? And it has ended by their being received by everyone. And then,\n_c'est un interieur si joli, si comme il faut. Tout-a-fait a l'anglaise.\nOn se reunit le matin au breakfast, et puis on se separe._ Everyone does\nas he pleases till dinnertime. Dinner at seven o'clock. Stiva did very\nrightly to send you. He needs their support. You know that through his\nmother and brother he can do anything. And then they do so much good. He\ndidn't tell you about his hospital? _Ce sera admirable_--everything from\nParis.\"\n\nTheir conversation was interrupted by Anna, who had found the men of the\nparty in the billiard room, and returned with them to the terrace. There\nwas still a long time before the dinner-hour, it was exquisite weather,\nand so several different methods of spending the next two hours were\nproposed. There were very many methods of passing the time at\nVozdvizhenskoe, and these were all unlike those in use at Pokrovskoe.\n\n\"_Une partie de lawn-tennis,_\" Veslovsky proposed, with his handsome\nsmile. \"We'll be partners again, Anna Arkadyevna.\"\n\n\"No, it's too hot; better stroll about the garden and have a row in the\nboat, show Darya Alexandrovna the river banks.\" Vronsky proposed.\n\n\"I agree to anything,\" said Sviazhsky.\n\n\"I imagine that what Dolly would like best would be a stroll--wouldn't\nyou? And then the boat, perhaps,\" said Anna.\n\nSo it was decided. Veslovsky and Tushkevitch went off to the bathing\nplace, promising to get the boat ready and to wait there for them.\n\nThey walked along the path in two couples, Anna with Sviazhsky, and\nDolly with Vronsky. Dolly was a little embarrassed and anxious in the\nnew surroundings in which she found herself. Abstractly, theoretically,\nshe did not merely justify, she positively approved of Anna's conduct.\nAs is indeed not unfrequent with women of unimpeachable virtue, weary of\nthe monotony of respectable existence, at a distance she not only\nexcused illicit love, she positively envied it. Besides, she loved Anna\nwith all her heart. But seeing Anna in actual life among these\nstrangers, with this fashionable tone that was so new to Darya\nAlexandrovna, she felt ill at ease. What she disliked particularly was\nseeing Princess Varvara ready to overlook everything for the sake of the\ncomforts she enjoyed.\n\nAs a general principle, abstractly, Dolly approved of Anna's action; but\nto see the man for whose sake her action had been taken was disagreeable\nto her. Moreover, she had never liked Vronsky. She thought him very\nproud, and saw nothing in him of which he could be proud except his\nwealth. But against her own will, here in his own house, he overawed her\nmore than ever, and she could not be at ease with him. She felt with him\nthe same feeling she had had with the maid about her dressing jacket.\nJust as with the maid she had felt not exactly ashamed, but embarrassed\nat her darns, so she felt with him not exactly ashamed, but embarrassed\nat herself.\n\nDolly was ill at ease, and tried to find a subject of conversation. Even\nthough she supposed that, through his pride, praise of his house and\ngarden would be sure to be disagreeable to him, she did all the same\ntell him how much she liked his house.\n\n\"Yes, it's a very fine building, and in the good old-fashioned style,\"\nhe said.\n\n\"I like so much the court in front of the steps. Was that always so?\"\n\n\"Oh, no!\" he said, and his face beamed with pleasure. \"If you could only\nhave seen that court last spring!\"\n\nAnd he began, at first rather diffidently, but more and more carried\naway by the subject as he went on, to draw her attention to the various\ndetails of the decoration of his house and garden. It was evident that,\nhaving devoted a great deal of trouble to improve and beautify his home,\nVronsky felt a need to show off the improvements to a new person, and\nwas genuinely delighted at Darya Alexandrovna's praise.\n\n\"If you would care to look at the hospital, and are not tired, indeed,\nit's not far. Shall we go?\" he said, glancing into her face to convince\nhimself that she was not bored. \"Are you coming, Anna?\" he turned to\nher.\n\n\"We will come, won't we?\" she said, addressing Sviazhsky. \"_Mais il ne\nfaut pas laisser le pauvre Veslovsky et Tushkevitch se morfondre la dans\nle bateau._ We must send and tell them.\"\n\n\"Yes, this is a monument he is setting up here,\" said Anna, turning to\nDolly with that sly smile of comprehension with which she had previously\ntalked about the hospital.\n\n\"Oh, it's a work of real importance!\" said Sviazhsky. But to show he was\nnot trying to ingratiate himself with Vronsky, he promptly added some\nslightly critical remarks.\n\n\"I wonder, though, count,\" he said, \"that while you do so much for the\nhealth of the peasants, you take so little interest in the schools.\"\n\n\"_C'est devenu tellement commun les ecoles,_\" said Vronsky. \"You\nunderstand it's not on that account, but it just happens so, my interest\nhas been diverted elsewhere. This way then to the hospital,\" he said to\nDarya Alexandrovna, pointing to a turning out of the avenue.\n\nThe ladies put up their parasols and turned into the side path. After\ngoing down several turnings, and going through a little gate, Darya\nAlexandrovna saw standing on rising ground before her a large\npretentious-looking red building, almost finished. The iron roof, which\nwas not yet painted, shone with dazzling brightness in the sunshine.\nBeside the finished building another had been begun, surrounded by\nscaffolding. Workmen in aprons, standing on scaffolds, were laying\nbricks, pouring mortar out of vats, and smoothing it with trowels.\n\n\"How quickly work gets done with you!\" said Sviazhsky. \"When I was here\nlast time the roof was not on.\"\n\n\"By the autumn it will all be ready. Inside almost everything is done,\"\nsaid Anna.\n\n\"And what's this new building?\"\n\n\"That's the house for the doctor and the dispensary,\" answered Vronsky,\nseeing the architect in a short jacket coming towards him; and excusing\nhimself to the ladies, he went to meet him.\n\nGoing round a hole where the workmen were slaking lime, he stood still\nwith the architect and began talking rather warmly.\n\n\"The front is still too low,\" he said to Anna, who had asked what was\nthe matter.\n\n\"I said the foundation ought to be raised,\" said Anna.\n\n\"Yes, of course it would have been much better, Anna Arkadyevna,\" said\nthe architect, \"but now it's too late.\"\n\n\"Yes, I take a great interest in it,\" Anna answered Sviazhsky, who was\nexpressing his surprise at her knowledge of architecture. \"This new\nbuilding ought to have been in harmony with the hospital. It was an\nafterthought, and was begun without a plan.\"\n\nVronsky, having finished his talk with the architect, joined the ladies,\nand led them inside the hospital.\n\nAlthough they were still at work on the cornices outside and were\npainting on the ground floor, upstairs almost all the rooms were\nfinished. Going up the broad cast-iron staircase to the landing, they\nwalked into the first large room. The walls were stuccoed to look like\nmarble, the huge plate-glass windows were already in, only the parquet\nfloor was not yet finished, and the carpenters, who were planing a block\nof it, left their work, taking off the bands that fastened their hair,\nto greet the gentry.\n\n\"This is the reception room,\" said Vronsky. \"Here there will be a desk,\ntables, and benches, and nothing more.\"\n\n\"This way; let us go in here. Don't go near the window,\" said Anna,\ntrying the paint to see if it were dry. \"Alexey, the paint's dry\nalready,\" she added.\n\nFrom the reception room they went into the corridor. Here Vronsky showed\nthem the mechanism for ventilation on a novel system. Then he showed\nthem marble baths, and beds with extraordinary springs. Then he showed\nthem the wards one after another, the storeroom, the linen room, then\nthe heating stove of a new pattern, then the trolleys, which would make\nno noise as they carried everything needed along the corridors, and many\nother things. Sviazhsky, as a connoisseur in the latest mechanical\nimprovements, appreciated everything fully. Dolly simply wondered at all\nshe had not seen before, and, anxious to understand it all, made minute\ninquiries about everything, which gave Vronsky great satisfaction.\n\n\"Yes, I imagine that this will be the solitary example of a properly\nfitted hospital in Russia,\" said Sviazhsky.\n\n\"And won't you have a lying-in ward?\" asked Dolly. \"That's so much\nneeded in the country. I have often...\"\n\nIn spite of his usual courtesy, Vronsky interrupted her.\n\n\"This is not a lying-in home, but a hospital for the sick, and is\nintended for all diseases, except infectious complaints,\" he said. \"Ah!\nlook at this,\" and he rolled up to Darya Alexandrovna an invalid chair\nthat had just been ordered for the convalescents. \"Look.\" He sat down in\nthe chair and began moving it. \"The patient can't walk--still too weak,\nperhaps, or something wrong with his legs, but he must have air, and he\nmoves, rolls himself along....\"\n\nDarya Alexandrovna was interested by everything. She liked everything\nvery much, but most of all she liked Vronsky himself with his natural,\nsimple-hearted eagerness. \"Yes, he's a very nice, good man,\" she thought\nseveral times, not hearing what he said, but looking at him and\npenetrating into his expression, while she mentally put herself in\nAnna's place. She liked him so much just now with his eager interest\nthat she saw how Anna could be in love with him.\n\n\n\nChapter 21\n\n\n\"No, I think the princess is tired, and horses don't interest her,\"\nVronsky said to Anna, who wanted to go on to the stables, where\nSviazhsky wished to see the new stallion. \"You go on, while I escort the\nprincess home, and we'll have a little talk,\" he said, \"if you would\nlike that?\" he added, turning to her.\n\n\"I know nothing about horses, and I shall be delighted,\" answered Darya\nAlexandrovna, rather astonished.\n\nShe saw by Vronsky's face that he wanted something from her. She was not\nmistaken. As soon as they had passed through the little gate back into\nthe garden, he looked in the direction Anna had taken, and having made\nsure that she could neither hear nor see them, he began:\n\n\"You guess that I have something I want to say to you,\" he said, looking\nat her with laughing eyes. \"I am not wrong in believing you to be a\nfriend of Anna's.\" He took off his hat, and taking out his handkerchief,\nwiped his head, which was growing bald.\n\nDarya Alexandrovna made no answer, and merely stared at him with dismay.\nWhen she was left alone with him, she suddenly felt afraid; his laughing\neyes and stern expression scared her.\n\nThe most diverse suppositions as to what he was about to speak of to her\nflashed into her brain. \"He is going to beg me to come to stay with them\nwith the children, and I shall have to refuse; or to create a set that\nwill receive Anna in Moscow.... Or isn't it Vassenka Veslovsky and his\nrelations with Anna? Or perhaps about Kitty, that he feels he was to\nblame?\" All her conjectures were unpleasant, but she did not guess what\nhe really wanted to talk about to her.\n\n\"You have so much influence with Anna, she is so fond of you,\" he said;\n\"do help me.\"\n\nDarya Alexandrovna looked with timid inquiry into his energetic face,\nwhich under the lime-trees was continually being lighted up in patches\nby the sunshine, and then passing into complete shadow again. She waited\nfor him to say more, but he walked in silence beside her, scratching\nwith his cane in the gravel.\n\n\"You have come to see us, you, the only woman of Anna's former\nfriends--I don't count Princess Varvara--but I know that you have done\nthis not because you regard our position as normal, but because,\nunderstanding all the difficulty of the position, you still love her and\nwant to be a help to her. Have I understood you rightly?\" he asked,\nlooking round at her.\n\n\"Oh, yes,\" answered Darya Alexandrovna, putting down her sunshade,\n\"but...\"\n\n\"No,\" he broke in, and unconsciously, oblivious of the awkward position\ninto which he was putting his companion, he stopped abruptly, so that\nshe had to stop short too. \"No one feels more deeply and intensely than\nI do all the difficulty of Anna's position; and that you may well\nunderstand, if you do me the honor of supposing I have any heart. I am\nto blame for that position, and that is why I feel it.\"\n\n\"I understand,\" said Darya Alexandrovna, involuntarily admiring the\nsincerity and firmness with which he said this. \"But just because you\nfeel yourself responsible, you exaggerate it, I am afraid,\" she said.\n\"Her position in the world is difficult, I can well understand.\"\n\n\"In the world it is hell!\" he brought out quickly, frowning darkly. \"You\ncan't imagine moral sufferings greater than what she went through in\nPetersburg in that fortnight ... and I beg you to believe it.\"\n\n\"Yes, but here, so long as neither Anna ... nor you miss society...\"\n\n\"Society!\" he said contemptuously, \"how could I miss society?\"\n\n\"So far--and it may be so always--you are happy and at peace. I see in\nAnna that she is happy, perfectly happy, she has had time to tell me so\nmuch already,\" said Darya Alexandrovna, smiling; and involuntarily, as\nshe said this, at the same moment a doubt entered her mind whether Anna\nreally were happy.\n\nBut Vronsky, it appeared, had no doubts on that score.\n\n\"Yes, yes,\" he said, \"I know that she has revived after all her\nsufferings; she is happy. She is happy in the present. But I?... I am\nafraid of what is before us ... I beg your pardon, you would like to\nwalk on?\"\n\n\"No, I don't mind.\"\n\n\"Well, then, let us sit here.\"\n\nDarya Alexandrovna sat down on a garden seat in a corner of the avenue.\nHe stood up facing her.\n\n\"I see that she is happy,\" he repeated, and the doubt whether she were\nhappy sank more deeply into Darya Alexandrovna's mind. \"But can it last?\nWhether we have acted rightly or wrongly is another question, but the\ndie is cast,\" he said, passing from Russian to French, \"and we are bound\ntogether for life. We are united by all the ties of love that we hold\nmost sacred. We have a child, we may have other children. But the law\nand all the conditions of our position are such that thousands of\ncomplications arise which she does not see and does not want to see. And\nthat one can well understand. But I can't help seeing them. My daughter\nis by law not my daughter, but Karenin's. I cannot bear this falsity!\"\nhe said, with a vigorous gesture of refusal, and he looked with gloomy\ninquiry towards Darya Alexandrovna.\n\nShe made no answer, but simply gazed at him. He went on:\n\n\"One day a son may be born, my son, and he will be legally a Karenin; he\nwill not be the heir of my name nor of my property, and however happy we\nmay be in our home life and however many children we may have, there\nwill be no real tie between us. They will be Karenins. You can\nunderstand the bitterness and horror of this position! I have tried to\nspeak of this to Anna. It irritates her. She does not understand, and to\nher I cannot speak plainly of all this. Now look at another side. I am\nhappy, happy in her love, but I must have occupation. I have found\noccupation, and am proud of what I am doing and consider it nobler than\nthe pursuits of my former companions at court and in the army. And most\ncertainly I would not change the work I am doing for theirs. I am\nworking here, settled in my own place, and I am happy and contented, and\nwe need nothing more to make us happy. I love my work here. _Ce n'est\npas un pis-aller,_ on the contrary...\"\n\nDarya Alexandrovna noticed that at this point in his explanation he grew\nconfused, and she did not quite understand this digression, but she felt\nthat having once begun to speak of matters near his heart, of which he\ncould not speak to Anna, he was now making a clean breast of everything,\nand that the question of his pursuits in the country fell into the same\ncategory of matters near his heart, as the question of his relations\nwith Anna.\n\n\"Well, I will go on,\" he said, collecting himself. \"The great thing is\nthat as I work I want to have a conviction that what I am doing will not\ndie with me, that I shall have heirs to come after me,--and this I have\nnot. Conceive the position of a man who knows that his children, the\nchildren of the woman he loves, will not be his, but will belong to\nsomeone who hates them and cares nothing about them! It is awful!\"\n\nHe paused, evidently much moved.\n\n\"Yes, indeed, I see that. But what can Anna do?\" queried Darya\nAlexandrovna.\n\n\"Yes, that brings me to the object of my conversation,\" he said, calming\nhimself with an effort. \"Anna can, it depends on her.... Even to\npetition the Tsar for legitimization, a divorce is essential. And that\ndepends on Anna. Her husband agreed to a divorce--at that time your\nhusband had arranged it completely. And now, I know, he would not refuse\nit. It is only a matter of writing to him. He said plainly at that time\nthat if she expressed the desire, he would not refuse. Of course,\" he\nsaid gloomily, \"it is one of those Pharisaical cruelties of which only\nsuch heartless men are capable. He knows what agony any recollection of\nhim must give her, and knowing her, he must have a letter from her. I\ncan understand that it is agony to her. But the matter is of such\nimportance, that one must _passer pardessus toutes ces finesses de\nsentiment. Il y va du bonheur et de l'existence d'Anne et de ses\nenfants._ I won't speak of myself, though it's hard for me, very hard,\"\nhe said, with an expression as though he were threatening someone for\nits being hard for him. \"And so it is, princess, that I am shamelessly\nclutching at you as an anchor of salvation. Help me to persuade her to\nwrite to him and ask for a divorce.\"\n\n\"Yes, of course,\" Darya Alexandrovna said dreamily, as she vividly\nrecalled her last interview with Alexey Alexandrovitch. \"Yes, of\ncourse,\" she repeated with decision, thinking of Anna.\n\n\"Use your influence with her, make her write. I don't like--I'm almost\nunable to speak about this to her.\"\n\n\"Very well, I will talk to her. But how is it she does not think of it\nherself?\" said Darya Alexandrovna, and for some reason she suddenly at\nthat point recalled Anna's strange new habit of half-closing her eyes.\nAnd she remembered that Anna drooped her eyelids just when the deeper\nquestions of life were touched upon. \"Just as though she half-shut her\neyes to her own life, so as not to see everything,\" thought Dolly. \"Yes,\nindeed, for my own sake and for hers I will talk to her,\" Dolly said in\nreply to his look of gratitude.\n\nThey got up and walked to the house.\n\n\n\nChapter 22\n\n\nWhen Anna found Dolly at home before her, she looked intently in her\neyes, as though questioning her about the talk she had had with Vronsky,\nbut she made no inquiry in words.\n\n\"I believe it's dinner time,\" she said. \"We've not seen each other at\nall yet. I am reckoning on the evening. Now I want to go and dress. I\nexpect you do too; we all got splashed at the buildings.\"\n\nDolly went to her room and she felt amused. To change her dress was\nimpossible, for she had already put on her best dress. But in order to\nsignify in some way her preparation for dinner, she asked the maid to\nbrush her dress, changed her cuffs and tie, and put some lace on her\nhead.\n\n\"This is all I can do,\" she said with a smile to Anna, who came in to\nher in a third dress, again of extreme simplicity.\n\n\"Yes, we are too formal here,\" she said, as it were apologizing for her\nmagnificence. \"Alexey is delighted at your visit, as he rarely is at\nanything. He has completely lost his heart to you,\" she added. \"You're\nnot tired?\"\n\nThere was no time for talking about anything before dinner. Going into\nthe drawing room they found Princess Varvara already there, and the\ngentlemen of the party in black frock-coats. The architect wore a\nswallow-tail coat. Vronsky presented the doctor and the steward to his\nguest. The architect he had already introduced to her at the hospital.\n\nA stout butler, resplendent with a smoothly shaven round chin and a\nstarched white cravat, announced that dinner was ready, and the ladies\ngot up. Vronsky asked Sviazhsky to take in Anna Arkadyevna, and himself\noffered his arm to Dolly. Veslovsky was before Tushkevitch in offering\nhis arm to Princess Varvara, so that Tushkevitch with the steward and\nthe doctor walked in alone.\n\nThe dinner, the dining room, the service, the waiting at table, the\nwine, and the food, were not simply in keeping with the general tone of\nmodern luxury throughout all the house, but seemed even more sumptuous\nand modern. Darya Alexandrovna watched this luxury which was novel to\nher, and as a good housekeeper used to managing a household--although\nshe never dreamed of adapting anything she saw to her own household, as\nit was all in a style of luxury far above her own manner of living--she\ncould not help scrutinizing every detail, and wondering how and by whom\nit was all done. Vassenka Veslovsky, her husband, and even Sviazhsky,\nand many other people she knew, would never have considered this\nquestion, and would have readily believed what every well-bred host\ntries to make his guests feel, that is, that all that is well-ordered in\nhis house has cost him, the host, no trouble whatever, but comes of\nitself. Darya Alexandrovna was well aware that even porridge for the\nchildren's breakfast does not come of itself, and that therefore, where\nso complicated and magnificent a style of luxury was maintained, someone\nmust give earnest attention to its organization. And from the glance\nwith which Alexey Kirillovitch scanned the table, from the way he nodded\nto the butler, and offered Darya Alexandrovna her choice between cold\nsoup and hot soup, she saw that it was all organized and maintained by\nthe care of the master of the house himself. It was evident that it all\nrested no more upon Anna than upon Veslovsky. She, Sviazhsky, the\nprincess, and Veslovsky, were equally guests, with light hearts enjoying\nwhat had been arranged for them.\n\nAnna was the hostess only in conducting the conversation. The\nconversation was a difficult one for the lady of the house at a small\ntable with persons present, like the steward and the architect,\nbelonging to a completely different world, struggling not to be overawed\nby an elegance to which they were unaccustomed, and unable to sustain a\nlarge share in the general conversation. But this difficult conversation\nAnna directed with her usual tact and naturalness, and indeed she did so\nwith actual enjoyment, as Darya Alexandrovna observed. The conversation\nbegan about the row Tushkevitch and Veslovsky had taken alone together\nin the boat, and Tushkevitch began describing the last boat races in\nPetersburg at the Yacht Club. But Anna, seizing the first pause, at once\nturned to the architect to draw him out of his silence.\n\n\"Nikolay Ivanitch was struck,\" she said, meaning Sviazhsky, \"at the\nprogress the new building had made since he was here last; but I am\nthere every day, and every day I wonder at the rate at which it grows.\"\n\n\"It's first-rate working with his excellency,\" said the architect with a\nsmile (he was respectful and composed, though with a sense of his own\ndignity). \"It's a very different matter to have to do with the district\nauthorities. Where one would have to write out sheaves of papers, here I\ncall upon the count, and in three words we settle the business.\"\n\n\"The American way of doing business,\" said Sviazhsky, with a smile.\n\n\"Yes, there they build in a rational fashion...\"\n\nThe conversation passed to the misuse of political power in the United\nStates, but Anna quickly brought it round to another topic, so as to\ndraw the steward into talk.\n\n\"Have you ever seen a reaping machine?\" she said, addressing Darya\nAlexandrovna. \"We had just ridden over to look at one when we met. It's\nthe first time I ever saw one.\"\n\n\"How do they work?\" asked Dolly.\n\n\"Exactly like little scissors. A plank and a lot of little scissors.\nLike this.\"\n\nAnna took a knife and fork in her beautiful white hands covered with\nrings, and began showing how the machine worked. It was clear that she\nsaw nothing would be understood from her explanation; but aware that her\ntalk was pleasant and her hands beautiful she went on explaining.\n\n\"More like little penknives,\" Veslovsky said playfully, never taking his\neyes off her.\n\nAnna gave a just perceptible smile, but made no answer. \"Isn't it true,\nKarl Fedoritch, that it's just like little scissors?\" she said to the\nsteward.\n\n\"_Oh, ja,_\" answered the German. _\"Es ist ein ganz einfaches Ding,\"_ and\nhe began to explain the construction of the machine.\n\n\"It's a pity it doesn't bind too. I saw one at the Vienna exhibition,\nwhich binds with a wire,\" said Sviazhsky. \"They would be more profitable\nin use.\"\n\n_\"Es kommt drauf an.... Der Preis vom Draht muss ausgerechnet werden.\"_\nAnd the German, roused from his taciturnity, turned to Vronsky. _\"Das\nlaesst sich ausrechnen, Erlaucht.\"_ The German was just feeling in the\npocket where were his pencil and the notebook he always wrote in, but\nrecollecting that he was at a dinner, and observing Vronsky's chilly\nglance, he checked himself. _\"Zu compliziert, macht zu viel Klopot,\"_ he\nconcluded.\n\n_\"Wuenscht man Dochots, so hat man auch Klopots,\"_ said Vassenka\nVeslovsky, mimicking the German. _\"J'adore l'allemand,\"_ he addressed\nAnna again with the same smile.\n\n_\"Cessez,\"_ she said with playful severity.\n\n\"We expected to find you in the fields, Vassily Semyonitch,\" she said to\nthe doctor, a sickly-looking man; \"have you been there?\"\n\n\"I went there, but I had taken flight,\" the doctor answered with gloomy\njocoseness.\n\n\"Then you've taken a good constitutional?\"\n\n\"Splendid!\"\n\n\"Well, and how was the old woman? I hope it's not typhus?\"\n\n\"Typhus it is not, but it's taking a bad turn.\"\n\n\"What a pity!\" said Anna, and having thus paid the dues of civility to\nher domestic circle, she turned to her own friends.\n\n\"It would be a hard task, though, to construct a machine from your\ndescription, Anna Arkadyevna,\" Sviazhsky said jestingly.\n\n\"Oh, no, why so?\" said Anna with a smile that betrayed that she knew\nthere was something charming in her disquisitions upon the machine that\nhad been noticed by Sviazhsky. This new trait of girlish coquettishness\nmade an unpleasant impression on Dolly.\n\n\"But Anna Arkadyevna's knowledge of architecture is marvelous,\" said\nTushkevitch.\n\n\"To be sure, I heard Anna Arkadyevna talking yesterday about plinths and\ndamp-courses,\" said Veslovsky. \"Have I got it right?\"\n\n\"There's nothing marvelous about it, when one sees and hears so much of\nit,\" said Anna. \"But, I dare say, you don't even know what houses are\nmade of?\"\n\nDarya Alexandrovna saw that Anna disliked the tone of raillery that\nexisted between her and Veslovsky, but fell in with it against her will.\n\nVronsky acted in this matter quite differently from Levin. He obviously\nattached no significance to Veslovsky's chattering; on the contrary, he\nencouraged his jests.\n\n\"Come now, tell us, Veslovsky, how are the stones held together?\"\n\n\"By cement, of course.\"\n\n\"Bravo! And what is cement?\"\n\n\"Oh, some sort of paste ... no, putty,\" said Veslovsky, raising a\ngeneral laugh.\n\nThe company at dinner, with the exception of the doctor, the architect,\nand the steward, who remained plunged in gloomy silence, kept up a\nconversation that never paused, glancing off one subject, fastening on\nanother, and at times stinging one or the other to the quick. Once Darya\nAlexandrovna felt wounded to the quick, and got so hot that she\npositively flushed and wondered afterwards whether she had said anything\nextreme or unpleasant. Sviazhsky began talking of Levin, describing his\nstrange view that machinery is simply pernicious in its effects on\nRussian agriculture.\n\n\"I have not the pleasure of knowing this M. Levin,\" Vronsky said,\nsmiling, \"but most likely he has never seen the machines he condemns; or\nif he has seen and tried any, it must have been after a queer fashion,\nsome Russian imitation, not a machine from abroad. What sort of views\ncan anyone have on such a subject?\"\n\n\"Turkish views, in general,\" Veslovsky said, turning to Anna with a\nsmile.\n\n\"I can't defend his opinions,\" Darya Alexandrovna said, firing up; \"but\nI can say that he's a highly cultivated man, and if he were here he\nwould know very well how to answer you, though I am not capable of doing\nso.\"\n\n\"I like him extremely, and we are great friends,\" Sviazhsky said,\nsmiling good-naturedly. \"_Mais pardon, il est un petit peu toque;_ he\nmaintains, for instance, that district councils and arbitration boards\nare all of no use, and he is unwilling to take part in anything.\"\n\n\"It's our Russian apathy,\" said Vronsky, pouring water from an iced\ndecanter into a delicate glass on a high stem; \"we've no sense of the\nduties our privileges impose upon us, and so we refuse to recognize\nthese duties.\"\n\n\"I know no man more strict in the performance of his duties,\" said Darya\nAlexandrovna, irritated by Vronsky's tone of superiority.\n\n\"For my part,\" pursued Vronsky, who was evidently for some reason or\nother keenly affected by this conversation, \"such as I am, I am, on the\ncontrary, extremely grateful for the honor they have done me, thanks to\nNikolay Ivanitch\" (he indicated Sviazhsky), \"in electing me a justice of\nthe peace. I consider that for me the duty of being present at the\nsession, of judging some peasants' quarrel about a horse, is as\nimportant as anything I can do. And I shall regard it as an honor if\nthey elect me for the district council. It's only in that way I can pay\nfor the advantages I enjoy as a landowner. Unluckily they don't\nunderstand the weight that the big landowners ought to have in the\nstate.\"\n\nIt was strange to Darya Alexandrovna to hear how serenely confident he\nwas of being right at his own table. She thought how Levin, who believed\nthe opposite, was just as positive in his opinions at his own table. But\nshe loved Levin, and so she was on his side.\n\n\"So we can reckon upon you, count, for the coming elections?\" said\nSviazhsky. \"But you must come a little beforehand, so as to be on the\nspot by the eighth. If you would do me the honor to stop with me.\"\n\n\"I rather agree with your beau-frere,\" said Anna, \"though not quite on\nthe same ground as he,\" she added with a smile. \"I'm afraid that we have\ntoo many of these public duties in these latter days. Just as in old\ndays there were so many government functionaries that one had to call in\na functionary for every single thing, so now everyone's doing some sort\nof public duty. Alexey has been here now six months, and he's a member,\nI do believe, of five or six different public bodies. _Du train que cela\nva,_ the whole time will be wasted on it. And I'm afraid that with such\na multiplicity of these bodies, they'll end in being a mere form. How\nmany are you a member of, Nikolay Ivanitch?\" she turned to\nSviazhsky--\"over twenty, I fancy.\"\n\nAnna spoke lightly, but irritation could be discerned in her tone. Darya\nAlexandrovna, watching Anna and Vronsky attentively, detected it\ninstantly. She noticed, too, that as she spoke Vronsky's face had\nimmediately taken a serious and obstinate expression. Noticing this, and\nthat Princess Varvara at once made haste to change the conversation by\ntalking of Petersburg acquaintances, and remembering what Vronsky had\nwithout apparent connection said in the garden of his work in the\ncountry, Dolly surmised that this question of public activity was\nconnected with some deep private disagreement between Anna and Vronsky.\n\nThe dinner, the wine, the decoration of the table were all very good;\nbut it was all like what Darya Alexandrovna had seen at formal dinners\nand balls which of late years had become quite unfamiliar to her; it all\nhad the same impersonal and constrained character, and so on an ordinary\nday and in a little circle of friends it made a disagreeable impression\non her.\n\nAfter dinner they sat on the terrace, then they proceeded to play lawn\ntennis. The players, divided into two parties, stood on opposite sides\nof a tightly drawn net with gilt poles on the carefully leveled and\nrolled croquet-ground. Darya Alexandrovna made an attempt to play, but\nit was a long time before she could understand the game, and by the time\nshe did understand it, she was so tired that she sat down with Princess\nVarvara and simply looked on at the players. Her partner, Tushkevitch,\ngave up playing too, but the others kept the game up for a long time.\nSviazhsky and Vronsky both played very well and seriously. They kept a\nsharp lookout on the balls served to them, and without haste or getting\nin each other's way, they ran adroitly up to them, waited for the\nrebound, and neatly and accurately returned them over the net. Veslovsky\nplayed worse than the others. He was too eager, but he kept the players\nlively with his high spirits. His laughter and outcries never paused.\nLike the other men of the party, with the ladies' permission, he took\noff his coat, and his solid, comely figure in his white shirt-sleeves,\nwith his red perspiring face and his impulsive movements, made a picture\nthat imprinted itself vividly on the memory.\n\nWhen Darya Alexandrovna lay in bed that night, as soon as she closed her\neyes, she saw Vassenka Veslovsky flying about the croquet ground.\n\nDuring the game Darya Alexandrovna was not enjoying herself. She did not\nlike the light tone of raillery that was kept up all the time between\nVassenka Veslovsky and Anna, and the unnaturalness altogether of\ngrown-up people, all alone without children, playing at a child's game.\nBut to avoid breaking up the party and to get through the time somehow,\nafter a rest she joined the game again, and pretended to be enjoying it.\nAll that day it seemed to her as though she were acting in a theater\nwith actors cleverer than she, and that her bad acting was spoiling the\nwhole performance. She had come with the intention of staying two days,\nif all went well. But in the evening, during the game, she made up her\nmind that she would go home next day. The maternal cares and worries,\nwhich she had so hated on the way, now, after a day spent without them,\nstruck her in quite another light, and tempted her back to them.\n\nWhen, after evening tea and a row by night in the boat, Darya\nAlexandrovna went alone to her room, took off her dress, and began\narranging her thin hair for the night, she had a great sense of relief.\n\nIt was positively disagreeable to her to think that Anna was coming to\nsee her immediately. She longed to be alone with her own thoughts.\n\n\n\nChapter 23\n\n\nDolly was wanting to go to bed when Anna came in to see her, attired for\nthe night. In the course of the day Anna had several times begun to\nspeak of matters near her heart, and every time after a few words she\nhad stopped: \"Afterwards, by ourselves, we'll talk about everything.\nI've got so much I want to tell you,\" she said.\n\nNow they were by themselves, and Anna did not know what to talk about.\nShe sat in the window looking at Dolly, and going over in her own mind\nall the stores of intimate talk which had seemed so inexhaustible\nbeforehand, and she found nothing. At that moment it seemed to her that\neverything had been said already.\n\n\"Well, what of Kitty?\" she said with a heavy sigh, looking penitently at\nDolly. \"Tell me the truth, Dolly: isn't she angry with me?\"\n\n\"Angry? Oh, no!\" said Darya Alexandrovna, smiling.\n\n\"But she hates me, despises me?\"\n\n\"Oh, no! But you know that sort of thing isn't forgiven.\"\n\n\"Yes, yes,\" said Anna, turning away and looking out of the open window.\n\"But I was not to blame. And who is to blame? What's the meaning of\nbeing to blame? Could it have been otherwise? What do you think? Could\nit possibly have happened that you didn't become the wife of Stiva?\"\n\n\"Really, I don't know. But this is what I want you to tell me...\"\n\n\"Yes, yes, but we've not finished about Kitty. Is she happy? He's a very\nnice man, they say.\"\n\n\"He's much more than very nice. I don't know a better man.\"\n\n\"Ah, how glad I am! I'm so glad! Much more than very nice,\" she\nrepeated.\n\nDolly smiled.\n\n\"But tell me about yourself. We've a great deal to talk about. And I've\nhad a talk with...\" Dolly did not know what to call him. She felt it\nawkward to call him either the count or Alexey Kirillovitch.\n\n\"With Alexey,\" said Anna, \"I know what you talked about. But I wanted to\nask you directly what you think of me, of my life?\"\n\n\"How am I to say like that straight off? I really don't know.\"\n\n\"No, tell me all the same.... You see my life. But you mustn't forget\nthat you're seeing us in the summer, when you have come to us and we are\nnot alone.... But we came here early in the spring, lived quite alone,\nand shall be alone again, and I desire nothing better. But imagine me\nliving alone without him, alone, and that will be ... I see by\neverything that it will often be repeated, that he will be half the time\naway from home,\" she said, getting up and sitting down close by Dolly.\n\n\"Of course,\" she interrupted Dolly, who would have answered, \"of course\nI won't try to keep him by force. I don't keep him indeed. The races are\njust coming, his horses are running, he will go. I'm very glad. But\nthink of me, fancy my position.... But what's the use of talking about\nit?\" She smiled. \"Well, what did he talk about with you?\"\n\n\"He spoke of what I want to speak about of myself, and it's easy for me\nto be his advocate; of whether there is not a possibility ... whether\nyou could not...\" (Darya Alexandrovna hesitated) \"correct, improve your\nposition.... You know how I look at it.... But all the same, if\npossible, you should get married....\"\n\n\"Divorce, you mean?\" said Anna. \"Do you know, the only woman who came to\nsee me in Petersburg was Betsy Tverskaya? You know her, of course? _Au\nfond, c'est la femme la plus depravee qui existe._ She had an intrigue\nwith Tushkevitch, deceiving her husband in the basest way. And she told\nme that she did not care to know me so long as my position was\nirregular. Don't imagine I would compare ... I know you, darling. But I\ncould not help remembering.... Well, so what did he say to you?\" she\nrepeated.\n\n\"He said that he was unhappy on your account and his own. Perhaps you\nwill say that it's egoism, but what a legitimate and noble egoism. He\nwants first of all to legitimize his daughter, and to be your husband,\nto have a legal right to you.\"\n\n\"What wife, what slave can be so utterly a slave as I, in my position?\"\nshe put in gloomily.\n\n\"The chief thing he desires ... he desires that you should not suffer.\"\n\n\"That's impossible. Well?\"\n\n\"Well, and the most legitimate desire--he wishes that your children\nshould have a name.\"\n\n\"What children?\" Anna said, not looking at Dolly, and half closing her\neyes.\n\n\"Annie and those to come...\"\n\n\"He need not trouble on that score; I shall have no more children.\"\n\n\"How can you tell that you won't?\"\n\n\"I shall not, because I don't wish it.\" And, in spite of all her\nemotion, Anna smiled, as she caught the naive expression of curiosity,\nwonder, and horror on Dolly's face.\n\n\"The doctor told me after my illness...\"\n\n\"Impossible!\" said Dolly, opening her eyes wide.\n\nFor her this was one of those discoveries the consequences and\ndeductions from which are so immense that all that one feels for the\nfirst instant is that it is impossible to take it all in, and that one\nwill have to reflect a great, great deal upon it.\n\nThis discovery, suddenly throwing light on all those families of one or\ntwo children, which had hitherto been so incomprehensible to her,\naroused so many ideas, reflections, and contradictory emotions, that she\nhad nothing to say, and simply gazed with wide-open eyes of wonder at\nAnna. This was the very thing she had been dreaming of, but now learning\nthat it was possible, she was horrified. She felt that it was too simple\na solution of too complicated a problem.\n\n_\"N'est-ce pas immoral?\"_ was all she said, after a brief pause.\n\n\"Why so? Think, I have a choice between two alternatives: either to be\nwith child, that is an invalid, or to be the friend and companion of my\nhusband--practically my husband,\" Anna said in a tone intentionally\nsuperficial and frivolous.\n\n\"Yes, yes,\" said Darya Alexandrovna, hearing the very arguments she had\nused to herself, and not finding the same force in them as before.\n\n\"For you, for other people,\" said Anna, as though divining her thoughts,\n\"there may be reason to hesitate; but for me.... You must consider, I am\nnot his wife; he loves me as long as he loves me. And how am I to keep\nhis love? Not like this!\"\n\nShe moved her white hands in a curve before her waist with extraordinary\nrapidity, as happens during moments of excitement; ideas and memories\nrushed into Darya Alexandrovna's head. \"I,\" she thought, \"did not keep\nmy attraction for Stiva; he left me for others, and the first woman for\nwhom he betrayed me did not keep him by being always pretty and lively.\nHe deserted her and took another. And can Anna attract and keep Count\nVronsky in that way? If that is what he looks for, he will find dresses\nand manners still more attractive and charming. And however white and\nbeautiful her bare arms are, however beautiful her full figure and her\neager face under her black curls, he will find something better still,\njust as my disgusting, pitiful, and charming husband does.\"\n\nDolly made no answer, she merely sighed. Anna noticed this sigh,\nindicating dissent, and she went on. In her armory she had other\narguments so strong that no answer could be made to them.\n\n\"Do you say that it's not right? But you must consider,\" she went on;\n\"you forget my position. How can I desire children? I'm not speaking of\nthe suffering, I'm not afraid of that. Think only, what are my children\nto be? Ill-fated children, who will have to bear a stranger's name. For\nthe very fact of their birth they will be forced to be ashamed of their\nmother, their father, their birth.\"\n\n\"But that is just why a divorce is necessary.\" But Anna did not hear\nher. She longed to give utterance to all the arguments with which she\nhad so many times convinced herself.\n\n\"What is reason given me for, if I am not to use it to avoid bringing\nunhappy beings into the world!\" She looked at Dolly, but without waiting\nfor a reply she went on:\n\n\"I should always feel I had wronged these unhappy children,\" she said.\n\"If they are not, at any rate they are not unhappy; while if they are\nunhappy, I alone should be to blame for it.\"\n\nThese were the very arguments Darya Alexandrovna had used in her own\nreflections; but she heard them without understanding them. \"How can one\nwrong creatures that don't exist?\" she thought. And all at once the idea\nstruck her: could it possibly, under any circumstances, have been better\nfor her favorite Grisha if he had never existed? And this seemed to her\nso wild, so strange, that she shook her head to drive away this tangle\nof whirling, mad ideas.\n\n\"No, I don't know; it's not right,\" was all she said, with an expression\nof disgust on her face.\n\n\"Yes, but you mustn't forget that you and I.... And besides that,\" added\nAnna, in spite of the wealth of her arguments and the poverty of Dolly's\nobjections, seeming still to admit that it was not right, \"don't forget\nthe chief point, that I am not now in the same position as you. For you\nthe question is: do you desire not to have any more children; while for\nme it is: do I desire to have them? And that's a great difference. You\nmust see that I can't desire it in my position.\"\n\nDarya Alexandrovna made no reply. She suddenly felt that she had got far\naway from Anna; that there lay between them a barrier of questions on\nwhich they could never agree, and about which it was better not to\nspeak.\n\n\n\nChapter 24\n\n\n\"Then there is all the more reason for you to legalize your position, if\npossible,\" said Dolly.\n\n\"Yes, if possible,\" said Anna, speaking all at once in an utterly\ndifferent tone, subdued and mournful.\n\n\"Surely you don't mean a divorce is impossible? I was told your husband\nhad consented to it.\"\n\n\"Dolly, I don't want to talk about that.\"\n\n\"Oh, we won't then,\" Darya Alexandrovna hastened to say, noticing the\nexpression of suffering on Anna's face. \"All I see is that you take too\ngloomy a view of things.\"\n\n\"I? Not at all! I'm always bright and happy. You see, _je fais des\npassions._ Veslovsky...\"\n\n\"Yes, to tell the truth, I don't like Veslovsky's tone,\" said Darya\nAlexandrovna, anxious to change the subject.\n\n\"Oh, that's nonsense! It amuses Alexey, and that's all; but he's a boy,\nand quite under my control. You know, I turn him as I please. It's just\nas it might be with your Grisha.... Dolly!\"--she suddenly changed the\nsubject--\"you say I take too gloomy a view of things. You can't\nunderstand. It's too awful! I try not to take any view of it at all.\"\n\n\"But I think you ought to. You ought to do all you can.\"\n\n\"But what can I do? Nothing. You tell me to marry Alexey, and say I\ndon't think about it. I don't think about it!\" she repeated, and a flush\nrose into her face. She got up, straightening her chest, and sighed\nheavily. With her light step she began pacing up and down the room,\nstopping now and then. \"I don't think of it? Not a day, not an hour\npasses that I don't think of it, and blame myself for thinking of it ...\nbecause thinking of that may drive me mad. Drive me mad!\" she repeated.\n\"When I think of it, I can't sleep without morphine. But never mind. Let\nus talk quietly. They tell me, divorce. In the first place, he won't\ngive me a divorce. He's under the influence of Countess Lidia Ivanovna\nnow.\"\n\nDarya Alexandrovna, sitting erect on a chair, turned her head, following\nAnna with a face of sympathetic suffering.\n\n\"You ought to make the attempt,\" she said softly.\n\n\"Suppose I make the attempt. What does it mean?\" she said, evidently\ngiving utterance to a thought, a thousand times thought over and learned\nby heart. \"It means that I, hating him, but still recognizing that I\nhave wronged him--and I consider him magnanimous--that I humiliate\nmyself to write to him.... Well, suppose I make the effort; I do it.\nEither I receive a humiliating refusal or consent.... Well, I have\nreceived his consent, say...\" Anna was at that moment at the furthest\nend of the room, and she stopped there, doing something to the curtain\nat the window. \"I receive his consent, but my ... my son? They won't\ngive him up to me. He will grow up despising me, with his father, whom\nI've abandoned. Do you see, I love ... equally, I think, but both more\nthan myself--two creatures, Seryozha and Alexey.\"\n\nShe came out into the middle of the room and stood facing Dolly, with\nher arms pressed tightly across her chest. In her white dressing gown\nher figure seemed more than usually grand and broad. She bent her head,\nand with shining, wet eyes looked from under her brows at Dolly, a thin\nlittle pitiful figure in her patched dressing jacket and nightcap,\nshaking all over with emotion.\n\n\"It is only those two creatures that I love, and one excludes the other.\nI can't have them together, and that's the only thing I want. And since\nI can't have that, I don't care about the rest. I don't care about\nanything, anything. And it will end one way or another, and so I can't,\nI don't like to talk of it. So don't blame me, don't judge me for\nanything. You can't with your pure heart understand all that I'm\nsuffering.\" She went up, sat down beside Dolly, and with a guilty look,\npeeped into her face and took her hand.\n\n\"What are you thinking? What are you thinking about me? Don't despise\nme. I don't deserve contempt. I'm simply unhappy. If anyone is unhappy,\nI am,\" she articulated, and turning away, she burst into tears.\n\nLeft alone, Darya Alexandrovna said her prayers and went to bed. She had\nfelt for Anna with all her heart while she was speaking to her, but now\nshe could not force herself to think of her. The memories of home and of\nher children rose up in her imagination with a peculiar charm quite new\nto her, with a sort of new brilliance. That world of her own seemed to\nher now so sweet and precious that she would not on any account spend an\nextra day outside it, and she made up her mind that she would certainly\ngo back next day.\n\nAnna meantime went back to her boudoir, took a wine glass and dropped\ninto it several drops of a medicine, of which the principal ingredient\nwas morphine. After drinking it off and sitting still a little while,\nshe went into her bedroom in a soothed and more cheerful frame of mind.\n\nWhen she went into the bedroom, Vronsky looked intently at her. He was\nlooking for traces of the conversation which he knew that, staying so\nlong in Dolly's room, she must have had with her. But in her expression\nof restrained excitement, and of a sort of reserve, he could find\nnothing but the beauty that always bewitched him afresh though he was\nused to it, the consciousness of it, and the desire that it should\naffect him. He did not want to ask her what they had been talking of,\nbut he hoped that she would tell him something of her own accord. But\nshe only said:\n\n\"I am so glad you like Dolly. You do, don't you?\"\n\n\"Oh, I've known her a long while, you know. She's very good-hearted, I\nsuppose, _mais excessivement terre-a-terre._ Still, I'm very glad to see\nher.\"\n\nHe took Anna's hand and looked inquiringly into her eyes.\n\nMisinterpreting the look, she smiled to him. Next morning, in spite of\nthe protests of her hosts, Darya Alexandrovna prepared for her homeward\njourney. Levin's coachman, in his by no means new coat and shabby hat,\nwith his ill-matched horses and his coach with the patched mud-guards,\ndrove with gloomy determination into the covered gravel approach.\n\nDarya Alexandrovna disliked taking leave of Princess Varvara and the\ngentlemen of the party. After a day spent together, both she and her\nhosts were distinctly aware that they did not get on together, and that\nit was better for them not to meet. Only Anna was sad. She knew that\nnow, from Dolly's departure, no one again would stir up within her soul\nthe feelings that had been roused by their conversation. It hurt her to\nstir up these feelings, but yet she knew that that was the best part of\nher soul, and that that part of her soul would quickly be smothered in\nthe life she was leading.\n\nAs she drove out into the open country, Darya Alexandrovna had a\ndelightful sense of relief, and she felt tempted to ask the two men how\nthey had liked being at Vronsky's, when suddenly the coachman, Philip,\nexpressed himself unasked:\n\n\"Rolling in wealth they may be, but three pots of oats was all they gave\nus. Everything cleared up till there wasn't a grain left by cockcrow.\nWhat are three pots? A mere mouthful! And oats now down to forty-five\nkopecks. At our place, no fear, all comers may have as much as they can\neat.\"\n\n\"The master's a screw,\" put in the counting house clerk.\n\n\"Well, did you like their horses?\" asked Dolly.\n\n\"The horses!--there's no two opinions about them. And the food was good.\nBut it seemed to me sort of dreary there, Darya Alexandrovna. I don't\nknow what you thought,\" he said, turning his handsome, good-natured face\nto her.\n\n\"I thought so too. Well, shall we get home by evening?\"\n\n\"Eh, we must!\"\n\nOn reaching home and finding everyone entirely satisfactory and\nparticularly charming, Darya Alexandrovna began with great liveliness\ntelling them how she had arrived, how warmly they had received her, of\nthe luxury and good taste in which the Vronskys lived, and of their\nrecreations, and she would not allow a word to be said against them.\n\n\"One has to know Anna and Vronsky--I have got to know him better now--to\nsee how nice they are, and how touching,\" she said, speaking now with\nperfect sincerity, and forgetting the vague feeling of dissatisfaction\nand awkwardness she had experienced there.\n\n\n\nChapter 25\n\n\nVronsky and Anna spent the whole summer and part of the winter in the\ncountry, living in just the same condition, and still taking no steps to\nobtain a divorce. It was an understood thing between them that they\nshould not go away anywhere; but both felt, the longer they lived alone,\nespecially in the autumn, without guests in the house, that they could\nnot stand this existence, and that they would have to alter it.\n\nTheir life was apparently such that nothing better could be desired.\nThey had the fullest abundance of everything; they had a child, and both\nhad occupation. Anna devoted just as much care to her appearance when\nthey had no visitors, and she did a great deal of reading, both of\nnovels and of what serious literature was in fashion. She ordered all\nthe books that were praised in the foreign papers and reviews she\nreceived, and read them with that concentrated attention which is only\ngiven to what is read in seclusion. Moreover, every subject that was of\ninterest to Vronsky, she studied in books and special journals, so that\nhe often went straight to her with questions relating to agriculture or\narchitecture, sometimes even with questions relating to horse-breeding\nor sport. He was amazed at her knowledge, her memory, and at first was\ndisposed to doubt it, to ask for confirmation of her facts; and she\nwould find what he asked for in some book, and show it to him.\n\nThe building of the hospital, too, interested her. She did not merely\nassist, but planned and suggested a great deal herself. But her chief\nthought was still of herself--how far she was dear to Vronsky, how far\nshe could make up to him for all he had given up. Vronsky appreciated\nthis desire not only to please, but to serve him, which had become the\nsole aim of her existence, but at the same time he wearied of the loving\nsnares in which she tried to hold him fast. As time went on, and he saw\nhimself more and more often held fast in these snares, he had an ever\ngrowing desire, not so much to escape from them, as to try whether they\nhindered his freedom. Had it not been for this growing desire to be\nfree, not to have scenes every time he wanted to go to the town to a\nmeeting or a race, Vronsky would have been perfectly satisfied with his\nlife. The role he had taken up, the role of a wealthy landowner, one of\nthat class which ought to be the very heart of the Russian aristocracy,\nwas entirely to his taste; and now, after spending six months in that\ncharacter, he derived even greater satisfaction from it. And his\nmanagement of his estate, which occupied and absorbed him more and more,\nwas most successful. In spite of the immense sums cost him by the\nhospital, by machinery, by cows ordered from Switzerland, and many other\nthings, he was convinced that he was not wasting, but increasing his\nsubstance. In all matters affecting income, the sales of timber, wheat,\nand wool, the letting of lands, Vronsky was hard as a rock, and knew\nwell how to keep up prices. In all operations on a large scale on this\nand his other estates, he kept to the simplest methods involving no\nrisk, and in trifling details he was careful and exacting to an extreme\ndegree. In spite of all the cunning and ingenuity of the German steward,\nwho would try to tempt him into purchases by making his original\nestimate always far larger than really required, and then representing\nto Vronsky that he might get the thing cheaper, and so make a profit,\nVronsky did not give in. He listened to his steward, cross-examined him,\nand only agreed to his suggestions when the implement to be ordered or\nconstructed was the very newest, not yet known in Russia, and likely to\nexcite wonder. Apart from such exceptions, he resolved upon an increased\noutlay only where there was a surplus, and in making such an outlay he\nwent into the minutest details, and insisted on getting the very best\nfor his money; so that by the method on which he managed his affairs, it\nwas clear that he was not wasting, but increasing his substance.\n\nIn October there were the provincial elections in the Kashinsky\nprovince, where were the estates of Vronsky, Sviazhsky, Koznishev,\nOblonsky, and a small part of Levin's land.\n\nThese elections were attracting public attention from several\ncircumstances connected with them, and also from the people taking part\nin them. There had been a great deal of talk about them, and great\npreparations were being made for them. Persons who never attended the\nelections were coming from Moscow, from Petersburg, and from abroad to\nattend these. Vronsky had long before promised Sviazhsky to go to them.\nBefore the elections Sviazhsky, who often visited Vozdvizhenskoe, drove\nover to fetch Vronsky. On the day before there had been almost a quarrel\nbetween Vronsky and Anna over this proposed expedition. It was the very\ndullest autumn weather, which is so dreary in the country, and so,\npreparing himself for a struggle, Vronsky, with a hard and cold\nexpression, informed Anna of his departure as he had never spoken to her\nbefore. But, to his surprise, Anna accepted the information with great\ncomposure, and merely asked when he would be back. He looked intently at\nher, at a loss to explain this composure. She smiled at his look. He\nknew that way she had of withdrawing into herself, and knew that it only\nhappened when she had determined upon something without letting him know\nher plans. He was afraid of this; but he was so anxious to avoid a scene\nthat he kept up appearances, and half sincerely believed in what he\nlonged to believe in--her reasonableness.\n\n\"I hope you won't be dull?\"\n\n\"I hope not,\" said Anna. \"I got a box of books yesterday from Gautier's.\nNo, I shan't be dull.\"\n\n\"She's trying to take that tone, and so much the better,\" he thought,\n\"or else it would be the same thing over and over again.\"\n\nAnd he set off for the elections without appealing to her for a candid\nexplanation. It was the first time since the beginning of their intimacy\nthat he had parted from her without a full explanation. From one point\nof view this troubled him, but on the other side he felt that it was\nbetter so. \"At first there will be, as this time, something undefined\nkept back, and then she will get used to it. In any case I can give up\nanything for her, but not my masculine independence,\" he thought.\n\n\n\nChapter 26\n\n\nIn September Levin moved to Moscow for Kitty's confinement. He had spent\na whole month in Moscow with nothing to do, when Sergey Ivanovitch, who\nhad property in the Kashinsky province, and took great interest in the\nquestion of the approaching elections, made ready to set off to the\nelections. He invited his brother, who had a vote in the Seleznevsky\ndistrict, to come with him. Levin had, moreover, to transact in Kashin\nsome extremely important business relating to the wardship of land and\nto the receiving of certain redemption money for his sister, who was\nabroad.\n\nLevin still hesitated, but Kitty, who saw that he was bored in Moscow,\nand urged him to go, on her own authority ordered him the proper\nnobleman's uniform, costing seven pounds. And that seven pounds paid for\nthe uniform was the chief cause that finally decided Levin to go. He\nwent to Kashin....\n\nLevin had been six days in Kashin, visiting the assembly each day, and\nbusily engaged about his sister's business, which still dragged on. The\ndistrict marshals of nobility were all occupied with the elections, and\nit was impossible to get the simplest thing done that depended upon the\ncourt of wardship. The other matter, the payment of the sums due, was\nmet too by difficulties. After long negotiations over the legal details,\nthe money was at last ready to be paid; but the notary, a most obliging\nperson, could not hand over the order, because it must have the\nsignature of the president, and the president, though he had not given\nover his duties to a deputy, was at the elections. All these worrying\nnegotiations, this endless going from place to place, and talking with\npleasant and excellent people, who quite saw the unpleasantness of the\npetitioner's position, but were powerless to assist him--all these\nefforts that yielded no result, led to a feeling of misery in Levin akin\nto the mortifying helplessness one experiences in dreams when one tries\nto use physical force. He felt this frequently as he talked to his most\ngood-natured solicitor. This solicitor did, it seemed, everything\npossible, and strained every nerve to get him out of his difficulties.\n\"I tell you what you might try,\" he said more than once; \"go to\nso-and-so and so-and-so,\" and the solicitor drew up a regular plan for\ngetting round the fatal point that hindered everything. But he would add\nimmediately, \"It'll mean some delay, anyway, but you might try it.\" And\nLevin did try, and did go. Everyone was kind and civil, but the point\nevaded seemed to crop up again in the end, and again to bar the way.\nWhat was particularly trying, was that Levin could not make out with\nwhom he was struggling, to whose interest it was that his business\nshould not be done. That no one seemed to know; the solicitor certainly\ndid not know. If Levin could have understood why, just as he saw why one\ncan only approach the booking office of a railway station in single\nfile, it would not have been so vexatious and tiresome to him. But with\nthe hindrances that confronted him in his business, no one could explain\nwhy they existed.\n\nBut Levin had changed a good deal since his marriage; he was patient,\nand if he could not see why it was all arranged like this, he told\nhimself that he could not judge without knowing all about it, and that\nmost likely it must be so, and he tried not to fret.\n\nIn attending the elections, too, and taking part in them, he tried now\nnot to judge, not to fall foul of them, but to comprehend as fully as he\ncould the question which was so earnestly and ardently absorbing honest\nand excellent men whom he respected. Since his marriage there had been\nrevealed to Levin so many new and serious aspects of life that had\npreviously, through his frivolous attitude to them, seemed of no\nimportance, that in the question of the elections too he assumed and\ntried to find some serious significance.\n\nSergey Ivanovitch explained to him the meaning and object of the\nproposed revolution at the elections. The marshal of the province in\nwhose hands the law had placed the control of so many important public\nfunctions--the guardianship of wards (the very department which was\ngiving Levin so much trouble just now), the disposal of large sums\nsubscribed by the nobility of the province, the high schools, female,\nmale, and military, and popular instruction on the new model, and\nfinally, the district council--the marshal of the province, Snetkov, was\na nobleman of the old school,--dissipating an immense fortune, a\ngood-hearted man, honest after his own fashion, but utterly without any\ncomprehension of the needs of modern days. He always took, in every\nquestion, the side of the nobility; he was positively antagonistic to\nthe spread of popular education, and he succeeded in giving a purely\nparty character to the district council which ought by rights to be of\nsuch an immense importance. What was needed was to put in his place a\nfresh, capable, perfectly modern man, of contemporary ideas, and to\nframe their policy so as from the rights conferred upon the nobles, not\nas the nobility, but as an element of the district council, to extract\nall the powers of self-government that could possibly be derived from\nthem. In the wealthy Kashinsky province, which always took the lead of\nother provinces in everything, there was now such a preponderance of\nforces that this policy, once carried through properly there, might\nserve as a model for other provinces for all Russia. And hence the whole\nquestion was of the greatest importance. It was proposed to elect as\nmarshal in place of Snetkov either Sviazhsky, or, better still,\nNevyedovsky, a former university professor, a man of remarkable\nintelligence and a great friend of Sergey Ivanovitch.\n\nThe meeting was opened by the governor, who made a speech to the nobles,\nurging them to elect the public functionaries, not from regard for\npersons, but for the service and welfare of their fatherland, and hoping\nthat the honorable nobility of the Kashinsky province would, as at all\nformer elections, hold their duty as sacred, and vindicate the exalted\nconfidence of the monarch.\n\nWhen he had finished with his speech, the governor walked out of the\nhall, and the noblemen noisily and eagerly--some even\nenthusiastically--followed him and thronged round him while he put on\nhis fur coat and conversed amicably with the marshal of the province.\nLevin, anxious to see into everything and not to miss anything, stood\nthere too in the crowd, and heard the governor say: \"Please tell Marya\nIvanovna my wife is very sorry she couldn't come to the Home.\" And\nthereupon the nobles in high good-humor sorted out their fur coats and\nall drove off to the cathedral.\n\nIn the cathedral Levin, lifting his hand like the rest and repeating the\nwords of the archdeacon, swore with most terrible oaths to do all the\ngovernor had hoped they would do. Church services always affected Levin,\nand as he uttered the words \"I kiss the cross,\" and glanced round at the\ncrowd of young and old men repeating the same, he felt touched.\n\nOn the second and third days there was business relating to the finances\nof the nobility and the female high school, of no importance whatever,\nas Sergey Ivanovitch explained, and Levin, busy seeing after his own\naffairs, did not attend the meetings. On the fourth day the auditing of\nthe marshal's accounts took place at the high table of the marshal of\nthe province. And then there occurred the first skirmish between the new\nparty and the old. The committee who had been deputed to verify the\naccounts reported to the meeting that all was in order. The marshal of\nthe province got up, thanked the nobility for their confidence, and shed\ntears. The nobles gave him a loud welcome, and shook hands with him. But\nat that instant a nobleman of Sergey Ivanovitch's party said that he had\nheard that the committee had not verified the accounts, considering such\na verification an insult to the marshal of the province. One of the\nmembers of the committee incautiously admitted this. Then a small\ngentleman, very young-looking but very malignant, began to say that it\nwould probably be agreeable to the marshal of the province to give an\naccount of his expenditures of the public moneys, and that the misplaced\ndelicacy of the members of the committee was depriving him of this moral\nsatisfaction. Then the members of the committee tried to withdraw their\nadmission, and Sergey Ivanovitch began to prove that they must logically\nadmit either that they had verified the accounts or that they had not,\nand he developed this dilemma in detail. Sergey Ivanovitch was answered\nby the spokesman of the opposite party. Then Sviazhsky spoke, and then\nthe malignant gentleman again. The discussion lasted a long time and\nended in nothing. Levin was surprised that they should dispute upon this\nsubject so long, especially as, when he asked Sergey Ivanovitch whether\nhe supposed that money had been misappropriated, Sergey Ivanovitch\nanswered:\n\n\"Oh, no! He's an honest man. But those old-fashioned methods of paternal\nfamily arrangements in the management of provincial affairs must be\nbroken down.\"\n\nOn the fifth day came the elections of the district marshals. It was\nrather a stormy day in several districts. In the Seleznevsky district\nSviazhsky was elected unanimously without a ballot, and he gave a dinner\nthat evening.\n\n\n\nChapter 27\n\n\nThe sixth day was fixed for the election of the marshal of the province.\n\nThe rooms, large and small, were full of noblemen in all sorts of\nuniforms. Many had come only for that day. Men who had not seen each\nother for years, some from the Crimea, some from Petersburg, some from\nabroad, met in the rooms of the Hall of Nobility. There was much\ndiscussion around the governor's table under the portrait of the Tsar.\n\nThe nobles, both in the larger and the smaller rooms, grouped themselves\nin camps, and from their hostile and suspicious glances, from the\nsilence that fell upon them when outsiders approached a group, and from\nthe way that some, whispering together, retreated to the farther\ncorridor, it was evident that each side had secrets from the other. In\nappearance the noblemen were sharply divided into two classes: the old\nand the new. The old were for the most part either in old uniforms of\nthe nobility, buttoned up closely, with spurs and hats, or in their own\nspecial naval, cavalry, infantry, or official uniforms. The uniforms of\nthe older men were embroidered in the old-fashioned way with epaulets on\ntheir shoulders; they were unmistakably tight and short in the waist, as\nthough their wearers had grown out of them. The younger men wore the\nuniform of the nobility with long waists and broad shoulders, unbuttoned\nover white waistcoats, or uniforms with black collars and with the\nembroidered badges of justices of the peace. To the younger men belonged\nthe court uniforms that here and there brightened up the crowd.\n\nBut the division into young and old did not correspond with the division\nof parties. Some of the young men, as Levin observed, belonged to the\nold party; and some of the very oldest noblemen, on the contrary, were\nwhispering with Sviazhsky, and were evidently ardent partisans of the\nnew party.\n\nLevin stood in the smaller room, where they were smoking and taking\nlight refreshments, close to his own friends, and listening to what they\nwere saying, he conscientiously exerted all his intelligence trying to\nunderstand what was said. Sergey Ivanovitch was the center round which\nthe others grouped themselves. He was listening at that moment to\nSviazhsky and Hliustov, the marshal of another district, who belonged to\ntheir party. Hliustov would not agree to go with his district to ask\nSnetkov to stand, while Sviazhsky was persuading him to do so, and\nSergey Ivanovitch was approving of the plan. Levin could not make out\nwhy the opposition was to ask the marshal to stand whom they wanted to\nsupersede.\n\nStepan Arkadyevitch, who had just been drinking and taking some lunch,\ncame up to them in his uniform of a gentleman of the bedchamber, wiping\nhis lips with a perfumed handkerchief of bordered batiste.\n\n\"We are placing our forces,\" he said, pulling out his whiskers, \"Sergey\nIvanovitch!\"\n\nAnd listening to the conversation, he supported Sviazhsky's contention.\n\n\"One district's enough, and Sviazhsky's obviously of the opposition,\" he\nsaid, words evidently intelligible to all except Levin.\n\n\"Why, Kostya, you here too! I suppose you're converted, eh?\" he added,\nturning to Levin and drawing his arm through his. Levin would have been\nglad indeed to be converted, but could not make out what the point was,\nand retreating a few steps from the speakers, he explained to Stepan\nArkadyevitch his inability to understand why the marshal of the province\nshould be asked to stand.\n\n_\"O sancta simplicitas!\"_ said Stepan Arkadyevitch, and briefly and\nclearly he explained it to Levin. If, as at previous elections, all the\ndistricts asked the marshal of the province to stand, then he would be\nelected without a ballot. That must not be. Now eight districts had\nagreed to call upon him: if two refused to do so, Snetkov might decline\nto stand at all; and then the old party might choose another of their\nparty, which would throw them completely out in their reckoning. But if\nonly one district, Sviazhsky's, did not call upon him to stand, Snetkov\nwould let himself be balloted for. They were even, some of them, going\nto vote for him, and purposely to let him get a good many votes, so that\nthe enemy might be thrown off the scent, and when a candidate of the\nother side was put up, they too might give him some votes. Levin\nunderstood to some extent, but not fully, and would have put a few more\nquestions, when suddenly everyone began talking and making a noise and\nthey moved towards the big room.\n\n\"What is it? eh? whom?\" \"No guarantee? whose? what?\" \"They won't pass\nhim?\" \"No guarantee?\" \"They won't let Flerov in?\" \"Eh, because of the\ncharge against him?\" \"Why, at this rate, they won't admit anyone. It's a\nswindle!\" \"The law!\" Levin heard exclamations on all sides, and he moved\ninto the big room together with the others, all hurrying somewhere and\nafraid of missing something. Squeezed by the crowding noblemen, he drew\nnear the high table where the marshal of the province, Sviazhsky, and\nthe other leaders were hotly disputing about something.\n\n\n\nChapter 28\n\n\nLevin was standing rather far off. A nobleman breathing heavily and\nhoarsely at his side, and another whose thick boots were creaking,\nprevented him from hearing distinctly. He could only hear the soft voice\nof the marshal faintly, then the shrill voice of the malignant\ngentleman, and then the voice of Sviazhsky. They were disputing, as far\nas he could make out, as to the interpretation to be put on the act and\nthe exact meaning of the words: \"liable to be called up for trial.\"\n\nThe crowd parted to make way for Sergey Ivanovitch approaching the\ntable. Sergey Ivanovitch, waiting till the malignant gentleman had\nfinished speaking, said that he thought the best solution would be to\nrefer to the act itself, and asked the secretary to find the act. The\nact said that in case of difference of opinion, there must be a ballot.\n\nSergey Ivanovitch read the act and began to explain its meaning, but at\nthat point a tall, stout, round-shouldered landowner, with dyed\nwhiskers, in a tight uniform that cut the back of his neck, interrupted\nhim. He went up to the table, and striking it with his finger ring, he\nshouted loudly: \"A ballot! Put it to the vote! No need for more\ntalking!\" Then several voices began to talk all at once, and the tall\nnobleman with the ring, getting more and more exasperated, shouted more\nand more loudly. But it was impossible to make out what he said.\n\nHe was shouting for the very course Sergey Ivanovitch had proposed; but\nit was evident that he hated him and all his party, and this feeling of\nhatred spread through the whole party and roused in opposition to it the\nsame vindictiveness, though in a more seemly form, on the other side.\nShouts were raised, and for a moment all was confusion, so that the\nmarshal of the province had to call for order.\n\n\"A ballot! A ballot! Every nobleman sees it! We shed our blood for our\ncountry!... The confidence of the monarch.... No checking the accounts\nof the marshal; he's not a cashier.... But that's not the point....\nVotes, please! Beastly!...\" shouted furious and violent voices on all\nsides. Looks and faces were even more violent and furious than their\nwords. They expressed the most implacable hatred. Levin did not in the\nleast understand what was the matter, and he marveled at the passion\nwith which it was disputed whether or not the decision about Flerov\nshould be put to the vote. He forgot, as Sergey Ivanovitch explained to\nhim afterwards, this syllogism: that it was necessary for the public\ngood to get rid of the marshal of the province; that to get rid of the\nmarshal it was necessary to have a majority of votes; that to get a\nmajority of votes it was necessary to secure Flerov's right to vote;\nthat to secure the recognition of Flerov's right to vote they must\ndecide on the interpretation to be put on the act.\n\n\"And one vote may decide the whole question, and one must be serious and\nconsecutive, if one wants to be of use in public life,\" concluded Sergey\nIvanovitch. But Levin forgot all that, and it was painful to him to see\nall these excellent persons, for whom he had a respect, in such an\nunpleasant and vicious state of excitement. To escape from this painful\nfeeling he went away into the other room where there was nobody except\nthe waiters at the refreshment bar. Seeing the waiters busy over washing\nup the crockery and setting in order their plates and wine glasses,\nseeing their calm and cheerful faces, Levin felt an unexpected sense of\nrelief as though he had come out of a stuffy room into the fresh air. He\nbegan walking up and down, looking with pleasure at the waiters. He\nparticularly liked the way one gray-whiskered waiter, who showed his\nscorn for the other younger ones and was jeered at by them, was teaching\nthem how to fold up napkins properly. Levin was just about to enter into\nconversation with the old waiter, when the secretary of the court of\nwardship, a little old man whose specialty it was to know all the\nnoblemen of the province by name and patronymic, drew him away.\n\n\"Please come, Konstantin Dmitrievitch,\" he said, \"your brother's looking\nfor you. They are voting on the legal point.\"\n\nLevin walked into the room, received a white ball, and followed his\nbrother, Sergey Ivanovitch, to the table where Sviazhsky was standing\nwith a significant and ironical face, holding his beard in his fist and\nsniffing at it. Sergey Ivanovitch put his hand into the box, put the\nball somewhere, and making room for Levin, stopped. Levin advanced, but\nutterly forgetting what he was to do, and much embarrassed, he turned to\nSergey Ivanovitch with the question, \"Where am I to put it?\" He asked\nthis softly, at a moment when there was talking going on near, so that\nhe had hoped his question would not be overheard. But the persons\nspeaking paused, and his improper question was overheard. Sergey\nIvanovitch frowned.\n\n\"That is a matter for each man's own decision,\" he said severely.\n\nSeveral people smiled. Levin crimsoned, hurriedly thrust his hand under\nthe cloth, and put the ball to the right as it was in his right hand.\nHaving put it in, he recollected that he ought to have thrust his left\nhand too, and so he thrust it in though too late, and, still more\novercome with confusion, he beat a hasty retreat into the background.\n\n\"A hundred and twenty-six for admission! Ninety-eight against!\" sang out\nthe voice of the secretary, who could not pronounce the letter _r_. Then\nthere was a laugh; a button and two nuts were found in the box. The\nnobleman was allowed the right to vote, and the new party had conquered.\n\nBut the old party did not consider themselves conquered. Levin heard\nthat they were asking Snetkov to stand, and he saw that a crowd of\nnoblemen was surrounding the marshal, who was saying something. Levin\nwent nearer. In reply Snetkov spoke of the trust the noblemen of the\nprovince had placed in him, the affection they had shown him, which he\ndid not deserve, as his only merit had been his attachment to the\nnobility, to whom he had devoted twelve years of service. Several times\nhe repeated the words: \"I have served to the best of my powers with\ntruth and good faith, I value your goodness and thank you,\" and suddenly\nhe stopped short from the tears that choked him, and went out of the\nroom. Whether these tears came from a sense of the injustice being done\nhim, from his love for the nobility, or from the strain of the position\nhe was placed in, feeling himself surrounded by enemies, his emotion\ninfected the assembly, the majority were touched, and Levin felt a\ntenderness for Snetkov.\n\nIn the doorway the marshal of the province jostled against Levin.\n\n\"Beg pardon, excuse me, please,\" he said as to a stranger, but\nrecognizing Levin, he smiled timidly. It seemed to Levin that he would\nhave liked to say something, but could not speak for emotion. His face\nand his whole figure in his uniform with the crosses, and white trousers\nstriped with braid, as he moved hurriedly along, reminded Levin of some\nhunted beast who sees that he is in evil case. This expression in the\nmarshal's face was particularly touching to Levin, because, only the day\nbefore, he had been at his house about his trustee business and had seen\nhim in all his grandeur, a kind-hearted, fatherly man. The big house\nwith the old family furniture; the rather dirty, far from stylish, but\nrespectful footmen, unmistakably old house serfs who had stuck to their\nmaster; the stout, good-natured wife in a cap with lace and a Turkish\nshawl, petting her pretty grandchild, her daughter's daughter; the young\nson, a sixth form high school boy, coming home from school, and greeting\nhis father, kissing his big hand; the genuine, cordial words and\ngestures of the old man--all this had the day before roused an\ninstinctive feeling of respect and sympathy in Levin. This old man was a\ntouching and pathetic figure to Levin now, and he longed to say\nsomething pleasant to him.\n\n\"So you're sure to be our marshal again,\" he said.\n\n\"It's not likely,\" said the marshal, looking round with a scared\nexpression. \"I'm worn out, I'm old. If there are men younger and more\ndeserving than I, let them serve.\"\n\nAnd the marshal disappeared through a side door.\n\nThe most solemn moment was at hand. They were to proceed immediately to\nthe election. The leaders of both parties were reckoning white and black\non their fingers.\n\nThe discussion upon Flerov had given the new party not only Flerov's\nvote, but had also gained time for them, so that they could send to\nfetch three noblemen who had been rendered unable to take part in the\nelections by the wiles of the other party. Two noble gentlemen, who had\na weakness for strong drink, had been made drunk by the partisans of\nSnetkov, and a third had been robbed of his uniform.\n\nOn learning this, the new party had made haste, during the dispute about\nFlerov, to send some of their men in a sledge to clothe the stripped\ngentleman, and to bring along one of the intoxicated to the meeting.\n\n\"I've brought one, drenched him with water,\" said the landowner, who had\ngone on this errand, to Sviazhsky. \"He's all right? he'll do.\"\n\n\"Not too drunk, he won't fall down?\" said Sviazhsky, shaking his head.\n\n\"No, he's first-rate. If only they don't give him any more here.... I've\ntold the waiter not to give him anything on any account.\"\n\n\n\nChapter 29\n\n\nThe narrow room, in which they were smoking and taking refreshments, was\nfull of noblemen. The excitement grew more intense, and every face\nbetrayed some uneasiness. The excitement was specially keen for the\nleaders of each party, who knew every detail, and had reckoned up every\nvote. They were the generals organizing the approaching battle. The\nrest, like the rank and file before an engagement, though they were\ngetting ready for the fight, sought for other distractions in the\ninterval. Some were lunching, standing at the bar, or sitting at the\ntable; others were walking up and down the long room, smoking\ncigarettes, and talking with friends whom they had not seen for a long\nwhile.\n\nLevin did not care to eat, and he was not smoking; he did not want to\njoin his own friends, that is Sergey Ivanovitch, Stepan Arkadyevitch,\nSviazhsky and the rest, because Vronsky in his equerry's uniform was\nstanding with them in eager conversation. Levin had seen him already at\nthe meeting on the previous day, and he had studiously avoided him, not\ncaring to greet him. He went to the window and sat down, scanning the\ngroups, and listening to what was being said around him. He felt\ndepressed, especially because everyone else was, as he saw, eager,\nanxious, and interested, and he alone, with an old, toothless little man\nwith mumbling lips wearing a naval uniform, sitting beside him, had no\ninterest in it and nothing to do.\n\n\"He's such a blackguard! I have told him so, but it makes no difference.\nOnly think of it! He couldn't collect it in three years!\" he heard\nvigorously uttered by a round-shouldered, short, country gentleman, who\nhad pomaded hair hanging on his embroidered collar, and new boots\nobviously put on for the occasion, with heels that tapped energetically\nas he spoke. Casting a displeased glance at Levin, this gentleman\nsharply turned his back.\n\n\"Yes, it's a dirty business, there's no denying,\" a small gentleman\nassented in a high voice.\n\nNext, a whole crowd of country gentlemen, surrounding a stout general,\nhurriedly came near Levin. These persons were unmistakably seeking a\nplace where they could talk without being overheard.\n\n\"How dare he say I had his breeches stolen! Pawned them for drink, I\nexpect. Damn the fellow, prince indeed! He'd better not say it, the\nbeast!\"\n\n\"But excuse me! They take their stand on the act,\" was being said in\nanother group; \"the wife must be registered as noble.\"\n\n\"Oh, damn your acts! I speak from my heart. We're all gentlemen, aren't\nwe? Above suspicion.\"\n\n\"Shall we go on, your excellency, _fine champagne?_\"\n\nAnother group was following a nobleman, who was shouting something in a\nloud voice; it was one of the three intoxicated gentlemen.\n\n\"I always advised Marya Semyonovna to let for a fair rent, for she can\nnever save a profit,\" he heard a pleasant voice say. The speaker was a\ncountry gentleman with gray whiskers, wearing the regimental uniform of\nan old general staff-officer. It was the very landowner Levin had met at\nSviazhsky's. He knew him at once. The landowner too stared at Levin, and\nthey exchanged greetings.\n\n\"Very glad to see you! To be sure! I remember you very well. Last year\nat our district marshal, Nikolay Ivanovitch's.\"\n\n\"Well, and how is your land doing?\" asked Levin.\n\n\"Oh, still just the same, always at a loss,\" the landowner answered with\na resigned smile, but with an expression of serenity and conviction that\nso it must be. \"And how do you come to be in our province?\" he asked.\n\"Come to take part in our _coup d'etat?_\" he said, confidently\npronouncing the French words with a bad accent. \"All Russia's\nhere--gentlemen of the bedchamber, and everything short of the\nministry.\" He pointed to the imposing figure of Stepan Arkadyevitch in\nwhite trousers and his court uniform, walking by with a general.\n\n\"I ought to own that I don't very well understand the drift of the\nprovincial elections,\" said Levin.\n\nThe landowner looked at him.\n\n\"Why, what is there to understand? There's no meaning in it at all. It's\na decaying institution that goes on running only by the force of\ninertia. Just look, the very uniforms tell you that it's an assembly of\njustices of the peace, permanent members of the court, and so on, but\nnot of noblemen.\"\n\n\"Then why do you come?\" asked Levin.\n\n\"From habit, nothing else. Then, too, one must keep up connections. It's\na moral obligation of a sort. And then, to tell the truth, there's one's\nown interests. My son-in-law wants to stand as a permanent member;\nthey're not rich people, and he must be brought forward. These\ngentlemen, now, what do they come for?\" he said, pointing to the\nmalignant gentleman, who was talking at the high table.\n\n\"That's the new generation of nobility.\"\n\n\"New it may be, but nobility it isn't. They're proprietors of a sort,\nbut we're the landowners. As noblemen, they're cutting their own\nthroats.\"\n\n\"But you say it's an institution that's served its time.\"\n\n\"That it may be, but still it ought to be treated a little more\nrespectfully. Snetkov, now.... We may be of use, or we may not, but\nwe're the growth of a thousand years. If we're laying out a garden,\nplanning one before the house, you know, and there you've a tree that's\nstood for centuries in the very spot.... Old and gnarled it may be, and\nyet you don't cut down the old fellow to make room for the flowerbeds,\nbut lay out your beds so as to take advantage of the tree. You won't\ngrow him again in a year,\" he said cautiously, and he immediately\nchanged the conversation. \"Well, and how is your land doing?\"\n\n\"Oh, not very well. I make five per cent.\"\n\n\"Yes, but you don't reckon your own work. Aren't you worth something\ntoo? I'll tell you my own case. Before I took to seeing after the land,\nI had a salary of three hundred pounds from the service. Now I do more\nwork than I did in the service, and like you I get five per cent. on the\nland, and thank God for that. But one's work is thrown in for nothing.\"\n\n\"Then why do you do it, if it's a clear loss?\"\n\n\"Oh, well, one does it! What would you have? It's habit, and one knows\nit's how it should be. And what's more,\" the landowner went on, leaning\nhis elbows on the window and chatting on, \"my son, I must tell you, has\nno taste for it. There's no doubt he'll be a scientific man. So there'll\nbe no one to keep it up. And yet one does it. Here this year I've\nplanted an orchard.\"\n\n\"Yes, yes,\" said Levin, \"that's perfectly true. I always feel there's no\nreal balance of gain in my work on the land, and yet one does it....\nIt's a sort of duty one feels to the land.\"\n\n\"But I tell you what,\" the landowner pursued; \"a neighbor of mine, a\nmerchant, was at my place. We walked about the fields and the garden.\n'No,' said he, 'Stepan Vassilievitch, everything's well looked after,\nbut your garden's neglected.' But, as a fact, it's well kept up. 'To my\nthinking, I'd cut down that lime-tree. Here you've thousands of limes,\nand each would make two good bundles of bark. And nowadays that bark's\nworth something. I'd cut down the lot.'\"\n\n\"And with what he made he'd increase his stock, or buy some land for a\ntrifle, and let it out in lots to the peasants,\" Levin added, smiling.\nHe had evidently more than once come across those commercial\ncalculations. \"And he'd make his fortune. But you and I must thank God\nif we keep what we've got and leave it to our children.\"\n\n\"You're married, I've heard?\" said the landowner.\n\n\"Yes,\" Levin answered, with proud satisfaction. \"Yes, it's rather\nstrange,\" he went on. \"So we live without making anything, as though we\nwere ancient vestals set to keep in a fire.\"\n\nThe landowner chuckled under his white mustaches.\n\n\"There are some among us, too, like our friend Nikolay Ivanovitch, or\nCount Vronsky, that's settled here lately, who try to carry on their\nhusbandry as though it were a factory; but so far it leads to nothing\nbut making away with capital on it.\"\n\n\"But why is it we don't do like the merchants? Why don't we cut down our\nparks for timber?\" said Levin, returning to a thought that had struck\nhim.\n\n\"Why, as you said, to keep the fire in. Besides that's not work for a\nnobleman. And our work as noblemen isn't done here at the elections, but\nyonder, each in our corner. There's a class instinct, too, of what one\nought and oughtn't to do. There's the peasants, too, I wonder at them\nsometimes; any good peasant tries to take all the land he can. However\nbad the land is, he'll work it. Without a return too. At a simple loss.\"\n\n\"Just as we do,\" said Levin. \"Very, very glad to have met you,\" he\nadded, seeing Sviazhsky approaching him.\n\n\"And here we've met for the first time since we met at your place,\" said\nthe landowner to Sviazhsky, \"and we've had a good talk too.\"\n\n\"Well, have you been attacking the new order of things?\" said Sviazhsky\nwith a smile.\n\n\"That we're bound to do.\"\n\n\"You've relieved your feelings?\"\n\n\n\nChapter 30\n\n\nSviazhsky took Levin's arm, and went with him to his own friends. This\ntime there was no avoiding Vronsky. He was standing with Stepan\nArkadyevitch and Sergey Ivanovitch, and looking straight at Levin as he\ndrew near.\n\n\"Delighted! I believe I've had the pleasure of meeting you ... at\nPrincess Shtcherbatskaya's,\" he said, giving Levin his hand.\n\n\"Yes, I quite remember our meeting,\" said Levin, and blushing crimson,\nhe turned away immediately, and began talking to his brother.\n\nWith a slight smile Vronsky went on talking to Sviazhsky, obviously\nwithout the slightest inclination to enter into conversation with Levin.\nBut Levin, as he talked to his brother, was continually looking round at\nVronsky, trying to think of something to say to him to gloss over his\nrudeness.\n\n\"What are we waiting for now?\" asked Levin, looking at Sviazhsky and\nVronsky.\n\n\"For Snetkov. He has to refuse or to consent to stand,\" answered\nSviazhsky.\n\n\"Well, and what has he done, consented or not?\"\n\n\"That's the point, that he's done neither,\" said Vronsky.\n\n\"And if he refuses, who will stand then?\" asked Levin, looking at\nVronsky.\n\n\"Whoever chooses to,\" said Sviazhsky.\n\n\"Shall you?\" asked Levin.\n\n\"Certainly not I,\" said Sviazhsky, looking confused, and turning an\nalarmed glance at the malignant gentleman, who was standing beside\nSergey Ivanovitch.\n\n\"Who then? Nevyedovsky?\" said Levin, feeling he was putting his foot\ninto it.\n\nBut this was worse still. Nevyedovsky and Sviazhsky were the two\ncandidates.\n\n\"I certainly shall not, under any circumstances,\" answered the malignant\ngentleman.\n\nThis was Nevyedovsky himself. Sviazhsky introduced him to Levin.\n\n\"Well, you find it exciting too?\" said Stepan Arkadyevitch, winking at\nVronsky. \"It's something like a race. One might bet on it.\"\n\n\"Yes, it is keenly exciting,\" said Vronsky. \"And once taking the thing\nup, one's eager to see it through. It's a fight!\" he said, scowling and\nsetting his powerful jaws.\n\n\"What a capable fellow Sviazhsky is! Sees it all so clearly.\"\n\n\"Oh, yes!\" Vronsky assented indifferently.\n\nA silence followed, during which Vronsky--since he had to look at\nsomething--looked at Levin, at his feet, at his uniform, then at his\nface, and noticing his gloomy eyes fixed upon him, he said, in order to\nsay something:\n\n\"How is it that you, living constantly in the country, are not a justice\nof the peace? You are not in the uniform of one.\"\n\n\"It's because I consider that the justice of the peace is a silly\ninstitution,\" Levin answered gloomily. He had been all the time looking\nfor an opportunity to enter into conversation with Vronsky, so as to\nsmooth over his rudeness at their first meeting.\n\n\"I don't think so, quite the contrary,\" Vronsky said, with quiet\nsurprise.\n\n\"It's a plaything,\" Levin cut him short. \"We don't want justices of the\npeace. I've never had a single thing to do with them during eight years.\nAnd what I have had was decided wrongly by them. The justice of the\npeace is over thirty miles from me. For some matter of two roubles I\nshould have to send a lawyer, who costs me fifteen.\"\n\nAnd he related how a peasant had stolen some flour from the miller, and\nwhen the miller told him of it, had lodged a complaint for slander. All\nthis was utterly uncalled for and stupid, and Levin felt it himself as\nhe said it.\n\n\"Oh, this is such an original fellow!\" said Stepan Arkadyevitch with his\nmost soothing, almond-oil smile. \"But come along; I think they're\nvoting....\"\n\nAnd they separated.\n\n\"I can't understand,\" said Sergey Ivanovitch, who had observed his\nbrother's clumsiness, \"I can't understand how anyone can be so\nabsolutely devoid of political tact. That's where we Russians are so\ndeficient. The marshal of the province is our opponent, and with him\nyou're _ami cochon_, and you beg him to stand. Count Vronsky, now ...\nI'm not making a friend of him; he's asked me to dinner, and I'm not\ngoing; but he's one of our side--why make an enemy of him? Then you ask\nNevyedovsky if he's going to stand. That's not a thing to do.\"\n\n\"Oh, I don't understand it at all! And it's all such nonsense,\" Levin\nanswered gloomily.\n\n\"You say it's all such nonsense, but as soon as you have anything to do\nwith it, you make a muddle.\"\n\nLevin did not answer, and they walked together into the big room.\n\nThe marshal of the province, though he was vaguely conscious in the air\nof some trap being prepared for him, and though he had not been called\nupon by all to stand, had still made up his mind to stand. All was\nsilence in the room. The secretary announced in a loud voice that the\ncaptain of the guards, Mihail Stepanovitch Snetkov, would now be\nballoted for as marshal of the province.\n\nThe district marshals walked carrying plates, on which were balls, from\ntheir tables to the high table, and the election began.\n\n\"Put it in the right side,\" whispered Stepan Arkadyevitch, as with his\nbrother Levin followed the marshal of his district to the table. But\nLevin had forgotten by now the calculations that had been explained to\nhim, and was afraid Stepan Arkadyevitch might be mistaken in saying \"the\nright side.\" Surely Snetkov was the enemy. As he went up, he held the\nball in his right hand, but thinking he was wrong, just at the box he\nchanged to the left hand, and undoubtedly put the ball to the left. An\nadept in the business, standing at the box and seeing by the mere action\nof the elbow where each put his ball, scowled with annoyance. It was no\ngood for him to use his insight.\n\nEverything was still, and the counting of the balls was heard. Then a\nsingle voice rose and proclaimed the numbers for and against. The\nmarshal had been voted for by a considerable majority. All was noise and\neager movement towards the doors. Snetkov came in, and the nobles\nthronged round him, congratulating him.\n\n\"Well, now is it over?\" Levin asked Sergey Ivanovitch.\n\n\"It's only just beginning,\" Sviazhsky said, replying for Sergey\nIvanovitch with a smile. \"Some other candidate may receive more votes\nthan the marshal.\"\n\nLevin had quite forgotten about that. Now he could only remember that\nthere was some sort of trickery in it, but he was too bored to think\nwhat it was exactly. He felt depressed, and longed to get out of the\ncrowd.\n\nAs no one was paying any attention to him, and no one apparently needed\nhim, he quietly slipped away into the little room where the refreshments\nwere, and again had a great sense of comfort when he saw the waiters.\nThe little old waiter pressed him to have something, and Levin agreed.\nAfter eating a cutlet with beans and talking to the waiters of their\nformer masters, Levin, not wishing to go back to the hall, where it was\nall so distasteful to him, proceeded to walk through the galleries. The\ngalleries were full of fashionably dressed ladies, leaning over the\nbalustrade and trying not to lose a single word of what was being said\nbelow. With the ladies were sitting and standing smart lawyers, high\nschool teachers in spectacles, and officers. Everywhere they were\ntalking of the election, and of how worried the marshal was, and how\nsplendid the discussions had been. In one group Levin heard his\nbrother's praises. One lady was telling a lawyer:\n\n\"How glad I am I heard Koznishev! It's worth losing one's dinner. He's\nexquisite! So clear and distinct all of it! There's not one of you in\nthe law courts that speaks like that. The only one is Meidel, and he's\nnot so eloquent by a long way.\"\n\nFinding a free place, Levin leaned over the balustrade and began looking\nand listening.\n\nAll the noblemen were sitting railed off behind barriers according to\ntheir districts. In the middle of the room stood a man in a uniform, who\nshouted in a loud, high voice:\n\n\"As a candidate for the marshalship of the nobility of the province we\ncall upon staff-captain Yevgeney Ivanovitch Apuhtin!\" A dead silence\nfollowed, and then a weak old voice was heard: \"Declined!\"\n\n\"We call upon the privy councilor Pyotr Petrovitch Bol,\" the voice began\nagain.\n\n\"Declined!\" a high boyish voice replied.\n\nAgain it began, and again \"Declined.\" And so it went on for about an\nhour. Levin, with his elbows on the balustrade, looked and listened. At\nfirst he wondered and wanted to know what it meant; then feeling sure\nthat he could not make it out he began to be bored. Then recalling all\nthe excitement and vindictiveness he had seen on all the faces, he felt\nsad; he made up his mind to go, and went downstairs. As he passed\nthrough the entry to the galleries he met a dejected high school boy\nwalking up and down with tired-looking eyes. On the stairs he met a\ncouple--a lady running quickly on her high heels and the jaunty deputy\nprosecutor.\n\n\"I told you you weren't late,\" the deputy prosecutor was saying at the\nmoment when Levin moved aside to let the lady pass.\n\nLevin was on the stairs to the way out, and was just feeling in his\nwaistcoat pocket for the number of his overcoat, when the secretary\novertook him.\n\n\"This way, please, Konstantin Dmitrievitch; they are voting.\"\n\nThe candidate who was being voted on was Nevyedovsky, who had so stoutly\ndenied all idea of standing. Levin went up to the door of the room; it\nwas locked. The secretary knocked, the door opened, and Levin was met by\ntwo red-faced gentlemen, who darted out.\n\n\"I can't stand any more of it,\" said one red-faced gentleman.\n\nAfter them the face of the marshal of the province was poked out. His\nface was dreadful-looking from exhaustion and dismay.\n\n\"I told you not to let any one out!\" he cried to the doorkeeper.\n\n\"I let someone in, your excellency!\"\n\n\"Mercy on us!\" and with a heavy sigh the marshal of the province walked\nwith downcast head to the high table in the middle of the room, his legs\nstaggering in his white trousers.\n\nNevyedovsky had scored a higher majority, as they had planned, and he\nwas the new marshal of the province. Many people were amused, many were\npleased and happy, many were in ecstasies, many were disgusted and\nunhappy. The former marshal of the province was in a state of despair,\nwhich he could not conceal. When Nevyedovsky went out of the room, the\ncrowd thronged round him and followed him enthusiastically, just as they\nhad followed the governor who had opened the meetings, and just as they\nhad followed Snetkov when he was elected.\n\n\n\nChapter 31\n\n\nThe newly elected marshal and many of the successful party dined that\nday with Vronsky.\n\nVronsky had come to the elections partly because he was bored in the\ncountry and wanted to show Anna his right to independence, and also to\nrepay Sviazhsky by his support at the election for all the trouble he\nhad taken for Vronsky at the district council election, but chiefly in\norder strictly to perform all those duties of a nobleman and landowner\nwhich he had taken upon himself. But he had not in the least expected\nthat the election would so interest him, so keenly excite him, and that\nhe would be so good at this kind of thing. He was quite a new man in the\ncircle of the nobility of the province, but his success was\nunmistakable, and he was not wrong in supposing that he had already\nobtained a certain influence. This influence was due to his wealth and\nreputation, the capital house in the town lent him by his old friend\nShirkov, who had a post in the department of finances and was director\nof a flourishing bank in Kashin; the excellent cook Vronsky had brought\nfrom the country, and his friendship with the governor, who was a\nschoolfellow of Vronsky's--a schoolfellow he had patronized and\nprotected indeed. But what contributed more than all to his success was\nhis direct, equable manner with everyone, which very quickly made the\nmajority of the noblemen reverse the current opinion of his supposed\nhaughtiness. He was himself conscious that, except that whimsical\ngentleman married to Kitty Shtcherbatskaya, who had _a propos de bottes_\npoured out a stream of irrelevant absurdities with such spiteful fury,\nevery nobleman with whom he had made acquaintance had become his\nadherent. He saw clearly, and other people recognized it, too, that he\nhad done a great deal to secure the success of Nevyedovsky. And now at\nhis own table, celebrating Nevyedovsky's election, he was experiencing\nan agreeable sense of triumph over the success of his candidate. The\nelection itself had so fascinated him that, if he could succeed in\ngetting married during the next three years, he began to think of\nstanding himself--much as after winning a race ridden by a jockey, he\nhad longed to ride a race himself.\n\nToday he was celebrating the success of his jockey. Vronsky sat at the\nhead of the table, on his right hand sat the young governor, a general\nof high rank. To all the rest he was the chief man in the province, who\nhad solemnly opened the elections with his speech, and aroused a feeling\nof respect and even of awe in many people, as Vronsky saw; to Vronsky he\nwas little Katka Maslov--that had been his nickname in the Pages'\nCorps--whom he felt to be shy and tried to _mettre a son aise_. On the\nleft hand sat Nevyedovsky with his youthful, stubborn, and malignant\nface. With him Vronsky was simple and deferential.\n\nSviazhsky took his failure very light-heartedly. It was indeed no\nfailure in his eyes, as he said himself, turning, glass in hand, to\nNevyedovsky; they could not have found a better representative of the\nnew movement, which the nobility ought to follow. And so every honest\nperson, as he said, was on the side of today's success and was rejoicing\nover it.\n\nStepan Arkadyevitch was glad, too, that he was having a good time, and\nthat everyone was pleased. The episode of the elections served as a good\noccasion for a capital dinner. Sviazhsky comically imitated the tearful\ndiscourse of the marshal, and observed, addressing Nevyedovsky, that his\nexcellency would have to select another more complicated method of\nauditing the accounts than tears. Another nobleman jocosely described\nhow footmen in stockings had been ordered for the marshal's ball, and\nhow now they would have to be sent back unless the new marshal would\ngive a ball with footmen in stockings.\n\nContinually during dinner they said of Nevyedovsky: \"our marshal,\" and\n\"your excellency.\"\n\nThis was said with the same pleasure with which a bride is called\n\"Madame\" and her husband's name. Nevyedovsky affected to be not merely\nindifferent but scornful of this appellation, but it was obvious that he\nwas highly delighted, and had to keep a curb on himself not to betray\nthe triumph which was unsuitable to their new liberal tone.\n\nAfter dinner several telegrams were sent to people interested in the\nresult of the election. And Stepan Arkadyevitch, who was in high good\nhumor, sent Darya Alexandrovna a telegram: \"Nevyedovsky elected by\ntwenty votes. Congratulations. Tell people.\" He dictated it aloud,\nsaying: \"We must let them share our rejoicing.\" Darya Alexandrovna,\ngetting the message, simply sighed over the rouble wasted on it, and\nunderstood that it was an after-dinner affair. She knew Stiva had a\nweakness after dining for _faire jouer le telegraphe._\n\nEverything, together with the excellent dinner and the wine, not from\nRussian merchants, but imported direct from abroad, was extremely\ndignified, simple, and enjoyable. The party--some twenty--had been\nselected by Sviazhsky from among the more active new liberals, all of\nthe same way of thinking, who were at the same time clever and well\nbred. They drank, also half in jest, to the health of the new marshal of\nthe province, of the governor, of the bank director, and of \"our amiable\nhost.\"\n\nVronsky was satisfied. He had never expected to find so pleasant a tone\nin the provinces.\n\nTowards the end of dinner it was still more lively. The governor asked\nVronsky to come to a concert for the benefit of the Servians which his\nwife, who was anxious to make his acquaintance, had been getting up.\n\n\"There'll be a ball, and you'll see the belle of the province. Worth\nseeing, really.\"\n\n\"Not in my line,\" Vronsky answered. He liked that English phrase. But he\nsmiled, and promised to come.\n\nBefore they rose from the table, when all of them were smoking,\nVronsky's valet went up to him with a letter on a tray.\n\n\"From Vozdvizhenskoe by special messenger,\" he said with a significant\nexpression.\n\n\"Astonishing! how like he is to the deputy prosecutor Sventitsky,\" said\none of the guests in French of the valet, while Vronsky, frowning, read\nthe letter.\n\nThe letter was from Anna. Before he read the letter, he knew its\ncontents. Expecting the elections to be over in five days, he had\npromised to be back on Friday. Today was Saturday, and he knew that the\nletter contained reproaches for not being back at the time fixed. The\nletter he had sent the previous evening had probably not reached her\nyet.\n\nThe letter was what he had expected, but the form of it was unexpected,\nand particularly disagreeable to him. \"Annie is very ill, the doctor\nsays it may be inflammation. I am losing my head all alone. Princess\nVarvara is no help, but a hindrance. I expected you the day before\nyesterday, and yesterday, and now I am sending to find out where you are\nand what you are doing. I wanted to come myself, but thought better of\nit, knowing you would dislike it. Send some answer, that I may know what\nto do.\"\n\nThe child ill, yet she had thought of coming herself. Their daughter\nill, and this hostile tone.\n\nThe innocent festivities over the election, and this gloomy, burdensome\nlove to which he had to return struck Vronsky by their contrast. But he\nhad to go, and by the first train that night he set off home.\n\n\n\nChapter 32\n\n\nBefore Vronsky's departure for the elections, Anna had reflected that\nthe scenes constantly repeated between them each time he left home,\nmight only make him cold to her instead of attaching him to her, and\nresolved to do all she could to control herself so as to bear the\nparting with composure. But the cold, severe glance with which he had\nlooked at her when he came to tell her he was going had wounded her, and\nbefore he had started her peace of mind was destroyed.\n\nIn solitude afterwards, thinking over that glance which had expressed\nhis right to freedom, she came, as she always did, to the same\npoint--the sense of her own humiliation. \"He has the right to go away\nwhen and where he chooses. Not simply to go away, but to leave me. He\nhas every right, and I have none. But knowing that, he ought not to do\nit. What has he done, though?... He looked at me with a cold, severe\nexpression. Of course that is something indefinable, impalpable, but it\nhas never been so before, and that glance means a great deal,\" she\nthought. \"That glance shows the beginning of indifference.\"\n\nAnd though she felt sure that a coldness was beginning, there was\nnothing she could do, she could not in any way alter her relations to\nhim. Just as before, only by love and by charm could she keep him. And\nso, just as before, only by occupation in the day, by morphine at night,\ncould she stifle the fearful thought of what would be if he ceased to\nlove her. It is true there was still one means; not to keep him--for\nthat she wanted nothing more than his love--but to be nearer to him, to\nbe in such a position that he would not leave her. That means was\ndivorce and marriage. And she began to long for that, and made up her\nmind to agree to it the first time he or Stiva approached her on the\nsubject.\n\nAbsorbed in such thoughts, she passed five days without him, the five\ndays that he was to be at the elections.\n\nWalks, conversation with Princess Varvara, visits to the hospital, and,\nmost of all, reading--reading of one book after another--filled up her\ntime. But on the sixth day, when the coachman came back without him, she\nfelt that now she was utterly incapable of stifling the thought of him\nand of what he was doing there, just at that time her little girl was\ntaken ill. Anna began to look after her, but even that did not distract\nher mind, especially as the illness was not serious. However hard she\ntried, she could not love this little child, and to feign love was\nbeyond her powers. Towards the evening of that day, still alone, Anna\nwas in such a panic about him that she decided to start for the town,\nbut on second thoughts wrote him the contradictory letter that Vronsky\nreceived, and without reading it through, sent it off by a special\nmessenger. The next morning she received his letter and regretted her\nown. She dreaded a repetition of the severe look he had flung at her at\nparting, especially when he knew that the baby was not dangerously ill.\nBut still she was glad she had written to him. At this moment Anna was\npositively admitting to herself that she was a burden to him, that he\nwould relinquish his freedom regretfully to return to her, and in spite\nof that she was glad he was coming. Let him weary of her, but he would\nbe here with her, so that she would see him, would know of every action\nhe took.\n\nShe was sitting in the drawing room near a lamp, with a new volume of\nTaine, and as she read, listening to the sound of the wind outside, and\nevery minute expecting the carriage to arrive. Several times she had\nfancied she heard the sound of wheels, but she had been mistaken. At\nlast she heard not the sound of wheels, but the coachman's shout and the\ndull rumble in the covered entry. Even Princess Varvara, playing\npatience, confirmed this, and Anna, flushing hotly, got up; but instead\nof going down, as she had done twice before, she stood still. She\nsuddenly felt ashamed of her duplicity, but even more she dreaded how he\nmight meet her. All feeling of wounded pride had passed now; she was\nonly afraid of the expression of his displeasure. She remembered that\nher child had been perfectly well again for the last two days. She felt\npositively vexed with her for getting better from the very moment her\nletter was sent off. Then she thought of him, that he was here, all of\nhim, with his hands, his eyes. She heard his voice. And forgetting\neverything, she ran joyfully to meet him.\n\n\"Well, how is Annie?\" he said timidly from below, looking up to Anna as\nshe ran down to him.\n\nHe was sitting on a chair, and a footman was pulling off his warm\nover-boot.\n\n\"Oh, she is better.\"\n\n\"And you?\" he said, shaking himself.\n\nShe took his hand in both of hers, and drew it to her waist, never\ntaking her eyes off him.\n\n\"Well, I'm glad,\" he said, coldly scanning her, her hair, her dress,\nwhich he knew she had put on for him. All was charming, but how many\ntimes it had charmed him! And the stern, stony expression that she so\ndreaded settled upon his face.\n\n\"Well, I'm glad. And are you well?\" he said, wiping his damp beard with\nhis handkerchief and kissing her hand.\n\n\"Never mind,\" she thought, \"only let him be here, and so long as he's\nhere he cannot, he dare not, cease to love me.\"\n\nThe evening was spent happily and gaily in the presence of Princess\nVarvara, who complained to him that Anna had been taking morphine in his\nabsence.\n\n\"What am I to do? I couldn't sleep.... My thoughts prevented me. When\nhe's here I never take it--hardly ever.\"\n\nHe told her about the election, and Anna knew how by adroit questions to\nbring him to what gave him most pleasure--his own success. She told him\nof everything that interested him at home; and all that she told him was\nof the most cheerful description.\n\nBut late in the evening, when they were alone, Anna, seeing that she had\nregained complete possession of him, wanted to erase the painful\nimpression of the glance he had given her for her letter. She said:\n\n\"Tell me frankly, you were vexed at getting my letter, and you didn't\nbelieve me?\"\n\nAs soon as she had said it, she felt that however warm his feelings were\nto her, he had not forgiven her for that.\n\n\"Yes,\" he said, \"the letter was so strange. First, Annie ill, and then\nyou thought of coming yourself.\"\n\n\"It was all the truth.\"\n\n\"Oh, I don't doubt it.\"\n\n\"Yes, you do doubt it. You are vexed, I see.\"\n\n\"Not for one moment. I'm only vexed, that's true, that you seem somehow\nunwilling to admit that there are duties...\"\n\n\"The duty of going to a concert...\"\n\n\"But we won't talk about it,\" he said.\n\n\"Why not talk about it?\" she said.\n\n\"I only meant to say that matters of real importance may turn up. Now,\nfor instance, I shall have to go to Moscow to arrange about the\nhouse.... Oh, Anna, why are you so irritable? Don't you know that I\ncan't live without you?\"\n\n\"If so,\" said Anna, her voice suddenly changing, \"it means that you are\nsick of this life.... Yes, you will come for a day and go away, as men\ndo...\"\n\n\"Anna, that's cruel. I am ready to give up my whole life.\"\n\nBut she did not hear him.\n\n\"If you go to Moscow, I will go too. I will not stay here. Either we\nmust separate or else live together.\"\n\n\"Why, you know, that's my one desire. But for that...\"\n\n\"We must get a divorce. I will write to him. I see I cannot go on like\nthis.... But I will come with you to Moscow.\"\n\n\"You talk as if you were threatening me. But I desire nothing so much as\nnever to be parted from you,\" said Vronsky, smiling.\n\nBut as he said these words there gleamed in his eyes not merely a cold\nlook, but the vindictive look of a man persecuted and made cruel.\n\nShe saw the look and correctly divined its meaning.\n\n\"If so, it's a calamity!\" that glance told her. It was a moment's\nimpression, but she never forgot it.\n\nAnna wrote to her husband asking him about a divorce, and towards the\nend of November, taking leave of Princess Varvara, who wanted to go to\nPetersburg, she went with Vronsky to Moscow. Expecting every day an\nanswer from Alexey Alexandrovitch, and after that the divorce, they now\nestablished themselves together like married people.\n\n\n\n\nPART SEVEN\n\n\n\nChapter 1\n\n\nThe Levins had been three months in Moscow. The date had long passed on\nwhich, according to the most trustworthy calculations of people learned\nin such matters, Kitty should have been confined. But she was still\nabout, and there was nothing to show that her time was any nearer than\ntwo months ago. The doctor, the monthly nurse, and Dolly and her mother,\nand most of all Levin, who could not think of the approaching event\nwithout terror, began to be impatient and uneasy. Kitty was the only\nperson who felt perfectly calm and happy.\n\nShe was distinctly conscious now of the birth of a new feeling of love\nfor the future child, for her to some extent actually existing already,\nand she brooded blissfully over this feeling. He was not by now\naltogether a part of herself, but sometimes lived his own life\nindependently of her. Often this separate being gave her pain, but at\nthe same time she wanted to laugh with a strange new joy.\n\nAll the people she loved were with her, and all were so good to her, so\nattentively caring for her, so entirely pleasant was everything\npresented to her, that if she had not known and felt that it must all\nsoon be over, she could not have wished for a better and pleasanter\nlife. The only thing that spoiled the charm of this manner of life was\nthat her husband was not here as she loved him to be, and as he was in\nthe country.\n\nShe liked his serene, friendly, and hospitable manner in the country. In\nthe town he seemed continually uneasy and on his guard, as though he\nwere afraid someone would be rude to him, and still more to her. At home\nin the country, knowing himself distinctly to be in his right place, he\nwas never in haste to be off elsewhere. He was never unoccupied. Here in\ntown he was in a continual hurry, as though afraid of missing something,\nand yet he had nothing to do. And she felt sorry for him. To others, she\nknew, he did not appear an object of pity. On the contrary, when Kitty\nlooked at him in society, as one sometimes looks at those one loves,\ntrying to see him as if he were a stranger, so as to catch the\nimpression he must make on others, she saw with a panic even of jealous\nfear that he was far indeed from being a pitiable figure, that he was\nvery attractive with his fine breeding, his rather old-fashioned,\nreserved courtesy with women, his powerful figure, and striking, as she\nthought, and expressive face. But she saw him not from without, but from\nwithin; she saw that here he was not himself; that was the only way she\ncould define his condition to herself. Sometimes she inwardly reproached\nhim for his inability to live in the town; sometimes she recognized that\nit was really hard for him to order his life here so that he could be\nsatisfied with it.\n\nWhat had he to do, indeed? He did not care for cards; he did not go to a\nclub. Spending the time with jovial gentlemen of Oblonsky's type--she\nknew now what that meant ... it meant drinking and going somewhere after\ndrinking. She could not think without horror of where men went on such\noccasions. Was he to go into society? But she knew he could only find\nsatisfaction in that if he took pleasure in the society of young women,\nand that she could not wish for. Should he stay at home with her, her\nmother and her sisters? But much as she liked and enjoyed their\nconversations forever on the same subjects--\"Aline-Nadine,\" as the old\nprince called the sisters' talks--she knew it must bore him. What was\nthere left for him to do? To go on writing at his book he had indeed\nattempted, and at first he used to go to the library and make extracts\nand look up references for his book. But, as he told her, the more he\ndid nothing, the less time he had to do anything. And besides, he\ncomplained that he had talked too much about his book here, and that\nconsequently all his ideas about it were muddled and had lost their\ninterest for him.\n\nOne advantage in this town life was that quarrels hardly ever happened\nbetween them here in town. Whether it was that their conditions were\ndifferent, or that they had both become more careful and sensible in\nthat respect, they had no quarrels in Moscow from jealousy, which they\nhad so dreaded when they moved from the country.\n\nOne event, an event of great importance to both from that point of view,\ndid indeed happen--that was Kitty's meeting with Vronsky.\n\nThe old Princess Marya Borissovna, Kitty's godmother, who had always\nbeen very fond of her, had insisted on seeing her. Kitty, though she did\nnot go into society at all on account of her condition, went with her\nfather to see the venerable old lady, and there met Vronsky.\n\nThe only thing Kitty could reproach herself for at this meeting was that\nat the instant when she recognized in his civilian dress the features\nonce so familiar to her, her breath failed her, the blood rushed to her\nheart, and a vivid blush--she felt it--overspread her face. But this\nlasted only a few seconds. Before her father, who purposely began\ntalking in a loud voice to Vronsky, had finished, she was perfectly\nready to look at Vronsky, to speak to him, if necessary, exactly as she\nspoke to Princess Marya Borissovna, and more than that, to do so in such\na way that everything to the faintest intonation and smile would have\nbeen approved by her husband, whose unseen presence she seemed to feel\nabout her at that instant.\n\nShe said a few words to him, even smiled serenely at his joke about the\nelections, which he called \"our parliament.\" (She had to smile to show\nshe saw the joke.) But she turned away immediately to Princess Marya\nBorissovna, and did not once glance at him till he got up to go; then\nshe looked at him, but evidently only because it would be uncivil not to\nlook at a man when he is saying good-bye.\n\nShe was grateful to her father for saying nothing to her about their\nmeeting Vronsky, but she saw by his special warmth to her after the\nvisit during their usual walk that he was pleased with her. She was\npleased with herself. She had not expected she would have had the power,\nwhile keeping somewhere in the bottom of her heart all the memories of\nher old feeling for Vronsky, not only to seem but to be perfectly\nindifferent and composed with him.\n\nLevin flushed a great deal more than she when she told him she had met\nVronsky at Princess Marya Borissovna's. It was very hard for her to tell\nhim this, but still harder to go on speaking of the details of the\nmeeting, as he did not question her, but simply gazed at her with a\nfrown.\n\n\"I am very sorry you weren't there,\" she said. \"Not that you weren't in\nthe room ... I couldn't have been so natural in your presence ... I am\nblushing now much more, much, much more,\" she said, blushing till the\ntears came into her eyes. \"But that you couldn't see through a crack.\"\n\nThe truthful eyes told Levin that she was satisfied with herself, and in\nspite of her blushing he was quickly reassured and began questioning\nher, which was all she wanted. When he had heard everything, even to the\ndetail that for the first second she could not help flushing, but that\nafterwards she was just as direct and as much at her ease as with any\nchance acquaintance, Levin was quite happy again and said he was glad of\nit, and would not now behave as stupidly as he had done at the election,\nbut would try the first time he met Vronsky to be as friendly as\npossible.\n\n\"It's so wretched to feel that there's a man almost an enemy whom it's\npainful to meet,\" said Levin. \"I'm very, very glad.\"\n\n\n\nChapter 2\n\n\n\"Go, please, go then and call on the Bols,\" Kitty said to her husband,\nwhen he came in to see her at eleven o'clock before going out. \"I know\nyou are dining at the club; papa put down your name. But what are you\ngoing to do in the morning?\"\n\n\"I am only going to Katavasov,\" answered Levin.\n\n\"Why so early?\"\n\n\"He promised to introduce me to Metrov. I wanted to talk to him about my\nwork. He's a distinguished scientific man from Petersburg,\" said Levin.\n\n\"Yes; wasn't it his article you were praising so? Well, and after that?\"\nsaid Kitty.\n\n\"I shall go to the court, perhaps, about my sister's business.\"\n\n\"And the concert?\" she queried.\n\n\"I shan't go there all alone.\"\n\n\"No? do go; there are going to be some new things.... That interested\nyou so. I should certainly go.\"\n\n\"Well, anyway, I shall come home before dinner,\" he said, looking at his\nwatch.\n\n\"Put on your frock coat, so that you can go straight to call on Countess\nBola.\"\n\n\"But is it absolutely necessary?\"\n\n\"Oh, absolutely! He has been to see us. Come, what is it? You go in, sit\ndown, talk for five minutes of the weather, get up and go away.\"\n\n\"Oh, you wouldn't believe it! I've got so out of the way of all this\nthat it makes me feel positively ashamed. It's such a horrible thing to\ndo! A complete outsider walks in, sits down, stays on with nothing to\ndo, wastes their time and worries himself, and walks away!\"\n\nKitty laughed.\n\n\"Why, I suppose you used to pay calls before you were married, didn't\nyou?\"\n\n\"Yes, I did, but I always felt ashamed, and now I'm so out of the way of\nit that, by Jove! I'd sooner go two days running without my dinner than\npay this call! One's so ashamed! I feel all the while that they're\nannoyed, that they're saying, 'What has he come for?'\"\n\n\"No, they won't. I'll answer for that,\" said Kitty, looking into his\nface with a laugh. She took his hand. \"Well, good-bye.... Do go,\nplease.\"\n\nHe was just going out after kissing his wife's hand, when she stopped\nhim.\n\n\"Kostya, do you know I've only fifty roubles left?\"\n\n\"Oh, all right, I'll go to the bank and get some. How much?\" he said,\nwith the expression of dissatisfaction she knew so well.\n\n\"No, wait a minute.\" She held his hand. \"Let's talk about it, it worries\nme. I seem to spend nothing unnecessary, but money seems to fly away\nsimply. We don't manage well, somehow.\"\n\n\"Oh, it's all right,\" he said with a little cough, looking at her from\nunder his brows.\n\nThat cough she knew well. It was a sign of intense dissatisfaction, not\nwith her, but with himself. He certainly was displeased not at so much\nmoney being spent, but at being reminded of what he, knowing something\nwas unsatisfactory, wanted to forget.\n\n\"I have told Sokolov to sell the wheat, and to borrow an advance on the\nmill. We shall have money enough in any case.\"\n\n\"Yes, but I'm afraid that altogether...\"\n\n\"Oh, it's all right, all right,\" he repeated. \"Well, good-bye, darling.\"\n\n\"No, I'm really sorry sometimes that I listened to mamma. How nice it\nwould have been in the country! As it is, I'm worrying you all, and\nwe're wasting our money.\"\n\n\"Not at all, not at all. Not once since I've been married have I said\nthat things could have been better than they are....\"\n\n\"Truly?\" she said, looking into his eyes.\n\nHe had said it without thinking, simply to console her. But when he\nglanced at her and saw those sweet truthful eyes fastened questioningly\non him, he repeated it with his whole heart. \"I was positively\nforgetting her,\" he thought. And he remembered what was before them, so\nsoon to come.\n\n\"Will it be soon? How do you feel?\" he whispered, taking her two hands.\n\n\"I have so often thought so, that now I don't think about it or know\nanything about it.\"\n\n\"And you're not frightened?\"\n\nShe smiled contemptuously.\n\n\"Not the least little bit,\" she said.\n\n\"Well, if anything happens, I shall be at Katavasov's.\"\n\n\"No, nothing will happen, and don't think about it. I'm going for a walk\non the boulevard with papa. We're going to see Dolly. I shall expect you\nbefore dinner. Oh, yes! Do you know that Dolly's position is becoming\nutterly impossible? She's in debt all round; she hasn't a penny. We were\ntalking yesterday with mamma and Arseny\" (this was her sister's husband\nLvov), \"and we determined to send you with him to talk to Stiva. It's\nreally unbearable. One can't speak to papa about it.... But if you and\nhe...\"\n\n\"Why, what can we do?\" said Levin.\n\n\"You'll be at Arseny's, anyway; talk to him, he will tell what we\ndecided.\"\n\n\"Oh, I agree to everything Arseny thinks beforehand. I'll go and see\nhim. By the way, if I do go to the concert, I'll go with Natalia. Well,\ngood-bye.\"\n\nOn the steps Levin was stopped by his old servant Kouzma, who had been\nwith him before his marriage, and now looked after their household in\ntown.\n\n\"Beauty\" (that was the left shaft-horse brought up from the country)\n\"has been badly shod and is quite lame,\" he said. \"What does your honor\nwish to be done?\"\n\nDuring the first part of their stay in Moscow, Levin had used his own\nhorses brought up from the country. He had tried to arrange this part of\ntheir expenses in the best and cheapest way possible; but it appeared\nthat their own horses came dearer than hired horses, and they still\nhired too.\n\n\"Send for the veterinary, there may be a bruise.\"\n\n\"And for Katerina Alexandrovna?\" asked Kouzma.\n\nLevin was not by now struck as he had been at first by the fact that to\nget from one end of Moscow to the other he had to have two powerful\nhorses put into a heavy carriage, to take the carriage three miles\nthrough the snowy slush and to keep it standing there four hours, paying\nfive roubles every time.\n\nNow it seemed quite natural.\n\n\"Hire a pair for our carriage from the jobmaster,\" said he.\n\n\"Yes, sir.\"\n\nAnd so, simply and easily, thanks to the facilities of town life, Levin\nsettled a question which, in the country, would have called for so much\npersonal trouble and exertion, and going out onto the steps, he called a\nsledge, sat down, and drove to Nikitsky. On the way he thought no more\nof money, but mused on the introduction that awaited him to the\nPetersburg savant, a writer on sociology, and what he would say to him\nabout his book.\n\nOnly during the first days of his stay in Moscow Levin had been struck\nby the expenditure, strange to one living in the country, unproductive\nbut inevitable, that was expected of him on every side. But by now he\nhad grown used to it. That had happened to him in this matter which is\nsaid to happen to drunkards--the first glass sticks in the throat, the\nsecond flies down like a hawk, but after the third they're like tiny\nlittle birds. When Levin had changed his first hundred-rouble note to\npay for liveries for his footmen and hall-porter he could not help\nreflecting that these liveries were of no use to anyone--but they were\nindubitably necessary, to judge by the amazement of the princess and\nKitty when he suggested that they might do without liveries,--that these\nliveries would cost the wages of two laborers for the summer, that is,\nwould pay for about three hundred working days from Easter to Ash\nWednesday, and each a day of hard work from early morning to late\nevening--and that hundred-rouble note did stick in his throat. But the\nnext note, changed to pay for providing a dinner for their relations,\nthat cost twenty-eight roubles, though it did excite in Levin the\nreflection that twenty-eight roubles meant nine measures of oats, which\nmen would with groans and sweat have reaped and bound and thrashed and\nwinnowed and sifted and sown,--this next one he parted with more easily.\nAnd now the notes he changed no longer aroused such reflections, and\nthey flew off like little birds. Whether the labor devoted to obtaining\nthe money corresponded to the pleasure given by what was bought with it,\nwas a consideration he had long ago dismissed. His business calculation\nthat there was a certain price below which he could not sell certain\ngrain was forgotten too. The rye, for the price of which he had so long\nheld out, had been sold for fifty kopecks a measure cheaper than it had\nbeen fetching a month ago. Even the consideration that with such an\nexpenditure he could not go on living for a year without debt, that even\nhad no force. Only one thing was essential: to have money in the bank,\nwithout inquiring where it came from, so as to know that one had the\nwherewithal to buy meat for tomorrow. And this condition had hitherto\nbeen fulfilled; he had always had the money in the bank. But now the\nmoney in the bank had gone, and he could not quite tell where to get the\nnext installment. And this it was which, at the moment when Kitty had\nmentioned money, had disturbed him; but he had no time to think about\nit. He drove off, thinking of Katavasov and the meeting with Metrov that\nwas before him.\n\n\n\nChapter 3\n\n\nLevin had on this visit to town seen a great deal of his old friend at\nthe university, Professor Katavasov, whom he had not seen since his\nmarriage. He liked in Katavasov the clearness and simplicity of his\nconception of life. Levin thought that the clearness of Katavasov's\nconception of life was due to the poverty of his nature; Katavasov\nthought that the disconnectedness of Levin's ideas was due to his lack\nof intellectual discipline; but Levin enjoyed Katavasov's clearness, and\nKatavasov enjoyed the abundance of Levin's untrained ideas, and they\nliked to meet and to discuss.\n\nLevin had read Katavasov some parts of his book, and he had liked them.\nOn the previous day Katavasov had met Levin at a public lecture and told\nhim that the celebrated Metrov, whose article Levin had so much liked,\nwas in Moscow, that he had been much interested by what Katavasov had\ntold him about Levin's work, and that he was coming to see him tomorrow\nat eleven, and would be very glad to make Levin's acquaintance.\n\n\"You're positively a reformed character, I'm glad to see,\" said\nKatavasov, meeting Levin in the little drawing room. \"I heard the bell\nand thought: Impossible that it can be he at the exact time!... Well,\nwhat do you say to the Montenegrins now? They're a race of warriors.\"\n\n\"Why, what's happened?\" asked Levin.\n\nKatavasov in a few words told him the last piece of news from the war,\nand going into his study, introduced Levin to a short, thick-set man of\npleasant appearance. This was Metrov. The conversation touched for a\nbrief space on politics and on how recent events were looked at in the\nhigher spheres in Petersburg. Metrov repeated a saying that had reached\nhim through a most trustworthy source, reported as having been uttered\non this subject by the Tsar and one of the ministers. Katavasov had\nheard also on excellent authority that the Tsar had said something quite\ndifferent. Levin tried to imagine circumstances in which both sayings\nmight have been uttered, and the conversation on that topic dropped.\n\n\"Yes, here he's written almost a book on the natural conditions of the\nlaborer in relation to the land,\" said Katavasov; \"I'm not a specialist,\nbut I, as a natural science man, was pleased at his not taking mankind\nas something outside biological laws; but, on the contrary, seeing his\ndependence on his surroundings, and in that dependence seeking the laws\nof his development.\"\n\n\"That's very interesting,\" said Metrov.\n\n\"What I began precisely was to write a book on agriculture; but studying\nthe chief instrument of agriculture, the laborer,\" said Levin,\nreddening, \"I could not help coming to quite unexpected results.\"\n\nAnd Levin began carefully, as it were, feeling his ground, to expound\nhis views. He knew Metrov had written an article against the generally\naccepted theory of political economy, but to what extent he could reckon\non his sympathy with his own new views he did not know and could not\nguess from the clever and serene face of the learned man.\n\n\"But in what do you see the special characteristics of the Russian\nlaborer?\" said Metrov; \"in his biological characteristics, so to speak,\nor in the condition in which he is placed?\"\n\nLevin saw that there was an idea underlying this question with which he\ndid not agree. But he went on explaining his own idea that the Russian\nlaborer has a quite special view of the land, different from that of\nother people; and to support this proposition he made haste to add that\nin his opinion this attitude of the Russian peasant was due to the\nconsciousness of his vocation to people vast unoccupied expanses in the\nEast.\n\n\"One may easily be led into error in basing any conclusion on the\ngeneral vocation of a people,\" said Metrov, interrupting Levin. \"The\ncondition of the laborer will always depend on his relation to the land\nand to capital.\"\n\nAnd without letting Levin finish explaining his idea, Metrov began\nexpounding to him the special point of his own theory.\n\nIn what the point of his theory lay, Levin did not understand, because\nhe did not take the trouble to understand. He saw that Metrov, like\nother people, in spite of his own article, in which he had attacked the\ncurrent theory of political economy, looked at the position of the\nRussian peasant simply from the point of view of capital, wages, and\nrent. He would indeed have been obliged to admit that in the\neastern--much the larger--part of Russia rent was as yet nil, that for\nnine-tenths of the eighty millions of the Russian peasants wages took\nthe form simply of food provided for themselves, and that capital does\nnot so far exist except in the form of the most primitive tools. Yet it\nwas only from that point of view that he considered every laborer,\nthough in many points he differed from the economists and had his own\ntheory of the wage-fund, which he expounded to Levin.\n\nLevin listened reluctantly, and at first made objections. He would have\nliked to interrupt Metrov, to explain his own thought, which in his\nopinion would have rendered further exposition of Metrov's theories\nsuperfluous. But later on, feeling convinced that they looked at the\nmatter so differently, that they could never understand one another, he\ndid not even oppose his statements, but simply listened. Although what\nMetrov was saying was by now utterly devoid of interest for him, he yet\nexperienced a certain satisfaction in listening to him. It flattered his\nvanity that such a learned man should explain his ideas to him so\neagerly, with such intensity and confidence in Levin's understanding of\nthe subject, sometimes with a mere hint referring him to a whole aspect\nof the subject. He put this down to his own credit, unaware that Metrov,\nwho had already discussed his theory over and over again with all his\nintimate friends, talked of it with special eagerness to every new\nperson, and in general was eager to talk to anyone of any subject that\ninterested him, even if still obscure to himself.\n\n\"We are late though,\" said Katavasov, looking at his watch directly\nMetrov had finished his discourse.\n\n\"Yes, there's a meeting of the Society of Amateurs today in\ncommemoration of the jubilee of Svintitch,\" said Katavasov in answer to\nLevin's inquiry. \"Pyotr Ivanovitch and I were going. I've promised to\ndeliver an address on his labors in zoology. Come along with us, it's\nvery interesting.\"\n\n\"Yes, and indeed it's time to start,\" said Metrov. \"Come with us, and\nfrom there, if you care to, come to my place. I should very much like to\nhear your work.\"\n\n\"Oh, no! It's no good yet, it's unfinished. But I shall be very glad to\ngo to the meeting.\"\n\n\"I say, friends, have you heard? He has handed in the separate report,\"\nKatavasov called from the other room, where he was putting on his frock\ncoat.\n\nAnd a conversation sprang up upon the university question, which was a\nvery important event that winter in Moscow. Three old professors in the\ncouncil had not accepted the opinion of the younger professors. The\nyoung ones had registered a separate resolution. This, in the judgment\nof some people, was monstrous, in the judgment of others it was the\nsimplest and most just thing to do, and the professors were split up\ninto two parties.\n\nOne party, to which Katavasov belonged, saw in the opposite party a\nscoundrelly betrayal and treachery, while the opposite party saw in them\nchildishness and lack of respect for the authorities. Levin, though he\ndid not belong to the university, had several times already during his\nstay in Moscow heard and talked about this matter, and had his own\nopinion on the subject. He took part in the conversation that was\ncontinued in the street, as they all three walked to the buildings of\nthe old university.\n\nThe meeting had already begun. Round the cloth-covered table, at which\nKatavasov and Metrov seated themselves, there were some half-dozen\npersons, and one of these was bending close over a manuscript, reading\nsomething aloud. Levin sat down in one of the empty chairs that were\nstanding round the table, and in a whisper asked a student sitting near\nwhat was being read. The student, eyeing Levin with displeasure, said:\n\n\"Biography.\"\n\nThough Levin was not interested in the biography, he could not help\nlistening, and learned some new and interesting facts about the life of\nthe distinguished man of science.\n\nWhen the reader had finished, the chairman thanked him and read some\nverses of the poet Ment sent him on the jubilee, and said a few words by\nway of thanks to the poet. Then Katavasov in his loud, ringing voice\nread his address on the scientific labors of the man whose jubilee was\nbeing kept.\n\nWhen Katavasov had finished, Levin looked at his watch, saw it was past\none, and thought that there would not be time before the concert to read\nMetrov his book, and indeed, he did not now care to do so. During the\nreading he had thought over their conversation. He saw distinctly now\nthat though Metrov's ideas might perhaps have value, his own ideas had a\nvalue too, and their ideas could only be made clear and lead to\nsomething if each worked separately in his chosen path, and that nothing\nwould be gained by putting their ideas together. And having made up his\nmind to refuse Metrov's invitation, Levin went up to him at the end of\nthe meeting. Metrov introduced Levin to the chairman, with whom he was\ntalking of the political news. Metrov told the chairman what he had\nalready told Levin, and Levin made the same remarks on his news that he\nhad already made that morning, but for the sake of variety he expressed\nalso a new opinion which had only just struck him. After that the\nconversation turned again on the university question. As Levin had\nalready heard it all, he made haste to tell Metrov that he was sorry he\ncould not take advantage of his invitation, took leave, and drove to\nLvov's.\n\n\n\nChapter 4\n\n\nLvov, the husband of Natalia, Kitty's sister, had spent all his life in\nforeign capitals, where he had been educated, and had been in the\ndiplomatic service.\n\nDuring the previous year he had left the diplomatic service, not owing\nto any \"unpleasantness\" (he never had any \"unpleasantness\" with anyone),\nand was transferred to the department of the court of the palace in\nMoscow, in order to give his two boys the best education possible.\n\nIn spite of the striking contrast in their habits and views and the fact\nthat Lvov was older than Levin, they had seen a great deal of one\nanother that winter, and had taken a great liking to each other.\n\nLvov was at home, and Levin went in to him unannounced.\n\nLvov, in a house coat with a belt and in chamois leather shoes, was\nsitting in an armchair, and with a pince-nez with blue glasses he was\nreading a book that stood on a reading desk, while in his beautiful hand\nhe held a half-burned cigarette daintily away from him.\n\nHis handsome, delicate, and still youthful-looking face, to which his\ncurly, glistening silvery hair gave a still more aristocratic air,\nlighted up with a smile when he saw Levin.\n\n\"Capital! I was meaning to send to you. How's Kitty? Sit here, it's more\ncomfortable.\" He got up and pushed up a rocking chair. \"Have you read\nthe last circular in the _Journal de St. Petersbourg?_ I think it's\nexcellent,\" he said, with a slight French accent.\n\nLevin told him what he had heard from Katavasov was being said in\nPetersburg, and after talking a little about politics, he told him of\nhis interview with Metrov, and the learned society's meeting. To Lvov it\nwas very interesting.\n\n\"That's what I envy you, that you are able to mix in these interesting\nscientific circles,\" he said. And as he talked, he passed as usual into\nFrench, which was easier to him. \"It's true I haven't the time for it.\nMy official work and the children leave me no time; and then I'm not\nashamed to own that my education has been too defective.\"\n\n\"That I don't believe,\" said Levin with a smile, feeling, as he always\ndid, touched at Lvov's low opinion of himself, which was not in the\nleast put on from a desire to seem or to be modest, but was absolutely\nsincere.\n\n\"Oh, yes, indeed! I feel now how badly educated I am. To educate my\nchildren I positively have to look up a great deal, and in fact simply\nto study myself. For it's not enough to have teachers, there must be\nsomeone to look after them, just as on your land you want laborers and\nan overseer. See what I'm reading\"--he pointed to Buslaev's _Grammar_ on\nthe desk--\"it's expected of Misha, and it's so difficult.... Come,\nexplain to me.... Here he says...\"\n\nLevin tried to explain to him that it couldn't be understood, but that\nit had to be taught; but Lvov would not agree with him.\n\n\"Oh, you're laughing at it!\"\n\n\"On the contrary, you can't imagine how, when I look at you, I'm always\nlearning the task that lies before me, that is the education of one's\nchildren.\"\n\n\"Well, there's nothing for you to learn,\" said Lvov.\n\n\"All I know,\" said Levin, \"is that I have never seen better brought-up\nchildren than yours, and I wouldn't wish for children better than\nyours.\"\n\nLvov visibly tried to restrain the expression of his delight, but he was\npositively radiant with smiles.\n\n\"If only they're better than I! That's all I desire. You don't know yet\nall the work,\" he said, \"with boys who've been left like mine to run\nwild abroad.\"\n\n\"You'll catch all that up. They're such clever children. The great thing\nis the education of character. That's what I learn when I look at your\nchildren.\"\n\n\"You talk of the education of character. You can't imagine how difficult\nthat is! You have hardly succeeded in combating one tendency when others\ncrop up, and the struggle begins again. If one had not a support in\nreligion--you remember we talked about that--no father could bring\nchildren up relying on his own strength alone without that help.\"\n\nThis subject, which always interested Levin, was cut short by the\nentrance of the beauty Natalia Alexandrovna, dressed to go out.\n\n\"I didn't know you were here,\" she said, unmistakably feeling no regret,\nbut a positive pleasure, in interrupting this conversation on a topic\nshe had heard so much of that she was by now weary of it. \"Well, how is\nKitty? I am dining with you today. I tell you what, Arseny,\" she turned\nto her husband, \"you take the carriage.\"\n\nAnd the husband and wife began to discuss their arrangements for the\nday. As the husband had to drive to meet someone on official business,\nwhile the wife had to go to the concert and some public meeting of a\ncommittee on the Eastern Question, there was a great deal to consider\nand settle. Levin had to take part in their plans as one of themselves.\nIt was settled that Levin should go with Natalia to the concert and the\nmeeting, and that from there they should send the carriage to the office\nfor Arseny, and he should call for her and take her to Kitty's; or that,\nif he had not finished his work, he should send the carriage back and\nLevin would go with her.\n\n\"He's spoiling me,\" Lvov said to his wife; \"he assures me that our\nchildren are splendid, when I know how much that's bad there is in\nthem.\"\n\n\"Arseny goes to extremes, I always say,\" said his wife. \"If you look for\nperfection, you will never be satisfied. And it's true, as papa\nsays,--that when we were brought up there was one extreme--we were kept\nin the basement, while our parents lived in the best rooms; now it's\njust the other way--the parents are in the wash house, while the\nchildren are in the best rooms. Parents now are not expected to live at\nall, but to exist altogether for their children.\"\n\n\"Well, what if they like it better?\" Lvov said, with his beautiful\nsmile, touching her hand. \"Anyone who didn't know you would think you\nwere a stepmother, not a true mother.\"\n\n\"No, extremes are not good in anything,\" Natalia said serenely, putting\nhis paper knife straight in its proper place on the table.\n\n\"Well, come here, you perfect children,\" Lvov said to the two handsome\nboys who came in, and after bowing to Levin, went up to their father,\nobviously wishing to ask him about something.\n\nLevin would have liked to talk to them, to hear what they would say to\ntheir father, but Natalia began talking to him, and then Lvov's\ncolleague in the service, Mahotin, walked in, wearing his court uniform,\nto go with him to meet someone, and a conversation was kept up without a\nbreak upon Herzegovina, Princess Korzinskaya, the town council, and the\nsudden death of Madame Apraksina.\n\nLevin even forgot the commission intrusted to him. He recollected it as\nhe was going into the hall.\n\n\"Oh, Kitty told me to talk to you about Oblonsky,\" he said, as Lvov was\nstanding on the stairs, seeing his wife and Levin off.\n\n\"Yes, yes, maman wants us, _les beaux-freres,_ to attack him,\" he said,\nblushing. \"But why should I?\"\n\n\"Well, then, I will attack him,\" said Madame Lvova, with a smile,\nstanding in her white sheepskin cape, waiting till they had finished\nspeaking. \"Come, let us go.\"\n\n\n\nChapter 5\n\n\nAt the concert in the afternoon two very interesting things were\nperformed. One was a fantasia, _King Lear;_ the other was a quartette\ndedicated to the memory of Bach. Both were new and in the new style, and\nLevin was eager to form an opinion of them. After escorting his\nsister-in-law to her stall, he stood against a column and tried to\nlisten as attentively and conscientiously as possible. He tried not to\nlet his attention be distracted, and not to spoil his impression by\nlooking at the conductor in a white tie, waving his arms, which always\ndisturbed his enjoyment of music so much, or the ladies in bonnets, with\nstrings carefully tied over their ears, and all these people either\nthinking of nothing at all or thinking of all sorts of things except the\nmusic. He tried to avoid meeting musical connoisseurs or talkative\nacquaintances, and stood looking at the floor straight before him,\nlistening.\n\nBut the more he listened to the fantasia of King Lear the further he\nfelt from forming any definite opinion of it. There was, as it were, a\ncontinual beginning, a preparation of the musical expression of some\nfeeling, but it fell to pieces again directly, breaking into new musical\nmotives, or simply nothing but the whims of the composer, exceedingly\ncomplex but disconnected sounds. And these fragmentary musical\nexpressions, though sometimes beautiful, were disagreeable, because they\nwere utterly unexpected and not led up to by anything. Gaiety and grief\nand despair and tenderness and triumph followed one another without any\nconnection, like the emotions of a madman. And those emotions, like a\nmadman's, sprang up quite unexpectedly.\n\nDuring the whole of the performance Levin felt like a deaf man watching\npeople dancing, and was in a state of complete bewilderment when the\nfantasia was over, and felt a great weariness from the fruitless strain\non his attention. Loud applause resounded on all sides. Everyone got up,\nmoved about, and began talking. Anxious to throw some light on his own\nperplexity from the impressions of others, Levin began to walk about,\nlooking for connoisseurs, and was glad to see a well-known musical\namateur in conversation with Pestsov, whom he knew.\n\n\"Marvelous!\" Pestsov was saying in his mellow bass. \"How are you,\nKonstantin Dmitrievitch? Particularly sculpturesque and plastic, so to\nsay, and richly colored is that passage where you feel Cordelia's\napproach, where woman, _das ewig Weibliche,_ enters into conflict with\nfate. Isn't it?\"\n\n\"You mean ... what has Cordelia to do with it?\" Levin asked timidly,\nforgetting that the fantasia was supposed to represent King Lear.\n\n\"Cordelia comes in ... see here!\" said Pestsov, tapping his finger on\nthe satiny surface of the program he held in his hand and passing it to\nLevin.\n\nOnly then Levin recollected the title of the fantasia, and made haste to\nread in the Russian translation the lines from Shakespeare that were\nprinted on the back of the program.\n\n\"You can't follow it without that,\" said Pestsov, addressing Levin, as\nthe person he had been speaking to had gone away, and he had no one to\ntalk to.\n\nIn the _entr'acte_ Levin and Pestsov fell into an argument upon the\nmerits and defects of music of the Wagner school. Levin maintained that\nthe mistake of Wagner and all his followers lay in their trying to take\nmusic into the sphere of another art, just as poetry goes wrong when it\ntries to paint a face as the art of painting ought to do, and as an\ninstance of this mistake he cited the sculptor who carved in marble\ncertain poetic phantasms flitting round the figure of the poet on the\npedestal. \"These phantoms were so far from being phantoms that they were\npositively clinging on the ladder,\" said Levin. The comparison pleased\nhim, but he could not remember whether he had not used the same phrase\nbefore, and to Pestsov, too, and as he said it he felt confused.\n\nPestsov maintained that art is one, and that it can attain its highest\nmanifestations only by conjunction with all kinds of art.\n\nThe second piece that was performed Levin could not hear. Pestsov, who\nwas standing beside him, was talking to him almost all the time,\ncondemning the music for its excessive affected assumption of\nsimplicity, and comparing it with the simplicity of the Pre-Raphaelites\nin painting. As he went out Levin met many more acquaintances, with whom\nhe talked of politics, of music, and of common acquaintances. Among\nothers he met Count Bol, whom he had utterly forgotten to call upon.\n\n\"Well, go at once then,\" Madame Lvova said, when he told her; \"perhaps\nthey'll not be at home, and then you can come to the meeting to fetch\nme. You'll find me still there.\"\n\n\n\nChapter 6\n\n\n\"Perhaps they're not at home?\" said Levin, as he went into the hall of\nCountess Bola's house.\n\n\"At home; please walk in,\" said the porter, resolutely removing his\novercoat.\n\n\"How annoying!\" thought Levin with a sigh, taking off one glove and\nstroking his hat. \"What did I come for? What have I to say to them?\"\n\nAs he passed through the first drawing room Levin met in the doorway\nCountess Bola, giving some order to a servant with a care-worn and\nsevere face. On seeing Levin she smiled, and asked him to come into the\nlittle drawing room, where he heard voices. In this room there were\nsitting in armchairs the two daughters of the countess, and a Moscow\ncolonel, whom Levin knew. Levin went up, greeted them, and sat down\nbeside the sofa with his hat on his knees.\n\n\"How is your wife? Have you been at the concert? We couldn't go. Mamma\nhad to be at the funeral service.\"\n\n\"Yes, I heard.... What a sudden death!\" said Levin.\n\nThe countess came in, sat down on the sofa, and she too asked after his\nwife and inquired about the concert.\n\nLevin answered, and repeated an inquiry about Madame Apraksina's sudden\ndeath.\n\n\"But she was always in weak health.\"\n\n\"Were you at the opera yesterday?\"\n\n\"Yes, I was.\"\n\n\"Lucca was very good.\"\n\n\"Yes, very good,\" he said, and as it was utterly of no consequence to\nhim what they thought of him, he began repeating what they had heard a\nhundred times about the characteristics of the singer's talent. Countess\nBola pretended to be listening. Then, when he had said enough and\npaused, the colonel, who had been silent till then, began to talk. The\ncolonel too talked of the opera, and about culture. At last, after\nspeaking of the proposed _folle journee_ at Turin's, the colonel\nlaughed, got up noisily, and went away. Levin too rose, but he saw by\nthe face of the countess that it was not yet time for him to go. He must\nstay two minutes longer. He sat down.\n\nBut as he was thinking all the while how stupid it was, he could not\nfind a subject for conversation, and sat silent.\n\n\"You are not going to the public meeting? They say it will be very\ninteresting,\" began the countess.\n\n\"No, I promised my _belle-soeur_ to fetch her from it,\" said Levin.\n\nA silence followed. The mother once more exchanged glances with a\ndaughter.\n\n\"Well, now I think the time has come,\" thought Levin, and he got up. The\nladies shook hands with him, and begged him to say _mille choses_ to his\nwife for them.\n\nThe porter asked him, as he gave him his coat, \"Where is your honor\nstaying?\" and immediately wrote down his address in a big handsomely\nbound book.\n\n\"Of course I don't care, but still I feel ashamed and awfully stupid,\"\nthought Levin, consoling himself with the reflection that everyone does\nit. He drove to the public meeting, where he was to find his\nsister-in-law, so as to drive home with her.\n\nAt the public meeting of the committee there were a great many people,\nand almost all the highest society. Levin was in time for the report\nwhich, as everyone said, was very interesting. When the reading of the\nreport was over, people moved about, and Levin met Sviazhsky, who\ninvited him very pressingly to come that evening to a meeting of the\nSociety of Agriculture, where a celebrated lecture was to be delivered,\nand Stepan Arkadyevitch, who had only just come from the races, and many\nother acquaintances; and Levin heard and uttered various criticisms on\nthe meeting, on the new fantasia, and on a public trial. But, probably\nfrom the mental fatigue he was beginning to feel, he made a blunder in\nspeaking of the trial, and this blunder he recalled several times with\nvexation. Speaking of the sentence upon a foreigner who had been\ncondemned in Russia, and of how unfair it would be to punish him by\nexile abroad, Levin repeated what he had heard the day before in\nconversation from an acquaintance.\n\n\"I think sending him abroad is much the same as punishing a carp by\nputting it into the water,\" said Levin. Then he recollected that this\nidea, which he had heard from an acquaintance and uttered as his own,\ncame from a fable of Krilov's, and that the acquaintance had picked it\nup from a newspaper article.\n\nAfter driving home with his sister-in-law, and finding Kitty in good\nspirits and quite well, Levin drove to the club.\n\n\n\nChapter 7\n\n\nLevin reached the club just at the right time. Members and visitors were\ndriving up as he arrived. Levin had not been at the club for a very long\nwhile--not since he lived in Moscow, when he was leaving the university\nand going into society. He remembered the club, the external details of\nits arrangement, but he had completely forgotten the impression it had\nmade on him in old days. But as soon as, driving into the wide\nsemicircular court and getting out of the sledge, he mounted the steps,\nand the hall porter, adorned with a crossway scarf, noiselessly opened\nthe door to him with a bow; as soon as he saw in the porter's room the\ncloaks and galoshes of members who thought it less trouble to take them\noff downstairs; as soon as he heard the mysterious ringing bell that\npreceded him as he ascended the easy, carpeted staircase, and saw the\nstatue on the landing, and the third porter at the top doors, a familiar\nfigure grown older, in the club livery, opening the door without haste\nor delay, and scanning the visitors as they passed in--Levin felt the\nold impression of the club come back in a rush, an impression of repose,\ncomfort, and propriety.\n\n\"Your hat, please,\" the porter said to Levin, who forgot the club rule\nto leave his hat in the porter's room. \"Long time since you've been. The\nprince put your name down yesterday. Prince Stepan Arkadyevitch is not\nhere yet.\"\n\nThe porter did not only know Levin, but also all his ties and\nrelationships, and so immediately mentioned his intimate friends.\n\nPassing through the outer hall, divided up by screens, and the room\npartitioned on the right, where a man sits at the fruit buffet, Levin\novertook an old man walking slowly in, and entered the dining room full\nof noise and people.\n\nHe walked along the tables, almost all full, and looked at the visitors.\nHe saw people of all sorts, old and young; some he knew a little, some\nintimate friends. There was not a single cross or worried-looking face.\nAll seemed to have left their cares and anxieties in the porter's room\nwith their hats, and were all deliberately getting ready to enjoy the\nmaterial blessings of life. Sviazhsky was here and Shtcherbatsky,\nNevyedovsky and the old prince, and Vronsky and Sergey Ivanovitch.\n\n\"Ah! why are you late?\" the prince said smiling, and giving him his hand\nover his own shoulder. \"How's Kitty?\" he added, smoothing out the napkin\nhe had tucked in at his waistcoat buttons.\n\n\"All right; they are dining at home, all the three of them.\"\n\n\"Ah, 'Aline-Nadine,' to be sure! There's no room with us. Go to that\ntable, and make haste and take a seat,\" said the prince, and turning\naway he carefully took a plate of eel soup.\n\n\"Levin, this way!\" a good-natured voice shouted a little farther on. It\nwas Turovtsin. He was sitting with a young officer, and beside them were\ntwo chairs turned upside down. Levin gladly went up to them. He had\nalways liked the good-hearted rake, Turovtsin--he was associated in his\nmind with memories of his courtship--and at that moment, after the\nstrain of intellectual conversation, the sight of Turovtsin's\ngood-natured face was particularly welcome.\n\n\"For you and Oblonsky. He'll be here directly.\"\n\nThe young man, holding himself very erect, with eyes forever twinkling\nwith enjoyment, was an officer from Petersburg, Gagin. Turovtsin\nintroduced them.\n\n\"Oblonsky's always late.\"\n\n\"Ah, here he is!\"\n\n\"Have you only just come?\" said Oblonsky, coming quickly towards them.\n\"Good day. Had some vodka? Well, come along then.\"\n\nLevin got up and went with him to the big table spread with spirits and\nappetizers of the most various kinds. One would have thought that out of\ntwo dozen delicacies one might find something to one's taste, but Stepan\nArkadyevitch asked for something special, and one of the liveried\nwaiters standing by immediately brought what was required. They drank a\nwine glassful and returned to their table.\n\nAt once, while they were still at the soup, Gagin was served with\nchampagne, and told the waiter to fill four glasses. Levin did not\nrefuse the wine, and asked for a second bottle. He was very hungry, and\nate and drank with great enjoyment, and with still greater enjoyment\ntook part in the lively and simple conversation of his companions.\nGagin, dropping his voice, told the last good story from Petersburg, and\nthe story, though improper and stupid, was so ludicrous that Levin broke\ninto roars of laughter so loud that those near looked round.\n\n\"That's in the same style as, 'that's a thing I can't endure!' You know\nthe story?\" said Stepan Arkadyevitch. \"Ah, that's exquisite! Another\nbottle,\" he said to the waiter, and he began to relate his good story.\n\n\"Pyotr Illyitch Vinovsky invites you to drink with him,\" a little old\nwaiter interrupted Stepan Arkadyevitch, bringing two delicate glasses of\nsparkling champagne, and addressing Stepan Arkadyevitch and Levin.\nStepan Arkadyevitch took the glass, and looking towards a bald man with\nred mustaches at the other end of the table, he nodded to him, smiling.\n\n\"Who's that?\" asked Levin.\n\n\"You met him once at my place, don't you remember? A good-natured\nfellow.\"\n\nLevin did the same as Stepan Arkadyevitch and took the glass.\n\nStepan Arkadyevitch's anecdote too was very amusing. Levin told his\nstory, and that too was successful. Then they talked of horses, of the\nraces, of what they had been doing that day, and of how smartly\nVronsky's Atlas had won the first prize. Levin did not notice how the\ntime passed at dinner.\n\n\"Ah! and here they are!\" Stepan Arkadyevitch said towards the end of\ndinner, leaning over the back of his chair and holding out his hand to\nVronsky, who came up with a tall officer of the Guards. Vronsky's face\ntoo beamed with the look of good-humored enjoyment that was general in\nthe club. He propped his elbow playfully on Stepan Arkadyevitch's\nshoulder, whispering something to him, and he held out his hand to Levin\nwith the same good-humored smile.\n\n\"Very glad to meet you,\" he said. \"I looked out for you at the election,\nbut I was told you had gone away.\"\n\n\"Yes, I left the same day. We've just been talking of your horse. I\ncongratulate you,\" said Levin. \"It was very rapidly run.\"\n\n\"Yes; you've race horses too, haven't you?\"\n\n\"No, my father had; but I remember and know something about it.\"\n\n\"Where have you dined?\" asked Stepan Arkadyevitch.\n\n\"We were at the second table, behind the columns.\"\n\n\"We've been celebrating his success,\" said the tall colonel. \"It's his\nsecond Imperial prize. I wish I might have the luck at cards he has with\nhorses. Well, why waste the precious time? I'm going to the 'infernal\nregions,'\" added the colonel, and he walked away.\n\n\"That's Yashvin,\" Vronsky said in answer to Turovtsin, and he sat down\nin the vacated seat beside them. He drank the glass offered him, and\nordered a bottle of wine. Under the influence of the club atmosphere or\nthe wine he had drunk, Levin chatted away to Vronsky of the best breeds\nof cattle, and was very glad not to feel the slightest hostility to this\nman. He even told him, among other things, that he had heard from his\nwife that she had met him at Princess Marya Borissovna's.\n\n\"Ah, Princess Marya Borissovna, she's exquisite!\" said Stepan\nArkadyevitch, and he told an anecdote about her which set them all\nlaughing. Vronsky particularly laughed with such simplehearted amusement\nthat Levin felt quite reconciled to him.\n\n\"Well, have we finished?\" said Stepan Arkadyevitch, getting up with a\nsmile. \"Let us go.\"\n\n\n\nChapter 8\n\n\nGetting up from the table, Levin walked with Gagin through the lofty\nroom to the billiard room, feeling his arms swing as he walked with a\npeculiar lightness and ease. As he crossed the big room, he came upon\nhis father-in-law.\n\n\"Well, how do you like our Temple of Indolence?\" said the prince, taking\nhis arm. \"Come along, come along!\"\n\n\"Yes, I wanted to walk about and look at everything. It's interesting.\"\n\n\"Yes, it's interesting for you. But its interest for me is quite\ndifferent. You look at those little old men now,\" he said, pointing to a\nclub member with bent back and projecting lip, shuffling towards them in\nhis soft boots, \"and imagine that they were _shlupiks_ like that from\ntheir birth up.\"\n\n\"How _shlupiks_?\"\n\n\"I see you don't know that name. That's our club designation. You know\nthe game of rolling eggs: when one's rolled a long while it becomes a\n_shlupik_. So it is with us; one goes on coming and coming to the club,\nand ends by becoming a _shlupik_. Ah, you laugh! but we look out, for\nfear of dropping into it ourselves. You know Prince Tchetchensky?\"\ninquired the prince; and Levin saw by his face that he was just going to\nrelate something funny.\n\n\"No, I don't know him.\"\n\n\"You don't say so! Well, Prince Tchetchensky is a well-known figure. No\nmatter, though. He's always playing billiards here. Only three years ago\nhe was not a _shlupik_ and kept up his spirits and even used to call\nother people _shlupiks_. But one day he turns up, and our porter ... you\nknow Vassily? Why, that fat one; he's famous for his _bon mots_. And so\nPrince Tchetchensky asks him, 'Come, Vassily, who's here? Any _shlupiks_\nhere yet?' And he says, 'You're the third.' Yes, my dear boy, that he\ndid!\"\n\nTalking and greeting the friends they met, Levin and the prince walked\nthrough all the rooms: the great room where tables had already been set,\nand the usual partners were playing for small stakes; the divan room,\nwhere they were playing chess, and Sergey Ivanovitch was sitting talking\nto somebody; the billiard room, where, about a sofa in a recess, there\nwas a lively party drinking champagne--Gagin was one of them. They\npeeped into the \"infernal regions,\" where a good many men were crowding\nround one table, at which Yashvin was sitting. Trying not to make a\nnoise, they walked into the dark reading room, where under the shaded\nlamps there sat a young man with a wrathful countenance, turning over\none journal after another, and a bald general buried in a book. They\nwent, too, into what the prince called the intellectual room, where\nthree gentlemen were engaged in a heated discussion of the latest\npolitical news.\n\n\"Prince, please come, we're ready,\" said one of his card party, who had\ncome to look for him, and the prince went off. Levin sat down and\nlistened, but recalling all the conversation of the morning he felt all\nof a sudden fearfully bored. He got up hurriedly, and went to look for\nOblonsky and Turovtsin, with whom it had been so pleasant.\n\nTurovtsin was one of the circle drinking in the billiard room, and\nStepan Arkadyevitch was talking with Vronsky near the door at the\nfarther corner of the room.\n\n\"It's not that she's dull; but this undefined, this unsettled position,\"\nLevin caught, and he was hurrying away, but Stepan Arkadyevitch called\nto him.\n\n\"Levin,\" said Stepan Arkadyevitch, and Levin noticed that his eyes were\nnot full of tears exactly, but moist, which always happened when he had\nbeen drinking, or when he was touched. Just now it was due to both\ncauses. \"Levin, don't go,\" he said, and he warmly squeezed his arm above\nthe elbow, obviously not at all wishing to let him go.\n\n\"This is a true friend of mine--almost my greatest friend,\" he said to\nVronsky. \"You have become even closer and dearer to me. And I want you,\nand I know you ought, to be friends, and great friends, because you're\nboth splendid fellows.\"\n\n\"Well, there's nothing for us now but to kiss and be friends,\" Vronsky\nsaid, with good-natured playfulness, holding out his hand.\n\nLevin quickly took the offered hand, and pressed it warmly.\n\n\"I'm very, very glad,\" said Levin.\n\n\"Waiter, a bottle of champagne,\" said Stepan Arkadyevitch.\n\n\"And I'm very glad,\" said Vronsky.\n\nBut in spite of Stepan Arkadyevitch's desire, and their own desire, they\nhad nothing to talk about, and both felt it.\n\n\"Do you know, he has never met Anna?\" Stepan Arkadyevitch said to\nVronsky. \"And I want above everything to take him to see her. Let us go,\nLevin!\"\n\n\"Really?\" said Vronsky. \"She will be very glad to see you. I should be\ngoing home at once,\" he added, \"but I'm worried about Yashvin, and I\nwant to stay on till he finishes.\"\n\n\"Why, is he losing?\"\n\n\"He keeps losing, and I'm the only friend that can restrain him.\"\n\n\"Well, what do you say to pyramids? Levin, will you play? Capital!\" said\nStepan Arkadyevitch. \"Get the table ready,\" he said to the marker.\n\n\"It has been ready a long while,\" answered the marker, who had already\nset the balls in a triangle, and was knocking the red one about for his\nown diversion.\n\n\"Well, let us begin.\"\n\nAfter the game Vronsky and Levin sat down at Gagin's table, and at\nStepan Arkadyevitch's suggestion Levin took a hand in the game.\n\nVronsky sat down at the table, surrounded by friends, who were\nincessantly coming up to him. Every now and then he went to the\n\"infernal\" to keep an eye on Yashvin. Levin was enjoying a delightful\nsense of repose after the mental fatigue of the morning. He was glad\nthat all hostility was at an end with Vronsky, and the sense of peace,\ndecorum, and comfort never left him.\n\nWhen the game was over, Stepan Arkadyevitch took Levin's arm.\n\n\"Well, let us go to Anna's, then. At once? Eh? She is at home. I\npromised her long ago to bring you. Where were you meaning to spend the\nevening?\"\n\n\"Oh, nowhere specially. I promised Sviazhsky to go to the Society of\nAgriculture. By all means, let us go,\" said Levin.\n\n\"Very good; come along. Find out if my carriage is here,\" Stepan\nArkadyevitch said to the waiter.\n\nLevin went up to the table, paid the forty roubles he had lost; paid his\nbill, the amount of which was in some mysterious way ascertained by the\nlittle old waiter who stood at the counter, and swinging his arms he\nwalked through all the rooms to the way out.\n\n\n\nChapter 9\n\n\n\"Oblonsky's carriage!\" the porter shouted in an angry bass. The carriage\ndrove up and both got in. It was only for the first few moments, while\nthe carriage was driving out of the clubhouse gates, that Levin was\nstill under the influence of the club atmosphere of repose, comfort, and\nunimpeachable good form. But as soon as the carriage drove out into the\nstreet, and he felt it jolting over the uneven road, heard the angry\nshout of a sledge driver coming towards them, saw in the uncertain light\nthe red blind of a tavern and the shops, this impression was dissipated,\nand he began to think over his actions, and to wonder whether he was\ndoing right in going to see Anna. What would Kitty say? But Stepan\nArkadyevitch gave him no time for reflection, and, as though divining\nhis doubts, he scattered them.\n\n\"How glad I am,\" he said, \"that you should know her! You know Dolly has\nlong wished for it. And Lvov's been to see her, and often goes. Though\nshe is my sister,\" Stepan Arkadyevitch pursued, \"I don't hesitate to say\nthat she's a remarkable woman. But you will see. Her position is very\npainful, especially now.\"\n\n\"Why especially now?\"\n\n\"We are carrying on negotiations with her husband about a divorce. And\nhe's agreed; but there are difficulties in regard to the son, and the\nbusiness, which ought to have been arranged long ago, has been dragging\non for three months past. As soon as the divorce is over, she will marry\nVronsky. How stupid these old ceremonies are, that no one believes in,\nand which only prevent people being comfortable!\" Stepan Arkadyevitch\nput in. \"Well, then their position will be as regular as mine, as\nyours.\"\n\n\"What is the difficulty?\" said Levin.\n\n\"Oh, it's a long and tedious story! The whole business is in such an\nanomalous position with us. But the point is she has been for three\nmonths in Moscow, where everyone knows her, waiting for the divorce; she\ngoes out nowhere, sees no woman except Dolly, because, do you\nunderstand, she doesn't care to have people come as a favor. That fool\nPrincess Varvara, even she has left her, considering this a breach of\npropriety. Well, you see, in such a position any other woman would not\nhave found resources in herself. But you'll see how she has arranged her\nlife--how calm, how dignified she is. To the left, in the crescent\nopposite the church!\" shouted Stepan Arkadyevitch, leaning out of the\nwindow. \"Phew! how hot it is!\" he said, in spite of twelve degrees of\nfrost, flinging his open overcoat still wider open.\n\n\"But she has a daughter: no doubt she's busy looking after her?\" said\nLevin.\n\n\"I believe you picture every woman simply as a female, _une couveuse,_\"\nsaid Stepan Arkadyevitch. \"If she's occupied, it must be with her\nchildren. No, she brings her up capitally, I believe, but one doesn't\nhear about her. She's busy, in the first place, with what she writes. I\nsee you're smiling ironically, but you're wrong. She's writing a\nchildren's book, and doesn't talk about it to anyone, but she read it to\nme and I gave the manuscript to Vorkuev ... you know the publisher ...\nand he's an author himself too, I fancy. He understands those things,\nand he says it's a remarkable piece of work. But are you fancying she's\nan authoress?--not a bit of it. She's a woman with a heart, before\neverything, but you'll see. Now she has a little English girl with her,\nand a whole family she's looking after.\"\n\n\"Oh, something in a philanthropic way?\"\n\n\"Why, you will look at everything in the worst light. It's not from\nphilanthropy, it's from the heart. They--that is, Vronsky--had a\ntrainer, an Englishman, first-rate in his own line, but a drunkard. He's\ncompletely given up to drink--delirium tremens--and the family were cast\non the world. She saw them, helped them, got more and more interested in\nthem, and now the whole family is on her hands. But not by way of\npatronage, you know, helping with money; she's herself preparing the\nboys in Russian for the high school, and she's taken the little girl to\nlive with her. But you'll see her for yourself.\"\n\nThe carriage drove into the courtyard, and Stepan Arkadyevitch rang\nloudly at the entrance where sledges were standing.\n\nAnd without asking the servant who opened the door whether the lady were\nat home, Stepan Arkadyevitch walked into the hall. Levin followed him,\nmore and more doubtful whether he was doing right or wrong.\n\nLooking at himself in the glass, Levin noticed that he was red in the\nface, but he felt certain he was not drunk, and he followed Stepan\nArkadyevitch up the carpeted stairs. At the top Stepan Arkadyevitch\ninquired of the footman, who bowed to him as to an intimate friend, who\nwas with Anna Arkadyevna, and received the answer that it was M.\nVorkuev.\n\n\"Where are they?\"\n\n\"In the study.\"\n\nPassing through the dining room, a room not very large, with dark,\npaneled walls, Stepan Arkadyevitch and Levin walked over the soft carpet\nto the half-dark study, lighted up by a single lamp with a big dark\nshade. Another lamp with a reflector was hanging on the wall, lighting\nup a big full-length portrait of a woman, which Levin could not help\nlooking at. It was the portrait of Anna, painted in Italy by Mihailov.\nWhile Stepan Arkadyevitch went behind the _treillage_, and the man's\nvoice which had been speaking paused, Levin gazed at the portrait, which\nstood out from the frame in the brilliant light thrown on it, and he\ncould not tear himself away from it. He positively forgot where he was,\nand not even hearing what was said, he could not take his eyes off the\nmarvelous portrait. It was not a picture, but a living, charming woman,\nwith black curling hair, with bare arms and shoulders, with a pensive\nsmile on the lips, covered with soft down; triumphantly and softly she\nlooked at him with eyes that baffled him. She was not living only\nbecause she was more beautiful than a living woman can be.\n\n\"I am delighted!\" He heard suddenly near him a voice, unmistakably\naddressing him, the voice of the very woman he had been admiring in the\nportrait. Anna had come from behind the treillage to meet him, and Levin\nsaw in the dim light of the study the very woman of the portrait, in a\ndark blue shot gown, not in the same position nor with the same\nexpression, but with the same perfection of beauty which the artist had\ncaught in the portrait. She was less dazzling in reality, but, on the\nother hand, there was something fresh and seductive in the living woman\nwhich was not in the portrait.\n\n\n\nChapter 10\n\n\nShe had risen to meet him, not concealing her pleasure at seeing him;\nand in the quiet ease with which she held out her little vigorous hand,\nintroduced him to Vorkuev and indicated a red-haired, pretty little girl\nwho was sitting at work, calling her her pupil, Levin recognized and\nliked the manners of a woman of the great world, always self-possessed\nand natural.\n\n\"I am delighted, delighted,\" she repeated, and on her lips these simple\nwords took for Levin's ears a special significance. \"I have known you\nand liked you for a long while, both from your friendship with Stiva and\nfor your wife's sake.... I knew her for a very short time, but she left\non me the impression of an exquisite flower, simply a flower. And to\nthink she will soon be a mother!\"\n\nShe spoke easily and without haste, looking now and then from Levin to\nher brother, and Levin felt that the impression he was making was good,\nand he felt immediately at home, simple and happy with her, as though he\nhad known her from childhood.\n\n\"Ivan Petrovitch and I settled in Alexey's study,\" she said in answer to\nStepan Arkadyevitch's question whether he might smoke, \"just so as to be\nable to smoke\"--and glancing at Levin, instead of asking whether he\nwould smoke, she pulled closer a tortoise-shell cigar-case and took a\ncigarette.\n\n\"How are you feeling today?\" her brother asked her.\n\n\"Oh, nothing. Nerves, as usual.\"\n\n\"Yes, isn't it extraordinarily fine?\" said Stepan Arkadyevitch, noticing\nthat Levin was scrutinizing the picture.\n\n\"I have never seen a better portrait.\"\n\n\"And extraordinarily like, isn't it?\" said Vorkuev.\n\nLevin looked from the portrait to the original. A peculiar brilliance\nlighted up Anna's face when she felt his eyes on her. Levin flushed, and\nto cover his confusion would have asked whether she had seen Darya\nAlexandrovna lately; but at that moment Anna spoke. \"We were just\ntalking, Ivan Petrovitch and I, of Vashtchenkov's last pictures. Have\nyou seen them?\"\n\n\"Yes, I have seen them,\" answered Levin.\n\n\"But, I beg your pardon, I interrupted you ... you were saying?...\"\n\nLevin asked if she had seen Dolly lately.\n\n\"She was here yesterday. She was very indignant with the high school\npeople on Grisha's account. The Latin teacher, it seems, had been unfair\nto him.\"\n\n\"Yes, I have seen his pictures. I didn't care for them very much,\" Levin\nwent back to the subject she had started.\n\nLevin talked now not at all with that purely businesslike attitude to\nthe subject with which he had been talking all the morning. Every word\nin his conversation with her had a special significance. And talking to\nher was pleasant; still pleasanter it was to listen to her.\n\nAnna talked not merely naturally and cleverly, but cleverly and\ncarelessly, attaching no value to her own ideas and giving great weight\nto the ideas of the person she was talking to.\n\nThe conversation turned on the new movement in art, on the new\nillustrations of the Bible by a French artist. Vorkuev attacked the\nartist for a realism carried to the point of coarseness.\n\nLevin said that the French had carried conventionality further than\nanyone, and that consequently they see a great merit in the return to\nrealism. In the fact of not lying they see poetry.\n\nNever had anything clever said by Levin given him so much pleasure as\nthis remark. Anna's face lighted up at once, as at once she appreciated\nthe thought. She laughed.\n\n\"I laugh,\" she said, \"as one laughs when one sees a very true portrait.\nWhat you said so perfectly hits off French art now, painting and\nliterature too, indeed--Zola, Daudet. But perhaps it is always so, that\nmen form their conceptions from fictitious, conventional types, and\nthen--all the _combinaisons_ made--they are tired of the fictitious\nfigures and begin to invent more natural, true figures.\"\n\n\"That's perfectly true,\" said Vorknev.\n\n\"So you've been at the club?\" she said to her brother.\n\n\"Yes, yes, this is a woman!\" Levin thought, forgetting himself and\nstaring persistently at her lovely, mobile face, which at that moment\nwas all at once completely transformed. Levin did not hear what she was\ntalking of as she leaned over to her brother, but he was struck by the\nchange of her expression. Her face--so handsome a moment before in its\nrepose--suddenly wore a look of strange curiosity, anger, and pride. But\nthis lasted only an instant. She dropped her eyelids, as though\nrecollecting something.\n\n\"Oh, well, but that's of no interest to anyone,\" she said, and she\nturned to the English girl.\n\n\"Please order the tea in the drawing room,\" she said in English.\n\nThe girl got up and went out.\n\n\"Well, how did she get through her examination?\" asked Stepan\nArkadyevitch.\n\n\"Splendidly! She's a very gifted child and a sweet character.\"\n\n\"It will end in your loving her more than your own.\"\n\n\"There a man speaks. In love there's no more nor less. I love my\ndaughter with one love, and her with another.\"\n\n\"I was just telling Anna Arkadyevna,\" said Vorkuev, \"that if she were to\nput a hundredth part of the energy she devotes to this English girl to\nthe public question of the education of Russian children, she would be\ndoing a great and useful work.\"\n\n\"Yes, but I can't help it; I couldn't do it. Count Alexey Kirillovitch\nurged me very much\" (as she uttered the words _Count Alexey\nKirillovitch_ she glanced with appealing timidity at Levin, and he\nunconsciously responded with a respectful and reassuring look); \"he\nurged me to take up the school in the village. I visited it several\ntimes. The children were very nice, but I could not feel drawn to the\nwork. You speak of energy. Energy rests upon love; and come as it will,\nthere's no forcing it. I took to this child--I could not myself say\nwhy.\"\n\nAnd she glanced again at Levin. And her smile and her glance--all told\nhim that it was to him only she was addressing her words, valuing his\ngood opinion, and at the same time sure beforehand that they understood\neach other.\n\n\"I quite understand that,\" Levin answered. \"It's impossible to give\none's heart to a school or such institutions in general, and I believe\nthat's just why philanthropic institutions always give such poor\nresults.\"\n\nShe was silent for a while, then she smiled.\n\n\"Yes, yes,\" she agreed; \"I never could. _Je n'ai pas le coeur assez_\nlarge to love a whole asylum of horrid little girls. _Cela ne m'a jamais\nreussi._ There are so many women who have made themselves _une position\nsociale_ in that way. And now more than ever,\" she said with a mournful,\nconfiding expression, ostensibly addressing her brother, but\nunmistakably intending her words only for Levin, \"now when I have such\nneed of some occupation, I cannot.\" And suddenly frowning (Levin saw\nthat she was frowning at herself for talking about herself) she changed\nthe subject. \"I know about you,\" she said to Levin; \"that you're not a\npublic-spirited citizen, and I have defended you to the best of my\nability.\"\n\n\"How have you defended me?\"\n\n\"Oh, according to the attacks made on you. But won't you have some tea?\"\nShe rose and took up a book bound in morocco.\n\n\"Give it to me, Anna Arkadyevna,\" said Vorkuev, indicating the book.\n\"It's well worth taking up.\"\n\n\"Oh, no, it's all so sketchy.\"\n\n\"I told him about it,\" Stepan Arkadyevitch said to his sister, nodding\nat Levin.\n\n\"You shouldn't have. My writing is something after the fashion of those\nlittle baskets and carving which Liza Mertsalova used to sell me from\nthe prisons. She had the direction of the prison department in that\nsociety,\" she turned to Levin; \"and they were miracles of patience, the\nwork of those poor wretches.\"\n\nAnd Levin saw a new trait in this woman, who attracted him so\nextraordinarily. Besides wit, grace, and beauty, she had truth. She had\nno wish to hide from him all the bitterness of her position. As she said\nthat she sighed, and her face suddenly taking a hard expression, looked\nas it were turned to stone. With that expression on her face she was\nmore beautiful than ever; but the expression was new; it was utterly\nunlike that expression, radiant with happiness and creating happiness,\nwhich had been caught by the painter in her portrait. Levin looked more\nthan once at the portrait and at her figure, as taking her brother's arm\nshe walked with him to the high doors and he felt for her a tenderness\nand pity at which he wondered himself.\n\nShe asked Levin and Vorkuev to go into the drawing room, while she\nstayed behind to say a few words to her brother. \"About her divorce,\nabout Vronsky, and what he's doing at the club, about me?\" wondered\nLevin. And he was so keenly interested by the question of what she was\nsaying to Stepan Arkadyevitch, that he scarcely heard what Vorkuev was\ntelling him of the qualities of the story for children Anna Arkadyevna\nhad written.\n\nAt tea the same pleasant sort of talk, full of interesting matter,\ncontinued. There was not a single instant when a subject for\nconversation was to seek; on the contrary, it was felt that one had\nhardly time to say what one had to say, and eagerly held back to hear\nwhat the others were saying. And all that was said, not only by her, but\nby Vorkuev and Stepan Arkadyevitch--all, so it seemed to Levin, gained\npeculiar significance from her appreciation and her criticism. While he\nfollowed this interesting conversation, Levin was all the time admiring\nher--her beauty, her intelligence, her culture, and at the same time her\ndirectness and genuine depth of feeling. He listened and talked, and all\nthe while he was thinking of her inner life, trying to divine her\nfeelings. And though he had judged her so severely hitherto, now by some\nstrange chain of reasoning he was justifying her and was also sorry for\nher, and afraid that Vronsky did not fully understand her. At eleven\no'clock, when Stepan Arkadyevitch got up to go (Vorkuev had left\nearlier), it seemed to Levin that he had only just come. Regretfully\nLevin too rose.\n\n\"Good-bye,\" she said, holding his hand and glancing into his face with a\nwinning look. \"I am very glad _que la glace est rompue._\"\n\nShe dropped his hand, and half closed her eyes.\n\n\"Tell your wife that I love her as before, and that if she cannot pardon\nme my position, then my wish for her is that she may never pardon it. To\npardon it, one must go through what I have gone through, and may God\nspare her that.\"\n\n\"Certainly, yes, I will tell her...\" Levin said, blushing.\n\n\n\nChapter 11\n\n\n\"What a marvelous, sweet and unhappy woman!\" he was thinking, as he\nstepped out into the frosty air with Stepan Arkadyevitch.\n\n\"Well, didn't I tell you?\" said Stepan Arkadyevitch, seeing that Levin\nhad been completely won over.\n\n\"Yes,\" said Levin dreamily, \"an extraordinary woman! It's not her\ncleverness, but she has such wonderful depth of feeling. I'm awfully\nsorry for her!\"\n\n\"Now, please God, everything will soon be settled. Well, well, don't be\nhard on people in future,\" said Stepan Arkadyevitch, opening the\ncarriage door. \"Good-bye; we don't go the same way.\"\n\nStill thinking of Anna, of everything, even the simplest phrase in their\nconversation with her, and recalling the minutest changes in her\nexpression, entering more and more into her position, and feeling\nsympathy for her, Levin reached home.\n\nAt home Kouzma told Levin that Katerina Alexandrovna was quite well, and\nthat her sisters had not long been gone, and he handed him two letters.\nLevin read them at once in the hall, that he might not over look them\nlater. One was from Sokolov, his bailiff. Sokolov wrote that the corn\ncould not be sold, that it was fetching only five and a half roubles,\nand that more than that could not be got for it. The other letter was\nfrom his sister. She scolded him for her business being still unsettled.\n\n\"Well, we must sell it at five and a half if we can't get more,\" Levin\ndecided the first question, which had always before seemed such a\nweighty one, with extraordinary facility on the spot. \"It's\nextraordinary how all one's time is taken up here,\" he thought,\nconsidering the second letter. He felt himself to blame for not having\ngot done what his sister had asked him to do for her. \"Today, again,\nI've not been to the court, but today I've certainly not had time.\" And\nresolving that he would not fail to do it next day, he went up to his\nwife. As he went in, Levin rapidly ran through mentally the day he had\nspent. All the events of the day were conversations, conversations he\nhad heard and taken part in. All the conversations were upon subjects\nwhich, if he had been alone at home, he would never have taken up, but\nhere they were very interesting. And all these conversations were right\nenough, only in two places there was something not quite right. One was\nwhat he had said about the carp, the other was something not \"quite the\nthing\" in the tender sympathy he was feeling for Anna.\n\nLevin found his wife low-spirited and dull. The dinner of the three\nsisters had gone off very well, but then they had waited and waited for\nhim, all of them had felt dull, the sisters had departed, and she had\nbeen left alone.\n\n\"Well, and what have you been doing?\" she asked him, looking straight\ninto his eyes, which shone with rather a suspicious brightness. But that\nshe might not prevent his telling her everything, she concealed her\nclose scrutiny of him, and with an approving smile listened to his\naccount of how he had spent the evening.\n\n\"Well, I'm very glad I met Vronsky. I felt quite at ease and natural\nwith him. You understand, I shall try not to see him, but I'm glad that\nthis awkwardness is all over,\" he said, and remembering that by way of\ntrying not to see him, he had immediately gone to call on Anna, he\nblushed. \"We talk about the peasants drinking; I don't know which drinks\nmost, the peasantry or our own class; the peasants do on holidays,\nbut...\"\n\nBut Kitty took not the slightest interest in discussing the drinking\nhabits of the peasants. She saw that he blushed, and she wanted to know\nwhy.\n\n\"Well, and then where did you go?\"\n\n\"Stiva urged me awfully to go and see Anna Arkadyevna.\"\n\nAnd as he said this, Levin blushed even more, and his doubts as to\nwhether he had done right in going to see Anna were settled once for\nall. He knew now that he ought not to have done so.\n\nKitty's eyes opened in a curious way and gleamed at Anna's name, but\ncontrolling herself with an effort, she concealed her emotion and\ndeceived him.\n\n\"Oh!\" was all she said.\n\n\"I'm sure you won't be angry at my going. Stiva begged me to, and Dolly\nwished it,\" Levin went on.\n\n\"Oh, no!\" she said, but he saw in her eyes a constraint that boded him\nno good.\n\n\"She is a very sweet, very, very unhappy, good woman,\" he said, telling\nher about Anna, her occupations, and what she had told him to say to\nher.\n\n\"Yes, of course, she is very much to be pitied,\" said Kitty, when he had\nfinished. \"Whom was your letter from?\"\n\nHe told her, and believing in her calm tone, he went to change his coat.\n\nComing back, he found Kitty in the same easy chair. When he went up to\nher, she glanced at him and broke into sobs.\n\n\"What? what is it?\" he asked, knowing beforehand what.\n\n\"You're in love with that hateful woman; she has bewitched you! I saw it\nin your eyes. Yes, yes! What can it all lead to? You were drinking at\nthe club, drinking and gambling, and then you went ... to her of all\npeople! No, we must go away.... I shall go away tomorrow.\"\n\nIt was a long while before Levin could soothe his wife. At last he\nsucceeded in calming her, only by confessing that a feeling of pity, in\nconjunction with the wine he had drunk, had been too much for him, that\nhe had succumbed to Anna's artful influence, and that he would avoid\nher. One thing he did with more sincerity confess to was that living so\nlong in Moscow, a life of nothing but conversation, eating and drinking,\nhe was degenerating. They talked till three o'clock in the morning. Only\nat three o'clock were they sufficiently reconciled to be able to go to\nsleep.\n\n\n\nChapter 12\n\n\nAfter taking leave of her guests, Anna did not sit down, but began\nwalking up and down the room. She had unconsciously the whole evening\ndone her utmost to arouse in Levin a feeling of love--as of late she had\nfallen into doing with all young men--and she knew she had attained her\naim, as far as was possible in one evening, with a married and\nconscientious man. She liked him indeed extremely, and, in spite of the\nstriking difference, from the masculine point of view, between Vronsky\nand Levin, as a woman she saw something they had in common, which had\nmade Kitty able to love both. Yet as soon as he was out of the room, she\nceased to think of him.\n\nOne thought, and one only, pursued her in different forms, and refused\nto be shaken off. \"If I have so much effect on others, on this man, who\nloves his home and his wife, why is it _he_ is so cold to me?... not\ncold exactly, he loves me, I know that! But something new is drawing us\napart now. Why wasn't he here all the evening? He told Stiva to say he\ncould not leave Yashvin, and must watch over his play. Is Yashvin a\nchild? But supposing it's true. He never tells a lie. But there's\nsomething else in it if it's true. He is glad of an opportunity of\nshowing me that he has other duties; I know that, I submit to that. But\nwhy prove that to me? He wants to show me that his love for me is not to\ninterfere with his freedom. But I need no proofs, I need love. He ought\nto understand all the bitterness of this life for me here in Moscow. Is\nthis life? I am not living, but waiting for an event, which is\ncontinually put off and put off. No answer again! And Stiva says he\ncannot go to Alexey Alexandrovitch. And I can't write again. I can do\nnothing, can begin nothing, can alter nothing; I hold myself in, I wait,\ninventing amusements for myself--the English family, writing,\nreading--but it's all nothing but a sham, it's all the same as morphine.\nHe ought to feel for me,\" she said, feeling tears of self-pity coming\ninto her eyes.\n\nShe heard Vronsky's abrupt ring and hurriedly dried her tears--not only\ndried her tears, but sat down by a lamp and opened a book, affecting\ncomposure. She wanted to show him that she was displeased that he had\nnot come home as he had promised--displeased only, and not on any\naccount to let him see her distress, and least of all, her self-pity.\nShe might pity herself, but he must not pity her. She did not want\nstrife, she blamed him for wanting to quarrel, but unconsciously put\nherself into an attitude of antagonism.\n\n\"Well, you've not been dull?\" he said, eagerly and good-humoredly, going\nup to her. \"What a terrible passion it is--gambling!\"\n\n\"No, I've not been dull; I've learned long ago not to be dull. Stiva has\nbeen here and Levin.\"\n\n\"Yes, they meant to come and see you. Well, how did you like Levin?\" he\nsaid, sitting down beside her.\n\n\"Very much. They have not long been gone. What was Yashvin doing?\"\n\n\"He was winning--seventeen thousand. I got him away. He had really\nstarted home, but he went back again, and now he's losing.\"\n\n\"Then what did you stay for?\" she asked, suddenly lifting her eyes to\nhim. The expression of her face was cold and ungracious. \"You told Stiva\nyou were staying on to get Yashvin away. And you have left him there.\"\n\nThe same expression of cold readiness for the conflict appeared on his\nface too.\n\n\"In the first place, I did not ask him to give you any message; and\nsecondly, I never tell lies. But what's the chief point, I wanted to\nstay, and I stayed,\" he said, frowning. \"Anna, what is it for, why will\nyou?\" he said after a moment's silence, bending over towards her, and he\nopened his hand, hoping she would lay hers in it.\n\nShe was glad of this appeal for tenderness. But some strange force of\nevil would not let her give herself up to her feelings, as though the\nrules of warfare would not permit her to surrender.\n\n\"Of course you wanted to stay, and you stayed. You do everything you\nwant to. But what do you tell me that for? With what object?\" she said,\ngetting more and more excited. \"Does anyone contest your rights? But you\nwant to be right, and you're welcome to be right.\"\n\nHis hand closed, he turned away, and his face wore a still more\nobstinate expression.\n\n\"For you it's a matter of obstinacy,\" she said, watching him intently\nand suddenly finding the right word for that expression that irritated\nher, \"simply obstinacy. For you it's a question of whether you keep the\nupper hand of me, while for me....\" Again she felt sorry for herself,\nand she almost burst into tears. \"If you knew what it is for me! When I\nfeel as I do now that you are hostile, yes, hostile to me, if you knew\nwhat this means for me! If you knew how I feel on the brink of calamity\nat this instant, how afraid I am of myself!\" And she turned away, hiding\nher sobs.\n\n\"But what are you talking about?\" he said, horrified at her expression\nof despair, and again bending over her, he took her hand and kissed it.\n\"What is it for? Do I seek amusements outside our home? Don't I avoid\nthe society of women?\"\n\n\"Well, yes! If that were all!\" she said.\n\n\"Come, tell me what I ought to do to give you peace of mind? I am ready\nto do anything to make you happy,\" he said, touched by her expression of\ndespair; \"what wouldn't I do to save you from distress of any sort, as\nnow, Anna!\" he said.\n\n\"It's nothing, nothing!\" she said. \"I don't know myself whether it's the\nsolitary life, my nerves.... Come, don't let us talk of it. What about\nthe race? You haven't told me!\" she inquired, trying to conceal her\ntriumph at the victory, which had anyway been on her side.\n\nHe asked for supper, and began telling her about the races; but in his\ntone, in his eyes, which became more and more cold, she saw that he did\nnot forgive her for her victory, that the feeling of obstinacy with\nwhich she had been struggling had asserted itself again in him. He was\ncolder to her than before, as though he were regretting his surrender.\nAnd she, remembering the words that had given her the victory, \"how I\nfeel on the brink of calamity, how afraid I am of myself,\" saw that this\nweapon was a dangerous one, and that it could not be used a second time.\nAnd she felt that beside the love that bound them together there had\ngrown up between them some evil spirit of strife, which she could not\nexorcise from his, and still less from her own heart.\n\n\n\nChapter 13\n\n\nThere are no conditions to which a man cannot become used, especially if\nhe sees that all around him are living in the same way. Levin could not\nhave believed three months before that he could have gone quietly to\nsleep in the condition in which he was that day, that leading an\naimless, irrational life, living too beyond his means, after drinking to\nexcess (he could not call what happened at the club anything else),\nforming inappropriately friendly relations with a man with whom his wife\nhad once been in love, and a still more inappropriate call upon a woman\nwho could only be called a lost woman, after being fascinated by that\nwoman and causing his wife distress--he could still go quietly to sleep.\nBut under the influence of fatigue, a sleepless night, and the wine he\nhad drunk, his sleep was sound and untroubled.\n\nAt five o'clock the creak of a door opening waked him. He jumped up and\nlooked round. Kitty was not in bed beside him. But there was a light\nmoving behind the screen, and he heard her steps.\n\n\"What is it?... what is it?\" he said, half-asleep. \"Kitty! What is it?\"\n\n\"Nothing,\" she said, coming from behind the screen with a candle in her\nhand. \"I felt unwell,\" she said, smiling a particularly sweet and\nmeaning smile.\n\n\"What? has it begun?\" he said in terror. \"We ought to send...\" and\nhurriedly he reached after his clothes.\n\n\"No, no,\" she said, smiling and holding his hand. \"It's sure to be\nnothing. I was rather unwell, only a little. It's all over now.\"\n\nAnd getting into bed, she blew out the candle, lay down and was still.\nThough he thought her stillness suspicious, as though she were holding\nher breath, and still more suspicious the expression of peculiar\ntenderness and excitement with which, as she came from behind the\nscreen, she said \"nothing,\" he was so sleepy that he fell asleep at\nonce. Only later he remembered the stillness of her breathing, and\nunderstood all that must have been passing in her sweet, precious heart\nwhile she lay beside him, not stirring, in anticipation of the greatest\nevent in a woman's life. At seven o'clock he was waked by the touch of\nher hand on his shoulder, and a gentle whisper. She seemed struggling\nbetween regret at waking him, and the desire to talk to him.\n\n\"Kostya, don't be frightened. It's all right. But I fancy.... We ought\nto send for Lizaveta Petrovna.\"\n\nThe candle was lighted again. She was sitting up in bed, holding some\nknitting, which she had been busy upon during the last few days.\n\n\"Please, don't be frightened, it's all right. I'm not a bit afraid,\" she\nsaid, seeing his scared face, and she pressed his hand to her bosom and\nthen to her lips.\n\nHe hurriedly jumped up, hardly awake, and kept his eyes fixed on her, as\nhe put on his dressing gown; then he stopped, still looking at her. He\nhad to go, but he could not tear himself from her eyes. He thought he\nloved her face, knew her expression, her eyes, but never had he seen it\nlike this. How hateful and horrible he seemed to himself, thinking of\nthe distress he had caused her yesterday. Her flushed face, fringed with\nsoft curling hair under her night cap, was radiant with joy and courage.\n\nThough there was so little that was complex or artificial in Kitty's\ncharacter in general, Levin was struck by what was revealed now, when\nsuddenly all disguises were thrown off and the very kernel of her soul\nshone in her eyes. And in this simplicity and nakedness of her soul,\nshe, the very woman he loved in her, was more manifest than ever. She\nlooked at him, smiling; but all at once her brows twitched, she threw up\nher head, and going quickly up to him, clutched his hand and pressed\nclose up to him, breathing her hot breath upon him. She was in pain and\nwas, as it were, complaining to him of her suffering. And for the first\nminute, from habit, it seemed to him that he was to blame. But in her\neyes there was a tenderness that told him that she was far from\nreproaching him, that she loved him for her sufferings. \"If not I, who\nis to blame for it?\" he thought unconsciously, seeking someone\nresponsible for this suffering for him to punish; but there was no one\nresponsible. She was suffering, complaining, and triumphing in her\nsufferings, and rejoicing in them, and loving them. He saw that\nsomething sublime was being accomplished in her soul, but what? He could\nnot make it out. It was beyond his understanding.\n\n\"I have sent to mamma. You go quickly to fetch Lizaveta Petrovna ...\nKostya!... Nothing, it's over.\"\n\nShe moved away from him and rang the bell.\n\n\"Well, go now; Pasha's coming. I am all right.\"\n\nAnd Levin saw with astonishment that she had taken up the knitting she\nhad brought in in the night and begun working at it again.\n\nAs Levin was going out of one door, he heard the maid-servant come in at\nthe other. He stood at the door and heard Kitty giving exact directions\nto the maid, and beginning to help her move the bedstead.\n\nHe dressed, and while they were putting in his horses, as a hired sledge\nwas not to be seen yet, he ran again up to the bedroom, not on tiptoe,\nit seemed to him, but on wings. Two maid-servants were carefully moving\nsomething in the bedroom.\n\nKitty was walking about knitting rapidly and giving directions.\n\n\"I'm going for the doctor. They have sent for Lizaveta Petrovna, but\nI'll go on there too. Isn't there anything wanted? Yes, shall I go to\nDolly's?\"\n\nShe looked at him, obviously not hearing what he was saying.\n\n\"Yes, yes. Do go,\" she said quickly, frowning and waving her hand to\nhim.\n\nHe had just gone into the drawing room, when suddenly a plaintive moan\nsounded from the bedroom, smothered instantly. He stood still, and for a\nlong while he could not understand.\n\n\"Yes, that is she,\" he said to himself, and clutching at his head he ran\ndownstairs.\n\n\"Lord have mercy on us! pardon us! aid us!\" he repeated the words that\nfor some reason came suddenly to his lips. And he, an unbeliever,\nrepeated these words not with his lips only. At that instant he knew\nthat all his doubts, even the impossibility of believing with his\nreason, of which he was aware in himself, did not in the least hinder\nhis turning to God. All of that now floated out of his soul like dust.\nTo whom was he to turn if not to Him in whose hands he felt himself, his\nsoul, and his love?\n\nThe horse was not yet ready, but feeling a peculiar concentration of his\nphysical forces and his intellect on what he had to do, he started off\non foot without waiting for the horse, and told Kouzma to overtake him.\n\nAt the corner he met a night cabman driving hurriedly. In the little\nsledge, wrapped in a velvet cloak, sat Lizaveta Petrovna with a kerchief\nround her head. \"Thank God! thank God!\" he said, overjoyed to recognize\nher little fair face which wore a peculiarly serious, even stern\nexpression. Telling the driver not to stop, he ran along beside her.\n\n\"For two hours, then? Not more?\" she inquired. \"You should let Pyotr\nDmitrievitch know, but don't hurry him. And get some opium at the\nchemist's.\"\n\n\"So you think that it may go on well? Lord have mercy on us and help\nus!\" Levin said, seeing his own horse driving out of the gate. Jumping\ninto the sledge beside Kouzma, he told him to drive to the doctor's.\n\n\n\nChapter 14\n\n\nThe doctor was not yet up, and the footman said that \"he had been up\nlate, and had given orders not to be waked, but would get up soon.\" The\nfootman was cleaning the lamp-chimneys, and seemed very busy about them.\nThis concentration of the footman upon his lamps, and his indifference\nto what was passing in Levin, at first astounded him, but immediately on\nconsidering the question he realized that no one knew or was bound to\nknow his feelings, and that it was all the more necessary to act calmly,\nsensibly, and resolutely to get through this wall of indifference and\nattain his aim.\n\n\"Don't be in a hurry or let anything slip,\" Levin said to himself,\nfeeling a greater and greater flow of physical energy and attention to\nall that lay before him to do.\n\nHaving ascertained that the doctor was not getting up, Levin considered\nvarious plans, and decided on the following one: that Kouzma should go\nfor another doctor, while he himself should go to the chemist's for\nopium, and if when he came back the doctor had not yet begun to get up,\nhe would either by tipping the footman, or by force, wake the doctor at\nall hazards.\n\nAt the chemist's the lank shopman sealed up a packet of powders for a\ncoachman who stood waiting, and refused him opium with the same\ncallousness with which the doctor's footman had cleaned his lamp\nchimneys. Trying not to get flurried or out of temper, Levin mentioned\nthe names of the doctor and midwife, and explaining what the opium was\nneeded for, tried to persuade him. The assistant inquired in German\nwhether he should give it, and receiving an affirmative reply from\nbehind the partition, he took out a bottle and a funnel, deliberately\npoured the opium from a bigger bottle into a little one, stuck on a\nlabel, sealed it up, in spite of Levin's request that he would not do\nso, and was about to wrap it up too. This was more than Levin could\nstand; he took the bottle firmly out of his hands, and ran to the big\nglass doors. The doctor was not even now getting up, and the footman,\nbusy now in putting down the rugs, refused to wake him. Levin\ndeliberately took out a ten rouble note, and, careful to speak slowly,\nthough losing no time over the business, he handed him the note, and\nexplained that Pyotr Dmitrievitch (what a great and important personage\nhe seemed to Levin now, this Pyotr Dmitrievitch, who had been of so\nlittle consequence in his eyes before!) had promised to come at any\ntime; that he would certainly not be angry! and that he must therefore\nwake him at once.\n\nThe footman agreed, and went upstairs, taking Levin into the waiting\nroom.\n\nLevin could hear through the door the doctor coughing, moving about,\nwashing, and saying something. Three minutes passed; it seemed to Levin\nthat more than an hour had gone by. He could not wait any longer.\n\n\"Pyotr Dmitrievitch, Pyotr Dmitrievitch!\" he said in an imploring voice\nat the open door. \"For God's sake, forgive me! See me as you are. It's\nbeen going on more than two hours already.\"\n\n\"In a minute; in a minute!\" answered a voice, and to his amazement Levin\nheard that the doctor was smiling as he spoke.\n\n\"For one instant.\"\n\n\"In a minute.\"\n\nTwo minutes more passed while the doctor was putting on his boots, and\ntwo minutes more while the doctor put on his coat and combed his hair.\n\n\"Pyotr Dmitrievitch!\" Levin was beginning again in a plaintive voice,\njust as the doctor came in dressed and ready. \"These people have no\nconscience,\" thought Levin. \"Combing his hair, while we're dying!\"\n\n\"Good morning!\" the doctor said to him, shaking hands, and, as it were,\nteasing him with his composure. \"There's no hurry. Well now?\"\n\nTrying to be as accurate as possible, Levin began to tell him every\nunnecessary detail of his wife's condition, interrupting his account\nrepeatedly with entreaties that the doctor would come with him at once.\n\n\"Oh, you needn't be in any hurry. You don't understand, you know. I'm\ncertain I'm not wanted, still I've promised, and if you like, I'll come.\nBut there's no hurry. Please sit down; won't you have some coffee?\"\n\nLevin stared at him with eyes that asked whether he was laughing at him;\nbut the doctor had no notion of making fun of him.\n\n\"I know, I know,\" the doctor said, smiling; \"I'm a married man myself;\nand at these moments we husbands are very much to be pitied. I've a\npatient whose husband always takes refuge in the stables on such\noccasions.\"\n\n\"But what do you think, Pyotr Dmitrievitch? Do you suppose it may go all\nright?\"\n\n\"Everything points to a favorable issue.\"\n\n\"So you'll come immediately?\" said Levin, looking wrathfully at the\nservant who was bringing in the coffee.\n\n\"In an hour's time.\"\n\n\"Oh, for mercy's sake!\"\n\n\"Well, let me drink my coffee, anyway.\"\n\nThe doctor started upon his coffee. Both were silent.\n\n\"The Turks are really getting beaten, though. Did you read yesterday's\ntelegrams?\" said the doctor, munching some roll.\n\n\"No, I can't stand it!\" said Levin, jumping up. \"So you'll be with us in\na quarter of an hour.\"\n\n\"In half an hour.\"\n\n\"On your honor?\"\n\nWhen Levin got home, he drove up at the same time as the princess, and\nthey went up to the bedroom door together. The princess had tears in her\neyes, and her hands were shaking. Seeing Levin, she embraced him, and\nburst into tears.\n\n\"Well, my dear Lizaveta Petrovna?\" she queried, clasping the hand of the\nmidwife, who came out to meet them with a beaming and anxious face.\n\n\"She's going on well,\" she said; \"persuade her to lie down. She will be\neasier so.\"\n\nFrom the moment when he had waked up and understood what was going on,\nLevin had prepared his mind to bear resolutely what was before him, and\nwithout considering or anticipating anything, to avoid upsetting his\nwife, and on the contrary to soothe her and keep up her courage. Without\nallowing himself even to think of what was to come, of how it would end,\njudging from his inquiries as to the usual duration of these ordeals,\nLevin had in his imagination braced himself to bear up and to keep a\ntight rein on his feelings for five hours, and it had seemed to him he\ncould do this. But when he came back from the doctor's and saw her\nsufferings again, he fell to repeating more and more frequently: \"Lord,\nhave mercy on us, and succor us!\" He sighed, and flung his head up, and\nbegan to feel afraid he could not bear it, that he would burst into\ntears or run away. Such agony it was to him. And only one hour had\npassed.\n\nBut after that hour there passed another hour, two hours, three, the\nfull five hours he had fixed as the furthest limit of his sufferings,\nand the position was still unchanged; and he was still bearing it\nbecause there was nothing to be done but bear it; every instant feeling\nthat he had reached the utmost limits of his endurance, and that his\nheart would break with sympathy and pain.\n\nBut still the minutes passed by and the hours, and still hours more, and\nhis misery and horror grew and were more and more intense.\n\nAll the ordinary conditions of life, without which one can form no\nconception of anything, had ceased to exist for Levin. He lost all sense\nof time. Minutes--those minutes when she sent for him and he held her\nmoist hand, that would squeeze his hand with extraordinary violence and\nthen push it away--seemed to him hours, and hours seemed to him minutes.\nHe was surprised when Lizaveta Petrovna asked him to light a candle\nbehind a screen, and he found that it was five o'clock in the afternoon.\nIf he had been told it was only ten o'clock in the morning, he would not\nhave been more surprised. Where he was all this time, he knew as little\nas the time of anything. He saw her swollen face, sometimes bewildered\nand in agony, sometimes smiling and trying to reassure him. He saw the\nold princess too, flushed and overwrought, with her gray curls in\ndisorder, forcing herself to gulp down her tears, biting her lips; he\nsaw Dolly too and the doctor, smoking fat cigarettes, and Lizaveta\nPetrovna with a firm, resolute, reassuring face, and the old prince\nwalking up and down the hall with a frowning face. But why they came in\nand went out, where they were, he did not know. The princess was with\nthe doctor in the bedroom, then in the study, where a table set for\ndinner suddenly appeared; then she was not there, but Dolly was. Then\nLevin remembered he had been sent somewhere. Once he had been sent to\nmove a table and sofa. He had done this eagerly, thinking it had to be\ndone for her sake, and only later on he found it was his own bed he had\nbeen getting ready. Then he had been sent to the study to ask the doctor\nsomething. The doctor had answered and then had said something about the\nirregularities in the municipal council. Then he had been sent to the\nbedroom to help the old princess to move the holy picture in its silver\nand gold setting, and with the princess's old waiting maid he had\nclambered on a shelf to reach it and had broken the little lamp, and the\nold servant had tried to reassure him about the lamp and about his wife,\nand he carried the holy picture and set it at Kitty's head, carefully\ntucking it in behind the pillow. But where, when, and why all this had\nhappened, he could not tell. He did not understand why the old princess\ntook his hand, and looking compassionately at him, begged him not to\nworry himself, and Dolly persuaded him to eat something and led him out\nof the room, and even the doctor looked seriously and with commiseration\nat him and offered him a drop of something.\n\nAll he knew and felt was that what was happening was what had happened\nnearly a year before in the hotel of the country town at the deathbed of\nhis brother Nikolay. But that had been grief--this was joy. Yet that\ngrief and this joy were alike outside all the ordinary conditions of\nlife; they were loop-holes, as it were, in that ordinary life through\nwhich there came glimpses of something sublime. And in the contemplation\nof this sublime something the soul was exalted to inconceivable heights\nof which it had before had no conception, while reason lagged behind,\nunable to keep up with it.\n\n\"Lord, have mercy on us, and succor us!\" he repeated to himself\nincessantly, feeling, in spite of his long and, as it seemed, complete\nalienation from religion, that he turned to God just as trustfully and\nsimply as he had in his childhood and first youth.\n\nAll this time he had two distinct spiritual conditions. One was away\nfrom her, with the doctor, who kept smoking one fat cigarette after\nanother and extinguishing them on the edge of a full ash tray, with\nDolly, and with the old prince, where there was talk about dinner, about\npolitics, about Marya Petrovna's illness, and where Levin suddenly\nforgot for a minute what was happening, and felt as though he had waked\nup from sleep; the other was in her presence, at her pillow, where his\nheart seemed breaking and still did not break from sympathetic\nsuffering, and he prayed to God without ceasing. And every time he was\nbrought back from a moment of oblivion by a scream reaching him from the\nbedroom, he fell into the same strange terror that had come upon him the\nfirst minute. Every time he heard a shriek, he jumped up, ran to justify\nhimself, remembered on the way that he was not to blame, and he longed\nto defend her, to help her. But as he looked at her, he saw again that\nhelp was impossible, and he was filled with terror and prayed: \"Lord,\nhave mercy on us, and help us!\" And as time went on, both these\nconditions became more intense; the calmer he became away from her,\ncompletely forgetting her, the more agonizing became both her sufferings\nand his feeling of helplessness before them. He jumped up, would have\nliked to run away, but ran to her.\n\nSometimes, when again and again she called upon him, he blamed her; but\nseeing her patient, smiling face, and hearing the words, \"I am worrying\nyou,\" he threw the blame on God; but thinking of God, at once he fell to\nbeseeching God to forgive him and have mercy.\n\n\n\nChapter 15\n\n\nHe did not know whether it was late or early. The candles had all burned\nout. Dolly had just been in the study and had suggested to the doctor\nthat he should lie down. Levin sat listening to the doctor's stories of\na quack mesmerizer and looking at the ashes of his cigarette. There had\nbeen a period of repose, and he had sunk into oblivion. He had\ncompletely forgotten what was going on now. He heard the doctor's chat\nand understood it. Suddenly there came an unearthly shriek. The shriek\nwas so awful that Levin did not even jump up, but holding his breath,\ngazed in terrified inquiry at the doctor. The doctor put his head on one\nside, listened, and smiled approvingly. Everything was so extraordinary\nthat nothing could strike Levin as strange. \"I suppose it must be so,\"\nhe thought, and still sat where he was. Whose scream was this? He jumped\nup, ran on tiptoe to the bedroom, edged round Lizaveta Petrovna and the\nprincess, and took up his position at Kitty's pillow. The scream had\nsubsided, but there was some change now. What it was he did not see and\ndid not comprehend, and he had no wish to see or comprehend. But he saw\nit by the face of Lizaveta Petrovna. Lizaveta Petrovna's face was stern\nand pale, and still as resolute, though her jaws were twitching, and her\neyes were fixed intently on Kitty. Kitty's swollen and agonized face, a\ntress of hair clinging to her moist brow, was turned to him and sought\nhis eyes. Her lifted hands asked for his hands. Clutching his chill\nhands in her moist ones, she began squeezing them to her face.\n\n\"Don't go, don't go! I'm not afraid, I'm not afraid!\" she said rapidly.\n\"Mamma, take my earrings. They bother me. You're not afraid? Quick,\nquick, Lizaveta Petrovna...\"\n\nShe spoke quickly, very quickly, and tried to smile. But suddenly her\nface was drawn, she pushed him away.\n\n\"Oh, this is awful! I'm dying, I'm dying! Go away!\" she shrieked, and\nagain he heard that unearthly scream.\n\nLevin clutched at his head and ran out of the room.\n\n\"It's nothing, it's nothing, it's all right,\" Dolly called after him.\n\nBut they might say what they liked, he knew now that all was over. He\nstood in the next room, his head leaning against the door post, and\nheard shrieks, howls such as he had never heard before, and he knew that\nwhat had been Kitty was uttering these shrieks. He had long ago ceased\nto wish for the child. By now he loathed this child. He did not even\nwish for her life now, all he longed for was the end of this awful\nanguish.\n\n\"Doctor! What is it? What is it? By God!\" he said, snatching at the\ndoctor's hand as he came up.\n\n\"It's the end,\" said the doctor. And the doctor's face was so grave as\nhe said it that Levin took _the end_ as meaning her death.\n\nBeside himself, he ran into the bedroom. The first thing he saw was the\nface of Lizaveta Petrovna. It was even more frowning and stern. Kitty's\nface he did not know. In the place where it had been was something that\nwas fearful in its strained distortion and in the sounds that came from\nit. He fell down with his head on the wooden framework of the bed,\nfeeling that his heart was bursting. The awful scream never paused, it\nbecame still more awful, and as though it had reached the utmost limit\nof terror, suddenly it ceased. Levin could not believe his ears, but\nthere could be no doubt; the scream had ceased and he heard a subdued\nstir and bustle, and hurried breathing, and her voice, gasping, alive,\ntender, and blissful, uttered softly, \"It's over!\"\n\nHe lifted his head. With her hands hanging exhausted on the quilt,\nlooking extraordinarily lovely and serene, she looked at him in silence\nand tried to smile, and could not.\n\nAnd suddenly, from the mysterious and awful far-away world in which he\nhad been living for the last twenty-two hours, Levin felt himself all in\nan instant borne back to the old every-day world, glorified though now,\nby such a radiance of happiness that he could not bear it. The strained\nchords snapped, sobs and tears of joy which he had never foreseen rose\nup with such violence that his whole body shook, that for long they\nprevented him from speaking.\n\nFalling on his knees before the bed, he held his wife's hand before his\nlips and kissed it, and the hand, with a weak movement of the fingers,\nresponded to his kiss. And meanwhile, there at the foot of the bed, in\nthe deft hands of Lizaveta Petrovna, like a flickering light in a lamp,\nlay the life of a human creature, which had never existed before, and\nwhich would now with the same right, with the same importance to itself,\nlive and create in its own image.\n\n\"Alive! alive! And a boy too! Set your mind at rest!\" Levin heard\nLizaveta Petrovna saying, as she slapped the baby's back with a shaking\nhand.\n\n\"Mamma, is it true?\" said Kitty's voice.\n\nThe princess's sobs were all the answers she could make. And in the\nmidst of the silence there came in unmistakable reply to the mother's\nquestion, a voice quite unlike the subdued voices speaking in the room.\nIt was the bold, clamorous, self-assertive squall of the new human\nbeing, who had so incomprehensibly appeared.\n\nIf Levin had been told before that Kitty was dead, and that he had died\nwith her, and that their children were angels, and that God was standing\nbefore him, he would have been surprised at nothing. But now, coming\nback to the world of reality, he had to make great mental efforts to\ntake in that she was alive and well, and that the creature squalling so\ndesperately was his son. Kitty was alive, her agony was over. And he was\nunutterably happy. That he understood; he was completely happy in it.\nBut the baby? Whence, why, who was he?... He could not get used to the\nidea. It seemed to him something extraneous, superfluous, to which he\ncould not accustom himself.\n\n\n\nChapter 16\n\n\nAt ten o'clock the old prince, Sergey Ivanovitch, and Stepan\nArkadyevitch were sitting at Levin's. Having inquired after Kitty, they\nhad dropped into conversation upon other subjects. Levin heard them, and\nunconsciously, as they talked, going over the past, over what had been\nup to that morning, he thought of himself as he had been yesterday till\nthat point. It was as though a hundred years had passed since then. He\nfelt himself exalted to unattainable heights, from which he studiously\nlowered himself so as not to wound the people he was talking to. He\ntalked, and was all the time thinking of his wife, of her condition now,\nof his son, in whose existence he tried to school himself into\nbelieving. The whole world of woman, which had taken for him since his\nmarriage a new value he had never suspected before, was now so exalted\nthat he could not take it in in his imagination. He heard them talk of\nyesterday's dinner at the club, and thought: \"What is happening with her\nnow? Is she asleep? How is she? What is she thinking of? Is he crying,\nmy son Dmitri?\" And in the middle of the conversation, in the middle of\na sentence, he jumped up and went out of the room.\n\n\"Send me word if I can see her,\" said the prince.\n\n\"Very well, in a minute,\" answered Levin, and without stopping, he went\nto her room.\n\nShe was not asleep, she was talking gently with her mother, making plans\nabout the christening.\n\nCarefully set to rights, with hair well-brushed, in a smart little cap\nwith some blue in it, her arms out on the quilt, she was lying on her\nback. Meeting his eyes, her eyes drew him to her. Her face, bright\nbefore, brightened still more as he drew near her. There was the same\nchange in it from earthly to unearthly that is seen in the face of the\ndead. But then it means farewell, here it meant welcome. Again a rush of\nemotion, such as he had felt at the moment of the child's birth, flooded\nhis heart. She took his hand and asked him if he had slept. He could not\nanswer, and turned away, struggling with his weakness.\n\n\"I have had a nap, Kostya!\" she said to him; \"and I am so comfortable\nnow.\"\n\nShe looked at him, but suddenly her expression changed.\n\n\"Give him to me,\" she said, hearing the baby's cry. \"Give him to me,\nLizaveta Petrovna, and he shall look at him.\"\n\n\"To be sure, his papa shall look at him,\" said Lizaveta Petrovna,\ngetting up and bringing something red, and queer, and wriggling. \"Wait a\nminute, we'll make him tidy first,\" and Lizaveta Petrovna laid the red\nwobbling thing on the bed, began untrussing and trussing up the baby,\nlifting it up and turning it over with one finger and powdering it with\nsomething.\n\nLevin, looking at the tiny, pitiful creature, made strenuous efforts to\ndiscover in his heart some traces of fatherly feeling for it. He felt\nnothing towards it but disgust. But when it was undressed and he caught\na glimpse of wee, wee, little hands, little feet, saffron-colored, with\nlittle toes, too, and positively with a little big toe different from\nthe rest, and when he saw Lizaveta Petrovna closing the wide-open little\nhands, as though they were soft springs, and putting them into linen\ngarments, such pity for the little creature came upon him, and such\nterror that she would hurt it, that he held her hand back.\n\nLizaveta Petrovna laughed.\n\n\"Don't be frightened, don't be frightened!\"\n\nWhen the baby had been put to rights and transformed into a firm doll,\nLizaveta Petrovna dandled it as though proud of her handiwork, and stood\na little away so that Levin might see his son in all his glory.\n\nKitty looked sideways in the same direction, never taking her eyes off\nthe baby. \"Give him to me! give him to me!\" she said, and even made as\nthough she would sit up.\n\n\"What are you thinking of, Katerina Alexandrovna, you mustn't move like\nthat! Wait a minute. I'll give him to you. Here we're showing papa what\na fine fellow we are!\"\n\nAnd Lizaveta Petrovna, with one hand supporting the wobbling head,\nlifted up on the other arm the strange, limp, red creature, whose head\nwas lost in its swaddling clothes. But it had a nose, too, and slanting\neyes and smacking lips.\n\n\"A splendid baby!\" said Lizaveta Petrovna.\n\nLevin sighed with mortification. This splendid baby excited in him no\nfeeling but disgust and compassion. It was not at all the feeling he had\nlooked forward to.\n\nHe turned away while Lizaveta Petrovna put the baby to the unaccustomed\nbreast.\n\nSuddenly laughter made him look round. The baby had taken the breast.\n\n\"Come, that's enough, that's enough!\" said Lizaveta Petrovna, but Kitty\nwould not let the baby go. He fell asleep in her arms.\n\n\"Look, now,\" said Kitty, turning the baby so that he could see it. The\naged-looking little face suddenly puckered up still more and the baby\nsneezed.\n\nSmiling, hardly able to restrain his tears, Levin kissed his wife and\nwent out of the dark room. What he felt towards this little creature was\nutterly unlike what he had expected. There was nothing cheerful and\njoyous in the feeling; on the contrary, it was a new torture of\napprehension. It was the consciousness of a new sphere of liability to\npain. And this sense was so painful at first, the apprehension lest this\nhelpless creature should suffer was so intense, that it prevented him\nfrom noticing the strange thrill of senseless joy and even pride that he\nhad felt when the baby sneezed.\n\n\n\nChapter 17\n\n\nStepan Arkadyevitch's affairs were in a very bad way.\n\nThe money for two-thirds of the forest had all been spent already, and\nhe had borrowed from the merchant in advance at ten per cent discount,\nalmost all the remaining third. The merchant would not give more,\nespecially as Darya Alexandrovna, for the first time that winter\ninsisting on her right to her own property, had refused to sign the\nreceipt for the payment of the last third of the forest. All his salary\nwent on household expenses and in payment of petty debts that could not\nbe put off. There was positively no money.\n\nThis was unpleasant and awkward, and in Stepan Arkadyevitch's opinion\nthings could not go on like this. The explanation of the position was,\nin his view, to be found in the fact that his salary was too small. The\npost he filled had been unmistakably very good five years ago, but it\nwas so no longer.\n\nPetrov, the bank director, had twelve thousand; Sventitsky, a company\ndirector, had seventeen thousand; Mitin, who had founded a bank,\nreceived fifty thousand.\n\n\"Clearly I've been napping, and they've overlooked me,\" Stepan\nArkadyevitch thought about himself. And he began keeping his eyes and\nears open, and towards the end of the winter he had discovered a very\ngood berth and had formed a plan of attack upon it, at first from Moscow\nthrough aunts, uncles, and friends, and then, when the matter was well\nadvanced, in the spring, he went himself to Petersburg. It was one of\nthose snug, lucrative berths of which there are so many more nowadays\nthan there used to be, with incomes ranging from one thousand to fifty\nthousand roubles. It was the post of secretary of the committee of the\namalgamated agency of the southern railways, and of certain banking\ncompanies. This position, like all such appointments, called for such\nimmense energy and such varied qualifications, that it was difficult for\nthem to be found united in any one man. And since a man combining all\nthe qualifications was not to be found, it was at least better that the\npost be filled by an honest than by a dishonest man. And Stepan\nArkadyevitch was not merely an honest man--unemphatically--in the common\nacceptation of the words, he was an honest man--emphatically--in that\nspecial sense which the word has in Moscow, when they talk of an\n\"honest\" politician, an \"honest\" writer, an \"honest\" newspaper, an\n\"honest\" institution, an \"honest\" tendency, meaning not simply that the\nman or the institution is not dishonest, but that they are capable on\noccasion of taking a line of their own in opposition to the authorities.\n\nStepan Arkadyevitch moved in those circles in Moscow in which that\nexpression had come into use, was regarded there as an honest man, and\nso had more right to this appointment than others.\n\nThe appointment yielded an income of from seven to ten thousand a year,\nand Oblonsky could fill it without giving up his government position. It\nwas in the hands of two ministers, one lady, and two Jews, and all these\npeople, though the way had been paved already with them, Stepan\nArkadyevitch had to see in Petersburg. Besides this business, Stepan\nArkadyevitch had promised his sister Anna to obtain from Karenin a\ndefinite answer on the question of divorce. And begging fifty roubles\nfrom Dolly, he set off for Petersburg.\n\nStepan Arkadyevitch sat in Karenin's study listening to his report on\nthe causes of the unsatisfactory position of Russian finance, and only\nwaiting for the moment when he would finish to speak about his own\nbusiness or about Anna.\n\n\"Yes, that's very true,\" he said, when Alexey Alexandrovitch took off\nthe pince-nez, without which he could not read now, and looked\ninquiringly at his former brother-in-law, \"that's very true in\nparticular cases, but still the principle of our day is freedom.\"\n\n\"Yes, but I lay down another principle, embracing the principle of\nfreedom,\" said Alexey Alexandrovitch, with emphasis on the word\n\"embracing,\" and he put on his pince-nez again, so as to read the\npassage in which this statement was made. And turning over the\nbeautifully written, wide-margined manuscript, Alexey Alexandrovitch\nread aloud over again the conclusive passage.\n\n\"I don't advocate protection for the sake of private interests, but for\nthe public weal, and for the lower and upper classes equally,\" he said,\nlooking over his pince-nez at Oblonsky. \"But _they_ cannot grasp that,\n_they_ are taken up now with personal interests, and carried away by\nphrases.\"\n\nStepan Arkadyevitch knew that when Karenin began to talk of what _they_\nwere doing and thinking, the persons who would not accept his report and\nwere the cause of everything wrong in Russia, that it was coming near\nthe end. And so now he eagerly abandoned the principle of free-trade,\nand fully agreed. Alexey Alexandrovitch paused, thoughtfully turning\nover the pages of his manuscript.\n\n\"Oh, by the way,\" said Stepan Arkadyevitch, \"I wanted to ask you, some\ntime when you see Pomorsky, to drop him a hint that I should be very\nglad to get that new appointment of secretary of the committee of the\namalgamated agency of the southern railways and banking companies.\"\nStepan Arkadyevitch was familiar by now with the title of the post he\ncoveted, and he brought it out rapidly without mistake.\n\nAlexey Alexandrovitch questioned him as to the duties of this new\ncommittee, and pondered. He was considering whether the new committee\nwould not be acting in some way contrary to the views he had been\nadvocating. But as the influence of the new committee was of a very\ncomplex nature, and his views were of very wide application, he could\nnot decide this straight off, and taking off his pince-nez, he said:\n\n\"Of course, I can mention it to him; but what is your reason precisely\nfor wishing to obtain the appointment?\"\n\n\"It's a good salary, rising to nine thousand, and my means...\"\n\n\"Nine thousand!\" repeated Alexey Alexandrovitch, and he frowned. The\nhigh figure of the salary made him reflect that on that side Stepan\nArkadyevitch's proposed position ran counter to the main tendency of his\nown projects of reform, which always leaned towards economy.\n\n\"I consider, and I have embodied my views in a note on the subject, that\nin our day these immense salaries are evidence of the unsound economic\n_assiette_ of our finances.\"\n\n\"But what's to be done?\" said Stepan Arkadyevitch. \"Suppose a bank\ndirector gets ten thousand--well, he's worth it; or an engineer gets\ntwenty thousand--after all, it's a growing thing, you know!\"\n\n\"I assume that a salary is the price paid for a commodity, and it ought\nto conform with the law of supply and demand. If the salary is fixed\nwithout any regard for that law, as, for instance, when I see two\nengineers leaving college together, both equally well trained and\nefficient, and one getting forty thousand while the other is satisfied\nwith two; or when I see lawyers and hussars, having no special\nqualifications, appointed directors of banking companies with immense\nsalaries, I conclude that the salary is not fixed in accordance with the\nlaw of supply and demand, but simply through personal interest. And this\nis an abuse of great gravity in itself, and one that reacts injuriously\non the government service. I consider...\"\n\nStepan Arkadyevitch made haste to interrupt his brother-in-law.\n\n\"Yes; but you must agree that it's a new institution of undoubted\nutility that's being started. After all, you know, it's a growing thing!\nWhat they lay particular stress on is the thing being carried on\nhonestly,\" said Stepan Arkadyevitch with emphasis.\n\nBut the Moscow significance of the word \"honest\" was lost on Alexey\nAlexandrovitch.\n\n\"Honesty is only a negative qualification,\" he said.\n\n\"Well, you'll do me a great service, anyway,\" said Stepan Arkadyevitch,\n\"by putting in a word to Pomorsky--just in the way of conversation....\"\n\n\"But I fancy it's more in Volgarinov's hands,\" said Alexey\nAlexandrovitch.\n\n\"Volgarinov has fully assented, as far as he's concerned,\" said Stepan\nArkadyevitch, turning red. Stepan Arkadyevitch reddened at the mention\nof that name, because he had been that morning at the Jew Volgarinov's,\nand the visit had left an unpleasant recollection.\n\nStepan Arkadyevitch believed most positively that the committee in which\nhe was trying to get an appointment was a new, genuine, and honest\npublic body, but that morning when Volgarinov had--intentionally, beyond\na doubt--kept him two hours waiting with other petitioners in his\nwaiting room, he had suddenly felt uneasy.\n\nWhether he was uncomfortable that he, a descendant of Rurik, Prince\nOblonsky, had been kept for two hours waiting to see a Jew, or that for\nthe first time in his life he was not following the example of his\nancestors in serving the government, but was turning off into a new\ncareer, anyway he was very uncomfortable. During those two hours in\nVolgarinov's waiting room Stepan Arkadyevitch, stepping jauntily about\nthe room, pulling his whiskers, entering into conversation with the\nother petitioners, and inventing an epigram on his position, assiduously\nconcealed from others, and even from himself, the feeling he was\nexperiencing.\n\nBut all the time he was uncomfortable and angry, he could not have said\nwhy--whether because he could not get his epigram just right, or from\nsome other reason. When at last Volgarinov had received him with\nexaggerated politeness and unmistakable triumph at his humiliation, and\nhad all but refused the favor asked of him, Stepan Arkadyevitch had made\nhaste to forget it all as soon as possible. And now, at the mere\nrecollection, he blushed.\n\n\n\nChapter 18\n\n\n\"Now there is something I want to talk about, and you know what it is.\nAbout Anna,\" Stepan Arkadyevitch said, pausing for a brief space, and\nshaking off the unpleasant impression.\n\nAs soon as Oblonsky uttered Anna's name, the face of Alexey\nAlexandrovitch was completely transformed; all the life was gone out of\nit, and it looked weary and dead.\n\n\"What is it exactly that you want from me?\" he said, moving in his chair\nand snapping his pince-nez.\n\n\"A definite settlement, Alexey Alexandrovitch, some settlement of the\nposition. I'm appealing to you\" (\"not as an injured husband,\" Stepan\nArkadyevitch was going to say, but afraid of wrecking his negotiation by\nthis, he changed the words) \"not as a statesman\" (which did not sound _a\npropos_), \"but simply as a man, and a good-hearted man and a Christian.\nYou must have pity on her,\" he said.\n\n\"That is, in what way precisely?\" Karenin said softly.\n\n\"Yes, pity on her. If you had seen her as I have!--I have been spending\nall the winter with her--you would have pity on her. Her position is\nawful, simply awful!\"\n\n\"I had imagined,\" answered Alexey Alexandrovitch in a higher, almost\nshrill voice, \"that Anna Arkadyevna had everything she had desired for\nherself.\"\n\n\"Oh, Alexey Alexandrovitch, for heaven's sake, don't let us indulge in\nrecriminations! What is past is past, and you know what she wants and is\nwaiting for--divorce.\"\n\n\"But I believe Anna Arkadyevna refuses a divorce, if I make it a\ncondition to leave me my son. I replied in that sense, and supposed that\nthe matter was ended. I consider it at an end,\" shrieked Alexey\nAlexandrovitch.\n\n\"But, for heaven's sake, don't get hot!\" said Stepan Arkadyevitch,\ntouching his brother-in-law's knee. \"The matter is not ended. If you\nwill allow me to recapitulate, it was like this: when you parted, you\nwere as magnanimous as could possibly be; you were ready to give her\neverything--freedom, divorce even. She appreciated that. No, don't think\nthat. She did appreciate it--to such a degree that at the first moment,\nfeeling how she had wronged you, she did not consider and could not\nconsider everything. She gave up everything. But experience, time, have\nshown that her position is unbearable, impossible.\"\n\n\"The life of Anna Arkadyevna can have no interest for me,\" Alexey\nAlexandrovitch put in, lifting his eyebrows.\n\n\"Allow me to disbelieve that,\" Stepan Arkadyevitch replied gently. \"Her\nposition is intolerable for her, and of no benefit to anyone whatever.\nShe has deserved it, you will say. She knows that and asks you for\nnothing; she says plainly that she dare not ask you. But I, all of us,\nher relatives, all who love her, beg you, entreat you. Why should she\nsuffer? Who is any the better for it?\"\n\n\"Excuse me, you seem to put me in the position of the guilty party,\"\nobserved Alexey Alexandrovitch.\n\n\"Oh, no, oh, no, not at all! please understand me,\" said Stepan\nArkadyevitch, touching his hand again, as though feeling sure this\nphysical contact would soften his brother-in-law. \"All I say is this:\nher position is intolerable, and it might be alleviated by you, and you\nwill lose nothing by it. I will arrange it all for you, so that you'll\nnot notice it. You did promise it, you know.\"\n\n\"The promise was given before. And I had supposed that the question of\nmy son had settled the matter. Besides, I had hoped that Anna Arkadyevna\nhad enough generosity...\" Alexey Alexandrovitch articulated with\ndifficulty, his lips twitching and his face white.\n\n\"She leaves it all to your generosity. She begs, she implores one thing\nof you--to extricate her from the impossible position in which she is\nplaced. She does not ask for her son now. Alexey Alexandrovitch, you are\na good man. Put yourself in her position for a minute. The question of\ndivorce for her in her position is a question of life and death. If you\nhad not promised it once, she would have reconciled herself to her\nposition, she would have gone on living in the country. But you promised\nit, and she wrote to you, and moved to Moscow. And here she's been for\nsix months in Moscow, where every chance meeting cuts her to the heart,\nevery day expecting an answer. Why, it's like keeping a condemned\ncriminal for six months with the rope round his neck, promising him\nperhaps death, perhaps mercy. Have pity on her, and I will undertake to\narrange everything. _Vos scrupules_...\"\n\n\"I am not talking about that, about that...\" Alexey Alexandrovitch\ninterrupted with disgust. \"But, perhaps, I promised what I had no right\nto promise.\"\n\n\"So you go back from your promise?\"\n\n\"I have never refused to do all that is possible, but I want time to\nconsider how much of what I promised is possible.\"\n\n\"No, Alexey Alexandrovitch!\" cried Oblonsky, jumping up, \"I won't\nbelieve that! She's unhappy as only an unhappy woman can be, and you\ncannot refuse in such...\"\n\n\"As much of what I promised as is possible. _Vous professez d'etre libre\npenseur._ But I as a believer cannot, in a matter of such gravity, act\nin opposition to the Christian law.\"\n\n\"But in Christian societies and among us, as far as I'm aware, divorce\nis allowed,\" said Stepan Arkadyevitch. \"Divorce is sanctioned even by\nour church. And we see...\"\n\n\"It is allowed, but not in the sense...\"\n\n\"Alexey Alexandrovitch, you are not like yourself,\" said Oblonsky, after\na brief pause. \"Wasn't it you (and didn't we all appreciate it in you?)\nwho forgave everything, and moved simply by Christian feeling was ready\nto make any sacrifice? You said yourself: if a man take thy coat, give\nhim thy cloak also, and now...\"\n\n\"I beg,\" said Alexey Alexandrovitch shrilly, getting suddenly onto his\nfeet, his face white and his jaws twitching, \"I beg you to drop this ...\nto drop ... this subject!\"\n\n\"Oh, no! Oh, forgive me, forgive me if I have wounded you,\" said Stepan\nArkadyevitch, holding out his hand with a smile of embarrassment; \"but\nlike a messenger I have simply performed the commission given me.\"\n\nAlexey Alexandrovitch gave him his hand, pondered a little, and said:\n\n\"I must think it over and seek for guidance. The day after tomorrow I\nwill give you a final answer,\" he said, after considering a moment.\n\n\n\nChapter 19\n\n\nStepan Arkadyevitch was about to go away when Korney came in to\nannounce:\n\n\"Sergey Alexyevitch!\"\n\n\"Who's Sergey Alexyevitch?\" Stepan Arkadyevitch was beginning, but he\nremembered immediately.\n\n\"Ah, Seryozha!\" he said aloud. \"Sergey Alexyevitch! I thought it was the\ndirector of a department. Anna asked me to see him too,\" he thought.\n\nAnd he recalled the timid, piteous expression with which Anna had said\nto him at parting: \"Anyway, you will see him. Find out exactly where he\nis, who is looking after him. And Stiva ... if it were possible! Could\nit be possible?\" Stepan Arkadyevitch knew what was meant by that \"if it\nwere possible,\"--if it were possible to arrange the divorce so as to let\nher have her son.... Stepan Arkadyevitch saw now that it was no good to\ndream of that, but still he was glad to see his nephew.\n\nAlexey Alexandrovitch reminded his brother-in-law that they never spoke\nto the boy of his mother, and he begged him not to mention a single word\nabout her.\n\n\"He was very ill after that interview with his mother, which we had not\nforeseen,\" said Alexey Alexandrovitch. \"Indeed, we feared for his life.\nBut with rational treatment, and sea-bathing in the summer, he regained\nhis strength, and now, by the doctor's advice, I have let him go to\nschool. And certainly the companionship of school has had a good effect\non him, and he is perfectly well, and making good progress.\"\n\n\"What a fine fellow he's grown! He's not Seryozha now, but quite\nfull-fledged Sergey Alexyevitch!\" said Stepan Arkadyevitch, smiling, as\nhe looked at the handsome, broad-shouldered lad in blue coat and long\ntrousers, who walked in alertly and confidently. The boy looked healthy\nand good-humored. He bowed to his uncle as to a stranger, but\nrecognizing him, he blushed and turned hurriedly away from him, as\nthough offended and irritated at something. The boy went up to his\nfather and handed him a note of the marks he had gained in school.\n\n\"Well, that's very fair,\" said his father, \"you can go.\"\n\n\"He's thinner and taller, and has grown out of being a child into a boy;\nI like that,\" said Stepan Arkadyevitch. \"Do you remember me?\"\n\nThe boy looked back quickly at his uncle.\n\n\"Yes, _mon oncle_,\" he answered, glancing at his father, and again he\nlooked downcast.\n\nHis uncle called him to him, and took his hand.\n\n\"Well, and how are you getting on?\" he said, wanting to talk to him, and\nnot knowing what to say.\n\nThe boy, blushing and making no answer, cautiously drew his hand away.\nAs soon as Stepan Arkadyevitch let go his hand, he glanced doubtfully at\nhis father, and like a bird set free, he darted out of the room.\n\nA year had passed since the last time Seryozha had seen his mother.\nSince then he had heard nothing more of her. And in the course of that\nyear he had gone to school, and made friends among his schoolfellows.\nThe dreams and memories of his mother, which had made him ill after\nseeing her, did not occupy his thoughts now. When they came back to him,\nhe studiously drove them away, regarding them as shameful and girlish,\nbelow the dignity of a boy and a schoolboy. He knew that his father and\nmother were separated by some quarrel, he knew that he had to remain\nwith his father, and he tried to get used to that idea.\n\nHe disliked seeing his uncle, so like his mother, for it called up those\nmemories of which he was ashamed. He disliked it all the more as from\nsome words he had caught as he waited at the study door, and still more\nfrom the faces of his father and uncle, he guessed that they must have\nbeen talking of his mother. And to avoid condemning the father with whom\nhe lived and on whom he was dependent, and, above all, to avoid giving\nway to sentimentality, which he considered so degrading, Seryozha tried\nnot to look at his uncle who had come to disturb his peace of mind, and\nnot to think of what he recalled to him.\n\nBut when Stepan Arkadyevitch, going out after him, saw him on the\nstairs, and calling to him, asked him how he spent his playtime at\nschool, Seryozha talked more freely to him away from his father's\npresence.\n\n\"We have a railway now,\" he said in answer to his uncle's question.\n\"It's like this, do you see: two sit on a bench--they're the passengers;\nand one stands up straight on the bench. And all are harnessed to it by\ntheir arms or by their belts, and they run through all the rooms--the\ndoors are left open beforehand. Well, and it's pretty hard work being\nthe conductor!\"\n\n\"That's the one that stands?\" Stepan Arkadyevitch inquired, smiling.\n\n\"Yes, you want pluck for it, and cleverness too, especially when they\nstop all of a sudden, or someone falls down.\"\n\n\"Yes, that must be a serious matter,\" said Stepan Arkadyevitch, watching\nwith mournful interest the eager eyes, like his mother's; not childish\nnow--no longer fully innocent. And though he had promised Alexey\nAlexandrovitch not to speak of Anna, he could not restrain himself.\n\n\"Do you remember your mother?\" he asked suddenly.\n\n\"No, I don't,\" Seryozha said quickly. He blushed crimson, and his face\nclouded over. And his uncle could get nothing more out of him. His tutor\nfound his pupil on the staircase half an hour later, and for a long\nwhile he could not make out whether he was ill-tempered or crying.\n\n\"What is it? I expect you hurt yourself when you fell down?\" said the\ntutor. \"I told you it was a dangerous game. And we shall have to speak\nto the director.\"\n\n\"If I had hurt myself, nobody should have found it out, that's certain.\"\n\n\"Well, what is it, then?\"\n\n\"Leave me alone! If I remember, or if I don't remember?... what business\nis it of his? Why should I remember? Leave me in peace!\" he said,\naddressing not his tutor, but the whole world.\n\n\n\nChapter 20\n\n\nStepan Arkadyevitch, as usual, did not waste his time in Petersburg. In\nPetersburg, besides business, his sister's divorce, and his coveted\nappointment, he wanted, as he always did, to freshen himself up, as he\nsaid, after the mustiness of Moscow.\n\nIn spite of its _cafes chantants_ and its omnibuses, Moscow was yet a\nstagnant bog. Stepan Arkadyevitch always felt it. After living for some\ntime in Moscow, especially in close relations with his family, he was\nconscious of a depression of spirits. After being a long time in Moscow\nwithout a change, he reached a point when he positively began to be\nworrying himself over his wife's ill-humor and reproaches, over his\nchildren's health and education, and the petty details of his official\nwork; even the fact of being in debt worried him. But he had only to go\nand stay a little while in Petersburg, in the circle there in which he\nmoved, where people lived--really lived--instead of vegetating as in\nMoscow, and all such ideas vanished and melted away at once, like wax\nbefore the fire. His wife?... Only that day he had been talking to\nPrince Tchetchensky. Prince Tchetchensky had a wife and family, grown-up\npages in the corps, ... and he had another illegitimate family of\nchildren also. Though the first family was very nice too, Prince\nTchetchensky felt happier in his second family; and he used to take his\neldest son with him to his second family, and told Stepan Arkadyevitch\nthat he thought it good for his son, enlarging his ideas. What would\nhave been said to that in Moscow?\n\nHis children? In Petersburg children did not prevent their parents from\nenjoying life. The children were brought up in schools, and there was no\ntrace of the wild idea that prevailed in Moscow, in Lvov's household,\nfor instance, that all the luxuries of life were for the children, while\nthe parents have nothing but work and anxiety. Here people understood\nthat a man is in duty bound to live for himself, as every man of culture\nshould live.\n\nHis official duties? Official work here was not the stiff, hopeless\ndrudgery that it was in Moscow. Here there was some interest in official\nlife. A chance meeting, a service rendered, a happy phrase, a knack of\nfacetious mimicry, and a man's career might be made in a trice. So it\nhad been with Bryantsev, whom Stepan Arkadyevitch had met the previous\nday, and who was one of the highest functionaries in government now.\nThere was some interest in official work like that.\n\nThe Petersburg attitude on pecuniary matters had an especially soothing\neffect on Stepan Arkadyevitch. Bartnyansky, who must spend at least\nfifty thousand to judge by the style he lived in, had made an\ninteresting comment the day before on that subject.\n\nAs they were talking before dinner, Stepan Arkadyevitch said to\nBartnyansky:\n\n\"You're friendly, I fancy, with Mordvinsky; you might do me a favor: say\na word to him, please, for me. There's an appointment I should like to\nget--secretary of the agency...\"\n\n\"Oh, I shan't remember all that, if you tell it to me.... But what\npossesses you to have to do with railways and Jews?... Take it as you\nwill, it's a low business.\"\n\nStepan Arkadyevitch did not say to Bartnyansky that it was a \"growing\nthing\"--Bartnyansky would not have understood that.\n\n\"I want the money, I've nothing to live on.\"\n\n\"You're living, aren't you?\"\n\n\"Yes, but in debt.\"\n\n\"Are you, though? Heavily?\" said Bartnyansky sympathetically.\n\n\"Very heavily: twenty thousand.\"\n\nBartnyansky broke into good-humored laughter.\n\n\"Oh, lucky fellow!\" said he. \"My debts mount up to a million and a half,\nand I've nothing, and still I can live, as you see!\"\n\nAnd Stepan Arkadyevitch saw the correctness of this view not in words\nonly but in actual fact. Zhivahov owed three hundred thousand, and\nhadn't a farthing to bless himself with, and he lived, and in style too!\nCount Krivtsov was considered a hopeless case by everyone, and yet he\nkept two mistresses. Petrovsky had run through five millions, and still\nlived in just the same style, and was even a manager in the financial\ndepartment with a salary of twenty thousand. But besides this,\nPetersburg had physically an agreeable effect on Stepan Arkadyevitch. It\nmade him younger. In Moscow he sometimes found a gray hair in his head,\ndropped asleep after dinner, stretched, walked slowly upstairs,\nbreathing heavily, was bored by the society of young women, and did not\ndance at balls. In Petersburg he always felt ten years younger.\n\nHis experience in Petersburg was exactly what had been described to him\non the previous day by Prince Pyotr Oblonsky, a man of sixty, who had\njust come back from abroad:\n\n\"We don't know the way to live here,\" said Pyotr Oblonsky. \"I spent the\nsummer in Baden, and you wouldn't believe it, I felt quite a young man.\nAt a glimpse of a pretty woman, my thoughts.... One dines and drinks a\nglass of wine, and feels strong and ready for anything. I came home to\nRussia--had to see my wife, and, what's more, go to my country place;\nand there, you'd hardly believe it, in a fortnight I'd got into a\ndressing gown and given up dressing for dinner. Needn't say I had no\nthoughts left for pretty women. I became quite an old gentleman. There\nwas nothing left for me but to think of my eternal salvation. I went off\nto Paris--I was as right as could be at once.\"\n\nStepan Arkadyevitch felt exactly the difference that Pyotr Oblonsky\ndescribed. In Moscow he degenerated so much that if he had had to be\nthere for long together, he might in good earnest have come to\nconsidering his salvation; in Petersburg he felt himself a man of the\nworld again.\n\nBetween Princess Betsy Tverskaya and Stepan Arkadyevitch there had long\nexisted rather curious relations. Stepan Arkadyevitch always flirted\nwith her in jest, and used to say to her, also in jest, the most\nunseemly things, knowing that nothing delighted her so much. The day\nafter his conversation with Karenin, Stepan Arkadyevitch went to see\nher, and felt so youthful that in this jesting flirtation and nonsense\nhe recklessly went so far that he did not know how to extricate himself,\nas unluckily he was so far from being attracted by her that he thought\nher positively disagreeable. What made it hard to change the\nconversation was the fact that he was very attractive to her. So that he\nwas considerably relieved at the arrival of Princess Myakaya, which cut\nshort their _tete-a-tete_.\n\n\"Ah, so you're here!\" said she when she saw him. \"Well, and what news of\nyour poor sister? You needn't look at me like that,\" she added. \"Ever\nsince they've all turned against her, all those who're a thousand times\nworse than she, I've thought she did a very fine thing. I can't forgive\nVronsky for not letting me know when she was in Petersburg. I'd have\ngone to see her and gone about with her everywhere. Please give her my\nlove. Come, tell me about her.\"\n\n\"Yes, her position is very difficult; she...\" began Stepan Arkadyevitch,\nin the simplicity of his heart accepting as sterling coin Princess\nMyakaya's words \"tell me about her.\" Princess Myakaya interrupted him\nimmediately, as she always did, and began talking herself.\n\n\"She's done what they all do, except me--only they hide it. But she\nwouldn't be deceitful, and she did a fine thing. And she did better\nstill in throwing up that crazy brother-in-law of yours. You must excuse\nme. Everybody used to say he was so clever, so very clever; I was the\nonly one that said he was a fool. Now that he's so thick with Lidia\nIvanovna and Landau, they all say he's crazy, and I should prefer not to\nagree with everybody, but this time I can't help it.\"\n\n\"Oh, do please explain,\" said Stepan Arkadyevitch; \"what does it mean?\nYesterday I was seeing him on my sister's behalf, and I asked him to\ngive me a final answer. He gave me no answer, and said he would think it\nover. But this morning, instead of an answer, I received an invitation\nfrom Countess Lidia Ivanovna for this evening.\"\n\n\"Ah, so that's it, that's it!\" said Princess Myakaya gleefully, \"they're\ngoing to ask Landau what he's to say.\"\n\n\"Ask Landau? What for? Who or what's Landau?\"\n\n\"What! you don't know Jules Landau, _le fameux Jules Landau, le\nclairvoyant_? He's crazy too, but on him your sister's fate depends. See\nwhat comes of living in the provinces--you know nothing about anything.\nLandau, do you see, was a _commis_ in a shop in Paris, and he went to a\ndoctor's; and in the doctor's waiting room he fell asleep, and in his\nsleep he began giving advice to all the patients. And wonderful advice\nit was! Then the wife of Yury Meledinsky--you know, the invalid?--heard\nof this Landau, and had him to see her husband. And he cured her\nhusband, though I can't say that I see he did him much good, for he's\njust as feeble a creature as ever he was, but they believed in him, and\ntook him along with them and brought him to Russia. Here there's been a\ngeneral rush to him, and he's begun doctoring everyone. He cured\nCountess Bezzubova, and she took such a fancy to him that she adopted\nhim.\"\n\n\"Adopted him?\"\n\n\"Yes, as her son. He's not Landau any more now, but Count Bezzubov.\nThat's neither here nor there, though; but Lidia--I'm very fond of her,\nbut she has a screw loose somewhere--has lost her heart to this Landau\nnow, and nothing is settled now in her house or Alexey Alexandrovitch's\nwithout him, and so your sister's fate is now in the hands of Landau,\n_alias_ Count Bezzubov.\"\n\n\n\nChapter 21\n\n\nAfter a capital dinner and a great deal of cognac drunk at\nBartnyansky's, Stepan Arkadyevitch, only a little later than the\nappointed time, went in to Countess Lidia Ivanovna's.\n\n\"Who else is with the countess?--a Frenchman?\" Stepan Arkadyevitch asked\nthe hall porter, as he glanced at the familiar overcoat of Alexey\nAlexandrovitch and a queer, rather artless-looking overcoat with clasps.\n\n\"Alexey Alexandrovitch Karenin and Count Bezzubov,\" the porter answered\nseverely.\n\n\"Princess Myakaya guessed right,\" thought Stepan Arkadyevitch, as he\nwent upstairs. \"Curious! It would be quite as well, though, to get on\nfriendly terms with her. She has immense influence. If she would say a\nword to Pomorsky, the thing would be a certainty.\"\n\nIt was still quite light out-of-doors, but in Countess Lidia Ivanovna's\nlittle drawing room the blinds were drawn and the lamps lighted. At a\nround table under a lamp sat the countess and Alexey Alexandrovitch,\ntalking softly. A short, thinnish man, very pale and handsome, with\nfeminine hips and knock-kneed legs, with fine brilliant eyes and long\nhair lying on the collar of his coat, was standing at the end of the\nroom gazing at the portraits on the wall. After greeting the lady of the\nhouse and Alexey Alexandrovitch, Stepan Arkadyevitch could not resist\nglancing once more at the unknown man.\n\n\"Monsieur Landau!\" the countess addressed him with a softness and\ncaution that impressed Oblonsky. And she introduced them.\n\nLandau looked round hurriedly, came up, and smiling, laid his moist,\nlifeless hand in Stepan Arkadyevitch's outstretched hand and immediately\nwalked away and fell to gazing at the portraits again. The countess and\nAlexey Alexandrovitch looked at each other significantly.\n\n\"I am very glad to see you, particularly today,\" said Countess Lidia\nIvanovna, pointing Stepan Arkadyevitch to a seat beside Karenin.\n\n\"I introduced you to him as Landau,\" she said in a soft voice, glancing\nat the Frenchman and again immediately after at Alexey Alexandrovitch,\n\"but he is really Count Bezzubov, as you're probably aware. Only he does\nnot like the title.\"\n\n\"Yes, I heard so,\" answered Stepan Arkadyevitch; \"they say he completely\ncured Countess Bezzubova.\"\n\n\"She was here today, poor thing!\" the countess said, turning to Alexey\nAlexandrovitch. \"This separation is awful for her. It's such a blow to\nher!\"\n\n\"And he positively is going?\" queried Alexey Alexandrovitch.\n\n\"Yes, he's going to Paris. He heard a voice yesterday,\" said Countess\nLidia Ivanovna, looking at Stepan Arkadyevitch.\n\n\"Ah, a voice!\" repeated Oblonsky, feeling that he must be as circumspect\nas he possibly could in this society, where something peculiar was going\non, or was to go on, to which he had not the key.\n\nA moment's silence followed, after which Countess Lidia Ivanovna, as\nthough approaching the main topic of conversation, said with a fine\nsmile to Oblonsky:\n\n\"I've known you for a long while, and am very glad to make a closer\nacquaintance with you. _Les amis de nos amis sont nos amis._ But to be a\ntrue friend, one must enter into the spiritual state of one's friend,\nand I fear that you are not doing so in the case of Alexey\nAlexandrovitch. You understand what I mean?\" she said, lifting her fine\npensive eyes.\n\n\"In part, countess, I understand the position of Alexey\nAlexandrovitch...\" said Oblonsky. Having no clear idea what they were\ntalking about, he wanted to confine himself to generalities.\n\n\"The change is not in his external position,\" Countess Lidia Ivanovna\nsaid sternly, following with eyes of love the figure of Alexey\nAlexandrovitch as he got up and crossed over to Landau; \"his heart is\nchanged, a new heart has been vouchsafed him, and I fear you don't fully\napprehend the change that has taken place in him.\"\n\n\"Oh, well, in general outlines I can conceive the change. We have always\nbeen friendly, and now...\" said Stepan Arkadyevitch, responding with a\nsympathetic glance to the expression of the countess, and mentally\nbalancing the question with which of the two ministers she was most\nintimate, so as to know about which to ask her to speak for him.\n\n\"The change that has taken place in him cannot lessen his love for his\nneighbors; on the contrary, that change can only intensify love in his\nheart. But I am afraid you do not understand me. Won't you have some\ntea?\" she said, with her eyes indicating the footman, who was handing\nround tea on a tray.\n\n\"Not quite, countess. Of course, his misfortune...\"\n\n\"Yes, a misfortune which has proved the highest happiness, when his\nheart was made new, was filled full of it,\" she said, gazing with eyes\nfull of love at Stepan Arkadyevitch.\n\n\"I do believe I might ask her to speak to both of them,\" thought Stepan\nArkadyevitch.\n\n\"Oh, of course, countess,\" he said; \"but I imagine such changes are a\nmatter so private that no one, even the most intimate friend, would care\nto speak of them.\"\n\n\"On the contrary! We ought to speak freely and help one another.\"\n\n\"Yes, undoubtedly so, but there is such a difference of convictions, and\nbesides...\" said Oblonsky with a soft smile.\n\n\"There can be no difference where it is a question of holy truth.\"\n\n\"Oh, no, of course; but...\" and Stepan Arkadyevitch paused in confusion.\nHe understood at last that they were talking of religion.\n\n\"I fancy he will fall asleep immediately,\" said Alexey Alexandrovitch in\na whisper full of meaning, going up to Lidia Ivanovna.\n\nStepan Arkadyevitch looked round. Landau was sitting at the window,\nleaning on his elbow and the back of his chair, his head drooping.\nNoticing that all eyes were turned on him he raised his head and smiled\na smile of childlike artlessness.\n\n\"Don't take any notice,\" said Lidia Ivanovna, and she lightly moved a\nchair up for Alexey Alexandrovitch. \"I have observed...\" she was\nbeginning, when a footman came into the room with a letter. Lidia\nIvanovna rapidly ran her eyes over the note, and excusing herself, wrote\nan answer with extraordinary rapidity, handed it to the man, and came\nback to the table. \"I have observed,\" she went on, \"that Moscow people,\nespecially the men, are more indifferent to religion than anyone.\"\n\n\"Oh, no, countess, I thought Moscow people had the reputation of being\nthe firmest in the faith,\" answered Stepan Arkadyevitch.\n\n\"But as far as I can make out, you are unfortunately one of the\nindifferent ones,\" said Alexey Alexandrovitch, turning to him with a\nweary smile.\n\n\"How anyone can be indifferent!\" said Lidia Ivanovna.\n\n\"I am not so much indifferent on that subject as I am waiting in\nsuspense,\" said Stepan Arkadyevitch, with his most deprecating smile. \"I\nhardly think that the time for such questions has come yet for me.\"\n\nAlexey Alexandrovitch and Lidia Ivanovna looked at each other.\n\n\"We can never tell whether the time has come for us or not,\" said Alexey\nAlexandrovitch severely. \"We ought not to think whether we are ready or\nnot ready. God's grace is not guided by human considerations: sometimes\nit comes not to those that strive for it, and comes to those that are\nunprepared, like Saul.\"\n\n\"No, I believe it won't be just yet,\" said Lidia Ivanovna, who had been\nmeanwhile watching the movements of the Frenchman. Landau got up and\ncame to them.\n\n\"Do you allow me to listen?\" he asked.\n\n\"Oh, yes; I did not want to disturb you,\" said Lidia Ivanovna, gazing\ntenderly at him; \"sit here with us.\"\n\n\"One has only not to close one's eyes to shut out the light,\" Alexey\nAlexandrovitch went on.\n\n\"Ah, if you knew the happiness we know, feeling His presence ever in our\nhearts!\" said Countess Lidia Ivanovna with a rapturous smile.\n\n\"But a man may feel himself unworthy sometimes to rise to that height,\"\nsaid Stepan Arkadyevitch, conscious of hypocrisy in admitting this\nreligious height, but at the same time unable to bring himself to\nacknowledge his free-thinking views before a person who, by a single\nword to Pomorsky, might procure him the coveted appointment.\n\n\"That is, you mean that sin keeps him back?\" said Lidia Ivanovna. \"But\nthat is a false idea. There is no sin for believers, their sin has been\natoned for. _Pardon,_\" she added, looking at the footman, who came in\nagain with another letter. She read it and gave a verbal answer:\n\"Tomorrow at the Grand Duchess's, say.\" \"For the believer sin is not,\"\nshe went on.\n\n\"Yes, but faith without works is dead,\" said Stepan Arkadyevitch,\nrecalling the phrase from the catechism, and only by his smile clinging\nto his independence.\n\n\"There you have it--from the epistle of St. James,\" said Alexey\nAlexandrovitch, addressing Lidia Ivanovna, with a certain\nreproachfulness in his tone. It was unmistakably a subject they had\ndiscussed more than once before. \"What harm has been done by the false\ninterpretation of that passage! Nothing holds men back from belief like\nthat misinterpretation. 'I have not works, so I cannot believe,' though\nall the while that is not said. But the very opposite is said.\"\n\n\"Striving for God, saving the soul by fasting,\" said Countess Lidia\nIvanovna, with disgusted contempt, \"those are the crude ideas of our\nmonks.... Yet that is nowhere said. It is far simpler and easier,\" she\nadded, looking at Oblonsky with the same encouraging smile with which at\ncourt she encouraged youthful maids of honor, disconcerted by the new\nsurroundings of the court.\n\n\"We are saved by Christ who suffered for us. We are saved by faith,\"\nAlexey Alexandrovitch chimed in, with a glance of approval at her words.\n\n_\"Vous comprenez l'anglais?\"_ asked Lidia Ivanovna, and receiving a\nreply in the affirmative, she got up and began looking through a shelf\nof books.\n\n\"I want to read him 'Safe and Happy,' or 'Under the Wing,'\" she said,\nlooking inquiringly at Karenin. And finding the book, and sitting down\nagain in her place, she opened it. \"It's very short. In it is described\nthe way by which faith can be reached, and the happiness, above all\nearthly bliss, with which it fills the soul. The believer cannot be\nunhappy because he is not alone. But you will see.\" She was just\nsettling herself to read when the footman came in again. \"Madame\nBorozdina? Tell her, tomorrow at two o'clock. Yes,\" she said, putting\nher finger in the place in the book, and gazing before her with her fine\npensive eyes, \"that is how true faith acts. You know Marie Sanina? You\nknow about her trouble? She lost her only child. She was in despair. And\nwhat happened? She found this comforter, and she thanks God now for the\ndeath of her child. Such is the happiness faith brings!\"\n\n\"Oh, yes, that is most...\" said Stepan Arkadyevitch, glad they were\ngoing to read, and let him have a chance to collect his faculties. \"No,\nI see I'd better not ask her about anything today,\" he thought. \"If only\nI can get out of this without putting my foot in it!\"\n\n\"It will be dull for you,\" said Countess Lidia Ivanovna, addressing\nLandau; \"you don't know English, but it's short.\"\n\n\"Oh, I shall understand,\" said Landau, with the same smile, and he\nclosed his eyes. Alexey Alexandrovitch and Lidia Ivanovna exchanged\nmeaningful glances, and the reading began.\n\n\n\nChapter 22\n\n\nStepan Arkadyevitch felt completely nonplussed by the strange talk which\nhe was hearing for the first time. The complexity of Petersburg, as a\nrule, had a stimulating effect on him, rousing him out of his Moscow\nstagnation. But he liked these complications, and understood them only\nin the circles he knew and was at home in. In these unfamiliar\nsurroundings he was puzzled and disconcerted, and could not get his\nbearings. As he listened to Countess Lidia Ivanovna, aware of the\nbeautiful, artless--or perhaps artful, he could not decide which--eyes\nof Landau fixed upon him, Stepan Arkadyevitch began to be conscious of a\npeculiar heaviness in his head.\n\nThe most incongruous ideas were in confusion in his head. \"Marie Sanina\nis glad her child's dead.... How good a smoke would be now!... To be\nsaved, one need only believe, and the monks don't know how the thing's\nto be done, but Countess Lidia Ivanovna does know.... And why is my head\nso heavy? Is it the cognac, or all this being so queer? Anyway, I fancy\nI've done nothing unsuitable so far. But anyway, it won't do to ask her\nnow. They say they make one say one's prayers. I only hope they won't\nmake me! That'll be too imbecile. And what stuff it is she's reading!\nbut she has a good accent. Landau--Bezzubov--what's he Bezzubov for?\"\nAll at once Stepan Arkadyevitch became aware that his lower jaw was\nuncontrollably forming a yawn. He pulled his whiskers to cover the yawn,\nand shook himself together. But soon after he became aware that he was\ndropping asleep and on the very point of snoring. He recovered himself\nat the very moment when the voice of Countess Lidia Ivanovna was saying\n\"he's asleep.\" Stepan Arkadyevitch started with dismay, feeling guilty\nand caught. But he was reassured at once by seeing that the words \"he's\nasleep\" referred not to him, but to Landau. The Frenchman was asleep as\nwell as Stepan Arkadyevitch. But Stepan Arkadyevitch's being asleep\nwould have offended them, as he thought (though even this, he thought,\nmight not be so, as everything seemed so queer), while Landau's being\nasleep delighted them extremely, especially Countess Lidia Ivanovna.\n\n_\"Mon ami,\"_ said Lidia Ivanovna, carefully holding the folds of her\nsilk gown so as not to rustle, and in her excitement calling Karenin not\nAlexey Alexandrovitch, but _\"mon ami,\" \"donnez-lui la main. Vous voyez?\nSh!\"_ she hissed at the footman as he came in again. \"Not at home.\"\n\nThe Frenchman was asleep, or pretending to be asleep, with his head on\nthe back of his chair, and his moist hand, as it lay on his knee, made\nfaint movements, as though trying to catch something. Alexey\nAlexandrovitch got up, tried to move carefully, but stumbled against the\ntable, went up and laid his hand in the Frenchman's hand. Stepan\nArkadyevitch got up too, and opening his eyes wide, trying to wake\nhimself up if he were asleep, he looked first at one and then at the\nother. It was all real. Stepan Arkadyevitch felt that his head was\ngetting worse and worse.\n\n\"_Que la personne qui est arrivee la derniere, celle qui demande,\nqu'elle sorte! Qu'elle sorte!_\" articulated the Frenchman, without\nopening his eyes.\n\n\"_Vous m'excuserez, mais vous voyez.... Revenez vers dix heures, encore\nmieux demain._\"\n\n\"_Qu'elle sorte!_\" repeated the Frenchman impatiently.\n\n\"_C'est moi, n'est-ce pas?_\" And receiving an answer in the affirmative,\nStepan Arkadyevitch, forgetting the favor he had meant to ask of Lidia\nIvanovna, and forgetting his sister's affairs, caring for nothing, but\nfilled with the sole desire to get away as soon as possible, went out on\ntiptoe and ran out into the street as though from a plague-stricken\nhouse. For a long while he chatted and joked with his cab-driver, trying\nto recover his spirits.\n\nAt the French theater where he arrived for the last act, and afterwards\nat the Tatar restaurant after his champagne, Stepan Arkadyevitch felt a\nlittle refreshed in the atmosphere he was used to. But still he felt\nquite unlike himself all that evening.\n\nOn getting home to Pyotr Oblonsky's, where he was staying, Stepan\nArkadyevitch found a note from Betsy. She wrote to him that she was very\nanxious to finish their interrupted conversation, and begged him to come\nnext day. He had scarcely read this note, and frowned at its contents,\nwhen he heard below the ponderous tramp of the servants, carrying\nsomething heavy.\n\nStepan Arkadyevitch went out to look. It was the rejuvenated Pyotr\nOblonsky. He was so drunk that he could not walk upstairs; but he told\nthem to set him on his legs when he saw Stepan Arkadyevitch, and\nclinging to him, walked with him into his room and there began telling\nhim how he had spent the evening, and fell asleep doing so.\n\nStepan Arkadyevitch was in very low spirits, which happened rarely with\nhim, and for a long while he could not go to sleep. Everything he could\nrecall to his mind, everything was disgusting; but most disgusting of\nall, as if it were something shameful, was the memory of the evening he\nhad spent at Countess Lidia Ivanovna's.\n\nNext day he received from Alexey Alexandrovitch a final answer, refusing\nto grant Anna's divorce, and he understood that this decision was based\non what the Frenchman had said in his real or pretended trance.\n\n\n\nChapter 23\n\n\nIn order to carry through any undertaking in family life, there must\nnecessarily be either complete division between the husband and wife, or\nloving agreement. When the relations of a couple are vacillating and\nneither one thing nor the other, no sort of enterprise can be\nundertaken.\n\nMany families remain for years in the same place, though both husband\nand wife are sick of it, simply because there is neither complete\ndivision nor agreement between them.\n\nBoth Vronsky and Anna felt life in Moscow insupportable in the heat and\ndust, when the spring sunshine was followed by the glare of summer, and\nall the trees in the boulevards had long since been in full leaf, and\nthe leaves were covered with dust. But they did not go back to\nVozdvizhenskoe, as they had arranged to do long before; they went on\nstaying in Moscow, though they both loathed it, because of late there\nhad been no agreement between them.\n\nThe irritability that kept them apart had no external cause, and all\nefforts to come to an understanding intensified it, instead of removing\nit. It was an inner irritation, grounded in her mind on the conviction\nthat his love had grown less; in his, on regret that he had put himself\nfor her sake in a difficult position, which she, instead of lightening,\nmade still more difficult. Neither of them gave full utterance to their\nsense of grievance, but they considered each other in the wrong, and\ntried on every pretext to prove this to one another.\n\nIn her eyes the whole of him, with all his habits, ideas, desires, with\nall his spiritual and physical temperament, was one thing--love for\nwomen, and that love, she felt, ought to be entirely concentrated on her\nalone. That love was less; consequently, as she reasoned, he must have\ntransferred part of his love to other women or to another woman--and she\nwas jealous. She was jealous not of any particular woman but of the\ndecrease of his love. Not having got an object for her jealousy, she was\non the lookout for it. At the slightest hint she transferred her\njealousy from one object to another. At one time she was jealous of\nthose low women with whom he might so easily renew his old bachelor\nties; then she was jealous of the society women he might meet; then she\nwas jealous of the imaginary girl whom he might want to marry, for whose\nsake he would break with her. And this last form of jealousy tortured\nher most of all, especially as he had unwarily told her, in a moment of\nfrankness, that his mother knew him so little that she had had the\naudacity to try and persuade him to marry the young Princess Sorokina.\n\nAnd being jealous of him, Anna was indignant against him and found\ngrounds for indignation in everything. For everything that was difficult\nin her position she blamed him. The agonizing condition of suspense she\nhad passed in Moscow, the tardiness and indecision of Alexey\nAlexandrovitch, her solitude--she put it all down to him. If he had\nloved her he would have seen all the bitterness of her position, and\nwould have rescued her from it. For her being in Moscow and not in the\ncountry, he was to blame too. He could not live buried in the country as\nshe would have liked to do. He must have society, and he had put her in\nthis awful position, the bitterness of which he would not see. And\nagain, it was his fault that she was forever separated from her son.\n\nEven the rare moments of tenderness that came from time to time did not\nsoothe her; in his tenderness now she saw a shade of complacency, of\nself-confidence, which had not been of old, and which exasperated her.\n\nIt was dusk. Anna was alone, and waiting for him to come back from a\nbachelor dinner. She walked up and down in his study (the room where the\nnoise from the street was least heard), and thought over every detail of\ntheir yesterday's quarrel. Going back from the well-remembered,\noffensive words of the quarrel to what had been the ground of it, she\narrived at last at its origin. For a long while she could hardly believe\nthat their dissension had arisen from a conversation so inoffensive, of\nso little moment to either. But so it actually had been. It all arose\nfrom his laughing at the girls' high schools, declaring they were\nuseless, while she defended them. He had spoken slightingly of women's\neducation in general, and had said that Hannah, Anna's English protegee,\nhad not the slightest need to know anything of physics.\n\nThis irritated Anna. She saw in this a contemptuous reference to her\noccupations. And she bethought her of a phrase to pay him back for the\npain he had given her. \"I don't expect you to understand me, my\nfeelings, as anyone who loved me might, but simple delicacy I did\nexpect,\" she said.\n\nAnd he had actually flushed with vexation, and had said something\nunpleasant. She could not recall her answer, but at that point, with an\nunmistakable desire to wound her too, he had said:\n\n\"I feel no interest in your infatuation over this girl, that's true,\nbecause I see it's unnatural.\"\n\nThe cruelty with which he shattered the world she had built up for\nherself so laboriously to enable her to endure her hard life, the\ninjustice with which he had accused her of affectation, of\nartificiality, aroused her.\n\n\"I am very sorry that nothing but what's coarse and material is\ncomprehensible and natural to you,\" she said and walked out of the room.\n\nWhen he had come in to her yesterday evening, they had not referred to\nthe quarrel, but both felt that the quarrel had been smoothed over, but\nwas not at an end.\n\nToday he had not been at home all day, and she felt so lonely and\nwretched in being on bad terms with him that she wanted to forget it\nall, to forgive him, and be reconciled with him; she wanted to throw the\nblame on herself and to justify him.\n\n\"I am myself to blame. I'm irritable, I'm insanely jealous. I will make\nit up with him, and we'll go away to the country; there I shall be more\nat peace.\"\n\n\"Unnatural!\" She suddenly recalled the word that had stung her most of\nall, not so much the word itself as the intent to wound her with which\nit was said. \"I know what he meant; he meant--unnatural, not loving my\nown daughter, to love another person's child. What does he know of love\nfor children, of my love for Seryozha, whom I've sacrificed for him? But\nthat wish to wound me! No, he loves another woman, it must be so.\"\n\nAnd perceiving that, while trying to regain her peace of mind, she had\ngone round the same circle that she had been round so often before, and\nhad come back to her former state of exasperation, she was horrified at\nherself. \"Can it be impossible? Can it be beyond me to control myself?\"\nshe said to herself, and began again from the beginning. \"He's truthful,\nhe's honest, he loves me. I love him, and in a few days the divorce will\ncome. What more do I want? I want peace of mind and trust, and I will\ntake the blame on myself. Yes, now when he comes in, I will tell him I\nwas wrong, though I was not wrong, and we will go away tomorrow.\"\n\nAnd to escape thinking any more, and being overcome by irritability, she\nrang, and ordered the boxes to be brought up for packing their things\nfor the country.\n\nAt ten o'clock Vronsky came in.\n\n\n\nChapter 24\n\n\n\"Well, was it nice?\" she asked, coming out to meet him with a penitent\nand meek expression.\n\n\"Just as usual,\" he answered, seeing at a glance that she was in one of\nher good moods. He was used by now to these transitions, and he was\nparticularly glad to see it today, as he was in a specially good humor\nhimself.\n\n\"What do I see? Come, that's good!\" he said, pointing to the boxes in\nthe passage.\n\n\"Yes, we must go. I went out for a drive, and it was so fine I longed to\nbe in the country. There's nothing to keep you, is there?\"\n\n\"It's the one thing I desire. I'll be back directly, and we'll talk it\nover; I only want to change my coat. Order some tea.\"\n\nAnd he went into his room.\n\nThere was something mortifying in the way he had said \"Come, that's\ngood,\" as one says to a child when it leaves off being naughty, and\nstill more mortifying was the contrast between her penitent and his\nself-confident tone; and for one instant she felt the lust of strife\nrising up in her again, but making an effort she conquered it, and met\nVronsky as good-humoredly as before.\n\nWhen he came in she told him, partly repeating phrases she had prepared\nbeforehand, how she had spent the day, and her plans for going away.\n\n\"You know it came to me almost like an inspiration,\" she said. \"Why wait\nhere for the divorce? Won't it be just the same in the country? I can't\nwait any longer! I don't want to go on hoping, I don't want to hear\nanything about the divorce. I have made up my mind it shall not have any\nmore influence on my life. Do you agree?\"\n\n\"Oh, yes!\" he said, glancing uneasily at her excited face.\n\n\"What did you do? Who was there?\" she said, after a pause.\n\nVronsky mentioned the names of the guests. \"The dinner was first rate,\nand the boat race, and it was all pleasant enough, but in Moscow they\ncan never do anything without something _ridicule_. A lady of a sort\nappeared on the scene, teacher of swimming to the Queen of Sweden, and\ngave us an exhibition of her skill.\"\n\n\"How? did she swim?\" asked Anna, frowning.\n\n\"In an absurd red _costume de natation;_ she was old and hideous too. So\nwhen shall we go?\"\n\n\"What an absurd fancy! Why, did she swim in some special way, then?\"\nsaid Anna, not answering.\n\n\"There was absolutely nothing in it. That's just what I say, it was\nawfully stupid. Well, then, when do you think of going?\"\n\nAnna shook her head as though trying to drive away some unpleasant idea.\n\n\"When? Why, the sooner the better! By tomorrow we shan't be ready. The\nday after tomorrow.\"\n\n\"Yes ... oh, no, wait a minute! The day after tomorrow's Sunday, I have\nto be at maman's,\" said Vronsky, embarrassed, because as soon as he\nuttered his mother's name he was aware of her intent, suspicious eyes.\nHis embarrassment confirmed her suspicion. She flushed hotly and drew\naway from him. It was now not the Queen of Sweden's swimming-mistress\nwho filled Anna's imagination, but the young Princess Sorokina. She was\nstaying in a village near Moscow with Countess Vronskaya.\n\n\"Can't you go tomorrow?\" she said.\n\n\"Well, no! The deeds and the money for the business I'm going there for\nI can't get by tomorrow,\" he answered.\n\n\"If so, we won't go at all.\"\n\n\"But why so?\"\n\n\"I shall not go later. Monday or never!\"\n\n\"What for?\" said Vronsky, as though in amazement. \"Why, there's no\nmeaning in it!\"\n\n\"There's no meaning in it to you, because you care nothing for me. You\ndon't care to understand my life. The one thing that I cared for here\nwas Hannah. You say it's affectation. Why, you said yesterday that I\ndon't love my daughter, that I love this English girl, that it's\nunnatural. I should like to know what life there is for me that could be\nnatural!\"\n\nFor an instant she had a clear vision of what she was doing, and was\nhorrified at how she had fallen away from her resolution. But even\nthough she knew it was her own ruin, she could not restrain herself,\ncould not keep herself from proving to him that he was wrong, could not\ngive way to him.\n\n\"I never said that; I said I did not sympathize with this sudden\npassion.\"\n\n\"How is it, though you boast of your straightforwardness, you don't tell\nthe truth?\"\n\n\"I never boast, and I never tell lies,\" he said slowly, restraining his\nrising anger. \"It's a great pity if you can't respect...\"\n\n\"Respect was invented to cover the empty place where love should be. And\nif you don't love me any more, it would be better and more honest to say\nso.\"\n\n\"No, this is becoming unbearable!\" cried Vronsky, getting up from his\nchair; and stopping short, facing her, he said, speaking deliberately:\n\"What do you try my patience for?\" looking as though he might have said\nmuch more, but was restraining himself. \"It has limits.\"\n\n\"What do you mean by that?\" she cried, looking with terror at the\nundisguised hatred in his whole face, and especially in his cruel,\nmenacing eyes.\n\n\"I mean to say...\" he was beginning, but he checked himself. \"I must ask\nwhat it is you want of me?\"\n\n\"What can I want? All I can want is that you should not desert me, as\nyou think of doing,\" she said, understanding all he had not uttered.\n\"But that I don't want; that's secondary. I want love, and there is\nnone. So then all is over.\"\n\nShe turned towards the door.\n\n\"Stop! sto-op!\" said Vronsky, with no change in the gloomy lines of his\nbrows, though he held her by the hand. \"What is it all about? I said\nthat we must put off going for three days, and on that you told me I was\nlying, that I was not an honorable man.\"\n\n\"Yes, and I repeat that the man who reproaches me with having sacrificed\neverything for me,\" she said, recalling the words of a still earlier\nquarrel, \"that he's worse than a dishonorable man--he's a heartless\nman.\"\n\n\"Oh, there are limits to endurance!\" he cried, and hastily let go her\nhand.\n\n\"He hates me, that's clear,\" she thought, and in silence, without\nlooking round, she walked with faltering steps out of the room. \"He\nloves another woman, that's even clearer,\" she said to herself as she\nwent into her own room. \"I want love, and there is none. So, then, all\nis over.\" She repeated the words she had said, \"and it must be ended.\"\n\n\"But how?\" she asked herself, and she sat down in a low chair before the\nlooking glass.\n\nThoughts of where she would go now, whether to the aunt who had brought\nher up, to Dolly, or simply alone abroad, and of what _he_ was doing now\nalone in his study; whether this was the final quarrel, or whether\nreconciliation were still possible; and of what all her old friends at\nPetersburg would say of her now; and of how Alexey Alexandrovitch would\nlook at it, and many other ideas of what would happen now after this\nrupture, came into her head; but she did not give herself up to them\nwith all her heart. At the bottom of her heart was some obscure idea\nthat alone interested her, but she could not get clear sight of it.\nThinking once more of Alexey Alexandrovitch, she recalled the time of\nher illness after her confinement, and the feeling which never left her\nat that time. \"Why didn't I die?\" and the words and the feeling of that\ntime came back to her. And all at once she knew what was in her soul.\nYes, it was that idea which alone solved all. \"Yes, to die!... And the\nshame and disgrace of Alexey Alexandrovitch and of Seryozha, and my\nawful shame, it will all be saved by death. To die! and he will feel\nremorse; will be sorry; will love me; he will suffer on my account.\"\nWith the trace of a smile of commiseration for herself she sat down in\nthe armchair, taking off and putting on the rings on her left hand,\nvividly picturing from different sides his feelings after her death.\n\nApproaching footsteps--his steps--distracted her attention. As though\nabsorbed in the arrangement of her rings, she did not even turn to him.\n\nHe went up to her, and taking her by the hand, said softly:\n\n\"Anna, we'll go the day after tomorrow, if you like. I agree to\neverything.\"\n\nShe did not speak.\n\n\"What is it?\" he urged.\n\n\"You know,\" she said, and at the same instant, unable to restrain\nherself any longer, she burst into sobs.\n\n\"Cast me off!\" she articulated between her sobs. \"I'll go away tomorrow\n... I'll do more. What am I? An immoral woman! A stone round your neck.\nI don't want to make you wretched, I don't want to! I'll set you free.\nYou don't love me; you love someone else!\"\n\nVronsky besought her to be calm, and declared that there was no trace of\nfoundation for her jealousy; that he had never ceased, and never would\ncease, to love her; that he loved her more than ever.\n\n\"Anna, why distress yourself and me so?\" he said to her, kissing her\nhands. There was tenderness now in his face, and she fancied she caught\nthe sound of tears in his voice, and she felt them wet on her hand. And\ninstantly Anna's despairing jealousy changed to a despairing passion of\ntenderness. She put her arms round him, and covered with kisses his\nhead, his neck, his hands.\n\n\n\nChapter 25\n\n\nFeeling that the reconciliation was complete, Anna set eagerly to work\nin the morning preparing for their departure. Though it was not settled\nwhether they should go on Monday or Tuesday, as they had each given way\nto the other, Anna packed busily, feeling absolutely indifferent whether\nthey went a day earlier or later. She was standing in her room over an\nopen box, taking things out of it, when he came in to see her earlier\nthan usual, dressed to go out.\n\n\"I'm going off at once to see maman; she can send me the money by\nYegorov. And I shall be ready to go tomorrow,\" he said.\n\nThough she was in such a good mood, the thought of his visit to his\nmother's gave her a pang.\n\n\"No, I shan't be ready by then myself,\" she said; and at once reflected,\n\"so then it was possible to arrange to do as I wished.\" \"No, do as you\nmeant to do. Go into the dining room, I'm coming directly. It's only to\nturn out those things that aren't wanted,\" she said, putting something\nmore on the heap of frippery that lay in Annushka's arms.\n\nVronsky was eating his beefsteak when she came into the dining-room.\n\n\"You wouldn't believe how distasteful these rooms have become to me,\"\nshe said, sitting down beside him to her coffee. \"There's nothing more\nawful than these _chambres garnies_. There's no individuality in them,\nno soul. These clocks, and curtains, and, worst of all, the\nwallpapers--they're a nightmare. I think of Vozdvizhenskoe as the\npromised land. You're not sending the horses off yet?\"\n\n\"No, they will come after us. Where are you going to?\"\n\n\"I wanted to go to Wilson's to take some dresses to her. So it's really\nto be tomorrow?\" she said in a cheerful voice; but suddenly her face\nchanged.\n\nVronsky's valet came in to ask him to sign a receipt for a telegram from\nPetersburg. There was nothing out of the way in Vronsky's getting a\ntelegram, but he said, as though anxious to conceal something from her,\nthat the receipt was in his study, and he turned hurriedly to her.\n\n\"By tomorrow, without fail, I will finish it all.\"\n\n\"From whom is the telegram?\" she asked, not hearing him.\n\n\"From Stiva,\" he answered reluctantly.\n\n\"Why didn't you show it to me? What secret can there be between Stiva\nand me?\"\n\nVronsky called the valet back, and told him to bring the telegram.\n\n\"I didn't want to show it to you, because Stiva has such a passion for\ntelegraphing: why telegraph when nothing is settled?\"\n\n\"About the divorce?\"\n\n\"Yes; but he says he has not been able to come at anything yet. He has\npromised a decisive answer in a day or two. But here it is; read it.\"\n\nWith trembling hands Anna took the telegram, and read what Vronsky had\ntold her. At the end was added: \"Little hope; but I will do everything\npossible and impossible.\"\n\n\"I said yesterday that it's absolutely nothing to me when I get, or\nwhether I never get, a divorce,\" she said, flushing crimson. \"There was\nnot the slightest necessity to hide it from me.\" \"So he may hide and\ndoes hide his correspondence with women from me,\" she thought.\n\n\"Yashvin meant to come this morning with Voytov,\" said Vronsky; \"I\nbelieve he's won from Pyevtsov all and more than he can pay, about sixty\nthousand.\"\n\n\"No,\" she said, irritated by his so obviously showing by this change of\nsubject that he was irritated, \"why did you suppose that this news would\naffect me so, that you must even try to hide it? I said I don't want to\nconsider it, and I should have liked you to care as little about it as I\ndo.\"\n\n\"I care about it because I like definiteness,\" he said.\n\n\"Definiteness is not in the form but the love,\" she said, more and more\nirritated, not by his words, but by the tone of cool composure in which\nhe spoke. \"What do you want it for?\"\n\n\"My God! love again,\" he thought, frowning.\n\n\"Oh, you know what for; for your sake and your children's in the\nfuture.\"\n\n\"There won't be children in the future.\"\n\n\"That's a great pity,\" he said.\n\n\"You want it for the children's sake, but you don't think of me?\" she\nsaid, quite forgetting or not having heard that he had said, \"_for your\nsake_ and the children's.\"\n\nThe question of the possibility of having children had long been a\nsubject of dispute and irritation to her. His desire to have children\nshe interpreted as a proof he did not prize her beauty.\n\n\"Oh, I said: for your sake. Above all for your sake,\" he repeated,\nfrowning as though in pain, \"because I am certain that the greater part\nof your irritability comes from the indefiniteness of the position.\"\n\n\"Yes, now he has laid aside all pretense, and all his cold hatred for me\nis apparent,\" she thought, not hearing his words, but watching with\nterror the cold, cruel judge who looked mocking her out of his eyes.\n\n\"The cause is not that,\" she said, \"and, indeed, I don't see how the\ncause of my irritability, as you call it, can be that I am completely in\nyour power. What indefiniteness is there in the position? on the\ncontrary...\"\n\n\"I am very sorry that you don't care to understand,\" he interrupted,\nobstinately anxious to give utterance to his thought. \"The\nindefiniteness consists in your imagining that I am free.\"\n\n\"On that score you can set your mind quite at rest,\" she said, and\nturning away from him, she began drinking her coffee.\n\nShe lifted her cup, with her little finger held apart, and put it to her\nlips. After drinking a few sips she glanced at him, and by his\nexpression, she saw clearly that he was repelled by her hand, and her\ngesture, and the sound made by her lips.\n\n\"I don't care in the least what your mother thinks, and what match she\nwants to make for you,\" she said, putting the cup down with a shaking\nhand.\n\n\"But we are not talking about that.\"\n\n\"Yes, that's just what we are talking about. And let me tell you that a\nheartless woman, whether she's old or not old, your mother or anyone\nelse, is of no consequence to me, and I would not consent to know her.\"\n\n\"Anna, I beg you not to speak disrespectfully of my mother.\"\n\n\"A woman whose heart does not tell her where her son's happiness and\nhonor lie has no heart.\"\n\n\"I repeat my request that you will not speak disrespectfully of my\nmother, whom I respect,\" he said, raising his voice and looking sternly\nat her.\n\nShe did not answer. Looking intently at him, at his face, his hands, she\nrecalled all the details of their reconciliation the previous day, and\nhis passionate caresses. \"There, just such caresses he has lavished, and\nwill lavish, and longs to lavish on other women!\" she thought.\n\n\"You don't love your mother. That's all talk, and talk, and talk!\" she\nsaid, looking at him with hatred in her eyes.\n\n\"Even if so, you must...\"\n\n\"Must decide, and I have decided,\" she said, and she would have gone\naway, but at that moment Yashvin walked into the room. Anna greeted him\nand remained.\n\nWhy, when there was a tempest in her soul, and she felt she was standing\nat a turning point in her life, which might have fearful\nconsequences--why, at that minute, she had to keep up appearances before\nan outsider, who sooner or later must know it all--she did not know. But\nat once quelling the storm within her, she sat down and began talking to\ntheir guest.\n\n\"Well, how are you getting on? Has your debt been paid you?\" she asked\nYashvin.\n\n\"Oh, pretty fair; I fancy I shan't get it all, but I shall get a good\nhalf. And when are you off?\" said Yashvin, looking at Vronsky, and\nunmistakably guessing at a quarrel.\n\n\"The day after tomorrow, I think,\" said Vronsky.\n\n\"You've been meaning to go so long, though.\"\n\n\"But now it's quite decided,\" said Anna, looking Vronsky straight in the\nface with a look which told him not to dream of the possibility of\nreconciliation.\n\n\"Don't you feel sorry for that unlucky Pyevtsov?\" she went on, talking\nto Yashvin.\n\n\"I've never asked myself the question, Anna Arkadyevna, whether I'm\nsorry for him or not. You see, all my fortune's here\"--he touched his\nbreast pocket--\"and just now I'm a wealthy man. But today I'm going to\nthe club, and I may come out a beggar. You see, whoever sits down to\nplay with me--he wants to leave me without a shirt to my back, and so do\nI him. And so we fight it out, and that's the pleasure of it.\"\n\n\"Well, but suppose you were married,\" said Anna, \"how would it be for\nyour wife?\"\n\nYashvin laughed.\n\n\"That's why I'm not married, and never mean to be.\"\n\n\"And Helsingfors?\" said Vronsky, entering into the conversation and\nglancing at Anna's smiling face. Meeting his eyes, Anna's face instantly\ntook a coldly severe expression as though she were saying to him: \"It's\nnot forgotten. It's all the same.\"\n\n\"Were you really in love?\" she said to Yashvin.\n\n\"Oh heavens! ever so many times! But you see, some men can play but only\nso that they can always lay down their cards when the hour of a\n_rendezvous_ comes, while I can take up love, but only so as not to be\nlate for my cards in the evening. That's how I manage things.\"\n\n\"No, I didn't mean that, but the real thing.\" She would have said\n_Helsingfors_, but would not repeat the word used by Vronsky.\n\nVoytov, who was buying the horse, came in. Anna got up and went out of\nthe room.\n\nBefore leaving the house, Vronsky went into her room. She would have\npretended to be looking for something on the table, but ashamed of\nmaking a pretense, she looked straight in his face with cold eyes.\n\n\"What do you want?\" she asked in French.\n\n\"To get the guarantee for Gambetta, I've sold him,\" he said, in a tone\nwhich said more clearly than words, \"I've no time for discussing things,\nand it would lead to nothing.\"\n\n\"I'm not to blame in any way,\" he thought. \"If she will punish herself,\n_tant pis pour elle._\" But as he was going he fancied that she said\nsomething, and his heart suddenly ached with pity for her.\n\n\"Eh, Anna?\" he queried.\n\n\"I said nothing,\" she answered just as coldly and calmly.\n\n\"Oh, nothing, _tant pis_ then,\" he thought, feeling cold again, and he\nturned and went out. As he was going out he caught a glimpse in the\nlooking glass of her face, white, with quivering lips. He even wanted to\nstop and to say some comforting word to her, but his legs carried him\nout of the room before he could think what to say. The whole of that day\nhe spent away from home, and when he came in late in the evening the\nmaid told him that Anna Arkadyevna had a headache and begged him not to\ngo in to her.\n\n\n\nChapter 26\n\n\nNever before had a day been passed in quarrel. Today was the first time.\nAnd this was not a quarrel. It was the open acknowledgment of complete\ncoldness. Was it possible to glance at her as he had glanced when he\ncame into the room for the guarantee?--to look at her, see her heart was\nbreaking with despair, and go out without a word with that face of\ncallous composure? He was not merely cold to her, he hated her because\nhe loved another woman--that was clear.\n\nAnd remembering all the cruel words he had said, Anna supplied, too, the\nwords that he had unmistakably wished to say and could have said to her,\nand she grew more and more exasperated.\n\n\"I won't prevent you,\" he might say. \"You can go where you like. You\nwere unwilling to be divorced from your husband, no doubt so that you\nmight go back to him. Go back to him. If you want money, I'll give it to\nyou. How many roubles do you want?\"\n\nAll the most cruel words that a brutal man could say, he said to her in\nher imagination, and she could not forgive him for them, as though he\nhad actually said them.\n\n\"But didn't he only yesterday swear he loved me, he, a truthful and\nsincere man? Haven't I despaired for nothing many times already?\" she\nsaid to herself afterwards.\n\nAll that day, except for the visit to Wilson's, which occupied two\nhours, Anna spent in doubts whether everything were over or whether\nthere were still hope of reconciliation, whether she should go away at\nonce or see him once more. She was expecting him the whole day, and in\nthe evening, as she went to her own room, leaving a message for him that\nher head ached, she said to herself, \"If he comes in spite of what the\nmaid says, it means that he loves me still. If not, it means that all is\nover, and then I will decide what I'm to do!...\"\n\nIn the evening she heard the rumbling of his carriage stop at the\nentrance, his ring, his steps and his conversation with the servant; he\nbelieved what was told him, did not care to find out more, and went to\nhis own room. So then everything was over.\n\nAnd death rose clearly and vividly before her mind as the sole means of\nbringing back love for her in his heart, of punishing him and of gaining\nthe victory in that strife which the evil spirit in possession of her\nheart was waging with him.\n\nNow nothing mattered: going or not going to Vozdvizhenskoe, getting or\nnot getting a divorce from her husband--all that did not matter. The one\nthing that mattered was punishing him. When she poured herself out her\nusual dose of opium, and thought that she had only to drink off the\nwhole bottle to die, it seemed to her so simple and easy, that she began\nmusing with enjoyment on how he would suffer, and repent and love her\nmemory when it would be too late. She lay in bed with open eyes, by the\nlight of a single burned-down candle, gazing at the carved cornice of\nthe ceiling and at the shadow of the screen that covered part of it,\nwhile she vividly pictured to herself how he would feel when she would\nbe no more, when she would be only a memory to him. \"How could I say\nsuch cruel things to her?\" he would say. \"How could I go out of the room\nwithout saying anything to her? But now she is no more. She has gone\naway from us forever. She is....\" Suddenly the shadow of the screen\nwavered, pounced on the whole cornice, the whole ceiling; other shadows\nfrom the other side swooped to meet it, for an instant the shadows\nflitted back, but then with fresh swiftness they darted forward,\nwavered, commingled, and all was darkness. \"Death!\" she thought. And\nsuch horror came upon her that for a long while she could not realize\nwhere she was, and for a long while her trembling hands could not find\nthe matches and light another candle, instead of the one that had burned\ndown and gone out. \"No, anything--only to live! Why, I love him! Why, he\nloves me! This has been before and will pass,\" she said, feeling that\ntears of joy at the return to life were trickling down her cheeks. And\nto escape from her panic she went hurriedly to his room.\n\nHe was asleep there, and sleeping soundly. She went up to him, and\nholding the light above his face, she gazed a long while at him. Now\nwhen he was asleep, she loved him so that at the sight of him she could\nnot keep back tears of tenderness. But she knew that if he waked up he\nwould look at her with cold eyes, convinced that he was right, and that\nbefore telling him of her love, she would have to prove to him that he\nhad been wrong in his treatment of her. Without waking him, she went\nback, and after a second dose of opium she fell towards morning into a\nheavy, incomplete sleep, during which she never quite lost\nconsciousness.\n\nIn the morning she was waked by a horrible nightmare, which had recurred\nseveral times in her dreams, even before her connection with Vronsky. A\nlittle old man with unkempt beard was doing something bent down over\nsome iron, muttering meaningless French words, and she, as she always\ndid in this nightmare (it was what made the horror of it), felt that\nthis peasant was taking no notice of her, but was doing something\nhorrible with the iron--over her. And she waked up in a cold sweat.\n\nWhen she got up, the previous day came back to her as though veiled in\nmist.\n\n\"There was a quarrel. Just what has happened several times. I said I had\na headache, and he did not come in to see me. Tomorrow we're going away;\nI must see him and get ready for the journey,\" she said to herself. And\nlearning that he was in his study, she went down to him. As she passed\nthrough the drawing room she heard a carriage stop at the entrance, and\nlooking out of the window she saw the carriage, from which a young girl\nin a lilac hat was leaning out giving some direction to the footman\nringing the bell. After a parley in the hall, someone came upstairs, and\nVronsky's steps could be heard passing the drawing room. He went rapidly\ndownstairs. Anna went again to the window. She saw him come out onto the\nsteps without his hat and go up to the carriage. The young girl in the\nlilac hat handed him a parcel. Vronsky, smiling, said something to her.\nThe carriage drove away, he ran rapidly upstairs again.\n\nThe mists that had shrouded everything in her soul parted suddenly. The\nfeelings of yesterday pierced the sick heart with a fresh pang. She\ncould not understand now how she could have lowered herself by spending\na whole day with him in his house. She went into his room to announce\nher determination.\n\n\"That was Madame Sorokina and her daughter. They came and brought me the\nmoney and the deeds from maman. I couldn't get them yesterday. How is\nyour head, better?\" he said quietly, not wishing to see and to\nunderstand the gloomy and solemn expression of her face.\n\nShe looked silently, intently at him, standing in the middle of the\nroom. He glanced at her, frowned for a moment, and went on reading a\nletter. She turned, and went deliberately out of the room. He still\nmight have turned her back, but she had reached the door, he was still\nsilent, and the only sound audible was the rustling of the note paper as\nhe turned it.\n\n\"Oh, by the way,\" he said at the very moment she was in the doorway,\n\"we're going tomorrow for certain, aren't we?\"\n\n\"You, but not I,\" she said, turning round to him.\n\n\"Anna, we can't go on like this...\"\n\n\"You, but not I,\" she repeated.\n\n\"This is getting unbearable!\"\n\n\"You ... you will be sorry for this,\" she said, and went out.\n\nFrightened by the desperate expression with which these words were\nuttered, he jumped up and would have run after her, but on second\nthoughts he sat down and scowled, setting his teeth. This vulgar--as he\nthought it--threat of something vague exasperated him. \"I've tried\neverything,\" he thought; \"the only thing left is not to pay attention,\"\nand he began to get ready to drive into town, and again to his mother's\nto get her signature to the deeds.\n\nShe heard the sound of his steps about the study and the dining room. At\nthe drawing room he stood still. But he did not turn in to see her, he\nmerely gave an order that the horse should be given to Voytov if he came\nwhile he was away. Then she heard the carriage brought round, the door\nopened, and he came out again. But he went back into the porch again,\nand someone was running upstairs. It was the valet running up for his\ngloves that had been forgotten. She went to the window and saw him take\nthe gloves without looking, and touching the coachman on the back he\nsaid something to him. Then without looking up at the window he settled\nhimself in his usual attitude in the carriage, with his legs crossed,\nand drawing on his gloves he vanished round the corner.\n\n\n\nChapter 27\n\n\n\"He has gone! It is over!\" Anna said to herself, standing at the window;\nand in answer to this statement the impression of the darkness when the\ncandle had flickered out, and of her fearful dream mingling into one,\nfilled her heart with cold terror.\n\n\"No, that cannot be!\" she cried, and crossing the room she rang the\nbell. She was so afraid now of being alone, that without waiting for the\nservant to come in, she went out to meet him.\n\n\"Inquire where the count has gone,\" she said. The servant answered that\nthe count had gone to the stable.\n\n\"His honor left word that if you cared to drive out, the carriage would\nbe back immediately.\"\n\n\"Very good. Wait a minute. I'll write a note at once. Send Mihail with\nthe note to the stables. Make haste.\"\n\nShe sat down and wrote:\n\n\"I was wrong. Come back home; I must explain. For God's sake come! I'm\nafraid.\"\n\nShe sealed it up and gave it to the servant.\n\nShe was afraid of being left alone now; she followed the servant out of\nthe room, and went to the nursery.\n\n\"Why, this isn't it, this isn't he! Where are his blue eyes, his sweet,\nshy smile?\" was her first thought when she saw her chubby, rosy little\ngirl with her black, curly hair instead of Seryozha, whom in the tangle\nof her ideas she had expected to see in the nursery. The little girl\nsitting at the table was obstinately and violently battering on it with\na cork, and staring aimlessly at her mother with her pitch-black eyes.\nAnswering the English nurse that she was quite well, and that she was\ngoing to the country tomorrow, Anna sat down by the little girl and\nbegan spinning the cork to show her. But the child's loud, ringing\nlaugh, and the motion of her eyebrows, recalled Vronsky so vividly that\nshe got up hurriedly, restraining her sobs, and went away. \"Can it be\nall over? No, it cannot be!\" she thought. \"He will come back. But how\ncan he explain that smile, that excitement after he had been talking to\nher? But even if he doesn't explain, I will believe. If I don't believe,\nthere's only one thing left for me, and I can't.\"\n\nShe looked at her watch. Twenty minutes had passed. \"By now he has\nreceived the note and is coming back. Not long, ten minutes more.... But\nwhat if he doesn't come? No, that cannot be. He mustn't see me with\ntear-stained eyes. I'll go and wash. Yes, yes; did I do my hair or not?\"\nshe asked herself. And she could not remember. She felt her head with\nher hand. \"Yes, my hair has been done, but when I did it I can't in the\nleast remember.\" She could not believe the evidence of her hand, and\nwent up to the pier glass to see whether she really had done her hair.\nShe certainly had, but she could not think when she had done it. \"Who's\nthat?\" she thought, looking in the looking glass at the swollen face\nwith strangely glittering eyes, that looked in a scared way at her.\n\"Why, it's I!\" she suddenly understood, and looking round, she seemed\nall at once to feel his kisses on her, and twitched her shoulders,\nshuddering. Then she lifted her hand to her lips and kissed it.\n\n\"What is it? Why, I'm going out of my mind!\" and she went into her\nbedroom, where Annushka was tidying the room.\n\n\"Annushka,\" she said, coming to a standstill before her, and she stared\nat the maid, not knowing what to say to her.\n\n\"You meant to go and see Darya Alexandrovna,\" said the girl, as though\nshe understood.\n\n\"Darya Alexandrovna? Yes, I'll go.\"\n\n\"Fifteen minutes there, fifteen minutes back. He's coming, he'll be here\nsoon.\" She took out her watch and looked at it. \"But how could he go\naway, leaving me in such a state? How can he live, without making it up\nwith me?\" She went to the window and began looking into the street.\nJudging by the time, he might be back now. But her calculations might be\nwrong, and she began once more to recall when he had started and to\ncount the minutes.\n\nAt the moment when she had moved away to the big clock to compare it\nwith her watch, someone drove up. Glancing out of the window, she saw\nhis carriage. But no one came upstairs, and voices could be heard below.\nIt was the messenger who had come back in the carriage. She went down to\nhim.\n\n\"We didn't catch the count. The count had driven off on the lower city\nroad.\"\n\n\"What do you say? What!...\" she said to the rosy, good-humored Mihail,\nas he handed her back her note.\n\n\"Why, then, he has never received it!\" she thought.\n\n\"Go with this note to Countess Vronskaya's place, you know? and bring an\nanswer back immediately,\" she said to the messenger.\n\n\"And I, what am I going to do?\" she thought. \"Yes, I'm going to Dolly's,\nthat's true or else I shall go out of my mind. Yes, and I can telegraph,\ntoo.\" And she wrote a telegram. \"I absolutely must talk to you; come at\nonce.\" After sending off the telegram, she went to dress. When she was\ndressed and in her hat, she glanced again into the eyes of the plump,\ncomfortable-looking Annushka. There was unmistakable sympathy in those\ngood-natured little gray eyes.\n\n\"Annushka, dear, what am I to do?\" said Anna, sobbing and sinking\nhelplessly into a chair.\n\n\"Why fret yourself so, Anna Arkadyevna? Why, there's nothing out of the\nway. You drive out a little, and it'll cheer you up,\" said the maid.\n\n\"Yes, I'm going,\" said Anna, rousing herself and getting up. \"And if\nthere's a telegram while I'm away, send it on to Darya Alexandrovna's\n... but no, I shall be back myself.\"\n\n\"Yes, I mustn't think, I must do something, drive somewhere, and most of\nall, get out of this house,\" she said, feeling with terror the strange\nturmoil going on in her own heart, and she made haste to go out and get\ninto the carriage.\n\n\"Where to?\" asked Pyotr before getting onto the box.\n\n\"To Znamenka, the Oblonskys'.\"\n\n\n\nChapter 28\n\n\nIt was bright and sunny. A fine rain had been falling all the morning,\nand now it had not long cleared up. The iron roofs, the flags of the\nroads, the flints of the pavements, the wheels and leather, the brass\nand the tinplate of the carriages--all glistened brightly in the May\nsunshine. It was three o'clock, and the very liveliest time in the\nstreets.\n\nAs she sat in a corner of the comfortable carriage, that hardly swayed\non its supple springs, while the grays trotted swiftly, in the midst of\nthe unceasing rattle of wheels and the changing impressions in the pure\nair, Anna ran over the events of the last days, and she saw her position\nquite differently from how it had seemed at home. Now the thought of\ndeath seemed no longer so terrible and so clear to her, and death itself\nno longer seemed so inevitable. Now she blamed herself for the\nhumiliation to which she had lowered herself. \"I entreat him to forgive\nme. I have given in to him. I have owned myself in fault. What for?\nCan't I live without him?\" And leaving unanswered the question how she\nwas going to live without him, she fell to reading the signs on the\nshops. \"Office and warehouse. Dental surgeon. Yes, I'll tell Dolly all\nabout it. She doesn't like Vronsky. I shall be sick and ashamed, but\nI'll tell her. She loves me, and I'll follow her advice. I won't give in\nto him; I won't let him train me as he pleases. Filippov, bun shop. They\nsay they send their dough to Petersburg. The Moscow water is so good for\nit. Ah, the springs at Mitishtchen, and the pancakes!\"\n\nAnd she remembered how, long, long ago, when she was a girl of\nseventeen, she had gone with her aunt to Troitsa. \"Riding, too. Was that\nreally me, with red hands? How much that seemed to me then splendid and\nout of reach has become worthless, while what I had then has gone out of\nmy reach forever! Could I ever have believed then that I could come to\nsuch humiliation? How conceited and self-satisfied he will be when he\ngets my note! But I will show him.... How horrid that paint smells! Why\nis it they're always painting and building? _Modes et robes,_\" she read.\nA man bowed to her. It was Annushka's husband. \"Our parasites\"; she\nremembered how Vronsky had said that. \"Our? Why our? What's so awful is\nthat one can't tear up the past by its roots. One can't tear it out, but\none can hide one's memory of it. And I'll hide it.\" And then she thought\nof her past with Alexey Alexandrovitch, of how she had blotted the\nmemory of it out of her life. \"Dolly will think I'm leaving my second\nhusband, and so I certainly must be in the wrong. As if I cared to be\nright! I can't help it!\" she said, and she wanted to cry. But at once\nshe fell to wondering what those two girls could be smiling about.\n\"Love, most likely. They don't know how dreary it is, how low.... The\nboulevard and the children. Three boys running, playing at horses.\nSeryozha! And I'm losing everything and not getting him back. Yes, I'm\nlosing everything, if he doesn't return. Perhaps he was late for the\ntrain and has come back by now. Longing for humiliation again!\" she said\nto herself. \"No, I'll go to Dolly, and say straight out to her, I'm\nunhappy, I deserve this, I'm to blame, but still I'm unhappy, help me.\nThese horses, this carriage--how loathsome I am to myself in this\ncarriage--all his; but I won't see them again.\"\n\nThinking over the words in which she would tell Dolly, and mentally\nworking her heart up to great bitterness, Anna went upstairs.\n\n\"Is there anyone with her?\" she asked in the hall.\n\n\"Katerina Alexandrovna Levin,\" answered the footman.\n\n\"Kitty! Kitty, whom Vronsky was in love with!\" thought Anna, \"the girl\nhe thinks of with love. He's sorry he didn't marry her. But me he thinks\nof with hatred, and is sorry he had anything to do with me.\"\n\nThe sisters were having a consultation about nursing when Anna called.\nDolly went down alone to see the visitor who had interrupted their\nconversation.\n\n\"Well, so you've not gone away yet? I meant to have come to you,\" she\nsaid; \"I had a letter from Stiva today.\"\n\n\"We had a telegram too,\" answered Anna, looking round for Kitty.\n\n\"He writes that he can't make out quite what Alexey Alexandrovitch\nwants, but he won't go away without a decisive answer.\"\n\n\"I thought you had someone with you. Can I see the letter?\"\n\n\"Yes; Kitty,\" said Dolly, embarrassed. \"She stayed in the nursery. She\nhas been very ill.\"\n\n\"So I heard. May I see the letter?\"\n\n\"I'll get it directly. But he doesn't refuse; on the contrary, Stiva has\nhopes,\" said Dolly, stopping in the doorway.\n\n\"I haven't, and indeed I don't wish it,\" said Anna.\n\n\"What's this? Does Kitty consider it degrading to meet me?\" thought Anna\nwhen she was alone. \"Perhaps she's right, too. But it's not for her, the\ngirl who was in love with Vronsky, it's not for her to show me that,\neven if it is true. I know that in my position I can't be received by\nany decent woman. I knew that from the first moment I sacrificed\neverything to him. And this is my reward! Oh, how I hate him! And what\ndid I come here for? I'm worse here, more miserable.\" She heard from the\nnext room the sisters' voices in consultation. \"And what am I going to\nsay to Dolly now? Amuse Kitty by the sight of my wretchedness, submit to\nher patronizing? No; and besides, Dolly wouldn't understand. And it\nwould be no good my telling her. It would only be interesting to see\nKitty, to show her how I despise everyone and everything, how nothing\nmatters to me now.\"\n\nDolly came in with the letter. Anna read it and handed it back in\nsilence.\n\n\"I knew all that,\" she said, \"and it doesn't interest me in the least.\"\n\n\"Oh, why so? On the contrary, I have hopes,\" said Dolly, looking\ninquisitively at Anna. She had never seen her in such a strangely\nirritable condition. \"When are you going away?\" she asked.\n\nAnna, half-closing her eyes, looked straight before her and did not\nanswer.\n\n\"Why does Kitty shrink from me?\" she said, looking at the door and\nflushing red.\n\n\"Oh, what nonsense! She's nursing, and things aren't going right with\nher, and I've been advising her.... She's delighted. She'll be here in a\nminute,\" said Dolly awkwardly, not clever at lying. \"Yes, here she is.\"\n\nHearing that Anna had called, Kitty had wanted not to appear, but Dolly\npersuaded her. Rallying her forces, Kitty went in, walked up to her,\nblushing, and shook hands.\n\n\"I am so glad to see you,\" she said with a trembling voice.\n\nKitty had been thrown into confusion by the inward conflict between her\nantagonism to this bad woman and her desire to be nice to her. But as\nsoon as she saw Anna's lovely and attractive face, all feeling of\nantagonism disappeared.\n\n\"I should not have been surprised if you had not cared to meet me. I'm\nused to everything. You have been ill? Yes, you are changed,\" said Anna.\n\nKitty felt that Anna was looking at her with hostile eyes. She ascribed\nthis hostility to the awkward position in which Anna, who had once\npatronized her, must feel with her now, and she felt sorry for her.\n\nThey talked of Kitty's illness, of the baby, of Stiva, but it was\nobvious that nothing interested Anna.\n\n\"I came to say good-bye to you,\" she said, getting up.\n\n\"Oh, when are you going?\"\n\nBut again not answering, Anna turned to Kitty.\n\n\"Yes, I am very glad to have seen you,\" she said with a smile. \"I have\nheard so much of you from everyone, even from your husband. He came to\nsee me, and I liked him exceedingly,\" she said, unmistakably with\nmalicious intent. \"Where is he?\"\n\n\"He has gone back to the country,\" said Kitty, blushing.\n\n\"Remember me to him, be sure you do.\"\n\n\"I'll be sure to!\" Kitty said naively, looking compassionately into her\neyes.\n\n\"So good-bye, Dolly.\" And kissing Dolly and shaking hands with Kitty,\nAnna went out hurriedly.\n\n\"She's just the same and just as charming! She's very lovely!\" said\nKitty, when she was alone with her sister. \"But there's something\npiteous about her. Awfully piteous!\"\n\n\"Yes, there's something unusual about her today,\" said Dolly. \"When I\nwent with her into the hall, I fancied she was almost crying.\"\n\n\n\nChapter 29\n\n\nAnna got into the carriage again in an even worse frame of mind than\nwhen she set out from home. To her previous tortures was added now that\nsense of mortification and of being an outcast which she had felt so\ndistinctly on meeting Kitty.\n\n\"Where to? Home?\" asked Pyotr.\n\n\"Yes, home,\" she said, not even thinking now where she was going.\n\n\"How they looked at me as something dreadful, incomprehensible, and\ncurious! What can he be telling the other with such warmth?\" she\nthought, staring at two men who walked by. \"Can one ever tell anyone\nwhat one is feeling? I meant to tell Dolly, and it's a good thing I\ndidn't tell her. How pleased she would have been at my misery! She would\nhave concealed it, but her chief feeling would have been delight at my\nbeing punished for the happiness she envied me for. Kitty, she would\nhave been even more pleased. How I can see through her! She knows I was\nmore than usually sweet to her husband. And she's jealous and hates me.\nAnd she despises me. In her eyes I'm an immoral woman. If I were an\nimmoral woman I could have made her husband fall in love with me ... if\nI'd cared to. And, indeed, I did care to. There's someone who's pleased\nwith himself,\" she thought, as she saw a fat, rubicund gentleman coming\ntowards her. He took her for an acquaintance, and lifted his glossy hat\nabove his bald, glossy head, and then perceived his mistake. \"He thought\nhe knew me. Well, he knows me as well as anyone in the world knows me. I\ndon't know myself. I know my appetites, as the French say. They want\nthat dirty ice cream, that they do know for certain,\" she thought,\nlooking at two boys stopping an ice cream seller, who took a barrel off\nhis head and began wiping his perspiring face with a towel. \"We all want\nwhat is sweet and nice. If not sweetmeats, then a dirty ice. And Kitty's\nthe same--if not Vronsky, then Levin. And she envies me, and hates me.\nAnd we all hate each other. I Kitty, Kitty me. Yes, that's the truth.\n'_Tiutkin, coiffeur._' _Je me fais coiffer par Tiutkin...._ I'll tell\nhim that when he comes,\" she thought and smiled. But the same instant\nshe remembered that she had no one now to tell anything amusing to. \"And\nthere's nothing amusing, nothing mirthful, really. It's all hateful.\nThey're singing for vespers, and how carefully that merchant crosses\nhimself! as if he were afraid of missing something. Why these churches\nand this singing and this humbug? Simply to conceal that we all hate\neach other like these cab drivers who are abusing each other so angrily.\nYashvin says, 'He wants to strip me of my shirt, and I him of his.' Yes,\nthat's the truth!\"\n\nShe was plunged in these thoughts, which so engrossed her that she left\noff thinking of her own position, when the carriage drew up at the steps\nof her house. It was only when she saw the porter running out to meet\nher that she remembered she had sent the note and the telegram.\n\n\"Is there an answer?\" she inquired.\n\n\"I'll see this minute,\" answered the porter, and glancing into his room,\nhe took out and gave her the thin square envelope of a telegram. \"I\ncan't come before ten o'clock.--Vronsky,\" she read.\n\n\"And hasn't the messenger come back?\"\n\n\"No,\" answered the porter.\n\n\"Then, since it's so, I know what I must do,\" she said, and feeling a\nvague fury and craving for revenge rising up within her, she ran\nupstairs. \"I'll go to him myself. Before going away forever, I'll tell\nhim all. Never have I hated anyone as I hate that man!\" she thought.\nSeeing his hat on the rack, she shuddered with aversion. She did not\nconsider that his telegram was an answer to her telegram and that he had\nnot yet received her note. She pictured him to herself as talking calmly\nto his mother and Princess Sorokina and rejoicing at her sufferings.\n\"Yes, I must go quickly,\" she said, not knowing yet where she was going.\nShe longed to get away as quickly as possible from the feelings she had\ngone through in that awful house. The servants, the walls, the things in\nthat house--all aroused repulsion and hatred in her and lay like a\nweight upon her.\n\n\"Yes, I must go to the railway station, and if he's not there, then go\nthere and catch him.\" Anna looked at the railway timetable in the\nnewspapers. An evening train went at two minutes past eight. \"Yes, I\nshall be in time.\" She gave orders for the other horses to be put in the\ncarriage, and packed in a traveling-bag the things needed for a few\ndays. She knew she would never come back here again.\n\nAmong the plans that came into her head she vaguely determined that\nafter what would happen at the station or at the countess's house, she\nwould go as far as the first town on the Nizhni road and stop there.\n\nDinner was on the table; she went up, but the smell of the bread and\ncheese was enough to make her feel that all food was disgusting. She\nordered the carriage and went out. The house threw a shadow now right\nacross the street, but it was a bright evening and still warm in the\nsunshine. Annushka, who came down with her things, and Pyotr, who put\nthe things in the carriage, and the coachman, evidently out of humor,\nwere all hateful to her, and irritated her by their words and actions.\n\n\"I don't want you, Pyotr.\"\n\n\"But how about the ticket?\"\n\n\"Well, as you like, it doesn't matter,\" she said crossly.\n\nPyotr jumped on the box, and putting his arms akimbo, told the coachman\nto drive to the booking-office.\n\n\n\nChapter 30\n\n\n\"Here it is again! Again I understand it all!\" Anna said to herself, as\nsoon as the carriage had started and swaying lightly, rumbled over the\ntiny cobbles of the paved road, and again one impression followed\nrapidly upon another.\n\n\"Yes; what was the last thing I thought of so clearly?\" she tried to\nrecall it. \"'_Tiutkin, coiffeur?_'--no, not that. Yes, of what Yashvin\nsays, the struggle for existence and hatred is the one thing that holds\nmen together. No, it's a useless journey you're making,\" she said,\nmentally addressing a party in a coach and four, evidently going for an\nexcursion into the country. \"And the dog you're taking with you will be\nno help to you. You can't get away from yourselves.\" Turning her eyes in\nthe direction Pyotr had turned to look, she saw a factory hand almost\ndead drunk, with hanging head, being led away by a policeman. \"Come,\nhe's found a quicker way,\" she thought. \"Count Vronsky and I did not\nfind that happiness either, though we expected so much from it.\" And now\nfor the first time Anna turned that glaring light in which she was\nseeing everything on to her relations with him, which she had hitherto\navoided thinking about. \"What was it he sought in me? Not love so much\nas the satisfaction of vanity.\" She remembered his words, the expression\nof his face, that recalled an abject setter-dog, in the early days of\ntheir connection. And everything now confirmed this. \"Yes, there was the\ntriumph of success in him. Of course there was love too, but the chief\nelement was the pride of success. He boasted of me. Now that's over.\nThere's nothing to be proud of. Not to be proud of, but to be ashamed\nof. He has taken from me all he could, and now I am no use to him. He is\nweary of me and is trying not to be dishonorable in his behavior to me.\nHe let that out yesterday--he wants divorce and marriage so as to burn\nhis ships. He loves me, but how? The zest is gone, as the English say.\nThat fellow wants everyone to admire him and is very much pleased with\nhimself,\" she thought, looking at a red-faced clerk, riding on a riding\nschool horse. \"Yes, there's not the same flavor about me for him now. If\nI go away from him, at the bottom of his heart he will be glad.\"\n\nThis was not mere supposition, she saw it distinctly in the piercing\nlight, which revealed to her now the meaning of life and human\nrelations.\n\n\"My love keeps growing more passionate and egoistic, while his is waning\nand waning, and that's why we're drifting apart.\" She went on musing.\n\"And there's no help for it. He is everything for me, and I want him\nmore and more to give himself up to me entirely. And he wants more and\nmore to get away from me. We walked to meet each other up to the time of\nour love, and then we have been irresistibly drifting in different\ndirections. And there's no altering that. He tells me I'm insanely\njealous, and I have told myself that I am insanely jealous; but it's not\ntrue. I'm not jealous, but I'm unsatisfied. But...\" she opened her lips,\nand shifted her place in the carriage in the excitement, aroused by the\nthought that suddenly struck her. \"If I could be anything but a\nmistress, passionately caring for nothing but his caresses; but I can't\nand I don't care to be anything else. And by that desire I rouse\naversion in him, and he rouses fury in me, and it cannot be different.\nDon't I know that he wouldn't deceive me, that he has no schemes about\nPrincess Sorokina, that he's not in love with Kitty, that he won't\ndesert me! I know all that, but it makes it no better for me. If without\nloving me, from _duty_ he'll be good and kind to me, without what I\nwant, that's a thousand times worse than unkindness! That's--hell! And\nthat's just how it is. For a long while now he hasn't loved me. And\nwhere love ends, hate begins. I don't know these streets at all. Hills\nit seems, and still houses, and houses .... And in the houses always\npeople and people.... How many of them, no end, and all hating each\nother! Come, let me try and think what I want, to make me happy. Well?\nSuppose I am divorced, and Alexey Alexandrovitch lets me have Seryozha,\nand I marry Vronsky.\" Thinking of Alexey Alexandrovitch, she at once\npictured him with extraordinary vividness as though he were alive before\nher, with his mild, lifeless, dull eyes, the blue veins in his white\nhands, his intonations and the cracking of his fingers, and remembering\nthe feeling which had existed between them, and which was also called\nlove, she shuddered with loathing. \"Well, I'm divorced, and become\nVronsky's wife. Well, will Kitty cease looking at me as she looked at me\ntoday? No. And will Seryozha leave off asking and wondering about my two\nhusbands? And is there any new feeling I can awaken between Vronsky and\nme? Is there possible, if not happiness, some sort of ease from misery?\nNo, no!\" she answered now without the slightest hesitation. \"Impossible!\nWe are drawn apart by life, and I make his unhappiness, and he mine, and\nthere's no altering him or me. Every attempt has been made, the screw\nhas come unscrewed. Oh, a beggar woman with a baby. She thinks I'm sorry\nfor her. Aren't we all flung into the world only to hate each other, and\nso to torture ourselves and each other? Schoolboys coming--laughing\nSeryozha?\" she thought. \"I thought, too, that I loved him, and used to\nbe touched by my own tenderness. But I have lived without him, I gave\nhim up for another love, and did not regret the exchange till that love\nwas satisfied.\" And with loathing she thought of what she meant by that\nlove. And the clearness with which she saw life now, her own and all\nmen's, was a pleasure to her. \"It's so with me and Pyotr, and the\ncoachman, Fyodor, and that merchant, and all the people living along the\nVolga, where those placards invite one to go, and everywhere and\nalways,\" she thought when she had driven under the low-pitched roof of\nthe Nizhigorod station, and the porters ran to meet her.\n\n\"A ticket to Obiralovka?\" said Pyotr.\n\nShe had utterly forgotten where and why she was going, and only by a\ngreat effort she understood the question.\n\n\"Yes,\" she said, handing him her purse, and taking a little red bag in\nher hand, she got out of the carriage.\n\nMaking her way through the crowd to the first-class waiting-room, she\ngradually recollected all the details of her position, and the plans\nbetween which she was hesitating. And again at the old sore places, hope\nand then despair poisoned the wounds of her tortured, fearfully\nthrobbing heart. As she sat on the star-shaped sofa waiting for the\ntrain, she gazed with aversion at the people coming and going (they were\nall hateful to her), and thought how she would arrive at the station,\nwould write him a note, and what she would write to him, and how he was\nat this moment complaining to his mother of his position, not\nunderstanding her sufferings, and how she would go into the room, and\nwhat she would say to him. Then she thought that life might still be\nhappy, and how miserably she loved and hated him, and how fearfully her\nheart was beating.\n\n\n\nChapter 31\n\n\nA bell rang, some young men, ugly and impudent, and at the same time\ncareful of the impression they were making, hurried by. Pyotr, too,\ncrossed the room in his livery and top-boots, with his dull, animal\nface, and came up to her to take her to the train. Some noisy men were\nquiet as she passed them on the platform, and one whispered something\nabout her to another--something vile, no doubt. She stepped up on the\nhigh step, and sat down in a carriage by herself on a dirty seat that\nhad been white. Her bag lay beside her, shaken up and down by the\nspringiness of the seat. With a foolish smile Pyotr raised his hat, with\nits colored band, at the window, in token of farewell; an impudent\nconductor slammed the door and the latch. A grotesque-looking lady\nwearing a bustle (Anna mentally undressed the woman, and was appalled at\nher hideousness), and a little girl laughing affectedly ran down the\nplatform.\n\n\"Katerina Andreevna, she's got them all, _ma tante!_\" cried the girl.\n\n\"Even the child's hideous and affected,\" thought Anna. To avoid seeing\nanyone, she got up quickly and seated herself at the opposite window of\nthe empty carriage. A misshapen-looking peasant covered with dirt, in a\ncap from which his tangled hair stuck out all round, passed by that\nwindow, stooping down to the carriage wheels. \"There's something\nfamiliar about that hideous peasant,\" thought Anna. And remembering her\ndream, she moved away to the opposite door, shaking with terror. The\nconductor opened the door and let in a man and his wife.\n\n\"Do you wish to get out?\"\n\nAnna made no answer. The conductor and her two fellow-passengers did not\nnotice under her veil her panic-stricken face. She went back to her\ncorner and sat down. The couple seated themselves on the opposite side,\nand intently but surreptitiously scrutinized her clothes. Both husband\nand wife seemed repulsive to Anna. The husband asked, would she allow\nhim to smoke, obviously not with a view to smoking but to getting into\nconversation with her. Receiving her assent, he said to his wife in\nFrench something about caring less to smoke than to talk. They made\ninane and affected remarks to one another, entirely for her benefit.\nAnna saw clearly that they were sick of each other, and hated each\nother. And no one could have helped hating such miserable monstrosities.\n\nA second bell sounded, and was followed by moving of luggage, noise,\nshouting and laughter. It was so clear to Anna that there was nothing\nfor anyone to be glad of, that this laughter irritated her agonizingly,\nand she would have liked to stop up her ears not to hear it. At last the\nthird bell rang, there was a whistle and a hiss of steam, and a clank of\nchains, and the man in her carriage crossed himself. \"It would be\ninteresting to ask him what meaning he attaches to that,\" thought Anna,\nlooking angrily at him. She looked past the lady out of the window at\nthe people who seemed whirling by as they ran beside the train or stood\non the platform. The train, jerking at regular intervals at the\njunctions of the rails, rolled by the platform, past a stone wall, a\nsignal-box, past other trains; the wheels, moving more smoothly and\nevenly, resounded with a slight clang on the rails. The window was\nlighted up by the bright evening sun, and a slight breeze fluttered the\ncurtain. Anna forgot her fellow passengers, and to the light swaying of\nthe train she fell to thinking again, as she breathed the fresh air.\n\n\"Yes, what did I stop at? That I couldn't conceive a position in which\nlife would not be a misery, that we are all created to be miserable, and\nthat we all know it, and all invent means of deceiving each other. And\nwhen one sees the truth, what is one to do?\"\n\n\"That's what reason is given man for, to escape from what worries him,\"\nsaid the lady in French, lisping affectedly, and obviously pleased with\nher phrase.\n\nThe words seemed an answer to Anna's thoughts.\n\n\"To escape from what worries him,\" repeated Anna. And glancing at the\nred-cheeked husband and the thin wife, she saw that the sickly wife\nconsidered herself misunderstood, and the husband deceived her and\nencouraged her in that idea of herself. Anna seemed to see all their\nhistory and all the crannies of their souls, as it were turning a light\nupon them. But there was nothing interesting in them, and she pursued\nher thought.\n\n\"Yes, I'm very much worried, and that's what reason was given me for, to\nescape; so then one must escape: why not put out the light when there's\nnothing more to look at, when it's sickening to look at it all? But how?\nWhy did the conductor run along the footboard, why are they shrieking,\nthose young men in that train? why are they talking, why are they\nlaughing? It's all falsehood, all lying, all humbug, all cruelty!...\"\n\nWhen the train came into the station, Anna got out into the crowd of\npassengers, and moving apart from them as if they were lepers, she stood\non the platform, trying to think what she had come here for, and what\nshe meant to do. Everything that had seemed to her possible before was\nnow so difficult to consider, especially in this noisy crowd of hideous\npeople who would not leave her alone. One moment porters ran up to her\nproffering their services, then young men, clacking their heels on the\nplanks of the platform and talking loudly, stared at her; people meeting\nher dodged past on the wrong side. Remembering that she had meant to go\non further if there were no answer, she stopped a porter and asked if\nher coachman were not here with a note from Count Vronsky.\n\n\"Count Vronsky? They sent up here from the Vronskys just this minute, to\nmeet Princess Sorokina and her daughter. And what is the coachman like?\"\n\nJust as she was talking to the porter, the coachman Mihail, red and\ncheerful in his smart blue coat and chain, evidently proud of having so\nsuccessfully performed his commission, came up to her and gave her a\nletter. She broke it open, and her heart ached before she had read it.\n\n\"I am very sorry your note did not reach me. I will be home at ten,\"\nVronsky had written carelessly....\n\n\"Yes, that's what I expected!\" she said to herself with an evil smile.\n\n\"Very good, you can go home then,\" she said softly, addressing Mihail.\nShe spoke softly because the rapidity of her heart's beating hindered\nher breathing. \"No, I won't let you make me miserable,\" she thought\nmenacingly, addressing not him, not herself, but the power that made her\nsuffer, and she walked along the platform.\n\nTwo maid-servants walking along the platform turned their heads, staring\nat her and making some remarks about her dress. \"Real,\" they said of the\nlace she was wearing. The young men would not leave her in peace. Again\nthey passed by, peering into her face, and with a laugh shouting\nsomething in an unnatural voice. The station-master coming up asked her\nwhether she was going by train. A boy selling kvas never took his eyes\noff her. \"My God! where am I to go?\" she thought, going farther and\nfarther along the platform. At the end she stopped. Some ladies and\nchildren, who had come to meet a gentleman in spectacles, paused in\ntheir loud laughter and talking, and stared at her as she reached them.\nShe quickened her pace and walked away from them to the edge of the\nplatform. A luggage train was coming in. The platform began to sway, and\nshe fancied she was in the train again.\n\nAnd all at once she thought of the man crushed by the train the day she\nhad first met Vronsky, and she knew what she had to do. With a rapid,\nlight step she went down the steps that led from the tank to the rails\nand stopped quite near the approaching train.\n\nShe looked at the lower part of the carriages, at the screws and chains\nand the tall cast-iron wheel of the first carriage slowly moving up, and\ntrying to measure the middle between the front and back wheels, and the\nvery minute when that middle point would be opposite her.\n\n\"There,\" she said to herself, looking into the shadow of the carriage,\nat the sand and coal dust which covered the sleepers--\"there, in the\nvery middle, and I will punish him and escape from everyone and from\nmyself.\"\n\nShe tried to fling herself below the wheels of the first carriage as it\nreached her; but the red bag which she tried to drop out of her hand\ndelayed her, and she was too late; she missed the moment. She had to\nwait for the next carriage. A feeling such as she had known when about\nto take the first plunge in bathing came upon her, and she crossed\nherself. That familiar gesture brought back into her soul a whole series\nof girlish and childish memories, and suddenly the darkness that had\ncovered everything for her was torn apart, and life rose up before her\nfor an instant with all its bright past joys. But she did not take her\neyes from the wheels of the second carriage. And exactly at the moment\nwhen the space between the wheels came opposite her, she dropped the red\nbag, and drawing her head back into her shoulders, fell on her hands\nunder the carriage, and lightly, as though she would rise again at once,\ndropped on to her knees. And at the same instant she was terror-stricken\nat what she was doing. \"Where am I? What am I doing? What for?\" She\ntried to get up, to drop backwards; but something huge and merciless\nstruck her on the head and rolled her on her back. \"Lord, forgive me\nall!\" she said, feeling it impossible to struggle. A peasant muttering\nsomething was working at the iron above her. And the light by which she\nhad read the book filled with troubles, falsehoods, sorrow, and evil,\nflared up more brightly than ever before, lighted up for her all that\nhad been in darkness, flickered, began to grow dim, and was quenched\nforever.\n\n\n\n\nPART EIGHT\n\n\n\nChapter 1\n\n\nAlmost two months had passed. The hot summer was half over, but Sergey\nIvanovitch was only just preparing to leave Moscow.\n\nSergey Ivanovitch's life had not been uneventful during this time. A\nyear ago he had finished his book, the fruit of six years' labor,\n\"Sketch of a Survey of the Principles and Forms of Government in Europe\nand Russia.\" Several sections of this book and its introduction had\nappeared in periodical publications, and other parts had been read by\nSergey Ivanovitch to persons of his circle, so that the leading ideas of\nthe work could not be completely novel to the public. But still Sergey\nIvanovitch had expected that on its appearance his book would be sure to\nmake a serious impression on society, and if it did not cause a\nrevolution in social science it would, at any rate, make a great stir in\nthe scientific world.\n\nAfter the most conscientious revision the book had last year been\npublished, and had been distributed among the booksellers.\n\nThough he asked no one about it, reluctantly and with feigned\nindifference answered his friends' inquiries as to how the book was\ngoing, and did not even inquire of the booksellers how the book was\nselling, Sergey Ivanovitch was all on the alert, with strained\nattention, watching for the first impression his book would make in the\nworld and in literature.\n\nBut a week passed, a second, a third, and in society no impression\nwhatever could be detected. His friends who were specialists and\nsavants, occasionally--unmistakably from politeness--alluded to it. The\nrest of his acquaintances, not interested in a book on a learned\nsubject, did not talk of it at all. And society generally--just now\nespecially absorbed in other things--was absolutely indifferent. In the\npress, too, for a whole month there was not a word about his book.\n\nSergey Ivanovitch had calculated to a nicety the time necessary for\nwriting a review, but a month passed, and a second, and still there was\nsilence.\n\nOnly in the _Northern Beetle_, in a comic article on the singer\nDrabanti, who had lost his voice, there was a contemptuous allusion to\nKoznishev's book, suggesting that the book had been long ago seen\nthrough by everyone, and was a subject of general ridicule.\n\nAt last in the third month a critical article appeared in a serious\nreview. Sergey Ivanovitch knew the author of the article. He had met him\nonce at Golubtsov's.\n\nThe author of the article was a young man, an invalid, very bold as a\nwriter, but extremely deficient in breeding and shy in personal\nrelations.\n\nIn spite of his absolute contempt for the author, it was with complete\nrespect that Sergey Ivanovitch set about reading the article. The\narticle was awful.\n\nThe critic had undoubtedly put an interpretation upon the book which\ncould not possibly be put on it. But he had selected quotations so\nadroitly that for people who had not read the book (and obviously\nscarcely anyone had read it) it seemed absolutely clear that the whole\nbook was nothing but a medley of high-flown phrases, not even--as\nsuggested by marks of interrogation--used appropriately, and that the\nauthor of the book was a person absolutely without knowledge of the\nsubject. And all this was so wittily done that Sergey Ivanovitch would\nnot have disowned such wit himself. But that was just what was so awful.\n\nIn spite of the scrupulous conscientiousness with which Sergey\nIvanovitch verified the correctness of the critic's arguments, he did\nnot for a minute stop to ponder over the faults and mistakes which were\nridiculed; but unconsciously he began immediately trying to recall every\ndetail of his meeting and conversation with the author of the article.\n\n\"Didn't I offend him in some way?\" Sergey Ivanovitch wondered.\n\nAnd remembering that when they met he had corrected the young man about\nsomething he had said that betrayed ignorance, Sergey Ivanovitch found\nthe clue to explain the article.\n\nThis article was followed by a deadly silence about the book both in the\npress and in conversation, and Sergey Ivanovitch saw that his six years'\ntask, toiled at with such love and labor, had gone, leaving no trace.\n\nSergey Ivanovitch's position was still more difficult from the fact\nthat, since he had finished his book, he had had no more literary work\nto do, such as had hitherto occupied the greater part of his time.\n\nSergey Ivanovitch was clever, cultivated, healthy, and energetic, and he\ndid not know what use to make of his energy. Conversations in drawing\nrooms, in meetings, assemblies, and committees--everywhere where talk\nwas possible--took up part of his time. But being used for years to town\nlife, he did not waste all his energies in talk, as his less experienced\nyounger brother did, when he was in Moscow. He had a great deal of\nleisure and intellectual energy still to dispose of.\n\nFortunately for him, at this period so difficult for him from the\nfailure of his book, the various public questions of the dissenting\nsects, of the American alliance, of the Samara famine, of exhibitions,\nand of spiritualism, were definitely replaced in public interest by the\nSlavonic question, which had hitherto rather languidly interested\nsociety, and Sergey Ivanovitch, who had been one of the first to raise\nthis subject, threw himself into it heart and soul.\n\nIn the circle to which Sergey Ivanovitch belonged, nothing was talked of\nor written about just now but the Servian War. Everything that the idle\ncrowd usually does to kill time was done now for the benefit of the\nSlavonic States. Balls, concerts, dinners, matchboxes, ladies' dresses,\nbeer, restaurants--everything testified to sympathy with the Slavonic\npeoples.\n\nFrom much of what was spoken and written on the subject, Sergey\nIvanovitch differed on various points. He saw that the Slavonic question\nhad become one of those fashionable distractions which succeed one\nanother in providing society with an object and an occupation. He saw,\ntoo, that a great many people were taking up the subject from motives of\nself-interest and self-advertisement. He recognized that the newspapers\npublished a great deal that was superfluous and exaggerated, with the\nsole aim of attracting attention and outbidding one another. He saw that\nin this general movement those who thrust themselves most forward and\nshouted the loudest were men who had failed and were smarting under a\nsense of injury--generals without armies, ministers not in the ministry,\njournalists not on any paper, party leaders without followers. He saw\nthat there was a great deal in it that was frivolous and absurd. But he\nsaw and recognized an unmistakable growing enthusiasm, uniting all\nclasses, with which it was impossible not to sympathize. The massacre of\nmen who were fellow Christians, and of the same Slavonic race, excited\nsympathy for the sufferers and indignation against the oppressors. And\nthe heroism of the Servians and Montenegrins struggling for a great\ncause begot in the whole people a longing to help their brothers not in\nword but in deed.\n\nBut in this there was another aspect that rejoiced Sergey Ivanovitch.\nThat was the manifestation of public opinion. The public had definitely\nexpressed its desire. The soul of the people had, as Sergey Ivanovitch\nsaid, found expression. And the more he worked in this cause, the more\nincontestable it seemed to him that it was a cause destined to assume\nvast dimensions, to create an epoch.\n\nHe threw himself heart and soul into the service of this great cause,\nand forgot to think about his book. His whole time now was engrossed by\nit, so that he could scarcely manage to answer all the letters and\nappeals addressed to him. He worked the whole spring and part of the\nsummer, and it was only in July that he prepared to go away to his\nbrother's in the country.\n\nHe was going both to rest for a fortnight, and in the very heart of the\npeople, in the farthest wilds of the country, to enjoy the sight of that\nuplifting of the spirit of the people, of which, like all residents in\nthe capital and big towns, he was fully persuaded. Katavasov had long\nbeen meaning to carry out his promise to stay with Levin, and so he was\ngoing with him.\n\n\n\nChapter 2\n\n\nSergey Ivanovitch and Katavasov had only just reached the station of the\nKursk line, which was particularly busy and full of people that day,\nwhen, looking round for the groom who was following with their things,\nthey saw a party of volunteers driving up in four cabs. Ladies met them\nwith bouquets of flowers, and followed by the rushing crowd they went\ninto the station.\n\nOne of the ladies, who had met the volunteers, came out of the hall and\naddressed Sergey Ivanovitch.\n\n\"You too come to see them off?\" she asked in French.\n\n\"No, I'm going away myself, princess. To my brother's for a holiday. Do\nyou always see them off?\" said Sergey Ivanovitch with a hardly\nperceptible smile.\n\n\"Oh, that would be impossible!\" answered the princess. \"Is it true that\neight hundred have been sent from us already? Malvinsky wouldn't believe\nme.\"\n\n\"More than eight hundred. If you reckon those who have been sent not\ndirectly from Moscow, over a thousand,\" answered Sergey Ivanovitch.\n\n\"There! That's just what I said!\" exclaimed the lady. \"And it's true\ntoo, I suppose, that more than a million has been subscribed?\"\n\n\"Yes, princess.\"\n\n\"What do you say to today's telegram? Beaten the Turks again.\"\n\n\"Yes, so I saw,\" answered Sergey Ivanovitch. They were speaking of the\nlast telegram stating that the Turks had been for three days in\nsuccession beaten at all points and put to flight, and that tomorrow a\ndecisive engagement was expected.\n\n\"Ah, by the way, a splendid young fellow has asked leave to go, and\nthey've made some difficulty, I don't know why. I meant to ask you; I\nknow him; please write a note about his case. He's being sent by\nCountess Lidia Ivanovna.\"\n\nSergey Ivanovitch asked for all the details the princess knew about the\nyoung man, and going into the first-class waiting-room, wrote a note to\nthe person on whom the granting of leave of absence depended, and handed\nit to the princess.\n\n\"You know Count Vronsky, the notorious one ... is going by this train?\"\nsaid the princess with a smile full of triumph and meaning, when he\nfound her again and gave her the letter.\n\n\"I had heard he was going, but I did not know when. By this train?\"\n\n\"I've seen him. He's here: there's only his mother seeing him off. It's\nthe best thing, anyway, that he could do.\"\n\n\"Oh, yes, of course.\"\n\nWhile they were talking the crowd streamed by them into the dining room.\nThey went forward too, and heard a gentleman with a glass in his hand\ndelivering a loud discourse to the volunteers. \"In the service of\nreligion, humanity, and our brothers,\" the gentleman said, his voice\ngrowing louder and louder; \"to this great cause mother Moscow dedicates\nyou with her blessing. _Jivio!_\" he concluded, loudly and tearfully.\n\nEveryone shouted _Jivio!_ and a fresh crowd dashed into the hall, almost\ncarrying the princess off her legs.\n\n\"Ah, princess! that was something like!\" said Stepan Arkadyevitch,\nsuddenly appearing in the middle of the crowd and beaming upon them with\na delighted smile. \"Capitally, warmly said, wasn't it? Bravo! And Sergey\nIvanovitch! Why, you ought to have said something--just a few words, you\nknow, to encourage them; you do that so well,\" he added with a soft,\nrespectful, and discreet smile, moving Sergey Ivanovitch forward a\nlittle by the arm.\n\n\"No, I'm just off.\"\n\n\"Where to?\"\n\n\"To the country, to my brother's,\" answered Sergey Ivanovitch.\n\n\"Then you'll see my wife. I've written to her, but you'll see her first.\nPlease tell her that they've seen me and that it's 'all right,' as the\nEnglish say. She'll understand. Oh, and be so good as to tell her I'm\nappointed secretary of the committee.... But she'll understand! You\nknow, _les petites miseres de la vie humaine,_\" he said, as it were\napologizing to the princess. \"And Princess Myakaya--not Liza, but\nBibish--is sending a thousand guns and twelve nurses. Did I tell you?\"\n\n\"Yes, I heard so,\" answered Koznishev indifferently.\n\n\"It's a pity you're going away,\" said Stepan Arkadyevitch. \"Tomorrow\nwe're giving a dinner to two who're setting off--Dimer-Bartnyansky from\nPetersburg and our Veslovsky, Grisha. They're both going. Veslovsky's\nonly lately married. There's a fine fellow for you! Eh, princess?\" he\nturned to the lady.\n\nThe princess looked at Koznishev without replying. But the fact that\nSergey Ivanovitch and the princess seemed anxious to get rid of him did\nnot in the least disconcert Stepan Arkadyevitch. Smiling, he stared at\nthe feather in the princess's hat, and then about him as though he were\ngoing to pick something up. Seeing a lady approaching with a collecting\nbox, he beckoned her up and put in a five-rouble note.\n\n\"I can never see these collecting boxes unmoved while I've money in my\npocket,\" he said. \"And how about today's telegram? Fine chaps those\nMontenegrins!\"\n\n\"You don't say so!\" he cried, when the princess told him that Vronsky\nwas going by this train. For an instant Stepan Arkadyevitch's face\nlooked sad, but a minute later, when, stroking his mustaches and\nswinging as he walked, he went into the hall where Vronsky was, he had\ncompletely forgotten his own despairing sobs over his sister's corpse,\nand he saw in Vronsky only a hero and an old friend.\n\n\"With all his faults one can't refuse to do him justice,\" said the\nprincess to Sergey Ivanovitch as soon as Stepan Arkadyevitch had left\nthem. \"What a typically Russian, Slav nature! Only, I'm afraid it won't\nbe pleasant for Vronsky to see him. Say what you will, I'm touched by\nthat man's fate. Do talk to him a little on the way,\" said the princess.\n\n\"Yes, perhaps, if it happens so.\"\n\n\"I never liked him. But this atones for a great deal. He's not merely\ngoing himself, he's taking a squadron at his own expense.\"\n\n\"Yes, so I heard.\"\n\nA bell sounded. Everyone crowded to the doors. \"Here he is!\" said the\nprincess, indicating Vronsky, who with his mother on his arm walked by,\nwearing a long overcoat and wide-brimmed black hat. Oblonsky was walking\nbeside him, talking eagerly of something.\n\nVronsky was frowning and looking straight before him, as though he did\nnot hear what Stepan Arkadyevitch was saying.\n\nProbably on Oblonsky's pointing them out, he looked round in the\ndirection where the princess and Sergey Ivanovitch were standing, and\nwithout speaking lifted his hat. His face, aged and worn by suffering,\nlooked stony.\n\nGoing onto the platform, Vronsky left his mother and disappeared into a\ncompartment.\n\nOn the platform there rang out \"God save the Tsar,\" then shouts of\n\"hurrah!\" and _\"jivio!\"_ One of the volunteers, a tall, very young man\nwith a hollow chest, was particularly conspicuous, bowing and waving his\nfelt hat and a nosegay over his head. Then two officers emerged, bowing\ntoo, and a stout man with a big beard, wearing a greasy forage cap.\n\n\n\nChapter 3\n\n\nSaying good-bye to the princess, Sergey Ivanovitch was joined by\nKatavasov; together they got into a carriage full to overflowing, and\nthe train started.\n\nAt Tsaritsino station the train was met by a chorus of young men singing\n\"Hail to Thee!\" Again the volunteers bowed and poked their heads out,\nbut Sergey Ivanovitch paid no attention to them. He had had so much to\ndo with the volunteers that the type was familiar to him and did not\ninterest him. Katavasov, whose scientific work had prevented his having\na chance of observing them hitherto, was very much interested in them\nand questioned Sergey Ivanovitch.\n\nSergey Ivanovitch advised him to go into the second-class and talk to\nthem himself. At the next station Katavasov acted on this suggestion.\n\nAt the first stop he moved into the second-class and made the\nacquaintance of the volunteers. They were sitting in a corner of the\ncarriage, talking loudly and obviously aware that the attention of the\npassengers and Katavasov as he got in was concentrated upon them. More\nloudly than all talked the tall, hollow-chested young man. He was\nunmistakably tipsy, and was relating some story that had occurred at his\nschool. Facing him sat a middle-aged officer in the Austrian military\njacket of the Guards uniform. He was listening with a smile to the\nhollow-chested youth, and occasionally pulling him up. The third, in an\nartillery uniform, was sitting on a box beside them. A fourth was\nasleep.\n\nEntering into conversation with the youth, Katavasov learned that he was\na wealthy Moscow merchant who had run through a large fortune before he\nwas two-and-twenty. Katavasov did not like him, because he was unmanly\nand effeminate and sickly. He was obviously convinced, especially now\nafter drinking, that he was performing a heroic action, and he bragged\nof it in the most unpleasant way.\n\nThe second, the retired officer, made an unpleasant impression too upon\nKatavasov. He was, it seemed, a man who had tried everything. He had\nbeen on a railway, had been a land-steward, and had started factories,\nand he talked, quite without necessity, of all he had done, and used\nlearned expressions quite inappropriately.\n\nThe third, the artilleryman, on the contrary, struck Katavasov very\nfavorably. He was a quiet, modest fellow, unmistakably impressed by the\nknowledge of the officer and the heroic self-sacrifice of the merchant\nand saying nothing about himself. When Katavasov asked him what had\nimpelled him to go to Servia, he answered modestly:\n\n\"Oh, well, everyone's going. The Servians want help, too. I'm sorry for\nthem.\"\n\n\"Yes, you artillerymen especially are scarce there,\" said Katavasov.\n\n\"Oh, I wasn't long in the artillery, maybe they'll put me into the\ninfantry or the cavalry.\"\n\n\"Into the infantry when they need artillery more than anything?\" said\nKatavasov, fancying from the artilleryman's apparent age that he must\nhave reached a fairly high grade.\n\n\"I wasn't long in the artillery; I'm a cadet retired,\" he said, and he\nbegan to explain how he had failed in his examination.\n\nAll of this together made a disagreeable impression on Katavasov, and\nwhen the volunteers got out at a station for a drink, Katavasov would\nhave liked to compare his unfavorable impression in conversation with\nsomeone. There was an old man in the carriage, wearing a military\novercoat, who had been listening all the while to Katavasov's\nconversation with the volunteers. When they were left alone, Katavasov\naddressed him.\n\n\"What different positions they come from, all those fellows who are\ngoing off there,\" Katavasov said vaguely, not wishing to express his own\nopinion, and at the same time anxious to find out the old man's views.\n\nThe old man was an officer who had served on two campaigns. He knew what\nmakes a soldier, and judging by the appearance and the talk of those\npersons, by the swagger with which they had recourse to the bottle on\nthe journey, he considered them poor soldiers. Moreover, he lived in a\ndistrict town, and he was longing to tell how one soldier had\nvolunteered from his town, a drunkard and a thief whom no one would\nemploy as a laborer. But knowing by experience that in the present\ncondition of the public temper it was dangerous to express an opinion\nopposed to the general one, and especially to criticize the volunteers\nunfavorably, he too watched Katavasov without committing himself.\n\n\"Well, men are wanted there,\" he said, laughing with his eyes. And they\nfell to talking of the last war news, and each concealed from the other\nhis perplexity as to the engagement expected next day, since the Turks\nhad been beaten, according to the latest news, at all points. And so\nthey parted, neither giving expression to his opinion.\n\nKatavasov went back to his own carriage, and with reluctant hypocrisy\nreported to Sergey Ivanovitch his observations of the volunteers, from\nwhich it would appear that they were capital fellows.\n\nAt a big station at a town the volunteers were again greeted with shouts\nand singing, again men and women with collecting boxes appeared, and\nprovincial ladies brought bouquets to the volunteers and followed them\ninto the refreshment room; but all this was on a much smaller and\nfeebler scale than in Moscow.\n\n\n\nChapter 4\n\n\nWhile the train was stopping at the provincial town, Sergey Ivanovitch\ndid not go to the refreshment room, but walked up and down the platform.\n\nThe first time he passed Vronsky's compartment he noticed that the\ncurtain was drawn over the window; but as he passed it the second time\nhe saw the old countess at the window. She beckoned to Koznishev.\n\n\"I'm going, you see, taking him as far as Kursk,\" she said.\n\n\"Yes, so I heard,\" said Sergey Ivanovitch, standing at her window and\npeeping in. \"What a noble act on his part!\" he added, noticing that\nVronsky was not in the compartment.\n\n\"Yes, after his misfortune, what was there for him to do?\"\n\n\"What a terrible thing it was!\" said Sergey Ivanovitch.\n\n\"Ah, what I have been through! But do get in.... Ah, what I have been\nthrough!\" she repeated, when Sergey Ivanovitch had got in and sat down\nbeside her. \"You can't conceive it! For six weeks he did not speak to\nanyone, and would not touch food except when I implored him. And not for\none minute could we leave him alone. We took away everything he could\nhave used against himself. We lived on the ground floor, but there was\nno reckoning on anything. You know, of course, that he had shot himself\nonce already on her account,\" she said, and the old lady's eyelashes\ntwitched at the recollection. \"Yes, hers was the fitting end for such a\nwoman. Even the death she chose was low and vulgar.\"\n\n\"It's not for us to judge, countess,\" said Sergey Ivanovitch; \"but I can\nunderstand that it has been very hard for you.\"\n\n\"Ah, don't speak of it! I was staying on my estate, and he was with me.\nA note was brought him. He wrote an answer and sent it off. We hadn't an\nidea that she was close by at the station. In the evening I had only\njust gone to my room, when my Mary told me a lady had thrown herself\nunder the train. Something seemed to strike me at once. I knew it was\nshe. The first thing I said was, he was not to be told. But they'd told\nhim already. His coachman was there and saw it all. When I ran into his\nroom, he was beside himself--it was fearful to see him. He didn't say a\nword, but galloped off there. I don't know to this day what happened\nthere, but he was brought back at death's door. I shouldn't have known\nhim. _Prostration complete,_ the doctor said. And that was followed\nalmost by madness. Oh, why talk of it!\" said the countess with a wave of\nher hand. \"It was an awful time! No, say what you will, she was a bad\nwoman. Why, what is the meaning of such desperate passions? It was all\nto show herself something out of the way. Well, and that she did do. She\nbrought herself to ruin and two good men--her husband and my unhappy\nson.\"\n\n\"And what did her husband do?\" asked Sergey Ivanovitch.\n\n\"He has taken her daughter. Alexey was ready to agree to anything at\nfirst. Now it worries him terribly that he should have given his own\nchild away to another man. But he can't take back his word. Karenin came\nto the funeral. But we tried to prevent his meeting Alexey. For him, for\nher husband, it was easier, anyway. She had set him free. But my poor\nson was utterly given up to her. He had thrown up everything, his\ncareer, me, and even then she had no mercy on him, but of set purpose\nshe made his ruin complete. No, say what you will, her very death was\nthe death of a vile woman, of no religious feeling. God forgive me, but\nI can't help hating the memory of her, when I look at my son's misery!\"\n\n\"But how is he now?\"\n\n\"It was a blessing from Providence for us--this Servian war. I'm old,\nand I don't understand the rights and wrongs of it, but it's come as a\nprovidential blessing to him. Of course for me, as his mother, it's\nterrible; and what's worse, they say, _ce n'est pas tres bien vu a\nPetersbourg_. But it can't be helped! It was the one thing that could\nrouse him. Yashvin--a friend of his--he had lost all he had at cards and\nhe was going to Servia. He came to see him and persuaded him to go. Now\nit's an interest for him. Do please talk to him a little. I want to\ndistract his mind. He's so low-spirited. And as bad luck would have it,\nhe has toothache too. But he'll be delighted to see you. Please do talk\nto him; he's walking up and down on that side.\"\n\nSergey Ivanovitch said he would be very glad to, and crossed over to the\nother side of the station.\n\n\n\nChapter 5\n\n\nIn the slanting evening shadows cast by the baggage piled up on the\nplatform, Vronsky in his long overcoat and slouch hat, with his hands in\nhis pockets, strode up and down, like a wild beast in a cage, turning\nsharply after twenty paces. Sergey Ivanovitch fancied, as he approached\nhim, that Vronsky saw him but was pretending not to see. This did not\naffect Sergey Ivanovitch in the slightest. He was above all personal\nconsiderations with Vronsky.\n\nAt that moment Sergey Ivanovitch looked upon Vronsky as a man taking an\nimportant part in a great cause, and Koznishev thought it his duty to\nencourage him and express his approval. He went up to him.\n\nVronsky stood still, looked intently at him, recognized him, and going a\nfew steps forward to meet him, shook hands with him very warmly.\n\n\"Possibly you didn't wish to see me,\" said Sergey Ivanovitch, \"but\ncouldn't I be of use to you?\"\n\n\"There's no one I should less dislike seeing than you,\" said Vronsky.\n\"Excuse me; and there's nothing in life for me to like.\"\n\n\"I quite understand, and I merely meant to offer you my services,\" said\nSergey Ivanovitch, scanning Vronsky's face, full of unmistakable\nsuffering. \"Wouldn't it be of use to you to have a letter to\nRistitch--to Milan?\"\n\n\"Oh, no!\" Vronsky said, seeming to understand him with difficulty. \"If\nyou don't mind, let's walk on. It's so stuffy among the carriages. A\nletter? No, thank you; to meet death one needs no letters of\nintroduction. Nor for the Turks...\" he said, with a smile that was\nmerely of the lips. His eyes still kept their look of angry suffering.\n\n\"Yes; but you might find it easier to get into relations, which are\nafter all essential, with anyone prepared to see you. But that's as you\nlike. I was very glad to hear of your intention. There have been so many\nattacks made on the volunteers, and a man like you raises them in public\nestimation.\"\n\n\"My use as a man,\" said Vronsky, \"is that life's worth nothing to me.\nAnd that I've enough bodily energy to cut my way into their ranks, and\nto trample on them or fall--I know that. I'm glad there's something to\ngive my life for, for it's not simply useless but loathsome to me.\nAnyone's welcome to it.\" And his jaw twitched impatiently from the\nincessant gnawing toothache, that prevented him from even speaking with\na natural expression.\n\n\"You will become another man, I predict,\" said Sergey Ivanovitch,\nfeeling touched. \"To deliver one's brother-men from bondage is an aim\nworth death and life. God grant you success outwardly--and inwardly\npeace,\" he added, and he held out his hand. Vronsky warmly pressed his\noutstretched hand.\n\n\"Yes, as a weapon I may be of some use. But as a man, I'm a wreck,\" he\njerked out.\n\nHe could hardly speak for the throbbing ache in his strong teeth, that\nwere like rows of ivory in his mouth. He was silent, and his eyes rested\non the wheels of the tender, slowly and smoothly rolling along the\nrails.\n\nAnd all at once a different pain, not an ache, but an inner trouble,\nthat set his whole being in anguish, made him for an instant forget his\ntoothache. As he glanced at the tender and the rails, under the\ninfluence of the conversation with a friend he had not met since his\nmisfortune, he suddenly recalled _her_--that is, what was left of her\nwhen he had run like one distraught into the cloak room of the railway\nstation--on the table, shamelessly sprawling out among strangers, the\nbloodstained body so lately full of life; the head unhurt dropping back\nwith its weight of hair, and the curling tresses about the temples, and\nthe exquisite face, with red, half-opened mouth, the strange, fixed\nexpression, piteous on the lips and awful in the still open eyes, that\nseemed to utter that fearful phrase--that he would be sorry for it--that\nshe had said when they were quarreling.\n\nAnd he tried to think of her as she was when he met her the first time,\nat a railway station too, mysterious, exquisite, loving, seeking and\ngiving happiness, and not cruelly revengeful as he remembered her on\nthat last moment. He tried to recall his best moments with her, but\nthose moments were poisoned forever. He could only think of her as\ntriumphant, successful in her menace of a wholly useless remorse never\nto be effaced. He lost all consciousness of toothache, and his face\nworked with sobs.\n\nPassing twice up and down beside the baggage in silence and regaining\nhis self-possession, he addressed Sergey Ivanovitch calmly:\n\n\"You have had no telegrams since yesterday's? Yes, driven back for a\nthird time, but a decisive engagement expected for tomorrow.\"\n\nAnd after talking a little more of King Milan's proclamation, and the\nimmense effect it might have, they parted, going to their carriages on\nhearing the second bell.\n\n\n\nChapter 6\n\n\nSergey Ivanovitch had not telegraphed to his brother to send to meet\nhim, as he did not know when he should be able to leave Moscow. Levin\nwas not at home when Katavasov and Sergey Ivanovitch in a fly hired at\nthe station drove up to the steps of the Pokrovskoe house, as black as\nMoors from the dust of the road. Kitty, sitting on the balcony with her\nfather and sister, recognized her brother-in-law, and ran down to meet\nhim.\n\n\"What a shame not to have let us know,\" she said, giving her hand to\nSergey Ivanovitch, and putting her forehead up for him to kiss.\n\n\"We drove here capitally, and have not put you out,\" answered Sergey\nIvanovitch. \"I'm so dirty. I'm afraid to touch you. I've been so busy, I\ndidn't know when I should be able to tear myself away. And so you're\nstill as ever enjoying your peaceful, quiet happiness,\" he said,\nsmiling, \"out of the reach of the current in your peaceful backwater.\nHere's our friend Fyodor Vassilievitch who has succeeded in getting here\nat last.\"\n\n\"But I'm not a negro, I shall look like a human being when I wash,\" said\nKatavasov in his jesting fashion, and he shook hands and smiled, his\nteeth flashing white in his black face.\n\n\"Kostya will be delighted. He has gone to his settlement. It's time he\nshould be home.\"\n\n\"Busy as ever with his farming. It really is a peaceful backwater,\" said\nKatavasov; \"while we in town think of nothing but the Servian war. Well,\nhow does our friend look at it? He's sure not to think like other\npeople.\"\n\n\"Oh, I don't know, like everybody else,\" Kitty answered, a little\nembarrassed, looking round at Sergey Ivanovitch. \"I'll send to fetch\nhim. Papa's staying with us. He's only just come home from abroad.\"\n\nAnd making arrangements to send for Levin and for the guests to wash,\none in his room and the other in what had been Dolly's, and giving\norders for their luncheon, Kitty ran out onto the balcony, enjoying the\nfreedom, and rapidity of movement, of which she had been deprived during\nthe months of her pregnancy.\n\n\"It's Sergey Ivanovitch and Katavasov, a professor,\" she said.\n\n\"Oh, that's a bore in this heat,\" said the prince.\n\n\"No, papa, he's very nice, and Kostya's very fond of him,\" Kitty said,\nwith a deprecating smile, noticing the irony on her father's face.\n\n\"Oh, I didn't say anything.\"\n\n\"You go to them, darling,\" said Kitty to her sister, \"and entertain\nthem. They saw Stiva at the station; he was quite well. And I must run\nto Mitya. As ill-luck would have it, I haven't fed him since tea. He's\nawake now, and sure to be screaming.\" And feeling a rush of milk, she\nhurried to the nursery.\n\nThis was not a mere guess; her connection with the child was still so\nclose, that she could gauge by the flow of her milk his need of food,\nand knew for certain he was hungry.\n\nShe knew he was crying before she reached the nursery. And he was indeed\ncrying. She heard him and hastened. But the faster she went, the louder\nhe screamed. It was a fine healthy scream, hungry and impatient.\n\n\"Has he been screaming long, nurse, very long?\" said Kitty hurriedly,\nseating herself on a chair, and preparing to give the baby the breast.\n\"But give me him quickly. Oh, nurse, how tiresome you are! There, tie\nthe cap afterwards, do!\"\n\nThe baby's greedy scream was passing into sobs.\n\n\"But you can't manage so, ma'am,\" said Agafea Mihalovna, who was almost\nalways to be found in the nursery. \"He must be put straight. A-oo!\na-oo!\" she chanted over him, paying no attention to the mother.\n\nThe nurse brought the baby to his mother. Agafea Mihalovna followed him\nwith a face dissolving with tenderness.\n\n\"He knows me, he knows me. In God's faith, Katerina Alexandrovna, ma'am,\nhe knew me!\" Agafea Mihalovna cried above the baby's screams.\n\nBut Kitty did not hear her words. Her impatience kept growing, like the\nbaby's.\n\nTheir impatience hindered things for a while. The baby could not get\nhold of the breast right, and was furious.\n\nAt last, after despairing, breathless screaming, and vain sucking,\nthings went right, and mother and child felt simultaneously soothed, and\nboth subsided into calm.\n\n\"But poor darling, he's all in perspiration!\" said Kitty in a whisper,\ntouching the baby.\n\n\"What makes you think he knows you?\" she added, with a sidelong glance\nat the baby's eyes, that peered roguishly, as she fancied, from under\nhis cap, at his rhythmically puffing cheeks, and the little red-palmed\nhand he was waving.\n\n\"Impossible! If he knew anyone, he would have known me,\" said Kitty, in\nresponse to Agafea Mihalovna's statement, and she smiled.\n\nShe smiled because, though she said he could not know her, in her heart\nshe was sure that he knew not merely Agafea Mihalovna, but that he knew\nand understood everything, and knew and understood a great deal too that\nno one else knew, and that she, his mother, had learned and come to\nunderstand only through him. To Agafea Mihalovna, to the nurse, to his\ngrandfather, to his father even, Mitya was a living being, requiring\nonly material care, but for his mother he had long been a mortal being,\nwith whom there had been a whole series of spiritual relations already.\n\n\"When he wakes up, please God, you shall see for yourself. Then when I\ndo like this, he simply beams on me, the darling! Simply beams like a\nsunny day!\" said Agafea Mihalovna.\n\n\"Well, well; then we shall see,\" whispered Kitty. \"But now go away, he's\ngoing to sleep.\"\n\n\n\nChapter 7\n\n\nAgafea Mihalovna went out on tiptoe; the nurse let down the blind,\nchased a fly out from under the muslin canopy of the crib, and a\nbumblebee struggling on the window-frame, and sat down waving a faded\nbranch of birch over the mother and the baby.\n\n\"How hot it is! if God would send a drop of rain,\" she said.\n\n\"Yes, yes, sh--sh--sh--\" was all Kitty answered, rocking a little, and\ntenderly squeezing the plump little arm, with rolls of fat at the wrist,\nwhich Mitya still waved feebly as he opened and shut his eyes. That hand\nworried Kitty; she longed to kiss the little hand, but was afraid to for\nfear of waking the baby. At last the little hand ceased waving, and the\neyes closed. Only from time to time, as he went on sucking, the baby\nraised his long, curly eyelashes and peeped at his mother with wet eyes,\nthat looked black in the twilight. The nurse had left off fanning, and\nwas dozing. From above came the peals of the old prince's voice, and the\nchuckle of Katavasov.\n\n\"They have got into talk without me,\" thought Kitty, \"but still it's\nvexing that Kostya's out. He's sure to have gone to the bee house again.\nThough it's a pity he's there so often, still I'm glad. It distracts his\nmind. He's become altogether happier and better now than in the spring.\nHe used to be so gloomy and worried that I felt frightened for him. And\nhow absurd he is!\" she whispered, smiling.\n\nShe knew what worried her husband. It was his unbelief. Although, if she\nhad been asked whether she supposed that in the future life, if he did\nnot believe, he would be damned, she would have had to admit that he\nwould be damned, his unbelief did not cause her unhappiness. And she,\nconfessing that for an unbeliever there can be no salvation, and loving\nher husband's soul more than anything in the world, thought with a smile\nof his unbelief, and told herself that he was absurd.\n\n\"What does he keep reading philosophy of some sort for all this year?\"\nshe wondered. \"If it's all written in those books, he can understand\nthem. If it's all wrong, why does he read them? He says himself that he\nwould like to believe. Then why is it he doesn't believe? Surely from\nhis thinking so much? And he thinks so much from being solitary. He's\nalways alone, alone. He can't talk about it all to us. I fancy he'll be\nglad of these visitors, especially Katavasov. He likes discussions with\nthem,\" she thought, and passed instantly to the consideration of where\nit would be more convenient to put Katavasov, to sleep alone or to share\nSergey Ivanovitch's room. And then an idea suddenly struck her, which\nmade her shudder and even disturb Mitya, who glanced severely at her. \"I\ndo believe the laundress hasn't sent the washing yet, and all the best\nsheets are in use. If I don't see to it, Agafea Mihalovna will give\nSergey Ivanovitch the wrong sheets,\" and at the very idea of this the\nblood rushed to Kitty's face.\n\n\"Yes, I will arrange it,\" she decided, and going back to her former\nthoughts, she remembered that some spiritual question of importance had\nbeen interrupted, and she began to recall what. \"Yes, Kostya, an\nunbeliever,\" she thought again with a smile.\n\n\"Well, an unbeliever then! Better let him always be one than like Madame\nStahl, or what I tried to be in those days abroad. No, he won't ever\nsham anything.\"\n\nAnd a recent instance of his goodness rose vividly to her mind. A\nfortnight ago a penitent letter had come from Stepan Arkadyevitch to\nDolly. He besought her to save his honor, to sell her estate to pay his\ndebts. Dolly was in despair, she detested her husband, despised him,\npitied him, resolved on a separation, resolved to refuse, but ended by\nagreeing to sell part of her property. After that, with an irrepressible\nsmile of tenderness, Kitty recalled her husband's shamefaced\nembarrassment, his repeated awkward efforts to approach the subject, and\nhow at last, having thought of the one means of helping Dolly without\nwounding her pride, he had suggested to Kitty--what had not occurred to\nher before--that she should give up her share of the property.\n\n\"He an unbeliever indeed! With his heart, his dread of offending anyone,\neven a child! Everything for others, nothing for himself. Sergey\nIvanovitch simply considers it as Kostya's duty to be his steward. And\nit's the same with his sister. Now Dolly and her children are under his\nguardianship; all these peasants who come to him every day, as though he\nwere bound to be at their service.\"\n\n\"Yes, only be like your father, only like him,\" she said, handing Mitya\nover to the nurse, and putting her lips to his cheek.\n\n\n\nChapter 8\n\n\nEver since, by his beloved brother's deathbed, Levin had first glanced\ninto the questions of life and death in the light of these new\nconvictions, as he called them, which had during the period from his\ntwentieth to his thirty-fourth year imperceptibly replaced his childish\nand youthful beliefs--he had been stricken with horror, not so much of\ndeath, as of life, without any knowledge of whence, and why, and how,\nand what it was. The physical organization, its decay, the\nindestructibility of matter, the law of the conservation of energy,\nevolution, were the words which usurped the place of his old belief.\nThese words and the ideas associated with them were very well for\nintellectual purposes. But for life they yielded nothing, and Levin felt\nsuddenly like a man who has changed his warm fur cloak for a muslin\ngarment, and going for the first time into the frost is immediately\nconvinced, not by reason, but by his whole nature that he is as good as\nnaked, and that he must infallibly perish miserably.\n\nFrom that moment, though he did not distinctly face it, and still went\non living as before, Levin had never lost this sense of terror at his\nlack of knowledge.\n\nHe vaguely felt, too, that what he called his new convictions were not\nmerely lack of knowledge, but that they were part of a whole order of\nideas, in which no knowledge of what he needed was possible.\n\nAt first, marriage, with the new joys and duties bound up with it, had\ncompletely crowded out these thoughts. But of late, while he was staying\nin Moscow after his wife's confinement, with nothing to do, the question\nthat clamored for solution had more and more often, more and more\ninsistently, haunted Levin's mind.\n\nThe question was summed up for him thus: \"If I do not accept the answers\nChristianity gives to the problems of my life, what answers do I\naccept?\" And in the whole arsenal of his convictions, so far from\nfinding any satisfactory answers, he was utterly unable to find anything\nat all like an answer.\n\nHe was in the position of a man seeking food in toy shops and tool\nshops.\n\nInstinctively, unconsciously, with every book, with every conversation,\nwith every man he met, he was on the lookout for light on these\nquestions and their solution.\n\nWhat puzzled and distracted him above everything was that the majority\nof men of his age and circle had, like him, exchanged their old beliefs\nfor the same new convictions, and yet saw nothing to lament in this, and\nwere perfectly satisfied and serene. So that, apart from the principal\nquestion, Levin was tortured by other questions too. Were these people\nsincere? he asked himself, or were they playing a part? or was it that\nthey understood the answers science gave to these problems in some\ndifferent, clearer sense than he did? And he assiduously studied both\nthese men's opinions and the books which treated of these scientific\nexplanations.\n\nOne fact he had found out since these questions had engrossed his mind,\nwas that he had been quite wrong in supposing from the recollections of\nthe circle of his young days at college, that religion had outlived its\nday, and that it was now practically non-existent. All the people\nnearest to him who were good in their lives were believers. The old\nprince, and Lvov, whom he liked so much, and Sergey Ivanovitch, and all\nthe women believed, and his wife believed as simply as he had believed\nin his earliest childhood, and ninety-nine hundredths of the Russian\npeople, all the working people for whose life he felt the deepest\nrespect, believed.\n\nAnother fact of which he became convinced, after reading many scientific\nbooks, was that the men who shared his views had no other construction\nto put on them, and that they gave no explanation of the questions which\nhe felt he could not live without answering, but simply ignored their\nexistence and attempted to explain other questions of no possible\ninterest to him, such as the evolution of organisms, the materialistic\ntheory of consciousness, and so forth.\n\nMoreover, during his wife's confinement, something had happened that\nseemed extraordinary to him. He, an unbeliever, had fallen into praying,\nand at the moment he prayed, he believed. But that moment had passed,\nand he could not make his state of mind at that moment fit into the rest\nof his life.\n\nHe could not admit that at that moment he knew the truth, and that now\nhe was wrong; for as soon as he began thinking calmly about it, it all\nfell to pieces. He could not admit that he was mistaken then, for his\nspiritual condition then was precious to him, and to admit that it was a\nproof of weakness would have been to desecrate those moments. He was\nmiserably divided against himself, and strained all his spiritual forces\nto the utmost to escape from this condition.\n\n\n\nChapter 9\n\n\nThese doubts fretted and harassed him, growing weaker or stronger from\ntime to time, but never leaving him. He read and thought, and the more\nhe read and the more he thought, the further he felt from the aim he was\npursuing.\n\nOf late in Moscow and in the country, since he had become convinced that\nhe would find no solution in the materialists, he had read and re-read\nthoroughly Plato, Spinoza, Kant, Schelling, Hegel, and Schopenhauer, the\nphilosophers who gave a non-materialistic explanation of life.\n\nTheir ideas seemed to him fruitful when he was reading or was himself\nseeking arguments to refute other theories, especially those of the\nmaterialists; but as soon as he began to read or sought for himself a\nsolution of problems, the same thing always happened. As long as he\nfollowed the fixed definition of obscure words such as _spirit, will,\nfreedom, essence,_ purposely letting himself go into the snare of words\nthe philosophers set for him, he seemed to comprehend something. But he\nhad only to forget the artificial train of reasoning, and to turn from\nlife itself to what had satisfied him while thinking in accordance with\nthe fixed definitions, and all this artificial edifice fell to pieces at\nonce like a house of cards, and it became clear that the edifice had\nbeen built up out of those transposed words, apart from anything in life\nmore important than reason.\n\nAt one time, reading Schopenhauer, he put in place of his will the word\n_love_, and for a couple of days this new philosophy charmed him, till\nhe removed a little away from it. But then, when he turned from life\nitself to glance at it again, it fell away too, and proved to be the\nsame muslin garment with no warmth in it.\n\nHis brother Sergey Ivanovitch advised him to read the theological works\nof Homiakov. Levin read the second volume of Homiakov's works, and in\nspite of the elegant, epigrammatic, argumentative style which at first\nrepelled him, he was impressed by the doctrine of the church he found in\nthem. He was struck at first by the idea that the apprehension of divine\ntruths had not been vouchsafed to man, but to a corporation of men bound\ntogether by love--to the church. What delighted him was the thought how\nmuch easier it was to believe in a still existing living church,\nembracing all the beliefs of men, and having God at its head, and\ntherefore holy and infallible, and from it to accept the faith in God,\nin the creation, the fall, the redemption, than to begin with God, a\nmysterious, far-away God, the creation, etc. But afterwards, on reading\na Catholic writer's history of the church, and then a Greek orthodox\nwriter's history of the church, and seeing that the two churches, in\ntheir very conception infallible, each deny the authority of the other,\nHomiakov's doctrine of the church lost all its charm for him, and this\nedifice crumbled into dust like the philosophers' edifices.\n\nAll that spring he was not himself, and went through fearful moments of\nhorror.\n\n\"Without knowing what I am and why I am here, life's impossible; and\nthat I can't know, and so I can't live,\" Levin said to himself.\n\n\"In infinite time, in infinite matter, in infinite space, is formed a\nbubble-organism, and that bubble lasts a while and bursts, and that\nbubble is Me.\"\n\nIt was an agonizing error, but it was the sole logical result of ages of\nhuman thought in that direction.\n\nThis was the ultimate belief on which all the systems elaborated by\nhuman thought in almost all their ramifications rested. It was the\nprevalent conviction, and of all other explanations Levin had\nunconsciously, not knowing when or how, chosen it, as anyway the\nclearest, and made it his own.\n\nBut it was not merely a falsehood, it was the cruel jeer of some wicked\npower, some evil, hateful power, to whom one could not submit.\n\nHe must escape from this power. And the means of escape every man had in\nhis own hands. He had but to cut short this dependence on evil. And\nthere was one means--death.\n\nAnd Levin, a happy father and husband, in perfect health, was several\ntimes so near suicide that he hid the cord that he might not be tempted\nto hang himself, and was afraid to go out with his gun for fear of\nshooting himself.\n\nBut Levin did not shoot himself, and did not hang himself; he went on\nliving.\n\n\n\nChapter 10\n\n\nWhen Levin thought what he was and what he was living for, he could find\nno answer to the questions and was reduced to despair, but he left off\nquestioning himself about it. It seemed as though he knew both what he\nwas and for what he was living, for he acted and lived resolutely and\nwithout hesitation. Indeed, in these latter days he was far more decided\nand unhesitating in life than he had ever been.\n\nWhen he went back to the country at the beginning of June, he went back\nalso to his usual pursuits. The management of the estate, his relations\nwith the peasants and the neighbors, the care of his household, the\nmanagement of his sister's and brother's property, of which he had the\ndirection, his relations with his wife and kindred, the care of his\nchild, and the new bee-keeping hobby he had taken up that spring, filled\nall his time.\n\nThese things occupied him now, not because he justified them to himself\nby any sort of general principles, as he had done in former days; on the\ncontrary, disappointed by the failure of his former efforts for the\ngeneral welfare, and too much occupied with his own thought and the mass\nof business with which he was burdened from all sides, he had completely\ngiven up thinking of the general good, and he busied himself with all\nthis work simply because it seemed to him that he must do what he was\ndoing--that he could not do otherwise. In former days--almost from\nchildhood, and increasingly up to full manhood--when he had tried to do\nanything that would be good for all, for humanity, for Russia, for the\nwhole village, he had noticed that the idea of it had been pleasant, but\nthe work itself had always been incoherent, that then he had never had a\nfull conviction of its absolute necessity, and that the work that had\nbegun by seeming so great, had grown less and less, till it vanished\ninto nothing. But now, since his marriage, when he had begun to confine\nhimself more and more to living for himself, though he experienced no\ndelight at all at the thought of the work he was doing, he felt a\ncomplete conviction of its necessity, saw that it succeeded far better\nthan in old days, and that it kept on growing more and more.\n\nNow, involuntarily it seemed, he cut more and more deeply into the soil\nlike a plough, so that he could not be drawn out without turning aside\nthe furrow.\n\nTo live the same family life as his father and forefathers--that is, in\nthe same condition of culture--and to bring up his children in the same,\nwas incontestably necessary. It was as necessary as dining when one was\nhungry. And to do this, just as it was necessary to cook dinner, it was\nnecessary to keep the mechanism of agriculture at Pokrovskoe going so as\nto yield an income. Just as incontestably as it was necessary to repay a\ndebt was it necessary to keep the property in such a condition that his\nson, when he received it as a heritage, would say \"thank you\" to his\nfather as Levin had said \"thank you\" to his grandfather for all he built\nand planted. And to do this it was necessary to look after the land\nhimself, not to let it, and to breed cattle, manure the fields, and\nplant timber.\n\nIt was impossible not to look after the affairs of Sergey Ivanovitch, of\nhis sister, of the peasants who came to him for advice and were\naccustomed to do so--as impossible as to fling down a child one is\ncarrying in one's arms. It was necessary to look after the comfort of\nhis sister-in-law and her children, and of his wife and baby, and it was\nimpossible not to spend with them at least a short time each day.\n\nAnd all this, together with shooting and his new bee-keeping, filled up\nthe whole of Levin's life, which had no meaning at all for him, when he\nbegan to think.\n\nBut besides knowing thoroughly what he had to do, Levin knew in just the\nsame way _how_ he had to do it all, and what was more important than the\nrest.\n\nHe knew he must hire laborers as cheaply as possible; but to hire men\nunder bond, paying them in advance at less than the current rate of\nwages, was what he must not do, even though it was very profitable.\nSelling straw to the peasants in times of scarcity of provender was what\nhe might do, even though he felt sorry for them; but the tavern and the\npothouse must be put down, though they were a source of income. Felling\ntimber must be punished as severely as possible, but he could not exact\nforfeits for cattle being driven onto his fields; and though it annoyed\nthe keeper and made the peasants not afraid to graze their cattle on his\nland, he could not keep their cattle as a punishment.\n\nTo Pyotr, who was paying a money-lender 10 per cent. a month, he must\nlend a sum of money to set him free. But he could not let off peasants\nwho did not pay their rent, nor let them fall into arrears. It was\nimpossible to overlook the bailiff's not having mown the meadows and\nletting the hay spoil; and it was equally impossible to mow those acres\nwhere a young copse had been planted. It was impossible to excuse a\nlaborer who had gone home in the busy season because his father was\ndying, however sorry he might feel for him, and he must subtract from\nhis pay those costly months of idleness. But it was impossible not to\nallow monthly rations to the old servants who were of no use for\nanything.\n\nLevin knew that when he got home he must first of all go to his wife,\nwho was unwell, and that the peasants who had been waiting for three\nhours to see him could wait a little longer. He knew too that,\nregardless of all the pleasure he felt in taking a swarm, he must forego\nthat pleasure, and leave the old man to see to the bees alone, while he\ntalked to the peasants who had come after him to the bee-house.\n\nWhether he were acting rightly or wrongly he did not know, and far from\ntrying to prove that he was, nowadays he avoided all thought or talk\nabout it.\n\nReasoning had brought him to doubt, and prevented him from seeing what\nhe ought to do and what he ought not. When he did not think, but simply\nlived, he was continually aware of the presence of an infallible judge\nin his soul, determining which of two possible courses of action was the\nbetter and which was the worse, and as soon as he did not act rightly,\nhe was at once aware of it.\n\nSo he lived, not knowing and not seeing any chance of knowing what he\nwas and what he was living for, and harassed at this lack of knowledge\nto such a point that he was afraid of suicide, and yet firmly laying\ndown his own individual definite path in life.\n\n\n\nChapter 11\n\n\nThe day on which Sergey Ivanovitch came to Pokrovskoe was one of Levin's\nmost painful days. It was the very busiest working time, when all the\npeasantry show an extraordinary intensity of self-sacrifice in labor,\nsuch as is never shown in any other conditions of life, and would be\nhighly esteemed if the men who showed these qualities themselves thought\nhighly of them, and if it were not repeated every year, and if the\nresults of this intense labor were not so simple.\n\nTo reap and bind the rye and oats and to carry it, to mow the meadows,\nturn over the fallows, thrash the seed and sow the winter corn--all this\nseems so simple and ordinary; but to succeed in getting through it all\neveryone in the village, from the old man to the young child, must toil\nincessantly for three or four weeks, three times as hard as usual,\nliving on rye-beer, onions, and black bread, thrashing and carrying the\nsheaves at night, and not giving more than two or three hours in the\ntwenty-four to sleep. And every year this is done all over Russia.\n\nHaving lived the greater part of his life in the country and in the\nclosest relations with the peasants, Levin always felt in this busy time\nthat he was infected by this general quickening of energy in the people.\n\nIn the early morning he rode over to the first sowing of the rye, and to\nthe oats, which were being carried to the stacks, and returning home at\nthe time his wife and sister-in-law were getting up, he drank coffee\nwith them and walked to the farm, where a new thrashing machine was to\nbe set working to get ready the seed-corn.\n\nHe was standing in the cool granary, still fragrant with the leaves of\nthe hazel branches interlaced on the freshly peeled aspen beams of the\nnew thatch roof. He gazed through the open door in which the dry bitter\ndust of the thrashing whirled and played, at the grass of the thrashing\nfloor in the sunlight and the fresh straw that had been brought in from\nthe barn, then at the speckly-headed, white-breasted swallows that flew\nchirping in under the roof and, fluttering their wings, settled in the\ncrevices of the doorway, then at the peasants bustling in the dark,\ndusty barn, and he thought strange thoughts.\n\n\"Why is it all being done?\" he thought. \"Why am I standing here, making\nthem work? What are they all so busy for, trying to show their zeal\nbefore me? What is that old Matrona, my old friend, toiling for? (I\ndoctored her, when the beam fell on her in the fire)\" he thought,\nlooking at a thin old woman who was raking up the grain, moving\npainfully with her bare, sun-blackened feet over the uneven, rough\nfloor. \"Then she recovered, but today or tomorrow or in ten years she\nwon't; they'll bury her, and nothing will be left either of her or of\nthat smart girl in the red jacket, who with that skillful, soft action\nshakes the ears out of their husks. They'll bury her and this piebald\nhorse, and very soon too,\" he thought, gazing at the heavily moving,\npanting horse that kept walking up the wheel that turned under him. \"And\nthey will bury her and Fyodor the thrasher with his curly beard full of\nchaff and his shirt torn on his white shoulders--they will bury him.\nHe's untying the sheaves, and giving orders, and shouting to the women,\nand quickly setting straight the strap on the moving wheel. And what's\nmore, it's not them alone--me they'll bury too, and nothing will be\nleft. What for?\"\n\nHe thought this, and at the same time looked at his watch to reckon how\nmuch they thrashed in an hour. He wanted to know this so as to judge by\nit the task to set for the day.\n\n\"It'll soon be one, and they're only beginning the third sheaf,\" thought\nLevin. He went up to the man that was feeding the machine, and shouting\nover the roar of the machine he told him to put it in more slowly. \"You\nput in too much at a time, Fyodor. Do you see--it gets choked, that's\nwhy it isn't getting on. Do it evenly.\"\n\nFyodor, black with the dust that clung to his moist face, shouted\nsomething in response, but still went on doing it as Levin did not want\nhim to.\n\nLevin, going up to the machine, moved Fyodor aside, and began feeding\nthe corn in himself. Working on till the peasants' dinner hour, which\nwas not long in coming, he went out of the barn with Fyodor and fell\ninto talk with him, stopping beside a neat yellow sheaf of rye laid on\nthe thrashing floor for seed.\n\nFyodor came from a village at some distance from the one in which Levin\nhad once allotted land to his cooperative association. Now it had been\nlet to a former house porter.\n\nLevin talked to Fyodor about this land and asked whether Platon, a\nwell-to-do peasant of good character belonging to the same village,\nwould not take the land for the coming year.\n\n\"It's a high rent; it wouldn't pay Platon, Konstantin Dmitrievitch,\"\nanswered the peasant, picking the ears off his sweat-drenched shirt.\n\n\"But how does Kirillov make it pay?\"\n\n\"Mituh!\" (so the peasant called the house porter, in a tone of\ncontempt), \"you may be sure he'll make it pay, Konstantin Dmitrievitch!\nHe'll get his share, however he has to squeeze to get it! He's no mercy\non a Christian. But Uncle Fokanitch\" (so he called the old peasant\nPlaton), \"do you suppose he'd flay the skin off a man? Where there's\ndebt, he'll let anyone off. And he'll not wring the last penny out. He's\na man too.\"\n\n\"But why will he let anyone off?\"\n\n\"Oh, well, of course, folks are different. One man lives for his own\nwants and nothing else, like Mituh, he only thinks of filling his belly,\nbut Fokanitch is a righteous man. He lives for his soul. He does not\nforget God.\"\n\n\"How thinks of God? How does he live for his soul?\" Levin almost\nshouted.\n\n\"Why, to be sure, in truth, in God's way. Folks are different. Take you\nnow, you wouldn't wrong a man....\"\n\n\"Yes, yes, good-bye!\" said Levin, breathless with excitement, and\nturning round he took his stick and walked quickly away towards home. At\nthe peasant's words that Fokanitch lived for his soul, in truth, in\nGod's way, undefined but significant ideas seemed to burst out as though\nthey had been locked up, and all striving towards one goal, they\nthronged whirling through his head, blinding him with their light.\n\n\n\nChapter 12\n\n\nLevin strode along the highroad, absorbed not so much in his thoughts\n(he could not yet disentangle them) as in his spiritual condition,\nunlike anything he had experienced before.\n\nThe words uttered by the peasant had acted on his soul like an electric\nshock, suddenly transforming and combining into a single whole the whole\nswarm of disjointed, impotent, separate thoughts that incessantly\noccupied his mind. These thoughts had unconsciously been in his mind\neven when he was talking about the land.\n\nHe was aware of something new in his soul, and joyfully tested this new\nthing, not yet knowing what it was.\n\n\"Not living for his own wants, but for God? For what God? And could one\nsay anything more senseless than what he said? He said that one must not\nlive for one's own wants, that is, that one must not live for what we\nunderstand, what we are attracted by, what we desire, but must live for\nsomething incomprehensible, for God, whom no one can understand nor even\ndefine. What of it? Didn't I understand those senseless words of\nFyodor's? And understanding them, did I doubt of their truth? Did I\nthink them stupid, obscure, inexact? No, I understood him, and exactly\nas he understands the words. I understood them more fully and clearly\nthan I understand anything in life, and never in my life have I doubted\nnor can I doubt about it. And not only I, but everyone, the whole world\nunderstands nothing fully but this, and about this only they have no\ndoubt and are always agreed.\n\n\"And I looked out for miracles, complained that I did not see a miracle\nwhich would convince me. A material miracle would have persuaded me. And\nhere is a miracle, the sole miracle possible, continually existing,\nsurrounding me on all sides, and I never noticed it!\n\n\"Fyodor says that Kirillov lives for his belly. That's comprehensible\nand rational. All of us as rational beings can't do anything else but\nlive for our belly. And all of a sudden the same Fyodor says that one\nmustn't live for one's belly, but must live for truth, for God, and at a\nhint I understand him! And I and millions of men, men who lived ages ago\nand men living now--peasants, the poor in spirit and the learned, who\nhave thought and written about it, in their obscure words saying the\nsame thing--we are all agreed about this one thing: what we must live\nfor and what is good. I and all men have only one firm, incontestable,\nclear knowledge, and that knowledge cannot be explained by the\nreason--it is outside it, and has no causes and can have no effects.\n\n\"If goodness has causes, it is not goodness; if it has effects, a\nreward, it is not goodness either. So goodness is outside the chain of\ncause and effect.\n\n\"And yet I know it, and we all know it.\n\n\"What could be a greater miracle than that?\n\n\"Can I have found the solution of it all? can my sufferings be over?\"\nthought Levin, striding along the dusty road, not noticing the heat nor\nhis weariness, and experiencing a sense of relief from prolonged\nsuffering. This feeling was so delicious that it seemed to him\nincredible. He was breathless with emotion and incapable of going\nfarther; he turned off the road into the forest and lay down in the\nshade of an aspen on the uncut grass. He took his hat off his hot head\nand lay propped on his elbow in the lush, feathery, woodland grass.\n\n\"Yes, I must make it clear to myself and understand,\" he thought,\nlooking intently at the untrampled grass before him, and following the\nmovements of a green beetle, advancing along a blade of couch-grass and\nlifting up in its progress a leaf of goat-weed. \"What have I\ndiscovered?\" he asked himself, bending aside the leaf of goat-weed out\nof the beetle's way and twisting another blade of grass above for the\nbeetle to cross over onto it. \"What is it makes me glad? What have I\ndiscovered?\n\n\"I have discovered nothing. I have only found out what I knew. I\nunderstand the force that in the past gave me life, and now too gives me\nlife. I have been set free from falsity, I have found the Master.\n\n\"Of old I used to say that in my body, that in the body of this grass\nand of this beetle (there, she didn't care for the grass, she's opened\nher wings and flown away), there was going on a transformation of matter\nin accordance with physical, chemical, and physiological laws. And in\nall of us, as well as in the aspens and the clouds and the misty\npatches, there was a process of evolution. Evolution from what? into\nwhat?--Eternal evolution and struggle.... As though there could be any\nsort of tendency and struggle in the eternal! And I was astonished that\nin spite of the utmost effort of thought along that road I could not\ndiscover the meaning of life, the meaning of my impulses and yearnings.\nNow I say that I know the meaning of my life: 'To live for God, for my\nsoul.' And this meaning, in spite of its clearness, is mysterious and\nmarvelous. Such, indeed, is the meaning of everything existing. Yes,\npride,\" he said to himself, turning over on his stomach and beginning to\ntie a noose of blades of grass, trying not to break them.\n\n\"And not merely pride of intellect, but dulness of intellect. And most\nof all, the deceitfulness; yes, the deceitfulness of intellect. The\ncheating knavishness of intellect, that's it,\" he said to himself.\n\nAnd he briefly went through, mentally, the whole course of his ideas\nduring the last two years, the beginning of which was the clear\nconfronting of death at the sight of his dear brother hopelessly ill.\n\nThen, for the first time, grasping that for every man, and himself too,\nthere was nothing in store but suffering, death, and forgetfulness, he\nhad made up his mind that life was impossible like that, and that he\nmust either interpret life so that it would not present itself to him as\nthe evil jest of some devil, or shoot himself.\n\nBut he had not done either, but had gone on living, thinking, and\nfeeling, and had even at that very time married, and had had many joys\nand had been happy, when he was not thinking of the meaning of his life.\n\nWhat did this mean? It meant that he had been living rightly, but\nthinking wrongly.\n\nHe had lived (without being aware of it) on those spiritual truths that\nhe had sucked in with his mother's milk, but he had thought, not merely\nwithout recognition of these truths, but studiously ignoring them.\n\nNow it was clear to him that he could only live by virtue of the beliefs\nin which he had been brought up.\n\n\"What should I have been, and how should I have spent my life, if I had\nnot had these beliefs, if I had not known that I must live for God and\nnot for my own desires? I should have robbed and lied and killed.\nNothing of what makes the chief happiness of my life would have existed\nfor me.\" And with the utmost stretch of imagination he could not\nconceive the brutal creature he would have been himself, if he had not\nknown what he was living for.\n\n\"I looked for an answer to my question. And thought could not give an\nanswer to my question--it is incommensurable with my question. The\nanswer has been given me by life itself, in my knowledge of what is\nright and what is wrong. And that knowledge I did not arrive at in any\nway, it was given to me as to all men, _given_, because I could not have\ngot it from anywhere.\n\n\"Where could I have got it? By reason could I have arrived at knowing\nthat I must love my neighbor and not oppress him? I was told that in my\nchildhood, and I believed it gladly, for they told me what was already\nin my soul. But who discovered it? Not reason. Reason discovered the\nstruggle for existence, and the law that requires us to oppress all who\nhinder the satisfaction of our desires. That is the deduction of reason.\nBut loving one's neighbor reason could never discover, because it's\nirrational.\"\n\n\n\nChapter 13\n\n\nAnd Levin remembered a scene he had lately witnessed between Dolly and\nher children. The children, left to themselves, had begun cooking\nraspberries over the candles and squirting milk into each other's mouths\nwith a syringe. Their mother, catching them at these pranks, began\nreminding them in Levin's presence of the trouble their mischief gave to\nthe grown-up people, and that this trouble was all for their sake, and\nthat if they smashed the cups they would have nothing to drink their tea\nout of, and that if they wasted the milk, they would have nothing to\neat, and die of hunger.\n\nAnd Levin had been struck by the passive, weary incredulity with which\nthe children heard what their mother said to them. They were simply\nannoyed that their amusing play had been interrupted, and did not\nbelieve a word of what their mother was saying. They could not believe\nit indeed, for they could not take in the immensity of all they\nhabitually enjoyed, and so could not conceive that what they were\ndestroying was the very thing they lived by.\n\n\"That all comes of itself,\" they thought, \"and there's nothing\ninteresting or important about it because it has always been so, and\nalways will be so. And it's all always the same. We've no need to think\nabout that, it's all ready. But we want to invent something of our own,\nand new. So we thought of putting raspberries in a cup, and cooking them\nover a candle, and squirting milk straight into each other's mouths.\nThat's fun, and something new, and not a bit worse than drinking out of\ncups.\"\n\n\"Isn't it just the same that we do, that I did, searching by the aid of\nreason for the significance of the forces of nature and the meaning of\nthe life of man?\" he thought.\n\n\"And don't all the theories of philosophy do the same, trying by the\npath of thought, which is strange and not natural to man, to bring him\nto a knowledge of what he has known long ago, and knows so certainly\nthat he could not live at all without it? Isn't it distinctly to be seen\nin the development of each philosopher's theory, that he knows what is\nthe chief significance of life beforehand, just as positively as the\npeasant Fyodor, and not a bit more clearly than he, and is simply trying\nby a dubious intellectual path to come back to what everyone knows?\n\n\"Now then, leave the children to themselves to get things alone and make\ntheir crockery, get the milk from the cows, and so on. Would they be\nnaughty then? Why, they'd die of hunger! Well, then, leave us with our\npassions and thoughts, without any idea of the one God, of the Creator,\nor without any idea of what is right, without any idea of moral evil.\n\n\"Just try and build up anything without those ideas!\n\n\"We only try to destroy them, because we're spiritually provided for.\nExactly like the children!\n\n\"Whence have I that joyful knowledge, shared with the peasant, that\nalone gives peace to my soul? Whence did I get it?\n\n\"Brought up with an idea of God, a Christian, my whole life filled with\nthe spiritual blessings Christianity has given me, full of them, and\nliving on those blessings, like the children I did not understand them,\nand destroy, that is try to destroy, what I live by. And as soon as an\nimportant moment of life comes, like the children when they are cold and\nhungry, I turn to Him, and even less than the children when their mother\nscolds them for their childish mischief, do I feel that my childish\nefforts at wanton madness are reckoned against me.\n\n\"Yes, what I know, I know not by reason, but it has been given to me,\nrevealed to me, and I know it with my heart, by faith in the chief thing\ntaught by the church.\n\n\"The church! the church!\" Levin repeated to himself. He turned over on\nthe other side, and leaning on his elbow, fell to gazing into the\ndistance at a herd of cattle crossing over to the river.\n\n\"But can I believe in all the church teaches?\" he thought, trying\nhimself, and thinking of everything that could destroy his present peace\nof mind. Intentionally he recalled all those doctrines of the church\nwhich had always seemed most strange and had always been a stumbling\nblock to him.\n\n\"The Creation? But how did I explain existence? By existence? By\nnothing? The devil and sin. But how do I explain evil?... The\natonement?...\n\n\"But I know nothing, nothing, and I can know nothing but what has been\ntold to me and all men.\"\n\nAnd it seemed to him that there was not a single article of faith of the\nchurch which could destroy the chief thing--faith in God, in goodness,\nas the one goal of man's destiny.\n\nUnder every article of faith of the church could be put the faith in the\nservice of truth instead of one's desires. And each doctrine did not\nsimply leave that faith unshaken, each doctrine seemed essential to\ncomplete that great miracle, continually manifest upon earth, that made\nit possible for each man and millions of different sorts of men, wise\nmen and imbeciles, old men and children--all men, peasants, Lvov, Kitty,\nbeggars and kings to understand perfectly the same one thing, and to\nbuild up thereby that life of the soul which alone is worth living, and\nwhich alone is precious to us.\n\nLying on his back, he gazed up now into the high, cloudless sky. \"Do I\nnot know that that is infinite space, and that it is not a round arch?\nBut, however I screw up my eyes and strain my sight, I cannot see it not\nround and not bounded, and in spite of my knowing about infinite space,\nI am incontestably right when I see a solid blue dome, and more right\nthan when I strain my eyes to see beyond it.\"\n\nLevin ceased thinking, and only, as it were, listened to mysterious\nvoices that seemed talking joyfully and earnestly within him.\n\n\"Can this be faith?\" he thought, afraid to believe in his happiness. \"My\nGod, I thank Thee!\" he said, gulping down his sobs, and with both hands\nbrushing away the tears that filled his eyes.\n\n\n\nChapter 14\n\n\nLevin looked before him and saw a herd of cattle, then he caught sight\nof his trap with Raven in the shafts, and the coachman, who, driving up\nto the herd, said something to the herdsman. Then he heard the rattle of\nthe wheels and the snort of the sleek horse close by him. But he was so\nburied in his thoughts that he did not even wonder why the coachman had\ncome for him.\n\nHe only thought of that when the coachman had driven quite up to him and\nshouted to him. \"The mistress sent me. Your brother has come, and some\ngentleman with him.\"\n\nLevin got into the trap and took the reins. As though just roused out of\nsleep, for a long while Levin could not collect his faculties. He stared\nat the sleek horse flecked with lather between his haunches and on his\nneck, where the harness rubbed, stared at Ivan the coachman sitting\nbeside him, and remembered that he was expecting his brother, thought\nthat his wife was most likely uneasy at his long absence, and tried to\nguess who was the visitor who had come with his brother. And his brother\nand his wife and the unknown guest seemed to him now quite different\nfrom before. He fancied that now his relations with all men would be\ndifferent.\n\n\"With my brother there will be none of that aloofness there always used\nto be between us, there will be no disputes; with Kitty there shall\nnever be quarrels; with the visitor, whoever he may be, I will be\nfriendly and nice; with the servants, with Ivan, it will all be\ndifferent.\"\n\nPulling the stiff rein and holding in the good horse that snorted with\nimpatience and seemed begging to be let go, Levin looked round at Ivan\nsitting beside him, not knowing what to do with his unoccupied hand,\ncontinually pressing down his shirt as it puffed out, and he tried to\nfind something to start a conversation about with him. He would have\nsaid that Ivan had pulled the saddle-girth up too high, but that was\nlike blame, and he longed for friendly, warm talk. Nothing else occurred\nto him.\n\n\"Your honor must keep to the right and mind that stump,\" said the\ncoachman, pulling the rein Levin held.\n\n\"Please don't touch and don't teach me!\" said Levin, angered by this\ninterference. Now, as always, interference made him angry, and he felt\nsorrowfully at once how mistaken had been his supposition that his\nspiritual condition could immediately change him in contact with\nreality.\n\nHe was not a quarter of a mile from home when he saw Grisha and Tanya\nrunning to meet him.\n\n\"Uncle Kostya! mamma's coming, and grandfather, and Sergey Ivanovitch,\nand someone else,\" they said, clambering up into the trap.\n\n\"Who is he?\"\n\n\"An awfully terrible person! And he does like this with his arms,\" said\nTanya, getting up in the trap and mimicking Katavasov.\n\n\"Old or young?\" asked Levin, laughing, reminded of someone, he did not\nknow whom, by Tanya's performance.\n\n\"Oh, I hope it's not a tiresome person!\" thought Levin.\n\nAs soon as he turned, at a bend in the road, and saw the party coming,\nLevin recognized Katavasov in a straw hat, walking along swinging his\narms just as Tanya had shown him. Katavasov was very fond of discussing\nmetaphysics, having derived his notions from natural science writers who\nhad never studied metaphysics, and in Moscow Levin had had many\narguments with him of late.\n\nAnd one of these arguments, in which Katavasov had obviously considered\nthat he came off victorious, was the first thing Levin thought of as he\nrecognized him.\n\n\"No, whatever I do, I won't argue and give utterance to my ideas\nlightly,\" he thought.\n\nGetting out of the trap and greeting his brother and Katavasov, Levin\nasked about his wife.\n\n\"She has taken Mitya to Kolok\" (a copse near the house). \"She meant to\nhave him out there because it's so hot indoors,\" said Dolly. Levin had\nalways advised his wife not to take the baby to the wood, thinking it\nunsafe, and he was not pleased to hear this.\n\n\"She rushes about from place to place with him,\" said the prince,\nsmiling. \"I advised her to try putting him in the ice cellar.\"\n\n\"She meant to come to the bee house. She thought you would be there. We\nare going there,\" said Dolly.\n\n\"Well, and what are you doing?\" said Sergey Ivanovitch, falling back\nfrom the rest and walking beside him.\n\n\"Oh, nothing special. Busy as usual with the land,\" answered Levin.\n\"Well, and what about you? Come for long? We have been expecting you for\nsuch a long time.\"\n\n\"Only for a fortnight. I've a great deal to do in Moscow.\"\n\nAt these words the brothers' eyes met, and Levin, in spite of the desire\nhe always had, stronger than ever just now, to be on affectionate and\nstill more open terms with his brother, felt an awkwardness in looking\nat him. He dropped his eyes and did not know what to say.\n\nCasting over the subjects of conversation that would be pleasant to\nSergey Ivanovitch, and would keep him off the subject of the Servian war\nand the Slavonic question, at which he had hinted by the allusion to\nwhat he had to do in Moscow, Levin began to talk of Sergey Ivanovitch's\nbook.\n\n\"Well, have there been reviews of your book?\" he asked.\n\nSergey Ivanovitch smiled at the intentional character of the question.\n\n\"No one is interested in that now, and I less than anyone,\" he said.\n\"Just look, Darya Alexandrovna, we shall have a shower,\" he added,\npointing with a sunshade at the white rain clouds that showed above the\naspen tree-tops.\n\nAnd these words were enough to re-establish again between the brothers\nthat tone--hardly hostile, but chilly--which Levin had been so longing\nto avoid.\n\nLevin went up to Katavasov.\n\n\"It was jolly of you to make up your mind to come,\" he said to him.\n\n\"I've been meaning to a long while. Now we shall have some discussion,\nwe'll see to that. Have you been reading Spencer?\"\n\n\"No, I've not finished reading him,\" said Levin. \"But I don't need him\nnow.\"\n\n\"How's that? that's interesting. Why so?\"\n\n\"I mean that I'm fully convinced that the solution of the problems that\ninterest me I shall never find in him and his like. Now...\"\n\nBut Katavasov's serene and good-humored expression suddenly struck him,\nand he felt such tenderness for his own happy mood, which he was\nunmistakably disturbing by this conversation, that he remembered his\nresolution and stopped short.\n\n\"But we'll talk later on,\" he added. \"If we're going to the bee house,\nit's this way, along this little path,\" he said, addressing them all.\n\nGoing along the narrow path to a little uncut meadow covered on one side\nwith thick clumps of brilliant heart's-ease among which stood up here\nand there tall, dark green tufts of hellebore, Levin settled his guests\nin the dense, cool shade of the young aspens on a bench and some stumps\npurposely put there for visitors to the bee house who might be afraid of\nthe bees, and he went off himself to the hut to get bread, cucumbers,\nand fresh honey, to regale them with.\n\nTrying to make his movements as deliberate as possible, and listening to\nthe bees that buzzed more and more frequently past him, he walked along\nthe little path to the hut. In the very entry one bee hummed angrily,\ncaught in his beard, but he carefully extricated it. Going into the\nshady outer room, he took down from the wall his veil, that hung on a\npeg, and putting it on, and thrusting his hands into his pockets, he\nwent into the fenced-in bee-garden, where there stood in the midst of a\nclosely mown space in regular rows, fastened with bast on posts, all the\nhives he knew so well, the old stocks, each with its own history, and\nalong the fences the younger swarms hived that year. In front of the\nopenings of the hives, it made his eyes giddy to watch the bees and\ndrones whirling round and round about the same spot, while among them\nthe working bees flew in and out with spoils or in search of them,\nalways in the same direction into the wood to the flowering lime trees\nand back to the hives.\n\nHis ears were filled with the incessant hum in various notes, now the\nbusy hum of the working bee flying quickly off, then the blaring of the\nlazy drone, and the excited buzz of the bees on guard protecting their\nproperty from the enemy and preparing to sting. On the farther side of\nthe fence the old bee-keeper was shaving a hoop for a tub, and he did\nnot see Levin. Levin stood still in the midst of the beehives and did\nnot call him.\n\nHe was glad of a chance to be alone to recover from the influence of\nordinary actual life, which had already depressed his happy mood. He\nthought that he had already had time to lose his temper with Ivan, to\nshow coolness to his brother, and to talk flippantly with Katavasov.\n\n\"Can it have been only a momentary mood, and will it pass and leave no\ntrace?\" he thought. But the same instant, going back to his mood, he\nfelt with delight that something new and important had happened to him.\nReal life had only for a time overcast the spiritual peace he had found,\nbut it was still untouched within him.\n\nJust as the bees, whirling round him, now menacing him and distracting\nhis attention, prevented him from enjoying complete physical peace,\nforced him to restrain his movements to avoid them, so had the petty\ncares that had swarmed about him from the moment he got into the trap\nrestricted his spiritual freedom; but that lasted only so long as he was\namong them. Just as his bodily strength was still unaffected, in spite\nof the bees, so too was the spiritual strength that he had just become\naware of.\n\n\n\nChapter 15\n\n\n\"Do you know, Kostya, with whom Sergey Ivanovitch traveled on his way\nhere?\" said Dolly, doling out cucumbers and honey to the children; \"with\nVronsky! He's going to Servia.\"\n\n\"And not alone; he's taking a squadron out with him at his own expense,\"\nsaid Katavasov.\n\n\"That's the right thing for him,\" said Levin. \"Are volunteers still\ngoing out then?\" he added, glancing at Sergey Ivanovitch.\n\nSergey Ivanovitch did not answer. He was carefully with a blunt knife\ngetting a live bee covered with sticky honey out of a cup full of white\nhoneycomb.\n\n\"I should think so! You should have seen what was going on at the\nstation yesterday!\" said Katavasov, biting with a juicy sound into a\ncucumber.\n\n\"Well, what is one to make of it? For mercy's sake, do explain to me,\nSergey Ivanovitch, where are all those volunteers going, whom are they\nfighting with?\" asked the old prince, unmistakably taking up a\nconversation that had sprung up in Levin's absence.\n\n\"With the Turks,\" Sergey Ivanovitch answered, smiling serenely, as he\nextricated the bee, dark with honey and helplessly kicking, and put it\nwith the knife on a stout aspen leaf.\n\n\"But who has declared war on the Turks?--Ivan Ivanovitch Ragozov and\nCountess Lidia Ivanovna, assisted by Madame Stahl?\"\n\n\"No one has declared war, but people sympathize with their neighbors'\nsufferings and are eager to help them,\" said Sergey Ivanovitch.\n\n\"But the prince is not speaking of help,\" said Levin, coming to the\nassistance of his father-in-law, \"but of war. The prince says that\nprivate persons cannot take part in war without the permission of the\ngovernment.\"\n\n\"Kostya, mind, that's a bee! Really, they'll sting us!\" said Dolly,\nwaving away a wasp.\n\n\"But that's not a bee, it's a wasp,\" said Levin.\n\n\"Well now, well, what's your own theory?\" Katavasov said to Levin with a\nsmile, distinctly challenging him to a discussion. \"Why have not private\npersons the right to do so?\"\n\n\"Oh, my theory's this: war is on one side such a beastly, cruel, and\nawful thing, that no one man, not to speak of a Christian, can\nindividually take upon himself the responsibility of beginning wars;\nthat can only be done by a government, which is called upon to do this,\nand is driven inevitably into war. On the other hand, both political\nscience and common sense teach us that in matters of state, and\nespecially in the matter of war, private citizens must forego their\npersonal individual will.\"\n\nSergey Ivanovitch and Katavasov had their replies ready, and both began\nspeaking at the same time.\n\n\"But the point is, my dear fellow, that there may be cases when the\ngovernment does not carry out the will of the citizens and then the\npublic asserts its will,\" said Katavasov.\n\nBut evidently Sergey Ivanovitch did not approve of this answer. His\nbrows contracted at Katavasov's words and he said something else.\n\n\"You don't put the matter in its true light. There is no question here\nof a declaration of war, but simply the expression of a human Christian\nfeeling. Our brothers, one with us in religion and in race, are being\nmassacred. Even supposing they were not our brothers nor\nfellow-Christians, but simply children, women, old people, feeling is\naroused and Russians go eagerly to help in stopping these atrocities.\nFancy, if you were going along the street and saw drunken men beating a\nwoman or a child--I imagine you would not stop to inquire whether war\nhad been declared on the men, but would throw yourself on them, and\nprotect the victim.\"\n\n\"But I should not kill them,\" said Levin.\n\n\"Yes, you would kill them.\"\n\n\"I don't know. If I saw that, I might give way to my impulse of the\nmoment, but I can't say beforehand. And such a momentary impulse there\nis not, and there cannot be, in the case of the oppression of the\nSlavonic peoples.\"\n\n\"Possibly for you there is not; but for others there is,\" said Sergey\nIvanovitch, frowning with displeasure. \"There are traditions still\nextant among the people of Slavs of the true faith suffering under the\nyoke of the 'unclean sons of Hagar.' The people have heard of the\nsufferings of their brethren and have spoken.\"\n\n\"Perhaps so,\" said Levin evasively; \"but I don't see it. I'm one of the\npeople myself, and I don't feel it.\"\n\n\"Here am I too,\" said the old prince. \"I've been staying abroad and\nreading the papers, and I must own, up to the time of the Bulgarian\natrocities, I couldn't make out why it was all the Russians were all of\na sudden so fond of their Slavonic brethren, while I didn't feel the\nslightest affection for them. I was very much upset, thought I was a\nmonster, or that it was the influence of Carlsbad on me. But since I\nhave been here, my mind's been set at rest. I see that there are people\nbesides me who're only interested in Russia, and not in their Slavonic\nbrethren. Here's Konstantin too.\"\n\n\"Personal opinions mean nothing in such a case,\" said Sergey Ivanovitch;\n\"it's not a matter of personal opinions when all Russia--the whole\npeople--has expressed its will.\"\n\n\"But excuse me, I don't see that. The people don't know anything about\nit, if you come to that,\" said the old prince.\n\n\"Oh, papa!... how can you say that? And last Sunday in church?\" said\nDolly, listening to the conversation. \"Please give me a cloth,\" she said\nto the old man, who was looking at the children with a smile. \"Why, it's\nnot possible that all...\"\n\n\"But what was it in church on Sunday? The priest had been told to read\nthat. He read it. They didn't understand a word of it. Then they were\ntold that there was to be a collection for a pious object in church;\nwell, they pulled out their halfpence and gave them, but what for they\ncouldn't say.\"\n\n\"The people cannot help knowing; the sense of their own destinies is\nalways in the people, and at such moments as the present that sense\nfinds utterance,\" said Sergey Ivanovitch with conviction, glancing at\nthe old bee-keeper.\n\nThe handsome old man, with black grizzled beard and thick silvery hair,\nstood motionless, holding a cup of honey, looking down from the height\nof his tall figure with friendly serenity at the gentlefolk, obviously\nunderstanding nothing of their conversation and not caring to understand\nit.\n\n\"That's so, no doubt,\" he said, with a significant shake of his head at\nSergey Ivanovitch's words.\n\n\"Here, then, ask him. He knows nothing about it and thinks nothing,\"\nsaid Levin. \"Have you heard about the war, Mihalitch?\" he said, turning\nto him. \"What they read in the church? What do you think about it? Ought\nwe to fight for the Christians?\"\n\n\"What should we think? Alexander Nikolaevitch our Emperor has thought\nfor us; he thinks for us indeed in all things. It's clearer for him to\nsee. Shall I bring a bit more bread? Give the little lad some more?\" he\nsaid addressing Darya Alexandrovna and pointing to Grisha, who had\nfinished his crust.\n\n\"I don't need to ask,\" said Sergey Ivanovitch, \"we have seen and are\nseeing hundreds and hundreds of people who give up everything to serve a\njust cause, come from every part of Russia, and directly and clearly\nexpress their thought and aim. They bring their halfpence or go\nthemselves and say directly what for. What does it mean?\"\n\n\"It means, to my thinking,\" said Levin, who was beginning to get warm,\n\"that among eighty millions of people there can always be found not\nhundreds, as now, but tens of thousands of people who have lost caste,\nne'er-do-wells, who are always ready to go anywhere--to Pogatchev's\nbands, to Khiva, to Serbia...\"\n\n\"I tell you that it's not a case of hundreds or of ne'er-do-wells, but\nthe best representatives of the people!\" said Sergey Ivanovitch, with as\nmuch irritation as if he were defending the last penny of his fortune.\n\"And what of the subscriptions? In this case it is a whole people\ndirectly expressing their will.\"\n\n\"That word 'people' is so vague,\" said Levin. \"Parish clerks, teachers,\nand one in a thousand of the peasants, maybe, know what it's all about.\nThe rest of the eighty millions, like Mihalitch, far from expressing\ntheir will, haven't the faintest idea what there is for them to express\ntheir will about. What right have we to say that this is the people's\nwill?\"\n\n\n\nChapter 16\n\n\nSergey Ivanovitch, being practiced in argument, did not reply, but at\nonce turned the conversation to another aspect of the subject.\n\n\"Oh, if you want to learn the spirit of the people by arithmetical\ncomputation, of course it's very difficult to arrive at it. And voting\nhas not been introduced among us and cannot be introduced, for it does\nnot express the will of the people; but there are other ways of reaching\nthat. It is felt in the air, it is felt by the heart. I won't speak of\nthose deep currents which are astir in the still ocean of the people,\nand which are evident to every unprejudiced man; let us look at society\nin the narrow sense. All the most diverse sections of the educated\npublic, hostile before, are merged in one. Every division is at an end,\nall the public organs say the same thing over and over again, all feel\nthe mighty torrent that has overtaken them and is carrying them in one\ndirection.\"\n\n\"Yes, all the newspapers do say the same thing,\" said the prince.\n\"That's true. But so it is the same thing that all the frogs croak\nbefore a storm. One can hear nothing for them.\"\n\n\"Frogs or no frogs, I'm not the editor of a paper and I don't want to\ndefend them; but I am speaking of the unanimity in the intellectual\nworld,\" said Sergey Ivanovitch, addressing his brother. Levin would have\nanswered, but the old prince interrupted him.\n\n\"Well, about that unanimity, that's another thing, one may say,\" said\nthe prince. \"There's my son-in-law, Stepan Arkadyevitch, you know him.\nHe's got a place now on the committee of a commission and something or\nother, I don't remember. Only there's nothing to do in it--why, Dolly,\nit's no secret!--and a salary of eight thousand. You try asking him\nwhether his post is of use, he'll prove to you that it's most necessary.\nAnd he's a truthful man too, but there's no refusing to believe in the\nutility of eight thousand roubles.\"\n\n\"Yes, he asked me to give a message to Darya Alexandrovna about the\npost,\" said Sergey Ivanovitch reluctantly, feeling the prince's remark\nto be ill-timed.\n\n\"So it is with the unanimity of the press. That's been explained to me:\nas soon as there's war their incomes are doubled. How can they help\nbelieving in the destinies of the people and the Slavonic races ... and\nall that?\"\n\n\"I don't care for many of the papers, but that's unjust,\" said Sergey\nIvanovitch.\n\n\"I would only make one condition,\" pursued the old prince. \"Alphonse\nKarr said a capital thing before the war with Prussia: 'You consider war\nto be inevitable? Very good. Let everyone who advocates war be enrolled\nin a special regiment of advance-guards, for the front of every storm,\nof every attack, to lead them all!'\"\n\n\"A nice lot the editors would make!\" said Katavasov, with a loud roar,\nas he pictured the editors he knew in this picked legion.\n\n\"But they'd run,\" said Dolly, \"they'd only be in the way.\"\n\n\"Oh, if they ran away, then we'd have grape-shot or Cossacks with whips\nbehind them,\" said the prince.\n\n\"But that's a joke, and a poor one too, if you'll excuse my saying so,\nprince,\" said Sergey Ivanovitch.\n\n\"I don't see that it was a joke, that...\" Levin was beginning, but\nSergey Ivanovitch interrupted him.\n\n\"Every member of society is called upon to do his own special work,\"\nsaid he. \"And men of thought are doing their work when they express\npublic opinion. And the single-hearted and full expression of public\nopinion is the service of the press and a phenomenon to rejoice us at\nthe same time. Twenty years ago we should have been silent, but now we\nhave heard the voice of the Russian people, which is ready to rise as\none man and ready to sacrifice itself for its oppressed brethren; that\nis a great step and a proof of strength.\"\n\n\"But it's not only making a sacrifice, but killing Turks,\" said Levin\ntimidly. \"The people make sacrifices and are ready to make sacrifices\nfor their soul, but not for murder,\" he added, instinctively connecting\nthe conversation with the ideas that had been absorbing his mind.\n\n\"For their soul? That's a most puzzling expression for a natural science\nman, do you understand? What sort of thing is the soul?\" said Katavasov,\nsmiling.\n\n\"Oh, you know!\"\n\n\"No, by God, I haven't the faintest idea!\" said Katavasov with a loud\nroar of laughter.\n\n\"'I bring not peace, but a sword,' says Christ,\" Sergey Ivanovitch\nrejoined for his part, quoting as simply as though it were the easiest\nthing to understand the very passage that had always puzzled Levin most.\n\n\"That's so, no doubt,\" the old man repeated again. He was standing near\nthem and responded to a chance glance turned in his direction.\n\n\"Ah, my dear fellow, you're defeated, utterly defeated!\" cried Katavasov\ngood-humoredly.\n\nLevin reddened with vexation, not at being defeated, but at having\nfailed to control himself and being drawn into argument.\n\n\"No, I can't argue with them,\" he thought; \"they wear impenetrable\narmor, while I'm naked.\"\n\nHe saw that it was impossible to convince his brother and Katavasov, and\nhe saw even less possibility of himself agreeing with them. What they\nadvocated was the very pride of intellect that had almost been his ruin.\nHe could not admit that some dozens of men, among them his brother, had\nthe right, on the ground of what they were told by some hundreds of glib\nvolunteers swarming to the capital, to say that they and the newspapers\nwere expressing the will and feeling of the people, and a feeling which\nwas expressed in vengeance and murder. He could not admit this, because\nhe neither saw the expression of such feelings in the people among whom\nhe was living, nor found them in himself (and he could not but consider\nhimself one of the persons making up the Russian people), and most of\nall because he, like the people, did not know and could not know what is\nfor the general good, though he knew beyond a doubt that this general\ngood could be attained only by the strict observance of that law of\nright and wrong which has been revealed to every man, and therefore he\ncould not wish for war or advocate war for any general objects whatever.\nHe said as Mihalitch did and the people, who had expressed their feeling\nin the traditional invitations of the Varyagi: \"Be princes and rule over\nus. Gladly we promise complete submission. All the labor, all\nhumiliations, all sacrifices we take upon ourselves; but we will not\njudge and decide.\" And now, according to Sergey Ivanovitch's account,\nthe people had foregone this privilege they had bought at such a costly\nprice.\n\nHe wanted to say too that if public opinion were an infallible guide,\nthen why were not revolutions and the commune as lawful as the movement\nin favor of the Slavonic peoples? But these were merely thoughts that\ncould settle nothing. One thing could be seen beyond doubt--that was\nthat at the actual moment the discussion was irritating Sergey\nIvanovitch, and so it was wrong to continue it. And Levin ceased\nspeaking and then called the attention of his guests to the fact that\nthe storm clouds were gathering, and that they had better be going home\nbefore it rained.\n\n\n\nChapter 17\n\n\nThe old prince and Sergey Ivanovitch got into the trap and drove off;\nthe rest of the party hastened homewards on foot.\n\nBut the storm-clouds, turning white and then black, moved down so\nquickly that they had to quicken their pace to get home before the rain.\nThe foremost clouds, lowering and black as soot-laden smoke, rushed with\nextraordinary swiftness over the sky. They were still two hundred paces\nfrom home and a gust of wind had already blown up, and every second the\ndownpour might be looked for.\n\nThe children ran ahead with frightened and gleeful shrieks. Darya\nAlexandrovna, struggling painfully with her skirts that clung round her\nlegs, was not walking, but running, her eyes fixed on the children. The\nmen of the party, holding their hats on, strode with long steps beside\nher. They were just at the steps when a big drop fell splashing on the\nedge of the iron guttering. The children and their elders after them ran\ninto the shelter of the house, talking merrily.\n\n\"Katerina Alexandrovna?\" Levin asked of Agafea Mihalovna, who met them\nwith kerchiefs and rugs in the hall.\n\n\"We thought she was with you,\" she said.\n\n\"And Mitya?\"\n\n\"In the copse, he must be, and the nurse with him.\"\n\nLevin snatched up the rugs and ran towards the copse.\n\nIn that brief interval of time the storm clouds had moved on, covering\nthe sun so completely that it was dark as an eclipse. Stubbornly, as\nthough insisting on its rights, the wind stopped Levin, and tearing the\nleaves and flowers off the lime trees and stripping the white birch\nbranches into strange unseemly nakedness, it twisted everything on one\nside--acacias, flowers, burdocks, long grass, and tall tree-tops. The\npeasant girls working in the garden ran shrieking into shelter in the\nservants' quarters. The streaming rain had already flung its white veil\nover all the distant forest and half the fields close by, and was\nrapidly swooping down upon the copse. The wet of the rain spurting up in\ntiny drops could be smelt in the air.\n\nHolding his head bent down before him, and struggling with the wind that\nstrove to tear the wraps away from him, Levin was moving up to the copse\nand had just caught sight of something white behind the oak tree, when\nthere was a sudden flash, the whole earth seemed on fire, and the vault\nof heaven seemed crashing overhead. Opening his blinded eyes, Levin\ngazed through the thick veil of rain that separated him now from the\ncopse, and to his horror the first thing he saw was the green crest of\nthe familiar oak-tree in the middle of the copse uncannily changing its\nposition. \"Can it have been struck?\" Levin hardly had time to think\nwhen, moving more and more rapidly, the oak tree vanished behind the\nother trees, and he heard the crash of the great tree falling upon the\nothers.\n\nThe flash of lightning, the crash of thunder, and the instantaneous\nchill that ran through him were all merged for Levin in one sense of\nterror.\n\n\"My God! my God! not on them!\" he said.\n\nAnd though he thought at once how senseless was his prayer that they\nshould not have been killed by the oak which had fallen now, he repeated\nit, knowing that he could do nothing better than utter this senseless\nprayer.\n\nRunning up to the place where they usually went, he did not find them\nthere.\n\nThey were at the other end of the copse under an old lime-tree; they\nwere calling him. Two figures in dark dresses (they had been light\nsummer dresses when they started out) were standing bending over\nsomething. It was Kitty with the nurse. The rain was already ceasing,\nand it was beginning to get light when Levin reached them. The nurse was\nnot wet on the lower part of her dress, but Kitty was drenched through,\nand her soaked clothes clung to her. Though the rain was over, they\nstill stood in the same position in which they had been standing when\nthe storm broke. Both stood bending over a perambulator with a green\numbrella.\n\n\"Alive? Unhurt? Thank God!\" he said, splashing with his soaked boots\nthrough the standing water and running up to them.\n\nKitty's rosy wet face was turned towards him, and she smiled timidly\nunder her shapeless sopped hat.\n\n\"Aren't you ashamed of yourself? I can't think how you can be so\nreckless!\" he said angrily to his wife.\n\n\"It wasn't my fault, really. We were just meaning to go, when he made\nsuch a to-do that we had to change him. We were just...\" Kitty began\ndefending herself.\n\nMitya was unharmed, dry, and still fast asleep.\n\n\"Well, thank God! I don't know what I'm saying!\"\n\nThey gathered up the baby's wet belongings; the nurse picked up the baby\nand carried it. Levin walked beside his wife, and, penitent for having\nbeen angry, he squeezed her hand when the nurse was not looking.\n\n\n\nChapter 18\n\n\nDuring the whole of that day, in the extremely different conversations\nin which he took part, only as it were with the top layer of his mind,\nin spite of the disappointment of not finding the change he expected in\nhimself, Levin had been all the while joyfully conscious of the fulness\nof his heart.\n\nAfter the rain it was too wet to go for a walk; besides, the storm\nclouds still hung about the horizon, and gathered here and there, black\nand thundery, on the rim of the sky. The whole party spent the rest of\nthe day in the house.\n\nNo more discussions sprang up; on the contrary, after dinner every one\nwas in the most amiable frame of mind.\n\nAt first Katavasov amused the ladies by his original jokes, which always\npleased people on their first acquaintance with him. Then Sergey\nIvanovitch induced him to tell them about the very interesting\nobservations he had made on the habits and characteristics of common\nhouseflies, and their life. Sergey Ivanovitch, too, was in good spirits,\nand at tea his brother drew him on to explain his views of the future of\nthe Eastern question, and he spoke so simply and so well, that everyone\nlistened eagerly.\n\nKitty was the only one who did not hear it all--she was summoned to give\nMitya his bath.\n\nA few minutes after Kitty had left the room she sent for Levin to come\nto the nursery.\n\nLeaving his tea, and regretfully interrupting the interesting\nconversation, and at the same time uneasily wondering why he had been\nsent for, as this only happened on important occasions, Levin went to\nthe nursery.\n\nAlthough he had been much interested by Sergey Ivanovitch's views of the\nnew epoch in history that would be created by the emancipation of forty\nmillions of men of Slavonic race acting with Russia, a conception quite\nnew to him, and although he was disturbed by uneasy wonder at being sent\nfor by Kitty, as soon as he came out of the drawing room and was alone,\nhis mind reverted at once to the thoughts of the morning. And all the\ntheories of the significance of the Slav element in the history of the\nworld seemed to him so trivial compared with what was passing in his own\nsoul, that he instantly forgot it all and dropped back into the same\nframe of mind that he had been in that morning.\n\nHe did not, as he had done at other times, recall the whole train of\nthought--that he did not need. He fell back at once into the feeling\nwhich had guided him, which was connected with those thoughts, and he\nfound that feeling in his soul even stronger and more definite than\nbefore. He did not, as he had had to do with previous attempts to find\ncomforting arguments, need to revive a whole chain of thought to find\nthe feeling. Now, on the contrary, the feeling of joy and peace was\nkeener than ever, and thought could not keep pace with feeling.\n\nHe walked across the terrace and looked at two stars that had come out\nin the darkening sky, and suddenly he remembered. \"Yes, looking at the\nsky, I thought that the dome that I see is not a deception, and then I\nthought something, I shirked facing something,\" he mused. \"But whatever\nit was, there can be no disproving it! I have but to think, and all will\ncome clear!\"\n\nJust as he was going into the nursery he remembered what it was he had\nshirked facing. It was that if the chief proof of the Divinity was His\nrevelation of what is right, how is it this revelation is confined to\nthe Christian church alone? What relation to this revelation have the\nbeliefs of the Buddhists, Mohammedans, who preached and did good too?\n\nIt seemed to him that he had an answer to this question; but he had not\ntime to formulate it to himself before he went into the nursery.\n\nKitty was standing with her sleeves tucked up over the baby in the bath.\nHearing her husband's footstep, she turned towards him, summoning him to\nher with her smile. With one hand she was supporting the fat baby that\nlay floating and sprawling on its back, while with the other she\nsqueezed the sponge over him.\n\n\"Come, look, look!\" she said, when her husband came up to her. \"Agafea\nMihalovna's right. He knows us!\"\n\nMitya had on that day given unmistakable, incontestable signs of\nrecognizing all his friends.\n\nAs soon as Levin approached the bath, the experiment was tried, and it\nwas completely successful. The cook, sent for with this object, bent\nover the baby. He frowned and shook his head disapprovingly. Kitty bent\ndown to him, he gave her a beaming smile, propped his little hands on\nthe sponge and chirruped, making such a queer little contented sound\nwith his lips, that Kitty and the nurse were not alone in their\nadmiration. Levin, too, was surprised and delighted.\n\nThe baby was taken out of the bath, drenched with water, wrapped in\ntowels, dried, and after a piercing scream, handed to his mother.\n\n\"Well, I am glad you are beginning to love him,\" said Kitty to her\nhusband, when she had settled herself comfortably in her usual place,\nwith the baby at her breast. \"I am so glad! It had begun to distress me.\nYou said you had no feeling for him.\"\n\n\"No; did I say that? I only said I was disappointed.\"\n\n\"What! disappointed in him?\"\n\n\"Not disappointed in him, but in my own feeling; I had expected more. I\nhad expected a rush of new delightful emotion to come as a surprise. And\nthen instead of that--disgust, pity...\"\n\nShe listened attentively, looking at him over the baby, while she put\nback on her slender fingers the rings she had taken off while giving\nMitya his bath.\n\n\"And most of all, at there being far more apprehension and pity than\npleasure. Today, after that fright during the storm, I understand how I\nlove him.\"\n\nKitty's smile was radiant.\n\n\"Were you very much frightened?\" she said. \"So was I too, but I feel it\nmore now that it's over. I'm going to look at the oak. How nice\nKatavasov is! And what a happy day we've had altogether. And you're so\nnice with Sergey Ivanovitch, when you care to be.... Well, go back to\nthem. It's always so hot and steamy here after the bath.\"\n\n\n\nChapter 19\n\n\nGoing out of the nursery and being again alone, Levin went back at once\nto the thought, in which there was something not clear.\n\nInstead of going into the drawing room, where he heard voices, he\nstopped on the terrace, and leaning his elbows on the parapet, he gazed\nup at the sky.\n\nIt was quite dark now, and in the south, where he was looking, there\nwere no clouds. The storm had drifted on to the opposite side of the\nsky, and there were flashes of lightning and distant thunder from that\nquarter. Levin listened to the monotonous drip from the lime trees in\nthe garden, and looked at the triangle of stars he knew so well, and the\nMilky Way with its branches that ran through its midst. At each flash of\nlightning the Milky Way, and even the bright stars, vanished, but as\nsoon as the lightning died away, they reappeared in their places as\nthough some hand had flung them back with careful aim.\n\n\"Well, what is it perplexes me?\" Levin said to himself, feeling\nbeforehand that the solution of his difficulties was ready in his soul,\nthough he did not know it yet. \"Yes, the one unmistakable, incontestable\nmanifestation of the Divinity is the law of right and wrong, which has\ncome into the world by revelation, and which I feel in myself, and in\nthe recognition of which--I don't make myself, but whether I will or\nnot--I am made one with other men in one body of believers, which is\ncalled the church. Well, but the Jews, the Mohammedans, the Confucians,\nthe Buddhists--what of them?\" he put to himself the question he had\nfeared to face. \"Can these hundreds of millions of men be deprived of\nthat highest blessing without which life has no meaning?\" He pondered a\nmoment, but immediately corrected himself. \"But what am I questioning?\"\nhe said to himself. \"I am questioning the relation to Divinity of all\nthe different religions of all mankind. I am questioning the universal\nmanifestation of God to all the world with all those misty blurs. What\nam I about? To me individually, to my heart has been revealed a\nknowledge beyond all doubt, and unattainable by reason, and here I am\nobstinately trying to express that knowledge in reason and words.\n\n\"Don't I know that the stars don't move?\" he asked himself, gazing at\nthe bright planet which had shifted its position up to the topmost twig\nof the birch-tree. \"But looking at the movements of the stars, I can't\npicture to myself the rotation of the earth, and I'm right in saying\nthat the stars move.\n\n\"And could the astronomers have understood and calculated anything, if\nthey had taken into account all the complicated and varied motions of\nthe earth? All the marvelous conclusions they have reached about the\ndistances, weights, movements, and deflections of the heavenly bodies\nare only founded on the apparent motions of the heavenly bodies about a\nstationary earth, on that very motion I see before me now, which has\nbeen so for millions of men during long ages, and was and will be always\nalike, and can always be trusted. And just as the conclusions of the\nastronomers would have been vain and uncertain if not founded on\nobservations of the seen heavens, in relation to a single meridian and a\nsingle horizon, so would my conclusions be vain and uncertain if not\nfounded on that conception of right, which has been and will be always\nalike for all men, which has been revealed to me as a Christian, and\nwhich can always be trusted in my soul. The question of other religions\nand their relations to Divinity I have no right to decide, and no\npossibility of deciding.\"\n\n\"Oh, you haven't gone in then?\" he heard Kitty's voice all at once, as\nshe came by the same way to the drawing-room.\n\n\"What is it? you're not worried about anything?\" she said, looking\nintently at his face in the starlight.\n\nBut she could not have seen his face if a flash of lightning had not\nhidden the stars and revealed it. In that flash she saw his face\ndistinctly, and seeing him calm and happy, she smiled at him.\n\n\"She understands,\" he thought; \"she knows what I'm thinking about. Shall\nI tell her or not? Yes, I'll tell her.\" But at the moment he was about\nto speak, she began speaking.\n\n\"Kostya! do something for me,\" she said; \"go into the corner room and\nsee if they've made it all right for Sergey Ivanovitch. I can't very\nwell. See if they've put the new wash stand in it.\"\n\n\"Very well, I'll go directly,\" said Levin, standing up and kissing her.\n\n\"No, I'd better not speak of it,\" he thought, when she had gone in\nbefore him. \"It is a secret for me alone, of vital importance for me,\nand not to be put into words.\n\n\"This new feeling has not changed me, has not made me happy and\nenlightened all of a sudden, as I had dreamed, just like the feeling for\nmy child. There was no surprise in this either. Faith--or not faith--I\ndon't know what it is--but this feeling has come just as imperceptibly\nthrough suffering, and has taken firm root in my soul.\n\n\"I shall go on in the same way, losing my temper with Ivan the coachman,\nfalling into angry discussions, expressing my opinions tactlessly; there\nwill be still the same wall between the holy of holies of my soul and\nother people, even my wife; I shall still go on scolding her for my own\nterror, and being remorseful for it; I shall still be as unable to\nunderstand with my reason why I pray, and I shall still go on praying;\nbut my life now, my whole life apart from anything that can happen to\nme, every minute of it is no more meaningless, as it was before, but it\nhas the positive meaning of goodness, which I have the power to put into\nit.\"\n\n\n\n\n\n\n*** END OF THIS PROJECT GUTENBERG EBOOK ANNA KARENINA ***\n\n\n\n\nA Word from Project Gutenberg\n\n\nWe will update this book if we find any errors.\n\nThis book can be found under: http://www.gutenberg.org/ebooks/1399\n\nCreating the works from public domain print editions means that no one\nowns a United States copyright in these works, so the Foundation (and\nyou!) can copy and distribute it in the United States without permission\nand without paying copyright royalties.  Special rules, set forth in the\nGeneral Terms of Use part of this license, apply to copying and\ndistributing Project Gutenberg(tm) electronic works to protect the\nProject Gutenberg(tm) concept and trademark. Project Gutenberg is a\nregistered trademark, and may not be used if you charge for the eBooks,\nunless you receive specific permission. If you do not charge anything\nfor copies of this eBook, complying with the rules is very easy. You may\nuse this eBook for nearly any purpose such as creation of derivative\nworks, reports, performances and research. They may be modified and\nprinted and given away - you may do practically _anything_ with public\ndomain eBooks.  Redistribution is subject to the trademark license,\nespecially commercial redistribution.\n\n\n\nThe Full Project Gutenberg License\n\n\n_Please read this before you distribute or use this work._\n\nTo protect the Project Gutenberg(tm) mission of promoting the free\ndistribution of electronic works, by using or distributing this work (or\nany other work associated in any way with the phrase \"Project\nGutenberg\"), you agree to comply with all the terms of the Full Project\nGutenberg(tm) License available with this file or online at\nhttp://www.gutenberg.org/license.\n\n\nSection 1. General Terms of Use & Redistributing Project Gutenberg(tm)\nelectronic works\n\n\n*1.A.* By reading or using any part of this Project Gutenberg(tm)\nelectronic work, you indicate that you have read, understand, agree to\nand accept all the terms of this license and intellectual property\n(trademark/copyright) agreement. If you do not agree to abide by all the\nterms of this agreement, you must cease using and return or destroy all\ncopies of Project Gutenberg(tm) electronic works in your possession. If\nyou paid a fee for obtaining a copy of or access to a Project\nGutenberg(tm) electronic work and you do not agree to be bound by the\nterms of this agreement, you may obtain a refund from the person or\nentity to whom you paid the fee as set forth in paragraph 1.E.8.\n\n*1.B.* \"Project Gutenberg\" is a registered trademark. It may only be\nused on or associated in any way with an electronic work by people who\nagree to be bound by the terms of this agreement. There are a few things\nthat you can do with most Project Gutenberg(tm) electronic works even\nwithout complying with the full terms of this agreement. See paragraph\n1.C below. There are a lot of things you can do with Project\nGutenberg(tm) electronic works if you follow the terms of this agreement\nand help preserve free future access to Project Gutenberg(tm) electronic\nworks. See paragraph 1.E below.\n\n*1.C.* The Project Gutenberg Literary Archive Foundation (\"the\nFoundation\" or PGLAF), owns a compilation copyright in the collection of\nProject Gutenberg(tm) electronic works. Nearly all the individual works\nin the collection are in the public domain in the United States. If an\nindividual work is in the public domain in the United States and you are\nlocated in the United States, we do not claim a right to prevent you\nfrom copying, distributing, performing, displaying or creating\nderivative works based on the work as long as all references to Project\nGutenberg are removed. Of course, we hope that you will support the\nProject Gutenberg(tm) mission of promoting free access to electronic\nworks by freely sharing Project Gutenberg(tm) works in compliance with\nthe terms of this agreement for keeping the Project Gutenberg(tm) name\nassociated with the work. You can easily comply with the terms of this\nagreement by keeping this work in the same format with its attached full\nProject Gutenberg(tm) License when you share it without charge with\nothers.\n\n\n*1.D.* The copyright laws of the place where you are located also govern\nwhat you can do with this work. Copyright laws in most countries are in\na constant state of change. If you are outside the United States, check\nthe laws of your country in addition to the terms of this agreement\nbefore downloading, copying, displaying, performing, distributing or\ncreating derivative works based on this work or any other Project\nGutenberg(tm) work.  The Foundation makes no representations concerning\nthe copyright status of any work in any country outside the United\nStates.\n\n*1.E.* Unless you have removed all references to Project Gutenberg:\n\n*1.E.1.* The following sentence, with active links to, or other\nimmediate access to, the full Project Gutenberg(tm) License must appear\nprominently whenever any copy of a Project Gutenberg(tm) work (any work\non which the phrase \"Project Gutenberg\" appears, or with which the\nphrase \"Project Gutenberg\" is associated) is accessed, displayed,\nperformed, viewed, copied or distributed:\n\n    This eBook is for the use of anyone anywhere at no cost and with\n    almost no restrictions whatsoever. You may copy it, give it away\n    or re-use it under the terms of the Project Gutenberg License\n    included with this eBook or online at http://www.gutenberg.org\n\n*1.E.2.* If an individual Project Gutenberg(tm) electronic work is\nderived from the public domain (does not contain a notice indicating\nthat it is posted with permission of the copyright holder), the work can\nbe copied and distributed to anyone in the United States without paying\nany fees or charges. If you are redistributing or providing access to a\nwork with the phrase \"Project Gutenberg\" associated with or appearing on\nthe work, you must comply either with the requirements of paragraphs\n1.E.1 through 1.E.7 or obtain permission for the use of the work and the\nProject Gutenberg(tm) trademark as set forth in paragraphs 1.E.8 or\n1.E.9.\n\n*1.E.3.* If an individual Project Gutenberg(tm) electronic work is\nposted with the permission of the copyright holder, your use and\ndistribution must comply with both paragraphs 1.E.1 through 1.E.7 and\nany additional terms imposed by the copyright holder. Additional terms\nwill be linked to the Project Gutenberg(tm) License for all works posted\nwith the permission of the copyright holder found at the beginning of\nthis work.\n\n*1.E.4.* Do not unlink or detach or remove the full Project\nGutenberg(tm) License terms from this work, or any files containing a\npart of this work or any other work associated with Project\nGutenberg(tm).\n\n*1.E.5.* Do not copy, display, perform, distribute or redistribute this\nelectronic work, or any part of this electronic work, without\nprominently displaying the sentence set forth in paragraph 1.E.1 with\nactive links or immediate access to the full terms of the Project\nGutenberg(tm) License.\n\n*1.E.6.* You may convert to and distribute this work in any binary,\ncompressed, marked up, nonproprietary or proprietary form, including any\nword processing or hypertext form. However, if you provide access to or\ndistribute copies of a Project Gutenberg(tm) work in a format other than\n\"Plain Vanilla ASCII\" or other format used in the official version\nposted on the official Project Gutenberg(tm) web site\n(http://www.gutenberg.org), you must, at no additional cost, fee or\nexpense to the user, provide a copy, a means of exporting a copy, or a\nmeans of obtaining a copy upon request, of the work in its original\n\"Plain Vanilla ASCII\" or other form. Any alternate format must include\nthe full Project Gutenberg(tm) License as specified in paragraph 1.E.1.\n\n*1.E.7.* Do not charge a fee for access to, viewing, displaying,\nperforming, copying or distributing any Project Gutenberg(tm) works\nunless you comply with paragraph 1.E.8 or 1.E.9.\n\n*1.E.8.* You may charge a reasonable fee for copies of or providing\naccess to or distributing Project Gutenberg(tm) electronic works\nprovided that\n\n  - You pay a royalty fee of 20% of the gross profits you derive from\n    the use of Project Gutenberg(tm) works calculated using the method\n    you already use to calculate your applicable taxes. The fee is owed\n    to the owner of the Project Gutenberg(tm) trademark, but he has\n    agreed to donate royalties under this paragraph to the Project\n    Gutenberg Literary Archive Foundation. Royalty payments must be paid\n    within 60 days following each date on which you prepare (or are\n    legally required to prepare) your periodic tax returns. Royalty\n    payments should be clearly marked as such and sent to the Project\n    Gutenberg Literary Archive Foundation at the address specified in\n    Section 4, \"Information about donations to the Project Gutenberg\n    Literary Archive Foundation.\"\n\n  - You provide a full refund of any money paid by a user who notifies\n    you in writing (or by e-mail) within 30 days of receipt that s/he\n    does not agree to the terms of the full Project Gutenberg(tm)\n    License. You must require such a user to return or destroy all\n    copies of the works possessed in a physical medium and discontinue\n    all use of and all access to other copies of Project Gutenberg(tm)\n    works.\n\n  - You provide, in accordance with paragraph 1.F.3, a full refund of\n    any money paid for a work or a replacement copy, if a defect in the\n    electronic work is discovered and reported to you within 90 days of\n    receipt of the work.\n\n  - You comply with all other terms of this agreement for free\n    distribution of Project Gutenberg(tm) works.\n\n\n*1.E.9.* If you wish to charge a fee or distribute a Project\nGutenberg(tm) electronic work or group of works on different terms than\nare set forth in this agreement, you must obtain permission in writing\nfrom both the Project Gutenberg Literary Archive Foundation and Michael\nHart, the owner of the Project Gutenberg(tm) trademark. Contact the\nFoundation as set forth in Section 3. below.\n\n*1.F.*\n\n*1.F.1.* Project Gutenberg volunteers and employees expend considerable\neffort to identify, do copyright research on, transcribe and proofread\npublic domain works in creating the Project Gutenberg(tm) collection.\nDespite these efforts, Project Gutenberg(tm) electronic works, and the\nmedium on which they may be stored, may contain \"Defects,\" such as, but\nnot limited to, incomplete, inaccurate or corrupt data, transcription\nerrors, a copyright or other intellectual property infringement, a\ndefective or damaged disk or other medium, a computer virus, or computer\ncodes that damage or cannot be read by your equipment.\n\n*1.F.2.* LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the \"Right\nof Replacement or Refund\" described in paragraph 1.F.3, the Project\nGutenberg Literary Archive Foundation, the owner of the Project\nGutenberg(tm) trademark, and any other party distributing a Project\nGutenberg(tm) electronic work under this agreement, disclaim all\nliability to you for damages, costs and expenses, including legal fees.\nYOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT LIABILITY,\nBREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN\nPARAGRAPH 1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK OWNER, AND\nANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR\nACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES\nEVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*1.F.3.* LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a\ndefect in this electronic work within 90 days of receiving it, you can\nreceive a refund of the money (if any) you paid for it by sending a\nwritten explanation to the person you received the work from. If you\nreceived the work on a physical medium, you must return the medium with\nyour written explanation. The person or entity that provided you with\nthe defective work may elect to provide a replacement copy in lieu of a\nrefund. If you received the work electronically, the person or entity\nproviding it to you may choose to give you a second opportunity to\nreceive the work electronically in lieu of a refund. If the second copy\nis also defective, you may demand a refund in writing without further\nopportunities to fix the problem.\n\n*1.F.4.* Except for the limited right of replacement or refund set forth\nin paragraph 1.F.3, this work is provided to you 'AS-IS,' WITH NO OTHER\nWARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\nWARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.\n\n*1.F.5.* Some states do not allow disclaimers of certain implied\nwarranties or the exclusion or limitation of certain types of damages.\nIf any disclaimer or limitation set forth in this agreement violates the\nlaw of the state applicable to this agreement, the agreement shall be\ninterpreted to make the maximum disclaimer or limitation permitted by\nthe applicable state law. The invalidity or unenforceability of any\nprovision of this agreement shall not void the remaining provisions.\n\n*1.F.6.* INDEMNITY - You agree to indemnify and hold the Foundation, the\ntrademark owner, any agent or employee of the Foundation, anyone\nproviding copies of Project Gutenberg(tm) electronic works in accordance\nwith this agreement, and any volunteers associated with the production,\npromotion and distribution of Project Gutenberg(tm) electronic works,\nharmless from all liability, costs and expenses, including legal fees,\nthat arise directly or indirectly from any of the following which you do\nor cause to occur: (a) distribution of this or any Project Gutenberg(tm)\nwork, (b) alteration, modification, or additions or deletions to any\nProject Gutenberg(tm) work, and (c) any Defect you cause.\n\n\nSection 2. Information about the Mission of Project Gutenberg(tm)\n\n\nProject Gutenberg(tm) is synonymous with the free distribution of\nelectronic works in formats readable by the widest variety of computers\nincluding obsolete, old, middle-aged and new computers. It exists\nbecause of the efforts of hundreds of volunteers and donations from\npeople in all walks of life.\n\nVolunteers and financial support to provide volunteers with the\nassistance they need, is critical to reaching Project Gutenberg(tm)'s\ngoals and ensuring that the Project Gutenberg(tm) collection will remain\nfreely available for generations to come. In 2001, the Project Gutenberg\nLiterary Archive Foundation was created to provide a secure and\npermanent future for Project Gutenberg(tm) and future generations. To\nlearn more about the Project Gutenberg Literary Archive Foundation and\nhow your efforts and donations can help, see Sections 3 and 4 and the\nFoundation web page at http://www.pglaf.org .\n\n\nSection 3. Information about the Project Gutenberg Literary Archive\nFoundation\n\n\nThe Project Gutenberg Literary Archive Foundation is a non profit\n501(c)(3) educational corporation organized under the laws of the state\nof Mississippi and granted tax exempt status by the Internal Revenue\nService. The Foundation's EIN or federal tax identification number is\n64-6221541. Its 501(c)(3) letter is posted at\nhttp://www.gutenberg.org/fundraising/pglaf . Contributions to the\nProject Gutenberg Literary Archive Foundation are tax deductible to the\nfull extent permitted by U.S.  federal laws and your state's laws.\n\nThe Foundation's principal office is located at 4557 Melan Dr.\nS. Fairbanks, AK, 99712., but its volunteers and employees are scattered\nthroughout numerous locations. Its business office is located at 809\nNorth 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email\nbusiness@pglaf.org. Email contact links and up to date contact\ninformation can be found at the Foundation's web site and official page\nat http://www.pglaf.org\n\nFor additional contact information:\n\n    Dr. Gregory B. Newby\n    Chief Executive and Director\n    gbnewby@pglaf.org\n\n\nSection 4. Information about Donations to the Project Gutenberg Literary\nArchive Foundation\n\n\nProject Gutenberg(tm) depends upon and cannot survive without wide\nspread public support and donations to carry out its mission of\nincreasing the number of public domain and licensed works that can be\nfreely distributed in machine readable form accessible by the widest\narray of equipment including outdated equipment. Many small donations\n($1 to $5,000) are particularly important to maintaining tax exempt\nstatus with the IRS.\n\nThe Foundation is committed to complying with the laws regulating\ncharities and charitable donations in all 50 states of the United\nStates. Compliance requirements are not uniform and it takes a\nconsiderable effort, much paperwork and many fees to meet and keep up\nwith these requirements. We do not solicit donations in locations where\nwe have not received written confirmation of compliance. To SEND\nDONATIONS or determine the status of compliance for any particular state\nvisit http://www.gutenberg.org/fundraising/donate\n\nWhile we cannot and do not solicit contributions from states where we\nhave not met the solicitation requirements, we know of no prohibition\nagainst accepting unsolicited donations from donors in such states who\napproach us with offers to donate.\n\nInternational donations are gratefully accepted, but we cannot make any\nstatements concerning tax treatment of donations received from outside\nthe United States. U.S. laws alone swamp our small staff.\n\nPlease check the Project Gutenberg Web pages for current donation\nmethods and addresses. Donations are accepted in a number of other ways\nincluding checks, online payments and credit card donations. To donate,\nplease visit: http://www.gutenberg.org/fundraising/donate\n\n\nSection 5. General Information About Project Gutenberg(tm) electronic\nworks.\n\n\nProfessor Michael S. Hart is the originator of the Project Gutenberg(tm)\nconcept of a library of electronic works that could be freely shared\nwith anyone. For thirty years, he produced and distributed Project\nGutenberg(tm) eBooks with only a loose network of volunteer support.\n\nProject Gutenberg(tm) eBooks are often created from several printed\neditions, all of which are confirmed as Public Domain in the U.S. unless\na copyright notice is included. Thus, we do not necessarily keep eBooks\nin compliance with any particular paper edition.\n\nEach eBook is in a subdirectory of the same number as the eBook's eBook\nnumber, often in several formats including plain vanilla ASCII,\ncompressed (zipped), HTML and others.\n\nCorrected _editions_ of our eBooks replace the old file and take over\nthe old filename and etext number. The replaced older file is renamed.\n_Versions_ based on separate sources are treated as new eBooks receiving\nnew filenames and etext numbers.\n\nMost people start at our Web site which has the main PG search facility:\n\n    http://www.gutenberg.org\n\nThis Web site includes information about Project Gutenberg(tm),\nincluding how to make donations to the Project Gutenberg Literary\nArchive Foundation, how to help produce our new eBooks, and how to\nsubscribe to our email newsletter to hear about new eBooks.\n"
  },
  {
    "path": "DEEP LEARNING/NLP/LSTM RNN/Next Chars pytorch/project-tv-script-generation/data/Seinfeld_Scripts.txt",
    "content": "jerry: do you know what this is all about? do you know, why were here? to be out, this is out...and out is one of the single most enjoyable experiences of life. people...did you ever hear people talking about we should go out? this is what theyre talking about...this whole thing, were all out now, no one is home. not one person here is home, were all out! there are people trying to find us, they dont know where we are. (on an imaginary phone) did you ring?, i cant find him. where did he go? he didnt tell me where he was going. he must have gone out. you wanna go out you get ready, you pick out the clothes, right? you take the shower, you get all ready, get the cash, get your friends, the car, the spot, the reservation...then youre standing around, what do you do? you go we gotta be getting back. once youre out, you wanna get back! you wanna go to sleep, you wanna get up, you wanna go out again tomorrow, right? where ever you are in life, its my feeling, youve gotta go. \n\njerry: (pointing at georges shirt) see, to me, that button is in the worst possible spot. the second button literally makes or breaks the shirt, look at it. its too high! its in no-mans-land. you look like you live with your mother. \n\ngeorge: are you through? \n\njerry: you do of course try on, when you buy? \n\ngeorge: yes, it was purple, i liked it, i dont actually recall considering the buttons. \n\njerry: oh, you dont recall? \n\ngeorge: (on an imaginary microphone) uh, no, not at this time. \n\njerry: well, senator, id just like to know, what you knew and when you knew it. \n\nclaire: mr. seinfeld. mr. costanza. \n\ngeorge: are, are you sure this is decaf? wheres the orange indicator? \n\nclaire: its missing, i have to do it in my head decaf left, regular right, decaf left, regular right...its very challenging work. \n\njerry: can you relax, its a cup of coffee. claire is a professional waitress. \n\nclaire: trust me george. no one has any interest in seeing you on caffeine. \n\ngeorge: how come youre not doing the second show tomorrow? \n\njerry: well, theres this uh, woman might be coming in. \n\ngeorge: wait a second, wait a second, what coming in, what woman is coming in? \n\njerry: i told you about laura, the girl i met in michigan? \n\ngeorge: no, you didnt! \n\njerry: i thought i told you about it, yes, she teaches political science? i met her the night i did the show in lansing... \n\ngeorge: ha. \n\njerry: (looks in the creamer) theres no milk in here, what... \n\ngeorge: wait wait wait, what is she... (takes the milk can from jerry and puts it on the table) what is she like? \n\njerry: oh, shes really great. i mean, shes got like a real warmth about her and shes really bright and really pretty and uh... the conversation though, i mean, it was... talking with her is like talking with you, but, you know, obviously much better. \n\ngeorge: (smiling) so, you know, what, what happened? \n\njerry: oh, nothing happened, you know, but is was great. \n\ngeorge: oh, nothing happened, but it was... \n\njerry: yeah. \n\ngeorge: this is great! \n\njerry: yeah. \n\ngeorge: so, you know, she calls and says she wants to go out with you tomorrow night? god bless! devil you! \n\njerry: yeah, well...not exactly. i mean, she said, you know, she called this morning and said she had to come in for a seminar and maybe well get together. \n\ngeorge: (whistles disapprovingly) ho ho ho, had to? had to come in? \n\njerry: yeah, but... \n\ngeorge: had to come in and maybe well get together? had to and maybe? \n\njerry: yeah! \n\ngeorge: no...no...no, i hate to tell you this. youre not gonna see this woman. \n\njerry: what, are you serious...why, why did she call? \n\ngeorge: how do i know, maybe, you know, maybe she wanted to be polite. \n\njerry: to be polite? you are insane! \n\ngeorge: all right, all right, i didnt want to tell you this. you wanna know why she called you? \n\njerry: yes! \n\ngeorge: youre a back-up, youre a second-line, a just-in-case, a b-plan, a contingency! \n\njerry: oh, i get it, this is about the button. \n\ngeorge: claire, claire, youre a woman, right? \n\nclaire: what gave it away, george? \n\ngeorge: uhm...id like to ask you...ask you to analyze a hypothetical phone call, you know, from a female point of view. \n\ngeorge: (to claire) now, a woman calls me, all right? \n\nclaie: uh huh. \n\ngeorge: she says she has to come to new york on business... \n\njerry: oh you are beautiful! \n\ngeorge: ...and, and maybe shell see me when she gets there, does this woman intend to spend time with me? \n\nclaire: id have to say, uh, no. \n\n(george shows his note-block to jerry; it says very largely: no.) \n\nclaire: to be polite. \n\ngeorge: to be polite. i rest my case. \n\njerry: good. did you have fun? you have no idea, what youre talking about, now, come on, come with me. (stands up) i gotta go get my stuff out of the dryer anyway. \n\ngeorge: im not gonna watch you do laundry. \n\njerry: oh, come on, be a come-with guy. \n\ngeorge: come on, im tired. \n\nclaire: (to jerry) dont worry, i gave him a little caffeine. hell perk up. \n\ngeorge: (panicking) right, i knew i felt something! \n\ngeorge: jerry? i have to tell you something. this is the dullest moment ive ever experienced. \n\njerry: well, look at this guy. look, hes got everything, hes got detergents, sprays, fabric softeners.  this is not his first load. \n\ngeorge: i need a break, jerry, you know. i gotta get out of the city. i feel so cramped... \n\njerry: and you didnt even hear how she sounded. \n\ngeorge: what?! \n\njerry: laura. \n\ngeorge: i cant believe- (falls on his knees) we already discussed this! \n\njerry: yeah, but how could you be so sure? \n\ngeorge: cause its signals, jerry, its signals! (snapping his fingers) dont you- all right. did she even ask you, what you were doing tomorrow night, if you were busy? \n\njerry: no. \n\ngeorge: she calls you today and she doesnt make a plan for tomorrow? what is that? its saturday night! \n\njerry: yeah. \n\ngeorge: what is that? its ridiculous! you dont even know what hotel shes staying at, you cant call her. thats a signal, jerry, thats a signal! (snaps his fingers) signal! \n\njerry: maybe youre right. \n\ngeorge: maybe im right? of course im right. \n\njerry: this is insane. you know, i dont even know where shes staying! she, shes not gonna call me, this is unbelievable. \n\ngeorge: i know, i know. listen, your stuff has to be done by now, why dont you just see if its dry? \n\njerry: no no no, dont interrupt the cycle. the machine is working, it, it knows what its doing. just let it finish. \n\ngeorge: youre gonna over-dry it. \n\njerry: you, you cant over-dry. \n\ngeorge: why not? \n\njerry: same as you cant over-wet. you see, once something is wet, its wet. same thing with death. like once you die youre dead, right? lets say you drop dead and i shoot you. youre not gonna die again, youre already dead. you cant over-die, you cant over-dry. \n\ngeorge: (to the other laundry patrons) any questions? \n\njerry: how could she not tell me where she was staying? \n\ngeorge: look at that. theyre done! \n\njerry: laundry day is the only exciting day in the life of clothes. it is...you know, think about it. the washing machine is the nightclub of clothes. you know, its dark, theres bubbles happening, theyre all kinda dancing around in there- shirt grabs the underwear, cmon babe, lets go. you come by, you open up the lid and theyll- (stiffens up, as the clothes) socks are the most amazing article of clothing. they hate their lives, theyre in the shoes with stinky feet, the boring drawers. the dryer is their only chance to escape and they all know it. they knew a escape from the dryer. they plan it in the hamper the night before, tomorrow, the dryer, im goin. you wait here! the dryer door swings open and the sock is waiting up against the side wall. he hopes you dont see him and then he goes down the road. they get buttons sewn on their faces, join a puppet show. so theyre showing me on television the detergent for getting out bloodstains. is this a violent image to anybody? bloodstains? i mean, come on, you got a t-shirt with bloodstains all over it, maybe laundry isnt your biggest problem right now. you gotta get the harpoon out your chest first. \n\njerry: (answering, quickly) if you know what happened in the met game, dont say anything, i taped it, hello. yeah, no, im sorry, you have the wrong number. yeah, no \n\njerry: (to the door) yeah? \n\nkessler: are you up? \n\njerry: (to kessler) yeah. (to the phone) yeah, people do move. have you ever seen the big trucks out on the street? yeah, no problem. \n\nkessler: boy, the mets blew it tonight, huh? \n\njerry: (upset) ohhhh, what are you doing? kessler, its a tape! i taped the game, its one oclock in the morning! i avoided human contact all night to watch this. \n\nkessler: hey, im sorry, i- you know, i, i thought you knew. (takes two loaves of bread out of his pockets, and holds them out to jerry.) you got any meat? \n\njerry: meat? i dont, i dont know, go... hunt! (kessler opens the refrigerator and sticks his head in.) well what happened in the game anyway? \n\nkessler: (from the refrigerator) what happened? well, they stunk, thats what happened! \n\nkessler: you know, i almost wound up going to that game. \n\njerry: (cynical) yeah you almost went to the game. you havent been out of the building in ten years! \n\nkessler: yeah. (jerry sits down on the couch. kessler walks over with his sandwich and looks at jerry and uses expressions to ask jerry to move the newspapers on the other side of the couch so he could site down. kessler sits down next to him and starts turning over the pages of a magazine. suddenly he spots an article he likes and tears it out. jerry gives him a look as if to say, do you mind?) are you done with this? \n\njerry: no. \n\nkessler: when youre done, let me know. \n\njerry: yeah, yeah...you can have it tomorrow. \n\nkessler: i thought i wasnt allowed to be in here this weekend. \n\njerry: no, its okay now, that, that girl is not coming. uh, i misread the whole thing. \n\nkessler: you want me to talk to her? \n\njerry: i dont think so. \n\nkessler: oh, i can be very persuasive. do you know that i was almost... a lawyer. \n\njerry: that close, huh? \n\nkessler: you better believe it. \n\njerry: hello...oh, hi, laura. \n\nkessler: oh, give me it...let me talk to her. \n\njerry: (to the phone) no believe me, im always up at this hour. how are you?... great... sure... what time does the plane get in?... i got my friend george to take me... \n\nkessler: (to the tv) slide! wow! \n\njerry: no, its, its just my neighbor... um... yeah, i got it. (jerry takes a pencil and a cereal box to write on.) ten-fifteen... no, dont be silly, go ahead and ask... yeah, sure... okay, great, no no, its no trouble at all... ill see you tomorrow... great, bye. (he hangs up the phone; to kessler) i dont believe it. that was her. she wants to stay here! \n\njerry: if my father was moving this he had to have a cigarette in his mouth the whole way. (as his father) 'have you got your end?...your ends got to come down first, easy now, drop it down...drop it down, your ends got to come down.' \n\ngeorge: you know, i cant believe youre bringing in an extra bed for woman that wants to sleep with you. why dont you bring in an extra guy too? \n\njerry: look, its a very awkward situation. i dont wanna be presumptuous. \n\ngeorge: all right, all right, one more time, one more time! what was the exact phrasing of the request? \n\njerry: all right, she said she couldnt find a decent hotel room... \n\ngeorge: a decent hotel-room... \n\njerry: yeah, a decent hotel-room, would it be terribly inconvenient if she stayed at my place. \n\ngeorge: you cant be serious. this is new york city. there must be eleven million decent hotel rooms! what do you need? a flag? (waving his handkerchief) this is the signal, jerry, this is the signal! \n\njerry: (cynical) this is the signal? thank you, mr. signal. where were you yesterday? \n\ngeorge: i think i was affected by the caffeine. \n\ngeorge: ho, ho, ho, good dog, good dog... \n\nkessler: hey, he really likes you, george. \n\ngeorge: well, thats flattering. \n\nkessler: oh, hes getting a drink of water. (pointing to the mattress) is this for that girl? \n\njerry: yeah. \n\nkessler: why even give her an option? \n\njerry: this is a person i like, its not how to score on spring break. \n\ngeorge: right, can we go? cause im double-parked, im gonna get a ticket. \n\njerry: yeah, okay. oh, wait a second. oh, i forgot to clean the bathroom. \n\ngeorge: so what? thats good. \n\njerry: now, how could that be good? \n\ngeorge: because filth is good. what do you think, rock stars have sponges and ammonia lying around the bathroom? they, have a woman coming over, ive gotta tidy up? yeah right, in these matters you never do what your instincts tell you. always, always do the opposite. \n\njerry: this is how you operate? \n\ngeorge: yeah, i wish. \n\njerry: let me just wipe the sink. \n\nkessler: why even give her an option for? \n\nkessler: (to george, pointing at the mattress) its unbelievable. \n\ngeorge: yeah. \n\nkessler: hows the real estate-business? \n\ngeorge: (feeling awkward) its uh, not bad, its coming along. why? did you need something. \n\nkramer: do you handle any of that commercial...real estate? \n\ngeorge: well, i might be getting into that. \n\nkessler: (slaps george on the arm) you keep me posted! \n\ngeorge: im aware of you. (to jerry) all right, lets go (opens the bathroom door) lets go! \n\njerry: the dating world is not a fun world...its a pressure world, its a world of tension, its a world of pain...and you know, if a woman comes over to my house, i gotta get that bathroom ready, cause she needs things. women need equipment. i dont know what they need. i know i dont have it, i know that- you know what they need, women seem to need a lot of cotton-balls. this is the one im- always has been one of the amazing things to me...i have no cotton-balls, were all human beings, what is the story? ive never had one...i never bought one, i never needed one, ive never been in a situation, when i thought to myself i could use a cotton-ball right now. i can certainly get out of this mess. women need them and they dont need one or two, they need thousands of them, they need bags, theyre like peat moss bags, have you ever seen these giant bags? theyre huge and two days later, theyre out, theyre gone, the, the bag is empty, where are the cotton-balls, ladies? what are you doin with them? the only time i ever see em is in the bottom of your little waste basket, theres two or three, that look like theyve been through some horrible experience... tortured, interrogated, i dont know what happened to them. i once went out with a girl who left a little zip-lock-baggy of cotton-balls over at my house. i dont know what to do with them, i took them out, i put them on my kitchen floor like little tumbleweeds. i thought maybe the cockroaches would see it, figure this is a dead town. lets move on. the dating world is a world of pressure. lets face it a date is a job interview that lasts all night. the only difference between a date and a job interview is not many job interviews is there a chance youll end up naked at the end of it. you know? well, bill, the boss thinks youre the man for the position, why dont you strip down and meet some of the people youll be working with? \n\njerry: wouldnt it be great if you could ask a woman what shes thinking? \n\ngeorge: what a world that would be, if you just could ask a woman what shes thinking. \n\njerry: you know, instead, im like a detective. i gotta pick up clues, the whole thing is a murder investigation. \n\ngeorge: listen, listen, dont get worked up, cause youre gonna know the whole story the minute she steps off the plane. \n\njerry: really? how? \n\ngeorge: cause its all in the greeting. \n\njerry: uh-huh. \n\ngeorge: all right, if she puts the bags down before she greets you, thats a good sign. \n\njerry: right. \n\ngeorge: you know, anything in the, in the lip area is good. \n\njerry: lip area. \n\ngeorge: you know a hug definitely good. \n\njerry: hug is definitely good. \n\ngeorge: sure. \n\njerry: although what if its one of those hugs where the shoulders are touching, the hips are eight feet apart? \n\ngeorge: thats so brutal, i hate that. \n\njerry: you know how they do that? \n\ngeorge: thats why, you know, a shake is bad. \n\njerry: shake is bad, but what if its the two-hander? the hand on the bottom, the hand on the top, the warm look in the eyes? \n\ngeorge: hand sandwich. \n\njerry: right. \n\ngeorge: i see, well, thats open to interpretation. because so much depends on the layering and the quality of the wetness in the eyes. \n\nlaura: guess who? \n\njerry: hey, hey. \n\nlaura & jerry: hey! \n\njerry: its good to see you. \n\nlaura: hi. \n\njerry: this is my friend george. \n\nlaura: hi, how nice to meet you. \n\ngeorge: hi, how are you? \n\njerry: this is laura. \n\ngeorge: laura, sure. \n\njerry: (to laura) i cant believe youre here. \n\ngeorge & jerry: ooh yeah, the bags, sure. \n\nlaura: oh, thank you. \n\njerry: (aside, to george) now that was an interesting greeting, did you notice that, george? \n\ngeorge: yes, the surprise blindfold greeting. that wasnt in the manual, i dont know. \n\njerry: so uh, what do you think? \n\nlaura: wow! this place isnt so bad. \n\njerry: yeah, it kind a motivates me to work on the road. so uh, make yourself at home. (laura sits down on the couch, takes off her shoes and opens some buttons of her shirt.) so uh, can i get you anything? uh, bread, water...salad-dressing? \n\nlaura: (laughs) actually, um, do you have any wine? \n\njerry: uh, yeah, i think i do. \n\nlaura: (referring to a lamp) oh, do you mind if i turn this down? \n\njerry: uh, no, yeah, go right ahead. \n\nlaura: uh, jerry, uh, i was wandering, would it be possible  and if its not, fine  for me to stay here tomorrow night too? \n\njerry: uh, yeah, yeah, sure, why dont you stay? yeah, uh…what is your, what is your schedule for tomorrow? are you, are you doing anything? \n\nlaura: no, id love to do something. uh, i have my seminar in the morning, then after that im right open. \n\njerry: really? what would you like to do? \n\nlaura: well... now i know this sounds touristy, but id just love to go on one of those five-hour boat rides around manhattan. \n\njerry: (unenthusiastic) yeah, we could do that...why not, why not. (pouring the wine) im just, im really glad youre here. \n\njerry: (answering) yeah, hello...yes...yes, she is, hold on. (to laura) um, its for you. \n\nlaura: (to the phone) hello?... hi!... no no it was great, right on time... no, i, im gonna stay here tomorrow...yes, yes its fine... no, were going on a boat ride... dont be silly... im not gonna have this conversation... look, ill call you tomorrow... okay, bye. (she hangs up the phone.) never get engaged. \n\njerry: (not excited) youre engaged? \n\nlaura: you, you really have no idea what its like until you actually do it. and im on this emotional roller coaster. \n\njerry: youre engaged? \n\nlaura: you know, i cant believe it myself sometimes. you have to start thinking in terms of we. ugh, its a very stressful situation. \n\njerry: (matter-of-factly) youre engaged. \n\nlaura: yeah, yeah, hes a great guy... \n\njerry: yeah. \n\nlaura: you would really like him, you know, i cant wait to get on that boat. \n\njerry: me too! \n\njerry: i swear, i have absolutely no idea what women are thinking. i dont get it, okay? i, i, i admit, i, im not getting the signals. i am not getting it! women, theyre so subtle, their little...everything they do is subtle. men are not subtle, we are obvious. women know what men want, men know what men want, what do we want? we want women, thats it! its the only thing we know for sure, it really is. we want women. how do we get them? oh, we dont know bout that, we dont know. the next step after that we have no idea. this is why you see men honking car-horns, yelling from construction sites. these are the best ideas weve had so far. the car-horn honk. have you seen men doing this? what is this? the man is in the car, the woman walks by the front of the car, he honks. hey! this man is out of ideas. how does it...? i dont think she likes me. the amazing thing is, that we still get women, dont we? men, i mean, men are with women. you see men with women. how are men getting women, many people wonder. let me tell you a little bit about our organization. wherever women are, we have a man working on the situation right now. now, he may not be our best man, okay, we have a lot of areas to cover, but someone from our staff is on the scene. thats why, i think, men get frustrated, when we see women reading articles, like where to meet men? were here, we are everywhere. were honking our horns to serve you better. \n\njerry: so, im on line at the supermarket. two women in front of me. one of them, her total was eight dollars, the other three dollars. they both of course choose to pay by the use of the... \n\naudience: cheque. \n\njerry: cheque. now, the fact is, if its a woman in front of you thats writing the cheque, you will not be waiting long. i have noticed that women are very fast with cheques, you know, cause they write out so many cheques. the keys, they can never find in their purse, they dont know where that is, but the cheque book they got that. they never fumble for the cheque book. the cheque book comes out of a holster (jerry draws imaginary book from a holster.) who do i make it out to? theres my id. theres something about a cheque that, to a man, is not masculine. i dont know exactly what it is. i think to a man, a cheque is like a note from your mother that says, i dont have any money, but if youll contact these people, im sure theyll stick up for me... if you just trust me this one time- i dont have any money but i have these. i wrote on these. is this of any value at all? \n\njerry: whats that one? \n\nelaine: coccoon ii the return. i guess they didnt like it up there. \n\njerry: maybe they came back for chinese food. yknow maureen stapleton, if she gets a craving, shes probably screamin at those aliens, i gotta have a lo mein! \n\nelaine: okay, whatre we doing here? i have seen everything. \n\njerry: oh yeah? i dont believe youve seen... this. \n\nelaine: oh, lovely. \n\njerry: yeah. \n\nelaine: what do you think their parents think? \n\njerry: so, uh, whats your son doing now, dr. stevens? oh, hes a public fornicator. yes, hes a fine boy... \n\nelaine: you know what? this would be a really funny gift for pamelas birthday. \n\njerry: pamela? do i know her? \n\nelaine: yeah, you met her when we were going out. \n\njerry: oh yeah, right... \n\nelaine: you have no idea who im talking about, do you? \n\njerry: (quickly) no. \n\nelaine: blonde hair, remember? glasses? (pause) have you totally blocked out the entire time we were a couple? \n\njerry: (a lightbulb goes on in his head) riverside drive. \n\nelaine: right! in fact... no, never mind... \n\njerry: well, what is it? \n\nelaine: well, a bunch of people are getting together tomorrow night at some bar for her birthday, but... (jerry turns in disgust) you dont want to go to... that... no. \n\njerry: wait a second, wait a second. we could work out a little deal here. \n\nelaine: what little deal? \n\njerry: i will go to that, if you go with me to a little family wedding i have on saturday. \n\nelaine: a wedding? have you lost it, man? \n\njerry: you know, my parents are coming in for this... \n\nelaine: theyre coming in? \n\njerry: yeah, tomorrow. \n\nelaine: hey, did your father ever get that hair weave? \n\njerry: no, no. still doing the big sweep across. \n\nelaine: why does he do that? \n\njerry: doesnt think anyone can tell. so cmon, do we have a deal? \n\nelaine: a wedding? \n\njerry: theres a lot of people to mock... \n\nelaine: all right, what the hell. \n\njerry: great! \n\nwoman: when youre dead, youre dead. thats it. youre not going anywhere... \n\nelaine: cmon lets go... \n\njerry: was i supposed to bring something? \n\nelaine: you could have. \n\njerry: i met her one time... \n\nelaine: it is not necessary. \n\njerry: what did you say then? \n\nelaine: shh!!! \n\npamela: hi \n\nelaine: hi, pamela, you remember jerry. \n\npamela: (shakes jerry's hand) yes, we met. \n\njerry: hi, happy birthday. \n\npamela: thanks, ah, everybody, this is elaine and jerry. \n\nguests, jerry and elaine: hi \n\njerry: i didnt bring anything. \n\npamela: uh, i put you two right here. \n\njerry: oh, okay (turns to rest of table) im sorry, i didnt know what to bring, nobody told me. \n\nvanessa: how big a tip do you think it would take to get him to stop? \n\njerry: im in for five... \n\nvanessa: ill supply the hat. \n\njerry: (thinking) uh-oh... what do we have here? \n\nvanessa: why dont you relax and take your jacket off? \n\njerry: oh, i cant. uh, i have a tendency to get chilly. \n\nvanessa: how masculine. \n\njerry: plus im wearing short sleeves, i dont want to expose my tattoos. (vanessa smiles; thinking) shes unbelievable! \n\nroger: (to vanessa) hey, this guy says he knows bricker. \n\nvanessa: oh, you know bricker! from where? \n\njerry: (thinking) whats going on here? gotta be her boyfriend, shes too good to be alone. whats the difference, i cant manouver anyway with elaine next to me. \n\nvanessa: (to jerry) how do you know pamela? \n\njerry: uh, friend of a friend. and you? \n\nvanessa: we went to law school together. \n\nelaine: (interrupting jerry's conversation) oh, jerry! \n\njerry: (turning to elaine; thinking) oh no, not now. \n\nelaine: i had this dream last night and you were in it. \n\njerry: oh really? (tries turning away in the hopes elaine gets the hint; thinking) oh god, i gotta get out of this. \n\nelaine: you were you, but, you werent you... \n\njerry: no kidding. (thinking) why is this happening? please, make her stop! \n\nelaine: i think, i think we were in my house where i grew up, and you were standing there, you were looking out the window... \n\njerry: (thinking) this is brutal. \n\nelaine: you turned around and you had these wooden teeth. \n\njerry: how do you like that? (tries to turn away again; thinking)can i turn now? is this over? no, i cant, i cant. im stuck. \n\nelaine: (noticing jerry not wanting to listen; annoyed) jerry? are you listening to me? \n\njerry: yes, i heard you. \n\npamela: elaine, whats the name of that jewelry store you took me to that time? \n\njerry: (thinking) thank you, pamela! (turns to talk to vanessa; to vanessa) so, youre a lawyer... \n\nvanessa: sagman, bennet, robbins, oppenheim and taft. \n\njerry: (thinking) sagman, bennet, robbins, oppenheim and taft. sagman, bennet, robbins, oppenheim and taft... (to vanessa) of course, they handled my tattoo removal lawsuit. \n\nvanessa: oh, that was you? \n\njerry: imagine, spelling mom with two os. \n\nvanessa: very funny! what do you do? \n\njerry: comedian. \n\nvanessa: really? that explains it. \n\njerry: (thinking; quickly) sagman, bennet, robbins, oppenheim and taft. sagman, bennet, robbins, oppenheim and taft. \n\nroger: are you ready? \n\nvanessa: we gotta run. happy birthday! \n\njerry: (thinking) i cant believe it. i got nothing! i dont even know her name! sagman, bennet, robbins, oppenheim and taft. sagman, bennet, robbins, oppen... sagman... sag... \n\njerry: that wasnt so bad, really. \n\nelaine: you know, um, you could use a little work on your manners. \n\njerry: why? what did i do? \n\nelaine: wel-well, i just dont appreciate these little courtesy responses, like im selling you aluminum siding. \n\njerry: i was listening! \n\nelaine: no! you couldnt wait to get back to your little... conversation. \n\njerry: no, you were talking about the, the um, the dream you had. \n\nelaine: uh-huh... \n\njerry: where you had, uh, wooden teeth. \n\nelaine: no! no! you had wooden teeth! you had wooden teeth! i didnt have wooden teeth, you did! \n\njerry: all right, so i had wooden teeth, so what? \n\nelaine: so nothing! nothing. (annoyed sigh) \n\njerry: apparently plato, who came up with the concept of the platonic relationship, was pretty excited about it. he named it after himself. he said, yeah, i got this new thing platonic. my idea, my name, callin it after myself. what i do is, i go out with the girls, i talk with them- dont do anything, and go right home. whatd you think? i think its going to be big! i bet you there were other guys in history that tried to get relationships named after them, but it didnt work. yknow, i bet you there were guys who tried to do it, just went, uh, hi, uh my names rico. would you like to go to bed immediately? hey, its a riconic relationship. \n\njerry: hey! \n\nmorty: ah, there he is! \n\njerry: this is what i like, see? you come home and your parents are in your bed! \n\nhelen: yknow, jerry, we dont have to do this. \n\njerry: what are you talkin about? its fine, i love having you here. \n\nhelen: tomorrow well go to a hotel. \n\njerry: ma, will you stop? \n\nhelen: no, why should we take over your apartment? \n\njerry: i dont care. im sleeping next door. \n\nhelen: your friend kramer doesnt mind? \n\njerry: no, hes making a bouillabaisse. \n\njerry: so, dad, lemme ask you a question. how many people work at these big law offices? \n\nmorty: depends on the firm. \n\njerry: yeah, but if you called up and described someone, do you think they would know who it was? \n\nmorty: whats the matter? you need a lawyer? \n\njerry: no, i met someone at this party, and i know where she works, but i dont know her name. \n\nmorty: so why dont you ask someone who was at the party? \n\njerry: nah, the only one i could ask is elaine, and i cant ask her. \n\nhelen: why not? \n\njerry: because its complicated. theres some tension there. \n\nhelen: he used to go with her. \n\nhelen: which one is she? \n\nmorty: from maryland. the one who brought you the chocolate covered cherries you didnt like. \n\nhelen: oh yeah, very alert. warm person. \n\njerry: oh yeah, shes great. \n\nhelen: so, how come nothing materialized there? \n\njerry: well, its a tough thing to talk about uh. i dunno... \n\nhelen: i know what it was. \n\njerry: you dont know what it was. \n\nhelen: so, what was it? \n\njerry: well, we fight a lot for some reason. \n\nhelen & morty: oh, well... \n\njerry: and there was a little problem with the physical chemistry. \n\nhelen: well, i think shes a very attractive girl. \n\njerry: oh, she is, she absolutely is. \n\nhelen: i can see if there was a weight problem... \n\njerry: no, its not that. it wasnt all one-sided. \n\nhelen: you know, you cant be so particular. nobodys perfect. \n\njerry: i know, i know... \n\nmorty: yknow jerry, its a good thing i wasnt so particular. \n\nhelen: (hits morty) idiot. (to jerry) so whore you looking for, sophia loren? \n\njerry: thats got nothin to do with it. \n\nmorty: how about loni anderson? \n\nhelen: where do you get loni anderson? \n\nmorty: why, whats wrong with loni anderson? \n\nhelen: i like elaine more than loni anderson. \n\njerry: what are you two talking about? look, elaine just wasnt the one. \n\nhelen: and this other ones the one? \n\njerry: i dunno, maybe... \n\nmorty: so ask elaine there for her number. \n\njerry: i cant. shell get upset. i never talk about other women with her, especially this one tonight. \n\nhelen: how could you still see her if your not interested? \n\njerry: were friends. \n\nmorty: doesnt sound like youre friends to me. if you were friends you'd-youd ask her for the number. do you know where this other one works? \n\njerry: oh yeah. \n\nmorty: well, go up to the office. \n\nhelen: up to her office? \n\nmorty: go to the building. she goes out to lunch, doesnt she? \n\njerry: i guess. \n\nmorty: so, you stand in the lobby, by the elevator, and wait for her to come down for lunch. \n\njerry: you mean stakeout the lobby? \n\nhelen: morty, thats ridiculous. just ask elaine for the number! \n\nmorty: he doesnt want to ask elaine for the number. \n\nhelen: so youve got him standing by the elevator like a dope! what happens when he sees her? \n\nmorty: he pretends he bumped into her! \n\njerry: yknow what? this is not that bad an idea. \n\ngeorge: what does she look like? \n\njerry: i dunno. hard to say. \n\ngeorge: what actress does she remind you of? \n\njerry: loni anderson. \n\ngeorge: loni anderson?! \n\njerry: what, theres something wrong with loni anderson? (pause) hey listen, thanks again for running over here. i appreciate it. \n\ngeorge: yeah, sure. i was showing a condo on 48th street. besides, you think i wanna miss this? (chuckles) \n\njerry: im a little nervous. \n\ngeorge: yeah, me too... \n\njerry: if i see her, what do i say that im doing here in the building? \n\ngeorge: you came to see me. i work in the building. \n\njerry: what do you do? \n\ngeorge: im an architect. \n\njerry: youre an architect? \n\ngeorge: im not? \n\njerry: i dont see architecture comin from you. \n\ngeorge: (somewhat annoyed) i suppose you could be an architect. \n\njerry: i never said that i was the architect. just somethin else. \n\ngeorge: all right, shes not even gonna ask, if we see her, which is remote. \n\njerry: well whaddaya want me to say, that i just wandered in here? \n\ngeorge: were having lunch with a friend. he works in the building. \n\njerry: what is his name? \n\ngeorge: bert... har... bin... son. bert har-bin-son. \n\njerry: bert harbinson? it sounds made up. \n\ngeorge: no good? all right, uh how about art... cor..... \n\njerry: art cor... \n\ngeorge: ...velay. \n\njerry: corvelay? \n\ngeorge: yeah, right. \n\njerry: well, what does he do? \n\ngeorge: hes an importer. \n\njerry: just imports, no exports? \n\ngeorge: (annoyed) hes an importer/exporter, okay? (beat) elaine ever call you back? \n\njerry: no, i guess shes still mad. \n\ngeorge: i dont understand, you never talk to her about other women? \n\njerry: never. (the elevator door opens.) wait a second. thats her. on the right. \n\ngeorge: (anxious) i forgot who i am! who am i?! \n\njerry: youre you. were having lunch with art corvelay. \n\ngeorge: vandelay! \n\njerry: corvelay! \n\ngeorge: let me be the architect! i can do it! \n\njerry: hey, hey. uh pamelas birthday party, didnt i see you there? jerry. \n\nvanessa: sure! hi! \n\njerry: uh, this is george. (reaches for her name) im sorry... \n\nvanessa: vanessa. \n\ngeorge: nice to meet you. \n\njerry: ah, sagman, bennet, robbins, oppenheim and taft. \n\nvanessa: thats right! yea, whatre you doing here? \n\njerry: oh, were meeting a friend of ours for lunch. he works here in the building. \n\ngeorge: yeah, art vandelay. \n\nvanessa: really? which company? \n\njerry & george: (turning to each other) i dont know. hes an importer. \n\nvanessa: importer? \n\ngeorge: ...and exporter. \n\njerry: hes an importer/exporter. \n\ngeorge: (clears his throat) im, uh, im an architect. \n\nvanessa: really. what do you design? \n\ngeorge: uh, railroads, uh... \n\nvanessa: i thought engineers do that. \n\ngeorge: they can... \n\njerry: yknow im sorry you had to leave so early the other night. \n\nvanessa: oh, me too. my cousin had to go back to boston. \n\njerry: oh, that guy was your cousin! (walking in front of george so he gets the picture to leave) \n\nvanessa: yeah, and that woman was your... \n\njerry: friend! \n\ngeorge: ill just, uh, get a paper... \n\njerry: so, um, do you date uh immature men? \n\nvanessa: almost exclusively... \n\nhelen: bum bum bum bum... i have no letters... bum bum bum bum... \n\njerry: (annoyed) ma, will you go already? \n\nhelen: bum bum bum bum... \n\njerry: what are you doing?! \n\nhelen: wait, i just want to see something. \n\njerry: you cant look in there, were playing! \n\nkramer: hi. \n\njerry: hi. \n\nmorty: (cleaning his shoes) good evening, mr. kramer! \n\nkramer: hey morty! (to jerry) salad dressing? \n\njerry: look. \n\nhelen: quo. is that a word? \n\njerry: maybe! \n\nhelen: will you challenge it? \n\njerry: ma, you cant look up words in the dictionary! (to morty) dad, shes cheating! \n\nkramer: quo? thats not a word. \n\nhelen: (to jerry) youre such a stickler... \n\njerry: well put something down, youre taking twenty minutes on this. so is uncle mac and artie, theyre all coming over here before the wedding? \n\nhelen: theyll be here at two oclock. oh, elaine called. she said shed be here at two-thirty. and she says hope your meeting went well with art vandelay? \n\njerry: she said what? \n\nhelen: just what i said, here. \n\njerry: she knows! oh, i am such a jackass. \n\nhelen: she knows what? \n\njerry: she knows the whole stupid thing. vanessa and the elevator... \n\nhelen: no, no, no, that wont do. he may have a z. \n\nmorty: so, how did she find out? \n\njerry: because, vanessa probably told pamela, and pamela probably told elaine. \n\nmorty: so, what are you? afraid of her? \n\njerry: yes. yes i am! (to helen) what else did she say on the phone? \n\nhelen: whatever i wrote down. \n\njerry: yeah, but what was the tone in her voice? how did she sound? \n\nhelen: who am i, rich little? \n\nmorty: well, she cant be too mad. shes still coming to the wedding. \n\njerry: yeah, but now im nervous. \n\nhelen: oh, stop it. \n\njerry: quone? \n\nhelen: ...30...31... \n\njerry: quone? no, im afraid that im going to have to challenge that. \n\nhelen: ...32... \n\nkramer: no, you dont have to challenge that. thats a word. thats a definite word. \n\njerry: i am challenging. \n\nkramer: quone. to quone something. \n\njerry: uh-huh. \n\nhelen: im not playing with you anymore. \n\nmorty: quones not a word. \n\njerry: no good. sorry. there it is. get it off. \n\nhelen: (to kramer) why did you make me put that down? \n\nkramer: nah, we need a medical dictionary! if a patient gets difficult, you quone him. \n\ncarol: you want some funny material, you oughta come down to where i work, now thats a sitcom! \n\njerry: you must have quite a time down there. \n\ncarol: we got plenty of time. \n\njerry: oh, im sorry. im just waiting for someone. \n\nuncle mac: watch what you say to this guy. hell put it in his next act! \n\njerry: yeah, yeah... \n\nuncle mac: jerry, did i tell you that im writing a book? an autobiography. \n\njerry: yeah, uncle mac, you mentioned it. \n\nuncle mac: its based on all my experiences! \n\njerry: thats perfect. \n\njerry: could you excuse me one second? im sorry. \n\njerry: how do you do? (introducing himself) uh, jerry seinfeld. \n\nelaine: oh, how do you do? elaine benes. \n\njerry: um, do you want to do this now, or do you want to wait until we get in the car? \n\nelaine: oh no, lets do it now. \n\njerry: all right, the whole elevator business, let me just explain- \n\nelaine: okay. \n\nartie: jerry, were you goin with us? \n\njerry: no, im gonna take my car. \n\nartie: thats why i brought the wagon. why the hell did i bring the wagon? \n\njerry: anyway, you know why i didnt ask you, i mean i felt so uncomfortable, and you were so annoyed in the cab. \n\nelaine: well, jerry, i never saw you flirt with anyone before. it was quite the spectacle. \n\ncarol: jerry, well see you there. bye, elaine. \n\nelaine: oh, bye. good to see you. \n\nartie: oh, we didnt meet. \n\njerry: oh, im sorry. elaine, this is my cousin, artie levine. \n\nartie: (correcting jerry) levine. \n\njerry: (sarcastically) yeah, levine. and im jerry cougar mellencamp. anyway, i admit it was a fairly ridiculous thing to do, but i mean, i mean, obviously we have a little problem here. \n\nelaine: yeah, obviously. \n\njerry: i mean, if were gonna be friends, we gotta be able to talk about other people. \n\nelaine: couldnt agree more. \n\njerry: good. \n\nelaine: good. \n\njerry: good. \n\nelaine: great! \n\njerry: great? where do you get great? \n\nelaine: its great to... talk about... other people... \n\njerry: ...guys? \n\nelaine: yeah. \n\njerry: uh-huh. yeah. so, anybody specific? \n\nelaine: no. a general guy. \n\njerry: oh really? elaine marie benes... \n\nelaine: what? no, its not a big deal. \n\njerry: no, thats great! thats terrific! \n\nelaine: no, we just met... \n\njerry: doesnt matter. whats the young mans name? i would like to meet him. \n\nelaine: hmmm, i dont think so. \n\njerry: well, what does he do? is he an artisan, a craftsman, a labourer of some sort? \n\nelaine: wall street. \n\njerry: ah, high finance. bulls, bears, people from conneticut. \n\nelaine: and he happens to be pretty good lookin. \n\njerry: (pause) all right, sir. \n\nelaine: and... hes hilarious. \n\njerry: now thats not fair! so where did you meet this guy? \n\nelaine: i staked out his health club. \n\njerry: uh huh. when youre on a stakeout, do you find its better to stand up against the wall, or kinda crouch down behind a big plant? \n\njerry: yknow i think that even if youve had a relationship with someone, or lets say, especially if youve had a relationship with someone and you try to become friends afterwards, its very difficult. isnt this? its hard. because, you know each other so well, you know all of each others tricks. its like two magicians, trying to entertain each other. the one goes, look, a rabbit. the other goes, so? i believe this is your card. look, why dont we just saw each other in half and call it a night, okay? \n\njerry: so i move into the centre lane, now i get ahead of this women, who felt for some reason i guess, that she thought that i cut her off. so, she pulls up along side of me, gives me the finger. it seems like such an arbitrary, ridiculous thing to just pick a finger and you show it to the person. its a finger, what does it mean? someone shows me one of their fingers and im supposed to feel bad. is that the way its supposed to work? i mean, you could just give someone the toe, really, couldnt you? i would feel worse if i got the toe, than if i got the finger. cause its not easy to give someone the toe, youve gotta get the shoe off, the sock off and drive, get it up and... (jerry pretends to drive with one foot in the air, giving the toe.) look at that toe, buddy. (he puts his foot down.) i mean, thats really insulting to get the toe, isnt it? \n\njerry: is that it? got the cue tips, got the mini-umbrella, something boring to read on the plane. (jerry zips his bag ceremoniously.) thats it. done! \n\nelaine: (claps her hands) that is the single greatest packing performance i have ever seen. \n\njerry: (proudly) i am...the master packer. \n\nelaine: (laughs) yeah, right, youre the master packer. \n\njerry: what you must understand, elaine, (picking up the umbrella) packing is no different than leading men into battle. (jerry hits his bag rhythmically with his umbrella.) youve gotta know the strengths and weaknesses of every soldier in that platoon. from a collapsible toothbrush to a pair of ordinary black socks. \n\nelaine: (raising her hand) scuse me, master packer... \n\njerry: yes. \n\nelaine: just gimme your keys. \n\njerry: all right, sir. (he tosses elaine his keys. the apartment buzzer goes off; jerry presses the first button; to the intercom) george? \n\ngeorge: (from the intercom) yeah. \n\nelaine: okay, so, now, is there anything else i need to know about this place? \n\njerry: uh, yeah, the, uh, hot water takes a little while to come on. so, the best thing to do is to turn it on, do all your shopping, you come back and take a shower. \n\nelaine: okay, this is quite a place. \n\njerry: theres more. the refrigerator. \n\njerry: deduct a minimum of two days off all expiration dates. (he uses the umbrella to point to certain compartments in the fridge.) no meat, no leftovers, no butter. (he closes the fridge.) and i cannot overstate this no soft cheeses of any kind. is that clear? \n\nelaine: ill eat out. \n\njerry: one more thing, benes, regarding sexual activity strictly prohibited, but if you absolutely must, do us all a big favour. do it in the tub. \n\ngeorge: (to jerry) ready? \n\njerry: yeah, one sec. \n\ngeorge: hey, elaine. \n\nelaine: hi. \n\ngeorge: coming to the airport with us? \n\nelaine: no, im staying here for the weekend. im getting a break from my roommate. \n\ngeorge: oh, the actress-waitress? \n\nelaine: no, the waitress-actress. she just got some part in some dinner theater production of a chorus line. so, now all day long shes walking around the apartment singing, god, i hope i get it, i hope i get it! shes gonna get it right in her... \n\ngeorge: so just kick her out. \n\nelaine: shes on the lease! george you have got to find another place for me. \n\ngeorge: yeah, well...a little rough finding something good in your price-range. (to jerry) but you, my friend, may be in luck. \n\njerry: im not looking. \n\ngeorge: no no no, this ones different. this ones a beauty! \n\njerry: yeah, whats it like? \n\ngeorge: i havent seen it yet, but its a two-bedroom, its on the uh, west 83rd, bout a half block from the park? \n\njerry: how much? \n\ngeorge: uh, twice what youre payin here, but its a great building. its two bedrooms! \n\njerry: two bedrooms? why do i need two bedrooms? i got enough trouble maintaining activity in one. (george gives elaine a look while jerrys back is turned. jerry turns around.) i saw that. \n\nelaine: you oughta at least take a look at it. \n\njerry: really? why? \n\nelaine: cause then i could move in here. \n\njerry: ohhhh... \n\nelaine: its time you got outta here anyway. \n\ngeorge: yeah, tell im. but quickly, im double parked here. \n\nelaine: listen, jerry, this place is falling apart. you have no hot water, you cant have soft cheese... \n\ngeorge: lets not forget the radiator. the steam has been on here for ten years. no human can turn this off. \n\nelaine: jerry, come on, youre doin okay now. you should at least take a look at this place. you shouldnt have to live like this. \n\njerry: like this? you just said you wanted to live here. \n\nelaine: well, for me its a step up. its like moving from iceland to finland. \n\ngeorge: jerry, what do you, you wanna, you wanna see the place or not? \n\njerry: i cant think about it now. come on, im going to minneapolis. i got four shows this weekend. \n\njerry: elaine. (jerry puts his bags down, sits down on the couch, picks up the remote control and points it at the spot the tv usually occupies. the tv is not there. he continues to point the remote at random things around the room, searching for the tv.) elaine! \n\nelaine: (from the bathroom) jerry! (elaine enters the living-room.) jerry, oh, hi, welcome back. how were the shows? \n\njerry: great, i had fun. wheres the tv, wheres the vcr? \n\njerry: what? \n\nelaine: they were stolen. \n\njerry: stolen? when? \n\nelaine: a couple a hours ago. the police are coming right over. \n\njerry: stolen? \n\nelaine: (looking at kramer) someone left the door open. \n\njerry: (to kramer) you left the door open?! \n\nkramer: uh, jer, well you know, i was cookin and i, i uh, i came in to get this spatula...and i left the door open, cause i was gonna bring the spatula right back! \n\njerry: wait, you left the lock open or the door open? \n\nkramer: (guiltily) the door. \n\njerry: the door? you left the door open? \n\nkramer: yeah, well, i was gonna bring the spatula right back. \n\njerry: yeah, and? \n\nkramer: well, i got caught up... watching a soap opera. the bold and the beautiful. \n\njerry: so the door was wide open? \n\nkramer: wide open! \n\njerry: (to elaine) and where were you? \n\nelaine: i was at bloomingdales... waiting for the shower to heat up. \n\nkramer: look, jerry, im sorry, im uh- you have insurance, right buddy? \n\njerry: no. \n\nkramer: (shocked) how can you not have insurance? \n\njerry: because i spent my money on the clapgo d-29. its the most impenetrable lock on the market today. it has only one design flaw. the door... (jerry pushes the door shut.) ...must be closed!! \n\nkramer: jerry! im gonna find your stuff. im gonna solve it, im on the case, buddy, im on the case. \n\njerry: yeah, dont investigate, dont pay me back, it was an accident. \n\nkramer: (theatrical) i made a mistake. \n\nelaine: these things happen. \n\nkramer: im human. \n\njerry: in your way. \n\npoliceman: lets see, thats, one tv, a stereo, one leather jacket, a vcr and a computer...is that bout it? \n\nelaine: answering machine. \n\njerry: (disappointed) answering machine. (jovially) oh, i hate the idea of somebody out there returning my calls. \n\npoliceman: what do you mean? \n\njerry: its a joke. \n\npoliceman: i see. well, mister seinfeld uh, well look into it and uh, well let you know if we uh, you know, if we find anything. \n\njerry: you ever find anything? \n\npoliceman: no. \n\njerry: well, thanks anyway. \n\npoliceman: you bet. \n\nelaine: i didnt get that joke either. \n\njerry: the crook has the machine. the messages arent for him. hes the crook. why would he answer- (jerry gives up on the explanation and turns around to see george standing behind him.) how did you get in here? \n\ngeorge : i walked in, your lobby door is broken again. \n\njerry: again? \n\ngeorge: i dont know how you put up with this. \n\nelaine: yeah, tell im george. \n\njerry: (to elaine) you would still wanna move in here? \n\nelaine: yes! you dont understand. im living with ethel merman without the talent. \n\njerry: (to george) is that uh, other apartment still available? \n\njerry: i got ripped off for about the...18th time? and now, the first couple a times you go through it, its very upsetting and your first reaction or one of your friends will say, call the police. you really should call the police. so you think to yourself, you know, you watch tv, you think, yeah, im calling the police. stakeouts, manhunts... im gonna see some real action. right, you think that. so, the police come over to your house, they fill out the report. they give you your copy. now, unless they give the crook his copy, i dont really think were gonna crack this case, do you? its not like batman, where theres three crooks in the city and everybody pretty much knows, who they are. very few crooks even go to the trouble to come up with a theme for their careers anymore. it makes them a lot tougher to spot. did you lose a sony? it could be the penguin. i think we can round him up, hes dressed like a penguin! we can find him, hes a penguin! \n\nelaine: oh, well, come on. this is an apartment, this is a home! this is a place to live. oooh, a fireplace, are you kidding me! does this work? \n\ngeorge: i didnt know there was a fireplace. a fireplace, that's incredible. \n\njerry: how do you get all that wood in here? \n\nelaine: they deliver it. \n\njerry: they deliver wood? \n\nelaine: yeah. \n\njerry: what do you tip a wood guy? \n\ngeorge: i didnt know there was a fireplace. \n\nelaine: look! look at- look at this! theres a garden. \n\ngeorge: a garden! i cant believe theres a garden! \n\njerry: would i have to get a gardener? \n\nelaine: yeah, you can get a gardener. \n\njerry: you tip him? \n\nelaine: you can. \n\ngeorge: (to elaine) you dont tip a gardener! \n\nelaine: you can tip a gardener. \n\ngeorge: you dont need a gardener. \n\nelaine: jerry, you can barbecue back here. \n\njerry: they deliver the coal? \n\nelaine: sure, its...probably the same guy, who delivers the wood. \n\njerry: oh, then i gotta tip him. \n\nelaine: oh, damn, this place is incredible, look at all this great light! \n\njerry: i dont have any plants. \n\ngeorge: i have plants. (snorts) \n\nelaine: jerry, look at this closet! look at this! im walking in it! (elaine walks into the closet.) its a walk-in. can you believe it? im nuts about this, what do you think? \n\njerry: i like that. (he opens the closet. elaine walks out with an angry look.) what do you think, george? \n\ngeorge: its your decision. \n\njerry: im takin it, im takin the place. im gonna take it, this is gonna be my new place. im livin here...im movin. \n\nelaine: (laughing with joy) your movin? that means im movin. (she hugs jerry.) geeeeee (to george) isnt that incredible! \n\ngeorge: (unenthusiastic) congratulations. \n\nelaine: what about the couch? \n\njerry: you like the couch? ill tell you what im gonna do. \n\nelaine: what? \n\njerry: youre movin in, youre a good friend, i wanna start you off on the right foot. give me...a hundred and fifty dollars. (elaine is shocked, jerry opens the door to the hall.) get it outta here right now, take it out the door, i dont even wanna see it, go, get it out. \n\nelaine: a hundred and fifty dollars? a hundred and fifty dollars for what? for this couch? \n\njerry: yeah! \n\nelaine: for this couch?! \n\njerry: okay, you tell me. what is it worth? \n\nelaine: okay, uh, ill tell you what. i could go as high as uh... (she takes a closer look at couch.) i dont know, maybe...twenty dollars? \n\njerry: yeah? \n\ngeorge: (from the intercom) yeah, its george. \n\njerry: come on up. (jerry presses the second button and opens the apartment door. he walks back to the couch.) oh, all right, forget it, im gonna take it with me now... (he picks up the cushions.) im just gonna pack up the cushions right now... \n\nelaine: okay okay okay okay, you win. forty dollars. \n\njerry: (continuing unphased) you wanna get the other end, cause i wanna get it in the hall. \n\nelaine: fifty dollars, okay? fifty dollars, is that all right? \n\njerry: fifty dollars? \n\nelaine: uh-huh. \n\njerry: thank you very much. \n\nelaine: thank you very much. \n\ngeorge: hey, whats goin on? \n\nelaine: i just bought jerrys couch for fifty dollars. \n\njerry: (to george) so did you bring the lease? (george takes the lease from his inside pocket and hands it to jerry.) all right, gee, three years, that kinda seems like a long time. \n\ngeorge: (frantic) oh, jerry jerry jerry jerry jerry, listen, if, if you are feeling uncomfortable about this at all, at all. do not feel like you have to take it. \n\njerry: why? \n\ngeorge: if youre having second thoughts, if you didnt want it, dont worry about it because uh, you know, i, i...i could take it, you know. \n\njerry: you could take it? you want it? \n\ngeorge: no, i dont want it. i want it, if you dont want it. \n\njerry: so you do want it. \n\ngeorge: no i, i want it if you dont want it. \n\njerry: you just said you wanted it! \n\ngeorge: no, im saying, if a situation arose in which you didnt want it, i might take it. \n\njerry: so take it. \n\ngeorge: how can i take it? \n\njerry: how can i take it? \n\ngeorge: its your apartment! \n\njerry: how can i want it now, if you want it? \n\nelaine: excuse me, uh, i dont mean to cause any trouble here, but george, if you take it, can i take your place? \n\ngeorge: yes, but i am not taking it. \n\njerry: i...am not taking it. \n\nelaine: well, one of you better damn well take it! \n\njerry: well, whaddaya wanna do here? \n\ngeorge: i, i dont know. \n\njerry: do you wanna flip a coin? \n\ngeorge: who flips? youll flip, ill call. \n\njerry: okay, fine. (jerry takes a coin from his pocket.) this is the official flip. no crying, no guilt, winner takes all and thats it. agreed? \n\ngeorge: im good. \n\nelaine: i dont know, who to root for, georges place has carpeting. \n\njerry: all right, now you call it in the air. \n\ngeorge: no catchin. \n\njerry: no no. \n\ngeorge: flip it. \n\ngeorge: heads! \n\njerry: tails! \n\ngeorge: no, it hit the table, it hit the table. \n\njerry: so what? \n\ngeorge: interference! you cant count that! come on, are you crazy?! the coin cannot touch anything, it affects it. \n\njerry: you didnt call no interference! \n\ngeorge: you dont have to call that! thats a rule! \n\njerry: i dont believe this. \n\ngeorge: oh oh oh, all right, fine, jerry, you win. take it, just take it! \n\njerry: i dont wanna win it like this! elaine, what do you think? \n\nelaine: id better not. \n\njerry: well, ill tell you what. ill choose you for it. straight choose, three takes it, no disputes...thats it, you gotta win three. \n\ngeorge: okay. (they walk around each other.) ok. ill choose you. whaddaya want? \n\njerry: odds. \n\ngeorge: i want evens. \n\njerry: good. \n\ngeorge: you got odds. \n\njerry: you got evens. \n\ngeorge: right, ready? \n\njerry: for the apartment. \n\nboth: once, twice, three, shoot! \n\njerry: mine! \n\nboth: once, twice, three, shoot! \n\njerry: mine! \n\nboth: once, twice, three, shoot! \n\ngeorge: mine! \n\nboth: once, twice, three, shoot! \n\ngeorge: congratulations...congratulations. \n\njerry: thanks. \n\ngeorge: i'm just gonna...wash. (george walks to the bathroom; screaming) why did i put up two? why did i put up two? \n\nkramer: jerry, i think im on to something. i think i found your stuff. you know the englishman who lives down the hall? \n\njerry: yeah. \n\nkramer: the last couple a days hes been acting very strange. i think hes avoiding me. \n\njerry: hard to imagine. \n\nkramer: yeah! and get this i just got off the elevator with him and i tested him, i tested him, like i...this is what i said to him, like i, i was like this, i went, oh, by the way, i know about the stuff. \n\nkramer: ..you know, very casually, \n\njerry: right. \n\nkramer: (cont'd) so that he was gonna take me into his confidence. \n\nelaine: so what did he say? \n\nkramer: what stuff? \n\njerry: ooh, (to elaine) case closed! \n\nkramer: no, you dont understand, you see, he swallowed. see, the guy, he swallowed. oh, he was nervous about something! now, im gonna go over there, im gonna borrow some tea. if i dont get back in five minutes, maybe youd better call the police. \n\njerry: okay, starting...now! \n\nkramer: yeah! \n\njerry: one of the problems in life is that when youre a kid, you have a certain way of working out disagreements. and those laws do not work in the adult world. one of the main ways that kids resolve any dispute is by calling it. one of them says, i got the front seat i wanted the front seat! i called it. and the other kid knows hes got nothing to say he called it. what can i do? if there was a kid court of law, it holds up. your honour, my client did ask for the front seat and the judge would go, did he call it? well no, he didnt call- bang! (jerry imitates a judge banging his gavel.) he has to call it, case closed. objection overruled. \n\ngeorge: i love the mirror in that bathroom! i dont know what in the hell it is. i look terrific in that mirror. (george sits.) i dont know if its the tile or the lighting... i feel like robert wagner. \n\njerry: its a good mirror. (they look at their menus.) so, what are you gettin? \n\ngeorge: i dont know, i cant eat. you, you cant have anything anymore. look at this, look at this. eggs out. coffee out. french fries out. blt out! i go to visit my grandparents three big brisket sandwiches, im sittin here with a carrot! theyre closing in on a hundred, im sayin to them, how can you eat that stuff? (they look at their menus again.) im so sick about losin that choose, you dont know. \n\njerry: all right, forget it, forget it. im not taking the place! \n\ngeorge: what?! \n\njerry: how can i live there? \n\ngeorge: why not?! \n\njerry: look at you, youre still thinking about it. ill never feel comfortable. \n\ngeorge: oh, get outta here. \n\njerry: how can i ever have you over? youll sit there moping. \n\ngeorge: i wont mope. \n\njerry: youre already moping! would you take the place? \n\ngeorge: no, impossible! its your apartment. \n\njerry: you found the place. \n\ngeorge: you won the choose. \n\njerry: all right, forget it, its over, im not moving. \n\ngeorge: well, me neither. \n\njerry: definitely? \n\ngeorge: definitely. \n\njerry: alright, then just get rid of it. you wont have any problem. \n\ngeorge: no, its not a problem, i can get rid of the apartment this afternoon. \n\ncarol: what apartment? \n\ngeorge: oh, its a great place, its uh two-bedroom uh, west 83rd bout half block from the park. \n\ncarol: whats the rent? \n\ngeorge: i dont know, what were doin here, this is ridiculous. \n\njerry: she wanted to thank us for the apartment. \n\nelaine: i cant believe i lost the deposit on that u-haul. and i threw out my couch. \n\njerry: if only the coin hadnt hit the table. \n\ngeorge: the table is interference, you know it! \n\njerry: it is not! \n\ngeorge: it is too! \n\nelaine: my roommate starts rehearsal tonight on carousel. \n\ncarol: hi. \n\ngeorge: hi, carol. \n\ncarol: i just wanted to introduce you to my husband, this is larry. \n\ncarol: this is george, elaine and jerry. these are the guys who got us the apartment. \n\nlarry: oh, you dont know how grateful i am, if theres anything i can ever do to repay you, i, i mean, were just so thrilled with this place. \n\ncarol: its a dream. \n\nlarry: im running in the park now, ive lost weight, were barbecuing every night and the rent is unbelievable. \n\ngeorge: were really glad for you. \n\nelaine: couldnt be happier. \n\njerry: its wonderful. \n\ncarol: diane, diane, come here. \n\ncarol: this is my new next door neighbour, diane. \n\ncarol: (to diane) these are the guys, who turned this place down, can you believe it? (to jerry, george and elaine) diane gave me the greatest backrub today. shes a masseuse! \n\ndiane: how, how could you guys have turned this place down, its such a great location and its...so close to the park. \n\ngeorge: were aware of the proximity to the park, yes. \n\ndiane: well, it was nice to meet you. \n\ngeorge: nice meeting you. \n\njerry: how late are the stores open? im thinking of maybe uh, buying a new tv and smash it over my head. \n\nman #1: i get a call from gilmour this morning, and get this theyre restructuring the organization in atlanta and i gotta be there on the first of the month. \n\nman #2: really? what are you gonna bout the apartment? \n\nman #1: well, what can i do? give it up. \n\njerry, george & elaine: whats the rent? \n\njerry: most men like working on things. tools, objects, fixing things. this is what men enjoy doing. have you ever noticed a guys out in his driveway working on something with tools, how all the other men in the neighborhood are magnetically drawn to this activity. they just come wandering out of the house like zombies. men, its true, men hear a drill, its like a dog whistle. just... (his head perks up) you know, they go running up to that living room curtain, honey, i think jims working on something over there. so they run over to the guy. now they dont actually help the guy. no, they just want to hang around the area where work is being done. thats what men want to do. we want to watch the guy, we want to talk to him, we want to ask him dumb questions. you know, what are you using, a phillips-head? you know, we feel involved. thats why when they have construction sites, they have to have those wood panel fences around it, thats just to keep the men out. they cut those little holes for us so we can see what the hell is going on. but if they dont cut those holes, we are climbing those fences. right over there. what are you using the steel girders down there? yeah, thatll hold. \n\ngeorge: i had to say something. (chuckles) i had to say something. everything was going so well. i had to say something. \n\njerry: i dont think you did anything wrong. \n\ngeorge: i told her i liked her. why? why did i tell her i like her? i have this sick compulsion to tell women how i feel. i like you i dont tell you. \n\njerry: we can only thank god for that. \n\ngeorge: im outta the picture. i am outta the picture. (laughs) its only a matter of time now. \n\njerry: youre imagining this. really. \n\ngeorge: oh, no. no no no no. \n\ngeorge: ill tell you when it happened. when that floss came flying out of my pocket. \n\njerry: what floss? when? \n\ngeorge: we were in the lobby during the intermission of the play. i was buying her one of those containers of orange drink, for five dollars. i reached into my pocket to pay for it, i looked down; theres this piece of green floss hanging from my fingers. \n\njerry: ah, mint. \n\ngeorge: of course. so, im looking at it. i look up, i see shes looking at it. our eyes lock. it was a horrible moment. i just.. \n\njerry: so let me get this straight. she saw the floss, you panicked and you told her you liked her. \n\ngeorge: if i didnt put that floss in my pocket, id be crawling around her bedroom right now looking for my glasses. \n\njerry: and youre sure the floss was the catalyst? \n\ngeorge: yes, i am. \n\njerry: you dont think it mightve had anything to do with that? \n\ngeorge: what? you dont like this? \n\njerry: it looks like your belt is digesting a small animal. \n\nkramer: (to the phone) oh, theyve got a cure for cancer. see, its all big business. oh hey, jerry just walked in. hi, george. (to the phone again) yeah yeah yeah yeah take my number. 555-8643. okay, here he is. \n\njerry: (to kramer) who is it? \n\nkramer: take it. \n\njerry: who is it? \n\nkramer: its for you. \n\njerry: (to the phone) hello? (disappointed) oh, hi joel. (jerry hits kramer with a magazine.) no. uh, i was out of town. i just got back. kramer doesnt know anything. hes just my next-door neighbor. uh, nothing much... tuesday? uh, tuesday, no. im meeting somebody... uh, wednesday? wednesdays okay... all right. uh, im a little busy right now. can we talk wednesday morning?... okay... yeah... right... thanks... bye. (jerry hangs up; to kramer) why did you put me on the phone with him? i hate just being handed a phone. \n\nkramer: well, its your phone. he wanted to talk to you. \n\njerry: maybe i didnt want to talk to him. \n\nkramer: well, why not? \n\njerry: he bothers me. i dont even answer the phone anymore because of him. hes turned me into a screener. now i gotta go see him on wednesday. \n\ngeorge: what do you mean wednesday? i though we had tickets to the knick game wednesday. we got seats behind the bench! what happened? were not going? \n\njerry: were going. thats next wednesday. \n\ngeorge: oh. who is this guy? \n\njerry: his name is joel horneck. he lived like three houses down from me when i grew up. he had a ping pong table. we were friends. should i suffer the rest of my life because i like to play ping pong? i was ten. i wouldve been friends with stalin if he had a ping pong table. hes so self-involved. \n\nkramer: thats for me. (to the phone) kramerica industries. oh, hi, mark. no no no. forget that. i got a better idea. a pizza place where you make your own pie... \n\njerry: can you conduct your business elsewhere? \n\nkramer: (ignoring jerry) no no no. im talking about a whole chain of em. yeah. \n\ngeorge: i dont know why you even bother with this ping pong guy, ill tell you that. \n\njerry: i dont bother with him. hes been calling me for seven years. ive never called him once! hes got the attention span of a five-year-old. sometimes i sit there and i make up things just to see if hes paying attention. \n\ngeorge: i dont understand why you spend time with this guy. \n\njerry: what can i do? break up with him? tell him, i dont think were right for each other. hes a guy! at least with a woman, theres a precendent. you know, the relationship goes sour, you end it. \n\ngeorge: no no no no, you have to approach this as if he was a woman. \n\njerry: just break up with him? \n\ngeorge: absolutely. you just tell him the truth. \n\njerry: the truth. \n\njerry: as a guy i dont know how i can break up with another guy. you know what i mean? i dont know how to say, bill, i feel i need to see other men. do you know what i mean? theres nothing i can do. i have to wait for someone to die. i think thats the only way out of this relationship. it could be a long time. see, the great thing about guys is that we can become friends based on almost nothing. just two guys will just become friends just because theyre two guys. thats almost all we need to have in common. cause sports  sports and women  is really all we talk about. if there was no sports and no women the only thing guys would ever say is, so, whats in the refrigerator? \n\njoel: ...so my shrink wants me to bring my mother in for a session. this guy is a brilliant man. lenny bruce used to go to him. and i think, uh, geraldo. \n\njerry: you know, i read the lenny bruce biography, i thought it was really... interesting. he would- \n\njoel: (to the counter of the restaurant) hey hey hey hey, were starving here! weve been waiting here for ten minutes already! \n\njerry: (testing joel) so, im thinking about going to iran this summer. \n\njoel: i have to eat! i mean, im hypoglycemic. \n\njerry: anyway, the hizballah has invited me to perform. (joel shakes his head agreeing; jerry smiles) you know, its their annual terrorist luncheon. \n\njoel: yeah. \n\njerry: (cont'd) im gonna do it in farsi. \n\njoel: do you think i need a haircut? \n\nclaire: are you ready? \n\njerry: yeah, ill have the egg salad on whole wheat. \n\njoel: (to the waitress) let me ask you a question. this, uh, this turkey sandwich here, is that real turkey, or is it a turkey roll? i dont want that processed turkey. (to jerry) i hate it. \n\nwaitress: i think its real turkey. \n\njoel: is there a real bird in the back? \n\nwaitress: no, theres not bird but- \n\njoel: well, how do you know for sure? look, why dont you do me a favor. why dont you go in the back and find out, okay? (the waitress leaves.) unbelievable. \n\njerry: how can you talk to someone like that? \n\njoel: what are you saying? what, you like turkey roll? \n\njerry: listen, joel. theres something i have to tell you... \n\njoel: (laughing) wait, youll never guess who i ran into. \n\njerry and joel: howard metro. \n\njoel: he asked me if i still saw you. i said, sure, i see him all the time. were still great friends. anyway, howard says hello. (laughs) \n\njerry: listen, joel, i dont think we should see each other anymore. \n\njoel: what? \n\njerry: this friendship its not working. \n\njoel: not working? what are you talking about? \n\njerry: were just not suited to be friends. \n\njoel: how can you say that? \n\njerry: look, youre a nice guy, its just that... we dont have anything in common. \n\njoel: (starting to cry) wai-wait. what did i do? tell me. i want to know what i did. \n\njerry: y-you didnt do anything. its not you, its me. its- this is very difficult. \n\njoel: look, i know i call you too much, right? i mean, i know youre a very busy guy. \n\njerry: no, its not that. \n\njoel: (crying) youre one of the few people i can talk to. \n\njerry: oh, come on. thats not true. \n\njoel: i always tell everybody about you. tell everybody to (to the rest of the coffee shop) go see his show! (to jerry) i mean, im your biggest fan! \n\njerry: i know, i know. \n\njoel: i mean, youre my best friend. \n\njerry: best friend- ive never been to your apartment. \n\njoel: i cannot believe that this is happening. i cant believe it. \n\njerry: okay, okay. forget it. its okay. i didnt mean it. \n\njoel: didnt mean what? \n\njerry: what i said. ive been under a lot of stress. \n\njoel: oh, youve been under a lot of stress. \n\njerry: just, can we just forget the whole thing ever happend? im sorry. i didnt mean it. i took it out on you. were still friends. were still friends. still friends. okay? look, ill tell you what. ive got knick tickets this wednesday. great seats behind the bench. you want to come with me? come on. \n\njoel: tonight? \n\njerry: no, next wednesday. if it was tonight, i wouldve said tonight. \n\njoel: do you really want me to go? \n\njerry: (lying) yes. \n\njoel: okay. (jerry gives him some napkins to clean himself up) yeah, okay. great! that would be, thatd be great. so, next wednesday. \n\njerry: next wednesday. \n\njoel: where is that waitress? (to the counter) hey! \n\ngeorge: ...she calls me up at my office \n\njerry: yeah. \n\ngeorge: (cont'd) she says, we have to talk. \n\njerry: ugh, the four worst words in the english language. \n\ngeorge: that, or whos bra is this? \n\njerry: that is worse. \n\ngeorge: so we order lunch, and were talking. finally, she blurts out how its not working. \n\njerry: really. \n\ngeorge: so, im thinking, as shes saying this, im thinking great, the relationships over. but the egg salads on the way. so now i have a decision do i walk or do i eat? \n\njerry: hm. you ate. \n\ngeorge: we sat there for twenty minutes, chewing, staring at each other in a defunct relationship. \n\njerry: someone says, get out of my life, and that doesnt affect your appetite? \n\ngeorge: have you ever had their egg salad? \n\njerry: it is unbelievable. \n\ngeorge: its unbelievable. you know what else is unbelievable? i picked up the check. she didnt even offer. she ended it. the least she could do is send me off with a sandwich. \n\njerry: how much could you possibly have in there? \n\ngeorge: its my money. what should i do? throw it out the window? i know a guy who took his vacation on his change. \n\njerry: yeah? whered he go, to an arcade? \n\ngeorge: (sarcastically) thats funny. youre a funny guy. \n\njerry: cmon, move up. \n\ncustomer: oh great, ewings hurt. \n\ngeorge: ewings hurt? how long is he going to be out? \n\ncustomer: a couple of days at the most but... \n\ngeorge: geez. \n\njerry: oh, god. \n\ngeorge: i got scared there for a second. the knicks without ewing. \n\njerry: listen, george, little problem with the game. \n\ngeorge: what about it? \n\njerry: the thing is, yesterday, i kind of.. uh.. \n\ngeorge: what? \n\njerry: i gave your ticket to horneck. \n\ngeorge: (not believing him) you what?! \n\njerry: yeah, im sorry. i had to give it to horneck. \n\ngeorge: no! my ticket?! you gave my ticket to horneck? \n\njerry: cmon, cmon, go ahead, move up. \n\ngeorge: why did you give him my ticket for? \n\njerry: you didnt see him. it was horrible. \n\ngeorge: oh, cmon, jerry. i cant believe this. \n\njerry: i had to do it. \n\ngeorge: oh, please. (to the teller) can you change this into bills? \n\nteller: im sorry, sir. we cant do that. \n\njerry: do you want to go with him? you go. i dont mind. \n\ngeorge: im not going with him. i dont even know the guy. (to the teller) look, they did this for me before. \n\nteller: look, i can give you these and you can roll them yourself. \n\ngeorge: you want me to roll six thousand of these?! what, should i quit my job?! \n\njerry: no, i do not like the bank. ive heard the expression laughing all the way to the bank. i have never seen anyone actually doing it. and those bank lines. i hate it when theres nobody on the line at all, you know that part, you go to the bank, its empty and you still have to go through the little maze. (walking on the stage like he is going through a maze) can you get a little piece of cheese for me? im almost at the front. id like a reward for this please. \n\ngeorge: ...thirty-two, thirty-three- \n\njerry: george. \n\ngeorge: not now. \n\njerry: could you stop the counting? \n\ngeorge: nnnnnnngaaa! \n\ngeorge: what?! \n\njerry: can i make it up to you? ill give you fifty bucks for the jug. \n\ngeorge: oh, yeah, sure. keep your money. \n\njerry: well, then im not going to the game either. okay? ill give him both tickets. \n\ngeorge: oh geeeee. (george pantomimes sticking a knife in his heart, and twists it.) go, go! \n\njerry: i- no, i dont want to go. \n\ngeorge: he was really crying? \n\njerry: i had to give him a tissue. in fact, let me call his machine now and ill just make up some excuse why i cant go to the game either. \n\ngeorge: wait a minute. wait a minute. as long as youre going to lie to the guy, why dont you tell him that you lost both of the tickets, then we can go? \n\njerry: george, the man wept. \n\nkramer: oh, hey guys. man, im telling you, this pizza idea, is really going to happen. \n\ngeorge: this is the thing where you go and you have to make your own pizza? \n\nkramer: yeah, we give you the dough, you smash it, you pound it, you fling it in the air. and then you get to put your sauce and you get to sprinkle your cheese, and then- you slide it into the oven. \n\ngeorge: you know, you have to know how to do that. you cant have people shoving their arms into a six-hundred degree oven! \n\nkramer: its all supervised. \n\ngeorge: oh, well... \n\nkramer: all of it. you want to invest? \n\ngeorge: my moneys all tied up in change right now. \n\nkramer: no, im tellin you, people, they really want to make their own pizza pie. \n\njerry: i-i have to say something. with all due respect, i just never- i cant imagine anyone in any walk of life, under any circumstance, wanting to make their own pizza pie... but thats me. alright \n\nkramer: thats you. \n\njerry: im just saying..alright. \n\nkramer: okay, okay. i just wanted to check with you guys. \n\njerry: okay. \n\nkramer: you know, this business is going to be big. i just wanted- okay. \n\nkramer: one day, youll beg me to make your own pie. \n\njerry: (to the phone) hi, joel. this is jerry. i hope you get this before you- oh, hi. joel... oh, you just came in... listen, i cant make it to the game tonight... i, uh, have to tutor my nephew... yeah, hes got an exam tomorrow... geometry... you know, trapezoids, rhombus... anyway, listen, you take the tickets. theyre at the will-call window... and im really sorry... have a good time... well talk next week... okay... yeah, i dont... fine.. fine... bye. \n\ngeorge: trapezoid? \n\njerry: i know. im really running out of excuses with this guy. i need some kind of excuse rolodex. \n\nelaine: come on, lets go do something. i dont wanna just sit around here. \n\njerry: okay. \n\nelaine: want to go get something to eat? \n\njerry: where do you want to go? \n\nelaine: i dont care, im not hungry. \n\njerry: we could go to one of those uh cappuccino places. they let you just sit there. \n\nelaine: what are we gonna do there? talk? \n\njerry: we could talk. \n\nelaine: ill go if i dont have to talk. \n\njerry: then well just sit there. \n\nelaine: okay. im gonna check my machine first. (elaine sees a pad of paper by the phone; reading) picking someone up at the airport, jury duty, waiting for cable guy... \n\njerry: okay, just hand that over, please. \n\nelaine: oh, what is this? \n\njerry: its a list of excuses, its for that guy, horneck, whos at the game tonight with my tickets. i have that list now so in case he calls, i just consult it and i dont have to see him. (elaine laughs.) i need it. (elaine starts writing on the list.) what are you doing? \n\nelaine: i got some for you. \n\njerry: i dont need any more. \n\nelaine: no no no no no, these are good. listen, listen you ran out of underwear, you cant leave the house. \n\njerry: (not amused) very funny. \n\nelaine: how about youve been diagnosed as a multiple personality. youre not even you. youre dan. \n\njerry: im dan. can i have my list back, please? \n\nelaine: here, here. jerry seinfeld, i cannot believe youre doing this. this is absolutely infantile. \n\njerry: what can i do? \n\nelaine: deal with it. be a man! \n\njerry: oh no. thats impossible. id rather lie to him for the rest of my life that go through that again. he was crying. tears. accompanied by mucus. \n\nelaine: you made a man cry? ive never made a man cry. i even kicked a guy in the groin once and he didnt cry. i got the cab. \n\njerry: couple of tough monkeys. \n\nkramer: oh, hi elaine, hey. (to jerry) hey, you missed a great game tonight, buddy! \n\njerry: game? \n\nkramer: knick game. horneck took me. we were sitting two rows behind the bench. we're getting hit by sweat! \n\njerry: wait. how does horneck know you? \n\nkramer: last week. when i, you know, gave you the phone. hes really into my pizza place idea! \n\njerry: this is too much. \n\nelaine: wait, what pizza place idea? \n\njerry: oh, no. \n\nkramer: you get to make your own pie! \n\nelaine: oh, that sounds like a great idea. it would be fun. \n\nkramer: yea. \n\njoel: (from the hallway) kramer. \n\nkramer: yeah. \n\njerry: perfect. \n\njoel: hey. \n\nkramer: okay, who wants meatloaf? \n\njerry & elaine: no thanks. \n\nkramer: (to joel) its gonna be hot in a minute. \n\njoel: so, i though you were tutoring your nephew? \n\njerry: oh, we finished early. \n\njoel: m-hm, ill bet. so, are you going to introduce me to your nephew? \n\njerry: elaine benes, this is joel horneck. \n\nelaine: hi. \n\njoel: whoa, nelson! this is elaine? i though you guys split? \n\njerry: were still friends. \n\njoel: so, thanks again for those tickets. but next week, im going to take you. how about next tuesday night? (to elaine) and why dont you come along? \n\nelaine: oh, no no. tuesdays uh no good becasue weve got choir practice. \n\njerry: right. i forgot about choir. \n\nelaine: we-were doing that evening of eastern european national anthems. \n\njerry: right. you know, the wall being down and everything. \n\njoel: what about thursday night? i mean theyre playing the sonics. \n\nelaine: huh... thursday is no good because weve got to get to the hospital to see if we qualify as those organ donors. \n\njoel: you know, i should really try something like that. \n\njerry: you really should. \n\njoel: well, lets just take a look here. \n\njoel: forty-one home games. let's see saturday night weve got the mavericks. if you dont like the mavericks, next tuesday lakers. i mean, you gotta like magic, right? lets see, on the road, on the road, on the road, on the road, back on the fourteenth. they play the bulls. you cant miss air jordan... \n\njerry: you know, i really... ive come to the conclusion that there are certain friends in your life that theyre just always your friends, and you have to accept it. you see them, you dont really wanna see them. you dont call them, they call you. you dont call back, they call again. the only way to get through talking with people that you dont really have anything in common with is to pretend youre hosting your own little talk show. this is what i do. you pretend theres a little desk around you. the only problem with this is theres no way you can say, hey, its been great having you on the show. were out of time. \n\njerry: went out to dinner the other night. check came at the end of the meal, as it always does. never liked the check at the end of the meal system, because moneys a very different thing before and after you eat. before you eat, money has no value. and you dont care about money when youre hungry. you sit down at a restaurant, youre like the ruler of an empire. more drinks, appetizers, quickly, quickly! it will be the greatest meal of our lives. then after the meal, you know, youve got the pants open, youve got the napkins destroyed, cigarette butt in the mashed potatoes. then the check comes at that moment. people are always upset, you know. theyre mystified by the check. what is this? how could this be? they start passing it around the table, does this look right to you? were not hungry now. why are we buying all this food? \n\njerry: i think superman probably has a very good sense of humor. \n\ngeorge: i never heard him say anything really funny. \n\njerry: but its common sense. hes got super strength, super speed. im sure hes got super humor. \n\ngeorge: you would think that, but either youre born with a sense of humor, or youre not. its not going to change even if you go from the red sun of krypton all the way to the yellow sun of the earth. \n\njerry: why? why would that one area of his mind not be affected by the yellow sun of earth? \n\ngeorge: i dont know. but he aint funny. \n\nelaine: i know, i know. im sorry im late. \n\njerry: no problem. \n\nelaine: i dropped a grape. \n\ngeorge: pardon? \n\nelaine: i dropped a grape in the kitchen and it disappeared. i couldnt find it. i was, i was literally on my knees for ten minutes looking for this stupid grape. i have no idea where it went. \n\njerry: were you crying? i mean, its just a grape. youll find it. \n\nelaine: no, im just getting over an allergy attack. this guy im going out with... \n\njerry: robert. \n\nelaine: robert. yes. thank you. he has two cats and im allergic to them. you know, i finally meet a normal man, and i cant even go into his apartment, you know. and, of course, my apartment is the actors studio so we cant go there. its really causing a lot of problems, you know. he wont even go away for the weekend because of these cats. \n\ngeorge: guys with cats... i dont know. \n\njerry: ive been thinking about asking this girl im, uh, seeing- \n\nelaine: vanessa. \n\njerry: vanessa, thank you. ive been thinking about asking her to go away for a couple of days. \n\ngeorge: oh, no. no no no no no. id have to advise against that. what, do you know this woman a month? lets see, youre going to be with her seventy-two hours. thats a dating decathlon. \n\nelaine: (balancing a spoon on her nose) hey, why dont you take her to that place in vermont i was telling you about? you know, that really charming place with the separate faucets for the hot and cold. shell love it. \n\ngeorge: thats exquisite. listen, uh, if its not too much trouble, could you pass me that paper over there? \n\njerry: you better find that grape before it mutates into another life form. there was once a mutant grape that terrorized an entire town in the texas panhandle. they brought in the army, nobody could stop it. apparently it had a pit of steel. \n\ngeorge: up again?! this is incredible! im.. im getting it. \n\nelaine: youre getting what? \n\ngeorge: a stock. \n\njerry: what stock? \n\ngeorge: did you ever meet my friend, simons? \n\njerry: maybe. \n\ngeorge: he knows this guy, wilkinson. he made a fortune in the stock market. now hes got some new thing. you know, theres supposed to be a big merger. he wasnt even supposed to say anything. you guys should think about doing this too. \n\njerry: how highs it suppose to go? \n\ngeorge: i dont know. but simons said that if i wanted to get involved, that wilkinson would tell me the exact right minute to sell. you wanna do it? \n\njerry: boy... i dont know. \n\nelaine: id do it but i dont have any money. \n\njerry: what kind of company is it? \n\ngeorge: its called sendrax. theyve got some new kind of technique for televising opera. \n\nelaine: televising opera? \n\ngeorge: some sort of electronic thingy. \n\njerry: well, how much are you going to invest? \n\ngeorge: five thousand... ten. ten thousand. five thousand. \n\njerry: boy... \n\ngeorge: cmon. wilkinsons got millions invested in this stock. its gone up three points since ive been watching it. \n\njerry: what if i lose it? \n\ngeorge: cmon, go for twenty-five hundred. well do it together. come on, come on. were in it together. \n\njerry: all right. twenty-five hundred. \n\ngeorge: thats it. \n\nwaitress: yeah, can i take your order? \n\ngeorge: (gesturing to jerry) check the raiser. \n\njerry: my bet? all right. ill open with a tuna sandwich. \n\nelaine: tuna? \n\njerry: oh, the dolphin thing? \n\nelaine: theyre dying in the nets. \n\njerry: ohhh... you know, the whole concept of lunch is based on tuna. \n\nelaine: jerry, cant you incorporate one unselfish act in your daily routine? \n\njerry: hey, when im driving, i let people in ahead of me all the time. im always waving everybody in. go ahead, go ahead, go ahead. ...all right. all right. ill have a chicken salad. \n\nelaine: and im going to have an english muffin with margarine on the side and a cup of coffee. \n\nwaitress: okay. (to george) what about you? \n\ngeorge: ill have the tuna. \n\njerry: i have to say, those people talking behind us really ruined that movie for me. \n\nvanessa: why didnt you do something? \n\njerry: what do you want me to do? i gave the guy the half-turn. (acts like he did in the movie) then i gave him the full-turn with the eye roll. (does the next look) i mean, beyond that, im risking a punch in the mouth. (to a stock boy) excuse me, do you have these in the puffs? \n\nstock boy: no puffs. just flakes. \n\njerry : have you thought any more about that trip? \n\nvanessa: yeah, ive been thinking about it. \n\njerry: you know, my friend told me about this great place in vermont. \n\nvanessa: i dont know. i just worry about trips like this. its a lot of pressure. \n\njerry: its great! it speeds up the intimacy level. its like putting the relationship in a time compressor. where we would be six months from now we accomplish (snaps his fingers) three days. \n\nvanessa: oh, so you want to move our relationship into phase two? \n\njerry: exactly. i love phase two. extra toothbrushes, increased phone call frequency, walking around naked. you know, the presents get a lot better in phase two. \n\nvanessa: really? could we go fishing up there? \n\njerry: yeah. we can fish. what? blues, carp, marlin? \n\nvanessa: they have marlin in vermont? \n\njerry: oh, big fighting marlin. (jerry acts like he is catching a marlin) \n\nvanessa: jerry, the stock is the same as when you checked it earlier. there are no changes after the market closes. the stock is still down. \n\njerry : i know. but this is a different paper. i thought maybe they have, uh, different... sources. \n\njerry: is that my paper? \n\nkramer: bad news, my friend. \n\njerry: what? what news? \n\nkramer : sendrax. \n\njerry: oh, cmon! its down again?! \n\nkramer: two and a half points. \n\njerry: oh, i cant believe it. let me see that. (jerry takes the paper.) thats four and a half points in three days! thats almost half my money! \n\nkramer: hey, i told you. \n\njerry: (sarcastic) yeah, you told me. \n\nkramer: its all manipulated with junk bonds. you cant win. \n\njerry: theres one thing i dont understand. why does it please you? (to the phone) george costanza, please. \n\nkramer: hey, i dont care. im just telling you to (yelling) get rid of that stock, now! \n\njerry: (to the phone) george, whats going on?! \n\nkramer: sell it, just say im selling! \n\njerry: (to the phone) well, where is the guy?!... nothing?! almost half my moneys gone... well, call me right back. (jerry hangs up.) nobody can reach wilkinson. he hasnt been home or in his office in the past three days! \n\nkramer: you know, i cant believe you put your money in that sendrax. and you couldve invested in my roll-out tie dispenser. \n\njerry: roll-out tie dispenser? what was that one? \n\nkramer: okay, youre in a restaurant. youve got a very big meeting coming up... \n\njerry: okay... \n\nkramer: (looks at his shirt as if he had a tie on) oh man, you got mustard on your tie! \n\njerry: (going along with it) oh no! \n\nkramer: you just (makes the tearing sound) tear it off, and vvvvrrrpppp you got a new one right here. then youre gone. \n\njerry: youre gone all right. \n\nkramer: (looking at map) hey, where, where are you going? you gonna take a trip? the map... what... \n\njerry: yeah, im going to vermont with uh vanessa for a few days. \n\nkramer: hey, can i use your place? i got a bunch of friends coming over this weekend. \n\njerry: what friends? \n\nkramer: well, its just some people i met at a rock concert. (phone rings.) do you mind if they use your bed? (jerry give kramer a look.) cause theyre really good people, jerry. im telling you. you know, theyre anarchists. theyre.. theyre.. theyre.. huge. \n\njerry: george- what?! youre kidding... well, whats wrong?... so, what are we gonna do?... great!... all right, ill speak to you later. (he hangs up.) wilkinson, the guy whos supposed to tell us when to sell the stock, hes in the hospital. \n\njerry: so you dont know whats wrong with him? \n\ngeorge: all simons was able to find out is that hes in the hospital. \n\njerry: okay, fine. has simons been in touch with him? \n\ngeorge: of course hes been in touch with him. hes left two messages. he just hasnt heard back yet, thats all. \n\njerry: well, this is it. im selling. \n\ngeorge: just give it a little more time. \n\njerry: i never shouldve gotten involved in this. im a nervous wreck. im not cut out for investing. \n\ngeorge: all right, all right. thats it. im gonna go down there. \n\njerry: where? \n\ngeorge: to the hospital. \n\njerry: the hospital? \n\ngeorge: im going to find out whats going on. all right? \n\njerry: are you nuts? you dont even know the guy. \n\ngeorge: so what? ill start talking to him, you know, casual, and ill work my way around to it. \n\njerry: what if hes in an iron lung or something? what are you gonna do? (jerry knocks on imaginary glass.) how you feeling, mr. wilkinson? (he makes a hissing sound.) by the way, whats happening with sendrax? \n\ngeorge: maybe hes resting. \n\njerry: who goes to the hospital to rest? \n\ngeorge: what are you, a doctor? \n\njerry: okay, fine, fine. when are you going down there? \n\ngeorge: today. im going today. just dont do anything until you hear from me. \n\njerry: all right. \n\ngeorge: (to the woman) boy, i have to get to a bathroom. \n\ndry cleaner: (to jerry) may i help you? \n\njerry: yeah. i picked up this shirt here yesterday. its completely shrunk. theres absolutely no way i can wear it. \n\ndry cleaner: when did you bring it in? \n\njerry: whats the difference? look at it! do you see the size of this shirt?! \n\ndry cleaner: you got a receipt? \n\njerry: i cant find the receipt. \n\ndry cleaner: you should get the receipt. \n\njerry: look, forget about the receipt, all right? even if i had the receipt- look at it! its a hand puppet. what am i gonna do with this?! \n\ndry cleaner: yes, but how do i know we did the shirt? \n\njerry: what do you think this is a little scam i have? i take this tiny shirt all over the city conning dry cleaners out of money? in fact, forget the money. i dont even want the money. i just once, i would like to hear a dry cleaner admit that something was their fault. thats what i want. i want an admission of guilt. \n\ndry cleaner: maybe you asked for it to be washed. \n\njerry: no! dry-cleaned. \n\ndry cleane: let me explain to you something, okay? with certain types of fabrics, different chemicals can react, causing- \n\njerry: you shrunk it! you know you shrunk it! just tell me that you shrunk it! \n\ndry cleaner: (looks around making sure not too many people are listening) i shrunk it. \n\njerry: i think the only reason we go to the dry cleaner is so i can say to the dry cleaner, well, its ruined. and of course, the dry cleaner can respond, its not our fault. were not responsible. we just ruin the clothes. that ends our legal obligation. you see, the whole problem with dry cleaning is that we all believe that this is actually possible. th-right? theyre cleaning our clothes, but theyre not getting anything wet. its all dry. i know theres gotta be some liquids back there, some fluids that theyre using. theres no such thing as dry cleaning. when you get something on your shirt, ever get something on your shirt and try to get it off like that (jerry brushes off his shirt.) thats dry cleaning. i dont think thats what theyre doing back there. they dont have eighty guys going, come on, hurry up! theres a lot of shirts today! \n\njerry: bless you. \n\nelaine: thank you. what evidence is there that cats are so smart, anyway? huh? what do they do? because theyre clean? i am sorry. my uncle pete showers four times a day and he cant count to ten, so dont give me hygiene. \n\njerry : so what are you gonna do? \n\nelaine: i dont know. i cant think of any solution, unless of course they should meet with some unfortunate accident. what do you think a hit man would charge to rub out a couple of cats? \n\njerry: well, it couldnt be too expensive. thirteen, fourteen bucks a cat? \n\nelaine: what do you think, jerry? you wanna make twenty-eight bucks? \n\njerry: im no cat killer. \n\nelaine: how about we go over there right now and we shave them? \n\njerry: id really like to go, elaine. but, george is coming back from the hospital. i gotta wait for him. but otherwise i would definitely go. \n\nelaine: he actually went to the hospital? \n\njerry: yeah. \n\nelaine: oh man, hes nuts. \n\njerry: yeah, hes nuts. you wanta bump off a couple of cats. (enter kramer, holding a paper up to jerry.) i know, i know. its down again. \n\nkramer: how much are you down altogether? \n\njerry: i dont know.. fifteen hundred dollars. \n\nkramer: wow. \n\njerry: you dont have to say wow. i know its wow. (kramer smiling) and theres that smile again. well, what is that? (intercom buzzes.) its george. \n\nkramer: oh, look at this one by the bus stop. jerry, come here. take a look at this. \n\njerry: i really dont need to look. \n\nkramer: what a body. yeeaahh. thats for me. \n\njerry: yeah, and youre just what shes looking for too  a stranger leering through a pair of binoculars ten floors up. \n\nkramer: im gonna go down there and try and talk to her. \n\njerry: what? what? did you go down there? (george nods.) did he tell you whats gonna happen? (george shakes his head.) how long were you there? \n\ngeorge: fifteen seconds. \n\njerry: you told him you knew simons? \n\ngeorge: yeah, i mentioned simons. next thing i know, im in the parking lot. perhaps they had some sort of a falling out. ill tell you one thing. i dont know what hes got. but for a sick guy, hes very strong. \n\njerry: well, thats it. look, im going to vermont. i dont want to think about this. im selling. \n\nelaine: didnt work, huh? \n\ngeorge: (laughs) not quite. \n\nelaine: we-well, what are you gonna do about the stock? \n\ngeorge: im keeping it. im going down with the ship. \n\njerry: so i know this guy. im getting all my sneakers at a discount now. \n\nvanessa: i know. you mentioned it. \n\njerry: oh yeah, right. \n\njerry: (thinking) oh god. get me out of here. what a mistake. what made me think this would work? and ive still got another day! ive got nothing left to say. wait... wait... got one. (to vanessa) thats a nice watch. do you wind it? \n\nvanessa: no, its got a little battery. \n\njerry: well, thats good. \n\njerry: (thinking) well, the drive home should be a delight. im speeding the whole way. let them throw me in jail. i dont care. (to vanessa) that's the manager? do you want me to see if we can get another room? \n\nvanessa: no, its okay. \n\njerry: so, i guess you dont find the separate faucets for the hot and cold, charming? \n\nvanessa: not especially. \n\njerry: well, what do you want to do this afternoon? \n\nvanessa: what can we do? its raining. \n\njerry: we cold play sorry! we cold play steal the old mans bundle. (vanessa not amused; jerry thinking) maybe i can get an extension cord and hang myself. (to vanessa) what kind of perfume is that youre wearing? \n\nvanessa: oh, youve never heard of it. \n\njerry: no, what? what kind is it? \n\nvanessa: i cant tell you. \n\njerry: (thinking) yeah, thats normal. (to a man nearby) excuse me, sir. could i have a look at that business section? \n\nvanessa: that stock? i thought you got out of that? \n\njerry: i did. im just curious. its been almost a week. i want to check it out. (he finds the stock.) six points? (to vanessa) its up six points! \n\nvanessa: i told you not to sell. \n\njerry: you did not tell me not to sell. \n\nvanessa: i said the market fluctuates. remember? \n\njerry: look, vanessa, of course the market fluctuates. everybody knows that. i just got fluctuated out of four thousand dollars! \n\nvanessa: thats probably why we're- \n\njerry: what? \n\nvanessa: forget it. \n\njerry: no, what? thats probably why.. \n\nvanessa: thats probably why were staying here, because you lost money on the stock. \n\njerry: (thinking) so, what am i looking at here? twenty-nine hours to go. well, at least i got plenty of time to find out the name of that perfume... \n\ngeorge: (laughing) have something else. cmon, have a little dessert? \n\njerry : im good, thanks. \n\ngeorge: elaine, get something! its all taken care of. \n\nelaine: im kinda full. \n\ngeorge: so dont finish it. \n\njerry: (acidly) shes full. so, big daddy. im just curious. how much did you clear on your little transaction there, all told? \n\ngeorge: i dont like to discuss figures. \n\njerry: how much? \n\ngeorge: i dont know, what? eight thousand. its a hyundai. get out of here. i told you not to sell. simons made money, wilkinson cleaned up. \n\njerry: so, wilkinsons out of the hospital now? \n\ngeorge : no. youd be surprised. you dont recover that quickly from a nose job. \n\nelaine: oh god. \n\njerry: is that still from the cats? \n\nelaine: no, i just have a cold. \n\njerry: so, what ever happened with that? \n\nelaine: i gave him an ultimatum. \n\ngeorge: he chose the cats? \n\nelaine: theyre very clean animals. \n\njerry: i gotta say, thats pretty sad. losing out to a cat. \n\nelaine: almost as bad as losing out to a perfume. \n\ngeorge: i told you those trips were relationship killers. too bad you cant get your buddy superman to fly around the earth at super speed and reverse time. youd get all the money back, you could have avoided the whole trip to vermont... \n\nelaine: superman can go back in time? \n\njerry: we went over that. \n\ngeorge: pst. (moves in close with elaine and jerry) wilkinsons got a bite on a new one. petramco corp. out of, uh springfield. i think. theyre about to introduce some sort of a robot butcher. \n\njerry: a robot butcher? \n\ngeorge: shhhhh. if you want to get in, theres very little time. (calling to the waitress) sweetheart.. (waitress approaches and tears off a check. george stops her.) no, no, no. that ought to cover it. (he hands her some money; she turns to leave; george stops her.) just a second. just a... let me jus-peek... (he looks at the check, then takes some money out of her hand. george urges jerry and elaine to eat.) come on, come on, come on... \n\njerry: im not an investor. people always tell me, you should have your money working for you. ive decided ill do the work. im gonna let the money relax. you know what i mean? cause you send your money out there  working for you  a lot of times, it gets fired. you go back there, what happened? i had my money. it was here, it was working for me. yeah, i remember your money. showing up late. taking time off. we had to let him go. \n\njerry: im always in traffic with the lane expert. you know this type of person? constantly reevaluating their lane choice. never quite sure, is this the best lane for me? for my life? theyre always a little bit ahead of you, can i get in over there? could i get in over here? could i get in there? yeah, come on over here, pal. were zoomin over here. this is the secret lane, nobody knows about it. the ultimate, i think the ultimate psychological test of traffic is the total dead stop. not even rolling. and you look out the window, you can see gum clearly. so we know that in the future traffic will get even worse than that. i mean, what will happen? will it start moving backwords, i wonder? i mean, is that possible? that someday well be going, (jerry pretends hes driving in reverse.) boy, this is some really bad traffic now, boy. this, is really bad. im gonna try to get off and get back on going the other way. \n\ngeorge: she cant kill me right? \n\njerry: no, of course not. \n\ngeorge: people break up all the time. \n\njerry: everyday. \n\ngeorge: it just didnt work out. what can i do? i wanted to love her. i tried to love her. i couldnt. \n\njerry: you tried. \n\ngeorge: i kept looking at her face. id go, cmon, love her. love her! \n\njerry: did you tell her you loved her? \n\ngeorge: oh, i had no choice. she squeezed it out of me! shed tell me she loved me. all right, at first, i just look at her. id go, oh, really? or uh, boy, thats, thats something. but, eventually you have to come back with, well, i love you. you know, you can only hold out for so long. \n\njerry: youre a human being. \n\ngeorge: and i didnt even ask her out. she asked me out first. she called me up. what was i supposed to do? say no? (laughs) i cant do that to someone. \n\njerry: youre too nice a guy. \n\ngeorge: i am. im a nice guy. and she seduced me! we were in my apartment, im sitting on the couch, shes on the chair. i get up to go to the bathroom, i come back, shes on the couch. what am i supposed to do? not do anything? i couldnt do that. i wouldve insulted her. \n\njerry: youre flesh and blood. \n\ngeorge: i had nothing to do wtih any of this! i met all her friends, i didnt want to meet them. i kept trying to avoid it. i knew it would only get me in deeper. but they were everywhere! they kept popping up all over the place. this is nancy, this is susan, this is amy, this is my cousin, this is my brother, this is my father... its like im in quicksand. \n\njerry: i told you when i met her. \n\ngeorge: my back is killing me. \n\njerry: you gotta go to my chiropractor, hes the best. \n\ngeorge: oh yeah, everybodys guy is the best. \n\njerry: im gonna make an appointment for you. well go together. \n\ngeorge: please. they dont do anything. look, do i have to break up with her in person? cant i do it over the phone? i-i have no stomach for these things. \n\njerry: you should just do it like a band-aid. one motion! right off! \n\nelaine: hi. \n\njerry: hi. \n\nelaine: hey, what are you doing? \n\ngeorge: im letting you in. \n\nelaine: oh no. no. i dont want to sit in the back. ill be left out of the conversation. \n\ngeorge: no, you wont. \n\nelaine: yes, i will, george. ill have to stick my chin on top of the seat. \n\ngeorge: okay. \n\nelaine: why cant you sit in the middle? \n\ngeorge: please, it doesnt look good. boy, boy, girl. \n\nelaine: youre afraid to sit next to a man. youre a little homophobic, arent ya? \n\ngeorge: is it that obvious? \n\nelaine: hello, jerry. \n\njerry: hello. \n\nelaine: did you get a haircut? \n\njerry: no, shower. so, where are we eating? \n\nelaine: tell me if you think this is strange. theres this guy who lives in my building, who i was introduced to a couple of years ago by a friend. hes a uh teacher, or something. anyway, after we met, whenever wed run into each other on the street, or in the lobby, or whatever, we would stop and we would chat a little. nothing much. little pleasantries. hes a nice guy, hes got a family. then after a while, i noticed there was not more stopping. just saying hello and continuing on our way. and then the verbal hellos stopped, and we just went into these little sort of nods of recognition. so, fine. i figure, thats where this relationship is finally gonna settle polite nodding. then one day, he doesnt nod. like i dont exist?! he went from nods to nothing. \n\ngeorge: (singing; imitating tony bennett) you know, id go from nods to nothing... \n\nelaine: and now, theres this intense animosity whenever we pass. i mean, its like we really hate each other. its based on nothing. \n\njerry: a relationship is an organism. you created this thing and then you starved it so it turned against you. same thing happened in the blob. \n\ngeorge: i think you absolutely have to say something to this guy. confront him. \n\nelaine: really? \n\ngeorge: yes. \n\nelaine: you would do that? \n\ngeorge: if i was a different person. \n\njerry: hello... hello. is glen there?... im sorry. is this 805-555-3234?... yes, i know i have the wrong number, but i just want to know if i dialed wrong or if... \n\nkramer: (to the intercom) come on up. \n\njerry: (to the phone) oh, its you again. see, now if you had answered me, i wouldnt have had to do this. now thats two long distance calls i made to you why cant you... (the guy hangs up on jerry again; to nobody) why? why do they just hang up like that? thank you very much. \n\nkramer: taste this. \n\njerry: no, i just had a sandwich. \n\nkramer: no, taste it. taste it. \n\njerry: i dont want cantaloupe now. \n\nkramer: youve never had cantaloupe like this before... \n\njerry: i only eat cantaloupe at certain times... \n\nkramer: ...jerry. this is great cantaloupe. \n\njerry: ...all right! \n\nkramer: uh-huh. its good? \n\njerry: its very good. \n\nkramer: good, huh? \n\njerry: good. \n\nkramer: i got it at joes. \n\njerry: uh-huh. \n\nkramer: forty-nine cents a pound. thats practically half than what youre paying at the supermarket. i dont know why you dont go to joes. \n\njerry: its too far. \n\nkramer: its three blocks further. you can use my shopping cart.. \n\njerry: im not pulling a shopping cart. what, am i suppose to wear a kerchief? put stockings on and roll em down below my knee? \n\nkramer: see, the other thing is, if you dont like anything, he takes it right back. \n\njerry: i dont return fruit. fruit is a gamble. i know that going in. \n\ngeorge: im outta there. i did it! its over. \n\njerry: you did it? what happened? \n\ngeorge: i told her. in the kitchen  which was risky cause its near all the knives. i started with the word listen. \n\njerry: uh-huh... \n\ngeorge: i said, listen marlene, and then the next thing i know, im in the middle of it. and theres this voice inside of me going, youre doing it! youre doing it! and then she started to cry, and i weakened a bit. i almost relented, but the voice, jerry, the voice said, keep going, keep going. youre almost out! its like i was making a prison break, you know, and im heading for the wall, and i trip and i twist my ankle, and they throw the light on you, you know. so, somehow i get though the crying and i keep running. then the cursing started. shes firing at me from the guard tower. son of a bang! son of a boom! i get to the top of the wall  the front door. i opened it up, im one foot away, i took one last look around the penitentiary, and i jumped! \n\njerry: see, its never as bad as you imagine. \n\nkramer: i liked marlene. whats her number? \n\ngeorge: uh, no, i, i dont think so. \n\njerry: (to kramer) could you stop that smacking? \n\nkramer: george, i want you to taste this cantaloupe. \n\ngeorge: oh no, thank you. \n\nkramer: its the best cantaloupe i ever had. \n\ngeorge: no, really. no, no, thanks. \n\nkramer: jerry, tell him how good this cantaloupe is. \n\njerry: its very good cantaloupe. (kramer leaves; to george) so thats it? youre out? \n\ngeorge: except for one small problem. hah, i left some books in her apartment. \n\njerry: so, go get them. \n\ngeorge: oh, no no, i cant go back there. jerry, its so awkward and, you know, it could be dangerous sexually. something could happen, id be right back where i started from. \n\njerry: so forget about the books. did you read them? \n\ngeorge: well, yeah. \n\njerry: what do you need them for? \n\ngeorge: i dont know. theyre books. \n\njerry: what is this obsession people have with books? they put them in their houses like theyre trophies. what do you need it for after you read it? \n\ngeorge: theyre my books. \n\njerry: so you want me to get the books? is that it? \n\nmarlene: ...so, it mustve been ninety-five degrees that night, and everyones just standing around the pool with little drinks in their hands. i was wearing my old jeans and t-shirt. and i dont know, i was just in one of those moods. so i said to myself, marlene, just do it. and i jumped in. and as im getting out, i feel all these eyes on me, and i look up and everyone is just staring at me. \n\njerry: so whatd you do? \n\nmarlene: well, nothing. its no skin off my hide if people like to look. i just didnt see what the big attraction was. \n\njerry: well, i have a general idea what it was. i could take a guess. \n\nmarlene: hey, you know, jerry, just because george and i dont see each other anymore, it doesnt mean we shouldnt stay friends. \n\njerry: no. \n\nmarlene: good enough. im really glad we got that settled. \n\njerry: i dont know how this happened. \n\ngeorge: jerry, its not my fault. \n\njerry: no, no. its not your fault. books, books, i need my books. have you re-read those books yet, by the way? you know the great thing? when you read moby dick the second time, ahab and the whale become good friends. you know, its not like marlenes a bad person or anything, but, my god! i mean, weve had like three lunches and a movie, and she never stops calling. (george nods.) and its these meaningless, purposeless, blather calls. she never asks if im busy or anything. i just pick up the phone, and shes in the middle of a sentence! \n\ngeorge: it's standard. has she left you one of those messages where she uses up the whole machine? \n\njerry: (disgusted) ohh! you know, and sometimes shell go, (imitates marlene) hello, jerry? and ill go, oh, hi marlene. and then its jerry... \n\njerry & george: i dunno sometimes... \n\ngeorge: what trying to get off the phone? \n\njerry: (more disgusted) ohhhh! you cant! its impossible! theres no break in the conversation where you can go, all right then... you know, it just goes on and on and on without a break in the wall. i mean, i gotta put a stop to this. \n\ngeorge: just do it like a band-aid. one motion. right off! (beat) she is sexy though. dont you think? \n\njerry: yeah. yes, she is. \n\nreceptionist: mr. costanza? \n\ngeorge: yeah. \n\nreceptionist: the doctor will see you now. \n\ngeorge: (to jerry, sarcastically) yeah, doctor. im going to have to wait in that little room all by myself, arent i? (he picks up a crossword puzzle.) i better take this. i hate the little room. (george walks into the hallway that leads to the doctors office.) oh, hello, doctor. \n\njerry: the waiting room. i hate when they make you wait in the room. cause it says waiting room. theres no chance of not waiting. cause they call it the waiting room, theyre gonna use it. theyve got it. its all set up for you to wait. and you sit there, you know, and youve got your little magazine. you pretend youre reading it, but youre really looking at the other people. you know, youre thinking about about them. things like, i wonder what hes got. as soon as she goes, im getting her magazine. and then, they finally call you and its a very exciting moment. they finally call you, and you stand up and you kinda look around at the other people in the room. well, i guess ive been chosen. ill see you all later. you know, so you think youre going to see the doctor, but youre not, are you? no. youre going into the next waiting room  the littler waiting room. but if they are, you know, doing some sort of medical thing to you, you want to be in the smallest room that they have, i think. you dont wnat to be in the largest room that they have. you know what i mean? you ever see these operating theaters, that they have, with like, stadium seating? you dont want them doing anything to you that makes other doctors go, i have to see this! are you kidding? are they really gonna do that to him? are there seats? can we get in? do they scalp tickets to these things? i got two for the winslow tumor, i got two... \n\njerry: so, how was it? \n\ngeorge: i was in there for two minutes. he didnt do anything. touch this, feel that  seventy-five bucks! \n\njerry: well, its a first visit. \n\ngeorge: whats seventy-five bucks?! what, am i seeing sinatra in there?! am i being entertained? i dont understand this. im only paying half. \n\njerry: you cant do that. \n\ngeorge: why not? \n\njerry: hes a doctor. you gotta pay what he says. \n\ngeorge: oh, no no no. i pay what i say. \n\nmarlene: are you feeling weird? \n\njerry: no, im fine. \n\nmarlene: nothing really happened. \n\njerry: yeah, i know. \n\nmarlene: we just kissed a little. people kiss. \n\njerry: yeah. \n\nmarlene: well... night. \n\njerry: (belated) good night. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: i got it! this time, i got it! \n\njerry : all right. \n\nkramer: hips! see, its all hips. \n\njerry: uh-huh. \n\nkramer: you gotta come through with the hips first. \n\njerry: that is out there. \n\nkramer: joes? \n\njerry: no, supermarket. \n\nkramer: well, is it good? \n\njerry: its uh okay. \n\nkramer: let me taste it. \n\nkramer: see, that stinks. you cant eat that. you should take that back. \n\njerry: im not taking it back. \n\nkramer: all right, ill take it back. im going by there. \n\njerry: i dont care about it. \n\nkramer: jerry, you should care. cantaloupe like this should be taken out of circulation. \n\njerry: all right. take it back. \n\njerrys message: leave a message, ill call you back. \n\nmarlene: (from the phone) jerry, have you ever taken a bath in the dark? if im not talking into the soap right now, call me back. \n\nkramer: well? \n\njerry: marlene. \n\nkramer: (smiles) oh. oh, marlene... \n\njerry: yeah, i took her home one night  we kinda started up a little bit in the car. \n\nkramer: i thought you were trying to get rid of her? \n\njerry: i was. but, shes got me, like, hypnotized. \n\nkramer: does george know? \n\njerry: no, hed go nuts. \n\nkramer: yeah, no kidding. \n\njerry: i feel terrible. (kramer smiling) i mean, ive seen her a couple of times since then, and i know i cant go any further, but... shes just got this like, psychosexual hold over me. i just want her, i cant breathe. its like a drug. \n\nkramer: whoa, psychosexual. \n\njerry: i dont know how im going to tell him. \n\nkramer: man, i dont understand people. i mean, why would george want to deprive you of pleasure? is it just me? \n\njerry: its partially you, yeah. \n\nkramer: youre his friend. better that she should sleep with someone else? some jerk that he doesnt even know? \n\njerry: well, he cant kill me, right? \n\nkramer: youre a human being. \n\njerry: i mean, she called me. i havent called her. she started it. \n\nkramer: youre flesh and blood. \n\njerry: im a nice guy. \n\nelaine: hi. \n\njerry: (excited) oh, my little airplane lamp. \n\nelaine: you know, you have the slowest elevator in the entire city. thats hard to get used to when youre in so many other fast ones. \n\njerry: well, the apartment elevators are always slower than the offices, because you dont have to be home on time. \n\nelaine: unless youre married to a dictator. \n\njerry: yeah... because they would be very demanding people. \n\nelaine: right. exactly. so i imagine at some point somebodys going to offer me some cantaloupe? \n\nkramer: nope. no good. \n\njerry: well, you know what they say. lucky in love, unlucky with fruit. \n\nkramer: well, im taking this back. \n\nelaine: so, i had what you might call a little encounter this morning. \n\njerry: really? that guy who stopped saying hello? \n\nelaine: yes. \n\njerry: you talked to him? \n\nelaine: yes. i spotted him getting his mail. and at first, i was just going to walk on by, but then i thought, no no no. no. do not be afraid of this man. \n\njerry: right. \n\nelaine: so, i walked up behind him and i tapped him on the shoulder. and i said, hi, remember me? and he furrows his brow, as if hes really trying to figure it out. so i said to him, i said, you little phony. you know exactly who i am. \n\njerry: you said \"you little phony\"? \n\nelaine: i did. i most certainly did. and he said, he goes, oh, yeah. youre jeanettes friend. we did meet once. and i said, well, how do you go from that to totally ignoring a person when they walk by? \n\njerry: this is amazing. \n\nelaine: and he says, he says, look, i just didnt want to say hello anymore, all right? and i said, fine. fine. i didnt want to say hello anymore either, but just i wanted you to know that im aware of it! \n\njerry: you are the queen of confrontation. youre my new hero. in fact, youve inspired me. im gonna call george about something right now. \n\nelaine: this cantaloupe stinks. \n\ngeorge: (considers for a second) i dont care. \n\njerry: youre kidding. \n\ngeorge: no, i dont care. \n\njerry: you mean that? \n\ngeorge: absolutely. \n\njerry: you dont care? \n\ngeorge: no. \n\njerry: how could you not care? \n\ngeorge: i dont know. but i dont. im actually almost happy to hear it. \n\njerry: i thought youd be upset. \n\ngeorge: i guess i should be, but im not. \n\njerry: am i a bad person? did i do something terrible? \n\ngeorge: youre a fine person. youre a humanitarian. shes very sexy. \n\njerry: that voice. that voice. shes driving me crazy. \n\ngeorge: i know. i know. \n\njerry: so i can see her tonight, and you dont care? \n\ngeorge: see her tonight. see her tomorrow. go. knock yourself out. shes too crazy for me. \n\njerry: all right. as long as youre okay. because i cant stop thinking about her. \n\ngeorge: im okay. im fine. im wonderful. i never felt better in my whole life. \n\njerry: good. and ill tell you what... you dont have to pay me back the thirty-five i gave to the chiropractor for the rest of your bill. \n\ngeorge: (shocked and angry) you paid that crook?! \n\njerry: i had to. \n\ngeorge: he didnt do anything, jerry. its a scam! who told you to do that? \n\njerry: it was embarrassing to me. \n\ngeorge: oh, i was trying to make a point. \n\njerry: why dont you make a point with your own doctor? (george gulps.) whats wrong? \n\ngeorge: (gasping) i think i swallowed a fly! i swallowed a fly! what do i do? (he turns to a coffee shop patron at the counter.) what can happen?! \n\njerry: so, you wanna come up for a few minutes? \n\nmarlene: im sorry, jerry. i just dont think this is gonna work. \n\njerry: really? i thought... \n\nmarlene: i know, im sorry. \n\njerry: gee, i just didnt expect it from the way youve been acting. \n\nmarlene: you sure you want to talk about this? cause i sure dont. \n\njerry: of course i want to talk about it. \n\nmarlene: well, okay. i guess things changed for me on tuesday night. \n\njerry: tuesday night? what happened tuesday night? \n\nmarlene: i saw your act. \n\njerry: my act? wha-what does that have to do with anything? \n\nmarlene: well, to be honest, it just didnt make it for me. its just so much fluff. \n\njerry: i cant believe this. so what are you saying? you didnt like my act, so thats it? \n\nmarlene: i cant be with someone if i dont respect what they do. \n\njerry: youre a cashier! \n\nmarlene: look, jerry, its just wasn't my kind of humor. \n\njerry: you cant go by the audience that night. it was late. they were terrible. \n\nmarlene: i heard the material. \n\njerry: i have other stuff. y-you should come see me on the weekend. \n\njerry: women need to like the job of the guy theyre with. if they dont like the job, they dont like the guy. men know this. which is why we make up the phony, bogus names for the jobs that we have. well, right now, im the regional management supervisor. im in development, research, consulting... men on the other hand  if they are physically attracted to a woman  are not that concerned with her job. are we? men dont really care. menll just go, really? slaughterhouse? is that where you work? that sounds interesting. so whaddaya got a big cleaver there? youre just lopping their heads off? that sounds great! listen, why dont you shower up, and well get some burgers and catch a movie. \n\njerry: my parents live in florida now. they moved there last year. they didnt want to move to florida, but theyre in their sixties, and thats the law. you know how it works. they got the leisure police. they pull up in front of the old peoples house with a golf cart, jump out, lets go pop, white belt, white pants, white shoes, get in the back. drop the snow shovel right there. drop it! i am not much for the family gathering. you know, you sit there, and the conversations so boring. its so dull. and you start to fantasize. you know, you think, what if i just got up and jumped out that window? what would it be like? just crashed right through the glass. you know. come back in, theres broken glass, everybodys all upset. no, im all right. i was just a little bored there. and uh no, im fine. i came back. i wanted to hear a little more about that hummel collection, aunt rose. lets pick it up right there. \n\nhelen: you have so many nice jackets. i dont know why you had to bring this jacket. who wears a jacket like this? whats wrong with that nice gray one? you have beautiful clothes. they sit in your closet. morty, you cant wear this! \n\nmorty: are you getting that? \n\nhelen: i thought you were getting it. \n\nmorty: should i pick up? \n\nhelen: you want me to get that? \n\nmorty: ill get it! \n\nhelen: ill get it! \n\nhelen: hello?... hello? \n\njerry: hi. \n\nhelen: hi. \n\njerry: (to morty) would you make this thing lower! i can hear it on the street! \n\nmorty: so, howd you do? \n\njerry: we won. i made an incredible play in the field! there was a tag-up at third base and i threw the guy out from left field on a fly! well be in the championship game wednesday because of me. it was the single greatest moment in my life. \n\nhelen: this is your greatest moment? a game? \n\njerry: well, no. sharon besser, of course. \n\nmorty: you know what my greatest moment was, dont you? nineteen-forty-six. i went to work for harry flemming and i came up with the idea for the beltless trenchcoat. \n\nhelen: jerry, look at this sport jacket. is this a jacket to wear to an anniversary party? \n\njerry: well, the mans an individualist  he worked for harry flemming. he knows what hes doing. \n\nhelen: but its their 50th anniversary. \n\nmorty: your mother doesn't like my taste in clothing. \n\nhelen: you know, i spoke to manya and isaac on the phone today. they invited you again. i think you should go. \n\njerry: first of all, i made plans with elaine. \n\nhelen: so bring her. \n\njerry: i dont even know them. what is she, your second cousin? i mean, ive met them three times in my life. \n\nmorty: i dont know her either. (gesturing to helen) she makes me fly all the way from florida for this, and then she criticizes my jacket. \n\nhelen: at least come and say hello, have a cup of coffee, then youll leave. \n\nmorty: how come he gets to leave? \n\njerry: if i wind up sitting next to uncle leo, i am leaving. hes always grabbing my arm when he talks to me. i guess its because so many people have left in the middle of his conversation. \n\nmorty: and its always about jeffrey, right? \n\njerry: yeah. he talks about him like he split the atom. the kid works for the parks department. \n\nkramer: morty, are you coming in? \n\nmorty: oh, yeah. i forgot all about it. \n\nkramer: (to jerry) hey, howd you do? \n\njerry: we won. were in the finals on wednesday. \n\nkramer: yeah! \n\njerry: (to kramer and morty) what is this about? \n\nkramer: im completely changing the configuration of the apartment. youre not gonna believe it when you see it. a whole new lifestyle. \n\njerry: what are you doing? \n\nkramer: levels. \n\njerry: levels? \n\nkramer: yeah, im getting rid of all my furniture. all of it. and im going to build these different levels, with steps, and itll all be carpeted with a lot of pillows. you know, like ancient egypt. \n\njerry: you drew up plans for this? \n\nkramer: no no. its all in my head. \n\nmorty: i dont know how youre going to be comfortable like that. \n\nkramer: oh, ill be comfortable. \n\njerry: when do you intend to do this? \n\nkramer: ohh... should be done by the end of the month. \n\njerry: youre doing this yourself? \n\nkramer: its a simple job. why, you dont think i can? \n\njerry: oh, no. its not that i dont think you can. i know that you cant, and im positive that you wont. \n\nkramer: well, i got the tools. i got the pillows. all i need is the lumber. \n\nmorty: hey, thats some big job. \n\njerry: i, dont see it happening. \n\nkramer: well, this time, this time youre wrong. cmon. ill even bet you. \n\njerry: seriously? \n\nhelen: i dont want you betting. morty, dont let him bet. \n\nkramer: a big dinner with dessert. but ive got till the end of the month. \n\njerry: ill give you a year. \n\nkramer: no no no. end of the month. \n\njerry: its a bet. \n\njerry: (to elaine) seriously, do you wanna switch chairs? \n\nelaine: no, no. im fine. \n\nuncle leo: jerry, are you listening to this? \n\njerry: yeah, uncle leo. \n\nuncle leo: so, so, now the parks commissioner is recommending jeffrey for a citation. \n\njerry: right. for the reducing of the pond scum? \n\nuncle leo: no, for the walking tours. \n\njerry: oh, yeah. where the people eat the plant life. the edible foliage tour. \n\nuncle leo: thats exactly right. he knows the whole history of the park. for two hours hes talking and answering questions. but you want to know something? whenever he has a problem with one of these high-powered big shots in the parks department, you know who he calls? \n\njerry: mickey mantle? \n\nelaine: (saving jerry from leo) jerry, jerry. did you taste these peas? (to manya) these peas are great! \n\njerry: (eating a forkful) these peas are bursting with country fresh flavor. \n\nelaine: mmm... phenomenal peas. \n\nmorty: are you ready for dessert? \n\njerry: well, actually, we do have to kind of get going. \n\nmanya: (surprised) youre going? \n\nelaine: oh uh, i dont really eat dessert. im dieting. \n\njerry: yeah, i cant eat dessert either. the sugar makes my ankles swell up, and i cant dance. \n\nmanya : cant dance? \n\nhelen: hes kidding, manya. \n\nmanya: is that a joke? \n\nhelen: so, did you hear claires getting married? \n\nmanya: yeah, yeah.. \n\nhelen: i hear the fella owns a couple of racehorses. you know, trotters, like at yonkers. \n\njerry: horses? theyre like big riding dogs. \n\nelaine: what about ponies? what kind of abnormal animal is that? and those kids who had their own ponies... \n\njerry: i know, i hated those kids. in fact, i hate anyone that ever had a pony when they were growing up. \n\nmanya: (angry) i had a pony. \n\njerry: well, i didnt uh really mean a pony, per se... \n\nmanya: when i was a little girl in poland, we all had ponies. my sister had pony, my cousin had pony... so, whats wrong with that? \n\njerry: nothing. nothing at all. i was just merely expressing... \n\nhelen: should we have coffee? whos having coffee? \n\nmanya: he was a beautiful pony! and i loved him. \n\njerry: well, im sure you did. who wouldnt love a pony? who wouldnt love a person that had a pony? \n\nmanya: you! you said so! \n\njerry: no, see, we didnt have ponies. im sure at that time in poland, they were very common. they were probably like compact cars.. \n\nmanya: thats it! i had enough! \n\nisaac: have your coffee, everybody. shes a little upset. its been an emotional day. \n\njerry: i didnt know she had a pony. how was i to know she had a pony? who figures an immigrants going to have a pony? do you know what the odds are on that? i mean, in all the pictures i saw of immigrants on boats coming into new york harbor, i never saw one of them sittin on a pony. why would anybody come here if they had a pony? who leaves a country packed with ponies to come to a non-pony country? it doesnt make sense. am i wrong? \n\njerry: ill drive you to the airport. \n\nhelen: no, were taking a cab. \n\njerry: i just hope that whole pony incident didnt put a damper on the trip. \n\nhelen: dont be ridiculous. it was a misunderstanding. \n\nmorty: hey, i agree with him. nobody likes a kid with a pony. \n\njerry: well, if you ever talk to her, tell her im sorry. elaine too. she feels terrible. \n\nhelen: you know, you should give manya a call. \n\njerry: maybe i will. \n\nkramer: oh, hi. i uh just came to say goodbye. \n\nkramer: need any help with those? \n\nmorty: its nothing. i got it. so, how are your levels coming along? \n\nkramer: oh, well... i decided im not gonna do it. \n\njerry: (laughing) really? what a shock. \n\nhelen: goodbye, jerry. \n\njerry: take care. \n\nhelen: well call you. \n\nmorty: bye, jer. \n\njerry: bye, dad. take it easy. \n\nmorty: bye, mr. kramer. \n\nkramer: yeah. so long, morty. \n\njerry: so, when do i get my dinner? \n\nkramer: theres no dinner. the bets off. im not gonna do it. \n\njerry: yes, i know youre not gonna do it. thats why i bet. \n\nkramer: ya well, theres no bet if im not doing it. \n\njerry: thats the bet! that youre not doing it! \n\nkramer: yeah, well, i could do it. i dont wanna do it. \n\njerry: we didnt bet on if you wanted to. we bet on if it would be done. \n\nkramer: and it could be done. \n\njerry: well, of course it could be done! anything could be done! but it only is done if its done! show me the levels! the bet is the levels! \n\nkramer: i dont want the levels! \n\njerry: thats the bet! (the phone rings; jerry answers it.) hello?... no- oh, hi... (kramer leaves) no, they just left... oh, my god... hang on a second. maybe i can still catch em. (jerry goes over to the window and opens it; calling out the window) ma! ma! up here! dont get in the cab! manya died! manya died!! \n\nhelen: who did you talk to? \n\njerry: uncle leo. \n\nhelen: and whens the funeral? \n\njerry: i dont know. he said hed call back. \n\nmorty: you know what this means, dont you? we lost the supersaver. those tickets are non-refundable. \n\nhelen: she just had a check-up. the doctor said she was fine. unless... \n\njerry: what? \n\nhelen: what? nothing. \n\njerry: you dont think... what? the pony remark? \n\nhelen: oh, dont be ridiculous. she was an old woman. \n\njerry: you dont think that i killed her? \n\nmorty: you know what the flight backll cost us? \n\njerry: it was just an innocent comment! i didnt know she had a pony! \n\nmorty: maybe we can get an army transport flight. they got a base in sarasota, i think. \n\njerry: the whole thing was taking out of context. it was a joke. (the phone rings.) thats probably uncle leo. \n\nhelen: hello?... yes, i know... well, its just one of those things... sure, sure, well see you then. \n\nhelen: the funerals wednesday. \n\njerry: wednesday? what, what wednesday? \n\nhelen: two o clock, wednesday. \n\njerry: ah \n\nhelen: what? \n\njerry: ive got the softball game on wednesday. its the championship. \n\nhelen: so? youre not obligated. go play in your game. \n\njerry: i didnt even know the woman. \n\nhelen: so dont go. \n\njerry: i mean i met her three times. i dont even know her last name. \n\nhelen: jerry, no ones forcing you. \n\njerry: i mean, who has a funeral on a wednesday? thats what i want to know. i mean, its the championship, im hitting everything. \n\nhelen: i dont have a dress to wear. (to morty) and you. you dont have anything. \n\nmorty: i got my sport jacket. \n\nhelen: youre not wearing that to a funeral. \n\nmorty: whats wrong with it? \n\nhelen: it looks ridiculous. \n\nmorty: what? im gonna buy a new sport jacket now? \n\njerry: i dont know what to do. \n\nmorty: (depressed) you know what this funerals gonna wind up costing me? oh boy! \n\njerry: we dont understand death. and the proof of this is that we give dead people a pillow. and, uh, i mean, hey, you know. i think if you cant stretch out and get some solid rest at that point, i dont see how bedding accessories really make the difference. i mean, they got the guy in a suit with a pillow. now, is he going to a meeting, or is he catching forty winks? i mean, lets make up our mind where we think theyre going. \n\nelaine: i actually like ponies. i was just trying to make conversation. what times your game? \n\njerry: two forty-five. \n\nelaine: and what times the funeral? \n\njerry: two o clock. \n\nelaine: how long does a funeral take? \n\njerry: depends on how nice the person was. but you gotta figure, even oswald took forty-five minutes. \n\nelaine: so you cant do both? \n\njerry: you know, if the situation were reversed and manya had some mah-jongg championship or something, i wouldnt expect her to go to my funeral. i would understand. \n\nelaine: how can you even consider not going? \n\ngeorge: you know, ive been thinking. i cannot envision any circumstances in which ill ever have the opportunity to have sex again. hows it gonna happen? i just dont see how it could occur. \n\nelaine: you know, funerals always make me think about my own mortality and how im actually gonna die someday. me, dead. imagine that. \n\ngeorge: they always make me take stock of my life. and how ive pretty much wasted all of it, and how i plan to continue wasting it. \n\njerry: i know, and then you say to yourself, from this moment on, im not gonna waste any more of it. but then you go, how? what can i do thats not wasting it? \n\nelaine: is this a waste of time? what should we be doing? cant you have coffee with people? \n\ngeorge: you know, i cant believe youre even considering not playing. we need you. youre hitting everything. \n\nelaine: he has to go. he may have killed her. \n\njerry: me? what about you? you brought up the pony. \n\nelaine: oh, yeah, but i didnt say i hated anyone who had one. \n\ngeorge: (to jerry) whos going to play left field? \n\njerry: bender. \n\ngeorge: bender? he cant play left. he stinks. i just dont see what purpose is it gonna serve your going? i mean, you think dead peole care whos at their funeral? they dont even know theyre having a funeral. its not like shes hanging out in the back going, i cant believe jerry didnt show up. \n\nelaine: maybe shes there in spirit. how about that? \n\ngeorge: if youre a spirit, and you can travel to other dimensions and galaxies, and find out the mysteries of the universe, you think shes gonna wanna hang around drexlers funeral home on ocean parkway? \n\nelaine: george, i met this woman. she is not traveling to any other dimensions. \n\ngeorge: you know how easy it is for dead people to travel? its not like getting on a bus. one second. (snaps his fingers) its all mental. \n\njerry: fifty years they were married. now hes moving to pheonix. \n\nelaine: phoenix? whats happening with his appartment? \n\njerry: i dont know. theyve been in there since, like, world war ii. the rents three hundred a month. \n\nelaine: three hundred a month? oh, my god. \n\neulogist: although this may seem like a sad event, it should not be a day of mourning. for manya had a rich, fulfilling life. she grew up in a different world  a simpler world  with loving parents, a beautiful home in the country, and from what i understand, she eve had a pony. (jerry throws up his hands.) oh, how she loved that pony. even in her declining years, whenever she would speak of it, her eyes would light up. its lustrous coat, its flowing mane. it was the pride of krakow. \n\njerry: well, the games starting just about now. \n\nhelen: it was good that the two of you came. it was a nice gesture. \n\nnephew: im not a doctor yet, uncle morty. im just an intern. i cant write a note to an airline. \n\nmorty: youve got your degree. they dont care. they just want to see something. \n\njerry: i just wanted to say how sorry i was... \n\nuncle leo: jerry, you wanna hear something? your cousin, jeffrey, is switching parks. theyre transferring him to riverside - so hell completely revamp that operation, you understand? \n\njerry: yeah. \n\nuncle leo: hell do in riverside what he did in central park. more money. so, thats your cousin. \n\nmorty: you dont understand, ive never paid a full fare. \n\njerry: once again, i just want to say how sorry i am about the other night. \n\nelaine: oh, me too. \n\nisaac: oh, no no no. she forgot all about that. she was much more upset about the potato salad. \n\nelaine: so, i understand youre moving to phoenix? \n\nisaac: yeah, my brother lives there. i think manya wouldve liked phoenix. \n\nelaine: mmm, gorgeous, exquisite town. so, whats happening with your apartment? \n\nisaac: of course its very hot there. ill have to get uh air conditioner. \n\nelaine: oh, you can have mine. ill ship it out to you. (isaac isn't listening to elaine) but what about that big apartment on west end avenue? \n\nisaac: although they say its a dry heat. \n\nelaine: dry, wet... (trying to get through to him) whats happening with your apartment? \n\nisaac: i dont even know if i should take my winter clothing. \n\nelaine: i have an idea. leave the winter clothing in the apartment, and ill watch it for you and ill live there and ill make sure that nothing happens to it. \n\nisaac: oh, the apartment. jeffreys taking the apartment. \n\nelaine: oh, jeffrey. \n\njerry: you know jeffery? \n\nelaine : yeah, from what i understand, he works for the parks department. \n\nhelen: its raining. \n\njerry: its raining? its raining. the game will be postponed. well play tomorrow. \n\nmorty: believe me, i wouldnt bother you if the army hadnt closed that base in sarasota. here, scribble a little something here. \n\nnephew: i cant. ill get in trouble. \n\nmorty: oh, for gods sake! \n\ngeorge: who gets picked off in softball? its unheard of. \n\njerry: its never happened to me before. \n\nelaine: i remember saying to myself, why is jerry so far off the base? \n\njerry: ill have to live with this shame for the rest of my life. \n\ngeorge: and then in the fifth inning, why did you take off on the pop fly? \n\njerry: i thought there were two outs. \n\nelaine: i couldnt believe it when i saw you running. (laughing) i thought maybe they had changed the rules or something. \n\njerry : it was the single worst moment of my life. \n\ngeorge: (smiling) what about sharon besser? \n\njerry: oh, well, of course. nineteen-seventy-three. \n\nelaine: makes you wonder, though, doesnt it? \n\njerry: wonder about what? \n\nelaine: you know... (looking up) the spirit world. \n\njerry: you think manya showed up during the game and put a hex on me? \n\nelaine: i never saw anyone play like that. \n\njerry: but i went to the funeral. \n\nelaine: yeah, but that doesnt make up for killin her. \n\ngeorge: maybe manya missed the funeral because she was off visiting another galaxy that day. \n\njerry: dont you think she woulda heard i was there? \n\ngeorge: not necessarily. \n\njerry: who figures and immigrants gonna have a pony? \n\njerry: what is the pony? what is the point of the pony? why do we have these animals, these ponies? what do we do with them? besides the pony ride. why ponies? what are we doing with them? i mean, police dont use them for, you know, crowd control. (jerry crouches down, and makes like hes riding a pony.) hey, uh, you wanna get back behind the barricades. hey! hey, little boy. yeah, im talking to you. behind the barricades! so somebody, i assume, genetically engineered these ponies. do you think they could make them any size? i mean, could they make them like the size of a quarter, if they wanted? that would be fun for monopoly, though, wouldnt it? just have a little pony and you put him on the... baltic, thats two down, go ahead. hold it. right there. baltic. yeah, thats it. fine. right there, hold it right there. \n\njerry: i hate clothes, okay? i hate buying them. i hate picking them out of my closet. i cant stand every day trying to come up with little outfits for myself. i think eventually fashion wont even exist. it wont. i think eventually well all be wearing the same thing. cause anytime i see a movie or a tv show where theres people from the future or another planet, theyre all wearing the same thing. somehow they decided, this is going to be our outfit. one-piece silver jumpsuit, v-stripe, and boots. thats it. we should come up for an outfit for earth. an earth outfit. we should vote on it. candidates propose different outfits. no speeches. they walk out, twirl, walk off. we just sit in the audience and go, that was nice. i could wear that. \n\njerry : i think ive seen enough. \n\nsalesman: well, i might have something in the back. \n\nelaine: the back? they never find anything in the back. if they had anything good in the back, theyd put it out in the front. \n\njerry: why dont they open up an entire store for the back? call it, just back. all back; no front. you walk in the front, youre immediately in the back. (jerry picks up a tie display, and shakes it rhythmically from left to right.) look, elaine, tie carwash. \n\ncustomer: oh, i just read that. thats terrific. \n\njerry: (pointing to elaine) her father wrote that. \n\ncustomer: alton benes is your father? \n\nelaine: yeah. \n\ncustomer: i always felt he deserved a wider audience. \n\nelaine: im not so sure he wants one. \n\nelaine: hey, dont forget sunday, okay? you and george are coming, right? hotel westbury, eight oclock. \n\njerry: i guess im coming. i mean... \n\nelaine: what? what, you dont want to go now? \n\njerry: no, ill go. im going. \n\nelaine: no, jerry, you have to. i need a buffer. you know, i havent seen my father in a while and... you know... \n\njerry: im worried i wont be able to talk to him. hes such a great writer. frankly, i prefer the company of nitwits. \n\nelaine: so, thats why were not together anymore. \n\njerry: what is this? \n\njerry: this is beautiful. these jackets never fit me right. \n\nelaine: try it on. \n\nelaine: wow, this is soft suede. \n\njerry: this may be the most perfect jacket i have ever put on. \n\njerry: how much is it? \n\nelaine: (shocked) oh my god. \n\njerry: bad? (elaine nods.) very bad? \n\nelaine: you have no idea. \n\njerry: i have some idea. \n\nelaine: no idea. \n\njerry: ive got a ballpark. \n\nelaine: there is no park and the team has relocated. \n\njerry: let me see that. (jerry looks at the tag.) that is high. \n\nelaine: oh man, that is a beautiful jacket, though. \n\njerry: whats with the pink lining and the candy stripes? \n\nelaine: well, its just a lining. you can always have it changed. \n\njerry: should i get it? i hate these moments. im hearing the dual voices now, you know, what about the money? whats money? \n\nsalesman: it looks wonderful on you. \n\njerry: hey. \n\nkramer: hey. new jacket? \n\njerry: what do you think? \n\nkramer: its beautiful. \n\njerry: is it me? \n\nkramer: thats definitely you. \n\njerry: really? \n\nkramer: thats more you than youve ever been. hey, what is with the pink lining? \n\njerry: i dont know. its got a pink lining. \n\nkramer: oh... so, what did you pay for this? \n\njerry : i paid what it costs. \n\nkramer: how much? \n\njerry: whats the difference? \n\nkramer: what, youre not gonna tell me? \n\njerry: id rather not say it out loud. its embarrassing. \n\nkramer: over three hundred? \n\njerry: yes, but lets just stop it right there. \n\nkramer: its over four hundred? \n\njerry : really, im not answering anymore. \n\nkramer: is it over four hundred? \n\njerry: would you? \n\nkramer: woah, nelson! \n\njerry: i know, i know. \n\nkramer: what are you gonna do with the leather one? \n\njerry: i dont know. \n\nkramer: well, are you gonna wear it? \n\njerry: maybe. \n\nkramer: youre not going to wear this. \n\njerry: do you want it? \n\nkramer: well, yeah. okay. ill take it. i like the jacket. \n\njerry: okay, take it. \n\nkramer: heey, good karma for you. (kramer puts on jerrys old jacket and stands next to jerry, looking in the mirror.) oh baby. \n\ngeorge: (singing) master of the house/doling out the charm/ready with a handshake and an open palm/tells a saucy talk/loves to make a stir/everyone appreciates a... \n\njerry: what is that song? \n\ngeorge: oh, its from les miserables. i went to see it last week. i cant get it out of my head. i just keep singing it over and over. it just comes out. i have no control over it. im singin it on elevators, buses. im singin it in front of clients. its taken over my life. \n\njerry: you know, schumann went mad from that. \n\ngeorge: artie schuman? from camp hatchapee? \n\njerry: no, you idiot. \n\ngeorge: what are you, bud abbott? what are you callin me an idiot? \n\njerry: you dont know robert schumann? the composer? \n\ngeorge: oh, schumann. of course. \n\njerry: he went crazy from one note. he couldnt get it out of his head. i think it was an a. he kept repeating it over and over again. he had to be institutionalized. \n\ngeorge: really? (jerry nods his head) well, what if it doesnt stop? oh, that i really needed to hear. that helps a lot! all right, just say something. just start talking. change the subject. lets just go, all right? i cant believe were having dinner with alton benes. \n\njerry: i know exactly whats gonna happen tonight. im gonna try and act like im not impressed, hes gonna see right through it. \n\ngeorge: yeah, hell be looking at us like hes backstage at a puppet show. \n\njerry: let me just get my jacket. \n\ngeorge: (singing)  master of the house/keeper of the inn... (jerry re-enters the living room and modestly models his new jacket for george. george is impressed.) this is huge! when did this happen? \n\njerry: wednesday. this jacket has completely changed my life. when i leave the house in this, its with a whole different confidence. like tonight, i mightve been a little nervous. but, inside this jacket, i am composed, grounded, secure that i can meet any social challenge. \n\ngeorge: can i say one thing to you? and i say this with an unblemished record of staunch heterosexuality. \n\njerry: absolutely. \n\ngeorge: its fabulous. \n\njerry: i know. \n\ngeorge: and ill tell you something else, im not even going to ask you. i want to know. but im not gonna ask. youll tell me when you feel comfortable. so what was it? four hundred? five hundred? did you pay five hundred for this? (jerry coyly ignores georges questions, while george grows increasingly serious.) over six? cant be seven. dont tell me you paid seven hundred dollars for this jacket! did you pay seven hundred dollars for this jacket? is that what youre saying to me? you are sick! is that what you paid for this jacket? over seven hundred? what did you pay for this jacket?! i wont say anything. i wanna know what you paid for this jacket! oh my god! a thousand dollars?! you paid a thousand dollars for this jacket?! all right, fine. (george heads for the door.) im walking outta here right now thinking you paid a thousand dollars for this jacket, unless you tell me different. (jerry remains silent.) oh, ho! all right! ill tell you what, if you dont say anything in the next five seconds, ill know it was over a thousand. \n\nkramer: (to jerry) hey. hey, would you do me a solid? \n\njerry: well, what kind of solid? \n\nkramer: i need you to sit in the car for two minutes while its double-parked. i gotta pick up some birds. \n\njerry: birds? \n\nkramer: yeah. a friend of mine, hes a magician. hes going away on vacation. he asked me to take care of his doves. \n\njerry: so take a cab. \n\nkramer: they wont take a cage full of birds. \n\njerry: i cant. im on my way out. theres no way i can do it. \n\nkramer: george, do me a solid? two minutes. \n\ngeorge: well, im going with him. id like to... ive never done a solid before. \n\nkramer: all right... yeah. all right, have a good one. \n\njerry: (scoffs) two minutes. believe me, i know his two minutes. by his conception of time, his life will last over two thousand years. \n\ngeorge: (singing) master of the house/quick to catch your eye/never wants a passerby to pass him by... \n\njerry: schumann. (george stops himself, frightened. jerry looks around the lobby.) where are they? \n\ngeorge: maybe he didnt show up. \n\njerry: what, you dont want to do this? \n\ngeorge: i dont think theres ever been an appointment in my life where i wanted the other guy to show up. (george notices an elderly man in a leather chair.) wait a second, is that him? \n\njerry: yeah, i think it is. (they walk toward the man. jerry hesitates.) wheres elaine? \n\ngeorge: im nervous. \n\njerry: (to the man) excuse me. mister benes? \n\nalton: yeah? \n\njerry: im jerry, elaines friend, and this is george. \n\ngeorge: its a great thrill to meet you, sir. \n\nalton: sit down. want a drink? \n\njerry: sure. \n\nalton: whatll you have? \n\njerry: (to waiter) ill have a cranberry juice with two limes. \n\ngeorge: and, ill have a club soda with no ice. \n\nbenes: ill have another scotch with plenty of ice. \n\ngeorge: you like ice? \n\nalton: huh? \n\ngeorge: i said, do you like ice? \n\nalton: like it? \n\ngeorge: dont you think you get more without it? \n\nalton: wheres elaine? \n\njerry: well, we thought she was meeting you earlier. shes usually pretty punctual. dont you find that, george? \n\ngeorge: yeah, yeah. shes punctual... and uh shes been late, sometimes. \n\njerry: yeah, yeah. sometimes shes on time, and... sometimes shes late. \n\ngeorge: i guess... (chuckles) today shes late. \n\njerry: it appears that way. \n\ngeorge: yup. \n\njerry: yup. \n\nalton: looks like rain. \n\ngeorge: i know, i know, thats what they said. \n\nalton: who said? \n\ngeorge: the weather guy, dr. waldo. \n\nalton: i dont need anybody to tell me its gonna rain. \n\ngeorge: no, of course not. i didnt- \n\nalton: all i have to do is stick my head out the window. (the waiter returns with the drinks, and distributes them to the men.) which ones suppose to be the funny guy? \n\ngeorge: (pointing at jerry) oh, hes the comedian. \n\njerry: im just a regular person. \n\ngeorge: no, no. hes just being modest. \n\nalton: we had a funny guy with us in korea. tailgunner. they blew his brains out all over the pacific. theres nothing funny about that. \n\njerry: would you excuse me a minute? im gonna go to the bathroom. ill be right back. \n\ngeorge: i just wanted to tell you that i really enjoyed fair game. i thought it was just brilliant. \n\nalton: drivel. \n\ngeorge: yea, well, maybe some parts. \n\nalton: (defensive) what parts? \n\ngeorge: the... drivel... parts. oh my gosh, i just realized  i have to make a phone call. i-i cant believe- would you- \n\ngeorge: thank you for leaving me alone with him! \n\njerry: that was brutal. i cant go back out there. \n\ngeorge: well, lets just leave. \n\njerry: elainell kill me. \n\ngeorge: where is she? \n\njerry: shes gotta be here soon. \n\ngeorge: how could she leave us alone with this lunatic? ten more minutes, and thats it! im leaving. i have to tell you, this guy scares me. \n\njerry: the waiter was trembling! \n\ngeorge: if she doesnt show up, we cant possibly have dinner with him alone. \n\njerry: how are we gonna get out of it? \n\ngeorge: well say were frightened and we have to go home. \n\njerry: yeah, thats good. hed clunk our heads together like moe. \n\ngeorge: i dont know. just start scratching. tell him you have the crabs. he was in the military. hell understand that. \n\njerry: all fathers are intimidating. theyre intimidating because they are fathers. once a man has children, for the rest of his life, his attitude is, to hell with the world, i can make my own people. ill eat whatever i want, ill wear whatever i want, and ill create whoever i want. \n\nalton: (to george) whod you call? \n\ngeorge: (improvising) my uh uncle is having an operation. i just wanted to see how he was. \n\nalton: what kind of operation? \n\ngeorge: bone marrow. \n\nmanager: mister benes? \n\nalton: yes? \n\nmanager: a message for you. \n\nalton: from elaine. she got tied up. shell be here in thirty minutes. \n\nalton: yeah, they shouldve taken care of castro when they had the chance. like we did in guatamala in fifty-three. \n\njerry: well, guatamala... \n\ngeorge: sure, guatamala... \n\nalton: all right, you boys get yourselves together. well head up to the restaurant. ill leave a note for elaine. im going to the bathroom. \n\ngeorge: come on, lets go! \n\njerry: what about elaine? \n\ngeorge: to hell with elaine! \n\njerry: shell be furious. \n\ngeorge: were dying here! \n\njerry: thats her! shes here! \n\nelaine: im sorry. im so sorry. where is dad? \n\ngeorge: (contemptuously, imitating altons voice) hes in the bathroom. \n\njerry: (to elaine) where have you been?! \n\nelaine: kramer! that... kramer! im just about to leave, he calls me up. he begs me to sit in his car for two minutes, so he can pick up these birds... \n\njerry: oh, you didnt... \n\nelaine: well, he said hed drive me here right after. so, i am sitting in his car twenty minutes! he doesnt come down. i am freezing. then a cop comes by, tells me to get out of the car. hes a city marshal. hes towing the car away. kramer owes thousands of dollars in back tickets. he was going to tow it with me in the car! so, they tow the car. now, i am standing outside, and i am freezing, but i cannot leave because i have to tell him what happened to the car. so, finally, he finally comes down with his giant cage filled with doves. he said he was getting special instructions, that each dove has a different diet... so, were wandering around trying to get a cab, when two of these doves fly out! now were running down the street after these doves; i almost got hit by a bus! (elaine sits in altons chair and takes a deep breath.) so hows everything going over here? \n\njerry: great. \n\ngeorge: couldnt be better. \n\nelaine: good. cause dad can make some people a little uncomfortable. \n\njerry: oh, no, no. \n\ngeorge: get outta here.. \n\nelaine: man, kramer! i could kill him! \n\njerry: i cant believe it. you know better than to get involved with kramer. \n\nelaine : he said hed give me a lift. \n\njerry: ah, the lift. like the lure of the sirens song. never what it seems to be, yet who among us can resist? \n\ngeorge: where do you come up with this stuff? \n\nalton: well, look whos here. \n\nelaine: oh, hi, dad. \n\nalton: hello, dear. \n\nalton: whos the lipstick for? \n\nelaine: no one. \n\nalton: hows your mother? \n\nelaine: fine. \n\nalton: how about you? are you working? \n\nelaine: yeah, im reading manuscripts for pendant publishing. i told you ten times. \n\nalton: pendant! those bastards. well all right, boys. well go to that pakistani restaurant on 46th street. youre not afraid of a little spice, are you? \n\ngeorge: (singing) master of the house/doling out the charm/ready with a handshake and an open... \n\nalton: pipe down, chorus boy. \n\nelaine: ohh... its snowing. its beautiful. \n\njerry: (to george) snow. snow, that cant be good for suede, can it? \n\ngeorge: i wouldnt think so. \n\njerry: what should i do? (to alton) uh, were taking a cab, arent we? \n\nalton: cab? its only five blocks. \n\ngeorge: (to jerry) why dont you just turn it inside out? \n\njerry: inside out! great. \n\nalton: wait a minute. what the hell do you call this? \n\njerry: oh, i turned my jacket inside out. \n\nalton: well, you look like a damn fool! \n\njerry: well, its a new suede jacket. it might get ruined. \n\nalton: well, youre not going to walk down the street with me and my daughter dressed like that. thats for damn sure. \n\ngeorge: its uh, it's only a few blocks. \n\njerry: (to the intercom) elaine? \n\nelaine: yeah. \n\njerry: come on up. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: ive gotta feed the birds. \n\njerry: so? \n\nkramer: you got any of those mini ritzes? \n\njerry: i cant believe i do. \n\nkramer: yeah! well, are you going out? \n\njerry: yeah. \n\nkramer: hey, wheres your new jacket? (jerry points to the jacket hanging in the bathroom. its ruined.) what? (kramer enters the bathroom, and sees the garment.) ohhh. what did you do to it? \n\njerry: i was out in the snow last night. \n\nkramer: dont you know what that does to suede? \n\njerry: i have an idea. (elaine enters; to elaine) we can make the nine-thirty at cinema three. \n\nelaine: okay. (to kramer) hello. (to jerry) listen, thanks again for coming last night. dad said he had a great time. \n\njerry: is he still in town? \n\nelaine: no, hes driving back to maryland tonight. \n\nkramer: so, uh... what are you gonna do with that one now? \n\njerry: i dont know. \n\nkramer: (smiling) well... \n\nelaine: (to jerry) i didnt want to tell you this, but usually he hates everyone. \n\njerry: really? \n\nkramer: you gonna throw this out? \n\njerry: well, i cant wear it. \n\nelaine: yeah, he like you though. said you reminded him of somebody he knew in korea. \n\nkramer: (to jerry) well, if youre just gonna throw it out, you know, i could take it. \n\njerry: yeah, go ahead, take it. \n\nelaine: dad thinks george is gay. \n\njerry: oh, because of all the singing? \n\nelaine: no, he pretty much thinks everyone is gay. \n\nkramer: hey, see, i like it like this. \n\nelaine: isnt that...? (jerry nods.) oh, is this from the snow last night? (jerry nods.) ugh... you know what you shouldve done? you shouldve turned it inside out. \n\njerry: ill try and remember that. \n\nkramer: boy, its too bad you gave me this one too. \n\njerry: yeah, too bad. \n\nkramer: im gonna have to do something about this lining. \n\nalton: (singing) master of the house/doling out the charm/ready with a handshake and an open palm... \n\njerry: i had a leather jacket that got ruined. now, why does moisture ruin leather? i dont get this. arent cows outside most of the time? i dont understand it. when its raining do cows go up to the farmhouse, let us in, were all wearin leather. open the door! were gonna ruin the whole outfit here! is it suede? i am suede, the whole thing is suede, i cant have this cleaned. its all i got! \n\njerry: the bad thing about television is that everybody you see on television is doing something better than what youre doing. you ever see anybody on tv like just sliding off the front of the sofa with potato chip crumbs on their face? some people have a little too much fun on television. the soda commercial people. where do they summon this enthusiasm? have you seen them? we have soda, we have soda, we have soda, jumping, laughing, flying through the air. its a can of soda! have you ever been standing there and youre watching tv and youre drinking the exact same product that theyre advertising right there on tv, and its like, you know, theyre spiking volleyballs, jet-skiing, girls in bikinis and im standing there, maybe im putting too much ice in mine. \n\ngeorge: (excited) so then, as we were leaving, we were just kind of standing there, and she was sort of smiling at me, and i wasnt sure if she wanted me to ask her out, because when women smile at me i dont know what it means. sometimes i interpret it like theyre psychotic or something and i dont know if im supposed to smile back, i dont know what to do. so i just stood there like  remember how quayle looked when benson gave him that kennedy line? thats what i looked like. \n\njerry: so you didnt ask? \n\ngeorge: no, i froze. \n\njerry: counter. \n\ngeorge: oh yeah. so wait, wait. a half-hour later im back in the office, i tell lloyd the whole story. he says, so why dont you call her? i says, i cant. i couldnt, i couldnt do it right then. for me to ask a woman out i gotta get into a mental state like the karate guys before they break the bricks. so lloyd calls me a wuss. \n\njerry: he said wuss? \n\ngeorge: yeah. anyway, he shamed me into it. \n\njerry: so you called. \n\ngeorge: right. and, and to cover my nervousness i started eating an apple, because i think if they hear you chewing on the other end of the phone, it makes you sound casual. \n\njerry: yeah. like a farm boy. \n\ngeorge: right. so i call her up, i tell her its me, she gives me an enthusiastic hi! \n\njerry: wow. the enthusiastic hi. thats beautiful. \n\ngeorge: oh, i dont get the enthusiastic hi, im outta there. \n\njerry: all right, so youre chewing your apple, you got your enthusiastic hi... go ahead. \n\ngeorge: so, were talking, and i dont like to go too long before i ask them out, i wanna get it over with right away, so i just blurt out, what are you doing saturday night? \n\njerry: and? \n\ngeorge: she bought. \n\njerry: great day in the morning. \n\ngeorge: then i got off the phone right away. \n\njerry: sure, its like robbing a bank. you dont loiter around in front of the teller holding that big bag of money. you come in, you hit and get out. \n\ngeorge: its amazing. we, we both have dates on the same night. i cant remember the last time that happened. \n\ngeorge: i cant stand doing laundry. thats why i have forty pairs of underwear. \n\ncarol: you do not. \n\ngeorge: absolutely. because instead of doing a wash, i just keep buying underwear. my goal is to have over three hundred and sixty pair. that way, i only have to do wash once a year. \n\njerry: (in an attempted scottish accent) come on, try it. let me hear you try a scottish accent. \n\ndonna: thats irish. \n\njerry: irish, scottish, whats the difference, lassie? \n\ncarol: so, uh, thanks for dinner. it was great. \n\ngeorge: yeah. (clears his throat) we should do this again. \n\ncarol: would you like to come upstairs for some coffee? \n\ngeorge: oh, no, thanks. i cant drink coffee late at night, it keeps me up. \n\ncarol: (confused by his response) so, um, okay. \n\ngeorge: okay. \n\ncarol: goodnight. \n\ngeorge: yeah, take it easy. \n\ndonna: thanks again for the movie. \n\njerry: youre welcome. \n\ndonna: id invite you up, but the place is being painted. \n\njerry: oh, thats okay. \n\ndonna: unless you want to go to your place. \n\njerry: okay... but theres no cake or anything, if thats what youre looking for. \n\ngeorge: (frustrated) take it easy! huh! take it easy! \n\njerry: i think if ones going to kill oneself, the least you could do is leave a note. its common courtesy. i dont know. thats just the way i was brought up. \n\ndonna: values are very important. \n\njerry: oh, so important. so what are you doing uh thursday night? you wanna have dinner? \n\ndonna: thursdays great. \n\njerry: tan pants. why do i buy tan pants, donna? i dont feel comfortable in them. \n\ndonna: are those cotton dockers? \n\njerry: oh, i cant begin to tell you how much i hate that commercial. \n\ndonna: really? i like that commercial. \n\njerry: you like that commercial? \n\ndonna: yeah, its clever. \n\njerry: now wait a second, you mean the one where the guys are all standing around, supposedly being very casual and witty? \n\ndonna: yeah, thats the one. \n\njerry: what could you possibly like about that? \n\ndonna: i dont know. i like the, guys. \n\njerry: yeah, theyre so funny and so comfortable with each other, and i could be comfortable too, if i had pants like that. i could sit on a porch and wrestle around, and maybe even be part of a real bull session. \n\ndonna : hey, i know guys like that. to me the dialogue rings true. \n\njerry: even if the dialogue did ring true. (donna starts to get annoyed that jerry won't let the conversation go) even if somehow somewhere men actually talk like that, what does that have to do with the pants? doesnt that bother you? \n\ndonna: (annoyed) thats the idea. thats whats clever about it, that theyre not talking about the pants. \n\njerry: but theyre talking about nothing. \n\ndonna: thats the point. \n\njerry: i know the point. \n\ndonna: no one is telling you to like it. \n\njerry: i mean, all those quick shots of the pants. just pants, pants, pants, pants, pants, pants, pants. what is that supposed to be? \n\njerry: whats brutal about the date is the scrutiny that you put each other through. because whenever you think about this person in terms of the future, you have to magnify everything about them. you know, like the guyll be like, i dont think her eyebrows are even. could i look at uneven eyebrows for the rest of my life? and of course the womans looking at the guy, thinking, what is he looking at? do i want somebody looking at me like this for the rest of my life? \n\njerry: im supposed to see her again on thursday, but can i go out with someone who actually likes this commercial? \n\nelaine: i once broke up with a guy because he didnt keep his bathroom clean enough. \n\njerry: no kidding. did you tell him that was the reason? \n\nelaine: oh yeah, i told him all the time. you would not have believed his tub. germs were building a town in there  they were constructing offices. houses near the drain were going for a hundred and fifty thousand dollars. \n\nelaine: hi. \n\njerry: youre still thinking about this? \n\ngeorge: she invites me up at twelve oclock at night, for coffee, and i dont go up. no thank you. i dont want coffee. it keeps me up. too late for me to drink coffee. i said this to her. people this stupid shouldnt be allowed to live. i cant imagine what she must think of me. \n\njerry: she thinks youre a guy that doesnt like coffee. \n\ngeorge: she invited me up. coffees not coffee, coffee is sex. \n\nelaine: maybe coffee was coffee. \n\ngeorge: coffees coffee in the morning. its not coffee at twelve oclock at night. \n\nelaine: well some people drink coffee that late. \n\ngeorge: yeah, people who work at norad, whore on twenty-four hour missile watch. everything was going along so great. she was laughing, i was funny... i kept saying to myself, keep it up, dont blow it, youre doing great. \n\nelaine: its all in your head. all she knows is she had a good time. i think you should call her. \n\ngeorge: i cant call her now. its too soon. im planning a wednesday call. \n\nelaine: oh, why? i love it when guys call me the next day. \n\ngeorge: of course you do, but youre imagining a guy you like, not a guy who goes, oh no, i dont drink coffee late at night. if i call her now, shes gonna think im too needy. women dont wanna see need. they want a take-charge guy  a colonel, a kaiser, a tsar. \n\nelaine: all shell think is that you like her. \n\ngeorge: that's exactly what i'm trying to avoid! \n\nelaine: well, she wants you to like her. \n\ngeorge: yes, she wants me to like her, if she likes me. but she doesnt like me! \n\nelaine: i dont know what your parents did to you. \n\nkramer: hey, i just thought of a really funny thing for your act. all right, youre up there, youre on the stage and you go, hey, you ever notice how cars here in new york, they never get out of the way of ambulances anymore. someones in a life-and-death situation, and were thinking, well, sorry buddy, you shouldve thought of that when you were eating cheese omelettes and sauages for breakfast every morning for the last thirty years. \n\nkramer: so you gonna use it? \n\njerry : i dont think so. \n\nkramer: its funny. \n\nelaine: it is funny. \n\njerry: i like to use my own material. \n\nkramer: thats as good as anything you do. \n\ngeorge: all right, i gotta make a call. everybody out, come on. \n\njerry: why do we have to leave? \n\ngeorge: because i cant call a woman with other people in the room. come on, lets go. \n\nelaine: oh, see, this is the problem. \n\njerry: youre kicking me out of my house? \n\ngeorge: yes. \n\nelaine: (encouraging) dont forget. \n\ngeorge: (to elaine) right, alright. (to jerry) oh jerry, do you have any apples? \n\njerry: dont do the apples. its enough already with the apples. \n\ncarol: (from the phone; a recorded message) hi, its carol, ill get back to you. \n\ngeorge: um, hi, its george, george costanza, remember me? the guy that didnt come up for coffee. you see, i didnt realise that coffee didnt really mean... well, whatever. anyway, it was fun. it was... it was fun, so... oh boy, um, so... you call me back. if you want. its up to you, you know, whatever you wanna do. either way. the balls in your court. so uh, take it easy. \n\njerry: im just gonna get my jacket, ill meet you downstairs. whats the matter, did you call? \n\ngeorge: got her machine. im dead, im a dead man. thats it. im dead, im a dead man. dead man. \n\njerry: what did you say? \n\ngeorge: i dont know what the hell i said. i gave her an ultimatum and theres nothing i can do. its a machine. the little light is blinking right now, come and listen to the idiot. hey everybody, the idiots on! \n\njerry: after one date you try and improvise on her machine? \n\ngeorge: now im in the worst position of all. \n\nelaine: yknow, my brother-in-law once left a message on this guys machine, and he blurted out some business information he wasnt supposed to, and it would have cost him fifteen thousand dollars, so he waited outside the guys house and when the guy came home he went upstairs with him and he switched the tape. \n\ngeorge: he did that? \n\nelaine: yeah. \n\ngeorge: somebody did that? \n\njerry: shell call you back. youre overreacting. \n\njerry: not once. \n\ndonna: never? \n\njerry: i have never seen one episode of i love lucy in my life, ever. \n\ndonna: thats amazing. \n\njerry: thank you. \n\ndonna: is there anything else about you i should know? \n\njerry: yes, im lactose intolerant. \n\ndonna: really? \n\njerry: i have no patience for lactose. and i wont stand for it. um, ill be right back. \n\ngeorge: wait till you hear this! (george sees donna and no jerry.) whoa, ah, im sorry, i didnt, i had no idea. \n\ndonna: wait, wait. hes in the bathroom. \n\ngeorge: i just wanted to talk to him for a minute, but ill come back. \n\ndonna: you dont have to leave. \n\ngeorge: you sure? \n\ndonna: yes. \n\ngeorge: okay. \n\ndonna: im donna. \n\ngeorge: donna. oh, youre the one that likes that commercial! \n\ndonna: he told you about that? \n\ngeorge: (back-pedalling) no, he, he didnt actually tell me that, uh, we were talking about that commercial  in fact i think i brought it up because i like that commercial. no, he, he would never tell me anything. he never discusses anything. hes, hes like a clam. youre not gonna mention this, to him... \n\ndonna: (to jerry) so you go around telling your friends im not hip because i like that commercial. \n\njerry: what? (to george) what did, what did you say? \n\ngeorge: say? what? nothing, i... \n\ndonna: you told him how i like the commercial. \n\njerry: well, so what if i said that? \n\ndonna: well, so, you didnt have to tell your friends. \n\njerry: no, i had to tell my friends  my friends didnt have to tell you. \n\ngeorge: (to donna) why did you have to get me in trouble? \n\ndonna: i dont like you talking about me with your friends behind my back. \n\ngeorge: boy oh boy. \n\njerry: i said i couldnt believe you liked that commercial. so what? \n\ndonna: i asked some friends of mine this week, and all of them liked the commercial. \n\njerry: boy, i bet you got a regular algonquin round table there. \n\nkramer: hey. \n\njerry: oh uh, kramer, this is donna. \n\nkramer: oh. cotton dockers! \n\ngeorge: hello! all right, we should be going. come on... \n\nkramer: what? where are we going? \n\ngeorge: come on! \n\ndonna: dont bother, im leaving. \n\njerry: donna, really, youre making too much of this. \n\nkramer: one hundred percent cotton dockers. if theyre not dockers, theyre just pants \n\njerry: please, donna... \n\ndonna: i dont wanna hear it. \n\ngeorge: i cant believe i said that. you know me, im a vault. \n\njerry: dont worry about it, it wasnt working anyway. \n\nkramer: what happened there? \n\njerry: ill tell you later. \n\ngeorge: you are not gonna believe whats going on with this woman. \n\ngeorge: okay, so you remember i made the initial call sunday, she doesnt call back. i call again monday, i leave another message. i call tuesday, i get the machine again, i know youre there, i dont know what your story is. yesterday, im a volcano  i try one more call, the machine comes on, and i let fly like mussolini from the balcony, where the hell do you get the nerve? you invite me up for coffee and then you dont call me back for four days? i dont like coffee, i dont have to come up. id like to get one more shot at the coffee just so i could spit it in your face. \n\njerry: you said that? \n\ngeorge: i lost it. \n\njerry: i cant blame you. i cant believe she never called you back. \n\ngeorge: she did. today. \n\njerry: what? \n\ngeorge: she called my office. she said shes been in the hamptons since sunday. she didnt know if i was trying to get in touch with her. her machine broke, and shes been using her old machine and she doesnt have the beeper for it. \n\njerry: so she didnt get the messages. \n\ngeorge: exactly, but theyre on there  waiting. she said she cant wait to see me, were having dinner tonight. shes supposed to call me as soon as she gets home. \n\njerry: but what about the messages? \n\njerry: elaines thing? how you gonna get in? \n\ngeorge: ill meet her outside the building. \n\njerry: but you know as soon as she gets in the apartment shes going right for that machine. \n\ngeorge: unless she goes for the bathroom. thats my only chance. (george crumbles. he drops the cassette on the table.) who am i kidding? i cant do this, i cant do this. i dont even know how to work those stupid machines. \n\njerry: theres nothing to it. you lift the lid, it comes right out. \n\ngeorge: you do it for me. \n\njerry: what? \n\ngeorge: come on, itll be so much easier. \n\njerry: how you gonna get me up there? \n\ngeorge: ill tell her i bumped into you, im giving you a ride uptown. \n\njerry: and who makes the switch? \n\ngeorge: you do. \n\njerry: i do. \n\ngeorge : i cant do it. ill, ill keep her busy. \n\njerry: i cant get involved in this. \n\ngeorge: i think i may be in love with this woman. \n\njerry: what if she sees me? \n\ngeorge: oh, you are such a wuss. \n\njerry: a wuss? \n\ngeorge: yeah. \n\njerry: did you call me a wuss? \n\ngeorge: well there is traffic. it might take her till eight-fifteen. \n\njerry: i got one problem. youre keeping her busy in the other room. now, what if she somehow gets away from you and is coming in? you have to signal me that shes coming. \n\ngeorge: a signal, right, um, okay, uh, okay, the signal is, ill call out tippy-toe! \n\njerry: tippy toe? i dont think so. \n\ngeorge: you dont like tippy toe? \n\njerry: no tippy toe. \n\ngeorge: all right, uh, okay, i got it, um, ill sing. \n\njerry: what song? \n\ngeorge: how do you solve a problem like maria? \n\njerry: what is that? \n\ngeorge: oh, its a lovely song. (singing) how do you solve a problem like maria?... \n\njerry: anything else? \n\ngeorge: you pick it. \n\njerry: lemon tree. \n\ngeorge: peter, paul and mary. \n\njerry: no, trini lopez. \n\njerry & george: (singing) lemon tree, very pretty and a lemon flower... \n\ngeorge: alright ok. you got the tape? \n\njerry: standard. micro. \n\ngeorge: how do you feel? confident? \n\njerry: feel good. \n\ngeorge: you nervous? \n\njerry: not at all. \n\ngeorge: get up, get up, its her! oh, the hell with this, im scared to death, just walk away, its off, cancel everything, go! \n\ncarol: hey! what are you doing here? i thought i was supposed to call you when i got home. \n\ngeorge: i, i couldnt wait. i was too anxious to see you. \n\ncarol: oh, thats so sweet. \n\ngeorge: oh, this is my friend, jerry seinfeld. i just bumped into him around the corner. isnt that a coincidence? the funny thing is, i see him all the time. \n\njerry: all the time. \n\ncarol: its nice to meet you. \n\njerry: hi. \n\ncarol: so, im starving. where are we gonna eat? \n\ngeorge: you know, we could go uptown, and that way we could give jerry a ride home. \n\ncarol: okay. lets go, im ready, whered you park? \n\ngeorge: dont you wanna go upstairs first? \n\ncarol: no, what for? ill just give my bag to the doorman. \n\njerry: you know, i really need to use the bathroom. \n\ncarol: oh well theres a bathroom in the coffee shop just next door. \n\ngeorge: yes, yes, but uh, i have to make a call, so... \n\ncarol: well they have a phone. \n\ngeorge: i know jerry. he has this phobia about public toilets. i think we really should go upstairs. \n\ncarol: (aloud) you know, i think i will go upstairs. i can check my machine. \n\ngeorge: right, right. \n\ncarol: the bathrooms on the hall to the right. \n\njerry: uh, you know, why dont you go first, you just had a long trip. \n\ncarol: no, im fine. \n\njerry: um, you know, its the damnedest thing. it went away. \n\ncarol: oh, thats weird. \n\ngeorge: no, no that can happen. ive, uh, ive read about that in medical journals. its a freak thing, but... \n\ncarol: well, let me just check my messages, and well go. \n\ngeorge: uh, carol, can i talk to you for a second? right now? \n\ncarol: sure. \n\ngeorge: please, this is very, very important. \n\ngeorge: (from other room) uh, tippy toe! tippy toe! lemon tree! \n\ncarol: (to jerry) now i know who you are! youre a comedian. ive seen you, its driving me crazy. \n\njerry: right. i am. \n\ngeorge: carol, thats so rude. please, im serious, just for a moment, if you wouldnt mind. and then well talk to jerry. \n\njerry: (calls) hey you two. im ready to go. \n\ncarol: thats what you had to tell me? your father wears sneakers in the pool? \n\ngeorge: (to jerry) dont you find that strange? \n\njerry: yes. \n\ncarol: well, ill just check my machine and well go. \n\ncarol: no, nothing here, lets go. (carol, george and jerry head for the door. carol opens it.) oh, i forgot to tell you. after i talked to you today my neighbour called me and played my messages to me over the phone. \n\ngeorge: oh, uh... \n\ncarol: yours were hilarious, we were both cracking up. i just love jokes like that. \n\njerry: i love my phone machine. i wish i was a phone machine. i wish if i saw somebody on the street i didnt want to talk to, i could go, excuse me, im not in right now. if you would just leave a message, i could walk away. i also have a cordless phone, but i dont like that as much, because you cant slam down a cordless phone. you get mad at somebody on a real phone  you cant talk to me like that! bang! you know. you get mad at somebody on a cordless phone  you cant talk to me like that! \n\njerry: well, i painted my apartment again. ive been living in this apartment for years and years, and every time i paint it, it kinda gets me down. i look around, and i think, well, its a little bit smaller now. you know, i realize its just the thickness of the paint, but im aware of it. it just coming in and coming in. every-time i paint it, its closer and closer. i dont even know where the wall outlets are anymore. i just look for like a lump with two slots in it. kinda looks like a pig is trying to push his way through from the other side. thats where i plug in. my idea of the perfect living room would be the bridge on the starship enterprise. you know what i mean? big chair, nice screen, remote control... thats why star trek really was the ultimate male fantasy. just hurtling through space in your living room, watching tv. thats why all the aliens were always dropping in, because kirk was the only one that had the big screen. they came over friday nights, klingon boxing, gotta be there. \n\njerry: what did you do? \n\nkramer: mousse. i moussed up. \n\nelaine: i guess it was just a matter of time. \n\nkramer: you know, i should've done this years ago. i mean, i feel like i've had two lives. my pre-mousse. and now, i begin my post-mousse. hey, tell me the truth, have you ever seen a better looking guy? \n\njerry: well, looks are so subjective. \n\nelaine: i dont mean to interrupt or anything, but on sunday, my friend is having a brunch for the new york marathon. \n\nkramer: (annoyed that he forgot) oh, i keep forgetting to enter that! \n\nelaine: she lives right above first avenue, says she has a perfect view of the race. and she said i can invite some friends. \n\njerry: maybe. \n\nharold: (o.s.) no, im not going up there. \n\njerry: (to elaine) harold and manny. \n\nharold: im not going. \n\njerry: boys, boys. \n\nharold: oh, jerry. \n\njerry: i slid the rent under your door, harold. did you get it? \n\nharold: yeah, yeah... hey, jerry, would you like anything from mrs. hudwalkers apartment? \n\nmanny: (in spanish) you can't give him anything from there! \n\nharold: i was only joking. (to jerry) he thinks im gonna give you mrs. hudwalkers things. \n\nmanny: (in spanish) you offered them to him. \n\nharold: (to jerry) we have to go up there now and clean the apartment. its a good thing her rent was overdue. shed be rotting up there for a month. \n\njerry: she died? mrs. hudwalker died? \n\nharold: ninety-four years old. i found her yesterday. she didnt have her wig on. it was horrifying. \n\nmanny: (in spanish) harold, come on, hurry up! \n\nharold: (to manny) whats the matter with you? im talking! so, jerry, you know anyone who needs an apartment? \n\njerry: are you kidding? you know my friend elaine? \n\nharold: oh yeah, i like her. she always says hello to me. \n\njerry: its not promised to anybody? cause shed take it in a second. \n\nharold: well, manny wanted it for his brother, but he got deported. \n\nmanny: (in spanish) what do you mean deported? it was a misunderstanding with the department of immigration. \n\nharold: whats the difference? its true! \n\njerry: so, its okay? i could just tell her she can have it? \n\nharold: sure, sure. shes getting a bargain, too. its only four hundred dollars a month. \n\nmanny: (in spanish) four hundred dollars? what are you nuts? someone will pay more. \n\nharold: okay... \n\nharold: okay! \n\nkramer: hey, harold, what do you think? \n\nharold: manny, look. kramer put mousse in his hair. \n\nmanny: (in spanish) it looks worse. \n\nkramer: (not understanding him) hey, thanks. \n\nelaine: what was that all about? \n\njerry: (coyly) oh, nothing important. \n\nelaine: whats going on? what is that look? \n\njerry: what look? nothing. \n\nelaine: somethings going on here. \n\njerry: i dont know if you should sit for this or not. sitting is good if you faint, but standing is good for jumping up and down. i cant decide. \n\nelaine: jumping up and down? what are you talking about? cmon. cough it up. \n\njerry: oh, elaine. you know the way i am  rarely ever thinking of myself. my only concern is the welfare and happiness of those close to me. sure, it hurts sometimes to give, and give, and give... \n\nelaine: would you please? \n\njerry: what would you say if i told you that... \n\nelaine: told me what?! \n\njerry: ...i got you an apartment in this building. \n\nelaine: (dumbfounded) no. \n\njerry: yes. \n\nelaine: no. \n\njerry: yes. \n\nelaine: you didnt. \n\njerry: i did. \n\nelaine: you got me an apartment in the building?! \n\njerry: i got you an apartment in the building. \n\nelaine: how did you... \n\njerry: remember mrs. hudwalker? the ninety-four-year-old woman who lived above me? \n\nelaine: no. \n\njerry: she died. \n\nelaine: (thrilled) she died?! \n\njerry: she died. \n\nelaine: she died! \n\njerry: and the rent is only four hundred dollars a month! \n\nelaine: get out! \n\nelaine: four hundred a month? only four hundred a month?! \n\njerry: four hundred a month. \n\nelaine: and ill be right upstairs? \n\njerry: right upstairs. \n\nelaine: right above you? \n\njerry: right above me. \n\nelaine: oh, were neighbors. ill be here all the time! \n\njerry: all the time. \n\nelaine: (overly excited) we can exchange keys so we can come in and out. oh, this is going to be great! \n\njerry: all the time. \n\njerry: the problem with talking is that nobody stops you from saying the wrong thing. i think life would be a lot better if it was like youre always making a movie. you mess up, somebody just walks on the set, and stops the whole shot. you know what i mean? think of the things you wish you could take back. youre out somewhere with people, gee, you look pregnant.. are you? cut, cut, cut, cut, cut, thats not gonna work at all. walk out the door, and come back in. lets take this whole scene again. people, think about what youre saying! \n\ngeorge: thanks, see you later, donna. \n\ngeorge: what happened to you? \n\njerry: you cant believe what i just did. \n\ngeorge: what? what did you do? \n\njerry: i could tell you what i did, but you wouldnt believe it. its not believable. \n\ngeorge: what did you do? \n\njerry: how could i have done that? \n\ngeorge: done what? \n\njerry: i told elaine about an apartment opening up in my building. shes going to move in. \n\ngeorge: elaines moving into your building? \n\njerry: yes. right above me. \n\ngeorge: right above you? \n\njerry: yeah. \n\ngeorge: youre gonna be neighbors. \n\njerry: i know. neighbors. \n\ngeorge: shes right above you? \n\njerry: right above me. \n\ngeorge: how could you do that? \n\njerry: cause im an idiot! you may think youre an idiot, but with all due respect, im a much bigger idiot than you are. \n\ngeorge: dont insult me, my friend. remember who youre talking to. no ones a bigger idiot than me. \n\njerry: did you ever ask an ex-girlfriend to move into your building? \n\ngeorge: did you ever go to a singles weekend in the poconos? \n\njerry: shes right in my building! right above me! every time i come in the building, im gonna have to sneak around like a cat burglar. \n\ngeorge: youre doomed. youre gonna have to have all your sex at womens apartments. itll be like a permanent road trip. forget about the home bed advantage. \n\njerry: but i need the home bed advantage. \n\ngeorge: of course. we all do. \n\njerry: come in for two minutes and sit with me. \n\ngeorge: i was just in there. its embarrassing. \n\njerry: oh, whos gonna know? \n\ngeorge: they saw me walk out. \n\njerry: two minutes. \n\njerry: my censoring system broke down. you know that little guy in your head who watches everything you say? makes sure you dont make a mistake? he went for a cup of coffee. and in that second ruined my life. \n\ngeorge: my censor quit two years ago. he checked into a clinic. emotionally exhausted. \n\njerry: so, is there any way out of this elaine thing? \n\ngeorge: tough. \n\njerry: you know, the water pressures terrible in my building. and she loves a good shower. \n\ngeorge: i never heard of anyone would turned down an apartment because of a weak shower spray. \n\njerry: if they were fanatic about showers, they might. \n\ngeorge: for that rent, shed take a bath in the toilet tank if she had to. \n\njerry: look at that woman feeding her baby greasy, disgusting, coffee shop corned beef hash. isnt that child abuse? \n\ngeorge: id like to have a kid. of course, you have to have a date first... remember my friend, adam, from detroit? \n\njerry: yeah, the guy with the flat head. \n\ngeorge: hes a cube. anyway, he got married six months ago. he told me ever since hes been wearing a wedding band, women have been coming on to him everywhere he goes. \n\njerry: yeah, ive heard that about wedding bands. \n\ngeorge: i wonder if thats really true. \n\njerry: that would be an interesting sociological experiment. you know, kramer has his fathers band. hed loan it to you. \n\ngeorge: thanks a lot. ill give it back to you in a week. \n\nkramer: you know, i dont even know why youre fooling around with this ring. ive been telling you, get yourself some plugs. or a piece. \n\ngeorge: im not doing that. \n\nkramer: oh, man. you know, youre crazy. youre a good looking guy. what do you want to walk around like that for? \n\ngeorge: no, ill put half a can of mousse in my head like you. \n\nharold: i told you i dont like these sponges, theyre too small! i want a big sponge! \n\nharold: you cant pick up anything with these! theres no absorption! \n\njerry: boys, boys. \n\nharold: hi, jerry. \n\nmanny: hello, jerry. (in spanish to harold) you tell him. \n\nharold: okay \n\nmanny: (in spanish to harold again) you tell him. \n\nharold: your friend cant have the apartment, jerry. \n\njerry: what? \n\nharold: because somebody offered manny five thousand dollars for the apartment. i dont want to do it. manny wants to do it. \n\nmanny: (in spanish) why are you telling him it's my fault? \n\nharold: because its true! why shouldnt i tell him? \n\njerry: hey, hey. i understand. youre businessmen. \n\nmanny: (in spanish) tell him that if his friend can come up with the same money then she can have the apartment. \n\nharold: oh, now, he says that if your friend has five thousand dollars, well give it to her. \n\njerry: well, thats a lot of money. but, if thats the way its gotta be, thats the way its gotta be. \n\njerry: you know, i used to think that the universe is a random, chaotic sequence of meaningless events, but i see now that there is reason and purpose to all things. \n\ngeorge: what happened to you? \n\njerry: religion, my friend, thats what happened to me. because, i have just been informed that its going to cost elaine the sum of five thousand dollars to get the apartment upstairs. \n\ngeorge: (jubilant) five thousand dollars? she doesnt have five thousand dollars! \n\njerry: of course she doesnt have five thousand dollars! \n\ngeorge: so, she cant get the apartment. \n\njerry: cant get it. \n\ngeorge: so, she doesnt move in. \n\njerry: no move. so, you see, its all part of a divine plan. \n\ngeorge: and how does the baldness fit into that plan? \n\njerry: (to the intercom) elaine? \n\nelaine: yeah. \n\njerry: (to george) all right, this is going to require some great acting now. i have to pretend im disappointed. youre going to really see me being a phony, now. i hope you can take this. maybe you should go in the other room. \n\ngeorge: are you kidding? i lie every second of the day. my whole life is a sham! \n\njerry: cause you know, i love elaine. \n\ngeorge: of course you do. \n\njerry: but you know... not in the building. really, i feel terrible about this. my intentions were good. what can i do? tell me. \n\nelaine: (to someone in the hallway) no, ill be seeing you. (she enters the apartment; singing) \"good morning, good morning.. (to jerry and george) have you ever gotten up in the morning and felt its great to be alive? that every breath is a gift of sweet life from above? \n\nelaine: oh, and before i forget, i have the checks for the first month, last months security deposit. (laughs) i have seventy-five dollars left in my account. \n\njerry: well... theres a little bit of a problem. \n\nelaine: oh, i know. theres a weak shower spray, i know. ive already thought about it, and im switching to baths. as winston churchill said, why stand when you can sit? maybe ill get some rubber duckies. \n\njerry: uh, no uh, someone offered harold and manny five thousand for the apartment. im sure theyd just as soon give it to you, but youd have to come up with that money. \n\nelaine: five thousand dollars? i dont have five thousand dollars. \n\njerry: i know. \n\nelaine: (disappointed) how am i going to get five thousand dollars? \n\njerry: i have no idea. \n\nkramer: (to elaine) hey, my new neighbor! \n\nelaine: im not moving in. \n\nkramer: what? \n\nelaine: they want five thousand dollars now. \n\nkramer: so, okay uh whats the problem? \n\nelaine: i dont have five thousand dollars. \n\nkramer: cmon, you can come up with five thousand dollars. (to jerry) jerry, you dont have five thousand dollars you can led her? come on. \n\njerry: yeah, well, i didnt- is that something you want to borrow? \n\nelaine: no, thats too much money to borrow. \n\nkramer: loan her the money. you can afford it. \n\njerry: she doesnt wanna borrow the money. \n\nkramer: oh, cmon. shell pay you back. whats five grand between friends? \n\nelaine: of course id pay you back.. \n\nkramer: yeah, so whats the problem? \n\njerry: who said theres a problem? \n\nkramer: hey see he said hed loan you the money. \n\nelaine: well jerry, it might take a while for me to pay you back. maybe a few years. how do you feel about that? \n\nkramer: thats okay. he doesnt care. \n\nelaine: well, you know, money can sometimes come between friends. \n\nkramer: get outta here. \n\nelaine: let me think about it. \n\nkramer: whats to think about? \n\nelaine: i dont know... i dont know. five thousand... let me just take one more look at it. \n\njerry: (to kramer) it was all over! taken care of. done! finished. five thousand. wheres she gonna get five thousand? she doesnt have five thousand. clean. good bye. shes gone. then you come in, why dont you loan her five thousand? what do you care? youve got five thousand. give her five thousand! \n\nkramer: you didnt want her in the building? \n\njerry: no, i didnt! \n\nkramer: well, then what did you loan her the five thousand for? oh, look, maybe she wont take it. i mean, she did say that she was gonna think about it. \n\njerry: people dont turn down money. its what separates us from the animals. \n\nkramer: i still dont understand what the problem is having her in the building. \n\njerry: let me explain something to you. you see, youre not normal. youre a great guy, i love you, but youre a pod. i, on the other hand, am a human being. i sometimes feel awkward, uncomfortable, even inhibited in certain situations with the other human beings. you wouldnt understand. \n\nkramer: because im a pod? \n\nelaine: ill take it! \n\nroxanne: hi, elaine. \n\nelaine: oh, hi, roxanne. nice to be here. these are my friends. this is george, and this is jerry. \n\njerry: hi \n\nelaine: jerrys the one who got me my new apartment. \n\nroxanne: so, youre elaines hero. \n\njerry: yes, its my lifes work. \n\nroxanne: there are so few true heroes left in this world. \n\ngeorge: yeah, my wife couldnt make it today. shes got something with her mother... who knows whats going on with her. dont let any one kid you, its tough. \n\njerry: well, better load up on some carbos before the race. \n\nroxanne: oh, the marathon is great, isnt it? \n\njerry: oh, yes. particularly if youre not in it. \n\nroxanne: i wish we had a view of the finish line. \n\njerry: whats to see? a woman from norway, a guy from kenya, and twenty thousand losers. \n\ngeorge: ...yeah, my wife started getting on me about the lawn today. im tellin you, its one thing after another. \n\nrita: is she here? \n\ngeorge: uh no no, shes working. \n\nrita: what does she do? \n\ngeorge: shes an... etymologist. you know, bees, flies, gnats. w-what about you? \n\nrita: i work for the director of madison square garden. its great! i can get free tickets to any sporting in new york. anyway, shes a very luck woman. enjoy the race. \n\ngeorge: (calling after her) but.. \n\nroxanne: hi stan. joanne. \n\nelaine: jerry, this is joanne, and this is stan. theyre in my short story class with roxanne and me. \n\njerry: hi how are ya? \n\nelaine: hey, jerry just got me a great apartment in his building! \n\njoanne: well, jerry, itll be nice having a close friend nearby. \n\njerry: (no amused) fantastic. \n\nstan: she can pop in whenever she wants. \n\njerry: i know. \n\njoanne: she doesnt even need to knock! \n\njerry: its tremendous. \n\nstan: anytime of day. \n\njerry: im in heaven. \n\nelaine: oh, rita come here. this is jerry. hes the one who got me the apartment. \n\nrita: oh, hi. (calling to someone) bob, this is the guy who got elaine the apartment. \n\ngeorge: im sorry, i dont see the big deal about being a matador. the bull charges, you move the cape, whats so hard? \n\nsusie: so uh, are you really married? because, ive actually heard of single guys who wear wedding bands to attract women. \n\ngeorge: (laughs) youd have to be a real loser to try something like that. \n\nsusie: thats too bad, because i really have a thing for bald guys with glasses. \n\nrita: hey everybody! here come the runners! \n\nelaine: (to jerry) so you and roxanne are hitting it off, huh? \n\njerry: oh, i wouldnt quite say that. \n\nelaine: really? from a distance, you seemed to be coming on to her. \n\njerry: im a guy  it always looks like that. \n\nelaine: because, i was thinking... are you at all concerned that living in the same building will, yknow... cramp our styles? \n\njerry: nah... \n\nelaine: because, i was worried that there might be a situation in which one of us come home with somebody, it could get a little uncomfortable. but, as long as youre okay with it, its fine with me. \n\njanice: ive never been able to be with just one person. i can, however, carry on strictly physical relationships which can last for years and years. its a shame youre married. \n\ngeorge: umm, im not. its just a sociological experiment! \n\njanice: please... \n\njerry: you have no idea what an idiot is. elaine just gave me a chance to get out and i didnt take it. (pointing to himself) this is an idiot. \n\ngeorge: is that right? i just threw away a lifetime of guilt-free sex, and floor seats for ever sporting event in madison square garden. so please, a little respect. for i am costanza lord of the idiots! \n\nroxanne: (yelling out the window) youre all winners! \n\ngeorge: but suddenly, a new contender has emerged... \n\njerry: george, i didnt sleep at all last night. i decided i have to tell her. im just going to be honest. thats all... yes, im nervous... are you listening to me?... just put some soap on your finger. itll slide right off... then try axle grease... (kramer enters; to the phone) ill call you back after i talk to her... bye. \n\nkramer: well, its all taken care of. everythings cool. \n\njerry: what? whats cool? \n\nkramer: elaine. \n\njerry: what are you talking about? \n\nkramer: i just found a guy whos willing to pay ten thousand dollars for the apartment. \n\njerry: you what?! get out! (pushes kramer) ten thousand? \n\nkramer: cash. \n\njerry: who would pay that much? \n\nkramer: hes in the music business. \n\njerry: elaine would never borrow that much money! (jerry hugs kramer, then grabs him by the cheeks.) kramer, my god, man! this is beautiful! i think im in the clear here. elaines not moving in. i dont have to confront her. she has no idea i never wanted her to move in. im golden! \n\nkramer: well, occasionally i like to help the humans. \n\nelaine: wow. youre right. that is loud. \n\njerry: its just unbelievable. \n\nelaine: they rehearse all the time? \n\njerry: all the time. ive been up there six times. they refuse to stop. i cant live like this. i dont know what im gonna do. im heading for breakdown! (to harold) cant you do something? \n\nharold: im not going up. it stinks up there. \n\njerry: manny... \n\nmanny: (in spanish) theyre allowed to play until eleven oclock! \n\nharold: im not the one who said eleven oclock. he makes up his own rules. \n\nelaine: boy, too bad. if i was up there, youd never hear a peep out of me. im as quiet as a mouse. \n\nkramer: oh, i love the one they do right after this one! (starts dancing) \n\njerry: i dont know. what do you do when a neighbor is making, like, a lot of noise at three oclock in the morning? i mean, can you knock on someones door and tell them to keep it down? youre really altering your whole self-image. i mean, what am i, fred mertz now? whats happening to me? can i do this? am i a shusher? i used to be a shushee. theres a lot of shushing going on in movie theaters. people are always shushing. shh... shh... shhh... shhh... doesnt work, cause nobody knows where a shush is coming from. they just hear a shh. was that a shush? i think somebody just shushed me. some people you cant shush in a movie theater. theres always that certain group of people, isnt it? theyre talking and talking, and everyone around them is shushing them, and shushing them. they wont shush. theyre the unshushables. \n\njerry: i have to tell you that i did some very exciting news recently, and i dont know if i should really tell you exactly what it is because its really not a definite thing yet. (crowd cheers him on to tell them) well, i will tell you what i know so far. according to the information that i have in the envelope that ive received, it seems that i may have already won some very valuable prizes. (audience applauds) well, thank you, thank you very much, well thank you. that's very nice to hear that. but, in all honesty, i have to say, i didnt even know i was in this thing. but, according to the readout, it looks like i am among the top people that they are considering. you know, thats what annoys me about the sweepstakes companies, they always tease you with that, you may have already won. id like once for a sweepstakes company to have some guts, come out with the truth, just tell people the truth one time. send out envelopes, you have definitely lost! you turn it over, giant printing, not even close! you open it up, theres this whole letter of explanation, even we cannot believe how badly you have done in this contest. \n\njerry: (to kramer) to the right. \n\ngeorge: that took awhile. \n\njerry: dont get up. \n\ngeorge: id like to help, but my neck.. \n\ngeorge: so how long has it been in the basement? \n\njerry: since my grandfather died. i was suppose to send it down to my parents in florida, but they didnt want it. they told me to get rid of it, but i felt funny and then i sort of forgot about it. and its been sitting down there for three years until he saw it. (to kramer) all right, so, just take what you want and lets get it out of here. \n\ngeorge: whats in it? \n\njerry: grandpa clothes, i cant wear em. \n\nkramer: you want these? knee socks. you dont wear knee socks. \n\njerry: no, go ahead. look at this place. i cant wait to get it cleaned. \n\ngeorge: i know someone wholl do it. shes good. shes honest. \n\njerry: no, elaines got this writer friend from finland, rava. her boyfriend goes to columbia grad school, and hes suppose to do it. \n\ngeorge: students cant clean. its anathema. (explaining) they dont like it. \n\njerry: how long have you been waiting to squeeze that into a conversation? \n\nkramer: now this i like. \n\ngeorge: wait a second. (george gets up and heads for the statue in kramers hands.) i cant believe this! let me see this. \n\nkramer: wait, wait, wait... \n\ngeorge: let me just see it. \n\nkramer: come on... \n\ngeorge: let me just see it for a second. \n\ngeorge: oh my god, its exactly the same! \n\njerry: what? \n\ngeorge: when i was ten years old, my parents had this very same statue on the mantle of our apartment. exactly. and, one day, i grabbed it, and i was using it as a microphone. i was singing, macarthur park, and i got to the part about, ill never have that recipe again, and it slipped out of my hand and it broke. my parents looked at me like i smashed the ten commandments. to this day, they bring it up. it was the single most damaging experience in my life, aside from seeing my father naked. \n\nkramer: cmon, george. i saw it first. \n\ngeorge: no, kramer. i have to have this statue. \n\nkramer: no, i got dibs! \n\ngeorge: what? no dibs! i need this statue. cmon, give it! \n\njerry: spread out, spread out you numbskulls. why dont you just settle it like mature adults? \n\nkramer: potato man! \n\ngeorge: no, no, no potato man. inka-dink. \n\nkramer: okay...yea well uh start with me. \n\ngeorge: yeah, good, good. \n\njerry: inka-dink, a bottle of ink, the cork fell out, and you stink. \n\njerry: not because youre dirty, not because youre clean  just because you kissed the girl behind the magazine... \n\njerry: and you are it! \n\nkramer: what?! wait a minute. no, no, no. what are you doing? no, no, oh, oh, okay. hes out. i get it. \n\ngeorge: no, no, no, no, im it. i win. \n\njerry: no, hes it. he wins. it is good. \n\nkramer: do over  start with him. \n\njerry: no, no, no, come on, kramer. now, you got the socks. \n\nkramer: all right, you can have it. (kramer tosses the statue to george.) \n\ngeorge: (not expecting the statue to be thrown) dit. \n\nkramer: okay, im gonna take the suit, and the shoes, and the hat. \n\njerry: all right, cmon. lets go. \n\nkramer: hey, i look like joe friday in dragnet. \n\ngeorge: i cant believe i won at inka-dink. \n\njerry: come on, lets go. \n\ngeorge: yea. \n\njerry: arent you gonna take it? \n\ngeorge: no, no, no, i dont want to carry it around all night. ill pick it up later. \n\ngeorge: (to kramer) what about your stuff? \n\nkramer: oh, uh, well - okay. \n\njerry: all right, lets go. hey, you know, you owe me one. \n\ngeorge: what? \n\njerry: the inka-dink.. you were it. \n\ngeorge: its bad? \n\njerry: its very bad. \n\nrava: well, if they dont let you be my editor on this book, ill go to another publisher. its that simple. \n\nelaine: you told them that? \n\nrava: of course. \n\nelaine: (excited) this is so fantastic. i dont know how to thank you. \n\njerry: (to rava) so, wheres this boyfriend of yours? i cant wait much longer. ive got a flight. \n\nelaine: oh, probably caught in traffic. \n\nrava: or maybe hes dead. \n\njerry: so what do you write, childrens books? \n\nrava: thats ray. \n\nray: ah, greetings, greetings, and salutations. i beg your forgiveness. my tardiness was unavoidable. rava, my love. elaine, my dear friend. and you must be jerry. lord of the manor. ah, my liege. a pleasure to serve you. \n\njerry: all right... \n\nrava: and we have to get back to work. \n\njerry: i gotta get to the airport. \n\nray: your palace shall sparkle like the stars in heaven upon your save arrival, sire. \n\njerry: the uh toilet brush is under the sink. \n\njerry: i dont really feel that comfortable with a maid, either, because theres that guilt when you have someone cleaning your house. you know, youre sitting there on your sofa, and they go by with the vacuum, im really sorry about this. i dont know why i left that stuff over there. and thats why i could never be a maid, because id have an attitude. id find them, wherever they are in the house, oh, i suppose you couldnt do this? no, dont get up, let me clean up your filth. no, you couldnt dust. no, this is too tough, isnt it? \n\njerry: he really did an amazing job. look! he uncoagulated the top of the dishwashing liquid! (jerry opens refrigerator.) he cleaned out the bottom of the little egg cups! come here, look at this. (he gets on his knees and points.) he cleaned the little one-inch area between the refrigerator and the counter. how did he get in there?! he must be like rubber man! \n\nelaine: theres no rubber man. \n\njerry: why did i think there was a rubber man? theres elastic man... plastic man... \n\nelaine: im leaving. \n\njerry: where are you going? \n\nelaine: to ravas house. ive gotta pick up her manuscript. \n\njerry: oh wait. ill go with you. \n\njerry: elaine, he windexed the little peep hole! \n\nelaine: (to rava) so, the meeting with lippman is all set. hes the editor-in-chief! i think because of your request- \n\nrava: demand. \n\nelaine: they're going to promote me to editor. \n\nrava: daantotin. (there is a sound of the front door being unlocked.) theres ray... late as usual. \n\nray: well, this is an unexpected surprise  and delight! the once and future king of comedy, jerry the first, gracing our humble abode. rava, were in the presence of royalty. \n\njerry: hey, ray, listen, you really did a tremendous job cleaning that apartment. \n\nray: but i didnt just clean your apartment. it was a ritual, a ceremony, a celebration of life. \n\njerry: shouldnt you be out on a ledge somewhere? \n\nrava: the water is boiling. are you having tea? \n\nelaine & ray: yes. \n\nelaine: jerry? jerry! \n\njerry: what? \n\nrava: (from the kitchen) ray, would you give me a hand? \n\nray: yeah, im coming! \n\njerry: i think thats the statue from my house. that looks like the statue from my house! \n\nelaine: what statue? \n\njerry: i had a statue! \n\nelaine: you have a statue? i never saw a statue. \n\njerry: my grandfather gave me a statue! \n\nelaine: since when? \n\njerry: whats the difference?! thats the one! he ripped me off! this guy ripped me off! \n\nray: do you take sugar? \n\njerry & elaine: uhh... no. \n\njerry: i cant believe it! this guy ripped me off! \n\nelaine: do you realize what youre saying? \n\njerry: yes! this guy ripped me off! he stole that statue right out of my house! \n\nray: lemon? \n\njerry & elaine: uh... sure/yeah.. \n\nelaine: are you sure? \n\njerry: pretty sure! ninety-nine percent sure. \n\nelaine: ninety-nine percent sure?! \n\nray: ah, sweet elixir. its fragrant nectar a soothing balm for the soul. \n\nrava: ah those are the pastries, ray take care of that, i'm going to get elaine the manuscript. \n\nray: ah, the pastries! \n\nelaine: maybe it just looks the same. maybe its just a coincidence. \n\njerry: coincidence? this guys in my apartment and then, just by coincidence, he has the same exact statue in his apartment? \n\nelaine: i never saw the statue. \n\njerry: i had a statue! what should i do? \n\nelaine: i dont know. \n\njerry: ill call kramer. he can check my house. \n\nelaine: oh jerry, dont blow this for me. \n\njerry: dont worry. (whispering into the phone) kramer! kramer!... its jerry!... jerry!... from next door!... never mind where i am!... yes, jerry seinfeld!... \n\njerry: ma, i told you, just dip the bread in the batter, and put in right in the pan... okay, bye. (jerry hangs up; to rava) my mother. she forgot how to make french toast. you know how mothers are. \n\nrava: my mother left us when i was six years old. all seven of us. we never heard from her again. i hope shes rotting in an alley somewhere! \n\njerry: my moms down in florida. shes got uh one of those condos. hot down there in the summer. you ever been down there? \n\nray: i love these pastries. you know, in scandinavian mythology, the pastries were the food of the gods. \n\njerry: listen, uh i just remembered... im... uh, getting a facial. \n\nelaine: oh, see you tomorrow morning. \n\nray: how about dinner? \n\njerry: no, i dont eat dinner. dinners for suckers. \n\njerry: uh huh... yeah... okay, thanks anyway... bye. \n\njerry: nope, the cop says its my word against his. theres nothing they can do. \n\nkramer: lets go get him. \n\njerry: yeah, right. \n\ngeorge: we cant just let him get away with this. \n\njerry: do you realize how crazy he had to be to do something like this? he knew i was gonna know its missing, and he took it! and of all things to take! i left my watch, tape recorder, stereo. hes crazy. \n\nkramer: you wanna go get him? \n\nelaine: well, then, if hes crazy you should just forget it. \n\ngeorge: forget it? i already called my parents. i told them to expect the surprise of a lifetime. my mothers making her roasted potatoes! \n\nelaine: george, do you realize that rava has asked me to edit her book? \n\ngeorge: who is this rava? \n\nkramer: i say we get him. \n\nelaine: no! \n\ngeorge: let me just call him. \n\njerry: ill call him. (jerry picks up the cordless phone. he points to the rotary phone on the coffee table. kramer, george, and elaine struggle for it.) hello, ray?... hi, ray, this is ravas friend, elaines friend, jerry... the king of comedy, right. listen, you know that statue on your mantle, the one with the blue lady? (he covers the reciever and yells at kramer and george.) would you shut up?! (to the phone) yeah, you dont want to talk about it over the phone?.. you dont want rava to hear?... yeah, i understand... you know that coffee shop near my house, monks?... all right, tomorrow... one o clock... great, okay, bye. \n\nelaine: all right, look, look, look. lets say he stole it. \n\ngeorge: oh, he stole it! \n\nelaine: cmon, you cant do anything about it. the cops wont do anything. what, are you going to fight him? why dont you just forget it? \n\njerry & george: no. \n\ngeorge: i thought you said one oclock. \n\njerry: relax, hes late. hes always late. its part of his m.o. \n\ngeorge: remember, dont take any crap. \n\njerry: yeah, yeah. dont worry about it. \n\ngeorge: ill be right here. \n\njerry: thats comforting. shh. hes coming. (to ray) ray? \n\nray: oh, jerry. i cant believe you asked me about that statue. do you know how much trouble you couldve got me into? \n\njerry: well, i didnt... \n\nray: rava was standing right next to me. i never told her where i got the statue. \n\ngeorge: (muttering to himself) i wonder why. \n\njerry: well, just give it back, and i wont say anything. \n\nray: give it back? \n\njerry: yeah. \n\nray: what are you talking about? \n\njerry: what are you talking about? \n\ngeorge: what is he talking about? \n\nray: im talking about the statue. \n\njerry: yeah, me too. \n\nray: give it back to whom? \n\njerry: me. \n\ngeorge: yeah, him. \n\nray: you? \n\njerry: yeah. me. \n\nray: im not getting this. \n\ngeorge: you already got it. \n\njerry: ray, i had a statue in my house. you were in my house  and then i saw it in your house. \n\nray: what are you saying? \n\njerry: what am i saying? \n\ngeorge: take a wild guess. \n\nray: are you saying i stole your statue? \n\ngeorge: what a mind. \n\njerry: well, i... \n\nray: i cant believe what im hearing. \n\njerry: i cant believe what im hearing. \n\ngeorge: i cant believe what im hearing. \n\nray: for your information, i got that statue in a pawn shop. \n\ngeorge: pawn shop? \n\njerry: a pawn shop? \n\nray: yes. in chinatown with the money i earned cleaning peoples apartments. \n\ngeorge: cleaning them out. \n\njerry: oh, excuse me... look, ray, you were the only person in my house. \n\nray: whats behind this? its rava, isnt it? \n\ngeorge: again with the rava. \n\nray: you want her. \n\njerry: no, shes a little too cheery for me. \n\nray: shes from finland, for crying out loud. finland! do you understand?! \n\njerry: i know finland. theyre neutral. \n\nray: is it me? do i rub you the wrong way? \n\njerry: no, i actually find you quite charming. a bit verbose at times... \n\ngeorge: oh, i find you so charming. you wuss. \n\njerry: (to george) did you call me a wuss? \n\nray: what did you say? \n\njerry: i said luss. im at a luss. \n\nray: i would just love to take you down to the shop where i got it. \n\njerry: thats not necessary. (george slams his menu down on the table repeatedly.) you know, maybe its not that bad an idea. \n\nray: and i would love to. nothing would please me more. but, unfortunately, the guy retired and moved to singapore. \n\ngeorge: singapore?! do you hear this? \n\nray: if you really want, maybe i can contact the guy in singapore and have him make a photostat of the receipt and send it over. \n\ngeorge: thats it! thats it! i cant take it. i cant take it anymore! you stole the statue! youre a theif! youre a liar! \n\njerry: george... \n\nray: who is this? \n\ngeorge: im the judge and the jury, pal. and the verdict is guilty! \n\nray: whats going on here? \n\ngeorge: guilty! \n\nray: your friend is crazy. \n\ngeorge: oh, im crazy! \n\njerry: george, george... \n\nray: ive got to get going. i have a class. \n\ngeorge: oh ho! class, huh? at columbia? let me tell you something, pal. i called the registrars office. i checked you out. they have no record of a ray thomas at that school! you liar! \n\nray: well, thats because im registered under my full legal name, raymond thomas wochinski. ray thomas is my professional name. \n\ngeorge: you mean alias. \n\nray: you are starting to make me angry! \n\ngeorge: well, that was bound to happen. \n\nray: (to jerry) i hope you think about what youve done here today. and if you want to call and apologize, you know where to reach me. \n\njerry: hey, ray. \n\nray: yes? \n\njerry: how did you get the goop out of the top of the dishwashing liquid? it was like a brand-new nozzle! \n\nelaine: nervous? \n\nrava: why should i be? \n\nelaine: yeah. right. \n\nrava: your notes are very insightful. \n\nelaine: the book is great. did you go out last night? \n\nrava: no. we made love on the floor like two animals. ray is insatiable. \n\nelaine: they all are. \n\nrava: was jerry? \n\nelaine: i cant remember. \n\nrava: you know, ray is very upset over these accusations. \n\nelaine: oh, well, im staying out of this one. this is between them. i am not getting involved. \n\nrava: so you think he stole it?! \n\nelaine: well, you have to admit... the circumstantial evidence... \n\nrava: i admit nothing! \n\nman: will you put that cigarette out, please? \n\nelaine: well, i mean, he was in the apartment, and then its gone and its in your apartment. \n\nrava: maybe you think were in cahoots. \n\nelaine: no, no. but it is quite a coincidence. \n\nrava: yes, thats all a coincidence! \n\nelaine: a big coincidence. \n\nrava: not a big coincidence. a coincidence! \n\nelaine: no, thats a big coincidence. \n\nrava: thats what a coincidence is! there are no small coincidences and big coincidences! \n\nelaine: no, there are degrees of coincidences. \n\nrava: no, there are only coincidences! ask anyone! \n\nrava: are there big coincidences and small coincidences, or just coincidences? well?! well?! \n\nman: will you put that cigarette out?! \n\nrava: maybe i put it out on your face! (to elaine) its just like ray said. you and jerry are jealous of our love. youre trying to destroy us. \n\nelaine: shouldnt you be out on a ledge somewhere? \n\ngeorge: ma, will you stop?... its just a statue!... how is it my fault?!... it was stolen. i didnt even touch it this time... okay, fine... i dont see why this should affect to potatoes!... okay... goodbye. (george hangs up.) she doesnt react to disappointment very well. unlike me. \n\nkramer: im not happy about this. \n\nelaine: why dont we just throw a molotov cocktail through their window? \n\ngeorge: theres just no justice. this experience has changed me. its made me more cynical, more bitter, more jaded. \n\njerry: really? \n\ngeorge: (casually) sure, why not. \n\nelaine: well, how do you think i feel? instead of editing the first novel of a major young writing talent, i am proofreading a food allergy cookbook. \n\njerry: cant you talk to your boss? \n\nelaine: i did. he loves rava. worse, he loves ray. and he didn't think youre funny at all. \n\nkramer: (talking to himself) im not happy about this. \n\njerry: well, perhaps we can take comfort in the knowledge that in the next world, ray will be the recipient of a much larger and more harsh brand of justice.. \n\ngeorge: yeah, hell have my parents. \n\nkramer: (from the other side of the door) police! open up! \n\nray: police? \n\nkramer: freeze, mother! \n\nray: hey. \n\nkramer: shut up. spread em. i said spread em! (looks around) youre in big trouble son. burglary, grand larceny, possession of stolen goods... and uh, uh... murder. \n\nray: murder?! \n\nkramer: shut up! keep em spread! just make love to that wall, pervert! \n\nray: i think you have me confused with somebody else. \n\nkramer: is your name ray? \n\nray: yeah. \n\nkramer: yeah, youre the punk im looking for! \n\nray: hey, hey, are you a cop? \n\nkramer: yeah, im a cop. im a good cop. im a damn good cop! (on that line, kramer points to ray, and ray turns back to the wall. kramer heads for the door.) todays your lucky day, junior, cause im gonna let you off with a warning. any more of this criminal activity, and youll be sorry. you got me? \n\nray: got you? i dont even know what the hell youre talking about. \n\nkramer: good, good. lets uh keep it that way. \n\njerry: all right, all right. whats the big hubbub, bub? \n\ngeorge: kramer, i cant believe it. oh, youre my hero! \n\nkramer: yeah. \n\njerry: kramer, what did you do? \n\nkramer: well, lets just say i didnt take him to peoples court. \n\ngeorge: i feel like a huge weights been lifted off my shoulders. i... i... i feel happy! kramer, i dont know how to thank you! \n\nkramer: well, ill think of something. \n\njerry: people are going to steal from you. you cant stop them. but, everybody has their own little personal security things. things that they think will foil the crooks, you know? in your own mind, right? you go to the beach, go in the water, put your wallet in the sneaker, whos gonna know? what criminal mind could penetrate this fortress of security? i tied a bow. they cant get through that. i put the wallet down by the toe of the sneaker. they never look there. they check the heel, they move on. \n\njerry: whenever i see the news and they're hauling in some kind of terrorist, psycho, maniac, mass murderer guy. you notice he's always covering up his face with the newspaper, with the jacket, with the hat. what is he worried about? i mean what is this man's reputation? that he has to worry about this kind of exposure damaging his good name? i mean, what is he up for a big job promotion down at the office or something? afraid the boss is gonna catch this on tv and go \"isn't that johnson from sales? he's up in that clock tower picking people off one by one. i don't know if that's that kind of man we want heading up that new branch office. he should be in bill collection. i think he's got aptitude.\" \n\nlevitan: (on the phone) ha ha, she was great. you don't want to know. hey breaky, remind me to tell you what we did in lake george. (laughing) get this...i got it all on video. (laughing) \n\ngeorge: that's it. this is it. i'm done. through. it's over. i'm gone. finished. over. i will never work for you again. look at you. (laughing) you think you're an important man? is that what you think? you are a laughingstock. you are a joke. these people are laughing at you. you're nothing! you have no brains, no ability, nothing! (knocking object over on desk) i quit! \n\nkramer: hey. \n\njerry: hey. \n\nkramer: boy, i have really had it with newman. he wakes me up again last night at three o'clock in the morning to tell me he's going up onto the roof to kill himself. \n\njerry: well, what'd you say? \n\nkramer: i said \" jump.\" well, he's been threatening to do this for years. i said \" look, if you're gonna kill yourself do it already and stop bothering me.\" at least i'd respect the guy for accomplishing something. \n\njerry: what's his problem? \n\nkramer: no job. no women. \n\njerry: he called the right guy. \n\nkramer: well, what am i supposed to tell him? how much there is for him to live for? why should i lie to him? \n\njerry: all right, i'm leaving. i going to the laundry. \n\nkramer: why don't you use the machines down in the basement? \n\njerry: fluff and fold. the only way to live. (snapping fingers in tune with words) i drop it off. i pick it up. it's a delight. \n\nkramer: how 'bout if i put a few things -- \n\njerry: wait a sec. i don't wanna do -- \n\nkramer: well, you're going over there. \n\njerry: i don't wanna mix in everything! my guys don't know your guys. you can't just lock 'em all in the same machine together. they'll start a riot. \n\nkramer: have you ever met my guys? \n\njerry: no. i can't say as i have. \n\nkramer: well! \n\njerry: all right. put 'em on top. \n\nkramer: ah! \n\njerry: oh, beautiful. \n\njerry: this stuff on top is my friends. could i get it done in a separate machine? \n\nvic: i'll have to charge you for another machine. \n\njerry: whatever it costs. in fact, i would prefer it if the machines are not even touching each other. because something could, you know, jump across. \n\ngeorge: guess what. \n\njerry: how did you know i was here? \n\ngeorge: kramer. guess what. \n\njerry: i don't know. \n\ngeorge: i quit my job. \n\njerry: get outta here. \n\ngeorge: i couldn't take it anymore. \n\nvic: you can have this on monday. (hands jerry a ticket) \n\njerry: what happened? levitan? \n\ngeorge: i go in to use his private bathroom, everybody uses it, and then i get a memo - a memo - telling me to use the men's room in the hall. well, (laughing) i mean we share it with pace electronics. it's disgusting! \n\njerry: you and your toilets. \n\ngeorge: i snapped! it was the last straw. (sighs) \n\njerry: so, what are you gonna do now? are you gonna look for something else in real estate? \n\ngeorge: nobody's hiring now. the market's terrible. \n\njerry: so what are you gonna do? \n\ngeorge: i like sports. i could do something in sports. \n\njerry: uh-huh. uh-huh. in what capacity? \n\ngeorge: you know, like the general manager of a baseball team or something. \n\njerry: yeah. well, that - that could be tough to get. \n\ngeorge: well, it doesn't even have to be the general manager. maybe i could be like, an announcer. like a color man. you know how i always make those interesting comments during the game. \n\njerry: yeah. yeah. you make good comments. \n\ngeorge: what about that? \n\njerry: well, they tend to give those jobs to ex-ballplayers and people that are, you know, in broadcasting. \n\ngeorge: well, that's really not fair. \n\njerry: i know. well, okay. okay. what else do ya like? \n\ngeorge: movies. i like to watch movies. \n\njerry: yeah. yeah. \n\ngeorge: do they pay people to watch movies? \n\njerry: projectionists. \n\ngeorge: that's true. \n\njerry: but you gotta know how to work the projector. \n\ngeorge: right. \n\njerry: and it's probably a union thing. \n\ngeorge: (scoffs) those unions. (sighs) okay. sports,...movies. what about a talk show host? \n\njerry: talk show host. that's good. \n\ngeorge: i think i'd be good at that. i talk to people all the time. someone even told me once they thought i'd be a good talk show host. \n\njerry: really? \n\ngeorge: yeah. a couple of people. i don't get that, though. where do you start? \n\njerry: well, that's where it gets tricky. \n\ngeorge: you can't just walk into a building and say \" i wanna be a talk show host.\" \n\njerry: i wouldn't think so. \n\ngeorge: it's all politics. \n\njerry: all right. okay. sports, movies, talk show host. what else? \n\ngeorge: this could have been a huge mistake. \n\njerry: well, it doesn't sound like you completely thought this through. \n\ngeorge: (sighs) guess not. what should i do? \n\njerry: maybe you can just go back. \n\ngeorge: go back? \n\njerry: yeah. pretend like it never happened. \n\ngeorge: you mean just walk into the staff meeting on monday morning like it never happened? \n\njerry: sure. you're an emotional person. people don't take you seriously. \n\ngeorge: just..go back. pretend the whole thing never happened. \n\njerry: never happened. \n\ngeorge: i was just blowin' off a little steam. so what? \n\njerry: so what? you're entitled. \n\ngeorge: i'm emotional. \n\njerry: that's right. you're emotional. \n\ngeorge: never happened. \n\njerry: never happened. \n\njerry: to me the most annoying thing about the couple of times that i did work in an office. is that when you go in, in the morning you say hi to everyone and for some reason throughout the day you have to continue to greet these people all day every time you see them. i mean you walk in \"morning bill, morning bob, how you doing? fine\" ten minutes later you see him in the hall, \"how ya doin'?\" every time you pass you gotta come up with another little greeting. you know you start racking your brains you know you do the little eyebrow \"hey\" you start coming up with nicknames for them. \"jimbo.\" \n\ngeorge: how ya doin'? \n\nglenda: what are you doing here? \n\ngeorge: what? i work here. \n\nglenda: i thought you quit. \n\ngeorge: what quit? (laughing) who quit? \n\ndan: bill, how was your weekend? \n\nbill: oh, excellent weekend. what about your weekend? \n\ndan: fine weekend. \n\ngeorge: yeah. good weekend. \n\ndan: went up to the cape. took the kids sailing. (laughing) lisa was a little scared at first, but that kids' gonna be a good sailor someday. \n\ngeorge: aw, she's gonna be a fine sailor. \n\nlevitan: ava, what happened to you friday afternoon? \n\nava: oh, i got a little tied up. \n\nlevitan: i'll bet you did. \n\nlevitan: i wanna remind everyone that the tenth anniversary party for rick barr properties is gonna be wednesday afternoon at four o'clock in lasky's bar, on madison 48th. i want all of you to be there. this really means a lot to me. is that costanza over there? what are you doing here? \n\ngeorge: what? \n\nlevitan: am i crazy, or didn't you quit? \n\ngeorge: when? \n\nlevitan: friday. \n\ngeorge: oh, what? what? that? are you kidding? i didn't quit. what? you took that seriously? \n\nlevitan: you mean, laughingstock? all that stuff? \n\ngeorge: come on. will you stop it. \n\nlevitan: no brains? no ability? \n\ngeorge: teasing. \n\nlevitan: okay. i want you outta here. \n\ngeorge: i don't know where you're getting this from. i....you're serious aren't you? oh, (laughing) you see? you see, you just don't know my sense of humor. dan, don't i joke around all the time? \n\ndan: i wouldn't say all the time. \n\nlevitan: you can't win. you can't beat me. that's why i'm here and you're there. because i'm a winner. i'll always be a winner and you'll always be a loser. \n\ngeorge: \" i'll always be a winner and you'll always be a loser.\" this is what he said to me. \n\njerry: well, so that's that. \n\ngeorge: no. that's not that. \n\njerry: that's not that? \n\ngeorge: no. \n\njerry: well, if that's not that, what is that? \n\ngeorge: i've got some plans. i got plans. \n\njerry: what kind of plans? \n\ngeorge: what's the difference? \n\njerry: you don't wanna tell me? \n\ngeorge: i'm gonna slip him a mickey. \n\njerry: what? in his drink? are you outta your mind? what are you peter lorre? \n\ngeorge: you don't understand. he's got this big party coming up. he's been looking forward to this for months. this is gonna destroy the whole thing. \n\njerry: what if you destroy him? \n\ngeorge: no. no. no. no. no. don't worry. it's perfectly safe. i researched it. he'll get a little woozy. he might keel over. \n\njerry: well, wha - what does that do? big deal. \n\ngeorge: this is what they would do in the movies! it's a beautiful thing! it's like a movie! i'm gonna slip him a mickey! \n\njerry: you've really gone mental. \n\ngeorge: nah. \n\njerry: where are you gonna get this mickey? i can't believe i'm saying \"mickey\"! \n\ngeorge: i got a source. \n\njerry: you got a mickey source? \n\ngeorge: and elaine is gonna keep him busy. \n\njerry: elaine? how did you rope her into this? \n\ngeorge: i told her what a sexist he is. how he cheats on his wife. \n\njerry: she knew that. \n\ngeorge: but she didn't know he doesn't recycle. \n\njerry: what is the point of all this? \n\ngeorge: revenge. \n\njerry: oh, the best revenge is living well. \n\ngeorge: there's no chance of that. \n\njerry: did you get your laundry? \n\nkramer: yeah. \n\njerry: what's with you? \n\nkramer: he jumped. \n\njerry: what? \n\nkramer: yeah. newman jumped. \n\njerry: did he call you last night? \n\nkramer: oh, yeah. yeah. yeah. yeah. yeah. yeah. \n\njerry: what did you say? \n\nkramer: i said \" wave to me when you pass my window.\" \n\njerry: whew. did he wave? \n\nkramer: no! he jumped from the second floor. mr. papanickolous saw him from across the street. he's lying out there faking. see, he's trying to get back at me. \n\njerry: (realizing something) oh, my god! \n\nkramer: what's the matter? \n\njerry: (tearing through his laundry bag) well, on thursday when i came home i had $1500 on me. for some reason i decided to hide it in my laundry bag and then i completely forgot about it...and then i took the laundry in on friday! oh, come on, let's go. \n\nkramer: where? where? \n\njerry: to the laundromat. \n\nvic: i never saw it. \n\nkramer: okay. come on. give the guy his money. what -- what are you doing? \n\nvic: hey, you see that sign right there? (points to a sign saying \"not responsible for valuables\" \n\njerry: oh, i see. so, you put up a sign so you can do whatever you want? you're not a part of society. \n\nvic: yea that's right, 'cuz this place is my country and i'm the president, and that's my constitution. i'm not responsible. \n\njerry: so, anybody leaves anything here, you can just take it? you have a license to steal? you are like the james bond of laundry? \n\nvic: you ever hear of a bank? \n\njerry: come on. let's go. \n\nkramer: no. you can't let him get away with this. \n\nelaine: which one is he? \n\ngeorge: that's him over there. the one that looks like a blowfish. \n\nelaine: oh, yeah. i see him. \n\ngeorge: yeah. hey, thanks for doing this. \n\nelaine: why pass up the opportunity to go to prison? \n\ngeorge: this is by far the most exciting thing i've ever done. \n\nelaine: yeah. it is kind of cool. \n\ngeorge: first time in my life i've ever gotten back at someone. \n\nelaine: i can't believe we're doing this. this is the kind of thing they do in the movies. \n\ngeorge: that's exactly what i told jerry! \n\nelaine: really? \n\ngeorge: yes! (both laugh) god, i've never felt so alive! \n\njerry: maybe we should call this off. \n\nkramer: come on. what's the big deal? just gonna put a little concrete in the washing machine. \n\njerry: and what's gonna happen? \n\nkramer: well, it'll gonna mix up with the water, and then by the end of the cycle it'll be a solid block! \n\njerry: if only you could put your mind to something worthwhile. you're like lex luthor. \n\nkramer: you keep him busy. \n\nkramer: whoa! \n\ngeorge: you go over there - \n\nelaine: yeah. \n\ngeorge: you start flirting with him and i'll come by and, while you're keeping him busy, i'll slip it in his drink. \n\nelaine: wouldn't it be easier just to punch him in the mouth? \n\nlevitan: come on! they're terrible. they got no infield. \n\nelaine: oops! (bumps into levitan) 'scuse me. \n\nlevitan: yeah. \n\ngreeny: i'm gonna get some food. you want some? \n\nlevitan: nah. \n\nelaine: hi. \n\nlevitan: hi. \n\nelaine: (sneezes) \n\nlevitan: god bless you. \n\nelaine: oh! thank you. thank you very much. (blowing nose) really. i mean that. i am not one of those people who give insincere thank you's. no sir. no sir. when i thank someone i really thank them. so, thank... yoooou! \n\nlevitan: (confused) you're welcome. \n\nelaine: people don't say \" god bless you \" as much as they used to. have you noticed that? \n\nlevitan: no. \n\nelaine: (having trouble getting him to pay attention) so, i'm going to a nudist colony next week. \n\nlevitan: (interested) nudist colony? \n\nelaine: oh, yeah. yeah. i love nudist colonies. they help me..unwind. aah! \n\nlevitan: (laughing) i'd never been to a nudist colony. \n\nelaine: oh, really? oh, you should go. they're great. they're great. of course, when it's over, it's - it's hard to get used to all this clothing, you know. so, a lot of times, i'll just lock the door to my office and i'll just sit there naked. \n\nlevitan: seriously? \n\nelaine: oh, yeah. i usually work naked a...couple hours a day. \n\ngeorge: (whispering) glenda, can i ask you a favor? can i have this seat? \n\nglenda: (loud) what do you have to sit here for? there are plenty of other seats. \n\ngeorge: (whispering) i can't explain. it's very important that i sit here. \n\nglenda: (loud) what are you doing here anyway? i thought you were fired. \n\ngeorge: (whispering angrily) okay. okay. fine. \n\nelaine: i cook naked, i clean....i clean naked, i drive naked. naked. naked. naked. \n\nlevitan: who are you? \n\nelaine: oh, you don't wanna know, mistah. i'm trouble. big trouble. \n\njerry: (trying to divert vic's attention) what about the gentle cycle? you ever use that? \n\njerry: do you think it's effeminate for a man to put clothes in a gentle cycle? \n\njerry: what about fine fabrics? how do you deal with that kind of temperament? \n\njerry: what about stone washing? you ever witness one of those? that must be something. what? do they just pummel the jeans with rocks? \n\nkramer: i didn't realize it was a full box. \n\ngeorge: (trying again with glenda) i'm gonna count to three. if you don't give up the chair, the wig is coming off. \n\nglenda: i don't' wear a wig. \n\ngeorge: one... (glenda seeing george is serious; gets up and leaves) \n\nelaine: no. no. no. no. no. i don't really have a phone. in fact, i - i really don't have an apartment. i kinda sleep around. \n\nelaine: i just like to have and few drinks and just let the guy do whatever he wants. would you close your eyes for a second? i wanna tell you a secret about my bra. \n\ngeorge: hello, rick. \n\nlevitan: heh heh heh hey! look who's here! \n\ngeorge: that's right, ricky boy, it's me! \n\nlevitan: you know something, costanza? i'm a very lucky man. \n\ngeorge: oh! \n\nlevitan: i've always been lucky. things just seem to fall right in my lap. \n\ngeorge: boom! \n\nlevitan: you wouldn't believe it if i told you. in fact, uh, i'm glad you're here. you know, maybe i've been a little rough on ya, huh? \n\ngeorge: oh. \n\nlevitan: why should we let petty, personal differences get in the way of business? i, uh, i want you to come back. (george is shocked) you can use my bathroom anytime you want. \n\ngeorge: you want me to come back? uh... \n\nlevitan: hey! how about a toast, huh? everybody, a toast! \n\ngeorge: rick. \n\nlevitan: everyone, i wanna propose a toast to ten great years at rick barr properties. \n\ngeorge: uh, rick.. \n\nlevitan: and all the people in this room, (clears throat) that made that possible.. \n\ngeorge: rick. \n\nlevitan: i'd also like to welcome back into the fold our..our little shrimpy friend, george costanza who, although he didn't really have a very good year -- how you blew that mcconnell deal, i'll never know. but, hey, what the hell, huh? we've always enjoyed his antics around the office. heh heh. anything you wanna add to this? \n\ngeorge: drink up. (levitan takes a drink) \n\ngeorge: i like history. civil war. maybe i could be a professor, or something. \n\nelaine: well, to teach something you really have to know a lot about it. i think you need a degree. \n\njerry: yeah. that's true. \n\nkramer: (seeing jerry is with people) oh. \n\njerry: what? (kramer hands jerry an envelope) my god, the money! the 1500! where'd you find it? \n\nkramer: it was in my laundry. \n\njerry: in your laundry the whole time? i told you not to mix in our guys. what did we figure the damage on that machine would be? \n\nkramer: it was about 1200 bucks. \n\nnewman: kramer! \n\nkramer: oh! that's newman. (goes over to the window) \n\nnewman: i'm on the roof! \n\nkramer: (yelling up) well, what are you waiting for? \n\njerry: elaine, come on, take a walk with me down to the laundromat. i gotta pay this guy the money.. \n\ngeorge: (talking to nobody) i like horses. maybe i could be a stable boy. \n\nkramer: you wanna shoot some pool tonight? \n\nnewman: i can't. i'm goin' to a movie. \n\ngeorge: (talking to nobody) nah. it's probably a union thing. \n\njerry: people like the idea of revenge. have you ever heard the expression 'the best revenge is living well' i've said this, in other words it means supposedly the best way to get back at someone is just by being happy and successful in your own life. sounds nice, doesn't really work on that charles bronson. kinda level. you know what i mean, those movies where his whole family gets wiped out by some street scum. you think you could go up to him, 'charlie forgot about the 357 what you need is a custom-made suit and a convertible. new carpeting, french doors, a divan. that'll show those punks.' \n\n[setting: night club] \n\njerry: you know, i tell ya, i gotta say that i'm enjoying adulthood. for a lot of reasons. and, i'll tell you reason number one as an adult, if i want a cookie, i have a cookie, okay? i have three cookies or four cookies, or eleven cookies if i want. many times i will intentionally ruin my entire appetite. just ruin it. and then, i call my mother up right after to tell her that i did it. \"hello, mom? yeah, i just ruined my entire appetite.. cookies.\" so what if you ruin.. see, because as an adult, we understand even if you ruin an appetite, there's another appetite coming right behind it. there's no danger in running out of appetites. i've got millions of them, i'll ruin them whenever i want! \n\n[setting: jerry's apartment] \n\ntv voice: (germanic) look, sigmund. look in the sky. the planets are on fire. it is just as you prophesied. the planets of our solar system, incinerating. like flaming globes, sigmund. like flaming globes.. ah, ha, ha, ha.. \n\n[setting: jerry's bedroom] \n\n[setting: coffee shop] \n\nelaine: what do you got, a cucumber? \n\ngeorge: yeah, so what? \n\nelaine: you're bringing in an ouside cucumber? \n\ngeorge: they refuse to put cucumber in the salad. i need cucumber. \n\njerry: (trying to read the note) what have i done? i can't read this! ful-hel-mo-nen-ter-val? i got up last night, i wrote this down, i thought i had this great bit. \n\nelaine: no. let me see that. (takes the paper from jerry) don't-mess-with-johnny.\" \n\njerry: johnny? johnny who? johnny carson? did i insult johnny on the tonight show? \n\nelaine: (joking) did you mess with johnny, jerry? \n\ngeorge: let me see that. (studies the note) \n\nelaine: hey, where's kramer? \n\njerry: i don't know. that's like asking \"where's waldo?\" \n\ngeorge: (still holding the note) i think i'm having a heart attack. \n\njerry: i don't think that's it. \n\ngeorge: i'm not kidding. \n\njerry: what does that mean? \n\nelaine: i think what he's trying to say is that he's having a heart attack. \n\njerry: oh, he's having a heart attack. \n\ngeorge: tightness.. \n\njerry: c'mon. \n\ngeorge: shortness of breath.. \n\njerry: oh, this is ridiculous. \n\ngeorge: radiating waves of pain.. \n\njerry: i know what this is. you saw that show on pbs last night, coronary country. (to elaine) i saw it in the tv guide. i called him and told him to make sure and not watch it. \n\ngeorge: there was nothing else on. oh, the left arm.. the left arm. \n\njerry: (to elaine) he saw that show on anorexia last year, and ate like an animal for two weeks. \n\ngeorge: why can't i have a heart attack? i'm allowed. \n\njerry: so what do you want? you want me take you to the hospital? \n\ngeorge: manhattan memorial, less of a line. \n\njerry: i'll call an ambulance. (exits) \n\nwaitress: is everything alright? \n\ngeorge: we'll just take a check. (she leaves the check. george, in all his cheapness, can't help but to review the check. he finds an error) you made a mistake on the.. \n\nelaine: george! \n\n[setting: hospital room] \n\nman: ooohhh... argghhh.. \n\ngeorge: are.. are you okay? \n\nman: ooooooohhh.. \n\ngeorge: i'm george.. george costanza.. i've never been in the hospital a day in my life.. except when i had my tonsils out. you know, they never gave me any ice cream. i always felt that- \n\nman: shut up! \n\njerry: well? what do you think? \n\nnurse 1: \"salami, salami, bologna.\" definitely. \n\njerry: \"salami salami bologna\"? \n\ndoctor: (in a hurry) oh, your friend's fine. he didn't have a heart attack. i'll be in - in a few minutes. \n\njerry: (sarcastic) what a surprise. (enters george's room overly sympathetic - leading george to think that the doctor told jerry something significant) hey, how ya doin' buddy? you need anything? do you want me to go out and get you a superman comic? \n\ngeorge: no, no thanks. \n\njerry: (still going along with the practical joke) you know, i was wondering.. you know that black hawks jacket you have? \n\ngeorge: oh, sure, my black hawks jacket. i love my black hawks jacket. \n\njerry: well, you know, i was thinking - if things don't exactly work out.. \n\ngeorge: well, it wouldn't fit you. the sleeves are too short. \n\njerry: no, i tried it on. it fits good. \n\ngeorge: well, i didn't really think about what i was gonna do with all.. \n\njerry: well, you know.. \n\ngeorge: (reluctantly) well, okay. \n\njerry: oh, and.. do you think it would be alright if i called susan davis? \n\ngeorge: susan davis? (getting possessive) hey, wait a second.. \n\njerry: well, it's not like we'd be bumping into you. \n\ngeorge: i don't know.. you and susan davis? \n\njerry: you know, if your future was a little more certain.. \n\ngeorge: okay, go ahead. call her, get married, have babies, have a great life.. what do i care? i'm finished. (really depressed) it's all over for me. in fact, let's end it right now. jerry, kill me, kill me now. i'm begging you. let's just get it over with. be a pal.. just take the pillow and put it over my face. \n\njerry: well, ah.. (takes his pillow) what? kind of like this? (violently smothers george with the pillow. george freaks out. he didn't think jerry would actually do it) \n\ngeorge: what are ya doing?! whadya, crazy?! \n\nelaine: jerry! \n\njerry: (acts like he was cought red-handed) elaine, what are you doing here? (takes the pillow off george, and puts it back on his bed) \n\ngeorge: (to jerry) jerk off. \n\njerry: (whispering) there's nothing wrong with him. i saw the doctor. he's fine. \n\nelaine: hi, george. how ya feeling? is anybody getting your apartment? \n\ngeorge: i'll tell ya, if i ever get out of here, i'm gonna change my life. i'm gonna do a whole zen thing. take up yoga, meditate.. i'll eat right. calm down, lose my anger.. (sees jerry and elaine aren't listening. he snaps) hey, is anybody listening?! \n\ndoctor: (to elaine) uh, hello. (to george) uh, mr. costanza? \n\ngeorge: (panicky) uh, yeah. you know, doctor, i gotta tell you, i feel a lot better. \n\ndoctor: well, we looked at your ekg's, ran some tests, did a complete work-up. \n\ngeorge: (getting in a more panicked state) oh god, mommy! \n\ndoctor: and you simply haven't had a heart attack. \n\ngeorge: (relieved) i haven't? i'm okay? i'm okay? oh, thank you, thank you, doctor! i don't know how to thank you. \n\njerry: (sarcastic) hey, that was really fun, george. can we go home now? \n\ndoctor: no, actually, we'd like to keep him here overnight for observation, just to be safe. \n\ngeorge: oh, sure. sure, anything. can you believe it? there's nothing wrong with me. \n\ndoctor: well, i wouldn't go that far. \n\ngeorge: (starting to panic again) what? oh my god. what? is it meningitis? scoliosis? lupis?! is it lupis?! \n\ndoctor: have you ever had your tonsils taken out? \n\ngeorge: my tonsils? yeah, when i was a kid. \n\ndoctor: well, they've grown back. your adenoids are swollen too. \n\ngeorge: really? \n\nelaine: (jokingly hits the doctor) whose tonsils grow back? (laughs) \n\ndoctor: it happens. \n\njerry: yeah, if you've been exposed to gamma rays. \n\nelaine: i still have my tonsils. everyone in my family has their tonsils. in fact, we were forbidden to socialize with anyone who didn't have their tonsils. \n\ndoctor: that's interesting. because, no one in my family has their tonsils, and we were forbidden to socialize with tonsil people. \n\njerry: (sarcastically) well, it's like the capulets and the montagues. \n\ngeorge: (drawing attention back to him) excuse me! \n\ndoctor: anyway, i strongly recommend they come out. \n\ngeorge: what? you mean with a knife? \n\ndoctor: yes. with a knife. you know, snip, snip. anyway, you'd be completely under, you wouldn't feel a thing. and when you wake up, you can have some ice cream. \n\ngeorge: (angry) yeah, that's what they told me the last time. \n\ndoctor: think about it. (turns to leave, but runs into elaine) excuse me. \n\nelaine: (flustered) oh, i'm sorry. (doctor exits) i just.. have to ask that doctor one more question. (leaves) \n\njerry: women go after doctors like men go after models. they want someone with knowledge of the body.. we just want the body. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: boy, they got a great cafeteria downstairs. hot food, sandwiches, a salad bar.. it's like a sizzler's opened up a hospital! (sits and starts eating) so, how did you have a heart attack? you're a young man. what were you doing? are they gonna do a zipper job? oh, they love to do zipper jobs. \n\njerry: (trying to shut him up) kramer. \n\nkramer: the really bad thing about the heart is the sex thing. see, you gotta be careful about sex now. you get that heart pumping and suddenly, boom! next thing you know, you got a hose coming out of your chest attached to a piece of luggage. \n\njerry: kramer, george didn't have a heart attack. \n\nkramer: no? that's good. \n\ngeorge: i have to have my tonsils taken out. \n\nkramer: oh man.. no.. george, we gotta get you outta here. get out! right now! they'll kill ya in here. \n\njerry: (trying to calm george down) it's routine surgery. \n\nkramer: oh yeah? my friend, bob saccomanno, he came in here for a hernia operation.. oh yeah, routine surgery.. now he's sittin' around in a chair by a window going, \"my name is bob\" .. george, whatever you do, don't let 'em cut you. don't let 'em cut you.. \n\ngeorge: well, what should i do, kramer? \n\njerry: well, for one think, don't listen to him. \n\nkramer: i'll tell you what to do, i'll tell you what to do. you go to tor eckman. tor, tor, he'll fix you right up. he's a herbalist, a healer, george. he's not just gonna fix the tonsils and the adenoids, he is gonna change the whole way you function - body and mind. \n\njerry: eckman? i thought he was doing time? \n\nkramer: no, no, he's out. he got out. see, the medical establishment, see, they tried to frame him. it's all politics. but he's a rebel. \n\njerry: a rebel? no. johnny yuma was a rebel. eckman is a nut. george, you want to take care of your tonsils, you do it in a hospital. with a doctor. \n\nkramer: he's holistic, george. he's holistic. \n\ngeorge: holistic.. that sounds right. \n\njerry: george, you need a medical doctor. \n\ngeorge: (to jerry) let me ask you something.. how much do you think it would cost to have tonsils and adenoids removed in the hospital? \n\njerry: well, an overnight stay in a hospital? minor surgery? i dunno, four grand. \n\ngeorge: uh-huh. and how much does the healer charge? \n\nkramer: first visit? thirty-eight bucks. \n\ngeorge: oh, yeah? holistic.. that's what i need. that's the answer. \n\n[setting: healer's apartment] \n\ngeorge: so, how do you like the way i talked you into comin' down here? \n\njerry: don't flatter yourself, my friend. i'm here strictly for material, and i have a feeling this is a potential gold mine.. i still think you're nuts, though. \n\ngeorge: all i know is i've been going to doctors all my life. what has it gotten me? i'm thirty-three years old. i haven't outgrown the problems of puberty, i'm already facing the problems of old age. i completely skipped healthy adulthood. i went from having orgasms immediately to taking forever. you could do your taxes in the time it takes me to have an orgasm. i've never had a normal, medium orgasm. \n\njerry: (jokingly making fun of george) i've never had a really good pickle. \n\ngeorge: besides, what's it gonna cost me? thirty-eight bucks? \n\ntor: (to jerry) would you not put your foot on that please? \n\njerry: sorry. \n\ntor: what month were you born? \n\ngeorge: april. \n\ntor: you should have been born in august. your parents would have been well-advised to wait. \n\ngeorge: really? \n\ntor: do you use hot water in the shower? \n\ngeorge: yes. \n\ntor: stop using it. \n\ngeorge: ..okay. \n\nkramer: i'm off hot water. \n\ntor: kramer tells me that you are interested in an alternative to surgery. \n\ngeorge: yes, yes i am. \n\ntor: (blows into george's face) i think we can help you. see, unfortunately, the medical establishment is a business like any other business. and business needs customers. and, they want to sell you their most expensive item which is unnecessary surgery. \n\ngeorge: (still on the showers) can i use hot water on my face? \n\ntor: no. you know, i am not a business man. i'm a holistic healer. it's a calling, it's a gift. you see, it's in the best interest of the medical profession that you remain sick. you see, that insures good business. you're not a patient. you're a customer. \n\njerry: (he thinks this, the audience can hear his thoughts) and you're not a doctor, but you play one in real life. \n\ngeorge: (still on the hot water) what about shaving? \n\ntor: (to jerry) you're eating too much dairy. (to george) may i? (reaches over, and touches george's face) \n\ngeorge: i guess so. \n\ntor: (feeling george's face) you see, you are in disharmony. the throat is the gateway to the lung. tonsillitis, adenoiditis, is, in chinese medical terms, and invasion of heat and wind. \n\njerry: (again, we hear his thoughts) there's some hot air blowing in here.. \n\ntor: you know, i lived with the eskimos many years ago, and they used to plunge their faces into the snow. \n\ngeorge: (once again, still on the shower) could it be lukewarm? \n\njerry: too much dairy? you really think i'm eating too much dairy? \n\n[setting: doctor's car] \n\ndoctor: ..the tongue.. yes, the tongue.. or, in medical terms, the glossa. it's a muscular organ.. consists of two parts.. the body, and the root.. you see, it's covered by this mucous membrane.. these little raised projections are the papillae, which give it that furry appearance. very tactile.. \n\nelaine: uh-huh. \n\n[setting: healer's apartment] \n\ntor: (pouring tea) your tea is ready now. this will solve your so-called tonsil problem. it's a special concoction. it contains crampbark. \n\njerry: i love crampbark. \n\ntor: cleavers. \n\njerry: cleaver, i once had cleaver as a kid. i was able to lift a car. \n\ntor: and some couchgrass. \n\njerry: couchgrass and crampbark? you know, i think that's what killed curly. \n\nkramer: go ahead, drink it, george. \n\njerry: excuse me, tor. may i ask you a question? you have intuitive abilities. you're in touch with a lot of this cosmic kind of things.. i have this note i can't read. i was wondering if- \n\ntor: (takes the note, then laughs when he reads it) oh, yes.. yes.. \"cleveland 117, san antonio 109.. (hands note back to jerry) \n\nkramer: go ahead, drink it, george. \n\ngeorge: (takes a sip) hey, it's not too bad.. \n\n[setting: ambulance] \n\ngeorge: (in a state of hysteria) i'm an eggplant! i'm an eggplant! i'm a minstrel man! \n\ndriver: (to assistant) i didn't take your chuckle, man! \n\nassistant: i had five chuckles. i ate a green one, and the yellow one, and the red one is missing! \n\ndriver: i don't even like chuckles! \n\njerry: (to assistant) maybe he doesn't like them. that's possible. \n\ngeorge: my face! my face! get me to the hospital! \n\nassistant: i want that chuckle! you hear me?! \n\njerry: (to assistant) i'll get you a chuckle. you want me to get you a chuckle? \n\nassistant: (angry, to driver) pull over! \n\ndriver: pull over? did you say pull over?! you want a piece of me?! \n\nassistant: yeah! \n\njerry: you're gonna fight? \n\ngeorge: now?! i'm a mutant! \n\nkramer: (to driver) hey, let me drive. \n\nassistant: come on, man. pull over! \n\ndriver: alright! i'm gonna mess you up, man! \n\njerry: (pleading) really, gentlemen, please. \n\ngeorge: my heart! my heart! (to assistant) where you going? are you crazy?! \n\nassistant: i'm gonna kick his ass. \n\nkramer: (to assistant) hey, you have keys? \n\ngeorge: you can't leave! this is an ambulance! this is an emergency! \n\njerry: all this for a chuckle. \n\nkramer: what's a chuckle? \n\njerry: it's a jelly candy. it comes in five flavors. \n\n[setting: doctor's car] \n\ndoctor: you see, taste buds run on grooves along the surfaces. \n\nelaine: can you let go of my tongue now? \n\ndoctor: what? \n\nelaine: let go of my tongue! \n\ndoctor: (lets go) oh, sorry. \n\nelaine: well, i should get going.. (the doctor leans in for a kiss. elaine stops him) what are you doing? \n\ndoctor: i was going to kiss you good night. \n\nelaine: a kiss? with the tongue? the glossa with the bumps and the papillae? ..yech, i don't think so. (leaves) \n\n[setting: ambulance] \n\njerry: you just can't leave him out there. \n\ndriver: i told him i was gonna mess him up. \n\nkramer: well, can you call him an ambulance? \n\ndriver: i told him i didn't take his chuckle. i don't eat that gooey crap! \n\nkramer: hey, watch the road! watch the road, man! \n\ndriver: (turns back, facing kramer) hey, man, you want some of what he got?! \n\njerry and kramer: watch out! \n\n[setting: hospital room] \n\njerry: how ya doing? (george nods) can't talk? (george shakes his head. jerry gestures to his brace) hey, how'd you get the plastic one? (george raises his eyebrows) i like that. (george sticks his tongue out) so how's life without tonsils? (george quickly indicates with his arm that he wants ice cream) what? what's that? ..so, how much is this thing gonna cost you now? like, five, six thousand?.. (george signals that it's more) well, live and learn.. at least we lived. kramer went to eckman.. he feels better alreadyy.. (george motions for ice cream again) what are you doing? \n\nelaine: oh, poor george. oh, i'm sorry, but i can't stay long. i don't want to run into doctor tongue.. here, i brought you something. (takes out a pint of ice cream. george gets excited) oh, please, come on.. it was nothing. \n\njerry: hey, check the tv. \n\ntv voice: (germanic) it's just as you prophesied. the planets of our solar system, incinerating. like flaming globes, sigmond. like flaming globes. ah, ha, ha, ha.. \n\njerry: (pulls the note out of his pocket) that's it! that's it! flaming globes of sigmond! flaming globes of sigmond! that's my note! tha'ts what i thought was so funny?! ..that's not funny.. there's nothing funny about that. \n\nman in neighboring bed: shut up! \n\nman: aaahhhgggg! \n\n[setting: night club] \n\njerry: i have a friend who's a hypochondriac, always thinks he's sick - never is. and they, you have another type of person, always thinks they're well, not matter how bad they really are. you know this type of person? very annoying. \"feel great.. like being on the respirator.. intravenous heart/lung machine. i never felt better in my life.\" medical science is making advances every day in control health problems. in fact, it's probably only a matter of time before a heart attack, you know, becomes like, a head ache. we'll just see people on tv going, \"i had a heart attack this big (holds out hands, gesturing bigness) ..but, i gave myself one of these. clear! (puts imaginary electrode panels to his chest) brrhht.. and it's gone!\" \n\njerry: what are you doing? all right, all right. what's the matter with that? what about that one? \n\nelaine: robert vaughn, the helsinki formula? \n\njerry: he was good in man from uncle. \n\nelaine: guess whose birthday's comin' up soon? \n\njerry: i know, i'm having my root canal the same week. \n\nelaine: oh, right. i hope you have a good oral surgeon because that can be very serious. (changes channel) hey, look at naked people. \n\njerry: no, i don't wanna see the naked people. \n\nelaine: been a while? \n\njerry: i have a vague recollection of doing something with someone, but it was a long, long time ago. \n\nelaine: i think my last time was in rochester. my hair was a lot shorter. \n\njerry: i remember that it's a good thing. someday, i hope to do it again. (jerry looks at elaine) \n\nelaine: what? \n\njerry: what? \n\nelaine: what was that look? \n\njerry: what look? \n\nelaine: the look you just gave me. \n\njerry: i gave a look? \n\nelaine: yes. \n\njerry: what kind of look? \n\nelaine: i know that look. \n\njerry: then what was it? \n\nelaine: why should i tell you? \n\njerry: well, you're the big look expert. i wanna see how smart you are. \n\nelaine: trust me. i know the look. (pause) so... \n\njerry: what? \n\nelaine: what about the look? \n\njerry: i don't know. \n\nelaine: you got something on your mind? \n\njerry: no. things pop into your head. you? \n\nelaine: things occur to me from time to time. \n\njerry: yeah, me too. well, you can't expect to just forget the past completely. \n\nelaine: no, of course not. \n\njerry: i mean, it was something we did. probably about, what? twenty-five times? \n\nelaine: thirty-seven. \n\njerry: yeah, we pretty much know what we're doin' in there. (points to bedroom) \n\nelaine: we know the terrain. \n\njerry: no big surprises. \n\nelaine: nope. \n\njerry: what do you think? \n\nelaine: i don't know. what do you think? \n\njerry: well, it's something to consider. \n\nelaine: yeah. \n\njerry: i mean, let's say we did. \n\nelaine: what if. \n\njerry: is that like the end of the world or something? \n\nelaine: certainly not. \n\njerry: why shouldn't we be able to do that once in a while if we want to? \n\nelaine: i know. \n\njerry: i mean, really, what is the big deal? we go in there. (points to the bedroom) we're in there for a while. we come right back out here. it's not complicated. \n\nelaine: it's almost stupid if we didn't. \n\njerry: it's moronic. \n\nelaine: absurd! \n\njerry: of course, i guess, maybe, some little problems could arise. \n\nelaine: we, there are always a few. \n\njerry: i mean, if anything happened, and we couldn't be friends the way we are now, that would be really bad. \n\nelaine: devastating. \n\njerry: because this is very good. (points back and forth between them to indicate friendship) \n\nelaine: and that would be good. (points to bedroom) \n\njerry: that would be good too. the idea is combine the this and the that. but this cannot be disturbed. \n\nelaine: yeah, we just wanna take this and add that. \n\njerry: but of course, we'd have to figure out a way to avoid the things that cause the little problems. maybe some rules or something. \n\nelaine: huh. \n\njerry: for example, now, i call you whenever i'm inclined and vice versa. \n\nelaine: right. \n\njerry: but if we did that, we might feel a certain obligation to call. \n\nelaine: well why should that be? oh, i have an idea. i have an idea. no call the day after that. \n\njerry: beautiful. let's make it a rule. \n\nelaine: all right, sir. \n\njerry: now here's another little rule. \n\nelaine: yeah. \n\njerry: when we see each other now, we retire to our separate quarters. but sometimes, when people get involved with that, they feel pressure to sleep over. when that is not really sleep. sleep is separate from that. and i don't see why sleep got all tied up and connected with that. \n\nelaine: okay, okay. rule number two. spending the night is optional! \n\njerry: well now we're gettin' somewhere. \n\nelaine: what about the kiss goodnight? \n\njerry: tough one. you're call. \n\nelaine: it's brug-wa (?). \n\njerry: fine. well. \n\nelaine: well. \n\njerry: you ready? \n\nelaine: ready. \n\njerry: so think you can handle this? \n\nelaine: definitely. (runs into bookshelf) \n\nkramer: hey. \n\njerry: hey. \n\nkramer: got the paper? \n\njerry: not yet. \n\nkramer: no paper? \n\njerry: i haven't been out yet. \n\nkramer: well, what's taking you so long? (elaine enters from the bedroom. kramer is a little shocked) uh? oh, well, yeah... (he exits) \n\ngeorge: what's the deal with aquaman? could he go on land, or was he just restricted to water? \n\njerry: no, i think i saw him on land a couple times. so how's the job situation goin'? \n\ngeorge: still lookin'. it's pretty bad out there. what about you? \n\njerry: nothin' much. i slept with elaine last night. \n\ngeorge: oxygen! i need some oxygen! this is major. \n\njerry: i thought you'd like that. \n\ngeorge: oh, this is huge! \n\njerry: i know. \n\ngeorge: all right, okay. let's go, details. \n\njerry: no, i can't do details. \n\ngeorge: you wha? \n\njerry: i can't give details. \n\ngeorge: no details? \n\njerry: i'm not in the mood. \n\ngeorge: you ask me here to have lunch, tell me you slept with elaine, and then say you're not in the mood for details. now you listen to me. i want details and i want them right now. i don't have a job, i have no place to go. you're not in the mood? well you get in the mood! \n\njerry: all right, okay. we're in the apartment watching tv. \n\ngeorge: where are you sitting? \n\njerry: on the couch. \n\ngeorge: next to each other? \n\njerry: no, separated. \n\ngeorge: time? \n\njerry: around eleven. \n\ngeorge: okay, go ahead. \n\njerry: so she's flipping around the tv, and she gets to the naked station. \n\ngeorge: oh, see? that's why i don't have cable in my house. because of that naked station. if i had that in my house, i would never turn it off. i wouldn't sleep, i wouldn't eat. eventually, firemen would have to break through the door, they'd find me sitting there in my pajamas with drool coming down my face. all right, all right. so you're watching the naked station. \n\njerry: and then, somehow, we started talking about, what if we had sex. \n\ngeorge: boy, these are really bad details. \n\njerry: it pains me to say this, but i may be getting to mature for details. \n\ngeorge: oh i hate to hear this. that kind of growth really irritates me. \n\njerry: well. i'll tell you though. it was really passionate. \n\ngeorge: better than before? \n\njerry: she must've taken some kind of seminar or something. \n\ngeorge: this is all too much. so what are you feeling? what's going on? are you like a couple again now? \n\njerry: not exactly. \n\ngeorge: not exactly. what does that mean? \n\njerry: well, we've tried to arrange a situation where we'll be able to do this once in a while and still be friends. (george laughs hysterically and stands out of his seat) \n\ngeorge: where are you living? are you here? are you on this planet? it's impossible. it can't be done. \n\njerry: i think we've worked out a system. \n\ngeorge: oh, you know what you're like? you're like a pathetic gambler. you're one of those losers in las vegas who keeps thinking he's gonna come up with a way to win at blackjack. \n\njerry: no, this is very advanced. we've designed at set of rules that we can maintain the friendship by avoiding all of the relationship pitfalls. \n\ngeorge: sure, all right. tell me the rules. \n\njerry: okay. no calls the next day. \n\ngeorge: (to himself) so you're havin' the sex, next day you don't have to call. that's pretty good. (back to jerry) go ahead. \n\njerry: you ready for the second one? \n\ngeorge: i have tell you, i'm pretty impressed with the first one. \n\njerry: spending the night. optional. \n\ngeorge: no, you see? you got greedy. \n\njerry: no, that's the rule. it's optional. \n\ngeorge: i know less about women than anyone in the world. but one thing i do know is they're not happy if you don't spend the night. it could be a hot, sweaty room with no air conditioning and all they have is a little army cot this wide (displays with french fry) you're not going anywhere. \n\njerry: i think you're wrong. \n\ngeorge: i hope i am. \n\njerry: is this yours or the roommate's? \n\nelaine: the roommate's. \n\njerry: would she mind? \n\nelaine: she keeps track of everything. \n\njerry: well, that's too bad, 'cause i'm takin' it. \n\nelaine: thanks. \n\njerry: well, guess i'll get going. \n\nelaine: oh. \n\njerry: well, i got that root canal tomorrow morning. it'll be easier if i go home. \n\nelaine: fine, go away. \n\njerry: i don't understand. is there a problem? (elaine is pulling a roll of paper towels about twenty feet long) i'm getting the impression there's a problem. \n\nelaine: just go. \n\njerry: i'm having surgery tomorrow. \n\nelaine: oh, surgery. you're going to the dentist. \n\njerry: but you said, it can be very serious. \n\nelaine: okay, so fine. go. \n\njerry: what happened to the rules? remember? sleeping over was optional. \n\nelaine: yeah, it's my house, it's my option. \n\njerry: it has nothing to do with whose house it is. \n\nelaine: oh, of course it does. (elaine's roommate, tina, enters) \n\ntina: hi. \n\nelaine + jerry: hi. \n\ntina: hi, jerry. \n\njerry: hi. \n\ntina: such a great improv class tonight. \n\nelaine: oh really? \n\ntina: i had this improv where i pretended i was working in one of those booths. you know, in the amusement park, where you have to shoot the water in the clown's mouth and you have to blow up the balloon. \n\nelaine: uh, tina? could you excuse us for just one second? \n\ntina: oh, yeah. i'll excuse you. (she walks away) \n\nelaine: what are you doing? \n\njerry: i can't go if you're mad. \n\nelaine: i'm not mad. \n\njerry: you seemed a little mad. \n\nelaine: no, no. jerry, i'm fine really. it's okay. \n\njerry: so you're okay with everything? \n\nelaine: definitely. are you? \n\njerry: definitely. well, goodnight. \n\nelaine: goodn-- (he starts to kiss her) what're you doing? \n\njerry: what? \n\nelaine: rules. \n\ntina: hey, who took my cake? (jerry exits quickly) \n\ngeorge: what about jewelry? that's very nice gift. \n\njerry: no, no. i have to be very careful here. i don't want to send the wrong message. especially after the other night. \n\ngeorge: maybe i'll get her some jewelry. \n\njerry: no, no. you can't get her anything better than me. whatever i spend, you have to spend half. \n\ngeorge: what am i supposed to get, a bazooka? \n\njerry: you don't understand. i'm in a very delicate position. whatever i give her, she's going to be bringing in experts from all over the country to interpret the meaning behind it. \n\ngeorge: what does she need? maybe there's something that she needs. \n\njerry: i think i heard her say something about a bench. \n\ngeorge: a bench? what kind of a bench? \n\njerry: i don't know, but she mentioned a bench. \n\ngeorge: what, like at a bus stop? \n\njerry: i don't know. \n\ngeorge: like a park bench? \n\njerry: i have no idea. \n\ngeorge: who puts a bench in their house? \n\njerry: forget the bench. \n\ngeorge: i got it. you wanna get her something nice? how 'bout a music box? \n\njerry: no, too relationshippy. she opens it up, she hears that laura's theme, i'm dead. \n\ngeorge: okay, what about a nice frame? with a picture of another guy in it. frame says i care for you, but if you wanna get serious, perhaps you'd be interested in someone like this. \n\njerry: nice looking fellow. \n\ngeorge: what about candle holders? \n\njerry: too romantic. \n\ngeorge: lingerie? \n\njerry: too sexual. \n\ngeorge: waffle maker. \n\njerry: too domestic. \n\ngeorge: bust of nelson rockefeller. \n\njerry: too gubernatorial. (?) \n\ngeorge: let's work on the card. \n\njerry: maybe you won't like it. \n\nelaine: oh, how could i not like it? of course i'll like it. \n\njerry: you could not like it. \n\nelaine: just the fact that you remembered means everything. \n\njerry: of course i remembered. you reminded me everyday for two months. oh, the card. (she opens) \n\nelaine: cash? \n\njerry: would do you think? \n\nelaine: you got me cash? \n\njerry: well this way i figure you can go out and get yourself whatever you want. no good? \n\nelaine: who are you, my uncle? \n\njerry: well come on. that's $182 right there. i don't think that's anything to sneeze at. \n\nelaine: let me see the card. (reading) to a wonderful girl, a great pal, and more? (kramer enters) \n\nkramer: hey. oh, elaine. i'm glad you're here. stay right there. i'm gonna be right back. (he exits) \n\nelaine: pal? you think i'm your pal? \n\njerry: i said, \"and more.\" \n\nelaine: i am not your pal. \n\njerry: what's wrong with pal? why is everyone so down on pal? (kramer enters with present) \n\nelaine: oh, what is this? you got me something? \n\nkramer: yeah. open it. \n\nelaine: oh kramer... (she opens it) the bench! you got me the bench that i wanted! (jerry looks irritated) \n\nkramer: that's pretty good, huh? \n\njerry: great. \n\nkramer: remember when we were standing there and she mentioned it? i made a mental note of it. \n\njerry: well goody for you. \n\nkramer: oh yeah, i'm very sensitive about that. i mean, when someone's birthday comes up, i keep my ears open. so what'd you get her? \n\njerry: 182 bucks. \n\nkramer: cash? you gotta be kidding. what kind of gift is that? that's like something her uncle would get her. \n\nelaine: (reading card) think where man's glory most begins and ends and say my glory was i had such a friend. \n\nkramer: (to jerry) yates. \n\nelaine: oh kramer. (they embrace) \n\njerry: could you excuse us please? \n\nkramer: what? \n\njerry: we're talking. \n\nkramer: oh, the relationship. (he leaves) \n\njerry: you know, we never had one fight before this deal. \n\nelaine: i know. \n\njerry: never. \n\nelaine: ever. \n\njerry: we got along beautifully. \n\nelaine: like clams. \n\njerry: it was wonderful. \n\nelaine: a pleasure. \n\njerry: so i think we should just forget the whole deal, and go back to being friends. \n\nelaine: i can't do it. \n\njerry: you what? \n\nelaine: i can't do that. \n\njerry: you mean it's... (she nods) no this. no that. no this or that. oh, boy. hmmm. what do you want? \n\nelaine: this, that, and the other. \n\njerry: oh, sure. of course, you're entitled. who doesn't want this, that, and the other? \n\nelaine: you. \n\njerry: (starts to correct then realizes) well... \n\ngeorge: those birthdays. i told you. they're relationship killers. if a relationship is having any problems whatsoever, a birthday will always bring it out. \n\njerry: i never should have made up those rules. \n\ngeorge: what is it about sex that just disrupts everything? is it the touching? is it the nudity? \n\njerry: it can't be the nudity. i never got into these terrible fights and misunderstandings when i was changing before gym class. \n\ngeorge: you know what this means? i can't see her anymore either. \n\njerry: why? \n\ngeorge: it's break up by association. besides, she's mad at me anyway because of my birthday present. \n\njerry: what did you end up giving her? \n\ngeorge: 91 dollars. \n\njerry: sorry about that. \n\ngeorge: so what're you gonna do? \n\njerry: well, if i call her, there's no joking around anymore. this is pretty much it. \n\ngeorge: so, maybe this should be it. \n\njerry: could be it. \n\ngeorge: she seems like an it. \n\njerry: she's at it as you get. imagine bumping into her on the street in five years with a husband. and she tells me he's a sculptor, they live in vermont... \n\ngeorge: we'd have to kill him. \n\njerry: we'd get caught, i'd get the chair. \n\ngeorge: i'd go to prison as your accomplice. i'd have to wear that really heavy denim. go to the cafeteria line with the guy who slops those mashed potatoes onto your plate. go to the bathroom in front of hundreds of people. \n\njerry: plus, you know what else. \n\ngeorge: you better call her. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: you got the paper yet? \n\njerry: yeah. \n\nkramer: well where is it? (elaine enters from bedroom with newspaper) hey, you done with that? \n\nelaine: no. \n\nkramer: well, you're not reading it now. \n\nelaine: all right, you can take it. but i want it back. \n\nkramer: oh yeah. so, ah, what're you guys gonna do today? \n\nelaine: ah, this. and that. \n\njerry: and the other. \n\nkramer: boy, i really liked the two of you much better when you weren't a couple. (he exits) \n\n[setting: night club] \n\njerry: men flip around the television more than women, i think. men get that remote control in their hands, they don't even know what the hell they're watching. you know, we just keep going, \"rerun, don't wanna watch it.. \" \"what are you watching?\" \"i don't care, i gotta keep going.\" \"who was that?\" \"i don't know what it was - doesn't matter, it's not your fault. it doesn't matter, i gotta keep going.\" women don't do this. see now, women will stop and go, \"well, let me see what the show is before i change the channel.\" you see? men just fly. because women, you see, women nest and men hunt. that's why we watch tv differently. before there was flipping around, before there was television, kings and emperors and pharaohs and such had story-tellers that would tell them stories 'cause that was their entertainment. i always wonder, in that era, if they would get, like, thirty story-tellers together so they could still flip around. just go, \"alright start telling me a story, what's happening? i don't want to hear anymore. shut up. go to the next guy. what are you talking about? is there a girl in that story? ..no? shut up. go to the next guy. what do you got? i don't want to hear that either. shut up. no, go ahead, what are you talking about?.. i don't want to hear that. no, the all of you, get out of here. i'm going to bed.\" \n\n[setting: coffee shop] \n\ngeorge: (shocked) she's pregnant? leslie is pregnant?! oh, see, there is no justice. \n\njerry: she's the performance artist, right? \n\ngeorge: (sarcastic) yeah, performance artist. she's a real performer. a real trooper. \n\njerry: what's her husband's name, again? chip? kip? skip? \n\nelaine: todd. \n\njerry: todd. oh yeah. (to george) he's a kennedy. \n\nelaine: no, he's not. \n\njerry: c'mon. he's a third cousin, or something. \n\nelaine: by marriage. \n\njerry: oh, by marriage. (to george) we went to their wedding. you should have heard him talking about chappaquiddick - trying to blame the whole thing on bad directions. \n\ngeorge: that woman was unequivocally the worst date of my life. \n\nelaine: oh, pardon me for trying to set you up with a beautiful, intelligent woman. \n\ngeorge: what, you don't think i can attract beautiful, intelligent women? \n\njerry: thin ice, george. thin ice.. \n\ngeorge: (sarcastic) maybe for her new performance piece she'll give birth on stage. \n\nelaine: she stopped performing. \n\ngeorge: (again, sarcastic) oh, what a huge blow to the culture. \n\njerry: (gesturing to george) you believe this guy? he holds a grudge like khomeini. \n\ngeorge: she dragged me down to that warehouse on the waterfront in brooklin to see one of her \"performances\". \n\njerry: oh, and she cooks dinner onstage for some celebrity? \n\ngeorge: god! she's cooking dinner for god! she's yelling and screaming, and the next thing i know, she throws a big can of chocolate syrup all over my new red shirt. \n\nelaine: it was an accident! \n\ngeorge: oh, yeah, sure, accident, right. she was aiming right at me like she was putting out a fire! then, for the rest of the show, i'm sitting there with chocolate all over my shirt. flies are landing on me. i'm boiling - i'm fantasizing all the things i'm gonna say when i see her. and later, finally, backstage when i talk to her, i'm a groveling worm. \"what kind of chocolate was that? do you throw any other foods?\" \n\njerry: (to elaine) he thought he still had a shot. \n\ngeorge: and then, then, then she leaves with somebody else! never even, never even said goodbye! never called me back.. never apologized. nothing. like i was dirt. \n\njerry: what ever happened with the shirt? \n\ngeorge: i still have it. the collar's okay. i wear it under sweaters. \n\nelaine: i don't know what i'm gonna do. she asked me to give her a baby shower. \n\njerry: asked you? you're not going to do that are you? \n\nelaine: anyone else, never. but, leslie - i have a problem saying no to. for some reason, i seem to want her approval. \n\ngeorge: let maria shriver give her a baby shower. \n\njerry: ask not what i can do for you - ask what you can do for me. \n\ngeorge: (germanic) ich bin ein sucker. \n\nelaine: oh, would you two stop with the kennedys? why does everybody make such a big deal about he kennedys? what is this fascination?! who cares?! it's all so boring.. \n\ngeorge: she doesn't deserve a baby shower. she deserves a baby monsoon. she deserves rosemary's baby! \n\nelaine: (to jerry) i do have one teeny little problem, though. \n\ngeorge: never said goodbye. never apologized. nothing. \n\nelaine: see, i was gonna give the shower in my apartment.. \n\njerry: but? \n\nelaine: my roommate has lyme disease. \n\njerry: lyme disease? i thought she had epstein-barr syndrome? \n\nelaine: she has this in addition to epstein-barr. it's like epstein-barr with a twist of lyme disease. \n\njerry: how did she get lyme disease? \n\nelaine: i don't know. she did some outdoor version of hair in danbury, connecticut. \n\njerry: they still do that play? \n\nelaine: it's a classic. \n\njerry: with all the nudity? \n\nelaine: i guess. she must've rolled over on a tick during the love-in. \n\ngeorge: (still mad a leslie) never said goodbye. goodbye! \n\njerry: explain to me how this baby shower thing works. \n\nelaine: what do you wanna know? \n\njerry: well, i mean, does it ever erupt into a drunken orgy of violence? \n\nelaine: rarely. \n\njerry: there's no hazing of the fetus, or anything, is there? \n\nelaine: no. \n\njerry: when is this suppose to be? \n\nelaine: saturday. \n\njerry: saturday?.. well, i have a show in buffalo on saturday. they're not gonna bust up my apartment, or anything, are they? \n\nelaine: i'll take full responsibility. you won't regret it. \n\njerry: 'cause i've seen these pregnant women - and they sometimes misjudge their fetal girth. just like one wrong turn, and boom! and entire buffet is swept off the table. \n\ngeorge: someday, before i die, mark my words - i'm gonna tell that woman exactly what i think of her. i'll never be able to forgive myself until i do. \n\njerry: and if you do? \n\ngeorge: i still won't be able to forgive myself - but at least it won't be about this. \n\n[setting: jerry's apartment] \n\nkramer: what are you doing this for? look at you.. \n\njerry: quiet. i'm trying to get a picture. \n\nkramer: but you don't have to do this! this guy is waiting in my house. \n\njerry: (pleading) leave me alone. \n\nkramer: it's a one-time fee. a hundred and fifty bucks. why live like this?! \n\njerry: i'm not getting illegal cable! \n\nkramer: oh, so what are you gonna do? you gonna wait for the cable companies to resolve their dispute? they're gonna be in court for years. \n\njerry: no, i read in the paper.. \n\nkramer: (sarcastic) oh, oh, the paper.. \n\njerry: well, they might hook us up again. \n\nkramer: oh, god, you're so naive! all the cable companies care about is the \"big mammoo.\" (jerry wacks the tv) oh, look at you! you're banging things.. pathetic. just wasting your life. i'm offering you fifty-six channels - movies, sports, nudity. and it's free! for life! \n\njerry: stop shouting! you're ruining the reception. \n\nkramer: can you hear yourself? can, can, do you know what you're saying?! \n\njerry: what you're suggesting is illegal. \n\nkramer: it's not illegal. \n\njerry: it's against the law. \n\nkramer: well, yeah. \n\njerry: (gesturing to the rabbit ears) just, just, hold this. can you hold that? \n\nkramer: (holding the rabbit ears) look, will you at least let me bring the guy over? he's an amazing man. he's a russian immigrant. he escaped the gulag. he's like the sakharov of cable guys.. he'll slow down your gas meter. he sells slugs, jerry. slugs for the subway. \n\njerry: a real human rights nut, huh? \n\nkramer: yeah. he's intense, man. \n\njerry: i don't know. what if i get caught? \n\nkramer: oh, you're not gonna get caught. look, let me get him. man, it's the nineties, it's hammer time! come on, just let me get him. \n\njerry: you know, why don't we wait? because, i'm going out of town tomarrow. \n\ntabachnick: tomarrow okay. \n\nkramer: no problem. yeah, you'll have the whole thing installed by the time you get back. \n\njerry: (mutters to himself) every time i turn on the tv, sirens are gonna go off. they're gonna track me down like a dog, i know it.. \n\nkramer: no, no, now look now, jerry, jerry, it's no risk. i swear. the mets have seventy-five games on cable this year.. \n\njerry: (pauses, thinking about what kramer just said) put it in. \n\nkramer: you won't regret it. (jerry mutters some more, kramer rubs his hands together in anticipation, then starts dancing around with a reluctant jerry) jerry's gonna be a cable boy, a cable boy, a cable boy.. \n\n[setting: jerry's apartment] \n\nman: mr. steinfeld? \n\njerry: seinfeld. \n\nman: we're with the fbi. you wanna tell us about your cable hook-up? \n\njerry: my cable hook-up? what about it? \n\nman: it's been illegally installed, mr. steinfeld. \n\njerry: it has? i've been out of town. how did you know? \n\nkramer: jerry, i had to tell them. i had to. i had no choice. they were onto the scam from the very beginning. \n\nman: you're in serious trouble, mr. steinfeld. \n\njerry: wait a minute. wait a minute, hold on! we're just patsies. we're just a couple of users.. we never sold the stuff. what about the russian guy? the russian guy is the guy you want. \n\ntabachnick: mr. seinfeld, agent stone. fbi. undercover. \n\nkramer: no! jerry! (the fbi agents open fire. jerry's gunned down by a hailstorm of bullets. kramer leans next to a fallen jerry, cupping jerry's head in his hands) cable boy, cable boy.. what have you done to my little cable boy?.. \n\n[setting: airplane] \n\njerry: excuse me. can i get something to drink? \n\nstewardess: i'm afraid not. \n\njerry: what's with this airline? what are you, cutting out the drinks now? \n\nstewardess: no sir. we're flying into a blizzard. please fasten your seat belt. we're making an emergency landing. \n\njerry: (sarcastic) are they gonna go over the instructions again? \n\nbill: my name is bill. i might be the last person you ever see. \n\n[setting: night club] \n\njerry: i'm not afraid of flying, although many people do have fear of flying and, i have no arguement with that. i think fear of flying is quite rational because, human beings cannot fly. humans have fear of flying same way fish have fear of driving. put a fish behind the wheel, and they go, \"this isn't right. i shouldn't be doing this. i don't belong here.\" \n\n[setting: george's car] \n\ngeorge: sounds like a rough trip. \n\njerry: oh, fire engines, ambulances all along the runway. and then, when we landed safely, they all seemed so disappointed. \n\ngeorge: so, the college cancelled the gig? \n\njerry: well, there was so much snow. the roads were closed. i really appreciate it - you picking me up. thanks again. \n\ngeorge: (modestly) forget it. \n\njerry: no, really.. an airport run. \n\ngeorge: it's nothing. \n\njerry: hey, it's one thing if i asked you \"could you do me a favor?\" ..but to suggest it?.. george (obviously up to something. jerry doesn't suspect anything - yet) whey you told me what you went through on the plane, it makes you stop and think. you appreciate having a real friend. \n\njerry: (joking) you know, if richie brandes did this, i'd be suspicious, you know. he's always got some ulterior motive. \n\ngeorge: (laughs nervously) ..ulterior motive. \n\njerry: oh, wait a minute. wait a minute. don't take the bridge.. get off here. we can't go back to my place, elaine's having the shower. \n\ngeorge: (obviously knows that, but pretends he doesn't) what, tonight? now? \n\njerry: yeah, yeah. i forgot all about it. alright, it's no big deal. we'll just go back to your place. \n\ngeorge: my place? no, no, no. i hate my place. i don't wanna go back to my place. \n\njerry: you want to get a bite? \n\ngeorge: yeah, i would. it's just, you know, i just ate a whole pot roast. \n\njerry: well, so what should we do? \n\ngeorge: shouldn't we at least drop off your bag? \n\njerry: red shirt! red shirt! that's the red shirt! \n\ngeorge: (nervous) what are you talking about? \n\njerry: you're wearing the chocolate shirt! \n\ngeorge: i am? what a strange coincidence.. \n\njerry: a - ha! nice try, my friend, but you gotta get up pretty early in the morning.. \n\ngeorge: (pleading) you gotta let me go over there. \n\njerry: what are you gonna do? badger a pregnant woman at her own baby shower?! what are you, gonna take it off and make her rinse it in club soda? \n\ngeorge: no, i'm gonna hold it under her nose so she can smell the scent of stale bosco that i had to live with for three years, and i'm gonna say, \"remember this shirt, baby?! well, now, it's payback time!\" \n\n[setting: jerry's apartment] \n\nleslie: we just bought an apartment on riverside drive. bernard goetz's mother used to live there. \n\nelaine: so, where's todd? \n\nleslie: up in hyannisport. \n\nelaine: oh my god, hyannisport? with the kennedys? who else is up there? is rose up there?! \n\nwoman: (to leslie) so, when's your due date? \n\nleslie: march twentieth, nine a.m. \n\nwoman: you know the time! \n\nleslie: i'm having a planned c-section. my therapist told me if i go through labor, i might get psychotic. \n\nelaine: leslie, leslie, whatever happened to sargent shriver? is he still with them? you don't hear much about him these days. is he out of the loop? \n\nleslie: (takes a bite of food) elaine, who catered this, sears? \n\nelaine: (whispering to kramer) what is this?! what are you doing here? \n\nkramer: we're putting in cable. \n\nelaine: the cable? no, no, no. i'm having a party here. you can't do this now! \n\nkramer: oh, we have to do this now. \n\nelaine: who's this guy? \n\nkramer: which one? \n\nelaine: both of the them. \n\nkramer: oh, they're soviet cable guys. \n\nelaine: okay.. does jerry know about this? \n\nkramer: oh yeah.. it's all authorized, yeah. \n\nelaine: you can't! you can't do this now! \n\nkramer: elaine, do you know how booked up this guy is? now, if i send him away now, it's gonna take jerry months to get him back.. he won't like that. \n\nelaine: alright. just do it fast and then get out. \n\nkramer: (snaps his fingers) anatoly! (the russians get to work on command. to elaine) look, it's gonna take a few minutes.. then, you and the gals can take a load off and watch something on lifetime. \n\n[setting: george's car] \n\njerry: and what if we go up there? what are you going to say to her? \n\ngeorge: (boiling) what am i going to say?! \n\njerry: yeah. \n\ngeorge: what did you go out with me for?! just to dump chocolate on my shirt and then just dump me altogether?! i don't deserve that kind of treatment! what, you don't have the common courtesy to return my calls?! to apologize! you think i'm some sort of a loser, that likes to be abused and ignored?! who's shirt can be ruined without financial restitution?! some sort of a masochist who enjoys being humiliated? you think you can avoid me like i have some sort of disease?! you have the disease! you have the disease! you may be beautiful and rich and physically .. just .. unbelievable, but you sicken me! you disgust me! you and everyone like you! \n\njerry: you'll never say that to her face. \n\ngeorge: watch me. \n\n[setting: jerry's apartment] \n\nkramer: (flirting with a female guest) yeah, i eat the whole apple. the core, stem, seeds, everything. \n\nelaine: (to kramer) kramer, kramer, look at him. (gestures to tabachnick) look! he's eating all the food! \n\nkramer: yeah, yeah. well, you know, there are many differences between american and soviet cultures that you're not aware of. see, in russian, the cable guy, they got the whole run of the house. yeah, that's tradition. (turns back to the woman) did you ever eat the bark of a pineapple? \n\nelaine: kramer! \n\nkramer: (trying to break up the fight) uh.. excuse me.. \n\nelaine: what are you doing here? i thought you were out of town for the weekend. \n\njerry: the show was cancelled. there was a blizzard. \n\nelaine: i can't believe you told kramer it's okay to put the cable in during the shower! jerry, look,, look! they've eaten everything. \n\nleslie: jerry, what a surprise! i thought you sere out of town. \n\njerry: well, leslie, sometimes the road less travelled is less travelled for a reason. \n\nelaine: (speaking confidentially to george) george, don't even think about it! don't even dream about it! \n\ngeorge: (unconvincingly coy) about what? \n\ntabachnick: (sticks his head out the door) kramer, kramer, kramer.. \n\ngeorge: leslie. \n\nleslie: yeah? \n\ngeorge: george.. (she doesn't seem to recognize him) george costanza. \n\nleslie: hi. \n\ngeorge: (laughs) you, i guess, you don't remember me.. but we actually, kind of um.. went out.. a couple of years ago.. once.. remember? \n\nleslie: vaguely. \n\ngeorge: you took me to one of your shows.. \n\nleslie: and? \n\ngeorge: and, um, it was quite good. in fact, you even incorporated me into the show. i'm not actually a performer. although, my parents felt i had talent.. \n\nmary: jerry?! (a woman, angry at jerry, approaches him. jerry looks confused) remember me? \n\njerry: i'm sorry, i.. \n\nmary: (livid) mary contardi. no? doesn't ring a bell, jerry? we had a date, three years ago. you took me to one of your shows. \n\njerry: (stammering) oh, i, i, think i remember.. \n\nmary: told me you had a great time! said you'd call me the next day. \n\njerry: well, i'm sure i meant to call.. i probably just lost your.. \n\nmary: liar! liar! you were never going to call me! you thought you could waltz throught the rest of your life and never bump into me again! but you were wrong, jerry! you were wrong! what do you think, i'm some sort of poor, pathetic wretch?! \n\njerry: no, i don't think that.. \n\nmarry: some person who could be dismissed and ignored?! some insignificant piece of dust?! some person who doesn't deserve your respect and your attention?! you're the one that doesn't deserve my respect and my attention! you're the insignificant piece of dust! \n\ngeorge: actually, i never had any formal training. i guess i'd be better suited for improvs, or something.. \n\nleslie: thanks a lot! \n\nelaine: i'm sorry you have to go. \n\nwoman: yeah. i really have to be going. \n\njerry: alright, listen, i've changed my mind about this whole thing. i don't want cable. \n\nkramer: don't be a fool. \n\ntabachnick: you don't want? \n\njerry: no, i don't want. so, just tell me what i owe you for your trouble.. \n\ntabachnick: (confers with his assistant, then) four hundred dollars. \n\njerry: (to kramer) four hundred dollars?1 you told me one-fifty! \n\nleslie: i'm going.. obviously. \n\nelaine: oh, leslie, i am so sorry about everything that went on here tonight. you know, i had no idea.. \n\nleslie: elaine, you know, i was watching you tonight, and i realized something. you're just like you were in college. \n\nelaine: (not sure if it was an insult or a compliment) oh, thank you. (leslie leaves. then elaine wonders to herself) \"like you were in college\"? \n\nleslie: (comes back, and yells in the direction of the bedroom) come on! let's go! \n\ngeorge: (sheepishly to elaine) i'll be right back. (leaves) \n\njerry: (defiantly) i'm not paying four hundred dollars! i don't even want the thing. what are you going to do?! \n\n[setting: jerry's apartment] \n\ngeorge: every woman on the face of the earth has complete control of my life. and yet, i want them all.. is that irony? \n\nelaine: why can't i meet a kennedy? ..i saw john junior once downtown. i was on a bus. i hit the ding, but.. it didn't stop. \n\njerry: alright, i said i had a good time and i'd call, but who takes that literally? \n\nkramer: (pops his head into jerry's apartment) hey, come on over, dr. zhivago's on cable in five minutes.. i'm making popcorn! (leaves) \n\n[setting: night club] \n\njerry: what do you do at the end of a date when you know you don't want to see this person ever again, for the rest of your life? what do you say? what do you say? no matter what you say, it's a lie. \"i'll see you around. see you around. if you're around, and i'm around, i'll see you around that area. you'll be around other people. you won't be around me. but you will be around.\" \"take care now.\" did you ever say that to somebody? \"take care now. take care, now. because, i'm not going to be taking care of you. so, you should take care, now.\" \"take care. take care.\" what does this mean? \"take off!\" isn't that what you really want to say? \"take off now.\" \n\njerry: (a couple of days ago i used a public phone), go over time on the call, hang up the phone, walk away. you've had this happen? phone rings. it's the phone company... they want more money. don't you love this? and you got them right where you want them for the first time in your life. you're on the street, there's nothing they can do. i like to let it ring a few times, you know, let her sweat a little over there, then i just pick it up, \"yeah, operator... oh, i got the money... i got the money right here... d'you hear that? (taps on microphone) that's a quarter. yeah, you want that don't you?\" \n\nelaine: no, they've just got to get more cops on the force, it's as simple as that. \n\ngeorge: cops. i don't even care about cops. i wanna see more garbage men. it's much more important. all i wanna see are garbage trucks, garbage cans and garbage men. you're never gonna stop crime, we should at least be clean. \n\njerry: i tell you what they should do, they should combine the two jobs, make it one job, 'cop\\garbage man'. i always see cops walking around with nothing to do. grab a broom! start sweeping. you sweep sweep sweep... catch a criminal, get right back to sweeping. \n\nelaine: you should run for mayor. \n\njerry: ehh, nobody listens. \n\nelaine: where is someone? i'm starving. \n\ngeorge: i think this is him right here. \n\nelaine: is there a table ready? \n\nrestaurant manager (bruce): how many? \n\nelaine (to jerry): how many? \n\njerry (to george): is tatiana coming? \n\ngeorge: i don't know, i have to call her, tell her where we are. i'm very lucky she's even considering seeing me at all. \n\njerry: really? i thought things were going ok. \n\ngeorge: they were, it's kinda complicated. \n\njerry: well what is it? \n\nelaine: how many? \n\njerry: ah, alright, four. seinfeld. \n\nbruce: four. it'll be five, ten minutes. \n\ngeorge: what do you wanna do? \n\nelaine: let's go someplace else, i am too hungry. \n\njerry: we might as well just stay here, we haven't got that much time if we wanna make it to the movie. \n\ngeorge: i gotta call tatiana. where's the phone? \n\njerry (to elaine): tatiana... \n\ngeorge: excuse me, are you gonna be very long? \n\nbruce: lashbrook, 4! \n\njerry: so did i do a terrible thing? \n\nelaine: you mean lying to your uncle? \n\njerry: i couldn't have dinner with him. 'plan 9 from outer space', one night only, the big screen. my hands are tied! \n\ngeorge (to jerry): you know it's a public phone, you're not supposed to just chit-chat. \n\nelaine: jerry, get menus so when we sit down we can order right away. \n\njerry: can't look at a menu now, i gotta be at the table. \n\ngeorge: he knows i'm waiting. he sees me. he just doesn't wanna look. \n\nelaine: everything's gotta be just so with you, doesn't it? \n\njerry: hey, i offered you those cookies in my house. \n\nelaine: health cookies. i hate those little dustboard fructose things. \n\ngeorge: i just can't believe at the way people are. what is it with humanity? what kind of a world do we live in? \n\nelaine: what? \n\njerry: there's a woman over there that looks really familiar. dark hair, striped shirt? \n\nelaine: i've never seen her before. \n\njerry: i know this woman. this is gonna drive me crazy. \n\nman: oh, excuse me. \n\nelaine: i'm sorry. \n\nelaine: didja see that? those people, look, they're getting a table. \n\njerry: well maybe they were here from before. \n\nelaine: no no no, they weren't here before. \n\ngeorge (to guy): excuse me, are you going to be much longer? i have to make a very important call. \n\nelaine: find out what's going on! \n\njerry: excuse me, didn't those people just come in? i believe we were ahead of them. \n\nelaine: yeah. \n\nbruce: what's your name? \n\njerry: seinfeld. \n\nbruce: no, no, they were here before. keckitch(sp?), 2! \n\nelaine: did you ever notice how happy people are when they finally get a table? they think they're so special because they've been chosen. it's enough to make you sick. \n\njerry: boy, you are really hungry. \n\ngeorge (whistles to guy on phone): hey! \n\ngeorge: if anything happens here, can i count on you? \n\njerry: what? \n\ngeorge: if we decide to go at it. \n\njerry: yeah, i wanna get into a rumble... \n\ngeorge: i have to get in touch with tatiana! and look at his little outfit. it's all so coordinated, the way his socks matching to his shirt. i really hate this guy. \n\nelaine: i'm gonna faint... \n\njerry: george, who is that woman in the stripes? \n\ngeorge: i don't know her. \n\njerry: she looks so familiar. \n\nelaine: ya know, its not fair people are seated first come first served, it should be based on who's hungriest. i feel like just going over there and taking some food off somebody's plate. \n\njerry: i'll tell you what, there's 50 bucks in it for you if you do it. \n\nelaine: what do you mean? \n\njerry: you walk over that table, you pick up an eggroll, you don't say anything, you eat it, say 'thank you very much', wipe your mouth, walk away- i give you 50 bucks. \n\ngeorge: what are they gonna do? \n\njerry: they won't do anything; in fact, you'll be giving them a story to tell for the rest of their lives. \n\nelaine: 50 bucks, you'll give me 50 bucks? \n\njerry: 50 bucks. that table over there, the three couples. \n\nelaine: ok, i don't wanna go over there and do it, and then come back here and find out there was some little loophole, like i didn't put mustard on it or something... \n\njerry: no, no tricks. \n\nelaine: should i do it, george? \n\ngeorge: for 50 bucks? i'd put my face in the soup and blow. \n\nelaine: alright, alright. here, hold this. i'm doin' it. \n\nelaine (through her teeth): i know this sounds crazy, but the two men who are standing behind me are going to give me 50 bucks if i stand here and eat one of your eggrolls. \n\nelaine (through teeth): i'll give you 25 if you let me do it. \n\npeople at table: what? what is she talking about? what did she say? \n\njerry: what happened? \n\nelaine: did you see that? \n\ngeorge: what were you doing? \n\nelaine (laughing): i offered them 25, they had no idea... \n\njerry: george, the phone's free. \n\ngeorge: alleluia. \n\ngeorge: excuse me, i was waiting here. \n\nwoman at phone: where? i didn't see you. \n\ngeorge: i've been standing here for the last ten minutes! \n\nwoman: well i won't be long. \n\ngeorge: that's not the point. the point is i was here first. \n\nwoman: well if you were here first, you'd be holding the phone. \n\ngeorge (yelling at her): you know, we're living in a society! we're supposed to act in a civilized way. \n\ngeorge: does she care? no. does anyone ever display the slightest sensitivity over the problems of a fellow individual? no. no. a resounding no! \n\nguy: hey, sorry i took so long. \n\ngeorge: oh that's ok, really, don't worry about it. \n\nelaine: how do people fast? did ghandi get this crazy? i'm gonna walk around, see what dishes look good. \n\njerry: i told my uncle i had a stomach ache tonight. you think he bought that? \n\ngeorge: yeah, well, he probably bought it. \n\njerry: so what happened with tatiana? \n\ngeorge: i shouldn't even tell you this. \n\njerry: come on... \n\ngeorge: well, after dinner last week, she invites me back to her apartment. \n\njerry: i'm with you. \n\ngeorge: well, it's this little place with this little bathroom. it's like right there, you know, it's not even down a little hall or off in an alcove. you understand? there's no... buffer zone. so, we start to fool around, and it's the first time, and it's early in the going. and i begin to perceive this impending... intestinal requirement, whose needs are going to surpass by great lengths anything in the sexual realm. so i know i'm gonna have to stop. and as this is happening i'm thinking, even if i can somehow manage to momentarily... extricate myself from the proceedings and relieve this unstoppable force, i know that that bathroom is not gonna provide me with the privacy that i know i'm going to need... \n\njerry: this could only happen to you. \n\ngeorge: so i finally stop and say, \"tatiana, i hope you don't take this the wrong way, but i think it would be best if i left\". \n\njerry: you said this to her after. \n\ngeorge: no. during. \n\njerry: oh, boy. \n\ngeorge: yeah. \n\njerry: wow! so...? \n\ngeorge: so i'm dressing and she's staring up at me, struggling to compute this unprecedented turn of events. i don't know what to say to reassure this woman, and worst of all, i don't have the time to say it. the only excuse she might possibly have accepted is if i told her i am in reality batman, and i'm very sorry, i just saw the bat-signal. it took me 3 days of phone calls to get her to agree to see me again. now she's waiting for me to call her, and she's \n\nelaine: i hate this place. i don't know why we came here, i'm never coming back here again. \n\njerry (still trying to remember): who is that woman?! \n\nelaine: remember when you first went out to eat with your parents? remember, it was such a treat to go and they serve you this different food that you never saw before, and they put it in front of you, and it is such a delicious and exciting adventure? and now i just feel like a big sweaty hog waiting for them to fill up the trough. \n\ngeorge: she's off. (goes over to the now available public phone) \n\nelaine: jerry, talk to that guy again. \n\njerry: what am i gonna say? \n\nelaine: tell him we wanna catch a movie and that we're late. \n\nmr. cohen: hey, what stinks in here? \n\nbruce (laughing): mr. cohen! haven't seen you for a couple of weeks. \n\nmr. cohen: well, i've been looking for a better place. \n\nbruce: better place... want a table? \n\nmr. cohen: no, just bring me a plate and i'll eat here. \n\nbruce (laughing): give him a plate and you eat here... come on, i give you a table. \n\njerry: excuse me... we've been waiting here. now, i know we were ahead of that guy, he just came in. \n\nbruce: oh no, mr. cohen always here. \n\nelaine: he's always here? what does that mean? what does that mean? \n\nbruce: oh, mr. cohen, very nice man. he live on park avenue. \n\nelaine: where am i? is this a dream? what in god's name is going on here?! \n\ngeorge: she's not there. she left. she must've waited and left because those people wouldn't get off the phone. \n\njerry: didja leave a message? \n\ngeorge: yeah, i told her to call me here and to tell anyone who answers the phone to ask for a balding, stocky man with glasses. i better tell him i'm expecting a call. \n\nelaine: oh, jerry, here comes that woman... \n\njerry: where do i know her? \n\nlorraine: hello, jerry! \n\njerry: heeeeyyyy... how you doin'? \n\nlorraine: how is everything? \n\njerry: good, good, good... what's goin' on? \n\nlorraine: oh, working hard. and you? \n\njerry: oh, you know, working around, same stuff, doing... whatever. \n\nlorraine: you haven't been around in a while. \n\njerry: i know, i know... well, you know. \n\nlorraine: you should come by. \n\njerry: definitely. i plan to, i'm not just saying that. \n\nelaine: hi, i'm elaine. \n\nlorraine (shaking her hand): lorraine. catalano. \n\njerry: i'm sorry, lorraine, this is elaine... \n\nlorraine: well it was nice seeing you, jerry. and nice meeting you. (she leaves) \n\nelaine (smug): oh, nice to meet you too, lorraine! \n\njerry: oh my god, lorraine... that's lorraine from my uncle's office. i'm in big, big trouble. \n\nelaine: the one you broke the plans with tonight? \n\njerry: yeah, she works in his office. now she's gonna see him tomorrow and tell him she saw me here tonight. he's gonna tell his wife, his wife's gonna call my mother. oh, this is bad, you don't know, the chain reaction of calls this is gonna set off. new york, long island, florida, it's like the bermuda triangle. unfortunately, nobody ever disappears. my uncle to my aunt, my aunt to my mother, my mother to my uncle... \n\njerry: ...my uncle to my cousin, my cousin to my sister, my sister to me. \n\nelaine: you should've just had dinner with your uncle tonight and gotten in over with. it's just a movie. \n\njerry: just a movie?! you don't understand. this isn't 'plans 1 through 8 from outer space', this is 'plan 9', this is the one that worked. the worst movie ever made! \n\njerry: hey, i got news for you, if we're making this movie, we gotta get a table immediately. \n\nelaine: alright, ok. let's stop fooling around. let's just slip him some money. \n\njerry: in a chinese restaurant? do they take money? \n\nelaine: do they take money? everyone takes money. i used to go out with a guy who did it all the time, you just slip him 20 bucks. \n\ngeorge: 20 bucks? isn't that excessive? \n\nelaine: well what do you want to give him, change? \n\ngeorge: it's more than the meal! \n\njerry: oh, come on, we'll divide it up three ways. \n\ngeorge: alright. 7,7, (points at himself) 6. i'm not gonna eat that much! \n\njerry: i'm counting your shrimps. ok, who's gonna do it? \n\ngeorge: oh no, i can't do it. i-i'm not good at these things, i get flustered. once i tried to bribe an usher at the roller derby, i almost got arrested. \n\nelaine: i guess it's you, jer. \n\njerry: me? what about you? \n\nelaine: oh, i can't do that, it's a guy thing. \n\njerry: the woman's movement just can't seem to make any progress in the world of bribery, can they? \n\nelaine: give me the money. \n\nelaine: how's it going'? \n\nbruce: very busy. \n\nelaine: boy, we are really anxious to sit down. \n\nbruce: very good specials tonight. \n\nelaine: if there's anything you can do to get us a table we'd really appreciate it. \n\nbruce: what is your name? (he turns the page over the money) \n\nelaine: no no, i want to eat now! (she gets the money from under the page) \n\nbruce: yes, we have sea-bass dinner tonight, very fresh. \n\nelaine (gives him the money): here, take this. i'm starving. take it! take it! \n\nbruce: dennison, 4! (goes over to 4 ladies) your table is ready. \n\nelaine: no no, no, i want that table. i want that table! oh, come on, did you see that? what was that? he took the money, he didn't give us a table. \n\njerry: you lost the 20. \n\nelaine: well, how could he do that? \n\ngeorge: you didn't make it clear. \n\nelaine: make it clear? \n\njerry: what a sorry exhibition that was. alright, let me get the money back. \n\nbruce: your name? \n\njerry: seinfeld. \n\nbruce: yeah, seinfeld 4! \n\njerry: no no no, you see the girl there, with the long hair? \n\nbruce: oh yes, yes. very beautiful girl, very beautiful. is your girlfriend? \n\njerry: well, actually, we did date for a while, but... it's really not relevant here. \n\nbruce: relationships are difficult. it's very hard to stay together- \n\njerry: alright, listen, alright. how much longer is it gonna be? \n\nbruce: oh. in about five, ten minutes. \n\ngeorge: so? \n\njerry: there seems to be a bit of a discrepancy. \n\nelaine: so when are we gonna eat? \n\njerry: five, ten minutes. \n\ngeorge: we should have left earlier. i told you. \n\njerry: i don't see any way we can eat and make this movie. \n\nelaine: oh, well i have to eat. \n\njerry: well let's just order to go, we'll eat it in the cab. \n\nelaine: eat it in the cab? chinese food in a cab? \n\njerry: we'll eat it in the movie. \n\nelaine: oh, who do you think you're going? do you think that they have big picnic tables there? \n\njerry: well what do you suggest? \n\nelaine: i say we leave now, we go to 'skyburger' and we scarf 'em down. \n\njerry: i'm not going to 'skyburger'. besides, it's in the opposite direction, let's just eat popcorn or something. \n\nbruce (holding a phone): cartwright? \n\nelaine: i can't have popcorn for dinner! \n\nbruce: cartwright? \n\nelaine (tries to snatch food off a waiter's tray): i have to eat! \n\njerry: so they have hotdogs there. \n\nelaine: oh, movie hotdogs! i rather lick the food off the floor. \n\ngeorge: i can't go anywhere, i have to wait here for tatiana's call. let me just check. \n\ngeorge: excuse me, i'm expecting a call. costanza? \n\nbruce: yeah, i just got a call. i yell 'cartwright! cartwright!', just like that. nobody came up, i hang up. \n\ngeorge: well, was it for costanza or... \n\nbruce: yes, yes, that's it. nobody answered. \n\ngeorge: well was it a woman? \n\nbruce: yeah, yeah. i tell her you not here, she said curse word, i hang up. \n\ngeorge: she called. he yelled cartwright. i missed her. \n\njerry: who's cartwright? \n\ngeorge: i'm cartwright! \n\njerry: you're not cartwri- \n\ngeorge: of course i'm not cartwright! look, why don't you two just go to the movies all by yourselves, i'm not in the mood. \n\nelaine: well me neither, i'm goin' to 'skyburger'. \n\njerry: so you're not going? \n\nelaine: you don't need us. \n\njerry: well i can't go to a bad movie by myself. who am i gonna make sarcastic remarks to, strangers? eh, i guess i'll just go to my uncle's. \n\ngeorge: should we tell him we're leaving? \n\nelaine: what for? let's just get out of here. \n\nbruce: seinfeld, 4? \n\njerry: hunger will make people do amazing things. i mean, the proof of that is cannibalism. cannibalism, what do they say, i mean, they're eating and, you know, \"this is good, who is this? i like this person\". you know, i mean, i would think the hardest thing about being a cannibal is trying to get some very deep sleep, you know what i mean? i would think, you'd be like, (pretending to wake up) \"who is that? who's there? who's there? is somebody there? what do you want? what do you want? you look hungry, are you hungry? get out of here!\" \n\n[setting: night club] \n\njerry: i'm not a foodie. i don't, \"oh, this is too rare. oh, it's too salty.\" just eat it and shut up. i'll eat anywhere, whatever they're having. i have eaten rotten rolls off of room service trays in hotel hallways. i have. it's not a joke. this is my life. i don't know, somebody left it. why would someone poison a roll, and leave it in a hallway for some comic coming down at two o' clock in the morning? why would they do that? sometimes you go to a nice restaurant, they put the check in a little book. what is this? the story of the bill? \"once upon a time, there were some very hungry people..\" what is this? a little gold tassle hanging down? am i graduating from the restaurant? what is this about? \n\n[setting: a restaurant] \n\nelaine: do you want some of mine? \n\njerry: take some of mine. \n\ngeorge: why do i get pesto? why do i think i'll like it? i keep trying to like it, like i have to like it. \n\njerry: who said you have to like it? \n\ngeorge: everybody likes pesto. you walk into a restaurant, that's all you hear - pesto, pesto, pesto. \n\njerry: i don't like pesto. \n\ngeorge: where was pesto 10 years ago? \n\njerry: (gesturing to a man) look at that guy. (elaine starts to look, but jerry stops her) i'll bet you he's gettin' hair transplants. any time you see a guy that age wearing a baseball cap, ten to one - plugs. \n\nelaine: (elaine turns to look at the man, trying to make it sound like they aren't talking about him) the thing about that painting.. is with the colors and um.. (turns back to jerry) oh yeah, plugola. \n\njerry: (to elaine) oh, one more thing about the car. let it warm up for a minute. \n\ngeorge: that's a tough minute. it's like waiting in the shower for the conditioner to work. \n\njerry: i don't understand why he couldn't take a cab. \n\ngeorge: who? \n\njerry: elaine is having a \"houseguest.\" she's picking him up at the airport tonight. \n\ngeorge: a guy? \n\nelaine: (slightly embarrassed) yes, a guy. \n\njerry: he's from a.. yakima, right? \n\nelaine: seattle. \n\njerry: everybody's moving to seattle. \n\ngeorge: it's the pesto of cities. so..? \n\nelaine: (to jerry) you tell him. \n\njerry: well, from what i can piece together, our friend here met a gentleman. \n\nelaine: ed. \n\njerry: who was in town on a business venture, and um.. \n\nelaine: ..we shared an interpersonal experience. (george hits his glass with his fork. to jerry) go on. \n\njerry: so they went out a few times, but apparently, when the fellow returned home, he discovered that the benes tattoo does not wash off so easily. \n\nelaine: on some people. \n\ngeorge: oooh. \n\njerry: so, he's coming in to stay with her for a week. \n\nelaine: it was just gonna be a weekend, but then somehow it became a week. \n\nmanager: what happened? \n\ngeorge: oh, the busboy left the menu a little close to the candle. \n\nmanager: sorry to the disturbance. \n\nelaine: (joking, she snobbishly says) i'm never eating here again. \n\njerry: (pats george on the back) nice going. thank you, that ought to get us a free dessert.. (they can see the manager chewing the busboy out from the dining room doorway) i think the busboy's in trouble. \n\ngeorge: did i get him in trouble? because of what i said?! i just told him what happened.. he didn't do it on purpose.. (mangager and busboy are arguing. the busboy points in the direction of george) he pointed at me. why did he point at me?! \n\nelaine: i said i would never eat here again.. but, i, i.. he had to know i was kidding. \n\njerry: (casually buttering a roll, like he's the innocent one) i didn't say anything. \n\ngeorge: i can't believe it. he's going! he's fired! \n\nelaine: oh, i said it in a kidding way. \n\ngeorge: i didn't know he'd get fired. \n\njerry: (jokingly trying to put more pressure on elaine and george) he'll probably kill his family over this. \n\ngeorge: what if he's waiting for me outside? he pointed at me! did you see him point?! \n\njerry: (again, joking) a lot of ex-cons become busboys. they seem to gravitate twards 'em. \n\ngeorge: was it my fault? \n\nelaine: was it my fault? \n\njerry: (doesn't have a care in the world) ..maybe i'll try that pesto. \n\n[setting: jerry's apartment] \n\njerry: look, i feel bad for him too, but he'll get another job. i mean, let's face it, it's not a profession where you embellish your resume and undergo a series of grueling interviews. \n\ngeorge: (eating a sandwich) oh, like you really know busboys. \n\njerry: oh, like you do. \n\ngeorge: hey, at least i was a camp waiter. \n\njerry: (scoffing) camp. \n\ngeorge: it was a fat camp. those kids depended on me. \n\njerry: elaine? \n\nelaine: (through intercom) yeah. \n\njerry: busboys are always changing jobs. that's the business. i know. i work with these guys. i tallk to them in the kitchen at the comedy clubs. \n\ngeorge: then why don't you try and get him another job? \n\njerry: i'd love to, but i don't know anything about him. he could be one of those people that walks around the street pricking people with pins. \n\nelaine: i don't know if you people are aware of this, but i am one clever chickadee. \n\ngeorge: what? did you get the busboy's number? \n\nelaine: his phone's been disconnected, but i was able to obtain an address - 1324 amsterdam avenue, apartment 4d. (hands george a card) now, i did my job. (to jerry) may i have the car keys, please? \n\ngeorge: how did you get all this? \n\nelaine: does the word \"charm\" mean anything to you? \n\njerry: no. (george grabs his jacket) so now you're going to his apartment? i really think this is nuts. \n\ngeorge: (putting his jacket on) i'd like to apologize. i want to tell him i.. i.. didn't mean to get him in trouble. \n\njerry: you, you're going now? \n\ngeorge: yeah, i want to see if there's anything i can do.. maybe get him another job.. maybe i'll hear of something. \n\njerry: maybe the fat camp. (to elaine) you're not going? \n\nelaine: i would, but i have to pick up ed at the airport. \n\njerry: i just don't think you should go alone. can't you wait till after my set? \n\ngeorge: it'll take to long. \n\njerry: take the k-man. a little support.. \n\ngeorge: (unsure) i don't a.. \n\nkramer: take me where? where? \n\n[setting: an apartment building hallway] \n\ngeorge: look, i really appreciate your coming, but if you wouldn't mind - try not to say too much. \n\nkramer: what am i gonna say? \n\ngeorge: i don't know. \n\nkramer: well, i'm not an idiot. \n\ngeorge: certainly not. \n\nkramer: then we're cool. \n\ngeorge: yeah.. yeah, we're - we're cool. (knocks lightly. kramer takes charge by knocking on the door louder. the busboy answers) uh, i'm sorry to bother you, i was in the restaurant earlier and i was wondering if i could talk to you for a few minutes about what happened. (he gestures for them to come in. they obey) i hope i'm not interrupting anything. it's just that i think i may have - without realizing it - been responsible for getting you fired. (nervously laughs) and.. and.. and i just want you to know that i didn't intend for that to happen. \n\nkramer: (patting george on the shoulder) he's a hell of a guy. \n\ngeorge: this is a guy i know.. kramer. \n\nkramer: habla espanol? \n\ngeorge: (to himself) oh my god. \n\nantonio: si. \n\nkramer: como se dice.. waterbed? \n\ngeorge: (interrupting) anyway, i just wanted to let you know i'm really sorry that happened, and if i can help out in any way, i'll certainly be glad to do that. (pause) well, i guess that's about it. \n\nkramer: you got anything to drink? agua? \n\ngeorge: oy uy uy.. (antonio points to the sink) we really should get going. \n\nkramer: let me get a glass of water. (heads tward the sink) \n\ngeorge: hurry up. \n\nantonio: (notices that his cat is missing) pequita? pequita? (starts to panic) \n\nkramer: his cat's gone. \n\nantonio: (notes the door was left wide open) la puerta esta abierta. (starts screaming) la puerta esta abierta! (to kramer and george) who left the door open? (silence) who left the door open?! (kramer and george look at eachother) come on, come on! help me look! (all three head out the door to look) \n\n[setting: antonio's apartment] \n\nkramer: ..you know, cats run away all the time. you know, my aunt, she had a cat. ran away. showed up three years later.. you never know. they got things in \n\ngeorge: (gestures for kramer to shut up) once again, antonio, i can't even begin to say how deeply, deeply sorry i am about everything. the job, the cat.. (a lamp breaks) the lamp. \n\nkramer: the wire was sticking out.. (fits the two broken pieces together) yeah. \n\ngeorge: (hands antonio a card) here's my card. i'm in real estate, so, if you're ever looking for something bigger, something nicer.. (antonio is staring at him, angered) ..maybe not right now. anyway.. (extends his hand for a handshake. antonio doesn't move) \n\nkramer: you oughta get that wire fixed. (they go to leave) i got the door. (shuts the door, the broken lamp falls to the floor) \n\n[setting: jerry's apartment] \n\njerry: (on the phone) george, stop worrying about this guy. it wasn't your fault.. come on, he's not stalking you. \n\nkramer: hey. \n\njerry: (to kramer) hey. (to george) he doesn't even know where you live.. who told you to give him your business card?.. (intercom buzzes) that's elaine. (kramer buzzes her in. jerry talks into the phone) kramer.. (to kramer) george wants to know when you want to look for the cat again. \n\nkramer: it's been a week. it's up to the cat now. \n\njerry: (into phone) kramer says it's up to the cat now. (to kramer) it'll be on your conscience. \n\nkramer: oh? how do you figure? \n\njerry: (into phone) how do you figure? (to kramer) 'cause you're the one who left the door open. \n\nkramer: why was i in charge of closing the door? \n\njerry: (into phone) why was he in charge of closing the door? (irritated at the phone message relay, to kramer) 'cause you came in after him! \n\nkramer: so! \n\njerry: (into phone) so! (to kramer - getting even more angry) so, the last person in should close the door! \n\nkramer: let me talk to him. \n\njerry: (to kramer) talk - call him from your house. (elaine enters. kramer leaves. to phone) he's calling you now.. okay. (hangs up) \n\nelaine: ed's downstairs. can i have the car keys? \n\njerry: no hello? \n\nelaine: got any asprin? (finds some) hello. now, lookit, you guarantee this car will get me to the airport tomarrow? no problems? \n\njerry: guarantee? ..hey, it's a car. \n\nelaine: because if there's even the slightest chance of any problem at all, i don't want to take it - because if i don't get this guy on a plane to seattle and out of my life, i'm gonna kill him, and everyone who tries to stop me. \n\njerry: (jokingly asking) so, did you have a nice week together? \n\nelaine: i heard a little ping in the car last time. what was that ping? \n\njerry: there's no ping. why are you so wacky? \n\nelaine: jerry, you cannot imagine how much i hate this guy.. and he hasn't even done anything! it's the situation. he's a wonderful guy, but i hate his guts! \n\njerry: so, you two been, uh.. \n\nelaien: no! i told him i've been having my period for the last five days! i'm sleeping all squished over on the edge of my bed.. but, i've only got fourteen hours to go. nothing can go wrong now. i think i've taken care of everything. i've confirmed the plane reservation. i've checked the weather.. \n\njerry: what's your airport route? \n\nelaine: i've got it all mapped out - i'm taking the tunnel. \n\njerry: ..what about the van wyck? \n\nelaine: i spoke to a cab driver. for five bucks, he turned me on to the rockaway boulevard shortcut. \n\njerry: oooh. \n\nelaine: now, lookit, this plane leaves at 1015. we're getting up at about eight. that gives us enough time, right? \n\njerry: you still using that old alarm clock? \n\nelaien: oh, no, no. i bought a new one today. it's got everything - it's got everything... if you oversleep more than ten minutes, a hand comes out and slaps you in the face. \n\n[setting: night club] \n\njerry: flying doesn't make me nervous - driving to the airport can make you very nervous because when you're flying, when you're getting on the plane, if you miss that plane, there's no alternative. on the ground, you have options. you have buses, you have taxis, you have trains. but, when you're taking a flight, if you miss it, that's it. no airline goes, \"well, you missed the flight, we do have a cannon leaving in about ten minutes. would you be interested in that? it's not a direct cannon, you have to change cannons after you land.\" (imitates cannon operator) \"i'm sorry, where you goin'? chicago? (cranks the cannon) oh, dallas? alright, wait a second.. (cranks cannon to dallas) dallas. that's about dallas. texas, anyway. you should hit texas. are you ready? make sure you get out of the net immediately, because we shoot the luggage in right after you.\" \n\n[setting: elaine's apartment] \n\n(elaine and ed are in bed. elaine awakes to find out that it's 9: 15 - they overslept. she gets frantic) \n\nelaine: (trying to wake ed up) get up! the alarm clock didn't go off! (shakes him) it's 915! you're gonna miss the plane! it's 915! \n\ned: 915? \n\nelaine: yes! 915! \n\ned: (going back to sleep) we'll never make it. i'll leave tomarrow. \n\nelaine: tomarrow?! are you crazy? no, now, now! let's go! (gets his suitcase from the closet, throws it on the bed, and frantically starts packing) you get dressed! get dressed! \n\ned: can i shower? \n\nelaine: shower?! are you out of your mind?! \n\ned: i gotta shower. i'll feel dirty all day. \n\nelaine: forget the shower! the shower's out. move it! put your clothes on! put your clothes on! (pulls out drawers of clothes, turning them over in the suitcase. he walks tward the door) where are you going? \n\ned: the kitchen. \n\nelaine: the kitchen?! \n\ned: i've got a bag of cashews in there. \n\nelaine: they're not making it! let's get your pants on! \n\ned: what's the big deal if we don't make it? i'll just go tomarrow or the next day. \n\nelaine: no! you have your ticket! you have to go now! \n\ned: i'll never make it. \n\nelaine: don't say that! \n\ned: but it takes forty-five minutes to get there. that'll only leave me five minutes to get to the plane. \n\nelaine: shut up and pack! \n\ned: and what if i don't make the plane? you'll have already left. then what will i do? \n\nelaine: you're talking too much! \n\ned: where's my sweater? \n\nelaine: what?! \n\ned: my brown sweater. \n\nelaine: what? what sweater? \n\ned: my brown sweater. \n\nelaine: you didn't bring a brown sweater. \n\ned: i brought a brown sweater. \n\nelaine: here! here! you want a brown sweater?! (recahes into one of her drawers, and grabs a brown sweater, then packs it) you got a brown sweater! \n\ned: that's not mine. i can't take your sweater. \n\nelaine: it's brown! (takes clothes still on the hangers, and dumps them into the suitcase) \n\ned: what are you doing?! \n\nelaine: no time for folding.. (looks around) i think that's it. (zips up the suitcase) \n\ned: my shoes. you packed my shoes. \n\nelaine: shoes? shoes?! shoes?! shoes weren't invented till the fourth century! people walked around for thousands of years without them! (puts her coat on over her nightie. he picks up his suitcase, she grabs it from him, then pushes him out of her way) i got this. let's go! \n\n[setting: jerry's apartment] \n\njerry: anywhere in the city? \n\ngeorge: anywhere in the city - i'll tell you the best public toilet. \n\njerry: okay.. fifty-fourth and sixth? \n\ngeorge: sperry rand building. 14th floor, morgan apparel. mention my name - she'll give you the key. \n\njerry: alright.. sixty-fifth and tenth. \n\ngeorge: (scoffs) are you kidding? lincoln center. alice tully hall, the met. magnificent facilities. \n\nelaine: (slow, as if remember a dream) i never new i could drive like that. i was going faster than i've ever gone before, and yet, it all seemed to be happening in slow motion. i was seeing three and four moves ahead, weaving in and out of lanes like an olympic skier on a gold metal run. i knew i was challenging the very laws of physics. at queens boulevard, i took the shoulder. at jewel avenue, i used the median. i had it. i was there.. and then.. i hit the van wyck. they say no one's ever beaten the van wyck, but gentlemen, i tell you this - i came as close as anyone ever has. and if it hadn't been for that five-car-pile-up on rockaway boulevard, that numbskull would be on a plane for seattle right now instead of looking for a parking space downstairs. \n\nkramer: ..the busboy's coming! the busboy's coming! \n\ngeorge: the busboy's coming? \n\njerry: you don't mean here? \n\nkramer: yeah. i just buzzed him in. he's on his way up.. \n\ngeorge: he's coming up?! (moves to the door) i'll check you out later. \n\njerry: where are you going? \n\ngeorge: i'm the one he wants! he's coming to settle the score. \n\njerry: (trying to get george and kramer out) no. you three all know each other. there's no point in me getting involved at this stage of the game. \n\nkramer: no, he's not going to do anything. i guarantee it. \n\ngeorge: oh, the hell with it. let him kill me. i.. \n\nkramer: antonio. in here! \n\ngeorge: (nervous, his voice cracks) hey, antonio. how's it going? \n\nantonio: three nights ago, a gas main beneath the restaurant exploded, killing five people in my section, including the busboy who replaced me. if i am not fired that night because of you and your thoughtless, stupid, insensitive remarks, it would have been me. you saved my life. (hugs him again) \n\ngeorge: (trying to be modest) ah, come on.. \n\nelaine: (into the intercom) yeah? \n\ned: it's eddie. \n\nelaine: he's coming up. (buzzes him in) he's coming up.. \n\nantonio: and that very same night of the accident, while looking for pequita, i found a job in a restaurant where they pay me almost twice what i was making before - and when i returned to the apartment, pequita, perhaps frightened from the explosion, had miraculously returned. well, but now, i must go, for today i am starting my new and wonderful job. and i am very late. thank you, thank you, thank you all. (leaves) \n\ned: hey, watch were you're going. you almost knocked my head off! \n\nantonio: hey, why don't you watch where you're going, okay? 'cause you bumped into me! \n\ned: who do you think you're talking to, pal? \n\nantonio: hey, get your hands off me! \n\ned: go to hell! \n\n[setting: coffee shop] \n\njerry: he'll get another job. he's a busboy! \n\ngeorge: it won't for a while. at least not until after the cast comes off. \n\njerry: it was that fall down the stairs. that's what did it. \n\ngeorge: that's not how it happened. it's when he fell on him with his knee. \n\nelaine: oh, that was awful. poor antonio. (waiter hands elaine two bags of food to go) ..thanks. \n\ngeorge: so, much longer? \n\nelaine: till when - till he goes back to seattle, or till he can feed himself? \n\ngeorge: (not wanting to make elaine mad) i guess it's not important. \n\nelaine: take care of yourselves. (leaves) \n\ngeorge: i should probably get going too. if i don't feed pequita by seven, she goes all over everything.. take it easy. \n\njerry: yeah.. (takes a bite of his sandwich as the waiter starts cleaning off the table) how ya doing? \n\n[setting: night club] \n\njerry: first of all, i can't believe that people actually do fight. people have fist fights in life. i can't really believe that we have boxing either. it's really kind of an amazing thing. to me, the problem with boxing is - you have two guys having a fight that have no prior argument. why don't they have the boxers come into the ring in little cars, drive around a bit, have a little accident? they get out, \"didn't you see my signal?\" \"look at that fender!\" ..then you'd see a real fight. \n\njerry: evry-every time somebody recommends a doctor, he's always the best. \"oh, is he good?\" \"oh, he's the best. this guy's the best.\" they can't all be the best. there can't be this many bests. someone's graduating at the bottom of these classes, where are these doctors? is somewhere, someone saying to their friend, \"you should see my doctor, he's the worst. oh yeah, he's the worst, he's the absolute worst there is. whatever you've got, it'll be worse after you see him. no, he's just, he's a butcher. the man's a butcher.\" and then there's always that, \"make sure that you tell him that, you know, you know me.\" why? what's the difference? he's a doctor. what is it, \"oh, you know bob! okay, i'll give you the real medicine. and everybody else, i'm giving tic-tacs.\" \n\njulianna: ...and usually for lunch i'll have a salad, and for dinner, i eat whatever i want. \n\njerry: what do you think the worst part of being blind is? \n\njulianna: excuse me? \n\njerry: you know, if you were blind, what do you think the worst part of it would be? \n\njulianna: i don't know. \n\njerry: i think it would be not being able to tell if there was bugs in my food. how could you ever enjoy a meal like that? i'd constantly be feeling around with my lips and my tongue. \n\njulianna: well that's how my five-year old eats. he's a very picky eater. \n\njerry: you hear about that kid that was kidnapped the other day in pennsylvania? \n\njulianna: no. \n\njerry: he was at a carnival with his mother. she goes to get a hot dog, next thing you know she turns around, boom, he's gone. \n\njulianna: oh. \n\njerry: imagine how sick a person has to be to do something like that. (she starts the quick hand chops on his back) and these people are all over the place. you never know who's crazy, i could be one of these people. \n\njulianna (visibly uncomfortable): have you seen any good movies? \n\njerry: who takes care of your boy during the day? \n\njulianna: we have a woman. why? \n\njerry: no no. i'm just saying. \n\njulianna: she had references. \n\njerry: oh i'm sure she did, i'm sure they're impeccable. i'm talking about the ones that forge `em. \n\njerry: (about the massage)you know i think this is really helping. \n\njulianna: i don't live near here, ya know! \n\njerry: so she's giving me the massage and i'm just making conversation. \n\nelaine: i don't like to talk during a massage. \n\njerry: neither do i, but i do it for them. i figure they're bored. \n\ngeorge: yeah, i do that too. i feel guilty about getting the pleasure. i feel like i don't deserve it so i talk. it stops me from enjoying it. there's nothing to eat in here. \n\nelaine: oh! i forgot to tell you-- \n\njerry: i'm in the middle of a story. \n\nelaine: oh, okay, go ahead. \n\ngeorge: why don't you ever go shopping? \n\njerry: well its not like it's a really funny story or anything. \n\nelaine: what happened? \n\njerry: well so she mentioned that she had a son, and then for some reason, i launch into the story about the kid from pennsylvania who was abducted. \n\nelaine: oh, wasn't that terrible? \n\njerry: yes, it was. \n\ngeorge: not even an apple. \n\nelaine: she doesn't want to hear that, that was stupid. \n\njerry: i know it was stupid. \n\nelaine: really stupid. (she takes a big sip from her bottled water.) \n\njerry: hey, i just said it was stupid. \n\ngeorge: what about this leftover chinese food? \n\njerry: take it. \n\nelaine: i can't believe you said that. \n\njerry: hey, would you stop it already? \n\nelaine: so, whatd she say? \n\njerry: i don't know, she actually seemed to get a little paranoid. \n\ngeorge: (he just took a bite of the chinese food ) this is terrible. what is this, ginger? i hate ginger. i can't understand how anyone can eat ginger. (puts the container back in the refrigerator.) \n\nelaine: i have a good masseuse you could go to. \n\njerry: nah, she's really good and she's not just a masseuse, she's a physical therapist. there's a big difference. she uses the ultrasound, it's a real medical procedure. in fact, if you get a doctor's note, it's covered by insurance. \n\ngeorge: physical therapy is covered by insurance? \n\njerry: yeah. \n\ngeorge: you don't have to pay for the massage? \n\njerry: not if you have a doctor's note. \n\nelaine: so where do you get this note? \n\njerry: well i've never actually done it but if i really wanted to i could probably get one from my friend roy, the dentist. \n\ngeorge: right, your friend roy. \n\nelaine: what's the name of this physical therapist? \n\njerry: i'll tell you, but don't ask her anything about her kid, she a little off. \n\ngeorge: and you don't have to pay. \n\ngeorge: we have a, three-o'clock appointments. \n\nreceptionist: george and elaine, right? \n\nelaine: right. \n\nreceptionist: could you fill these out for me please? and um, elaine, you'll be seeing julianna \n\nelaine: (quietly) ok. \n\nreceptionist: and george, you'll be with raymond. \n\ngeorge: excuse me, did you say 'raymond'? \n\nreceptionist: yes. \n\ngeorge: but, uh, raymond is a man. \n\nreceptionist: that's right. \n\ngeorge: i can't get a massage from a man. \n\nelaine: why not? \n\ngeorge: what, are you crazy? i can't have a man touching me. switch with me. \n\nelaine: no, i don't want the man either. \n\ngeorge: what's the difference, you're a woman. they're supposed to be touching you. \n\nelaine: he'd just be touching your back. \n\ngeorge: he'd just be touching your back too. \n\nelaine: no, it could get sexual. \n\ngeorge: i know. that's the point. if it's gonna get sexual, it should get sexual with you. \n\nelaine: i wouldn't be comfortable. \n\ngeorge: i would? what if something happens? \n\nelaine: what could happen? \n\ngeorge: what if it felt good? \n\nelaine: it's supposed to feel good. \n\ngeorge: i don't want it to feel good. \n\nelaine: then why get the massage? \n\ngeorge: exactly! \n\nraymond: george? \n\ngeorge: yes? \n\nraymond: i'm raymond. (with a big smile) \n\ngeorge: hello.(with not a big smile) \n\nraymond: are you ready? (smiling, he looks at elaine. she smiles back at him while looking all the way up there at the tall, handsome raymond.) \n\nraymond: and then julianna asked me if i wanted to join her here in the office. \n\ngeorge: really. \n\nraymond: use to be a flight attendant. \n\ngeorge: oh boy. \n\nraymond: ya know, why don't ya, open those pants, it's gonna be a lot easier that way. \n\nraymond: so what do you do? \n\ngeorge: what? \n\nraymond: i said, 'what do you do?'. \n\ngeorge: i-i don't know. \n\nraymond: you don't know what you do? \n\ngeorge: nah. \n\nraymond: ohh-ho, come on. hey, you're very tense. \n\ngeorge: hu, coffee. too much coffee (nervous laughter). \n\nraymond: okay, just take off those pants now, and i'll work the hamstring. \n\ngeorge: oh, the hamstrings fine. \n\nraymond: but you wrote that it was tender. (holding the clip board) \n\ngeorge: i wrote. pfft, *i* wrote. \n\nraymond: i'll check it out. (makes a notation on the form) \n\ngeorge: are you sure? \n\nraymond: yeah, take 'em off. (continues writing) \n\nraymond: how did you hurt this? \n\ngeorge: i don't know. \n\nraymond: you don't know? \n\ngeorge: no. \n\nraymond: but you just told me-- \n\ngeorge: korea. \n\nraymond: you hurt it in korea? \n\ngeorge: what? \n\nraymond: the hamstring. \n\ngeorge: korea. \n\nraymond: how? \n\ngeorge: hamstring. \n\nraymond: how did you hurt the hamstring? \n\ngeorge: hotel. \n\nelaine: how'd it go? george? \n\njerry: no appointments at all? because my neck is still tight. what about thursday? and friday? oh boy. okay, thanks anyway. \n\njerry: what's with you? \n\ngeorge: a... ah... \n\njerry: yes, a...? \n\ngeorge: a man gave me... \n\njerry: yes, a man gave you...? \n\ngeorge: a man gave me... a massage. hu, hu \n\njerry: so? \n\ngeorge: so he... had his hands and, uh, he was uh \n\njerry: he was what?! \n\ngeorge: he-he was uh touching and rubbing. (nervous laugh) \n\njerry: that's a massage. \n\ngeorge: and then i took my pants off. \n\njerry: you took your pants off? \n\ngeorge: for my hamstring. \n\njerry: oh. \n\ngeorge: he got about uh, two inches from... there. \n\njerry: really? \n\ngeorge: i think it moved. \n\njerry: moved? \n\ngeorge: it may have moved, i don't know. \n\njerry: i'm sure it didn't move. \n\ngeorge: it moved! it was imperceptible but i-i felt it. \n\njerry: maybe it just wanted to change positions? you know, shift to the other side. \n\ngeorge: no, no. it wasn't a shift, i've shifted, this was a move. \n\njerry: okay, so what if it moved? \n\ngeorge: that's the sign! the test; if a - if a man makes it move. \n\njerry: that's not the test. contact is the test, if it moves, as a result of contact. \n\ngeorge: you think it's contact? it has to be touched? \n\njerry: that's what a gym teacher once told me. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: i just saw joe dimaggio in dinky donuts. you know, i-i looked in there and there he was having coffee and a donut. \n\njerry: joe dimaggio? in dinky donuts? \n\nkramer: yeah. joe dimaggio. \n\njerry: no, i'm sorry, if joe dimaggio wants a donut, he goes to a fancy restaurant or a hotel. he's not sitting in dinky donuts. \n\nkramer: well maybe he likes dinky donuts. \n\ngeorge: i don't even like to sit next to a man on an airplane 'cause our knees might touch. \n\njerry: i can't see joe dimaggio sitting at the counter in little tiny filthy smelly dinky donuts. \n\nkramer: why can't joe dimaggio have a donut like everyone else? \n\njerry: he can have a donut, \n\nkramer: yeah. \n\njerry: but not at dinky. \n\ngeorge: i don't even like to use urinals, always been a stall man. \n\nkramer: look i'm tellin-- (he does a double take and looks at george) i'm telling ya, that was joe dimaggio. \n\ngeorge: the guy slept with marilyn monroe, he's in dinky donuts. what about this doctor's note? let's go see your friend roy. \n\njerry: i never said i'd do that. \n\ngeorge: what are you talking about, that's seventy-five bucks! i'm not working, i can't afford that. \n\njerry: i don't know how i feel about it. \n\ngeorge: oh, what are you, like, a quaker now? \n\njerry: alright, alright. \n\nkramer: a stall man, huh? (small laugh) \n\ngeorge: all right -- (gets up to leave) \n\nkramer: wha-ha-a-at? (makes a gesture with his hand) \n\njerry: ...so we were just kinda wondering if it was possible for you to write us a note, and if you can't, believe me, it's fine. \n\ngeorge: he didn't say he can't. \n\njerry: i mean, if you feel funny about it, at all. \n\ngeorge: he doesn't feel funny. \n\njerry: if he does. \n\ngeorge: do you feel funny? he didn't say anything. \n\njerry: he feels funny. you don't have to do this. \n\ngeorge: he knows that! \n\njerry: roy, should we go? is this a breach of our friendship? \n\ngeorge: oh, can you be any more dramatic? \n\nroy: don't be ridiculous. (notices george looking at a poster on the wall) holyfield. he's a good friend of one of my patients. he's got a hell of a body, doesn't he? \n\ngeorge: how would i know? \n\nroy: do you like him? \n\ngeorge: what do you mean, like him? \n\nroy: do you like him? \n\ngeorge: i mean he's a good fighter and a nice guy but i don't like him. \n\nroy: how come you don't like him? \n\ngeorge: why should i? \n\njerry: what is the matter with you? \n\ngeorge: nothing, why? you think something's wrong? am i different? \n\nroy: so, you want the notes? \n\njerry: you don't have to, really. \n\nroy: nah nah, it's ok. \n\njerry: we should probably get one for elaine, too, right george? (turns to george, who is staring intently at the holyfield poster) george? \n\njerry: well what about the week after? \n\njerry: no appointments at all? (motions to elaine to move over) \n\nelaine: what? (he bumps her with his butt to move over) \n\njerry: can i - can i at least just talk to her so i can apologize? forget it. (hangs up) i can't believe this, i make one innocent comment, about some lunatic in pennsylvania and i'm cut off. this woman is insane. (looks at elaine for a moment) what's with you? \n\nelaine: what? \n\njerry: well you were too close to me, i was all scrunched in there. \n\nelaine: hey, you scrunched me. i sat down here first. \n\nkramer: hey, i saw dimaggio in the donut shop again. \n\njerry: uh huh. \n\nkramer: yeah. \n\nelaine: joe dimaggio? \n\nkramer: joe dimaggio, you know this time i went in and sat down across from him and i really watched him. i studied, his every move. for example, he dunks. \n\nelaine: joe dimaggio dunks his donut?! \n\nkramer: that's right. \n\njerry: see, now i know it's not him. joe dimaggio could not be a dunker. \n\nkramer: oh, he's a dunker. \n\nelaine: why couldn't he be a dunker? \n\nkramer: and nothing diverts his attention. like, i'm uh, you know, i-i, like i'm sitting in there, you know. and, uh, i start banging on the table, you know, to uh, so that hell look up, you know, like i'm sitting there you know and uh, *bang* (slams the table) you know, *bang* he wouldn't move. so then i start doing these yelping noises. like, *yip* (high pitched yelping noises) *yip*. no reaction because the guy is so focused, you see, he can just block out anything that's going on around him. see, that's how he played baseball. he dunks like he hits. \n\nelaine: so then what? \n\nkramer: well, then the waitress, she comes up and she tells me to shut up or they're gonna throw me out. \n\nelaine: why didn't you just call out his name? \n\njerry: what happened to you? \n\ngeorge: these kids called me a mary. \n\nelaine: a what? \n\ngeorge: i was jumping over a puddle, and for some reason i went like this. (george stretches out his arms in a ballet motion) and they called me a mary. so i chased them, and i tripped and i fell. \n\nkramer: yeah, you know kids, they can be very perceptive. \n\nelaine: hey, george? what is this? (laughing, elaine makes the same outstretched arm motion) what is that? no really, what is that? \n\njerry: hello? oh, hi roy. what? oh my god. wel-- how did this happen? what can i do? oh. i am so sorry. okay. bye. (hangs up) that was roy. he's under investigation for insurance fraud. \n\nkramer (singing): ...just a man and not a freak, joltin' joe dimaggio. joe, joe. go, joe... \n\njerry: i told you. \n\ngeorge: told me what? \n\njerry: i told you we shouldn't do it. \n\ngeorge: he didn't say anything. \n\njerry: he's got a house, a family, they could take away his license. you should have heard him. three notes, how stupid was that? we never should have got three notes. \n\nelaine: three notes? \n\njerry: yeah, you, me and george. \n\nelaine: you got me a note? \n\njerry: yeah. \n\nelaine: but i got my own note. \n\njerry: you what? \n\nelaine: i got a note from my gynecologist. \n\njerry: why'd you do that? \n\nelaine: i didn't know you were getting me a note. \n\njerry: of course i was getting you a note. \n\nelaine: but you didn't say anything. ohhh \n\njerry: neither did you, that's how he got caught. we sent in four notes from two doctors. \n\ngeorge: no doctor-- \n\nelaine: wait a-- \n\nkramer: how can you do that to your friend? he's got a wife, kids, and a lot of other stuff. oh, yyyeeah. \n\njerry: hi pam. \n\npam: hello. \n\ngeorge: hello. \n\njerry: i just thought ahh maybe i could talk to roy, if um \n\nroy: pam, did the x-ray from mrs. sloan... hi. \n\njerry: hi roy. \n\ngeorge: how ya doing? \n\nroy: come on back, i have a patient but she's under. \n\njerry: i don't even know what to say. \n\ngeorge: me neither. \n\njerry: i knew this would happen. \n\ngeorge: me too. \n\njerry: i mean the whole thing, it's just... \n\ngeorge: tragic. \n\njerry: well it's not tragic. \n\ngeorge: no? \n\njerry: no, it's... \n\ngeorge: unsettling? \n\njerry: okay. i mean, what if the-- \n\npam: i hope you're both happy. (she turns and walks away) \n\njerry: i'm not happy. \n\ngeorge: me neither. i've never been happy. \n\njerry: i mean i'm happy sometimes, but-but not now. \n\ngeorge: in college, maybe. those were fun times. \n\njerry: yeah, college was fun. \n\ngeorge: yeah. \n\njerry: yeah. \n\npam: you know the whole practice is in jeopardy, you know that? (she turns and walks away again.) \n\nroy: don't mind her. \n\njerry: oh please, i love her. \n\ngeorge: i've just met her but i'm very impressed. \n\nroy: i can't understand, i've never had a problem with these notes before. \n\njerry: well what's the next move, what's gonna happen now? \n\nroy: well, nothing really, as long as we get the physical therapist to go along with our story. \n\njerry: what? the physical therapist? why? \n\nroy: she just has to say the complaint was related to a dental problem. \n\ngeorge: how ya doing? \n\njerry: hi. ah look, i know i don't have an appointment but it's really important that i talk with julianna. \n\nreceptionist: i'm sorry, mr. seinfeld, she's not in. \n\njerry: yeah, i know she's mad at me, but i really have to speak with her. \n\nreceptionist: i told you, she's not here. \n\njerry: you don't understand, ah \n\nreceptionist: look, you have to leave. \n\njerry: wait a second, don't you-- \n\njerry: hi. hi. look, i don't know what you think -- \n\njulianna: please! \n\njerry: --but, you see, let me just talk to you for a second, see, what i did is inadvertently sent an insurance-- \n\njulianna: i treated you, so please, just get out of the office! \n\njerry: can't you just listen to me? \n\njulianna (releasing her child): run billy! run to the office and close the door! (to the receptionist) call the police! \n\njerry: the police? \n\nraymond: what is the --. hi george. (stands there with a big smile) \n\ngeorge: hello. \n\njerry (to george): raymond? \n\nelaine: well, i mean it's only a six month probation, it's a slap on the wrist. \n\njerry: yeah, i still don't see any dinner invitations forthcoming. \n\ngeorge: men have been popping into my sexual fantasies. all of a sudden i'll be, in the middle. \n\nelaine: of what? \n\ngeorge: and a guy will appear from out of nowhere. i say \"get out of here! what do you want? you don't belong here!\" \n\nelaine: what do they do? \n\ngeorge: they talk back. they go, \"hey george, how's it going?\" i say, \"get the hell out of here!\" \n\njerry: hey, it's the k-man. (he bangs on the glass to get kramer's attention, elaine laughs) maybe it's time you got a different hobby. \n\nkramer: man, ughhhh, wwwheh. i just came from roy's. i threw up from the gas. \n\njerry: did he say anything? \n\nkramer: no no, he's fine. \n\njerry (noticing something across the coffee shop): oh my god, it's... \n\ngeorge (looking over): joe dimaggio. \n\nelaine: (gasps) \n\nkramer: where? \n\njerry: having a cup of coffee. \n\nelaine: and he's dunking! \n\nkramer: yeah -- yeah. \n\njerry: wow. look at him. the yankee clipper \n\nkramer: (quietly) yeah. \n\njerry: here. \n\ngeorge: you see? now that is a handsome man. (elaine and jerry look right at george) oh please. \n\nkramer: wait, wait hold on now, wait, wait *bang* (he slams his hand down on the table, startling jerry, elaine and george) *bang* (again) *yip* (another high pitched yelping sound) *yip* *yip* see? i told you. \n\njerry: what causes homophobia? what is it, that makes a heterosexual man, worry? i think it's because, men know, that deep down we have weak sales resistance. we're constantly buying shoes that hurt us, pants that don't fit right. men think, \"obviously i can be talked into anything. what if i accidentally wander into some sort of homosexual store, thinking it's a shoe store, and the salesman goes, 'just hold this guy's hand, walk around the store a little bit, see how you feel. no obligation, no pressure, just try it. would you like to see him in a sandal?'\" \n\nsong over the end credits: joltin' joe dimaggio \n\nhttp: //www.baseball-almanac.com/poetry/joltinjoedimaggio.shtml \n\npublished: 1941 \n\nperformed by: les brown \n\nsung by: betty bonney \n\njerry: welcome everyone to the room...ah, the extra button....yeah ... what kind of a sicko would save these ...have them in a huge file, drawers that wide (small fingers opening imaginary drawers) where the hell is that ... i mean is it that hard to get round black buttons that they have to make it into such a great thing like this? ... is it such a great jacket ... the buttons are so unique, so one of a kind, you'll never find them - they save you the trouble of knocking your brain off - and we know they're going to fall off too that's the other thing ... \n\npatrice: everyone in my family's creative. and even though i'm working as an accountant now i'd really like to eventually live exclusively on my pappe-ay mache-ay hats \n\ngeorge: i don't understand. paper machay hats? \n\npatrice: uh uh \n\ngeorge: what if it rains? \n\npatrice: they're art. you hang them on the wall. \n\ngeorge: oh, art! \n\npatrice: it's my creative outlet. one of my passions. \n\ngeorge: any money in it? \n\npatrice: who so belongs only to his age, references only popenjays and mumbo jumbos \n\ngeorge: of course, right. \n\npatrice: thomas carlisle, 1864. \n\ngeorge: tommy c. \n\njerry: these are the receipts from 85 and i'm going to do 86. \n\nkramer: i'm sorry. i thought it was a legitimate charity. i didn't know you'd get audited \n\njerry: i don't blame you. i blame myself. \n\nkramer: no, blame me. \n\njerry: ok, i blame you. \n\nkramer: don't blame me. \n\njerry: what was i supposed to do? you knew i was on my first date with elaine. you come barging in here asking me to contribute money for a volcano relief fund for krakatoa. \n\nkramer: it was supposed to erupt. \n\njerry: i find the whole thing very embarrassing. \n\nkramer: you know what my feelings are about this. i don't even pay taxes. \n\njerry: yeah, tha's easy when you have no income. \n\nelaine: hi, \n\njerry: hi \n\nelaine: kramer, do me a favour will ya'. if you insist o making pasta in my apartment please don't put the tomato sauce on the pasta while it's in the strainer. all the little squares have hardened red sauce in them. \n\nelaine: what's so funny \n\njerry: kramer dating your room mate. it's funny. \n\nelaine: uh, it's a riot alice. \n\nkramer: when do you pit the sauce on? \n\nelaine: any other time. \n\nkramer: i like to strain the sauce. \n\nelaine: and ... i could really live without the tribal music ... and the make out sessions in the living room \n\nkramer: yeah, tina likes the couch. \n\nelaine: what are you doing? what is all this? \n\njerry: oh he's uh, helping me sort my receipts. i'm being audited. \n\nelaine: o, your being auditted? what for? \n\njerry: oh, i contributed money to a charity that turned out to be fraudulent. it's very boring. \n\nelaine: when was this? \n\njerry: uh, along long time ago, in a galaxy far far away. \n\nelaine: i remember you donated to some volcano thing on our first date. \n\njerry: volcano? really? \n\nelaine: oh, wait a minute. don't tell me that that was ... \n\njerry: something to drink? \n\nelaine: what did you think, that would impress me? \n\njerry: you got it all wrong. i was thinking only of the poor krakatoans \n\nelaine: like you this donation for 50 bucks and i'd start tearing my clothes off? \n\njerry: those brave krakatoans east of java. who sacrifice so much for so long. \n\nelaine: now you're being audited because of it. you see that's karma. \n\njerry: no, that's krama. \n\nelaine: so, waddya' going to do? \n\njerry: it's all taken care of. \n\nelaine: how is that? \n\nkramer: (chuckles) \n\njerry: an old friend of mine, whom you may have met, george costanza, has recently become intimate with a female accountant who was formally a highly placed official with an outfit known as the irs. and as we speak, at this very moment he is handing over to her all of my pertinent tax information. and she has assured us that the matter is well within her field of expertise. \n\nelaine: why is she doing this? \n\njerry: i don't know. it must be love. \n\ngeorge: i don't think we should see each other anymore. you're great but i'm i'm riddled with personal problems. \n\npatrice: what did i do? \n\ngeorge: nothing it's not you. it's me. i have a fear of commitment. i don't know how to love. \n\npatrice: you hate my earrings don't you? \n\ngeorge: no, no, \n\npatrice: and you didn't comment on the chop sticks. \n\ngeorge: i love the chop sticks. i, i personally prefer a fork but they look very nice. \n\npatrice: you're not telling me the truth. i must have done something. \n\ngeorge: i have a fear of intimacy \n\npatrice: don't give me cliches. i have a right to know. what did i do wrong? \n\ngeorge: nothing. it's not you.. \n\npatrice: i want the truth. \n\ngeorge: the truth. you want the truth? it is your earrings it is the chopsticks but it's so much more. you're pretentious. you call everyone by their full name you call my doorman, sammy, \"samuel\" but you didn't even say \"samuel\" you went \"sam - u- el\" papie-eh mach-eh what is papie-ay mach-ay? \n\npatrice: keep goin'. \n\ngeorge: i, i think i made my point. i'm sorry if i was a little harsh. \n\npatrice: no, i asked for the truth. thank you for being so honest. \n\ngeorge: can i uh, can i walk you back to work? \n\npatrice: i prefer to go alone. how much do i owe? \n\ngeorge: oh, please ... ... four dollars is f... \n\njerry: ... if this audit had happened to me and i didn't have this woman to help me i would have killed this man. i would have strangled the life out of him with my bare hands \n\nelaine: i don't blame ya' \n\njerry: have you ever been through an audit? \n\nelaine: no. \n\njerry: it's hell. it's the financial equivalent of a complete rectal examination. i would have killed this man. torn him limb from limb, ripped the flesh right off his bones ... \n\njerry: yeah \n\ngeorge: george \n\njerry: come up - ah, there he is, the man himself, george louis costanza. here i am about to go to the electric chair and my oldest friend is dating the governor \n\ngeorge: my whole life has been a complete waste of time, (chuckle) \n\njerry: and there's so much more to go. \n\ngeorge: now i know what i am supposed to do. it's so simple. tell the truth that's all. just tell the truth \n\njerry: so what happened? you gave her my tax papers? ... my papers? \n\ngeorge: oh, oh, your papers \n\njerry: what happened you didn't give her the papers? \n\ngeorge: no. i did. \n\njerry: so? \n\ngeorge: ...i broke up with her. \n\njerry: you what? \n\ngeorge: i broke up with her. \n\njerry: i'm being audited! and you broke up with her? \n\ngeorge: it's ok. it's fine. she'll do it. i'm sure she'll still do it. \n\njerry: why will she still do it? she hates you now. people don't do you favors after you dump them. \n\ngeorge: oh, no. we left on good terms. \n\njerry: how is that possible? \n\ngeorge: because i uh, i told her the truth. \n\njerry: oh, my god. \n\ngeorge: it's ok. \n\njerry: it's unheard of ... \n\ngeorge: she asked me to. \n\njerry: so you lie! what did you tell her? \n\ngeorge: i told her that she was pretentious. \n\njerry: pretentious!? the woman has my tax papers. you told her she was pretentious? the irs. they're like the mafia. they can take anything they want \n\nelaine: how would you like it if someone told you the truth? \n\ngeorge: like what? what could they say? \n\nelaine: there are plenty of things to say. \n\ngeorge: like what? i'm bald? what is it specifically? is, is there an odor i'm not aware of? \n\nelaine: george, please. \n\ngeorge: give me one. \n\nelaine: you sure? \n\ngeorge: yes. \n\nelaine: what? \n\nelaine: forget it. you are very careful with money. \n\ngeorge: i'm cheap? you think i'm cheap? how could you say that to me? i can't believe this. how could you say that to me? \n\nelaine: you asked me to. \n\ngeorge: you should have lied. \n\nelaine: huh, so should you. \n\njerry: ok, wait a second, wait a second, what happened to my papers? \n\ngeorge: (ignoring jerry) i mean i'm not really working right now. \n\nelaine: i know. \n\ngeorge: when i was working i spent baby. \n\njerry: yeah, i know champagne, limos, cigars. what happened to the papers? \n\ngeorge: she put them in her pocketbook. i guess she took them with her. \n\nelaine: pocketbook or a handbag? \n\njerry: is that relevant? she took them. call her office. \n\ngeorge: give me the phone. (dials) yea, hi i would like to speak to patrice. ... what? ... oh really? ... oh, ok, thank you, ... (hangs up) \n\njerry: what? what? \n\ngeorge: she never came back from lunch. \n\njerry: this is no good. this is no good. call her house. \n\ngeorge: (dials) hi, are you ok? no, no,.. huh, (hangs up) she hung up. \n\njerry: not good. \n\ngeorge: all right. there's nothing to be worried about. she's just a little annoyed right now. tomorrow i'll personally go over there. i'll apologize. i'll get the papers. don't worry. don't worry. (exits) \n\njerry: not good \n\nkramer: yeah, it's a windshield. \n\njerry: i can see that. what's it for? \n\nkramer: i found it on the road. \n\njerry: yeah (to buzzer) \n\nelaine: (from intercom) i just finished working out are you busy? \n\njerry: come on up. \n\nkramer: can you believe somebody threw this out? you know i'm going to make a coffee table out of this and surprise tina. \n\njerry: wouldn't it be invisible? i mean, what, are you going to just sense it's in front of the couch? \n\nkramer: wow \n\nelaine: hell-oo \n\nkramer: hell-oo \n\njerry: what's with you two? \n\nelaine: you haven't told him? \n\njerry: tell me what? \n\nelaine: huh, go ahead, tell him. \n\nkramer: i, i saw her naked. \n\nelaine: he saw me naked. kramer, ... saw me naked. \n\nkramer: well, you know, ... it was an accident. \n\nelaine: who walks into a woman's bedroom without knocking. i want to know! \n\nkramer: i thought it was a closet. \n\njerry: completely naked? \n\nkramer: completely naked. \n\nelaine: jerrryyy, how can i go on? \n\nkramer: all right. i'll tell you what. if it's going to make you feel any better you can see me naked. \n\nelaine: no thanks! \n\nkramer: no, i want you to see me naked. \n\nelaine: no, no no. \n\nkramer: no, i want to show you. \n\nelaine: no! jerry! jerry! \n\njerry: ok, just a second lets not lose our heads here. kramer you know you are always welcome in my home but as far as mr. johnson is concerned, that's another story. \n\nelaine: what is this? \n\nkramer: well, it's a windshield. it's going to be your new coffee table. \n\nelaine: ah, i'm going to kill myself on that thiing. you can't even see it. \n\njerry: you'll sense it. \n\njerry: well, what happened? was she there? \n\ngeorge: no, no she wasn't. \n\njerry: you didn't get my papers? \n\ngeorge: no, i didn't. \n\njerry: well, where is she? \n\ngeorge: a mental institution. \n\njerry: why is it so difficult, uncomfortable, to be naked. it's because when you have clothes on you can always kinda make those little adjustments which people like to do ... you feel like you're getting it together, yeah, yeah pretty good (pulling at lapels, pockets etc.) feeling good looking good but when you're naked it's like it's so final you're, well that's it. (no movements) there's nothing else i can do. that's why i like to wear a belt when i'm naked. cause i feel it gives me something, i know i'm naked, but you know, (tugging and lifting belt) i like to get pockets to hang off of the belt that would be, wouldn't that be the ultimate? to be naked and still be able to do this (hand in pocket) i think that would really help a lot. \n\njerry: a mental institution? \n\nkramer: you know what they do in there? did you see coocoo's nest? they put those electrodes in your head. \n\ngeorge: it's not really a mental institution. it's more like a depression clinic. she went out to woodhaven and checked herself in. i'm, i'm sick over this. \n\nelaine: who told you this \n\ngeorge: her roommate. i've driven women to lesbianism before but never to a mental institution. \n\nkramer: my friend bob sacamano had shock treatments. but his synapses were so large, it had no effect. \n\njerry: you know i hate to raise a crass financial concern but was there any information as to the where abouts of my papers! \n\ngeorge: she put them in her pocket book. she probably took them out there with her. \n\njerry: so what now? \n\ngeorge: i don't know. \n\njerry: can we go out there? \n\ngeorge: where? \n\njerry: woodhaven. \n\ngeorge: we could. \n\ngeorge: i'm very nervous about this. i've never spoken to a mental patient before. \n\njerry: my cousin douglas was in a place like this one time . he came over to my house for dinner. there was no soda and he went bezerk. he was screamin' \"where's the pepsi, where's the pepsi?\" \n\ngeorge: i should be in a place like this. i envy this woman. ya' get to wear slippers all day. friends visit. they pity you. pity is very underrated. i like it it's good. plus they give you those word association tests. i love those. \n\njerry: that'd be great. there's no wrong answer. \n\ngeorge: potato \n\njerry: tuberculosis \n\ngeorge: blanket \n\njerry: leroy \n\ngeorge: grass \n\njerry: tuberculosis \n\ngeorge: oh, boy. here she comes. \n\nelaine: oh, my god. \n\nelaine: kramer! \n\nkramer: hey. \n\nelaine: will you please put something on. \n\nkramer: listen uh, you want some leftovers? i made some african food. there's, yambalas and uh, sambusa. \n\ntina: kramer, are you coming back to bed? \n\nkramer: yeah, yeah, i'll be right there baby. \n\ntina: oh, hi elaine. (returns elaine's ear rings) what did you think of the coffee table? \n\nelaine: it's invisible. \n\nkramer: so, is everything cool? or what? \n\ntina: yeah, um, you seem little bit dysfunctional. \n\nelaine: well, \n\ntina: come on elaine. just tell us the truth. \n\nelaine: the truth!, you want the truth? \n\npatrice: who are you? \n\ngeorge: oh, this is my friend jerry. \n\npatrice: why are you talking like that? and what do you want? \n\njerry: want, want? what could i possibly want? uh, i just came because i, i heard so many nice things about you from george. \n\npatrice: george thinks i'm pretentious. \n\ngeorge: pretentious? who, who isn't pretentious? ha, ha, if everyone who was pretentious was in a mental institution, ... uh, obviously this isn't a mental institution. \n\npatrice: you're just trying to take it all back because you're feeling guilty i'm in here. \n\ngeorge: no, that's not it at all. \n\npatrice: don't lie george. \n\ngeorge : i'm not a lier! \n\ngeorge: uh, we're cool. everything's cool (to security attendent) \n\njerry: just chatting. friendly. \n\ngeorge: all righty, no reason for us to uh, raise our voices. \n\npatrice: i know what you said. you can't change that. \n\ngeorge: what i said? i say stupid things all the time i can't go two minutes without saying stupid things. \n\njerry: it's one stupid thing after another. so let me ask you, when you come to one of these places, what do you bring your pocketbook? \n\ngeorge: you should be the one criticizing me. i, i'm lucky to even know someone like you. \n\npatrice: you mean that? \n\ngeorge: of course i mean that. i am incapable of guile. \n\njerry: he's never guiled. you know some women keep a lot of important papers in their, uh, pocket books. like for example oh, someone else's personal financial papers. \n\npatrice: papers? oh, jerry, you're the jerome with the tax problem. you know after that day with george i got so cuckoo i threw out all your papers. so i'd love to help you but i'll need the copies. \n\njerry: there are no copies. \n\npatrice: so are you saying you want to continue seeing me? \n\njerry: who makes copies? \n\nelaine: the truth is ... i think you make ... a very nice couple. \n\nkramer: oh, \n\ntina: kramer, \n\ntina: here kramer? \n\nkramer: no, lets go to the couch... \n\njerry: (on phone)yes, i'm trying to get a copy of a receipt for a computer that i bought there.... it was 1987 ... i remember i talked to a guy - he had like a maroon sport jacket - and he might have had a toupee - oh, it was a weave - ok uh, then i'll come bye ok, bye. \n\njerry: anybody want to take a walk down to 48th street? i think i may have tracked down another receipt. \n\nelaine: i can't. i have to go visit tina in the hospital. \n\njerry: george? \n\ngeorge: i'm going to a poetry reading with patrice first time poets, in a burnt out building, down by the docks, supposed to be good. \n\nkramer: hey, are you going to the hospital now? \n\nelaine: yeah, i suppose i am. \n\nkramer: all right, great, great uh, we'll share a cab. \n\njerry: you're going by 48th st. you can give me a ride. \n\ngeorge: hey, i'm getting in on that. \n\nelaine: you know you're chippin' in. \n\ngeorge: you're going that way anyway! \n\njerry: i was audited last year. at first i thought well, irs kinda sounds like toys r us maybe won't be so bad. maybe they have a sense of fun about it, you know. but it's it's bad. it's an ordeal. and they don't do anything to keep your spirits up through the ordeal. i think they should take all your receipts and put them in one of those big lucite sweepstake drums and just kinda crank it around there. you know give me a feeling like you might win something. you know what i mean? then they can pull them out one by one and go \"oh, i'm sorry that's another illegal deduction. but we do have some lovely parting gifts for you. jail!\" \n\n[setting: night club] \n\njerry: i have never seen an old person in a new bathing suit in my life. i don't know where they get their bathing suits, but my father has bathing suits from other centuries. my parents live in florida, and if you go down there and you forget your bathing suits then they want you to wear one of theirs. you know how that gets? \"you need trunks son? i've got trunks for you. you can wear my trunks.\" fathers don't wear bathing suits, they wear trunks. it's kind of the same thing a tree would wear if it went swimming. so i get in the water with in thing and it's like floating around me somewhere. did you ever put on a bathing suit that you don't even know exactly where you are inside the bathing suit? you bump into somebody you know \"no i'm parasailing, i'm waiting for the boat to come back.\" \n\n[setting: florida, evening, condo of jerry's parents] \n\nhelen: (looking by the window) they were supposed to be here at 730. call the airlines again. \n\nmorty: (searching in a kitchen drawer) what happened to the scotch tape? who takes the scotch tape? nobody returns anything around here. \n\nhelen: oh i think that's them! \n\nmorty: you what i'll do next time? i'll hide it so nobody can find it. \n\nall: hi, welcome, greetings, hugs, etc. \n\nmorty: welcome to florida! \n\nelaine: hi mr. seinfeld! (hug) \n\njerry: hey, there's the old man! (hug) \n\nmorty: so, what took you so long? \n\njerry: ahh, we waited 35 minutes in the rent-a-car place. \n\nhelen: i don't know why you had to rent a car. we would have picked you up. \n\njerry: what's the difference? \n\nhelen: you could have used our car. \n\njerry: i don't wanna use your car. \n\nhelen: what's wrong with our car? \n\njerry: nothing. it's a fine car. what if you wanna use it? \n\nhelen: we don't use it. \n\nmorty: what are you talking? we use it. \n\nhelen: if you were using it, we wouldn't use it. \n\njerry: so what would you do? you'd hitch? \n\nhelen: how much is a rent-a-car? \n\njerry: i don't know. 25 bucks a day. \n\nhelen: what? you're crazy. \n\nmorty: plus the insurance. \n\njerry: oh, i didn't get the insurance. \n\nmorty: how could you not get the insurance? \n\nhelen: we'll pay for the car. \n\njerry: you're not paying for it. \n\nhelen: morty. (asking him to back her. he doesn't) \n\njerry: god it's so hot in here. why don't you put on the air conditioning? \n\nhelen: you don't need the air conditioner. so, you have your speech all ready? \n\njerry: it's not a speech. do i have to make a speech? \n\nhelen: of course, they're giving a testimonial for your father. you could do your comic routines. \n\njerry: (ironically) oh yeah, that will go over real well with that crowd. \n\nelaine: (looking by the window) ooh, you have a lake? \n\njerry: the lake isn't real. \n\nhelen: the lake is real. \n\nmorty: are you kidding? they built the lake. \n\nhelen: but it's real. it's water. \n\nhelen: where are you going with those? \n\njerry: i'm gonna put elaine's stuff in here. \n\nhelen: don't sleep in there. you can you use the bedroom. \n\nelaine: i can't take your bedroom. \n\nhelen: i'm up at 6 o'clock in the morning. \n\nelaine: i can't kick you out of your bed. \n\nhelen: we don't even sleep. \n\njerry: ma. \n\nhelen: but this is sofa bed, you'll be uncomfortable. \n\njerry: (to morty) what about you? \n\nmorty: why should i be comfortable? \n\njerry: (to helen) what about him? \n\nhelen: don't worry, he's comfortable. \n\nmorty: i'll sleep standing up. i'll be fine. \n\nhelen: will you stop? \n\nelaine: yeah, i'll just stay in here. (goes in the guest room) \n\nhelen: jerry, (asking jerry to go in the kitchen so elaine won't hear) jerry. you don't have to stay on the couch on my account. the two of you could stay in there together. \n\njerry: na, that's not such a good idea. \n\nhelen: well i tought that... \n\njerry: not now. she's right inside. \n\nhelen: (quieter) what happened? \n\njerry: i don't know. we decided we don't really work as a couple. \n\nhelen: what does that mean? \n\njerry: well... \n\nmorty: (comes to the kitchen and with a loud voice) why are you whispering? \n\njerry: shh! nothing, nothing. \n\nhelen: elaine... \n\nmorty: (still loud) what about her? \n\njerry: (tries to explain to morty but elaine then comes out of the guest room to get more luggage, so he fakes a conversation) ...but you know, look at the sun-dried tomatoes. where were they five years ago? it just goes to show you. you never know what... huh (waiting for elaine to go back in the guest room) you know... huh... what could happen to a vegetable. it could just take right off at any time. (morty finally gets it. so jerry goes on quieter) we've tried all kind of arrangements, but we can't seem to be friends when we sleep together. \n\nmorty: (morty goes on louder! did he ever whisper in any episode? -) why do you need more friends? you've got plenty of friends. \n\nhelen: he's an idealist. \n\nmorty: what the hell are you looking for? \n\njerry: i'm looking. that's the point. i like looking. \n\nhelen: he likes looking. \n\nmorty: so look. \n\nhelen: but how long can you look? \n\njerry: i'm going for the record. \n\nhelen: you know your father wouldn't say so but he's really glad you came. \n\njerry: oh, come on. \n\nhelen: this is a big thing for him. outgoing president of the condo association. \n\n(knock on door: this is jack and doris, neigboors) \n\nmorty: aha! \n\ndoris: so they arrived safely. \n\nmorty: (to jerry) you remember jack and doris? \n\njerry: nice to see you. this is elaine. \n\nelaine: hi. nice to meet you. \n\njack: so jerry, you came all the way down here for this? \n\nelaine: and scuba diving. \n\nhelen: scuba diving? who's going scuba diving? \n\njerry: we're going scuba diving. we'll be back in time. \n\nhelen: what do you have to go scuba diving for? \n\njerry: for fun. \n\nhelen: for fun? \n\nmorty: jack have some spong cake. \n\njack: no. thanks, no. \n\nmorty: jack is emceeing tomorrow. he's in charge of the whole thing. \n\njack: so jerry, your mother told me you're gonna do one your little comedy skits tomorrow? \n\njerry: i don't think so. \n\njack: no? listen morty you wanna settle up for last night? (morty nods) all right. i owe you 19.45$ (he gets his checks book and a pen from his pocket). \n\nmorty: what did you have? you had the minute steak? \n\njack: yeah. \n\nmorty: did you have a coke or what? \n\njack: i did not have a coke. \n\nmorty: somebody had a coke. \n\nhelen: oh i had a coke. \n\ndoris: and i had the scampi. \n\njack: so that's 17.10$ and the tax and the tip. \n\nmorty: all right. make it 20 bucks. \n\njack: it's 19.45$, morty. (he gives him the check) \n\nmorty: 19.45$ ? \n\njack: see? you know your father. he can't get a write to the penny, but that's why he was such a good president. \n\njerry: what kind of pen is that? \n\njack: this pen? \n\njerry: yeah. \n\njack: this is an astronaut pen. it writes upside down. they use this in space. \n\njerry: wow! that's the astronaut pen. i heard about that. where did you get it? \n\njack: oh it was a gift. \n\njerry: cause sometimes i write in bed and i have to turn and lean on my elbow to make the pen work. \n\njack: take the pen. \n\njerry: oh no. \n\njack: go ahead. \n\njerry: i couldn't \n\njack: come on, take the pen! \n\njerry: i can't take it. \n\njack: do me a personal favor! \n\njerry: no, i'm not... \n\njack: take the pen! \n\njerry: i cannot take it! \n\njack: take the pen! \n\njerry: are you sure? \n\njack: positive! take the pen! \n\njerry: o.k. thank you very much. thank you. gee, boy! \n\nhelen: jack, what are you doing? \n\njack: stop it! \n\ndoris: jack, we should go. (they go to the door) it was nice meeting you. \n\nelaine: mmm, nice to meet you. \n\njerry: thanks again. \n\njack: come on! \n\ndoris: (to morty) she's adorable. (they leave) \n\nhelen: (as soon as the door's closed) what did you take his pen for? \n\njerry: what he gave it to me. \n\nhelen: you didn't have to take it. \n\nmorty: oh my god! she's gotta make a big deal out of everything. \n\njerry: he offered it to me. \n\nhelen: because you made such a big fuss about it. \n\njerry: i liked it. should i have said i didn't like it? \n\nhelen: you shouldn't have said anything. what did you expect him to do? (the camera shows elaine shaking her head at their dispute) \n\njerry: he could have said \"thank you, i like it too\" and put it back in his pocket. \n\nhelen: he loves that pen. \n\nmorty: oh come on! \n\nhelen: he talks about it all the time. every time he takes it out he goes on and on about how it writes upside down, how the astronauts use it. \n\njerry: if he likes it so much, he never should have offered it. \n\nhelen: he didn't think you'd accpet. \n\njerry: well, he was wrong. \n\nhelen: i know his wife. she has some mouth on her. she'll tell everyone in the condo now that you made him give you the pen. they're talking about it right now. (again we see elaine smiling at their argument) \n\njerry: so you want me to return it? \n\nhelen: yes. \n\nmorty: he's not gonna return the pen. that's ridiculous. \n\njerry: hey i don't even want the pen now! \n\nmorty: jack can afford to give away a pen with all his money. believe me. he gives me a check for 19.45. he didn't have a coke. ho, ho, ho! \n\nelaine: here, let me see it. (she takes a pad to try the pen) hey, it writes upside down. \n\n[setting: condo's guest room] \n\nelaine: come in. \n\njerry: are you o.k. in here? \n\nelaine: why is it so hot in here? how can they sleep like this? \n\njerry: it's only for three days. today's over and we have tommorow. we leave on sunday. it's one day, really. \n\nelaine: oh man. what is with this bar? it's right in my back. it's killing me. \n\njerry: oh you wanna switch? i'm sleeping on a love seat. i've got my feet up in the air like i'm in a space capsule. \n\nelaine: i am never gonna fall asleep. \n\njerry: oh, no don't say that. you'll jinx me. \n\nelaine: how can they not put the air conditioning on? \n\njerry: they're nuts with temperature. \n\nelaine: this bar is right in my back! it's making a dent. \n\njerry: how about that guy writing a check for 19.45? \n\nelaine: i'm sweating here. i'm in bed, sweating. \n\njerry: it's one day. half a day, really. i mean you substract showers and meals, it's like twenty minutes. it will go by like that. (snapping his fingers) \n\n[setting: condo, morning] \n\nmorty: stay on 95 south to biscayne boulevard. then you make a left turn. put you blinker on immediatly, there's an abutment there. then you're gonna merge over very quickly, but stay on biscayne. don't get off biscayne. you understand me? \n\njerry: stay on biscayne. \n\nhelen: you're going underwater? \n\njerry: yes. generally that's where scuba diving is done. \n\nhelen: what do you have to go underwater for? what's down there that's so special? \n\njerry: what's so special up here? \n\nelaine: oh! \n\nhelen: what's the matter? \n\nelaine: my back. \n\nhelen: what happened? \n\nelaine: that... that bed. the bar was right in my back. \n\nhelen: (to jerry) i told you to let us sleep in there. \n\njerry: then you would be hunched over. \n\nelaine: i don't even know if i can go scuba diving. \n\njerry: you can't go? \n\nhelen: so stay home. \n\nelaine: you can go. \n\njerry: without you? that's the whole reason you came down here. \n\nhelen: don't go. \n\njerry: you sure? \n\nmorty: maybe you should see a doctor. \n\njerry: we'll stay in a hotel tonight. \n\nelaine: (whispering to jerry) yes! \n\nhelen: no, we'll stay in there. \n\njerry: why don't you get a new sofa? \n\nmorty: nobody uses it. \n\njerry: i'm buying you a new sofa. \n\nhelen: oh jerry, don't talk crazy. \n\nelaine: mrs seinfeld, please. i am begging you. put the air conditioner on. \n\nhelen: you're hot? \n\nelaine: i've lost 6 pounds. \n\nhelen: i don't even know how to work it. \n\nmorty: i keep telling her it's like an oven in here. \n\nevelyn: is everybody up? \n\njerry: hi. how are you? \n\nevelyn: hello jerry. \n\njerry: evelyn, this is elaine. \n\nelaine: (with pain) hi evelyn. \n\nevelyn: jerry you got thin. \n\njerry: too thin? \n\nhelen: oh stop worrying so much about how you look. \n\nevelyn: so where's the new pen? (everybody's surprised by this question) \n\njerry: (jerry scratches his head and acts like he's not sure what she's talking about) what? \n\nevelyn: the pen. the one jack klompus gave you. \n\nhelen: how did you know that? \n\nevelyn: blanche told me. \n\nhelen: blanche? \n\nevelyn: that's some good pen. it writes upside down. \n\nelaine: the astronauts use them. \n\nhelen: what did blanche say? \n\nevelyn: i don't know. she said jerry wanted the pen. \n\njerry: i never really wanted the pen. \n\nmorty: he gave him the pen. \n\nhelen: morty. \n\nevelyn: why you don't like the pen? \n\njerry: no, no, i... \n\nevelyn: cause if you don't like it, give it back to him. \n\nhelen: is that what she said? \n\nevelyn: who? \n\nhelen: blanche. \n\nevelyn: what are you talking about? \n\nhelen: hello? oh hello gussy. what? jerry wouldn't do that. jack gave it to him. all he said was he liked it. i mean nobody put a gun to his head. (to jerry) you're giving him back that pen. (she continues the discussion with gussy but we don't hear it.) \n\nelaine: somebody please-- the air conditioner! \n\nmorty: (morty gets up) oh! i forgot all about it. \n\njerry: all i said was \"i like the pen\". \n\nmorty: how the hell do you work this thing? \n\n[setting: still the condo, later] \n\nhelen: maybe you shouldn't go tonight. \n\nelaine: no no, i wanna go. \n\nhelen: but your back hurts. \n\nmorty: maybe a couple of muscle relaxers would help. \n\nelaine: oh, oh, o.k. (helen holds her sweater tight against herself) you can turn down the air conditioning if you want. \n\nhelen: no. i'm fine. \n\nelaine: you're not too cold? \n\nhelen: no. \n\njerry: don't be alarmed. \n\nmorty: oh my god! what the hell happened to you? \n\njerry: i'm o.k. my capillaries burst. \n\nhelen: your capillaries? do you know what you look like? \n\njerry: (to elaine on the floor) how are you doing? \n\nelaine: having a good time! \n\njerry: is it my imagination or is it freezing in here? \n\nhelen: what happened to your eyes? \n\njerry: well i started to go under... \n\nhelen: with the instructor? \n\njerry: yeah, and i got about ten feet down and i felt this tremendous pressure on my mask. like my eyeballs were being sucked out of their sockets. \n\nhelen: i told you... \n\njack: excuse me. (to helen) doris would like to borrow red your pocketbook to go with her shoes. (to elaine on the floor) the shoes have to match the pocketbook. (to the others) what's she doing? yoga? \n\nelaine: my back hurts. \n\njack: morty you gotta hurry up. get ready. \n\nmorty: we got plenty of time. \n\njack: (to jerry) what happened to you? \n\njerry: i got in a fist fight with one of the ladies at the pool. \n\nhelen: it's from scuba diving. \n\njack: what's there to see underwater? \n\n(helen turns to jerry and makes a face like: give him back the pen) \n\njerry: listen m. klompus, it was really a nice gesture of you to give me the pen, but i don't really need it. \n\njack: you what? \n\njerry: i mean it's a terrific pen, but i think you should keep it. (he hands the pen to jack) \n\njack: well i mean... \n\njerry: take it. \n\njack: all right! (he smiles and take it) \n\nmorty: you know jack, you've got a hell of a nerve taking that kid's pen. \n\njack: whose pen? \n\nmorty: his pen. \n\njack: this happens to be my pen. \n\nmorty: you didn't give it to him. \n\njack: what are you talking about? he pratically begged me for it. \n\nmorty: where do you come off with this crap? \n\njack: listen, do you think i take everything everybody offers me? you offered me sponge cake yesterday. did i take it? \n\nmorty: you said you didn't want it! \n\njack: of course i wanted it! i love sponge cake! \n\nmorty: then who the hell said you couldn't have any? i mean what the hell do i care whether you have sponge cake? \n\njack: because i saw the look on your face last week when i took the scotch tape! \n\nmorty: ahh! ahh! so you got the scotch tape! i've been looking all over for it! \n\njack: don't worry about it! i'll give it back! \n\nmorty: i don't want it! \n\njack: i don't want it! \n\nmorty: you know jack, do me a favor will you? take the pen and the scotch tape, and get the hell out of here! \n\njack: listen do you think i give a damn? \n\nmorty: aah! (jack leaves) the nerve of that guy! taking back that pen. well that's it for them. \n\njerry: what is going on in this community! are you people aware of what's happening? what is driving you to this behavior? is it the humudity? is it the muzak? is it the white shoes? \n\nhelen: i have no use for either one of them. i don't even want them there tonight. (she still has the pocketbook in her hands) \n\njerry: isn't he supposed to be the emcee? \n\nmorty: yeah, he's supposed to be the emcee. \n\njerry: well. this should be a very interesting evening. \n\nelaine: (still on the floor) uh... what about those muscle relaxers? \n\n[setting: reception room, evening] \n\nphotographer: say astronaut. \n\nelaine: say what? (laughing) say what? \n\njerry: (jerry brings her back) you took too many of those pills. \n\nmorty: astronaut? \n\nhelen: say it. \n\njerry, morty and helen: astronaut! \n\nelaine: (still laughing, she says it just as the picture is taking) astro...naut! \n\nmorty: good. o.k. (the photographer walks away) what about last year when i took him to the hospital every day? did he ever say thank you? \n\njerry: oh god. (foreseeing an arm's grabbing as he sees uncle leo entering with his wife stella) \n\njerry: (to leo) uncle leo. \n\nleo: hello! \n\nstella: morty are you nervous? \n\nmorty: what nervous? \n\nleo: (to jerry while he's grabbing his arm as usual) what's with the sunglasses? who are you? van johnson? \n\njerry: i've got a black eye. \n\nstella: (to elaine in a childish voice) hello. \n\njerry: oh uh, elaine, this is my aunt stella. \n\nhelen: (shouting as she imitates marlon brando) stella! stella! \n\njerry: (to stella) her back hurts. \n\nstella: humm... we saw you on \"the tonight show\" last week. \n\nleo: i thought johnny was very rude to you. he didn't even let you talk. \n\njerry: no, no. \n\nleo: you need some new material. i've heard you do that dog routine three times already. \n\nelaine: (still with her imitation, shouting even louder) stella! stella! \n\nleo: listen, you should get your cousin jeffrey to write some material for you. \n\nmorty: what are you talking? jeffrey works for the parks department! \n\nleo: you should read the letters he's written. he's funnier than the whole bunch of you! (jack enters with doris) oh, here's jack. we should sit down. \n\nstella: (to helen on a sarcastic tone of voice) this better be good. i'm missing \"golden girls\" for this. \n\nhelen: (laughing hypocritically till stella walks away) i hate her like poison. \n\n(a few minutes later, the ceremony is about to begin. someone in the crowd yells: \"hey jack let's get started!\" everyone applause and we see, from left to right, all sitting on the same side of a long table, facing the public stella, leo, elaine, jerry, helen, morty, jack at the microphone, doris, and four other people.) \n\njack: (on the microphone) ladies and gentlemen, as you know, every year, phase two of the pines of mark gables honors the previous year president. and this year we are honoring morty seinfeld (the crowd applause and someone yells morty!) a man who slept more hours on the job than ronald reagan. \n\nmorty: (to helen) slept on the job? (she shushed him) \n\njack: being president of the condo is not easy. it requires hard work, dedication, and commitment, and unfortunately he possesses none of these qualities. (everyone laugh except jerry, helen, and morty. even elaine who's still druggy) \n\nhelen: (morty complains again to helen) he's joking. \n\njack: his administration did excel in one department the hiring of incompetents. \n\nmorty: (to jack, loud) that's what you say. \n\njack: but we do owe him a debt of gratitude because by not fixing the crack in the sidewalk, he put mrs ziven out of commission for a few weeks. (morty is now the only one not laughing) \n\nmorty: (loud) tell them when you took my son's pen back. tell them about that! (he gets up) \n\njerry: dad! \n\nmorty: (to the crowd) he gave my son a pen, and then he takes it back. tell them about that! \n\njack: he gave it to me! \n\nmorty: come on. that's enough, sit down! \n\njack: i'm not sitting down! \n\njack: ow! you broke my dental plate! (jack is touching his dental plate while morty reaches in jack's pocket to get the pen) doris! he broke my dental plate. you son-of-a-bitch! i'm gonna sue you. (he leaves the table and morty follows him and continue arguing with him. jerry now have the microphone in his hands and the crowd begins to think the ceremony is over.) \n\nhelen: jerry, do your act. \n\njerry: (in the microphone, but to helen) i can't. nobody's even listening. \n\nhelen: they're all gonna leave. \n\njerry: (to himself) oh god! (in the microphone) huh... hey! how you folks doing tonight? (everybody in the crowd is talking over jerry) \n\nman in the crowd: who are you? \n\njerry: (still with his sunglasses) have you ever noticed how they always give you the peanuts on the planes? \n\nwoman in the crowd: (to heckle jerry) not my harry. he flies first class. \n\njerry: who ever thought the first thing somebody wants on a plane is a peanut? \n\nman in the crowd: i'd rather have a bottle of scotch! \n\nhelen: (to jerry) do the dog routine. \n\njerry: all i said was i liked the pen! \n\nelaine: (wakes up and yells very loud) stella! \n\n[setting: condo, morning] \n\nchiropractor: you could aggravate it. i wouldn't go anywhere for at least five days. \n\nelaine: five days? you want me to stay here for five more days? \n\njerry: there must be some mistake. \n\nchiropractor: i'm afraid not. \n\nelaine: (discouraged) five days. here. \n\nhelen: (to jerry, happily) so we have you for five more days! \n\njerry: (to elaine) well there's really no point in me staying. i mean you just gonna be... \n\nelaine: excuse me? \n\njerry: nothing. \n\nevelyn: good morning. \n\njerry: hi evelyn. \n\nevelyn: (to helen) has morty decided on a lawyer yet? \n\nhelen: i don't think so. \n\nevelyn: because my nephew larry could do it. he's a brilliant lawyer. he says jack has no case. \n\nhelen: well i'll ask him when he gets up. \n\nevelyn: oh, and i spoke to arnold. and he says that according to the bylaws of the condo constitution, they need six votes to throw you out for unruly behavior. not five. doctor chernov is the one you'll have to suck up to. \n\nmorty: aw! aw! oh my back! oh my back! it's that bar. who the hell could sleep on that thing? \n\nhelen: i was very comfortable. \n\nevelyn: morty, arnold says they need six votes to throw you out. \n\nhelen: it's in the constitution. \n\nmorty: (to the chiro) who are you? \n\nchiropractor: i'm a chiropractor. \n\nmorty: what are you kidding me? \n\nelaine: (to jerry) five more days? \n\njerry: well today's almost over. and weekdays always go by fast. friday we're leaving. it's like two days really. it's like a cup of coffee. it will go by like that. (snapping his fingers) \n\n[setting: night club, closing monologue] \n\njerry: is florida not hot and muggy enough for these people? they love heat. i mean if they ever decide to land men on the sun, i think these old retired guys would be the only ones that will be able to handle it. they'll just sit there on the sun, on the redwood benches, washcloth on the head going \"close the door, you're letting all the heat off the sun. i'm trying to get a sweat going.\" \n\njerry: so i'm on the plane, we left late. pilot says we're going to be making up some time in the air. i thought, well isn't that interesting. we'll just make up time. that's why you have to reset your watch when you land. of course, when they say they're making up time, obviously they're increasing the speed of the aircraft. now, my question is if you can go faster, why don't you just go as fast as you can all the time? c'mon, there's no cops up here, nail it. give it some gas! we're flying! \n\ngavin: travelling, of course, is the best education. do you know last year i was in over forty, forty-five countries, and i would have gone to more but i had just got a puppy, and he was too young to take with me. but now i won't travel without him. \n\njerry: is he on the plane now? \n\ngavin: oh yes. yes, he's in the, he's in the baggage compartment. i don't know why they won't let him sit up here with me. he's a lot better behaved than most of the dregs you find onboard here. do you, do you have any pets? \n\njerry: uh, just my next door neighbor. \n\ngavin: you're missing out on a relationship that could enrich your life in ways that you never could have thought possible. \n\njerry: howbout picking up their, you know. you find that enriching? \n\njerry: what's the matter? \n\ngavin: oh, i'm feeling a bit queasy. \n\nattendant #1: sir, we're gonna make an emergency landing in chicago and get you to a hospital. \n\ngavin: my dog. what about my dog? \n\nattendant #1: uh, you have a dog? \n\nattendant #2: do you know anyone on the plane, mr. palone? \n\ngavin: jerry? \n\njerry: huh? how you feeling? \n\ngavin: would you take care of farfel? \n\njerry: farfel? \n\nattendant #2: it's his dog. we're landing in chicago to get him to a hospital, could you take his dog to new york? \n\njerry: the dog? the dog?? \n\ngavin: i'm sure it's only for a day or two. \n\njerry: but, you know, what if, you know? \n\ngavin: give me your address and phone number, i'll call you. \n\njerry: the dog? \n\njerry: let go, farfel! let go, gimme that! gimme the sneaker you stupid idiot! shut up! (to elaine) so what would you do? \n\nelaine: well it's only been three days, i'm sure he's gonna call. \n\njerry (to farfel): stop it! shut uuuuuup!!! (to elaine) do you believe this? do you believe what i'm dealing with here, i've got a wild animal in the house! he's deranged, maybe he's got rabies. i can get lockjaw. \n\nelaine: if only. \n\njerry: look at this place. he's going everywhere, i can't go out of the house at night. i haven't performed in three days. this'll be my first night out of the house since i got back. \n\nelaine: hey, when you walk him, do ya... \n\njerry: do i what? \n\nelaine: do you pick it up? \n\njerry: yes, i pick it up. \n\nelaine: you pick it up?!? \n\njerry: well you have to. \n\nelaine: oh, boy would i love to see that. \n\njerry: shut up!! shut up farfel, stop it! (to elaine) i don't know what to do. i mean what if i take it to the pound then the guy shows up? \n\nelaine: maybe you should call the airline, they might know where he is. \n\njerry: no, i tried. they don't know anything. (notices elaine making egg creams) you gotta put the syrup in first. \n\nelaine: no, milk. \n\njerry: i'm telling you the guy's a drunk, he's probably on a bender. \n\nelaine: what is a bender anyhow? \n\njerry: i don't know, they drink and they bend things at the bar. \n\nelaine: i can't believe he hasn't called. \n\njerry: two hundred seats on a plane, i gotta wind up next to yukon jack and his dog cujo. shut up! one more day and you are pound bound! \n\nkramer: sorry, i can't watch the dog tonight. \n\njerry: why? \n\nelaine: we're going to the movies, we're gonna see prognosis negative. \n\nkramer: i can't, i gotta get this ellen out of my life. \n\njerry: you're breaking up? \n\nkramer: oh ho ho ho yeah, the sooner the better. i can't wait to do it. you know how there's some people you worry about whether you're going to hurt their feelings? with her, i'm looking forward to it. i'd like to get it on video, watch it in slow motion and freeze frame it. oh ho, yeah. \n\nelaine: kramer, i don't know how you lasted as long as you did. \n\nkramer: woah, you didn't like her? \n\nelaine: if you could see her personality it would be like one of the elephant man exhibits, you know where they pull off the sheet and everyone gasps. \n\njerry: i can't believe someone hasn't killed her yet. \n\nkramer: how come you never said anything? \n\njerry: well you can't tell someone how you feel about their girlfriend until after they stop seeing them. \n\nkramer: i tell you. \n\njerry: you. i'm talking about people. \n\nelaine: are we still going to the movies tonight? \n\njerry: no, i can't i gotta watch farfel, you and george can go without me. \n\nelaine: just me and george? \n\njerry: sure. \n\nelaine: but we need you. \n\njerry: what do you need me for? \n\nelaine: because... yeah? \n\ngeorge: prognosis negative! (in a funny voice) \n\nelaine: because i relate to george through you, we're like friends-in-law. besides, you said we were gonna see prognosis negative together. can't you just put some newspapers down or something? \n\njerry: no, i can't trust him, he gets insane. i won't enjoy myself. that's right, farfel, i'm talking about you! \n\nelaine: just me and george alone? \n\ngeorge: let's go, people, let's go! it's prognosis negative time, wa ha ha ha!!! \n\njerry: i can't go. \n\ngeorge: can't go, why not? \n\njerry: because i have to watch idiot farfel. \n\ngeorge: i thought kramer was watching. \n\njerry: he's breaking up with his girlfriend tonight. \n\ngeorge: well so what's the problem, you just put some newspaper down. \n\njerry: no, i don't want that smell in the house. \n\ngeorge: you spritz a little lysol on it. \n\njerry: no, it's like bo and cologne, they combine forces into some kind of strange mutant funk. \n\ngeorge: so we're not going? \n\njerry: nah. you two go. \n\ngeorge: oh. you still wanna go? \n\nelaine: do, do you? \n\ngeorge: if you want. \n\nelaine: it,s, it's up to you. \n\njerry: go ahead. \n\nelaine: well, it's, i really wanted to see prognosis negative with jerry, uh, you wanna see ponce de leon? \n\ngeorge: ponce de leon? okay. (to jerry) you sure you don't wanna go? \n\njerry: i want to but i can't. \n\nelaine: oh! i tell you what. how about if i come back here first and i clean everything up and i open up the windows and if you're still not satisfied we can switch apartments for the night. \n\njerry: no. \n\ngeorge: what about this-- \n\njerry: forget it. go ahead, you'll have a good time. \n\nelaine: i know, it's not that. \n\ngeorge: it's just we want you to go. \n\njerry: well, thank you very much. i'm telling you, one more day stinkbreath! \n\njerry: on my block, a lot of ah, people walk their dogs, and i always see them walking along with their little poop bags, which to me is just the lowest function of human life. if aliens are watching this through telescopes, they're gonna think the dogs are the leaders. if you see two life forms, one of them's making a poop, the other one's carrying it for him, who would you assume was in charge? \n\ngeorge: so how long did you live there? \n\nelaine: about three years. \n\ngeorge: that's pretty long. \n\nelaine: hmm. \n\ngeorge: it's not that long, really. \n\nelaine: yeah. \n\ngeorge: and then you came here. \n\nelaine: yeah. so i've been here about six years. \n\ngeorge (counting on his fingers): eighty-six, eighty-seven, eighty-eight, eighty-nine, ninety, ninety-one... yup. \n\njerry: bad dog! bad dog! you go outside! outside!! what do you want from me? tell me! money, you want money? i'll give you money, how much?! \n\nkramer: i must have been out of my mind. look at you. why don't you do something with your life? sit around here all day, you contribute nothing to society. you're just taking up space. how could i be with someone like you? wouldn't respect myself. \n\ngeorge: i like herbal tea. \n\ngeorge: chamomile's good. lemon lift. almond pleasure. \n\nelaine: jerry likes morning thunder. \n\ngeorge: jerry drinks morning thunder? \n\nelaine: yeah. \n\ngeorge: morning thunder has caffeine in it, jerry doesn't drink caffeine. \n\nelaine: jerry doesn't know morning thunder has caffeine in it. \n\ngeorge: you don't tell him? \n\nelaine (laughing): no. and you should see him, man, he gets all hyper, he doesn't even know why, he loves it! he walks around, going, \"god, i feel great!\" \n\ngeorge (laughing): you don't tell him? \n\nelaine: no. \n\ngeorge: that is so funny! \n\nelaine: i know! \n\ngeorge: wait, have you ever seen him throw up?! \n\nkramer: please! please!! i take it all back, everything! i take it all back, every word! i love you! i love *you*! i can't live without you, i,ll, i'll do anything! \n\njerry: that's right, gavin palone. what? are you sure? he was released on monday? *last* monday? did he leave a phone number or address? unbelievable. well thank you, thanks, thanks very much. (hangs up) that's it, farfel! party's over! start packing up your little squeeze toys buddy boy, you're checking out! \n\nelaine: it was weird because george and i get along so great in so many situations but this is the first time we ever really went one-on-one. \n\njerry: oh, one-on-one's a whole different game. can't pass off. \n\nelaine: the only time it wasn't uncomfortable was when we were making fun of you. \n\njerry: going to the dog pound, everybody! going to the dog pound, come on down. (to elaine) what? \n\nelaine: do you have to? \n\njerry: what am i supposed to do? i don't want to do it. i like dogs. i'm not sure this is a dog. \n\nelaine: you know, the guy might have just lost your number. \n\njerry: i'm in the book and i have a machine. \n\nelaine: jerry, do you know what they do to dogs at the pound? they keep them there for a week and then if nobody claims them, they kill them. \n\njerry: really? how late are they open? \n\njerry: what? \n\nelaine: what is it? \n\nkramer: i went back with ellen. \n\njerry and elaine: ohhhhh, that's great. \n\nelaine: terrific. \n\njerry: yeah, i really think you guys are good together. \n\nelaine: yes, she understands you and she is not demanding. \n\nkramer: do you think that i forgot what you two said about her? \n\njerry: well i was just trying to be supportive, you know. i knew you were upset. \n\nkramer: from now on when we pass each other in the hall, i don't know you, you don't know me. \n\nelaine: oh, kramer, we didn't mean it. \n\njerry: what are you doing? \n\nkramer: i'm getting my pot. \n\nelaine: kramer, we like her. \n\njerry: kramer? what did we say that's so bad? \n\nelaine: i believe i referred to her personality as a potential science exhibit. \n\njerry: i said, \"how come no one's killed her?\" probably shouldn't have said anything, \n\njerry: well. \n\nelaine: well. \n\njerry: everyone knows the first break-up never takes. (answers buzzer) yeah? \n\ngeorge: prognosis negative! (again in a funny voice) \n\njerry: okay, farfel, put your shoes on. \n\nelaine: jerry, can't you just give it one more day, it's not his fault. \n\njerry: it's not my dog, i don't know where this boozehound is. \n\nelaine: alright, i tell you what. how about if you and george go to the movies, and i stay here and watch the dog tonight. \n\njerry: i can't let you do that, what about prognosis negative? \n\nelaine: we'll see it sunday. \n\ngeorge: tonight's the night, right? prognosis negative? \n\nelaine: i'm not going, i'm gonna watch the dog. \n\ngeorge: what does this mean? \n\njerry: well, we'll go see something else tonight. we'll see, uh, ponce de leon. \n\ngeorge: what is with this dog, i thought we were taking it to the pound. \n\njerry: she talked me into one more day. talk amongst yourselves, i'm gonna go to the bathroom. \n\ngeorge: uh jerry, how long will you be in there? \n\njerry: i don't know, regular human time? \n\ngeorge: uh why don't you wait then go in the movies? \n\njerry: why shouldn't i go here? \n\nelaine: well, you know, i mean, sometimes it's good to get there and make sure you get your seats and then go to the bathroom. \n\ngeorge: and isn't it more fun using the urinal? \n\nelaine: yeah. \n\njerry: oh yeah, urinals are fun. can i go?! \n\ngeorge: hey, go. \n\nelaine: who's stopping you? \n\ngeorge: what, are you doing me a favor? \n\nelaine: like we care if you go to the bathroom. \n\ngeorge: how's it going? \n\nelaine: good. good. you? \n\ngeorge: things are good. \n\nelaine: boy, he takes such a long time. \n\ngeorge: i know. \n\nelaine: you know what he does in there? he gargles. \n\ngeorge: jerry gargles? is that why he takes so long? \n\nelaine: yeah, he does it like six times a day. \n\ngeorge: how come we never hear him? \n\nelaine: because he does it quiet. he does it quiet. lookit, just like this, watch. \n\ngeorge: wait, wait, did you ever see him throw up?! \n\nelaine: we talked about that already. \n\ngeorge: oh. \n\ngeorge: i have nothing to say to anybody. i'm so uninteresting. i think i'm out of conversation. \n\njerry: so what are calling me six times a day? \n\ngeorge: all i know about is sports. that's it. no matter how depressed i get, i could always read the sports section. \n\njerry: i could read the sports section if my hair was on fire. \n\ngeorge: know what? ponce de leon is sold out. \n\njerry: it is? oh yeah, you're right. what else is playing? \n\ngeorge: nothing except prognosis negative. \n\njerry: boy, i know she really wants to see that with me. \n\nelaine: gimme the jacket, furface, this is not seinfeld you're dealing with! when i get through with you, you'll be begging to go to the pound! \n\nelaine: shut up. shut up! (answers phone) hello? no, who's calling? oh my god, the dog guy. where have *you* been? yeah, well you better pick up your dog tonight or he has humped his last leg. \n\ngeorge: i mean, i could understand if there was something else playing, but it's this or nothing. \n\njerry: i don't know what to do. \n\ngeorge: what is this 'saving movies' thing? something's playing, you go. \n\njerry: i know, i know. \n\ngeorge: so, what? we're gonna do nothing now, this is crazy. \n\njerry: it is kind of silly. \n\ngeorge: of course it is. \n\njerry: i mean, it's just a movie, for god's sake. \n\ngeorge: exactly. \n\njerry: it's not like she's *in* the movie. \n\ngeorge: right. \n\njerry: am i supposed to ruin the whole night because she wants to see it? i mean, if i could have seen it with her, fine. but i can't control all these circumstances and schedules and peoples' availabilities at movies. \n\ngeorge: and she'll still see it, you're not stopping her from seeing it. \n\njerry: how does sitting next to a person in a movie theater increase the level of enjoyment? you can't talk during a movie. you know, this is stupid, c'mon, let's just go. \n\ngeorge: good. \n\njerry: saving movies. \n\ngeorge: ridiculous! \n\njerry: two for prognosis negative. i'm in big trouble. \n\ngeorge: oh, you're dead. \n\ngavin: bell's palsy. the entire side of my, of, of my face was paralyzed. farfel! i couldn't, i couldn't, i couldn't even feed myself, i was completely incapacitated. quiet farfel! \n\njerry: you know it's interesting, because i called the hospital and they said you were released on monday. \n\ngavin: yes, yes, that's true, but then i was taken to the bell's palsy center in, in, in, in rockford. absolutely first, first rate facility, top notch physicians. \n\nkramer: hey, c'mon, c'mon, get off me! \n\ngavin: he won't hurt you, he's just playing. \n\nkramer: hey you keep that mutt away from me. \n\ngavin: mutt? i'll wager his parents are more pure than yours. \n\nellen: kramer, are you coming? \n\njerry: oh, hi ellen. \n\nellen: get in here. \n\njerry: listen, it's really been a pleasure taking care of your dog for a week, but if you don't mind... \n\ngavin: pre-prediction. you'll be calling me to ask if you can come and visit him before the month is out. \n\njerry: prediction. i never see you or him again for the rest of my life. \n\nelaine: we made plans. \n\njerry: why don't we just rent a movie? \n\nelaine: i thought you wanted to see prognosis negative. \n\njerry: no, it&mac226;s, it's supposed to be really bad, *really* bad. i mean it's long, there's no story, it's so unbelievably boring, i heard. i... \n\nelaine: jerry, you promised me we'd go. \n\njerry: well, george told me the whole story, line for line, i mean i almost feel like i've seen it already and walked out on it. \n\nelaine: wait, george saw the movie? i saw him yesterday, he didn't mention it. \n\njerry: you and george got together? \n\nelaine: yeah, i wanted to talk about how we have nothing to talk about. \n\njerry: hello. \n\nkramer: hi, hi, hi, hi, hi. \n\njerry: what's up? \n\nkramer: well, ah you were right. \n\njerry: about what? \n\nkramer: ellen. we, uh, broke up again. \n\njerry and elaine, together: awwwwww. \n\njerry: too bad. \n\nelaine: i thought she was the one. \n\nkramer: i'll bring back the pot. \n\nelaine: okay, c'mon it's movie time. \n\nkramer: hey, what are you gonna see? \n\njerry: prognosis negative. \n\nkramer: hey, that's supposed to be great. \n\njerry: it's not. \n\nkramer: how do you know? \n\njerry: i have an instinct for these things. \n\njerry: i had a parakeet when i was a kid, that was the only pet that i really enjoyed. we used to let him out of his cage, and he would fly around and my mother had built, one entire wall of our living room was mirrored. she felt this gives you a feeling of space. have you ever heard this interior design principle that a mirror makes it seem like you have an entire other room? what kind of a jerk walks up to a mirror and goes, \"hey look, there's a whole nother room in there. there's a guy in there looks just like me.\" but the parakeet will fall for this, you'll let him out of his cage, he flies around the room, bang! with his little head, he would just go 'click' ohh! and i'd always think, even if he thinks the mirror is another room, why doesn't he at least try to avoid hitting the other parakeet? \n\njerry: does it seem to you that the ventriloquist dummy has a very active sexual social life? he's always talking about dates and women that he knows and bringing them back to the suitcase at night, there's always a sawdust joke in there somewhere you know, kinky things cuz he's made out of wood an' he can spin his head around, we're somehow expected to believe because the face is soo animated that they think we aren't noticing that the feet are just swinging there, dummy feet never look right do they? they're just kinda dangling there, always kinda askew you know? you always see just little ankle, those thin fabric ankles that they have you know. ya think 'i don't think this thing is real.' \n\njerry: let me speak with the head librarian. ... because it's absurd. an overdue book from 1971? ... this is a joke right? what are you? from a radio station? \n\nkramer: enters \n\njerry: ya' got me i fell for it. alright, ok i can be down there in like a half hour. bye. \n\nkramer: what's the problem? \n\njerry: this you're not goin' to believe. the nypl says that i took out tropic of cancer in 1971 and never returned it. \n\nkramer: do you know how much that comes to? that's a nickel a day for 20 years. it's going to be $50,000 \n\njerry: it doesn't work like that. \n\nkramer: if it's a dime a day it could be $100,000 \n\njerry: it's not going to be anything. i returned the book. i remember it very vividly because i was with sherry becker. she wore this orange dress. it was the first time i ever saw her in a dress like that. in oticed since ninth grade she was developing this body in secret under these loose clothes for like two years. and then one day ... \n\njerry: that orange dress is burned in my memory \n\nkramer: oh, memory burn. \n\njerry: i wonder what ever happened to her. \n\nkramer: how did they ever find you? \n\njerry: oh, computers, they're cracking down now on overdue books. the whole thing is completely ridiculous. \n\njerry: it's george. wait 'til he hears we're going to the library \n\nkramer: you know i never got a library card. \n\njerry: (to speaker) coming down. \n\nkramer: it's all a bunch of cheapskates in there anyway. people sitting around reading the newspaper attached to huge wooden sticks trying to save a quarter, ooh, \n\njerry: i gotta go to the library. you want to go? \n\nkramer: yeah, \n\nkramer: the dewey decimal system, what a scam that was. boy that dewey guy really cleaned up on that deal. \n\njerry: where's george \n\nreader: shhh. \n\nkramer: tryin' to save a quarter. \n\njerry: i kinda like those sticks. i'd like to get them in my house. \n\njerry: this woman's completely ignoring me. \n\nkramer: look at her. this is a lonely woman looking for companionship.. ... spinster. ... maybe a virgin. ... maybe she got hurt a long time ago. she was a schoolgirl. there was a boy it didn't work out. now she needs a little tenderness. she needs a little understanding. she needs a little kramer. \n\njerry: eventually a little shot of penicillin \n\nlibrarian: yes? \n\njerry: yeah i called before. i got his notice in the mail. \n\nlibrarian: oh, tropic of cancer, henry miller, uh, this case has been turned over to our library investigation officer mr. bookman. \n\nkramer: bookman? the library investigator's name is actually, bookman? \n\nlibrarian: it's true. \n\nkramer: that's amazing. that's like an ice cream man named, cone. \n\nlibrarian: lt. bookman has been working here for 25 years so i think he's heard all the jokes. \n\njerry: can i speak with this bookman? \n\nlibrarian: just a second. \n\ngeorge: jerry, jerry \n\njerry: what? \n\ngeorge: i think i saw him. i think it's him. \n\njerry: who? \n\ngeorge: did you see the homeless guy on the library steps screaming obsenities and doing some calesthetics routine \n\njerry: yeah. \n\nkramer: yeah \n\ngeorge: i think that's mr. hayman. ...the gym teacher from our high school. \n\nreader: shhh. \n\njerry: (whispers) haymen, are you sure? \n\ngeorge: he's older, completely covered in filth, no whistle, but i think it's him. \n\njerry: george got him fired. he squealed on him. \n\nkramer: ooh tattle tale \n\ngeorge: (yells) i didn't tattle \n\nreader: shh shh \n\nkramer: what did this guy do? what happened? \n\ngeorge: there was an incident. i'd rather not discuss it. \n\nkramer: oh come on, you can tell me. \n\ngeorge: some other time. \n\nkramer: what tonight? \n\nkramer: y'know i never figured you for a squealer. \n\njerry: oh, he sang like a canary. \n\nlibrarian: mr. bookman's not here. \n\njerry: not here? why was i told to come down here? \n\nlibrarian: he'll be out all afternoon on a case. \n\nkramer: he's out on a case? he actually goes out on cases? \n\njerry: well what am i supposed to do now? \n\nlibrarian: i'll have mr. bookman get in touch with you. \n\njerry: all right thanks. come on lets go \n\ngeorge: let's see if it's hayman? \n\nkramer: hey, uh, i'll see you boys later. (turns to librarian) so uh, what's a guy got to do around here to get a library card? \n\nelaine: where's karen? \n\nsecretary: she went to pick up lunch. \n\nelaine: well, she didn't ask me what i wanted. \n\nsecretary: she must have forgot. \n\nelaine: how could she forget i've been ordering lunch every day here for 3 and a half years? \n\nsecretary: i don't know anything. \n\nelaine: ah, you don't know anything. you see, \"i don't know anything\", means there's something to know. if you really didn't know anything you would have said \"you're crazy.\" \n\nelaine: oh, hi mr. lippman. \n\nlippman: elaine, \n\nelaine: um, uh, i was wondering if you got a chance to look at that , um, biography of columbus, i gave you? \n\nlippman: yes i did. yes i did. ... maureen this water is still too cold. \n\nelaine: ooh yeah, it's freezing. ... hurts your teeth. \n\nelaine: i'm tellin' ya' somethin' is goin' on. he never likes anything i recommend. and then that lunch thing. \n\njerry: so they forgot to get your lunch. big deal! \n\nelaine: what do you know. you've never worked in an office. (turns to george) see, george, you've worked in an office. jerry thinks i'm over reacting but you understand, ... lunch! \n\ngeorge: i don't understand lunch, i don't know anything about lunch. listen. just because i got the guy fired doesn't mean i turned him into a bum - does it? \n\nelaine: what did he do? \n\ngeorge: he purposely mispronounced my name. instead of saying, \"costanza\" he'd say, \"can't stand ja\". \"can't stand ja\" ... he made me smell my own gym socks once. \n\njerry: i remember he made you wear a jock on your head for a whole class. and the straps were hangin' down by his ,... \n\ngeorge: ok, ok, i never even had him for gym. \n\njerry: i had him for hygene. remember his teeth. it was like from an exhumed corpse. \n\ngeorge: little baked beans \n\njerry: echh \n\nelaine: come on tell me what happened. \n\ngeorge: well, ok. as i said the guy had it in for me. he actually failed me in gym. ... me! \n\ngeorge: ... those spastic shnitzer twins ... \n\nheyman: can't stand ja ... can't stand ja \n\ngeorge: yes, mr. hayman \n\nheyman: your underwear was stick'n out of your shorts during gym class. \n\ngeorge: well i guess that's because i wear boxer shorts. \n\nheyman: boxer shorts, ha ha, well what brand? \n\ngeorge: i'm not really sure, i... \n\nheyman: well let's take a look. \n\ngeorge: he gave me a wedgie. \n\njerry: he got fired the next day. \n\nelaine: why do they call it a wedgie? \n\ngeorge: because the underwear is pulled up from the back and ... it wedges in.. \n\njerry: they also have an atomic wedgie. now the goal there is to actually get the waistband on top of the head. very rare. \n\nelaine: boys are sick. \n\njerry: well what do girls do ? \n\nelaine: we just tease some one 'til they develop an eating disorder. guy who ruined his life. \n\ngeorge: i gotta go back to the library and talk to him. i gotta find out if i&mac226;m the guy who ruined his life. \n\nkramer: hey babaloo, you better get home. you know this guy bookman from the library he's waiting for ya. \n\njerry: what's amazing to me about the library is it's a place where you go in you can take out any book you whant they just give it to you and say bring it back when you're done. it reminds me of like this pathetic friend that everbody had when they were a little kid who would let you borrow any of his stuff if you would just be his friend. that's what the library is. a government funded pathetic friend. and that's why everybody kinds of bullies the library. i'll bring it back on time ... i'll bring it back late. ... oh, what are you going to do? charge me a nickel? \n\njerry: oh, i'm glad you're here, so we can get this all straightened out. would you like a cup of tea? \n\nbookman: you got any coffee? \n\njerry: coffee? \n\nbookman: yeah. coffee. \n\njerry: no, i don't drink coffee. \n\nbookman: yeah, you don't drink coffee? how about instant coffee? \n\njerry: no, i don't have-- \n\nbookman: you don't have any instant coffee? \n\njerry: well, i don't normally-- \n\nbookman: who doesn't have instant coffee? \n\njerry: i don't. \n\nbookman: you buy a jar of folger's crystals, you put it in the cupboard, you forget about it. then later on when you need it, it's there. it lasts forever. it's freeze-dried. freeze-dried crystals. \n\njerry: really? i'll have to remember that. \n\nbookman: you took this book out in 1971. \n\njerry: yes, and i returned it in 1971. \n\nbookman: yeah, '71. that was my first year on the job. bad year for libraries. bad year for america. hippies burning library cards, abby hoffman telling everybody to steal books. i don't judge a man by the length of his hair or the kind of music he listens to. rock was never my bag. but you put on a pair of shoes when you walk into the new york public library, fella. \n\njerry: look, mr. bookman. i--i returned that book. i remember it very specifically. \n\nbookman: you're a comedian, you make people laugh. \n\njerry: i try. \n\nbookman: you think this is all a big joke, don't you? \n\njerry: no, i don't. \n\nbookman: i saw you on t.v. once; i remembered your name--from my list. i looked it up. sure enough, it checked out. you think because you're a celebrity that somehow the law doesn't apply to you, that you're above the law? \n\njerry: certainly not. \n\nbookman: well, let me tell you something, funny boy. y'know that little stamp, the one that says \"new york public library\"? well that may not mean anything to you, but that means a lot to me. one whole hell of a lot. sure, go ahead, laugh if you want to. i've seen your type before flashy, making the scene, flaunting convention. yeah, i know what you're thinking. what's this guy making such a big stink about old library books? well, let me give you a hint, junior. maybe we can live without libraries, people like you and me. maybe. sure, we're too old to change the world, but what about that kid, sitting down, opening a book, right now, in a branch at the local library and finding drawings of pee-pees and wee-wees on the cat in the hat and the five chinese brothers? doesn't he deserve better? look. if you think this is about overdue fines and missing books, you'd better think again. this is about that kid's right to read a book without getting his mind warped! or maybe that turns you on, seinfeld; maybe that's how y'get your kicks. you and your good-time buddies. well i got a flash for ya, joy-boy party time is over. y'got seven days, seinfeld. that is one week! \n\nkramer: what's wrong? \n\nmarion: it's bookman the library cop. \n\nkramer: so i, i didn't do anything wrong. \n\nmarion: i'm supposed to be at work. i could get fired. i shouldn't have come here. \n\nkramer: why don't ya' leave? \n\nmarion: i can't. \n\njerry: no way i'm payin' that! i returned that book in 1971. i have a witness sherry becker. she wore an orange dress. she gave me a piece of black jack gum. it's a licorice gum. what do ya' think of next i remember it. (thinks out loud, opens phone book) becker, ... becker, ... \n\nsherry: kevin went to a public school, he's the 14 year old? we were gonna' send marsha to a private school. cause in some way they don't learn ... enough ... i think. \n\njerry: so sherry, what do you remember about that day at the library? \n\nsherry: i remember it like it was yesterday. it was a friday afternoon. i wore a purple dress. \n\njerry: purple? ya' sure it wasn't orange? \n\nsherry: positive. and i was chewin' dentyne. i always chewed dentyne. remember jerry? dentyne? \n\njerry: no black jack? \n\nsherry: uch! licorice gum? never! we were ah, reading pasages to each other from that henry miller book, \n\njerry: tropic of cancer. \n\nsherry: no, tropic of capricorn \n\njerry: tropic of capricorn? \n\nsherry: rememba? what holds the world togetha' ... \"as i have learned from bitter experience is sexual intercourse .\" \n\njerry: wait a second. wait a second. you're right. i had both of them. \n\njerry: george, here's the book. don't let anybody see it. don't let anything happen to it. \n\ngeorge: jerry, it's me, george, don't worry, i'll return it \n\njerry: ok, i'll see you after school. i.m late for hayman's hygiene. \n\nsherry: where ya' going? \n\njerry: it was nice seeing you again. i just remembered something. i've got to go. (to old man that enters) it was george! \n\nkramer: read another poem. \n\nmarion: pressed chest fleshed out west might be the saviour or a garden pest. \n\nkramer: wow, that is great. you should be published. \n\nkramer: you know, the library is kind of a cool place when it's closed. \n\nmarian: oh, yeah. you don't have to be quiet. listen to the echo hello! \n\nkramer: hello! \n\nmarian: hello! \n\nkramer: hello! \n\nmarian: hello! \n\nbookman (emerging): hello! \n\nmarian (turning, surprised): mr. bookman. \n\nbookman: i remember when the librarian was a much older woman kindly, discreet, unattractive. we didn't know anything about her private life. we didn't want to know anything about her private life. she didn't have a private life. while you're thinking about that, think about this the library closes at five o'clock, no exceptions. this is your final warning. got that, kewpie-doll? \n\nelaine: lippman want's to see me in his office see me! that can't be good \n\njerry: maybe you're getting' a raise. \n\nelaine: maybe i'm getting' a wedgie. \n\nelaine: what? \n\ngeorge: it's george \n\nelaine: george is on his way up. \n\njerry: wait 'til i tell him about the book. \n\nkramer: (reading) sobs \n\nelaine: are you ok? what? what? \n\nkramer: it's marion's poetry. i can't take it (leaves sobbing) \n\nelaine: remember that biography i recommended? my boss hated it \n\njerry: i'm right here. \n\nelaine: remember that columbus book? \n\njerry: columbus, euro trash. \n\ngeorge: well, it's definetly him. \n\nelaine: him? him who? \n\ngeorge: him who? hayman him. \n\nelaine: hayman the gym teacher? you found him? \n\ngeorge: oh, i found him. he was sitting on the steps of the library. i sat down next to him. he smelled like the locker room after that game against erasmus \n\njerry: that was double overtime. \n\ngeorge: so i said, \"mr. hayman, it's me george costanza, jfk, ... \" he doesn't move. so i said uh, \"can't stand ya'\", \"can't stand ya'\" he turns and smiles, the little baked bean teeth. i get up to run away, but something was holding me back. it was heyman. he had my underwear. there i was on the steps of the 42nd st. library , a grown man, getting a wedgie. \n\nelaine: at least it wasn't atomic. \n\ngeorge: it was. \n\njerry: so georgie boy, guess what happened to tropic of cancer \n\ngeorge: how should i know? \n\njerry: because i gave it to you. \n\ngeorge: me? \n\njerry: yeah, think. don't you remember you kept begging me to see it then finally i agreed. you were supposed to return it. i met you in the gym locker room. \n\ngeorge: the locker room! \n\njerry: here's the book. don't let anybody see it. don't let anything happen to it. \n\ngeorge: jerry, it's me, george, don't worry, i'll return it tomorrow, no problem. \n\njerry: all right, i'll see you after school. i,,m late for hayman's hygiene. \n\nheyman: can't stand ya'. \n\ngeorge: yes mr. hayman. \n\nheyman: your underwear was stick'n out of your shorts during gym class. \n\ngeorge: well i guess that's because i wear boxer shorts. \n\nheyman: boxer shorts, ha? well what brand? \n\ngeorge: i'm not really sure, i... \n\nheyman: well let's take a look. \n\ngeorge: (shouting) no no no! \n\njerry: anyway, i hope there's no hard feelings. \n\nbookman: hard feelings? what do you know about hard feelings? y'ever have a man die in your arms? y'ever kill somebody? \n\njerry: what is your problem? \n\nbookman: what's my problem? punks like you, that's my problem. and you better not screw up again seinfeld, because if you do, i'll be all over you like a pitbull on a poodle. \n\njerry: (after bookman exits) that is one tough monkey! (turns to elaine) so you were saying? \n\nelaine: oh? so, i took your suggestion and i gave my boss marion's poems. the ones that affected kramer so much. \n\njerry: oh, beautiful did he like them? \n\nelaine: no, ... he didn't! no, ... he didn't! \n\njerry: (to george) was he out there? \n\ngeorge: na, he's gone. i wonder what happened to him. \n\njerry: i guess we'll never know. \n\nheyman: can't stand ya, (laughing) can't stand ya. (pan to tropic of cancer on ground) \n\njerry: any day that you had gym it was a weird school day, you know what i mean because it kind of like started of kind of normal. you have like english, geometry, social studies and then suddenly you're like in lord of the flies for 40 minutes you know you're hangin' from a rope. you have hardly any clothes on. teachers are yellin' at ya' \"where's your jock strap?\" ya' know and kids are throwin' dodge balls at you. you're tryin' to survive ... then its history, science, language. there's something off in the entire flow of that day. \n\n[act one scene a int. escalator - going down to a garage. in single file: george, jerry and elaine, who's carrying a plastic bag with goldfish, and kramer who's having a rough time with a large, heavy box.] \n\ngeorge: one left...what a joke. \n\nkramer: you can have this one. \n\ngeorge: no, that's not enough btus for my living room...that was a complete waste of time. \n\nelaine: hey, i didn't get one either. \n\njerry: why do i always have the feeling that everybody's doing something better than me on saturday afternoons? \n\nelaine: this is what people do. \n\njerry: no they don't. they're out on some big picnic. they're cooking burgers. they're making out on blankets. they're not at some mall in jersey watching their friends trying to find the world's cheapest air-conditioner. \n\ngeorge: you should see what my father used to go through before he bought a car. he'd go from state to state. he was away for weeks at a time. it was like he was running for president and he was going through the primaries. we'd get phone calls from motels in new hampshire. \n\nelaine: so we took a little ride. what's the big deal? \n\ngeorge: well at least you accomplished something. you got fish. \n\njerry: big accomplishment. \n\ngeorge: fish. what do they do? \n\nelaine: what do you do? \n\nkramer: it's this way. \n\ngeorge: what time is it? \n\njerry: five o'clock. \n\ngeorge: always late. always late. \n\njerry: you're not late. \n\ngeorge: i told them to meet me in front of my building at six-fifteen. \n\nelaine: who? \n\ngeorge: my parents. it's their anniversary. i'm taking them out to dinner and a show tonight. you think we'll hit traffic? \n\njerry: of course we'll hit traffic. it's rush hour. \n\nelaine: isn't it going the other way? \n\njerry: there is no other way in new york. everybody goes every way all the time. \n\nelaine: but it's saturday. \n\njerry: you got the picnic and burger traffic. \n\ngeorge: i always get myself in this position. can't be on time. gotta rush. \n\nelaine: what's the matter? \n\njerry: i have to go to the bathroom. why do they hide the bathroom in these malls? \n\njerry: (cont'd) you want me to help you with that? \n\nkramer: no, no, i got it. \n\njerry: (to george, rewoman) what do you think, georgie boy? \n\ngeorge: did i need that pointed out for me? what is that going to do for me? how does that help me, to see her? i'm trying to live my life. don't show me that. \n\nkramer: if you like her, go talk to her. \n\ngeorge: yeah, right. i'll just go up and say, \"hi, how ya' doing? would you like a glass of white wine?\" jerry before you got within twenty feet of this woman, she'd have her finger on the mace button. she's like an expensive car with one of those motion-sensor force field alarms. any sudden movement in the area could set her off. \n\nkramer: she's fat. \n\nelaine: oh she's fat? \n\nelaine: what? jerry where's the car? \n\nkramer: i thought it was here. \n\ngeorge: you don't know where we parked? \n\ngeorge: oh, this is great. \n\nkramer: blue-one. i thought it was blue-one. \n\njerry: i thought it was green. i remember seeing green. \n\nelaine: i didn't pay attention. \n\ngeorge: this is just what i need. \n\nelaine: i'm sure it's right around here. \n\nkramer: it looks familiar. i remember the elevator. \n\ngeorge: there's elevators all over! it all looks the same. \n\njerry: it's over there. i know where it is. \n\nelaine: it's black, right? \n\nkramer: dark blue. \n\ngeorge: (mumbling) you come to a parking lot, you write it down. how hard is that? \n\njerry: there it is!...no, no that's a toyota. \n\njerry: (cont'd) hmmm...i thought it was... \n\nkramer: didn't we come in over there? \n\njerry: i thought it was over there. \n\nelaine: how long can fish live in one of these plastic bags? \n\nkramer: about two hours. \n\nelaine: (she looks at her watch) you'd better find this car. \n\ngeorge: it's this way... and they take off again, pairing off \n\njerry: i really have to go to the bathroom. \n\nkramer: why don't you go behind one of these cars? j \n\nkramer: (cont'd) why? nobody's around. \n\njerry: i'll wait. \n\nkramer: you know when you hold it in like that you can cause a lot of damage to your bladder. that's what happens to truck drivers. they hold it in all the time. eventually it starts coming out involuntarily. \n\njerry: alright. \n\nkramer: jerry, are you aware that adult diapers are a six hundred million dollar a year industry? \n\njerry: maybe i should just go anytime i get the urge like you...wherever i am. there's too much urinary freedom in this society. i'm proud to hold it in. it builds character. \n\nelaine: (re car) there it is!...no that's not it. \n\nelaine: (cont'd) hey, watch it. ...did you see that car? maniac. can you explain something to me? i got six questions wrong on my drivers test. that's the maximum. i read the book, i'm a college graduate. this is a country where fifty percent of its high school students can't locate europe on a map. how are they all passing that test? it's a mystery. \n\ngeorge: ...six wrong? \n\nelaine: those school zones are a killer. \n\njerry: (to kramer, rebox) will you let me help you with that? \n\nkramer: i'm gonna put it down behind that car. \n\njerry: you're not worried somebody's gonna pee on it? \n\nkramer: (to george) pink eleven. remember that. \n\ngeorge: oh i got it. (to jerry) that i'm supposed to remember. where the car is, that's insignificant. \n\nelaine: (looking at fish) i think they're laboring. \n\nkramer: look at this place. it's huge... \n\ngeorge: i can tell you this. if i am not in front of my house at six-fifteen, when my parents get there, they will put me on an aggravation installment plan that will compound with interest for decades. \n\njerry: parents never forget a foul-up. i once left a jacket on the bus when i was fourteen. last week i'm flying to chicago to do a show, \"make sure you hang on to your jacket.\" \n\ngeorge: where the hell is this car, kramer? \n\nkramer: it's got to be here. \n\nelaine: why are they using so many colors? and the numbers go up to forty. \n\njerry: maybe it's not on this level. \n\ngeorge: what? \n\njerry: there are four different levels. maybe we're on the wrong level. how long was the escalator ride up? \n\nelaine: it felt like a couple of levels. \n\njerry: you should always carry a pad and pen. \n\ngeorge: i can't carry a pen. i'm afraid i'll puncture my scrotum. \n\nkramer: i have a pen. \n\njerry: where was the bathroom in this mall? there are six-hundred stores, i didn't see one bathroom. what is this, like a joke? they finished building the mall and they go, \"oh my god, we forgot the bathrooms.\" \n\nmother: (o.c.) don't you dare talk to me like that! you hear me? \n\nelaine: look at that woman. \n\nmother: i told you! i don't care! you'll have to wait. \n\ngeorge: (to woman) hey, is that necessary? \n\nmother: (to george) why don't you mind your own business? \n\ngeorge: i think hitting a defenseless child is my business. \n\nkid: (to george) you're ugly. \n\ngeorge: ...what? \n\nkid: you're ugly. \n\ngeorge: you are! \n\nkid: you are! \n\ngeorge: i should've hit the little son-of-a-bitch. i can't stand kids. adults think it's so wonderful how honest kids are. i don't need that kind of honesty. i'll take a deceptive adult over an honest kid any day. \n\nkramer: (re car) i found it! \n\nelaine: he's got it. \n\nkramer: oh...no. \n\njerry: all right, that's it. from now on no more calling out they found it, unless we're sitting in it. okay? \n\nelaine: jerry, look at my fish. \n\njerry: his eyes look a little cloudy. \n\ngeorge: oh are they gonna be furious. \n\njerry: who's got the tickets? george i do. (to kramer) i thought you knew this mall. you said you'd been here before! \n\nkramer: it was easy the last time. \n\nelaine: my fish are dying right in front of me! we have to get someone to drive us around the parking lot to help us look for the car. \n\njerry: no one's going to do that. \n\nelaine: excuse me, we can't seem to find our car. i was wondering if it would be possible if you're not in a hurry, to drive us around the garage for five minutes so we can look. \n\nman #1: (holding his hands up) ...sorry. \n\nelaine: five minutes. \n\nman #1: can't do it. \n\nelaine: we're not wilding. \n\nelaine: (cont'd) excuse me - i can't seem to find my car - do you think you could drive me... \n\nelaine: (cont'd) oh that's funny? is that funny? well tell me if you think this is funny these fish are dying! they're gasping for oxygen right now! they'll be floating in an hour. is that funny too? \n\njerry: those are really ugly sneakers. where did you get those? \n\nkramer: right here at the mall. \n\nelaine: excuse me... \n\nelaine: (cont'd) sorry to have disturbed you. terribly sorry. but the fish will be dead. you do know that. they can't live in plastic. that's not me talking, that's science. \n\njerry: it's amazing how shopping makes me have to go. all i have to do is walk into a department store and it's like some kind of horse laxative just kicked in. \n\nkramer: you drank a whole bottle of water. \n\njerry: i know. \n\nkramer: so why don't you just go? \n\njerry: no i can't. \n\nkramer: don't you get tired of following rules? \n\njerry: you think i'm too cautious? \n\nkramer: why be uncomfortable if you don't have to? it's organic. \n\njerry: organic. so's buddy hackett. \n\nkramer: buddy hackett? \n\njerry: he's a comedian. \n\nkramer: i know. \n\njerry: all right. all right. \n\nkramer: (pointing) you can go over here. \n\njerry: i can manage. \n\nkramer: (turns away and spots george) george! (leaves scene) \n\nkramer: it'll take you ten seconds. \n\njerry: okay, okay. i'll be right back. \n\nsecurity guard: okay, let's go. come with me. \n\njerry: but... \n\nsecurity guard: come on. \n\njerry: (starts to leave, to himself) ...kramer \n\njerry: i've had this condition since i was eleven! i've been in and out of hospitals my whole life. i have no control over it. doctors have told me that when i feel it, the best thing to do is just release it. otherwise, i could die. \n\nsecurity guard: well you're still not allowed. \n\njerry: do you hear what i'm saying to you?! i'm telling you that if i don't go, i could die. die. is it worth dying for? \n\nsecurity guard: that's up to you. \n\njerry: so you don't care if i die. \n\nsecurity guard: what i care about is the sanitary condition of the parking facility. \n\njerry: it was life and death. \n\nsecurity guard: uh huh. \n\njerry: oh i'm lying. why would i do it unless i was in mortal danger? i know it's against the law. \n\nsecurity guard: i don't know. \n\njerry: because i could get uromysitisis poisoning and die. that's why!...do you think i enjoy living like this?...the shame, the humiliation...you know i have been issued a public urination pass by the city because of my condition. unfortunately my little brother ran out of the house with it this morning. \n\njerry: (c0nt'd) him and his friends are probably peeing all over the place. you want to call the department of social services? oh, it's saturday. they're closed today. my luck. \n\nsecurity guard: you can tell the police all about it. \n\nkramer: (calling out) jerry! \n\nelaine: jerry! \n\ngeorge: unbelievable, i'm never gonna get out of here. the guy goes to pee, he never comes back. it's like a science fiction story. \n\nelaine: maybe he went to one of the other levels. i'll go look for him. \n\ngeorge: oh now you're gonna go? elaine i'll be back in five minutes. \n\ngeorge: if you go now, i know what's gonna happen. we'll find the car, jerry will show up, and then we'll never find you. \n\nelaine: no, no, i'll be back. \n\ngeorge: oh what's the difference? we'll all be dead eventually. \n\nkramer: does that bother you? \n\ngeorge: yeah, it bothers me. doesn't it bother you? \n\nkramer: not at all. \n\ngeorge: see now that bothers me even more than dying bothers me, cause it's people like you who live to be a hundred and twenty because you're not bothered by it. how could it not bother you? \n\nkramer: i once saw this thing on t.v. with people who are terminally ill. and they all believed the secret of life is just to live every moment. \n\ngeorge: yeah, yeah. i've heard that. meanwhile i'm here with you in a parking garage, what am i supposed to do? \n\njerry: first of all you don't even know technically that i went. that's for starters. i mean i could've been pouring a bottle of water out there. you don't know. \n\nsecurity guard: i know what you did. \n\njerry: oh really, do you? well it just so happens that i did pour water out. i had a bottle of very tepid water and i poured it out. and i could see how you made a mistake, because pouring water out sounds very much like a person urinating. \n\njerry: (cont'd) and you know when you think about it it's really quite an amusing case of mistaken identity. that's all it is. \n\nsecurity guard: yeah i'm sure. \n\njerry: you know this is not the first time this has happened to me. i always carry water because of my condition. it dehydrates me. it's a vicious cycle. \n\nelaine: and now he's gone. i'm sure he's looking for the car. five minutes, that's all. i just want to find him. \n\nman #1: i can't do it. \n\nelaine: but why? why can't you do it? \n\nman #1: i can't. \n\nelaine: no, see that's not a reason you can't. you just don't want to. \n\nman #1: that's right. \n\nelaine: but why? why don't you want to? \n\nman #1: i don't know. \n\nelaine: but wouldn't you get any satisfaction out of helping someone out? \n\nman #: 1 no, i wouldn't. \n\njerry: (a new tack) all right, all right. i want to apologize. i was frightened, i said crazy things. i obviously offended you. i insulted your intelligence. the uromysitisis, the water bottle...i made it all up, and now...i'm going to tell you the truth. today my father and mother are celebrating their fiftieth, well i'm jumping ahead here, their forty-seventh wedding anniversary. we made arrangements to spend the evening together. they are supposed to be in front of my building at six-fifteen. \n\njerry: (cont'd) what i haven't told you, or anyone else for that matter, is that my father's been in a red chinese prison for the past fourteen years. \n\nkramer: the guy's got a fat fetish. spector never dates a woman under two hundred-fifty pounds. \n\ngeorge: (not interested) really. \n\nkramer: what does he do with all that fat? does he just jump up and down on it? does he gouge it like killer kowalski? \n\ngeorge: who's killer kowalski? \n\nkramer: he was a wrestler. he would grab hold of someone's stomach and just squeeze it until they gave. \n\ngeorge: i've gotta go to the bathroom. \n\nkramer: so go. george here? \n\nkramer: (shaking his head) you and jerry. \n\ngeorge: don't you believe me? it's their fiftieth anniversary. you know this is gonna kill him. you're aware of that. kill him. on the biggest night of his life... \n\nsecurity guard: oh your folks have an anniversary today too? \n\njerry: (to george) was he also in a red chinese prison? \n\ngeorge: (to jerry, somewhat impressed) a red chinese prison? \n\nkramer: george! george! \n\nelaine: jerry! (then she checks her fish) \n\njerry: well what happened was my father was staying in the home of one of red china's great military leaders, general chang, who by the way came up with the recipe for general chang's chicken. you know, the one with the red peppers and orange peel at szechwan gardens? george sure, i have it all the time. very spicy. \n\njerry: well general chang was a very flamboyant man. a complete failure as a general, but a helluva cook. \n\nelaine: (o.c.) jerry! jerry elaine?! \n\nelaine: (o.c.) jerry! over here... \n\nelaine: (cont'd) where have you been? \n\njerry: i was arrested for urinating. \n\ngeorge: (proudly) me too. \n\nelaine: you what? \n\njerry: i have uromysitisis. it's very serious you know. \n\nelaine: look at my fish... (jerry examines it) is he... \n\njerry: no, but he's not looking good... (elaine turns to two huge body builders in workout wear) \n\nelaine: (desperate) please, we can't find our car. please drive us around the parking lot to find our car. my fish are dying. \n\nman #2: can't do it. \n\nelaine: i can see not caring what happens to us, we're human. but what about the fish? the fish? \n\nman #3: sorry. (they keep walking.) \n\nelaine: that's right, go. go home to your dumbbells. work on your pecs. i'm really impressed. \n\nelaine: (cont'd) that's right you heard me. you got a problem with that? \n\ngeorge: elaine, shut-up. \n\njerry: hey, where's kramer? \n\ngeorge: i don't know. (to elaine) where's kramer? \n\nelaine: i thought he was with you. \n\ngeorge: see, i knew it. i knew this was gonna happen... \n\ngeorge: (cont'd) look at the time, that's it. \n\nelaine: have we looked over there? have we checked that side? \n\ngeorge: we came in over there! \n\nelaine: we didn't come in over there! \n\njerry: where's kramer? \n\njerry: hey george, there she is again. ... \n\ngeorge: so what do you want me to do? \n\njerry: ask her to drive us around. there's your opening. \n\ngeorge: that is an opening. \n\ngeorge: (cont'd) excuse me...i really... what's happened is that my friend forgot where he parked and if you're not in a big hurry, we'd really appreciate it if... \n\namy: oh sure, i'll drive you around. \n\ngeorge: you will? \n\namy: sure. \n\ngeorge: thanks a lot. i'm really late. my parents are waiting in front of my building and we're stuck here. \n\namy: i wouldn't want to get lost in here. it smells like a toilet. people are such animals. \n\ngeorge: yeah, right. \n\njerry: filthy pigs. \n\ngeorge: it's a blue honda... \n\namy: this has happened to me too. it's very frustrating. \n\nelaine: hi, i'm elaine. \n\njerry: jerry. \n\namy: hello. \n\nelaine: it's very nice of you to do this. i've asked several people and they wouldn't even answer me. \n\namy: i'm happy to do it. (to george) i'm amy. \n\ngeorge: hi amy, i'm george. \n\ngeorge: (talking in passenger window) i didn't mean anything by it. i don't even know l. ron hubbard! i didn't know you were... \n\ngeorge: (cont'd) ...with that group. \n\nelaine: (shouting to amy) what about my fish? \n\njerry: boy, those scientologists. they can be pretty sensitive. \n\nelaine: i'll say. \n\nelaine: what is it? (they discover what he's staring at) the car! \n\njerry: the car! \n\ngeorge: the car! \n\nelaine: we found it. i can't believe it! \n\ngeorge: kramer, kramer's not here...i knew it. i knew it! i knew this would happen. (screaming) kramer! kramer! \n\njerry: kramer! \n\njerry: kramer. \n\nkramer: jerry? \n\njerry: yeah, over here. \n\nkramer: boy i had a helluva time finding that air-conditioner. i looked everywhere. i completely forgot where i hid it. you know where it was? \n\ngeorge: purple 23. \n\nkramer: right! purple 23. i could've used you. \n\ngeorge: sometimes it's good to have a pencil to write these things down. \n\nkramer: what time is it? \n\ngeorge: seven forty-five. \n\nkramer: well at least there's no traffic. \n\ngeorge: right. \n\nkramer: what time does that play start? \n\ngeorge: eight o'clock. \n\nkramer: that might be a problem. (to elaine) where's your little bag of... \n\nkramer: (cont'd) oh...(takes out parking stub) boy this garage is going to cost a fortune. you know how long we were here? \n\ngeorge: she thinks i'm a nice guy. women always think i'm nice, but women don'tnice. \n\njerry: this is amazing, i haven't seen one person go in to that restaurant since it opened. poor guy. \n\ngeorge: why is nice bad? what kind a of sick society we are living in, when nice is bad? \n\njerry: what's that smell? what are you wearing? \n\ngeorge: what, a 'little' cologne. \n\njerry: manly. \n\ngeorge: monica wants me to wear it. \n\njerry: so why didn't you say no? \n\ngeorge: i'm too nice. \n\njerry: look at this poor guy. his family is probably in pakistan -- they're waiting him to send back money. this is horrible. \n\ngeorge: she wants me to take an iq test. \n\njerry: that's because you're stupid enough to wear the cologne. \n\ngeorge: no, she's taking this course in education for her masters. it's part of her research project, so i have to be a guinea pig. \n\njerry: i've never been a guinea pig. i've been a sheep, a tody. \n\ngeorge: you know, i can't talk to you anymore. \n\njerry: all right, i'm sorry. go ahead, you're taking the iq test. \n\ngeorge: yeah, and she's going to find i'm a moron. you know, people think i'm smart, but i'm not smart. \n\njerry: who thinks you're smart? \n\ngeorge: i'm not going to break a hundred on this thing. \n\njerry: what thing? \n\ngeorge: you don't listen when people talk to you anymore! \n\njerry: oh, oh, the iq thing...yeah. \n\ngeorge: i'm sure i have a low iq. i've been lying about my sat scores for 15 years. \n\njerry: what'd ya get? \n\ngeorge: what did i get or what do i say i got? \n\njerry: what do you say? \n\ngeorge: i say fourteen o nine (1409). \n\njerry: 1409, that's a good score. \n\ngeorge: psst, you're telling me. \n\njerry: what did you really get? \n\ngeorge: you are my friend. \n\njerry: of course. \n\ngeorge: i tell you everything, right? \n\njerry: i hope so. \n\ngeorge: well, this i take to the grave. \n\njerry: he's serving mexican, italian, chinese. he's all over the place. that's why no one's going in. \n\nelaine: why do you keep watching? \n\njerry: i don't know, i'm obsessed with it. it's like a spider in the toilet struggling for survival. and even though ya know he's not going to make it, y-y-you kind of root for him for a second. \n\nelaine: and then you flush. \n\njerry: well, it's a spider. \n\nelaine: you know, sometimes people won't go in a place, if they don't see anyone else in there. \n\nelaine: do you have to do that? jerry, don't do that, that is so annoying. \n\njerry: bazooka joe. \n\njerry: the buzzer. \n\nelaine: it's your house. \n\njerry: my house? you gotta be on the lease to press to buzzer. yeah? (to the intercom) \n\nintercom: it's george. \n\njerry: come on up. \n\nelaine: casus belli. \n\njerry: what's that? \n\nelaine: it's latin. i read it in some book. i don't know, i just wanted to say it out loud. \n\njerry: come on, go in, go in! [watching dream cafe with binoculars again] \n\nelaine: have you gone in there? \n\njerry: no, i'm afraid we'll start talking, and i'll gonna wind up going partners with him. \n\ngeorge: hey. \n\njerry: you know, i could probably shoot him from here. i'd be doing us both a favor. \n\ngeorge: i'm wearing some cologne, all right? \n\nelaine: sure, fine. \n\njerry: casus belli. \n\nelaine: casus belli. \n\ngeorge: what's that? \n\nelaine: since when do you wear cologne? \n\ngeorge: why is what i do is so important? why must i be always the focal point of attention? let me just be, let me live. \n\njerry: hey, how'd you do on that iq test? \n\ngeorge: i didn't take it, yet. \n\nelaine: what iq test? \n\ngeorge: what's casus belli. \n\njerry: oh, it's nothing... \n\ngeorge: is it about me? \n\njerry: why must you always be the focal point of attention? why can't you just be? (elaine laughs - hu) why can't you live? \n\nelaine: it's just a latin phrase george, it does not mean anything. now, what is this test? \n\njerry: this woman he's dating is making him take this iq test for this course. \n\nelaine: oh, that sounds like fun. \n\ngeorge: yeah, fun. iq tests are totally bogus. they prove nothing. \n\nelaine: you'll do well, you're smart. \n\njerry: no see, he's not smart. people think he's smart, but he's not. \n\nelaine: wha'd you get on your sat's? \n\ngeorge: it varies. \n\njerry: you know, i don't even know my iq. \n\nelaine: huh, mine's 145. \n\ngeorge: 145! \n\njerry: get out of here! \n\nelaine: you get out of here! \n\njerry: you get out of here! \n\nelaine: huhuhuhuhuhuhu (laughing) \n\ngeorge: shst, you should take the test for me. \n\nelaine: huh. \n\njerry: boy that'd be something, cheating on a iq test. \n\ngeorge: haha (laughs) \n\njerry: hey, remember in college when you passed lettick the test out the window? you became a legend after that. (stepping over elaine then george's legs to get to the large blue chair and sits down.) \n\ngeorge: yeah, yeah i really had some guts back then. why don't we do it again? \n\nelaine: what? \n\ngeorge: you could take the iq test for me. i could pass it to you out a window. we could do it, she lives in the first floor. \n\nelaine: are you serious? \n\ngeorge: why not? \n\nelaine: where would i take the test? \n\ngeorge: i don't know, she lives right around the corner. you could take it here or go to the coffee shop. \n\nelaine: no, that'd be too noisy. \n\njerry: take it to dream cafe, you won't hear a peep. \n\nelaine: hey, what do you think? \n\njerry: hey, i love a good caper. \n\nelaine: yeah, that's what is, isn't it? a caper. huh. \n\ngeorge: you'll do it? \n\nelaine: what the hey. \n\ngeorge: yeaah, beautiful... (they try to hit a high five, but george hits elaine in the forehead.) sorry... \n\nbabu bhatt: welcome to the dream cafe. \n\njerry: well, ah, i've been looking forward to it. \n\nbabu: oh, ah how did you hear about us? \n\njerry: eh, people, people are talking. \n\nbabu: smoking or non-smoking? we are proud to offer both. \n\njerry: ah, non-smoking would be great. \n\nbabu: very good. my name is babu bhatt, i will be your waiter. a steaming hot folded face cloth for your pleasure. \n\njerry: thank you. [throws the towel around like a hot potato.] \n\nbabu: our specials are tacos, moussaka and franks and beans. \n\njerry: well, ah w-what do you recommend my good fellow? \n\nbabu: oh, the turkey. \n\njerry: well then the turkey it'll be. and may i say you have a splendid establishment here, my friend. i'm sure you flourish at this location for many, many years. \n\nbabu: you're very kind man. very kind, thank you. very kind... \n\njerry: (thinks) very kind. i am a kind man. who else would do something like this? nobody. nobody thinks about people the way i do. all right, snap out of it you stupid jerk. you're eating a turkey sandwich. what do want, a nobel prize? \n\ngeorge: you go in the living room. i'll take the test in here. \n\nmonica: but why? \n\ngeorge: i won't be able to, concentrate in front of you. \n\nmonica: oh, i think you're making too much of this. iq tests don't mean anything. \n\ngeorge: are you kidding me? [elaine walks past the window glancing in] this is the best tool we have today of measuring a persons' intelligence. \n\nmonica: well, i certainly don't place any importance on it. \n\ngeorge: well, i think you're wrong about that. [elaine walks past the window again, glancing in] and ah now if you'll excuse me, i'd really like to get started, please. \n\nmonica: good luck. \n\ngeorge: don't need it. n'huhuhu (laughs) \n\nelaine: what's been going on out there? i've been standing here 20 minutes. \n\ngeorge: i'm sorry i'm sorry, here's the test. thanks again for doing this - hhe. \n\nelaine: all right, what time do you want me back here. \n\ngeorge: ah, ah, twenty to three. \n\nelaine: ok. \n\ngeorge: thanks again. \n\nelaine: all right. \n\ngeorge: a-and don't settle for 145, you can do better, you're a genius. heheheh (laughs) \n\njerry: thank you babu. you have quite a flair. you are quite the restaurateur i must say. \n\nbabu: it is in deed my pleasure. \n\njerry: oh, please... \n\nbabu: oh, welcome to the dream cafe. (runs to get a menu.) our specials today... \n\nelaine: oh, no no no. i'll just have a tea and toast. (sits down across the table from jerry) \n\nbabu: tea and toast. \n\njerry: eat something! babu... \n\nelaine: um, ok, ah well i'll have the, th-ri-rigatoni. \n\nbabu: oh, oh very good choice. very good. \n\njerry: oh wow, so you got the test. you're cheating. \n\nelaine: i know. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: oh boy. woop... \n\nkramer: jerry let me ask you something, hi elaine... (pats her on the shoulder twice.) \n\nelaine: hey. \n\nkramer: this guy leaves this jacket at my mother's house two years ago. now, she hasn't spoken to him since and now he says he wants the jacket back. \n\njerry: so? \n\nkramer: well, i'm not giving it back. \n\njerry: why not? \n\nkramer: well because i meet a lot of women in this jacket, you know they're attracted to it. i mean why do you think my mother went out with him? \n\nkramer: oh, gees... \n\nelaine: ok, \n\nkramer: you're all right \n\nelaine: yeah, ok... (takes the test and moves to another table.) \n\nkramer: (eating some nachos) anyway, it's been two years. i mean isn't there like statue of limitations on that? \n\njerry: statute. \n\nkramer: what? \n\njerry: statute of limitations. it's not a statue. \n\nkramer: no, it's statue. \n\njerry: fine, it's a sculpture of limitations. \n\nkramer: wait a minute, just wait a minute...elaine, elaine! now you're smart, is it statue or statute of limitations? \n\nelaine: statute. \n\nkramer: oh, i really think you're wrong. \n\nelaine: look, kramer, i have to take this test ok, i don't have a lot of time. \n\nkramer: what test? \n\nelaine: an iq test. \n\nkramer: hmm. why you takin' an iq test? \n\nelaine: it's for george. \n\nkramer: george? \n\nelaine: yeah, can-look ... can i explain it to you later? \n\nkramer: yeah, but why are you taking an iq test for george? \n\nelaine: would you please?! \n\nkramer: what, is it for a job or something? \n\nelaine: later! \n\nkramer: you're positive it's statute? \n\nelaine: yes, yes! (jerry shaking his head, like he can't believe what he's seeing) \n\nbabu: welcome, welcome. a steaming hot face towel for your... (gives kramer a hot towel and kramer screams, elaine screams and kramer falls from his chair. he gets up and is dazed) \n\nmonica: george? \n\ngeorge: yeah? \n\nmonica: the door is locked. \n\ngeorge: oh, it's locked? \n\nmonica: i need to get something. \n\ngeorge: monica, i'm really focused here, this stuff's a killer. (turns to the next page) \n\nmonica: george! \n\ngeorge: wish i could. (raises the magazine up in front of his face and continues reading.) \n\nbabu: nananeena, ladadeeda, laadadeeda, saadina.... laadadeeda sa saadina (singing too loud) \n\nelaine: babu! ba-if-if ya don't mind? \n\nbabu: set. ok \n\nelaine: set. \n\nbabu: i'll get it ... \n\nelaine: oh my god! it's all over the test! \n\nbabu: oh, i did sc-i'm terribly sorry. \n\njerry: oh my god. \n\nelaine: oh man! look at this... i'm out of time anyway. \n\nbabu: please, forgive me, please... \n\njerry: go ahead, i'll take care of it. \n\nelaine: uhh. \n\nbabu: (opens the door for elaine) please, i'm very sorry. tell your friends! \n\njerry: it's all right, she was cheating anyway. \n\nbabu: you're a very kind man. \n\njerry: babu, you're pakistani, right? \n\nbabu: yes, pakistani, yes. \n\njerry: babu, may i say something? \n\nbabu: of course, you're very smart man, i listen. \n\njerry: i am not a restaurateur by any means, but it occurred to me that perhaps you might serve some dishes from your native pakistan? as opposed to say t-the franks and beans for example. \n\nbabu: but there are no pakistani people here. \n\njerry: doesn't matter. you would have the only authentic pakistani restaurant in the whole neighborhood. \n\nbabu: yes, you see everything, don't you? \n\njerry: well, you know; not everything. i do what i can. \n\nbabu: i close down today and when i open again it'll be all pakistani restaurant. thank you, thank you so much, you're very special person, very special. \n\nelaine: it was an accident. \n\ngeorge: what did you go on a picnic? \n\nelaine: babu bhatt did it. \n\ngeorge: babu bhatt? how i'm going to explain this? \n\nmonica: time's up george. \n\ngeorge: u-ok. (george closes the window and shoos elaine off. he opens the door to monica.) here you go. \n\nmonica: how did you do? \n\ngeorge: piece of cake; hu. \n\nmonica: what happened to the test? \n\ngeorge: what? oh i spilled some food on it. \n\nmonica: food? what food? \n\ngeorge: what are you talking about? \n\nmonica: where did you get food? \n\ngeorge: from my pocket. \n\nmonica: your pocket? \n\ngeorge: i eh, i had a sandwich in my pocket. \n\nmonica: and coffee? \n\ngeorge: yeah, had some coffee, yeah. \n\nmonica: where did you get the coffee? \n\ngeorge: where did i get the coffee? where do think i got the coffee, at the grocery store. (small laugh) \n\nmonica: how did you get there? \n\ngeorge: i walked. \n\nmonica: how did you get out of the apartment? i didn't see you leave. \n\ngeorge: i climbed out the window. \n\nmonica: you climbed out the window? \n\ngeorge: of course. \n\nmonica: why didn't you go out the door? \n\ngeorge: the door? why would i go out the door? the window's right here. \n\nmonica: you're a fascinating man, george costanza. \n\n[jerry's apartment, jerry and elaine. jerry is looking dream cafe with binoculars. there's a sign on the window: closed for renovation.] \n\njerry: the average person in a situation like this, they walk right by it. not me. \n\nelaine: you're very special. \n\nkramer: hey, do me a favor... some guy comes in looking for me, tell him you don't know where i am. \n\njerry: of course, i always do. \n\nkramer: no, no it's that guy. he's really been bugging me about the jacket. \n\nelaine: just give it back to him. \n\nkramer: oh, he'll have to kill me. (leaves.) \n\njerry: hey georgie! \n\ngeorge: coming up. \n\njerry: how'd you do on the iq test?! \n\ngeorge: 85! \n\njerry: what?!! \n\ngeorge: 85, jerry! 85 iq ! \n\nelaine: 85? \n\njerry: well, well, well... \n\nelaine: he's coming up? \n\njerry: well, i'm no genius but, according to my calculations he should be here in a few seconds. \n\nelaine: yeah, but an 85, jerry, that's ridiculous. \n\njerry: well, maybe the test was gender bias, you know a lot of questions on hunting and testicles... \n\ngeorge: oh, hello professor. \n\nelaine: george, i cannot believe... \n\ngeorge: please... \n\nelaine: no there has got be a mistake. \n\ngeorge: you should've seen her face. it was the exact same look my father gave me when i told him i wanted to be a ventriloquist. \n\njerry: but an 85? \n\nelaine: listen, there were too many distractions there. babu...what ever he's name was and kramer...i couldn't concentrate. \n\nelaine: jerry! it was! let me take it again. \n\ngeorge: ooh ho hoo, forget it. \n\nelaine: oh, come on, come on. i?ll guarantee 140. what do you have to lose? \n\ngeorge: you could do worse! \n\nelaine: no, no, come on. i guarantee it. \n\ngeorge: all right, i'll ask her. \n\nelaine: ok, now where i'm going to take it. \n\njerry: take it here, i'll leave, there'll be no distractions. \n\njerry: well, congratulations my friend. you know, i'm sorry i missed the grand re-opening. i was out of town for about a week. \n\nbabu: you see how i listen. i work very hard, borrow more money. \n\njerry: i think it's fantastic. has a certain indefinable charm. \n\nbabu: you wish to eat? \n\njerry: let me tell you something babu. you go back in that kitchen -- tell your chef i want the works. \n\nbabu: very good. \n\nelaine: (stretching) oh man... uunh. \n\nelaine: what are you doing? \n\nkramer: quiet. shh, don't say anything. \n\nelaine: what's going on? \n\nman behind the door: hey, kramer! i saw you go there! i'm not leaving until you gimme that jacket. (bangs on the door) open up kramer! \n\nelaine: wha'd you come in here for? \n\nkramer: ah, well i thought i'd throw him off. see, he knows where i live. \n\nelaine: well kramer, i have to return this test. i've got to get out of here. \n\nkramer: i thought you took the test. \n\nelaine: i had to take it again. \n\nkramer: how come? \n\nelaine: what's the difference?!! \n\nkramer: well, you can't leave now. \n\nelaine: what? \n\nman behind the door: come on, kramer! i want that jacket back! \n\nkramer: never! \n\nmonica: come on george, open up. \n\nmonica: well? \n\ngeorge: how' you doing? \n\nmonica: where's the test? \n\ngeorge: hunh, you know, it's the damnedest thing. i went out the window again to, to get a cup of coffee... \n\njerry: babu? babu...[waves babu to come to table] babu...you know, i got to tell you, i never do this, but the shrimp, it's just, it's a little stringy. you have any chicken? \n\nbabu: the shrimp is stringy? \n\njerry: well, maybe your refrigerator... \n\nbabu: quiet!! \n\njerry: no i... \n\nbabu: you shut up! \n\njerry: well i... \n\nbabu: you make me change restaurant, but nobody come! you say make pakistani, babu bhatt have only pakistani restaurant. but where are people? you see people? show me people. there are no people! \n\njerry: you know, i think i'll just take the check. \n\nbabu: you bad man! you very very bad man! [leaves] \n\njerry: (thinking) bad man? could've my mother been wrong? \n\nmonica: are you looking for george? \n\nelaine: well eh, kind of.... \n\nmonica: george left. \n\nelaine: oh. \n\nmonica: is, that the test? \n\nelaine: oh, this...emm...yeah...here you go. \n\nmonica: thanks. i hope you do a lot better this time. \n\nelaine: actually, you know i think i did. the first time i couldn't really cons...[monica closes the window]...entrate. \n\njerry: you know what it was, bad location. \n\ngeorge: come on, lets not stand here too long, we might run in to her. \n\njerry: aren't you cold? where's your jacket? \n\nkramer: h-yeah... \n\njerry: oh, sorry. \n\nkramer: i'm going upstairs. \n\nelaine: hey guys... \n\njerry: hey. \n\nelaine: i just ran in to monica. you know what my iq is? 151. \n\njerry: 151? \n\nelaine: yeah..heheah (laughing a bit) \n\ngeorge: that's a good score. \n\njerry: so, what are you up for? how about mexican? \n\ngeorge: italian. \n\nelaine: no, chinese. \n\njerry: you know, what would be great? \n\njerry: ....hair that was on your shower soap today could be in your head tomorrow. how did they do the first transplant? did they have the guy take a shower , get his soap , rush it in there by helicopter, you know keep the soap alive on the soap support system ....looks it over. \"we got the hair but i think we lost the zest.\" ....rejects the transplant with organs. is it possible that a head could reject the hair transplant . guy just standin' there and suddenly... ..bink! ( motions hair flying out of his head)........lands in someone's frozen yogurt. \n\nrepairman: .....the gaskets that you have here are asymmetrical. \n\njerry: ah..ha!.. really. ( jerry is barely listening to him ) \n\nrepairman: so i took off the motor relay on the compressor....'cos you..you (stutters) you've got some discoloration \n\njerry: oh! well whatever you have to do. \n\nrepairman: i was working with one.....mount at a time 'cos you don't wanna disturb the position of the compressor. \n\njerry: (sarcastically) no you don't.. \n\ngeorge: hey! what are listening to? \n\njerry: my show from last night. \n\ngeorge: oh! you taped it? \n\njerry: yeah , i was doing new material. \n\ngeorge: hey! did 'ya ever do that thing on the toes that i said . \n\njerry: huh? \n\ngeorge: yeah! like the big toe is like the captain of the toes, but sometimes the toe next to the big toe gets so big that there's like a power struggle and the second toe assumes control of the foot. \n\njerry: the\" coup d-toe\" \n\ngeorge: yeah. did you do it? \n\njerry: yeah! \n\ngeorge: so? \n\njerry: nothin'.....nothing at all. \n\ngeorge: need to use the phone. \n\njerry: who you calling? \n\ngeorge: china. \n\njerry: china really? \n\ngeorge: yeah. i'll pay for it. \n\njerry: what for? \n\ngeorge: what for? . i'll tell you what for.... for hair. \n\njerry: hair? \n\ngeorge: the chinese have done it my friend. the chinese have done it. \n\njerry: done what? \n\ngeorge: discovered a cure for baldness. \n\nrepairman: did you see that last night? \n\ngeorge: it was on cnn ( kramer comes in and he is taping from a camcorder) this chinese doctor zeng zau. has discovered a cure for baldness. \n\njerry: (to kramer) what's this? \n\nkramer: well i just got it. spector gave it to me , he's giving everything away...becoming a minimalist. \n\ngeorge: is that the guy who likes fat women? \n\njerry: doesn't the fat fetish conflict with the minimalism. \n\nkramer: (to george) you , you know what you should've done is watching that report on cnn last night. \n\ngeorge: i did, i'm trying to call china. \n\nkramer: you can't call china now its like, what, three 'o clock in the morning there \n\njerry: oh! my god!.... \n\ngeorge: what? \n\njerry: oh! god.. oh! man.....oh! brother!!! i can't believe what i'm hearing. this woman his talking to me on my tape recorder while i was on stage. this is wild. i've never heard anything like this in my life. listen to this. \n\ngeorge: (george puts on the headphones) oh! my god... \n\nkramer: give me it..( tries to pull them off george's head) \n\ngeorge: wa..wait.wait!......who is this woman? \n\njerry: i don't know . i have no idea . i was just listening and she came on. \n\ngeorge: this is like a penthouse letter...why can't i meet women like this? \n\nkramer: all right come on....again attempts to pull headphones off) \n\ngeorge: wait ,wait, wait, wait!!!!.... where was the tape recorder? \n\njerry: it was in the back of the room on the left, she must have been sitting right in front of it. \n\ngeorge: my god!!! \n\nkramer: c'mon it's my turn. \n\ngeorge: all right, all right, all, right!!( gives the headphones to kramer) how you gonna find out who this is? \n\njerry: good question. \n\nkramer: where's the volume..(finds it) a, yai..ya...ya..ya!!!! \n\ngeorge: what do the chinese have to gain by faking a cure for baldness? \n\njerry: if it was real ,they would never let it out of the country. no baldness , it'd be like a nation of supermen. \n\nelaine: hi boys. \n\nboth: hello... \n\nelaine: what's happening? \n\njerry: tell her. i wanna hear her reaction. \n\ngeorge: this woman left this really sexy message on jerry's tape recorder...... \n\njerry: (pushes george) not that you idiot!! \n\ngeorge: what?? \n\njerry: the chinese , the chinese bald cure. \n\ngeorge: i thought you meant the.. \n\njerry: no i meant the bald cure. we were talking about the bald cure. \n\nelaine: what did she say? \n\npeter: seinfeld.....( from way in the back of the restaurant. cheesy plot device to have jerry leave the table for a minute so george and elaine can talk) \n\njerry: hey! is that peter? ...i can't believe it. get me a cup of decaf. (leaves table) \n\nelaine: so did you hear this message? \n\ngeorge: oh!, he he, it was unbelievable \n\nelaine: really! \n\ngeorge: yeah. i can't get over it. \n\nelaine: huh! sexy? \n\ngeorge: this woman drove us out of our minds \n\nelaine: like ...humm...how did she sound? \n\ngeorge: she had this throaty , sexy kind of whisper. \n\nelaine: really , like a... like a....(leans over to george and whispers) jerry, i want to slide my tongue around you like a snake.....ooooooooooha ,oooooohaaaa..... \n\ngeorge: oh! my god!!......you?.....you?...that was you?.... \n\nelaine: shhhhhh!!! \n\ngeorge: how did ya?... \n\nelaine: i stopped at the club to see him and i was standing in the back while he was on, right?, and there was this tape recorder there and i.....got this impulse. ha ha ha ha....what? \n\ngeorge: oh! no no nothing.... \n\nelaine: now listen , promise me you won't tell him okay.i want to have a little fun with this. \n\ngeorge: i had no idea you were filled with such....sexuality.. \n\nelaine: oh! that was nothing. so listen, what about this bald thing? \n\ngeorge: ah! some bald thing, a bald thing i dunno. it's nothing \n\njerry: remember peter? \n\ngeorge: peter? \n\njerry: you remember peter. remember i told you how he went to the track that one time and he was yelling at this jockey and the jockey got off the horse and started chasin' him. \n\nelaine: so listen , what about this girl on the tape recorder? \n\njerry: oh elaine....what do you think an enraptured female fan of mine might say? \n\nelaine: i don't know. \n\njerry: she went on in some detail about certain activities, illegal in some states, for consenting adults. things you would know very little about. \n\nelaine: oh! really. \n\njerry: well this type of things is very common when you're in show business. \n\nelaine: so what, are you gonna ask her out. \n\njerry: no i can't she didn't leave her name or number. \n\nelaine: bummer...okay , good luck finding her . i'm taking off. \n\ngeorge: wh.. where you going? \n\nelaine: home. \n\ngeorge: why you going home for? \n\nelaine: well , i just came from the gym , unless i can shower at your place. \n\njerry: sure. \n\ngeorge: oh! my god. oh! man... \n\njerry: i don't get it. why would a woman do that and then leave no way to get in touch with her. \n\nelaine: (coming out of the shower in a bathrobe) may be she realized she could never have you and she jumped off the george washington bridge. \n\ngeorge: (phone rings ,picks up) operator? beijing? \n\njerry: why are you doing this? \n\ngeorge: why do i do anything? tsss...for women. \n\njerry: elaine have you ever gone out with a bald man? \n\nelaine: no. \n\njerry: you know what that makes you?...a baldist. \n\ngeorge: oh. this i need. hello!! hello. i..i..is this the hair restoration clinic? ...does anyone speak english? \n\nelaine: ( to kramer who just got in with his camcorder) ooooh! you're taping. \n\nkramer: just be yourselves. ( elaine plays with her hair flirtingly) \n\nelaine: aah! okaaay. \n\nkramer: well we're talking with elaine benes; adult film star on the set of her new picture \"elaine does the upper west side\" \n\nelaine: ( to the camera) hi. how 're you doin'? \n\nkramer: i'm doin' fine. \n\ngeorge: do you speak english?...english!! \n\nkramer: whooooa! here's the director jerry seinfeld . jerry , you discovered elaine benes? \n\njerry: well yes i did that's true. a couple of a guys i knew in the coastguard told me about her.... and i sensed that she had the anger and intensity that i needed to make this film work. \n\ngeorge: english. does anybody speak english .nobody speaks english. \n\nkramer: so what scene are you ready to shoot now , elaine? \n\ngeorge: in this scene my co-star who's right over here ( goes over to george who is still on the phone) follow meeeee... is george costanza, he plays an airline pilot who's just returned from rome and i'm about to show him how much i've missed him. \n\nkramer: that's my chinese food...so george is this your first movie with elaine? \n\ngeorge: (visibly disturbed) i...i..i dunno. \n\nkramer: so elaine in your movies is the sex real or is it simulated? \n\nelaine: oh. it's always simulated....except with george that's in my contract. \n\ngeorge: all right, kramer that's it.....( pushes the camera) hello . english. does anyone speak english \n\nkramer: (to the chinese delivery boy) how much do i owe you? \n\nping: $15.90. \n\nkramer: $15.90.? \n\ngeorge: huh. excuse me (to ping) hum... do you speak chinese? \n\nping: chinese....yeah. \n\ngeorge: look...humm..i'm on with beijing with the hair restauration clinic. could you talk to them for me and tell them i'd like to place an order. \n\nping: (sounds like) gwen , ayon. wonche son thai gettin my chon fai yu.(looks at george and laughs) \n\ngeorge: they got a billion people over there and he found a relative. \n\nping: ah fuka suma. if you send money they send cream. \n\ngeorge: they send me? aw right ..ask 'em does it really work? \n\nping: gym a gun sen tokomo. chin che .they say you grow hair, look a like stalin \n\ngeorge: ask' em are there any side effects? \n\nping: dowe o futo yum.... impotence. ....( makes a just kidding gesture) \n\ngeorge: aw! funny he's a funny guy. \n\nping: get a money order from the bank of china , be here three days after they get check. \n\nping: (continues his phone call) ha pachini fair pousher pousher mouist i fai chin fousher... \n\njerry: (as ping rambles on ) ...s'cuse me (ping looks up) kind of an expensive call. \n\nelaine: thanks for driving me home. what did i do to deserve this? \n\ngeorge: yoohoo ,plenty......wh..wh..what are doing hum...you're going in? \n\nelaine: well ya. i guess so why? you wanna do something? \n\ngeorge: yeah....euh...i dunno what? \n\nelaine: pffft....there's really nothing to do. \n\ngeorge: ( becoming more and more awkward) yeah..... \n\nelaine: do you think of anything?.. \n\ngeorge: no, no....(mumbles) \n\nelaine: i am up for anything. \n\ngeorge: really...(he honks the car and is startled, elaine laughs)......i have to say...you were really good doing that porno thing....you're talented. \n\nelaine: i was just kiddin, around....... \n\ngeorge: i thought the thing you said about the sex not being simulated . that was really funny. \n\nelaine: ( feeling awkward as well) yeah! that was a...f...fun ..mmm?. \n\ngeorge: so all right i'll speak to you through jerry and everything. \n\nelaine: okay...thanks a lot for the ride. \n\njerry: ..she was sitting at the table where i had my tape recorder...okay great. thanks again.. bye. ha ha..who do these women think they're dealing with? did she think she was gonna leave this incredibly erotic message on my tape and i was just gonna let it go. not bloody likely... \n\nkramer: what is that? \n\njerry: that's my cockney accent. \n\nkramer: naw ,na , that's no good. \n\njerry: lets hear yours. \n\nkramer: not bloody likely.. \n\njerry: that's the worst cockney accent i've ever heard in my life.( george enters) hey! georgie boy , guess what i got. \n\ngeorge: guess, what i got. \n\njerry: oh! is that the bald stuff? \n\ngeorge: from china. all the way from china. \n\nkramer: wait,wait wait...let me get the camera. \n\ngeorge: no don't get the camera , we don't need the camera. listen i know your skeptical , but i really believe in the chinese. \n\njerry: yes i am skeptical. \n\ngeorge: why do you have to be so suspicious of every one. this is a great man zeng zau, he wants to help bald people. \n\nkramer: w..w..wa...wa..wait..wait wait.. now lets videotape your head for the before picture, so we can watch how it grows and stuff. sit down (george sits).....lean back...a little bit to the right. \n\njerry: make sure you get this area here, where he needs the help.... \n\ngeorge: all right, all right ( goes to the bathroom) \n\nkramer: he's a happy camper huh? \n\njerry: happy camper , i don't hear that expression enough. \n\nkramer: remember that guy who took my jacket. the one i found at my mother's house. \n\njerry: yeah. \n\nkramer: my mother told me that he got arrested for mail fraud \n\njerry: no kidding? \n\nkramer: he's in jail. \n\njerry: what happened to the jacket. did he take it with him? \n\nkramer: that's what i intend to find out. (george comes out of the bathroom and he's got white cream on his head) \n\njerry: you can see it. you gonna walk around like that? \n\nkramer: it stinks. can you smell that?....you stink. \n\njerry: how long are you suppose to leave it on for? \n\ngeorge: all day. ( phone rings , jerry picks up) \n\njerry: hello. \n\nelaine: it's elaine marie benes. \n\njerry: well hello.. \n\nelaine: hello.. so did you ever find out who that woman was? \n\njerry: yes , i got her number. \n\ngeorge: is that elaine? \n\njerry: yeah. \n\ngeorge: hi elaine... \n\nelaine: i guess you figure you're in for a pretty wild night? \n\njerry: well , as i said this type of thing is very common in show business \n\nelaine: well listen i'm going to (?) do you want me to stop by? \n\ngeorge: did she say hello? \n\njerry: what? i dunno. \n\ngeorge: i mean , when i said hello did she say hello back? \n\njerry: i don't know , who keeps track of hellos. \n\ngeorge: isn't polite to say hello when somebody says hello? \n\njerry: she's coming up. \n\ngeorge: elaine's coming up? \n\njerry: yeah. what's wrong, why? ( george runs back to the bathroom) \n\nkramer: how often do you cut your toe nails? \n\njerry: i would say every two and a half to eight weeks. \n\nkramer: 'cos the other night , you know, i was sleeping with marion i rolled over and i cut her ankle with my big toe. \n\njerry: the big toe; the captain. \n\nkramer: what? \n\njerry: the captain of the toes. (phone rings) hello. \n\nelaine: jerry...jerry listen i got too much stuff this afternoon, i can't come over, forget it. \n\njerry: okay....too bad. \n\nelaine: so humm....when you gonna call her? \n\njerry: soon as i get off the phone wih you. \n\nelaine: good luck. \n\njerry: okay , bye (to george) what happened , did you take it off? \n\ngeorge: yeah, that was enough. \n\njerry: that's it, you gave up? \n\ngeorge: no no i'm working on a system...who was that? \n\njerry: that was elaine , she changed her mind. she's not coming over. \n\nalicia: hello. \n\njerry: hello is this alicia? .this is jerry seinfeld. \n\nalicia: yeah. \n\njerry: this is jerry seinfeld. \n\njerry: (to kramer) ...( words missing)...laugh , everything's nice and at the end of the night i go for a little contact. i get the pull back. this woman said the filthiest things i've ever heard in my life. i get the pull back. \n\njerry: yeah.. \n\ngeorge: it's george. \n\njerry: come on up . (looks at his watch) ...what's he doing here now? \n\nkramer: so , you blew it? \n\njerry: she must be psychotic or something. \n\nkramer: let me have her number. \n\njerry: i'm not giving you her number. \n\nkramer: i know how to handle these psychotics. \n\njerry: sheriff?........what's with the hat? \n\nkramer: (george takes off the hat , he's got that cream on again) pheeewwww! boy! you stink. \n\njerry: what are doing here now? \n\ngeorge: i have to talk to you about something . \n\nkramer: all right lets take a look to see what we got ( examines george's head) wait a second.. i think i see something here george. lets go to the videotape. \n\ngeorge: aahh..no..no.. \n\njerry: what's up? \n\ngeorge: i can't tell ya now , he's gonna be back in a ten seconds. \n\njerry: so just start it. \n\ngeorge: i can't. \n\njerry: oh! come om . he'll be over there for a half hour, he gets lost over there. c'mon so what is this about? \n\ngeorge: all right.........i've become attracted to elaine.. \n\nkramer: all right....sit down george. \n\ngeorge: kramer, can we do this later.. \n\nkramer: no, i got the tape right here. \n\njerry: kramer, let's do this later. \n\nkramer: (ignoring them) now.. this is the tape that we made earlier and i think, that i see. a couple of buds right here. \n\ngeorge: really? ..you think. \n\njerry: kramer. i would like to talk to george for a minute, please. \n\nkramer: 'bout what? \n\njerry: it's kinda private. \n\nkramer: like the big toe captain.. \n\ngeorge: so now you're doing my bits? \n\njerry: i'm not doing your bits!! \n\nkramer: okay , all right. i'm gonna take a look at this huh!.( leaves) \n\njerry: does she know? \n\ngeorge: no!! \n\njerry: how did it happen? \n\ngeorge: i can't say. \n\njerry: well, why can't you say it? \n\ngeorge: because i promised her. \n\njerry: i thought you just said she doesn't know?? \n\ngeorge: she doesn't. \n\njerry: so how can you promise her? \n\ngeorge: because she asked me to. \n\njerry: what is this, an abbott and costello routine? \n\ngeorge: all right you really want to know?...it all started when she told met hat...she was the voice on your tape recorder. \n\njerry: what, elaine? \n\ngeorge: yeah! she made me promise not to tell you .it's supposed to be a joke. \n\njerry: (picks up the headphones) that was elaine... \n\ngeorge: well let me hear....( they struggle for the headphones) \n\njerry: wait a second. .just give me a second \n\ngeorge: you heard it fifty times already. \n\njerry: she's my ex-girlfriend i think i have precedence \n\njerry: yeaaaah!!! \n\nelaine: hi, it's elaine is this a bad time? \n\ngeorge: (yelling from the bathroom) don't tell her anything, she'll kill me!! \n\njerry: okay, okay, i promise. (puts on the headphones again) wow!!! oh man...oh god.. oh brother....whoooaaaa!! whoaaaa (elaine enters he takes them off rapidly) \n\nelaine: (concerned) what's the matter? \n\njerry: oooh! i got a pain in my side. \n\nelaine: (to george returning) hi george. something stinks in here.( george motions to jerry, she nods) \n\njerry: what are you doing here? \n\nelaine: i was the one who talked into your tape recorder. \n\njerry: i know, george told me. \n\nelaine: you told him!!!! \n\ngeorge: he..he threatened me. \n\njerry: where did you come up with all that stuff? \n\nelaine: that was nothing. \n\ngeorge: elaine.. i have to tell you something... \n\njerry: george no!! \n\ngeorge: no no no no no no no.. \n\njerry: george i'm telling ya.. \n\nelaine: what is it? \n\ngeorge: i'm very attracted to you.. \n\njerry: aye...... \n\nkramer: i've found a hair!!! yes ( goes up to the video machine and inserts the tape) hey, come here, come here ,take a look at this. \n\ngeorge: ever since i found out that you let that message on jerry's tape recorder i... \n\nkramer: whoa!!!....that was you? \n\nelaine: it was a joke... \n\nkramer: wait..( picks up the walkman) oh my god...oh yeah....elaine , i can't believe that that is you. \n\nelaine: aah.... ( she stares at the three of them all lined up like the daltons, all looking at her with lust.) i think i'll get going... \n\ngeorge: heuh. huh. stick around a while. \n\njerry: it's early. \n\nkramer: we'll order chinese. \n\ngeorge: where'd you meet her? \n\njerry: i met her on an elevator. \n\ngeorge: on an elevator? you met a woman on an elevator? \n\njerry: impossible, right? \n\ngeorge: you got less than sixty seconds. that's like dismantling a time bomb. what got into you? \n\njerry: i don't know. she was so beautiful, it was like a pure reflex. the words just came out of my mouth. \n\ngeorge: wow. what'd you say? \n\njerry: you know, i'm the one responsible for those crop circles in england. \n\ngeorge: wow. \n\njerry: can you believe i did that? \n\ngeorge: what did she say? \n\nisabel: what crop circles? \n\njerry: not a good sign. \n\ngeorge: not everybody knows what the crop circles are. (to the newsstand owner) do you know what the crop circles are? \n\nnewsstand owner: crop circles? why don't you buy something? \n\njerry: you got something in your teeth there. \n\ngeorge: what? \n\njerry: it's green. \n\ngeorge: oh, man, it's spinach! i've been walking around like this all afternoon. \n\njerry: did you bump into anybody you knew? \n\ngeorge: i had a job interview. \n\njerry: how'd it go? \n\ngeorge: take a guess. \n\ninterviewer: well, mr. costanza, we have nothing available at the present time, but should anything open up, we'll be in touch. \n\ngeorge: ok, thanks. \n\njerry: what do you need a job, you got audrey. \n\ngeorge: yeah, right. \n\njerry: what's the matter? \n\ngeorge: oh, nothing. \n\njerry: what? \n\ngeorge: you won't think i'm a bad person? \n\njerry: too late for that. \n\ngeorge: 'cause believe me, i would only say this to you and maybe a psychiatrist, maybe. well, her nose is a little big. \n\njerry: yeah, she's got a big nose. \n\ngeorge: i mean, big would even be ok, a little beyond big. \n\njerry: it's a schnoz. \n\ngeorge: now, i'm aware that my own physical dimensions are perhaps a little short of perfection. \n\njerry: a little. \n\ngeorge: so who am i to be thinking about someone's nose? i mean, i should be grateful someone like her even looks at me. i have no job, nothing. but i have to say, i think about the nose. i don't want to think about the nose. i don't ask to think about the nose, but i think about it. i go to bed at night, i tell myself, 'don't think about the nose, forget the nose,' but i think about it. i look at her, i see nose. \n\njerry: stop being so concerned with looks. \n\njerry: have you said anything to her about it? \n\ngeorge: i could never do that. you know the ironic thing is if she had a smaller nose, i never could have gone out with her in the first place. she'd be out of my league with a smaller nose. and i really like her, i know that. and i know one other thing. i'm not getting past that nose. \n\njerry: alright, shut up, here they come. \n\ngeorge: (waving) how can i not think about it? look at the size of this thing. \n\nkramer: so my mother's going out with this guy who leaves a jacket in her house so, you know, she gives it to me. well, two years later he shows up and he takes it back. and now he's in prison. he got arrested for mail fraud. so elaine, all you have to do is go over to the apartment, tell the landlord that you're his daughter and you want to bring him the jacket in prison. \n\nelaine: won't the landlord know i'm not the daughter? \n\nkramer: no no, he's never met her. she's in california. \n\nelaine: are you coming with me? \n\nkramer: oh, yeah yeah, i have to. i'm your fianc, peter von nostrand. \n\ngeorge: why don't you just commit yourself already? \n\naudrey: what is so special about this jacket? \n\nelaine: he believes it possesses some extraordinary power over women. \n\naudrey: what's the smudge on your hand? \n\nkramer: oh, i got stamped at the reggae lounge last night. yeah, i'm going back there tonight, you know, i'm not gonna pay another cover charge. \n\ngeorge: what, you didn't wash all day? \n\nkramer: yeah, i washed, just not the hand. you wouldn't believe the women at this club. ohh, man. \n\naudrey: it's amazing how many beautiful women live in new york. i actually find it kind of intimidating. \n\nkramer: well, you're as pretty as any of them, you just need a nose job. \n\nelaine: kramer! \n\nkramer: what? what? \n\nelaine: how could you say something like that?! \n\nkramer: what? what do you mean? i just said she needs a nose job. \n\nelaine: no no, there's nothing wrong with her nose! i'm so sorry, audrey. \n\naudrey: no, it's ok. \n\nelaine: what did you have to say that for? \n\nkramer: well, i was just trying to help out. \n\nelaine: yeah? well, you can kiss that jacket goodbye, mr. von nozzin. \n\nkramer: you see what happens when you try to be nice? \n\naudrey: elaine said i could stay with her another month until tina gets back. what are you thinking about? \n\ngeorge: thinking? nothing. what could i possibly be thinking? \n\naudrey: you look like you've got something on your mind. \n\ngeorge: oh, yeah, right. i wish i had something on my mind. (pregnant pause) so how about that kramer, huh? \n\naudrey: how about him? \n\ngeorge: they way he just says stuff. \n\naudrey: he sure does. \n\ngeorge: yeah. yeah, he's quite a character. \n\naudrey: so, what did you think? \n\ngeorge: about the pizza? \n\naudrey: no, about the nose job. \n\ngeorge: oh, the nose job. i don't know, what did you think? \n\naudrey: well, i've thought about it, but i don't know. \n\ngeorge: yeah. (another pause) not that i care, one way or the other, but these doctors today really do amazing things, you know, if you were so inclined. and again, i'm not suggesting. \n\naudrey: i know, they're good. \n\ngeorge: peter jennings had one. \n\naudrey: really? \n\ngeorge: probably. they all do. in my high school, half my graduating class had them. of course, i'm from long island, so... \n\naudrey: uh huh. \n\ngeorge: it's really nothing, it's like going to the dentist. \n\naudrey: i hate the dentist. \n\ngeorge: it's a cleaning. \n\naudrey: so you really think i should do this? \n\ngeorge: if it makes you happy, i don't focus on these things. i will tell you this unfortunately, we live in a very superficial society. i don't condone it, but it's a fact of life. \n\naudrey: well, maybe i should. \n\ngeorge: what the hell. \n\nelaine: (barging in) aw, now you talked her into getting a nose job? \n\ngeorge: me? i didn't say anything. \n\nelaine: you encouraged her to get one. \n\ngeorge: i didn't encourage. no encourage. \n\nelaine: peter jennings had one? \n\ngeorge: it's possible. \n\nelaine: well, i think you should accept her for who she is. \n\naudrey: no, george is right. i want to get one. \n\nelaine: i think it's a mistake. \n\ngeorge: me too, really. unless you'd really like to get one. \n\ngeorge: i'm going straight to hell, no two ways about it. \n\njerry: well, it might not be hell but you're gonna run into some bad dudes. \n\ngeorge: (checking his watch) hey, let's get the check, she's taking the bandages off at four o'clock. \n\njerry: we have time. \n\ngeorge: it's exciting, isn't it? she's gonna have a whole new face. \n\njerry: it is exciting. \n\ngeorge: of course, not as exciting as miss crop circles, but... \n\njerry: please, please, isabel? she is the most despicable woman i have ever met in my life. i have never been so repulsed by someone mentally and so attracted to them physically at the same time. it's like my brain is facing my penis in a chess game. and i'm letting him win. \n\ngeorge: you're not letting him win. he wins till you're forty. \n\njerry: then what? \n\ngeorge: he still wins but it's not a blowout. \n\njerry: she wants to be an actress. she makes me read these moronic acting scenes with her, and i do it because i'm so addicted to the sex, i'm helpless, i'll do anything. so finally kramer comes in the other day. \n\njerry: (holding up a piece of paper) i don't want to see this woman anymore but i haven't got the will power to throw out her number. please, help me. help me. \n\nkramer: (taking the paper and tearing it to pieces) i'm proud of you. \n\njerry: so i'm never gonna see her again, i'm going cold turkey. \n\ngeorge: good for you. \n\njerry: i'll tell you, the sex... i mean, i was like an animal. i mean it was just completely uninhibited. \n\ngeorge: it's like going to the bathroom in front of a lot of people and not caring. \n\njerry: it's not like that at all. \n\nelaine: how do you even know the jacket is there? \n\nkramer: well i don't, i'm guessing. \n\ngeorge: okay, look, audrey, before you take the bandage off just remember that i was the one that encouraged you to do this, you know? now that you're gonna be a great beauty, let's not forget how this all began. you know, like if you'd listened to your friend, elaine, \n\naudrey: george? \n\ngeorge: yeah? \n\naudrey: enough. \n\njerry: alright, are we ready? come on, let's get this show on the road. \n\nelaine: are you sure you want us here for this? \n\naudrey: yes. \n\njerry: shouldn't a doctor do it? \n\naudrey: no, he said i could do it. okay, here goes. \n\ngeorge: very exciting, very exciting, it's like watching a birth. \n\nelaine: it looks good. \n\njerry: great job. \n\nkramer: you got butchered. \n\njerry: let's put him over here. \n\nkramer: (to a fleeing audrey) where are you going? \n\naudrey: (with hand covering nose) to the doctor! \n\nkramer: wait, wait, wait, i'll go with you. \n\nelaine: how ya feeling? \n\ngeorge: too much salt in my diet. \n\nelaine: can i get you anything? \n\ngeorge: nah, i'm good. \n\nelaine: you sure? anything? \n\ngeorge: mmm, no. boy, it really didn't come out too well, did it? \n\nelaine: no, it didn't. no, it didn't. \n\ngeorge: it's like, all dented. \n\nelaine: seems to be. \n\ngeorge: well, i'm sure they'll be able to fix it. you can't stop modern science. can't stop it, you can't stop it. can't stop science. can't be stopped, no way, no how, science just marches-- \n\nelaine: shut up, george. \n\ngeorge: shut up? \n\nelaine: yeah. \n\ngeorge: interesting. \n\njerry: come on, kramer, seriously, give me her number! \n\nkramer: i don't have it, i threw it out. \n\njerry: you're lying! you got it, i want that number! \n\nkramer: i told you, i threw it out. \n\njerry: give it to me! \n\nkramer: you told me not to give it to you, you made me promise. \n\njerry: well, i changed my mind, i want that number. \n\nkramer: you said, no matter what you do or say, i'm not to give you the number. \n\njerry: i was lying, give it to me! \n\nkramer: no, you told me not to! \n\njerry: i want that number! \n\nkramer: alright! (flinging pieces of torn paper to the ground) yeah! yeah! yeah! (jerry falls to the floor and starts arranging pieces) look at you! look at what you've sunk to! look at what you've become! look in the mirror, cause you need help, jerry. you need help, because i can't stand by and do it anymore. it's turning my stomach! i can't stand around here watching you destroy yourself. it's eating me up inside! \n\naudrey: the doctor said that they need to build the lateral wall of the septum. over here... \n\ngeorge: yeah. \n\naudrey: you see this perinasal sinus cavity? \n\ngeorge: oh, i got it. \n\naudrey: you see how it's collapsing? that's what's causing this huge dent. \n\ngeorge: yeah, phew. \n\naudrey: so anyway, george, do you know what i was thinking about? \n\ngeorge: what? \n\naudrey: remember we talked about taking a trip together? \n\ngeorge: we did? \n\naudrey: yeah, we talked about going to hawaii? \n\ngeorge: hawaii? \n\naudrey: anyway, i think it would be great to get away after all this. \n\ngeorge: (removing his glasses) you know, hawaii could be a little tricky right now, there's a lot of high pressure winds down there this time of year, there's a lot of debris constantly flying around. wood, and uh, lava, pretty dangerous. \n\naudrey: i never heard that. \n\ngeorge: oh yeah. my friend lived there. \n\naudrey: we could go to the caribbean. \n\ngeorge: you know, i have to tell you something. you couldn't get me on a plane right now. i get those faa reports directly. my uncle sends them to me, he used to be a pilot, so. big investigation in the, uh, what's the word there, uh, offing. it's in the offing. but, you know, you shouldn't let that stop you from going. you could go. i don't mind. \n\naudrey: george, i don't think this is working. \n\nisabel: ever since you came back from the army, you've changed. i swear nelson, i don't even know who you are anymore. \n\njerry: i'm nelson! \n\nisabel: that's not the line, jerry. \n\njerry: alright, alright, i'm sorry. (reading) nothing's changed, alma, i just need more time. \n\nisabel: i swear, nelson, sometimes at night, when you're not around, i just go crazy thinking about you. \n\njerry: well, you just need to relax. maybe a hobby, bowling is fun. \n\nisabel: yeah, bowling's good if you're really gross and ugly. \n\njerry: (to himself uh oh. my organs are playing chess again. \n\njerry's brain: well i'm getting a little tired of this. what do you say we play one for all the marbles? \n\njerry's penis: oh brain, what are you doing? you cannot beat me. do you have any idea who you're dealing with? forget about it! \n\njerry's brain: i can't take her anymore. i hate reading her stupid little acting scenes. \n\njerry's penis: oh, so what? so you read from a little play. you can't put up with that for an hour to make me happy? you're so selfish. give me one hour, then i will take over, you will not have to think for the rest of the night. \n\njerry's brain: what about tomorrow morning? do you have any idea what that's like for me? do you care? no, you don't care. so long as you get to do whatever it is you do. you disgust me. \n\njerry's penis: oh, go read a book. \n\njerry's brain: enough chatting, let's play. \n\nelaine: you know the only reason i'm doing this is because you took audrey to the hospital. \n\nkramer: (filling a pipe) yeah, yeah, ok, now uh, you're clear, you got everything? \n\nelaine: yeah. \n\nkramer: wait wait wait wait wait. (putting a ring on elaine's finger) here. \n\nelaine: what do i need this for? \n\nkramer: because we're engaged. \n\nelaine: we're engaged? \n\nkramer: um hm. \n\nelaine: kramer, this is too big. \n\nkramer: (lighting his pipe) it's my mom's. \n\nlandlord: hello? \n\nelaine: oh, uh, hi. i'm wanda pepper, i'm albert pepper's daughter. my father asked me to come here and pick up his jacket for him. \n\nlandlord: oh, hello miss pepper, it's a pleasure to meet you. (to kramer) and you must be professor von nostrand? \n\nkramer: yes, yes i am. \n\nlandlord: i've read your book, professor, and i was quite intrigued by it. \n\nkramer: uh, yes. well, it's, uh, very intriguing. \n\nlandlord: tell me, is it your contention that shakespeare was an imposter? \n\nkramer: my contention? \n\nlandlord: yes, your contention. \n\nkramer: yes, that's my contention. \n\nelaine: i heard him contend that. \n\nlandlord: it's too bad about your father. \n\nelaine: oh, it was a frame-up. \n\nlandlord: a fine man, he spoke often of you. he's very proud of the work you're doing. \n\nelaine: oh, well, we're all proud of the work i'm doing. \n\nkramer: she does fine work. \n\nlandlord: your father gave me strict orders not to turn the jacket over to anyone, but i suppose i can make an exception in your case. the closet's this way. \n\nelaine: how kind of you. \n\nlandlord: you know, your father has a very extensive wardrobe. \n\njerry's brain: what's the matter, fella? you look a little tired. ha ha ha ha ha! \n\nisabel: nelson, don't you see? you are a part of me, and i, i am a part of you. \n\njerry's penis: it's killing me. (makes a move) \n\njerry's brain: that's your move? \n\njerry's penis: yeah. \n\njerry's brain: well that's trouble, my friend. that's big trouble. checkmate! \n\njerry's penis: (beginning to cough and struggle) getting weak... losing power... you haven't seen the last of me. i'll be back. you're nothing without me. nothing! \n\njerry's brain: (before disappearing himself) punk. \n\njerry: isabel, uh, i don't think this is working. \n\nelaine: daddy certainly does have an extensive wardrobe. \n\nlandlord: he is a fine dresser and i'm sure i don't have to tell you he's quite popular with the ladies. \n\nelaine: my father, really? i had no idea. \n\nlandlord: yes, they're crazy about him. there was one in particular, came around about two years ago, looked a lot like you, professor. could have been your mother. what was her name again? carter? kramer! that's it, babs \n\nkramer: you don't say? \n\nelaine: i found it! \n\nlandlord: the woman used to walk around here half naked, sucking colt 45 from a can. her big fat stomach hanging out, orthopedic hose up to her knees, screaming down the hall, \"come back to bed, albert, you big hairy ape, and bring back that box of danish!\" \n\nkramer: so i grabbed the guy by the collar. \n\nelaine: yeah, and i yelled out, kramer! kramer, you're killing him!\" \n\njerry: so i assume the jig was up. \n\nelaine: yeah, pretty much. \n\naudrey: hi. \n\nelaine: hi! \n\njerry: hey. \n\naudrey: (to george) hello. \n\ngeorge: (smitten) audrey? my god, you look incredible! i can't believe it! \n\naudrey: (motioning to kramer) well, it was his doctor. he was wonderful. \n\nelaine: so, will i see you later tonight? \n\naudrey: not sure. \n\nkramer: (rising and putting his arm around audrey's shoulder) well, i'll check you guys out later. (to audrey) ready? \n\naudrey: (holding up her hand to show the stamp) i didn't wash. \n\nkramer: neither did i. we're off to the reggae lounge. \n\nelaine: (after they leave) isn't she beautiful? her nose is in such perfect proportion with the rest of her face. she's breathtaking! who would have though she's like-- \n\ngeorge: (interrupting) elaine. shut up. \n\njerry: how did you get fleas? \n\ngeorge: because my cousin's imbecile dog was rolling around outside and they got in his carpet. \n\njerry: maybe you can get yourself a little bowtie flea collar. \n\ngeorge: that's not funny. so, are you coming to the party? \n\njerry: i'd go, but long island, it's so far out, it smacks of desperation. the whole party, everyone's gonna be saying to me, \"you came all the way out from manhattan for this?\" \n\ngeorge: you know ava's gonna be there. \n\njerry: who? \n\ngeorge: the nice one that works in my office. \n\njerry: nah. \n\ngeorge: i'll drive. \n\njerry: oh, well, now you're talking. \n\ngeorge: it's supposed to be a good party. \n\njerry: what does that mean, good dip? \n\ngeorge: no, there'll be girls there. \n\njerry: there's girls everywhere. i go out of my apartment, there's girls in the elevator. they're in cafeterias, subways, so what? \n\ngeorge: there's a hundred different things here. what's the difference between these two? (they each grab a box and check the ingredients) you got propylparabin? \n\njerry: got it. \n\ngeorge: you got isobutane-30? \n\njerry: i got isobutane-20. \n\ngeorge: a-ha. \n\njerry: you got sorbitant sesquioliate? \n\ngeorge: got it. \n\njerry: i have aloe! \n\ngeorge: you got aloe? i love aloe. \n\njerry: where do they make yours? \n\ngeorge: jersey. \n\njerry: white plains. \n\njerry: girls. there's girls right here in the store. look, look, there's one over there. look, there's another one. soon as i walk outside there'll be girls out there. what's the matter? \n\ngeorge: i gave her a twenty, she only gave me change for a ten. \n\njerry: are you sure? oh boy, here we go. \n\ngeorge: (to the cashier) excuse me, i gave you a twenty dollar bill and you only actually gave me change for a ten. \n\ncashier: you gave me a ten. \n\ngeorge: i'm positive i gave you a twenty. \n\ncashier: i know what you gave me. \n\ngeorge: you owe me ten dollars. \n\ncashier: will you please step aside? next? \n\ngeorge: alright, let's just examine the situation for a second. who, in this situation, would be more likely to make a mistake? me, who had access to my wallet, knew exactly what was in there? or you-- \n\ncashier: you. \n\ngeorge: no, no, no, see you're not really listening. \n\nsecurity guard: what's the problem here? \n\ngeorge: no problem. there's no problem. she just owes me ten dollars, that's all. \n\ncashier: he's claiming short. \n\nsecurity guard: alright, let's just take it outside. \n\ngeorge: oh, so you don't believe me either? \n\nsecurity guard: come on, let's go. \n\ngeorge: you haven't won. you may think you've won, but you haven't won. do you know why? it's not over. this is not over. i'm not forgetting what's happening here. you have my ten dollars. i will get it back. alright, don't worry. it's not over. i'm going now. good bye. i will be back. \n\nelaine: well don't stand here, let's walk in, blend in, blend in. \n\njerry: no, let's survey first. camp here. \n\ngeorge: (waving eva. \n\njerry: what could possess anyone to throw a party? i mean, to have a bunch of strangers treat your house like a hotel room. \n\nava: so, guess who just sold 129 west 81st. \n\ngeorge: oh no you didn't. get out, when? \n\nava: yesterday \n\ngeorge: i don't believe it. \n\nava: ask mark. \n\ngeorge: mark, is this true? \n\njerry: yeah, this has got disaster written all over it. \n\nelaine: how did i ever let you talk me into this, i must have been out of my mind. \n\njerry: now listen, let's keep an eye on each other tonight. in case one of us gets in a bad conversation, we should have a signal that you're in trouble so the other one can get us out of it. \n\nelaine: how old are you? \n\njerry: thirty-six. what's the signal? howbout this? chicken wing? no, no, no, i got a better one. head patting. \n\nelaine: whatever you want. \n\nguy: you came all the way out from manhattan for this? \n\njerry: yeah, yeah i did. \n\nguy: so what do you do? \n\njerry: (patting his head i'm a comedian. \n\nguy: are you? lemme ask you something. where do you get your material? \n\njerry: (still patting) i hear a voice. \n\nguy: what kind of voice? \n\njerry: a man's voice, but he speaks in german so i have to get a translator. \n\nguy: how come you keep tapping your head. \n\njerry: it's a nervous tic. i'm on l-dopa. \n\nguy: on the other hand, you take a guy like george washington carver. the man devoted his whole life to the peanut. imagine having so much passion for something. \n\nguy: ya know, people tell me i'm a funny guy. \n\nguy: i've often wondered if he ever worked with the pecan. \n\nelaine: yeah, me too. \n\nguy: now is that considered a nut, because i know the cashew is a legume. \n\ngeorge: how's it going? \n\njerry: great, how about you? \n\ngeorge: i can't believe what's happening here. she hasn't taken her hands off me all night. she was always friendly around the office, but that was it. \n\njerry: how do you account for this? \n\ngeorge: i don't know, maybe a safe fell on her head. \n\njerry: well, she obviously liked you all along. \n\ngeorge: no, i would have picked up on it. i can always tell when a woman likes me, they always somehow let you know. with me, they could torture me, i wouldn't tell them. if anything i'd try to make them think i don't like them, then they think, \"oh, look at this guy, he's not even looking at me, he must have something going for him.\" \n\njerry: anyway, i'm ready to go. \n\ngeorge: now? \n\njerry: if not now, when? \n\ngeorge: gimme a half-hour. \n\njerry: okay, half-hour. \n\nguy: peanut brittle, peanut butter, peanut oil... \n\njerry: (interrupting) can i talk to you for a second? \n\nelaine: oh, excuse me. (gets up to talk with jerry) what have you been doing, i've been smacking myself senseless. people think i'm a mental patient. \n\njerry: hey, i was dying over there. \n\nelaine: this guy's going off on the peanut. now pay attention. \n\nellen: yeah, i think i've seen you in a club. you talk about a lot of everyday things, right? \n\njerry: right. \n\nellen: yeah, i remember you. \n\nwoman: i wonder what happened to my fianc. i know he's here somewhere. ellen? have you seen my fianc? \n\nellen: he's upstairs. \n\nwoman: are you going upstairs? tell my fianc i'm looking for him. i havelost my fianc, the poor baby. \n\nelaine: maybe the dingo ate your baby. \n\nwoman: what? \n\nelaine: the dingo ate your baby! \n\njerry: you ready? \n\ngeorge: listen, i have a tremendous favor to ask. \n\njerry: i do favors. \n\ngeorge: i think something's happening here. \n\njerry: what? \n\ngeorge: i think she wants me to take her home. \n\njerry: wow. \n\ngeorge: what should i do? \n\njerry: go! what could you do? \n\ngeorge: what about you and elaine? \n\njerry: we'll get a ride. \n\ngeorge: are you sure? \n\njerry: we'll be fine, what did she say? \n\ngeorge: she told me she wants-- (pauses until a woman coming down the stairs passes) she told me she wants me to make love to her. \n\njerry: what? she said that? \n\ngeorge: yeah. \n\njerry: get out of here. \n\ngeorge: i swear. \n\njerry: what did you say? \n\ngeorge: i, i, i can't. \n\njerry: what did you say? \n\ngeorge: please, it's-- \n\njerry: what? \n\ngeorge: i... i... i long for you. \n\njerry: i long for you? \n\ngeorge: i was so shocked i was lucky i said anything. \n\njerry: it's okay, that's not bad. \n\ngeorge: i don't like when a woman says, 'make love to me', it's intimidating. the last time a woman said that to me, i wound up apologizing to her. \n\njerry: really? \n\ngeorge: that's a lot of pressure. make love to me. what am i, in the circus? what if i can't deliver? \n\njerry: oh, come on. \n\ngeorge: i can't perform under pressure. that's why i never play anything for money, i choke. i could choke tonight. and she works in my office, can you imagine? she goes around telling everyone what happened? maybe i should cancel, i have a very bad feeling about this. \n\njerry: george, you're thinking too much. \n\ngeorge: i know, i know, i can't stop it! \n\nelaine: well, right now i'm reading manuscripts for pendant publishing. \n\njerry: (walking up) pendant? those bastards. \n\nelaine: excuse me. \n\njerry: listen, george is going home with this ava from his office \n\nelaine: really? huh. what a world. so we can go now? \n\njerry: uh, no, he's taking the car. \n\nelaine: well, what are we gonna do for a ride? \n\njerry: i don't know. \n\nelaine: you don't know? \n\njerry: maybe kramer can come pick us up. \n\nelaine: oh great, oh, this is great. how could you let him take the car? \n\njerry: there's nothing i could do, it's part of the code. \n\nelaine: (noticing ava in a fur) oh look at that. look at what she's wearing. you see what she's wearing? \n\njerry: yeah, yeah, alright. \n\nelaine: i can't believe she's walking around in that. \n\njerry: just don't make a scene. \n\nelaine: hey, is that real fur? \n\njerry: oh boy. \n\nava: it better be or my ex-husband owes me an explanation. \n\ngeorge: yeah, good night. \n\nelaine: you don't care that innocent defenseless animals are being tortured so that you can look good? \n\ngeorge: could we talk about this some other time? \n\nava: are you a vegetarian? \n\njerry: here we go. \n\nelaine: yeah, i eat fish occasionally. \n\nava: so you're a hypocrite. \n\ngeorge: hey, i've eaten frogs, so nobody's perfect. anyway- \n\nava: well, talk to me when you stop eating fish. \n\nelaine: fish don't feel any pain. \n\nava: how do you know? do you communicate with fish? \n\nelaine: well, they're not kept in little cages. \n\nava: ever seen a goldfish? \n\ngeorge: goldfish. \n\nelaine: yeah, yeah i've seen goldfish. they're not unhappy. \n\nava: oh yeah, right. swim around in a bowl for two weeks and get flushed down the toilet, that's a good life. (to george) let's go. \n\nelaine: oh yeah, that's right. go ahead, go ahead, maybe you can run over a squirrel! \n\ngeorge: that's why we're here in america. \n\njerry: you're beautiful. \n\nelaine: call kramer. \n\njerry: alright. (approaches host) excuse me, this is your party, right? \n\nsteve: no, i just live here. \n\njerry: can i use your phone? \n\nsteve: what's in it for me? \n\njerry: a bigger bill? \n\nsteve: he he, go for it. \n\njerry: krame? sein. what are you doing? well, i'm stuck out here on long island. what are your thoughts about taking a ride? you sure? okay, but don't leave me hanging here. okay, great. let me give you directions. \n\nelaine: you sure you don't need any help? \n\njenny: no, not really. \n\njerry: i'm sure he'll be here any minute. \n\njenny: (to steve) i want them out of here. \n\nelaine: call him again. \n\njerry: i called, what should i do? (to jenny) we really appreciate this. \n\njenny: (to steve) it's two o'clock in the morning. \n\njerry: (noticing a coffee table book) oh, you got the civil war book. i saw some of that show, it was wonderful. \n\nelaine: six hundred and twenty million people died. \n\njerry: thousand. \n\nelaine: thousand. six hundred and twenty thousand. the horror, the horror. (to jerry) the wife keeps giving us dirty looks. are you sure you gave him the right directions? \n\njerry: yes. (to jenny) you're sure there's nothing we can do? \n\njenny: no! (to steve) i am not going to bed with them in our house, this is ridiculous. \n\njerry: you know a friend of my father's used to live right around here. mike wichter. he sold plastic straws. you know the ones? you could bend them. \n\nelaine: have you noticed, people don't use straws as much as they used to for some reason. \n\njenny: you know, it doesn't look as if your friend is coming. \n\njerry: oh, he's coming. \n\njenny: maybe you should take a look at a train schedule. \n\njerry: that's him. \n\njenny: i'm going to bed! \n\nelaine: thanks a lot. \n\njerry: thanks, great party. \n\nkramer: hey, how ya doing? \n\nsteve: ah, look who's here. \n\nkramer: i'm sorry. \n\njerry: hey, it's okay. \n\nkramer: i had the directions on the seat right next to me, they flew out the window. \n\nelaine: then how did you find the place? \n\nkramer: well i knew the exit on the long island expressway, and i thought that the address was 8713 riviera drive. uh uh, so i drove around knocking on everybody's doors that had those numbers; 8317, 7813, 3718, 1837, whoo. finally, i hit it. 8173. \n\njerry: anyway, thanks a lot for letting us stay here, steve, i really owe you one. \n\nsteve: no problem. \n\njerry: and if you're ever in the city, you know, you want to come to a comedy club, whatever. \n\nsteve: hey, i might take you up on that. \n\njerry: (writing) here's my address and number. and really, thanks again. \n\nkramer: (to elaine) you better zip up. i couldn't get the top on the convertible up. \n\nelaine: but it's cold out. \n\nkramer: yeah, wait till we get on the expressway. \n\njerry: george, i've been sick all week. elaine was too. eighty miles an hour, forty degree temperature for fifty minutes. do the math. yeah, maybe i will get out. hey, let me just stop off at the drug store first. okay, meet me down there in fifteen minutes then we'll go do something. yeah, selwyn's. okay bye. \n\njerry: who is it? \n\nvoice: mr. pocatello. \n\njerry: who? \n\nvoice: you mean you don't recognize my voice? \n\nsteve: jerry, baby! \n\njerry: do i know you? \n\nsteve: boy this comedy's really frying your brain. \n\njerry: i'm sorry, uh- \n\nsteve: see, this is the kind of lasting impression i make on people. \n\njerry: oh, okay. \n\nsteve: you said if i was ever in the city, i'm in the city. \n\njerry: you certainly are. what's going on? \n\nsteve: i'm just waiting for a lift back to the island, he won't be ready until eleven, so i figured i'd give you a break. i thought i'd see what it was like to hang out with someone in show business. \n\njerry: listen, i'm really sorry but i'm just on my way out to meet a friend. \n\nsteve: oh, come on, you can come up with something better than that. \n\njerry: no, really, i just got off the phone with him. \n\nsteve: i understand. \n\njerry: look, you can hang out here if you want. \n\nsteve: don't be so enthusiastic. \n\njerry: no, it's- \n\nsteve: i'm not gonna steal anything. \n\njerry: no, of course not, just close the door when you leave. \n\nsteve: i think i can do that. \n\njerry: really, i'm sorry. maybe another time. \n\nsteve: yeah. let's have lunch. \n\njerry: they guy's in my house right now. what a mistake that party was, i never should have gone. \n\ngeorge: yeah, me either. \n\njerry: oh, come on. \n\ngeorge: what come on? have you ever dated a woman that worked in your office? \n\njerry: i've never had a job. \n\ngeorge: you know the anxiety you feel on a date? that's what i have every day now. my worst nightmare's come true, every day is a date. \n\njerry: that's one of dante's nine stages of hell, isn't it? \n\ngeorge: ava was one of the reasons i used to like going to work, she was a friend. now we sleep together and suddenly, i don't know how to talk to her. every time i go to the bathroom i pass her desk. i have to plan little patter. i spend half my day writing. then afterwards, i sit in my office and analyze how it went. if it was a good conversation, i don't go to the bathroom for the rest of the day. i see her laughing and talking with other people, they're all so loose and relaxed, i think, 'that used to be me. i want to go back there again.' \n\njerry: what are you gonna do? \n\ngeorge: i have no choice, i'm quitting. \n\nkramer: the party, long island? \n\nsteve: kramer, right? \n\nkramer: hey, what are you doing here? \n\nsteve: i'm waiting for my ride. \n\nkramer: where's jerry? \n\nsteve: he split. let me ask you something. is there anything to drink in here or is that, like, a stupid question? \n\nkramer: well, jerry, he doesn't have anything. (sensing steve's disappointment) well, but i might have something. \n\njerry: alright, i'm gonna get this. this looks good. \n\ngeorge: how much is that? \n\njerry: nine sixty. \n\ngeorge: nine sixty? give it to me. \n\njerry: why? \n\ngeorge: don't worry, i got it. \n\njerry: what do you mean, you got it? \n\ngeorge: i got it. \n\njerry: since when are you treating me to medicine? what are you doing? you're stealing this, aren't you? \n\ngeorge: i'm not stealing it. they owe me ten dollars. they stole from me. \n\njerry: you're a lunatic. \n\ngeorge: i have to do this, it's a matter of honor. \n\njerry: what do you say to a person like you? \n\ngeorge: just walk. \n\njerry: oh. \n\nsecurity guard: scuse me. what do you got there? \n\ngeorge: what? \n\nsecurity guard: what do you got in your shirt? \n\ngeorge: oh, i was gonna pay for this. \n\nsecurity guard: (grabbing george by the elbow and walking him to the counter) come with me. \n\ngeorge: (nervous) where are you taking me? i was gonna pay for it. \n\ncashier: um-hmm. \n\nsecurity guard: you don't think i remember you? \n\ngeorge: (more nervous) what are you talking about? \n\nsecurity guard: i know who you are, i was watching you. \n\ngeorge: (panicky) what are you gonna do? are you gonna call the police? \n\njerry: can i still buy this or is this evidence now? \n\nkramer: so, i'm chasing these doves down the street and she's screaming at the top of her lungs, and then when the magician comes back from europe, two of them turned brown! well i followed the instructions! \n\nsteve: (hysterical) ah, they turned brown!! brown!! (the laughter winds down) so let me ask you something, you know any women we could call? \n\nkramer: not really. \n\nsteve: maybe we should call one of those escort services. i saw one of them advertised before on the cable station. \n\nkramer: (handing steve the phone) 555-love. \n\nsteve: hey, you want in on this? \n\nkramer: no, i got a girl in the next building \n\nvoice: now i want my money, mister, and i ain't leaving until i get it. now i am through playing games with you, i got things to do. \n\nsteve: (drunk and slurring) oh jerry! jerry! look who's here, it's jerry \n\njerry: what the hell? \n\nsteve: jerry, this is patti. \n\njerry: nice to meet you. \n\npatti: it's a pleasure to make your acquaintance, i'm sure. \n\njerry: what the hell is going on here? \n\nsteve: i don't know, but i gotta do this more often. (the buzzer goes off) ooh, there's my ride, finally. \n\npatti: i'm not gonna go anywhere until i get the rest of my money. \n\nsteve: see ya, jerr. and tell kramer thanks and i'll call him tomorrow. \n\njerry: oh, kramer huh? \n\nsteve: yeah, he's a hoot. oh, goodbye, my dear. (trying to kiss patti's hand as she pulls it away) ouch. (to jerry) weekend of the 26th, come on out, we're having another party. \n\npatti: i ain't leaving. \n\njerry: patti? \n\npatti: you got anything to drink? \n\njerry: alright, how much does he owe you? \n\npatti: fifty dollars. \n\njerry: (taking out his wallet and handing over bills grudgingly) fifty dollars. \n\ncop: this your apartment? \n\njerry: yeah, but-- \n\ncop: you're under arrest for solicitation of prostitution. \n\njerry: wait a second, i-- \n\nelaine: i brought you chicken soup. (to patti) is that real fur? \n\njerry & cop: oh boy. \n\ngeorge: you had sgt. chadway? me too. \n\njerry: he was a nice guy. \n\ngeorge: oh, great guy. \n\njerry: was there a red-headed guy there? \n\ngeorge: the one with the long sideburns? \n\njerry: yeah. \n\ngeorge: where does he come off? \n\njerry: yeah, i know. there's no call for that kind of attitude. \n\ngeorge: one of the guys in my cell threw a piece of gum at him. \n\njerry: oh, we all hated him. \n\njerry: do you believe this? the car was parked right out front. \n\ngeorge: was the alarm on? \n\njerry: i don't know, i guess it was on. i don't know my alarm sound; i'm not tuned in to it like it's my son. \n\ngeorge: i don't understand, how do these thieves start the car? \n\njerry: they cross the wires or something. \n\ngeorge: cross the wires? i can't even make a pot of spaghetti. \n\njerry: they stole my car. \n\nkramer: who did? \n\njerry: they did. \n\nkramer: was it more than just one? \n\njerry: what should i do, should i call the police? \n\nkramer: what are they gonna do? \n\njerry: i'd better call the car phone company, cancel my service. \n\ngeorge: maybe you should call your car phone. \n\njerry: yeah, he's probably driving it right now. \n\ngeorge: wait a minute, call the car phone, see what happens. \n\njerry: are you serious? \n\ngeorge: yeah, go ahead, call. \n\njerry: i don't even know if i remember the number. \n\njerry: what do i say if he picks up? \n\ncar thief: hello? \n\njerry: hello? is this 555-8383? \n\ncar thief: i have no idea. \n\njerry: can i ask you a question? \n\ncar thief: sure. \n\njerry: did you steal my car? \n\ncar thief: yes i did. \n\njerry: you did?! \n\ncar thief: i did. \n\njerry: that's my car! \n\ncar thief: i didn't know it was yours. \n\njerry: what are you gonna do with it? \n\ncar thief: i dunno, drive around. \n\njerry: then can i have it back? \n\ncar thief: mmmm, nah, i'm gonna keep it. \n\nkramer: hello? \n\ncar thief: yeah, who's this? \n\nkramer: kramer. \n\ncar thief: hello, kramer. \n\nkramer: listen, there's a pair of gloves in the glove compartment. \n\ncar thief: wait, hold on... brown ones? \n\nkramer: yeah. listen, could you mail those to me? or bring them by my building, it's 129 west 81st st. \n\ncar thief: one-two-nine, okay. \n\nkramer: thanks a lot, uh here's jerry. \n\njerry: (derisively at kramer) gloves. (into the phone) hello? \n\ncar thief: jerry? \n\njerry: yeah, let me ask you a question. how do you cross those wires? \n\ncar thief: i didn't cross any wires, the keys were in it. \n\njerry: sid left the keys in the car. alright, i gotta go. drive carefully. \n\ncar thief: jerry, when's the last time you had a tune-up? because i can't find the-- \n\njerry: sid left the keys in the car. \n\ngeorge: who's sid? \n\njerry: he's this guy in the neighborhood, parks cars on the block. \n\ngeorge: what do you mean? \n\njerry: he moves them from one side of the street to the other so you don't get a ticket. \n\ngeorge: what, do you pay him for that? \n\njerry: yeah, like fifty bucks a month. \n\ngeorge: how many people does he do that for? \n\njerry: the whole block, forty, fifty cars. \n\nkramer: he only works three hours a day. he makes a fortune. course he's been doing that for years, right jerry? \n\ngeorge: could anybody do that? \n\njerry: hey sid, what happened? \n\nsid: i'm sorry, jerry. maybe i'm getting too old for this stuff. \n\njerry: you left the keys in the car? \n\nsid: well, you know they're making that woody allen movie in the block, and all those people and trucks everywhere, when i saw him i must have got a little distracted. \n\nkramer: you know i'm in that movie? \n\ngeorge: you are? \n\nkramer: yeah, i'm an extra. \n\ngeorge: how'd you get that? \n\nkramer: well, i was just watching them film yesterday and some guy just asked me. \n\ngeorge: right out of the clear blue sky? \n\nkramer: clear blue sky! \n\ngeorge: well, why didn't they ask me? \n\nkramer: i got a quality. \n\nsid: jerry, you got insurance, right? \n\njerry: yeah, but no car. i'll have to rent one. \n\nsid: well i'm going down to visit my sister in virginia next wednesday, for a week, so i can't park it. \n\njerry: this wednesday? \n\nsid: no, next wednesday, week after this wednesday. \n\njerry: but the wednesday two days from now is the next wednesday. \n\nsid: if i meant this wednesday, i would have said this wednesday. it's the week after this wednesday. \n\ngeorge: sid, who's gonna move the cars while you're away? \n\nsid: whoever wants to move them, why do i care who moves them? they can move themselves if they want. \n\ngeorge: maybe i could move them until you get back. \n\nsid: what's a young man like you want to move cars for? you don't work? \n\ngeorge: i'm in a transition phase right now. \n\nsid: well if you want to move the cars, move the cars. just don't forget to take the keys out, that's all. \n\njerry: hello? yeah, the defroster's the one on the bottom, just slide it all the way over. you're welcome. \n\nelaine: i'm in awe of his intellect, when he talks it sounds like he's reading from one of his novels. \n\njerry: owen march, i never heard of him. \n\nelaine: well, he's not a baseball player. \n\njerry: yeah, that's true. well it sounds like it's going pretty good. \n\nelaine: yeah. well, there is one little problem. \n\njerry: what's that? \n\nelaine: he's sixty-six years old. \n\nrental car agent: next please. \n\nelaine: well, go, go. \n\nrental car agent: can i help you? name please? \n\njerry: seinfeld. i made a reservation for a mid-size, and she's a small. i'm kidding around, of course. \n\nrental car agent: okay, let's see here. \n\njerry: sixty-six years old? \n\nelaine: yeah, well, he's in perfect health. he works out, he's vibrant. you'd really like him. \n\njerry: why do people always say that? i hate everyone, why would i like him? \n\nelaine: what do you think, would you go out with a sixty-six year old woman? \n\njerry: well, i'll tell you, she would have to be really vibrant. so vibrant, she'd be spinning. \n\nrental car agent: i'm sorry, we have no mid-size available at the moment. \n\njerry: i don't understand, i made a reservation, do you have my reservation? \n\nrental car agent: yes, we do, unfortunately we ran out of cars. \n\njerry: but the reservation keeps the car here. that's why you have the reservation. \n\nrental car agent: i know why we have reservations. \n\njerry: i don't think you do. if you did, i'd have a car. see, you know how to take the reservation, you just don't know how to *hold* the reservation and that's really the most important part of the reservation, the holding. anybody can just take them. \n\nrental car agent: let me, uh, speak with my supervisor. \n\njerry: uh, here we go. the supervisor. you know what she's saying over there? \n\nelaine: what? \n\njerry: hey marge, you see those two people over there? they think i'm talking to you, so you pretend like you're talking to me, okay now you start talking. \n\nelaine: oh, you mean like this? so it looks like i'm saying something but i'm not really saying anything at all? \n\njerry: now you say something else and they won't yell at me 'cause they thought i was checking with you. \n\nelaine: okay, that's it. i think that's enough, see you later. \n\nrental car agent: i'm sorry, my supervisor says there's nothing we can do. \n\njerry: yeah, it looked as if you were in a real conversation over there. \n\nrental car agent: but we do have a compact if you would like that. \n\njerry: fine. \n\nrental car agent: alright. we have a blue ford escort for you mr. seinfeld. would you like insurance? \n\njerry: yeah, you better give me the insurance, because i am gonna beat the hell out of this car. \n\nrental car agent: please fill this out. \n\nelaine: what do you think, you think i'm making a big mistake? \n\njerry: hey, if you enjoy being with him, that's what's important. \n\nelaine: i love being with him. i mean, i like being with him. it's okay being with him. \n\nelaine: i just don't enjoy being with him. \n\njerry: well that's what's important. \n\nelaine: i'm meeting him for lunch at chadway's around the corner, do i have to break up with him face to face or can i just wait and do it over the phone? \n\njerry: how many times you been out with him? \n\nelaine: seven? \n\njerry: face to face. \n\nelaine: seven dates is a face-to-face break up? \n\njerry: if it was six i could have let you go, but seven, i'm afraid, is over the limit. unless, of course, there was no sex. \n\nelaine: hmm... how's the pasta over there? \n\nkramer: whoa, whoa!! \n\njerry: what is going on out there? \n\ngeorge: i need like a bucket of water! i got a car overheating, i got an alarm that won't go off, i'm pressing 'one', i'm pressing 'two', nothing! what do i do?! help me! help me! \n\nkramer: hey, you know they were supposed to do my scene today? \n\nelaine: today?! \n\nkramer: you know they told me that they wanted me to walk down the block carrying this bag of groceries. \n\nelaine: yeah. \n\nkramer: so i start to walk, and i trip, and the grocery bag goes flying, and woody, woody starts laughing. \n\nelaine: he was laughing?! \n\nkramer: oh yeah, he was drinking something, it started to come out of his nose. \n\njerry: so then what? \n\nkramer: i got a line in the movie! \n\nelaine: get out! \n\njerry: that's great! \n\ngeorge: you got a line in the woody allen movie? \n\nkramer: pretty good, huh? \n\ngeorge: you're in the movie? is he in the scene? \n\nkramer: oh yeah, yeah, it's me and him. i might have a whole new career on my hands, huh? \n\njerry: you mean *a* career. \n\nelaine: so was mia farrow there? \n\nkramer: uh, i didn't see him. \n\nelaine: what's your line? \n\nkramer: oh, well uh, okay i'm there with, uh, woody, you know, i'm at this bar and, uh, i'm sit-- you know it's woody allen, did i mention that? \n\nkramer: so i'm sitting there with woody and i say, i turn to him and i go, \"boy, these pretzels are making me thirsty.\" \n\ngeorge: is that how you're gonna say it? \n\nkramer: no, no, i'm working on it. \n\nelaine: do it like this. \"these pretzels are making me thirsty.\" \n\njerry: no. \"these pretzels are making me thirsty.\" \n\nkramer: no, no. see, that's no good. see, you don't know how to act. \n\ngeorge: \"these pretzels are making me thirsty!!\" \n\ngeorge: that was no good? \n\nkramer: i didn't say anything. \n\nelaine: i'm gonna go break up with owen. \n\ngeorge: what was wrong with that? i had a different interpretation! do you know anything about this pretzel guy?! maybe he's been in the bar a really long time and he's really depressed because he has no job and no woman and he's parking cars for a living! (out the window to honking cars) alright! alright! shut up! shut up! i hear you! i'm coming down! these pretzels are making me thirsty! \n\njerry: oh my god. \n\nelaine: call an ambulance. \n\njerry: boy, he took it hard. \n\nelaine: we were walking down the block right by your house and i was just about to break up with him then all of a sudden he started to twitch. \n\njerry: (on the phone) hello? yes, i need an ambulance at one twenty nine west eighty-first street, apartment five-a. \n\nelaine: tell then to hurry! hurry! \n\njerry: (to elaine) it's an ambulance. (to the operator) i don't know but he's unconscious. \n\nkramer: these pretzels are making me thirsty. (he bites into a pretzel.) boy, these pretzels are making me thirsty. \n\njerry: kramer. \n\nkramer: what happened here? \n\nelaine: i don't know, i don't know, what should we do? we called an ambulance, does anyone know first aid? \n\njerry: shouldn't you do something with the extremities? \n\nelaine: what extremities? \n\nkramer: what's an extremity? \n\njerry: you raise the feet, get blood to the head. \n\nkramer: you raise the head, you get blood to the feet. \n\nelaine: okay, what about a cold compress? they always do that. \n\njerry: i don't have a washcloth. \n\nelaine: well use a paper towel. \n\njerry: you can't put a paper towel on his head. \n\nkramer: what about a big sponge? \n\njerry: how you gonna hold it on there? \n\nkramer: use a belt. \n\nelaine: no no no no no, that'll, it'll drip all over him. \n\njerry: should we walk him around? \n\nelaine and kramer: (at the same time) yes, yes. \n\nkramer: yeah, i've seen them do that. \n\njerry: no, no that's for a drug overdose. \n\nkramer: maybe that's what he's got. \n\nelaine: no no no no, kramer, i just had lunch with him, he didn't leave the table. \n\nkramer: well he could have dropped acid when you weren't looking. \n\nelaine: he is not a drug addict! \n\njerry: hey, you know what? maybe he's a diabetic, he might just need a cookie or something. \n\nelaine: a cookie! \n\nkramer: can you give him a cookie? \n\nelaine: how's he gonna chew it? \n\njerry: we'll move his teeth, it happened to my uncle, the sugar revived him. \n\nelaine: careful, you're getting crumbs all over him. \n\nkramer: i got him chewing but i don't think he's gonna swallow. \n\nelaine: you know what, let's put a few cookies in a blender and he could drink it. \n\njerry: cookies don't liquefy. \n\nelaine: yes they do, you can liquefy a cookie. \n\nkramer: alright i'll get a blender. \n\njerry: what blender? i don't have a blender. \n\nkramer: you got a blender. \n\njerry: i would know if i had a blender. \n\nelaine: where is the ambulance?! \n\njerry: (on phone) hello, yes, i called for an ambulance like thirty-five minutes ago. \n\nelaine: i can't believe what's going on out here. \n\njerry: this is an emergency, what's taking so long? (the door buzzer buzzes) wait a second, maybe that's them. (presses button) hello? \n\nvoice: paramedics. \n\njerry: come on up. okay, they're here. \n\nelaine: he seems to be breathing. \n\njerry: ya know, i gotta tell you, he's a pretty good-looking guy. \n\nelaine: i know. \n\njerry: those eyebrows could use a trimming, you ever mention that to him? \n\nelaine: almost. \n\njerry: hey, look at this, c'mon, running wild there. \n\nelaine: it's not an easy thing to bring up. \n\njerry: yeah, that's true. \n\nelaine: aw, you should see his bathrobe, man, it's all silk. \n\njerry: yeah? does he wear slippers? i bet he wears slippers. \n\nelaine: he does, how'd you know that? \n\njerry: i could tell. \n\nelaine: what happened, what took you so long?! \n\nparamedic: we got here twenty minutes ago but we couldn't move, the whole intersection is gridlocked, i've never seen anything like it. so finally we make the turn and this guy who's running around triple-parking cars slammed into us with a blue escort. \n\njerry: blue escort? that's my rent-a-car! \n\ngeorge: oh man. \n\njerry: what happened to the car? \n\ngeorge: sorry, you don't know what's going on out there! (looks at owen) who's he? \n\nelaine: this guy i'm seeing. \n\ngeorge: what happened? \n\njerry: we don't know! \n\nparamedic: who put cookies in his mouth? \n\njerry and elaine: cookies? \n\nparamedic: you're not supposed to do that. \n\njerry: so how'd you hit the car? \n\ngeorge: i was moving it across the street, i looked up and i saw woody allen and i got all distracted. \n\njerry: it's not even my car, it's a rental. \n\nkramer: what are you doing out there?! you're holding up the production of the movie! we can't shoot and woody, he's really mad at you. \n\ngeorge: woody mentioned me? what did he say? \n\nkramer: he said, 'who's the moron in the blue jacket who's got the street all screwed up?' \n\ngeorge: should i apologize to woody? \n\nkramer: alright, i'll tell you what. next time i talk to him, maybe i'll bring it up. i'll feel him out. \n\nsid: now you didn't tell me you didn't know how to drive. you should have mentioned that. \n\ngeorge: well i know how to drive. \n\nsid: then how'd all those cars get damaged? why are people calling me up screaming on the phone? most of them cancelled out on me. \n\njerry: can i get anybody anything? \n\nsid: moving cars from one side of the street to the other don't take no more sense than putting on a pair of pants. my question to you is who's putting your pants on? \n\ngeorge: i put my pants on, sid. \n\nsid: i don't believe you. if you can put your pants on, you can move those cars. \n\ngeorge: well i don't want to get into a big dispute about the pants. \n\nsid: who's gonna send money to my sister in virginia? her little boy needs surgery on his foot. now he'll be walking around with a limp because you can't park a few cars. \n\ngeorge: maybe i could call my father. \n\nkramer: hey, you seen the paper yet? \n\njerry: interestingly enough, no, inasmuch as it is my paper. \n\nkramer: yeah. there's an article in there about that writer. \n\njerry: (reading) owen march, prominent author and essayist suffered a stroke yesterday in the upper west side apartment of a friend. \n\nkramer: uh huh, that's the guy that was here. you're the friend. \n\njerry: (continuing) the extent of the damage would have been far less severe had paramedics been able to reach him sooner. \n\nsid: oh lord. \n\njerry: (finishing) the commotion also delayed production of a woody allen movie that was shooting up the block. a spokeswoman for the legendary filmmaker said that mr. allen was extremely agitated and wondered if his days of shooting movies in new york were over. \n\nelaine: five seconds. jerry, i was five seconds away from breaking up with him. five seconds. the next words out of my mouth were, 'owen, it's over.' \n\njerry: can he communicate? \n\nelaine: yeah, well, he nods. and i think he understands me, he seems to enjoy it when i read to him. \n\njerry: alright, she's free. (steps up to the counter) hi, i called before, uh, my car got smashed. \n\nelaine: so listen, what should i do? i mean if i break up with him now it'll look like i'm abandoning him because of his condition, i'll be ostracized from the community. \n\njerry: what community? there's a community? \n\nelaine: of course there's a community. \n\njerry: all these years i'm living in a community, i had no idea. \n\nrental car agent: sir the estimate on the damage to your car is two thousand eight hundred and sixty-six dollars. \n\njerry: hmm, well, i got the insurance and everything so... \n\nrental car agent: yes, now, uh, in your report you said that you were not the driver of the car at the time of the accident. \n\njerry: that is right, somebody else was driving. \n\nrental car agent: alright, well, sir, you're only covered for when you're driving the car. \n\njerry: uh huh, what's that? \n\nrental car agent: you're not covered for other drivers. \n\njerry: other drivers? \n\nrental car agent: um hm. \n\njerry: your whole business is based on other drivers. it's a rented car. that's who's driving it, other drivers. doesn't my credit card cover me or something? \n\nrental car agent: not that particular one. \n\njerry: well i got a hundred cards, here, pick a card, take a card, any card you want, go ahead, whichever one, i don't care. \n\nrental car agent: sir, if you had read the rental agreement-- \n\njerry: did you see the size of that document? it's like the declaration of independence, who's gonna read that? \n\nrental car agent: mr. seinfeld, as it stands right now, you are not covered for that damage and there is absolutely nothing that can be done about that. \n\njerry: these pretzels are making me thirsty. \n\nelaine: ahh, it's good, isn't it? yankee bean. why yankee bean, huh? don't they have beans in the south? i mean if you order yankee bean in the south, are they offended? huh? (singing) yankee bean, yankee bean, i like my yankee bean. (she puts the bowl down and wipes owen's mouth with a napkin) owen, i think we have to talk. i mean, uh, *i* have to talk. it would be nice if *we* could, but, uh, whatever. um, don't get me wrong, i like coming here, and uh, feeding you and cleaning a little, and paying your bills, that's good stuff. good stuff! i have a wonderful time when i'm with you, wonderful! but at this point in my life, i'm not really sure that i'm ready to make a commitment to one person. i'm just not really sure that we have enough in common. for example, i like running in the park, bicycling, roller skating, tennis and skiing, and um, well, i'm gonna be brutally honest with you now, owen, it's a bitch to get here. it's two subways. i have to transfer at forty-second street to take the double-r. anyway, i mean, this doesn't mean we can't be friends. these pretzels are making me thirsty. \n\nelaine: can you die from an odor? i mean, like if you were locked in a vomitorium for two weeks, could you actually die from the odor? \n\njerry: an overdose of odor? good question. \n\ngeorge: do i smell? \n\nelaine: no no no no, i was just down on the forty-second street subway today, it is disgusting. guess who i bumped into. owen. \n\njerry: ahh. \n\ngeorge: he's alright? \n\nelaine: yeah, he's almost fully recovered. he told me he was just using me for sex. \n\njerry: let me get that. \n\ngeorge: no no no, i got it. \n\njerry: please. \n\ngeorge: no come on, let me, let me. i smashed your car, it cost you over two thousand dollars, \n\njerry: (sarcastically) yeah, a cup of coffee should cover it. \n\njerry: what are you doing here? \n\nkramer: i got fired from the movie. \n\ngeorge: get out of here, why? \n\nkramer: well, you know they were gonna shoot it today, and uh, we rehearsed it twice, then woody yells 'action!' and i turn to him and i say, 'these pretzels are making me thirsty' and i took a swig of beer, ya know, and i slammed the glass down on the bar and it shattered. \n\nelaine: aww. \n\nkramer: well, one of the pieces must have hit woody. he started crying. and he yells out, 'i'm bleeding' and he runs off. anyway, this woman, she came up to me and she says, 'you're fired.' boy i really nailed that scene. \n\njerry: aw, wait a--. oh. oh, for crying out loud. \n\njerry: i'm sorry it's gotta be a little bit of a scary place to work. i don't know how you feel about it. you want to be standing there having people comming in all day going \"i need knives. i need more knives. do you have any bigger knives? i'd like a bigger knife, a big, long, sharp knife, that's what i'm in the market for. i like them really sharp. do you have one with hooks and gouges like blades and kind of serrated? that's the kind of knife i'm looking for. i need one i can throw. i need another one i can just hack away with. do you have anything like that? \n\njerry: oh yeah, like you know what you're talking about. \n\ngeorge: like you do. \n\njerry: well what do you think? they put the statue on a giant raft and a tugboat pulled it all the way from france? \n\ngeorge: what do you think? the brought it over in pieces and screwed it together like a coffee table? \n\njerry: i don't know. it's too early for a christmas party isn't it? \n\ngeorge: why did france give that to us anyway? \n\njerry: it was a gift. \n\ngeorge: so countries just exchange gifts like that? \n\njerry: if they like each other. \n\ngeorge: there's elaine. \n\njerry: see that guy he's talking with? that's her new boyfriend. \n\ngeorge: really? they work here in the office? \n\njerry: yeah. they're having a little fling so don't say anything. \n\ngeorge: who am i going to tell? my mother? like i've got nothing better to talk about. \n\njerry: you don't. he's a recovering alcoholic. \n\ngeorge: really? \n\njerry: yeah. he's been off the wagon for two years. \n\ngeorge: \"off the wagon\"? \n\njerry: i think it's off the wagon. \n\ngeorge: i think it's \"on the wagon\". \n\nelaine: jerry, george, what are you doing here? \n\njerry: what am i doing here? ba-boom (holding out a present) \n\nelaine: *gasp* my god! my watch! you found my watch! (pushing jerry) \n\njerry: hey keep your hands to yourself if you know what's good for you. \n\nelaine: where did you find it? \n\njerry: under the sofa cushion. \n\nelaine: and you stopped by just to give it to me? \n\njerry: it's your christmas present. \n\nelaine: i though i'd never find it. \n\ngeorge: well today's your lucky day. \n\nelaine: no. today's *your* lucky day. \n\ngeorge: it will be my first one. \n\nelaine: you want to work here? \n\ngeorge: huh? \n\nelaine: yeah one of the readers left and there's a job opening. dick, this is jerry and this is george. \n\ndick: hi nice to meet you. is this the guy? \n\njerry: \"the guy?\" \n\nelaine: (softly to dick) dick. \n\ngeorge: how can you just get it? \n\nelaine: my boss told me to find someone. i'm in charge of it. all you have to do is meet him. come on. come on, come on, here hold my drink. \n\njerry: cranberry juice? \n\nelaine: and vodka. \n\ndick: i got the cranberry juice. \n\ndick: so... you're jerry. \n\njerry: so... i'm jerry. (he puts down the drink) \n\nmr. lippman: (what is his name?) so have you ever done this kind of work before? \n\ngeorge: well, you know, book reports. that kind of stuff. \n\nmr. lippman: how do you read? \n\ngeorge: i like mike lubika. \n\nmr. lippman: mike lubika? \n\ngeorge: he's a sports writer for the daily news. i find him very insightful... \n\nmr. lippman: no, no, no. i mean authors. \n\ngeorge: lot of good ones. i don't even want to mention anyone because i'm afraid i'm going to leave somebody out. \n\nmr. lippman: name a couple. \n\ngeorge: who do i like? i, like, uh, art, vandelay. \n\nmr. lippman: art vandelay? \n\ngeorge: he's an obscure writer. betnik, on the village. \n\nmr. lippman: what has he written? \n\ngeorge: venetian blinds. \n\ndick: (picking up the drink) i've got new for you. i'm funnier than you are. \n\njerry: why don't get we together new years day and watch some football. \n\nelaine: where's my drink? \n\njerry: there. (turns to george) so, how did it go? \n\ngeorge: i think he was impressed. \n\nelaine: no, no, no, this is just cranberry juice. \n\njerry: oh, uh, i think maybe dick picked up yours. \n\nelaine: dick? he can't drink. he's an alcoholic. i told you to hold it. \n\njerry: i didn't know you meant *hold* it, i thought you meant hold it. \n\nelaine: one drink like that and he could fall right off the wagon. \n\ngeorge: told you. \n\njerry: i never feel comfortable in the women's department. i feel like i'm just a *little* too close to trying on a dress. \n\ngeorge: do i really have to buy her something? \n\njerry: hey the woman got you a job. the least you could do is buy her a gift. how about this? \n\ngeorge: what is that? is that cashmere? \n\njerry: yeah. she would love cashmere. \n\ngeorge: who doesn't like cashmere? find me one person in the world that doesn't like cashmere. it's too expensive. \n\njerry: look at this. it's 85 dollars marked down from 600. \n\ngeorge: wow. excuse me, miss? \n\nsales woman: yes? \n\ngeorge: how come this sweater is only 85 dollars? \n\nsales woman: (showing the dot) oh, here. this is why. \n\ngeorge: what? i don't see anything. \n\nsales woman: see this red dot? \n\ngeorge: oh yeah. \n\njerry: oh it's damaged. (grabbing the sweater) \n\ngeorge: (grabbing the sweater back) well it's not really damaged. 85 dollars huh? \n\nsales woman: there's no exchanges on this. \n\ngeorge: you think she would care about the red dot? \n\njerry: it's hard to say. \n\ngeorge: i don't even think she'd notice it. can you see it? \n\njerry: well i can see it. \n\ngeorge: yeah, but you know where it is. \n\njerry: well what do you want me to do? not look at it? \n\ngeorge: pretend you didn't know it was there. can you see it? \n\njerry: it's hard to pretend because i know where it is. \n\ngeorge: well just take an overview. can't you just take an overview? \n\njerry: you want me to take an overview? \n\ngeorge: please. \n\njerry: i see a very cheap man holding a sweater trying to get away with something. that's my overview. \n\njerry: yeah so? \n\nelaine: he's acting very strangely. i think he started drinking again. \n\njerry: oh boy, can you smell it? \n\nelaine: no. i can't smell it. \n\njerry: well if you can't smell it then he hasn't been drinking. \n\nelaine: you don't always smell someone from a drink. \n\njerry: yes you do. \n\nelaine: what about one drink? would you smell it from one drink? \n\njerry: yes you would. \n\njerry: i'll prove it. would you do me a favor? \n\nkramer: okay. \n\njerry: would you take a drink and let us smell you? \n\nkramer: you can smell me without the drink. \n\nelaine: i suspect that this guy i'm seeing might be drinking but i can't smell it. \n\nkramer: okay, well what am i drinking? what do you got? \n\njerry: i got a bottle of scotch my uncle gave me. it's hennigans. it's been here for two years. i've been using it as a paint thinner. \n\nkramer: all right. \n\njerry: i don't smell anything. \n\nelaine: maybe we're too close to the bottle. \n\njerry: yeah. \n\ngeorge: (over the speaker) it's george. \n\njerry: come on up. \n\nkramer: that is *damn* good scotch. i could do a commercial for this stuff. mmmmm, boy that hennigans goes down smooth. and afterwords you don't even smell. that's right folks. i just had three shots of hennigans and i don't smell. imagine, you can walk around drunk all day. that's hennigans, the no-smell, no-tell scotch. \n\ngeorge: hello everybody. \n\nkramer: hey. (snuggling really close to george) i'm going to tell you what i think. i know you don't care what i think, but i'm going to tell you. i think that you are terrific. \n\ngeorge: (uncomfortablly) thank you. \n\nelaine: hey what's that? \n\ngeorge: it's an early christmas present. \n\nelaine: christmas present? for who? \n\ngeorge: for you. \n\nelaine: *gasp* (pushing george) get out of here. \n\nkramer: say you got a big job interview, and you're a little nervous. well throw back a couple shots of hennigans and you'll be as loose as a goose and ready to roll in no time. and because it's odorless, why, it will be our little secret. (singing) h-e-double n... \n\njerry: kramer. yeah that'll do. \n\nelaine: (opening the present) oh george, this is beautiful. is this cashmere? \n\ngeorge: of course it's cashmere. \n\nelaine: oh, i love cashmere. \n\ngeorge: well who doesn't. \n\nelaine: my, george this must have cost a fortune. \n\ngeorge: ahh, money. \n\nelaine: jerry, how could you let him spend so much money? \n\njerry: i tried to stop him. i couldn't. he just wants to make people happy. \n\nelaine: george, this is one of the nicest things anyone has ever given me. \n\ngeorge: well good, good. take it off you're going to wear it out already. it's for special occasions this thing. \n\nkramer: what's that red dot on your sweater? \n\nelaine: what? \n\ngeorge: just take it off. i'm getting hot just looking at it. \n\nelaine: uhh. this. it's like a red dot. \n\ngeorge: what red dot? what are you talking about? jerry come here for a second. do you see anything here? \n\njerry: (uncomfortable) uh, i don't know. uh, i don't know. \n\nelaine: what don't you know? \n\njerry: i don't know. \n\nelaine: well do you see it or don't you? \n\njerry: ahem. say that again? \n\nelaine: do you see it or don't you? \n\njerry: do i see it... or don't i? that's the question. \n\njerry: now what did you ask me again. \n\nelaine: you're still here. you're a dynamo. \n\ngeorge: i can't believe i get paid for this. \n\nelaine: i'll see you tomorrow. \n\ngeorge: how you doing? \n\ncleaning woman: hello. \n\njerry: you had sex with the cleaning woman on your desk? who are you, how did you do that? \n\ngeorge: hennigans. i was there sitting in the office and the cleaning woman comes in. i've always been attracted to cleaning women. cleaning women, chambermaids. \n\njerry: yeah chambermaids, i'm attracted to them too. \n\ngeorge: why is that? \n\njerry: it's a woman in your room. so go ahead. \n\ngeorge: so she starts vaccuming, back and forth, back and forth, her hips swivelling, her breasts, uh... (trying to think of a word) \n\njerry: convulsing? \n\ngeorge: convulsing? \n\njerry: i don't know, i'm trying to help you. \n\ngeorge: then i asked her if she wanted a drink. \n\njerry: you don't drink. \n\ngeorge: i know but i couldn't think of anything else to say to her. \n\njerry: so you started drinking. \n\ngeorge: so we started drinking, and i'll tell you i don't know if it was the alcohol or the ammonia, but the next think i knew she was mopping the floor with me. \n\njerry: so how was it? \n\ngeorge: well the sex was okay, but i threw up from the hennigans. \n\njerry: good thing the cleaning lady was there. \n\nelaine: dick was fired. \n\njerry: you mean to tell me if i had put that drink six inches over to the right, and none of this would have happened. \n\nelaine: you knew he was an alcoholic. why'd you put the drink down at all? \n\njerry: what are you saying? \n\nelaine: i'm not saying anything. \n\njerry: you're saying something. \n\nelaine: what could i be saying? \n\njerry: well you're not saying nothing you must be saying something. \n\nelaine: if i was saying something i would have said it. \n\njerry: well why don't you say it? \n\nelaine: i said it. \n\njerry: what did you say? \n\nelaine: nothing. it's exhausting being with you. \n\njerry: yeah? \n\ngeorge: (over the speaker) it's george. \n\njerry: come on up. \n\nelaine: hey, let me ask you something something. did george buy that sweater knowing the red dot was on it because it was cheaper? (jerry is unconfortable) ooookay, you just gave me the answer. \n\njerry: no i didn't. \n\nelaine: yes you did, yes you did. i saw your expression. \n\njerry: i didn't have an expression. i have a deviated septum. i have to open my mouth sometimes to breathe. \n\nelaine: how much did he save? \n\njerry: frankly i am shocked that you would ask such a question (elaine sticking out her tongue like she isn't buying a word of it) of me, that you would think - the only surprise is how you could even think of that. that's what you were seeing. \n\ngeorge: i have to talk to elaine. this cleaing lady is turning the screws on me. she's pushing for this whole relationship thing. she keeps calling me, threatening to go to the boss with this thing, i could lose my job, i gotta do something to keep her quiet. \n\njerry: elaine is in the bathroom. she's wise to whole red dot thing. she's asking me all kinds of questions. \n\ngeorge: did you tell her anything? \n\njerry: no. \n\ngeorge: do you swear? \n\njerry: i'm not swearing. i don't want to swear. \n\ngeorge: oh you told her didn't you. \n\njerry: no. \n\nelaine: hey george, did you buy that sweater knowing that red dot was on it because you could get it at a discount? \n\ngeorge: what? did i what? \n\nelaine: you did didn't you. \n\ngeorge: elaine, i'm, i'm shocked. i'm shocked. here i go out in the spirit of the season (elaine looking like she's not buying a word of it) and spend all my savings to buy you the most beautiful christmas sweater i have ever seen to show my appreciation to you at christmas and this is the thanks that i get at christmas. \n\nelaine: well jerry told me that you did. \n\ngeorge: you told her? how could you tell her? i told you not to say anything. \n\njerry: i didn't tell her you stupid idiot. she tricked you. \n\ngeorge: elaine you don't understand. i had 103 temperature when i bought that sweater. i was so dizzy i was seeing red dots everywhere. i thought everything in the store had a red dot on it. i couldn't distinguish one red dot from another. i couldn't afford anything. i have nothing. i haven't worked for a really long time. (jerry is standing right behind george. jerry takes out a hankerchief and starts fake-crying in it.) i mean look, i have no clothes, look at what i'm wearing. it's just a little red dot. \n\ngeorge: this is for you. \n\ncleaning woman: oh, georgie, you bought this for me? oh i knew you cared for me. \n\ngeorge: as you care for me. which is why it is very important that you never breathe a word of this to anyone about the... you know. what, with clarence thomas and everything. \n\ncleaning woman: okay, okay, can i open it now? \n\ngeorge: yes of course go ahead. my guess is you're going to like this very much. \n\ncleaning woman: oh! is that cashmere? \n\ngeorge: of course it's cashemere. \n\ncleaning woman: a cashmere sweater. oh georgie porgie! \n\ngeorge: just a little something for christmas. \n\ncleaning woman: when i was a little girl in panama, a rich american came to our town and he was wearing the softest most beautiful sweater. i said to him, \"what do you call this most beautiful fabric?\", and he said \"they call it cashmere\". i repeated the words \"cashmere, cashmere\". i asked if i could have it, and he said \"no. get away from me.\" then he started walk away. but i grabbed onto his leg screaming for him to give me the sweater and he dragged me through the street. and then he kicked at me with the other foot and threw some change at me. oh, but i didn't want the change georgie. i wanted the cashmere. \n\ngeorge: i had a feeling you would like it. no, don't try it on now, try it on later. \n\ncleaning woman: wow, look at this. it feels so beautiful. \n\ngeorge: take it off. you're going to ruin it. \n\ncleaning woman: (noticing the dot) what's this? \n\njerry: i was in the men's room the other day and they had the hand blower, instead of the paper towels, you know this thing. i like the hand blower i have to say. it takes a little bit longer, but i feel when you're in a room with a revolting stench you want to spend as much time as you can. \n\ndick: the only stench is comming from you. \n\naudience: oooooh. \n\njerry: oh, wait a second, i believe we have a heckler ladies and gentlemen. hey dick i don't know what your problem is. it's not my fault you're back on the wagon. \n\ndick: it's off the wagon. \n\njerry: in the old days how do you think they got the alcohol from town to town? \n\ndick: i don't know. \n\njerry: on the wagon. don't you think they broke into a couple of those bottles along the way? \n\ndick: you can't drink on a wagon it would be too bumpy. \n\njerry: they had smooth trails. what about the cumberland gap? \n\ndick: what the hell do you know about wagons? \n\njerry: i know enough not to get on them. \n\nmr. lippman: i'm going to get right to the point. it has come to my attention that you and the cleaning woman have engaged in sexual intercourse on the desk in your office. is that correct? \n\ngeorge: who said that? \n\nmr. lippman: she did. \n\ngeorge: was that wrong? should i have not done that? i tell you i gotta plead ignorance on this thing because if anyone had said anything to me at all when i first started here that that sort of thing was frouned upon, you know, cause i've worked in a lot of offices and i tell you peope do that all the time. \n\nmr. lippman: you're fired. \n\ngeorge: well you didn't have to say it like that. \n\nmr. lippman: i want you out of here by the end of the day. \n\ngeorge: what about the whole christmas spirit thing? any flexability there? \n\nmr. lippman: nah. wait, wait, she wanted me to give you this. \n\nelaine: you had sex on your desk with the cleaning woman. \n\ngeorge: you never had sex in the office before? \n\nelaine: no. i once made out with someone but that was it. \n\ngeorge: alright so you made out with someone. \n\nelaine: well that's not sex. \n\ngeorge: kissing is sex. \n\nelaine: kissing is not sex. \n\njerry: george? \n\ngeorge: jerry. \n\nelaine: hey, did jerry leave that drink next to dick's on purpose? \n\ngeorge: no. \n\njerry: george? \n\ngeorge: over here. \n\nelaine: what are you doing here? \n\njerry: i'm taking the kid out to dinner to chear him up. \n\nelaine: hey jerry when do you consider that sex has taken place? \n\njerry: i would say when the nipple makes its first appearance. \n\nelaine: so, george told me that you left the drink next to dick's on purpose. \n\njerry: nice try. so guess who heckled me at the club last night. \n\ndick: merry christmas. \n\nelaine: oh my god that's dick. it's cape fear. \n\ngeorge: hide, hide under the desk. \n\nelaine: ow, ow move over. \n\njerry: get off of me. \n\nelaine: i've got no room. \n\ndick: is that cashmere? \n\ngeorge: of course it's cashmere. \n\ndick: (noticing the dot) what's this? \n\njerry: but in a way, i think i inadvertantly turned this guy into an alcoholic. i hate being around alcoholics because they're either telling you how much they love you or how much they hate you. and those are the two statements that scare me the most. but i think he's okay now because i have no idea how he feels about me. he's finally off the wagon. \n\ndick: you mean on the wagon. \n\njerry: don't get smart. \n\nkramer: all right, coney island. ok, you can take the b or the f and switch for the n at broadway lafayette, or you can go over the bridge to dekalb and catch the q to atlantic avenue, then switch to the irt 2, 3, 4 or 5, but don't get on the g. see that's very tempting, but you wind up on smith and 9th street, then you got to get on the r. \n\nelaine: couldn't he just take the d straight to coney island? \n\nkramer: well, yeah... \n\nelaine: ok, what time is your job interview george? \n\ngeorge: 945 \n\njerry: remember, don't whistle on the elevator. \n\ngeorge: why not? \n\njerry: that's what willie loman told biff before his interview, in 'death of a salesman'. \n\ngeorge: what, you are comparing me to biff loman, very encouraging. the biggest loser in history of american literature. \n\nelaine: all right, i'm gonna go. \n\njerry: what time is the lesbian wedding? \n\nelaine: 930 \n\ngeorge: lesbian wedding. how do they work bride and groom out, what do they flip a coin? \n\nelaine: yeah, they flip a coin. \n\ngeorge: what, was that not politically correct? it's a legitimate question. \n\njerry: i'm so tired. i'll fall asleep on that train (yawns) \n\ngeorge: i get the feeling when lesbians are looking at me, they're thinking \"that's why i'm not heterosexual\". \n\nkramer: jerry, come on let's go, pick up the check so we can go. \n\njerry: oh, i'm paying for breakfast? \n\nkramer: yeah. \n\nelaine: yeah. \n\ngeorge: yeah. \n\njerry: why do i always pay? what am i made of money? you bunch of deadbeats. \n\ngeorge: how many tickets are you paying today? \n\nkramer: well, let's see speeding, running a red light, no license, no registration, no plates, no brake lights, no rear view mirror...yeah. (gives george a ticket) \n\ngeorge: no doors? \n\nkramer: i'm fighting that one. you know, this is gonna cost me over six hundred bucks. \n\ngeorge: i can't carry any changes in these pants, it falls out. \n\nviolin player: thank you. \n\ngeorge: that guy is not blind. \n\njerry: so, can i convince anybody to come down to coney island with me? i got to pick up my car at the pound. george? \n\ngeorge: i can't believe they actually found your stolen car. \n\njerry: not only that they found it. it was simonized and the front end was aligned. \n\ngeorge: that's amazing. \n\njerry: so what do you say? run in the cyclone. hotdogs on nathan's is on me. \n\ngeorge: what are you? satan? i'm close to a job here. it's my second interview with them. \n\njerry: all right, biff. elaine, merry-go-round? \n\nelaine: i can't. i'm the best man. \n\njerry: kramer, bumper-cars? \n\nkramer: i've gotta go to court, i'll get in trouble. what's the matter with you? \n\njerry: could be years before i get back to coney island. i can't go to rides alone. \n\nsubway announcement: 42th street. change to d,n,rr,2,3,4,5,7,c,e,f train. \n\nelaine: see'ya. \n\nwoman: you looking for a job? \n\ngeorge: me, why? \n\nwoman: well, you're reading the classifieds. \n\ngeorge: oh, no no no. i was just looking for stock-pages. here it is. looking for the quotes. gotta check to quotes. love a good quote. oh, ibm up a quarter. \n\nwoman: you didn't look like someone who needed a job. \n\ngeorge: me? no, no, i don't, i don't. doing very well, very well, yep. \n\nwoman: so, you're in 'the market'? \n\ngeorge: yeah i'm, eh, in 'the market'. \n\nwoman: which market? \n\ngeorge: which market, the, eh, big one, the big market, the big board. bull market, bear market, you name the market, i'm there. \n\nwoman: so, do you work for one of those big broker-houses? \n\ngeorge: they wish. i hate the big broker-houses. hate them with a passion. big broker-houses killed my father. \n\nwoman: really? \n\ngeorge: well, they hurt him bad. really hurt his feelings. it's a long story. i- i don't like to talk about it, but i swore then that i would never work for big broker-houses. see, all they care about is money. i'm about more than money, i'm about people, always gone my own way and i've never looked back. \n\nwoman: i started riding these trains in the forties. those days a man would give up their seat for a woman. now we're liberated and we have to stand. \n\nelaine: it's ironic. \n\nwomen: what's ironic? \n\nelaine: this, that we've come all this way, we have made all this progress, but you know we've lost the little things, the niceties. \n\nwoman: no, i mean what does 'ironic' mean? \n\nelaine: oh... \n\nwoman: where are you up to, with such a nice present, birthday party? \n\nelaine: a wedding. \n\nwomen: a wedding? \n\nelaine: yeah \n\nwoman: hah, i didn't know people still get married. it's hard today with men and women. \n\nelaine: you're telling me. \n\nwoman: so, are they a nice couple? \n\nelaine: oh, very nice. \n\nwoman: what does he do, if you don't mind me asking? \n\nelaine: she. \n\nwomen: she? she works, he doesn't. he sounds like my son. \n\nelaine: there is no he. \n\nwomen: there is no he. so, who's getting married? \n\nelaine: em, two women. it's, eh...lesbian wedding. \n\nwomen: lesbian wedding. \n\nelaine: aha, yep. i'm the...eh...bes tman. \n\nwomen (talks to man next to her): my luck. i don't talk to a soul in the subway for 35 years. i get a best man at a lesbian wedding. (leaves) \n\nelaine: no, no, no, you don't understand! i'm not a lesbian! i hate men, but i'm not a lesbian! \n\nelaine's voice: i'm really looking forward to this. i love weddings. maybe i'll meet somebody, umm maybe not. \n\nelaine's voice: oh, man. we're stopping? \n\nwoman: well, this is where i get off. \n\ngeorge: oh, you do? \n\nwoman: eh, hey why don't you...oh nothing. \n\ngeorge: no, no, what, what? \n\nwoman: well, i was going to say why don't you get off with me, but you're obviously very busy on your way to some important meeting or something. \n\ngeorge: yeah, well.... \n\nwoman: yeah i knew it was a bad idea. \n\ngeorge: hey, what's another million, give or take. i get off where and when i wanna get off. \n\ngeorge: i'm stuck. pull a little, just a second. don't start the train! don't start the train!! \n\nman1: this, it's the fourth horse of the first race, pappanick. \n\nman2: how do you know it's going to win? \n\nman1: my ups-guy tells. guys who own the horses are regular customers. every horse he has ever given me has won. see, they've been sandbagging and looking for a good spot. he's been getting it light cause they've been using bug boy and the workout hasn't been published. now they are ready to run with it. they are gonna break his maiden. it's going to go to great price, maybe 301. i'm telling you, it's a lock. \n\nman2: but it rained last night. \n\nman1: exactly, this horse loves the slop. it's in his bloodlines. his father was a mudda', his mother was a mudda'. \n\nman2: his mudda' was a mudda'? \n\nman1: what did i just say? come on, let's go to the office, i'm going to call my bookie. (looks around to see if anyone is listening) hey, don't tell anybody. \n\njerry: o-k. you realize of course, you're naked? \n\nnaked man: naked, dressed. i don't see any difference. \n\njerry: you oughta' sit here. there is a difference. \n\nnaked man: you got something against naked body? \n\njerry: i got something against yours. how about a couple of deep knee bends, maybe a squat thrust? \n\nnaked man: who's got time for squat thrusts? \n\njerry: all right, how about skipping breakfast. i'm guessing you're not a 'half-grapefruit and black coffee' guy. \n\nnaked man: i like a good breakfast. \n\njerry: i understand, i like good breakfast. long as you don't wind up trapped in a room with bib overalls and pigtails, been counseled by dick gregory. \n\nnaked man: i'm not ashamed of my body. \n\njerry: that's your problem, you should be. \n\njerry: don't get up, please, allow me. \n\nelaine's voice: oh, this is great. this is what i need, just what i need. ok, take it easy i'm sure it's nothing. probably rats on the track, we're stopping for rats. god, it's so crowded. how can there be so many people? this guy really smells, doesn't anyone use deodorant in the city? what is so hard, you take the cap off, you roll it on. what's that? i feel something rubbing against me. disgusting animals, these people should be in a gage. we are in a gage. what if i miss the wedding? i got the ring. what'll they do? you can't get married without the ring. oh, i can't breath, i feel faint. take it easy, it'll start moving soon. think about the people on the concentration camps, what they went through. and hostages, what would you do if you were a hostage? think about that. this is nothing. no, it's not nothing, it's something. it's a nightmare! help me! move it! com'on move this fu(beep) thing!! why isn't it moving?!? what can go wrong with a train!?! it's on tracks, there's no traffic! how can a train get stuck. step on the gas!! what could it be? you'de think the conductor would explain it to us? 'i'm sorry there's a delay we'll be moving in 5 minutes'!! i wanna hear a voice. what's that on my leg?!! \n\ngeorge: are you often on business trip? nice...oh, hey nice ice-bucket. \n\nwoman: make your-self comfortable. \n\ngeorge's voice: make myself comfortable. what does that mean? does she want me to take my clothes off? is she taking her clothes off? what if i take my clothes off and she still has hers' on? then i really look like an idiot. she could get offended and leave. so maybe i should leave them on, but what then if she takes her off? then she'll feel humiliated. 'make yourself comfortable'. i got this unbelievable woman and this 'comfortable'-thing can ruin me. i got it! i take my shoes off and sit on the bed. there, that's comfortable. she can't accuse me being unconvertible. \n\ngeorge: gotta tell you i'm pretty comfortable. \n\nkramer: oh yeah, it's all set. they got the bug boy on him. \n\nguy: the bug boy. \n\nkramer: yeah, the little father has run his hard out. they're gonna break his maiden. \n\nguy: really? but, it's a little bit slow out there it rained last night. \n\nkramer: oh, this baby loves the slob, loves it, eats it up. eats the slob. born in the slob. his father was a mudda'. \n\nguy: his father was a mudda'? \n\nkramer: his mudda' was a mudda'. \n\nguy: his mudda' was a mudda'? \n\nkramer: what did i just say? \n\nkramer: hey, all right, 600 pappanick to win. \n\nnaked man: they still have no pitching. goodin's a question mahk. ...you don't recover from those rotator cuffs so fast. \n\njerry: i'm not worried about their best pitching. they got pitching. ...they got no hitting. \n\nnaked man: no hitting? they got hitting! bonilla, murry. ...they got no defence. \n\njerry: defence? please. ...they need speed. \n\nnaked man: speed? they got coleman. ...they need a bullpen. \n\njerry: franco's no good? ...they got no team leaders. \n\nnaked man: they got franco! ...what they need is a front office. \n\njerry: but you gotta like their chances. \n\nnaked man: i luv their chances. \n\njerry: tell you what. if they win the penant i'll sit naked with you at the world series. \n\nnaked man: it's a deal! \n\nelaine's voice: why couldn't i take a cab. for 6 dollars my whole life could've changed. what is that on my leg? i'll never get out of here. what if i'm here for the rest of my life? maybe i'll get out in 5 seconds. 1 banana, 2 banana, 3 banana, 4 banana, 5 banana...no, i'm still here! still here! why don't they start moving? move! move!! move!!! *train starts moving, lights get back on* it's moving! it's moving! yes! yes!! *train stops again and lights go off* motherf(beep-beep)!!! \n\ngeorge: eh, gee, i hope you have the key for these things. \n\nwoman: oh, don't worry. i do. \n\ngeorge: you know, my mother used to walk around on our apartment just in her bra and panties. she didn't look anything like you, she was really disgusting, really bad body. if you could imagine uglier and fatter version of shirley booth. remember shirley booth from hazel. really embarrassing, cause you know i had only mother in the whole neighborhood who was worse looking than hazel. imagine the taunts i would hear. \n\nwoman: like what? \n\ngeorge: like a \"hey your mother is uglier than hazel. hazel really puts your mother to shame\" \n\ngeorge: what's going on? \n\nwoman: it was a pleasure doing business with you george, but i'm afraid i have to get going. \n\ngeorge: get going? but we haven't really, you know.... \n\nwoman: eight dollars? eight dollars? \n\ngeorge: what are you doing? you're robbing me? \n\nwoman: i wasted my whole morning with you for eight dollars? \n\ngeorge: wait, wait a second, what are you doing? \n\nwoman: i'm taking your clothes. \n\ngeorge: no, that's my only suit. it cost me 350 dollars. i got it at moe ginsburg. \n\nwoman: bye george. \n\ngeorge: no wait, you can't just leave me here! will i see you again? \n\n(the race is on and pappanick is slowly making ground. kramer is pounding himself imitating the jockey and shouts: yes, yes, yes... the winner is pappanick) \n\nkramer: yes! yes! i won, hey (shouts to cashier) \n\nnaked man: i haven't had a hotdog at nathan's for 20 years. \n\njerry: first we ride the cyclone. \n\nnaked man: chilly out. \n\njerry: aah, french fries. \n\nthug: give me the money. give me the money! \n\nblind violin player: (puts a gun to the thug's head) freeze, police! \n\njerry: no, i never got the car. we were having such a good time, by the time i got to the police garage, it was closed. \n\nelaine: too bad. \n\njerry: you wouldn't believe what this guy put away at nathan's. look at what we won! \n\njerry: you want him? \n\nelaine: get that out of my face. \n\njerry: so, you missed the wedding. you'll catch the bris! \n\nman at the counter: (yelling) hare krishna, hare krishna! \n\ngeorge: how would you like a 'hare krishna' fist on your throat, you little punk? \n\nelaine: george? \n\njerry: biff, what did you whistle on the elevator? \n\ngeorge: you have my spare-key in your apartment, right? \n\njerry: yeah, it's in the kitchen drawer. \n\ngeorge: give me your key, i gotta get it. \n\nkramer: what happened? \n\ngeorge: never mind what happened, just give me the key. \n\njerry: come on, i'll go with you. \n\nelaine: here, pay. (gives the check to jerry) \n\nkramer: wait, wait, wait... \n\ngeorge: ...pianist. a *classical* pianist. she *plays* the piano. she's a *brilliant* woman. i-i-i sat in her living room... she played the *waldstein sonata*! the *waldstein*! \n\ngeorge: we did a crossword puzzle together, *in bed*. it was the most fun i ever had in my entire life. did you hear me? in my *life*! y'know? \n\njerry: were you talking? i couldn't hear anything. \n\ngeorge: i was telling you about noel. \n\njerry: oh, noel! yeah, the one who plays bongos... \n\ngeorge: [sarcastically] heh heh heh... so side-splittingly funny... \n\njerry: all right, i'm sorry. what about her? \n\ngeorge: what, you think i'm going to repeat the whole thing now? \n\njerry: i know, you told me you like her, everything is going good. \n\ngeorge: no everything is *not* going good. i'm very uncomfortable. i have no power. i mean, why should she have the upper hand. *once* in my life i would like the upper hand. i have no hand-- no hand at all. she has the hand; i have *no* hand... \n\ngeorge: how do i get the hand? \n\njerry: we all want the hand. hand is tough to get. you gotta get the hand right from the opening. \n\ngeorge: she's playing a recital this week at the mcbierney school. you wanna hear her play? i got two extra tickets, you and elaine could go... \n\njerry: yeah, that sounds like somethin'... \n\ngeorge: then afterwards maybe we could all go out together. y'know she'll see me with my friends, she'll observe me as i really am, as myself. maybe i can get some hand that way. \n\nkramer: hey, smell my arm... smell it! \n\ngeorge: with all due respect, i don't think so... \n\njerry: that smells good, what is that? \n\nkramer: the *beach*! \n\njerry: the *beach*? \n\ngeorge: what, did you go swimmin'? it's 29 degrees out! \n\nkramer: i just joined the polar bear club. \n\njerry: you joined the *polar bears*?! \n\ngeorge: what the hell is a \"polar bear\"? \n\nkramer: well, it's these people-- they go swimmin' in the winter. they're terrific, i just took my first swim today. brrrrrrr! it's invigorating.... \n\njerry: yeah... so's shock therapy. \n\njerry: [with glee] what is that, a pez dispenser?! \n\nkramer: want one? yeah, i just bought it at the flea market. \n\ngeorge: hey, what goes on there, exactly? \n\njerry: you don't know? \n\ngeorge: no, i-i-i know... [retreats back to his chinese take out] i know... \n\njerry: you think they have fleas there, don't you? \n\ngeorge: *no*... \n\njerry: yes you do, biff. you've never been to a flea market, and you think they have fleas there. \n\ngeorge: all right, i think they have fleas there. so what... \n\nelaine: i don't know how anyone does this. it must be *so* nerve racking... how do they warm up their fingers? \n\njerry: they have a piano backstage they warm up on. \n\nelaine: *no*, we would have heard it. \n\njerry: what, do you think they just crack their knuckles and come out? \n\ngeorge: i told her we'd all go out afterwards, okay? and don't applaud when she stops playing the first time. it's not over yet. \n\njerry: [quickly whispering] i resent that you said that! that's directed at *me*, isn't it?! \n\njerry: is this okay? can i do this? (he claps) \n\nsteve: something i said? [no response] it's john... mollika. \n\nelaine: oh, oh, *john*... oh, hi john... hi... \n\nsteve: what're you doing down here? \n\nelaine: oh, i was just at this recital and jerry put a pez dispenser on my leg and i started laughing. \n\nmollika: jerry's in there? i heard you guys broke up. \n\nelaine: we did. we're just hanging out. \n\nmollika: really. ... you really look great. \n\nelaine: oh, uh, thank you. are you still friends with richie appel? \n\nmollika: oh, richie, he's been doing comedy in l. a. for a few years. he just got back a month ago. he's kind of messed up. on drugs. i don't know what to do for the guy. \n\nelaine: have you thought about an intervention? \n\nmollika: what's that? \n\nelaine: you get all his friends in a room, they confront himm to try to get him into rehab. it's a very popular thing now. \n\nmollika: he'd never listen to anyone. ... except of course jerry. he'd listen to jerry. jerry would have to be involved. he really respects jerry. \n\nelainelaine: i'm sorry. george, i'm sorry! \n\ngeorge: what did you put the pez dispenser on her leg for in the first place? \n\njerry: i dunno, it was an impulse. \n\ngeorge: what kind of a sick impulse does that?? \n\njerry: how could i know she would start to laugh? \n\nelaine: i'm sorry. i'm sorry. i *am*! \n\njerry: can we just go in already? \n\ngeorge: what are we gonna tell her? \n\nelaine: i'll tell her i was the one who laughed. \n\ngeorge: no, don't say a word. if she thinks my friends are jerks, then i'm a *jerk*... \n\nelaine: [to jerry] oh, remind me to talk to you about something later. \n\njerry: what about? \n\ngeorge: hey, hey! we're discussing something! \n\njerry: i know, but i'm distracted now. \n\ngeorge: what are you? a *baby*!? all right. tell her. \n\nelaine: when i was outside i ran into john mollika. \n\njerry: really john mollika, they guy that used to bartend at the comedy club. how's he doing? \n\nelaine: he's good. \n\ngeorge: uh, can we cut to the chase? \n\njerry: \"cut to the chase\"? \n\ngeorge: yeah... \n\njerry: what're you, \"joe hollywood\"? \n\ngeorge: a lot of people say it. \n\njerry: i would lose that. \n\ngeorge: [accusingly] what's *that*? \n\njerry: \"lose that\"? that's not a hollywood expression! \n\ngeorge: [realizing full well it isn't] ...yes it is. \n\nelaine: anyway ... so john told me that richie is in town from los angeles and he's really messed up on drugs. so i told him that he should do an intervention. \n\njerry: really, an intervention ... \n\ngeorge: y'know people, we got a situation over here! \n\nelaine: yeah, but he want's you to be a part of it. \n\njerry: me? why me? \n\nelaine: 'cause richie really respects you and he would listen to you. \n\njerry: y'know these things are *really* hard to load... \n\ngeorge: all right, ok, i'm goin' in. \n\njerry: we've got to talk about this (to elaine) \n\nelaine: all right. \n\ngeorge: hi, hi, hi, you were wonderful. \n\nnoel: no.. \n\ngeorge: oh, these are my friends, elaine and jerry, ... noel \n\njerry: you play a *hell* of a piano. \n\nelaine: yeah, i was really moved, *really* moved. \n\nnoel: well didn't you hear that person laughing? i couldn't play. i was *humiliated... \n\nelaine: well, i'm sure it wasn't *at* you. \n\nnoel: well then, what was she laughing at? \n\njerry: pez? \n\nnoel: uh, no, no thank you. did you see her? \n\ngeorge: me, uh, uh, no, ... \n\njerry: anyone who would laugh at a recital is probably some sort of lunatic anyway. i mean only a sick twisted mind could be that rude and ignorant. \n\nelaine: maybe some mental defective put something stupid on her leg. \n\njerry: even if this so called mental defective did put something on her leg she's still the one who laughed. \n\nnoel: i'll never forget that laugh for the rest of my life. [exits] \n\nelaine: i'm sure she would apologize if she could. probably somebody is holding her back against every fibre in her being. \n\ngeorge: if she want's to continue to have a fibre of her being she'll be very careful (hitting each other) \n\ngeorge: all right, so are you ready, so we'll go out and get something to eat. \n\nnoel: i don't feel like it tonight. \n\njerry: we'll be outside \n\nelaine: yeah \n\njerry: it was nice meeting you by the way, how do you warm up your fingers before you play? \n\nnoel: i just crack my knuckles. \n\ngeorge: we'll have a good time \n\nnoel: i don't feel like it \n\ngeorge: ah, come on \n\nnoel: i said i don't feel like it! \n\ngeorge: um, all right, um, uh, i'll call 'ya. i'll call you and we'll talk on the phone. a telephone communiqu. every thing is fine ok, uh, fine, .. [exits] \n\njerry: you know i thing kramer might have been responsible for getting richie involved with drugs in the first place. \n\nelaine: what? how? \n\njerry: a few years ago the comedy club had a softball team. kramer was our first baseman you couldn't get anything by him it was unbelievable. anyway this one game we came back to win from like 8 runs behind. so kramer says to richie why don't you dump the bucket of gatorade on marty benson's head? the club owner. so richie goes ahead and does it. \n\nelaine: so? what happened? \n\njerry: what happened? the guy was like 67 years old, it was freezing out, he caught a cold, got pneumonia, and a month later he was dead. \n\nelaine: shut up! \n\njerry: all the comedians were happy. he was one of these club owners nobodu liked anyway. but richie was never the same. \n\nelaine: whar about kramer? \n\njerry: he's the same! \n\njerry: are you sure you want me john. i have spoken to richie in two years. i don't have a good apartment for an intervention. the furniture, it's very non-confrontational. all right all right. goodbye. [to kramer] remember ricie appel? \n\nkramer: (looks shocked) oh sure, the guy i told to pour the gatorade that killed marty benson? \n\njerry: right, we'll john mollika is organizing some kind of intervention for him. we're having it here. \n\nkramer: can i get in on that? \n\njerry: what do you think? it's like a poker game? \n\nkramer: is elaine going? \n\njerry: yeah \n\nkramer: well, i knew him as well as she did. \n\njerry: yeah, but john invited her. \n\nkramer: so what are you saying, you don't want me to intervene? \n\njerry: no, intervene, go intervene all you want. i am just afraid you might be interfering while we're intervening. \n\ngeorge: it's george \n\njerry: stop smelling your arm. \n\nkramer: you know i got a great idea for a cologne. the beach. you spray it on and you smell like you just came home from the beach \n\njerry: hum, a cologne that smells like the beach. i can't believe i'm saying this, \"that's not a bad idea.\" \n\nkramer: tell me about it! \n\njerry: why don't you call steve d'jiff, he works in the marketing department at calvin klein. in fact he's a good friend of john mollika and richie also. \n\ngeorge: well it's over. it's definitely over. \n\njerry: she broke up with you? \n\ngeorge: no, but i can tell she's going to. i can sense it. we had this terrible phone conversation. i was so nervous before i called i made up this whole list of things to talk about. \n\njerry: what was on the list? \n\ngeorge: let's see, how i'm very good at going in reverse in my car, why isn't postum a more popular drink, \n\njerry: yeah, postum is under-ratted, \n\ngeorge: anyway there was all this tension. i asked her if she wanted to go out to dinner and she said \"no, maybe we could get together for lunch.\" you know what that means. \n\njerry: what's wrong with lunch? \n\ngeorge: lunch is fine at the beginning then you move on to dinner. you don't move back to lunch. it's like being demoted. i'll never do another crossword puzzle with her again. i know it. \n\nkramer: i like the jumble you ever do the jumble? \n\ngeorge: i have no power do you understand? i need hand. i have no hand. \n\nkramer: break up with her \n\ngeorge: what? \n\nkramer: you break up with her. you reverse everything that way. \n\njerry: a preemptive breakup. \n\ngeorge: a preemptive breakup. this is an incredible idea. i got nothing to lose. we either break up which she would do anyway but at least i go out with some dignity. completely turn the tables. it's absolutely brilliant. \n\ngeorge: so, i am have to going to break up with you. \n\nnoel: you're breaking up with me? \n\ngeorge: i, ... am breaking up with, ... you. \n\nnoel: wow. \n\ngeorge: shocked? \n\nnoel: i really am. \n\ngeorge: never expected this did you? \n\nnoel: i thought everything was fine. \n\ngeorge: well, live and learn. \n\nnoel: i don't understand. you're breaking up with me. didn't we have fun doing the crossword puzzles? \n\ngeorge: kind of. \n\nnoel: i'm very confused. \n\ngeorge: well, i didn't mean to hurt you kid. \n\nnoel: i thought,... \n\ngeorge: now, stop it ... \n\nnoel: what do you want, i can make you happy. \n\ngeorge: when you're playing the piano do you think about me? \n\nnoel: i don't know. \n\ngeorge: this is what i'm talking about. \n\nnoel: ok, i'll think about you. \n\ngeorge: all the time. \n\nnoel: all the time? ... ok, all the time. \n\ngeorge: i can't hear you. \n\nnoel: all the time. all the time. \n\ngeorge: see, it's not so hard. \n\nkramer: go ahead smell, smell \n\nsteve: yeah, so? \n\nkramer: do you recognize it? ... the beach. \n\nsteve: what are you talking about? \n\nkramer: oh, i'm talking about the beach. \n\nsteve: what about it? \n\nkramer: you know the way you smell when you first come home from the beach? well, i want to make a cologne that captures the essence of that smell. oh yeah. \n\nsteve: that is the dumbest idea i have ever heard. \n\nkramer: oh, wait, did you here what i just said? \n\nsteve: do you think people are going to pay $80 a bottle to smell like dead fish and sea weed? that's why people take showers when the come home from the beach. it's an objectionable offensive odour. \n\nkramer: so you don't think it's a good idea? \n\n[the intervention [note: double check this part for sure!!!!] \n\nguy: the membranes get dried and it just starts bleeding. since i was a kid so i have to stick tissue up there \n\nelaine: (very uninterested) uh, you have to work like that? \n\nguy: nobody minds nobody has ever said anything to me. \n\nother guy: are there any ice cubes? \n\njerry: in the freezer. \n\nother guy: i looked. there aren't any ice cubes. \n\njerry: well i guess there aren't any ice cubes. \n\nother guy: i can't drink this. it's warm! (walks away) \n\nguy: shouldn't we rehearse this a little bit before richie comes? \n\nsteve: what's the plan? \n\njerry: do i have to talk? i don't feel like talking. \n\nother guy: well, if he's not going to talk i'm not going to talk either. \n\nguy: no, we all have to talk. \n\nelaine: what's the order? \n\nguy: we'll go in alphabetical order. first roberta. \n\nroberta: why am i first? \n\nelaine: albano is your last name. \n\nroberta: that's not my name any more. i'm divorced. \n\nsteve: i'll go first. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: is this the interference? \n\njerry: intervention. \n\nother guy: what are you doing here? \n\nkramer: uh, is it all right if i stay for the intervention? \n\nsteve: hey, this is for close friends only. \n\nkramer: i'm a friend. who do you think told him to pour the gatorade over marty benson's head? \n\nother guy: let him stay. \n\nkramer: hey, you know i got someone to make up that cologne for me, big mouth. \n\nsteve: somebody's going to make that crap? \n\nold guy: kramer! \n\nkramer: hey, come on, these are some of my polar bear buddies. \n\nother guy: they can't stay. \n\nold guy: we're having a party here? \n\njerry: no, we're having an intervention \n\nold guy: an intervention? who's intervening? \n\njerry: there's a friend of ours on drugs and we're going to confront him. \n\nold guy: sure, we used to do that when one of our polar bears stopped coming. we would go to his house and say, \"what you don't want to be a polar bear anymore? it's too cold for you?\" \n\nguy: it's him. \n\nroberta: what should we do? \n\nelaine: hide! \n\njerry: it's not a surprise party! yeah (to intercom) \n\ngeorge: it's george \n\njerry: yeah, come on up. ... it's not him. \n\nguy: if you don't go out with me it's because i'm a bar tender. \n\nelaine: look, i don't think this is appropriate right now. \n\nguy: is it because i have a tissue in my nose? \n\nelaine: you're getting warm. \n\ngeorge: we just came from chadway's(?) what's going on. \n\njerry: we're having the intervention for richie. \n\ngeorge: oh, right, right, the intervention. should we leave? \n\njerry: well, uh.. \n\nnoel: (happily) elaine, hi. \n\nelaine: oh, hi noel \n\njerry: well, you're looking well. \n\ngeorge: jerry, let me tell you something, \"a man without hand is not a man.\" i got so much hand i'm coming out of my gloves. i got to thank kramer. \n\nsteve: even if i were dragged through manure i still wouldn't put that stuff on. \n\ngeorge: (to kramer) this man is a genius. genius! \n\nsteve: you think so? \n\ngeorge: i don't think so i know so, kramer, come here i got to talk to you \n\nold man: the male kangaroo doesn't have a pouch only the female has it. the male has pouch envy. \n\nelaine: (chuckles) \n\nelaine: (laughs) \n\nnoel: that laugh. that's the laugh. that's it. you're the one. \n\nelaine: no, no. it was an accident. it really wasn't my fault. it was jerry. \n\nnoel: you put a pez dispenser on her leg during my recital?. \n\njerry: i didn't know she would laugh. \n\nnoel: you lied to me george, you lied to me. \n\ngeorge: no, i, uh, um, wa, wa, what did i do? ... where are you going? \n\nnoel: i ... am breaking up ... with you! \n\ngeorge: you can't break up with me. i've got hand. \n\nnoel: and you're going to need it. \n\njerry: hey richie \n\nrichie: so what's going on? \n\njerry: it was pretty ugly from the get go. he's not listening, he's hostile, he's talking back. \n\ngeorge: i can't do these puzzles. \n\njerry: so he starts to get up he spots the pez dispenser on the coffee table \n\ngeorge: ah ah pez dispenser. \n\njerry: he picks it up - he stares at it - it's like he's hypnotized by it. then he's telling us this story about how when he was a kid he was in the car with his father, and his father was trying to load one of them \n\ngeorge: well they're hard to load. \n\njerry: tell me something i don't know. so as the father's trying to load it he loses control of the car and it crashes into a high school cafeteria. nobody's hurt but pez is all over the car. and the dispenser was destroyed virtually beyond recognition. \n\ngeorge: poor kid. \n\njerry: so as he's telling the story he starts crying. \n\ngeorge: what did you do? \n\njerry: what do you think? i gave him my pez dispenser. \n\ngeorge: wow \n\njerry: two hours later he checks into smither's clinic. i talked to the doctor yesterday. he's doing great on the rehab. he's hooked on pez. he's eating them like there's no tomorrow. \n\ngeorge: what's a three letter word for candy? \n\njerry: i can't do those things. \n\njerry: let me ask you a question. if you named a kid rasputin do you think that would have a negative effect on his life? \n\nelaine: na. \n\njerry: what are you doing? were going out for dinner in ten minutes. \n\nelaine: do you realize this is the last meal i am going to have for three days? \n\njerry: yeah. \n\ngeorge: its george. \n\njerry: come on up. . . . i never heard of this. youve got to fast for three days to take an ulcer test. how you gonna do that? \n\nelaine: i dont know. how could i possibly have ulcers? who could have given me ulcers? \n\njerry: i think ill take out the garbage. \n\nelaine: hey, have you ever fasted? \n\njerry: well, once i didnt have dinner until, like 900 oclock, that was pretty rough. (exits to hall with garbage  meets george) hey, do me a favour will ya? throw out my garbage for me. \n\ngeorge: yeah, right. \n\njerry: come on, its just down the hall. \n\ngeorge: give me two bucks. ill do it for two bucks. \n\njerry: ill give you 50 cents. \n\ngeorge: theres no way i touch that bag for less than two dollars. \n\njerry: come on. fifty cents. (??) a piece of drakes coffee cake \n\ngeorge: youre not getting no drakes coffee cake for fifty cents. yae, hey, im all set. i got the ticket. im going to the cayman islands this friday. \n\njerry: i dont get you. who goes on vacation without a job? what do you need a break from getting up at eleven? \n\ngeorge: its an incredible deal. i dont know why you dont come with me. \n\njerry: nah, i dont go for these non-refundable deals. i cant commit to a woman. im not going to commit to an airline. \n\ngina: hi. \n\njerry: hi. \n\ngina: how are you? \n\njerry: gina, do you know what a drakes coffee cake is? \n\ngina: of course, the plane cake with the sweet brown crumbs on the top. \n\njerry: how much do they cost? \n\ngina: the junior? \n\ngeorge: no, no the full size. \n\njerry: no, no the junior. \n\ngeorge: you didnt say \"junior\". \n\ngina: i havent had one of those since i was a little girl. \n\njerry: really? you should be ashamed of yourself. i want you out of here! (martin enters the hall) how ya doing? \n\nmartin: good enough. \n\njerry: boy shes sexy isnt she? \n\njerry: do you believe that guy? \n\nelaine: what guy? \n\njerry: my neighbour \n\nelaine: oh, that creepy guy? \n\njerry: yeah, did he think i was flirting with her? \n\ngeorge: he didnt seem too pleased. \n\nelaine: maybe ill get a steak with french fried onion wings. \n\ngeorge: hey, you know what? i just remembered something. i had a dream about that guy last night. this is amazing. \n\njerry: whats so amazing? youve seen him before. \n\ngeorge: i havent seen him for months. \n\njerry: what was the dream? \n\ngeorge: i was doing standup comedy in kennebunkport maine. ??? night club. the stage was on a cliff and the audience was throwing all the comics off. \n\njerry: i think ive played there. \n\ngeorge: ive had a lot of other paranormal stuff happen to me. \n\njerry: youre a little paranormal \n\nelaine: hey, george, you know my friend goes to a psychic. \n\ngeorge: really? \n\nelaine: uh uh, you should go some time. \n\ngeorge: id love to go. make an appointment. \n\njerry: psychics, vacations. how about getting a job? \n\ngeorge: i just got fired. \n\njerry: alright, come on, lets get out of here. \n\nelaine: i wonder what ghandi ate before his fast. \n\njerry: i heard he used to polish off a box of triscuits. \n\nelaine: really? \n\njerry: oh, yeah. ghandi loved triscuits. \n\njerry: who is it? who is it? \n\ngina: its gina. \n\njerry: who? \n\ngina: martines girl friend. \n\njerry: martine? \n\ngina: you next door neighbour. \n\njerry: oh, martin! \n\ngeorge: its martine. i think hes dying. he tried to kill himself with pills. \n\njerry: what? \n\ngina: come on. \n\njerry: in my pajamas? i better get my robe. \n\ngina: we dont have enough time. \n\njerry: itll take two seconds. \n\ngina: there is no time. \n\njerry: we dont have two seconds? \n\ngina: all right. go ahead. \n\njerry: nah, forget it. \n\ngina: no, go ahead. \n\njerry: nah. ill just wear the pajamas. \n\ngina: will you just get it. \n\njerry: are you sure? \n\ngina: forget it. come on. \n\njerry: nah, ill go get the robe. \n\njerry: thats not too bad. its not like a sunny von bulow comma. the doctor said he should snap out of it anytime. \n\ngina: you know why he did this? because i told him it was over. i did not want to see him anymore. \n\njerry: really? its over? \n\ngina: i could not stand it another minute. yesterday he turned over a mans hot dog stand because he thought the man was looking at me. and then after he saw you in the hall. ach, he was crazy with jealousy. \n\njerry: oh boy, did he say anything about me? \n\ngina: he does not like you. and all indications are he does not like drakes coffee cake. \n\njerry: he said that? \n\ngina: he was screaming about it all night. how its too sweet and it falls apart when you eat it. \n\njerry: im sorry if i caused any trouble. i was just being friendly. \n\ngina: i wasnt. \n\njerry: you werent? \n\ngina: no, i have thought about you many times. have you thought about me? \n\njerry: of course. \n\ngina: tell me everything. \n\njerry: are you sure he cant hear anything? . . .martin, martin. \n\ngina: i wish he was not in a coma. i wish he was dead. i wish i could pull the plug out from him. \n\njerry: i, would, i would wait on that. i know how you feel but. juries today, you never know how theyre going to look at a thing like this. \n\ngina: i saw you looking at your watch. you want to leave? go ahead. \n\njerry: no, i just wanted to see what time it was. \n\ngina: are you afraid of him? \n\njerry: no. \n\ngina: then kiss me. \n\njerry: here? \n\ngina: yes, right here. \n\njerry: is this the proper venue? \n\ngina: you dont want to? \n\njerry: no, no, i want to. i, i very much want to. i, i desire to. i, i pine to. \n\ngina: then kiss me right in front of him. \n\njerry: i cant. what if he wakes up? \n\ngina: a man is lying here unconscious and youre afraid of him? what kind of a man are you? \n\njerry: a man who respects a good comma. if it was one of those in and out comas, maybe. but when a guys got a coma going like this  you dont want to mess with it. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: did you hear about martin? \n\njerry: yeah, i heard. \n\nkramer: i cant believe hes in a coma. \n\nkramer: hes got my vacuum cleaner. you know i loaned it to him. he never returned it. the carpets are filthy. what am i going to do? \n\njerry: who told you about martin? \n\nkramer: newman! hes good friends with him. \n\njerr: oh, big mouth newman. i should have guessed. \n\nkramer: hes got all of my attachments, you know. \n\njerry: hey, let me ask you something. how long do you have to wait for a guy to come out of a coma before you can ask his ex-girlfriend out? \n\nkramer: what, gina? why wait? why not just call doctor kavorkian? \n\njerry: you know i dont get that whole suicide machine. theres no tall buildings where these people live? they cant wrap their lips around a revolver like a normal person? \n\nkramer: so whats going on between you and gina? \n\njerry: well, i went with her to the hospital last night. \n\nkramer: uh, uh. \n\njerry: so were in the room and shes trying to get me to kiss her right in front of him. \n\nkramer: uh, uh, you see thats the great thing about mediterranean women. all right, so what did you do? \n\njerry: nothing. \n\nkramer: ah, what kind of a man are you? the guy is unconscious in a coma and you dont have the guts to kiss his girlfriend? \n\njerry: i didnt know what the coma etiquette was. \n\nkramer: there is no coma etiquette. you see thats the beauty of the coma, man. it doesnt matter what you do around it. \n\njerry: so youre saying, his girl, his car, his clothes, its all up for grabs. you can just loot the coma victim. \n\nkramer: id give him 24 hours to get out of it. they cant get out of it in 24 hours, its a land rush. \n\njerry: so if the coma victim wakes up in a month, hes thrilled, he got out of the coma. he goes home, theres nothing left? \n\nkramer: nothing left! thats why im trying to get that vacuum cleaner. because somebodys going to grab it. \n\nrula: martins spirit came to you as a warning. \n\nelaine: why would he come to george? \n\nrula: because george has heightened extra sensory perception. faygy get your finger out of your nose. \n\ngeorge: i knew it. i always felt different. \n\nrula: you are. some coffee cake? \n\ngeorge: drakes? \n\nrula: yes. \n\ngeorge: did you buy this for me? \n\nrula: no, why? \n\ngeorge: ha, because i love drakes coffee cake. \n\nrula: maybe i did. \n\nelaine: take it away. \n\ngeorge: she hasnt eaten in two days. \n\nrula: whos pauline? \n\ngeorge: pauline? . . . wait a minute. i got it. my brother once impregnated a woman named pauline. \n\nrula: do you think about her? \n\ngeorge: when i hear her name mentioned. \n\nrula: cut these with your left hand. \n\ngeorge: there was a woman, audrey. she had a very big nose. \n\nrula: i see an audrey, but with a small nose. \n\ngeorge: yes, yes, she had a nose job. i loved her very deeply. will she ever speak to me again? \n\nrula: not in this life. \n\nelaine: should you be smoking? \n\nrula: does it bother you? \n\nelaine: youre pregnant. \n\ngeorge: elaine. \n\nrula: i smoked when i had faisy. \n\nrula: ah oh. \n\ngeorge: ah oh? what? what ah oh? \n\nrula: i dont know about this trip george. \n\ngeorge: you can see the cayman islands in there? is something going to happen to me? what? \n\nelaine: its really bad for the fetus. do you know that. \n\ngeorge: elaine, shes a psychic. she knows how the kids going to be. \n\ngeorge: should i not go on this trip? \n\nrula: george, i am going to tell you something and i want you to really hear me. \n\nelaine: now listen. i just dont know how a person, with everything we now know about pre-natal care can put a cigarette in her mouth. \n\ngeorge: elaine, what are you doing? \n\nelaine: its disgusting. \n\nrula: i dont belive it. i would like you both to leave. \n\nelaine: oh fine, i dont like to be around people who are just so irresponsible. \n\nrula: get the hell out. \n\ngeorge: a plane crash? a heart attack? lupus? is it lupus? \n\nrula: do you want me to call the super? he was an israeli commando. \n\ngeorge: if you dont say anything i will assume its a plane crash. \n\nrula: get out. \n\ngeorge: not a plane crash. (leaving) is it a plane crash? \n\ngina: i do not like your toothbrush. there are no bristles. \n\njerry: you can say what you want about me but ill be damned if im going to stand here while you insult my toothbrush. \n\ngina: it is too small for someone with such a big mouth (kisses kerry). let me ask you. what will you do if martine wakes up? run away like a mouse? \n\njerry: no, more like the three stooges at the end of every movie. \n\ngina: who are these stooges you speak of? \n\njerry: theyre a comedy team. \n\ngina: tell me about them. everything. \n\njerry: well, theyre three kind of funny looking guys and they hit each other a lot. \n\ngina: you will show me the stooges? \n\njerry: i will show you the stooges. \n\ngina: when? \n\njerry: well, i dont really know where the stooges are right now but if i locate them you will be the first to know. \n\ngina: come, you walk me to a cab. \n\njerry: well, uh, i uh, i dont want you to get upset or anything but uh, with martin and all, well maybe its not such a good idea for us to be seen together in the building, because, you know, he had a lot of friends here. \n\ngina: youre still afraid. you are not a man. \n\njerry: well then what are all those ties and sport jackets doing in my closet? \n\ngina: are you going to walk me to a cab or not? \n\njerry: yeah, all right. all right. \n\nkramer: you should just eat fruit. \n\nnewman: i cant eat fruit. it makes me incontinent. \n\nkramer: ??? \n\nnewman: hello gina. hello jerry. \n\njerry: hello newman. \n\njerry: do you think newman would tell martin if he wakes up? what kind of sicko would do that? he could kill me. \n\ngeorge: people smoke, elaine. my mother smoked. it didnt hurt me. \n\nelaine: (jumps with fear to jerry) did you see that wall move? \n\njerry: boy, its a good thing we came. \n\ngeorge: could there be a native p0roblem in the caymans? maybe theres native unrest. \n\nelaine: hi, i havent eaten in three days. i was wondering how much longer it would be until i get my x-ray. \n\nnurse: well call you. \n\njerry: george, i want you to promise me something. if im ever in a comma. in the first 24 hours get everything out of my apartment and put it in storage. \n\ngeorge: how come? \n\njerry: looters. \n\nelaine: how do we know that dog food is any good? who tastes it? \n\njerry: shes really hungry. \n\nkramer: hey. \n\nelaine: kramer \n\nkramer: well, newmans upstairs visiting martin. \n\ngeorge: would you buy my cayman island ticket? \n\nkramer: youre not going? \n\ngeorge: no. \n\nkramer: why not? \n\ngeorge: the psychic said something terrible will happen. \n\nkramer: i dig. \n\nkramer: i want my vacuum cleaner! i know you can hear me. look my mother, shes going to come and visit me. she sees that rug, shes going to kill me. \n\nnewman: he cant hear you, you idiot. why dont you just buy another one. \n\nkramer: why would i buy another one when i spent a hundred bucks on this one? \n\nnewman: i have a carpet sweeper you can use. \n\nkramer: i dont want a carpet sweeper. they dont do anything. \n\nnewman: it gets my rug clean. \n\nkramer: the carpet sweeper is the biggest scam perpetrated on the american public since one hour martinizing. \n\nnewman: well, you should take a look at my rug then. \n\nkramer: i wouldnt set foot in your house. \n\njerry: hello. \n\nnewman: hello jerry. \n\njerry: hows he doing? \n\nkramer: he looks happy to me. \n\nnewman: i hope he stays this happy when he wakes up. \n\njerry: why wouldnt he? \n\nnewman: no reason. \n\njerry: hell have a lot of catching up to do, i guess. \n\nnewman: ill bring him up to date. \n\njerry: how up to date? \n\nnewman: oh, all the way up. \n\njerry: and nothing could change your mind? \n\nnewman: well, it would take a hell of a lot. because a friend is something you earn. \n\nkramer: okay, jerry has a friend who has free tickets to the cayman islands for this weekend. hes not going. \n\nnewman: i dont care much for the beach. i freckle. . . . is that a,.. \n\njerry: drakes coffee cake \n\nnewman: wow, where did you get that? \n\njerry: from my house. i got a whole box of them. \n\nnewman: boy, thats the full size. \n\njerry: thats your big boy. \n\nnewman: can i have a bite? \n\njerry: i dont give out bites. i got another one. but im saving it for later. \n\nnewman: just one bite? \n\njerry: i dont think so. you know they, theyre so fragile. \n\nnewman: all right! all right. i wont say anything. \n\njerry: you swear? \n\nnewman: i swear. \n\njerry: on your mothers life? \n\nnewman: on my mothers life. \n\nkramer: oh oh oh oh oh \n\nnewman: oooh, \n\nelaine: and there it was, mountains of duck. and not fatty duck either, but juicy tender breasts of duck. \n\ngeorge: sweetheart, no come here,  sweetheart \n\nrula: pew, pew, pew, pew (breathing) \n\ngeorge: how did i know you were here? something drew me here. this is phenomenal. \n\nrula: the nurse said she would be right back. theyre supposed to take me into the delivery room. \n\ngeorge: oh, thats great. thats great. by the way i have to apologize for my friend the other day. friend? uh, uh i dont even know that woman. i met her on the bus on the way over. i couldnt get rid of her. uh, my psychic instincts were a little off .. \n\nrula: oh, wheres the nurse \n\ngeorge: i dont know where the nurse is. sweetheart why dont you get a nurse for mommy?  anyway i was just curious. remember the other day you were saying something about my trip. \n\nrula: dont take that trip. \n\ngeorge: yeah, why? why? \n\nrula: (screams) eeey, beegit, beegit beegit. \n\ndx: all right, rula, its time to go. \n\ngeorge: because? because? \n\nelaine: assassins! how dare they keep a person waiting like this!  drakes coffee cake?  give me that. \n\nnewman: jerry, you better stop her or ill tell. \n\njerry: elaine! no! no! \n\nmartin: ooooh, ahhhh, \n\ngeorge: are there terrorists on the plane? a hotel fire. is that it? malaria? yellow fever? lupus? is it lupus? \n\nnewman: he did it right in this bed, martin. right in front of you. \n\nkramer: i want my vacuum cleaner! \n\njerry: hey! \n\nnewman: it was disgusting. \n\njerry: what are you doing? were going out to dinner in ten minutes. \n\ngeorge: i never assisted in a birth before. its really quite disgusting. \n\njerry: what did she name the kid? \n\ngeorge: you wouldnt believe it. rasputin. \n\nkramer: heey! \n\ngeorge: hey. \n\njerry: hey. \n\ngeorge: when did you get back? \n\nkramer: a couple of hours ago. \n\ngeorge: so how was it? \n\nkramer: george, i would like to thank you for the greatest four days i ever spent in my life. \n\njerry: osh. \n\nkramer: they were shooting the sports illustrated swim suit issue right in the hotel pool. \n\njerry: woah. (hitting george) \n\nkramer: not only that but at the hotel they opened up this area on the beach for nude bathing and all of the sports illustrated models went down there. \n\njerry: wow! (hitting george) \n\nkramer: i was on the next blanket from elle mcpherson \n\njerry: oh! (hitting george) \n\nkramer: we played backgammon in the nude. \n\njerry: oh! (hitting george) \n\nkramer: shes a sweet kid. \n\njerry: nude backgammon with swimsuit models! \n\nkramer: oh, you know what? the second day i was there i stepped on a jellyfish. now it kind of stung my foot. thats probably what rula was trying to warn you about. \n\ngeorge: yeah, you gotta watch for the jellyfish. \n\nkramer: yeah. \n\nkramer: whats this? \n\njerry: oh, its an invitation to a house warming from martin and gina. \n\nkramer: they moved in together? \n\njerry: yeah, its some place down in the village. \n\nkramer: phew. \n\njerry: yeah. \n\nelaine: its elaine. \n\njerry: all right were coming down. \n\nkramer: hey, where ya going? \n\njerry: were taking elaine to dinner. shes got to start the fast again. um, you want to go? \n\nkramer: um, id like to but a bunch of us from the islands, well be getting together. \n\ngeorge: elle mcpherson going to be there? \n\nkramer: oh! i got to call her back. \n\ngeorge: why even try anymore? there's no sense to it. i'm never gonna meet anybody, i should just accept it. \n\njerry: oh, yes you will. \n\ngeorge: no, i won't. \n\njerry: yeah, maybe you won't. \n\ngeorge: i mean it's hard enough to meet a woman you dislike, much less like. \n\njerry: are my nostrils getting bigger? \n\ngeorge: no. why must it be so difficult? why is there all this tension and hostility? why can't i just walk up to a woman on the street and say, \"hi. i'm \n\ncynthia: there's just no men out there, you know? \n\nelaine: i know. \n\ncynthia: i mean the problem is that the good ones know they're good. and they know they're in such demand they're just not interested in confining themselves to one person. \n\nelaine: i hate the good ones. \n\ncynthia: is jerry one of the good ones? \n\nelaine: that's a good question, i think he thinks he is. \n\ncynthia: well, the mediocre ones are available, but they're so insecure about not being one of the good ones that they're always going, \"well i'm not good enough for you, what are you doing with me?\" and eventually i just go, \"you're right.\" \n\nelaine: you know, maybe you need somebody between good and mediocre. \n\ncynthia: no, maybe i need somebody who has nothing, somebody who just has to appreciate being with me because he's so desperate. \n\ngeorge: i mean it's gotten to the point where i'm flirting with operators on the phone. i almost made a date with one. \n\njerry: oh, so there's still hope. \n\ngeorge: i don't want hope. hope is killing me. my dream is to become hopeless. when you're hopeless, you don't care, and when you don't care, that indifference makes you attractive. \n\njerry: oh, so hopelessness is the key. \n\ngeorge: it's my only hope. \n\ncynthia: see, i wouldn't really mind so much, but i feel badly for my mother. i mean, if my mother weren't around, it wouldn't be so bad. but, i'm telling you, if i'm not married by the time i'm forty, i'm gonna have to kill her because it's the only fair thing to do. i just couldn't put her through that. \n\nelaine: well, at least you're not bitter. \n\ncynthia: who says i'm not bitter? \n\nelaine: aren't you too young to be bitter? \n\ncynthia: no, you can be young and bitter, just maybe not as bitter as i'm gonna be ten years from now, but i'm bitter. anyway, don't tell anyone. \n\nelaine: don't worry, your bitterness is safe with me. \n\ncynthia: um, order me a piece of cake. i'm gonna go throw up. \n\njerry: look at my hands. look. filthy from the paper. you know, they should give you a wet-nap when you buy one, like at those rib joints. \n\nelaine: so what'd you do last night? \n\njerry: went out with george, you? \n\nelaine: went out with cynthia. \n\njerry: how was it? what'd you talk about? \n\nelaine: well, you know, the usual; the federal reserve, the rainforest. cynthia thought we should nuke the rainforest, you know, get rid of it in one fell swoop so we can at least eliminate it as a subject of conversation. what about you? \n\njerry: we brushed on that. actually, george was in rare form. he just can't find anybody. \n\nelaine: i know, cynthia too. she's really given up. \n\njerry: george too. \n\njerry and elaine (together): yeah, right. \n\njerry: i've never fixed anybody up. \n\nelaine: uh, me neither and i am not about to start with george. \n\njerry: well why wouldn't you start with george? you think she's too good for george? \n\nelaine: i didn't say 'too good', did i say 'too good'? \n\njerry: well you implied it. \n\nelaine: i didn't say it. \n\njerry: because if you think she's too good for george, you are dead wrong. dead wrong. who is she? \n\nelaine: who is he? \n\njerry: he's george! \n\nelaine: she's cynthia! \n\njerry: so what? \n\nelaine: what, you don't think she's beautiful? \n\njerry: i don't know, what's with the eyebrows? \n\nelaine: you know what your problem is? your standards are too high. \n\njerry: i went out with you. \n\nelaine: that's because my standards are too low. and by the way, you know, women kill for eyebrows like that. do you know that? i mean women pluck their real eyebrows out of their head, one by one, until they're bald, jerry. bald above the eyes! and then they paint in these eyebrows to look like that. \n\njerry: well let me tell you something about george. he is fast. he can run like the wind. and he's strong. i've seen him lift a hundred pounds over his head without even knowing it. and you wouldn't know it to look at him, but george can bait a hook. \n\nelaine: he can really do that? \n\njerry: come on, let's do it, i think they'll really get along. \n\nelaine: what, are you into this? \n\njerry: yeah, come on, it's a good match. \n\nelaine: no, wait a minute, wait a minute. they're gonna be telling us how their dates went. are we gonna share that information? \n\njerry: naturally. \n\nelaine: well, wait a minute, we're gonna tell each other everything, i mean every secret? \n\njerry: everything. \n\nelaine: what if it worked out? \n\njerry (dialing): yeah right. \n\ngeorge: out of the question. out of the question! \n\njerry: why? \n\ngeorge: no! i'm not gonna do that! that's one step away from personal ads! and prostitutes! no! no, i am not going down that road! what does she look like? \n\njerry: she's good looking. \n\ngeorge: how good looking? \n\njerry: very good looking. \n\ngeorge: really good looking? \n\njerry: really very good looking. \n\ngeorge: would you take her out? \n\njerry: yes, i would take her out. \n\ngeorge: oh, you hesitated. \n\njerry: what hesitate? i didn't hesitate! \n\ngeorge: no, something's off here, you hesitated. \n\njerry: i'm telling you, she's good looking. \n\ngeorge: what about the body, what kind of body? \n\njerry: good body, nice body. \n\ngeorge: how nice? \n\njerry: nice. \n\ngeorge: just nice? \n\njerry: pretty nice. \n\ngeorge: really good? \n\njerry: really very nice and good. \n\ngeorge: what about personality? \n\njerry: good personality. funny. bright. \n\ngeorge: smarter than me? i don't want anyone smarter than me. \n\njerry: how could she be smarter than you? \n\ngeorge: alright, let's see, let's see. what else. what else. oh yeah, what does she do? \n\ncynthia: first of all, what does he do? \n\nelaine: he was in real estate, um, now, he's not working right now- \n\ncynthia: he's not working?! how come he's not working? \n\nelaine: well, um, he, he got fired. \n\ncynthia: why did he get fired? \n\nelaine: uh. why? oh, right. um, well, he tried to poison his boss. \n\ncynthia: excuse me? \n\nelaine: such a long story, cynthia, seriously, i mean he just had some problems at work. \n\ncynthia: is he nuts? \n\nelaine: no, no, no, he's a really really funny guy. \n\ncynthia: what does he look like? \n\nelaine: pardon? \n\ncynthia: what does he look like? \n\nelaine: um, well, he's got a lot of character in his face. um, he's short. um, he's stocky. \n\ncynthia: fat. is that what you're saying, that he's fat? \n\nelaine: powerful. he is so powerful, he can lift a hundred pounds right up over his head. and um, what else. what else. oh, right. um, well, he's kind of, just kind of losing his hair. \n\ncynthia: he's bald? \n\nelaine: no! no, no, no, he's not bald. he's balding. \n\ncynthia: so he will be bald. \n\nelaine: yup. \n\ngeorge: what kind of hair? \n\njerry: you know, long dark hair. \n\ngeorge: flowing? \n\njerry: flowing? \n\ngeorge: is it flowing? i like flowing, cascading hair. thick lustrous hair is very important to me. \n\njerry: 'thick lustrous hair is very important to me,' is that what you said? \n\ngeorge: yeah, that's right. \n\njerry: just clarifying. \n\ngeorge: let me ask you this. if you stick your hand in the hair is it easy to get it out? \n\njerry: do you want to be able to get it out or do you want to not be able to get it out? \n\ngeorge: i'd like to be able to get it out. \n\njerry: i think you'll get it out. \n\ngeorge: what about the skin? i need a good cheek, i like a good cheek. \n\njerry: she's got a fine cheek. \n\ngeorge: is there a pinkish hue? \n\njerry: a pinkish hue? \n\ngeorge: yes, a rosy glow. \n\njerry: there's a hue. she's got great eyebrows, women kill to have her eyebrows. \n\ngeorge: who cares about eyebrows? is she sweet? i like sweet. but not too sweet, you could throw up from that. \n\njerry: i don't think you'll throw up. *she* likes to throw up. \n\ncynthia: has he ever been married? \n\nelaine: no. \n\ncynthia: has he been close? \n\nelaine: he once spent a weekend with a woman. \n\ncynthia: he didn't really try to poison his boss? \n\nelaine: yeah, he did. \n\ngeorge: we had an incredible phone conversation. we talked for like twenty minutes. i threw away my notes in the middle of the call. you know, i thought she had a great voice timbre. is it timbre or tamber? \n\njerry: i think it's tamber. \n\ngeorge: why'd i think it was timbre? yeah, she could do voiceover commercials, why didn't you tell me about her voice? \n\njerry: i didn't notice the voice. \n\ngeorge: it's mellifluous! \n\njerry: so, saturday night. \n\ngeorge: she had to be impressed by that conversation, had to! it was a great performance. i am unbelievable on the phone. on the date they should just have two phones on the table at the restaurant, done. \n\nelaine: hi. \n\ngeorge: hey! saturday night! \n\nelaine: i know! \n\ngeorge: so, what did she say? \n\nelaine: she said you're getting together saturday night! \n\ngeorge: that's it? \n\nelaine: yeah! \n\ngeorge: she didn't mention anything about the conversation? \n\nelaine: no. \n\ngeorge: now, you see, i don't get that. we had a relaxed stimulating, great conversation, she doesn't mention it? why doesn't she mention it? \n\nelaine: what? \n\njerry: she could have mentioned the conversation. \n\ngeorge: alright, alright, i'll go on the date, but that's that. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: you know my friend, bob sacamano? \n\njerry: oh, the guy from jersey? \n\nkramer: yeah. he just got a job at a condom factory in edison. look at this, he gave me a gross. \n\ngeorge: what are you gonna do with all of them? \n\nkramer: oh, well... come on, take some, jerry. grab 'em. \n\njerry: no thanks, they look like they came out of a cereal box. \n\nkramer: come on, elaine, here, take half a bag. \n\nelaine: half a bag? what am i, a hooker? anyway, they look kind of cheap. \n\ngeorge: i'll take one. it's possible. \n\njerry: so where are they already, it's a quarter to twelve, they should be back by now, what did they do? \n\nelaine: i think they went out to dinner. \n\njerry: wait, i got another call. that must be him. [clicks over] hello? \n\ngeorge: yeah, it's me, i just got home. \n\njerry: oh, hold on. [clicks back] it's george, he just got home. \n\nelaine: yeah, yeah, i got cynthia on the other line. \n\njerry: alright, i'll call you back as soon as i'm done. \n\nelaine: remember our pact. full disclosure. \n\njerry: of course. [clicks back to george] yeah, go ahead. \n\ngeorge: alright look, i'm gonna tell you, but i made a pact with cynthia, we swore we were not going to tell you and elaine. \n\njerry: you can tell me, i'll vault it. \n\ngeorge: it's in the vault? \n\njerry: i'm locking the vault. what? \n\ngeorge: we had sex. \n\njerry: oh my god, you had sex, how did that happen? \n\ngeorge: i don't know. i closed my eyes and made a move. \n\njerry: at your apartment? \n\ngeorge: yeah. \n\njerry: she didn't stay over? \n\ngeorge: no, she left. listen, you can't mention any of this to elaine. cynthia will kill me, we made a deal. \n\nelaine: oh my god. \n\ncynthia: he was uncomfortable because it was our first time so he felt he would perform better if we did it in the kitchen. he said the kitchen is always the most sociable room in the house. and he was serious. \n\nelaine: so? how was it? \n\ncynthia: how good could it be? my head was on a hot plate. \n\nelaine: wait, i got another call, that must be jerry. \n\ncynthia: oh wait, don't you tell him any of this. \n\nelaine: yeah, ok. [clicks over] hello? \n\njerry: so, what did she have to say? \n\nelaine: what did he have to say? \n\njerry: he said they had a good time. \n\nelaine: her too. \n\njerry: oh, good. \n\nelaine: anything else? \n\njerry: nope. you? \n\nelaine: nope. \n\njerry: you sure? \n\nelaine: yup. you? \n\njerry: yeah. \n\nelaine: alright. well uh, guess everything is under control. \n\njerry: yeah. okay then. \n\nelaine: alright. goodnight. \n\njerry: goodnight. \n\ngeorge: i left three messages. i can't believe this woman. she has sex with me, leaves ten minutes later then i never hear from her again. what kind of a person does this? i mean, she used me. i feel cheap and violated. \n\njerry: well, i'm gonna do something about this. \n\ngeorge: what are you gonna do? \n\njerry: nevermind. disgraceful. leaves you sitting there on the kitchen floor like some kind of roach trap. wham, bam, thank you ma'am. sir, whatever. she's not going to get away with this. \n\ngeorge: i keep wracking my brain to try and figure out what i did. i was smart, i was funny, i made great small talk with the waitress so she could see i could relate to the commoners, you know, i'm a man of the people. \n\njerry: i'm gonna call her. \n\ngeorge: no, don't call her. \n\njerry: no, i'm calling her. \n\ngeorge: no, jerry, don't call. \n\njerry: no, forget it, i'm gonna call. \n\ngeorge: i don't want you to call. \n\njerry: get away from me, i'm gonna call her. \n\ngeorge: give me the phone! \n\njerry: george, do you wanna fight? do you wanna fight? \n\ngeorge: jerry, i'm gonna kill you! \n\nkramer: hey hey hey!! come on! jerry, george, now stop it! \n\njerry: i'll just call her when you leave! \n\ngeorge: you can't do that, it's none of your business! \n\njerry: it is so my business! \n\nkramer: hey hey hey! i don't want to hear another word out of either one of you! \n\ngeorge: but tell him to give me the-- \n\nkramer: ay ay ay! the next one of you that opens up your mouth, says something, you're gonna have to deal with me. you know, i bet i know what this is about. it's about a woman, isn't it? \n\ngeorge: no. \n\njerry: yeah, but-- \n\nkramer: yeah yeah! you see, this is exactly what they want to do to you. they play one against the other. you can't let them manipulate you like that. \n\njerry: but kramer-- \n\nkramer: noh noh noh! i want you guys to shake hands. come on, there are plenty of women out there for all of us, let's go. \n\nkramer: yes. you see? isn't that better than fighting? animosity? i mean, you wanna fight with somebody, you fight with me. oh, by the way george, you know those condoms i gave you? they're defective, don't use them. \n\ngeorge: what? \n\nkramer: right. \n\ngeorge: defective?! \n\nkramer: defective. \n\ngeorge: (attacking kramer) how could you give me a defective condom?! \n\nkramer: i didn't even know they were defective. \n\nkramer: didn't even thin you were gonna use them. \n\ngeorge: what do you mean you didn't think i wasn't gonna use them?! \n\njerry: take it easy, you guys, just spread out! don't worry about it, if anything was wrong she would have called you already! \n\ncynthia: i missed my period. \n\nelaine: oh my god. \n\ncynthia: i am very worried, i am never late. \n\nelaine: but he used a condom, right? \n\ncynthia: i know, but these things aren't always foolproof. \n\nelaine: oh no. \n\ncynthia: what? \n\nelaine: was it blue? \n\ncynthia: yeah. how'd you know? \n\nelaine: just a hunch. \n\njerry: ow! ow! twist off! twist off! twist off! \n\njerry: oh, hi. soda? \n\nelaine: no thanks. \n\njerry: so tell me. what's the problem with your little flaky friend? she doesn't return calls? \n\nelaine: who are you to talk about her like that? she'll call him when she's good and ready. you don't even know her. \n\njerry: oh, i know her. i know her type. \n\nelaine: her type? what type? \n\njerry: the type that doesn't return phone calls. i knew we shouldn't have done this, it was a bad idea in the first place, i told you! \n\nelaine: you told me? you pushed this whole thing on me, it was your idea! \n\njerry: i was just trying to help your bitter, twisted friend. \n\nelaine: she's not bitter! \n\njerry: well, bitter's a judgement call, but she's twisted! \n\nelaine: twisted? god, i did you a favor. \n\njerry: i thought you said they had a good time, is there anything else you're keeping from me? \n\nelaine: are you calling me a liar? \n\njerry: i'm calling you one if you are one, are you a liar? \n\nelaine: are you? \n\njerry: get your finger out of my face. \n\nelaine: you get yours out, i was here first! \n\njerry: i don't care. \n\nelaine: get it out! \n\nkramer: hey hey, alright, hey hey, stop it! come on, break it up! what's the matter with you? now don't you two see that you're in love with each other? i mean, why can't you face that already? you're running around out there looking for something that's not even there, when everything that you dream of is right here, right here in front of you. now why can't you admit that? by the way, when you see george give him these, these'll work. \n\nelaine: i knew those condoms were defective! \n\njerry: how did you know they were defective?! \n\nelaine: because! because she missed her period! \n\ngeorge: she missed her period? oh my god. i can't believe it! i'm a father! i did it! my boys can swim! i can do it! i can do it! \n\ncynthia: so he shows up. he's all out of breath. he's disheveled. and he tells me that no matter what happens, whatever i decide is fine with him and that i could depend on him, and that he would be there to support me in whatever way i need. elaine, i was speechless. \n\nelaine: wow. wow. you see? you think you know somebody. \n\ncynthia: i said to him, \"i really appreciate this, but i just got my period.\" and so, i asked him to come in, he came in-- \n\nelaine: hi! \n\ngeorge: sorry, we're a little late. we got so hung up in traffic. \n\nelaine: what happened? \n\njerry: acting. \n\nelaine: very mature. \n\njerry: thank you. hi cynthia. \n\ncynthia: hi. \n\njerry: well this is a great place to sit you got here. \n\ncynthia: best seat in the house. (looking at george) right next to the kitchen. \n\ngeorge: (hitting cynthia playfully with a napkin) stop it, stop it. \n\njerry: so what are these? \n\nelaine: oh, we ordered some appetizers. start eating. \n\ngeorge: (with a mouth full of food) this is good. oh, this is good. \n\nkramer: wide open, i was wide open underneath! i had three inches on that guy. you two were hogging the ball. \n\ngeorge: me? it wasn't me i never even saw the ball. all you do is dribble. \n\njerry: i have to dribble, if i give it to you, you just shoot. you're a chucker. \n\ngeorge: oh i'm a chucker. \n\njerry: that's right, everytime you get the ball you shoot. \n\ngeorge: i can't believe you called me a chucker. no way i'm a chucker, i do not chuck, never chucked, never have chucked, never will chuck, no chuck! \n\njerry: you chuck. \n\ngeroge: kramer am i a chucker? \n\nkramer: you're a chucker. \n\ngeorge: all these years i've been chuckin' and you've never told me? \n\njerry: well it's not an easy thing to bring up. \n\nkramer: hey you know this is the first time we've ever seen each other naked. \n\njerry: believe me i didn't see anything. \n\nkramer: oh, you didn't sneak a peak? \n\njerry: no, did you? \n\nkramer: yeah, i snuck a peak. \n\njerry: why? \n\nkramer: why not? hey what about you george? \n\ngeorge: yeah, i ... i snuck a peak. ... but it was so fast i didn't see anything. it was just a blur. \n\njerry: i made a conscious effort not to look. there's certain information i just don't want to have. \n\nkramer: uh, i gotta go meet newman. all right. i'll see you later. \n\njerry: all right \n\nkramer: have a good one. \n\njerry: all right \n\ngeorge: see ya. \n\ngeorge: look at this guy. does he have to stretch in here? \n\njerry: you know who that is? that's \n\ngeorge: keith hernandez? the baseball player? \n\njerry: yeah, that's him. \n\ngeorge: are you sure? \n\njerry: positive. \n\ngeorge: wow, keith hernandez. he's such a great player. \n\njerry: yeah, he's a real smart guy too. he's a civil war buff. \n\ngeorge: i'd love to be a civil war buff. ... what do you have to do to be a buff \n\njerry: so biff wants to be a buff? ... well sleeping less than 18 hours a day would be a start. \n\ngeorge: ho ho ho ho. you know i only got two weeks left of unemployment. i got to prove i've been looking for a job to get an extension \n\njerry: hey, should we say something to him? \n\ngeorge: oh, yeah i'm sure he loves to hear from fans in the locker room. \n\njerry: well he could say hello to me. i wouldn't mind. \n\ngeorge: he's keith hernandez. you're jerry seinfeld. \n\njerry: so? \n\ngeorge: what are you comparing yourself to keith hernandez. the guys a baseball player jerry, baseball! \n\njerry: i know what he is. i recognized him. you didn't even notice him. \n\ngeorge: what, ... you are making some wisecracks in a night club... wo wo wo. the guy was in game six two runs down two outs facing elimination. \n\nkeith: excuse me. i don't want to disturb you, i'm keith hernandez and i just want to tell you what a big fan i am. i love your comedy. \n\njerry: really? \n\nkeith: i've always wanted to do what you do. \n\njerry: what i do? you are one of my favorite ball players of all time \n\ngeorge: mine too. \n\nkeith: i love that bit about jimmy olson \n\njerry: thank you. \n\ngeorge: you know keith, what i've always wondered, with all these ball clubs flying around all season don't you think there would be a plane crash? ... \n\nkeith: (to jerry) do you perform anywhere in new york right now? \n\njerry: i'm performing in this club on the east side. you should come in. \n\ngeorge: but if you think about it...26 teams, 162 games a season, you'd think eventually an entire team would get wiped out. \n\nkeith: you know, i live on the east side. \n\njerry: i'll tell you what, i'll give you my number and uh, just give me a call, tell me whenever you want to go. \n\nkeith: or maybe just to get together for a cup of coffee \n\njerry: oh. that would be great. \n\ngeorge: uh, it's only a matter of time. \n\nkeith: who's this chucker? \n\njerry: it's been three days and he hasn't called. \n\nelaine: well maybe you should call him. \n\njerry: i can't ... i can't \n\nelaine: why not? \n\njerry: i don't know. i just feel he should call me. \n\nelaine: what's the difference? \n\njerry: you don't understand, elaine. i don't want to be overanxious. if he wants to see me he has my number, he should call. \n\nelaine: yech, look at this ashtray. i hate cigarettes. \n\njerry: i can't stand these guys. you give your number to them and then they don't call. why do they do that? \n\nelaine: i'm sorry honey. \n\njerry: i mean, i thought he liked me. i really thought he liked me. we were getting along. he came over to me i didn't go over to him. \n\nelaine: no, \n\njerry: why did he come over to me if he didn't want to see me? \n\nelaine: i know. \n\njerry: what did he come over to me if he didn't want to see me? i mean here i meet this guy this great guy, a baseball player, best guy i ever met in my life. .. well that's it. i'm never giving my number out to another guy again. \n\nelaine: sometimes i've given my number out to guys and it takes them a month to call. \n\njerry: hu, good, good,... well if he's calling in a month he's got a prayer! \n\nelaine: you know maybe he's been busy. maybe he's been out of town? \n\njerry: oh, they don't have phones out of town? why do(?) people say they're too busy. too busy. pick up a phone!! it takes two minutes. how can you be too busy? \n\nelaine: why don't you just go ahead and call him? \n\njerry: i can't call here, it's a coffee shop. i mean what am i going to say to him? \n\nelaine: just ask him if he wants a to get together. \n\njerry: for what dinner? \n\nelaine: dinner's good. \n\njerry: don't you think that's coming on a little too strong? .. isn't that like a turn off? \n\nelaine: jerry, he's a guy! \n\njerry: ... this is all .. very confusing. \n\nmrs. sokol: you know you only have two more weeks before your benefits run out. \n\ngeorge: yes and i was hoping ... to get a thirteen week extension. \n\nmrs. sokol: so where have you been looking for work? \n\ngeorge: well you know what i've discovered mrs. sokol. it's not so much the looking as the listening. i listen for work. and as i'm looking and listening i am also looking. you can't discount looking. it's sort of a combination. it's looking, and listening, listening and looking. but you must look. \n\nmrs. sokol: can you be specific about any of these companies? \n\ngeorge: specific, ah, lets see. i've walked in and out of so many buildings they all .. blend in together, i uh, .. \n\nmrs. sokol: well just give me one name. \n\ngeorge: absolutely, uh, lets see there's, uh, vandelay industries, i just saw them. i got very close there. very close. \n\nmrs. sokol: and what type of company is that? \n\ngeorge: latex, latex manufacturing \n\nmrs. sokol: and you interviewed there? \n\ngeorge: yes, for a sales position. latex salesman, the selling of latex, and latex related products. they just wouldn't give me a chance. \n\nmrs. sokol: i'm going to need an address and a phone number for this uh, vandelay company... \n\ngoerge: you like gum? 'cause i have a friend in the gum business. i got a gum guy. i make one phone call. i got boxes of delivered right to your door. \n\nmrs. sokol: the address! \n\ngeorge: yyyddsshe(?) ... jose jimenez. you recognize it? \n\nmrs. sokol: no. \n\ngeorge: jose jimenez, ... verrry funny. ..very funny. \n\nmrs. sokol: the address! \n\ngeorge: uh, uh, vandelay industries, is uh. 129 west 81st street. it's a very small industry vandelay. it's one of the reasons i wanted to uh, work for them. \n\nmrs. sokol: the phone number. \n\ngeorge: that's uh, kl5-8383. are you calling them soon because, they keep very strange hours. \n\nmrs. sokol: as soon as i'm done wit you! \n\ngeorge: sure, well uh, you know i'll check in with you next week uh, i gotta run now because i got a full plate this afternoon. all right, really go to uh,. \n\ngeorge: (frantically, takes phone and screams...) he'll call you back. \n\nkramer: (loungingly talking on phone) it's a par five. so you know i step up to the tee and i hit a beautiful drive right down the middle of the fairway. i mean you know my hook, right? \n\njerry: elaine, how about this shirt? is this okay? \n\nelaine: jerry, ... he's a guy! \n\nkramer: well it's a dog leg left, so i play the hook right? .. hold on there's another call. \n\ngeorge: (frantically) jerry, jerry? \n\nkramer: george? \n\ngeorge: kramer put jerry on the phone. \n\nkramer: (angrily) yeah, look i'm in the middle of something. call back. \n\ngeorge: kramer!! kramer no!! \n\nkramer: ... so the ball takes of and i'm waiting for it to turn. \n\ngeorge: hitting phone \n\nkramer: yeah, i'll talk to jerry. yeah, [hangs up] . . . you know that was michael and carol. she's wondering when we're going to come over and see the baby. \n\njerry: oh, see the baby again with the baby.. \n\nelaine: who are they? \n\njerry: uh, he's this guy who used to live in the building and they keep calling us to see the baby. \n\njerry: (imitates) ya' gotta see the babi - when are ya' gonna see the babi... can't they just send us a tape? \n\nelaine: you know if you waited a few more months it won't be a baby anymore then you wouldn't have to see it. \n\njerry: uh uh because then it would be all grown up. \n\nelaine: yeah ha ha ha \n\njerry: hey kramer what do you think of this shirt? \n\nkramer: (does a double take) it's too busy \n\nelaine: it looks like you're trying too hard to make an impression on him. you're not being yourself. \n\nkramer: what guy? \n\njerry: i know he's just a guy but .. i like him. \n\nkramer: who are you talkin about? \n\njerry: uh, keith uh hernandez. \n\nkramer: keith hernandez? \n\nnewman: (enters) keith hernandez? \n\ngeorge: do me a favor would you? would you change lanes? would you get outta this lane. you gotta get out of this lane. this lane stinks. they're all double parked here please get outta this lane. i'm beggin you please please. \n\ngeorge: you know what, bad mistake my mistake do me a favor go back to the other lane - you'll never get there - forget this lane - y'a kn ow what this lane stinks - go back to the other lane - bad decision - go go go take this light - take this light - \n\ncabby: that's it get out!! \n\ngeorge: get out? \n\ncabby: get out of my cab. \n\ngeorge: wa, i'm not getting out of this cab \n\ngeorge: no, no! you can't throw me out \n\njerry: hellooo newman. \n\nkramer: i hate keith hernandez - hate him. \n\nnewman: i despise him. \n\nelaine: why? \n\nnewman: why? i'll tell you why... \n\nkramer: let me tell it .. \n\nnewman: no, you can't tell it .. \n\nkramer: you always tell it .. \n\nnewman: all right, tell it. \n\nkramer: ja ja ja - just tell it \n\nnewman: june 14, 1987.... mets phillies. we're enjoying a beautiful afternoon in the right field stands when a crucial hernandez error to a five run phillies ninth. cost the mets the game. \n\nkramer: our day was ruined. there was a lot of people, you know, they were waiting by the player's parking lot. now we're coming down the ramp ... [cut to film of the day - like the zabruter film - with the umbrella man and everything - oh so brilliant parody!!!] ... newman was in front of me. keith was coming toward us, as he passes newman turns and says, \" nice game pretty boy.\". keith continued past us up the ramp. \n\nnewman: a second later, something happened that changed us in a deep and profound way front that day forward. \n\nelaine: what was it? \n\nkramer: he spit on us.... and i screamed out, \"i'm hit!\" \n\nnewman: then i turned and the spit ricochet of him and it hit me. \n\nelaine: wow! what a story. \n\njerry: unfortunately the immutable laws of physics contradict the whole premise of your account. allow me to reconstruct this if i may for miss benes as i've heard this story a number of times. \n\njerry: newman, kramer, if you'll indulge me. according to your story keith passes you and starts walking up the ramp then you say you were struck on the right temple. the spit then proceeds to ricochet off the temple striking newman between the third and forth rib. the spit then cam off the rib turned and hit newman in the right wrist causing him to drop his baseball cap. the spit then splashed off the wrist, pauses in mid air mind you- makes a left turn and lands on newman's left thigh. that is one magic luggie. \n\nnewman: well that's the way it happened. \n\njerry: what happened to your head when you got hit? \n\nkramer: well. uh, well my head went back and to the left \n\njerry: again \n\nkramer: back and to the left \n\njerry: back and to the left back and to the left \n\nelaine: so, what are you saying? \n\njerry: i am saying that the spit could not have come from behind ... that there had to have been a second spitter behind the bushes on the gravelly road. if the spitter was behind you as you claimed that would have caused your head to pitch forward. \n\nelaine: so the spit could have only come from the front and to the right. \n\njerry: but that is not what they would have you believe. \n\nnewman: i'm leavin'. jerry's a nut. (exits) \n\nkramer: wait, wait, (exits) \n\njerry: the sad thing is we may never know the real truth. \n\ngeorge: (frantically) did anybody call here asking for vandelay industries? \n\njerry: no. what happened to you? \n\ngeorge: now, listen closely. i was at the unemployment office and i told them that i was very close to getting a job with vandelay industries and i gave them your phone number. so, when now when the phone rings you've got to answer \"vandelay industries\". \n\njerry: i'm vandelay industries? \n\ngeorge: right. \n\njerry: and what is that? \n\ngeorge: you're in latex \n\njerry: latex? and what do i do with latex? \n\ngeorge: ya manufacture it. \n\nelaine: here in this little apartment? \n\njerry: and what do i say about you? \n\ngeorge: you're considering hiring me for your latex salesman. \n\njerry: i'm going to hire you as my latex salesman? \n\ngeorge: right. \n\njerry: i don't think so. why would i do that? \n\ngeorge: because i asked you to. \n\njerry: if you think i'm looking for someone to just sit at a desk pushing papers around, you can forget it. i have enough headaches just trying to manufacture the stuff. \n\njerry: yeah. \n\nkramer: it's keith. \n\njerry: all right we're coming down. \n\ngeorge: keith hernandez? \n\njerry: yeah, come on elaine, lets go. \n\ngeorge: where are you goin? \n\nelaine: he's giving me a ride you know there had to have been a second spitter. but who was it? who had the motive? \n\njerry: that's what i've been trying to figure out the past five years. \n\ngeorge: what the hell are you two talking about? (all exit) \n\njerry: well that was really fun, thanks. \n\nkeith: yeah, it really was. \n\njerry(mind): should i shake his hand? \n\njerry: well, ... \n\nkeith: uh, do you want to catch a movie this weekend? have you seen jfk? \n\njerry: no, i haven't. \n\njerry(mind): this weekend. wow! \n\njerry: sure, that would be great. \n\njerry(mind): damn, i was too overanxious, he must have noticed that. \n\njerry: i mean, ... if you want to. \n\nkeith: well, how about this friday? \n\njerry: yeah, friday's okay. \n\njerry(mind): go ahead shake his hand. you're jerry seinfeld. you've been on the tonight show. \n\njerry: well, good night [holds hand out and shakes hand] \n\nkeith: goodnight. oh, jer, by the way, the woman we gave a ride to earlier tonight, \n\njerry: elaine? \n\nkeith: yeah. what's her story? \n\njerry: uh, i don't know, we used to go out. \n\nkeith: would you mind if i gave her a call? \n\njerry: for a date? \n\nkeith: yeah. \n\njerry: oh, no, uh, go ahead. you got a pen? \n\nkeith: you sure you don't mind? \n\njerry: .... (silence) \n\njerry: so then we went to dinner. \n\ngeorge: who paid? \n\njerry: we split it. \n\ngeorge: split it. pretty good. talk about game six? \n\njerry: naw, i gotta wait until its just the right time. \n\njerry: yeah \n\nelaine: it's elaine. \n\njerry: come on up. \n\ngeorge: so then what? \n\njerry: uh, nuthin'. then he took me home. \n\ngeorge: shake his hand? \n\njerry: (smiling) yeah \n\ngeorge: what kind of a shake does he have? \n\njerry: good shake. perfect shake. single pump, not too hard, you know, doesn't have to prove anything, but, you know, firm enough to know he was there. \n\ngeorge: so, uh, you gonna see him again? \n\njerry: he asked me if i was doing anything friday night. \n\ngeorge: wow! the weekend. \n\njerry: so then as i was getting out of the car, ... \n\nelaine: hi \n\njerry: hi elaine. \n\nelaine: sooo, how was your date? \n\njerry: what date? it's a guy. \n\nelaine: so you know , ... he called me. \n\njerry: already? \n\ngeorge: keith called you? \n\ngeorge: he he this guy really gets around. \n\nelaine: do you mind? \n\njerry: i don't mind at all. why should i mind? what did he say? \n\nelaine: he asked me out for saturday night. \n\njerry: oh, ya' going? \n\nelaine: i told him i was busy. \n\njerry: ah, really. \n\nelaine: so, we're going out friday. \n\njerry: friday? \n\nelaine: yeah. \n\njerry: he's going' out with you on friday? \n\nelaine: yeah. \n\njerry: he's supposed to see me on friday. \n\nelaine: oh, uh, i didn't know. \n\njerry: we made plans. \n\nelaine: well, uh, i'll cancel it. \n\njerry: no, don't cancel it. \n\nelaine: huh. well this is a little awkward, isn't it/ \n\njerry: well, frankly it is. \n\nelaine: i've never seen you jealous before. \n\njerry: well you're not even a fan. i was at game six - you didn't even watch it. \n\nelaine: wait a second wait a minute, you jealous of him or you jealous of me? \n\njerry: any hennigans around here? \n\njerry: vandelay industries, kel varnsen speaking. may we help you? ... oh hi keith. na, i was just jokin' around \n\njerry: no. no. i don't mind at all. \n\nelaine: (quietly) no, no, no, i can cancel. \n\njerry: sure, we can do something next week. \n\nelaine: (quietly) i can cancel. \n\njerry: no, its no problem at all. \n\nelaine: (quietly) i,... \n\njerry: okay, take it easy. (hangs up) that was keith. we're going to do something next week. \n\nkramer: hey \n\njerry: hey what are you doing friday night? \n\njerry: friday night? nothin', ... now. \n\nkramer: okay, wanna come with me and see the baby? \n\njerry: fasten your seat belts. we're goin' to see the baby. \n\nkramer: come on, if you don't see the baby now you're never gonna see it \n\njerry: all right, i'll go \n\nkramer: all right \n\nkramer: yallo. what delay industries? \n\nelaine: no no , .. \n\ngeorge: (from bathroom) vandelay, say vandelay! \n\nkramer: na, you're way way way off.. well, yeah that's the right number but this is an apartment \n\ngeorge: (from bathroom) vandelay, say vandel... (george falls) ... vandelay industries, ... \n\nkramer: no problem, ... no problem. [hangs up] ... how did you know who that was? \n\njerry: and you want to be my latex salesman. \n\nmrs. sokol: just sign here please. \n\ngeorge: i know who it was too. it was the guy who interviewed me. he was very threatened by me. why else wouldn't he hire me? i could sell latex like that (snaps fingers). \n\nmrs. sokol: sign that. \n\ngeorge: who is this? (sees photo) \n\nmrs. sokol: it's my daughta' \n\ngeorge: this is your daughter? my god! my god! i i hope you don't mind my saying. she is breathtaking. \n\nmrs. sokol: ya' think so? \n\ngeorge: ah, would you take this picture away from me. take it away and get it outta here. let me just sign this and go. \n\nmrs. sokol: you know she doesn't even have a boyfriend. \n\ngeorge: okay, okay. who do you think you're talking to? what are ya' you trying to make a joke, because it's not funny. i can tell you that. \n\nmrs. sokol: i'm serious. \n\ngeorge: it's one think to not give me the extension but to tease and to torture me like this. there's no call for that. \n\nmrs. sokol: would you like her phone numba'? \n\nmrs. sokol: mrs. sokol i, i don't know what to say. i, uh, where should i sign this thing? \n\nmrs. sokol: no no no, don't worry about it. \n\nelaine: so tell me more about this game six. \n\nkeith: well, there was two outs, bottom of the tenth, we're one out away from losing the series. \n\nelaine: ooooh ahhh \n\nkramer: (to baby) koochie koochie koochie koo \n\njerry: (to baby) hello. how are you/ \n\ncarol: so, wadda ya' think? do you love her? \n\njerry: yes. i do love her. (to baby) you have a very nice place here. \n\ncarol: so how do you think she looks like? \n\nkramer: lyndon johnson. \n\ncarol: what? lyndon johnson? \n\njerry: he's joking. \n\nkramer: i'm not joking. she looks like lyndon johnson. \n\ncarol: jerry, i can't believe it took you so long to come see the baby. i kept saying to michael, \"when is jerry going to see the baby?\" \n\njerry: i was saying the same thing. \n\ncarol: let's take a picture. michael, get the camera. \n\njerry: uh, you don't have to take a picture. \n\nmike: i don't know where it is. \n\ncarol: it's in the bottom draw' of are dressa'. hurry up!  he's such an idiot. \n\njerry: jerry, you want to pick her up? \n\njerry: i better not. \n\nkramer: i'll pick her up. \n\ncarrie: thank you for a wonderful time george. \n\ngeorge: glad you enjoyed it. \n\ncarrie: i haven't had a big mac in a long time. \n\ngeorge: millions and millions \n\ncarrie: would you like to come up? \n\ngeorge: [pause] would i like to come up? i would love to come up. i, i'm fighting not to. fighting! unfortunately i uh have to get an early start tomorrow. gotta' get up and hit that pavement \n\ncarrie: but it's saturday. all the offices are closed. \n\ngeorge: i got me an appointment with a hardware store. i'm not saying i want to do it for the rest of my life, but, uh, hardware fascinates me. don't you love to make a key? \n\ncarrie: will you call me as soon as you get home? \n\ngeorge: [pause] tonight? \n\ncarrie: yes. \n\ngeorge: will i call you when i get home? ha ha what do you think? ee, you kill me kill me \n\ncarrie: well. good night.[puckers up] \n\nkramer: well it was an accident. right jerry it was an accident. ah, she's going to be all right. .. baby, baby, ah, baby. \n\nelaine: well, thanks for a nice evening. it was really fun. \n\nkeith: yeah, it was. [mind] gosh, should i kiss her good night? \n\nelaine: [mind] is he going to try to kiss me? \n\nelaine: i love cajun cooking. \n\nkeith: really, you know my mom's one quarter cajun. \n\nelaine: uh, my father's half drunk. ha ha ha ha \n\nkeith: maybe they should get together. [mind] go ahead. kiss her. i'm a baseball player dammit. \n\nelaine: [mind] what's he waiting for? i thought he was a cool guy. \n\nkeith: [mind] come on i won the mvp in 79. i can do whatever i want to. \n\nelaine: [mind] this is getting awkward. \n\nkeith: well, goodnight \n\nelaine: good night \n\nelaine: [mind] who does this guy think he is? \n\nkeith: [mind] i'm keith hernandez. \n\nelaine: uh, who else?  mookie. mookie was there. do you know him? \n\njerry: i don't know him. i know who he is. \n\nelaine: hum, he's such a great guy. you should meet him. you know he's the one who got that hit \n\njerry: i know. he got the hit in game six. so, so then what happened? \n\nelaine: nuthin'. then he took me home. \n\njerry: so, did you two, uh,  have uh, \n\nelaine: what?! \n\njerry: you know \n\nelaine: milk? \n\njerry: no! \n\nelaine: cookies? \n\njerry: did he kiss you good night? \n\nelaine: i dunno. \n\njerry: what do you mean you don't know? \n\nelaine: all right. he kissed me. okay? \n\njerry: well, what kind of a kiss? was it a peck? was it a kiss? was it a long make out thing? \n\nelaine: between a peck and a make out. \n\njerry: so, you like him. \n\nelaine: i don't understand. before you were jealous of me. now you're jealous of him? \n\njerry: ah, i'm jealous of everybody. \n\njerry: hello. oh, hi. what's happening?  what? oh um, sure,  um, yeah, okay, uh. i'll see you then. yeah, yeah, bye. \n\nelaine: who was that? \n\njerry: that was keith. \n\nelaine: what's going on? \n\njerry: he wants me to help him move. \n\nelaine: help him move? move what? \n\njerry: you know, furniture. \n\nelaine: so, what did you say? \n\njerry: i said yes, but i don't feel right about it. i mean i hardly know the guy. that's a big step oin a relationship. the biggest. that's like going all the way. \n\nelaine: and you feel you're not really ready for, \n\njerry: well we went out one time. don't you think that's coming on a little too strong? \n\nkramer: what's going on? \n\njerry: keith hernandez just asked me to help him move. \n\nkramer: what? well, you hardly know the guy. what a nerve. you see wasn't i right about this guy? didn't i tell you? now, you're not going to do it are you? \n\njerry: i said yes. \n\nkramer: you said yes!? don't you have any pride or self respect? i mean, how can you prostitute yourself like this? i mean what are you going to do? you're going to start driving him to the airport? \n\njerry: i'm not driving him to the airport! .. \n\nkramer: yeah yeah \n\njerry: hey kramer do me a favour . \n\nkramer: what? \n\njerry: don't mention it to anybody. \n\nkramer: i wish you never mentioned it to me. [exits] \n\ngeorge: i had a great time tonight carrie. and i am going to call you as soon as i get home. \n\ncarrie: don't bottha \n\ngeorge: bother, wa', what kind of bother? \n\ncarrie: i would prefa' it if ya' didn'. \n\ngeorge: why? is there anything wrong? \n\ncarrie: it's over buddy. done. finished. so long. good bye. adios. sayanara. \n\ngeorge: why? \n\ncarrie: i bin thinkin about it. you got no job. you got no prospects. you're like biff loman. \n\ngeorge: i went to the hardware store interview. \n\ncarrie: you think i'm going to spend my life with somebody because he can get me a deal on a box of nails? \n\ngeorge: i thought were a team. \n\ncarrie: if i ever need a drill bit i'll call you. (exits car) \n\ngeorge: carrie, could you do me a favour? could you not mention this to your mother? \n\nkramer: ya know i hate to brag but, uh, i did win eleven straight golden gloves. \n\nelaine: (chuckles) \n\nkramer: i wouldn't have brought it up but since you mentioned it. \n\nelaine: ha, i didn't mention it. \n\nkramer: well i won them anyway. \n\nelaine: well so what. i mean you played first base. i mean they always put the worst player on first base. that's were they put me and i stunk. \n\nkramer: elaine. you don't know the first thing about first base. \n\nelaine: ha ha well i know something about getting to first base. and i know you'll never be there. \n\nkramer: the way i figure it i've already been there and i plan on rounding second tonight at around eleven o'clock. \n\nelaine: well, uh, i'd watch the third base coach if i were you 'cause i don't think he's waving you in. you know i hate to say this but i think we're really hitting it off. get it? get it? \n\nkramer: funny. \n\nelaine: what are you doing? \n\nkramer: what's that? \n\nelaine: you smoke? \n\nkramer: yeah. \n\nelaine: i didn't know you smoked. \n\nkramer: is that a problem? \n\nelaine: uh, \n\njerry: she likes him i mean she really likes him. \n\ngeorge: how do you kn ow? \n\njerry: who wouldn't like him? i like him. and i'm a guy. \n\ngeorge: i suppose he's an attractive man, i , \n\njerry: forget that. he's a ball player. mvp< 1979. i'm making wise cracks in some night club. this guy was in game six. they're a perfect match. they like go together. they're like one of these brother and sister couples that look alike. \n\ngeorge: hate those couples. i could never bee one of those couples. there are no bald woman around. you know? \n\njerry: you know i know this sounds a little arrogant but i never thought she would find anyone she would like better than me. ya know, i guess i had my chance and that's that. \n\ngeorge: you know what i would like to do? i would really like to have sex with a tall woman. i mean really tall. like a like a giant like six five. \n\njerry: really? \n\ngeorge: what was the tallest woman you ever slept with? \n\njerry: i don't know  six three. \n\ngeorge: wow,  god! you see this is all i think about. sleeping with a giant. it's my life's ambition. \n\njerry: so i guess it's fair to say you've set different goals for yourself than say, thomas edison, magellan, these types of people. \n\ngeorge: magellan? you like magellan? \n\njerry: oh, yeah,. my favourite explorer. around the world. come on. \n\ngeorge: who do you like? \n\ngeorge: i like desoto. \n\njerry: desoto? what did he do? \n\ngeorge: discovered the mississippi. \n\njerry: oh. like they wouldn't have found that anyway. \n\ngeorge: all right, i've got to go down to the unemployment office. wanna take a walk? \n\njerry: no i can't i've got some stuff to do then i've got to meet keith at my apartment at three. i'm helping him move. \n\ngeorge: what? the guy asked you to help him move? wow. \n\njerry: i know isn't that something? \n\nkramer: he's got money. why doesn't he just pay a mover? \n\njerry: i don't know  he's got some valuable antiques, he's worried they'll break something. \n\ngeorge: the next thing you know, he'll have you driving him to the airport.. \n\njerry: i'm not driving him to the airport!! \n\ngeorge: i gave. i gave everything i could mrs. sokol. but nothing was good enough for her. \n\nmrs. sokol: sign here please. \n\ngeorge: ha, i don't know who she's looking for. i don't know. i'll tell you something. she's very particular, your daughter. very particular. what is she looking for some big hot shot businessman? well i've got my pride too. i'm not going to beg her. \n\nmrs. sokol: all right just sign it. people are waiting. \n\ngeorge: you, uh, you like baseball? [picks up baseball from desk] \n\nmrs. sokol: that was autographed by the '86 mets. i saw every inning that year. \n\ngeorge: funny, cause i happen to be very good friends with keith hernandez. \n\nmrs. sokol: you know keith hernandez. \n\ngeorge: know him? would you, uh, like to meet him? \n\nmrs. sokol: oh, come on. come on. \n\ngeorge: i can produce keith hernandez right here within the hour. \n\nmrs. sokol: all right. you got one hour. \n\ngeorge: all right mrs. s. i and my good pal keith hernandez will be right back. \n\ngeorge: 129 west 81st street and hurry. \n\ngeorge: goodbye (exits cab) \n\nkeith: better bring your gloves, it's freezing out there. it shouldn't take too long. i'd say maybe, oh, four hours. really though, jerry, there's not that much. first we got the bedroom, we got two dressers and the bed. \n\njerry: is there a box spring? \n\nkeith: what's that? \n\njerry: is there a box spring? \n\nkeith: yeah there's a box spring but it's attached to the headboard and we'll have to take that apart. then we got the couch. \n\njerry: is that a sectional? \n\nkeith: yeah. twelve pieces. <not clear> coffee table. \n\njerry: is that a thick marble? \n\nkeith: three inches thick. got it in italy. but the big problem is going to be the convertible sofa. you see when you move it it tends to open up so it's going to be real difficult getting it down the stairs. \n\njerry: stairs??? there's no elevator? \n\nkeith: nah, it's a brownstone. three floors. \n\njerry: i'm sorry i can't do this. i can't do it. i can't. it, it's too soon. i don't know you. i can't help you move. i'm sorry. i can't. i just can't. \n\nkramer: hello. \n\nkeith: hello. \n\nkramer: oh, you don't remember me. \n\nkeith: no should i [continuity error in fact he should from the basketball game] \n\nkramer: yeah, you should. i certainly remember you. let me refresh your memory. \n\nnewman: june 14th, 1987. mets phillies. you made a big error. cost the mets the game. then you're coming up the parking lot ramp. \n\nkeith: you said, \"nice game, pretty boy.\" \n\nkramer: ah, you remember. \n\nnewman: and then you spit on us. \n\nkeith: hey, i didn't spit at you. \n\nnewman: oh, yeah, right. \n\nkramer: no no no, well, then who was it? \n\nkeith: well lookit, the way i remember it (back to the grainy 8mm film parody) i was walking up the ramp. i was upset about the game. that's when you called me pretty boy. it ticked me off. i started to turn around to say something and as i turned around i saw roger mcdowell behind the bushes over by that gravely road.  anyway he was talking to someone and they were talking to you. i tried to scream out but it was too late. it was already on its way. \n\njerry: i told you! \n\nnewman: wow, it was mcdowell. \n\njerry: but why? why mcdowell? \n\nkramer: well, maybe because we were sitting in the right field stands cursing at him in the bullpen all game. \n\nnewman: he must have caught a glimpse of us when i poured that beer on his head. \n\nnewman: it was mcdowell. \n\nkramer: oh boy. uh, look uh, keith, uh, we're sorry. \n\nnewman: yeah, i couldn't be sorrier. i uh. \n\nkeith: look guys, don't worry about it, i uh, well i guess i better get going. \n\nkramer: wait, uh what are ya' doing? \n\nkeith: i gotta move. \n\nkramer: want any help? \n\nkeith: i'd love some. \n\nkramer: i'd love to help you move. \n\nnewman: me too. \n\nkeith: ok guys, we gotta be careful of one thing. some of the stuff's very fragile we're going to have to handle it like a baby. \n\nkramer: no sweat. \n\njerry: hello,  oh hi elaine .. what's going on  no he just left  you broke up with him?  me too .. what happened?  oh smoking you know you're like going out with c. everet coope  me  nah  i couldn't go through with it  i just didn't feel ready  so what are you doing now?  oh, great idea, i'll meet you there in like thirty minutes. okay bye. \n\ngeorge: keith, keith wa what happened? where's keith? \n\njerry: you just missed him. he just left. what do you need him for? \n\ngeorge: (out the window) keith, keith, up here. can you do me a favor? i need you to go to the unemployment office with me. i, i'm jerry's friend  the guy from the locker room,  i'm the chucker. it'll take five minutes. wait. wait. \n\njerry: well biff/ what's next? \n\ngeorge: i don't know. \n\ntall girl: excuse me. i was walking behind you and you dropped your wallet. \n\ngeorge: it's all departures. i see nothing but departures. (to the woman beside him) do you know where the arrivals are? \n\ngeorge: excuse me, sir, do you have the time? \n\nman: there's a clock over there. \n\ngeorge: where? \n\nman: (pointing) there. \n\ngeorge: but you have a watch on. \n\nman: it's right by the escalator. \n\ngeorge: why don't you just look at your watch? \n\nman: i told you, it's right over there. \n\ngeorge: let me see the watch. \n\nman: hey! what are you, some kind of nut?! \n\ngeorge: you know we're living in a society! \n\njerry: george. \n\ngeorge: jerry. jerry. \n\njerry: sorry, the flight was delayed, how long've you been waiting? \n\ngeorge: i just got here. my car broke down on the belt parkway. \n\njerry: oh i can't believe-- why don't you get rid of that piece of junk. \n\ngeorge: one mile from the exit it starts shaking, really violently shaking, like it's having a nervous breakdown. it completely stopped dead. \n\njerry: so you have no car? \n\ngeorge: no. \n\njerry: so what good are you? \n\njerry: i'll tell you one thing, this chauffeur's gonna be waiting a while, o'brien's not showing up. \n\ngeorge: how do you know? \n\njerry: he was in chicago, the flight was overbooked, wouldn't let him on the plane. he kept screaming how he had to get to madison square garden. \n\ngeorge: we should take his limo. \n\njerry: yeah, right. \n\ngeorge: wait a second. think about it. he's not showing up. wait till you see the line of cabs, its like forty-five minutes long. you said he's in chicago. \n\njerry: he's definitely in chicago. \n\ngeorge: well the guy's just standing there. \n\njerry: how would we do it? \n\ngeorge: we just go up to him, we say, \"we're o'brien.\" \n\njerry: maybe he knows o'brien? \n\ngeorge: no, he doesn't know o'brien, if he knew o'brien he wouldn't have a sign. let's just do it. \n\njerry: what if we get caught? \n\ngeorge: what's gonna happen? they can't kill us. \n\njerry: who's gonna be o'brien? \n\ngeorge: i'll be o'brien. \n\njerry: who am i? \n\ngeorge: you're you. \n\njerry: just me? \n\ngeorge: yeah. \n\njerry: okay. \n\ngeorge: what, you don't want to be you? \n\njerry: well if you're gonna be o'brien, why can't i be somebody? \n\ngeorge: like who? \n\njerry: dylan murphy. \n\njerry: what, now you wanna be dylan murphy? \n\ngeorge: well i like dylan. \n\njerry: you could be colin. \n\ngeorge: colin o'brien. \n\njerry: i'm dylan murphy. \n\ngeorge: i'm colin o'brien. \n\ngeorge: are we really doing this? \n\njerry: come on, \n\nman: (to george) hey, do you have the time? \n\ngeorge: clock over there. (to chauffer) o'brien. \n\nchauffeur: yes sir. \n\ngeorge: sorry we're late. \n\nchauffeur: here let me take that for you. \n\ngeorge: oh thank you. \n\nchauffeur: i'll get the car and i'll bring it around front. \n\ngeorge: thank you very much. dylan? \n\njerry: colin? \n\ngeorge: this is incredible! this is one of the greatest things i've ever done in my life! i'm gonna call my mother. \n\njerry: what for? \n\ngeorge: i dunno, i'm in a limo. (dials) hello ma? it's me. guess where i am. in the back of a limo. no, nobody died. it's a long story, i can't tell you now. because i can't. i said i can't. if i could, i would. would you stop it? alright, look, i'm getting off. no, i'm not telling you! how's this? i'm *never* telling you! i don't care! no! fine! never!! \n\njerry: she happy for you? \n\ngeorge: can he hear us? \n\njerry: no. why? \n\ngeorge: i thought i saw him look in the mirror suspiciously. \n\njerry: he can't hear us. \n\ngeorge: let's test him. hey, driver. what do you say we stop off, pick up your sister, have a little fun back here? no, he can't hear us. \n\njerry: where's he dropping us? maybe we can get him to drop us right at my house? \n\ngeorge: we'll ask him. (opens partition) my dear fellow, where are you dropping us? \n\nchauffeur: madison square garden, of course. i have the four passes. \n\ngeorge: of course, the uh, the four passes. (closes partition) four passes to madison square garden? wait a minute. wait a minute! of course! chicago! the knicks are playing the bulls tonight! \n\njerry: what? \n\ngeorge: we are going to the knick game! michael jordan! \n\njerry: we're going to the knick game! \n\ngeorge: did i tell you?! did i tell you?! \n\njerry: i can't believe it! you may have hit with this one! \n\ngeorge: you see, you see? i see things as they are and i say, 'no!' uh, wait, you see things as they are not and you s- wait, uh, you see things, do you see things as they are? what do you say when you see things? \n\njerry: lemme call elaine and kramer. \n\ngeorge: if i see things as they are, i would ask 'why' or 'why not?' \n\njerry: elaine? it's me. what are you doing tonight? great. george and i have tickets, four free passes to the knicks-bulls game, madison square garden. can you go? great, listen, call kramer, tell him to meet us on the corner at seven o'clock. alright. we're gonna pick you up in a limo. that's right baby-doll. hey listen, when we pick you up, i'm murphy and george is o'brien. i can't tell you now, it's a long story. i am serious. okay. okay bye. (opens partition) 'scuse me, driver, we have to make a little stop first. \n\nchauffeur: i know. \n\njerry and george: he knows? \n\ngeorge: where are we going? why are we pulling off here? \n\njerry: maybe it's a shortcut. \n\ngeorge: we're on the grand central, there's no traffic. \n\njerry: (opens partition) 'scuse me, driver, why are we getting off this exit? \n\nchauffeur: pick up the other members of your party. \n\ngeorge: right. the other members of our party. (closes partition) other members of our party? what other members of our party? i didn't even know we were in a party. oh, i'm telling you, the jig is up. \n\njerry: it was a bad jig to begin with, we never should have started this jig. \n\ngeorge: it was a good jig. \n\njerry: it was a bad jig, a terrible terrible jig. what are we gonna do now? they're gonna know you're not o'brien. \n\ngeorge: there could be more than one o'brien on a plane who ordered a limo. \n\njerry: first of all, you don't look like any o'brien, period. \n\ngeorge: well you should have been o'brien. \n\njerry: i don't want to be murphy anymore; do i still have to be murphy? \n\ngeorge: yes, you have to be murphy. \n\njerry: it makes no sense now, me being murphy. \n\ngeorge: you're murphy! \n\njerry: i'm seinfeld! \n\ngeorge: you're murphy!! look, let's just jump out of the car. \n\njerry: we're doing sixty miles an hour! \n\ngeorge: so we jump and roll, you won't get hurt. \n\njerry: who are you, mannix? \n\ngeorge: we're slowing down. are those the people? \n\njerry: alright put your hands up over your face, pretend you're sleeping. \n\nwoman: (reaches out to jerry) mr. o'brien? \n\njerry: no, i'm, uh, dylan murphy. mr. o'brien had a long trip, he's sleeping. \n\neva: (whispering) oh, well i don't want to disturb him. we're just rather excited to meet him face to face, finally. we're faithful readers of his newsletter. \n\njerry: newsletter? \n\ntim: and of course, his great book, \"the game\". \n\njerry: oh, yes, he's very proud of his work in the big game. so you've never uh, met him before? \n\neva: no. \n\njerry: never seen a picture of him? \n\neva: never. \n\njerry: not even on the book jacket? \n\neva: there was no picture on the book jacket. \n\njerry: (nudging george) hey o'brien, wake up, c'mon, we got company. wake up. \n\ngeorge: hello. i'm o'brien. \n\nkramer: hey! \n\nelaine: hey! \n\nkramer: what, you took a cab? \n\nelaine: yeah? so? \n\nkramer: how much do you make? \n\nelaine: i'm not telling you. \n\nkramer: c'mon. \n\nelaine: no! \n\nkramer: i'll tell you how much i make. \n\nelaine: i know how much you make. i don't even know why i'm doing this, i don't even like basketball. \n\nkramer: you ever seen michael jordan? \n\nelaine: just in those commercials. \n\nkramer: maybe you'll see him do one of those three-sixty dunks. \n\nelaine: what's that? \n\nkramer: oh, it's like this, here, you guard me. \n\nelaine: huh? \n\nkramer: yeah. \n\njerry: (checking his watch) i don't think we're gonna make the tip off. \n\ntim: you think someone's been tipped off? \n\ngeorge: so, um, you've read \"the big game\", have you? \n\neva: (fawning) yes i've read it and i've memorized it. \n\ngeorge: tell me your impressions, i would love to hear what a young woman thinks of \"the big game\". \n\neva: well, this is sort of embarrassing, but it's changed my life. the way you analyzed the game? the way you identify the major players? well it left me breathless. you're a brilliant, brilliant man. \n\ngeorge: well, it's just a game. remember that, kids. \n\ntim: just a game. he's so humble. don't forget what you wrote in the epilogue, the fate of the world depends on the outcome of this game. \n\ngeorge: well, i was exaggerating a bit, just for effect. \n\njerry: he tends to exaggerate. \n\ngeorge: okay, i mean it's serious but-- \n\neva: we are really looking forward to your speech tonight. \n\ngeorge: uh, my speech? \n\neva: yes, your secretary faxed me the copy. would you like to look it over? \n\njerry: well you might as well look it over. \n\nkramer: so what's going on, how did all this happen? \n\nelaine: jerry and george called me from this limo and they said we're all going to the knicks-bulls game. \n\nkramer: limo? i thought that george went to pick him up. \n\nelaine: he did. \n\nkramer: well then why would they take a limo from the airport? \n\nelaine: i don't know. \n\nkramer: that's pretty strange. did he say anything else? \n\nelaine: yeah. he said, um, he said it's really important that we call them o'brien and murphy. \n\nkramer: o'brien. why would he want to be called o'brien? \n\ngeorge: ...and the jews steal our money through their zionist occupied government and use the black man to bring drugs into our oppressed white minority communities. \n\njerry: you're not going to open with that, are you? \n\neva: what was that you said about the myth of the holocaust? \n\ngeorge: i said so many things. \n\ngeorge: they're shooting! they're shooting! \n\ntim: (pulling out a gun) alright, get down! \n\ngeorge: that's really very nice of you, eva. thank you. \n\neva: but of course you know i would. i would do anything for you. anything. \n\ntim: nothing to worry about, it was just a flat tire. but rest assured, we're prepared to handle anything that might come up. \n\njerry: nice looking lugar. \n\njodi: i'm standing in front of the paramount adjacent to madison square garden where a growing number of vociferous and angry demonstrators are gathering to protest the very first public appearance of donald o'brien, the leader of the midwestern regional chapter of the aryan union, and reputed to be their most charismatic spokesman. the reclusive mr. o'brien is an advocate of the violent overthrow of the government. he has openly professed a deep admiration of adolf hitler. even david duke has denounced him as a dangerous extremist. there is a full house inside awaiting his arrival from the airport. sources tell me he is in route and should be arriving momentarily. police have set up barricades, but quite frankly bill and jean, i don't think they're any match for the emotional fuse that has been lit here tonight. reporting from the paramount, i'm jodi baskerville, back to you in the studio. \n\nkramer: something's very strange. george goes to the airport to pick up jerry. they come back in a limo with four tickets to the basketball game and wanna be called o'brien and murphy? o'brien. o'brien, why o'brien? \n\ndan: elaine? \n\nelaine: dan! oh, hi dan, how are you? \n\ndan: good. \n\nelaine: um, oh, this is um, kramer. \n\ndan: oh, kramer? \n\nelaine: what's going on? \n\ndan: oh, we're heading down to protest this big neo-nazi rally. the head of the aryan union is speaking, he's in from chicago. you should come. \n\nelaine: oh, can't, i'm going to the knicks-bulls game. \n\ndan: oh, well that's where the rally is. the paramount, right next door. \n\nelaine: oh, well, maybe we'll run into you. \n\ndan: yeah, yeah ok. it's really gonna be something, this is the first time he's ever appeared in public, no one even knows what he looks like. \n\nkramer: who? \n\ndan: the head of the aryan union; o'brien. \n\njerry: what's taking him so long out there? \n\ngeorge: didja see the way she was looking at me? \n\njerry: she's a nazi, george. a nazi! \n\ngeorge: i know, i know. kind of a cute nazi though. \n\njerry: well we gotta make a plan before they come back, what are we gonna do? \n\ngeorge: i don't know. \n\njerry: let's just make a run for it. \n\ngeorge: i can't run, i have a bad hamstring. \n\njerry: how'd that happen? \n\ngeorge: i hurt it in a hotel room. you know where they tuck the covers in real tight in those hotel rooms? i can't sleep like that so i tried to kick it out and i pulled it. \n\njerry: i know, why do they make that bed so tight? you gotta sleep with your feet like that. \n\ngeorge: for a mental patient. wait a minute, the phone, we'll call the police. \n\ngeorge: 9... 1... 1. she said she'd do anything. hello, police? uh, yeah listen, we're in the back of a limo in queens-- \n\ngeorge: --astroturf? you know who's responsible for that, don't you?! the jews! ah, the jews hate grass. they always have, they always will. \n\ntim: we'll be ready in a minute. \n\ngeorge: would you excuse us for a minute tim boy, we're kind of in the middle of something. \n\ntim: with all due respect, mr. o'brien, we're just about to leave. \n\ngeorge: tim, who's the head of the aryan union, you or me? \n\ntim: you are. \n\ngeorge: and who's responsible for making hate mongering and fascism popular again? \n\ntim: you are. \n\ngeorge: good. i think you forgot something. \n\ntim: i'm sorry. \n\ngeorge: good. now get out. \n\ngeorge: okay, what are we gonna do? \n\njerry: i don't know. \n\ngeorge: alright, how's this? we wait till we get to your street corner, we see elaine and kramer then we get out. they can't shoot us in the city. \n\njerry: nah. no one's ever been shot in the city. \n\nkramer: i'm telling you, something's going on. i can feel it, sense it. \n\nelaine: i'm sure he was just joking around. \n\nkramer: oh no no no, this is no joke. o'brien's coming in from chicago, jerry's in a limo, says he's o'brien? that's not funny. oh my god. yes. yes! \n\nelaine: what is it? \n\nkramer: don't you see? there's always been something very strange about jerry, always so clean and organized. do i have to spell it out for you? the limo? the name? the rally at madison square garden? jerry, o'brien are the same person. jerry is the leader of the aryan union! \n\nelaine: jerry's a nazi?! \n\nkramer: i can't believe i didn't see it. \n\nelaine: listen, you idiot! just calm down! i know jerry, he's not a nazi. \n\nkramer: you don't think so. \n\nelaine: no, he's just neat. \n\ntim: you know it's funny. you don't look like an o'brien. \n\ngeorge: me?? \n\ntim: and you really don't look like a murphy. \n\njerry: i may not look like a murphy but i act like a murphy. \n\ngeorge: he's extremely murphy. he's murphy to a fault. \n\ntim: where are you from? \n\njerry: dublin. originally. parents came over here when i was eighteen. cereal famine. couldn't get a bowl anywhere. bad. 'tis a beautiful country though; lush rolling hills, and the peat, ah the peat. \n\ntim: sounds more like scottish. \n\njerry: we were right on the border. \n\nkramer: maybe he's with the company. \n\nelaine: what? \n\nkramer: the cia! maybe they placed him in there to infiltrate the organization from within. \n\nelaine: what about his comedy act? \n\nkramer: that's the perfect cover! all that time on the road? look jerry, he's too normal to be a comedian. these comedians, they're sick, neurotic people. \n\nelaine: what about george? \n\nkramer: what about him, he's part of it. his whole personality is a disguise. no real person can act the way he does. elaine, i'm telling you they're with the organization. they're all part of it. he's in there with helms and hunt and liddy, that whole crowd. george and jerry, they probably know who killed kennedy! \n\nelaine: i'll bet they were even in on it. \n\nkramer: alright, what are we gonna do? i'm not gonna let him hurt you. (grabs and hugs elaine tightly) i'm not gonna. \n\nelaine: kramer, you're hurting me! \n\ngeorge: those are my friends i was telling you about. we're gonna talk to them, pull over. \n\nelaine: get off of me!! \n\nkramer: o'brien. \n\nman #1: o'brien? is that him? \n\nman #2: yeah, that's him. \n\nman #3: look there's o'brien! \n\nman #4: filthy nazi bastard! \n\nall four men: let's get him!! \n\ngeorge: what do i do?! what do i do?! \n\njerry: get in the car! get in the car! \n\nkramer: (pointing to jerry) o'brien. long time no see. how's tricks, murphy? \n\ntim: why did you call him o'brien and him murphy? \n\njerry: no, he was talking to me, he's cross-eyed. \n\nelaine: it could be very confusing. \n\nkramer: yeah? eva? \n\neva: it's for me. (takes phone) hello? (cups receiver) it's o'brien. \n\nkramer: o'brien? well that's weird. \n\neva: (gun drawn) who are you? \n\njodi: a limousine has just pulled up it's being surrounded by a huge group of protestors, this has the makings of a very ugly scene. \n\njodi: they are banging on the car, trying to flip it over. the police seem unable or unwilling to control the crowd, i would imagine mr. o'brien must be having some very grave doubts if he made the right choice for his first public appearance. \n\neva: get out!! \n\nelaine: look, it's dan! hi dan! \n\ndan: elaine? \n\nelaine: hey! \n\ngeorge: i am not o'brien! i am not o'brien! i'm not o'brien! ask anyone! jerry?! jerry?!! \n\nelaine: you know it's bad enough you have a car phone, you have to use the speaker? \n\njerry: it's safer! plus it's more annoying to the other person. \n\njerry: oh look at this guy. \n\nelaine: what's goin' on? \n\njerry: oh there's a guy trying to get in front of me, he has to ask permission. yes. go ahead. get in, get in. \n\nelaine: did you get a thank you wave? \n\njerry: no, nothing. how could you not give a thank you wave? hey buddy! where's my thank you wave? \n\njerry: give me that wave! \n\nelaine: jerry, are you free on friday? \n\njerry: yeah, i'm free, why? \n\nelaine: ah, god, i bumped into robin sandusky today, she asked me to have dinner with her and her husband. \n\njerry: oh my god! you won't believe what i just saw! a car just bashed into a parked car, and sped off, right on my block! \n\nelaine: you gotta follow that car! \n\njerry: what? \n\nelaine: you can't let him get away with that! \n\njerry: elaine, the guy could be dangerous. \n\nelaine: what are you, yellow? \n\njerry: i'm not yella. (in a cowboy voice) \n\nelaine: jerry, if you don't follow him, you're yella. \n\njerry: wait, he stopped, he's parking. \n\nelaine: what? what? i can't hear you. jerry? \n\njerry: uh, excuse me, uh, i was uh, driving behind you, uh, a few blocks back, and i, i couldn't help, uh, maybe you didn't realize, uh, i witnessed that, uh, um, you're tire's a little low. that can affect the performance of the twin high-beam suspension, not to mention your rack and pinion steering. \n\njerry: so i wound up going out for a decaf cappuccino with her. \n\ngeorge: boy! what a story! i'm speechless. speechless. i have no speech. \n\njerry: you know, i really liked her. we talked. we flirted. and when she left, she reached out and touched my arm. \n\njerry: he, he, he. (simulating her feminine laugh) \n\ngeorge: i love when they touch your arm. i can't get enough of that. why is that? \n\njerry: let's not even analyze it. \n\ngeorge: so you didn't turn her in? \n\njerry: i wanted to but i couldn't go through with it. \n\ngeorge: gonna see her again? \n\njerry: friday night. \n\njerry: yep. \n\nelaine: it's me! \n\njerry: come on up. \n\njerry: by the way, elaine does not need to know about anything. \n\ngeorge: hey, hey, hey! i dig. \n\njerry: oh, you dig? \n\ngeorge: yes! i see enormous potential here. \n\njerry: why? \n\ngeorge: because great couples always have a great story about how they met. that's why i've never been in a long term relationship. i've never had a good meeting story. \n\njerry: i wonder if i'm nuts for pursuing this woman at all. \n\ngeorge: i don't think so. \n\njerry: look, she slammed into a parked car! she took no responsibility for mutilating the property of a stranger, then she sped off like a criminal! \n\njerry: on the other hand, does that mean she should never be allowed to date again? you scratch one car and you're forbidden to have social contact for the rest of your life?! \n\njerry: what am i drinking, milk? \n\nelaine: hey! \n\njerry: hi. \n\nelaine: sweater. \n\njerry: thank you. \n\nelaine: so? what happened? \n\njerry: with that? \n\nelaine: with the car! \n\njerry: what car? \n\nelaine: the hit and run! \n\njerry: oh, right, right, right, right, right, right, right, the hit and run. well. actually, the guy went into queens. \n\nelaine: queens?! you followed him over the bridge? \n\njerry: over the bridge. (making a pointing motion with his hand) \n\ngeorge: oh, well i didn't know you went into queens jerry. \n\njerry: yeah, queens. \n\nelaine: so? then what? \n\njerry: so he gets out of the car, i say, \"hey buddy! i saw you hit that car!\" so he says to me, \"what are ya gonna do about it?\" \n\njerry: so i said to him, \"whatever's necessary.\" \n\nelaine: i am speechless. i am without speech. \n\ngeorge: tell her about the shoving. \n\njerry: what? \n\nelaine: what shoving?! \n\njerry: oh, it was nothing. \n\ngeorge: no! tell her. \n\njerry: well he kinda lost his temper, and he was pushing me up against the car. so i went into a karate stance. (jerry assumes karate position and does two punches) \n\nelaine: you know karate?? \n\njerry: i know a little. \n\nelaine: well, this is so, amazing to me! jerry what did do? \n\njerry: he backed off. pretty pathetic actually. \n\nkramer: hey! (group does likewise) \n\nelaine: did you tell kramer? \n\njerry: ah, nah! (waving his hand and walking away) \n\nkramer: what? what? what? tell me. \n\nelaine: jerry saw this guy crash into a car, and he followed him. \n\nkramer: good for you! what kind of a sick lowlife would do a thing like that? you know those people, you know they're mentally disturbed. (pointing a finger at jerry) \n\nkramer: they should be sent to australia. \n\njerry: australia? \n\nkramer: yeah, yeah, that's where england used to send their convicts. \n\njerry: but not anymore. \n\nkramer: no. \n\nelaine: hey kramer, kramer! \n\nkramer: yeah? \n\nelaine: what happened to you right here? (she pointing to her forehead) \n\nkramer: i don't know! \n\nkramer: you know i was watching entertainment tonight, and uh, suddenly i got dizzy. and the next thing i know i hit my head on the coffee table. \n\nelaine: well, that is, that is strange. \n\nkramer: yep. (mumbles off) \n\nelaine: alright, oh jerry, we're still on for friday night, right? \n\njerry: oh friday, i can't, i'm sorry, i have a date. \n\nelaine: but last night you said you were free! (sounding very disappointed) \n\njerry: we just met. \n\nkramer: maybe it was a reaction to the sardines. \n\nelaine: but i, i can't go alone! \n\njerry: ask george to go with you. \n\nelaine: george, come on! i'll pay for you. \n\ngeorge: you'll pay? i'm there. \n\njerry: why do you even need anybody? \n\nelaine: because i hate being at a table alone, with a married couple. talking about their married friends, and their married furniture. they're always trying to make me feel like their life is so much better than mine. you know, i have a very exciting life. it's very exciting. (as she's closing the door to leave) \n\nrobin: you went out with a bullfighter? \n\nelaine: yes, well, an ex-bullfighter now. \n\nmichael: wow. \n\nrobin: what was his name? \n\nelaine: his name? name, um, his name was uh, uh, eduardo carochio. \n\ngeorge: pass the salt please. \n\nrobin: where did you meet him? \n\nelaine: um, actually, i met him in switzerland, and he was fighting uh, is that the word they use? fighting? because they don't really fight the bull, they avoid fighting the bull. \n\ngeorge: bread. \n\nelaine: i just love meeting new people. you know that's how you really do learn about life. \n\ngeorge: god bless you. \n\nrobin: thank you. \n\ngeorge: i wasn't going to say anything, but then i could see that he wasn't going to open his mouth. (chuckles) \n\nwoman: you know who's a good actor? anthony quinn. \n\njerry: oh, anthony quinn, fine actor. but from what i understand, not a very good driver. hits everything on the road. but always leaves a note. \n\nwoman: did you ever see zorba the greek? \n\njerry: excellent film. in fact quinn said he never felt so good as when he left a note after smacking into a car. \n\nwoman: come here. (moves in for a kiss) \n\ngeorge: really, i was, i was only kidding around. \n\nrobin: he was only joking michael. \n\nmichael: you think you're so damn special because you say 'god bless you'? \n\ngeorge: no, no, i don't think i'm special. my mother always said i'm not special. \n\nrobin: he was only joking michael! sorry. \n\nmichael: all right! take his side! \n\nrobin: i am not taking his side. \n\nmichael: well who's side are you taking?! \n\nrobin: well i'm not taking your side! \n\njerry: kirk douglas. now there's another very bad driver. but he's such an unbelievable guy, that when he hits someone, he doesn't even leave a note. he sits in his car and waits for the other person to show up so he can exchange license, registration, and apologize. \n\ngeorge: i said 'god bless you'. was that so wrong? \n\njerry: the question is, did you allow a space for the husband to come in with his 'god bless you'? because as the husband, he has the right to first refusal. \n\nelaine: it's me. \n\njerry: come on up. \n\ngeorge: yes, yes, i definitely waited. but let me say this once he passes on that option, that 'god bless you' is up for grabs. \n\njerry: no argument. unless, she's one of these multiple sneezers, and he's holding his 'god bless you' in abeyance, until she completes the series. \n\ngeorge: well i don't think she is a multiple sneezer, because she sneezed again later, and it was also a single. \n\njerry: what if she's having an off night? \n\nelaine: hi! \n\njerry: hi. \n\nelaine: well! if it isn't mister gesuntheit! \n\ngeorge: oh ya, like there's something wrong with saying 'god bless you'. i was raised to say 'god bless you'. \n\ngeorge: ah, shut up. \n\nelaine: what does it mean anyway? 'god bless you'. it's a stupid 'stuperstition'. \n\njerry: a stupid what? \n\nelaine: whatever. \n\njerry: you know, if you want to make a person feel better after they sneeze, you shouldn't say 'god bless you', you should say, 'you're soo good lookin''. \n\nelaine: yeah, yeah, that's better than 'god bless you'. anyway, she left a message on my machine, she wants you to call her. \n\ngeorge: who? \n\nelaine: robin! \n\ngeorge: why?! \n\nelaine: well i assumed she called to apologize, that's why she called me. \n\njerry: entertainment tonight's on. \n\ngeorge: where's the remote phone? \n\njerry: bedroom. \n\nelaine: hey, grab jerry's sweater for me, would you? \n\njerry: what's it like out? \n\nelaine: chilly out. \n\njerry: can i take a sweater? \n\nelaine: yeah, you can take a sweater if you want to. \n\njerry: scarf? \n\nelaine: nah, hey, shut this off, shut it off. \n\njerry: what's the matter? what's going on? \n\nkramer: what happened?! \n\nelaine: what? \n\nkramer: i think i hit my head again! \n\njerry: what is wrong?! \n\nelaine: hey, hey, wait a minute! let me ask you something. kramer, the last time you hit your head, was mary hart on tv? \n\nkramer: yeah. \n\nelaine: that is it! \n\nkramer: what? \n\nelaine: that is it! mary hart's voice, don't you see? there's something about mary hart's voice that's giving you seizures. just like, just like, just like that woman in albany! \n\nkramer: mary hart! \n\ngeorge: god. \n\nelaine: what? \n\ngeorge: well she apologized, and then she wanted to know if we could get together wednesday afternoon. \n\njerry: get together? \n\ngeorge: maybe she just wants to talk to me? \n\nelaine: married women don't 'get together'. they have affairs. \n\ngeorge: oh my god, an affair. that's so adult. it's like with stockings and martinis, and william holden. on the other hand it probably wouldn't cost me any money. \n\nelaine: are you actually considering this? \n\ngeorge: i can't have an affair with a married woman, that's despicable! \n\nelaine: yeah, it's like hitting a car and driving away without leaving a note. \n\njerry: yeah. \n\nkramer: hey, you know who owns that car? \n\njerry: what car? \n\nkramer: the one that was hit a couple of nights ago. \n\njerry: yeah who? \n\nkramer: that blond across the street. you know the one with the long ponytail, she wears those blue sweatpants. \n\njerry: the blond with the blue sweatpants! yeah, i think i've seen her. \n\nelaine: well i've got to get going. i'm meeting a guy with grey sweatpants. \n\nkramer: wait, wait, wait, how do you know it's not john tesh? \n\njerry: the blond with the blue sweatpants! \n\ngeorge: well, who is she? \n\njerry: i've had a crush on this woman for year! i've always been afraid to approach her! she looks like she belongs on one of these hallmark cards. \n\ngeorge: oh right, right! the blue sweatpants! gees, it's too bad you can't say anything because of angela. \n\njerry: oh yeah. too bad. angela. lousy thug. i mean what kind of sick person does something like that? that woman belongs in prison! i mean, i actually owe it to society to do something about this! i can't sit by and allow this to go on. it's a moral issue is what it is! \n\ngeorge: you can't compromise your principles! \n\njerry: how am i going to live with myself?! \n\ngeorge: can't live! \n\njerry: i'm not religious, but i certainly know where to draw the line! \n\ngeorge: this country needs more people like you! \n\njerry: don't sell yourself short saying 'god bless you' to every tom, dick and harry in great personal risk. \n\ngeorge: i believe strongly in that as you know. \n\njerry: there should be more people like us. \n\ngeorge: that's why the world's in the shape it's in. \n\njerry: you're telling me. \n\njerry: anyway, i just wanted you to know, that i'm going to do everything i can to make sure the party responsible is made to be responsible or something very close to that. \n\nbecky: well god bless you. \n\njerry: thank you very much. \n\ngeorge: oh my god. i must be crazy. what have i done? \n\nrobin: oh no, what's wrong? \n\ngeorge: what's wrong? i'll tell you what's wrong. i just committed adultery! \n\nrobin: you didn't commit adultery, i did. \n\ngeorge: oh yeah. \n\nrobin: if i didn't do it with you, i would have done it with someone else. \n\ngeorge: well, i wouldn't want you to do that. you know there's a lot of losers out there. \n\nrobin: maybe even someone who didn't say 'god bless you'. \n\ngeorge: well, that's a given. \n\nrobin: in three years with michael, not one 'god bless you'. \n\ngeorge: must be hell living in that house. \n\nmichael: hi, it's michael. \n\nelaine: hi, michael! \n\nmichael: is robin there? \n\nelaine: robin? no, why? \n\nmichael: uh, she said she was going to be with you. \n\nelaine: no i haven't spoken to her all day-uh, yeah right, um, as a matter of fact, um, she was here, and she uh, left a note, but i wasn't here, but i have the note, uh, right here. \n\nmichael: if she's not with you, then where is she? \n\nelaine: well i, i don't know. \n\nmichael: is she with your bald friend from the other night?! \n\nelaine: no, no, come on michael! \n\nmichael: he's finished! i'm going to sew his ass to his face! i'm going to twist his neck so hard his lips will be his eyebrows! i'm going to break his joints, and reattach them! \n\nelaine: you're soo good lookin'. \n\nangela: now you listen to me, suck face! you tell anybody, anything, and i will carve my initials in your brain tissue! \n\njerry: let me rephra- \n\nangela: i'll bash your skull into a vegematic like a bad cabbage, and i'll have a party on your head! \n\njerry: hi elaine, this is angela. \n\nangela: i'll pluck all your body hairs out with my teeth! \n\njerry: well i think i get the gist of it. \n\nangela: so you don't say anything to anybody about me hitting that car! \n\njerry: what car? \n\nangela: good. i'm glad we understand each other. \n\njerry: it's not complicated. \n\nelaine: very nice meeting you! \n\nelaine: come on up. \n\nelaine: well, well, well, mr. seinfeld! that must have been so frightening! when you confronted that guy, in queens! now, let's just see if i've got this scenario right. \n\njerry: alright elaine. \n\nelaine: no, no, no, no, no. because i'm picturing 'french connection', kind of thing. you know? sort of a popeye doyle chase through the city! \n\njerry: it was just a couple of blocks. \n\nelaine: oh no, no, come on. don't be so modest! \n\ngeorge: hey. \n\nelaine: oh, did you check you machine? \n\ngeorge: no, why, what's happening? \n\nelaine: michael called me today, and he asked me where robin was. \n\ngeorge: yeah, okay. \n\nelaine: and i said i hadn't seen her. \n\ngeorge: what?! \n\nelaine: no, no george! you don't understand! she didn't tell me she was using me as an excuse! okay?! but then i realized what was going on, and i said that she left a note. um, but he didn't really buy that. and then, and then he did mention your name. \n\ngeorge: he mentioned my name?! what did he say?! \n\nelaine: he said he was going to sew your ass to your face. \n\ngeorge: what? why couldn't you think of something?! \n\nelaine: well i don't know, he caught me off guard! \n\ngeorge: you lie! how hard is it to lie?! \n\njerry: it's not that hard. \n\nelaine: well who told you to sleep with her george?! \n\ngeorge: it's not my fault! i wasn't going to do anything until you got her all juiced up with your story about having the affair with the matador! \n\nelaine: oh gosh! none of this would never have happened if you wouldn't have said 'god bless you'! \n\ngeorge: oh don't- \n\njerry: hold it! hold it! hold it people! matador? what matador? \n\ngeorge: she told this couple she had an affair with a matador. \n\njerry: a matador! well, well, well. uno momento por favor. pray tell, what was the young man's name? \n\nelaine: uh, eduardo, uh, carochio. \n\njerry: eduardo, carochio! that's good. that's very good. kind of just rolls of the tongue. i wonder where on the upper west side a single girl might meet a matador? perhaps zabars? or les pizza! \n\njerry: anyway, this person told me to tell you to get an estimate on the damage. \n\nbecky: well, i already got an estimate. it's $875. \n\njerry: $875? \n\nbecky: that's right. \n\njerry: uh, well, i'll tell you what. um, i'll give you a check, and then this person can pay me back. \n\njerry: um, who do i make it out to? \n\nbecky: becky gelke. g-e-l-k-e. \n\njerry: so, what are you doing this weekend? \n\nbecky: you have got some nerve! you smash up my car, you don't admit it, and now you want to ask me out on a date? \n\njerry: i didn't do it! \n\nbecky: yeah righ- \n\njerry: you are soo good lookin'. \n\nbecky: thank you. \n\ngeorge: jerry, let's go! you ready? \n\njerry: you sure you want to do this? i'm going to be on the road for three weeks! \n\ngeorge: excuse me, i've got a maniac stalking me, i'm not staying in the city. \n\njerry: alright! \n\ngeorge: come on let's get out of here. \n\nkramer: how could you? \n\njerry: what?! \n\nkramer: man! i never thought you were capable of this! \n\njerry: what did i do? \n\nkramer: i just talked to becky gelke outside, she told me how you hit and ran. \n\njerry: i- \n\nkramer: i don't even want to look at you anymore! all these years of friendship and you're nothing but a felon. you're an embarrassment to the building. \n\njerry: i didn't do it! i just had to pay her to cover for somebody else! \n\nkramer: now you're not going to lie to me, are you? \n\njerry: no, never. \n\nkramer: alright. well. glad we got that straightened out because i've got a date with her. \n\njerry: you got a date with becky gelke?! \n\nkramer: yeah, going out with her saturday night. \n\ngeorge: jerry, can we get out of here?! \n\nkramer: as a matter of fact, if it wasn't for you, i wouldn't have even had an excuse to talk to her. \n\njerry: well i'm happy to help, in any way that i can. \n\nnina: (laughing) kramer, would you hold still? i cant do this if you keep moving. \n\nkramer: you sure you dont want me to take my clothes off? (beat) ill do it! \n\nnina: no, thats the last thing in the world i want you to do. \n\nkramer: well, why dont you take your clothes off? \n\nnina: i dont know... i dont think jerry would like that. \n\nkramer: (debonair smile) well, itd be our little secret. \n\n[cut to: jerrys apartment] \n\ngeorge: (bursting out of the bathroom, fumbling with his fly) button fly! why do they put buttons on a fly? it takes ten minutes to get these things open! \n\njerry: i like the button fly. \n\ngeorge: (incredulous) what? \n\njerry: that is one place on my wardrobe i do not need sharp interlocking metal teeth. its like a mink trap down there. (beat) what are you doing today? \n\ngeorge: nothing. \n\njerry: i have to go meet nina. want to come up to her lot, check out her paintings? \n\ngeorge: i dont get art. \n\njerry: theres nothing to get. \n\ngeorge: well, it always has to be explained to me, and then i have to have someone explain the explanation. \n\njerry: she does a lot of abstract stuff. in fact she's painting kramer right now. \n\ngeorge: what for? \n\njerry: she sees something in him. \n\ngeorge: so do i, but i wouldn't hang it on a wall. \n\n[cut to: nina's studio again--same scene] \n\nkramer: are you getting the eyes? 'cause they're brown. (beat) or, really, they're dark brown, like rich, columbian coffee. \n\nnina: tell me about elaine. \n\nkramer: she and jerry were a big thing, like abe lincoln and mary todd. \n\nnina: but, they're still friends. \n\nkramer: oh yeah, they're like this (holds up two fingers together). \n\nnina: don't you think that's strange? \n\nkramer: why, what's the difference? \n\nnina: well, are you still friends with any of your ex-girlfriends? \n\nkramer: well, you know... i, uh... have many relationships. \n\n[cut to: the door outside nina's studio] \n\ngeorge: you know, i'm a little nervous. \n\njerry: why? \n\ngeorge: well, you know... the friend meeting the new woman. i feel like i'm getting fixed up for a friendship. \n\njerry: i don't know how long this is gonna last. \n\ngeorge: really? i thought you liked her. \n\njerry: i do... she's got like a jealousy thing. she doesn't like me having fun with anyone but her. (knocks on the door) \n\ngeorge: you know, it's a miracle you're not married. (beat) hey, i'm not obligated to buy anything, am i? \n\njerry: hi, nina. (smooch) this is my friend george. \n\nnina: how nice to meet you, i've heard a lot about you. (george nods) \n\njerry: (walking over to where kramer is posing) hey, look at this guy! \n\nkramer: yeah! \n\njerry: (to nina) i brought george up to see some of your paintings. \n\nnina: oh, are you interested? \n\ngeorge: (looking uncomfortable) um... yeah! sure, sure i'm interested. \n\nkramer: george, you gonna buy a painting? \n\ngeorge: (gritting teeth) yeah, sure. \n\nnina: are you an art-lover? \n\ngeorge: i am an art-adorer! i adore art. \n\nnina: great! well, take a look around. pick out something you like. (george reluctantly begins to look around, while jerry strolls over to the painting-in-progress [kramer] and picks up a brush.) \n\njerry: may i? (pantomimes making a big \"x\" across the painting) \n\nnina: (laughing) get outta here! (beat) here, play with this. (hands jerry a small white envelope) \n\njerry: what's this? \n\nnina: my father gave me four tickets to the yankee game for saturday afternoon. owner's box, first row behind the dugout. \n\njerry: (sincerely disappointed) oh, saturday... i'm working, i'm going out of town. \n\nnina: oh, well. i'm not gonna go without you. do you guys want 'em? \n\nkramer: (immediately) yeah. \n\njerry: they're right behind the dugout, george, first row! \n\ngeorge: behind the dugout, are you kidding? how did you get them? \n\nnina: oh, my father's the yankees accountant... it's the owner's box. \n\ngeorge: all my life i've dreamed of sitting front row, behind the dugout! \n\nnina: (gesturing towards a small, ugly painting george was apparently look-ing at and happens to be holding) you like that one? \n\n[cut to: saturday, the game. george, kramer, and elaine are being lead to their seats] \n\ngeorge: look at where we are! (referring to the seat usher) he's not stopping! he just keeps going and going and going! (the usher abruptly stops at the second row) we're not in the first row? \n\nusher: no, no, these are your seats. \n\ngeorge: she said first row! right behind the dugout! \n\nelaine: well, it's the second row. it's just as good. \n\ngeorge: i was all primed for the first row; i was gonna put my feet up on the dugout! \n\nelaine: would you shut up? these are great! you can't get any better than this. \n\ngeorge: oh, there's better, (pointing at the row in front of them) right there, that's better. \n\nkramer: right. (elaine giggles) oh boy... okay, who wants a dog? (kramer hands out the hot dogs)what a great day! \n\nelaine: i could've been at my boss' son's bris right now. \n\ngeorge: (amused) you're supposed to do that? \n\nelaine: (shrugs) yeah. (beat) what makes you think anyone would want to go to a circumcision? \n\ngeorge: i'd rather go to a hanging. \n\nelaine: anyway, i called him back... i told him i had to go visit my father in the hospital in maryland. (george laughs) \n\nkramer: (screaming at the players on the field) you better catch it, \n\nman: george? \n\ngeorge: yeah? \n\nman: hi. i'm leonard west, nina's father. \n\ngeorge: hi! mr. west, this is my friend elaine-- \n\nelaine: hi! \n\nkramer: (screaming again) hey, 230 ain't gonna cut it in this town, babe! \n\ngeorge: --and this is kramer. \n\nkramer: oh, hey. \n\nwest: so how are the seats? \n\ngeorge: okay. \n\nelaine: great, great. \n\nkramer: yeah. \n\nwest: george, i heard you bought one of nina's paintings. \n\ngeorge: yeah, it's being framed right now. i don't even know what it costs. (beat) not, uh, too expensive, is it? \n\nwest: well, if you have a lot of money. \n\nwest: (leaving) well, enjoy the game. (beat -- to elaine) i think you better take off that orioles cap. \n\nelaine: (thinking he's joking) yeah. i better! \n\nwest: no, no, no. seriously. you're in the owner's box, and i don't think it's a good idea. \n\nelaine: you're not serious. \n\nwest: yes, yes, yes, i am! \n\nelaine: well, did he say that? \n\nwest: no, no, but he gave me the seats. i don't think he'd like it if you wore an orioles cap. \n\nelaine: well maybe you should ask him! \n\nwest: i don't have to ask him! now are you gonna take the hat off or not? \n\nelaine: no! i don't have to take it off, why should i take it off? this is ridiculous!! \n\ngeorge: just take the cap off. \n\nelaine: george, we are at a baseball game! this is america! \n\nwest: look. either you take the cap off, or you'll have to leave. \n\nelaine: well, i don't care, i'm not taking it off. \n\ngeorge: just take the cap off! \n\nelaine: no! \n\nkramer: hey! just wait a minute. we just got here! \n\ngeorge: (to elaine) do you want us to go with you? \n\nkramer: (getting up) i'll go get your hat, george. \n\nelaine: (sarcastically, to george) stay! \n\ngeorge: okay, we'll go! \n\n(meanwhile kramer is climbing over the dugout retrieve george's cap... the camera cuts to the field where the batter hits a pop fly to where kramer is: the ball knocks him squarely in the head, he falls off the dugout onto the crowd) \n\nelaine: ...and then the ball hits him in the head and he falls right over the railing! \n\njerry: is he okay? \n\nelaine: well, yeah, he's fine! we took him to the emergency room, and you know, the x-rays were all negative. (beat) it was quite a day! \n\njerry: this is the most amazing story i've ever heard--why did he want you to take off the baseball cap? that is so insane! \n\nelaine: i know! can you imagine that? \n\njerry: how you feeling? \n\nkramer: oh, yeah, yeah, i'm fine, i'm fine. (beat--holds up newspaper) hey, we made the paper. eh? look at this- page 2, sports section... we're all in the picture. \n\nelaine: wha- a picture? \n\nkramer: a picture. \n\nelaine: our picture's in there?? \n\nkramer: uh-huh. \n\nelaine: (gasps) i cannot believe this! \n\njerry: (pointing) there's george! \n\nkramer: yup, yup! \n\nelaine: ohmygod! lippman could see this! he thinks i was visiting my father! oh my g-i make up one little white lie and they put my picture in the paper! \n\n[cut to: lippman's office. lippman is at his desk, elaine enters.] \n\nelaine: hi, mr. lippman. \n\nlippman: how's your father? \n\nelaine: my, my father? \n\nlippman: yeah. you, you went to see him, right? \n\nelaine: yeah. \n\nlippman: uh-huh. \n\nelaine: i went to visit him. \n\nlippman: uh-huh. so, what was wrong with him? \n\nelaine: well, you name it, uh, neuritis, uh, neuralgia... \n\nlippman: but--but he's feeling better now? \n\nelaine: um, yup. yes, yes, it just... such a miracle, um. my visit must have buoyed (elaine says \"boyed\") his spirits. \n\nlippman: (correcting her) boo-eed. \n\nelaine: what--what did i say? \n\nlippman: you said \"boyed.\" \n\nelaine: i did? \n\nlippman: yeah. \n\nlippman: well, i got a plane to catch. \n\nelaine: oh! where are you going? \n\nlippman: going to houston. it's a publisher's convention. (beat) can i have my sports section? \n\nelaine: ah. ...yeah. \n\nlippman: i've been saving it for the plane. i never miss the sunday sports section. \n\nelaine: there's nothing to read, it's just yesterday's news. you know, the yankees won, the mets lost, ricky henderson's unhappy... \n\nlippman: right, right. (starts to take the paper from elaine's hand; elaine holds on tight.) what, what are you doing? \n\nelaine: wha-- oh! (noticing her hand) oh, god! (laughs) that is the third time today i have done that! blaaah! (laughs again) grabbing news- papers... i'm just tugging at 'em... (laughs) \n\nlippman: gotta go. \n\nelaine: okay! well, you know, have a nice trip, and uh... alrighty! (beat) i'll just hold down the, uh, fort! \n\n[cut to: nina's studio. mr. and mrs. armstrong are admiring nina's \"kramer.\"] \n\nmrs.arm: i sense great vulcrability. a land child crying out for love, an innocent orphan in the post-modern world. \n\nmr. arm: i see a parasite. \n\nmrs.arm: a sexually-depraved miscrient, who is seeking to gratify only his most basic and immediate urges. \n\n[cut to: another part of the studio where jerry and nina are arguing.] \n\nnina: she was a guest of my father's. she should've taken the cap off. \n\njerry: it's preposterous! they ask someone to take off a baseball cap at a baseball game. (beat) how can you defend that? \n\n[cut to: armstrongs admiring painting again.] \n\nmrs.arm: he is struggled, he is man-struggled. he lifts my spirit! \n\nmr. arm: he is a loathsome, offensive brute, yet i can't look away. \n\n[cut to: jerry and nina again.] \n\njerry: look, i'm really getting tired off all the fighting. maybe we should just end this before we really start hating each other. \n\nnina: oh, well, you wouldn't want that because you always have to remain friends! \n\njerry: well, i like to remain friends with people i was friends with! \n\nnina: hey -- why don't you just go then! and -- oh, give this to george. tell him he owes me $500! \n\n[cut to: armstrongs] \n\nmrs.arm: he transcends time and space. \n\nmr. arm: he sickens me. \n\nmrs.arm: i love it. \n\nmr. arm: me too. \n\n[cut to: jerry's apartment.] \n\ngeorge: five-hundred dollars?! what? \n\njerry: that's what she told me! \n\ngeorge: i'm not paying $500 for this! it's a piece of junk! \n\njerry: that's what it costs! \n\ngeorge: why did you even take it? you broke up with her! \n\njerry: i wasn't thinking! i don't know. \n\ngeorge: you weren't thinking. \n\njerry: well, she framed it and everything. \n\ngeorge: well, i'm not buying it. no way. forget it. no way i'm buying this! (beat) i mean, look at it! what is it? it's a bunch of squiggly lines! (beat) are you telling me you couldn't paint this? \n\njerry: do you want me to paint you something? i'd love to paint you some- thing! \n\ngeorge: i'm not paying for this. if you were going out with her, it'd be a different story. \n\nkramer: (entering, handing jerry a piece of paper) this was in front of your door. \n\ngeorge: hey, kramer. \n\nkramer: hi, mike. \n\njerry: (looking at the paper) wow, a letter from nina! \n\nkramer: (notices the painting) whoa, man! that is the ugliest thing i've ever seen! \n\njerry: (reading note) oh my god! \n\ngeorge: what? \n\njerry: this is amazing, you can't believe this! \n\ngeorge: what's it say? \n\njerry: listen to this \"i don't know what you expect to find out there, jerry, you know what you want better than me. but there's one thing i do know. i know i can stand here watching you destroy everything i've ever wanted in my life, wanting to smash your face with my fists, because you won't make even the slightest effort to offer happiness and still know that i love you. you mean so much to me that i'm will-ing to take all your abuse and insults and insensitivity.\" \n\ngeorge: wow! \n\nkramer: (emotionally) she's deep. \n\njerry: (reading on) \"...'cause that's what you need to do to prove i'm not going to leave you. i'm sick and tired of running from places and people and relationships. you want me, that fight for me, becau-\" \n\nkramer: you know jerry, she sounds like a poet! \n\njerry: no one's ever written me a letter like this. maybe i was wrong about her! \n\nkramer: (pushing jerry towards the phone) yeah! get in there and give her a call. pick up the phone and call her! \n\njerry: should i? \n\nkramer: (screaming) yes! you're damn right you should! (hysterically) fight for her, jerry, she's sure as hell fighting for you! \n\njerry: all right, all right! i'll call her. \n\n[cut to: jerry's apartment, another day. jerry is helping nina put on her coat. the tv is on a horse race.] \n\njerry: shot! (the sound of a shot on the tv is heard) i told ya! (the inter- com buzzes) yeah? \n\ngeorge: (on intercom) it's george. \n\njerry: come on up. (to nina) well, now we gotta get a posse together. i love a good posse. \n\nnina: what's the appeal of the posse? \n\njerry: the appeal of the posse? the posse has tremendous appeal. get away from the job, camp out, you're with your friends... come on, it's a week-long game of hide-and-seek on horseback. \n\nnina: hello, george. \n\ngeorge: hey, nina! (beat) i owe you some money, don't i? \n\nnina: well, i really love that piece. \n\ngeorge: oh, yeah, me too, me too. boy oh boy oh boy...! you know, in fact, i've been thinking about it, and i feel like i'm stealing from you! five-hundred dollars! it's gonna be worth thousands soon! you know what? on second thought, i can't even accept it. \n\nnina: no, no no no, george! a deal's a deal. i want you to have it! \n\ngeorge: this could be in a museum some day! it's not safe with me! it should really be in a doormanned building. \n\nnina: honestly, george, the money's not important. \n\ngeorge: who said anything about money? (intercom buzzes) \n\njerry: yeah? \n\nelaine: (on intercom) it's elaine. \n\njerry: come on up. \n\nnina: elaine? \n\njerry: ...yeah. \n\nnina: (rolling eyes) this person does not believe in telephones, does she? \n\njerry: she likes the pop-in. i've told her how i hate the pop-in. (pointing to george) he likes the pop-in, too. \n\ngeorge: i just popped in now. i'm a big pop-in guy. \n\njerry: yeah. \n\ngeorge: how 'bout kramer. \n\njerry: huge pop-in guy! \n\nnina: well, i was leaving anyway, so, uh, we're on for tomorrow? \n\njerry: yeah. \n\nnina: okay. \n\njerry: okay! \n\nnina: bye. (just as nina is about to leave, elaine walks in.) \n\nelaine: (to nina) hello! \n\nelaine: (sarcastic) chatty gal. (beat) lippman's coming back tomorrow, i'll be fired! \n\njerry: if he noticed, he would have called you from houston! \n\nelaine: no, he wants to torture me. \n\n[cut to: later on that night. george, elaine, and jerry are watching tv.jerry, with the remote, is furiously flipping through channels.] \n\nelaine: (annoyed) oh! would you gimme the clicker? i hate it when you're the clicker! you go too fast! (elain makes a grab for the clicker, instigating a tug-o-war between elaine and jerry over the clicker) \n\njerry: (tugging at the clicker) i'm a great clicker! (gets the clicker back) great instincts. how dare you impune my clicking. \n\nelaine: you're all over the dial! you don't know what you want! i've never seen you stay on anything for more than 5 seconds. gimme that. \n\njerry: let go! \n\nelaine: no, come on! i want it, jerry! \n\njerry: let go, elaine! \n\nelaine: well at least let george do it! \n\njerry: oh, george can't click! (george joins in the fight) \n\ngeorge: (as jerry and elaine continue to whine) give it! give it! (he finally gets the remote away from them) pinheads. \n\njerry: wait, wait a second! go back, go back to that. (they watch it a little longer) \n\nelaine: it's chapter 2, it's neil simon. \n\njerry: (on to something) wait a second... wait a second!! (he watches the tv for another minute) the letter, that's the letter! \n\nelaine: what letter? \n\njerry: this is the letter she wrote to me, she stole it right from the movie! \n\njerry: \"...'cause you don't even make the slightest effort to offer happiness still know that i love you!!\" \n\ngeorge: this is incredible! \n\njerry: i always thought there was something funny about this letter! she copied it right out of chapter 2! she a thief, a bunko-artist! \n\ngeorge: maybe i won't send her that check. \n\nelaine: you know, it's not really that terrible. \n\njerry: what are you talking about? she completely misrepresented herself! (mimicking the letter) i don't offer happiness. i offer happiness! james caan doesn't offer happiness! \n\n[cut to: lippman's office. lippman is on the phone when elaine walks in and places something on his desk. after she does, she tries to leave but lippman, still on the phone, motions for her to stay in the room] \n\nlippman: (into phone)...yeah, yeah. but she wouldn't take the cap off? (beat) but didn't she know they were the owner's seats? (beat) aw, that's unbelievable. (beat) yeah. okay. alright lenny, thanks again. take care. (hangs up the phone, and then, to elaine) that was lenny west, my accountant, who is a hell of a guy. and he handles the yankees too; it's his biggest account. so every once in a while they throw him a couple of seats and last weekend he gave them to his daughter. she's an artist, by the way. anyway, her daughter gives 'em to some friends, you know. one of her friends shows up wearing a baltimore cap! (beat) you're from baltimore, right? \n\nelaine: um, oh, it's townscend, which is near baltimore. \n\nlippman: yeah, but you're an oriole fan, right? \n\nelaine: well, uh, fan. my father-- \n\nlippman: anyway, she refused to take the cap off; caused a whole big scene! \n\nelaine: really? \n\nlippman: yeah. \n\nelaine: so... impudent. \n\nlippman: yeah, so lenny gave me the tickets for tomorrow night. i'm inviting frank and marsha. 'wantcha to come. \n\nelaine: (pause) ah. i've-i've got plans, though, mr. li-- \n\nlippman: well, break 'em. you missed the bris, i want you at the game. \n\nelaine: (very reluctant) okay. \n\nlippman: good. (elaine stars to leave) oh--and elaine. you know the baltimore cap you got in your office? wear it. i'm gonna have a little fun with him. \n\nelaine: that will be fun. \n\n[cut to: nina's studio. nina is working on a painting. jerry is watching her, sitting on the sofa.] \n\njerry: how's it coming? \n\nnina: good, good. \n\njerry: seen any good movies lately? \n\nnina: no... not really. you? \n\njerry: no. i like a good comedy. you know, like a neil simon? you like neil simon? \n\nnina: neil simon? uh, some of his stuff. \n\njerry: i've seen most of it. i guess my favorite would have to be, uh... chapter 2. have you ever seen that? \n\nnina: i don't know... maybe. \n\njerry: i have. funny, funny. in fact it was on tv just the other night. happened to catch it. (a knock is heard at the door) i couldn't help notice a stunning similiarity-- (jerry is interrupted as nina opens answer the door...) \n\nmr. arm: well, we've made our decision. we want \"the kramer.\" \n\n[cut to: jerry's apartment, night. jerry and george are watching a baseball game and talking.] \n\ngeorge: five-thousand? why would anybody buy kramer for $5000? (laughs) \n\njerry: boy, the yankees cannot buy a hit tonight! \n\ngeorge: so is it all over between you and... marsha mason? \n\njerry: yeah. (picks up nina's painting george bought) and by the way, can you get this thing outta my house? \n\ngeorge: tell you what, i'll make a deal with you. i'll sell it to you right now for ten bucks. \n\ntvvoice: uh, there's seems to be a lot of trouble in the area just behind the yankee dugout. \n\ngeorge: behind the dugout, that's where we were sitting the other day. \n\ntvvoice: well, we're not going to show it, we don't want to encourage that kind of behavior. say, it's a young lady, and boy she's really going at it with the security guard. she's a fiesty one. and now they're getting the other security guard to come down. how do you like that seegers? boy, she's someting. (beat) and a ball to left field...\" \n\n[cut to: the armstrong's dining room. mr. and mrs. armstrong are having kramer over for dinner.] \n\nkramer: ...then, when i was seventeen, i ran away from home and hopped a steamship to sweden. (beat) this steak is excellent, by the way. \n\nmrs.arm: more potatoes? \n\nkramer: yeah, sure. please. \n\nmr. arm: yes, yes. go on. you hopped a steamship to sweden? \n\nkramer: yeah. (beat) and, it was a big one. \n\nkramer: hey. i got some bad news for you, buddy. i think your car got stolen again. \n\njerry: what are you talking about? \n\nkramer: well you parked it on eighty-fourth and columbus, right? \n\njerry: yeah. \n\nkramer: yep, well i just walked by there and that car is gone. \n\njerry: oh yeah, i know. \n\nkramer: well, where is it? \n\njerry: what's the difference? \n\nkramer: well, there's no difference, you know, i'm just curious. \n\njerry: you always have to know everything that's going on, don't you? \n\nkramer: what happened to the car? \n\njerry: if i don't tell you it will kill you, won't it? \n\nkramer: yeah, yeah, it'll kill me. \n\njerry: you have to know, you must know. \n\nkramer: i must know. \n\njerry: well, i'm not telling you. \n\nkramer: oh, come on. \n\njerry: nope. i don't think so. \n\nkramer: well, please? \n\njerry: not today, pal. \n\nkramer: okay, i beg you. \n\njerry: now see? just saying beg doesn't make it a real beg. you gotta put some beg into it. \n\nkramer: okay, please! please tell me! \n\njerry: alright, i'll tell you, but your begging needs a lot of work. \n\nkramer: okay, okay, what is it? come on. \n\njerry: i loaned the car to george. \n\nkramer: ah, george, alright. well, what for? \n\njerry: george and elaine went to a flea market in westchester, okay?! \n\nkramer: alright. \n\njerry: huh? \n\nkramer: huh. i mean, what do they want to go there for? \n\njerry: will you stop it already?! \n\nkramer: you know, why didn't they ask me to go? \n\njerry: i don't know! how am i supposed to know?! \n\nkramer: what, they don't like me? \n\njerry: *i* don't like you! \n\nkramer: if they like me, why don't they ask me to go? oh yeah. \n\ngeorge: i really think it looks good. \n\nelaine: ten bucks, how can you go wrong? \n\ngeorge: all bald people look good in hats. \n\nelaine: you should have lived in the twenties and thirties, you know men wore hats all the time then. \n\ngeorge: what a bald paradise that must have been. nobody knew. \n\nelaine: well, you can wear a hat all the time now. who's stopping you? \n\ngeorge: no, i can't. what if i meet a woman? i'd always be worried about that first moment where i'd take it off and see that look of disappointment on her face. \n\nelaine: are you sure you like these sunglasses? \n\nkramer: well i'm very disappointed in george and elaine. and you know i'm somebody you don't want to have on your bad side. \n\njerry: why not? \n\nkramer: because i'm like ice, buddy. when i don't like you, you've got problems. (notices some snacks on the table) oh, is this for the fight? \n\njerry: yep. (checks watch) starts in thirty-five minutes. \n\nkramer: oh hey, you know i invited mike moffit. you don't mind, do you? \n\njerry: no, i like mike. \n\nkramer: yeah, i just got off the phone with him, you know we had a great conversation. \n\njerry: oh yeah? what did you talk about? \n\nkramer: well actually we talked about you. yeah. he had some pretty interesting things to say. \n\njerry: oh yeah? what did he say? \n\nkramer: you have to know everything, don't you? \n\njerry: no, come on, kramer. what did he say? \n\nkramer: why is that? why do you have to know everything? \n\njerry: kramer, just tell me what the guy said. \n\nkramer: beg me. \n\njerry: please, don't make me beg. \n\nkramer: no no no, i want you to beg me. and i don't want you to say it, i just want you to put some beg into it. go on. \n\njerry: kramer, please tell me what the guy said. \n\nkramer: no no no, that's no good. no, i really don't think that's a beg. no, it's close, but uh... \n\njerry: kramer! \n\nkramer: look, i can't say anything. you know, the guy told me the stuff in confidence, i'd be betraying a friend. \n\njerry: well you can't just mention it and then not tell me. \n\nkramer: alright. i'll tell you but you can't say anything to him. \n\njerry: i'm not saying anything, i'm putting it in the vault, i'm locking the vault, it's a vault! \n\nkramer: he thinks you're a phony. \n\njerry: he what? \n\nkramer: i told you, he thinks you're a phony. \n\njerry: a phony? he called me a phony? \n\nkramer: a big phone. a big one. \n\njerry: why did you tell me that if i can't say anything?! \n\nkramer: you begged me. \n\ngeorge: do you hear that? \n\nelaine: of course i hear that. \n\ngeorge: you had to move the mirror? \n\nelaine: i wanted to check out my sunglasses. \n\ngeorge: i went to look in the mirror, it wasn't there. you threw off my equilibrium. \n\nelaine: oh yeah, blame it on me because you can't drive, george. \n\ngeorge: i can't drive? \n\nelaine: yeah. \n\ngeorge: nobody drives like me. nobody. i'm doing things in this car, you have no idea they're going on. wanna see me make a right turn from the left lane? watch this. \n\nelaine: no, i really don't. \n\ngeorge: and i can make a left turn from the right lane too. \n\nelaine: i'm sure you could. \n\ngeorge: what are we gonna tell jerry about the car? \n\nelaine: i don't know. \n\ngeorge: alright, start looking for spaces. \n\nelaine: oh, you're never gonna find a space on jerry's block, just put it in a garage. \n\ngeorge: look, i have my system. first i look for the dream spot right in front of the door, then i slowly expand out in concentric circles. \n\nelaine: oh come on, george, please put it in a garage. i don't want to spend an hour looking for a space. \n\ngeorge: i can't park in a garage. \n\nelaine: why? \n\ngeorge: i don't know, i just can't. nobody in my family can pay for parking, it's a sickness. my father never paid for parking; my mother, my brother, nobody. we can't do it. \n\nelaine: i'll pay for it. \n\ngeorge: you don't understand. a garage. i can't even pull in there. it's like going to a prostitute. why should i pay, when if i apply myself, maybe i could get it for free? (he hears a horn honking) what? what do you want? go around me, i'm looking for spaces. \n\nelaine: (pointing backwards) oh george, there's a space right there! \n\ngeorge: (putting the car in reverse) oh beautiful! look at that, the dream space right in front of jerry's building. huh? dreams can come true, what did i tell you? \n\nelaine: you didn't even have to take it out to dinner. \n\ngeorge: alright, now you're gonna see some parallel parking. (spitting into his hands and rubbing them together) how i wish you could make a living parallel parking. (turning around in his seat) it's all geometry, knowing all the angles, when to make that first turn and then when to swing it back in, that's the key. \n\nelaine: will you just park it already? \n\ngeorge: there's nothing i can even impart to you, that's the sad thing. it's so inborn, i can't pass it on. (begins backing into the space) look at this guy. are you crazy, what are you doing?! hey! hey, you're stealing my space! \n\nelaine: george, wait, you don't know who this guy is, people kill for a parking space in this city. \n\ngeorge: no no no, he's not getting away with this. \n\nelaine: george? \n\ngeorge: hey, what are you doing? \n\nmike: i think i'm parking my car. \n\ngeorge: you can't do that, you can't just sneak in from the back like that. \n\nmike: i'm not sneaking. i didn't even know you were parking, you were just sitting there three spaces up. \n\ngeorge: well if you didn't think i was parking, why did you put it in head first? \n\nmike: well that's the way i park. anyway, you didn't start backing in until i pulled in. \n\ngeorge: i was in the middle of a conversation. \n\nmike: hey, buddy, what can i tell you? \n\ngeorge: the point is i was here first. \n\nmike: i was closer to this space than you were. \n\ngeorge: but i'm backing in! you can't put it in head first! \n\nmike: i can if i have room! \n\ngeorge: are you gonna move the car? \n\nmike: no, i'm not gonna move the car. \n\ngeorge: jerk! \n\nmike: oh, you're not? \n\ngeorge: do you believe this guy? \n\nelaine: come on, we'll put it in a garage. \n\ngeorge: i am not putting it in a garage, it's my space. \n\nelaine: what are you gonna do, you just gonna leave it here like this? uh. i'm going upstairs. \n\ngeorge: are you coming back down? \n\nelaine: yeah, i gotta tell jerry we're here. i gotta go to the bathroom. \n\ngeorge: alright, just make sure he reserves the good chair for me. wait, what are you gonna tell him about the clanking noise in the car? \n\nelaine: me? no no no, you. you're gonna tell him. i'm not gonna tell- noo. \n\ngeorge: oh, come on, you're good at this. \n\nelaine: what am i gonna say? \n\ngeorge: i don't know, i don't know, you'll think of something. \n\nelaine: oh god, i need a drink, do you got any hennigan's here? \n\njerry: yeah, under the counter. what happened? \n\nelaine: oh god. oh, jerry it was so terrible what we just went through on the way home. (pouring a big shot of scotch) you wouldn't believe it. (pushing a bag of chips off the counter) \n\njerry: (bending down to pick up the chips) tell me what happened. \n\nelaine: (after pouring the shot in the sink while jerry was distracted and pretending to have downed it) okay. now listen. we were at the toll booth at the henry hudson parkway, okay?! and there were these, like, this pack of extremely wild teenagers in a convertible behind us, okay?! and for some reason, i don't know, they just started to taunt us! and so then we payed the toll, and then we went through, and then they started to follow us, alright?! so george tries to lose them, and, and, but they were in this really like a souped up car, you know?! and so he turned off the road really suddenly and the car was on two wheels and i was just screaming! and then, george is such a great driver. \n\njerry: he is? \n\nelaine: oh, he is fantastic! and then they fired a gun right up in the air. \n\njerry: a gun?! \n\nelaine: i think it was a gun. and then they followed us all the way into the city, and then they just stopped and they turned around and they went home. \n\njerry: my god, are you okay? \n\nelaine: yeah, yeah, i'm alright. oh, by the way, the car hit a pothole and now it's making a clanking noise. \n\njerry: well, i mean, as long as you're okay, that, that's the important thing. \n\nelaine: exactly. \n\njerry: where's george now? \n\nelaine: oh, he's out in front of the building. he's arguing with some guy about a parking space. \n\njerry: what are you talking about? \n\nelaine: look out the window, you'll see. \n\njerry: (leaning out the window) hey georgie! \n\ngeorge: hey! \n\njerry: are you okay? \n\ngeorge: yeah, i'm fine. \n\njerry: crazy kids, huh? \n\ngeorge: what? \n\nelaine: (desperate to distract jerry) ow!! (jerry looks over) it's my cuticle. \n\nmike: is that jerry? jerry?! \n\njerry: oh, hey mike. \n\ngeorge: what, you know jerry? \n\nmike: yeah, i know jerry. \n\ngeorge: how do you know him? \n\nmike: what's the difference? \n\ngeorge: because i know him too, and probably a lot better than you. \n\nmike: well, bully for you. hey, jerry! you know your friend here's a real piece of work! \n\njerry: i'm coming down. \n\nmike: hey, will you tell kramer i'm outside? \n\ngeorge: what, you know kramer?! \n\nelaine: hi. \n\nkramer: (acting standoffish) hello. \n\njerry: hey, your friend mike's outside, he wants to talk to you. \n\nkramer: (out the window) hey, mike! come on up, the fight's almost starting! \n\ngeorge: and you're watching the fight at jerry's? \n\nmike: yeah. \n\ngeorge: oh great. \n\nelaine: you know that guy downstairs? \n\njerry: yeah, he's a real phony. \n\nkramer: what's going on?! \n\nmike: hey, will you come on down? this guy's in my space! \n\ngeorge: it's my space! \n\nkramer: i'll be down in a minute. \n\nelaine: are you going down? \n\nkramer: yeah. \n\nelaine: is anything wrong? \n\nkramer: (leaving) why should anything be wrong? \n\nelaine: (heading for the bathroom) be down in a minute. \n\nmike: hey pal, you're not getting that space. i mean, i'll sleep in my car if i have to. \n\ngeorge: i'll die out here. \n\nbystander #1: he was down there. once he passed his front bumper, it's no longer his space. \n\nbystander #2: no, it doesn't matter. he was- \n\nmike: hey! jerry! long time no see! \n\njerry: hi mike. (noticing george's fedora) indiana. \n\nmike: hey krame! you know this guy? \n\nkramer: yeah, yeah, i know him. \n\nmike: (to jerry) you're looking tremendous. what are you on some kind of regimen? \n\njerry: yeah, twenty-five percent bran flakes. the forty percent was too much so i found a store to mix it up special for me, they take it down another fifteen percent. \n\nmike: (laughing way too loud and hard) ha ha ha ha!!! that's killer! killer! i love that! ha ha ha!!! you gotta use that, that's a definite!! ha ha ha!!! \n\ngeorge: oh, come on. \n\nmike: hey! your friend here has some real problems. \n\ngeorge: me? you see what he did here, you see how he tried to sneak into my space? \n\nmike: hey, just 'cause i went in front first doesn't mean i'm sneaking in. \n\ngeorge: you only went in front first 'cause you saw me backing up and you didn't have room to parallel park! \n\nmike: i only went in front first 'cause i could make it in front first and if you pull out i'll show you! \n\ngeorge: you've got a prayer. \n\nkramer: i go in front first all the time. \n\njerry: front first, that's how you park when you're pulling a bank job. \n\ngeorge: did you talk to him? \n\nelaine: yeah, it's all taken care of. \n\ngeorge: you told him? what did you tell him? \n\nelaine: i did a number on him, it was a thing of beauty, you really had to have been there to appreciate it. \n\ngeorge: i don't believe it, what did you say? \n\nelaine: i told him a pack of teenagers in a convertible were terrorizing us and they followed us into the city. \n\ngeorge: a pack of teenagers? \n\nelaine: yeah, by the time i got to the end of the story, he was to relieved that we were alive he couldn't care less about the car. \n\ngeorge: you are a genius, it's as simple as that. \n\nelaine: what can i say, you know? it's a gift. i only wish i could teach it but, you know it's inborn. \n\nkramer: by the way, thanks a lot for inviting me to the flea market. \n\nelaine: what? \n\nkramer: yeah, jerry, he told me all about it. \n\ngeorge: oh great. \n\njerry: i didn't know. \n\nelaine: oh, so that's why you were acting so funny. \n\ngeorge: well i didn't know you wanted to go to the flea market. \n\nmike: a flea market? you went to a flea market?? \n\ngeorge: hey, who's talking to you? \n\nelaine: we just didn't think of you. \n\nkramer: you said it, sister. \n\ngeorge: what? every time i leave my house now i have to call everybody i know and ask them if they want to do what i'm doing? \n\ngeorge: great move, telling him, by the way, real smart move. \n\njerry: i didn't know i wasn't supposed to say anything! \n\ngeorge: judgement, jerry, judgement! you exercised no judgement. \n\njerry: you're right. my fault. \n\nelaine: kramer? i'm so sorry, really. \n\ngeorge: yeah, i'm sorry. \n\nkramer: i'm sorry, i don't care for that sorry. \n\ngeorge: what was wrong with that sorry? it was a good sorry. jerry, was that a good sorry? \n\njerry: it was a so-so sorry. \n\ntruck driver: hey! move this car, i gotta get through! \n\ngeorge: you heard the man. i guess you gotta be moving your car. \n\nmike: and like you're not gonna just back it in if i do that? \n\ntruck driver: well somebody better move something soon! i got a truck full of ice cream here! \n\nelaine: you see, they had to move the cars so the truck could get through, right? but these guys don't trust each other so they got these two nonpartisan drivers to move them. \n\njerry: wild pack of teenagers, huh? \n\ngeorge: yeah. \n\njerry: amazing how they picked you, out of everyone, to terrorize. \n\nelaine: yeah. i know, i said to myself, 'why us?' you remember? \n\ngeorge: uh huh. \n\njerry: sounds like you did some pretty nifty maneuvering, \n\ngeorge: well, you know, it's interesting, you know, under that pressure, what you're capable of. \n\nelaine: right. \n\ngeorge: i learned a lot about myself. \n\njerry: what did you do to my car?! \n\ngeorge: i couldn't help it! elaine moved the mirror, i got discombobulated. \n\nelaine: oh, like you've ever been bobulated. \n\njerry: i thought you said you were a good driver! \n\ngeorge: no no, i never said i was a good driver, i said i was a good parker. \n\njerry: i think you said driver. \n\ngeorge: parker, i never said driver, i said parker, a great parker. \n\nmike: will you move it up a little bit? \n\ngeorge: no no no, that's in the right position. \n\nmike: no no, i was further in. \n\ngeorge: no you weren't. stop there, that's fine. \n\nmike: do you mind? \n\ngeorge: do you? \n\nsid: hey, somebody better move these cars, you're making a commotion. \n\njerry: hey sid. \n\nmike: who are you? \n\nsid: never mind who i am. i know who i am. do you know who you are? (to george) why is it every time you park a car in this block, everything gets disrupted and disjointed? \n\ngeorge: sid, it's completely his fault. \n\nmike: oh, right. \n\nsid: why don't you start taking the bus? \n\njerry: okay, george. come on, let's go. i'm putting it in a garage. the fight's starting in two minutes. \n\ngeorge: don't do it! \n\njerry: what are we gonna do, stay out here all night? \n\ngeorge: yes! i'm not giving him the satisfaction, it's my space. \n\nelaine: why don't you just flip a coin already? \n\ngeorge: no no, this is a matter of principle. that would just be saying that anybody could just pull into any parking space any way they want. well i'm making a stand here. i'm saying *no* to head first parking. i'm not putting up with that. we put up with too much crap in this city, we're not putting up with head first parking. \n\nelaine: you know, maybe if you hadn't been sitting there pontificating about what a great parker you were, you might have got the space. \n\ngeorge: so you're against me now? \n\nangry man: he could have pulled up to the car and backed in, but he chose to go in head first. \n\nmatthew: no he couldn't, because the other car was already backing in. \n\nangry man: no he wasn't. \n\nmatthew: all that matters is who was there first. \n\nangry man: ahh, you're not even old enough to drive, you little puke. \n\nmatthew: you just spit on me! \n\nangry man: don't you raise your voice to me! \n\nmatthew: you're not my father. \n\njerry: hey matthew. \n\nmatthew: hi jerry. this guy's really a jerk. \n\njerry: how ya doing? \n\nmatthew: okay. \n\njerry: hey, how's your father? i hear he's closing his store. \n\nmatthew: what?! \n\njerry: oh no, nothing. \n\nmatthew: what's happened to daddy? he's going out of business? \n\njerry: no, no, no, no. \n\nmatthew: we're not going to have any money? we're out of money? \n\njerry: no, of course not, of course not! \n\nmatthew: mommy!? jerry says daddy's closing the store. he's going out of business. we don't have any money? \n\nmaryedith: jerry?! what's the matter with you? \n\njerry: i didn't-- \n\nmaryedith: (to kramer) boy, i don't know about your friend, jerry. he says some pretty stupid things sometimes. \n\nkramer: oh, congratulations. \n\nmaryedith: what for? \n\nkramer: well, you're pregnant. \n\nmaryedith: what? \n\nkramer: you're not pregnant? \n\nmaryedith: no, i'm not pregnant. \n\nkramer: are you sure you're not pregnant? \n\nmaryedith: yes, i'm sure! \n\nkramer: that's weird. \n\nmaryedith: come on, matthew. \n\nmatthew: no. \n\nmaryedith: come on, matthew! \n\nkramer: i thought she was pregnant. \n\njerry: (to elaine) hey, do you think i'm phony? \n\nelaine: what? \n\njerry: mike thinks i'm a phony. \n\nelaine: he thinks you're a phony? \n\njerry: yeah, but i can't say anything because kramer wasn't supposed to tell me. \n\nelaine: oh, you have to say something. \n\njerry: i can't, i told kramer i was vaulting it. \n\nelaine: you gotta open the vault. \n\njerry: open my vault? \n\nelaine: open your vault. \n\njerry: once i open the vault, it ceases to be a vault. \n\nelaine: you have no choice. \n\njerry: oy ga-vault. \n\nnewman: (to kramer) you wanna know why you can't go in front first? i'll tell you why. because it signals a breakdown in the social order. chaos. it reduces us to jungle law. \n\nkramer: when can you park head first? \n\nnewman: never. \n\nmike: what are you asking this guy for? \n\nnewman: who's talking to you? \n\ngeorge: he's right. never. \n\nmike: oh yeah? what if you got ten car lengths? you have to pull all the way up to the front car? \n\nnewman: well, i suppose if you got ten car lengths. \n\ngeorge: when do you ever have ten car lengths? \n\nkramer: what about sundays and holidays? \n\ngeorge: oh please. \n\nsheila: what's going on here? \n\ngeorge: oh, this guy tried to sneak into my space. \n\nsheila: i really hate people who do that. i hope you don't let him get away with it. \n\ngeorge: well, thank you for your support. \n\nsheila: hey, that's a great hat. \n\ngeorge: really? you like it? i got it at a flea market today. \n\nnewman: hey george, nice hat. \n\ngeorge: yeah, thanks. \n\nnewman: can i try it on? \n\ngeorge: no! it, uh, it wouldn't fit you. \n\nnewman: well sure it would. \n\ngeorge: no! get out of here, newman. \n\nnewman: come on, let me try it on. \n\ngeorge: no, newman, stop it. \n\nsheila: let him try it on. \n\ngeorge: i don't want him to! \n\nsheila: what is wrong with you? \n\ngeorge: you wanna see?! (pulling off the hat to reveal the bald pate) there! there it is! (turning to newman) alright, here! you wanna try on the hat?! here! try on the hat! \n\nnewman: stop it, george, stop it. i was defending your parking. \n\ngeorge: alright, just keep the hat! \n\njerry: alright, that's it. the fight's already started. i'm going upstairs, who's coming? elaine? \n\nelaine: it depends on who's going. (to george) are you going? \n\nkramer: i'm not going if he's going. \n\nnewman: me either. \n\ngeorge: i'm not going if he's going. \n\nmike: well i'm going. \n\njerry: well if he's going then i'm not going. \n\nnewman: but it's your house. \n\njerry: i still don't have to go. \n\nelaine: well i don't want to go if jerry's not going. \n\nmike: why won't you go if i go? \n\njerry: why? i'll tell you why. \n\nkramer: no. don't, jerry. \n\njerry: like you didn't call me a phony? \n\nmike: what? (to kramer) thanks! real good! jerry! first of all, i think you completely misunderstood what i said. i meant it in a complementary way. i mean, you know when people say, 'he's bad', it really means he's good, sort of thing? you know, slang. \n\njerry: use it in a sentence. \n\nmike: man, that michael jordan is so phony. (to kramer) why'd you tell him?!? \n\nkramer: he begged me. \n\nmike: he begged you?! \n\njerry: alright, come on. who wants to watch the fight? \n\ncop #1: okay, who's cars are these? let's move 'em. let's go. \n\ngeorge: officer, could i just explain something to you? \n\ncop #1: hey. let's go or i'm gonna write both of you a ticket in about two minutes. \n\ngeorge: officer, he can't pull in head first. \n\nmike: officer, he backed up from down the street. he was double-parked, he was \n\ncop #1: alright, you move your car. it's his space, you can't go in head \n\ncop #2: wait a second. why can't he go in head first? he said the guy was just sitting over there. \n\ncop #1: what are you talking about? this guy was here first. \n\ncop #2: but he didn't take it. \n\ncop #1: hey, it's his space. \n\ncop #2: no, it's his space. \n\ngeorge: well, you're gonna have to go to the bathroom! \n\nmike: well, you're gonna have to go to work! \n\ngeorge: i don't have a job! \n\nmike: neither do i! \n\nreferee: seven... eight... nine... ten. *ding* \n\njerry's stand-up: so, i fly a lot. i like planes. i was on a plane the other day and i was wondering - are there keys to the plane? do they need keys to start the plane? maybe that's what those delays on the ground are sometimes. when you're just sitting there at the gate, maybe the pilot's just up there in the cockpit going (mimics looking for keys) \"oh, i don't believe this. oh my god...i did it again.\" they tell you it's something mechanical, because they don't want to come on the pa system...\"ladies and gentlemen, we're going to be delayed here on the ground for a little while, i uh...oh god, this is so embarrassing...i - i left the keys to the plane in my apartment.\" you see the technicians all running underneath the plane; you think they're servicing it, but they're actually looking for the magnet \"hide-a-key\" under the wing...\"maybe he left it up there somewhere...\" \n\nopening scene: jerry's apartment in the middle of the night. jerry comes out of his room. we hear his thoughts. \n\njerry's brain: what is it about sleep that makes you so thirsty? do dreams require liquid? it's not like i'm running a marathon, i'm just lying there. \n\njerry's brain: what the hell...? why is the door open? \n\njerry: kramer, what are you doing here!? \n\nkramer: jerry, now calm down, it's okay. i'm sorry. i didn't want to wake you up! y'know, i was watching \"thirty seconds over tokyo,\" and i - y'know, i wanted to get some popcorn, and i, uh...i used the spare keys that you gave me to come into your apartment to get your popper. \n\njerry: you scared me! \n\nkramer: it's just me. \n\njerry: that's enough! \n\nkramer: forgot the popper... (goes to the kitchen, grabs the popper, drops the lid, juggles it around, then exits.) \n\njerry (from outside the door): c'mon...c'mon... \n\njerry: kramer! what are you doing?! \n\nkramer: what does it look like i'm doing? what? \n\njerry: get out! get out of the bathroom, i gotta go! \n\nkramer: alright, alright... \n\njerry: c'mon! \n\nkramer: sorry. \n\njerry: move it! move it! get going! \n\nkramer: my drain's all clogged up! (comes out of the bathroom in a towel, covered in soap suds.) \n\njerry (from inside the bathroom): is that my towel? \n\ngirlfriend: i'm really happy the movie was sold out. \n\njerry: hey, did you ever pretend there's like, murderers chasing you, and you try and see how fast you can get your keys out and get into your apartment? \n\ngirlfriend: i'm from witchita, so... \n\njerry: oh. i see. there he is! (pretends the murderers are coming.) \n\ngirlfriend: hurry, jerry! he's coming! hurry! \n\njerry: the murderers! (jerry unlocks his door and they both run inside.) \n\ngirlfriend: that was close! \n\njerry: did you see the look on that guy's face? \n\ngirlfriend: you were so fast with those keys. (they prepare to kiss, but are interrupted by kramer and his girlfriend coming out of jerry's bedroom, laughing and horsing around.) \n\njerry: kramer! what the hell are you doing here?! \n\nkramer: hey, jerry! how are ya? i thought you were going to the movies. \n\njerry: all right, that's it. hand 'em over. \n\nkramer: what? \n\njerry: what, you know what, the keys. i want the keys. you've lost your key privileges. \n\nkramer: oh, come on! \n\njerry: no, come on! \n\nkramer: what, what, i thought you went to the movies! \n\njerry: it was sold out! \n\nkramer: now how was i supposed to know it was going to be sold out? \n\njerry: that's the point. \n\nkramer: what point? \n\njerry: just, look, just give the keys. \n\nkramer: just give me another chance! \n\njerry: don't ask me! \n\nkramer: i'm asking you! \n\njerry: i'm telling you. \n\nkramer: you're joking. \n\njerry: i'm serious! \n\nkramer: it's not going to happen again! \n\njerry: yes it will, now give me those keys! \n\nkramer (getting up): o.k., fine, go ahead, you take the keys! but you're going to regret this. (he angrily storms out. kramer then re-enters seconds later when he realizes he's left his girlfriend in jerry's apartment.) \n\njerry: so put 'em in a safe place. \n\nelaine: i will. \n\njerry: where? \n\nelaine: i don't know. i'll hide 'em. so, is kramer upset? \n\njerry: i think so. i mean, he's acting really weird lately...he's different. \n\nelaine: well, maybe you should just give him the keys back. \n\njerry: i can't. \n\nelaine (mouths the words): is that kramer? (jerry nods.) \n\njerry: who's there? \n\nkramer (in hallway): uh, kramer. (jerry opens the door, kramer enters. elaine waves at kramer with the keys in her hand.) oh, hi...uh...you got the... \n\nelaine: oh, i'm not, uh... \n\nkramer: no, no, no, it's o.k. i don't care about the keys. it's my fault. i gave the keys away with my stupidity. i broke \"the covenant of the keys.\" \n\nelaine: jerry, give him the keys back. \n\njerry: elaine... \n\nkramer: i don't want the keys back! no, i'm glad the way things turned out. i was clingin' to those keys, man! like a branch on the banks of a raging river. and now i have let go. and i'm free...to go with the current. to float. (to jerry) and i thank you. \n\njerry: take the keys. \n\nkramer: i don't want the keys! (jerry tries to force the keys on kramer, but kramer refuses.) \n\njerry: o.k.! \n\nkramer: now, one more thing - i would like my keys back. \n\njerry: your spare set? \n\nkramer: that's right. \n\njerry: you want 'em back? \n\nkramer: yeah. yeah, i think it would be for the best. \n\ngeorge: gee, kramer, i uh...i don't know what to say. \n\nkramer: say yes! yes, george. yes! \n\ngeorge: should i give you my keys, is that the transaction, trading keys...? because elaine has my keys. \n\nkramer: well, you can get 'em back. \n\ngeorge: i suppose i could. \n\nkramer: because you see, george, having the keys to jerry's apartment? that kept me in a fantasy world. every time i went over to his house, it was like i was on vacation. better food, better view, better tv. and cleaner? oh - much cleaner. that became my reality. i ignored the squalor in my own life because i'm looking at life, you see, through jerry's eyes. i was living in twilight, george. living in the shadows. living in the darkness...like you. \n\ngeorge: me? \n\nkramer: oh, yeah. i can barely see you, george. \n\ngeorge: alright, stop it kramer, you're freakin' me out. (the waitress comes over.) \n\nwaitress: hi, are you ready to order? (george tries to order, but kramer interrupts.) \n\nkramer (moves over and sits next to george): do you ever yearn? \n\ngeorge: yearn? do i yearn? \n\nkramer: i yearn. \n\ngeorge: you yearn. \n\nkramer: oh, yes. yes, i yearn. often, i...i sit...and yearn. have you yearned? \n\ngeorge: well, not recently. i craved. i crave all the time, constant craving...but i haven't yearned. \n\nkramer (in disgust): look at you. \n\ngeorge: aw, kramer, don't start... \n\nkramer (moving back to the othe side of the booth): you're wasting your life. \n\ngeorge: i am not! what you call wasting, i call living! i'm living my life! \n\nkramer: o.k., like what? no, tell me! do you have a job? \n\ngeorge: no. \n\nkramer: you got money? \n\ngeorge: no. \n\nkramer: do you have a woman? \n\ngeorge: no. \n\nkramer: do you have any prospects? \n\ngeorge: no. \n\nkramer: you got anything on the horizon? \n\ngeorge: uh...no. \n\nkramer: do you have any action at all? \n\ngeorge: no. \n\nkramer: do you have any conceivable reason for even getting up in the morning? \n\ngeorge: i like to get the daily news! \n\nkramer: george, it's time for us to grow up - and be men. not little boys. \n\ngeorge: why? \n\nkramer: i'm goin' to california. you know, i got the bug. \n\ngeorge: yeah, i think i got a touch of something, too. \n\nkramer: no, the acting bug. ever since i was in that woody allen movie. \n\ngeorge: \"these pretzels are making me thirsty\"? that was one line! you got fired! \n\nkramer: i know, i know, but man! i never felt so alive! now, are you coming with me? \n\ngeorge: uh, no, i'm not. \n\nkramer: alright, suit yourself. but let's keep this between us - we're key brothers now. (gets up to leave.) \n\ngeorge: you're not really gonna go to california, are you? \n\nkramer (points to his head): up here, i'm already gone. (kramer exits.) \n\ngeorge: anyway, so he gave me his spare keys, now he wants to have my keys, so i need mine back from you. \n\nelaine: just 'cause you have his keys? why does he need yours? \n\ngeorge: i don't know. he said he wants to be my \"key brother.\" \n\nelaine: that's ridiculous. \n\ngeorge (shakes huge keyring): that's kramer. \n\nelaine: i'll give you back your spare keys - but now i want mine back. \n\ngeorge: what for? \n\nelaine: 'cause. i'll give 'em to jerry. \n\ngeorge: jerry? why? \n\nelaine: 'cause he gave me his. \n\ngeorge: so what? \n\nelaine: so, if he has my keys, i should have his. \n\ngeorge: well, i don't see why if you have his, he should have yours. \n\nelaine: i just said the same thing to you. \n\ngeorge: what? \n\nelaine: what? \n\ngeorge: alright, listen, i'll give you your spare keys, but i don't have them with me. can i please have mine to give to back to kramer? \n\nelaine: yeah, o.k. i'll go get 'em. (george begins to leaf through papers on elaine's counter.) what are you doing? would you just put that down? (takes the papers away from george.) i gotta get some new friends. \n\njerry: did you bring the keys? \n\ngeorge: yes, but i still don't feel right about letting you into kramer's apartment without his permission. \n\njerry: this could be an emergency! \n\ngeorge: you never should have taken away his keys! \n\njerry: i tried to give 'em back, he wouldn't take 'em. (jerry and george go out into the hallway to kramer's apartment.) \n\ngeorge: how'd the mets do? \n\njerry: they lost. \n\njerry: kramer? \n\nnewman (startling them): hello, boys. \n\njerry: hello, newman. \n\nnewman: you lookin' for someone? \n\njerry: don't play coy with me, newman, i'm not in the mood! \n\nnewman: coy? i'm not being coy. \n\njerry (to george): is he being coy? \n\ngeorge: yeah, coy. \n\njerry: you're being coy. now where's kramer, newman? \n\nnewman (coyly): who? \n\njerry: listen, tiny. i wanna know where kramer is and wanna know now! \n\nnewman: alright, go ahead and hit me, seinfeld. i got witnesses. \n\njerry: turn around, george. \n\ngeorge: sure. (turns around.) \n\nnewman: george? \n\njerry: now, you better tell me where kramer is, or are we gonna have to do this the hard way? (hits wall with his fist.) \n\nnewman: help! help! \n\njerry: where's kramer? \n\nnewman: help! (elaine enters.) \n\nelaine: what's going on? \n\nnewman: they're gonna beat me up! \n\ngeorge: no we're not. \n\njerry: we're trying to find out what happened to kramer. \n\nnewman: you wanna know what happened to kramer? i'll tell you what happened to kramer. he was ticked off. about the keys. yeah, that's right - about the keys. thought he got a bad rap. \n\njerry: bad rap? \n\nnewman: yeah. from you. \n\njerry: me? \n\nnewman: you heard me. so he packed it up and split for the coast. la-la land. l.a. \n\njerry: l.a.? \n\njerry: i never should have taken his keys away. but he drove me to it! i had no choice! he wouldn't take 'em back. elaine, you saw it, remember? i said, 'take the keys back.' he wouldn't do anything. you saw it, didn't you see it? \n\nelaine: yeah, yeah, i saw it. (mutters under her breath) i mean, it's complete bullshit. \n\njerry: huh? \n\nelaine: what...? \n\njerry: no, what'd you say? \n\nelaine: nothing. i didn't say anything. \n\njerry: oh, you didn't see it. \n\nelaine: yeah, i saw it. i saw it! i did, i saw it. yep. \n\njerry: i heard you say something, there. \n\nelaine: i didn't say anything. \n\njerry: i'm calling kramer's mother. (picks up the phone, dials.) (to elaine) i don't know what you said. but it was something. i heard something. hello? hello, mrs. kramer? mrs. kramer? could you turn the music down? could you turn the music down! \n\ngeorge: ask her about kramer. \n\njerry: she's drunk out of her mind. \n\njerry (leaving a message on elaine's machine): elaine? are you there? it's me, i'm locked out of my apartment, i need my spare keys. where are you? i'm at the coffee shop. \n\nkramer (shouting over the cycle's engine): hey! you ever been in an accident? \n\nbiker: about five years ago. i was going down this very road. same time of day, going about the same speed i'm going now...there was a rock in the road. couldn't have been more than a pebble. never really saw it! lost control of the bike, went flyin' about a hundred feet - came down right on my head. cracked it wide open! blood and stuff was just splattered all over the road, there...i broke every bone in my face. hey, you know, when they found me, my eyes were hanging out of their sockets? yeah, they pronounced me dead at the scene. i was in a coma for...well, they told me about a year...said i'd be a vegetable for life. yeah, but i showed 'em. ever since then i always wear a helmet! (the biker goes into a turn.) lean! (kramer yells.) \n\njerry (applauding): georgie boy! way to come through with the keys! sit down, i'm buying you dinner. \n\ngeorge: look, i gotta tell ya...i been thinkin' about it, i just don't feel right about letting you into elaine's apartment. \n\njerry: don't feel right? what are you talking about? \n\ngeorge: well, you know, i shouldn't have let you into kramer's, now you want to go into elaine's...she entrusted me with her spare keys, how can i just let you in? \n\njerry: what is the big deal? \n\ngeorge: just because you have someone's spare keys, it doesn't entitle you to break into their apartment. that's the reason you took away kramer's keys. \n\njerry: first of all, you're not even supposed to have elaine's keys. you're supposed to give 'em back to her, so she can give 'em back to me, because she has mine. so technically, those are my keys. \n\ngeorge: yes, well, if you had never taken your keys back from kramer, he never would have taken his back from you and given 'em to me, in which case i wouldn't have had to take mine back from her. \n\njerry: well, i want those keys. (tries to grab the keys from george.) \n\ngeorge: nope, no can do. \n\njerry: george, give them to me, i want these keys. (they struggle over the keys.) i don't want to get physical! \n\ngeorge: do you wanna fight? \n\njerry: do you wanna fight? \n\ngeorge: i'll fight ya! not the face! not the face! (the struggle continues.) \n\nkramer: and then, the evil ogre took back the magical keys from the handsome young prince. \n\nhippie #1: oh no. he didn't take back the keys, no way. \n\nkramer: yes! and then the handsome young prince was cast out into the cruel, cruel world. \n\nhippie #1: oh man, what a bummer. that ogre dude's pretty cold, huh? \n\nkramer: oh, he's cold. \n\nhippie #1: lemme tell you something, kramer. if that ogre dude pulled that crap on me (pulls out a knife) - i'd stab him! i'd cut him in half! i'd gut him like a fish, man! that's what i'd do! \n\nkramer: yeah, yeah...that'd be funny. (to driver) hey, you can drop me here! \n\nhippie #1: hey, what's the rush, man? \n\nkramer: well, you know, i gotta be goin' now. \n\nhippie #1: hey, kramer - have you ever killed a man? \n\nkramer: what do you think, junior? you think these hands have been soakin' in ivory liquid? (mimics choking somebody) \n\nhippie #2: don't leave, kramer, stay with us. you know so much about the world, we need you, please kramer! (they all start chanting) please, kramer! please, kramer! (scene ends with kramer trying to escape their clutches.) \n\njerry: don't you see? you're just avoiding the middle man. you were gonna give her her spare keys, so she was gonna give 'em to me. so, all that's happening is that instead of giving them to her, you're giving them to me. it's just unfortunate that when she gave you yours, you didn't give her hers. 'cause then she would have given 'em to me, because she has mine. so then i would have never had to ask you for hers, so that i could get mine. \n\ngeorge: you're right, how did i miss that? (begins unlocking the door, mutters under his breath) maybe because it's a crock of shit. \n\njerry: what's that? \n\ngeorge: nothing. \n\njerry: i heard something. \n\ngeorge: didn't say anything. (they go into elaine's apartment.) \n\nkramer: so, how long you been drivin' this thing? \n\nwoman: goin' on four years. \n\nkramer: well, nothin's sexier than a woman behind the wheel of a semi. \n\nwoman: nothin'? (they exchange a glance, then laugh.) listen to you, you're quite the sweet-talker. \n\nkramer: you know, i always wanted to drive the big rigs. i used to watch those commercials during the reruns of gomer pyle. \n\nwoman: you want to give it a try? \n\nkramer: really? \n\nwoman: do you know how to double-clutch? \n\nkramer: yeah. \n\nwoman: well, come on! (they trade places and kramer gets behind the wheel. kramer turns out to be really rusty on the ol' double-clutch.) \n\ngeorge: they were in here, i saw her put 'em in here! \n\njerry: well, this is great. \n\ngeorge: well, what do they look like? \n\njerry: they look like keys, george. they look exactly like keys. (in disgust) \"what do they look like.\" \n\ngeorge: well, they're obviously not here. \n\njerry: well, they've gotta be here somewhere. \n\ngeorge: jerry, unless i pull down on this statuette and a hidden wall opens up, we have checked every square inch of this apartment! \n\njerry (looking through some papers on the desk): what is this? \"murphy brown\"? \n\ngeorge: what? \n\njerry: by elaine benes? \n\ngeorge: what? \n\njerry: elaine's writing a \"murphy brown\"? \n\ngeorge: lemme see this. (tries to grab the papers.) \n\njerry: wait a second! (they fight over the paper.) \n\ngeorge: gimme half! \n\njerry: all right, here! \n\ngeorge: why didn't she tell us? \n\njerry (making fun): elaine is writing a sitcom...! (elaine enters the room behind jerry and george. jerry spots her and tosses his half of the script at george. george throws it back and paper goes flying everywhere.) \n\nelaine: you weasels! \n\njerry: what? what? \n\nelaine: how dare you! \n\ngeorge: we hardly read anything! \n\njerry: it was funny! \n\nelaine: who gave you permission to come into my house and just go through all my things? you thought it was funny? \n\njerry: well... (picks up some of the pages) from what i saw... \n\nelaine (grabs the papers from jerry): well, it's just a first draft! \n\njerry: i was locked out of my apartment, i'm just trying to get my keys. \n\nelaine (turning on george): why did you let him in?! (shoves george.) \n\ngeorge: he forced me to! \n\njerry: i did not! \n\ngeorge: yes you did! \n\nelaine: you! get out! get out! get out! \n\njerry: elaine, wait! i need my spare keys! \n\nelaine: here! here's your damn keys, you keep 'em! i don't want 'em anymore! \n\njerry: good! \n\nelaine (to george): and i want my keys back from you! \n\ngeorge: what, you don't want me to hold your keys? \n\nelaine: no, you can't be trusted! \n\ngeorge: alright, alright, fine. (gives the keys to elaine.) \n\njerry (to elaine): and i don't want you to hold mine! \n\nelaine: good! i won't! \n\njerry: good! don't! are these my keys? \n\nelaine: these aren't my keys! \n\ngeorge: whose are these? \n\nelaine: i don't know! \n\nelaine: i just thought i could write it. \n\njerry: is that something you want to do? \n\nelaine: i don't know. those writers make a lot of money. \n\njerry: elaine, let me tell you something about show business. it's hard work! you don't just write a \"murphy brown.\" you gotta watch the show, study it, get a sense of the characters, how they relate to each other. \n\nelaine: o.k., can i just watch the show? (mutters under her breath) god, what an asshole. \n\njerry: what did you say? \n\nelaine: i didn't say anything. \n\njerry: i heard something. (looks at the tv) elaine, elaine! it's kramer! kramer's on \"murphy brown\"! \n\nelaine (laughing): kramer's on \"murphy brown\"! \n\njerry: look, there he is, he's sittin' at the desk! \n\ncandice bergen: hi, i'm murphy brown, you must be my new secretary. \n\nkramer: oh, good morning, miss brown. \n\ncandice bergen: and you are...? \n\nkramer: oh, i'm uh, steven snell. \n\ncandice bergen: snell. well, hello, mr. snell. \n\nkramer: steven. \n\ncandice bergen: steven. are you familiar with this computer system? \n\nkramer: oh - i'm familiar with it. \n\ncandice bergen: steven snell? i know people...and i have a very good feeling about you. (exits.) \n\ngeorge: kramer was on murphy brown? \n\njerry: yeah. \n\ngeorge: are you sure? \n\njerry: yeah. \n\ngeorge: murphy brown, the tv show. \n\njerry: c'mon, will ya? \n\ngeorge: kramer was on murphy brown? that son of a gun! \n\njerry: something, isn't it? \n\ngeorge: with candace bergen! \n\njerry: i know! \n\ngeorge: i've always liked her. remember her in 'carnal knowledge'? \n\njerry: sure. \n\ngeorge: did she show her breasts in that? \n\njerry: she's not really the naked type. \n\ngeorge: i can't believe i missed kramer. you know he asked me to go with him to california. \n\njerry: he did? \n\ngeorge: yeah, i turned him down. \n\njerry: how come you didn't tell me? \n\ngeorge: he asked me to keep it a secret. \n\njerry: but you can never keep a secret. \n\ngeorge: i know. this was like a record. my previous record was when joni hirsch asked me not to tell anybody that we slept together. kept a lid on that for about 28 seconds. \n\njerry: well, you've come a long way. \n\ngeorge: i've matured. \n\njerry: hey listen, the tonight show called me, they want me to come out and do the show on the 28th and they're giving me two free tickets to la. you wanna go? \n\ngeorge: a free ticket? \n\njerry: yeah, in fact we could track down kramer. i always felt bad about the way he left, you know? that was a mess. i never should have taken back those keys. \n\ngeorge: what about accommodations? \n\njerry: all taken care of. \n\ngeorge: is there a meal allowance? what about seat assignments? could i have the kosher meal? i hear the kosher meal is good. and i need clothes. gotta get a haircut. gonna have to, i have to refill my allergy medication. oh, do i need a hat? i need a hat, don't i? could we do the universal tour? they have that backdraft exhibit now, that looks very cool to me... \n\nkramer: so my acting technique, my personal acting technique is working with color, imagining color, then finding the emotional vibrational mood connected to the color. see, if you look through my scripts, you'll see that all my lines have a special color, so i don't memorize language, i memorize color. this way i can go through red, yellow, green, blue. and i have a full palette of emotions. \n\nstudio guard: hey, didn't i tell you to get out of here? \n\nkramer: uh, did you? \n\nstudio guard: c'mon, let's go. \n\nkramer: well, i was just-- \n\nstudio guard: yeah yeah, you were just nothing. c'mon, let's go. \n\nkramer: alright, we'll talk about this a little later. are you an actor? \n\nvoice: murphy brown. \n\nkramer: uh, yeah, uh, candace bergen please. \n\nvoice: who's calling please? \n\nkramer: ah, well, just tell her that it's kramer. \n\nkramer: alright i'll uh, i'll call her at home. (to man waiting behind him) go ahead, it's all yours. \n\nhelena: hello kramer. \n\nkramer: oh, uh, helena, how are you? \n\nhelena: i haven't worked since 1934, how do you think i am? \n\nkramer: well, that's only uh, 58 years. \n\nhelena: it was a three stooges short, \"sappy pappy.\" i played mr. sugarman's secretary, remember? \n\nkramer: yeah, right, right, yeah, yeah, that was a shemp, right? \n\nhelena: no, a curly. the boys played three sailors who find a baby, the baby's been kidnapped and the police think that they did it. \n\nkramer: uh huh, right. \n\nhelena: but, but of course they didn't do it, the police had made an awful mistake. \n\nkramer: right. \n\nhelena: moe hits curly with an axe, \n\nkramer: uh huh. \n\nhelena: the stooges catch the kidnappers, \n\nkramer: right. \n\nhelena: but it's too late. \n\nkramer: really. \n\nhelena: the baby's dead. \n\nkramer: really? \n\nhelena: the boys are sent to death row and are executed. \n\nkramer: well i don't remember that part. \n\nhelena: i play mr. sugarman's secretary. \n\nkramer: oh, yeah, yeah, you were, you were very good. \n\nhelena: yeah, it was sad for a three stooges, what with the dead baby and the stooges being executed and all. \n\nkramer: well, that was an unusual choice for the stooges. \n\nhelena: would you like to buy me a fat-free frozen yogurt at the store, kramer? \n\nkramer: uh, well, uh, you know i can't right now, you know, uh, i got a very big meeting, i got these people interested in my movie treatment. so, uh, i guess we'll have to make it another time, alright? \n\nhelena: well no! no, don't go out there, kramer, they'll hurt you, they'll destroy you. you'll never make it in this town, you're too sensitive like me, \n\nkramer: helena, you're wrong, you know i'm not that sensitive at all. \n\nhelena: i was engaged to mickey rooney! he left me at the altar. kramer! kramer! \n\njerry: what is this? \n\ngeorge: what? \n\njerry: we're going on a two day trip, what are you, diana ross? \n\ngeorge: i happen to dress based on mood. \n\njerry: oh. but you essentially wear the same thing all the time. \n\ngeorge: seemingly. seemingly. but within that basic framework there are many subtle variations, only discernable to an acute observer, that reflect the many moods, the many shades, the many sides of george costanza. \n\njerry: (referring to george's outfit) and what mood is this. \n\ngeorge: this is morning mist. \n\nlt. coleman: what do you figure, 20? 21? \n\nlt. martel: close enough. \n\nlt. coleman: forensics ought to be able to nail it down. \n\nlt. martel: no id? \n\nlt. coleman: no id. \n\nlt. martel: no witnesses? \n\nlt. coleman: just the trees, johnny. pretty young thing. \n\nlt. martel: she was. not any more. somebody saw to that. \n\nlt. coleman: sure did, johnny. damn shame too. what do you make of it? \n\nlt. martel: i don't know, but i don't like it. \n\njerry: look at this guy, he's like a cat burglar. he thinks if he goes through real slow the machine won't detect him. \n\ngeorge: personally i'm a little nervous about going through these things. i'm afraid i'm gonna step through into another dimension. \n\njerry: just go. \n\ngeorge: heh he, i made it. \n\nsecurity guard: empty your pockets please. \n\nsecurity guard: walk through again please. \n\nsecurity guard: are you sure you don't have any metal on you? bracelets? rings? anklets? \n\njerry: anklets? \n\nsecurity guard: a lot of men wear anklets. \n\njerry: really? \n\nsecurity guard: yeah. \n\nother security guard (to george): what do you have in your bag, sir? \n\ngeorge: my bag? \n\nsecurity guard: step over here please. \n\njerry: over here? \n\nother security guard: do you have a knife in the bag? \n\ngeorge: a knife? \n\nother security guard: open the bag, please. \n\nother security guard: what's this? \n\ngeorge: moisturizer? \n\nother security guard: for your wife? \n\ngeorge: no, i uh... i use it. \n\nsecurity guard: spread your arms and legs please. \n\njerry: (facing the lengthening line behind him) ladies and gentlemen, i implore you. \n\nother security guard: have a good trip. \n\nsecurity guard: alright, go ahead. \n\njerry: that's it? \n\nsecurity guard: that's it. \n\njerry: alright. \n\ngeorge: c'mon jerry, let's go. what was that all about? \n\njerry: i must have iron rich blood. \n\ngeorge: here we go, la. \n\njerry: the coast, \n\ngeorge: la-la land. i got the window seat, right? \n\njerry: who said that? \n\ngeorge: i called it. \n\njerry: oh no. \n\ngeorge: what do you mean, oh no. \n\nkramer: oh ah, yeah, i'm here for the audition. \n\nreceptionist: which audition, the music video, the horror movie, the exercise tape or the infomercial? \n\nkramer: uh, let's see... well. \n\nkramer: you scream good. \n\nchelsea: you too. \n\nchelsea: so, can i keep this treatment? \n\nkramer: oh yeah, yeah, i got 20 copies. \n\nchelsea: 'cause i can, uh, show it to my manager. he has connections with west german television money. \n\nkramer: really. \n\nchelsea: yeah, they're trying to put together a miniseries for me on eva braun. i mean think about it, is that a great idea? we know nothing about eva braun, only that she was hitler's girlfriend. \n\nkramer: um-hm. \n\nchelsea: what was it like having sex with adolf hitler? what do you wear in a bunker? what did her parents think of hitler as a potential son-in-law? i mean it could just go on and on... \n\nkramer: wait wait, hold it, hold it. look who's over there. don't look, don't look! it's fred savage. \n\nchelsea: big deal. \n\nkramer: he'd be perfect for my movie. this is a once-in-a-lifetime opportunity. (takes a deep breath) i gotta go over there, i gotta give him a copy of my treatment. \n\nchelsea: why are you breathing so hard? \n\nkramer: well, i'm just a little nervous. ok, i gotta relax. phew. wish me luck, huh? \n\nkramer: hey. oh, did i frighten you? i'm not crazy. i mean, i may look weird, but i'm just like you, i'm just a regular guy just trying to make it in this business. you know i really like your work, the, uh... \n\nfred savage: thank you. \n\nkramer: yeah, i can't remember the name of it. \n\nfred: thanks. \n\nkramer: yeah, my mind's a blank, i'm sorta nervous, you know, uh... \n\nfred: that's ok. relax, relax. \n\nkramer: ok, but i got this... \n\nkramer: stupid table. you know, i'm not normally like this, usually i'm very cool and charming, i don't mean to bother you or anything but i think it's fate that you happened to be here at the same time as me. \n\nfred (a little frightened and backing away towards the door): yeah, its fate, you know, can't avoid your fate. \n\nkramer: i got this treatment i think you'll be great in. \n\nfred: yeah. \n\nkramer: so i'd like to give it to you. \n\nfred: yeah, thank you, thanks a lot. bye! \n\nkramer: (bumping into a lamp) alright, excuse me. uh wait, wait. \n\njerry: yeah, kramer. k-r-a-m-e-r. uh, i don't know, wavy? george, how would you describe kramer's hair? \n\ngeorge: curly. \n\njerry: wavy. \n\ngeorge: what'd you ask me for? \n\njerry: yeah, i'll hold on. hey george, did you see a piece of paper i had on the nightstand here, like crumpled up, like a napkin? \n\ngeorge: nope. \n\njerry: 'cause i had like three jokes on it, they were all perfectly worded just the way i wanted to have it. can't find it. hello? \n\ngeorge (from the bathroom): hey, a shoe buffing machine! \n\njerry: i don't know, 6-3, george, how tall is kramer? \n\ngeorge: you got your own shampoo, conditioner, body lotion! jerry, body \n\njerry: about 6-3. \n\ngeorge: ooh, a shower cap! \n\njerry: coming. \n\nlupe: hello. i have more towels. \n\ngeorge: oh good, good, come in. come in, welcome. i'm george. and this is jerry, over there, on the phone, that's jerry. and you are, um? \n\nlupe: lupe. \n\ngeorge: lupe. that's very nice, very nice. listen, are you going to be making up the bed in the morning? \n\nlupe: oh yes. \n\ngeorge: fine. excellent. could you do me a favor? could you not tuck the blankets in? 'cause i can't sleep all tucked in. \n\nlupe: oh, yes, yes. \n\ngeorge: yes, i like to just be able to take the blankets and swish them and swirl them, you know what i mean? you know, i don't like being all tucked in. i like to have a lot of room, you know i like to have my toes pointed up in the air. just like to scrunch up the blankets. \n\nlupe: yes, yes. it's too tight to sleep. \n\ngeorge: exactly, you know what i'm talking about, right? \n\nlupe: oh yees, it's too tight. (gesturing towards jerry) him too? \n\ngeorge: uh, jerry, you want your blankets tucked in? \n\njerry: excuse me, what? \n\ngeorge: you want your blankets tucked in? \n\njerry: what blankets? \n\ngeorge: when lupe makes up the beds in the morning. \n\njerry: i don't know, whatever they do. \n\nlupe: i tuck in? yes? \n\njerry: tuck in, tuck in. \n\ngeorge: alright, so that's one tuck and one no-tuck. \n\nlupe: okay. \n\ngeorge: yeah. one second sweetheart. jerry, i really think it'd be easier if you didn't tuck. \n\njerry: excuse me, fine, you don't want me to tuck, put me down for a no-tuck. \n\ngeorge (to lupe): two no-tucks. \n\njerry: uh, hang on a second, you know what? changed my mind, make it a tuck. \n\ngeorge: you just said you weren't tucking. \n\njerry: i'm tucking! hello? hello? they hung up on me. they don't know where kramer is anyway. \n\ngeorge: alrighty, so. that's one tuck and one no-tuck. got that? \n\njerry: excuse me, um, did you see a piece of paper on the nightstand here earlier today crumpled up like a napkin? \n\nlupe: oh, yes, yes. i throw away when we clean the room. \n\njerry: oh, okay, thanks. \n\nlupe: thank you. \n\ngeorge: thank you. \n\nlupe: bye-bye. \n\ngeorge: alright, lupe, bye-bye now. \n\nlupe: bye. \n\ngeorge: bye-bye. \n\njerry: i can't believe she threw that out. i had like the perfect wording of a whole joke i was gonna do about the x-ray counter at the airport, i was gonna do it on the tonight show, now i can't remember it. \n\ngeorge: well what did you want her to do, you left it on the night table. \n\njerry: they're not supposed to just take everything and throw it out! \n\ngeorge: hey, hey, hey! it's not lupe's fault, you shouldn't have left it out. \n\njerry: alright, just get your thing together and let's get out of here. \n\ngeorge: alright, now. what mood am i in, what mood am i in? \n\ngeorge: you shouldn't have tucked. \n\njerry: i like it tucked. \n\ngeorge: nobody tucks anymore. \n\nofficer: hey, lieutenant. \n\nlt. martel: yeah. \n\nofficer: this was found on her person. \n\nlt. martel: on her person? what kind of expression is that? \n\nofficer: i don't know, sir. police lingo. \n\nlt. martel: oh yeah? what's your name, son. \n\nofficer: ross. \n\nlt. martel: ross. do you see that person there, ross? \n\nofficer: yes sir. \n\nlt. martel: she's dead. have you got that? \n\nofficer: yes sir. \n\nlt. martel: good. now get out of here before you find yourself on transit patrol writing tickets to senior citizens with fake bus passes. \n\nofficer: yes sir. \n\nlt. martel: i think we just caught a break. \n\ngeorge: this is very exciting! you're on the tonight show, nbc, who else is on the show? \n\njerry: i don't know. \n\ngeorge: might meet a celebrity. \n\njerry: i can't believe she threw out my napkin. \n\ngeorge: what are you worried about, you know it. \n\njerry: you gonna be alright here? \n\ngeorge: yeah yeah yeah yeah, go. go about your business, i'll just wander around. \n\njerry: alright, don't wander too far, i'll meet you back here in fifteen minutes. \n\ngeorge: go, go, go, don't worry about it. \n\ngeorge: hey. (pointing at him) corbin bernsen. \n\ncorbin bernsen: how ya doing? \n\ngeorge: big fan! big fan. \n\ncorbin bernsen: yeah. \n\ngeorge: hey, you grew a beard, huh? \n\ncorbin bernsen: yeah, yeah. i'm doing a movie during my hiatus. \n\ngeorge: hey. you know, do i have a case for you guys to do on l.a. law. \n\ncorbin bernsen: really. \n\ngeorge: ...so mind you, at this point i'm only going out with her two or three weeks. so she goes out of town and she asks me to feed her cat. so at this time, there's a lot of stuff going on in my life and, uh, it slips my mind for a few days. maybe a week. not a week, five, six days. \n\ncorbin bernsen: yeah yeah yeah. so what happened? \n\ngeorge: well, it's the damnedest thing. the cat dies. so she comes back into town, she finds the cat lying on the carpet stiff as a board. \n\ncorbin bernsen: so you killed the cat. \n\ngeorge: that's what she says. i say, listen. it was an old cat. it died of natural causes. so get this, now she tells me that i gotta buy her a brand new cat. i say listen, honey. first of all, it was a pretty old cat. i'm not gonna buy you a brand new cat to replace an old dying cat. and second of all, i go out to the garbage, i find you a new cat in fifteen seconds. i say, you show me an autopsy report that says this cat died of starvation, i spring for a new cat. so she says something to me, like, uh, i dunno, get the hell out of here, and she breaks up with me. now don't you think that would be a great case on l.a. law? \n\ngeorge: i don't wanna tell you how to run your show. \n\ngeorge wendt: oh, of course not. \n\ngeorge: but really, it's enough with the bar already. \n\ngeorge wendt: yeah, well. \n\ngeorge: seriously, have they though about changing the setting? \n\ngeorge wendt: doubt it, i doubt it. yeah. \n\ngeorge: really? because people do meet in places besides a bar, huh? \n\ngeorge wendt: well yeah, they do, heh heh. \n\ngeorge: what about a rec room? huh? or a community center. \n\ngeorge wendt (checking his watch, obviously uncomfortable): yeah, you oughta write one of those. \n\ngeorge: yeah? \n\ngeorge wendt: yeah, i'll bring it up with the producers, i gotta... uh... \n\ngeorge: fabulous, i'll think about that george, thank you! \n\njerry: how's it going? \n\ngeorge: great! great! i actually just had two meaningful intelligent conversations with corbin bernsen and george wendt. \n\njerry: really? \n\ngeorge: yeah, yeah, not fan talk, not gushing, you know? actual conversation, i was incredibly articulate! \n\njerry: you got toilet paper on your heel there. \n\nannouncer: it's the tonight show with jay leno. tonight jay welcomes corbin bernsen, george wendt and comedian jerry seinfeld. \n\ncorbin bernsen: oh yeah, yeah, people are always coming up to me trying to give me a great case for l.a. law, just a few seconds ago, right here, right outside in the hallway this nut, some sick nut comes up to me and says he's supposed to watch this girl's cat while she's away out of town. anyway he forgets to feed the cat, the cat dies, starves to death, he kills the cat, refuses to get her a new one, won't give her any money, won't pay her, and he wants arnie becker to represent him. nice guy. yeah, that'd make a *great* case for l.a. law. thanks a lot. \n\nhelena: he's a very handsome man. passionate, intense, but troubled, strange. i think he may be in love with me. of course there's nothing abnormal about that, i have many suitors. \n\ngeorge wendt: it's funny, 'cause even after all these years, we still get people giving us advice, how to improve the show. actually, a few moments ago i ran into a nut back there, he said, you know, that maybe we should think about, you know, not doing the show in a bar. \n\nthe freak: so that's when i said, \"hey, kramer, dude. you ever killed a man before?\" and he said, \"what do you think, junior? these hands have been soaking in ivory liquid? \n\ngeorge wendt: the guy you talked to, what did he look like? \n\ncorbin bernsen: short little bald guy with glasses. \n\ngeorge wendt: yeah, yeah, that's the same guy i talked to. \n\ncorbin bernsen: it never ends, does it? \n\njerry: so i'm going through the airport and i have to put my bag on that little uh, uh, the uh, that uh, the conveyor belt. \n\nlt. martel: issue an arrest warrant, put out an apb. let's pick up this, uh, kramer. \n\njerry: i was terrible. \n\ngeorge: what are you, crazy? you were fine. \n\njerry: nah, did you hear the end? i couldn't remember what i was trying to say, that whole thing about the, uh... \n\ngeorge: conveyor belt. \n\njerry: yeah. because she threw out my napkin. \n\ngeorge: i can't believe, you're blaming lupe? \n\njerry: yes, lupe. i'm blaming lupe. \n\ntv newscaster: our top story tonight, there has been a break in the so called 'smog stranglings'. police have just released a photo of the suspect being sought in connection with the slayings. he is known only as \"kramer\". \n\ngeorge: he's on the lamb(?), he's on the loose! \n\njerry: would you let go of my arm?! i'm trying to drive, you're getting us both killed! \n\ngeorge: what are we supposed to do? what do you do on a situation like this? should we call a lawyer, should we call the police? \n\njerry: obviously we're gonna call the police and tell that he's not the guy. \n\ngeorge: hope he's not the guy. \n\njerry: couldn't be the guy...nah. \n\ngeorge: god, i'm starved, i'm weak from hunger. \n\njerry: how can you think of food at the time like this? \n\ngeorge: time like what? i'm hungry. my stomach doesn't know that kramer's wanted. \n\njerry: i told you to have breakfast, you should've had breakfast! \n\ngeorge: i couldn't have breakfast, it was lunchtime! the three hour time difference threw me. i wanted a tuna fish sandwich, they wouldn't serve me tuna fish sandwich, because they were only serving breakfast. \n\njerry: you should've had some eggs. \n\ngeorge: for lunch? who eats eggs for lunch? \n\njerry: have you ever heard of egg salad? \n\ngeorge: why didn't you say something then? \n\njerry: i've gotta to tell you about existence of egg salad? \n\ngeorge: i need food, jerry. i feel faint, i'm getting light headed. \n\njerry: i've gotta call the police, there's a pay phone over there. \n\ngeorge: pay phone in l.a., look it's a miracle. \n\njerry: i don't have any change. you've got any change? \n\ngeorge: no, i don't have any change. i never carry change. \n\njerry: well, we need change and all i have is twenties. \n\ngeorge: i have a ten. \n\njerry: so, break it. \n\ngeorge: i hate asking for change. they always make a face. like i'm asking them to donate a kidney. \n\njerry: so, buy something. \n\ngeorge: what? \n\njerry: i don't know, some mints or tictacs. \n\ngeorge: breath problem? \n\njerry: no, i just want some change. \n\ngeorge: tell me. \n\njerry: your breath is fine. it's delightful, it's delicious. \n\ngeorge: you know, i haven't eaten anything. \n\njerry: i just wanna call the police! \n\ngeorge: why don't you just call 911? \n\njerry: but is this an emergency? \n\ngeorge: of course it is. \n\njerry: how is this an emergency? \n\ngeorge: your friend is been accused of being a serial killer. i think that qualifies. \n\njerry: all right, i'll call 911. think he did it? could've he done it? couldn't done it? how could've he done it? couldn't be? could it? hello 911? how are you? i'm sorry it was just a reflex...i know it's an emergency number...it is an emergency...my friend is being accused of being a smog strangler and i know he didn't do it...they're putting me trough to the detective in charge of the investigation...what is my name? who am i? i'm eh...george costanza... \n\ngeorge: what's the matter with you? are you crazy? why are you using my name?! \n\njerry: oh, don't be a baby! what are you scared of? \n\ngeorge: what am i scared of? i'm scared of the same thing that you are, everything! why don't you just use your own name? \n\njerry: your name is a good name, costanza. sounds like it's stands for something, they'll believe us. \n\ngeorge: really? \n\njerry: sure. \n\ngeorge: you think so? \n\njerry: oh yeah. yes i have some very important information regarding the smog strangler. (george leans close) would you suck a mint or something. can i come right now? i suppose, where are you located? where is that? i don't know where we are. where are we? \n\ngeorge: i don't know. \n\njerry: we don't know. he says ask somebody, ask that guy. \n\ngeorge: excuse me, where are we? \n\nman: earth. \n\njerry: hey, you know i'm on the phone with the police! some guy just gave me a wise answer. ask that woman. \n\ngeorge: excuse me ms. which street are we on? \n\nwoman: i don't know. \n\ngeorge: you don't know? \n\nwoman: i don't know. \n\ngeorge: how come you don't know what street are you on? \n\nwoman: you don't know. \n\njerry: george, it says it here on the phone. it's 12145 ventura boulevard. aha, ok...do we know where the 101 is? (george shakes his head) no...do we know where 170 is? (george shakes his head) no...do we know where 134 is? (george just looks at jerry) no. aha, ok. (jerry hangs up) he's gonna send a black and white to pick us up. \n\ngeorge: black and white? \n\njerry: a cop car. \n\ngeorge: why didn't you just say that? \n\njerry: i thought it sounded kind of cool. \n\ngeorge: oh yeah, real cool. you're a cool guy. \n\njerry: oh, you are? i guaranty you, lupe is going to tuck your covers in. \n\ngeorge: i'll bet you, how much? \n\njerry: her tip. \n\ngeorge: you've got a bet. \n\njerry: ok. \n\ngeorge: how much do you tip a chamber maid? \n\npolice: which one of you is costanza? \n\npolice: get in. \n\ngeorge: hi, how are you guys? listen, does either one of you have like a mint or piece of gum or... \n\ngeorge: jerry, would you do me a favor, close the window. \n\njerry: hey, get out of here...hey officer, he's fooling around back here. \n\ncop: cut it up back there. \n\ngeorge: he started it. \n\njerry: i did not. you guys gonna go through some red lights? \n\ncop: i don't think so. \n\njerry: but you could? \n\ncop: oh yeah, of course we could. we can do anything we want. \n\ncop 2: we could drive on the wrong side of the road. \n\ncop: yeah, we do that all the time. you should see the looks on people's faces. \n\ncop 2: shoot people... \n\ngeorge: you guys ever shot anybody? \n\ncops: no... \n\ngeorge: hey, can i flip on the siren? \n\njerry: why are you bothering them for? \n\ngeorge: i'm just asking, all they have to do is say no. \n\ncop: yeah, go ahead. \n\ngeorge: wohoo, check it out. \n\njerry: can i try it? \n\ncop: yeah, go ahead, hurry up. \n\njerry: scared the hell out of that guy. \n\ngeorge: you know what i never understood? why did they change the siren noise? when i was a kid it was always \"waaaa, waaaa\", you know now it \"woo-woo-woo-woo-woo\". why did they do that, did they do some research? did they find that woo-woo was more effective than waa? \n\njerry: yeah, what about those english sirens, you know...eee-aaa-eee-aaa-eee-aaa... \n\njerry and george: eee-aaa-eee-aaa-eee-aaa... \n\ncop: hey! \n\nkramer: i'm dizzy. \n\njerry: nice shotgun. \n\ncop: thanks. \n\njerry: clean as a whistle. \n\ngeorge: you could eat of that shotgun. \n\njerry: what is that, a 12 gauge? \n\ncop: yeah. \n\njerry: 12 gauge. seems to be the most popular gauge. \n\ngeorge: my favorite. \n\njerry: mine too, love the 12 gauge. \n\ngeorge: makes the 11 gauge look like a cap pistol. \n\ncop: what do got over there? \n\ncop 2: i don't know. \n\ncop: looks like a possible 5-19. \n\njerry: 5-19? what's a 5-19? \n\ngeorge: where? \n\ncop 2: think so? \n\ncop: looks like it. \n\njerry: i can't believe this. a 5-19? \n\ngeorge: where, where? i can't see. \n\ncop: this is car 23, we have a possible 5-19 in progress, over. \n\ncop 2: all right, let's pull over and check it out. \n\njerry: pull over? you can't pull over. \n\ngeorge: what are you doing? where do you think you're going? \n\njerry: pull over? the lieutenant is waiting to see us. \n\ngeorge: hey hey hey, we're in a rush here. \n\njerry: we have an appointment! \n\ngeorge: what are you doing?! \n\njerry: great. \n\ngeorge: there's a bag of pepperidge farm cookies up there. \n\njerry: which flavor? \n\ngeorge: milano. \n\njerry: cops eating milanos. what crazy town is this? \n\ngeorge: should i take some? \n\njerry: i think that's a 5-19. \n\ngeorge: i'm starving... \n\njerry: they're busting this guy. \n\ngeorge: they're cuffing him. \n\njerry: i can't believe this. \n\ngeorge: hi. \n\njerry: hi, i'm jerry. \n\ngeorge: george, how you doing? \n\nguy: what did you do? \n\ngeorge: nothing. \n\njerry: nothing. \n\nguy: oh yeah right, me neither. hey i didn't do nothing! \n\ncop: shut up. \n\njerry: hot out. \n\nguy: brutal. \n\ngeorge: what do you tip a chamber maid. \n\nguy: i don't know, five bucks a night. \n\njerry: no, a dollar, two tops. \n\nguy: hey, you guys aren't cuffed. what are you, narks? \n\ngeorge: narks? \n\njerry: imagine, us narks? \n\ngeorge: no no no, you know actually we are friends of a serial killer. \n\nguy: really? well, that's very nice. \n\ngeorge: oh, thank you. \n\njerry: suspected serial killer, he didn't actually do it. \n\ngeorge: yeah well, we don't think. \n\njerry: we're pretty sure. \n\nguy: a dollar a night? \n\njerry: yeah, that's a good tip! \n\nguy: that stinks! \n\njerry: i read it in ann landers. \n\nguy: oh, ann landers sucks! \n\ncop 2: hey, shut it up back there. \n\npolice radio: attention all units, attention all units, all units code 3. all units in the area, code 3 in progress, 1648 north bartholis, units required for assistance in apprehension of 702. \n\ncop: that's smog strangler. \n\njerry: kramer. \n\ncop 2: got him. let's go. \n\njerry: i wanna see what's happening. \n\ngeorge: i don't know why i'm doing this. \n\nkramer: jerry, george! \n\nlt. martel: you are under arrest in first degree murder and death of ms chelsea lang. \n\nreporters: why did you do it? what possessed you? \n\nkramer: i don't know... \n\nkramer: hey, how are you doing? jerry! george! \n\njerry: we're doing fine. how are you? \n\nkramer: what me? fabulous, just fabulous. i've got a lot of auditions, a lot of call backs and i've got a lot of interest for my movie treatment. i'm in development, i'm in developed vehicles. and there's a lot of energy here, man. you know, the vibe, it's powerful. i'm just swept up at it. yeah, i'm a player. \n\ngeorge: a player? \n\nkramer: yeah, a player... \n\njerry: kramer, do you realize what's going on here? do you know why you're here? \n\nkramer: what? what this? i'll be out of here in couple of hours. hey, guess who i met today? rick savage, oh nice kid, really good kid. you know, we're talking about doing a project together. \n\njerry: kramer, you've been arrested as a serial killer! \n\nkramer: so? i'm innocent! i mean you guys believe that i'm innocent, don't you? jerry? george? \n\njerry: well, yeah...sure. \n\npolice: kramer, let's go. the lieutenant wants to see you. \n\nkramer: ok, yeah. all right look, i'll be out of here by noon. maybe we'll have lunch together, huh? \n\nkramer: help me!! help me! \n\nkramer: i didn't kill anyone, i swear! i swear to god! \n\nlt. martel: don't you ever swear to my god, kramer. my god is the god who protects the innocent and punishes the evil scum like you, have you got that? \n\nkramer: you're making a big mistake. \n\nlt. martel: no! you have made the mistake, kramer. sickies like you always do. the only difference is that this time you're gonna pay. \n\nkramer: what? \n\nlt. martel: now you might beat the gas chamber kramer, but as long as i have got a breath in my body you will never ever see the light of day again. \n\nkramer: wow wow wow wow, you've got the wrong man!! it wasn't me! \n\nlt. martel: oh yeah, right. maybe it was one of your other personalities huh, the wise guy, the little kid, the bellhop, the ball player, maybe the door to door vacuum cleaner salesman, but not you right? no, you wouldn't hurt a fly. you just couldn't help yourself, could you kramer? you saw life brimming brightly with optimism and verve and you just had to snuff it out. \n\nkramer: ok, can i just talk to somebody? can i just explain... \n\nlt. martel: i'm not interested in your explanations, kramer! sure, i bet you've got a million of 'em. maybe your mother didn't love you enough, maybe the teacher didn't call on you in school when you had your little hand raised, maybe the pervert in the park had a present in his pants, huh? well, i've got another theory you're a weed. \n\nkramer: no... \n\nlt. martel: society is filled with them. they're choking the life out of the all pretty flowers. \n\nlt. martel: you see something even remotely pretty and you have to choke the life out if it, don't you kramer? \n\nlt. martel: you killed all the pretty flowers, didn't you kramer? you killed the pretty little flowers, didn't you? you dirty, filthy, stinky weed! didn't you? \n\nofficer: lieutenant, it's for you. \n\nlt. martel: martel...yeah...yeah...yeah...yeah. \n\nofficer: what it is, lieutenant? \n\nlt. martel: let him go. \n\nofficer: what, but lieutenant? \n\nlt. martel: you heard me, let him go. they just found another body at the laurel canyon. go on kramer, get out of my sight. \n\nkramer: hey, how did you know about the guy in the park? \n\nlt. martel: i said beat it! \n\nkramer: hahaa! \n\ngeorge: what? \n\njerry: what happened? \n\nkramer: somebody got killed while they had me in custody. \n\njerry: really? did you hear that? somebody else was killed! \n\ngeorge: you're kidding? somebody else got killed? \n\njerry: while you were in jail. so you're free. \n\nkramer: yes, i'm free. (singing) 'cause the murderer struck again! \n\njerry: so kramer, what are you going to do? \n\nkramer: do? do? hey, i'm doing what i do. you know, i've always done what i do. i'm doing what i do, way i've always done and the way i'll always do it. \n\ngeorge: kramer, what the hell are you talking about? \n\nkramer: what do you want me to say? that the things haven't worked out the way that i planned? that i'm struggling, barely able to keep my head above water? that l.a. is a cold place even in the middle of the summer? that it's a lonely place even when your stuck in traffic at the hollywood freeway? that i'm no better than a screenwriter driving a cab, a starlet turning tricks, a producer in a house he can't afford? is that what you want me to say? \n\ngeorge: i'd like to hear that. \n\njerry: yeah... \n\nkramer: well, i'm not saying that! you know, things are going pretty well for me here. i met a girl... \n\njerry: kramer, she was murdered! \n\nkramer: yeah, well i wasn't looking for a long term relationship. i was on tv. \n\ngeorge: as a suspect in a serial killing. \n\nkramer: ok, yeah, you guys got to put a negative spin on everything. \n\ngeorge: what did they put on this tuna? tastes like a dill, i think it's a dill. \n\njerry: so you're not gonna come back to new york with us? \n\nkramer: no no i'm not ready, things are starting to happen. \n\ngeorge: taste this, is this a dill? \n\njerry: no, it's tarragon. hey kramer, i'm sorry about that whole fight we had about you having my apartment keys and everything. \n\nkramer: ok, it's forgotten. \n\ngeorge: tarragon? oh, you're crazy. \n\njerry: well, take it easy. \n\nkramer: yeah, ok. \n\ngeorge: yeah, take care. stay in touch. \n\nkramer: hey hey, whoa come on give me a hug... \n\njerry: oh, no... \n\ngeorge: no, you're crushing my sandwich. \n\njerry: yeah, it's so nice when it happens to you. \n\ngeorge: mint? \n\njerry: no thanks. \n\ngeorge: i've got to tell you, i'm really disappointed in lupe. \n\njerry: it's been three days already, forget about lupe. \n\ngeorge: do you think she gets to take any of those little bars of soap home? \n\njerry: no, i don't. \n\ngeorge: you would think that at the end of the week when they hand out the checks, throw in a few soaps. \n\njerry: yeah, maybe they should throw in a couple of lamps too. \n\ngeorge: i'll tell you something, if i'd own a company, my employees would love me. they'd have huge pictures of me up on the walls and in their home, like lenin. \n\njerry: how much did you wound up tipping her? \n\ngeorge: oh my god, i forgot! \n\njerry: well, communism didn't work. \n\nkramer: hey! \n\nkramer: any mustard? this is empty. \n\njerry: yeah, there's a new one in there. \n\nkramer: no no, i don't like this one. it's too yellow. any pickles? \n\njerry: help yourself. \n\nkramer: yeah, all right. \n\ngeorge: kramer, what are you doing here? \n\nkramer: getting something to eat. \n\njerry: kramer, here! \n\nnewscaster: authorities exposed today, that the latest suspect in the smog strangling was apprehended this week on an unrelated charge, but somehow managed to escape from the police car, in which he was being held. tobias lehigh nagy, who is also wanted in connection with a series of unrelated slains in the north west is still at large, his whereabouts unknown. he's described as 5'5\" bald and reputedly a very generous tipper. \n\ngeorge: what did they do for toilet paper in the civil war? \n\njerry: what? \n\ngeorge: i wonder what toilet paper was loike in the 1860's. did they carry it in rolls in their duffle bags? \n\njerry: everything with you comes down to toilet paper. \n\ngeorge: what? \n\njerry: that's always the first question with you. why is that always your focus? \n\ngeorge: all right, so what did they do? \n\njerry: i don't know. maybe they gave out fig leaf clumps to all the soldiers. \n\ngeorge: well i think it would be nice if there was some kind of historical record of it. \n\njerry: maybe they should have a toilet paper museum. would you like that? so we could see all the toilet paper advancements down through the ages. toilet paper of the crusades, the development of the perforation, the first six-pack . . . \n\nstu: excuse me, jerry? i'm stu chermak. i'm with nbc. \n\njerry: hi. \n\nstu: could we speak for a few moments? \n\njerry: sure. \n\njay: hi, jay crespi. \n\njerry: hello. \n\ngeorge: uh, c-r-e-s-p-i? \n\njay: that's right. \n\ngeorge: i'm unbelievable at spelling last names. give me a last name. \n\njay: mm, i'm not- \n\njerry: george- \n\ngeorge: (backing off) huh? all right, fine. \n\nstu: first of all, that was a terrific show. \n\njerry: oh thank you very much. \n\nstu: and basically, i just wanted to let you know that we've been discussing you at some of our meetings and we'd be very interested in doing something. \n\njerry: really? wow. \n\nstu: so, if you have any idea for like a tv show for yourself, well, we'd just love to talk about it. \n\njerry: i'd be very interested in something like that. \n\nstu: well, here, uh, why don't you give us a call and maybe we can develop a series. \n\njerry: okay. great. thanks. \n\nstu: it was very nice meeting you. \n\njerry: thank you. \n\njay: nice meeting you. \n\njerry: nice meeting you. \n\ngeorge: what was that all about? \n\njerry: they said they were interested in me. \n\ngeorge: for what? \n\njerry: you know, a tv show. \n\ngeorge: your own show? \n\njerry: yeah, i guess so. \n\ngeorge: they want you to do a tv show? \n\njerry: well, they want me to come up with an idea. i mean, i don't have any ideas. \n\ngeorge: come on, how hard is that? look at all the junk that's on tv. you want an idea? here's an idea. you coach gymnastics team in high school. and you're married. and your son's not interested in gymnastics and you're pushing him into gymnastics. \n\njerry: why should i care if my son's into gymnastics? \n\ngeorge: because you're a gymnastics teacher. it's only natural. \n\njerry: but gymnastics is not for everybody. \n\ngeorge: i know, but he's your son. \n\njerry: so what? \n\ngeorge: all right, forget that idea, it's not for you....okay, okay, i got it. you run an antique store. \n\njerry: yeah and...? \n\ngeorge: and people come in the store and you get involved in their lives. \n\njerry: what person who runs an antique store gets involved in people's lives? \n\ngeorge: why not? \n\njerry: so someone comes in to buy an old lamp and all of a sudden i'm getting them out of a jam? i could see if i was a pharmacist because a pharmacist knows what's wrong with everybody that comes in. \n\ngeorge: i know, but antiques are very popular right now. \n\njerry: no they're not, they used to be. \n\ngeorge: oh yeah, like you know. \n\njerry: oh like you do. \n\nkramer: ...and you're the manager of the circus. \n\njerry: a circus? \n\nkramer: come on, this is a great idea. look at the characters. you've got all these freaks on the show. a woman with a moustache? i mean, who wouldn't tune in to see a women with a moustache? you've for the tallest man in the world; a guy who's just a head. \n\njerry: i don't think so. \n\nkramer: look jerry, the show isn't about the circus, it's about watching freaks. \n\njerry: i don't think the network will go for it. \n\nkramer: why not? \n\njerry: look, i'm not pitching a show about freaks. \n\nkramer: oh come on jerry, you're wrong. people they want to watch freaks. this is a \"can't miss.\" \n\nnewman: kramer. \n\njerry: hello newman. \n\nnewman: come on lets go. i got the helmet. lets get the radar detector. \n\nkramer: all right i'll be back in a second. you guys coming to my party? (exits) \n\njerry and newman: yeah, sure. \n\njerry: what's this all about? \n\nnewman: we're making a trade. i'm giving him my motorcycle helmet - he's giving me his radar detector. \n\njerry: i didn't know you had a motorctcle. \n\nnewman: well my girlfriend had one. \n\njerry: you have a girlfriend? \n\nnewman: i had a girlfriend and she was pretty wild. \n\njerry: i never remember you with a girl. \n\nnewman: nevertheless, ... \n\njerry: this is a pretty bad deal for kramer. you know a radar detector is worth much more than that helmet. i think you're cheating him. \n\nnewman: don't say anything. \n\njerry: all right. \n\njerry: you know you're getting gypped over here. \n\nkramer: really, ah, \n\nnewman: we had a deal. are you reneging out of the deal? are you reneging? that's a renege. \n\nkramer: oh, stop saying 'reneging\". \n\nnewman: well you're reneging. \n\nkramer: i, okay, okay. i'm not reneging. \n\nnewman: all right give it to me. let go ... \n\nkramer: you let go - come on ...(they fight over the items) \n\njerry: gimme that - just gimme that. here. idiots! \n\nnewman: thanks buddy. so long he he ...(exits) \n\njerry: does that thing work? \n\nkramer: nah. \n\njerry: ... i just got a postcard from elaine? \n\ngeorge: really? \n\njerry: yeah, they're in london now. they'll be back in a few weeks. \n\ngeorge: i can't believe she got involved with a shrink. \n\ngeorge: so, what's happening with the tv show? you come up with anything? \n\njerry: no, nothing. \n\ngeorge: why don't they have salsa on the table? \n\njerry: what do you need salsa for? \n\ngeorge: salsa is now the number one condiment in america. \n\njerry: you know why? because people like to say \"salsa.\" \"excuse me, do you have salsa?\" \"we need more salsa.\" \"where is the salsa? no salsa?\" \n\ngeorge: you know it must be impossible for a spanish person to order seltzer and not get salsa. (angry) \"i wanted seltzer, not salsa.\" \n\njerry: \"don't you know the difference between seltzer and salsa?? you have the seltezer after the salsa!\" \n\ngeorge: see, this should be a show. this is the show. \n\njerry: what? \n\ngeorge: this. just talking. \n\njerry: (dismissing) yeah, right. \n\ngeorge: i'm really serious. i think that's a good idea. \n\njerry: just talking? well what's the show about? \n\ngeorge: it's about nothing. \n\njerry: no story? \n\ngeorge: no forget the story. \n\njerry: you've got to have a story. \n\ngeorge: who says you gotta have a story? remember when we were waiting for, for that table in that chinese restaurant that time? that could be a tv show. \n\njerry: and who is on the show? who are the characters? \n\ngeorge: i could be a character. \n\njerry: you? \n\ngeorge: yeah. you could base a character on me. \n\njerry: so, on the show, there's a character named george costanza? \n\ngeorge: yeah. there's something wrong with that? i'm a character. people are always saying to me, \"you know you're a quite a character.\" \n\njerry: and who else is on the show? \n\ngeorge: elaine could be a character. kramer.. \n\njerry: now he's a character. (pause) so everybody i know is a character on the show. \n\ngeorge: right. \n\njerry: and it's about nothing? \n\ngeorge: absolutely nothing. \n\njerry: so you're saying, i go in to nbc, and tell them i got this idea for a show about nothing. \n\ngeorge: we go into nbc. \n\njerry: \"we\"? since when are you a writer? \n\ngeorge: (scoffs) writer. we're talking about a sit-com. \n\njerry: you want to go with me to nbc? \n\ngeorge: yeah. i think we really go something here. \n\njerry: what do we got? \n\ngeorge: an idea. \n\njerry: what idea? \n\ngeorge: an idea for the show. \n\njerry: i still don't know what the idea is. \n\ngeorge: it's about nothing. \n\njerry: right. \n\ngeorge: everybody's doing something, we'll do nothing. \n\njerry: so, we go into nbc, we tell them we've got an idea for a show about nothing. \n\ngeorge: exactly. \n\njerry: they say, \"what's your show about?\" i say, \"nothing.\" \n\ngeorge: there you go. \n\njerry: (nodding) i think you may have something there. \n\njerry: so, the show would be about my real life. and one of the characters would be based on you. \n\nkramer: (thinks) no, i don't think so. \n\njerry: what do you mean you don't think so? \n\nkramer: i don't like it. \n\njerry: i don't understand. what don't you like about it? \n\nkramer: i don't like the idea of a character based on me. \n\njerry: why not? \n\nkramer: well it just doesn't sit well. \n\njerry: you're my neighbor. there's got to be a character based on you. \n\nkramer: that's your problem, buddy. \n\njerry: i don't understand what the big deal is. \n\nkramer: hey, i'll tell you what - you can do it on one condition. \n\njerry: whatever you want. \n\nkramer: i get to play kramer. \n\njerry: you can't play kramer. \n\nkramer: i am kramer. \n\njerry: but you can't act. \n\nkramer: phew! \n\njerry: okay, fine. we'll use newman. \n\nkramer: newman? \n\nnewman: use me for what? \n\njerry: nothin' what do you want? \n\nnewman: well, you'll never guess what happened to me today. i was uh, driving ( jerry and kramer turn away) home on the palisades parkway when i looked in the rear view mirror and what did i see? the fuzz. and it's funny because my new radar detector was on. i didn't hear a thing. isn't that strange? \n\nkramer: yeah. that's strange. \n\nnewman: a radar detector, as i understand it, detects radar! with a series of beeps and flashing lights. but oddly, for some reason i didn't hear a thing except for the sound of a police siren. \n\nkramer: that's queer uh? \n\nnewman: i want my helmet back! give me back my helmet and you're going to pay for that ticket. \n\nkramer: yeah, you better think again mojumbo. \n\nnewman: you gave me a defective detector. ... jerry? \n\njerry: buyer beware. \n\nnewman: are you going to give me back that helmet or not? \n\nkramer: no. we had a deal. there are no guarantees in life. \n\nnewman: no, but there's karma, kramer. \n\njerry: karma kramer? \n\nnewman: and one more thing. i'm not coming to your party. (exits) \n\njerry: (to himself) salsa, seltzer. hey, excuse me, you got any salsa? no, not selzer, salsa. (george doesn't react) what's the matter? \n\ngeorge: (nervous) nothing. \n\njerry: you sure? you look a little pale. \n\ngeorge: no, i'm fine. i'm good. i'm very good. \n\njerry: what, are you nervous? \n\ngeorge: no, not nervous. i'm good, very good. (a beat, then he snaps) i can't do this! can't do this! \n\njerry: what? \n\ngeorge: i can't do this! i can't do it. i have tried. i'm here. it's impossible. \n\njerry: this was your idea! \n\ngeorge: what idea? i just said something. i didn't know you were going to listen to me. \n\njerry: dont' worry about it. they're just tv executives. \n\ngeorge: they're men with jobs, jerry! they wear suits and ties. they're married, they have secretaries. \n\njerry: i told you not to come. \n\ngeorge: i need some water. i gotta get some water. \n\njerry: they'll give us water in there. \n\ngeorge: really? that's pretty good. \n\njerry: oh god, it's joe devola. \n\ngeorge: who? \n\njerry: this guy's a writer, he's a total nut. i think he goes to the same shrink as elaine. \n\njerry: oh god he saw me. \n\ndevola: hello jerry. \n\njerry: hey joe! how you doing? \n\ndevola: you're under no obligation to shake my hand. \n\njerry: oh, no, just a custom. uh, that's my friend george. you look good. \n\ndevola: why shouldn't i look good? \n\njerry: oh, no reason. you're into karate right? \n\ndevola: you want to hit me? \n\njerry: what are you doing here? \n\ndevola: i dreopped a script off. \n\njerry: ah, good for you. \n\njerry: well, ... \n\ndevola: you don't have to say anything. \n\njerry: no, uh, hey i guess i'll see you sunday night. \n\ndevola: why? \n\njerry: kramer's party. \n\ndevola: kramer's ... having ... a ... party? \n\njerry: no, no, he's not having a party. he's doing something. i don't know what it is. it's nothing. he's not doing anything. \n\ndevola: gee, i thought kramer and i were very close friends. \n\njerry: no, i'm sure you are. i'm sure you are very close friends. very close. \n\njerry: give my best to hinckley. \n\ngeorge: what was that? \n\njerry: i can't believe what i just did. i didn't know kramer didn't invite him. i better call kramer, ... \n\nreceptionist: they're ready for you. \n\ngeorge: okay, okay. look, you do all the talking, okay? \n\njerry: relax. who are they? \n\ngeorge: yeah, they're not better than me. \n\njerry: course not. \n\ngeorge: who are they? \n\njerry: they're nobody. \n\ngeorge: what about me? \n\njerry: what about you? \n\ngeorge: why them? why not me? \n\njerry: why not you? \n\ngeorge: i'm as good as them. \n\njerry: better. \n\ngeorge: you really think so? \n\njerry: no. \n\nstu: (to jerry, laughing about one of his bits) the bit, the bit i really liked what were the parakeet flew into the mirror. now that's funny. \n\ngeorge: the parakeet in the mirror. that's a good one, stu. \n\njerry: yeah, it's one of my favorites. \n\nrussell: what about you, george? have you written anything we might know? \n\ngeorge: (quickly making it up) well, possibly. i wrote an off-broadway show, \"la cocina.\" ..actually, it was off-off-broadway. it was a comedy about a mexican chef. \n\njerry: oh, it was very funny. there was one great scene with the chef - what was his name? \n\ngeorge: pepe. \n\njerry: oh, pepe. yeah, pepe. and, uh, he was making tamales. \n\nsusan: oh, he actually cooked on the stage? \n\ngeorge: no, no, he mimed it. that's what was so funny about it. \n\nrussell: so, what have you two come up with? \n\njerry: well, we've thought about this in a variety of ways. but the basic idea is i will play myself- \n\ngeorge: (interrupting) may i? \n\njerry: go ahead. \n\ngeorge: i think i can sum up the show for you with one word nothing. \n\nrussell: nothing? \n\ngeorge: (smiling) nothing. \n\nrussell: (unimpressed) what does that mean? \n\ngeorge: the show is about nothing. \n\njerry: (to george) well, it's not about nothing. \n\ngeorge: (to jerry) no, it's about nothing. \n\njerry: well, maybe in philosophy. but, even nothing is something. \n\nreceptionist: mr. dalrymple, your niece is on the phone. \n\nrussell: i'll call back. \n\ngeorge: (attempting to spell his last name) d-a-l-r-i-m-p-e-l? \n\nrussell: (obviously dislikes george) not even close. \n\ngeorge: is it with a \"y\"? \n\nrussell: no. \n\nsusan: what's the premise? \n\njerry: ..well, as i was saying, i would play myself, and, as a comedian, living in new york, i have a friend, a neighbor, and an ex-girlfriend, which is all true. \n\ngeorge: yeah, but nothing happens on the show. you see, it's just like life. you know, you eat, you go shopping, you read.. you eat, you read, you go shopping. \n\nrussell: you read? you read on the show? \n\njerry: well, i don't know about the reading.. we didn't discuss the reading. \n\nrussell: all right, tell me, tell me about the stories. what kind of stories? \n\ngeorge: oh, no. no stories. \n\nrussell: no stories? so, what is it? \n\ngeorge: (showing an example) what'd you do today? \n\nrussell: i got up and came to work. \n\ngeorge: there's a show. that's a show. \n\nrussell: (confused) how is that a show? \n\njerry: well, uh, maybe something happens on the way to work. \n\ngeorge: no, no, no. nothing happens. \n\njerry: well, something happens. \n\nrussell: well, why am i watching it? \n\ngeorge: because it's on tv. \n\nrussell: (threatening) not yet. \n\ngeorge: okay, uh, look, if you want to just keep on doing the same old thing, then maybe this idea is not for you. i, for one, am not going to compromise my artistic integrity. and i'll tell you something else, this is the show and we're not going to change it. (to jerry) right? \n\njerry: (to russell) how about this i manage a circus.. \n\njerry: i don't even want to talk about it anymore. what were you thinking? what was going on in your mind? artistic integrity? where, where did you come up with that? you're not artistic and you have no integrity. you know you really need some help. a regular psychiatrist couldn't even help you. you need to go to like vienna or something. you know what i mean? you need to get involved at the university level. like where freud studied and have all those people looking at you and checking up on you. that's the kind of help you need. not the once a week for eighty bucks. no. you need a team. a team of psychiatrists working round the clock thinking about you, having conferences, observing you, like the way they did with the elephant man. that's what i'm talking about because that's the only way you're going to get better. \n\ngeorge: . . . i thought the woman was kind of cute. \n\njerry: hold it. i really want to be clear about this. are you talking about the woman in the meeting? is that the woman you're talking about? \n\ngeorge: yeah, i thought i might give her a call. i, i don't meet that many women. i meet like three women a year. i mean, we've been introduced. she knows my name. \n\njerry: it's completely inappropriate! \n\ngeorge: why? maybe she liked me. i, i mean she was looking right at me. you know, i think she was impressed. you know, we had good eye contact the whole meeting. \n\njerry: oh, i forgot to call kramer. \n\ngeorge: wait a minute let me call susan. \n\njerry: no, no this is more important. \n\ngeorge: she might be leaving to work any minute. \n\njerry: no, i got to warn him that i told joe devola about his party. \n\ngeorge: no. \n\nelaine: what is it? \n\ndr. reston: i was just thinking about this patient of mine. \n\nelaine: what? \n\ndr. reston: just wondering if he's taking his medication. \n\nelaine: well, come on we're on vacation. \n\njerry: well we were standing uh, inn the waiting area there, and you know how devola is. he's all, ... (buzzer) \n\nkramer: yeah (to buzzer) \n\ngeorge: (oc) it's george. \n\njerry: and so, uh i felt very uncomfortable with him and you know i just blurted out something about your party. \n\nkramer: whoa, back up a second. \n\njerry: well, i didn't know that you didn't invite him. \n\nkramer: why would you think i would invite him? \n\njerry: i just a ssumed, ... \n\nkramer: assumed? never assume anything. i don't want that nut in my house. you know he's on medication. \n\ngeorge: hello, oh, hello. you remember, ... susan, from n b c. \n\njerry: of course. how are you? \n\nsusan: fine, it's good to see you. \n\ngeorge: and this is kramer. \n\nsusan: hello. \n\ngeorge: all right go ahead susan, tell him. \n\njerry: tell me what? \n\nsusan: well, i, (phone rings) \n\njerry: uh, sorry, excuse me one second. hello. \n\ntel: hi, would you be interested in switching over to tmi long distance service. \n\njerry: oh, gee, i can't talk right now. why don't you give me your home number and i'll call you later. \n\ntel: uh, i'm sorry we're not allowed to do that. \n\njerry: oh, i guess you don't want people calling you at home. \n\ntel: no. \n\njerry: well now you know how i feel. (hangs up) \n\ngeorge: well, go ahead, tell him. \n\njerry: kramer, are you drinking that milk? \n\nkramer: yeah. \n\njerry: what's the expiration date on that? \n\nkramer: september third. \n\njerry: the third? \n\ngeorge: and susan the third? \n\nkramer: um, uh, ugh, ... \n\nsusan: noooo... (kramer throws up on susan) \n\ngeorge: i never should have brought her up there. should have known better. should have seen it coming. i didn't see it coming. \n\njerry: i think she saw it coming. \n\ngeorge: you know she was behind the idea. she was going to champion the show. that's what i was bring her up there to tell you. and she liked me. \n\njerry: look just because kramer vomited on her doesn't mean the deal is dead. \n\ngeorge: what, are you crazy? it's a traumatic thing to be thrown up on. \n\njerry: vommiting is not a deal breaker. if hitler had vommited on chamberlin, chamberlind still would have given him chekoslovakia. \n\ngeorge: chamberlind, you could hold his head in nthe toilet, he'd still give you half of europe. \n\njerry: what happened to you? \n\nkramer: devola came after me. \n\njerry: what? devola? see i told you this guy is crazy. i can't believe this. what happened? \n\nkramer: can i have a coffee. ... what, you know i was walking home and i had to pick up my helmet from the shop, you know. i gota new strap. and i had it on you know, and i was checking the strap out to make sure it fit. then suddenly i feel this kick hit me on the side of the head. it knocks me down, i look up and it's crazy joe devola. and he say's, \"that's what i thin k of your party.\" \n\njerry: boy, that is some kick. \n\nkramer: well, yeah, newman's helmet, it saved my life. look at that. \n\njerry: wow, newman's helmet. \n\ngeorge: holly. \n\nkramer: i got bad news for you buddy. devola says you're next. \n\njerry: me, why? \n\nkramer: he doesn't like you. \n\njerry: what does he want from me? i didn't do anything. see this is all elaine's fault. she took off to europe with his psychiatrist. he probably can't get his medication. now i got some nut after me. \n\nkramer: pass the cream. \n\ngeorge: wait a second. (smells it). all right. \n\njerry: (going through couch cushions) where the hell did i put this? \n\nkramer: what are you looking for? \n\njerry: the remote, the remote, i can't find the remote. did i lost, i lost it. did you take it? did you put it some place? \n\nkramer: no, no, no. \n\njerry: all right, what is this? \n\nkramer: (clueless) what is what? \n\njerry: all right, very funny. i get it. \n\nkramer: you're in a weird mood. \n\njerry: come on. go back to your apartment and fix it. \n\nkramer: fix what? \n\njerry: your pants! \n\nkramer: what is this? what have i got one pant leg on for? \n\njerry: don't you know? look-look at your face! you only shaved the right side of your face! what is this? a joke? \n\nkramer: no, t's a joke.. a joke... a joke... you think this is funny? \n\njerry: go look at your face in the mirror. \n\nkramer: wha-huh-wha-huh... \n\njerry: (pressing intercom) yeah? \n\ngeorge: (on intercom) it's george. \n\njerry: come on up. \n\nkramer: i don't believe this. \n\njerry: you mean, you didn't know you were doing any of these things? \n\nkramer: no, i swear. \n\njerry: i bet this is from that kick from that crazy joe davola. you better see a doctor and get some x-rays. \n\ngeorge: (to kramer) ah! you're just the man i'm looking for. \n\nkramer: me? \n\ngeorge: yeah, here you go. \n\nkramer: what's this? \n\ngeorge: a dry-cleaning bill? \n\njerry: from that woman at nbc? \n\ngeorge: yeah. \n\nkramer: a dry-cleaning bill for what? \n\ngeorge: for vomiting on her vest! \n\nkramer: oh, come on george! i didn't do that on purpose! \n\ngeorge: well, i shouldn't have to pay for it! \n\nkramer: well, neither should i! jerry's the one who left the milk in the refrigerator. \n\ngeorge: (to jerry) yeah, your milk. \n\njerry: (pointing kramer) he drank it. \n\nkramer: i didn't know. \n\njerry: all right, well, we should all chip in i guess. \n\nkramer: yeah. \n\njerry: how much was it to clean the vest? \n\ngeorge: eighteen dollars. \n\njerry: can you get vomit out of suede? \n\ngeorge: i don't know. \n\nkramer: yo-yo ma! \n\njerry: what? yo-yo ma? \n\nkramer: what about him? \n\njerry: you just said 'yo-yo ma'. \n\ngeorge: what's yo-yo ma? \n\njerry: he's a cellist. (to kramer) you should see a doctor today. \n\ngeorge: all right, come on, come on, let's go. six dollars. \n\njerry: i can't believe she sent you that dry-cleaning bill. \n\ngeorge: i know! \n\njerry: that doesn't really bode well for the show, does it? \n\ngeorge: the show! forget about the show! we should take the idea to a different network \n\njerry: oh, yeah. right. like anybody's ever gonna do this! how did you get me to go along with that? a show about nothing! \n\ngeorge: it was a good idea. susan liked it. now, if he hadn't vomitted all over her, we'd be writing it right now. \n\nkramer: jeez! \n\ngeorge: anyway. \n\njerry: (interrupts) what are you doing? what's wrong with you? what're you doing? give me that phone! go to your apartment and lie down, i'll make an appointment for a doctor today. (on the phone) hello? oh hi! i'm sorry. no, that's my next door neighbor. he's not quite himself. he got kicked in the head. what? really? you're kidding! today? yeah! sure! we could make it. two o'clock? yeah, we would do that. okay. great! thanks a million! okay, bye. \n\ngeorge: what? \n\njerry: nbc! they wanna have another meeting about the idea. \n\ngeorge: they wanna have another meeting? they wanna buy it?! they wanna but it?! oh! i tell you! we're gonna be rich!! what are we gonna get for this? fifty, sixty thousand? \n\njerry: i don't know about sixty. \n\ngeorge: oh, it's gotta be fifty! hee hee! you know how much ted danson makes, huh? \n\njerry: ted danson! now, how are you comparing us to ted danson? \n\ngeorge: i didn't say 'we're ted danson.' \n\njerry: yes, you did. you said 'we're ted danson'! \n\ngeorge: oh! \n\njerry: you know, i think he wears a piece. \n\ngeorge: yeah, don't worry. he can afford it. \n\njerry: i'm ten minutes slow again! that's it for this piece of junk! i've had it. \n\ngeorge: what, is that the one your parents gave you? \n\njerry: yeah! but it never works. you know we're supposed to be there by two o'clock. we should take a cab. \n\ngeorge: all right, we'll be a little late, i,m not taking a cab. \n\njerry: i'll pay for it. \n\ngeorge: it's not the money! \n\njerry: well, what is it you object to? the comfort? the speed? the convenience? \n\nleo: jerry! \n\njerry: uncle leo! \n\nleo: helloooo! \n\njerry: hello there, how're you doing? \n\nleo: ha ha! how are you? \n\njerry: good, good. \n\nleo: how's your mom and dad? \n\njerry: good, fine. \n\nleo: what are you getting to be too much of a big shot now to give me a call? i don't hear from you anymore! \n\njerry: oh, no. i've been kinda busy. it's all. \n\nleo: you know where i just came from? \n\njerry: (not enthousiastic at all) oh, sure. danny. \n\nleo: he used to be in the pajama business. i used to be able to get pajamas for free. i used to come over and get pajamas all the time! \n\njerry: oh, yeah, yeah. i remember. \n\nleo: the funny thing is i can't wear 'em. i get too hot. i sleep in my underwear and a t-shirt. if it gets too hot, i just get the t-shirt off! anyway, danny says to me 'you need any pajamas?' \n\njerry: (interrupts) i-i'm sorry uncle leo, i really gotta get going. \n\nleo: oh. well. you gotta get going, so go. \n\njerry: we, we got a big meeting with the president of nbc. \n\nleo: nobody got a gun to your head! \n\njerry: (seems sincere) yeah, i'm really sorry, uh. \n\nleo: go. really. i understand. you got an appointment, go to your appointment. \n\njerry: i'm sorry, really. \n\nleo: you know, i know plenty of people in hollywood too! \n\njerry: sorry, really. \n\nkramer: (from inside) yeah? \n\nnewman: come on, are you ready? let's go! \n\nkramer: for what? \n\nnewman: what's the matter with you? i just talked to you fifteen minutes ago. \n\nkramer: what about? \n\nnewman: the courthouse. you gotta go with me to the courthouse. i'm contesting a ticket today. \n\nkramer: i can't, i'm going to the doctor's later. \n\nnewman: you gotta go with me. i mean, you-you're my alibi. you have to take the stand. \n\nkramer: well, i can't! \n\nnewman: well, let me remind you of something. you wouldn't be here if it wasn't for me and my helmet. i saved your life! you would be dead! dead! you would cease to exist! you would be gone for the rest of eternity! you wouldn't even begin to comprehend what that means!! \n\nkramer: shut up! i'll get my coat! \n\nkramer: don't step on anything. \n\njerry: you see the look on my uncle's face? did you see how insulted he was? what could i do? waht are we supposed to do? you can't leave. there's no excuse good enough to justify walking away from a conversation with one of my relatives. \n\ngeorge: i didn't shave this morning. i don't feel like myself. \n\njerry: you could be a fireman on a fire truck on the way to a fire. you bump into one of my relatives. 'i'm sorry uncle leo, there's a building full of people burning down. i really do have to be running.' he'll go 'go. go ahead. go to your fancy fire. if that's what you have to do.' \n\ngeorge: look at this. \n\njerry: why didn't you shave this morning? \n\ngeorge: 'cause i shaved yesterday in the afternoon. \n\njerry: why? \n\ngeorge: because of the day before. it's a long story. \n\njerry: is that joe davola? \n\ngeorge: it's not him! \n\njerry: i can't live tlike this. i'm being stalked. \n\nreceptionist: mister seinfeld? they're ready for you. \n\njerry: oh. \n\ngeorge: mister seinfeld? what about mister costanza? i'm not here? \n\njerry: all right. look. now, you promised you're gonna be a little more flexible on the nothing idea, okay? jsut a little. \n\ngeorge: okay. a little. \n\nnewman: okay, you're all set? you got your story? \n\nkramer: no. \n\nnewman: when the cop stopped me, i told him that i was rushing home because my friend was about to commit suicide. \n\nkramer: uhm... \n\nnewman: now, you're that firend. now, all we need is a reason why you were going to commit suicide. \n\nkramer: i never had an air conditioner. \n\nnewman: no! that's no reason to kill yourself! \n\nkramer: why? it gets hot at night, you can't sleep. you ever tried to sleep in a really hot room? \n\nnewman: every night i sleep in a really hot room, i don't want to kill myself. \n\nkramer: well, i slept in really hot rooms and i wanted to kill myself. \n\nnewman: no, no, no. that's not gonna work. something else. \n\nkramer: i was never able to become a banker. \n\nnewman: banker! so you're killing yourself because your dreams of becoming a banker have gone unfulfilled. you-you-you-you can't live without being a banker. \n\nkramer: yeah, yeah. if i can't be banker, i don't wanna live. \n\nnewman: you must be banker. \n\nkramer: must be banker. \n\nnewman (satisfied): okay, we'll go with the banker story. \n\ngeorge: the story is the foundation of all entertainment. you must have a good story otherwise it's just masturbation. \n\nrussel: and people really have to care about the characters. \n\ngeorge: care? forget about care. love. they have to love the characters. otherwise, why would they keep tuning in? \n\njerry: wouldn't tune in. \n\ngeorge: would they tune in? \n\njerry: no tune. \n\nrussel: we like to look at the show as if it were in ekg. you have your highs and your lows and it goes up and down. \n\ngeorge: the show will be like a heart attack! \n\njerry: just a huge massive coronary. \n\nrussel: so what you said last week about no story, you're a little flexible on that now. \n\ngeorge: is-is that what i said 'no story'? because jerry had to tell me later. \n\njerry: he couldn't believe it. \n\ngeorge: (laughs, snorts) i said, i said 'get outta here! no story? is that what i said?' \n\npolice officer: well, i informed him that he was exceeding the speed limit and uh, that's when he told me that he was racing home because his friend was about to commit suicide. \n\njudge: and then what happened? \n\npolice officer: well, then he became very loud and hysterical. he was flailing his arms about as he told the story and then he threw himself on the ground and he grabbed me around the legs and then he begged me to let him go. and when i refused, that's when he began to scream 'my friend's going to die, my friend's going to die.' \n\nrussel: look. i don't know how you two guys feel but we would really like to be in business with you. \n\ngeorge: well, we would like to be in business. let's do business. we'll have some business. let's have business. \n\njerry: we would love to be in business. we'll do business. we're in business. it's... it's business. this is business. \n\ngeorge: yeah! \n\nstu: would it be possible to get a-a-a copy of 'la cocina'? \n\njerry: your off-broadway play. \n\ngeorge: oh, oh. uh, you know. it's the damndest thing. i, uh, i moved recently and my files, pfff, disappeared. now, i-i don't know if they fell off the truck or if there was some sort of foul play but let me tell you something. i'm not through with that moving company. \n\njerry: (backs his story) hmm, hmm. \n\ngeorge: that's my vow to you. \n\nrussel: well, i got a feeling about you two. and even more than that. i place a great deal of confidence in that lady's judgment. \n\ngeorge: oh! that's good judgment. that's a pile of judgment there. sure. \n\njerry: oh! taht's judgment. yes, yes. judgment with earrings on. yeah. \n\nrussel: (gets up) so, let's make a pilot. \n\nnewman: i had gone up to westchester. i go there every tuesday. i do charity for the blind in my spare time for the lighthouse. i was in the middle of a game of parcheesi with an old blind man and i excused myself to call my friend as he was very depressed lately because he never became a banker. \n\njudge: i don't understand. \n\nnewman: you see, it'd been his lifelong dream to be a banker and he uh, just the day before he was turned down by another bank. i believe it was the manufacturer's hanover on lexington and 40th street. that was the third bank to turn him down so i was-i was a little concerned. i wanted to see how he was doing. well, your honor, he was barely audible. but i distinctly recall him say... \n\nkramer: (interupts involuntarily) yo-yo ma! \n\nnewman: so i sped home to save my friend's life and i was stopped for speeding. yes, i admit i was speeding but it was to save a man's life. a close friend. an innocent person who wanted nothing more out of life than to love, to be loved and to be a banker. \n\njudge: so then he didn't kill himself. \n\nnewman: no sir. he did not. but only by thge grace of god. he's in the courtroom today \n\ngeorge: see? \n\njerry: yeah! \n\ngeorge: i told you, i told you! ha ha ha! ooh ooh! \n\njerry: now, all we gotta do is write it. \n\ngeorge: yes! how're we gonna do that? \n\nsusan: hey! congratulations! \n\njerry: thanks. \n\ngeorge: oh, thank you. \n\njerry: thank you, thanks. \n\ngeorge: thanks. gee, you know, i thought you were mad at me. \n\nsusan: no. \n\nreceptionist: mister seinfeld, you have a phone call. \n\njerry: phone call? who knows i'm here? \n\ngeorge: when you sent me the-the bill for the dry-cleaning. i thought the show didn't have a chance. \n\nsusan: oh, it was only vomit. \n\ngeorge: anyway, i-i would like to-to pay for the cleaning. \n\nsusan: oh no-no, it's okay. *comment from transcriber yeah, she doesn't want to be paid, didn't she send the bill?* \n\ngeorge: no-no-no, we all chipped in. we have the money. \n\nsusan: well, it was eighteen dollars. \n\ngeorge: okay, uh, eighteen dollars, and there it is. there you go. so maybe we could get together this weekend. \n\nsusan: yeah. call me. \n\ngeorge: all right, great. \n\nsusan: bye. \n\njerry: bye thanks. \n\ngeorge: (chuckles) bye, thanks. (to jerry, when susan is far) i can't believe she took the money. \n\njerry: why? \n\ngeorge: i offered to pay. she should've said no. \n\njerry: she did, you insisted. \n\ngeorge: maybe this is what the pilot should be about, vomiting on somebody's vest. \n\njerry: nah! \n\ngeorge: how much are we gonna get for this? fifty, sixty thousand? \n\njerry: oh, i d-i don't know. i d--- \n\ngeorge: oh, gotta get fifty. gotta get fifty. all right, i tell you what. we go to the coffee shop, you call your manager. maybe they made an offer. \n\njerry: okay. \n\ngeorge: (excited, pushing jerry forward) all right, let's go, let's go, let's go, come on. \n\ngeorge: thirteen thousand? \n\njerry: thirteen thousand. \n\ngeorge: a piece? \n\njerry: no, for both! \n\ngeorge: that's insulting! ted danson makes eight hundred thousand dollars an episode. \n\njerry: oh, would you stop with the ted danson? \n\ngeorge: well, he does. \n\njerry: you're nuts! \n\ngeorge: i'm sorry. i can't live knowing ted danson makes that much more than me. who is he? \n\njerry: he's somebody. \n\ngeorge: what about me? \n\njerry: you're nobody. \n\ngeorge: why him? why not me? \n\njerry: he's good, you're not. \n\ngeorge: i'm better than him. \n\njerry: you're worse, much much worse. (crouches in booth) that's davola! \n\ngeorge: (crouches too) what? where? where? \n\njerry: outside! i saw him outside! \n\nelaine: what is it? \n\nboyfriend: oh, it's this patient. \n\nelaine: (sighing) again? \n\nboyfriend: i'm fairly certain. i forgot to leave him an extra prescription for his medication. \n\nelaine: well, so, he can live without his valium for a couple of days. \n\nboyfriend: nah, you don't understand. he could be dangerous. \n\njerry: go outside and see if he's still there. \n\ngeorge: i can't go out there, he knows we're friends. \n\njerry: well, what are we supposed to do? i gotta take kramer to the doctor. \n\ngeorge: tell the cop. \n\njerry: good idea. \n\ncop: yeah, all right. just let me get a muffin. \n\njerry: thanks. \n\njerry: (back in booth) he's gonna get a muffin and then he'll walk us outside. this is a great way to go through life. \n\ngeorge: i thought you said he was gonna get a muffin. \n\njerry: (bossy) what are you doing? \n\ncop: what? \n\njerry: what, are you ordering food now? \n\ncop: yeah! yeah, i decided to get a sandwich. \n\njerry: what happened to the muffin? \n\ncop: i got a little hungry. \n\njerry: all of a sudden you get hungry? \n\ncop: yeah! you got a problem with that? \n\njerry: no! enjoy your lunch. \n\ngeorge: i thought he was just gonna have a muffin. \n\njerry: all of a sudden he gets hungry. \n\ngeorge: you know, a muffin can be very filling. \n\njerry: i know! \n\nnewman: (interrogating kramer) mister kramer, you heard the testimony so far. would you please tell the court in your own words what happened on the afternoon of september 10th? \n\nkramer: what do you mean 'my own words'? whose words are they gonna be? \n\nnewman: you know what i mean. \n\nkramer: (to judge) i was very upset that day. \n\nnewman: and why was that? \n\nkramer: (to newman) would you let me say it? let me talk! \n\nnewman: all right, all right. go ahead, go ahead. \n\nkramer: all right. \n\nnewman: okay. \n\nkramer: (to judge) i was very upset that day because i could never become a banker. \n\nnewman: and that failure to become a banker was eating at you. eating-eating-eating at you inside. \n\nkramer: (not convincing) uh, yeah. \n\nnewman: it was your family that pushed you into banking , it was their dream for you... \n\njudge: mister newman. \n\nnewman: your honor, i'm only trying to establish mister kramer's fragile emotional state, my entire case depends on it. \n\njudge: uh, continue. \n\nnewman: as you were saying, mister kramer... \n\nkramer: what was the question? \n\nnewman: you're telling how your parents pushed you into banking. \n\nkramer: uh, well, my father when i was a kid, he took me to the bank and he lifted me up and he pointed to the teller and he said 'sonny boy, take a good look at him, that's gonna be you some day.' \n\nnewman: but you never became a banker, did you mister kramer? why? why did you fail? \n\nkramer: i don't know. \n\nnewman: it was because you hated your father and you would do anything to displease him. isn't that true? \n\njudge: uh, could you get to the speeding? \n\nnewman: yuh, yes. i intend to your honor. and then, on the afternoon of september 10th, you received a phone call did you not? \n\nkramer: (puzzled) phone call? \n\nnewman: yes, a phone call! \n\nkramer: from who? \n\nnewman: from me! \n\nkramer: from you? \n\nnewman: yes, from me!! i called you remember? \n\nkramer: you called me? \n\nnewman: yes, i called you, you idiot! because you were going to... you were going to... remember? \n\nkramer: what? \n\nnewman: you were going to... \n\njudge: i'm afraid i'm gonna have to call a--- \n\nnewman: yes, the banker!!! \n\nkramer: what banking? \n\nnewman: a banker! a banker! your honor, your honor, your honor... \n\njudge: that's enough already. \n\nnewman: your honor, mister kramer's obviously very distraught. \n\nkramer: i'm distraught!?! wooh-wooh-hoo! \n\nnewman: (to kramer) you shut up! (to judge) i demand a recess so i can take him outside and help him regain hius composure. \n\njudge: that'll be seventy-five dollars. \n\nnewman: (strangling kramer) what's the matter with you? we had it all worked out! \n\njerry: do you see him? \n\ngeorge: i'm not* sure. \n\njerry: well, either you see him or you don't. \n\ngeorge: all right. i don't. \n\njerry: (looking at the cop) what is he doing? is he getting coffee? i think he's getting coffee.! \n\ngeorge: what's with this guy? \n\njerry: (still bossy) did you just order coffee? \n\ncop: yeah. \n\njerry: this is really too much. \n\ncop: what is your problem? \n\njerry: well, i'm sitting over there waiting for you to finish your sandwich for twenty minutes. now you're drinking coffee, that's gonna be another ten minutes. \n\ncop: well, you're just gonna have to wait. \n\nkramer: never said anything about the banking. \n\nnewman: you're off your rocker. \n\njerry: hey you guys! \n\nkramer: hey! \n\njerry: what are you doing here? \n\nkramer: what are you doing here? \n\njerry: hey, is davola outside? \n\nkramer: davola? \n\njerry: yeah. \n\nkramer: no, i didn't see him. \n\nnewman: crazy joe davola? \n\ngeorge: (reading the tabs) jerry, yours is eleven dollars. \n\njerry: eleven dollars for what? \n\ngeorge: muffin, sandwich and coffee! \n\njerry: (to kramer) hey, nbc okayed our idea. we're gonna make the pilot. \n\nkramer: you're gonna do the circus freak show, uh? \n\njerry: no. \n\nnewman: pilot? so what do you make for something like that? fifty? sixty thousand? \n\ngeorge: what's the difference? the money is not important. \n\njerry: (looking outside) hey newman, is that your red car? \n\nnewman: yeah. \n\njerry: i think you're getting a ticket. \n\nnewman: deh! \n\nkramer: run, run! go, go, go! \n\nnewman: hey! what are you doing? it's after six o'clock! you can't give me a ticket! hey, you're not gonna get away with this. i'll fight this. i got witnesses. \n\nkramer: i saw the whole thing! \n\njerry: maybe this whole thing would be a good idea for the pilot. \n\ngeorge: ah, get outta here. the vomiting is much funnier. \n\njerry: oh, like you know what you're talking about! \n\ngeorge: no, you do! \n\njerry: so george and i went up to nbc and we told them the idea for a series now we're just waiting to sign the contract. \n\nhelen: and they liked the idea? \n\njerry: yeah. \n\nmorty: what'ya got leather seats here? \n\nhelen: since when is george a writer? \n\njerry: what writer? it's a sitcom. \n\nhelen: this is so exciting. when are you going to sign the contract? \n\njerry: soon, there's a couple of problems. \n\nmorty: jerry, i wanna tell you that meal was the worst. \n\njerry: what do you expect? it's airline food. \n\nmorty: they give you that *fish.* \n\njerry: how could you eat fish on a plane? \n\nmorty: because she puts up such a big stink every time i have a piece of meat. \n\nhelen: what kind of problems? \n\njerry: well, george doesn't think $13,000 is enough money. \n\nhelen: what? he's not even working. \n\nmorty: george is right. those people will try to get away with murder. believe me. they're all crooks. \n\nhelen: jerry, i want you to sign that contract. \n\njerry: we're going to sign it. we're going to sign it. in fact george is out with the woman from nbc right now. \n\ngeorge: so, i'm uh, i'm afraid we're going to have to pass. \n\nsusan: yu - you're passing? \n\ngeorge: well, it's . . . much too low. \n\nsusan: are you and jerry in complete agreement on this? \n\ngeorge: tsh (snorts) ah, yeah, we've - we've talked . . . i believe i can speak for the both of us on this. \n\nsusan: well be-because you know that, because this is your first show it's a pretty standard deal. \n\ngeorge: standard? \n\nsusan: yeah. \n\ngeorge: is ted danson's deal standard? \n\nsusan: ted danson? \n\ngeorge: you know, the guy from cheers. \n\nsusan: yeah, i know who he is. (laughs) you're not ted danson. \n\ngeorge: i didn't say i was ted danson. \n\nsusan: all right, i'll tell russell tomorrow. \n\ngeorge: you tell russell. \n\nsusan: oh, um, before i forget, . . . cuban cigars. it's a present from my father. \n\ngeorge: oh... do i have to write him a note or something? \n\nsusan: yeah, i am sure he'd appreciated that. \n\ngeorge: well what would i say in the note? \n\nsusan: ah, you're a writer. you'll think of something. \n\ngeorge: oh-ohf (snorts) yeah, i'm a writer. (laughs) \n\nhelen: were you waiting long at the gate? \n\njerry: um, i don't even know? \n\nhelen: where's that watch we bought you? \n\njerry: oh uh ... \n\njerry: that's enough with this piece of junk i've had it. (throws watch in garbage) \n\ngeorge: wha-is that the one your parents gave you? \n\njerry: yeah, but it never works. \n\njerry: . . . it's uh, being fixed. \n\nmorty: i got a guarantee on that watch. give it to me, i'll take it back to where we got it. \n\njerry: it's at the jeweler. \n\nmorty: you send me the bill. \n\njerry: i'm not sending you the bill. \n\nhelen: that watch was a gift. you shouldn't have to pay for it. \n\ngas station attendant: that's uh, $18.50. \n\nmorty: here, i got it. \n\njerry: what are you talking about? it's my car. let me pay for the gas. \n\nmorty: no, no put it away . . . \n\njerry: dad! \n\nmorty: stop it. \n\njerry: i have money. i make money. \n\nmorty: yeah, yeah, you make money. \n\njerry: you don't think i make money. that's what you think isn't it? \n\nhelen: no, i don't think that. \n\njerry: yes you do. that's what you both think. \n\nmorty: i'm paying. \n\njerry: dad i'm paying. \n\nmorty: get out of here. \n\njerry: you're not paying. \n\nmorty: now jerry please, do not do this to your father. over my dead body jerry. i'll tell you right now, you're not going to do it. \n\njerry: no don't do this. you're not doing this. i will fight you. no you don't... no. \n\njerry: boy, you got a lot of stuff here. . . . dad, what are you doing? \n\nmorty: nothing nothing. \n\njerry: leave it. what about your back? \n\nhelen: morty, what are you doing? \n\nmorty: all right, all right. \n\njerry: you come all the way up here to see a back specialist and you're lifting heavy suit cases. \n\nkramer: hey, morty. \n\nmorty: hey, mr. kramer. ha ha ha. \n\nkramer: hey, mrs. seinfeld. hi \n\nhelen: ha, ha, ha oh, what happened to you? \n\nkramer: oh, ah, well some guy kicked me in the side of the head. \n\nhelen: what guy? \n\nkramer: ah, w-crazy joe devola. \n\nhelen: why? \n\nkramer: well, i was having this party and i didn't invite him and then jerry, tipped him off. \n\njerry: why did you tell this crazy guy that kramer didn't invite him to his party? \n\njerry: i didn't know he wasn't invited. \n\nmorty: hey, these are very comfortable pants. you know what i paid for these jerry? \n\nhelen: so why did you say anything? \n\njerry: it was a mistake. \n\nmorty: they're good around the house -- and they're good for outside. \n\nhelen: are you okay? \n\nkramer: oh, yeah, yeah. i was a little off last week, huh jerry -- yeah but the doctor says it was just a slight concussion \n\nhelen: so what's the matter with this devola guy? \n\njerry: he's got like a chemical imbalance. he needs to be on medication. \n\nkramer: oh, yeah, yeah. he's after jerry now. \n\njerry: kramer!! \n\nhelen: he's what?! \n\njerry: he's joking. \n\nhelen: he's after you? \n\njerry: nooo. \n\nhelen: why is he after you? \n\njerry: he's not after me. \n\nhelen: morty, do you here this? some crazy guy is after jerry. \n\nmorty: i'll make a few phone calls. \n\njerry: who you gonna to call? \n\nmorty: what are you worried about? \n\nhelen: i want to know what you did to this guy that he's after you. \n\njerry: i didn't do anything. \n\nhelen: well you must have done something. \n\njerry: no, he just doesn't like me. \n\nhelen: doesn't like you? how could anyone not like you? \n\njerry: you know it seems impossible. \n\nhelen: doesn't - doesn't like you? how could that be? \n\njerry: ma, i know this may be hard for you to understand but i am sure there are many people who do not like me. \n\nhelen: huh, jerry, don't say that. \n\njerry: it's true. \n\nhelen: no, it isn't! it's not true. you're a wonderful, wonderful boy. everybody likes you. it's impossible not to like you. impossible. morty? \n\nmorty: maybe some people don't like him. i could see that. \n\nhelen: kramer? \n\nkramer: yeah, i like him. hey jerry, what time you got? \n\njerry: um, i haven't got my watch on. it's being fixed. \n\nkramer: when you getting it back? \n\njerry: uh, next week. \n\nkramer: next week? how come it's takin' so long? \n\njerry: huh? \n\nkramer: i said how come it's takin' so long? \n\njerry: i don't know. they're, backed up. \n\nkramer: wait a minute, wait a minute, where did you take it? \n\njerry: where'd i take it? \n\nkramer: yeah. \n\njerry: where did i take it? where did i take it? (stabbing a knife into a cutting board) umm, to that place on, uh columbus and 85th. okay? \n\nkramer: what? jimmy sherman? \n\njerry: yeah. \n\nkramer: yeah, i know the guy. i take my stuff in there all the time. yeah, i bet i can get your watch back by tomorrow morning. \n\njerry: no, kramer, i don't want you to say anything to him. \n\nkramer: no, i'd be happy to. he's a friend of mine. \n\njerry: i'd like to follow the regular procedures. i don't want any special treatment. \n\nkramer: hey, i'm going to get that watch back for you by tomorrow, buddy. you see. \n\nmorty: bring me the receipt. \n\nkramer: i get that too. (exits) \n\njerry: be right back. (follows kramer out) \n\njerry: there's no watch ... i threw it in the garbage can on the street. it didn't keep good time. my parents gave it to me, but i didn't like it. so don't mention it again, okay! \n\nkramer: y-yeah, all right. \n\njerry: all right. \n\nkramer: wait, wait, . . .y-yea, w-no dit dit g- (kramer noises) \n\nhelen: what was that about? \n\nkramer: oh, no, uh, he's got my calamine lotion and uh, i told him not to return it. if he needs it he should keep it. he's got uh, he's got a thing on his ankle. \n\nhelen: how can anyone not like him. \n\nmorty: hi, morty seinfeld. i have a two o'clock appointment. \n\nreceptionist: yes, mr. seinfeld. would you please fill this out. \n\nmorty: all this? this whole thing? it's going to take me forty-five minutes. \n\nreceptionist: i know. it's very long. \n\nmorty: look at this. it's a book. employer's address. whydo they need this? you know i never had a back problem until that night i slept on the convertible sofa. (hu hu) my back was fine. \n\nhelen: well, it's not the sofa. \n\nmorty: you stick up for that sofa like i'm criticizing a person. \n\nhelen: we got it from sullivan's. it's a good store. \n\nmorty: well one day somebody's going to sleep on that thing and we'll get sued. i hope this doctor knows what he's doing. \n\nhelen: leo says he's the best there is. \n\nmorty: leo, i'm listening to leo now! \n\nhelen: well you're lucky he was able to get you this appointment. you know what the waiting list is for this guy? \n\nmorty: well, if he fixes my back i'll be happy. . . . (back to the form) have you ever had a sexually transmitted disease? that's it! . . . here, you got my name, you got my address. that's enough. \n\nreceptionist: julie, you want to take him back? \n\njerry: you what? you passed? how could you do that? \n\ngeorge: ahhhhh (exhaling) jerry, my young friend, you're so nave. you are so, so nave. you know about a few things. you know about comedy, a little bit about relationships, some baseball, but you are so far out of your element here, you are embarrassing yourself. now listen to me. i'm negotiating. negotiation, this is what'cha do in business. \n\njerry: let me explain to you what you just did. there are literally hundreds of people trying to get pilot deals with them this year. they go with maybe, five. okay, if we pass, that's it. they go to the next show. \n\ngeorge: ooooo, i'm scared. . . . ohoooo they're not going to do the show. \n\njerry: we're lucky they're even interested in the idea in the first place. we got a show about nothing. with no story. what do you think, they're up there going, hey maybe we should give those two guys, who have no experience and no idea, more money!? \n\ngeorge: ohooo what are we going to do? i'm shaking! i'm shaking! \n\njerry: well, i think you're wrong. \n\ngeorge: well, we'll just see. \n\njerry: yes we will. \n\ngeorge: yes we will. \n\njerry: i just said that. \n\ngeorge: i know you did. \n\njerry: so good for you. \n\ngeorge: so good for you. \n\njerry: what are you repeating everything i'm saying? \n\ngeorge: what are you repeating everything i'm saying? \n\njerry: well george is an idiot. \n\ngeorge: well george . . . . \n\nmorty: all right, all right, let's go already. they keep you in here a year. they don't give a damn. i could die in here. . . .(open the door and shouts into the hallway) excuse me! excuse me! what's going on? i'm here twenty minutes. could somebody please help me. \n\nhelen: (enters) shhh. quiet! everyone can hear you. \n\nmorty: twenty minutes. i've been waiting twenty minutes. \n\nhelen: well the doctor must be busy. \n\nmorty: well then what do they make appointments for if they can't keep them. huh, hha. look if i did that in my business i wouldn't have made a nickel. \n\nnurse: hello, mr. seinfeld. \n\nmorty: i thought you forgot about me. \n\nnurse: we didn't forget. \n\nmorty: haahhh! the velcro. i can't stand velcro. it's that t-e-a-r-i-n-g sound. i used to be in raincoats. i refused to put that in any of my lines. \n\nnurse: okay, mr. seinfeld, please come this way. we need some x-rays. \n\nmorty: leave all my stuff here? \n\nnurse: leave it. \n\ngeorge: oh hey, by the way. do you want a box 'a, cuban cigars? i smoked one last night. i got nauseous. \n\njerry: no i don't want ?em. \n\nkramer: i'll take it. no, i'll take it. what is it? \n\ngeorge: here you go. \n\nkramer: cigars? (hits the box) \n\ngeorge: yeah, cubans. \n\nkramer: oh, yeah? \n\ngeorge: yeah, the kind that castro smoked. you can't buy ?em anywhere. \n\nkramer: castro eh? pasto costillo homiga (nonsense spanish) \n\njerry: yeah? \n\nvoice: federal express. \n\njerry: federal express? come on up. . . . federal express. i'm not expecting a package. \n\nkramer: wooo, you know what you just did? you let a burglar in the building. \n\njerry: you think so? \n\nkramer: federal express? of course. that's the oldest trick in the book. you know it might not be a burglar it could be a murderer. \n\njerry: so you want to just abolish all home package deliveries. \n\nkramer: yes. it's dangerous. \n\nkramer: wait det doit ... dit (kramer noises -- he prepares for a fight by rolling up a magazine) \n\njerry: who is it? \n\nvoice: federal express. \n\nkramer: okay, ... gidg gi gt (backs up and bends his knees, holding the rolled magazine - arm back, ready for a rumble) \n\nall: hiiiiiiiiiiiiiiiiiiii! \n\nkramer: i want one of those! \n\nelaine: hiiii kramer \n\nkramer: oh yes \n\nelaine: kramer, hi, i thought you went to california. \n\nkramer: well i came back for you. \n\nelaine: oh, shut up (pushes kramer) \n\njerry: i missed you. \n\nelaine: really? you really missed me? \n\njerry: yeah, . . . seriously. \n\ngeorge: yeah, yeah, me to miss -- i miss. \n\njerry: yeah, big missing goin' on (spreads arms wide) \n\nelaine: ahhhhhh haa ha ha \n\nkramer: hey, i'm going to be right back. i'm going to get a match. \n\nelaine: oh god, who's suitcase is this? \n\njerry: oh, it's my parents. my father came up to see a back specialist. \n\nelaine: oh, god, it's probably from sleeping on that sofa. \n\ngeorge: boy, you look really great. \n\njerry: yeah. \n\nelaine: you lie. \n\ngeorge: no, no you really look great. \n\nelaine: hu hu, ha ha ha. \n\njerry: so tell us about the trip. how's dr. reston? \n\nelaine: oh, he's fine. \n\njerry: things are good? \n\nelaine: yeah, you know (scratches cheek and sniffs) \n\njerry: uh oh. \n\nelaine: what, uh oh? \n\njerry: did you see that? \n\ngeorge: yeah, i saw it. \n\nelaine: what? \n\njerry: it's a tell. you gotta tell. \n\nelaine: what tell? what's a tell? \n\njerry: when you ask someone about their relationship and they touch their face, you know it's not going too well. go ahead ask me how it's going with somebody. \n\nelaine: um, uh, who's it going with, uh, alice? \n\njerry: good, going good (scratches chin) and the higher up on the face you go the worse the relationship is getting. you know it is like - pretty good - not bad - i gotta get out. (scratches chin, nose then covers eyes with hands) \n\nelaine: how high did i go? \n\ngeorge: you almost did the nose. \n\njerry: what are you eating my peanut butter out of the jar with your disgusting index fingers? this is a sickening display. (takes the peanut butter jar away from george) \n\ngeorge: what? i'm not eating bread now. i'm off bread. \n\njerry: (to george) you're off bread. (to elaine) so what happened is it over? \n\nelaine: no not quite. \n\njerry: why not? \n\nelaine: well he was my psychiatrist, you know. i mean, he knows all my patterns. he knows in relationships that i always try to find some reason to leave, and so, he says as my doctor, he can't allow me to do this, so he's not letting me leave. \n\ngeorge: what do you mean - \"not letting you?\" \n\nelaine: he has this power over me, okay. i mean he has this way of manipulating every little word that i say. he's like a svenjolly. \n\njerry: svengali. \n\nelaine: what did i say? \n\njerry: svenjolly. \n\nelaine: svenjolly? i did not say svenjolly. \n\njerry: george? \n\ngeorge: svenjolly. (licking a little bit of peanut butter from his finger) \n\nelaine: i don't see how i could have said svenjolly. \n\njerry: well maybe he's got like a, cheerful mental hold on you. \n\nkramer: you know i can't find a match anywhere. \n\ngeorge: you know what you should do? you should tell this guy you're seeing somebody else. that's the easiest way to get out of these things. \n\nelaine: no, it's not going to work with this guy. \n\ngeorge: no, you just tell him ah, an old boyfriend has come back into your life. \n\nelaine: i don't think so. \n\njerry: nice try. \n\ngeorge: took a shot. \n\nkramer: this is a good cigar (hair is on fire, white smoke pouring from the back of his head) . . . . . . woooooooooow . . . (runs to bathroom, his arms in the air -- he bangs them in to the top of the hallway door jam and falls into the bathroom) \n\nmorty: so, when do i get to see the doctor? \n\nnurse: he'll be in with the x-rays in a few minutes. you can get dressed. (leaves) \n\nmorty: (checking pants) they stole my wallet. the bum stole my wallet. (opens door, shouts into the hallway) my wallet's gone! my wallet's gone! i had my wallet in my back pocket. it's gone. \n\nnurse: are you sure? \n\nmorty: yes, i'm sure. i went in to get my x-ray, somebody takes my wallet. is that the operation here? \n\ndr. dembrow: mr. seinfeld, i'm dr. dembrow, i've been going over your x-rays. \n\nmorty: i'm not interested in the x-rays. i want my money back. somebody stole my wallet. i had $225 in there. \n\ndr. dembrow: well, i don't see how something like that could have happened. \n\nmorty: oh, you don't see. you don't see. well it happened. believe me. \n\nhelen: (enters) what's going on? \n\nmorty: they stole my wallet. \n\nhelen: what? \n\nmorty: yeah, while i was in getting x-rayed. \n\ndr. dembrow: all right, mr. seinfeld, i am sorry about your wallet but would you like me to look over these x-rays? \n\nmorty: what kind of clip joint are ya running here? \n\ndr. dembrow: all right, fine. (leaves) \n\nhelen: the least you could have done was heard your diagnosis. \n\nmorty: i am not interested in his diagnosis. he's a bum. \n\nhelen: you came all the way from florida to see him. \n\nmorty: i want to know what kind of an office this is where you can't leave your pants in the room. you tell me. \n\nelaine: i'm sorry but there's somebody else. \n\ndr. reston: umm hm. \n\nelaine: well it's, nothing i planned on happening, you know. it just, kind of happened. \n\ndr. reston: tell me about him. \n\nelaine: well, there's not really much to tell, you know, he's just a guy, really. \n\ndr. reston: yes, well i assumed he's a guy. \n\nelaine: right... \n\ndr. reston: and you've known him how long? \n\nelaine: . . . years. many years (her voice cracks), um, (clears throat) we've been close friends and then recently something just you know *ehghh* happened. \n\ndr. reston: you mean sexually? \n\nelaine: yeah, yeah. sexu-ally. \n\nelaine: i think your um ... (points at the phone) \n\ndr. reston: excuse me. yes, oh yes, bobo. uh, no it's just east of madison. around 400 will be fine. all right bobo ... see you then. (hangs up) . . . i'm sorry where were we? \n\nelaine: well, i was just um, telling you about this, other guy. \n\ndr. reston: mm. elaine ... \n\nelaine: yeah \n\ndr. reston: do you remember your dream, where you have a sexual encounter with a chinese woman? \n\nelaine: yeah. yeah, (cough, cough) mm-hm. \n\ndr. reston: elaine, i'm concerned about you. \n\nelaine: oh, no no no no, don't concern yourself with me, because i'm - i'm good. i'm - i'm very good, i mean i'm really very, very good. \n\ndr. reston: elaine. have you been urinating a lot again? \n\nelaine: . . . no. \n\ndr. reston: and how often have you been seeing, um . . .? i'm sorry what is his name? \n\nelaine: h-his name? \n\ndr. reston: yes, his name. \n\nelaine: um, well what's the difference? \n\ndr. reston: are you afraid to tell me his name? \n\nelaine: no, no, i just - i just don't see how that's relevant. \n\ndr. reston: it doesn't matter if you don't see how. i see how. \n\nelaine: uh, his name, um, i don't - i don't even know, all right you want to know his name? i'll - i'll tell you his name. his name is . . . kramer. \n\ndr. reston: kramer. is that his first name or his last name? \n\nelaine: oh, i'm - i'm really uncomfortable talking about this. \n\ndr. reston: elaine, i want you to do me a favor. \n\nelaine: what? \n\ndr. reston: i want you to tell this young man to give me a call. it's very important that i speak to him. \n\nelaine: oh, oh no, no no no, i can't do that. \n\ndr. reston: you can do it and you will do it. \n\nelaine: no, i can't. \n\ndr. reston: you can and you will. \n\nelaine: okay, okay. yeah i'll have kramer give you a call. \n\njerry: so you didn't even let the doctor treat you? \n\nmorty: i wouldn't give him the satisfaction. \n\nhelen: why did you leave your wallet in your pants? \n\nmorty: what are you talking about? what was i supposed to hide it somewhere? \n\nhelen: you could've taken it with you. \n\nmorty: oh, yeah, i'll be lying on an x-ray table with my wallet in my mouth. \n\nleo: hello... \n\njerry: hi uncle leo. \n\nleo: i just talked to dr. dembrow's son. he said they almost had to call the police. \n\nmorty: what are you talking about? i'm the one who should have called the police. they stole my wallet. \n\nleo: you know how hard it was for me to get that appointment for you? you can't just walk in on this guy. he did me a personal favor. \n\nmorty: all right, leo. \n\nleo: and you walked out without paying. \n\nmorty: how was i supposed to pay? i didn't have my wallet. \n\nleo: well, i hope you send him a check. \n\nmorty: what for? \n\nleo: what for? this man was nice enough to see you. he did me a personal favor. \n\nmorty: that's the second time you said \"personal favor\". why do you keep saying that? \n\nleo: i said it once. \n\nmorty: twice! and dembrow doesn't even know you. his son happens to live on your floor. \n\nhelen: leo, where did you get that watch? \n\nleo: you know where i got this? (flashback) i found it in the garbage can. it kept terrible time. i brought it over to jimmy sherman right here on 85th and columbus. gave it to me back the next day. works great. what kind of idiot throws a way a perfectly good watch? \n\nhelen: morty, doesn't that watch look like the one that we gave jerry. \n\njerry: hey, where's the waiter. dad, what say we have some red meat tonight. let's live a little. . \n\nhelen: let me see that. \n\njerry: could we continue this another time. \n\n(the episode opens with a series of clips from 'the pitch', 'the ticket' and 'thewallet', illustrating the story so far. a rough precis would be: george turns down the offer from nbc for the show, telling jerry he's negotiating. susan gives george a box of cuban cigars from her father, which hepasses to kramer, who sets fire to his hair while lighting one. jerry's parents come to town, so's morty can see a back specialist - he slept on the fold-out. kramer tells jerry's parents that crazy joe davola is after jerry. jerry throws away a watch his parents gave him, because it doesn't keep time. uncle leo fetches it out of the garbage. jerry tells his parents his watch is at the jeweller for repair. at the doctor's, morty reveals his hatred of velcro and his wallet disappears. elaine returns from europe, eager to rid herself of the 'svenjolly' dr reston. george tells her to inform the doctor she's seeing someone else. elaine opts to say she's seeing kramer, and dr reston wants to meet him.) \n\njerry: it's an entire industry of bad gifts, aren't they? all those executive gifts, any stupid, goofy, brass, wood thing, they put a piece of green felt on the bottom. \"it's a golf, desk, tie and stress organiser, dad.\" but to me, nothing compares with the paperweight as a bad gift. there's no better way than a paperweight, to express to someone that, \"i refuse to put any thought into this at all.\" where are these people working that the papers are just blowing right off of their desks? what, are their desks screwed to the back of a flat-bed truck going down the highway or something? what, are they typing up in the crow's nest of a clipper ship? what do you need a paperweight for? \n\nmorty: (to leo) i don't understand this jeweller, jimmy sherman. (indicates jerry) he brings in a watch, it takes over a week to fix. he fixed yours in one day. \n\njerry: oh, you know these jewellers, they're enigmas. they're mysteries, wrapped in a riddle. \n\nhelen: (indicating to jerry) she's very attractive. \n\njerry: she's okay. \n\nhelen: just okay? \n\njerry: she's nice. \n\nhelen: she's better than nice. \n\njerry: she's all right. \n\nhelen: she's beautiful. \n\njerry: she's not beautiful. \n\nhelen: i think she's beautiful. \n\njerry: so you ask her out. \n\nhelen: i'm not gonna ask her out. \n\njerry: why not? \n\nhelen: if you don't think she's beautiful, there's something wrong with you. \n\njerry: she's pretty. she's not beautiful. \n\nhelen: i should drop dead if she's not beautiful. \n\njerry: i think that's a little extreme. \n\nleo: (grudgingly) she's awright. \n\nmorty: (oblivious to the above) two exact same watches. he tells you a week, and him a day. how could that be? something's fishy about this. \n\ngeorge: he said what? \n\nsusan: \"the hell with them.\" \n\ngeorge: \"the hell with them?\" \n\nsusan: those were his exact words. \n\ngeorge: (worried) oh boy. \n\nsusan: he said, \"we've got five hundred shows to choose from. why should we give two guys, who have no idea, and no experience, more money?\" \n\ngeorge: (still worried) he was pretty emphatic? \n\nsusan: pounded on his desk. \n\ngeorge: pounded? \n\nsusan: (tossing her purse on the dash) i told you to take the offer. \n\ngeorge: (getting animated) look i, i uh, i had nothing to do with this. it wasn't my decision. it was jerry! jerry told me no. i'm the creative guy. he handles the business end. \n\nsusan: you said it was insulting. \n\ngeorge: i was quoting him. why would i be insulted? i'm never insulted. you could call me baldy, dump soup on my head. nothing insults me. \n\nsusan: well, there's nothing i can do. \n\ngeorge: well, don't they make a counter offer? how can they just cancel the whole deal like that? what kind of a maniac is this guy? i mean he just, he says no, and that's it? \n\nsusan: yeah, that's the way russell is. he doesn't like to play games. \n\ngeorge: well, he has to play! he can't just not play. we're playing! look, i gotta see him, how do i get in touch with him? \n\nsusan: you'll have to wait til monday. \n\ngeorge: mon...? no, no, i can't wait til monday, that's impossible, i gotta talk to him now. where does he live? \n\nsusan: (laugh) i can't give you his address. \n\nsusan: give it back! \n\ngeorge: gimme the purse! \n\nelaine: okay, so he just wants to talk to you. i couldn't talk him out of it. so you just tell him that you're my boyfriend and that we're in love, okay. can you do that? \n\nkramer: yeah, yeah, okay. i'm your boyfriend. \n\nelaine: okay. \n\nkramer: have we been intimate? \n\nelaine: yeah. yeah, we've been intimate. \n\nkramer: alright, how often do we do it? \n\nelaine: kramer, how is that important? honestly, do you really think he's gonna ask you that? \n\nkramer: elaine, he's a psychiatrist. they're interested in stuff like that. \n\nelaine: alright, alright. we do it, uh... (thinks) five times a week, okay? \n\nkramer: (suggestive) oooh, baby. (smiles) \n\nelaine: oh, man. alright, listen. just tell me something, what are you gonna say? \n\nkramer: i know what i'm gonna say. \n\nelaine: no, no, but i would like to hear it. \n\nkramer: no, no. i don't wanna say it out loud. kills the spontaneity. you know, gleason, he never rehearsed. (indicates phone) 'kay, go 'head, do it. \n\nelaine: (dialling) alright, okay. you talk to him. \n\nkramer: (playing with his hair) talk to him. \n\nelaine: hey, how's your hair? \n\nkramer: oh, well, yeah, it's good. \n\nelaine: (handing over the phone) you're not the type that should be playing with matches, seriously kramer. \n\nkramer: (listens) uh, yes. uh uh, doctor uh, reston, is he in? well, this is kramer and uh, he's expecting my call. \n\nelaine: (mouths silently) okay. \n\nkramer: (singing) ...johnny ...was a rebel. he rode through the land... \n\nkramer: ...yu uh, yes, yes uh, uh, doctor reston. uhm well, hello there. ahh yeah, well, i'm a good friend of elaine's... \n\nelaine: (animated, but quietly) no, no. not friends. \n\nkramer: ...well, actually uh, we're uh, we're not friends uh, we're uh, we're much more than friends... \n\nkramer: ...and uh, i'm afraid we have a bit of a problem. well, the point is, doctor uh, i'm very much in love with elaine... \n\nkramer: ...and uh, she's very much in love with me, and uh, well uh, we would uh, appreciate it if you would cease and desist, and allow us to pursue our courtship unfettered. \n\nelaine: (mouths silently) that's perfect! \n\nkramer: if not, i can assure you, doctor, that i can make things very unpleasant for you and your staff. if you have one. \n\nkramer: yes. yeah, but the point that i... (listens) \n\nkramer: ...ah, ye... (listens) well, no... uh, yeah, that's possible... \n\nkramer: (listens) ...well, i suppose i could, (turns away from elaine) but i'd have to shift a few things around, uhm... hold on for a second, will you? uh... \n\nkramer: ... uh, go ahead, yeah. (listens and makes a note) alright uh... yeah, yeah, okay... i look forward to it too. (listens) eh, hah, okay. so long. \n\nelaine: what happened? what'd he say? (indicates pad) what's going on here? \n\nkramer: uh, okay now. he uh, you know, he uh, wants to get together. \n\nelaine: (horrified) get together!! \n\nkramer: he wants to talk. \n\nelaine: well, why didn't you say no!! \n\nkramer: (momentary confusion) wha...? uh... (thoughtful) that's interesting. \n\nelaine: (frustration) ugh! \n\nnaomi: did you enjoy your poisson? \n\nhelen: it was... different. \n\nnaomi: (to jerry) and how was yours? \n\njerry: ah, very good. \n\nnaomi: you should try our mousse. (a little flirtatious) it'll change your life expectancy. \n\njerry: no thanks, just the check. \n\nhelen: what's the matter with you? \n\njerry: what? \n\nhelen: why didn't you flirt with her? \n\njerry: come on. \n\nhelen: she was flirting with you. why didn't you say something? \n\njerry: what am i gonna say? \n\nhelen: you just sat there. \n\njerry: well, you made me uncomfortable. \n\nhelen: you're a comedian, couldn't you come up with something? \n\nleo: (to morty) where's the bathroom? \n\njerry: in the back, on your right. \n\njerry: dad! \n\nmorty: will you stop it jerry. let go. \n\nhelen: jerry. \n\njerry: will you let me pay just once. \n\nmorty: you're out of your mind. \n\njerry: how you gonna pay? you don't even have a wallet! \n\nmorty: don't worry about it. \n\njerry: what're you gonna do? \n\nmorty: what's the difference, we'll figure something out. \n\nhelen: (to jerry) you're not paying. \n\njerry: alright, fine. you figure something out. i'd be very curious to know how you pick up a check with no money. 'cause if this works, the whole monetary system's obsolete, we're back to wampum. (standing) i'm going to the bathroom. \n\nmorty: how the hell am i gonna pay for this? \n\nleo: they give you some portion here, huh? \n\njerry: uh, yeah. (broaching a subject) hey uncle leo, i hope i wasn't uh, rude to you that day i bumped into you on the street. uh, i really did have to get to a meeting. \n\nleo: (preening himself in the mirror) aw, no, no, i understand. i got plenty of friends in showbusiness. i know you're all very busy. \n\njerry: so you found that watch in the garbage can, huh? \n\nleo: yeah. in fact it was right after i ran into you. \n\njerry: oh, heh. you know, a friend of mine has a watch just like that. i'd love to replace it for him as a gift. \n\nleo: well, i haven't seen too many like (indicating watch) these. \n\njerry: yeah, i know. maybe uh, you wanna sell me that one. \n\nleo: (sarcastic) aww, sure. (laughter) \n\njerry: (pulling leo back in) hang on a second. i got a little proposition for you. \n\ndoorman: (into phone) there's a george bonanza to see you. \n\ngeorge: costanza. costanza. \n\ndoorman: (into phone) george costanza. \n\ngeorge: the guy who pitched him the show with the stories about nothing. (snaps fingers) jerry seinfeld. jerry seinfeld's friend. \n\ndoorman: (into phone) seinfeld friend. (he listens) (to george) he says, call him monday. \n\ngeorge: (into phone, frantic) mister dalrimple! mister dalrimple i have to talk to you! \n\ndoorman: excuse me. \n\ngeorge: it's about the show. it... no, it was... \n\ndoorman: excuse me. \n\ngeorge: ...it was all a terrible misunderstanding, sir. just five minutes. just five minutes of your time. (listens) thank you! thank you, mister dalrimple. \n\ndoorman: (into phone) very good, sir. \n\nmorty: you don't understand. i can't allow my son to pay for me. look, as soon as i get back to florida, i promise you i'll mail you a check. \n\nmaitre d': why don't you just let him pay, and then you can pay him back? \n\nmorty: no, no, he won't let me do that. \n\nmaitre d': why don't you just put the money in his pants pocket, unsuspectingly? \n\nmorty: he could wash them. \n\nmaitre d': monsieur, we are running a reputable business. \n\nmorty: don't tell me about business! i sold raincoats for thirty-five years! \n\nmaitre d': aha, but you did not give them away, did you? \n\nmorty: you don't understand my... \n\nmaitre d': ah, monsieur, i cannot get involved with you and your family, ah. \n\nelaine: now look, don't take too long. \n\nkramer: (looking around) look at this building. what is this? \n\nelaine: i don't know. it's a building. \n\nkramer: (indicating) the door's on a diagonal. \n\nelaine: so what? \n\nkramer: (looking around) it's architecturally incorrect. \n\nelaine: (frustrated) just go. \n\ngeorge: (sidling in) is this a bad time? i hope i'm not disturbing anything. \n\nrussell: we were about to sit down to dinner. \n\nrussell: (indicating) this is cynthia. \n\ngeorge: (entering the apartment more fully) oh. oh, hi, hi. hi. nice to meet you. (peering at the table) what're you having, veal? \n\nrussell: no. \n\ngeorge: looks like veal. \n\nrussell: it's not veal. \n\ngeorge: well, it's a good looking piece of meat. (laughs nervously) wow, this is some place. a duplex, huh? (indicating) look at this, you got stairs in an apartment. all my life, i dreamed about having steps in an apartment. even one step. sunken living room. although, one step is really not all that sunken. (tries hard to elicit a laugh) \n\nrussell: who gave you my address? \n\ngeorge: no, that's a fair question. it is, uhm... (nervous chuckle) jerry, yeah. (to cynthia) jerry's a friend of mine. (to russell) he uh, he gave it to me. unbelievable how many addresses of people this guy has. \n\ngeorge: he's got marlon brando's. i could go to marlon brando's house if i really wanted. \n\ngeorge: course, i wouldn't, i mean uh, the guy is uh, well obviously (to cynthia, as she passes) the guy has his problems. \n\nrussell: so, what's the surprise? you wanna talk about the show? \n\ngeorge: well, you know, it's really very funny, because you know what we got here, really? we really, really, just have a terrible misunderstanding. you see, when i passed on the deal, i thought that's what jerry wanted me to say. y'know, i, i misinterpreted. \n\ncynthia: (bored) russell, where's the tv guide. \n\ngeorge: oh, what time is it? eight thirty? i'll tell you what's on. you got major dad, blossom, very funny programme... \n\nrussell: blossom's on monday. \n\ngeorge: are you sure? oh, look who i'm talking to. the president of nbc. (forced laughter) \n\nrussell: look mister costanza, it's too late now anyway. i already made a deal with another writing team. \n\ngeorge: (worried) alright, alright. look, we're people, you and me, huh? businessmen. colleagues, if i may. let's not quibble. we'll do it for the thirteen thousand. thirteen thousand, and i never came up here, we never talked, alright. you take good care. (moving past russell toward the door) it was nice seeing you again, and nice meeting you. (to cynthia) cynthia, right? \n\nrussell: alright, now look. these deals are already made. \n\ngeorge: awright, lemme just say this. ten thousand dollars, alright, and now i'm going below what you wanted to pay. you have your dinner, have your veal, or whatever it is. enjoy... \n\nrussell: mister costanza. \n\ngeorge: alright, that's it. alright, good, eight thousand dollars. (to cynthia) cynthia, again, nice meeting you. have i commented on the shoes? i love suede, it's so thick and rich. did you ever, you ever rub it against the grain? alright, anyway... \n\ncynthia: (bored, frustrated) russell, can we eat? \n\nrussell: (to george) alright. eight thousand. \n\ngeorge: (pleased) you've made jerry very happy. \n\ngeorge: may i just use your bathroom for a moment? \n\njerry: alright, two hundred, but that's as high as i can go. i really think you're being unreasonable here! \n\nleo: jerry, i'd give you the watch. it's not the money, i happen to like it. \n\njerry: look, i happen to know how much that watch cost. it's a sixty dollar watch, you paid forty to get it fixed. that's a hundred dollars. i'm offering you two hundred! \n\nleo: (indicating) i've never seen a band like this. \n\njerry: aww, right. three hundred, plus fifty for the repair. three fifty, that's it! \n\nleo: you have it on you? \n\njerry: yeah, i think i do. \n\njerry: (under his breath) this is unbelievable. \n\nmorty: what the hell is going on here? \n\nkramer: well, it uh, (offering his hand) it's a pleasure to meet you. \n\nreston: (shaking hands) thank you for coming in. \n\nkramer: thank you. \n\nreston: please, sit down. \n\nkramer: (quiet) okay. \n\nreston: could i offer you something to drink. uhm, coffee? anything? \n\nkramer: okay uh, yeah. i'll have a uh, you have a decaf cappuccino? \n\nreston: i don't think we have that. \n\nkramer: well, that's a little strange. \n\nreston: uh, why does that surprise you? \n\nkramer: well, it's uh, it's a very popular drink \n\nreston: this is an office. \n\nkramer: that's true. but, you know, i can't help but think that uh... \n\nreston: (interrupting) so tell me mister kramer... \n\nkramer: ...okay, yes, shoot. \n\nreston: tell me all about uh, you and elaine. \n\nkramer: oh, alrighty uh... \n\nkramer: well, what we have here, doctor, is uhm, an extraordinary situation. \n\nreston: is it? \n\nkramer: oh, you better believe it. \n\ndavola: (singing) '...travelling along...' \n\nelaine/davola: '...singing a song, side by side...' \n\nelaine: wow. you really have a terrible voice. \n\ndavola: do i know you? \n\nelaine: uhh, i don't think so. \n\ndavola: 'cos you really look familiar. \n\nelaine: oh, well maybe you've seen me. my face is on uhm, mount \n\ndavola: oh yes, of course, that's it. i guess i'm just used to seeing it on a much larger scale. \n\nelaine: oh yeah, right. i replaced uh, teddy roosevelt. \n\ndavola: oh really. \n\nelaine: umm. trustbuster. bust this. \n\nkramer: you know, i never thought of it like that before, doctor. (points) you, are absolutely right. \n\nreston: i'm glad we agree. \n\nkramer: (reaching in pocket) hey, would you like a cigar? y'know, they're cubans. \n\nreston: i'd love one. \n\nkramer: yeah. you know, i think elaine is a wonderful woman. you two are gonna make a wonderful couple. \n\nreston: if you ever feel, a need to talk to someone... \n\nkramer: (lighting dr reston's cigar) uh huh. \n\nreston: ...about anything. you have my number. \n\nkramer: (lighting his own cigar) well, that's very kind of you. \n\nkramer: mmm, these are good, huh? \n\nkramer: (quiet) oh. \n\nelaine: i cannot believe i'm doing this. i never meet people like this. you're not a nut, are you? \n\ndavola: no, i don't think so. \n\njerry: i can't believe i'm doing this. i never do stuff like this. \n\nnaomi: (joking) really? i give out my number to just about every customer who comes in here. \n\njerry: oh. (chuckles) really? you don't seem that desperate. \n\nnaomi: (playing it straight) oh yeah. actually, i'm a little disappointed. i kind of had my eye on uncle leo. \n\njerry: uh huh. well uh, i'll give you a call, and thanks for the fish. by the way, you know why fish are so thin? \n\nnaomi: why? \n\njerry: they eat fish. \n\nkramer: hey. \n\nelaine: what happened? what took you so long? \n\nkramer: hey, he's a terrific guy. \n\nelaine: wha...? what are you talking about? what'd he say? \n\nkramer: well, we talked about a lot of things. \n\nelaine (o.c.): you talked about a lot of things? well... \n\nkramer (o.c.): yeah. \n\nelaine (o.c.): did you talk about us? \n\ndavola (o.c.): i'm in love. i just met her outside in the street. her \n\nreston (o.c.): did you say elaine? \n\njerry: how come the psychiatrist, every, the hour is only fifty minutes? wha, what do they do with that ten minutes that they have left? do they just sit there going, \"boy, that guy was crazy. i couldn't believe the things he was saying. what a nut! who's coming in next? oh, no, another headcase!\" \n\nmorty: you shoulda told me it didn't work. \n\njerry: i know, i know. \n\nhelen: you didn't have to throw it out. \n\njerry: i was always late. it was frustrating me. i'm sorry, i really am. \n\nhelen: oh, that must be leo. \n\njerry: i woulda taken you to the airport. \n\nhelen: he has nothing to do. \n\njerry: neither do i. (to intercom) yeah? \n\ngeorge (o.s.): it's george. \n\njerry: come on up. (to parents) it's george. \n\nmorty: oh, it's george. \n\nhelen: what ever happened with nbc and the deal? \n\njerry: ah, george turned it down. \n\nhelen: he turned it down? \n\njerry: yeah. \n\nhelen: why did he do that? \n\njerry: because of ted danson. \n\nhelen: what does ted danson have to do with it? \n\nmorty: maybe he doesn't like ted danson. \n\njerry: (fetching a drink from the fridge) hey, who knows, maybe we'll wind up getting more money. \n\ngeorge: (to jerry) hey. \n\nmorty: hey, georgie-boy, how are ya? \n\ngeorge: hey, mr seinfeld. (shakes morty's hand) hey, mrs seinfeld. how are you? \n\nhelen: what's the matter with you? \n\ngeorge: what'd i do? \n\njerry: what about nbc? did you hear anything? \n\ngeorge: yeah, as a matter of fact, i did. \n\ngeorge: we got a deal. \n\nmorty/helen/jerry: (simultaneous) hey!/that's wonderful!/we got a deal! \n\njerry: heyy! terrific. \n\nmorty: you see, he had the right idea. hold out. that's how you get the big money, huh george? (slaps george on the shoulder) \n\ngeorge: uh, please, morty. \n\nmorty: no, no, no. he knows how to talk to these people. no-one's gonna take advantage of georgie. (slaps george's shoulder again) \n\ngeorge: i'm just happy to be working with your talented son... \n\njerry: aww... \n\ngeorge: ...who's not doing this for the money. \n\njerry: ...c'mon. \n\ngeorge: you have no idea how refreshing that is. \n\njerry: so what'd we get? \n\ngeorge: (big smile) eight thousand dollars. \n\njerry: beautiful! \n\ngeorge: (quietly) that's uh, for the two of us. \n\nhelen: four thousand apiece? \n\njerry: lemme see if i understand this. in other words, you held out \n\ngeorge: i was wrong, you were right. \n\njerry: you know, the basic idea of negotiation, as i understand it, is to get your price to go... up. \n\ngeorge: you're smart, i'm dumb. \n\njerry: you know, this is how they negotiate in the bizarro world. \n\nhelen: that's gotta be leo. \n\njerry: (to intercom) yeah? \n\nleo (o.c.): leo. \n\njerry: alright, we're coming down. \n\nmorty: alright, let's get going. \n\njerry: dad, before we go, i got a little something for you. \n\njerry: a present. \n\nmorty: a present? \n\nmorty: hey! look at this, a wallet. exactly what i needed, y'see. \n\njerry: c'mon, you lost your wallet, i figured i'd get you another one. \n\nhelen: i hope you didn't spend too much on that. \n\nmorty: i wanna tell you. this is one of the most thoughtful gifts anyone's ever given me. \n\nhelen: he's something, you son, isn't he? \n\njerry: ah hah, alright, let's go. \n\nmorty: you're a terrific kid. \n\njerry: okay. \n\ngeorge: yeah, he's something, isn't he? \n\nhelen: how could anybody not like you? \n\ngeorge: (to jerry) you're very special. \n\njerry: (pointedly) yeah, i'm good for about four thousand dollars. \n\nleo: hey, let's go! it's twelve (checks watch) uh, twelve twenty-two. \n\nmorty: alright, leo. \n\njerry: hey, uncle leo. \n\nleo: hi, hi... \n\njerry: how you doing? \n\njerry: this is some beautiful parking spot you got here. \n\nleo: yeah, i hate to give it up. \n\njerry: yeah. hey, dad, you sure you don't need any more money? \n\nmorty: jerry! \n\njerry: alright, i'm just joking. listen, have a nice trip. \n\nhelen: (hugging jerry) bye bye, jerry. \n\ngeorge: bye mrs seinfeld, take care. \n\nmorty: bye bye. (hugging jerry) thanks again for the wallet. \n\ngeorge: (shaking hands with morty) morty, always a pleasure. \n\njerry: take care now. so long. \n\ngeorge: yeah, like he was really gonna take your money. \n\njerry: oh, he took it. i put four hundred dollars in the new wallet. \n\ngeorge: you're kidding. \n\njerry: he lost all that cash. it was the only way i could give it back to him, otherwise he wouldn't accept it. \n\ngeorge: man, would i like to see the look on his face. \n\nmorty: you believe this? \n\nhelen: what? \n\nmorty: (indicates the new wallet) it's velcro. \n\nhelen: you're kidding. \n\nmorty: who needs this? \n\nmorty: leo, let's go. \n\njerry: ...main difference between the women's wallet and the man's wallet, is the photo section. true? women carry with them a photograph of every person they've ever met, every day in their whole lives, since the beginning of time. and every picture is out of date. you know what i mean? it's, \"here's my cousin, three years old. she's in the marines now.\" \"this is my dog. he died during the johnson administration.\" you know. you get stopped by a cop, no licence, no registration, (waves imaginary wallet) \"here's fifty-six people that know me.\" cop goes. \"alright, ma'am, just wanted to make sure you had some friends, move it along. routine pal check.\" \n\njerry: have you ever called someone up, and you're disappointed when they answer the phone? you wanted the machine. you know, and you're always kind of thrown off, (left hand up to side of face, pretending its a receiver) you go \"oh, i eh, i - i didn't know you were there, i ah - just wanted to leave a message saying, sorry i missed you.\" \n\njerry: well this is it. \n\nnaomi: oh, this is nice. thanks again for the chinese food. \n\njerry: oh, you're welcome. you know i think i ate too much of that garlic. \n\nnaomi: yeah, me too. \n\njerry: no, i ate the whole plate. i didn't know those little things were garlic. i thought they were peanuts. \n\nnaomi: (laughs) - nnnhhahahahahahahahahahahahahaha (obnoxious laugh). oh, you know what? i think naked gun is on. oh i've seen it. i laughed through that whole thing. you wanna watch? \n\njerry: no, i mean, i don't think so. \n\nnaomi: i thought you liked to laugh. i thought you were happy go lucky. \n\njerry: no, no, no. i'm not happy, i'm not lucky, and i don't go. if anything i'm sad stop unlucky. \n\nnaomi: ahahahahahahahahaha. \n\njerry: that's not funny naomi. \n\nnaomi: ah hahahaha. (points at jerry) \n\njerry: i didn't mean to be funny there. why don't you check the tv guide. i think uh, holocaust is on. \n\ngeorge: (on the answering machine) jerry, it's george. hey, hey are you all set for the weekend. this is going to be great. you're going to have a great time with naomi. \n\ngeorge: (con't) all right, you know she's got that laugh. what did you say? it's like elmer fudd sitting on a juicer? \n\ngeorge: (con't) a-anyway, i was thinking we would take two cars up to the cabin and that way if one of wanted to stay you know... \n\njerry: this thing has never worked right. (holding the machine in his hand) \n\nnaomi: you think i, laugh like elmer fudd sitting on a juicer? \n\njerry: well, first of all elmer fudd is one of the most beloved internationally known cartoon characters of all time. \"i'm going to kill that cwazy wabbit ... hahahahahaaa \" come on. not only that, a juicer is one of the healthiest ways ... (naomi exits) it makes the juice ... it extracts the-the pulp and-and-and the vitamins, for-for long life and-and-and vitality. \n\njerry: how could you leave a message like that on my machine.? \n\ngeorge: well how could you just play your message in front of anybody? \n\njerry: because i didn't think anyone would leave it! \n\ngeorge: well, i didn't think anyone would play it. \n\njerry: well, now she's not going away for this weekend. \n\ngeorge: what do you mean not goin'? come on, we got plans here. call her up. \n\njerry: nah, it's better anyway. i mean really. what was going to happen? i'm a comedian. how can i go out with a girl with a laugh like that? i mean izz-it's like ah, it's like coco chanel goin' out with a fish monger. you know, cause she's with all the perfumes and a fish monger's pretty bad smell. \n\ngeorge: wh-well maybe you should ask elaine. \n\njerry: yeah but if i ask elaine, then kramer will feel slighted. \n\ngeorge: oh no no no no, don't say anything to kramer. susan can't stand him. he vomited all over her. \n\njerry: yeah, .. wait a minute do you smell smoke? \n\nkramer: hmm. \n\njerry: ah, kramer. \n\nkramer: hello boys, (in an irish accent) top of the morning to ya. what do you say? \n\njerry: will you put that thing out before you start another fire. you had to give him a box of cigars. \n\nkramer: so, what are you guys doin' this weekend? \n\njerry and george: uh uh, we're uh .. \n\nkramer: because i'm going to be playing golf at the westchester country club. mmh. \n\njerry: westchester? isn't that a private club? \n\nkramer: oh, that's right buddy. it's private. it's very private. but i met the pro at the golf shop up on 49th st. -- i gave him one of these cubans and he invites me up to play a free round ... then he says anytime i lay one of these babies on him it's going to be the same deal. ha ha. idn't that beautiful. \n\njerry: and george ye, hu, um ye, \n\nkramer: man, i'm going to be hitting the links all weekend. ffoooo (taking an imaginary swing, he makes the sound of a golf ball being hit) \n\ngeorge: gee, that's-that's too bad. \n\njerry: yeah, too bad. \n\nkramer: why? what wa? \n\ngeorge: well, cause we were just saying we were going to ask you to come up to the country with us this weekend. susan's father has a cabin up there. but, eh, all right, well. \n\nkramer: well, what, they got any golf courses up there? \n\njerry and george: no, no, no, no, no, no, no. \n\ngeorge: no, no that's ah, that's pie country. \n\njerry: yeah \n\ngeorge: yeah, they eh, they do a lot of baking up there. \n\nkramer: uh huh. \n\njerry: they sell them by the side of the road. blueberry, blackberry .... \n\ngeorge: blackberry, boysenberry ... \n\njerry: boysenberry, huckleberry ... \n\ngeorge: huckleberry, raspberry... \n\njerry: raspberry, strawberry ... \n\ngeorge: strawberry, cranberry ... \n\njerry: peach. \n\nelaine: i don't know. \n\njerry: come on. i don't want to tag along with george and susan. if you're there it'll be a better group. \n\nelaine: what's that? \n\njerry: ah, it's an autographed picture for my dry cleaner. i never know what to write on these things. i hate doin' this. \n\nelaine: \"i'm very impressed\"? ... ah you mean pressed caus' its like a dry cleaner? \n\njerry: yeah, see that's why i hate it. so, come on, you going to go? \n\nelaine: well what about the sleeping arrangements? in the cabin! \n\njerry: well, um same bed ... \n\nelaine: uh huh (very quietly) \n\njerry: .. and uh, underwear and a tee shirt. \n\nelaine: what about me? \n\njerry: well you'd be naked of course. \n\nelaine: uh, that's, ... \n\nmel: excuse me, jerry seinfeld? \n\njerry: yeah. \n\nmel: my name's sanger, mel sanger. \n\njerry: hi. \n\nmel: i drive that truck out there. \n\njerry: oh, the yoo hoo? \n\nmel: yeah. \n\njerry: i love yoo hoo. \n\nmel: yes, it's a fine product. anyway i saw you on the tonight show a couple weeks ago. i was watching the show with my son donald. he's got this rare immune deficiency in his blood ... the damnedest thing. doctors say he has to live in a plastic bubble. can you imagine that? a bubble. \n\njerry: a bubble? \n\nelaine: a bubble? \n\nmel: yes, a bubble! \n\nmel: do you mind? may i? \n\nelaine: oh, sure. \n\nmel: ah, it'd break your heart seein' him in there. it's like a prisoner. no friends - just his mother and me. and i'm out there six days a week haulin' yoo hoo. we have sacrificed everything. all for the sake of our little ... bubble boy. \n\nmel: (in tears) excuse me, i ah ... \n\nelaine: oh right here (giving out paper napkins to mel and jerry and herself) \n\nmel: excuse me, anyway we were watching ya on tv. \n\njerry: you get in the bubble with him? \n\nmel: no. he can see through the bubble. it's plastic. \n\njerry: oh, i thought it was like an igloo. \n\nmel: no, it's clear. \n\njerry: ah ha. \n\nelaine: who has the remote? (wipes a tear from her eye) \n\nmel: he does. \n\nelaine: the remote goes through the bubble? \n\nmel: yeah, he's in the bubble with the remote. \n\njerry: so you have no control over the remote? \n\nmel: no, it's frustrating. \n\njerry: mmm \n\nelaine: yeah, of course, yeah. (blows her nose) \n\nmel: so anyway, you're his favorite comedian. he laughed so hard the other night we had to give him an extra shot of hemoglobin. \n\njerry: awe... that's nice! \n\nmel: tomorrow is his birthday and it would mean so much to him if you could find it in your heart ta' pay him a visit and, just say hello. \n\njerry: hu, well, tomorrow, i, ... \n\nelaine: jerry! of course he'd pay him a visit. you'd be happy to. \n\njerry: yeah, uh, ok, uh, tomorrow uh, where da ya - where do you live, uh, up town? upper west side? \n\nmel: no, up state. \n\njerry: up state! hummm. \n\njerry: he's a bubble boy. \n\ngeorge: a bubble boy? \n\njerry: yes. a bubble boy. \n\nsusan: what's a bubble boy? \n\njerry: he lives in a bubble. \n\ngeorge: boy! \n\nsusan: say, so what kind of a bubble? like an igloo? \n\njerry: no, that's what i thought but apparently it's just a big piece of plastic dividing the room. \n\nsusan: oh. \n\ngeorge: what kind of plastic do you think it is? what do you think like that dry cleaning plastic? \n\njerry: that's no good. he wouldn't last ten minutes in there. anyway what can i do, i promised i'd go visit him tomorrow. it's his birthday. i can't go to the cabin. \n\nsusan: well, where does he live? \n\njerry: i don't know, up state, falls, somethin' \n\nsusan: wait a minute, this is right on the way to the cabin. \n\ngeorge: well all right, beautiful, so you stop in. ya, ya visit the bubble boy for twenty minutes and then we can go. \n\njerry: you think we can do it? \n\nsusan: oh i know exactly where this is. you can just follow us. \n\njerry: oh, great. ok we'll goin' away. i think i'm excited. \n\ngeorge: (laughs) hu hu. \n\nsusan: i'm excited. oh, you're going to love this cabin. my grandfather built it in 1947. it's it's incredible. \n\njerry: ohh. \n\ngeorge: all right there you go. it's a '47 cabin all right. so, we'll see you tomorrow. \n\njerry: ok. \n\nkramer: well, \n\ngeorge: and jerry very nice, very nice, nice. \n\nkramer: well, i'm off to the links. \n\ngeorge: and jerry yeah. \n\nkramer: listen, i want to thank you for the invite up state. i'm sorry i can't make it. \n\ngeorge: (clears his throat) \n\nsusan: the what? \n\ngeorge: uh, nothing, lets get going. come on. (laughs) hu hu. \n\nsusan: did you ... (george grabs her hand) \n\ngeorge: no, no, no we'll talk about it later. \n\nsusan: is that one of the cigars my father gave you? (susan is pulled from the apt. and kramer looks out the door to watch them leave) \n\nelaine: hey, what's with george and susan? does he actually like her? \n\njerry: ah, i don't know if he likes her as much as he likes it.? \n\nelaine: oh, that's nice! \n\njerry: what's he doing? what is his hurry? \n\nelaine: well you know george. it's not good enough to get there. you gotta make good time. \n\njerry: i know he once went from west 81st street to kennedy airport in 25 minutes. \n\nelaine: hmhmhm (laughing quietly) \n\njerry: look at him. \n\nelaine: hmhmhm (laughing quietly) \n\ngeorge: would you stop that please. would you just stop that? \n\nsusan: why? \n\ngeorge: knock it off, just sit in your seat over there you're distracting me. we're making incredible time here. i once went into kennedy airport from west 81st street to in uh, in 15 minutes. hu uh. oh, here hold this. it's uh, ten dollars for the tolls. \n\njerry: what's he doing? is he out of his mind? do you see him? i don't even think i see him anymore. where is he? \n\nelaine: isn't that blue car him? \n\njerry: no, no that's not him. what happened to him? i can't believe it. i lost him. that stupid idiot. now what are we going to do? \n\nelaine: it's no big deal jerry. we'll just meet him at the bubble boy's house. \n\njerry: i don't even know where the bubble boy lives. i - i don't even remember the name of the town. \n\nelaine: wa',you don't have the directions? \n\njerry: no, i was following him. \n\nelaine: how could you not take the directions? \n\njerry: because, he's my directions. \n\nsusan: i didn't see them george. \n\njerry: we make all these plans - this idiot goes a hundred miles an hour - the whole weekend's over - incredible - just like that - \n\nelaine: poor little bubble boy. he's sitting there waiting for you in his bubble, or igloo thing, whatever. \n\njerry: i don't know what to do. i don't know where i am. \n\nelaine: here just get off at this exit. we'll figure somethin' out. \n\nsusan: we lost them. do you know that. we lost them! \n\ngeorge: well it's not my fault. seinfeld can't drive. how hard is it to follow somebody? \n\nsusan: well now what are you gonna do? \n\ngeorge: it's fine, we'll just meet him at the bubble boy's house. \n\nsusan: does he have the address? \n\njerry: (answering machine) leave a message. i'll call you back. thanks. \n\nnaomi: (on phone speaker) hi, jerry it's naomi. ah, listen, if its not too late i, changed my mind, i'd like to go to the cabin. \n\nkramer: wait, wai, ... ... yeah. hello!, hi, aw, this is kramer. yeah, i'm the next door neighbor. aw, well you know, ah jerry's left, uh, uh, but listen, ah, see ah, my golf game got canceled. uh, i'm thinkin' of going up myself... they got pies and ah, i got the directions right here. \n\nkramer: so then i drive all the way up to the country club and then i find out they got a tournament goin' on. do you mind if i smoke? \n\nnaomi: no. \n\nkramer: these are cubans. (in fake spanish) maria, poquendo los scientos de estes con gleam. \n\nnaomi: ha ha ha ha ha ha ... ha ha ha ha ha ha ... ha haaaa \n\ngeorge: i don't know of this is the house. i don't see jerry's car anywhere. \n\ngeorge: would you stop it. (susan playfully bites his ear lobe again) would you quit it please. someone is going to see us here. \n\nsusan: so what? you are such a prude. \n\ngeorge: hey, i am not a prude sweetheart. i swing with the best of them. (snapping his fingers 5 times) \n\nsusan: okay, come on lets go in. \n\ngeorge: what? \n\nsusan: well we should at least tell them what happened. they might be very late if they make it at all. \n\ngeorge: i can't go in there. i can't face the bubble boy. \n\nsusan: what's the matter? \n\ngeorge: i-i just don't react well to these situations. my grandmother died two months early because of the way i reacted in the hospital. she was getting' better. and then i went to pay her a visit. she saw my face. boom. that was the end of it. \n\nsusan: okay, we're goin' in. come on. \n\ngeorge: susan, wait please... (grabs her) please ... \n\nsusan: come on george. george stop. george. \n\ngeorge: susan, susan would you wai,.... \n\njerry: (ranting) i can't believe how a little thing like george going too fast - and my whole weekend is gone - the plans, the packing, ... everything. \n\nelaine: your whole weekend? what about the bubble boy? \n\njerry: why do you keep bringing up the bubble boy. you don't have to mention the bubble boy? i know about the bubble boy. i'm aware of the bubble boy. why do you keep reminding me about the bubble boy? \n\njerry: i'll have a cup of coffee and a turkey club. \n\nwaitress: how ?bout you? \n\nelaine: um, i'll just have a glass of water. \n\njerry: (whispers) you can't just have water. \n\nelaine: why not? that's all i want. \n\njerry: well this is not like a park bench where you just come in and sit down. it's a business. \n\nwaitress: hold it a second. don't ?chu play on tv? \n\njerry: oh, no. \n\nelaine: yes! yes. you saw him on tv. \n\nwaitress: what's your name? \n\nelaine: jerry seinfeld. \n\njerry: elaaaiinne... \n\nwaitress: garry seinfield! i saw you on the tonight show. \n\nelaine: right. hey, wouldn't you like an autographed picture? \n\nwaitress: oh, ha ha \n\njerry: uh, i don't have anymore pictures elaine. \n\nelaine: he's lying. they're in the trunk (takes car keys) now you get to sign another one. \n\njerry: i'm not lying. \n\nelaine: yeah, yeah he is. (as she leaves) \n\njerry: she'll have a cup of coffee and a broiled chicken. \n\nmrs. sanger: see it's not really a bubble. a lot of people think it's an igloo. but it's really just a plastic divider. \n\ngeorge: huh (quietly) \n\ngeorge: and susan (nod) \n\ngeorge: can you uh, go in the bubble? \n\nmrs. sanger: well, you have to put so many things on because of the germs. \n\nmel: the gloves, the mask, it's a whole production. \n\ngeorge: so then he makes his own bed? \n\nmrs. sanger: well, that's one of the things we fight about. \n\nmel: would you like to meet him? \n\ngeorge: uh, well, you know,... \n\nmrs. sanger: oh, he loves games. maybe you could play trivial pursuit with him. \n\ndonald: hey ma what the hell do i got to do to get some food around here? i'm starvin'. and if it's peanut butter, i'm gonna shove it in your face. \n\nmrs. sanger: (embarrassed) ha...ha ha ha ha, ha. \n\nelaine: (laughing) hehehe -- one picture left in the trunk. \n\njerry: uh, thanks! this is fun! yeah, this turned out to be a great weekend. \n\nelaine: where's my water? \n\njerry: oh, it's comin'. - here ya' go. \n\nwaitress: thanks. \n\nelaine: waddya' write? \n\nwaitress: \"nothing's finer than being in your diner.\" \n\nelaine: hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu \"ther - there is nothing finer than being in your diner.\"? \n\njerry: no good? \n\nelaine: this is what you came up with? \n\njerry: well. \n\nelaine: that is so lame. jerry, people are going to be reading that for the next twenty years and laughing at you. \n\njerry: yeah, yeah, you're right. excuse me, excuse me. would you mind. i'd like to take the picture back. \n\nwaitress: why \n\njerry: i, i'm not happy with what i wrote. \n\nwaitress: it's good. i like it. \n\njerry: no, believe me it's not good. i'll mail you a new one with something really funny written on it. \n\nwaitress: well, when you mail me a new one i'll send you back this one. \n\njerry: no, look, you don't understand. i, i want the picture. \n\nwaitress: right! (leaves) \n\nmrs. sanger: this is donald. \n\ngeorge: hi. (waves to donald and laughs) hahahaha. \n\nsusan: hello. \n\ndonald: who are you? where's seinfeld? \n\nmrs. sanger: he's on his way. these are his friends. \n\ndonald: what are you lookin' at? never seen a kid in a bubble before? \n\ngeorge: tsst...'course i have. come on. my cousin's in a bubble. my friend jeffrey's uh, sister, also ... bubble ... you know. i got a lot of bubble experience. come on. \n\ndonald: what's your story? \n\nsusan: i-i-i have no story. \n\ngeorge: she works for nbc. \n\ndonald: how 'bout taking your top off? \n\nmrs. sanger: donald, behave yourself. \n\ndonald: come on. \n\nmrs. sanger: i know. i know. why don't you play a game of trivial pursuit? \n\ngeorge: ah, well, you know we gotta been running because of the ... \n\ndonald: ooo. what? are you afraid? \n\ngeorge: a-hu no, uh, it's just that ... \n\ndonald: well i'm going to kick your ass. \n\njerry: look, i was nice enough to give you the picture. i don't like what i wrote. i don't want it up there. now please just give it back to me. \n\nwaitress: you are really startin' to get under my skin. \n\njerry: i want that picture. \n\nwaitress: well, you can't have it! in fact maybe you better just pay your check and get out. \n\njerry: i'm not paying for anything until i get that back. \n\nwaitress: well, you ain't getting' it back. \n\njerry: well, maybe i'll just take it back. \n\nelaine: this chicken is really good. \n\ndonald: ok, history ... this is for the game. ... how ya doin' over there? ... not too good! \n\ngeorge: all right bubble boy. let's just play... who invaded spain in the 8th century? \n\ndonald: that's a joke. the moors. \n\ngeorge: oh, noooo, i'm so sorry. it's the moops. the correct answer is, the moops. \n\ndonald: moops? let me see that. that's not moops you jerk, it's moors. it's a misprint. \n\ngeorge: i'm sorry the card says moops. \n\ndonald: it doesn't matter. it's moors. there's no, moops. \n\ngeorge: it's moops. \n\ndonald: moors. \n\ngeorge: moops, \n\ndonald: moors! \n\nkramer: hey! anybody home? oh boy. \n\nnaomi: what should we do? \n\nkramer: ah, hold these (boxes of) pies. \n\nkramer: okay. \n\ngeorge: help, someone. (bubble boy is strangling george) \n\ndonald: there's no moops. you idiot. \n\nsusan: stop it. let go of him! \n\nmrs. sanger: donald, stop it! now, let go of him donald. donald! \n\ndonald: i'm going to kill him. \n\ngeorge: you're choking me. \n\nmrs. sanger: donald, ... donald... \n\ndonald: moors. say moors! \n\ngeorge: moops, moops \n\nmrs. sanger: donald, no. ... donald, stop it .. \n\njerry: what are you doing? you're choking me. elaine! \n\nwaitress: are you going to pay for that? \n\njerry: no, i want the picture back. \n\nman #1: something's happened to the bubble boy. they're rushing him to the hospital. \n\nwaitress: what? (releases jerry) \n\njerry: the bubble boy? he lives around here? \n\nman #1: that's his house right down the road. \n\nman #2: he got in a fight with some guy. \n\nguy1: what kind of person would hurt the bubble boy? \n\nman #2: some little bald guy from the city. \n\nman #1: come on -- vern, page, preston, don't you think we ought to do somethin'? \n\nkramer: naomi, come on let's get goin'. \n\nnaomi: but that lake must be freezing. \n\nkramer: nah, it's good for ya'. retards the aging process. \n\nnaomi: ready to go swimming? \n\nkramer: let's go.... ok. (he snaps the towel at naomi's backside) gotcha. \n\nnaomi: ahaaaaaaha \n\nkramer: heyawaaa \n\ngeorge: jerry! what happened to you? \n\njerry: what happened to you? you were going like a hundred miles an hour. \n\ngeorge: oh i was not. the bubble boy was tried to kill me. \n\nelaine: what? \n\ngeorge: yeah, susan tell him. \n\nsusan: it's a long story. \n\ngeorge: yeah. \n\ndonald: hey seinfeld! \n\njerry: hey, happy birthday. \n\nelaine: hi. \n\ndonald: thanks for showing up. you know your friend here tried to kill me. \n\ngeorge: oh, you lying little snot. and he's a cheater. aren't ya' you little twerp? \n\ndonald: moors \n\ngeorge: moops \n\ndonald: moors \n\ngeorge: moops \n\ndonald: moors \n\ngeorge: moops \n\nman #1: there's the guy who tried to kill the bubble boy. get him! \n\ngeorge: go, go, get out, ... \n\njerry: fire engines? \n\ngeorge: what? must be a big one. \n\nelaine: do you smell something? \n\njerry: yeah, \n\nsusan: smoke. \n\ngeorge: yeah, (cough) definite smoke. \n\nelaine: arghhh, look it's a fire! (cough) \n\njerry: holy cow! look at that! \n\nsusan: it's my father's cabin! \n\nelaine: the cabin is on fire! \n\ngeorge: (apprehensively) um. i just realized. ya' never gave me back the change from the tolls. \n\nelaine: how could this have happened? \n\nkramer: (singing) ... it's a big, wild, funky mountain man ... \n\nnaomi: oh, my god, the cabin? \n\njerry: what are you two doin' here? \n\nnaomi: look at that. \n\njerry: you didn't ... (makes motion like he's lighting a cigar) \n\nkramer: my cubans! (runs off to the burning cabin) \n\n** pies - just in case you did not know what these two kinds of pies are: nan \n\nboysenberry: the edible fruit obtained by crossing the blackberry, raspberry, and loganberry. [ after rudolph boysen, 20th century u.s. horticulturist ] \n\nhuckleberry: the edible black or dark blue berry of any of various north american shrubs. 2. a shrub yielding this berry. \n\n[setting: jerry's apartment] \n\njerry: she hasn't told her father yet? \n\ngeorge: no. we're supposed to tell him tonight. \n\njerry: \"we're\"? what do you mean, \"we're\"? \n\ngeorge: susan wants me to be there. \n\njerry: you're meetin' the father for the first time? \n\ngeorge: (reluctantly) yeah. \n\njerry: (chuckles slightly) well, you'll make quite an impression on him when you tell him how you burned his cabin down. \n\ngeorge: i didn't burn it down - kramer did! \n\njerry: (laughs) i mean, the whole thing is ironic. think of it here the guy is nice enough to give you a box of very fine cuban cigars.. \n\ngeorge: yeah, i know what happened. \n\njerry: no, but wait, wait and then you dump them off onto kramer.. \n\ngeorge: (getting frustrated) i know. \n\njerry: (continuing) ..who, who proceeds to burn the man's cabin down with one of those very same cigars! (topping off his observation) it's very comical.. \n\ngeorge: listen, maybe we shouldn't start writing today. i got a lot on my mind. \n\njerry: (persisting) no, no, we put this off long enough. today's the day. \n\ngeorge: (letting his conscious get the best of him) i wonder how susan's father's going to react to this. alright, what- what's the worst he could do? so you burn a cabin down.. \n\njerry: (agreeing) c'mon. it's not even a house - it's, like, a cabin. \n\ngeorge: we could build a cabin like (snaps) that. \n\njerry: (blunt) well, maybe not us, but two men could. \n\ngeorge: (looking over the writing materials they just bought) bics? what, d'ja get, bics? \n\njerry: what, you got a problem with the pen now? \n\ngeorge: well, i like a rolling writer. they're very smooth. \n\njerry: alright, let's just get to work. (they both move into the living room - ready to start writing their script. jerry sits down) nbc pilot, seinfeld project. act i, scene a. \n\ngeorge: (still standing) so, you're gonna sit there? \n\njerry: (wanting to get started) just - just park yourself. (george reluctantly sits on the sofa) alright. act i, scene a. \n\ngeorge: (offering) drink? \n\njerry: no, no thank you. \n\ngeorge: (uncapping his pen) alright, here we go. \n\njerry: act i, scene a.. \n\ngeorge: weren't you supposed to call elaine? \n\njerry: (eagerly reaching for the phone) yes. (george turns the tv on, and begins watching as jerry dials the number) hi, is elaine there? oh, uh, hi, sandra. uh, yeah. i can hold. (to george) every time i call i gotta chit-chat with her assistant for, like, twenty minutes. (back into the phone) oh, hi, sandra. listen, i'm at a pay phone, and there's lots of people here waiting to use it. (yelling out for believability) i'll be off in a minute! (to sandra) yeah, could you just put me through to elaine? okay, thanks! (he turns to george) are you thinking of ideas? (george, picking his teeth with his finger, is absorbed into the television. he seems to not even notice jerry) listen, elaine, is there any way i could get through to you directly? every time i call sandra bends my ear for, like, twenty minutes. (pause) so we're on for later? \n\nelaine: yeah, i'll come by after work. hey, i got a rubber pencil thing happenin' here.. (sandra passes her doorway) uh, i gotta go. i gotta go. (hangs up) sandra! sandra? hi, can you come here for a second? \n\njerry: okay, let's go. (george shuts the television off, ready to work) \n\ngeorge: alright, here we go. you got it? \n\njerry: yeah. \n\ngeorge: here we go. \n\njerry: okay, how about this i'm in my apartment, you come in. \n\ngeorge: (holding out his arms - giving praise) it's beautiful. now, what do i say? \n\nelaine: could you do me a favor? um, when my friends call, could you not talk to them for too long? \n\nsandra: why? did jerry say something? \n\nelaine: no, no. \n\nsandra: he must have said something. \n\nelaine: oh, no, he didn't say anything. \n\nsandra: (near tears) i can't work for you! i can't. i'm leaving. (exits quickly) \n\nelaine: (calling out to sandra) no, sandra. i'm sorry, i'm sorry! i really am! listen, listen, jerry's under a lot of pressure right now. it's very hard being a stand-up comedian! sometimes they don't laugh! \n\ngeorge: alright, let's go. \n\njerry: here we go. \n\nkramer: hey. \n\ngeorge: yeah, kramer, we're, uh, kind of in the middle of something here. we're trying to do a little work.. \n\njerry: yeah, come on. (kramer gives out a frustrated sigh) what's with you? \n\nkramer: (complaining) no more golf. \n\njerry: why? \n\nkramer: well, you remember i told you about the pro, you know, at the westchester country club, who's letting me play a round every time i give him a couple of those cuban cigars? \n\njerry: yeah. \n\nkramer: (angered) yeah, well, i lost them all in the fire! (leaning over the couch, he addresses george) hey, george, maybe you can ask susan's father for more, huh? \n\ngeorge: what are you, crazy? i can't ask the guy for more cigars after you burned down his cabin! \n\nkramer: why? what's one thing got to do with another? \n\ngeorge: kramer, please. \n\nkramer: well, i can't go back to the public courses, now. i can't! i won't. i mean, you know what that's like? it's crowded, the grass has big brown patches in it, they don't rake the sand traps! not to mention the caliber of people you have to play with! \n\ngeorge: kramer, i can't help you. you're gonna have to get them some place else. \n\nkramer: (opening the door) where? they're cubans. (leaves) \n\ngeorge: (getting up) you know what? maybe i should take off. \n\njerry: what?! \n\ngeorge: well, you know, i gotta go to, uh, susan's parent's house for dinner.. and, you know, i want to shower first.. and i want to leave myself plenty of time. \n\njerry: (looking at his watch) you got four hours! what about the script? \n\ngeorge: i think we got a bite on it. (exits) \n\n[setting: the ross' house] \n\nmrs. ross: (to mr. ross) doesn't george look like your sister, sarah? \n\nmr. ross: (gruff) a slight resemblance. \n\nmrs. ross: (to george) her son's a podiatrist, you know. \n\ngeorge: ohh, i have tremendous respect for people who work with feet. i mean, to dedicate yourself to the foot - you're toiling in virtual anonymity. i mean.. \n\nmr. ross: how are you enjoying those cigars i gave you? \n\ngeorge: oh, uh, the cigars.. (chuckles nervously) i'm, uh, suckin' 'em down. i'm puffing my brains out, yeah. \n\nmr. ross: you know those cigars are made special for castro? \n\ngeorge: (impersonating carson) i didn't not know that. weird. wild. (susan and george both laugh) \n\nmr. ross: what? \n\nsusan: (explaining) he's doing johnny carson, daddy. \n\nmr. ross: i didn't care much for his jokes. \n\nsusan: (to george) daddy never laughs. \n\ngeorge: oh, well, so what? laughter - what is that? i mean, what is the point of opening your mouth and going \"ha, ha!\"? what is that? \"ha, ha!\"? \n\nmr. ross: you know, you can't get those cigars anywhere. \n\nmrs. ross: you and your cigars.. \n\nmr. ross: (shooting back at his wife) wear some more lipstick. \n\nsusan: daddy, there's, um, there's something that we have to talk to you about.. \n\nmr. ross: oh, i forgot to ask you - how'd you like the cabin? \n\ngeorge: (even more nervous than before) oh, the, uh, the cabin.. well, (clears throat) \n\n[setting: jerry's apartment] \n\njerry: right after we get off the phone, then you go and tell her that?! well, of course she knows it was me who complained! now i'm responsible for this woman's quitting. oh, this is unbelievable! \n\nelaine: (full of guilt) i know! i screwed up. it's all my fault. would you call her? \n\njerry: (caving in) ohh.. dial the number. (elaine picks up the phone, and starts to dial) how could you do this? \n\nelaine: (handing the phone over to him) i was just trying to help you. \n\njerry: (muttering) oh, just trying to (rudely grabs the phone from her) help me.. (into the phone) hello? sandra? hi, uh, this is jerry seinfeld. (elaine now has her hand in a bowl of popcorn - grabbing a fistful) listen, i - i just want to tell you, (jerry sternly grabs elaine's hand - forcing her to drop the popcorn, then shoves her hand away. elaine sits back like a scolded child) there's been a terrible misunderstanding see, i told elaine that, uh, it was a real treat talking to you on the phone, and she thought i was being sarcastic, you know, 'cause i'm a comedian and all. she thought i meant (deeply sarcastic) \"yeah, it was a real treat talking to her on the phone.\" (back to normal) you know, but i was really being sincere.. no, of course i like you.. tonight? ..um, uh, hold on a second. (to elaine, whispering) now she wants to have a drink with me. (elaine mouths out \"just go\" while making gestures. jerry, again, gives in. back on the phone) yeah, i think i can.. um.. yeah, i know where that is.. ok.. uh, i'll see you there. okay, bye. (hangs up, peeved) now i gotta have a drink with her. \n\n[setting: the ross' house] \n\ngeorge: the cabin.. (laughs nervously) well.. (pauses as he thinks of a way to break the news, then decides to pass it off) susan? \n\nsusan: uhh.. about the cabin.. \n\nmr. ross: (cutting her off) i love that place. my father built that cabin in 1947. my mother was recuperating from impetigo at the time, and dad thought it would be a good idea to get her out into the fresh air. she died there the following winter. and he passed away 10 years later to the day. his last words to me were, (mrs. ross, bored out of her mind, has obviously heard this story a million times - she mouths the words as mr. ross says them) \"cherish the cabin.\" not, uh, \"take care of your sister.\" (adding) she's a paraplegic. but, \"cherish the cabin.\" (smiling, reflecting) and i have.. for 45 years. it's often been a.. sanctuary for me. \n\ngeorge: (annoyingly butting in) kinda like superman's fortress of solitude. \n\nmr. ross: what? \n\ngeorge: s, uh, superman - he, uh, built the fortress of solitude up at the north pole, to, uh, you know, sort of get away from it all.. \n\nmr. ross: when i go, i'm passing it on to her. (pointing at susan) \n\nmrs. ross: (drunk, she laughs out loud) i'll take a hotel any day. \n\nsusan: daddy.. \n\nmr. ross: yes? \n\nsusan: daddy, about the cabin.. \n\nmrs. ross: (laughing, she points to her shirt) look, henry, i spilled wine on me! (laughs again) \n\nmr. ross: (to susan) what about it? \n\nsusan: well, the thing is.. \n\nmr. ross: what? what is it? \n\nsusan: well, the - the cabin, is, kind of, uh.. george? \n\ngeorge: (extremely blunt) burned. \n\nmr. ross: burned? \n\nsusan: there was a fire, and it uh.. \n\ngeorge: burned. \n\nmr. ross: (still trying to comprehend what has happened) the cabin burned? \n\ngeorge: (laughs) yeah, burned. whoo.. \n\nmrs. ross: (laughing out loud) burned! (george laughs with her) \n\nmr. ross: was anything found? was it all burned to the ground?! did they find anything? \n\nsusan: (solemn) no. nothing. \n\nmrs. ross: (laughing, she's obviously getting a kick out of her husband's misfortune) nothing! ha, ha, ha. \n\ngeorge: eh, but, you know, mr. ross, if - if you look at the whole situating, what with it being your cigars, and everything, it's really rather ironic - one might even say, in a sense, comical.. (mr. ross has, by now, left the room. mrs. ross is pointing at george, nodding, laughing. as if to say he hit the bullseye. george calls out to mr. ross) really. think about it. \n\n[setting: jerry's apartment] \n\nsandra: (offended) i can't believe you said that! \n\njerry: what?! \n\nsandra: (buttoning her jacket) how could you say something like that to me?! \n\njerry: what? what?! you were the one who was talking dirty. i was just trying to keep up! \n\nsandra: that was a weird thing to say. \n\njerry: why? it didn't mean anything. i was just trying to join in so you wouldn't feel embarrassed. \n\nsandra: ohh, i think you're really sick. \n\njerry: (getting slightly offended) i'm not sick. (pointing at her) you - you said much sicker things than me. \n\nsandra: i'm leaving. (moves toward the door. jerry blocks her path) \n\njerry: i really think you're making too much of this. \n\nsandra: (attempting to get past him) excuse me. (they both move to the door) \n\njerry: let me walk you to a cab. \n\nsandra: (opens the door) that's ok. \n\njerry: i mean, the main thing is that this is just between us, and that'll be the end of it. \n\nsandra: oh, really? (quickly walks out) \n\njerry: (calling after her) i mean, people - they're not interested in things like this. they don't want to hear about it. they really don't. \n\n[setting: the coffee shop] \n\njerry: so, we're.. uhh, drinkin' and talkin', and uhh, so, she starts rubbing my leg. \n\ngeorge: wo-hoah! what did you do? \n\njerry: (sarcastic) have you ever told a woman to stop touching your leg? \n\ngeorge: yeah, right. \n\njerry: i mean, i know it's the wrong thing to do. she works in elaine's office. i know it's wrong - but i can't get that hand off my leg. i mean, i'm looking at the hand, and i'm thinking, \"that hand should not be on my leg.\" but i can't make my brain to get my mouth to say the words, \"would you mind?!\" \n\ngeorge: yeah, woman have no problem getting the hand off. how do they do that? \n\njerry: i don't know, they're working on a whole other level.. \n\ngeorge: alright, so, go ahead. \n\njerry: so we go back to my apartment.. \n\ngeorge: (expressing shock) woah. whoa! woah! \n\njerry: so, we're, uh, foolin' around there.. you know, it's getting a little passionate.. (scoots closer to george, to prevent others from hearing) and, uh, she starts with the dirty talking. \n\ngeorge: (putting his hands up) alright, alright, hold on! (jerry has george's full attention) time out! woah, woah! (scooting in, giddy) what did she say? \n\njerry: (modest) oh, you know, the usual.. \n\ngeorge: no, i don't know. how do i know the usual? \n\njerry: typical things. \n\ngeorge: (picking up the ketchup) what typical? gimme typical. gimme some typical. \n\njerry: she says, uh.. (mumbles something inaudible. george, so shocked by what he's just heard, accidentally squeezes the ketchup bottle - ketchup squirts out and files off-screen. george reacts deeply) \n\ngeorge: (breathing deeply) that's very dirty. (jerry nods) that's absolutely filthy. \n\njerry: ..and then she starts talking about her panties. \n\ngeorge: (yelling out to a waitress) gonna need some water here! \n\njerry: so i said something. \n\ngeorge: ok, what did you say? \n\njerry: (defensively) now, bear in mind, i am just trying to keep up. \n\ngeorge: of course. \n\njerry: okay? so, she's taking about her panties, so, uh.. so, i said, \"you mean the panties your mother laid out for you?\" \n\ngeorge: (takes a few seconds to mull this one over. shooting jerry a confused look, he repeats it) \"the panties your mother laid out for you\"? (jerry nods) what does that mean? \n\njerry: (throwing up his hands) i don't know! it just popped out. \n\ngeorge: well, how did she react? \n\njerry: she flipped out! just left. \n\ngeorge: well, that's not offensive. (reflects) it's abnormal, but it's not offensive. \n\njerry: look, the main thing is i don't want elaine to know about any of this. i mean, especially the panty remark. i mean, it's embarrassing. and she's never let me hear the end of it. \n\njerry: she will tell her. she's going back to work. i talked her into it - how stupid was that? (changing subject as they both collect money to pay for the check) hey, so, susan's father took that news pretty hard, huh? \n\ngeorge: yeah, yeah. he went into the bedroom and started sobbing. \n\njerry: i guess he failed to see the humor in it. \n\ngeorge: huh. (makes a \"over his head\" gesture with his arm) c'mon, let's go, go. we got a lot of work to do today. \n\njerry: (getting up) alright, big work day. \n\ngeorge: that's right. \n\n[setting: jerry's apartment] \n\ngeorge: okay. \n\njerry: let's go. \n\ngeorge: here we are. \n\njerry: right now. \n\ngeorge: let's do it. \n\njerry: you and me. \n\ngeorge: okay. \n\njerry: alright. \n\ngeorge: what'dya got? \n\njerry: (reading from his notebook) i got you enter, you go \"hi\", and i go, \"hello.\" now.. we need something here.. \n\nkramer: oh, hey. \n\ngeorge: don't be silly. \n\njerry: come in, we're taking a break. \n\nkramer: (moving back into the room) oh, yeah? \n\njerry: yeah! \n\nkramer: uh, george, did you talk to that guy about getting me some more cigars? \n\ngeorge: (scoffs) no, i told you, i'm not gonna do that. \n\nkramer: (concluding) okay.. well, i guess i'm just going to have to take matters into my own hands, huh? (pause) alright, i'll see you guys. (leaves, despite \"no, don't go!\" and other various comments by jerry and george) \n\n[setting: united nations' permanent mission of cuba building] \n\nkramer: buenos dias. \n\nsecretary: buenos dias. \n\nkramer: uh, habla ingles? \n\nsecretary: si. \n\nkramer: giddy-up. ok, uh, (looks at a woman wearing dark sunglasses and sitting on a sofa behind him. he reacts oddly) um. i need to talk to someone. \n\nsecretary: what is this about? \n\nkramer: uh, well, it's a very private matter, but it's extremely urgent. \n\nsecretary: are you an american? \n\nkramer: oh, yeah. \n\nsecretary: i see.. excuse me. (picks up the phone) \n\nkramer: okay. \n\n[setting: jerry's apartment] \n\njerry: (stirring, he gets up to answer the buzzer) alright, let's get going. c'mon, c'mon now. (approaches the intercom) c'mon, let's get it together.. (through intercom) yeah? \n\nelaine: it's elaine. \n\njerry: c'mon up. (slightly opens the door for elaine) \n\ngeorge: (standing up, still waking up) alright, you know what we should do? we should go to the movies. get away from this script for a while.. \n\njerry: (agreeing) yeah, we should. \n\ngeorge: alright, i just have to go over to the ross' apartment and drop off susan's sunglasses. you'll come with me? \n\njerry: yeah. wha - what, does she live with them? \n\ngeorge: no, no, no, no. \n\njerry: oh. \n\nelaine: hey, nice going, jerome seinfeld! \n\njerry: what? \n\nelaine: i just got a message from sandra, she's coming back to work. \n\njerry: well, then, you've just got to fire her! don't even think about it - there's no two ways about it. \n\nelaine: why? what happened? did you talk? \n\njerry: talk? did i talk? it - you're darn right i talk to her! we talked up a storm - and i concluded from the basis of these talks that this isn't anybody you should be talking to. \n\nelaine: really? \n\njerry: yes. \n\nelaine: really? you really think i should fire her? \n\njerry: oh yeah. yeah, in fact, if george and i weren't so busy here working on the script, i'd do it myself. \n\n[setting: united nations' permanent mission of cuba building] \n\nman: (to secretary) expira te afuera. \n\nkramer: (standing up, greeting the men) buenos dias. \n\nman: what is your name, senor? \n\nkramer: uh, kramer. \n\nman: so, senor kramer, what is this about? \n\nkramer: (leaning in, confidentially) cigars. \n\nman: (confused) cigars? \n\nkramer: (definite) cigars. \n\nman: what about cigars? \n\nkramer: uh, see here, i.. (pulls out a paper ring from his pocket) i saved one of the cigar rings.. \n\nman: ohh.. (laughs, pulling a cigar from his inner coat pocket) you mean - one of these.. \n\nkramer: (pointing at the cigar, incredibly nervous) yeah, yeah. that- that's, uh, okay, so, uh, i'd like to buy a couple of boxes of those from you, yeah? \n\nman: (deeply sniffs the cigar's aroma) you do realize, of course, these are illegal in your country. \n\nkramer: um, wha - oh, illegal, huh? \n\nman: i like that jacket.. \n\n[setting: the ross' apartment] \n\nsusan: hi! \n\ngeorge: hi, how are ya? (they kiss) \n\nsusan: hey, jerry. \n\njerry: hi. \n\nsusan: i thought you two guys were working today. \n\njerry: ah, just - takin' a little break. \n\ngeorge: (chuckling) yeah. uh, oh, here's your sunglasses. (hands them to her) \n\nsusan: ok, thanks. come on in for a second. (they move into the living room. susan gestures to a man sitting on the couch reading the paper) this is my brother, ricky. he's home from college for the weekend. \n\ngeorge: ohh, hey there, young fella. (they shake hands) what's your major? \n\nricky: (blunt) i don't have one. \n\ngeorge: well, you should always consider podiatry. (patting ricky on the shoulder) there's nothing wrong with the feet. (ricky looks critically back at george) \n\nsusan: (now gestures to an old woman in a wheelchair) and this is my aunt, sara. \n\nsara: (staring at george) he doesn't look like me. \n\nmrs. ross: sara, what do you have on your wheels? \n\nsara: nothing, they're clean. \n\nmrs. ross: ricky, did you wipe her wheels off? \n\nricky: (annoyed) yes. \n\nmrs. ross: (concluding) well, they're filthy. it's just a matter of common courtesy.. (wheels sara over to a spot off the rug) when you come in the house you wipe your wheels. \n\nsusan: excuse me. (answer the door. it's her doorman, raymond, carrying a burnt box) hello, raymond. \n\nraymond: ah, yes, the man from the insurance company dropped this off this morning. he said it was the only thing left from the remains of the fire. \n\nsusan: (accepts the box) oh, thank you. (as the doorman leaves, she turns to jerry and george) wow, i've never seen this before.. (opens the charred box) oh, they're letters. (hands the box to george) here. \n\ngeorge: oh, sure. (holds the box out as susan takes out a few letters) \n\nsusan: from.. (trying to read one) from john cheever. \n\njerry and george: oh, wow. \n\nsusan: (chuckles as she opens up one of the letters. she reads it) \"dear henry, last night with you was bliss. i fear my.. orgasm (she now has everyone's attention) has left me a cripple. i don't how how i shall ever get back to work.. (jerry and george make odd faces as susan is still concentrating on the notes) i love you madly, john. (pause) p.s. loved the cabin.\" (george nods, and jerry gives a \"oh, of course\" reaction) \n\ngeorge: well, we.. we, we, ah.. \n\njerry: (looking at his watch ) yeah.. \n\ngeorge: we really should be, uh, heading out.. \n\njerry: yeah. (tapping his watch) look at the time. \n\ngeorge: you know, the time.. \n\nmr. ross: the box! (rushes toward george, grabbing the box away from him, then the letters from susan's hands) my letters! gimme that! (now holding them against his chest, defensively) who told you to open this?! \n\nmrs. ross: (hysterical) who's john?! who's john?! \n\nsara: (yelling out) i knew it! \n\nmrs. ross: i want to know who john is! \n\nrickey: john cheever?! dad, you and john cheever?! \n\nmr. ross: (proclaiming) yes! yes, he was the most wonderful person i've ever known. and i love him deeply! in a way you could never understand.. (slowly walks back to his room, leaving everyone speechless. susan seems to be affected the most. a long pause passes. jerry gives george a signal that they should go) \n\ngeorge: well, we really should be- \n\njerry: yeah. \n\ngeorge: uh, heading out. jerry really hates to miss the coming attractions. \n\njerry: yeah, and, (pointing to his watch) because of the.. (slowly exiting) time. \n\ngeorge: yeah, time is what he's indicating there.. \n\njerry: (waving good bye) we'll see ya. \n\ngeorge: uh, anyway, (waving bye to everyone) onward and upward. \n\n[setting: jerry's apartment] \n\ngeorge: alright, here we go. \n\njerry: alright, let's go. \n\ngeorge: come on now. \n\njerry: right now. \n\ngeorge: here we go. \n\njerry: you and me. \n\ngeorge: you got it. \n\njerry: no foolin' \n\ngeorge: ok, so, what'dya got? \n\njerry: (looking at his notebook) alright, i got, uh, you come in, you say \"hi\", and i say \"hello\". \n\ngeorge: alright, so, we need something.. \n\njerry: yeah.. how about this i say \"how's it goin'?\" \n\ngeorge: \"how's it going?\" - beautiful. \n\njerry: (getting up to answer the door) alright, did you get that line? \n\ngeorge: (nodding, writing) \"how's it going?\" \n\njerry: did you write it down? \n\ngeorge: i'm writin' it. \"how's it going?\" \n\njerry: okay.. (opens the door to a frantic elaine) \n\nelaine: real good! \n\njerry: what?! \n\nelaine: do you know how much money you cost me today?! 429 dollars! \n\njerry: what?! how? \n\nelaine: i got sandra transferred to another office upstairs, okay?! so, she blabs to lippman about my long distance calls to europe! \n\njerry: what calls?! \n\nelaine: uh! i made a friend when i was in europe, okay?! and we've been in touch, and sandra told lippman! \n\njerry: oh, did - did she say anything else to you? \n\nelaine: (confused) \"anything else\"? what do you mean \"anything else\"? \n\njerry: so she just left the office - didn't say a word to you about anything? \n\nelaine: yeah! \n\njerry: (smiling to himself) beautiful. \n\nelaine: why is that beautiful? \n\njerry: oh, no, not beautiful. \n\nelaine: it's four hundred and twenty nine dollars! \n\njerry: hey, look, i'm going to pay for that. \n\nelaine: no, no. \n\njerry: (taking out his checkbook) no, i insist. i was the one who encouraged you to fire her - the whole thing was all my- \n\nelaine: (giving up too easy) okay. \n\njerry: (pauses, noting elaine's quick accept) fault. (starts to write a check out, then stops, looking at the door) do you smell smoke? \n\nkramer: oh, hey! hey, jer, i want you to meet my new friends, here. (introducing each one) this is, uh, louis, jorge, and umberto. \n\njerry: oh, how you doing? nice to meet you. \n\nkramer: yeah, we're heading up to westchester - gonna hit the links. \n\njerry: oh. (notices louis' jacket) isn't that, uh, your.. \n\nkramer: (trying to avoid the issue) oh, yeah, yeah, okay, we're going. (to his three friends) vamanos, muchachos! \n\nelaine: (turns to george, he is now reading a book) hey, what are you reading? \n\ngeorge: oh, uh, \"the falconer\" by john cheever. it's really excellent. \n\nelaine: (to jerry) john cheever, you ever read any of his stuff? \n\njerry: uh, yeah, i'm familiar with some of his writing. (george shoots jerry a smirk, then returns to his book) alright, (hand the check to elaine) look, we gotta get back to work. we just had a big breakthrough here. \n\nelaine: (folding up the check) ok, i'll leave you two alone. \n\njerry: (moving back into the living room) okay. \n\nelaine: (in the door way) maybe i'll go visit my mother. she just bought me some new panties (jerry pauses right before sitting in his chair) and they're - all laid out for me. (leaves, smiling to herself. jerry and george both look at each other, frozen in their places) \n\njerry: (answering machine) leave a message and i?ll call you back, thanks. joe divola jerry, joe divola. *pbt* *pbt* *pbt* i have a hair on my tongue, i can't get it off, you know how much i hate that? course you do, you put it there. i know what you said about me seinfeld. i know you badmouthed me to the execs at nbc, put the kibosh on my deal. now i?m gonna put the kibosh on you. you know i?ve kiboshed before, and i will kibosh again. \n\nkramer: so, what do you think? \n\njerry: about what? \n\nkramer: about the opera. \n\njerry: nah, i don't wanna go. \n\nkramer: you gotta go. \n\njerry: i-i-i don't like the opera. what are they singing for? who sings? you got something to say, say it! \n\nkramer: jerry, you don't understand, that?s the way they talk in italy, they sing to one another. kramer starts to sing in bad italian. \n\njerry: all right, all right. \n\nkramer: that?s the way it was, you know. you listen to the language, its got that sing songy quality. it?s the language jerry, the language \n\njerry: so why don't they talk like that now? \n\nkramer: well its, uh, well its too hard to keep up, you know, they were tired. \n\nkramer: better get that \n\njerry: yeah? \n\nelaine: (intercom) it?s me! \n\njerry: come on up. \n\nkramer: so, huh? \n\njerry: i don't know \n\nkramer: oh come on jerry, its opening night, black tie, pagliacci! the great clown, the great sad tragic clown, like you. \n\njerry: well it?s very flattering. how did you get these tickets, i heard they're impossible to get. \n\nkramer: oh, well i have many associates. \n\njerry: i don't know, opera, it?s not my kind of thing. \n\nkramer: all right, you not gonna go i?m not gonna go, i?m gonna call the whole thing off. \n\njerry: no, wait a minute, wait a minute, that?s not fair, what about george, susan and elaine, what do you need me for? \n\nkramer: you're the nucleus, the straw that stirs the drink. you're the miana! \n\njerry: well i guess if i?m the miana i should go. all right, all right. \n\nelaine: hi! \n\njerry: hi! \n\nkramer: hey! hi elaine! \n\nelaine: you got the tickets right? \n\nkramer: well no, i don't have them on me. \n\nelaine: what? that?s why i came all the way over here. \n\nkramer: my friends got 'em, i?m going to pick them up tomorrow. \n\nelaine: oh, i was gonna surprise joey with them, you got an extra one right? \n\nkramer: oh yeah! \n\njerry: so i finally get to meet your pal joey. \n\nelaine: its killing you isn?t it? \n\njerry: yeah, so joey?s a great lover of the opera \n\nelaine: listen, i got news for ya, its nice to be involved with somebody who?s interested in something other than nick at night. now he?s got a grip on reality, he's happy, he's well adjusted. \n\njerry: well i?m looking forward to meeting him. \n\nelaine: i've got to go \n\njerry: where are you going, what?s the rush? \n\nelaine: i'm going to surprise joey, i?ve never been to his apartment so i?m just going to 'pop in' \n\njerry: oh, good, men love that! \n\njerry: hey! \n\nkramer: you've got a message buddy. \n\njerry: ooo, could be from that blonde \n\nkramer: oo yiggity diggigg \n\njoe divola: (answering machine message)'jerry, joe divola. i have a hair on my tongue' \n\njerry: (shouting) kramer what am i going to do did you hear that that guy's gonna put a kibosh on me he's crazy he's out of his mind.... \n\nkramer: steady, steady, now calm yourself, come on, now get a hold of yourself, \n\njerry: what the hell he's supposed to be on medication i don't understand he told me he's getting medication what happened to his medication!? \n\nkramer: ok quiet! quiet! now let me think! \n\njerry: i'm gonna call the cops. that?s what i?m doing, i?m calling the cops. \n\nkramer: the cops? what are you calling the cops for? they?re not going to do anything! \n\njerry: what do you mean they're not going to do anything, they're the cops, they gotta do something, he just put the kibosh on me, do you know what the kibosh means, its a kibosh! \n\nkramer: yiddigtkk ka kibosh. \n\njerry: i mean it's a terrible mistake, i mean he thinks i ruined some deal of his at nbc, i don't know anything about any deal at nbc. \n\nkramer: call him and tell him \n\njerry: that?s what i?ll do, i?ll just call him and tell him, i?ll tell him. that?s all i?ll do. he's a human being, i?ll talk to him. he'll understand. right? \n\nkramer: right.... don't mention my name \n\njerry: oh, i got the machine. \n\nkramer: what?s his message like? \n\njerry: nice! \n\nkramer: eh! \n\njerry: (into phone) hello joe, listen this is jerry seinfeld, i really think there?s been a huge colossal misunderstanding, \n\nkramer: big! big! \n\njerry: and i feel if we can just talk about this we can straighten the whole thing out, so listen, so call me back. bye. \n\nelaine: joey? joey? \n\nelaine: oh god, oh, its you! you scared me! \n\njoe divola: good. fear is our most primal emotion. \n\nelaine: you left your door open. \n\njoe divola: i know, i like to encourage intruders. \n\nelaine: (laughs) what?s all this? \n\njoe divola: do you like it? my home is a shrine to you. \n\nelaine: where did you get all these pictures? \n\njoe divola: i took them myself with a telephoto lens. coming out of your office, your apartment, shopping, showering. \n\nelaine: showering? \n\njoe divola: i developed them myself in my dark room. would you like to see? \n\nelaine: in the dark room? uh no, no thank you. not right now. i'm a day person!... are you all right? \n\njoe divola: why \n\nelaine: well i don't know, you just don't seem yourself? \n\njoe divola: who am i? who am i supposed to be? \n\nelaine: that?s a good question, good question, its very... exerstential! who are you? who am i? yeah, well. \n\njoe divola: what are you doing here? \n\nelaine: oh, nothing, i just stopped by to chat, you know, shoot the breeze. \n\njoe divola: were you able to get those opera tickets to pagliacci from that friend of yours? i'm really looking forward to it. \n\nelaine: oh, no, he couldn't get them. we're not going. \n\njoe divola: really? \n\nelaine: oh, dammit, you know i just remembered i gotta go, i left something on, the gas, the lights, the water in the tub. something is on somewhere so i?m just gonna get the uh.. \n\njoe divola: you know the story of pagliacci, nedda? \n\nelaine: uh.. i?m elaine! \n\njoe divola: he's a clown whose wife is unfaithful to him. \n\nelaine: oh. \n\njoe divola: do you think i?m a clown, nedda? \n\nelaine: do i think you're a clown? no, not if it?s bad to be a clown, if it?s bad to be a clown then you are definitely not a clown. but if its good to be a clown then, you know, i would have to rethink the whole thing. \n\njoe divola: you've betrayed me with another, haven't you, nedda? who is he. i want you to tell me who he is. i want his name. tell me his name. \n\nelaine: oh, like any man would ever look at me, come on, i?m gonna... get out of here. \n\njoe divola: pagliacci kills his wife. \n\nelaine: se, now that?s terrible, that is not a nice thing to do at all, i don?t know how this paliachi thing turns out but you know i would assume that there is big big trouble for that clown \n\njoe divola: you're not leaving \n\njerry: (on phone) but officer, he threatened me! i don't understand, that?s not right! what if it was the president of the united states i bet you'd investigate. so what?s the difference, i?m a comedian of the united states, and i?ll tell you i?m under just as much pressure. alright, thanks anyway, ok bye. \n\njerry: (cautiously) who is it? \n\ngeorge: it's george. \n\ngeorge: what, are you locking the door now? \n\njerry: well, well, look at you. it?s a little skimpy there isn't it? \n\ngeorge: do you know the last time i wore this thing? six years ago, when i made that toast at bobby leighton's wedding. \n\njerry: ooo, that was a bad toast. \n\ngeorge: it wasn't that bad. \n\njerry: i never heard anybody curse in a toast. \n\ngeorge: i was trying to loosen 'em up a little bit. \n\njerry: there were old people there, all the relatives. you were like a red fox record. i mean, at the end of the toast nobody even drank. they were just standing there, they were just frozen! that might have been one of the worst all time toasts. \n\ngeorge: alright, still her father didn't have to throw me out like that, he could have just asked me to leave. the guy had me in a headlock! susan's not going tonight you know. \n\njerry: what do you mean not going? why not? \n\ngeorge: i don't know, she said she had to pick up a friend of hers at the airport. it cost me a hundred dollars this ticket. \n\njerry: why doesn't she pay for hers? \n\ngeorge: that's a very good question. you know she and i go out for dinner, she doesn't even reach for the check. that?s all i?m asking for is a reach. is that so much to ask for? \n\njerry: it's nice to get a reach. \n\njerry: who is it? \n\nkramer: it's me! \n\nkramer: what, are you locking the door now? \n\njerry: because of divola! get in here... how come you're not dressed? \n\nkramer: i am dressed. \n\njerry: you're going like this? \n\nkramer: yeah. hey i want you to hear something. \n\njerry: i thought you said people dress up when they go to the opera! \n\nkramer: people do, i don't. \n\njerry: well what about me! if you're going like that, i?m not going like this. \n\ngeorge: wait a minute, wait a minute, do you think i?m comfortable here. i can't change, i?ve got no clothes here! you've got to go like that, i can?t go like this alone! \n\njerry: why should i be uncomfortable just because my apartment is closer to town hall than yours? \n\ngeorge: that?s not the issue, we're friends, if i?ve got to be uncomfortable, you've got to be uncomfortable too! \n\njerry: all right, all right, i?ll wear this. it's bad enough i?ve got to go to the opera i?ve got to sit next to ozzie nelson over here. \n\njerry: would you turn that down! what is that crap! \n\nkramer: it's pagliacci! \n\njerry: oh beautiful. listen, we've got a little problem here, we've got two extra tickets. \n\nkramer: why? what happened? \n\njerry: well susan isn't going and elaine just left me a message her friend isn't going either. \n\nkramer: that?s fantastic! we'll scalp the tickets, we'll make maybe five hundred a ticket. \n\ngeorge: what? really? \n\nkramer: yeah. \n\ngeorge: people are looking for tickets here? \n\nkramer: what, are you kidding? opening night pavarotti and pagliacci. ha, we're gonna clean up! \n\ngeorge: oh man! i knew i was gonna love the opera. \n\njerry: oh yeah right. \n\nkramer: ok come on, let?s go get the tickets. \n\ngeorge: all right, all right. \n\njerry: all right, you guys listen, i've got to wait here for elaine, i'll meet you in front of the theatre. \n\ngeorge: oh, wait, isn't scalping illegal? \n\nkramer: oh yeah! \n\njerry: you sprayed him in the eyes with binaca? \n\nelaine: cherry binaca, it?s new. \n\njerry: see, i don't get that. first they come out with the regular, then a year later they come out with the cherry. they know that we like the cherry, start with cherry! then come out with the regular! \n\nelaine: it's like i didn't even know him. he's like a totally different person. \n\njerry: well you should hear the message from my nut. where's george and kramer, i want to get inside already, i don't like standing out here, i feel very vulnerable. \n\njerry: hey, hey, what are you doing, that?s my quarter. \n\nman#1: no it's not, it's mine. \n\njerry: i was just flipping it, it's mine. \n\nman#1: no, i dropped it, it's mine. \n\njerry: all right, do you want the quarter, take the quarter, but don't try and tell me it's yours. \n\nman#1: well it is mine. \n\njerry: what, do you think i care about the money? is that what you think? you want me to show you what i care about money? here look, here look at this, here's a dollar here look, there, that?s how much i care about money. \n\nman#1: you think i care about money, that?s how much i care about money, i don't care about money. \n\njerry: oh yeah, well why don?t you just get lost. \n\nman#1: why don't you get lost. \n\njerry: because i was standing here, that?s why. \n\nman#1: oh yeah? \n\njerry: yeah! \n\njerry: i kinda like this opera crowd, i feel tough... anybody else got a problem? \n\npark guy#1: hey clown! \n\npark guy#2: hey clown! \n\npark guy#1: make us laugh, clown! \n\npark guy#2: nice face, clown! \n\npark guy#2: make me laugh, clown! \n\nkramer: i got two, i got two huh, paliachi, who needs two, pagliacci, come on, the great tragic clown, come on, check it out, he laughs, he cries, he sings, pagliacci. hey, i got two beauties right here, check it out all right. \n\nman#2: hey, hey. are you selling. \n\nkramer: oh yeah, i?m selling. \n\nman#2: where are they? \n\nkramer: orchestra, row g, dead center, primo! you'll think you died and went to heaven. \n\nman#2: what do you want for them. \n\nkramer: all right, i?ll tell you what i?ll do. cause you look like a nice guy, a thousand dollars for the duce. \n\nman#2: i'll give you five hundred for the pair. \n\ngeorge: ok, it's a deal! \n\nkramer: pzzzt. no. \n\ngeorge: no? are you crazy? \n\nkramer: look, let me handle this. \n\ngeorge: five hundred dollars, that?s a great deal! \n\nkramer: you're blowing this, the guys a pigeon. \n\ngeorge: did you see that? the guy's walking away. what is wrong with you? that was a three hundred dollar profit. \n\nkramer: look, i know what i?m doing here george. \n\ngeorge: this is not a metallica concert, it?s an opera alright, a little dignity, a little class, just give me my ticket, i will stand over here and sell it. \n\nkramer: oh, yeah. \n\ngeorge: thank you very much. you just stand over there, i?ll stand over here. \n\nkramer: i know where i?m standing. \n\ngeorge: alright. \n\nkramer: hey! \n\ngeorge: (shouting) get your paliachi! \n\njerry: where are they already? \n\nelaine: i guarantee they don't sell either one of those tickets. \n\njerry: hey, look, there's bobby eighteen?s father-in-law, mr reichman. george and i were just talking about that today, i can?t believe it! that?s the guy who threw george out of the wedding. \n\nelaine: oh, yeah, when george made that bad toast! \n\njerry: do you remember the curse toast? \n\nelaine: oh yeah, the curse toast. \n\njerry: so, can you believe that message? now i?ve got to spend the rest of my life looking over my shoulder. \n\nelaine: me too \n\njerry: crazy joe divola \n\nelaine: how do you know his name? \n\njerry: what do you mean? why wouldn't i know his name? \n\nelaine: i never told you his name. \n\njerry: i never told you his name. \n\nelaine: wait a second, who are we talking about here? \n\njerry: joe divola. \n\nelaine: right, joe divola \n\njerry: how do you know his name? \n\nelaine: i've been out with him three times, i should know the mans name. \n\njerry: oh my god, its joe divola \n\nelaine: is he stalking you? are you kidding me? \n\njerry: that madman is trying to kill me. \n\nelaine: oh, jerry, why didn't you tell me his name! oh my god, he accused me of seeing someone else, he said tell me his name, he said tell me his name!! \n\njerry: oh! he said that! can you imagine what he'll do if he sees me with you! he'll think i?m the one who ruined his deal at nbc and took away his girl, he'll put a kibosh on me! \n\nelaine: oooohh, what about me! \n\njoe divola: excuse me \n\nelaine & jerry: aaahhhhh!! \n\ngeorge: but this is pavarotti! \n\nman#3: three hundred dollars, that?s a lot of money. \n\nmr reichman: you know steven holstman (?) did a production at tunis last yeas and from what i understand, the moslems really took to it. \n\ngeorge: all right, i?ll tell you what, you seem like a nice guy, let?s stop jerking around. give me.. two hundred and fifty dollars, i?ve got people waiting for me, i've got to get the hell out of here. \n\nmr reichman: scalping! i told them to put out extra security.. excuse me. \n\ngeorge: hey pop, would you buzz off, i've got something cooking. \n\nmr reichman: costanza!? \n\ngeorge: mr reichman? \n\nmr reichman: you've still got a mouth like a surd give me those tickets. \n\nmrs reichman: harold, no, harold, harold be careful of you're hair transplant! \n\njoe divola: anything is welcome, i accept change. \n\njerry: i don't have anything, i gave it to that guy. \n\njoe divola: you know, you could just say no, you don't have to humiliate me. i may be dressed as a clown but i am a person. \n\njerry: i'm telling you, the guy took..... \n\njoe divola: and i don't need people like you looking down their noses at me. i am just a street performer out here trying to make enough to get by. \n\nmrs reichman: doctor! doctor! is there a doctor anywhere! \n\njoe divola: what, are you showing off to your girlfriend here, is that it? \n\nelaine: i'm not his girlfriend. we dated for a while, but things didn't really work out. \n\njoe divola: you people make me sick. \n\njerry: that is one angry clown! \n\njerry: the hardest part about being a clown, it seems to me, would be that you're constantly referred to as a clown. \"who was that clown?\", \"i'm not working with that clown, did you hire that clown?\", \"the guy's a clown!\". how do you even start into being a clown, how do you know that you want to be a clown, i guess you get to a point where you're pants look so bad, it's actually easier to become a clown than having the proper alterations done. because if you think about it, a clown, if there isn't a circus around them, is really just a very annoying person. you're in the back seat of this guys volkswagen, \"what, you're picking somebody else up? oh man!\" \n\njerry: (singing) camera, curtains, lights - this is it, we'll hit the heights - oh what heights we'll hit - on with the show this is it! \n\nelaine: you know, it is so sad, all your knowledge of high culture comes from bugs bunny cartoons. \n\njerry: oh there's that clown again, what does he want from me. look i?m serious, i?m not kidding, i don't have the quarter, that guy took it. \n\njoe divola: i don't want any money. \n\nelaine: i smell cherry. \n\njoe divola: it's binaca. \n\njerry: binaca? \n\ngeorge: what did we say? two seventy-five? \n\nman#3: two fifty. \n\ngeorge: two fifty? are you sure \n\nman#3: yeah, yeah, i?m sure. \n\ngeorge: all right, all right, two fifty. \n\nsusan: george! \n\ngeorge: s-susan \n\nsusan: i can't believe it, i?m so glad i caught you. \n\ngeorge: what are you doing here, i though you were going to the airport. \n\nsusan: oh, there was some problem with the plane, they landed in philadelphia. \n\ngeorge: so what, they don?t have another plane? she couldn't take a bus? \n\nsusan: she's coming in tomorrow. i made it! \n\ngeorge: yeah you made it, how about that. \n\nsusan: oh, i?m so excited, now we get to see the opera together. \n\ngeorge: we get to go to the opera together! \n\nsusan: who's that? \n\ngeorge: that?s-that?s-harry fong, he's a very good friend of mine and he's a big opera buff. enjoy the show there harry!... you know what. \n\njerry: come on, you gotta let us in \n\nusher: not without tickets. \n\njerry: we have tickets, we just don't have 'em with us. \n\nusher: well that?s a problem. excuse me. \n\njerry: you don't understand, someone's after us, a crazy clown is trying to kill us. \n\nusher: a crazy clown is after you? oh that?s rich. now clear the entrance so people with tickets can get through. \n\njerry&elaine: we're with him, we're with him. \n\nkramer: are you guys ready? \n\njerry&elaine: yeah, yeah!! \n\nkramer: have you seen george? \n\njerry: we thought he was with you. \n\nelaine: come on, he's on his own, come on! \n\nkramer: these are great seats huh? \n\nelaine: yeah \n\nkramer: yeah \n\njerry: boy, some cast, huh? pavarotti, aver martone. \n\nelaine: aver martone. i've heard of her, who's she playing? \n\njerry: she's playing, pagliacci?s wife, nedda. \n\nelaine: nedda? \n\njerry: yeah. \n\nelaine: oh my god.. \n\nman#3: excuse me, excuse me, excuse me. \n\njerry: susan! what are you doing here? \n\nsusan: my friend's flight couldn?t make it. \n\njerry: where's george? \n\nman#3: i got his ticket. \n\nsusan: he decided not to come. he said he was uncomfortable. \n\njerry: uncomfortable? how does you think i feel?.. hey let me ask you something, how much did you pay for that ticket? \n\nman#3: one seventy-five. \n\njerry: kramer, who'd you sell your ticket to? \n\nkramer: some nut in a clown suit! \n\njerry: i had some friends drag me to an opera recently, you know how they've got those little opera glasses, you know, do you really need binoculars, i mean how big do these people have to get before you can spot 'em. these opera kids they're going two-fifty, two-eighty, three-twenty-five, they're wearing big white woolly vests, the women have like the breastplates, the bullet hats with the horn coming out. if you can't pick these people out, forget opera, think about optometry, maybe that?s more you're thing. \n\njerry: we're dead. \n\ngeorge: we're not dead. \n\njerry: we are dead. \n\ngeorge: come on. we got all day tomorrow to come up with a story. \n\njerry: all day tomorrow? we had a month and a half to come up with something and we didn't do anything. \n\ngeorge: so we'll do it tomorrow. \n\njerry: let me ask you something. when's the last time you went skiing? \n\ngeorge: about six years ago. \n\njerry: i think you can take the lift ticket off your jacket now. \n\ngeorge: women like skiers. \n\njerry: so what? you can't meet anybody. you're going on with susan. \n\ngeorge: yeah. right. \n\njerry: hey, see those two women over there? i almost dated the one on the right. she's in the closet business. \n\ngeorge: the closet business? what's the closet business? \n\njerry: what is it your business? \n\ngeorge: i'm interested. \n\njerry: she reorganizes your closet and shows you how to maximize your closet space. she looked into my closet. \n\ngeorge: so you thought she was good looking and figured this would be a good way to meet her. \n\njerry: yeah. \n\ngeorge: yeah. so what happened? \n\njerry: so, she mentioned she had a boyfriend and then it hit me. what do i need more closet space for? (across the room) hi, marla. \n\nmarla: (walks over to jerry and george) jerry. \n\njerry: george, marla. \n\ngeorge: marla. \n\nmarla: george. jerry, stacey. \n\njerry: stacey. \n\nstacey: jerry. \n\njerry: george, stacey. \n\ngeorge: stacey. \n\nstacey: george. \n\njerry: george. \n\ngeorge: jerry. marla. (realizing jerry's cue) stacey! (walks over to stacey) \n\nmarla: so, how was your trip to berlin? \n\njerry: trip to berlin? \n\nmarla: remember? that's why you put off doing the closets. you said you were going to berlin for a while. \n\njerry: oh, right, right. \n\nmarla: the wall had just come down, and you told me you wanted to be part of the celebration. \n\njerry: yes, yes, i did. but, you know, i was watching it on cnn, and they covered it so well i thought, \"why knock my brains out?\" \n\nmarla: you, know my boyfriend went. \n\njerry: really? \n\nmarla: yes, i told him all about you going and he got all excited and decided to go. \n\njerry: oh, did he like it? \n\nmarla: i don't know. he never came back. (over to the other side of the bar) \n\ngeorge: anyway, we met with nbc about a month ago and they gave us the green light to go ahead and write a pilot. in fact, we got a big meeting with them tomorrow. they gotta approve of the story before we can write. \n\nstacey: wow, what a great job. a writer. \n\ngeorge: not a bad way to make a buck. \n\nstacey: sounds great. \n\ngeorge: well, i'll tell you, stacey. it's a lot of hard work. but, it comes fairly easy to me. some people write symphonies. this is my gift. (raises ski lift ticket while stacey looks away) \n\njerry: so, are you gonna go out with her? \n\ngeorge: i might. \n\njerry: what about susan? \n\ngeorge: what? i'm not married. i'm not allowed to go out with somebody else? \n\njerry: depends. \n\ngeorge: depends on what? \n\njerry: on many factors. \n\ngeorge: like what? \n\njerry: well, how long you've been seeing her. what's your phone call frequency? are you on a daily? \n\ngeorge: no. semi-daily. four or five times a week. \n\njerry: what about saturday nights? do you have to ask her out, or is a date implied? \n\ngeorge: implied. \n\njerry: she got anything in your medicine cabinet? \n\ngeorge: there might be some moisturizer. \n\njerry: ah hah. let me ask you this. is there any tampax in your house? \n\ngeorge: (pause) yeah. \n\njerry: well, i'll tell you what you've got here. \n\ngeorge: what? \n\njerry: you got yourself a girlfriend. \n\ngeorge: ah, no, no. are you sure? a girlfriend? \n\njerry: i'm looking at a guy in a semi-daily with tampax in his house and an implied date on saturday night. i would like to help you out, but... \n\ngeorge: would you believe my luck? the first time in my life i have a good answer to the question, \"what do you do?\" and i have a girlfriend. i mean, you don't need a girlfriend when you can answer that question. that's what you say in order to get girlfriends. once you can get a girlfriend, you don't want a girlfriend, you just want more girlfriends. \n\njerry: you're going to make a good father someday. \n\ngeorge: well it's not fair, jerry. it's just not fair. all right, all right. that's it. i'm getting out of this thing. \n\njerry: fine. break up with her. but you know what this means? \n\ngeorge: no, what? \n\njerry: the script, the pilot, the tv show. that's all over. \n\ngeorge: why? what do you mean? \n\njerry: figure it out. she's one of the executives at nbc that's gonna make the decision whether or not they pick up the show. she's one of our biggest fans. you drop her off, you think they're gonna pick us up? \n\ngeorge: oh, right. oh no, man. \n\njerry: you know, it's a very interesting situation. here you have a job that can get you girls. but, you also have a relationship. but if you try and get rid of the relationship so you can get the girls, you lose the job. you see the irony? \n\ngeorge: yeah, yeah. i see the irony. all right. what about this? what if i can find some way to break up with her so that she'll still like me and it doesn't affect the deal. \n\njerry: (sarcastically) oh, yeah. \n\ngeorge: wait, wait. here me out. don't dismiss this. you're very quick to dismiss. don't dismiss. she's got a big crush on david letterman, i mean, a big crush. she talks about him all the time. suppose i go up to david letterman. he works at nbc; i work at nbc. i explain my situation. he agrees to meet her. they go out, they fall madly in love. and she dumps me for david letterman. \n\njerry: this is your plan? \n\ngeorge: no, no. i'm just thinking. \n\njerry: i don't think you are. \n\nmarla: let me tell you what i think. \n\njerry: please, and be brutal. i have no closet sensitivity. \n\nmarla: are you very fussy about your pants? \n\njerry: i don't think i am. \n\nmarla: because i have a very radical idea. can you handle it? \n\njerry: try me. \n\nmarla: here's what i'm proposing. we eliminate all this. the hangers, the bar, the shelves. and in its place install a series of hooks. we'll put everything on hooks. \n\njerry: everything? \n\nmarla: everything. the shirts, pants, sport jackets, pajamas. we could get eighty hooks on here. \n\njerry: you're quite mad, you know. (kramer enters) oh, i don't believe this. (goes into other room) hey? \n\nkramer: hey. \n\njerry: what are you doing? \n\nkramer: i'm watching the bold and the beautiful. \n\njerry: no. \n\nkramer: what? \n\njerry: this is not a good time. \n\nkramer: five minutes. what? \n\njerry: what did you have to give your tv away to george for? \n\nkramer: because i've been watching too much. it was an addiction. i couldn't stop. it was, it was destroying my brain cells. \n\njerry: yeah, but now you're in here all the time. (marla enters from other room) \n\nkramer: well, wow. \n\njerry: marla, kramer. \n\nkramer: hey. \n\njerry: why don't you go out? it's nice out. \n\nkramer: oh, no. there's nothing out there for me. \n\njerry: there's weather. \n\nkramer: weather? i don't need weather. weather doesn't do it for me. \n\njerry: i'm tellin' george to give you your tv back. \n\nkramer: no, no, i don't want it back. (pause) are you gonna watch the knick game tonight? \n\njerry: i don't know. \n\nkramer: will you tape it? \n\njerry: kramer... (points to marla) \n\nkramer: yeah. (he exits) \n\njerry: so your boyfriend never came back from berlin. \n\nmarla: never came back. \n\njerry: oh, you must have been devastated being left for a wall. \n\nmarla: it was about to end anyway. there was this... problem. \n\njerry: ah hah. (buzzer) excuse me one second. yeah? \n\nelaine: it's me. \n\njerry: come on up. oh, it's elaine, she's just a friend of mine. i don't know what she's doing here now. (buzzer) i'm sorry. what? \n\nelaine: i didn't get it. \n\njerry: ugh. so you were saying there was this problem. \n\nmarla: well, he wanted me to move in with him. \n\njerry: snapple? \n\nmarla: no thanks. \n\njerry: go on. \n\nmarla: well i wouldn't move in because... \n\njerry: yes. \n\nmarla: well because... \n\njerry: yeah. \n\nmarla: well because i'm a virgin. (elaine enters) \n\nelaine: hello! \n\njerry: hi, um. marla, elaine. \n\nelaine: i'm sorry, i didn't know you had company. i just wanted to return your tape. \n\njerry: oh, thanks a lot, two weeks late. now that costs me thirty-five dollars to see havana. \n\nelaine: i'm sorry, i really am. i just kept forgetting. \n\nmarla: i should be going. \n\nelaine: no, no, i'm leaving. \n\njerry: i like that thing in your hair there. \n\nelaine: oh yeah? this woman was selling them at this crazy party i was at last night. you'll appreciate this. snapple? \n\nmarla: no thanks. \n\nelaine: i was talking to this guy, you know, and i just happened to throw my purse on the sofa. and my diaphragm goes flying out. so i just froze, you know, ahh! staring at my diaphragm. you know, it's just lying there. so then, this woman, the one who sold me this hair thing, she grabbed it before the guy noticed, so. i mean, big deal, right? so i carry around my diaphragm, who doesn't? yeah, like it's a big, big secret that women carry around their diaphragms. you never know when you're gonna need it, right? (sips the snapple) ahh. \n\nmarla: i should be going. \n\njerry: so we'll talk about the hooks then? \n\nmarla: yes. (she exits) \n\nelaine: what? was it something i said? \n\njerry: she's a virgin, she just told me. \n\nelaine: well i didn't know. \n\njerry: well it's not like spotting a toupee. \n\nelaine: well you think i should say something? should i say something? should i apologize? was i being anti-virgin? \n\njerry: no, no, i mean... \n\nelaine: 'cause i'm not anti-virgin. i'll be right back. (she leaves) \n\njerry: elaine, elaine... (buzzer) yeah? \n\ngeorge: it's george. \n\ngeorge: she's a virgin? \n\njerry: a virgin. \n\ngeorge: wow. so what're you gonna do? \n\njerry: i don't know. i'm very attracted to her. that accent, it's so sexy. \n\ngeorge: i don't think i could do it. you know, they always remember the first time. i don't want to be remembered. i wanna be forgotten. \n\njerry: you need a little pioneer spirit. you know, you don't have any of that lewis and clark in you. \n\ngeorge: you know, sometimes those guys don't make it back. (looks in fridge) i'm really hungry. \n\njerry: yeah, me too. \n\ngeorge: we gotta get something. i don't want to go to that meeting on an empty stomach. let's get some chinese. you wanna order it? \n\njerry: all right, but then we gotta get some work done. let me just call kramer, see if want anything. (calls) hey, we ordering chinese food. if you want anything-- (kramer enters quickly) let me know what it is and i'll order for you. \n\nkramer: i'm in. let's go for it. \n\ngeorge: what do you want? \n\nkramer: i don't care, whatever. \n\ngeorge: i'll tell you what. why don't we just get a couple of dishes and we'll just share 'em. \n\nkramer: okay. what are you getting? \n\ngeorge: i'm gonna get a chow fung. \n\nkramer: what's a chow fung? \n\ngeorge: it's a broad noodle. \n\nkramer: what do you mean, a broad noodle? \n\ngeorge: it's a big flat noodle. \n\nkramer: well i don't want a big flat noodle. \n\ngeorge: what kind of noodle do you want? \n\nkramer: who says i want a noodle? \n\ngeorge: all right, look. i'm getting the chow fung. you don't have to have any. \n\nkramer: all right. i'll get pea pods and you can't have any of my pea pods. \n\ngeorge: fine. \n\nkramer: get extra msg. \n\nelaine: look, marla. this whole sex thing is totally overrated. now, here's the one thing you've gotta be ready for is how the man changes into a completely different person five seconds after it's over. i mean, something happens to their personality it's really quite astounding. it's like they committed a crime and they want to flee the scene before the police get there. \n\nmarla: so they just leave? \n\nelaine: yeah, pretty much, yeah. well, the smart ones start working on their getaway stories during dinner. how, you know, they gotta get up early tomorrow. what is about being up early? they all turn into farmers suddenly. \n\nmarla: wow. it must be pretty good to put up with all that. \n\nelaine: eh. \n\njerry: all right, let's go. we don't have much time before the meeting. \n\ngeorge: where's the food? what happened to ping? \n\njerry: don't worry, he'll be here. look, we only got about two hours. we just need to come up with one good story so we can get through this meeting. (buzzer) there's your food. \n\ngeorge: hey, what about this? i'm in a car accident. the motorist is uninsured, you with me? \n\njerry: yeah. \n\ngeorge: my car's totaled. it's all his fault and now, he has absolutely no money. there is no way that he can pay me. so the judge decrees that he becomes my butler. \n\njerry: your butler? \n\ngeorge: right. he cooks my food, he cleans my house, he does all my shopping for me. and there you go, that's your program. \n\njerry: what about me? \n\ngeorge: don't worry, we'll find something for you. (knock of jerry's door) \n\njerry: (getting the door) that's the stupidest idea i ever heard. sentenced to be a butler. (elaine, marla, and an injured ping are at the door) ping, what happened? \n\nelaine: there was a bit of an accident. \n\nping: head hurts. head really hurts. \n\njerry: what happened? \n\nelaine: marla and i went out for coffee and afterwards i was crossing the street and he was biking right towards me. so i got out of the way just in time, but then he ran into a parked car. he hit his head and everything went flying. \n\ngeorge: something happened to the food? \n\nping: i only saved one bag. \n\njerry: should i call an ambulance? do you wanna see a doctor? \n\nmarla: i'll get some ice. \n\ngeorge: (after looking in the bag) the pea pods? all you saved was the pea pods? (kramer enters) \n\nkramer: hey, you got the food? \n\njerry: yeah, here. \n\nkramer: what took you so long? hey, ping! \n\nping: kramer. (kramer and george sit on the couch) \n\nkramer: yeah. where's yours? \n\ngeorge: he dropped it. \n\nkramer: oh, that's too bad. \n\nelaine: you should slow down, you know that? it's dangerous to go that fast. \n\nping: no, no. i have green light. you jaywalked. \n\nkramer: (to jerry) hey, you watchin' oprah? \n\nelaine: (to ping) i did not jaywalk. \n\njerry: (to george) you're givin' him back that tv. \n\nping: (to elaine) yes, you jaywalked. \n\nkramer: (to jerry) no, i don't want it back. \n\nping: (to elaine) jaywalker. i could slap suit on you. \n\ngeorge: (to jerry) we got work to do. what about the meeting? \n\nkramer: (to himself) hey, look. an hour with patrick swayze. \n\njerry: a month and a half we had. we did nothing. i can't believe we put it off until today and then we couldn't do anything because elaine runs out to apologize to a virgin, crosses against a light, and knocks over a chinese delivery boy. now we're gonna make fools of ourselves, we got nothing. you're not even in show business. i gotta reputation. you drag me into the sewer with you. i've been on tv buddy boy. you know how fast word spreads in show business? it's like that (snaps in george's face) , like that! one bad impression, you're outta the business! \n\ngeorge: all right, let's postpone it. let's get out of here. \n\njerry: what do you mean? they know we're here. \n\ngeorge: i'll fake an illness. (acts it out) my back! my back! i can't believe, my back. \n\njerry: no, no, would you get up? \n\ngeorge: i can do this, jerry. \n\njerry: no. \n\ngeorge: all right, i'll tell them my sister died. (starts fake crying) my poor sister died. she was standing and then she was laughing and then they shot her! that's the kind of sick city that we're livin' in. they shoot you for laughing. i must go and comfort my poor family. jerry, take me home so i can comfort my... my poor family. \n\njerry: what? \n\ngeorge: that's david letterman. i just saw david letterman walk by. i'll be right back. (he exits) \n\nwoman: mr. seinfeld, they're ready for you. (she exits) \n\njerry: yes, i was very wise to hitch my wagon to his star. (jerry enters meeting) \n\nman #1: hey, jerry. \n\njerry: hi, how are you doing? nice to see you all here. hello. \n\nrita: hello, jerry. i'm rita kearson. \n\njerry: oh, uh, nice to meet you. where's russell? \n\nrita: he, uh, had to go to la. there's a problem on the set of blossom. \n\njerry: oh, poor blossom. (he sits) \n\nrita: anyway, he asked me to sit in for him. \n\nman #2: where's george? \n\njerry: oh, he ran to say something to david letterman. \n\nsusan: david letterman's on the floor? \n\njerry: yeah, he just walked by. \n\nrita: well, i think we should get started anyway. \n\njerry: yeah, good idea. \n\nrita: so how are you guys comin' along? \n\njerry: good, good, we've got a lot of ideas. \n\nrita: good. (pause) \n\njerry: have you ever been to a chinese restaurant and they tell you it'll be, like, five minutes for a table and you wind up waitin' there for, like, thirty minutes? well, we thought it would be very funny to do an entire show where all you're doin' is waitin' for the table. (they don't seem to like it) because we've all been in that situation. you know, you're waiting... and you're hungry... and you bump into somebody you know... when is russell coming back? \n\nrita: so that's the idea? \n\njerry: well no, that's one. we have many others. we have an idea where, uh, i get into an accident with a guy who has no insurance and the judge sentences him to be my butler. (everyone laughs) you know he cooks for me, he has to cook for me... he cleans my house, he's doin' my shopping, you know? i'm walkin' around with one of those big neck collars. \n\nman #2: those collars are funny! \n\nman #1: once you see someone in those collars you start laughing immediately. (george enters) \n\ngeorge: you tellin' 'em about the butler story? is that beautiful or what? hey, sorry i'm late. (looks at rita) russell? \n\nrita: i'm rita kearson. \n\ngeorge: oh, rita. hey, mr. shermack, how're you doing, good to see you. jay, always a pleasure. (to susan) sweetie. (kisses her and then sits down next to jerry) yeah, yeah, that butler idea, that's beautiful. isn't that killer? (aside to jerry) i thought i was getting the butler. \n\njerry: don't worry, uh, we'll find something for you. \n\njerry: so letterman didn't spark to your idea, huh? \n\ngeorge: no, he said there was nothing he could do, and next time i should probably break the prozacs in half. \n\nkramer: you, you guys wanna hold it down? i'm watchin' jeopardy. \n\njerry: would you give him the tv back? \n\nkramer: oh, by the way, george. susan called for you a minute ago. \n\ngeorge: i bet they're probably doing summersaults about us over there. you think they get butler stories like that everyday? (he calls susan) \n\nkramer: (to the tv) who is joseph cotton? giddee up! \n\nsusan: hello? \n\ngeorge: hi, it's me. it's georgie boy. what's going on? \n\nsusan: what's going on? what's going on? i'll tell you what's going on. i'm fired! \n\ngeorge: fired? why? \n\nsusan: because you kissed me. you kissed me, you stupid idiot! rita called russell and he fired me over the phone. \n\nkramer: (to the tv) what is pi? ooh! giddee up again. \n\ngeorge: but i had no... i didn't realize. \n\nsusan: you didn't realize? how could you not realize? you're stupid! you're a stupid, stupid man! \n\ngeorge: i just feel terrible this is just terrible. \n\nkramer: (to the tv once again) what is the cha-cha? ooh, yes indeed. \n\nsusan: i'll speak to you later. \n\ngeorge: (hangs up phone and pauses) this is great! he fired her! this is incredible, he fired her. i'm out, baby! i'm out! \n\njerry: why did he fire her? \n\ngeorge: because i kissed her in the meeting. russell found out, he fired her over the phone. finally, my stupidity pays off! \n\nkramer: what is here comes the judge, here comes the judge! \n\njerry: you can't break up with her now. her life is shattered. you got her fired. you gotta be there for her. \n\ngeorge: what? \n\njerry: you gotta at least wait until she gets another job. \n\ngeorge: another job? \n\njerry: couple of interviews. \n\ngeorge: oh, this is unbelievable. i'm stuck. every time i think i'm out, they pull me back in. \n\nmarla: are you gonna leave after its over? you know, if we have sex. \n\njerry: what? leave? where? why? \n\nmarla: you know, the apartment. \n\njerry: why would i leave? this is my apartment. \n\nmarla: well what if it was my apartment? \n\njerry: who gave you this idea i would wanna leave? \n\nmarla: well elaine said men like to leave after it's over. \n\njerry: listen, i wouldn't put too much stock into what elaine has to say about relationships. she comes from a broken home, and i mean that literally. a tree fell on her roof and cracked the whole structure. her parents got along beautifully, but her house was in bad shape. \n\nmarla: maybe i should get going. \n\njerry: what else did you say to her? \n\nelaine: nothin'. i was just givin' her the straight dope. \n\njerry: more like a dope was giving it to her straight. another cup of coffee with you, she'll wind up in a convent. \n\nelaine: listen, there was a lot more i could've told her, believe me. \n\njerry: what is that about leaving after sex? did i ever leave with you? \n\nelaine: you might've if i'd stayed. so you know what? i got served with papers today. ping is suing me. i need your virgin as a witness. you better be nice to her. \n\njerry: i was trying to be. \n\nelaine: look at george. (on the other side of the restaurant) he lucked out, huh? \n\njerry: oh, you're not kiddin'. who'd 've figured susan would break up with him? they had a good thing going. \n\nelaine: yeah, since she met him she's been vomited on, her family cabin's been burned down, she learned her father's a homosexual, and she got fired from a high paying network job. yeah, they had a real good thing going. \n\ngeorge: what do i do? well actually, i'm a writer. in fact, i'm writing a comedy pilot for nbc right now. \n\nwoman: a sitcom? how can you write that crap? carol, this guy's writing a sitcom. \n\ncarol: a sitcom? come on, let's go. (they leave) \n\nwoman: a sitcom. can you imagine? and he actually tried to use it to hit on me! \n\n[setting: monk's coffee shop] \n\njerry: (to elaine) let me ask you a question. \n\nelaine: mm-hm. \n\njerry: you're a hostage, captured by terrorists- \n\nelaine: (smiling, chewing) who, me? \n\njerry: you, anybody - whatever. you're in the little room, you're chained to the floor, you're there for a long time.. do you think they would ever consider doing the laundry? \n\nelaine: (matter-of-factly) they have to, it's in the geneva convention. \n\nkramer: (imitating a turkish terrorist) you! take off your socks, your pants, your underwear. we're doing the wash. c'mon! take it off, take it off! \n\nkramer: hey, georgie. \n\njerry and elaine: hi. \n\njerry: (to george) what's the matter? \n\ngeorge: (slowly shakes his head) my mother caught me. \n\njerry: \"caught\" you? doing what? \n\ngeorge: you know. (all three give him blank stares) i was alone.. \n\nelaine: (making a face of surprise) you mean..?! \n\ngeorge: (nods) uh-huh. \n\nkramer: (laughing) she caught you? \n\njerry: where? \n\ngeorge: (not really wanting to embellish) ..i stopped by the house to drop the car off, and i went inside for a few minutes.. nobody was there - they're supposed to be working. (jerry and elaine look at each other - enjoying the story) my mother had a glamour magazine, i started leafing through it.. \n\njerry: \"glamour\"? \n\ngeorge: ..so, one thing lead to another.. \n\njerry: so, what did she do? \n\ngeorge: first she screams, \"george, what are you doing?! my god!\" and it looked like she was gonna faint - she started clutching the wall, trying to hang onto it. \n\nkrmaer: (reflecting on the story so far) man.. \n\ngeorge: i didn't know whether to try and keep her from falling, or zip up. \n\njerry: what did you do? \n\ngeorge: i zipped up! \n\nelaine: (wide-eyed) so, she fell? \n\ngeorge: yeah. (noticing this makes him out to be the bad kid, he gets defensive) well, i couldn't run over there the way i was! \n\nelaine: no, i guess you couldn't have.. \n\njerry: (in the middle of elaine's sentence, smiling) no, i wouldn't think so. \n\nelaine: (finishing it off) ..done that. \n\ngeorge: so, she fell, and then she started screaming, \"my back! my back!\" so, i picked her up and took her to the hospital. \n\nelaine: (between chuckles) how is she? \n\ngeorge: (somewhat angered) she's in traction. \n\nelaine: (still laughing) ok, i'm sorry. \n\ngeorge: it's not funny, elaine. \n\nelaine: (stifling her laughter) i know. i'm sorry. i'm serious. \n\ngeorge: her back went out. she's gotta be there for a couple of days. all she said on the way over in the car was, \"why, george, why?!\".. i said, \"because it's there!\" \n\njerry: \"glamour\"? \n\ngeorge: (vowing) well, i'll tell you this, though - i am never doing.. that , again. \n\nelaine: what, you mean, in your mother's house, or all together? \n\ngeorge: (definite) all together. \n\nelaine: oh, gimme a break.. \n\njerry: (skeptical) ohhh yeah.. right. \n\nkramer: oh, like you're gonna stop? \n\njerry and elaine: c'mon.. \n\ngeorge: you don't think i can? \n\njerry: no chance. \n\ngeorge: (daring) you think you could? \n\njerry: well, i know i could hold out longer than you. \n\ngeorge: care to make it interesting? \n\njerry: sure, how much? \n\ngeorge: a hundred dollars. \n\njerry: (pointing) you're on. \n\nkramer: (butting in) wait a second, wait a second. count me in on this. (clicks his tongue) \n\njerry: you? \n\nkramer: yeah. \n\njerry: you'll be out before we get the check. \n\nelaine: (smiling) i want to be in on this, too. \n\ngeorge and jerry: (rejecting) ohh, no. no, no, no.. \n\nelaine: why? \n\njerry: (showing difference) it's apples and oranges.. \n\nelaine: what? why? (more 'no, no, no's from jerry and george. persistent) why? \n\njerry: because you're a woman! \n\nelaine: so what? \n\njerry: it's easier for a woman not to do it than a man. \n\nelaine: (sarcastic) oh. \n\njerry: we have to do it. it's part of our lifestyle. it's like, uh.. shaving. \n\nelaine: oh, that is such bologna. i shave my legs. \n\nkramer: (making a point) not everyday. \n\ngeorge: alright, look, you want to be in? \n\nelaine: yeah! \n\ngeorge: you gotta give us odds. at least two to one - you gotta put up two-hundred dollars. \n\nkramer: no, a thousand! \n\nelaine: no, i'll - i'll put up one-fifty. \n\ngeorge: alright, you're in for one-fifty. \n\njerry: (nodding) okay, one-fifty. \n\ngeorge: alright, now, how are we gonna monitor this thing? \n\njerry: well, obviously, we all know each other very well, (elaine slightly laughs) i'm sure that we'll all feel comfortable within the confines of the honor system. \n\nkramer: alright. (holds out his pinkie at the center of the table) \n\n[setting: jerry's apartment] \n\ngeorge: (stern) no, ma, i'm not gonna see a psychiatrist. n- i don't care if you do pay for it! no! discussion over. yeah, alright, i'll see you later. yes, of course i'm gonna come by. alright. (hangs up, slamming it down on the coffee table. he sits down next to jerry) my mother wants me to see a psychiatrist now. why?! because she caught me? (scoffs, shaking his head) you know, if everyone who did that had to go see a psychiatrist.. (laughing, he snorts) \n\njerry: (waits for the rest of the sentence) ..yeah? \n\ngeorge: (defensively) whatever. \n\njerry: how is she? \n\ngeorge: (shrugging it off) she'll be fine. i gotta go to the hospital to see her tonight. \n\njerry: (answering to the intercom) yeah? \n\nelaine: it's me. \n\njerry: come on up. (lets her in by unlocking the front door) \n\ngeorge: hey, what are you doing tonight? \n\njerry: (opens his door slightly for elaine) dating marla. \n\ngeorge: oh, the virgin? \n\njerry: yeah. \n\ngeorge: any, uh.. progress, there? what's the latest? \n\njerry: well, i got my troops amassed along the border - i'm just waiting for someone to give me the go-ahead. \n\nkramer: hey, look at this, c'mere. there's a naked woman across the street. \n\njerry: where? \n\nkramer: second floor from the top. (pointing) see the window on the left? \n\ngeorge: (in awe) wow! \n\njerry: (also amazed) who walks around the house like that?! \n\ngeorge: (suggesting) maybe she's a nudist. you know, those nudist colony people.. \n\nkramer: ..yeah.. (pause) yeah.. (slowly stands up, and walks out jerry's apartment - leaving jerry and george with the view, he shuts the door behind him) \n\njerry: hey, let me ask you a question. in these nudist colonies, do they eat naked in the dining room? \n\ngeorge: i would imagine it's all naked. \n\njerry: what about the chamber maids? are they naked, too? \n\ngeorge: (still focused on the nudist) they're naked, the gardeners naked.. the bellhops. (jerry makes a noise of astonishment) one big nude-a-rama. \n\nelaine: hey. \n\njerry and george: (only turning back for a second) hey. \n\nelaine: well, (smiling) where's my money? who caved? \n\njerry: (over his shoulder) not me. \n\ngeorge: (also, over his shoulder) not me. \n\nelaine: what're you looking at? \n\njerry: there's a naked woman across the street. \n\nelaine: (smiling, chuckling) this is gonna be the easiest money i've ever made in my life. (moving on to a new topic) so, my fried, joyce, is teaching an aerobics class. i'm gonna go tonight. \n\njerry: (commenting) yeah.. the - the waitress should've taken it back. \n\nelaine: (realizes jerry and george aren't paying attention) so then, i got a call this morning. you know, i was, uh, chosen to go on the space shuttle. we're goin' to mars. \n\njerry: (still staring at the woman) uh-huh. \n\ngeorge: have a good time. \n\nkramer: (declaring) i'm out! \n\nelaine: what?! \n\nkramer: yeah, i'm out - i'm out of the contest. \n\ngeorge: you're out?! \n\nkramer: yeah, yeah.. (notes their reactions) what? \n\nelaine: well, that was fast! \n\njerry: well, it was that woman across the street. (to jerry) you know, you better be careful, buddy. she's gonna get you next. (walks out, shutting the door behind him) \n\nelaine: ..and then there were three. \n\n[setting: hospital room] \n\nestelle: i don't understand you. i really don't. you have nothing better to do at three o' clock in the afternoon? i go out for a quart of milk, i come home, and find my son treating his body like it was an amusement park! \n\ngeorge: (stern, trying to shut her up) ma. \n\nestelle: don't give me \"ma\". it's a good thing i didn't hit the table. i could of cracked my head open. \n\ngeorge: ma, people can hear you. \n\nestelle: (heavy in sarcasm) too bad you can't do that for a living. you'd be very successful at it. you could sell out madison square garden. thousands of people could watch you! you could be a big star! \n\ngeorge: (getting up) alright, ma, that's enough! \n\nestelle: i want you to go see a psychiatrist. \n\ngeorge: no! i am not going to see a psychiatrist! \n\nestelle: why? why not?! why won't you go? \n\ngeorge: (like a kid) because i don't want to. \n\nestelle: i want you to go see somebody. \n\ngeorge: well, i am not going. \n\nestelle: it's a good thing your father's in chicago. \n\nshelly: hello, aunt estelle. look at you - how did this happen? \n\ngeorge: (snapping) is that important, really? what is this, a police investigation? the woman's been through enough. she has to relive the experience now?! \n\nnurse: hi, denise. six-thirty, time for your sponge bath. \n\ndenise: mmm.. is it six-thirty already? i fell asleep. \n\nshelly: (seems not to notice what's going on beyond the divider) so, george, what are you doing now? i hear you got some kinda television, writing - thing? \n\ngeorge: (slowly backing away, he's not at all committed to the conversation) yeah.. television. \n\nnurse: let me help you out with that. here, just slip it over your head.. \n\ndenise: oh.. thank you. \n\nshelly: (nodding) well, it's about time. we thought you were gonna wind up on the street. (as the bath is going on, george is now completely mesmerized) what is it you're doing, exactly? \n\nestelle: george, you're cousin, shelly, is talking to you! \n\n[setting: new york health club] \n\njoyce: so, when was the last time you took a class? \n\nelaine: oh, it's been a while. \n\njoyce: (overly excited) are you psyched? \n\nelaine: (fake excitement) yeah. yeah, i'm really.. psyched. \n\njoyce: well, you're gonna thank me for getting you in here. \n\nelaine: why is that? \n\njoyce: (pointing, she directs elaine's attention off-camera) see the guy with the dark hair and the red shorts? \n\nelaine: (between breaths) oh, my god. (joyce nods) john f. kennedy junior's here! \n\njoyce: he's gonna be in your class today. \n\nelaine: (still unable to speak right) in my class? john kennedy's gonna be in my class?! \n\njoyce: i can get you a spot right behind him. he has got a great butt. \n\nelaine: yeah. butt. butt. great butt. john-john's butt. \n\n[setting: jerry's car] \n\nmarla: let's slow it down a little. \n\njerry: \"slow it down\"? \n\nmarla: well, (reminding him of her virginity) you know.. \n\njerry: ah, yeah.. i know. \n\nmarla: you're okay with that, right? \n\njerry: yeah, yeah.. of course. what, do you think i care about the sex? what kind of person do you think i am? that doesn't mean anything to me. (faint) i don't care about that. \n\nmarla: so, i'll see you saturday night, then? \n\njerry: (smiling, nodding) sure, saturday night. \n\nmarla: alright, then. good night. \n\njerry: goodnight. (she gets out. jerry leans forward, adding) not just a good night - a great night. (she shuts the door, he waves) \n\n[setting: jerry's bedroom] \n\n[setting: jerry's apartment] \n\nkramer: (singing) goood moorrrnninng! \n\njerry: (out of it) yeah, good morning. \n\nkramer: ha, ha! nothing like some good solid sack time. (turns toward jerry's window) \n\njerry: she's not there. she's doin' her wash. \n\nkramer: (turning back to jerry) oh. so, did you make it through the night? \n\njerry: (over the top) yes, i'm proud to say i did! \n\nkramer: so, you're still master of your domain. \n\njerry: (nodding) yes. yes i am. (kramer chuckles) master of my domain. but i will tell you this i am going over to (gestures to the nudist) her apartment, and i'm tellin' her to put those shades down! \n\nkramer: woah, woah, woah. what-what did you just say? \n\njerry: i can't take it anymore! she's driving me crazy! i can't sleep, i can't leave the house, and i' here, i'm climbin' the walls. meanwhile, i'm dating a virgin, i'm in this contest - something's gotta give! \n\nkramer: do you hear what you're saying?! can you hear it?! (jerry puts on his coat) this is a beautiful woman walking around naked, and you want to tell her to stop?! that's the dumbest thing i ever heard! i mean, think comprehens- i'm not gonna let you do it. \n\njerry: (persistent) well, i'm doin' it, get out of my way. \n\nkramer: (stopping him) no, no, no, no. you can't! you can't! this is something that comes about once in a lifetime! when we were boys, looking through our bedroom windows, we would think \"why can't there be a woman out there, taking her clothes off?\" and now that wish's come true, and you want to (makes a noise) throw it away?! \n\njerry: look, i'm sorry- \n\nkramer: no, i'm not gonna let you do it, jerry. \n\njerry: kramer, (trying to pass him) get outta my way! \n\nkramer: (frantic) no, no, no. don't do it. don't do it! for my sake! god knows i don't ask you for much! (pleading) now, come on. please, jerry. please! i'm beggin' ya! please! (claps hands) come on! please! \n\njerry: alright.. (takes his coat off) \n\nkramer: yes! \n\njerry: ..alright. \n\nkramer: (moving to the window) thank you, thank you, thank you. (sits in jerry's chair, looking out the window) \n\njerry: she's not there! \n\nkramer: oh, i can wait.. \n\n[setting: monk's coffee shop] \n\njerry: so the nurse was giving her a sponge bath? \n\ngeorge: every night at six-thirty. the nurse was gorgeous.. then i got a look at the patient.. (laughs, then snorts) i was going nuts. \n\njerry: oh, man. well, i guess you'll be going back to that hospital. \n\ngeorge: (fake sympathy) well, my mother, jerry.. \n\njerry: (pointing) but are you still master of your domain? \n\ngeorge: (arms out) i am king of the county. you? \n\njerry: lord of the manor. \n\nelaine: john f. kennedy jun-ya! \n\njerry: what? \n\nelaine: (smiling) he was in my aerobics class. \n\njerry: really? did you talk to him? \n\nelaine: no, you don't understand - he was working out right in front of me. so, listen, after the class was over, i timed my walk to the door so we'd get there at the exact same moment, and he says to me, (thinking the world of what he said) \"quite a workout.\" \n\ngeorge: \"quite a workout\"? what did you say? \n\nelaine: (smiling, proud) i said, \"yeah.\" \n\njerry: (adding, fake praise) good one. \n\nelaine: so then, listen, listen. so then, i showered and i dressed, and i saw him again, on the way out. (giddy and nearly out of breath) so we're walkin' and talkin', and he asked me my name - and i think i said elaine - but, i mean, who the hell knows.. and so then, he says to me \"do you wanna split a cab uptown?\" and i said, \"sure\" - even though i was going downtown. so, we get in the cab, and i mean, i have no idea where i'm goin', right? but this is john f. kennedy junior we're talkin' about! (deep breath) so, then, he says to me, \"where do you live?\" and i - and i - and i was close to your block, so i said your building. so he dropped me off in front, (laughs) and i had to take a cab all the way back downtown to my house.. (picks up a glass of cold water and presses it up to her forehead to cool her off) oh, god.. \n\njerry: but the question is, are you still master of your domain? \n\nelaine: (sets the glass down) i'm queen of the castle. (pops a piece of food into her mouth) \n\n[setting: estelle's hospital room] \n\nestelle: you're back. \n\ngeorge: of course i'm back. why wouldn't i be back? my mother's in the hospital, i'm going to pay her a visit. \n\nestelle: i know, but two days in a row? you didn't have to do this. \n\ngeorge: you're my mother! what wouldn't i do for you? \n\nestelle: you know what you could do? i haven't eaten lunch or dinner. i can't eat this hospital food. maybe you could run down to the deli and get me a sandwich.. \n\ngeorge: (smiling) you got it, ma. (she smiles back, nodding) a little later. (george sits back in a nearby chair, looking at the divider in anticipation) \n\nestelle: (let down) could you go now, george? i'm very hungry. i'm weak. \n\ngeorge: well, wait a little while, ma. what's the difference? \n\nestelle: i don't understand why you can't do this for me! \n\ngeorge: (standing up) i just got here, ma! i'd like to spend a little time with you. \n\nestelle: but if you wait, they won't let you back in! visiting hours are almost over! \n\ngeorge: ten minutes! here, here, (fishes a box of tic-tacs out of his coat pocket and tosses them to her) have some tic-tacs. \n\nestelle: get the hell outta here. (angrily sets them aside) i'm sorry you came. \n\nnurse: (to patient) six-thirty. time for your sponge bath. \n\nestelle: george.. i'm huuunnnggry! \n\ngeorge: (muttering, slow) hang on, ma.. hang on.. \n\n[setting: new york health club] \n\njoyce: hi! \n\nelaine: hi. \n\njoyce: did you get your hair done today? \n\nelaine: no, i just, uh, fixed it.. a little bit. (still looking around, she quickly checks her breath) \n\njoyce: you know who - isn't here. he was in the early class today. (elaine looses her composure) but i think you made quite an impression on him yesterday. \n\nelaine: (regarding herself) what? what? who? me-me-me? i made an impression? what impression? \n\njoyce: let me just put this back. (turns to put a stack of shorts away) \n\nelaine: no! no! now! tell me now! what did he say?! \n\njoyce: (uneasy) he asked about you. \n\nelaine: (ecstatic) he asked about me? john kennedy asked about me?! (hangs off the side of the counter, both feet in the air) what did he say? \n\njoyce: he wanted to know your situation. \n\nelaine: (quick) what situation? i have a situation? \n\njoyce: i-i told him you were single. \n\nelaine: that was good. that was very good. \n\njoyce: he said you were just his type. \n\nelaine: (frank) okay, you tryin' to hurt me? are you tryin' to hurt - you're tryin' to injure me, right? you're trying to hurt me. \n\njoyce: he also told me to tell you that he'll be in your neighborhood tomorrow around nine o' clock - so he's gonna stop in front of your building if you want to come down and say hello. \n\n[setting: jerry's apartment] \n\njerry: alright, ma, i'll talk to you later.. nothing, i'm, i'm watching, uh, tiny toons here, on nickelodeon.. it's, i-i like kid shows. they have a very innocent, wholesome quality. okay, alright, i'll talk to you later. bye. (hangs up) \n\nkramer: (obviously watching the nudist across the street) oh, that's good. that's good. that's very, very good. oh, it's hot in there.. (jerry looks back at kramer in envy) it's hot in there. so, just walk around a little bit. don't be ashamed, don't be ashamed.. that's good, that's good.. yes, yes, yes.. \n\njerry: (trying to block out kramer, he starts to sing along with the tv) the wheels on the bus go round and round, round and round, round and round. the wheels on the bus.. \n\nkramer: the woman across the street has nothing on, nothing on, nothing on.. \n\n[setting: george's room] \n\n[setting: jerry's apartment] \n\ngeorge: all you got is instant coffee? why don't you get some real coffee? \n\njerry: i don't keep real coffee in here, i get my coffee on the outside! (intercom buzzes. he answers it) yeah?! \n\nelaine: (through intercom) it's elaine. \n\njerry: (shouting) come on up! (opens his door for elaine) \n\ngeorge: where did you get those socks? \n\njerry: i don't know. \n\ngeorge: i think those are my socks! \n\njerry: how are these your socks?! \n\ngeorge: i don't know, but those are my socks! i had a pair just like that with the blue stripe, and now i don't have them anymore! \n\njerry: (sarcastic) oh, yeah, that's right, well, you fell asleep one day on the sofa and i took them off your stinkin' feet. they looked so good to me, i just had to have them! \n\ngeorge: yeah, well, they're my socks! \n\njerry: they're my socks! \n\ngeorge: oh boy.. \n\njerry: what are we doing here.. \n\ngeorge: ..oh boy. \n\njerry: this is ridiculous. \n\ngeorge: do you believe this? we're fighting. we're fighting. \n\njerry: i haven't been myself lately. i've been snapping at everybody. \n\ngeorge: me too. i've been yelling at strangers on the street. \n\nelaine: hello.. (pulls a wad of bills out of her purse, and starts to count it up) \n\ngeorge: (shocked) you caved?! \n\njerry: it's over? \n\ngeorge: you're out? \n\njerry: ohh-my-god. the queen is dead. \n\ngeorge: i figured you'd cruise. at least through the spring. \n\njerry: what happened? \n\nelaine: it was..uh.. john-john. \n\njerry and george: ohhhhh.. john-john. \n\njerry: but you made it through the day before. \n\nelaine: yeah, but yesterday, he told joyce, the aerobics teacher, that he wants to meet me outside here at nine o' clock tonight. \n\njerry: why outside here? \n\nelaine: because he think i live here. remember when we shared a cab, and he dropped me off out in front? he's picking me up. \n\njerry: alright, costanza - it's just you and me. \n\ngeorge: and then, (smacks the money) there were two. \n\nelaine: (slowly) elaine benes kennedy junior.. \n\n[setting: jerry's apartment] \n\nmarla: let's go in the bedroom. \n\njerry: really? \n\nmarla: yes. \n\njerry: you sure? \n\nmarla: yes. \n\njerry: you really want to? \n\nmarla: i do. i'm ready. \n\njerry: okay.. \n\nmarla: i know how difficult this must have been for you. \n\njerry: (chuckles) you don't know the half of it. \n\nmarla: what do you mean? \n\njerry: well, it's kinda silly, but.. \n\nmarla: contest?! a contest! this is what you do with your friends? \n\njerry: no, it was just a bet. i mean, it actually started with george and his mother- \n\nmarla: i don't want to hear another word. and to think how close i came to you being the one! i must have been out of my mind. \n\nelaine: marla? hi, oh, i'm glad i ran into you- \n\nmarla: i don't want to have anything to do with you or your perverted friends. (confused, elaine moves closer) ooohh, get away from me! you're horrible. \n\n[setting: jerry's apartment] \n\nelaine: what happened? \n\njerry: i told her about the contest. \n\nelaine: ohh. boy, she's a whack-o. \n\ngeorge: (to elaine) hey, what happened? \n\nelaine: what? \n\ngeorge: i thought you were meeting kennedy. \n\nelaine: (let down) he didn't show. \n\ngeorge: yeah, he did. \n\nelaine: what? he's - he's out there? oh, my god. i-i gotta go, i gotta go.. \n\ngeorge: no, no, no. he just left. \n\nelaine: what? \n\ngeorge: yeah, he was talking to marla. \n\njerry: marla? \n\ngeorge: yeah, i think, you know, she was, like, crying, and he was consoling her, and then, she, uh, just got into his car, and they just drove away. \n\nelaine: (angered) he left with marla, the virgin? \n\ngeorge: yeah. \n\nelaine: they drove away? \n\ngeorge: yeah, drove away.. you know, i said 'hello' to him. you know, he's - he's- \n\njerry: (moving to the window, shocked) oh my god in heaven! \n\nelaine: (makes a sound of surprise) is that..? \n\ngeorge: kramer?! \n\nelaine: he's waving.. \n\n[setting: elaine's bedroom] \n\nmarla: ohh, john. that was wonderful.. \n\nelaine: bah bah baaah, boo doo bah bah bah, boo doo waaaah, waah, waaaah... \n\njerry: hey, could you do me a favour? [pause] could you shut-up? \n\nelaine: hey guess what? this window doesn't work. \n\njerry: i hate rental cars. nothin' ever works the window doesn't work, the radio doesn't work... and it smells like a cheap hooker... [pause] or is that you? \n\nelaine: gimme ten bucks and find out... \n\njerry: so, this worked out pretty good. them givin' me an extra ticket, y'know, you get a free trip to st. louis, i did my gig, you got to see your sister... \n\nelaine: yeah, worked out good. \n\njerry: and here's the beauty-- \n\nelaine: what? \n\njerry: george is pickin' us up at the airport. \n\nelaine: get out of here! why? \n\njerry: you know that awning outside my building? \n\nelaine: yeah... \n\njerry: he's always bragging about his vertical leap, so i bet him fifty bucks that he couldn't touch the awning. \n\nelaine: so what happened? \n\njerry: he didn't come within two feet of the thing. he's wavin at it... so, i told him if he picks us up at the airport, he wouldn't have to pay me anything. \n\nelaine: hey, how we doin' on time? \n\njerry: timed out perfectly. drop off the car, pick up the rental car shuttle, we walk right on the plane... \n\nelaine: hey! wait up! \n\njerry: hey! wait up! \n\ndriver: sorry. heh heh heh... \n\nskycap: where you goin'? \n\njerry: uh, jfk. [to elaine] i need some small bills for a tip. you got anything? \n\nelaine: yeah, you want five? \n\njerry: gimme ten. \n\nelaine: you're giving him *ten* dollars? \n\njerry: well, we got three bags. \n\nelaine: that's a pretty big tip... \n\njerry: that's what they get! \n\nelaine: they don't get that much. \n\njerry: let's ask him. \n\nelaine: we can't ask him... \n\njerry: let's see what he says. \n\nelaine: jerry, we don't have time for this... \n\njerry: two seconds. [to skycap] excuse me, my friend and i here, we were having a discussion and we were wondering what you usually get for a tip. \n\nskycap: depends on the person, depends on the bag. \n\njerry: uh, how about a couple of people like us. \n\nskycap: people like you? i wouldn't expect much, you don't even look like you know what you're doing... \n\njerry: c'mon, seriously... \n\nskycap: well, since you asked, usually, i get five dollars a bag. \n\nelaine: what!? \n\nskycap: that's right. \n\nelaine: *five* dollars a bag? i don't think so. \n\nskycap: look, you asked, i told you. \n\nelaine: you got some nerve trying to take advantage of us... \n\njerry: all right, look, we're late. thank you very much... \n\nelaine: you're lucky i don't report you... \n\nskycap: jfk... \n\nskycap: ...honolulu. \n\nelaine: wait up! \n\njerry: you see? never be late for a plane with a girl. 'cuz a girl runs like a girl-- with the little steps and the arms flailing out... you wanna make this plane, you've gotta run like a man! get your knees up! \n\njerry & elaine: the flight's been canceled?!?! \n\nticket lady: everything into jfk's booked... no, wait-- i have two seats into laguardia-- but they're not together. it's boarding right now. \n\njerry: we'll take 'em! \n\nelaine: we're not going to sit together? \n\njerry: well, so what? it's not that long-- you'll read. \n\nelaine: well, what about george? he's supposed to pick us up at kennedy. \n\njerry: we'll call him... \n\nelaine: there's no time. \n\njerry: no time? [to ticket lady] is there time? \n\nticket lady: there's no time. \n\njerry: there's no time. all right, we'll call him from the plane. \n\nticket lady: i have one seat in first class, and one in coach. the price is the same since your flight was canceled. \n\n(the two have that uncomfortable politeness that only comes about when you're down to the last piece of pizza. jerry breaks the silence: ) \n\njerry: i'll take the first class. \n\nelaine: jerry! \n\njerry: what? \n\nelaine: why should you get the first class? \n\njerry: elaine, have you ever flown first class? \n\nelaine: no. \n\njerry: all right then. see? you won't know what you're missing. i've flown first class, elaine-- i can't go back to coach. i can't... i won't... \n\nelaine: you flew here coach. \n\njerry: yeah, that's a point... \n\nelaine: all right, fine. i don't care. if the plane crashes, everybody in first class is going to die, anyway. \n\njerry: yeah, i'm sure you'll live. \n\nattendant #1: third row right... \n\nattendant #1: oh, you're in here, sir. welcome aboard. \n\njerry: bon voyage, lainey! \n\n(elaine is robbed of her peek into the first class section by a drawn curtain and she goes to her seat. however, someone comes after her and: ) \n\npassenger #1: oh, excuse me... um, excuse me, miss, i think you're sitting in my seat... \n\npassenger #1: i never check my bags-- i can't stand that wait in the baggage area. \n\nelaine: great... [to herself] help me... \n\n(jerry gets to his seat, however, he also is in the wrong seat: ) \n\ntia: excuse me, i think you're in my seat... \n\njerry: oh, sorry... my mistake... [to himself] thank... *you*! \n\ngeorge: hey, thanks for coming with me. \n\nkramer: hey, what made you think you could touch that awning? \n\ngeorge: i confused it with another awning. \n\nkramer: so how we doin' on time? \n\ngeorge: we're perfect. i timed this out so we would pull up at the terminal *exactly* 17 minutes after their flight is supposed to land. that gives them just enough time to get off the plane, pick up their bags and be walking *out* of the terminal as we roll up. i tell you, it's a thing of beauty. i can not express to you the feeling i get from a perfect airport pickup. (starts looking around) what's going on? what are you doing? the long island expressway? what are you getting on the long island expressway for? do you know what the traffic will be like? this is a suicide mission! \n\nkramer: will you relax?! \n\ngeorge: oh, i had it perfectly timed out the grand central, the van wyck! you destroyed my whole timing! \n\nkramer: this is the best way to go! \n\ngeorge: do you know what happens if i miss him? i don't get credit for the pickup and i lose my 50 bucks... \n\nkramer: george, there's no traffic at this time. now, come on, man... \n\ngeorge: really? \n\nkramer: if anything, we'll probably get there early. i'll have a chance to go to the duty free shop. \n\ngeorge: the duty free shop? duty free is the biggest sucker deal in retail. do you know how much duty is? \n\nkramer: duty. \n\ngeorge: yeah, \"duty\". do you know how much duty is? \n\nkramer: no, i dunno how much duty is. \n\ngeorge: duty is *nothing*. it's like sales tax... \n\nkramer: i still like to stop at the duty free shop. \n\ngeorge: i like to stop at the duty free shop. \n\n(they start to \"sing\", growing more excited after each iteration: ) \n\ngeorge & kramer: i like to stop at the duty free shop! \n\ntia: so, he says, ``squeeze your breasts together'', and i say, ``i thought this was an ad for shoes''... \n\njerry: oh my... \n\ntia: is that the new esquire? turn to page 146. \n\njerry: wow! coming out of the shower... it's a good thing they gave you that washcloth to cover yourself up... what is this an ad for? \n\ntia: see those wrinkled jeans slung over the chair? way in the background, out of focus? \n\njerry: uh-huh... \n\nkramer: how does it look on your side? [pause while george just stares at him] we'll get there... \n\nelaine: oh, look at this... he's sleeping and i have to go to the bathroom. maybe he'll wake up soon. what if my kidneys burst? is it worth it not to wake this man up to damage a major organ? i hope this disgusting slob appreciates what i'm doing for him... [to passenger on the other side of her, but still to herself] yeah, make a little more noise with your gum-- that's helpful. \n\n[on the bright side, kramer and george arrive at the airport. they're running to the terminal: nan \n\ngeorge: they're not here! you cost me fifty bucks! \n\nkramer: look at you! you run like a girl! run like a man! lift your knees! \n\ngeorge: look, we're wasting our time here! we're a half-hour late, they've probably took it off the board already. \n\nkramer: no, there it is, right there-- 133... and it's canceled. \n\ngeorge: canceled? do i still get credit for the pick up? i was here! \n\nkramer: ok, c'mon... let's go check over at the ticket counter. \n\ngrossbard: oh, there it is honey, gate 18a, 830... [he leaves] \n\nkramer: did you see that guy? \n\ngeorge: no... what guy? \n\nkramer: that guy.. he was just... \n\ngeorge: listen, you go over to the ticket counter, i'm going to go stop in the gift shop and pick up a copy of time magazine. there's supposed to ba blurb about jerry in it and i think he mentioned my name! \n\nkramer: [still lost] i know that guy... \n\nprisoner: gotta get my time magazine... never miss my time magazine. \n\nguard: yeah, get your magazine and let's get out of here. \n\nprisoner: hey, i was gonna take that! \n\ngeorge: gee, i'm sorry... i got here first. \n\nprisoner: i don't care when you got here, i want the magazine... \n\ngeorge: you don't understand, there's a *blurb* about me in this magazine! \n\nprisoner: a *blurb*?!? *you're* a blurb! check out the cover, idiot! \n\nguard: all right, let's go... \n\nprisoner: i want the magazine! \n\ngeorge: umm... no. \n\nprisoner: you know what i would do to you, if i wasn't in these shackles... \n\ngeorge: but you are blanche... you *are* in the shackles. oh, i can't wait to read my *time* magazine! laaaast copy, too. maybe i'll read it tomorrow-- in the park! it's supposed to be a beeyootiful day! have a nice life... sentence, that is! \n\nkramer: they're on a different flight. they're scheduled to land in a half hour, only at laguardia. \n\ngeorge: laguardia? all right, let's go. c'mon... \n\nkramer: where do i know that guy from? \n\nelaine: [to herself, loudly] wake up, you human slug! wake up! *wake* *up*!! i can't hold it anymore! [to the slug out loud] excuse me, i've gotta go to the bathroom... \n\njerry: oh my... that *is* refreshing... \n\nattendant: would you care for some slippers? \n\njerry: sounds lovely! [to tia, motioning to put them on her] may i? \n\ntia: please! \n\njerry: why, it's a perfect fit. you must be cinderella. \n\ngeorge: my name is not mentioned in this blurb... \n\nkramer: it's grossbard! \n\ngeorge: who's grossbard? \n\nkramer: when i lived on third avenue and 18th street 20 years ago, i had this roommate who was *always* behind in his rent. then one month, he asks me to loan him his share of the rent-- 240 bucks! he took the cash and >pfffft< disappears. well, i try to find him, i went to his girlfriend's house, even his family. uh-uh. i never got the money back! he screwed me! and that's the guy-- john grossbard! \n\ngeorge: hey kramer, c'mon-- it was 240 bucks twenty years ago... \n\nkramer: no, i'm gonna turn around... i'm gonna get that guy... \n\ngeorge: no-no-no, kramer. kramer! kramer! you *cannot* abandon people in the middle of an airport pickup! it's a binding social contract. we... we must go forward... not back. \n\n[elaine is still waiting to get into the bathroom-- there's someone in there. *finally*, a zz top reject comes out of the bathroom and, to paraphrase jerry in \"the smelly car\": ``i open the door, like a *punch* in the *face*, the stench hits me--''. elaine takes in a lungful of air and goes in. brave little soldier.] \n\njerry: tia, did you see all the flowers in that bathroom? it's like an english garden in there. \n\nattendant: they're gardenias, mostly. \n\njerry: i thought i smelled lilac. \n\nattendant: yes, there are a few of those, too... \n\ntia: it's almost overwhelming... \n\ncaptain: ladies and gentlemen, this is your captain speaking. due to equipment problems at the runway at laguardia, we've been instructed by the tower to re-route and land at jfk. we apologize for any inconvenience... \n\nelaine: [to anyone who'll listen] what'd he say? what'd he say? \n\ngeorge: well, you're not gonna believe it... \n\nkramer: what? \n\ngeorge: the plane's been re-routed *back* to kennedy. we've got 45 minutes. \n\nkramer: let's go. listen to the bell, grossbard-- it tolls for thee. \n\nattendant: we have some *delicious* chateau briande, my personal favourite. or, if you prefer something lighter, a poached dover sole in a delicate white wine sauce with just a *hint* of saffron. \n\njerry: oh, saffron! that sounds good. \n\nattendant: and today we're featuring wines from the *tuscany* region... \n\njerry & tia: tuscany! \n\nelaine: hi. can i get to my seat? \n\nattendant: you're just gonna have to wait... \n\nelaine: but you just passed it. i'm sitting right there next to that guy... \n\nattendant: you're not supposed to get up during the food service. \n\nelaine: well, nobody *told* me that! \n\nattendant: look. this plane is *full*. i got a lot of people to serve. now please... you're just gonna have to wait. \n\ngeorge: there it is. gate 46... we got plenty of time. \n\nkramer: grossbard's plane leaves in ten minutes. i *still* got time to catch him! \n\ngeorge: how you gonna catch him? he's probably boarded the plane already. \n\nkramer: gimme your credit card. \n\ngeorge: my credit card? \n\nkramer: just gimme the card, don't ask me any questions. \n\ngeorge: i'm not gonna give you my card unless you tell me what it's for! \n\nkramer: i'm gonna buy a ticket-- i'm gonna get on that flight. \n\ngeorge: what, are you, nuts? you're gonna spend more on the ticket than you're gonna get back from grossbard. \n\nkramer: no, i'm not gonna use the ticket! i'm gonna get my money, i'll get off the plane and turn your ticket in for a refund. it's not gonna cost you a dime! now gimme the card. \n\ngeorge: this is a *great* idea! here... use this one. i get frequent flyer miles with every purchase... wait! get two tickets. as long as your turning it in for a refund what's the difference? i'll get *double* the bonus miles. \n\nelaine: excuse me. i'm sorry to make you do this, but i got stuck in the aisle and the flight attendant wouldn't let me get through. there's no way to get around that cart... \n\npassenger #1: you're not supposed to get up during the food service. \n\nelaine: i'll try and remember that. [pause] where's my meal? \n\npassenger #1: he asked me where you were, and you were gone so long i thought you, uh, switched seats. \n\nelaine: excuse me? excuse me, but i didn't get a meal. \n\nattendant: are you sure? \n\nelaine: yes, i'm sure! i would know if a tray of food had been served to me. \n\nattendant: would you? well, the only meal left is a kosher meal. \n\nelaine: kosher meal? i don't want a kosher meal. i don't even know what a kosher meal is. \n\npassenger #1: i think it means when a rabbi has inspected it, or something. \n\npassenger #2: no, no. it all has to do with the way they kill the pig. \n\npassenger #1: they don't eat pigs! \n\npassenger #2: they do if it's killed right-- under a rabbi's supervision. \n\npassenger #3: oh, you know what? *i* ordered the kosher meal. \n\nelaine: then why didn't you take it? \n\npassenger #3: i ordered it six weeks ago, i forgot. \n\nelaine: you're eating my food! \n\nattendant: look, i got earplugs to collect. do you want it, or not. \n\njerry & tia: mmmmmmmm! \n\ntia: this is the best sundae i've ever had. \n\njerry: oh, man. you know what... they got the fudge on the bottom-- y'see? that enables you to control your fudge distribution as you're eatin' your ice cream. \n\ntia: i've never met a man who knew so much about nothing. \n\njerry: thank you... \n\njerry & tia: mmmmmm! \n\nattendant: more anything? \n\njerry: more everything! \n\nkramer: look, i got super savers! c'mon. \n\ngeorge: super savers? are they refundable!? \n\ngeorge: you bought non-refundable tickets, you idiot! \n\nkramer: she talked me in to it-- she said it was the best deal. \n\ngeorge: do you know how much this is going to cost me? \n\nkramer: look, i'll tell you what-- i'll split it with you \n\ngeorge: look, i'm gonna go to the bathroom... \n\nattendant: excuse me... excuuuse me... \n\nelaine: what? oh, no... nothing for me thanks. \n\nattendant: what is your name? \n\nelaine: elaine benes? \n\nattendant: [checks her list] you're going to have to go back to coach. \n\nelaine: no, but there was nobody sitting here... \n\nattendant: yes, but you're still not allowed. these seats are very expensive. \n\nelaine: oh, no, please, don't send me back there. please, i'll do anything. it's so nice up here. it's so comfortable up here. i don't want to go back there. please don't send me back there... [she notices another attendant offering goods] oh, you got *cookies*! \n\nattendant: you're going to have to go back to your seat! \n\nelaine: ok, fine. i'll go back... you know, our goal should be a society *without* *classes*! [she goes through the curtain to, ick, *coach*] do you realise that the people up here are getting *cookies*! \n\njerry: what is all the racket back there? you know, you're trying to relax on the plane and this is what you have to put up with. [to attendant] what is going on? \n\nattendant: sir, this woman tried to *sneak* into first class. \n\njerry: oh, you see, that's terrible. the problem is, that curtain is no security-- there really should be a locking door. \n\nkramer: hey! that guy owes me 240 bucks! \n\njerry: couldn't be... \n\njerry: where are they already? i don't see them anywhere... i got my bags, i'm ready to go. \n\nelaine: yeah, *you* got *your* bags... \n\nelaine: the worst flight i have been on in my entire life. \n\njerry: yeah, me too... \n\ntia: i'll call you. \n\njerry: okay... [to a bamboozled elaine] it's a business thing... \n\nkramer: you guys ready? \n\njerry: yeah. where's george? \n\ngeorge: (can't be heard but looks like) kramer! \n\ngeorge: i loved her jerry, i loved her. \n\njerry: no, you didn't. \n\ngeorge: and she loved me. hoo, ho, she really did. \n\njerry: no she didn't. \n\ngeorge: what am i going to do now? i can't live without susan. i gotta get her back. how? how, am i gonna get her back? \n\nelaine: [oc] not only didn't you love her, you didn't even like her. \n\ngeorge: who says? \n\nelaine: you did. \n\ngeorge: ah, ...a beautiful successful intelligent woman's in love with me and i throw it all away. uh oh boy. now i'll spend the rest of my life living alone. i'll sit in my disgusting little apartment watching basketball games, eating chinese take out. walking around with no underwear. because i'm too lazy to do a laundry. \n\njerry: you walk around with no underwear? \n\ngeorge: yeah, what do you do when you run out of laundry? \n\njerry: i do a wash. \n\ngeorge: who am i going to meet who is better than her? no one, jerry. no one's better than her. \n\njerry: when you were with her you said you couldn't stand her. \n\ngeorge: i loved her! \n\njerry: you said goin up the steps of her apartment was like being taken to a cell. \n\ngeorge: i would give anything to be going up those stairs again. \n\ngeorge: i gotta call her. should i call her? \n\njerry: george, i don't know if that is such a good idea? \n\ngeorge: whyie? \n\njerry: you need some professional advice. why don't you go see elaine's friend? she's a therapist. \n\ngeorge: i'm not going to see that nut doctor she went to europe with. \n\njerry: no, no no [elaine enters, flossing teeth] elaine what's the name of that friend of yours ... that's a therapist ... the woman. \n\nelaine: dana folley. \n\njerry: right, dana folley. \n\ngeorge: she any good? \n\nelaine: yeah, she's terrific. why? you thinking of going? \n\ngeorge: wa, uh, ... \n\nelaine: tia? who's that? \n\njerry: she's the model i met on the plane. \n\nelaine: she sent you a christmas card? \n\njerry: um uh. and we're going out saturday night. \n\ngeorge: my darling susan! my darling!!! \n\njerry: what are you doing? \n\nelaine: ... date with fred. \n\njerry: the religious guy? \n\nelaine: he's not that religious. \n\njerry: let us pray. \n\nkramer: hey, you got any double crunch? \n\njerry: yeah. \n\njerry: kramer, should i call susan? \n\nkramer: now what does the little man inside you say? see you gotta listen to the little man. \n\ngeorge: my little man doesn't know. \n\nkramer: the little man knows all. \n\ngeorge: my little man's an idiot. \n\nelaine: see, she was clever. you know she put her picture on a card. i should do that. i never do anything like that. \n\nkramer: you want a picture like that on a christmas card? i can do that for you. ... \n\ngeorge: she kept such a nice clean apartment. she was so sanitary. \n\nelaine: no, no, i was just thinking out loud i don't want my picture on a card. \n\nkramer: no, no, i'll take your picture. i'll take care of everything. \n\ngeorge: she made a big breakfast every sunday. i don't know what she put in those eggs. \n\nkramer: all right, ... now, you come on over. i'll have my cereal and i'll take your picture. \n\nelaine: really? can you really take a picture? \n\njerry: yeah, he's good. he takes good pictures. he's got equipment over there. \n\nelaine: all right, ha ha \n\nkramer: i don't know about that outfit though. \n\nelaine: why? what's wrong with it? \n\nkramer: well, we'll have to improvise. \n\ngeorge: (singing) oh hey, if you happen to see the most beautiful girl who walked out on me. tell her i'm sorry. tell her i need my baby ... oh won't you tell her ... i love her. oh hey, ... \n\njerry: george i'm afraid i'm going to have to ask you to leave. \n\njerry: so, i'm thinking of putting in na tropical fish tank right here. \n\ntia: are you sure you're ready for that kind of comitment? \n\njerry: well, i figure if it doesn't work out i can always flush them down the toilet. \n\ntia: that's horrible! \n\njerry: what's that perfume you're wearing? \n\ntia: oh i completely forgot i want you to see this. the calvin klein ad i was telling you about came out today. \n\njerry: what is that smell? \n\ntia: it's here somewhere. \n\njerry: it smells like the beach. \n\ntia: exactly. \n\njerry: oh my god is that the new perfume? \n\ntia: yeah. \n\njerry: i can't believe this. my next door neighbour had the idea for this exact perfume last year. he even met with an executive at calvin klein. i can't believe they stole his idea. \n\ntia: are you sure? \n\njerry: and you're the model for this perfume? \n\njerry: uh, that's him. he just came home. ... uh, the door [jerry pushes his door against kramer's entrance] \n\nkramer: hey \n\njerry: hey. \n\nkramer: hey, how ya' doing? [trying to enter] \n\njerry: yeah, uh, i'll see you later. \n\nkramer: i just wanted to borrow your dust buster. \n\njerry: all right come on in. ... just wait over here! just wait here and i'll get it for you. ... kramer this is tia. \n\nkramer: hello. \n\nkramer: how tall are you? \n\ntia: five ten. \n\nkramer: come on lets see - back to back. \n\njerry: no! kramer! \n\nkramer: what's the matter with you? i just wanted to see how tall she was. \n\njerry: oh, you're tall - she's tall i'm tall. what's the difference who's tall. we're all tall. \n\nkramer: what's that? \n\njerry: what? \n\nkramer: that smell. what's that smell? \n\njerry: (starting the dust buster) what smell? \n\nkramer: it's very familiar. i can't put my finger on it. it's very familiar. \n\njerry: oh, they're all the same. here. [gives him dust buster] now if you'll excuse us, .. \n\nkramer: yeah, okay, so i'll see you tomorrow uh? \n\njerry: okay. \n\nkramer: yeah. nice meeting you. \n\ntia: nice meeting you too. \n\njerry: i'll see you later. \n\njerry: ooow, that was close. \n\nkramer: [oc] the beach!!! \n\nkramer: you smell like the beach. what's the name of that perfume? you're wearing. \n\ntia: it's ocean by calvin klein. \n\nkramer: calvin klein? no, no. that's my idea. they, they stole my idea. y' see i had the idea of a cologne that makes you smell like you just came from the beach. \n\njerry: i know look at this [shows ad] \n\nkramer: whooo, ... that's you! what is going on here? the gyp(?) he laughs at me then he steals my idea. i could have been a millionaire. i could have been a fragrance millionaire, jerry. ... they're not going to get away with this. \n\ndana: hello. george, come in. come in i've heard an awful lot about you. please sit down. \n\ngeorge: well hello. um, ah, specifically the reason that i'm here, uh, i don't know uh what elaine told you but uh i broke up with my girlfriend a couple of weeks ago. actually she broke up with me [struggling with his coat zipper] and uh, well, i was the cause of it and uh, i just wanted to find out from you ... what's with this thing? \n\ndana: so uh, she broke up with you? ... \n\ngeorge: yeah, and, ... why won't this go down? \n\ndana: it's all right don't worry about it. so, why did she break up with you? \n\ngeorge: what is with this damn zipper? \n\ndana: it doesn't matter. you'll fix it later. tell me about your girlfriend. \n\ngeorge: it's stuck on a piece of cloth here. i can't get the cloth out. \n\ndana: it doesn't matter, so ... \n\ngeorge: this is a brand new jacket. boy this really burns me up, ... \n\ndana: george, george, look at me. okay, forget about the zipper. ... what's your girlfriend's name? \n\ngeorge: ... susan. \n\ndana: okay, we're getting somewhere. \n\ngeorge: uh, ha ha, ... it's just so frustrating. it's a brand new jacket. \n\nelaine: anyway so fred and i are going to do some volunteer work for that church on amsterdam. \n\njerry: oh, volunteer work!. see that's what i like about the holiday season. that's the true spirit of christmas. people being helped by people other than me. that makes me feel good inside. look at what we have here. (mail). a christmas card from laine. you didn't have to go to all that trouble. \n\nelaine: it was no trouble. my assistant did the whole thing. \n\njerry: i didn't even see the picture. how did it come out? \n\nelaine: well, you know. it's a picture? \n\njerry: oh yeah. look at that. looks good. kramer did a good job. \n\nelaine: yeah, well. how hard is it to take a picture? \n\njerry: ... um ... \n\nelaine: what? \n\njerry: did you look at look at this picture carefully? \n\nelaine: carefully? \n\njerry: because i'm not sure and and and correct me if i'm wrong but i think i see ... a nipple. \n\nelaine: what? \n\njerry: here. take a look. what, what is that? \n\nelaine: (gasps) oh my god! that's my nipple. \n\njerry: that's what i thought. \n\nelaine: that's my nipple. my nipple's exposed. i sent this card to hundreds of people! my parents. my boss. uh, nana and papa. \n\njerry: didn't you look at the picture? \n\nelaine: oh god i didn't notice. oh, what am i going to do? you know your whole life you go through painstaking efforts to hide your nipple and then boom, suddenly hundreds of people get their own personal shot of it. \n\nkramer: hey! \n\nelaine: have you seen the card? \n\nkramer: what card? \n\nelaine: this car. \n\nkramer: yeah, yeah. of course. i took it. \n\nelaine: well did you notice anything unusual about it? \n\nkramer: no. \n\nelaine: well come here and take a look. \n\nkramer: yeah, so? \n\nelaine: so, what's that? \n\nkramer: that's a nipple. \n\nelaine: right!! \n\nkramer: ooo! \n\nelaine: aw, great!? didn't you see that? \n\nkramer: aw, no, no i didn't notice it. no, uh, \n\nelaine: it's because you made me wear that stupid shirt. \n\njerry: well, maybe no one noticed it. you didn't notice it. let me go get newman. we'll see if he sees it. \n\nelaine: no. i don't want him looking. \n\njerry: oh what's the difference. everybody else you know has it. \n\nelaine: oh my god. i sent one to the super in my building. my mailman. my ten year old little nephew. sister mary catherine. father chelios. oh my god fred! i sent one to fred. \n\nnewman: okay. what is it? \n\njerry: take a look at this card. tell me if you notice anything unusual about it. \n\nnewman: your nipple's showing. \n\njerry: okay. thanks. \n\nnewman: anything else? \n\njerry: no. \n\nnewman: all right. see you later. \n\njerry: what? so what? it's a nipple. a little round circular protuberance. what's the big deal? see everybody's got them. see i got them. \n\nkramer: i got them too. \n\njerry: everybody's got them. \n\ndana: you see it's kind of got a little piece of cloth that's slipped underneath and it's ... \n\ngeorge: pull it up a little bit. \n\ndana: uhg. well you hold it. wait, uh, damn it! i can't move it. god, i've never seen a zipper so stubborn. damn it! i almost had it. \n\ngeorge: yeah, okey, wait wait. that will separate. \n\ndana: no. let me try... \n\ngeorge: take it right off the chest... \n\ndana: ugh, .. \n\ngeorge: you're gonna rip it. you're gonna rip it. \n\ndana: yeah!! ugh!!! arg!!! ... i am afraid we're going to have to stop. \n\ngeorge: okay. uh, my mother is is going to pay for the sessions. ... oh,elaine? \n\ndana: yeah. \n\ngeorge: (stares at card) \n\njerry: no, no, no, no, oh, no. \n\njerry: well every day for the past four days she hasn't returned one call. \n\ngeorge: was it a scratch or a pick? \n\njerry: it was a scratch. \n\ngeorge: hey. it's me. \n\njerry: don't you think i know the difference between a pick and a scratch? \n\njerry: yeah? \n\nelaine: (oc) it's me. \n\njerry: come on up. \n\ngeorge: was there any nostril penetration? \n\njerry: there may have been some incidental penetration. but from her angle she was in no position to make the call. \n\ngeorge: so let's say in her mind she witnessed a pick. okay, so then what? \n\njerry: is that so unforgivable? is that like breaking a commandment? did god say to moses thou shalt not pick? \n\ngeorge: i guarantee you that moses was a picker. you wander throughh the desert for forty years with that dry air. ... you telling me you're not going to have occasion to clean house a little bit. \n\njerry: let me ask you something. if you were going out with somebody and if she did that what would, would you do? would you continue going out with her? \n\ngeorge: no. that's disgusting! \n\nelaine: you cannot believe what i'm going through. that card is plastered all over the office. everybody is calling me, nip! ... yeah. that's my new nickname at the office. nip! these guys keep asking me out for drinks. not only that, fred, you know the guy i told you about? he hasn't called me in three days. ... [sees card] oh please! \n\ngeorge: hey. how come i didn't get a christmas card? everybody else got one. jerry got one, kramer got one. i thought we were good friends. i don't get a christmas card. i don't get it. \n\nelaine: you want a christmas card? you want a christmas card? all right here. [rubs george's head on her breasts] here's your christmas card. \n\nkramer: got any double crunch? \n\njerry: yeah. i think i do. \n\nkramer: what's that perfume? \n\nelaine: what, ocean. \n\nkramer: that's mine. that's my smell. jerry you've got to get that model to get me an appointment with calvin klein. \n\njerry: i can't she won't return my calls because she caught me in a pick at a light. \n\nkramer: i thought you said it was a scratch. \n\njerry: but that's not what she thinks. \n\ngeorge: why don't you call her agency. maybe she's been out of town and she didn't get the calls. \n\njerry: all right. i'll call the agency. [elaine grabs card from george] hello. yes, i'm trying to get in touch with tia van camp. do you know if she's been in town? she's been in town. oh really. well thank you very much. [hangs up] she has been in town. she's at calvin klein's right now. \n\nkramer: let's go. \n\ngeorge: it'll be different this time. \n\nsusan: i need someone a little more stable. \n\ngeorge: i'm not stable? i'm like a rock. i take these glasses off, you can't tell the difference between me and a rock. i put these glasses on a rock. you know what jumps into most people's minds? costanza! \n\nsusan: people don't change. \n\ngeorge: i change i change. two weeks ago i tried a soft boiled egg. never liked it before. now i'm dunkin a piece of toast in there and i'm loving it. \n\nsusan: i'm not a soft boiled egg. \n\ngeorge: and i am not a piece of toast. \n\nsusan: i just don't think we have anything in common. \n\ngeorge: that's okay. that's good. you think louie pasteur and his wife had anything in common? he was in the fields all day with the cows, you know with the milk, examining the milk, delving into milk, consummed with milk. pasteurization, homogenization, she was in the kitchen killing cockroaches with a boot on each hand. \n\nsusan: why were there so many cockroaches? \n\ngeorge: because. there was a lot of cake lying around the house. just sitting there going with all the excess milk from all the experiments [grins] \n\nsusan: and they got along? \n\ngeorge: yes! yes. you know. she didn't know about pasteurization. he didn't know anout fumigation. but they made it work! \n\nkramer: i want to talk to calvin. \n\nsecretary: you can't go in there. \n\nkramer: let me talk to calvin. \n\ntia: kramer? \n\nkramer: yeah, uh. \n\ncalvin klein: who are you? \n\nkramer: i'm here to talk about the ocean. \n\ncalvin klein: oh, yes kramer. i uh, think i know something about this. will you excuse us tia? [tia leaves] \n\nkramer: now i don't want any trouble calvin. \n\ncalvin klein: neither do i. \n\njerry: hello there you are. \n\ntia: what are you doing here? \n\njerry: well, i had to talk to you - i noticed you haven't been returning my calls. \n\ntia: well, i've been busy. \n\njerry: because i - i thought we had a good time the other night, an' the only explanation i can come up with is that you think that you caught me (flustered, he indicates a nose pick) \n\ntia: (waving him off) i'd rather not talk about this.. \n\njerry: but i was clearly on the outer edge of the nostril. \n\ntia: i know what i saw. (turns toward the elevators) \n\njerry: but there - but there was no pick! i - i did not pick! there ws no piick! \n\ntia: i gotta go. (quickly walks away from jerry) \n\njerry: no! no pick! \n\n[setting: calvin klein's office] \n\nkramer: all right, now here's the scoop, jockey. i, uh, i came in here last january to talk to one of your ffflunkies.. \n\nklein: (reflecting on kramer) interesting face.. \n\nkramer: yeah.. and, um, when i told him my idea about the beach cologne, you know, he - he laughed at me. \n\nklein: you're very lithe, aren't you? very graceful. \n\nkramer: well, yeah. \n\nklein: sit down, eh? (kramer, misjudging one side of the couch, sits down uncomfortably) you're very lean, but muscular.. \n\nkramer: you know, i try to take care of myself. i - i watch what i eat. ah, just recently i cut out fructose. \n\nklein: you're spectacular. \n\nkramer: (flattered) oh? \n\n[setting: elaine's office] \n\nelaine: i told you, fred - my friend's next door neighbor took it. \n\nfred: (incredulous) soo - what happened?! \n\nelaine: well, i-i-i must a missed a button. i forgot to button it. \n\nfred: i really don't see how you could miss a button like that. \n\nelaine: oh, you've never missed a button?! (phone rings, she puts it on speakerphone) yeah?.. \n\nreceptionist: your sister, gail. \n\nelaine: oh, god - my nephew. (picks up the phone and hits the button) hi, gail!.. yu.. yu... yes, gail, i know how old he is. \n\nco-worker: (pokes his head into the doorway) hey, nip, ya need that manuscript or can i take it home? \n\nelaine: yeah, take it! take it!.. an' stop calling me \"nip\"! (co-worker takes it and quickly leaves. elaine goes back to the phone) it was an accident! well.. well.. it's gotta be somewhere. look under his mattress. \n\n[setting: susan's apartment building] \n\n[setting: calvin klein's office] \n\nwoman: about the focus group? i had nothing to do with the focus group. what's your point? (she sees kramer emerge from another room. he's wearing only dress shoes, socks, and his briefs) my.. he's sexual, athletic.. an' without a trace of self-consciousness! \n\nklein: his buttocks are sublime! \n\nman: of course, his pectorals could use a little work - i suppose we could get him into the weight room. \n\nwoman: (mesmerized with kramer's body) no, let's get him in the studio today. we can send these out immediately. \n\nman: you've done it again, c.k.! \n\n[setting: calvin klein office building] \n\njerry: an' what if i did do it? even though i admit to nothing, and never will. what does that make me? and i'm not here just defending myself but all those pickers out there who've been caught. (elevator doors open) each an' every one of them, who has to suffer the shame and humiliation because of people like you.. (everyone but jerry is now in the elevator. jerry's still addressing them) are we not human?! if we pick, do we not bleed?! (elevator doors shut. a few people in the hallway are looking at him, he turns and addresses them) i am not an animal! \n\n[setting: elaine's office] \n\nelaine: i did not bare myself deliberately, but i tell you, i wish now that i had! (fred, shocked by her speech, flees. she calls after him, still standing at the hallway) because it is not me that has been exposed, but you! for i have seen the nipple on your soul! \n\ngx: so the minute i started up the steps to her apartment i knew i made a terrible mistake. going back with her. so we're in her apartment she goes into the bathroom. i'm cursing myself; now how do i get out of this? then it hits me like a bolt of lightening. the pick. \n\njerry: the pick? \n\nelaine: the pick? \n\ngeorge: she comes out of the bathroom, i'm in up to my wrist. you should have seen the look on her face. \n\njerry: i think i've seen that look. \n\nkramer: i've got the magazine. the underwear ad came out. \n\njerry: boy, they really worked on your pectorals. \n\ngeorge: your buttocks are spectacular. \n\nelaine: oh my! \n\nkramer: what? \n\nelaine: i'm not sure but... i think i see your... \n\n% a night at the improv. jerry receives some disturbing news from the manager: the show has been delayed. \n\njerry: you don't understand. i got this all timed out. i got another spot across town at 950, i'm not gonna be able to make it! \n\nkernis: i hear you, guy. \n\njerry: and i'm doin' letterman monday. you know, i gotta work out the material! \n\n% in the background is the plot complication of the week: buckles. the manager assures jerry that buckles isn't on the menu. he just hangs around hoping that somebody drops out. \n\nkernis: why don't you come back and do the 11 o'clock spot? \n\njerry: no, i'm supposed to meet my friends to see this movie ``checkmate'' at 1030. \n\nbuckles: hey, jer! \n\njerry: [not losing a step] heeeeyyyyyyyy..... [and out the door] \n\ngeorge: excuse me, do you have a ticket? \n\nman: no. \n\ngeorge: okay. good. \n\n% misunderstanding number one: when jerry shows up at the other comedy place, the manager tells him his spot was for 915, not 950. the manager had no choice but to give jerry's spot to... \n\nbuckles: jerry! \n\njerry: what are <you> doing here? \n\nbuckles: hey, do you think this is funny? ``why do they call it athlete's foot? you don't have to be an athlete to get it. i mean, my father gets it all the time, and believe me, he's no athlete!'' \n\nelaine: i've been *dying* to see ``checkmate''. \n\ngeorge: well, if it's as good as ``ponce de leon'', i'll be happy. \n\nelaine: ``ponce de leon'', are you kidding me? i hated that movie! \n\ngeorge: ``ponce de leon''? but that was great! \n\nelaine: oh, <come on>. that fountain of youth scene at the end, where they're all splashin' around, and then they go running over to the mirror to see if it really worked? i mean, come on! [laughing too hard to continue] that's stupid! \n\ngeorge: lemme tell you sum'in. when ponce looked in that mirror and saw that he hadn't changed, and that tear started to roll down his cheek? ... i lost it. \n\n% apparently, a movie that can be interpreted on two levels. misunderstanding number two: kramer joins george and elaine after looking for them at the paradise twin around the corner. elaine hates the paradise because it's a multiplex; she'd rather see a movie on a big screen. something catches kramer's eye. \n\nkramer: listen, i'm gonna get a hot dog at payapa king. \n\ngeorge & elaine: no, wait! \n\ngeorge: you're not going to get back here in time! \n\nkramer: i'm starvin', i haven't had any dinner! \n\nelaine: you can get a hot dog in the theater. \n\nkramer: i don't wanna get a movie hot dog! [in tears] i want a papaya king hot dog! \n\nelaine: kramer, jerry is going to be here any second, and then this line is going to start moving, and we're going to end up in the front row. \n\nkramer: well, just save me a seat. \n\nelaine: no! i don't want to save seats. don't put me through that! i once had the fleece just ripped out of my winter coat in a seat-saving incident! \n\ngeorge: i'm in line to buy. \n\nelaine: no, george, this is the ticket-<holders> line. \n\ngeorge: no it's not, it's the ticket-<buyers> line. \n\nelaine: then how come we're not moving? \n\nkramer: good question. \n\ngeorge: is this the ticket holders line, or the buyers? \n\nman: holders. \n\ngeorge: but i asked you before if you had a ticket, and you said no! \n\nman: i didn't. my friend was getting it. \n\ngeorge: [furious] good. it's good to be accurate like that. \n\nelaine: can you believe him? \n\nkramer: he's spaced out. \n\nelaine: how long would *you* have stood in the ticket-holders line? \n\nkramer: [thinks for a while] \n\nelaine: [gives up] yeah, exactly... \n\n% the movie has sold out. ``real good, george. real good.'' it's now 10: 20, and kramer suggests they go watch the 1045 showing of \"checkmate\" at the paradise. elaine enters whine mode. \n\nelaine: i don't wanna go to a... miniplex multi-theater! \n\ngeorge: it's the same movie! what's the difference? \n\nelaine: it's not a theater, it's like a room where they bring in pows to show them propaganda films. \n\njerry: [to taxi driver] take the park! \n\nbuckles: no no no, take 55th. \n\nbuckles: jerry, i want you to do me a favor. no more fish! \n\njerry: [rubbing his eyes hoping the nightmare will end] okay, i get your point! \n\nbuckles: i had a point? \n\ngeorge: hey, you know what else is playing here? ``rochelle rochelle''. \n\nelaine: sigh/ugh. \n\ngeorge: i wouldn't mind seein' <that>. \n\nelaine: yeah. you know, men can sit through the most boring movie if there's even the slightest possibility that a woman will take her top off. \n\ngeorge: so what's your point? \n\ngeorge: by the way, you owe me seven fifty. \n\nelaine: oh, all right. can you break a twenty? \n\ngeorge: no, i don't have any change. \n\nelaine: oh, well, then i'll pay you later. \n\ngeorge: or, i could take the twenty, then i could pay *you* later. \n\nelaine: yeah, you *could*... \n\ngeorge: might be easier. \n\nelaine: i mean, how is that easier? i mean, then you would owe me twelve fifty instead of me owing you seven fifty. \n\ngeorge: [trying to act as if he doesn't care one way or the other, but we know better] either way. \n\nelaine: yeah. \n\ngeorge: so... can i have it? \n\nelaine: i tell you what, i'll get the popcorn and the soda. \n\ngeorge: whaddya mean, you'll ``get'' the popcorn and the soda? \n\nelaine: i will buy your popcorn and soda. we'll call it even. \n\ngeorge: i tell you what, you give me the twenty, and i will buy *you* a popcorn and soda, and i'll throw in a bon-bons. \n\nelaine: [exasperated] george, you're sappin' my strength. \n\ngeorge: you go in and save seats. \n\nelaine: [in a panic] me!? but that's three seats! i can't save three seats! i told you about that guy who tore up my winter coat! \n\nbuckles: jerry, i want you to have this piece of material. \n\njerry: that's very nice of you, but i can't do the voices. \n\nbuckles: jerry! don't start up with me! \n\njerry: i gotta get out of this cab... \n\nbuckles: but jerry, quit riffing! \n\njerry: no, i'm not riffing. i'm ignoring! do you understand the difference? \n\nbuckles: [pause] can you help me get on the tonight show? \n\nelaine: no, these are saved. \n\nman: all of them? c'mon, you can't take *four* seats. \n\nelaine: what, is that a rule? \n\ngeorge: well, why don't *you* go, and i could save the seats. you said you didn't like saving anyway. \n\nelaine: [stopping someone from sitting in the seat next to her] no, *taken*, taken, taken. [to george] [shrugs] i'm getting the hang of it. \n\ngeorge: why don't you give me the twenty, and i'll stop and get change, and then you and i can... uh... you-know, settle. \n\nelaine: can we do this later, george? \n\ngeorge: psh. what's the point of even discussing it? [condescendingly takes her hand and pats it] you'll give me the money when you have it. [takes two steps, then reconsiders, then re-reconsiders] i, i trust you. \n\nkramer: could you do me a favor? if you see a guy that's five foot eleven, he's got uh a big head and flared nostrils, tell him his friend's going to be right back, okay? \n\nelaine: no, i'm sorry, these are taken. ... they're in the lobby buying popcorn. ... what are you doing? these are taken, these are taken! \n\nwoman: which one? \n\nelaine: these two and this one. ... no! don't come over here! these are taken. go! go! these are taken! they're taken! they're taken!!! \n\nelaine: oh, take 'em. \n\ngeorge: um, excuse me, have you see a guy with like a horse face, big teeth, and a, and a pointed nose? \n\nclerk: ... flared nostrils? \n\ngeorge: yeah. \n\nclerk: nope, haven't seen him. \n\nbuckles: jerry, could you do me a personal favor? and if i'm out of line, *please*, let me know. could i keep my trench coat in your closet for a few months? \n\njerry: your trench coat in my closet? \n\nbuckles: jerry, my closet is packed to the gills, i'm afraid to open the door. just for a few months. it'll make all the difference in the world. \n\nbuckles: we should see ``rochelle rochelle''. i hear it's really hot. \n\njerry: no thanks, maybe some other time. \n\nbuckles: really? do you really mean that? \n\njerry: no, i don't. \n\nbuckles: you liked the athlete's foot bit, right? \n\njerry: no. no. i was kidding. it's terrible. \n\njerry: hi, i got some friends inside, i gotta get a message to 'em. mind if i walk through real quick? \n\nusher: [indicates ``okay''] \n\nkramer: hey, did that guy show up? \n\nclerk: the guy with the... horse face... and the big teeth... \n\nkramer: no, the guy with the big head and the flared nostrils. \n\nclerk: haven't seen him. there was a short guy with glasses... looked like humpty-dumpty with a melon hat. but he left. \n\nwoman: so i got home, and he was vacuuming! i mean, he's twelve years old! who else but my alan would do something like that? \n\nwoman: and then last night, he put on my high heels. oh, he put on such a show for us! he was dancing around, lip-sync'ing to ``a chorus line'', i mean you can see he's got talent. \n\nelaine: [annoyed] excuse me, excuse me. \n\nwoman: what's the problem? \n\nelaine: [momentarily shocked, as if the answer were self-evident] you're talking. \n\nwoman: it's the ``coming attractions''. \n\nwoman: so anyway, he sings, he dances. and do you know what he's gotten into now? he is cooking! he does a crepe... \n\nusher: ticket, sir? \n\ngeorge: uh, i just went out, i went to look for my friend? \n\nusher: do you have your stub? \n\ngeorge: [as if the word were totally foreign] my `stub'? \n\nusher: mm hm. \n\ngeorge: you don't remember me? \n\nusher: it's a big city, sir. \n\ngeorge: i went in with a pretty woman? you know, kinda short, big wall o' hair, face like a frying pan? \n\ngeorge: [whispering] elaine? [loud whisper] elaine! [louder whisper] elaine! \n\ngeorge: [quite out loud, not even pretending to whisper] elaine! \n\nnarrator: the village voice calls it a masterpiece. a young woman's strange, erotic journey from milan to minsk. \n\nnarrator: it's a story about life. and love. and becoming a woman. ``rochelle rochelle'', now playing at paradise 2. \n\nelaine: uh, could i have a medium diet coke? \n\nclerk: do you want the medium size or the middle size? \n\nelaine: what's the difference? \n\nclerk: well, we have three sizes. medium, large, and jumbo. \n\nelaine: [momentarily perplexed] what happened to the small? \n\nclerk: there is no small. small is medium. \n\nelaine: what's... medium? \n\nclerk: medium is large, and large is jumbo. \n\nelaine: oh-kay. gimme the large. \n\nclerk: that's medium. \n\nelaine: right. yeah. [fearing the answer] could i have a small popcorn? \n\nclerk: there is no small. [flash of perky inspiration] child-size is small. \n\nelaine: what's `medium'? \n\nclerk: adult. \n\nelaine: do adults ever order the child-size? \n\nclerk: [chuckling] not usually. \n\nelaine: [laughs appreciably] okay, gimme the `adult'. \n\nclerk: do you want butter? \n\nelaine: is it *real* butter? \n\nclerk: [perkily] it's butter-*flavored*! \n\nelaine: [exasperated] what is it made of? \n\nclerk: [perkily] it's yellow! \n\njerry: 44th and 9th. \n\ndriver: have you got a cigarette? \n\njerry: no. \n\nusher: ticket, sir? \n\ngeorge: we've just been through this! you don't remember? we just had this exact same conversation a minute ago! \n\nusher: i need to see your stub. \n\ngeorge: [realizing the only way out is to show the stub] i've got the stub. \n\ngeorge: there you go, okay? that's my *other* friend's ticket. you happy now? you got two tickets. \n\nusher: ticket, sir? \n\nkramer: uh, no, see, my friend already bought me a ticket. i'm late, and she's inside. \n\nusher: go ahead. \n\nkramer: is that seat taken? \n\nwoman behind elaine: it's all yours. \n\ndriver: i'm very sorry, you give me few minutes. i have to stop for gasoline. \n\njerry: gasoline? can't you get it after you drop me off? \n\ndriver: [taken aback] no! impossible! it is on `empty'! \n\nman: you're soaking wet. who are you? \n\nrochelle: my name is rochelle, i'm from milan. i'm supposed to visit my relatives in minsk. \n\nman: here, stand by the fire. take off those wet clothes, you'll catch cold. \n\nrochelle: oh, my hand's so cold, i can barely get these buttons open. \n\nrochelle: oh, that's much better. much... \n\nelaine: i just went to get popcorn... ugh... [shakes more popcorn] i just went to get popcorn, okay? and and and somebody took my seat, and my coat is in there! \n\nusher: there's a seat in the front row. \n\nelaine: no no, i can't sit in the front row. \n\nusher: well, you're going to have to wait, then. \n\nelaine: i can't stand around here for *two hours*! \n\nusher: i could let you see ``rochelle rochelle''. \n\nelaine: [heavy sarcasm] oh. thanks. \n\nelaine: oh, hey, listen, by the way, have you seen a tall... lanky... doofus, with a, with a bird-face and hair like the bride of frankenstein? \n\nusher: haven't seen him. \n\n% from his pocket, kramer digs into his treasured papaya king hot dog. then discovers the source of his discomfort: he's sitting on a coat. \n\njerry: hey, did i make it? \n\nkernis: sorry. \n\njerry: oh, great. that's great. what a night. \n\nannouncer: pat buckles, ladies and gentlemen. another round of applause for pat buckles! \n\njerry: you got my spot? \n\nbuckles: that athlete's foot bit killed! \n\njerry: really... \n\nbuckles: do you think i need to lose some weight? \n\njerry: weight? naw. just need some more height. \n\njerry: my whole night's ruined. i didn't do any sets, didn't do any movies... \n\nbuckles: come on, we can still catch most of ``rochelle rochelle''. \n\njerry: ``rochelle rochelle'', huh? \n\nbuckles: a young girl's strange, erotic journey from milan to minsk. \n\njerry: [his interest piqued] minsk? \n\nelaine: oh, gimme a break! \n\njerry: elaine? \n\nelaine: jerry! \n\njerry: elaine! \n\nvoice: [whispered] shut up. \n\ngeorge: jerry? \n\njerry: george? \n\ngeorge: elaine? \n\nelaine: george! [waves hi] \n\njerry: hey, where's kramer? \n\nvoice: [whispered] will you shut up? \n\nelaine: i don't know. does this movie stink or what! \n\njerry: let's get outta here. [to buckles] i'll see ya. \n\nbuckles: you're leaving? \n\njerry: yeah. \n\nbuckles: [holding out his coat] jerry, take the coat. please. one month. \n\njerry: i don't want the coat. \n\nbuckles: jerry! call me when you get home so i know you're okay! \n\ngeorge: [studying his jacket] oh man! look at this! i sat in gum. oh, by the way, you owe me seven fifty. \n\njerry: i didn't even use the ticket! \n\ngeorge: i still paid for it! \n\njerry: i only have a twenty. \n\nelaine: that's my coat! gimme that. where did you get that? \n\nkramer: it was on the seat... \n\nelaine: *you* took my seat!? \n\ngeorge: you uh owe me for the ticket. \n\nkramer: yeah, right... \n\nelaine: what is that stain [on my coat]? \n\nkramer: it's yellow mustard. [to george] can you break a twenty? \n\ni always get confused in the movie theater by the, by the plot. it's embarrassing. it's an embarrassment to have to admit, but i'm the one that you see in the parking lot after the movie talking with his friends, going: ``oh, you mean that was the same guy from the <beginning>... ohhhhhhhhhh...'' nobody will explain it to you. when you're in the theater, you can't find out. [whispering to imaginary friends seated around him] ``why did they kill that guy?... why did they kill him?... who was that guy? what was the... i thought he was with them? wasn't he with them? why would they kill him if he was with them? oh, he wasn't *really* with them.... i thought he was with them. it's a good thing they killed him.'' \n\ngeorge: so you're a lawyer. what kind of cases do you handle? \n\ncheryl: oh, everything. divorce, patents, immigration and naturalization. \n\ngeorge: what is that, immigrants come over, you show them how to act natural? \n\ngeorge: no, they're not funny at all. no, i have no funny friends. i'm the funny one. el clowno. \n\nelaine: look, i was nice enough to pick it up for you \n\njerry: hey, i've been back four days, i want my mail. \n\nelaine: it's mostly bills, magazines and junk mail anyway. \n\njerry: elaine, that's what mail is. without bills, magazines and junk mail, there is no mail. \n\ncheryl: here's my card. \n\ngeorge: oh, ok. thank you. it was good talking to you. \n\ncheryl: nice meeting you. \n\ngeorge: yeah. \n\nelaine: hi! \n\njerry: hey, how ya doin? \n\ngeorge: you would not believe what just happened. i was waiting for you and this woman was sitting at the counter. \n\nelaine: what, the one who just left? \n\ngeorge: yeah, yeah, and we started talking, and she's this lawyer who's incredible! everything i said was funny! you know, she laughed at everything i said, she thinks i'm hilarious. you know in a way, it was almost too good. i started so good, i can't go any place but down now, ya know? i got no place to go. \n\nelaine: yeah, well, i guess it's all over. \n\njerry: (looking behind the counter) hey, is that babu? it is! (walking over) hey, babu! \n\nbabu: jerry! \n\njerry: look at you, you got the job. \n\nbabu: yes, yes, they give me job thanks to you. \n\njerry: oh, i didn't do anything. \n\nbabu: yes, you do everything, get me job, you get me a place to live in your building. \n\njerry: come on. \n\nbabu: you very very good man, you do everything for me. my family and i can never thank you enough for everything you do. \n\ngeorge: you see, this is what i do with women. i start out too strong, now i have to become real, that's when it all falls apart. what good is real? they don't want real, they want funny. \n\nelaine: no they don't. \n\ngeorge: ooooh, yes they do. \n\nelaine: nooo. \n\ngeorge: ya gotta put on a show, ya always gotta give them a big show. you always have to be 'on' otherwise why would they like me? they'd just go for a better looking guy with more money. \n\ngeorge: you mean that's true, i'm right?! \n\njerry: ok, great, well, i'm glad everything worked out, babu. \n\nbabu: oh, yes, yes, everything wonderful. \n\njerry: ok, i'll see you around the building. \n\nbabu: i'll see you *in* the building. \n\njerry: (returning to the table) remember babu bhatt? \n\ngeorge: who's he? \n\njerry: remember that guy who opened the restaurant across the street from the building last year and he wasn't doing so well and i told him he should make it into all pakistani and that drove him right out of business? so, you uh, going with me to the auto show with me saturday? \n\nelaine: yeah, yeah. \n\njerry: can you bring my mail then? \n\ngeorge: what mail? \n\nelaine: i picked up his mail while he was on the road \n\ngeorge: why didn't kramer pick it up? \n\njerry: cause he's at that baseball fantasy camp in florida. \n\ngeorge: oh yeah, right. when's he coming back? \n\njerry: monday, i think. \n\ngeorge: kramer goes to a fantasy camp. his whole life is a fantasy camp. people should plunk down two-thousand dollars to live like him for a week. do nothing, fall ass-backwards into money, mooch food off your neighbors and have sex without dating; that's a fantasy camp. \n\njerry: hey listen, if you're gonna go out with this lawyer, why don't you have dinner with us and then maybe you can go to the auto show with her if you want, you know, have a little company, take the pressure off. \n\njerry: ...he never heard of corduroy! \n\ncheryl: (howling with laughter) stop it, you're killing me!! \n\njerry: he never heard of corduroy! true story, true story. \n\ngeorge: no, no i don't think so. \n\nelaine: why? \n\ngeorge: well i think i'm better off going one-on-one. \n\njerry: i don't know why you want to play man-to-man when you could play a zone. \n\ngeorge: she might not be comfortable. \n\nelaine: why? we're all very nice, we're very friendly. \n\njerry: we'll be funny. \n\ngeorge: no! no. it's not good, i don't think so. \n\nelaine: alright, well if you change your mind, we'll wind up as isabella's probably around seven. \n\njerry: no, no isabella's, i don't want to go to isabella's. \n\nelaine: why? \n\njerry: no, it's too trendy, no isabella's. \n\ngeorge: (tasting the wine) excellent. like i really know what i'm talking about. \n\ngeorge: toasting makes me uncomfortable. but toast, i love. never start the day without a good piece of toast. in fact, let's toast to toast. \n\njerry: look who's here! georgie-boy! \n\ngeorge: what are you doing here? i thought you said you hated isabella's? \n\nelaine: no, i talked him into it. \n\ngeorge: what happened to the auto show? \n\njerry: oh, we're still going, we're still going. elaine, do the spokes model. \n\nelaine: the turbo quadramatic transmission offers you the power and prestige to propel you well into the 21st century. \n\ngeorge: cheryl, elaine, and uh, jerry. \n\ncheryl: would you like to join us? \n\ngeorge: oh no no no, they don't want to join us. \n\ncheryl: oh no, it's ok, don't be silly. \n\nelaine: ok, well why don't we just put these two tables together? \n\ngeorge: (as the others are repositioning the tables) no, no, you can't do that, they're round, it makes an 'eight' and, yeah, well alright. \n\nelaine: jerry? jerry, tell them that funny story you were telling me-- \n\ngeorge: no! no. \n\nelaine: no george, it's so funny. we saw this cab driver's picture, right? \n\ngeorge: (interrupting) you know we should really order, the service is so slow here, by the time you get anything... \n\nelaine: oh, cheryl, can i ask you a legal question? um, i'm being sued. \n\ncheryl: oh? what happened? \n\nelaine: well, i ran out to apologize to a virgin and i crossed against the light and i knocked over the delivery boy. \n\ncheryl: was he chinese? \n\nelaine: yeah. \n\ncheryl: is your last name benes? \n\njerry: how did you know? \n\ncheryl: ping is my cousin! \n\nelaine: no! \n\njerry: that's so funny! \n\ncheryl: i'm handling his case! \n\nelaine: what? you're cheryl fong? \n\ncheryl: that's right! \n\nelaine: oh my god, i can't believe it! that is such a coincidence! \n\ncheryl: yeah, i know! \n\nelaine: wow, well, i guess you don't have any advice for me on how to win the case? \n\ncheryl: will you excuse me? i have to make a call. \n\nelaine: tell ping i said hello. \n\njerry: tell him you think you may have broken the case wide open. \n\njerry: what? \n\ngeorge: this is not good. this is not good. \n\njerry: what's the matter? \n\ngeorge: i just don't think it's such a great idea for you to sit here. \n\njerry: why not? \n\nelaine: he thinks that if you're too funny, he might not look so funny. \n\njerry: biff? \n\ngeorge: what? \n\njerry: you're not worried about that? \n\ngeorge: no, of course not. \n\njerry: i mean, so what if i'm funny? who cares? \n\nelaine: he thinks that if a woman sees a guy put on a better show, she'll walk out on his show, go see the other show. \n\njerry: well, should we leave? \n\ngeorge: maybe you don't have to be so funny. i mean, would it kill you not to be so funny all the time? that's all i'm asking. this woman thinks i'm very funny. now you're gonna be funny, so what am i gonna be? i'm gonna be a short bald guy with glasses who suddenly doesn't seem so funny. \n\nelaine: this is so ridiculous. can we just go over there? \n\njerry: i don't have to be funny, i don't care. \n\ngeorge: you don't? \n\njerry: no way! it's completely under my control. \n\nelaine: no, it's not. you cannot not be funny. \n\njerry: of course i can, am i being funny now? \n\nelaine: a little. \n\njerry: oh, this is funny? i'm being funny? \n\nelaine: yeah. \n\njerry: george, is this funny? \n\ngeorge: it's funny! (to elaine) and it wouldn't kill you to not be so funny either. \n\nelaine: what? what did i do? \n\ngeorge: hi. \n\njerry: (subdued, almost somber) hello. welcome back. \n\ncheryl: sorry, it was my aunt's birthday and she makes such a big deal about it. \n\nelaine: well, nobody likes to get old, right? \n\njerry: well, birthdays are merely symbolic of how another year has gone by and how little we've grown. no matter how desperate we are that someday a better self will emerge, with each flicker of the candles on the cake, we know it's not to be, that for the rest of our sad, wretched pathetic lives, this is who we are to the bitter end. inevitably, irrevocably; happy birthday? no such thing. \n\ngeorge: funny guy, huh? \n\nelaine: here, take it. i was glad to get rid of it. \n\njerry: well thank you very much, it's about time. \n\nelaine: oh listen, guess what? cheryl convinced ping to drop the case against me. \n\njerry: drop the case? well, congratulations, that'll save you some money. \n\nelaine: yeah, no kidding. that lawyer was gonna charge me a fortune. \n\njerry: (leafing through his mail) oh great, a birth announcement from arnie and joy harris. \n\njerry: hear that? guess who's back. (opening the door) hey! \n\nkramer: hey. \n\njerry: i thought you weren't coming back till monday. \n\nkramer: well, the camp ended a few days early. \n\njerry: why? \n\nkramer: uh, well there was an incident. \n\njerry: what happened? \n\nkramer: i punched mickey mantle in the mouth. \n\njerry: what? \n\nkramer: yeah, i punched him and they took him to the hospital and then they canceled the rest of the week. \n\nelaine: you punched who in the mouth? \n\nkramer: mickey mantle. \n\njerry: what happened? \n\nkramer: well, you know, we were playing a game and, you know, i was pitching, and i was really throwing some smoke. and joe pepitone, he was up, and man that guy, you know, he was crowding the plate. \n\njerry: wow! joe pepitone! \n\nkramer: yeah, well, joe pepitone or not, i own the inside of that plate. so i throw one, you know, inside, you know, a little chin music, put him right on his pants. cause i gotta intimidate when i'm on the mound. well the next pitch, he's right back in the same place. so, i had to plunk him. \n\njerry: you plunked him. \n\nkramer: oh yeah. well, he throws down his bat, he comes racing up to the mound. next thing, both benches are cleared, you know? a brouhaha breaks out between the guys in the camp, you know, and the old yankee players, and as i'm trying to get moose skowron off of one of my teammates, you know, somebody pulls me from behind, you know, and i turned around and i popped him. i looked down, and woah man, it's mickey. i punched his lights out. \n\njerry: wow, this is incredible! \n\nbabu: leave me alone! you can't do this to me! \n\njerry: what's going on out there? \n\nbabu: what are you doing? this is not right, people. you're making a very bad mistake, very bad. \n\njerry: babu? (leaving) i'll be right back. \n\nelaine: (to kramer) yeah, so? \n\nkramer: then hank bauer, you know, he's screaming, \"mickey! mickey! what have you done with mickey? you killed mickey!\" \n\nelaine: so what'd you do? \n\nkramer: well, i got the hell out of there. \n\nelaine: they took babu away?! \n\njerry: yeah, the immigration guy said his visa was expired. poor babu, everything was going so well for him. he had an apartment, he had a job. what a shame. \n\njerry: i will, babu! i will help you, babu, don't worry! \n\nkramer: then hank bauer, you know, he's chasing me around, he trips over third base and knocks over clete boyer. \n\njerry: (thumbing through his mail) uh oh. \n\nelaine: what? \n\njerry: well this is interesting. \n\nelaine: what is it? \n\njerry: it's a letter from the immigration bureau, it's babu's visa renewal application form. they must have put it in my mailbox by mistake. \n\nkramer: well, doesn't he need that? \n\njerry: if you had given me my mail last week when i got home, this whole thing never would have happened. \n\nelaine: well, you should have come to my house to pick it up. \n\njerry: yeah, so am i being funny now? \n\nelaine: no, actually, you're not being funny now. \n\njerry: see, i told you i wasn't funny all the time. (george enters) hey george, look, i'm not funny now. \n\ngeorge: no, and you weren't funny last night either. in fact, you got us both so depressed, she asked me to drive her home after dinner. \n\njerry: oh look, i need to get in touch with cheryl. babu needs a lawyer, his visa's expired. \n\ngeorge: what do you need her for? there's a million lawyers. \n\njerry: yeah, but you said this is one of the things that her firm does. \n\ngeorge: alright, alright, but no funny business, same deal as last night. \n\njerry: ah, will you stop it already? \n\ngeorge: jerry, please? \n\njerry: how long is this gonna go on? \n\ngeorge: till i'm comfortable. \n\njerry: well, when is that gonna be? \n\ngeorge: after consummation. \n\njerry: consummation? i don't think you have enough material. \n\ncheryl: i actually have a friend in the immigration department who owes me a big favor. you're very lucky. \n\njerry: (somber) that's wonderful news. thank you. \n\ncheryl: you're a very serious person, aren't you? \n\njerry: well, with so many people in the world deprived and unhappy, it doesn't seem like it would be fair to be cheerful. \n\ncheryl: i understand. \n\ncheryl: i think it's curdled. \n\njerry: i don't care. \n\ncheryl: do you ever laugh? \n\njerry: not really. sometimes, when i'm in the tub. \n\ncheryl: that's so sad. what do you do? \n\njerry: i'm a comedian. oh, let me get that. (reaching for the check) you've been so helpful. \n\nelaine: (entering as jerry heads to the register) hey, we're gonna go see babu now, right? \n\njerry: yeah, i'll just pay for this. \n\nelaine: oh, i'm just gonna go say hi to cheryl. (walking over to the booth) hi. \n\ncheryl: hi. \n\nelaine: listen, gosh, i wanted to thank you so much for convincing ping to drop the case. \n\ncheryl: well, after we met, you were all so nice. i just couldn't go through with it. but between you and me, you would have paid through the nose. \n\njerry: babu! \n\nbabu: jerry! jerry, hello jerry! \n\njerry: you remember elaine. \n\nbabu: yes, yes of course! \n\nelaine: nice to meet you. \n\nbabu: so nice of you both to come. \n\njerry: oh, babu. \n\nbabu: no no, you're both very kind, very kind. \n\nelaine: we try. \n\njerry: we do what we can. \n\nelaine: we do what we can. \n\nbabu: the problem is i never got my visa renewal form in the mail. i was expecting it. \n\njerry: yes, well, see, here's the thing, babu. um, what happened was i was away for a couple of weeks doing some comedy shows. \n\nbabu: comedy shows! you're a very funny man. \n\njerry: well, elaine here was picking up my mail while i was away, because you know that little box can get very full. \n\nbabu: oh yes, of course. tv guide, magazines, everything. you know, i would have picked up your mail, your box is right next to mine. \n\njerry: oh, i don't want to bother you. \n\nbabu: no bother! you get me job, you get me apartment, you very very good man. \n\njerry: so yesterday, after they took you away, i looked in my mail and i noticed that the mailman accidentally put your visa renewal in my mail box. \n\nbabu: come again? \n\njerry: you see, i've been home for a week and elaine didn't give me my mail until yesterday, even though i asked her repeatedly for it. \n\nelaine: yeah, but babu, he could have come to my house to pick it up. \n\nbabu: you had my visa application?! \n\njerry: well not technically. \n\nbabu: (extremely and suddenly agitated) i kill you!! \n\njerry: well what about her? \n\nbabu: i kill both of you!! \n\njerry: babu?! \n\nbabu: no babu! no babu! you bad man! you very bad man! you very lazy bad man! \n\njerry: babu, i'm gonna fix everything! i have a lawyer who knows someone in the immigration department, they're gonna straighten the whole thing out, the wheels are in motion, things are happening even as we speak! \n\nbabu: the wheels are in motion? \n\njerry: the wheels are in motion, things are happening! \n\ngeorge: jerry? \n\ncheryl: i'm very attracted to him. \n\ngeorge: you think the person you were talking to is him? that's not even close to him. he's funny, jerry's funny. \n\ncheryl: he never said anything funny. \n\ngeorge: he can't not be funny. \n\ncheryl: no no no, he's dark. and disturbed. \n\ngeorge: dark and disturbed? his whole life revolves around superman and cereal. i convinced him to act like that so that you would think i was funnier. that's how disturbed i am! if you want disturbed, that's disturbed. you can't find sickness like that anywhere, you think sickness like that grows on trees? nobody is sicker than me, nobody. he's pretending, i'm the genuine article. \n\ncheryl: so you're telling me jerry's whole thing was an act? \n\ngeorge: yes! and i put him up to it, because i'm sick! i'm the one that needs help. \n\ncheryl: i gotta go. \n\ngeorge: well, should i call you later? \n\ncheryl: please don't. \n\ngeorge: but, but i'm disturbed! i'm depressed! i'm inadequate! i got it all!! \n\nelaine: so, what's up with babu? how come he's not back? \n\njerry: i don't know, i don't understand it. cheryl was supposed to take care \n\ngeorge: it's george. \n\njerry: c'mon up. \n\njerry: babu must be back. \n\nbabu's brother: babu, my goodness, what has happened to you? \n\njerry: where's babu? \n\nbabu's brother: he is in pakistan! \n\njerry: who are you? \n\nbabu's brother: i am his brother. he knew a lawyer, it was all going to be fixed. \n\njerry: i'm sure the lawyer did everything they could. \n\nbabu's brother: then where is babu? what happened to babu? show me babu! \n\nelaine: (offering a drink) snapple? \n\nbabu's brother: no, too fruity. \n\njerry: hey, what happened? i thought cheryl was gonna help babu get his visa. \n\ngeorge: she didn't help him? \n\njerry: no. \n\ngeorge: where is he? \n\njerry: he's in pakistan. \n\ngeorge: oh boy. \n\njerry: what do you mean, oh boy? \n\ngeorge: well, last night she told me that she liked you. not you, the disturbed you, so i had to tell her the truth. \n\njerry: told her the truth? well, you got babu deported. \n\ngeorge: what do you mean, i got? you didn't give him his visa application. \n\njerry: that's because she had my mail. \n\nelaine: yeah, well i wouldn't have had to get your mail if he hadn't gone to that fantasy camp. \n\nkramer: well, i just came back from mickey mantle's restaurant. \n\njerry: how could you go in there? \n\nkramer: well, i had to. i had to apologize. i mean, i punched mickey mantle, my idol. it was eating me up inside! \n\njerry: well, what happened? \n\nkramer: i got down in my knees and went, \"go ahead, mickey. hit me. i'm begging you, mickey, please hit me. c'mon, hit me. i love you, mickey, i love you!\" \n\nelaine: so, what did he do? \n\nkramer: well, the four of them, they picked me up by my pants and they threw me outside, right into a horse. \n\nvoice: kramer? \n\nkramer: yeah? it's my chinese food. \n\nelaine: oh! ping! hi! listen, thank you so much for dropping that lawsuit against me. \n\nping: not anymore. \n\nelaine: what? \n\nping: cheryl call me last night, lawsuit back on. \n\nelaine: why? \n\nping: she call you and your friends big liars. you think she nice girl? wait till you see her in court. she's a shark! they call her the terminator. she never lose a case. now you make her mad. she double the damages. hasta la vista, baby. \n\nbabu: so his friend got the mail but she did not give it to him. and then he came to visit me. said the lawyer was called to help, he said the wheels were in motion, but there was no motion. there was nothing. and so they sent me back here. \n\nbabu's friend: this is a terrible story, babu. what are you going to do? \n\nbabu: i'm going to save up every rupee. someday, i will get back to america, and when i do i will exact vengeance on this man. i cannot forget him. he haunts me. he is a very bad man. he is a very very bad man. \n\ngeorge (writing on a notepad): wait a second, wait a second...and then the butler says, \"i'm not cleanin' it up! i'm sick of cleaning!\" \n\njerry (copying it down and grinning): that's funny, that's funny! \"i'm sick of cleaning.\" that's very funny. \n\ngeorge (laughing): i'll tell you something, i've never seen a pilot script as funny as this! \n\njerry: yeah, it's funny! \n\ngeorge: i mean, how funny is this? \n\njerry (low voice): it's funny. \n\ngeorge: i mean, we're not stupid, right? we know when something's funny! \n\njerry: it cannot not be funny! now come on, let's stay with it, we gotta finish this today. \n\ngeorge: okay. hey, you know what, maybe i should give it to my therapist to read. she's smart, i trust her. \n\njerry: yeah, maybe i'll give it to elaine. \n\ngeorge: hey, you know, we haven't brought the elaine character into the show yet. umm, we should try and get her into this scene. \n\njerry: right, right. okay. (writing) elaine enters. \n\ngeorge: right \n\njerry: (thinks) what does she say...? \n\ngeorge (thinking): i don't know, what do women say? \n\njerry: i don't know. \n\ngeorge: i don't even know what they think. that's why i'm in therapy. \n\njerry: you know, if we bring elaine in, it's going to be so many people to keep track of. it's gonna be too hard, i'll forget where everybody's standing, you, me, kramer, the butler, it's too much. \n\ngeorge: alright, forget elaine. \n\njerry: alright. (they tear the pages out of their notepads. kramer enters.) \n\nkramer: hey. \n\ngeorge: hey. \n\njerry: hey. \n\nkramer (to jerry): you are never gonna believe who i just ran into today. \n\njerry: who? \n\nkramer: your old flame. gail cunningham. \n\njerry: did you talk to her? \n\nkramer: well, i was on my way to the y, and i saw her coming towards me? i didn't know what to do! because i remembered you had three dates with her and she wouldn't kiss you goodnight. so now i'm thinking you know, what is my duty to my friend? do i acknowledge her? do i you know ignore her? i mean, what is my responsibility here? \n\njerry: so what happened? \n\nkramer: yeah, yeah, so she sees me and she goes, (imitates gail) \"oh, hi! kramer!\" you know? like nothing happened! like she never you know went three dates with you and refused to kiss you goodnight. \n\njerry: yeah, i know about the three dates. \n\nkramer: you know what i did? i snubbed her. \n\njerry: what do you mean, you snubbed her? \n\nkramer: i walked right by her - bffffft - never said a word. \n\njerry (smiling): right by her? \n\nkramer: right by her! \n\njerry (to george, hugs kramer happily): what you do say about a guy like this, huh! (george applauds.) you are some great friend, i tell ya, snubbed her! (seriously) not that i condone it. i've never condoned snubbing in my administration. but your loyalty is beyond question. \n\nkramer: yeah. well, you know, she was lucky i was in a good mood - coulda been a lot worse. \n\nelaine (throws the script at jerry): i'm not even in here! \n\njerry: yeah, i know. \n\nelaine: well, i thought there was going to be a character named elaine benes. \n\njerry: well, there were too many people in the room, we couldn't keep track of everybody. george, and the butler, and... \n\nelaine: you couldn't \"keep track\" of everybody? \n\njerry: well, we tried. we couldn't. we didn't know how to, uh...(confessing) ...we couldn't write for a woman. we didn't know what you would say. even right now, i'm sitting here, i know you're going to say something, i have no idea what it is. \n\nelaine: you have no idea? \n\njerry: something derogatory? (gail enters the coffee shop and walks over to the booth.) \n\ngail (to jerry): i thought i'd find you here. \n\njerry: well, gail cunningham. \n\nelaine: hi, gail. \n\ngail: hi, elaine. (to jerry) hey, what is with your friend kramer? \n\njerry: why? \n\ngail: he snubbed me. \n\njerry: are you sure? \n\ngail: yeah, i'm sure. what did you tell him? \n\njerry: nothing. (elaine grabs jerry's sandwich and is about to take a bite.) hey, where you goin' with that? gimme that. (takes back the sandwich.) \n\nelaine: i thought you were finished. \n\njerry: i took two bites, how am i finished? (elaine coughs.) plus you're coming down with something? you want me to get sick? (offers gail the sandwich) bite? \n\ngail: so, how come? why did kramer do that? \n\njerry: i don't know. once he leaves the building, he's out of my jurisdiction. \n\ngail: well, tell him that i am mad at him. \n\njerry: alright. so, where ya cookin' now? \n\ngail: pfeiffer's. \n\njerry: ah, the power lunch crowd. \n\ngail (to elaine): nice shoes! \n\nelaine: oh. thank you. \n\ngail: where'd you get 'em? \n\nelaine (modest): they're um, botticelli's. \n\ngail (impressed): ooh, botticelli's! look at you! i'm afraid to go in there. \n\nelaine: really. \n\njerry: would you care to join us? \n\ngail: no, no, i gotta get to the restaurant. (looks at her watch.) oh! see ya. (exits.) \n\njerry: see ya. \n\nelaine (irritated, imitates gail): \"oh, look at you, the botticelli's.\" \n\njerry: that bothered you? \n\nelaine: yes, it bothered me. so i bought a pair of shoes at botticelli's, i'm not allowed to shop there? that really embarrassed me. \n\njerry: it did? \n\nelaine: yes! couldn't you see that? \n\njerry (thinks): no. this is why you're not in the pilot. \n\ndana: well, george, i think you're beginning to get some perspective on things. i think we're making progress. \n\ngeorge: yeah, i feel like i've grown. \n\ndana: good. so, let's pick up on this next week. \n\ngeorge: great. (they both stand.) oh, by the way, did you get a chance to read the script? \n\ndana: yes, yes i did. \n\ngeorge (beaming): well, what'd you think? \n\ndana (unenthusiastic): uh...it was...good. \n\ngeorge: you didn't like it? \n\ndana: well, no, i - \n\ngeorge: i can't believe this! what was wrong with it? what didn't you like about it? \n\ndana: it wasn't funny. \n\ngeorge: it wasn't funny? what, are you kidding? \n\ndana: no, i didn't find it funny. \n\ngeorge: you didn't find it funny?! this is what i'm paying for? \n\ndana: well, that whole storyline about a guy who gets into a car accident, doesn't have any insurance, so the judge sentences him to be a butler? i didn't really buy that. \n\ngeorge: let me tell you who did, uh, buy it...um we pitched this story to russell dalrymple, the president of nbc, and he ate it up with a spoon. \n\ndana: george, if you're going to be in a creative field, you're going to have to learn how to deal with criticism. \n\ngeorge: how's this for criticism? um...you stink. how do like that criticism? you know what's funny to me? that diploma up on the wall. that is my idea of \"com-med-dee\"! you sitting here, telling people what to do. \n\ndana: i think you'd better go. \n\ngeorge: oh, i'm goin' baby. i'm goin.' (heads for the door, then stops.) it's jerry's fault. he took out all my good lines. he's such a control freak! \n\ngeorge (immediately, to elaine): so, you send me to this therapist to help me with my emotional disorders, and she criticizes our script. (tosses the script to jerry.) what kind of a therapist is that? \n\nelaine: i guess she didn't think it was funny. \n\ngeorge: oh, she didn't think it was funny. what is she, rowan & martin? we're supposed to meet with nbc tomorrow! she completely shattered my confidence. and i'm paying for this, she's my employee! \n\njerry: i thought your mother's paying for it. \n\ngeorge: and she slaves to earn every penny. so that someday, i might be able to walk up to a woman and say, \"yes, i'm bald, but i'm still a good person.\" \n\njerry (to elaine): you know, he's right. it's not her place to criticize the script, which reminds me - what did you think of it? you never told me. \n\nelaine: what did i think of it? (manufactures a cough instead of answering. kramer enters.) \n\nkramer (to jerry): hey, buddy, i got something to tell ya. (elaine runs towards to the bathroom in lieu of answering jerry's question.) \n\njerry (catches elaine): hey, one second, you don't get off that easy. c'mon, tell me what you thought. \n\nelaine: well, you know, i... \n\nkramer: i just kissed gail cunningham. (jerry turns and looks at kramer, shocked. elaine grins and heads to the bathroom.) \n\njerry: you what? \n\nkramer: yeah, i kissed her. \n\njerry: you kissed her? \n\nkramer: right on the mouth. \n\njerry: what kinda great friend are you? how do you go from snubbing to kissing? \n\nkramer: well, i saw her outside the y, you know, she came up to me, she started yelling because i snubbed her, and then we started talking a little bit, and i walked her to her building. and just before i left, i put my arm around her waist, i pulled her to me, and i - mmm - i planted one! (laughs.) \n\njerry: and what did she do? \n\nkramer: she kissed me back. \n\njerry: i don't get this. i go out with this girl three times, she doesn't want to shake my hand - why's she kissing you? \n\nkramer (realizing): because i snubbed her. you see? women, they like that! yes! i understand women. the snub is good, they love the snub! \n\ngeorge: no they don't. i tried that once. i snubbed for a year. nothing. every woman i saw, i snubbed. you never saw people so pleased. (elaine returns from the bathroom.) \n\nkramer (to elaine): ooh, so...i understand you're buying your shoes now at botticelli's. \n\nelaine: what? who told you that? \n\nkramer: gail cunningham. \n\nelaine: i don't understand, why is this woman talking about my shoes? why are my shoes a topic of conversation? \n\nkramer: well, you know, we were just talking, and uh she mentioned how you're buying your shoes now at botticelli's. \n\nelaine (angrily): \"how i'm buying my shoes now at botticelli's!\" did you hear this? (shoves jerry and kramer.) \n\njerry: so what? \n\nelaine: so what?! she is talking about my shoes! she is discussing my shoes! it is nobody's business where i buy my shoes! (storms over to the couch and angrily sits down. jerry, kramer and george look at elaine from the kitchen, comically puzzled by her outburst...) \n\nelaine: hey! gail! \n\ngail: ya. (noticing it's elaine) elaine...! \n\nelaine: why are you talking about my shoes? \n\ngail: what? \n\nelaine: my botticelli shoes. you've been talking about my botticelli shoes. \n\ngail: what are you talking about? \n\nelaine: did you or did you not tell kramer that i got my shoes at botticelli's? (a waiter comes over and puts a plate of food on gail's cutting board.) \n\nwaiter: too spicy. he wants another one. you got that pasta primavera? \n\ngail: look elaine, i am very busy here. \n\nelaine: who else have you mentioned my shoes to, huh? i wanna know why my footwear is your conversation! \n\ngail: i am not discussing this. this is insane. \n\nwaiter: you got that pasta primavera? let's go! \n\ngail: ya ya ya, here. \n\nwaiter: here you are, mr. dalrymple. \n\nrussell: thank you. \n\nwaiter: sorry for the delay. enjoy your lunch. \n\nrussell (opening the door): well, come in. (they shake hands.) \n\njerry & george: hi. \n\nrussell: awfully sorry to make you come up here, but i really wasn't feeling well enough to go back to the office, and well, it's the only chance i have to meet with you this week. \n\njerry: are you alright? \n\nrussell: well, it's my stomach. i think there must have been something in the pasta primavera i had for lunch. \n\njerry: oh, where did you eat? \n\nrussell: pfeiffer's. \n\njerry: ah. i know the chef there. \n\nrussell: yeah. the food's usually terrific. \n\ngeorge: my cousin worked for bouchard's. they used to use the bouilla-base for a toilet. (jerry and russell are shocked.) \n\nrussell: what are you saying? \n\ngeorge: well, you didn't hear it from me, but needless to say, if you go in there - stick with the consumee. \n\nrussell: well, we'd better get started, my daughter's going to be here soon. \n\njerry: oh, you have a daughter? \n\nrussell: yeah, she just turned fifteen last week. \n\ngeorge: aw, that's a fun age. (jerry looks at george distastefully.) \n\nrussell: alright. the script. now, i've read this thing three times...and everytime i read it...(looks nauseous, struggles not to vomit.) \n\njerry: what? \n\nrussell: excuse me for a second. (gets up and runs to the bathroom.) \n\njerry: what? \n\ngeorge: would you like a pepto-bismol? i keep them in my wallet...! (russell goes into the bathroom and shuts the door.) (to jerry) do you think he liked it? (from the bathroom, we hear russell violently heaving his guts.) \n\njerry: i'm not sure. (the sounds of russell vomiting emanate from the bathroom. jerry and george sit there uncomfortably.) what was that dish he said he had...? \n\ngeorge: pasta primavera. \n\njerry: ah. you know, 'primavera' is italian for 'spring.' \n\ngeorge: no! \n\njerry: yeah. \n\nrussell (coming out of the bathroom): really, i'm terribly sorry, it just, uh...all of a sudden it just hit me. \n\ngeorge: so, you were saying how, um...about the script... \n\nrussell: right. the script. your script needs some...it needs, um...(looks nauseous again. gets up and runs to the bathroom a second time.) \n\ngeorge: more jokes? \n\njerry: another ending? \n\ngeorge: a different name for the butler? (russell throws up again.) \n\njerry: maybe we should go. \n\ngeorge: we haven't heard his notes yet, we don't know how he feels about our work. (russell throws up yet again.) \n\nrussell (from bathroom): oh god. oh my god. \n\njerry: i can't listen to anymore of this, the guy's losing a lung in there. (russell's daughter molly enters.) \n\nmolly: hello. \n\njerry: hi. \n\ngeorge: hi. \n\nmolly: i'm molly. \n\njerry: oh, i'm jerry. \n\ngeorge: george. \n\njerry: we're here discussing our script with your father. \n\ngeorge: he just read it. (russell vomits again. jerry and george look ashamed.) \n\nmolly: daddy? are you okay? \n\nrussell (from bathroom): yeah, yeah sweetie. i'm fine. (molly sits on the back of the chair.) \n\ngeorge: so, you live with your mother, huh? \n\nmolly: uh, yeah. \n\ngeorge (to jerry): divorce is very difficult. especially on a kid. \n\njerry: uh huh. \n\ngeorge: of course, i'm the result of my parents having stayed together, so you never know. (russell comes out of the bathroom.) \n\nmolly: daddy, are you alright? what's the matter? \n\nrussell: it's just a stomach thing. \n\nmolly: yuck. \n\nrussell (to jerry and george): we're going to have to do this some other time, so if you'll give me your number, i'll call you later. (jerry and george nod. molly takes her jacket off.) \n\ngeorge: you know, suddenly i'm in the mood for pasta primavera myself. (jerry nudges george to sneak a peek at molly's cleavage as she bends over and looks in her backpack. jerry has a quick look, but george stares, hypnotized. russell comes up behind george.) \n\nrussell (angrily): get a good look, costanza? \n\njerry: what were you doing? \n\ngeorge: well, it's not my fault. you poked me! \n\njerry: you're supposed to just take a peek after a poke. you were like you just put a quarter into one of those big metal things on top of the empire state building. \n\ngeorge: it's cleavage. i couldn't look away. what am i, waiting to win an oscar here? this is all i have in my life. \n\njerry: looking at cleavage is like looking at the sun, you don't stare at it. it's too risky. you get a sense of it and then you look away. \n\ngeorge: all right. so, he caught me in a cleavage peek, so big deal. who wouldn't look at his daughter's cleavage? she's got nice cleavage. \n\njerry: that's why i poked. \n\ngeorge: that's why i peeked. (jerry opens the door to take some trash out, and meets kramer and gail in the hallway.) \n\ngail: hey! what is with your friend elaine? \n\njerry: what? \n\ngail: she comes to my restaurant, comes right in my kitchen, and starts complaining that i'm talking about her shoes. \n\njerry: she did? \n\nkramer: right in the kitchen. disgraceful. \n\ngail: so, i don't want people coming into my kitchen. i think she might have sneezed all over someone's pasta primavera. someone might have gotten sick because of her. (kramer and gail exit.) \n\ngeorge: pasta primavera? \n\njerry: is that what she said? (kramer pokes his head back in the door.) \n\nkramer (to jerry): she's somethin', huh? she's a wild one. she's wearin' me out. \n\njerry: she is? \n\nkramer: she's sensual. you know, with the...cooking and all. (kramer grins happily at jerry and leaves. the phone rings. jerry tosses the trashbag to george.) \n\njerry: hello? oh, hi stu. \n\ngeorge (lazily swinging the garbage bag around): from nbc? \n\njerry: (to george) yeah. (oh the phone) what's goin' on? what? really? oh my god....did he give you a reason?...oh boy. okay. alright. thanks. (hangs up.) dalrymple just cancelled the pilot. (george drops the bag, shocked.) \n\njerry (to elaine): if you hadn't gone into her restaurant, this never would have happened. \n\nelaine: look, i don't like people talking about my shoes behind my back, okay? my shoes are my business. the two of you shouldn't have been looking at some fifteen year-old's cleavage anyway! \n\ngeorge: he poked me! \n\njerry: there was cleavage in the area. that's a reflex - (mimics nudging someone with an elbow) - cleavage-poke, cleavage-poke... \n\nelaine: but she was fifteen. \n\njerry: you don't consider age in the face of cleavage. this occurs on a molecular level, you can't control it! we're like some kind of weird fish where the eyes operate independently of the head. \n\ngeorge: alright, what's the difference. what are we gonna do now? he won't take our calls, we can't get into his office... \n\njerry: you know what we could do? he eats at that restaurant, pfeiffer's? we could have gail call us, tell us the next time he's there, go there and talk to him. \n\ngeorge: hey, now you're onto something. \n\njerry: the whole thing is so stupid. like he wouldn't do the same thing if elaine walked by in a low-cut dress. \n\ngeorge: yeah. well, maybe not elaine. \n\njerry: no. \n\ngeorge: but...somebody like gail, though. \n\njerry: ya. \n\nelaine: what? what do you mean, gail? (kramer enters.) \n\nkramer: yah-hey. \n\njerry: kramer, listen, i want you to ask gail to do me a favor. the next time russell dalrymple comes in the restaurant, ask her if she would call me. \n\nkramer: alright, i'll call her right now. \n\njerry: ok. (kramer goes back to his apartment.) \n\nelaine (to george): what do you mean, gail? you don't think i can attract attention? you don't think i can put asses in the seats? \n\njerry: look, sweetheart, you know you've got it all. but let's face it... (kramer comes back.) \n\nkramer: she said she'll do it. \n\ngeorge: beautiful. \n\njerry: beautiful. \n\nkramer (points at elaine's feet): but she wants the shoes. \n\nelaine: what? \n\nkramer: she says she wants those shoes. \n\nelaine: she wants my shoes? what kind of person is this? alright! she is not getting 'em! \n\njerry: no, come on! i'll buy you another pair! \n\nelaine: no, these were the last pair of these that they had! \n\njerry: i'll get you another one just like it! \n\nelaine: no, but these were the only really cool ones like this! don't you see how everybody likes 'em and how everybody talks about 'em? (jerry, realizing elaine's motivation, sits at the counter unbelievingly.) \n\ngeorge (to elaine, in a somber tone): elaine, this pilot...it doesn't matter to me, it's not me i'm concerned about...it's my mother. i've been over to the hospital to see her... \n\nelaine: oh yeah, because she caught you jer - \n\ngeorge: never mind! \n\nelaine: oh, come on, wait a second, this whole thing is ridiculous. how do i even know she wears the same size? \n\nkramer: alright, what size are you? \n\nelaine: seven-and-a-half. \n\nkramer: eh! bingo. \n\ngail (hands a plate to another chef): sauce this. (goes to the telephone and dials.) yeah, he's here. oh, and one more thing...bring the shoes. (hangs up.) \n\njerry: hey! whattaya know! \n\ngeorge: look who's here! \n\njerry: fancy meeting you here! \n\nrussell: oh. hello. \n\ngeorge (notices russell's lunch): pasta primavera! back on the horse. \n\njerry: you know, it's a funny thing, because after the pilot got cancelled, we hadn't heard from you. \n\ngeorge: didn't hear anything... \n\njerry: didn't know...we were wondering...what happened. \n\nrussell: well, it just didn't seem to be the right project for us right now. (elaine walks by in a low-cut dress. jerry and george look at her as she moves to the table opposite russell.) so, what were you saying? \n\ngeorge: oh...uh, because if it had anything at all to do with what you perceived as me leering at your daughter, i really have to take issue with that. i did not leer. (to jerry) did i leer? \n\njerry: no leer. (elaine comes over to russell's table.) \n\nelaine (to russell): uh, excuse me, are you using that ketchup? \n\nrussell (not noticing elaine's cleavage): uh, no. (elaine takes the ketchup and goes back to her table.) \n\ngeorge: because, if i'm looking straight ahead, and something enters my field of vision, that's merely a happenstance. (elaine loudly snaps and unfolds her napkin at the next table to get russell's attention.) \n\nrussell: under the circumstances, i don't really feel that we should be in business together. (elaine comes back over.) \n\nelaine: here's your ketchup back. you know, i had the hardest time trying to get some out. i mean, i just kept pounding and pounding on the bottom of it. do you have any trouble? \n\nrussell (still not noticing elaine's cleavage): no. \n\nelaine (leaning forward): do you have a...ketchup secret? \n\nrussell: no, i... (finally notices elaine)...don't have a ketchup secret. (smiles.) \n\nelaine (flirtatiously): because if you do have a ketchup secret, i would really, really like to know what it is. (russell is pleased, and smiles at elaine. elaine goes back to her table, sits down, and waves at russell.) \n\nrussell (to jerry and george, reconsidering about the pilot): field of vision, huh? \n\ngail: how's everything? \n\nelaine: mmmm. \n\njerry: really good. \n\ngeorge: this pasta primavera is fabulous. \n\njerry: very tasty. \n\ngail: how'd everything go with that nbc guy? \n\ngeorge: great. \n\njerry: the pilot's back on. in fact, elaine's going out with him tomorrow night. (gail nods and walks away.) listen, elaine, you know if russell mentions anything about the pilot, you'll of course tell him how much you liked it...? \n\nelaine: you know, i happen to have the script right here with me and, uh...on page 3, for example, suppose the elaine character comes in wearing a...a low-cut dress. and the butler is very distracted, and can't work. \n\njerry: uh...that kind of comedy, that's a little broad for us. \n\nelaine: well, i'm sure it's right up russell's alley. \n\ngeorge: well, it's a funny idea. \n\njerry: it's funny! \n\ngeorge: c'mon, funny is funny. \n\njerry: funny is funny, we're here to entertain, right? \n\nelaine: alright, well, maybe i'll mention it to russell tomorrow night. \n\njerry: if you can. \n\ngeorge: yeah. where's he taking you, by the way? \n\nelaine: bouchard's, on 53rd. (george starts choking on his wine, and attempts to tell elaine something.) \n\njerry: i think what he's trying to say is, \"get the bouilla-base.\" (george nods 'yes' and continues to choke.) \n\nallison: i don't want to *live*! i don't want to *live*! \n\ngeorge: because of me? you must be joking! who wouldn't want to live because of me? i'm nothing! \n\nallison: no... you're *something*. \n\ngeorge: you can do better than me. you could throw a dart out the window and hit someone better than me. i'm no good! \n\nallison: you're good. you're *good*! \n\ngeorge: i'm bad. i'm *bad*! \n\nallison: you're *killing* me! \n\ngeorge: so what could i do? i couldn't go through with it. she threatened to kill herself. \n\nelaine: over you? \n\ngeorge: yes. why, is that so inconceivable? \n\ngeorge: i got two tickets to see \"guys and dolls\". \n\nelaine: i got him a two-line phone. \n\njerry: unbelievable! she's not there. \n\ngeorge: what paper does she write for? \n\njerry: the works for the nyu school newspaper. she's a grad student in journalism. never been to a comedy club. never even seen me, has no idea who i am. \n\nelaine: never even seen you? gotta kinda envy that... \n\njerry: y'know, you've been developing quite the acid-tongue lately... \n\nelaine: [proudly] really? \n\nelaine: hey, who do you think is the most unattractive world leader? \n\njerry: living or all time? \n\nelaine: all time. \n\njerry: well, if it's all time, then there's no contest. it begins and ends with brezhnev. \n\nelaine: i dunno. you ever get a good look at degaulle? \n\ngeorge: lyndon johnson was uglier than degaulle. \n\nelaine: i got news for you. golda meir could make 'em all run up a tree. \n\nelaine: y'know, just because you two are homosexuals, so what? i mean you should just come out of the closet and be openly gay already. \n\ngeorge: so, whaddya say? you know you'll always be the only man i'll ever love. \n\njerry: [indignantly] what's the matter with you? \n\ngeorge: [quietly] c'mon, go along... \n\njerry: i'm not goin' along. i can just see you in berlin in 1939 goose- stepping past me \"c'mon jerry, go along, go along...\" \n\njerry: y'know i hear that all the time. \n\nelaine: hear what? \n\njerry: that i'm gay. people think i'm gay. \n\nelaine: yeah, you know people ask me that about you, too. \n\njerry: yeah, 'cuz i'm single, i'm thin and i'm neat. \n\nelaine: and you get along well with women. \n\ngeorge: i guess that leaves me in the clear... \n\ngeorge: i just thought of a great name for myself, if i ever become a porno actor. \n\njerry: oh yeah, what? \"buck naked\"? \n\ngeorge: yeah, how did you know that? \n\njerry: you told me that already like two months ago. \n\ngeorge: allison bought it for me. \n\njerry: how you gonna get out of *that* one? \n\ngeorge: i dunno. i guess i have to wait for her to die. \n\njerry: he's gonna hang around if that's alright with you? \n\nsharon: sure, i'd like to talk to him, too. \n\ngeorge: jerry did you wash this pear? \n\njerry: yeah, i washed it. \n\ngeorge: it looks like it hasn't been washed. \n\njerry: so *wash* *it*. \n\ngeorge: you hear the way he talks to me? \n\nsharon: you should hear how *my* boyfriend talks to me... \n\ngeorge: let me ask you something. what do you think of this shirt? \n\nsharon: it's nice. \n\ngeorge: jerry said he didn't like it. \n\njerry: i didn't say i didn't like it. i said it was o.k... \n\ngeorge: no, you said you didn't like it... \n\njerry: oh, so what if i don't like it. is that like the end of the world, or something? \n\nsharon: so how did you two meet? \n\njerry: actually, we met in the gym locker room. \n\ngeorge: yeah. actually it was in gym class. i was trying to climb the ropes and jerry was spotting me. i kept slipping and burning my thighs and then finally i slipped and fell on jerry's head. we've been close ever since. \n\n(george takes a hold of jerry's leg to stress the point and sharon, who obviously thinks she has a real story here now, asks another question: ) \n\nsharon: do you guys live together? \n\njerry: [quizzically] live together? \n\ngeorge: no, i got my own place. \n\n(jerry is about *this* close (picture my thumb and forefinger *really* close together) to figuring out what is going on here, when the \"question fatale\" is asked: ) \n\nsharon: and do your parents know? \n\njerry: know *what*? \n\ngeorge: my parents? they don't know *what's* goin' on... \n\njerry: oh god, you're that girl in the coffee shop that was eavesdropping on us. i *knew* you looked familiar! \n\njerry: there's been a big misunderstanding here! we did that whole thing for your benefit. we knew you were eavesdropping. that's why my friend said all that. it was on purpose! we're not gay! not that there's anything wrong with that... \n\ngeorge: no, of course not... \n\njerry: i mean that's fine if that's who you are... \n\ngeorge: absolutely... \n\njerry: i mean i have many gay friends... \n\ngeorge: my *father* is gay... \n\nsharon: look, i know what i heard. \n\njerry: it was a *joke*... \n\ngeorge: look, you wanna have sex right now? do want to have sex with me right now? let's go! c'mon, let's go baby! c'mon! \n\n(not that that approach was going to work, or anything, but what minute chance they had of convincing her is blown away as the door bursts open and: ) \n\nkramer: hey, c'mon! let's go! i thought we were going to take a steam! \n\ngeorge: no! \n\njerry: no steam! \n\nkramer: well i don't want to sit there naked all by myself! \n\nkramer: happy birthday paruba! \n\njerry: today's not my birthday. \n\nkramer: well, i beg to differ... \n\njerry: look at this! a phone! a two-line phone! \n\njerry: hey, where you going? \n\nelaine: i gotta go return something... \n\nsharon: jerry, it's sharon from nyu. i'm just calling to tell you that i'm not going to play up that angle we talked about and i'm sorry. \n\njerry: thank you very much, that's great- >click< oh! hold on a sec, i got a call on the other line. >click click< hello? \n\ngeorge: hey. \n\njerry: hey, how ya doin'? y'know i got that reporter from the newspaper on the other line. \n\ngeorge: so, what did she say? \n\njerry: she says she's not going to play up that angle of the story. she thinks we're heterosexual. [sarcastically] i guess we *fooled* her. i'll get rid of her, hold on... >click click< sharon? hello? sharon, are you there? >click click< i'm back... \n\ngeorge: y'know... i could hear you on the other line... \n\njerry: what are you talkin' about? \n\ngeorge: i heard what you said \"sharon, are you there?\". \n\njerry: you heard me talkin' on the other line, are you sure? \n\ngeorge: yes, i heard you! \n\njerry: well, maybe she was disconnected. \n\ngeorge: maybe she wasn't! maybe she heard the whole conversation! \n\njerry: alright, hang on. let me call kramer and see if you can hear anything, hold on. >click click click<... \n\nkramer: yello? \n\njerry: kramer, there may be a problem with the phone, hold on. >click click< \n\ngeorge: \"there may be a problem with the phone, hold on\"! \n\njerry: oh no! >click click< kramer, this phone's a piece of junk, goodbye! \n\ngeorge: \"the phone's a piece of junk, goodbye\"! \n\njerry: oh no! now she's heard everything! what are we gonna do?!? \n\ngeorge: now she thinks we're gay, not that there's anything wrong with it... \n\njerry: no, no, of course not! people's personal sexual preferences are nobody's business but their own! \n\nsharon: why don't you take a seat? \n\nelaine: thank-you. \n\nsharon: why don't you take your coat off? \n\nelaine: so she kept insisting i take off my coat. i refused, and then she forcibly tried to get me to remove it. \n\njerry: she wouldn't take her coat off at my house, either. \n\ngeorge: y'know there are tribes in indonesia where if you keep your coat on in somebody's house, the families go to war! \n\njerry: so you don't take your coat off, and now everyone at nyu thinks i'm gay. not that there's anything wrong with that... \n\ngeorge: not at all. \n\ngeorge: two tickets to \"guys and dolls\"! i'm gonna go with you! \n\njerry: \"guys and dolls\"? isn't that a lavish, broadway musical? \n\ngeorge: it's \"guys and *dolls*\", not \"guys and *guys*\". \n\njerry: \"the collected works of bette midler\". \n\njerry: what do you got there? \n\nman #1: _the new york post_, they've got an article about you. \n\njerry: \"although they maintain separate residences, the comedian and his long-time *companion* seem to be inseparable...\" oh no! the associated press picked up the nyu story. that's going to be in every paper! i've been \"outed\"! i wasn't even \"in\"! \n\ngeorge: now everyone's going to think we're gay! \n\njerry: not that there's anything wrong with that... \n\ngeorge: no, not at all... \n\njerry: \"within the confines of his fastidious bachelor *pad*, seinfeld and costanza bicker over the cleanliness of a piece of *fruit* like an old married couple--\" *i told you that pear was washed*! \n\nkramer: i thought we were friends... \n\njerry: here we go... \n\nkramer: i mean, how could you two keep this a secret from me? \n\njerry: it's not true! \n\nkramer: aaaah! enough lying! the lying is through! c'mon, jerry, the masquerade is over. you're thin, late thirties, single... \n\njerry: so are you... \n\nkramer: yeah-- \n\ngeorge: hello? \n\nmrs. s: george? \n\ngeorge: mrs. seinfeld?!? \n\nmrs. s: oh, my god... \n\njerry: oh, my god! [takes the phone] ma? \n\nmrs. s: jerry? \n\njerry: ma! \n\ngeorge: oh, my god! my *mother*!!! \n\nmrs. s: jerry? \n\njerry: ma, it's not true! \n\nmr. s: it's those damn culottes you made him wear when he was five! \n\nmrs. s: they weren't culottes, they were shorts. \n\nmr. s: they were culottes! you bought them in the girl's department. \n\nmrs. s: by mistake! by mistake, jerry! i'm sorry! \n\nmr. s: it looked like he was wearing a skirt, for crying out loud! \n\njerry: ma, it has nothing to do with the culottes! \n\nmrs. s: not that there's anything wrong with that, jerry. \n\nmrs. c: i open up the paper, and *this* is what i have to read about? i fell right off the toilet. my back went out again, i couldn't move... the super had to come and get help me up. i was half naked! \n\ngeorge: it's *not* *true*! \n\nmrs. c: every *day* it's something else with you. i don't know anything about you any more. who are you? what kind of life are you leading? who knows *what* you're doing? maybe you're making porno films. \n\ngeorge: yeah. i'm buck naked. \n\nmrs. c: jerry, i can see. he's so neat and thin. not that there's anything wrong with it. \n\ngeorge: of course not... \n\nnurse: 630, scott. time for your sponge bath. \n\ngeorge: alright, now the play is tomorrow night. so do you want to have dinner first, or do you just want to meet at the theatre? \n\nsailor: excuse me, sir? i don't mean to bother you. i just wanted you to know that it took a lot of guts to come out the way you did, and that you've inspired me to do the same, even though that may mean a discharge from the service. thanks. \n\njerry: y'know, i think i'll pass on the \"guys and dolls\"... \n\ngeorge: no. just imagine her reaction. \n\nelaine: yeah... \n\ngeorge: oh, my god... \n\njerry: what? \n\ngeorge: she hasn't seen the article! when she sees it, she's gonna think-- *i'm out baby*!! i'm out!!!!! \n\nallison: yeah? so? \n\ngeorge: yeah so?? \n\nallison: well this is nice. they mention your name. \n\ngeorge: don't you see what it says here? don't you understand what that's implying? \n\nallison: no, what? \n\ngeorge: i'm gay! i'm a gay man! i'm very, very gay. \n\nallison: you're *gay*? \n\ngeorge: extraordinarily gay. steeped in gayness. \n\nallison: [matter-of-factly] i don't believe it. \n\ngeorge: you don't believe me? ask jerry. \n\nallison: i will. \n\ngeorge: what do you mean you will? that's a bad idea. jerry is a very private person. \n\nallison: [grabs george's lapels] i want to hear it from *jerry*... \n\nsharon: oh, can you ever forgive me? \n\njerry: i dunno... [they kiss again] *alright*, i forgive you... \n\nsharon: y'know the funny thing is, i was attracted to you immediately. \n\njerry: i was attracted to you, too. you remind me of lois lane. \n\ngeorge: jerry! oh, my god! what are you doing!?! \n\njerry: what!? \n\ngeorge: you're with a *woman*! \n\njerry: i know! what are you doin' here?!? \n\ngeorge: i leave you alone for two seconds, and this is what you do! i trusted you! \n\njerry: [forcibly removing g. from the apt] would you get the hell out of here! \n\nsharon: what's going on? \n\nallison: yeah, what's going on? \n\ngeorge: alright, tell her. go ahead. \n\njerry: tell her what? \n\ngeorge: y'know. about *us*. \n\ngeorge: alright, i'll tell you the truth. i'm not gay. my name's buck naked, i'm a porno actor. \n\nallison: *really*? \n\nkramer: we'll see you later... \n\nkramer: he's the *phone* man! \n\nkramer: not that there's anything wrong with that... \n\ni am not gay. i am, however, thin, single and neat. sometimes when someone is thin, single and neat people assume they are gay because that is a stereotype. they normally don't think of gay people as fat, sloppy and married. although i'm sure there are, i don't want to perpetuate the stereotype. i'm sure they are the minority though within the gay community. they're probably discriminated against because of that, people say to them \"y'know joe, i enjoy being gay with you but i think think it's about time, y'know that you got in shape, tucked the shirt in and lost the wife\". but if people are even going to assume that people that are neat are gay, maybe instead of doin' this: \"y'know i think joe might be a little... [waves hand back and forth]\", they should vacuum \"y'know i think joe might be >vroom< [makes vacuuming motion]. yeah, i got a feeling he's a little >vrooom<...\" \n\ngeorge: oh, what's the point? when i like them, they don't like me, when they like me, i don't like them. why can't i act with the ones i like the same way i do with the ones i don't like? \n\njerry: well, you've only got another fifty years or so to go before it'll *all* be over... \n\ngeorge: maybe i need someone who doesn't speak english. \n\njerry: yeah, how about a mute? \n\ngeorge: a mute would be good. \n\njerry: ah, where you gonna meet a mute? \n\ngeorge: this is what my life has come to... tryin to meet a mute. \n\ngeorge: i dunno, jerry somethin's missing. there's a void, jerry, there's a void... \n\njerry: a deep, yawning chasm... \n\ngeorge: there's gotta be more to life than this. what gives you pleasure? \n\njerry: listening to you. i listen to this for fifteen minutes and i'm on top of the world. your misery is my pleasure. \n\nelaine: hey boys! \n\njerry: hey! how you doin'? \n\nelaine: good. okay, well, it's all set. i start tomorrow. \n\ngeorge: start what? \n\nelaine: i signed up to do volunteer work with senior citizens. \n\ngeorge: *really*. \n\nelaine: yeah. god, i can't tell you how i feel! i mean, i feel *so* *good*! i *really* feel good. the strange thing is, i mean, i haven't even met the woman yet. \n\ngeorge: volunteer work, huh? \n\njerry: what're you gonna do down there? \n\nelaine: well, they say all it is is that you go over to their apartment and, i dunno, you take them for a walk and you get a cup of coffee and it's supposed to make them feel good. \n\njerry: that's what i do with him [points at george] \n\ngeorge: when did you get this idea? \n\nelaine: last time i had lunch with you here. you were going *on* and *on* and *on* about how you wanted to meet somebody who didn't speak english. \n\njerry: what, do you break it in with her, then you try it out on me? \n\ngeorge: and... and anybody can do this? \n\nelaine: yup. \n\ngeorge: helping people... of course. of course! it makes perfect sense! how could i *not* be doing this!? i am gonna help somebody, dammit! \n\nelaine: [to jerry] what about you? \n\njerry: nah, it's not for me. \n\nelaine: jerry, if anybody should be doing this, it's you. \n\ngeorge: what *kind* of a person are you? \n\njerry: i think i'm pretty much like you-- only successful. \n\nagency rep: this is a wonderful thing you're doing. they're so grateful just to have someone to talk to. and i can tell you that everyone who participates finds the experience extremely rewarding. \n\ngeorge: well, i feel better already. i'm feelin' like a good person. \n\nagency rep: good luck. \n\njerry: thank you. \n\ngeorge: hey, what's your guy's name again? \n\njerry: fields. sidney fields. *87* years old. *87*. how about your guy? \n\ngeorge: ben cantwell. 85. huh... you think we'll make it to that age? \n\njerry: *we*? no. \n\nkramer: so what's up, diggity dog? \n\njerry: george and i just signed up with the senior citizen's volunteer agency. same thing elaine's doing. \n\nkramer: oh, that's too bad. now don't say i didn't try to warn you. \n\njerry: what're you talkin' about? \n\nkramer: oh, jerry, i'm *surprised* at you! \n\njerry: what? \n\nkramer: it's a *con*. these agencies are usually a front for some money laundering scheme. or they're bunko artists; bilkin' people out of their life savings, oh *yeah*. \n\njerry: where do you *get* this? \n\nkramer: the alternative media, jerry. that's where you hear the truth. \n\nnewman: kramer?! kramer!? where are you? kramer!?! kramer!!? \n\nkramer: i'm in here. c'mon... \n\njerry: hello, *newman*... \n\nnewman: jerry, george. [to kramer] so, did you ask him about the records? \n\nkramer: well-- \n\njerry: what records? \n\nkramer: well, newman and i are going partners selling used records. \n\nnewman: you know ron's records down on bleeker? they pay big cash for used records! \n\nkramer: yeah, so we thought if you had any of those big, y'know, old-fashioned useless records, y'know, just... lyin' around-- \n\nkramer: y'know, we'd take them off your hands, free of charge. \n\ngeorge: let me ask you something. what do you do for a living, newman? \n\nnewman: i'm a united states postal worker. \n\ngeorge: aren't those the guys that always go crazy and come back with a gun and shoot everybody? \n\nnewman: sometimes... \n\njerry: why *is* that? \n\nnewman: because the mail never stops. it just keeps coming and coming and coming, there's never a let-up. it's relentless. every day it piles up more and more and more! and you gotta get it out but the more you get it out the more it keeps coming in. and then the bar code reader breaks and it's *publisher's clearing house* day!!! \n\nron: i'll give you five bucks. \n\nkramer: five bucks??? \n\nnewman: well, you know how much those records are worth!? \n\nron: yeah, i do... fi' dollars. \n\nnewman: those records are worth more than five dollars! \n\nkramer: [in newman's ear] he's gyppin' us... \n\nnewman: you're gyppin' us! \n\nron: well, whattya got here, y'know, you got \"don ho live at honolulu\", you got \"jerry vale sings italian love songs\" you got sergio mendes, now come on... \n\nkramer: wait, wait, wait... sergio mendes has a cult following. \n\nnewman: they follow him like a cult. \n\nkramer: he can't even walk down the street in south america... \n\nron: look, that's his problem, alright? now you don't like it, too bad. \n\nkramer: [in newman's ear] i don't like it... \n\nnewman: i don't like it. \n\nron: well, then get the hell out of my store, alright? you bring me something decent, i'll give you some money. \n\nkramer: [in newman's ear] alright, well be back, jack. \n\nnewman: alright, well be back... *jack*! \n\njerry: hi, i'm jerry seinfeld, the agency sent me. \n\nhousekeeper: agency? \n\njerry: yeah, is this sid field's residence? \n\nhousekeeper: sid fields. \n\nsid: what the *hell* is it? \n\njerry: mr. fields? \n\nsid: what!?! \n\njerry: hi, i'm jerry seinfeld, the agency sent me. \n\nsid: agency? what agency? the *cia*? \n\njerry: no, no, the-- \n\nsid: who let you in here? \n\njerry: the woman, she-- \n\nsid: oh *her*. she *steals* from me. steals my money. she says she doesn't speak english. my *ass* she doesn't speak english. plays that freakin' \"voo-doo\" music, tries to hypnotize me. she thinks she's gonna turn me into a zombie and then rob me blind. well, i wasn't born yesterday. i may drop dead today, but i sure as hell wasn't born yesterday. now get the hell out of my house... \n\njerry: mr. fields, i'm here to spend some time with you. \n\nsid: oh, really. are you the boyfriend? i know she's got a boyfriend. are you going to *kill* me? i'm an old man for crying out loud, you gonna kill an old man, you coward?!? [jerry gets out card] \n\njerry: no, mr. field, look, really i'm-- \n\nsid: i can't read that you fool... \n\njerry: what's all this stuff? \n\nsid: trash. garbage. \n\njerry: you're throwin' this out?? \n\nsid: i believe that's what you do with garbage, you idiot. \n\n(you can make out the albums pretty clearly. one is an apparent k-tel \"classic\": \"22 explosive hits\", i don't know the other one. anyone? i believe \"the beatles\" (the white album) is there also.) \n\njerry: you don't want any of this? \n\nsid: well if i wanted it i wouldn't be throwing it away, *ein-stein*. \n\njerry: you know i have some friends who would really like to have these. \n\nsid: well, take it. i'm sure as hell not going to give it to my family. \n\njerry: well, do you want to go out for a walk, get a cup of coffee... \n\nsid: with you? i'd rather be dead. \n\njerry: well, maybe i'll get goin' then. i just remembered i got an appointment to get my, um, tonsils out. \n\nsid: good. thank god. good riddance. [pause] oh listen, before you go, would you mind changing my diaper? haa!! \n\nben: no, i feel great for 85. \n\ngeorge: y'know the average life span for an american male is like, 72. you're really... kinda pushin' the envelope there. \n\nben: i'm not afraid of dyin'. i never think about it. \n\ngeorge: you don't? boy, i think about it a lot. i think about it at my age. imagine how much i'll be thinkin' about it at your age. all i'll do is keep thinkin' about it until it drives me insane... \n\nben: i'm grateful for every moment i have. \n\ngeorge: grateful? how can you be grateful when you're *so* close to the end? when you know that any second-- poof! bamm-o! it can all be over. i mean you're not stupid, you can read the handwriting on the wall. it's a matter of simple arithmetic, for gods sake... \n\nben: i guess i just don't care. \n\ngeorge: what are you talking about? how can you sit there and look me in the eye and tell that me you're not worried?! don't you have any *sense*?!! don't you have a brain!? are you so completely senile that you don't know what you're talkin about anymore!!?! \n\ngeorge: wait a second, where are you going? \n\nben: life's too short to waste on you. \n\ngeorge: wait a minute, please-- \n\nben: get out of my way... \n\ngeorge: but mr. cantwell, you... you owe me for the soup... \n\nelaine: mrs. oliver? \n\nmrs. o: yes my dear. \n\nelaine: ooh! \n\nmrs. o: what's the trouble? are you alright? \n\nelaine: yeah. yeah. yes. yeah. \n\nmrs. o: it's my goiter, isn't it? \n\nelaine: did you say goiter? what goiter? \n\nmrs. o: this football-shaped lump jutting out the side of my neck. \n\nelaine: oh, *that* goiter. hey... heh heh heh... whaddya know... \n\nmrs. o: does it bother you? \n\nelaine: bother me? oh, phhbt... why would a little goiter like that bother me? no, not a bit. it's nothing. it's nothin', it's um, in fact, it's um, it's very distinctive, y'know? um, i mean you want to know something? i, i wish i had one. [pause] really. \n\njerry: c'mon elaine, it's just a goiter... \n\nelaine: i don't know what i'm going to do. i can't look the woman in the face. i mean i keep thinkin' that that goiter's gonna start talkin' to me... you'd think they'd mention that before they send you over there \"oh, by the way, this woman *almost* has a second head\". but no, no, i didn't get any goiter information. \n\njerry: they really should mention that in the breakdown height, weight, goiter. \n\nelaine: y'know you try to do some good. you want to be a good person but this is too much to ask. \n\njerry: yeah, well, i'll tell ya, i'd rather talk to a goiter with a nice disposition than the nut they sent me to. \n\nelaine: hey georgie, what happened with your guy? \n\ngeorge: i don't think it's gonna work out... \n\njerry: whattya mean? \n\ngeorge: he fired me. \n\njerry: he fired you?!? \n\nelaine: *how* do you get fired from a volunteer job? \n\ngeorge: i dunno. i was just talking to the man and he walked out on me! \n\njerry: well, i dunno about you two, but i'm quitting. i hate my guy. he's a mean, mean guy. \n\nelaine: i wish i could quit... \n\njerry: so quit! \n\ngeorge: yeah, i'm a great quitter. it's one of the few things i do well. i come form a long line of quitters. my father was a quitter, my grandfather was a quitter... i was raised to give up. \n\nkramer: well, here's your *albums* [journey \"escape\" is on top, btw...] \n\njerry: what happened? \n\nnewman: five dollars. he offered us *five* dollars. \n\nkramer: hey, what kind of stuff are you listening to? you *embarrassed* me at that store. \n\nnewman: that guy thought we were a couple of total squares. \n\njerry: oh yeah, you and your *sergio mendes*... \n\nkramer: hey, hey, hey, hey, that guy can't even go to the bathroom in south america! \n\njerry: well you shoulda seen the pile of albums this old guy i was visiting today was throwing away sinatra, duke ellington, al jolson, benny goodman... \n\nkramer: wait, wait, wait, now... he's throwin them out?? \n\njerry: yeah, and then i asked him if my friend could have them and he said yeah. \n\nkramer: okay... \n\nnewman: [in kramer's ear] the old coot's sittin' on a mountain of gold! \n\nkramer: yeah... \n\njerry: but you're going to have to go get em. i'm not carryin' them all. \n\nkramer: yeah, but you've gotta come with us. \n\njerry: yeah, i'm goin' there today. in fact you should see this house keeper he's got. she's from senegal [and, ala carson] wild, wild, stuff... \n\ngeorge: senegal? \n\ngeorge: so you don't speak *any* english at all? \n\nhousekeeper: english? no. \n\nsid: hey, what are those bums doin' back there? \n\njerry: well you said they could come and take the records. \n\nsid: it's like watchin' a couple of hyenas goin' through the garbage. \n\ngeorge: you don't speak *any* english? \n\nhousekeeper: no english. \n\ngeorge: i would like to dip my bald head in oil and rub it all over your body. [no reaction] you don't understand! it's a miracle! you don't understand because you don't speak english! \n\njerry: so mr. fields i just don't know if this arrangement is-- \n\nsid: hey, i don't like what's goin' on around here. i want all you bums outta here. \n\nkramer: now calm down, mr. fields... \n\nsid: now don't tell me to calm down... get your hands off of me! why you little... \n\nkramer: oooow! he's biting me! \n\nsid: my teeth! my teeth! \n\njerry: where's his teeth! where's his teeth! \n\ngeorge: i thought i saw something fly over here... \n\njerry: well turn the light on... \n\njerry: that's the garbage disposal! \n\nsid: my teeth! you idiots!!! \n\nmrs. o: and we would take long automobile trips-- \n\nelaine: oh, well, that sounds like a lot of fun... \n\nmrs. o: staring out the window-- \n\nelaine: uh huh... \n\nmrs. o: you'd see a long view of rolling pastures and-- \n\nelaine: well, that'll get you goin' right there... \n\nmrs. o: big, roaming cows-- \n\nelaine: cows, well that's fascinating... \n\nmrs. o: that's when i began my affair with mohandas. \n\nelaine: what? \n\nmrs. o: mohandas. \n\nelaine: ghandhi? \n\nmrs. o: oh, the *passion*. the *forbidden pleasure*-- \n\nelaine: you had an affair with ghandhi? mrs. o he used to dip his bald head in oil and rub it all over my body. here, look... [shows elaine a picture of the two together] \n\nelaine: oh, my god... the mohatma? \n\nron: twenty bucks. \n\nnewman: twenty bucks?!? are you out of your mind? \n\nron: well, take it or leave it. \n\nnewman: take it or leave it!? we got *al jolson* here, *al jolson*!! \n\nron: now what the hell do i care about al jolson. i'd just assume her you sing \"mammy\". heh heh heh... \n\nkramer: [in newman's ear] this guy's nothin' but a piece of crap... \n\nnewman: you are nothing but a piece of crap. \n\nron: pardon me? \n\nkramer: [in newman's ear] a piece of crap... \n\nnewman: a piece of crap. \n\nkramer: [in newman's ear] i find you extremely ugly... \n\nnewman: i find you extremely ugly. \n\nron: *do* you? \n\nkramer: [in newman's ear] you emit a foul and unpleasant odour... \n\nnewman: you emit a foul and unpleasant odour. \n\nron: oh, is that right? \n\nkramer: [in newman's ear] i *loathe* you... \n\nnewman: i *loathe* you. \n\nron: that's it. get out of my store! \n\nkramer: [in newman's ear] make us. \n\nnewman: make us! \n\nron: oh, i'll make you! \n\nagency rep: do you realize how irresponsible this is? our agency's sole purpose is to care for senior citizens. and in one fell swoop you've single- handedly destroyed our reputation. \n\njerry: yes, but-- \n\njerry: [into intercom] yes? \n\ntim: it's tim fields, mr. fields' son. \n\njerry: alright, c'mon up. \n\njerry: [to rep] i dunno what happened, we were just trying to take him to the dentist. \n\nagency rep: why were you taking him to the dentist? \n\njerry: um, well, his false teeth got mangled up in the garbage disposal-- \n\nagency rep: what were his false teeth doing in the garbage disposal? \n\njerry: well, after he bit my friend-- \n\nagency rep: bit your friend?! \n\ntim: what the *hell* is going on here? how do you *lose* a human being?! \n\njerry: i, i'm sorry. \n\ntim: and who were these other people. what were they doing in the apartment!? \n\njerry: well, i brought them up there to take his records-- \n\ntim: take his *records*? do you realize how valuable that record collection is? \n\nkramer: hey. \n\njerry: there you are. did you find him? \n\nkramer: no, y'know we took the old man's records over to ron's and he tried to *screw* us so we got in a fight. \n\nnewman: it was a real melee. \n\nkramer: yeah, a real brouhaha... \n\nsidra: oh, hi jerry. \n\njerry: hi, sidra. i usually last about ten minutes on a stairmaster. unless of course there's someone stretching in front of me in a leotard, then i can go an hour. \n\nsidra (amused): really. \n\njerry: oh, yeah. that's why they call it a stairmaster. you get up there and you stare. \n\nsidra (stepping off): well, i'm done. i think i'm gonna go take a sauna. \n\njerry: alright, i'll see you thursday night, right? \n\nsidra: thursday night. \n\njerry: alright. \n\nelaine: good workout? \n\njerry (mimics smoking an \"after sex cigarette\"): tremendous workout. \n\nelaine: that's a pretty girl. \n\njerry: tremendous girl. \n\nelaine: she's the one you went out with last night? \n\njerry: yeah. i really like her. \n\nelaine: you know, uh...they're fake. \n\njerry: what? don't say that! \n\nelaine: nah! they're fake! \n\njerry: how do you know? \n\nelaine: i can tell. you know how you're always bragging how you can spot a lesbian? \n\njerry: i'm not bragging, i happen to have a very keen lesbian eye. (a woman walks by jerry and elaine.) hi, how ya doin.' (jerry jerks a thumb at the woman to confirm his talent. elaine is skeptical.) \n\nelaine: oh, right. c'mon, don't you think they seem a bit too perfect? \n\njerry: yes, they do! \n\nelaine: i never knew you were so into breasts. i thought you were a leg man. \n\njerry: a leg man? why would i be a leg man? i don't need legs. i have legs. have you ever seen her naked in the locker room? \n\nelaine: no. \n\njerry: oh, well, then i can't accept your testimony. maybe if you had seen her naked. \n\nelaine: i don't want to see her naked. \n\njerry: well, i do. \n\nelaine: well, that's your problem. \n\njerry: look, you made the allegation. the least you could do is follow up. \n\nelaine: jerry, what am i gonna do? i'm gonna go in there and spy on her in the sauna? \n\njerry: yes! go in there! do a little investigative journalism. i need to know! \n\nelaine: but a few more dates and you can find out for yourself! \n\njerry: don't be so sure. look at george - he's on his ninth date with betsy, he still hasn't gotten anywhere with her. \n\nelaine: what's his problem? \n\njerry: well, every time he tries to make a move, something screws up. like on their last date, they were on the couch, but she was sitting on his wrong side. \n\nelaine: wrong side? \n\njerry: yeah, she was on his right side. he can't make a move with his left hand. can't go left. \n\nelaine: he can't go left. \n\njerry: no! i'm lefty, can't go right. what about women? do they go left or right? \n\nelaine: nah, we just play defense. \n\ngeorge: can i ask you a question? would you mind switching seats? \n\nbetsy: oh, actually, i really prefer to sit here. i don't hear very well out of this ear (points to her right ear) so, i always try to sit to the right of people. \n\ngeorge: i'll shout. \n\nbetsy: well, i really think i feel more comfortable here. \n\ngeorge: c'mon, c'mon...(stands up and physically rolls betsy to the left side of the couch.) see, now, is that so bad? \n\nbetsy: what? (the phone rings.) \n\ngeorge (attempting to make a move): no, no, the machine'll get it... \n\nbetsy: no, no, it's not on... \n\ngeorge: they'll call back. \n\nbetsy: but george, what if it's an emergency? \n\ngeorge: in the whole world right now, there's maybe three emergencies. why would you think, on this entire planet, that you're one of those three? \n\nbetsy: george, please. (gets up and answers the phone.) hello? what? (shocked) oh my god! \n\ngeorge: alright, maybe four. \n\nelaine's brain: boy, i'm really sweatin.' good sweat, beads of sweat...sweatin' bullets. (notices sidra.) look at her. i don't need to see her naked to know those aren't real. why does she need to tie the towel around her? she's got a rack on her chest. (sidra takes her towel off and lies down.) oh god! sidra's takin' the towel off! (looks at sidra's chest.) whoa, doctor! that's it, i knew it! i knew it, they're definitely fake. \n\nbetsy: so, when's the funeral? well, aunt clarice was so ill, i guess it was really a blessing. (george, on the couch behind betsy, is impatiently waiting for her to get off the phone so he can continue putting the moves on her. he shrugs, and crosses himself.) yeah, i'll fly home as soon as i can. (george waves goodbye, and mimics a plane flying through the air with his hand.) o.k. you, too. get some sleep. (betsy looks at george, and he manufactures a completely phony look of sorrow.) \n\njerry: you're sure? \n\nelaine: positive! this chick's playin' with confederate money. \n\njerry: well then, that's it. that's the end of that. \n\nelaine: what? just 'cause of that? \n\njerry: just 'cause of that? it's like finding out mickey mantle corked his bat! \n\nelaine: oh, come on! you've dated women with nosejobs, what's the difference? \n\njerry: you don't touch the nose! you don't aspire to reach the nose. you don't unhook anything to get to a nose, and no man has ever tried to look up a woman's nostril. \n\nelaine: you've put a lot of thought into this, haven't you? \n\njerry: well, i take it very seriously. \n\nelaine: you know, sometimes when i think you're the shallowest man i've ever met, you somehow manage to drain a little more out of the pool. \n\nkramer: hey. \n\njerry: hey. you know, i do kinda wonder what fake breast feel like. \n\nkramer: well, i know what they feel like. \n\njerry: you? how do you know? \n\nkramer: well, i lived in los angeles for three months. \n\nelaine (laughs): i thought you hated los angeles. \n\nkramer: i do! i just miss the warm weather, y'know? jeez. oh man, i wish i could get away. \n\njerry: real busy now down at the office? \n\nkramer: no. huh? you know who i saw at the health club? salman rushdie. \n\nelaine (laughing): yeah right, salman rushdie. yeah well, i can see that - you got five millions moslems after you, you wanna stay in pretty good shape. \n\ngeorge: i know what the problem is - i like her too much. that's why i can't make a move. \n\njerry: you put her on a pedestal. \n\nkramer: i put them on a dental chair. \n\njerry: he puts 'em on a dental chair. \n\ngeorge: i'm not her boyfriend. i want to be her boyfriend. \n\nkramer: whoo. it's like a sauna in here. \n\ngeorge: that's funny. you're a funny guy. \n\njerry: yeah, funny. yeah, i never heard that before. (to george) so, you goin' to the funeral? \n\ngeorge: why, you think i should? \n\njerry: what, are you kidding? it's a golden opportunity to advance the relationship. she's crying, you put your arm around her and console her...you're the consolation guy! \n\ngeorge: i'm the consolation guy...? \n\nkramer: consolation guy is big. \n\njerry: her aunt dying is the best thing that ever happened to you. \n\nkramer: it's like ten dates in one shot. \n\njerry: this confers upon you instant boyfriend status. the family's there...you're taking care of things...you're gettin' the sandwiches...you're the rock! \n\ngeorge: it's in detroit though, it's an expensive flight. \n\nkramer: why don't you get a \"death in the family\" fare? \n\ngeorge: what? \n\nkramer: you go to the airlines, you tell them you got a death in the family? they give you 50% off the fare. \n\ngeorge: really? \n\nkramer: in fact, listen...i'll go down there with ya. you know, we'll tell them there's a death in my family, you buy the ticket, i'll split it...then i'll get the bonus miles and you'll get to detroit for a quarter of the price! \n\nelaine's brain: boy, i'm gettin' a good sweat here. great sweat, good beads. nice beads. \n\nelaine's brain: ah, look who's here. \"silicon valley.\" \n\nsidra (to her friend): so anyway, we go out on one date, he asks me out for a second, then out of nowhere he cancels the date and says he doesn't want to see me again. \n\nelaine: uh...sorry, i couldn't help overhearing. \n\nsidra: oh, that's o.k. \n\nelaine: did he give you a reason? \n\nsidra: yeah. he's going back to his old girlfriend. \n\nelaine: really? \n\nsidra: he said she's mentally ill. he's one of those guys who is obsessed with neatness and order? everything has gotta be just so. he would have made a great nazi. \n\nelaine: hey, does he ever talk about superman? \n\nsidra: yes! how did you know? \n\nelaine: oh, i know the type. \n\nsidra: so you can relate? \n\nelaine: oh, yeah. \n\nsidra (sits across from elaine and takes her towel off): you know, i've seen you around the club. my name's sidra. this is marcy. \n\nelaine: oh, hi. i'm elaine. (gets up to shake sidra's hand, but stumbles and falls \"right into them.\") \n\nelaine: so anyway, i stood up to shake her hand, then suddenly i lost my balance and i fell right into her. \n\njerry: you fell on her? \n\nelaine: i touched 'em. \n\njerry: you what? \n\nelaine: i...touched...'em. \n\njerry: you touched 'em?! \n\nelaine: i needed them to help me break my fall! if it hadn't been for them, i could have really injured myself! \n\njerry: wow. \n\nelaine: anyway...they're real. \n\njerry: excuse me?! \n\nelaine: i think they might be real. \n\njerry: oh, what do you know, you have no breast touching experience. \n\nelaine: i've touched mine! \n\njerry: so have i. \n\nelaine: oh, right...i forgot. (smiles) \n\njerry: anyway, touching two breasts doesn't make you an expert. \n\nelaine: alright, well anyway, i think they're real. and if they are, i must say they are...spectacular. \n\njerry: aw, what are you doin' to me? (puts his head down on the counter.) \n\ngeorge (to clerk): you see, my friend here, his aunt passed away last night. \n\nclerk (to kramer): oh, i'm very sorry. \n\nkramer: i saw her last week, she looked healthy and peaceful, but...she knew... \n\nclerk: you poor thing! \n\nkramer (breaking into tears): i...i... \n\ngeorge: you don't think you can buy the ticket yourself...? no, there, there...you sit, and i'll purchase the ticket for you. \n\nclerk: you're a good friend. \n\ngeorge: i understand you offer a 50%-off 'bereavement' fare...? \n\nclerk: yes, all you have to do is pay the full fare now, then return to any one of our counters with a copy of the death certificate, and we'll refund half your fare. \n\ngeorge: the death certificate? \n\nclerk: yes, yes, we do need documentation or you know, people could take advantage. \n\ngeorge: what kind of a sick person would do a thing like that? \n\nclerk: i know! but it happens. \n\ngeorge: you want my friend to ask his uncle, a man who just lost his wife of 44 years, for a death certificate so that he can save a few bucks on a flight? \n\nclerk: that would be $387 round-trip. \n\nkramer (in a perfectly normal tone of voice): alright, so you'll need my frequent flyer number, huh? \n\nclerk: yes. \n\njerry: i don't know, one minute you say they're fake, the next minute you think they're real...i don't know what to believe! \n\nelaine: hey, of the two of us, i'm the only one who's touched 'em. \n\njerry: but you were just grabbing on to them to save your life. if you were drowning and i threw you a life preserver, you think you could tell me if it was an inflatable? \n\nelaine: i wouldn't have said anything if i knew you were going to stop seeing her! \n\njerry: well, i don't mind someone with a phony personality, but i gotta draw the line somewhere. \n\nkramer: hey! \n\njerry: hey. george off to detroit? \n\nkramer: yep! and, in two days, i'm off to puerto rico. \n\nelaine: hey kramer, by the way, i saw that guy at the health club...that is not salman rushdie. \n\nkramer: pffft - wrong. \n\njerry: there's sidra. \n\nkramer: there's salman. \n\njerry: where? \n\nkramer: talkin' to that woman. \n\njerry: talkin' to sidra? \n\nkramer: if that's sidra, she's talkin' to salman. \n\njerry: i don't think that's salman. \n\nkramer: well, i don't think they're real. \n\njerry: if that's rushdie, they're real. \n\nkramer: if they're real, that's rushdie. \n\njerry: well, i gotta know - i'm talkin' to sidra. \n\nkramer: i gotta know, i'm talkin' to salman. \n\nkramer: it's like a sauna in here, huh? i feel like i'm...back at the desert. \n\n\"salman\": you've lived in the desert? \n\nkramer: oh, yeah. yeah, i've uh...i've spent a little time in the mideast. you ever been to the mideast? \n\n\"salman\": yes, i've been there. \n\nkramer: my name's kramer. \n\n\"salman\" (shakes kramer's hand): sal bass. pleased to meet you, kramer. \n\nkramer: so, uh...what kind of work do you do? \n\n\"salman\": i'm a writer. \n\nbetsy (to aunt may): have you met my boyfriend george? \n\naunt may: no! (shakes george's hand.) \n\nbetsy: george, this is aunt may, and father jessup. oh, and that's my brother, timmy. (timmy smiles thinly.) this is my boyfriend, george. \n\naunt may: oh george, how nice of you to come all this way. \n\ngeorge: well, i'm the boyfriend. otherwise, what's the point of being the boyfriend? this is where you have to be when you're the boyfriend. \n\naunt may: betsy, dear, have you had anything to eat? \n\nbetsy: i'm not very hungry. \n\naunt may: they have some very nice snacks. \n\nfather jessup: i'm about to get myself a snack. \n\ngeorge: oh, no, no, no...you sit right here...i will get you a nice snack. \n\nfather jessup: this is my third wake this month. it never gets any easier. \n\ngeorge (loading up his plate with sandwiches): well, losing a loved is, uh...i mean, forget about it. (starts wolfing down the sandwiches.) \n\nfather jessup: you seem to be of great comfort to betsy, we're very appreciative. \n\ngeorge: oh - comfort, schmomfort. listen, father, can i ask you a question? in a terrible time like this...who would i get the death certificate from? \n\nkramer: c'mon jerry! \n\njerry: oh, how can you be so sure? \n\nkramer: jerry, are you blind? he's a writer. he said his name was sal bass. bass, jerry! instead of salmon, he went with bass! he just substituted one fish for another! \n\njerry: look, you idiot, first of all, it's salman, not salmon! \n\nkramer: jerry, jerry, you're missing the big picture! \n\njerry: alright, maybe it is, but listen, i gotta get ready - sidra's coming over in a few minutes, so if you don't mind... \n\nkramer: what, did you ask her? \n\njerry: i'm gonna find out tonight. \n\nkramer (nods): oh, yes indeed... \n\ndr. allenwood: why do you need a death certificate? \n\ngeorge: well, dr, allenwood, uh...i was hoping to compile an - admittedly, rudimentary - scrapbook of her life. something that betsy could have, and hold onto. \n\ndr. allenwood: well, i suppose i could make a copy of it. \n\ngeorge: oh, that would be wonderful. \n\ndr. allenwood: it was very nice meeting you, george. \n\ngeorge: likewise. \n\ntimmy: what are you doing? \n\ngeorge: what? \n\ntimmy: did...did you just double-dip that chip? \n\ngeorge: excuse me? \n\ntimmy: you double-dipped the chip! \n\ngeorge: \"double-dipped\"? what are you talking about? \n\ntimmy: you dipped the chip. you took a bite. (points at the dip) and you dipped again. \n\ngeorge: so...? \n\ntimmy: that's like putting your whole mouth right in the dip! from now on, when you take a chip - just take one dip and end it! \n\ngeorge: well, i'm sorry, timmy...but i don't dip that way. (takes a chip.) \n\ntimmy: oh, you don't, huh? \n\ngeorge: no. (dips the chip) you dip the way you want to dip...(bites the chip) i'll dip the way i want to dip. (dips the chip again.) \n\ntimmy: gimme the chip! (grabs george and the chip goes flying.) gimme the chip! (they struggle in front of the snack table.) \n\nsidra: i don't know what i'm doing here, i must be crazy. (moves to the couch and sits on the left side. jerry tries to run over and beat her to it, but doesn't make it. he sits down on the right side.) \n\njerry: hey, would you mind switching seats? \n\nsidra: why? \n\njerry: oh, i don't know...i just like sitting to the left of people, makes me feel like i'm driving. \n\nsidra: o.k....(they switch places.) \n\njerry: how ya doin'? \n\nsidra: good. how you doin'? \n\njerry: good, feel good...you know that jayne mansfield had some big breasts. really big, huge...just coming out the top of her dress, they were like, chokin' her. \n\nsidra: i hear that's how she died. \n\njerry: have you noticed that women today are, you know, they seem...bigger. \n\nsidra: well, a lot of women are having them done. \n\njerry: really? \n\nsidra: yeah. \n\njerry: how do you like that. \n\nsidra: a lot of people ask me if i've had mine done. \n\njerry: aw, you know people. \n\nsidra: it gets a little tiring, it's really none of their business. \n\njerry: oh, the nerve. you know, some people have asked me if you've uh, done that. \n\nsidra: what do you tell them? \n\njerry: whatever you want me to tell them. \n\nsidra: well, i think you'll find out soon enough. (they prepare to kiss. there's a loud bang on the door.) aren't you going to get that? \n\njerry: no. \n\nsidra: what if it's an emergency? \n\njerry: oh, there's no emergency... \n\nkramer (in hallway): jerry! c'mon, it's an emergency! \n\njerry: excuse me. (gets up and answers the door.) alright, what is it? you're interrupting! \n\nkramer: well, you know, i'm packing for puerto rico, i need to borrow your bathing suit. \n\njerry: this is an emergency? you need a bathing suit? \n\nkramer: well, i like yours. \n\njerry: i don't know, my bathing suit? that's a little familiar, i don't want your...your boys down there. \n\nkramer: c'mon, what's wrong with my boys? \n\njerry: your boys should stay in their neighborhood. \n\nkramer: alright, c'mon! \n\njerry: alright. it's in the top drawer. hurry up. (kramer goes to get the suit. elaine enters.) \n\nelaine: hi, jer. \n\njerry: oh, hi, elaine. \n\nelaine: oh...hi, sidra - \n\nsidra: hi...elaine? (kramer comes back into the living room.) \n\njerry (to elaine): what are you doing here? \n\nelaine: i'm looking for kramer. \n\nkramer: yeah, she was just showing me pictures of places i can visit when i go to puerto rico...you know, when you two went down there? \n\njerry: oh. yeah. alright. (pushes kramer and elaine out the door, then sits next to sidra on the couch.) so, where were we? \n\nsidra: i was just leaving. \n\njerry: right, you were leaving. \n\nsidra: i can't believe you sent a woman into the sauna to do that. \n\njerry: that was an accident! \n\nsidra: i think you're both mentally ill. (leaves, then opens the door again.) and by the way...they're real, and they're spectacular. (sidra leaves.) \n\nbetsy: stop it, george! get out! get out! i never want to see you again! \n\ndr. allenwood: go back to new york! get out! \n\nclerk 2: alright sir, now all i need is a death certificate and you'll be on your way. \n\ngeorge: well, you see, what happened was...the doctor - the very same doctor that was attending to my late aunt - suffered an untimely stroke, and lost the use of his right hand, so...obviously i was unable to get the death certificate. however, i do have this. (reaches inside his coat and takes out a polaroid photo.) \n\nclerk 2: what's this? \n\ngeorge: that's a picture of me next to the coffin. \n\nclerk 2: nice try. \n\ngeorge: not even close, huh? \n\njerry: you can't just *have* an adultery-- you *commit* adultery. and you can't even *commit* adultery unless you already *have* a commitment. so you have to make the commitment before you can even think about committing it. there's no commit without the commit. then, once you commit, then you can commit the adultery. then you can get caught, get divorced, lose your mind and they have you committed. but y'know some people actually *cheat* on the people that they're cheating with. which is like, y'know, being in a hold up and then turning to the robber next to you and goin' alright, gimme everything you have, too''. \n\ngeorge: you met her at the supermarket? how did you do that? \n\njerry: (flips a roll of paper towels in the air) produce section. *very* provocative area. a lot of melons and shapes. everyone's squeezing and smelling... it just happened. \n\ngeorge: (laughs-hu) so when're you gonna see her? \n\njerry: tonight. \n\ngeorge: what's her name? \n\njerry: i... don't... know... \n\ngeorge: how could you not know her name? \n\njerry: i was a little nervous, i got distracted. it has something to do with a car, or a fish... \n\njerry: look at that. why do i get bananas? they're good for *one* day... \n\ngeorge: oh my god, i forgot to tell you. i got a letter today from the state controller's office. y'know when i was going to public school back in brooklyn, every week i used to put fifty cents in the lincoln savings bank. \n\njerry: yeah, i did that too. \n\ngeorge: yeah, you remember the, the little eh, bank book, there? \n\njerry: sure. \n\ngeorge: alright, so i haven't put anything in it since sixth grade, i completely forgot about it. the state controller's office tracks me down. the interest has accumulated to 1,900 dollars. 1,900 dollars! they're sending me a cheque! \n\njerry: wow! \n\ngeorge: hu-yeah, interest. it's an amazing thing. you make money without doing anything... \n\njerry: y'know i have some friends who try and base their whole life on that principle. \n\ngeorge: really? who? \n\njerry: nobody you know... \n\ngeorge: maybe i'll go down to the track. put it all on a horse... \n\njerry: why don't you put it in the *bank*? \n\ngeorge: the *bank*? this is *found* money. i want to *parlay* it. i wanna make a big score! \n\njerry: *oh*, you mean you wanna *lose* it... \n\nkramer: yeah... all right....ya got it, eh. \n\njerry: yes i did. \n\nkramer: yes. \n\ngeorge: what's with the gloves? \n\nkramer: well, i'm staining my floors, y'know, i don't want to get my hands dirty... \n\ngeorge: huh. what, the whole apartment? \n\nkramer: the whole apartment. and i'm buying that fake wood wallpaper. i'm gonna surround myself in wood. it's gonna be like a log cabin. 'cuz i *need* wood around me. wood, jerry [snaps fingers]... wood. \n\njerry: wood is good. \n\nkramer: definitely. \n\njerry: so we're still going to the health club to play racquetball right? \n\nkramer: yeah, yeah, whenever you're ready. \n\njerry: o.k., soon as elaine gets here. \n\nkramer: yep. \n\njerry: what, you rented \"home alone\"? \n\ngeorge: yeah. \n\njerry: i thought you saw that already... \n\ngeorge: no, i saw \"home alone ii\". \n\njerry: oh, right... but you *hated* it! \n\ngeorge: well i was lost, i never saw the first one. by the way, you mind if i watch it here? \n\njerry: what for? \n\ngeorge: because if i watch it at my apartment i feel like i'm not doing anything. if i watch it here, i'm out of the house; i'm doing something. \n\njerry: all right.. go ahead. \n\njerry: yeah? \n\nelaine: (on the intercom) it's me, are you ready to go? \n\njerry: no. come on up. \n\nkramer: i can't work with these! \n\njerry: what's wrong? \n\nkramer: well, you bought me dishwashing gloves. there's no *fine touch*... \n\njerry: you said \"gloves\"... \n\nkramer: no, no, these are too thick. (removes the gloves/tosses them on the kitchen counter) \n\nkramer: oooh, is that \"home alone\"? \n\ngeorge: yeah. the *original*. \n\nelaine: hey boys-o! \n\neveryone: (in unison) heyyyyyyyy. \n\nkramer: hey, how's it goin'? \n\nelaine: hello. \n\njerry: (to kramer) hey (snaps fingers) get your stuff, let's get going. \n\nelaine: well wait a minute, there's a slight change of plans. \n\njerry: what? \n\nelaine: eh, remember roy, the artist? \n\njerry: oh, the \"triangle\" guy. \n\nelaine: yeah, exactly, the \"triangle\" guy. \n\njerry: yeah, you liked him. what happened with him? \n\nelaine: yeah i did. he was very talented. he was, ah just, i don't know a little too... \n\njerry: artsy? \n\nelaine: fat. \n\njerry: oh. (unh - very quiet sigh) \n\nelaine: he was a fat, starving artist, y'know. that's very rare. \n\njerry: yeah. \n\nelaine: anyway, he's in the hospital, he's having surgery and i feel like should go visit him. \n\njerry: what's wrong with him? \n\nelaine: unh, something with his spleen. anyway it'll just take five minutes, o.k., and then, the hospital is right on the way. \n\nkramer: yeah. (putting hand to his mouth, hatching a thought) \n\njerry: all right we'll wait for you. \n\nkramer: yeah, maybe i can get some rubber gloves there huh, yea. \n\nelaine: listen, jerry can you do me a favor? (clears throat) could you, go into the room with me to visit him because ah, i don't want him to think that i'm, y'know... interested. \n\njerry: oh, you want me to pretend to be your boyfriend. \n\nelaine: well... \n\njerry: well i think i can do that. i believe i've played that role before to some critical acclaim. \n\nelaine: aha ha ha (laugh) \n\nkramer: all right, lets go. \n\njerry: all right (picks up his sports bag) \n\nkramer: yep yep yep. \n\nelaine: what's with him? \n\njerry: y'know a lot of people have asked that... \n\nelaine: roy! \n\nroy: *elaine*! what a *surprise*. (sitting up) \n\nelaine: (gasp) oh, my *god*! i hardly recognize you! you look so... \n\nroy: yeah, ya know, i've lost some weight... \n\nelaine: a *lot* of weight. (enthusiastically) \n\nroy: i know. \n\nelaine: aha hu, you look *terrific*. \n\nroy: thank you. so do you. \n\nelaine: ah hahaha hhuu ha (flirty laughing) \n\nelaine: ah, this is... uh... you *really* lost weight. \n\nroy: thank you. \n\njerry: jerry, uh, i'm the boyfriend. (puts his arm around elaine's shoulder, but she shrugs it off twice) \n\nhospital voiceover: doctor wittenberg, outside call. doctor wittenberg, outside call. \n\nwoman: ahaaaaaaaaaa! (scream) \n\nkramer: (a bit startled) ahh. \n\nhospital voiceover: doctor wittenberg, outside call. \n\nkramer: ah, the mother lode! (the door squeaks a bit as he pushes it open) \n\nelaine: i can't believe it! you were *huge*! like blubber! i couldn't even get my arms around you... \n\nroy: yesss, i remember. \n\nelaine: ahahaha. well that's the positive thing about getting sick, you get to lose weight. \n\nroy: elaine, it wasn't the illness. it was you. \n\nelaine: me? \n\nroy: (quietly- yeah) after you stopped seeing me, i was devastated. i couldn't eat for weeks. \n\nelaine: *get* *out*! \n\nroy: really, it's the truth. \n\nelaine: jerry, did you hear this? he couldn't eat for weeks... \n\njerry: that's terrible... \n\nelaine: i had no idea i had that kind of effect on you. \n\nroy: you did. \n\njerry: you know i can't get this *damn thing* to sleep. (about the yo-yo) \n\nelaine: now listen roy, tell me something. when, are you gettin' out of here? \n\nroy: next thursday. \n\nelaine: okay, i'll tell you what. how about on friday i take you out for a *big* meal because *you* are getting *too* thin... \n\njerry: honey... aren't we going to the poconos next friday? \n\nelaine: no that's the week after. \n\njerry: no, i believe it's next week. \n\nelaine: you're wrong. \n\njerry: no i'm not... \n\nelaine: shut up... \n\nkramer: pay dirt! (holding up the hand full of gloves. he looks behind himself as the door closes) \n\nelaine: uh roy, this is uh kramer -- he's one of our friends. \n\nroy: oh, how do you do? \n\nkramer: yeah... i do great, yeah. \n\ndoctor: hi roy. \n\nroy: oh, hey dr. siegel. \n\njerry: hey doc, check this out. [does an around-the-world with the yo-yo] \n\nkramer: heey. \n\njerry: i *just* learned that. (proudly holding the yo-yo) \n\ndoctor: a-hu. (the doctor is at a loss) \n\ndoctor: i just wanted to stop by -- see if you had any questions about tomorrow's operation. \n\nkramer: ah, yeah yeah, i have a - i have a question, um -- what do you know about inter-abdominal retractors? \n\ndoctor: are you asking because you saw \"20/20\" last night? \n\nkramer: i sure am. \n\ndoctor: well that report was about *one* very specific type of retractor and i can assure you we do not use that retractor in your friend's procedure. \n\nkramer: but you *will* use... a retractor. \n\ndoctor: we have to... \n\nkramer: mmm-hmm... (turns and walks away, makes a face, raises his eyebrows, nodding his head, then turns back to the group.) \n\ndoctor: tell you what. you're obviously concerned about your friend's welfare. a few of my students will be observing tomorrow's operation from the viewing gallery. how would you like to watch it with them? \n\nkramer: i'd love to watch the operation, yeah! \n\njerry: i dunno... \n\nkramer: oh, come on jerry. you gotta see the operation. they're gonna cut him open -- his guts'll be all over the place... \n\njerry: yeah, that's true... \n\nkramer: ...they'll saw through bone. uuuuuuuing yutyutyutyutn naannnaaa [makes saw noises while gesturing over roy's chest] you'll see what's *inside* bone... \n\ngeorge: ttu (wipes nose and sniffs) ttu. \n\njerry: hey. \n\ngeorge: hi... \n\njerry: what are doing, you crying?? \n\ngeorge: no... (takes off his glasses and wipes his eyes with his sleeve) \n\njerry: you crying from \"home alone\"?? \n\ngeorge: the old man got to me. \n\njerry: alright, just get yourself together... i dunno if i can be friends with you anymore after this display. \n\ngeorge: oh shut up! what are you doing back so soon, anyway? (puts the tape back in it's case.) \n\njerry: oh, i never even got to the gym. kramer got the gloves, wanted to come home and start working on his floor. \n\ngeorge: oh. how's the guy? \n\njerry: oh, he's okay. in fact him and elaine are getting ah, pretty chummy. now elaine wants me to buy some of his art. (opens the fridge and gets a bottle of water.) \n\ngeorge: hnh. that's nerve... \n\njerry: yeah, so she and \"triangle boy\" can go out to fancy restaurants. (takes a sip of water) \n\ngeorge: y'know what it is? it's \"clara nightingale syndrome.\" he falls ill; she falls in love. \n\njerry: you mean florence nightingale. ** \n\n(** footnote: see short bio at end of script **) \n\ngeorge: what'd i say? clara? \n\njerry: yeah, you must have meant clara barton. ** \n\n(** footnote: see short bio at end of script **) \n\ngeorge: clara barton? what did she do? \n\njerry: i'm not sure, but i think she was nice. (takes a sip of water) \n\ngeorge: susan b. anthony** i think i'd have a problem with. \n\n(** footnote: see short bio at end of script **) \n\njerry: yeah, i think you would. \n\ngeorge: so, you gonna buy his art? \n\njerry: no. why don't you buy it? you got 1,900 dollars. \n\ngeorge: yeah, that's what i want-- triangles. alright, i'm outta here. have fun with what's-her-name. \n\njerry: i will. \n\ngeorge: y'know, now you gotta ask her her name. it's so embarrassing. \n\njerry: no, it isn't. i can find out. \n\ngeorge: yeah? how? \n\njerry: there are ways. \n\njerry: y'know i remember when i was a kid growin up, kids would make fun of my name like you wouldn't believe-- \"jerry jerry dingleberry\", and-hu \"seinsmelled\"... \n\nwoman: \"seinsmelled\"? \n\njerry: yeah. a-hu. what about you? did people make fun of your name? \n\nwoman: are you kidding? they were merciless! what do you expect when your name rhymes with a part of the female anatomy? \n\nwoman: (con't) of course, not everybody can be as sweet as you are. \n\nwoman: oh, oh jerry... \n\njerry: oh... *you*... \n\ngeorge: now let's try \"breast\"... celeste... kest... \n\njerry: no. \n\ngeorge: rest... sest... hest... \n\njerry: \"hest\"? that's not a name. \n\ngeorge: what, you should've just asked her. \n\njerry: i know, i should've asked her. \n\ngeorge: what're you gonna do now? \n\njerry: i dunno. i can't ask her now; i've already made out with her. once you make out with a woman, you can't ask her her name. \n\ngeorge: aretha! (points finger at jerry) \n\njerry: no... \n\ngeorge: bovary! (points finger again at jerry) \n\njerry: alright, that's enough. (sips coffee) \n\ngeorge: alright, well you know what'cha gotta do, you gotta go through her purse. y'know, the-the credit cards, driver's license... \n\njerry: how am i gonna do that? \n\ngeorge: when she goes to the bathroom. \n\nkramer: ah, (smacks hands) there you are. my date stood me up. listen, will you guys go to the operation with me? \n\njerry: you asked a date to go to the operation? \n\nkramer: yeah... so c'mon, (smacks hands and rubs them together) what d'you say? \n\ngeorge: what kind of operation is it? \n\nkramer: spleenectomy. \n\ngeorge: isn't that where they remove the-- \n\nkramer: no no, don't ruin it for me, i haven't seen it yet! ah-c'mon, what d'you say? \n\ngeorge: mulva! (again pointing finger at jerry -- kramer watches the exchange back and forth) \n\njerry: mulva? (waves off george with his hand) \n\nkramer: c'mon, c'mon. you wanna go? (pats jerry a couple times on the shoulder quietly) c'mon. yeah, yeah, yeah. \n\njerry: alright, alright. just let me finish my coffee... then we'll watch 'em go slice this fat bastard up. (sips coffee) \n\ndoctor: now we'll open the peritoneal cavity, exposing the body's internal organs. nurse-- retractor. \n\njerry: what are you eating? \n\nkramer: junior mints. do you want one? \n\njerry: no... \n\nkramer: now, i can't see..... psst.... psst... \n\nkramer: ... cou, ye, ge... \n\nkramer: y-ea (pours a few more junior mints into his hand and eats them) \n\njerry: where'd you get those? \n\nkramer: the machine. you want one? \n\njerry: no. \n\nkramer: here, take one. \n\njerry: i don't want one. \n\nkramer: no, they're good! take one.. \n\njerry: i don't want any! \n\nkramer: just take one. \n\njerry: no! stop it! kramer, stop it! \n\n[as they struggle to force the junior mint on each other, jerry pushes kramers' hand away and -- in slow motion with the sound of a beating heart to emphasize the event -- the junior mint is launched into the air towards the operating table and, well, in a word: \"bingo\" -- with a small \"splat\" sound -- falls into roy, the patient. the surgical team looks around puzzled as to what just happened -- but they continue on with the operation) \n\njerry: (pointing at the operation he mouths the words) did it go in? \n\nkramer: ge-- \n\njerry: ...over the balcony, bounced off some respirator thing *into* the patient! \n\ngeorge: what do you mean \"into the patient\"? \n\njerry: into the patient, *literally*! \n\ngeorge: into the hole? \n\njerry: yes, the hole! \n\ngeorge: didn't they notice it? \n\njerry: no! \n\ngeorge: how could they not notice it?!? \n\njerry: because it's a little mint. it's a *junior* mint. \n\ngeorge: w-ca-what did they do? \n\njerry: they sealed him up with the mint inside. \n\ngeorge: they *left* the junior mint *in* him? \n\njerry: yes! \n\ngeorge: i-i guess it can't hurt him... people eat *pounds* of those things. \n\njerry: yes they *eat* them. they don't put them next to vital organs in their abdominal cavity! \n\njerry: yeah. \n\nelaine: it's me. \n\njerry: come on up. \n\nkramer: hey. this wallpaper is *very* good. my place looks like a ski lodge! \n\njerry: why did you force that mint on me? i told ya i didn't want the mint! \n\nkramer: well, i didn't believe you. \n\njerry: how could you not believe me?!? \n\nkramer: well who's gonna turn down a junior mint? it's chocolate, it's peppermint-- it's *delicious*! \n\njerry: that's true. \n\nkramer: it's very refreshing! \n\njerry: well, just don't say anything about this to elaine... \n\nelaine: prognosis... negative. \n\njerry: prognosis *negative*!? \n\nelaine: he's not doing well, the doctors don't know what it is. they're baffled. \n\njerry and kramer: oh, my god... \n\nelaine: just my luck, y'know... just when he's getting thin and attractive. y'know jerry, you should buy some of his art. that would really lift his spirits. \n\ngeorge: it's that bleak? (pours a glass of milk) \n\nelaine: mmm... (elaine goes to the bathroom) \n\ngeorge: y'know if the guy dies, the art could really be worth something... \n\njerry: we gotta confess. \n\nkramer: really? \n\njerry: yes! \n\nkramer: we could be tried for murder... \n\njerry: i can't have this on my conscience. we're like leopold and loeb! ** \n\n(** footnote: see short bio at end of script **) \n\nkramer: you're not gonna say anything, you got that? \n\njerry: i'm telling and you can't stop me! \n\nkramer: you're *not*!!! \n\ngeorge: hey elaine? put me down for some of that art. 1,900 dollars worth. \n\njerry: oh yeah, that's the spot... \n\nwoman: what're you so tense about? \n\njerry: oh, nothing really, just a homicide. [she finds the right spot on his back] oh that's terrific... mulva. \n\nwoman: what? \n\njerry: mulva? \n\nwoman: mulva? \n\njerry: oh my eh, my aunt's name is mulva. she's-she's a masseuse. \n\nwoman: huh. \n\njerry: yeah. \n\nwoman: um, i'm going to the bathroom. i'll be right back. \n\njerry: oh, good idea... \n\nwoman: what are you doing? \n\njerry: oh, i was just looking for er, some... gum or... mint. \n\nwoman: oh, i have junior mints. \n\njerry: no! [throws her purse back at her] no, i mean, no thank you, nah... \n\nkramer: any news? \n\njerry: [whispering] no, no news. you better get out of here. \n\nkramer: oh. \n\njerry: oh no, wait a second... wait a second... i-i don't know the name of this woman in the bathroom, so when she comes out, you introduce yourself and then she'll be forced to say her name. \n\nkramer: 10-4. \n\njerry: o.k. (closes the apartment door) \n\nwoman: oh, hello. \n\nkramer: hello, i'm kramer. \n\nwoman: nice to meet you. \n\nkramer: see you later. (he promptly turns and leaves) \n\nwoman: well, i better get going. i don't want to be late for the play. (grabs her coat.) \n\njerry: oh, okay. \n\nwoman: y'know my cousin knows the producer. i may get to go backstage and meet olympia dukakis. \n\njerry: oh, hey, there's a name you don't forget. \n\nwoman: mm. bye jerry. \n\njerry: bye. \n\nwoman: oh, hi. \n\ngeorge: oh, hi, i'm george. (they shake hands) \n\nwoman: oh, nice to meet you, george. \n\ngeorge: yeahaha, i gave it a shot (pats jerry on the arm)... so, any word on the \"artiste\"? (puts a video in the vcr) \n\njerry: no, i haven't heard anything. \n\ngeorge: hehe. well, i got my triangles. (sitting on the couch) \n\njerry: really... \n\ngeorge: yup, y'know, they really spruce up the apartment. \n\njerry: yeah, i'm sure... \n\njerry: well, i-i gotta call the hospital. i gotta tell 'em what happened. \n\ngeorge: no-no jerry. i wouldn't do that. \n\njerry: why? \n\ngeorge: ehh, you could get in trouble. \n\njerry: look, i gotta try and help the guy. \n\ngeorge: who are you to play god!? every man's time comes! if his number is up, who are you to interfere!? \n\njerry: yes i'd like to speak with dr. siegel... it's about roy kordic's condition... \n\ngeorge: w-what? what? \n\njerry: oh, that's *fantastic*! \n\ngeorge: he didn't get better, did he? \n\njerry: thank you very much. o.k. bye-bye. he's gonna be okay! \n\ngeorge: where's the luck? there's no luck. 1,900 dollars down the drain. \n\nroy: you saved my life, george. you buying my art is what inspired me to get better. i'll never forget what'cha did for me. \n\ngeorge: oh, well th-that's great. it's really great. hm hm mm. \n\nkramer: y'know, art's a great investment. \n\nelaine: and they're gonna look great in your apartment, george. \n\ngeorge: yes i look forward to many years of... looking at the triangles. well, i'll ah, i'll wait for you outside. \n\nroy: hey, george... \n\ngeorge: yeah. \n\nkramer: awe, alright \n\njerry: that's nice. \n\ngeorge: thanks roy. \n\nroy: heeyy - there's the guy who saved my life. (points at the doctor.) \n\ndoctor: y'know... i don't want to totally discount the emotional element in your recovery but, i think there were other factors at play here. \n\njerry: what do you mean? \n\ndoctor: i have no medical evidence to back me up but, something happened during the operation that staved off that infection. something beyond science. something perhaps, from above... \n\nkramer: mint? \n\ndoctor: those can be very refreshing. \n\nroy: so elaine... where are we going for our big dinner on friday? (takes a big mouthful of spaghetti) \n\nelaine: uh-m, uh i'm so sorry roy, but actually, we are going to the, poconos on friday, right honey? (pointing to jerrythe boyfriend?) \n\njerry: i don't think so... \n\nelaine: we are... that means that we ah, we are... \n\njerry: i believe we're not... \n\nelaine: (catching another glimpse of roy eating) hunh, please can we go to the poconos? \n\njerry: well, i'll think about it... \n\nwoman: great seats. you could see the actors spitting. \n\njerry: really... \n\nwoman: uh-huh. and afterwards we went backstage and olympia dukakis autographed my playbill. \n\njerry: oh, wait a second, you got her autograph? \n\nwoman: yeah. \n\njerry: do you have it with you? \n\nwoman: yeah, it's in my purse. \n\njerry: ah, le'me see. (hands jerry the playbill) \n\nwoman: y'know i really think i'm falling for you, jerry seinfeld. (stands up, a quick kiss on the cheek and hugs him.) \n\nwoman: oh, well, i really think i'm falling for you... [opens the playbill and flips five pages till he finds and reads autograph] .....joseph puglia... \n\nwoman: i had it autographed for my uncle. \n\njerry: yeah, i-i know... \n\nwoman: (licks he lips) you don't know my name, do you? \n\njerry: yes i do. \n\nwoman: what is it? \n\njerry: it-it rhymes with a female body part. \n\nwoman: what is it? \n\njerry: mulva... \n\njerry: aub, ah, gipple? \n\njerry: loleola? \n\njerry: oh! oh! *delores*! \n\njerry: ages zero through ten, candy is your life. there's nothing else. family, friends, school-- they're only obstacles in the way of getting more candy. and you have your favorite candies that you love. you know the ones i love those... i hate those...''. ``i hate those... i love those...''. and only a seven year old kid could actually taste the difference between like a red m&m and a light brown, m&m. that's two totally different things when you're seven years old. \"well, your red is more of a main course m&m, but the brown it's more of a mellower flavor; it's an after dinner m&m, really''. \n\njerry: ...and it *is* embarrassing, because a doggie bag means either you are out at a restaurant when you aren't hungry, or you've chosen the stupidest possible way to get dog food that there is. how about the doggie bag on a date? that's a good move for a guy, huh? lemme tell you something if you're a guy and you ask for the doggie bag on a date, you might as well have them just wrap up your genitals too. you're not going to be needing those for awhile, either. \n\njerry: is that bothering you? \n\nelaine: no, not at all... \n\nelaine: oh, could you please hurry? \n\njerry: [mockingly] \"please hurry\". look at you. look at what you've become. \n\nelaine: what? what have i become? i haven't \"become\" anything... \n\njerry: oh, *carl* can't wait a few more minutes? \n\nelaine: i don't want to keep him waiting... \n\njerry: he'll like you more... \n\nelaine: that's impossible... \n\nwife: andrew, why do you have to pick your teeth at the table? \n\nhusband: leave me alone. \n\njerry: yeah, i'm wanting to get married *real* soon... \n\njerry: so, where am i dropping you? \n\nelaine: his place... \n\njerry: this guy's got quite a racket. i take you to dinner and then drop you off at his apartment... \n\nelaine: *and* he gets the rest of my chicken... \n\njerry: so, is tonight \"the night\"? \n\nelaine: you never know... \n\njerry: oooh! bay-bee *doll*! \n\njerry: boy, do you smell something? \n\nelaine: do i smell something? what am i, hard of smelling? of *course* i smell something. \n\njerry: what is it? \n\nelaine: i think it's b.o.! \n\njerry: what? \n\nelaine: it's b.o. the *valet* must have had b.o. \n\njerry: it *can't* be. nobody has b.o. like this. \n\nelaine: jerry. it's *b*.*o*. \n\njerry: but the whole car smells. \n\nelaine: so? \n\njerry: so when somebody has b.o., the \"o\" usually stays with the \"b\". once the \"b\" leaves, the \"o\" goes with it. \n\nelaine: i can't believe you ski! \n\ncarl: i'm a great skier. \n\nelaine: yeah? what else? \n\ncarl: let's see... i ski, i fish, i pillage, i plunder... \n\nelaine: [delightedly] oh! you \"pillage and plunder\"? \n\ncarl: ...when i travel. \n\nelaine: see? finally, *finally* i get to meet a man who pillages and plunders! i'm so lucky. \n\ngeorge: this'll only take a second. \n\nkramer: yeah, i'm going to poke around... \n\ngeorge: [to himself] hey, whatd'ya know? look at that! a *lesbian* sighting. oh-ho! my lucky day. they're *so* fascinating. why is that? because they don't want us. you gotta respect that... \n\ngeorge: [to himself] oh, my god! it's susan! what do i do? \n\nsusan: george? \n\ngeorge: [to himself] argh! [to susan] susan! hi! oh, boy! what are you doing here?! \n\nsusan: renting a video! what do you got there? \n\ngeorge: oh, ... some stupid movie... \n\nsusan: this is mona. \n\ngeorge: oh, hi... \n\nmona: pleasure to meet you. \n\ngeorge: yes. well... \n\nmona: well, i'll let you two, uh... catch up. \n\nsusan: you okay? \n\ngeorge: yeah. yes! i just haven't seen you in a long time. \n\nsusan: and you didn't expect me to be holding hands with a woman. \n\ngeorge: oh, *please*! me? c'mon! that's *great*! are you kidding? i think thats fan*tastic*! i've always encouraged experimentation! i'm the first guy in the pool! who do you think you're talking to? \n\nsusan: i *know* who i'm talking to. \n\ngeorge: of course you do... it's just, uh, y'know, i-i never *knew*, uh, that, uh... \n\nsusan: i liked women? \n\ngeorge: there you go. \n\ngeorge: so, uh, how long has this been going on? \n\nsusan: since you and i broke up. \n\ngeorge: ssssso, after me, you... went that way? \n\nsusan: yeah. \n\ngeorge: oh, i think that's fantastic. good for you. nice. that's very nice. \n\nsusan: so, what have you got there? \n\ngeorge: oh, i, uh-- \n\nsusan: oh, ``rochelle, rochelle'' \n\ngeorge: it's a foreign movie... a *film*, is what it is, actually. \n\nsusan: yeah... a lot of nudity in that, huh? \n\ngeorge: no, no, no... just a *tiny* bit... it's not even *frontal* nudity. it's... *sidal* nudity... \n\nclerk: next. \n\ngeorge: oh, that's me. \n\nsusan: alright, well... good seeing you, george. \n\ngeorge: yes, good to see you, too. and good luck with, uh... with the whole thing, there. \n\nclerk: uh, what are you returning? \n\ngeorge: [embarrassed pause] ``rochelle, rochelle''. \n\nclerk: ah, ``rochelle, rochelle''... \"a young girl's strange, erotic journey from milan to minsk\"... \n\nclerk: uh, that'll be, uh... $3.49. \n\ngeorge: $3.49? it says $1.49. \n\nclerk: well, you didn't rewind it. there's a $2.00 charge for not rewinding. \n\ngeorge: what! there's no signs here! this is an outrage! \n\nkramer: george, don't give him any money for that. it'll cost you less to keep it another day, rewind it and bring it back tomorrow. don't give him the satisfaction. \n\ngeorge: i'm not giving you the satisfaction. i'm gonna watch it again... \n\njerry: so, this morning i go down to the garage to check the car out. i figure by this time, the odour molecules have had at least twelve hours to de-smellify. i open the car door, like a *punch* in the *face*, the stench hits me-- it's almost as if it had *gained* strength throughout the night... \n\nelaine: y'know i can think of at *least* six known offensive odours that i would *rather* smell than what's livin' in your car. \n\njerry: what about skunk? \n\nelaine: i don't mind skunk. \n\njerry: horse manure? \n\nelaine: i *loooove* horse manure. \n\njerry: well, i've never seen anything like this in my life. in fact, i went to the car wash, they want 250 dollars to detail it, and get the smell out. i'm not payin' for that. that's not my responsibility. in fact, i'm drivin' up to that restaurant now, and *demand* they pay for it. \n\nelaine: absolutely. \n\nelaine: listen, lemme ask you something. when you're with a guy, and he tells you he has to get up early, what does that mean? \n\njerry: it means he's lying. \n\nelaine: wow... \n\njerry: why? is that what he told you? \n\nelaine: yeah, last night. oh, come on... men *have* to get up early some time... \n\njerry: no. never. \n\nelaine: jerry! i'm *sure* i've seen men on the street early in the morning. \n\njerry: well, sometimes we do actually have to get up early, but a man will *always* trade sleep for sex. \n\nelaine: is it possible i'm not as attractive as i think i am? \n\njerry: anything's *possible*... \n\njerry: what's the matter with you? \n\nkramer: steinbrenner! he's ruinin' my life... \n\njerry: oh yeah, steinbrenner... \n\nkramer: i don't think i can take another season with him, jerry. he'll just trade away their best young prospects, just like he did with beuner, mcgee, drabek... mcgriff... \n\njerry: i know the list... \n\nkramer: what's that smell? \n\njerry: what smell? \n\nkramer: ooooh... you stink. \n\njerry: whatd'ya mean i stink? \n\nkramer: you *stink*. why don't you go take a shower? \n\njerry: i showered! oh, wait a second... since i showered, i've been in the car! \n\nelaine: so? \n\njerry: don't you see what's happening here? it's attached itself to me! it's alive! \n\nelaine: if it attached itself to you, then... oh, my god! that's why carl said he had to get up early! because i stink! jerry, he thinks i have b.o.! me! \n\nkramer: what happened? \n\njerry: what happened? my car *stinks* is what happened. and it's destroying the lives of everyone in it's path. \n\ngeorge: what is that? b.o.? \n\njerry: yeah. \n\ngeorge: this is *unbelievable* b.o. \n\njerry: i know... i was at the car wash this morning and the guy told me in his 38 years in the business, he's never smelled anything like it. \n\ngeorge: so, let me ask you. do you think i could have done this? \n\njerry: no, no. it's the valet guy. \n\ngeorge: no, no, i mean, driving susan to lesbianism. \n\njerry: oh... no, that's ridiculous. \n\ngeorge: what if her experience with me *drove* her to it? \n\njerry: suicide, maybe, not lesbianism. \n\ngeorge: the woman she's \"lesbianing\" with? susan told me she's *never* been with a guy. \n\ngeorge: oh, this isn't even b.o.! this is *beyond* b.o.! it's *b*.b.o.! \n\njerry: there should be a b.o. squad that patrols the city like a \"smell gestapo\". to sniff 'em out, strip 'em down, and wash them with a big, soapy brush... \n\ngeorge: y'know, the funny thing is, somehow i find her more appealing now... it's like if i knew she was a lesbian when we went out, i never would've broken up with her. \n\njerry: lemme see if i understand this... on second thought... \n\njerry: here he is... that's the guy! (rolls up window) no, thank you, go back... go back... i'll park it! you go back! \n\nrestaurateur: what do you mean-- \"stunk up\"? \n\njerry: i mean the car *stinks*! george, does the car stink? \n\ngeorge: stinks. \n\njerry: stinks! \n\nrestaurateur: well, perhaps *you're* the one who has the odour... \n\njerry: hey, i've never smelled in my *life*, buddy! \n\nrestaurateur: really? well, i smell you now. \n\njerry: that's from the car! \n\nrestaurateur: well, maybe *you're* the one who stunk up the car, rather than the car stinking up you! \n\ngeorge: oh, it's the chicken and the egg... \n\njerry: thank you very much... well, then go out and smell the car; see which smells worse. \n\nrestaurateur: i don't have time to smell cars. \n\ngeorge: forget about smelling the car. smell the valet. go to the source... \n\njerry: you've gotta smell the car \n\nrestaurateur: i'm a busy man \n\njerry: c'mon! one whiff! \n\nrestaurateur: alright, one whiff... \n\nrestaurateur: alright! i give up! i admit it! it stinks! now will you let me out! \n\njerry: alright, will you pay for the cleaning? \n\nrestaurateur: yes! 50 dollars! i'll give you 50 dollars! \n\nrestaurateur: i'm not paying for *that*. they've already got my seven dollars... [sarcastically] \"...erotic journey from milan to minsk\"... \n\ncarl: the valet had such bad b.o.? \n\nelaine: oh, man, just *rampant*, **mutant** b.o. the \"o\" went from the valet's \"b\", to the car, to me. it clings to everything. jerry thinks it's an entity. but i showered and i shampoo'ed, so... \n\ncarl: that's a relief... \n\nelaine: what? \n\ncarl: it's still there... \n\nelaine: no, no, no! it *can't* be! i shampoo'ed! i rinsed! i repeated! \n\ngeorge: listen, i gotta ask you i was a little concerned that perhaps i was responsible in some way for your, uh... metamorphosis. \n\nclerk: that'll be $98.00. \n\ngeorge: what $98.00? \n\nclerk: that's what i said. $98.00. \n\ngeorge: how could that piece of *crap* cost $98.00!? \n\ngeorge: so, was it me? \n\nsusan: oh, don't be ridiculous! is that what you wanted to talk to me about? [gives him the $35] here. \n\ngeorge: oh, thanks. thanks a lot. i'll pay you back. \n\nsusan: yeah, *sure*... i gotta go. \n\ngeorge: listen. let me ask you something. if you and mona were ever to... dance, how do you decide who leads? i mean... do you take turns? do you discuss it beforehand? how does that work? \n\nsusan: you're an idiot. \n\ngeorge: why? that's a *legitimate* sociological question. \n\nsusan: i'll see ya. and george, by the way... you stink... real bad. \n\ngeorge: it's not me! it's the car! \n\nmona: i didn't think i'd come. \n\nkramer: i knew you would. \n\nmona: oh, kramer! \n\ncar washer: we spray everything with ozium-d, let it de-ionise, vacuum the spray out with a de-ionising machine. hit it with high-pressure compressed air, and wet-dry vac it to extract the remaining liquids. we top it off with one of our seven air-fresheners, in your case, i would recommend the jasmine, or the potpourri. \n\njerry: let's do it. \n\nhairdresser: the first thing we're gonna do is flush the follicles with the five essential oils. then, we put you under a vapour machine, and then a heated cap. then, we shampoo and shampoo and condition and condition. then, we saturate the hair in diluted vinegar-- two parts vinegar, 10 parts water. now, if that doesn't work, we have one last resort. tomato sauce. \n\nelaine: tomato sauce? \n\njerry: wait a minute! it still smells! it still smells! \n\ncarl: it still smells. \n\njerry: it still smells! \n\ngeorge: how could it still smell after all that? \n\njerry: i don't know! \n\ngeorge: well, what are you gonna do? \n\njerry: i'll tell you what i'm gonna do, i'm selling that car! \n\ngeorge: you're *selling* the car!? \n\njerry: you don't understand what i'm up against. this is a force more powerful than anything you can imagine. even *superman* would be helpless against this kind of stench. and i'll take anything i can get for it. \n\ngeorge: maybe i'll buy it. \n\njerry: are you crazy? don't you understand what i'm saying to you? this is not just an odour-- you need a *priest* to get rid of this thing! \n\nelaine: i still smell! \n\njerry: you see! you see what i'm saying to you? it's a presence! it's the beast! \n\nsusan: kramer! kramer! kramer, open up, i know you're in there! \n\njerry: susan! \n\nsusan: kramer! \n\njerry: what is going on? \n\nsusan: you know what's going on? first, he vomits on me. then, he burns down my father's cabin. and now, he's taken mona away from me. \n\ngeorge: he stole your girlfriend? \n\nsusan: yes. she's in *love* with him. \n\ngeorge: amazing. i drive them to lesbianism, he brings 'em back. \n\njerry: that's the *least* of what you've accomplished... \n\nelaine: wait a minute, wait a minute. kramer, kramer... hold on a second. i don't get this. this woman has *never* been with a man her *entire* life-- \n\nkramer: i'm kramer. \n\ngeorge: i know what you're going through. women. who knows what they want? \n\nsusan: i just don't know what she sees in *kramer*. \n\ngeorge: listen. you're beautiful. you're intelligent. you'll meet other girls... \n\nsusan: you think so? \n\ngeorge: yes, i know so. you happen to be a very eligible lesbian. \n\nsusan: you're very sweet... \n\ngeorge: hey, i know what i'm talking about. i gotta be honest with you, i gotta tell ya... ever since i saw you holding hands with that woman, i can't get you out of my mind. \n\nsusan: really? \n\ngeorge: yeah, you're just so... hip. \n\ngeorge: oh, my god... \n\nsusan: what? \n\ngeorge: it's allison. i dated her right after you. she's obsessed with me. \n\nallison: george? \n\ngeorge: allison! hi! oh, my god! how are you? \n\nallison: good. you know, you owe me $50... \n\ngeorge: right. i don't have it on me. allison, this is susan. susan, allison. \n\nallison: nice to meet you... \n\nsusan: nice to meet you... \n\nallison: that's a beautiful vest... \n\nsusan: thank you... \n\nkramer: i don't understand it. i was with her last night in my apartment; it was very romantic. y'know with that fake wood wallpaper, the atmosphere is *fabulous* in there, now. it's like a ski lodge. \n\nsalesman: what year did you say this was? \n\njerry: '90. \n\nkramer: anyway, we were on the couch, i move to hug her, next thing she tells me she's leaving; she's got to get up early. \n\njerry: that's strange... \n\nsalesman: how many miles you got on this thing? \n\njerry: 23 000. \n\nkramer: and i was looking good, too. i had a nice, new shirt on, i'm wearing *your* jacket... \n\njerry: wait a second... my jacket! i wore that in the car! the beast! \n\nsalesman: i can't sell this car. \n\njerry: this... **thing**... has got to be stopped! \n\nhairdresser: so, what do you want to do? \n\nelaine: sauce me. \n\njerry: i have a friend who is about to get married, they're having the bachelor party and the bridal shower on the same day... so it's conceivable that while she's getting the lingerie, he'd be at a nude bar watching a table dancer wearing the same outfit. that is possible. but to me, the difference between being single and being married, is the form of government. you see, when you're single, you are the dictator of your own life. i have complete power. i can give the order to fall asleep on the sofa with the tv on in the middle of the day, no-one can overrule me! when you're married, you're part of a vast decision-making body. before anything gets done there are meetings. committees have to study the situation. and this is if the marriage works. that's what's so painful about divorce you get impeached and you're not even the president! \n\ngeorge: hey, is it my imagination, or do really good looking women walk a lot faster than everybody else? \n\nelaine: we don't walk that fast... \n\ngeorge: no seriously... \n\nelaine: seriously, we don't. \n\ngeorge: the better looking they are, the faster they go! i mean, i see they out there on the street, they're zooming around, like a blur. like they have a motor on their ass. \n\nelaine: (yelling to jerry in the bedroom) hey jerry, come on, let's go. we're gonna miss the previews! \n\nelaine: hey, how are we gettin' to scott drake's party on saturday night? \n\njerry: oh, drake's party, i forgot to buy a present. \n\ngeorge: i gotta buy a present now? \n\nelaine: of course you do, it's an engagement party. \n\ngeorge: it never ends, this present stuff! engagement present! then they get married, you gonna have to get them something for that! then the baby, there's another present. then the baby starts getting their presents. i don't even like drake. \n\njerry: you don't like the drake? \n\ngeorge: hate the drake. \n\nelaine: i *love* the drake. \n\njerry: how could you not like the drake? \n\ngeorge: who's the drake? \n\nelaine: \"who's the drake\"? \n\njerry: the drake is good! \n\nelaine: so listen, what are you gonna get him? \n\ngeorge: i haven't even met the fiancee! whatever! (leaves for washroom) \n\njerry: elaine, look. i drew this triangle free-hand. it's a doodle. it's perfect! \n\nelaine: so what? that's easy. \n\njerry: easy? \n\nelaine: hi! hey, have you gotten your present yet for the drake? \n\nkramer: uh, no, no, not yet. \n\njerry: do you like the drake? \n\nkramer: i *love* the drake! i'm looking forward to meeting the drakette! \n\nelaine: i'm lukewarm about the drakette. \n\nkramer: (looking at jerry's doodle) that's a nice triangle... \n\njerry: it's isosceles \n\nkramer: ooh, isosceles. i love the name isosceles. if i had a kid, i would name him isosceles. isosceles kramer. \n\nelaine: hey, you know what, maybe we should all chip in for the gift. \n\njerry: the chip-in! \n\nelaine: hey, a pretty good idea, huh? \n\njerry: yeah! \n\nkramer: yeah, the chip-in, defenitely! \n\njerry: you know what, let's go to that mall in liberal(sp?) before we go to the party. we'll have to take your car, it's got the most room. \n\nkramer: no, no! my car's not running. \n\njerry: what about your father's car? \n\ngeorge: no, no, no. out of the question. i was over there today. he's got the good spot in front of the good building in the good neighbourhood. i know he's not gonna wanna move. \n\njerry: are you serious? \n\ngeorge: you don't know what that spot means to him. once he gets it, he doesn't go out for weeks. \n\njerry: how about this, you put your car in the good spot, that'll hold the good spot in front of the good building, and we can get the good car! \n\ngeorge: good thinking! \n\njerry: good to meet you! \n\nelaine: so what are we gonna get him? \n\njerry: we could get him anything we wanted, we're chippin' in. \n\ngeorge: i like this area. i could live out here. \n\nkramer: yeah, we ought to all get a house and live together. \n\njerry: yeah, that's a good idea. i'll tell you what chuckles, i give you permission to sublet my room right now. \n\ngeorge: look at this. there's no spaces here. (to another car) excuse me, are you gettin' out? \n\nman in car: no! \n\nkramer: why don't you take a handicap spot... \n\ngeorge: you think? \n\nelaine: no, no! we'll find a space. there's spaces in the other lot. \n\ngeorge: i don't want to walk that far. \n\nelaine: what if a handicapped person needs it? \n\nkramer: oh, come on, they don't drive! \n\njerry: yes, they do! \n\nkramer: have you ever seen a handicapped person pull into a space and park? \n\njerry: well there's spaces there, they must drive! \n\nkramer: well they don't. if they could drive, they wouldn't be handicapped. \n\nelaine: so if you can drive, you're not handicapped? \n\ngeorge: look, we're not gonna be that long anyway... we have to get to the \"party\"! \n\nkramer: i got news for you handicapped people, they don't even want to park there! they wanna be treated just like anybody else! that's why, those spaces are always empty. \n\ngeorge: he's right! it's the same thing with the femenists. you know, they want everything to be equal, everything! but when the check comes, where are they? \n\nelaine: what does that mean? \n\ngeorge: yeah! alright, i'm pulling in. \n\nkramer: yeah, go ahead. \n\nelaine: george! \n\ngeorge: oh, come on, it's five minutes. \n\nkramer: make sure we don't forget where the car's parked. \n\njerry, george, elaine: don't worry. we won't forget! \n\njerry: do you believe the deal we got on this? a big screen tv? at that price? \n\nelaine: what a sale, huh? and how about that store, delivering it tonight? we're gonna be swimming in 'thank you's... \n\ngeorge: what did i get the veggie burger for? you got a veggie burger, so i had to get the veggie burger, i'm allover crums... \n\njerry: no-one's gonna have a better gift than this big screen tv! good for them, love the drake! \n\nelaine: got to *love* the drake! \n\njerry: hey, what's going on over here? \n\nelaine: must have been an accident... \n\njerry: (to a woman) hey, what's going on? \n\nwoman: some jerk parked in a handicap spot, so this woman in a wheelchair had to wheel up this incline, and half way up her batteries gave up, and she rolled backwards into the wall. taken her to st. elizabeth's... \n\njerry: is she ok? \n\nwoman: i don't know. we're just waiting here for the owner of this car to show up. may not get out alive! thug! taking up a handicap spot? he's gonna pay! \n\njerry: son's of bitches! good luck finding them... him... whatever. i'd like to stick around and get my hands on him myself, but i gotta take off. \n\ngeorge: how are we gonna get out of here? they'll kill us! \n\nelaine: (to george) are you happy now? \n\nkramer: who would think these people we're gonna be here? \n\njerry: i don't know... \n\nelaine: what about the party? what about the drake? \n\ngeorge: screw the drake! \n\njerry: i love the drake! \n\nkramer: let's just take a bus back to the city. \n\ngeorge: can't leave the car here! \n\nkramer: why not? \n\ngeorge: it's my father's car! \n\nman: let's smash it! \n\neverybody: yeah! yeah! \n\njerry: let's get out of here. \n\ngeorge: what are we gonna do? how are we gonna get out of here? \n\njerry: the thing is, even if we go back by the car, and there's nobody there, how do we know they're not all hiding, waiting for us? \n\nelaine: well, they have to give up some time, they can't stay out there all night? \n\njerry: what are we, john dillinger? how did this get to be the crime of the century? it's not like we stuck a broomstick in her spokes and she went flying... \n\ngeorge: what i don't get is, just because the battery is dead, you think she'd be able to roll up the hill with her hands! \n\nkramer: you'd think... \n\ngeorge: i mean, batteries have gone dead before, aren't they prepared for that? \n\nkramer: most of them don't even have batteries. \n\ngeorge: must be one of those rich, spoiled handicapped people, who didn't want to do any work, and just wanted to sit in her wheelchair and take it easy. \n\nkramer: yeah... \n\ngeorge: well, i'm sorry! \n\nelaine: our big screen tv is probably arriving right now... \n\ngeorge: how are we gonna get out of here? we need a plan! \n\njerry: i got it! (snaps his fingers) we give the keys to elaine. \n\nelaine: me? \n\njerry: yeah! you're a woman! men don't hit a woman! \n\nelaine: oh, they won't? \n\njerry: not if they don't know you... \n\nelaine: i'm not going for this, kramer should go! it was all his idea! \n\nkramer: no chance in hell! \n\njerry: what if we created some sort of diversion? what if we all went by the car and started screaming \"there he is, there's the guy that took the handicap spot!\" and then, when they all run into the other direction, we'll jump in the car! \n\ngeorge: that's good, we'll give it a try... \n\nelaine: that's good... \n\njerry: that doesn't work, we'll give 'em kramer! \n\nkramer: huh? \n\njerry: (as george picks up a broken piece of his car) you know, a lot of these scratches will buff right out... \n\nfrank: eight years have i had this car. not a scratch on it! eight years! \n\nfrank: a beautiful mercury! i special-ordered that bench seat! \n\ngeorge: dad, that other car cut us off! they had swastikas all over it... they were hurling racial epiphates at us... i could have been killed! \n\nestelle: (to frank) i told you not to give it to him! \n\nfrank: (to george) you know, my insurance doesn't cover this? the whole thing is a total loss! \n\nmahjong lady: frank, the important thing is, he didn't get hurt! \n\nfrank: no it isn't! \n\nmahjong lady: so what are you doing now, georgie? \n\ngeorge: i'm uh... writing a pilot for nbc... \n\nfrank: where the hell is my paper? \n\nmahjong lady: you're writing a pilot? \n\nestelle: with his friend, jerry seinfeld... the comedian... \n\nmahjong lady: so what's it about? \n\ngeorge: well, jerry's car gets hit and the other driver doesn't have any insurance, so the judge \n\nmahjong lady: this is the same situation! frank, maybe you ought to make him your butler! \n\nestelle: every time you're with that kramer, something happens... he's a real trouble maker! \n\ngeorge: nah, he didn't have anything to do with it... \n\nestelle: he's all together crazy, that one! jerry? i used to think was nice... i don't know what happened to him... \n\njerry: (to the drake) so it was a good party, huh? oh... you're welcome, you're welcome... (to elaine) they loved the tv, *loved* it! \n\nelaine: oh, yeah... \n\njerry: (to the drake) oh, wait a second, i'll ask her.. that's a great idea. (to elaine) drake wants to know if we want to come out to minneolis this afternoon, since we missed the partly last night, to maybe get something to eat? \n\nelaine: sure! \n\njerry: (to the drake) sure! ... okay... don't worry, i'm taking my car! ... okay... okay, see you later... bye... \n\njerry: the drake is great! \n\nelaine: hmm.. he's so nice! i'm really happy for them. \n\njerry: yeah. well, i don't know if i'm happy for them, i mean i'm glad they're happy, but, frankly, that doesn't do anything for me. \n\njerry: yes? \n\ngeorge: it's me. \n\njerry: come on up. \n\nkramer: hey. i just came from st. elizabeth's. \n\njerry: st. elizabeth's hospital? why? \n\nkramer: well, the handicapped woman? i went to see her. \n\nelaine: you went to see her? \n\nkramer: yeah. \n\njerry: wow, what happened? \n\nkramer: i'm in love. \n\njerry: what? \n\nkramer: yeah, she is the most beautiful woman i have ever seen. i love her jerry, i really love her. i'm gonna ask her to marry me. she's got everything i've always wanted in another human being. except for the walking. \n\njerry: oh, what's the difference, you don't go out that much. \n\nkramer: ah, i'm glad you're here. \n\ngeorge: what? \n\nkramer: alright, now, we gotta go out. we gotta buy a wheelchair. \n\ngeorge: a wheelchair? what for? \n\nkramer: well, you know i went to the hospital today, and i saw the woman, you know, and the wheelchair is totalled, we gotta get her another one! \n\ngeorge: doesn't she have collision? \n\nkramer: george, i'm in love with her! \n\ngeorge: well, my father works for the united volunteers, maybe he can get her one. \n\nkramer: no! she needs it now! \n\ngeorge: what about these two? aren't they gonna chip in? \n\nkramer: well... \n\nelaine: hey, we told you not to park there! \n\ngeorge: can't we just fix the old one? \n\nkramer: alright, alright. fine george! don't chip in! but some day, we're gonna be driving along, we're gonna look out the window, and see her crawling along 5th avenue! is that what you want? \n\ngeorge: alright, alright! we'll buy her a wheelchair! wheelchairs, engagement presents.. it never ends! \n\nsalesman: this is out best model. the cougar 9000. it's the rolls royce of wheelchairs. this is like... you're almost glad to be handicapped. \n\nkramer: so now, what's this got? \n\nsalesman: inductive joystick, dynamic braking, flip-up arms, it's fully loaded. i put stephen hawking in one of these two months ago, he's lovin' it! it's rated number one by hospital supply and prosthetic magazine. \n\ngeorge: how much? \n\nsalesman: 6200. \n\ngeorge: do you have something a little more... less expensive? \n\njerry and elaine: hey drake! hi drake! \n\njerry: hey alison! hey, there's the tv, elaine, look at that! \n\nelaine: my god this is fantastic! tell me, were you guys just blown away or what? \n\nthe drake: oh yeah, yeah... it's fantastic... \n\njerry: i am gonna make good use of this! i'm watching every superbowl here, every big fight.... \n\nelaine: oh man, there is nothing like a really big tv, huh? \n\njerry: so where're we eatin'? \n\nthe drake: well, actually... jerry... \n\nelaine: i'm *really* hungry! \n\nthe drake: ... we just broke up... \n\njerry: when did this happen? \n\nthe drake: about 20 minutes ago... hey, i am really sorry about this guys... whew! \n\njerry: (looking at the tv) look at the picture on this thing... \n\nelaine: oh, cristal clear! \n\njerry: they know how to make 'em... \n\nelaine: are there any good italian restaurants around here? \n\nthe drake: (through his sobbing) gagliano's... that's pretty good... \n\njerry: well... we should... \n\nelaine: get movin'... \n\njerry: yeah... hey, drake, what ever happens, i am sure it'll be for the best. \n\nelaine: take it easy. bye-bye alison! \n\nelaine: oh, the remote! okay, i'm just gonna put it on top of the television... \n\nsalesman: alright, this one is about 8 years old. not a scratch on it, it was owned by some lady who only used it to go from the bathroom to the kitchen and to feed her cat. \n\nkramer: but this'll get you around? \n\nsalesman: oh sure, it just doesn't have any of the thrills of the cougar. \n\ngeorge: like what? \n\nsalesman: for example, your tremor-damping. \n\nkramer: now what's that? \n\nsalesman: it helps to control the direction regardless of the operator's tremors or spasticity. \n\nkramer: well, is it alright if i try it? \n\nsalesman: hop in! \n\nkramer: oh yeah! \n\nsalesman: i tell ya... \n\nsalesman: when i see someone enjoying themselves like that, it reminds me why i got into this business in the first place. \n\ngeorge: how much? \n\nsalesman: how about $240? \n\ngeorge & kramer: we'll take it! \n\nelaine: drake gave her the tv? \n\njerry: he gave her all the gifts; he felt guilty. \n\nelaine: well, she can't keep it, it's not fair, that's *our* tv! \n\njerry: i know it is! \n\nelaine: boy, i am really starting to dislike the drake! \n\njerry: i hate the drake! maybe the whole thing was a scam. anybody can just get engaged and get presents and just keep them all. maybe they're on their way to chicago tomorrow and do the whole thing all over again. \n\nelaine: they don't know anybody in chicago. \n\njerry: don't worry, they'll make friends fast with that nice tv. \n\ngeorge: hey. \n\njerry: hey, guess what? the drake broke up. \n\njerry: i don't know about defraying. \n\ngeorge: why? \n\njerry: we're not gettin' that tv. \n\ngeorge: what do you mean? the engagement is off, we get the tv back. that's business. \n\nelaine: the drakette took it. \n\ngeorge: she can't take it. it's not hers, it's theirs. once there's no theirs there's no hers, it should be ours. \n\nelaine: well, she has it! \n\ngeorge: (upset) i *told* you the drake was bad! i hate the drake! \n\ngeorge: maybe we should call her. \n\nelaine: well, who's gonna call? \n\njerry: you are. \n\nelaine: what? why is it me who always has to do these things? \n\njerry: because that's your thing! \n\nelaine: what? calling people i hardly know, and demanding they return expensive gifts, that's my \"thing\"? \n\njerry: yeah, that's your thing. \n\nelaine: alright, gimme the phone... it's my \"thing\"... \n\njerry: (to george) you know, i'm thinking about getting a yo-yo. \n\ngeorge: really? \n\njerry: yeah. \n\ngeorge: i could see that... \n\n(alison through phone): hello? \n\nelaine: alison! hi, this is elaine... \n\n(alison through phone): i gave all the gifts to charity. \n\nelaine: oh, okay... well thanks a lot... sorry again about you and the drake... \n\n(alison though phone): i hate the drake. \n\nelaine: everybody does. bye-bye.... \n\nelaine: she gave it to charity. \n\njerry: charity?!? that's apalling. \n\ngeorge: how could anybody be so selfish and inconsiderate! \n\nkramer: well, i gave her the wheelchair! you should have seen the look on her face. and then she told me, that the old wheelchair, that wasn't any good anyway! so you see george, the whole incident was a god blessing! yeah! \n\ngeorge: you mean a blessing in disguise? \n\nkramer: yeah.... \n\nlady: and i would also like to personally thank our gracious host frank costanza, who has earned the silver circle award and is our unanimous choice for the united volunteer representative of the month! \n\nlady: due to his tireless effort, he personally raised over $22,000. that's a lot of wheelchairs! \n\nlady: on behalf of the united volunteers of greater new york, we thank you! \n\nfrank: well... thank you very much! \n\ncop: mr. costanza? \n\nfrank: yes? \n\ncop: you're under arrest. \n\nfrank: under arrest? what for? \n\ncop: reckless endangerment of public safety, and violation of traffic code 342-a. \n\nfrank: what's that? \n\ncop: parking in a handicap spot. let's go... \n\nfrank: george! george! \n\njerry: your father got arrested? for what? \n\ngeorge: parking in a handicap spot. right in the middle of his united volunteers meeting. when he got back, he chased after me with a baseball bat. \n\njerry: ho-ly! \n\ngeorge: between the car getting totalled, the towing charge and the fine, there's no way i can ever pay him back... \n\njerry: so what are you gonna do? \n\ngeorge: i agreed to become his butler. \n\njerry: what? \n\njerry: what's the matter? \n\nkramer: it's over! \n\njerry: what's over? \n\nkramer: me and lola.... \n\ngeorge: the woman we bought the wheelchair for? \n\nkramer: yeah, she dumped me! \n\njerry: she dumped you? \n\nkramer: she dumped me! she rolled right over me! said i was a hipster dufus. am i a hipster dufus? \n\njerry & george: (hesitatingly) ... no... \n\nkramer: said i'm not good looking enough for her. not good looking! jerry, look at me, look at my face, huh, am i beautiful? george, am i beautiful? \n\ngeorge: ...you're very attractive... \n\nkramer: yeah... she says she doesn't wanna see me again. told me to drop dead! \n\njerry: drop dead? \n\ngeorge: boy, even i never heard that one... \n\njerry: she's pretty rough! \n\nkramer: yeesh-jip! \n\ngeorge: well, we just blew 240 bucks on a wheelchair. \n\njerry: 240 bucks? \n\ngeorge: well, it was slightly used... \n\njerry: used? \n\nfrank (picking up his shoes): i don't think you did such a good job on these... \n\ngeorge: what!? \n\nfrank: you're supposed to your face there! do you see your face in there? \n\nfrank: yeah? ...oh really?...oh... how about that?... right down a hill huh? okay! alight! bye! \n\nfrank: george, forget about the shoes. want you to do something for me (scribbles something on a piece of paper). this handicapped woman had an accident. somebody gave her a used wheelchair with defective brakes. \n\ngeorge: sons of bitches! \n\nfrank: anyway, i want you to pick up this big screen tv, and deliver it to her. \n\ngeorge: big screen tv? \n\nfrank: do you think you can handle it? \n\nallison: yes? \n\ngeorge: hi, we're from the united volunteers, we've come to pick up the tv. \n\nallison: oh great, it's right over there. \n\nkramer: ooh, it's a big one! \n\ngeorge: who's got the receipt? \n\nelaine: i do. \n\ngeorge: will they give us cash? \n\njerry: that's their policy. \n\ngeorge: i hate this mall, there are never any spaces here... \n\nkramer: why don't you park in front of the hydrant? \n\ngeorge: what if there is a fire? \n\nkramer: what are the chances of that? \n\n[setting: night club] \n\njerry: to me, the whole concept of fear of success is proof that we are definitely scraping the bottom of the fear barrel. are we gonna have to have aa-type meetings for these people? they'll go \"hi, my name is bill, and the one thing i'm worried about is to have a stereo and a cream-colored couch.\" according to most studies, people's number-one fear is public speaking. number two is death. *death* is number two! now, this means to the average person, if you have to go to a funeral, you're better off in the casket than doing the eulogy. \n\n[setting: jerry's] \n\nkramer: why can't i play kramer? \n\njerry: look we've been through this already. you're not an actor! \n\nkramer: neither are you. \n\njerry: i know. so why do we need two people in the show that can't act? \n\nkramer: oh come on jerry. how hard is it to act. you say something, i'll pretend it's funny. \n\njerry: my grandmother's in the hospital. \n\nkramer: ha ha ha. your grandmother's in the hospital! \n\njerry: this is real believable. \n\nkramer: what you didn't think i was really laughing? \n\njerry: it stinks. \n\nkramer: let me see you do it. \n\njerry: say something funny. \n\nkramer: alright. i've never been to mars but i imagine it's quite lovely. \n\njerry: ah.......... \n\nkramer: mine was better than that! come on look. (starts to laugh again, jerry too) \n\ngeorge: why are two pretending to be laughing? \n\njerry: we're acting. (they stop laughing) \n\ngeorge: oh, real good. (george makes a face like you stink) any word from nbc? \n\njerry: no. \n\ngeorge: i don't understand. they're supposed to be casting this week. something's wrong. maybe they're not doing it. \n\nkramer: (to jerry) well at least let me audition. \n\njerry: (to george) he wants to play kramer in the pilot. \n\nkramer: (to george) yeah! \n\ngeorge: out of the question. \n\nkramer: oughh! \n\ngeorge: (to jerry) how could we not hear anything? what's with this russel? what's he doing? (jerry raises his arms and shoulders like he doesn't know) \n\n[setting: peter mcmanus cafe, an italian restaurant] \n\nrussell: i really appreciate you coming. \n\nelaine: oh, that's o.k. i don't have much time though. so... \n\nrussell: all right, first of all, i want to apologize for all the phone calls. it's just--it's just-- (awkward pause) i don't understand, we went out once... \n\nelaine: that was two months ago. \n\nrussell: yes i know. i just-- i can't get you out of my mind. ever since that-- that day in the restaurant when we met... (we see a flashback from 'the shoes' of elaine showing her cleavage and asking russell for his ketchup secret) \n\nelaine: russell, you are the president of nbc. you can have any woman you want. (picks up the bowl of munchies on the table) \n\nrussell: but i want you. \n\nelaine: god i hate these mixtures. why don't they just put pretzels on the table. even peanuts would be good, but i don't know how eats these cheesy things (she does). \n\nrussell: is it something i said... or did? \n\nelaine: um... look russell... you're a very sweet guy. but i got to be honest with you. i don't like television... and that's your world. that's your life. i mean maybe if you were in... i don't know... greenpeace or something, that would be different, but network television... i mean, come on, russell, you're part of the problem. \n\nrussell: oh elaine, we're doing some really very interesting things right now. we've got some very exciting pilots for next season. we have one with a bright young comedian, jerry seinfeld. \n\nelaine: oh yeah, oh yeah. i've heard of him. he's that \"did you ever notice this? did you ever notice that?\" guy. \n\nrussell: yeah. anyway it's a ground breaking show. \n\nelaine: really? what is it about? \n\nrussell: (a little more enthusiast) well, really, it's very unusual. it's about nothing. \n\nelaine: (surprised) what do you mean it's about nothing? \n\nrussell: (starts doing george at the first meeting with nbc in 'the pitch') for example, what did you do today? \n\nelaine: um, i got up. um, i went to work. then i came here. \n\nrussell: there's a show. that's a show. \n\nelaine: russell, see, i'm really not interested in this stuff and i do have to go to work (she gets up). so... \n\nrussell: (stops doing george, he's down again) elaine, when--when--when are we gonna see each other again. \n\nelaine: i'm sorry russell. i'm sorry o.k.? bye-bye. (russell, still sitting watches her leaving). \n\n[setting: jerry's] \n\njerry: hello? yeah he's here. (to kramer) hey! it's for you. \n\ngeorge: he's getting phone calls here now? (he's standing near the counter and eating chips out of a big bag) \n\njerry: (to george) again with the sweat pants? \n\ngeorge: what? i'm comfortable. \n\njerry: you know the message you're sending out to the world with these sweat pants? you're telling the world \"i give up. i can't compete in normal society. i'm miserable, so i might as well be comfortable.\" (george is baffled) \n\nkramer: (to the phone) hold on a second i got another call. hello? yeah, he'll call you back. (jerry and george look at each other) \n\njerry: (to kramer) who is it? \n\nkramer: that's nbc. \n\njerry: nbc!?! give me the phone! \n\nkramer: i'm in the middle of a conversation here. \n\njerry: get off the phone! \n\nkramer: (to the phone) look, i'll call you back. (hangs up) \n\njerry: you know i'm waiting to hear from them. who was it? \n\nkramer: russell dalrimple's secretary. \n\njerry: all right. now you're doing something to help me. (to the phone) hello yeah it's jerry seinfeld returning the call. uh-huh.. o.k. great thanks a lot. (hangs up)(to george) casting tomorrow at nbc. 400. we're in business baby, the pilot's on. you're gonna successful. (george looks disappointed) \n\n[setting: dana's office] \n\ngeorge: what if the pilot gets picked up and it becomes a series? \n\ndana: that'd be wonderful george, you'll be rich and successful. \n\ngeorge: yeah, that's exactly what i'm worried about. god would never let me be successful. he'd kill me first. he'd never let me be happy. \n\ndana: i thought you didn't believe in god? \n\ngeorge: i do for the bad things. \n\ndana: do you hear what you're saying? god isn't out to get you george. what... what is that on your lip? \n\ngeorge: what? \n\ndana: it's like a discoloration. it's white. \n\ngeorge: (gets up and picks a mirror) yes. yes, it's white. why it's white. \n\ndana: you'd better get that checked out. \n\ngeorge: better get that checked out? \n\ndana: i would. \n\ngeorge: what kind of a therapist are you? i'm telling i'm scared that something terrible is gonna happen to me, right away you start looking for tumors? \n\ndana: i'm trying to help you. \n\ngeorge: what are you like a sadist? no matter how bad somebody feels, you can make 'em feel worse. i bet you're rooting for a tumor. (pointing to her) \n\ndana: i think you'd better go. \n\ngeorge: oh i'm going baby! i'm going! (he leaves) \n\n[setting: jerry and george in a cab at a light] \n\njerry: where? \n\ngeorge: right here. (showing his lip) \n\njerry: get out of here, it's nothing. (jerry knows george is hypochondriac. see 'the heart attack') \n\ngeorge: (to the cab driver) excuse me, do you see anything on my lip here? \n\ncabbie: yeah, it's like a discoloration. \n\ngeorge: oh, my god. \n\ncabbie: yeah, it's all white. \n\ngeorge: (to jerry) it's all white jerry! it's all white! \n\njerry: would you stop? \n\ncabbie: i would get that checked out if i were you. \n\ngeorge: again with the checked out. i'm not going to the doctor. if i don't to the doctor, then nothing will happen to me. if i go he might find something. \n\njerry: if you go, maybe they'll catch it in time. \n\ngeorge: catch what in time? \n\njerry: whatever it is. \n\ngeorge: you think it's something? \n\ncabbie: ah! i hate these bums with their filthy rags. no no no, i don't want it, get away, get away from my car (he starts his wipers) \n\njerry: (to george) you know these squeegee-- oh my god! it's crazy joe devola. \n\njoe devola: (through the opened window's cab) good luck on the pilot jerry. (the cab pulls away) \n\n[setting: nbc] \n\nstu: (to george) yeah i think i see it. it's like a white discoloration. \n\ngeorge: (to jay) what do you think it is? \n\njay: it's like a... white discoloration. (we understand now why a sitcom needs so many producers) \n\ncasting director: o.k. guys, are we ready to start? \n\njerry: yeah, where is russell? i thought he was gonna be here. \n\nstu: oh you know i don't know. i saw him in the hall this morning, i said hello to him. he walked right past me. \n\njay: he must be worried about the fall schedule. \n\nstu: ah, it's a real bear. \n\ngeorge: yeah. so what's going on? we're gonna shoot the pilot and then it's gonna be on tv the following week? \n\nstu: yeah. right. \n\ncasting director: this is mark matts. he'll be auditioning for the role of george. (the guy looks very cool and casual, and has a lot of hair) \n\nmark: hey how you doing? \n\njerry: (thinking) they've gotta be kidding. \n\ngeorge: (thinking) this guy's perfect. \n\ncasting director: o.k. let's read this. i'll be reading jerry's part. \n\nmark: anyone call for vandelay industries? (george is the only one in the room to find mark funny) \n\ncasting director: no. why? \n\nmark: listen to me. i told the unemployment office i was close to a job with vandelay industries and i gave them your phone number. so, when you answer the phone now, you've got to say \"vandelay industries\". \n\ncasting director: i'm vandelay industries? \n\nmark: right. \n\ncasting director: what is that? \n\nmark: you're in latex. \n\ncasting director: what do i do with latex? \n\nmark: i don't know, you manufacture it. \n\ncasting director: this is michael barth. another george. (he's in sweat pants, bald, with glasses) \n\nall: hi michael. how you doing? \n\njerry: everything all right? \n\nmichael: i just came from the podiatrist. i have a mole on my foot. i've got a little gangrene, they're probably gonna have to amputate. (everyone laugh except george) \n\ncasting director: any questions? \n\nmichael: yeah. what are we looking at here? is this guy like a real loser? \n\ngeorge: no, not a loser! \n\ncasting director: let's start with the second scene. you have it here? \n\nmichael: a man gave me a, you know, massage. (everyone laugh except george) \n\ncasting director: so? \n\nmichael: well, he-- he had his hands, you know, and uh, he was, huh, ... \n\ncasting director: he was what? \n\nmichael: he was you know... he was touching and rubbing. (loud laughter) \n\ncasting director: that's a massage. \n\nmichael: i think it moved. \n\ncasting director: this is melissa shannon. \n\nmelissa: hi. \n\nall: hi. how you doing. \n\ncasting director: melissa is reading for elaine. \n\nmelissa: it's like a bald convention out there! (she saw george) sorry. i, uh, made a faux pas. \n\njerry: no you didn't. he knows he's bald. \n\nmelissa: so how about that guy wearing sweat pants? i mean did he do that for the part or does he walk around like that? (jerry approves with a nod, george drops his notepad on the coffee table) \n\ncasting director: o.k. shall we start? (melissa and the casting director sit down) \n\njerry: (getting up) uh, you know what? i'll read with her. \n\nmelissa: oh, great. \n\njerry: alright, want to start? \n\nmelissa: yeah. \n\njerry: o.k. \n\nmelissa: ahem. what was that look? \n\njerry: what look? \n\nmelissa: that look you just gave me? \n\njerry: i gave a look? \n\nmelissa: yes. \n\ngeorge: thank you! thank you very much. (jerry and melissa stop and look at george) \n\ncasting director: let's see some more kramers. \n\nall: hi. how you doing? \n\ntom: (to jerry and very seriously) how you doing? \n\njerry: (smiling and surprised at the way tom is talking) good. \n\ncasting director: what is this about? \n\ntom: (standing) levels. \n\ncasting director: levels? \n\ntom: yeah. i'm getting rid of all, all my furniture. all of it! i'm building... levels... with steps... completely carpeted... (making the gesture of carpeting steps) with pillows. (everyone laugh. he sits down) like ancient egypt. \n\ncasting director: i don't know how you're gonna be comfortable like that? \n\ntom: oh! i'll be comfortable. (laughter, applause. he gets up, goes to the coffee table) \n\ngeorge: very nice \n\njerry: very good \n\ngeorge: very nice tom, that was terrific. \n\ntom: may i? (pointing the box of raisins) \n\ngeorge: sure. thank you for coming in. (tom eats some raisins) \n\njerry: (to george) it was a wonderful reading. \n\ngeorge: yeah. really. \n\ntom: well, bye. \n\ngeorge: take care. take it easy. (tom leaves with the casting director) \n\nstu: now, i thought he was really good, very funny. \n\njerry: yeah, i liked him. \n\ngeorge: what happened to the raisins? \n\njay: yeah, there was a box of raisins there! \n\ngeorge: did he just steal the raisins? \n\nstu: you think he stole them? \n\ncasting director: (enters with the real kramer) this is martin van nostrand. \n\njerry: (to kramer) what are you doing here? \n\ncasting director: you two know each other? \n\nstu: wait a minute, i know you. you're the guy from the calvin klein underwear ads. \n\nkramer: that's true. \n\nkramer: (acting very bad) i saw joe dimaggio in dinky doughnuts again, but this time, i went in. (pause, stops acting) oh! uh, where's the bathroom? \n\nstu: i think if you go down the hall, it's on the right at the very end. \n\nkramer: yeah. be right back. (kramer leaves) \n\n(we see kramer, groaning and holding his stomach, running down the hall, and opening the bathroom's door. someone in there says: \"sorry buddy, full house.\" we then see kramer outside leaving the building and running across the street to a restaurant \"sorry, customers only\" ...running into a movie theater \"hey you need a ticket!\" ...running through the park...) \n\n[setting: monk's] \n\nelaine: so who's playing elaine? \n\njerry: oh, don't worry about it. very talented, very takented young actress. \n\nelaine: really? \n\njerry: yes. \n\nelaine: who is it? \n\njerry: she's an eskimo, actually. \n\nelaine: oh, my god (not in the mood to be kidding) \n\njerry: she came down from juno by sleigh, she was in the iditarod. got to the finish line, just kept going. she's got the dogs with her in the hotel room. \n\nelaine: listen, was russell at the casting? \n\njerry: no, he didn't show up. \n\nelaine: you know, i'm a little bit worried about him. i don't understand. we had one date two months ago. am i that charming and beautiful? \n\njerry: no. no you're not. \n\nelaine: why do i keep setting you up? \n\njerry: i don't know. \n\nelaine: (to the waitress) could we get a little more? (she doesn't listen and walks away) aghh... you know ever since this new owner took over, the service here is *really* slow. \n\njerry: yeah. have you noticed anything else that's different since the new management? \n\nelaine: mmm. they're putting a little lemon in the tuna. i love that. \n\njerry: beside that. look at the waitresses. \n\nelaine: yeah? (we see that all the waitresses have big breasts) \n\njerry: what physical characteristic would you say is common to all of them? \n\nelaine: ah... \n\njerry: i mean look at this. every waitress working here has the same proportions. wouldn't you say? \n\nelaine: yes, i would say. \n\njerry: what's going on here. how is that possible? \n\nelaine: do you think it's a coincidence? \n\njerry: no. i haven't seen four women like this together outside of a russ meyer film. \n\nelaine: (to the waitress) hi. excuse me. who does all the hiring waitresses here? \n\nwaitress: he does. (pointing to the manager, mr. visaki) in fact we're looking for another girl if you know anyone. (she walks away) \n\nelaine: you know what? that's discriminatory. that is unfair. why should these women have all the advantages? it's not enough they get all the attention from men, they have to get all the waitress jobs, too? \n\njerry: hey that's life. good-looking men have the same advantages. you don't see any handsome homeless. \n\n[setting: doctor's clinic] \n\ngeorge: you see, it's right here. it's all white... \n\ndoctor: oh yeah. yeah. i've never seen this before. \n\ngeorge: you've never seen this before? \n\ndoctor: i'm gonna have to take a biopsy on that. (george grabs the doctor's arm) \n\ngeorge: (dramatically) a what? \n\ndoctor: a biopsy. \n\ngeorge: a biopsy? \n\ndoctor: yeah. \n\ngeorge: cancer? is it cancer? do i have cancer? \n\ndoctor: well i don't know what it is. \n\n[setting: jerry's] \n\ngeorge: a biopsy! \n\njerry: what did he say? \n\ngeorge: he said he didn't know what it was. \n\njerry: alright. so? \n\ngeorge: when i asked him if it was cancer, he didn't give me a \"get outta here\". that's what i wanted to hear \"cancer? get outta here?\" \n\njerry: well, maybe he doesn't have a \"get outta here\" kind of personality. \n\ngeorge: how could you be a doctor and not say \"get outta here\"? it should be part of the training at medical school \"cancer? get outta here!\" \"go home! what are you crazy? it's a little test. it's nothing. you're a real nut. you know that?\" (jerry gives him half of his sandwich to hopefully shut him up) i told you that god would never let me be successful. i never should've written that pilot. now the show will be a big hit, we'll make millions of dollars, and i'll be dead. dead jerry. because of this. (showing his lip) \n\njerry: can't you at least die with a little dignity? \n\ngeorge: no i can't. i can't die with dignity. i have no dignity. i want to be the one person who doesn't die with dignity. i live my whole life in shame. why should i die with dignity? \n\njerry: hey. what happened to you yesterday? \n\nkramer: i got mugged. \n\ngeorge: you got mugged? \n\njerry: mugged? \n\nkramer: well, i wouldn't have minded it so much but i was running home to go to the bathroom. \n\njerry: why didn't you use the bathroom in the building? \n\nkramer: it was full. i tried a few other places, you know, but that didn't work. i mean it was an emergency jerrry. i was really percolating... so i decided to run home through the park and then these two guys they stopped me and... \n\njerry: yeah? \n\nelaine: it's me. \n\njerry: come on up. \n\nkramer: but now i have a big problem, buddy. \n\njerry: what is it? \n\nkramer: well, i waited so long i-- i missed my chance. \n\njerry: you didn't go? \n\nkramer: no. and now i can't get it back. \n\njerry: the % thing to do is just not think about it. \n\nkramer: how could you not think about it? \n\nelaine: hey. \n\nkramer: (mumbles and leaves) \n\nelaine: what's the matter with him? \n\njerry: he's a little backed up. \n\nelaine: oh... \n\ngeorge: elaine. \n\nelaine: so i spoke to some of my sisters about that coffee shop. \n\njerry: oh, the sisters (he sits at the table) \n\ngeorge: (to jerry) have you seen the waitresses in there lately? i never had so much coffee in my life. \n\nelaine: so we decided i should go over there and apply for a job myself. \n\ngeorge: apply for a job? what for? \n\nelaine: because, it's discriminatory (she comes back wearing one of jerry's shirts, untucked) \n\ngeorge: it's a coincidence. \n\njerry: this is what you gonna wear? \n\nelaine: yeah. \n\njerry: you're not gonna get the job. \n\nelaine: exactly. \n\njerry: (to the phone) hello. oh, hi. yeah i guess we could do that. at what time? all right. i'll see you there. o.k., bye. (hangs up) \n\nelaine: who was it? \n\njerry: tv elaine. she wants to get together and talk about the part. \n\nelaine: what about the dogs? \n\njerry: they're having sex in the hotel room. \n\n[setting: peter mcmanus cafe, same table as earlier] \n\n(jerry and tv elaine: sandi robbins) \n\nsandi: so, the elaine character is based on someone you know. \n\njerry: yes. \n\nsandi: and she's really your ex-girlfriend? \n\njerry: uh, huh, yeah. \n\nsandi: i want to get to know her from the inside. what is she like? tell me about her. \n\njerry: well, she's fascinated with greenland. she enjoys teasing animals, banlon, and seeing people running for their lives. she loves throwing garbage out the window, yet she's extremely dainty. \n\nsandi: how would she eat a hamburger? \n\njerry: with her hands. \n\nsandi: what about pasta? \n\njerry: also with her hands. \n\nsandi: seriously... i want to experience everything she's experienced. \n\njerry: everything? \n\nsandi: everything. \n\njerry: all right she cuts her pasta with a knife. \n\nsandi: that's good. what's her favorite movie? \n\njerry: shaft. \n\nsandi: you got to get me a picture. what about sex? \n\njerry: she likes talking during sex. \n\nsandi: oh... dirty talking? \n\njerry: no. just chitchat, movies, current events, regular stuff. you know sandi-- (looking at his watch) \n\nsandi: elaine. \n\njerry: what? \n\nsandi: call me elaine. \n\njerry: all right. elaine. \n\nsandi: how does elaine kiss? \n\njerry: well-- \n\nsandi: does she kiss... like this? (she kisses jerry) \n\njerry: actually she has a thing where she spirals her tongue around, it's like-- \n\nsandi: like this? (kisses again but with the spiral) \n\njerry: i think you got it. \n\n[setting: monk's] \n\nkramer: i like to eat spaghetti with just a fork. because i can keep the strands long, and i can slurp it out to my mouth. like this look. (faking to slurp spaghetti) now sex, i like the bottom. let them do all the work. you should be writing this stuff down... (waitress comes to take the order) bran lakes...100%. i got a big problem. \n\ntom: i'll have a hamburger. that's it. \n\nkramer: yeah, that's good. oh, now i like to play golf. \n\ntom: this stuff doesn't matter to me. see, i'm gonna do the character like me, not like you. \n\nkramer: you gotta play him like me. i'm kramer. \n\ntom: i'm kramer. \n\nkramer: whoa, i'm kramer. \n\nmr. visaki: (foreign accent) what can i do for you? would you like a table. \n\nelaine: no, i'd like to apply for a waitress job. \n\nmr. visaki: (looks elaine up and down) have you ever waited on tables before. \n\nelaine: oh yeah. i've been a professional waitress for the last 10 years. i've worked all over the city. these, uh, are my references. i'm sure you'll find that i'm more than qualified. \n\nmr. visaki: i don't think i need anyone else right now. \n\nelaine: you're in big trouble mister. and i mean trouble with a capital 't'. (she leaves) \n\nmr. visaki: what? what did i do? \n\n[setting: the equal employment opportunity commission office] \n\nelaine: anyway there's at least four of them, and they're all huge. and one is bigger than the next. it's like a russ meyer movie. \n\nfred: who's russ meyer? \n\nelaine: oh, he's this guy who made these terrible movies in the 70's with these kinds of women. he's obsessed. he's obsessed with breasts. that's hard to say. \n\nfred: anyway, go on. \n\nelaine: um... well, there's not really much more to tell. he was looking for waitresses, and i went in to apply for the job. and, he looked me up and down and he rejected me. \n\nfred: (to a guy in the hall at the water cooler machine) paul. come in for a second. i want you to listen to this. \n\npaul: (to elaine) hi. \n\nelaine: hi. \n\nfred: paul, woman here claims there's a restaurant on the west side that's only hiring large-breasted women. \n\npaul: (to elaine) really? \n\n[setting: nbc, pilot's set] \n\ntom: what do you mean made up? \n\njerry: it's made up. haagen-dazs is made up. it's not danish. \n\ntom: you're crazy. \n\njerry: no i'm not. (to michael) george. is haagen-dazs danish? \n\nmichael: what do you mean danish? \n\ngeorge: (to the guy next to him) this guy stinks. (speaking of michael) \n\njerry: danish. is it from denmark? \n\nmichael: no, they make it in new jersey. it's just a danishy name. \n\ntom: i can't believe that. they fooled *me* jerry. \n\nrita: (to jay) boy, talk about a show about nothing. (jay, the integral producer, smiles stupidly) \n\ngeorge: uh, excuse me. (stopping them from rehearsing) excuse me. (he walks to the guy's in charge of yelling \"take #!\") this--this is not right. may i? (the guy looks at george with a bothered face. george then walks up to tom and takes him away from jerry and michael to talk to him in private)(to tom) you see, you're going \"they fooled *me* jerry!\" (george shakes his head with disapproval) you wanna hit 'fooled' more \"they *fooled* me jerry!\". you see the difference? \n\ntom: i'm not gonna say it like that. \n\ngeorge: just a suggestion. (chuckles and walks back to the yelling guy) \n\nyelling guy: (with the same bothered face and while he's looking at george) all right everybody, take a five. \n\ngeorge: (very casual and raising his hand in the air) yep. that's five! \n\njerry: george? (walks away to talk privately. george, still casual, taps on jerry's shoulder) i don't have a lot of experience with this acting stuff. but from what i can gather, they're a little touchy about being told how to say the lines. \n\ngeorge: why is that? \n\njerry: i don't know, but they don't seem to like it. by the way how am i doing? \n\ngeorge: oh, you're fine... you're fine. (looking at tom in the back and then quieter to jerry) so you think this guy playing kramer took the raisins? \n\njerry: why would he steal a box of raisins? \n\ngeorge: yeah, it's bizarre. (they both look around them suspiciously) \n\nrita: (to jay about russell) what's with him? (to russell) russell? (louder) russell? \n\nrussell: what? \n\nrita: you o.k.? \n\nrussell: yeah. no, uh, i was just thinking of something. i'll be back in a second. (he gets up and leaves) \n\nsandi: what's the matter? \n\njerry: nothing. \n\nsandi: you're acting weird. is anything wrong? \n\njerry: no. \n\nsandi: are you breaking up with me? \n\njerry: are we going out? \n\nsandi: you're breaking up with me, aren't you? (almost crying) \n\njerry: do you want me to break up with you? \n\nsandi: if that's what you want. \n\njerry: i don't even know what you're talking about. \n\nsandi: fine. break up with me. \n\njerry: all right. we're broken up. \n\nsandi: (little pause) can we still be friends? (jerry raises his head, staring ahead and wondering what's going on) \n\ngeorge: remember when you came to audition for us? \n\ntom: yeah. \n\ngeorge: there was a box of raisins on the coffee table. did you, by any chance, take them with you when left? \n\ntom: what are you talking about? \n\ngeorge: well we were all eating the raisins. and i remember you--you were eating some of the raisins. and then you left, and the raisins were gone. and i was just wondering if, you know (chuckles), maybe you took them with you. \n\ntom: are you accusing me of stealing the raisins? \n\ngeorge: oh, no, no-- \n\ntom: (angry) why would i steal a box of raisins!? \n\ngeorge: no you wouldn't. nobody would. it's just that... they were missing, and... well i'm just inquiring. (chuckles nervously) \n\ntom: let me give you a word of advice. o.k.? i want you to stay away from me. i don't wanna talk to you, and i don't wanna hear anymore of your stupid little notes and suggestions. i don't like you. so if you got any other problems whether it's raisins, prunes, figs, or any other dried fruit, just keep it to yourself and stay out of my way, o.k.? \n\ngeorge: mm-hmm. mm-hmm. all right. i don't think we're gonna have any problem with that. (chuckles nervously) good talking to you tom. really. \n\nrussell: (nervously, almost desperately) elaine. elaine. what do you want? what can i do? is it my job? is that what it is? elaine i can't go on like this. will you call me? would you call me? well, why? all right. may i call you? elaine? elaine? (she hung up. an employee walks by, bumps into russell and spills coffee accidentally on him) \n\ndavid: excuse me mr. dalrimple. i am so sorry. \n\nrussell: all right. all right. what's your name? \n\ndavid: david richardson. \n\nrussell: get out! you're fired! \n\ndavid: but mr. dalrimple-- \n\nrussell: don't talk back to me. didn't you hear what i say? get out! you want me to call the cops? i make and break little worms like you every day. do you know how much money i make? do you have any idea! do you know where i live? i can have any woman in this city that i want. any one. now, get out! (david leaves. everyone on the set is looking at russell) what are you all looking at? go back to work! back! now! (they do, russell leaves) \n\n[setting: jerry's] \n\ngeorge: the doc called and said the lab's backed up and now i'm not gonna get the results for another two days. \n\njerry: ah! you're fine. there's nothing wrong with you. i'm the one who's dying. \n\ngeorge: what do you mean? \n\njerry: because i can't act! i stink! i don't what i'm doing! \n\ngeorge: come on you're... uh... you're fine. \n\njerry: this show's gonna ruin my entire career. i don't know how i got involved in this. \n\ngeorge: what about me? i was a total failure. everything was fine. now this thing's gonna be a success and god's gonna give me a terminal disease. \n\njerry: this actress playing elaine, she's out of her mind. \n\ngeorge: the guy playing kramer threatened me. \n\njerry: why? \n\ngeorge: 'cause i asked him about the raisins. \n\njerry: you mentioned the raisins. \n\ngeorge: oh yeah. \n\njerry: did he take 'em? \n\ngeorge: i don't know. \n\njerry: well if he didn't take 'em, what happened to 'em? \n\ngeorge: that's what i'm trying to find out. \n\njerry: hey. \n\nkramer: hey. \n\njerry: any luck? \n\nkramer: no. no, nothing. i got no... peristalsis. \n\njerry: what about bran? \n\nkramer: i tried bran-- 40%, 50% 100%. the bran isn't working for me. \n\njerry: well my friend, (jerry puts his hand on kramer's shoulder) it may be time to consider the dreaded apparatus. \n\nkramer: pfft! hold it right there. if you're suggesting what i think you're suggesting, you're wasting your time. i am not jerry, under any circumstances, doing any inserting in that area. \n\njerry: oh, it's not that bad! \n\ngeorge: yes it is. \n\nelaine: well it's all taken care of. i filed a report. an investigation is underway. \n\njerry: (to elaine) so, you going to the taping tomorrow night? \n\nelaine: no. i don't think i should go. i really don't wanna bump into russell. he called me the other day. he won't quit. \n\njerry: oh, come on you gotta go! he's harmless. he's got a little crush on you. \n\nelaine: jerry, this is not a crush. this is a complete fixation. he makes me very uncomfortable. \n\njerry: we need you there! \n\nelaine: (to kramer) hey are you gonna go? \n\nkramer: no. no. i'm gonna stay home. i want to be close to my home base in case there's any news from the front. (he leaves) \n\n[setting: nbc, pilot's set, the taping] \n\nsandi: (to her hairdresser) no! pick it up more in the front! it's got to be higher! higher! make a wall! a wall! \n\nassistant dresser: sandi, are you in wardrobe? sandi? \n\njerry: try elaine. \n\nassistant dresser: elaine? \n\nsandi: yes? \n\nwilton: elaine? it's me-- wilton marshall. remember? camp tioga-- 1978? remember? \n\nelaine: oh, right. \n\nwilton: wow! you know you haven't changed a bit. \n\nmichael: i can't remember my lines!!! \n\njerry: just relax, you'll be fine. \n\nmichael: i can't relax. i don't know what line! i don't know any of 'em! \n\njerry: you're just like george. george'd do the same thing. you're just like him. it's amazing! \n\nmichael: help me jerry! help me! \n\nrita: (to stu) where is russell? \n\nstu: you know i don't know. i thought he was coming. i assumed he wouldn't miss it. \n\njay: he hasn't been well. \n\nstu: (to rita) can i tell you something in confidence? i think it's a woman. \n\nrita: how pathetic. \n\ngeorge: this is george costanza, i'm calling for my test results. negative? oh, my god. why! why! why? what? what? negative is good? oh, yes of course! how stupid of me. thank you. thank you very much. (he hangs up) \n\ngeorge: (he walks casually to tom, and taps his arm) listen. i know we've had our problems in the past, but we got a show to do tonight. time to pull together as a team. life's too short. i say, let's let bygones be bygones. if you took the raisins, if you didn't take the raisins-- they weren't even my raisins. i was just curious because it seems like a strange to do to walk into a room, audition, and to walk out with a box of raisins. anyway, whatever. if you ever want to tell me about it, the door to my office is always opened. in the event that i get an office. you'll come in, we'll talk about the raisins. we'll have a nice laugh. \n\ntom: how would you like it if i just pulled your heart out of your chest right now, and shoved it down your throat? \n\npat hazell: are you ready to meet our cast? (crowd applause) all right. \n\njerry: good evening, folks. how you doing? (small reaction from the crowd) well, you sound like a great crowd. we have a show we're gonna put on for you tonight. it's a new tv show. it's what they call a pilot. and we hope it becomes a series. it's called 'jerry', and i'm playing jerry-- \n\njoe devola: (getting up then shouting) sic semper tyrannis! (he jumps over a balcony and on the stage. the crowd is yelling) \n\n[setting: jerry's] \n\ngeorge: sic semper tyrannis? what is that, latin? \n\njerry: yeah, it's what john wilkes booth yelled out when he shot lincoln. \n\ngeorge: really? what does it mean? \n\njerry: it means \"death to tyrants\". \n\ngeorge: i can see that. \n\nelaine: see, now this is exciting! this is exciting! did i miss anything already? \n\njerry: no, it starts in five minutes. you were there at the taping, what's the big deal? \n\nelaine: nah, now it's on tv. it's different. i told everybody i know to watch it. \n\ngeorge: yeah, me too. \n\njerry: hey, what about russell? did you hear from him? \n\nelaine: no. \n\njerry: strange. even not showing up at the taping... \n\nkramer: hey, pistol-packin mama, you swing that gal around, allemande left with the old gray hag, around and around you go. yee-ha!! \n\njerry: well, well, well. \n\nelaine: congratulations. \n\nkramer: well, thank you. \n\ngeorge: you went for the big \"e\". \n\nkramer: wet and wild. \n\njerry: all right. come on sit down. it's about to start. \n\nkramer: oh, yes. \n\nelaine: hey, what's this? look. a wallet. \n\njerry: a wallet? let me see that. \n\nelaine: here. \n\njerry: ah, man! it's my father's wallet! the one he thought they stole at the doctor's office that time. \n\ngeorge: shh! this is it! \n\njerry: how do you like that? \n\n(the show begins. there are three different settings while the show is on tv. each line or description will be preceded by the right setting: nan \n\n(jerry's doing his stand-up routine at a comedy club. there's the music theme and we don't hear what he is saying, but the closed captions put that: nan \n\nwe see the title 'jerry', then, sitting at the comedy club, we see: nan \n\nmicheal, sandi, and tom, and finally jerry, and the four of them make a toast while it's written: \"created by jerry seinfeld and george costanza\". \n\nelaine: bravo! \n\ngeorge: you hurt me. \n\nmichael: hey. \n\njerry: hey george. \n\nmichael: new sneakers? \n\njerry: yeah. \n\nmichael: what do you need new sneakers for? \n\njerry: i like sneakers. \n\nmichael: how do you make a decision which one to wear? i'd go crazy if i have to decide which sneakers to wear every day. \n\njerry: nah, you're crazy anyway. \n\nsusan and allsion: (to each other while they recognize one of george's behaviors in michael) george! \n\nsid: what kind of stupid show is this? hey! it's that idiot that took all my records! (the houskeeper starts laughing) \n\nmarla: john, what are you doing? come back to bed. \n\njohn: (with a boston accent) this show looks interesting. isn't he that seinfeld fellow you went out with? \n\nmarla: ooh, he's horrible! horrible! \n\njohn: nevertheless... \n\nthe drake: ah, that jerry's a funny guy. huh? got to love the sein! \n\nallsion: hate the sein! (while she adjusts the tiny antenna) \n\nping: i can't believe you liked him. \n\ncheryl: i thought he was dark and disturbed. \n\nping: real perceptive. \n\ndonald: this is a piece of crap! \n\nmother: donald, you used to like him. \n\ndonald: what a sellout! give me that remote! \n\nmel: no, donald. \n\nkramer: come on jerry, the commercials almost over. \n\njerry: all right. \n\nelaine: you know jerry i really like this guy who's playing the butler. \n\njerry: oh yeah. he's good. you know he's john ritter's cousin. \n\nelaine: really? \n\njerry: yeah. \n\njerry: hello, charles. \n\ncharles: hello. so, where do you want me to start today? \n\njerry: why don't you start in the bedroom? \n\ncharles: (to himself, upset) start in the bedroom... \n\ntom: hey. \n\njerry: hey. the butler's here. \n\ntom: he is? listen. when he's finished, send him over to my house. \n\njerry: i'm not sending him to your house. \n\ntom: why not? \n\njerry: because the judge decreed he'd become my butler, not my friend's butler. \n\ntom: jerry, he is your butler. you can give him any order you want. that's what butlers do. \n\njerry: but i don't want to. \n\nkramer: jerry, my house is a pigsty, come on. \n\njerry: yeah? \n\nsandi: (from the buzzer's speaker) it's elaine. \n\njerry: come on up. \n\ncharles: i need more pledge. \n\njerry: more pledge! i just bought two cans last week and i don't even have any wood in the house! \n\ncharles: well, it goes fast. \n\nsandi: (to charles, very friendly) hello. \n\ncharles: hello. (he goes back in the bedroom) \n\njerry: what's all this about? \n\nsandi: we had a date. \n\njerry: you had a date? you went out with my butler? who said you could go out with my butler? \n\nsandi: why do i need your permission? \n\njerry: because he's my butler! \n\nmorty: that's terrific! \n\nhelen: how could anyone not like him? \n\nc.k.: i like his style. he has a sort of casual elegance. \n\ntia: but he picks his nose. \n\nc.k.: nevertheless... \n\nsal bass: he's a member of our health club. isn't he? \n\nsidra: yeah... \n\nsal bass: you know that kim novak has some big breasts? \n\njerry: ever notice a lot of butlers are named jeeves? \n\njerry: you know i think when you name a baby jeeves, you've pretty much mapped out his future, wouldn't you say? not much chance is gonna be a hitman i think after that. (with a british accent) \"terribly sorry sir, but i'm going to have to whack you\". \n\n[setting: back to jerry's] \n\nall: (applauding and shaking hands) wooh! yeah! \n\nelaine: wow! that was great! that show was so funny. it was really funny. i'm not just saying that cause i know you. honestly. \n\njerry: let's go out and celebrate! (they all get up) \n\nelaine: that was so good. \n\njerry: come on let's eat something. (phone rings) \n\nelaine: you know what i think this thing is gonna get picked up george. you guys are gonna be rich! \n\ngeorge: do you really think so? \n\nelaine: oh yeah. \n\ngeorge: and god didn't kill me. \n\njerry: (to the phone) hello? \n\nrita: hi jerry, this is rita kierson. \n\njerry: oh, hi rita. \n\nrita: i'm calling to let you know that russell dalrimple is no longer with this network. \n\njerry: oh, my god. did he get fired? \n\nrita: to be honest with you. nobody really knows. he seems to have disappeared. \n\njerry: russell's disappeared? \n\nrita: in any event, i've been made the new president of nbc. as you may or may not know, russell and i did not see eye to eye on many, many projects. and as my first order of business, i'm, uh, passing on your show. \n\njerry: you're passing already? but the show just ended two minutes ago! \n\nrita: well, i just got the job. goodbye, jerry. \n\njerry: yeah, see ya. (he hangs up) \n\nelaine: what-- what are you looking at me for? \n\ngeorge: it was you! \n\nelaine: what did i do? \n\njerry: do you realize his obsession with you cost us a tv series? \n\nelaine: i didn't know that he'd fall for me and i'd drive him insane. i mean, you know, that's not my fault. \n\ngeorge: yes it is! you're very charming! \n\nelaine: i can't believe this? what happened to him? where the hell is he? \n\njerry: no one knows. \n\n[setting: greenpeace raft on the ocean, following a whaler] \n\nrussell: she works for pendant publishing. she's the most beautiful woman i've ever seen. you know, i used to work for nbc, but when i go back to her this time, she'll respect me. \n\nman on raft: you'd better get down. they might start firing soon. (harpoon fires) \n\n[setting: monk's] \n\njerry: hey look at this. what is going on here? \n\ngeorge: well, well, well. \n\nelaine: nothing has changed. how did this happen? (she sees the two guys of the equal employment opportunity commission at a table) ah, these are the two guys i talked to at the equal employment opportunity commission. hey! what are you two guys doing here? i thought you were gonna do something about this. now you're eating here? \n\nfred: oh no. that's why we're here. we're checking things out. \n\npaul: yeah, we're checking it out. \n\nelaine: (to paul) you're checking it out? \n\nman: (to fred and paul) see you back at the office, guys. \n\nmr. visaki: fred, paul, lunch and dinner? boy, you guys ought to move in. how about a piece of pie on me? sophia! take care of these fellows. \n\nelaine: (to the manager) hey! come here a second. i want you to know something. you are not gonna get away with this! \n\nmr. visaki: get away with what? \n\nelaine: ah, \"with what?\" you know what. with the waitresses. how they're all... alike. \n\nmr. visaki: of course they're alike. they're my daughters. \n\nelaine: (embarrassed, but smiling) oh, your daughters. \n\ngeorge: you must be very proud mr. visaki. (shaking his hand) and may i say sir they're lovely girls, absolutely lovely girls. it's nice to see such fine upstanding women in gainful employment, mr. visaki. \n\nmr. visaki: oh, here's a table for you. \n\ngeorge: a table right here. \n\nmr. visaki: peggy! \n\ngeorge: peggy! (they all sit) his daughter peggy. peggy's coming over to serve. \n\njerry: what a family! \n\nmr. visaki: my daughter peggy. \n\ngeorge: ah! peggy. good to see you. \n\nelaine: hi peggy. \n\ngeorge: thank you very much. (peggy leaves the menus and walks away) so guess what i got do tomorrow? \n\njerry: what? \n\ngeorge: start looking for a job. \n\nkramer: you know what you ought to do george? you should work for greenpeace. you those people they attack the whalers out on the open sea. \n\ngeorge: are you crazy? you take your life in your hands with those nuts. \n\n[setting: greenpeace raft] \n\nman: keep fighting matey! get your head above the water! i've got you matey! i've got you! matey! (he loses the rope) i'll remember her name! elaine benes! i'll write to her. i'll tell her all about you and what you did out here! goodbye, matey! goddbye! \n\n[location: monk's] \n\njerry: so, what's her name? \n\ngeorge: karen. \n\njerry: is she nice? \n\ngeorge: great. \n\njerry: so you like her? \n\ngeorge: i think so. \n\njerry: you don't know? \n\ngeorge: i can't tell anymore. \n\njerry: well do you feel anything? \n\ngeorge: feel? what's that? \n\njerry: all right, let me ask you this when she comes over, you're cleaning up a lot? \n\ngeorge: yeah. \n\njerry: you're just straightening up or you're cleaning? \n\ngeorge: cleaning \n\njerry: you do the tub? \n\ngeorge: yeah. \n\njerry: on your knees, ajax, hands scrubbin', the whole deal? \n\ngeorge: yeah, yeah. \n\njerry: okay, i think you're in love! \n\ngeorge: tub is love? \n\njerry: tub is love. \n\ngeorge: hah. \n\njerry: so there you are. you've got a nice girl and a clean apartment. \n\ngeorge: yep. there's one liiiittle problem. \n\njerry: sexual? \n\ngeorge: yeeeaaah. (jerry and george lean in to make their conversation a little more private) well..... i've never really felt confident in uh..... one particular aspect. \n\njerry: below the equator? \n\ngeorge: yeah. \n\njerry: nobody does. you know, nobody knows what to do. you just close your eyes and you hope for the best. i really think they're happy if you just make an effort. \n\ngeorge: i-i don't know. last time i got the tap. \n\njerry: you got the tap? \n\ngeorge: you know, you're going along, you think everything's all right and all of a sudden you get that tap. (george taps his own shoulder). you know it's like pfffff (whistling sound), all right that's enough, you're through. \n\njerry: the tap is tough. \n\ngeorge: it's like the manager coming out and asking you for the ball. \n\njerry: well maybe she just wanted to move on to other business. \n\ngeorge: no, no, this wasn't moving on. i got the hook. i wish i could get a lesson in that. \n\njerry: it's a very complicated area. \n\ngeorge: you can go crazy trying to figure that place out. \n\njerry: it's a haaazy mystery. \n\ngeorge: anyway, i think everything else is okay. unless of course she's faking. \n\nelaine: who's faking? \n\ngeorge: nothing. \n\nelaine: faking what? \n\ngeorge: nobody's faking. \n\nelaine: ah! orgasm? \n\ngeorge: she's not faking! \n\nelaine: how do you know? \n\ngeorge: i know. i can tell. it's one of my powers. why, did you ever fake? \n\nelaine: of course. \n\njerry: really? \n\ngeorge: you faked? \n\nelaine: on occasion. \n\njerry: and the guy never knows? \n\nelaine: no. \n\njerry: how can he not know that? \n\nelaine: because i was gooood. \n\njerry: i guess after that many beers he's probably a little groggy anyway. \n\nelaine: you didn't know. \n\njerry: what? \n\nelaine: you didn't know. \n\njerry: are you saying... \n\ngeorge: i think i'll have a piece of cake. \n\njerry: with me? \n\nelaine: well... \n\njerry: you faked with me? \n\nelaine: ye. \n\njerry: you faked with me? \n\nelaine: yeass. \n\njerry: no. \n\nelaine: yeass. \n\njerry: you faked it? \n\nelaine: i faked it. \n\njerry: that whole thing, the whole production, it was all an act? \n\nelaine: not bad huh? \n\njerry: what about the breathing, the panting, the moaning, the screaming? \n\nelaine: (points in the air as is to point out each things jerry asked) fake, fake, fake, fake. \n\njerry: i'm stunned, i'm shocked! how many times did you do this? \n\nelaine: uuuhm, all the time. \n\njerry: all the time?! \n\ngeorge: we got a chocolate malt in here! \n\njerry: but i'm so good. \n\ngeorge: i'm sure you are. \n\nelaine: jerry, listen, it wasn't you. i just didn't have 'em back then. \n\njerry: she faked. \n\njerry: maybe they've all been faking. \n\nelaine: i'm sure they're not. \n\ngeorge: maybe karen is faking. \n\n[location: jerry's apartment] \n\nkramer: she was probably joking. \n\njerry: no no, it was no joke. \n\nkramer: she didn't have any? \n\njerry: no. none. \n\nkramer: (raising hand) she faked 'em all. \n\njerry: (raising hand) faked 'em all. \n\nkramer: well so she faked 'em, so what? \n\njerry: the woman had an orgasm under false pretences. that's sexual perjury. \n\nkramer: you know i heard her screaming from my apartment? she woke me up a few times. \n\njerry: how did she do it? she's like meryl streep this woman. and i had to work the equipment. i'm not unskilled, i'm in the union. if she'd at least told me, maybe i could have done something about it. \n\nkramer: yeah i could have helped you out. \n\njerry: what could you have done? \n\nkramer: i could have given you some pointers. i know how to press those buttons buddy. \n\njerry: i'm feeling very inadequate about the whole thing. \n\nkramer: aaaaah. \n\njerry: don't aaaaah! i'm supposed to do something with her later? i don't even think i wanna see her. \n\nkramer: giddy-up. \n\njerry: hello... oh hello elaine. \n\nelaine: so we're having dinner tonight? \n\njerry: i don't know, i'm not really in the mood. \n\nelaine: why? what's wrong? you're not still thinking about this afternoon are you? \n\njerry: what, the grilled cheese? naaah, they always burn the toast. \n\nelaine: nooo, the other thing. \n\njerry: oooh that. well... \n\nelaine: oh come on, jerry. making to much of a big deal about it. \n\njerry: yeah i guess. so you wanna meet at that place at seven thirty? \n\nelaine: okay. \n\njerry: all right. \n\nelaine: all right, see you later. \n\njerry: bye. \n\nelaine: bye. \n\n[location: elaine's office] \n\nelaine: rene, can you come here a second? let me ask you something ummm, have you ever... you know... faked it? \n\nrene: yeah, sometimes. \n\nelaine: really, like when? \n\nrene: like if we went to a broadway show, if we had really good seats. (elaine is sitting there, jaw opened shaking her head yes) well you know, if it's enough all ready and i just wanna get some sleep. \n\n[location: jerry's apartment] \n\njerry: i really don't feel like seeing her. \n\nkramer: you know, i faked it. \n\njerry: (confused) what?! \n\nkramer: yeah. \n\njerry: you faked it? why would you do that? \n\nkramer: well you know, if it's enough already and i just wanna get some sleep. \n\njerry: yeah, but why would you... (kramer is eating a peach then disgusted he spits it out) bad peach? \n\nkramer: it's terrible! \n\njerry: did you get that at joe's? \n\nkramer: yeah, of course i got it at joe's. \n\njerry: that's surprising, his fruit is usually the best. \n\nkramer: you know what i'm gonna do? (heading for the door) i'm gonna return this. \n\njerry: you're returning used fruit? \n\nkramer: jerry this peach is sub par. \n\n[location: joe's] \n\njoe: so what do you want me to do? \n\nkramer: i want restitution. \n\njoe: restitution? you want restitution? why should i give you restitution? \n\nkramer: because it's no good. \n\njoe: when you put that fruit out, that's where it ends for me. \n\nkramer: it's still your fruit, you gotta stand behind your fruit. \n\njoe: i stand behind my fruit. \n\nkramer: so... \n\njoe: hey, you got a bad peach? that's an act of god. he makes the peaches. i don't make the peaches, i sell the peaches. you have a problem? you talk to him. \n\nkramer: you know this whole place is going vrrrrrrrrrrrrt, downhill. i could have come in here last week with a bad plum but i let it go. \n\njoe: well let me put a solution for ya do your business elsewhere, i don't want your business. \n\nkramer: oh now you don't want my business. \n\njoe: no, i don't want your business and from this moment you're banned from the store, you're banned! \n\nkramer: but what am i gonna do for fruit? \n\n[location: restaurant] \n\nkaren: (moaning) mmmmm, mmmm, hmmhmmhmmm (lights a cigarette) mmmm (takes a puff) woo \n\ngeorge: (thinking of the moans) heh. (karen takes another puff of her cigarette) you seem like you really enjoyed your risotto. (chuckles) you have a very contented air over there. (chuckles again) you look very contented, very satisfied. (pauses) are you satisfied? \n\nkaren: i'm very satisfied. \n\ngeorge: i-i'm sure if you weren't satisfied you would probably say something wouldn't you? \n\nkaren: i probably would. but then again i'm an enigma. \n\ngeorge: hey listen... umm, instead of the movie... uh, maybe we'll go back and uh you know...(nudges her head with his head) \n\nkaren: maybe. \n\ngeorge: so... uh you feel okay about that whole thing... what we do in there... you're generally okay with everything in there? \n\nkaren: generally. \n\ngeorge: do you uh feel the way you feel after the risotto? \n\nkaren: well no, i feel full after the risotto. \n\ngeorge: yeah...(scratching his head) full. \n\n[location: (another) restaurant] \n\nelaine: oh god, mmmm, mmm, mmm, mmmmm, mmm, ah, woo \n\njerry: satisfied? \n\nelaine: mmm, hey, you know what? you wanna go see that new meryl streep movie? \n\njerry: meryl streep? \n\nelaine: you don't like her? \n\njerry: ah, she's okay. \n\nelaine: i love her jerry, she's so authentic. i really believe everything is actually happening to her. there's no acting there. \n\njerry: yeah. you don't want coffee or anything do you? \n\nelaine: i really admire actors, you know. it's just such an incredible skill. \n\njerry: yeah, yeah, can we get off of this? \n\nelaine: what's the matter? \n\njerry: nothing. \n\nelaine: you're not still thinking about that are you? \n\njerry: nooo. \n\nelaine: oh good. \n\njerry: give me another shot! \n\nelaine: (shocked) what? \n\njerry: another shot, i want another shot. \n\nelaine: you mean...? \n\njerry: yes! \n\nelaine: oooh no, i don't think so. \n\njerry: come on! one shot, i can do it, i know i can do it! \n\nelaine: jerry, we're friends! we can't do that, it would ruin our friendship. \n\njerry: oh friendship... friendship, shmanship . \n\nelaine: jerry no, that's important to me. \n\njerry: we won't ruin the friendship. \n\nelaine: ya, yes we will! \n\njerry: elaine... \n\nelaine: no jerry, it is out of the question. you know what sex does to a friendship, it kills it. \n\njerry: a half hour, give me a half our. \n\nelaine: no! \n\njerry: okay, fifteen minutes. i guarantee you fifteen minutes, i can make it happen! \n\nelaine: noo! \n\njerry: you're worried i'll be able to do it aren't you? \n\nelaine: what, no, it doesn't matter. jerry, i don't care. \n\njerry: that's it, that's it. you like having this over me, you don't want me to do it. \n\nelaine: that is so ridiculous. \n\njerry: come on, elaine! \n\nelaine: no. \n\njerry: elaine?! \n\nelaine: no! \n\n[location: karen's bedroom] \n\ngeorge: it's jerry's fault. \n\nkaren: jerry? \n\ngeorge: jerry and elaine. they made me nuts. \n\nkaren: oh i don't care, george, really it's all right. \n\ngeorge: so you feel okay? \n\nkaren: well, it's not like after the risotto. \n\n[location: jerry's car] \n\njerry: well good night. \n\nelaine: i still don't understand why we had to walk out on that movie. \n\njerry: oh that meryl streep, she's such a phony baloney. \n\nelaine: goodnight. thanks for a really fabulous evening (sarcastic). \n\njerry: oh what, you're upset? \n\nelaine: yes i'm upset, can't you tell? \n\njerry: no i can't, maybe you're faking. \n\nelaine: i'm really, really sorry i told you that. \n\njerry: i'm sorry too. \n\nelaine: well stop being such a baby. \n\njerry: you're a baby! \n\nelaine: you're a baby! \n\n[location: jerry's apartment] \n\ngeorge: it's all your fault! you and elaine! all that orgasm talk. she did have an orgasm, she didn't have an orgasm. orgasm this, orgasm that. i got so focused on it. i started to panic and boom, i lost it. i tried everything, i was talking to him 'please wake up, do something.' \n\njerry: they're mysterious little fellows aren't they? \n\ngeorge: i hate him! \n\njerry: you know it happens to everybody. it happened to houdini. and he could get out of a trunk under water with his hands in chains! but he had a problem with that. the miracle is that it ever happens. \n\ngeorge: it's like a magic trick. sometimes i think it would be easier to bend a spoon mentally than to make that transformation. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: hey listen, if i give you money would you go out and get me some fruit? \n\njerry: why can't you get it? \n\nkramer: well i got banned from the store i can't go back in there now. \n\njerry: what happened? \n\nkramer: well you know, we had a fight over the peach and uh well joe doesn't want my business. \n\ngeorge: hey, was that a joke about houdini? \n\njerry: (to george) no. (to kramer) i told you not to say anything. \n\nkramer: jerry, what am i gonna do for fruit? \n\njerry: well you'll have to go to the supermarket. \n\nkramer: the supermarket? that's impossible! they don't have a decent piece of fruit at the supermarket. the apples are mealy, the oranges are dry. i don't know what's going on with the papayas! jerry you gotta go to joe's, you gotta get me some fruit! \n\njerry: oh so what i'm going to buy all your fruit now? \n\ngeorge: well if houdini couldn't do it, what chance do i have? \n\njerry: hello... oh hi patty, thanks for calling me back. i-i just wanted to ask you a question when we we're going out did you have orgasms?... okay, thanks... no that's it... ya, okay, bye. \n\njerry: patty lawrence had 'em! \n\nkramer: alright look i'm gonna make you a fruit list, all right? \n\njerry: yeah. \n\njerry: hello elaine? patty lawrence had orgasms what do you think about that? and i got calls in to six other women and i bet you they confirm an orgasm too. so what do you have to say now elaine?... hello? \n\n[location: outside joe's] \n\njerry: why do i feel like i'm doing something wrong? \n\nkramer: all right now here's the list. (hands jerry the list) \n\njerry: all this? it's too much. what do you need five mangos for? \n\nkramer: i like mangos. \n\njerry: avocado? i don't know how to pick out an avocado. \n\nkramer: well they gotta be soft. \n\njerry: how soft? \n\nkramer: not too soft. better too hard than too soft. \n\njerry: (looking over the list) hmm ah. i'm not going through this every week, i tell you that right now. and what are these? plums? what is that? \n\nkramer: yeah now get the ones that are red on the inside. \n\njerry: uh huh. well how do i know what they look like on the inside? what do they look like on the outside? \n\nkramer: oh! and get some plantains. (grabs the list to write them down) \n\njerry: plantains? \n\nkramer: yeah. \n\njerry: what the hell is a plantain. \n\nkramer: it's part of the banana family. it's a delicacy. \n\njerry: (grabbing the list from kramer) you're not getting any plantains. \n\njerry: hey joe. \n\njoe: how's it going? \n\njerry: good, just getting some fruit for myself. uh, gotta have fruit in the house. i like it as a snack. wholesome, natural, chock-full of vitamins. alright let's see... mangos... four plums with red on the inside... avocado... (looks at joe; joe gives him a weird look)ooo, just right... and three plantains uh ought to do it. \n\njoe: all right, all right, just hold it right there. \n\njerry: what? \n\njoe: this fruit isn't for you. \n\njerry: (shocked) wha, what are you talking about? \n\njoe: you think i don't know huh? mangos, plantains, plums with the red on the inside, that's kramer! \n\njerry: i can't buy mangos and plantains? \n\njoe: all right, get out! \n\njerry: you're making a big mistake, joe! \n\njoe: i'll tell you something else i don't what your business anymore either. \n\njerry: are saying you're banning me from the store? \n\njoe: that's exactly what i'm saying. \n\njerry: i'm banned?! \n\njoe: you're banned. \n\n[location: jerry's apartment] \n\ngeorge: all right, where do you want it? \n\njerry: put it over there. \n\nkramer: yes! oh look at this, these mangos are beautiful! oh these are beautiful, (smells them) you did good george. \n\ngeorge: all right i gotta get going. \n\njerry: what are you doing? \n\ngeorge: i got a date with karen. i don't know what i'm gonna do. nothing happening down there. \n\njerry: you're thinking about it too much. you're putting too much emphasis on it. \n\ngeorge: i knew this was gonna happen some day. it was inevitable. i've known it ever since i was a little kid. i've been waiting for it. \n\nkramer: this mango is delicious! \n\ngeorge: that reminds me, i'm not getting you guys any more fruit. that guy was eyeballing me the whole time. he gave me the creeps. all right, you owe me twenty-eight sixty. \n\njerry: sorry, i don't have any cash. \n\nkramer: i only got hundreds. \n\ngeorge: you see... all right i knew it. \n\nkramer: come on, come on, we're gonna pay you! here have some mango. \n\ngeorge: i don't want any mango. \n\nkramer: come on, take some. it's good. \n\ngeorge: very good. juicy. \n\nkramer: ya. \n\ngeorge: ripe. boy, this joe's got some terrific fruit. \n\nkramer: mmm. \n\njerry: what? \n\ngeorge: i feel like i got a b12 shot. this is like a taste explosion! \n\nkramer: ya i told you. \n\njerry: what is it? \n\ngeorge: i think it moved. oh my god, i think it moved. yeah, give me the big piece. i'll see you later. \n\nelaine: hi george. \n\ngeorge: i'm back, baby, i'm back! \n\nkramer: want some mango? \n\nelaine: noo, thanks. \n\njerry: well well, if it isn't the first lady of the american theatre. (elaine smiles and rolls her eyes at him) what brings you here? \n\nelaine: just gonna return some of your things that were in my house. \n\njerry: oh and i've got some things of yours here. \n\nelaine: i know. \n\njerry: well i'll get them. \n\nelaine: i'm waiting. \n\njerry: all right. (goes into his hallway and comes back) you got my fins? \n\nelaine: yeah i got your fins. you got my poker chips? \n\njerry: i got your poker chips. you got my goggles? \n\nelaine: they're next to the fins. you got my cards? \n\njerry: they're next to the poker chips. \n\nelaine: all right and that just about... does it. \n\njerry: i guess. \n\nelaine: okay, welp... see you around. \n\njerry: yeah, see you. \n\nelaine: all right, let's go, i give you half an hour. \n\njerry: (shocked) what? \n\nelaine: come on! \n\njerry: are you serious? \n\nelaine: look, jerry, we have to have sex to save the friendship. \n\njerry: sex... to save the friendship. (elaine drops her bag, takes off her jacket and walks into jerry's bedroom) well, if we have to (un-tucks his shirt) we have to. \n\n[location: karen's bedroom] \n\nkaren: mmmm, oh george, oooh. \n\ngeorge: please, it's not necessary. \n\nkaren: mmm what's not necessary? \n\ngeorge: the little extra moan you threw in there. laying it on a bit thick, don't you think? \n\nkaren: what are you talking about? \n\ngeorge: what am i talking about? come on. (laughing) you don't think i bought all that? (does a little move) \n\nkaren: what, what? \n\ngeorge: you're very good. very good with the moanings and the gyrations. y-you really had me going there for a minute. \n\nkaren: you think i was faking? \n\ngeorge: come on 'oh george, oh geeeooorge!' come on! not that i don't appreciate the effort that was put into it. \n\nkaren: i'd like you to leave. \n\ngeorge: what? \n\nkaren: i said, i would like you to leave. come on, just get your clothes on and get out. \n\ngeorge: but why? \n\nkaren: because i said so. (pushes george off the bed) \n\ngeorge: i-i-i can't find my glasses. \n\nkaren: well hurry up. \n\ngeorge: i need to look for my glasses. \n\nkaren: (seen through george eyes all blurry) get out! get out!! get out!!! \n\n[location: jerry's bedroom] \n\njerry: it's all george's fault. all that talk about impotence. it got to me. and that orgasm stuff orgasm this and orgasm that. it's a lot of pressure! \n\nelaine: you know i'm a little hungry. you wouldn't happen to have any of that mango left? \n\nthe female orgasm is kinda like the bat cave, very few people know where it is and if you're lucky enough to see it you probably don't know how you got there and you can't find you way back after you left. there are two types of female orgasms: the real and the fake. and uh i'll tell you right now, as a man, we don't know. we do not know, because to a man sex is like a car accident and determining the female orgasm is like being asked 'what did you see after the car went out of control?'. 'uh i heard a lot of screeching sounds, uh i remember i was facing the wrong way at one point. and in the end my body was thrown clear. \n\n[setting: jerry's apartment] \n\ngeorge: i can't believe this. \n\njerry: oh, it won't be for that long. \n\ngeorge: how can i do this? how can i move back in with those people? please, tell me. they're insane. you know that. \n\njerry: hey, my parents are just as crazy as your parents. \n\ngeorge: how can you compare you parents to my parents?! \n\njerry: my father has never thrown anything out. ever! \n\ngeorge: my father wears his sneakers in the pool! sneakers! \n\njerry: my mother has never set foot in a natural body of water. \n\ngeorge: (showing jerry up) listen carefully. my mother has never laughed. ever. not a giggle, not a chuckle, not a tee-hee.. never went 'ha!' \n\njerry: a smirk? \n\ngeorge: maybe!.. and i'm moving back in there! \n\njerry: i told you i'd lend you the money for the rent. \n\ngeorge: no, no, no, no. borrowing money from a friend is like having sex. it just completely changes the relationship. \n\nkramer: alright. i'm ready. (to george) you know, i still don't understand - why do you want to move back in with your parents? \n\ngeorge: i don't want to! i'm outta money! i got 714 dollars left in the bank. \n\nkramer: well, move in here. \n\njerry: (stopping the notion) what's that? \n\nkramer: why doesn't he just move in here? \n\ngeorge: (sarcastic) yeah, yeah. i'm gonna move in with him. he doesn't even let you use the toilet! \n\nkramer: you can move in with me, if you want. \n\ngeorge: (sincerely) thank you.. i, uh.. that might not work out. \n\n[setting: the costanza's house] \n\nestelle: careful! careful with the suitcases! we just painted! \n\nkramer: hello, mrs. costanza. \n\njerry: (quietly) hello, mrs. costanza. \n\nestelle: (not really noticing jerry said hello) hello, kramer. close the door. \n\nkramer: well, i gotta bring in more stuff. (heads for the door) \n\nestelle: more stuff?! \n\nkramer: yeah. (exits) \n\nestelle: (to george) how much is there?! \n\ngeorge: (annoyed) there's more. \n\nestelle: so, how are ya, jerry? \n\njerry: fine, mrs. costanza. (attempts to get estelle to laugh) hey, i got a terrific joke for you.. \n\nestelle: (sits down on the couch) nah, not interested. \n\njerry: no, no. it-it's really funny. there's these two guys- \n\nestelle: (interrupting) tell it to the audience. (george gives jerry an 'i told you so' look) here, (picks up a plate full of sandwiches) i made some bologna sandwiches. \n\ngeorge: bologna?! no one eats bologna anymore! \n\nestelle: what are you talking about?! (to jerry) have a sandwich. \n\njerry: (setting down a box) no thanks. \n\nestelle: oh, stop it! you don't want one, kramer? \n\nkramer: uhh.. no thanks. (goes back out the door) \n\nestelle: i think you're all a little touched in the head. (puts the plate down) you're so worried about your health.. you're young men. \n\njerry: i really don't eat it. \n\nestelle: what am i gonna do with all these sandwiches?! will you take them home? give them to someone in your building? \n\njerry: i don't know if i'd feel comfortable handing out bologna sandwiches in the building.. \n\nkramer: (enters with a box) alright, that's it. anything else? \n\ngeorge: (muttering) no, that's it. \n\nkramer: oh, i gotta go move the car. alright (leaves) \n\njerry: well, i guess we'll be going.. (heads for the door) \n\ngeorge: (runs over to him, not wanting him to leave) what? you're going? \n\njerry: yeah. \n\ngeorge: wha - what are you doing later? \n\njerry: oh, elaine and i are going out to dinner with kramer and his new girlfriend. \n\ngeorge: really? \n\njerry: yeah, you can't believe this woman. she's one of those low-talkers. you can't hear a word she's saying! you're always going 'excuse me?', 'what was that?' \n\ngeorge: yeah.. may - maybe i'll meet ya? \n\nestelle: no, george. we're going out to eat tonight with your father. \n\ngeorge: (mutters) oh.. okay.. talk to you later. \n\njerry: yeah, take it easy. (leaves) \n\ngeorge: oh, my god.. (buries his face into his hands) \n\n[setting: a restaurant] \n\nelaine: okay, well, he had this idea of a pizza place where you make your own pie! (laughs) \n\njerry: right. \n\neliane: you remember that? \n\nkramer: yeah, well, that was a good one. \n\njerry: well.. \n\nelaine: what's that? \n\njerry: excuse me? \n\njerry: yeah.. yeah. \n\nelaine: yep. yeah.. \n\nkramer: you know that, uh, leslie (points to her) is in the clothing business? she's a designer. \n\nelaine: (interested) oh? \n\nkramer: in fact, she's come up with a new one that is going to be the big new look in men's fashion.. it's a, a puffy shirt. (leslie mumbles to kramer) well, yeah, it - it's all puffy. like the pirates used to wear. \n\nelaine: oh, a puffy shirt. \n\njerry: puffy. \n\nkramer: yeah, see, i think people want to look like pirates. you know, it's the right time for it.. to be all puffy, and devil-may-care.. \n\nkramer: (still laughing) that's true.. (gets up) i'll be right back. (walks off laughing. jerry and elaine are left with the low-talker. a moment passes) \n\nelaine: uh, o... (remembers something they could talk about) jerry's going to be on the \"today\" show on friday. \n\njerry: yeah, that's right! \n\nelaine: yep.. yep. um, he's promoting a (pauses) benefit for goodwill, you know, they, uh, they clothe the (clears her throat) poor, and the homeless.. \n\njerry: (points at elaine) and the indigent. \n\nelaine: and the indigent, yeah.. i, i do volunteer work for them. i-i set the whole thing up, and i got jerry to do it. \n\njerry: sure. \n\nelaine: ohh, yeah. yeah.. yep. \n\njerry: uh-huh. \n\nelaine: yep. \n\njerry: yep.. \n\nelaine: mmm \n\n[setting: a restaurant] \n\nestelle: maybe you should take a civil service test. \n\ngeorge: (studying the salt shaker) i'm not taking a civil service test. \n\nfrank: look at this, george. (takes a coin out of his pocket) you ever seen a silver dollar? \n\ngeorge: yes, i've seen a silver dollar. \n\nelaine: why don't you want to take a civil service test? \n\ngeorge: to do what?! work in a post office? is that what you want me to do? \n\nfrank: would you believe when i was 18, i had a ssssilver dollar collection? \n\nestelle: i don't understand. you get job security - you get a pay check every week.. \n\ngeorge: i'm a college graduate. you want me to be a mailman? \n\nfrank: (still looking at his coin) you know, i couldn't bring myself to spend one of these. i got some kind of a-a-a-a-a phobia. \n\nestelle: so what are you gonna do?! \n\ngeorge: i don't know. i do know that i have some kind of a talent - something to offer. i just don't know what it is yet! \n\nfrank: i bet that collection would be worth a lot of money today. (does a form of magic trick making the coin disappear as he shows george an empty hand) \n\ngeorge: (looks fed up with his parents) oh my god.. \n\nfrank: i don't like this waiter. (holds up his hand to get the waiters attention - starts snapping) look at him.. he sees us.. he doesn't want to come over. \n\ngeorge: (needing to get away from his parents, he gets up) i need some air.. \n\nestelle: george, where are you going?! \n\ngeorge: (walks off) i got a lot of thinking to do. \n\ngeorge: oh, i'm sorry. i'm terribly sorry.. (bends down, and starts picking up her things) \n\nwoman: look at what you've done! you spilled my bag! \n\ngeorge: (stuttering) i, i, i, .. here, let me - let me help you.. \n\nwoman: no, no ,no. it's all right. (begins helping him pick her things up) \n\ngeorge: it - it's just that i'm here with my parents, and my mother wants me to take a civil service test - and to tell you the truth, i don't even think i'd pass it.. so.. \n\nwoman: hmm.. \n\ngeorge: what? \n\nwoman: (looking at both his hands intensely) your hands. \n\ngeorge: what about them? \n\nwoman: they're quite exquisite! \n\ngeorge: they are? \n\nwoman: (mesmerized) extraordinary! have you ever done any hand modeling? \n\ngeorge: hand modeling? (shakes his head 'no') \n\nwoman: (fishes a card out of her purse, then hands it to george) here's my card. why don't you, uh, give me a call? (walks off) \n\n[setting: jerry's apartment] \n\njerry: (shrugs) i - i don't get it. \n\ngeorge: me neither! \n\njerry: what is it? \n\ngeorge: i don't know. \n\njerry: they're hands! \n\ngeorge: this woman just set me up for a job! \n\njerry: (gets up, and displays his own hands) well, what about my hands? i don't see how your hands are any better than my hands. \n\ngeorge: what, are you kidding? (points at the flaws of jerry's hands) the knuckles are all out of proportion. you got hair over there - where do you get off comparing your hands to my hands?! this is a one-in-a-million hand. (points to his own hand) \n\njerry: well, that's what comes from avoiding manual labor your whole life. \n\ngeorge: this is it! it happened to me, jerry! i was sitting in the restaurant, the two nut jobs were talking - i couldn't take it any more. i got up, and (makes a noise) i bop into this woman.. \n\njerry: it's just like in the movies. \n\nkramer: hey. (he's carrying a suit cover. he hangs it on jerry's coat hooks) \n\njerry: hey. \n\nkramer: hey, george! (holds out his hand. george shakes it - a hand buzzer goes off. george starts freaking out. kramer laughs) \n\ngeorge: oh!!!! what are you, crazy?! are you, crazy?! \n\nkramer: what?! \n\ngeorge: you coulda damaged my hand! \n\nkramer: (laughing) but, it's only a toy! \n\njerry: (explaining) george has become a hand model. \n\nkramer: a hand model? \n\njerry: yes. \n\nkramer: (to george) really? let me see your hands. \n\ngeorge: (defensively) you can look at them, but do not touch them. (holds them out) \n\nkramer: let's see.. (studies them) oh, those are nice. you know, i've never noticed this before? they're smooth.. creamy.. delicate, yet (turns to jerry) masculine. \n\ngeorge: (takes two oven mitts from his back pack) alright, (puts them on) i gotta get going. \n\njerry: oven mitts? \n\ngeorge: (embarrassed) that's all i could find. (a moment passes) would you mind getting the door? \n\nkramer: yeah.. \n\njerry: alright. (jerry opens the door for george) \n\ngeorge: thank you very much. (walks out) \n\nkramer: you're not going to believe what happening with leslie. you know, ever since you agreed to wear the puffy shirt on the today show, she's been getting all these orders from boutiques and department stores.. \n\njerry: uh-huh.. (finally realizes what kramer said, he looks up) since i said what? \n\nkramer: agreed to wear the puffy shirt. (starts unzipping the suit cover) \n\njerry: what are you talking about? \n\nkramer: when you said that you'd agree to wear the puffy shirt on the today show. (takes the ridiculous puffy shirt out of the cover) \n\njerry: (goes up to it) this? \n\nkramer: yea. \n\njerry: i agreed to wear this?! \n\nkramer: yeah, yeah. \n\njerry: but, when did i do that? \n\nkramer: when we went to dinner the other night. \n\njerry: what are you, crazy?! \n\nkramer: what were you talking about when i went to the bathroom? \n\njerry: i don't know! i couldn't understand a word she was saying! i was just nodding! \n\nkramer: (makes his pop sound) there you go. \n\njerry: where i go? you mean she was asking me to wear this ridiculous shirt on national tv, and i said 'yes'?! \n\nkramer: yes, yes! you said it! \n\njerry: but, i - i didn't know what she was talking about. i couldn't hear her! \n\nkramer: (takes it off the hook, and starts walking toward jerry with it. he backs defensively backs away from it) well, she asked you. \n\njerry: i - i can't wear this puffy shirt on tv! i mean, look at it! it looks ridiculous! \n\nkramer: well, you gotta wear it now! all those stores are stocking it based on the condition that you're gonna wear this on the tv show! the factory in new jersey is already makin' em. \n\njerry: they're making these? \n\nkramer: yes, yes. this pirate trend that she's come up with, jerry, this-this is gonna be the new look for the 90's. you're gonna be the first pirate! \n\njerry: (like a little kid) but, i don't want to be a pirate! \n\n[setting: the costanza house] \n\nestelle: i knew it. i knew it.. i always knew you always had beautiful hands. i used to tell people. frank, didn't i use to talk about his hands? \n\nfrank: (looking up from his paper) who the hell did'ya ever mention his hands to? \n\nestelle: (getting annoyed) i mentioned his hands to plenty of people! \n\nfrank: you never mentioned them to me! \n\ngeorge: (snaps, then points to the coffee table) hand me an emory board. \n\nestelle: i always talk about your hands - how they're so soft and milky white.. \n\nfrank: no! you never said milky white! \n\nestelle: (getting angry) i said milky white! \n\ngeorge: (to estelle) scissor. (she gets the scissors from the coffee table and hands them to george with the point facing him) don't hand them to me with the point facing out! \n\nestelle: i'm sorry. \n\ngeorge: you're sorry?! \n\nestelle: (apologizing) i'll try to be more careful. \n\ngeorge: (stern, angered) i hope so. (takes the scissors) \n\nestelle: georgie.. (nudges george's arm, disrupting his work with the scissors) oh, georgie, would you like some jell-o? \n\nfrank: (to estelle, referring to the jell-o) why'd you put the bananas in there?! \n\nestelle: (yelling) george likes the bananas! \n\nfrank: (trying to match her tone) so let him have bananas on the side! \n\ngeorge: alright! please, please! i cannot have this constant bickering!.. stress is very damaging to the epidermis! now, i have an important photo session in the morning - my hands have got to be in tip-top shape, so please - keep the television down, and the conversation to a minimum. \n\nestelle: (meek) but georgie.. what about the jell-o? \n\ngeorge: (definite) i'll take it in my room. (walks off) \n\n[setting: a today show dressing room] \n\nkramer: yeah, come in. \n\nstagehand: i just wanted to let you know he's got about five minutes. \n\nkramer: giddy-up. (stagehand leaves) jerry! five minutes! \n\nkramer: now that's a great looking shirt! (gets up, admiring the shirt) aye captain! (growls like a pirate) yeah! i'm glad i ironed it. it's perfect. (walks around jerry, inspecting the shirt) look at it! it's fantastic! \n\njerry: (resisting) kramer, how am i gonna wear this?! i-i can't wear this! \n\nkramer: (reassuring) hey, this look's better than anything you own. you know, in two months time, everybody's gonna be wearing the (imitates a pirate) pirate look! \n\nkramer: yeah. \n\nelaine: hi, kramer. guess what - i just saw bryant gumbel, he said he might help out at the benefit! \n\nkramer: great. \n\nelaine: (between laughs) what is that?! \n\nkramer: it's the puffy shirt. look at it, eh? whatd'ya think? is it cool or what? \n\nelaine: (to jerry) why're you wearing that now? \n\njerry: (obviously mad at the situation he's in) 'why am i wearing is now?? i'll tell you why i'm wearing it now - because the lowtalker asked me to, that's why! and i said 'yes'. do you know why? because i couldn't hear her! \n\nelaine: when did she, (snickers) when did she ask you this? \n\njerry: when we were at dinner, when kramer went to the bathroom. \n\nelaine: i didn't hear anything. \n\njerry: (yelling out) of course not! nobody hears anything when this woman speaks! \n\nelaine: (just now making the matter serious) well, you can't wear that on the show. \n\nkramer: (to elaine, muffled, low, and threatening) elaine, you want to stop? \n\nelaine: (turning around to kramer) wha- what? no. (back to jerry) jerry, you are promoting a benefit to clothe homeless people. you can't come out dressed like that! you're all puffed up!.. you look like the count of monte cristo! \n\njerry: (arms out, complaining) i have to wear it! the woman has orders for this shirt based on me wearing it on tv.. they're producing them as we speak! \n\nelaine: (arguing) yeah, but you're supposed to be a compassionate person! that cares about poor people! you look like you're gonna.. swing in on a chandelier! \n\nstagehand: (looking down at a clipboard, enters) okay, let's go. (looks up, points at jerry's puffy shirt) is that what you're wearing? \n\n[setting: a photographer's studio] \n\nman: i've never seen hands like these before.. \n\nwoman: they're so soft and milky white. \n\nphotographer: you know who's hands they remind me of? (pauses for effect) ray mckigney. \n\nman: ugh.. ray. \n\nphotographer: he was it. \n\ngeorge: who was he? \n\nphotographer: the most exquisite hands you've ever seen.. oh, he had it all. \n\ngeorge: (hands still out, even though they've stopped looking at them) what happened to him? \n\nman: (clears throat) tragic story, i'm afraid. he could've had any woman in the world.. but none could match the beauty of his own hand.. and that became his one true love.. \n\ngeorge: you mean, uh..? \n\nman: yes. he was not.. master of his domain. \n\ngeorge: (makes a gesture saying he understands. the man nods) but how.. uh..? \n\nman: (quick, to the point) the muscles.. became so strained with.. overuse, that eventually the hand locked into a deformed position, and he was left with nothing but a claw. (holds hand up, displaying a claw-like shape) he traveled the world seeking a cure.. acupuncturists.. herbalists.. swamis.. nothing helped. towards the end, his hands became so frozen the was unable to manipulate utensils, (visibly disgusted by this last part) and was dependent on cub scouts to feed him. i hadn't seen another pair of hands like ray mckigney's until today. you are his successor. (george looks down at his hands) i uh only hope you have a little more self-control. \n\ngeorge: (smiling to himself) you don't have to worry about me. (nodding, gloating) i won a contest. \n\nphotographer: ok, let's get to work. \n\n[setting: the today show] \n\nbryant: (talking directly to the camera) back now, 746. on tuesday the 19th here in new york there will be a benefit for the goodwill industries - a used clothing organization that provides services to the needy. one of the performers will be comedian jerry seinfeld. (turns to face jerry) jerry, good morning. \n\njerry: (mumbling out) thank you, bryant. \n\nbryant: (pointing out) and speaking of clothing, that is a very, very unusual shirt you have on. \n\njerry: (looking down at the shirt; mumbling) oh, thank you. \n\nbryant: you're all kinda, (waves his hands around) kinda \"puffed up\". (chuckles) \n\njerry: yeah, it's a puffy shirt. \n\nbryant: (laughing) you look kinda like a pirate. \n\njerry: (nervous laughter) yeah.. like a pirate.. (attempting to get on another subject) anyway, ah, you know, we're hoping to, um, raise enough money.. with this.. uh.. \n\nbryant: (rudely interrupting, still snickering at the shirt) you.. ah, look, i'm sorry, it is just a very unusual shirt. it could be kind of a whole new look for you.. you know, you could put a patch over an eye, you could be kind of like the pirate-comedian. \n\njerry: uh-huh, yeah. (smiling, nodding, clearly wanting bryant to shut up) \n\nbryant: are you going to be wearing the shirt at the concert? \n\njerry: (losing it, mad) look, it's not my shirt. \n\nbryant: (confused) whose shirt is it? \n\njerry: what's the difference? i agreed to wear it. it's - it's a puffy shirt. i feel ridiculous in it, and i think it's the stupidest shirt i've ever seen, to be perfectly honest with you. (nodding) \n\nleslie: (off camera, shrill, high pitched yelling) you bastard! \n\nbryant: (to jerry) did you hear that? \n\njerry: (pointing off screen, nodding) that i heard. \n\n[setting: photographer's studio] \n\nphotographer: (instructing george) alright, a little to the left.. little higher, little higher. good. perfect! perfect. \n\ngeorge: like that? \n\nphotographer: just like that. hold it. (takes picture) good, ok, let me get just one more, one more. (takes another picture) good, that's it. you're done. \n\ngeorge: that's it? \n\nphotographer: (smiling) that's it. \n\nman: (pulling a slip of paper out of his coat pocket) and here's your check. (george accepts) thank you very much. (pats him on the back) it was an honor. \n\nwoman: it was great working with you. (somewhat coy) your hands are beautiful. \n\ngeorge: (modest) oh, thank you very much. (chuckles) \n\nwoman: you know, i was wondering - if you're not doing anything later, maybe you'd like to get together..? \n\n[setting: park] \n\n[setting: today show dressing room] \n\nleslie: you ruined me! you ruined my career! \n\njerry: oh, just keep your voice down. everyone can hear you. \n\nleslie: (shouting out) oh, i don't give a damn! \n\njerry: (reasoning) you know, if you talked this loud to begin with, i wouldn't be in this costume in the first place! \n\ngeorge: (quick, excited talking) hey, hey! you can't believe this. look at this check! (hands it to jerry) they told me i had the most beautiful hands they'd ever seen in their lives - except for this mckigney guy - this great looking girl gave me her phone number.. i got it! i got it all! i'm busting. jerry, i'm busting! \n\nelaine: hey, i've never noticed your hands before. let me see. \n\ngeorge: alright. (holds them up) \n\nelaine: (obviously not impressed, dull) yeah, real nice. \n\ngeorge: (turning back to jerry, he takes the check back. he just now notices the shirt jerry's wearing, and snickers, pointing) nice shirt.. (laughs, jerry shrugs) what is this? is this what you wore on the show? \n\njerry: yeah. \n\ngeorge: what, have you completely lost your mind? \n\nkramer: (faint, trying to shut george up) hey.. \n\ngeorge: who's dressing you? (laughs) you look like a complete idiot! you know, i wouldn't wipe my- (unable to take anymore, leslie gets up and shoves george violently. his hands go straight for the hot iron sitting on the dressing room table. george screams out in agony) aahhhh!!!!! (his voice is heard outside the building, on the street, and in the park were a bunch of pigeons are scared by the yelling) \n\n[setting: a restaurant] \n\nelaine: you ready? \n\ngeorge: ow! hot! hot! \n\nelaine: (sincere) i'm sorry. \n\ngeorge: (reflecting on his life gone wrong) this mckigney guy had a few good years.. (to kramer, bitter) how could you forget to turn off an iron? \n\nkramer: well, i was excited because jerry was putting on the puffy shirt. \n\ngeorge: my whole life is ruined because of the (mocking, bitter tone) \"puffy shirt\". \n\njerry: (pointing out) it didn't do me any good either! that benefit was the worst show i ever did. some of those heckles were really uncalled for \"avast ye matey\" - what the hell does that mean?! \"20 degrees off the starboard side - the spanish galleon!\" - there's no comeback for that! \n\nelaine: (reflecting) well, it got me fired from the benefit committee. \n\nkramer: you know all those stores canceled out on her? she's finished. (concluding) we're (leslie and him) finished. \n\njerry: really? what happened? \n\nkramer: (showing pure irony) i just can't be with someone who's life is in complete disarray. \n\njerry: what happened with all the shirts? \n\nkramer: they gave them all to goodwill. \n\nhomeless man: ahh, can you spare a little change for an old buccaneer? \n\njerry: (while digging in his pocket for some money, he looks over the shirts one last time) you know, it's really not a bad looking shirt.. \n\nelaine: do you ever spit on anybody from here? \n\njerry: no. you? \n\nelaine: no. do you ever think about it? \n\njerry: yeah. \n\nelaine: me too. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: well i got it! \n\njerry: you got me the air conditioner? \n\nkramer: what do you think? \n\njerry: beautiful! \n\nelaine: what air conditioner? \n\nkramer: well my buddy works in an appliance store and he got us thirty percent off. \n\njerry: is it a good one? \n\nkramer: good one? it's the commando 8. \n\njerry: commando 8? \n\nkramer: 12,000 btu's. \n\nelaine: i thought you hated air conditioning. you've never had an air conditioner. \n\nkramer: yeah, but amy likes air conditioning. \n\nelaine: oooh, you're getting an air conditioner for amy. (in a wining voice) amy doesn't like the temperature up here. she's a little hoooot. \n\njerry: all right. \n\nkramer: okay, so, i'm gonna measure the window up, okay buddy? \n\njerry: yeah. \n\nkramer: yeah. (george enters the apartment wearing goggles) yeah, rock on! \n\ngeorge: i gotta get out of this city. \n\njerry: so you're tunneling to the center of the earth? (elaine laughs silently) \n\ngeorge: i'm at the health club and while i'm in the pool, some guy walks off with my glasses. who steals prescription glasses? \n\nelaine: you don't have an old pair? \n\ngeorge: i broke 'em playing basketball. \n\njerry: he was running from a bee. (elaine laughs) \n\ngeorge: now if i wanna see anything i gotta wear these. \n\nelaine: george, those are prescription goggles? what is there to see in a health club pool? \n\njerry: there's a lot of change down there. \n\ngeorge: when i find that guy, this much i vow those glasses will be returned to their rightful owner. \n\njerry: we're behind you, aquaboy. godspeed! \n\ngeorge: what kind of a sick, demented person wants another person's glasses? \n\nelaine: yeah, especially those frames. \n\nkramer: you know what you ought to do? go see my friend dwayne at j & t optical on columbus avenue. he'll give you thirty percent off. \n\ngeorge: yeah, come on. \n\njerry: hey, he just got me thirty percent off on an air conditioner. \n\ngeorge: really? \n\nkramer: retail is for suckers. \n\ngeorge: wow. uh, what do i have to do? \n\nkramer: you just gotta mention my name. \n\ngeorge: that's it? \n\nkramer: that's it. (smacks george on the forehead with a ruler) \n\ngeorge: what about these? \n\nelaine: they look good. i liked the other one too. i've liked about five of them. \n\ngeorge: well, it's a tough decision. i have to wear these every day. i'm deciding on a new face. \n\njerry: (bored) come on, george. pick a face and go with it. \n\nelaine: now those look good, they're very bold. \n\ngeorge: yes, they are bold. jerry, what do you think? \n\njerry: (while looking at posters of women wearing glasses) i think these women would be pretty good looking if they weren't wearing glasses. \n\nelaine: hi there, little doggy. (to owner) do you mind if i pet your dog? \n\ndog owner: it's okay with me. \n\nelaine: hey little doggy. (elaine pets the dog and he bites her) aaah! \n\ndwayne: hey, you can't have that dog in here. \n\njerry: are you okay? did he bite ya? \n\ngeorge: can you believe that guy? \n\nelaine: i'm okay, it's just a nip. \n\ngeorge: he just walked away! and once again i'm standing here like a little man. well not this time! (george leaves the store and follows the dog owner) you! dog man! \n\nelaine: my leg looks pretty bad. \n\njerry: oh i'm gonna take you over to the emergency room. \n\nelaine: okay. \n\njerry: (to george) hey, any luck? did you catch 'em? \n\ngeorge: uuh, no, no. \n\njerry: all right, i'm gonna take elaine over to the hospital. \n\ngeorge: (in a really strange way) good, good, do that. \n\njerry: what's the matter? \n\ngeorge: oh, no, nothing. \n\njerry: what is it? \n\ngeorge: i can't tell you. \n\nelaine: (pulling on jerry's pants from the ground) jerry, can we go? \n\njerry: yeah, yeah, in a second, in a second. (and to george) what do you mean you can't tell me? \n\ngeorge: i can't tell you, don't ask. \n\njerry: i'm asking! \n\nelaine: jerry, my leg. \n\njerry: yeah, yeah, take care of it. (jerry throws her some toilet paper) come on, george, what is it? \n\ngeorge: i saw amy making out with your cousin jeffrey. \n\njerry: what? \n\ngeorge: they were right outside! \n\njerry: amy and jeffrey? \n\ngeorge: yes! \n\njerry: are you sure? \n\ngeorge: yes, positive. \n\njerry: but you can't see, there's no lenses in those frames. \n\ngeorge: i know! i was squinting. \n\nelaine: okay, listen, jerry, you just catch up with me okay? you can just follow the trail of blood. \n\njerry: we're gonna have to talk about this later. (elaine holds the door open for jerry while holding her leg) thank you. taxi! \n\ngeorge: (to the store owner) excuse me, what do you think of these? \n\ndwayne: oh, we just got those in. it's a very exciting new frame. \n\ngeorge: yes, it is exciting! all right, this is gonna be my new face. \n\ndwayne: all right, do you have a prescription? \n\ngeorge: yeah. (george hands over the prescription) kramer... \n\ndwayne: what? \n\ngeorge: kramer... \n\ndwayne: what about him? \n\ngeorge: you do know kramer? \n\ndwayne: yes... \n\ngeorge: well, i'm mentioning his name. \n\ndwayne: why? \n\ngeorge: because... you know... \n\ndwayne: no, i don't know. look, i'm gonna need a deposit on these. \n\nelaine: oh, come on. cousin jeffrey? it's not possible! \n\njerry: why not? they could have met. she loves the park, he works for the parks department. \n\nelaine: jerry, that is so ridiculous. but, george didn't even have his glasses on! \n\njerry: but he was squinting. \n\nelaine: so what? squinting doesn't make that much of a difference. \n\njerry: are you kidding? i've seen 'em squint. he can squint his way down to like twenty, thirty vision. once we were driving down from the catskills and he lost his glasses. he squinted his way from wortsborough down to the tappan zee bridge! he was spotting raccoons, on the road! \n\ndocter: okay. \n\nelaine: okay? that's it? i don't need a shot? \n\ndocter: not shot, dog bite. \n\nelaine: no, no, no. i know i wasn't shot. do i need a shot? \n\ndocter: not shot, dog bite. woof woof, not bang bang. \n\njerry: nah, look at this. cable's out. \n\namy: oh that's okay, we don't have to watch tv. \n\njerry: no, no, no. no trouble at all, it's a principal the thing. (jerry picks up the phone and dials the number) i like them to know that i know what's going on. that they're not... getting away with anything. oh, i'm on hold. so, what did you do yesterday? \n\namy: yesterday? \n\njerry: yeah, you remember yesterday? beautiful day... good day to be... out. \n\namy: i didn't do anything. \n\njerry: (laughing) oh you must have done something. \n\namy: no, nothing really. \n\njerry: didn't go out of the house? didn't take a walk... on columbus avenue? \n\namy: well, i did go out for a little while. \n\njerry: well, your day's getting more interesting already. (jerry shows the phone) ah, see, told me they'd be back in a minute and they lied. \n\namy: you can't thrust anyone. \n\njerry: no you can't. (hangs up the phone) now let's cut the ball, sister! you think i don't know about you swapping spit with somebody yesterday on columbus avenue? \n\namy: what are you talking about? \n\njerry: look, my friend saw you. \n\namy: saw me? with who? \n\njerry: you tell me. \n\namy: there's nothing to tell. \n\njerry: there isn't? \n\namy: no. \n\njerry: oh... all right... wanna get some pizza? \n\namy: i had a feeling this was to good to be true. \n\njerry: why? \n\namy: i knew there had to be another side to you. \n\njerry: no, no, there's no side! \n\namy: there is a side, an ugly side. \n\njerry: no, no, no ugly side. \n\namy: look, i think i'm gonna go. \n\njerry: why? \n\namy: it's really hot in here. \n\njerry: uuh, so we can still go out on friday though? \n\namy: yeah. when you getting an air conditioner? \n\njerry: it's coming! it's a commando 8! 12.000 btu's! it's gonna be like a meat locker in here. \n\njerry: i was an idiot for listening to you! \n\ngeorge: hey, i saw what i saw. \n\njerry: ooh, everything was going so well. she hadn't seen any flaws in me. now she sees a side. \n\ngeorge: what side? \n\njerry: a bad side, an ugly side. \n\ngeorge: ooh, so what? \n\njerry: so what? i wasn't planning on showing that side for another six months. now you make me throw off the whole learning curve. \n\ngeorge: why don't you just ask jeffrey? \n\njerry: ah, he'd just deny it. \n\ngeorge: there must be some way to find out. \n\njerry: amy said nothing happened. \n\ngeorge: what, you're gonna take her word over mine? i'm your best friend! \n\njerry: yeah, but you're blind as a bat! \n\ngeorge: i was squinting! remember that drive from wortsborough? (snapping his fingers) i was spotting those raccoons. \n\njerry: they were mailboxes, you idiot. i didn't have the heart to tell you. \n\ngeorge: (noticing something) hey look, a dime. \n\ngeorge: heh, mercury head. you mind? \n\njerry: (stunned) no, keep it. (elaine enters the apartment) hey what happened to you? you buzzed five minutes ago. \n\nelaine: there was a dog in front of the building and it spooked me. i couldn't come in until he left. \n\njerry: a little white dog? \n\nelaine: yeah. \n\njerry: snowball? you were afraid of snowball? \n\nelaine: i'm afraid of dogs now. \n\njerry: he's like a squirrel. \n\nelaine: well he frightened me. \n\ngeorge: did you get the shot? \n\nelaine: no. he said i didn't need a shot. \n\ngeorge: you got bit by a strange dog and you didn't get a rabies shot? \n\nelaine: what, you think i should have? \n\njerry: you know, you should just go back to the optical store and ask dwayne if he knows the name of the owner of the dog. \n\nelaine: all right, that's a good idea. i'm gonna do that. \n\nkramer: the ac is on it's way. \n\ngeorge: pardon me, i went to see your friend dwayne... there was no discount. \n\nkramer: what? \n\ngeorge: that's right, no discount! \n\nkramer: well did you mention my name? \n\ngeorge: yes, i mentioned your name. \n\nkramer: and? \n\ngeorge: pbbbs, bubkis! \n\nkramer: now i don't believe this. that guy owes me big time. i got him off sugar! look, i'm gonna go down there with you right now. \n\ngeorge: all right, let me just... i'm gonna grap an apple. \n\njerry: hey, kramer, elaine's afraid of snowball! \n\nkramer: little snowball? he runs on batteries! \n\nelaine: you know, george, that's an onion. \n\ngeorge: yes it is. \n\nelaine: he couldn't tell an apple from an union and he's your eye witness? \n\ngeorge: i saw them making out, you can believe it. \n\njerry: i don't know what to believe! you're eating unions, you're spotting dimes, i don't know what the hell is going on. \n\nkramer: look, all you gotta to do, is get amy and jeffrey together somewhere, that's it. \n\njerry: hey wait a second, wait a second. i'm going over to jeffrey's apartment tomorrow night to pick up these paul simon tickets. i'm gonna surprise amy. all i gotta do is bring her with me. and then when jeffrey opens the door, it's howdy doody time. \n\nkramer: right this way, mister doody! \n\ngeorge: (crying from the onion) you'll see i'm right. \n\nkramer: hey, dwayny. \n\ndwayne: oh hello kramer. \n\nkramer: what is going on here? \n\ndwayne: what are you talking about? \n\nkramer: i'm talking about the thirty percent discount. \n\nelaine: uhm excuse me... uh... a man came in here... \n\ngeorge: elaine, don't interrupt, they're discounting something. \n\ndwayne: who said anything about a discount. \n\nkramer: ooh, how quickly we forget. you owe me buddy. \n\ndwayne: for what? \n\nkramer: remember this? \n\ndwayne: what are you doing? \n\nkramer: six months ago you were eating four of those for breakfast and chasing it with a ring ding. and two butter fingers on the train. sounds familiar? \n\ndwayne: put that away! \n\nkramer: remember that night i found you at dinky donuts? you were all *hopped* up on cinnamon swirls! they wouldn't serve you anymore! you wouldn't even have any teeth if it wasn't for me taking you over to joe's fruit stand and stuffin' cantaloupe down your throat! so much for gratitude... yeah, yeah, yeah! \n\ndwayne: all right, all right, all right! i'll give him the discount, just put that thing away! this squares us. \n\nelaine: can i just have the name... \n\ndwayne: out! \n\nkramer: we'll see you dwayne. \n\njerry: i don't know what to tell you, elton. \n\nelaine: (while reading a book) oh oh, listen to this, this is not good, listen to these symptoms for rabies anxiety, irritability. i got those, i'm irritable! \n\njerry: (to george) who picked these out? \n\ngeorge: i did! \n\njerry: they're ladies' glasses! you know all you need is that little chain around your neck so you can wear 'em while you're playing canasta. \n\ngeorge: well elaine was supposed to help me. \n\nelaine: hey! i got bit by a dog! i had to go to the hospital! i was bleeding to death! i can't solve every little problem you have! \n\njerry: hey, hey. \n\nelaine: i'm sorry... sorry. \n\nkramer: commando 8 has arrived! \n\njerry: take it to the window. \n\nkramer: 12.000 btu's of raw cooling power. (kramer places the air conditioner in the window) installed! \n\ngeorge: that's it? you don't have to screw it in or anything? \n\nkramer: no, just plug it in and the commando 8 does the rest. (and to jerry) i'll seal that up later, right? \n\njerry: just in time for amy. \n\ngeorge: oh yeah, when are you gonna execute that plan? \n\nelaine: i've got such a headache. oh, that's another symptom! \n\nkramer: of what? \n\njerry: rabies. \n\nkramer: oh that's fatal, you don't want that! \n\nelaine: i know i don't want it! i don't need you to tell me what i don't want, you stupid hipster dufus! \n\njerry: hey, hey, what is this? what's going on here? \n\nelaine: i'm sorry, kramer, i'm sorry. \n\nkramer: no, no, it's all right. i had a friend who had rabies once. (george's eating chips) may i have one of those, madam? \n\ngeorge: madam? what are you calling me madam for? \n\nkramer: they're ladies' glasses. \n\nkramer: now look here, see it's right here gloria vanderbilt collection. \n\ngeorge: he sold me ladies' glasses! \n\nelaine: i... i think i'm... i'm having trouble swallowing. i can't... i can't swallow. \n\nkramer: she's got rabies, just like my friend bob sacamano. she's delirious. (elaine drinks some water and drools) she's foaming at the mouth! \n\nelaine: is this gonna hurt? \n\ndocter: yes, very much. \n\nelaine: what if jeffrey's not home. did you ever think of that? \n\njerry: oh he'll be home, it's friday night. that's the big night on the nature channel. \n\nelaine: let me tell you this there is no way cousin jeffrey is dating amy. he looks like a horse! \n\njerry: he does look like a horse. \n\nelaine: yeah, he's got a real horse face. (elaine, while looking out the window) here, look at this! it's the guy with the dog! (she opens the window and screams) hey! hey! you down there! remember me? i had to get shot because of your stupid dog! \n\ndog owner: hey who are you calling stupid? \n\njerry: hey, shall we spit on him? \n\nelaine: no no no no, come on, let's go downstairs. \n\nkramer: (singing) oh myyyy papayaaaa. (the air conditioner wobbles) the air conditioner! (kramer tries to keep it from falling by holding it's cord, but it snaps) i think it got the dog! \n\ngeorge: ah, oh boy. \n\nblind man: excuse me, uh i'm new here, would you mind walking me back to my locker? \n\ngeorge: oh uuh, sure, why not. (the blind man hangs on to george's arm) hey, that's the guy. \n\nblind man: what guy? \n\ngeorge: the guy that stole my glasses. this time i got 'em! (george follows the man onto the street, dragging the blind man with him) would you pick it up a little? \n\nblind man: where the hell are we going? \n\ngeorge: he's getting on a bus, damn! (to the blind man) those are nice glasses. \n\nblind man: i don't like 'em, they pinch my nose. \n\ngeorge: is that right? \n\ngeorge: dwayne, my friend and i would like to exchange frames. could you put his lenses in my frames and mine in his? \n\ndwayne: (while eating a candy bar) yeah, we can do that. \n\ngeorge: and i'd like a discount. \n\ndwayne: why should i give you a discount. \n\ngeorge: listen, you're lucking i'm not asking for a whole refund. (trying to speak quietly) you gave me ladies' frames! \n\nblind man: what's that about ladies' frames? \n\ndog owner: i'm trying to track down that lady that was in here the other day, the one that was messing with my dog. \n\ngeorge: yeah, well, she's trying to track you down. \n\ndog owner: well i would love to talk with her. (george chuckles) she lives on 81st street, right? \n\ngeorge: no, that's jerry. \n\ndog owner: really? you wouldn't happen to know what apartment he's in, would you? \n\ngeorge: yeah, 5a! \n\ndog owner: thanks a lot! \n\namy: so what are we doing here? \n\njerry: oh, you'll find out. \n\namy: i don't know, you're acting very mysteriously. \n\njerry: well, i'm very mysterious by nature. (jerry knocks on the door) a lot of women find that attractive. \n\namy: i find it annoying. \n\njerry: oh? \n\nuncle leo: helloooo! \n\njerry: uncle leo?! \n\nuncle leo: come on in. \n\njerry: this is amy. \n\nuncle leo: hello amy. \n\njerry: unlce leo, what are you doing here? \n\nuncle leo: jeffrey went out tonight. \n\njerry: ooh! very convenient. \n\nuncle leo: i'm supposed to tape this nature show for him, he loves nature. botany, zoology. you know his botany teacher from college stays in close touch with him? they became friends! \n\njerry: oh really? \n\nuncle leo: that's pretty rare! i mean, actual friends! like equals! they have dinner together, they have discussions... \n\njerry: uncle leo! did he leave any tickets here for me? \n\nuncle leo: oh yeah yeah, i'll get 'em. \n\njerry: thank you. \n\namy: what tickets? \n\njerry: to the paul simon concert in the park! \n\namy: we're going to the paul simon concert? \n\njerry: that's right, lady! \n\namy: oh what a great surprise! \n\njerry: i thought you'd like that. \n\namy: oooh, so that's why you've been acting so mysteriously. \n\njerry: now you know. that, and that alone, is the reason. \n\nuncle leo: you know jeffrey's favorite animal the leopard. \n\namy: why is that? \n\nuncle leo: he likes the spots. oh uh, here's the tickets. \n\njerry: thank you. \n\nuncle leo: oh uh, he asked me to give you a message. he said that uh he's very sorry and uh he hopes you'll forgive 'em. \n\njerry: (to amy) aha! so it's true! you were making out with him! \n\namy: what are you talking about, i don't know jeffrey. oh so this is why you brought me up here? \n\njerry: oh very convincing, but it's not gonna work this time. \n\nuncle leo: what are you talking about? all he meant was that he was sorry that the seats aren't very good. \n\njerry: oh... oh... wanna get some pizza? \n\ngeorge: boy, these really do pinch the nose. \n\nblind man: tough luck! a deal's a deal. \n\ngeorge: oh my god it is them. \n\njerry: i still don't know how you spotted that dime. i think you planted it. plus i had to pay that vet bill for the stupid dog. i don't know how that guy got my name. \n\ngeorge: yeah. hmm. boy these really do pinch. i tell you, if i ever find the son of a bitch that stole my glasses... \n\njerry: so, does he like you? \n\nelaine: what do you think? \n\njerry: you like him? \n\nelaine: yeah, yeah like him, definitely like him. i like him a lot. \n\ngeorge: so, what's wrong with him? \n\nelaine: nothing, and i've looked. \n\ngeorge: well, i'm sure you'll find something. \n\njerry: so, how did you meet him? \n\nelaine: in the office. \n\njerry: so, he's a writer. \n\nelaine: yeah. \n\njerry: yeah, big surprise. \n\nelaine: so, i was sitting at the reception desk, i was looking pretty hot. i was wearing my sling back pumps. \n\ngeorge: what are those? \n\nelaine: ask your mother, (making fun of george's living situation) you live with her now, don't you? anyway, so then this guy comes up to me and starts feeling my jacket through his thumb and his forefinger like this. \n\njerry: so, what did you do? \n\nelaine: i said \"so, what do you think?\". and he said, \"gabardine?\". and i said, \"yeah.\" that was it. \n\ngeorge: wow, just felt your material? \n\nelaine: yeah...jake jarmel. \n\ngeorge: sounds like a cool guy. \n\njerry: sounds like a jerk. felt your material, come on. \n\ngeorge: jerry, where did you get that sweater? \n\njerry: oh, what do you think? i found it at the back of my closet. \n\ngeorge: i think that's what the back of closets are for. \n\nelaine: hey, that's barry. look it's barry. (taps on the window) \n\njerry: (taps on the window) hey... \n\nelaine: hi. \n\ngeorge: who's that? \n\njerry: that's barry prophet, he's our accountant. \n\ngeorge: i don't know how you can let this guy handle all your money. \n\nelaine: oh, he doesn't handle my money, he handles jerry's money. he just does my taxes. \n\njerry: hey barry, how you doing? \n\nbarry: hey, how are you? \n\njerry: this is my friend george. \n\nbarry: hi george. (shakes george's hand) \n\nelaine: hi, what are you doing on this neighborhood? \n\nbarry: nothing really. (sniffs; looks around) you, eh, you eat here? \n\njerry: yeah, so how's my money? \n\nbarry: well it's still green. (sniffs twice) \n\njerry: what, you got a cold? \n\nbarry: no, no. \n\nelaine: wow, look at that ring. \n\nbarry: (showing off the ring to elaine) oh, uh you like that? (elaine not amused gives barry a polite laugh; barry sniffs) say uh, where's the bathroom? \n\njerry: bathroom uh, bathroom's uh right over there. \n\nbarry: (turns looking in the direction jerry mentioned) oh, great. \n\njerry: did you see that? \n\nelaine: see what? \n\ngeorge: yes, i saw that. \n\nelaine: what? \n\njerry: what was all that sniffing? \n\nelaine: i don't know. \n\njerry: you don't think...? \n\nelaine: oh, no! come on jerry. \n\ngeorge: he was definitely sniffing. \n\njerry: i mean what if, what if, this this guy has got all my money. plus he has got some kramer's money with him. this guy could write checks to himself right out of my account. \n\nelaine: no, i have known this guy since college. he doesn't do drugs. \n\njerry: then, what was all that sniffing? \n\nelaine: maybe it's the cold weather. \n\njerry: today's not cold. \n\ngeorge: all right, i gotta get going. my parents are expecting me. \n\nelaine: (making fun of george as he leaves) don't forget to wash your hands before supper. \n\nfrank: why do you need all that ketchup for? \n\ngeorge: this is my ketchup. i bought this ketchup just so i could have as much as i want. \n\nfrank: so i, i talked to phil casacof today. \n\nestelle: phil casacof? \n\nfrank: yeah, you know my friend, the bra salesman. he says they are looking maybe to put somebody on so i got you an interview next friday with his boss. \n\ngeorge: next friday, what time? \n\nfrank: 2 o'clock. \n\ngeorge: that's my whole afternoon! i was going to look for sneakers. \n\nfrank: you can look for sneakers the next day! \n\nestelle: he doesn't know anything about bras. \n\ngeorge: i know a little. besides, what do you have to know? \n\nfrank: well, it wouldn't hurt to go in the and be able to discuss it intelligently. maybe you should take a look at a few bras? (to estelle) where is you bra? give him a bra to look. \n\nestelle: i am not giving him a bra. \n\nfrank: why not? \n\nestelle: because i don't need him looking at my bra. \n\nfrank: why, so he'll go to the interview and he wouldn't know what he's talking about!?! \n\ngeorge: do we have to...? \n\nfrank: you don't even know what they're made from. \n\ngeorge: they are made from lycra-spandex. \n\nfrank: get out of here! lycra-spandex? \n\nestelle: i think they are made from lycra-spandex. \n\nfrank: wanna bet? how much you wanna bet? \n\nestelle: i'm not betting! \n\nfrank: take a look. \n\nestelle: all right, i'll get a bra. \n\nfrank: (yelling to estelle as she leaves)i don't know what the big problem is getting a bra?! \n\ngeorge: she doesn't want to get a bra. \n\nfrank: i'm not saying go to the library and read the whole history, but it wouldn't kill you to know a little bit about it. \n\ngeorge: all right, it wouldn't kill me. \n\nfrank: how long it takes to find a bra? what's going on in there? you ask me to get a pair of underwear, i'm back in two seconds...you know about the uh cup sizes and all? they have different cups. \n\ngeorge: yea i-i know about the cups. \n\nfrank: you got the a, the b, the c and the d. that's the biggest. \n\ngeorge: i know the d is the biggest. i've based my whole life on knowing that the d is the biggest. \n\nestelle: here, here's the bra. \n\nfrank: let me see it. \n\nestelle: (reading the bra) 100% lycra-spandex. \n\nfrank: let me see it. \n\nestelle: i told you. here, think you know everything? \n\nfrank: hmm, that's surprising. all right, what else? you got the cups in the front, two loops in the back. all right, a guess that's about it. \n\ngeorge: i got it. cups in the front, loops in the back. (puts the bra on the table) \n\nestelle: you got ketchup on it! \n\nkramer: sniffing, what do you mean sniffing? \n\njerry: sniffing, with his nose. \n\nkramer: jerry, he probably had a cold. \n\njerry: no, i asked him. \n\nkramer: so, what are you saying? \n\njerry: i don't know, you know, what if...? \n\nkramer: drugs? you think he's on drugs? \n\njerry: i don't know. \n\nkramer: jerry \n\njerry: all i know he was sniffing. \n\nkramer: listen, we went in on a cd together. \n\njerry: i know. \n\nkramer: and newman gave you money too. so, i didn't even meet this guy. you know, we trusted you. \n\njerry: look, it doesn't necessarily mean anything yet, it just means he was sniffing. \n\nkramer: well, what else? was he nervous? did he use a lot of slang? did he use the word 'man'? \n\njerry: no, he didn't use 'man'. \n\nkramer: i mean when he was leaving did he say \"i'm splittin'\"? \n\njerry: no, but in one point he did use the bathroom. \n\nkramer: whoh! \n\njerry: do you think that's a bad sign? \n\nkramer: yes!! yes, that's what they do! they live in the bathroom! all right, what are we going to do? we are going to get our money back, right? \n\njerry: i don't know. (takes off his sweater) this sweater really itches me. you want it? \n\nkramer: (grabbing the sweater) yeah. \n\nelaine: hello.... hello, oh... \n\njake: well, you notice anything? \n\nelaine: you have cleaned out the whole apartment and you're making dinner. you're perfect, you're a perfect man. \n\njake: ooh... \n\nelaine: did anyone call? \n\njake: you got a few messages, i wrote them down. \n\nelaine: where are they? \n\njake: lets see, they are (looking for the paper; finds it; hands it to elaine) here they are. \n\nelaine: thank you. (looking at the messages) oh ya, heh, i'll call you back. ooh, myra had the baby! oh, my god that's wonderful! who called? \n\njake: she did. \n\nelaine: she did? oh, that's so great! \n\njake: where do you keep the corkscrew? \n\nelaine: in the drawer on the right. hmm... \n\njake: what? \n\nelaine: nah it's nothing. \n\njake: what is it? \n\nelaine: it's nothing. \n\njake: tell me. \n\nelaine: well, i was just curious why you didn't use an exclamation point? \n\njake: what are you talking about? \n\nelaine: see, right here you wrote \"myra had the baby\", but you didn't use an exclamation point. \n\njake: so? \n\nelaine: so, it's ya nothing. forget it, forget it, i just find it curious. \n\njake: what's so curious about it? \n\nelaine: well, i mean if one of your close friends had a baby and i left you a message about it, i would use an exclamation point. \n\njake: well, maybe i don't use my exclamation points as haphazardly as you do. \n\nelaine: you don't think that someone having a baby warrants an exclamation point. \n\njake: hey look, i just chalked down the message. i didn't know i was required to capture the mood of each caller. \n\nelaine: i just thought you would be a little more excited about a friend of mine having a baby. \n\njake: ok, i'm excited. i just don't happen to like exclamation points. \n\nelaine: well, you know jake, you should learn to use them. like the way i'm talking right now, i would put an exclamation points at the end of all these sentences! on this one! and on that one! \n\njake: well, you can put one on this one i'm leaving! \n\njerry: you're out of your mind you know that. \n\nelaine: why? \n\njerry: it's an exclamation point! it's a line with a dot under it. \n\nelaine: well, i felt a call for one. \n\njerry: a call for one, you know i thought i've heard everything. i've never heard a relationship being affected by a punctuation. \n\nelaine: i found it very troubling that he didn't use one. \n\njerry: george was right. didn't take you long. \n\nkramer: anything new with that guy on drugs? \n\nelaine: oh, he's not on drugs. \n\nkramer: then why the sniffing? who walks around (sniff, sniff) sniffing? \n\nelaine: all right, here, you call him right now. see if he's sniffing right now. \n\njerry: good idea. (jerry calls barry's office) \n\nvoice on the phone: prophet and goldstein. \n\njerry: yes, i'd like to speak to barry prophet, please. \n\nvoice: i'm sorry he's out of town this week. \n\njerry: out of town? \n\nvoice: yes, he went to south america. \n\njerry: south america? \n\nkramer: south america? \n\njerry: i'll call back, thank you. (hangs up the phone) he went to south america! \n\nkramer: yyyeeaaah!! \n\nelaine: so what? \n\njerry: who goes to south america? \n\nelaine: people go to south america. \n\njerry: yeah, and they come back with things taped to they're large intestine. \n\nelaine: so, because of a few bad apples you're gonna impugn an entire continent? \n\njerry: yes, i'm impugning a continent. \n\nkramer: well, i say we're going to take our money right now! \n\nnewman: hey, hey... \n\njerry: hello newman. \n\nnewman: hello jerry. (to kramer) so, any news? \n\nkramer: yeah, he skipped out and *ptruut* went to south america! \n\nnewman: south america?! (to jerry) what kind of snow blower you get us mixed up with? \n\nelaine: look it, gentlemen. the fact remains you still have no proof. this is all speculation and hearsay. \n\nkramer: wait, there is one way to find out. we set up a sting. you know like abscam. like abscam jerry. \n\nelaine: ohh, what are you gonna do? you gonna put on phony beards and dress-up like arab sheiks and sit around in some hotel room. i mean come on... \n\njerry: wait a second. maybe there is someway we can tempt him and find out... \n\nnewman: if we put our three heads together we should come up with something. \n\nkramer: what's today? \n\nnewman: it's thursday. \n\nkramer: really? feels like tuesday. \n\nnewman: tuesday has no feel. monday has a feel, friday has a feel, sunday has a feel.... \n\nkramer: i feel tuesday and wednesday... \n\njerry: all right, shut up the both of you! you're making me nervous. where is he already? he should've been out of work by now. \n\nnewman: hey, you know this is kind of fun. \n\nkramer: yeah, maybe we oughta become private detectives... \n\njerry: yeah maybe you should. \n\nkramer: maybe i will. \n\nnewman: yeah, me too. \n\njerry: all right, what are you gonna say to him? \n\nkramer: just gonna find out if he's interested. \n\nnewman: hey, hey maybe i should go with him? \n\njerry: no, you stay here in the car. \n\nnewman: who made you the leader? \n\njerry: all right newman, one more peep outta you, you're out of the whole operation! \n\nnewman: alright. \n\njerry: there he is. he's going into that bar. \n\nkramer: all right, i'm going in. \n\njerry: be careful kramer. \n\nnewman: i shoulda gone in with him. \n\njerry: no, you stay here in the car. i may need you. \n\nnewman: what you need me in the car for? \n\njerry: i might need you to get me a soda. \n\nkramer: i'll have a brewsky, charlie. \n\nbartender: the name's mitch. \n\nkramer: oh, there's nothing like a cold one after a long day, eh? \n\nbarry: yeah. \n\nkramer: oh yeah, i've been known to drink a beer or two. but then again, i've been known to do a lot of things. (waiter opens the counter which hits kramer on the head) cigarette? \n\nbarry: (sniffs) no, i never touch them. \n\nkramer: i suck'em down like coca-cola. well here's to feeling good all the time. (kramer drinks the beer and smokes the cigarette at the same time. barry sniffs) looks like you've got yourself a little cold there, eh fella? \n\nbarry: i don't think so. \n\nkramer: me neither. \n\njerry: you should try this new dental floss glide, it's fantastic. \n\nnewman: i use dental tape. \n\njerry: you should try this. \n\nnewman: i don't wanna. \n\njerry: not even once? \n\nnewman: no. \n\njerry: you're an idiot. \n\nnewman: why, because i use dental tape? \n\njerry: right, anyone who uses dental tape is an idiot. \n\nkramer: south america? \n\nbarry: yeah, yeah. \n\nkramer: well that's a burgeoning continent. \n\nbarry: well, they are expanding their economic base. \n\nkramer: tell me about it. \n\nbarry: (sniffs) excuse me, i gotta goto the bathroom. \n\nkramer: i'm hip. \n\nbarry: hip to the what? \n\nkramer: to the whole scene. (sniff) \n\nbarry: what scene? \n\nkramer: the bathroom scene. (moves his knows as you would if you sniffed) \n\nbarry: listen, don't take this personally, but when i'm coming back i'm sitting over there. \n\nkramer: what ever turns you on. \n\nnewman: no, no i don't like it. \n\njerry: what do you mean you don't like it? how could you not like it? \n\nnewman: i like the thick tape. \n\nbarry: heeyy!! what kind of a nut are you? \n\nfarkus: so, basically george the job here is quite simple. selling bras. \n\ngeorge: well, that interests me very much mr. farkus.very much indeed, sir. \n\nfarkus: have you ever sold a woman's line before? \n\ngeorge: no, but um i have very good report with women, very good, comfortable. and from the first time i laid eyes on a brassieres, i was enthralled. \n\nfarkus: hum. tell me about it. \n\ngeorge: well, i was 14 years old. i was in my friends bathroom. his mother's brassieres were hanging on the shower rod and i picked it up, studied it. i thought, i like this. i didn't know what way or what level, but i knew i wanted to be around brassieres. \n\nfarkus: that's an incredible story. you have a remarkable passion for brassieres. \n\ngeorge: well, they're more than an underwear to me mr. farkus. two cups in the front, two loops in the back. how do they do it? \n\nfarkus: well, i think i can say, barring some unforeseen incident, that you will have a very bright future here at e.d. granmont. \n\ngeorge: thank you mr.farkus, thank you very much indeed sir. \n\nfarkus: see you monday 9 o'clock. \n\ngeorge: if you don't mind, sir. i'll be here at 8. \n\nfarkus: excellent. \n\ngeorge: so long, mr. farkus. \n\nms. de granmont: what you're think you're doing? \n\ngeorge: oh, nothing... \n\nms. de granmont: farkus, get out here! \n\nfarkus: yes, ms. de granmont? \n\nms. de granmont: farkus, who is this pervert little weasel? \n\nfarkus: uh, this is costanza, he's our new bra salesman. (george's offers his hand to shake) he's supposed to start on monday. \n\nms. de granmont: if he's here on monday, you're not. take a pick. \n\nfarkus: (to george) get out! (to ms. de granmont) i'm terribly sorry ms. de granmont... \n\nelaine: you wanted to see me, mr. lippman? \n\nlippman: i was just uh going over the jake jarmel book and i understand you worked with him very closely on this. \n\nelaine: yes (clears her throat) yes i did. \n\nlippman: and uh, anyway i was just reading your final edit and um, there seems to be an inordinate number of exclamation points. \n\nelaine: uh well um, i felt that the writing lacked certain emotion and intensity. \n\nlippman: ah, (reads an excerpt) \"it was damp and chilly afternoon, so i decided to put on my sweatshirt!\" \n\nelaine: right, well... \n\nlippman: you put exclamation point after sweatshirt? \n\nelaine: that's that's correct, i-i felt that the character doesn't like to be ch-ch-chilly... \n\nlippman: i see, (reads another excerpt) \"i pulled the lever on the machine, but the clark bar didn't come out!\" exclamation point? \n\nelaine: well, yeah, you know how frustrating that can be when you keep putting quarters and quarters in to machine and then (prrt) nothing comes out... \n\nlippman: get rid of the exclamation points... \n\nelaine: ok, ok ok ... \n\nlippman: i hate exclamation points... \n\nelaine: ...ok i'll just.... \n\njerry: 'dear barry. consider this letter to be official termination of our relationship effective immediately.' \n\nkramer: exclamation point. \n\nelaine: you still have no proof. \n\nkramer: elaine, he was sniffing like crazy around me. \n\njerry: 'i will expect all funds in form of cashier checks no later than the 18th'. \n\nkramer: double exclamation point! \n\nnewman: will that take care of ours too? \n\njerry: yeah, i'll give you yours as soon as i get my money back. \n\nnewman: hey, you want me to mail it? i'm on my way out anyway. \n\njerry: yeah, thanks. \n\nnewman: it'll be my pleasure. \n\nnewman: see'ya later. \n\njerry: you know this... \n\nkramer: hey, ralph. \n\njerry: hi ralph. \n\nralph: what's up fellas? that'll be 14.30. \n\njerry: all right. \n\nkramer: mushrooms, you got mushrooms jerry? \n\njerry: yeah. \n\nkramer: what's the matter? you've got a cold? \n\nralph: no man (sniffs again) kramer, what is this? \n\nkramer: it's a sweater. \n\nralph: what is it made out of? \n\nkramer: i don't know, jerry gave it to me. \n\njerry: mohair, i think. \n\nralph: mohair, that figures, i'm allergic to mohair. \n\njerry: you mean you just started sniffing? \n\nralph: yeah, mohair does it to me every time. \n\njerry: i was wearing that sweater in the coffee shop when barry came in. \n\nkramer: jerry, i was wearing it in the bar. \n\nelaine: the sweater! the sweater made him sniff! see, i told you he wasn't a drug addict. \n\njerry: oh no! the letter, newman, it's got exclamation points all over it! \n\nkramer: not to mention the picture of him on the toilet. \n\njerry: the what?? \n\nnewman: after you. \n\nwoman: thank you. \n\nwoman: get your hands off of me! johnny!!! johnny! \n\nfrank: what do you mean you felt the material? what, with your fingers like this? \n\ngeorge: so what, what is so bad about that? \n\nestelle: who goes around feeling people's material? what can be gained by feeling a person's material? it's insanity! \n\nfrank: what ever happened to \"why, that's a lovely dress you have on. may i have this dance?\"!! \n\nelaine: you are really lucky newman never mailed that letter. \n\njerry: sorry i'm late, i just came from a meeting with my lawyer. \n\nelaine: what is this? \n\njerry: it's a letter from your friend barry prophet's lawyer. \n\nelaine: he is filing a chapter eleven. why, what's going on, why is he filing a chapter eleven? \n\njerry: bankruptcy, bankruptcy...as in i've taken your money and spent it on drugs! \n\nelaine: what do you mean, i thought it was the sweater. \n\nkramer: all right, what about the money? \n\njerry: what about the money? apparently if i had dissolved my relationship with him prior to his filing chapter eleven, i've could've got the money back. which i would've done, if a certain imbecile had been able to get to a mailbox and mail a letter!! \n\nnewman: pair of bear claws, please. \n\nwoman: nice. \n\njerry: think so? \n\nwoman: yeah, what is it? \n\njerry: half silk, half cotton, half linen. how can you go wrong? \n\nstan: ...and then baby's head comes out, and i'm screaming and my brother who's been videotaping the whole thing turns green, his eyes roll up in his head and he blacks out, he drops the camera, the camera breaks, and then, the placenta comes flying out. \n\nelaine: whoa. \n\nstan: and then doctor says... \n\njerry: (interrupting) thanks, that's enough. \n\nstan: will you look at that kid. sucking away. sucking like there's no tomorrow. suck, suck, suck... \n\njerry: (looking away) yeah, yeah, yeah. \n\nstan: look at that jerry, look at that. sucking, sucking... \n\njerry: yeah, i looked. i saw. \n\nstan: this doesn't make you uncomfortable, does it? \n\njerry: no, uncomfortable? not at all. (aside to elaine) my friend's wife's breast sticking out - why would that make me uncomfortable? \n\nstan: look at him. \n\njerry: so how long do they do this? \n\nstan: jus, a year or two. \n\njerry: no break? \n\nstan: after that comes the weaning. \n\njerry: so after the sucking, comes the weaning. \n\nelaine: first the sucking then the weaning. \n\njerry: well, you gotta wean. \n\nstan: gotta wean. \n\nelaine: must wean. \n\ngeorge: what about that spot i got? \n\njerry: yeah, i saw the spot. \n\ngeorge: you open the door to the car, boom, you walk right into the hospital. eh, you can't beat that spot. (starts doing a little dance) i am on a roll. i'm just willing these great parking spots. \n\njerry: george... \n\ngeorge: maybe the baby would like to see my spot. a positive, uplifting message to start his life out with. huh, you can still get a great space in this city - if you apply yourself. \n\njerry: (to elaine) where's kramer? shouldn't he be here by now. \n\nelaine: did you give him the room number? \n\njerry: ya, 1397. \n\nkramer: 1937, 1937, 1937... \n\npatient: excuse me. do you know where the elevator is? \n\nkramer: uh ya, it's right around the corner there. \n\nkramer: 1937. \n\nkramer: oh! god, it's a pig man! a pig man! \n\nstan: ..so anyway, jerry, elaine, we have something we want to ask you. \n\ngeorge: you gotta look at this. i pulled it in perfectly equidistant from the car in front of me and the car behind me. \n\njerry: will you shut up george. \n\nelaine: i'm taking a cab home. i can't this anymore. \n\njerry: you were saying stan? i-i'm sorry about that. \n\nstan: myra and i would like you and elaine to be the godparents of steven. \n\nelaine: huuh, wow. \n\njerry: me? godfather? \n\nstan: yes. \n\njerry: (a la \"don corleone\") never go against the family, elaine. \n\nelaine: what? \n\nkramer: hey, i just saw a pig man! a pig man! ya know he was sleeping and then he woke up and he looked up at me an-and he made this horrible sound, this (quells like a pig). \n\ngeorge: kramer, what the hell are you talking about? \n\nkramer: i'm talking about the pig man. i went into the wrong room and there he was. \n\ngeorge: a pig-man? \n\nkramer: a pig-man. half pig, half man! \n\nelaine: that's great kramer... so-so, anyway, tell us what's involved in being a godparent. \n\njerry: (a la \"don corleione\") elaine, never ask me about my business!.... (sheepish) \"godfather.\" \n\nstan: the most important thing is you help with the bris. \n\njerry: the bris? \n\nkramer: a bris? you mean circumcision? \n\nstan: ya. \n\nkramer: i would advise against that. \n\nelaine: wha, kramer. it's a tradition. \n\nkramer: ya well, so was uh sacrificing virgins to appease the gods, but we don't do that anymore. \n\njerry: well, maybe we should. \n\ngeorge: (knocks on the window) hey, why are all those people milling around my car? \n\nkramer: i don't know. \n\njerry: maybe they're admiring your spot. \n\nkramer: they're all looking up. \n\ngeorge: hey, there's a guy up the roof. \n\nkramer: whoa. that's the guy that i told where the elevator was. \n\ngeorge: oh well, i hope he doesn't jum... \n\ngeorge, elaine, kramer, jerry, & stan: oh my! \n\ngeorge: my car! my caaaaarrrr! \n\nelaine: a mohel! what the hell is a mohel? \n\njerry: a mohel is the person that performs the circumcision. \n\nelaine: where am i going to find a mohel? (looking through the yellow pages, muttering) motels, models... how do you find a mohel? \n\njerry: oh, finding a mohel is a piece of cake. any idiot can find a mohel. i have to hold the baby while they do it. that's a tough job. how would you like that? \n\nelaine: hey jerry, you ever seen one? \n\njerry: you mean that wasn't uh. \n\nelaine: yeah. \n\njerry: no.. you? \n\nelaine: ya. \n\njerry: what'd you think? \n\nelaine: (shakes her head) no, had no face, no personality. it was like a martian. but hey, you know that's me. \n\njerry: hey. \n\ngeorge: well i just got the estimate. it's going to cost more to fix that roof than the car's worth, so i'm going over to see that hospital administrator today. someone is gonna pay for this damage and it's not gonna be me. \n\njerry: ah, you're screwed. \n\ngeorge: i know, swan dives from twenty floors up, lands right on top. what do i got a bulls eye up there? he couldn't move over two feet? land on the sidewalk. it's city property. \n\nelaine: well i have to interview a mohel. \n\njerry: how about our little elaine huh? attended the finest finishing schools on the eastern seaboard. equestrian competitions. debutante balls. look at her now. interviewing mohels. \n\nkramer: yea! \n\njerry: what's the matter? \n\nelaine: are you alright? \n\nkramer: don't even question my instincts, because my instincts are honed. (repaper) look at that. \n\njerry: what now? \n\nkramer: look look. \n\njerry: (kramer shows jerry and elaine the paper) \"hospital receives grant to conduct dna research\"..\" government funds genetic research at area hospital\" ... yeah, so? \n\nkramer: pig-man, baby. pig-man. \n\nelaine: if i hear about this pig-man one more time... \n\nkramer: hey, i'm tellin ya the pig-man is alive. the government has been experimenting with pig-men since the fifties. \n\njerry: oh, will you stop it. just because a hospital studying dna research doesn't mean they're creating a race of mutant pig-men! \n\nkramer: jerry wake up to reality. it's a military thing. they're probably creating a whole army of pig warriors. \n\ngeorge: i tell you something. i wish there were pig-men. you get a few of these pig-men walking around suddenly i'm looking a whole lot better. then if somebody wants to fix me up at least they could say, \"hey he's no pig-man!\" \n\njerry: believe me, there'd be plenty of women going for these pig-men. whatever the deformity is there's always some group of perverts that's attracted to it. \"oo that little tail really turns me on.\" \n\nelaine: (mumbles) that's just about enough \n\njerry: oh, what's the matter this doesn't interest you? \n\nelaine: oh, no, it's fascinating, but could you do me a favor, could ya tape the rest of the pig-men and the women who love them discussion and i'll listen to it the next time i'm here. i've gotta go find a mohel. \n\nkramer: you know, you should call this off, elaine. it's a barbaric ritual. \n\nelaine: well, perhaps one day when the pig-men roam free it will be stopped kramer. until then, off with their heads. \n\ngeorge: but kramer, isn't it a question of hygiene? \n\nkramer: it's a myth. besides, it makes sex more pleasurable. \n\ngeorge: yeah. so how does that help me? \n\njerry: (to george) hey george, you ever see one? \n\ngeorge: yeah, my roommate in college. \n\njerry: so what'd you think? \n\ngeorge: (thinks for a second) i got used to it. \n\njerry: alright, i'm waiting. i-i want to see the pig-man. show me the pig- man. \n\nkramer: oh, don't worry. i'm gonna show you, and you'll never be the same. \n\njerry: maybe he's just a guy with a nose like this. (holds his nose up like a pig) you know a lot of people have a nose like this, they're not necessarily pig-men. \n\nkramer: believe me, jerry, somewhere in this hospital the anguished \"oink\" of pig-man cries out for help. \n\njerry: well, if i hear an anguished \"oink\", i'm outta here. i-i don't see any pig-men. look (he points at passerby) human, human, human... (he looks down corridor, with alarm.) (with mock alarm) wait a second! (grabs kramer) \n\nkramer: what?! \n\njerry: oh, it's george. \n\ngeorge: alright the administrator's on the third floor. i'll meet you guys back at the car. \n\nkramer: wait wait george. you got room in the car for the pig-man huh? \n\ngeorge: the pig-man can take the bus. \n\nkramer: george, if the pig-man had a car, he would give you a ride. \n\ngeorge: how do you know? what if pig-man had a two-seater? \n\nkramer: be realistic george. \n\ngeorge: i'll tell you what, if pig-man shows up, we'll squeeze him in. i'll see you later. \n\nkramer: yea. \n\nmrs. sweedler: mr. costanza, come in, come in. it's been a very trying couple of days around the hospital. doctors, patients, everyone, just grief stricken over this unfortunate occurrence. \n\ngeorge: well, i join them in their grief. \n\nmrs. sweedler: horrible thing. flew right past the children's wing. all the sick children, in the playroom, looking out the window, just traumatized by the incident. apparently, they thought he was flying. you know how children are, \"oh look. a man is flying. a man is flying\" and then, splat... \n\ngeorge: that's where i come in. umm, on splat. uh, you see, mrs. sweedler, or is it hospital administrator sweedler? \n\nmrs. sweedler: mrs. sweedler's fine. \n\ngeorge: mrs. sweedler thank you. y-you see, this tragedy affected me in a very, very personal way. \n\nmrs. sweedler: how is that? \n\ngeorge: yes, well you see, the deceased landed on my car. the uh splat, as it were, actually occurred on the roof of my car. now of course i can't help but feel that had it been a convertible this whole tragedy might have been averted but i've never been the kind of guy to buy a convertible, what with the baldness and everything. \n\nmrs. sweedler: well i have known bald men who owned convertibles. they wore a hat. \n\ngeorge: yes but then everything is all pulled down and it's jus.. anyway. the damage, unfortunately, has marred an otherwise fine automobile, rendering it virtually undriveable. \n\nmrs. sweedler: (stiffening) yes, well, that is a shame. \n\ngeorge: yes, a shame. that is exactly how i would put it. now mrs. sweedler, with all due discretion and sensitivity, and taking in the whole scope of the situation, i just can't help but think that, the hospital is somehow responsible for compensating the other, still living 'victim' of horrendous, horrendous tragedy. \n\nmrs. sweedler: mr.constanza. \n\ngeorge: yes. \n\nmrs. sweedler: a man plummeted tragically to his ultimate demise - \n\ngeorge: yes. \n\nmrs. sweedler: ... and you greedily, callously want to profit from it? \n\ngeorge: (pulling out estimate out of his pocket) well, profit. i think you'll see from the estimate that i'm not really profiting that much. they might be a little high, but.. \n\nmrs. sweedler: get out! get out, now! get out of my office. \n\ngeorge: should i leave this..? \n\nmrs. sweedler: get out! \n\nkramer: excuse me. what happened to the man, that was in this room before? \n\nresident: i don't know what you're talking about. \n\nkramer: you know. (he pushes his nose up with his thumb). \n\nresident: no. \n\nkramer: (still holding his nose up ) this doesn't look familiar to you? \n\nresident: uh, sir? \n\nkramer: look, i know what's going on. the oink, oink. \n\nresident: yes well if you'll excuse me. i really have some patients i have to attend to. \n\nkramer: (tough talking) now listen to me you little quack, there was a half man, half pig in that room over there. now where is he?! where is he?! \n\nresident: half-what? \n\nkramer: you know what i mean - pork, sausage, (a la porky pig) a-deek-a-deek-a- deek th-th-th-that's all folks. \n\nresident: i think he's been released. \n\nkramer: he's lying. \n\njerry: alright kramer, enough of this. let's go find george. \n\nkramer: alright you go ahead. \n\njerry: kramer. \n\njerry: where's the mohel? \n\nelaine: he'll be here. \n\njerry: he's late already. \n\nelaine: relax. you'd think you were getting whacked. \n\njerry: i don't know why he asked me to be the godfather. we're not even that close of friends. just cause we're on the softball team, i'm the pitcher, he's the catcher he thinks we have a special relationship? \n\nelaine: i thought pitchers and catchers did have a special rapport. \n\njerry: well maybe in hardball with all the signals and everything but i'm just lobbing it in. we don't have any conferences. he doesn't come out to the mound and encourage me. \n\nelaine: what about me? i mean i just watched a few games with her sitting in the stands. \n\njerry: don't they have any closer friends. they're level jumping on our friendship. \n\nelaine: yes it is level jumping. \n\ngeorge: so uh... been to a bris before? \n\nwoman: no. \n\ngeorge: i've been to a few of em. if you uh start to get woozy later, which is quite common, stay close to me. i'll get you through it. (chuckles) \n\nwoman: i'm a cardiologist. i think i'll manage. \n\ngeorge: oh. \n\nkramer: we're not talking about a manicure. imagine, this is going to be his first memory. of his parents just standing there while some stranger (does some motions of cutting; myra sobs more) cutting off a piece of his manhood and then serves a catered lunch. \n\nstan: (seeing myra run away sobbing) myra? \n\nelaine: kramer, what's the matter with you? \n\nkramer: me? \n\nelaine: (to everyone) oh, that's the mohel. \n\nall: (adlib) it's the mohel! the mohel is here! thank god, the mohel is here. \n\nelaine: hello. \n\nmohel: (to elaine) hello, hello (shaking hands with jerry) hello, i'm the mohel. \n\njerry: hello. \n\nmohel: (cont'd) (shakes stan's hand) it's very nice to meet you all... (a pan clangs to the ground. the mohel snaps.) oh! what was that?!? jeez. scared the hell out of me. my god. i almost had a heart attack! (the crowd grows uneasy) (calming down) ok, i'm fine, i'm fine. anyway, we're here to perform the mitzvah of the bris... (the baby starts crying) (with increasing tension) ...is the baby gonna cry like that? is that how the baby cries, with the loud, sustained, squealing cry, 'cause that could pose a problem. do you have any control of your child 'cause this will be the time to exercise it when baby is crying in that high-pitched, squealing tone that can drive you insane!!! \n\nelaine: did you find the place alright? \n\nmohel: did i find it alright? could you send me to a more dangerous neighborhood? i'm dreading walking back to the subway, someone shouldn't crack me over the head and steal my bag, because i'll be lying there and people will spit on me and empty my pockets. i'll be lying in the gutter like a bum, like a dog, like a mutt, like a mongrel, like an animal! god forbid anybody should help me or call an ambulance. oh no, that's too much trouble to pick up a phone and press a few buttons. ahh! what's the point. \n\nelaine: (setting down her glass) oh, ya haha. \n\nmohel: (to elaine interrupting) darling, you see where that glass is? how that glass is near the edge of the table. you got the whole table there to put the glass, why you chose the absolute edge, so half the glass is hanging off the table, you breath and that glass falls over, then you're gonna have broken glass on the carpet, embedded in the carpet fibers, deep, deep in the shag, broken glass, bits of broken glass that you never get out. you can't get it out with a vacuum cleaner. even on your hands and knees with a magnifying glass, you can't get all the pieces, and then you think you got it all and two years later, you're walkin' barefoot and you step on a piece of broken glass and you kill yourself, is that what you want? i don't think you want that, is it? .. do ya? huh? \n\nelaine: (to myra) he's very highly recommended. so... \n\nmohel: (to george) you're holding the baby? \n\ngeorge: (getting up out of his chair to get out of the mohel's way) no, no. \n\nmohel: hello! who's holding the baby?!? who's holding the baby? \n\njerry: (uncertain) yeah. i'm holding the baby. \n\nelaine: (pushing jerry over to the mohel) ok, go. \n\njerry: i'm going. \n\nelaine: go. \n\njerry: i'm going. \n\nelaine: c'mon \n\njerry: don't push me. \n\nmohel: okay. you sit here. now i need the baby. bring me the baby. i need the baby! \n\nkramer: no, i'm not going to let this happen. \n\nall: (numerous voices) kramer! let go of the baby! kramer! \n\nmohel: people compose yourselves. (shouting as the struggle ends) this is a bris. we are performing a bris here, not a burlesque show. this is not a school play! this is not a baggy pants farce! this is a bris. an sacred, ancient ceremony, symbolizing the covenant between god and abraham... or something. (the mohel opens his bag to start the process but drops it and his instruments fall out. people attempt to help him out) no! don't touch it! don't touch a thing! \n\nelaine: ok. \n\nmohel: (muttering to jerry).. i coulda been a kosher butcher like my brother. the money's good. there's a union, with benefits. and, cows have no families. you make a mistake with a cow, you move on with your life... anyway. \n\njerry: hurry up george! step on it! \n\ngeorge: alright, alright! \n\njerry: that damn mohel - he circumcised my finger! the mohel circumcised my finger! \n\nelaine: you flinched. \n\njerry: flinched? i did not flinch. george, did i flinch? \n\nelaine: oh how would he know. he blacked out. he fainted. \n\ngeorge: it was very traumatic. the last thing i remember is you flinching. then, everything went black. \n\njerry: who's got a tissues? i need more tissues! look at this thing. it's my phone finger! \n\ngeorge: be careful, you're getting blood all over the car. \n\nkramer: what about the baby? \n\njerry: oh the baby's fine. they just took him to the hospital as a precautionary measure. but look at me. i'm the one who's hurt. \n\nelaine: would you stop it? you're just gonna need a few stitches. \n\njerry: a few stitches? i've never had stitches. i'll be deformed. i can't live with that. it goes against my whole personality. it's not me! \n\ngeorge: hey look a that - boy are you lucky - another great spot - right in front of the hospital. in an emergency yet! how lucky are you huh? is that unbelievable? how unbelievable is that huh? come on, give it to me, give it to me. \n\ngeorge: i have never seen a mohel like that. \n\njerry: that was a one in a million mohel. \n\nelaine: i said i'm sorry. \n\njerry: look at this. \n\nkramer: oh you'll be ok. i'll see you later. \n\ngeorge: wha, where is he going? \n\njerry: oh well if it isn't shakey the mohel! nice job on the circumcision but it's not supposed to be a finger. \n\nmohel: (rejerry) the circumcision was perfect. the finger was your fault! you flinched! \n\njerry: oh who made you a mohel? whadya, get your degree from a matchbook? \n\nmohel: (he makes a sudden movement) ya see! he flinched again! \n\njerry: nice mohel picking, elaine. you picked a helluva mohel! \n\nmohel: one more peep out of you and i'll slice you up like a smoked sturgeon. \n\njerry: oh don't threaten me, butcher boy. \n\nmohel: butcher boy?! \n\njerry: ya what was this? (he imitates mohel's flinching) \n\nmohel: what was this? (he imitates jerry) \n\njerry: it was not! \n\nelaine: jerry, be careful. the mohel's got a knife! \n\nstan: (holding the mohel back) hey, hey what's going on out here? you two should be ashamed of yourselves, both of ya! \n\nmohel: ah, blood. \n\nelaine: oh, how's the baby? \n\nstan: there's nothing wrong with the baby. \n\nmyra: the circumcision went fine. \n\nmohel: thank god the flincher didn't harm the baby. \n\nstan: amen. \n\nmohel: i will get you for this. this is my business, this is my life. no one ruins this for me. no one! (to elaine) here's my card. \n\nkramer: (off screen) outta my way! \n\njerry: (struggling to open a bottle with his bandaged finger) i can't do it. (a la godfather) look what they did to my boy, they massacred my boy. \n\nelaine: you really do the worst godfather i ever heard. you're not even close. \n\njerry: (walking over the the buzzer to answer it) oh, that's the flicks. \n\ngeorge: (on phone) it's a '76 chevy impala. they stole it right in front of the hospital. i saw the guy drive off in it. well he's about five feet tall, hairless, pink complexion.. (elaine puts her finger on her nose) looks like a pig. yeah, alright alright, thank you, thank you. (kramer enters) so any word from the \"pig-man\"? \n\nkramer: no. \n\ngeorge: no. and he's not a pig-man is he? \n\nkramer: no, he's not.. just a fat little mental patient. \n\njerry: myra, stan. \n\nmyra: don't touch him \n\njerry: what's the matter? \n\nstan: you're out, jerry. you're out as godfather. you too, elaine. you're both out. \n\nelaine: but i didn't do anything. \n\nstan: no, no buts. we made up our minds. (turns to kramer) we want kramer. he showed us how much he cares about steven. \n\nkramer: (leaving a la godfather) don't ever go against the family jerry. \n\nstan: (grabbing kramer's hand) godfather. \n\nmyra: (grabbing kramer's other hand) godfather. \n\nkramer: yes \n\n*note: during this closing monologue; jerry's finger is bandaged the same way it was during this episode. \n\njerry: professional tennis. to me i don't understand all the shushing. why are they always shushing. shh, shh. don't the players know that we're there? should we duck down behind the seats so they don't see us watching them? to me tennis is basically just ping-pong and the players are standing on the table. that's all it is. and that goofy scoring, you win one point and all the sudden you're up by 15. two points, 30-love. 30-love. sounds like an english call girl. \"that'll be 30, love... and could you be a little quieter next time, please, shh.\" \n\njerry: are these seats unbelievable or what? \n\ngeorge: where's the sunblock? \n\njerry: here. \n\ngeorge: 25? you don't have anything higher? \n\njerry: what, are you on mercury? \n\ngeorge: i need higher. this has paba in it, i need paba-free. \n\njerry: you got a problem with paba? \n\ngeorge: yes, i have a problem with paba. \n\njerry: you don't even know what paba is. \n\ngeorge: i know enough to stay away from it. \n\nannouncer: 30-love \n\ngeorge: so are you going to todd's party this weekend? \n\njerry: i'll go if someone else drives. you going? \n\ngeorge: gwen really wants to go. \n\njerry: you're bringing a date to a party? \n\ngeorge: no good? \n\njerry: a party is a bad date situation. it doesn't matter who you're with. you could be with j. edgar hoover. you don't want to sit and talk with hoover all night. you want to circulate. (makes hand motions) ho, ho, ho. \n\ngeorge: why'd you pick hoover? was he that interesting to talk to? \n\njerry: well i would think, with the law enforcement and the cross dressing. seems like an interesting guy. \n\ngeorge: yeah i guess. what can i do? i gotta take her with me. todd introduced us, i'm obligated. \n\njerry: that woman is absolutely stunning. \n\ngeorge: who, the croat? [the tennis player] \n\njerry: not the croat, the lineswoman. that is the most beautiful lineswoman i've ever seen. \n\ngeorge: yeah, she's a b.l. \n\njerry: b.l.? \n\ngeorge: beautiful lineswoman. alright listen uh i'm going to go to the concession stand and get some real sunblock. you want anything? jerry? (jerry is staring at the lineswoman) jerry? \n\ncoworker: you know, i just heard the lexington line is out. \n\nelaine: (annoyed) uh, you are kidding me. how am i supposed to get to this meeting? \n\ncoworker: take a car service. we have an account. \n\nelaine: oh forget it, i hate those. everytime i take one, the driver will *not* stop talking to me. no matter how disinterested i seem he just keeps yakking away. blah, blah, blah, blah, blah. why does everything always have to have a social componant? now a stage coach, that would have been a good situation for me. cause i'm in the coach, and the driver is way up there on the stage. \n\ncoworker: well you're not going to get a cab now. four thirty in the afternoon? read a magazine, keep your head down. \n\nelaine: yea, i guess that could work. \n\nannouncer: and that is it. the match to ms. natalia valdoni. coming up next, mens single, but for now let's stop a minute and take a look at our beautiful tennis center backdrop. \n\nkramer: hey, hey, it's george. \n\nannouncer: holy cow it's a scorcher. boy i bet you that guy can cover a lot of court. \n\nannouncer #2: hey buddy, they got a new invention. it's called a napkin. we'll take a station break and continue with more action... \n\ndriver: dag gavershole plaza huh? (elaine ignores him) pendant publishing, that's books right? (elaine is annoyed and still ignoring him) miss? \n\nelaine: pardon me? \n\ndriver: books, that's what you do? \n\nelaine: yeah. \n\ndriver: yeah, i don't read much myself, (elaine is annoyed) well you know besides the paper. yeah a lot of people read to relax, not me. you know what i do? \n\nelaine: you know i-i'm having a lot of trouble, um, hearing you back here. so... \n\ndriver: (yelling) i said you know what i do (elaine is very annoyed) when i want to relax? the jumble. hey uh do you make a book of jumbles? \n\nelaine: i'm going to have to be honest with you. i'm going deaf. \n\ndriver: going deaf? \n\nelaine: what? \n\ndriver: oh i-i-i'm sorry. \n\nelaine: it can be very frustrating. \n\ndriver: hey what about a hearing aid? \n\nelaine: am i fearing aids? oh, yeah sure, who isn't. but you know you gotta live your life. \n\ndriver: no, no i said. ehhh, forget it. (elaine looks pleased) \n\njerry: i can't take my eyes off that lineswoman. the woman is absolutely mesmerizing. \n\ngeorge: boy you are really smitten. \n\njerry: i gotta talk to her. what do you think? \n\ngeorge: cold? how are you going to do that? you're not one of those guys. \n\njerry: i'm going to psyche myself into it like those people that just walk across the hot coals. \n\ngeorge: they're not mocked and humiliated when they get to the other side. \n\njerry: i have to. i won't be able to live with myself. \n\ngeorge: wait a minute jerry, there's a bigger issue here. if you go through that wall and become one of those guys i'll be left here on this side. take me with you. \n\njerry: i can't. \n\ngeorge: what are you going to say? \n\njerry: i don't know, \"hi\". \n\ngeorge: (laughing) you think you're going to the other side with \"hi\"? you're not going to make it. \n\nradio: base to 92 come in \n\ndriver: yes this is 92 \n\nradio: after this go back to city for a 600 pickup \n\ndriver: righteo \n\nradio: 794 bleeker the party's hanks. tom hanks. \n\nelaine: tom hanks? after me you're picking up tom hanks? i love him. \n\ndriver: so i guess your hearing goes in and out huh? \n\nelaine: (realizing he caught her) yeah. yes it does... \n\ndriver: yeah. you know what i think? i think you made that whole thing up. \n\nelaine: no no, no no. \n\ndriver: yeah yeah, i know your type. you're too good to make conversation with someone like me. oh god forbid you could discuss the jumbles. but to go so far as to pretend you're almost deaf, i mean that is truly disgusting. and mr. tom hanks, may i say he too would be disgusted by your behavior. \n\njerry: excuse me. (woman ignores him) excuse me? (still ignores him) oh that's nice. that's right ignore me. that's real polite. yea nobody's even talking to you. all you big lineswoman. oh you've got some kind of a cool job. i know your type thinking your too good for everyone, but it's women like you (woman turns around and notices him) oh well, what are you deaf? \n\nlaura: bingo. \n\nkramer: and you're saying she's deaf. \n\njerry: i'm not *saying* she's deaf, she's deaf. \n\nkramer: can't hear a thing. \n\njerry: can't hear a thing. \n\nkramer: and you're going to go out with her. \n\njerry: yeah, isn't that something? \n\nelaine: hey. \n\njerry & kramer: hey. \n\nkramer: hey i know how to sign. \n\njerry: really? \n\nkramer: yeah when i was 8, i had a deaf cousin who lived with us for about a year. (signing as he speaks) so i haven't been able to do it in a while. \n\nelaine: what is this about? \n\njerry: i met this deaf lineswoman at the tennis match. \n\nelaine: you are kidding. that is amazing. (she pushes jerry, jerry falls back into kramer.) i just took a car service from work and to get the driver to not talk to me, i pretended i was going deaf. \n\njerry: wow good plan. \n\nelaine: oh didn't work. he caught me hearing. alright it's terrible, but i'm not a terrible person. \n\njerry & kramer: no. \n\nelaine: no. when i shoo squirrels away, i always say \"get out of here\". i never ever throw things at them and try to injure them like other people. \n\njerry: that's nice. \n\nelaine: yeah, and when i see freaks in the street i never, ever stare at them. yet, i'm careful not to look away, see, because i want to make the freaks feel comfortable. \n\njerry: (turning to kramer) that's nice for the freaks. \n\nelaine: yeah, and i don't poof up my hair when i got to a movie so people behind me can see. i've got to make it up to this guy or i won't be able to live with myself. what can i do? \n\njerry: why don't you get him some tickets or something, how about that friend of yours that works at the ticket agency. \n\nkramer: yeah yeah pete, he can get you great tickets to something. \n\nelaine: really? \n\nkramer: like a rock concert. whatever you like. \n\nelaine: oh great, thanks kramer. \n\nkramer: you got it. hey jerry, do me a favor. the next time you see that lineswoman ask her how those ball boys get those jobs. i would love to be able to do that. \n\njerry: kramer, i think perhaps you've overlooked one of the key aspects of this activity. it's ball *boys*, not ball men. there are no ball men. \n\nelaine: yeah i think he's right. i've never seen a ball man. \n\nkramer: well there ought to be ball men. \n\njerry: all right i'll talk to her. if you want to be a ball man go ahead, break the ball barrier. (elaine drinks straight out of the orange juice container) hey. \n\nelaine: hey you know a friend of mine from work said that she saw george at the tennis match on tv yesterday. \n\nkramer: yeah, yeah me too. yeah he was at the snack bar eating a hot fudge sundae. he had it all over his face. he was wearing that chocolate on his face like a beard and they got in there real nice and tight. and he's... (imitates scooping up ice cream. elaine and jerry laugh) \n\ngwen: i'm sorry george. \n\ngeorge: i don't understand things were going so great. what happened? something must have happened. \n\ngwen: it's not you, it's me. \n\ngeorge: you're giving me the \"it's not you, it's me\" routine? i invented \"it's not you, it's me\". nobody tells me it's them not me, if it's anybody it's me. \n\ngwen: all right, george, it's you. \n\ngeorge: you're *damn* right it's me. \n\ngwen: i was just trying to... \n\ngeorge: i know what you were trying to do. nobody does it better than me. \n\ngwen: i'm sure you do it very well. \n\ngeorge: yes well unfortunately you'll never get the chance to find out. \n\njerry: but i thought things were going great. \n\ngeorge: yeah so did i. \n\njerry: did she say why? \n\ngeorge: no. she tried to give me the \"it's not you, it's me\" routine. \n\njerry: but that's your routine. \n\ngeorge: yeah. well aparently word's out. \n\nkramer: hey, georgie, i saw you on tv yesterday. \n\ngeorge: really? at the tennis match? \n\nkramer: yeah you were at the snack bar eating a hot fudge sundae. \n\ngeorge: get out of here. i didn't see any cameras there. \n\nkramer: oh, the cameras was, vrooom, there. the announcers, they made a couple of cracks about you. \n\ngeorge: cracks? what were they saying? \n\nkramer: that you had ice cream all over your face. they were talking about how funny you looked. \n\ngeorge: oh my god, maybe gwen saw it. maybe that's what did it. \n\nkramer: well i'll tell you it wasn't a pretty sight. \n\ngeorge: she must have seen me eating it on tv. \n\njerry: so she sees you with hot fudge on your face and she ends it? you really think she would be that superficial? \n\ngeorge: why not. i would be. \n\njerry: hello... oh hi dad... you saw him?... really with the ice cream?... all right i'll talk to you later, bye. \n\ngeorge: you're parents saw me on tv? \n\njerry: yeah. \n\ngeorge: this is nighmare. kramer how long was i on? \n\nkramer: it felt like 8 seconds. \n\ngeorge: one-one-thousand, two-one-thousand, three-one-thousand. \n\nelaine: i heard you *really* inhaled that thing. did anyone tape it? \n\ngeorge: can we move on? \n\njerry: he thinks gwen broke up with him because she saw him eating the ice cream on tv. \n\nelaine: oh come on. if she's that superficial you don't want her. \n\ngeorge: yes i do. \n\nelaine: so i guess you're not going to todd's party on friday. \n\ngeorge: well i can't now, gwen's going to be there. \n\nkramer: well she should be the one that shouldn't go. \n\njerry: well if a couple breaks up and have plans to go to a neutral place, who withdraws? what's the etiquette? \n\nkramer: excellent question. \n\njerry: i think she should withdraw. she's the breaker, he's the breakee. he needs to get on with his life. \n\nelaine: i beg to differ. \n\njerry: really. \n\nelaine: he's the *loser*. she's the victor. to the victor belong the spoils. \n\njerry: well i don't care, i don't want to go anyway. i don't want to fight that traffic on friday night. \n\nelaine: well we can take the car service from my office. \n\njerry: really? \n\nelaine: yeah, they don't know. \n\nkramer: all right, i'll see you later. \n\njerry: okay. \n\nkramer: (while eating a banana) hey georgie. \n\ngeorge: \"to the victor goes the spoils.\" what are you going to do tonight? \n\njerry: oh i got a date with laura the lineswoman. \n\ngeorge: oh. (he stands there) \n\njerry: why? (george fiddles with the lock on the door.) well what are you doing? \n\ngeorge: well i was just going to wander the streets. don't wanna tag along with you or anything. \n\njerry: oh, uh, do you want to come with us? \n\ngeorge: jerry please, that's very nice, but, uh, (closes the door) where would we be going? \n\ngeorge: so, i've got ice cream all over my face. there were no napkins there. whoever it was that's responsible for stocking that concession stand cost me a relationship. \n\nlaura: they never have napkins there. \n\njerry: let's get the check. (waves in the air) is this uh considered signing? do you do this when you want the check? \n\nlaura: (does the same thing jerry is doing) yea. \n\njerry: really. i know a sign, that's my first sign. \n\nlaura: uh, oh. that couple is breaking up. \n\ngeorge: they're breaking up? how do you know? \n\njerry: she reads lips. \n\ngeorge: what are they saying now? \n\nlaura: \"it's not you, it's me.\" \n\ngeorge: (holding his drink up to his mouth) oh my gosh, i just had a great idea. she could come to the party tomorrow and read gwen's lips for me. \n\njerry: (puts his hand over his mouth) what? \n\ngeorge: (puts nuts into his mouth, and in the process covers his mouth) we bring her to the party, and she can tell me what gwen is saying about me. \n\njerry: (holds his drink up to his mouth) she's not a novelty act, george. where you hire her out for weddings and bar mitzvas. \n\ngeorge: (puts his hands on his face, rubbing his eyes) look. it's a skill, just like juggling. she probably enjoys showing it off. \n\njerry: (puts his napkin over his mouth) i don't know george. i'm not sure about this. \n\ngeorge: (puts his arms in the air, stretching, and covers his mouth with an arm) could you ask her, just ask her. if she says no, case closed. \n\njerry: (puts his hand on his chin over his mouth) all right. \n\njerry: uh laura, george was wondering if... \n\nlaura: sure. i'll do it. \n\njerry: so i really had a good time. \n\nlaura: yeah, me too. \n\njerry: so you want to go to the party on friday night? \n\nlaura: yeah. \n\njerry: all right, we're taking a car service. so we'll swing by and pick you up. how about six? (laura looks offended). six is good. (laura looks offended and angry). you got a problem with six? (laura opens the door and gets out). what? what? \n\nman: okay listen up people. there are plenty of you here, but we've only got two spots to fill. good luck. \n\nboy: (to kramer) hey pops, isn't there a better way to spend your twilight years? \n\nkramer: i may be old, but i'm spry. \n\nboy: the tryout lasts three and a half to four hours. are you up for it? \n\nkramer: oh i'll be up for it punk. \n\njerry: see i was saying \"six\" but she thought i was saying \"sex\". we straightened the whole thing out though. \n\ngeorge: she confused \"six\" with \"sex\"? \n\njerry: yeah. \n\ngeorge: well if she can't tell \"six\" from \"sex\" then how is she going to lip read from across the room? \n\njerry: well \"six\" and \"sex\" are close. \n\ngeorge: it's two completely different sounds. \"ih\" and \"eh\". \n\njerry: eh. \n\ngeorge: it seems like a problem. \n\njerry: well i'm not dating any other deaf women. \n\nkramer: hey guess who's going to be the new ball man for the finals. \n\njerry: you're kidding. \n\nkramer: yeah. they said they haven't seen anybody go after balls with such gusto. \n\ngeorge: oh, when is that car service coming? \n\njerry: in five minutes. he's then going to pick us up, then we're going to pick up elaine, and laura is going to meet us there. \n\ngeorge: if this lip reading thing works tonight do you know how incredible this is going to be? it's like having superman for your friend. \n\njerry: i know. it's like x-ray vision. \n\ngeorge: if we could just harness this power and use it for our own personal gain, there'd be no stopping us. \n\nnewman: hey, hey, hey. (to jerry) i hear you've got some lip reader working for you. you gotta let me use her for one day. just one day. \n\njerry: can't do it newman. \n\nnewman: but jerry, we've got this new supervisor down at the post office. he's working behind this glass. i know they're talking about me. they're going to transfer me, i know it. two hours, give me two hours. \n\njerry: it's not going to happen. \n\nnewman: (sinister) all right, all right. all right you go ahead. you go ahead and keep it secret. but you remember this. when you control the mail, you control... information. \n\njerry: uh just pull over right there by the stop sign. \n\ndriver: (the same driver as before) pardon me sir? \n\njerry: i said pull over by the stop sign. \n\ndriver: i'm so sorry, you'll have to forgive me. i can't hear a damn thing. i went to that rock concert last night at the garden. my seats were right up agains the speaker. it's a heavy metal group. metalla-something. \n\nkramer: -ca. \n\ndriver: huh? \n\ngeorge: what? \n\njerry: ca. \n\ngeorge: ah. \n\ndriver: my ears are still ringing. some woman's idea of a joke. \n\ndriver: get out. get out. go on. hey. shut the door. \n\njerry: you know the whole idea of taking the car service was so i wouldn't have to fight the traffic on friday night. \n\njerry: i know. i'm late. hey now i know two signs, (puts his hand in the air) check, and (points to his watch) late. hey this is the guy you helped become the first ball man. \n\nlaura: congratulations. \n\nkramer: she doesn't know what she's talking about. \n\ntodd: guys you made it. \n\ngeorge: hey hey. \n\ntodd: (to george) hey buddy. \n\njerry: hey todd. \n\ntodd: sorry to hear about gwen. \n\ngeorge: why? did she say something to you about why she broke up with me? \n\ntodd: oh no. tonight will be the first chance i've had to talk to her. \n\ngeorge: really? \n\ntodd: look george, i'm friends with both of you. but i can't betray her confidence by telling you anything. \n\ngeorge: i wouldn't hear of it, todd. it's none of my business. but you should try to find out everything you possibly can. in fact, i'll even stay all the way on the other side of the room just so there's no chance of me overhearing anything. \n\ntodd: you are so centered. \n\ngeorge: hey, grown-up. (they both chuckle, george notices gwen enter the room) oh my god, there she is. go ahead, go ahead. (to the others) let's go, let's go. all right what are they saying? \n\nkramer: \"hi gwen, hi tide.\" \n\njerry: hi tide? \n\nkramer: hi todd. \n\nkramer: \"you've got something between your teeth\" \n\ngeorge: wheret? \n\nkramer: no that's what he said. \"that's interesting. i love carrots, but i hate carrot soup. and i hate peas, but i love pea soup.\" so do i. \n\nelaine: she's so wild. can i borrow her for a few hours tomorrow afternoon? \n\njerry: no. if i lend her to you i'll have to lend her to everybody. \n\ngwen: i don't envy you todd. the place is going to be a mess. \n\ntodd: well maybe you can stick around after everybody leaves and we can sweep together. \n\nkramer: \"why don't you stick around and we can sleep together.\" \n\ngeorge: what? \n\nkramer: \"you want me to sleep with you?\" \n\ntodd: i don't want to sweep alone. \n\nkramer: he says \"i don't want to sleep alone.\" she says, oh boy, \"love to.\" \n\ngeorge: alright that's it. (george walks across the room over to them.) so you get rid of me and now the two of you are going to sleep together? \n\ngwen: what? you're crazy. \n\nkramer: \"what? you're crazy.\" \n\ngeorge: i heard your whole conversation. \n\ngwen: how? \n\nkramer: \"how?\" \n\ngeorge: (looks back to the group) i can read lips. you said let's sleep together. \n\ngwen: no i didn't. i said \"sweep\". let's sweep together, you know with a broom. cleaning up. \n\nkramer: \"... with a broom, cleaning up.\" \n\ngeorge: sweep? \n\ngwen: yes sweep. \n\nkramer: \"yes sweep.\" \n\ngeorge: cut it. \n\nkramer: george says \"cut it.\" \n\ngeorge: cut it. \n\nkramer: george is saying \"cut it.\" \n\ngeorge: cut it. (goes back to the group) (yelling) would you stop signing? \n\nkramer: what? \n\ngeorge: she said \"sweep together\" you idiots, not \"sleep together.\" \n\nkramer: i know how to sign. \n\ngeorge: ow. my eye, my eye. \n\nelaine: it's so amazing getting to see monica seles playing in the finals. \n\njerry: i know and on the first tournament of her comeback. \n\njerry: thus ends the great ball man experiment. \n\ndriver: (the same driver as before) you with the tennis center? \n\nlaura: yep. \n\ndriver: hey how about that ball man injuring monica seles. wasn't that something. \n\nlaura: i'm deaf. \n\ndriver: oh. (very suspicious look on his face.) \n\njerry: i've always been a big fan of the little check move. you know (does the motion for the check) check, check. unless the waiter isn't too shape then you gotta total it up. sometimes they come over, \"do you want the check?\" no i wanna be pen pals, can't you see what i'm doing here? i'm trying to be cool and impress people. \n\nelaine: hmm! \n\ngeorge: fantastic! \n\njerry: i told ya. how good is this? \n\ngeorge: good. \n\njerry: how good? \n\ngeorge: very good. \n\njerry: i know it. \n\nelaine: they put real blue berries in this. and there's real blue berries. what kind did you get? \n\njerry: coffee. and they grind up the coffee beans, and put it in. \n\nelaine: let me test-taste that. (tastes jerry's yogurt) \n\njerry: huh? huh? \n\nelaine: hmm! rico! \n\njerry: suave! and it's non-fat! \n\ngeorge: ya-see, how could this not have any fat? it's too good. \n\nelaine: (offering her yogurt to george) you want to taste mine? \n\ngeorge: (offers his) oh, you want to taste mine. \n\nelaine: no, i don't. \n\ngeorge: lo..k, if you want to taste mine, you don't have to offer me some of yours. \n\nelaine: all right, let's just forget it. \n\njerry: you know, kramer's gonna clean up on this place. \n\ngeorge: what do you mean? \n\njerry: he invested in it. \n\ngeorge: no kidding? \n\njerry: yeah. we've been coming here everyday. this is so fuck(bleeped)ing good. \n\nmaryedith: jerry! \n\njerry: oh, i'm sorry. \n\nelaine: all right, we should get going. but, i'm going to get a little bit more, okay? \n\ngeorge: oh, god. look who's here. \n\njerry: who is it? \n\ngeorge: this guy from my old neighborhood. lloyd braun. he's a big advisor to mayor dinkins. he thinks he's so cool. \n\njerry: oh, oh.? \n\nlloyd: hey, george! \n\ngeorge: hey-hay! lloyd! hey! my friend jerry eh. \n\nlloyd: hi. \n\njerry: hi. \n\nlloyd: so, i hear you're living back home now, is it? \n\ngeorge: yeah, there was a fire in my apartment. \n\nlloyd: fire! whoa! there's a lot of major chicks in this place, huh? (george nudges jerry with his right arm) something wrong with your arm? \n\ngeorge: uh, uh, yeah. actually, the, uh, i-i bumped my elbow on a desk and uh injured something an.. now it sort of moves involuntarily. \n\nlloyd: wow, that's a bitch, huh? so, how are your parents doing? \n\ngeorge: oh, pretty good. \n\nlloyd: this place does some business, huh? \n\ngeorge: yeah, this is my first time here. (nudges jerry again) \n\nlloyd: hey, she's a doll. (looking at elaine) \n\nelaine: hi! \n\ngeorge: uh, elaine, this is, uh, lloyd. \n\nelaine: hi! \n\nlloyd: oh, hi! very nice to meet you. \n\nelaine: nice to meet you, too! \n\nlloyd: well, i'm really sorry i gotta run now. (sets down his cup of yogurt and makes his way out) well, take it easy, huh, george? \n\ngeorge: yeah! yeah. \n\nelaine: (excited about lloyd) aaah. boy, he is really cute! \n\ngeorge: he's a jerk. (nudges to his right but no one is there) \n\njerry: he's gone, george. \n\ngeorge: all right. all right. \n\nkramer: so, there were a lot of people there, huh? \n\njerry: oh, man, that yogurt place - you're going to make a fortune. \n\nkramer: yeah. \n\njerry: they're doing an incredible business. \n\nkramer: yeah, well, i told you to go in on it. \n\njerry: how did you know? \n\nkramer: well, i tasted it at the one downtown. it's got a remarkable texture. you'd never know it was non-fat. \n\njerry: (answering the buzzer) yeah? \n\nelaine: (on the buzzer) buzz me. \n\njerry: hey, i had the show of my life last night. i ad-libbed like ten new minutes. \n\nkramer: yeah, but did you tape it? \n\njerry: (pulling out a tape from his pocket) vvvvup. right there. i got it. i did this thing on the ottoman empire. like, what was this? a whole empire based on putting your feet up? \n\nkramer: yes! \n\njerry: i'm telling you, i got like a whole new tonight show here. \n\nelaine: hey! \n\nkramer: hey! \n\njerry: what's the matter? \n\nelaine: oh, i was having lunch, and i bit down on the fork. \n\njerry: boy, it's hard to believe - with all that biting experience - a person could still make a mistake like that. \n\nkramer: (sort of falling backwords) yowm! \n\nelaine: what? \n\nkramer: well, you're getting heavy. \n\nelaine: (quietly) what? \n\nkramer: yeah, you look like you put on (holds his hands out) five, (holds his hands wider) ten pounds. \n\njerry: kramer! \n\nkramer: i'll tell you something else, you're looking a little chunky yourself, buddy. \n\njerry: me? \n\nkramer: yeah. \n\njerry: no. \n\nelaine: where's your bathroom scale? (jerry looks at her like 'where do you think?' elaine and jerry both go into the bathroom) oh my god, i've gained seven pounds. \n\njerry: i've gained eight. \n\nkramer: i told ya. \n\nelaine: oh, my god! a couple, but 7 pounds. how did i gain 7 pounds? \n\njerry: how did i gain eight? \n\nelaine: i don't get it. i, i've been doing the same exercises. i haven't been eating anything different. \n\njerry: me, either. wait a second. wait a second. maybe it's that yogurt. \n\nkramer: no, no, no. that's hundred percent non-fat. \n\njerry: well, how else could this have happened? \n\nkramer: well, maybe it's the oreos. \n\nelaine: i don't eat oreos. \n\nkramer: you don't eat oreos? (acts out eating oreos) the way you break them open? you're (does a bunch of licking motions) ~ practically having sex with them. \n\njerry: what about me? \n\nkramer: you? you're getting old. \n\njerry: maybe your yogurt isn't so non-fat. \n\nkramer: oh, guess again, tubby! \n\nelaine: jerry, there's got to be a way to find that out. \n\njerry: there must be some kind of lab that would do that kind of thing. \n\nelaine: ah! i've got it. \n\nkramer: what? \n\nelaine: i'll call the food and drug administration. \n\nkramer: hey, i'll tell you what, chubs, if that yogurt has fat in it, i will put myself on an all-yogurt diet for a week. \n\njerry: well, let's start the insanity. \n\nkramer: nnnn-giddy-up! \n\nfrank: tommy tune is a very good dancer. (hits george on the head with what seems to be the tvguide) you ever see tommy tune dance? \n\ngeorge: no. \n\nestelle: i like tap dancing. \n\nfrank: tap dancing. anyone can tap dance. it's all in those shoes. \n\nestelle: are you kidding? they practice for years, those people. \n\ngeorge: what's for supper? \n\nestelle: somebody's at the door. \n\nfrank: tommy tune is very tall. that helps. it makes him lankier. \n\nestelle: (answers the door) lloyd? \n\nlloyd: hello, mrs. costanza. \n\nestelle: georgie, lloyd braun is here. \n\nfrank: hey! lloyd! \n\nestelle: what are you doing here? \n\nlloyd: well, i was just in the neighborhood visiting my mother so i thought i'd drop by and say, \"hello\". \n\nestelle: georgie. come here and say hello. \n\nfrank: how are you doing, lloyd? i hear you're a big advisor for dinkins now. \n\nlloyd: that's right. hey, george. \n\ngeorge: hey, lloyd. (shakes hands with lloyd) how's it going? (chuckles) \n\nlloyd: i uh ran into george yesterday in the city. \n\nestelle: ow! (hits george on the forehead) what's the matter with you? \n\nlloyd: so, uh, how's the arm, huh? \n\ngeorge: oh, it's good. \n\nestelle: what's the matter with your arm? \n\ngeorge: nothing. \n\nlloyd: oh, his arm moves like this. (does the nudging motion) \n\nfrank: your arm moves like this? (does the nudging motion) \n\ngeorge: yeah. \n\nfrank: (continues to move his arm) i never seen your arm move like this. \n\nestelle: me, either. \n\ngeorge: well, it comes and goes. \n\nfrank: it's like some kind of aaaaa (snapping his fingers) spasm. \n\nlloyd: ooh! i asked mr. dinkins if he knew any good orthopedists, and he said he had the best. (hands george the doctor's card) so, i made an appointment for you. dr. dekter. \n\nestelle: mayor dinkins got an appointment for him? \n\nfrank: you mentioned george's name to mayor dinkins? you discussed george with the mayor of new york? \n\nestelle: dinkins was talking about you. he was discussing you. \n\ngeorge: you know, lloyd, i-i've been to the doctor (hands george the card) there's really nothing they can do. \n\nfrank: (grabbing the card) hey, mayor dinkins set this up for you. you know what kind of a doctor this must be if dinkins knows him? \n\ngeorge: all right. all right! i'll go. \n\nlloyd: well, that's great. (grabs the card back from frank and hands it to george again) and, uh, i'll be very interested to hear the diagnosis. \n\nelaine: uh-huh. okay, well, we're coming down. all right. (hangs up the phone) okay. i got a place that can analyze it. it's in brooklyn. we have to drive there. \n\njerry: and they said they can do it? \n\nelaine: yeah, it's forty-five bucks. \n\njerry: all right. let's go down to the yogurt store, and we'll get a specimen. \n\nelaine: hm-hmm. \n\nmaryedith: well, i hope you're satisfied. \n\njerry: what? \n\nmaryedith: every word out of my son's mouth now is *beep*(fuck), *beep*(fuck), *beep*(fuck). (jerry half turns and puts his head done for a second) you know what he said to me five minutes ago? where's my *beep*(fuck)ing cupcake? \n\njerry: gee, i'm really sorry. \n\nmaryedith: he wants to be like you because you're a comedian. maybe you could talk to him? \n\njerry: i'd be happy to. \n\nmaryedith: thank you. \n\njerry: ah, mary, we've been eating a lot of your husband's uh yogurt at the yogurt place - does that have any fat in it? \n\nmaryedith: no *beep*(fuck)ing way! \n\nlloyd: well, it was very nice seeing you again. \n\nestelle: oh, it was good seeing you. \n\nlloyd: oh, um, by the way, who was that gorgeous woman i saw you with the other day? \n\ngeorge: oh, uh, just a friend of mine. \n\nestelle: you must mean elaine. isn't she adorable? \n\nlloyd: she is. she is. how about giving me her number? \n\ngeorge: oh, you know, lloyd, i really don't have it. \n\nestelle: she works at pendant publishing. elaine benes. \n\nlloyd: oh, great. (nudges george on the chin) thanks a lot! \n\ngeorge: yeah! \n\nlloyd: buh bye. \n\nestelle: bye! (lloyd leaves) oh, that lloyd braun. he is something, isn't he? \n\nnewman: well, i wouldn't hear of it. i said, \"nice try, granny!\" and i sent her to the back of the line! \n\njerry: hello, newman. \n\nnewman: hello, jerry. say, this yogurt is really something, huh? and it's non-fat! i've been waiting for something like this my whole life! and it's finally here! \n\nowner: hey, seinfeld. i'd appreciate it if you'd stop using obscenities around my son, huh? \n\njerry: it was an accident. i'm going to talk to him. \n\nelaine: i want a small, plain vanilla in a cup to go. that's non-fat, right? \n\nowner: that's right. \n\nelaine: 'cause i'm on a special diet, and the doctor said i can't have any fat. \n\nowner: yeah, well, there is no fat. \n\nnewman: hey, another round of strawberry for me and my friends. \n\nelaine: hurry, jerry! hurry! \n\njerry: how's it doing? \n\nelaine: not so good. \n\nkramer: well, you can't have this tested now. it's melting. \n\njerry: so what. \n\nkramer: it changes the molecules. \n\njerry: oh, you don't know what you're talking about. \n\nkramer: hey, fatso! i got a 90 in biology. \n\njerry: you call me fatso one more time; you're going to be walking back. \n\nelaine: um, hi! hi. i called earlier about getting the yogurt tested. \n\nlab technician: oh, right. would you fill this out, please? \n\nelaine: uh, does it matter if it's melted? \n\nlab technician: no! (jerry looks at kramer) you know, this is going to take a couple of days. \n\nelaine: that's okay. \n\nkramer: hello, there. \n\ncheryl: hello! \n\nkramer: ooh! test tubes. cool! \n\njerry: what do you got there? \n\nlab technician: actually, this is mr. giuliani's blood. we're doing a cholesterol work up on it. \n\njerry: oh. \n\nelaine: okay, i'm done. \n\ncheryl: it was really nice meeting you. \n\nkramer: well, the pleasure's all mine. \n\njerry: you can't take that chemist out. \n\nkramer: why not? \n\njerry: because she's like the jury. she's going to be sequestered. \n\nkramer: i'm not taking her out just to influence the results. \n\njerry: well, i think the whole thing stinks. \n\nelaine: it smells. smells bad. smells really bad. \n\njerry: that's enough. \n\nelaine: what? \n\njerry: with the smelling. \n\ngeorge: so, he made an appointment for me to see dinkins' doctor. he's just trying to humiliate me. \n\njerry: uh-huh. \n\ngeorge: and i have to go. if i don't go, he'll know i'm lying. \n\njerry: well, so, what are you going to do? sit in the doctor's office doing this? (moves his arm) he's gonna think you're a mental patient. \n\ngeorge: i don't care. look, lloyd doesn't know what he's up against. this is nothing to me. (moving his arm) my whole life is a lie. \n\nelaine: hey! \n\ngeorge: hey \n\njerry: hey. \n\nelaine: so, guess who called me. \n\ngeorge: oh, don't tell me. lloyd? \n\nelaine: we're going out tomorrow night. \n\ngeorge: oh, look, he's going to ask you about my arm. so, just tell him i banged it against a desk. and it's been moving involuntarily ever since. \n\nelaine: i can't say that. \n\ngeorge: why not? \n\nelaine: what if i like him? i'm going to start out lying to this guy? \n\ngeorge: so, you're taking his side? \n\nelaine: no. but what if we get married or something? we'll always have that between us. \n\ngeorge: already you're marrying this guy? \n\nelaine: you never know. \n\ngeorge: all right, believe me, you're not going to marry him. \n\nelaine: all right, well, then what if we become a couple, george? every time we see you you're going to be walking around going like this? (moving her arm) even you can't keep that up. \n\njerry: no, i believe he can. \n\nmaryedith: hi! \n\njerry: hi! \n\nmaryedith: you know jerry. \n\nmatthew: of course, he's the funny *beep*(fuck). \n\nmaryedith: see! \n\njerry: listen, matthew, i-i want to explain something to you. now, cursing is not something that most comedians do. \n\nmatthew: you did it. \n\njerry: that's true. but it was an accident. and i haven't done it since. and i would never do it again. and if you continue cursing, you'll never become a comedian like me when you grow up. (phone rings) excuse me one second. \n\nelaine: you know, lloyd advises dinkins on everything he does. \n\ngeorge: yeah, yeah. big advisor. \n\nelaine: he tells him which soap to use. \n\njerry: (quickly moves over toward matthew) what the *beep*(fuck) are you doing? you little piece of *beep*(shit)! \n\ncheryl: shh! we don't want to disturb the security guard. \n\nkramer: where's the lights. whoa! \n\ncheryl: how about this? \n\nkramer: yeah! bunsen burner. (runs his fingers through the flame) oo ya ya. \n\ncheryl: oo. \n\nkramer: yaow. \n\ncheryl: ha hea. \n\nkramer: you want a taste? it's cappuccino. \n\ncheryl: it's delicious. \n\nkramer: i hear you. \n\ncheryl: non-fat? \n\nkramer: well, you tell me. is the verdict in yet? \n\ncheryl: no. \n\nkramer: well, this is in case there's a tie! \n\nelaine: well, as far as i know, he bumped his arm into a door and it's kind of got this in(pauses)voluntarily movement. some sort of a (clears her throat) spasm. so, anyway, you're a..you're a big advisor to dinkins, huh? \n\nlloyd: yeah, yeah. it's coming right down to the wire. \n\nelaine: wow! you know what i would do if i was running for mayor. one of my campaign themes would be that everybody should wear name tags all the time to make the city friendlier. \n\nlloyd: name tags, hmm? \n\nelaine: well, everybody would know everybody. it would be like a small town. \n\nlloyd: maybe i'll mention that to him. \n\nelaine: really? wow. \n\nlloyd: you sure you don't want any yogurt? \n\nelaine: no, i'm watching my weight. \n\nlloyd: well, it's non-fat. \n\nelaine: yeah, so they say. \n\nlloyd: well i'm done, should we go? \n\nelaine: yeah. okay. \n\nelaine: three days and he hasn't called me, and you know why? because he thinks i'm too fat. \n\njerry: (surprised) he said that? \n\nelaine: (stands up straight) no, but i saw the look on his face when he put his arm around me. and then we went to his apartment, and i sat on one of his chairs and it broke. and he says, \"boy, you're a lot of woman!\" \n\nkramer: hey! so, hear anything on the yogurt? \n\njerry: no, but i expect to hear anytime. \n\nkramer: well, i wouldn't get your hopes up. \n\njerry: why do you say that? \n\nkramer: no reason. oh, did you hear about that dinkins? \n\nelaine: no. what about him? \n\nkramer: you didn't hear? \n\nelaine: un-huh. \n\nkramer: he's proposing a plan where everyone in the city should wear name tags. \n\njerry: name tags? \n\nkramer: yeah! so people can go around saying \"hello\" to one another. \n\njerry: oh, i see. so you can go, \"hey, you know who i saw wilding today? herb!\" \n\nkramer: he's become the laughing stock! you know the times has already stated it could cost him the election. (laughing) name tags! \n\njerry: (on the phone) hello? yes. uh-huh. ya. oh, really? okay, thank you very much. bye-bye. (hangs up the phone) well, the yogurt verdict is in. (kramer looks at jerry with his arms out) fat! \n\nkramer: yeow! \n\ngeorge: the next morning, i woke up, and it was going like this. (moves his arm slowly) i can control it if i really concentrate. but otherwise, (arm moves) oh. \n\ndoctor: uh huh. yes, well, i'm going to have to be perfectly honest with you. \n\ngeorge: please, doctor. \n\ndoctor: i've examined you. \n\ngeorge: yes. \n\ndoctor: i've looked at your x-rays. \n\ngeorge: uh-huh. \n\ndoctor: and i find that there's absolutely nothing wrong with you. \n\ngeorge: hmm. really? nothing? \n\ndoctor: nothing, that would indicate involuntary spasms. \n\ngeorge: well, it's kind of a mystery, isn't it? \n\ndoctor: no, not really. \n\ngeorge: how so? \n\ndoctor: may i suggest the possibility that you're faking? \n\ngeorge: faking? what makes you think that i have time to see doctors, take x-rays, make appointments, when there's absolutely nothing wrong with me? what kind of a person would do a thing like that? \n\ndoctor: i don't know what kind of a person would do something like that. obviously a very sick person. a very immature person. a person who has no regard for wasting other people's valuable time. good-bye. \n\ngeorge: now, see here, doctor. \n\ndoctor: i said, good-bye. \n\ngeorge: fine. (hits his arm on the desk) ow! \n\nelaine: jerry, come on, look. let's go over to that yogurt store. \n\njerry: look, elaine, i've been thinking about this. this has got to be a massive conspiracy. who knows how deep it goes. hey, look, wait a second, (looking at the tv) kramer, turn that up. \n\nkramer: huh, okay. \n\nnews: rudy giuliani, who underwent a physical last week, received some startling news today, when his cholesterol count turned out to be a whopping 375. what effect this will have on the minds of the voters remains to be seen. in another development, mayor dinkins has fired his top advisor, lloyd braun, who is believed to be responsible for the name tag fiasco. we now take you to giuliani headquarters where rudy giuliani is about to make a statement. \n\ngiuliani: it's hard to understand. because i've been doing everything i normally do. i've been watching my diet very carefully. i exercise regularly. my only indulgence, i guess, would be that i eat a lot of frozen yogurt. but it's non-fat. \n\njerry: non-fat yogurt? oh, my god. they got giuliani and he doesn't even know it. \n\nelaine: (pointing to kramer) now look what you've done. \n\njerry: well, we've got to do something. (grabs his phone) i'm calling giuliani's headquarters. \n\ngeorge: name tags! name tags! what kind of an idiot thinks anybody would be interested in an idea like that. \n\nfrank: i don't think it's so bad. people should wear name tags. everyone would be a lot friendlier. \"hello, sam.\" \"how are you doing, joe?\" (george's arm moves and hits the lamp) hey, your arm. it moved again. i thought you said it went away. \n\ngeorge: i banged it on the desk in the doctor's office. an (worriedly rubbing his arm) aaaa . . . \n\nestelle: be quiet. they're starting the press conference. \n\ngiuliani: my campaign staff has received some very disturbing information regarding the fat content in yogurt that's being sold throughout the city. i pledge to you now, that if i'm elected mayor, as my first order of business i'll appoint a special task force to investigate this matter. i promise you, my fellow new yorkers, that mayor giuliani will do everything possible to cleanse this city of this falsified non-fat yogurt. \n\njerry: the old yogurt was so much better. oh, this is terrible. \n\ngeorge: phew! \n\nelaine: oh, it stinks. \n\nkramer: mine, too. i got one more day. \n\njerry: i can't eat this. \n\nnewman: (from the corner of the yogurt shop) hey, jerry. thanks a lot. i hope you're happy. \n\njerry: it had fat in it, it's not good for you. \n\nnewman: i don't care. it was good. i was enjoying it. had to interfere. couldn't leave well enough alone. well, i will get even with you for this. you can count on it. \n\nelaine: hey, you guys, listen to this. listen to this. (reading from the newspaper) apparently some blood spilled into mr. giuliani's test tube causing his cholesterol count to be 150 points higher than was initially reported. ironically, the mishap by bringing the non-fat yogurt scandal to the attention of the public, probably clinched the election for the republican. it was the one issue which seemed to electrify the voters and swept giuliani into office. \n\njerry: so, in effect, the yogurt won him the election. \n\nelaine: i wonder what actually happened in that lab. \n\nkramer: yeah, me, too. \n\nnewman: i can't eat this. \n\nmatthew: (hits jerry to get his attention) thanks for ruining my daddy's business, you fat *beep*(fuck). \n\njerry: the old-fashioned barber shop is unfortunately becoming a thing of the past, now what went wrong? well first of all there's a twenty thousand dollar chair to make a three dollar tip. i say cut back on the chair, update the magazines. why do barbers always display that license? there's no laws in hair cutting, except show every person the back of their head that's the one law. i don't want to see the back of my head. why do i want to see something that i'm never going to see at any other time? when i buy pants two salesmen don't lift me up by the legs and go \"how do you like crotch?\" if i wanted to see everything i would have been a fly. \n\nmr. tuttle: well george we here at sanalac like to think of ourselves as a fairly progressive company. we have a small but prestigious group of clients. \n\ngeorge: well a lot of people consider me small and prestigious. \n\nmr. tuttle: that's funny george. you're very quick. i feel like i, like i don't have to explain every little thing to you. you understand everything immediately. \n\ngeorge: i enjoy understanding. \n\nmr. tuttle: i want you to have this job. of course... \n\nsecretary: mr. zimmer is on line 2. \n\nmr. tuttle: thanks. i've got to take this call. listen, i'm really glad that you came in. \n\ngeorge: i want you to have this job. of course... \n\njerry & elaine: yeah? \n\ngeorge: that's it. \n\njerry: what do you mean that's it? \n\ngeorge: he never finished the sentence. he got a call, that was the end of the interview. \n\njerry: \"of course\" was the last thing he said? \n\ngeorge: maybe he was going to say \"of course i have to check with my associates.\" \n\nelaine: \"i want you to have this job, of course the board of directors is under indictment and will be serving time.\" \n\njerry: \"i want you to have this job, of course sodomy is a prerequisite.\" \n\ngeorge: all right. \n\nelaine: why don't you go ahead and call him? \n\ngeorge: because he made a big deal about how i understand everything immediately. that's what impressed him. \n\njerry: so if you call and ask if you have the job, you might lose the job. \n\ngeorge: and if i don't call... \n\njerry: you might have the job, but you'll never know it. what kind of company is it? \n\ngeorge: rest stop supply. \n\nelaine & jerry: oh. \n\nelaine: good for you. \n\nkramer: yeah, yeah, yeah. \n\ngeorge: hey \n\njerry: hey \n\nkramer: hey. \n\njerry: shower? \n\nkramer: haircut. \n\njerry: oh. \n\nkramer: i'm very happy with this. \n\njerry: who'd you use? gino? \n\nkramer: oh course. i wouldn't let that other butcher cut my hair. \n\nelaine: what butcher? \n\nkramer: the uncle enzo. that's the guy jerry uses. \n\njerry: well i've been going with him for 12 years. i can't switch. i'd hurt his feelings. \n\nelaine: you never get good haircuts. \n\nkramer: you can get a good one today. it's enzo's day off. gino's there all by himself. \n\njerry: really? \n\nelaine: yeah. you know what, you should go over there and get one to look good for my bachelor auction. \n\nkramer: what bachelor auction? \n\nelaine: oh it's a thing where they auction off dates with bachelors for charity. \n\nkramer: and you didn't ask me to do it? i could raise enough money to cure polio. \n\njerry: i believe they've had a cure for polio for quite some time. \n\nkramer: polio? \n\nelaine: will you go ahead? you need a haircut. \n\njerry: okay. \n\nkramer: what are you all dressed up for? \n\ngeorge: i had a job interview. \n\nkramer: yeah. how'd it go? \n\ngeorge: good. of course... \n\nenzo: oh jerry. \n\njerry: oh hi enzo. \n\nenzo: oh, you've come for the haircut. \n\njerry: no, actually i was just gonna... \n\nenzo: it's my day off, but i take care of you anyway because you're my favorite customer. you've been with me for so long. you're so loyal. \n\njerry: well i, if it's your day off i really... (tries to leave) \n\nenzo: (he pulls jerry into the barber chair. jerry is trying to get away but can't.) eh, what's the difference. it takes 10 minutes. jerry, today i'm going to do something special for you. \n\njerry: well i don't want to take too much off. \n\nenzo: hey who's your barber, eh? you tell the joke, i cut the hair. \n\nman: gino, you've outdone yourself this time. this is the best haircut i've ever had. \n\ngeorge: he massacred you. \n\njerry: i know. \n\ngeorge: you look like you're five years old. \n\njerry: what if i shampoo? sometimes a shampoo helps. \n\ngeorge: you've got to start seeing someone else. get out of this relationship. \n\njerry: i can't. he loves me. he says i'm his most loyal customer. plus he's right there on the corner. i'd have to pass him every day when i go by. \n\ngeorge: well, you gotta do it. \n\njerry: i can't, i can't. i'd break his heart. \n\nkramer: no way my gino did that. it's an enzo. \n\njerry: he was in the shop. i thought you told me he wasn't going to be there. \n\nkramer: so what? \n\njerry: i didn't want to hurt his feelings. \n\nkramer: his feelings? you can't continue seeing him. you're destroying yourself. \n\njerry: yea but... \n\nkramer: i'm not going to let you. if you don't call him i will. \n\njerry: no, no kramer. i don't want you to do that. you can't do that. \n\nkramer: i'm going to call gino, you're going to see him, and we're going to get that haircut fixed up. \n\njerry: i don't want you to call him. \n\nkramer: all right, geez. you're crazy. \n\ngeorge: so i still haven't heard about that job. \n\njerry: yeah that's a tough one. what are you going to do about that? \n\ngeorge: i have an idea. \n\njerry: yeah? \n\ngeorge: i show up. \n\njerry: what do you mean you show up? \n\ngeorge: i show up. i pretend i have the job. the guy's on vacation. if i have the job, it's fine. if i don't have the job, by the time he comes back, i'm ensconced. \n\njerry: hmm. not bad. \n\ngeorge: what's the worst thing that could happen? \n\njerry: well, you'd be embarrassed and humiliated in front of a large group of people and have to walk out in shame with your tail between your legs. \n\ngeorge: yeah, so? \n\njerry: yeah, i see what you mean. i forgot who i was dealing with here. \n\ngeorge: (to various people as he walks in) good morning. good morning. good morning. hi nice to see you. how are you. good morning. (to the secretary) good morning. \n\nsecretary: how can i help you? \n\ngeorge: the name's george constanza. i'm starting work here today. i was wondering if you could tell me where my office is. \n\nsecretary: i wasn't aware that, uh, mike, this is george constanza. he's starting here today. \n\nmike: welcome aboard. \n\ngeorge: thanks mike. nice to be aboard. \n\nmike: i wasn't aware that mr. tuttle was finished interviewing. \n\ngeorge: oh, well, he was probably just getting anxious to start his vacation. \n\nsecretary: he wants to know where his office is. \n\nmike: oh, ah, let's see, we've got two. there's a big one down the hall there and a small one over here. you know i should ask jack. \n\ngeorge: oh leave jack alone. jack's got enough problems. i'll just take the small office. \n\nmike: really? \n\ngeorge: yes. i like to feel cozy. i have a very small apartment. i like to feel tucked in, nestled in. love to be nestled. \n\nmike: all right, it's 808 right down there. meanwhile, i'll get you the pensky file, you can start working on that. \n\ngeorge: yes, yes of course. the pensky file. ho ho, can't wait to sink my teeth into that. wow that pensky. well we'll straighten him out. \n\n(camera shot at the clock on his wall. the clock says 9: 00.) \n\n(a moment later, the clock flips to 5: 00.) \n\njerry: so what did you do there all day? \n\ngeorge: they gave me the pensky file. \n\njerry: so it's a nice place to work? \n\ngeorge: you know i'm enjoying it very much. i think my coworkers are really taking to me. \n\ngeorge: (continuing) i feel like a family. in fact, yesterday was grace's birthday. she's such a sweet woman so, we had a little party, with cake and champagne. i made a toast. \n\njerry: what about your boss? the guys you interviewed you? \n\ngeorge: he'll be back on monday. \n\njerry: hi. \n\nelaine: hi. how come you're wearing a hat? \n\njerry: i got a haircut. \n\nelaine: oh yeah? can i see it? \n\njerry: oh there's nothing to see. \n\nelaine: come on. let me see it. \n\njerry: forget it. \n\nelaine: come on. \n\njerry: all right. \n\njerry: alright, that's very good. thank you. \n\nelaine: (still laughing, tears in her eyes) i'm sorry. i'm so sorry. \n\njerry: well i'll tell you this, you can forget about me going to that bachelor auction. \n\nelaine: what? no jerry, you have to go. \n\ngeorge: you know elaine, i'd do it but i'm working that day. \n\nelaine: (dryly) yeah, too bad. \n\nkramer: it the worst haircut jerry's ever had. you gotta fix it. \n\ngino: sure, i fix. but you gotta make sure you no tell anybody. he's a little crazy. i don't know what he'd do if he found out i touch jerry's hair. \n\nkramer: yeah yeah yeah. \n\ngino: (enzo enters) so i love the edward scissorhands. that's the best movie i've ever seen. \n\nenzo: oh ah, again with the edward scissorhand. how can you have hand like a scissor, huh? show me one person who's got hand like a scissor. \n\ngino: hey, it's a beautiful dream. i'd love to be this man. \n\nenzo: did you ever think about what you're going to do on the toilet? (yelling) what are you going to do on the toilet? \n\nkramer: i'd like to have shoehorn hands. \n\nkramer: hey. \n\njerry: hey \n\nkramer: okay listen to me. i talked to gino, he's going to fix the haircut. \n\nelaine: oh great, then you can go to the bachelor auction. \n\njerry: yeah, but how am i... \n\nkramer: no buts. his apartment tonight, eight o'clock. \n\nelaine: can he fix it? \n\nkramer: i don't know. \n\ngino: boy, you've got a beautiful head of hair. \n\njerry: oh. thank you. \n\ngino: i bet uncle enzo, he tell you that all the time. \n\njerry: well actually enzo hasn't said that to me in a while. \n\ngino: i don't think uncle enzo realize what a lucky barber he is. \n\njerry: that's nice of you to say. \n\ngino: just a second. (answering buzzer) yes. \n\nenzo: (over the speaker) it's your uncle enzo. \n\ngino: it's uncle enzo. go in there. i'll clean up. \n\ngino: uncle enzo, what are you doing here? \n\nenzo: i've come to apologize. \n\ngino: apologize? \n\nenzo: yea. i rented the move edward scissorhands. that johnny depp, he make me cry. \n\ngino: he make me cry too. you want something to drink? \n\nenzo: hey, what's all of this? \n\ngino: nothing. it's just hair. \n\nenzo: you do haircut in the apartment? \n\ngino: no. pizza man was here. maybe some fall off. he's going bald. \n\nenzo: it looks very familiar. \n\njerry: in the one minute he worked on me i could tell he was really good. \n\nkramer: yeah. slow, gentle, attentive. \n\njerry: yeah. \n\nkramer: i told you he could do it. \n\njerry: enzo picked up one of my hairs off the floor. \n\nkramer: yeah, so? \n\njerry: i think he knew. \n\nkramer: no. he doesn't know. \n\njerry: who do you know? he knows my hair. \n\nkramer: listen you're just imagining things. he doesn't know a thing. now come on. pull yourself together. \n\njerry: okay, okay. \n\nelaine: what happened? it looks the same. \n\njerry: he didn't get to finish it. his uncle came in. we almost got caught. \n\nelaine: jerry, the auction is in a few hours. \n\njerry: take the k-man. \n\nelaine: you can still go. \n\nkramer: what are you kidding? look at him. he's grotesque. \n\nelaine: you think? \n\nkramer: do i think? he's repugnant. \n\nelaine: what would you wear? \n\nkramer: whatever it takes. \n\nenzo: see, now newman is a good customer. \n\nnewman: once i find a barber i stick with him. i almost went to barber school. i always felt i had a talent for it. \n\nenzo: oh, not everybody like newman, so loyal. \n\nnewman: yeah, just the way that i was raised. i'm special. \n\nenzo: you know i don't mind if somebody's funny, but i no like the funny business. \n\ngino: i'm going to go out for a little bit. i'll be right back. \n\nenzo: take your time. (gino leaves) you happy with the haircut? \n\nnewman: it's okay. a little crooked. \n\nenzo: how'd you like to have free haircut for six months. \n\nnewman: what's the catch? \n\nenzo: you're going to get me a sample of jerry's hair. \n\nnewman: hmm, that job sounds like it might be worth a year's free haircuts. and a comb. \n\nsecretary: (over the speaker) mr. costanza, mr. pensky is here to see you. \n\ngeorge: mr. pensky? of the pensky file? \n\npensky: costanza? arthur pensky. \n\ngeorge: mr. pensky. i was just working on your file. i was transferring the contents of the file into this flexible accordion-style folder. \n\npensky: where's tuttle? \n\ngeorge: he's on vacation. \n\npensky: he was on vacation the last time i dropped by. give me my file. (looks through the file) looks like you put a lot of work into this. \n\ngeorge: well you know in college they used to call me the little bulldog. \n\npensky: hey, you are pensky material. would you ever consider coming to work directly for me? \n\ngeorge: really? \n\npensky: you are aware... \n\nsecretary: (over the speaker) mr. castanza? \n\ngeorge: not now florice. \n\nsecretary: (speaker) i thought mr. pensky should know they're towing his car. \n\npensky: damn this city. \n\ngeorge: i am aware. i am aware. \n\ngino: he knows. he knows about us. \n\njerry: how do you know? \n\ngino: because i know. he's crazy. all morning, he looking at the hair. he staring at the hair. \n\njerry: who is it? \n\nnewman: it's newman. \n\ngino: he was in the shop with enzo. he can't see me here. \n\njerry: all right, go in the bedroom. open the window. you can go out the fire escape. \n\njerry: what do you want? \n\nnewman: (dancing) can i use your bathroom? \n\njerry: what's wrong with yours? \n\nnewman: my toilet's clogged. \n\njerry: you can't unclog it? \n\nnewman: no. \n\njerry: did you ask kramer? \n\nnewman: he's out. \n\njerry: number one? \n\nnewman: yes, yes. may i go? cause i gotta go very badly. \n\njerry: all right. flush twice. \n\nnewman: (thinking to himself; checks a comb) no. (checks a brush) jackpot. i don't believe this. there's no hair in this thing. i've never seen a person that didn't have at least one hair in a brush. \n\njerry: all right? \n\nnewman: yeah, yeah. \n\njerry: all right, i'll see you later. \n\nnewman: what are you doing? \n\njerry: i'm watching edward scissorhands. \n\nnewman: oh, can i watch a little? cuz it's my favorite movie. \n\njerry: yeah all right. \n\njerry: you want something to drink? \n\nnewman: no. no. \n\njerry: if you want to watch, sit down. you're making me nervous. i tell you this scissorhands is a hell of a barber. \n\nnewman: gotta go. oh gee, i dropped a nickel (reaches down and picks up the hair.) \n\nenzo: did you get it? (comparing the hairs) oh you done good newman. \n\nnewman: it was a cinch. where are you going? \n\nenzo: io volgio vandetta. \n\nelaine: nine hundred. do i hear a thousand? ladies, he is a harvard graduate. \n\nwoman: a thousand. \n\nelaine: a thousand. okay, a thousand once, a thousand twice, a thousand three times, sold to the lucky lady in the third row. congratulations, thank you so much. \n\nelaine: okay next bachelor is number, um 124 on your program. he's uh, he's a high school graduate. \n\nkramer: equivalency. \n\nelaine: oh, uh equivalency. a high school equivalency program graduate. (kramer dances up and down the stage) he's uh, self-employed. he's... i don't know, six foot three, 190 pounds, he likes, uh... fruit, and he just got uh, a haircut. \n\nelaine: oh, kramer. okay uh, why don't we start the bidding. do i hear, um, five bucks? \n\njerry: i don't get this scissorhands. what, is he supposed to be like a super hero, like green lantern or somebody? what's with this guy? (gino looks at him annoyed) just asking. \n\njerry: who is it? \n\nenzo: (yelling) enzo manginero. \n\njerry: oh my god, he knows. (jerry and gino scrambling) go. (yelling to the door) one second. \n\nenzo: it was you that was in gino's apartment the other night. \n\njerry: no i wasn't there. (enters and slams the door) \n\nenzo: don't lie. i know it was you. i get a sample of your hair. i match them up. \n\njerry: sample? (under his breath) newman. uh, i was there but i was just dropping off a book. \n\ngino: don't jerry. \n\nenzo: so, it's true. \n\ngino: yes it's true. \n\nenzo: i'm going to kill the both of you. \n\ngeorge: mr. tuttle, you're back. \n\ntuttle: george, i'm surprised to see you here. \n\ngeorge: you are? \n\ntuttle: i thought you would have taken the large office. \n\ngeorge: oh. really. \n\ntuttle: i guess i didn't make that clear when i hired you. so where's that pensky file? let's see what you've been up to all week. \n\ngeorge: ah, here it is. \n\ntuttle: (pages through the file) what have you been doing all week? \n\ngeorge: well you missed a lovely little party that we had for grace. \n\ntuttle: you haven't done anything with this. \n\ngeorge: well bear in mind that i am in the smaller office. \n\ntuttle: i'm beginning to wonder if you understand anything. \n\ngeorge: you are aware that pensky is interested in me. \n\ntuttle: (scoffs) you're not pensky material. \n\ngeorge: (chuckles) really? well, we'll just see about that. ta-ta, tut-tle. \n\npensky: gee george, i'm sorry i gave you the wrong impression. what is was going to say was, now you are aware that our board of directors has been indicted, myself included, and we're prohibited from doing business until the investigation is completed. so obviously, we would have no use for you. \n\ngeorge: obviously. \n\npensky: yes. \n\nsecretary: (over the speaker) excuse me, but mr. costanza's car is being towed. \n\nkramer: (on the phone in jerry's apartment) so when are you gonna be able to go out? \n\nnewman: (on the phone in his apartment with a bald head) not for a while. \n\n[setting: night club] \n\njerry: if there's a serial killer lose in your neighborhood, it seems like the safest thing is to be the neighbor. they never kill the neighbor. the neighbor always survives to do the interview afterwards. right? \"oh, he was kind of quiet.\" i love these neighbors. they're never disturbed by the sounds of murdering, just stereo. chain saws, people screaming, fine. just keep the music down. and all these women who always fall in love with the serial killer. they write to him in prison. here's a woman that's hard to disappoint. i guess she's only upset when she finds out he's stopped killing people and she goes \"you know sometimes i feel like i don't even know who you are anymore\". \n\n[setting: elaine's office and jerry's apartment] \n\njerry: no eight years isn't such a long streak. \n\nelaine: it isn't? \n\njerry: no i haven't vomited in thirteen years. \n\nelaine: get out! \n\njerry: not since june 29, 1980. \n\nelaine: you remember the date? \n\njerry: yes, because my previous vomit was also june 29th... 1972. that's why during the '80 vomit, i was yelling to george \"can you believe it? i'm vomiting on june 29th again.\" \n\nelaine: boy, you know when joel told me he hadn't thrown up in eight years, i was wondering if he was normal. \n\njerry: no elaine he's normal. your boyfriend is a normal guy. he just happens to have the same name as one of the worst serial killers in the history of new-york. \n\nelaine: yeah... (2 co-workers enter elaine's office) oh jer, i gotta go. i gotta go. (she hangs up) \n\njoanne: hi, we just saw your boyfriend at a bus stop. \n\nelaine: oh, yeah? \n\njoanne: yeah. what's his name? \n\nelaine: joel... \n\njoanne: joel what? \n\nelaine: uh... (clears her throat) rifkin. \n\nmichael: rifkin? joel rifkin? \n\nelaine: yeah. it's just a coincidence obviously. \n\nmichael: guess you better keep on his good side. \n\nelaine: very funny. that's very funny. \n\njoanne: i wouldn't sleep with my back to him if i were you. \n\nelaine: all right. well that's enough of that. that's enough. \n\nmichael: hey elaine listen. if you smell anything decaying in the trunk of his car... \n\nelaine: (she's upset, gets up and yells) ok look this is my boyfriend we're talking about ok? and he's a gentlemen, he's good looking, he's a good shaver and he hasn't thrown up in eigth years so just shut up about him! shut up! \n\n[setting: jerry's] \n\nelaine: the whole city is talking about this monster joel rifkin, and i am dating a joel rifkin. \n\njerry: but you like your joel rifkin. \n\nelaine: yeah. i just wish he has a different name. \n\njerry: ask him to change it. \n\nelaine: you can't ask a person to change their name. \n\njerry: why not? \n\nelaine: would you change yours? \n\njerry: if someone asked me nicely. i'm claude seinfeld. \n\nelaine: hey, how many people did rifkin strangle? eighteen? \n\njerry: yeah. eighteen strangles. \n\nkramer: you know why rifkin was a serial killer? because he was adopted. (saying it as he's taking a lot of paper towels from jerry's roll; elaine and jerry are confused at kramer's statement) just like son of sam was adopted. so apparently adoption leads to serial killing. (kramer leaves and we don't know why he needed so much paper towels) \n\nelaine: you know joel and i have an extra ticket to the giants game. \n\nkramer: i'll go. \n\nelaine: o.k. i'll leave the ticket for you at will call. \n\nkramer: yeah! ooh! (leaves again) \n\nelaine: you think i should have asked george? \n\njerry: hey did you hear that george got back with karen? \n\nelaine: karen? \n\njerry: risotto. (we see a flashback from the mango where karen tells george that she feels full after a risotto, as opposed to when she has sex with him) \n\nelaine: oh! the risotto broad. \n\njerry: yeah. he's really got a good thing with her. in fact i'm doubling with them tonight. \n\nelaine: i tought you didn't like double dates. \n\njerry: george likes them, he feels it's a good personality showcase. he likes a date to see him with a friend so she can get a window into his nondate personality. \n\nelaine: i've looked through that window and screamed at him to shut the blinds. \n\njerry: he feels he's funnier, more relaxed. \n\nelaine: and you're taking... \n\njerry: jody the masseuse. \n\nelaine: hey, did you get a massage yet? \n\njerry: no! how many times do i have to go out with her before i get a massage? \n\nelaine: jerry, she gives massages all day. she doesn't wanna to give them on dates. \n\njerry: yeah i know... she just wants to have sex. \n\nelaine: so what? \n\njerry: so it's like going to idhao and eating carrots. i like carrots, but i'm in idhao, i want a potato. \n\n[setting: the chinese restaurant (the same as in 'the chinese restaurant')] \n\ngeorge: (george is telling a story. karen is laughing and she seems to be the only one to find him funny) so i go into this clothing store and the saleswoman is wearing this (whistling) low cut thing. so i said to her \"can i ask you a question? when you put on a top like that, what's your tought process? what's going on in your mind?\" \n\nkaren: that is so funny. \n\ngeorge: (to jody) you're listening to this? \n\njodi: yeah. i heard you. \n\njerry: (to jody) my neck is killing me. right in this spot. very tender over here. \n\njodi: (to george) so what did she say? \n\ngeorge: well nothing. i didn't actually say that. (karen is still laughing) \n\njodi: you just said that you said it. \n\ngeorge: sweetheart, i was exaggerating. \n\nkaren: i'm learning a lot about you tonight george. i've never seen you like this. \n\njerry: (touching the back of his neck) it's like somebody's pulling on wires back here. \n\ngeorge: you know it's like you never see a really attractive woman getting a traffic ticket. \n\njodi: how can you say that? my sister got a ticket last week. are you saying she's not attractive? \n\ngeorge: well i've never met your sister but obviously these are not hard-and-fast rules. (to the waitress) darling, the tea is getting a little cold sweetheart. \n\njodi: (to jerry) can we go? \n\njerry: yeah. let's go. \n\nkaren: so soon? (they get up) \n\njerry: yeah. good seeing you again karen. \n\nkaren: yeah. \n\njodi: nice meeting you karen. \n\nkaren: yeah. nice to meet you too and i'm gonna call you about that massage. \n\njodi: oh yeah. \n\ngeorge: jody let's do this agian real soon (he tends his arms for a hug but she avoids him) \n\njodi: yeah. (she and jerry walk away) \n\n[setting: jerry's place later that night] \n\njerry: i strained my neck last night. \n\njodi: really, how? \n\njerry: i tried brushing my teeth by holding the brush and moving my head from side to side. it didn't work. \n\njodi: so what's the deal with your friend george? \n\njerry: no deal. why? \n\njodi: what was all that \"attractive women not getting tickets\" nonsense? \n\njerry: oh well, he was just showcasing his nondate pesonality. \n\njodi: i don't know how you can hang out with that guy. \n\njerry: yeah. sometimes he really makes me tense (he takes jody's hand and put it on his shoulder) \n\njodi: did you see the way that he was eating? \n\njerry: yeah, he's disgusting. (putting her hand back on his shoulder. she unconsciously starts to massage a little while watching tv) \n\njodi: i have to tell you, i really don't like him. \n\njerry: yeah, me either. (he takes her other hand and put it on his other shoulder) \n\njodi: it's just i hate that type. \n\njerry: yeah, he's a bad seed. \n\njodi: now you however, you, i like. (she stops massaging and kisses jerry) \n\njerry: what are you doing? \n\njodi: what do you think i'm doing? (he won't get his massage...) \n\n[setting: the chinese restaurant] \n\ngeorge: so, what do you think? \n\nkaren: really enjoyed it. \n\ngeorge: jody's nice. \n\nkaren: she's very nice. (grabs george's hand) let's discuss this later. \n\ngeorge: you think she liked me? she seemed to like me. \n\nkaren: yeah \n\ngeorge: i was personable. don't you think i was personable? \n\nkaren: you were extremely personable. \n\ngeorge: i tought i picked up a little something. i'm very good at this. did you pick up anything? \n\nkaren: i didn't pick up anything. \n\ngeorge: the second time i sent the noodles back, i tought she made a face... \n\nkaren: i didn't see a face. \n\ngeorge: i tought i saw a face. \n\nkaren: anyhow, what is the difference? \n\ngeorge: no difference. i could care less. she's jerry's girlfriend. \n\nkaren: george, george, instead of talking about this, we could be... you know... (she makes a move with her head like george did in 'the mango' while saying \"instead of the movie...\") \n\ngeorge: he he he he \n\nkaren: ah ah ah ah \n\ngeorge: so you think she likes me? \n\n[setting: elaine's place] \n\nelaine: (as he touches her) uhh! what are you doing? \n\njoel: massaging your neck. \n\nelaine: oh. huh. of course. massaging. \n\njoel: uh, boning up on football? (talking about the magazine she's reading as he sits beside her) \n\nelaine: yeah, yeah. you know what? there are a lot of players named deon these days. what a cool name, deon. if i were gonna change my name, i'd go with deon. \n\njoel: deon benes? \n\nelaine: well as a woman, it makes no sense. but, i mean, let's say i was you. and i decided i was gonna change my name for no real reasons whatsoever-- deon rifkin. wow! that is so cool. \n\njoel: d-deon rifkin? \n\nelaine: well maybe you're not the dion type. o.k. then let's see, let's see, what do we got? (looking at the magazine, she starts to gasp and loses it) oh! oh oh oh! o.j.! o.j. rifkin! you don't even use a name, it's just initials. oh please please please change your name to o.j.! please, it would be so great! \n\njoel: elaine! what is going on? \n\n[setting: monk's] \n\ngeorge: she stayed over? \n\njerry: yeah. (disappointed) \n\ngeorge: the sex wasn't so good? \n\njerry: no. the sex was fabulous. \n\ngeorge: so? \n\njerry: i want the massage! \n\ngeorge: did you ask her? \n\njerry: i tried putting her hands there (on his neck) but she pulls it away immediately, she's not into it. \n\ngeorge: why not? \n\njerry: i guess 'cause it's her job. it's very frustrating. \n\ngeorge: so we had a good time... the four of us. \n\njerry: yeah. \n\ngeorge: we all got along. everyone seemed very pleasant. \n\njerry: yeah. \n\ngeorge: what did jodi say? \n\njerry: she had a good time. \n\ngeorge: is that it? \n\njerry: pretty much. \n\ngeorge: did she say anything about, uh... \n\njerry: what? \n\ngeorge: nah. it's all right. great! she had a good time. \n\njerry: yeah (a so-so yeah as he takes a sip of coffee) \n\ngeorge: you just hesitated. \n\njerry: i was blowing on the coffee. \n\ngeorge: she didn't like me? \n\njerry: look it's not like you're gonna be spending a lot of time with her. \n\ngeorge: so she doesn't like me? \n\njerry: no. \n\ngeorge: she said that? \n\njerry: yes. \n\ngeorge: she told you she doesn't like me! \n\njerry: yes. \n\ngeorge: what were her exact-- \n\njerry: \"i don't like him.\" \n\ngeorge: uh-huh (gulp) why didn't she like me? \n\njerry: not everybody likes everybody! \n\ngeorge: i tried to be nice. i wasn't nice? \n\njerry: you were very nice! \n\ngeorge: i bent over backwards for that woman! is it that thing i said about her sister? \n\njerry: it has nothing to do with her sister. \n\ngeorge: i don't even know her sister but believe me, if she's getting traffic tickets, she's not that good-looking! woah \n\n[setting: hall in jerry's building] \n\ngeorge: you vomited in 1987. \n\njerry: oh no. that was the dry heaves. \n\njerry: jodi. \n\njodi: hey, jerry. \n\ngeorge: ha! ha! hey! (moving his arms like it's so great to be all here) \n\njerry: what are you doing here? \n\njodi: i was giving kramer a massage. \n\njerry: kramer! (tries to hide he's upset and jealous) \n\njodi: i got to run. i have an appointment downtown. \n\ngeorge: here. let me take your tabe downstairs for you. \n\njodi: no that's o.k. \n\ngeorge: please give it to me. i love to help people. this is what i do. come on. i'm going this way. (he takes the table from jodi's hands and she has no choice but to follow him) \n\njerry: i'll see you tonight. (he's opening his door apartment as kramer comes out of his in a bathrobe) \n\nkramer: hey! i am looser than creamed corn! \n\njerry: who told you to get a massage from her. i haven't gotten a massage from her yet! \n\nkramer: you don't know what you're missing buddy. \n\n[setting: street in front of jerry's building] \n\ngeorge: no one hails a cab like me. my hailing technique is unmatched. i get the wrist going from side to side and boom! cabs are crashing into themselves to just pick me up. (a cab stops) all right, here we go. let me get door. feminists aside, i know women like the door holding. here we are all righty. o.k. jodi let's get together again real soon and say hello to your sister for me. \n\njodi: you've never met. (the cab starts and george is following to keep talking to jodi) \n\ngeorge: whatever. believe me, if i wasn't involved right now, i wouldn't mind being set up. something tells me she's a knockout. (we see, from the camera inside the cab, george's hand waving as the cab drives away) \n\n[setting: jerry's apartment] \n\nkramer: (kramer is talking much more slowly and smoother than usual) first she sets the mood perfectly with this new age music played over ocean sounds. then she lays you out on this table, and she proceeds to rub oil over your entire body. and she rubs long... and deep... jerry, she rubs with love. (jerry is obviously cutting much harder than the cheese needs it as he listens to kramer) every muscles she touches just... (long pause) ooo-zz-es. beneath those silky, soft fingers, you can scarcely contain yourself, buddy. (jerry slams down the knife and goes to the couch) \n\njerry: so you had a good time. \n\nkramer: oh... yeah... \n\njerry: enjoyed yourself. \n\nkramer: very... much... \n\njerry: all right now you listen and you listen good! (he grabs kramer's legs and throws him down the couch) \n\nkramer: what! (kramer is back to his usual way of speaking) \n\njerry: the massages are out! \n\nkramer: wha-- \n\njerry: ahh!!! they're out! \n\nkramer: why?! \n\njerry: because if i can't get one, you're not getting one. \n\nkramer: wait a minute! wait a minute! i need my massages! can't you see i'm burned out! \n\njerry: i'm sorry, kramer. (he goes back to the kitchen) \n\nkramer: why? why? look, i paid for her. (jerry stops walking) \n\njerry: don't you ever talk about her like that! \n\nkramer: but why? \n\njerry: that's final!!! \n\nkramer: ah!!! yahh!!! \n\n[setting: giants stadium] \n\nannouncer: ladies and gentlemen, welcome to giants stadium. \n\nelaine: oh, you have photos in your wallet? \n\njoel: yeah. why? is that weird? \n\nelaine: no, it's normal. you're very normal. you're totally normal. who's this? \n\njoel: that's my mother. \n\nelaine: oh yeah. i see the resemblance. \n\njoel: no, there's no resemblance. \n\nelaine: yeah, there is, right here you see-- \n\njoel: elaine, i was adopted. \n\nelaine: (pause) oh. that's nice. \n\njoel: oh, the game's about to start. i wonder where your friend kramer is. \n\n[setting: ticket counter] \n\nkramer: (to the ticket man) uh, yeah, a ticket for kramer. \n\nticket man: here it is. i need some i.d. \n\nkramer: oh, yeah. (snaps fingers) you know, i forgot my wallet. \n\nticket man: well, i can't give it to you then. \n\nkramer: are you kidding me? \n\nticket man: i'm afraid not. \n\nkramer: come on, just look at me. tell me i'm not kramer. \n\nticket man: i'm sorry. i need proof. \n\nkramer: look, i'll drive out here tomorrow and i'll show the i.d. i got nothing to do all day. \n\nticket man: neither do i. but without i.d., i need confirmation from the person who left the ticket. \n\nkramer: where's a phone? \n\n[setting: back to elaine and joel watching the game] \n\nannouncer: ladies and gentlemen, may i have your attention, please? would joel rifkin report to the stadium office. joel rifkin...telephone. (the crowd stops cheering and we see a football player, lawrence taylor of the n.y. giants, distracted from the game while hearing the announcer saying joel rifkin) \n\njoel: who would be calling me here? (he stands up and look around) \n\nelaine: (to the person in front of her) he's not the murderer. \n\n[setting: jerry's apartment] \n\nkramer: oh, god. \n\njerry: what's the matter with you? \n\nkramer: jerry, i need another massage! \n\njerry: you just had one yesterday. what do you need another one for? \n\nkramer: because of the giant game! i told you, it went overtime! you know what those seats are like. they're very unforgiving. \n\njerry: oh please. \n\nkramer: and then the game-winning field goal went over the net and into the crowd and i dove over three rows! my back, it's killing me! (whining) it's killing me jerry! \n\njerry: well, did you get the ball? \n\nkramer: oh i got the ball. \n\njerry: well, i never even caught a foul ball at a baseball game. \n\nkramer: well, it's quite a thrill. \n\njerry: why don't you get somebody else? \n\nkramer: because nobody does it like she does. she's the best. \n\njerry: well, that's it! tonight's the night. i'm getting one. no \"if and's or but's\". \n\nkramer: what about my massage? \n\njerry: (whining like kramer) ask newman. \n\n[setting: monk's] \n\ngeorge: so i lugged that table. that big heavy massage table all the way down to the cab! you ever seen one of those things? \n\nkaren: of course. \n\ngeorge: no, i don't know. maybe you haven't. you know, not everybody's seen a massage table. \n\nkaren: what, do you think i've never had a massage before? \n\ngeorge: anyway, i don't even get a thank you. i don't get it! \n\nkaren: george, frankly, i'm getting a little tired of hearing about her. \n\ngeorge: i wanna know what i did to this woman. \n\nkaren: what, you got a little thing for her? \n\ngeorge: no, no! she's going out with a friend of mine. it's only courteous that we should try and like each other. \n\nkaren: what difference does it make? who cares if she doesn't like you? does everybody in the world have to like you? \n\ngeorge: yes! yes! everybody has to like me. i must be liked! \n\n[setting: elaine's apartment] \n\nelaine: of course i support your decision to change your name. \n\njoel: after the giant game i realized that this--this problem isn't going away. \n\nelaine: well, listen, i just want you to know that i was more than willing to stick it out with joel rifkin. \n\njoel: sure? \n\nelaine: (she fakes a strangling) rrr... \n\njoel: o.k. you got your list? \n\nelaine: yeah. yeah. 10 names. \n\njoel: right. \n\nelaine: o.k. and if somebody objects, you can just veto it. \n\njoel: o.k. \n\nelaine: o.k. you start. what's your first choice? \n\njoel: stuart. \n\nelaine: (right away) no. second choice. \n\njoel: stu--stuart's no good? \n\nelaine: i have never met a normal guy named stuart. \n\njoel: o-o.k. my second choice is... todd. \n\nelaine: (repeating to hear how it sounds) todd. (pause) no. veto. \n\njoel: all right. oh, hey, i think you're gonna like my first my third choice. \n\nelaine: great... \n\njoel: alex. \n\nelaine: i gotta tell ya, i have a bad association with the name alex. \n\njoel: bad bad association? \n\nelaine: yeah, in college i sat next to an alex in art history. and he was always drinking coffee and after every sip he would go \"ahh\". i mean every two seconds \"ahh\". and he would take like 40 sips and after everyone \"ahh\". i had to drop the class. \n\n[setting: jerry's place] \n\njodi: hey. \n\njerry: hi. \n\njodi: hi. (kiss) i was running late and i didn't have a chance to drop off my stuff before i came over. \n\njerry: ah, no problem. that's fine. \n\njodi: what's with this music? \n\njerry: that's new age music. sounds of the forest. i find it soothing. hey, look at this! what do you know? a massage table! this is great! (he starts to install the table) \n\njodi: what are you doing? \n\njerry: just checking it out. look at how this thing is made. can i tell you something? that's a hell of a piece of equipment. \n\njodi: actually, i should get a new one. \n\njerry: no, nonsense. this one's fine. (as he sits on the table) \n\njodi: so, where do you wanna go? (as she puts her hand on his shoulder) \n\njerry: go? why go anywhere? (as he places his hand over hers. she starts to massage his shoulders a little) ahh, that feels good. yeah. that's, uh... that's good. (he tries to go further. he grabs her hands over his shoulders and he lies down on the table on his chest) yeah, that's nice. that's very nice. \n\njodi: (she stops massaging) no. no, this isn't good. i can't do this. \n\njerry: why, what's wrong? (he grabs her hands and force her to keep them on his shoulders) \n\njodi: i can't (she tries harder to pull her hands away) \n\njerry: no. yes you can. (he hangs on) \n\njodi: no, i can't! \n\njerry: come on! i know it's something you wanna do! (she pulls harder and he falls right off the table) \n\n[setting: karen's place] \n\ngeorge: you know what? i should really go talk to her. nothing confrontational. just two adults sitting down trying to clear the air. you know, i just know if i could spend some time alone with her. i've got to. (he grabs his jacket) i've got to. \n\nkaren: you're going now? \n\ngeorge: i think i can still catch her. \n\nkaren: all right george. i have had just about enough of this. \n\ngeorge: what? what are you talking about. \n\nkaren: i am talking about you and jodi. you're completely obsessed with her! \n\ngeorge: i know. i know. \n\nkaren: who is more important to you, her or me? i like you, she doesn't. who are you gonna pick? \n\ngeorge: (he thinks a little about it... and as he puts his hand on his knee and gets up) i'm sorry karen. i know i care for you, but i just can't stand when someone doesn't like me. (he opens the door) \n\nkaren: well, now i hate you! \n\ngeorge: that i'm used to. (he leaves) \n\n[setting: back to elaine's place] \n\njoel: ned? \n\nelaine: what is wrong with ned? \n\njoel: ned's a guy who buys irregular underwear. next! \n\nelaine: ellis. \n\njoel: ellis?! you might as well go with alex. it's the same thing! \n\nelaine: ellis and alex aren't even close. \n\njoel: next! \n\nelaine: ohh, what is the point? \n\njoel: no, no. come on! \n\nelaine: o.k. o.k. remy. \n\njoel: remy rifkin? should i get a beret? \n\nelaine: oh, stuart's a lot better! (talking like a baby) little stuart rifkin likes to go shopping with his mother. \n\njoel: grrrr! \n\n[setting: back to jerry's] \n\njerry: what do you mean, no? \n\njodi: no means no. \n\njerry: look, who are you kidding? you come up to my apartment with your table and your little oils, and i'm not supposed to expect anything? you're a massage teaser. \n\njodi: listen. i massage who i want, when i want. i don't submit to forcible massage. (he tries desperately to get her hands on his shoulders again but she pulls them away immediately) i'm getting out of here. \n\njerry: fine. go. \n\ngeorge: jerry, could you excuse us for a few minutes, please? \n\njerry: what for? \n\ngeorge: we need to talk. \n\njerry: you need to talk? \n\njodi: we have nothing to talk about. \n\ngeorge: look it's no secret what's going on between us. (to jerry) she doesn't like me. now jerry if you don't mind. \n\njerry: george, anything you have to say to her, you can say in front of me. \n\ngeorge: (he makes a sign to jodi to wait and turns to jerry) jerry... this woman hates me so much. i'm starting to like her. \n\njerry: what? \n\ngeorge: she just dislikes me so much... it's irresistable. \n\njerry: i can see that. \n\njodi: i'm getting out of here. (to jerry) don't call me. \n\njerry: don't worry. (she leaves) \n\ngeorge: a woman that hates me this much comes along once in a lifetime. \n\njerry: you're a lucky guy. \n\ngeorge: i got to go after her. \n\njerry: george. i wouldn't push for the massage. (george nods) \n\ngeorge: jodi! (he starts running after her) \n\njerry: the swedish are very big massagers. you know? they like the swedish meatballs, swedish massage. they like having meat in their hands these people, for some reason. but it's weird because they have the highest suicide rate, they're rubbing each other's necks all the time for a neutral country they seem kinda tense. i don't really like the idea of getting a professional massage. i don't want people touching me that don't know me and don't want to have sex with me. you know what are you bothering me for? you get me all loosened up, juices flowing, and then that's it ok, you're done. it's like having chocolate rubbed all over your face, you know you wanna go \"excuse me, i think you missed a spot.\" \n\njerry: you can always tell what was the best year of your father's life, because they seem to just freeze that clothing style and just ride it out to the end, don't they? and it's not like they don't continue shopping, it's just they somehow manage to find new old clothes. every father is like this fashion time capsule, you know what i mean. it's like they should be on a pedestal, with someone next to 'em going 'this was nineteen sixty-five'. to me the worst thing is shopping for pants. i hate dressing and undressing in that little room. what men need is a place to shop where you go in, you check your pants at the door, and you just walk around the store in your underwear. that would be the best way. then you'd really have to lie to the salesman. 'need some help?' 'no, just getting some air.' \n\njerry: how would you describe the smell in this house? \n\nelaine: (sniffing) dandruff? \n\njerry: yeah, that's part of it. (sniffs) kasha? \n\nelaine: there's some kasha. \n\njerry: yeah. dandruff, kasha, mothballs, cheap carpeting. it's pot pourri, really. \n\nelaine: alright, let's go, come on. \n\ngeorge: wha... you're going? \n\nelaine: yeah. you know we shouldn't have bowled that last game, i'm gonna be late. \n\nkramer: egh. these aren't candies. \n\ngeorge: wha? did you use those? these are guest soaps! (he grabs the soaps and begins examining them for damage) \n\nkramer: well i'm a guest. \n\ngeorge: now my parents are gonna know i had people over. \n\njerry: you're not allowed to have people over? \n\ngeorge: i can't have any parties while they're out of town. (he leaves to return the soaps) \n\nkramer: what, this is a party? \n\nelaine: not any more. come on, get your ball, we're leaving. let's go, let's go. \n\ngeorge: (yells) wow! who put this cup right on the new table! \n\njerry: (picks it up) i was having coffee, i put it on the coffee table. \n\ngeorge: but you didn't use a coaster, jerry, you left a stain! (he runs to kitchen) \n\nkramer: whoah boy. there's always one at every party, huh? \n\nelaine: (impatient) come on! \n\njerry: what's the big rush? \n\nelaine: i'm having people over. \n\njerry: who? \n\nelaine: the girls for poker night. you know, joanne, renee, winona... \n\njerry: eh, eh, ah. winona's gonna be there? \n\nelaine: yeah. and she broke up with the vitamin guy. \n\njerry: (interested) really? \n\nelaine: i'll put in a good word for you. \n\njerry: thanks, because i would really like... (distractedly puts coffee cup back on the table) \n\ngeorge: (screaming) aaahh!! \n\njerry: alright, i'm sorry. i'm sorry. (picks it up again) \n\ngeorge: but jerry, this is not coming out! \n\njerry: just put a coffee table book over it. \n\ngeorge: my parents don't read! they're gonna wonder what a book is doing on the table! \n\nkramer: hey, hey, hey, hey. you know what would make a great coffee table book? a coffee table book about coffee tables! get it? \n\nelaine: got it! c'mon, let's go, let's go. bye george. \n\ngeorge: wait, wait wait, not so fast. jerry, you gotta take me to get this thing refinished. \n\nelaine: now?! \n\ngeorge: yes, now. it's gonna take a few days and my parents are gonna be back. i gotta have it back before them! \n\nelaine: jerry, you promised you'd get me home by seven. \n\nkramer: alright, we'll take the subway. \n\njerry: there you go. that'll get you home in time. \n\nelaine: oh! the subway? from queens? \n\ngeorge: alright, jerry, i'm gonna get my coat. \n\njerry: i'm sorry elaine, i'll make it up to you. \n\nelaine: i need something to read on the subway. \n\njerry: (handing her a magazine) here, read this. \n\nelaine: (looks at it) tv guide? \n\nkramer: like a history of coffee tables, celebrities and their coffee tables. it's a natural. this is a story that must be told. \n\nelaine: (engrossed in magazine) hmm-mmm. \n\nkramer: so, you're gonna talk to your boss about it, huh? \n\nelaine: (still paying no attention) hmm-mmm. first thing in the morning. \n\nkramer: (claps hands) yes indeed. \n\ntannoy (v.o.): next stop, queensboro plaza. \n\nkramer: oh, queensboro plaza. (reties his shoelaces) this stop is famous for its gyros, you want one? \n\nelaine: how are you gonna get something and get back on the train in time? \n\nkramer: well, they got a stand right out on the platform. gyros are cooked, and wrapped, and ready to go. (he pulls money from his pocket) three dollars, no change. you want one? \n\nelaine: (laughing) no thanks. \n\nkramer: alright, but no bites. \n\nricky: highlighter? \n\nelaine: excuse me? \n\nricky: to highlight the programmes you plan to watch. \n\nelaine: ah. uh, look really (looks about to try and avoid contact) i'm just trying to read. \n\nricky: fine, okay. it's just, i've never seen a beautiful lady reading 'the guide' so far away from a tv. you must really like television. \n\nkramer: (yells) elaine! \n\nricky: guess your boyfriend'll have to catch the next train. \n\nelaine: he's not my boyfriend. \n\nricky: he's not? (thoughtful) interesting. \n\njerry: hey, maybe i should get elaine something. \n\ngeorge: why? \n\njerry: ah, you know, i didn't drive her home. plus, i give her a gift in front of winona, how does that hurt me? \n\ngeorge: can't hurt you. \n\njerry: what about, what about this thing? \n\ngeorge: the indian? \n\njerry: yeah. you know, kind of a peace offering. cute. \n\ngepetto: well, i can have the table ready for you on monday. \n\ngeorge: alright, but no later, because my parents are coming back. \n\ngepetto: they left you home alone, huh? \n\nricky: oh, 'kay, see. on this particular tuesday (he swaps seats and sits beside elaine) you could've watched six hours of lucy. there's i love lucy, the lucy show, here's lucy. \n\nelaine: oh, (nervous laugh) my stop. (making her escape) bye-bye. \n\nricky: (after elaine) hey miss! (waving tv guide) you forgot this! \n\ngepetto: they don't make these any more. the work is, is all done by hand. (sylvia enters the store behind him) takes years, and years, and... (notices) sylvia! for crying out, you're forty-five minutes late! \n\nsylvia: yeah, yeah. (to george, smiling) is that your car out there? \n\ngeorge: no, it's, it's his. (indicates jerry) \n\nsylvia: oh, nice. you guys are obviously from manhattan. \n\ngeorge: well, he is. i, uh, i live around the corner. \n\nsylvia: really? ah, i didn't think any cool guys lived in this neighborhood. \n\ngeorge: (sensing his chance) well, they do now. neighborhood's changing. \n\njerry: alright, i'll take it. \n\ngepetto: smart choice. \n\nsylvia: wow, you bought the indian? oh, you guys have great taste. \n\ngeorge: well, we're collectors. we, uh, see objects of great beauty and, uh, we must have them. \n\nelaine: knocked you out jack. pair of deuces \n\nthe girls: (disappointed) oh/aah. \n\nelaine: (triumphant) ha, ha, ha ha! \n\nelaine: who is it? \n\njerry (o.c.): it's jerry. \n\nelaine: jerry! \n\njerry: surprise! (he carries in the object) \n\nelaine: what is this? \n\njerry: well, i felt bad about this afternoon, so i got you something. \n\nelaine: oh, you did? (to girls) oh, do you guys all know jerry? \n\nthe girls: hi jerry/hello. (etc) \n\njerry: hi. hi winona. nice to see you again. \n\ngirl (not winona): elaine, is it your birthday? \n\nelaine: no. \n\njerry: i don't need a reason to give gifts, it's my nature. i love to make people happy. \n\nthe girls: aww/that's so sweet. (general murmur of approval) \n\njerry: are you ready? \n\nelaine: yeah. \n\njerry: (whips off bag to reveal indian) ta-da! \n\njerry: it's a cigar store indian. (to elaine) read the card. \n\nelaine: (examines card; embarrassed) that's very nice. thank you very much. \n\njerry: read it out loud. \n\nelaine: i, i don't think so. \n\njerry: (takes the card from elaine) we had a little fight this afternoon. (reading from card) let's bury the hatchet. we smoke um peace pipe. \n\nwinona: (gathering her stuff) hey, you know, it's late. i really should go. \n\nelaine: i, uh, i don't blame you winona. i, uh... \n\njerry: hey-yah, ho-ah, hey-yah, ho-ah. \n\nelaine: are you out of your mind?! \n\njerry: ...ho-ah. it's, it's, it's kitschy. \n\nelaine: winona is a native american. \n\njerry: she is? \n\nsylvia: you got very unusual taste. \n\ngeorge: (proffering glasses) i hope prune juice is alright. it's the only thing i had that was chilled. \n\nsylvia: fine. \n\ngeorge: i'm sorry about that lock on the liquor cabinet. the combination musta just flown outta my head. it's a mental block. \n\nsylvia: (regarding photo) ahh! is this your son in the bubble bath? \n\ngeorge: (bashful) no, that's me. \n\nsylvia: oh. you don't see many guys your age who keep baby pictures of themselves around. (laughs) i like it. consistent with the rest of the house. \n\ngeorge: yes, it is consistent. i've, uh, i've tried to maintain a consistent feel throughout the house. \n\nsylvia: what is this we're listening to? \n\ngeorge: the ray conniff singers. (nervous chuckle) \n\nsylvia: mmmm, what's that smell? kasha? \n\ngeorge: it's a pot pourri. may i, uh, may i show you the master bedroom? (they leave together) \n\nwinona (o.c.): who is it? \n\njerry: uh, winona, it's jerry seinfeld. \n\nwinona: (unimpressed) yeah? \n\njerry: uhm, listen, i really felt bad about what happened, and i, i, i'd really like to apologise. can i come up? \n\nwinona: i'll come down. \n\nkramer: i came by to get my ball. \n\nelaine: it's right over there. \n\nkramer: oh, yeah, thanks. (gets ball) yeah, it's got the magic grip. how d'you think i bowled that two-twenty today, huh? (sees indian) yo! where did this come from? \n\nelaine: you want it? \n\nkramer: (unbelieving) i can have this?! \n\nelaine: yuh! you wanna lug it uptown, it's yours. \n\nkramer: oh. i'll lug. \n\nwinona: it's just that it's a very sensitive issue for me. \n\njerry: and well it should be. i think if you spent any time with me at all, you'd see i'm very sensitive to these matters as well. you wouldn't be hungry by any chance, wouldya? \n\nwinona: (smiling) i guess i could go for a bite. \n\njerry: you like chinese food, 'cos i once went to a great szechwan restaurant in this neighbourhood. i don't remember the exact address... (he spots a mailman crouched emptying a box) uh, excuse me, you must know where the chinese restaurant is around here. \n\nmailman: why must i know? because i'm chinese? you think i know where all the chinese restaurants are? (adopts hackneyed chinese accent) oh, ask honorable chinaman for location of restaurant. \n\njerry: i asked because you were the mailman, you would know the neighbourhood. \n\nmailman: oh, hello american joe. which way to hamburger, hotdog stand? (storms away) \n\njerry: i didn't know that... \n\nwinona: you know, it's late. i should probably just go home. \n\njerry: i, i had no idea. \n\nkramer: (yells) hey jerry! (thumps cab door with his palm) look what i got! (begins doing war-whoops) \n\ngeorge: looks pretty good. \n\njerry: yeah, did a good job. \n\ngeorge: yeah. i don't think they'll be able to tell. \n\njerry: you know, i don't get it. not allowed to ask a chinese person where the chinese restaurant is! i mean, aren't we all getting a little too sensitive? i mean, someone asks me which way is israel, i don't fly off the handle. \n\ngeorge: so, anyway, what's uh, what's the status with, uh... \n\njerry: ah, she kinda calmed down. i talked to her today. in fact i'm gonna see her tonight. \n\ngeorge: oh, great. \n\njerry: yeah, but i'm a little uncomfortable. i'm afraid of making another mistake. \n\ngeorge: aw c'mon. \n\nestelle: hello, hello! \n\ngeorge: (insincerely) ahh, hey you're home. hi. \n\nestelle: oh, the house looks very nice. \n\ngeorge: yeah, huh. \n\nfrank: where's the mail? \n\nestelle: hello jerry. \n\njerry: hello. \n\ngeorge: so, how was the trip? \n\nestelle: ah, your father... \n\nfrank: is there anything wrong with getting a receipt at a toll booth? \n\nestelle: i'm going upstairs. (she leaves for the bedroom) \n\nfrank: (examining mail) this stack should be bigger, where's the tv guide? \n\ngeorge: what tv guide? \n\nfrank: i'm missing tv guide volume forty-one, number thirty-one. \n\njerry: uh, elaine took it to read on the subway. \n\nfrank: elaine took it? \n\ngeorge: i didn't know she took it! \n\njerry: wa, it's two weeks old. \n\nfrank: (shouting) how could you let her take the tv guide?! \n\ngeorge: (to jerry) he collects them. \n\njerry: you collect tv guide? \n\nfrank: the nerve of that woman. walking into my house, stealing my collectible! \n\nestelle: (screaming) oh my god! (she enters holding a small packet) this was in our bed. \n\nfrank: (taking the packet) what is this? (accusingly to george) a prophylactic wrapper?! \n\nestelle: what is this doing on my bed?! \n\ngeorge: i don't know, uh... \n\njerry: i'll see you later. (he leaves with unseemly haste) \n\nfrank: you were having sex on our bed?! \n\ngeorge: yes! \n\nestelle: who told you, you could have sex in our bed? \n\ngeorge: (pleading) well, my bed is too small. \n\nfrank: your bed is too small? i'm gone two weeks and you turn our house into, into bourbon street! \n\nestelle: where am i going to sleep? \n\ngeorge: what are you talking about? \n\nestelle: i can't sleep in there! \n\ngeorge: of course you can. \n\nestelle: i can't! (screams) i can't! \n\nfrank: that's it! you're grounded! \n\ngeorge: (incredulous) you can't ground me, i'm a grown man. \n\nfrank: you wanna live here? you respect the rules of our house. (yells) you're grounded! \n\nwinona: so, where are we gonna go eat? \n\njerry: i thought we'd eat at the gentle harvest. \n\nwinona: ooh, i love that place, but it's usually so crowded. can we get a table? \n\njerry: ah, don't worry. i made reser... (catches himself) \n\nwinona: you made what? \n\njerry: i uh, i uh, i arranged for the appropriate accommodations. and then, knick tickets, floor seats. \n\nwinona: how did you get these? \n\njerry: got 'em on the street, from a scal... (catches himself again) \n\nwinona: from who? \n\njerry: a uh, one of those guys. \n\nwinona: what guys? \n\njerry: you know, the guys, that uh, they sell the tickets for the sold-out events. \n\nwinona: oh. \n\njerry: wait a second, you got the mark mcewan tv guide. \n\nwinona: that's al roker. \n\njerry: oh well, they're both chubby weathermen. i get dom deluise and paul prudhoe mixed up too. could i have this? \n\nwinona: sure, take it. \n\njerry: thanks. \n\njerry: so, winona had the tv guide. told you i'd make it up to you. \n\nelaine: aah, so mr costanza was pretty mad, huh? \n\njerry: yeah. you almost ruined his life's work. \n\nelaine: he collects (holds up magazine) these? \n\njerry: yeah. \n\nelaine: wow! alright, well i will personally go out to queens and deliver his al roker tv guide to him. \n\njerry: what'ya do with the one you took? \n\nelaine: i dunno. \n\nelaine: hi. \n\nkramer: yeah uh, elaine uh, what'd he say? \n\nelaine: what did who say? \n\nkramer: your boss. didn't you tell him about the coffee table book? \n\nelaine: uhmm... \n\nkramer: yeah, you didn't tell him didya? \n\nelaine: kramer, it is such a dumb idea. i would be (raising her voice as kramer speaks his line) totally embarrassed to bring it... \n\nkramer: (simultaneous) wait a minute, on the cover i'm... \n\nelaine: i would be embarrassed to bring it up. \n\njerry: i thought it was a pretty good idea. it's about coffee tables, it's on a coffee table. \n\nkramer: yeah, right, right, and on the cover is a built-in coaster. (clicks tongue) alright, well i'm gonna go. \n\njerry: where you going? \n\nkramer: well, i'm gonna go to the cigar stores. i'm gonna see if i can sell that indian. \n\njerry: my indian? \n\nkramer: you know, i think it's worth something. it's kitschy. (tongue click) \n\nfrank: how do you just walk into a house and take a tv guide? how does she expect you to watch tv? (doorbell rings) am i just supposed to turn it on and wander aimlessly around the dial? \n\nricky: hello. is elaine home? \n\nestelle: elaine benes? oh, she's my son's friend. \n\nfrank: (shouting) and she's not welcome in this house! \n\nricky: (entering) oh, 'cos i made her this very special gift. 'kay, it's a bouquet of paper from her tv guide. \n\nfrank: (yelling) that's my tv guide! ripped to shreds! she gave that to you?! \n\nricky: (seeing tv) hey, is that the twilight zone you're watching? \n\ngeorge: yeah. \n\nricky: oh, this is a good one. \n\ntannoy (v.o.): next stop, queensboro plaza. \n\nelaine (v.o.): mmm, gyro. \n\nwinona: i like your place. it's very unassuming. \n\njerry: well, why would i assume. i never assume. leads to assumptions. \n\nwinona: (laughs) oh, by the way. that tv guide i gave you, i need it back. \n\njerry: why? \n\nwinona: well, i'm doing a report on minorities in the media, and i wanted to use that interview with al roker. \n\njerry: well, it's too late. i gave it to elaine, and she's already on her way to give it to george's father. \n\nwinona: jerry, i really need it back. it, it is mine. \n\njerry: you can't give something and then take it back. i mean, what are you... (catches himself) \n\nwinona: what? \n\njerry: a uh, a person that uh... \n\nwinona: a person that what? \n\njerry: well, a person that gives something and then they're dissatisfied and they wish they had, had never uh... \n\nwinona: and? \n\njerry: ...give, given it to the person that they originally gave it to. \n\nwinona: you mean like, an indian giver?! \n\njerry: i'm sorry, i'm not familiar with that term. \n\nricky: i like the special fall preview issues the best. \n\nfrank: those. i've been saving those from the beginning. \n\nricky: these are worth like, a lot of money. \n\nestelle: oh, hello elaine! \n\nelaine: hello. (she enters) \n\nricky: (jumping to his feet) elaine! hello! you look scrumptious. \n\nfrank: why'd you take my tv guide? \n\nelaine: (placatory) i'm so sorry about that mr costanza, but look. look, i brought you another one. (hands it over) \n\nricky: i made this for you. \n\nelaine: (accepts reluctantly) oh, thank you. \n\nfrank: (examining magazine) what is this? you got stains all over it! what the hell'd you do? \n\nricky: hey, you can't talk to her like that. \n\nfrank: (yelling) i'll talk to her any way i want! \n\nricky: come on elaine, let's go. \n\nestelle: my coffee table! \n\nkramer: i don't understand. how can you have a cigar store, without an indian? it's unseemly. \n\nspike: i'll give you a box of coronas for it. \n\nkramer: forget it. \n\nlippman: uh, excuse me. are you uh, selling this indian? \n\nkramer: oh yeah, yeah. \n\nlippman: uh, i'm just uh, redecorating my office in a south-western motif and this'd be perfect. give you five hundred dollars for it? \n\nkramer: giddyup. \n\nlippman: yeah? could you help me bring it up to my office, i'm right next door. pendant publishing. \n\nkramer: pendant publishing? giddyup again. \n\nelaine: mr lippman. i'm sorry, i was in queens uh... (sees kramer) kramer! \n\nkramer: yeah, hi elaine. \n\nelaine: what are you doing in here with that? \n\nkramer: ah, well, it's a business transaction. \n\nlippman: (entering, smoking a cigar and with a handful of cash) listen uh, petty cash just had tens and twenties. (hands cash to kramer) go ahead, count it. \n\nkramer: yeah, i'm sure it's all here. (puts in in his pocket) you know i was just admiring your coffee table, out there in the hall. \n\nlippman: you like that, huh? i had that custom made for me in santa fe. \n\nkramer: you mind if i use it in my book? \n\nlippman: what book? \n\nkramer: well, i'm doing a coffee table book on coffee tables. \n\nlippman: about coffee tables? \n\nkramer: uh huh. \n\nlippman: that's fantastic. (elaine looks gobsmacked) who's your publisher? \n\nkramer: well, i'm still shopping it around. \n\nlippman: yeah? (to elaine) you see, this is the kind of idea you should be coming in with. what the hell do you do round here all day anyway? \n\nelaine: well i (indistinct) ...manuscript that i... \n\nlippman: (ignoring elaine) god, that indian really completes the room. don't you think? \n\nsylvia: i know this coffee table, it's george costanza's. \n\nestelle: it's mine. i'm his mother. \n\nsylvia: oh, i haven't seen george for a while. he must be working very hard. \n\nestelle: george doesn't work. he's a bum. that's why he lives at home with us. \n\nsylvia: he does? \n\njerry: i don't know why we didn't think of this before. we just could call tv guide. \n\nelaine: i dunno. \n\njerry: well, it's gonna make mr costanza very happy. (he hands the magazine to elaine) \n\nelaine: i guess. \n\njerry: what's the matter? \n\nelaine: what d'you think is the matter? i've been assigned to work on kramer's coffee table book. \n\njerry: it is a good idea, elaine. \n\ntannoy (v.o.): next stop, queensboro plaza. \n\njerry: you want a gyro? \n\nelaine: i don't think so. \n\n[subway train: moments later] \n\njerry: elaine! \n\nal roker: guess your boyfriend's gonna have to catch the next train. \n\nelaine: he's not my boyfriend. \n\nal roker: he's not? interesting. (gives a big grin) \n\njerry: i was always excited as a kid, when that new tv guide would come. somehow when that front cover's nice and flat, seems like there's good fresh tv shows in. then, as the weeks go by you start to hate the tv guide. all the shows stink. everything's getting all crumpled and ripped from being sat on, thrown across the room. tv guide is always thrown, never handed, to another person. it's the world's most thrown reading material. 'where's tv guide?' (mimes throwing) 'there it is.' you know in the back of the tv guide, they have a phone number, ninety-five cents a minute, they will give you the answers to the tv guide crossword puzzle? my question is, if you can't do the tv guide crossword puzzle, where are you coming across ninety-five cents? \n\njerry: you know doctor is supposed to be such a prestigious occupation. but its really like one of the only jobs where you have to have your diploma right up there on the wall. it makes them seem so insecure, doesnt it? \"i really am a doctor you know. you think im not, just check it out.\" i dont know why they need these little bits of psychological leverage over us all the time. \"go in that little room, take your pants off, wait 15 minutes, and ill give you my opinion.\" after that, anyone that comes in with pants on seems like they know what theyre talking about. in any difference of opinion, pants always beats no-pants. \n\ngeorge: can i say one word to you? lobster. the lobster here is unbelievable. (looks at the menu) ooh, a little expensive. \n\nsasha: twenty five dollars. \n\ngeorge: yes, well, you know, im not thinking about the price. you know youre the only woman ive never thought about the price. get the lobster. i beg you to get the lobster. go for the lobster. \n\nsasha: george, george, uh, i think we have to talk. i think we have a problem. \n\ngeorge: we do? \n\nsasha: we cant keep seeing each other. \n\ngeorge: why? \n\nsasha: (crying) because its over. (sob, sob, sob) its my parents george, the differences in our religion. oh george, can you ever forgive me? (sob) \n\nwaiter: uh, have you decided yet? \n\nsasha: (crying) yes. ill have the lobster. \n\ngeorge: um, you know im starting to think that maybe lobster isnt the way to go. \n\njerry: then he asked you out? \n\nelaine: we started to talk, and i told him that i jog, and then he put his hand on my heart. \n\njerry: on your heart? \n\nelaine: jerry, the man is a doctor. \n\njerry: doctor? hes a podiatrist. \n\nelaine: so, its the same thing. \n\njerry: anyone can get into podiatry school. george got into podiatry school. \n\nelaine: really? \n\ntawni: hello. \n\njerry: oh hi. \n\ntawni: are you going to be stopping by later? \n\njerry: yes, ill be stopping. \n\ntawni: ok, see you later. \n\njerry: see you later. (to elaine) well we cant all be dating podiatrists. (elaine laughs) \n\ngeorge: its over. \n\nelaine: what? \n\njerry: how did you get in? \n\ngeorge: kramer. \n\nelaine: whats that? (points at some foil on the table) \n\ngeorge: lobster. \n\njerry: looks like a swan. \n\ngeorge: she says we cant go out anymore. \n\nelaine: why? \n\ngeorge: because im not latvian orthodox. her parents wont let her get involved with anyone who isnt latvian orthodox. \n\nelaine: latvian orthodox? (gasps) mmm, it is lobster. \n\njerry: shes limiting herself to latvian orthodox? too bad. \n\ngeorge: i know. this was the only woman i never lied to. well thats not entirely true. \n\njerry: oh, whatever. \n\nelaine: mmm, this is delicious. \n\njerry: mmm, succulent. \n\ngeorge: she knew i didnt have a job, she knew i lived at home. didnt seem to bother her. i think i could have married this woman. \n\nelaine: why dont you just ask her parents? \n\ngeorge: i cant. i met them. theyre devout. you know, in the cab on the way over here, i actually thought about converting. \n\njerry: to latvian orthodox? \n\ngeorge: why not? what do i care? \n\njerry: you know its not like changing toothpaste. \n\nelaine: i think it would be romantic. \n\ngeorge: really? \n\nelaine: yeah, its like edward the eighth abdicating the throne and marrying mrs. simpson. ooh. \n\ngeorge: king edward. (snapping his fingers) king edward, jerry. \n\njerry: yeah well king edward didnt live in queens with frank and estelle costanza. \n\ngeorge: you know what? i could probably do this. whats the difference. \n\nelaine: george i was just kidding around. \n\ngeorge: no. i wouldnt even have to tell her. i could surprise her. \n\nelaine: george i wasnt serious. \n\ngeorge: how hard could it be? you make a little contribution, you have a ceremony. i am going to think about this. i am really going to think about this. \n\nelaine: i guess this one is my fault. \n\njerry: oh yeah. \n\ntawni: (kiss, kiss, kiss) oh that was nice. have you always been such a good kisser? \n\njerry: oh i dont know. not always. no i uh i had to work at it. when i was a kid all the kids would be out playing, i would be up in my room practicing my kissing. \n\ntawni: well it was worth it. (kiss) ill be (kiss) right (kiss) back (kiss). where are you going? \n\njerry: to wash my hands. theyre sticky from the orange. \n\ntawni: meet you back here? \n\njerry: right there. \n\njerry: (thinking to himself; picks up a tube) \"fungicide\". fungus? \n\njerry: fungicide. i mean what could she have? \n\nelaine: i dont know. \n\nkramer: fungus. \n\njerry: exactly \n\nelaine: so what did you say? \n\njerry: i said i was coming down with the flu or something and i had to go home. \n\nelaine: i don't know, what were you doing opening her medicine cabinet? \n\njerry: i didnt open it. it was open. i just nudged it a little. \n\nelaine: you were snooping. \n\njerry: i was not snooping. i did not break the seal. there was no breaking and entering. i wouldnt do that. \n\nkramer: i would. i always open medicine cabinets. \n\nelaine: well i trust people not to do that. \n\nkramer: big mistake. \n\njerry: why dont you ask that doctor what it is? \n\nelaine: what? now hes a doctor? before he was a podiatrist. \n\njerry: but thats what podiatrists do. they deal in fungus. theyre knee- deep in fungus. this guy knows fungus. \n\nelaine: i am not going to ask him about funguses. \n\nkramer: fungi. \n\njerry: what? \n\nkramer: fungi. \n\nfather-priest: why do you want to accept the latvian orthodox faith? \n\ngeorge: (ahem) in this age of uncertainty and confusion, a man begins to ask himself certain questions. how can one even begin to put into words something so um (trying to think of a word) \n\nfather-priest: enigmatic? \n\ngeorge: no. \n\nfather-priest: vast? (he pronounces it as \"vost\") \n\ngeorge: no not vast (he pronounces it as \"vost\") \n\nfather-priest: well whatever it is, basically you like the religion. \n\ngeorge: yes. \n\nfather-priest 2: is there one aspect of the faith that you find particularly attractive? \n\ngeorge: (he thinks) i think the hats. the hat conveys that solemn religious look you want in a faith. very pious. \n\nfather-priest: are you familiar with orthodox theology? \n\ngeorge: well perhaps, not to the extent that you are. but i know the basic plot. yeah. \n\nfather-priest: plot? \n\ngeorge: yes. you know the uh flood, and the uh lepers, and the commandments and all that. \n\nfather-priest 2: well its obvious that you are sincere in your desire. \n\ngeorge: oh yes i am father. incredibly sincere. so, uh, pffft, am i in? \n\nfather-priest: the first step would be to familiarize yourself with these texts (brings out a pile of books). \n\ngeorge: ah hah. you see father, im im incredibly anxious to become a member. um, dont you offer any kind of an express conversion? a quick change? \n\nsister roberta: oh im sorry. father, theres a man waiting in the chapel. \n\nfather-priest: you may attend to it sister, oh this is george costanza. he is interested in joining the church. \n\nsister roberta: oh are you? thats wonderful. well good luck to you. \n\ngeorge: nice nun. \n\nfather-priest: no, sister roberta is not a nun. she is what we call a novice. \n\nfather-priest 2: she wont be taking her final vows until next thursday. \n\nsister roberta: may i help you? \n\nkramer: oh yeah, im here to pick up my friend george costanza. \n\nsister roberta: well hes in with the father. \n\nkramer: oh yeah. \n\nsister roberta: im sister roberta. \n\nkramer: oh. kramer. pleasure. \n\nsister roberta: mine. (she smiles at kramer) \n\ngeorge: i cant believe how easy it is. im virtually orthodox. all i have to do is read a few books, memorize a few prayers, and im in the club. \n\njerry: thats all there is to it. \n\ngeorge: thats all there is to it. by christmas day i will be brother costanza. \n\njerry: and when is brother costanza planning on telling mother costanza? \n\ngeorge: brother costanza will be taking the vow of silence. \n\njerry: oh a slinky. \n\nkramer: sister roberta gave it to me. \n\njerry: why did she give you that? \n\nkramer: i think she liked me. \n\njerry: what do you mean she liked you? \n\nkramer: liked me. \n\ngeorge: kramer, they like everybody. theyre friendly people. \n\nkramer: no. i think i picked up on a vibe. \n\njerry: you picked up on a vibe, from a nun. \n\nkramer: yeah, jerry im telling you i have this power. and i have no control over it. \n\njerry: yea alright. \n\nkramer: oh, that's my phone. \n\njerry: oh hi. \n\ntawni: hi, i just wanted to stop by and see how you were feeling. \n\njerry: (weakly) a little better. (fake cough) \n\ntawni: if you need anything let me know. \n\njerry: okay. \n\ntawni: okay. \n\njerry: all right. \n\ntawni: bye. \n\njerry: bye. \n\ngeorge: story. \n\njerry: shes subletting carols place for a month. \n\ngeorge: yea, she likes you. \n\njerry: yeah but theres a problem. i found a tube of a fungicide in her medicine cabinet. \n\ngeorge: so? \n\njerry: so i dont know what shes using it for. \n\ngeorge: well how do you even know its hers? maybe it belonged to carol. did you see a name on the tube? \n\njerry: i didnt even think to look. \n\ngeorge: well take a look. it might not even belong to her. \n\njerry: yeah. \n\ngeorge: people always leave old things in their medicine cabinet. \n\njerry: yeah ive got this old bottle of cough medicine. \n\ngeorge: i still have brill cream. \n\njerry: hi \n\ntawni: hi. \n\njerry: hi. can i use your bathroom? \n\nelaine: you sure you dont mind? \n\ndoctor: no of course not. people ask me medical questions all the time. \n\nelaine: well i mean the question isnt even for me its for a friend. \n\ndoctor: elaine, im used to it. im a doctor. \n\nelaine: well podiatrist. \n\ndoctor: huh? \n\nelaine: no no, im just saying you didnt really go to medical school, you went to podiatry school. which im sure is very grueling in its own way. \n\ndoctor: i went to podiatry school because i like feet. i chose to work with feet. \n\nelaine: i like feet too. im just saying \n\ndoctor: saying what? \n\ntawni: how are you doing in there? \n\njerry: fine all done, just looking for the soap. \n\ntawni: no soap? \n\njerry: no i dont see it. \n\ntawni: (giving jerry the soap) here you go. \n\nestelle: george what are you doing in there? \n\ngeorge: what? nothing. \n\nfrank: youve been in there an hour. \n\nestelle: you dont feel well? \n\ngeorge: im fine. \n\nestelle: i want to know what youre doing in there. \n\ngeorge: nothing. \n\nfrank: george, open the door. \n\ngeorge: no. \n\nestelle: georgie. \n\ngeorge: no! \n\nkramer: hey. \n\nsister roberta: good evening. i hope im not disturbing you, but i found another toy i thought you might like. \n\njerry: okay, latvius was the son of which apostle? and ill need that in the form of a question. \n\ngeorge: i dont know. i cant believe theyre making me take this test. \n\njerry: hey, did you talk to the doctor? \n\nelaine: no. \n\njerry: all right, the next time you see him show him this. (he presents the bottle of fungicide.) \n\nelaine: you took her medicine. \n\njerry: not on purpose. i was hoping there would be a name on the tube. when are you seeing him again? \n\nelaine: i dont know. we got into this whole thing about how podiatrists arent real doctors. \n\njerry: how could you say that? \n\nelaine: its you fault. you just got me thinking. \n\njerry: i was merely speaking extemporaneously. \n\nelaine: ive got nothing against the foot. im pro-foot. \n\njerry: me too. \n\nelaine: do you think i should call him and apologize? \n\njerry: yes. hes a doctor. (elaine starts to leave. ) wait a second. (jerry puts the bottle of fungicide in elaines purse.) (to george) what are you doing? \n\ngeorge: what does it look like im doing? \n\njerry: (reading words george wrote on his hand) \"matthew, luke, paul\", what youre cheating on your conversion chest? \n\nkramer: i told you. \n\njerry: what? \n\nkramer: i told you she liked me. \n\njerry: who? \n\nkramer: sister roberta. \n\njerry: how do you know? \n\nkramer: she told me. she said shes never had a man stir up all of these feelings inside of her. shes questioning her faith. shes thinking of leaving the church. \n\njerry: wow \n\nkramer: oh, uh, this power. im dangerous jerry, im very very dangerous. \n\nfather-priest: i must say george, i was somewhat surprised at the results of your conversion test. i dont recall having seen such an impressive performance. you truly must be filled with the spirit of the lord. \n\ngeorge: oh, im im full of it father. \n\nfather-priest 2: (muttering something to father-priest 1) (mumble) kramer (mumble) \n\nfather-priest: yes, yes i see. (to george) im sorry something has come up. \n\ngeorge: oh, i understand. (george exits; sees kramer in the hallway) hey. \n\nkramer: (rushed) yea, hey. (kramer enters.) um, you wanted to see me father? \n\nfather-priest: yes. please, sit down. sister roberta came to see me yesterday. \n\nkramer: i know what this is about father. i didnt do anything. i just spoke to her innocently for just a few minutes. its just that, that i have this power. \n\nfather-priest: yes. kavorka. \n\nkramer: kavorka? \n\nfather-priest: it is a latvian word which means \"the lure of the animal\". \n\nkramer: i dont understand. \n\nfather-priest: women are drawn to you. they would give anything to be possessed by you. \n\nkramer: help me father. help me. \n\nfather-priest: yes, yes i will help you. listen very carefully. i want you to buy ten cloves of garlic, three quarts of vinegar, six ounces \n\njerry: what is that stench? i got it. (he follows the smell to kramers door) ah hah. \n\nkramer: hey. \n\njerry: hey. what are you doing? \n\nkramer: ive got the kavorka jerry. \n\njerry: the kavorka? whats that? \n\nkramer: the lure of the animal. im dangerous. \n\njerry: what is this thing around your neck? \n\nkramer: the priests theyre helping me. i just bathed in vinegar. \n\njerry: you know youre funcifying the whole building. \n\nkramer: keep away jerry. keep away. \n\njerry: kramer. (knock, knock, knock) kramer. \n\n[at the entrance of the church. there is a sign there. it reads: conversion ceremony - for - george costanza - 3p.m. the sign is on a black background with white stick-on letters.] \n\nwoman: george costanza? estelles son? \n\nestelle: latvian orthodox? why are you doing this? \n\ngeorge: for a woman. \n\nfrank: a woman? what are you out of your mind? \n\nestelle: why cant you do anything like a normal person? \n\nfrank: wait. is this the group that goes around mutilating squirrels? \n\ngeorge: no its a regular religion. \n\nfrank: im calling my lawyer. it might not be too late to get out of this. \n\ngeorge: i dont want to get out of it. \n\nestelle: bu george, you dont know what youre saying. youre under their control. \n\nfrank: what, they brainwashed you? \n\ngeorge: no no. \n\nfrank: youre not performing any rituals in this house. \n\nestelle: go back to the psychiatrist. i beg you. \n\nfrank: and stay away from those squirrels. \n\ntawni: oh how you doing jerry? \n\njerry: good. whats the matter? \n\ntawni: im tired. i hardly slept last night with all this scratching. bonkers was going crazy. \n\njerry: bonkers? \n\ntawni: my cat. hes got this weird sort of skin condition. some type of fungus, i couldnt find his medicine. \n\njerry: oh its your cat! \n\ntawni: what? \n\njerry: ooh, nothing. \n\nfather-priest: are you ready my son? \n\ngeorge: yes faddah. \n\nfather-priest: what did you say? \n\ngeorge: what? \n\nfather-priest: i thought you said faddah. \n\ngeorge: i said faddah, i meant father. just a little bit nervous. \n\nfather-priest: ooh, of course. \n\nkramer: how you doing? \n\nwoman: get away from me you creep. (she walks away.) \n\nkramer: yes, yes. it worked. sister roberta ive still got time to catch her. \n\nfather-priest: congratulations george. welcome to the faith. sister roberta would you please offer the final benediction. \n\nsister roberta: (hesitates) i cant. (crowd murmurs) im sorry. its a beautiful religion, but i am not worthy of it. i found something else. \n\nsister roberta: him. \n\ncrowd: kavorka, kavorka. \n\nelaine: (kiss, kiss) you know, because i love the foot. im a big fan of the foot. \n\ndoctor: well its my fault. i got a little defensive. \n\nelaine: and that pinkie toe, come on . how adorable is the pinkie toe. \n\ndoctor: its my favorite toe. \n\nelaine: lets face it, you get a bunion, where are you going? youre not going to the ear guy. \n\ndoctor: no youre not. \n\nelaine: ill be right back. \n\ndoctor: oh uh, wheres the bathroom? \n\nelaine: its right down here to the left. i will uh meet you right back here. \n\njerry: elaine its her cat. her cat had the fungus. so i need the tube back. \n\ndoctor: (thinking to himself) \"fungicide\"? fungus? \n\nsister roberta: somethings wrong. i dont feel the same lure. \n\nkramer: you dont? \n\nsister roberta: what have i? i must return to the church. by the way you really need to take a bath. you stink. \n\nkramer: yeah yeah. \n\njerry: but once you put medicine in your medicine cabinet you're never using it again. any medicine you're using, is on the sink. it's not really even a medicine cabinet, it's really like an ointment museum isn't it? it's like here's a saff from 1983, some cream from the 70s. but you want to keep it private, because a medicine cabinet is a place that reveals our weaknesses and it can really throw off the balance between two people that might be going out. somebody peeks in there, \"oh i see mr. perfect needs tough actin' tinactin. well i guess i'll be calling the shots in this relationship from now on.\" \n\nsasha: for me? \n\ngeorge: well i didnt do it for my mother. \n\nsasha: im really flattered. but i just dont feel ready to make a commitment yet. maybe when i get back from latvia. \n\ngeorge: latvia? \n\nsasha: yes. im going to stay with some relatives there for a year. isnt it great? \n\ngeorge: enjoy, enjoy. \n\nsasha: oh george, you are so sweet. dont ever change. \n\ngeorge: id like a doggie bag for this please. (hands her plate to the waitress) \n\njerry: the whale is supposed to be such an intelligent animal. you know you always here about how they can communicate by song from miles away. how extensive their vocabulary is. i would say from the rate we are pushing the whales off the beach back into the ocean the words shore and close do not appear to be in their vocabulary. i would say if the whales concentrate a little less on the singing and a little more on approaching quervo beach volleyball tournament. if you wanna maintain the brainy mammal image. \n\nelaine: oh, i can't believe this. what a dope! uh..excuse me umm.. i'm sorry this is.. this is kind of embarrassing but.. there's no toilet paper over here \n\njane: (from the stall on elaine's right) are you talking to me? \n\nelaine: yeah.. i i just forgot to check so if you could just spare me some. \n\njane: no i'm sorry \n\nelaine: what? \n\njane: no i'm sorry, i can't spare it \n\nelaine: you can't spare it?? \n\njane: no there's not enough to spare \n\nelaine: well i don't need much, just 3 squares will do it \n\njane: i'm sorry i don't have a square to spare, now if you don't mind \n\nelaine: 3 squares? you can't spare 3 squares?? \n\njane: no i don't have a square to spare, i can't spare a square \n\nelaine: oh is it two-ply? cause it it's two-ply i'll take one ply, one ply, one puny little ply, i'll take one measly ply \n\njane: look, i don't have a square and i don't have a ply (flushing and leaving) \n\nelaine: no no, no no, don't don't, i beg you \n\njerry: (eating pop corn) hmm i love this artificial flavoring i like it better than butter i think it's more consistent \n\njane: you would not believe what just happened to me in the bathroom \n\njerry: what? \n\nelaine: hey \n\ntony: hey. hey? where is my popcorn babe? \n\nelaine: what? \n\ntony: my popcorn, you were supposed to get me popcorn what? would you forget about me babe? \n\nelaine: you would not believe what just happened to me in the bathroom \n\njane: i mean.. a person needs a certain amount of toilet paper to be covered.. i simply could not spare it this woman just didn't get it, she kept harassing me \n\nelaine: 3 squares!! that's all i was asking for! 3 squares! \n\njane: she wouldn't stop \"help me! help me!\" she was insane \n\nelaine: i was begging her \"please! please!\" she was insane \n\njerry: who do you think she is? how dare she? you want me to get the manager? too bad they don't have those old ladies walking around with flashlights anymore we'd flush her out \n\njane: i don't know what she looks like \n\njerry: i wonder where elaine is sitting? i really wanted you to meet her she's supposed to be here tonight with her new boyfriend tony \n\nelaine: hmm where is jerry sitting? he's supposed to be here tonight with his new girlfriend i'm dying to see what she looks like \n\ntony: hey? you think if i jumped off that balcony i'd get hurt? \n\nkramer: hey \n\njerry: hey \n\nkramer: hey guy, can i use your phone in your bedroom? \n\njerry: what's the matter with yours? \n\nkramer: huh.. my batteries are dead \n\njerry: it's not one of those 976 calls, is it? \n\nkramer: look come on, let me use it, 5 minutes, i'll pay you back huh? \n\njerry: why do you do that? \n\nkramer: oh... (goes to the bedroom) \n\nelaine: i am never going back to the movies again \n\njerry: hey where were you last night? i looked for you, i didn't see you \n\nelaine: i looked for you too, i was all the way over on the side \n\njerry: oh with huh.. pretty boy.. tony \n\nelaine: yeah \n\njerry: hey hey (fooling around with his collar) \n\nelaine: yeah, all right ok \n\njerry: tony, hey hey (continues fooling) \n\nelaine: that's nice. listen, listen to this i am in the bathroom, right before the movie starts \n\njerry: huh huh \n\nelaine: i'm in the stall and there's no toilet paper \n\njerry: no what? \n\nelaine: toilet paper \n\njerry: oh.. whoa.. \n\nelaine: so i ask this woman in the stall next to me for some and she refuses! ha ha \n\njerry: well maybe she couldn't spare it \n\nelaine: a square? \n\njerry: well, you know, sometimes a square is everything \n\nelaine: a ply? \n\njerry: elaine, you cannot judge a person on a situation like that. i mean it's like asking for someone's canteen in the desert \n\nelaine: yeah \n\njerry: it's battle conditions \n\nelaine: yeah, well i just hope i run into her again ok, cause i will never forget that flinty voice, it is tattooed in my brain if i hear it, watch out so listen what happened with jane last night? \n\njerry: oh.. jane she uh.. she uh.. \n\nelaine: the four of us are going out saturday right? that should be fun \n\njerry: yeah that should be real fun \n\nelaine: you know what, it's getting late, can i call tony? \n\njerry: yeah \n\nwoman's voice on the phone: then we'll get a cab and we'll do it in the back seat.. how's that andre? \n\nelaine: andre? \n\nkramer: (on the phone) what about the driver? we could get an accident \n\nkramer: oh that wouldn't be very good \n\njerry: (on the phone) hey andre, get the hell off the phone! \n\nelaine: what, what is going on? what.. who is andre? \n\njerry: kramer's andre, he's fooling around with these 976 numbers (kramer walks out of the bedroom) hey i told you, i don't want you doing that on my phone \n\nkramer: jerry, i'm telling you, this phone sex thing is hilarious, like this woman erika, here look (showing the ad in the newspaper). you gotta call her, the voice she uses.. \n\njerry: hey you know it's weird because that voice sounded a little familiar to me \n\nkramer: hey, you're hungry? monk's? \n\njerry: no i gotta go downtown \n\nelaine: oh wait, you're giving me a lift home right? \n\njerry: yeah \n\nelaine: so listen, what happened last night with jane? \n\njerry: oh uh nothing, she just.. choked on a jujube \n\nelaine: you know i hate to tell you this, but it's time to defrost that freezer \n\njerry: i know, i just can't bring myself to do it meanwhile that freezer keeps getting smaller and smaller (she smiles) (elaine looks at her watch) oh, don't wanna keep tony waiting \n\nelaine: hey you got a problem with tony? \n\njerry: hunky.. tony.. hey hey hey (fools around with his collar again) \n\nelaine: ok, jerry, i would be going out with him no matter what he looked like \n\njerry: of course you would \n\nelaine: oh yeah, oh.. like you're one to talk \n\njerry: elaine \n\nelaine: what? \n\njerry: different for a man \n\nelaine: uh? \n\njerry: we're expected to be superficial \n\nelaine: i'm not being superficial \n\njerry: elaine, he's a.. he's a male bimbo, he's a mimbo \n\nelaine: he's not a mimbo, he's an exciting, charismatic man he just happened to have a perfect face \n\njerry: and that's why you're going out with him \n\nelaine: no it is not \n\njerry: you know, i think george has a non-sexual crush on him \n\nelaine: i think he does too \n\njerry: i mean, every time i see him, it's tony this, tony that. george is like a school girl around him \n\ntony: so i said uh.. \"hey dude, you better step off\" \n\ngeorge: \"step off\"? \n\ntony: yeah \n\ngeorge: you said \"step off\"? wow, that is too much hey..huh hey (george turns the cap his wearing backwards like tony) tony, i huh, i just had this brainstorm for us. can you guess what it is? \n\ntony: no \n\ngeorge: bowling! what do you say bowling? bowling's insane! bowling is crazy time \n\ntony: bowling? i don't think so george you get no rush from bowling \n\ngeorge: rush? you want a rush? drop a ball on your toe my friend, talk about a rush, you'll be throbbing, you'll see visions \n\ntony: no no no no, i'm thinking.. rock-climbing \n\ngeorge: all right! rock-climbing! j..just the 2 of us? alright! hey i'll make some sandwiches, what what do you like? tuna? peanut butter? \n\ntony: what.. whatever \n\ngeorge: alright alright, i gotta buy some bread \n\ntony: yeah yeah, you know i'm definitely down for some rock-climbing \n\ngeorge: me too, i am down, i am totally down, mark me down \n\ntony: cool, so what do you say we climb a rock maana? \n\ngeorge: uh.. maana? huh maana might.. huh maana might be a problem, i'm supposed to have huh a boil lanced maana. huh you know i think they charge me if i cancel with only one maana's notice \n\ntony: hey kramer \n\nkramer: hey \n\ntony: hey, hey kramer my man, what are you doing maana? \n\nkramer: maana i'm doing nada \n\ntony: what do you say you scale some rock with me and george? \n\ngeorge: uh tony? there's not gonna be too many sandwiches \n\ntony: c'mon kramer what do you say? \n\ngeorge: huh kramer it's huh.. gonna be pretty dangerous up there \n\nkramer: na, i am down \n\ntony: yes.. alright buddy, take it easy kramer you down to it george? what's wrong? \n\ngeorge: oh no, i am down! \n\nelaine: rock climbing? hehe.. where do you come off going rock climbing.. rock climbing? you need a boost to climb into your bed (elaine laughs) \n\ngeorge: alright alright \n\njerry: yeah yeah what is it with you and tony? what are you? it's like his sidekick now? \n\ngeorge: yeah that's right. i like it. he's such a cool guy \n\njerry: cool guy? what are you, in 8th grade? \n\ngeorge: he's the first cool guy i've ever been friends with in my whole life. you know.. it's a different world when you're with a cool guy, he's not afraid of anybody. you should hear the way he talks to waitresses.. he gets free pie! \n\nkramer: hey \n\ngeorge: hey nice move today \n\nkramer: what? \n\ngeorge: horning on my rock climbing trip. it's just supposed to be me and tony \n\nkramer: he asked me \n\ngeorge: you put him on the spot \n\nkramer: you know i think you are in love with him \n\ngeorge: what?.. that's ridiculous! \n\nkramer: no no no, i don't think so. you love him \n\ngeorge: you better be careful on those rocks tomorrow buddy. and you're not getting any sandwiches either \n\njerry: you're making sandwiches? \n\nkramer: hello \n\ngeorge: well i don't know if there's gonna be any place to eat up there \n\nkramer: who? \n\ngeorge: hey elaine, does tony like peanut butter? \n\nelaine: hates it \n\ngeorge: good thing i asked \n\njerry: (to kramer) who is it? \n\nkramer: well she says jane \n\njerry: yeah, so? \n\nkramer: well that voice, it's very familiar.. throaty, almost flinty \n\njerry: did you say flinty? \n\nkramer: yeah yeah, (in a flinty voice) flinty \n\nkramer: (singing) yodel lay hee hoo! yodel lay hee hoo! hello! (kramer jumps around george from one side to an other) \n\necho: hello \n\nkramer: hey george, hear that? \n\ngeorge: please please i don't want to die up here. please, stop moving that's all i'm asking.. kramer!! \n\nkramer: let go, hey grab the rock \n\ngeorge: what rock? \n\nkramer: the rock \n\ngeorge: uh oh.. \n\nkramer: you gotta relax.. try the yodel (chanting) yodel lay hee hoo \n\ngeorge: (sobbing) yodel lay hee hoo.. \n\nkramer: (chanting) yodel lay hee hoo \n\ngeorge: (sobbing) yodel lay hee hoo.. \n\ntony: (voice from below) george! kramer! \n\nkramer: yeah! \n\ntony: take the rope, thread it through the carabiniere and knot it, and i'll climb up to where you are \n\nkramer: alright.. george you got it? (gives him the rope) \n\ngeorge: yeah \n\ntony: hey george, you got anything to eat dude? \n\ngeorge: (taking it out of his jacket pocket) yeah i got some sandwiches.. i got tuna.. and salmon salad tony because i know you don't like peanut butter \n\nkramer: what? \n\ntony: dude aah....... \n\ngeorge & kramer: ahh.....!! \n\njerry: oh look at that i got oil all over me. can i have your napkin? \n\njane: what? \n\njerry: you napkin i'm dripping \n\njane: well where is your napkin? \n\njerry: i used it up \n\njane: well i need mine (looks at her watch) oh god loot at the time, i gotta get to work \n\njerry: you know i'd like to hear about this job of yours \n\njane: i told you already it's very boring you know i think i got a little too much garlic, can i have a piece of gum \n\njerry: you're fine (goes to the bathroom) \n\njane: oh how does this thing work? \n\njerry: just press it \n\nelaine: it's elaine \n\njane: oh come on up \n\njerry: (coming out from the bathroom) who was it? \n\njane: it's elaine \n\njerry: oh..huh.. is she coming up? \n\njane: yeah \n\njerry: oh.. uh.. you know your breath is a little garlicky you better take some gum. \n\njane: ok \n\njerry: yeah have a couple of pieces, weak, weak gum yeah \n\njane: hmm \n\njerry: have some more, take some for the road. \n\njane: isn't it too much? \n\njerry: trust me.. nah it's good \n\njane: smell? \n\njerry: yeah stinks, terrible \n\njerry: hi elaine \n\nelaine: hi \n\njerry: this is jane elaine \n\nelaine: hi, nice to meet you finally \n\njane: it's so nice to meet you (chewing) i look forward to saturday night \n\nelaine: yeah me too \n\njane: ok so i'll see you saturday night \n\njerry: saturday night (she leaves) \n\nelaine: what is with the gum? \n\njerry: i know it's a big problem.. she puts like four pieces in her mouth, it's ridiculous, i don't think we're gonna be able to get together on saturday night \n\nelaine: because of the gum \n\njerry: well it's too much, it's embarrassing \n\nelaine: why does she have to chew so many? \n\njerry: she's one of these people, always have to be different \n\ngeorge: she's there, i can hear her \n\nkramer: alright, who's gonna tell her \n\ngeorge: huh you tell her \n\nkramer: it was your fault \n\ngeorge: if you hadn't come, this whole thing wouldn't have happen (back on jerry and elaine's side, we can hear george saying \"i was the one who was invited\", jerry opens the door) \n\njerry: well \n\nelaine: hey \n\ngeorge & kramer: hey \n\ngeorge: what are you doing here? \n\nelaine: did you have fun \n\ngeorge & kramer: yeah \n\nkramer: for a little while \n\nelaine: where's tony? \n\ngeorge: oh.. \n\nkramer: uh.. \n\ngeorge: kramer was supposed to tie a knot \n\nkramer: whoa whoa ginga, you were supposed to tie the knot \n\nelaine: did something happened? \n\ngeorge: well, tony.. took a bit of a tumble \n\nelaine: his face, did something happen to his face? \n\nkramer: well it all depends on what you mean by.. happen \n\ngeorge: he..he's alive \n\nkramer: yeah \n\nelaine: what happened to his face, tell me, what happened to his face \n\ngeorge: well you see he slipped, and he landed on a kinda of a.. \n\nkramer: rock \n\ngeorge: yeah.. the ambulance got there very quickly \n\nkramer: it was a big rock \n\ngeorge: we rode along all the way to the hospital \n\nkramer: yeah i sang 99 bottles of beer on the wall \n\njerry: well aside from that from that, how did he like the sandwiches? \n\nelaine: so huh, what did the doctors say? \n\ntony: they said huh.. they said i'm coming along (tony's face is covered by bandages) \n\nelaine: but what else did they say \n\ntony: well, they said huh tony, try to keep it clean \n\nelaine: right yeah.. no i mean did they get into stuff like a.. long jagged scars or.. gross deformities, major skin grafts, stuff like that \n\ntony: i really don't remember, i was kinda out of it for the 1st couple of days, i was on a lot of medication, it was kinda like haze, it was pretty cool \n\nelaine: huh (smiles) but huh, in this medicated haze, in this woozy state, um do you recall the words.. radical reconstructive surgery being uttered? \n\ntony: i don't know, i don't know \n\nelaine: think tony, think \n\ntony: i'm drawing a blank, babe \n\nelaine: excuse me. \n\ngeorge: hi elaine \n\nelaine: this isn't a very good time george \n\ngeorge: i just wanted to talk to tony for a minute (hands elaine some stuff) \n\ntony: step off george, i don't wanna see you \n\ngeorge: me? \"step off\" \n\nelaine: yeah, tony says you better step off george \n\ngeorge: but..why, it wasn't my fault, i .. you asked me a sandwich, i .. i make such delicious sandwiches elaine \n\ntony: just beat it dude! \n\ngeorge: here elaine here, superman (hands a comic book to elaine, who passes it to tony) please, next time it will only be the two of us \n\ntony: there won't be any next time george \n\ngeorge: oh tony don't \n\nelaine: ok step off george, can u just step off? \n\ngeorge: i i just.. but.. \n\nelaine: bye bye (shuts the door) oh.. (opens it back) george wait wait \n\ngeorge: yes? \n\nelaine: would you throw this trash out (closes the door) \n\njerry: i've been waiting a while for this. you know it's a shame tony got all banged up, we're not gonna be able to get together on saturday night \n\njane: oh that is too bad, what a shame \n\njerry: yeah, it's a damn shame, a damn shame! \n\njane: well maybe he's feeling better \n\njerry: yeah without a doubt, i'm down (kramer enters) oh hey how're you doing? jane this is my neighbor kramer \n\nkramer: hey \n\njane: hello kramer (he acts all weird, a la kramer) \n\nkramer: well hello jane \n\njane: jerry told me so much about you, i feel like i know you intimately \n\nkramer: (very quickly) oh i don't think so, no we never met, i never talked to you before on the phone, alright i'll see you later buddy \n\njerry: wait, where are you going? where are you going? \n\nkramer: uptown, to the y \n\njane: oh i'm going uptown too, you wanna split a cab? \n\nkramer: what about the driver? \n\njane: what are you talking about? \n\njerry: alright i changed my mind, uh yeah i don't think i'm not gonna go now \n\njane: well ok i'll see you later, \n\njerry: ok. \n\njane: nice meeting you \n\njerry: see ya. (jane leaves; after the door closes kramer jumps in shock) what's with you? \n\nkramer: that's her \n\njerry: who? \n\nkramer: erika, she's erika \n\njerry: oh you think she's erika, the phone sex woman \n\nkramer: jerry, that voice is tattooed on my brain, i'm telling you it's her \n\njerry: oh you're crazy \n\nkramer: am i? or am i so sane that you just blew your mind? \n\njerry: it's impossible \n\nkramer: iis it? or is it so possible your heard is spinning like a top? \n\njerry: it can't be \n\nkramer: can't it? or is your entire world just crashing down all around you? \n\njerry: alright that's enough \n\nkramer: yeaaaaah! \n\nelaine: he's supposed to get the bandages off on sunday.. what if? \n\njerry: what? \n\nelaine: you know (acts like a monster) \n\njerry: oh you're afraid he might look like zippy the pinhead \n\nelaine: yeah i mean, i mean what is my obligation here, you know we were just dating, it was probably gonna be over in a couple of weeks anyway \n\njerry: oh i though you didn't care about his looks \n\nelaine: i lied \n\njerry: aha \n\nelaine: are you kidding, he's a mimbo i know that.. but he's my mimbo, you know and even if he is a hideous freak maybe, maybe i can learn to love him, maybe in some final irony (jerry is looking the other way), i'll learn what love really is. you know jerry \n\njerry: oh i'm sorry i didn't get most of that.. isn't that kramer over there? \n\nelaine: yeah, yeah \n\njerry: hey kramer \n\nkramer: what? hey (walks by jerry and elaine's table) it's all set \n\njerry: what's all set? \n\nkramer: erika is gonna meet me here, now we're gonna find out the truth \n\njerry: how's you get her to meet here? \n\nkramer: i don't know, we have a certain chemistry \n\njerry: oh my god \n\njane: hi i thought i'd find you here \n\njerry: hello.. erika \n\njane: erika? what are you talking about? \n\njerry: how can u say things like that over the phone? \n\njane: what things? what are you talking about? \n\njerry: selling sexual pleasure over the phone? \n\njane: i sell paper goods you jerk \n\njerry: paper goods? \n\nelaine: excuse me, do you have a tissue? \n\njane: no, i'm sorry, i can't spare it, there's not enough to spare \n\njane: where's the ladies' room (kramer points her) \n\nelaine: i have to go to the bathroom too (runs to be ahead of jane; jane stops and looks back at jerry; jerry shugs) \n\n[monk's: the bathroom] \n\njane: oh damn \n\nelaine: something.. wrong? \n\njane: yeah there's no toilet paper in here, i usually check but would you mind? \n\nelaine: i can't, i don't have it, i don't have a square to spare, i can't spare a square \n\njane: hey, wait a minute, i know you \n\nelaine: that's right honey, and i know you! \n\njane: no, no, no!!! \n\nelaine: here, take it \n\njerry: thanks \n\njane: (walks out of the bathroom, very furious; to jerry) don't call me anymore \n\njane: (to kramer, in a very sensual voice) you either \n\njerry: now of the course the thing is extreme sports. bungie jumping. to me if bungie jumping is a sport so is being a crash test dummy. just leaning does not make it a sport. it's like a wiley coyote idea isn't it? the thing i wonder about the sky diving is why do they even bother with the helmets? can you almost make it? why don't they just wear a party hat? what's the difference? you jump out of a plane from twenty thousand feet in the air the chute doesn't open i got news for you, the helmet is now wearing you for protection. later on the helmet's talking to the other helmets going \"boy it's a good thing he was there or i would have hit the ground directly.\" \n\nelaine: hey, do you believe i got happy new yeared today? it's february. \n\njerry: i once got happy new yeared in march. \n\nelaine: it's disgusting. \n\njerry: it's pathetic. . . . hey, is it cold out? \n\nelaine: really cold. \n\njerry: scary cold. \n\nelaine: i don't know. what's your definition of scary cold? \n\njerry: that. (pointing at george) \n\nelaine: (laughing as she says it) what is that, ha? \n\ngeorge: what? \n\njerry: when did you get that? \n\ngeorge: this week. my father got a deal from a friend of his. it's gore-tex. you know about gore-tex? \n\njerry: you like saying gore-tex, don't you? \n\nelaine: hey, you can't even turn around in that thing. \n\njerry: look at this \n\nelaine: hey george, can you feel this? can you ... \n\ngeorge: all right, all right. knock it off. come on, let's go. \n\nelaine: oh listen we should stop off on the way and get a bottle of wine or something. \n\njerry: yeah. (pointing at elaine as he goes into the bedroom) \n\ngeorge: what for? \n\nelaine: these people invited us for dinner. we have to bring something. \n\ngeorge: why? \n\nelaine: because it's rude, otherwise. \n\ngeorge: you mean just going there because i'm invited, that's rude? \n\nelaine: yes. \n\ngeorge: so you're telling me instead of them being happy to see me, they're going to be upset because i didn't bring anything. ttst --you see what i'm saying? \n\njerry: the fabric of society is very complex george. \n\ngeorge: i don't even drink wine. i drink pepsi. \n\nelaine: ya can't bring pepsi. (elaine starts putting on her coat and gloves) \n\ngeorge: why not? \n\nelaine: because we're adults? \n\ngeorge: you telling me that wine is better than pepsi? huh (snort), no way wine is better than pepsi. \n\njerry: i tell you george, i don't think we want to walk in there and put a big plastic jug of pepsi in the middle of the table. \n\ngeorge: i just don't like the idea that any time theres a dinner invitation there's this annoying little chore that goes along with it. \n\njerry: you know, you're getting to be an annoying little chore yourself. \n\nkramer: all right, let's go. who's driving? (claps his hands and rubs them together) \n\njerry: you are. i can't get that thing in my car. (referring to george) \n\nkramer: uh huh. \n\njerry: where's the heat in this car? come on elaine warm me up, oh! i'm cold. just give me a little squeeze. \n\nelaine: jerry get off of me. get off of me! get off, get off of me! \n\ngeorge: hehehehehe (higher tone laugh, though still quietly ) \n\njerry: you're pretty comfortable up there eh, bubble boy? \n\ngeorge: oh, yeah. you wish you had this coat. \n\nelaine: you know, i was just thinking. the four of us can't show up with just one bottle of wine. \n\ngeorge: oh, here we go... \n\nelaine: what? \n\ngeorge: why don't we get them a couch? (kramer laughs) well rent a u-haul -- well bring em a nice sectional. \n\nkramer: (low tone)yeahhehehehe \n\nelaine: we should bring some cake. will you stop off at the bakery? \n\nkramer: (low tone) all right, yeah. \n\ngeorge: why don't you just get some ring dings from the liquor store? \n\nelaine: ring dings? \n\ngeorge: hey, ring dings are better than anything you're gonna get at a bakery. \n\nkramer: ooooh i like ring dings. \n\nelaine: george, we can't show up at someone's house with ring dings and pepsi. \n\nkramer: hey your lights are on! (shouting out the window) \n\ngeorge: (to kramer) it's a funeral procession. . . . (to elaine) and i got news for you. i show up with ring dings and pepsi, i become the biggest hit of the party. people be coming up to me, \"just between you and me i'm really excited about the ring dings and the pepsi. what are we, europeans with the beaujolais and chardonnay . . . \n\nelaine: oh, kramer, thats the bakery. stop here. stop here. \n\nkramer: (low tone) all right. \n\nelaine: okay, let me out. you, eh, whatever your name is \n\njerry: jerry. \n\nelaine: yeah, jerry, jerry -- come with me. \n\nkramer: okay, so we're going to get the wine and we'll pick you up here in ten minutes. \n\nelaine: yeah. \n\nkramer: all right \n\nelaine: ummm, i love the smell of bakeries. \n\njerry: mmm. oh look elaine, the black and white cookie. \n\nelaine: mmm. \n\njerry: i love the black and white. two races of flavor living side by side in harmony. it's a wonderful thing isn't it? \n\nelaine: you know i often wonder what you'll be like when you're senile. \n\njerry: i'm looking forward to it. \n\nelaine: yeah. i think it will be a very smooth transition for you. \n\njerry: thank you. all right, look at all this stuff. what are we getting'? \n\nelaine: chocolate babka! that's their specialty. \n\njerry: love that babka. \n\nelaine: yeah, yeah! \n\njerry: so listen elaine, when we get up to the door, you , you hold the cake box. \n\nelaine: why? \n\njerry: i don't know, just standing there with a box, holding it by the little string. \n\nelaine: you think it's effeminate? \n\njerry: it's a tad dainty. \n\nelaine: oh, we forgot to pick a number. \n\njerry: oh, see that's not fair. we-we were here ahead of all these people. \n\nelaine: i-cu-di-ge--you think i should go and ask her for hers? \n\njerry: ah, no, forget it. \n\nelaine: no, no no no, no it's not fair. just because they have a ticket doesn't mean they were here first. we were here, and we were ahead of them, and them, and her. come on let's just go ask em. come on. . . . excuse me. \n\nkramer: (exhales) well, i'm not finding a spot here. what do you want to do? \n\ngeorge: ah, just double park. \n\nkramer: no, no. \n\ngeorge: why not? \n\nkramer: i'll get a ticket! besides, what if somebody wants to get out of here? \n\ngeorge: are you kidding? people get spaces this good, they never give em up. \n\nkramer: that's a fallacy. \n\ngeorge: all right, i'll tell you what... why don't you go into the store and i'll wait in the car? \n\nkramer: why don't you go into the store and i'll wait in the car? \n\ngeorge: because, i've got the coat. i can sit in the car and not get cold. \n\nkramer: so what i'm going to leave the car running and the heat 'll be on. \n\ngeorge: does the heater even work in this car? \n\nkramer: no. \n\ngeorge: oh, hey, eh, there's a spot right in front of the liquor store. you see \n\nkramer: i see. \n\ngeorge: you see, hu, ho ho. \n\nelaine: but we were here ahead of you. \n\nbarbara: how do i know that? \n\njerry: well we saw you come in. \n\ndavid: well, that's easy for you to say. \n\nelaine: oh, yeah, right, that's something i do all the time, right. i make up stories to get ahead in lines at bakeries. \n\nclerk: 46? \n\nelaine: wait, wait a second are, are you barbara benedict? \n\nbarbara: yes. \n\nelaine: oh my god. i, i know you. i-im, i'm elaine benes. do you remember we met at linda van grak's baby shower. \n\nbarbara: i'm on my way over there right now. \n\nelaine: yeah me too. \n\ndavid: you're jerry right? \n\njerry: david! \n\nelaine: well, this is a little awkward, isn't it? \n\nbarbara: yes it is. \n\nelaine: you know we were here, ahead of you. \n\nbarbara: you're not getting my number. \n\njerry: oh so you still don't believe us. \n\nclerk: 47! \n\nbarbara: thats us. \n\nelaine: ohhh, ok, fine, fine, go ahead. but listen let me tell you something as soon as i get there i'm going to tell everyone what a jerk you are. \n\nbarbara: well, i'll be there ahead of you and i'll be telling them what a jerk you are. . . . (turns to the counter) i'll have the chocolate babka. \n\nclerk: you're lucky mrs. benedict it's our last one. \n\ngeorge: alright, what are we getting? it's hot in here! \n\nkramer: ooo, what do you say we get a mouton cadet? \n\ngeorge: what's that? \n\nkramer: well its a bordeaux. robust, bold, very dry. as opposed to a beaujolais -- which is richer and fruitier. ahh, here's one. twelve dollars. \n\ngeorge: twelve dollars? i knew we should have gone to the bakery. i guarantee you theyre not getting no twelve dollar cake. \n\nkramer: all right look, i am going to have to pay you back later. i don't have my wallet. \n\ngeorge: . . . why not? \n\nkramer: because i don't like to carry my wallet. my osteopath says that it's bad for my spine. it throws my hips off kilter. (makes a motion with his hips) \n\ngeorge: \"throws your hips off kilter\" so where's your money? (pulls out his wallet) \n\nkramer: i never take it. \n\ngeorge: so what do you do? \n\nkramer: oh, i get by. \n\nbarbara: see you later (exits with the babka) \n\nelaine & jerry: see you later. \n\njerry: that's the last babka. they got the last babka. \n\nelaine: i know. they're going in first with the last babka. \n\njerry: that was our babka. \n\nelaine: you can't beat a babka. \n\njerry: we had that babka. \n\nelaine: (exhales) they're going to be heroes. \n\njerry: well what are we going to do now. if we can't get the babka the whole thing's useless. \n\nelaine: well how about a carrot cake? \n\njerry: carrot cake? now w-why is that a cake? you don't make carrots into a cake. i'm sorry. \n\nelaine: black forrest? \n\njerry: black forrest? too scary. you're in the forrest, oohh. \n\njerry: how about a napoleon? \n\nelaine: napoleon? who's he to have a cake? he was a ruthless war monger. might as well get mengele. \n\njerry: that was our babka. we had that babka! \n\nelaine: what's this one? \n\nclerk: that, cinnamon babka. \n\nelaine: (gasp) \n\njerry: another babka? \n\nclerk: there's chocolate and there's cinnamon. \n\njerry: well-well we got to get the cinnamon. \n\nelaine: no, but they got the chocolate. we'll be going in with lesser babka. \n\njerry: i beg your pardon? cinnamon takes a back seat to no babka. people love cinnamon. it should be on tables in restaurants along with salt and pepper. anytime anyone says, \"oh this is so good. what's in it?\" the answer invariably comes back, cinnamon. cinnamon. again and again. lesser babka - i think not. \n\nclerk: 49? \n\nelaine: i'll have a cinnamon babka. \n\njerry: and a black and white cookie, for me. peace! \n\nclerk: thatll be 13.05 \n\ngeorge: all right here you go. \n\nkramer: yeuu. \n\nclerk: a hundred? i can't change that. \n\ngeorge: you can't - huhu, all right let's go. \n\nkramer: wait a second. i can get change. \n\nkramer: hey, anybody got change for a hundred? \n\ngeorge: are you crazy?! what are you doing?! you'll get us killed! \n\nkramer: what? \n\ngeorge: don't go shouting we got a hundred dollar bill. people will be jumping out of windows on top of us. \n\nkramer: alright, let's go but something. then we'll get some change. \n\ngeorge: i am not buying something just to get change. \n\nkramer: george, there's a news stand right over there. now come on. \n\ngeorge: all right, what are we doing? \n\nkramer: just get some gum or something. \n\ngeorge: pack of gum. here you go. (hands the clerk a $100 bill) \n\nclerk: what is it a hundred? i can't change a hundred. \n\ngeorge: why not? \n\nclerk: you got to buy more than that. \n\nkramer: here, get a newspaper. (kramer hands george a newspaper) \n\ngeorge: newspaper. \n\nclerk: not enough. \n\nkramer: clark bar. (kramer starts tearing the candy wrapper open with his teeth.) \n\ngeorge: clark bar. \n\nclerk: keep going. \n\ngeorge: were up to two dollars here. \n\nkramer: here, george, get a penthouse forum. \n\ngeorge: i'm not getting a penthouse forum. \n\nkramer: why? no, thatll make great dinner party conversation. we'll read the letters at the dinner table. \n\ngeorge: oh, that's nice. \n\nkramer: come on, did you ever read one of these? \n\ngeorge: it's not real. they're all made up. \n\nkramer: ohh, it's real. \n\ngeorge: well you know there is an unusual number of people in this country having sex with amputees! (grabs the forum from kramer and walks over to the clerk) . . . penthouse forum, newspaper, gum, clark bar. \n\nclerk: 6.75. \n\ngeorge: ah, great. all right, with the wine i'm in over twenty dollars now. \n\nkramer: all right, all right. \n\nman1: (gibberish arabic yelling) ...big coat! big coat! \n\ngeorge: yes, im sorry, it's a new coat. it-it's gore-tex. \n\nkramer: you better be careful with that thing... you'll start a war. \n\njerry: uhm, see the key to eating a black and white cookie, elaine, is you want to get some black and some white in each bite. nothing mixes better than, vanilla and chocolate. and yet still somehow racial harmony eludes us. if people would only *look to the cookie* -- all our problems would be solved. \n\nelaine: well your views on race relations are just, fascinating. you really should do an op-ed piece for the times. (op-ed stands for opinions and editorials) \n\njerry: hmm. look to the cookie elaine... look to the cookie. \n\nelaine: (looking in the box) well what is this? \n\njerry: what? \n\nelaine: it's a hair. \n\njerry: oh, oh take it back. let's get another one. \n\nelaine: no, we're late as it is. i'll just take it off. \n\njerry: no no come on really, get another one. itll take a second. \n\nelaine: alright, alright. \n\nelaine: excuse me. \n\nman: hey hey, i'm on line here. \n\nelaine: no noo no, we just bought this. . . . um, you sold us a cake with a (quietly) hair on it. \n\nclerk: you have to take a number. \n\nelaine: we waited fifteen minutes for this. tst - you sell me a cake with a hair on it. then you want me to wait? . . . what are you doing (to jerry taking a number) youre gonna wait now? \n\njerry: well, i'm not going to eat a cake with a hair on it. \n\nelaine: well it was a little hair. i took it off. \n\njerry: a little hair? do you think that makes it better? \n\nelaine: what if it's your hair? \n\njerry: what if it's your hair? \n\nelaine: (wh-wh) what is wrong with my hair? nobody takes better care of their hair than me. you can serve dinner on my head. \n\njerry: who needs that misty herbal rain water crap they sell in the health food store. i use prell, the hard stuff. hundred proof - takes your roots out. (pretends to pull hair out) \n\nelaine: okay, fine, we'll just wait until she calls the number. \n\njerry: well, maybe we should just forget about the cake? \n\nelaine: no i'm bringing cake! (looking worried and apprehensive) \n\ngeorge: all right we got the wine. aren't we lucky? we got wine. whoopee whoa! imagine if we didn't bring the wine. we'd be shunned by society. outcasts! where's your wine? get out! \n\nkramer: (reading from the penthouse forum) \"i know this is going to sound like a crazy fantasy but every word of this story is true\" (exits to street) \" a few weeks ago my girlfriend happened to mention to me how attractive she thought our new neighbor linda was\" \n\ngeorge: l-look at this? \n\nkramer: ahh. \n\ngeorge: somebody double parked and blocked us in. d-does anybody know whose car that is? maybe there's a note on it. ohh-oh brother. no, no note. can you believe this? \n\nkramer: \"well of course i noticed it too with those cannibal breasts and pouty lips. i don't have to tell you she was a knock out.\" (turns the page) \n\ngeorge: i really can not comprehend how stupid people could be sometimes. can you comprehend it? \n\nkramer: no, no i can't comprehend it? \n\ngeorge: i mean we can put a man on the moon but we're still basically very stupid. the guy who's car this is? he could be one of the guys that built the rocket. you see what i'm saying? \n\nkramer: well yeah, yeah. he could build the rocket, but-but he's still stupid for double-parking and blocking somebody in. \n\ngeorge: so you really understand my point about building a rocket and double-parking. \n\nkramer: yeah, on one hand he's smart with rockets and on the other hand he's dumb with parking. . . . it's cold out here huh? \n\ngeorge: maybe it's not even stupidity. maybe it's just a blatant disregard for basic human decency. yeah this how dictator's start. do you think mussolini would circle the block six times looking for a spot? \n\nkramer: how about idi amin, huh? \n\ngeorge: ill tell you, if i was running for office i would ask for the death penalty for double-parkers. if this is allowed to go on this is not a society. this is anarchy! \n\nkramer: are those shoes comfortable? \n\ngeorge: no not really. \n\nkramer: cause they look comfortable. \n\ngeorge: i know that's why i bought `em but they're not comfortable. \n\nelaine: why couldn't we just take the hair off and go? \n\njerry: no. thats out of the question. \n\nelaine: whhhy? \n\njerry: because i had a bad experience with a hair when i was younger. \n\nelaine: what happened? \n\njerry: i'd rather not talk about it. \n\nelaine: you can't tell me? \n\njerry: all right . . . . i once found a hair in my farina and i freaked out. \n\n(*farina: a meal or flour obtained chiefly from cereals, nuts, potatoes or indian corn, and used as a breakfast food.) \n\nelaine: you found a hair in your farina? \n\njerry: yeah. \n\nclerks voice (off camera): 56 \n\nelaine: what happened? \n\njerry: well i started screaming, \"there's a hair in my farina. there's a hair in my farina.\" then i ran out of the house and i was running and running. and like i was little but i could run very fast. and i-i just kept running (in the background -- clerks voice 57) and they found me like three hours later collapsed at a construction site. \n\nelaine: (quietly) wow. who's hair was it? \n\njerry: my mother's. \n\nelaine: (quietly) ahhhhh \n\nclerk: 58! \n\nelaine: ooo, that's us. (hits jerry in the arm) \n\njerry: oh, good. \n\nelaine: you sold us a hair with a cake around it. we'd like another one. \n\nclerk: (coughing and coughing, getting really bad) \n\njerry: oh, that's lovely. \n\nelaine: ah, \n\njerry: thats what you want to see, yeah. . . . yeah, you want to trade your hair for some phlegm. \n\njerry: yeah thats a good deal -- you win the pennant with that trade, hair for phlegm. \n\nclerk: here you are. (hands elaine the cake box) \n\nelaine: okay. alright we got the cake now. where is george and kramer? \n\nkramer: hey double-parker! (honk, honk) show yourself. (honk, honk) come on out, im freezing! (honk, honk) \n\ngeorge: we are really late now. we're in big trouble. big trouble. \n\nkramer: why? \n\ngeorge: you know -- elaine. \n\nkramer: what about her? \n\ngeorge: . . . i'm a little scared of her. \n\nkramer: you're scared of elaine? \n\ngeorge: yes! \n\nkramer: why? \n\ngeorge: did you ever see her lose her temper. i was once late cause i bought a panama hat -- she grabbed it by the brim, pulled it down so hard my head came right through the top of it. \n\nkramer: hey, let's go inside the liquor store. im freezin in here. \n\ngeorge: why didn't you just wear a heavier coat? \n\nkramer: because i wanted to look good for the party. \n\ngeorge: oh, hey, hey, hey! that's great! that's very nice. you know we've been waiting twenty minutes for you people?! what do you think, you're mussolini?! \n\nman2: back off *puff ball* it's not my car! (shoving georges shoulder, he turns and walks away) \n\ngeorge: i wasn't talking to you. \n\nelaine: wait `til i get my hands on that george. i am gonna *pull* that big hood over his little head... tie the strings, and suffocate. you remember that panama hat? that was nothing. \n\njerry: huh, wa? \n\nelaine: what's the matter with you? \n\njerry: i dont know, i don't feel so good. \n\nelaine: what's wrong? \n\njerry: my stomach, i , think it was that cookie. \n\nelaine: the black and white? \n\njerry: yeah. \n\nelaine: not getting along? \n\njerry: i think i got david duke and farrakhan down there. \n\nelaine: (mocking - in a dopey voice) well if we can't look to the cookie where can we look? \n\njerry: oh my stomach. i feel like i'm going to throw up. \n\nelaine: wait, what about your vomit streak? \n\njerry: i know, i haven't thrown up since june 29th, 1980. \n\nelaine: oh, oh! ooh my god. oh! \n\nman3: sooory. \n\nelaine: sorry? you almost took my toe off. why don't you watch what you're doing you, lunatic! (the man turns and walks away) \n\nelaine: (cont) ...uh, jerry, i think he broke my toe. (jerry gets up) w-where're you going? \n\njerry: fourteen years down the drain. (points and walks off -- to the bathroom) \n\ngeorge: do you think chickens have individual personalities? \n\nkramer: (shivering) i don't know. \n\ngeorge: if you had like five chickens could you tell them apart by just the way they acted? or would they all just be walking around? bak, bak, baak, bak? cause if they have individual personalities im not sure we should be eaten `em. what's the matter with you? \n\nkramer: (shivering gibberish) waj cha jia ja \n\nclerk: can i help you guys with anything? \n\ngeorge: oh, no no no -- we bought the wine here before, but now, you know we're bl-blocked in by some car double parked and we're just waiting for the guy to pull out. \n\nclerk: well wait outside. this isn't a hangout. \n\ngeorge: but my friend here has hypothermia. \n\nkramer: (shivering) hypothermia. \n\nclerk: all right guys, take it outside. \n\nclerk: you're paying for these. \n\nelaine: how was it? \n\njerry: as good as it gets. \n\ngeorge: you know that coat was gore-tex. its worth a hell of a lot more than that, cheap chardonnay. \n\nkramer: (shivering) you know i'm freezin. im definitely freezin. i can't stop shaking. \n\ngeorge: i'm cold too. at least you've got a coat. let's get in the car. \n\nkramer: (quietly) l-l (look) \n\ngeorge: oh, my god that's saddam hussein. the dictator. \n\nman4: i wouldn't walk around without a coat in this weather; you'll catch your death of cold. so long. (waves to george and kramer as they wave back at him.) \n\nclerk: can i getca anything else? \n\njerry: oh, no thanks. \n\nclerk: how about a nice box of \"scram\". \n\ngeorge: s-s-somebody double parked, we couldn't help it. it might have been saddam hussein, we're not really sure. he eh, had a british accent though. \n\ngeorge: what, what happened to you? \n\nelaine: somebody put a cane on my foot. just like the one i'm going to put up your... \n\njerry: hey, what happened to your coat? and what is the smell? is-ya, what are you drunk? \n\ngeorge: i had to give it to the liquor store guy. \n\njerry: what for? \n\ngeorge: i spilled some chardonnay. so, what did you get? \n\nelaine: cinnamon babka. \n\ngeorge: cinnamon? why didn't cha get chocolate? \n\njerry: george! \n\nelaine: here, here's your cake. (just about tosses it at the woman) \n\ngeorge: and your wine. \n\nelaine: see ya'. \n\njerry: see ya'. \n\njerry: i love these nature shows, ill watch and kind of nature show, and its amazing how you can always relate, to whatever theyre talking about. you know like youre watching the african dung beetle and youre going boy, his life is a lot like mine. and you always root for whichever animal is the star of the show that week -- like if its the antelope, and theres a lion chasing the antelope you go, run antelope run! use your speed, get away! but the next week its the lion, and then you go get the antelope, eat him, bite his head! -- trap him, dont let him use his speed! \n\nelaine: (to the phone) well did he bring it up in the meeting? \n\njerry: elaine, see this t-shirt, six years i've had this t-shirt. it's my best one, i call him golden boy. \n\nelaine: yeah, i'm on the phone here. \n\njerry: golden boys always the first shirt i wear out of the laundry. here... touch golden boy! \n\nelaine: no thanks. (to the phone) yeah, yeah i'll hold. \n\njerry: but see look at the collar, it's fraying. golden boy is slowly dying. each wash brings him one step closer, that's what makes the t-shirt such a tragic figure. \n\nelaine: why don't you just let golden boy soak in the sink with some woolight? \n\njerry: no!!! the reason he's the iron man is because he goes out there and plays every game. wash!!! spin!!! rinse!!! spin!!! you take that away from him, you break his spirit! \n\nelaine: (to the phone)yeah. oh! what? he is! oh! thats fantastic! i'm so excited! yes i'm excited, ok, ok i'll be in soon! yeah, yeah, i'm coming, i'm coming! ok bye. (elaine jumps up and dances around) yuri testikov, the russian writer! \n\njerry: the guy whos in the gulag?! \n\nelaine: yeah! pendant's publishing his new book, and i'm working on it! lippman and i are gonna go to the airport on thursday and pick him up in a limousine! \n\njerry: you wanna barrow golden boy! \n\nelaine: oh! (pushing jerry) do you know what this means, it's like working with tolstoy! \n\njerry: hey ya know i read an unbelievable thing about tolstoy the other day, did you know the original title for \"war and peace\" was \"war--what is it good for?\"! \n\nelaine: ... (looking at jerry for a second then, mockingly nods her head back and forth) ....ha ha ha ha. \n\njerry: no, no i'm not kidding elaine it's true, his mistress didn't like the title and insisted that he change it to \"war and peace\"! \n\nelaine: but it's a line from that song! \n\njerry: that's were they got it from! \n\nelaine: really? \n\njerry: i'm not joking! \n\ngeorge: you can't handle the truth! (he salutes) (imitating jack nicholson [a.k.a. col. nathan r. jessep], from the 1992 movie a few good men) \n\njerry: what? \n\ngeorge: (still in jacks voice) i'm working on my jack nicholson, you can't handle the truth! (he salutes) \n\nelaine: what is this your mail? (she takes a magazine and starts flipping through it) \n\ngeorge: yeah, i grabbed it on the way out, i don't want my mother reading it. \n\nelaine: oh! your alumni magazine. \n\njerry: your mother reads your mail? \n\ngeorge: yeah. \n\njerry: what do you mean like post-cards an...? \n\ngeorge: no, anything. \n\njerry: she doesn't open...? \n\ngeorge: she'll open! \n\njerry: you've caught your mother opening envelopes! \n\ngeorge: yes. \n\njerry: what did she say? \n\ngeorge: i was curious! (imitating his moms voice) \n\njerry: isn't that against the law? \n\ngeorge: maybe i can get her locked up. \n\nelaine: (gasp) hey jerry, you're in the alumni magazine! listen to this jerry seinfeld has appeared on \"david letterman\" and the \"tonight show\" and he did a pilot for nbc called \"jerry\" ...that was not picked up. georgie, how come theres not anything about you in here? \n\njerry: he can't handle the truth! \n\nelaine: all right (slaps the magazine down on the counter) this is too much fun, i gotta get back to work. (heads for the door) \n\nkramer: (singing) johnny yuma was a rebel, yeah! ... \n\nkramer: are you all right? \n\nelaine: yeah. (startled) \n\nkramer: unh.... sorry. \n\nelaine: its ok. (starts walking down the hallway) \n\nkramer: yeah. oh, here, wait wait (walks a few steps to catch up to her as she stops) ah, maybe you could ah, use this (he searches through his jacket) ah, here, it's a electronic organizer... \n\nelaine: what? \n\nkramer: ah, yeah. uh... \n\nelaine: wh..? \n\nkramer: yeah, here it is... yeah. \n\nkramer: you know, for phone numbers, addresses, keep appointments, everything. \n\nelaine: wow! \n\nkramer: it's got an alarm that beeps! \n\nelaine: oh! i can't believe this, kramer! \n\nkramer: yeah. \n\nelaine: i've been wanting to get one of these things! are you sure that... \n\nelaine: ...are you sure you can't use this thing? \n\nkramer: no no no. i got all my appointments up here. (he points to his head) \n\nelaine: where'd you get this? \n\nkramer: well, the bank, i opened up a new account. \n\ngeorge: hey, did you see that whale thing on tv last night? \n\njerry: no. \n\ngeorge: i am such a huge whale fan. these marine biologists were showin' how they communicate with each other with these squeaks and squeals, what a fish! \n\njerry: it's a mammal. \n\ngeorge: whatever. (george looks to the table) hey new tape recorder? \n\njerry: yeah, got it from the bank. \n\nkramer: (overly excited) hey (claps hands one time) \n\njerry: hey. \n\ngeorge: hey. \n\nkramer: (still overly excited) who wants to have some fun! \n\njerry: i do. \n\ngeorge: i do. \n\nkramer: (once again, overly excited) now are you just sayin' you want to have fun or do you reallllly want to have fun?! \n\njerry: i really wanna have fun. \n\ngeorge: i'm just sayin' i wanna have some fun. \n\nkramer: right now there six-hundred titleists that i got from the driving range in the trunk of my car. why don't we drive out to rock-a-way and hit `em-----------(very over excited) into the ocean! now picture this.... we find a nice sweet spot between the dunes, we take out our drivers, we tee up and (he makes a golf stroke), that ball goes sailing up into the sky holds there for a moment and then....... ..... gulp! \n\ngeorge: come on. ya wanna go get some lunch? \n\njerry: yeah, let me just stop by the cash machine and i'll meet you over at the coffee shop. \n\ngeorge: yeah, i'm gonna get a paper. \n\ngeorge: keep your head down. \n\nkramer: yeah! (kramer takes a huge imaginary swing) \n\njerry: (he hits a few keys and looks over at her) cash advance... yes (hits a key)  no (he looks over again) balance inquiry... no (he looks again) receipt.... no (he looks again) processing... processing... (he opens the box, pulls out his money and then looks at the woman and says) i won! \n\ndiane: jerry? \n\njerry: yeah. \n\ndiane: its diane, diane deconn, from queens college. \n\njerry: oh diane. \n\ndiane: (laughing a little) how are you? \n\njerry: good, good. \n\ndiane: (sighs) how long has it been? \n\njerry: since college. \n\ndiane: huh. i've been seeing you on tv you're doin' great. \n\njerry: yeah pluggin' along. \n\ndiane: you know i got the alumni magazine. what ever happened to your friend george? i notice i never see his name in there. \n\njerry: well he's kind of modest. \n\ndiane: he was always such a goof-off. i mean did he ever get anywhere? \n\njerry: sure. \n\ndiane: yeah? what field? \n\njerry: marine biology. \n\ndiane: george is a marine biologist?! \n\njerry: yeah, pretty damn good one, too! \n\ndiane: i can't believe it. i-i would never had thought \n\njerry: yeah... hes specializing in whales. he's working on lowering the cholesterol level, in whales all that blubber -- quite unhealthy. you know its the largest mammal on earth but as george says \"they don't have to be.\" \n\ngeorge: diane deconn? you saw diane deconn! \n\njerry: something huh? \n\ngeorge: ahh! how'd she look? \n\njerry: she looked great. \n\ngeorge: ahh! (closes his eyes and rolling his head back) umh! \n\njerry: she asked about you. \n\ngeorge: she asked about me? what did- what did she say? \n\njerry: \"how's george?\" \n\ngeorge: george! she said george? she remembered my name. (loudly -- to a passing waitress and the rest of the restaurant) diane deconn remembered my name. she was the \"it\" girl! \n\njerry: yeah she asked for your number, i think she's gonna get in touch with you. \n\ngeorge: (pauses for a few seconds) ok, i'm tellin' you right now - if your kiddin' around i'm not gonna be able to be your friend anymore. i'm serious about that. you got that. \n\njerry: i got no problem with that. \n\ngeorge: good. cause if this is a lie, if this is a joke, if this is your idea of some cute little game we're finished! \n\njerry: expect a call. \n\ngeorge: oh my god he's not kidding. (exhale gasp) \n\njerry: now, i should tell you that, at this point, she's under the impression that youre - a - ah \n\ngeorge: a what? \n\njerry: a marine biologist. \n\ngeorge: (pauses) a marine biologist? \n\njerry: yes. \n\ngeorge: why am i a marine biologist? \n\njerry: i may have mentioned it. \n\ngeorge: but i'm not a marine biologist! \n\njerry: yes i know that. \n\ngeorge: so? \n\njerry: why, you don't think it's a good job? \n\ngeorge: i didn't even know it was a job. \n\njerry: oh it's a fascinating field! \n\ngeorge: well what if she calls me? what am i supposed to say?! (hand hits the table) \n\ngeorge: algae, obviously plankton, hmhm. i don't know what else i could tell ya, ah, oh i-i just got back from a trip to the galapagos islands, i was living with the turtles. \n\n[limo driving on the street -- then inside the limo: elaine, lippman, and testikov are talkin'] \n\nlippman: we have got you in a very nice hotel, i-i don't know how you like to work, but ah, i can arrange for an office if you like. \n\ntestikov: (russian accent) i work in hotel. \n\nlippman: oh. \n\ntestikov: is better. \n\ntestikov: away from all your little petty bickerings and interference. \n\nlippman: you know, tolstoy use to write in the village square. the faces inspired him. \n\ntestikov: (proudly) he did not need inspiration god spoke through his pen. hu hu hu (pounds his fist lightly on his heart) \n\nelaine: ohh, that is so true! (clutches her hands to her chest) \n\nlippman: yes. \n\nelaine: although one wonders if \"war and peace\" would has been as highly acclaimed as it was, had it was published under it's original title \"war---what is it good for?\" \n\nlippman: what? \n\nelaine: yeah. mr. lippman. it was *his mistress* who insisted that he call it \n\nlippman: elaine \n\n[background cars: honk honk] \n\nelaine: \"war and peace.\" \n\nlippman: elaine \n\nelaine: \"war--what is it good for.\" (sings) absolutely nothin' huh! say it again! ahehehehe \n\ntestikov: (quietly) ahhuuh \n\nelaine: (spoken to testikov) that's a song \n\nlippman: it (frustrated and trying to keep her from saying more) \n\nelaine: they-they took it from tolstoy. \n\nlippman: no. e-elaine. \n\ntestikov: war--what is it good for? \n\nlippman: it-no- it's just her sense of humor. \n\nelaine: no its not. that really is true. \n\ntestikov: what is that noise! \n\nlippman: its not \n\nelaine: yes it is \n\nlippman: no its not!! \n\ntestikov: that noise! \n\nlippman: it-it-its her purse. \n\ntestikov: where is that noise? its traveling up my spine! into my brain! \n\nelaine: oh, i \n\nlippman: it's coming from your purse. \n\nelaine: oh it must be my new organizer. \n\ntestikov: that noise! \n\nlippman: yesturn it off. \n\nelaine: right, i think its this \n\nlippman: no its the button. elaine \n\ntestikov: i can not stand it! \n\nlippman: it's the button at the top, the top. \n\nelaine: ok. i dont quite know \n\ntestikov: will you turn it off! \n\nlippman: the one at the top. \n\nelaine: yeah, im gonna work on that \n\ntestikov: aaach! \n\nlippman: yeah ohoo. \n\njerry: i did it for you. \n\ngeorge: i dont know whatcha had to tell her that for. you put me in a very difficult position, marine biologist! i'm very uncomfortable with this whole thing. \n\njerry: you know with all do respect i would think it's right up your alley. \n\ngeorge: well it's not up my alley! it's one thing if i make it up. i know what i'm doin, i know my alleys! you got me in the galapagos islands livin' with the turtles, i don't know where the hell i am. \n\njerry: well you came in the other day with all that whale stuff, the squeaking and the squealing and \n\ngeorge: look, why couldn't you make me an architect? you know i always wanted to pretend that i was an architect. well i-i'm supposed to see her tomorrow, i-i-i'm gonna tell her what's goin on. i mean maybe she just likes me for me. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: hey ya want these (he throws down the golf clubs -- kicks the bag hard) i don't want em! \n\njerry: what? \n\nkramer: i stink! i can't play! the ball is just sitting there, jerry, and i can't hit it! i only hit one really good ball that went way out there! \n\njerry: well what happened? \n\nkramer: i have no concentration! \n\njerry: what, what, what's wrong with you? \n\nkramer: sand, i can get rid of the sand. (he sits at the table, looking down his shirt) look theres still some in here, it won't go away! look i even got sand in the pockets! \n\njerry: hey come on, you're getting it all over the floor! \n\njerry: (to the phone) hello yeah yes it is really ah, ah could you hold on a second? (to george and kramer) hey listen to this, some woman found an electronic organizer, my name was in it, she wants me to help her track down the owner. \n\ngeorge: how'd she find it? \n\njerry: shes waking down the street and it hit her in the head! \n\ncorinne: so i am walkin' along, minding my own business when all off the sudden this thing comes flying out of nowhere and clonks me right on the head. \n\njerry: wow. \n\ncorinne: yeah, so they took me to the hospital \n\njerry: yeah \n\ncorinne: and they put me in this thing, that feels like a coffin, for forty-five minutes. have you ever been in one of those things? you could go berserk in there! \n\njerry: well you have insurance... \n\ncorinne: i wish! \n\njerry: unbelievable! \n\ncorinne: yeah. \n\njerry: what is with this thing. \n\ncorinne: (hits the organizer) i don't know, it never shuts up. so anyway, you could see why i would be interested in finding this person. \n\njerry: absolutely. you should not have to pay for that. \n\ncorinne: (hits the organizer, picks it up and hits it on to the table -- shouting) stop it! stop it! \n\njerry: let me have a look at this thing. \n\ncorinne: ya know it was somebody told me they thought they saw that thing come out of a limousine. \n\njerry: typical rich people, using the world for their personal garbage can. \n\ncorinne: boy am i lucky your name came up. i just pushed a button. \n\njerry: i would like to know what my names doin in this creep's organizer to begin with. \n\ncorinne: yeah. \n\njerry: who do i know who would have even been in a limousine yesterday anyway. uhh-o h-owow! \n\nkramer: wha-- oh, hey. \n\nelaine: hey, \"great\" organizer you gave me. \n\nkramer: oh, you liked it huh. \n\nelaine: it wouldn't stop beeping, in the car so testikov, through it out the window. \n\nkramer: oh. (continuing to itch and scratch from the sand) \n\nelaine: i transferred everything in there. i threw out my old book. i'm lost now, kramer. \n\nelaine: what, what is it? \n\nkramer: the sand, it's everywhere! (blows on his arm) \n\nelaine: ok i'll see you later. \n\nkramer: yei- \n\njerry: oh, there you are! \n\nelaine: there you are! \n\njerry: so? \n\nelaine: so? \n\njerry: so what do you have to say for yourself? \n\nelaine: so what do you have to say for yourself? \n\njerry: why should i have anything for say for myself? \n\nelaine: \"war-- what is it good for?\"! \n\njerry: a-ahahahahah. who told you? \n\nelaine: a-hu hu hu hu. yuri testikov, the russian writer! hellooo! \n\njerry: you told testikov, (elaine nods) that tolstoy wanted to name his book \"war-- what is it good for?\"? \n\nelaine: uh-hu. and do you know what happened? \n\njerry: can i take a guess? \n\nelaine: oh, please. \n\njerry: oh i don't know, he threw your organizer out the window? \n\nelaine: what, how did you know that? \n\njerry: because i know who has it. \n\nelaine: (gasps) how did you find it? \n\njerry: because the woman who got hit in the head with it found my name, called me up, and we met! \n\nelaine: (gasps) where is it, give it to me! \n\njerry: i don't have it! \n\nelaine: why not. \n\njerry: because she's not returning it until she gets the money back for the hospital bill. \n\nelaine: but i didn't do it. testikov did it, he should pay for it! \n\njerry: how much is testikov getting from pendant for this book? \n\nelaine: one million. \n\njerry: well that's a start. \n\ngeorge: then of course with evolution, the octopus lost the nostrils and took on the more familiar look that we know today. \n\ndiane: uh-really? \n\ngeorge: yeah, but if you still look closely you can see ah, a little bump where the nose use to be. huhuhuhu. \n\ndiane: wow. \n\ngeorge: but enough about fish, huhuhu. i can discuss other things you know, ah architecture. huhu. (makes a wide gesture with his arms) \n\njerry: you know what room testikov's in? \n\nelaine: yeah, 308. oh, i'm crazy for doing this! \n\njerry: well, you want your organizer back don't you? \n\nelaine: why are you so interested -- you want to take her out? \n\njerry: hey you know when superman saves someone no one asks if he's trying to hit on her! \n\nelaine: well, you're not superman. \n\njerry: well you're not lois lane. \n\nelaine: oh. listen, you got the tape-recorder. \n\njerry: yeah i got it. you sure you want to do this? (hands elaine the tape recorder.) \n\nelaine: yeah i gotta get testikov on tape. if this woman ends up in the \"new england journal of medicine\" i'm not gonna pay for it. \n\njerry: oh, here she comes. \n\njerry: hi. \n\ncorinne: hi. \n\njerry: elaine, this is corinne. \n\ncorinne: hello. \n\nelaine: hi, (sighs) you got the organizer? \n\njerry: all right lets go. we'll meet you back down here in ten minutes, hopefully with the money. \n\ndiane: your parents must be so proud of you, george. \n\ngeorge: oh, they're busting! \n\ndiane: hmhm. \n\ndiane: what are those people doing over there? \n\ntestikov: (in a loud and cranky voice) what, come in - come in - come in miss benes! that is if you can spare a minute from your busy schedule! and you bring guest for my entertainment? \n\nelaine: um, yes this is my friend jerry. um, he accompanied me, ya know (clears throat), single women in a big city can be dangerous, so \n\njerry: yeah. th-that's why i where these sneakers, in case of any trouble -- zip, i'm gone. (makes a running motion with both arms and his right foot) \n\ntestikov: yeah, yeah. the sneakers. all the americans with the sneakers. always running from something. ya ya, well sit, stop running, ehh. two minutes, i give you latest manuscript! \n\njerry: oh! rimsky -- great great book if i may say so sir. i almost read the whole thing. \n\nelaine: hmm. (she nods in agreement) \n\ncorinne: what! \n\nhotel clerk: if you can't thing off, i'll have to ask you to leave. \n\ncorinne: i'm waitin for two people! (takes a drag on the cigarette) \n\nhotel clerk: well you can wait for them outside. \n\ncorinne: yeah, (she blows smoke out as she speaks -- it rises as in front of her) i guess i'd better. i wouldn't want to take any attention away from the hookers! \n\nhotel clerk: all right, all right. out, out. \n\ncorinne: whatever you say, cro..w-well! \n\ndiane: what's going on over here? \n\nwoman at beach: there is a beached whale, she's dying. \n\nvoice: is anyone here a marine biologist? \n\ntestikov: here is latest draft. i see you next week. same time, same day. (smacks the manuscript into elaines hand) on time please. \n\nelaine: (quietly) ok. \n\njerry: it was nice meeting you \n\ntestikov: aah. \n\njerry: youre a real pleasure. (jerry is being sarcastic) \n\ntestikov: ya ya. (wipes his nose with a handkerchief) \n\nelaine: uh-oh-ah, by the way mr. testikov um, do you remember the other day when we were in the limo and ah, my organizer started making noise and you threw it out the window? \n\ntestikov: (quietly) yes. how could i forget? heehe. \n\nelaine: ( laughs) well um, would you believe that it actually, hit somebody in the head. \n\njerry: right in the head! (leans in and points at testikov) \n\nelaine: boing! hehe hehe. (makes a hand gesture to her forehead and away) \n\ntestikov: (shouting) what is that noise! \n\nelaine: oh thats nothing. um and anyway um \n\ntestikov: whats going on huh! (he grabs elaines purse) that noise! \n\nelaine: no, no that's my purse! \n\ntestikov: that noise! \n\nelaine: no, get-get off my purse! \n\ntestikov: agh, its recorder! \n\nelaine: no that's radio! \n\ntestikov: ha! (he clicks the player off) you are spying on me! \n\ncrowd: come on! save the whale! you gotta do it! \n\ndiane: save the whale george... for me. \n\ngeorge: so i started to walk into the water. i won't lie to you boys, i was terrified! but i pressed on -- and as i made my way passed the breakers a strange calm came over me. i-i don't know if it was divine intervention or the kinship of all living things but i tell you jerry at that moment  i was a marine biologist! \n\nelaine: george ive just reading this thing in the paper, it's unbelievable! \n\ngeorge: i know i was just telling them the story. \n\nkramer: well come on george, finish the story. \n\ngeorge: the sea was angry that day my friends like an old man trying to send back soup in a deli! \n\ngeorge: i got about fifty-feet out and suddenly, the great beast appeared before me. i tell ya he was ten stories high if he was a foot. as if sensing my presence he let out a great bellow. i said, \"easy big fella!\" and then, as i watched him struggling i realized, that something was obstructing its breathing. from where i was standing i could see directly into the eye of the great fish! \n\njerry: mammal. \n\ngeorge: whatever. \n\nkramer: well then, what did you do next? \n\ngeorge: well then, from out of nowhere, a huge tidal wave lifted me, tossed like a cork and i found myself right on top of him, (elaine gasps quietly ahhhh) face to face with the blow-hole. i-i, i could barely see from the waves crashing down upon me but, i knew something was there so i reached my hand in, felt around and pulled out the obstruction! \n\nkramer: what is that a titleist? \n\ngeorge: (silently squinches his mouth and nods at kramer) \n\nkramer: a hole in one eh. \n\njerry: well the-the crowd must have gone wild! \n\ngeorge: ohh yes, yes. yes jerry they were all over me. it was like rocky 1, hm. diane came up to me, threw her arms around me \n\nkramer: (quietly) um-hm. \n\ngeorge: kissed me. we both had tears streaming down our faces. i never saw anyone so beautiful. it was at that moment that i decided to tell her that, i was not a marine biologist. \n\njerry: wow! what'd she say? \n\ngeorge: told me to \"go to hell!\" and i took the bus home. \n\njerry: all right lets go. \n\nelaine: what, are you in a bad mood? \n\njerry: ahhh got my laundry back. \n\nelaine: ohhh! golden boy? \n\njerry: he didn't make it. \n\nelaine: i'm sorry. (pats him on the arm) \n\njerry: yea. (pulls at the t-shirt) this is golden boy's son baby blue. \n\nkramer: (to george) what's with you? \n\ngeorge: sand. it's everywhere \n\nkramer: yep. \n\njerry: aren't mannequins an insult to your imagination? you couldn't possibly visualize a sweater so we'll show you on this life size snotty puppet. i guess when they finish with them they become crash test dummies. that's the end of the line for a mannequin. \"what ever happened to bob?\" \"have you seen that new volvo commercial? he's got a bulls eye right in his face.\" mannequins are only used for car accidents and fashion, i guess these are the two situations that it's impossible for us to imagine ourselves. well dressed or getting killed. i'm sure there is some pro-mannequin organization that doesn't even like you to use the term mannequin. \"hey they're not mannequins, they're the life deprived.\" \n\naudrey: hum! that was really good! \n\njerry: yeah. are you full? \n\naudrey: oh no, i've had just enough. \n\njerry: ah, here we go... apple pie! best apple pie in the city. (jerry starts eating) mmm, delicious. i'm not waiting for you. take some. \n\naudrey: no thanks. \n\njerry: you're not gonna have any? \n\naudrey: no (with a disgusted face) \n\njerry: do you not like apple pie? \n\naudrey: no, it's not that. \n\njerry: well, at least taste it. \n\naudrey: no (a resolute \"no\") \n\njerry: you won't even taste it? \n\naudrey: no. \n\njerry: come on, try it! (audrey shakes her head doing \"no\") a little taste! (still shaking) come on. (still shaking) \n\njerry: she wouldn't so much as taste it. \n\ngeorge: did she say why? \n\njerry: no. she wouldn't say anything. she just kept shaking her head like this (imitating audrey) \n\ngeorge: maybe she's diabetic. \n\njerry: no. she carries entemanns doughnuts in her purse. \n\ngeorge: maybe you said something that offended her. \n\njerry: the only thing i can think of is i told her we should have those moving walkways all over the city. \n\ngeorge: like at the airport? (getting excited) \n\njerry: yeah. \n\ngeorge: that's a great idea!!! \n\njerry: tell me about it! \n\ngeorge: we could be zipping all over the place. \n\njerry: they could at least try it. \n\ngeorge: they never try anything. \n\njerry: what's the harm? \n\ngeorge: no harm! \n\njerry: (still talking to george) i'm sorry. there's no reason for her not to taste that pie. \n\nelaine: who wouldn't taste a pie? \n\njerry: audrey. \n\nelaine: dump her. \n\njerry: boy, i never broke up with anyone for not tasting pie??? \n\nelaine: (piffling) i once broke up with someone for not offering me pie. \n\njerry: you did? \n\nelaine: he could be eating a gyro, he wouldn't offer me anything. it's a sickness. \n\ngeorge: well, i can't walk anywhere now. i'm just gonna be wishing there were walkways. (seeing elaine removing her shoe) what are you doing? \n\nelaine: i got a pebble. \n\njerry: boy, i never heard of that happening to a woman? \n\nelaine: what the hell does that mean? \n\nkramer: hey! elaine. go like this. (imitating a mannequin posture) \n\nelaine: what? why? \n\nkramer: do it. do it. this. \n\nelaine: like... (doing it) like this? \n\nkramer: oh yeah! it's you! \n\nelaine: what's me? \n\nkramer: (to the gang) there's a clothing store downtown. they got a mannequin in there that looks exactly like elaine. \n\nelaine: get out! \n\nkramer: it's uncanny! it's like they chopped off your arms and legs, dipped you in plastic, and screwed you back all together again, and stuck you on a pedestal. it's really quite exquisite. \n\ngeorge: kramer, what's the name of the store with the mannequin? \n\nkramer: rinitze. (he takes jerry's spatula and starts rubbing his back with it) oh yeah... \n\njerry: (to kramer) uh... may i help you? (wondering what the hell's kramer doing) \n\nkramer: it's this itch. i was watching tv without my shirt on, and one my couch cushions didn't have any fabric on it. \n\ngeorge: wait a minute, rinitze? don't they have somme really cool suits in there? \n\nkramer: real boss! \n\nelaine: i'm going down there. \n\ngeorge: i'm gonna go with you. i gotta get a new suit. i got a second interview with mackenzie, and i think i'm really close. they're all taking me out to lunch on friday. \n\nelaine: (grabbing george by the arm, hurried to leave) let's go. \n\ngeorge: all right. all right. (they both leave) \n\nkramer: (leaving too, with the spatula) are you gonna need this? \n\njerry: keep it. (implied please) \n\nelaine: it looks exactly like me. \n\ngeorge: it's like some pod landed from another planet and took your body. don't fall asleep elaine. \n\nelaine: what's going on here? how do you think this happened? \n\ngeorge: whoa, look at this. this is a beautiful suit. huh? \n\nelaine: you think that could be a coincidence george? is that possible? \n\nsaleswoman: (european accent) you are perfect for that suit. \n\ngeorge: you think so? \n\nelaine: (to the saleswoman) excuse me. where did this come from? \n\nsaleswoman: i don't know. \n\ngeorge: you really think this looks o.k. on me? \n\nsaleswoman: fabulous. perfect fit. and it's the last one we have. \n\nelaine: i'm sorry. you can't tell me where the mannequin came from? \n\nsaleswoman: i told you, i don't know. \n\nelaine: (irritated, but still polite) well, is there somebody around here i could talk to who would know? \n\nsaleswoman: why? \n\nelaine: isn't it obvious? this mannequin looks exactly like me. \n\nelaine: (upset) did you just roll your eyes at him? because let me tell you something, if anobody should be rolling their eyes, it is me at him about you. \n\nsaleswoman: i think maybe you're flattering yourself. that mannquein is wearing a twelve hundred dollar gaultier dress. \n\nelaine: what are you saying, that i'm not good enough for this hideous dress? (looking at her name tag) listen natasha... i wouldn't be caught dead wearing your crummy little euro-trash rags. (to george) i'll meet you outside. \n\nsaleswoman: what is her problem? \n\ngeorge: ah, pfft! what can you do? (looking at a tag on the suit) is this the price tag? \n\nsaleswoman: yes. \n\ngeorge: yes, hello. party's over. (taking off the suit) \n\nsaleswoman: i'll tell you a little secret. we're having an unadvertised sale starting friday, that suit will be half-price. \n\ngeorge: so you think you can put the suit aside and hold it for me? \n\nsaleswoman: oh, i'm afraid i could't do that. it wouldn't be fair to the other customers. \n\ngeorge: oh yes, of course, and we have to be fair. (placing the suit further away in the rack) \n\nelaine: so, i found out who supplies the mannequins and i called 'em up. \n\nkramer: well, how did they get your face? \n\nelaine: i don't know. they wouldn't tell me. (jerry is not listening, he's looking at two women sitting in the other booth) jerry? je... hello? \n\njerry: (jerry gets up and walk to these persons) uh... excuse me. i couldn't help but notice you offered her a piece of your pie. \n\nwoman 1: that's right. \n\njerry: and you waved it away. \n\nwoman 2: right. \n\njerry: did you give her a reason? \n\nwoman 2: yes, i was full. \n\njerry: you were full. so you gave a reason. you didn't just shake your head. \n\nwoman 2: no, i'm not a psycho. \n\njerry: exactly. you're not a psycho. you've been very helpful. thank you very much. allow me to leave the tip. (sits back with elaine and kramer) well, i think we proven who the psycho is. \n\nelaine: we certainly have. \n\nkramer: hey, elaine scratch my back. \n\nelaine: no way! \n\nkramer: come on, one lap around. \n\nelaine: no. \n\nkramer: it will be a funky adventure. \n\nelaine: kramer, forget it. \n\nkramer: jerry, how about you? \n\njerry: i think you know my policy. \n\nkramer: i'm going home to spatula. (picks up the check and walks to the cashier) \n\nelaine: i thought george was meeting us here? \n\njerry: no he's going downtown to guard the suit. \n\nelaine: he's guarding a suit? \n\nolive: (the cashier; to kramer) do you need some help with that itch? \n\nkramer: madam, i pray you're not toying with me. (olive shows her long finger nails) whoa. \n\nolive: turn around. \n\nkramer: oh, all right. (olive scratches, kramer enjoys, elaine and jerry watch.) \n\nsaleswoman: (makes a guy trying the suit) it fits you perfectly. \n\nbob: you think so? (she nods and walks away) \n\ngeorge: (outside, looking the guy trying the suit through the window, and thinking out loud) what's this? can't i leave this place for a second? (goes in, take off his jacket, walks to the guy and talks to him with an european accent) can i help you? \n\nbob: i'm buying the suit. \n\ngeorge: no, no, no, this suit is not for sale. (tries to take off the suit from the guy) \n\nbob: excuse me, do you work here? \n\ngeorge: (leaving the european accent) no. (laughs) \n\nbob: then what the hell business is it of yours? \n\ngeorge: look, i'm doing you a favor. they're having an unadvertised sale. this suit is gonna be half-priced starting ... monday. \n\nbob: really? \n\ngeorge: yea yea yea \n\nbob: this monday? \n\ngeorge: yes. now take off those pants. \n\nsaleswoman: actually, the unadvertised sale starts on friday. \n\nbob: friday? thanks. (gives a dirty look at george and leaves) \n\ngeorge: (to the saleswoman) you know honey for an unadvertised sale, you're doing a lot of yapping about it. \n\njerry: i can't beleive your father owns this place. so how are the desserts here? \n\naudrey: everything is delicious. \n\njerry: you've tasted them? \n\naudrey: um-hmm, i think almost all of them. \n\njerry: oh i see they have apple pie. \n\naudrey: mmm-hmm. \n\njerry: you've had the apple pie? \n\naudrey: many times. \n\njerry: audrey, i got to be honest with you. i'm a very curious guy. it's my nature. i need to know things. not tasting the apple pie the other day, i can't get past it. you obviously like pies. you carry doughnuts in your bag, you're not averse to pastry. surely you could see how such a thing would prey on my mind. \n\naudrey: can we drop this? \n\njerry: (like a frustrated child) why can't i know? \n\naudrey: ah! poppie. \n\npoppie: sweetheart, hello. \n\naudrey: poppie, this is jerry. \n\npoppie: welcome (shakes jerry's hand) \n\njerry: hello poppie. \n\npoppie: don't fill up on the bread. i'm making you a very special dinner. very special. (he leaves) \n\njerry: the pies. i'm going to the bathroom. you know. (he leaves) \n\n[poppie's restaurant: bathroom] \n\npoppie: ah, jerry! tonight you in for a real treat. i'm personnaly going to prepare the dinner for you and my audrey. \n\naudrey: jerry are you ok? \n\njerry: huh? \n\naudrey: is anything wrong? \n\njerry: no, nothing. \n\naudrey: you look like you've seen a ghost. \n\nolive: (to another cashier) i'll see you tomorrow. \n\nkramer: hey. these are for you olive. \n\nolive: thank you. \n\nkramer: ohh! \n\npoppie: here it is. \n\naudrey: wait till you taste this. (she eats) poppie, this is perfect. \n\npoppie: (to jerry) well? \n\naudrey: jerry have some. (jerry shakes his head doing \"no\") you're not gonna taste it? (still shaking) jerry. (still shaking) \n\njerry: so she tought i did it to get back at her \n\ngeorge: why didn't you just tell her? \n\njerry: i don't think that's the kind of thing you wanna hear about your father. but i'll tell you when he came out of that bathroom and he was kneading that dough, it was a wild scene. \n\ngeorge: how could he not have washed? \n\njerry: even if you're not gonna soap up, at least pretend for my benefit. turn the water on, do something. \n\ngeorge: yeah, just like i do. \n\njerry: you know a chef who doesn't wash is like a cop who steals. it's a cry for help, he wants to get caught. \n\ngeorge: well, i think poppie's got some problems. there's a whole other thing going on with poppie. so how did you leave it? \n\njerry: we haven't spoken. \n\nkramer: well, i'm not gonna need this anymore. i got olive. (jerry throws out the spatula) \n\ngeorge: olive? \n\nkramer: yeah. my lady friend down at monks. \n\ngeorge: oh. \n\nkramer: you guys ought to see the way she works her nails across my back. ohh! she's a maestro. the crisscross. the figure eight, strummin' the ol' banjo, and this wild, savage free-for-all where anything can happen. \n\ngeorge: i got to get downtown and buy that suit. the store opens in twenty minutes. \n\nkramer: is that elaine mannequin still there? \n\ngeorge: yeah. \n\nkramer: yeah. \n\ngeorge: the last time i saw her, she was naked. \n\njerry: yeah, and poppie's got problems... \n\nbob: where is it? where is it? \n\ngeorge: (george takes out the suit from the other rack) well, look at this. (innocently) this doesn't belong here! someone has made a terrible mistake. \n\nbob: you bastard! you hid the suit. \n\ngeorge: hid? i have no idea how this suit got misplaced. nevertheless, i do believe i shall purchase it. \n\nbob: i hope you rot in that suit. look i'm gonna get you for this. i don't know how, but i'm gonna get you. you are going to pay! \n\ngeorge: oh, i'll pay. half-price. arrivederci my fellow 40-short. \n\nelaine: so i made a little list of people who might've made the mannequin. you know, possible suspects. \n\njerry: yeah, all right. go ahead. (not very interested) \n\nelaine: there's this blind guy at a party i was at, and he felt my face for a really long time. you know, to see what i looked like. he almost put his finger up my nose. \n\njerry: (very disinterested) hum... ok, what else you got? \n\nelaine: ok, i'm not gonna tell you the rest of the list. \n\njerry: oh, because i didn't think the blind guy did it? \n\nelaine: because you have an attitude. \n\njerry and elaine: oh! \n\njerry: georgio! nice duds! \n\ngeorge: you're telling me. (he walks around and the suit makes a swooshing sound) so, what do you think? \n\njerry: did you hear something? \n\nelaine: yeah, like a swoosh. \n\njerry: yeah. \n\nelaine: (feels the fabric) it must be the fabric. it's rubbing between you thighs when you walk. that's what's making that swooshy sound. \n\ngeorge: i probably didn't hear it on the way over because of the street noise. (he panics) this is no good! i got to meet these guys from mackenzie for lunch in half an hour! \n\njerry: so what? what would they care? \n\ngeorge: this mackenzie, he's a bit of a nut. someone told me he fired the last guy because his nose whistled when he breathed. \n\njerry: so you think you're not gonna get the job because your pants make a noise? \n\ngeorge: let's say it comes down to me and one other guy. he's got a nice quiet suit, and i'm whooshing all over the place! who do you think he's gonna hire? \n\njerry: you know, i think all these interviews are making you nuts. \n\nkramer: hey jerry, i saw your girlfriend was in here before. \n\njerry: audrey? \n\nkramer: yep. sat down, had herself a piece of pie. \n\njerry: was it apple? \n\nkramer: what else? \n\njerry: this woman is bending my mind into a pretzel! \n\nstranger: do i know you? \n\nelaine: hmm... no you don't. \n\nstranger: yeah! you were wearing a g-string and one of those bras with points. \n\nelaine: the mannequin! \n\njerry: oh, i got to see this thing. \n\njerry: boy, the resemblance is uncanny. \n\nelaine: you think you can pose me however you want? that's my ass in your window! \n\nsaleswoman: it's our store and our mannequin, we can do whatever we want with it. \n\nelaine: no! you take that mannequin down right now, or i'm pressing charges. (jerry goes along) yes, this is my attorney. \n\nsaleswoman: (to jerry) yeah? what law am i breaking? \n\njerry: well, i believe there's some legal precedent - winchell vs. mahoney, \n\nelaine: uh-huh \n\njerry: the charlie macarthy hearings. \n\nelaine: uh-huh. are you taking this down? \n\nsaleswoman: i'm getting the manager. (she leaves) \n\nelaine: jerry get the car. (she's getting the mannequin) \n\njerry: what are you doing? \n\nelaine: just get the car! \n\njerry: elaine, as your legal counsel i must advise against this. \n\njerry: i don't know about you, but i'm getting a hankering for some doublemint gum. alright, i'm dropping you off at work, right? \n\nelaine: where are you going? \n\njerry: poppie's \n\nmackenzie: thanks for meeting me down here george. my office is out of control, (george's pants are making noise) phones ringing, people running in and out. (mackenzie stops talking and walking, george too) did you hear something? \n\ngeorge: no, i didn't hear anything. \n\nmackenzie: huh, that's strange. (they start walking again) it's quieter here. we can concentrate without people wooshing around... (he stops again, george too) that sound again. sure you didn't hear anything? \n\ngeorge: no, can't say as i did. \n\nmackenzie: kind of like a... rustling. \n\ngeorge: could be the leaves... \n\naudrey: that's right. poppie's on 77th. ok we'll see you at 800. bye-bye. \n\njerry: hello. \n\naudrey: what are you doing here? \n\njerry: so how was the pie? \n\naudrey: what pie? \n\njerry: the apple pie you had today at monks \n\naudrey: i'm very busy here. \n\njerry: pretty good, wasn'it? i told you you should've tasted it. \n\naudrey: you better not let poppie see you here. \n\nhealth inspector: all right, i'm looking for someone named poppie. \n\naudrey: uh, who are you? \n\nhealth inspector: board of health, we've had several complaints. \n\njerry: oh, about the... uh (jerry pretend to wash his hands) \n\nhealth inspector: are you poppie? \n\npoppie: i'm poppie. \n\nhealth inspector: i think you'd better come with me. \n\npoppie: what's the problem? \n\naudrey: what do they want from poppie? \n\njerry: well, poppie's a little sloppy. \n\nmackenzie: you taught i'd care about your pants wooshing? \n\ngeorge: i heard the last guy got fired because his nose whislted. \n\nmackenzie: no, no, no. he got fired because he wasn't a team player. that's something we don't joke about at mackenzie. you'll find we're team here george. we don't tolerate dissent. if you want to go your own way, you're in the wrong place. \n\ngeorge: no problem there. conformity is an obsession with me. \n\nwaiter: chocolate cream pie. compliments of the house. \n\nmackenzie: oh! hope you saved room for dessert. \n\nwaiter: (to george) the chef said that he made it special for you. \n\ngeorge: oh... (george looks around and sees the chef hiding behind a plant it's bob!) \n\nmackenzie: mmm.. best pie i've ever tasted. take a bite george. (george shakes his head doing \"no\") well, take a bite. it's delicious. (still shaking) i insist. (still shaking) \n\nbusinessman: if you're one of us, you'll take a bite. \n\njerry: so you didn't get the job. \n\ngeorge: no. but i was the only one at the table that didn't get violently ill. \n\njerry: kramer, you can't keep avoiding her like this, you're gonna have to say something. \n\nkramer: what am i supposed to say? \n\njerry: tell her you lost your itch. \n\ngeorge: what happened to your itch? \n\nkramer: i lost it two days ago. i've been faking it so i wouldn't hurt her feelings. \n\njerry: well you should tell her. \n\nkramer: i'll let her down easy. all right. (he gets up and walks to olive) well, hi olive. (she reaches for kramer's back) no, no. no more of that. there's something i have to tell you. \n\nolive: what? \n\nkramer: uh, well, there's someone else. \n\nolive: someone else? \n\nkramer: yeah, yeah, yeah... \n\nolive: who is she? \n\nkramer: her. (he points to the elaine mannequin in jerry's car) \n\nolive: her? \n\nkramer: yeah, there she is. that's my gal. \n\nolive: you're a liar. i've seen her in here before. she's not your girlfriend. \n\nkramer: now olive, look, i'm sorry. \n\nolive: why is she wearing her underwear? \n\nkramer: well, it's the style. (turns back to jerry) jerry give me the keys. (jerry throws his keys to kramer) well, i guess we're gonna go for a drive now. she really loves that. \n\ngeorge: did you ever solve the riddle of the pie? \n\njerry: no. that's one for the ages. but i think they're gonna put poppie away for a long long time. \n\nelaine: you guys are not gonna believe this. i just got a letter from a friend of mine in chicago who was shopping, and she said she saw a mannequin that looked just like me. what if there're more. where are they coming from? \n\nricky's boss: ricky, we've been getting a tremendous response to your tr-6 mannequin. \n\nricky: tr-6? i prefer to think of her as... elaine. \n\n[setting: comedy club] \n\nopening monolog: the bus is the single stupidest, fattest, slowest, most despised vehicle on the road. isn't it? you ever notice when you get behind the bus, people in your car go 'what are you doing? get away, come on.' the back of the bus is like an eclipse isn't it? people are just like 'the sun, where's the sun?' it's like this huge metal ass taking up the whole wind shield of your car. when it pulls out it even sounds like a fat uncle trying to get out of a sofa. (acts like he is trying to get out of a car and makes the sound of a bus/guy starting to get going) \n\n[setting: jerry and george on a bus] \n\ngeorge: it's just not good, it's not good. \n\njerry: it's not good. \n\ngeorge: i'm bored. she's boring, i'm boring, we're both boring. we got out to eat, we both read newspapers. \n\njerry: well at breakfast everybody reads. \n\ngeorge: no. lunch we read, dinner we read. \n\njerry: you read during lunch? \n\ngeorge: ya \n\njerry: oh, well. \n\ngeorge: there's nothing to talk about. \n\njerry: ya, what's there to talk about. \n\ngeorge: well at least you and i are talking about how there's nothing to talk about. \n\njerry: why don't you talk to her about how there's nothing to talk about? \n\ngeorge: she knows there is nothing to talk about. \n\njerry: at least you'll be talking. \n\ngeorge: oh shut up. \n\nal: hey, look who's here. \n\njerry: hey, al. \n\ngeorge: hey, al. how's it going? \n\nal: (extremely happy) deeply in love. we have soo many things to talk about. sometimes we'll talk all night, till the sun comes up (pauses in his happiness; to george) so how about you? \n\ngeorge: oh i'm seeing someone, yes. you know her, daphne bower. \n\nal: great girl. \n\ngeorge: we have no need to speak. we communicate with deep soulful looks. \n\njerry: like dwight and mamie eisenhower. \n\nal: (to jerry) oh did you hear about fulton? \n\njerry: ya. \n\nal: i went by the hospital to see him a few days ago (looking at jerry) think he'd really like you to come visit. \n\njerry: me? \n\nal: ya, he said he could use a good laugh. \n\ngeorge: what about me? \n\nal: (to george) he didn't mention you. (looks toward the front of the bus) this is my stop. uh see ya. \n\ngeorge: ya \n\njerry: ya, see ya. \n\ngeorge: deeply in love. if you can't say anything bad about a relationship, you shouldn't say anything at all. \n\njerry: (points to george) ya. \n\n[setting: jerry's apartment] \n\ngeorge: i didn't even know fulton was in the hospital. \n\njerry: could use a good laugh. you know what kind of pressure that is? come on, come with me. \n\ngeorge: na no, i'm not good in these situations. i can't hide my pity. i..i make em feel worse. \n\njerry: oh, stop it. \n\ngeorge: ya and also i'm afraid that people in that state are finally going to tell me what they really think of me. you know they got nothing to lose what do they care? \n\njerry: so you're not gonna come? \n\ngeorge: no but say hello for me. \n\nkramer: hey! \n\njerry: hey! hey mick. \n\nmickey: hey jerry. \n\nkramer: what's doing? \n\njerry: nothing, what's doing with you? \n\nkramer: same old, same old. \n\njerry: george this is mickey. \n\ngeorge: hi, nice to meet you. \n\nmickey: pleasure. \n\njerry: how's work going you guys? \n\nmickey: lets not even talk about it. \n\ngeorge: (to kramer) you got a job? \n\nkramer: ya, mickey. he hooked me up. we're stand-ins for the actors on 'all my children.' mickey, he's a stand-in for an eight year old kid and i stand in for the kids father. \n\nmickey: (to jerry then both jerry and george) but i got a big problem. the kid i stand in for, he's growing. he was four feet last month, now he's like four-two and a half. he shot up two and a half inches. i can do four-two, four-three is a stretch, any higher than that and i'm gonna be out on my ass doing that para-legal crap. \n\njerry: how do you stop a kid from growing? \n\nkramer: (to mickey) i told you, you should offer him some cigarettes. \n\nmickey: i offered him cigarettes, (to jerry and george) but his stupid mother is hanging around. she won't let him have any. \n\nkramer: (to mickey) what about lifts? \n\nmickey: (to kramer) out of the question. \n\ngeorge: (to mickey) can't you just switch with another midget? \n\nmickey: (turns and moves up to george, points his finger at him) it's little people, you got that? \n\nkramer: easy mickey, easy. \n\ngeorge: yap.. \n\nkramer: alright we gotta get back to the show. what are you guys doing? \n\njerry: i'm going to the hospital, to visit fulton. \n\nkramer: (on his way to the door) oh, oh well say hello for me. \n\nkramer: now look, we're going to stop at the shoe maker right now. you gotta get some lifts for your shoes. \n\nmickey: lifts?! look kramer you don't understand, this kind of thing is just not done. \n\nkramer: you wanna keep your job don't you? \n\nmickey: ya but.. \n\nkramer: yah! no buts \n\nmickey: kramer \n\nkramer: (with his hand in mickey's face) yaaaaah! \n\njerry: hey, woahoh fulton. it's me. \n\nfulton: hey jerry, good to see ya. i could really use a good laugh. \n\njerry: who couldn't. \n\nfulton: i haven't cracked a smile in months. \n\njerry: oh don't worry, you'll crack. cracking's inevitable, first you crack then you chuckle. that was the motto with the russians at the caesar leningrad... first you crack then you chuckle. (fulton looks at him not amused) you know because leningrad when the nazis attacked, it wasn't a very happy time... because of the war, famine, plus it was cold, very cold... they were eating each other. (nervous under the pressure; fulton not finding anything jerry is saying funny) maybe this isn't a good time for a visit. \n\nfulton: it's a fine time. \n\njerry: oh, alright ah well... there's a priest, a minister and a rabbi, and they're all staring at him.... \n\ngeorge: (sets down his paper) so how were the eggs? \n\ndaphne: eggs are eggs. \n\ngeorge: (not amused with her answer) eggs are eggs. that is very profound. (laughs; daphne goes back to reading her paper) by the same token you could say fish is fish. ha ha ha, i don't think so. (pauses) listen dophne \n\ndaphne: (correcting george) daphne. \n\ngeorge: daphne. i have to tell you something, this is very difficult... \n\ndaphne: (interrupts and hurriedly puts down her paper) oh, i forgot to tell you. al netchie called me today. \n\ngeorge: ya, ya. i bumped into him on the bus. what did he have to say? \n\ndaphne: he told me not to get involved with you. \n\ngeorge: what? \n\ndaphne: ya, he said you could never make a commitment to any one and you'd just wind up (reaches out and lightly slaps george's hand) hurting me. \n\ngeorge: he said that? (daphne shacks her head) what a nerve. how dare he say something like that. \n\ndaphne: is it true? \n\ngeorge: of course not. i mean sure, there may have been one or two occasions in the past, when i may have reacted in uh impulsive or somewhat immature manner, but those days are well behind me. \n\n[setting: abc studios] \n\nson: how long are you going to be away for daddy? \n\nfather: i'm not really going away, i told you, i'll be back every other weekend. \n\nson: don't go daddy, don't go. \n\nfather: now porter, you know your mother and i love you very much, but sometimes people fall out of love. now give me a big hug. \n\ndirector: (walks into the scene) ...and there's your scene. stand-ins \n\nkramer: yo \n\nstage hand (larry david's voice): alright you guys get on their spots so we can fix the lights. \n\nkramer: (taps the father on the shoulder) that's good work. \n\nmickey: (quickly with no acting) how long you going to be away for daddy? \n\nkramer: (trying to act like the guy playing the father) i'm not really going away, i told you i'd be back every other weekend. \n\nmickey: (tugs on kramer's coat) don't go daddy, don't...go. \n\nkramer: now listen porter, you know your mother and i love you very much. but sometimes people fall out of love. now give me a big hug. \n\nmickey: ah! (pauses for the hug) alright (kramer still holding on) alright! kramer! (pushes kramer off him) \n\ndirector: ok everybody that's lunch... one hour. \n\nkramer: how do those lifts feel? \n\nmickey: quiet. \n\ntammy: hi guys. \n\nmickey: hey tammy. \n\ntammy: hey, you look different. have you been working out? \n\nmickey: (looks at kramer) not that i know of. \n\ntammy: well whatever it is you're doing, keep doing it you look great. \n\nmickey: how about lunch? \n\ntammy: oh i can't today, but um i see it our future. (starts to leave) see ya kramer. \n\nkramer: ya. \n\ntammy: bye mickey \n\nkramer: ooo she likes you buddy (they to a high five hand shake) \n\nkramer & mickey: ya! \n\nmickey: all of a sudden. \n\nkramer: what? \n\njohnny: hey mick. \n\nmickey: how you doin' johnny? \n\njohnny: what gives...what's going on? goin' out with tammy? \n\nmickey: maybe. what's it to you? \n\njohnny: somethin different about you. \n\nmickey: i got my hair cut that's all (turns to look at kramer) \n\njohnny: nah, that's not it. something else... ya you look different. \n\nmickey: you don't, you got the same ugly mug since the day i met ya. \n\njohnny: i don't know what it is, but i'll find out. (walking away) i'll find out. \n\njerry: ..so uh she's just sitting there and a uh packyderm, you remember the derm. he says uh, i'm gonna go up to her. so we uh he uh picks up the two pieces of (wipes his brow) pizza and uh the uh and then they're steaming hot and they're burning his hands see so he... he's juggling em (does juggling motions) he's jugglin em, jus throwing them up in the air and just as he gets up to her down they go. (swallows and takes a breath) well we all just lost it. (fulton not laughing, stone faced) it was really really funny. \n\nphil: hey jerry. \n\njerry: hey phil how you doing? \n\nphil: you look terrific. \n\njerry: i got my health. \n\nphil: well, that's the most important thing. (to fulton) hey how ya doing fulton! octane, butane, nitrane! (fulton looks at him still stone faced and not amused. to jerry) how's he doing? \n\njerry: (wiping his brow) he could use a couple laughs. \n\n[setting: jerry's apartment] \n\nelaine: you should have told that story about packyderm dropping the pizza. \n\njerry: i told it. (answers the buzzer) ya? \n\ngeorge: (on the speaker) ya \n\njerry: ya. (hits the button, opens the door. to elaine) hey you know what as i was leaving i bumped into phil titola. he is one of the greatest guys. \n\nelaine: do i know him? \n\njerry: no, but i'll tell you something. of all the guys i know, i could envision you going out with him. \n\nelaine: if you were a woman would you go out with him? \n\njerry: if i was a woman i'd be down at the dock waiting for the fleet to come in. \n\nelaine: (laughs) ya, i bet you would. alright, give him my number. \n\njerry: alright. \n\ngeorge: this you are not going to believe. al netchie, that pimple. tells daphne, not get this 'not to get involved with me.' \n\njerry: what? \n\ngeorge: ya. that's what she told me. \n\nelaine: why? \n\ngeorge: because he's afraid she's gonna get hurt. \n\nelaine: is she? \n\ngeorge: of course. \n\nelaine: so? \n\ngeorge: wa.. he doesn't have to tell her. \n\nelaine: maybe he likes her. \n\ngeorge: oh no no no. he's deeply in love, and i was just about to break up with her when she told me. \n\njerry: so what are you gonna do? \n\ngeorge: well i can't break up with her now. \n\njerry: why? \n\ngeorge: because he said i was going to. \n\nelaine: so now you're going to keep going out with her, for spite? \n\ngeorge: yes, i am. \n\njerry: ya, i could see that. \n\ngeorge: i don't see any way around it. \n\njerry: no, me either. \n\ngeorge: what choice do i have? \n\njerry: none. \n\n[setting: abc studio locker room] \n\n[setting: jerry's apartment] \n\njerry: fulton's wife told me it's all my fault. she said since my visit he's taken a turn for the worse. \n\nkramer: did you tell him the packyderm story? \n\njerry: (yelling) yes i told him the packyderm story! \n\nkramer: maybe i outta go over there. \n\njerry: towards what end? \n\nkramer: i'm very good with sick people. they love me. when my friend len nicodemo had the gout, i moved into his hospital room for three days, the doctors were amazed at his recovery. \n\nkramer: hey. \n\njerry: hey mick. \n\nmickey: (to kramer) johnny vigiano went through my locker. \n\nkramer: yaoh! \n\nmickey: (slamming the door) that little bastard! he saw the lifts in my shoes. he knows i'm heightening. (to kramer) this never would have happened if you hadn't pushed me to get those things. i told you. \n\nkramer: hey, nobody put a gun to your head. \n\nmickey: ya well just keep out of my business you big ape. (pushes kramer) \n\nkramer: who you calling big ape? (pushes mickey back) \n\nmickey: you (grabs kramer) \n\njerry: (starts pulling them apart) alright break it up, break it up. come on, just cut it out now (kramer yells) \n\nkramer: (pacing back and forth) ya. \n\nmickey: i'm sorry kramer. \n\nkramer: no no it's alright, it's alright. you're stressed oout! \n\njerry: (to mickey) why does this guy johnny have it in for you? \n\nmickey: oh, he's always been jealous of me. i always get to stand in for the bigger stars; the cosby kids, ricky schroder, macaulay culkin. \n\nkramer: (whistles) what's he like huh? \n\nmickey: he's a good kid. \n\nkramer: ya? \n\njerry: so what does he care if you put lifts in? \n\nmickey: you don't understand. there's an unwritten code about this kind of thing. i could be ostracized. i remember when i was a kid, some guy tried to heighten. he lost his job, lost his friends, everything. oh, i knew i was crazy to try this kind of thing, but i was so desperate. (pauses laying on the couch; jumps up) what is this kid taking anyway? hormones? steroids? would you tell me!? \n\n[setting: george's car outside daphne's place] \n\ndaphne: george, tomorrow's sunday. we could sleep late, and get the paper and half breakfast and spend the morning together, go for a long walk, maybe do a little shopping, have lunch... \n\ngeorge: (interrupts her) you know what. i don't think i'm going to be able to stay over tonight. \n\ndaphne: why not? \n\ngeorge: i, i really should go home. ya.. actually i'm planning on spending the day with my father tomorrow (short laugh) we're uh we're going to a father-son picnic, just the two of us. \n\ndaphne: i thought we were going to spend the day together. \n\ngeorge: well dad's been planning this for such a long time, he bought a new blanket, and he got tha...that game with foam paddles and the velcro ball. (laughs) \n\ndaphne: have you given any more thought to what we talked about? you know, moving in? \n\ngeorge: yes, oh yes very much. \n\ndaphne: maybe you don't want to move in. \n\ngeorge: no, no i do. you know it's just... \n\ndaphne: (interrupting him) maybe al netchie was right, maybe i shouldn't have gotten involved with you. \n\ngeorge: (angry that she believes al was right) no he's not right. al netchie is not right! alright i'm canceling the father-son picnic. i don't know what he's gonna do with all that potato salad. \n\n[setting: elaine and phil in phil's car outside elaine's apartment] \n\nelaine: (phil cracking up) so then packyderm picks up the pieces of pizza, and mind you know they are burning hot.. he can bearly hold 'em. i mean he's like trying to juggle (does a juggling motion and begins laughing) the pizza, you know ah. and then they go flying out of... \n\nphil: (dying of laughter) i'm peeing in my pants. \n\nelaine: (cont.) they go flying out of his hands, and one lands on her face and the other lands on his face. (pause as they both continue to laugh really hard) and the whole place went crazy. \n\nphil: oh, i'm sorry, oh. what a story. \n\nelaine: i know, i know, i was unbelievable \n\nphil: oh that is one of the funniest stories i've ever heard. \n\nelaine: (wipes her eyes because she laughed so hard she cried) i know. \n\nphil: well this has been one hell of a night. \n\nelaine: oh, i'm sorry jerry didn't suggest this sooner. \n\nphil: you know, you really are beautiful elaine. \n\nelaine: oh, well, (pauses) good night. \n\nphil: good night? \n\nelaine: well (leans in to kiss phil, then looks down at his pants with a awkward look on her face) \n\n[setting: jerry's apartment] \n\njerry: (on phone) come on adrian give me another chance, i know i could cheer fulton up. i'll tell you what, i'll do my act (pauses for response from adrian) no new material (elaine enters) he's never heard it. he'll love it, i just did it at the concord last week, it killed. (waves hello to elaine; pauses for response from adrian) thank you, thanks fo.. you will not regret this. ok, bye. (hangs up phone; to elaine) hey. \n\nelaine: hello. \n\njerry: so? \n\nelaine: what? \n\njerry: come on. how was your date? \n\nelaine: oh, the date. the date. \n\njerry: ya how was it? \n\nelaine: interesting. \n\njerry: really. \n\nelaine: oh ya. \n\njerry: why what happened? \n\nelaine: let's see, (thinking) how shall i put this. \n\njerry: just put it. \n\nelaine: he took it out. \n\njerry: (confused) he what? \n\nelaine: he took (blows on her glasses twice to clean them) it out. \n\njerry: he took what out? \n\nelaine: it. \n\njerry: he took it, out? \n\nelaine: yessiree bob. \n\njerry: he couldn't. \n\nelaine: he did. \n\njerry: (motions of making out) well you were involved in some sort of amorous... \n\nelaine: noooo. \n\njerry: you mean he just \n\nelaine: yes. \n\njerry: are you sure? \n\nelaine: oh quite. \n\njerry: there was no mistaking it? \n\nelaine: (looks straight into his eyes) jerry. \n\njerry: so you were talking, (elaine makes an agreement sound \"mmm\") you're having pleasant conversation, (elaine makes an agreement sound \"mmm\") then all of sudden... \n\nelaine: yea. \n\njerry: it. \n\nelaine: it. \n\njerry: out. \n\nelaine: out. \n\njerry: well i, i can't believe this. i know phil, he, he's a good friend of mine. we play softball together. how could this be? \n\nelaine: oh it be. (sarcastically) you got any other friends you want to set me up with? \n\nkramer: hey. (to elaine) hey how was your date with phil titola? \n\nelaine: (to kramer) he took it out. \n\nkramer: maybe uh, it needed some air. you know sometimes they need air, they can't breathe in there. it's in human. \n\n[setting: monk's] \n\ngeorge: so she's just sitting there, she's having a pleasant conversation... and all of a sudden. \n\njerry: it. \n\ngeorge: it. \n\njerry: out. \n\ngeorge: out. (jerry shakes his head in agreement) wow. i spend so much time trying to get their clothes off, i never thought of taking mine off. (jerry nods; george looks at his watch) alright, hey come on, get out of here, dophne gonna be here any minute. \n\njerry: alright i'm going. \n\ngeorge: you know what i've come to realize? i'm not just bored. i genuinely dislike her. \n\njerry: well how long you are going to keep this up? \n\ngeorge: hey i'll get married if i have to. al netchie will think twice before he opens his mouth about me again. \n\njerry: you know george they are doing wonderful things at mental institutions these days. i'd be happy to set-up a meet and greet. \n\ngeorge: i'm very disappointed to here you talk like that. you still don't know what makes me tick. \n\njerry: yes i do. \n\ngeorge: what are you doing? \n\njerry: i'm going to the hospital to see fulton. i'm not even saying hello, i'm going right into material. \n\n[setting: fulton's hospital room] \n\nphil: ah hey jer. \n\njerry: oh hey phil. \n\nphil: you know i'm sorry things didn't work out with elaine. i don't know what i did wrong. \n\njerry: well, y..you showed her who you are. \n\nphil: oh, look at this, what she's got to breast feed in public. \n\njerry: ya, that's the.. last thing you want to see. well, next to last. \n\nphil: i'll see ya. \n\njerry: ya take it easy. \n\njerry: (acting like he was walking on stage) hey how ya doing? good to be here. \n\n[setting: abc studios set] \n\nkramer & mickey: rock, paper, scissors match. \n\nmickey: alright, rock beats paper. \n\nkramer: i thought paper covered rock? \n\nmickey: nah, rock flies right through paper. \n\nkramer: what beats rock? \n\nmickey: (looks at his hand) nothing beats rock. \n\nkramer: alright come on. \n\nkramer & mickey: rock, paper, scissors match. \n\nkramer: rock. \n\nmickey: rock \n\nkramer & mickey: rock, paper, scissors match. \n\nkramer: rock. \n\nmickey: rock. \n\nmickey: hey bob. what's with you? you gotta problem? (to kramer) you see that look he gave me? (starts to get up to go after him) \n\nkramer: (stops mickey) alright, come on. \n\nkramer & mickey: rock, paper, scissors match. \n\nkramer: rock. \n\nmickey: rock. \n\nmickey: hey tammy. \n\ntammy: hello. \n\nmickey: so tammy, finally, today's our big lunch. \n\ntammy: i don't think so. \n\nmickey: why not? what the hell are you talking about? \n\ntammy: look mickey, everybody knows that you're heightening. it's all over the set. \n\nmickey: wait, wait (goes to grab her arm) \n\ntammy: (recoils) don't touch me. you ought to be ashamed of yourself. all the progress we made over the years and you go and blow it by pulling a stupid stunt like this. \n\nmickey: wait a second, wait a second, you got me all wrong. it was all because of the kid. (numerous little people begin to crowd around them) (to tammy) the kid was growing. he shot up two and a half inches in a month. (to all the little people) i woulda lost my job. any one of you would have done the same. you got no right! i'm mickey abbott! i stood in for punky bruster when all of you was nothing. (seeing the crowd still doesn't agree with what he did, he points at kramer) it's all his fault. (kramer acts like he doesn't know what mickey is talking about) it was his idea. \n\ntammy: come on johnny, let's go get something to eat. \n\nmickey: (in complete disgust as seeing tammy leave with johnny) ah! (turns and looks at kramer) ah! \n\nkramer: what? \n\nmickey: ah! \n\nkramer: mickey! \n\n[setting: back in fulton's hospital room] \n\njerry: this guy's belching out vitamins.. \n\nfulton: (dying of laughter and coughing) stop. \n\njerry: (cont) and this whole justice league, batman, green lantern, wonder woman. you mean to tell me superman can't cover everything? \n\nfulton: (still laughing and coughing) stop. \n\njerry: for crying out loud, he's superman. (fulton stops laughing, jerry's face is stunned) fulton? (looks at him) fulton? \n\n[setting: back at monk's] \n\ndaphne: george, first let me just say i've never been with a guy who was so committed to commit. i mean it's so rare in men these days an, that's what makes this all the more difficult. \n\ngeorge: (happily) difficult? \n\ndaphne: the other day after work some girlfriends and i went to a bar for some drinks and there was this crazy mishap and i wound up meeting someone as a result. george... \n\ngeorge: (acting disappointed) oh, please don't. \n\ndaphne: uh, i'm sorry. i'm afraid the worst of it is it's someone you know. jerry persheck. \n\ngeorge: packyderm? \n\ndaphne: heh, he was carrying these two pieces of pizza... \n\nmeryl: good morning. \n\njerry: good morning. \n\nmeryl: how'd you sleep? \n\njerry: hey, you are the couch tonight, young lady. you were all over my side. \n\nmeryl: i was not! \n\njerry: c'mon, i was sleeping with one cheek off the bed! \n\nmeryl: by the way, you know you're falling way behind on the 'i love you's.' \n\njerry: no, no, 12-8! \n\nmeryl: no, it's 15-8. \n\njerry: i know i can't beat ya, i'm just trying to stay competitive. \n\nmeryl: alright c'mon, let's get some breakfast. \n\njerry: uh, let me get a coat. i think i'll uh try a sport jacket and scarf thing, you know, like an unemployed actor. (goes into his room, and comes back out with the jacket on.) ahh, haven't worn this one in a long time. \n\nmeryl (feels jerry's material): ooh, cashmere? \n\njerry: no, gore-tex. it's new. (checks his pockets.) hey, look at this locket. what the hell is this? there's a picture in here, look at that. \n\nmeryl: wow, this is really old. you don't know whose it is? \n\njerry: no, i haven't worn this jacket since i got it back from the dry-cleaner. maybe we should ask him. \n\nmeryl: alright, we'll stop over there. \n\njerry: yeah. what do you want to get for breakfast? \n\nmeryl: pancakes. \n\njerry: oh now, c'mon, you know i'm getting pancakes. \n\nmeryl: i don't know that! \n\njerry: but we can't both get pancakes, it's embarrassing. it's like one step from the couples who dress alike. \n\nmeryl: i'll get the short stack. \n\njerry: ah, that's why i love ya. 15-9. (they go out into the hallway and run into kramer and his african-american girlfriend, anna.) hey, how ya doin.' \n\nkramer: we just got back from breakfast. the pancakes were dynamite. \n\njerry: hey, is that my maple syrup? oh, ya. (kramer hands it over.) \n\nmeryl: you bring your own syrup? \n\nkramer: got to. \n\njerry (to meryl): you got a lot to learn about pancakes. \n\nmarty (looking at the locket): this is my wife. she died eight years ago. i been looking all over for this! \n\njerry: boy, it's a lucky thing i put the jacket on. but how did it get in the pocket? \n\nmarty: well, see here, the chain is broken...it must have slipped in when i was, uh...(gestures at the racks of clothes behind him.) \n\njerry: oh, wow. \n\nmarty: i turned my house upside-down looking for this! it's all i have left of her. \n\nmeryl: oh, that's so touching. \n\nmarty (to jerry): know what i'm gonna do for you? i'm gonna give you and your family 25% off all your dry-cleaning from now on. \n\njerry: oh, come on! \n\nmarty: what are you talkin' about? \n\njerry: it's silly! \n\nmarty: hey, forget it! \n\njerry: get outta here! \n\nmarty: it's done! \n\njerry (giving in): alright. \n\nmeryl: well, i guess i get it too, because i'm his wife. \n\nmarty (to jerry): i didn't know you were married. \n\njerry: oh...yeah...uh you've never met my wife, meryl? meryl seinfeld. \n\nmarty (to meryl): sure, you get the discount, too. \n\njerry: you might regret that, because the money my wife spends on clothes... \n\nmeryl: i'm taking him to the cleaners! \n\njerry: ah - see the sense of humor? c'mere, i'm so nuts about you...(hugs meryl.) i tell ya, it was fun being single, but when you meet a woman like this, you don't walk to get married - you run! \n\nelaine: oh, hi greg. \n\ngreg: haven't seen you in a while. \n\nelaine: yeah. well, actuall today was the first day i worked out since the central park mini-marathon. \n\ngreg: you ran the mini-marathon? \n\nelaine: no, but i exercised that day. (laughs.) \n\ngreg: well, i-i gotta take off. \n\nelaine: yeah, i guess as an airline pilot, you're one of the few people who can say that and mean it. (laughs again. greg looks at her, unamused.) um, do you have the time? \n\ngreg (looks at his watch): eleven-thirty. \n\nelaine (surprised): eleven-thirty? \n\ngreg: wait-wait, ten-thirty. sorry. \n\nelaine: oh. \n\ngreg: do you have to be somewhere? \n\nelaine: no. \n\ngreg: then what are you doing? \n\nelaine: i'm just waiting for my friend george, we worked out together. \n\ngreg: oh. well, it was good seeing you. \n\nelaine: yeah, nice to see you, too. \n\nmeryl: uh, would you, um...can i... \n\njerry: pardon? \n\nmeryl: the syrup. would you pass the syrup? \n\njerry (holds up the syrup bottle): oh, you want to try the syrup! (meryl smiles and takes it. the waitress comes over.) \n\nwaitress: can i get you anything else? \n\njerry: um, yeah...i think my wife and i'll have a little more coffee. \n\nwaitress: okay. \n\nmeryl: and a check for my husband. \n\njerry (toasts with his orange juice): to my beautiful wife. \n\nmeryl: to my adoring husband. \n\njerry: adoring? what about handsome? \n\nmeryl: i like adoring. \n\njerry: ya sure, adoring's good for you, what does it do for me? (meryl laughs. the owner of the coffee shop comes over.) \n\nowner (points at the bottle of maple syrup): excuse me...where did you get that? \n\njerry: i, uh...well... \n\nowner: uh, we don't allow any outside syrups, jams or condiments in the restaurant. (to jerry) and if i catch you in here with that again...i will confiscate it. \n\njerry: well, i-i-i told my wife not to bring it. \n\nkramer: really? 25% off? do i get that, too? \n\njerry: no, just meryl. \n\nkramer: why, why? why does she get it? \n\njerry: because she's my wife! (the door buzzer sounds; jerry answers it) yeh? \n\nelaine: (on buzzer) meh. \n\njerry: (buzzes her up) eh. (to kramer) you know and i'll tell ya, i'm really enjoying this marriage thing. you think about each other. you care about each other. it's wonderful! plus, i love saying \"my wife.\" once i started saying it, i couldn't stop - \"my wife\" this, \"my wife\" that...it's an amazing way to begin a sentence. \n\nkramer: \"my wife has an inner ear infection.\" \n\njerry: see? \n\nkramer: i like that! hey look, will you do me a favor? will you take my quilt into the cleaners for me, so i can get the discount too? \n\njerry: oh come on, we're gonna start doing this now? i can't be taking all your dry-cleaning in! \n\nkramer: c'mon, just this one time! it's expensive! \n\njerry: alright. (elaine enters.) \n\nkramer: hey. hey elaine, what do you say if neither of us is married in ten years, we get hitched? \n\nelaine: let's make it fifty. \n\nkramer: we're engaged! alright, i'm gonna get my quilt. (kramer leaves.) \n\nelaine: alright, listen to this. remember that guy i was telling you about at the health club? \n\njerry: the fly-boy. \n\nelaine: yeah. \n\njerry: hey, where's george? i thought he was with you. \n\nelaine: i waited, he didn't show up. anyway, this guy gave me an open-lip kiss. \n\njerry: hmm, so? \n\nelaine: so? we've always just kind've pecked. this one had a totally different dynamic. \n\njerry: really. \n\nelaine: yeah. i mean, his upper lip landed flush on my upper lip. but his lower lip landed well below my rim. \n\njerry: ohhh, moisture? \n\nelaine: yeah. definite moisture. \n\njerry: that's an open-lip kiss, alright. \n\nelaine: yeah. listen, i think he's giving me a big signal...maybe he wants to change our relationship. (the buzzer sounds, elaine answers it.) yeah? \n\ngeorge (on intercom): oh, uh...it's george. \n\nelaine: hey, what happened to you? \n\ngeorge (meekly): nothing...little problem. \n\nelaine: well, what was it? i mean, i was waiting. \n\ngeorge: can i come upstairs, please? (elaine pushes the button and lets george in.) \n\nelaine (to jerry): i mean, maybe he wants to ask me out. \n\njerry: i don't know why you're interested in this guy, he's a jerk. \n\nelaine: because, he doesn't pay any attention to me, and uh he ignores me. \n\njerry: yeah, so? \n\nelaine: i respect that. (george enters.) mmm, what happened? \n\ngeorge: nothing, i... said it was a little problem. \n\nelaine: yeah? what was it? \n\ngeorge (defensive): well...i was in the locker room showering, and i...i had to go, so... \n\njerry: here we go. \n\ngeorge: anyway, i think the guy in the shower opposite saw me. he gave me a dirty look. \n\nelaine: you went...in the shower? \n\ngeorge: yeah, so what? i'm not the only one! (kramer enters with his quilt.) \n\nelaine (to jerry): do you go in the shower? \n\njerry: no, never. \n\nelaine (to kramer): do you? \n\nkramer: i take baths. \n\ngeorge: well, what was i supposed to do? get out of the shower, put on my bathrobe? go all the way down to the other end? come all the way back? \n\nelaine: did you ever hear of...holding it in? \n\ngeorge: oh, no...no, that's very bad for the kidneys. \n\nelaine: how do you know? \n\ngeorge: medical journals! \n\njerry: do the medical journals mention anything about standing in a pool of someone else's urine? \n\njerry: hello. \n\nmeryl: oh, hi...honey. \n\njerry: what are you doing here? \n\nmeryl: i just thought i'd drop off a few things. \n\njerry: oh. (smiles at marty nervously.) well, i must have been in the incinerator room when you left. here you go, marty. (hands over kramer's quilt.) \n\nmarty: another quilt? huh? (uncle leo enters.) \n\nuncle leo: jerry! \n\njerry: uncle leo?! \n\nuncle leo: hello! \n\njerry: hello. \n\nmarty (to jerry): so, if you or your wife want to drop by on wednesday, it should be ready. \n\nuncle leo: your wife? \n\njerry (hoping leo will pick up on the scam): yeah...my wife. \n\nuncle leo: what are you talking about? \n\njerry: uh...i got married. \n\nuncle leo (shocked): you got married? i wasn't invited? nobody sends me an invitation? \n\njerry: well, it was sudden. \n\nuncle leo: are you ashamed of your uncle? do i embarrass you? \n\njerry: no, no, it was a small ceremony. \n\nuncle leo: haven't i always been a good uncle? \n\njerry: yes, yes, you have. \n\nuncle leo: who told you when you went to school that you print well? \n\njerry: you did, you did. \n\nuncle leo (to meryl): when he was younger, he had a beautiful penmanship. i used to encourage him to print. \n\njerry: i'm a good printer. \n\nuncle leo: i remember your 'v.' it was like a perfect triangle. whoa, there's my bus! (rushes out.) hello! wait! \n\njerry: uncle leo, wait! \n\ngreg: i'm glad you're here. this can get really boring. do you know where i can get some good olives? \n\nelaine: i can find out. \n\ngreg: would ya? \n\nelaine: sure. (thinking) ooh, a project. that's a definite signal. \n\ngreg: by the way, you look really great in that leotard. \n\nelaine: oh, thanks. (thinking) that's no signal, who wouldn't like me in this leotard? i look amazing in this leotard. \n\ngreg: hey, you know what's weird? i think i had a dream about you last night. \n\nelaine: (thinking) okay, he open-lips me, he dreams about me, we have an olive project...that's it, i'm asking this guy out. (to greg) um, you know greg, i... \n\ngreg: can i have a sip of your water? \n\nelaine: oh, yeah, sure. (hands greg her bottle.) \n\ngreg: thanks. (is about to take a drink, but wipes the neck of the bottle with his shirt first.) \n\nelaine: (shocked expression; thinking) oh my god. \n\ngreg (hands the bottle back): i'm sorry, what were you saying? \n\nelaine: oh, it was nothing, for-forget it. (george enters the gym.) \n\ngreg: see that guy right there? \n\nelaine: yup, you mean him? \n\ngreg: i caught him urinating in the shower. i'm thinking about turning him in, too. \n\nmeryl: honey? could you get me something to drink? \n\njerry (from his bedroom hallway, alluding to the fact that she should get the drink herself): you're right there. \n\nmeryl: c'mon, i'm sitting! (jerry walks to the kitchen, annoyed. meryl laughs at the tv show she's watching.) \n\njerry (looking in a drawer): honey, what'd you do with the can opener? \n\nmeryl: i didn't do anything with it. \n\njerry: well, it's not here, it was here yesterday. \n\nmeryl: it's in the first drawer. \n\njerry: i'm looking in the first drawer. it's not here. \n\nmeryl: yes, it is. \n\njerry (irritated): hey...i'm not stupid. i'm looking in that drawer, there's no can opener. \n\nmeryl: did i say you were stupid? \n\njerry (angrily): well, wouldn't i have to be? you tell me there's a can opener in the drawer, i'm looking in the drawer, there's no can opener - what other conclusion could one reach? (the phone rings.) \n\nmeryl (getting up): do you want me to go find it? \n\njerry (slams the drawer): yes. i do. you show me where there's a can opener in that drawer. (answers the phone.) hello! i'm sorry, i'm just fighting with my wife. \n\nhelen: jerry, we just heard, what's going on? \n\nmorty: why the hell didn't you tell us? \n\njerry: listen, ma... \n\nmeryl (looking in the drawer): it was in here yesterday! \n\njerry (angrily): yeah, that's what i said! \n\nhelen: who is she? when did this happen? \n\nmorty (to jerry): i told her you'd get married. she thought you'd never do it. \n\nhelen: morty, you're talking too loud. \n\nmorty: i'm not talking loud! \n\nhelen: you're hurting my eardrum. \n\nmeryl (looking for the can opener): well, you must have done something with it! \n\njerry (to meryl): i'm on the phone! \n\nhelen: is she there? can we talk to her? what's her name? \n\njerry: mom, i'm not married. \n\nhelen: what? \n\njerry: i'm not married! \n\nmorty: i knew it, i told you! \n\nhelen (to jerry): uncle leo said. \n\njerry: i'm just pretending i'm married to get a discount on dry-cleaning. \n\nhelen: a discount on dry-cleaning? \n\njerry (to meryl, who's making a racket in the kitchen looking for the can opener): could you make a little more noise? (to his parents) listen, i'm gonna have to call you later. \n\nmeryl (not finding the opener): well, i give up. \n\njerry: well, whoopie whoop. (meryl goes into the other room. kramer staggers in the door in his bathrobe.) \n\nkramer: got any coffee? \n\njerry: yeah. (kramer lurches into the kitchen, trips, and falls onto the kitchen floor.) i'll get it, i'll get it! take it easy, why are you so tired? \n\nkramer: my quilt is still at the cleaners. jerry, i can't sleep without my quilt. like the other night? i was cold. so, last night, i turn up the heat - it's too hot. i open up a window - it's too cold. (frantic) i can't get into a zone! \n\njerry: what is that? (points to kramer's pocket as meryl comes back.) \n\nkramer: huh? \n\njerry: that? \n\nkramer: oh, i forgot. (hands back jerry's can opener.) \n\njerry: hey, i'm sorry about all that can opener stuff. \n\nmeryl: yeah, me too. i love you. \n\njerry: i love you. \n\nmeryl: well, goodnight. \n\njerry: goodnight. (they kiss goodnight, then promptly roll away from each other and go to sleep.) \n\ngeorge: they could kick me out of the health club if he tells them! \n\nelaine: so what do you want me to do? \n\ngeorge: talk to him! \n\nelaine: how can i do that? \n\ngeorge: you said the guy gave you an open-lipped kiss! \n\nelaine (enunciating clearly so george gets the point): yes, but then he wiped his hand on the top of the bottle when i offered him water! \n\ngeorge: well, that doesn't mean anything! \n\nelaine: are you kidding? that's very significant! if he was interested in me, he'd want my germs! he'd just crave my germs! \n\njerry (patiently while watching tv): she's right, george. bottle-wipe is big. \n\ngeorge: well, what about the open-lipped kiss? \n\njerry: (still watching tv; sounds like basketball) bottle-wipe supercedes it. \n\ngeorge: yeah, you're right, you're right. (to elaine) alright, maybe he's not interested, but you still know him - can't you just ask him? \n\nelaine: george...but if i ask him now, i will have no chance of going out with him. \n\ngeorge: why? \n\nelaine: i...i don't know... \n\ngeorge: aha. aha. could it be because you don't want him to know that you have a friend who pees in the shower, is that it?! \n\nelaine: no, that's not it! \n\ngeorge: oh, i think it is! i think that's exactly what it is! \n\nelaine: why couldn't you just wait? \n\ngeorge: i was there! i saw a drain! \n\nelaine: since when is a drain a toilet?! \n\ngeorge: it's all pipes! what's the difference?! \n\nelaine: different pipes go to different places! you're gonna mix 'em up! \n\ngeorge: i'll call a plumber right now! (goes for the phone.) \n\njerry: alright, can we just drop all the pee-pipe stuff here? \n\nelaine (to george): okay! okay! okay, i will talk to him. (kramer enters.) \n\nkramer: jerry, i think that quilt is ready. \n\njerry: alright. \n\nkramer: well, you gotta pick it up for me! \n\njerry: alright, i'll pick it up, but it's the last time i'm doin' it! \n\nkramer: i'm so tired! \n\nelaine (to kramer): boy, you don't look good. \n\nkramer: huh? i don't? \n\nelaine: no, you look pale. \n\nkramer: pale? oh my god...i gotta meet anna's parents today! (the phone rings.) \n\njerry: hello? oh, hi honey. (annoyed, weary) yes, i told him. i'll get it. (george and elaine give each other a look, then leave jerry to argue with meryl on the phone.) whenever. okay, i'm sorry... \n\nmarty: i'm sorry, it's not ready yet. (kramer bursts in.) \n\nkramer: not ready? it has to be ready! what kind of a business are you running here? \n\nmarty: who the hell are you? huh, it's not your quilt. \n\njerry: he's a very good friend of mine, he's kind've like an older brother to me...when things don't go right, he kinda takes it personally. \n\nmarty: well, uh...maybe tomorrow. \n\nkramer (angrily, to jerry): maybe. \n\njerry: oh, it's okay, it'll be okay. \n\nkramer: alright, i'm gonna see you later. \n\njerry: where you goin'? \n\nkramer: i gotta meet anna's parents today, remember? i look terrible! i'm gonna hit the tanning machines. \n\njerry: i can't believe you still do that. you know those things are bad for ya. \n\nkramer: hey, that's how i maintain my glow. \n\njerry: i'm goin' home. \n\nkramer: ya. \n\npaula (to marty, in a foreign accent): excuse me? uh, how much would it cost to clean this? \n\nmarty: oh, about thirteen dollars. \n\npaula: thirteen? well, i can't afford that. \n\nmarty: well, i'm sorry. \n\nelaine: hi, greg. \n\ngreg: hey, elaine. i'll be off in a second. \n\nelaine: ok. (another guy approaches the exercise machine.) i got the machine next, buddy. (greg finishes up his workout and gets off the machine.) \n\ngreg (to elaine): oh, well, it's all yours. (walks away. elaine looks at the machine, then george runs over.) \n\ngeorge: what happened? did he bring it up? \n\nelaine: never mind that, look at the signal i just got. \n\ngeorge: signal? what signal? \n\nelaine: lookit. he knew i was gonna use the machine next, he didn't wipe his sweat off. that's a gesture of intimacy. \n\ngeorge: i'll tell you what that is - that's a violation of club rules. now i got him! and you're my witness! \n\nelaine: listen, george! listen! he knew what he was doing, this was a signal. \n\ngeorge: a guy leaves a puddle of sweat, that's a signal? \n\nelaine: yeah! it's a social thing. \n\ngeorge: what if he left you a used kleenex, what's that, a valentine? now you go up to him and you tell him that if he's thinking of turning me in, that i got the goods on him! \n\nelaine: no! i won't be a party to this. \n\ngeorge: so you're gonna let me get suspended for shower urination? \n\nelaine: okay, i'll talk to him. but you're putting me in a very difficult position. (walks away.) \n\npaula: i won't let you do this! \n\njerry: i want to! \n\npaula: but it isn't right! i can't. \n\njerry: give me the clothes. \n\npaula: jerry, please. what about her? \n\njerry: oh, the hell with her. (paula dramatically flees from the coffee shop. jerry thinks for a second, then follows her and catches up to her on the street.) \n\npaula: no, jerry, please! \n\njerry: i'm not gonna let you walk out of my life. \n\npaula (hands over the clothes): i can't fight you. (they embrace and kiss passionately.) \n\njerry: do you want box or hanger? \n\npaula: you decide. (jerry considers.) \n\nelaine: you're really working up quite a sweat today, huh? \n\ngreg: yeah. (spies the shapely manager of the health club.) oh, there's the manager. good. i think i'm gonna talk to her about that guy, you know, we cannot have people like that in here. \n\nelaine: are you sure you want to do that? \n\ngreg: yeah. he's disgusting! besides, i'll take any chance i can to talk to her. \n\nelaine: you're interested in...in her? (points at the manager.) \n\ngreg: very. \n\nelaine: ah. you know, uh..i'm engaged. (preens) yep, gettin' married in fifty years. (snaps the straps of her leotard against her chest and winces. george walks by the manager.) \n\ngreg: oh good, there he is. i wanna be able to point him out. \n\nelaine: you know, greg, i wouldn't do that if i were you. \n\ngreg: why? \n\nelaine: well, correct me if i'm wrong, but isn't it a violation of club policy to not wipe down a machine after using it? \n\ngreg: oh, i see...you're friends with the urinator, aren't you? \n\nelaine: yeah, well, at least he had a drain. \n\nmarty: here you go, mrs. seinfeld...with your 25% discount, it comes to $17.80. \n\nmeryl: here you go. (pays marty, then looks at the clothes on the hanger.) excuse me, this isn't mine. \n\nmarty: oh, yes it is. your husband brought it in himself. \n\nmeryl: really? (takes her change and grabs the clothes off the hanger.) thank you. (exits.) \n\nanna: that's him! (opens the door. kramer stands there, deeply tanned and smiling. anna and her grandfather are shocked.) \n\nmeryl (throws paula's clothes at jerry): you son of a bitch! \n\njerry: i'm sorry. \n\nmeryl: who is she? i want to know who she is. \n\njerry: it doesn't matter. i want a divorce. \n\nmeryl: a divorce? oh, so you can marry her and give her the discount? \n\njerry: yes, that's right. \n\nmeryl: what happened to us, jerry? \n\njerry: i'll tell you what happened. we got married. \n\nmeryl: i'm sorry, uh.. this is my fault. i pushed it on you. \n\njerry: no. i guess i just wasn't ready for the responsibilities of a pretend marriage. \n\nmeryl: goodbye, jerry. oh, i forgot...(reaches in her purse)...this is your maple syrup. \n\njerry: it's alright, i want you to have it. \n\nmeryl: (sentimental) okay, thanks. \n\njerry: we'll always have...pancakes. \n\nmeryl: bye, jerry. (exits.) \n\ngrandpa (to anna): i thought you said you was bringin' a white boy home! i don't see a white boy! i see a damn fool! \n\njerry: you know their timing couldn't be worse. \n\ngeorge: is there ever a good time to have your parents stay with you? \n\njerry: you don't understand, i haven't been together with rachel for like three weeks. first i was on the road, then my parents show up, i'm getting a little uh backed up. \n\ngeorge: when are they leaving for paris? \n\njerry: not for another three days. \n\ngeorge: what about her place? \n\njerry: she lives with her parents. \n\ngeorge: really? (jerry shakes his head) maybe this will become like a cool thing, living with your parents. \n\njerry: (sarcastically) ya, then maybe baldness will catch on. this will all be turning your way. \n\ngeorge: hey believe me, baldness will catch on. when the aliens come, who do you think they're gonna relate to? who do you think is going to be the first ones getting a tour of the ship? \n\njerry: the baldies \n\ngeorge: hey by the way my parents really want to have your parents over dinner before they leave town. \n\njerry: that's good, then i get the apartment for at least one night. you know i'm paying for this whole paris trip it's their anniversary present. \n\nalec: (walking over to jerry and george's table) hey guys. \n\ngeorge: hey alec \n\njerry: hey alec \n\nalec: this is joey. \n\ngeorge: hey joey, how you doin'? \n\nalec: (joey was about to talk) hey listen, i was wondering if either one of you guys would be interested in doing some work for the big brother program? i'm kinda running the local chapter. what do you say george? \n\ngeorge: well uh.... \n\njoey: (interrupts) wouldn't you like to be a big brother to someone like me? please? \n\ngeorge: well, sure joey, sure, i would be thrilled. \n\nalec: that's great george, thanks a lot i'll get in touch with you. \n\njoey: wouldn't you like to be a big brother.. \n\nalec: (grabs joey to stop him) ya alright joey that's enough, let's go (walking over to the counter) see ya. \n\njerry: what happened? \n\ngeorge: what could i do? did you see the mug on that kid? \n\njerry: (acting like joey) wouldn't you like to pass the ketchup to someone like me? please? \n\njerry: hey did you notice they moved where they do the interview on jeopardy now? \n\ngeorge: ya it used to be right in the middle of single jeopardy and now they do it right after single jeopardy. \n\njerry: ya, it's much better isn't it? \n\ngeorge: oh, n-no comparison. \n\njerry: hey, i gotta stop off at the bookstore to pick up my parents one of those french-english dictionaries. \n\ngeorge: (stops jerry realizing something) hey hey hey hey hey hey. \n\njerry: what? \n\ngeorge: your parents are going to paris right? \n\njerry: yea? \n\ngeorge: so i tell alec that i have to go to paris for an undetermined amount of time. then all i have to do is buy some post cards and have your parents mail them from paris. \n\njerry: what about little joey? \n\ngeorge: who? \n\njerry: ah, i think he's probably better off. \n\ngeorge: i'm trying to get out of this big brother program. so when you get to paris (handing morty the postcards) all you have to do is drop 'em in any mailbox. \n\nmorty: but there are no stamps on these. \n\ngeorge: well no not yet, you gotta buy french stamps (pauses) i-i'll reimburse you of course. \n\nhelen: why are you doing this? \n\njerry: he wants this guy to think he's in paris. \n\nhelen: why? \n\njerry: because george is a deeply disturbed individual. \n\nkramer: oh hey, helen uh, could i uh, use some more of your hand lotion? \n\nhelen: i told you it was good. (hands kramer the lotion) \n\nkramer: (putting on the lotion) ya \n\nhelen: it's from the saks fifth avenue in miami. \n\nkramer: mmm (smelling the lotion as he rubs it in) i'm gonna remember that if i'm ever in florida. \n\njerry: ya, or if you're ever on fifth avenue here in new york city, you could get some there. \n\nkramer: ya \n\nmorty: say those are some nice pants. i got a pair just like them at home. \n\nkramer: well uh that doesn't surprise me, ya i bought these at rudy's. it's a used clothing store. see when people like you die, the widows they bring in their wardrobes, they make a bundle. \n\ngeorge: really? my father has a ton of old clothes just sitting up in the attic, y-you think they're worth something? \n\nkramer: ya if they're vintage, and you're a widow. \n\ngeorge: what happens if the husband dies after the wife, who brings in the clothing in then? \n\nkramer: well i suppose the children do. \n\ngeorge: (pondering) yes i suppose they do. \n\nkramer: (takes another smell of his hands) alright i gotta a ten o'clock, i'll see everybody later. \n\ngeorge: (grabbing his jacket) hey oo, i just remembered uh my parents really wanna have you guys over for dinner before you leave town. what about tonight? \n\nhelen: tonight? \n\ngeorge: yea they're making paella. \n\nhelen: (looking at morty) uh oh i don't think we think we can make it tonight, (turns toward george) we have plans. \n\njerry: (watching the whole conversation from his desk) what plans? \n\nhelen: (turns to jerry) we have plans. \n\njerry: where'd you get plans? \n\nhelen: (annoyed) we have plans. \n\ngeorge: well um, what about tomorrow night? \n\nhelen: (turns back toward george) maybe \n\ngeorge: ok uh, i guess i'll tell them that. \n\nmorty: (to george as he is about to leave) hey give 'em our best though. \n\ngeorge: (quietly) ya. \n\njerry: (walking over toward george and the door) i'll call you later. \n\ngeorge: ya. \n\njerry: so what plans do you have? \n\nmorty: none \n\njerry: so how come you're not going over there for dinner? \n\nhelen: jerry we don't care much for the costanzas'. \n\nmorty: we can't stand them. \n\njerry: really? since when? \n\nhelen: since always. we've never liked them. \n\njerry: why? \n\nhelen: well they're so loud, they're always fighting it's uncomfortable, you never notice? \n\njerry: no i notice but they're from your age group i didn't know you could detect abnormal behavior among your own kind. \n\nmorty: well we do. \n\njerry: ya? \n\nelaine: it's us. \n\njerry: u-oh come on up. (buzzes them up) it's elaine you don't have a problem with her do you? \n\nhelen: we adore elaine. \n\njerry: she wants to say hi, she's with her new boyfriend. \n\nhelen: what's he like? \n\njerry: he's nice, bit of a close talker. \n\nhelen: a what? \n\njerry: you'll see. (pause) boy, i had no idea you felt this way about the costanzas' \n\nhelen: they're exhausting it's like being in an asylum. \n\neveryone: hi. \n\nmorty: hello elaine \n\nelaine: this is aaron. \n\nhelen: hello aaron \n\nmorty: hello. \n\naaron: (getting up in helen's face) so how long you folks in town? \n\nhelen: oh, three more days, three more days then we're off to paris. \n\naaron: ah \n\nmorty: we're going with a select charter group. \n\naaron: i love france, (moving over to morty's face) i was just there last year. in fact, you know i still have an envelope full of french franks, i'll give 'em to ya. \n\nhelen: we can't take money. \n\naaron: oh, no, it's a gift. (looking toward elaine) from us. \n\nelaine: oh, that is soo nice (very elaborate nice) aaron. isn't he nice? (to helen) so listen has jerry been showin' you a good time? \n\njerry: no i haven't. \n\naaron: you know (to morty) i have a friend who works at the metropolitan museum of art. how would you like a behind the scenes tour? \n\nhelen: (grabbing aaron) really, you could do that? \n\naaron: (up in helen's face) easily \n\nhelen: i wouldn't be any trouble? \n\naaron: (gets closer) of course not. \n\nhelen: when would we go? \n\naaron: how about right now? \n\nmorty: i'm ready \n\nhelen: are you sure? \n\naaron: yes. \n\nhelen: ok, let me get my coat. \n\naaron: (walking over to elaine and getting into her face) elaine what do you say? \n\nelaine: w-well i don't think so aaron, uh, i have plans. \n\naaron: oh. (getting into jerry's face) how about you jerry? \n\njerry: i'm swamped. \n\naaron: you sure? you could examine the art work up close. \n\njerry: maybe i'll try and catch up with you. \n\nelaine: (under her breath) ya that'll happen) \n\naaron: (moving toward the door) alright. we're off. \n\nmorty: ok, bye. \n\nhelen & aaron: bye. \n\njerry: ok buh bye. have a good time. \n\nelaine: bye. \n\naaron: see everybody later (morty and helen leave; aaron closes the door blowing elaine a kiss) \n\njerry: ok. \n\nelaine: why would he ask your parents to go to a museum? \n\njerry: i don't know. \n\nelaine: what is that? \n\njerry: maybe he was just trying to be nice. \n\nelaine: have you ever heard of anyone doing anything like this? \n\njerry: wait a second, he just did me a big favor. \n\nelaine: what? \n\njerry: (dialing) he got em out of the house. \n\nelaine: what? \n\njerry: call rachel. \n\nelaine: oh. \n\njerry: (on the phone) ah no, i got the machine. rachel! are you there?! i got the place to myself for a few hours! rachel! where are you? rachel! (hangs up the phone very disappointed) \n\nelaine: (putting on lipstick) sorry pal, wish i could help you out. \n\nfrank: they're not coming? \n\ngeorge: no, they had plans. \n\nestelle: how could they have plans? \n\ngeorge: that's what i wanna know. \n\nfrank: well what difference does it make? they wouldn't lie to us, they're are dear friends. \n\nestelle: what am i supposed to do with all this paella? \n\ngeorge: they said tomorrow, maybe. \n\nfrank: maybe? \n\nestelle: maybe they don't like us. \n\nfrank: why wouldn't they like us? (tastes the paella; disgusted) again with the pepper? what do you gotta use all the pepper for? \n\nestelle: ah keep quiet. \n\nfrank: what are you trying to set my mouth on fire? \n\ngeorge: i don't know what the reason could be. \n\njerry: (disappointed) oh, hi, hi. \n\naaron: ah jerry you would not believe the time we had. \n\nhelen: aaron is quite the tour guide. \n\nmorty: jerry have you ever seen any of those impressionist paintings? \n\njerry: oh sure like monet. \n\nmorty: don't you think he had to be uh near sighted? i mean know body would paint like that if they could see. it's all out of focus. \n\njerry: well he's from the impressionist school, you know like monet, manet, tippi tippi dayday. \n\nmorty: i say the guy was painting without his glasses. \n\njerry: (answering phone) hello? rachel, ya uh no they're back. \n\nhelen: jerry if you have something to do we could just sit right here and read. \n\njerry: uh haha ya well uh i'm sorry too i'll call you later, ok bye (hangs phone up) \n\naaron: well i should be going. \n\nhelen: oh thanks again. \n\naaron & helen: buh bye. \n\naaron: oh you must be kramer (advances on kramer to close to his face kramer walks back into the fridge to avoid him and falls to the ground) i've heard about you. \n\nkramer: you must be aaron, i've heard about you. \n\naaron: (laughing) well see you later. \n\nkramer: yeah. \n\naaron: (leaving) bye \n\njerry: bye \n\nkramer: so uh what are you guys doing for dinner? \n\nhelen: we have no plans. \n\nmorty: (noticing kramer's coat) look at that, helen do you see what he's wearing? that's the executive. \n\nkramer: now what is executive? \n\njerry: the belt-less trench coat. my father invented it. \n\nmorty: i sure did. raincoats were my business. the executive was a classic, these haven't been made in twenty years. \n\nhelen: why would they? know body bought them then. \n\nmorty: he's wearing one. \n\nkramer: yea these are a hot item over at rudy's. \n\nmorty: you don't say? you know i have boxes of those sitting in my garage in florida? \n\nkramer: get 'em up here. you give me twenty-five percent i-i'll take care of everything. \n\nmorty: you gotta deal. \n\nkramer: yaaaa. \n\njerry: this is like the meeting of smith and wesson. \n\nmorty: i'll call jack klompus, he's got a key to the garage. he can send them overnight delivery. \n\nhelen: you're gonna first start shipping boxes? we're leaving for paris in three days. \n\nmorty: he'll send them express. \n\nhelen: you're crazy. \n\nmorty: i'll tell you how crazy i am, i'm gonna pay for this whole trip with these coats. \n\njerry: n-na i'm paying for the trip. \n\nmorty: so much the better. \n\ngeorge: anyway it's kind of a fluke thing but uh i'll be leaving for paris in two days. i will send you a postcard when i get there. \n\nalec: paris huh? \n\ngeorge: yea, ya..ya know i feel terrible about joey but it's jus..it's a great business opportunity. i-i don't even know how long i'm gonna be away for. \n\nalec: where will you stay? \n\ngeorge: an apartment complex, the uh the eiffel towers. uumm like i said uh you'll be getting a postcard uh in a few days and again i'm sorry. \n\nalec: george, you have no idea how fantastic this is. \n\ngeorge: fantastic? \n\nalec: ya, we've been trying to reunite joey with his father who lives in paris. but he's afraid to fly alone, you know he's kinda withdrawn, but he seems to take to you. (george smiling in surprise) so it's a perfect solution. \n\ngeorge: how gee what a coincidence. \n\nalec: and you'll send me a postcard. \n\naaron: helen really seemed to respond to renoir. i think she really connected to the way he painted children. \n\nelaine: mm hmm. \n\naaron: and that morty, i'll tell ya that guy is full of life. (laughs) he was convinced monet was near sighted. i kept telling him \n\nelaine: aaron \n\naaron: yes? \n\nelaine: uh, let me ask you a question. how come you asked mr. and mrs. seinfeld to go to the museum with you? \n\naaron: well, they were in from out of town, i thought they would enjoy it. \n\nelaine: uhuh, um you didn't feel uncomfortable spending the whole day at the museum with two complete strangers who were more than twice your age? \n\naaron: no, it was fun. \n\nelaine: you had fun with mr. and mrs. seinfeld. \n\naaron: yea, they bought me a coke. \n\nkramer: so how'd you come up with the idea for the belt-less trench coat? \n\nmorty: i came home one night, and i tripped over one of jerry's toys. (jerry smiling points to himself and nods with cards in his hands) so i took out my belt just to threaten him, and i got a glimpse of myself in the mirror. \n\nkramer: how serendipitous. \n\nmorty: so that night i cut off the loops and the executive was born. \n\nkramer: mmm \n\njerry: he also came up with an idea for a brimless rain-hat but that never materialized. (to morty) alright come on let's play. \n\nkramer: did you call jack klompus yet? \n\nmorty: i haven't been able to reach him. hey i'll call him right now. \n\njerry: ah come on. \n\nmorty: just a second. (goes to grab the phone) \n\nhelen: jerry have you seen schindler's list? \n\njerry: no i haven't seen it yet. \n\nhelen: oh you have to go you have to \n\njerry: i'm going \n\nhelen: you have to \n\njerry: ok \n\nmorty: (on the phone) hello jack. \n\njack: ya \n\nmorty: it's morty \n\njack: who died? \n\nmorty: know body died. jack i want you to do me a big favor. (jerry holding up some cards looking at his father) in my garage there are a couple of boxes. \n\njack: what boxes? \n\nmorty: i'm gonna explain what boxes. \n\njack: alright how the hell do i know? \n\nmorty: anyway there are these three big boxes, you can't miss them. i want you to ship them here to new york for me. \n\njack: i thought you're going to paris \n\nmorty: i'm still going to paris. i got a big deal cooking here. \n\njack: what's in the boxes? \n\nmorty: raincoats. \n\njack: raincoats? (doris sighs) you think you're gonna sell those old crappy raincoats? that's garbage. \n\nhelen: i guarantee you doris is not letting him mail those boxes. \n\njack: when do you want these? \n\nmorty: send them tomorrow. \n\nestelle: you think they're coming tonight? \n\ngeorge: i dunno they said maybe. \n\nfrank: of course they're coming, they're leaving soon. if they don't come tonight they might not see us. \n\nestelle: well they better come, i got all this paella. \n\nfrank: i admire morty and helen going to france. we should take a trip, maybe a cruise. \n\ngeorge: yes a cruise, a long cruise, just the two of you. \n\nestelle: georgie what were you doing poking around the attic last night? \n\ngeorge: i-i wasn't in the attic. \n\nestelle: i heard noise. \n\ngeorge: maybe it was a mouse. \n\nfrank: (jumping to his feet) ok that's it! we're moving! \n\ngeorge: what? \n\nfrank: i will not tolerate infestation. \n\ngeorge: you haven't even seen one. \n\nfrank: don't you understand the very thought, the very idea, i'll never be comfortable again. \n\nestelle: alright frank that's enough. \n\ngeorge: i guess i've been hanging on to them for so long cuz i couldn't accept the fact that dad was really gone forever (hugs a piece of clothing) \n\nrudy: uh huh. \n\ngeorge: they will get a good home won't they? \n\nrudy: look i gotta be honest with you there's nothing here too spectacular. \n\ngeorge: oh i beg to differ. my father took great pride in his appearance, he was a very handsome man, a casanova really. \n\nrudy: i'll give you uh two-hundred dollars for the three boxes. \n\ngeorge: could you make it two-twenty-five that was his hi-game in bowling. \n\nrudy: yea i'm in a good mood here. \n\ngeorge: thank you. \n\nkramer: hey, george what are you doing here? \n\ngeorge: uh, i'm just selling some of dad's things, (looking into kramer's eyes) that's what he would have wanted. \n\nkramer: oh, i gotcha (clicks) \n\ngeorge: (leaving) that'll do. \n\nkramer: oh hey guess what. morty seinfeld and i are going into business together, selling raincoats. \n\ngeorge: hey that's swell. \n\nkramer: yea we worked it out all over dinner last night. \n\ngeorge: dinner? (grabs kramer) \n\nkramer: ya. \n\ngeorge: you had dinner with the seinfelds'? \n\nkramer: yea, last night. \n\ngeorge: was this something you had planned for a while? \n\nkramer: no it was a spur of the moment. well you know morty likes to fly by the seat of his vintage pants. \n\ngeorge: (hurriedly leaves rudy's) they had plans, they had plans! \n\nkramer: oooo, boy i've never seen these before (looking at the clothes george just sold rudy) \n\nrudy: well they just came in, part of my spring-time cruise collection. two for twenty-five dollars. \n\nkramer: oh i'll take these. \n\nrudy: alright \n\nkramer: hey, remember this raincoat that you sold me? \n\nrudy: sure that's the executive. \n\nkramer: ya, you have any others? \n\nrudy: i wish, they don't make 'em anymore. \n\nkramer: suppose i told you i had fifty in mint condition, would you be interested? \n\nrudy: very interested \n\nkramer: cuz they're coming in from florida as we speak. \n\nrudy: well bring 'em in. \n\nkramer: so you'll buy them? \n\nrudy: i don't see what would possibly stop me. \n\ngeorge: aaaa (looking around for jerry) aaaa (finds jerry) ah ha. they had plans huh? they were busy. they were busy with their (doing a little dance to make the plans seem all that important) big plans! \n\njerry: what are you talking about? \n\ngeorge: mom and pop seinfeld \n\njerry: look i don't know. \n\ngeorge: alright i happen to know what they did last night, they had dinner with kramer. \n\njerry: oh they were tired it was a last minute thing. \n\ngeorge: so what's the deal they don't want to have dinner with my parents? \n\njerry: that's right. \n\ngeorge: is there something wrong with my parents? \n\njerry: absolutely \n\ngeorge: because my parents happen to be two pretty wonderful people. \n\njerry: these the people you currently live with? \n\ngeorge: yes. \n\njerry: uh huh \n\ngeorge: so are they coming tonight or not? \n\njerry: look i really don't know what they're plans are. \n\ngeorge: ok, fine. it's going to be very interesting, very interesting if they don't show up tonight. you know my mother made all this paella. \n\njerry: what is that anyway? \n\ngeorge: it's a spanish dish. it's a moulage of fish, an meat with rice. very tasty. \n\njerry: i-i'll tell 'em \n\ngeorge: hey could you do one other thing for me? \n\njerry: name it. \n\ngeorge: you think your parents would have any objections to taking a little kid to paris with them? (jerry looks at him confused) it turns out that the kid's father lives in paris. (chuckling) is that a coincidence? (jerry smilies) eh you know alec wants me to take him over there so i figure as long as they're going (claps) \n\njerry: so you thought as long as they're mailing postcards, it wouldn't be too much to ask my parents to drag a child who they've never seen, through the streets of paris? \n\ngeorge: (pause) alright if you think it's too much they don't have to mail the postcards. \n\njoanne: so where's he taking you? \n\nelaine: well first we're going to a matine, i'm taking the afternoon off, we're gonna go see \"my fair lady\" and they we are gonna go to dinner. he knows all these fantastic places. \n\njoanne: you are one lucky girl. (elaine laughs in happiness) wish i could find a nice guy. (joanne goes to leave; aaron enters) hi aaron. \n\naaron: (getting up in aaron's face) hey joanne. (turns to elaine and goes over to her) hey \n\nelaine: (already out from behind her desk goes to aaron) hi \n\nhelen: hello, hello. \n\nmorty: hello elaine \n\naaron: i was able to finagle two more tickets to \"my fair lady\" and i thought why not ask morty and helen. \n\nelaine: oh, great. \n\nmorty: (looking around) this is some office. what's the square footage? \n\nhelen: you don't mind to you elaine? \n\nelaine: mind? oh o-of course not. \n\naaron: we can make a whole day of it. \n\nmorty: this is some building, harry fleming used to have an office here. there was a deli on the first floor. you don't get corned beef like that anymore. what happened to that deli? \n\nelaine: (somewhat annoyed) i really don't know mr. seinfeld \n\njerry: (stopping them) we better not. (they make out some more; then stop) t-they're gonna be here any second. \n\nrachel: when are they leaving? \n\njerry: in two days. \n\nrachel: it's been soo long. \n\njerry: i know. \n\nrachel: ok, it's only two more days. \n\njerry: right, thursday three o'clock. \n\nmorty: (from outside the door; singing) i could have danced all night (entering with helen) i could have danced all night and still have \n\nhelen: ooh. \n\njerry: oh hi. \n\nhelen: we didn't know you had company. \n\njerry: (tucking in his shirt) oh ya this is rachel. \n\nrachel: hi. \n\nhelen & morty: hello rachel. \n\nhelen: uh we'll come back another time. \n\njerry: what other time? \n\nhelen: whenever \n\njerry: where you goin'? \n\nmorty: uh we'll drive around for a while. \n\njerry: you don't have a car. \n\nmorty: we'll take a bus. \n\njerry: come on stop. \n\nhelen: no we don't mind \n\nmorty: i'll get a book. \n\nrachel: no no it's ok, i was just leaving anyway. \n\nhelen: o-oh are you sure? \n\nrachel: yea. \n\nhelen: cuz we don't wann.. \n\njerry: (interrupting) no no it's ok. (walking rachel out) so we'll go see schindler's list later right? \n\nrachel: definitely \n\njerry: ok. uh \n\nrachel: (going out the door) it's night meeting you. \n\nhelen: nice meeting you. \n\njerry: ok, see you later. \n\nmorty: boy that was some show. \n\njerry: what show? \n\nmorty: \"my fair lady\" \n\njerry: when did you get tickets to see that? \n\nhelen: aaron surprised us, and elaine came. \n\njerry: oh (laughing) elaine really? well that sounds interesting. \n\nmorty: we saw regis philbin get out of a limousine. \n\njerry: oh. \n\nhelen: he looks better on tv. \n\njerry: oh \n\njerry: (answering phone) hello? \n\njack: hello jerry, \n\njerry: yea. \n\njack: it's jack klompus. \n\njerry: oh hi jack. \n\njack: so when are you coming down to florida again? \n\njerry: as soon as is humanly possible. \n\njack: you know i still got that pen, the one that writes upside down. \n\njerry: yea yea ya i shoulda kept it. \n\njack: so uh where's your father? \n\njerry: ya he's right here. \n\nmorty: yea \n\njack: morty, listen i can't get into the garage. \n\nmorty: what do you mean? \n\njack: there is something wrong with the key. the key doesn't work \n\nmorty: you gotta jiggle it a little bit. i jiggled it. i jiggled it for fifteen minutes. \n\ndoris: tell him to come down here and get his own packages. you have nothing better to do then worry about his boxes. \n\nmorty: you gotta pull on the knob as you turn it. \n\njack: get the hell outta here with your knob. \n\ndoris: what does he want from you? \n\nmorty: my idiot son could open that garage door. \n\njerry: what did i do? \n\nmorty: just do it first thing tomorrow. i need it. \n\nmorty: they'll be here first thing thursday morning. \n\nhelen: thursday morning? you know we're leaving at three o'clock. \n\njerry: (in a hurry) yea you're leaving at three o'clock. \n\nhelen: how are you gonna get all this done in time? \n\nmorty: don't worry about it. \n\njerry: (in a hurry) ya how you gonna get all this done in time? \n\ngeorge: they were drinking champaign in a buggy! \n\nfrank: first kramer, then elaine? \n\ngeorge: yea \n\nfrank: it's a slap in the face. \n\nestelle: (with her arms out in wonder) what did we ever do to them? (george puts his arms out and imitates estelle as she moves her arms up and down as she speaks) i want to know what we did them! \n\nfrank: what are they too good for us? a raincoat salesman, i could buy and sell 'em like that. \n\nestelle: the hell with them. \n\ngeorge: (in the threshold between the living room and the kitchen) the thing that bothers me the most, is the lying. \n\nfrank: let's forget about it. we're going on a beautiful vacation. (sits down in his chair) \n\ngeorge: (sitting down) vacation? \n\nfrank: you're mother and i are planning on taking a cruise. \n\ngeorge: (claps all happy) ah! (half hugs estelle) \n\nfrank: but i can't find any vacation clothes. they were in the attic. \n\ngeorge: the attic? y-you haven't wore any of those clothes for years. \n\nfrank: how can i go on a cruise with out my cabana wear? i love those, those clothes. (looks down yells) ah! (jumps out of his chair) a mouse! i saw a mouse! (takes off into another room with glass doors on it and shuts the door) \n\ngeorge: (picking up what frank saw as a mouse) it's the remote. \n\nfrank: (looking from the room; you can see him through the glass) where the hell are my clothes? i love those clothes. \n\nrudy: lousy moth ridden crap. \n\n[movie theater: schindler's list] \n\njerry: hey. \n\nmorty: hey, jerry. \n\nhelen: so how was the movie? \n\njerry: oh, really good, really good. \n\nhelen: and didn't the three hours go by just like that (snaps her fingers) \n\njerry: like that (snaps his fingers) \n\nmorty: what about the end, with the list? \n\njerry: ya that was some list. \n\nhelen: what did you think about the black and white? \n\njerry: (confused) the black and white. \n\nmorty: the whole movie was in black and white. \n\njerry: oh yea, i didn't even realize. \n\nmorty: you don't even think about it, there's so much going on. \n\njerry: ya ya, i tell ya i could see it again. \n\nkramer: so klompus has the key, but the jerk couldn't open it up. all you gotta do it jiggle it (has is hand out jiggling) jus get it in there (jiggling making a bunch of noises) jigg jigg jiggle reiggle \n\nrudy: look, i find this whole thing very uninteresting. when you get the coats come in. \n\nkramer: hey what again? \n\ngeorge: i'm trying to buy some of the clothes back. (realizing something) hey you wanna come over for dinner tonight? my mother made all this extra paella. \n\nkramer: paella, ya i'll be there. \n\ngeorge: apparently the seinfelds' are too good for us. i shouldn't say anything bad about your uh your partner. \n\nkramer: no no you know we're not partners. i only get twenty-five percent. \n\ngeorge: twenty-five percent? it was your idea. \n\nkramer: yap i know. \n\ngeorge: you're doing all the leg work. \n\nkramer: that's right \n\ngeorge: he's ripping you off \n\nkramer: you're right he's ripping me off \n\ngeorge: if anybody should be getting more it's you. \n\nkramer: he's ripping me off \n\ngeorge: well don't let him take advantage of you like that. \n\nkramer: yah! (exits) \n\nrudy: (coming out of the back-room noticing george) oh it's you? you're the one who sold me the moth ridden cabana crap. \n\nmorty: you know i've been thinking, why is kramer getting twenty-five percent? \n\nhelen: well he told you about the place. \n\nmorty: so what, why is that worth twenty-five percent? it's a finders fee. you know what a finders fee is? \n\nhelen: you find something you get a fee. \n\nmorty: finder's fee is ten percent and no more. \n\nhelen: well it's too late now. \n\nmorty: those are my coats. i saved them, i stored them, i've been waiting years for this pay off. \n\nhelen: well you're not gonna say anything. \n\nkramer: i've been thinking about something. \n\nmorty: ya so have i \n\nkramer: ahh! i don't think the deal is fair. \n\nmorty: you don't think it's fair. \n\nkramer: no no, i found the place, i set the whole thing up, i'm doing all the leg work. \n\nmorty: what leg work? \n\nkramer: oh, there's leg work. \n\nmorty: if anything you're getting too much. \n\nkramer: too much?! \n\nmorty: that's right, they're my coats. \n\nkramer: look i want thirty-five percent. \n\nmorty: i'm thinking more like fifteen. \n\nkramer: no way i'm taking fifteen. \n\nmorty: well you're not getting thirty-five. \n\nkramer: alright let's compromise. twenty-five percent. \n\nmorty: ok it's a deal \n\nrudy: moths are a discourage to my business, all it takes is one moth to lay eggs. you know what happens to the larvae? they hatch and they're everywhere. \n\ngeorge: i'm sorry, umm he-here's your money back (gives rudy the money back) i-i-i'll have the clothes. \n\nrudy: (counting the money to make sure it's all there) it's already put a dent in my fumigation bill. \n\ngeorge: so uh where are the clothes? \n\nrudy: i burned 'em. \n\ngeorge: oh. that's good. \n\nelaine: n-i know they're your parents jerry an' they're very nice people. but don't you think it's odd, that a thirty-five year old man is going to these lengths to see that someone else's parents are enjoying themselves? i mean don't you find that abnormal? \n\njerry: it is a tad askew. \n\nelaine: i mean they're your parents and you don't do anything. so why is this stranger doing it? \n\njerry: i've hardly been out to dinner with them. \n\nelaine: see, see, i can't even say anything you know because all he's really doing is being nice but but know body is this nice, this is like certifiably nice. \n\njerry: you're right he's insane. \n\nelaine: yes, he's insane, that's what i think. \n\njerry: so what are you going to do? \n\nelaine: i don't know, i don't know what to do. (sighs) oh god.... so how was the movie? \n\njerry: uh from what i saw it was pretty good. \n\nelaine: ya what do you mean from what you saw? \n\njerry: well i um i didn't ah actually get to see the whole movie. \n\nelaine: yea why not? \n\njerry: i was kind of um (pauses) making out. \n\nelaine: (thinks for a second) you were making, out during schindler's list? \n\njerry: i couldn't help it. we hadn't been alone in a long time, it just got the better of me. \n\nelaine: during schindler's list? \n\njerry: (trying to justify it) we're both living with our parents. \n\nelaine: did anybody see you? did anyone say anything? \n\njerry: no i don't think so. i saw newman as i was leaving but see me. \n\nelaine: oh. \n\nnewman: hello mrs. seinfeld \n\nhelen: (like jerry) hello, newman. jerry's not here. (goes to shut the door on him) \n\nnewman: uh ah (stops her from closing the door; walks in) having a nice trip? (walks over, grabs a junior mint, smells it then puts it in his pocket) \n\nhelen: wonderful, we went to the theater last night. \n\nnewman: oh the theater. because i was wondering. \n\nhelen: wondering what? \n\nnewman: why i didn't see you at schindler's list with jerry. \n\nhelen: well we already saw it. \n\nnewman: oh, well it's a good thing for jerry that you didn't go. \n\nmorty: (getting up from the table and coming over) why is that? \n\nnewman: well he really seemed to have his hands full if you know what i mean. \n\nhelen: i'm afraid i don't. \n\nnewman: him and his little buxom friend rachel were going at it pretty good in the balcony. \n\nmorty: what? \n\nnewman: what, do i have to spell it out for ya? he was moving on her like the storm-troopers into poland. \n\nhelen: jerry was necking during schindler's list? \n\nnewman: yes! a more offensive spectacle i cannot recall. anyway i just really came up to get some detergent. \n\nhelen: jerry sends his laundry out. \n\nnewman: (laughing) oh ho right. well very nice seeing you folks and a by the way you didn't hear this from me. tata (runs down the hallway laughing) \n\njerry: hi (takes off his coat and puts it on the counter at which point his parents are both right by him as he goes into the refrigerator. he grabs a drink then turns around to see his parents right there) what? what did i do? \n\nhelen: how could you? \n\njerry: how could i what? \n\nhelen: you were making out during schindler's list? \n\njerry: what? no. \n\nmorty: don't lie jerry. \n\njerry: (turns) newman. \n\nhelen: how could you do such a thing? \n\njerry: i couldn't help it. we hadn't been alone together in a long time and we just kinda started up a little during the coming attractions and the next thing we knew, the war was over. \n\njerry: (answering the phone) hello. \n\njack: hello jerry, it's jack klompus. \n\njerry: hang on a second. (handing morty the phone) dad it's klompus. \n\nmorty: hello \n\njack: hello morty, listen that key doesn't work. it's no good. \n\nmorty: you didn't get in? \n\njack: oh i got in, i had to break the window with a rock and then i got my hand all cut up reaching in. \n\nmorty: you broke the window? \n\nhelen: he broke the window? \n\njack: you wanted those damn boxes didn't you? \n\ndoris: (off camera) he should be on his hands and knees thanking you. \n\nmorty: did you send them? \n\njack: yea, they'll be there tomorrow afternoon, two o'clock. \n\nmorty: tomorrow afternoon? \n\nhelen: tomorrow afternoon? \n\njerry: tomorrow afternoon? \n\nmorty: i told you to send them express. \n\njack: w-well it was ten dollars cheaper in the afternoon than the morning, i figured what the hell's the difference. \n\nmorty: so what did you do about the window? \n\njack: i gotta fix your window now? \n\nmorty: alright alright, goodbye. (morty hangs up the phone, jack hangs up the phone) i don't think we are gonna make that flight. \n\njerry: w-what do you mean you're not making the flight? \n\nhelen: we have to make the flight, we're with a charter group. if we don't the trip is off. \n\nmorty: well what's the difference we'll go some place else. \n\nhelen: some place else? what about paris? \n\nmorty: you don't understand, i've come this far, i can't stop now. \n\nhelen: i can't believe that you're doing all this just to sell some stupid raincoats. \n\nmorty: you don't understand fashion is cyclical this thing could come back. \n\nhelen: i think you're out of your mind. \n\nfrank: i just don't understand how all those clothes can disappear. \n\ngeorge: moths? \n\nfrank: moths, ate three boxes? \n\ngeorge: well you know what happens with larvae hatch, they-they're everywhere. \n\nestelle: you know, i was thinking today. i never liked those seinfelds anyway, he's an idiot all together. (knocking at the door) ah there's kramer. \n\nkramer: (from outside) hello? \n\nestelle: hello \n\nkramer: (still outside) helowwwowwow (estelle opens the door) hey (kisses estelle hello) ha ha, good evening (george waves) \n\nestelle: hope you're hungry. (goes into the kitchen) \n\nkramer: ooo paella \n\ngeorge: hey uh let me take you're coat. \n\nkramer: (giving george his coat) oh ya thanks buddy. \n\nfrank: that shirt, where'd you get that shirt? \n\nkramer: wha? \n\nfrank: that's my cabana shirt, you stole my shirt you son of a bitch! (really fast) george you let your friends go up in my attic and steal my clothes? (grabbing at the shirt) gimme that back \n\nkramer: (trying to get away) woah \n\ngeorge: dad?! \n\nkramer: (laughs as frank ends up tickling him; gets away) i bought it from rudy. \n\ngeorge: rudy?! that skunk, i knew he didn't burn those clothes. \n\nfrank: who's rudy? what clothes? \n\ngeorge: i sold your clothes yesterday. \n\nfrank: you sold my clothes (smacks george on the forehead) what do you mean you sold my clothes? \n\ngeorge: i didn't think you wore them anymore. \n\nfrank: it's cruise wear! \n\nestelle: kramer, i love that shirt. \n\nkramer: yaya \n\nfrank: that's because it's mine!! \n\nestelle: you look just like frank, on our honeymoon. \n\nkramer: oh, well, thank you. \n\nfrank: who's this rudy? \n\nkramer: well rudy's the guy buying morty's raincoats. \n\nfrank: morty seinfeld? he's a bum. \n\nkramer: well, the whole deal going down tomorrow. morty's gonna miss his plane for it. \n\ngeorge: missing his plane? wasn't that a charter flight? \n\nkramer: yea. \n\ngeorge: what happens to charter tickets when you don't use em? \n\nkramer: well i suppose they are wasted. \n\ngeorge: yes i suppose they are. \n\nfrank: tomorrow i'm going straight down to this rudy and get my clothes. \n\nkramer: a mouse! \n\njerry: you want the tickets? \n\ngeorge: yes. \n\njerry: you're gonna take this kid to paris? \n\ngeorge: hey i get a free trip to paris, i go in the big brother's hall-of-fame, i mail my own postcards. \n\njerry: you know i'm paying for these tickets. \n\ngeorge: it's alright, i got lunch. \n\nkramer: oh, you should have gone to the costanzas' for dinner. mmm the paella was magnificent. have you ever had really good paella? \n\nmorty: not really. \n\nkramer: oh it's a orgiastic feast for the senses. the want and the festival, the sites, sounds, and colors an mmmummumm mumm \n\njerry: hey dad are you sure we are at the right carousel? \n\nmorty: this is it. \n\nkramer: so how much are we gonna make? \n\nmorty: take it easy, i've been through a million of these negotiations. \n\nkramer: wha two thousand? three thousand? \n\nmorty: that's giving it away. this is a one of a kind item. \n\nkramer: more? more than three thousand? \n\nmorty: just watch me do my thing. \n\njerry: say dad, (pointing at a raincoat sitting on the carousel next to an open box) isn't that one of yours? \n\nmorty: look at this. look at how this idiot packed it. he didn't tape it, he just flipped the flaps. (kramer, morty and jerry are looking around grabbing raincoats which are scattered all over the place.) kramer you missed a couple. \n\nwoman: bon-jour, welcome to the gateway to paris charter flight. \n\njerry: (turns around noticing the charter flight) dad isn't that your charter group? \n\ngeorge: honesty, hard-work, these are the values that i was raised on. the most important thing joey, is to be able to look yourself in the mirror before you go to sleep at night. \n\njoey: hey! i got news for you four eyes, there's no way you're staying with us in paris. \n\nfrank: you burned them? those clothes are not yours to burn. \n\nrudy: who are you anyways? \n\nfrank: i'm the father. \n\nrudy: he said his father was dead. \n\nfrank: he said i was dead? \n\nrudy: that's right. squeezed an extra twenty-five dollars out of me. \n\nfrank: that's what my life is worth to him? twenty-five dollars. \n\nkramer: hey, frank! \n\nfrank: oh, i just want to you know i'm retracting our dinner invitation. \n\nmorty: well you don't have to retract it because we never went. \n\nfrank: i'm retracting that it was ever offered. \n\nmorty: i retract your retraction. \n\nfrank: oh, you trying to unload some of that junk of yours? \n\nmorty: would you excuse me please, we're conducting business here. \n\nrudy: you can keep your raincoats. i'm not interested. \n\nkramer: i thought we had a deal? \n\nfrank: that's another one of my shirts!! \n\nrudy: i'm not buying anymore clothes from anyone off the street. \n\nmorty: who's off the street? i'm in the raincoat business for thirty-five years. \n\nrudy: ya how do i know there aren't moths like his stuff? \n\nfrank: my clothes don't have moths! \n\nmorty: because of his moths you're not buying my raincoats? \n\nrudy: that's right. \n\nkramer: (laughing) i'm all ticklish. (a moth flies out of his shirt; they all look at it) \n\nannouncement: flight-433 now boarding for miami, gate 18a. flight-433 now boarding. \n\nmorty: ok, let's go. \n\nhelen: (to aaron) it was so nice of you to come to the airport to see us off. \n\naaron: are you sure you can't stay a little longer? \n\nelaine & jerry: no. \n\nmorty: ah, good-bye. \n\nelaine: good-bye \n\njerry: take care \n\nmorty: alright jer. \n\nelaine: nice to see.. \n\nmorty: buh bye elaine \n\njerry: buh bye. \n\nhelen: buh bye. \n\nhelen: (looking at jerry while being overly hugged by aaron) we'll call you when we get home. \n\naaron: thank you. \n\njerry: i think she meant me, but. \n\nmorty: make sure kramer uses good tape when he sends back the raincoats. \n\njerry: ok. \n\nelaine: bye. \n\njerry: bye. \n\nelaine: aaron? aaron are you ok? \n\naaron: i could've done more. i could've done so much more. \n\nelaine: you did enough. \n\naaron: (turning toward her) no, i could've called the travel agency, got them on another flight to paris, i coulda got them out. \n\njerry: you tried aaron, it was too expensive. \n\naaron: (holds his arm up) this watch, this watch could've paid for their whole trip. (holds his other hand up) this ring, this ring is one more dinner i could've taken them out to. (jerry and elaine look at each other like he's crazy) water, they need some water (turns around and runs to the flight agent) \n\nelaine: why? \n\naaron: (to the flight agent) they'll get dehydrated on the plane! get the seinfelds some water. please! please! \n\njerry: hi mr. goldstein is rachel home? \n\nmr. goldstein: i'm afraid rachel's not going to be able to see you tonight, or any other night for that matter. \n\njerry: why what did i do? \n\nmr. goldstein: (rachel is know seen behind her dad) you know very well. i heard about your behavior at the movies the other night it was disgraceful. you should be ashamed of yourself, i for one will not allow my daughter to be involved with someone of such weak moral fiber. fortunately my postman happened to have witnessed the entire incident. a heavy set fellow, i believe he lives in your building. (jerry turns to almost do a 'newman') now if you don't mind. (starts to close the door) \n\njerry: rachel! \n\nmr. goldstein: (closing the door on jerry) good night! \n\njerry: rachel! \n\njerry: so my parents get home, they open the door, my father flicks the light on, the whole place is cleaned out, everything. \n\nelaine: aahh, (pushes jerry from her seat at the table) get out! how did it happen? \n\njerry: the broken window, klompus never fixed it. they just walked right in. \n\nelaine: oohh, boy. they could use a vacation. \n\njerry: yea they're taking one, the travel agent is trying to set something else up for them. \n\nelaine: (sighs) so how about that aaron? \n\njerry: whew \n\nelaine: you know what drove me crazy about him? did you ever notice that he stood too close to you when he talked? \n\njerry: no i hadn't noticed. \n\nnewman: (at the counter) pair of bear claws please. \n\njerry: (hearing newman turns and sees him) hiya newman. \n\nnewman: (moving away from the counter getting closer to the door) hello jerry. \n\njerry: say, i happened to catch you coming out of schindler's list the other night. \n\nnewman: ohh, were you there? \n\njerry: yes i was. \n\nnewman: (looking scared) i-it's a it's a...powerful film. \n\njerry: yes, shocking brutality don't you think? \n\nnewman: (couple quick breaths) shocking. \n\njerry: yes, well that was nothing. \n\nnewman: (running out the door) jerry! jerry! \n\ngeorge: where the hell is your father?! \n\nestelle: this is the best thing we ever did. \n\nfrank: i just hope those exterminators know what they're doing. \n\nestelle: ah forget about them let's just... \n\ntoby (exuberantly): these are great! just great! really great! really, really great! don't you think so, elaine? \n\nelaine (put off by toby's exuberance): yeah, really great. \n\ntoby: oh, a coffee table book about coffee tables! (to kramer) how did you come up with this idea? \n\nkramer: it was there! \n\ntoby: oh, look at this one! it's saying, 'i'm a coffee table, put some coffee on me! oh, the hotter the better, that's what i'm here for!' (laughs) \n\nelaine: you know actually, i've got some work i gotta do, so... \n\nkramer: hey, how about if the book came with these little fold-out legs...so the book itself becomes a coffee table? \n\ntoby: ohhh, that is a great idea! really, really great! \n\nelaine (imitating toby): 'oooh, and that coffee table is saying, put some coffee on me!' i'd like to put some coffee on her. hot, scalding coffee - right in her face! i swear! this is like working with a contestant from \"the price is right\"! (demonstrates a winner on \"the price is right\") \n\njerry: yeah, that's real interesting. elaine, listen, tell me if you think this is funny - (reads comedy he's written) \"men definitely hit the remote more than women...men don't care what's on tv, men only care what else is on tv. women want to see what the show is before they change the channel, because men hunt and women nest.\" \n\nelaine (uninterested): yeah, it's funny, i dunno. \n\njerry: you don't know? come on, that's gold! \n\nelaine: well, i don't know about \"gold.\" \n\njerry: oh, that's gold, baby. \n\nelaine: 'baby'? what, are you doing george now? \n\njerry: i was saying 'baby' way before george! \n\nelaine: well, i don't know, don't ask me any more questions about jokes, jerry, it just puts too much pressure on me. \n\njerry: well, this guy leonard christian's gonna be there tomorrow night. \n\nelaine: yeah, who's he? \n\njerry: he's a writer from entertainment weekly . i would like to have a good show. \n\nkramer: danke schoen, my little dumplings. \n\nelaine: hi. \n\nkramer (to elaine): hey, how about that toby, huh? \n\nelaine: yeah, how about her? \n\nkramer: ooh, she's a package full of energy! \n\nelaine: yeah, she's a package full of something. \n\nkramer: yeah, and that something is life. jerry, you gotta meet this gal - she's brimmin' with positivity! \n\nelaine (absolutely disgusted): oh, pleeeeease. (moves to the living room and sits down) \n\nkramer (to jerry): hey, are you performing tomorrow? \n\njerry: yeah. \n\nkramer: great, i'm gonna bring toby. \n\njerry: well, you better laugh 'cause i'm being reviewed. leonard christian's gonna be there. \n\nkramer: oh, she's a great laugher - right, elaine? \n\nelaine: oh yeah, she's a great laugher, jerry. (imitates toby) really, really great! \n\njerry (to kramer): well, you want to sit with george? i think he's coming with robin. \n\nkramer: is that the waitress from the comedy club? \n\njerry: yeah. \n\nkramer: oh. \n\nelaine: what about her kid, is she bringing him, too? \n\nkramer: she's got a kid? \n\njerry: yeah, you should see george get along with this kid! \n\ngeorge: ow! what are you doing under there? hey, stop that! don't eat that! that's not food! (to robin) he's suckin' down equal packets! \n\nrobin: do you think 25 kids is too much? \n\ngeorge: 25 kids for his birthday party? (to kid under table) don't put your tongue on the floor! he's putting his tongue on the floor! here, here, have some more sugar packets. (tosses some equal packets under the table) \n\nrobin: so, what about entertainment? (to kid) should i get barney? \n\nkid: no barney! \n\nrobin (to george): maybe a clown. \n\ngeorge: how about bozo? \n\nkid: who's bozo? \n\ngeorge: who's bozo? bozo the clown, that's who bozo is. when i was a kid, bozo the clown was the clown, bar none. \n\nrobin: george... \n\ngeorge: with the orange hair, and the big clown shirt with the ruffles... \n\nrobin: george... \n\ngeorge: he had a tv show! he had cartoons! \n\nrobin: george! forget bozo, george. bozo's out. he's finished. it's over for bozo. \n\ngeorge: you know, when i was a kid, we didn't have these elaborate birthday parties w-with catered food and entertainment. i remember my 7th birthday party... \n\nfrank: blow out the candles! blow out the candles, i said! blow out the damn candles! \n\nestelle: stop it, frank! you're killing him! \n\nfrank: blow out the candles!! \n\nrobin: well, this time, you can blow out the candles. \n\ngeorge: nah, i have asthma. (robin's kid grabs george's leg from under the table, and george struggles.) \n\ntoby: hi! \n\nelaine (in a dreadful tone): hi, toby. \n\ntoby: how are you doing today? \n\nelaine: fine... (toby sits and waits for elaine to speak.) how are you? \n\ntoby: oh, i'm great! just great. really great! oh, hey - did you hear about bob rosen? \n\nelaine: nope. \n\ntoby: he is going to knopp. he is going to be a vice president. \n\nelaine: knopp? really? boy. that means there's an opening here for senior editor...has lippman, uh, hired anyone? \n\ntoby: no. i hear he wants to promote someone in-house. \n\nelaine: really!? \n\ntoby: maybe it'll be you! \n\nelaine: oh...well... \n\ntoby: you really deserve it. i mean, you have experience, seniority...lippman really respects your opinion... \n\nelaine (beaming): well! well, it could be you. \n\ntoby: no... \n\nelaine: no, really. \n\ntoby (standing): really? you think so? \n\nelaine (humoring her): sure. \n\ntoby: boy, wouldn't that be exciting! \n\nelaine: i mean, stranger things have happened... \n\ntoby: wow! me! a senior editor! (deadly serious) i'd like that. \n\nelaine: well, you shouldn't get your hopes up, toby. \n\ntoby: well, it's a possibility, like you said! stranger things have happened! thank you, elaine. thank you. (exits.) \n\njerry: hey, ronnie. \n\nronnie: hey. \n\njerry: (to bartender) can i have a club soda? (to ronnie) goin' on tonight? \n\nronnie: yeah. you? \n\njerry: yeah. \n\nronnie: you know leonard christian's here? \n\njerry: yeah, i know. \n\nronnie: can i ask you something? are my nostrils getting bigger? \n\njerry: (looking at his nostrils) i don't...think so. \n\nronnie: are you sure? take a good look. they seem a little bigger? \n\njerry: i don't...i dunno. \n\nronnie: is it possible for nostrils to expand? \n\njerry: oh, is this a bit? \n\nronnie: hey, i don't do \"bits.\" i'm a prop comic. dammit, i can't find my water gun. i can't go on without my water gun. \n\nkramer: hey, jerry. \n\njerry: (turns to greet kramer) hey. \n\nkramer: well here's toby, (points to jerry in order to introduce him to toby) jerry. \n\ntoby: this is so exciting! look, i have goosebumps! (to jerry) touch! touch them! (jerry touches her arm. toby screeches with excitement.) i've never been to a comedy club before! \n\njerry: really! you know, a lot of restaurants are serving brewed decaf now, too. \n\ntoby (laughing): you are so funny! \n\njerry: oh, you'll have a good time, i swear. \n\ntoby: oh! he swears like he thinks i don't believe him. i believe you. i believe you! oh, he's so funny! (laughs) \n\nkramer: what about me? \n\ntoby (serious): what about you? (laughs) i'm only kidding. you're funny, too. i love to laugh. \n\njerry: good, good. \n\nkramer (to jerry): so, you up next? \n\njerry: yeah, why don't you guys get a table so you'll have good seats? \n\ntoby: oh yeah, we don't want some jerk sitting in front of us, it'll be like, 'hey, big head, can you move out of the way? i didn't pay a cover charge to stare at your bald spot.' (laughs) \n\nkramer: alright, so you have a good show, huh buddy? \n\njerry: yeah. \n\ntoby: oh, have a great show. hey, we'll make sure it's a great show! \n\njerry: o.k., good, i'll see you later. (kramer and toby are about to exit. she turns around and clutches kramer's jacket.) \n\ntoby: oh, he's so great! this is so great! i'm so excited! \n\njerry: men definitely hit the remote button more than women... \n\ntoby (loudly): oh, really! really! that is so true! \n\njerry: yes, yeah...see, men don't care what's on tv, men only care what else is on tv. \n\ntoby: yes! yes! right on! right on! (other audience members give her puzzled looks.) \n\njerry (attempting to carry on despite toby's interruptions): see...women really want to see what the show is before they change the channel... \n\ntoby: oh, that is so true, yes! \n\njerry: ...that's why men hunt and women nest. \n\ntoby: boo! boo! hiss! boo! (toby's obnoxious behavior causes jerry to completely lose his place and mess up his act.) \n\njerry: yea, ya, so...anyway what was i talking about. \n\nkramer: hey. \n\njerry: hey, what's the deal? what was goin' on there? i invite you down here, i have an important show, and she heckles me?! \n\nkramer: look, she didn't mean anything. \n\njerry: well, what is the matter with her? is she crazy?! \n\nkramer: she's just being enthusiastic, that's all! \n\njerry: hey! what is wrong with you?! \n\ntoby: me? nothing's wrong with me. \n\njerry: y-you boo me?! you hiss?! you didn't stop blathering throughout the whole set! \n\ntoby: oh, come on! i thought you're a pro! that's part of the show. \n\njerry: no! not part of the show! booing and hissing are not part of the show! you boo puppets! you hiss villains in silent movies! \n\ntoby: well, that's the way i express myself. how are you gonna make it in this business if you can't take it? \n\njerry: oh, i can take it. \n\ntoby (to kramer): let's go. (ronnie walks by jerry.) \n\nronnie: hey, man. good set. \n\ngeorge: bozo? \n\neric: no. \n\ngeorge: b-o-z-o? \n\neric: sorry, i... \n\ngeorge: you've never heard of bozo the clown? \n\neric: no! \n\ngeorge: how could you not know who bozo the clown is? \n\neric: i don't know, i just don't. \n\ngeorge: how can you call yourself a clown and not know who bozo is? \n\neric: hey, man - what are you hassling me for? this is just a gig, it's not my life. i don't know who bozo is, what - is he a clown? \n\ngeorge: is he a clown? what, are you kidding me!? \n\neric: well, what is he? \n\ngeorge: yes, he's a clown! \n\neric: alright, so what's the big deal! there's millions of clowns! \n\ngeorge: alright, just forget it. \n\neric: me forget it? you should forget it! you're livin' in the past, man! you're hung up on some clown from the sixties, man! \n\ngeorge: alright, very good, very good...go fold your little balloon animals, eric. eric! (chuckles) what kind of name is that for a clown, huh? \n\nrobin's mother: excuse me...you must be george! i'm robin's mother. oh, you seem like such a lovely young man! \n\ngeorge: well, i do what i can. (robin comes over.) \n\nrobin: hi mom, how's everything? \n\nrobin's mother: oh, this is just a wonderful party! \n\nrobin: the burgers should be ready in a minute. \n\ngeorge: ah, great, great. (sniffs) what's that smell? smoke? (walks to the kitchen) hey everybody, i think i smell some smoke back here...(smoke boils into the doorway.) fire! fire! get out of the way! \n\ngeorge (to the emts): it was an inferno in there! an inferno! (eric, robin's mother, and all the kids rush at george.) \n\neric: there he is! that's him! (tries to clobber george with his big shoe.) \n\nrobin's mother: that's the coward that left us to die! \n\ngeorge (voice is hoarse from screaming): i...was trying to lead the way. we needed a leader! someone to lead the way to safety. \n\nrobin: but you yelled \"get out of my way\"! \n\ngeorge: because! because, as the leader...if i die...then all hope is lost! who would lead? the clown? instead of castigating me, you should all be thanking me. what kind of a topsy-turvy world do we live in, where-where heroes are cast as villains? brave men as cowards? \n\nrobin: but i saw you push the women and children out of the way in a mad panic! i saw you knock them down! and when you ran out, you left everyone behind! \n\ngeorge: seemingly. seemingly, to the untrained eye, i can fully understand how you got that impression. what looked like pushing...what looked like knocking down...was a safety precaution! in a fire, you stay close to the ground, am i right? and when i ran out that door, i was not leaving anyone behind! oh, quite the contrary! i risked my life making sure that exit was clear. any other questions? \n\nfireman: how do you live with yourself? \n\ngeorge: its not easy. \n\ngeorge: so she doesn't want to see me anymore. \n\njerry: did you knock her over too, or just the kids? \n\ngeorge: no, her too. and her mother. \n\njerry: really? her mother. \n\ngeorge: yeah. i may have stepped on her arm, too, i don't know. \n\njerry: you probably couldn't see because of the smoke. \n\ngeorge: yeah. but it was somebody's arm. \n\njerry: hmm. so you feel \"women and children first,\" in this day and age, is somewhat of an antiquated notion. \n\ngeorge: to some degree. \n\njerry: so basically, it's every man, woman, child, and invalid for themselves. \n\ngeorge: in a manner of speaking. \n\njerry: yeah, well, it's honest. \n\ngeorge: yeah. she should be commending me for treating everyone like equals. \n\njerry: well, perhaps when she's released from the burn center, she'll see things differently. \n\ngeorge: perhaps. \n\njerry: so, what was the fire? just a couple of greasy hamburgers? \n\ngeorge: yeah. eric the clown put it out with his big shoe. \n\njerry: by the way, did you see this? (hands george a magazine) \n\ngeorge: what's that? \n\njerry: it's the leonard christian article about my show. plus my gig in miami got cancelled, i betcha it's because of the article. \n\ngeorge: wow, he really does a number on you. (reads) \"seinfeld froze like a deer in the headlights in the face of incessant heckling.\" \n\njerry: i should have let her have it! i held back because of kramer. \n\ngeorge: you know what you oughta do. you should go to her office and heckle her. \n\njerry: yeah, right. \n\ngeorge: you know, like all the comedians always say, 'how would you like it if i came to where you work and heckled you?' \n\njerry: yeah, that'd be something. \n\ngeorge: i'm not kidding, you should do it. \n\njerry: but wouldn't that be the ultimate comedian's revenge? i've always had a fantasy about doing that. \n\ngeorge: well, go ahead! do it! \n\njerry: why can't i? \n\ngeorge: no reason! \n\njerry: you know what? i think i'm gonna do that! she came down to where i work, i'll go down to where she works! \n\ngeorge: this is unprecedented! \n\njerry: there's no precedent, baby! \n\ngeorge: what...are you using my babies now? \n\njerry: hey, nice shoes. what, you wear sandals to work? it's always nice to walk into a room and get the aroma of feet. that's real conducive to the work atmosphere. i'm sure your co-workers really appreciate it. 'hey, let's go eat in toby's office. great idea! we can check on her bunions!' \n\ntoby: you know, i have work to do here! i'm very busy! \n\njerry: oh, is this disruptive? you find it hard to work with someone...interrupting? \n\ntoby: well, how would you like it if i called security? \n\njerry: security? well, i don't know how you're gonna make it in this business if you can't take it! ya gotta be tough! booo! boooo! \n\ntoby: no, (gets up out of her chair) that's it. (kramer arrives; to kramer) get out of the way. \n\nkramer: hey, what's going on? \n\njerry: boo! \n\nkramer: what's happenin' here? \n\njerry: hiss! \n\nkramer: (going after toby) toby! toby! \n\ntoby: (voice; screaming) my pinky toe! \n\nkramer: (voice; yelling) toby! (shot of a shocked kramer is shown) oh, oh! \n\nkramer: what did you go up there to heckle her for? \n\njerry: because she came down to the club and heckled me! give her a taste of her own medicine! (george enters.) \n\nkramer: oh, yeah! you gave her a taste of medicine, alright. \n\njerry: well, i didn't want her to have an accident. \n\ngeorge: what accident? \n\nkramer: well, after he heckled toby, she got so upset, she ran out of the building and a street sweeper ran over her foot and severed her pinky toe. \n\ngeorge: that's unbelievable! \n\nkramer: yeah! then after the ambulance left, i found the toe! so i put it in a cracker jack box, filled it with ice, and took off for the hospital. \n\ngeorge: wha.. you ran? \n\nkramer: no, i jumped on the bus. i told the driver, \"i got a toe here, buddy - step on it.\" \n\ngeorge: holy cow! \n\nkramer: yeah, yeah, then all of a sudden, this guy pulls out a gun. well, i knew any delay is gonna cost her her pinky toe, so i got out of the seat and i started walking towards him. he says, \"where do you think you're going, cracker jack?\" i said, \"well, i got a little prize for ya, buddy - \" (kramer throws two quick punches and a massive uppercut) - knocked him out cold! \n\ngeorge: how could you do that?! \n\nkramer: then everybody is screamin,' because the driver, he's passed out from all the commotion...the bus is out of control! so, i grab him by the collar, i take him out of the seat, i get behind the wheel and now i'm drivin' the bus. \n\ngeorge: you're batman. \n\nkramer: yeah. yeah, i am batman. then the mugger, he comes to, and he starts chokin' me! so i'm fightin' him off with one hand and i kept drivin' the bus with the other, y'know? then i managed to open up the door, and i kicked him out the door you know with my foot, you know - at the next stop. \n\njerry: you kept makin' all the stops? \n\nkramer: well, people kept ringin' the bell! \n\ngeorge: well, wha-what about the toe? what happened to the toe? \n\nkramer: well! i am happy to say that the little guy is back in place at the end of the line. \n\ngeorge: you did all this...for a pinky toe? \n\nkramer: well, it's a valuable appendage. \n\njoanne: so, kramer found the toe, and they re-attached it. \n\nelaine: really. \n\njoanne: yea, poor kid. what an ordeal. \n\nmichael: and you know how extremely sensitive she is? \n\nelaine: i know. \n\nmichael: she's gonna need our full support. \n\nelaine (wearily): yeah, right. \n\nother co-workers in hallway: look who's here! toby! (toby enters on crutches.) \n\nmichael: toby, what can i do? can i get you something? \n\ntoby: oh no, no thank you. \n\nmichael: toby please let us help. we're family. \n\ntoby: oh well, i could use some coffee. \n\njerry: she got the promotion? \n\nelaine (standing in the doorway): yep. \n\njerry: why? \n\nelaine: i'll tell ya why. because of her pinky toe, that's why. because lippman felt so sorry for her, he didn't want to hurt her feelings. \n\njerry: too bad. \n\nelaine: sure, the pinky toe is cute! but, i mean, what is it? it's useless! it does nothing. it's got that little nail that is just impossible to cut. what do we need it for? \n\njerry: because elaine, that's the one that goes 'wee-wee-wee all the home.' \n\nelaine: why don't you just shut the f- \n\nkramer (from his doorway): hey elaine, did you hear the good news? toby got promoted! \n\nelaine: yes, i heard, kramer - i work there, remember?? \n\nkramer: yeah, and you know what she told me? she said her first order of business is to put my coffee table book into the bookstores as soon as possible. \n\nelaine: oh, wonderful! \n\nkramer: you know, throughout this whole thing, she always kept a smile on her face. \n\nelaine: oh, of course! she's deranged. \n\njerry: i went down to the magazine, i pleaded with him to come and see me again, finally he agreed to come down tonight, and he's going to write another article. \n\nronnie: i heard you went down to somebody's office and heckled them? \n\njerry: damn right! we've been lapdogs long enough! \n\nronnie: how could you do that? i mean, everybody's talking about it. \n\njerry: yeah well, it's about time one of us drew a line in the sand. \n\nronnie: jerry, you're like rosa parks. you opened the door for all of us. i can't wait till the next time someone heckles me. \n\njerry: yeah, well, it won't be long. \n\nannouncer: ladies and gentlemen, please welcome jerry seinfeld! \n\njerry: gotta go. (heads out on stage) \n\ngeorge: robin? robin! \n\nrobin: george, what is it? i'm working. \n\ngeorge: robin, listen to me. the most amazing thing has happened. kramer has opened my eyes. i think i've changed. \n\nrobin: what are you talking about? \n\ngeorge: o.k....(is about to explain. cut to jerry on-stage.) \n\njerry: i mean, bozo the clown...i mean does he really need \"the clown\" in his title, as clown? bozo, \"the\" clown? are we going to confuse him with bozo the district attorney? bozo the pope? there's no other bozo... \n\ngeorge: ...you'll see, things will be different now - if you just give me one more chance. \n\nrobin: l-listen, listen...i gotta think about this. (walks away.) \n\ngeorge: alright, but i'm serious about this. \n\nronnie (points his water gun at the bartender): alright, hand it over man! \n\njerry: ...that's why men hunt and women nest. \n\ngeorge (from backstage): he's got a gun! he's got a gun! get out of the way! (tries to flee the bar in a mad panic. the audience in the club also goes nuts and heads for the exits. jerry stands onstage, perplexed.) \n\nrobin: george! this is ronnie kaye! \n\ngeorge: the prop comic? (ronnie holds up his water gun and smiles.) oh, hi...i didn't recognize you, what...did you get a haircut? \n\nronnie (points to his nose): nostrils. \n\njerry: george - could i have a word? \n\nkramer: all right, get off at the next exit. \n\njerry: kramer, i've driven to east hampton many times, i know the exit. \n\nkramer: it's a great house, pool, sun deck? yeah, i'll be there. \n\njerry: (to elaine) you sure we're makin' the right move? \n\nelaine: we gotta see the new baby anyway, at least we'll get a weekend in the hamptons out of it. \n\njerry: didn't they just have a baby? \n\nelaine: that was two years ago, remember? 'jeh-ree, you gotta see the bay-bee! you gotta see the bay-bee!' \n\njerry: is it possible they're just having babies to get people to visit them? \n\nkramer: hey jerry, you ever wear silk underwear? \n\njerry: no. \n\nkramer: put that on the top of your list. \n\njerry: no, not for me. a little too delightful. well, george and jane should be almost there by now. \n\nelaine: oh, isn't that weird that george and jane haven't had sex yet, but they're spending a weekend together? \n\njerry: i know, george is pretty pleased about it. it's like she signed a letter of intent. \n\nelaine: when's rachel comin' out? \n\njerry: she's makin' the three o'clock train. \n\nelaine: her father is so religious, i'm just amazed that he's letting you see her again after that schindler's list make-out session. \n\njerry: i bought him some kishka. \n\nkramer: what's that? \n\njerry: it's kind of a stuffed meat thing. israeli soldiers carry it. in case they're captured behind enemy lines, they eat it and it kills them. \n\ngeorge: i never tasted a cough medicine i didn't love. \n\njane: me too. i love cough medicine. \n\ngeorge: you see? we were made for each other. (thinking to himself) it's amazing. if i reach out and touch her breast right not, she'd scream and throw me out of the car. but at this time tomorrow, i could touch it all i want. \n\njane: what's your favorite? \n\ngeorge: potussan. ever try it with club soda? \n\njane: no. \n\ngeorge: oh, very refreshing. (thinking again) sex is like joining a private club. i'll be the same me tomorrow, but suddenly, the no trespassing sign will be gone. \n\njane: are we almost there? \n\ngeorge: yeah, about ten, fifteen minutes. but i have to stop at a vegetable stand. \n\njane: what for? \n\ngeorge: my mother loves hampton tomatoes. she's nuts for hampton tomatoes. \n\njane: can you buy 'em later? i really wanna get some... sun. \n\nkramer: hey jerry. rub some lotion on my back. \n\njerry: who are you, mrs. robinson? \n\nkramer: come on, i'll rub some on yours. \n\njerry: no, that's no sweet'ning the deal. no. \n\ngeorge: (to jane) you know, when i was a kid, i once found a dollar and fifty cents in change on the bottom of the pool. \n\njane: (no feeling in her voice) you must've been excited. \n\ngeorge: yeah. hey, you know, i gotta go get these tomatoes. you wanna go for a ride? \n\njane: i don't think so. \n\ngeorge: 'kay. i'll uh, i'll see you later. anybody want some tomatoes? \n\njerry: no thanks. \n\nkramer: no. (george leaves for the tomatoes) \n\njane: i'm gonna take a dip. (she leaves for beach, elaine enters with a shady hat on) \n\njerry: and then there's maude. (she sits down next to jerry) \n\nelaine: look at my face, look at it. you see any lines? \n\njerry: no lines. \n\nelaine: you know why? one word shade. \n\njerry: so when are we gonna see this baby? when is the momentous event? \n\nelaine: i don't know. they're takin' a nap or something. \n\nkramer: i'm gonna go see if there are any girls on the beach. elaine, you wanna come? \n\nelaine: (sarcastic) no thanks. i got plenty of girlfriends. \n\njerry: (looking toward beach) oh this is interesting. \n\nelaine: what? \n\njerry: jane's topless. (they all look) \n\nkramer: yo yo ma. \n\njerry: boutros boutros-ghali. \n\nelaine: nice rack. (carol and michael inside open back door) \n\ncarol: come on, you guys. you can come and see the bay-bee! \n\njerry: oh, in a minute, carol. \n\nkramer: we're gonna be right there. \n\njerry: this is weird wild stuff. george hasn't even seen her yet. \n\nelaine: why do you think we're getting the sneak preview? \n\nkramer: maybe she's trying to create a buzz. \n\nelaine: what? \n\nkramer: you know, get some good word of mouth goin'. \n\njerry: oh, here she comes. (they pretend to not have watched as jane enters) \n\njane: i'm thirsty. anyone want a drink? \n\njerry: no thanks. \n\nelaine: i'm good. \n\nkramer: deh-deh-deh-deh- (jane exits) all right, show's over. i'm goin' to the beach. \n\ncarol: adam (the baby's name), jerry and elaine are here. \n\nelaine: oh, he's a cute little shnugly baby. \n\ncarol: isn't he gorgeous? (elaine looks at baby, only to be frightened and turn away) \n\nelaine: ugghh. \n\ncarol: is she gorgeous? (elaine and jerry looking away) \n\nelaine: oh, gorgeous, yes. \n\njerry: so very gorgeous. \n\ncarol: michael, shut the door! you're letting bugs in. \n\njerry: is it me or was that the ugliest baby you have ever seen? \n\nelaine: uh, i couldn't look. it was like the pekinese. \n\njerry: boy, a little too much chlorine in that gene pool. (they sit) and, you know, the thing is, they're never gonna know, no one's ever gonna tell them. \n\nelaine: oh, you have to lie. \n\njerry: it's a must lie situation. \n\nelaine: yes, it's a must lie situation. \n\njerry: you know, i don't think we should tell george we saw jane topless. \n\nelaine: no, i don't think so. \n\njerry: in fact remind me to tell kramer too. \n\nkramer: oooh, lobsters. \n\nben: oh this ointment should do it. \n\ncarol: how are you feeling, adam? (she sees elaine in the hall) elaine! (elaine enters) this is our pediatrician, ben feffa. \n\nelaine: hi. \n\ncarol: look at him, elaine. how gorgeous is he? i ask you, how gorgeous? \n\nelaine: (looking at ben) pretty gorgeous. \n\nben: elaine, you have children? \n\nelaine: me? oh no, but i'd love to have a baby, i mean, i can't wait to have a baby. i'm just dyin' to have a baby. \n\nben: a beautiful woman like you should. you're quite breathtaking. \n\nelaine: breathtaking? i'm breathtaking? \n\ncarol: and he's very particular. ben, you're staying tonight, right? \n\nben: uh, sure. (elaine celebrates to herself as jerry enters and quickly looks away from the baby) \n\njerry: ah, i'm gonna go pick up rachel at the station. \n\nelaine: yeah, see ya. \n\njerry: okay. (he leaves) \n\ncarol: oh, just look at him! \n\nben: yeah, he really is breathtaking. (elaine confused by his comment) \n\nrachel: train was so crowded. i had to sit in the seat facing the wrong way. \n\njerry: oh i like that. it's like going back in time. (george comes outside) \n\ngeorge: hey rachel! \n\nrachel: (quickly gets out of seat) hi. i'm gonna go in there to change. \n\ngeorge: what kind of a greeting was that? \n\njerry: she's got greeting problems. \n\ngeorge: yeah. i love hampton tomatoes. you know, you can eat 'em like apples. you know it's funny, the tomato never really took on as a hand fruit. \n\njerry: well, the tomato's an anomaly. so successful with the ketchup and the sauce, but you can't find a good one. (kramer enters with a box of lobster) \n\nkramer: hey, hey, hey! look at what i got! \n\ngeorge: hey! wow, the k-man! (they walk into the kitchen inside) \n\njerry: you got lobster for everybody? \n\nkramer: yeah, and they're fresh! right out of the ocean. \n\ngeorge: this is fantastic. man, what a weekend. swimming, lobster for dinner... \n\nkramer: i know, it's great. and i saw jane topless. (jerry shows that 'damn' expression behind george) \n\ngeorge: you saw who, what? \n\nkramer: yeah, i saw jane topless. well, we all saw her. \n\njerry: (jerry realizes the situation is hopeless) all right. \n\ngeorge: you saw jane topless? \n\njerry: well, when you went for the tomatoes she lied out topless. \n\ngeorge: oh you mean face down on her chest. \n\njerry: no. \n\ngeorge: face up on her back? \n\njerry: yeah. \n\ngeorge: well why'd she do that? \n\nkramer: i guess she was hot. \n\ngeorge: you mean she just laid there topless? \n\nkramer: no, no, she got up, she walked around... \n\ngeorge: walked around? and you looked? \n\nkramer: of course. she's got a great body, buddy. all right, i'm gonna go upstairs, i'll be right back. \n\ngeorge: i can't believe that you saw her before me. \n\njerry: think of me as a doctor. (they go outside again) \n\ngeorge: well, how good a look did you get? \n\njerry: well what'd you mean? \n\ngeorge: well, if she was a criminal and you had to describe her to a police sketch artist... \n\njerry: they'd pick her up in about ten minutes. \n\ngeorge: great, great. so anytime you want you can just visualize her naked. \n\njerry: (looking of into the distance) i guess that's true... \n\ngeorge: stop it, stop it! it's not fair. it's not fair. i don't like this situation, jerry. i don't like it one bit. \n\njerry: what do you want me to do? you wanna see rachel naked? \n\ngeorge: yes, yes! the punishment should fit the crime. \n\njerry: you can see me naked. i can offer you that. \n\ngeorge: it's like i'm neil armstrong. i turn around for a sip of tang and you jump out first. \n\nelaine: nobody ever called me breathtaking before. \n\njerry: i've never been called breathtaking either. \n\nelaine: i mean, if he thinks that that baby's breathtaking, then who's not breathtaking? \n\njerry: maybe he just said it because the mother was in the room. \n\nelaine: yeah, right, that's a possibility. i have to find out. \n\njerry: how are you gonna do that? \n\nelaine: i can be very clever. \n\nrachel: i'm gonna take a swim. \n\nelaine: oh, me too. i'll meet you down. (she goes in the hall and sees george) oh, don't go in, rachel's getting undressed. \n\ngeorge: oh, okay. (starts to walk other way and then walks to their room and goes in) \n\nrachel: hey! \n\ngeorge: oh, sorry. \n\nrachel: don't you knock? \n\ngeorge: i'm sorry, uh, it's not like i'm gonna see something i've never seen before. \n\njerry: you might have. \n\ngeorge: i didn't. \n\njerry: you won't. \n\nrachel: what'd you want anyway, george? \n\njerry: yes, george. i'm kind of wondering myself. what is it what you want? \n\ngeorge: no, i was just wondering... if you guys, uh, had any gum. \n\njerry: oh! so you were swimming in the pool, and you wanted some gum. \n\ngeorge: yes, because the water was cold... and the chewing warms me up. \n\nrachel: we don't have any gum. \n\ngeorge: okay. (chewing) thanks anyway. (continues to chew as he exits) \n\nrachel: strange man. \n\njerry: wait'll you get to know him. \n\nrachel: so where is this baby, anyway? \n\njerry: oh, check it out. i guarantee you've never seen anything quite so objectionable. it's down the hall, third door on your left. (rachel walks down hall, walks in on george changing out of his swimsuit) \n\nrachel: (she screams) oh my god! i'm sorry, i thought this was the baby's room. i'm really sorry. (she exits) \n\ngeorge: (realizing he was short changed) i was in the pool! i was in the pool! \n\ngeorge: did she do it on purpose? \n\njerry: it was my fault, i told her the wrong door. \n\ngeorge: i was supposed to see her. she wasn't supposed to see me. \n\njerry: so what? \n\ngeorge: well ordinarily i wouldn't mind. but... \n\njerry: but... \n\ngeorge: well i just got back from swimming in the pool. and the water was cold... \n\njerry: oh... you mean... shrinkage. \n\ngeorge: yes. significant shrinkage. \n\njerry: so you feel you were short changed. \n\ngeorge: yes! i mean, if she thinks that's me she's under a complete misapprehension. that was not me, jerry. that was not me. \n\njerry: well, so what's the difference? \n\ngeorge: what if she discusses it with jane? \n\njerry: oh, she's not gonna tell jane. \n\ngeorge: how do you know? \n\njerry: women aren't like us. \n\ngeorge: they're worse! they're much worse than us, they talk about everything! couldn't you at least tell her about the shrinkage factor? \n\njerry: no, i'm not gonna tell her about your shrinkage. besides, i think women know about shrinkage. \n\ngeorge: how do women know about shrinkage? \n\njerry: isn't it common knowledge? \n\ngeorge & jerry: (elaine walking down the hall they notice her and wave her into the room) elaine! get! (she enters) \n\ngeorge: do women know about shrinkage? \n\nelaine: what do you mean, like laundry? \n\ngeorge: no. \n\njerry: like when a man goes swimming... afterwards... \n\nelaine: it shrinks? \n\njerry: like a frightened turtle! \n\nelaine: why does it shrink? \n\ngeorge: it just does. \n\nelaine: i don't know how you guys walk around with those things. \n\nmichael: thanks for the lobster, kramer. \n\nkramer: rachel, aren't you gonna have any? \n\nrachel: oh, no, i can't. i'm kosher, we don't eat shellfish. \n\nkramer: you mean you've never tasted lobster? \n\nrachel: no. \n\nkramer: wow. you're so pious. i really respect that. you know when you die, you're gonna get some special attention. \n\ncarol: oh, the baby's crying. i'll go get him. he can sit with us. \n\nelaine & jerry: no! \n\njerry: no, you don't wanna do that. you'll be uncomfortable. \n\nelaine: yeah, finish eating. the baby's not gonna have any fun over here. we're-we're not fun for a baby. \n\njerry: yeah, the lobster'll scare him. \n\ncarol: i'm gonna get him. \n\ngeorge: see, look at this. (wearing a very tight shirt) rachel, my t-shirt shrunk. it used to be much bigger, and now it shrunk. you see, that's what water does. it shrinks things. \n\nelaine: really? tell us more, mr. science. (rachel whispers in jane's ear, which prompts jane to laugh) \n\ngeorge: what're you doing? what're you, telling secrets? what're you laughing at? \n\njane: it's nothing, george. \n\ngeorge: you know, it's very impolite to tell secrets. are you talking about me? \n\njane: what is it with you? \n\njerry: (to george) easy big fella. \n\nmichael: so kramer, where'd you get all these lobster, at the fleesher's market? \n\nkramer: no, i got 'em in the ocean. \n\nmichael: the ocean? what'd you mean? \n\nkramer: well, i found this rope and i kept tugging on it, and all these lobsters came up. \n\nmichael: those are commercial lobster traps. you can't take those lobsters from there. that's against the law. \n\nkramer: take it easy. there's plenty of lobsters in the ocean for everyone. \n\nmichael: my father was a lobsterman. he got up every morning at four and came home every night stinking of brine! he sent me through law school with the lobsters he caught! (kramer stands up from table) \n\ncarol: (entering with baby) here he is. \n\nkramer: ahhh! (shocked after seeing the baby) \n\nelaine: some night, huh? \n\nben: yeah, i wish i had my telescope. \n\nelaine: some dinner, huh? \n\nben: nothing like fresh caught lobster. \n\nelaine: some house, huh? \n\nben: it was built by mark fargman. he build a lot of these homes here. \n\nelaine: some ugly baby, huh? \n\nben: what did you say? \n\nelaine: (improvising) i said, uh, some snuggly baby. \n\nben: he is something. \n\nelaine: well, to tell you the truth, dr. feffa, i , i was surprised to hear you use a word like breathtaking to describe a baby, i mean, because you also used it referring to me. \n\nben: well, you know elaine, sometimes you say things just to be nice. (elaine relieved, then confused, not knowing if he was being nice to her or to the baby) \n\njerry: you told her? \n\nrachel: yeah, what's the big deal? \n\njerry: you don't understand. this organ, it's very... schizophrenic. \n\nrachel: jerry, what the difference? you know, you're the ones obsessed with this stuff, not us. i'm sure it wouldn't matter to jane. \n\ngeorge: you're going back to new york now? \n\njane: yeah, i have some things to do. \n\ngeorge: uh huh. uh huh! i think you spoke to your little friend rachel, that's what i think. \n\njane: so what if i did? \n\ngeorge: and she didn't say something to you about a certain something? \n\njane: i don't know what you're talking about. \n\ngeorge: *i* think that *you* think that a certain *something* is not all that it could be, when in fact it is is all that it *should* be, and *more*! \n\njane: (patronizing george) i'm sure it is. \n\ngeorge: look, you don't understand. there was shrinkage. \n\nkramer: you looking for this? (holding up lobster) \n\nrachel: oh, kramer! you startled me. \n\nkramer: well, i thought you might wind up around here. \n\nrachel: yeah, well, i couldn't stop thinking about how everyone was enjoying the lobster so much an' well i thought i little taste wouldn't hurt, huh? \n\nkramer: no i'm afraid i couldn't do that. \n\nrachel: why not? \n\nkramer: well, that wouldn't be kosher. \n\nrachel: c'mon, kramer. i really want to try it. \n\nkramer: nah, i'm sorry, honey. not on my watch. \n\nrachel: come on, kramer. \n\nkramer: heyahhh! \n\nrachel: i just heard a car drive out. what was that? \n\njerry: oh, that's just jane driving home to new york in the middle of the night. (rachel shocked) \n\ncarol: george, thanks so much for making breakfast. \n\nelaine: george, these are the best scrambled eggs i've ever tasted. \n\nkramer: ya i didn't know you could cook. \n\ngeorge: well, i'm just expressing my gratitude to our gracious host. \n\nben: yes, george, the whole breakfast is breathtaking. (hearing this elaine looks at him extremely annoyed) \n\nrachel: good morning. \n\nall: hey, hey. morning \n\nrachel: kramer, i just want to thank you again for last night, you really saved me. \n\nmichael: what happened? \n\nrachel: well, i almost tried the lobster, but kramer stopped me. \n\nkramer: well i knew you'd regret it for the rest of your life. \n\nrachel: you're right, i would have. \n\njerry: (referring to george) hey, look at this guy. \n\ngeorge: a little breakfast. \n\njerry: yeah. \n\ngeorge: (to rachel) and, uh, you eat eggs, right? \n\nrachel: yes, i do. thank you. \n\njerry: geez, these are delicious. where did you learn to make eggs like this? \n\nrachel: umm... this is so good. \n\ngeorge: ah, enjoying them? \n\nrachel: mm-hmm. \n\ngeorge: uh, good. you know, you might wanna try eating it with one of these. (holds up lobster bib) \n\nrachel: there's lobster in these eggs? \n\ngeorge: not that much. you know, they tend to shrink in the water. \n\njerry: well, i guess i gotta go, too. \n\nelaine: well, this has turned out to be one *helluva* weekend. (policeman knocks on door, michael answers) \n\nmichael: excuse me? \n\npolice: i'm sorry to bother you, but we're trying to track down a lobster poacher that uh cleaned out on of the traps. \n\nkramer: wonder what's goin' on. \n\ngeorge: ah, i guess i should go up and apologize. \n\nmichael: there he is, officer. (michael points to kramer, kramer waves to policeman) \n\nrachel: ahh! don't you ever knock? \n\ngeorge: i don't know why rachel had to drive back with michael and carol. \n\nelaine: hey, if you saw me naked, i wouldn't want to ride back in the same car with you either. \n\njerry: i still can't believe michael finked on kramer. \n\nelaine: how is he gonna pay off a thousand dollar fine? \n\njerry: they got some sort of program. \n\ngeorge: hey, there's a tomato stand, let's stop, i can get some more. \n\njerry: hey, isn't that michael's car? \n\nelaine: there's rachel. \n\ngeorge: where? (he looks out window and gets hit by a tomato) \n\nmr. lippman: to your promotion. \n\nelaine: oh, thank you! (they drink) mmm, oh, thank you, mr lippman, i can't tell you how much i appreciate this. i mean, of course i deserve it. \n\nmr. lippman: well, you're really on your way now. \n\nelaine: you really oughtta do something about that cold. \n\njerry: you got a raise? \n\nelaine: i don't fool around, (banging on the table) baby! \n\njerry: i thought you said pendant was in financial trouble. \n\nelaine: they were, but they're being absorbed by matsushimi, that big japanese conglomerate. \n\njerry: oh, when did that happen? \n\nelaine: they're signing the papers next week. \n\njerry: does this mean they're gonna be publishing kramer's coffee table book? \n\nelaine: yeah, they'll definitely do it now. \n\njerry: boy, you're on quite a streak. job promotion, plus you're back with jake jarmal. \n\nelaine: yeah, it's gettin' serious, we're talking about moving in together. \n\njerry: boy, you really got it all, i'm sure helen \"girlie\" brown would be very proud of you. \n\njerry: speaking of having it all ... where were you? \n\ngeorge: i went to the beach. (jerry and elaine exchange looks) \n\njerry: oh, the beach. \n\ngeorge: it's not working, jerry. it's just not working. (sits down next to elaine) \n\njerry: what is it that isn't working? \n\ngeorge: why did it all turn out like this for me? i had so much promise. i was personable, i was bright. (elaine turns showing disagreement) oh, maybe not academically speaking, (elaine nods correct) i was perceptive. i always know when someone's uncomfortable at a party. \n\njerry: (pointing to napkins; to elaine) could i get napkin over there? \n\ngeorge: it became very clear to me sitting out there today, that every decision i've ever made, in my entire life, has been wrong. my life is the complete opposite of everything i want it to be. every instinct i have, in every of aspect of life, be it something to wear, something to eat ... it's all been wrong. (chuckles) everywhere. \n\nwaitress : tuna on toast, coleslaw, cup of coffee. \n\ngeorge: yeah. no, no, no, wait a minute, i always have tuna on toast. nothing's ever worked out for me with tuna on toast. i want the complete opposite of on toast. chicken salad, on rye, un-toasted with a side of potato salad ... and a cup of tea. (laughs) \n\nelaine: well, there's no telling what can happen from this. \n\njerry: you know chicken salad is not the opposite of tuna, salmon is the opposite of tuna, 'cuz salmon swim against the current, (hand motion of the salmon swimming against the current) and the tuna swim with it. (hand motion of the tuna swimming with it) \n\ngeorge: (annoyed) good for the tuna. \n\nelaine: ah, george, you know, that woman just looked at you. \n\ngeorge: so what? what am i supposed to do? \n\nelaine: go talk to her. \n\ngeorge: elaine, bald men, with no jobs, and no money, who live with their parents, don't approach strange women. \n\njerry: well here's your chance to try the opposite. instead of tuna salad and being intimidated by women, chicken salad and going right up to them. \n\ngeorge: yeah, i should do the opposite, i should. \n\njerry: if every instinct you have is wrong, then the opposite would have to be right. \n\ngeorge: yes, i will do the opposite. i used to sit here and do nothing, and regret it for the rest of the day, so now i will do the opposite, and i will do something! \n\ngeorge: excuse me, uh i couldn't help but notice that you were looking in my direction. \n\nvictoria: oh, yes i was, you just ordered the same exact lunch as me. \n\ngeorge: my name is george. i'm unemployed and i live with my parents. \n\nvictoria: i'm victoria. hi. \n\njerry: (on the phone) are you kidding? they can't cancel that show on me now, it's too late for me to book anything else for that weekend. alright, alright ... okay, bye. (hangs up the phone) \n\nkramer: hey. buddy, it's all happening! \n\njerry: what's happening? \n\nkramer: the coffee table book. it's a go-oo! \n\njerry: oh yeah, i heard all about it. \n\nkramer: you know what this means? i'm starting the book tour. first stop  regis and kathy lee. \n\njerry: you're going on regis and kathy lee? \n\nkramer: oh, you better believe it! \n\njerry: i'll loan you my puffy shirt. \n\nkramer: no, no, no. \n\njerry: what're you gonna talk about? \n\nkramer: well, coffee tables. \n\njerry: hello? what? yeah, sure, i'll do it. i just had something cancelled the same weekend. ok. great. bye. (hangs up the phone; turns to kramer) you know, life is amazing. i just lost a job and five minutes later get another, same weekend, same money. \n\nkramer: you know who you are? even steven \n\nvictoria: are you growing a beard? \n\ngeorge: why shave every day? it just grows right back. \n\nvictoria: i guess ... \n\ngeorge: i'm afraid i'm just not interested in how i present myself. if those kind of superficialities are important to you, this probably isn't gonna work. \n\nvictoria: hey watch, he just cut you off! did you see that?! \n\ngeorge: take it easy. take it easy. it's not the end of the world. \n\nman #1 : hey baby, how about a little tongue action, huh? \n\nman #2 : yeah, stick your tongue down his throat! \n\nvictoria: what are we gonna do? should we just move? \n\ngeorge: that won't be necessary. \n\ngeorge: shut your traps and stop kicking the seats! we're trying to watch the movie! and if i have to tell you again, we're gonna take it outside and i'm gonna show you what it's like! you understand me? now, shut your mouths or i'll shut 'em for ya, and if you think i'm kidding, just try me. try me. because i would love it! \n\nvictoria: are you sure you don't wanna come up, i mean, it's only nine thirty. \n\ngeorge: i don't think we should. we really don't know each other very well. \n\nvictoria: who are you, george costanza? \n\ngeorge: i'm the opposite of every guy you've ever met. \n\ntheater manager: excuse me, is your name elaine? \n\nelaine: yes. \n\ntheater manager: were you suposed to meet a jake jarmal here? \n\nelaine: yeah. \n\ntheater manager: well, i'm afraid he's been in an accident. \n\nelaine: (gasp) an accident? what happened? \n\ntheater manager: well-he got side-swiped by a cab, but he's alright. he's in st.vincent hospital, room 907. \n\nelaine: oh. ok. thank you. \n\nelaine: could i have a box of jujyfruits? \n\ncounterperson: (handing the jujyfruits to elaine) there you go. \n\njake: so, then, you know, the light was clearly green, i started walking, he skidded and he went right into my hip. \n\nelaine: (with her mouth full of jujyfruit) oh, that is so terrible. that is so terrible, jake. i mean, how can people be so stupid? just sickening. \n\nelaine: you want one? \n\njake: no thanks. \n\nelaine: so when do you think you're gonna get outta here? \n\njake: where did you get those? \n\nelaine: at the movies. \n\njake: didn't the theater manager give you the message before you went in? \n\nelaine: yeah, he did. \n\njake: then when did you get those? \n\nelaine: right after ... that ... \n\njake: so you heard that i was in a car accident, and then decided to stop off for some jujyfruit? \n\nelaine: well... the counter...was right there, and... \n\njake: i would think, under the circumstances, it would have sent you running out the building. apparently, it didn't have any effect on you. \n\nelaine: no, no, it does! \n\njake: (angry) if you got into a car accident, i can guarantee you i wouldn't stop for jujyfruit! \n\nelaine: but...jake... \n\njake: i would like to be alone now, please. \n\nelaine: but, jake, i didn't... \n\njake: goodnight! \n\npoker player #1: ah, whaddya say we call it a night? \n\npoker player #2: good idea, i'm kinda tired. \n\npoker player #3: how'd you do? \n\npoker player #4: won 50. \n\npoker player #2: lost 72. \n\npoker player #1: won 37. \n\npoker player #3: lost 15. \n\njerry: (shocked) broke even. \n\nregis: can i bring out our next guest now? \n\nkathy lee: please, please. \n\nregis: young guy, he's got a new book coming out, and it's about, and this is the best part - \n\nkathy lee: i love this. \n\nregis: it's a coffee table book about coffee tables! (holds the book up for the audience) \n\nkathy lee: yeah. is that clever? i think that is so clever! \n\nregis: i think so too. did you get to meet him back stage? \n\nkathy lee: i did. \n\nregis: i mean, he looks like a fun guy, doesn't he? \n\nkathy lee: i love his hair. \n\nregis: yeah, oh, i do too. this guy could be a little bonkos. really. anyway, if you will, would you please welcome kramer! \n\nregis: (shaking kramer's hand) hello, kramer is here. \n\nkathy lee: i don't know, maybe it's the hair or something! \n\nregis: ah, well, yes kramer. so, a coffee table book about coffee tables. where did you come up with this idea? \n\nkramer: yeah, well, ah, i'll tell you, uh regis... actually, this is a true story. i umm i was skiing at the time. \n\nregis: you know, when i'm skiing, kramer, i'm trying not to kill myself, you're writing books! \n\nkramer: yeah, well, now you kids don't go out and try that. you stay in school! \n\nkathy lee: have you always had an interest in coffee tables, because, really, i-i love coffee tables, and i-i thought i was the only one. \n\nkramer: you see the beauty of my book is, if you don't have a coffee table, it turns into a coffee table. \n\nkathy lee: is that fabulous? \n\nregis: look at this! \n\nkathy lee: is that fabulous? \n\nregis: fabulous! \n\nkathy lee: i want one of these. \n\nregis: did i tell you this guy was bonkos? \n\nkathy lee: this coffee table (book) is full of pictures of celebrities' coffee tables. \n\nkramer: that's true. that's right. \n\nregis: yeah? well, i'm not in there. where's mine? \n\nkramer: oh, it's on file, right here. (points to his head) \n\nregis: i'm tellin' ya, this guy's bonkos! he really is! \n\nkathy lee: but he's adorable. \n\nregis: ya he is, he's a nice looking guy. \n\nkathy lee: it's all over my dress. \n\nregis: we'll be right back in a moment. \n\njerry: so it's all over? \n\nelaine: yeah, it got pretty nasty. \n\njerry: and what did you go back for? jujyfruit? \n\nelaine: it's not like i went across the street. i bought the jujyfruit and i got in a cab. \n\njerry: why didn't you eat it in the cab? \n\nelaine: because i got popcorn too, and i ate that first. \n\nelaine: what's all this? \n\njerry: played cards last night. \n\nelaine: oh yeah? how'd you do? \n\njerry: broke even. \n\nelaine: you always break even. \n\njerry: yeah, i know; like yesterday i lost a job, and then i got another one, and then i missed a tv show, and later on they re-ran it. and then today i missed a train, went outside and caught a bus. it never fails! i always even out! \n\nelaine: do you have twenty bucks? \n\njerry: what for? \n\nelaine: just gimme twenty bucks. \n\njerry: (shocked) what the hell was that? \n\nelaine: let's see if you get the twenty bucks back. \n\njerry: you know you could've thrown a pencil out the window and seen if that came back. \n\nelaine: you know, things were going so good for me, you know, i got the job promotion, we were talking about moving in together - \n\njerry: well, maybe next time someone's in a car accident you won't stop off for candy first. \n\ngeorge: hey, i just found twenty dollars! i tell you this, something is happening in my life. i did this opposite thing last night. up was down, black was white, good was - \n\njerry: bad. \n\ngeorge: day was - \n\nelaine: night. \n\ngeorge: yes! \n\njerry: so you just did the opposite of everything? \n\ngeorge: yes. and listen to this, listen to this; her uncle works for the yankees and he's gonna get me a job interview. a front office kind of thing. assistant to the traveling secretary. a job with the new york yankees! this has been the dream of my life ever since i was a child, and it's all happening because i'm completely ignoring every urge towards common sense and good judgment i have had. this is no longer just some crazy notion. elaine, jerry, this is my religion. \n\njerry: so i guess your messiah would be the anti-christ. \n\ngeorge: yes funny (laughs; hand clap) let's go. \n\njerry: elaine ... look! a twenty! \n\nelaine: (not wanting to believe it) oh my god. \n\nkramer: hey boss. \n\nmr. lippman: kramer. come in. \n\nkramer: how're you doin' there, big guy? (puts his arm around the tobacco store indian) \n\nmr. lippman: uh, ya, have a seat. \n\nkramer: al-righty (sits down) have you got yourself a cold? \n\nkramer: woah, that's quite a honk! \n\nmr. lippman: ya, thank you. \n\nkramer: get yourself some vitamin c with rose hips and bioflavenoids. \n\nmr. lippman: the reason i asked you in here, is i-i caught your appearance on uh \"regis and kathy lee\" the other day and - \n\nkramer: ya that was pretty good, huh? \n\nmr. lippman: an-anyway, the thinking here is that it would be best i-if you uh didn't do any more of these shows. \n\nkramer: because of the coffee thing? \n\nmr. lippman: kramer, i'm sorry. \n\nkramer: what about \"sonia live\"? now you're not cancelling \"sonia live\"? \n\nmr. lippman: it's out - \n\nkramer: she's a doctor, i got a thing for her. \n\nmr. lippman: kra-kramer, i - \n\nmr. cushman: why don't you tell me about some of your previous work experience? \n\ngeorge: alrighty. ah ... my last job was in publishing ... i uh got fired for having sex in my office with the cleaning woman. \n\nmr. cushman: go on. \n\ngeorge: ah, alright, before that, i was in real estate. i quit, because the boss wouldn't let me use his private bathroom. that was it. \n\nmr. cushman: do you talk to everybody like this? \n\ngeorge: of course. \n\nmr. cushman: my niece told me you were different. \n\ngeorge: i am different, yeah. \n\nmr. cushman: i gotta tell ya, you are the complete opposite of every applicant we've seen. (gets out of his chair) ah, mr. steinbrenner, sir. there's someone here i'd like you to meet. (george gets up and goes over) this is mr. costanza. he's one of the applicants. \n\nmr. steinbrenner: nice to meet you. \n\ngeorge: well, i wish i could say the same, but i must say, with all due respect, i find it very hard to see the logic behind some of the moves you have made with this fine organization. in the past twenty years you have caused myself, and the city of new york, a good deal of distress, as we have watched you take our beloved yankees and reduced them to a laughing stock, all for the glorification of your massive ego! \n\nmr. steinbrenner: hire this man! \n\nsecretary: tina robbins is here to see you. \n\nman: who's that? \n\nelaine: ah, it's my ex-roommate, she moved out four years ago, i-i've been sub-letting my apartment from her. \n\nman: alright, see ya. (meets tina in the door) hey. \n\ntina: please. \n\nelaine: hi tina. \n\ntina: hi elaine. \n\nelaine: so, i haven't seen you in a while. \n\ntina: elaine, we have a problem. \n\nelaine: well, what is it? \n\ntina: you're getting kicked out. \n\nelaine: kicked out?! why?! \n\ntina: well, there's been a number of complaints. \n\nelaine: yeah? like what? \n\ntina: well, like last thanksgiving you buzzed up a jewel thief. \n\nelaine: ah, i didn't know who he was! \n\ntina: that's why there's a buzzer. \n\nelaine: what else? \n\ntina: well, apparently, the week after that, you buzzed up some jehova's witnesses and they couldn't get them out of the building. \n\nelaine: what else have you got? \n\ntina: well, let's see. (takes out a list from her bag) \n\njerry: i'll tell you what the big advantage of homosexuality is. if you're going out with someone your size, right there you double your wardrobe. \n\nrachel: i suppose... \n\njerry: oh, come on, that's a huge feature. when they approach a new recruit, i'm sure that's one of the big selling points. \n\nrachel: (sighs) jerry ... \n\njerry: yes? \n\nrachel: i've been doing a lot of thinking. \n\njerry: uh huh? \n\nrachel: well, i don't think we should see each other any more. \n\njerry: oh, that's okay. \n\nrachel: (confused) what? \n\njerry: nah, that's fine. no problem. i'll meet somebody else. \n\nrachel: you will? \n\njerry: sure. see, things always even out for me. \n\nrachel: huh? \n\njerry: it's fine. anyway, it's been really nice dating you for a while. and uh good luck! \n\nrachel: yeah, you too. \n\njerry: (leaving; singing) she'll be coming around the mountain... \n\njerry: the new york yankees?! \n\ngeorge: the new york yankees! \n\njerry: ruth, gehrig, dimaggio, mantle ... costanza? \n\ngeorge: i'm the assistant to the travelling secretary. i'm going on the road trips with 'em! i'll be on the plane... i'm working in yankee stadium! this is a dream, i'm busting, jerry, i'm busting! \n\njerry: i can't believe it. \n\ngeorge: ya! \n\njerry: ya? \n\nelaine: (on buzzer) it's me. \n\njerry: (buzzes elaine up) come on up. \n\ngeorge: and i'm moving out of my parents' house, i'm taking that apartment on 86th street, remember the one we saw? \n\njerry: that's a great place! \n\ngeorge: i'm back in business, baby! \n\njerry: george, i wouldn't get too excited about this stuff, you know, things have a way of evening out. \n\ngeorge: hey! (to elaine, who doesn't look too cheerful) \n\njerry: hi elaine. \n\nelaine: hi. \n\njerry: how're things going? \n\nelaine: how're things going? you wanna know how things are going? i'll tell you how things are going. i am getting kicked out of my apartment! \n\njerry: why? why are they doing that? \n\nelaine: i don't know! they have a list of grievances. \n\njerry: the jewel thief? \n\nelaine: yeah, the jewel thief. \n\njerry: what else? \n\nelaine: i put canadian quarters in the washing machine. (disappointed) i gotta be out by the end of the month. \n\ngeorge: well, you could move in with my parents. (chuckles) \n\nelaine: was that the ... opposite ... of what you were going to say, or was that just your natural instinct? (she squeezes george's mouth between her fingers) \n\ngeorge: instinct. \n\nelaine: stick ... with the opposite. (slaps george on the forehead) \n\njerry: elaine, don't get too down. everything'll even out, see, i have two friends, you were up, (has his one hand up and his other hand down) he was down. now he's up, (switches the positioning of his hands) you're down. you see how it all evens out for me? \n\nsecretary: mr. lippman, the people from matsushimi are here. \n\nmr. lippman: oh ya alright... tell them i'll be right there. (tosses his handkerchief on elaine's desk so he can tie his shoe) oh man well, this is it, elaine. you know, without this merger, we'd be out on the street. boy, they sure saved us. \n\nelaine: (noticing the forgotten handkerchief tries to stop call for mr. lippman with a mouth full of jujifruit) oh, mr. lippman you forgot your handkerchief. mr. lippman, you forgot your handkerchief. it's on my desk. \n\nchairman: (noticing mr. lippman in the hallway) ah lippman son. (lippman smiles and is forced to enter his office) lippman son. (speaks some japanese) \n\ninterpreter: mr lippman, it is with great pride that we undertake this partnership with your company. \n\nmr. lippman: i ... i'm sorry, i can't shake your hand right now. it's germs. \n\njerry: is that the end of it? \n\ngeorge: yeah, it's the last one. \n\njerry: alright. \n\nestelle: i can't believe you're moving out. (grabs kramer) kramer, is this true? is it really happening? it's ... it's like a dream. \n\nkramer: oh, it's true. \n\ngeorge: alright, let's go. \n\nfrank: don't get in trouble with the yankees. you be nice. (slaps george's forehead) \n\ngeorge: i'm not gonna be nice. that's how i got the job. \n\nestelle: jerry, did you hear this? \n\njerry: he knows what he's doing. \n\ngeorge: i just want the both of you to know how much you mean to me, and i love you both very, very much. \n\njerry: opposite. \n\nelaine: i must've had at least eight in my mouth. i couldn't talk. i couldn't talk! \n\njerry: why'd you have to eat so many? \n\nelaine: because they're jujyfruit. i like them. i didn't know it would start a chain reaction that would lead to the end of pendant publishing. \n\njerry: not to mention the end of kramer's coffee table book. \n\nkramer: yeah, you knew he had a cold. how'd you expect him to blow his nose? yea! \n\nelaine: do you know what's going on here? can't you see what's happened? i've become george. \n\njerry: don't say that. \n\nelaine: it's true. i'm george! i'm george! \n\ngeorge: greetings, people. greetings. greetings and salutations. what a beautiful day for a ball game. let's play two! (sits down, says to waitress ) oh, i'll have the chicken salad on rye, my usual, you know what i get, darlin'. (turns to the gang) so, let's see, i had a little conversation today with mr don mattingly - (to elaine) he's the first base man. \n\nelaine: uh huh. \n\ngeorge: we talked about his new batting stance, you know, i'm not crazy about it, but i said , 'donny, go with it 'till it stops workin'.' donny baseball. he's a helluva guy. \n\nkramer: wait, wait, wait, that's too much. mine was more than yours. \n\njerry: ah ... let's call it even. \n\ngeorge: o.k., danny, take a swing. (tartabull swings the bat.) n-no! no! no! you're opening up your shoulder. \n\ntartabull: really? \n\ngeorge: no, not really. i'm just saying this to you because i like to hear myself talk. yes, really! \n\ntartabull (wiping sweat from his brow): alright, alright. \n\ngeorge: what are all sweatin' for? \n\ntartabull: it's hot in this uniform. \n\ngeorge: hot? (feels tartabull's material.) what is this? \n\ntartbull: what is what? \n\ngeorge: this uniform, what's it made from? \n\ntartbull: i don't know, cotton? \n\ngeorge: no. this is not cotton. here, lemme see. (tries to look at the tag on the uniform. tartabull gets creeped out and resists.) will you stop it? (looks at the tag.) oh. of course. polyester! \n\ntartabull: so? \n\ngeorge: i can't believe you're not playing in cotton. \n\ntartabull: well, this is what they give us. \n\ngeorge: you know they used to make leisure suits out of this fabric? \n\ntartabull: you really think cotton's better? \n\ngeorge: of course! alright, maybe i'll say something to buck. \n\ntartabull: yeah, good idea. catch ya later. (leaves.) \n\ngeorge: hey, don't embarrass me today. i got some friends in the stands. (george makes a swinging motion with an imaginary bat and pulls something in his back.) \n\nhot dog vendor: hot dogs here! yankee franks! \n\nelaine: oh, you want one? \n\njerry: yeah. \n\nelaine: i'll get it. (reaches in her bag for money.) \n\njerry: that's alright, i got it. \n\nelaine: jerry! \n\njerry: elaine, stop it. \n\nelaine: hey, just because i'm not working doesn't mean i haven't got any money. (to vendor) yo! dogs! two! \n\njerry: i'm sorry. \n\nannouncer on p.a. system: your attention please...the new york yankees would like to welcome miss connecticut, miss rhode island and miss north dakota, all of whom will be competing in the miss america pageant this weekend in atlantic city. (the three contestants make their way to their seats, right across the aisle from jerry and elaine.) \n\njerry (to elaine): now, there's a career path you may have overlooked. \n\nelaine: ooh, i gotta check my machine. i'm waiting to hear about an interview. doubleday is looking for somebody to replace jackie onassis. \n\njerry: oh, she worked at doubleday...? \n\nelaine: yeah, she was an editor. \n\njerry: right, just like you. \n\nelaine: yeah. can you hold my seat? (elaine gets up.) \n\ncrowd: hey! down in front! (elaine clambers over jerry and exits.) \n\njerry (offers a hot dog to miss rhode island): hot dog? \n\nmiss rhode island: no, thanks. i'm watching my weight. \n\njerry: ah. i'm watching my height. my doctor doesn't want me to get any taller. so you're miss, uh... \n\nmiss rhode island: rhode island. \n\njerry: i was almost mr. coffee. they felt i was a little too relaxed. (miss rhode island laughs.) \n\ngeorge: miss rhode island? when are you seeing her? \n\njerry: tonight. i have to call her, she's staying in a hotel. \n\ngeorge: you're incredible. \n\njerry: and get this - i'm working in atlantic city this weekend, and she's going to be down there for the pageant. \n\ngeorge: what if she becomes miss america? you could be dating miss america, jerry! \n\njerry: the only bad thing is, we have to go out with a chaperone. \n\ngeorge: chaperone? what, are you kidding? \n\njerry: no, it's part of the contest rules. \n\ngeorge: what does the chaperone do? \n\njerry: i don't know, she just sits there. \n\ngeorge: can she talk? \n\njerry: i'm not sure if she's allowed to talk. (picks up the phone and dials.) \n\ngeorge: you're calling her? \n\njerry: yeah. (sings) there she is...miss - yes, room 417 please? karen hanson? \n\ngeorge: hey, did you know that the yankees don't wear cotton jerseys? \n\njerry: of course, they're polyester. \n\ngeorge: well, what is that? that's a crime! do you know how hot those things get? they should be wearing cotton. \n\njerry: why do they wear polyester? \n\ngeorge: i don't know. that's all gonna change. \n\njerry: you're going to do something about it? \n\ngeorge: why shouldn't i? \n\njerry (doubtfully): no reason... \n\nlandis: of course, jackie o. was a great lady. those are going to be some tough shoes to fill. everyone loved her. she had such...grace. \n\nelaine (gushing): yes! grace! \n\nlandis: not many people have grace. \n\nelaine: well, you know, grace is a tough one. i like to think i have a little grace...not as much as jackie - \n\nlandis: you can't have \"a little grace.\" you either have grace, or you...don't. \n\nelaine: o.k., fine, i have...no grace. \n\nlandis: and you can't acquire grace. \n\nelaine: well, i have no intention of \"getting\" grace. \n\nlandis: grace isn't something you can pick up at the market. \n\nelaine (fed up): alright, alright, look - i don't have grace, i don't want grace...i don't even say grace, o.k.? \n\nlandis: thank you for coming in. \n\nelaine: yeah, yeah, right. \n\nlandis: we'll make our choice in a few days, and we'll let you know. \n\nelaine (stands up): i have no chance, do i? \n\nlandis: no. (they shake hands.) \n\nlandis's intercom: justin pitt to see you. \n\nelaine: justin pitt? \n\nlandis: he was a very close friend of mrs. onassis's. \n\nelaine: \"mrs. onassis's\"? that's hard to pronounce. \n\nlandis: excuse me? \n\nelaine: nothing. (mr. pitt comes in with some papers in hand.) \n\npitt: mrs. landis, there's something wrong with this copying machine, it's all coming out slanted. now, i don't know if this is your department or not. \n\nlandis: justin pitt, this is elaine benes. (elaine turns around. with sunglasses and a scarf on her head, she bears a close resemblance to jackie o.) \n\npitt (clearly affected by elaine's appearance): charmed. \n\nelaine: i was a great admirer of mrs. onass-sis-sis-sis... \n\njerry: hello, karen? it's jerry seinfeld. oh, that's very sweet of you. you know, you better be careful, you don't want to get too congenial. they'll slap that \"miss congeniality\" on you, and you'll congene yourself right out of the contest. so, what time do you want to get together later? what? so what, we don't need the chaperone. (to george) the chaperone can't make it. (to karen) oh, you're not gonna get disqualified! so, we're not going? (kramer enters.) hold on one second. (to kramer) hey, what are you doing tonight? \n\nkramer: nothin.' \n\njerry: i'm going out with one of the miss america contestants, you wanna go? \n\nkramer: what state? \n\njerry: rhode island. \n\nkramer: they're never in contention. \n\ngeorge: how do you know? \n\nkramer: because i've seen every miss america pageant since i was six. \n\njerry: look, do you want to go or not? i'll buy you dinner. \n\nkramer: giddy-up! \n\njerry (to karen): i think i got someone! \n\npitt (looking at elaine and smiling): the resemblance is uncanny. (elaine, sipping soda through a straw, looks up with a sour expression on her face.) even the brown eyes. \n\nelaine: well, a lot of people have brown eyes. \n\npitt: no, there's something else. an indefinable quality. \n\nelaine: grace? \n\npitt: grace, yes. \n\nelaine: you think ihave grace? \n\npitt: some grace, yes. \n\nelaine: just some? \n\npitt: well, you don't want too much grace or you won't be able to stand. \n\nelaine (laughing): oh, mr. pitt. \n\npitt: elaine, i want you to come and work for me as my personal assistant. now, i'll pay you the same as pendant, but i would need you to start right away. \n\ngeorge: hey, buck. talk to you for a second? \n\nshowalter: sure, george. \n\ngeorge: how's everything going? everything o.k.? \n\nshowalter: well, all of a sudden there's a problem with tartabull's swing... \n\ngeorge: listen, buck, i uh...obviously i don't need to talk to you about the importance of player morale, but uh...i've been talking to some of the guys, and some of them - i don't want to mention any names - but some of them...they're not too happy with the polyester uniforms. \n\nshowalter: how so? \n\ngeorge: well, they get very hot in the polyester. you know, it's not a natural fibre. i think they would prefer cotton. \n\nshowalter: cotton, huh? \n\ngeorge: yeah. cotton breathes, you see, it's much softer. imagine playing games and your team is five degrees cooler than the other team. don't you think that would be an advantage? they're cooler, they're more comfortable...they're happier - they're gonna play better. \n\nshowalter: you may have something there, george. \n\ngeorge: oh - i've got something. \n\nshowalter (considering): hmm. cotton uniforms. \n\njerry: congratulations! \n\nelaine: yeah! and the best part is, i still get to look for work in publishing. \n\njerry: now, what is it that you do, exactly? \n\nelaine: i attend to his personal affairs. \n\njerry: like what? \n\nelaine: well, like tomorrow for example, i have to uh...i have to buy him some socks. \n\njerry: really! socks! \n\nelaine: yeah. white ones. like the ones you wear with sneakers. \n\njerry: hey, maybe you can pick me up some underwear! (kramer enters.) \n\nkramer (shows jerry his outfit): so, what do you think? does this work? \n\njerry: listen...tonight, after we finish eating, you make like you got something else to do and just \"recede into the night,\" if you know what i mean. \n\nkramer: no way! \n\njerry: what? \n\nkramer: look, if you think i'm just going to step aside and do nothing while you defile this woman, you're crazy. \n\njerry: i'm not going to \"defile\" her! \n\nkramer: that's right, because i'm going to see it doesn't happen. look, jerry, these girls are miss america contestants. it's every little girl's dream. and i'm not going to let you trample that dream and make a mockery of everything the pageant stands for. \n\njerry: but - \n\nkramer (holds up his hand): aaah! no buts! those are my rules. \n\njerry: but wait a minute... \n\nkramer: now, if you want to go out and have some good, wholesome fun with a nice girl, i'd be glad to help you out...if you're looking for something more than that, you've got the wrong guy, buddy! (jerry tries to get a word in during this entire speech, but kramer won't budge an inch.) \n\nkramer: if you were miss america, what would you do to make the world a better place? \n\nkaren: as miss america, i would try and bring an end to world hunger. if every person sacrificed one meal a week, there would be enough to feed the whole world! \n\njerry: that's a hell of a plan. (to kramer) listen - \n\nkramer (to karen): what advice would you give young people? \n\njerry: alright, kramer! \n\nkramer: this is important stuff! she's got to be able to answer these questions. she's not going to have time to think, out there, with millions of people watching her. any hesitation could cost her the crown. you know, poise counts. \n\nkaren: you really know a lot about this, don't you? \n\nkramer: oh yeah, like last year? miss texas? now, she should have won easily, but she lost points in the swimsuit competition. \n\nkaren: well, what could she have done? \n\nkramer: tape her breasts together. (jerry is shocked.) \n\nkaren: what else? \n\nkramer: well, take you for example. now, you're very attractive, but you got a big waist. \n\njerry: hey, come on! \n\nkaren: no, no...it's o.k. (to kramer) go on. \n\nkramer: well, i'd recommend a waist cincher. \n\nkaren: really. \n\nkramer: oh, yeah. just - thip! - suck you in. \n\njerry: i'll be right back. (leaves the table.) \n\nkramer: so, what's your talent? \n\nkaren: magic. \n\nkramer: mmm. i'm thinking of a number from one to ten. \n\nkaren: six. \n\nkramer: no, five. but you were close. \n\nannouncer #1: and the yankees take the field! \n\nannouncer #2: is it my imagination, or do the yankees look a little different tonight? i can't put my finger on it... \n\nannouncer #1: well, from what i understand, they've switched to cotton uniforms. \n\nannouncer #2: they seem blousier, softer... \n\nannouncer #1: well, it is a natural fibre... \n\nkramer: how's your evening? \n\nkaren: well, i'm wearing this red dress - \n\nkramer: stop right there. \n\nkaren: no good? \n\nkramer: disaster. \n\nkaren: why? \n\nkramer: well, you got brown eyes. you want to wear a green dress. \n\nkaren: that makes sense. (the limo stops at karen's hotel.) \n\njerry: well, here we are... \n\nkaren: kramer, would you consider being my personal consultant for the pageant? \n\nkramer: okay. but if i'm going to do this, we play by my rules or we don't play at all. \n\nkaren: i am in your hands. (they shake hands.) well! oh, good night, jerry. (they're about to kiss, but kramer stops them by clearing his throat.) kenneth will take you home. (she gets out, leaving jerry staring at kramer with an angry expression on his face.) \n\nkramer: hey. \n\njerry: well, if it isn't mr. blackwell. \n\nkramer: oh, come on. \n\njerry: and that waist cincher, that was the topper! \n\nkramer: oh, you're poo-pooing! \n\njerry: yes, i poo-poo. \n\nkramer: well, let me tell you something. i'm taking this kid to the top. to the top, jerry! we're going for the crown, and you can't stop her! \n\njerry: i don't want to stop her! \n\nkramer: you can't stop her, jerry! oh, i've seen 'em come and go, but this kid has got something! (turns to leave.) \n\njerry: yeah, so do you. (george enters with a newspaper.) \n\ngeorge: well, did you see it? \n\njerry: see what? \n\ngeorge: the uniforms! did you see how they played? listen to these comments! (reads from the paper) \"wade boggs 'what a fabric! finally we can breathe.' luis palonia 'cotton is king.' paul o'neill 'i never dreamed anything could be so soft and fluffy.' \" \n\njerry: boy, they really do sound comfortable. \n\ngeorge (noticing jerry's suitcase): hey, where ya goin'? \n\njerry: i'm working in atlantic city. \n\ngeorge: really! \n\njerry: yeah. hey, you're not working this weekend, why don't you come down? \n\ngeorge: atlantic city? (thinks) yes! yes! i will go to atlantic city. i'm in. i'm down. \n\njerry: you know what, maybe elaine wants to go too, lemme call her. (picks up the phone.) she's at mr. pitt's, i think i got the number... \n\nelaine: so, what do you think? \n\npitt (pulling up the socks): no. \n\nelaine: you don't like them? \n\npitt: no, i don't like them. \n\nelaine: what's wrong? \n\npitt: they're too tight. \n\nelaine: too tight? \n\npitt: there's no elastic, you need to pull too much (pulls them up more). \n\nelaine (examining the socks): i think they look good! \n\npitt: they're cutting off the circulation. \n\nelaine: alright, well, i'll just take them back. (the phone rings.) \n\npitt: hello? \n\njerry: hi, mr. pitt! is elaine there? \n\npitt (hands the phone to elaine): it's for you. \n\nelaine: sorry. hello? \n\njerry: hey elaine, it's me. \n\nelaine: jerry? \n\njerry: we're going to atlantic city. \n\nelaine: really? when? \n\njerry: today, right now! are you in? \n\nelaine: one second, hang on. (to mr. pitt) excuse me, mr. pitt? would it be alright if i got you the socks tomorrow? \n\npitt: tomorrow? \n\nelaine: yes. \n\npitt: but i was hoping for my new socks today! \n\nelaine: well, it's just one more day. \n\npitt: i'm sorry. i must have them today. \n\nelaine (to jerry): i can't go. \n\njerry: why not? \n\nelaine: because i have to return the socks and get different ones. \n\npitt: elaine! \n\nelaine: i gotta go. (hangs up.) \n\nkramer: no. alright, watch me now. (karen sits on the bed. kramer walks across the room like a miss america contestant with a big smile on his face.) turn, back, head up, shoulders back...posture. you see? posture. \n\nkaren: yes, i see. o.k. \n\nkramer: let's try a few more questions, alright? (karen stands up.) if you were miss america, and the u.s. was on the brink of a nuclear war, and the only way the conflict could be averted was if you agreed to sleep with the enemy's leader, what would you do? \n\nkaren: kramer, are these questions really that important...? \n\nkramer: yes, they're important! if you stumble, if you hesitate, you can kiss the crown goodbye. now if i've told you once, i've told you a thousand times - poise counts! it's just as important as the others. swimsuit! evening wear! talent! poise! \n\ngeorge: hey. \n\njerry: hey. \n\ngeorge: how was the show? \n\njerry: good. how was the roulette? \n\ngeorge: i won fifty bucks! boy, this is great. too bad elaine's not here. \n\njerry: yeah, all she had to do was buy mr. pitt a pair of socks! \n\npitt: it's good, but... \n\nelaine: but what?? \n\npitt: ultimately i don't think they'll stay up. \n\nelaine (pulling up pitt's socks): no, no! they'll stay up! \n\npitt: for a while, yes, but not in the long run. \n\nelaine: but that's why i got you the tighter ones! (holds them up.) \n\npitt: oh, forget about those! (takes the socks from elaine and throws them on the floor.) why do you keep mentioning those? \n\nelaine: what do you want!? \n\npitt: i want a decent sock that's comfortable, that will stay on my foot!! \n\njerry: what the hell is that? \n\ngeorge: i don't know, it sounds like pigeons or something! \n\njerry (getting out of bed): well, i can't sleep with that noise. \n\ngeorge: me either. is there anything you can do to shut them up? \n\njerry: wait a second. (grabs the icebucket off the counter.) this'll scare 'em off. (dumps the bucket of water over the balcony. we hear a loud squawking noise and the flapping of wings, then the noise is gone. jerry gets back into bed.) well, good night, ollie. \n\ngeorge: good night, stan. \n\nkramer: what is it? \n\nkaren: my doves! they're dead! i trained those birds for eight years! how am i supposed to do my magic act now? \n\nkramer: how did this happen? \n\nkaren: they like it outside, so i kept them in a cage on the terrace...then i found them dead in a pool of water! \n\nkramer (goes out on the terrace to look, and slips in the water): well, how did this happen? \n\nkaren: it must have been an accident. \n\nkramer: accident? this was no accident. these doves were murdered. \n\nkramer: well, that's it! she's out of the pageant! \n\njerry: what? why? what happened? \n\nkramer: her birds are dead. \n\njerry: birds? \n\nkramer: yeah, birds. she's got these trained doves, she does this magic act, that was her talent for the pageant. you know what i think, jerry? i think somebody murdered those doves. somebody wanted her out of that contest bad. somebody who was just eaten up with jealousy. somebody who just couldn't stand to have the spotlight taken off of them! (kramer turns around and notices the empty icebucket on the edge of jerry's balcony.) \n\njerry: what are you looking at? (kramer goes out onto the terrace and looks down.) oh, that! we had to leave that outside, last night, because the water was making the room too cold. \n\nkramer (comes back inside with his finger pointed at jerry): you killed them, didn't you? \n\njerry: no, you don't understand - it's not what you think! it was an accident! \n\nkramer: well, don't think you've won, because you haven't! this kid is a fighter! and if you think i'm gonna let a couple of dead birds get in our way, you're crazy! \n\njerry: kramer, you gotta explain to her what happened...! (kramer exits.) \n\ngeorge (comes out of the bathroom brushing his teeth): what was that all about? \n\njerry: oh, it was just kramer...apparently i killed miss rhode island's doves with a bucket of water last night. \n\ngeorge: oh. (goes back into the bathroom.) \n\nkaren: o.k., this is it! \n\nkramer: how ya feelin'? \n\nkaren: i'm a little nervous! \n\nkramer: there's nothing to be nervous about. \n\nkaren: but i've never sung before in my life! \n\nphilbin: and now, let's welcome karen ann hanson, miss rhode island! \n\njerry: i heard those doves were really incredible. \n\ngeorge: that's a shame. (karen is shown singing off-key on the television.) \n\njerry: it's like watching an animal get tortured. \n\ngeorge: hey, hey! yankee game! (changes the channel.) \n\njerry: oh, great! alright. (we hear the announcers calling the game.) \n\nannouncer #1: and the yankees take the field! \n\nannouncer #2: what is with the yankees? they look like they're having trouble running, they can't move! \n\nannouncer #1: it's their uniforms, they're too tight, they've shrunk! they're running like penguins! forget this game! \n\nannouncer #2: oh my god, mattingly just split his pants! \n\njerry: that's a shame. \n\nkramer: poise. poise! \n\nstationer: may i help you? \n\nelaine: yeah, uh, i'm looking for a rollamech 1000 mechanical pencil. \n\nstationer: oh, i know the rollamech 1000. \n\nelaine: no, i'm sure you do. \n\nstationer: they're pretty expensive. \n\nelaine: well, it's for my boss. \n\nstationer: what do you do? \n\nex: whatever. \n\nstationer: well, we don't have any in stock right now but i would be happy to order it for you. just give me your phone number and when it comes in i'll give you a call. you're name is? \n\nelaine: elaine. \n\nstationer: elaine, . . . and your last name? \n\nelaine: it's just elaine, like cher. ha ha ha \n\nstationer: and your number? \n\nelaine: uh, aw, kl5-239o. \n\nstationer: okay. thanks a lot. you'll be hearing from me. \n\nelaine: okay, (to jerry) move along. . . \n\njerry: why did you give him my number? \n\nelaine: i think he's got ideas. \n\njerry: i wonder if any woman ever said that about einstein? \n\njerry: call me when the pencil comes in okay? \n\nelaine: just call me when the new pen comes in, okay? \n\njerry: why does mr. pitt prefer a pencil to a pen anyway? hey. look who's here. \n\ngeorge: hey, hey. \n\nelaine: hey hey \n\njulie: hi jerry. \n\njerry: hi julie. \n\ngeorge: elaine, julie. \n\nelaine: hi. \n\njulie: hi. \n\njulie: oh, hi. elaine's my middle name. \n\nelaine: oh, mine's \"ike\". \n\ngeorge: hey, wanna get some lunch? \n\njerry: just had a big bowl of kix. \n\ngeorge: ah, well, that's very mature. what about you? \n\nelaine: ah, no. \n\njulie: please come, elaine. \n\nelaine: no, no. how about if you bring me back something? \n\ngeorge: sure, all right, what do you want? \n\nelaine: um, hum, i don't know.. . . a big salad? \n\ngeorge: what big salad? i'm going to the coffee shop. \n\nelaine: they have big salads. \n\ngeorge: i've never seen a big salad. \n\nelaine: they have a big salad. \n\ngeorge: is that what i ask for? the big salad? \n\nelaine: it's okay, you don't \n\ngeorge: no, no, hey i'll get it. what's in the big salad? \n\njerry: big lettuce, big carrots, tomatoes like volleyballs. \n\ngeorge: (???), we'll see you in a little while. \n\nelaine: maybe i should just get married. \n\njerry: dating is really starting to get embarrassing isn't it? \n\nelaine: i know. you know, whenever i'm on a date i feel people can tell. \n\njerry: people on dates shouldn't even be allowed out in public. \n\nelaine: you can say that again. \n\njerry: it's embarrassing for them. it's painful for us to watch. i'm going out with someone later, i'm not even taking her out of the house. \n\nelaine: good for you. \n\njerry: i don't need a bunch of people staring at us. \n\nelaine: right on baby. (???) \n\njerry: what was that? \n\nkramer: that gendason, what a jerk. i'm never playing golf with him again. \n\nelaine: who gendason? \n\nkramer: steve gendason. \n\nelaine: why is that name familiar? \n\nhx: he used to be a baseball player. \n\nelaine: oh, how did you end up playing golf with him? \n\nkramer: well, i met him on the course a couple of years ago. yeah. played with him a lot. but today was it! we're on the fifteenth hole, ya, he's beating me by a couple of strokes. then, he's about to hit his second shot, when, he picks up the ball and cleans it. \n\nelaine: so what? \n\nkramer: umph, sorry! but the rules clearly state that you cannot clean the ball unless it's on the green. the rules are very clear about that. \n\njerry: certainly are. \n\nkramer: ya, so i penalized him a stroke. \n\nkramer: he lost it! we almost came to blows. we were face to face like a manager and an umpire like this . . kara a pukka ba ya ka ba . . . \n\njerry: all right. you're in my face. \n\nelaine: i still don't see what the big deal is. \n\nkramer: a rule is a rule. and let's face it. without rules there's chaos. \n\njulie: i like anna quindlen's column and safire. don't you like safire? \n\ngeorge: oh, safire. uh ha \n\njulie: although at times can be rather pedantic. \n\ngeorge: he can be pedantic. he can be pedantic. \n\njulie: and bob herbert's great. he's the daily news. \n\ngeorge: yes. yes. you know what's interesting. the quarterback for the atlanta falcons is bobby hebert. no \"r\" which i find fascinating. you know it's herbert h-e-r-b-e-r-t, hebert h-e-b-e-r-t. \"hebert\" it's a fun name to pronounce. try and say it hebert. take a shot. all right. (check arrives) all right. i \n\njulie: no, no. i'd like to take you out. \n\ngeorge: no, julie, julie, don't insult me. you know, what difference does it make who pays for lunch. it's totally meaningless. \n\njulie: okay, thanks, george. \n\nwx: here's your big salad to go. \n\njulie: oh, thank you. \n\njerry: (on phone) hello. no she's not here. okay, fine, whatever. i'll tell her. okay. goodbye. the stationery store guy called to say he ordered your pencil. \n\nelaine: i told ya'. he has ideas. \n\njerry: he doesn't even care if a man answers. \n\nelaine: or you. \n\ngeorge: hey, hey. \n\nelaine: hey. \n\njulie: sorry e're late. \n\nelaine: no problem. \n\njulie: here's your big salad. \n\nelaine: thank you, julie. \n\njulie: oh, you're very welcome. so, i guess i better get going. gotta meet mother a t the guggenheim. sure you don't want to go? \n\ngeorge: no, you go guggenheim. i'm not much of a guggenheim. \n\njulie: sure, george. \n\ngeorge: ya, you go. \n\njulie: okay, i'll see you later. goodbye. \n\njerry: bye bye \n\ngeorge: did you see what just happened? \n\njerry: well, that all depends. . . \n\ngeorge: did you happen to notice that julie handed the big salad to elaine? \n\njerry: yeah, so? \n\ngeorge: well, she didn't buy the big salad. i bought the big salad. \n\njerry: is that a fact? \n\ngeorge: yes it is. she just took credit for my salad. that's not right. \n\njerry: no it isn't. \n\ngeorge: i mean i'm the one who bought it. \n\njerry: yes you did. \n\ngeorge: you think she should have said something? \n\njerry: she could have. \n\ngeorge: oh, i know. \n\njerry: imagine, her taking credit for your big salad. \n\ngeorge: you know you buy a big salad for somebody it would be nice if they knew it. \n\njerry: obviously. \n\nkramer: turn on the tv. \n\njerry: what? \n\nkramer: i'm puttin it on \n\ntv: . . . the district attorney's office and the police department have not answered any questions as yet. to repeat in case you're just joining us. former baseball start steve genderson, has been taken to police headquarters for questioning the murder of bobby pinkus the owner of royal dry cleaners at 2759 amsterdam avenue. according to pinkus' wife, gendeson had been involved in a dispute with the cleaner about a stain on a pair of gray sans-a-belt slacks. we also have a report that earlier in the day a groundskeeper at vancourtland's golf course saw an irate gendeson leaving the clubhouse in a huff. whether there is a possible connection between the two is something we'll just have to wait. \n\nkramer: jerry . . . \n\njerry: well, it has nothing to do with you. \n\nkramer: yeah, but maybe he was so mad from the penalty stroke that he murdered the dry cleaner. \n\njerry: well, generally speaking you don't need any extra incentive to murder a dry cleaner. i wouldn't worry about that. \n\nelaine: i like julie. she's very personable. \n\ngeorge: yeah, she's very lovely. \n\nelaine: that's great george. \n\ngeorge: so did you enjoy your lunch? \n\nelaine: yeah, a big salad. very good. actually it was too big. ha ha ha wht? \n\ngeorge: oh, . . .because she handed you the bag. i could have handed you the bag. she happened to pick it up at the restaurant even though, . . . \n\nelaine: even though what? \n\ngeorge: . . . naw, it's just you thanked her, and and oh, . . . what's the difference? \n\nelaine: what? what are you trying to say, george? \n\ngeorge: it's just that i was the one who actually paid for the big salad. she just happened to hand it to you. but it's no big deal. \n\nelaine: you want the money for the big salad, george? \n\ngeorge: no, no, \n\nelaine: what is the problem? \n\ngeorge: there is no problem. . . just a small miscommunication. whereby you thanked her instead of the person actually responsible for purchasing the big salad. \n\njerry: and kramer thinks a penalty stroke may have driven him to it. \n\nmargaret: well, they haven't even arrested him yet. come on, let's go out. \n\njerry: ah, no , i don't think so. \n\nmargaret: why not? \n\njerry: we don't need a bunch of people staring at us. \n\nmargaret: who is staring? \n\njerry: oh, they're staring. they know we're on a date. they're making fun. come on. it's embarrassing. \n\njerry: hello. no she's not here. yes i will tell her. no i don't know what time she might be coming back. look i gotta' go. goodbye. . . . that, that's a long story. \n\njerry: hello newman. \n\nmargaret: hello jerry, i was wondering if you knew where kramer was. \n\njerry: no, no i don't. why? \n\nmargaret: you know, genderson. this is something big. \n\njerry: i suppose. \n\nmargaret: what did kramer say? \n\njerry: i don't know. nothing.? \n\nmargaret: come on jerry. you know something tell me! tell me!, oh, chocolates . . . margaret? \n\nmargaret: hello. \n\njerry: you two know each other? \n\nnewman: you might say that. \n\nmargaret: we used to go out. \n\nnewman: well, tootle loo. and nice seeing you again margaret, goodbye jerry. have fun. hehe \n\njerry: . . . you went out with . . . newman? \n\nmargaret: just a few times. \n\njerry: why? \n\nmargaret: i liked him. \n\njerry: you liked, newman? \n\nmargaret: look i'm a little uncomfortable talking about this okay? \n\njerry: no, i'm sorry. i'm just a little curious. i mean why did you stop seeing him. \n\nmargaret: he ended it. \n\njerry: . . . he ended it? \n\nmargaret: yes!! yes! it was a couple of years ago. why does it matter? \n\njerry: no, no of course not. \n\nkramer: jerry, jerry they found a tee. \n\njerry: what tee? \n\nkramer: a golf tee. in the dry cleaner. \n\njerry: newman! she went out with newman! \n\nelaine: it must be a mistake. \n\njerry: no. it isn't and the most distressing part of it is, not that she went out with him but that he stopped seeing her. do you understand? he, newman; newman stopped seeing her. newman never stopped seeing anybody. newman will see whoever is willing to see him. not so much why she did see him as disturbing as that is. but why, did he, newman, stop seeing her? \n\nelaine: perhaps there's more to him than meets the eye. \n\njerry: no, there's less. \n\nelaine: it's possible. \n\njerry: no it isn't. i've looked into his eyes. he's pure evil. \n\nelaine: he's an enigma, a mystery wrapped in a riddle. \n\njerry: yeah, he's a mystery wrapped in a twinkie. \n\nwx: would you like some more coffee? \n\njerry: no,, but thank you. \n\njerry: oh, by the way, your stationery store guy called and he's got your pencil. \n\nelaine: ugh! you are kidding me. \n\njerry: no, he left the store early, made a special trip to the distributor and got it. \n\nelaine: i bought mine yesterday on 14th street. \n\njerry: well, what did you do that for? you ordered it. \n\nelaine: to please mr. pitt. \n\njerry: well, you better go down there and tell this guy. he's very excited. \n\nelaine: uh, great! \n\njerry: hi julie. \n\njerry: hi. \n\nelaine: hi julie. \n\njerry: hi, how are you, elaine? i'm meeting george here. \n\nelaine: oh, well then i better get going otherwise george will make me buy him lunch to make up for that big salad he bought me yesterday. \n\njerry: how do you know that? \n\nnewman: who is it. \n\njerry: it's jerry. \n\nnewman: you've come at a bad time now. could you come back later? \n\njerry: come on newman. open the door! \n\nnewman: hellooo jerry. what a rare treat. what brings you down to the east wing? \n\njerry: okay, pudgy, lets stop playing games. what happened with margaret? \n\nnewman: there's no need to get excited. can't we discuss this like gentlemen? \n\njerry: no, we can't. my skin is crawling just being inside your little rat's nest. now, what happened? \n\nnewman: do you really want to know what happened? i'll tell you what happened. she wasn't my type. \n\njerry: noit your type? \n\nnewman: not really. \n\njerry: well, how come? \n\nnewman: ah, she just didn't do it for me. \n\njerry: what, what is wrong with her? \n\nnewman: well, h ha ha- if you're happy with her, that's all that matters. \n\njerry: you don't think she's attractive? \n\nnewman: no. i need a really pretty face. but, hey, that's me. \n\njerry: okay, newman, thanks a lot. \n\nnewman: care for some lemonade? \n\njerry: no, thank you. \n\nnewman: drop bye anytime, jerry. hah, ha ha \n\nkramer: listen to this, \"if a player cleans his ball during the play of a hole accept on the putting green he shall incur a penalty of one stroke. \" that's a rule, jerry. \n\njerry: but it's just a friendly game. why do you have to be such a stickler? \n\nkramer: because that's the way i weas raised. you know when i was growing up i had to be in bed every night by nine o'clock. and if i wasn't, well i don't have to tell you what happened. \n\njerry: what are you so worried about this for? \n\nkramer: you know he talked about pinkus on the course? \n\njerry: he did? \n\nkramer: oh yeah, he said he brought a pair of pants into pinkus' and they came back stained with some kind of dry cleaning fluid. and pinkus denied responsibility. you see he was very upset with pinkus. \n\njerry: so it had nothing to do with you. \n\nkramer: yeah, but maybe i pushed him over the edge. \n\njerry: no, i don't think so. \n\nkramer: poor pinkus, poor little pinkus. \n\njerry: hey, let me ask you a question. you met margaret. doo you think margaret's good looking? um, she's a natural beauty. oh, no makeup. i like that. \n\njerry: yeah, and the curls. you like the curls? \n\nkramer: oh, i love curls. \n\njerry: yeah,, me too. \n\nkramer: all right, i'll see you later. \n\njerry: where you going? \n\nkramer: genderson's. \n\njerry: you're going to see genderson? \n\nkramer: it's weighing on my conscience. \n\ngeorge: you know, i think i could have played with dolls if their were dolls in the house. it seems like fun to me. it doesn't seem like a gender thing. i think i would like to play with dolls. what's so terrible? \n\njulie: ha. so, george, i was talking to elaine before. \n\ngeorge: a ha! we're just friends. \n\njulie: yes, well anyway, she said something that was kind of intriguing. \n\ngeorge: oh, share. \n\njulie: well, when i came over to the table she mentioned something about how she better hurry up and leave or you'd make her buy lunch to make up for the one you bought yesterday. \n\ngeorge: ha, ha ha uh, i'm not following that. \n\njulie: well, my question is, how could elaine be under the impression that you bought the big salad, when i was the one who handed it to her? \n\ngeorge: well, she probably just assumed. \n\njulie: um, did she? \n\ngeorge: . . .uh, . . . wait a second. are you suggesting that i went out of my way to tell elaine that even though you handed her the big salad, that it came from me? \n\njulie: that's what i'm suggesting. \n\ngeorge: . . . well it was a big salad. and what i would like to know is, how does a person who has nothing to do with the big salad claim responsibility for that salad and accept the thank you under false pretenses - ah - ah? \n\njulie: george, all i did was hand someone a bag. \n\nelaine: it's just that my boss is very demanding and he needed the pencil right away. \n\nstationer: well,, why did you tell me to order it if you knew you were going to get one someplace else? \n\nelaine: no, no no i didn't know. i, i'm sorry. \n\nstationer: i went all the way down to the warehouse. it took me three hours. i had a big fight with the foreman. \n\nelaine: really? a fight with the foreman? \n\nstationer: yes. \n\nelaine: well, again, i'm just awfully sorry. \n\nstationer: yeah? well, then how about going out with me tonight? \n\nelaine: okay. \n\nmargaret: i mean they found a tee and he played golf that day. nobody walks into a dry cleaner's with a tee. the circumstantial evidence is overwhelming. \n\njerry: you had how many dates with him? three? \n\nmargaret: around three. i don't know. \n\njerry: and . . \n\nmargaret: i told you. he stopped calling me. i moved on. i'm not hung up on him. what are you looking at? \n\njerry: what? i'm not looking. nothing. \n\njerry: why are you looking at my face? \n\njerry: where am i going to look? \n\nmargaret: kiss me. \n\njerry: . . . i can't. \n\njerry: newman! \n\njerry: all i could think of was when i was looking at her face was; newman found this unacceptable. \n\nelaine: well, ,i'm going out with the stationery store guy. \n\njerry: you're going out with the stationery store guy? \n\nelaine: i felt so guilty about the pencil i couldn't say no. \n\nelaine: well, well, well, i'm not treating you to lunch anymore! you had to tell julie that i made a special point of telling you that i bought you the big salad. didn't ya'. \n\nelaine: uh, uh. \n\ngeorge: you know, if it was a regular salad i wouldn't have said anything. but you had to have the big salad. \n\njerry: hello, what? you're kidding. i'm turning it on. oh, my god. get out of here. (hangs up) hey listen to this. they issued a warrant for genderson's arrest. he escaped and the police spotted him on the new jersey turnpike. \n\ntv: as you can see white bronco. the police have cleared the highway traffic in front of him but they are keeping their distance and don't want the situation to escalate. and we have gotten an identification on the driver of the vehicle. his name is; kramer, one of genderson's golfing buddies. \n\npolice: 9-1-1 what are you reporting \n\nkramer: yeah, this is kramer. i got genderson in the car. he wants to see his fish. i'm taking him to see his fish. so tell the police to back off. \n\npolice: okay, sir, and what's your name? \n\nkramer: my name is kramer. you know who i am dammit! \n\ngenderson: i told you not to take the turnpike. \n\nkramer: i thought we would blend in. \n\ngenderson: if we took the palisades this never have happened. \n\nkramer: we would have had all that bridge traffic. \n\ngenderson: ah, just drive. \n\nelaine: she was hitting on you? my friend noreen? \n\njerry: your friend, noreen. \n\nelaine: are you sure you're not just flattering yourself? \n\njerry: if i was flattering myself, i think i'd come up with someone a little less annoying than noreen. \n\nelaine: i cannot believe that she was hitting on you. \n\njerry: if you don't believe me, ask her. \n\nelaine: i will. besides, she's got a boyfriend, jerry, you know him. dan. remember, we went to that party at his house? \n\njerry: oh, right. the guy who talks with a really high voice. \n\nelaine: yeah. \n\nkramer: jerry, did you get my fortune magazine in your mail? \n\njerry: check the pile. \n\nkramer: (leafing through jerry's mail) oh, who sent you a card? \n\njerry: i don't know. \n\nkramer: open it, it's from hallmark. \n\njerry: oh. \n\nelaine: hello, darling. \n\njerry: isn't that cute, a 'thank you' card from kristin. \n\nkramer: let me see. \n\nelaine: who's kristin? \n\njerry: she works for pbs, i met her when i agreed to do that pledge drive. \n\nkramer: did you ask her about me? \n\njerry: yeah, in fact she said that you could be one of those people that sits in the back and answers the phone. \n\nkramer: giddy-up! alright! so now, how does that work? now, what, i get a percentage of every pledge i bring in, right? \n\njerry: no, it's not aluminum siding, it's volunteer work. all the money goes to the station. \n\nkramer: okay, yeah, alright, that sounds good, but i still get a tote bag though, right? \n\njerry: yeah, and one of those foam beer can holders. \n\nelaine: (dialing the phone) you know what i'm doing? i'm calling noreen. \n\njerry: oh, go ahead. \n\nelaine: you sure you don't mind? \n\njerry: like she's really going to admit she was flirting with me. \n\nhigh pitched voice: hello? \n\nelaine: hi, it's elaine. listen, i was just talking to jerry. \n\nhigh pitched voice: jerry? \n\nelaine: jerry seinfeld. \n\nhigh pitched voice: oh, i like jerry a lot. \n\nelaine: you mean like like? \n\nhigh pitched voice: what are you talking about? \n\nelaine: noreen, were you hitting on him? \n\nhigh pitched voice: noreen's not here, this is dan. \n\nelaine: ooh. \n\ndan: you say that noreen was hitting on jerry seinfeld? \n\nelaine: uh oh. \n\njerry: so was i right? she likes me, right? \n\nelaine: oh, i'm sorry mr. pitt. hello? \n\nhigh pitched voice: elaine? what is going on? why did you tell dan i was hitting on jerry seinfeld? \n\nelaine: is this noreen? \n\nhigh pitched voice: (noreen) what would ever possess you to make up a story like that. \n\nelaine: well, listen, jerry mentioned it, and, i don't know-- \n\nelaine: noreen, are you crying? \n\ndan: no, this is dan! \n\nelaine: oh, hi dan. \n\nmr. pitt: elaine? work? \n\nelaine: tell noreen i'll just call her back later. \n\nmr. pitt: who was crying? \n\nelaine: no one. i'm sorry mr. pitt, that won't happen again. \n\nmr. pitt: (unwrapping a candy bar, placing it on a plate and cutting it with knife and fork) i'm sure it won't, but someone was crying and i want to know who it was. \n\nelaine: well, it's a long story, okay? but my stupid friend jerry told my other friend noreen that she was-- (noticing mr. pitt eating the candy bar with knife and fork and becoming distracted) you know, hitting on him and so i called her to see what was, uh, going on and i accidentally got her boyfriend, who is this, you know-- \n\njerry: i'm jerry seinfeld, i tell jokes for a living, but there's no joking about the financial crisis at pbs. show us you care. call in your pledge now. \n\nkristin: jerry, i am so grateful that you're doing this. \n\njerry: oh, i know you are. \n\nkristin: you got the card i sent? \n\njerry: i did. \n\nkristin: so where is it? \n\njerry: what? \n\nkristin: the card. is this it in the trash? \n\njerry: no? \n\nkristin: this is my card, you threw it away. \n\njerry: well-- \n\nkristin: i put a lot of thought into this card. \n\njerry: you signed your name and you addressed the envelope, it's not like you painted the picture and wrote the poem. \n\nkristin: fine. i gotta get back to the office. \n\njerry: why, because i threw the card out? how long was i supposed to save it? \n\nkristin: you have no sentimentality. \n\njerry: i have sentimentality, really, i'm sentimental. here, look. here's some cards i've saved, these are birthday cards from my grandmother, see, i'm not a bad guy. \n\nkristin: oh, so you save her cards but not mine! oh great! \n\njerry: (as kristin is storming out) well, but, you see, i saved something! see? i can save. i'll see you at the pledge drive, ok? \n\nkramer: new cards, huh? \n\njerry: no, they're old cards from my grandmother. \n\nkramer: oh. well, i'll tell you, a nice greeting card can really lift a person's spirits. \n\njerry: yeah. \n\nkramer: (opening a card) oh, a check. \n\njerry: yeah, she puts ten dollars in every card for my birthday, that's why i save them. \n\nkramer: there's a check in all these? why don't you cash them? \n\njerry: i don't know, it's ten dollars. \n\nkramer: but you got a whole pile here. 1987? \n\njerry: oh so what. \n\nkramer: jerry, your grandmother gave you this gift. she wants you to spend the money, to have the fun that she can't have. oh, this is tantamount to a slap in the face. \n\njerry: oh, get out of here. \n\nkramer: jerry, a gift not enjoyed is like a flower that doesn't blossom. \n\njerry: alright, alright, i'll cash the checks. \n\nkramer: yeah. \n\njerry: it was a 'thank you' card from kristin because i'm doing the pbs drive. i mean, how long am i supposed to keep it? \n\ngeorge: the rule is a minimum of two days. \n\njerry: you making that up or do you know what you're talking about? \n\ngeorge: i'm making it up. \n\njerry: i mean really, what's the point of saving it? i could see if i had a mantel. \n\ngeorge: oh, well, a mantel's a whole different story. \n\njerry: absolutely. \n\ngeorge: if my parents had a mantel, i might be a completely different person. \n\njerry: so anyway, she's kind of upset about it so i need you to do me a favor. \n\ngeorge: let's have it. \n\njerry: well, i'm doing the pbs show, so during the show they're gonna be running the ken burns baseball thing. so i thought if i could get a baseball player to come on the show with me... \n\ngeorge: you want me to ask one of the yankees. \n\njerry: could you? \n\ngeorge: alright. i'll run it by a few people. \n\njerry: alright, do your thing, where you lie to everyone. \n\nelaine: (entering and sitting down) i should never have made that phone call. \n\njerry: hey, did you ever get to talk to noreen? \n\nelaine: yes, she's very upset. \n\njerry: so was i right about the flirting? was it true? \n\nelaine: i don't know, i never asked. she was yelling-- \n\ngeorge: who was flirting with you? \n\njerry: remember when we were in the bookstore, that woman came up to us? \n\ngeorge: she wasn't flirting with you. \n\njerry: oh, sure she was; asked me where the 'humor' section was? humor? come on. \n\nelaine: jerry, her brother just had a book of political cartoons published. \n\njerry: alright, so maybe she wasn't flirting with me. so what? \n\nelaine: so, yeah, that's funny. hey, you wanna hear something weird? mr. pitt eats his snickers bars with a knife and fork. \n\ngeorge: really? \n\nelaine: yeah. \n\njerry: why does he do that? \n\ngeorge: he probably doesn't want to get chocolate on his fingers. that's the way these society types eat their candy bars. \n\njerry: oh, you know. \n\ngeorge: what, you think i eat all my meals with you? (to waitress) excuse me, sweetheart? i think you may have overcharged us. what is this? \n\nwaitress: that's the extra toast. get it? \n\ngeorge: got it. (the waitress walks away) did you just see what happened here? \n\nelaine: what? \n\ngeorge: did you see the way she pointed at the check? she gave me the finger. \n\njerry: that's how waitress types express derision. they don't want to get their mouths dirty. \n\ngeorge: so, what do you think? \n\nmr. morgan: a pbs fundraiser? i'm not gonna waste any of the players' time with that, besides the team already does so much promotion for channel eleven. \n\ngeorge: channel eleven? forgive me for trying to class up this place, for trying to have the yankees reach another strata of society that might not watch channel eleven. \n\nmr. morgan: uh, what the hell are you doing? \n\ngeorge: i am eating my dessert. how do you eat it, with your hands? \n\nmr. morgan: you know, maybe george has something here about pbs. \n\njerry: okay, sixty bucks from nana. \n\nkramer: huh? yeah. \n\nnana: hello? \n\nvoice: hello, this is chemical bank. just wanted you to know that your checking account is overdrawn. \n\nnana: chemical bank? i haven't used that account in months. \n\nvoice: well, someone's been cashing the checks and you're overdrawn. \n\nnana: oh dear. i'll be down there first thing in the morning. \n\nvoice: (unheard by nana as she hangs up the phone) wait, we can do this over the phone. \n\n(fade to the next morning, the alarm clock goes off, it's 5: 30, nana turns off the alarm, fully dressed, gathers her coat and purse, sighs, and heads for the door.) \n\njerry: you got danny tartabull?! \n\ngeorge: you wanted a yankee, i got you a yankee. \n\njerry: boy, you really came through. kristin's gonna be thrilled. \n\ngeorge: hey, the bull owes me one, i helped him with his swing. \n\nkramer: so you're bringing danny tartabull to the fundraiser tonight. \n\ngeorge: absolutely. pending approval of the script. \n\njerry: excuse me? \n\ngeorge: jerry, i'm yankee management. \n\nkramer: yeah, i'd like to see the script too. \n\njerry: you're just answering phones! \n\nkramer: it would put me at ease. \n\ngeorge: hey, when you order from the waitress, get her to point to the menu. i want to see what finger she uses. \n\njerry: uh, say, i wanted a side order of fruit but i didn't see it on the men \n\nwaitress: oh, you're getting it (pointing to menu with index finger), it comes with your breakfast special. \n\njerry: right you are. \n\ngeorge: i didn't get the special, but i'd also like the fresh fruit too. \n\nwaitress: (scratching cheek with middle finger) i'll check. \n\ngeorge: (after waitress walks away) i don't believe it, she did it again! \n\njerry: oh, she had an itch. \n\ngeorge: she had an itch. she could have used any one of those fingers. that finger was meant for me. \n\njerry: by the way, lunch is on me. i just cashed my nana's birthday checks. \n\nstreet tough: looking for something, lady? \n\nnana: isn't the chemical bank on this block? \n\nstreet tough: the bank? it burned. it's gone! \n\nnana: oh dear. \n\njerry: (answering) hello? \n\nuncle leo: jerry? hello. \n\njerry: uncle leo! \n\nuncle leo: listen, i don't want to alarm you, but your nana is missing. \n\njerry: nana's missing? \n\nuncle leo: i came to pick her up for a doctor's appointment, she wasn't here. i called the doctor, nobody knows where she is. she hasn't left the apartment in twenty-five years! \n\njerry: i've been thinking about her, i just cashed some of her checks. \n\nkramer: yeah, that's right. you did. \n\nuncle leo: what kind of checks? \n\njerry: i think chemical bank. \n\nkramer: oh, they were chemical. \n\nuncle leo: chemical?! she hasn't used that account since her branch closed. what are you doing cashing her checks anyway? \n\njerry: well, kramer thought it would make her happy. (to kramer) i never should have cashed those checks! \n\nkramer: hey, i didn't twist your arm. \n\nuncle leo: your grandmother's on a very fixed income. what, are you broke? \n\njerry: just call me if you hear anything. (hangs up and faces kramer) well? i cashed the checks, the checks bounced and now my nana's missing! \n\nkramer: well, don't look at me. \n\njerry: it's your fault! \n\nkramer: my fault? your nana is missing because she's been passing those bum checks all over town and she finally pissed off the wrong people. \n\nnoreen: so anyway, it's caused a lot of problems. dan thinks i'm interested in jerry, he won't let up. \n\nelaine: i'm really sorry, but you can see why i'd make a mistake like that. \n\nnoreen: no, why? \n\nelaine: well, you know, because he's a high talker. \n\nnoreen: he does raise his voice occasionally, but that's normal. \n\nelaine: no. no, no, no, not a loud talker, a high talker. \n\nnoreen: really? \n\nelaine: you don't think his voice sounds a lot like yours? \n\nnoreen: i never noticed that. \n\nelaine: well, it's no big deal, you know, it's just that he can sound like a woman, you know? \n\nnoreen: great. i'm going out with a man who sounds like a woman. \n\nelaine: well, he looks like a man. \n\nnoreen: yeah. \n\nelaine: he's bald. i know that's a guy thing. \n\nnoreen: i guess. \n\nelaine: i know he belches a lot. \n\nnoreen: well, that's something. so, jerry thought i was flirting with him. \n\nelaine: yeah. \n\nnoreen: (cutting into a cookie with a knife and fork) hm. he's kind of a baritone, isn't he? \n\nelaine: what are you doing? \n\nnoreen: i'm eating this cookie. \n\nelaine: no, no, no, but why are you using a knife and a fork? did you just \n\nnoreen: no, i've seen people do it. i like it. \n\ndanny tartabull: this isn't gonna take long, is it? \n\ngeorge: oh no, in and out, i made sure of that. and you'll be happy to know i perused the script and it's met with my approval. \n\ndanny tartabull: i'm sure it's fine. \n\ngeorge: (swerving) hey! watch it! did you see that guy? he just gave me the finger! \n\ndanny tartabull: you sure? \n\ngeorge: oh yeah! middle finger, straight up, at me! at us! \n\ndanny tartabull: what are you doing? \n\ngeorge: i'm following him. \n\nbanker: i'm sorry, the account had insufficient funds. we had to return the \n\nnana: oh dear, that's my grandson. may i call him now and explain? \n\nbanker: oh, certainly. \n\nelaine: and now i think she might really be interested in you. and dan is \n\njerry: would you? \n\nelaine (answering): hello? \n\nnana: hello, i need to speak to jerry. \n\nelaine (thinking it's dan): oh, it's you. we were just talking about you. \n\nelaine (hanging up): heh? \n\nkramer: any word from nana? \n\njerry: no. \n\nelaine: nana? \n\njerry: yeah, my grandma's missing. \n\nelaine: missing? \n\njerry: yeah. i think it might have something to do with those checks. \n\nelaine: um, what does nana sound like? \n\njerry: like a grandmother, why? \n\nelaine: well... \n\njerry: oh, you hung up on my nana?! \n\nelaine: i don't know, maybe. \n\njerry: you told nana to drop dead?! \n\nelaine: it's possible. \n\njerry: yes, it is! \n\nkramer: alright, alright. look, jerry, we gotta get down to pbs, pdq. \n\njerry: alright. \n\ngeorge: no one gives us the finger! we're yankees! \n\ndanny tartabull: want this last donut? \n\ngeorge: no, you can have it. \n\nkramer: jerry, where are all the tote bags? \n\njerry: i don't know. \n\nkramer: well, i'm not leaving the premises without tote bags. i was promised tote bags and tote bags i shall have. \n\nkristin: jerry, this man wants to see you. \n\njerry: leo? \n\nuncle leo: hello. \n\njerry: uncle leo! what are you doing here? \n\nuncle leo: i wanted to tell you that your grandmother is fine. \n\njerry: oh. \n\nuncle leo: she's had quite a day but she's gonna watch you tonight on the tv. \n\nkristin: jerry, i'm dying to meet danny tartabull. where is he? \n\njerry: he'll be here any second. \n\nkristin: you know you guys are both on in five minutes. \n\njerry: yeah, yeah. \n\nkristin: (leaving) okay. \n\nuncle leo: why didn't you tell me you were a little short? here. if anybody asks you where you got it, you don't know. \n\njerry: no, that's ok, i really don't need any money. \n\nuncle leo: what are you talking about? \n\njerry: please- \n\nuncle leo: i want- \n\njerry: it's not necessary. \n\nuncle leo: jerry, would you please take it. \n\njerry: i can't, i can't take it. \n\nuncle leo: i want you to have it! \n\njerry: uncle leo, i don't want to have it! \n\nuncle leo: jerry, take the money! \n\njerry: i don't want it!! \n\nhigh pitched voice: jerry, open up. we need to talk. \n\nkramer: who's that? \n\njerry: you know what? it sounds like the friend of elaine's that was hitting on me in the book store. \n\nkramer: jerry, i'll take care of it. \n\ndan: is jerry in there? \n\nkramer: well, he can't be disturbed now. \n\ndan: well this situation is driving me crazy. he's all i think about. i can't get him out of my mind. \n\nkramer: i'm sorry. i mean, i know what it's like to be in love. ties you up in knots. and jerry is a very sexy man. \n\ndan: what? \n\nkramer: look, i'm not judging you. in fact, we here at pbs, we have many programs celebrating your lifestyle. armistead maupin's tales of the city, gender bending and swinging in san francisco. before stonewall about those dark ages when you couldn't come out of the closet, lest you be persecuted because of your, you know. \n\ndan: no, i don't. \n\nkristin: (running up) are you danny tartabull? \n\ndan: no, i'm not. \n\ngeorge: i'll take care of this, danny. \n\ngeorge: excuse me. \n\nman: what's the problem? \n\ngeorge: i believe you cut me off, and then made an obscene gesture. \n\nman: i did? where? \n\ngeorge: outside of manhattan, about an hour ago. \n\nman: wow! is that danny tartabull? \n\ngeorge: that's right, of the new york yankees. \n\nman: i'd like to shake his hand but i can't. \n\njerry: i'm jerry seinfeld, i tell jokes for a living, but there's no joking about the financial crisis here at pbs. our lines are open, so please call the number you see on your screen. \n\njerry: this is the only time this year we'll be asking for donations. you've been enjoying ken burns' baseball- \n\nkramer: (answering) pbs pledge drive. \n\nnana: hello, i'd like to speak with jerry. \n\nkramer: oh, you again. buddy, look, forget about jerry. it's not gonna happen. \n\nnana: this is his grandmother. \n\nkramer: oh, uh, nana. hello. \n\nnana: tell jerry i'm sorry, i'm going to have to write him some new checks. \n\nkramer: as long as you've got your checkbook out, how about forking a little over to pbs? you watch the station, don't you? you don't want to be a freeloader. \n\njerry: -programs like ken burns' baseball. and if danny tartabull were here, i'm sure he'd say, 'that's correct, jerry.' \n\nkramer: jerry? i have an announcement. your grandmother is on the line. \n\njerry: my nana? \n\nkramer: and as we speak, she's generously writing pbs a check for fifteen hundred dollars! \n\nuncle leo: she can't do that, she's on a very fixed income! stop the show!! \n\njerry: i got another card from kristin. not quite as chipper as the first one. \n\nelaine: wow. isn't this little bunny giving you the- \n\njerry: yes, he is. \n\nelaine: you should show this to georgie. \n\njerry: yeah. \n\nwaitress: (at the next table) here's your knife and fork. \n\njerry: look, she's cutting up an almond joy. \n\nelaine: i just don't get it. \n\njerry: you know, i saw someone on the street eating m&ms with a spoon. \n\nelaine: what is wrong with everybody? \n\njerry: (surveying the restaurant) look, they're doing it. they're all doing it! \n\nelaine: (standing up) what is wrong with all you people?! have you all gone mad?!! \n\ni think the thing i admire most about the chinese is that they're hanging in there with the chopsticks. because, if you think about it, you know, they've seen the fork... by now. i'm sure they've seen the spoon, they're going, \"yeah, yeah, they're ok... we're going to stay with the sticks.\" i mean, i don't know how they've missed it: thousands of years ago, chinese farmer gets up, has his breakfast with the chopsticks, goes out and works all day in the field with a shovel... hello?... shovel! not going out there ploughing 40 acres with a couple of pool cues. \n\njerry: (feeling face) good shave today... \n\nelaine: (sarcastic) don't worry, jerry, i can manage these bags; really i'm fine. \n\njerry: i'm thinkin' of lettin' my sideburns grow in a little... \n\nelaine: can we rest here a second. \n\njerry: (pause) yeah, i guess. \n\njerry: ...so how's noreen? \n\nelaine: mmm! she's got a new boyfriend paul. \n\njerry: already? that was fast... i assume he's not a high talker... \n\nelaine: no, but... he has... the worst habit. whenever he answers the phone, he won't put noreen right on. ya have'ta go through, like, ten minutes of chit-chat. \n\njerry: a long talker. \n\nelaine: yeah! and he is so boring! but now, whenever he answers the phone i just hang up. \n\njerry: (pause) all right; let's move it out. \n\njerry: hey, isn't that george's father? \n\nelaine: oh, yeah, it is! shall we say hello? \n\njerry: i've never seen him in manhattan before; it's weird. so out of context. \n\nelaine: that man he's with is he wearing a cape? \n\njerry: i believe he is wearing a cape. \n\nelaine: why is mr. costanza with a man in a cape? \n\njerry: well, it is good cape weather. cool. breezy. \n\nelaine: yeah, why a cape? who wears a cape? where do you even get a cape? \n\njerry: you're right; it is strange. in fact, let's cross to the other side of the street. cover me. \n\njerry: just, uh, plop it on the counter there. \n\njerry: oh! i got a message. (presses button on answer machine) \n\ngeorge: (on tape, lifeless) hey, it's george. i got nothin' to say... (beep) \n\nelaine: that sounds urgent... \n\njerry: let me call him back... hello? who is this? donna chang? oh, i'm sorry, i must o' dialed the wrong number. \n\nelaine: donna chang? \n\njerry: (is redialing) i should've talked to her; i love chinese women. \n\nelaine: isn't that a little racist? \n\njerry: if i like their race, how can that be racist?... hellooo??... oh, is this donna chang again?!... yyy-yes, i am calling george... oh, the lines are crossed! you're getting his calls. well, what do you know?! \n\njerry: so listen... \n\nkramer: hi. i'm goin' through this stuff like water... (to jerry) who you talkin' to? (jerry waves him away and moves towards the bedroom, still on the phone) \n\nelaine: he's on with a chinese woman. \n\nkramer: oooo, ooooo. you know, i dig asian women. \n\nelaine: you got a comfort problem there? \n\nkramer: no, i think these jockeys shrunk. \n\nelaine: i thought you wore silk underwear. \n\nkramer: no, no, n--well, you know, i wore 'em for about a month but i couldn't stick with it. no, i need the secure packaging of jockeys. (he's serious. then he makes a hand gesture of grabbing up) my boys need a house! \n\nelaine: (not charmed) that's nice. listen, kramer, you know, if you ever want to have kids you shouldn't wear briefs. boxers are much better for your sperm count. \n\nkramer: sperm count? well how many ssssperm should i have? \n\nelaine: a lot! \n\njerry: i got a date! \n\nelaine: with the chinese woman?! \n\njerry: she knew who i was! she saw me in a club one time! my first date ever with the pacific rim. i'm very excited. \n\nkramer: jerry. did ya ever have your sperm count checked? \n\njerry: no, why should i? i wear boxers. \n\nkramer: you ever get a woman pregnant? \n\njerry: i'm sorry, kramer. those records are permanently sealed... \n\nkramer: what would you say if i told you i never impregnated a woman? \n\njerry: really? you never slipped one past the goalie in all these years??... boy, i'm surprised. you've slept with a lot of women! \n\nkramer: a lot of 'em! (wild gesture, freaked out) do you think maybe i'm... depleted??!! \n\njerry: well, i'm sure you're not... totally depleted. \n\nkramer: yeah but what if i am? i'm the last... male kramer! we're facing extinction! \n\njerry: so go to a fertility clinic. have your sperm count checked. \n\nkramer: yeah, but then i'd have to... (glances at elaine) well, you know... into a cup in the middle of the day?? \n\nelaine: what, does that conflict with your regular schedule? \n\nelaine: (going to the phone) all right. i'm gonna try noreen again. \n\njerry: i am very excited about this date! we're goin' to hunan balcony! \n\nelaine: she's chinese so you suggest chinese food? \n\njerry: she suggested it! \n\nelaine: i thought chinese don't eat chinese... \n\njerry: she's very assimilated. \n\njerry: paul again? \n\nelaine: (matter of fact) you can't get one ring past him. \n\ngeorge: hey, hey, hey! you don't call me back?! \n\njerry: i tried! your line's crossed with a chinese woman! \n\ngeorge: ...huh? \n\nelaine: hey, george, we saw your father on the street before. \n\ngeorge: hmm, what's he doin' in the city today? \n\ngeorge: you didn't ask him? \n\ngeorge: (suspicious) you didn't say hello? \n\nelaine: well, he was with someone. a man... in a cape. \n\ngeorge: why was he wearing a cape? \n\ngeorge: was my father wearing a cape? \n\njerry: no. jacket and tie no cape. \n\ngeorge: huh... cape... (turns, distracted, heads slowly towards door) what was a man with a cape doin' with my father?... what was my father doing with a man in a cape?... (opens door) why a cape? hmm! (exits) \n\ndoctor: the results of your sperm test are in. \n\nkramer: oh? \n\ndoctor: ummm... are you planning to start a family? \n\nkramer: yes! i would like to very much!... well, i'm low, aren't i? i ca--i can feel it!... \n\ndoctor: yes, i'm afraid you're a little low. \n\nkramer: ohhh, maaan!! it's over! the kramer name is finished! i'm never goin' to procreate-- \n\ndoctor: ah--that's not necessarily true. \n\nkramer: what \n\ndoctor: there are measures you can take to improve your fertility. \n\nkramer: all right, all right. what. what. you tell me; i'll do anything. come on, doc, tell me. \n\ndoctor: first thing you should wear boxer shorts. \n\nkramer: all the time? \n\ndoctor: all the time. ya have to get off jockeys right away. \n\nkramer: yeah, but i've always worn jockeys. \n\nelaine: hi paul! it's elaine calling! yeah, i'm calling from a car phone so i don't really have time to talk. is, is, uh, noreen there?!... oh. she's not?! (hurries to put phone down) okay, great. well you can just tell her i called, then, an'-- well, yes. it has been unseasonably cool lately... oh, okay, well, look i'm pulling up to the building now. so, i'm gonna... (a little later, elaine is sitting and looking very bored) yeah, i took 20% too... um. look it uh... (turns hair dryer on and off) paul. the... car seems to be running out of gas so... i'm gonna... have to get off the phone. (hangs up) \n\nhostess: please let me know when the rest of your party has arrived, sir. \n\njerry: yes, i will. \n\nguy: (indicating a cigarette) do you mind? \n\njerry: no, go ahead, i second-hand smoke two packs a day. \n\ndonna: jerry. \n\njerry: (pause. stops tapping his leg) 'scuse me? \n\ndonna: hi. sorry i'm late. \n\njerry: who are you? \n\ndonna: i'm donna chang... \n\njerry: (stands, puzzled, it's not sinking in) w-what do you mean? \n\ndonna: i mean i'm donna chang. \n\njerry: (pause) you're donna chang? \n\ndonna: did you think i was chinese?... \n\njerry: oh. no. what, you mean because of the \"chang\"? \n\ndonna: actually, the family name wasn't originally chang. \n\njerry: i didn't think so. \n\ndonna: used to be \"changstein.\" \n\nelaine: she's not chinese? \n\njerry: no. not chinese. not even asian. \n\nelaine: so. what is she? \n\njerry: well, she's... like you. \n\nelaine: (pause, annoyed) oh, how disappointed you must have been. (walks to couch, with her cereal) \n\njerry: well, it's false advertising, see? and the thing is, i think she likes people thinkin' she's chinese. she suggests chinese food. she always introduces herself as \"donna chang\"... \n\nelaine: so then why are you seeing her again... \n\njerry: well, she is a woman. \n\nelaine: listen, i spoke to paul an' noreen. they might be breakin' up. \n\njerry: really? (sits on couch) \n\nelaine: well, maybe. \n\njerry: hey, wouldn't it be funny if paul an' noreen broke up because o' you kept hangin' up on him? \n\nelaine: (pause) what do you mean? \n\njerry: well, you know if paul thought it was some guy... hangin' up because he was having an affair with noreen? \n\nkramer: here, take my jockey shorts. \n\nelaine: whoa! whoa! \n\njerry: here, what is that?!! \n\nkramer: look, you gotta help me. i have to get off jockey shorts. \n\njerry: wha--you have a low sperm count? \n\nkramer: very low! come on, jerry. take 'em. \n\njerry: nnnoo--i don't want 'em. (starts backing away as kramer follows him around the room carrying the underwear) \n\nkramer: jerry, look! you gotta help me! i can't have 'em near me! if i have one pair in my house, i'm gonna wear them! \n\njerry: look! i don't want 'em! \n\nkramer: all it takes is one pair! now, come on! j-- \n\njerry: i'm not gonna be able to sleep if those are in the house! \n\nkramer: boxers! how do you wear these things!! look at that--they're baggin' up, they're rising in! an' there's nothing holding me in place! i'm flippin'! i'm floppin'! \n\nkramer: what am i gonna do!? jerry! i'm goin' crazy in these things! (leaves) \n\njerry: (re the underwear pile) well, i'm gonna have to move now. \n\nfrank: ya know what i like about manhattan? there's no mosquitoes. \n\ngeorge: plenty of mosquitoes. \n\nfrank: queens is full of mosquitoes. \n\ngeorge: so, dad... \n\nfrank: gnats, too. if i'm not mistaken. \n\ngeorge: (pause) dad! i heard you were in the city the other day! \n\nfrank: (angry) your mother has to tell you every move i make?! \n\ngeorge: jerry and elaine saw you. \n\nfrank: they didn't say hello? \n\ngeorge: well, they were in a rush. \n\nfrank: they couldn't just say hello?!... oh, to hell with them. \n\ngeorge: they, uh... said you were with some guy who was wearing a cape?... \n\nfrank: elaine, i can see, not sayin' hello. she's very--what's the word--uh, supercilious. \n\ngeorge: so dad,-- \n\nfrank: (shouting and clapping hands in anger) how could jerry not say hello?!! \n\njerry: did they uncross the lines yet? \n\ndonna: no, they can't find the problem. it's really getting ridicurous. \n\njerry: (long pause -- did he hear \"ridicurous\" -- should he say something -- can't decide if he should. finally...) did you say, \"ridicurous\"? \n\ndonna: ridiculous. \n\njerry: (pause) i thought you said... \"ridicurous.\" (donna looks puzzled) \n\ngeorge: hey-- (spots donna) \n\njerry: oh, what are you doing here? \n\ngeorge: oh, i wanted to talk to you--i'm sorry, i--didn't know you... (re donna) had company. (jerry indicates he should stay) hiya, i'm george. \n\ndonna: oh! hi! (they shake hands) i'm donna chang. (george to himself registers that as weird. he and jerry exchange sideways glances) i just spoke to your mother before. \n\ngeorge: you spoke to my mother? \n\ndonna: she was trying to call you, but-- \n\njerry: the rines are crossed? \n\ngeorge: did you say, \"the rines are crossed?\" \n\njerry: did i? \n\ndonna: (pause) george, she's so sweet. we talked for an hour! \n\ngeorge: (smile) yeah. \n\ndonna: anyway, i'm really sorry. \n\ngeorge: sorry? why sorry? what you got to be sorry about? \n\ndonna: well, she told me she and your father are getting divorced. \n\nelaine: ay, divorced. that's really too bad... \n\njerry: yeah, you know it's a shame his parents didn't get divorced thirty years ago. he could have been normal. \n\ngeorge: oh my god! (coming out of bathroom) you know what i just realized?! if they get divorced an' live in two separate places? that's twice as many visits! \n\njerry: gee, i never thought of that. \n\ngeorge: imagine if i had to see them both on the same day? (mirthless) haha! it's like runnin' a double marathon! \n\nelaine: hey georgie, did you have any idea that anything was wrong? \n\njerry: have you ever spent any time with these people...? \n\ngeorge: you know what this has to do with? \n\nelaine: what? \n\ngeorge: the man in the cape--i bet you he is mixed up in this! i don't trust men in capes. \n\njerry: and you can't cast aspersions on someone just because they're wearin' a cape... superman wore a cape... an' i'll be damned if i'm gonna stand here an' let you say something bad about him. \n\ngeorge: all right superman's the exception. \n\nkramer: oh, hey! elaine, i just heard that noreen and paul are breaking up. i want you to put in a good word for me. (to jerry) i've always had a thing for noreen. \n\nelaine: no, kramer. you don't understand. this could be my fault. \n\nkramer: well, if she's available now, i'm not gonna let her slip through my fingers this time. nooope. (does a little dance) \n\njerry: well it looks like you've adjusted to the boxers... \n\nkramer: wellll, i wouldn't go as far as that. \n\njerry: you went back to the jockeys? \n\nkramer: wrong again. \n\njerry: (pause as he realizes) oh, no. \n\nelaine: what? what?... \n\njerry: don't you see what's goin' on here???... no boxers, no jockeys... \n\nelaine: (backing away from kramer) eeaawww... \n\njerry: the only thing between him and us is a thin layer of gabardine... kramer, say it isn't so. \n\nkramer: oh, it be so. i'm out there, jerry, an' i'm lllovin' every minute of it!!! \n\njerry: don't you need a little... help? \n\nkramer: surprisingly, no. i'm freee, i'm unfettered... (opens door to leave, still very happy, then) feel like a naked innocent boy rrroamin' the countryside!! (exits) \n\nelaine: so you guys are tryin' to work it out! that's great!... \n\nnoreen: yeah, well... we're trying... but he just went insane there for a while... \n\nelaine: oh, he went insane?... \n\nnoreen: believe it or not, paul was convinced i was having an affair because somebody kept calling and hanging up whenever he answered! what kind of a sick person calls and hangs up over and over? \n\nelaine: (awkward, increasingly avoiding eye contact) well. uh. i don't know about sick. i mean, maybe it was somebody who, didn't wanna talk to whoever was answering because whoever was answering was always making boring chit-chat, an' was completely oblivious to the fact that the person who was calling, didn't want to speak to them, ah! \n\nnoreen: (has been growing increasingly slackjawed in amazement) i can't believe that was you... \n\nelaine: (looks at noreen) i'm really sorry, noreen... \n\nnoreen: (reconsidering paul's worth) ...so you thought he was boring? \n\nelaine: hey, noreen, don't go by me! ha ha. \n\njerry: what are you doin' to this woman?! this is the second relationship you've ruined for her in a few weeks!! \n\nelaine: (head in arms) i know-- \n\njerry: first you ruin her relationship with the high talker. \n\nelaine: well... i got confused, they sound exactly the same. \n\njerry: so she breaks up with him. somehow picks up the pieces of her life. miraculously meets... a new guy! ya bust that up! an' then, just as they're reconciling, you announce to the world he's boring. \n\nelaine: (apologetically) i didn't know she'd take it so seriously. \n\njerry: well, apparently you have a tremendous influence over this woman anything you say she does! \n\njerry: yeah. \n\ndonna: it's donna chang. \n\njerry: (hits button) come on up. (opens door a little) \n\nelaine: well, i guess i just didn't realize it... \n\njerry: well, let's look back at your history with this woman. okay? \n\nelaine: (like a little girl) okay... \n\njerry: first, you encouraged her to join the army... she did. \n\nelaine: she was lost... \n\njerry: then, you suggest she goes... awol! she did! \n\nelaine: well, she didn't seem to be havin' so much fun... \n\njerry: you know... you better make sure and never tell this woman to jump off the brooklyn bridge... \n\nelaine: if i have this much influence over her, why don't i just call her an' tell her to get back together with him--that's aalll! \n\ndonna: hi. \n\njerry: oh, miss changstein! this is elaine... \n\n(at the same time--donna: helllo...--elaine hi! how are you?) \n\ndonna: (to jerry) guess what? mrs. costanza called me, they're not getting divorced. \n\nelaine: (happy gasp) oh. \n\njerry: why? what happened? \n\ndonna: well, she was trying to call george last night, she got me, we spoke for an hour and she changed her mind!!! \n\njerry: wow! that's amazing! \n\ndonna: anyway, she wants to meet me! she invited me over for dinner! \n\nelaine: (off camera) huh. \n\ndonna: she said you should come too. \n\njerry: tonight? \n\ndonna: yeah--i just remembered, i'm gonna have to cancel my acupuncture class. (goes to phone) \n\ngeorge: all right. (tearing his jacket off) let me just say one thing there is no way that this is gonna happen. you hear me? no way! because if you think i'm going' to two thanksgivings, you're out of your mind!!! \n\nestelle: (calmly) we're not getting divorced. \n\nfrank: your mother changed her mind... (tries to catch a fly with his hand) \n\ngeorge: (gleeful, to estelle) you did?! that's goood! that's very good! i'm very glad to hear that. \n\nfrank: yeah, we worked it out. \n\ngeorge: all right. so let me ask you a question. who was the man in the cape? \n\nfrank: he was my lawyer. \n\ngeorge: your lawyer wears a cape...? \n\nfrank: yeah. so what? \n\ngeorge: who wears a cape? \n\nfrank: he's very independent; he doesn't follow the trends. \n\nestelle: he looks ridiculous in that thing... \n\nfrank: (shouting) you have no eye for fashion!!! \n\nestelle: (shouting) i have no eye for fashion?!?!?! \n\ngeorge: all right! come on! let's not fight. \n\nfrank and estelle: all right! all right! \n\nestelle: georgie's right. (pats him on the cheek) \n\ngeorge: (quietly) ehh. (pausing to look at both of them) so what made you change your mind? \n\nestelle: it was that chinese woman. \n\njerry: so i'm curious. what'd you tell mrs. costanza that changed her mind? \n\ndonna: i mentioned a few bits of wisdom from confucius. \n\njerry: confucius, huh? \n\ndonna: yeah. \n\njerry: (pause) you know, you're not chinese... \n\njerry: hey! i heard the good news! \n\nfrank: jerry, how come you didn't say hello to me the other day, huh?! \n\njerry: elaine was... in a rush. \n\nfrank: (to george, pointing) i knew it was elaine!! \n\ndonna: you must be estelle. \n\nestelle: (giggles) yes. who are you...? \n\ndonna: i'm donna chang! \n\nestelle: (steps back, appalled) you're not chinese! \n\nkramer: y'ello? \n\nelaine: paul? \n\nkramer: elaine! \n\nelaine: kramer? \n\nkramer: (pause) yeahh! \n\nelaine: what are you doin' there? \n\nkramer: wellll, isn't it obvious? \n\nelaine: (scoffs) uh, is noreen there? \n\nkramer: yes she is... \n\nelaine: (pause) well... can i talk to her? \n\nkramer: oh, what? am i... tooo boring for you? \n\nelaine: (losing patience) alright--would you just put her on? \n\nkramer: well, i feel that it would be best that you didn't talk to noreen for a while... \n\nelaine: you feel? \n\nkramer: that's right! she an' i have had a very long talk. an' i was appalled to learn of the destructive influence you've had over her life, lo these many years... \n\nelaine: what, are you insane?! \n\nkramer: from now on, i'll be calling the shots around here... \n\nelaine: uh! ho-ho. an' what are you gonna tell her? \n\nkramer: well. i've encouraged her to go back into the army...(noreen sighs a little) there she'll get the structure an' the discipline she needs right now... and she'll have qualified officers telling her what to do... \n\nelaine: (sighs) kramer! you have got to let me talk to her! \n\nkramer: can't help ya, kid. \n\nelaine: get the-- (kramer puts phone down) \n\nestelle: you're not chinese!?!? \n\ndonna: ...no. \n\nestelle: i thought you were chinese!! \n\ndonna: i'm from long island. \n\nestelle: long island?!?! i thought i was gettin' advice from a chinese woman!! \n\ndonna: i'm sorry...? \n\nestelle: well... then... that changes everything! \n\ngeorge: what?! \n\nestelle: she's not chinese; i was duped!! \n\ngeorge: so what?! she still gave you advice; what's the difference if she's not chinese?!?! \n\nestelle: i'm not taking advice from some girl from long island!! (goes into another room) \n\ngeorge: (chases after her) wait a minute! you're--now you're getting a divorce because she's from long island?!?! \n\nfrank: (shouts after them) you want a divorce?!!? you got one!!! \n\njerry: (pause, to donna) you know, you might wanna think about changin' your name... \n\nelaine: so, ever since she started dating kramer, she won't even talk to me! \n\njerry: well--noreen listened to you like george's mother listened to the chinese. (buys a newspaper out of a machine) \n\nelaine: (pause) you know, everybody listens to the chinese. i mean, look at the fortune cookie. you couldn't get away with that in any other restaurant. \n\nelaine: (quietly) hu_uh, (pause) you know, everybody listens to the chinese. i mean, look at the fortune cookie. you couldn't get away with that in any other restaurant. \n\njerry: yeah, no one's reading any rolled-up messages in a knish... \n\ngeorge: oh, it had to happen!! \n\njerry: hey. \n\ngeorge: i knew it!! (shuts cab door) i predicted it! (hits cab roof twice, it drives off) saw both of them today! what a disaster! i'm runnin' all over queens. first i saw my mother. we had lunch together. never had... lunch with my mother before--it's like a date! then we drive down to kew gardens! tons of traffic! i see my father. we played \"clue\"! all day with this! [kew gardens (see links at end of script)] \n\nkramer: (triumphant) hey, jerry! guess what! the kramer name might live on! noreen's late! she's laaate!! (give two thumbs up) \n\nnoreen: (surprised) who are you?! \n\nman: i'm frank costanza's lawyer. (he starts pulling her to safety) \n\njerry: so, she got you to join a book club? \n\ngeorge: i got a feeling i'm gonna be much smarter than you pretty soon. \n\njerry: well, i think that statement alone reflects your burgeoning intelligence. (sits on a couch.) hey, what about this one? \n\ngeorge: nah, i don't like that one. \n\njerry: so, what's your first book? \n\ngeorge: \"breakfast at tiffany's.\" 90 pages. (waves a hand like it's nothing.) \n\njerry: it's kinda old, isn't it? \n\ngeorge: they wanted to read a truman capote book. \n\njerry (standing): oh, sure...truman capote. \n\ngeorge: he's a great writer. \n\njerry: oh, yeah. \n\ngeorge: did you ever read anything by him? \n\njerry: no. you? \n\ngeorge: nah. \n\njerry (sees a white couch by the wall): oh, what about this one? look at this, this is it! this is what i'm looking for. (sits on the couch.) oh, yeah! \n\nelaine: hey, what's going on? \n\njerry: new couch, baby! \n\nelaine: new couch? why? \n\njerry: i love this couch. you know what the best part about it is? it doesn't fold out, so no one can sleep over. \n\nelaine (to carl, flirtatiously): hello. \n\ncarl: hello. \n\nelaine: oh, let me get the door for you. (they carry the couch out the door.) ooh, be careful! \n\njerry: wait till you see it, it's perfect. the guy told me it's one of a kind, they stopped making it. \n\nelaine: what are you doing with your old couch? \n\njerry: nothing, the moving guys are taking it. why, you want it? \n\nelaine: yeah, i'll take it. \n\njerry: well, i'm sure that they can deliver it to your apartment. \n\nelaine: yes, they can. (kramer enters.) \n\nkramer: hey! couch is comin.' \n\njerry: it's here! \n\nkramer: alright! yeah. you know, i'm excited about this, jerry. in a way, i feel like i'm getting a new couch. \n\njerry (nonplussed): yeah. so do i. \n\nkramer: ooh! remember poppie? \n\njerry: oh, you mean from poppie's restaurant? \n\nkramer: yeah, yeah. anyway, uh...we're going into business together. remember that idea i had a few years ago about the pizza place where you make your own pizza? \n\njerry: yeah. \n\nelaine: what was that again? \n\nkramer: it's a pizza place where you make your own pie! we give you the dough, the sauce, the cheese...you pound it, slap it, you flip it up into the air...you put your toppings on and you slide it into the oven! sounds good, huh? \n\nelaine (in a southern accent): ooh, i can't wait to get me a fella and make mah own pie! \n\njerry: what made you resurrect that old idea? \n\nkramer: well, i happened to be eating at poppie's when i told him the \"old\" idea, and his eyes - waaaaaah! - just lit up. you know, he wants to back it. \n\nelaine: i heard poppie's was good, let's go. \n\njerry: i'm not goin' there. didn't he get busted by the board of health? \n\nkramer: that was in the past, jerry. as it happens, new york magazine just judged his kitchen to be one of the cleanest in the city. they got a duck there, you think you died and went to heaven. \n\nelaine: ooh! i love duck. c'mon, c'mon! \n\nkramer: yeah, but you gotta order it two days in advance. (to jerry) you know, i'm gonna call him, i'm gonna order the duck for you. \n\njerry: oh, kramer, i - \n\njerry: right there, guys. that's perfect. ah? whatta ya think, lainie? \n\nelaine: well, i don't know. i'll have to sit on it. \n\njerry: oh no, i don't want anyone sitting on it. \n\ncarl (hands jerry an invoice): sign here. \n\nelaine (to carl): excuse me, i was wondering if would it be possible if you could deliver the old couch to my apartment? it's not very far. \n\ncarl: sure. \n\nelaine: 'kay. you, uh...you got room in the truck for me? \n\ncarl: yeah, i think we can squeeze you in. \n\nelaine: oh, goody. okay, well uh...(to jerry and kramer)...i'll see you chumps later. (elaine and carl exit.) \n\nkramer: did you offer those guys a drink? \n\njerry: uh, no. should i have? \n\nkramer: what kind of a person are you? \n\njerry: i don't know. \n\ngeorge: okay. \"breakfast at tiffany's.\" (begins to read, but gradually his attention is drawn to the tv guide on the end table. george realizes there's a show on he wants to see by looking at his watch, and doesn't start the book.) \n\nelaine: so, he puts the couch down, and just as he's about to leave he says, \"do you date moving men?\" \n\njerry: ah ha... \n\nelaine: you wanna know what i said? \n\njerry: i can't wait. \n\nelaine: \"i do now.\" \n\njerry: clever. \n\nelaine: is that something? \n\njerry: yes. \n\nelaine: is that something? \n\njerry: you're something. so anyway, when they were in my house before, i didn't offer them anything to drink. \n\nelaine: well, they're real men, jerry. they get sweaty. \n\njerry: so, anyone sweaty comes into your house has to be offered a drink? \n\nelaine: yes. \n\njerry: well, would you apologize for me? (elaine nods. poppie comes out of the kitchen.) \n\npoppie: hello! jerry, so good to see you again! (puts his hand out.) \n\njerry (clearly creeped out by having to shake poppie's hand): hello, poppie. this is elaine. \n\nelaine: nice to meet you, poppie. \n\npoppie: let me show you to your table. (leads jerry and elaine to the table.) your duck is cooking as we speak. it is so succulent...so succulent! \n\njerry: well, kramer told us all about your business venture together. \n\npoppie: your friend and i are going to make a lot of money. of course, i already have a lot of money. poppie does very well...very well. \n\nelaine: well, your mother must be very proud of you. \n\npoppie: my mother...was taken from my house by the communists in the middle of the night when i was ten years old. she was sent to a slave labor camp, where she labored for twelve years. finally, they released her and she was on a boat to america to re-unite with us...but she was served some bad fish, and she died...on the high seas. \n\njerry: so, what's good tonight? \n\nelaine: boy, i'm really looking forward to this duck. i've never had food ordered in advance before. \n\njerry: ah, i could've stayed home and ordered a pizza from paccino's. \n\nelaine: paccino's? oh no. you should never order pizza from paccino's. \n\njerry: why not? \n\nelaine: because, the owner contributes a lot of money to those fanatical, anti-abortion groups. \n\njerry: so, you won't eat the pizza? \n\nelaine: no way. \n\njerry: really. \n\nelaine: yeah. \n\njerry: well, what if poppie felt the same way? \n\nelaine: well, i guess i wouldn't eat here, then. \n\njerry: really! \n\nelaine: yeah. that's right. \n\njerry: well, perhaps we should inquire. poppie! oh, poppie. could i have a word? (poppie comes over.) \n\npoppie: yes, jerry. i just checked your duck...it is more succulent than even i had hoped. \n\njerry: poppie, i was just curious...where do you stand on the abortion issue? \n\npoppie: when my mother was abducted by the communists, she was with child... \n\njerry: oh, boy. \n\npoppie: ...but the communists, they put an end to that! so, on this issue there is no debate! and no intelligent person can think differently. \n\nelaine (offended): well...poppie. i think differently. \n\npoppie: and what gives you the right to do that? \n\nelaine (standing up): the supreme court gives me the right to do that! let's go jerry, c'mon. \n\nwoman at next table (to her date): i heard that. let's go, henry. \n\nhenry: but we just got here... \n\nwoman at another table: i'm with you, poppie! \n\nwoman at yet another table (to her date): let's go! \n\nelaine (to poppie): and i am not coming back! \n\npoppie: you're not welcome! \n\njerry: well, i'm certainly glad i brought it up. (gets up and leaves.) \n\njerry: well, you should have seen it. it was quite a scene over there. \n\ngeorge: i'm sorry i missed it. \n\njerry: oh, you really missed something. and i have to say...it was pretty much all my fault. (jerry smiles. george laughs.) so, how's the book coming? (george's laughs taper off...) i say, how's the book comin'? \n\ngeorge: oh...pretty good. \n\njerry: so, what's it about? \n\ngeorge: well, it's about holly go-lightly. \n\njerry: holly go-lightly. \n\ngeorge: yeah, she's quite a character. \n\njerry: yes, you haven't read a page, have you? \n\ngeorge: no. \n\njerry: big surprise. \n\ngeorge: i couldn't. you know, if it's not about sports, i find it very hard to concentrate. \n\njerry: you're not very bright, are you? \n\ngeorge: no, i'm not. i would like to be, but i'm not. what am i gonna do? the book club meets in a few days. \n\njerry: why don't you rent the movie? \n\ngeorge: 'why don't i rent the movie.' see, this is when i like you. alright, now i'm relieved. (kramer enters and comes over to the booth.) \n\nkramer (scanning a menu): so...how was the dinner last night? \n\njerry: oh...well... \n\nkramer: did you enjoy the duck? (elaine comes back from the bathroom.) oh, elaine! i was just asking how dinner went last night. \n\nelaine (sitting down): oh...well... \n\nkramer: alright, what did you do to poppie? \n\nelaine: nothing. \n\nkramer: well, he's in the hospital. and the cook says you put him there. \n\nelaine: what's wrong with him? \n\nkramer: i don't know! i'm gonna go and visit him later. (angrily) it would be nice if you got him something. (punches the the table to accentuate this, and leaves.) \n\njerry: we should get him something. \n\nelaine: yeah. you're right. \n\nelaine: do you know that i have been using the same bottle of shampoo for a year? and i shampoo every day. (carl smiles.) so, what do you think of my conversation? \n\ncarl: not much! (they both laugh.) i, uh, would have invited you up, but i don't have any furniture. \n\nelaine: you don't have any furniture? \n\ncarl: no, i hate furniture. i can't look at it. (they laugh again.) \n\nelaine: well, i can understand that. pretty good date, huh? \n\ncarl: yeah! no heavy lifting. (elaine and carl look into each others eyes, then kiss.) \n\nkramer: anyway, jerry and elaine felt very badly about what happened to you, and they wanted you to have this. \n\npoppie (opening the gift basket): what's this? a bottle of wine and a five-alarm chili? they're trying to kill poppie?! \n\nkramer: why, what...? \n\npoppie: don't they know i have a gastro-intestinal disorder? if i would have any of this, i would die. then poppie's no good to anyone! this is a sick, sick joke on poppie. how could you be friends with those two? \n\nkramer: well, we're not very close. \n\npoppie: they owe me for those ducks. they were flown in from newfoundland. \n\nkramer: oh, they got good ducks there, huh? \n\npoppie: oh, very good ducks. \n\nelaine: i'm in looove! \n\njerry: whoa! \n\nelaine: this is it, jerry! this is it! he is such an incredible person! he's real, he's honest, he's unpretentious...oh, i'm really lucky! \n\njerry: did you tell him i was sorry i didn't offer him the drink? \n\nelaine: no, i forgot. and, the best part is, he doesn't play games. you know? there are no games! (sits down on the couch.) \n\njerry: no games? what is the point of dating without games? how do you know if you're winning or losing? \n\nelaine (putting on lipstick): well, all i know is, he doesn't like games and he doesn't play games, you know? he has too much character and integrity. \n\njerry: ah ha. and what is his stand on abortion? \n\nelaine (looks at jerry and smears lipstick across her face): what? \n\njerry: what is his stand...on abortion? \n\nelaine: well, i'm sure he's pro-choice. \n\njerry: how do you know? \n\nelaine: because he, well...he's just so good-looking. \n\njerry: well, you should probably ask, because if he's gonna be coming over with those paccino's pizzas...could be trouble. \n\ngeorge: i'd like to rent breakfast at tiffany's. \n\nclerk (checking the computer): uh, this is out. someone has it. \n\ngeorge: out? oh no, i've been to four other places, you're the only ones that have had it. \n\nclerk: well, i could put it on reserve for you, if you'd like. \n\ngeorge: maybe we could call them and ask them to return it. \n\nclerk: oh, sorry. we can't do that. \n\ngeorge: well, maybe they're done with it. i could go pick it up. \n\nclerk: i don't think so. it doesn't work that way. \n\nvoice on intercom: yes? \n\ngeorge: uh, excuse me, are you joe temple? \n\nintercom: yes. \n\ngeorge: uh, yes, uh...you don't know me, my name is george costanza...did you happen to rent breakfast at tiffany's? \n\nkramer: hey. \n\njerry: hey, what's happenin.' \n\nkramer: well, you know, poppie's over at my place. tonight's the big night. i'm gonna make the first test pizza at the restaurant. \n\njerry: you got a regular 'manhattan project' going on over there. \n\nkramer: yeah. anyway, he's about to leave, he wants the duck money. (poppie enters.) \n\njerry: okay. hi, poppie. \n\npoppie: hello. \n\njerry: i'm sorry about the gift, i didn't know about your condition. \n\npoppie: that's fine. if you just give me my duck money, i'll be on my way. \n\njerry: okay. i'll get it. (goes into the bedroom.) \n\nkramer: why don't you sit down, poppie? you're still recuperating. (poppie moves to the sofa and sits down, and exhales a loud sigh of relief.) what, are you tired, poppie? \n\npoppie: no. \n\nkramer: hey, poppie...you really think people wanna make their own pizza? \n\npoppie: kramer, did i ever tell you about my mother? my mother - \n\njerry (comes out of the bedroom with poppie's money): here you go. (poppie stands up and takes the money.) anyway, i'm sorry again about the...(notices a large, wet stain on his couch)...the...the... \n\npoppie: the what? (looks at kramer, and exits.) \n\njerry: ...the...the... \n\nkramer (to poppie): so long. i'll see you tonight. \n\njerry (frantic): kramer, kramer, what is this?! \n\nkramer: what is what? \n\njerry: this puddle on my sofa! \n\nkramer: what puddle? \n\njerry (points): that puddle! (kramer sees the puddle and does a double-take.) \n\nkramer: i don't know. \n\njerry (looking at the puddle with kramer): is it...? could it...? could he have...? it is! (grabs kramer.) poppie peed on my sofa!! \n\nkramer: are you sure? \n\njerry: well, what is it then?! my new sofa! poppie peed on my new sofa! \n\nkramer: i'm sure it'll come out. \n\njerry: i don't care if it comes out, i can't sit on that anymore! \n\nkramer: ah, you're making too much of it. \n\njerry (sarcastic): yeah, you're right. it's just a natural human function...happens to be on my sofa, instead of in the toilet, where it would normally be. \n\nkramer: right! \n\ngeorge: well, anyway, the book club meets tomorrow, mr. temple. \n\njoe: well, i was going to watch it with my daughter. she likes audrey hepburn very much. \n\ngeorge: she was a delicate flower. \n\njoe: why didn't you just read the book? \n\ngeorge: well, as i say, the pink-eye made my vision...quite blurry... (joe's daughter comes to the door.) \n\njoe: remy, this is george. would you mind if he watched breakfast at tiffany's with us? (george smiles at remy. remy looks at joe doubtfully.) \n\ncarl: hi. \n\nelaine: hi. (they kiss.) \n\ncarl: i missed you. \n\nelaine: oh, i missed you! \n\ncarl: i don't remember the last time i felt this way. \n\nelaine: me, either! \n\ncarl: i think about you all the time. \n\nelaine: you do? \n\ncarl: do you think about me? \n\nelaine: oh yeah, all the time, all the time...although, recently i've been thinking about this friend of mine. \n\ncarl: what friend? \n\nelaine: oh, just this woman...she got impregnated by her troglodytic half-brother, and decided to have an abortion. (waits in suspense for what carl's response will be.) \n\ncarl: you know, someday...we're going to get enough people in the supreme court to change that law. \n\ngeorge: so, anything to uh, nosh? \n\njoe: what did you want? \n\ngeorge: popcorn? \n\nremy: popcorn? where do you think you are? \n\ngeorge: well, a lot of people keep popcorn in the house. \n\nremy: well, we don't. \n\ngeorge: you might want to try it...makes the movie more enjoyable, that's all. \n\njoe (passes george a bowl): here's some nuts. \n\ngeorge: oh! nuts! excellent! you know what i love? how there's two nuts named after people. hazel...and filbert. \n\nremy (to joe): can we watch the movie now, daddy? (joe presses play on the remote.) \n\ngeorge: hey, let's turn off the lights, get some real 'movie atmosphere.' \n\njoe: the lights are fine. (george shrugs, and the movie begins.) \n\nkramer (in a chef's hat and apron): see, anybody can do this. (tosses pizza dough into the air.) \n\npoppie: use your wrist! it's all in the wrist. (kramer tosses the dough way up there.) not too high! \n\nkramer (puts the dough on the counter): alright, put a little sauce on here... (speaks some unintelligible words in an italian accent while spreading the sauce around.) some cheese... \n\npoppie: not too much! \n\nkramer: and...cucumbers! (grabs a large handful and puts them on the pizza.) \n\npoppie: wait a second...what is that? \n\nkramer: it's cucumbers. \n\npoppie: no, no. you can't put cucumbers on a pizza. \n\nkramer: well, why not? i like cucumbers. \n\npoppie: that's not a pizza. it'll taste terrible. \n\nkramer: but that's the idea, you make your own pie. \n\npoppie: yes, but we cannot give the people the right to choose any topping they want! now on this issue there can be no debate! \n\nkramer: what gives you the right to tell me how i would make my pie? \n\npoppie: because it's a pizza! \n\nkramer: it's not a pizza until it comes out of the oven! \n\npoppie: it's a pizza the moment you put your fists in the dough! \n\nkramer: no, it isn't! \n\npoppie: yes, it is! \n\njoe's wife: i'm home. \n\njoe: hey, honey. \n\nremy: hi, mom. \n\njoe's wife: hi, baby. (to george.) hello. breakfast at tiffany's? \n\njoe: yeah. \n\njoe's wife: well, i just came back from angela's, it's not looking very good for duncan. \n\njoe: aw, that's too bad. \n\njoe's wife: yeah, the doctor thinks it's just a matter of time - \n\ngeorge (clears his throat, annoyed that the movie's being interrupted): joe...could you... \n\njoe's wife: poor guy, i hate to see him suffer like this... \n\ngeorge: you know, i'm sorry, i...i hate to be one of those people, but we're right in the middle of this thing...i can't hear. \n\njoe's wife: who are you? \n\njoe: this is george costanza. \n\ngeorge (irritated): this is very hard to follow with all the talking. \n\njoe: i'll pause it, okay? (pauses the tape with the remote.) \n\ngeorge: any more grape juice? (gets up and goes to the kitchen. remy moves to the end of the couch where george was sitting.) \n\njoe's wife: who is this guy? \n\nremy: he's in some book club. \n\njoe's wife: and what's he doing here? \n\nremy: cheating on his test. (george returns from the kitchen with a glass of grape juice.) \n\ngeorge: so, we watching the movie, or are we still talking? (joe's wife shakes her head and goes into the other room. george gestures to remy to move.) okay, c'mon. let's go. \n\nremy: what? \n\ngeorge: c'mon, you took my seat. \n\nremy: it's not your seat. \n\ngeorge: i was sitting there, c'mon. \n\nremy: you didn't save it. \n\ngeorge: i had the arm! joe... \n\njoe: what's the difference? \n\ngeorge: well, i was very comfortable! i've got my nuts here... \n\nremy: it's my couch. \n\ngeorge: alright, c'mon, scooch over. (tries to squeeze into the corner seat of the couch and struggles with remy. he spills his glass of grape juice all over the couch in the process.) \n\nremy: look! look what you did! you got grape juice all over our couch, you've ruined our couch! (joe slowly walks toward george with his hands on his hips.) \n\ngeorge: joe... \n\nelaine: oh my god. \n\njerry: you see?! \n\nelaine: so, you're gonna get a new couch? \n\njerry: well, i guess i have no choice. \n\nelaine: do you want your old couch back? \n\njerry: i was hoping you'd offer. (the intercom buzzes, jerry answers it.) yeah? \n\nintercom: it's the movers. \n\njerry: 'kay. (buzzes them in.) \n\nelaine: who's that? \n\njerry: your boyfriend, he's taking it out. \n\nelaine: no, no, he's not my boyfriend. \n\njerry: why? \n\nelaine: take a guess. \n\njerry: oh, really. (carl and another moving guy come in and pick up the couch.) \n\nelaine: hi. \n\ncarl: hi. \n\njerry: hey carl, i also need you to go to elaine's and bring my old couch back. \n\ncarl: today? \n\njerry: could you? \n\ncarl: sure. \n\nelaine (to jerry): what are you doing with this couch? \n\njerry: george is taking it. \n\nelaine: did you tell him it was peed on? \n\njerry: he said he doesn't care, he'll just turn the cushion over. \n\ncarl: i'm sorry you feel that way, elaine. \n\nelaine: yeah, me too. \n\ncarl: it's just too bad. \n\nelaine: yeah. it is. \n\ncarl: well, i better get this couch back to jerry's. \n\nelaine: can i offer you anything to drink? \n\ncarl (off-camera): yeah, sure. \n\nelaine (looking in the fridge): all i've got is grape juice. \n\ncarl: throw it! \n\ncarl: the couch! \n\nmarie (describing holly go-lightly in \"breakfast at tiffany's\"): she didn't want the constraints of any relationship, that's why she got rid of the cat. the most important thing in holly's life was her independence. \n\ngeorge: well, not really. after all, she did get together with george peppard. i mean, fred. \n\nmarie: george...fred's gay. \n\njerry: i've never been able to figure out why they make these bizarre toilet seats that they have. you know, like those clear lucite ones, with all the, the coins in it? it's a lovely tribute to our past president, by the way. it's not bad enough lincoln got shot in the head, we gotta pull down our pants and sit on him, too. it's just incomprehensible that you would buy a thing like this, you install it on your toilet seat, and this says what about you? \"well, i can't afford to just throw money down the toilet, but look how close i am!\" \n\njerry: i cannot believe lindsay's still seeing you after that \"breakfast at tiffany's\" thing. \n\ngeorge: i think she finds my stupidity charming. \n\njerry: as we all do. \n\ngeorge: yeah, anyway, she's uh, having some kind of a family lunch, i'll swing by after. \n\njerry: oh, so you're gonna meet the mother? \n\ngeorge: yeah, i'll zip in, \"how do you do?\", zip out. she'll love me. \n\njerry: you're good with the mothers. \n\ngeorge: y'know, i'm better with the mothers than i am with the daughters. \n\njerry: maybe you should date the mothers. \n\ngeorge: well, if i could talk to the mothers and have sex with the daughters, then i'd really have something goin'. \n\njerry: oh, you got something goin'. \n\ngeorge: yeah. \n\nkramer: (enters apartment) hey. \n\ngeorge: hey! (heads toward bathroom) \n\nkramer: hey, you got a hammer? \n\njerry: what do you need a hammer for? \n\nkramer: well, i got this new poster. 3-d art? computers generate 'em. \n\njerry: oh, yeah! i wanna see that. bring it over. \n\nkramer: no, no, i don't have it now. i gotta pick it up at mr. pitt's. elaine was framing a bunch of stuff for him, so she did me a favor. what, you wanna take a ride? \n\njerry: nah, i don't think so. \n\nkramer: (shouting to the bathroom door) george, you wanna go for a ride? \n\ngeorge: (inside bathroom) nah. \n\nkramer: oh, come on! \n\njerry: hey, could you wait until the man finishes? \n\nkramer: all right, i've had it with you two. (opens apartment door to leave) \n\njerry: hey, guess what? remember that woman you saw me with the other day? you know, she used to be an olympic gymnast? \n\nkramer: a gymnast! \n\njerry: yeah, she's romanian, she won a silver at the '84 olympics. \n\nkramer: a gymnast, jerry. think of the flexibility. mmm, that sex'll melt your face. \n\njerry: yeah, well, i think i'm bailing. \n\nkramer: (shuts door) \"bailing\"? \n\njerry: yeah, you know, kramer, there's always a price to pay for just a sexual dalliance. \n\nkramer: jerry, you should pay that price. \n\njerry: she's romanian. what am i gonna talk to her about, ceausescu? \n\nkramer: ch- oo-... what? \n\ngeorge: (emerging from bathroom, buttoning his shirt) a gymnast! i can't believe it, you didn't tell me she was a gymnast. \n\njerry: (watching george buttoning his shirt) what is this? \n\ngeorge: what, i'm puttin' my shirt back on. \n\njerry: (stares at george, incredulous) \"back on\"? what was it doing off? \n\ngeorge: i take it off when i go to the, uh, y'know, to the \"office\". \n\njerry: (laughing) what for? \n\ngeorge: well, it frees me up. no encumbrances. \n\njerry: unbuttoned, or all the way off? \n\ngeorge: all the way, baby! \n\njerry: of course. \n\nkramer: (convulses in pain) yeow! whoa. \n\njerry: what, again? kramer, if you keep getting these attacks, you should see the doctor and have it checked out. \n\nkramer: (exiting apartment) yeah, yeah, yeah... \n\njerry: (picks up newspaper, turns to george) you always take the shirt off? \n\ngeorge: always. \n\njerry: boy, i tell ya', knowing you is like going out in the jungle. i never know what i'm going to find next, and i'm real scared. \n\nmr. pitt: elaine, i need you to proofread this report for my meeting with the poland creek bottled water people. \n\nelaine: what meeting? \n\nmr. pitt: i told you. i sit on the board of trustees for morgan springs, and we're trying to acquire poland creek. \n\nelaine: oh! (tries to take paper) \n\nmr. pitt: (pulls away) are you using a fountain pen? \n\nelaine: yes? \n\nmr. pitt: they smear! under no circumstances is ink to be used in this office. \n\nelaine: all right! i'll use a pencil, mr. pitt. \n\nkramer: elaine? \n\nelaine: come in, come in! \n\nkramer: yeah. (enters, points at package) yah, huh? \n\nelaine: ah, right there, yeah. \n\nkramer: (rips open package) yeah, that's... \n\nelaine: kramer, it's... \n\nkramer: (holds up framed picture) there she blows! (throws paper around) \n\nelaine: kramer, kramer, can you do this at home? i've got, i've got work to do, okay? \n\nkramer: oh, these are nice corners, huh? \n\nmr. pitt: elaine, did i hear... (sees kramer) oh, this is very odd. \n\nkramer: (looking at picture) yeah, it's 3-d art. computers generate 'em. big computers. \n\nmr. pitt: yes, i've heard about these. how do they work? \n\nkramer: well, you blur your eyes like you're starin' straight through the picture. and you keep your eyes unfocused. and then... (kramer and pitt stare at picture) oh, oh, oh, yeah! \n\nmr. pitt: i don't see it. \n\nkramer: yeah, it's a spaceship, surrounded by planets, asteroids... \n\nmr. pitt: i still don't see it. \n\nelaine: okay, kramer, that's enough. mr. pitt has got work to do. \n\nkramer: ya' ever dream in 3-d? it's like the boogeyman is comin' right at you. \n\nmr. pitt: a spaceship, where? \n\nkramer: (pointing) right in here. just keep your eyes unfocused. (convulses in pain) waahh! oh, mama! \n\nelaine: kramer, what's wrong? \n\nkramer: mama! \n\nelaine: kramer, kramer, are you okay? \n\nkramer: i think i gotta go to the doctor! (exits) oh, mama! \n\nmr. pitt: (still staring at picture) how long does it usually take? \n\nmrs. enright: oh, george, it is so nice to finally meet you. and i'm sorry we've kept lindsay so long. \n\nlindsay: mother... \n\ngeorge: oh, no, no, not at all. no, i have always felt that the most important thing in the world is spending time with family. \n\nmrs. enright: oh? are you and your family close? \n\ngeorge: (hesitates) very close, yes. almost painfully close. \n\nlindsay: mother, i'm going to walk nana and aunt phyllis to the elevator. george, do you mind waiting just one more minute? \n\ngeorge: mind? why would i mind? i would love to wait! (shakes hands with nana) nana, nice to see you. ni-ni-ni-ni-nana! (embraces another guest, kisses her) aunt phyllis, always a pleasure. what a pleasure! hey, let's do this again real soon. i had fun, huh? \n\nmrs. enright: can i offer you anything to eat? \n\ngeorge: oh, no no no, i'm fine. let me help you with these dishes, huh? \n\nmrs. enright: oh no, george, you don't have to... \n\ngeorge: no, i know i don't have to, i want to. \n\nmrs. enright: george, you are such a gentleman. \n\ngeorge: i'd argue if i could, mrs. enright. (exits) here we go, all right. \n\nmrs. enright: (wide-eyed) oh... \n\ngeorge: (spits out mouthful of food) mrs. enright! mrs. enright! \n\nelaine: (pointing at 3-d picture) look, there's a spaceship! that is so cool! \n\nmr. pitt: where is it? \n\nelaine: (pointing) right here. \n\nmr. pitt: i'm looking there! \n\nelaine: no, no, unfocus. \n\nmr. pitt: i am unfocused! \n\nelaine: (answering phone) hello? oh, yeah, okay fine. uh, he'll be right down. (to pitt) car's here to pick you up and take you to the meeting. \n\nmr. pitt: (still staring at picture) meeting? \n\nelaine: yeah, the poland creek merger? \n\nmr. pitt: why don't you go for me? \n\nelaine: how can i go? \n\nmr. pitt: oh, all they're gonna do is read the report. \n\nelaine: mr. pitt, i do not think that is such a good idea. \n\nmr. pitt: oh, damn this thing! \n\njerry: (trying desperately to make conversation) so, ceausescu. he must've been some dictator. \n\nkatya: oh yes. he was not shy about dictating. \n\njerry: he, uh, he must've been dictating first thing in the morning. \"i want a cup of coffee and a muffin!\" \n\nkatya: and you could not refuse. \n\njerry: no, you'd have to be crazy. \n\nkatya: he was a very bad dictator. \n\njerry: yes. very bad. very, very bad. \n\njerry: so lemme get this straight you find yourself in the kitchen. you see an clair, in the receptacle. and you think to yourself, \"what the hell, i'll just eat some trash.\" \n\ngeorge: no, no. no, no, no. it was not trash! \n\njerry: was it in the trash? \n\ngeorge: yes. \n\njerry: then it was trash. \n\ngeorge: it wasn't down in, it was sort of on top. \n\njerry: but it was in the cylinder! \n\ngeorge: above the rim. \n\njerry: adjacent to refuse, is refuse. \n\ngeorge: it was on a magazine! and it still had the doily on. \n\njerry: was it eaten? \n\ngeorge: one little bite. \n\njerry: well, that's garbage. \n\ngeorge: but i know who took the bite. it was her aunt! \n\njerry: well, you, my friend, have crossed the line that divides man and bum. you are now a bum. \n\njerry: hey! \n\nkramer: hey. \n\njerry: what's with you? \n\nkramer: i got a stone. \n\njerry: what stone? \n\nkramer: a kidney stone. \n\njerry: what is that, anyway? \n\nkramer: it's a, it's a stony mineral concretion, formed abnormally in the kidney. and this jagged shard of calcium pushes its way through the ureter into the bladder. it's forced out through the urine! \n\njerry: oh, that's gotta hurt. \n\naronson: our shareholders have given basic approval for the merger, including the stock swap. \n\nelaine: ah. the \"stock swap\". let's swap some stock. (giggles) \n\nbeck: and if you'll just give this to mr. pitt, and tell him we expect to be in full-scale production by the spring. \n\nelaine: all right. (standing up) hey, you guys--what's the name of the new company gonna be? \n\nbeck: moland spring. \n\nelaine: (making a face) \"moland\"? \n\naronson: yes, we combined morgan and poland. \n\nelaine: yeah, i know, but... \"moland\"? i wouldn't drink anything called \"moland\". \n\naronson: but it was mr. pitt's idea. \n\nelaine: oh! well, ah, what's in a name? i mean, water's water. right? \n\naronson: (to beck) we've got to do something about that name. \n\ngeorge: (on phone, as jerry gestures beside him) no, lindsay, it was not in the garbage. it was above the garbage. hovering. like an angel. of course i know your aunt bit it. i kissed her goodbye. listen, can i tell you something else? in my family, we used to eat out of the garbage all the time. (jerry makes a face) it was no big thing. that's right. oh, okay. buh-bye. (hangs up phone) i'm back in, she gave me a second chance. \n\njerry: good for you. \n\ngeorge: yes, good for me! \n\njerry: y'know what you should do now? get her some flowers, smooth it out. \n\ngeorge: yes, flowers. i will get her flowers, i will go to the florist! \n\nkramer: (enters apartment, holding up videotape) behold! the games of the '84 olympiad! katya's silver medal performance! (inserts tape into vcr, sets up tv) \n\njerry: kramer, are you still on this? i've seen gymnasts. i know what they do. it's not going to make any difference. \n\nkramer: jerry, what is your problem? \n\njerry: kramer, y'know, guys like you, with no conscience, don't know what it's like for guys like me. i'm in the unfortunate position of having to consider people's feelings. \n\nkramer: all right, jerry--are you familiar with the kama sutra? \n\njerry: no. \n\nkramer: tantric yoga? \n\njerry: no. \n\nkramer: jerry, you stand on the threshold to the magical world of sensual delights that most men dare not dream of! \n\njerry: boy, you can really talk some trash. (to george) i guess that's better than eating it. \n\nkramer: all right, all right, why don't we just watch the tape? (starts playback) \n\njerry: all right. \n\ngeorge: did you pass your stone yet? \n\nkramer: not yet. but the suspense is killing me. \n\njerry: (pointing at tv) hey, that's her! \n\nkramer: oh yeah. oh yeah, that's her. (feminine grunts and sighs can be heard as they watch the tape) look at the height, jerry, the extension! now watch the tuck. handstand, half-turn, giant into a straddle, back into another handstand. nice kip. reverse hecht. oh, nice leg extension, good form! now, here comes the big dismount. look at the rotation, full in, double back, and she sticks the landing! (gets up to leave as george and jerry continue to watch, mouths agape) perhaps you'd like to keep the tape? (silence) well, i'll take that as a yes. \n\njerry: (smiling and excited) well, here we are. \n\nkatya: yes. we are here. \n\njerry: how did you stay on that beam like that? (holds up hand) i mean, it's only this wide! \n\nkatya: i can balance myself in any position. \n\nkatya: it is amazing after years of training how one can contort one's body. of course, it is only useful in gymnastics. \n\njerry: oh boy... \n\njerry: i couldn't believe it. uh, i mean i thought i was entering a \"magical world\" of sensual delights, but it was just so ordinary. i mean, there was nothing gymnastic about it. \n\nelaine: well, what did you think she was gonna do? \n\njerry: well, you know. i mean... i dunno. \n\nelaine: no, what? \n\njerry: well, obviously i prefer not to mention any, you know... \n\nelaine: what did you think, she was going to take some of that chalk and... \n\njerry: you see, now i really don't want to get into this, any kind of specifics... \n\nelaine: oh, come on. one thing? one thing! what? \n\njerry: well... frankly, i thought, you know, i was gonna kinda' be like the apparatus. \n\nkramer: you mean like the uneven parallel bars? \n\njerry: see, again, i really don't feel that... \n\nelaine: the balance beam? \n\njerry: could we stop? \n\nelaine: (gasps in mock surprise) not the pommel horse? \n\njerry: all right. let's just drop it. \n\njerry: so lemme ask you this how long would you say i have to put in now because of, you know, last night. \n\nelaine: i dunno, at least three weeks. \n\njerry: (sarcastic) oh, great. \n\nelaine: jerry, that is such small potatoes. i think that i may have single-handedly put the kibosh on the big water merger. \n\njerry: between poland and morgan? \n\nelaine: yeah. started a big name controversy. \n\njerry: kramer! the stone! \n\njerry: what happened, did you pass the stone? \n\nkramer: (off-screen) no, i tried to do a reverse hecht off my couch and i didn't make it. \n\ngeorge: (singing as he exits florist with bouquet and a cup of coffee) \"...tootsie, good-bye. too-too, tootsie...\" (takes a drink, makes a face, shouts back at shop) you call this coffee? (dumps out coffee behind him, accidentally hitting a parked car's windshield) \n\nman in car: hey! what the hell was that?! \n\ngeorge: i'm sorry! i'm terribly sorry! i- i- \n\nman in car: clean that up! \n\ngeorge: oh, sure. of course. (looks for place to set down flowers) um, uh, could you hold these? for just a second, just a second. (grabs newspapers from trash bin, begins wiping windshield) here you go, now don't worry about a thing. it's gonna be fine. here we go. look at this shine. \n\nmrs. enright: (sees george cleaning car windshield, looks appalled) \n\ngeorge: look at this sparkle. (looks up, sees lindsay's mother) mrs. enright! (runs after her) mrs. enright! mrs. enright! \n\ngeorge: (on phone, as jerry gestures beside him) no, lindsay, i had accidentally spilled coffee on the gentleman's windshield. why would i do that? i have a job! well, did she see a squeegee? well, you're not going to make a dime without a squeegee. that's right, that's right, just tell your mother it was all a big misunderstanding. you won't regret it. okay, i'll see you later. buh-bye. (hangs up) \n\njerry: strike two! \n\ngeorge: you think i'm going down? \n\njerry: you're behind in the count. \n\ngeorge: i know. \n\nkramer: (enters apartment, points at jerry) hey, what are you doing later? \n\njerry: i'm going out with katya, thanks to you. \n\nkramer: well, maybe you should try again. you know what happens the first time people are a little shy, a little reticent. \n\njerry: if i do it again, that extends my payment book another two weeks. \n\nkramer: all right, where you going? \n\njerry: we're going to the circus. one of her old olympic teammates is an acrobat. i don't even feel like going out. \n\nkramer: well, jerry, it's your obligation. c'mon. \n\njerry: yeah, well, y'know what? if i gotta go, and spend time with this girl, then you're coming with me, dr. cyclops! \n\nkramer: no, no, no, i don't wanna go to the circus, jerry. \n\njerry: yeah, well you're going. \n\nkramer: yeah, but i'm afraid of clowns! \n\nmr. pitt: (in polo outfit, complete with jacket and high boots) i didn't send you over there to complain about the name. \n\nelaine: well, i couldn't help it. \"moland spring\"? \n\nmr. pitt: i like the name \"moland\". i picked it out. after all those months of negotiating! \n\nelaine: well, i'm so sorry! i- \n\nmr. pitt: well, i'm going riding. i haven't been on jenny for three days, all because of this blasted painting. (phone rings) elaine? \n\nelaine: oh, sorry. (picks up phone) hello? \n\nmr. pitt: (walks by 3-d poster, stops) wait a minute! wait a minute. ah! \n\nkatya: so, jerry, you're enjoying the circus? \n\njerry: \"greatest show on earth\"! \n\nkatya: my father used to take me to the circus. when the elephants came by, he would scream curses at them, blaming them for all the ills of society. \n\njerry: well, they certainly take up a lot of space. \n\nkatya: ah, misha! \n\nmisha: katya! \n\nkatya: misha, this is jerry. \n\nmisha: ah, yes. the \"co-me-dian\", eh? (speaks in romanian to katya) \n\nkatya: (laughs, replies in romanian while pointing at jerry) \n\nelaine: (on phone) oh, yes, yes i'll tell him. yes, thank you. um, um hold on. (to pitt) mr. pitt! \n\nmr. pitt: (staring at 3-d poster) i think i'm on to something! \n\nelaine: mr. pitt! the board of directors is on the phone. they've called an emergency meeting. they want you to be there to discuss the merger! \n\nmr. pitt: you said keep your eyes out of focus, which is misleading. you want deep focus! \n\nelaine: (on phone) yes, hi. okay, fine, yeah, hold on just a second. lemme just... (reaches into purse) yeah, i've got it... (pulls out both hands completely covered in black ink) oh! oh! yeah, yeah, he'll be there. (drops phone, rushes to pitt) mr. pitt, you have got to stop staring at that poster! \n\nmr. pitt: i see something that could be a spaceship. is it round? is it pointy? \n\nelaine: (grabs poster, smashes it) no, you don't see it, and you're never going to see it! (grabs pitt by the lapels, getting ink all over his jacket) mr. pitt, you have to meet with the shareholders, you have to leave now. do you hear me? do you hear me?! \n\nmr. pitt: hmm, what's happened to me? (straightens lapels) when's the meeting? \n\nelaine: in about twenty minutes. \n\nmr. pitt: oh! (puts finger to face, smearing ink on his upper lip which now resembles an \"adolph hitler\"-style moustache) do i have time to change? \n\nelaine: um, no. \n\nmr. pitt: well, excuse me, i'd better get straight over there. \n\nelaine: uh, mr. pitt... \n\nmr. pitt: yes? \n\nelaine: um, there's a just... (points at her own upper lip) \n\nmr. pitt: (sees elaine's hands covered in ink) is that ink? \n\nelaine: no? \n\ngeorge: well, here we are. \n\nlindsay: do you want to come in? my mother's having a little party. \n\ngeorge: maybe i could just use the bathroom. \n\nlindsay: sure. \n\nannouncer: (voiceover) ladies and gentlemen, could i direct your attention to the center ring, where the incomparable misha will balance ten stories above the circus floor on a wire no wider than a human thumb. \n\nmisha: it is time. \n\njerry: well, break a leg. \n\njerry: eh, show biz... \n\nannouncer: ladies and gentlemen, the incomparable misha! \n\njerry: boy, those capes are really coming back. \n\nparty guest: (exits bathroom, finds george waiting) oh, sorry i took so long. they've got one of those 3-d art posters in there. (wipes eyes) it's mesmerizing. \n\njerry: what is that sound? \n\nkatya: (covering ears) it is horrible! \n\ngeorge: whew! anybody see that poster in there? that is weird, wild stuff, huh? whew! \n\nmr. pitt: i have been accused of wrong-doing. but these false accusations will not deter us. we will annex poland by the spring, at any cost! and... our stock will rise high! (raises hand) \n\nkatya: he'll be all right. i must go and be with misha now. i don't want you to come with me. \n\njerry: oh, why not? \n\nkatya: it has been three days since our night together. misha said that was all the time i needed to put in. \n\njerry: really? \n\nkatya: in my country, they speak of a man so virile, so potent, that to spend a night with such a man is to enter a world of such sensual delights most women dare not dream of. this man is known as the \"comedian\". you may tell jokes, mr. jerry seinfeld, but you are no comedian. (walks off) \n\nwaitress: o.k. cowboys, (taps pencil on her pad) what'll you have? \n\njerry: ill have the, ah, turkey club without the bacon. \n\ngeorge: and ah, ill have the bacon club without the turkey. (raises eyebrows) \n\nwaitress: george, don't make me get tough with you. \n\ngeorge: why, you think you can, beat me up? \n\nwaitress: you wouldn't want me to mess up the beautiful face of yours. \n\ngeorge: huh, nggh [snort] stop. (flirting with her he playfully hits her arm with the menu, then flicks it into the air) \n\nwaitress: you don't want bacon ill surprise you. (she turns and walks away) \n\ngeorge: wow, is she not terrific? \n\njerry: she does have a way. \n\ngeorge: you think she thinks i have a beautiful face, or is she just saying that? \n\njerry: well they do work on tips. \n\ngeorge: george, don't make me get tough with you. whu, hu, hu, hu huuuu (raises arms) who says that? she is really cool. what do you think? you think she likes me? \n\njerry: ah, i should have got the egg white omelet. \n\ngeorge: why should she like me? who am i? huh, there's a million people to like. \n\njerry: the omelet. damn. \n\ngeorge: maybe she could like me? is it that far fetched? maybe she sees something? is it possible? \n\njerry: no. \n\ngeorge: no. \n\njerry: not possible. \n\ngeorge: not possible. \n\nelaine: heyyyyyy (leaning in, very friendly and happy) \n\ngeorge: hey elaine. \n\njerry: lannie, how was the trip? \n\ngeorge: what trip? you were gone? \n\nelaine: i went to england ... with mr. pitt, for 5 days. \n\ngeorge: hunh, pph (raises hands slightly, in amazement) how was it? \n\nelaine: actually it was great. i met an englishman, and we really, hit it off. \n\njerry: yeah, well that relationships really got a lot of potential. \n\ngeorge: he he (laughs) \n\nelaine: yeah well jerome, i, happen to be flying him in on my frequent flyer miles. \n\ngeorge: flying him in? how longs he staying for? \n\nelaine: it's an open ended ticket. he can return any time he wants. \n\ngeorge: all this in 5 days. hmm. \n\njerry: oh no, it's kenny bania. \n\ngeorge: who's he? \n\njerry: (quietly) oh, he's this awful comedian. \n\nbania: hey jerry. \n\njerry: hey kenny. (with some fake enthusiasm, just to be polite) \n\njerry: elaine, george (introducing them to bania with less enthusiasm) \n\nelaine: hi. (she flips her hair) \n\ngeorge: hi (raises his left hand in a slight gesture to say hi) \n\nbania: hi. (to elaine) \n\njerry: how's it going? \n\nbania: great. i've been working out. went from a size 40, to a 42. \n\njerry: no kidding. \n\nbania: yeah, im huge (ducks his head into his right shoulder with false modesty) well, ill leave you guys alone. (raps his knuckle twice on the table, turns and walks away) \n\njerry: all right. \n\nelaine: o.k. thanks. \n\nbania: oh. jerry, you know what just hit me? i was thinking -- what size suit are you? \n\njerry: ahh, im a 40. why? \n\nbania: i just got a brand new armani suit -- doesn't fit me anymore. you want it? \n\njerry: well i don't know if i ... \n\nbania: oh come on. why should it just sit in the closet? \n\nelaine: an armani suit? \n\ngeorge: take the suit. \n\njerry: well ... ok, i guess (voice trailing off) \n\nbania: you gonna be home later? \n\njerry: yeah. \n\nbania: ill drop it off. (raps his knuckle twice on the table again, turns and walks away) \n\ngeorge: heh heh heh hey, new suit (raises coffee cup as a salute / toast) \n\njerry: yeah, yeah, lucky me. (sips coffee) \n\nwaitress: (to george) here i personally made you a cold chicken sandwich. it's not even on the menu. \n\ngeorge: (takes a large bite - with his mouth still full, his speech is muffled) oh, this is fabulous. \n\ngeorge: boy, she is nice. i like her, i like her jerry. she's got substance. she oozes substance. \n\njerry: well, go in there and talk to her. she's not going to put em on the glass. \n\ngeorge: you mean a walk back in? that's the toughest move in the business. you're sending me out into no-mans-land, and if i get shot down i have to crawl all the way back. well i can't do it! i can't do it, i tell ya! \n\njerry: pull yourself together. your going in there soldier! that's an order! \n\njerry: get in there. (he pushes george in the direction of the restaurant) \n\nkramer: hey. (walking over to jerry, who sits at the table reading the newspaper) \n\njerry: hey. \n\nkramer: listen, i need you to do me a favor. \n\njerry: what? \n\nkramer: well, i need you to help me move my refrigerator. \n\njerry: why? \n\nkramer: cause im getting rid of it. \n\njerry: yeah? (speaking loudly so the visitor can hear him through the intercom) \n\nbania: [it's k.b., i have the suit] \n\njerry: all right, come on up (jerry puts his head down - he's not looking forward to kenny bania) \n\nkramer: (claps hands) so ... \n\njerry: well, well, why are you getting rid of your refrigerator? (he gets up from the table and carries a dish into the kitchen) \n\nkramer: well after that kidney stone i only want fresh food. it's gotta be fresh. im not eating any more stored food. plus you know i want the space. \n\njerry: what for? \n\nkramer: well i could put a, dresser in there. i could get dressed while im making breakfast. \n\nbania: hey (holds the armani suit up) here you go. (walks into the apt.) \n\njerry: yeah. \n\nbania: you didnt think i was really going to give you a suit, did you? \n\nkramer: what, you're giving him this suit? \n\nbania: that's right, and it's an armani. \n\nkramer: armani? hey, armani jerry. (kramer takes the suit and looks it over) \n\njerry: yes, yes, i heard. \n\nkramer: come on, try it on. \n\njerry: no, it's ok. \n\nkramer: come on, i want to see how it fits. \n\njerry: all right, all right. (trying on the suit jacket) \n\nkramer: there you go. \n\njerry: ok, yeah all right. \n\nkramer: oh boy, that looks great. i can't believe you're giving him this. \n\nbania: i don't even want anything for it. \n\nkramer: he's very generous, isn't he? \n\njerry: yes, yes, he is. \n\nbania: ill tell you what -- you can take me out to dinner sometime. \n\njerry: dinner? \n\nbania: yeah. you buy me a meal -- you can't get a better deal than that (pats jerry on the shoulder) \n\nkramer: no, you'll never get a better deal than that. \n\nbania: all right. ill leave you alone. (turns and walks out the door) \n\njerry: yeah, ill see you. \n\nkramer: all right, ooh look at that armani, huh, yeah. \n\njerry: yeah, that's a deal. that's a terrible deal. i don't want to go out to dinner with him. id rather make my own suit. \n\ngeorge: i did it! it's all done! \n\njerry: hey. (raises hands into fists of encouragement) \n\ngeorge: i did it. hunh, we're going out as soon as she gets off of work and it'll still be daytime. you know i, im much better in the daytime then i am at night. it's less pressure. \n\njerry: i love the day date. no wine, no shower. \n\ngeorge: there ya go. \n\nelaine: so the trip was good? \n\nsimon: yes (nice english accent) apart from that, dreadful airline food. it tends to reek havoc with my stomach. \n\nelaine: you know i, i have to say, i've never admitted this to anyone, but um, i kind of like airline food. (leans in and laughs, flirting with him) \n\nsimon: that's probably because of ... [muttering] \n\nelaine: what? \n\nsimon: what? \n\nelaine: yeah, what? \n\nsimon: [sighs] \n\nelaine: what? \n\nsimon: where i come from, we don't say what? it's proper to say pardon? \n\nelaine: huh. (muttering) this should be interesting. \n\nsimon: pardon? \n\nelaine: nothing. \n\nkelly: so then about a year ago i started selling, these funky little hair clips. it's going pretty good. i make them in my apartment. \n\nkelly: im just doing this waitress thing for a while, because i wanted to go to europe this summer \n\ngeorge: (quietly) ahh. \n\nkelly: and i could use a few extra ... careful \n\ngeorge: oh. it's just horse manure (huh huh - laughs, he points back at the horse that walked by) horse manure's not that bad. i don't even mind the word manure. you know, it's, it's nure, which is good. and a ma in front of it. ma-nure. i mean when you consider the other choices, manure is actually pretty refreshing. \n\nkelly: that's a nice watch george. \n\ngeorge: yeah. \n\nkelly: you know, my boyfriend has the same one. \n\ngeorge: huh. really? \n\nkelly: yeah, he loves watches. he's a real watch freak. \n\ngeorge: well, how about that? \n\nkelly: ooh look out. (pointing at the ground - squishing sound) you stepped right in it. \n\ngeorge: yes, i sure did. \n\njerry: so you just pretended it didnt bother you? \n\ngeorge: what is that, boyfriend? i don't understand that. what, what does she think i asked her out for? \n\njerry: boy, it's the way they just slip it in there too. \n\ngeorge: yeah, yeah, like it's just part of the conversation. oh my boyfriend really likes watches. he's a real watch freak. we-e-ell that's fabulous. (snaps fingers in the air a couple of times) \n\njerry: well let me ask you this. what exactly did you say when you asked her out? \n\ngeorge: i said, would you like to go for a walk or something. \n\njerry: oh, a walk, well -- \n\ngeorge: or something. i said, or something! \n\njerry: or something. yeah, that's a date. \n\ngeorge: (snaps fingers) there you go. \n\njerry: course you know there is always the possibility, that she called an audible. \n\ngeorge: what do you mean? \n\njerry: well she got up to the line of scrimmage, didnt like the looks of the defense and changed the play. \n\ngeorge: i think things were going ok. we were having a nice conversation. \n\njerry: uh huh. \n\ngeorge: i mentioned how i liked horse manure. \n\njerry: you did? \n\ngeorge: yeah. \n\njerry: yeah. you said you liked horse manure. \n\ngeorge: yeah. \n\njerry: (quietly) mm-hm. \n\ngeorge: you know, about how when you break it down, it's really a very positive thing. you know, you have a nure, with a ma in front of it. ma-nure. iz not bad. \n\njerry: and it was around this point that she mentioned the boyfriend? \n\ngeorge: yeah. (jerry nodding) ... oh, you think because of what i said about the manure. i wa, wa, was just saying how it takes a negative thing, and puts it on a positive spin on it. \n\njerry: im just saying there's a chance she may not have been enamored with your thoughts and feelings on manure. \n\ngeorge: so you don't think she really has a boyfriend? \n\njerry: my honest opinion, i think she made it up. \n\ngeorge: well then she's just a liar, isn't she? \n\nkramer: hey. \n\njerry: aaa. well ... you want something to eat, don't you? \n\nkramer: ahh, no, no, no. you got me all wrong buddy. i am loving this no refrigerator. you know what i discovered? i really like depriving myself of things. it's fun. very monastic. \n\ngeorge: well what do you eat? \n\nkramer: it's all fresh. fresh fish, fresh foul, fresh fruit. i buy it, i omniga nominga, i eat it. \n\njerry: well im glad it's working out. \n\nkramer: oh yeah, it's working out. and i got a date with that waitress who works at reggies. \n\njerry: boy, if i could meet a hostess, we could open up our own place. \n\nkramer: ha ha ha ha. yeah, well, ill tell you, she's a full-figured gal. \n\njerry: is she? \n\nkramer: oh you better believe it buddy. hey george, we could double sometime. \n\ngeorge: yeah, yeah, yeah we could. you know, ah, kramer, the next time you talk to her, find out if she knows kelly, from monk's. i wanna know if she really has a boyfriend. \n\nkramer: all right it's done. \n\njerry: hello? \n\nbania: hi, jerry. it's kenny. \n\njerry: oh, hi. \n\nbania: you know, i was thinking if you're not busy, maybe i can get my meal today? \n\njerry: yeah, you wanna get that meal, don't you? \n\nbania: how about mendys, ooh, ever been there? \n\njerry: no i haven't? \n\nbania: ah youre gonna love it. ill meet you there around 700. \n\njerry: all right. \n\nbania: ahh. \n\njerry: (hangs up the phone) yeah, i really needed that suit. \n\nbania: i start off with curls. that's good for the bicep. (motions with 2 fingers along his right bicep) i do 10 reps, 2 sets. \n\njerry: mm. that's fantastic. (he could care less) \n\nbania: you work out with weights? \n\njerry: no i don't. \n\nbania: you should. \n\njerry: why? \n\nbania: you worn the suit yet? \n\njerry: no, not yet. \n\nwaiter: have you decided? \n\nbania: oh, get the swordfish. best swordfish in the city. the best, jerry. \n\njerry: ill have the salmon. \n\nwaiter: and you? \n\nbania: ahh, you know what i think. im just going to have soup. yeah, ill save the meal for another time. \n\njerry: another time? what other time? \n\nbania: i had a hot dog earlier. im not that hungry. \n\njerry: no, no, bania, no. this is the dinner. the soup counts. \n\nbania: soup's not a meal. you're supposed to buy me a meal. \n\njerry: im not stopping you from eating. go ahead and eat. get anything you want. \n\nbania: but i don't want anything but soup. \n\njerry: then that's the meal. \n\nbania: but i had the hot dog. \n\njerry: i didnt tell you to have a hot dog. who told you to have a hot dog? \n\nbania: hey, i give you a brand-new armani suit, and you won't even buy me a meal? \n\njerry: all right, fine. get the soup! \n\njerry: so he just gets soup. he wants to save the meal. so now i got to do it all over again. \n\nelaine: what kind of soup did he get? \n\njerry: i don't know? consomm or something. \n\nelaine: consomm, hmm. \n\njerry: what? \n\nelaine: well, that's not really a meal jerry. i mean, if he had gotten, chicken gumbo, or matzah ball, even mushroom barley. then i would agree with you. those are very hardy soups. \n\njerry: elaine you're missing the whole point. \n\nelaine: what? \n\njerry: the meal is the act of sitting down with him. it doesn't matter what you get, as long as he's sitting in that restaurant, its a meal. \n\nelaine: was it a cup or a bowl? \n\njerry: you see -- ah, uh ... \n\nelaine: im just curious. \n\njerry: a bowl, ok? \n\nelaine: did he crumble any crackers in it? \n\nelaine: (reiterating the question) did he crumble, any crackers in it? \n\njerry: as a mater of fact, he did. \n\nelaine: oh, well. crackers in a bowl. that -- that could be a meal. \n\njerry: it's like im talking to my aunt sylvia here. \n\nelaine: oh, hi simon. this is jerry. \n\nsimon: hello. (to jerry, politely -- then quickly turns to elaine) elaine, do you have any cash on you? \n\nelaine: um, yeah in my purse. \n\nsimon: no. there was only six dollars. \n\njerry: well, i have some money. what do you need? (pulls out some bills) \n\nsimon: well, 20 should cover me. (snatches the cash) thanks mate. (he walks down the stairs to the sidewalk) \n\nelaine: where you going? \n\nsimon: (starts to turn back to elaine) just visiting. \n\nelaine: oh, ok, see you later. \n\nsimon: i won't be back for dinner. (turns and walks off down the street) \n\nelaine: (english accent) pardon? \n\njerry: so is she working? is she here? \n\ngeorge: yeah, yeah, she's here. \n\njerry: have you said anything to her? \n\ngeorge: no, but im very uncomfortable. \n\njerry: are you going to say anything? \n\ngeorge: there she is. (waiving his arms quickly above the table - to nix the conversation) no no no no no no. \n\nkelly: hello \n\ngeorge: hello. \n\nkelly: well, what's it going to be? \n\ngeorge: what's it gonna be? \n\nkelly: yes. what'll you have? are you eating? it's in that vein. \n\ngeorge: ill eh, ill just have a bowl of chili. \n\njerry: ill have an egg white omelet. \n\ngeorge: what's it gonna be? ... you hear that? \n\njerry: yeah, that was bad. \n\ngeorge: did you feel that tension? we use to have banter - (puts menu back with frustration) - there's no more banter. \n\njerry: oh, no, it's kenny. slide out so he can't sit down. (george & jerry each slide to the end of their booth seats) \n\nbania: hey. \n\njerry: hey. \n\nbania: you worn the suit yet? \n\njerry: actually, i did. i put it on last night and slept in it. \n\nbania: you did? \n\njerry: ... oh, im joking. \n\nbania: oh! ha ha ha ha ha ha ha ha. can i squeeze in? (to george) \n\ngeorge: sure you can. \n\nkelly: can i take your order? \n\nbania: what kind of soup do you have? \n\njerry: why don't you get a sandwich? \n\nbania: ok, ill have tomato soup and ah, tuna on toast. \n\njerry: ok ... (nodding his head up and down) this is it cha know \n\njerry: this is the meal ... so stock up buddy boy. \n\nbania: what are you talking about? this isn't a meal. \n\njerry: yes it is. soup and sandwich. that is a meal. \n\nbania: you're supposed to buy me dinner in a nice restaurant, like mendys. \n\njerry: i tried to do that. \n\nbania: this is lunch in a coffee shop \n\njerry: doesn't matter, this is it. this completes the transaction. \n\nbania: ah, soup and a sandwich for a brand-new armani suit. is that any kind of gesture? (turns to george) \n\nbania: im really not comfortable ... \n\nkramer: (to george) hey, i just spoke to ah, hilde about your friend. \n\ngeorge: yeah. \n\nkramer: she doesn't have a boyfriend. she made it up. \n\njerry: hi. \n\nelaine: hi. \n\njerry: where's simon? \n\nelaine: oh, he'll be right up. he's just getting some beer. and im not expecting ... any change. (leans forward as she brings her hands together in front of her, then sits on the couch) \n\njerry: when's he leaving? (putting some items into the refrigerator) \n\nelaine: about 2 days. although he's hinting at how he'd like to stay. fortunately he has no money, and no prospects. (she smiles) \n\nsimon: hey mate. fancy a beer? \n\njerry: ah, no thanks. \n\njerry: (on the phone) hello? no, im sorry bania ... im not going over this again. well who told you to order soup? ... no! there's no dinner. there's not going to be any dinner. you've had a sandwich and 2 bowls of soup and that's it. good-bye. \n\njerry: hey, what size suit are you? \n\nsimon: 40. \n\njerry: 40. perfect. brand-new armani suit, you want it? \n\nsimon: absolutely. \n\njerry: great, its yours. i can't stand the sight of it. elaine, heres the car keys. (tosses her the keys) \n\nelaine: thanks \n\njerry: yo? \n\nbania: listen jerry, i've been doing some thinking. i want my suit back. \n\njerry: i don't have your suit. i gave it away. \n\nbania: well it's my suit. \n\njerry: well it's gone. im sorry. good-bye bania. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: um, yeah. (glances around the apt.) oh, uh ... well, how's everything? (clap) \n\njerry: ok. \n\nkramer: good, ah, (clap) what's going on? \n\njerry: nothing. \n\nkramer: really. \n\njerry: you want food, don't cha? (nodding his head up and down) \n\nkramer: it's not for me. it's for hilde -- the waitress i was telling you about. she's hungry, she wants food. if i go back in there without any food ... there's gonna be trouble. (his voice gets really high pitched on his last sentence) \n\njerry: all right, go ahead \n\nkramer: thanks buddy. (goes over to the fridge and pulls out a few things) \n\nhilde: did you find anything! \n\nkramer: uh, yeah, ah ... \n\nkramer: there's a few things in here, ah, peanut butter, cheese, yeah ... \n\nhilde: cheese is good. yeah, what kind? \n\nkramer: uh, swiss. \n\nhilde: all right, it'll have to do. come on. \n\njerry: what are we doing out here? aren't we going to go in and eat? \n\ngeorge: i can't go in there. im too uncomfortable. \n\njerry: oh, w-what are you saying? so we're not going to go in there anymore? \n\nelaine: hey, what are you doing out here? \n\njerry: we can't eat here anymore, because he took a waitress out for a walk. \n\ngeorge: what's the difference? let's go to reggies. \n\nelaine: reggies? i can't eat anything there. \n\ngeorge: it's the same menu. \n\nelaine: there's no big salad. \n\ngeorge: they'll make you a big salad. what do you think, they're the only one's that make a big salad? \n\nelaine: all right. let's go, to reggies. \n\njerry: so what's going on with simon? did he leave? \n\nelaine: ahh ... wait till you hear this. \n\nelaine: so simon picks this woman up, right in front of me. \n\njerry: look at this. they make a point of saying on the menu, no egg white omelets. look at that. \n\ngeorge: so what! have a yoke! it won't kill you. \n\nhilde: (walks up to the table) hello. \n\njerry: oh, hi hilde. can i get an egg white omelet? \n\nhilde: did you read the menu? \n\njerry: all right, just give me a western. (unhappy) \n\nelaine: how bout a big salad? \n\nhilde: a big salad? \n\nelaine: (to george) ya see? \n\ngeorge: just tell her whatcha want, they'll make it for ya. \n\nelaine: it's a salad, only bigger, with lots of stuff in it. \n\nhilde: i can bring you 2 small salads. \n\nelaine: could you put it in a big bowl? \n\nhilde: we don't have big bowls. \n\nelaine: all right. just give me a cup of decaf. \n\nhilde: we have sanka. \n\ngeorge: i mean, it's not fair. i've been going there for 7 years. she's been there 3 weeks. \n\njerry: not fair. \n\ngeorge: if anyone should be forced to leave that place, it should be her! \n\njerry: she's on your turf. \n\ngeorge: if only she could get fired. is there any way that could happen? i mean i know how to get myself fired. \n\njerry: you're the best. \n\ngeorge: well ...... but how do i get someone else fired? \n\njerry: well as i see it, you've got to apply the same principles that get you fired, but redirected, outwardly. \n\nkramer: h-hey. she's hungry jerry. \n\njerry: well, there's nothing left. there's no food. \n\nkramer: no food? well you gotta have something -- (rummages through jerry's cupboards and refrigerator) -- i can't go back in there with no food. she's expecting something jerry. you don't know what she's like when that blood sugar drops. \n\nhilde: (from kramer's apartment) food! \n\nkramer: there, you see. she's already in a bad mood. she just got fired. \n\njerry: why'd she get fired? \n\nkramer: oh, because i called over there a couple of times and the manager didnt like it. \n\nelaine: so, simon is definitely going back now. he's meeting me here to return my keys. \n\njerry: boy, he's a real bounder, isn't he? \n\nelaine: yes. he's one of those bounders. \n\nkelly: egg white omelet and big salad. \n\nelaine: ahhh. thank you. \n\nkelly: i just wanted you guys know that friday's my last day. bloomingdales ordered a bunch of my clips, thank god, i don't have to do this any more. (turns and walks away) \n\nelaine: ah (hu ha - small laugh) \n\nbania: hey jerry, where's my suit? \n\njerry: i don't have it. you want half my omelet? (holds his omelet plate up to bania) \n\nmonk's manager: (on the phone, we assume it's george calling) i told you, she's busy. she can't come to the phone now! (hangs up) \n\nmonk's manager: you better tell your boyfriend to stop calling here. \n\nkelly: oh he's not my boyfriend. it's that bald guy with the glasses, who's always here with them. he's trying to get me in trouble. \n\nmonk's manager: hey! yeah. i got a message for you. you tell your friend george, that the next time i see him around here, im going to turn him into my own, personal, hand-puppet. \n\nsimon: well, hello. here you are as promised. you see, im a man of my word. (drops keys into elaine's extended palm) \n\nelaine: when are you leaving? \n\nsimon: elaine, are you trying to get rid of me? aha ha ha ha ha ha ha. i was supposed to leave tomorrow, but all of a sudden, i've been set up with a job interview that might enable me to extend my visit indefinitely. and it is all due, to this suit. how do i look? im a shoe-in aren't i. thanks again love. (touches the table, turns and walks to the exit) \n\nelaine: (turns towards the lunch counter) hey kenny. you still want to get that suit back? \n\nbania: (leans backwards from the counter) yeah! \n\nelaine: there it goes. (pointing at simon walking out the door) \n\nbania: hey! hey! (he runs out the door after simon; from outside) come here you! \n\nsimon: (from outside monk's) what are you doing? unhand me! \n\nbania: (from outside monk's) take it off! \n\ncar salesman: george, are you sure i can't show you any other cars? \n\ngeorge: i don't think so, vic. i've done my homework. '89 volvo, that's the car for me, it's the one i want. \n\nsalesman: i got a lebaron convertible right here. \n\ngeorge (chuckles): n.i. not interested. \n\nsalesman: it's got a few more miles on it, but the previous owner was john voight. \n\ngeorge (suddenly interested): jon voight? \n\njerry: okay, tim. you're welcome. (hangs up.) \n\nelaine: was that tim whatley? \n\njerry: yes, it was. he wanted your address - you, my friend, are going to be invited to his night-before-thanksgiving party. (elaine raises her hands triumphantly, then gleefully struts her way to the kitchen.) you know, he's got that great apartment on 77th street, and they overlook where they inflate all those huge balloons for the macy's thankgiving day parade? \n\nelaine: i have always had a big crush on tim whatley. why can't he ask me out? (punctuates this by shoving jerry.) \n\njerry: oh, he's a dentist. you don't want to go out with a dentist. \n\nelaine: why? \n\njerry: he'll always be criticizing your brushing technique, it'll drive you crazy. (mimics brushing his teeth) away from the gums... (the door opens a little, george jangles the keys to his new car at jerry and elaine, then enters.) \n\njerry: uh - new car! \n\nelaine: ohhh! \n\njerry: hey! did you get the volvo? \n\ngeorge: no, i decided to go with an '89 lebaron. \n\nelaine: a lebaron? \n\njerry: i thought consumer said volvo was the car. \n\ngeorge: what consumer? i'm the consumer. \n\njerry: alright. seems like...a strange choice. \n\ngeorge: well, maybe so...but it was good enough for mr. jon voight. \n\nelaine: jon voight? the actor? \n\ngeorge (boasting): that's right. he just happened to be the previous owner of the vehicle. \n\njerry: you bought a car because it belonged to jon voight? \n\ngeorge (defensive): no, no... \n\njerry: i think yes, yes. you like the idea of telling people you're driving jon voight's car. \n\ngeorge: alright, maybe i do. so what. \n\nelaine: i've never even seen him in a car. i mean, look at his movies. no cars. deliverance - canoe. midnight cowboy - boots. runaway train...runaway train. (kramer enters.) \n\nkramer: hey. \n\njerry: hey. \n\nkramer: jerry, you know that shoe repair place at the end of the block? well, if they don't get some business, they're gonna have to shut down and make way for one of those gourmet coffee or cookie stores. \n\nelaine: i like coffee. \n\ngeorge: i like (imitates kramer) \"cookies.\" \n\nkramer: yeah, of course you do. and do you know why? because you're a bunch of yuppies. it's your go-go corporate takeover lifestyles that are driving out these mom and pop stores and destroying the fabric of this neighborhood. \n\ngeorge: well, what's so great about a mom and pop store? let me tell you something. if my mom and pop ran a store, i wouldn't shop there. \n\nkramer: hey, bogambo - they've been in the neighborhood for 48 years. now, come on, jerry. you've gotta have a pair of shoes in need of a cobblin.' \n\njerry: i really don't wear the kind of shoes that have to be cobbled. \n\nkramer: well, what about sneakers? you know, they'll clean 'em. they do complete detailing. \n\njerry: alright, take 'em. \n\nkramer (happily): yeah-yah. \n\npop: kramer, without you, we'd be out of business. \n\nkramer: well you know, these sneakers, they belong to my neighbor, jerry seinfeld? the comedian. \n\nmom: so many sneakers! \n\nkramer: well, he's got a peter pan complex. \n\npop: they'll be ready a week from thursday. \n\nkramer: oh, well, no rush. (wipes his nose) uh oh. \n\nmom: what's the matter? \n\nkramer: oh, i keep getting these nosebleeds. \n\nmom: oh, lie down, and put your head back. \n\nkramer: yeah. (lies on the couch and cracks the back of his head against the armrest.) hey, what's with your ceiling? (mom and pop look up.) \n\npop: what? \n\nkramer (stuffing tissue up his nose): well, you got wires sticking out every which way. that looks dangerous, you should call the electrician. \n\npop: you know, in the 48 years we've been here, i don't think we've ever called an electrician. \n\nkramer: yeah well, you should. this place could blow any minute. \n\nmr. pitt: elaine? \n\nelaine: yes, mr. pitt? \n\nmr. pitt: have you gotten all the salt off those pretzels yet? \n\nelaine: no, i'm still working on it. \n\nmr. pitt: what in blazes are you listening to? \n\nelaine: artie shaw. \"honeysuckle jump.\" (the song ends.) \n\ndj on radio: that was artie shaw, \"honeysuckle jump.\" \n\nmr. pitt: elaine! how did you know that? \n\nelaine: oh, my father used have a huge collection of big band records. \n\ndj on radio: congratulations to our listener wayne hopper for identifying it. and by doing so, he becomes our seventh person to land the wfbb-sponsored woody woodpecker balloon in the macy's thanksgiving day parade. (mr. pitt hears this and is intrigued; mouths the words \"woody woodpecker.\") there are only three spots left. we're going to take a little break now; when we come back, you'll have three more chances to win a spot holding a rope under woody woodpecker. \n\nmr. pitt (to elaine, excited): could you identify the next song? could you? could you? \n\nelaine: mr. pitt, why would you want to hold onto the ropes on the woody woodpecker balloon? \n\nmr. pitt: my father was a stern man. he forbad us to participate in any activities that he thought were associated with the common man. the thanksgiving day parade was first on the list. \n\nelaine: oh. alright, i'll do the best i can. (turns up the radio.) \n\ndj on radio: alright, here we go for the next spot under the balloon. if you know the name of this song, call 555-band. (the music starts. elaine listens intently.) \n\nmr. pitt (impatiently): well, elaine? do you know it? what song is it? \n\nelaine: will you shut up? i can't hear! \n\nmr. pitt: i'm sorry! \n\nelaine: oh! i've got it! it's \"next stop pottersville\"! (grabs the phone to call it in.) \n\nmr. pitt (overjoyed): goody! yes! yes! yes! (dances back and forth, elated) next stop pottersville, next stop pottersville! you are a genius! \n\ngeorge: you are gonna love this car. even if you don't like jon voight. \n\njerry: i like jon voight. just seems like kind've a strange reason to buy a car, because he might have driven it. \n\ngeorge: what do you mean \"might\"? you don't think he really owned this car? \n\njerry: i don't know. \n\ngeorge: well, why would the guy make up something like that? of all the names he could pick, why settle on jon voight? \n\njerry: don't you see, that's the genius of it. if he had said liam neeson, you'd know he's making it up. \n\ngeorge: neeson? how are you comparing liam neeson with jon voight? jerry, we're talking about joe buck. if you can play joe buck, oskar schindler's a cake walk. (opens the car door for jerry, jerry's about to get in.) \n\njerry: oh, look at this, i stepped in gum. \n\ngeorge: whoa, whoa, you're not getting in my car with gummy shoes. \n\njerry (shuts the car door): alright, i'll change my shoes. (heads back to his apartment. george follows.) \n\ngeorge (unimpressed): liam neeson. you know, he's not american. \n\njerry: let me get a clean pair. (goes into his room. george strides over to the window.) \n\ngeorge (singing): everybody's talkin' at me...i can't hear a word they're sayin'...just drivin' around in jon voight's car... \n\njerry (yelling from his room): kramer! (we hear kramer's door slam open and shut. kramer enters. jerry comes out of his room.) hey! where's all my sneakers? \n\nkramer: you said take 'em. \n\njerry: not all of 'em! \n\nkramer: well, obviously there was a miscommunication. \n\njerry: obviously. so what am i supposed to wear? \n\nkramer: jerry, i left you a pair right here...(goes into jerry's room and comes out with a pair of cowboy boots.) c'mon. there, put on those boots. \n\njerry: i can't wear these! \n\nkramer: well, why not? \n\njerry: they're uncomfortable. \n\nkramer: c'mon here, try 'em on. (jerry sits down and puts the boots on.) \n\ngeorge: where did you get those? \n\njerry: i worked a club in dallas one time and they couldn't afford to pay me so they gave me these. oh, i can't wear these! (stands up.) they look ridiculous! \n\nkramer: ah, you look like a cowboy! huh? \n\njerry: but i don't wanna be a cowboy! \n\nkramer: oh, stop it. you know that friend of yours, tim the dentist? i got an invitation to his thanksgiving eve party. \n\ngeorge: yeah, i got one too. \n\nkramer: yeah? \n\njerry: oh yeah? huh. \n\ngeorge: what? \n\njerry: no, nothing. \n\ngeorge: no, what is it? \n\njerry: no, it's just that i, uh...didn't get one. \n\ngeorge: you didn't get one? \n\njerry: ah, but he called me up and he asked for yours and elaine's addresses, i'm sure that means i'm invited. \n\nkramer: not necessarily. \n\njerry: hey, why would you call someone up and ask them for two addresses if you're not invited to the party? \n\ngeorge (mocking jerry): that's the genius of it. \n\njerry (picks up the phone): i'm callin' elaine. see if she can find out anything from tim whatley. \n\ngeorge (to kramer): hey. i got jon voight's lebaron. (jingles the keys.) \n\nkramer (impressed): boss! \n\npop: four thousand dollars? we can't afford that! \n\nelectrician: well i'm afraid you're gonna have to do something about it, because it's in violation of the building code. otherwise, they're gonna close you up. \n\npop: but what if we can't pay for it? \n\nelectrician: then i have to report you. otherwise, i lose my license. sorry. (exits.) \n\npop: 48 years, mom! and now we have to close! all because of that idiot and his bloody nose! (kramer enters.) \n\nkramer: afternoon, mom! afternoon, pop. you know you got a crack in the sidewalk out there? now, you oughta get that fixed. \n\ngeorge: so? \n\njerry: c'mon, put the top up, it's november! \n\ngeorge: i feel alive, jerry. \n\njerry: let's check out the glove box. (opens the glove compartment, takes out a pencil.) ah. pencil. \n\ngeorge: hey...you don't think...sure, that's jon voight's pencil! \n\njerry: with jon voight's teeth marks. (looks at the owner's manual.) owner's manual...you know what? this car was owned by jon voight. \n\ngeorge: ah! see? i told ya. \n\njerry: except jon is spelled with an h. j-o-h-n. \n\ngeorge: so? \n\njerry: doesn't jon voight spell his name j-o-n? \n\ngeorge (pulls over): so, what are you saying? \n\njerry: nothing. i'm sure \"jon\" probably mispelled his own name. i know sometimes i spell jerry with a g...and an i! (laughs uproariously.) \n\ngeorge (angrily): get out of the car! \n\njerry: what? \n\ngeorge: that's right, you heard me. get out! you are ruining this whole experience for me! \n\njerry (sarcastically): oh, look! there's gregory peck's bicycle! \n\ngeorge: get out! \n\njerry: and barbara mandrell's skateboard! \n\ngeorge: get out!! (jerry gets out and george drives away. a couple of guys notice jerry in his cowboy boots.) \n\ntough guy (threatingly): hey, cowboy. where's your horse? (jerry slips and slides in his cowboy boots and runs away.) yeah, you better run! \n\ngeorge: did they take anything? \n\njerry: no, they didn't even touch me. i tripped because of these stupid cowboy boots. \n\ngeorge: anyway, again, i'm sorry about throwing you out of the car. \n\njerry: you really seemed to enjoy it. \n\ngeorge: it was kinda fun. (elaine gives jerry a cold cloth for his jaw.) you know, maybe his name really is j-o-h-n, but he changed it to j-o-n for show business. well, you know, j-o-n is a lot zippier. \n\njerry (sarcastic): yeah, that's possible. \n\ngeorge: how would you find out something like that...wait a minute, what am i thinking? i've got the entire yankee organization at my disposal. \n\njerry (to elaine): he'll dispose of it. \n\ngeorge: heh, that's right. see ya later. (exits.) \n\nelaine: so jerome, i did a little snooping around for you. \n\njerry: ah! what'd you find out, lois? \n\nelaine: well, i talked to tim whatley... \n\njerry: yeah... \n\nelaine: and i asked him, \"should jerry bring anything?\" \n\njerry: so...? \n\nelaine: mmmm...and he said, \"why would jerry bring anything?\" \n\njerry: alright, but let me ask you this question. \n\nelaine: what? \n\njerry: which word did he emphasize? did he say, \"why would jerry bring anything?\" or, \"why would jerry bring anything?\" you emphasize \"jerry\" or \"bring.\" \n\nelaine: i think he emphasized \"would.\" \n\njerry: you know what? the hell with this party, i don't even want to go to begin with. (kramer enters.) \n\nkramer: hey. \n\njerry: hey, so where's my sneakers? \n\nkramer: that's what i wanna know. \n\njerry: what do you mean? \n\nkramer: well, i saw mom and pop this morning, but when i went by the store on my way home? the place was empty. everything is gone. mom and pop - vrooop - vanished. \n\njerry: so all my sneakers are gone? \n\nkramer: i'm afraid so. and that's just the tip of the iceberg. i've been asking around - they didn't even have any kids. \n\njerry: mom and pop aren't even a mom and pop?! \n\nkramer: it was all an act, jerry. they conned us, and they scored, big time. \n\nelaine (amused): so. mom and pop's plan was to move into the neighborhood...establish trust...for 48 years. and then, run off with jerry's sneakers. \n\nkramer: apparently. \n\nelaine: alright, that's enough of this. \n\njerry: where ya goin'? \n\nelaine: i gotta go to the dixieland deli to pick up mr. pitt's security pass for the parade. \n\njerry: why does he want to hold a rope underneath woody woodpecker in the thanksgiving day parade? \n\nelaine: he finds his laugh \"intoxicating.\" (laughs like woody woodpecker, and exits.) \n\nmr. morgan: so george, what kind of promotional events are we talking about? \n\ngeorge: well, i think we need more special days at the stadium, you know? like, uh...joe pepitone day. or, uh...jon voight day. \n\nmr. morgan: jon voight? the actor? (rubs his eyes wearily.) uh, i make a motion that we have no more of these meetings that have been initiated by george costanza. \n\ngeorge: i suppose if i had suggested liam neeson day, you'd all be patting me on the back. \n\ncontest winner (to elaine): i guessed stan herman's \"boomtown blues.\" what'd you guess? \n\nelaine: um, it was, uh...\"next stop pottersville.\" (the group is unimpressed.) uh, do you know when they're giving out the passes? \n\ncontest winner: after the music. (the band starts playing directly behind elaine. she is deafened by the loudness of the horns.) \n\nkramer: oh. oh man. (takes out a kleenex and puts his head back. jon voight comes out of a doorway and hails a cab.) \n\nvoight: taxi! (walks right by kramer.) taxi. \n\nkramer: hey! jon voight! jon voight! (voight waves at kramer and hurriedly gets in the cab. kramer runs over to the car.) hey, listen, can i ask you something? listen, listen...(leans in the the open back window of the cab. defensively, voight grabs kramer's arm and bites it. kramer screams. the cab speeds off leaving kramer in the street, stunned.) \n\njerry: no jon voight day, huh? \n\ngeorge: no. now i'll always have this doubt about the car. what, your jaw still hurts? \n\njerry: yeah, it's all swollen. i think i may have chipped a tooth when i fell yesterday. \n\ngeorge: you should have somebody take a look at that. \n\njerry: i'm calling dentists all day here, there's nobody working the day before thanksgiving. \n\ngeorge: you going to the party? \n\njerry: no, i don't know if i'm invited. \n\ngeorge: well, there's going to be a lot of dentists there. \n\njerry: yeah, you're right. \n\ngeorge: you don't want to suffer with this all weekend. \n\njerry: yeah, i gotta see a dentist, this is killin' me. well, i'll take a chance. we'll go together. \n\ngeorge: maybe i'll just meet you there. \n\njerry: you don't want to go with me? \n\ngeorge: jerry, for all i know this guy went out of his way to not invite you. how am i gonna feel if i show up with an uninvited, unwelcome intruder? \n\njerry: the way i feel when i go places with you? (kramer enters.) hey, so'd you find my sneakers yet? \n\nkramer: no. (to george) but i did run into somebody you might be interested in, a mr. jon voight, the actor? \n\ngeorge: jon voight! are you kiddin' me? did you talk to him? \n\nkramer: well, he was a little standoffish. \n\ngeorge: what, you didn't ask him about the car? \n\nkramer: no, i couldn't, his cab pulled away. but he did, however, make an impression on me. (pulls up his sleeve and shows george his arm.) look. \n\njerry: what? \n\nkramer: his tooth marks. he bit me. \n\ngeorge: jon voight bit you? \n\njerry: well, what is he, a vampire? \n\nkramer: no, it's justifiable. he thought i was going for his wallet. \n\ngeorge (looking at kramer's arm): he left perfect imprints. \n\nkramer: that he did. now, you got that pencil with the bite marks on it? we get a trained eye to match 'em up, and we'll see whether or not you're driving jon voight's car! \n\njerry: oh, please. \n\ngeorge: wait a minute, wait, it's not that stupid. \n\njerry: no, it's stupid. \n\ngeorge: why? why isn't it possible? i mean, they're both bite marks. \n\njerry: so you're gonna show up at that party with a chewed-up pencil and kramer's gnarled arm. \n\ngeorge: it's worth a shot. (goes to the door.) \n\njerry: so, kramer, you wanna go to the party together? \n\nkramer: jerry, look, come on, i'm an invited guest. i can't be aiding and abetting some...party-crasher. \n\njerry (under his breath, to a man at the party): excuse me, uh...dentist? you a dentist? (the guy shakes his head. jerry moves on to another guy.) dentist? are you a dentist? \n\ngeorge: these are the balloons? big deal, all i see is woody woodpecker. \n\nkramer: you got a problem with woody woodpecker? \n\ngeorge: yeah, what is he? some sort of an instigator? \n\nkramer: that's right. he's a troublemaker. \n\njerry: hey, elaine. did you get my message? \n\nelaine: what? i can't hear a word you're saying. i was stuck at the dixieland deli all day. my head is still ringing. where's tim? \n\njerry (pointing at the trophy): what is that, the empire state building? \n\nelaine: what? i can't hear you. \n\njerry: elaine, would you marry me? \n\nelaine: i told you, i can't hear a word. \n\njerry: alright. forget it. \n\ngeorge: hey, tim. \n\ntim: hey, george. kramer, how ya doin.' (they shake hands.) \n\ngeorge: watch the arm! tim, listen, we don't want to bother you, we know you're busy here. \n\ntim: no, it's no problem, what is it? \n\ngeorge: let me show you something, take a look at this... (another guy at the party interrupts.) \n\nguy: alright tim, i'm gonna get goin.' \n\ntim: alright, let me take down your number. (grabs george's pencil, then notices jerry sitting on the couch.) is that jerry seinfeld? \n\nkramer: he didn't come with us. (tim walks over to jerry.) \n\ngeorge: uh, tim, the pencil... \n\ntim: jerry. \n\njerry: hey, tim. \n\ntim: jerry. i didn't think you'd show. \n\njerry: did you say, \"jerry, i didn't think you'd show\" or, \"jerry, i didn't think you'd show\"? (elaine comes over.) \n\ntim: elaine! hi! \n\nelaine: tim. \n\ntim: well. i'm really glad you came. \n\nelaine: what? \n\ntim: really glad you came. \n\nelaine (deaf): uh huh. \n\ntim (picks up a bowl of nuts): listen, elaine, i've been wanting to ask you...would you like to go out with me new years eve? (elaine thinks tim is offering her a nut, and shakes her head no. tim, rejected, walks away.) thanks. \n\nelaine (puzzled): what? what? \n\ngeorge: let me ask you something. could you tell if teeth marks on someone's arm matched teeth marks on a pencil? \n\ndentist: it's possible. \n\ngeorge (to kramer): roll up your sleeve. \n\ndentist: somebody bit you? \n\nkramer: not just someone. jon voight. \n\ndentist: jon voight bit you? (george notices tim across the room with the pencil in his mouth.) the pencil! hey, hey! get the pencil out of your mouth, you're destroying jon voight's teeth marks! \n\ntim: that's john voight's pencil? \n\ngeorge: that's right. i got his whole car downstairs. \n\ntim: are you the one who bought his lebaron convertible? \n\ngeorge (overjoyed to find out): yes! yes, i'm the one! hey! so, you know jon voight! \n\ntim: yes! yes, i went to dental school with him. \n\ngeorge: jon voight, the actor? \n\ntim: no. the periodontist. (george snaps the pencil in two.) \n\ndentist: can't this wait until monday? come by my office. \n\njerry: just a quick peek. i'm in agony. \n\ndentist: alright. sit down. \n\njerry (sits down): it's this one here in the back. (tilts his head back, and knocks elaine's trophy out the window. a loud hissing sound and commotion is heard from the street below. everyone runs to the windows to look.) \n\nkramer: oh! you popped woody woodpecker! \n\ntim (to jerry): hey, who invited you, anyway? you're a troublemaker! (jerry nervously laughs like woody woodpecker as the breeze from the popped balloon blows in the window.) \n\nannouncer on tv: hey, it looks like woody woodpecker is running out of air. in fact, he's collapsing. \n\nkramer: those kids look pretty disappointed. \n\njerry: especially that big kid up in the front. (mr. pitt is shown on the television, trying to hold up the deflating woody balloon.) how old is he? (the phone rings.) hello? \n\nguy on phone: hello, is this jerry seinfeld? \n\njerry: yes it is. \n\nguy on phone: you don't know me, but a really strange thing happened. i was at a garage sale, and this old couple sold me a used pair of sneakers they claimed belonged to jerry seinfeld, the comedian. \n\njerry: can i have the address of that garage sale? okay, thank you very much. (to kramer) i found mom and pop, they're sellin' my sneakers! \n\nkramer: where are they? \n\njerry: parsippany, new jersey. \n\nkramer: let's go! \n\njerry: my car's in the shop. \n\nkramer: well, how are we getting to parsippany? \n\nkramer: uh. jerry. these nosebleeds are starting again. \n\njerry (wipes kramer's brow): maybe we should get you to a hospital. \n\nkramer (a la ratso rizzo in midnight cowboy): hey, i ain't goin' to no bellevue! look at me, i'm fallin' apart here. \n\ngeorge: well i am actually going to have a secretary and i get to do the interview. \n\njerry: that's incredible. six months ago you were taking messages for your mother. \n\ngeorge: yeah, and now someone's going to be taking messages for me. \n\njerry: from your mother. \n\njerry: so this ah, woman you plan on hiring, is she going to be in the spokes model category? \n\ngeorge: sure. i could go the tomato route. but eh, i've given this a lot of thought jerry. all that frustration. ill never get any work done. so im doing a complete 360. im going for total efficiency and ability. \n\njerry: that's a 180, george. \n\ngeorge: whatever. \n\njerry: hi willie. \n\nwillie: hey jerry. \n\njerry: i got this stuff and ah my mother's fur coat for storage. \n\nwillie: what are you doing with it? \n\njerry: ah, she keeps it in my apartment for when she comes up from florida. \n\ndonna: hi. \n\njerry: hi. \n\nwillie: hey jerry, you know my wife donna. \n\njerry: yeah, that's why i said hi. \n\nwillie: hey, nice jacket. (looking over the jacket) \n\njerry: thanks. it's hounds-tooth. \n\nwillie: whoa, this is a beauty. great cut. it's probably very flattering. \n\njerry: oh yes, it really accentuates my bust line. \n\napplicant: well, i type about 90 words a minute. im completely well-versed in all ibm and macintosh programs. \n\ngeorge: (looking over her resume) well miss coggins you're ah, obviously qualified for the job. you've all the necessary skills and experience. but you're extremely attractive. you're gorgeous. im looking at you, i can't even remember my name. so ah, im afraid this is not going to work out (he crumples her resume into a ball) thanks for coming in. \n\ngeorge: you're luscious. you're ravishing. i would give up red meat just to get a glimpse of you in a bra. im terribly sorry. (both george and the attractive female applicant stand up as george reaches across the desk and shakes her hand for coming in) \n\nade: as you can see my references are impeccable. i think id be a real asset here. my only concern is, i do take care of my mother. so will there be any late nights? \n\ngeorge: i can't imagine. \n\nelaine: ok, so barneys is having this huge sale. i try this dress on -- (holds the garment bag out towards jerry) -- stunning. stunning. i couldn't take my eyes off myself. \n\njerry: yeah. \n\nelaine: ok, so then i put it on at home. it looks like im carrying twins. \n\njerry: so you're saying, store -- hotsy-totsy, home-- hotsy-notsy. \n\nelaine: yeah exactly. anyway i've got to go over there and return it. \n\njerry: i thought we were going to the movies? \n\nelaine: all right ill try it on again. you tell me what you think. (she turns and goes into the bedroom to change clothes) \n\ngeorge: hey hey. \n\nelaine: hey george \n\ngeorge: hey elaine. (george hangs up his raincoat next to the door) im telling you jerry, having a secretary is incredible. (george claps hands) i don't know why i didnt have one before. \n\njerry: because you didnt have a job? \n\ngeorge: perhaps. (hehe) i walk in, everything is organized -- messages, appointments. and i can't tell you how proud i am of myself for going with ade. \n\njerry: a lesser man would have crumbled. they would have gone for the dish and the sure fire sexual-harassment suit. \n\njerry: it's a little ... \n\nelaine: all right! (throws arms down) you answered it right there. \n\njerry: you got no waist in that thing. \n\ngeorge: you arms look like something hanging in a kosher deli. \n\nelaine: i said, all right. \n\ngeorge: well whad you buy it for? \n\nelaine: why did i buy it, because in the mirror, at barneys, i looked fabulous. this woman was just walking by said i looked like demi (the \"i\" sounds like an \"e\") moore in indecent proposal. \n\njerry: how fast was she walking? \n\ngeorge: demi (the \"i\" sounds like an \"e\")? i thought it was demi? \n\njerry: no. i think it's demi. (the \"i\" sounds like an \"e\") \n\ngeorge: really? i never heard of a semi (the \"i\" sounds like an \"e\") tractor-trailer. (jerry nods in agreement) \n\nelaine: wait a minute (claps hands) wait a minute. i know what's going on here. skinny mirrors! (she pushes george and jerry in their respective chests, with her arms extended -- one arm for each of them -- they recoil with surprise) \n\njerry: what? \n\nelaine: skinny mirrors! barneys has skinny mirrors, they make you look, like, 10 pounds lighter. \n\njerry: oh, you're crazy. \n\nelaine: am i? (hands on hips) do you think i would have bought this dress if i looked like this at barneys? \n\ngeorge: (to jerry, as jerry nods in agreement) you know i think she might have something there. \n\nkramer: whoa. what are you all dressed up for? \n\nelaine: oh im returning this dress to barneys. \n\nkramer: good idea. \n\njerry: do it tomorrow. well go to the movies. \n\nelaine: yeah yeah, ok. \n\nkramer: hey look, if you're going there, maybe you could pick me up some of this super hydrating, it's a total-protection moisturizer with uva. \n\nelaine: moisturizer? that's girls stuff. \n\nkramer: no no, look. ill tell you what -- they're having a sale right. \n\nelaine: yeah. \n\nkramer: ill meetcha down there, well have lunch. \n\nelaine: well we could ... \n\nkramer: well, well get to know each other. we never get to spend any time together. oh sure we have our little group here, but ... (he looks and gestures out towards george and jerry, as elaine walks back into the bedroom to change out of the dress -- kramer scratches his head in sort of disbelief) \n\ngeorge: and then assuming the strike is resolved, on april 14th, we, ah, play the angels. so lets clear a floor at the anaheim hotel. \n\nade: anaheim hotel. (george picks up a container of chinese food from the credenza) you may want to reconsider. i believe they only have room service until 10 p.m. and then it's only finger foods. \n\ngeorge: ade, you're a wonder. (he he -- george laughs) \n\nade: ok, now i projected some of those figures for you regarding the switch to canola oil for the stadium popcorn and surprisingly it will only come to 1/2 a cent more per bag, so it is definitely doable. \n\ngeorge: ade, i have to tell you, i, i have never met anybody so ... efficient. \n\nade: well thank you, im flattered. \n\ngeorge: i mean you're just, you're just a marvel of organization. \n\nade: well im just, hm, doing my job. \n\ngeorge: it's like im thinking of something, and you're (snaps fingers) one step ahead of me. \n\nade: what can i say? im ... im good at what i do. (smiling and quietly laughing proudly) \n\ngeorge: (coyly, he looks down and runs his finger along the top of the chair back in front of him) do you, uh ... do you know what im ... thinking about now? \n\nade: (thinking about the question, she stops writing) yes, i think i do. (she turns her head slowly and looks directly at him) \n\ngeorge: is it, uh, doable? \n\nade: it's definitely doable. \n\njerry: well, that was the worst. \n\nelaine: i cant believe they made the wife the killer. (putting on gloves) gimme a break. \n\nman: (waiting in line for tickets, he overhears elaine) hey, give us a break. we haven't seen it yet. thanks a lot big mouth! \n\nanother man: (waiting in line, closer to the box office) yeah! (in agreement with the other guy) \n\nkramer: you got a pen? \n\njerry: yeah, i think i do. \n\nkramer: and i need something to write on. \n\njerry: well, all i got is my dry-cleaning stub. \n\nkramer: i gust met uma therman. she's giving me her telephone number. uma jerry, uma. \n\njerry: uma therman? really? \n\nkramer: yeah. \n\nelaine: how'd you manage that. \n\nkramer: yeah well i don't have any time to talk now. (he rushes back into the theater) \n\njerry: he's got the kavorca. (looking towards the theater door, jerry notices one of the movie goers) hey, isn't that willie, my dry-cleaner? \n\nelaine: where? \n\njerry: he just went in. you know, i think he was wearing my hounds-tooth jacket. \n\nelaine: what would he be doing wearing your jacket? \n\njerry: it looked just like the jacket i brought in to be dry-cleaned. he complimented me on it. \n\nelaine: are you sure? \n\nkramer: i got it. uma, uma, uma. (looking at the ticket) \n\nelaine: you are amazing. \n\nkramer: yeah, all right. taxi's on me. (he walks off camera) \n\nade: ah no no no no no. a better way to reach the bra would be to undo the jacket, then go around the back of the shirt. \n\ngeorge: ade you are incredible \n\nade: oh ...oh ...oh ... here, i want to show you something. hand me that pillow. \n\ngeorge: what? oh, my god! \n\nade: mr. co stan za! \n\ngeorge: ade, ahh, ahh, ah ... im giving you a raise! \n\njerry: so you're having sex and then all of a sudden, you just blurt out im giving you a raise. \n\ngeorge: yeah. \n\njerry: just a quick sidebar here -- are you in anyway authorized to give raises? \n\ngeorge: not that im aware of, no. \n\njerry: so you're so grateful to have sex, that you'll just shout out anything that comes into your head. \n\ngeorge: i didnt think ahead. \n\njerry: well maybe she'll just think it was bawdy talk. \n\ngeorge: i didnt say any other bawdy things. \n\njerry: maybe you could have sex with her again and then take it back. \n\ngeorge: all right, you know you're not any help at all here. i don't know what even the point is of talking to you anymore. \n\njerry: all right, all right. im sorry. \n\ngeorge: yeah, well, i guess the only thing i can do is go into george steinbrenners office and tell him he has to give her a raise. \n\njerry: how long has she been there? \n\ngeorge: 3 days. \n\njerry: it's almost a week. \n\njerry: oh, my god. \n\ngeorge: what? \n\njerry: it's a movie stub from the 930 show. george, i think willie the dry-cleaner has been wearing my clothes. \n\nelaine: these mirrors are skinny mirrors. this is false ... reflecting. and i think, that the department of ... you know, whatever, would be very interested to know what's going on here. \n\nbarney's sales associate: well, we're more than happy to exchange it for something else. \n\nelaine: ok fine. (smiling) i did like that little calvin klein number right by the elevator. you know the little ... (motions in the direction of the elevator) \n\nbarney's sales associate: ill bring it to your dressing room. \n\nelaine: ok thanks so much. (the barneys sales associate turns and walks away. elaine turns to kramer as he admires himself in the mirror) what are you all dressed up for? \n\nkramer: well elaine, when you're shopping on madison avenue, you don't want to skip on the, swank. \n\nelaine: i like your little bag. \n\nkramer: huh, oh hey, look at this. (he pulls a little tube out of the bag) it's the super hydrating, triple-action moisturizer, hmm. \n\nelaine: huh. \n\nkramer: wait till that uma smells this uva. \n\nbania: hey kramer. \n\nkramer: hey bania, what's happening? (kramer, looking into the mirror, is putting moisturizer under his eyes) \n\nbania: im looking for a new suit. i cant find anything i like. that's a nice suit. (admiring kramers suit) \n\nkramer: well, thank you. \n\nbania: did you get that here? \n\nkramer: no, this is vintage. they don't make this stuff anymore. \n\nbania: you're telling me. \n\nkramer: i sure am. \n\nbania: it's hard for me to find pants that -- \n\nkramer: (interrupting bania) that don't make you look high-waisted. \n\nbania: yes \n\nkramer: me too. \n\nbania: what size are you? \n\nkramer: uh, 42. \n\nbania: 42, that's what i am now. i've been working out, im huge. how'd you like to sell it? \n\nkramer: make me an offer. \n\nbania: 100 bucks \n\nkramer: surely you jest. (walks away from bania) \n\nbania: 175 \n\nkramer: look at the stitching (takes the jacket off to show bania) this is old world craftsmanship. \n\nbania: 300 dollars. \n\nkramer: sold. follow me into the dressing room. \n\nbania: you throw the shirt in? \n\nkramer: bania, you're killing me. \n\nbania: hey that's the women's dressing room. \n\nkramer: there's nothing in there that i haven't seen before. \n\ngeorge: (opens the door, looks in and then knocks 5 times) mr. steinbrenner, (waves) can i talk to you for a second? \n\nsteinbrenner: yes yes george. can you talk to me for a second? of course you can -- im a very accessible man. i just wanted to say you're doing great work on that canola oil stuff. \n\ngeorge: well, you know, to be honest sir -- my, my new secretary ade, came up with that one. \n\nsteinbrenner: ade, ade, i like that name george. \n\ngeorge: she supports her whole family. (walking slowly into the room) \n\nsteinbrenner: is that a fact george? \n\ngeorge: yes, in fact, her mother is in the hospital right now. it's some kind of a diverticulitis. (he continues walking slowly towards steinbrenners desk) \n\nsteinbrenner: i had a bout of that myself one time -- knocked me right on my ass. \n\ngeorge: she cant even afford to go out to lunch. she's been eating in a high school cafeterias she pretends to be a teacher. it's pathetic. \n\nsteinbrenner: what's that cost her, like, two and a quarter? ($2.25) \n\ngeorge: you know what i was just thinking -- she could really use a raise. \n\nsteinbrenner: you know, she'd be better off making a sandwich at home and bringing it in. (picks up the telephone hand set) hello, ah, george will you excuse me. \n\nkramer: psst. hey. \n\nelaine: kramer, what are you doing here? \n\nkramer: listen, i need you to get me some clothes. \n\nelaine: what? \n\nkramer: yeah, i just sold my suit to bania for a cool three-hundred. \n\nelaine: so go buy a new one. \n\nkramer: what, at this place? it would destroy my whole profit margin. \n\nelaine: so. \n\nkramer: listen do me a favor -- just call jerry, tell him to bring me some clothes. \n\nelaine: ouhhh (kramer disappears back behind his wall as elaine opens the dressing room door) \n\njerry: hello, willie. \n\nwillie: hey, jerry. you dropping off? \n\njerry: no, but ah, seen any good movies lately? \n\nwillie: you came by to ask that? \n\njerry: yeah. specifically 930 shows. seen any good 930 shows at the paragon, willie? \n\nwillie: what are you gettin at? \n\njerry: i saw you the other night stepping out with my hounds-tooth jacket. \n\nwillie: jerry that's a breach of the dry-cleaners code. \n\njerry: you need a code to tell you not to wear peoples clothes \n\nwillie: i wasn't wearing your jacket. jerry you're imagining things. (he makes the circular motion next to his ears - the international symbol for insane) \n\njerry: yeahhh, am i imagining this? (he whips out the movie stub and holds it up to willie) found this little cutie in the pocket. (throws the stub on the counter) \n\nwillie: jerry. \n\njerry: yeah, yeah. well, now that we understand each other -- ill be taking my business elsewhere. and i want my mother's fur coat back too. \n\nwillie: jerry, come on. \n\njerry: now. \n\nwillie: now? (willie looks off with his eyes to his left -- he is thinking about his wife donna) \n\njerry: yeah. i want that coat. (jerry opens his wallet, looking for the dry-cleaning ticket) \n\nwillie: well ... ahh. (apprehensively) \n\njerry: where's that ticket? oh, kramer. \n\nwillie: wait, you, you mean to tell me you don't have a ticket for the coat? \n\njerry: no, not on me. \n\nwillie: well, i, i need to see that ticket. \n\njerry: why? i've got my cleaning before without a ticket. \n\nwillie: yeah, but this is different. those fur storage warehouses are huge. you cant, get anything without a number. \n\njerry: all right, ill be back. \n\nelaine: yeah it looks good here, but what does that mean? \n\nbarney's sales associate: so, uh, do you want it? \n\nelaine: i don't know, i have to think about it. (the sales associate walks away) i need a nonpartisan mirror. \n\nade: i cant thank you enough, mr. costanza. im so grateful \n\ngeorge: yes, well, i sat down with mr. steinbrenner. i told him you have been doing great work. i said that you deserved a raise, and if you didnt get it, that i, was leaving. (motions with both arms in a circular motion to his right) \n\nade: it was just so generous. \n\ngeorge: oh, well, don't worry about it -- he's got plenty of money. (spins his chair away from her) \n\nade: oh i know, but twenty five thousand. \n\ngeorge: (spins his chair back to face her) so you got a $25,000 a year raise. \n\nade: yes, i tell you, mr. steinbrenner... \n\ngeorge: you're making more than i am. \n\nade: i am? \n\ngeorge: what are you doing? you're making more than i am. a secretary cannot make more than her boss. \n\nade: well apparently they can. \n\nelaine: oh, this is insanity. im not this hippie. (meaning her hips are not that large) \n\nelaine: hey, what do you think of this? \n\nman: (with disbelief) you'll never pull it off. \n\nfemale customer: hey, what's going on in there? \n\njerry: (to the barneys sales associate) excuse me, could you tell me where i could find, like, women's moisturizer lotions? \n\nfemale customer: this woman has been in there for over an hour. \n\nbarney's sales associate: excuse me miss., is everything ok in there? \n\nkramer: [yeah] (through the door) \n\njerry: kramer? \n\nkramer: oh, jerry, you got my clothes? \n\njerry: what clothes? \n\nkramer: didnt elaine call you? \n\njerry: no. \n\nkramer: well what are you doing here? \n\njerry: what am i doing here? you're in the women's dressing room. i need that ticket stub back so i can get my mother's fur coat out. \n\nkramer: oh, the stub, yeah. i left it in my, my pants \n\njerry: where are your pants? \n\nkramer: well, i sold them to bania. \n\njerry: what? you sold your pants to bania. let me in. \n\njerry: why'd you sell your pants to bania? \n\nkramer: ouhhh -- i had uma thermans number written on that stub. i lost umas number. \n\njerry: where are your clothes? \n\nkramer: i told you i sold them to bania. \n\njerry: you mean what you were wearing? \n\nkramer: yeah. \n\njerry: how'd you expect to get out of here? \n\nkramer: well, i didnt think ahead. \n\nelaine: this isn't going to work for me ... so if you could show me something else. \n\nbarney's sales associate: no. \n\nelaine: no? \n\nbarney's sales associate: no, because you're taking that one. \n\nelaine: i am? \n\nbarney's sales associate: yes. because you wore it out of the store. \n\nelaine: ha! that's preposterous. \n\nbarney's sales associate: i suppose that salt stain came from all the snow in the store. \n\nbarney's sales associate: shall i wrap it or will you wear it out? \n\nelaine: no. you can wrap it. (dejected. elaine puts her head down and her hand to her forehead as she walks into the dressing room area) kramer, are you still in there? \n\njerry: [elaine] \n\nelaine: jerry? \n\nbania: elaine, where's kramer? \n\nkramer: bania? \n\nbania: kramer. \n\njerry: im going out. (he comes out of the dressing room, while kramer remains inside) \n\nbania: jerry. \n\njerry: bania. \n\nbania: kramer, i want my money back for this suit. you're nancy-boy cream leaked all over the pockets -- suits ruined. \n\nkramer: well you're not getting any money back. (kramer opens the door) jerry, come back in here. \n\njerry: (to bania) excuse me. (he goes back in the dressing room) \n\nkramer: umas number is on that ticket. \n\njerry: never mind uma, i need that ticket to get my mother's fur coat back. why don't you just give him the money for the suit? \n\nkramer: im not going to give him $300 now for a suit with moisturizer cream all over it. \n\njerry: i got an idea. \n\nkramer: what? \n\njerry: i cant believe im gonna do this. (jerry opens the door and exits the dressing room. he walks over to bania) \n\njerry: bania can i talk to you for a second? how's everything going? \n\nbania: pretty good. \n\njerry: yeah, well, see the thing of it is, im in a bit of an awkward position here. because, uhh, i don't want to get in between you two guys but ... i need a dry-cleaning ticket that's in the pocket of those pants. \n\nbania: well all you gotta do is tell kramer to give me my money back, and you'll get your ticket. \n\njerry: yeah, yeah all right, well uh ... tell you what i will do bania -- you give me the ticket, and uh, i will take you out for a nice dinner. \n\nbania: can we go back to mendys? \n\njerry: you want to go to mendys, ill take you to mendys. \n\nbania: twice? i wanna go twice. \n\njerry: all right lets be reasonable, bania. im taking you out for a nice dinner. all i want is a little ticket in that pocket. i think it's a pretty good deal. \n\nbania: two mendys. \n\njerry: . . . all right (gritting teeth) just give me the ticket. \n\nbania: here you go. \n\njerry: ohh ... (takes the ticket and heads for the dressing room) \n\ngeorge: but mr. steinbrenner, how can i be expected to perform my job properly, knowing that my uh, subordinate is making more money than i am? with all due respect sir, it's outta whack. \n\nsteinbrenner: uh huh, i understand what you're saying george and i know what it's like to be financially strapped. when i was a young man in cleveland i use to hitchhike to work. one time i got picked up by a bakery truck. you think that stuff smells good? try being cooped up in the back of one of those babies. \n\nsteinbrenner: i couldn't look at a donut for the next two years. well not that i was ever one for the sweets. \n\nsteinbrenner: sure i like a cup cake every now and then, like everybody else. you know i like it when they have a little cream on the inside, it's a surprise. that's good, plus the chocolate ones are good too. sometimes i just cant even make up my mind. a lot of times ill mix the two together, make a vanilla fudge. \n\njerry: let me in, it's me. (kramer opens the door, jerry goes in the dressing room) here. you don't know what this is costing me. (hands kramer the ticket) \n\nkramer: (closes the door) all right, nice work. (he looks at the ticket, flips it over, and then over again) where's umas number? the moisturizer smudged out the phone number. \n\njerry: (takes the ticket back and looks at it, flips it over) the dry-cleaning numbers are gone too. \n\nkramer: (grabs the ticket back and holds it up to the light) it must have been the botanical extracts. \n\njerry: (grabs the ticket back) give me that. \n\njerry: hey bania, the dinners off. the ticket's no good. the numbers are all smudged out. (holds out the ticket and hands it to bania) \n\nbania: (looking at the ticket then quickly looks up at jerry) you trying to get out of mendys? you cant do that. \n\njerry: the ticket is worthless. \n\nbania: you promised me. \n\njerry: hey, isn't that my mother's fur coat? \n\ndonna: no it's not. (the coat) \n\njerry: it is! (jerry walks forcefully into the dressing room and closes the door) give me that back. \n\ndonna: no, what are you talking about. \n\ndonna: are you out of your mind? don't you ... take your hands ... \n\njerry: you cant have that coat, it's not yours. \n\njerry: what do you think the dry-cleaners is your own personal closet! \n\nelaine: donna, do you think you can get the salt stain out of this? \n\ndonna: let me see. (looking at the stain) piece of cake. bring it \n\nelaine: (tilts her head down, looking over her glasses in amazement of \n\nbania: mmm. this soup is great. \n\njerry: yeah, it's very good. (reluctantly) \n\nbania: i told you mendys had the best pea soup. the best jerry, the best. are you enjoying it? \n\njerry: yeah. im having a wonderful time. (it's obvious he isn't) \n\nbania: wait till you try the swordfish. you know jerry, i was thinking. for our next meal, do you think we should come here ... or should we go someplace else? you know it has it's pros and cons. on the one hand, here, you're guaranteed a great meal. on the other hand -- \n\njerry: (interrupting bania) yeah, yeah i know. this would be good, but it would be the same. but if we go some place else, it would be different, but it might not be as good. it's a gamble. i get it. \n\nbania: yeah. well, lets hurry up and eat i gotta get out of here. im meeting a woman for a drink. \n\njerry: oh, and who might that be? \n\nbania: some woman named uma. i got her number off of that ticket before it was smudged. hope she's good-looking. (crosses his fingers in the air) \n\njerry: if you are a waitress and you ever see me in a restaurant, im telling you right now, i don't want to hear about the specials. i don't want to know about the specials. im sick of the specials. i hate the specials. my feeling is, if the specials were so special, they'd be on the menu. you know what's special about them? they don't know if anybody likes them. they always have these overly creative descriptions of the specials too, you know. the veil is lightly slapped, and then sequestered in a one-bedroom suite with a white wine intravenous. \n\njerry: ready to go lois? \n\nlois: you really like to say my name? don't you? \n\njerry: excuse me lois. stand back lois. jimmy's in trouble lois. \n\nlois: oh, mr. meyers this is my friend, jerry. \n\nduncan: jerry seinfeld! \n\njerry: duncan meyers! \n\nlois: you two know each other? \n\nduncan: yeah! we uh, went to high school together. didn't we jerry? gee i hope you're not leaving now. we still have a lot of work left to do. \n\nlois: would you be able to come all the way downtown again in rush hour to pick me up? \n\njerry: well, i'd have to be superman to do that lois. \n\nelaine: no, no this is all wrong. where's the chicken cashew? \n\nlew: you no order chicken cashew. \n\nelaine: i didn't order any of this. i'm not paying for this. \n\nlew: fine benes. we are putting you on our list. \n\nelaine: what list? \n\nlew: the \"do not deliver\" list. \n\nelaine: merry christmas to you! well, i guess we'll just go out. \n\ngeorge: yeah. what are you doing with the daily worker? \n\nelaine: ned must have left it here. \n\ngeorge: your boyfriend reads the daily worker? what is he? a communist? \n\nelaine: he reads everything, you know, ned's very well read. \n\ngeorge: maybe he's just \"very well red\"? \n\nelaine: communist? don't you think he probably would have told me? \n\ngeorge: well, does he wear bland, drab, olive colored clothing? \n\nelaine: yes, . . . yes he does dress a little drab. \n\ngeorge: huh, he's a communist. . . . look at this. \"exciting uninhibited woman seeks forward thinking comrade and appearance not important.\" . . . appearance not important! this is unbelievable. finally this is an ideology i can embrace. \n\njerry: hi oh. \n\nelaine & george: hey. \n\nelaine: where's lois? \n\njerry: she couldn't make it. \n\ngeorge: i can't believe you're really going out with a woman named lois. \n\njerry: i know, finally. but george, guess who her boss is. duncan meyers. \n\ngeorge: duncan meyers? \n\nelaine: who's he? \n\njerry: elaine, only one other person in the world knows what i am about to tell you and that's george. when we were in the ninth grade they had us all line up at one end of the school yard for this big race to see who was going to represent the school in this track meet. \n\nelaine: uh uh \n\njerry: i was the last one on the end. george was next to me. and mr. bevilacqua, the gym . . . \n\nelaine: what's that? \n\njerry: mr. bevilacqua, the gym teacher. \n\nelaine: oh, of course. \n\njerry: he was down at the other end. so he yells out, \"ready, on your mark, get set, \" and i was so keyed up i just took off. by the time he said go i was ten yards ahead of everybody. \n\nelaine: no. \n\ngeorge: i looked up. i couldn't believe it. \n\njerry: by the time the race was over i had won. i was shocked nobody had noticed the head start. \n\nelaine: really? \n\njerry: and i had won by so much a myth began to grow about my speed. only duncan suspected something was a miss. he's hated me ever since. now he's back. \n\nelaine: well what happened when you raced him again? \n\njerry: i never did. in four years of high school i would never race anyone again. not even to the end of the block to catch a bus. and so the legend grew. everyone wanted me to race. they begged me. the track coach called my parents. pleading. telling them it was a sin to waste my god given talent. but i answered him in the same way i answered everyone. i chose not to run. \n\nelaine: so now duncan is back? \n\njerry: he's back. and i knew he would be someday. (drinks) man that's some tart cider! \n\nlois: hi. \n\njerry: hi. \n\nlois: sorry i missed the chinese food. \n\njerry: oh, so am i . uh, how's duncan? \n\nlois: he's okay. \n\njerry: he say anything? \n\nlois: about what? \n\njerry: oh, nothing in particular. \n\nlois: . . . why did you cheat in that race? \n\njerry: i did not cheat. \n\nlois: he said that you got a head start. \n\njerry: oh, he's just jealous because he came in second. \n\nlois: really? \n\njerry: yes \n\nlois: so you were the fastest kid in school. \n\njerry: faster than a speeding bullet lois. \n\nelaine: so how was work? another day, another dollar? \n\nned: i guess. \n\nelaine: oh well nothing wrong with that. gotta make those big bucks. . . . money money money money money money money . . . ha ha ha ha ah . . . are you a communist? \n\nned: yes, as a matter of fact i am. \n\nelaine: oh, ah! oh! wow! whoa! a commie! wow, gee, man it must be a bummer for you guys what with the fall of the soviet empire and everything . \n\nned: yeah, well, we still got china, and cuba, \n\nelaine: yeah, but come on . . . \n\nned: i know it's not the same. \n\nelaine: well, you had a good run, what was it 75, 80 years? wreaking havoc, making everybody nervous. \n\nned: yeah, we had a good run. \n\nelaine: well, so enjoy yourself. (clink glasses) ha ha uh ha \n\ngeorge: so you lied to her? \n\njerry: i couldnt tell her the truth. i don't know what's going to happen between us. what if we have a bad breakup. she'll go straight to duncan. and i want him to go to his grave never being certain i got that \n\nelaine: well, i'm dating a communist. \n\njerry: wow, a communist. that's something. \n\nelaine: yeah, that's pretty cool isn't it? \n\ngeorge: hey, did i tell you i called one of those girls from the personal ads in the daily worker? \n\njerry: the daily worker has personal ads? \n\ngeorge: and they say appearance is not important. \n\njerry: yours or hers? \n\nkramer: ho ho ho ho ho merry christmas everyone. merry christmas. \n\njerry: wow, look at you. so you got the job. \n\nkramer: yeah, you're looking at the new santa at coleman's department store. \n\nelaine: oh, congratulations \n\nmickey: come on get your bead on. we're going to be late. \n\nkramer: on prancer on dasher, on donna. \n\nmickey: not donna, it's donner. \n\nkramer: donna! \n\nmickey: yeah, right!. on prancer, on dancer, on donna, on ethyl, on harriet. \n\njerry: hello, oh hi lois, you want to get together, what for? i don't know about that, i'll have to think about it. i'll let you know. okay, bye. \n\ngeorge: what's up? \n\njerry: duncan wants to get together with her and me for lunch tomorrow. he obviously wants me to admit i got a head start. and i don't think she believes me. \n\ngeorge: he wants to meet you? i'll tell you what. i'll show up. he doesn't know we're friends. i'll pretend i haven't seen you since high school. i'll back up the story. \n\njerry: that's not bad. \n\ngeorge: not bad? it's gorgeous! \n\nkramer: ho ho ho well come on little princess, tell santa what you want. don't be shy. \n\nmom: she doesn't speak english (with a swedish accent). \n\nkramer: santa speaks the language of all children. a notchie watchie dotchie do. \n\nkramer: a dotchie cotchie dochie, \n\nkramer: het, mickey when do we get a break? my lap is killing me. \n\nmickey: there is no break. \n\nkramer: a sweat shop. \n\nkramer: hey, hey, hey. \n\nada: natalie on line 2. \n\ngeorge: natalie? \n\nada: from the daily worker. \n\ngeorge: thank you. \n\ngeorge: hello, it's natalie? yeah, this is a business office but i'm not a business man per se. i'm here working for the people. yes, i'm causing dissent. stirring the pot. getting people to question the whole rotten system. \n\nilene: elaine. \n\nelaine: ilene. \n\nilene: hi. \n\nelaine: hello. \n\nilene: doing a little christmas shopping? \n\nelaine: yeah, yeah. oh, this is ned. he's a communist. \n\nilene: oh, really? \n\nelaine: yep . . . a big communist, a big big communist. \n\nilene: oh, well, it's awfully nice to see you. see you later. \n\nelaine: bye bye \n\nelaine: hey, listen while we're here why don't we do a little shirt shopping? \n\nned: out of the question. \n\nelaine: um. kramer! \n\nkramer: hi \n\nelaine: hi, oh hi mickey, this is ned \n\nkramer: oh, hey, hi buddy. \n\nelaine: you guys stay here, i'll be right back. \n\nkramer: eight hours of jingle belling and ho ho hoing. boy, i am ho'd out. \n\nned: anyone who works here is a sap. \n\nmickey: watch it! \n\nkramer: woah, woah, come on. \n\nned: you understand the santa's at bloomfields are making double what you are? \n\nkramer: double? \n\nned: i bet the beard itches doesn't it? \n\nkramer: you got that straight. \n\nned: so when you get a rash all over your face in january do you think coleman's will be there with a medical plan? \n\nmickey: look, you take that commie crap out into the street. \n\nned: kramer, i've got some literature in my car that will change your whole way of thinking. \n\nkramer: talk to me baby. \n\nmickey: don't listen to him kramer, you've got a good job here. \n\nduncan: but there's no way you could have beaten me by that much. i already beaten you in junior high school three times. \n\njerry: i didn't hit puberty til the 9th grade. that's what gave me my speed. besides, if i got a head start why didn't mr. bevilacqua stop the race? \n\nduncan: that's what i've always wondered about. \n\njerry: well, i . . . [sees george] \n\ngeorge: oh, my god, no, oh my god, . . . jerry! \n\njerry: i'm sorry, uh, \n\ngeorge: george, george costanza! \n\njerry: oh, george costanza , kennedy high. \n\ngeorge: yes yes yes this is unbelievable. \n\nduncan: hi, george \n\ngeorge: oh, wait a minute, wait a minute, don't tell me, don't tell me. it starts with a . . . duncan meyers. oh, wow, this is something. i haven't seen you guys in what, twenty years? \n\njerry: this is lois. \n\nlois: hello. \n\ngeorge: so what have you been doing with yourself? \n\njerry: i'm i'm a comedian. \n\ngeorge: ah ha, well, i really wouldn't know about that. i don't watch much tv. i like to read. so what do you do, a lot of that \"did you ever notice?\" this kind of stuff. \n\njerry: yeah, yeah \n\ngeorge: it strikes me a lot of guys are doing that kind of humor now. \n\njerry: yeah, yeah, well, you really got bald there, didn't you? \n\ngeorge: yeah, yeah. \n\njerry: you really used to have a think full head of hair. \n\ngeorge: yeah, yeah. well, i guess i started losing it when i was about twenty-eight right around the time i made my first million. you know what they say. the first million is the hardest one. \n\njerry: yeah, yeah. \n\nlois: what do you do? \n\ngeorge: i'm an architect. \n\nlois: have you designed any buildings in new york? \n\ngeorge: have you seen the new addition to the guggenheim? \n\nlois: you did that? \n\ngeorge: yep. and it didn't take very long either. \n\njerry: well you've really built yourself up into something. \n\ngeorge: well, well, i had a dream, jerry. \n\njerry: well, one cannot help[ but wonder what brings you into a crummy little coffee shop like this. \n\ngeorge: well, i like to stay in touch with the people. \n\njerry: ah, you know you have a hole in your sneaker there. what is that canvas? \n\ngeorge: you know my driver's waiting, i really should get running. good to see you guys again. \n\njerry: george, george, hang on. i haven't seen you in so long. \n\ngeorge: ha, uh, \n\njerry: i thought we might reminisce a little more. you know duncan and i were just taking about the big race. \n\ngeorge: oh, the big race. \n\njerry: yeah. \n\ngeorge: yes, yes,. \n\nlois: you were there? \n\ngeorge: yes, sure, surely was. yeah, i'll remember that day. well i'll never forget it because that was the day that i uh, lost my virginity to miss. stafford, the uh, voluptuous home room teacher. \n\nduncan: miss stafford? \n\ngeorge: yes, yes, you know i was in detention and she came up behind me while i was erasing the blackboard . . . \n\njerry: george! \n\ngeorge: but i digress. let me see, now. you were standing at one end of the line and i was right next to you. and i remember we were even for like, the first five yards and then , boom,...you were gone. \n\njerry: did i get a head start? \n\ngeorge: head start, oh no absolutely not. \n\njerry: you satisfied? so you see? \n\nduncan: no, i'm still not convinced and i never will be. \n\nlois: why don't the two of you just race again? \n\nduncan: that's a good idea. \n\njerry: no, no, no, another race - out of the question. \n\nduncan: i know, you've been saying that for twenty years because you know you can't beat me. you couldn't beat me then and you can't beat me now. \n\nlois: race him jerry. race him. \n\njerry: all right! i'll do it. the race is on. \n\nelaine: . . . shut up! (?) \n\njerry: and he's calling all these people from high school to come and watch. i knew this day would come. i can't do it. i can't go through with it. i'm calling it off. i can't let the legend die. it's like a kid finding out there's no santa claus \n\nkramer: each according to his ability, to each according to his needs. \n\nmickey: what does that mean? \n\nkramer: well, if you've got needs and abilities that's a pretty good combination. \n\nmickey: so what if i want to open up a delicatessen? \n\nkramer: there are no delicatessens under communism. \n\nmickey: why not? \n\nkramer: well, because the meats are divided into a class system. you got pastrami and corned beef in one class and salami and bologna in another. that's not right. \n\nmickey: so you can't get corned beef? \n\nkramer: well, you know, if you're in the politburo, maybe. \n\ngeorge: (on phone) . it's george costanza. . are there any messages for me? why does mr. steinbrenner want to see me in his office? . . . communist? i'm not a communist . . . . all right, all right. all right, i'll be there. - ( hangs up ) my secretary ada, told mr steinbrenner i'm a communist now he wants to see me in his office. \n\njerry: so you'll just explain to him you're not a communist. you just called the woman for a date. \n\njerry: hello, oh hi duncan, 400 o'clock tomorrow? that is not going to work. . . . why? i'll tell you why. because i chose not to run! \n\nned: i'm sorry elaine. the shirt's too fancy. \n\nelaine: just because you're a communist, does that mean you can't wear anything nice? you look like trotsky. it's gorgeous. fine, you want to be a communist, be a communist. can't you at least look like a successful communist? \n\nned: all right, i'll try it on. \n\nelaine: i'm going to order chinese food. \n\nned: you're ordering from hop sing's, right? \n\nelaine: ugh, does it have to be hop sing's. i kind of had a fight with him. \n\nned: elaine, when my father was black listed he couldn't work for years. he and his friends used to sit at hop sing's every day figuring out how to survive. \n\nelaine: you're father was blacklisted? \n\nned: yes he was, and you know why? because he was betrayed by people he trusted. they \"named names\". \n\nelaine: okay, okay. (phones) um, yeah, hi, i'd like delivery please to 16 west 75th st. apartment 2g. \n\nlew: i know that address. you're benes, right. you're on our list. no more delivery. \n\nelaine: no. no, she doesn't live here anymore. this is someone else. \n\nlew: oh, yeah. what's the name? \n\nelaine: why do you need the name? you already have the address. \n\nlew: we need a name. give us a name. \n\nelaine: okay, okay, ned isakoff. \n\nkid: i want a racing car set. \n\nkramer: ho ho ho ho a racing car set! those are assembled in tai wan by kids like you. and these coleman pigs, they sell it at triple the cost. \n\nkid: but i want a racing car set. \n\nkramer: you see kid, you're being bamboozaled. these capatalist fat cats are inflating the profit margin and reducing your total number of toys. \n\nkid: hey, this guy's a commie! \n\nmickey: hey, kid, quiet. were did a nice little boy like you learn such a bad word like that? huh? \n\nkid: commie, commie, commie . . . (unknown) . \n\nmickey: santa is not a commie. he just forgot how his good friend stuck his neck out for him to get him a good job like this. didn't he santa! \n\nstore manager: is there a problem here? \n\nkramer: ho ho ho ho. \n\nkid: this guy's a commie. he's spreading propoganda. \n\nstore manager: oh yeah? well that's enough pinko! you're through. the both of ya' \n\nmickey: i got two kids in college. \n\nkramer: you can't fire me, i'm santa claus. \n\nstore manager: not anymore. get your skinny ass out of here. \n\njerry: hi how are you? \n\nlois: . . . fine. \n\njerry: what's the matter? \n\nlois: i just spoke to duncan. he said if you don't race, he's going to fire me. \n\njerry: what? he can't do that. \n\nlois: yes he can. he controls the means of production. what are you going to do jerry? \n\njerry: don't worry lois. i'll think of something. \n\nlew: ah, i knew it was you! you tried to trick hop sing! you are onour list; elaine benes! and now you are on our list; ned isakoff. \n\nned: you got me blacklisted from hop sing's? \n\nlew: she named name! \n\ngeorge: you, uh, wanted to see me, mr. steinbrenner? \n\nsteinbrenner: yes george, i did. come in, come in. george, the wordaround the office is that you're a communist. \n\ngeorge: c-communist? i am a yankee, sir, first and foremost. \n\nsteinbrenner: you know george, it struck me today me that a communistpipeline into the vast reservoir of cuban baseball talent could be thegreatest thing ever to happen to this organization. \n\ngeorge: sir? \n\nsteinbrenner: you could be invaluable to this franchise. george, there's a southpaw down there nobody's been able to get a look at; something rodriguez, i don't really know his name. you get yourselfdown to havana right away. \n\ngeorge: yes, sir. yes sir, do my best. \n\nsteinbrenner: good, merry christmas george. and bring me back some of those cigars in the cedar boxes, you know the ones with the fancy rings? i love those fancy rings. they kind of distract you while you're smoking. the red and yellow are nice. it looks good against the brown of the cigar. the maduro, i like the maduro wrapper. the darker the better, that's what i say. of course, the claro's good too. that's more of a pale brown, almost like a milky coffee. (george exits) i find the ring size very confusing. they have it in centimeters which i don't really understand that well... \n\nmickey: that was quick! nice job, santa! \n\nkramer: yeah, \n\nmickey: i knew that commie stuff was going to get us in trouble. \n\nkramer: yeah, well i didn't realize that was such a sensitive issue. \n\nmickey: communism, you didn't realize communism was a sensitive issue? what do you think has been going on in the world for the past 60 years? wake up and smell the coffee. \n\nkramer: i guess i screwed up! \n\nmickey: you sure did. big time. \n\nelaine: how do you feel? \n\njerry: i need a miracle. \n\nduncan: now you're going to see what kind of liar you're mixed up with. \n\nlois: if he beats you i want a big raise. \n\nduncan: if he beats me, i'll not only give you a raise, i'll send you to hawaii for two weeks. \n\nkramer: i parked in front of that restaurant . as soon as this race is over i got to go to the airport. \n\ngeorge: okay, all right, all right. \n\nmr. bevilacqua: you ready boys? \n\njerry: yes, mr. beviacqua \n\nmr. bevilacqua: okay, this is hoiw it works. you take your marks, i say, ready - on your mark - get set - and then fire. you got it? \n\nduncan & jerry: yes mr. bevilacqua. \n\nmr. bevilacqua: ready - on your mark \n\nlois: so will you come to hawaii with me jerry? \n\njerry: maybe i will , lois. maybe i will. \n\ngeorge: you wanted to see me, el presidente? \n\ncastro: si, si. (a spanish word i can't figure out) come here. i understand you are very interested in one of our players, eh? \n\ngeorge: si, si. \n\ncastro: ordinarily i would not grant such a request but i've heard you are, uh, how you say, communista simpatico, eh? \n\ngeorge: muy sumpatico. muy muy muy. \n\ncastro: well good, then you can have your pick. \n\ngeorge: oh, oh! \n\ncastro: they will play for your yankees. \n\ngeorge: oh well, gracias el commandante, gracias. muy muy. \n\ncastro: and i would be honored if you would be my guest for dinner tonight at the presidential palace. there will be girls there and, i hear, some pretty good food. of course the problem with parties is you invariably have to eat standing up which i don't care for but on the other hand i don't like to balance a plate on my lap either. once when i was at a party, i put my plate on someone's piano. i assure you, if i had not been a dictator, i would not have been able to get away with that one. \n\njerry: come on. lets go \n\nelaine: no wait, i gotta go in here and pick up mr. pitt's tennis recquet. \n\njerry: what's it doin here? \n\nelaine: he wanted to have it restrung. (to clerk) here i need to pick that up \n\nlandis: hello \n\nelaine: oh, hi. \n\nlandis: jocylin landis from doubleday. i interviewed you for a position a couple of months ago. \n\nelaine: yes, yes, the one i didn't get. (they giggle) \n\nlandis: i was watching you play \n\nelaine: oh, i'm not very good. \n\nlandis: no. you exhibited a lot of grace out there. \n\nelaine: really? grace? \n\nlandis: yes. so have you found anything yet? \n\nelaine: uh, no. not really. \n\nlandis: you know you should keep in touch. something may be opening up in a few weeks. is that a bruline? \n\njerry: oh, bruline. newman's got the same one. \n\nelaine: newman plays tennis? \n\njerry: he's fantastic. \n\nlandis: would you mind if i tried this out? \n\nelaine: uh, no ... take it. \n\nlandis: how will you get it back? \n\nelaine: um, i could come by your office and pick it up tomorrow. \n\nlandis: that's so generous of you. \n\nelaine: thanks \n\njerry: you loaned her pitt's racquet? \n\nelaine: what could i do? she said there might be something for me at doubleday. oh wouldn't that be great i wouldn't have to work for mr. pitt anymore. \n\nsandy: i gotta get going. \n\njerry: oh, ok. next time lets play ping pong. it's easier to jump over the net. \n\nsandy: (nods silently) \n\nelaine: bye \n\njerry: bye bye \n\nelaine: have you noticed she never laughs \n\njerry: hm, really? \n\nelaine: yeah \n\ngeorge: check that out (showing newspaper) \n\nkramer: whoa, you're dating this woman? \n\ngeorge: that's right. \n\nkramer: george, you're becoming one of the gliterratti \n\ngeorge: what's that. \n\nkramer: ya' know, people who glitter. she's a slim gal. \n\ngeorge: and the amazing thing is she eats like there's no tomorra'. i mean i've never seen an appetite like this. desserts. everything. i don't know how she does it. \n\nkramer: maybe she's bulimic \n\ngeorge: wa? \n\nkramer: bulimic, \n\ngeorge: kramer, she's a model. \n\nkramer: exactly \n\ngeorge: i have noticed she does tend to go to the bathroom right after we finish eating. \n\nkramer: there you go monkey boy. \n\nnina: mmm, mmmm oh, so good, mmm, mmm. aren't you hungry? \n\ngeorge: just enjoying watching you. \n\nsandy: so did you like the movie? \n\njerry: yeah, it was ok. frankenstein didn't seem quite right to me. i missed the sport jacket. \n\nsandy: (nods silently) \n\njerry: not that it was that nice of a jacket. i mean it didn't fit him that well. to me there's just something about a monster in a blazer. it shows at least he's making an effort. \n\nsandy: (nods silently) that's funny. \n\njerry: i'm glad you enjoyed it. \n\nnina: oh, i'm so full. \n\ngeorge: yes, full. i love to be full ... love to sit back, loosen the old belt and digest away for hours. let those enzymes do their work. \n\nnina: will you excuse me. \n\ngeorge: where you going? \n\nnina: i just need to freshen up. \n\ngeorge: you're fresh (grabs her arm) you're very fresh. you seem very fresh to me. you're very vital. i couldn't take you any fresher. \n\nnina: george i need to freshen., george, george, george ... \n\njerry: it was unbelievable. you're right the jokes kept bouncing off her like superman. \n\nelaine: see, what did i tell ya? \n\njerry: and even when she did like something, she doesn't laugh. she says, \"that's funny.\" ... that's funny! \n\nelaine: oo, i better call that woman at doubleday and see when i can pick up mr. pitt's racquet. \n\njerry: i mean how can i be with someone that doesn't laugh. it's like ... well it's like something! \n\nelaine: (on phone)hello, yeah, hi. uh, is miss. landis there please. wa? oh, gosh, ah ok, she'll be in later? ok, thank you. uh. (to jerry) this guy said she hurt her arm playing tennis. ... pretty bad. \n\ngeorge: well, i heard a noise. \n\njerry: what noise? \n\ngeorge: you know, .. blah ... \n\njerry: what blah? \n\ngeorge: from the bathroom. \n\njerry: oh, you think she was refunding? \n\ngeorge: every time we go out to eat the minute we we're done eating she's runnin to the bathroom. \n\nelaine: so you're concerned. \n\ngeorge: elaine, of course i'm concerned. i'm payin' for those meals. it's like throwing money down the toilet. \n\njerry: in a manner of speaking. \n\ngeorge: let me digest it. let me get my money's worth. y'know what would be good is if there was someone else in the bathroom that could tell me. \n\nkramer: here's your scrubber back. \n\njerry: thanks. \n\ngeorge: hey, maybe i could bribe one of those women that hand out the towels in the powder room. \n\njerry: a matron? \n\ngeorge: yeah \n\njerry: uh, well i can't help you there (weakly). \n\ngeorge: wha? \n\nkramer: nothin' \n\ngeorge: you know a matron? \n\nkramer: me? \n\ngeorge: you \n\nkramer: no. \n\ngeorge: kramer, \n\nkramer: well, now look, just leave me alone. \n\ngeorge: well, what is it? \n\nkramer: no, don't, don't make me \n\ngeorge: wha? \n\nkramer: no, i can't, all right i can't ... \n\ngeorge: who? \n\nkramer: ... my mother's a matron! \n\nelaine: babs? \n\nkramer: yeah, there, all right i said it there.. ya' satisfied? anything else you want to know? \n\ngeorge: kramer, kramer, i need to know if nina is refunding. \n\nkramer: look, george, i can't help ya, all right. \n\ngeorge: why not? why not? \n\nkramer: let me go. let me go. because i haven't talked to my mother in five years. we just don't see eye to eye. i don't even want to get into my childhood. i'm still carrying a lot of pain. a lot of pain. \n\ngeorge: come on, kramer. \n\nkramer: i can't i can't \n\njerry: kramer you're going to have to face her some time \n\nkramer: (mumbles) b'd b'd \n\nelaine: hello (sees landis) oh, my goodness. what happened? \n\nlandis: i tore my umeral epicondilitist \n\nelaine: oh \n\nlandis: my doctor said it might never fully heal. i may never play again. \n\nelaine: oh, you'll be playing ... \n\nlandis: if i can't play tennis i don't know what i'll do. \n\nelaine: there are plenty of things you can do, there's chess and uh uh mah jong, \n\nlandis: you don't know how lucky you are to be healthy ... \n\nelaine: ... and biking and .. \n\nlandis: what am i going to do? \n\nelaine: ... hiking ... \n\nlandis: (wimpers) \n\nelaine: (sees racquet) could i ... \n\nlandis: if i can't play tennis i have no reason to live .. (cries) \n\nelaine: (sees racquet), you know it's not important i'm gonna, ok, well, you know. take care of that condolitis \n\nkramer: ma? \n\nbabs: cosmo! \n\ngeorge: cosmo? \n\njerry: why didn't you just ask her for it? \n\nelaine: i told you i couldn't. the woman was crying about how she might never play tennis again \n\njerry: yeah \n\ngeorge: hey di ho \n\njerry: c'mon up. \n\njerry: so when do you have to get the racquet back to mr. pitt? \n\nelaine: augh, he's got a big match tomorrow with ethyl kennedy \n\njerry: he needs a three hundred-dollar bruline to beat ethyl kennedy? \n\nelaine: he'll only play with his racquet \n\njerry: well, why don't you wait 'til she's not there on her lunch hour and just take it? \n\nelaine: that's stealing? \n\njerry: stealing? you loaned her the racquet! \n\nelaine: i know. \n\ngeorge: hey oh. \n\nelaine: jerry hey \n\njerry: so what happened with kramer's mother? \n\ngeorge: it's all worked out. nina and i will have dinner thursday at the restaurant where babs works. \n\njerry: what's she like? \n\ngeorge: oh, she's a kramer. and uh, while i was there i uh happened to pick up another juicy little nugget about our friend. \n\nelaine: ah, i'm ready what? \n\njerry: what is it? \n\ngeorge: i uh got the first name. \n\nelaine: you found out kramer's first name? \n\ngeorge: that's right. you ready? \n\njerry: we've been trying to get it out of him for ten years. what is it? \n\ngeorge: cosmo \n\nelaine: jerry cosmo? \n\ngeorge: cosmo \n\nelaine: jerry cosmo \n\nelaine: cosmo, cosmo? \n\nkramer: what's so funny? ... wha? \n\nelaine: cosmo? \n\nkramer: all right, ok so you the name now. the cat is .a a a .. out of the bag. \n\nelaine: it's not such a bad name. \n\nkramer: well you know all my life i've been running away from that name. that's why i wouldn't tell anybody. but i've been thinking about it. all this time i'm trying not to be me. i'm afraid to face who i was. but i'm cosmo jerry. i'm cosmo kramer. and that's who i'm going to be. from now on that's who i'm going to be. i'm cosmo! \n\nlaura: yes? \n\njerry: hi, is sandy here? \n\nlaura: hi, you must be jerry. sandy's in the shower. do you want to come in? \n\njerry: i would except i forgot to bring a towel. \n\nlaura: (laughs nicely) \n\njerry: so the roommate laughed at everything i said. \n\ngeorge: wow. \n\njerry: it was a great sounding laugh too, kind of lilting and feminine--none of those big coarse \"ha's.\" you know those? \n\ngeorge: oh yeah ha-a-a, ha-a-a. \n\njerry: yeah. \n\ngeorge: hate the big coarse \"ha.\" hate those. \n\njerry: and the worst part of course is that she also possessed many of the other qualities prized by the superficial man. \n\ngeorge: i see. \n\njerry: so as you can see, i've got a bit of a problem here. \n\ngeorge: well, if i hear you correctly--and i think that i do--my advice to you is to finish your meal, pay your check, leave here, and never mention this to anyone again. \n\njerry: can't be done, huh? \n\ngeorge: the switch? \n\njerry: \"the switch.\" \n\ngeorge: can't be done. \n\njerry: i wonder. \n\ngeorge: do you realize in the entire history of western civilization no one has successfully accomplished the roommate switch? in the middle ages you could get locked up for even suggesting it! \n\njerry: they didn't have roommates in the middle ages. \n\ngeorge: well, i'm sure at some point between the years 800 and 1200--somewhere--there were two women living together. \n\njerry: the point is i intend to undertake this. and i'll do it with or without you. so if you're scared, if you haven't got the stomach for this, let's get it out right now! and i'll go on my own. if not, you can get on board and we can get to work! now what's it going to be? \n\ngeorge: all right, dammit, i'm in. \n\njerry: i couldn't do it without you. \n\ngeorge: all right. let's get to work. \n\ngeorge: all right. that's enough for today. you're tired. get some sleep. i'll see you first thing in the morning. \n\njerry: aw, we can't do it, who are we kidding? it's impossible! it's true! you can't do the switch! nobody can do the switch! it was a stupid idea to begin with! let's face it. i'm stuck with the non-laugher and that's that! \n\ngeorge: we'll come up with something. \n\njerry: yeah, sure we will. \n\ngeorge: all right. see you tomorrow. (george sighs, exits.) \n\ngeorge: i-i-i-i-i got it!!!!! \n\ngeorge: all right. let's go over it again, one more time. \n\njerry: all right. so i tell sandy that i want to have a mnage  trois with her and her roommate. \n\ngeorge: that's right. \n\njerry: and you believe this course of action will have a two-pronged effect. firstly, the very mention of the idea will cause sandy to recoil in disgust, whereupon she will insist that i remove myself from the premises. \n\ngeorge: keep going. \n\njerry: at this point, it is inevitable that she will seek out the roommate to apprise her of this abhorrent turn of events. \n\ngeorge: continue. \n\njerry: the roommate will then offer her friend the requisite sympathy even as part of her cannot help but feel somewhat flattered by her inclusion in the unusual request. \n\ngeorge: a few days go by and a call is placed at a time when sandy is known to be busy at work. once the initial awkwardness is relieved with a little playful humor, which she [laura] of course cannot resist, an invitation to a friendly dinner is proffered. \n\njerry: huh. well, it all sounds pretty good. there's only one flaw in it they're roommates. she'd have to go out with me behind sandy's back. she's not gonna do that. \n\ngeorge: you disappoint me, my friend. sandy wants nothing to do with you. she tells laura, \"if you want to waste your time with that pervert, that's your problem.\" \n\njerry: it's a perfect plan. so inspired. so devious. yet so simple. \n\ngeorge: (george, finger in the peanut butter jar) this is what i do. \n\nkeith: can i help you? \n\nelaine: uh, no, i'm ok. \n\nkeith: well then what are you doing with that racquet? \n\nelaine: um, it's mine. miss. landis borrowed it. \n\nkeith: well, i'm sorry you can't take that, no no no.. \n\nelaine: no no no, i can. i can. it's mine. it's my racquet. \n\nkeith: look sweetheart i don't know who you are. i don't know what you're doing here. but... \n\nelaine: all right. i'm going i'm going \n\nkeith: not with ... \n\nelaine: give it give it .. \n\nkeith: leave ... \n\nelaine: all right all right forget it. you don't have to mention any of this to miss. landis do you? \n\nkeith: i don't have to but i will. \n\nclotworthy: morning cosmo \n\nkramer: hi mr. clotworthy \n\nclotworthy: how are you today? \n\nkramer: ah couldn't be better. hi lorraine. \n\nlandis: hi cosmo \n\nkramer: my mom babs. \n\nlandis: hi mrs. kramer \n\nbabs: lorraine \n\nkramer: yes, it's a fine day \n\nvoice: (larry david's voice) what do you say cosmo? \n\nkramer: hey, everything my man. \n\nsandy: what \n\njerry: you know, i don't know the exact pronunciation but i believe its manage a trois. \n\nsandy: oooo, that is a wild idea \n\njerry: uh? \n\nkramer: you ma, know i've been thinking. i want you to quit that matron job. \n\nbabs: yes, well isn't that just easy for you to say. what the hell do you think i'm going to do with myself? \n\nkramer: well maybe we could go into business together. if you're clean? \n\nbabs: i've been clean for two years. anyway what would we do together? \n\nkramer: i've got plenty of ideas. \n\nbabs: i've always believed in you cosmo. you know that. so i want you to call that place today and tell then tha you're through. \n\nbabs: all right. i'll do it. \n\nnina: mmmm mm so good. \n\ngeorge: ... so glad. \n\nnina: will you excuse me i've got to freshen up. \n\ngeorge: and why shouldn't you? be fresh stay fresh \n\nwoman: i'll be back. i'm not feeling very well. \n\nwaitress: care to see our dessert menu? \n\ngeorge: uh, yeah. do you know babs? \n\nwaitress: oh, yeah i was sorry to hear she left. \n\ngeorge: babs left? \n\nwaitress: she quit today. \n\ngeorge: ah ha. \n\nnina: what are you doing here george? \n\ngeorge: i was just wondering what it was you wanted for dessert. \n\ngeorge: how 'ya feelin'? \n\nbabs: hi newman \n\nnewman: hi babs \n\nbabs: what are you doin' \n\nnewman: minding my own business. \n\nbabs: you'll never get into trouble that way. \n\nnewman: what makes you think i'm lookin' for trouble? \n\nbabs: from what i hear you postmen don't have to look too far. \n\nnewman: ha ha ha well you know sometimes it just has a way of finding you. cigarette? \n\nbabs: don't mind if i do. \n\njerry: hey \n\ngeorge: what happened to babs. she never showed up last night. the whole thing blew up in my face. \n\njerry: ah, that's a shame. \n\ngeorge: hey, what happened with sandy. i forgot all about it. did you call her? \n\njerry: yeah, i did. in fact i went over there. \n\ngeorge: so what happened? she throw you out? eh? \n\njerry: no actually, she took it pretty well. \n\ngeorge: so what happened? \n\njerry: she's into it. \n\ngeorge: into what? \n\njerry: the manage. and not only that. she just called me and said she talked to the roommate and the roomate's into the manage too. \n\ngeorge: that's unbelievable. \n\njerry: oh, it's a scene man. \n\ngeorge: do you ever just get down on your knees and thank god that you know me and have access to my dementia? \n\njerry: what are you talking about? i'm not goin' to do it. \n\ngeorge: you're not goin to do it? what do you mean, you're not goin to do it? \n\njerry: i can't. i'm not an orgy guy. \n\ngeorge: are you crazy? this is like discovering plutonium ... by accident. \n\njerry: don't you know what it means to become an orgy guy? it changes everything. i'd have to dress different. i'd have to act different. i'd have to grow a mustache and get all kinds of robes and lotions and i'd need a new bedspread and new curtains i'd have to get thick carpeting and weirso lighting. i'd have to get new friends. i'd have to get orgy friends. ... naw, i'm not ready for it. \n\ngeorge: if only something like that could happen to me. \n\njerry: oh, shut up you couldn't do it either. \n\ngeorge: i know. \n\njerry: hey, what happened? did you get your racquet? \n\nelaine: no, i got caught. \n\njerry: what do you mean you got caught? \n\nelaine: her assistant caught me. and now i'm probably not going to get a job. he's going to tell landis that i was sneakin around her office. \n\njerry: i still don't understand how you can get in trouble for taking your own racquet. \n\nelaine: meanwhile mr. pitt's got this match with ethyl kennedy this afternoon. \n\nkramer: hey. \n\njerry: hi cosmo. \n\nelaine: hi cosmo \n\nkramer: thanks man. \n\njerry: hey, doesn't newman have a bruline racquet? \n\nkramer: uh, yeah, yeah, but he's on vacation. went to baltimore. \n\njerry: hum, but you've got the key to his place right? \n\nkramer: yeah \n\njerry: well elaine needs to borrow his racquet. just for today. \n\nkramer: all right all right. come on i'll take you over to newman's \n\ngeorge: hey, cosmo what happened to your mother last night. she hung me out to dry. \n\nkramer: she quit. \n\ngeorge: it would have been nice if someone told me about it. i just think you could have said something. that's all. \n\nkramer: don't talk to me george, talk to her. \n\ngeorge: well where is she? \n\nkramer: i don't know. \n\nkramer: ma! \n\nbabs: cosmo! \n\nnewman: we din, we didn't ... ... cosmo? \n\njerry: you sure you don't want the tickets? \n\ngeorge: no thanks. \n\njerry: i can't believe i'm having trouble getting rid of super bowl tickets. \n\ngeorge: i'm telling you, skip the drake's wedding, go to the game. \n\njerry: i can't, the drake put me in the wedding party. \n\ngeorge: well who schedules his wedding on super bowl sunday? \n\njerry: maybe he didn't know? \n\ngeorge: lemme see. i can't believe you got these for free. (looking at the tickets) row f?! \n\njerry: row f, in front of the gs, hobnobbing with the ds and es. \n\ngeorge: howbout kramer or elaine, they don't want them? \n\njerry: i asked. elaine laughed at me, kramer's only interested in canadian football. \n\ngeorge: wish i could help you. \n\njerry: come on, take them. you could take bonnie. \n\ngeorge: you paying my hotel and airfare to miami? \n\njerry: what do you think? \n\ngeorge: so in order to use these, i gotta spend like fifteen-hundred bucks. this is a bill for fifteen-hundred dollars. plus, she'd ask about the sleeping arrangements, that whole sleeping arrangement conversation is depressing. \n\njerry: yeah, sleeping arrangements. so, you haven't, uh... \n\ngeorge: oh, no no no, i haven't even seen her apartment yet. tomorrow night's the first night. \n\njerry: aah. \n\ngeorge: hey, is that tim whatley? \n\njerry: the dentist? \n\ngeorge: yeah, is he still mad at you for crashing his thanksgiving party? \n\njerry: oh, no. i explained the whole thing to him, he was fine with it. \n\ngeorge: oh good. \n\njerry: yeah, i blamed it on you. hi tim. \n\ntim: hey jerry! george. what are you up to? \n\njerry: ah, just a couple of gals out on the town, shopping and gabbing. \n\ngeorge: i'm getting a makeover. \n\njerry: hey. how would you like to go to the super bowl? \n\ntim: what, are you kidding? \n\njerry: here. two tickets. have a good time. \n\ntim: how can i think you? i'll tell you what, i'll take you to dinner sometime. you ever been to mendys? \n\njerry: no no no. no dinner. \n\njerry: tim, you didn't have to get me a thank you gift. i know, it's a label maker. the label baby junior. yeah, i hear they're good. well, label me thankful. okay, well you enjoy those tickets. buh-bye. \n\njerry: come in. \n\nkramer: where can i put this? \n\njerry: what is it? \n\nkramer: it's risk, jerry. the game of world conquest. (brushing newspapers off the table with his foot and setting the game board down) alright, that's perfect. \n\njerry: kramer, why do you have to (noticing newman) hello, newman. \n\nnewman: hello, jerry. will he take it? i gotta go to work. \n\njerry: take what? \n\nkramer: the board, jerry. we've been playing at newman's for six hours but he's gotta go. \n\njerry: so why don't you leave it at newman's? \n\nnewman: i wanted to, he won't let me. \n\nkramer: we have to put the board in a neutral place where no one will tamper with it. \n\njerry: so that's here? \n\nkramer: yes, yes. you're like switzerland. \n\njerry: i don't wanna be switzerland. \n\nkramer: jerry, newman and i are engaged in a epic struggle for world domination. it's winner take all. people cannot be trusted. \n\nnewman: don't look at me. \n\nkramer: oh, i'm looking right at you, big daddy. \n\njerry: alright, soldier boys, let's fall out. \n\nkramer: alright, so you're gonna look after it? \n\njerry: yeah, yeah. \n\nkramer: stay strong buddy. \n\njerry: yeah. \n\nkramer: watch it good. \n\njerry: ok. \n\nelaine: hey. \n\njerry: hey. \n\nelaine: hey. oh, is that a label maker? \n\njerry: yes it is. i got it as a gift, it's a label baby junior. \n\nelaine: love the label baby, baby. you know those things make great gifts, i just got one of those for tim whatley for christmas. \n\njerry: tim whatley? \n\nelaine: yeah. who sent you that one? \n\njerry: one tim whatley! \n\nelaine: not, my tim whatley? \n\njerry: the same, he sent it as a thank you for my super bowl tickets. \n\nelaine: i think this is the same one i gave him. he recycled this gift. he's a regifter! \n\njerry: or maybe he liked your gift so much, he decided to get me the same thing. perhaps it's an homage. \n\nelaine: yeah, perhaps. \n\njerry: well how did he react when you gave it to him? \n\nelaine: um, he said, \"oh. a label maker. howbout that?\" \n\njerry: he repeated the name of the gift? \n\nelaine: yeah, so? \n\njerry: oh, well, if you repeat the name of the gift, you can't possibly like it. \n\nelaine: what do you mean? \n\njerry: oh, you know, like when someone opens something up and they go, \"oh. tube socks.\" what are you gonna do about it? \n\nelaine: i don't know, i guess i'll just get invited up to his apartment and see if he's got a label maker. \n\njerry: why'd you get him a gift anyway? \n\nelaine: oh, he did some dental work for me and he didn't charge me so i thought i'd get him a christmas present. \n\njerry: yeah, well, if you're getting him anything for his birthday, i'm alarge. \n\nbonnie: well, here we are. this is the place. \n\ngeorge: wow. \n\nbonnie: do you like it? \n\ngeorge: i love it! this is fantastic! look at this couch, is this velvet?! \n\nbonnie: are you a velvet fan? \n\ngeorge: a fan? i would drape myself in velvet if it were socially acceptable. and look at this, hardwood floors! \n\nbonnie: aren't they great? (sees a man enter from the bedroom) oh, scott, hi. this is george. george, this is scott, my roommate. \n\ngeorge: (bewildered) heh heh. \n\nbonnie: here, check out this view. if you lean out this window, you can see the river. \n\ngeorge: so scott's your roommate, huh? \n\nbonnie: yes. oh, i'm sure i've mentioned him. \n\ngeorge: no, you didn't mention it. \n\nbonnie: he's a great guy, you'll really like him. \n\ngeorge: i'm sure i will. \n\njerry: male roommate, huh? \n\ngeorge: yes. a male roommate. \n\njerry: is this a problem? \n\ngeorge: it's a huge problem, jerry. the hardest part about having sex with a woman is getting her to come back to your place! he's already got that. \n\njerry: well, maybe he's -- \n\ngeorge: no. believe me, he's not. \n\njerry: so he's an eligible receiver. \n\ngeorge: she's confiding in him about our dates. you always like the person you talk to about the date more than the date! it's just a matter of time till they realize, 'hey, we could have sex.' \n\njerry: what's stopping them? \n\ngeorge: exactly! you know how they get animals to reproduce in captivity? they just put them in the same cage. \n\njerry: what does he look like? \n\ngeorge: oh, that's the worst part of it. he looks just like me. \n\njerry: he looks like you and he's working from the inside? \n\ngeorge: i look like me and i'm working from the outside. who do you think is in the better position? \n\njerry: not you. \n\ngeorge: ho ho. this bizarre ?harrod? experiment must end! \n\njerry: we'll take a check please. \n\ngeorge: i gotta find a way to work this out, i love that apartment. it's so cozy, i'm ensconced in velvet. you know, if it were socially acceptable-- \n\njerry: i know, you would drape yourself in velvet. \n\ngeorge: i've said that before? \n\njerry: many times. you love velvet, you want to live in velvet, everything with the velvet. \n\nkramer: (entering) hey. \n\ngeorge: hey. \n\njerry: hey. \n\nkramer: guess what? i saw newman talking to the super. \n\njerry: so what? \n\nkramer: the super has keys to your apartment. don't you see what's going on? newman is planning a sneak attack. \n\njerry: oh, maybe he's got no hot water. \n\nkramer: yeah, alright, fine. you sit there and you watch while newman takes over the world. but he'd be a horrible leader. and you know who's gonna suffer? the little people; you and george. \n\njerry: are you through? \n\nkramer: oh. i talked to arthur jobanian. yeah, the drake's wedding? that's off. \n\njerry: the wedding is off? what happened? \n\nkramer: the drake, he found out that the wedding is on the same day as the super bowl. so he wanted to postpone it, they got in a big argument and *phlf* it's over. \n\ngeorge: the wedding is off. now you can go to the super bowl. \n\njerry: i can't call tim whatley and ask for the tickets back. \n\ngeorge: you just gave them to him two days ago, he's gotta give you a grace period. \n\njerry: are you even vaguely familiar with the concept of giving? there's no grace period. \n\ngeorge: well, didn't he regift the label maker? \n\njerry: possibly. \n\ngeorge: well, if he can regift, why can't you degift? \n\njerry: you may have a point. \n\ngeorge: i have a point, i have a point. \n\njerry: alright, i'll call him. \n\ngeorge: yeah. what's that? \n\njerry: oh, it's risk, it's a game of world domination being played by two guys who can barely run their own lives. (picks up phone and dials) hello tim? yeah, hi, it's jerry seinfeld, remember those tickets i gave you? well it turns out i can use them. oh, you do? i understand. okay. bye. he already made plans, he can't change them. \n\ngeorge: (eating a pickle) well they're his tickets, he can do what he wants with them. \n\njerry: thanks. \n\ngeorge: alright, i gotta go. i'm heading over to bonnie's. \n\njerry: what are you gonna do about the roommate? \n\ngeorge: i gotta try and find a way to switch places with him. it's like a sigfried and roy trick. \n\njerry: well, the pickle breath is a good start. \n\nnewman: hello jerry, may i come in? \n\njerry: what do you want? \n\nnewman: (squeezing himself through the narrow space) nothing, just being neighborly. do you wanna hang out? shoot the breeze? \n\njerry: i'm not letting you cheat, newman. you're not getting anywhere near that board. \n\nnewman: jerry? i'm a little insulted. \n\njerry: you're not a little anything, newman. so just pack it up and move it out of here. \n\nnewman: (leaving) oh, by the way, what are you doing for the super bowl? \n\njerry: i dunno, watch it on tv i guess. why? \n\nnewman: well if you watch closely enough, you just might see me. i'll be the one waving to the camera from my seat on the forty yard line. \n\njerry: you're going to the super bowl? \n\nnewman: yes i am, a guy on my mail route just got a couple of tickets and he offered one to me. \n\njerry: what's his name? \n\nnewman: tim whatley. \n\njerry: that's my ticket! \n\nnewman: is it?! ohhh, well if only you'd known, you could have saved some time and given it directly to me! ha ha ha. \n\njerry: (as newman leaves) newman! \n\ngeorge: what a movie. good choice. \n\nbonnie: thank scott. he recommended it. \n\ngeorge: oh, scott, scott. he's really great, isn't he? \n\nbonnie: yes he is. \n\ngeorge: yes he is. let me ask you something. when you come out of the shower and you put your robe on, do you cinch it real tight, are you concerned about that? \n\nbonnie: george? \n\ngeorge: do you hold the neck together with one hand, or are you just letting it flap in the breeze? \n\nbonnie: george, you're being ridiculous. \n\ngeorge: what's the massage situation? \n\nbonnie: what do you mean? \n\ngeorge: is there any work being done? is there any rubbing, touching, finger manipulation on the other person, and if so, who's making the request? \n\nbonnie: george, would you just stop? \n\ngeorge: say you go to the bathroom at two o'clock in the morning, what's the outfit? i mean, you dressing up or is it come as you are? \n\nbonnie: george, what is wrong with you? \n\ngeorge: i'll tell you what's wrong, a grown woman with a male roommate! it's unnatural, it's an abomination! \n\nscott: hey! \n\ngeorge: hey! \n\nscott: how ya going? \n\ngeorge: i'm good. \n\nscott: (to bonnie) are you gonna need the bathroom? 'cause i'm gonna jump in the shower. \n\nbonnie: no, just throw my bras out of the way. \n\ntim: well, this is my building. \n\nelaine: yes it is. \n\ntim: this was fun, you know? \n\nelaine: yeah. \n\ntim: so, i'll call. \n\nelaine: aren't you gonna invite me upstairs? \n\ntim: upstairs? you wanna go upstairs? \n\nelaine: i would love to go upstairs. \n\ntim: elaine, you are something else. no one can ever put a label on you, huh? \n\nelaine: we'll see. \n\njerry: newman. he's going with newman. \n\ngeorge: how does tim whatley even know newman? \n\njerry: newman's his mailman. \n\ngeorge: who goes to the super bowl with their mailman?! \n\njerry: who goes *anywhere* with newman?! \n\ngeorge: well, he's merry. \n\njerry: he is merry, i'll give him that. (notices a cactus on the table) what's this plant for? \n\ngeorge: i had a little tiff with bonnie about the roommate. \n\njerry: oh, well the cactus will smooth things over. \n\nelaine: hey, guess what? i'm going to the super bowl with tim whatley. \n\njerry: what? \n\nelaine: we went out for coffee last night and he offered me a ticket. \n\njerry: what about the label maker? \n\nelaine: ah, well. \n\njerry: wait a minute, that's my ticket! you didn't even want to go. \n\nelaine: it was totally out of the blue. we went upstairs to his apartment, you know, to look for the label maker. \n\njerry: so, how did you get up there? did you say you had to use the bathroom? \n\nelaine: no. \n\njerry: then how'd you get up there? \n\nelaine: i said, \"do you wanna go upstairs?\" \n\ngeorge: and there's you ticket. \n\nelaine: what? \n\njerry: that's why you're going to the super bowl. \n\nelaine: why? \n\njerry: you go out with a guy one time, you ask him to go upstairs like you're mae west? of course he's gonna try and get you alone for the weekend. \n\nelaine: you mean just because i asked him to go upstairs, he thinks he's going downtown? \n\njerry: obviously. \n\nelaine: you're crazy. \n\ngeorge: well, what happened when you got upstairs? \n\nelaine: as soon as we walked in, he got a call from one of his patients with an impacted molar or something so he had to leave. i didn't even get a chance to look for the label maker. \n\njerry: yeah, well i don't trust this guy. i think he regifted, he degifted, and now he's using an upstairs invite as a springboard to a super bowl sex romp. \n\nkramer: hey. \n\njerry: hey. what are you doing? \n\nkramer: i'm watching your door. \n\njerry: my door? \n\nkramer: yeah, from my peephole. fisheye, sees all. \n\njerry: (still outside) what was that? \n\nkramer: newman! \n\nnewman: (fleeing to the bedroom) damn! \n\njerry: (after entering) the bedroom! \n\njerry: i see you, newman! i see you! \n\nkramer: i'm taking the congo as a penalty! \n\nelaine: i've got a confession to make. \n\ntim: oh? what's that? \n\nelaine: i've got super bowl fever. \n\ntim: oh yeah, me too. \n\nelaine: so where are we staying? \n\ntim: oh, the ambassador. \n\nelaine: oh. big room? \n\ntim: it's a regular room, but it's right downtown. \n\nelaine: downtown? \n\ntim: right downtown. \n\nelaine: what do they have there, a couple of beds? \n\ntim: why? you bringing someone else? \n\nelaine: no, but don't you think there should be two beds? there's two of us. \n\nbonnie: oh, a cactus. \n\ngeorge: they don't need any water, so you don't have to keep taking them to the bathroom. \n\nscott: well, look who's here. \n\nbonnie: i asked scott to move out. \n\ngeorge: oh. oh! \n\njerry: so she kicked him out of the apartment. \n\ngeorge: that's right. it's just me and her. \n\njerry: wow, she rearranged her whole life for you. \n\ngeorge: i guess she did. he's gone, now i'm the man. \n\njerry: that's not a good role for you. \n\ngeorge: no, it's not. \n\njerry: you unwittingly made a major commitment. that's a lot of pressure. \n\ngeorge: oh my god. \n\njerry: you wanted to be ensconced in velvet, you're buried. \n\ngeorge: i had the perfect situation here, he was shouldering half the load. \n\njerry: he was shouldering. \n\ngeorge: (walking towards the door) i couldn't leave well enough alone?! \n\njerry: where are you going? \n\ngeorge: i gotta go help her tape up all his boxes and get them ready for shipping. \n\njerry: oh, well here. take whatley's label maker, i don't want to see it again. \n\ngeorge: thanks. \n\nkramer: (rolling the dice) yeah. i am taking over south america and there ain't nothing you can do about it. \n\njerry: so, too bad about that super bowl ticket, eh newman? \n\nnewman: yeah. i just hope tim whatley's electric bills don't suddenly get lost in the mail, or it could be lights out for him. \n\njerry: (walking out) thanks for having me over, guys. \n\njerry: alright, i'll see you later. \n\ntim: hey jerry? \n\njerry: ah, tim whatley. out scalping? \n\ntim: ah, see, now i've been thinking a lot about what happened and i feel horrible. listen, i want to give you a ticket back. \n\njerry: are you serious, what about elaine? \n\ntim: oh, elaine. yeah, well, things just didn't work out like i thought they would. \n\njerry: oh. (notices a car being jacked up by a tow truck) hey, isn't this kramer's car? (yelling up) hey, cosmo!! they're towing your car!! \n\nkramer: (running to the window) what?! not my car!! hey!! they're towing my car!! \n\nnewman: what are you doing? \n\nkramer: i'm taking the board with me. \n\ntim: so, i guess i'll see you at the game. \n\njerry: yeah, see you there. \n\nbonnie: hi, george. \n\ngeorge: what, what happened? where's, where's all the stuff? \n\nbonnie: it's gone. it was all his. is this a label maker? \n\ngeorge: the table, the stereo, the vcr, the velvet couch, where's the velvet? \n\nbonnie: they were his. besides, we don't need any of those things. we have each other. \n\nnewman: are you sure you know where the impound yard is? \n\nkramer: oh, stop stalling. come on. \n\nnewman: i can't think, there's all this noise. \n\nkramer: or is it because i've built a stronghold around greenland? i've driven you out of western europe and i've left you teetering on the brink of complete annihilation. \n\nnewman: i'm not beaten yet. i still have armies in the ukraine. \n\nkramer: ha ha, the ukraine. do you know what the ukraine is? it's a sitting duck. a road apple, newman. the ukraine is weak. it's feeble. i think it's time to put the hurt on the ukraine. \n\nukrainian: i come from ukraine. you not say ukraine weak. \n\nkramer: yeah, well we're playing a game here, pal. \n\nukrainian: ukraine is game to you?! howbout i take your little board and smash it!! \n\nelaine: hello, tim. \n\ntim: (startled) elaine, hi. \n\nelaine: don't worry, tim. i didn't come by to yell at you, i didn't come by for that at all. i just came by to pick up my label maker. i gave you a label maker and now i would like to have it back. \n\ntim: but you gave it to me. \n\nelaine: but you gave me a ticket to the super bowl. hand it over, whatley. \n\ntim: uh, ok. \n\nelaine: you don't have the label maker, do you? \n\ntim: uh, no. \n\nelaine: i knew it! you're a regifter! \n\ntim: oh, yeah, some gift. that thing didn't work at all. \n\nelaine: what? \n\ntim: you put a label on something, then ten minutes later it would peel right off. it was the worst gift i ever got. \n\nelaine: (visibly upset) well, i bought it for you because you were so nice to me for not charging me for the dental work. the way you worked on my filling, you were so, so gentle and so caring and so sensitive. \n\ntim: oh, elaine! \n\njerry: h... g... f. seat four. one, two, three... f-- hello newman. \n\nnewman: hello, jerry. tim couldn't make it, he's in love. isn't that wonderful? \n\njerry: oh, it's enchanting. \n\nbonnie: hi. \n\ngeorge: here's the tv. i know you wanted to watch the super bowl. do you at least have some towels we could sit on? it's, like, a four hour game. \n\nbonnie: george, scott's gonna drop by. he said he never got his boxes. i'll get the towels. \n\ngeorge: (internally) how am i gonna get out of this? think costanza, think! \n\nbonnie: here we are. \n\ngeorge: hey, do you know, bonnie, i just had a pretty wild idea. \n\nbonnie: what is it? \n\ngeorge: well i, uh, i'm not sure how you pronounce it or anything, but i, uh, i believe it's mnage  trois? \n\nbonnie: what? \n\nscott: hi. \n\nbonnie: scott! remember what we talked about the other day? george is into it. \n\nscott: oh really?! \n\nnewman: great streak of luck i'm having. first, kramer almost beat me at risk but i narrowly escaped, and then tim whatley gives me his super bowl ticket. \n\njerry: can you move over at all?! \n\nnewman: and then, just as i'm about to go, these boxes show up at the post office with no labels. no labels, jerry. you know what that means? freebies!! i got this great mini-tv and a vcr, oh it's unbelievable. \n\njerry: an inch! can you move over an inch?!? \n\ngary: hey george. \n\ngeorge: gary? well, well, well well. where the hell've you been? i've been leaving you phone messages for months. \n\ngary: i know. i've been pretty busy. \n\ngeorge: busy. don't give me busy. who's not busy? i'm busy, we're all busy, everybody's busy. all right, tell me, what's kept you so busy? \n\ngary: mostly chemotherapy. 'kay, i'll see you. \n\nkramer: (to car as it accelerates away) hey pig! \n\ncop: (at car) hey! hey! hey! \n\njerry: so you called the cop a pig? \n\nkramer: i was yelling at the litterbug. i mean this is my town. you don't throw trash on the streets of my town. \n\njerry: didn't you explain that to the cop? \n\nkramer: no, i fled the scene. \n\njerry: (to george) hey. \n\nkramer: (to george) hey buddy. \n\ngeorge: hey, uh... \n\nkramer: what? \n\ngeorge: kramer, i, i, i, uh, i need to talk to jerry privately. \n\nkramer: oh. what about? \n\ngeorge: kramer... \n\nkramer: aw come on george, you can share it with me, huh? \n\ngeorge: hey, you're hurting me! \n\nkramer: you gonna share it with me next time, huh? \n\ngeorge: i swear, i swear! \n\nkramer: aw, all right, i'm looking forward to it. \n\ngeorge: right, i got news. you ready? (deep breath) gary fogel had cancer. \n\njerry: oh yeah, i knew. \n\ngeorge: you knew? how did you know? \n\njerry: he told me a few months ago. \n\ngeorge: why did he tell you and not me? \n\njerry: i don't know. \n\ngeorge: how are you closer to him than me? \n\ngeorge: so, is he okay? \n\njerry: oh yeah, he's fine, fine. he was in bad shape for a while though. \n\ngeorge: huh, really? how bad? was he on his death bed? \n\njerry: no, he was on his regular bed. \n\ngeorge: so why didn't you tell me? \n\njerry: he swore me to secrecy. \n\ngeorge: so? \n\njerry: it's not like you're my wife. \n\ngeorge: well, i still think you shoulda told me. \n\njerry: hey, believe me, you were better off not knowing. it's not easy to deal with someone in a situation like this. i was so nice to him i almost made myself sick. \n\ngeorge: well, i wanna talk to him about this. \n\njerry: that's right, you let him have it. \n\ngeorge: mmm-mm. \n\njerry: who is he not to tell you about his life-threatening illness? \n\ngeorge: that's what i'm saying. \n\njerry: his illness is your business. \n\ngeorge: if not mine, whose? \n\njerry: if not now, when? \n\nelaine: were you just talking about me? \n\ngeorge: no, an old friend of ours, gary. \n\nelaine: oh, the guy with cancer? \n\ngeorge: (to jerry, yelling) you told her? she's not your wife! \n\njerry: if i told you, you woulda given it away. \n\ngeorge: you don't think i can keep a secret? \n\njerry: no, but he would've read your face. \n\ngeorge: you don't trust my poker face? \n\njerry: do you ever win at poker? \n\ngeorge: (shamefaced) no. \n\nkramer: hey. (to elaine) oh, i just saw your old boyfriend on tv. \n\nelaine: egh, jake jarmel? \n\nkramer: yeah. i really liked those glasses he was wearing. where'd he get those. \n\nelaine: why? you don't wear glasses. \n\nkramer: i know, i know. but i need a new look, i'm stagnating. \n\ngeorge: i have to say, as a glasses wearer i take exception to that. that's like me buying a wheelchair to cruise around in. \n\nkramer: yeah, i've considered that. (to elaine) look, how do i get in touch with this guy? \n\nelaine: well, he's having a two day book signing at waldens. \n\nkramer: ah. \n\nelaine: you know, we had a really bad break-up. \n\njerry: the jujy fruits? \n\nelaine: (upset) yeah, the jujy fruits. \n\njake: okay, k-man, enjoy the book. \n\nkramer: okay, thank you. listen jake, uh, where did you get those eyeglass frames? \n\njake: i can't tell you that. \n\nkramer: so you don't know where you got 'em? \n\njake: yes i do. but i don't want anyone else to have them. \n\nkramer: well, that's peculiar. (leaves) \n\ngeorge: eh, there's that woman that never talks to anybody. \n\ngary: really? \n\ngeorge: every day she comes in, she sits at that table and reads. never talks to anybody. \n\ngary: oh, i talked to debby bibelo. she said to say hi. \n\ngeorge: (pleasant surprise) really? (admonishing) you know gary, i really have to say, i'm a little bit hurt that you didn't decide to confide in me. \n\ngary: well frankly, you can't keep a secret. you know, you'd get two pair, the whole table knows. \n\ngeorge: well i still think it was wrong. \n\ngary: right, well i'm sorry, all right. i guess i was just thinking of myself. \n\ngeorge: (well, obviously) yes. \n\nkramer: ...so i called the litterbug a pig, not you. i like policeman. i wanted to be a policeman. \n\ncop: yeah? so why didn't you? \n\nkramer: scared of being shot. \n\ncop: mr kramer, let me tell you a story. in nineteen-seventy-nine i ticketed a brown dodge diplomat for parking in a church zone. that fine was never paid, and since then that scofflaw has piled up more parking tickets than anyone in new york city. for sixteen years i pursued him, only to see him give me the slip time and time again. i never got a clean look at his face, but he's become my 'white whale'. mr kramer, that day was yesterday! but thanks to you, i don't know if i'll ever get that chance again! \n\nkramer: i like that eye patch. \n\ngeorge: (standing) all right, i'm gonna move my car, my meter's up. can't park in this city. \n\ngary: (standing) hey, george, listen. you know that company i work for, they own that parking lot around the corner. \n\ngeorge: wha, that's a kinney lot? \n\ngary: yeah, and there's a space opening up, and i could get it for you. you just have to pay the tax on it. it'd be like, fifty a month. \n\ngeorge: fifty bucks a month, that's incredible! okay, thanks. \n\ngary: all right, i got lunch, all right. \n\ngeorge: you still owe me a secret. \n\ngary: all right, listen. there is something i haven't told you, all right? \n\ngeorge: yeah? \n\ngary: yeah, but uhm, you can't tell jerry. \n\ngeorge: what do think i tell jerry everything? it's not like he's my wife. \n\ngary: okay. well, the thing is, i've been living a lie. \n\ngeorge: just one? i'm living like twenty. (chuckles) what's yours? \n\ngary: well, i (laughs) i never actually had cancer. (laughs) i'll see you. (leaves) \n\nelaine: so he refused to tell you where he got the glasses? \n\nkramer: (rising) flat out refused! (walks past jerry, who moves his legs) \n\nelaine: yeah, isn't that just like him? (she steps over jerry's legs) you know, he has to be the only one who has 'em. \n\nkramer: yeah, tell me about it, soul sister. (he opens the door to leave) anyway, i told jake that you said hi. \n\nelaine: what? (she slams the door shut before kramer can exit) you told jake i said hi? \n\nkramer: yeah. \n\nelaine: i can't believe you did that! why did you tell him i said hi? i never said hi! (to jerry) when did i say hi? \n\njerry: i never heard her say hi. \n\nkramer: well, it's uh, common courtesy. \n\nelaine: no, no. (stamps foot) kramer, you don't understand. he made the last contact between us. i had the upper hand in the post-breakup relationship. if he thinks that i said hi, then i lose the upper hand. \n\njerry: it's like a game of tag. \n\njerry: where you going? \n\nelaine: nowhere. \n\njerry: you're going to the book store to see jake jarmel, aren't you? \n\nelaine: so what if i do? (heads for the door) \n\nkramer: (to the exiting elaine) yeah, well, listen. if you're going there, (following her out the door) maybe you can get him to tell you where he got those glasses. (shouting after her) elaine! \n\njerry: hey. how'd it go with gary? \n\ngeorge: (shifty, avoiding jerry's eyes) fine, fine. (he removes his coat) \n\njerry: (suspicious) really? \n\ngeorge: (shifty) yeah. \n\njerry: you look like something's on your mind. \n\ngeorge: no. nothing. fine. (he sits at the table) \n\njerry: so, that's your poker face. \n\ngeorge: my regular face. \n\njerry: no it isn't. i've seen your regular face. that is not it. \n\ngeorge: what are you saying? \n\njerry: all right george, c'mon, what d'you got? (sits opposite george) \n\ngeorge: i got nothing. \n\njerry: what you got, a pair of bullets? \n\ngeorge: what you talking about? \n\njerry: two pair? three of a kind? \n\ngeorge: will you stop it? \n\njerry: oh my god, you got a flush! you're holding a flush! \n\ngeorge: i don't have a flush. \n\njerry: a full house? you got a full house? turn 'em over george, i wanna see 'em. come on, i'm calling! (thumps hand on table) what d'you got! \n\ngeorge: (broken, shouts) gary fogel never had cancer! \n\nelaine: so you see, kramer took it upon himself to say hi to you from me. when in fact it was an unauthorised hi. \n\njake: you're saying you didn't say hi. \n\nelaine: that's what i'm saying. \n\njake: so that's what you came down here to tell me? \n\nelaine: correct. \n\njake: you never said hi? \n\nelaine: correct. \n\njake: you still like me, don't you? \n\nelaine: correct. (catches herself) what's that? \n\nman: hey, i have been trying to get this book signed all day. \n\nelaine: (takes the book from the guy and signs it herself) how can you say that i still like you, when i didn't even say hi to you? \n\njake: elaine, coming down here to say that you didn't say hi is more of a gesture than if you did say hi. \n\nelaine: ah, jake... (realises his logic) i, uh... \n\ngeorge: the doctors thought he had cancer, but the surgery revealed he never actually had it. \n\njerry: so what was wrong with him? \n\ngeorge: nothing! \n\njerry: so he's been lying to me for two months?! \n\ngeorge: that's right. \n\njerry: what kind of person is this? there's only one other person who might be able to do something like this, and that's you. \n\ngeorge: well... \n\njerry: i don't even think you could do it. \n\ngeorge: oh, i could do it. \n\njerry: yeah, i guess you could. \n\ngeorge: (snorts) c'mon. \n\njerry: did you know he was so worried about losing more hair if he had to get chemo treatment, i bought him an unlimited gift certificate at the hair team for men, just to put his mind at ease? \n\ngeorge: you did that? \n\njerry: yeah. oh, i can't wait to talk to this guy. (moves to pick up phone) \n\ngeorge: wait a minute, wait a minute. you can't say anything. (rushes to take phone from jerry) \n\njerry: why not? \n\ngeorge: (puts down handset) because he'll know i told you. besides, he's giving me a parking spot around the corner for practically nothing. \n\njerry: so you're telling me, because you're getting free parking, i gotta pretend this guy had cancer when he didn't? \n\ngeorge: yeah. \n\njerry: well i don't like it. i don't like it one bit! and, i'm supposed to see him tomorrow. \n\ngeorge: yeah, well you have to maintain the same disposition too. you can't start acting any differently. you have to be nice. \n\njerry: why didn't he tell me? \n\ngeorge: because you were being so nice. \n\njerry: i don't think i can be that nice. \n\ngeorge: (shouts) you be nice! \n\njerry: gary? \n\ngary: what d'you think? check it out. (he tries a number of expressions, turning his head side to side, to show off the hairpiece) \n\njerry: is that from my gift certificate? \n\ngary: yeah buddy. you really came through for me man. you've been so nice. (shakes jerry by the hand) \n\njerry: (through gritted teeth) yeah, well, i'm glad you could take advantage. \n\ngary: hey, you know what i'm thinking of doing? i'm getting rid of all my fillings, 'cos that mercury's toxic. hey, let me see your fillings. \n\njerry: i don't think so. \n\ngary: oh come on, open up. let me take a look. \n\ngeorge (v.o.): you be nice! he's giving me a parking space (echoes) parking space... parking space... \n\ngary: (peering in) well, what d'you know. hey, lookee there, you're loaded. \n\njerry: okay. (shuts mouth) \n\ngary: hey, look who's over there. miss cool-toes. check this out, jack! (rises) \n\nkramer: (to jerry) hey buddy. \n\njerry: hey. look at you. wha... what's this? \n\nkramer: it's an eyepatch. \n\njerry: you look like a pirate. \n\nkramer: i wanna be a pirate. \n\njerry: (gesturing) this is gary. \n\nkramer: (to gary) how you doing? \n\ngary: all right. \n\nkramer: well, i tell you there's only one problem. \n\njerry: can't see on your right side? \n\nkramer: no. it's uh, (swaps patch to the other eye) it's itchy \n\ndebby: nice car. \n\ngeorge: yeah. once belonged to jon voight. \n\ndebby: so, what made you just call me out of the blue like that? \n\ngeorge: oh, well, uh. gary told me you said hi. \n\ndebby: i didn't say hi. \n\ngeorge: you didn't? \n\ndebby: uh, no. i told him to send you my regards. i didn't say hi. \n\ngeorge: regards? \n\ndebby: yeah, regards. \n\nelaine: anyway, i admit i was dumb to go to the bookstore to tell him i didn't say hi, but he didn't have to act so smug. oh, i hate smugness. don't you hate smugness? \n\ncabbie: (heavy accent) smugness is not a good quality. \n\nelaine: (looking out of window) oh my god. that man over there. i think he's wearing glasses that look just like jake's. pull over, stop the car. (hands money to cabbie as she exits) here, here. i think i got a way of getting back at my ex-boyfriend. \n\ncabbie: good. revenge is very good. \n\nelaine: (calling down street) 'scuse me! 'scuse me. (catches up to guy) excuse me, sir. sir? \n\nguy: yes? \n\nelaine: uh. ah, if you don't mind my asking, could you tell me where you got your glasses? \n\nguy: malaysia. \n\nelaine: malaysia? \n\nguy: yeah. \n\nelaine: uhm, look, i know this'll sound odd, but can i buy them from you? \n\nguy: actually, i was gonna buy a new pair. \n\nelaine: (positive) oh! (little chuckle) \n\nguy: but i, i can barely see without these. \n\nelaine: c'mon. \n\nguy: well, these were expensive. \n\nelaine: let's start the bidding. \n\ngeorge: so, you didn't think this was a date? \n\ndebby: n... no, not really. why, is it... a date? \n\ngeorge: i thought it was a date. \n\ndebby: no. it's not a date. \n\ngeorge: what about the regards? \n\ndebby: regards don't mean anything. i mean, it's not like i said hi. hey, the fact is... (sighs) i shouldn't say anything. \n\ngeorge: no, tell me. \n\ndebby: can you keep a secret? \n\ngeorge: me? oh yeah. \n\ndebby: (deep breath) i never had feelings for gary until he got sick. but, h... he was so brave and... and gained such a wonderful perspective on life. i... i fell in love with him. \n\ngeorge: oh, the guy's got some perspective there. \n\njerry: hey, do you know what the whip does? \n\nkramer: what whip? \n\njerry: the whip. in the senate, in the house. \n\nkramer: well, you know in the old days, when the senators didn't vote the way that the party leaders wanted 'em to... they whipped them. (holds imaginary whip) you better vote the way we want you to, or there's gonna be big trouble. (cracks invisible whip and makes sound effect) \n\ngary: she won't talk to anyone, huh? oh no, she won't say a word to anybody. well, she's talking a blue streak now, jack! \n\ncop: well, well. the 'white whale'. \n\ngeorge: (frustrated) oh, look at this. there's no place to park around here. i don't even know why they sell cars in manhattan. \n\ndebby: don't complain, at least you have your health. \n\ndebby: george, look out for that man! \n\ncop: (to escaping car) hey! hey, get back here! \n\nkramer: (looking after fleeing car) newman! the white whale! \n\ngeorge: can you believe he sold his glasses on the street? \n\njerry: can you believe someone would lie about chemotherapy to get a wig? would you do that? \n\ngeorge: no. definitely not. \n\njerry: yeah. \n\ngeorge: i'm pretty sure i wouldn't. \n\njerry: and you know what else? he picked up that woman in the coffee shop. \n\ngeorge: the one who always sits by herself? \n\njerry: yeah! \n\ngeorge: how did he do that? \n\njerry: because he was brimming with confidence from the toupee. \n\ngeorge: really? and debby told me that she fell in love with him because he has all this perspective! \n\njerry: she thinks a guy who lies about a life-threatening illness, so he can get some phony hair has perspective? \n\ngeorge: (opening door to leave) he picked her up? \n\njerry: walked right over to her table. \n\ngeorge: wow. (he runs his fingers through his hair, and then brushes the resulting fallout off his jacket) \n\nelaine: jake, jake. take a look. (puts on the frames she bought) aaw, see, you're not the only one who has 'em. i have them too. \n\njake: where did you get those? \n\nelaine: malaysia. i was in the area. \n\nnewman: (surprised) kramer. \n\nkramer: just drive. \n\nkramer: all right. now you listen, and you listen good. i know who you are. you're the scofflaw. \n\nnewman: (defensive) what're you talking about... \n\nkramer: (interrupting) ah, don't play dumb. it's me, cosmo. \n\nnewman: all right, so it's me. so what? \n\nkramer: you don't think i know how you're feeling, every second of the day? looking over your shoulder to see if someone's coming up from behind. sitting alone at night, knowing they could be closing in. \n\nnewman: i can't sleep, i tell you! i can't sleep! \n\nkramer: ga, of course you can't, you poor sap! now why didn't you tell me? \n\nnewman: i couldn't. i couldn't tell anyone. \n\nkramer: so you been living this secret the whole time by yourself? \n\nnewman: (sobbing) yes, it's been awful. i wanted to tell somebody. (pleading) help me kramer! help me! \n\nkramer: all right, all right, i'm gonna help you. \n\ngeorge: i'll try some on and see how they look. it's just hair. \n\njerry: you ever see what that thing looks like in the back? you got your natural little curls on the bottom, and then that big phony mat coming down on top of 'em. \n\ngeorge: well, some of 'em look good. the ones that look good you don't even know about. \n\njerry: what if you get involved with a woman? how're you gonna tell her? \n\ngeorge: the way they make 'em these days, i'll never have to tell her. \n\njerry: so you keep it a secret your whole life, then at your funeral the mortician comes out (as mortician) 'here, mrs costanza, i thought you might want this'. (as mrs costanza, horrified) aahh! \n\nlippman: it's no secret that it's my dream to have my own publishing house, and if this jake jarmel book does, you know, what i think it's gonna do. if i can get this whole thing off the ground, then , you know, i think i'll have something for you. (laughs) \n\nelaine: oh, mr lippman. (joins laughter) that is so exciting. i mean, you have no idea how sick i am of running around town looking for socks. \n\nlippman: yeah, by the way, those are great glasses. \n\nelaine: oh really, you like 'em? \n\nlippman: uh huh. very unusual. \n\nelaine: well, you know what? (removes glasses) \n\nlippman: what? \n\nelaine: (hands them over) you can have 'em. \n\nlippman: oh, no no no. (waves them away) please. \n\nelaine: no no no no. go to that place on the corner, they'll change the prescription in an hour. take 'em. \n\nlippman: really? \n\nelaine: yeah, i've no use for them anymore. honestly. \n\nlippman: (accepting) i could use a new pair of reading glasses. \n\nelaine: they're from malaysia. \n\nlippman: (putting on spectacles) oh yeah? \n\nelaine: (admiring gasp) fabulous. \n\njudge: well mr newman, in all my years on the bench, i have never come across anything quite like this. i have given this matter some very serious consideration and i've decided that what's best for the city and possibly for yourself, is for you to keep your car, in a garage... \n\njudge: ...convenient to your home. \n\nnewman: (sobbing) i can't afford that! \n\njudge: afford it you will, mr newman. or this court will see that your car is impounded... \n\njudge: ...and sold at auction. \n\nkramer: well, don't you worry, your honour. he's in my custody. \n\ngeorge: (to jerry) well, what d'you think? \n\njerry: (unimpressed) i, really can't say. \n\ngeorge: no, say. i want you to say. \n\njerry: it's not good, okay. it's not good. you look (searches for word) stupid. (to salesman) i'm sorry. \n\nsalesman: you have to realise this has not been custom-fitted to his scalp. \n\ngeorge: (examining reflection) i really think this looks pretty good. \n\njerry: why don't you get a pair of white shoes, move down to miami beach and get the whole thing over with? \n\ngeorge: (to salesman) well, maybe you could show me something else. \n\nsalesman: as i said, it'll be different once we design something specifically for you. but i don't think your friend here is being very helpful. \n\njerry: oh, hey, i'm being helpful. i am the only one being helpful! \n\nsalesman: (getting annoyed) no, i don't think you're being helpful! i think you're being disruptive, and you make it very difficult for your friend here to improve his life! \n\njerry: hey! i'm trying to prevent my friend from becoming one of those guys people snicker at behind their back, because they look ridiculous! no offence to you personally! \n\nsalesman: (angry) all you people with hair think you're so damn superior! you have no idea what it's like. you ever look down in the bottom of your tub and see a fist fulla hair? how'd you like to start your day with that?! (looks ready to punch jerry) \n\njerry: all right! take it easy! take it easy. \n\ngeorge: (leaps to feet) jerry! \n\njerry: i'm sorry. \n\ngeorge: please. (sits again) \n\ngary: hey jerry, th... (spots george) george, you decided to get a rug! good for you, jack! \n\ngeorge: well, i'm, i'm just looking. \n\ngary: oh. (to salesman) uh, tommy, i'm gonna need a little adjustment. \n\nsalesman: i'll be right with you. \n\ngary: listen, george, i got some bad news. i'm not gonna be able to give you that parking space. \n\ngeorge: what? \n\njerry: what? \n\ngary: this judge has to use it for some scofflaw. and you know you can't fight city hall. \n\njerry: you know, gary (slams shut the door) i had a little chat with george the other day... \n\ngary: (to george) you didn't?! \n\ngeorge: (admiring himself in mirror) i did. \n\njerry: (advancing on gary) ...and he told me that that... (becomes indistinct) \n\ngary: (indistinct) i'm not a hundred percent recovered yet! \n\njerry: gimme that thing! \n\ngeorge: how's your life? all right? \n\nwoman: yeah, not bad at all. \n\nlippman: (at lectern) and now, uh, ladies and gentlemen of the press, it is my pleasure to introduce you to mr jake jarmel. (he applauds jake as he vacates the lectern in his favour) \n\nreporter: so jake, what's your percentage on this book? \n\nlippman: oh, actually i, uh, i have some very interesting information on that. (puts on glasses) you know, uh, this is a co-venture and as... \n\njake: (notices glasses) where did you get those? \n\nlippman: ... as such, it... \n\njake: those glasses, where did you get those glasses? \n\nlippman: (confused) where... what? \n\njake: (to elaine) is this supposed to be some kind of a joke on me? because it's not very funny. (to the nonplussed lippman) give me those! (yelling) i want the glasses! give me those! \n\nelaine: (mouths) 'scuse me. have to go (audible) look for some socks. \n\njerry: look at you. why don't you use a fork? you're no good with the sticks. \n\nelaine: i know. i need a lesson. \n\njerry: you stink. you know you stink. what is this? \n\nelaine: oh. my ballet tickets. \n\njerry: oh. your ballet tickets. \n\nelaine: hey, have you ever been to the ballet? \n\njerry: no, but i've seen people on tiptoes. \n\nelaine: you know, i'm going as a beard. \n\njerry: a beard? \n\nelaine: yeah. this friend of a friend knows this banker guy, he's, i don't know, 30 years, unbelievably gorgeous, of course he's gay. \n\njerry: yes. \n\nelaine: so anyway his boss has a box at the met and he invited us to see swan lake, which is fine, but he's afraid that his boss can't handle his orientation, so i'm going along as his date. \n\njerry: why are you doing this? \n\nelaine: swan lake, at the met. \n\nkramer: oh, chinese food. i knew i smelled something. \n\nelaine: hey, is george still wearing that toupee? \n\njerry: yeah. \n\nelaine: doesn't he know how ridiculous he looks in that thing? \n\nkramer: i think he looks fantastic. \n\nelaine: oh, come on. \n\nkramer: no, i never realized what an attractive man he is. \n\ngeorge: hey, people, people, people, people, people. not bad, huh? excuse me. \n\nelaine: you look ridiculous in that thing. \n\ngeorge: is that so? or could it be that you're just a *little* bit worried that you may have missed the boat? \n\nelaine: well i think they might have sutured that thing to your brain. \n\ngeorge: ha ha ha ha, oh all right, go ahead, deride, deride if you must. but let me tell you something, with my personality and this set of hair, you know what i am now? i am in the game. i no longer defer to the coifed. i'm a player. \n\nkramer: you know i just thought of something. i know this gorgeous woman, she called me up this morning, she's moving into the city, and she asked me if i know of anyone she could meet. now you can go out with her. \n\njerry: well what about me? \n\nkramer: no i think he's got you beat buddy. \n\ngeorge: so she's gorgeous. \n\nkramer: oh yeah, last time i saw her she was, five years ago. \n\ngeorge: well have you got a picture? \n\nkramer: no. \n\ngeorge: well, i have to see her. \n\nkramer: hey, i know what we can do. i've got a friend who works over at the police station. he's a composite artist. \n\ngeorge: really? \n\nkramer: yeah, yeah, maybe i can get him to draw a picture of her for you. \n\ngeorge: oh i would love that. you think he'd really do it? \n\nkramer: yeah, yeah. i think he will. \n\njerry: it sounds like an excellent idea. \n\nkramer: hey jerry, you want this, cause i'm going to give it to a homeless person. \n\ngeorge: well i'm very excited about this. i've always wanted to see how those sketch artists do it. \n\nkramer: here you go brother. some food for you. \n\nhomeless man: thank you. you're a good man. bless you. \n\nkramer: now are you going to be here in an hour? \n\nhomeless man: where am i going? \n\nkramer: oh that's good, that's good. make the eyes, uh, what's that nut? \n\nlou: almond? \n\nkramer: almond. yeah. make the lips fuller. poutier. \n\ngeorge: pouty? i like that. \n\njerry: you can't go wrong with pouty. \n\ngeorge: i'm excited about the pouty. \n\nlou: all right i think that about does it. \n\nkramer: all right george, come on, take a look. \n\ngeorge: oh yeah, you were right. she's gorgeous. \n\njerry: hey, lou, who's that woman over there? \n\nlou: oh, that's sergeant tierney. nice officer. you want to meet her? \n\ngeorge: well this worked out okay. so are you going to see the police woman? \n\njerry: yeah, i think i will. i like the idea of having the law on my side. \n\nkramer: hey, man. enjoy the food? \n\nhomeless man: yes i did. where did the chinese learn to cook like that? \n\nkramer: oh, listen, i'll take that tupperware now. \n\nhomeless man: i don't think so. \n\nkramer: woah, woah, that's mine. \n\nhomeless man: you gave it to me. \n\nkramer: no, no, i didn't say you could keep it. you see i don't give away tupperware. \n\nhomeless man: you should have said something. \n\nkramer: i didn't think i had to. look with a piece of tupperware you just assume. \n\nrobert: i've really got to thank you for this. \n\nelaine: well by now, you think people would be a little more open minded. \n\nrobert: really. would you excuse me? i have to run to the bathroom. \n\nboss' wife: so, um, you and robert. \n\nelaine: yes indeed. \n\nboss: i'm surprised. \n\nelaine: really. why? \n\nboss: no reason. \n\nelaine: well believe me this didn't happen overnight. robert's not exactly a *one* *woman* *man*, if you know what i mean. no sirree bob. sure, i mean in a lot of ways, he's a typical guy, he likes his sports, but he counters that side with the side you see here tonight at the ballet, or the pleasure he gets in watching ms. liza minelli belt out a few choice numbers. it's those two halves of his personality that just come together to make him the very special guy that he is. \n\nelaine: oh, hi honey. \n\nelaine: oh it was such a great night. \n\njerry: and did they suspect anything? \n\nelaine: no, i was a fantastic beard. i held hands, i called him honey. \n\njerry: and we discover yet another talent. posing as a girlfriend for homosexuals. \n\nelaine: oh it was such a great night. oh. \n\njerry: you said that already. \n\nelaine: oh i did? \n\njerry: yeah. \n\nelaine: oh. \n\njerry: oh no. don't tell me. you like him? \n\nelaine: he's incredible. \n\njerry: yeah, but? \n\nelaine: yeah, i know. \n\njerry: so? \n\nelaine: what? \n\njerry: not conversion. you're thinking conversion? \n\nelaine: well it did occur to me. \n\njerry: you think you can get him to just change teams? he's not going to suddenly switch sides. forget about it. \n\nelaine: why? is it irrevocable? \n\njerry: because when you join that team it's not a whim. he likes his team. he's set with that team. \n\nelaine: we've got a good team. \n\njerry: yeah, we do. we do have a good team. \n\nelaine: why can't he play for us? \n\njerry: they're only comfortable with *their* equipment. \n\nelaine: we just got along *so* great. \n\njerry: of course you did. everyone gets along great when there's no possibility of sex. \n\nelaine: no, no, no, i sensed something. i did sense something. i perceived a possibility jerry. \n\njerry: you realize you're venturing into uncharted waters. \n\nelaine: i realize that. \n\njerry: are you that desperate? \n\nelaine: yes i am. \n\njerry: so are you going to bring your gun?... all right, then it's settled. first date, no weapons... all right i'll see you then... okay, bye. \n\njerry: what are you looking for? \n\nkramer: tupperware. \n\njerry: sorry. i don't have any tupperware. \n\nkramer: i knew this was going to happen. i just made a delicious casserole, but now it won't keep because i have no tupperware. \n\njerry: what about a plastic bag? \n\nkramer: you must be kidding. \n\njerry: what is the difference? \n\nkramer: the patented burp, jerry. it locks in freshness. \n\ngeorge: so i spoke a little to your little friend denise last night. \n\nkramer: oh yeah, you talked to her. \n\ngeorge: yeah for two hours. she's nuts about you. \n\nkramer: yeah well we go way back. \n\ngeorge: why didn't anything happen between you two? \n\nkramer: who's to say it didn't? \n\njerry: so did you describe yourself to her over the phone? \n\ngeorge: yes i did. \n\njerry: what did you say to her? \n\ngeorge: what do you think i said? \n\njerry: i don't know. \n\ngeorge: i told her the truth. \n\njerry: as you see it? \n\ngeorge: yes, as i see it. \n\njerry: did you tell her about, uh, your little hat there? \n\ngeorge: what hat? \n\njerry: you know, you're little hair hat there. \n\ngeorge: no. \n\njerry: don't you think she could tell? \n\nkramer: no, no, no she can't tell. it's a perfect match. beautiful job. \n\njerry: are you kidding? i could spot that bird's nest two blocks away. \n\ngeorge: you only think that because you know me. \n\njerry: have you noticed people staring at your head? \n\ngeorge: i noticed people staring at my head because they like what they see. \n\njerry: well i think you should either take it off or tell her about it. \n\nkramer: no he's not going to take it off. if he was going to go over there bald, i never would have introduced him. \n\ngeorge: look, i guarantee she won't know. \n\nkramer: yeah that's it. all right, i'm going to go down to the precinct. i'm going to have lunch with lou. \n\njerry: oh, i'll split a cab with you. \n\nkramer: hey i'm really sorry about the other day. really sorry. \n\nhomeless man: hey that's my coffee! \n\njerry: hi sarge. \n\ntierney: hi, i'm sorry i'm late. some of our lineup decoys didn't show. hey any of you guys want to be in the lineup? make a quick 50 bucks? \n\nkramer: sure. i will. \n\ntierney: perfect. just go over there with officer lampert. \n\nspeaker: all of you, turn to the left. \n\nspeaker: the left. \n\nspeaker: now turn to the right. \n\ngeorge: (thinking to himself) oh my god, there she is. that's the face, just like the picture. \n\ndenise: george? \n\ngeorge: yeah. hi. it's great to meet you. \n\ndenise: likewise. have you been waiting long? \n\ngeorge: no, no. i just got here. a few minutes ago. \n\ndenise: good, good. \n\ngeorge: well why don't you take off your hat and stay awhile. \n\njerry: what's that? \n\ntierney: a polygraph. it's what you civilians call a lie detector test. \n\njerry: oh. let me ask you, when someone is lying, is it true that their pants are actually on fire? \n\ntierney: if i could tell you the famous faces that have been up here. a certain cast member of melrose place. \n\njerry: really. \n\ntierney: have you ever seen the show? \n\njerry: no. \n\ntierney: you can admit it jerry. it's okay. \n\njerry: i admit it. i don't watch it. \n\ntierney: hey lou, maybe we should put him on the poly. \n\njerry: the poly? \n\ntierney: yeah. i think you've seen it. \n\nelaine: melrose place? \n\njerry: yes. melrose place. \n\nelaine: i just didn't know you watched that. \n\njerry: well i do. \n\nelaine: i mean every time i mention it you never say anything or join in the conversation. \n\njerry: well maybe i was a little embarrassed. \n\nelaine: you mean this whole time we could have been discussing sydney and michael and jane... \n\njerry: and billy and jake and allison, yes we could have discussed it. \n\nelaine: why? why were you so embarrassed? \n\njerry: the point is i'm going to be taking this lie detector test and that needle's going to be going wild. \n\nelaine: that is *so* stupid. why don't you just confess? \n\njerry: it's too stupid to confess. look at what i'm confessing to. \n\nelaine: so what are you going to do? \n\njerry: i don't know. maybe i can beat the machine. \n\nelaine: oh, who do you think you are? castanza? \n\njerry: hey you know what? i have access to one of the most deceitful, duplicitous, deceptive minds of our time. who better to advise me? \n\nelaine: oh god this tastes terrible. \n\njerry: did you shake it up? \n\nelaine: no. \n\njerry: you gotta shake it up. \n\nelaine: no. i'm sick of shaking. you've got to shake everything. \n\njerry: yeah, that's a real nuisance. this is killing me. \n\nelaine: so, i'm going out tonight with robert and the boss and his wife. \n\njerry: so tonight are you going to make the move? \n\nelaine: yeah, i think i might. \n\njerry: hey there he is. so what happened? could she detect it? \n\ngeorge: that's an interesting question. \n\njerry: how so? \n\ngeorge: how so? i'll tell you how so. she's bald! \n\nelaine: what do you mean bald? \n\ngeorge: what do you think i mean bald? bald. bald bald. \n\njerry: she's bald? \n\ngeorge: she's bald. \n\nelaine: oh come on. \n\ngeorge: oh come on? no come on. she took off her hat and there she was (waving his hand over his head) hello. it was like i was looking at myself in the mirror. \n\nelaine: well maybe she got a haircut or something. \n\ngeorge: let me tell you something. no one walks into a beauty parlor and says \"give me the larry fine.\" \n\njerry: women go bald? \n\nelaine: yeah, i've heard of that. i mean they usually wear a wig. \n\njerry: hey. \n\nkramer: hey. \n\ngeorge: you fixed me up with a bald woman. \n\nkramer: bald? \n\ngeorge: yeah, that's right. \n\nelaine: do you see the irony here? you're rejecting somebody because they're bald. \n\ngeorge: so? \n\nelaine: (puts her hands up to her mouth) you're bald! \n\ngeorge: no i'm not. i *was* bald. \n\ngeorge: elaine. \n\ngeorge: no, no, no elaine. \n\nelaine: (shouting) i don't like this thing. and here's what i'm doing with it. \n\ngeorge: nooooo. \n\nrobert: hahaha, why'd you start that fight with me? \n\nelaine: well i figured that's what couples do. \n\nrobert: you almost convinced me we were a couple. \n\nelaine: well it was easy. really. \n\nrobert: well good night, i'll call you tomorrow. \n\nelaine: oh, uh, wait a second. would you like to come, upstairs? \n\nrobert: upstairs? \n\nelaine: yeah. upstairs? \n\nrobert: elaine... \n\nelaine: i was hoping you know, that you might be interested in... changing teams? \n\nrobert: changing teams? \n\nelaine: have you ever thought about it? \n\nrobert: but i'm a starting shortstop. \n\nelaine: robert, we need a shortstop. *real bad*. \n\ngeorge: i tell you, when she threw that toupee out the window, it was the best thing that ever happened to me. i feel like my old self again. totally inadequate, completely insecure, paranoid, neurotic, it's a pleasure. \n\njerry: good to have you back. \n\ngeorge: and you know what else i've decided to do? i'm going to keep seeing the bald woman. \n\njerry: she's as good as anybody else. \n\ngeorge: her scalp was clean. she had a nice skull. there just wasn't a lot of hair on it. \n\njerry: yeah you've had like a religious awakening. you're like a bald-again. \n\ngeorge: going to need a little more coffee here. \n\njerry: so george, how do i beat this lie detector? \n\ngeorge: i'm sorry, jerry i can't help you. \n\njerry: come on, you've got the gift. you're the only one that can help me. \n\ngeorge: jerry, i can't. it's like saying to pavorotti, \"teach me to sing like you.\" \n\njerry: all right, well i've got to go take this test. i can't believe i'm doing this. \n\ngeorge: jerry, just remember. it's not a lie... if you believe it. \n\nelaine: hey, i did it. \n\njerry: what? \n\nelaine: i turned him. he defected. \n\njerry: get out! (pushes elaine) how? how did you do that? \n\nelaine: because i'm a *woman*. (swiveling her hips) ba-ba-ba-boom-chicka-boom-chicka-boom-boom- boom. \n\njerry: elaine, do you know what you've done? you've give hope to every woman who's ever said \"too bad he's gay\". \n\nelaine: well it's a lesson for the kids out there. anything's possible. jeromy, i have *hit* the jackpot. the perfect man. nothing but sex and shopping. \n\nlou: what's your name? \n\njerry: jerry seinfeld. \n\nlou: what is your address? \n\njerry: 129 west 81st street. \n\nlou: did kimberly steal jo's baby? \n\njerry: i don't know. \n\nlou: did billy sleep with allison's best friend? \n\njerry: i don't know. \n\nlou: did jane's finance kidnap sydney and take her to las vegas? and if so, did she enjoy it? \n\njerry: i don't know. \n\nlou: did jane sleep with michael again? \n\njerry: (he hesitates) yes! that stupid idiot. he left her for kimberly, he slept with her sister. he tricked her into giving him half her business, and then she goes ahead and sleeps with him again. i mean she's crazy. how could she do something like that? oh that jane, she makes me so mad. \n\njerry: he went back? what do you mean he went back? \n\nelaine: he went back. \n\njerry: i don't understand it. you were having such a great time, the sex, the shopping. \n\nelaine: well here's the thing. being a woman, i only really have access to the, uh... equipment, what, thirty, forty-five minutes a week. and that's on a good week. how can i be expected to have the same expertise as people who *own* this equipment, and have access to it twenty-four hours a day, their entire lives. \n\njerry: you can't. that's why they lose very few players. \n\nelaine: yeah, i guess i never really stood a chance. \n\njerry: well there's always a place for you, on our team. \n\nelaine: yeah. (teary-eyed) thanks. is melrose place on? \n\njerry: yeah. it's coming on in a few minutes. \n\nelaine: okay. \n\njerry: hey. don't worry it hasn't started. \n\nelaine: hey george, i am *really* proud of you. i really do admire what you've done. \n\ngeorge: do you? that makes me so happy. elaine's proud of me jerry. \n\nelaine: what is the matter? \n\ngeorge: i got rejected by a bald woman. a bald woman rejected me. heh, you like that one? a woman with no prospects and no *hair*, told me that i wasn't her type. apparently *baldy* likes a slimmer guy. \n\nkramer: well i'll tell you what i think. i think she saw you with that piece off and was devastated. you blew it boy. you really blew it. and you had to ruin it for him. didn't you? \n\nelaine: i didn't ruin anything. he looked like an idiot. he did, and it made him act like a jerk. \n\njerry: all right, shut up, shut up, melrose place is coming on. \n\njerry: oh that michael, i hate him, he's just so smug. \n\nkramer: hey, how you doing stu? eddie, my man. you again? boy, you're a slippery one. you'd better straighten up and fly right buddy boy. \n\nman: i've got an eyewitness to that jewelry store break-in. come here. do you recognize anybody in the lineup? \n\nhomeless man: that's the guy officer. the guy there in the middle. the tall guy with the, with the high hair. i'd recognize him anywhere. \n\nman: hey you, you with the high hair, step forward. \n\nkramer: me? \n\ngeorge: say it's saturday night in spain. they go out dancing. you think they do the flamenco? \n\njerry: i would think. \n\ngeorge: so you could call a woman for a date, ask her if she's free for dinner and a flamenco? \n\njerry: (scoffs) you don't flamenco on the first date. \n\ngeorge: boy, i wish the flamenco was popular here. \n\njerry: yeah? would you do it? \n\ngeorge: yes, i think i would. \n\njerry: well, i knew you'd have an affinity for it, because it's the dance of a very proud people. \n\njerry: hello. (listens) oh, hi nana. (listens) what? oh. oh, alright, okay. don't worry about it. (listens) okay, i'll see you later. alright, bye. \n\njerry: i have to go over to my grandmother's. \n\ngeorge: what for? \n\njerry: i have to open a bottle of ketchup for her. \n\ngeorge: so, what, no lunch? \n\njerry: no, we have time. \n\ngeorge: oh. how's she doing? \n\njerry: ah, she's starting to slip a little. sometimes she has difficulty distinguishing between the past and the present. \n\ngeorge: ah. you know, there's gotta be an easier way to open ketchups. they should make it in a tube. \n\njerry: like toothpaste? \n\ngeorge: ya-hah. \n\njerry: there's a squeeze ketchup. \n\ngeorge: i've seen squeeze mustard. i've never seen squeeze ketchup. \n\njerry: well, if they make squeeze mustard, doesn't it stand to reason that they make squeeze ketchup? \n\ngeorge: not necessarily. mustard lends itself to the squeeze. \n\njerry: i really don't see the difference. \n\ngeorge: oh, there's a difference. it's subtle. \n\njerry: it's subtle. \n\ngeorge: hey uh, isn't elaine supposed to meet us? \n\njerry: (looking ahead) yeah, there she is. uh-oh. \n\ngeorge: what? \n\njerry: ah, she's with her friend wendy. \n\ngeorge: wendy? is that the uh, physical therapist? \n\njerry: yeah. i'm on a kiss hello program with her. \n\ngeorge: really? \n\njerry: yeah. every time i see her, i gotta kiss her hello. i just did it once, on her birthday, somehow it mushroomed. now i dread seeing her because of it. \n\nelaine: (from a distance) hey. \n\ngeorge: you know, i'm down to one kiss hello. my aunt sylvia. \n\njerry: ah, that's fortunate. i really admire that. \n\ngeorge: (surprise) huh. i never heard you say you admire me for anything. \n\njerry: no, i told you i admire your hearing. \n\njerry: no, don't slough that off, you have great hearing. \n\ngeorge/jerry/elaine/wendy: hey/hi/hello (etc.) \n\nelaine: (to wendy) wendy, george. (to george) wendy. \n\ngeorge: you're uh, physical therapist, right? \n\nwendy: yes. \n\ngeorge: you know, i got this little swelling right here. (rolls up his sleeve to expose his wrist) it's kinda painful. what d'you make of it? \n\nelaine: (warning) george. \n\nwendy: have you tried heat and ice on it? \n\ngeorge: (reluctant) oh that uh, that seems like a lotta trouble. \n\nwendy: well, you could come by my office later, i could work on it for you a little. \n\ngeorge: (happy) oh! okay. \n\nwendy: let me give you my card. \n\ngeorge: oh, thank you. \n\nwendy: well, i'll see you guys later. (to george) nice meeting you. bye elaine. \n\nelaine: bye wendy. i'm sorry. \n\nwendy: bye jerry. \n\njerry: bye. \n\nelaine: (slapping george on the arm) what did you do that for? \n\ngeorge: what? \n\nelaine: (pinching george's arm) ask about your arm. \n\ngeorge: i still don't see why i can't ask her about my arm. \n\nelaine: she's a physical therapist. she doesn't want to have to deal with that outside of the office. \n\ngeorge: why not? \n\nelaine: because, it is what she does. \n\ngeorge: i love these people, you can't ask 'em questions. (getting excited) they're so mentally gifted that we mustn't disturb the delicate genius unless it's in the confines of an office. (worked up) when huge sums of money are involved, then the delicate genius can be disturbed! \n\nelaine: george, you got a little something, right here. \n\ngeorge: (wiping the area with a hand) people think they're so important... \n\njerry: (adamant) well, i'm going on record right now that that was my last kiss hello. i am getting off the kiss program with her. \n\nelaine: why? \n\njerry: well, you know, frankly, outside of a sexual relationship, i don't see the point to it. i'm not thrilled with all the handshaking either, but one step at a time. \n\ngeorge: (regarding the menu) what're you getting? \n\njerry: (to elaine) and what's with that hairdo, by the way? \n\nelaine: huh, yeah, i know. it's not very flattering. \n\njerry: she looks like something out of an old high school yearbook. you should say something to her. \n\nelaine: oh, i could never say anything to her about that. \n\njerry: yeah. kramer's the only person who could say something like that. \n\nelaine: yeah. hah. \n\ngeorge: well, just tell kramer to tell her. \n\nelaine: no. if you tell him to do it, he'll never do it. \n\njerry: what you have to do is introduce him, and then he'll just come out with it. \n\nelaine: (sharp intake of breath) hoh. yes, yes, you're right. that's right. i'll bring her over to meet... \n\nelaine: (to kramer) ...kramer. \n\nkramer: hello, boys and girls. \n\njerry: speak of the devil. \n\nkramer: yeah. hey listen, i uh, i need a picture of you, buddy. \n\njerry: what for? \n\nkramer: well, i'm uh, i'm putting everybody's picture up in the lobby of our building. \n\njerry: why? \n\nkramer: so everyone will know everybody's name. see, people are gonna be a lot friendlier. \n\njerry: (reluctant) i, i don't want my picture plastered up in the lobby. \n\nkramer: imagine walking by someone on the floor, and you say \"hey, carl!\" and he says \"hey, jerry!\" you see, that's the kind of society i wanna live in. \n\njerry: (still reluctant) kramer, i don't wanna stop and talk with everyone, every time i go in the building. i just wanna nod and be on my way. \n\nkramer: (to elaine) you know your eyeliner's smudged a little. why do you wear so much eye makeup? \n\nelaine: (to jerry, indicating kramer) yeah. this is gonna work out just fine. \n\nleo: ma! again with the ketchup? don't they have 'em in the plastic squeeze containers? \n\nleo: (traditional greeting) jerry! hello! \n\njerry: hello, uncle leo! \n\nleo: what're you doing here? \n\njerry: nana called me to open the ketchup bottle. \n\nleo: yeah, me too. \n\nnana: hello jerry. \n\njerry: hi nana. \n\nleo: aren't you gonna kiss her hello? \n\njerry: yes. (kisses nana) yes of course. \n\nnana: ha, well, here's the bottle. \n\nleo: (grabbing the bottle) i'll do it. \n\njerry: (also grabbing) what're you doing, i got it. \n\nleo: give it to me. \n\njerry: will you stop it. \n\nleo: jerry, will you give me the bottle? \n\njerry: uncle leo! (releasing his grip) alright! take it! \n\nnana: you should let buddy open it. \n\nleo: buddy? he lived next door to us forty-five years ago. \n\nnana: leo, did you give helen the fifty dollars? \n\nleo: what fifty dollars? \n\nnana: your father won a thousand dollars at the track last week, and he gave you a hundred, and you were supposed to give fifty dollars to your sister. \n\nleo: ma, dad died in nineteen-sixty-two. \n\nleo: (laughing off nana's confusion) believe me. i don't owe your mother fifty dollars. \n\njerry: i'm just not getting any hot water. \n\njulio: hey, believe me, i know there's nothing worse than when your shower's not working. i'm gonna take care of it as soon as i can, jerry. \n\njerry: thanks, julio. \n\njulio: awright. \n\njerry: huh? \n\nkramer: (surprised) hey, hey hey hey. hello! \n\njerry: what's going on here? \n\nkramer: (evasive) ohh, nothing, nothing. \n\njerry: (suspicious) well, then what're you doing? \n\nkramer: oh, i, i need a pen. \n\njerry: what for? \n\nkramer: well, i'm making out my will. oh, i got a big slice of dough for you, buddy. and you too, elaine, i haven't forgotten you. \n\njerry: (accusingly) you're looking for a picture of me, aren't you? \n\nkramer: you got that straight. \n\njerry: i told you, forget it. \n\nkramer: oh, come on, jerry. if everybody knew everybody, we wouldn't have the problems we have in the world today. well, you don't rob somebody, if you know their name! \n\njerry: you're robbing me. \n\nkramer: well, i'm gonna get your picture, and you're gonna participate in my program. \n\nelaine: wha... w.. are you going home? \n\nkramer: yeah. \n\nelaine: uh, could you come back in about five minutes? \n\nkramer: why? \n\nelaine: no reason. (big smile) just wanna see you again. \n\njerry: (removing his coat) so? are you sure wendy's coming? \n\nelaine: yeah, she'll be here any second. \n\njerry: well, this'll be a very interesting experiment to see if kramer says something. you sure you wanna go through with this? \n\nelaine: listen, jerry. she never dates, and i know it's because of her hair. \n\njerry: hello. oh, hi mom. yeah, i was at nana's yesterday. i had to help her open a ketchup bottle. hey, mom, let me ask you a question. do you remember when you were a kid, your father winning like a thousand dollars at the track? (listens) really? did you know he gave uncle leo a hundred dollars, and he was supposed to give you fifty? (listens) how do i know? because nana doesn't know what year it is, and she thinks this just happened. (listens) well, i think you should. okay, bye. \n\nmorty: do you know what the interest on that fifty dollars comes to over fifty-three years? \n\nhelen: oh, morty, please. \n\nmorty: six hundred and sixty-three dollars and forty-five cents. and that's figuring conservatively at five percent interest, over fifty-three years, compounded quarterly. or, if you put it into a ten-year t-bill... \n\nhelen: morty, will you stop it! \n\nmorty: (determined) well, he's not getting away with this! \n\njerry: yeah? \n\nwendy (o.c.): wendy. \n\njerry: come on up. \n\nelaine: well, this is it. shall i go get kramer? \n\njerry: no no, he'll come in. well, this is gonna be my first opportunity to not kiss her hello. \n\nelaine: what is the big deal about putting your lips on somebody's face? \n\njerry: it's the obligation, you know? as soon as this person comes in, you know you have to do this. i mean, if you could, say, touch a breast as part of the kiss hello, then i think i could see the value in it a little better. \n\nelaine: how 'bout an intercourse hello? how would that be? \n\njerry: elaine, now you're being ridiculous. \n\nelaine: (indicating) that's her. that's her. \n\nelaine/wendy: hi/hey. \n\njerry: (muffled) hi wendy. \n\nwendy: oh, hi jerry. \n\njerry: (muffled) would you like something to drink? \n\nwendy: sure. \n\njerry: (muffled) there you go. \n\nwendy: (taking the bottle) ah. \n\njerry: oh, look at that. i'm almost outta klondike bars. \n\njerry: so, how's everything going? \n\nwendy: oh, okay. oh, your friend george came by the office the other day, and then yesterday he cancelled on me. \n\njerry: oh, yeah, he had to take his mother to the chiropodist. \n\nelaine: oh, you hear that? that must be kramer. \n\nkramer: hey! jerry! \n\njerry: c'mon, that's not fair! \n\nkramer: i told you i was gonna get it. \n\njerry: no, c'mon kramer. (crossing to kramer) gimme that picture. \n\nkramer: (holding the picture away from jerry) aagh. no no no no no. \n\njerry: (throws up his hands) alright, fine. put my picture up. what do i care? \n\nelaine: uh, kramer. kramer, i'd like you to meet my friend wendy. \n\nkramer: oh, hello. \n\nwendy: (holds out her hand) hi. \n\nkramer: (shaking hands) yeah. \n\nkramer: (points) you know, i really like that hairdo. \n\nwendy: (flattered) oh. thank you. i actually was thinking it might be time for a change. \n\nelaine: (hopeful) oh, you were? \n\nwendy: well, i... \n\nkramer: (interrupting) oh, no no no. you don't wanna do that. no no. nobody wears it like that. \n\nelaine: kramer, if she wants to change her hair... \n\nkramer: no, no. you'd be a damn fool to change it. it's very becoming. \n\nwendy: oh, well. \n\nwendy: (laughs, flattered) oh, ho. \n\nwendy: so, who's that friend of yours? that guy that came in. \n\nelaine: oh, kramer. \n\nwendy: yeah. does he have a girlfriend? \n\nelaine: you wanna go out with him? \n\nwendy: well, why not? \n\nelaine: well, it's just that... uh, i don't... \n\nwendy: what, is there anything wrong with him? \n\nwendy: elaine? \n\nelaine: i'm just thinking about the question. \n\ngeorge: you know, my arm feels a lot better. that wendy really knows her stuff. (he writes out a cheque) \n\nreceptionist: (perky) she is super. same time tomorrow. \n\ngeorge: (tearing out cheque) yeah, same time. (hands over cheque) there you go. \n\nreceptionist: oh. ah, you owe a hundred and fifty. \n\ngeorge: what for? \n\nreceptionist: well, you cancelled on tuesday, and our policy is \"twenty-four hours notice, for all cancellations\". \n\ngeorge: (agitated) well, i, i couldn't come. i, i had to drive my mother to, to the chiropodist. \n\nwendy: what's the problem? \n\ngeorge: (harassed) are you aware that i'm being charged for tuesday's appointment? i had to take my mother to the chiropodist. \n\nwendy: well, i'm sorry, that's our policy. \n\ngeorge: (after wendy and to the receptionist) oh, you have a policy! (to the world at large) the delicate genius has a policy! george heads for the door. \n\nreceptionist: so. will you be here tomorrow? \n\ngeorge: well, it's less than twenty-four hours, so i guess i have to! \n\nkramer: hey! (indicating photos) so what d'you think? you like it? \n\njerry: oh my god! look at that picture, it's terrible... \n\njerry: ...you can't put that picture up. \n\nkramer: well, it's not a beauty contest. it's just a way for people to get to know one another. \n\nsteve: hey cosmo. \n\nkramer: hey... \n\nkramer: ...steve. (to jerry) ah, you see? \n\nelaine: hey kramer, my friend wendy wants to go out with you. \n\nkramer: (interested) well, how do you do? \n\nmary: hello, (finds the right photo) jerry. \n\njerry: oh. hello, uh (looks for and finds the photo) mary. \n\nmary: you know, i've seen you so many times and now we can finally talk to each other. \n\nkramer: (keen) what was i telling you? isn't this nice? \n\njerry: (not really) yeah. \n\nmary: jerry. you know, could you help me with a package? \n\njerry: oh, sure, yeah. \n\nmary: thank you. \n\njerry: oh, no! \n\njerry: you see? that's just what i need. more kissing! \n\nelaine: (laughs) hee, hee, hee. hee hee hee... \n\njerry: what is so funny? \n\nelaine: nothing, nothing. (laughs out loud) \n\njerry: hello. oh, hi mom. (listens) what? oh my... he didn't?! he couldn't! (listens) alright, i will. (listens) okay, bye. \n\njerry: (aghast) uncle leo put nana in a home! \n\nelaine: why? \n\njerry: (suspicious) i don't know. maybe to keep her quiet. \n\njoan: hi jerry. (she kisses jerry) mmmwah. \n\njerry: (not as eager) hi joan. \n\njoan: how you doing? \n\njerry: pretty good. \n\njoan: just pretty good? not great? \n\njerry: okay, great. \n\njoan: are you happy? \n\njerry: oh, i'm delighted. \n\njoan: okay. have a nice day. \n\njerry: you too. \n\nlouise: hi jerry. \n\njerry: hi, louise. \n\nkramer: hey. \n\njerry: ah, well. thank you very much! \n\nkramer: for what? \n\njerry: (agitated) for putting my picture up on that wall! i'm like richard dawson down there now. and every person i see engages me in this long, boring, tedious, conversation. i can't even get out of the building! \n\nkramer: you should be thanking me for liberating you from your world of loneliness and isolation. now, you're part of a family. \n\njerry: family? \n\nkramer: yeah. \n\njerry: you think i want another family? my father's demanding my uncle pay interest on fifty dollars he was supposed to give my mother in nineteen-forty-one, and my uncle put my nana in a home to try and shut her up! and i tell you another thing, cosmo kramer, whatever you wanna be called. the kissing thing is over. there's no more kissing, and i don't care what the consequences are. \n\nreceptionist: oh, hi. mister costanza, we were trying to get in touch with you. wendy can't make her appointment. \n\ngeorge: what d'you mean? \n\nreceptionist: she had some personal affair she had to attend to. i left a message on your machine. you didn't get it? \n\ngeorge: when did you leave the message? \n\nreceptionist: few hours ago. \n\ngeorge: (pointedly) oh, i'm sorry, i require twenty-four hours notice for a cancellation. now, as i see it, you owe me seventy-five dollars. \n\nreceptionist: look, mister costanza... \n\ngeorge: will that be cash, or cheque? \n\nwendy: i am really glad i took the day off. \n\nelaine: oh, yeah, there's nothing better than skiing. \n\nwendy: yeah. i hope my clients weren't too upset. \n\nelaine: ugh, the hell with 'em. \n\nelaine: what're you stopping here for? \n\nwendy: i'm dropping you off. \n\nelaine: (pointing) oh, no, i'm three more blocks. \n\nwendy: yeah, but if i take you to your door, then i have to go all the way around central park west, back to columbus, you know it's all one way... \n\nelaine: yeah, but it's only three blocks. \n\nwendy: right. it's only three blocks. \n\nelaine: (unbuckling her seatbelt) alright, well... \n\nelaine: she'd driven me a hundred and twenty miles and, all of a sudden, three blocks from my door, she decides this trip is over. isn't that strange? \n\njerry: yes, it's very strange. very strange. \n\nelaine: i've never heard of anything like this. i mean, it's almost as if i was hitch-hiking and she says \"well, this is as far as i can take you.\" \n\njerry: i tell you. if you were hitch-hiking, you'd never get into a car with someone with a hairdo like that. \n\nelaine: i had to carry my skis, and my boots and my poles. i think i pinched a nerve in my shoulder. \n\njerry: you should have her work on it for you. \n\nelaine: yeah, alright, i gotta go. \n\nmar: hi jerry. \n\njerry: hi mary. \n\njerry: uh, listen. i decided i can't kiss hello anymore. i'm sorry. it's nothing personal.... \n\njerry: ...it just makes me a little uncomfortable and i can't do it. i'm sorry. \n\nlou: hi jerry. \n\njerry: hi louise... \n\njerry: ...i was just telling mary how i'm not gonna be doing the kiss hello thing anymore. (continues backing away) i'm sorry. i just can't do it. it's nothing personal, it's just i'm not really able to do it and uh, i'm sorry. \n\njerry: (as the elevator doors close) thank you for your cooperation. \n\njerry: hello. \n\nhelen (v.o): jerry? \n\njerry: hi mom. so, what's happening with uncle leo? is he paying you? \n\nhelen: well, he said no. he said we had no proof. \n\nmorty: no proof? we'll get him. he's a crook, sooner or later, he'll slip up. \n\nhelen: uh, anyway, i want you to go check on nana at the home. \n\njerry: okay, i will. \n\nmorty: d'you realise, an above-average performing growth mutual fund for fifty-three years... \n\nkramer: what's up? \n\njerry: (locking his door) oh, i gotta go visit my nana in the nursing home. \n\nkramer: oh. \n\njerry: hey, kramer, look at this. \n\njerry: look at my picture! \n\njerry: i've been defaced! \n\nkramer: hey, don't you worry buddy. i made double prints. \n\njack: hey. hi cosmo. \n\nkramer: oh, hey, jack. how you doing? \n\njerry: hi jack. \n\njerry: hey, julio. i was wondering, could you get to that shower today, you think? \n\njulio: oh, i see. when you need something done, you're very friendly to people, huh? \n\njerry: (defensive) no no, that's not true! \n\njulio: (accusing) well, i think it is! it's a big building, seinfeld, maybe i'll get to it someday. after i take care of the people who're civil to each other. \n\nnurse: yeah, she's upstairs, playing cards. \n\njerry: you know, she really doesn't belong here. my uncle put her here, because he's trying to prove he doesn't owe my mother fifty dollars. \n\nnurse: well, she seems very happy. she met an old friend who used to live next door to her. \n\njerry: buddy? \n\nnurse: yes, that's his name. he's right over there. \n\nwendy: (smiling) i'm sorry, i don't owe you anything. i had some personal business that day. \n\ngeorge: (irascible) oh, i see. so your time is more valuable than mine. is that it? you're a delicate genius! \n\nwendy: a delicate genius? \n\ngeorge: elaine? \n\nelaine: (surprised) george! \n\ngeorge: (leaving) hah. good luck. \n\nwendy: what's going on? \n\nelaine: (feeling her arm) wendy, i injured my shoulder, wednesday, when you dropped me off and i had to carry my skis, and my boots, and my poles and everything, all the way home. i'm, i'm having trouble lifting my arm. do you think you could give me some treatment? \n\nwendy: oh sure. you have insurance, right? \n\nelaine: (shocked) insurance? you're charging me? \n\ngeorge: wednesday? that's your personal business?! (stalks over to the counter) skiing?! (angry) so let people suffer, while you're shushing all over a mountain? \n\nwendy: how did you hear that? \n\ngeorge: i hear everything. \n\nwendy: i mean, why don't you two just take your business elsewhere, hmm? \n\nelaine: oh, huh huh, that is a good idea. c'mon george. \n\ngeorge: yeah. let's go. \n\nelaine: (pointedly) and you know, you might wanna do something about that hair. \n\nwendy: why, what's wrong with my hair? \n\nelaine: huh, i think it's a little old-fashioned. don't you? (to receptionist) uh, tell her. \n\nreceptionist: she's right. \n\njerry: so you were with him that day at the track? \n\nbuddy: oh yeah. he won a thousand dollars. his son was there too. \n\njerry: leo? \n\nbuddy: yeah, that's it. leo. ooh, what an obnoxious little kid. he used to steal my soda bottles. and cash 'em in for the deposits, uh? \n\njerry: is that so? \n\nbuddy: and, after your grandfather hit the daily double, he gave him a hundred dollars, and told him to give fifty to his sister. his sister? why i tell you he shoulda give it to me for all the bottles he took! \n\njerry: well, that's very interesting. \n\njerry: (standing) uncle leo! i just met an old acquaintance of yours. (indicates buddy) you remember buddy. he just told me quite a story about you and grandpa at the track. \n\nleo: (defensive) one second... \n\njerry: (with a triumphant point) you're busted! \n\njerry: hey, steve. how you doing? \n\njerry: hey, jeff. what's happening? \n\njerry: mary! oh, mary! give us a kiss. \n\njerry: don't be like that, mary. c'mon, i made a mistake! \n\nmary: (contemptuous) look, why don't you do everybody a favour, and just get out of this building? (angry) nobody wants you here. nobody! \n\njeff: hi mary. \n\nmary: hi jeff. how are you? \n\nmary: hi pete. how you doing? \n\npete: hey, let's go get some coffee. \n\njeff: great idea. \n\nmary: oh, that'd be great. \n\njerry: oh, paul, could you hold that door... \n\nkramer: hi. \n\njerry: hey. could i use your shower? \n\nkramer: what, again? you took one this morning. \n\njerry: (pleading) i got a date. c'mon, please. \n\nkramer: i know but i... (waves toward the interior of his apartment) little problem. \n\nkramer: (leaning to look round kramer) wendy here? \n\nkramer: no no no. she changed her hairstyle, (pulls a face) it's terrible. no, we're done. \n\nguy: i'll go get some more beer. \n\nkramer: oh yeah, yeah, great. (calling after the guy) and get some of those blue corn chips. \n\nkramer: hey. \n\nstefanie: hi cosmo. \n\nkramer: hi. \n\nstefanie: (kisses kramer hello) mmmwah. \n\nkramer: ooh, i like that. \n\njerry: (impressed) who's that? \n\nkramer: stefanie. 2-g. \n\njerry: oh man. looks like you got quite a few people here. \n\nkramer: yeah yeah. well uh, you know, i'd invite you in, but uhm... you know. \n\njerry: (rueful acceptance) oh, yeah, i understand. \n\ndoorman: whoah, whoah, whoah. (rises and turns to jerry) may i help you? \n\njerry: (indicates with his thumb) yeah, i'm just going up to see elaine benes. \n\ndoorman: (unfriendly smile) benes? (moves toward jerry) no-one here by that name. \n\njerry: oh, she's uh, she's house-sitting for mr. pitt. \n\ndoorman: oh. house-sitting, mmm. \n\njerry: yeah. \n\ndoorman: what're you, the boyfriend? here for a... quickie? \n\njerry: can i just go up? \n\ndoorman: oh, i get it. why waste time making small talk with the doorman? i should just shut up and do my job, opening the door for you. \n\njerry: how 'bout those knicks? \n\ndoorman: oh, i see. on the sports page... \n\njerry: yeah. \n\ndoorman: ...what makes you think i wasn't reading the wall street page? oh, i know, because i'm the uneducated doorman. \n\nkramer: so, you think your parents'll get back together? \n\ngeorge: i hope so. i can't take him living with me much longer. he makes this kasha, it stinks up the whole house. \n\nkramer: hey, george, stick 'em up. \n\ngeorge: what? \n\nkramer: for these german tourists. pretend that i'm robbing you. \n\ngeorge: why? \n\nkramer: so these people can go back home and tell their friends they saw a real new york mugging. it'll give them a thrill. \n\nkramer: awright, hands up, porky! \n\nkramer: that's it. now, gimme your wallet. got it in here, huh, fat boy! \n\nkramer: (aggressive) is that all you got?! hah? is that all you got?! \n\ngeorge: alright, that's enough. \n\nkramer: i'll tell you when it's enough! (he releases george) alright, now you better not say anything, or i'll stalk you! \n\nelaine: where've you been? we're gonna miss the movie, let's go. \n\njerry: i am not going back down there. i can't face that guy again. \n\nelaine: what guy? \n\njerry: the doorman. i don't wanna play anymore of his mindgames. what time does he get off? \n\nelaine: six. but then the night doorman comes on. he's much scarier. (scary noise) whugh! (laughs) ha-ha. \n\njerry: well, it's almost six now. can't we just wait til he goes home? \n\nelaine: (unhappy) i... \n\njerry: we'll still make the movie. \n\nelaine: (accepting) okay, okay. \n\ngeorge: what'd you do today, dad? \n\nfrank: today, i went record shopping in greenwich village. i bought this record, but i can't seem to find the hi-fi. \n\ngeorge: i don't have a hi-fi. \n\nfrank: didn't i give you my old record player? \n\ngeorge: (leaving to the bedroom) i gave it to cosmo. \n\nfrank: cosmo? who's cosmo? \n\nkramer: i'm cosmo. \n\nfrank: well, i want it back. i wanna listen to that cha-cha record. \n\nkramer: (little dance) one-two, cha-cha-cha. \n\ngeorge: (coming back in) alright, alright. can we go out and eat? \n\nfrank: (putting down the bowl) lemme change my shirt. \n\nelaine: jerry, it's six. (claps her hands) let's go. \n\njerry: uh, that doorman's still milling around outside. he's very peculiar. \n\nelaine: no, don't... \n\njerry: (picks up phone) hello? (listens) oh, hi mr. pitt. \n\nelaine: (quietly) give that to me. \n\nelaine: (taking the phone) hello mr. pitt. how's scotland? \n\nmr. pitt: (concerned) elaine, are you having a party? \n\nelaine: a party. oh no, that was just my stupid friend jerry. \n\njerry: alright, he just left. we can go. \n\nmr. pitt: (stern) because there's to be no entertaining while i'm gone. \n\nelaine: believe me, we're not entertained. we were just leaving. (to jerry) oh, can you grab those empty bottles for me. \n\nmr. pitt: i need to know what's in the mail. \n\nelaine: oh, well, mr. pitt, there's really nothing that can't wait. we're trying to catch a movie. \n\nmr. pitt: (resolute) well, you better catch the later show, because i need to know what's in the mail. \n\nelaine: alright. (to jerry, upset) i can't go. \n\nelaine: ...uhm, the new time magazine. the new people... \n\nmr. pitt (o.c.): (piqued interest) oh, who's on the cover? \n\ndoorman: hey, buddy. \n\njerry: (surprise) you? wh...what're you doing here? you work at this building too? \n\ndoorman: ah, sure. poor doorman has to work two jobs to put food on the table for mother and baby. (supercilious) no, i live here. that's okay, isn't it? \n\njerry: so you work all day as a doorman at one building. then you come home and stand outside your own building? \n\ndoorman: you got a problem with that? \n\njerry: look, i'm not going in your building. i really don't have to talk to you. goodbye. \n\ndoorman: (calling after jerry) you really think you're better than me, don't you?! \n\ngeorge: my father opened his shirt... \n\njerry: yeah, and? \n\ngeorge: (nods to kramer) tell him, kramer. \n\nkramer: (matter of fact) he had breasts. \n\njerry: what d'you mean, breasts? \n\ngeorge: (waves his hands) big breasts! \n\njerry: so what? a lot of older men have that. \n\nkramer: no, not these. these were real hooters. \n\ngeorge: i was throwing up all night. it was like my own personal crying game. \n\nkramer: well, maybe you're gonna get 'em too, george. \n\ngeorge: (worried) yeah, that's right. what if it's a genetic thing, like father like son? \n\njerry: but, your father's not bald. \n\ngeorge: no, no no. that skips a generation. the baldness gene comes from your grandfather. \n\njerry: then i suppose the bosom gene comes from your grandmother. \n\nkramer: you know, frank can't be too comfortable with those things clanging around. he should wear something for support. \n\ngeorge: you mean like a bra? \n\nkramer: a bra is for ladies. i'm talking about a support undergarment specifically designed for men. \n\njerry: boy, that brain never stops working, does it? \n\nkramer: i tell you, i'm gonna go noodle with this. \n\nbuxom woman: (indicating her shirt with her finger) hey, we're twins. \n\ngeorge: (thinking she means the breasts) what!! \n\nbuxom woman: our shirts. they're the same. \n\ngeorge: oh, huh, imagine that. \n\nelaine: (to jerry) what? what'd you say to the doorman? \n\njerry: what? nothing. \n\nelaine: (sitting beside jerry) he claims that you followed him home, and started harassing him. \n\njerry: what has this guy got a personal vendetta with me?! what'd i do to him? 'cos i asked him about the knicks? \n\nelaine: hey, did you make the movie? \n\njerry: no. \n\nelaine: you wanna go tonight? you can pick me up. \n\njerry: alright. can we go to a later show, so he's off his shift when i come by? \n\nelaine: ugh. so now we have to rearrange our lives to avoid the doorman? \n\njerry: yes, we do. \n\nelaine: what is wrong with george? \n\njerry: he's... trying to get something off his chest. \n\ngeorge: (agitated) alright, i gotta try and talk my mother into taking him off my hands. \n\ndoorman: help you? \n\njerry: (jumps in surprise) hoh! what're you doing here? you're supposed to be gone. \n\ndoorman: i traded shifts with the night doorman. he had some personal affairs to attend to. you see, my fellow doorman and i watch out for each other. we don't stab each other in the back, like people in your world. \n\njerry: (trying to ease the tension) look, i don't want any trouble. i don't have a doorman in my building. i guess i'm just not used to talking to them. i'd really just like to be friends. \n\ndoorman: you wanna be friends? \n\njerry: i'd like to be. \n\ndoorman: then watch the door for a minute, would you? \n\njerry: what? \n\ndoorman: yeah, i just wanna run and get a beer. i'll be back in a minute. \n\njerry: wha...? wai... wait a second. what do i do? \n\ndoorman: it's not brain surgery. you open the door for people who live here. and, if they don't live here, don't let them in. (takes off his hat) here. (putting it on jerry's head) wear that. \n\njerry: oh. \n\njerry: (to the man in the elevator) hey, hey. wait a second. hey! hello! \n\njerry: hey, hey, wait a second. you live here? \n\nmr. green: (indignant) of course i live here. i've lived here for twenty years. now, if you don't let me in, i'm going to call the police and have you arrested. \n\njerry: (after the guy) you think you're better than me? \n\ndelivery guy: (indicating) you have to sign for it. \n\njerry: oh, right. \n\ndelivery guy: (with a smile) hey, how 'bout those knicks, huh? \n\njerry: (dismissive) yeah, yeah, yeah. \n\nkramer: hey. i uh, brought back your record player, huh. \n\nfrank: thank you, kramer. \n\nkramer: yeah. \n\nfrank: (indicating a chair) put it over there. \n\nkramer: so, how you feeling? \n\nfrank: tired. \n\nkramer: uh huh. your back hurt? \n\nfrank: how did you know? \n\nkramer: well, it's obvious, you know. you're carrying a lot of extra baggage up there. \n\nfrank: (looks down, and indicates his chest) up here? \n\nkramer: oh, yeah. top floor. (sits beside frank) listen, frank, have you ever considered wearing something for support? now, look at this. (reaches into his pocket) mind you, this is just a prototype. \n\nfrank: you want me to wear a bra?! \n\nkramer: no, no. a bra is for ladies. \n\nkramer: meet, the bro. \n\nestelle: so, is your father excited about coming home? \n\nestelle: george? \n\ngeorge: (broaching a subject) hey mom. what kind of woman was grandma? \n\nestelle: all of a sudden you're interested in your grandmother? \n\ngeorge: well, you know. you get to a certain point, you wanna know about your roots. \n\nestelle: she was a lovely woman. \n\ngeorge: yuh. what about physically? \n\nestelle: physically? \n\ngeorge: yeah, you know, what'd she uh, look like? \n\nestelle: well, you've seen pictures. \n\ngeorge: (to himself) you can't tell much from those pictures. \n\nestelle: so what? \n\ngeorge: was she uh, was she a big, uh woman? \n\nestelle: big? no, just my height. \n\ngeorge: bosomy? \n\nestelle: bosomy? you wanna know if your grandmother was bosomy?! \n\ngeorge: (trying to laugh it off) no, i was just wondering. the information could be relevant. \n\nestelle: where do you get your genes from?! \n\ngeorge: (to himself) that's what i'd like to know. \n\nelaine: i can't believe you left your post. \n\njerry: he left me there. you see the mind games? \n\nelaine: (to one of the tenants) hey, what's up? what's going on here? \n\ntenant 1: somebody stole the couch out of the lobby. \n\ntenant 2: where's the doorman? how come someone wasn't watching the door? \n\nelaine: (quietly to jerry) jerry, let's get out of here. \n\njerry: yeah. \n\nestelle: (shocked) oh, my god! \n\nelaine: what were you doing watching the door anyway? \n\njerry: he asked me to. we were getting along. \n\nelaine: (thinking) you know, my fingerprints are all over this. that doorman knows you're a friend of mine. he'll tell that co-op lady, she'll tell mr. pitt... jerry, i'm in this too deep. \n\njerry: don't you find it odd that as soon as he leaves, the couch gets stolen? maybe he's setting me up! \n\nelaine: (taking command) alright, shut up. shut up. just let me think. i gotta think. we gotta get our story straight. \n\njerry: alright, well what if we say... \n\nelaine: alright, (claps hands) here it is. this is what we'll tell 'em. you came to pick me up... \n\njerry: i came to pick you up. \n\nelaine: yeah. that's what i just said. \n\njerry: i know. i was just... \n\nelaine: yeah, i know what you were just. it's not helping. \n\njerry: alright, well. just, start again, then. \n\nelaine: okay, you came to pick me up at... \n\njerry: right. \n\nelaine: you see? again. \n\njerry: what? i said right. \n\nelaine: alright, you came right upstairs, without talking to the doorman. \n\njerry: but the doorman's gonna say that i was there. \n\nelaine: (intense) so what? no-one's gonna believe a doorman! \n\njerry: but i don't know if this is gonna work. \n\nelaine: (aggressive, with finger pointing) just stick with the story. we'll be fine. let me do the talking! \n\njerry: okay. \n\nelaine: good. now fix me a drink. \n\nkramer: how's that feel? \n\nfrank: this feels very comfortable. \n\nkramer: you see? \n\nfrank: i feel ten years younger. \n\nkramer: yeah, and your posture's a lot better. look at you. \n\nfrank: and i can breathe easier, too. \n\nkramer: i told you! now, frank, listen. here's what i'm thinking. now, you have a friend in the bra business, right? \n\nfrank: of course. sid farkus. he's the best in the business. \n\nkramer: (claps his hands) here's our chance. what d'you say? it'll be me, you and the bro, bro. \n\nfrank: let's do it! \n\nfrank: except, we gotta do something about the name. \n\nkramer: why, what's wrong with bro? \n\nfrank: no, bro's no good. too ethnic. \n\nkramer: alright, you got something better? \n\nfrank: how 'bout uh... the mansiere? \n\nkramer: mansiere? \n\nfrank: that's right. a brassiere for a man. the mansiere, get it? \n\ngeorge: (upset) well, you've scared her off. we may never see mom again. \n\nfrank: hey george, what d'you like better? the bro, or the mansiere? \n\ngeorge: dad. we need to talk. \n\ndoorman: i had to use the bathroom, so i asked this guy to watch the door for a few minutes. \n\nmrs. payton: why should i believe you? \n\ndoorman: (indicating elaine) actually, it was her friend. \n\nmrs. payton: i was just speaking to the doorman here, about the couch robbery. \n\nelaine: oh really? (skeptical) the doorman. and, pray tell, what did the doorman say? \n\nmrs. payton: he said he asked a friend of yours to watch the door. \n\nelaine: (dismissive) oh, my. well, the doorman certainly has a wild imagination, doesn't he? \n\ndoorman: well... what do we have here? perhaps miss benes could explain why a jerry seinfeld signed for this package (handing the package to mrs. payton) at the exact same time the couch was stolen. \n\nelaine: (in a rush) he never watched a door before, mrs payton, he didn't know how to do it. (pleading) you know, he's a comedian, mrs payton, they don't know how to do anything. \n\nelaine: (desperate) don't you see what's going on here? he set us up. he's playing all these mindgames. \n\njerry: you're saying i'm responsible for the couch? \n\nelaine: (worked up) there was nothing i could do. he said he had a federal express slip with your signature on it. \n\njerry: (livid) diabolical. he thought of everything. he was setting me up from day one! \n\nelaine: is it possible we were victims of a sting? \n\njerry: i'm sure he's having a good laugh over this with his doorman buddies. \n\ndoorman 2: so, you didn't even (indistinct) watch the couch? \n\ndoorman: no. i was just messing with his head. \n\ndoorman 2: and they think they're better than us? \n\nelaine: anyway, jerry... jerry? \n\nelaine: we have to replace the couch. \n\njerry: now we have to buy a new couch?! \n\ngeorge: (crafty) not necessarily. why don't you take back the couch you gave me? \n\njerry: the one with the poppie stain?! \n\ngeorge: yeah, sure. (big smile) then my father will have no place to sleep. (snaps fingers) he's gotta move out. \n\nelaine: but it's got a pee-stain on it. \n\ngeorge: no, the cushion's turned over. \n\nelaine: (not sure) i guess. \n\ngeorge: (enthusiastic) yeah. you get a couch. i get rid of my father. it couldn't be more perfect! \n\nkramer: now, it's called the bro. \n\nfrank: or, the mansiere. \n\nkramer: yeah, but i prefer the bro. \n\nfrank: i like mansiere. \n\nfarkus: well, i have to tell you, it's a very interesting idea. \n\nkramer: yeah. \n\nfarkus: you know, selling bras exclusively to women, we're really only utilising fifty percent of the market. \n\nfrank: (to kramer) that's what we figured, huh? \n\nkramer: (to frank) i told you. \n\nfarkus: and, to be perfectly frank, i've always felt i could use some support. i know, when i'm wearing banlon, there appears to be some jiggling. \n\nfrank: (vehement) i wouldn't be caught dead in banlon. \n\nfarkus: (indicating the bro) so uh, what d'you see in the back? hooks? velcro? what? \n\nkramer: uh. \n\nfrank: definitely velcro. \n\nkramer: say you're getting intimate with a woman uh, you don't want her fumbling and struggling back there. \n\nkramer: i think we've all experienced that. \n\nfarkus: summer nights. \n\nkramer: (pointing at farkus) very funny. \n\nfarkus: well, i still have to talk about this to mr. degrunmont... \n\nkramer: of course, yes. \n\nfarkus: ...but, barring any unforeseen developments, gentlemen, i think we're sitting on a winner. \n\nfarkus: (sympathy) frank, i wanna tell you how sorry i am to hear about you and estelle separating. \n\nfrank: oh, thank you, sid, but that's all in the past. i'm ready to move on. \n\nfarkus: (thoughtful) i've always been very fond of estelle. beautiful woman. i uh, i hope you don't think uh, this is out of line, but would it be okay with you, if i were to ask her out? \n\nfrank: (anger) you wanna go out with my wife?! (rage) where do you get the nerve to ask me something like that?! \n\nfarkus: oh, no, frank, i was just saying... \n\nfrank: i know what you're saying, and i know what you're thinking!! \n\nfarkus: no, frank... \n\nfrank: c'mon, cosmo, i'm not doing business with this guy. \n\nkramer (o.c.): frank! \n\ngeorge: jerry took the couch back. \n\nfrank: he took it back? didn't you tell him i was using it? \n\ngeorge: oh, i pleaded with him. \n\nfrank: where am i supposed to sleep? \n\ngeorge: well, i took the liberty of packing your things. (gleeful) mom's coming to get you. \n\nkramer: i thought jerry didn't want that couch, because of the stain? \n\nfrank: what stain? \n\nkramer: oh, you didn't notice? it has a pee-stain. \n\nfrank: (disbelief) you had me sleeping on a pee-stained couch? \n\ngeorge: (light) no. no, no, no. the cushion was turned over. \n\nfrank: (anger) but, the very idea. you had me lying in urine!! \n\ngeorge: ah! there's mom, there's mom. \n\nestelle: is it safe to come in? \n\ngeorge: oh, of course. (motioning estelle to enter) of course. \n\nestelle: you're not having any of your transvestite parties? \n\nfrank: will you stop it? \n\nestelle: (to kramer) i lived with him for forty years, i never saw him trying on my underwear. as soon as he leaves the house, he turns into j. edgar hoover! \n\nfrank: here, cosmo... \n\nkramer: oh, hey. \n\nfrank: ...you can have the hi-fi. (hands it over) i don't need it now... \n\nkramer: awright, i got it. \n\nfrank: ...i got one at home. \n\nestelle: alright, let's go. \n\nfrank: we'll go out for dinner tonight. \n\nestelle: i can't tonight, i'm busy. \n\nfrank: what d'you mean, busy? \n\nestelle: i'm having dinner with someone. \n\nfrank: with whom? \n\nestelle: sid farkus. \n\nfrank: (anger) sid farkus?! you're not having dinner with a bra salesman. \n\nestelle: hey, he only sells them. he doesn't wear 'em. \n\nfrank: okay, that's it! i'm not coming home! \n\ngeorge: (upset) but you can't stay here. there's no place to sleep! \n\nfrank: we'll work something out. \n\ngerman woman: stop him! ja, ja, ja, it's him! \n\ngerman woman: stop that man! it's him. \n\ngerman woman: somebody, stop him! please, quick. stop, it's him. i know, i know. help. stop him. \n\nhorst: hey, hey. (pointing) that record player is not yours. \n\nkramer: now, look. somebody gave it to me. \n\nhorst: you're a thief. we have proof. \n\nhorst: what is that? \n\nkramer: the first upper-body support undergarment, specifically designed for men. \n\nhorst: how does it connect in the back? with a hook? \n\nkramer: oh, no, no. (demonstrates) here, velcro. \n\nhorst: (to the portly german) ooh, (indistinct german) ...keine problem, ah? \n\nhorst: is gut, ja? \n\nmrs. payton: well, i suppose it'll have to do. \n\nelaine: it's a beautiful couch. \n\njerry: it's hardly been used. \n\njerry: poppie! \n\npoppie: oh, hello, jerry. \n\njerry: what're you doing here? \n\npoppie: visiting my friend. \n\njerry: ohh. hey, how you feeling? \n\npoppie: oh, much better, much better. the doctors say i cannot have no aggravation. \n\njerry: hmm. \n\npoppie: so, i sell the restaurant, uh? i just take it easy. see, if i get excited, 'ats aggravated my condition. the last time i got aggravated, was in the restaurant. with your friend. \n\npoppie: she start the big fight, about abortion. \n\npoppie: it's you! it's you! \n\nelaine: wha...? \n\npoppie: you! i... i gotta sit down! \n\njerry: no, poppie! no!! \n\nfrank: kasha? \n\ngeorge: no. thanks, dad. \n\ngeorge: \" that guy was amazing, he could dunk and he was my height...what was his name again?\" \n\njerry: \"jimmy\" \n\ngeorge: \"jimmy, right.\" \n\njerry: \"i dunno how you could forget . he kept reffering to himself in the third person. \"jimmy's under the boards. jimmy's in the open. jimmy makes the shot.\" \n\ngeorge: \"ah! your just mad 'cause we beat ya.\" \n\nkramer: \"jerry it's my fault .i couldn't make a shot. these losses they stay with me. they (?) jerry. now this is gonna plague me.\"( puts on aftershave and cries out) oh! mother!!!\" \n\ngeorge: \"hey! jimmy!!! ha ha ha........great game.\" \n\njimmy: \"oh yeah.......jimmy played pretty good.\" \n\ngeorge: \"hey you know , i felt we had like a synergy out there,you know, like we were really helping each other.\" \n\nkramer: \"what d'you got there?\" \n\njimmy: \"these?\" \n\nkramer: \"yeah\" \n\njimmy: \"these are jimmy's training shoes.\" \n\ngeorge: \"yeah,yeah yeah yeah! i've seen these.....they sorta ..they make your legs..stronger.\" \n\njimmy: \"oh yeah! jimmy couldn't jump at all before he got these. jimmy was like you (looks at george) \n\nkramer: \"they're plyometric.(sp?)\" \n\ngeorge: \"plyometric?\" \n\nkramer: \"yeah! they isolate the muscles. the muscle has to grow....or die.\" \n\ngeorge: (to jimmy) wh...where d'you get'em?\" \n\njimmy: \"jimmy sells'em.\" \n\ngeorge: \"you sell them?\" \n\njimmy: \"oh yeah! but jimmy's all out right now. moving to manhattan set jimmy back a bit.\" \n\ngeorge: \"hey listen, let me give you my card. it's got my home number on it. i want to buy the first pair when the next shipment comes in.\" \n\njimmy: \"all right\" \n\ngeorge: \"all right jimmy good talking to ya.\" \n\njimmy: \"jimmy'll see you around.\" \n\ngeorge: \"what day is today?....aw. ..tuesday! damn it. i shouldn't have worked out today. mr wilhem has called a big meeting and now i'm gonna be sweating through the whole thing.\" \n\njerry: \"why. you took a shower?\" \n\ngeorge: \"aahhrgh...it wouldn't take...... long pause, audience laughter) ten minutes from now, i'll be sweating all over again ,i can feel it. i'm a human heat pump!\" \n\nkramer: \"you should take cold showers.\" \n\ngeorge: \"cold showers? they're for psychotics.\" \n\nkramer: \"well i take 'em........they give me a whooooosh.\" \n\ngeorge: \"all right, i'll see you guys later.\" \n\njerry: \"aw right.\" \n\nkramer: \"so, you're heading home?\" \n\njerry: \"no...got dental appointment.\" \n\nkramer: \"ah! what.. tim whatley? \n\njerry: \"yeah!\" \n\nkramer: \"oh yeah.! i got a check up on thursday.\" \n\njerry: \"oh! how d'you like that?\" \n\nkramer: \"you know.. you really shouldn't brush 24 hours before seeing the dentist.\" \n\njerry: \"i think that's eat 24 hours before surgery.\" \n\nkramer: \"oh no, you got to eat before surgery, you need your strength.\" \n\nwilhelm: \"i called this meeting because we......have........a problem. for the last few months someone has been stealing equipment from the club. until recently it's been little things, y'know; bases, batting helmets, donuts, but two nights ago they pulled the big one. \" \n\nwilhelm: \"they took a pitching machine, a batting cage ,the in-field tarp and all of mr steinbrenner's vitamins.. now , we have reasons to believe it's an inside job.\" \n\ngeorge: (still puffing)\" whoa!!\" \n\nwilhelm: \"if anybody here knows anything about it i recommend strongly that...you come forward.\" \n\nreceptionist: \"dr whatley's running a little late. if you'd like to take a seat, i'll call you when he's ready.\" \n\njerry: \"all right.\" \n\nelaine: \"oh! okay. right. thanks mr pitt....'kay. ..goodbye.\" \n\nelaine: (to jerry) \"hey ! you want to go see \"the velvet fog\". \n\njerry: \"the velvet fog?\" \n\nelaine: \"yeah! mel torm, that's his nickname.\" \n\njerry: \"what the hell his a velvet fog.\" \n\nelaine: \"do you wanna go or not?\" \n\njerry: \"well , where is it?.\" \n\nelaine: \"he's performing at this amca benefit.\" \n\njerry: \"amca?\" \n\nelaine: \"able mentally challenged adults\" \n\njerry: \"naaaaaa...i can't watch a man sing a song.\" \n\nelaine: \"what are you..crazy?\" \n\njerry: \"they get all emotional , they sway. it's embarrassing.\" \n\nelaine: \"well, what am i gonna do for a date.?...oh! do you know that ..hemmm! blond guy who's always at the exercycle at the health club?\" \n\njerry: \"i don't think so.\" \n\nelaine: \"yeah yeah! he's really handsome with those...\" \n\njerry: (interrupting) \"elaine , i really don't...............pay much attention to men`s faces.\" \n\nelaine: \"you can't find beauty in a man?\" \n\njerry: \"no... i find them repugnant and unappealing.\" \n\nkramer: \"hey!\" \n\njerry: (pointing kramer) \"to wit\" \n\nkramer: \"what?\" \n\njerry: \"no ,elaine and i we're just discussing whether i could admit a man is attractive.\" \n\nkramer: \" hmm! oh! yeah. i'll tell you who is an attractive man; gorge will.\" \n\njerry: \"really!\" \n\nkramer: \"yeah! he has clean looks, scrubbed and shampooed and....\" \n\nelaine: \"he's smart....\" \n\nkramer: \"no, no i don't find him all that bright.\" \n\nkramer: \"so you got any cavities?\" \n\njerry: \"just one....gotta go back.....oh but get this. elaine, you will appreciate this. i'm sitting in tim whatley's waiting room...he's got a penthouse right out on the table.\" \n\nelaine: \"penthouse?\" \n\njerry: \"yeah!!! what is that? i mean isn't that sick. i mean , i'd be embarrassed to have that in my apartment.\" \n\nkramer: \"so what's wrong with that? \n\njerry: (outraged) he's a doctor!.i mean it's supposed to be like a sterile environment.\" \n\nkramer: \"so... did you take a look?\" \n\njerry: \"of course.... but that's got nothing to do with it.\" \n\nkramer: \"well i'll tell you i'm looking forward to my appointment on thursday. i might even get there a few minutes early.\" \n\ngeorge: \"hey\" \n\nelaine: \"hey! hey! listen ... do one of you guys know that ..that blond guy who's always on the exercycle at the health club. you know he's just really handsome?..\" \n\ngeorge: (head down low) i...i wouldn't know\" \n\nelaine: \"you know that just admitting a man is handsome doesn't necessarily make you a homosexual.\" \n\ngeorge: \"it doesn't help\" \n\nelaine: \"all right, i'm gone\" \n\ngeorge: \"i'll see you.\" \n\ngeorge: (to jerry) \"you know those shoes that jimmy had? i cut a deal with him. we're gonna import a case of them together.\" \n\njerry: \"what are you doing that for, you got a job\" \n\ngeorge: \"there's a lot of money in this.. he's got a proven sales method\" \n\njerry: \" yeah! what's that.\" \n\ngeorge: \"he jumps!\" \n\njerry: \"jimmy's got a record. jimmy's jumping for dollars. jimmt and george are gonna get rich.\" \n\ngeorge: \"will you stop with the jimmies\" \n\nkramer: \"hey! what's this?\" \n\njerry: \"kom pau(sp?\" \n\nkramer: \"(gasp_)......kom pau........\" \n\nelaine: (we hear what she thinks) look at me....look at mee!. come on. i'm stretching right in front of you. heeeey!! ...a smile. aah! we made contact, all right one more stretch and then go talk to him. \n\njimmy: \"you know...jimmy is pretty sweet on you.\" \n\nelaine: \"aaaaaahhh! he is?!\" \n\njimmy: \"oh yeah!. jimmy's been watching you....you're just jimmy's type.\" \n\nelaine: \"aaaaaaahhh! really?\"(giggles) \n\njimmy: \"jimmy's new in town. jimmy hem ..doesn't really know anyone.\" \n\nelaine: \"oh! well i'd like, like to get to know him.\" \n\njimmy: \"jimmy would like to get to know you.\" \n\nelaine: \"ha....\" \n\nwhatley: \"hey! kramer\" \n\nkramer: \"boy , you're looking sharp there tim.\" \n\nwhatley: \"yeah well....i do what i can. how've you been.\" \n\nkramer: \"euh.. fine , good , yeah! just been occupying myself with some of your....hem reading material.\" \n\nwhatley: \"so what'ill it be? novocaine?\" \n\nkramer: \"oh yes, yes indeed.\" \n\nwhatley: \"why don't we just clear a path first.\" \n\nkramer: \"yeah, yeah, lets do that.\" \n\nwhatley: \"you remember mr. thirsty.\" \n\nkramer: \"all right euhhm.....\" \n\njerry: \"ahh! you too with these?\" \n\nkramer: (still under the effects of the novocaine slurrs his words heavily) \"yeah h'amon board.\" \n\njerry: \"so what did tim say?\" \n\nkramer: \"wellhum....he th'aid i gotta cut out the ssssfkittles.\" \n\njerry: \"looks like he gave you some novocaine\" \n\nkramer: \"ohhh h'am loaded.\" \n\njerry: \"so what about the penthouse. did you ask him?\" \n\nkramer: \"well he said that humm.. you know.that it helps his pathients relax a little bit..and he's got a new polithy adults only.\" \n\njerry: \"adults only?\" \n\nkramer: \"yeah!!!\" \n\njerry: \"what the hell's going on over there?\" \n\nkramer: \"well you know its.. great. you know, no kids ..allowed. you don't have to watch your language.\" \n\njerry: \"you find you need to use a lot of obscenities at the dentist. \n\nkramer: \"he..he... when they pull that needle out i let the expletives fly.\" \n\njerry: \"hey! hey! watch it.!... you're drooling all over the floor. how much novocaine did that guy give you.\" \n\nkramer: \"well.. aye can't hold the water.\" \n\njimmy: \"oh yeah!! ... jimmy's ready.\" \n\nkramer: \"hey jimmy\" \n\ngeorge: \"ha..harrr.\" \n\njimmy: \"jimmy's got some new moves.\" \n\nkramer: \"go jimmy\" \n\njimmy: 'check jimmy out\" \n\njimmy: \"ooohhh!!!!! jimmy's down.\" \n\nparamedic: (missing a few words) ......was gonna be in traction.\" \n\njimmy: \"jimmy might have a compound fracture.. jimmy's going into shock!!\" \n\ngeorge: (angrily)\"why weren't you more careful with your drool!\" \n\nkramer: \"hey i'm doing the best i can!!!\" \n\njerry: \"why are you taking this so personally?\" \n\ngeorge: \"because if he can't jump. there goes my sneaker business!!\" \n\nkramer: (cries out) well i said i'm sorry.\" \n\njimmy: (as he gets taken out) \"jim....jimmy wont forget you kramer... jimmy holds grudges. let jimmy go......\" \n\nkramer: \"but i can't feel anything.\" \n\nkramer: \"hey taxi!!!.....taxi!!\" \n\nkramer: \"go ahead, go ahead you got it......(to the driver) he's got it.\" \n\ndeensfrei: (slowly) oh! please, go ahead take it \n\nkramer: \"no,no...you were here first.\" \n\ndeensfrei: no. no i..i insist. i'll grab the next one.\" \n\nkramer: \"lets share.. we share....awight\" \n\ndeensfrei: \"yes ! splendid. that's a great idea.\" \n\ndeensfrei: \"my name is arnold deensfrei. what is your name?\" \n\nkramer: \"eh!! cosmo kramer. nice to meet you\" \n\ndeensfrei: \"very nice to meet you cosmo. are you heading home? \n\nkramer: (like rainman)\"yeah! heading home.\" \n\ndeensfrei: \"good for you.....you are really independant.\" \n\nkramer: \"yeaheum ... you're not doing too bad yourself\" \n\ngeorge: \"argh!!..anyway...jimmy couldn't be here today so he asked me to fill in for him, and i'm sure that you'll be impressed at what can be accomplished after only a few short days of training.....yeah!\" \n\nkramer: (whose voice has returned to normal)\" the velvet fog!!!!\" \n\njerry: \"what about the velvet fog ?\" \n\nelaine: (as she comes in) \"what about the velvet fog?\" \n\nkramer: \"well...he's singing at a benefit and i'm gonna be sitting at his table.\" \n\nelaine: \"i'm going to that!\" \n\nkramer: \"i'm a guest of honor.\" \n\nelaine: \"what are you talking about?\" \n\nkramer: \"well this afternoon i shared a cab with this...a hum..deensfrei.\" \n\nelaine: \"yeah, yeah! arnold deensfrei, he runs the amca \" \n\nkramer: \"yeah! well ..that's the guy .he's organizing the dinner.\" \n\nelaine: \"i know that but why are you going?\" \n\nkramer: \"well, because we hit it off and he was very impressed with what i do.\" \n\nelaine: \"what you do!!. you don't do anything.\" \n\nkramer: \"well apparently i do something 'cause i'm sitting at the head table with mr. mel torm \n\nelaine: (pointing at the shoes) \"what are those?\" \n\nkramer: \"ehmm ..these are my vertical leap training shoes.\" \n\njerry: \"wait a second ..where you wearing those shoes in the cab?\" \n\nkramer: \"yeah! yeah! right after i left the y.\" \n\njerry: \"don't you see what's happened, he couldn't talk , he's wearing these shoes, he's drooling.\" \n\nkramer: \"what!!!\" \n\nelaine: \"he thinks you're mentally challenged.\" \n\njerry: \"well...........you know.....\" \n\nelaine: \"well ,what happens when you show up . he'll see that you're not.?\" \n\njerry: \"not necessarily because.....\" \n\nwhatley: \"sheryl, would you ready the nitro(???) please?\" \n\njerry: \"oh! where's jennifer today?\" \n\nwhatley: \"oh!! she's over at dr.cessman's office. we find it fun to swap now and then.\" \n\ngeorge: \"whhhoooo!!!!\"(taps on his desk loudly) \n\ngeorge: \"arrrrrrgh!! .. it's george.. oh! sports wholesaler. yeah. yeah. .. thanks for calling back. no , no , no still got the shoes, still got the shoes. lots of them. this is.. beautiful athletic gear.\" \n\ngeorge: \".....well. i'm sorry. call you right back.\" \n\nwilhelm: \"so george. have you heard anything about the missing equipment?\" \n\ngeorge: \"no!...not...nothing.\" \n\nwilhelm: \"george, there's nothing i hate more than a liar.\" \n\ngeorge: \"well...there's no room for someone like that in this organization.\" \n\nwilhelm: \"are you feeling all right george?\" \n\ngeorge: \"hemmm!.. fine!\" \n\nwilhelm: \"you look a little warm.\" \n\ngeorge: \"...it's the chicken\" \n\nwilhelm: \"you're a terrible liar george. look at you, you're a wreck!. you're sweating bullets.\" \n\ngeorge: \"it's the kom pau ... george likes his chicken spicy.\" \n\nelaine: \"....maybe you were still under the gas.maybe you were hallucinating you're coming out of the gas but you were still under the gas.\" \n\njerry: \"i don't think so. i think they were getting dressed and not only that; my shirt was out!!!\" \n\nelaine: \"your shirt was out?\" \n\njerry: \"i think so.\" \n\nelaine: \"well, what kind of shirt was it.?\" \n\njerry: \"you know! like a tennis shirt.\" \n\nelaine: \"oh! well ... you don't tuck those in?\" \n\njerry: \"sometimes i tuck'em sometimes i don't\" \n\nelaine: \"well. were you tucked?\" \n\njerry: \"i think i was tucked.!\" \n\nelaine: \"all right then say you were. i mean .. what do you think could have happened.?\" \n\njerry: \"i don't know but i was spitting out and rinsing like there was no tomorrow.\" \n\nelaine: \"ughhhh\" \n\njerry: \"is this guy a dentist or caligula?\" \n\nelaine: \"what are you gettin'?\" \n\njerry: \"i don't think i'm hungry\" \n\nelaine: \"okay...so you were violated by two people while you were under the gas. so what? you're single.\" \n\njerry: \" but i'm damaged goods now.\" \n\nelaine: \"join the club.\" \n\njerry: \"hey, by the way, did you ever call that guy from the health club.?\" \n\nelaine: \"oh yeah! jimmy.\" \n\njerry: \"jimmy? \n\nelaine: \"ahum!\" \n\njerry: \"that's the guy?\" \n\nelaine: \"yeah!\" \n\njerry: \"can't believe your going out with him...\" \n\nelaine: \"why?\" \n\njerry: \"i dunno. he's so strange.' \n\nelaine: \"how so?\" \n\njerry: \"did you notice he always refer to himself in the third person. jimmy can dunk. jimmy's new in town. jimmy we'll see you later.\" \n\nelaine: \"no no... that's not him. that's the guy who gave me... jimmy's number.\" \n\njerry: \"that's jimmy. that's the way he talks.\" \n\nelaine: \"i'm going to go see mel torm with him?\" \n\njerry: \"jimmy's gonna put the moves on elaine..\" \n\ngeorge: \"i have to go see steinbrenner later. mr wilhelm told him that i was the one responsable for stealing all the merchandise.\" \n\njerry: \"why?\" \n\ngeorge: \"'cause when he questioned me about it i was sweating from the kom pau..\" \n\njerry: \"i don't know how you can eat that spicy chicken,\" \n\ngeorge: \"george likes spicy chicken.\" \n\njerry: \"what's that?\" \n\ngeorge: \"....i like spicy chicken\" \n\njerry: \"no no you said george likes spicy chicken.\" \n\ngeorge: \"no i didn't\" \n\nelaine: \"yes you did you said george likes spicy chicken.. \n\njerry: \"you're turning in to jimmy.\" \n\ngeorge: \"george is getting upset..\" \n\njimmy: \"so what do you want to see jimmy about?\" \n\nelaine: \"well.... (pointing at him) jimmy!\" \n\njimmy: \"huh uh...\" \n\nelaine: \"about tonight hum.. there's been a little misunderstanding.\" \n\njimmy: \"ah! ... jimmy doesn't like misunderstanding.\" \n\nelaine: \"yeah. what happened was....\" \n\njimmy: \"jimmy and misunderstanding kinda clash.\" \n\nelaine: (suddenly intrigued) \"you know, i've never heard anyone talk the way you do. it's very unusual.\" \n\njimmy: \"well, jimmy's very unusual.\" \n\nelaine: \"well anyway hum.... see when i made the date, i thought that jimmy......\" \n\njimmy: \"hey look. hank's got a new boyfriend. jimmy's not threatened by hanks sexuality ... jimmy's happy for hank.\" \n\nelaine: \"elaine once tried to convert one but elaine's not going through that again.\" \n\nkramer: \"i'm going to try and find some candy. you want some?\" \n\nelaine: \"yeah!\" \n\nkramer: \"what kind?\" \n\nelaine: \"i don't care\" \n\nelaine: \"hey jimmy!!\" \n\njimmy: \"i elaine.\" \n\nelaine: \"elaine got a new dress.\" \n\njimmy: \"jimmy likes it.\" \n\nkramer: \"there's no candy around here. hey! jimmy.\" \n\njimmy: \"well look who's here.\" \n\nkramer: \"whooo!\" \n\njimmy: \"that's the guy who sidelined jimmy.\" \n\nkramer: \"what!\" \n\njimmy: \"that's the guy who took the bread out of jimmy's mouth. jimmy's out of work because of you.. \n\njimmy: \"jimmy wants a piece of kramer..(fighting ensues and jimmy gets taken out by hotel security) \n\njimmy: \"jimmy's gonna get you kramer!!. hands off jimmy!!. don't touch \n\nkramer: (keamer's voice starts slurring again) \"yeah! my lips swollen?\" \n\nkramer: \"no no i've been living alone a long time now.\" \n\nmel: \"well i think that's the tops.\" \n\ngeorge: (knocks) you hem... wanted to see me mr. steinbrenner?\" \n\nstein: \"yes george, come in ,come in. you know george i've been your biggest supporter around here and thats why i was so disappointed to hear that you been pilfering the equipment.\" \n\ngeorge: \"george would never do anything like that.\" \n\nstein: 'no why would i. i own it.\" \n\ngeorge: \"right!\" \n\nstein: \"so what are you saying?\" \n\ngeorge: \"why would george steal from the yankees?\" \n\nstein: 'he wouldn't.\" \n\ngeorge: \" 'course not\" \n\nstein: \"exactly..................(mumbles) i don't what the hell's going on here.\" \n\ngeorge: \"sir?\" \n\nstein: \"nothing.\" \n\ngeorge: (energetically) \"well seems it's about time for george's lunch.\" \n\nstein: \"yes it is. well lets see what i have today. darn it it's ham & cheese again and she forgot the fancy mustard. i told her i like that fancy mustard. you could put that fancy mustard on a shoe and it would taste pretty good to me. oh! she made it up with a cupcake though. hey look at this. you know i got a new system for eating these things. `i used to peel off the chocolate now i turn them upside down , i eat the cake first and save the frosting for the end. (george stops listening and it's almost like its own dessert............. \n\nmel: \"ladies and gentlemen....i want to dedicate this song to a very courageous young man. (starts singing) \"when you're smiling, when you're smiling... the whole world smiles with you... when you're laughin', when you're laughin' the sun comes shining through but when you're crying, you bring on the rain so stop that sign. be happy again keep on smiling , 'cause when you're smiling the whole world smiles with yooooouuuuuuu the whole world smiles with (with kramer)yooooouuuuuuu.. \n\nkramer: \"hey! got the new penthouse\" \n\njerry: \"where's my mr. goodbar?\" \n\nkramer: \" ah! here here listen...dear penthouse, i want to tell you about an experience i recently had. as an avid reader i've always wondered if the letters (with jerry) are i'm a dentist and one afternoon my hygienist and i decided to have a little fun with one of our patients. of course none of our patients had any idea exactly of what we were up to. i was still wondering what if ......... (jerry stops and seems bewildered) \n\ngeorge: jerry it's funny, paula and i actually met because of elaine. \n\npaula: elaine is in my drawing class at the new school \n\ngeorge: ..and i went down there one time to see... \n\njerry: (cuts in) a nude model. \n\ngeorge: if elaine wanted to get some coffee. \n\njerry: you know i went out once with a nude model. never let me see her naked. hundreds of people see her naked every week, except me. needless to say it was quite vexing. \n\ngeorge: are you through? \n\njerry: yeah! \n\ngeorge: so anyway, i started to compliment elaine on her sketches and it turns out,they're paula's. \n\npaula: george, i just like to doodle \n\ngeorge: oh! dropped a napkin...(whispers) jerry! \n\njerry: what? \n\ngeorge: what are you doing?...she had those nuts in her mouth, she just spit them out. \n\njerry: (spits the nut) oooh!!! you. you ate these? you sucked on these and put them on the plate? \n\nshelly: well i didn't know you were gonna eat them? \n\njerry: soo... \n\nshelly: i'm sorry you find me so repulsive? \n\njerry: no ,no i don't, i mean, don't be silly.. \n\nshelly: yeah! \n\njerry: it's just... \n\nshelly: well, hem ,if you'll excuse me i think i'll just go to the ladies room. \n\npaula: i'll join you. \n\njerry: oh! man did you see that. i ate discarded food. \n\ngeorge: well i've done that. \n\njerry: yeah, but with you it's intentional. \n\ngeorge: haven't you kissed her? \n\njerry: yeah, but this is different , this is like ,you know, semi digested food stuff. you know the next stop is the stomach and you can take it from there. \n\ngeorge: excuse me just for a second. ( fixes his hair looking at his reflection in a coffee pot.) \n\njerry: ah. yes that's gonna make a big difference. \n\ngeorge: this is dating , you can't leave anything to chance. \n\njerry: hey ,you think that shelly's upset that i made such a big deal about the pecan. \n\ngeorge: hehummm , yeah! \n\njerry: thanks. \n\ngeorge: no problem. \n\nshelly: well jerry , i guess we should get going . \n\njerry: ah! boy. \n\ngeorge: well, it was very nice meeting you shelly and jerry be careful, there's a lot of nuts out there. (to paula) all right you have everything? \n\npaula: can you grab my purse. \n\ngeorge: yeah.( reaches for the purse and finds a piece of paper . he looks annoyed. \n\njerry: yeah! so \n\ngeorge: don't you see what this is? \n\njerry: yeah! it's a doodle. \n\ngeorge: yeah!, a doodle of me...look at the size of the nose , the ears, all my features are distorted. \n\njerry: oh!.it's an affectionate caricature. \n\ngeorge: i'm grotesque . i look like a troll. \n\njerry: it's just a drawing. \n\ngeorge: don't you see what this says? how can you possibly like somebody ,if you think they look like this? \n\ngeorge: (gets up to leave the table) hello!!! (angrily) \n\nelaine: what is with him? \n\njerry: the usual \n\nelaine: so, you know what? my friend judy recommended me for a job at viking press. \n\njerry: good for you \n\nelaine: yeah! but get this. viking has a deal with the plaza hotel, they got a two bedroom suite, there, for out-of-town clients...so guess what i did? \n\njerry: oh! come on, you told them you're from out-of-town just so you could stay in a hotel room. \n\nelaine: i know, i know jerry.. but it's the plazaaa... i've never stayed there .it'll be like a little vacation \n\njerry: well be sure to catch a broadway show while you're in town. \n\nelaine: ( laughs)listen, i've used your parents address in florida. \n\njerry: oh! there coming to town tomorrow by the way. \n\nelaine: hey. what's this.?. \n\njerry: don't ask. \n\nelaine: what is it ..a drawing of mr. magoo \n\njerry: no ,it's george ( elaine laughs heartily) \n\nelaine: it is.. \n\ngeorge: you enjoying yourself? (more laughs from elaine) \n\nelaine: sorry. \n\ngeorge: you see. you see! listen when is your next drawing class? \n\nelaine: tomorrow . \n\ngeorge: all right, i want you to do me a favor. \n\nelaine: what? \n\ngeorge: i want you to find out is she likes me. \n\nelaine: find out if likes you?. what, are you in high school?...george come on can't you just talk to her yourself? \n\ngeorge: but she's gonna know that i like her more than she likes me. \n\njerry: you know my parents are coming in and i got some clean up to do , so if you and potsie are done scheming.... \n\nkramer: well, they're in... \n\njerry: what's in? \n\nkramer: the macanaw peaches ,jerry , the macanaw peaches!!!! \n\njerry: aah! .. right. the ones from oregon that are only ripe for two weeks a year.. \n\nkramer: yeah yeah i split a case with newman..i waited all year for this.. oooh this is fantastic.. makes your taste buds come alive....it's like having a circus in your mouth.....take a taste \n\njerry: nah, i don't wanna \n\nkramer: come on ,just take a taste \n\njerry: i don't want it.. \n\nkramer: come on just taste!!! \n\njerry: i don't want it .... \n\nkramer: he..ya. aya. ayyyyyaaaaa!!!! \n\njerry: i am not gonna taste your peach. i ate some one's pecan last night, i'm not gonna eat your peach. \n\nkramer: jerry , this is a miracle of nature that exists for a brief period. it's like the aurora borealis. \n\njerry: ..what is this? \n\nkramer: what? \n\njerry: yeah! i think i got flea bites. \n\nkramer: flea bites? \n\njerry: look at this, my ankle's all bitten up. \n\nkramer: you got a dog? \n\njerry: no. \n\nkramer: well, that is strange. \n\njerry: how could i have fleas? \n\nkramer: don't sweat it buddy...i used to have fleas. \n\njerry: what did you do about them? \n\nkramer: what do you mean?... \n\nmorty: hey guys . jerry . kramer \n\nhelen: hi jerry......what's wrong? \n\njerry: nothing... \n\nhelen: jerry, i'm your mother, now what is it? \n\njerry: mom, dad.....i have fleas.. \n\nelaine: hey paula!.. i hear you been going out with george costanza? \n\npaula: how did you know?? \n\nelaine: everybody knows. y'know george told me he thinks you're totally cute and everything. \n\npaula: he said that? \n\nelaine: ha hum...do you like george? \n\npaula: yeaaah! he's cool. \n\nelaine: no i mean...do you like him or do you like him like him? \n\npaula: like like.. looks aren't important to me ,you know? \n\nteacher: miss benes , are you chewing gum? \n\nelaine: (nods) humhummmm.... \n\nkarl: yep!...in your bedroom too mr. seinfeld. you've got a full outbreak of fleas on your hands. \n\njerry: i don't get this. how did this happen. i don't have a dog. \n\nkarl: i don't explain 'em mr. seinfeld. i just exterminate them. \n\njerry: i don't understand this.. \n\nkarl: i 'm gonna have to seal the place up for 48 hours and fog it. that's the only way to get rid of them. \n\njerry: nobody can be in here for 48 hours, i got my parents in town. \n\nkarl: well , unless you want to kill them. they can't stay in here. this stuff is pretty toxic. i'll go get my stuff, it's in the truck. \n\njerry: okay.. \n\nelaine: hi....??? \n\njery: bug guy. \n\nelaine: why do you have a bug guy? \n\njerry: i have fleas. \n\nelaine: argh.. fleas ( strikes the purse she just deposited on the couch) how did you get fleas? \n\njerry: i don't know...but every one's got to clear out of the apartment for two days. i don't know what i'm gonna do with my parents. they'll never let me pay for a hotel and if they go to someplace on their own i'm sure it's gonna be some awful dump. wait a second.. have you checked in the plaza yet? \n\nelaine: no....oh no.... \n\njerry: come on,c'mon \n\nelaine: no, no... \n\njerry: c'mon ,c'mon.... \n\nelaine: no, no... \n\njerry: c'mon, c'mon.... \n\nelaine: no, no....yesss!!!!!! \n\njerry: yes!!! \n\njerry: yes!!! \n\ngeorge: yeah! \n\nelaine: well what about you. where you gonna stay? \n\njerry: i dunno , i'm gonna ask shelley ,but she still might be upset from the masticated pecan incident. \n\nelaine: hey!! i found out from paula; she likes george. i'll bet he'll be relieved. \n\njerry: yeah.. when he's dead he'll be relieved... oh by the way viking press sent a fedex for you to my parents. they brought it with 'em. \n\nelaine: yeah that's just some stuff about the company. \n\ngeorge: hum..( to elaine) hey! did you talk to paula? \n\nelaine: yeah. \n\ngeorge: so what did she say? \n\nelaine: she...likes you.. \n\ngeorge: she said she liked me. no kiddin' she said that? \n\nelaine: ya! \n\ngeorge: those were her exact words, i like george. \n\nelaine: yep! \n\ngeorge: ha haaaaaaa... jerry how do you like that.you see i get myself in a dizzy, i'm all worked up and for what? \n\nelaine: for nothing.. \n\ngeorge: ha ha.. \n\nelaine: in fact she said that looks aren't even that important to her... \n\ngeorge: you see.....what!! \n\nelaine: ah oh!! \n\ngeorge: she said looks aren't important to her? \n\nelaine: well..hum...let me rephrase that, she said.... \n\ngeorge: she thinks i'm ugly. i knew it. \n\njerry: you see the thing of it is, there's a lot of ugly people out there walking around, but they don't know they're ugly, because nobody actually tells them. \n\ngeorge: .....so what's your point? \n\njerry: i dunno... \n\nelaine: okay.. the point , george, is she likes you. \n\ngeorge: oh!, so what. i'd rather she hate me and thought i was good looking....at least i can get somebody else. (scratching his chest) what is this? why am i itching? \n\njerry: that'd be the fleas. \n\njerry: hey!!! \n\nmorty: hey! i do you like this? huh, huh! \n\nhelen: oh! my god, morty lets go, this is too nice. \n\nmorty: hey! this is the kind of room sinatra stays in. hey! look , macadamian nuts. \n\nhelen: macadamian nuts? \n\nmorty: hey! you know what these cost, they're like 80 cents a nut. \n\nhelen: jerry, are you sure this all right? \n\njerry: yeah! it's all taken care of. \n\nmorty: ( from the other room) hey!!! they got a phone in the john here. \n\nelaine: judy . \n\njudy: hey!!!!. \n\nelaine: hi, thank you so much for recommending me to viking press . \n\njudy: it is my pleasure , just make sure you give that manuscript a good read. \n\nelaine: manuscript? \n\njudy: yeah. i'm sure they fedexed you a manuscript. they want to see that you can read an unpublished work and give insightful criticism. \n\nelaine: oooh!! \n\njudy: read it twice if you have to. this is a big step in your career. \n\nelaine: yeah! hmmm..i gotta go.. \n\njudy: hey! what about lunch? \n\nelaine: (she leaves hurriedly) i gotta gooo... \n\nelaine: thank god i found you.. \n\njerry: oh! hey! \n\nelaine: you still got that fedex? \n\njerry: yeah! i got it . it's in the apartment, but we can't go in there it's being fumigated. \n\nelaine: no i'll take my chances. come on...( grabs him by the coat and head back to his place) \n\njerry: you see? \n\nelaine: jerry , i need that fedex right now.. \n\njerry: i told you to take it. \n\nelaine: well, i didn't know that it was a manuscript that i had to read... \n\njerry: well, you can't go in there it's like a gas chamber in there. \n\nkramer: i left a macanaw peach in your refrigerator. \n\njerry: kramer, they're fumigating. there's toxic gas in there. \n\nkramer: toxic gas!!! \n\njerry: aw! you'll be fine, you were in there for what , a couple of minutes. \n\nkramer: an hour and a half!!! i was reading a manuscript, i just couldn't put it down. \n\nelaine: my manuscript? \n\njerry: how do you feel? \n\nkramer: now that you mention it , a little woozy. \n\nelaine: kramer you got go back in there grab my manuscript. \n\nkramer: i'm not going back in there!! \n\nelaine: all right then, where is it?? \n\nkramer: i left it on the coffee table or somethin' \n\njerry: well wh..wh.what are you doing? \n\nelaine: i'm going in . \n\njerry: didn't you see the sign on the door? \n\nkramer: well i thought it was so your parents wouldn't walk in while you're with a girl. \n\nelaine: ( heavy panting) it's not on any table, kramer. where is it? \n\nkramer: well i don't know . i was in the bathroom , the kitchen... \n\nelaine: okay... bathroom....kitchen. \n\njerry: can you get me a soda? \n\nkramer: jerry, i had some milk, i made a sandwich. i got to get out of the building. \n\nelaine: (again pants) i couldn't find it anywhere. how did you get fleas anyway? \n\njerry: i don't know. who could've been in my apartment. \n\nelaine: i 've looked everywhere , even under the couch but all i could find were the stupid chunky wrappers. i couldn't.... \n\njerry: wait a minute . did you say chunky wrappers? \n\nelaine: yeah! \n\njerry: let me see those. ( smells them) oh! i know the chunky that left these chunkies......newman!!! i've got him. \n\njerry: newman . open the door, newman, i know you're in there. \n\nnewman: hello jerry. what a pleasant surprise. \n\njerry: there's nothing pleasant about it, so lets just cut the crap.. you gave me fleas. i know it and you know it.. \n\nnewman: fleas? bwa ha ha ha ha .that's preposterous. how can i , give you fleas. now if you don't mind... \n\njerry: oh! but i do. there's probably fleas crawling all over your little snack bar. ( as he says this newman is wildly scratching behind his back. he suddenly stops when jerry turns around) \n\nnewman: so , you have fleas. maybe you keep your house in a state of disrepair. maybe you live in squalor. \n\njerry: you know newman , the thing about fleas is that they irritate the skin and they start to...itch. oh! maybe you can hold out five seconds or ten, maybe fifteen or twenty but after a while, no matter how much will power a person may have. it won't matter, because they're crawling , crawling on your skin. up your legs , up your spine , up your back..... \n\nnewman: (cannot take this torture anymore) baaaaaaaaarrhhhhhhhhhhh....i'm ripped with fleas ( scratches furiously) \n\nmorty: oh! oh! that feels good. hey! this guy charges a hundred bucks an hour but i'm telling ya he's worth every penny oooohh! \n\nhelen: i'm next. \n\nmorty: hey! leo, get this, four movies at once; pay per view. \n\nleo: i love these nuts. \n\nnana: this champagne's gone flat. ( throws her glass over her shoulder) \n\nhelen: nana!!! \n\nnana: he ha ha ha...let the chambermaid clean it up \n\ngeorge: hello.. \n\npaula: what's the matter?... \n\ngeorge: well i spoke to elaine... \n\npaula: hey! look , no shave. \n\ngeorge: no...why should that make any difference to you? \n\npaula: it doesn't.. \n\ngeorge: of course not. you don't care what i look like. \n\npaula: that's right i don't. \n\ngeorge: i suppose i could just pull this out ( his tucked shirt)and walk around like this and you wouldn't care? \n\npaula: not a wit. \n\ngeorge: hu humm? i suppose we could go to lincoln center and i'd be wearing sneakers and jeans and that would be fine too. \n\npaula: you can wear sweatpants. \n\ngeorge: i could.. \n\npaula: (seductively) you could drape yourself in velvet, for all i care. \n\ngeorge: velvet... \n\nelaine: did you read the whole thing? \n\nkramer: oh! yeah. \n\nelaine: huh . so what's it about? \n\nkramer: well it's a story about love, deception, greed, lust and...unbridled enthusiasm. \n\nelaine: unbridled enthusiasm...? \n\nkramer: well , that's what led to billy mumphrey's downfall. \n\nelaine: oh! boy. \n\nkramer: you see elaine, billy was a simple country boy. you might say a cockeyed optimist, who got himself mixed up in the high stakes game of world diplomacy and international intrigue. \n\nelaine: oh! my god. \n\nkramer: ah! here we go. \n\nelaine: (to the waitress) can i have a scotch on the rocks. \n\nkramer: may i..( pointing her food) \n\nelaine: (feeling sick) yeah! go ahead. \n\nkramer: what is this? \n\nelaine: what? what are you doin'? ( kramer salting her food) \n\nkramer: i can't taste this. \n\nelaine: what are you talking about? \n\nkramer: this food ,it has no taste......nothin' i'm gettin' nothin'...( realizes) it must be the toxic gas from the fumigation......( he leaves paranoid and confused) \n\njerry: hey, thanks a lot for lettin' me stay here. \n\nshelly: well, i don't keep pecans in the house so i didn't think it'd be a problem. \n\njerry: ( embarrassed laugh) ...oh! damn.. \n\nshelly: what's the matter? \n\njerry: i forgot my toothbrush. \n\nshelly: oh! no problem.....you can use mine. \n\njerry: yours?....you know what i'll think i'll brush later. \n\nshelly: brush now. \n\njerry: (long pause).......sure. ( humms a song then stares at the toothbrush) \n\nkramer: newman ,let me have a bite of your macanaw.. \n\nnewman: what for, you got your own. \n\nkramer: come on ,c'mon i need to taste it. ( takes his peach).....nothin' , can't even taste a macanaw. \n\nnewman: ( resumes eating) well that's a shame. \n\nkramer: waited all year and i can't even taste it.. \n\nnewman: you can't taste 'em . why waste 'em . why not give them all to me. \n\nelaine: it's a story about love , deception ,greed , lust and.... unbridled enthusiasm . \n\nmandel: unbridled enthusiasm. \n\nelaine: yeah!..tha..that's right. that that's what led to...(throath clearing) billy mumphrey's downfall. \n\nmandel: hmmm...interesting take. so you believe, has he not been so enthusiastic he could have adverted disaster. \n\nelaine: yes...ye..yes..that's right...you see ,billy mumphrey was a simple country boy. some might say a cockeyed optimist, who got caught up in the dirty game of world diplomacy and international intrigue. \n\nmandel: so.. it was more a question of attitude than politics.. \n\nelaine: yes, yes mr. mandel. \n\nmorty: hey! under siege is on again. whose up for it? \n\nleo: no more nuts. awrghh..... \n\njerry: oh! my god. what the hell is this? ..... don't tell me.......velvet!!! \n\ngeorge: it's the real deal. \n\njerry: she's seen you in this thing. \n\ngeorge: that's right...we just had sex......you know jerry i've been searching for someone a long time. well the search is over. \n\njerry: and now the search for the right psychiatrist begins. \n\ngeorge: he he...so huh! what's with the suitcase. \n\njerry: ahh! she threw me out. \n\ngeorge: why? \n\njerry: i wouldn't use her toothbrush. \n\ngeorge: so where are you staying? \n\njerry: well i guess i'm stuck with the velvet fog. \n\nmandel: three hours of massage time , twelve in-room movies including several adult features, five shoe shines and four hundred dolars worth of snacks. not to mention the damage to the room. \n\nelaine: mr mandel, you don't understand ...my my friend had fleas. i ran into the gas, it could have killed me, and my, my other friend couldn't taste his peaches ,they only good for two weeks. \n\nmandel: i think , you've read, one too many, billy mumphrey stories. good day miss benes. \n\nelaine: okay...good day.. \n\npaula: hi george. \n\ngeorge: ( mouth full) hi, this is fantastic ( puts the pit in the a plate)d'you ever had a macanaw peach? \n\npaula: oh! yeah i love those. \n\ngeorge: too bad , it's all done. \n\nkramer: ya....yes!....yes! it's back i can taste again. ( to a passerby) hey! what's the date today? \n\npasserby: the fifteenth. \n\nkramer: fifteenth , yes last day for the macanaws. i can still make it. wait.. newman... \n\nnewman: sorry , last one . would you want to suck the pit? \n\nkramer: ( fake laugh ) look hubert. it's the mailman. you remember the mailman don't you. \n\nelaine: ( knocks) hello is anybody here?.. \n\nleo: they said they were sending an asian woman. \n\nelaine: oh! my god. \n\n[opening scene: jerry and elaine are outside, heading towards the apartment building] \n\njerry: i hear you're going out with david putty. \n\nelaine: yeah. what, is it a problem? \n\njerry: well, i think he could've asked me. supposed to be a friend of mine. \n\nelaine: well, i guess he figured you just wouldn't care. it *has* been a few years. \n\njerry: elaine, you always care who an ex-girlfriend dates. you don't want it to be someone you know, and you don't want it to be someone better than you. now, even though the latter is *obviously* impossible. \n\nelaine: oh, god. \n\njerry: the former still applies. i don't know what it is, but i just can't see you with a mechanic. \n\nelaine: oh, yeah. right, right. well, all those mechanics do is work all day with their hands and their *big*, *muscular* arms on machines, and then they come home dripping with animal sexuality like stanley kowalski. what a huge turn-off that is. \n\njerry: all right. \n\ngeorge: look at that. they got lobster on the menu. who would order a lobster here. i mean, do they bring a lobster in everyday hoping *todays* the day. \n\nestelle: so what if they have a lobster. suddenly you're a shell-fish connoisseur. \n\ngeorge: you know, i think we really need to be in front of a television set. you take t.v. out of this relationship, it is *just* torture. \n\nestelle: so, i'm getting an eye job. \n\ngeorge: an eye job? ma, you don't need an eye job. \n\nestelle: georgie, i'm a divorcee. \n\ngeorge: no, you're not a divorcee. youre just separated. you're---you're a separatee. \n\nestelle: well, i'm out there, george. \n\ngeorge: no, you're not out there. \n\nestelle: i am, too! \n\ngeorge: you're not out there! you can't be, because *i* am out there. and if i see *you* out there, there's not enough voltage in this world to electroshock me back into coherence! \n\nestelle: well, anyway, the operation is on tuesday and i need you to drive me home because i'll be all drugged up. \n\ngeorge: tuesday? i can't do it tuesday. steinbrenner needs me to run--- \n\nestelle: this is the only time the doctor *has*. \n\ngeorge: kramer, hey, hey! (gets up out of his seat) \n\nkramer: hi, little buddy. \n\ngeorge: come on over and sit down. \n\nkramer: hey, listen, i gotta go somewhere. \n\ngeorge: no, you're gonna sit down, you son of a gun... \n\nkramer: all right, i'm sitting down. how are you? (kisses estelle on the cheek) \n\nestelle: so, kramer. i'm getting an eye job. \n\nkramer: oh, yeah, good for you. hey, you have to look your best. you're out there now. \n\ngeorge: she's not out there! \n\nkramer: so, who is your doctor? \n\nestelle: uh, bakersoll. \n\nkramer: (whistles). he's good. he's *very* good. he worked on this kid from guatemala with no nose. turned him into ricardo montalban. \n\ngeorge: hey, kramer, what are you doing tuesday? \n\nkramer: tuesday? uh... \n\ngeorge: why doesn't *he* pick you up after the operation. he's got the car with the bench seats that you like. \n\nestelle: oh, i don't care. \n\nkramer: yeah, i know, but i can't drive anybody anywhere until i go down to the motor vehicle bureau and get my new plates. \n\ngeorge: well, giddy-up! \n\nkramer: yeah, i'm here to pick up my new plates. my name is kramer. cosmo kramer. \n\nclerk: kramer.... (checks computer) all right... \n\nkramer: all righty... \n\nclerk: sign right here, please. (hands over clipboard) \n\nkramer: (signs it) okay. (the clerk hands him a manila envelope). thanks. (opens up the envelope) assman? oh, no, these don't belong to me. i'm not the assman. i think there's been a mistake. \n\nclerk: what's your name again? \n\nkramer: cosmo kramer. \n\nclerk: (checks computer again) cosmo kramer. you *are* the assman. \n\nkramer: no! i'm not the assman. \n\nclerk: well, as far as the state of new york is concerned, you are. \n\ndavid: how do you feel? \n\nelaine: fine. \n\ndavid: something the matter? \n\nelaine: no. \n\ndavid: then what is it? \n\nelaine: no, nothing. \n\njerry: hi. \n\nelaine: i was with david *putty* last night. \n\njerry: yeah, so. \n\nelaine: he did the move. \n\njerry: what move? \n\nelaine: you know...*the* move. \n\njerry: wait a second. *my* move? \n\njerry: david putty used *my* move? \n\nelaine: yes, yes. \n\njerry: are you sure? \n\nelaine: jerry! there is no confusing *that* move with any other move. \n\njerry: i can't believe it. he *stole* my move. \n\nelaine: what else did you tell (reaches over to slap jerry) him. (does it again) the two of you must have had *quite* a little chat! \n\njerry: oh, it wasn't like that! i didn't even mention you. you know, we were in the garage. you know how garages are. they're conducive to sex talk. it's a high-testosterone area. \n\nelaine: because of all the pistons and the lube jobs? \n\njerry: well, i'm going down to that garage and telling him to stop doing it. \n\nelaine: well, wait---wait a second. \n\njerry: what? \n\nelaine: isn't that a little...rash? \n\njerry: no! he stole my move! \n\nelaine: yeah, but...*i* like the move. \n\njerry: yeah, but it's like another comedian stealing my material. \n\nelaine: well, he doesn't even do it exactly the same. he--he--he uses a pinch at the end instead of the *swirl*! \n\njerry: oh, yeah. the pinch. *i've* done the pinch. that's not new. besides which, i don't know how you could trust any of his moves now. his whole *repertoire* could be lifted. \n\nelaine: you know, it's strange, because he's such an honest mechanic. \n\njerry: i know, he's probably the only honest mechanic in new york. \n\njerry: ...so he stole my move and he's using it on elaine. \n\ngeorge: you told david putty your move and you didn't tell *me*? i *need* a move. you know i have no moves, jerry. (points to the candy bar) gimme a bite. \n\njerry: can i just get it opened first? \n\ngeorge: i can't believe you're hoarding sex moves. i'm out there rubbing two sticks together. you walk around with a zippo. \n\njerry: all right, all right. here. (hands george a piece of the candy bar). \n\ngeorge: (takes a bite) oh, that's good. that's very good. \n\njerry: you feel better? \n\ngeorge: yeah, much better. all right, so what's the move, because i need *something*. this woman i'm dating, it's like she's doing her nails during love-making. \n\njerry: nancy klopper? \n\ngeorge: yeah. never seen anyone so bored. i'm working like a dog here. give me a moan. *something*. i'd settle for a belch, for god's sake. all right, come on, let's have it. \n\njerry: all right, george. i'm gonna tell you. but i just wanna make sure, before--- \n\ngeorge: yeah, yeah, yeah. it's in the vault. i'm putting it in the vault. \n\njerry: it's not even a question of that. the point is when something like this is passed along, one must be certain that it's going to be used in a *conscientious* way. this is not some parlor trick to be used--- \n\ngeorge: you're gonna tell me...or not. \n\njerry: all right. on your bed. you got a headboard? you'll need a headboard. \n\ngeorge: i got a headboard. \n\njerry: is it padded? \n\ngeorge: no. \n\njerry: good. how tall is she? \n\ngeorge: five-foot four. why? \n\njerry: you can't have more than a one-foot differential in your heights. otherwise, you could really hurt your neck. \n\ngeorge: i can't tell ya how much i appreciate this. \n\njerry: george, if you could master this, you'll never be alone again. \n\n[back at jerry's apartment: jerry and george have just walked in, still conversing on the same subject] \n\njerry: now, the ending is kind of an option. i use the swirl. i like the swirl. i'm comfortable with the swirl. *i* feel the swirl is a great capper. he uses the pinch, which i find a little presumptuous. \n\ngeorge: is it a clockwise swirl? \n\njerry: i prefer clockwise, but it's not written in stone. \n\nkramer: here you go, buddy. (shows it to jerry). \n\njerry: what is it? \n\nkramer: *fusilli* jerry! it's made from fusilli pasta. see the microphone? \n\njerry: when did you do this? \n\nkramer: in my spare time. (turns to george). you know, i'm working on one of you, george. i'm using ravioli. see, the hard part is to find a pasta that captures the individual. \n\njerry: oh... why fusilli? \n\nkramer: because *you're* silly. get it? (hands the fusilli to jerry) yeah... \n\njerry: well, thank you very much. \n\ngeorge: so, did you get your new plates? \n\nkramer: oh...yeah. i got my new plates. but they mixed them up. somebody got mine and i got their *vanity* plates. \n\ngeorge: what do they say? \n\nkramer: assman. \n\njerry: assman? \n\nkramer: yeah. assman, jerry. i'm cosmo kramer, the assman! \n\njerry: who would order a license plate that says \"assman\"? \n\ngeorge: maybe they're wilt chamberlain's. \n\njerry: it doesn't have to be someone who gets a lot of women. it could be just some guy with a big ass. \n\nkramer: yeah, or it could be a proctologist. \n\njerry: yeah. proctologist. \n\ngeorge: come on! no doctor would put that on his car. \n\nkramer: have you ever *met* a proctologist? well, they usually have a very good sense of humor. you meet a proctologist at a party, don't walk away. *plant* yourself there, because you will hear the funniest stories you've ever heard. see, no one wants to admit to them that they *stuck* something up there. never! it's always an accident. every proctologist story ends in the same way \"it was a million to one shot, doc. million to one.\" \n\nkramer: oh! there's my phone. (he leaves) \n\ngeorge: so, where you gonna stick this (points to the fusilli jerry) \n\njerry: i'll tell you where i'd like to stick it. \n\njerry: hey, david. \n\ndavid: oh, hi, jerry. \n\njerry: hey, what's the story? i hear you're doing my move. \n\ndavid: what move? \n\njerry: what move? *my* move. the one i told you about. you used it on elaine. \n\ndavid: you're move? what, are you kidding? i was doing that before i knew you. all you told me about was the ending. \n\njerry: the ending is the whole thing. without the ending, it's nothing. you had *nothing*. \n\ndavid: oh, that ending was *so* obvious. i would have figured it out anyway. i didn't need you to tell me that stupid twist. \n\njerry: swirl. \n\ndavid: whatever. i don't even do it. \n\njerry: oh, yeah, i know. you do the *pinch*. \n\ndavid: yeah, that's right. \n\njerry: you can't come up with your own stuff , so you *steal* other peoples? you're nothing but a hack. \n\ndavid: are you through, 'cuz, uh, i gotta get back to work. \n\njerry: well, i'll tell you what i'll do, you know. if you wanna do it out of town...okay. but not in the city. \n\ndavid: all right, how about the next time your car breaks down, you take *that* out of town. \n\njerry: fine. \n\ndavid: good! \n\nnancy: ow, george! (crawls out from beneath the covers) what are you doing? \n\ngeorge: (pops his head out of the covers, looking a bit confused) uh...you know, uh...pleasuring you. \n\nnancy: well, stop it! \n\ngeorge: you don't like the move? \n\nnancy: no. i don't. \n\ngeorge: you're kidding. \n\nnancy: no, i'm not. it feels like aliens poking at my body. \n\ngeorge: sorry. i'll just go back to my usual routine. \n\nelaine: oh, god! oh, god, dave! oh, yes! yes! \n\ndavid: no, i'm sorry. \n\nelaine: what?!! \n\ndavid: i can't do the move. \n\nelaine: what? \n\ndavid: oh, he's ruined it for me. \n\nelaine: oh, oh, come on, please? \n\ndavid: no, he called me a hack. i'm just not into doing it anymore. \n\nelaine: oh, so---so that's it? \n\ndavid: i'll come up with some new stuff. \n\nkramer: \"call me. thirty-six, twenty-four, forty-six. i think i have what you're looking for.\" (pleased by the note, kramer stumbles into his car). \n\ndr. bakersoll: i must caution you about one thing. you can't cry for at least ten day. you can ruin the operation. \n\nestelle: oh, okay. \n\ndr. bakersoll: now, is someone coming to pick you up? \n\nestelle: yes, my son's friend should be here any minute. \n\nsecurity guard: can i help you? \n\nkramer: ah, yeah. doctor cosmo kramer. (points to plate) proctology. \n\nsecurity guard: oh, oh, okay. sure... \n\nkramer: thanks. have a good day. \n\nkramer: i just can't get over how fantastic you look. \n\nestelle: oh, really? \n\nkramer: oh, yeah. this takes twenty years off. \n\nestelle: and it was all done by laser. i don't even need bandages. \n\nestelle: did he say \"assman\"? \n\nkramer: oh, yeah. \n\nestelle: oh my goodness. \n\n(another car passes: \"hey, the assman's in town!\") \n\nkramer: you got that straight! \n\nestelle: boy. i never dreamed it could make such a difference. \n\njerry: you must have done *something* wrong. you probably screwed up the order. did you close with the swirl? \n\ngeorge: supposed to close with the swirl? \n\njerry: oh my god. yes, you close with the swirl. there's a progression there. i told you to write it down. \n\ngeorge: yeah, yeah, should've written it down. \n\njerry: yeah? \n\nbuzzer: elaine. \n\njerry: c'mon up. (turns to george) you know what? do me a favor. don't even do the move anymore. you're gonna give it a bad name. \n\njerry: hello? yeah, this is jerry seinfeld. what? twenty-eight hundred dollars?!! that's the estimate on my car?!! no, don't even do anything. i'm gonna think about it. okay, bye. \n\ngeorge: what's to think about? if putty says it's what it is, it's what it is. he's not gonna cheat you. \n\njerry: except that it's not putty. \n\ngeorge: what happened to putty? \n\njerry: eh, we had a little fight about the move. i took her to this other place. i think they might be trying to screw me. \n\ngeorge: well, of course they're trying to screw you. what do you think? that's what they do. they can make up anything. nobody knows. \"by the way, you need a new johnson rod in there.\" \"oh, a johnson rod. yeah, well, you better put one of those on.\" \n\njerry: hey, elaine. \n\nelaine: yeah, yeah, hello. \n\njerry: is it something i said? \n\nelaine: yes! as a matter of fact! david putty won't do the move anymore. \n\njerry: really? \n\nelaine: oh, he's come up with some other move. you should see this thing. \n\njerry: what is it? \n\nelaine: oh, it's a lot of just fancy-shmancy stuff. you know what it's like? it's like a big budget movie with a story that goes *nowhere*. \n\njerry: huh. \n\nelaine: i mean, this move is no good, jerry. it's just taking up a lot of my time. and i...will not stand by and allow him to perform this move on me, when a perfectly good move is just sitting in the barn doing nothing! \n\ngeorge: let me ask you a question. this new move. is there a knuckle involved in any way? \n\nelaine: yes. as a matter of fact, there is. \n\ngeorge: i think that's mine. \n\nelaine: i'm not surprised. \n\njerry: listen. i need you to do me a favor. when's the next time you're gonna see him? \n\nelaine: why? \n\njerry: you gotta get an estimate on my car from him. i think this garage is trying to screw me. \n\nelaine: an estimate? how am i supposed to do that? \n\njerry: well, look. here's the work order with everything that broke. just kind of bring it up at the right time and find out. (hands elaine the work order) \n\nelaine: (takes the work order and points to the fusilli jerry sitting on the table) what? what is this? \n\njerry: that's, uh, fusilli jerry. \n\nelaine: fusilli jerry? \n\njerry: yeah. kramer made it. \n\ngeorge: all right, listen, i'll see you guys later. \n\njerry: hey, assman! \n\nkramer: hey, well, this is sally. \n\nsally: hello. \n\njerry: hi. \n\nelaine: hi. \n\nkramer: shall we go? \n\nsally: okay. (turns around and walks out with an exaggerated swing of her hips) \n\nestelle: you can't face the fact that i'm improving myself. \n\nfrank: you're not the only one improving yourself. i worked out with a dumbbell yesterday. i feel *vigorous*. \n\nestelle: just take your mail and go home. i have things to do. \n\nfrank: i got things to do, too. \n\nestelle: don't upset me! i can't cry! \n\nfrank: getting an eye job like some manhattanite, huh? \n\nestelle: well, it's already working. kramer made a pass at me. \n\nfrank: kramer made a pass at you? you're crazy. \n\nestelle: i'm not crazy. he stopped short and made a grab. \n\nfrank: he stopped short? that's my move. i'm gonna kill him! \n\nelaine: hey, let me ask you a question. \n\ndavid: sure. \n\nelaine: what do you charge for blown shocks? \n\ndavid: what? \n\nelaine: two, three hundred? \n\ndavid: i don't know. maybe five hundred. \n\nelaine: ah. \n\nelaine: what about a bad gasket? \n\ndavid: bad gasket? \n\nelaine: yeah. like a terrible gasket. \n\ndavid: what is all this? \n\nelaine: nothing, nothing. i'm just taking an interest in what you...do. \n\ndavid: what kind of car is it? \n\nelaine: oh...any kind of---of a swedish car. \n\ndavid: all together, that could run about sixteen hundred. \n\nelaine: oh. \n\nelaine: is that with the parts and labor? \n\ndavid: uh-huh. \n\nelaine: hmm. \n\nelaine: oh, no. no, david. no, please. not the knuckle.... \n\nnancy: wow. that was...*great*. i mean...*wow*. \n\ngeorge: it just came to me. \n\nnancy: i---i've never in my life have---have i---. what was that? \n\ngeorge: you mean in the end? \n\nnancy: uh-huh. \n\ngeorge: a counter-clockwise swirl. \n\nnancy: what's that? \n\ngeorge: what? \n\nnancy: on---on your hand? let me see what's on your hand. \n\ngeorge: nothing. i don't know...just a little dirt. \n\nnancy: give me that. (grabs his hand) i wanna see what's on your hand. \n\nnancy: number one. take her leg.... oh, my god! crib notes? you've got crib notes?!! \n\ngeorge: it's a very complicated move! i couldn't remember it all. \n\nnancy: oh, my god, you're sick. (gets out of bed) \n\ngeorge: you know, it's not the s.a.t.s! \n\nfrank: assman? i'll get him, assman! \n\njerry: sixteen hundred dollars? that's all? *ooh*, they are ripping me off. \n\nelaine: so what are you going to do? \n\njerry: well, that's it. i'm going back to putty. no move is worth this. \n\nelaine: oh! you mean you don't care if he does the move anymore? \n\njerry: are you kidding? he can do every move i've ever done! do you know what a good mechanic is worth? you can't compare that to sex. \n\njerry: hi, mr. constanza. what's uh...? \n\nfrank: where's your friend kramer? \n\njerry: i don't know. why? \n\nfrank: because i'm looking for him. that's why. he stopped short. \n\njerry: what do you mean? \n\nfrank: in a car, with my wife. he stopped short. you think i don't know what that's about? that's my old move! i used it on estelle forty years ago! i told everybody about it! everybody knows! (demonstrates) hmmph! i stopped short. \n\njerry: really, stopping short. that's a good move. \n\nfrank: you're not kidding it's a good move! \n\nkramer: hey. \n\njerry: hey. \n\nkramer: hey, frank. \n\nfrank: don't frank me! i know what you did. how dare you stop short with my wife! \n\nkramer: c'mon, frank, relax. i don't even know what you're talking about. \n\nfrank: you think i don't know, assman?!! to think i almost split the profits on the manssierre with you. \n\nkramer: bro. \n\nfrank: manssierre! \n\nkramer: bro! \n\nfrank: manssierre! you...! \n\nfrank: aah!!! \n\njerry: oh, my god! \n\njerry: if i wasn't there, i wouldn't have believed it. \n\nelaine: me either. \n\ngeorge: they say this guy's the best. \n\njerry: he had to use cork-screw pasta. \n\nkramer: jerry. jerry, come here. take a look at this. \n\nkramer: the name on the boat. look at it. \n\njerry: assman! \n\nkramer: yeah (points towards the doctor's office), he's the assman! jerry, *he's* the assman! \n\ndoctor: which one is the son? \n\ngeorge: (stands up) i am. \n\ndoctor: ah. i'm doctor cooperman. i just want you to know that this won't take long. and he's going to be fine. \n\nkramer: yeah, excuse me, uh... you didn't by any chance recently get the wrong license plates? \n\ndr. cooperman: yes. i'm still waiting for the motor vehicle bureau to straighten it out. \n\nkramer: so...you're the assman. \n\nfrank: it was a million to one shot, doc. million to one. \n\nestelle: where have you been?!! you were supposed to fix the stove! i've been waiting for hours! \n\nfrank: i fell on some fusilli. \n\nestelle: fusilli? \n\nfrank: you know, the corkscrew pasta. it was a fusilli jerry. it got stuck in me. had to go to the proctologist. \n\nestelle: the proctologist? are you okay? \n\nfrank: yeah. \n\nestelle: oh, i was so worried. (grabs a couple of tissues from the box) \n\ngeorge: ma, don't cry! \n\nestelle: oh, i can't help it! \n\ngeorge: ma, your eyes! \n\nestelle: oh! \n\njerry: what time does your flight get in? six? all right, that gives us six hours. then i'll meet you at the diplomat's club. i'll be the one without the big red sash. okay, see you tonight. (hangs up) \n\nelaine: is that the supermodel? \n\njerry: yep, she's not gonna be back for a month, but i got six hours. \n\nelaine: i thought you had a show in ithaca. \n\njerry: i do, but it's three o'clock and then i'm flying right back and meeting bridget at the diplomat's club in the airport. \n\nelaine: well, guess what i'm doing. i'm going to mr. pitt's, and i am telling him that i am quitting. \n\njerry: so that's it? you know i never even met the guy. \n\nelaine: i've had enough. i am marchin' in. \n\njerry: you're marchin' in. \n\nelaine: i'm marchin'. (enter george) \n\ngeorge: hey. \n\njerry: hey. elaine's quitting. \n\ngeorge: really? \n\nelaine: i'm marchin' in. \n\ngeorge: i've done the march in. best feeling in the world. \n\njerry: how 'bout the march out? \n\ngeorge: not as good. that's when you realize all the money you're losing. \n\nelaine: this is it. wish me luck. \n\njerry: get a march goin'! march it! (she exits) \n\ngeorge: jerry, i need to borrow your camera. \n\njerry: why? \n\ngeorge: well, i wanna put a picture of me and my boss mr. morgan up at the office. \n\njerry: what for? \n\ngeorge: they're reorganizing the staff, and i'm on thin ice with this guy as it is. \n\njerry: isn't putting this guy's picture on your desk a little transparent? \n\ngeorge: it better be. \n\nelaine: mr. pitt, i have something to tell you. \n\npitt: one second elaine. \n\nelaine: mr. pitt... \n\npitt: elaine, you know what i just did? i just amended my will to include you as a beneficiary. \n\nelaine: what? \n\npitt: well, i think of you as part of my family. you've come to be like a daughter to me and i want to make sure you're taken care of after i'm gone. \n\nelaine: (flattered) mr. pitt... \n\npitt: (sneezes) elaine, i feel a cold coming on. could you get me a cold pill from the medicine cabinet? \n\nelaine: oh no no, mr. pitt, you mustn't. you have to check with the pharmacy before you combine anything with your heart medicine, \n\npitt: yes, yes, i'll check with the pharmacist. \n\nelaine: we don't want anything to happen to you mr. pitt. we want you to live a long, long time. \n\ngeorge: (holding camera) look at this, i only have one picture left... how 'bout a shot of me and mr. morgan? \n\nmorgan: why? \n\ngeorge: why? because we're a team! c'mon! would you take this for us, dear? thank you very much. here we go... (to morgan) anyone ever tell you you look a lot like sugar ray leonard? yeah, you must get that all the time. \n\nmorgan: i suppose we all look alike to you, right costanza? \n\ngeorge: no, not a racial thing, there really is a resemblance... \n\nelaine: oh my god. \n\nwoman: who are you? \n\npitt: this is the girl i want to put in my will. elaine... \n\nman: please, rest mr. pitt. \n\nwoman: you're the assistant? why weren't you taking care of him? \n\nelaine: well, he gave me the morning off, i was doing a little... shopping. how did this happen? \n\nman: took a very dangerous combination prescription heart medicine and these other pills. \n\nelaine: mr. pitt, you were s'posed to talk with the pharmacist. \n\npitt: i spoke to someone who worked there. \n\nelaine: i'm gonna go and call that pharmacist. (she exits) \n\nwoman: how well do you know her? \n\nkate: jerry, listen, just so you know, before we take off they're gonna tell us what to do in the vent of a crash- \n\njerry: yes, i know. i've flown before. \n\nkate: oh good. i just didn't want you to freak out... the chance of a crash is very slim. do you have to go to the bathroom? \n\njerry: no. \n\nkate: (pause) because even if you have (jerry gets up to go) to go a little you'd better go now because you won't get another chance until way after take off. \n\nkramer: hey, how you doin'? \n\nearl: pretty good. \n\nkramer: name's kramer. \n\nearl: earl hafler, nice to meet you. i'm headed to houston, where you headed? \n\nkramer: oh i'm happy right here. isn't this place amazing? planes flying in from all corners of the world, and they know the minute they're arriving. \n\nearl: ah they don't know a darn thing. that's why my flight the houston's been delayed. they're all morons. matter of fact, i'll bet you that that flight to pittsburgh takes off before my flight to houston. \n\nkramer: bet? um, not betting. \n\nearl: friendly wager. \n\nkramer: i haven't made a bet in three years, i- \n\nearl: ah c'mon. keep things interesting, pass the time. \n\nkramer: okay, how much? \n\nearl: how 'bout 200? \n\nkramer: you're on, cowboy! \n\ngeorge: how ya doin'? \n\nman: okay. \n\ngeorge: nice day today. \n\nman: what? \n\ngeorge: i'm george. george costanza, you live around here? \n\nintercom: now arriving at gate 12... \n\nearl: this could be mexico city. \n\nkramer: c'mon seattle, let's go. \n\nearl: come on, mexico city! \n\nkramer: seattle, yeah! \n\nintercom: ...flight 42 from mexico city. \n\nkramer: all right, c'mon, let's go again. \n\nelaine: mr. pitt, do you need anything? \n\npitt: no. \n\nelaine: you need something to sit up. why don't i get you a pillow? \n\npitt: okay. \n\nkate: it's a pretty full house, the lighting guy's name is lew, he's got a birthday next week. \n\njerry: i don't care. \n\nkate: by the way, jerry, i don't want you to freak out, but the pilot is going to be in the audience. \n\njerry: who? \n\nkate: remember the plane we took here? the pilot is gonna be sitting out there watching the show. \n\njerry: i don't care, why are you telling me this? \n\nkate: i just didn't want you to freak out when you saw him. \n\njerry: why would i freak out? (to himself) pilot... \n\noff stage: ladies and gentlemen, a big hand for mr. jerry seinfeld! (clapping) \n\njerry: hey, all right. good afternoon ithaca. welcome, good to see you here... boy, i'll tell you, there's an awful lot of those orange cones you have on the throughway... (sees pilot) on the way... up here... um... i.. \n\nkate: it didn't go very well, did it? \n\njerry: no, it didn't. and you know why? seeing the pilot in the audience really freaked me out. \n\nkate: i knew it. \n\njerry: if you hadn't mentioned anything, i would have been fine. i became obsessed with him. \n\nkate: why did we invite him? stupid, stupid. when he asked for a ticket, i should have said no. i'm gonna go chew him out. \n\njerry: oh, it doesn't matter now. \n\nkate: don't worry, jerry. i'm on top of this. \n\njerry: yeah, you're on top of it, and i'm on the bottom! \n\nearl: well, mr. kramer, looks like you're in the hole $3200... will that be cash or check? \n\nkramer: all right, look, one more bet. double or nothing. c'mon. \n\nearl: all right, but i wanna see some cash on the table. \n\nkramer: all right, let me call my bank. you stay here. (he calls) \n\nnewman: hello? \n\nkramer: yeah, it's, uh, me. \n\nnewman: hey, what's up? \n\nkramer: all right, listen. i need some cash. \n\nnewman: what for? \n\nkramer: i just need it, that's all. \n\nnewman: oh no. don't tell me. you're gambling again, aren't you? oh you weak, weak man. where are you? \n\nkramer: i'm at the airport. \n\nnewman: the airport? \n\nkramer: we've been betting on arrivals and departures. (newman rolls eyes) but i'm down $3200 , so you've gotta get me some cash. \n\nnewman: i don't have that kinda dough. \n\nkramer: sure you do. \n\nnewman: oh no, no, not the bag! \n\nkramer: oh help me man, i'm desperate! \n\nnewman: all right, all right. \n\nintercom: sorry for the delay, folks, there is a slight complication that we're taking care of, and then we'll be on our way to la guardia... \n\njerry: (to katie) what is the complication? \n\nflight attendant: mr. seinfeld? \n\njerry: yes? \n\nflight attendant: i'm sorry, but the pilot has asked that you leave this plane. \n\njerry: what? \n\nflight attendant: apparently, he has some sort of problem with you. \n\nkate: i'm not surprised. i really let him have it, jerry. he has no business being in your audience if you didn't want him there. \n\njerry: i didn't care. \n\nflight attendant: well, now the pilot doesn't want you on his plane. \n\njerry: he can't just throw me off the plane! \n\nflight attendant: yes he can, if he has cause to believe a passenger will be a disturbance. \n\njerry: but i'm not a disturbance! \n\nflight attendant: well, apparently you are disturbing him, sir. \n\njerry: but someone is waiting for me! \n\nkate: jerry, i don't want you to freak out. \n\njerry: i'm freakin' out! i am freakin' out! \n\nkate: there's a flight leaving at eight, and another one at eight-thirty, which one do you want? \n\njerry: which one do you think i want? \n\nkate: the eight will get you in a little earlier. \n\njerry: then we'll make it the eight. \n\nkate: i'll book a hotel, do you want a standard room or mini suite?] \n\njerry: hotel? \n\nkate: yeah, it's eight in the morning. \n\njerry: no, no, no. i have to get home tonight. bridget's gonna be waiting for me at the diplomat's club. rent a car. \n\nkate: mid-size, luxury, or sports model, what's your preference? \n\njerry: i don't have a preference, okay! just make a decision yourself! stop bothering me with every minor little detail, please? \n\nkate: okay, you're a big celebrity. (she exits) \n\ngeorge: yo. \n\njerry: george. \n\ngeorge: hey, jerry, how was ithaca? \n\njerry: i'm still here. listen, you gotta go down to the diplomat's club... \n\ngeorge: hey, jerry, what was the name of the exterminator who fumigated your apartment when you had fleas? \n\njerry: carl, i think. \n\ngeorge: carl... yeah, he was a nice guy. \n\njerry: yeah, he was nice. \n\ngeorge: what company was it? \n\njerry: defent. \n\ngeorge: yeah, you know we spoke for a little bit... \n\njerry: you need an exterminator? \n\ngeorge: no, not really. \n\njerry: oh, don't tell me. 'cause he's black? \n\ngeorge: gotta go. \n\njerry: george, george! \n\njerry: hello, this is jerry seinfeld. is elaine there? \n\nwoman: hold on... elaine, there's a jerry seinfeld on the phone for you. \n\nelaine: hello? \n\njerry: elaine, i need you to do me a big favor. i need you to go down to the diplomat's club and meet bridget for me. i'm going to be late. \n\nelaine: that's at the airport, right? \n\njerry: right, i don't want bridget to think i stood her up. i'll never get another date with her. she'll freak out. \n\nelaine: all right, all right. you sound a little freaked out yourself. \n\njerry: i am a little freaked out! \n\nelaine: calm down, i'll take care of it. (ms. walker looks suspicious of elaine) \n\njerry: all right, but you have to go now. \n\nelaine: i said i'll take care of it! \n\nnewman: kramer. \n\nkramer: hey. \n\nnewman: okay, here it is. \n\nkramer: good. (to earl) here's my collateral. \n\nearl: so it's a mailbag, so what? \n\nnewman: so what? do you know whose mailbag that is? \n\nearl: (reading) david berkowitz. \n\nnewman: son of sam. the worst mass murderer the post office ever produced. \n\nearl: where did you get this? \n\nnewman: i took over his route. and boy, were there a lot of dogs on that route. \n\nearl: any of 'em talk to you? \n\nnewman: just to tell me to keep off the snacks! \n\nearl: (to kramer) your buddy's a helluva guy. \n\nkramer: yeah, don't i know it. \n\nearl: okay, cosmo, we're back in business. let's check out the board. now, who do you like? \n\nkramer: all right, how 'bout ithaca vs. boston? \n\nearl: all right, i'll give you a sportin' chance. i'll take ithaca. \n\nkramer: double or nothin'. \n\nearl: double or nothin'. \n\nnewman: i hope you know what you're doing... (kramer gives newman a look of lack of confidence) \n\njerry: (wakes up) where are we? \n\nkate: i'm not sure. \n\njerry: is this even a road? \n\nkate: oh we lost the road a half hour ago. \n\njerry: what? why didn't you wake me up? \n\nkate: you told me not to bother you with minor details. \n\njerry: no, road is a major detail! \n\nkate: okay, now i know. should i keep going or turn around, do you have a preference? \n\njerry: (pointing ahead) look out! \n\ngeorge: may i help you? \n\ncarl: i'm the exterminator. \n\ngeorge: oh, yes of course, come in. \n\ncarl: why didn't you want me to bring my equipment or wear my uniform? \n\ngeorge: yes, well, if the other people in the office saw that i called an exterminator, they would just panic. besides, this is sort of a friendly visit. carl, right? \n\ncarl: do i know you? \n\ngeorge: yeah, sure, we met at jerry seinfeld's apartment. when you fumigated for fleas over there. \n\ncarl: seinfeld... oh yeah, funny white guy, right? \n\ngeorge: jerry? yes, i suppose he is white. you know, i never really thought about it. i don't see people in terms of color. you know, there's someone i'd like you to meet. hand on... (to phone) is mr. morgan in? \n\nphone: mr. morgan left for dinner. \n\ngeorge: he left... huh... carl, you hungry? \n\ntv: here's a new twist on car pooling early this morning, a lost manhattanite drove through a residential backyard and wound up in a swimming pool near ithaca, new york. comedian jerry seinfeld, a passenger, seemed a little freaked out. \n\njerry: that's it! no more questions! i don't care! \n\npitt: that's him! that's the man who gave me the pills in the drug store! he's no pharmacist. \n\nwomanewman: jerry seinfeld... i know that name. he called here earlier for elaine. (she looks at mr. pitt) \n\ngeorge: (to carl) oh, by the way, order anything you want, it's all on me. just do me a tiny favor pretend we're old friends. oh my god! mr. morgan! what a coincidence, it's mr. morgan. mr. morgan, i want you to meet a dear old friend of mine, carl. \n\ncarl: i'm the exterminator. (morgan confused) \n\ngeorge: that's... what we used to call him in high school, the exterminator. he's a linebacker. oh, did we have some wild times. \n\nearl: well, that newman was your good luck charm. \n\nkramer: yeah, he was. \n\nearl: i should have quitted at double or nothin'. travelers checks acceptable? \n\nkramer: oh i accept. \n\nnewmanewman: (talking to another man) ...yeah he worked in the cubicle right next to me. we once double dated. \n\nkramer: yeah, it's a pleasure doin' business with a gentleman like yourself. (elaine enters) \n\nelaine: kramer. \n\nkramer: oh hi elaine. what are you doing here? \n\nelaine: jerry asked me to meet his girlfriend here. did you here about his plane in ithaca? \n\nearl: what about the plane in ithaca? \n\nelaine: oh, our stupid friend freaked out the pilot. single handedly delayed the plane a whole hour. can you believe that? \n\nkramer: boy... \n\nearl: your friend caused the delay? \n\nelaine: uh huh. \n\nearl: you're a cheat! nobody hustles earl hafler. \n\nkramer: c'mon! \n\nearl: see you around, cosmo. \n\nkramer: what? \n\nelaine: poison you? jerry seinfeld tried to poison you? wha? mr. pitt, what are you, delirious? he's never even met you! \n\npitt: you're fired, elaine. goodbye. \n\nelaine: goodbye? (elaine thinks of memories with mr. pitt) \n\njerry: bridget! \n\nbridget: jerry, what happened? \n\njerry: oh, i'm so sorry. i got stuck out of town. i missed our whole time together. \n\nbridget: well, my plane doesn't leave for another half hour. \n\njerry: really? (they start to make out, jerry sees the pilot on the plane) oh my god, that's him! that's the pilot! \n\ngeorge: i love this place. you know, carl and i come here all the time. \n\nmorganewman: is that right? \n\ncarl: yeah, i come here all the time. you wouldn't believe the rat problems in the kitchen. \n\nmorganewman: (george spits out food) i thought so. you really are an exterminator. this time, george, you've sunk to a new low. (he leaves) \n\ngeorge: check, please. \n\nwaiter: hey, sugar ray leonard can eat here on the house. \n\ngeorge: mr. morgan! did you hear that? mr. morgan! \n\ngeorge: take toilet paper for example. do you realize that toilet paper has not changed in my lifetime? it's just paper on a cardboard roll, that's it. and in ten thousand years, it will still be exactly the same because really, what else can they do? \n\nsiena: that's true. there really has been no development in toilet paper. \n\ngeorge: and everything else has changed. but toilet paper is exactly the same, and will be so until we're dead. \n\nsiena: yeah, you're right george. what else can they do? \n\ngeorge: it's just paper on a roll, that's it. and that's all it will ever be. \n\nsiena: wow. \n\ngeorge: you find this interesting, don't you? \n\nsiena: yes. yes, i do. \n\nelaine: (to the busboy) oh, thanks very much, the soup was really good. \n\njerry: what are you telling him for? \n\nelaine: what? \n\njerry: he's the busboy, you think he cares about the soup? \n\nelaine: yeah, why? wouldn't he want the soup to be good? \n\njerry: elaine, it's all this guy can do to keep from killing himself. you think he's back there, talking to the chef, going, \"hey, they like the soup! keep it up!\"? \n\nelaine: hey, isn't that alec berg? \n\njerry: yep, alec berg. he's got a good 'john houseman' name. alec beeerg. mr. beeerg. \n\nelaine: i can't stand him, he is so pretentious. \n\njerry: john houseman? \n\nelaine: no, alec berg. \n\nalec: (approaching) elaine! \n\nelaine: hi! \n\nalec: hi, how are you? jerry. \n\njerry: hi, alec. \n\nalec: did you hear about gary fogel? \n\njerry: yeah. \n\nalec: you gonna go to the funeral on friday? \n\njerry: yeah, hey did i see you on tv at the ranger game? were those your seats right behind the glass? \n\nalec: those are them, yeah. season tickets. uh, you know, unfortunately i can't go tonight, so they're available if you'd like to use them. \n\njerry: oh, i'd love to, are you sure? \n\nalec: absolutely, you just call my secretary, she'll arrange everything. \n\njerry: gee thanks! thanks a lot! \n\nalec: it's my pleasure. be good. (walking away, he stops abruptly) you know, i actually might not use them on friday either so i'll let you know. \n\njerry: alright, thanks again. \n\nelaine: thank you very much. \n\njerry: really, thank you. \n\njerry: well what about these nitwits that get on a plane with nothing to read? you know who these people are? \n\nelaine: who? \n\njerry: these are the people that want to talk to you. they got nothing else to do, why not disturb you? \n\nelaine: i will never understand people. \n\njerry: they're the worst. \n\ngeorge: something's up, there's something in the air. \n\njerry: well, what is with you? \n\ngeorge: well, i think this is it. \n\nelaine: what's it? \n\ngeorge: i saw siena again. \n\nelaine: siena? \n\njerry: yeah, he's dating a crayon. \n\ngeorge: we discussed toilet paper. \n\njerry: toilet paper? \n\ngeorge: yeah, i told her how toilet paper hasn't changed in my lifetime, and probably wouldn't change in the next fifty thousand years and she was fascinated, fascinated! \n\njerry: what are you talking about? \n\nelaine: yeah. \n\njerry: toilet paper's changed. \n\nelaine: yeah. \n\njerry: it's softer. \n\nelaine: softer. \n\njerry: more sheets per roll \n\nelaine: sheets. \n\njerry: comes in a wide variety of colors. \n\nelaine: colors. \n\ngeorge: ok, ok, fine! it's changed, it's not really the point. anyway, i'm thinking of making a big move. \n\njerry: what? \n\ngeorge: i might tell her that i love her. i came this close last night, then i just chickened out. \n\njerry: well, that's a big move, georgie boy. are you confident in the 'i love you' return? \n\ngeorge: fifty-fifty. \n\njerry: cause if you don't get that return, that's a pretty big matzoh ball hanging out there. \n\ngeorge: aw, i've just got to say it once, everybody else gets to say it, why can't i say it? \n\nelaine: what, you never said it? \n\ngeorge: once, to a dog. he licked himself and left the room. \n\njerry: well, so it wasn't a total loss. \n\nkramer: hey. \n\njerry: hey, i forgot to tell you! i got tickets to the rangers-devils playoff game tonight! \n\nkramer: oh, i'm there, monongahela! \n\njerry: what about you, george? \n\ngeorge: eh eh eh, can't do it, can't do it, sorry, i got a date. \n\nkramer: so, so. \n\ngeorge: oh no no no, if you must know, i would rather be with her than go to the game. \n\nkramer: she must be a very special lady, huh george, yeah. \n\njerry: well, what do i do with the extra ticket? \n\nelaine: oh hey, can i bring david puddy? he's a big devils' fan. \n\njerry: sure, fine with me. \n\ngeorge: hey, by the way, if anybody wants an inside tour of the zoo, siena works there as a trainer. \n\nkramer: so she works at the zoo? \n\ngeorge: yeah, yeah. \n\nkramer: yeah, like diane fosse. you know she's the only person that's ever been accepted into gorilla society. and you know, once those gorillas accept you, you got it made in the shade. \n\nelaine: so how long have you been a devils' fan? \n\npuddy: (off camera) since i was a kid, i'm from jersey. \n\nelaine: yeah? well, we're gonna kick your butts tonight. \n\npuddy: hey, no way, man. \n\nelaine: yes. \n\npuddy: we're primed. \n\nelaine: alright, you almost ready? cause jerry and kramer are gonna be here any second. \n\nelaine: what the-- \n\npuddy: so what do you think? \n\nelaine: what is that? \n\npuddy: i painted my face. \n\nelaine: (still in disbelief) you painted your face? \n\npuddy: yeah. \n\nelaine: why? \n\npuddy: you know, support the team. \n\nelaine: well, you can't walk around like that. \n\npuddy: why not? \n\nelaine: because it's insane? \n\npuddy: hey, you gotta let them know you're out there, this is the playoffs. \n\nkramer: hey. \n\npuddy: hey. \n\nelaine: dave, um, painted his face. \n\nkramer: yeah, that's cool. well, you gotta support your team. \n\npuddy: ok, ready to go? \n\nkramer: yeah. \n\npuddy: (startlingly loud) let's get it on!!! alright!! go devils!! go devils!! let's go devils!! \n\npuddy: you're dead, messier! we're gonna get you, messier! \n\nfan #1: will you sit down? \n\npuddy: hey man, i'm just trying to support the team. \n\nelaine: will you sit down? you're disturbing everybody. sit down! \n\npuddy: oh yeah, because you're a ranger fan and you know i'm messing with their heads. \n\npuddy: go devils!! \n\nradio announcer: devils goal! stephan richer scores from just inside the blue line! and the devils take-- (george turns down the volume) \n\ngeorge: you know, i could have actually gone to that. \n\nsiena: so why didn't you? \n\ngeorge: well, i didn't want to break our date. \n\nsiena: oh, well. \n\ngeorge: because i... i love you. \n\nsiena: you know, i'm hungry. let's get something to eat. \n\npuddy: ha ha! we took it to you! you couldn't get it out of your zone all night. we were aggressive, we didn't let you penetrate! \n\nkramer: alright, that's enough out of you, there's still three more games left in this series, my friend, and it's far from being over. very far from being over. (notices a car coming right towards puddy, who's crossing the street) watch out! \n\npuddy: (pounding the hood) hey, what are you doing?! watch where you're driving, man! (he approaches the passenger side window) don't mess with the devils, buddy. we're number one, we beat anybody! we're the devils! the devils!! haaaa!!! \n\nfather hernandez: el diablo! dios mio! el diablo!! \n\njerry: \"i'm hungry. let's get something to eat.\" \n\ngeorge: yup. \n\njerry: big matzoh ball. \n\ngeorge: huge matzoh ball. \n\njerry: those damn 'i love you' returns. \n\ngeorge: well, it's all over. i slipped up. \n\njerry: oh, you don't know. \n\ngeorge: you have any idea how fast these things deteriorate when there's an 'i love you' out of the bag? you can't have a relationship where one person says, \"i love you\", and the other says, \"i'm hungry. let's get something to eat.\". \n\njerry: unless you're married. \n\ngeorge: i mean, now she thinks that i'm one of these guys that love her. nobody wants to be with somebody that loves them. \n\njerry: no, people hate that. \n\ngeorge: you want to be with somebody that doesn't like you. \n\njerry: ideally. \n\ngeorge: i am never saying 'i love you' again unless they say it first. \n\nwaitress: matzoh ball soup? \n\ngeorge: that'd be me. \n\nkramer: hey, jerry? you're a smart guy, right? \n\njerry: no question about it. \n\nkramer: alright, you know i'm supposed to go on this special tour today with george's girlfriend. \n\njerry: at the zoo? \n\nkramer: yeah, but before i met up with her, i stopped to look at the monkeys, when all of a sudden i am hit in the face with a banana peel. i turn and look and there is this monkey really laughing it up. then someone tells me that he did it. well, i pick up the banana peel and i wait for that monkey to turn around. and then i *whap* let him have it. \n\njerry: kramer, you threw a banana peel at a monkey? \n\nkramer: well, he started it! \n\njerry: it's a monkey, kramer! \n\nkramer: well, he pushed my buttons, i couldn't help it, jerry. \n\njerry: well, i still think it's wrong. \n\nkramer: alright, alright, fine. you take the monkey's side, alright, go ahead. \n\njerry: i'm not taking anyone's side. \n\nkramer: (walking out) cause i know what happened, jerry. (remembering something and walking back in) did you call alec berg and thank him for the hockey tickets? \n\njerry: no. \n\nkramer: oh, jerry, what are you waiting for? \n\njerry: what do i gotta call him for? i thanked him five times when he gave them to me, how many time i gotta thank him? \n\nkramer: oh, no no no, you gotta call him the next day, it's common courtesy. \n\njerry: no, i don't believe in it. i'm taking a stand against all this over thanking. \n\nkramer: jerry, good manners are the glue of society. \n\njerry: hey, if i knew i had to give him eight million 'thank you's, i wouldn't have taken the tickets in the first place. \n\nkramer: alright, you know what this is gonna do? he's gonna be upset because you didn't call him and we're not gonna get those tickets for friday night. \n\njerry: ah, you're out of your mind. \n\nkramer: alright, where you going? \n\njerry: i gotta get a suit cleaned, i have a funeral on friday. \n\nkramer: who died? \n\njerry: remember the guy who pretended he had cancer so o would buy him the toupee? \n\nkramer: so he actually had it? \n\njerry: no, car accident. he was trying to adjust his toupee while he was driving and he lost control of the car. \n\nelaine: that poor priest. he was just visiting from el salvador. now he's gone completely loco. \n\njerry: the one puddy screamed at in the car? \n\nelaine: yeah. he thinks he saw the devil. he won't leave his room in the church basement. \n\njerry: well, that's what you get for getting mixed up with a face painter. \n\nelaine: i mean, what compels a seemingly normal human being to do something like that? \n\njerry: gotta support the team. \n\nelaine: you know i really hate my clothes. \n\njerry: hm. \n\nelaine: i open up my closet, there's just nothing. \n\njerry: hm. \n\nelaine: nothing. i hate everything i have, i really hate it. (the weeping increases in volume and intensity) i mean, at this point, it's like i can wear something three or four times and that's it. \n\njerry: hm. \n\nelaine: it's getting to be a terrible problem for me. \n\njerry: (noticing alec berg walk in, whispers) hey, alec! \n\njerry: did you see that? what kind of a 'hello' was that? \n\nmr. pless: ah, mr. kramer? \n\nkramer: yes. \n\nmr. pless: thanks for coming. \n\nkramer: so, uh, what did you want to see me about? \n\nmr. pless: well, mr. kramer, to get right to it, we're having a bit of a problem with barry. \n\nkramer: barry? \n\nmr. pless: the chimpanzee. \n\nkramer: oh. well, uh, what's the problem? \n\nmr. pless: well, he's not functioning the way he normally does. he seems depressed. he's lost his appetite. he's even curtailed his autoerotic activities. and we think this is directly related to the altercation he had with you the other day. \n\nkramer: so, so what do you want me to do? \n\nmr. pless: well, frankly we'd like you to apologize. \n\nkramer: yeah, well he started it. \n\nmr. pless: mr. kramer, he is an innocent primate. \n\nkramer: so am i. what about my feelings? don't my feelings count for anything? oh, only the poor monkey's important. everything has to be done for the monkey! look, i'm sorry. i-- \n\nsiena: hey, that's ok. well, i've gotta go feed the marmosets. \n\nkramer: (to siena as she's walking out, but she appears to ignore) you know george really likes you. \n\nmr. pless: she doesn't hear too well out of her left ear. \n\nkramer: oh. \n\njerry: i mean, do you think it's possible that he's mad at me because he didn't get the day-after 'thank you'? \n\ngeorge: wait a minute, you were at a funeral, right? \n\njerry: yeah. \n\ngeorge: well, people never give a good 'hello' at a funeral. i mean, they go like this (george gives an extremely understated nod) that's the biggest. \n\njerry: yeah, yeah, that's kinda what he gave me. \n\ngeorge: hey, they can't go, \"hey! you look fabulous!\" \n\njerry: hey. \n\nkramer: hey. well, i just spoke to your girlfriend. \n\ngeorge: girlfriend, yeah, right. \n\nkramer: anyway, she asked me to apologize to barry. \n\ngeorge: barry? \n\nkramer: the monkey. \n\njerry: well? \n\nkramer: nothing doing. jerry, i didn't do anything. it's the monkey that should be apologizing to me. \n\njerry: well, i don't think that's gonna happen. \n\nkramer: well, i'm sorry. well, george, i tried to put the good word in for you with siena, but i don't think she heard me. you know, left ear? \n\ngeorge: what? \n\nkramer: yeah, her boss told me that she can't hear very well out of her left ear. what, you didn't know that? \n\ngeorge: oh my god. \n\njerry: what? \n\ngeorge: she probably never heard it. don't you see what this means? it's like the whole thing never happened. it's like when superman reversed the rotation of the earth to save lois lane! \n\njerry: are you gonna say it again? \n\ngeorge: that's the question, jimmy. \n\ngeorge: i'm gonna do it. \n\njerry: what? after what you just went through, i thought you said you'd never say it again. \n\ngeorge: i'd like to say it once to someone that can actually hear it! \n\nkramer: what's going on? \n\njerry: he's gonna talk into her other ear. \n\nkramer: oh. well listen, i almost forgot to ask you. what happened at the funeral? now, did you talk to alec berg? \n\njerry: yeah, i saw him. \n\nkramer: alright, so he's gonna give you the hockey tickets, huh? \n\njerry: well, not exactly. \n\nkramer: he's mad, isn't he? see, i knew it. \n\njerry: i don't know if he's mad. \n\nkramer: alright, so what happened when you saw him? \n\njerry: well, i didn't really get a good 'hello', but see, i was at a funeral. \n\nkramer: uh huh. \n\njerry: see, so i don't know if i got a funeral 'hello' or he was mad because he didn't get his day-after 'thank you'. \n\nkramer: see, i told you, jerry, i told you! \n\njerry: look, what do you want me to do? \n\nkramer: i want you to get on this phone and give him his 'thank you'! \n\njerry: no. no, i can't! \n\nkramer: jerry, this is the way society functions. aren't you a part of society? because if you don't want to be a part of society, jerry, why don't you just get in your car and move to the east side! \n\njerry: look, we got five hours before the game. i am betting it was a funeral 'hello'. he knows we're here, he knows the number, he knows we want to go. there's plenty of time for him to call and give us the tickets. \n\nkramer: you stubborn, stupid, silly man! \n\npuddy: hey, great dip. you made this? \n\nelaine: no, it's from the store. \n\npuddy: oh. hey, how come people don't have dip for dinner? why is it only a snack, why can't it be a meal, you know? i don't understand stuff like that. \n\nelaine: david? david, i think we aught to talk. \n\npuddy: alright, that's cool. \n\nelaine: david, i don't think we should see each other anymore. \n\npuddy: you gotta be kidding, how come? \n\nelaine: well, you see, david, you're a face painter. \n\npuddy: yeah, that's right. \n\nelaine: well, it's not that i don't like you, but, well to be perfectly honest, i'm just having some trouble getting past the face painting. \n\npuddy: well, alright, so you don't like the face painting, i just won't paint it anymore. \n\nelaine: yeah, but you like the face painting. \n\npuddy: well, i don't need to do it. it's not like a habit or anything. \n\nelaine: oh. you mean you'd stop it for me? \n\npuddy: yeah, that's right. \n\nelaine: that's so, that's so sweet. \n\npuddy: ah, c'mere. (they kiss) alright, i gotta go home and get changed before the game. i'll be back, we'll make out. \n\ngeorge: siena, i love you. \n\nsiena: yeah, i know. i heard you the first time. \n\ngeorge: yeah. just confirming. \n\njerry: hello? oh, hi mom. no, listen, i was expecting somebody else. i'm sorry, i can't talk now, i gotta keep the line clear, i'll call you later. yes, i know i have call waiting but i don't trust it in an emergency. good bye. \n\nkramer: anyway, i um, i just want to say that i'm sorry. i lost my temper and i probably shouldn't have. i took it out on you and, look, if i've caused you any problems as a result of my behavior, well then, i'm sorry. i apologize. even though, barry, between me and you, we both know that you started it. i mean, who's kidding who? but they tell me that you're very upset, and god forbid i should disturb the very important monkey, i'm just hoping we can put this behind us, let's just move on with our lives, ok? so no hard feelings? \n\nelaine: what is that? \n\npuddy: that's the letter 'd'. \n\nelaine: why is the letter 'd' painted on your chest? \n\npuddy: well, i'm going to the game tonight, and me and these five other guys are gonna take our shirts off and spell out 'devils'. \n\nelaine: but you said no more painting. \n\npuddy: no, i said no more face painting, and as you can see this is not my face. \n\nelaine: yeah, that's right. \n\nkramer: well? did he call? \n\njerry: no. \n\nkramer: oh, come on, jerry! come on, this is stupid! it's six o'clock! it's all over, just pick up the phone and thank him! \n\njerry: alright! (picks up the phone and dials) hello, alec? hi, it's jerry seinfeld. you know, you got a great 'john houseman' name. alec berg. did you hand in your assignment, mr. berg? \n\nalec: what can i do for you, jerry? \n\njerry: well, alec, the reason i called is i just wanted to thank you for the tickets from the other night. \n\nalec: i wish you'd called me earlier, i could have given you my tickets for tonight. \n\njerry: oh, you already gave them away? \n\nalec: yeah, but you know what? i have a friend, he's got a couple of seats. if you don't mind the nose bleed section, they're yours. \n\njerry: no, we don't care, we just want to go. \n\nalec: there is one little catch, though. \n\npuddy: hey, great game, huh? \n\npriest: father hernandez? \n\nfather hernandez: huh? \n\npriest: una senora que te vino a ver. ella dice que tiene informacion muy importante, y que te puede ayudar. (subtitled \"a woman here to see you, she has important information that could be helpful to you.\") \n\nfather hernandez: bueno. \n\npriest: al fini finalmente par el llover. (subtitled \"finally it stopped raining.\") \n\nfather hernandez: aha, bueno. \n\nelaine: hello father. \n\nfather hernandez: oh. la madonna! madre de christo! yo estoy lista! \n\ngennice: (crying) (sob sob) \n\njerry: (to himself) now what am i supposed to do here? shall i go over there? it's not like somebody died. it's \"beaches\" for god's sake. if she was sitting next to me i'd put my arm around her. i can't be making a big move like going all the way over there. i can't. i won't. \n\njerry: she calls me this morning and tells me she's upset i didn't console her. i mean it was \"beaches\" for god's sake. what, what do you do in a situation like that? \n\ngeorge: where were you? \n\njerry: i was sitting on the chair. she was over here on the couch. \n\ngeorge: well you know, if you were sitting right next to her you'd have to console her no matter what. \n\njerry: of course. \n\ngeorge: when you're talking about a movie like \"beaches\", moving from the chair to the couch , . . . that's quite a voyage. \n\njerry: yeah, \n\nkramer: hey. \n\ngeorge: hey. i gotta go. \n\nkramer: where you going? \n\njerry: the improv is playing \"rochelle rochelle\" the musical. \n\nkramer: really? what is bette midler playing? is she going to be there? \n\njerry: she might be. she's the star of the show. \n\nkramer: bette midler is going to be in the park today? yeeee. jerry, don't tease me. \n\ngeorge: i didn't know you were such a bette midler fan. \n\nkramer: so maybe i'll go down there and watch, uh? she'll be there, ,maybe. \n\ngeorge: gennice palying today? \n\njerry: yeah, maybe. \n\nkramer: who's gennice? \n\njerry: that's the understudy. i'm dating her. \n\nkramer: oh, uh, is this uh, bette midler's understudy? \n\njerry: yeah. \n\nkramer: oh, understudies are a very shifty bunch. the substitute teachers of the theater world. \n\njerry: i'm glad she's an understudy. i don't have to avoid going back stage and having to think of something to say. \n\ngeorge: going backstage is the worst. especially when they stink. you know that's a real problem. \n\njerry: just once i would like to tell someone they stink. you know what? i doidn't like the show. i didn't like you. it just really stunk. the whole thingreal bad. stinkaroo. thanks for the tickets though. \n\nruby: you late. \n\nelaine: i know i know. i didn't have change for the bus and they don't give change in this city. so they threw me off the bus \n\nruby: \"that's a shame\". you'll have to wait for lotus now. \n\nelaine: how long do you think this will take. i have a millllioooon things to do. \n\nruby: \"mustn't keep the princess waiting. princess in a big hurry.\" \"no change for bus\" \"poor princess.\" \n\nelaine: what?, uh? \n\nruby: nothing, won't be long. \n\nlotus: \"princess wants a manicure.\" \n\nsunny: \"oh lucky me.\" \n\nlotus: \"oh, you got the princess.\" \n\nelaine: what is so funny? \n\nruby: tell knock-knock joke. \n\nelaine: the korean women were talking about me. i think they were calling me a dog. \n\njerry: how would you know? you don't speak korean. \n\nelaine: because this woman came in with a dog and ruby called the dog the same word they used when they were pointing at mege ge ge \n\nkramer: you know, maybe in korean \"dog\" isn't an insult. could be like the word \"fox\" to us. oh, she's a dog! \n\njerry: why don't you go to another nail shop? \n\nelaine: because they're the best jerry, the best. look. maybe i'm just being paranoid. \n\njerry: what you need is a translator to go in the shop with you and tell you what they're saying. \n\nelaine: yeah, who speaks korean? \n\njerry: you know who speaks korean? \n\nelaine: no, who? \n\njerry: george's father. \n\nelaine: you gotta' be kidding me. how does he speak korean? \n\njerry: he used to go there a lot on business. \n\nelaine: what did he do? \n\njerry: he sold religious articles the statues of jesus, the virgin mary, that were manufactured in korea. \n\nelaine: uh, \n\njerry: george, does your father speak korean? \n\ngeorge: yeah, he once bumped into reverend yung sun moon. \n\njerry: oh, hi gennice. \n\ngennice: hi jerry. \n\njerry: this is george, this is kramer. \n\ngennice: nice to meet you. \n\njerry: playing today? \n\ngennice: no. i'm on the bench today. \n\njerry: they really stick to that understudy rule. \n\nkramer: so she's coming? \n\ngennice: oh, yeah, she'll be here. . . .(drops hot dog) oh no, my frankfurter, my frankfurter fell (sob sob sob sob) . it was really good. i can't believe that i dropped it. (sob sob sob sob) \n\njerry: it's okayit's just a hot dog, (still sobbing) everything is going to be okay. \n\ngennice: no it (sob) was really good. \n\nkramer: look it's bette it's bette! ah, ah, ah, . . . bette, psst, hi. \n\nbette: hi. \n\nkramer: uh, i just want to say i think you're wonderful. \n\nbette: uh, thank you. \n\nkramer: yeah, i've seen you in everything you've done. \n\nbette: really? \n\nkramer: anything i can get you? water? they got ice over here. \n\nbette: what flavours do they have? \n\nkramer: chocolate, lemon, and uh, cherry. \n\nbette: how about pineapple? \n\nkramer: pineapple, sure, alright, i'll be right back. \n\nice cream vender #1: no pineapple. just cherry, lemon and tutti-frutti \n\nkramer: oh, uh, uh. (leaves) \n\nelaine: anyway, mr. costanza, what i want you to do is to come to the shop with me and tell me what they are saying. you do speak korean? \n\nfrank: i once talked to the reverend yung son moon. he bought two jesus statues from me. he's a hell of a nice guy. \n\nelaine: uh, ha. \n\nfrank: ever see that face on him? like a biiig apple pie. \n\nelaine: yeah, yeah. uh, uh listen mr. costanza, if uh, if you do this for me i'll get you a manicure, i'll pay for it. or you can get a pedicure if you want. \n\nfrank: no one is touching my feet. between you and me, elaine, i think i've got a foot odour problem. \n\ngeorge: i watched \"beaches\" on cable last night. (wings?)  give me a break. \n\nbette: get some talent then you can mouth off. \n\numpire: strike three. \n\nbette: what? are you blind? \n\numpire: what? \n\nbette: nothing, nothing. \n\nfrank: i had an affair with a korean woman. \n\nelaine: uh, mr. costanza, i \n\nfrank: no, i feel i need to unburden myself. i loved her very deeply. but the clash of cultures was too much. her family would not accept me. \n\nelaine: mr. costanza, i, \n\nfrank: maybe it was because i refused to take off my shoes. again, the foot odour problem. her father would look at me and say, \" eno enoa juang \". which means, \"this guy - this is not my kind of guy\". \n\nice cream vender #2: sure i got pineapple. \n\nbette: move it in. move in everybody. get your shrimp here. shrimp on special today! \n\njerry: come on george, just loosen up. \n\njerry: come on george. \n\nkramer: i got the pineapple.  i got the pineapple. \n\njerry: (to george) keep going. \n\ngeorge: aaaaaah \n\numpire: safe! \n\ngeorge: come on it's just a game. \n\nkramer: (holding bette) don't worry kramer is going to take care of everything. see,, i got you pineapple. i saw beaches last night for the fourth time (sings) \"you are the wind\" \n\ntv: the show will go on but not bette midler. while playing softball in the park ms. midler was injured when another player thoughtlessly rammed her at home plate. all captured on amateur video tape. she will be out for two weeks from her broadway show; rochelle rochelle - the musical. \n\ngennice: . . . thank you. (hugs jerry and george) \n\njerry: well we \n\ngennice: no, please. this is the first time in my life (sobs) that anyone has ever done anything like this for me. i've always had to struggle so hard for everything i ever got. (sobbing) and i know this is going to be my big break. (sobbing) \n\njerry: (with no emotion) it's okay. everything is going to be all right. \n\nkramer: come on jerry, open up. i know you're in there! \n\njerry: come back another time. \n\nkramer: so...you're all in here together. how convenient. i hope you're all proud of yourselves. \n\nkramer: so my dear you think you can get to broadway. well, let me tell you something. broadway has no room for people like you. not the broadway i know. my broadway takes people like you and eats them up and spits them out. my broadway is the broadway of merman, and martin, and fontaine, and if you think you can build yourself up by knocking other people down... ...good luck... (exits) \n\nelaine: hi everyone. um, this is my friend, frank. \n\nruby: what would you like today? manicure, pedicure? \n\nfrank: i'll take a manicure. i don't take my shoes off for anyone. \n\nruby: \"that's the least of his problems.\" \n\nfrank: what was that? \n\nelaine: what'd they say? what'd they say? \n\nfrank: they made a derogatory comment about me. \n\nruby: \"she's with a man twice her age.\" \"he doesn't look like he's got much money either.\" \n\nlotus: \"check out that sweater\". (all laughing) \n\nruby: \"i think i saw a moth fly out of a pocket.\" \n\nlotus: \"what happened to his tail?\" \n\nfrank: okay, that's it! \"oki on awa\" where's my tail? i heard every word you said. you got some nerve. \n\nkim: that voice? it sounds so familiar. it reminds me of when i was ayoung girl in korea and i met an american businessman. he was a very unusual man. quick temperd with a strange halting way of speaking. we fell in love but when i brought him home to meet my father? he refused to take his shoes off. and there was a terrible fight. \n\nlotus: that man also refuses to take his shoes off. \n\nfrank: (from other room) i never seen people treated like this! \n\nruby: you brought in a spy! . . . get out! \n\nkim: frank? \n\nfrank: kim? \n\nkramer: (on phone) a turkey sandwich. a side of slaw,  you want whit e meat or dark? \n\nbette: white meat. \n\nkramer: yeah, white meat. and if i see one piece of dark meat on there. it's your ass buster. \n\nbette: get me one of those black and white cookies. \n\nkramer: yeah, all right, yeah. (hangs up) they don't have any. but don't worry i'm going to get you one somewhere. \n\nbette: good. because if i don't get a black and white cookie i'm not going to be very pleasant to be around. \n\nkramer: now that's impossible. \n\nelaine: (sob sob) (bumps into man with an umbrella)  i don't even know where i'm going. \n\npeterman: that's the best way to get someplace you've never been. \n\nelaine: yes, (sob) i suppose, \n\npeterman: have you been crying? \n\nelaine: yes, (sob) you see this (sob) woman, this manicurist, \n\npeterman: oh no, that doesnt matter now. that's a very nice jacket. \n\nelaine: uh, (sob) thanks. \n\npeterman: very soft, huge button flaps, cargo pockets, draw string waist, deep biswing vents in the back perfect for jumping into a gondola. \n\nelaine: how do you know all that? \n\npeterman: that's my coat. \n\nelaine: you mean..? \n\npeterman: yes, i'm j. peterman. \n\nelaine: oh! \n\njerry: i don't know why i have to go to the hospital. i didn't do anything to bette midler. driver can you stop over here, we're picking somebody up. \n\ngennice: hey, i didn't do anything. i was never informed.  you can all go straight to hell. you see that? you see what i am going through? \n\ngeorge: so what? somebody dropped an egg on my head as i went into my building last night. \n\njerry: hey, i'm being heckled on stage. people are yelling out galloogy. \n\ngennice: i'm having a little trouble with all this. i mean all i ever wanted to do is sing. now i'm the focus of this big media frenzy. (sob) nobody in the show will even talk to me. \n\njerry: stop your crying will ya? \n\ngennice: what? \n\ngeorge: you heard him. \n\ngennice: oh, don't you you're the reason this whole thing happened. \n\ngeorge: oh, yeah. i read what you said to the papers yesterday. you weren't in on the planing. what planning? you think we planed this? uh? \n\ncabbie: wait. wait. i know you. you knocked bette midler out of rochelle rochelle the musical. i want you creeps out of my cab. \n\njerry: hey, i had nothing to do with it. \n\ncabbie: get out of my cab. you should go to prison. you should be in prison for the rest of your life. get out, each of you. each and every one of you get out of my cab. \n\npeterman: then in the distance i heard the bulls. i began running as fast as i could. fortunately i was wearing my italian captoe oxfords. sophisticated yet different; nothing to make a huge fuss about. rich dark brown calfskin leather. matching leather vent. men's whole and half sizes 7 through 13. price $135.00. \n\nelaine: oh, that's not too expensive. \n\npeterman: that shirt. where did you get it? \n\nelaine: oh, this innocent looking shirt has something which isn't innocent at all. touchability! heavy, silky italian cotton, with a fine almost terrycloth like feeling. five button placket, relaxed fit, innocence and mayhem at once. \n\npeterman: that's not bad! \n\nkim: oh, frank. so many years. if only you had taken your shoes off. \n\nfrank: i couldn't because i had a potential foot problem. \n\nkim: i thought maybe you had a hole in your socks. \n\nfrank: i wiped them for two minutes on the mat. i don't know why your father had to make a federal case out of it. \n\nkim: anyway that is all in the past. we have our whole future ahead of us. \n\nfrank: between you and me i think your country is placing a lot of importance on shoe removal. \n\nkim: you short stop me? we don't do that in korea! take me home. inever want to see you again. \n\nkramer: hi, here. i made this for your. (gives her a pasta statue) \n\nbette: what is it? \n\nkramer: it's macaroni midler. \n\nbette: macaroni midler? \n\nkramer: yeah, see how you're singing? \n\nbette: yeah ha ha. well you made a long journey from milan to minsk. \n\nkramer: oh, what's that from? \n\nbette: oh, that's one of the songs from my show. bette sings \n\nkramer: oh you are so freaking talented. \n\nkramer: oh, so look who's here. what do you want. \n\njerry: we just want to talk to her. we want to apologize and tell her the whole thing was an accident. \n\nkramer: no, no. i'm sorry it's out of the question. \n\njerry: what? \n\nkramer: bette is recuperating right now and i'm not going to allow anything to disturb her. \n\ngeorge: who are you to decide? \n\nkramer: i'm calling the shots around here so there won't be anymore accidents! \n\ngeorge: hey, look, kramer, \n\nkramer: ah! i don't want her disturbed. \n\nruby: hello, elaine. \n\nelaine: hello \n\nlotus: we're so excited. \n\nelaine: you're welcome. \n\nruby: we'll see you inside. \n\njerry: what happened? \n\nelaine: well i felt bad about the spying, so you know, ,i got them tickets to the show. \n\njerry: oh,, that's nice. alright, i'll see you later. \n\nelaine: wait, wait. i didn't get to tell you about my new job. \n\njerry: where? \n\nelaine: writing for the j. peterman catalogue. \n\njerry: (pushing her) how did you get that? \n\nelaine: i met him. \n\njerry: you met j. peterman? \n\nelaine: yeah. \n\njerry: what is he like? \n\nelaine: he wore a classic courtman's duster. beige corduroy collar, 100% cotton canvas, high waist, nine pockets, six on the outside, great for running along side a train, (jerry walking away) waving last goodbyes, posing on a veranda, men's sizes ... \n\njerry: (walking away) yeah, i'll see ya'. \n\nelaine: . . . small, medium, large, xl, double... \n\njerry: well, break a leg tonight. \n\ngennice: i'm really nervous. \n\nstagehand: here you got a telegram. well, look who's here. \n\njerry: listen buddy, \n\nstagehand: what are you going to do? break my legs? you don't scare me. you or your goons. \n\ngennice: how do you like this? \n\njerry: what is it? \n\ngennice: my grandmother died. \n\njerry: oh, i'm so sorry. \n\ngennice: oh, it's okay, \n\njerry: so you don't cry when your grandmother dies? but a hotdog makes you lose control? \n\nvoice: (off camera) places everyone. \n\ngennice: i gotta go. \n\njerry: good luck. \n\nannouncer: ladies and gentlemen for this evening's performance the part of rochelle will be played by gennice grant. \n\nlotus: gennice glant? \n\nruby: what happened to bette midler? \n\nelaine: oh, she got hurt. \n\nruby: no bette midler? (they talk korean and all three leave) \n\nelaine: i, uh, wait, \n\ngennice: (singing and dancing) \"it's a long journey from milan to minsk\" (shoe lace comes undone (even looks like figure skates) wait wait. hold it stop, (sob) i'm sorry, i have to start it over, my shoelace. (sob) i can't do it like this. please let me start over. (sob) please. (sob) please. . . . \n\ngeorge: well, you got no place to go. i'll tell you what your problem is you brought your queen out too fast. what do you think? she's one of these feminists looking to get out of the house? no, the queen is old fashioned. . likes to stay home. cook. take care of her man. make sure he feels good. \n\nliz: checkmate. \n\ngeorge: i don't think we should see each other any more. \n\nelaine: shut up! shut up! you stupid mutt. \n\njerry: and you broke up with her 'cuz she beat you at chess? that's pretty sick. \n\ngeorge: i don't see how i could perform sexually in a situation after something like that. i was completely emasculated. anyway, it's not the only reason. \n\njerry: yeah, what else? \n\ngeorge: all right. you wanna know what one of her favorite expressions is? happy, pappy? \n\njerry: happy, pappy? what does that mean? \n\ngeorge: like if she wants to know if i'm pleased with something, she'll say, \"happy, pappy?\" \n\njerry: oh, you're \"pappy\". \n\ngeorge: i'm \"pappy\". \n\njerry: oh, i get it. why don't you just say it? \n\ngeorge: oh, come on. what, are you kidding? george i'm much more comfortable criticizing people behind there backs. anyway, look who's talking. you just broke up with with melanie last week because she \"shuushed you\" while you were watching tv. \n\njerry: hey, i got a real thing about \"shushing\"! \n\ngeorge: what is this? did you ever get the feeling like you've had a haircut but you didn't have one? i'm all itchy back here. \n\njerry: ahh. \n\ngeorge: what? \n\njerry: what is this? what are we doing? what in god's name are we doing? \n\ngeorge: what? \n\njerry: our lives!! . what kind of lives are these? we're like children. we're not men. \n\ngeorge: no, we're not. we're not men. \n\njerry: we come up with all these stupid reasons to break up with these women. \n\ngeorge: i know. i know. that's what i do. that's what i do. \n\njerry: are we going to be sitting here when we're sixty like two idiots? \n\ngeorge: . we should be having dinner with our sons when we're sixty. \n\njerry: we're pathetic you know that? \n\ngeorge: yeah, like i don't know that i'm pathetic. \n\njerry: why can't i be normal? \n\ngeorge: yes. me, too. i wanna be normal. normal. \n\njerry: it would be nice to care about someone. \n\ngeorge: yes. yes. care. you know who i think about a lot? remember susan ? the one that used to work for nbc? \n\njerry: hmm. i thought she became a lesbian. \n\ngeorge: no. it didn't take. \n\njerry: oh. \n\ngeorge: did i tell you i ran into her last week? ho-ho, she looked great. \n\njerry: hmm. \n\ngeorge: you thought she was good looking, right? \n\njerry: see, there you go again. what is the difference what i think? \n\ngeorge: i was just curious. \n\njerry: well, this is it. i'm really gonna do something about my life, you know? you know, i think i'm gonna call melanie again. so what if she shushed me. george, i am really gonna make some changes. \n\ngeorge: yes. changes. \n\njerry: i'm serious about it. \n\ngeorge: think i'm not? \n\njerry: i'm not kidding. \n\ngeorge: me, too. \n\n[at jerry: 's. he's on the phone] \n\njerry: melanie, you can shush me at every opportunity. 5? 3? oh, it was just an expression. all right, well, that's very sweet of you. okay, i'll call you later. all right, bye. hey! \n\nkramer: what? \n\njerry: i had a very interesting lunch with george costanza today. \n\nkramer: really? \n\njerry: we were talking about our lives and we both kind of realized we're kids. we're not men. \n\nkramer: so, then you asked yourselves, \"isn't there something more to life?\" \n\njerry: yes. we did. \n\nkramer: yeah, well, let me clue you in on something. there isn't. \n\njerry: there isn't? \n\nkramer: absolutely not. i mean, what are you thinking about, jerry? marriage? family? \n\njerry: well... \n\nkramer: they're prisons. man made prisons. you're doing time. you get up in the morning. she's there. you go to sleep at night. she's there. it's like you gotta ask permission to use the bathroom. is it all right if i use the bathroom now? \n\njerry: really? \n\nkramer: yeah, and you can forget about watching tv while you're eating. \n\njerry: i can? \n\nkramer: oh, yeah. you know why? because it's dinner time. and you know what you do at dinner? \n\njerry: what? \n\nkramer: you talk about your day. how was your day today? did you have a good day today or a bad day today? well, what kind of day was it? well, i don't know. how about you? how was your day? \n\njerry: boy. \n\nkramer: it's sad , jerry. it's a sad state of affairs.. \n\njerry: i'm glad we had this talk. \n\nkramer: oh, you have no idea. \n\ngeorge: la-la-la... \n\nkramer: hey. \n\njerry: hey. \n\nelaine: three hours of sleep again last night.. three hours of sleep because of that dog. \n\nkramer: what dog? \n\nkramer: yeah. what dog? \n\nelaine: this dog in the courtyard across from my bedroom window that never never stops barking.. \n\nkramer: don't... \n\nelaine: i lost my voice screaming at this thing. i can't sleep. i can't work. i mean, i just moved. i can't move again. what am i gonna do? what? what am i gonna do? \n\nkramer: well, there is something you can do. \n\nelaine: what? kramer, i'll do anything. \n\nkramer: well, what if there should be an unfortunate accident? \n\njerry: you're going to rub out the dog? \n\nkramer: no, no. not me. i just happen to know someone who specializes in exactely these kinds of sticky situations. \n\nelaine: uh-huh. \n\njerry: what, you're considering this? \n\nkramer: look, just meet with him. ?????. \n\nelaine: i don't really know why i'm here. kramer talked me into coming up here. but, obviously, i could never really do anything. \n\nnewman: of course. obviously. \n\nelaine: uh, so, anyway, i'm sorry for wasting your time. \n\nnewman: what kind of dog did you say it was? \n\nelaine: um, i don't know. i've never really seen it. \n\nnewman: i see many dogs on my mail route. i'll bet there's not one type of mutt or mongrel i haven't run across. \n\nnewman: if you ask me, they have no business living amongst us. vile, useless beasts . . . \n\nkramer: newman ! stop it!! \n\nnewman: anyway. \n\nelaine: yeah. well um, i was just curious if i were interested in availing myself of your services, um, what exactly would you do? \n\nnewman: well, elaine, there's any number of things i could do. but, i can promise you this, though, this vicious beast will never bother you again. so, what's it going to be? \n\nelaine: no, i'm sorry. i can't hurt a dog. i can't hurt a dog. i can't. \n\nkramer: i got it. we'll kidnap him . and we'll drop him off upstate and this way he won't bother you anymore and he won't get hurt. \n\nnewman: yeah, i suppose. \n\nkramer: huh? \n\nelaine: i'd have to think about it. i doubt it, though. i doubt it. i'll let you know. \n\nnewman: of course. take your time. i be here. \n\n[george: is still at the pier. his thoughts shift somewhat.] \n\ngeorge: la-la-la-la-la-la-la! [flashbacks to susan] \n\nelaine: all right. let's do it. \n\nnewman: excellent. excellent. \n\njerry: how come you're eating your peas one at a time? \n\nmelanie: i'm sorry. \n\nsusan: who is it? \n\ngeorge: it's george. \n\nsusan: george? george, what is it? \n\ngeorge: will you marry me? \n\ngeorge: ma, guess what! \n\nmrs. costanza: oh, my god! \n\ngeorge: no, it's nothing bad. i'm getting married. \n\nmrs. costanza: you're what? \n\ngeorge: i'm getting married? \n\nmrs. costanza: oh, my god! you're getting married? \n\ngeorge: yes! \n\nmrs. costanza: oh, i can't believe it. frank, come here. \n\nfrank: you come here. \n\nmrs. costanza: georgie's getting married. \n\nfrank: what? \n\nmrs. costanza: georgie's getting married. \n\nfrank: get the hell out of here. he's getting married? \n\nmrs. costanza: yes. \n\nfrank: to a woman? \n\nmrs. costanza: of course to a woman. what's she look like? \n\nfrank: i'm sure she's pretty gorgeous. \n\ngeorge: what difference does it make what she looks like? \n\nmrs. costanza: is she pretty? \n\ngeorge: yes, she's pretty. what difference does it make? \n\nmrs. costanza: oh, i'm just curious. \n\nfrank: she's not pretty? \n\nmrs. costanza: let me talk to her. \n\ngeorge: she wants to talk to you. \n\nsusan: uh, hello? \n\nmrs. costanza: congratulations! \n\nsusan: i just want you to know that i love your son very much. \n\nmrs. costanza: you do? \n\nsusan: yes. \n\nmrs. costanza: really? \n\nsusan: yes. \n\nmrs. costanza: may i ask why? \n\nfrank: okay... \n\nmrs. costanza: will you stop. i'm on the telephone. \n\nfrank: can i talk to her, please? \n\njerry: hey! \n\nkramer: hey! \n\njerry: what are you up to? \n\nkramer: nothing. \n\njerry: what's the rope for? \n\nkramer: oh! well, how do you like that. i got rope. um, i gotta go. \n\njerry: the dog. you're getting the dog. \n\ngeorge: hey, kramer, where are you going? \n\nkramer: out. \n\ngeorge: don't go. kramer! come back. i got great news. well, i did it. \n\njerry: did what? \n\ngeorge: i got engaged. i'm getting married. i asked susan to marry me. we're getting married this christmas. \n\njerry: you're getting married? \n\ngeorge: yes! \n\njerry: oh, my god! \n\ngeorge: i'm a man. jerry, i'm a man. and do you know why? it's because of that talk we had. you were my inspiration. do you believe it? you. that lunch was the defining moment of my life. \n\njerry: i'm blown away. \n\ngeorge: you're blown? \n\njerry: wow! \n\ngeorge: you like that? \n\njerry: and she said \"yes\"? \n\ngeorge: it took a couple of hours of convincing. i was persistent. i was just like those guys in the movies. and it worked! she said \"yes\"! i can't believe my luck that she was still available . a beautiful woman like that. you think she's good looking, right? \n\njerry: you're gonna have gorgeous kids. \n\ngeorge: yes. she's got great skin - a rosy glow.. \n\njerry: pinkish hue? \n\ngeorge: oh, she's got the hue. so, what's going on with you and melanie? i mean, i know you're not getting married, but uh, things are happening? \n\njerry: well...actually, we kind of broke up. \n\ngeorge: you what? \n\njerry: well, you know, we were having dinner the other night, and she's got this strangest habit. she eats her peas one at a time. you've never seen anything like it. it takes her an hour to finish them. i mean, we've had dinner other times. i've seen her eat corn niblets. but she scooped them. \n\ngeorge: . . . she scooped her niblets? \n\njerry: yes. that's what was so vexing. \n\ngeorge: uh-huh. uh-huh. what about the pact? \n\njerry: what? \n\ngeorge: what happened to the pact? we were both gonna change. we shook hands on a pact. did you not shake my hand on it uh? \n\njerry: you stuck your hand out, so i shook it. i don't know about a pact. anyway, you should be happy you're engaged. you're getting married. \n\ngeorge: well, it's not that. i just, you know, i thought that we were both uh... \n\njerry: you thought i was gonna get married? \n\ngeorge: well, maybe not married, but... \n\njerry: i mean, you love susan, right? \n\ngeorge: yeah. \n\njerry: you want to spend the rest of your life with her \n\ngeorge: . . . . . . yeah. \n\njerry: so? \n\ngeorge: yeah. it doesn't make any difference. \n\njerry: no. so, we're still on to see uh, firestorm tonight? \n\ngeorge: yeah. \n\njerry: i'll pick you up at your apartment. we'll go to the eight. \n\ngeorge: yeah. \n\njerry: hey, wait a second. wait a second. ! celebrate! how about some champagne? \n\ngeorge: champagne? \n\njerry: yes, come on! how often do you get engaged? come on! \n\ngeorge: okay! alright! \n\njerry: you know what? no champagne. anyway. . . i'll see you later. \n\ngeorge: yeah. \n\nelaine: that's it. that's it. stop right here. \n\nnewman: all right, give me the rope. \n\nelaine: what? what do you need a rope for? \n\nnewman: look, i don't have time to explain every little thing to you. \n\nelaine: i don't know. now, i'm thinking maybe we shouldn't do this. \n\nnewman: i knew you'd back out. \n\nelaine: kramer, are we doing a bad thing? \n\nkramer: well, look at it this way. we drop the dog off in front of somebody's house in the country. they find it and adopt it. now the dog is prancing in the fields. dancing and prancing. fresh air. . dandelions. we're doing this dog a huge favor. \n\nelaine: yeah. that's him. \n\nnewman: all right. i'm going in. keep the motor running. \n\njerry: ready? \n\ngeorge: um, i don't uh, really think i can go. \n\njerry: oh, how come? \n\ngeorge: well, i didn't really tell susan about it, and she doesn't really have anything else to do. \n\njerry: well, she could come. \n\ngeorge: well, she doesn't really want to see firestorm. \n\njerry: oh. \n\ngeorge: she um, she wants to see the muted heart. \n\njerry: oh, the muted heart. glen close. sally field. well, that should be good. \n\ngeorge: yeah. see you later. \n\njerry: hey, wait a second. you know, we could share a cab. they're playing at the same cineplex. \n\nsusan: george, better get ready. \n\ngeorge: i am ready. \n\nsusan: you wearing that shirt?. \n\ngeorge: okay, i guess i'll see you down there. \n\njerry: yeah. \n\ngeorge: okay. \n\nelaine: what time you got? \n\nkramer: oh, no. i don't wear a watch. \n\nelaine: what do you do? \n\nkramer: well, i tell time by the sun. \n\nelaine: how close do you get? \n\nkramer: well, i can guess within an hour. \n\nelaine: tsk. well, i can guess within the hour, and i don't even have to look at the sun. \n\nkramer: yeah. \n\nelaine: well, what about at night? what do you do then? \n\nkramer: well, night's tougher but it's only a couple of hours. \n\nnewman: let's go. let's go. move! \n\nkramer: you got it? \n\nnewman: what do you think? drive. drive. \n\nelaine: where is it? where is it? this? this is the dog? \n\nnewman: yep. \n\nelaine: but he's so small. \n\nnewman: yeah, but he's a fighter. \n\nelaine: that can't be the dog. are you sure you got the right one? \n\nnewman: look, you said the one in the second courtyard. he was in the second courtyard. \n\nelaine: how could that be the dog? \n\nkramer: well, get him to bark. \n\nelaine: yeah. yeah. i'll know if he barks. \n\nnewman: all right. bark. \n\nelaine: bark. \n\nnewman: bark. \n\nsusan: did you like it? \n\ngeorge: yes, it was very, very good. \n\nsusan: oh, do you think he'll ever find her again? \n\ngeorge: oh, i sure hope so. \n\njerry: how about when harrison ford jumped out of that plane, and he was shooting back at them as he was falling? \n\nfriend: what about that underwater escape? \n\njerry: oh, man! \n\nkramer: let's turn the radio on. maybe there's a news report about it. \n\nnewman: ??????? \n\nelaine: you think we're far enough. \n\nnewman: we're practically to monticello. \n\nkramer: yeah. this looks right. all right. give me the dog. okay, boy. this is it. this is your new home. let go of my shirt. come on. let go of my shirt. this shirt is from rudy's. \n\ngeorge: hello? \n\njerry: hey, ??? is rerunning the yankee game. you watching this? \n\ngeorge: they are? \n\nsusan: george, you coming to bed? i'm taping mad about you. \n\ngeorge: uh, yeah, i'll be there in a minute. \n\njerry: what was that? \n\ngeorge: uh, nothing. i got to go. \n\njerry: oh, mattingly just singled . \n\ngeorge: you know, it was really wrong of you to back out on that deal. \n\njerry: i didn't make a deal. i just shook your hand. \n\ngeorge: yeah, well that's a deal where i come from. \n\njerry: we come from the same place. \n\nsusan: george, i'm starting it. \n\ngeorge: i got to go. \n\nlady: roxy! where have you been? we've been worried sick about you. what's this? hmm. rudy's. \n\nelaine: no! no! it's impossible. it's impossible. \n\nelaine: i don't know. i don't know how it happened. we were practically in monticello. i mean, how could that thing have found its way back? there's no way. \n\njerry: very strange. \n\nelaine: i know. \n\njerry: so, tell me anyway. who was the big mastermind? \n\nelaine: oh, i can't jerry. 4i'm sworn to secrecy. \n\njerry: all right. but then i can't tell you the big news. \n\nelaine: news? what news? \n\njerry: sorry! \n\nelaine: what? what? \n\njerry: all right, elaine but this is beyond news. this is like pearl harbor. or the kennedy assassination. it's like not even news. it's total shock. \n\nelaine: oh, come on, jerry. please, please, please, please, please! \n\njerry: george costanza... \n\nelaine: yeah? \n\njerry: is getting married! \n\nelaine: get out! \n\nkramer: hi. \n\ncop: you cosmo kramer? \n\nkramer: uh, yes. yeah. \n\ncop: you recognize this piece of fabric? \n\nkramer: oh, yeah, that's... \n\ncop: what? \n\nkramer: what? \n\ncop: you're under arrest. \n\nkramer: arrest? \n\ncop: i have a receipt for a rental car with your signature. including a report with some damage to the rear seat. it seems the spring was so compressed it completely collapsed the right side.. \n\njerry: newman. \n\nnewman: what took you so long? \n\nkramer: hey, what do you think they'll do to us? \n\nnewman: ah, don't worry about a thing. in twenty minutes that place'll be swarming with mailmen. we'll be back on the street by lunch. \n\nelaine: i gotta make some changes. i'm not a woman. i'm a child. what kind of life is this? \n\nelaine: hey, good news. my dog problem has been solved. \n\njerry: really? what happened? \n\nelaine: well, there's this rabbi in my building. you've met him. very nice man. \n\njerry: isn't he the one with the show on cable? \n\nelaine: yea, yeah, yeah,. so i spoke to him about the dog. he went down. talked to the owner. she agr4eed to keep the dog inside from now on. \n\njerry: that's great. \n\nelaine: i know. \n\njerry: that looks pretty good. \n\nelaine: he's in. \n\njerry: hey, say, you know, we haven't even discussed george's engagement yet. \n\nelaine: what's to discuss? \n\njerry: come on! george is getting married! \n\nelaine: is he happy? \n\n[at the restaurant! george: is coming from the bathroom to sit with his bride-to-be.] \n\ngeorge: i will never understand the bathrooms in this country. why is it that the doors on the stalls do not come all the way down to the floor? \n\nsusan: well, maybe it's so you can see if there's someone in there. \n\ngeorge: isn't that why we have locks on the doors? \n\nsusan: well, as a backup system, in case the lock is broken, you can see if it's taken. \n\ngeorge: a backup system? we're designing bathroom doors with our legs exposed in anticipation of the locks not working? that's not a system. that's a complete breakdown of the system. \n\nsusan: can we change the subject, please? \n\ngeorge: why? what's wrong with the subject? this is a bad subject? \n\nsusan: no, fine. if you wanna keep talking about it, we'll talk about it. \n\ngeorge: it's not that i want to keep talking about it? just think that the subject should resolve itself based on its own momentum. \n\nsusan: well, i didn't think that it had any momentum. \n\ngeorge: (to himself) how am i gonna do this? i'm engaged to this woman? she doesn't even like me. change the subject? toilets were the subject. we don't even share the same interests. \n\njerry: yeah, he seems pretty happy. \n\nelaine: well, that's all that counts, i guess. \n\njerry: what's the matter? \n\nelaine: oh, nothin'. \n\njerry: well, you don't seem too enthused about the whole thing. \n\nelaine: well, what do you want me to do? \n\njerry: well, at least have some reaction to it. \n\nelaine: well, i don't. \n\njerry: maybe you're a little jealous. \n\nelaine: oh, what? you think i wanna marry george? \n\njerry: no! but maybe you wish it was you who was getting married, not him. \n\nelaine: oh, please! that is the last thing that i want. \n\njerry: oh, yeah. right. \n\nelaine: yeah, right. \n\njerry: lainy! \n\nelaine: jerry! \n\njerry: you don't wanna get married? \n\nelaine: yeah, that's right. i don't wanna get married. \n\njerry: oh, come on! \n\nelaine: oh, you come on. \n\njerry: you're such... \n\nkramer: oh, hey! \n\njerry: hey. \n\nkramer: elaine, listen, i was talking to a friend about this dog business. do you realize this is gonna be on our permanent records? are you aware of this? \n\nelaine: oh, dear. \n\nkramer: it can never be erased. it'll follow us wherever we go for the rest of our lives. i'll never be able to get a job. i mean, doesn't that concern you? everything i've worked for...down the drain because of one stupid mistake. i mean, aren't we entitled to make one mistake in our lives, jerry? \n\njerry: we're gonna change the system. \n\nkramer: yes! \n\nelaine: well, i could care less. i hope it is on our record. i'm just sorry they didn't lock me up. \n\nelaine: oh, hello, rabbi krischma. \n\nrabbi: elaine! always a pleasure to see you. \n\nelaine: thanks again for taking care of that dog for us. \n\nrabbi: elaine, often times in life there are problems, and just as often there are solutions. \n\nelaine: yeah, i suppose. \n\nrabbi: elaine, you don't seem yourself today. you seem, if i may say, troubled. \n\nelaine: no, rabbi, i'm not myself. \n\nrabbi: come upstairs. we'll have a talk. \n\njerry: hey! \n\ngeorge: i want your honest opinion about something. \n\njerry: have i ever been less than forthright? \n\ngeorge: no, you haven't. well, maybe you have. what do i know. \n\njerry: yeah, i probably have. yeah, of course i have. what am i talking about? \n\ngeorge: all right. okay, tell me what you think about this idea extend the doors on the toilet stalls at yankee stadium all the way to the floor. \n\njerry: extend the doors on the toilet stalls at yankee stadium to the floor ...door comes down. hides your feet. yes. i like it. i like it a lot. \n\ngeorge: it's good, right? \n\njerry: i think it's fantastic. i think it's a fantastic idea. \n\ngeorge: you do? \n\njerry: yes, i do. \n\ngeorge: well, i told it to susan before, and she didn't like it. \n\njerry: hmm. \n\ngeorge: yeah. not only that, this is what she said to me, \"can we change the subject?\" \n\njerry: see, now that i don't care for. \n\ngeorge: right. i mean, we're on a subject. why does it have to be changed? \n\njerry: it should resolve of its own volition. \n\ngeorge: that's exactly what i said, except i used the word \"momentum\". \n\njerry: momentum - same thing. \n\ngeorge: same thing. my god, i'm getting married in december, do you know that? \n\njerry: yeah, i know. \n\ngeorge: well, i don't see how i'm gonna make december. i mean, i need a little more time. i mean, look at me i'm a nervous wreck. my stomach aches. my neck is killing me. i can't turn. look. look. \n\njerry: you're turning. \n\ngeorge: nah, it's not a good turn. december. december. don't you think we should have a little more time just to get to know each other a little. \n\njerry: if you need more time, you should have more time. \n\ngeorge: what, you think i could postpone it? \n\njerry: sure you can. why not? \n\ngeorge: that's allowed? you're allowed to postpone it? \n\njerry: i don't see why not. \n\ngeorge: so, i could do that? \n\njerry: sure, go ahead. \n\ngeorge: all right! all right. i'll tell you what. how about this? got the date; march 21st, the first day of spring. \n\njerry: spring. of course. \n\ngeorge: huh? you know? spring. rejuvenation. rebirth. everything's blooming. all that crap. \n\njerry: beautiful. \n\ngeorge: she's not gonna like it. \n\njerry: no, she's not. \n\ngeorge: you know, i think i'm a little bit scared of her. she's five-three, like a hundred pounds. i'm frightened to death of her. \n\njerry: well, she's a woman. they don't like to be disappointed. \n\ngeorge: especially her. she does not like disappointment. well, i have to do it. i can't make december. there's no way i can make december. right? i mean, you can see that, right? i mean, look at me. look. look. can i make december? i can't make december. right? look. look. \n\njerry: yeah, you'd better shoot for march. \n\nkramer: hey, hey. \n\ngeorge: march 21st. hey! so, you're gonna back me on this, right? \n\njerry: oh, all the way. \n\ngeorge: you are a good friend. you know what? even if you killed somebody i wouldn't turn you in. \n\njerry: is that so? \n\njerry: hey, kramer if i killed somebody would you turn me in? \n\nkramer: definitely. \n\njerry: you're kidding? \n\nkramer: no, no, i would turn you in. \n\njerry: you would turn me in? \n\nkramer: phwap, i wouldn't even think about it. \n\njerry: i can't believe your a friend of mine. \n\nkramer: what kind of person are you going around killing people? \n\njerry: well, i am sure i had a good reason. \n\nkramer: well,, if you'll kill this person, who's to say i wouldn't be next? \n\njerry: but you know me! \n\nkramer: i thought i did! \n\nelaine: i'm not a very religious person but i do feel as if i'm in need of some guidance here. \n\nrabbi: would you care for a snack of some kind? i have the snackwells which are very popular but i think that sometimes with the so called fat free cookies people may overindulge forgetting they may be high in calories \n\nelaine: thank you i am not very hungry. anyway, um, this friend of mine, george, got engaged . \n\nrabbi: how wonderful. \n\nelaine: yeah, yeah, well, for some reason, um, i just find myself just overcome with feelings of jealousy and resentment. \n\nrabbi: doesn't it give you any joy to see your friend enter into this holiest of unions? \n\nelaine: no, no, no it doesn't. no joy no joy whatsoever. just the whole think makes me . . sick. \n\nrabbi: you know, elaine, very often we cannot see the forest for the trees. \n\nelaine: yeah, i don't know what that means. \n\nrabbi: well, for example, say there's a forest, . . . \n\nelaine: you see the thing is we it should have been me. you know, i'm smart. i'm attractive. \n\nrabbi: you know my temple has many single functions. \n\nelaine: no, no, it's okay. \n\nrabbi: my nephew alex is someone who is also looking perhaps \n\nelaine: i don't think so. \n\nrabbi: he owns a flower store. very successful. \n\njerry: so you're nothing but a stoolie. admit it. \n\nkramer: hey, don't do the crime if you can't do the time. \n\njerry: another caf latte? \n\nkramer: you better believe it. \n\nkramer: since when are you so trendy? \n\njerry: hey, baby. i set the trends. who do you think started this whole caf latte? \n\njerry: i don't recall you drinking caf latte. \n\nkramer: i've been drinking caf latte since the fifth grade and i haven't looked back. \n\njerry: hey, planet 9 from outer space is playing tomorrow night. one show only. \n\nkramer: i've always wanted to see this. \n\njerry: you know i was supposed to see this five years ago. i was in a chinese restaurant with george and elaine and got all screwed up trying to get a table and i missed it. \n\nkramer: well, yeah, lets do it uh? \n\njerry: look at this jerry, dropping paper on the ground. that's littering. \n\njerry: maybe you better call the cops and turn me in. \n\nkramer: maybe i will. \n\ngeorge: hi, \n\nsusan: how was your day? \n\ngeorge: good, good day. how was your day? \n\nsusan: mine was okay. so what's goin' on? \n\ngeorge: oh, nothin' much. i went over to jerry's, uh, talked to jerry. \n\nsusan: oh, the lowers want to get together with us on friday night. \n\ngeorge: the lowers, really? \n\nsusan: you don't want to go? \n\ngeorge: no, i want to go. \n\nsusan: so what did jerry have to say? \n\ngeorge: oh, nothin' much, . . . talkin'. . . . oh, oh, oh, did i have an unbelievable idea today! \n\nsusan: oh, yeah, the toilets. you told me. \n\ngeorge: yeah, ha ha, it's not the toilets, it's not the toilets. it's something else. are you ready for this? \n\nsusan: yeah. \n\ngeorge: okay, how about this? all right, we get married march 21st, the first day of spring. \n\nsusan: what do you mean? you want to postpone the wedding? \n\ngeorge: no, no no it's not about postponing. i just think the first day of spring is the perfect day to get married. you know, spring! rejuvenation! rebirth! everything is blooming all the \n\nsusan: if you don't want to marry me, george, just say so. (crying) say so. \n\ngeorge: still marry , still marry. \n\nsusan: you don't love me. \n\ngeorge: sstill love. still love. \n\nsusan: my parents told me you were too neurotic and that i was making a mistake. \n\ngeorge: no no no, no mistake, no mistake. no, no , listen, we're going to get married over christmas, i it doesn't make any difference to me. it's fine. really. \n\nsusan: are you sure? \n\ngeorge: yeah, yeah, sure, christmas. snow. santa. all that stuff. \n\njerry: let me take a guess. she cried and you caved. \n\ngeorge: how did you know that? \n\njerry: i live and breath my friend. . . . i live and breath. \n\ngeorge: i got to tell you i felt terrible. i really thought she was going to collapse and kill herself. \n\njerry: tes, it's very difficult. few men have the constitution for it. that's why breakups take two or three tries. you gotta build up your immunity. \n\ngeorge: you see those tears streaming down you don't know what to do. it was like she was on fire and i was trying to put her out. \n\njerry: well, at least you probably had some, uh, pretty good make-up sex after. \n\ngeorge: i didn't have any sex. \n\njerry: you didn't have make-up sex? how could you not have make-up sex? i mean that's the best feature of the heavy relationship. \n\ngeorge: i didn't have make-up sex. \n\njerry: in your situation the only sex you're going to have better than make-up sex is if you're dent to prison and you have a conjugal visit. \n\ngeorge: yeah, conjugal visit sex. that is happening! \n\nwoman: (crying) \n\nman: i can tell you're very upset but i'm sorry i'm not goin' \n\ngeorge: did you here that? i can't believe this he's eating his sandwich. \n\nman: are you going to eat thoise fries? \n\ngeorge: this is amazing. (george gets up to leave and shake's man's hand) thank you. thank you very much. . . . i'm going back in! . . . you'll feel better (to woman) \n\njerry: . . . poor bastard. \n\njerry: good evening, rabbi. \n\nrabbi: good evening. and how does this evening find you? \n\njerry: well, rabbi, well. \n\nrabbi: i trust you are here to see your friend, elaine. \n\njerry: yeah, that's right. \n\nrabbi: i hope she's feeling better. \n\njerry: what do you mean? \n\nrabbi: she didn't tell you? \n\njerry: no. \n\nrabbi: well it seems the engagement of her ffriend george has left her feeling bitter and hostile. \n\njerry: is that so? \n\nrabbi: yes, in fact she told me that she wishes she was the one getting married. \n\njerry: really? \n\nrabbi: she came off as pretty desperate. \n\njerry: i didn't know any of this. \n\nrabbi: apparently she doesn't think much of this george fellow either. i recall the word loser peppered throughout her conversation. \n\njerry: hum, well it all comes as news to me. \n\ngeorge: (enters) hi. \n\nsusan: hi, how was your day? \n\ngeorge: good, good day. how was your day? \n\nsusan: ah, it was okay. what's going on? \n\ngeorge: oh, nothing much. you know, i went over to jerry's. talked to jerry. um, could i talk to you for a minute? \n\nsusan: yeah, sure. \n\ngeorge: you see this is the thing. . . . (crying) i just feel . . . mumble, cry, mumble, . . . i'm scared. you and i together, (cry) \n\nsusan: george, of course, of course it can wait until march if that is what you want. \n\ngeorge: yeah? \n\nsusan: oh, don't worry your head. of course. \n\ngeorge: all right. (smiles behind her back) \n\nelaine: i've got that magazine article for you. \n\njerry: you iknow i talked to the rabbi outside. \n\nelaine: are you \n\njerry: understand you had a little talk with him too. \n\nelaine: yeah, talked earlier. \n\njerry: yes i know, i know. \n\nelaine: . . . what does that mean? \n\njerry: nothing, nothing. \n\nelaine: he didn't mention . . . \n\njerry: yes he did. \n\nelaine: he told you about our conversation? \n\njerry: we had quite a little chat. \n\nelaine: he told you about . . . \n\njerry: yes, about how you're very jealous of george. how you wished it was you who were getting married instead of him. \n\nelaine: he told you all that? how could he? \n\njerry: it didn't take much prodding either, i must say. \n\nelaine: can he do that? \n\njerry: he did it. \n\nelaine: but he's a rabbi! how can a rabbi have such a big mouth? \n\njerry: that's what's so fascinating. \n\njerry: you better finish your little caf latte there. they won't let you in with it. \n\nkramer: why not? \n\njerry: because they don't allow outside drinks into the movie. \n\nkramer: well that's stupid \n\njerry: that's the rule. \n\nkramer: well, we'll just see if we can't get around that. \n\nrabbi: oh, elaine. come in. come in. so nice to see you again. \n\nelaine: yeah \n\nrabbi: can i offere you some kasha varnishkas? \n\nelaine: no, no. listen, rabbi, i'd like to ask you a question. why, why did you tell my friend jerry what i talked to you about? \n\nrabbi: was that a problem for you? \n\nelaine: of course it was a problem for me. . . . you didn't, you didn't tell anyone else about this, did you? \n\nrabbi: well, let's see? i seem to recall a conversation with mrs. winston in 1f. \n\nelaine: mrs. winston? \n\nrabbi: yes, we were waiting for our mail to arrive and i happened to mention to her how you felt that it was never going \"to happen\" for you. \n\nelaine: what about don ramsey? you didn't mention anything to him did you? \n\nrabbi: don ramsey? \n\nelaine: you know that tall really good looking guy, he lives on the fifth floor. \n\nrabbi: oh him! well this morning i found myself in the elevator with him \n\nelaine: my god, you didn't. \n\njerry: excuse me, pardon me, excuse me \n\nkramer: oh, yow, oow ah! \n\nusher: hey, hey, what's going on? what just happened here? \n\nkramer: nothing nothing. \n\nusher: whatya got? one of those caf latte's in your shirt? \n\nkramer: i don't have anything. ask him. \n\nusher: all right, come on coffee boy, bring it out. \n\nkramer: what?! \n\nusher: here you go. \n\nkramer: ow \n\nelaine: but the whole thing is a mess. he told everyone in the building. i met that cute guy on the fifth floor. i mean he could barely bring himself to nod. \n\njerry: elaine, if i could say a word here about jewish people. that man in no way represents our ability to take in a nice piece of juicy gossip and keep it to ourselves. \n\nelaine: you didn't say this to george, did you? \n\njerry: no, . . . about how you wish it was you who was getting married instead of him? feelings of resentment, hostility? \n\nelaine: yeah that! so, . . . \n\ngeorge: hey oh. \n\nelaine: georgie! congratulations! oh, my god. i haven't seen you since it happened. i'm so happy for you. \n\ngeorge: alright, thanks a lot. \n\nelaine: oh, come on. you really, really deserve it. \n\ngeorge: oh, deserve! i don't know if i deserve...i mean... \n\nelaine: are you kidding? i have seen the changes in you the past couple of years. man, you have grown. you've matured. \n\ngeorge: well, i guess i'm getting older. \n\nelaine: oh! well, i just think it's wonderful. honestly! i've gotta run, but um, please, please give my best to susan. \n\ngeorge: yeah. \n\nelaine: my most, just heartfelt congratulations. \n\ngeorge: yeah. thanks. hey, listen, if you ever get a date, maybe the four of us could go out together sometime. \n\nelaine: yes! yes, yes. sure. \n\ngeorge: wait, as a matter of fact, wasn't there some guy in your building that you said you liked? he lived up on the fifth floor or something. \n\nelaine: yes. yes, yes. yes. \n\ngeorge: yeah! boy, she is something, isn't she? \n\njerry: yeah, she's something else. hey, so what happened? did you hold your ground or...uh \n\ngeorge: nope. i wept like a baby. \n\njerry: what? \n\ngeorge: well, i started to tell her and then all of the sudden, for some reason, i just burst into tears. \n\njerry: you cried? \n\ngeorge: i bawled uncontrollably. i just poured my guts out. and i'll tell you, jerry, it was incredible. i never realized how powerful these tears are. i could have postponed it another five years if i wanted to. \n\njerry, george, & kramer: hey! \n\njerry: sorry about that movie-thing. i was joking around. \n\nkramer: sorry? are you kidding? you did me the biggest favor of my life. i spoke to a lawyer, we're suing for millions. \n\njerry: suing? what for? \n\nkramer: the coffee was too hot. \n\njerry: it's supposed to be hot. \n\nkramer: not that hot. \n\nrabbi: (on tv) the prophet isaah tells us without friends our lives are empty and meaningless. \n\ngeorge: wait. whoa! that's the rabbi from elaine's building. i just met this guy the other day. \n\nrabbi: a young lady i know, let's call her elaine, happened to find herself overwhelmed with feelings of resentment and hostility for her friend, let's call him george. she felt that george was somewhat of a loser and that she was the one who deserved to be married first. she also happened to mention to me that her friend had wondered if going to a prostitute while you're engaged is considered cheating. his feeling was they're never going to see each other again so what's the difference. but that is a subject for another sermon. now, i'd like to close with a psalm. \n\n[setting: booth at monk's cafe] \n\ngeorge: and then i hear this rabbi on television, i mean imagine. \n\nelaine: i'm really sorry george, i, i, i wasn't jealous of you. it was just the whole marriage thing. \n\ngeorge: ya know, i was just a little surprised. \n\njerry: why would anyone eat canned fruit? i mean can anybody answer that? \n\ngeorge: what about all the loser stuff? \n\nelaine: i don't know where the rabbi got that. ya know i never said that. i said \"i've never seen you looser\". \n\njerry: i can see the can if you're in the army, but fresh fruit it's available, it's there, it's 2 aisles over. \n\ngeorge: (gets up to leave) well, scintillating as always. \n\njerry: where you going? \n\ngeorge: i'm going shopping with susan. \n\nelaine: what kind of shopping? \n\ngeorge: clothes shopping. \n\nelaine: where are you going? \n\ngeorge: ross'. \n\nelaine: oh that's a nice store. \n\ngeorge: yeah, it's her uncle's. \n\njerry: discount? \n\ngeorge: (as he leaves) one would hope. \n\n[setting: jackie child's office] \n\nkramer: so ya know, my friend and i we were going to the movies and we stopped off and bought this cafe latte. \n\njackie: (agreeing) hm hm. oh what is that like italian coffee? \n\nkramer: yeah that's right. \n\njackie: half milk, half coffee? \n\nkramer: yeah. \n\njackie: hm hm. you take a sip? \n\nkramer: yes i did. \n\njackie: now when you took a sip, did you notice it was hot? were you able to sip it in your normal fashion? \n\nkramer: no i wasn't able to sip it in my normal fashion. \n\njackie: hm hm. all right, all right. you take big sips? \n\nkramer: well i think i take a normal sip. \n\njackie: o.k. you take normal sips. nothing wrong with that. then what happened? \n\nkramer: well you know ahh, they don't allow outside drinks in the movie theater. so i had to put it in my shirt and sneak it in. \n\njackie: yeah, see they like to sell their own coffee. \n\nkramer: yeah, now is that going to be a problem? \n\njackie: yeah that's going to be a problem. it's gonna be a problem for them. this a clear violation of your rights as a consumer. it's an infringement on your constitutional rights. it's outrageous, egregious, preposterous. \n\nkramer: it's definitely preposterous. \n\njackie: so. then what happened? \n\nkramer: well ahh. i was trying to get to my seat and i had to step over someone and i kind of got pushed and it spilled on me. \n\njackie: was there a top on it? \n\nkramer: yeah. \n\njackie: now did you put the top on or did they put the top on for you? \n\nkramer: no. they put the top on. \n\njackie: and they made the top. you didn't make the top did you? \n\njackie: (to secretary over intercom) suzie. i want you to go down to java world. get me a cafe latte with a top. (to kramer) we're gonna run some test on that top. have you been to the doctor? \n\nkramer: ah no no, i haven't. \n\njackie: (to secretary over intercom) suzie. call dr. bison. set up an appointment for mr. kramer here. tell him it's from me. \n\nkramer: so ah, what do you think mr. chiles. \n\njackie: jackie. \n\nkramer: jackie. i mean, we have a chance? \n\njackie: do we have a chance? you get me one coffee drinker on that jury, you gonna walk outta there a rich man. \n\n[setting: ross' clothing store] \n\ngeorge: i don't like it, it's red. it it's too flashy. \n\nsusan: well you could use a little flash. \n\ngeorge: all right. don't change me. susan. don't change me. ya know there are a lot of woman that would love to be in your position right now. \n\nsusan: name one. \n\nmr ross: so, you find anything? \n\nsusan: oh, he's impossible to shop for uncle ned. \n\nmr ross: i'm going on vacation to costa rica. maybe i'll see you in a couple of weeks. \n\nsusan: o.k. \n\nsalesman: excuse me mr ross. \n\ngeorge: see now this i don't get. \n\nsusan: what? \n\ngeorge: the security guard. \n\nsusan: what about him? \n\ngeorge: why does he have to stand? \n\nsusan: because he's a security guard. \n\ngeorge: but i mean look at him. he's gotta be on his feet like that all day? that's brutal. i think i'm gonna say something to your uncle. \n\nsusan: george, you just met him. don't say anything to him. \n\ngeorge: aren't you concerned about the security guard? \n\nsusan: not really. (walks away) \n\ngeorge: (thinking to himself) she's not concerned about the security guard. what kind of a person is this? i'm marrying a person who doesn't care that this man has to stand here 8 hours a day when he could easily be sitting. \n\nsusan: all right george. (she puts the red shirt up to him again) what do you think? \n\n[setting: elaine and jerry are in jerry's apartment.] \n\njerry: so ah, what did you do last night? \n\nelaine: nothing. \n\njerry: i know nothing, but what did you actually do? \n\nelaine: literally nothing. i sat in a chair and i stared. \n\njerry: wow. that really is nothing. \n\nelaine: i told ya. \n\nkramer: hey. \n\njerry: hey. \n\nelaine: hey. \n\njerry: what are you all dressed up for? \n\nkramer: oh i ah just came from a meeting with my lawyer. \n\njerry: oh yeah, how's that looking? \n\nkramer: oh i'll tell you how it's looking. my lawyer jackie says if there is one coffee drinker on that jury, (in a very high voice) i'm gonna be a rich man. \n\nelaine: that's despicable. how does he know how all coffee drinkers will vote? i'm a coffee drinker. if i was on that jury i wouldn't give you a nickel kramer. \n\nkramer: yeah, well you wouldn't be on that jury. he would have weeded you out. \n\njerry: frankly i'm surprised you're so litigious. \n\nkramer: oh i can be quite litigious. \n\nelaine: what i mean who ever heard of this anyway? suing a company because there coffee is too hot? coffee is supposed to be hot. \n\nkramer: yeah but jackie says the top was faulty. \n\nelaine: (mocking) jackie says the top was faulty. \n\nkramer: hey maestro! \n\nmaestro: ah, kramer. \n\nkramer: i'm in here. how's it going. \n\nmaestro: fine. \n\njerry: hi bob. \n\njerry: (apologetically) oh, i'm sorry. maestro. \n\nkramer: well, this is a surprise ha? \n\nmaestro: i just wanted to drop off this chinese balm for your burns. it's supposed to be great stuff. it's all herbal. \n\nkramer: oh maestro, you, what are you doing? you don't have to do this. do you believe this maestro? \n\nmaestro: it's nothing. \n\nkramer: yeah, ya know you haven't been around for a while. \n\nmaestro: oh yeah, i've been at my house in tuscany. \n\nkramer: oh tuscany huh? hear that jerry? that's in italy. \n\njerry: i hear it's ah beautiful there. \n\nmaestro: well if you're thinking of getting a place there don't bother. there's really nothing available. \n\njerry: (surprised) huh? \n\nmaestro: (seeing elaine) oh! \n\nelaine: hello. \n\nmaestro: well hello. and who might you be? \n\nelaine: i might be elaine. \n\njerry: this is a, bob cobb. \n\nkramer: maestro. \n\nelaine: oh, maestro. \n\nmaestro: it is my very great pleasure. (kisses elaine's hand) \n\nelaine: enchante. \n\nmaestro and elaine (simultaneously): well i have to be going. \n\nelaine: jinx buy me a coke. \n\nmaestro: oh. love it when that happeneds. \n\nelaine: i know i know. that is so ahh ...... \n\nmaestro: coincidental. \n\nelaine: yeah, thanks. o.k. bye you guys. \n\nmaestro: ciao. \n\nkramer: yeah, yeah oh hey and a thanks for the balm. yeah. \n\nkramer: you know you hurt the maestro's feelings. \n\njerry: oh what, because i didn't call him maestro? \n\nkramer: that's right. \n\njerry: ya know i feel a little funny calling somebody maestro. \n\nkramer: why? \n\njerry: because it's a stupid thing to be called. \n\nkramer: jerry he's a conductor. \n\njerry: oh conductor. he conducts the policeman's benevolent association orchestra. \n\nkramer: well, he's still a conductor. \n\njerry: well he sure worked pretty fast with elaine. \n\nkramer: oh, you should see him do 'flight of the bumble bee'. \n\n[setting: monks cafe. george and jerry are sitting across from each other] \n\njerry: new shirt? \n\ngeorge: yeah. you like it. \n\njerry: no, not particularly. \n\ngeorge: why, the color? \n\njerry: yeah. \n\ngeorge: too flashy? \n\njerry: yeah, it's burning my retina. susan picked that out for you right? \n\ngeorge: (obviously lying) no. \n\njerry: (reaches for a menu) all right what's it going to be here. \n\ngeorge: let me ask you something. when you go into a store, does it bother you that they make the security guard just stand there all day? \n\njerry: no. \n\ngeorge: see, didn't bother susan either. that's why i'm different. i can sense the slightest human suffering. \n\njerry: are you sensing anything right now? \n\ngeorge: let me just say this. it is inhumane to make a man stand on his feet, in one spot for eight hours a day. why shouldn't he have a chair? \n\njerry: well, what about criminal activity? he's got to be alert. \n\ngeorge: what, he can't jump out of the chair? how long does that take? here look at this. (he moves to the end of the booth) here, watch. (stands up) criminals. boom. i'm up. (pretends he's shooting) stop it! stop it! stop it! \n\njerry: maybe they offered him a chair and he turned it down. \n\ngeorge: would you get out of here. who's gonna turn down a chair? i would be very interested to know how he felt about all of this. maybe i'll have a talk with him. \n\njerry: i know you will. \n\nkramer: hey, hey, hey, listen to this. jackie just called. \n\ngeorge: who? \n\njerry: his lawyer. \n\nkramer: yeah, java world wants to settle. \n\njerry: what? \n\nkramer: yeah, i'm gonna be rich. \n\njerry: why are they settling? \n\nkramer: cause their afraid of bad publicity. \n\njerry: all this because you spilled coffee on yourself? \n\nkramer: yeah that's right. \n\ngeorge: (very loud in the direction of a waiter) i'm gonna need a coffee here. very hot! boiling! \n\n[setting: restaurant. maestro and elaine are talking) \n\nmaestro: and then about four years ago i was on holiday in tuscany. \n\nelaine: uh ha. \n\nmaestro: and i fell in love with this house. \n\nwaiter: are you ready to order? \n\nelaine: oh god. what are you getting bob? \n\nmaestro: good question. (to waiter) we'll need a few minutes. \n\nmaestro: you know, i'm sorry but, i didn't mention it earlier but actually i preferred to be called maestro. \n\nelaine: excuse me? \n\nmaestro: well, ya know i am a conductor. \n\nelaine: yeah, so? \n\nmaestro: oh i suppose it's o.k. for leonard burnstein to be called maestro because he conducted the new york philharmonic. so he gets to be called maestro and i don't. \n\nelaine: well, i mean don't you think that he was probably called maestro while he was conducting, not in social situations. i mean his friends probably just called him lenny. \n\nmaestro: i happen to know for a fact, that he was called maestro in social situations. i once saw him at a bar and someone came up to him and said \"hello maestro, how about a beer\". o.k. so that's a fact. \n\nelaine: maestro huh? o.k. (laughing) \n\n[setting: jerry's apartment. jerry is at the refrigerator getting orange juice.] \n\nkramer: jerry! jerry! jerry! jerry my burn is gone look.(shows jerry the burn area). \n\njerry: what do you mean? \n\nkramer: well i put that chinese balm on that the maestro gave me. and look, it healed it. \n\njerry: so? \n\nkramer: so? my lawsuit. i'm finished. \n\njerry: i thought they wanted to settle. \n\nkramer: well what happens if they want to see it? \n\njerry: then you're in a lot of trouble. \n\nkramer: yeah!! \n\n[setting: ross' clothing store. guard is standing near entrance. george enters.] \n\ngeorge: (to guard) tired? \n\nguard: no. \n\ngeorge: how come uh, no chair? \n\nguard: what? \n\ngeorge: i, i couldn't help but notice that uh you don't have a chair. \n\nguard: i don't need a chair. \n\ngeorge: no i didn't mean to imply that you did. you're obviously a very well proportioned individual. i was just wondering, have they ever offered you a chair? \n\nguard: nope. \n\ngeorge: would you like a chair? \n\nguard: i suppose if they gave me one i'd sit down. \n\ngeorge: ah ha, ah ha. you would, wouldn't you? \n\nguard: obviously i'd rather sit than stand, if that's what your asking. \n\ngeorge: that's exactly my point. \n\nguard: well who wouldn't? \n\ngeorge: cause i tell you, frankly, i would like to walk in hear one day and find you sitting down. (starts to walk out of the store) that would give me a lot of pleasure. call me crazy. \n\n[setting: back seat of a cab. jackie and kramer] \n\njackie: you put the balm on? who told you to put the balm on? i didn't tell you to put the balm on. why'd you put the balm on? you haven't even been to see the doctor. if your gonna put a balm on, let a doctor put a balm on. \n\nkramer: i guess i screwed up huh jackie? \n\njackie: your damn right you screwed up. where the hell did you get that damm balm anyway? \n\nkramer: the maestro. \n\njackie: the who? what are you talking about maestro? \n\nkramer: my friend he's a conductor. \n\njackie: oh oh oh, so a maestro tells you to put a balm on and you do it? \n\nkramer: well my stomach was burning. \n\njackie: i tell you what this is. this is a public humiliation. \n\nkramer: well i didn't know the balm was gonna work. \n\njackie: do you know what a balm is? have you ever seen a balm? didn't you read the instructions? \n\nkramer: well i ... \n\njackie: (interrupts) no one can tell what a balm's gonna do. they're unpredictable. \n\nkramer: i'm sorry jackie. \n\njackie: (to cab driver) pull over here driver this is it. \n\nkramer: (motions with his head) yeah, get over. \n\n[setting: elaine and jerry walking on the sidewalk in nyc] \n\njerry: did you have a good time? \n\nelaine: yeah, he's very interesting. did you know that mozart died while he was writing 'the requiem'. \n\njerry: (sarcastically) yeah, everyone knows that, it was in amadeus. \n\nelaine: really? \n\njerry: so what about the \"maestro\" stuff. did he make you call him maestro. \n\nelaine: yeah, i called him maestro. \n\njerry: you didn't mind? \n\nelaine: well, i did at first, but actually i kind of got used to it. \n\njerry: o.k. from now on i want you to call me \"jerry the great\". \n\nelaine: i am not calling you \"jerry the great\". \n\njerry: why not you call him maestro. \n\nelaine: he is a maestro. \n\njerry: well, i'm great. \n\nelaine: so you say. \n\njerry: what about his house in tuscany, he mention that? \n\nelaine: yeah. (bragging) i'm invited. \n\njerry: you know when i told him it was beautiful there, out of the clear blue sky he says there's nothing to rent. as if he doesn't want anyone else there. \n\nelaine: why? \n\njerry: i don't know. maybe he's embarrassed by americans. \n\nelaine: yeah, well maybe there aren't any houses to rent there. \n\njerry: in all of tuscany? i wonder. \n\n[setting: office of a java world building] \n\nmr star: i say we offer him $50,000 that's it, take it or leave it. \n\nmr burns: how do we know how severe the burns are? why don't we have him examined by a doctor. \n\nms. jordan: listen, the faster we dispose of this the better. this thing gets into the paper it will kill us. \n\nmr star: all right, we'll start at 50,000 and free coffee at all of our stores. \n\nmr star: (answering secretary) yes? \n\nsecretary: mr. chiles and mr. kramer are here. \n\nmr star: send them in. \n\nmr star: gentleman. \n\nmr star: gentleman come in. now we don't want to take up much of your time. let's make this short and sweet. we're prepared to offer you all the free coffee you want in any of our stores throughout north america and europe, plus.. \n\nkramer: (interrupting) i'll take it!! \n\n[setting: jackie and kramer in the back of a cab] \n\njackie: i'll take it? who told you to take it? did i tell you to take it? \n\nkramer: no. \n\njackie: i know the maestro didn't tell you to take it, he wasn't there. \n\nkramer: well i thought we were lucky to get anything. \n\njackie: free coffee? \n\nkramer: yeah. \n\njackie: i don't want free coffee. it's not hard to get coffee. i can get my own \n\nkramer: well i didn't hear any plus. \n\njackie: 20 years practicing law i've never experienced anything like this. \n\nkramer: look, java world. (to cabbie) hey listen i'm gonna get out here. i'm gonna get myself a free cafe latte. \n\n[setting: jerry and elaine are walking down the street and hear music approaching] \n\nelaine: hey. hi maestro. \n\nmaestro: beethoven's 7th. \n\nelaine: yeah. \n\njerry: hey you know we were just talking about you. \n\nmaestro: oh yeah? \n\njerry: yeah, ya know the other day how you mentioned that there were no houses available in tuscany? \n\nmaestro: you didn't find one, did you? \n\njerry: no. i'm not really looking. \n\nmaestro: nor should you. \n\njerry: so are you telling me there's not one house to rent in all of tuscany? \n\nmaestro: the houses are passed down from generation to generation, it's very hard. \n\njerry: i can't get a sublet, a guest room, a cot, nothing? \n\nmaestro: it's booked solid! \n\nelaine: it's booked jerry! \n\njerry: how'd you get yours? \n\nmaestro: got lucky. come on, elaine, let's take a ride, i was about to pop in some verdi. \n\njerry: maybe i'll check out france. \n\njerry: hey george, do you believe this guy? \n\ngeorge: who? \n\njerry: bob cobb. \n\ngeorge: bob cobb? \n\njerry: you know, the maestro. \n\ngeorge: oh i missed the maestro? \n\njerry: yeah, get this, he tells me there are no houses any where in tuscany to rent. \n\ngeorge: huh. your renting a house in tuscany? \n\njerry: no. \n\ngeorge: so what do you care? \n\n[setting: monk's cafe. george and jerry are sitting at the booth] \n\njerry: i just wish i could figure out if this guy is trying to keep me out of tuscany. \n\ngeorge: of course he is. there's got to be houses for rent in tuscany. do you know how big tuscany is? \n\njerry: i have no idea. \n\ngeorge: it it's huge. it's probably like north dakota. \n\njerry: oh, no way it's that big. \n\ngeorge: it's a big region. \n\njerry: do you know how big north dakota is stupid? \n\ngeorge: i don't know why i bother even talking to you. \n\njerry: hey, no one's got a gun to your head. \n\ngeorge: all right. \n\ngeorge: so i spoke to the security guard. \n\njerry: yeah and? \n\ngeorge: well it's tough to get a good read but i think if i brought him a chair, he'd sit. \n\njerry: so are you gonna get him a chair? \n\ngeorge: yup. it's really just a question of what kind. thinking about a bar stool. \n\njerry: yeah, that would give him some height, be able to check things out. with a back or without. \n\ngeorge: oh i think i'd go for the back. \n\njerry: swivel? \n\ngeorge: i suppose he could swivel. hey maybe one of those director's chairs. what do you think of those. \n\njerry: i thinks it's kind of a pompous look. you know my parents used to have a kitchen chair that would have been perfect. \n\ngeorge: you mean one of those vinyl things? \n\njerry: yes. \n\ngeorge: vinyl yeah, maybe. \n\njerry: how can i figure out if there's any places to rent in tuscany? wait a minute. poppy's from tuscany. i'm gonna go call him. \n\ngeorge: yeah, good luck. hey i'll meet you outside. \n\n[setting: in maestro's car, he and elaine are driving and singing finiculi, finicula] \n\n[setting: on the street in the city, george and jerry are talking] \n\njerry: poppy told me to talk to his cousin, he lives down in little italy. \n\ngeorge: what do you think about a rocking chair? \n\nkramer: (speaking very fast and fidgety) you can't put a limit on my cafe lattes, it says so right here. and i don't want to get dirty looks when i come in here. if i want a cafe latte, you give me a cafe latte. and if i have any problems i'm gonna get my lawyer jackie chiles down here and your gonna be in really big trouble. \n\njerry: hey hey hey, slow down eddie. what what's the matter? \n\nkramer: awe there making faces at me cause i've had a couple of cafe lattes. but i'm entitled to them. i can have as many cafe lattes as i want, that was the settlement. \n\njerry: that's it? \n\nkramer: that's it. what you want one george? i can get one for you. no problem. jerry, you want one? they're delicious. my pleasure. \n\njerry: you've got to stop it. your your all hopped up on the caffein. \n\nkramer: well i feel like i'm talking fast but it's very hard to tell. \n\njerry: you're racing! \n\nkramer: well well i've got things to do. i'll see you later. bye. \n\n[setting: dark room. elaine and maestro are kissing] \n\nelaine: (passionately) oh bob! bob! \n\nelaine: (correcting herself) maestro! \n\n[setting: ross' clothing store. george carries in a rocking chair] \n\nclerk: (noticing george with the rocking chair) excuse me. can i help you? \n\ngeoge: nope. just a, giving a chair to the security guard. \n\nclerk: did mr. ross tell you to do this? \n\ngeorge: what's your name? \n\nclerk: evan fayne. \n\ngeorge: i'm engaged to mr. ross' niece. i'm probably gonna be taking over this whole place someday so if i were you i would stay on my good side. \n\nclerk: i'm terribly sorry, i didn't know. \n\ngeorge: innocent mistake. \n\ngeorge: well, here you go. what do you think? \n\nguard: mr. ross says this is o.k.? \n\ngeorge: hey, i'm his nephew, all right? don't worry about it. go ahead. check it out. \n\nguard: not bad. not bad at all. \n\n[setting: dark room in the back of an italian restaurant.] \n\njerry: ah, excuse me, i'm looking for a mr. giggio. \n\ngiggio: si, si, imma giggio. \n\njerry: poppy sent me to see you mr. giggio. \n\ngiggio: si, si poppy. \n\njerry: um, did he did he mention to you why i called? \n\ngiggio: si, the house in tuscana. \n\njerry: yeah, right, right. so is there anything there to rent? \n\ngiggio: si. two million lira. you give me the check. \n\njerry: i didn't actually want to rent it. \n\ngiggio: the keys, here are the keys. you give me the check. two million lira. seventeen hundred americana. molto generoso. \n\ngiggio: (to the man) si, si. \n\njerry: so see um, i didn't say that i wanted to rent it, i was just wondering if there were houses there to rent. \n\ngiggio: si. (hods up the keys) thissa one!. capiche? \n\n[setting: ross' clothing store. the employees are being held up at gun point. the camera moves from the right to the left. there is a masked man taking the money from the cash register. as the camera moves all the way to the left of the store, you see the security guard fast asleep in his new chair] \n\n[setting: at the window of a house in tuscany. elaine and maestro are talking. there is a lady singing in italian in the background] \n\nelaine: it's been a rough couple of weeks, ya know i really needed to get away. \n\nmaestro: i told you, it's paradise. \n\nelaine: you're right maestro. \n\nkramer: common jerry, this guy is crazy. get out. \n\njerry: you didn't have to push me. \n\nkramer: i didn't push you. how much did you pay that guy? \n\njerry: 75,000 lira. \n\nkramer: 75,000 lira? are you out of your mind? \n\njerry: kramer you don't under the conversion rate. \n\nkramer: oh, conversion rate, oh. \n\njerry: you know i don't even know why i brought you. \n\nkramer: nobody put a gun to your head. \n\njerry: not bad! \n\nkramer: yeah! \n\nelaine: hello \n\njames: this is your wake up service. it's 715 \n\nelaine: oh, god. oh, i could use a few more hours sleep. \n\njames: hot date last night? \n\nelaine: i wish. \n\njames: a woman with a sexy voice like yours its hard to believe your waking up alone. \n\nelaine: really? thank you., wake up service . . . person. \n\njames: call me james. \n\nelaine: oh, all right, james. he he he \n\ngeorge: your wake up guy asked you out? \n\nelaine: yeah, i've never seen him but i feel like we have this weirdly intimate relationship. i mean, i'm lying in bed, i'm wearing my nightie, \n\njerry: i don't know. blind date? \n\nelaine: what? you're going to go out with my cousin holly. you've never met her. \n\njerry: yeah, but i've seen pictures of her. \n\nelaine: at least i've spoken to my guy. you're going out on a deaf date. \n\njerry: i think i'd rather go out on a deaf date than a blind date. the question is whether you'd rather date the blind or the deaf. \n\nelaine: ah, . . . \n\ngeorge: now you're off on a topic. \n\njerry: you know, i think, i would rather date the deaf. \n\nelaine: uh hu. \n\njerry: because i think the blind would probably be a little messier around the house. and lets face it they're not going to get all the crumbs. i'd possibly be walking around with a sponge. \n\ngeorge: you see i disagree. i'd rather be dating the blind. you know you could let the house go. you could let yourself go. a good looking blind woman doesn't even know you're not good enough for her. \n\nelaine: i think she'd figure it out. \n\nelaine: what? what is this? \n\njerry: veggie sandwich and a grapefruit. \n\nelaine: veggie sandwich and a grapefruit? what are you turning into? \n\njerry: a healthy person. \n\ngeorge: ( rubbing his eye) ow, ow you squirted me. \n\njerry: oh, sorry \n\ngeorge: boy, it stings. \n\nwilhelm: george, have you seen morgan? \n\ngeorge: no. \n\nwilhelm: he's been coming in late all week. is there something wrong? \n\ngeorge: no, not that i know of. (winks) \n\nwilhelm: really? make sure he signs this. oh, look george, if there's a problem with morgan you can tell me. \n\ngeorge: morgan? no. he's doing a great job. (winks) \n\nwilhelm: i understand. \n\njerry: i still can't believe, you're going out on a blind date. \n\nelaine: i'm not worried. it sounds like he's really good looking. \n\njerry: you're going by sound? what are we? whales? \n\nelaine: i think i can tell. \n\njerry: elaine, what percentage of people would you say are good looking? \n\nelaine: twenty-five percent. \n\njerry: twenty-five percent, you say? no way! it's like 4 to 6 percent. it's a twenty to one shot. \n\nelaine: you're way off. \n\njerry: way off? have you been to the motor vehicle bureau? it's like a leper colony down there. \n\nelaine: so what you are saying is that 90 to 95 percent of the population is undateable? \n\njerry: undateable! \n\nelaine: then how are all these people getting together? \n\njerry: alcohol. \n\nelaine: (to george who is winking) what is your problem? \n\ngeorge: no problem here. \n\nelaine: you keep winking at me. that's really obnoxious. \n\ngeorge: i had no idea. \n\nelaine: right there. right there. you just did it again. \n\ngeorge: wait a minute. wait a minute. it's from that grapefruit that jerry squirted at me. \n\nelaine: you're eye still hurts? \n\ngeorge: yeah, yeah. you must have squirted a piece of pulp in it too. \n\njerry: pulp couldn't make it across the table. \n\ngeorge: pulp can move, baby! why didn't you eat a real breakfast? \n\njerry: hey, i eat healthy. if i have to take out an eye, that's the breaks. \n\ngeorge: wait a minute. i must have been winking down at the office. that's why mr. wilhelm was acting so mysteriouso. \n\nelaine: what did he think, you were flirtin' with him? \n\ngeorge: hu, oh. no he thought i was hiding something from him about morgan. \n\nkramer: hi guys. \n\njerry: hi, \n\nkramer: hello archie, veronica, mr. weatherbee. . . . is this don matingly's signature? \n\ngeorge: yeah. \n\nkramer: and buck showalter's? \n\ngeorge: it's an inter-office envelope. it get passed around all over the office. \n\nkramer: um, can i show this to my buddy stubbs . he runs a sports memorabilia store. he pays top dollar for pro autographs. \n\ngeorge: yeah, like i'm going to risk my job with the new york yankees to make a few extra bucks. (winks) \n\nkramer: no, of course not. (winks back) \n\nkramer: you know, you see don matingly signed this envelope then he sent it to room 318, where it was received and signed for by manager buck showalter. \n\nsteinbrenner: i don't know. an envelope doesn't really cut it. \n\nkramer: why? \n\nsteinbrenner: what is this? a birthday card. ha ha . . . signed by the entire yankee organization! . . . this could be worth something. \n\ngeorge: is that the lovely mrs. morgan? \n\nmorgan: hello. \n\nmorgan: oh, by the way, have you got that birthday card? \n\ngeorge: birthday card? \n\nmorgan: mr. steinbrenner's birthday card. wilhem said you had it for me to sign. \n\ngeorge: oh ah, i uh, will have that for you by after lunch. \n\nmorgan: fine. i'll be back after my massage. \n\ngeorge: of course. your massage. (winks) enjoy your massage. (winks) \n\nelaine: hello. \n\njames: elaine? \n\nelaine: james! ah, ha, hello! phew! \n\nholly: i can't believe you've never taken anybody here before. \n\njerry: well, i'm not really that much of a meat eater. \n\nholly: . . . you don't eat meat? are you one of those. . . \n\njerry: well, no, i'm not one of those. \n\nholly: when we were little girls grandma memma would take us to a matinee and then dinner here. \n\njerry: grandma memma? \n\nholly: elaine must have mentioned grandma memma. \n\njerry: no, i think i would have remembered memma. \n\nholly: oh well, that's typical. elaine never liked grandma memma. \n\nwaiter: ready? \n\nholly: i'll have the porterhouse medium rare, baked potato with sour cream, \n\njerry: what do you recommend besides the steak? \n\nwaiter: the lamb chops are good. \n\njerry: anything lighter? how do you prepare the chicken? \n\nwaiter: it's a full bird. stuffed with ham, topped with gorganzola. \n\njerry: you know what? i think i'll just have the salad. \n\nwaiter: . . . thank you. \n\njerry: (mind's voice) just a salad? just a salad? just a salad? \n\njames: hey you, hey you. \n\nelaine: oh, uh, ha, you've got dogs? \n\njames: yeah, you know, when you live alone, you're dogs are all you have. do you like dogs? \n\nelaine: (mind's voice from -  ) shut up! you stupid little mut ! \n\nelaine: dogs. oh i love dogs. \n\njames: boys, this is elaine. . . . sorry, they're usually very friendly. hey! \n\ngeorge: hey, mr. morgan how was your massage? \n\nmorgan: i had to cancel it. for some reason my wife got it into her head that it was more than just a massage. \n\ngeorge: really? \n\nmorgan: yeah, we had this big fight at lunch it looks like tonight i will be sleeping on the couch. \n\ngeorge: hey, listen don't oversleep. you can't afford to be late again. \n\nmorgan: i know. somebody around here has been giving wilhelm the impression that i have been slacking off. \n\ngeorge: geez, hey you know something, you should try my friend's wake up service. she swears by this thing. \n\nmorgan: costanza, you may be my only friend around here. by the way, you got that birthday card? \n\ngeorge: ah, not yet. \n\nmorgan: just make sure steinbrenner doesn't get it until i sign it. \n\ngeorge: yes sir! \n\nelaine: i just don't understand it as soon as i met these dogs they started growling at me. \n\njerry: maybe his dogs heard about how you tried to kidnap that other dog. these muts like to gossip. so have you talked too holly? \n\nelaine: huh huh. \n\njerry: did she mention anything about our lunch? \n\nelaine: uh, kind of. \n\njerry: what do you mean, \"kind of.\"? \n\nelaine: i mean, she thought it was kind of strange to just order a salad. . . . you know. . . . for a man. \n\njerry: what are you saying? . . . salad! what was i thinking? women don't respect salad eaters. \n\nelaine: you got that right. \n\njerry: but you're going over there for dinner tonight, right? \n\nelaine: um uh. \n\njerry: what is she making? \n\nelaine: i don't know. but i'm sure it had, . . . parents. call her up. she won't mind if you come. \n\njerry: oh, don't worry. i'll be there and i'll be packing an artery. \n\nkramer: ah, mr. weatherbee. \n\ngeorge: you got the yankee envelope? \n\nkramer: sure do. \n\ngeorge: oh, \n\nkramer: here you go. \n\ngeorge: hey, he, \n\nkramer: you'll be pleased to see what's inside. \n\ngeorge: what is this? \n\nkramer: you're cut of the loot. stubs gave me 200 dollars for the autographed birthday card that was inside. \n\ngeorge: who told you to sell the card? \n\nkramer: you did. \n\ngeorge: no i didn't! \n\nkramer: no, not in so many words but i believe we had an understanding. (winks) \n\ngeorge: i was not winking you idiot. that was the grapefruit. it's like acid. i need that card back. it's mr. steinbrenner's. i was responsible. \n\nkramer: well stubs has already sold it to some guy who's kid's in the hospital . \n\ngeorge: well get it back! it's very important. (winks) \n\nkramer: look, do you want me to get it back or not? \n\ngeorge: (holds eyes wide open) get it back! \n\nelaine: such a lovely table setting. oh, wear did you get these napkins? \n\nholly: they're grandma memma's. \n\nelaine: oh, i don't remember them. \n\nholly: oh, you wouldn't. she only used them on special occasions. \n\nelaine: special occassions? it wasn't special when my family visited? \n\nholly: everybody like mutton? \n\njerry: um, mutton! hope you didn't cut the fat off. \n\nkramer: that you bobby? \n\nbobby: huh \n\nkramer: well, i heard that you have a very uh, special birthday card .with all the yankee autographs on it. \n\nbobby: sure do. mister. \n\nkramer: oh, that's it, yeah. boy, stubs sure went to town with this thing huh? yeah, well, bobby, uh, what if i told you a very important person at the new york yankees needed this card back. \n\nbobby: oh, no. i'd never part with this card for anything in the world. \n\nkramer: well, uh, bobby, uh, who's your favorite yankee. \n\nbobby: paul o'neill. \n\nkramer: all right. what if i tell paul o'neill to hit a home run tomorrow, just for you. \n\nbobby: would he? paul o'neill would do that? \n\nkramer: for you he would. \n\nbobby: would he hit two home runs? \n\nkramer: two? sure kid, yeah. but then you gotta promise you'll do something for me. \n\nbobby: i know. get out of this bed one day and walk again. \n\nkramer: yeah, that would be nice. but i really just need this card. \n\nelaine: what about this candelabra? \n\nholly: yeah, that was grandma memma's also. she bought it on her trip to europe in 1936. jerry, i'm thrilled you like my mutton. i was afrais you only ate . . . salad. \n\njerry: hey, salad's got nothin' on this mutton. \n\nholly: that is so funny. did you just make that up? \n\njerry: i wish i could take credit for it. it's actually the line my butcher uses when we're chewing the fat. how about that beautiful desk over there? (hides meat in napkin in jacket) \n\nholly: that was in grandma's study. \n\nelaine: what did you do, ransack the place after she died? \n\njerry: this is some fine mutton. \n\nelaine: i'm getting out of here. can i borrow your jacket? \n\njerry: uh, well, uh the thing is that . . . (jerry grabs jacket back) \n\nelaine: it's cold out, and i didn't bring my own. jerry! god forbid i should borrow one from holly. it might have belonged to grandma memma. thanks for mutton. \n\nelaine: down boy, nice doggy . i'm a nice person. don't believe what you hear. \n\nholly: where are the napkins? \n\njerry: what? \n\nholly: grandma memma's napkins. there's two missing. elaine took them didn't she? \n\njerry: i don't know about that. have you got any floss? \n\nholly: you heard her. she coveted them. i bet she took them just to spite me. she's probably having a good laugh about it right now. \n\nelaine: down doggy . oh oh a a a a a \n\njerry: elaine, what are you doing in this neighborhood? \n\nelaine: did you do with the dogs? \n\njerry: yeah, they're in the kitchen. . . . okay, quite! what's going on? \n\nelaine: these dogs were chasing me. and no cab would stop and i had to get off the street. then i remembered that you lived here. \n\njerry: why were dogs chasing you? \n\nelaine: they just don't like me. it's a long story. i can tell you one day but i can't tell you right now. \n\njerry: i would askk you to stay tonight but i only have the sofa bed and it's where i sleep. \n\nelaine: we'll have to sleep head to toe. \n\njerry: head to toe? \n\nelaine: head to toe. \n\nelaine: hey, wake up. it's 830 you were supposed to walk me up at 715. \n\njerry: i'm sorry i didn't get any sleep you kept kicking me in the face. \n\nelaine: you're a wake up guy. don't you have calls to make? \n\njerry: i'll make them later. uh. \n\nwilhelm: have you seen morgan? \n\ngeorge: he's not here? \n\nwilhelm: no, he's late. \n\ngeorge: it's impossible. i got him a wake up service. \n\nwilhelm: now, george, you don't have to cover for him any more. he's going to be gone soon and i'm going to recommend you for his job. \n\ngeorge: . . . gone? \n\njerry: it sounds like all the winking got you a promotion. \n\ngeorge: i don't want morgan's job. he's got a lot of work to do. hey, elaine, your friend never woke up mr. morgan. \n\nelaine: nah, he was tired. he had some feet in his face. my cousin holly is completely insane. she keeps calling and accusing me of stealing her napkins. \n\ngeorge: napkins? \n\nelaine: i mean, why? why would i take her stupid napkins. \n\njerry: because they were in the pockets of my jacket. \n\nelaine: they were? \n\njerry: yes. i was using them to spit out the mutton. \n\nelaine: spit it out? i had dogs chasing me for that mutton. i was almost mauled because of that mutton. \n\ngeorge: what exactly is mutton? \n\njerry: i don't know and i didn't want to find out. so where is my jacket? \n\nelaine: oh, i must have left it at jame's \n\njerry: you spent the night at james's? did we? \n\nelaine: yeah but we reversed positions so there was no funny business. \n\njerry: reversed positions? \n\nelaine: yeah, you know, head to toe. \n\njerry: so what your genitals are still lined up. \n\nelaine: no, because i slept with my back to him. \n\nkramer: mr. o'neill? \n\no'neill: yeah. \n\nkramer: yeah, uh, look, you don't know me. \n\no'neill: i can give you an autograph there, but my pen's kind of screwed up. you'd only like half a \"p\" or something. \n\nkramer: no, it's uh, not that see,. it's about a little boy in a hospital. i was wondering if you could do something to lift his spirits. \n\no'neill: sure, i could help you there. \n\nkramer: sure, well i promised you would hit him two home runs. \n\no'neill: say what? \n\nkramer: you know, klick!. a couple of dingers. \n\no'neill: you promised a kid in the hospital that i would hit two home runs? \n\nkramer: yeah, well, no good? \n\no'neill: yeah. that's no good. it's terrible. you don't hit home runs like that. it's hard to hit home runs. and where the heck did you get two from? \n\nkramer: two is better than one. \n\no'neill: that, that's ridiculous. i'm not a home run hitter. \n\nkramer: well, babe ruth did it. \n\no'neill: he did not. \n\nkramer: oh, do you say that babe ruth is a liar? \n\no'neill: i'm not calling him a liar but he was not stupid enough to promise two. \n\nkramer: well, maybe i did overextend myself. \n\no'neill: how the heck did you get in here anyway? \n\njames: (on phone) oh, hi elaine. you know i lost all of my 630 clients because of you. . . . yeah, well why did you have to stick your feet in my face? . . . yes, i have the jacket. hold on. . . . (to dogs) fellas! \n\ntv: the yankees take the field on a beautiful afternoon. \n\nkramer: it's hot in here. hey, bobby, can i have some of your juice? \n\nbobby: after paul o'neill hits his first home run. \n\nholly: (from buzzer) it's holly. \n\njerry: yeah. come on up. \n\ntv: and the two and one pitch to o'neill. a towering shot back to deep right field and it's gone. \n\nkramer: yeah. \n\ntv: a home run for paul o'neill. the yanks lead one nothing. \n\nkramer: oh yeah! all right! \n\nbobby: one more to go. \n\njerry: hey. what's all this? \n\nholly: i decided i was going to make you dinner. \n\njerry: i thought we were going out. \n\nholly: well, after you scarfed up my mutton i had the irresistible urge to make pork chops for you. i said hello to franco for you. \n\njerry: franco? \n\nholly: your butcher, down the street. \n\njerry: i bet he acted aloof like he didn't know me. \n\nholly: a little. \n\njerry: that is so franco. \n\ntv: bottom of the eighth, score tied at one apiece. two and one to paul o'neill. \n\nkramer: you know bobby, it's very very hard to hit two home runs in one game. even for paul o'neill. \n\nkramer: he can do it, mr. kramer. i know he can. he'll do it for me. \n\ntv: \"klick! long fly ball into deep left field over bell's head . . . o'neill's rounding second o'neill going for third, o'neill rounding . . . \n\nkramer: come on come on! \n\ntv: . . . third being waived in. \n\nkramer: go! go!! \n\ntv: . . . martinez throws it over alomar's head. o'neill is safe at home. and the yankees take the lead. \n\nkramer: an in the park home run! \n\nbobby: yeay! \n\nkramer: all right! yeah, well, i guess i'll be on my way (grabs framed card) \n\ntv: that's being scored a triple for paul o'neill with a throwing error charged to martinez. \n\nbobby: hey, \n\nkramer: huh? \n\nbobby: that's not a home run. (grabs frame) \n\nkramer: yeah, maybe not technically, but \n\nbobby: you said he'd hit two home runs. \n\nkramer: oh, come on. bobby, bobby! that's just as good! \n\nbobby: well, you're not taking that card. \n\nkramer: now, bobby, bobby, we had a deal . . . gimme that \n\nholly: so, is the chop the way you like it? \n\njerry: i usually like mine with an angioplasty. \n\nelaine: you know something really stinks to high h holly! what are you doing here? \n\njerry: what everyone does here. - cooking pork chops. \n\nelaine: i'm uh, i'm meeting james here. he's bringing over your jacket. \n\nholly: what about the napkins? \n\nelaine: i didn't take your napkins. \n\nholly: then who did? \n\nelaine: ask jerry. \n\njerry: we could argue all night over who took the napkins. the point is in today's modern world it just doesn't seem relevant. \n\nwilhelm: i still want to know what happened to that birthday card? now, morgan, did you ever sign it? \n\nmorgan: no sir, george never gave it to me. \n\ngeorge: no, that's right, i didn't. i take full responsibility for the card not being here. i, uh, . . . \n\nkramer: hi, \n\nwilhelm: what's this? \n\nkramer: oh, it's a birthday card. \n\nkramer: (to george) oh, by the way, tomorrow night, paull o'neill has to catch a fly ball in his hat. \n\nwilhelm: george, this is beautiful. why didn't you tell me you were going to have it mounted like this? \n\nkramer: and you were probably just going to stick it in an envelope. \n\nwilhelm: ha ha ha ha ha, george, keep up the good work. \n\nmorgan: ha ha, uh, well you screwed me again, costanza. how am i supposed to sign the card now when it's already under glass? \n\nelaine: uh, this is, \n\nholly: excuse me. what are those dogs wearing? \n\njames: oh, bandanas, aren't they cute? \n\nholly: you gave memma's napkins to some dogs?! \n\njerry: hey, what happened to my jacket? \n\njames: oh, the dogs did that but it wasn't their fault, somebody stuffed some strange meat in the pocket. \n\nholly: was it mutton? \n\njames: could have been. \n\nholly: do you always stuff meat in your pocket? \n\njerry: uh, sometimes i use the sofa. \n\ngeorge: you wanted to see me, mr. steinbrenner? \n\nsteinbrenner: yes, george, please, come in, come in. \n\nsteinbrenner: thanks for the card. i loved it. gosh it made me feel good. you know, word has it that you were the brains behind the whole thing. \n\ngeorge: oh, no, not just me, the whole organization. especially mr. morgan. \n\nsteinbrenner: morgan, morgan, you know his name is conspicuously absent from this card. almost like he went out of his way not to sign it. \n\ngeorge: oh no, morgan is a good man sir. \n\nsteinbrenner: you can stop kowtowing to morgan. congratulations, you got his job. \n\ngeorge: wa, uh, thank you sir, you know i am not quite sure i'm right for it. \n\nsteinbrenner: stop it george, he's out, you're in. \n\nsteinbrenner: a lot more work you know. \n\ngeorge: i know. \n\nsteinbrenner: a lot more responsibility. long long hours. \n\ngeorge: i know. \n\nsteinbrenner: not much more money. but you'll finally get the recognition you deserve. \n\ngeorge: that's what i'm afraid of. you know mr. steinbrenner, . . . \n\nsteinbrenner: you know as painfull as it is i had to let a few people go over the years. yogi berra, lou pinella, bucky dent, billy martin, dallas green, dick houser, bill virdon, billy martin, scott marrow, billy martin, bob lemmon, billy martin, gene michael, buck showalter,  uh, tut!, . . .george, you didn't hear that from me. (george exits) . . . george! \n\ni always feel bad for the silver medal winner in the olympics. how do you live with that the rest of your life? people are gonna keep asking: - how much did you lose by? - i don't even know...! it was like...(very fast) now.now...now.now..now..was like, like... now..now..now...! it was it...! eh, it was it and i lost. i trained, i worked out, i exercised, i did everything, i was doing push-ups, sit-ups, i never did anything but exercise and work out for 20 years, i flew half way around the world and aaaaaaaaaah!...(showing a tiny distance between his index and thumb) and that was...it was a photo-finish! silver...(stretching his neck forward)...gold. if i had a pimple, i would've won. \n\njerry: (to elaine) i can't believe you write for this j.peterman catalog. (to george) get this one \"i packed my rod and reel. 30 hours later, lost in the fiord, a welcoming smile. thank god she spotted the epaulettes on my norwegian ice-fishing vest\". \n\ngeorge: this catalog is all about how to score in a foreign country. \n\nelaine: yeah. what do you do all day? \n\ngeorge: not that much. \n\nelaine: uh-uh. \n\njerry: i thought that new promotion was supposed to be a lot more work. \n\ngeorge: yeah, when the season starts. right now, i sit around pretending that i'm busy. \n\njerry: how do you pull that off? \n\ngeorge: i always look annoyed. yeah, when you look annoyed all the time, people think that you're busy. think about it... (acts annoyed for 3 seconds). \n\nelaine: yeah, you do! he looks very busy! \n\njerry: yeah, he looks busy! yeah! \n\ngeorge: i know what i'm doin'. in fact mr. wilhelm gave me one of those little stress dolls. all right. (gets up) back to work. (acts annoyed and leaves) \n\nelaine: (laughs) \n\njerry: so did you come up with a little stupid story for the himalayan walking shoe yet? \n\nelaine: no. i'm completely blocked! in fact, i'm gonna work on it tonight. oh. oh no! oh, i can't! i got that marathon runner coming in tonight. \n\njerry: what marathon runner? \n\nelaine: you know, this guy jean-paul, jean-paul... i met him when i was working at pendant, editing a book on running... \n\njerry: oh, wait! jean-paul, jean-paul! isn't he the guy who overslept at the olympics 4 years ago and missed the marathon?! \n\nelaine: yeah, that's him. \n\njerry: he's from uh...trinidad and tobago, right? \n\nelaine: yeah, he's trinidadian and...tobagan. (laughs) \n\njerry: how do you oversleep at the olympics...? \n\nelaine: ah, i know. i know...! \n\njerry: i mean, it's like the biggest event of your life! you'd think you'd have, like, 6 alarm clocks, payin'-off little kids in the village to come banging on your door... \n\nelaine: yeah, well, he was pretty devastated. this is his first race in 3 years. \n\njerry: ah...that's a big responsability on your hands. \n\nelaine: what responsibility? i don't have any responsibility. \n\njerry: you gotta wake him up! \n\nelaine: eh...he'll get up... \n\nelaine: hi, judy. \n\njudy: hi, elaine. how are you? \n\nelaine: fine. (laughs) \n\njerry: i've seen her in your building. \n\nelaine: yeah. \n\njerry: i didn't know she was married. \n\nelaine: (whispering) she's not... and the guy just took off. (makes a sad face) don't say anything to anybody. \n\njerry: whom i gonna tell? \n\nelaine: i know, it's just something you have to say... \n\nwilhelm: george, we just got the final budget numbers. we went over budget on some of the items, but i don't think there's gonna be a problem. (hands over the budget file to a very annoyed george) i'll let you get back to work, george. (mr. wilhelm leaves the office) \n\njerry: he overslept and missed the whole race. isn't that amazing? \n\ngeorge: i'll tell you what happened. i bet he got the am/pm mixed-up. \n\njerry: my money's on the snooze. i bet he hit the snooze for an extra 5 and it never came back on. (kramer enters with a bucket and starts filling it with water on the sink) imagine your whole life riding on an alarm clock. \n\nkramer: alarm clocks? i never use 'em. don't trust 'em. \n\njerry: what do you do? \n\nkramer: i have a uh...mental alarm. i set my head for... quarter to seven and... (makes sound with the lips - \"pop!\") ...i get up! \n\njerry: always works? \n\nkramer: it never fails. see, it's based on your body clock. see, your body has an internal mechanism. it knows what time it is. \n\ngeorge: uh-uh. what's with the bucket? \n\nkramer: lomez, he sold me his hot tub. \n\njerry: hot tub? \n\nkramer: yeah yeah, it's in my living room. i just gotta fill it. (points to bucket) \n\ngeorge: you put a hot tub... in your living room? \n\nkramer: oh, it's a beauty! it's got these high-volume aqua-sage jets oscillating and pulsating, soothing your every aching muscle. the water's gonna get over 120 degrees! (happy) \n\ngeorge: is that tolerable? \n\nkramer: oh...it's tolerable...! (happy) \n\njerry: isn't that the same temperature the coffee that scalded you? \n\nkramer: oh, i think it's a little cooler than that... (smiles and leaves) \n\ngeorge: he uh...doesn't have any running water? \n\njerry: i don't ask those kind of questions anymore. \n\nelaine: jerry. jerry, this is jean-paul. \n\njerry: ah, hi jean-paul. nice to meet you. \n\njean-paul: nice to meet you. \n\njerry: sorry about the olympics. \n\njean-paul: me too. (disappointed) \n\nelaine: listen, listen i'm gonna go call work to see if i can get my deadline extended. i can't...come up with anything for this thing. \n\njerry: ah...catalog writer's block? \n\nelaine: yeah, that's funny. (annoyed) \n\njerry: (pause) so what happened? the snooze alarm, wasn't it? \n\njean-paul: man, it wasn't the snooze. most people think it was the snooze, but no, no snooze. \n\njerry: am/pm. \n\njean-paul: man, it wasn't the am/pm. it was the volume. \n\njerry: ah...the volume. \n\njean-paul: yes, the volume. there was a separate knob for the radio alarm. \n\njerry: ah, separate knob. \n\njean-paul: yes, separate knob. why separate knob?! why separate knob?! (frustrated) \n\njerry: some people like to have the radio alarm a little louder than the radio. \n\njean-paul: oh, please, man, please! \n\njerry: don't worry, it's not gonna happen again. not if i have anything to say about it. \n\njerry: elaine, what's the alarm clock situation in your house? \n\nelaine: jerry... \n\njerry: it's a simple question... \n\nelaine: i've got an alarm, ok? \n\njerry: that old one? didn't i once miss a flight to cleveland because of that alarm clock? \n\njean-paul: flight to cleveland? \n\nelaine: it works. \n\njerry: elaine... \n\nelaine: it... works! \n\ngeorge: eh...come oooon...(starts stabbing the paper with the pen. mr. wilhelm comes in) \n\nwilhelm: george...i think you may be taking work a little too seriously. \n\ngeorge: well...i've got a lot to do! \n\nwilhelm: george, i'll tell you what i'd like you to do. i, i'd like you to drop everything. \n\nwilhelm: i have this... fun little assignment i think you'll enjoy. there's some reps in from the houston astros for talks on that interleague play... and i want you to show them a good time.(george acts like \"ok, you're the boss\") \n\nelaine: hey. sorry i'm late. \n\njerry: you're 40 minutes late. what happened? \n\nelaine: i got held up. do you mind if i heat this muffin up? \n\njerry: no. \n\nelaine: what? (elaine puts her muffin in the microwave and sets the timer) what is the problem? \n\njerry: well, you said you were gonna be here at a certain time, and you weren't. \n\nelaine: uh-uh. uh-uh. and this all means uh...what? \n\njerry: well, means that a man has come from very far away to compete in a very difficult race, he's put his faith in you, and frankly, i'm a little concerned! \n\nelaine: oh are you?! \n\njerry: yes i am. \n\nelaine: hey, i'm not running in the marathon! he is! \n\njerry: yeah, i know that! \n\nelaine: yeah, i got enough to think about just tryin' to come up with some load o'crap for that himalayan walking shoe! i mean, i've given him a place to stay, i'll set an alarm, but i'm not gonna turn my life completely upside down for this guy! \n\njerry: i'm not talking about upside down. (jean-paul and kramer come in) i'm talking about waking him up! \n\nelaine: hey, jean-paul. \n\njerry: hey, jean-paul. how was your soak? was a good soak? \n\njean-paul: ah, man, very good soak. the soak o'the year! \n\nkramer: (smelling) what's burning? \n\nelaine: oh! (rushing to the microwave) my muffin! (opens microwave door) oh, shoot! (slams it) \n\njerry: what happened? \n\nelaine: oh i don't know. i set this thing for 20 seconds. \n\nkramer: this was set for 2 minutes. see? \n\nelaine: (pointing at jerry) don't say anything! don't..say..anything! \n\njean-paul: you miss-set the timer... \n\nelaine: (leaning against the refrigerator) jean-paul, it's not my microwave, ok? ok? all right, listen, let's just go. come on, jean-paul, let's go. let's go. \n\njean-paul: ok. \n\nelaine: (to jerry) all right. we'll see you at the race, ok? \n\njerry: yeah. i hope so ?! \n\nelaine: oh that's cute! (closes door and exits with jean-paul) \n\njerry: kramer, i'm tellin' you, elaine doesn't know whatta hell she's doin'! i gotta take over this whole operation! \n\nkramer: jerry, look how tense you are... you need to take a soak. \n\njerry: i'm not taking a soak in that human bacteria frat you got goin' there. \n\nkramer: come on, i'm tellin' you, it's great. i opened up all the windows... the air is cold, the tub is boiling hot... it's like sweden, man. sweeeeden! \n\nkramer: (relaxing) ...oooohhh yeeaaah... aaahhh... (he is really enjoying this) \n\nclayton: ...'till this bastard over here says \"let's call the sons o'bitches and go visit 'em on new york!\" (the 3 men laugh) \n\ngeorge: (smiling) well, we're certainly glad that you could make it. \n\ngardner: i like your organization, george. we've been talkin' to a really friendly son of a bitch in the front office. wilhelm, i think his name. \n\ngeorge: oh yes, mr.wilhelm, yeah... \n\ngardner: he told us that george costanza was gonna be takin' us bastards out on the town. (the 3 men laugh again) i said \"that son of a bitch doesn't know what he's got in store for him!\". (the 3 men laugh once more) \n\nzeke: finish your drink? \n\ngeorge: oh yeah, al-almost. almost. \n\nzeke: let's get that bastard bring us another round! (waves to bartender) \n\nclayton: you a big drinker, george? \n\ngeorge: well...maybe not as much as this bastard... (points at zeke, they all laugh) i can hold my own! (they all continue laughing and drinking) \n\njerry: jean-paul, i asked you down here this morning because i'm concerned. concerned that tomorrow is perhaps the biggest race of your entire career. and the person with whom you have chosen to stay... is uh... \n\njean-paul: what are you saying? \n\njerry: i'm saying \"get the hell outta there\"! let me put you in a hotel. you'll be comfortable, you'll be near the starting line, and most importantly... you'll have a wake-up call, jean-paul! a wake-up call! \n\njean-paul: wake-up call... \n\njerry: these people never fail. they sit in a room with a big clock all night long, just waitin' to make that call! (george comes in) \n\njean-paul: no, i will stay with elaine. it would be rude. \n\ngeorge: hey, you bastards. \n\njerry: hey, how was the meeting? \n\ngeorge: i really like those sons of bitches. \n\njerry: sons of bitches? \n\ngeorge: yeah! that's how they talk. you know, everyone's either a bastard or a son of a bitch. yeah, it's like uh...\"boy, that son of a bitch box can really hit, uh?!\" (laughs) \n\njean-paul: really?! \n\ngeorge: yeah, yeah. that's how they talk in the major league. (laughs) \n\nkramer: heeeeey... \n\njerry: how many sweaters you got on? \n\nkramer: oh...four. (to waitress) yeah, could i have a cup o'tea? boiling hot. \n\ngeorge: what's goin'on? \n\nkramer: i fell asleep in the hot tub and the heat pump broke. water went down to 58 degrees. i can't get my core temperature back up! \n\njerry: your core temperature? \n\nkramer: (to jean-paul) here, feel my hand. (takes off glove) yeah, feel. \n\njean-paul: phew... this son of a bitch is ice-cold. (smiles) \n\ngeorge: hello? \n\nclayton: uh...is that you, george? \n\ngeorge: (laughs) yeah, it's me. is this clayton? \n\nclayton: well listen, you son of a bitch! you know where we are? 30 000 feet above your head, you bastard! (the 3 laugh and howl) \n\ngeorge: what are they doin' lettin' you bastards on an airplane? don't they know that's against faa regulation? \n\nclayton: (to the other 2 men) hey, hush up, now! i can't hear him! \n\ngeorge: listen. i want you guys to send along those agreements the minute you land. our boys can't wait to kick your butts! \n\nzeke: (to clayton) when's that bastard comin' to houston? \n\nclayton: hey, zeke wants to know when you yankee bastards are comin' to houston! \n\ngeorge: you tell that son of a bitch no yankee is ever comin' to houston. not as long as you bastards are running things. \n\nclayton: hey, uh, speak up, george, i can't hear ya! \n\ngeorge: (mr.wilhelm comes in and hears george yelling) you tell that son of a bitch no yankee is ever comin' to houston! not as long as you bastards are running things! \n\nwilhelm: george! george, get a hold of yourself! \n\ngeorge: mr.wilhelm... \n\nwilhelm: what's the matter with you?! \n\ngeorge: well i-i... \n\nelaine: (thinking and typing) it was a cold winter's night in timbuktu... (hits the keyboard) oh! this stinks! (grabs a himalayan walking shoe and starts squeezing it for inspiration) oh, come on... come on...!...god! (quits) \n\njean-paul: hello. \n\njudy: hello. \n\njean-paul: i'm a friend of elaine's. \n\njudy: oh, hi. \n\njean-paul: (looks at the baby) oooooh...look at the cute little bastard... (the building manager comes in) you are mama's little bastard, aren't you? (laughs) \n\nmanager: whatta hell are you doin' harassing my tenants? \n\njean-paul: (smiling) oh come on, you son of a bitch. i'm just trying to be friendly. \n\nmanager: all right, that's it! (grabs jean-paul and gets him out) let's go! \n\njean-paul: what...but i got a race tomorrow! \n\ngeorge: whoa...it's like a furnace in here! \n\njerry: oh whatta hell is goin'on?! \n\nkramer: yeah, i turned up the heat. \n\njerry: turn up the heat in your apartment! (opens a window) \n\nkramer: i'm freezin'! i just need to get my hot tub running. i'm waiting for my new heat pump. \n\ngeorge: well what's in this giant box out in the hall? \n\nkramer: uh? oh that must be it. \n\ngeorge: it's huge! \n\nkramer: yeah, yeah, i got the biggest one they had. it's industrial strength. 16000 btu's. \n\njerry: hello?...yeah, i can be there in 10 minutes...you can count on me! (hangs up) \n\ngeorge: (jerry is going to his bedroom) what? \n\njerry: i got the call...! \n\ngeorge: jean-paul? \n\njerry: (stops walking) jean-paul! (george acts like he scored) \n\njerry: pretty lucky to find this hotel, jean-paul. \n\njean-paul: man, i just want to get some sleep. (gets into bed) \n\njerry: all right. (picks up the alarm clock) let's check out the clock. notch good... 650... volume check. (music playing, he starts swinging) what kinda music you wanna wake up to? top 40, classical... \n\njean-paul: man, whatever! (annoyed) \n\njerry: how about adult contemporary? \n\njean-paul: fine, adult contemporary. just pick one! (irritated) \n\njerry: all right...we're going with adult contempo... (puts alarm away, gets phone) now... the failsafe. the wake-up guy... (dials) \n\njean-paul: yes, yes, the wake-up guy. \n\nman: (on the phone) front desk...? \n\njerry: yeah, this is room 419, i'd like a wake-up call for 650 am tomorrow morning. \n\nman: yes sir. \n\njerry: that's room 419. 650 am. four...one...niner... \n\nman: yes, i got it sir. you only had to say it once. \n\njerry: i know, but it's a very important wake-up call... and i don't wanna take any chances. \n\nman: every wake-up call i make is important. you're no more important than any of our guests. \n\njerry: well, i just...don't wanna get into a whole thing with you here... \n\nman: are you through? (annoyed) \n\njerry: ...yeah i am, but i just...(man hangs-up) \n\njerry: humm... \n\njean-paul: what is it...? \n\njerry: i think i offended the wake-up guy...! (worried) \n\njean-paul: no, no. \n\njerry: (gets up) no, no, i did. i think he's got it in for me! \n\njean-paul: man, he doesn't got \"in\" for you. \n\njerry: what if he doesn't call now out of spite? \n\njean-paul: it is his job! \n\njerry: (pause) not comfortable... (gets up again) \n\njean-paul: for god's sake...! (gets up and they start packing) \n\nelaine: jean-paul? (searching everywhere) hey jean-paul? jean-paul? (worried) jean-paul?! oh man... (calling jerry's) oh...machine. \n\njerry's machine: i'm not here, leave a message. \n\nelaine: jerry, jerry, jean-paul's missing! he's alone in the city! call me back. (hangs up) \n\nelaine: judy, hi, listen... \n\njudy: you have got some nerve, elaine! i told you about that baby in confidence! \n\nelaine: oh i didn't tell anyone. \n\njudy: well your friend certainly seemed to know all about it. (shuts the door) \n\nelaine: ... jerry! (runs angry to her apartment) \n\njerry: feel much better here at my home base, jean-paul. it's a controlled environment. \n\njean-paul: it's a marathon, you know. 26 miles! i need to get some sleep! (lies on the sofa) \n\njerry: hey, believe me, if i'd been with you there in barcelona...you'd be polishing that medal right now. (covers jean-paul with a blanket) \n\njean-paul: left a comfortable hotel bedroom for this! \n\njerry: that wake-up guy was trouble! all right, i'll be right back. (goes knocking on kramer's) \n\njerry: (shouting) man that thing is noisy! \n\nkramer: (shouting) yeah yeah, we're cracking along pretty good! we're almost up to 80 degrees! \n\njerry: yeah, listen, do me a favor. set your mental alarm for 630 and gimme a call. \n\nkramer: yeah, ok. wait. (concentrates and makes the \"pop!\" sound) done! (jerry stares, confused) \n\njerry: he's put his faith in you. he's put his faith in you. \n\njean-paul: i trust elaine, she is my friend. i trust elaine, she is my friend. \n\njerry: frankly, i'm a little concerned. \n\nelaine: ohhh, i'm exhausted. i've been on this street a thousand times! it's never looked so strange! the faces...so cold! in the distance, a child is crying. fatherless...a bastard child, perhaps. my back aches...my heart aches...but my feet (stops to look at her feet) ...my feet are resilient! (a big smile grows in her face, as she thinks...) thank god i took off my heels, and put on my... himalayan walking shoes!!! (lifting her arms up in the air, in ecstasy, as she says...) yes! \n\n(two clocks at a table, both 4: 02 am. jean-paul's sleeping at the sofa) \n\n(4: 02 am. kramer snores. the heat pump short circuits and blows the fuses on the entire building) \n\n(jerry wakes up with the sunlight. looks at the electric clock, which stopped at 4: 02) \n\njerry: 402? (checks his wristwatch) aaa-aaahhh! eight forty seven jean-paul! wake up! wake uuuuup! \n\nwe gotta go! it's 8: 47! \n\njean-paul: 847!? (jumps out of the sofa) \n\njerry: come on, just put your clothes on! you'll get dressed in the car! \n\njean-paul: idiot! i trusted you! \n\njerry: kramer, what happened to the building?! the electricity went out! \n\nkramer: yeah, the heat pump blew all the fuses! \n\njerry: what happened to your mental alarm?! \n\nkramer: i guess i hit the snooze... (jerry runs by kramer and kramer falls down) \n\njerry: make way! i've got-i've got a runner here! get outta the way! make way! make way! make way, it's a contender! (an event guard stops them) \n\nguad: hey, hold it! \n\njean-paul: i'm late, man, i'm in the race! \n\nguard: go ahead. \n\njean-paul: thank you jerry, you're a wonderful driver. fantastic route, man! \n\njerry: all right, go, it's a race! come on! \n\ngeorge: you wanted to see me, mr.steinbrenner? \n\nsteinbrenner: yes, george, come in, come in. george, word up's you've been cracking under the pressure. can't cope, can't stand the heat. spit the bit. \n\ngeorge: oh no, mr.steinbrenner, i can explain... \n\nsteinbrenner: oh we all get a little cuckoo sometimes george, i used to be like you. rating personnel 'till they cried, calling managers on the field during a game, threatening to move the team to new jersey, just to upset people. then i found a way to relax. i've got two words to say to you, george hot tub. (george looks at him, puzzled) \n\njerry: i'm tellin'you, i never told anyone about that baby. i never even went near your building! \n\nelaine: then how did she find out, jerry?! \n\njerry: maybe you should check with the rabbi. \n\nkramer: (to elaine) you want some hot tea? \n\nelaine: oh no, thank you. \n\nkramer: oh. there's some runners. here they come! \n\nelaine: there's jean-paul! he's up front! he's leading! (jumping) go jean-paul!(starts screaming) \n\nkramer: oh yeah! yeah! come on! (starts howling) \n\njerry: come on, let's go jean-paul! \n\nelaine: go jean-paaaaaul! \n\nsteinbrenner: how're you enjoying it, george? melts that tension away, doesn't it? you gotta get that jet on the good spot. oh. oh. uh. uh. yes, that feels good. yes, that's real good. oh yeah, that's where i keep all my tension. right down to that chicken bone. sometimes i get my wife to just stuck her thumb right in there like a screwdriver. ya know, the phillips head, not the flat one. oh god, those flat ones frustrate me. you got it in, but it slips out. you put it in again, slips out again. you a single man, george? \n\ngeorge: (bored to death) well, i-i just recently uh... \n\nsteinbrenner: i'll tell you, if you wanna get something wild goin'on in your life, you get a girl and bring her to one o'these things. just like 4 shots a wild turkey. (laughs) she'll think you're hopalong cassidy. (george starts sliding, until he gets all his head -and glasses- under water, as steinbrenner keeps talking) a show, about that mickey mantle, wasn't it? you know we used to talk. i don't think he liked me very much, you know. \n\ngeorge: all right. so, what theatre you wanna go to tonight? we got 61st and 3rd or 84th and broadway. \n\njerry: which one you wanna go to shmoopy? \n\nsheila: you called me shmoppy. you're a shmoopy. \n\njerry: you're a shmoopy! \n\nsheila: you're a shmoopy! \n\njerry: you're a shmoopy! \n\ngeorge: all right, shmoopies...what's it gonna be? pick a theater. \n\njerry: uh,..we'll go to 3rd avenue. so, can you come with us for lunch to the soup place? \n\nsheila: no. you have a good lunch. but i'll meet you back here for the movie. \n\ngeorge: hey. \n\nelaine: hey. \n\nsheila: hi elaine. \n\nelaine: hi sheila. \n\njerry: all right, then. i'll see you later. \n\nsheila: bye shmoopy. \n\njerry: bye shmoopy. \n\nelaine: okay. we ready to go? \n\ngeorge: yes. please. please, let's go. \n\nelaine: boy, i'm in the mood for a cheeseburger. \n\njerry: no. we gotta go to the soup place. \n\nelaine: what soup place? \n\ngeorge: oh, there's a soup stand, kramer's been going there. \n\njerry: he's always raving. i finally got a chance to go there the other day, and i tell you this, you will be stunned. \n\nelaine: stunned by soup? \n\njerry: you can't eat this soup standing up, your knees buckle. \n\nelaine: huh. all right. come on. \n\njerry: there's only one caveat -- the guy who runs the place is a little temperamental, especially about the ordering procedure. he's secretly referred to as the soup nazi. \n\nelaine: why? what happens if you don't order right? \n\njerry: he yells and you don't get your soup. \n\nelaine: what? \n\njerry: just follow the ordering procedure and you will be fine. \n\ngeorge: all right. all right. let's - let's go over that again. \n\njerry: all right. as you walk in the place move immediately to your right. \n\nelaine: what? \n\njerry: the main thing is to keep the line moving. \n\ngeorge: all right. so, you hold out your money, speak your soup in a loud, clear voice, step to the left and receive. \n\njerry: right. it's very important not to embellish on your order. no extraneous comments. no questions. no compliments. \n\nelaine: oh, boy, i'm really scared! \n\njerry: elaine. \n\nelaine: all right. jerry, that's enough now about the soup nazi. whoa! wow! look at this. you know what this is? this is an antique armoire. wow! it's french. armoire. \n\njerry: ar-moire. \n\nelaine: how much is this? \n\nfurniture guy: i was asking 250, but you got a nice face. 2 even. \n\nelaine: huh? ha. 200. you know, i've always wanted one of these things. \n\njerry: he gave you the nice face discount. \n\nelaine: yeah. all right. you guys go ahead. \n\njerry: what about the soup? \n\nelaine: i'm getting an armoire, jerry. \n\njerry: [in french accent] pardon. \n\ngeorge: this line is huge. \n\njerry: it's like this all the time. \n\ngeorge: isn't that that bania guy? \n\njerry: oh, no. it is. just be still. \n\ngeorge: whoop! too late. i think he picked up the scent. \n\nbania: hey, jerry! i didn't know you liked soup. \n\njerry: hard to believe. \n\nbania: this guy makes the best soup in the city, jerry. the best. you know what they call him? soup nazi. \n\njerry: shhhhh! all right, bania, i - i'm not letting you cut in line. \n\nbania: why not? \n\njerry: because if he catches us, we'll never be able to get soup again. \n\nbania: okay. okay. \n\ngeorge: medium turkey chili. \n\njerry: medium crab bisque. \n\ngeorge: i didn't get any bread. \n\njerry: just forget it. let it go. \n\ngeorge: um, excuse me, i - i think you forgot my bread. \n\nsoup nazi: bread -- $2 extra. \n\ngeorge: $2? but everyone in front of me got free bread. \n\nsoup nazi: you want bread? \n\ngeorge: yes, please. \n\nsoup nazi: $3! \n\ngeorge: what? \n\nsoup nazi: no soup for you! [snaps fingers] \n\nelaine: what do you mean i can't bring in here? i live here. \n\nsuper: its sunday, elaine. there's no moving on sunday. that's the rule. \n\nelaine: but i didn't know, tom. i g -- can't you just make an exception? please. i've got a nice face. \n\nsuper: tomorrow, okay? you can move it in tommorrow. i'll even give you a hand, all right? \n\nelaine: ohh! well, you're just gonna have to hold this for me. \n\nfurniture guy: i'm a guy on the sidewalk. i don't have layaway. \n\nelaine: oh, no...please don't go. please - please don't walk away. \n\njerry: oh, man. ohh! this is fantastic. how does he do it? \n\ngeorge: you know, i don't see how you can sit there eating that and not even offer me any? \n\njerry: i gave you a taste. what do you want? \n\ngeorge: why can't we share? \n\njerry: i told you not to say anything. you can't go in there, brazenly flaunt the rules and then think i'm gonna share with you! \n\ngeorge: do you hear yourself? \n\njerry: i'm sorry. this is what comes from living under a nazi regime. \n\ngeorge: well, i gotta go back there and try again. hi sheila. \n\nsheila: hi. hi shmoopy. \n\njerry: hi shmoopy. \n\nsheila: no, you're a shmoopy! \n\njerry: you're a shmoopy! \n\ngeorge: i'm going. \n\njerry: hey, listen, so we'll meet you and susan at the movie tonight? \n\ngeorge: you know what? i changed my mind. i, uh, i don't think so. \n\njerry: why? \n\ngeorge: i just don't feel like it anymore. \n\njerry: just like that? \n\ngeorge: just like that. \n\nsheila: boy, he's a weird guy, isn't he? \n\nkramer: hey. \n\njerry: hey. \n\nkramer: [taking jerry's couch cushion] yeah. \n\njerry: hey. hey. hey. hey. hey. hey. hey. wha -- what are you doing? \n\nkramer: yeah. elaine, she has to leave her armoire on the street all night...i'm gonna guard it for her. i need something to sit on. \n\njerry: well, sit on one of your couch cushions. \n\nkramer: yeah, but this is so nice and thick. ahoy there! \n\nelaine: oh, kramer! thank god. i really appreciate you doing this. \n\nkramer: yeah. well, you ask for it, you got it. \n\nelaine: do you need anything? \n\nkramer: well, a bowl of muligatawny would hit the spot. \n\nelaine: mulligatawny? \n\nkramer: yeah. it's an indian soup. it's simmered to perfection by one of the great soup artisans in the modern era. \n\nelaine: oh! who? the soup nazi? \n\nkramer: he's not a nazi. he just happens to be a little eccentric. most geniuses are. \n\nelaine: all right. i'll be back. \n\nkramer: wait a second. you don't even know how to order. \n\nelaine: oh, no. no. no. no. i got it. \n\nkramer: no. no, elaine! \n\nelaine: hey, i got it. hey. didn't you already get soup? \n\ngeorge: no. i didn't get it. \n\nelaine: why? what happened? \n\ngeorge: i made a mistake. \n\nelaine: [laughing] \n\ngeorge: all right. well, we'll see what happens to you. \n\nelaine: yeah. no. listen, george, i am quite certain i'm walking out of there with a bowl of soup. \n\ngeorge: yeah. hey, let ask you something. is it just me, or - or do you find it unbearable to be around jerry and that girl? \n\nelaine: oh, i know! it is awful! \n\ngeorge: why do they have to do that in front of people? \n\nelaine: i don't know. \n\ngeorge: what is that with the shmoopy? \n\nelaine: ohh! \n\ngeorge: the shmoopy, shmoopy, shmoopy, shmmopy, shmoopy! \n\nelaine: ohh! stop it! i know. \n\ngeorge: i had to listen to a five minute discussion on which one is actually called shmoopy. \n\nelaine: ugh! \n\ngeorge: and i cancelled plans to go to the movies with them tonight. \n\nelaine: you know, we should say something. \n\ngeorge: you know, we absolutely should. \n\nelaine: i mean, why does he do that? doesn't he know what a huge turnoff that is? \n\ngeorge: i don't know. he can be so weird sometimes. \n\nelaine: yeah. \n\ngeorge: i still haven't figured him out. \n\nelaine: no. me neither. \n\ngeorge: all right. shh! i gotta focus. i'm shifting into soup mode. \n\nelaine: oh, god! \n\ngeorge: good afternoon. one large crab bisque to go. bread. beautiful. \n\nsoup nazi: you're pushing your luck little man. \n\ngeorge: sorry. thank you. \n\nelaine: hi there. um, uh -- [drumming on countertop] oh! oh! oh! one mulligatawny and, um.... what is that right there? is that lima bean? \n\nsoup nazi: yes. \n\nelaine: never been a big fan. [coughing] um..you know what? has anyone ever told you you look exactly like al pacino? you know, \" scent of a woman.\" who-ah! who-ah! \n\nsoup nazi: very good. very good. \n\nelaine: well, i -- \n\nsoup nazi: you know something? \n\nelaine: hmmm? \n\nsoup nazi: no soup for you! \n\nelaine: what? \n\nsoup nazi: come back one year! next! \n\nray: look at this. \n\nbob: it's an antique. \n\nray: it's all hand made and i love the in-lay. \n\nbob: yes. yes. me, too. ay, it's gorgeous. completely. pick it up. no. no. pick it up from the bottom over there. \n\nkramer: wait. wait. wait. wait. what are you doing? \n\nbob: what does it look like we're doing? we're taking this. \n\nkramer: you can't take this. this belongs to a friend of mine. \n\nbob: look, you wanna get hurt? \n\nkramer: huh? \n\nbob: i don't think you wanna get hurt. because if you wanna get hurt i can hurt you. now, just back off. \n\nray: bob. \n\nbob: just pick it up. \n\nkramer: what is this, huh? \n\nbob: you have some kind of problem here? what is it you not understanding? we taking the armoire and that's all there is to it. okay? \n\nelaine: i mean, is he allowed to do this? it's discrimination! i'm gonna call the states' attorney office. i really am. \n\ngeorge: oh, this is fabulous. my god elaine, you have to taste this. \n\nelaine: all right. all right. give me a tsate. mmm! oh god, i gotta sit down. what happened? where's my armoire? \n\nkramer: well, b -- it was stolen. \n\nelaine: wha--? \n\nkramer: these street toughs, they robbed me. \n\nelaine: street toughs took my armoire? \n\nkramer: yeah. it was very frightening. my life was in danger. you should've seen the way they talked to me. \n\nelaine: i can't believe this! \n\nkramer: well, where's the soup? \n\nelaine: wha -- the soup nazi threw me out. \n\nkramer: oh...yeah! \n\njerry: what are you gonna get? \n\nsheila: i'll decide at the last minute. \n\njerry: you better decide, sister. you're on deck. sheila! \n\njerry: uh-oh. \n\nsoup nazi: hey, what is this? you're kissing in my line? nobody kisses in my line! \n\nsheila: i can kiss anywhere i want to. \n\nsoup nazi: you just cost yourself a soup! \n\nsheila: how dare you? come on, jerry, we're leaving. jerry? \n\njerry: do i know you? \n\nelaine: so, essentially, you chose soup over a woman? \n\njerry: it was a bisque. \n\nelaine: yeah. you know what i just realized? suddenly, george has become much more normal than you. \n\njerry: really? \n\nelaine: yeah. come on. i mean, think about it. he's engaged to be married. your top priority is soup. \n\njerry: have you tastes the soup? \n\nelaine: yeah. all right. you made the right decision. \n\njerry: see, the way i figure it, it's much easier to patch things up with sheila than with the soup nazi. \n\njerry: hey. \n\nkramer: yeah. \n\nelaine: hey. \n\nkramer: yeah. \n\njerry: oh, thanks. \n\nelaine: there he is. \n\nkramer: elaine, i'm really sorry about the armoire. \n\nelaine: yeah. i know. me, too. \n\njerry: so, did these thieves want any money? \n\nkramer: no. \n\njerry: they just wanted the armoire? \n\nkramer: yeah. they were..quite taken with it. \n\njerry: yeah? \n\ngeorge: hup! hup! \n\njerry: hey, have you noticed george is acting a little strange lately? \n\nelaine: no. in what way? \n\njerry: i don't know. a lot of attitude, like he's better than me, or something. \n\nelaine: i don't think george has ever thought he's better than anybody. \n\ngeorge: hello. \n\njerry: hello. \n\nkramer: hey. \n\ngeorge: hello. \n\nelaine: hello. \n\ngeorge: were you just talking about me? what's going on? \n\njerry: absolutely not. \n\ngeorge: something's going on here. \n\nkramer: all right, [claps hands] i'm gonna go get some soup. \n\nelaine: one of these days that guy is gonna get his. \n\ngeorge: so, how was the movie? \n\njerry: aw, we didn't go. sheila and i are kind of on the outs. \n\ngeorge: oh, yeah? \n\njerry: yeah. wha - wha - what are you, happy? \n\ngeorge: happy? why should i be happy? \n\njerry: i don't know, but you look like you're happy. \n\ngeorge: why should i care? \n\njerry: you can't fool me. don't insult me, george because i know when you're happy. \n\ngeorge: all right. i am happy, and i'll tell ya why -- because the two of you were making me and every one of your friends sick! right, elaine? \n\njerry: is that so? \n\ngeorge: yeah. yeah. with all that kissing and the shmoopy, shmoopy, shmoopy, shmoopy, shmoopy out in public like that. it's disgusting! \n\njerry: disgusting? \n\ngeorge: people who do that should be arrested. \n\njerry: well, i guess i have all the more reason to get back with her. \n\ngeorge: ye - yeah. and we had a pact, you know. \n\njerry: what? \n\ngeorge: you shook my hand in that coffee shop. \n\njerry: you're still with the pact? \n\ngeorge: mmm-hmm. you reneged. \n\njerry: all i did was shake your hand. \n\ngeorge: ah-ha! \n\nkramer: and then they just ran off with the armoire, just like that. \n\nsoup nazi: ohh! this city. \n\nnewman: one large jambalaya, please. \n\nsoup nazi: so, continue. \n\nkramer: well, my friend is awful disappointed is all. you know, she's very emotional. \n\nnewman: thank you. [inhaling deeply] jambalaya! \n\nsoup nazi: all right, now listen to me. you have been a good friend. i have an armoire in my basement. if you want to pick it up, you're welcome to it. so, take it, it's yours. \n\nkramer: how can i possibly thank you? \n\nsoup nazi: you are the only one who understands me. \n\nkramer: you suffer for your soup. \n\nsoup nazi: yes. that is right. \n\nkramer: you demand perfection from yourself, from your soup. \n\nsoup nazi: how can i tolerate any less from my customer? \n\ncustomer: uh, gazpacho, por favor. \n\nsoup nazi: por favor? \n\ncustomer: um, i'm part spanish. \n\nsoup nazi: adios muchacho! \n\nkramer: git. \n\njerry: it was stupid of me. \n\nsheila: well, it was very insulting. \n\njerry: no. i know. i - i was really sort of half-kidding. \n\nsheila: well, behind every joke there's some truth. \n\njerry: what about that bavarian cream pie joke i told you? there's no truth to that. nobody with a terminal illness goes from the united states to europe for a piece of bavarian cream pie and then when they get there and they don't have it he says \" aw, i'll just have some coffee.\" there's no truth to that. \n\nsheila: well, i guess you're right. \n\njerry: so, am i forgiven, shmoopy? \n\nsheila: yes, shmoopy. \n\njerry: aw! \n\nsusan: hey, jerry! \n\njerry: oh, hi susan, george. you remember sheila. \n\ngeorge: oh, yes. hello. \n\nsheila: hello. won't you join us? \n\ngeorge: no, thanks. \n\nsusan: of course. \n\ngeorge: yes. well -- so, uh, sit on the same side at a booth, huh? \n\njerry: yeah. that's right. you got a problem? \n\ngeorge: i, uh, just think it's a little unusual. two people to sit on one side...and leave the other side empty. \n\njerry: well, we're changing the rules. \n\ngeorge: ahh. good for you. \n\nsusan: aw, what are you getting george? \n\ngeorge: i don't know, honey. what do you want to get? [in babying voice] i want you to get anything you want...'cause i love you so much. i want you to be happy. okay, sweetie? \n\nsusan: oh, george, you're so sweet. \n\ngeorge: well, i could be a little sweetie tweetie weetie weetie. \n\nsusan: aww! \n\njerry: what about you, shmoopy? how 'bout a little tuna? you want a little tuna fishy? \n\nsheila: yeah. \n\njerry: yum yum little tuna fishy? \n\ngeorge: come here. \n\nkramer: and..voila! \n\nelaine: [gasps] \n\nkramer: yeah. \n\nelaine: oh! oh, i love it! i absolutely love it! \n\nkramer: yeah. did the k man do it or did the k man do it? \n\nelaine: the k man did it! \n\nkramer: yeah! \n\nelaine: [laughing] how much did you pay for this thing? \n\nkramer: how 'bout zero? \n\nelaine: what? \n\nkramer: yeah. \n\nelaine: what? who's was it? where'd you get it? \n\nkramer: i'll tell ya where i got it. i got it from the guy you so callously refer to as the soup nazi. \n\nelaine: get out! \n\nelaine: the soup nazi gave it to you? \n\nkramer: yeah. \n\nelaine: why? \n\nkramer: well, i told him the whole story and he just let me have it. wha -- yeah. he's a wonderful man. \n\nelaine: [gasps] \n\nkramer: yeah. well, a little bit misunderstood but, uh.... \n\nelaine: well, i'm just gonna go down there and personally thank him. i mean, i had this guy all wrong. this is wonderful! \n\nkramer: yeah. well, he's a dear. \n\ngeorge: how much tip do you leave on $8.15? \n\nsusan: you know sweetie, i just want you to know that i was so proud of you today expressing your feelings so freely in front of jerry and all. just knowing that you're not afraid of those things is such a great step forward in our relationship. \n\ngeorge: huh? \n\nsusan: [in babying voice] because you love your little kiki don't you? \n\ncustomer: how is he today? \n\nbania: i think he's in a good mood. \n\nelaine: hi. you know, kramer gave me the armoire and it is so beautiful. i'm mean, i just can't tell you how much i appreciate it. \n\nsoup nazi: you? if i knew it was for you, i never would have given it to him in the first place! i would have taken a hatchet and smashed it to pieces! now, who wants soup? next! speak up! \n\njerry: i'm heading over to elaine's. \n\nkramer: oh. jerry, those are the guys that mugged me for the armoire. \n\njerry: those two? \n\nkramer: yeah. \n\njerry: are you sure? \n\nkramer: yeah. that's them. \n\njerry: well, let's confront 'em. \n\nkramer: no. no. no. no. let's get a cop. \n\njerry: there's no cops around. they're gonna leave. come on. \n\nkramer: no! \n\njerry: let's go. \n\nbob: oh, wow look, that one is gorgeous. i would just kill for that one. \n\nray: oh, not in blue. blue does not go with all. \n\nbob: oh, please. do you know what you're talking about? because i don't think you know what you're talking about. take a look at that. \n\nkramer: excuse me. \n\nray: are you talking to me? \n\nkramer: uh, well, uh, we -- \n\nray: i said, are you talking to me? \n\nbob: well, maybe, he was talking to me. was you talking to him? because you was obviously talking to one of us. so what is it? who?! who was you talking to?! \n\nkramer: well, wha -- i, uh -- uh, we were kind of, uh, talking to each other, weren't we? \n\nelaine: i mean, you know, i've never been so insulted in my entire life. there's something really wrong with this man. he is a soup nazi. what? what is that? \n\njerry: i don't know. \" 5 cups chopped porcine mushrooms, half a cup of olive oil, 3 pounds of celery, chopped parsley...\" \n\nelaine: let me see this. [gasps] you know what this is? this is a recipe for soup, and look at this. there are like thirty different recipes. these are his recipes! \n\njery: so? \n\nelaine: so? so, his secret's out. don't you see? i could give these to every restaurant in town. i could have 'em published! i could - i could drop fliers from a plane above the city. \n\njerry: wait a second, elaine. where do you think you're going? \n\nelaine: what do you care? \n\njerry: elaine, i don't want you causing any trouble down at that soup stand. i happen to love that soup. \n\nelaine: get out of my way, jerry. \n\njerry: elaine, let the man make his soup! \n\nelaine: don't make me hurt you, jerry. \n\nsusan: look, they have it in blue...for my baby bluey. are you my baby bluey? \n\ngeorge: oh, yes. i - i'm your baby bluey. \n\njerry: well. well. \n\nsusan: hi, jerry. \n\njerry: hey, susan, george. \n\nsusan: you know, i really like sheila a lot. \n\njerry: oh, really? \n\nsusan: mmm-hmm. \n\njerry: because we're kind of not seeing each other anymore. \n\nsusan: oh, no! that's too bad. \n\njerry: yeah. well, she was very affectionate - which i love. you know i love that - but mentally, we couldn't quite make the connection. \n\ngeorge: really? \n\njerry: yeah. too bad, 'cause you gotta have the affection - which you obviously have. i think it's great that you're so open with your affections in public. see, we had that. \n\nsusan: mmm-hmm. \n\ngeorge: you did? \n\njerry: oh, yeah. but the mental thing. but anyway. i'll see ya. \n\ngeorge: yeah. see ya. \n\nsoup nazi: go on! leave! get out! \n\nwoman: but i didn't do anything. \n\nsoup nazi: next! \n\nelaine: hello. \n\nsoup nazi: you. you think you can get soup? please. you're wasting everyone's time. \n\nelaine: i don't want soup. i can make my own soup. \" 5 cups chopped porcine mushrooms, half a cup of olive oil, 3 pounds celery.\" \n\nsoup nazi: that is my recipe for wild mushroom. \n\nelaine: yeah, that's right. i got 'em all. cold cucumber, corn and crab chowder, mulligatawny. \n\nsoup nazi: mulliga...tawny? \n\nelaine: you're through soup nazi. pack it up. no more soup for you. next! \n\nnewman: [panting] jerry! jerry! jerry! \n\njerry: what is it? \n\nnewman: something's happened with the soup nazi! \n\njerry: wha - wha - what's the matter? \n\nnewman: elaine's down there causing all kinds of commotion. somehow she got a hold of his recipes and she says she's gonna drive him out of business! the soup nazi said that now that his recipes are out, he's not gonna make anymore soup! he's moving out of the country, moving to argentina! no more soup, jerry! no more for of us! \n\njerry: well, where are you going? \n\nnewman: he's giving away what's left! i gotta go home and get a big pot! \n\nsusan: hey, i gotta get some cash, i'm gonna run down to the atm. \n\ngeorge: yeah, i better grab some too. \n\nsusan: i'll get it for you; just give me your card. \n\ngeorge: you sure? \n\nsusan: yeah, just tell me your code. \n\ngeorge: my code? \n\njerry: so why didn't you tell her the code? \n\ngeorge: no. no way. \n\njerry: george, you're gonna marry this woman. most likely. \n\ngeorge: it says very clearly, 'for your protection, do not give your secret code to anyone.' \n\njerry: so you're taking relationship advice from chemical bank now? \n\ngeorge: why does everything have to be 'us'? is there no 'me' left? why can't there be some things just for me? is that so selfish? \n\njerry: actually, that's the definition of selfish. \n\ngeorge: have you ever given your code to anyone? \n\njerry: no one's ever asked. you want it? it's 'jor-el.' \n\ngeorge: superman's father on krypton. \n\njerry: of course. c'mon georgie, you wanna tell me. it's eating you up inside. sing it, sister. \n\ngeorge: no. i am not giving my code to anyone for any reason. \n\njerry: what if my life depended on it? \n\ngeorge: if you're in some situation where some fast cash will save your life, i'll give you the code. \n\ngeorge: what's the matter with your leg? \n\njerry: my foot fell asleep. \n\ngeorge: how'd your foot fall asleep? \n\njerry: i crossed my legs, i forgot to alternate. \n\nfred: hey jerry. \n\njerry: hey fred. \n\ngeorge: hey fred. \n\njerry: my foot fell asleep. \n\nfred: you're lucky, at least you got something to do. \n\njerry: fred, do you know elaine? \n\nfred: no, it's nice to meet you. well, i'm outta here, see you guys. \n\ngeorge: alright, bye. \n\njerry: seeya. \n\nelaine: did you hear that? he said, 'nice to meet you.' \n\njerry: so? \n\nelaine: so? we've met before. at katie ash's party, we talked for like ten minutes. \n\njerry: and he didn't remember you? \n\njerry: where are you going, you just got here? \n\nelaine: i gotta go talk to him. \n\nelaine: excuse me, excuse me, fred? \n\nfred: yeah? \n\nelaine: you just said, 'nice to meet you', but actually we've met before. \n\nfred: we have? \n\nelaine: yeah, at katie ash's party? \n\nfred: what was your name again? \n\nelaine: elaine. you don't remember our conversation? i talked about how my uncle worked in the book depository building with lee harvey oswald? \n\nfred: not ringing a bell. \n\nelaine: when my uncle said to him, 'the president's been shot' oswald winked at him and said, 'i'm gonna go catch a movie'? \n\nfred: mmm, no. \n\nelaine: that was right when we were in front of the bathroom door. \n\nfred: the bathroom door. i remember someone had played tic-tac-toe on it, and the x's won; they went diagonally from the top left to the bottom right. \n\njerry: hey that sounds great, i'd love to do some tv commercials, that should really be fun. \n\njerry: uh huh, okay, alright, bye. huh, how do you like that? i'm gonna do some tv spots for leapin' larry's appliance store. that was leapin' larry himself, i'm gonna meet with him tomorrow. \n\nkramer: leapin' larry! yeah, that's where i bought this. \n\njerry: what is that? \n\nkramer: well, it's an emergency band scanner, it picks up everything fires, harbor patrol, even the police. i'm watching the watchers, jerry. uh oh, we got a big fire on 115th. i tell ya if could do it over again, i'd give it all up to be a fireman. \n\njerry: yeah, those civil servants who risk their lives really got it made. \n\nkramer: when i was a kid, all i ever dreamed of was steering the back of that big hook and ladder. \n\njerry: you're lucky they let you drive a car. \n\nkramer: no no no, they're talking the west side highway, at this time of day that's insane. they're heading straight into gridlock. oh, those fools. \n\nelaine: what was that? \n\njerry: (waving his arm in dismissal) eh. \n\nelaine: alright. so, get a load of this. this guy, fred yerkes, remembers every little thing about that night except me. \n\njerry: really? i'm surprised, he doesn't meet that many women. \n\nelaine: what are you saying? \n\njerry: well, what's to be said? he didn't remember you. \n\nelaine: yeah, but why? i mean, ya know. \n\njerry: i know. \n\nelaine: ya know? \n\njerry: yeah, i know. \n\nelaine: huh, lookit, you got the new catalog. \n\njerry: yeah, you wrote a good piece on the himalayan walking shoe. \n\nelaine: too good. peterman was so pleased, now he wants to take me out to dinner tomorrow. maybe you wanna come with me. \n\njerry: why would i wanna do that? \n\nelaine: oh please, jerry, please please please, i can't sit with him, he tells these stories, it's gonna be awful. \n\njerry: yeah, sounds like fun. \n\nsusan: i want you to tell me, george. \n\ngeorge: why? why is my code so important? \n\nsusan: because, it's part of our relationship, it's an indication of trust. we're not supposed to keep secrets from one another. \n\ngeorge: well i'm sure you have secrets from me. i don't know anything about your cycles. \n\nsusan: my cycles? \n\ngeorge: yeah, i never know what's going on there. \n\nsusan: well from now on i'll keep you apprised of my cycles. \n\ngeorge: please. \n\nsusan: anything else? \n\ngeorge: we're out of bosco! \n\njerry: howbout this, come one down to leapin' parry's if you can beat our prices, we'll give you the store. \n\nleapin' larry: ya know i've always liked your comedy, you don't take cheap shots. \n\njerry: no i don't. \n\nleapin' larry: sorry for keeping you here so long. again, i apologize for the mess. this renovation is killing me. \n\njerry: (to himself) my foot's asleep again! \n\nleapin' larry: when i lost my leg in the boating accident, i got so depressed about this damn prosthetic i thought i was gonna have to give up the business. but now i'm rejuvenated. let me show you around the store. \n\njerry: you know what? i'll be with you in a minute. \n\nemployee: that is a great impression! \n\njerry: larry, wait, you don't understand! \n\nkramer: i just came from leapin' larry's. making fun of crippled people, is that what you've sunk to? \n\njerry: i didn't do it on purpose, my foot fell asleep. \n\nkramer: oh, oh your foot fell asleep. \n\njerry: ya know, the guy has one leg and he still calls himself leapin' larry, you'd think he had a sense of humor about it. \n\nkramer: well, you just joked yourself right out of that commercial, didn't you, munjamba? \n\njerry: yup. \n\nvoice: hup. \n\nkramer: boy, look at that. se that's that fire i was listening to yesterday. \n\njerry: wow, the whole building burned down. \n\nkramer: they just don't know what street to take. you remember that time i got us to yankee stadium in rush hour in fifteen minutes? \n\njerry: of course. \n\nkramer: it's all up here, jerry. all up here. it's innate. \n\njerry: the amazing thing is you never have any place to go. \n\ngeorge: where we gonna eat? \n\njerry: we're gonna meet elaine and peterman at the chinese place. \n\ngeorge: peterman? nobody mentioned anything about peterman. \n\njerry: of course not, if i did would you have gone? \n\ngeorge: no way. \n\njerry: there you go. \n\ngeorge: i don't even know peterman. how the hell am i gonna relax? i'm gonna have to be on all night. i don't like being on, jerry, i would much rather be off. \n\njerry: trust me, you're off. \n\nelaine: oh, hi fred. \n\nfred: um, hello? \n\nelaine: it's elaine. \n\nfred: oh yeah, yeah, right. \n\nelaine: how ya doin'? \n\nfred: i'm depressed. i got this new shirt, the button fell off. once the button falls off, that's it. i'll never fix it. \n\nelaine: yeah, that's too bad. \n\nfred: yeah, i'm gonna get some vitamins, i feel depleted. \n\nelaine: hmm. i never take them. \n\nfred: cause they make you nauseous, right? \n\nelaine: yeah! yeah, that's right, you remembered! \n\nfred: do you wanna have dinner tonight? \n\nelaine: hmm. tonight. \n\nfred: what, you have other plans? \n\nelaine: no, no no no, none that i can, um, remember. \n\njerry: ...alright, you're locked up in a prison in turkey, i have your wallet. the only way i can bribe the guards to get you out is for you to give me your atm code. \n\ngeorge: call the embassy. \n\njerry: they're closed. \n\ngeorge: why? \n\njerry: bomb threat. \n\ngeorge: we're in turkey? \n\njerry: midnight express, my friend. \n\ngeorge: my card won't work there; they're not on the plus system. \n\npeterman: you must be jerry seinfeld. \n\njerry: yes, hi, mr. peterman. this is, uh, george costanza. \n\npeterman: j. peterman. \n\ngeorge: (grabbing lapels) j. crew. \n\njerry: well, is elaine here? \n\npeterman: oh, elaine just called, she won't be joining us. not to worry, i'll tell the maitre'd it'll just be the three bulls. \n\ngeorge: what's going on? he still wants to have dinner with us? \n\njerry: without elaine? what for? \n\ngeorge: what, is he crazy? \n\njerry: we gotta get out of here. come on; weave your web, liar man. \n\ngeorge: i've got nothing, i-i-i-i'm blank. \n\njerry: george, what's the matter with you? \n\ngeorge: i'm choking! \n\npeterman: ah, fong has been most accommodating. shall we? \n\njerry: actually, you know i just remembered i promised this comedy club that i'd do a set tonight, so, terribly sorry. \n\npeterman: i understand, no hard feelings. george and i will miss your company. fong? it will just be two this evening. george, we dine. \n\nelaine: (to herself) i can't believe this, is this guy standing me up? \n\npeterman: ...and there, tucked into the river's bend was the object of my search. the gwon-jaya river market, fabrics and spices traded under a starlit sky. it was there that i discovered the pamplona beret. sizes seven-and-a-half through eight-and-three-quarters. price? thirty-five dollars. \n\ngeorge: howbout sports? do you follow sports? \n\ntv announcer: it's fourth and inches and the giants are going for it! you gotta love sports! \n\ngeorge: you know, this is very nice, but i really could take a cab. really. \n\npeterman: ha ha, nonsense, george. besides it gives me a chance to tell you about my latest trip to burma where i discovered a very unusual corduroy. \n\npeterman: peterman here. what? oh no. alright, i'll be right there. (to george) it's my mother; she's at death's door. i just pray to god we can make it there in time. \n\njerry: i can't believe you blew us off; we were doing you the favor. \n\nelaine: well, fred asked me out. \n\njerry: fred? \n\nelaine: yeah, and then he stood me up. i don't get this guy. \n\njerry: you see what's going on here? you're attracted to him because he can't remember anything about you. \n\nelaine: i am? but that's so sick. \n\njerry: that's god's plan. he doesn't really want anyone to get together. \n\nelaine: anyway, so how was the dinner? \n\njerry: well, when i heard you weren't coming i made up and excuse and got the hell out of there. \n\nelaine: what about georgie? \n\njerry: nah, he didn't make it. \n\npeterman: doctor, how is she? \n\ndoctor: she's too weak to talk but she'll be happy to hear your voice. \n\npeterman: mama, it's me. jacopo. i'm here for you, mama. \n\ngeorge: i'm, uh, george costanza. i was having dinner with your son. \n\npeterman: shake off the dew, my friend. \n\ngeorge: yeah. what time is it? \n\npeterman: it's morning. thanks for seeing me through the night. i'll make us a pot of coffee, george. watch her, won't you? \n\ngeorge: who? \n\npeterman: momma. just talk to her, george. the doctor seems to think it helps. \n\ngeorge: hi. i-i really should be getting back to my fianc, you know, we, uh, we had this big fight yesterday and, uh, well she, she wants to-to know my secret code. i-i don't know, i can't tell her. the funny thing is, you know, i would really love to tell someone 'cause it's killing me. you uh, you wanna know what it is? it's bosco. you know, the chocolate syrup? i love that stuff, i pour it in milk, it's my favorite drink. hoo-hoo, boy, that is a relief! \n\nmrs. peterman: bosco. bosco. \n\ngeorge: oh, shhh. \n\nmrs. peterman: (sitting up) bosco! \n\nmrs. peterman: bosco! bosco! bosco! \n\ngeorge: shut up! shut up! \n\npeterman: momma! what are you trying to say? \n\nmrs. peterman: bosco. \n\npeterman: she's gone. bosco? \n\ngeorge: you know this whole thing never would have happened if you hadn't bailed out on me at the restaurant. \n\njerry: i did not bail out on you. \n\ngeorge: well why couldn't you include me in your excuse? \n\njerry: why didn't you come up with your own? \n\ngeorge: i froze. i think i'm losing it. \n\njerry: ah, c'mon. maybe you're just in a slump? \n\ngeorge: no, no. i reached down and there was *nothing* there. \n\ngeorge: now peterman wants me to go to the funeral. \n\njerry: oh, come on, just tell me your code already. what is it? \n\ngeorge: i am not giving you my code. \n\nkramer: i'll bet i can guess it. \n\ngeorge: pssh. yeah. right. \n\nkramer: oh, alright. yeah. uh, let's see. um, well, we can throw out birthdays immediately. that's too obvious. and no numbers for you, you're a word man. alright, let's go deeper. uh, what kind of man are you? well, you're weak, spineless, a man of temptations, but what tempts you? \n\ngeorge: huh? \n\nkramer: you're a portly fellow, a bit long in the waistband. so what's your pleasure? is it the salty snacks you crave? no no no no no, yours is a sweet tooth. \n\ngeorge: get out of here. \n\nkramer: oh you may stray, but you'll always return to your dark master, the cocoa bean. \n\ngeorge: i'm leaving. \n\nkramer: (building up steam as george bolts for the door) no, and only the purest syrup nectar can satisfy you! \n\ngeorge: i gotta go. \n\nkramer: if you could you'd guzzle it by the gallon! ovaltine! hershey's! \n\ngeorge: shut up! \n\nkramer: nestl's quik! \n\ngeorge: shut up! \n\ngeorge: what was that? \n\nelaine: what? \n\ngeorge: you just checked your watch. are you thinking of bailing on him? \n\nelaine: i got a date. \n\nelaine: oh, mr. peterman. \n\npeterman: oh, elaine. george, when momma said 'bosco' she must have been trying to communicate something, a legacy, a dying wish perhaps. \n\ngeorge: mothers say things. my mother goes babbling on and on like a crazy person. \n\nelaine: mr. peterman, you have my deepest sympathies. unfortunately, i've gotta get going. \n\npeterman: you do? \n\ngeorge: uh, yes, actually we-we both do. \n\nelaine: i have a personal commitment. \n\ngeorge: well, personal, i mean, we both uh... \n\npeterman: what is it? \n\nelaine: i'm speaking at a women's' rights conference. \n\ngeorge: yes, and i'm speaking at a men's' conference. \n\npeterman: i don't believe that for a minute. well, elaine, it was good of you to stop by. \n\nelaine: my pleasure. \n\npeterman: fortunately, i still have george here to help me through this. \n\npeterman: you know george, growing up as a boy in costa rica, i heard a rumor that momma had taken a lover. perhaps bosco was this man's name. \n\nkramer: hey, you wanna come down the fire station with me? \n\njerry: fire station? \n\nkramer: yeah, i made a map of my shortcuts. i'm gonna rock their world! \n\njerry: nah, i gotta go down to leapin' larry's. \n\nkramer: oh, so he took you back. \n\njerry: yeah, we straightened it out, all is forgiven. \n\nkramer: well, you know the important thing is that you learned something. \n\njerry: no i didn't. \n\ncaptain: well, mr. kramer, your list of short cuts is most impressive. \n\nkramer: yeah, and this is just the upper west side. wait until i get to the village, then you're gonna see a magic show. \n\ncaptain: mr. kramer, just about every week some brash young hothead like yourself saunters in here talking about faster routes and snazzier colors for the trucks, well, fact is we feel things are fine the way they are. \n\njerry: anyway, thanks for having me back, and sorry about the misunderstanding. \n\nleapin' larry: water under the bridge. come on, i never did get a chance to show you around the store. \n\njerry: oh sure. \n\njerry: uh, again? (limping towards the door) i'll be right there. \n\ndispatcher: attention company 390, structure fire at leapin' larry's appliance warehouse. \n\nkramer: leapin' larry's? hey, that's uptown. you gotta take amsterdam. \n\ncaptain: stay out of this, kramer. \n\nkramer: are you ok, cowboy? where do you need to go? \n\nkramer: well, you'd better take it easy. \n\nfred: sorry about the other night but my mother called, she couldn't find her pills. i had to go into brooklyn to help her find her pills, and they were right there in the medicine cabinet. could you believe that? \n\nelaine: huh. \n\nfred: the worst part is getting from the subway station to the house. there's no transportation... \n\nelaine: (to herself) what am i doing? i'm on a date with this guy because he didn't remember me? he's demented, listen to him... \n\nfred: ...i could have taken a cab but if my mother saw me pull up in a cab, she'd start yelling at me, \"freddy! what are taking a cab for? it's so expensive!\" she's out of her mind. eventually, you'll meet her. \n\npeterman: bosco. bosco. bosco. \n\n(a woman rushes in and shouts: there's a big fire down the street, the whole block is going up in flames! peterman gets up and runs towards the door, he stops and looks back. george is still sitting on the couch, looking up and shaking his head. \n\npeterman: george! \n\ncaptain: gonna make a left onto broadway. \n\ncaptain: who is this? \n\nkramer: it's kramer! \n\ncaptain: kramer?! what the hell are you doing back there? \n\nkramer: desoto's down, but cosmo's got the caboose. \n\nwoman: how did this start? \n\njerry: beats me. \n\nleapin' larry: where the hell's the fire department? i'm gonna lose the whole store! \n\ncaptain: kramer, get the hell off of there. you're not trained to operate this equipment! \n\nman on the street: hey, kramer! \n\nleapin' larry: try the scanner, see if you can pick up anything. \n\ncaptain: what are you doing, kramer?! you're all over the road! \n\nkramer: don't worry, cap, i can handle it! \n\njerry: kramer? \n\ncaptain: you're losing control! hard right! hard right! \n\njerry: ah, that's a shame. \n\npeterman: the fire will eat up this entire block! \n\npeterman: look, there's a man in there. get out of there, you're in danger! \n\nman: but my sleeve, it's stuck in the machine, it ate my card! \n\npeterman: george, give me your atm card! \n\ngeorge: i don't have my atm card. \n\npeterman: george, you're obviously lying, anyone can see that! \n\npeterman: it's jammed! i'll slide it under the door, \n\nman: now give me your code! \n\ngeorge: what?! why? \n\nman: the machine won't open without the code! \n\npeterman: george, give him your code! \n\ngeorge: but i-i-i- \n\npeterman: george, there's no time! tell him your code! shout out your code, man!! \n\nman: the code!! the code!! \n\nsusan: hi. here's your cash, george. \n\ngeorge: hm. thanks. \n\nsusan: and here's your card back. anyone for bosco? \n\njerry: oh my god. look at this. \n\ngeorge: hm? \n\njerry: it's the new j. peterman catalog. look. \n\ngeorge: the rogue's wallet. that's where he kept his card, his dirty little secret. short, devious, balding. his name was costanza. he killed my mother. \n\ngeorge: let me ask you a question. who would win in a fight between you and me? \n\njerry: well, what do you mean? \n\ngeorge: well if you and i ever got into, like a really serious fight you know, and the punches started flying -- who do you think would win? \n\njerry: well i think that's pretty obvious. \n\ngeorge: yeah. me too. \n\njerry: hey elaine. \n\nelaine: hey. \n\njerry: who, who, who do you think would win in a fight between me and ah, gorgeous george here. (pointing up and down at george) \n\nelaine: you mean in a real fight fight? \n\njerry: mona a baldo . \n\nelaine: george. \n\ngeorge: ah-ha! (he turns and walks over to the refrigerator) \n\njerry: why? \n\nelaine: george fights dirty. (she sips her coffee) \n\njerry: really? what would you do? \n\ngeorge: pull hair, poke eyes, groin stuff. whatever i gotta do. (he opens a blue bottled beverage) \n\njerry: hmm. \n\nelaine: so. listen ... you're not doing anything tomorrow, are you? because i have an extra ticket to the historical clothing exhibit at the met. \n\njerry: im sorry. \n\nelaine: george? \n\ngeorge: would i want to see what mary todd wore to lincoln's funeral? \n\nelaine: there's nobody i can go with. \n\nelaine: you know what. i don't have one female friend left. \n\nkramer: oh, no, of course you don't. you're a man's woman. you hate other women, and they hate you. \n\nelaine: thank you. \n\nkramer: so jerry, (smacks hands and rubs palms together) what time we going to the movies? \n\njerry: ah, how about 830? \n\nkramer: saddle up and ride. (opens the fridge and pulls out some food -- takes a big bite) \n\njerry: you want to get something to eat first? \n\nkramer: (mumbling with full mouth) no, im good. \n\ngeorge: i wonder if, ah, susan ... (picks up the phone from the coffee table, then decides not to call) no. i better just go. (claps hands) heh. all right! see ya. (grabs his rain coat from the hook by the door and rushes out) \n\nkramer: there's nothing more pathetic, than a grown man, whos afraid of a woman . (voice get high-pitched for the last line) \n\njerry: hey, why don't cha ask susan? \n\nelaine: george's susan? \n\njerry: yeah. \n\nelaine: yeah. why not susan. i should be friends with susan. (smacks her forehead with hand) of course! susan! oh! ok, ill see you guys. huh. (rushes out the door.) \n\nkramer: that's gunna be trouble. \n\njerry: why? \n\nkramer: jerry, don't you see? this world here, this is george's sanctuary. if susan comes into contact with this world, his world's collide. you know what happens then? \n\nkramer: ka shha shha shha pkooo (exploding sound) \n\nkramer: did i tell you im getting a new telephone number? \n\njerry: how come? \n\nkramer: whew, chicks man. too many chicks know my number. \n\nramon: (recognizes jerry) hey jerry. how are you mr. backstroke? \n\njerry: kramer this is ramon, from the new health club i joined. \n\nkramer: oh, yeah. \n\nramon: so you know what happened don't chu? \n\njerry: no what? \n\nramon: i got fired. \n\njerry: really? \n\nramon: yeah, said i put too much chlorine in the pool. \n\njerry: ahh. \n\nramon: hey well, ah, stay out of the deep end, eh. \n\njerry: ok, see you later. \n\nkramer: what's in the deep end? \n\ngeorge: hello? \n\nelaine: hey george. \n\ngeorge: hey elainie. what's going on? \n\nelaine: (sitting up in bed) nothing much, um. can i talk to susan \n\ngeorge: ha, yeah right, hang on, ill ah, ill get her for you. he, he, he, he. seriously, what's up? \n\nelaine: no, george really. can i talk to susan? \n\ngeorge: susan, why? \n\nelaine: because i want to ask her to lunch and to the met tomorrow. \n\ngeorge: oh, i don't think you want to do that. \n\nelaine: why not? \n\ngeorge: well what would be the point of that? \n\nelaine: george, are you going to put her on the phone? \n\ngeorge: where did this come from all of a sudden? \n\nelaine: george, are you going to let me talk to susan, or not? \n\ngeorge: i really think i should have been consulted about this. \n\ngeorge: here ... something. \n\nsusan: hello? (with hesitant surprise) oh, that sounds great. i love that sort of stuff. \n\nkramer: you want to sit here? \n\njerry: yeah. (kramer sits in the seat next to jerry) uh, uh, oh, oh, over there. (points to the next seat over) \n\nkramer: why? \n\njerry: little buffer zone. \n\nkramer: (quietly) buffer zone (kramer moves to the other seat) \n\njerry: thank you. if we were in my apartment and we were watching a movie on the couch, would we sit right next to each other? \n\nkramer: no. you got a point. \n\njerry: all right. \n\nkramer: i can't ... \n\njerry: what are you doing? \n\nkramer: well these seats have no lumbar. \n\njerry: oh hey, there's ramon. pre, pretend we're talking. \n\nkramer: we are talking. \n\njerry: pretend it's interesting. \n\nkramer: so, ah then, i ah had to kill him and ah, well the police are still looking for me. \n\njerry: that's shocking, but sounds ... \n\nramon: hey, hi jerry. \n\njerry: oh, hey ramon. \n\nramon: hey, hey, i took a bunch of napkins. you want some? \n\njerry: oh, no thanks. (turns back to kramer) \n\nramon: hey, ahhh, is this seat taken? \n\njerry: no. \n\njerry: and then the worst part is, after the movie, he leached on to us ... we wound up having coffee with him for like two hours. then he walks us home, all the way back to the front of the building. finally i said, look ramon, i gotta go to bed now. \n\ngeorge: by the way, have you spoken to elaine yet today? \n\njerry: no why? \n\ngeorge: (sighs) she called susan last night. \n\njerry: oh yeah, i know. \n\ngeorge: how do you know? \n\njerry: well it was my idea. \n\ngeorge: your idea? \n\njerry: yeah. \n\ngeorge: whad you do that for? \n\njerry: she was looking for someone to go to the show with. \n\ngeorge: well that was a really stupid thing! you know what's going to happen now? \n\njerry: world's collide. (points at george) \n\ngeorge: whe ... well yeah! \n\njerry: because this world is your sanctuary and if that world comes into contact with -- \n\ngeorge: yes! it blows up! if you knew that, what did you tell elaine for? \n\njerry: i didnt know. kramer told me about the worlds. \n\ngeorge: you couldn't figure out the world's theory for yourself? it's just common sense. anybody knows, ya gotta keep your worlds apart. (gesturing with hands going outward) \n\njerry: yeah, i guess i slipped up. \n\nkramer: hey. \n\ngeorge: hey. \n\njerry: hey. \n\ngeorge: he knows the worlds theory. \n\nkramer: what is it blowing up? \n\ngeorge: ha! (grabs his coat and exits the apartment) \n\nkramer: cosmo, go. no, no, na, na. (he pushes the end button and pushes the antenna down) boy this new telephone number's driving me crazy -- wrong numbers, every five minutes. \n\njerry: what is it? \n\nkramer: well it's 555-3455. \n\njerry: 555-3455. \n\nkramer: yeah. \n\njerry: (picks up the phone on the coffee table) 555-3455. well wait a second, don't you see that's 555-filk. \n\nkramer: what's filk? \n\njerry: filks nothing, but 555-film is movie phone. \n\nkramer: oh movie phone. \n\njerry: yes, so people are just dialing it by mistake and getting you. \n\nkramer: so, im filk? \n\njerry: you're filk. \n\nkramer: oh, mama. \n\nelaine: well what about that number susan b. anthony wore to the 19th amendment party. hnuh. eye yye yye. \n\nsusan: oh whoo. quite the dcolletage for a suffragette. \n\nelaine: ha, ha, ha, ha, well it must have been one hell of a party. \n\nsusan: whoo. \n\nelaine: ha, ha, ha, ha. \n\nsusan: oh, i know what i wanted to tell you. \n\nelaine: what? \n\nsusan: ehahh, forget it. \n\nelaine: what? you can tell me. ill put it in the vault. \n\nsusan: the vault? \n\nelaine: mm-hmm. \n\npaul - locker room attendant #1: oy, mr. seinfeld. we heard you went to the movies with ramon. \n\njerry: oh, well, i didnt actually go with ramon. i just bumped into him there. (putting on coat) \n\ndustin - locker room attendant #2: it's a good thing he has friends like you to cheer him up. \n\npaul: tell him to call us. \n\ndustin: tell him, dustin says, hello. \n\njerry: all right, i gotta go. \n\npaul: to see ramon? \n\njerry: what else did you two do? \n\nelaine: oh, i don't know, you know, girlie stuff. \n\njerry: ah, so, ah, flower shows and, shopping for pretty bows, and then back to her place, strip down to bra and panties for a tickle fight? \n\nelaine: that's really what you think girls do, isn't it? \n\njerry: yes, i do. (very serious) \n\nelaine: all rightee. (turns and walks to the bathroom) \n\njerry: hey you know george isn't to happy, ahh, about your new friendship. \n\nelaine: yeah? well i don't really give a sh... (closing the bathroom door) \n\nkramer: hey man, what's going on? \n\njerry: hey. \n\nkramer: ooh, here we go. (pulls a cordless phone from his pocket) yeah hello. yeah, no, no, no, hold on. \n\nkramer: yeah, cupids rifle -- 830, sony lincoln square. yeah, no, no, no, no problem, yeah. \n\njerry: you're looking up movies for people now? \n\nkramer: i got time. \n\nkramer: and this. (pulls out the cordless phone from his pocket) cosmo here. yeah, un-huh, no, no, no, no, ill help. yeah, firestorms good. i saw it yesterday. yeah well my buddy jerry , ah, he's seen it twice. you want to talk to him? here -- (holds the phone out to jerry) \n\njerry: (shaking his head no) no kramer i don't want to talk to him. \n\nkramer: just, just tell him about the picture. what's the matter with you? stop it. (puts the phone back to his ear) yes, are you still there? look im sorry about that. all right there's an 830 and a 1015showing. \n\njerry: oh that's george. (presses the intercom button) yeah? \n\nramon: (hey it's ramon) \n\njerry: what? \n\nramon: (hey, it's ramon jerry. im coming up) \n\njerry: (to ramon) oh. okay. (to elaine) wh, what is he doing here? \n\nelaine: who? who is ramon? \n\njerry: he's the pool guy. \n\nelaine: what pool guy? \n\njerry: do me a favor. just stick around while he's here. \n\nelaine: yeah, no problem. \n\nelaine: you know, you have the slowest elevator in the entire city? that's hard to get used to when you're in so many other fast ones. \n\njerry: well, the apartment elevators are always slower than the offices, because you don't have to be home on time. \n\nramon: hee hey, hey jerry (claps hands and points both index fingers at him) how are you, crazy guy? \n\njerry: hey. so, ah, ramon this is my friend elaine. \n\nelaine: yeah and i was just leaving. bye-bye jerry. (smiling as she closes the door. jerry looks at her like he can not believe she left him on his own) \n\njerry: so, ah, what are you doing around here ramon? \n\nramon: well, i was in the neighborhood. i figured id check you out. \n\njerry: ah, actually, i ka, kinda had some things to do. \n\nramon: oh, oh yeah. wha? where you going? \n\njerry: ah, just, you know, i don't know. stuff, i gotta do. (grabs coat and throws it over his shoulder) \n\nramon: hey that's cool. im up for some stuff \n\njerry: all right. \n\nramon: so get this. i get down there, and right away, i see the drain is clogged. i mean it's obvious. can you believe it? \n\njerry: all right ramon, im going to get going. \n\njerry: i think we should separate here actually. \n\nramon: what are you trying to say jerry? \n\njerry: look ramon, you're, you're a nice guy. but i, i actually only have three friends. i really can't handle any more. \n\nramon: oh i see. it's cause i clean pools, right? \n\njerry: that has nothing to do with it. \n\nramon: you su -- (no audio) (through the moving subway window, ramon is swearing and pointing at jerry) \n\nsusan: yeah, we got along real well. \n\ngeorge: you know, uh, she has no female friends! you know that, don't cha? something strange about a woman whos friends are all men. \n\nsusan: yeah, i know. we talked all about that. \n\ngeorge: you talked all about that? \n\nsusan: oh yeah. elaine opened up her vault. \n\ngeorge: did you just say vault? \n\nsusan: yeah, why? did i use it wrong? \n\ngeorge: you got that from elaine. \n\nsusan: yeah. so what? \n\ngeorge: well it's a little strange. you going to start to talk like elaine from now on? \n\nsusan: i don't know. anyway i thought we'd all go to a movie on friday. \n\ngeorge: wed all go to movie on friday? \n\nsusan: yeah. \n\ngeorge: this is not good. world's are colliding! george is getting upset! \n\ngeorge: ah you have no idea of the magnitude of this thing. if she is allowed to infiltrate this world, then george costanza as you know him, ceases to exist! you see, right now, i have relationship george, but there is also independent george. that's the george you know, the george you grew up with -- movie george, coffee shop george, liar george, bawdy george. \n\njerry: i, i love that george. \n\ngeorge: me too! and he's dying jerry! if relationship george walks through this door, he will kill independent george! a george, divided against itself, cannot stand! \n\ngeorge: you're killing independent george! you know that, don't you? \n\nelaine: george i don't even want to get -- \n\ngeorge: you know what word susan used last night? hnuh. vault! hu, \n\nelaine: so? \n\ngeorge: she got that from you! \n\nelaine: well, i didnt tell here to say it. \n\ngeorge: is she the only girl in the whole world? why can't you get find your own girl? \n\nelaine: i like her! \n\ngeorge: you see (to jerry). you see. you see what im talking about. it's all just slipping away. and you're letting it happen. (exits -- slamming the door) \n\njerry: so you want to catch a movie later? \n\nelaine: ahh, yeah, sure. \n\njerry: i don't have a paper though. \n\nelaine: hmm. (picks up the phone and dials) \n\nkramer: hewwo and welcome to movie phone. brought to you by the new york times and hot 97. coming to theaters this friday ... kevin bacon, susan sarandon -- you've got to get me over that mountain! now (bang, bang) ahhhhhhhhhh there is no place higher than ... mountain high . rated r. if you know the name of the movie you'd like to see, press 1. \n\nelaine: kramer, is that you? \n\nkramer: elaine? \n\nelaine: uh, what time does chow fun start? \n\nkramer: i don't know. \n\nramon: well, well. look whos here. \n\njerry: ramon, what are you doing here? you could get in trouble. \n\nramon: no, i don't think so jerry. you see they gave me my job back. \n\njerry: what? \n\nramon: im a pool boy ... again. \n\njerry: look ramon, about the other day. im sorry if i offended you. i get a little crabby on the subway. \n\nramon: do you? \n\njerry: what happened to all the towels? \n\nramon: oh, ah, i guess they must have disappeared. (walks away) \n\nnewman: hey jerry. look at all the towels they gave me! i really hit the jackpot! (holding a large stack of towels, newman pats his face with the top one) ha, ha, ha. \n\njerry: it's been a terrible situation down there the past couple of days. he's really been making things uncomfortable for me. there's always a big pile of dirty towels in front of my locker ... \n\nelaine: uh-huh. \n\njerry: and then when i come out of the pool, my towel's always gone. \n\nelaine: uhh, so frustrating! \n\njerry: tell me about it. \n\nelaine: uhh, so you want to join me and susan for lunch at the coffee shop? \n\njerry: you're meeting susan for lunch at the coffee shop? \n\nelaine: yeah. \n\njerry: im meeting george for lunch at the coffee shop. \n\nelaine: oh, huh. well, this should be very interesting. \n\nsusan: hey! elaine! jerry. over here! \n\nkramer: there they are. \n\nsusan: yeah, look who i ran into. \n\nkramer: hey. \n\nelaine: yeah. (sits down next to susan) \n\nkramer: yeah. \n\nelaine: ahh. \n\nkramer: come on jerry. aren't you going to join us? \n\njerry: ah, you know. im supposed to meet, eh, someone -- ill, ill wait for them outside. (walks towards the door) \n\nkramer: yeah, wait here. come on, sit down. what's the matter with you? \n\njerry: this is gonna to be ugly. (quietly) \n\nsusan: what's that jerry? \n\njerry: (coughing) i said, boy am i ugly. \n\nsusan: oh, hey, hey, georgie boy, over here. \n\ngeorge: one, two ... three, four. \n\ngeorge: ha ho! (he turns and walks out the door) \n\nsusan: hey george! \n\njerry: we'll pull up another chair. \n\njerry: i see you there ramon. \n\njerry: hey, lll just keep swimming. hey, hey. im not done. i know what you're up to ramon. because im a member here, this is my place to swim. \n\njerry: hey, you better cut it out ramon. just stop it. \n\nramon: oh. \n\nnewman: olly, olly, oxen, free! \n\njerry: (no!) \n\njerry: i think he's gonna need, mouth-to-mouth resuscitation. \n\nnewman: mouth-to-mouth? \n\njerry: yeah. \n\nnewman: huh. \n\njerry: well? go ahead. \n\nnewman: you go. \n\njerry: you knocked him out. \n\nnewman: yeah, but you pulled him in. \n\njerry: come on newman. do it. \n\nnewman: nah. \n\njerry: he might die. \n\nnewman: yeah. maybe. \n\nelaine: (on the phone to) look jerry, we'll meet you at the theater. (hangs up the phone) ok, next showings at 900, we can't wait any longer. \n\nsusan: elaine, where could he be? it's not like george to just disappear. \n\nelaine: look, let's just leave him a note, okay? \n\nsusan: oh, i don't know. \n\nelaine: oh, come on, come on, come on. (picks up pad of paper and writes) george, elaine and i went to see chunnel ... with jerry. love? \n\nsusan: yeah. \n\nelaine: love ... susan. \n\njerry: so eventually these people came and, somebody, gave him mouth-to-mouth. \n\nelaine: he could have died \n\njerry: yeah, it was a gamble. \n\nsusan: why didnt you give him mouth-to-mouth? \n\njerry: ah. (makes face) \n\nelaine: how can you possibly show your face there again? \n\njerry: oh i can't. they revoked my membership. newman too. you know, we can't go anywhere near there. \n\nelaine: hi, ah, three for chunnel -- two adults ... one child. (looking towards jerry) \n\ngeorge: what the hell is this? george, elaine and i went to see chunnel ... with jerry. with jerry, huh? with jerry! great. great! (dials phone) probably went to the 84th st. that's where i always go with jerry. \n\nkramer: hewwo and welcome to movie phone. if you know the name of the movie you'd like to see, press one. \n\ngeorge: come on. come on. \n\nkramer: using your touch-tone keypad, please enter the first three letters of the movie title, now. \n\nkramer: you've selected ... agent zero? if that's correct, press one. \n\ngeorge: what? \n\nkramer: ah, you've selected ... brown-eyed girl? if this is correct, press one. \n\nkramer: why don't you just tell me the name of the movie you've selected. \n\ngeorge: chunnel ? \n\nkramer: to find the theater nearest you, please enter your five digit zip-code, now. \n\nkramer: why don't you just tell me where you want to see the movie? \n\ngeorge: lowes paragon, 84th and broadway. \n\nkramer: (picks up paper) chunnel , is playing at the paragon 84th street cinema in the main theater at 930 pm. \n\ngeorge: yeah, now i gotcha! (hangs up the phone and rushes out the door) \n\nkramer: it's also playing in theater number two at 900. \n\ngeorge: jerry ... where are you? i know you like to sit back here. elaine! susan! \n\nmovie patron: shh! \n\n(from the movie we hear this dialogue: the english channel tunnel, chunnel, runs 32.3 miles, with two openings. one here, in england and another one here, in france. that's all we got. thank you for your time gentlemen. can i ask you a question mr. mckittrick. -- it's a bit hard to hear the movie dialogue, as we are supposed to be focused on george, but i was able to make out most of it) \n\njerry: i can't figure out what's going on here. i can't follow the plot. why did they kill that guy? i thought he was with them? \n\nsusan: no, no. that's not the guy. that's a different guy. \n\njerry: what is he doing in the chunnel? \n\nsusan: would you two, please? \n\n(again, from the movie we hear this dialogue: let me tell you something about the chunnel, mr. thane. that our only freeway is adept. (inaudible) elaine brookstone will get the money bag (inaudible) not as long as i have these long stickers. find him and kill him! i don't care if we have to turn this chunnel upside down! find him! everybody out of the chunnel! everybody out! the chunnels gonna blow! ahhhhhh (explosion) \n\ngeorge: susan! jerry! where are you? i know you're there! answer me! \n\nmovie patron: (hey, sit down!) \n\ngeorge: hey. hey. answer me! come on, show yourselves! \n\nmovie patron: (hey, we're trying to watch a movie here!) \n\ngeorge: drink your soda! come on! i know you're there, laughing at me. laughing and lying and laughing! i had to go to reggies, jerry! reggies! \n\nmovie patron: (move it off of there!) \n\ngeorge: where are you! \n\n2nd movie patron: (hey are you sure you got the right theater?) \n\ngeorge: yeah, yeah, yeah. chunnel . susan! \n\n2nd movie patron: (it's playing in two theaters.) \n\ngeorge: two theaters? \n\n2nd movie patron: (yeah, there's a 900 too.) \n\ngeorge: oh. sorry. \n\n(once again, from the movie we hear this dialogue: there's something else, your ex-wife. alexandra? she's in france, im telling ya. no, she's in the chunnel. the chunnel? no! mr. president, im sorry to disturb you. what is it? there's something about the chunnel. oh? (inaudible) and that means your daughter is in the chunnel. somewhere between france and ... (inaudible) \n\nelaine: i thought that was pretty good, huh? \n\njerry: whad you think susan? \n\nsusan: oh, i don't know. i couldn't hear anything. you, you talked the whole movie. \n\nelaine: oh, well come on. you want to go grab a bite to eat? \n\njerry: yeah. \n\nsusan: ah, no. i don't think so. \n\nelaine: why not? \n\nsusan: well you know, all you guys ever do is sit around the coffee shop talking, sit around jerry's apartment talking. frankly, i don't know how you can stand it. ill see you. \n\ngeorge: i know they're in there, the three of them, laughing at me. together, laughing and lying. \n\nusher: let's go pal. \n\ngeorge: they're -- they're killing independent george! and they're, they're all in on it! world's are colliding! \n\n[outside kramers apartment door: 5b a partial view of a man's face and his hand knocks 3 times on the door.] \n\nmovie phone guy: hello, and welcome to your worst nightmare. \n\nmovie phone guy: (cont) i know your in there, cosmo kramer, apartment 5b. you're in big trouble, now. you've been sealing my business. if you'd like to do this the easy way, open the door, now. or, please select the number of seconds, you'd like to wait, before i break this door down. please select now. \n\nkramer: hey, boys and girls. i need you both to sponsor me in the aids walk. \n\nelaine: is that tomorrow? \n\nkramer: yeah, yeah, so...git-git...(gestures to elaine to sign the form.) \n\nelaine (signing): well, i admire you for joining the fight against aids. \n\nkramer: well, if i didn't do something i wouldn't be able to live with myself. \n\njerry (signing): it's hard enough living next door. \n\nkramer: i tell ya, there's some people, they just wear a ribbon and they think they're doin' something? not me. i talk the talk, and i walk the walk, baby. (gets up) i'll be right back. \n\nelaine: new jeans? \n\njerry: yeah. \n\nelaine: still a 31 waist? \n\njerry: yep. since college. (looks at kramer's aids walk list.) hey, lena small's on this list. \n\nelaine: lena small? \n\njerry: yeah, that girl i was gonna call for a date, she was unlisted...and now here's her number. \n\nelaine: oh, you're not gonna cop a girl's phone number off an aids charity list! \n\njerry (copying down the number): elaine, you should admire me...i'm aspiring to date a giving person. \n\nelaine: you're a taking person. \n\njerry: that's why i should date a giving person. if i date a taking person, everyone's taking, taking, taking, no one's giving - it's bedlam. \n\nelaine (warns): she's gonna ask how you got her number. \n\njerry: oh, i'll tell her i met some guy who knew her and he gave it to me. \n\nelaine: what's he look like? \n\njerry: i really didn't pay much attention, i'd just come from buying a speedboat. \n\nelaine: you're buying a speedboat? \n\njerry: see, we're already off the subject of how i got her number. (elaine laughs.) all i gotta do is get past the first phone call and i'm home free. \n\nelaine: i don't know about that. \n\njerry: so if billy had gotten your number off the aids walk list, you wouldn't have gone out with him? \n\nelaine: well... \n\njerry: yeah. so you really like this guy. \n\nelaine: very much. \n\njerry: how's the...sexual chemistry? \n\nelaine: haven't been in the lab yet. but i am birth control shopping today. (kramer overhears as he returns to the booth.) \n\nkramer: are you still on the pill? \n\nelaine: uh, kramer... \n\nkramer: i'll tell ya, i think birth control should be discussed in an open forum. \n\nelaine: the sponge, o.k.? the today sponge. \n\nkramer: but wasn't that taken off the market? \n\nelaine: off the market? the sponge? no, no...no way. everybody loves the sponge. \n\nkramer: i read it in wall street week ...louis, uh, rukeyser. \n\njerry: hello, lena? hi, it's jerry seinfeld. how did i get your number? i met a guy that knows you, he gave it to me...i don't remember his name. think it began with a w, maybe a q. i wasn't paying that much attention, i'd just come from shopping for a speedboat... \n\nsusan: you know, i really like those new jeans jerry was wearing. he's really thin. \n\ngeorge: not as thin as you think. \n\nsusan: why? he's a 31. i saw the tag on the back. \n\ngeorge: the tag, huh? \n\nsusan: mmm-hmm. \n\ngeorge: let me tell you something about that tag. it's no 31, and uh...let's just leave it at that. \n\nsusan: what are you talking about? \n\ngeorge: he scratches off a 32 and he puts in 31. \n\nsusan: oh, how could he be so vain? \n\ngeorge: well, this is the jerry seinfeld that only i know. i can't believe i just told you that. \n\nsusan (laughing): why not? \n\ngeorge: well, jerry doesn't want anyone to know. \n\nsusan: well, it's alright, i'm your fiance. everyone assumes you'll tell me everything. \n\ngeorge: where did you get that from? \n\nsusan: well, we're a couple. it's understood. \n\ngeorge: i never heard of that. \n\nsusan: well, you've never been a couple. \n\ngeorge: i've coupled! i've coupled! \n\nsusan: keeping secrets! this is just like your secret bank code. \n\ngeorge: this is totally different! that was my secret, this is jerry's secret! there's...there's attorney-client priveleges here! if i play it by your rule, no one'll ever confide in me again, i'll be cut out of the loop! \n\ngeorge: hey. \n\njerry: hey. what's the matter? \n\ngeorge: i had a fight with susan. \n\njerry: what about? \n\ngeorge: oh...(is about to tell jerry, but reconsiders) ...clothing, something, i dunno. so, uh, what are you doing today? \n\njerry: i got a date with that girl, lena. \n\ngeorge: lena, how'd you meet her? \n\njerry: i actually met her a few weeks ago, but... (jerry stops, and mentally visualizes george telling susan about how jerry got lena's number from the aids list...then susan passing the information along to monica on the phone at work.) \n\ngeorge: you met her a few weeks ago, but...? \n\njerry (slowly): i didn't call her till today. \n\ngeorge: so, uh...wanna double? \n\njerry: what? \n\ngeorge: well, i just had a fight - i need a group dynamic. \n\njerry: i dunno. (elaine enters.) hey. \n\nelaine: well, kramer was right. my friend kim told me the sponge is off the market. \n\njerry: so what are you gonna do? \n\nelaine: i'll tell you what i'm gonna do - i'm gonna do a hard-target search. of every drug store, general store, health store and grocery store in a 25-block radius. \n\ngeorge: just for these sponges? \n\nelaine: hey man, women are really loyal to their birth control methods. what does susan use? \n\ngeorge: i dunno. \n\nelaine: you don't know? \n\ngeorge: i, uh...figure it's something. (kramer enters.) \n\njerry: what are you all out of breath from? \n\nkramer (panting): the elevator just broke. i had to walk up five flights. \n\njerry: and you got the aids walk tomorrow. you're never gonna make it, you're in horrible shape. \n\nkramer: hey, i'm in tip-top shape. better than you! \n\njerry: i got a 31 waist, mister! \n\nkramer: yeah, well i'm walking for charity, what are you doing? \n\njerry (proudly): what am i doing? i'm...dating a woman who happens to be sponsoring one of these walkers. \n\npharmacist: can i help you? \n\nelaine (with little hope): yeah, do you have any today sponges? i know they're off the market, but... \n\npharmacist: actually, we have a case left. \n\nelaine (excited): a case! a case of sponges? i mean, uh...a case. huh. uh...how many come in a case? \n\npharmacist: sixty. \n\nelaine: sixty?! uh...well, i'll take three. \n\npharmacist: three. \n\nelaine: make it ten. \n\npharmacist: ten? \n\nelaine: twenty sponges should be plenty. \n\npharmacist: did you say twenty? \n\nelaine: yeah, twenty-five sponges is just fine. \n\npharmacist: right. so, you're set with twenty-five. \n\nelaine: yeah. just give me the whole case and i'll be on my way. \n\njerry: hey, i have found the best-smelling detergent. lena, smell my shirt. \n\nlena (smells jerry's arm): mmm! very nice. \n\njerry: it's all-tempa-cheer. \n\nlena: i use planet. it's bio-degradable and doesn't pollute the oceans. \n\ngeorge: yeah, the oceans really are getting very sudsy. \n\nlena (to waiter): can you wrap up all the left-overs on the table, please? i always take the left-overs. i work in a soup kitchen every morning at 6 a.m. \n\njerry: they serve soup at 6 a.m.? \n\nlena: yeah. that's all they have. \n\njerry: do the bums ever complain? \"soup again?\" \n\ngeorge: i'd get tired of it. \n\njerry: how could you not? \n\nlena: guess who volunteered last week? \n\ngeorge: mick jagger. \n\nlena: no. maya angelou. \n\nsusan: oh, the poet! \n\njerry (to lena): so, let me ask you something - these people eat soup three times a day? \n\nlena: i don't know. \n\nsusan (to lena): so, did you get to talk to her? \n\nlena: talk to who? \n\njerry: is it a lot of cream soups? \n\nsusan: maya angelou, the poet. \n\nlena: no, i didn't get the chance. \n\ngeorge: oh, well, i'm sure you can reach her...she's a poet. what does a poet need an unlisted number for? \n\nsusan: i'm going to the ladies room. \n\nlena: i'll go with you. (they leave.) \n\ngeorge: what are you looking at me like that for? \n\njerry: why'd you have to mention 'unlisted number'? \n\ngeorge: what are you talking about? \n\njerry: alright, i gotta tell you something, but you cannot tell susan. \n\nsusan: jerry got her phone number off of an aids walk list? oh, that's awful! \n\ngeorge: i know, but don't say anything to anyone. he told me not to tell you. \n\nsusan: but you told me anyway? \n\ngeorge: well, you know, i was thinking about what you said before, and...you're right, i've never really been a couple, so...if that's the rule, then i'm gonna go by the rule. \n\nsusan: thank you, honey. \n\ngeorge: so, you wanna go home and...make up, officially? \n\nsusan: can we stop by a drug store first? \n\ngeorge: what for? \n\nsusan: i'm out of birth control stuff. \n\ngeorge: oh, o.k., yeah. where am i gonna park here...? (pulls over.) \n\nsusan: oh, don't park. i'll just sit in the car, you can run in. \n\ngeorge: me run in? why don't you run in? \n\nsusan: you don't know what i use for birth control, do you? \n\ngeorge: of course i do. \n\nsusan: you do? what? \n\ngeorge: you know. you use the, uh...(mutters something unintelligible under his breath.) \n\nsusan: the what? \n\ngeorge: you know, the uh...(mutters it again.) \n\nsusan: just get me some sponges, please. \n\ngeorge: wait, wait a minute...they don't have them anymore. i just found out, they just took them off the market. \n\nsusan: off the market? the sponge? \n\ngeorge: yeah, so you gotta use something else. \n\nsusan: i can't! i love the sponge! i need the sponge! \n\ngeorge: o.k....(thinks) i think i know where we can get one. \n\njerry: kramer, what the hell is going on in there? \n\nkramer: it's a poker game...(yells to the crowd) and i'm kickin' some serious butt! \n\njerry: are you out of your mind? you got the aids walk tomorrow! \n\nvoice from poker game: hey, kramer - are you in? \n\nkramer: oh, you gotta be kiddin'! you see those two ladies i got showin'? do they look scared?! \n\njerry: you're never gonna make it! \n\nbilly: you, uh...you wanna go in the bedroom? \n\nelaine: o.k. hold on just a second. (gets up and heads to the bathroom. george knocks at the door.) \n\ngeorge: elaine? it's me, george. (elaine opens the door.) hey, sorry to bother you so late. (to billy) hey! how ya doin.' (to elaine) uh, did you get any of those sponges? \n\nelaine: yeah. cleaned out the whole west side. why? \n\ngeorge: well...susan. \n\nelaine: ah, susan uses the sponge. \n\ngeorge: susan loves the sponge. \n\nelaine: yeah, i'm sorry, george. i can't help you out. \n\ngeorge: what? \n\nelaine: i can't do it. no way, there's no how. (tries to push george out the door. george resists.) \n\ngeorge: elaine...let me just explain something to you. see, this is not just a weekend routine...i'm on the verge of make-up sex here. you know about make-up sex? \n\nelaine: oh yeah, i know all about make-up sex, and i'm really sorry. (shoves george into the hallway and closes the door. george blocks the door with his foot.) \n\ngeorge: elaine, can i just explain something to you very privately here? susan and i have been together many, many times now, and just between you and me, there's really no big surprises here, so...make-up sex is all that i have left. \n\nelaine: i'm sure you'll have another fight, george. (stamps on george's foot and closes the door.) (to billy) hold that thought! \n\nsusan: so, listen to this. but don't tell anyone - jerry seinfeld? he got a woman's number off an aids walk list. \n\nmonica: he got her number off an aids walk list? \n\nlena: he what? \n\njerry: how'd you find out? \n\nlena: a friend of a friend of a friend of susan's. \n\njerry: george! \n\nlena: pardon? \n\njerry: nothing. listen, i'm sorry, i just - \n\nlena: it's o.k.! there's nothing to be sorry about. i don't mind. \n\njerry: you don't mind that i got your number off the aids walk list? \n\nlena: no, not at all. no problem. (jerry looks at lena suspiciously. lena leaves with all of kramer's poker buddies, who are filing out of kramer's apartment.) \n\nkramer: ah, you're lucky you're walkin' out of here with a pair of pants on! \n\njerry: you went all night? \n\nkramer (shows jerry his winnings): jerry, ah? breakfast on me, huh? \n\njerry: kramer, are you out of your mind? you got the aids walk in like, three hours! you're never gonna make it! \n\nkramer: aids walk! that's a cake walk. (george enters.) hey! \n\njerry: so, george, guess what? lena found out how i got her number. \n\ngeorge: really? how'd she do that? \n\njerry: a friend of a friend of susan's. \n\ngeorge: my susan? \n\njerry: why'd you tell her?! \n\ngeorge: because, jerry, it's a couple rule! we have to tell each other everything! \n\njerry: well you know what this means, don't you? \n\ngeorge: what? \n\n(img src=http: //tinyurl.com/2b9c width=200 ) \n\njerry: you're cut off, you're out of the loop! \n\ngeorge: you're cutting me off? no, no, no jerry, don't cut me off! \n\njerry: you leave me no choice! you're the media now as far as i'm concerned! \n\ngeorge: c'mon jerry, please! it won't happen again. \n\njerry: if you were in the mafia, would you tell her every time you killed someone? \n\ngeorge: hey, a \"hit\" is a totally different story. \n\njerry: i don't know, george. \n\ngeorge: so, lena was upset, huh? \n\njerry: you know what? that was the amazing thing. \n\ngeorge: what, it didn't bother her? \n\njerry: no, she said it was fine. there's something very strange about this girl. \n\ngeorge: what? \n\njerry: she's too good. \n\ngeorge: too good... \n\njerry: i mean, she's giving and caring and genuinely concerned about the welfare of others - i can't be with someone like that! \n\ngeorge: i see what you mean. \n\njerry: i mean, i admire the hell out of her. you can't have sex with someone you admire. \n\ngeorge: where's the depravity? \n\njerry: no depravity! i mean, i look at her, i can't imagine she even has sex. \n\njerry (using elaine as an example): on the other hand... \n\nelaine: what? \n\ngeorge (to elaine): thanks again for last night! \n\nelaine: hey, i didn't even use one. \n\njerry: i thought you said it was imminent. \n\nelaine: yeah, it was, but then i just couldn't decide if he was really sponge-worthy. \n\njerry: sponge-worthy? \n\nelaine: yeah, jerry, i have to conserve these sponges. \n\njerry: but you like this guy, isn't that what the sponges are for? \n\nelaine: yes, yes - before they went off the market. i mean, now i've got to re-evaluate my whole screening process. i can't afford to waste any of 'em. \n\ngeorge: you know, you're nuts with these sponges. george is gettin' frustrated! \n\nkramer (to organizer at desk): uh, cosmo kramer? \n\norganizer: uh...o.k., you're checked in. here's your aids ribbon. \n\nkramer: uh, no thanks. \n\norganizer: you don't want to wear an aids ribbon? \n\nkramer: no. \n\norganizer: but you have to wear an aids ribbon. \n\nkramer: i have to? \n\norganizer: yes. \n\nkramer: see, that's why i don't want to. \n\norganizer: but everyone wears the ribbon. you must wear the ribbon! \n\nkramer: you know what you are? you're a ribbon bully. (walks away.) \n\norganizer: hey you! come back here! come back here and put this on! \n\ngeorge: elaine and her sponges...she's got like, a war chest full of them. \n\nsusan: well, i don't see why you just can't use condoms. \n\ngeorge: oh, no, no...condoms are for single men. the day that we got engaged, i said goodbye to the condom forever. \n\nsusan: just once...for the make-up sex. \n\ngeorge: make-up sex? you have to have that right after the fight, we're way past that. \n\nsusan: come on, just once? \n\ngeorge: no, no...i hate the condom. \n\nsusan: why? \n\ngeorge: i can never get the package open in time. \n\nsusan: well, you just tear it open. \n\ngeorge: it's not that easy. it's like \"beat the clock,\" there's a lot of pressure there. \n\nwalker #1: hey, where's your ribbon? \n\nkramer: oh, i don't wear the ribbon. \n\nwalker #2: oh, you don't wear the ribbon? aren't you against aids? \n\nkramer: yeah, i'm against aids. i mean, i'm walking, aren't i? i just don't wear the ribbon. \n\nwalker #3: who do you think you are? \n\nwalker #1: put the ribbon on! \n\nwalker #2: hey, cedric! bob! this guy won't wear a ribbon! (cedric and bob turn around and glare at kramer.) \n\nbob: who? who does not want to wear the ribbon? (kramer is frightened.) \n\nelaine: so, you think you're sponge-worthy? \n\nbilly: yes, i think i'm sponge-worthy. i think i'm very sponge-worthy. \n\nelaine: run down your case for me again...? \n\nbilly: well, we've gone out several times, we obviously have a good rapport. i own a very profitable electronics distributing firm. i eat well. i exercise. blood tests - immaculate. and if i can speak frankly, i'm actually quite good at it. \n\nelaine: you going to do something about your sideburns? \n\nbilly: yeah, i told you...i'm going to trim my sideburns. \n\nelaine: and the bathroom in your apartment? \n\nbilly: cleaned it this morning. \n\nelaine: the sink, the tub, everything got cleaned? \n\nbilly: everything, yeah. it's spotless. \n\nelaine: alright, let's go. (they head for the bedroom.) \n\njerry: hi. \n\nlena: hi! hey, look at this - i just got a citation in the mail for my work with shut-ins. \n\njerry: oh, the shut-ins, that's nice. you know, they're a very eccentric group. because they're shut in. of course, they're not locked in, they're free to go at anytime. \n\nlena: oh, by the way, i checked at the soup kitchen - they do have cream soups. \n\njerry: hey, that's dynamite. you know, lena, i wanted to talk to you about something...you know, because you're such a good person - \n\nlena: oh, hang onto that thought - i'm rinsing a sweater, i left the water running. (goes into the bathroom.) hey, jerry, can you get me a towel out of my bedroom closet? \n\njerry: oh, o.k. (goes to the closet for the towel and finds dozens of boxes of today sponges.) \n\njerry's brain: oh my god! look what's goin' on here! she is depraved! (grabs a towel and brings it to lena.) there you are. \n\nlena: thanks. so, you were saying...? \n\njerry: what? nothing. \n\nlena: no, you said i was a good person... \n\njerry: oh... \n\nlena: you seem like you want to tell me something. \n\njerry: tell you something...i do. \n\nlena: what is it, jerry? you can tell me anything. \n\njerry: oh, uh...you see these jeans i'm wearing? \n\nlena: yeah. \n\njerry: i change the 32 waist on the label to a 31 on all my jeans. so, you know. that's it. (lena is puzzled.) \n\nsusan: come on, george, just tear it open. \n\ngeorge: i'm trying, dammit. \n\nsusan: tear it. \n\ngeorge: i tried to tear it from the side, you can't get a good grip here. you gotta do it like a bag of chips. \n\nsusan: here give it to me. \n\ngeorge: would you wait a second? just wait? (they fight over it.) \n\nsusan: give it to me. (she rips it open.) come on. come on! \n\ngeorge (tosses the condom aside): it's too late. \n\nbob: so! what's it going to be? are you going to wear the ribbon? \n\nkramer (nervously): no! never. \n\nbob: but i am wearing the ribbon. he is wearing the ribbon. we are all wearing the ribbon! so why aren't you going to wear the ribbon!? \n\nkramer: this is america! i don't have to wear anything i don't want to wear! \n\ncedric: what are we gonna do with him? \n\nbob: i guess we are just going to have to teach him to wear the ribbon! \n\njerry: it completely turned her off. \n\ngeorge: well, i can see that. what do you have to do that for? who cares about your pants size? \n\njerry: i don't wanna be a 32. \n\ngeorge: i'd kill to be a 32. \n\njerry: she said i wasn't sponge-worthy. wouldn't waste a sponge on me! \n\ngeorge: that condom killed me. why do they have to make the wrappers on those things so hard to open? \n\njerry: it's probably so the woman has one last chance to change her mind. \n\ngeorge: you never run out, do you? (jerry smiles.) where's kramer? everything's finished here. \n\njerry: oh, i told him he'd never make it. he was up all night! oh my god...kramer? \n\njerry: look at you. i told you. up all night playing poker. come on. (jerry and george are about to leave. george turn's back and looks at kramer.) \n\ngeorge: hey, where's you aids ribbon? \n\nelaine (smiling): good morning. \n\nbilly: how'd you sleep? \n\nelaine (stretches): great. you? \n\nbilly: fine, fine. everything o.k.? \n\nelaine: yep. \n\nbilly: no regrets? \n\nelaine: nope. (billy leans in to kiss her.) what are you doing? \n\nbilly: what do you mean? \n\nelaine: oh...i don't think so. \n\nbilly: why not? i thought you said everything was fine. \n\nelaine: i wish i could help you, but i can't afford two of 'em. (pats billy on the shoulder and gets out of bed.) \n\ngeorge: you think she's happy? \n\njerry: who? \n\ngeorge: (indicates with his head) the cashier. \n\njerry: ruthie cohen? \n\ngeorge: (surprised) you know her name? \n\njerry: sure. \n\ngeorge: i don't think i've ever spoken to her. \n\njerry: maybe that's why she's happy. \n\nkramer: (handing jerry & george a flyer) good morning, gentlemen. \n\njerry: what is this? \n\nkramer: (removing his coat) yeah, well, it's the latest offering from the alex theatre. \n\njerry: that stinky old movie-house? \n\nkramer: (sits beside jerry) well, you should smell it now. we fixed up the place. \n\ngeorge: (gesturing with flyer) with spartacus? \n\nkramer: (lighting his pipe) well, it's a rare archival print. (jumps as his burns his fingers) twelve extra minutes, full wide-screen cinemascope, and if you come to the one o'clock show, you can hear geoffrey har-harwood. \n\njerry: geoffrey who? \n\nkramer: har-harwood, jerry. he was the assistant wardrobe man on spartacus. some fascinating insights into the production. \n\ngeorge: why would i spend seven dollars to see a movie that i could watch on tv? \n\nkramer: well, why go to a fine restaurant, when you can just stick something in the microwave? why go to the park and fly a kite, when you can just pop a pill? (looks around monk's) listen, you guys haven't seen lloyd braun, have you? i'm supposed to meet him here. \n\ngeorge: lloyd braun? what d'you have to meet him for? \n\nkramer: well, he's using his connections in the mayor's office, to uh, get the theatre landmark status. \n\njerry: i thought he screwed up the dinkins campaign. \n\nkramer: well, he did. you know, after that, he had a nervous breakdown? had to spend a few months in an institution. \n\ngeorge: really? \n\nkramer: yeah, but he's doing a lot better now. i've taken him under my wing. \n\njerry: oh, then i'm not worried. \n\nkramer: but he still needs all of our support. now, when he gets here treat him like he's one of the gang, huh. \n\ngeorge: (thoughtful) breakdown, huh? \n\nlloyd: hey kramer. \n\nkramer: oh, hey lloyd, hey buddy. (gets up and shakes lloyd's hand) \n\nlloyd: how you doing? \n\nkramer: (slaps lloyd on the shoulder) sit down. (sits himself) \n\nlloyd: hi jerry. \n\njerry: lloyd. \n\nlloyd: george. \n\ngeorge: hello, lloyd. how you doing? \n\nkramer: yeah well, he's doing fine, george. \n\nlloyd: (offering packet) gum? \n\njerry: (peering) that's an interesting package. \n\nlloyd: yeah, it's from china. go ahead, try a piece. tell me that's not the most delicious gum you've ever tasted. \n\nkramer: yes, yes. we shall all try a piece and tell you how delicious it is. (he takes pieces for himself and jerry) \n\nlloyd: george? \n\ngeorge: i don't chew gum. \n\njerry: (chewing) mmm, different. where'd you get it? \n\nlloyd: friend of mine in chinatown gave it to me. if you want i can ask him where he got it. \n\njerry: nah, don't bother. \n\nlloyd: no, it's no problem. \n\njerry: i don't want it. \n\nkramer: jerry, jerry. lloyd says it's no problem. he's capable of locating the gum. \n\njerry: alright. \n\nkramer: mmm, delicious. this is delicious. mmm. \n\ngeorge: you know what? i think this ruthie cohen gave me the wrong change. didn't i pay with a twenty? i'm sure i paid with a twenty. \n\nelaine: hey. \n\ngeorge: hey. \n\njerry: i think i finally figured out what the flavor is in this gum. it's a little lo-mein-y. (he spits it into the waste bin) \n\nelaine: what kind is that? \n\njerry: it's chinese gum, lloyd braun gave me. \n\nelaine: lloyd braun? how's he doing? \n\ngeorge: (almost gleeful) after dinkins lost the election, he had a complete nervous breakdown. they had to lock him up. \n\nelaine: you know, that's around the same time i broke up with lloyd. y... you don't think that i had anything to do with his breakdown, do you? \n\njerry: you know, i remember when we parted company, i was babbling incoherently for months. \n\nelaine: yeah? well, i got news for you. \n\ngeorge: the whole time that i was growing up, all i ever heard from my mother was 'why can't you be more like that lloyd braun?' \n\njerry: and in the end lloyd braun became more like you. \n\ngeorge: right, gotta get going. \n\njerry: aren't you coming with us to spartacus? \n\ngeorge: nah, i gotta deliver some christmas presents to my parents. \n\njerry: i thought your parents were outta town? \n\ngeorge: why d'you think i'm going now? \n\n[street: queens] \n\npop: georgie! \n\ngeorge: hey, mr lazzari. \n\npop: back in the old neighborhood, ah? \n\ngeorge: yeah, yeah. just delivering some presents to my folks. \n\npop: oh, snazzy car. le baron? \n\ngeorge: yeah, eighty-three. used to belong to john voight. \n\npop: the actor, right? \n\ngeorge: something like that. \n\npop: mind if i look under the hood? \n\ngeorge: oh, no no no no. go ahead, pop, you always knew your cars. \n\npop: oh, deena! deena, deena, l... look who's here. \n\ndeena: george costanza, is that you? \n\ngeorge: hey deena, come on, give us a hug. (they hug) oh my gosh, you look as pretty as you did back in high school. \n\ndeena: boy, those were some crazy times. \n\ngeorge: yeah, yeah. speaking of crazy, did you hear about lloyd braun? \n\n[alex theatre: lobby] \n\nkramer: the alex was built in nineteen twenty-two, during the golden era of movie palaces. minor restorations in nineteen forty-one, forty-seven, fifty-two, fifty-eight, sixty-three, and currently to our present period of time. \n\nelaine: boy, you're really getting into this aren't you? \n\nkramer: yes, yes i am. the icing on the cake would be getting that landmark status from the city. we're hoping lloyd braun can pull a few strings. \n\njerry: oh, can lloyd really do that? \n\nkramer: lloyd braun can do anything he puts his mind to. he's fine, jerry. (to elaine) and you should say hello to him, elaine. \n\nelaine: (concerned) what? lloyd is here? \n\nelaine: what? no, no, i'd rather... \n\nlloyd: hi elaine. \n\nelaine: (big fake smile) lloyd, yes. hello. \n\nlloyd: kramer tell you? we reserved some special seats, so we can all sit together. \n\nelaine: (reluctant) oh, well... i, uh, actually lloyd, jerry and i have to sit in the front row, uhm, (desperately inventing) because uh, because, because he, he forgot his glasses. so uh, thanks for getting us... uhm, we'll see you afterwards. \n\nlloyd: that was odd. am i crazy, or does jerry not wear glasses? \n\nkramer: (emphatic) you're not crazy. jerry does wear glasses. he just forgot 'em, that's all. (puts an arm round lloyd's shoulder) not crazy. \n\n[alex theatre: auditorium] \n\njerry: we're all the way in the front row. why couldn't we sit in the special seats? \n\nelaine: i'm sorry, but i didn't want lloyd thinking i was leading him on again. seeing him made me feel very uncomfortable. \n\njerry: nah, you don't wanna be uncomfortable. \n\n[street: queens] \n\ndeena: poor lloyd. \n\ngeorge: i know. completely bonkers! \n\ndeena: sorry i can't be so flip about this kind of thing. you know, after what happened to pop. \n\ngeorge: pop? what happened to pop? \n\ndeena: i thought you heard. he had a nervous breakdown last year. that's why i'm taking care of him. \n\npop: oh, i tell you, they don't build 'em like this any more. \n\ngeorge: (a little worried) he uh, he doesn't have the auto shop any more? \n\ndeena: uhn, it was too much for him. \n\ngeorge: (very worried) uhm, i, i gotta go. \n\ndeena: what? \n\ngeorge: i just remembered, i gotta be someplace. yuh-hu-hur, that's enough. pop. pop, put down the wrench, pop. \n\n[alex theatre: auditorium] \n\ngeorge: pop! pop!! \n\n[alex theatre: lobby] \n\nlloyd: 's a great movie, huh? \n\nkramer: yeah. \n\nlloyd: sorry you forgot those glasses. \n\njerry: i don't know what i was thinking. \n\nlloyd: how'd you like that gum? \n\njerry: (noncommittal) errh. \n\nkramer: (slapping jerry on the back) ah, he loved it. \n\nelaine: hey kramer, you know what? there, there isn't a light there, in the ladies' room. \n\nkramer: yeah, yeah. it's being repaired. \n\nelaine: oh. oh god. \n\nlloyd: you alright? \n\nelaine: ah, i sat too close to the screen. oh. i just gotta stretch out in a hot bath. it was nice to see you again, lloyd. \n\nelaine: officer. officer, is there some reason this man has to always be using a hose? i mean, he's flooding the sidewalk. it's a waste of water. couldn't he just use a broom? \n\ncop: lady, you sold me. (strides toward florist) hey, you with the hose. \n\nkramer: yeah, put these glasses on. \n\njerry: (taking them) well, what's this for? \n\nkramer: yeah, well lloyd, he's gonna be here any minute now. \n\njerry: so what? \n\nkramer: well, he thinks you wear those. \n\nkramer: they're from the lost and found at the alex. \n\njerry: aw, c'mon kramer, this is ridiculous. i'm not gonna put these on. \n\nkramer: oh. okay. so he'll just think that the two of you didn't sit with him on purpose. ooh yeah, that's very nice. very nice. \n\ngeorge: 'scuse me. i uh, i was in here this morning and uh, i believe i paid you with a twenty dollar bill, (smiles) but you only gave me change for a ten. \n\ncashier: i don't think so. \n\ngeorge: oh, i think so, and i can prove it. you see, i was doodling on the bill and uh, so if you have a twenty in there with big lips on it... well, (smiles) that's mine. would you mind opening up the register? \n\ncashier: not unless you buy something. \n\ngeorge: fine, i'll buy a pack of gum. \n\nlloyd: hey george. thought you didn't chew gum? \n\ngeorge: i don't. \n\ncashier: take a look. \n\ngeorge: i know i gave it to you. \n\nlloyd: george, would you mind. i'm kind of in a hurry. \n\ngeorge: (frustrated) fine. fine. (to customer) excuse me. (heading for the door) think i'm gonna forget about this? i haven't forgotten about this. i don't forget that easily! \n\nkramer: hey, jerry, look who's here. \n\njerry: ah, lloyd. \n\nlloyd: hi jerry. got some more of that gum. \n\njerry: (unenthusiastic) oh, the gum. \n\nkramer: yeah, let's all enjoy a chew, huh? \n\njerry: (still not happy) uh, alright. (he takes a piece) \n\nkramer: oh, boy. \n\nkramer: now see, this is what the holidays are all about. three buddies, sitting around, chewing gum, huh? mmm, mmm, yeah. so uh, you know, lloyd, he thinks he can get more of this. \n\njerry: well, lloyd's a very industrious fellow. i'm sure he can accomplish anything he sets his mind to. \n\nlloyd: actually, the importer's right in chinatown. i'll introduce you to him, you can get it whenever you want. \n\njerry: 's not necessary. \n\nkramer: hey, jerry, you know, lloyd wants to do you a favour. \n\njerry: i know that, kramer. \n\nlloyd: well, if you don't want to... \n\nkramer: no, sure sure, he wants to. it's very kind of you. yeah, jerry, he appreciates it. don't you, jerry? \n\njerry: yes i do, kramer. \n\nlloyd: so... \n\nkramer: yeah? \n\nlloyd: how about that elaine today, huh? \n\nkramer: oh, baby, what was that all about, huh? \n\nlloyd: (to jerry) she was practically undressing in front of me at the theatre. \n\njerry: i didn't see anything. \n\nkramer: yeah, you uh, really missed a show, buddy. wooh, ba-boom, ba-boom-ba-ba-ba-boom-ba. \n\ndeena: you're probably wondering why i wanted to see you again. \n\ngeorge: well, you know. (grins, snorts) it's understandable. \n\ndeena: i'm glad you feel that way. because since my father's breakdown i uh, become very sensitive to the warning signs. \n\ngeorge: warning signs? \n\ndeena: nervousness, irritability, paranoia. \n\ngeorge: (disbelief) what? (laugh) wh... what're you talking about? i'm not the one with the problem. (defensive) lloyd braun was in the nuthouse, not me. \n\ndeena: yet again, taking pleasure in the misfortunes of others. \n\ngeorge: all my friends do that. \n\ndeena: george, i'm only trying to help... \n\ndeena: i'm... i'm concerned. george? george, are you listening to me? \n\ngeorge: you see that woman on the horse? (points) \n\ngeorge: she stole twenty dollars from me. (getting angry) yeah, i might've gotten it back, but lloyd braun interfered! \n\ndeena: so again it all comes back to lloyd. \n\ngeorge: (rising to his feet) hey! hey, you! (setting off after her) come back here!! don't gallop away!! \n\njerry: so you say she was on a horse? \n\ngeorge: i'm telling you, that cashier is riding horses on my money. \n\njerry: well, here's what i propose. go down to the stables, snoop around. see if any high-flying cashier's been throwing twenty dollar bills around with big lips. \n\nelaine: hey. \n\njerry: well, if it isn't chesty la rue. \n\nelaine: (sits beside jerry) what? \n\njerry: i was chewing gum with lloyd braun, and he was bragging about the peepshow you gave him at the alex. \n\nelaine: (laughing it away) oh god. i lost a button, so my blouse was wide open. i musta left it at the theatre. \n\njerry: maybe it's in the lost and found. \n\nelaine: yeah, i know. i have to go check it out. it's a beautiful button too, you know. it's antique ivory. it was my mother's. \n\njerry: you know, the way you were wolfing down that popcorn, maybe you ate it. \n\n[alex theatre: lobby] \n\nkramer: mr har-harwood. well, what an unexpected surprise to have you back at the alex theatre. \n\nhaarwood: well i, i'm in a bit of a quandary. i've misplaced my spectacles. \n\nkramer: well, let's look in lost and found, shall we? \n\nhaarwood: they're half-glasses. \n\nkramer: brown? \n\nhaarwood: mmm, yes, yes. \n\nkramer: uh, yeah. ah, well if they're not in the box, i'm sure they'll turn up soon. listen, could you keep an eye on the place? i wanna go out and get some paraffin wax, and bring out the lustre of this vintage countertop. \n\nhaarwood: certainly. \n\nhaarwood: oh my goodness. what a spanking button. \n\n[george's car: street outside alex] \n\ngeorge: (glances in mirror) alright. alright. \n\ngeorge: (getting annoyed) hang on, it's warming up! \n\ngeorge: (angrily) oh you mother... \n\ngeorge: hey! what is your problem? \n\ngeorge: oh, hello, it's you! (angry) listen lady, i got six minutes left on that meter, and i'm not budging til you admit you stole my twenty dollars. (smug) huh-hu-hur, you're not so tough when you're not on your horse, are you ruthie? \n\ncashier: your car's on fire. \n\ngeorge: aah! fire! \n\ncashier: (after george) merry christmas! \n\ngeorge: (shouting) fire!! \n\ngeorge: your hose! where's your hose?! \n\nflorist: cop made me disconnect it. \n\nkramer: jeez! what happened to your car, buddy? \n\ngeorge: the jon voight car is no more. \n\nkramer: wow. well, don't you sweat it. you can use my car any time you want to. \n\ngeorge: no kidding? \n\nkramer: no kidding. \n\ngeorge: hey, thanks. i owe you a big one. \n\nkramer: yeah, merry christmas. \n\ngeorge: (staring at the wreck) whatever. \n\n[alex theatre: lobby] \n\njerry: alright, i'm here. where's braun? \n\nkramer: what, he's not here yet? \n\njerry: look, i'll go downtown to chinatown with him, but that is it! \n\nkramer: listen, i'm gonna need those glasses. \n\njerry: why? \n\nkramer: they're geoffrey haarwood's. \n\nkramer: (proffering) here, try this pair. \n\njerry: aw, these are really strong glasses. \n\nlloyd: hey gum-buddy. nice frames. you ready to go? \n\njerry: (lacking enthusiasm) yeah, yeah. \n\nkramer: (clapping jerry on the back) oh yeah, he's all ready to go. \n\nlloyd: anybody see elaine today? \n\nkramer: oh yeah, she called a little earlier. she's coming over to check out lost and found. \n\nlloyd: maybe i'll stick around and see what she's wearing today. or not wearing, if you know what i mean. \n\njerry: absolutely. let's just stick around. \n\nlloyd: ah, tell you what, they're expecting us though. lemme just grab a hotdog here. \n\nkramer: uh, yeah. \n\nlloyd: i'd like a hotdog, please. \n\nattendant: are you outta your mind? \n\nkramer: wh...wh...wh... what's the problem here? \n\nattendant: this hotdog's been here since the silent era. you'd have to be insane to eat it. \n\nkramer: no, no, no, no, no. this man is not insane. now there's nothing wrong with it or you. \n\nlloyd: kramer, maybe... \n\nkramer: no, no, no, no. i'll show you. (slams a bill down on the counter) one hotdog please. \n\nattendant: (on your head be it) okay. \n\nkramer: mmm, doesn't that smell good, huh? \n\nkramer: yeah, here we go, yeah. (he takes a big bite) mmm, oh. that's delicious. mmm. it's a perfectly sane food to eat. (he takes another bite) \n\nkramer: uhm, interesting texture. it's chewy. (he half-coughs, half-retches) i gotta get, some air. \n\n[street outside alex: later] \n\nelaine: excuse me. 'scuse me, weren't you told to stop using that hose? \n\nflorist: how would you happen to know that? \n\nelaine: well, uhm... i... \n\nflorist: (accusing) you're that lady that was talking to the cops, aren't you? \n\nelaine: uh... i... \n\nvoice (o.c.): hey, joe! \n\nelaine: no, wait! you're soaking me, you're soaking me! \n\n[alex theatre: lobby] \n\nelaine: hey. hey everybody. \n\nlloyd: whoah, elaine! once again, you've managed to top yourself. c'mon jerry, let's go. car's out front. \n\njerry: lloyd? \n\njerry: lloyd? \n\nelaine: (exasperated) what is lloyd's problem? \n\nkramer: look, honey, i know you're trying to get lloyd to notice you, but this is too much. parading around in a wet t-shirt. \n\nelaine: uhh, i got sprayed with a hose. \n\nkramer: yeah, well, i'm sorry, but the alex is a family theatre, not one of your swing joints. \n\ndeena: so, you want my father to pay for this? \n\ngeorge: you saw him. he was fiddling with the engine. god knows what he did there. \n\ndeena: and i suppose lloyd braun had something to do with it too. \n\ngeorge: no, not lloyd braun. but the cashier. \n\ndeena: what cashier? \n\ngeorge: you remember the woman on the horse? she wanted my spot. \n\ndeena: to park her horse? \n\ngeorge: no, she wasn't on the horse. \n\ndeena: so, your car caught fire because of my father and the woman on the horse? \n\ngeorge: that's right. \n\ngeorge: (points) and him! \n\ndeena: the man with the flowers? \n\ngeorge: yeah, yeah, the flower guy. listen, i know this all sounds a little crazy, but... \n\ngeorge: i can't believe it. look, that's jerry seinfeld. \n\ndeena: who? \n\ngeorge: jerry seinfeld. my best friend. he can explain all of this. (calls to jerry) jerry. \n\ngeorge: jerry! over here jerry. it's me! \n\ngeorge: jerry, where y'going? it's... what're... \n\ndeena: (doubtful) that was your best friend? \n\ngeorge: yeah, yeah, but he doesn't wear glasses. \n\ndeena: that man was wearing glasses. \n\ngeorge: i know. don't you see. (emphatic) he was doing it to fool lloyd braun! \n\nlloyd: i'll run in and get the gum. \n\njerry: alright. \n\nlloyd: got any money? \n\njerry: (handing it over) here. \n\nlloyd: (climbing out of the car) i'll be back. \n\ngeorge: look, deena, i know you think i'm crazy, but i'm not. this is just a series of bad coincidences. \n\ndeena: i don't know, george. i don't know what to believe. \n\ngeorge: believe me, i am not crazy. \n\ndeena: well, i guess it's possible. \n\nlloyd: here y'go. \n\njerry: (indistinct) got all this? \n\nlloyd: yeah. a hundred dollar's worth. \n\njerry: (incredulous) i gave you a hundred dollars?! \n\nlloyd: you sure did. am i crazy, or is that a lotta gum? \n\njerry: it's a lotta gum! \n\nkramer: mr hararwood. found your glasses. \n\nhaarwood: oh, splendid. welcome to the institute for the preservation of motion picture costumes and wardrobe. \n\nkramer: ah, the i.p.m.p.c.w. \n\nhaarwood: well eh, we prefer to call it the institute. \n\nkramer: is that from henry the eighth? \n\nhaarwood: yes, yes, it is. \n\nkramer: well, you know, we're screening that tonight at the alex. do you think that i could wear that to promote the theatre? \n\nhaarwood: well, i... i'd love to lend it to you, but i doubt if it would fit a man of your impressive, raymond massey-like, physique. the only person who could really fit into this costume, would have to be a short, stocky, man of somewhat generous proportions. \n\nkramer: (an idea occurs) you don't say. \n\nkramer: you're really helping me out with this, buddy. kids are gonna be so thrilled. \n\ngeorge: yeah, yeah. you really cashed in on that favor pretty quick. \n\nkramer: remember, you're a king, you must project a royal bearing. \n\ngeorge: (angry undertone) oh, i'm gonna give you a royal bearing. wait a minute, wait a minute. lemme get a pack of gum here. \n\ngeorge: (handing over a bill) can i get a pack of gum, please? \n\nguy: i beg your pardon, your majesty, but we don't accept bills with lipstick on the president. \n\ngeorge: what? huh, so i had it all along. how d'you like that? (snorts) i guess i owe that cashier an apology. \n\ndeena: oh my god! \n\ngeorge: no, no. deena, it's not what you think. \n\ngeorge: th... this isn't mine. \n\ngeorge: i got it from the institute. the institute. \n\ngeorge: (shouting) dee... deena! \n\n[alex theatre: lobby] \n\nkramer: ahh, mr haarwood. well, you certainly know how to dress for a premiere. \n\nhaarwood: well, thank you. uh, where is your friend king henry? \n\nkramer: oh, he ran away. \n\nlloyd: hey kramer. \n\nkramer: i need to talk to you. \n\nelaine: you know, that button looks very familiar. \n\nhaarwood: yes, it, it, it's antique ivory. \n\nelaine: i, i think that's my button. (wanders over to haarwood) you know, i've been looking all over for it. did, did you find it here? \n\nhaarwood: yes, it was in the lost and found. \n\nelaine: shall i undo it? \n\nhaarwood: oh yes, of course you can. \n\nelaine: oh, thank you. \n\nhaarwood: i'm a little ticklish. \n\nelaine: oh. (giggly) tickle, tickle. \n\nlloyd: we've really gotta get that elaine a boyfriend. \n\nkramer: oh, tell me about it. \n\nelaine: (thinking) i can't believe i'm going out with this guy. wow! he's so cool. maybe he'll write a song about me. that would be amazing. oh, elaine, you are so beautiful. so, so beautiful. not so mention your personality which is so, so, interesting. if you want, you can quit your job and never work again. \n\nelaine: jerry, you have got to come see him. he is so terrific. \n\njerry: maybe he'll write a song about you. \n\nelaine: yeah. right. (laughing) like that really matters. \n\njerry: so i take it he's spongeworthy? \n\nelaine: oh, yeah. \n\njerry: well, he's a musician. i guess they're supposed to be very, you know, uninhibited and free. \n\nelaine: well, actually, he's - he's not that way at all. \n\njerry: oh, no? \n\nelaine: yeah. in fact, he....(moaning) \n\njerry: come on. come on. \n\nelaine: i don't wanna! \n\njerry: elaine, you're among friends. \n\nelaine: (sighs) well, actually, he, um, doesn't really like to do... everything. \n\njerry: oh. \n\nelaine: yeah. it's surprising. \n\njerry: yes, it is. it is surprising. does that bother you? \n\nelaine: no. no, it doesn't bother me. i mean, it would be nice. i'm not gonna lie to you and say it wouldn't be nice. \n\njerry: sure. why not? you're there. \n\nelaine: exactly. \n\njerry: but you said he was just coming out of a very serious relationship. maybe he's, you know, still....kind of...he...not gonna happen. \n\nkramer: hey, jerry! listen, i need you to come downstairs, help me get my stuff outta the car. \n\njerry: what stuff? \n\nkramer: i just came from the price club. i'm loaded up, baby. \n\njerry: all right. what are you, outta your mind? look at this. what did you buy here? you will never be able to finish all this stuff. \n\nkramer: course i will. these are staples. \n\njerry: a four-pound can of black olives? that's a staple? \n\nkramer: lindsay olives, jerry. \n\njerry: a forty-eight pack of eggo waffles? a gallon of barbecue sauce? ten pounds of cocktail meatballs? \n\nkramer: $17.50. you can't beat that. \n\njerry: look...look at this can of tuna! \n\nkramer: yeah. star kist, jerry. most tuna don't make their cut. \n\njerry: this isn't for a person. this is for biosphere 3. \n\nkramer: hey, clyde! \n\nclyde: hey, kramer! what's happening, dude? \n\nkramer: yeah. ahh. hey, this is jerry here. \n\nclyde: how ya doin'? \n\njerry: hi. \n\nkramer: you know, clyde, he plays backup with john germaine. \n\njerry: john germaine? that is amazing. i was just talking about him upstairs with elaine. \n\nclyde: oh yeah? \n\njerry: oh, yeah. my friend elaine and him are goin' out. they're pretty hot and heavy. \n\nclyde: is that right? \n\nkramer: hey, how 'bout giving me a hand? you know, bring some of this stuff upstairs. \n\nclyde: oh, sorry kramer, i got to watch the hands. my hands are my life. \n\nestelle: georgie, can you zip me up? \n\ngeorge: yeah. yeah, one second. \n\nestelle: well, come on! \n\ngeorge: all right. all right. let's not get into panic mode! let's not make a big deal outta this thing or we're never gonna get through this night. \n\nestelle: well, i'm meeting your in-laws, i think i should look nice. \n\ngeorge: my in-laws. oh, my.... \n\nfrank: so, what do you think? your old man can look pretty good when he wants to, huh? \n\nestelle: i don't like that tie. \n\nfrank: what's the matter with this tie? i've hardly worn it. \n\nestelle: it's too thin. they're wearing wide now. \n\nfrank: how do you know what kind of ties they wear? \n\nestelle: go to any office building on 7th avenue and tell me if there's anyone there wearing a thin tie like that. go ahead! \n\nfrank: oh, get the hell outta here. 7th avenue. \n\nestelle: george, do you think he should wear a tie like that? \n\nfrank: huh? \n\ngeorge: i think he should wear whatever tie he wants. \n\nfrank: we gotta stop off and pick up a marble rye from schnitzer's. \n\nestelle: it's out of our way. why can't we pick up something at lord's? it's right over here. \n\nfrank: no! we have to go to schnitzer's! i'll show these people something about taste! \n\ngeorge: this is gonna be fun. \n\njerry: hey, you'll never guess who i bumped into. this guy clyde. he's in your friend john germaine's band there. \n\nelaine: so what did he have to say? \n\njerry: nothing. i told him you two were pretty hot and heavy. \n\nelaine: hot and heavy? you said hot and heavy? \n\njerry: yeah. \n\nelaine: what did you do that for? \n\njerry: what? \n\nelaine: what if he tells john? then john's gonna think that i think that we're hot and heavy. i don't want john thinking that i'm hot and heavy if he's not hot and heavy. \n\njerry: oh \n\nelaine: i'm trying to get a little squirrel to come over to me here. i don't wanna make any big, sudden movements. i'll frighten him away. \n\njerry: well, clyde might not tell him. \n\nelaine: how do you know that? \n\njerry: i should have helped kramer with those packages. \n\nelaine: ohh! \n\ndennis: let me give you a hand. hey, kramer. i wonder, could you do me a favor? i'm taking the family to disneyworld next week. i wonder... \n\nkramer: uh-huh. \n\ndennis: i wonder, could you pick up my mail? \n\nkramer: yeah. sure. sure. \n\ndennis: in fact, you know what, how would you like to take my hansom cab for the week? \n\nkramer: drive the horse? \n\ndennis: it'll just be sitting there. you can really clean up. 500 bucks a day. i'll split it with ya. \n\nkramer: oh, giddyup. yeah. \n\ngeorge: this is delicious, mrs. ross. \n\nmrs. ross: oh. \n\nmr. ross: what are you complimenting her for? she didn't make it rowenna did. \n\nfrank: what is this thing anyway? \n\nmrs. ross: it's cornish gamehen. \n\nfrank: what is that, like a little chicken? \n\ngeorge: it's, uh, it's not a little chicken. (laughing) little chicken. it's a gamebird. \n\nfrank: gamebird? \n\ngeorge: yeah. \n\nfrank: what do you mean? like, you - you hunt it? \n\nmr. ross: yes. \n\nfrank: how hard could it be to kill this thing? \n\nestelle: i couldn't help but notice that you have quite a library in there. \n\nmrs. ross: if i had a dime for every book he's actually read, (laughing) i'd be broke. \n\nsusan: more wine anyone? \n\nfrank: yeah. i'll take some. \n\nsusan: hmmm? \n\nfrank: thank you. \n\nsusan: how do you like the merlot? \n\nestelle: merlot? i never heard of it. did they just invent it? \n\nmrs. ross: oh, mother. \n\ngeorge: she's, uh, she's heard of merlot. \n\nfrank: let me understand, you got the hen, the chicken and the rooster. the rooster goes with the chicken. so, who's having sex with the hen? \n\ngeorge: why don't we talk about it another time. \n\nfrank: but you see my point here? you only hear of a hen, a rooster and a chicken. something's missing! \n\nmrs. ross: something's missing all right. \n\nmr. ross: they're all chickens. the rooster has sex with all of them. \n\nfrank: that's perverse. \n\ngeorge: did anybody see firestorm? \n\nmr. ross: firestorm, that's a hell of a picture. \n\ngeorge: yeah. \n\nmr. ross: remember when they had the helicopter land on top of that car -- \n\nfrank: hey! hey! come on! come on! i haven't seen it yet. \n\nmr. ross: it doesn't have anything to do with the plot! \n\nfrank: still! still! i like to go in fresh! \n\ngeorge: oh mother of god. \n\nkramer: of course, uh, this is central park. uh, this was designed in 1850 by joe peppitone. um, built during the civil war so the northern armies could practice fighting on...on grass. oh, yeah. giddyup. on rusty! \n\njohn: thank you. now, i'd like to play something th -- well, actually, it's my latest so it's nice and fresh. it's called \" hot and heavy.\" \n\ngeorge: thank god that's over. \n\nestelle: the mother seems to hit the sauce pretty hard. i didn't like that. \n\nfrank: and who doesn't serve cake after a meal? what kind of people? would it kill them to put out a pound cake? something! \n\ngeorge: so, they didn't give you a piece of cake? big deal. \n\nestelle: it is a big deal. you're supposed to serve cake after a meal. i'm sorry. it's impolite. \n\nfrank: not impolite...it's stupid, that's what it is. you gotta be stupid to do something like that! \n\nestelle: your father's absolutely right. we're sitting there like idiots drinking coffee without a piece of cake! \n\ngeorge: what is this? the marble rye? \n\nmrs. ross: oh, dear. i forgot to put out that - that bread they brought. \n\nestelle: we forgot to bring it in. \n\nfrank: no, i brought it in. they never put it out. \n\nmrs. ross: where is it? \n\nsusan: i don't know. where'd you put it? \n\nmrs. ross: right over there. \n\nsusan: well, it's gone. \n\ngeorge: you stole the bread? \n\nfrank: what do you mean stole? it's my bread. they didn't eat it. why should i leave it there? \n\ngeorge: because we brought it for them! \n\nfrank: apparently, it wasn't good enough for them to serve. \n\nmrs. ross: is it possible they took it back? \n\nsusan: who would bring a bread and take it back? \n\nmr. ross: those people, that's who. i think they're sick. \n\nestelle: people take buses to get that rye. \n\ngeorge: maybe they forgot to put it out! \n\nfrank: aw, they didn't forget to put it out! it's deliberate! deliberate, i tell ya! \n\njerry: he stole back the rye? \n\ngeorge: yeah. \n\njerry: why? \n\ngeorge: why? why? 'cause he's off his rocker! that's why. \n\njerry: so, do the ross's know? \n\ngeorge: i don't know. they're all very suspicious. \n\njerry: why wouldn't they be? a rye bread doesn't just disappear. \n\ngeorge: now, because of that stupid rye bread, i gotta keep them all separated for the rest of my life. \n\njerry: bad situation. \n\ngeorge: i'll tell you what i'd like to do. i'd like to replace that rye. \n\njerry: what do you mean replace it? \n\ngeorge: you know, you go out, you get another rye. of course, it would have to be the same one from schnitzer's. you put it in the kitchen somewhere and you say ohh! there it is. \n\njerry: well, there ya go. what's so hard about that? \n\ngeorge: what's so hard about that? how am i supposed to get it in there? i can't just walk in with it. i have to get the rosses out of the apartment! \n\njerry: all right. all right. don't panic. let's just think about it. get the ross's out of the apartment. that can't be so hard. wait a minute. wait a second. wait a second! you know, kramer's been driving that hansom cab. \n\ngeorge: so? \n\njerry: well, kramer'll take them around for a while. \n\ngeorge: and it's their anniversary friday night. i could send them for a hansom cab ride. y -- you think they'd like that? \n\njerry: are you kidding? people love it. there's something about the clip clop, clip clop. they're nuts for it. \n\ngeorge: so, they go off for the ride, by the time they come back the bread is there. \n\njerry: what about susan? \n\ngeorge: she's working late that night. we're - were supposed to have dinner with everybody at eight o'clock so i'll set up the ride for seven o'clock. \n\njerry: beautiful! \n\ngeorge: you think kramer'll do it? \n\nkramer: of course i'll do it. i'd be happy to. so, all i gotta do is be there at seven? \n\ngeorge: yeah. just take 'em out and ride 'em around for about..half an hour. \n\nkramer: hey. \n\njerry: what the hell are you doing there? \n\nkramer: it's beef-a-reeno..and i got fifty cans. you want some? \n\njerry: no. no thanks. \n\nkramer: jerry, i think i bought too much at that price club. i don't have any room for it all. \n\ngeorge: hold on. hold on. wait a minute. how am i gonna get the rye bread into the apartment? \n\njerry: just put it under your shirt. \n\ngeorge: have you ever seen a schnitzer's rye? it - it's huge! \n\njerry: i'll tell ya what, i'll bring it over. i'll stop by schnitzer's, i'll come by five after seven right after they leave. \n\ngeorge: oh, this is all locking in now. it is all locking in! (laughing) \n\nelaine: hey. is that your horse outside? \n\nkramer: yeah. that's rusty. \n\ngeorge: what? he's outside? \n\nkramer: uh-huh. \n\ngeorge: aw, come on. i wanna go see him. \n\nkramer: you wanna go see him? \n\ngeorge: yeah. hey! hey! \n\nkramer: i'll show ya rusty. \n\ngeorge: hey, lainey, wanna see the horsey? \n\nelaine: well, you really did me in this time, didn't ya? first guy i like in a really long time. i mean, we're getting along, everything is just great. i mean, all right, so he doesn't do... everything, and then you have to come along with your hot and your heavy. \n\njerry: so, you think clyde told him? \n\nelaine: he wrote a song about it! \n\njerry: well, maybe it's a good thing. \n\nelaine: no! it's not a good thing! it's a bad thing! do you know what this is like? to have no control over a relationship? and - and you feel sick to your stomach all the time? do you know what that's like? \n\njerry: no, but i've read articles and i must say it, doesn't sound very pleasant. \n\nelaine: you know, one of these days, something terrible is gonna happen to you. it has to! \n\njerry: no. i'm gonna be just fine, but as far as your situation, you're seeing him tonight so talk to him about it. \n\nelaine: i can't! he's got a big showcase for record producers at his late show tonight. i don't wanna upset him. aw, what the hell, i'll upset him. \n\nmr. ross: yeah george, i gotta tell ya, this is a very nice gesture. we really appreciate it. \n\ngeorge: aw, well, you know, it's your anniversary. it's - it's the least i can do. i - i just want you guys to go out and have a good time. ha ha. so, you think we should, uh, we should get downstairs? \n\nmr. ross: oh, we got about twenty minutes. you, uh, seem a little nervous george. anything wrong? \n\ngeorge: oh, no. no. no. no. no. nothing. i'm fine. everything's fine. fine. just get a little nervous on the weekends, that's all. could i, uh, could i get a glass of water? \n\nmrs. ross: we've got water. i don't think we have any bread, but we've got water. \n\nkramer: yeah. there ya go. that's beef-a-reeno. (singing) i'm so keen-o on beef-a-reeno what a delicious cuisine-o fit for a king and queen-o! yeah. eat up. i got thirty four more cans. \n\nmr. ross: nice night for a hansom cab ride, 'ay george? \n\nmrs. ross: you know, george we haven't done anything romantic like this in ....years. \n\ngeorge: (thinking) oh my god, it's 701. what have i done? my whole plan is depending on kramer? have i learned nothing? how could i make such a stupid mistake? he'll never show up! \n\nkramer: ah ha! \n\ngeorge: there he is. right on time as usual. \n\ncounter woman: 53. \n\nmabel: 53. i'd like a marble rye, no plastic, in a bag. \n\ncounter woman: ah! you're lucky. it's our last one. \n\njerry: wait a second, that's your last marble rye? \n\ncounter woman: that's right. \n\njerry: there's none left? \n\ncounter woman: that's what i said. number 54. \n\njerry: uh, excuse me. i know this is gonna sound crazy but i - i have to have that rye. it's a - it's a long story, but a person's whole future may depend on it. \n\nmabel: well, i'm sorry, but you should have got here earlier. \n\njerry: yes. well, be that as it may, if you could just find it in yourself to give it up. \n\nmabel: you're not getting this rye -- \n\njerry: all right. all right. i'll tell ya what i'm gonna do, i will give you double what you paid for it. \n\nmabel: you're in my way! \n\nkramer: ahh! mr. ross. mrs. ross. my name is cosmo and i'll be your driver for this evening. we have blankets for your comfort. i also have hot chocolate if the mood should strike you. \n\nmrs. ross: my favorite. \n\nkramer: well, if we're all set to go, why don't you two hop aboard and let me show you a little taste of old new york...the way it once was. oh, happy anniversary. on, rusty! \n\njerry: all right. look, i'll tell ya what, i'll give you $50. now, be reasonable you cannot turn down $50 for a $6 rye. \n\nmabel: no? watch me. \n\njerry: give me that rye! \n\nmabel: stop it! \n\njerry: i want that rye, lady! \n\nmabel: help! someone help! \n\njerry: shut up, you old bag! \n\nmabel: stop thief! stop him! he's got my marble rye! \n\nelaine: i'm sorry to just show up unexpectedly like this. i know you've got your big showcase coming up later and i know how important it is, i know how hard you work for this night, but i just had to tell you that i never told jerry hot and heavy. i didn't think we were hot and heavy. i mean - i mean, who's hot and who's heavy? \n\njohn: whoa. hold on, elaine i.....i'm kinda disappointed. \n\nelaine: disappointed? \n\njohn: yeah. i mean, i was excited when clyde told me that. \n\nelaine: you were? \n\njohn: absolutely. \n\nelaine: ohh! whew! i am so relieved! \n\njohn: listen, uh, i've still got a couple of hours to kill before the next show. my place is only a few blocks from here. \n\nelaine: really? \n\njohn: and you know what? \n\nelaine: what? \n\njohn: i've been thinking about what we do and i'm thinking..of...adding a new number to my, you know, repertoire. \n\nelaine: ohh! \n\nkramer: y'aah! \n\nmrs. ross: (sniffing) what is that? \n\nmr. ross: i think it's the horse. \n\nmrs. ross: oh, god. \n\nkramer: hey, how's everything? you..you need anything? \n\nmrs. ross: this is - this is...horrible. \n\nmr. ross: excuse me,...what do you feed this animal? \n\nkramer: oh, you know, oats and hay. you know, they like that stuff. \n\nmrs. ross: i can't take this. let me out of this thing! \n\nmr. ross: turn this thing around. we've had it. we can't breathe back here! and hurry it up! \n\nkramer: rusty! rusty! \n\ngeorge: (whistling) \n\nkramer: whoa! \n\ngeorge: wha - what happened? what are you doing back so soon? \n\nmr. ross: ask rusty. \n\nkramer: i'm terribly sorry, mr. ross. one never knows how the gastrointestinal workings of the equine are going to function. \n\nmrs. ross: thanks for nothing! come on, george. let's go upstairs. \n\ngeorge: what the hell happened? \n\nkramer: the horse is gassy. must have been the beef-a-reeno. \n\ngeorge: beef-a-reeno? you fed the horse beef-a-reeno?! \n\nkramer: well, i overbought! \n\nmr. ross: george. \n\ngeorge: (muttering) \n\nmusic guy: what's going on? where is he? \n\nmanager: uh...he'll be here soon. \n\nmusic guy: i'll give him ten more minutes. i'm not gonna stay here all night. \n\njerry: how much did you give him? \n\nkramer: just a can. but he really liked it, though. \n\ngeorge: jerry! up here! \n\njerry: yeah. hey, what do you want me to do with this? \n\ngeorge: i can't come out. they're standing right by the door. throw it up! \n\njerry: really? \n\ngeorge: yeah. yeah. it's the only way. come on. what are you, kidding me? \n\njerry: will you get this horse outta here. he's killing me. i can't get any oxygen. \n\nkramer: i don't wanna go back on there! \n\ngeorge: come on! \n\njerry: (grunting as he throws bread into the air) \n\ngeorge: (grunting) hey! hey, wait a second. i got an idea. \n\nelaine: no. no. don't be silly, john, you were very good. you just don't have to try so hard. good luck, honey. \n\ngeorge: come on! come on! \n\njerry: wait a second! i never baited a hook with a rye before. your hook is too small. this is for, like, a muffin. all right. take it away. \n\ngeorge: come on. come on. come on. yeah. yeah. (grunting) \n\nmanager: ladies and gentlemen, john germaine. \n\njerry: how did you lock your keys in the car? \n\ngeorge: how? cause im an idiot. \n\njerry: so why don't you get a locksmith? \n\ngeorge: i was going to, but then i found out that the auto club has this free locksmith service, so i signed up. just waiting for the membership to kick in. \n\njerry: how long has your car been sitting in the yankee parking lot? \n\ngeorge: i don't know, about three days. \n\nkramer: hello boys. \n\njerry: y- you're not playin' golf? \n\nkramer: yes, indeed. the calendar says winter, but he gods of spring are out. \n\ngeorge: are the courses open? \n\nkramer: no, no........i'm sneaking in with stan the caddy, we've been going through the caddies entrance. \n\ngeorge: huh, no kidding? \n\nkramer: yeah, and i'll tell ya something else. stan's advice has transformed my game. he's never wrong. oh, he thinks eventually i'll have a shot at making it big on the senior tour. (sucks in air through tight lips) oh, that's my dream, jerry. \n\njerry: really, you're getting that good? \n\nkramer: oh, i'm the real deal. \n\nkramer: yeah, here, stan, in here! \n\nkramer: there he is, yeah - jerry, george, *this* is stan the caddy. \n\ngeorge: how ya doin'? \n\njerry: hi. \n\nstan: nice to meet you. ready to hit the links, kramer? \n\nkramer: oh yeah, you betcha. \n\nstan: what are those, ah, cotton pants? \n\nkramer: yeah, yeah...why, is it too cold out? \n\nstan: here's what you do you bring a lightweight jacket, that way the sun comes out, you play the jacket off the sweater. \n\nkramer: ah, that makes sense, that's a good call, stan. alright, we'll see you guys later, huh? \n\ngeorge: yeah. \n\njerry: yeah, we'll see ya. \n\ngeorge & jerry: (together -- with arms extended -- palms upwards) stan the caddy. \n\nsue ellen: elaine? \n\nsue ellen: hi! \n\nelaine (thinking to herself): oh, great. it's the bra-less wonder. who does she think she's kidding? look at her, she's totally out of control. \n\nsue ellen: i was thinking that woman looks like elaine benes. \n\nelaine: yeah, ha ha ha. what have you been up to? \n\nsue ellen: i've just been hanging out. \n\nelaine (nodding): i see. \n\nsue ellen: hmm. oh, listen! i'm having a birthday party tomorrow evening, i'd love it if you came by. \n\nelaine: oh tomorrow...? \n\nsue ellen: um-hm. \n\nelaine: i don't know if i can. \n\nsue ellen: nooo? \n\nelaine: yeah, i'm just really, really busy. \n\nsue ellen: oh, that's too bad. \n\nelaine: yeah, yeah. \n\nsue ellen: well, i hope you can get me a gift anyway.........ha ha ha. \n\nelaine: ah ha ha ha ha ha ha ha ha ha. \n\nwilhelm: george!? \n\ngeorge: (he drops a paper airplane he was holding) mr. wilhelm! \n\nwilhelm: i'm sorry to interrupt you, but mr. steinbrenner and i really want you to know we appreciate all the hours you've been putting in oh, and, ah, confidentially, sozonkel, our assistant to the general manger, hasn't really been working out. and the boss thinks you're the man for the job! so, keep it under your hat! \n\ngeorge: assistant to the general manager!! do you know what means?!? he'd could be askin' my advice on trades! trades, jerry, i'm a heartbeat away! \n\njerry: that's a hell of an organization they're running up there. i can't understand why they haven't won a pennant in 15 years. \n\ngeorge: and, it is all because of that car \n\ngeorge: see, steinbrenner is like the first guy in, at the crack of dawn. he sees my car, he figures i'm the first guy in \n\ngeorge: then, the last person to leave is wilhelm. he sees my car, he figures i'm burning the midnight oil. between the two of them, they think i'm working an 18 hour day! (he stands there with his hands on his hips, a wide grin - laughing.) \n\njerry: locking your keys in your car is the best career move you ever made. \n\nelaine: hey. \n\njerry: hey. \n\ngeorge: hey, how ya doing?!? \n\nelaine: better, now. \n\njerry: yeah, what happened? \n\nelaine: you know sue ellen mishke? \n\njerry: sue ellen mishke? \n\nelaine: yeah, the woman i grew up with in maryland, she moved here last year... \n\njerry: sounds familiar. \n\nelaine: the heiress to the o'henry candy bar fortune-- \n\njerry: oh, yeah, you mentioned her. \n\nelaine: yes. yes i ran into her today. this woman has never, not once, ever, as long as i have known her, worn a bra. \n\ngeorge: ah, that is disgusting-- \n\njerry: that is just shameless, i don't know, there's no-- \n\ngeorge: shes a pig. the woman's a pig, what wrong with her-- \n\njerry: it's wrong, it's rude, and it's incorrect. \n\ngeorge: it's disgusting-- \n\nelaine (getting up to leave): alright, there's no--- \n\ngeorge: come on! come-on. \n\njerry: we're only kidding! \n\nelaine: you don't understand. see, she hasn't changed at all. she stole my boyfriend when i was in high school. (flashback sequence)i was at this party, and i was dating this *really* cute guy, his name was tom cosley, by the way, and she goes walking by, in this little floozy outfit, and he follows her, right out the door! \n\njerry (excited): she's your lex luthor! \n\nelaine: her birthday's comin' up, see, so i decided to get her a little present. \n\njerry: what are you going to get her? \n\nelaine: a very traditional, a very supportive, brazier. \n\njerry: there's nothing subtle about that. \n\ngeorge: no, no, she might just think its a gift. \n\njerry: have i ever bought you a jock strap as a gift? \n\ngeorge: ahh, hey-ho. ahhhhh (exhales) \n\njerry: what the hell are you doing here, aren't you supposed to be at work?!? \n\ngeorge: yeah, well i'm thinking about getting out of town with susan for a few days....her parents rebuilt the cabin! \n\njerry: so, you're just taking off from work? \n\ngeorge: yeah well, they won't know. i got the car there. \n\njerry: do you think this is such a good idea, with you being on the verge of this big promotion? \n\ngeorge: my presence, in that office, can only hurt my chances. \n\nreceptionist: (on intercom) sue ellen mishke to see you. \n\nelaine: sue ellen mishke? ah, alright, send her in. \n\nsue ellen: hi elaine. \n\nelaine: hellllloo. \n\nsue ellen: i happened to be in the neighborhood, so i thought i'd stop in, and thank you for your lovely gift. \n\nelaine: ohhhhh. you're....welcome. \n\nsue ellen: is anything wrong? \n\nelaine: well, sue ellen, it's a, it's not a top, it's a bra. \n\nsue ellen: oh, i know. thanks again. \n\ngeorge: this is the life! isn't it, huh, kid? \n\nsusan: wanna check out a swap meet? \n\ngeorge: yeah, maybe. (snifs)where'd you get that? \n\nsusan: oh, it was on the windshield of the car when we came out of that rest stop. \n\njerry : yello. \n\ngeorge: (on a pay phone) hey, hey, it's george, i need ya to do me a favor. \n\njerry: what's goin' on? \n\ngeorge: i just remembered, th-th-there's this chinese restaurant out near yankee stadium, that puts flyers on all the cars. \n\njerry: yeah, so? \n\ngeorge: alright, this is what ya gotta do i need ya to go out to the parking lot at yankee stadium, take the flyers off my car. \n\njerry: you know last time you had me throwin' a rye bread up three floors to you, now you want me to go up to the bronx, take flyers off your car, where does it end?!? \n\ngeorge: alright, fine.i'll drive the 3 hours each way, 6 hours all together, and take 'em off myself!! \n\njerry: alright, alright, i'll do it!! \n\nkramer: oowe (kramer noise -- hes eating something) \n\njerry: hey, what are ya up to? \n\nkramer: nothin'. \n\njerry: you wanna go with me up to (clap) the bronx and see if there's any flyers on george's car. \n\nkramer (excited): sure! \n\njerry: i guess i coulda said just about anything there, couldn't i? (throws coat over his right shoulder) \n\nkramer: yep. \n\njerry: oh, man, look at this mess! you know what's gonna happen if they see this? \n\nkramer: wheehh \n\njerry: what are we gonna do? \n\nkramer: i don't know. \n\njerry: well, we gotta get it washed (pulls off a few flyers)....ah, the keys are locked inside! \n\nkramer: wait a second.... \n\njerry: what are ya gonna do? \n\nkramer: i'll just snag the lock with this. auhh here we go... \n\njerry: yeah, this quite a life i lead here, huh? \n\n[leaving the gentle touch car wash: jerry and kramer driving george's car. kramer is behind the wheel.] \n\nkramer: well, george has gotta be happy about this. \n\njerry (indifferent): yeah, yeah, yeah... \n\njerry: oh my god, kramer, is that woman just wearing a bra? \n\nkramer: oh, mama. \n\njerry: kramer!!! (jerry points to the lamp post they are about to crash into) \n\nelaine: my god, are you okay? \n\nkramer: well i got a cut on my head and i banged my shoulder. (he has a large band-aid on his forehead) \n\njerry: i guess i have to bring his car back up to the stadium, if it can make it. \n\nelaine: so how did this happen? \n\njerry: he was starin' at some woman! \n\nkramer: well i couldn't help it, you saw what she was wearing. \n\nelaine: what woman? \n\njerry: there was this beautiful woman walking down the street wearing *just* a bra. i can't get that image out of my mind. \n\nelaine: oh...my god. \n\njerry: what? \n\nelaine: was it a tall woman, in a black blazer? \n\njerry: yeah! \n\nelaine: ohhh! that's sue ellen mishke! \n\njerry: sue ellen mishke? \n\nelaine: that's the bra i gave here, she's wearing it as a top! the woman is walking around in broad daylight with nothing but a bra on, she's a menace to society. \n\nkramer: hey you know, my arm really hurts. i wonder if its gonna affect my golf swing. \n\nkramer: oohh. \n\nstan (out of breath): i got your message, how's the shoulder? \n\nkramer: yeah, it's my left arm, i can't swing it! \n\nstan: oh, no.not the left arm! \n\nkramer: well what happens if i can't play like i was? what about the tour, and all my dreams? \n\nelaine: oh! i got it! let's sue her! \n\nkramer: sue her? \n\nelaine: yeah, she's loaded. she's the heiress to the o'henry candy bar fortune. \n\nkramer: ah, no, no, no, i can't. i learned my lesson from that coffee company. \n\nelaine: kramer, listen to me. listen! this is a once in a lifetime opportunity. your dreams have been shattered, somebody's got to be held accountable. come on, we'll take for every penny she's got! \n\nkramer: what do you think, stan? \n\nstan: let's go for the green! you know a good lawyer? \n\njackie: so you're driving in the car, you're with your friend, minding your own business? \n\nkramer: yeah. \n\njackie: then what happened? \n\nkramer: well then we saw this woman, and she was wearing a bra with no top. \n\njackie: no top? she didn't have a top on? \n\nkramer: yeah.so i got distracted and i crashed the car. \n\njackie: well how would you describe this woman? would you say she was an attractive woman? \n\nkramer: oh, yeah. \n\njackie: so we got an attractive woman, wearing a bra, no top, walkin' around in broad daylight. she's flouting society's conventions! \n\nkramer: she was flouting. \n\njackie: that's totally inappropriate. it's lewd, lascivious, salacious, outrageous! \n\nkramer: it was outrageous. and she's the heir to the o'henry candy bar fortune. \n\njackie: could you repeat that? \n\nkramer: i said she's the heir to the o'henry candy bar fortune. \n\njackie: o'henry? that's one of our top-selling candy bars. it's got chocolate, peanuts, nougat, it's delicious, scrumptious, outstanding! have you been to a doctor? \n\nkramer: no. \n\njackie (speaking to the intercom): susie, call dr. bison, set up an appointment for mr. kramer, tell him it's for me. \n\nkramer: so whadda ya think, jackie? i mean we got a case? \n\njackie: like taking candy from a baby. \n\ngeorge: i think i got it. how 'bout this? how 'bout this? we trade jim leyritz and bernie williams, for barry bonds, huh? whadda ya think? that way i have griffey and bonds, in the same outfield! now you got a team! ha ha ha. \n\nsusan: i don't know, george. i'm still worried about this car thing. \n\ngeorge: oh, would ya stop worrying? \n\nsusan: well, what about the flyers? \n\ngeorge: jerry took the flyers off the car, i got the whole thing covered. \n\nsteinbrenner: come in! \n\nsteinbrenner: ah, wilhelm. \n\nwilhelm: mr. steinbrenner, i am very concerned about george costanza. \n\nsteinbrenner: how 'bout a 'good morning'? \n\nwilhelm: oh yes sir, good morning, good morning, sir. \n\nsteinbrenner: good morning to you, wilhelm. \n\nwilhelm: uh-a anyway, his car's in the parking lot, the front end is bashed in, and there's blood in the car, and we can't find him anywhere. obviously he was in some sort of a terrible car accident, and trooper that he is, he tried to make it into work, sir. \n\nsteinbrenner: alright, wilhelm, listen to me. i want the stadium scoured. he could be bleeding to death in the bullpen. \n\nwilhelm: yes sir. (he starts backing up to the door.) \n\nsteinbrenner: put everyone on alert, check all the area hospitals, clinics, shelters, we've gotta find that kid. \n\nwilhelm: yes sir, yes sir. (opening the door) \n\nsteinbrenner: we must find george. \n\nwilhelm: yes sir. \n\nsteinbrenner: find him, wilhelm! \n\nwilhelm: (from behind the closed door in the hallway)yes sir. \n\nsue ellen: excuse me, do you happen to know the gentleman across the hall? \n\njerry (mesmerized): yes, yes, i do. \n\nsue ellen: do you happen to know if he'll be back anytime soon? \n\njerry: no, i don't. \n\nsue ellen: oh... \n\njerry: is there, something i can help you with? \n\nsue ellen: no, i really just needed to speak with him. (exhales) \n\njerry: well, you can wait for him in here if you like. \n\nsue ellen: oh, well maybe i will. \n\nsue ellen: if you don't mind. \n\njerry: no, no, not at all. \n\nsue ellen: thanks. \n\njerry: i'm jerry seinfeld. \n\nsteinbrenner: what is with these people, all day long. come in, come in. \n\nwilhelm: ah, mr. steinbrenner, you know, w-we've searched everywhere, th-there's no sign of him. n-n-not even anyone who remotely fits his description, sir. \n\nsteinbrenner: oh my god. do you know what this means, wilhelm? \n\nwilhelm: what, sir? \n\nsteinbrenner: he's dead! ca-costanza's dead! \n\nwilhelm: no no no sir. well, you see, i don't think-- \n\nsteinbrenner: oh, as quickly as he came here, he's gone. the poor little guy! easy. easy, big stein, get it together. ok, wilhelm. \n\nwilhelm: yessir? \n\nsteinbrenner: find out where his parents live. \n\nwilhelm: parents. \n\nsteinbrenner: i'm gonna personally notify them. ...and, ah, line up some candidates to fill that assistant to the general manager position \n\nwilhelm: yessir. (he starts backing up to the door.) \n\nsteinbrenner: we can't grieve forever! \n\nwilhelm: right. yessir. \n\nsteinbrenner: we gotta get back to business! \n\nwilhelm: yes sir! (closes the door) \n\nsteinbrenner: back to business wilhelm! \n\nwilhelm: (from behind the closed door in the hallway) yes sir! \n\nkramer: well, buddy, (claps) he's taking the case! jackie chiles is right on it! right on it, he's all over it! \n\njerry (not happy): oh, really? \n\nkramer: why, wh-wh-what's wrong, come on? \n\njerry: i don't know \n\nkramer: uuh- \n\njerry: so the woman was walking around in a bra \n\nkramer: yeah- \n\njerry: i mean it's no big deal. you're still drivin'. you should have been watching the road. \n\nkramer: well, your attitude has certainly changed. \n\njerry: i don't think my attitude has changed. \n\nkramer: now listen, jerry, i'm gonna need you to testify. \n\njerry: (quietly, yet in a high and whiney tone) well, i don't know if i.... \n\nkramer: jerry, jerry, you gotta testify! \n\njerry: kramer i don't think i can-- \n\nkramer: listen, this is a million dollars we're talkin' about, jerry, now this is the big league, the big time, now i need you on my team, jerry! \n\njerry: well, i'm just not sure how i feel about it, kramer. \n\nkramer: alright what's gotten into you, what's happened?!? \n\njerry: nothing's happened. \n\nkramer (in disgust): goohhhhck. \n\nkramer (picking up the wrapper): ohhhh, what's this? \n\njerry: oh, no, no, no, wait a second, wait a second th-th-that-- \n\nkramer: oh i see....yessss. little miss candy bar paid a visit, didn't she? \n\njerry: kramer, it is not what you think. \n\nkramer: ah, ah, ahhhhh! i know what i think. i think you're gaga over this dame. she's twisted you around her little finger, and now, you're willing to sell me, and elaine, and whoever else you have to, right down the river. \n\njerry: and what about yooou?!? tryin' to bilk an innocent bystander out of a family fortune, built on sweat and toil, manufacturing quality o'henry candy bars, for honest, hard-working americans! \n\nkramer: you're just out for sex!! \n\njerry: you're just out for money!! \n\nkramer and jerry (together): ah, ah, ahhhhh!!!!!! \n\nsteinbrenner: mrs. costanza? \n\nestelle (smiling): yesss? \n\nsteinbrenner: my name is george steinbrenner, i'm afraid i have some very sad new about your son. \n\nestelle: (gasps) \n\nestelle (crying): i can't believe it, he was so young. how could this have happened? \n\nsteinbrenner: well, he'd been logging some pretty heavy hours, first one in in the morning, last one to leave at night. that kid was a human dynamo. \n\nestelle: are you sure you're talking about george? \n\nsteinbrenner: you are mr. and mrs. costanza? \n\nfrank (yelling): what the hell did you trade jay buener for?!? he had 30 home runs, and over 100 rbis last year. he's got a rocket for an arm - - you don't know what the hell you're doin'!! \n\nsteinbrenner: well, buhner was a good prospect, no question about it. but my baseball people love ken phelps' bat. they kept saying 'ken phelps, ken phelps'. \n\njerrys outgoing message: im not here, leave a message. \n\nfrank (from the answering machine): jerry, it's frank costanza, mr. steinbrenners here, george is dead, call me back! \n\njerry (answering phone): hello? \n\ngeorge (on a pay phone): hey, it's george. \n\njerry: where have you been?!? \n\ngeorge: what? \n\njerry: i just got the most bizarre message from you father, steinbrenner is at you house, they think you're dead! \n\ngeorge: dead? \n\njerry: yeah, and we had an accident with your car, it's a, its a little crumpled. \n\ngeorge: my cars a little crumpled?!? \n\njerry: yeah, yeah, i didn't know what to do so i put it back at the stadium. oh, wait a second, wait a second, they saw the car, they saw the blood, they couldn't find ya, that's why steinbrenner thinks you're dead! \n\ngeorge: allright, i gotta head back right away, i'll-ill -- i gotta figure something out here. \n\njerry: well you gotta call your parents. \n\ngeorge: i can't, steinbrenner might still be there! \n\njerry: aren't you gonna tell your parents you're still alive? \n\ngeorge: oouuoo! they could use the break! \n\npeterman (holding up a bra): elaine, do you see this? do you see what i'm holding in my hands? \n\nelaine: yeah, it's a bra. \n\npeterman: i saw a woman in our hallway wearing one of these as a top. (sits on the corner of the desk)what exquisite beauty, i ran down the hallway to talk to her, but the elevator door closed. it was not to be.perhaps our paths will cross again some day. \n\nelaine: w-what is this all about? \n\npeterman: i wanna market this item as a new direction in women's fashion. \n\nelaine: oh-oh, but- \n\npeterman: we're gonna sell this as a top. here's the angle zelda fitzgerald, aaaand, somebody in the 20s, wearing this at wild parties, driving all the men crazy (tosses the bra on elaines desk) have it on my desk by the end of the week. \n\nsteinbrenner: come in, come in. \n\ngeorge: mr. steinbrenner-- \n\nsteinbrenner (shocked): ahhh, ahhh! ah, ah ah! is it you? \n\ngeorge: yeah, it's me sir. it's been a harrowing few days. uuh,after the car accident, i-i crawled into a ditch, and managed to survive on, grubs and puddle water, until a kindly old gentleman picked me up. \n\nsteinbrenner: grubs, huh? gotta admit, i never tasted one of those. \n\ngeorge: anyway, as i was lying in the puddle, i-i think i may have found a way for us to get bonds and griffey, and we wouldn't have to give up that much. \n\nsteinbrenner: well, don't tell it to me george, tell it to the new assistant to the general manager. \n\ngeorge: i didn't get the job? \n\nsteinbrenner: well, once you were dead, we couldn't just sit on our hands. we had to make a move... \n\nsteinbrenner: but, you still have your old job. of course, we'll have to dock you for the time you missed. we're running a ball club here. if i give special treatment to you, everyone will want it. next thing you know its chaos! and i can tell you this, (george closes the door) chaos does not work for the new york yankees! not as long as i'm running the show! \n\njackie: so it was the meeting on the street that prompted you to buy the bra for miss mishke, would you say that was correct? \n\nelaine (on the witness stand): yes...ummm, (leans into the microphone, pulling it closer it squeaks) yes, that's correct. \n\njackie: and you have also brought with you, another bra, (goes over to the table and pulls a bra out of a bag) exactly like, the one that she so flagrantly exhibited herself in! \n\nelaine: yes, that's correct. \n\njackie: uh, what was you golf score, the last round you played uh, before you shoulder was injured? \n\nkramer: three under par. \n\njackie (impressed): oooohhhh, three under par, hmmthat's what the professionals shoot, isn't it? \n\nkramer: well if they're lucky. \n\njackie: well would you tell this jury exactly what you saw at the corner of 83rd street and columbus? \n\njerry (hesitant): i...don't remember. \n\njackie: well, did you, or did you not, see the defendant, wearing the bra? \n\njerry: i don't know. maybe. \n\njackie: mr. seinfeld, i might remind you that you are under oath. now i ask you again, did you or did you not, see this woman wearing a bra?!? \n\njerry: ....alright, alright, i saw her! \n\njerry: and she was beautiful in that bra! i'm crazy about her! i love her whole free swinging, free wheeling attitude! \n\njudge (banging his gavel): this court will come to order! \n\njackie: no further questions, your honor. \n\njudge: you may step down. \n\njackie: well kramer, i think we got this wrapped up. \n\nkramer: yeah, yeah...what's your read, stan? \n\nstan: you're close, you're on the green. you just have to go for the cup. \n\nkramer: what do you mean? \n\nstan: have her try on the bra, see if it fits. \n\njackie: no, no, no, no! \n\nkramer: do it, jackie. stan's the man. \n\njackie: stan? who the hell is stan? \n\nkramer: he's my caddy. \n\njackie: you're caddy?!? this is a big mistake! \n\nkramer: gu-gu- cada- \n\njackie: your honor, we request at this time, that miss mishke...try on the bra. \n\njudge: (bangs the gavel twice)this court will come to order! go ahead miss mishke, try it on. \n\nsue ellen: uhhh-ah, it doesn't fit...i, i-i can't put it on. \n\njackie (to kramer and stan): damn fools! look at that! we got nothin' now, nothin'! i've been practicing law for 25 years, you're listenin' to a caddy! \n\nkramer: ok, ok- \n\njackie : this is a public humiliation! you can't let the defendant, have control of the key piece of evidence. plus, she's trying it on over a leotard, of course a bra's not gonna fit on over a leotard. a bras gotta fit right up against a person's skin, like a glove! \n\nwoman #1: oh, hey, elaine, how 'bout some lunch? \n\nelaine: oh, no, i-i don't think so. \n\nwoman #2: great job on the gatzby swing top. it's a winner. \n\nelaine: yeah, yeah, thanks. \n\nwoman #1: are you sure you don't wanna go? we have reservations. \n\nelaine: oh, i don't think you'll have any trouble gettin' a table. \n\nwoman #1: ciao. \n\nwoman #2: ba-bye. \n\nelaine: (awed) oh, look at this! \n\njerry: boy, i miss the days they made toys that could kill a kid. \n\nelaine: (excited) oh, cool! look at that! \n\njerry: (admiring christie) yeah, i'm right there with ya. \n\nelaine: (excited) that is a schwinn stingray! and it's the girl's model! oh, i always wanted one of these when i was little. \n\nelaine: what d'you think jerry? jerry? \n\njerry: (tearing himself away from christie) huh? \n\nelaine: what d'you think? \n\njerry: oh yeah, be great for your paper route. \n\nelaine: (laughs) i love it. i'm getting it. \n\nelaine: can you help me get it down, jer? jerry. \n\nchristie: i think your friend needs some help over there. \n\njerry: you know, the only way to really help her is to just let her be. \n\nelaine: hey! \n\nsusan: a little baby girl? \n\nken: doctor says it could be any day now. \n\ngeorge: (through mouthful of food) so, carrie, you and susan are cousins. so your baby daughter is gonna be susan's second cousin, right? so what does that make me? \n\ncarrie: doesn't make you anything. \n\ngeorge: (jokingly) well, so, legally, i could marry your daughter. \n\nsusan: so, have you picked out a name yet? \n\ncarrie: well, we've narrowed it down to a few. we like kimberley. \n\nsusan: aww. \n\ngeorge: (negative) hu-ho, boy. \n\nken: you don't like kimberley? \n\ngeorge: ech. what else you got? \n\nken: how about joan? \n\ngeorge: aw c'mon, i'm eating here. \n\nsusan: (warning) george! \n\ncarrie: pamela? \n\ngeorge: pamela?! awright, i tell you what. you look like nice people, i'm gonna help you out. you want a beautiful name? soda. \n\nken: what? \n\ngeorge: soda. s-o-d-a. soda. \n\ncarrie: i don't know, it sounds a little strange. \n\ngeorge: all names sound strange the first time you hear 'em. what, you telling me people loved the name blanche the first time they heard it? \n\nken: yeah, but uh... soda? \n\ngeorge: yeah, that's right. it's working. \n\ncarrie: we'll put it on the list. \n\ngeorge: i solve problems. that's just what i do. \n\nkramer: (sniffing a slice of meat) yeah, oh boy. mmm, that's good. \n\njerry: you're really going to town with that turkey there. \n\nkramer: oh yeah, i got a big appetite. \n\nkramer: uhh, jerry, you got no mustard, huh. \n\njerry: it's on the door. \n\nkramer: (examining a yellow squeeze bottle) what, this yellow stuff? no, i said mustard, jerry. dijon. \n\nkramer: ah, 's no good. \n\nkramer: no. that's bush league. \n\njerry: hey, hey. wha... wait... what, you're gonna leave it there? that's like half a pound of turkey! \n\nkramer: no, no, i can't eat that. you can't eat a sandwich without dijon. \n\njerry: (sarcasm) yeah, you're right. i really should keep more of your favourites on hand. \n\nkramer: hey, hey, hey. i'm getting a vibe here. what, are you unhappy with our arrangement? \n\njerry: what arrangement? \n\nkramer: well, i was under the impression that i could take anything i wanted from your fridge, and you could take whatever you want from mine. \n\njerry: (sarcasm) yeah, well, lemme know when you get something in there and i will. \n\nkramer: oh, hey. \n\nelaine: hey. \n\njerry: hey. what's with your neck? \n\nelaine: still killing me from having to get that bike off the wall. (pointedly) by myself. \n\njerry: well, if it's any consolation, i did get her number. \n\nelaine: (sitting) ah, i think i really strained it. ow. \n\njerry: aw, i doubt you strained it. maybe you pulled it. \n\nelaine: ach, maybe. \n\njerry: did you twist it? you coulda twisted it. \n\nelaine: i don't know. \n\njerry: did you wrench it? did you jam it? maybe you squeezed it. turned it... \n\n<img src=http: //tinyurl.com/2b9c width=200 > \n\nelaine: (patience exhausted) you know what, why don't you just shut the hell up? \n\njerry: awright. \n\nelaine: god. man, this is killing me. right now, i would give that bike to the first person who could make this pain go away. \n\nkramer: aw, you really hurting, huh? \n\nelaine: oh, kramer, it's just awful. \n\nkramer: uh hmm. well, your arterioles have constricted. \n\nkramer: alright, lean forward, relax. \n\nelaine: (worried) what? what? \n\nkramer: encounter shiatsu. \n\nelaine: wait a minute. kramer, you know what you're doing here? \n\nkramer: (continuing to work) ohh yeah. a wise man once taught me the healing power of the body's natural pressure points. \n\nelaine: ah hah. \n\nkramer: (to jerry) he sells tee-shirts outside the world trade centre. \n\nelaine: (seriously worried) wha...? \n\nkramer: he's a genius. here we go... \n\nkramer: from pain, will come pleasure. \n\nkramer: uh? voila. \n\nelaine: (pleasantly surprised) oh my god! \n\nkramer: yeah. \n\nelaine: wow! that is unbelievable. the pain is totally gone! \n\njerry: what's even more amazing is his formal training is in pediatrics. \n\nkramer: awright, my work is done here. \n\nelaine: (big smile) oh man! kramer, thank you! \n\nkramer: (closing the door) yeah, you can send that bike over any time. \n\nelaine: (after kramer) what? (to jerry) what, what is he talking about? \n\njerry: i dunno. (realising) oh, 'cos you said you'd give the bike to anyone who fixes your neck. \n\nelaine: you really think he wants the bike? \n\njerry: oh yeah. \n\nelaine: it took him like ten seconds! \n\njerry: well, that's the most he's worked in the last four months. \n\ngeorge: i think they really went for that soda. \n\nsusan: what, are you crazy? they hated it. they were just humouring you. \n\ngeorge: ah, alright. believe me, that kid's gonna be called soda. \n\nsusan: i can tell you, i would never name my child soda. \n\ngeorge: oh, no no no. course not. i got a great name for our kids. a real original. you wanna hear what it is? huh, you ready? \n\nsusan: yeah. \n\nsusan: what is that? sign language? \n\ngeorge: no, seven. \n\nsusan: seven costanza? you're serious? \n\ngeorge: yeah. it's a beautiful name for a boy or a girl... \n\ngeorge: ...especially a girl. or a boy. \n\nsusan: i don't think so. \n\ngeorge: what, you don't like the name? \n\nsusan: it's not a name. it's a number. \n\ngeorge: i know. it's mickey mantle's number. so not only is it an all around beautiful name, it is also a living tribute. \n\nsusan: it's awful. i hate it! \n\ngeorge: (angry) well, that's the name! \n\nsusan: (also angry) oh no it is not! no child of mine is ever going to be named seven! \n\ngeorge: (yelling) awright, let's just stay calm here! don't get all crazy on me! \n\njerry: seven? yeah, i guess i could see it. seven. seven periods of school, seven beatings a day. roughly seven stitches a beating, and eventually seven years to life. yeah, you're doing that child quite a service. \n\ngeorge: (adamant) yes i am. i defy you to come up with a better name than seven. \n\njerry: awright, let's see. how about mug? (picks up the mug) mug costanza, that's original. (he turns and sees another item) or uh, ketchup? pretty name for a girl. \n\ngeorge: alright, you having a good time there? \n\njerry: i got fifty right here in the cupboard. how about bisquik? pimento. gherkin. sauce. maxwell house. \n\ngeorge: (shouts) awright already!! this is a very key issue with me, jerry. i had this name for a long time. \n\njerry: oh, i forgot to call christie. \n\ngeorge: christie? that's the one you met in the antique store? \n\njerry: yeah, she had this great black and white dress, with a scoop neck. she looked like some kinda superhero. \n\ngeorge: and you met her in an antique store! i don't know how you do it! \n\njerry: (smug) i'm not engaged. \n\nkramer: ah, i got it. \n\njerry: got what? \n\nkramer: (putting the items on the counter) got the answer, jerry. refrigerator problem, is solved. \n\njerry: oh, it's no problem. you can take whatever you want. \n\nkramer: oh, i will. but now, i'm accountable. alright, i take what i want. \n\nkramer: here. i write it down. (he writes) \"one cupcake.\" and then i put it in the bowl. (he tears off the sheet, crumples it and drops it into the bowl) there. very simple. \n\njerry: sort of a mooching inventory. \n\nkramer: no, no. not mooching. 'cos at the end of the week, you add 'em all up, and you give me the bill. \n\njerry: alright. \n\nkramer: alright, now look i gotta run some errands, so look. when elaine comes by with that bike, you hang onto it for me, alright? \n\njerry: kramer, i don't know if you're getting that bike. \n\nkramer: yes i am. we had a verbal contract. if we can't take each other at our word, all is lost. \n\nkramer: (waving at the bowl) oh yeah, yeah. put that on my tab. \n\njerry: well this is it. the food is atrocious, but the busboys are the best in the city. \n\nmaitre d': may i take your coat, miss? \n\nchristie: yes, thank you. \n\ngeorge: the same outfit? \n\njerry: the exact same outfit. \n\ngeorge: how many days was it between encounters. \n\njerry: three. \n\ngeorge: three days. well, maybe you caught her on the cusp of a new wash cycle. you know, she did laundry the day after she met you, everything got clean and she started all over again. \n\njerry: possibly, but then shouldn't the outfit only reappear again at the end of the cycle? \n\ngeorge: maybe she moved it up in the rotation. \n\njerry: why? it's our first date, she's already in reruns? \n\ngeorge: very curious. \n\njerry: indeed. \n\ngeorge: you know, einstein wore the exact same outfit every day. \n\njerry: well, if she splits the atom, i'll let it slide. \n\ngeorge: (picking up his coat) awright, i'm heading home. \n\njerry: hey, did susan change her mind about the name? \n\ngeorge: (standing) not yet, but she's weakening. \n\njerry: you know, george, just because your life is destroyed, don't destroy someone else's. \n\ngeorge: it's mickey mantle, jerry. my idol. \n\njerry: how about 'mickey'? \n\ngeorge: 'mickey'? (incredulous) 'mickey'! \n\nkramer: hey buddy. \n\njerry: (holding up a can) hey, is this your half a can of soda in the fridge? \n\nkramer: no, that's yours. my half is gone. \n\njerry: what? \n\nkramer: yeah, i put my half a can here on the tab. why, what's your beef? \n\njerry: you cannot buy half a can of soda. \n\nkramer: well, why not. \n\njerry: well, i don't wanna get into the whole physics of carbonation with you here, but you know the sound a can makes when you open it? \n\nkramer: yeah. \n\njerry: that is the sound of you buying a whole can. and the same goes for this, okay... \n\njerry: ...when you pierce the skin of a piece of fruit, you've bought the whole fruit. not a third of an apple, not a half of a banana... \n\nkramer: alright. \n\njerry: ...you bite it, you bought it. \n\nkramer: alright, alright. i'll make the necessary adjustments, alright. \n\njerry: thank you. \n\nkramer: yeah. \n\nelaine: hey. \n\nkramer: oh. (pointedly) so, how's the neck? nice and loose? \n\nelaine: lookit, kramer, you are not getting this bike. i don't even know why you ant it. (laughingly) i mean, it's a girl's bike. \n\nkramer: (deadly serious) it's a verbal contract. we had a deal. \n\nelaine: no we didn't. you take these things too literally. it's like saying, you're hungry enough to eat a horse. \n\nkramer: well, my friend jay reimenschneider eats horse all the time. he gets it from his butcher. \n\nelaine: this is not the point. (emphatic) the point is, you just can't have the bike. \n\nkramer: boy, i am really surprised at you. (opening the door) you are the last person i figured would do something like this. i mean, george, yeah, i can see that. even jerry. but not you, elaine... \n\nkramer: i always put you up here... \n\nkramer: ...they're over here. now you're... aww-whawww. \n\nelaine: (grudging) alright. \n\nkramer: (points) digidi. \n\ngeorge: aw c'mon. it's a fantastic name. it's a real original, nobody else is gonna have it and i absolutely love it. \n\nsusan: well, i dunno how original it's gonna be any more. \n\ngeorge: why not? \n\nsusan: well i was telling carrie about our argument, and when i told them the name, they just loved it. \n\ngeorge: so, what're you saying? \n\nsusan: they're gonna name their baby seven. \n\ngeorge: (disbelief) what?! they're stealing the name?! that's my name, i made it up! \n\nsusan: i can't believe that they're using it. \n\ngeorge: (anger) well now it's not gonna be original! it's gonna lose all its cachet! \n\nsusan: i dunno how much cachet it had to begin with. \n\ngeorge: (rage) oh, it's got cachet, baby! it's got cachet up the yin-yang! \n\nelaine: (in pain) oh god! oh, god. (bitter) kramer! \n\nman: watch your step. \n\nelaine: (pain) oh, ah. (bitter) stupid kramer. \n\nchristie: excuse me. elaine? \n\nelaine: huh? \n\nchristie: over here. i thought that was you. you're jerry's friend, right? \n\nelaine: yeah, yeah. uh, christie? \n\nchristie: yes. how y'doing? \n\nelaine: (bearing up) i'm fine. \n\nchristie: well, i gotta run. it was good to see you. \n\nelaine: (after christie) okay, oh, it was good to, good to see you. \n\nvoice 1 (o.c.): lookin' good. \n\nvoice 2 (o.c.): hey cosmo, nice wheels. \n\nkramer: you got that right! \n\nkid: (scorn) hey, you're riding a girl's bike. \n\nelaine: (shouting) kramer! kramer! \n\nken (o.c.): hello. \n\ngeorge: hello, ken. it's george costanza. i think we need to talk. \n\nelaine (o.c.): (angry shout) kramer! \n\nelaine: kramer!! \n\njerry: hey \n\nelaine: ow! god! is kramer back from his little joyride yet? \n\njerry: haven't seen him. how's the neck? \n\nelaine: his chiropractic job was a crock. it's even worse than it was before. \n\njerry: boy, i'm surprised. (sarcasm) i would think kramer would have a knack for moving pieces of a person's spine around. \n\nelaine: hey, you know what, i think i ran into that girl from the antique store. what's her name, christie? \n\njerry: you saw her? what was she wearing? \n\nelaine: i don't know. i couldn't see. i couldn't look down because of my neck. \n\njerry: didn't you get a glimpse? an impression? \n\nelaine: what d'you care? \n\njerry: both times i've seen her she's worn the same dress. \n\nelaine: did you have a nice ride? \n\nkramer: oh, great ride. \n\nelaine: oh, that's good. 'cos it was your last! \n\nkramer: what're you talking about?! we had a deal! \n\nelaine: (anger) you better give me back that bike! (indicating neck) look at this! look! ow. i couldn't even crawl out of bed this morning. \n\nkramer: bed? you should be sleeping on a wooden board for at least a week. \n\nelaine: what? you never told me that. \n\nkramer: well, it's common sense. \n\nelaine: jerry, what is he talking about? he's being ridiculous. \n\nkramer: alright, look. jerry, you know the whole story, you should settle this. \n\nelaine: yeah jerry. \n\njerry: well, i'm flattered that you would both appeal to my wisdom, but unfortunately, my friendship to each of you precludes my getting involved. what you need is an impartial mediator. \n\nelaine: yeah, i'd go for that. would you go for that? \n\nkramer: alright, i'm down. \n\njerry: course, it would have to be someone who hasn't heard the story before. someone who is unencumbered by any emotional attachment. someone whose heart is so dark, it cannot be swayed by pity, compassion, or human emotion of any kind. \n\nelaine: so, that's the situation. \n\nnewman: mmm. you present an interesting dilemma. each of you seemingly has a legitimate claim to the bicycle, and yet the bicycle can have only one rightful owner. quite the conundrum. as a federal employee, i believe the law is all we have. (getting worked up) it's all that separates us from the savages who don't deserve even the privilege of the daily mail. (angry) stuffing parcels into mailboxes where they don't belong!!... \n\nkramer: newman! \n\nnewman: ...but, you must promise that you will abide by my decision, no matter how unjust it may seem to either of you. do i have your word? \n\nkramer: uh, yeah. \n\nelaine: yeah. \n\nnewman: alright, let's begin. \n\nnewman: (excited) ooh, my cocoa! \n\nken: why can't we use seven? \n\ngeorge: it's my name. i made it up. you can't just steal it. \n\ncarrie: well, it's not as if susan's pregnant. you've already postponed the wedding. who knows if you'll ever get married. \n\ngeorge: hey, hey hey. don't worry about me. i'm not a waffler. i don't waffle! \n\nken: right, we're both big mickey mantle fans, and we love the name. it's very unusual. \n\ngeorge: (shouting) what happened to soda?! i thought we all agreed on soda. \n\nken: (emphatic) well, we don't care for soda. \n\ngeorge: you don't care for soda?! \n\ncarrie: (worked up) no, no. we don't like soda at all! \n\ngeorge: (shouting) how d'you not like soda?! it's bubbly, it's refreshing! \n\ncarrie: oh! \n\nken: what is it? \n\ncarrie: i felt something. \n\nken: are you okay, honey? \n\ncarrie: i think i'm going into labour. \n\nken: oh god, oh god. okay, let's not panic. let's just get to the hospital... \n\ncarrie: okay. \n\nken: ...alright? i got the suitcase packed, right here. \n\ngeorge: what about six? \n\ngeorge: nine. thirt... thirteen's no good. \n\ngeorge: fourteen. (shouting after ken) fourteen! \n\nchristie: are you okay, jerry? you seem quiet. \n\njerry: no, i'm just a little uh, worn out. \n\nchristie: i know exactly what you mean. \n\njerry: oh, i'm sure you do. \n\njerry (v.o.): what in god's name is going on here? is she wearing the same thing over and over again? or does she have a closet full of these, like superman? i've got to unlock this mystery. \n\nchristie: (horrified) oh my god! \n\njerry: oh. \n\nchristie: ahh. i can't go to the movies like this. do you mind if we go back to my apartment, so i can change? \n\njerry: change? (thoughtful) yes, i think that's a super idea. \n\ncarrie: are we almost there? \n\nken: just keep breathing, okay. \n\ncarrie: (deep breaths) okay, okay. \n\nken: okay. \n\ngeorge: (to carrie) you know, the thing is, i kinda promised the widow mantle that i would name my baby seven. \n\nken: now's not the best time, george! \n\ngeorge: (to carrie) it's just that, i know her, and boy... \n\nken: (firm) george! she's in labour! \n\ngeorge: (angry shout) so am i! \n\nnewman: well, you've both presented very convincing arguments. on the one hand, elaine, your promise was given in haste. but was it not still a promise? hmm? \n\nnewman: and, kramer, you did provide a service in exchange for compensation. but, does the fee, once paid, not entitle the buyer to some assurance of reliability? hmm? huh? ahh. these were not easy questions to answer. not for any man... \n\nnewman: ...but i have made a decision. (revelatory) we will cut the bike down the middle, and give half to each of you. \n\nelaine: (shout) what?! this is your solution?! to ruin the bike?! \n\nelaine: alright, fine. fine. go ahead. (standing) cut the stupid thing in half. \n\nkramer: no, no, no. give it to her. i'd rather it belonged to another than see it destroyed. newman, give it to her, i beg you. \n\nelaine: yeah, yeah, y-yeah. \n\nnewman: not so fast, elaine! only the bike's true owner would rather give it away than see it come to harm. kramer, the bike is yours! \n\nelaine: what?! \n\nkramer: sweet justice. newman, you are wise. \n\nelaine: (frustration) but this isn't fair! lookit, my neck is still hurting me, and now you have the bike?! \n\nkramer: well, tell it to the judge, honey. i'm going for a ride. \n\nchristie: here we are. \n\njerry: (looking around) ah, so this is the fortress of solitude. \n\nchristie: well, i guess i'll go change. \n\njerry: yes, change. by all means, change. \n\njerry (v.o.): august seventeen, nineteen-ninety-two. the same dress! she never changes! oh my god. (looking around) she's gotta have hundreds of these dresses. \n\njerry (v.o.): there must be a secret stash around here somewhere. \n\nchristie: ahem! are you looking for something? \n\njerry: what're you doing? i thought you were changing. \n\nchristie: no, i, i'm thinking we should just call it a night. \n\njerry: no, no. c'mon, put something else on. it's early, let's go out. \n\nchristie: if it's all the same to you, i think i'm just gonna go to bed. \n\njerry: you know, i'm kinda tired myself. maybe i'll just sleep here on the couch. then in the morning, you'll get dressed, we'll walk out together. both dressed, different clothes. well, i'll be in the same clothes. you'll of course be in different clothes, because it's your apartment. but we'll go downstairs, me in my same clothes, you in your different clothes. \n\nchristie: (unequivocal) jerry. i don't think so. \n\njerry: you wanna throw something on and walk me to a cab? \n\nchristie: (gesturing) get out. \n\njerry: (pleading) tell me what you're wearing tomorrow. i'll help you lay it out on the bed. \n\nken: okay, breathe, honey. breathe. \n\ngeorge: (to carrie) you know, you're really being very selfish. it would be nice if you would think of someone other than yourself every now and then! \n\ncarrie: (shouts) i'm having a baby!! \n\nken: george, you're not getting seven! now get outta here!! \n\ngeorge: (desperate) please! i have so little! \n\norderly: sorry sir, it's family only. \n\ngeorge: i'm family. i'm having sex with the cousin! \n\ngeorge: seven!! \n\njerry: hello, christie? i was wondering if we could get together again? (listens) oh really? well you can't break up with me over the phone. c'mon, you gotta do this in person. it doesn't even have to be one on one, you can bring a group of friends. i just wanna see you. wait, don't hang up on me. (hurriedly) why d'you wear the same dress all the time? hello. \n\nkramer: (indicating the cereal) hey, jerry, if you're gonna be snacking on these, you can't expect me to pay for the whole box. \n\njerry: alright, hobo joe. i didn't wanna put a damper on your little smorgasbord here, but it's the end of the week, so i added up your tab. \n\nkramer: (does a double take) yikes. \n\njerry: i know. pretty steep. \n\nkramer: well, i don't have this kind of cash. \n\njerry: few do. \n\nkramer: i'm good for it. \n\njerry: yeah, well, until this bill is paid... \n\njerry: ...the food court is closed. \n\nkramer: (opening the door) alright. i'll get that money for you in five minutes. and, don't eat any more. \n\nelaine: hey, that's my bike! along the sidewalk comes a happy-looking newman, pedalling the schwinn for all he's worth. he rings the bell. \n\nnewman: gangway! \n\nelaine: this is my bike! \n\nnewman: oh no. no no no no. i bought it from kramer. he was hard up for cash. fifty bucks! (he laughs) can you believe it? of course, i had to make some minor modifications, you know. solid tires, reinforced seatpost, heavy duty shocks. but, baby, this is one sweet ride. \n\nelaine: (chasing newman) no, you better gimme back that bike. newman, gimme... \n\nnewman: hey!! help me! \n\nkramer: hey! you're back! \n\njerry: oh, i'm back, baby. \n\nkramer: yeah, how was it? \n\njerry: great. one of the best jobs i ever had. \n\nkramer: good for you. \n\njerry: i killed. \n\nkramer: you killed. \n\njerry: (taking off his jacket) slaughtered. wiped the floor with 'em and (hanging up jacket) not only that, the money was unbelievable. \n\nkramer: unbelievable. \n\njerry: yeah. highest paying job i ever had. \n\nkramer: how much? \n\njerry: (reluctant) nah, nah. i'd rather... \n\nkramer: aw, c'mon. \n\njerry: nah. it's not good for friends to talk about money, it can affect the friendship. \n\nkramer: i tell you how much i make. \n\njerry: and i'm always impressed. \n\nkramer: just show me the cheque, c'mon. \n\njerry: awright, fine. you wanna see it? \n\nkramer: i wanna see it. \n\njerry: okay. \n\njerry: here, check that out. \n\nkramer: (stunned) whuf! this is unbelievable. \n\njerry: i told you. \n\nkramer: my god, you're rich. \n\njerry: (taking back the check) oh yeah. \n\nkramer: i didn't know you made that kinda money. (subdued) jeez. \n\njerry: what? \n\nkramer: i don't think i can talk to you any more. i feel inferior. \n\njerry: i never shoulda told you. \n\nkramer: you know, jerry, i think this changes the relationship. i mean, i feel it. do you feel it? \n\njerry: no, i can't feel anything. \n\nkramer: well, what're you gonna do with all that money? \n\njerry: actually, i was thinking of donating a large portion of it to charity. \n\nkramer: (pleased) really? \n\njerry: (deadpan) no. \n\nkramer: well, you should, jerry. \n\njerry: no, to tell you the truth, i was thinking of buying my father a new car. \n\nkramer: now, you see, that's nice. \n\njerry: maybe a cadillac. \n\nkramer: (smiles) cadillac. ooh-la-la. \n\njerry: yeah. (thinking) that would really blow his mind. he's always wanted one, his whole life, he's never been able to afford it. (decisive) i'm gonna do it. \n\nkramer: you're gonna score some big points with the man upstairs on this one. \n\njerry: oh, isn't that what it's all about? \n\nelaine: who was pippi longstocking? \n\nkaty: pippi longstocking? (thoughtful) hmm, i don't don't know. \n\nelaine: did she have anything to do with hitler? \n\nkaty: hitler? (thinks) maybe. \n\ngeorge: hey. \n\nelaine: hey george. \n\ngeorge: have you seen jerry? (sitting beside elaine) i told him two o'clock. \n\nelaine: (indicating) you remember katy? \n\ngeorge: (distracted) mm? (acknowledges katy) oh, hi. oh, yeah, yeah, yeah. we met uh, skiing that time. you're uh, married to the eye guy. \n\nkaty: also ear, nose and throat. \n\ngeorge: nose. (chuckles) what's the worst that can happen to a nose? what does it get? stuffed? (chuckles) \n\nkaty: (amused) he's funny. \n\nelaine: ah, you don't have to tell me. \n\ngeorge: ahh, ladies, please, please. (chuckles) \n\nelaine: oh, you know what? he got engaged. \n\nkaty: oh, you did? (disappointed) oh. \n\ngeorge: what? is that bad? \n\nkaty: i actually would've set you up with a friend of mine. \n\ngeorge: oh-ho, yeah? \n\nkaty: you'd be perfect for her. she loves quirky, funny guys. \n\ngeorge: (curious) bald? uh? \n\nkaty: loves bald. \n\ngeorge: loves bald? (laughs) wow. who uh, who is she? \n\nkaty: marisa tomei. \n\ngeorge: (taken aback) the actress? \n\nkaty: yeah. \n\ngeorge: you're friends with marisa tomei? \n\nkaty: that's right. \n\ngeorge: (getting excited) that's, that's incredible. my cousin vinnie, i love her, she was fantastic! \n\nkaty: yeah, i know. \n\ngeorge: (more excitement) you were gonna fix me up with her? \n\nkaty: yeah, she's just been sitting home. \n\ngeorge: (fever pitch) marisa tomei's sitting home, elaine! wh..why didn't you tell me that katy was friends with marisa tomei?! \n\nelaine: (deadpan) oh, i don't know what i was thinking. \n\njerry: i want this baby fully loaded. (listens) well, how soon can you get it there? (listens) oh, that's terrific. (listens) okay, thanks, bye. \n\njerry: hey, guess what. i just bought my father a cadillac \n\ngeorge: really? wow, you're quite the good son. \n\njerry: yeah, i'm a very good boy. i'm flying down there and surprising him. \n\ngeorge: you gonna sleep on the fold-out? \n\njerry: (joyless) yeah, yes. \n\ngeorge: uh, let me ask you something. you uh, you ever hear of marisa tomei? \n\njerry: the actress? \n\ngeorge: yeah. she's uh, she's something, isn't she? \n\njerry: oh yeah. \n\ngeorge: well, you know katy, elaine's friend? \n\njerry: yeah? \n\ngeorge: she happens to be very good friends with her. \n\njerry: marisa tomei? \n\ngeorge: uh-hmm. \n\njerry: how does she know marisa tomei? \n\ngeorge: i don't know, i didn't ask. \n\njerry: you didn't ask how she knows marisa tomei? \n\ngeorge: not the point! \n\njerry: alright. \n\ngeorge: can i finish? \n\njerry: go ahead. seems like a reasonable question, is all i'm saying. i would've asked her. \n\ngeorge: alright! so, she said, that she could've fixed me up with her. \n\njerry: what d'you mean, could've? \n\ngeorge: well, you know, if i uh, wasn't engaged. \n\njerry: ohh! \n\ngeorge: coulda fixed me up with marisa tomei. she said i was just her type! \n\njerry: really? \n\ngeorge: (getting animated) yeah. yeah. you know the odds of me being anyone's type?! i have never been anyone's type, but apparently, this marisa tomei loves funny, quirky, bald men. \n\njerry: you know, she won an academy award? \n\ngeorge: (sarcasm) hu-hu, like i don't know that? (excitement) my cousin vinnie, i love that! i, george costanza, could be on a date with an oscar winner! an oscar winner, jerry! you know what that's like? it's like if fifty years ago, someone fixed me up with katherine hepburn? same thing! \n\njerry: now there's a match. you and katherine hepburn. \n\ngeorge: i mean, you've seen her, right? \n\njerry: katherine hepburn? oh yeah. \n\ngeorge: (shout) marisa tomei! \n\njerry: yeah, yeah, yeah. \n\ngeorge: i mean, she's beautiful, right? she's just my type. the dark hair, the full lips. \n\njerry: you like full lips. \n\ngeorge: oh, i love full lips. something you can really put the lipstick on. \n\njerry: mmm-mmm. too bad you're engaged. \n\ngeorge: (downcast) yeah, too bad. too bad. \n\njerry: (about the pie) this is no good. \n\njerry: hi. \n\nnick: hi, uh, excuse me. i'm uh, i'm with plaza cable. i'm sorry to bother you. i...i'm looking for the guy who lives over here. been waiting about uh, heh, two hours. you uh, happen to know where he is? \n\njerry: no. \n\nnick: if you see him, could you just tell him the cable company was here? \n\njerry: sure. \n\nnick: thanks. \n\njerry: (about the cable guy) nice people. \n\ngeorge: listen, lemme ask you a question. what if i got a cup of coffee with her? \n\njerry: well, what about susan? \n\ngeorge: (worked up) i can't have a cup of coffee with a person?! i'm not allowed to have coffee?! \n\njerry: would you tell susan about it? \n\ngeorge: (frustrated) not necessarily. \n\njerry: well, if you can't tell susan about it, then there's something wrong. \n\ngeorge: (shouts) of course there's something wrong! (points at jerry) we had a pact! \n\njerry: hey, cable guy's looking for you. \n\nkramer: oh, yeah? \n\njerry: yeah. \n\nkramer: oh. yeah, i been getting hbo and showtime for free. see, they just found out about it, so now they wanna come and take it out. \n\njerry: well, said he was waiting about two hours. seemed a little put out. \n\nkramer: oh, was he? was he? i guess the cable man doesn't like to be kept waiting. \n\njerry: you don't seem too bothered by it. \n\nkramer: you remember what they did to me ten years ago? \"oh, we'll be there in the morning between nine and one\", or \"we'll be there between two and six\"! (quiet anger) and i sat there, hour after hour, without so much as a phone call. finally, they show up, no apology, tracking mud all over my nice clean floors. (malice) now, they want me to accommodate them. well, looks like the shoe's on the other foot, doesn't it? \n\njerry: boy, i've never seen you like this. \n\nkramer: oh, you don't wanna get on my bad side. \n\nmarisa: ...positrack, which was not available on the sixty-four buick skylark. \n\nsusan: hey. (glances at tv) hey what're you watching? what is that? my cousin vinnie? \n\ngeorge: yeah. \n\nsusan: i thought you saw that before. how come you're watching that again? \n\ngeorge: i..i..i dunno. \n\nsusan: did you know marisa tomei won an oscar for that? boy, she's beautiful, don't you think? i wish i looked like that. \n\nsusan: turn it off. you're making me jealous. i'm gonna think you like her more than you like me. \n\ngeorge: (forcing a laugh) hu, ha. \n\nelaine (o.c.): hello. \n\ngeorge: (whispering) elaine, it's me, george. \n\nelaine: george. how come you're whispering? \n\ngeorge: (still quiet) never mind, never mind. i need you to do me a favour. uhm, remember what we were talking about at the coffee shop earlier? \n\nelaine: no. \n\ngeorge: (still quiet) think, a second. you know, your friend was talking about me and, you know... \n\nelaine: ech, george, i have no idea what you're talking about. \n\ngeorge: (still quiet) the actress. \n\nelaine: what? \n\ngeorge: (shouts) marisa tomei! \n\nsusan (o.c.): what? \n\ngeorge: (calling to susan) uh, ah, nothing. nothing. \n\nelaine: oh, yeah. yeah, what about her? \n\ngeorge: well, uhm, i think i'd like to do it. \n\nelaine: what? (shocked) what?! george, no way. you're engaged! \n\ngeorge: a cup of coffee. that, that doesn't mean anything. \n\nelaine: uhh. no george! \n\ngeorge: elaine. \n\nelaine: forget it! \n\ngeorge: elaine! (shouts) elaine!! \n\ngeorge: d'oh...oh, oh, the judge! i hate this guy! \n\nelaine: i can't believe you're buying your father a car. \n\njerry: and, best of all, it's a cadillac. \n\nelaine: (sharp intake of breath) hoh. a cadillac! (impressed) wow. \n\nelaine: i had no idea you had this kind of money. \n\njerry: ahh, i uh, i don't like to talk about it. \n\nelaine: yeah, i thought you were doing okay. i just didn't think you were in this kind of, you know, uh... position. \n\njerry: ah, it's just money. \n\nelaine: (smiling) so, when're you getting back from florida? \n\njerry: oh, i don't know, play it by ear. why? \n\nelaine: i don't know. (big smile) just, things seem a little more exciting when you're around. that's all. \n\njerry: are you okay? \n\nelaine: (squeaky) sure, sure. \n\njerry: what was that? \n\nkramer: quiet, quiet. \n\nnick: hey, uh, you know the guy who lives here? \n\ngeorge: yeah. \n\nnick: (quietly angry) all morning i been waiting here. all morning. \n\nnick: (still angry) the guy says he's gonna be home. i show up and all i do is wait. i'm getting pretty sick and tired of it. i'm not gonna put up with it much longer. \n\nkramer: i'm loving this. \n\ngeorge: kramer, there's a guy out here that... \n\nkramer: yeah, yeah. i know, i know. \n\ngeorge: (pointedly to elaine) oh. thanks very much for yesterday, by the way. \n\nelaine: jerry, he want me to fix him up with marisa tomei. i am not gonna be a part of this! \n\ngeorge: (animated) fixed up? a cup of coffee! a cup of coffee is not a fix up! \n\nelaine: you wanna meet her. you wanna see if she likes you? \n\ngeorge: (defensive) so what? so what if i do? \n\nelaine: (shrill) you're engaged! \n\ngeorge: (worked up) i'm aware! i'm aware!! but this is marisa tomei, elaine. an oscar winner! how can i live the rest of my life, knowing i coulda been with marisa tomei? she said i was just her type! she loves short, stocky, balding funny men! \n\njerry: i notice you threw 'stocky' in there. \n\ngeorge: yeah, what the hell?! \n\nelaine: george! it's cheating. \n\ngeorge: (adamant) it's not cheating if there's no sex! \n\nelaine: yes it is! \n\ngeorge: (frustrated) ahh! \n\nelaine: (looking for support) jerry! \n\njerry: uhm, hold, hold on a second. (pauses counting) i'm, i'm sorry, i didn't hear what you said. \n\ngeorge: (pleading) elaine, c'mon. would you just make the call? (indicates the phone) please, make the call. \n\nelaine: (distractedly) yeah, yeah, fine, i'll make... \n\ngeorge: (triumph) alright. \n\nelaine: eight-fifty. \n\njerry: oh, right. \n\nelaine: so uh, how are you getting to the airport? d'you need a ride, or... \n\njerry: no, don't be silly, i've arranged a car. \n\nelaine: you sure? you sure? 'cos, you know... \n\njerry: maybe i'll let you pick me up. \n\nelaine: (big smile) okay. \n\nelaine: oh, hi. uhm, is katy there? (listens) wh...? uhm, what? (listens) oh, really? \n\nelaine: well, could you tell her elaine called? yeah, thanks. \n\nelaine: huh, she's in the hospital. (concerned) she has an arrhythmia. \n\ngeorge: (impatient) what about marisa tomei?! \n\nhelen: morty, what d'you have to open this box for? (waving at another box) there's already a box of cookies open. \n\nmorty: i wanted a chip ahoy. \n\nhelen: i don't like all these open boxes. \n\nmorty: look, i got a few good years left. if i want a chip ahoy, i'm having it. \n\njerry: surprise! \n\nmorty: (shout) jerry! \n\nhelen: (shock) oh, my god! \n\nmorty: what the hell are you doing here? \n\njerry: i'm a good son. \n\nhelen: just like that? no calls? \n\njerry: just like that. \n\nmorty: boy, you are really something. \n\nhelen: to what do we owe this great honour? \n\njerry: you wanna know? come on outside. \n\nmorty: outside? what's going on? \n\nhelen: whenever jerry comes, something exciting happens. \n\nmorty: (laughs) heh hah! \n\njerry: c'mon, c'mon. \n\njerry: well, what d'you think? \n\nmorty: look at this! look at this! (excited) you bought a cadillac?! \n\njerry: i bought it for you. it's yours. \n\nmorty: you what? you bought me a cadillac? \n\njerry: i bought you a cadillac. (hands over the keys) here you go. \n\nhelen: (sharply, to jerry) are you out of your mind? \n\njerry: what? \n\nmorty: (to helen) you don't want it? are you kidding? \n\nhelen: he's not buying us a cadillac. \n\nmorty: what are you, nuts? \n\nhelen: it's a very nice gesture jerry, but take it back. \n\nmorty: (to jerry) can you believe this?! \n\nhelen: i'm not letting him buy us a cadillac. he hasn't got that kind of money. \n\njerry: how d'you know? \n\nhelen: oh, get out of here mister big shot. \n\njerry: why can't i buy my father a car? \n\nhelen: your father doesn't need a car. \n\nmorty: yes, i do! \n\nhelen: oh, morty. \n\nmorty: we're keeping it. \n\nhelen: over my dead body. \n\njerry: (under his breath) well, this worked out just as i had hoped. \n\nmachine (kramer): giddyup. \n\nnick (o.c.): yeah, this is nick stevens, from plaza cable. \n\nnick (o.c.): well, i waited all morning again. you said you were gonna be there from nine to one. \n\nnick (o.c.): i was there. where were you? you think i got nothing better to do than stand outside all morning, waiting for you to show up?! \n\nnick (o.c.): you're not gonna get away with this! \n\nmorty: hey jerry, look at this. my seat's got a memory, in case somebody moves it. i could be in prison for five years. i come out, my seat goes right back to where i like it. \n\njerry: that's what i was thinking. \n\njack: (pointing) hello, jerry. \n\njerry: hiya, jack. \n\nmorty: (indicating) so, how d'you like this? \n\njack: who's car? \n\nmorty: it's mine. \n\njack: yours? \n\nmorty: that's right. my son bought it for me. \n\njack: he what? \n\nmorty: my son bought me the car. it's a present. \n\njack: (disbelief) you bought it? \n\njerry: that's right. i bought it. \n\nmorty: you ever see one so nice? \n\njack: some car. \n\nmorty: you wanna take a ride? \n\njack: no, thank you. \n\nmorty: c'mon, take a ride. \n\njack: i don't wanna take a ride. \n\nmorty: why not? \n\njack: i don't feel like taking a ride. do i have to take a ride?! \n\njerry: he doesn't wanna take a ride. \n\nmorty: uh huh. \n\njack: (worked up) what d'you think? i've never ridden in a cadillac before? believe me, i've ridden in a cadillac hundreds of times. thousands. \n\nmorty: (skeptical) thousands?! \n\njack: what? d'you think you're such a big shot now, because you got a cadillac? \n\nmorty: (dismissive) ahh! \n\njack: (dismissive) yaah! \n\nmorty: could you believe that guy? \n\njerry: aahh! \n\ngeorge: anyway, i was thinking about what you said. about uh, me and marisa. \n\ngeorge: you know, about the uh, two of us getting together. and i know that i said i was engaged, but (laughs) uh, you know, it's really just something you say. it's like, going steady. you know uh, going steady, engaged, it's, it's all just stuff you say. (chuckles) anyway, i was watching uh, my cousin vinnie, on the uh, on the tape the other day, and i was thinking that uh, you know, the two of us might take a meeting, as they say. (chuckles) so, what d'you, what d'you think? \n\ngeorge: (urgent) move a pinkie, if it's yes. can you move a pinkie? \n\nkramer: y'hello. \n\nnick (o.c.): (inexpertly disguising his voice) hi, uh ah, mister kramer, ah, this is mcnab down at the phone company. we've got a report about some trouble on your line. \n\nkramer: hmm. well, i haven't had any trouble. \n\nnick (o.c.): uh, the thing is, we happen to have a man right in your neighbourhood. \n\nkramer: (playing along) ohh, is that right? well, i have been having a little trouble with my call-waiting. \n\nnick: we can fix that. we can fix that. \n\nkramer: (sitting back on the couch) oh, can you? that's funny, because, as it happens, i don't have call-waiting. seems to me that the phone company would know that. \n\nnick: oh, right. (laughing it off) i'm sorry, i was looking at the wrong work order. \n\nkramer: yeah. could you hold on for a second? i've got something on the stove. \n\nkramer: hey, mcnab! \n\nkramer: chunnel's on hbo tonight. why don't you stop by? \n\nmorty: alright. next thing on the agenda, the restoration of the fence at the briarwood gate. at the present time, we are still accepting bids. \n\nherb: c'mon morty, it's been broken for six months already. what the hell are you doing? \n\nmorty: well, i, as your president, have to find the best price, and right now, i for one, do not think it's cost-feasible. \n\njack: (half to himself) i'll bet you don't. \n\nmorty: what was that? \n\njack: c'mon morty, the jig is up! \n\nmorty: what're you talking about? \n\njack: i'm sorry. i'm sitting here, the whole meeting, holding my tongue. i've known you a long time, morty, but i cannot hold it in any longer. \n\nherb: what's going on, jack? \n\njack: i'll tell you what's going on. morty seinfeld has been stealing funds from the treasury. \n\nmorty: stealing?! \n\nralph: what proof do you have? \n\njack: proof? you want proof? he's driving around in a brand new cadillac. now what more proof do you want? \n\nmorty: my son bought me that car! \n\njack: your son? \n\nmorty: yeah. \n\njack: your son could never afford that car. we all saw his act, last year, at the playhouse. he's lucky he can pay his rent! \n\nherb: jack's right! he stinks! \n\nralph: it's his material. \n\nmorty: i tell you, he bought it for me! \n\nherb: (bangs table with his fist) i move for a full investigation! \n\nralph: i second. \n\nmarisa: ...go introduce myself. \n\nsusan: hey! what're you watching? (looks at tv) only you? that's another marisa tomei movie, and you've seen that one too. (jokingly) what, d'you have a thing for her? \n\ngeorge: (laughing it off and trying too hard) yeah, yeah. i have a thing for marisa tomei. like she would ever go out with a short, stocky, bald man. (forced laughter) hu hu, ha ha. like that's her type. huh. she's an oscar winner. (nervous laughter) he heh. besides, i don't even know her. it's not like anyone's trying to fix us up. who, who would try and fix me up with marisa tomei? \n\nsusan: what are you talking about? \n\nmarisa: have i told you how much i love you today? \n\ngeorge: not in the last fifteen minutes. \n\nmarisa: well, i do love you very much. \n\ngeorge: and i love you, marisa. \n\nmarisa: well then, c'mon, get dressed. we're going to be late for the premiere. \n\nhelen: impeachment? \n\nmorty: that's right. have you ever heard of anything like that? \n\nhelen: can they do that? \n\nmorty: if they get the votes. \n\nhelen: i told you we shouldn't have let him give us the car. \n\njerry: didn't you tell 'em i got the bill of sale? that proves i paid for it. \n\nmorty: it doesn't make a difference. they think we're in cahoots. \n\njerry: you know, you could put a fence around these condos, and call it an insane asylum. nobody would know the difference! \n\nmorty: no-one's ever been impeached before. i couldn't live here. we'd have to move to boca. \n\nevelyn: hello? \n\njerry: oh, hi evelyn. \n\nevelyn: hello, jerry. (to the senior seinfelds) i just got off the phone with saul brandus. \n\nhelen: what'd he say? \n\nevelyn: he's voting to impeach. \n\nevelyn: not because he think you stole the money, but mainly because you never thanked him for giving you his aisle seat at freddy roman's show. \n\nmorty: i did so thank him! \n\nhelen: (admonishing) no, he never heard you. (prods morty's back) i told you he didn't hear you. \n\nmorty: ah, he's deaf anyway. \n\nevelyn: now, my sources tell me, there's three votes for impeachment, three votes against impeachment, and one undecided. \n\nmorty: who's that? \n\nevelyn: mrs choate. \n\njerry: who's she? \n\nmorty: oh, that one. she's been a member of the board longer than anybody. she's very tough to deal with. \n\nhelen: maybe we should have her over for coffee, and explain our side of it? \n\nmorty: that's a good idea. \n\nevelyn: okay. i'll see you at the lichtenberg's, tonight. \n\nhelen: (surprise) the lichtenberg's? \n\nevelyn: yes, they're having a party. \n\nhelen: we weren't invited. \n\nevelyn: oh. probably they think you're too good for them. you know, because of the car. \n\njerry (v.o.): last week, on seinfeld. \n\njerry (v.o.): ow. stupid fold-out! why'd they put the bar in the middle of the bed? \n\njerry: hello? \n\nelaine: (flirtatious) hi jerry. \n\njerry: elaine? wh..what's going on? \n\nelaine: (clears throat) i was thinking, i mean, i'm not really doing that much this weekend, and i thought, well, huh, what the hell, maybe i'll come down there and hang out a little. \n\njerry: (a little confused) you wanna hang out here, at phase two of the pines of mar gables? \n\nelaine: well, it's just two hours by plane... \n\njerry: gee, i dunno what to tell you. \n\nelaine: dammit! i got another call. uh, hang on, don't hang up jerry. \n\nelaine: yeah? \n\ngeorge: (urgent whisper) elaine! you have got to get me marisa tomei's phone number! \n\nelaine: (impatient) okay, george, i am on the other line. i promise you, i'll get you her number. \n\ngeorge: yeahhh. \n\nelaine: goodbye. \n\nelaine: (smiling and flirty) hi. \n\njerry: hi. \n\nelaine: so, what d'you think? \n\njerry: uh, i don't think so. \n\nelaine: (disappointed) oh. \n\njerry: i'll be back on monday. \n\nelaine: well, if you need that ride, just uhm, gimme a call. (little laugh) heh. i can meet you at the gate, jer. \n\njerry: yeah, yeah. whatever. alright, i'll see you. \n\nelaine: (urgent) jerry? jerry? \n\njerry: (putting the phone back to his ear) yeah. \n\nelaine: (breathy) bye. \n\njerry: bye. \n\nkramer: hello. \n\njohn: hello, mister kramer? this is john hanaran, from con ed. \n\nkramer: ohh, it's hanaran now, is it? \n\njohn (v.o.): yeah. we've had some reports of power surges in your building. it seems some jokers were up on the roof, and they must've damaged some of the wires. \n\nkramer: oh, you don't say. \n\njohn: (a little confused by kramer) yeah. either way, we need to get into your apartment and do a safety check. \n\nkramer: (impressed) ohh, you're good. you are really good. \n\njohn: (confused) what're you talking about? \n\ngeorge: marisa tomei! i, just spoke to marisa tomei! (sitting opposite elaine) and i wasn't even that nervous. \n\ngeorge: you know, i can't remember the last time i called a woman without being nervous. i, usually, i'm pacing all over the room, i'm... \n\nelaine: (looking at her watch) okay, well that's all the time we have for today. why don't we pick up with this next week? \n\ngeorge: hey, where you going? \n\nelaine: i got stuff to do. \n\ngeorge: what? you can't leave yet. \n\nelaine: why not? \n\ngeorge: we have to discuss my alibi. \n\nelaine: alibi? what does that have to do with me? \n\ngeorge: i usually spend saturday afternoons with susan. she's gonna want to know what i'm doing. i can't use jerry, he's in florida. \n\nelaine: oh, so you wanna say you were with me? \n\ngeorge: yes. \n\nelaine: (pulls a face) puh. okay, fine. you were with me. \n\ngeorge: wait a second, wait. why are we together? \n\nelaine: what is the difference? \n\ngeorge: because, if you ever see her and it comes up, we have to be in sync. hmm? \n\ngeorge: okay. now, why do i have to see (points) you? \n\nelaine: ah! because, i'm going to the dentist, and i'm afraid, and i want you to go with me. \n\ngeorge: (dismissive) it's no good. \n\nelaine: (pointedly) okay. fine. \n\ngeorge: what? \n\nelaine: i don't like the way you just rejected my suggestion. \n\ngeorge: hey, hey, let's not get so defensive here. this is a give and take process. \n\nelaine: i thought that my suggestion was good. and, i think you could've been a little more tactful. \n\ngeorge: (explaining, with lots of hand gestures) okay, look. we've never worked together on a lie. now, you don't understand how i work. i have a certain way of working. jerry and i have worked together a few times. he knows how i work. it's not a personal thing, y'know? we're just trying to come up with the best possible lie. that's what this is all about. \n\nelaine: (weary) okay. \n\ngeorge: alright? \n\nelaine: okay. \n\ngeorge: okay. \n\nelaine: fine. \n\ngeorge: good. \n\nelaine: fine, fine, fine. \n\ngeorge: okay. how about this? \n\nelaine: what? \n\ngeorge: (pleased with himself) you are having problems with your boyfriend and i am meeting you to discuss the situation. \n\nelaine: i don't have a boyfriend. \n\ngeorge: (still pleased) she doesn't know that. we say that you do. \n\nelaine: (not convinced) ech. \n\ngeorge: it's good. believe me. \n\nelaine: i thought my idea was just as good. \n\ngeorge: the dentist thing? \n\nelaine: (pointed) yeah, right. the dentist thing. \n\ngeorge: alright, the dentist thing was not good. \n\nelaine: okay, alright. what's his name? who is he? \n\ngeorge: (after a moment's thought) art vandelay. \n\nelaine: (incredulity) art vandelay? this is my boyfriend? \n\ngeorge: that's your boyfriend. \n\nelaine: what does he do? \n\ngeorge: he's an importer. \n\nelaine: just imports? no exports? \n\ngeorge: (getting irritated) he's an importer-exporter. okay? \n\nelaine: okay. so, i'm dating art vandelay. what is the problem we're discussing? \n\ngeorge: (thoughtful) yes. yes. \n\nelaine: (sighs) yi-yi-yi. \n\nelaine: ah! (explaining, with hand gestures) how 'bout this? how about, he's thinking of quitting the exporting, and just focussing in on the importing. and this is causing a problem, because, why not do both? \n\nelaine: (irked) oh, what? you don't like that suggestion either? \n\ngeorge: it's very complicated. \n\nelaine: (definitely irritated) you know, it seems to me that it's all you, and none of my ideas are getting in. you know, i mean, you just know it all and i am miss stupid. right? \n\nmorty: what're you doing? are you making coffee? \n\nhelen: yeah. \n\nmorty: well, maybe you better make a pot of tea, too. \n\nhelen: morty, you're driving me crazy. \n\nmorty: look, i don't want anything to go wrong. if this woman votes to impeach me, i'll be a laughing stock. \n\nhelen: you wanna drive a cadillac? expect to pay the consequences. \n\nmorty: there she is. \n\nmorty: hello. hello, mrs choate. \n\nhelen: oh, come in, come in. may i take your coat. \n\nmrs. choate: no, no. i prefer to wear it. nobody's taking my coat. \n\nhelen: ah, how 'bout a cup of coffee or something? \n\nmrs. choate: coffee? ach. i'll take hot water with lemon, if you have it. \n\nhelen: i'll see. (indicating the couch) have a seat. that's a lovely scarf you're wearing. where did you get it? \n\nmrs. choate: ahh, they're a dime a dozen. \n\nhelen: oh, hi jerry. mrs choate, (indicating) this is my son, jerry. \n\njerry: gimme that rye!) \n\nmrs. choate: stop it. let go. help! someone, help! \n\njerry: shut up, you old bag! \n\nmrs. choate: (shouting after him) thief! stop him! stop him, he's got my rye! \n\njerry: nice to meet you. \n\nmrs. choate: hello. \n\nmorty: (holding jerry's shoulders) jerry lives in new york. you just came from new york, didn't you? \n\nmrs. choate: yeah. i was visiting my daughter, and i'll never go back. the crime there is just terrible. do you know i got mugged for a marble rye, right on the street? \n\nhelen: (sympathy) oh, that's terrible. they stole a rye? why would they steal a rye? \n\nmorty: that's what the city's turning into. they'll steal anything. \n\nmrs. choate: they're like savages. \n\njerry: yeah, there's some sickos out there. \n\nmrs. choate: (peering at jerry) you look very familiar. have we ever met? \n\njerry: you ever go to camp tiyoga? \n\nhelen: maybe you've seen him on television. \n\nmorty: jerry's a comedian. \n\nmrs. choate: naw, i don't watch tv. \n\njerry: (opening the door) well, it was nice meeting you. \n\nmorty: jerry, don't go. \n\njerry: ah, i think i'll go. \n\nmrs. choate: so, morty, what's this all about? what d'you want? \n\nsusan: hey, where're you going? \n\ngeorge: wha..? i didn't tell you? i gotta go meet elaine. \n\nsusan: elaine? what for? \n\ngeorge: i don't know. she..she's having some problems with this guy she's seeing. \n\nsusan: i didn't even know she was dating anyone. \n\ngeorge: yeah, yeah. she's seeing this guy, art vandelay. \n\nsusan: so what does he do? \n\ngeorge: he's an importer-exporter. \n\nsusan: what kind of problems are they having? \n\ngeorge: (not happy delivering elaine's lie) well, he uh, he wants to uh, quit the exporting and uh, focus just on the importing. and it's a problem, because she thinks the exporting is as important as the importing. \n\nsusan: are you having an affair with elaine? \n\ngeorge: (trying to laugh it off) right. c'mon! i'm having an affair with elaine?! if i was having an affair with elaine, i wouldn't tell you i'm going to see elaine. i would make up some other person to tell you i was gonna go see, and then i would go see ela..elaine. \n\nsusan: huh? \n\nnick: (yelling after the fleeing kramer) i'll get you! i'll get you kramer! you won't get away with this! \n\nmorty: alright, are you ready to eat? \n\nhelen: (glancing at her watch) oh, right, let's go. jerry, let's go, it's time to eat. we're going to dinner. \n\njerry: (confused) dinner? w..what time is it? \n\nhelen: (pulling on a coat) it's four-thirty. \n\njerry: (bewildered) four-thirty? who eats dinner at four-thirty? \n\nmorty: by the time we sit down, it'll be quarter to five. \n\njerry: i don't understand why we have to eat now. \n\nhelen: we gotta catch the early-bird. it's only between four-thirty and six. \n\nmorty: yeah. they give you a tenderloin, a salad and a baked potato, for four-ninety-five. you know what that cost you after six? \n\njerry: can't we eat at a decent hour? i'll treat, okay? \n\nhelen: you're not buying us dinner. \n\njerry: (emphatic) i'm not force-feeding myself a steak at four-thirty to save a coupla bucks, i'll tell you that! \n\nhelen: alright, (sitting on the couch) we'll wait. (pointedly) but it's unheard of. \n\ngeorge: ...so, anyway, if you think about it, manure is not really that bad a word. i mean, it's 'newer', which is good, and a 'ma' in front of it, which is also good. ma-newer , right? \n\nmarisa: (laughing) you're so right. i never thought of it like that. manure. 'ma' and the 'newer'. \n\nmarisa: did you just make that up? \n\ngeorge: what, you think i'm doing material here? \n\nmarisa: (laughs) no, no. it's hard to believe anyone could be so spontaneously funny. \n\ngeorge: (modest) and i'm a little tired. \n\nmarisa: so, tell me, how is it that a man like you, so bald, and so quirky and funny, how is it you're not taken? \n\ngeorge: well, marisa. see, the thing is... i'm sort of engaged. \n\nmarisa: what? \n\ngeorge: i'm, you know, engaged. \n\njerry (v.o): hey look, there's a spot right in front. \n\nmorty(v.o.): always, jerry. always. \n\ndoris: was that delicious or what? \n\njack: where you gonna get a better meal than that? \n\ndoris: better than danny's. \n\njack: danny's? (scoffs) c'mon! \n\nmorty: hello jack. \n\nhelen: doris. \n\ndoris: hello, hello. \n\njerry: jack. \n\ndoris: hello, jerry. \n\njerry: hi doris. \n\njack: hello morty. (looking at watch) well, missed the early bird. \n\nmorty: yeah, so? \n\njack: (pointed) must be nice to have that kind of money. \n\njack: bernie, look who's eating at six o'clock. (pointed) your suddenly well-to-do president. but, you enjoy your last meal in office. tomorrow, they kick you out, you'll have plenty of time to drive around in your cadillac. \n\nmorty: they're not kicking me out. you don't have the votes. \n\njack: that's what you think. \n\nmorty: we'll see. \n\njack: yes, we will. \n\njerry: awright, let's eat already. \n\nelaine: hi, susan. \n\nsusan: hi. \n\nelaine: hi. come in, come in. have a seat. \n\nsusan: (standing) uh, elaine, i have to ask you a question. \n\nelaine: oh, sure. \n\nsusan: (dead serious) are you having an affair with george? \n\nelaine: (disbelief) wha...?! (uncontrolled laughter) ha ha ha. ha, no. \n\nelaine: (laughter) don't be ridiculous! (laughter) i mean, why would anyone wanna sleep... \n\nelaine: ...well, obviously... you know... (disbelief) ap..ap, chu... why would you think i was having an affair with george? \n\nsusan: ohh, because he said that he had to talk with you earlier about some problem that you were having. \n\nelaine: (recalling the arranged lie) yeah, yeah, i did have to talk with him. i definitely had to talk with him. having a problem with my boyfriend. \n\nsusan: art vandelay? \n\nelaine: yeah, art vandelay. \n\nsusan: i'm sorry. (laughing it off) i feel like an idiot. \n\nelaine: (smiling) no, no. (laughing) huh-hu-hu. it's okay. \n\nsusan: oh, just forget that we ever talked. okay? \n\nelaine: it is so forgotten. \n\nsusan: alright. \n\nelaine: okay. (relieved) okay, no problem. \n\nsusan: so, was george helpful at all? \n\nelaine: (unconvincing) yeah. oh, yes, yes, he was very helpful. (hesitant) uhm, because, you know, art and i were getting into this whole thing about his business. uhm, you know he's an importer-exporter. \n\nsusan: (not convinced) yeah. \n\nelaine: (explaining, with gestures) uhm, george felt that i was too adamant in my stand that art should focus on the exporting and forget about the importing. \n\nsusan: (spotting an inconsistency) wait a minute. i thought that art wanted to give up the exporting. \n\nelaine: what'd i say? \n\nsusan: the importing. \n\nelaine: (caught out) i did. uh... \n\nsusan: so, what does he uh, import? \n\nelaine: (extemporising) uh... chips. \n\nsusan: oh. what kinda chips? \n\nelaine: potato. \n\nsusan: ah. \n\nelaine: (embroidering) some corn. \n\nsusan: and what does he export? \n\nelaine: diapers. \n\nsusan: (fake smile) i'm sorry for bothering you. \n\nelaine: oh, no, it's okay. \n\nelaine: okay. \n\nelaine: (to herself) c'mon, george, pick up. oh, pick up. oh, pick up. \n\ngeorge: hi. \n\nsusan: hi. (pointedly) so, george, what does art vandelay import? \n\ngeorge: matches? long matches. \n\nherb: ...there she is. okay, if i can have your attention for a minute here. we're calling this emergency meeting of the board of phase two, to consider a motion of impeachment of our president, (indicating) morty seinfeld. \n\nmorty: nervous, jack? \n\njack: what for? \n\nmorty: because i have the votes. \n\nmorty: nice to see you, mrs choate. \n\nmrs. choate: hello, morty. \n\nherb: building a. are you for, or against, the motion to impeach? \n\nralph: what does that mean? \n\nherb: it means, if you're for the motion, you're against morty. \n\nralph: so why don't you say that? \n\nherb: hey, i'm running the meeting. \n\nralph: if you think so. \n\nherb: building a? \n\nbuilding a: for impeachment. \n\nherb: building b? \n\nbuilding b: against impeachment. \n\nherb: building c? \n\nbuilding c: for impeachment. \n\nherb: building d? \n\nmrs. choate: against impeachment. \n\njack: (a whisper to morty) i can't believe you got that old bag. \n\nmrs. choate: help! someone help! \n\njerry: shut up, you old bag! \n\nmrs. choate: (after jerry) oh, thief! thief! \n\nmrs. choate: it's him. (pointing at morty) it's your son. now i know where i saw him. he stole my marble rye. \n\nmorty: my son never stole anything. he's a good boy. \n\nralph: they should lock him up. \n\nmrs. choate: (pointing at morty) like father, like son. (thumps table) i change my vote. i vote to impeach! \n\nbuilding b: me too. i change my vote. \n\nherb: all those in favour, say aye. \n\nall (except morty): aye. \n\nherb: all opposed. \n\nherb: the ayes have it. the motion passes. \n\nherb: morty seinfeld, you are officially dismissed as condo president. as vice-president, jack klompus, in accordance with the phase two constitution, is hereby installed as president. \n\nherb: hear, hear, jack. \n\nnick: (weary) alright, i know you're in there. i know you can hear me. you win, okay? you win. i can't do it any more. what d'you want from me? apology? alright, i'm sorry. there, i said it, i'm sorry, i'm sorry. i see now how we made you feel when we made you sit home waiting. i dunno why we do it. (upset) i guess maybe we just kind of enjoy taking advantage of people. (reasonable) well, that's gonna change. from now on, no more 'nine to twelve', no more 'one to five'. we're gonna have appointments. eleven o'clock is gonna mean eleven o'clock. and, if we can't make it, we're gonna call you, tell you why. (worked up) for god's sakes, if a doctor can do it, why can't we? (almost sobbing) anyway, that's it. \n\njerry: the bags are in the car, i guess we better go. \n\nelaine: mr. peterman sent me over here for a physical because as you may or may not know, he and i are going on a trip to kenya. africa. my first such mission for the company. the massai bushmen wear these great sandals and we're gonna knock them off. not the massai, the sandals. \n\ndoctor: i'll need a urine sample. \n\nelaine: right. \n\ngeorge: you know how hot it gets there? like 150 degrees. your skin is gonna be simmering with boils. \n\nelaine: oh, come on. \n\njerry: hey george, you coming to the tonight show on thursday? \n\ngeorge: hey, yeah. my parents want to come too, is that ok? \n\njerry: yeah, sure. my parents will be there. \n\nelaine: the tonight show? \n\njerry: yeah, they're in town this week, you wanna go? \n\nelaine: are you doing new material? \n\njerry: no. \n\nelaine: i don't think so. \n\nkramer: hey. super's in my bathroom changing my shower head. have they changed your shower head? \n\njerry: no, he's doing mine next. they're low flow you know. \n\nkramer: low flow? well i don't like the sound of that. \n\nelaine: so what are your parents doing here in new york? \n\njerry: well, they were humiliated. i mean after the impeachment, my father left office in disgrace. \n\nelaine: so what are their plans? \n\njerry: well, this is the problem. they're moving into this new development. here's the pamphlet. del boca vista. but they're not quite ready to go back so they're in seclusion here for a while at uncle leo's. \n\nelaine: you mean the three of them in that tiny apartment? \n\njerry: no, leo's not there. he's got a girlfriend, lydia. in fact, he moved in with her. \n\ngeorge: uncle leo's having regular sex? \n\njerry: yeah, i know. it devalues the whole thing. \n\njerry: (answering phone) hello? \n\nmorty: jerry, what time do we have to be at the the tonight show on thursday. \n\njerry: you gotta be there at 430. \n\nmorty: but it comes on 1130. \n\njerry: yeah, well they tape it in the afternoon and then they air it at 1130. \n\nmorty: how long they been doing this? \n\njerry: 30 years. \n\nmorty: helen, did you know that they tape this thing in the afternoon? \n\njerry: all right, i'll see you later. \n\nelaine: georgie, how come your parents never moved to florida? \n\ngeorge: yeah, that is odd, isn't it? \n\njerry: yeah, it is. \n\ngeorge: i mean, they're retired. \n\njerry: no economic reason for them to be here. \n\ngeorge: they have no friends. \n\njerry: no social reason for them to be here. \n\nelaine: you're all grown up. \n\ngeorge: yeah, they're all through ruining my life. what the hell are they still doing here? lemme see this pamphlet. hm. all right, so i'll, uh, get back to you. \n\nhelen: where can i buy some ice? your father likes a lot of ice. \n\njerry: i don't know, maybe get an ice tray? \n\nhelen: i can do that. \n\njerry: you know dad just called me. \n\nhelen: yeah, i know. his phlebitis is acting up. \n\njerry: yeah, all right, well i got some people here. \n\nhelen: ok. \n\njerry: all right, bye. (to elaine) you see this? any thought pops into their head they're calling me because it's a local call now. \n\nelaine: ahh. \n\njerry: i'm used to a 1200 mile buffer zone. i can't handle this. plus i got the dinners, i got the pop ins. they pop in! it's brutal! \n\nelaine: they have no idea when they're going back to florida? \n\njerry: the only way out of this is if leo breaks up with his girlfriend and has to move back into the apartment and then they would have to go back to florida. \n\nelaine: how's that gonna happen? \n\nuncle leo: it's about time you called your uncle. we've got to do this once a week. \n\njerry: (to himself) once a week? (to uncle leo) so how's lydia? \n\nuncle leo: ah, she's a real tiger. \n\njerry: i don't know how you do it. \n\nuncle leo: what? \n\njerry: a man like you, limiting yourself to one woman, i don't know. but it's none of my business. \n\nuncle leo: what are you talking about? \n\njerry: well... \n\nuncle leo: look at this, i told them medium rare, it's medium. \n\njerry: hey, it happens. \n\nuncle leo: i bet that cook is an anti-semite. \n\njerry: he has no idea who you are. \n\nuncle leo: they don't just overcook a hamburger, jerry. \n\njerry: all right. anyway, the point i was making before goerbbles made your hamburger is a man like you could be dating women twenty years younger. c'mon uncle leo, i've seen the way women look at you. when's the last time you looked in a mirror? you're an adonis! you've got beautiful features, lovely skin, you're in the prime of your life here, you should be swinging. if i were you i'd tell this lydia character, \"it's been real,\" move back into that bachelor pad and put out a sign; open for business. \n\nuncle leo: believe me, i thought about it. but she is so perfect in every way, i can't see a flaw. \n\njerry: well, keep looking. \n\npeterman: i'm afraid i have some bad news, elaine. it appears you will not be accompanying me to africa. \n\nelaine: what? why not? \n\npeterman: i'm afraid it's your urine, elaine. you tested positive for opium. \n\nelaine: opium? \n\npeterman: that's right, elaine. white lotus. yam-yam. shanghai sally. \n\nelaine: ihat's impossible, i've never done a drug in my life. dr. strugatz must have made a mistake. \n\npeterman: not a chance. i'm afraid i'll just have to find someone else to accompany me on my journey. the dark continent is no place for an addict, elaine. \n\nelaine: obviously, mr. peterman, there's something wrong with this test. i don't take opium. let me take another one, please? i'll call the doctor right now, i'll take a pop urine test. \n\npeterman: all right, elaine. \n\nelaine: oh, thank you mr. peterman. (drinks a glass of water) i'll be ready in three minutes. \n\ngeorge: whew! boy, it's cold outside, huh? oh, these new york winters, huh. bitter cold, bitter. \n\nfrank: i was out for five minutes before, i couldn't feel my extremities. \n\nestelle: what extremities? \n\ngeorge: you know what the temperature in florida is today? eh? seventy-nine. that's almost eighty. yeah, i read someplace the life expectancy in florida is eighty-one and in queens, seventy-three. \n\nestelle: so george, why are you here? \n\ngeorge: what, i can't stop by and visit my parents? (drops pamphlet on coffee table) \n\nestelle: what's this. \n\ngeorge: that's where the seinfeld's are moving. they got a great deal. yep. you know what they got in florida? jai-alai! you bet on the games, you clean up. \n\nestelle: i don't bet. \n\ngeorge: what about the dolphins? you could swim with the dolphins down there. \n\nestelle: i don't swim. \n\ngeorge: you could pet them. they come right out of the water onto the sidewalks. \n\nestelle: are you trying to get rid of us? \n\ngeorge: rid? nah, c'mon, the word is 'care'. care. i care about your comfort, be it here in queens or twelve-hundred miles away. \n\nelaine: no? \n\nkramer: jerry? jerry! \n\nkramer: wha, you too? \n\njerry: yeah! \n\nkramer: these showers are horrible. there's no pressure, i can't get the shampoo out of my hair. \n\njerry: me either. \n\nkramer: if i don't have a good shower i am not myself. i feel weak and ineffectual. i'm not kramer. \n\njerry: you? what about me? i got the tonight show tonight. i'm gonna have to shower in the dressing room. \n\nkramer: (leaving) aw. \n\njerry: where are you going? \n\nkramer: i gotta find another shower. \n\nkramer: they got you too? \n\nnewman: this stuff is awful! i'm not newman! \n\nkramer: oh, elaine. yeah. \n\nelaine: kramer, you look terrible. \n\nkramer: look, i need the keys to your apartment, i gotta take a shower. \n\nelaine: what's wrong with your shower? \n\nkramer: there's no water pressure. \n\nelaine: why don't you just go see jerry? \n\nkramer: jerry's got nothing. newman's got nothing. you're the only one i know who's got the good stuff, and i need it bad, baby, cause i feel like i got bugs crawling up my skin. now you gotta help me out. \n\npeterman: (busting in) not on my watch! (grabs kramer by the collar) i won't have you turning my office into a den of iniquity! get your fix somewhere else! \n\nelaine: mr peterman! what are you doing? \n\npeterman: elaine, you're out of control. you need help. \n\nelaine: huh? \n\npeterman: i know what you're going through. i too once fell under the spell of opium. it was 1979. i was travelling the yangtzee in search of a mongolian horsehair vest. i had got to the market after sundown, all of the clothing traders had gone, but a different sort of trader still lurked about. \"just a taste,\" he said. that was all it took. \n\nelaine: mr. peterman, i don't know what's going on here. i am not addicted to anything. \n\npeterman: oh, elaine. the toll road of denial is a long and dangerous one. the price? your soul. oh, and by the way, you have til' 500 to clear out your desk. you're fired. \n\nhelen: all they serve is chicken? \n\njerry: there's more food down the hall. \n\nmorty: wrap it up, we'll take it home. \n\njerry: oh, hi. \n\nestelle: hello seinfelds. \n\nmorty: hello. \n\nhelen: hi. \n\nfrank: this is your dressing room? they treat you like toscanini. \n\nestelle: oh, jerry. i don't know how you could do this. i'm so nervous for you. \n\njerry: actually, i'm drunk. \n\ngeorge: hey, hey, how was florida? \n\nmorty: well, we just bought a new place down there. \n\nestelle: i know, we were looking at the brochure. \n\nmorty: what? \n\nhelen: why, you thinking of moving? \n\nfrank: not really. \n\nmorty: because if you are, you shouldn't. there's nothing available in that development. \n\nfrank: are you telling me there's not one condo available in all of del boca vista? \n\nmorty: that's right. they went like hotcakes. \n\nfrank: how'd you get yours? \n\nmorty: got lucky. \n\nfrank: are you trying to keep us out of del boca vista?! \n\njerry: i know this doesn't seem like work to any of you, if you could perhaps conduct your psychopath convention down the hall, i could just get a little personal space. \n\nelaine: how could i have tested positive twice? once i could understand, that's a mistake. but twice? \n\nwaitress: yeah, it's hard to figure. \n\nelaine: i mean i lost my job, i can't go to africa. i was gonna meet the bush-men of the kalahari. \n\nwaitress: ah, the bush-men? \n\nelaine: and the bush-women. \n\nman: (also seated at the counter) excuse me. i couldn't help overhearing. i notice you're eating a poppy seed muffin. \n\nelaine: yeah, i eat these muffins all the time. \n\nman: well, you know what opium is made from... \n\nelaine: (as though receiving a revelation) poppies! \n\njay leno: welcome back. talking with jerry seinfeld. jerry, lemme ask you, i saw some people back there, they look like.. family? is that family? \n\njerry: yeah, i got some family backstage. course my family's nuts; they're crazy. yep. my uncle leo, (quick take of uncle leo in bet with lydia, watching jerry on tv. lydia is laughing, leo is not) i had lunch with him the other day, he's one of these guys that anything goes wrong in life, he blames it on anti-semitism. you know what i mean, the spaghetti's not al dente? cook's an anti-semite. loses a bet on a horse. secretariat? anti-semitic. doesn't get a good seat at the temple. rabbi? anti-semite. \n\njerry: hey, listen to this, uncle leo broke up with his girlfriend because of the bit i did. she thought it was funny, so he accused *her* of being an anti-semite. they had a huge fight and now he's moving back into his apartment. you know what this means, my parents are gonna go back to florida... what? what number is this? oh, i'm terribly sorry. \n\njerry: hey kramer, my parents are gonna have to move back to florida, isn't that great? \n\nkramer: (halfheartedly) yeah, well i'm really happy for ya. \n\njerry: hey, you're not giving it to me, man. what's wrong? \n\nkramer: i just took a bath, jerry. a bath? \n\njerry: no good? \n\nkramer: it's disgusting. i'm sitting there in a tepid pool of my own filth. all kinds of microscopic parasites and organisms having sex all around me. \n\njerry: well, you used to sit in that hot tub? \n\nkramer: jerry, that was superheated water, nothing could live in that. \n\njerry: (offering a plate) chicken? \n\nkramer: oh, yeah. \n\nelaine: well, this you're not gonna believe. i found out why i was testing positive for opium. poppy seeds! \n\njerry: poppy seeds! \n\nkramer: well, that makes sense. (offers plate to elaine) want some chicken? \n\nelaine: yeah. thanks. so, i'm gonna get tested again later, hopefully i'll get my job back and i will be on my way to africa. \n\njerry: hello newman. \n\nnewman: hello jerry. well, i may have a solution to our little problem. elaine, would you excuse us? \n\nelaine: oh c'mon, newman. \n\nnewman: i have a private matter to discuss with my fellow tenants. (opens door) if you don't mind? \n\nelaine: jerry? \n\nnewman: look, sister, go get yourself a cup of coffee, all right? beat it! (pushes elaine out the door and closes it) all right, now here's the lowdown. from a certain connection, i've been able to locate some black market shower heads. they're all made in the former yugoslavia, and from what i hear the serbs are fanatic about their showers. \n\njerry: not from the footage i've seen. \n\nnewman: nevertheless, sometime this afternoon, behind the market diner, an unmarked van will be waiting. i'm expecting the call at any time. are you in? \n\nkramer: i'm down. \n\nnewman: jerry? \n\nestelle: so, georgie, we have some big news for you. \n\ngeorge: big news? \n\nestelle: we're moving to florida. \n\ngeorge: (ecstatic) what? you're moving to florida!?! that's wonderful! i'm so happy! (pause) for you! i'm so happy for you! oh, what do you need this cold weather for? \n\nfrank: has nothing to do with the weather, it's because of the seinfelds. \n\ngeorge: what do you mean? \n\nfrank: they don't want us there, so we're going. we're moving right into del boca vista! \n\ngeorge: so you're moving there for spite! \n\nfrank: absolutely. no one tells frank costanza what to do! \n\ngeorge: that's right, who the hell are they? how dare they?! \n\nestelle: so, georgie, are you gonna come to visit us? \n\ngeorge: oh, every chance i get. \n\nestelle: (warmly) ohhh. \n\ngeorge: jerry? jerry! i'm busting! i'm busting! \n\njerry: what's going on? \n\ngeorge: my parents are moving to florida! \n\njerry: are you kidding? \n\ngeorge: can you believe it? it's happening! it's finally happening! i'm free!! \n\njerry: where are they moving to? \n\ngeorge: del boca vista! \n\njerry: del boca vista, that's where my parents are gonna live! \n\ngeorge: i know! \n\njerry: we could visit together! \n\ngeorge: every five years! \n\njerry: that's incredible! \n\ngeorge: i know, i know and you know *why* they're moving there? \n\njerry: why? \n\ngeorge: to spite your parents! \n\njerry: to spite my parents? \n\ngeorge: yeah! \n\njerry: your parents are crazy! \n\ngeorge: i know, they're out of their minds! it's fantastic! \n\njerry: my parents are moving back too! \n\ngeorge: beautiful! \n\nmorty: i'm sorry leo's moving back here. i'm not ready to go back to florida. \n\nhelen: he was getting along so well with that woman, what happened? \n\nmorty: hello? \n\nvoice: this is frank costanza. \n\nmorty: what do you want? \n\nfrank: you think you could keep us out of florida? we're moving in lock, stock and barrel. we're gonna be in the pool. we're gonna be in the clubhouse. we're gonna be all over that shuffleboard court! and i dare you to keep me out! \n\nmorty: i'm sorry, we can't go back to florida. \n\ngeorge: i can't believe i didn't push for this sooner. \n\njerry: you have no idea how your life is gonna improve as a result of this. food tastes better. the air seems fresher. you'll have more energy and self confidence than you ever dreamed of. \n\njerry: hello. \n\nmorty: hello, jerry? it's your father. \n\njerry: oh, hi dad. \n\nmorty: listen, is it all right if we move in with you for a little while? sounds of breaking glass, jerry dropped his bottle. \n\nmorty: what was that? \n\njerry: nothing. a bottle broke. that's all. what do you mean, you're gonna move in here? \n\nmorty: because the costanzas are moving into del boca vista. \n\njerry: but it's a big complex. \n\nmorty: you don't understand, you gotta have a buffer zone. \n\njerry: all right, fine. come over here. (hangs up phone) \n\ngeorge: what? \n\njerry: they're not going back to florida. they're moving here. \n\ngeorge: what? why? \n\njerry: because your parents are going down there. my buffer zone just went from twelve hundred miles down to two feet! you gotta do something. \n\ngeorge: hey, i'm sorry, you had your buffer zone for many years. it's my turn to live, baby. \n\njerry: you know what you're doing, don't you? you're killing independent jerry! i gotta go see my uncle leo. i think he may have made a big mistake. \n\nuncle leo: move back with lydia? \n\njerry: c'mon, you're lucky to have anybody. \n\nuncle leo: last week you told me i was in my prime, i should be swinging. \n\njerry: swinging? what are you, out of your mind? look at you, you're disgusting. you're bald, you're paunchy, all kinds of sounds are emanating from your body twenty-four hours a day. if there's a woman that can take your presence for more than ten consecutive seconds, you should hang on to her like grim death. which is not far off, by the way. \n\nuncle leo: but she's an anti-semite. \n\njerry: can you blame her? \n\nhelen: you don't think he minds us staying here, do you? \n\nmorty: why would he mind? we're his parents. \n\nelaine: oh. \n\nhelen: hi elaine. \n\nelaine: hello. jerry's not here? \n\nhelen: no. \n\nelaine: huh. (pause) oh my god. \n\nhelen: what? \n\nelaine: a poppy seed! it must have been in the chicken. oh, i'm dead. i'm going to the doctor's in a half an hour. \n\nhelen: why? \n\nelaine: it's a long story. \n\nhelen: just a second, i have to go to the bathroom. \n\nelaine: what are you gonna do in there? \n\nhelen: what am i gonna do in the bathroom? \n\nelaine: you gotta do me a favor. \n\nhelen: elaine, i really-- \n\nelaine: hold on a second. mrs. seinfeld, i need your sample. \n\nhelen: you want my urine? \n\nelaine: i need a clean urine sample from a woman. \n\nhelen: i don't know. \n\nelaine: oh please, mrs. seinfeld, please? \n\nhelen: well, what am i gonna do it in? \n\nelaine: well, one of those glasses. \n\nhelen: jerry's glasses? \n\nelaine: yeah, he won't mind. c'mon, you're his mom. \n\nhelen: oh, i could uh-- should i use a coffee cup? \n\nelaine: yeah, a coffee cup's fine. \n\nhelen: or maybe a juice glass. \n\nelaine: yes, fine, fine, a juice glass is perfect. \n\nhelen: this one is kind of scratched. \n\nelaine: it doesn't matter. \n\nhelen: howbout a milk glass. \n\nelaine: a milk glass, a juice glass, any glass, just pick a glass. \n\nhelen: jerry doesn't wash these very well. \n\nelaine: mrs. seinfeld, pick a glass! pick a glass, mrs. seinfeld! \n\nsalesman: all right, i got everything here. i got the cyclone f series, hydra jet flow, stockholm superstream, you name it. \n\njerry: what do you recommend? \n\nsalesman: what are you looking for? \n\nkramer: power, man. power. \n\nnewman: like silkwood. \n\nkramer: that's for radiation. \n\nnewman: that's right. \n\nkramer: (pointing to the largest one) now, what is this? \n\nsalesman: that's the commando 450, i don't sell that one. what about thi- \n\nkramer: well that's what we want, the commando 450. \n\nsalesman: nah, believe me. it's only used in the circus. for elephants. \n\nnewman: we'll pay anything. we've got the (hands a wad of money to kramer) what about jerry? \n\nkramer: he couldn't handle that, he's delicate. \n\nhelen: it's nice being back at leo's jerry's place was too small. \n\nmorty: first leo breaks up, then he goes back. what the hell's going on? \n\nmorty: who is it? \n\nsuper: it's the super. we're installing new low-flow showerheads in all the bathrooms. \n\nmorty: low flow? i don't like the sound of that. \n\npeterman: so as a result of your test being free of opium, i am reinstating you. \n\nelaine: oh! yes! what a load off. so when are we going to africa? \n\npeterman: i'm afraid i can't take you. \n\nelaine: what? why not? \n\npeterman: elaine, according to your urine analysis, you're menopausal. you have the metabolism of a sixty-eight year old woman. \n\nelaine: but i wanted to see the bushmen. \n\npeterman: oh, and one more thing. you may have osteoporosis. \n\njerry: well, it's been a great visit. \n\nmorty: jerry, i'll tell ya. the first thing i'm gonna do when i get back to florida is take a shower. \n\njerry: well, at least the costanzas changed their mind and decided not to move. they couldn't bear being away from george. \n\nhelen: george must be happy about that. \n\njerry: you have no idea. \n\nfrank: take my swim trunks. i won't need them. \n\nestelle: what does he want with your swim trunks? \n\nfrank: why should they go to waste?!? \n\n[setting: night club] \n\njerry: thank you! goodnight! (walks off stage, sighing deeply. instantly, a red-headed woman runs up and hugs him - taking jerry by surprise) \n\nsally: jerry! \n\njerry: (trying to ward her off) hey. hey! \n\nsally: (reminding him who she is) sally weaver! (sees jerry's expression - he still has no clue who she is) susan ross' roommate from college.. hello! (laughs slightly) \n\njerry: right.. oh, i'm sorry. uh, oh, so you saw the show? \n\nsally: saw it? i loved it! and thank you for the free tickets. you are so funny. \n\njerry: (modest) oh, thanks. \n\nsally: (serious) no, no, i mean it. you're very funny. \n\njerry: (blunt) i believe you. \n\nsally: oh, anyway, let me show you memphis. i am taking you (points to him) out to dinner. \n\njerry: (grabbing his coat) oh, i'm sorry, i can't - i'm going straight to the airport. \n\nsally: ohh.. that's too bad.. susan thought we'd really get along - i guess because we're both wacko! (jerry laughs) you know what, um.. (turns around, picking up a large gift from a table) you have to give this to them for me. okay? here. (hands the box to jerry, he struggles under the size of it) it's a wedding present. \n\njerry: oh? \n\nsally: and jerry? be careful with it, okay? be very careful. \n\njerry: uh-huh. \n\n[setting: the coffee shop] \n\nfrank: george, as you may be aware, your mother and i are not moving to del boca vista, florida. \n\ngeorge: (resenting the fact. nodding) i am aware. \n\nfrank: so, i was wondering, would it be okay if i turned your room into a billiard parlor? \n\ngeorge: a billiard parlor? \n\nfrank: regulation table, the hi-fi, maybe even a bar.. give it real authenticity.. \n\ngeorge: well, that's.. elaine! \n\nelaine: oh, hi, frank. \n\ngeorge: (sliding over to make room for her) sit down. join us, please. \n\nelaine: (trying to come up with an excuse not to sit with them) actually, i gotta get to the.. uh.. thing. \n\ngeorge: (somewhat stern) oh, the thing's cancelled. sit down. \n\nelaine: (giving up) okay.. (sits, george laughs) so.. (trying to think up something to talk about) frank, did george ever show you that photo? \n\ngeorge: (confused) what photo? \n\nelaine: you know, the photo i took in tuscany of the little man in front of the sign that said \"costanza\"? \n\nfrank: (interested) there's a costanza in tuscany? (elaine nods) did he look like me? did you talk to him? \n\nelaine: i didn't talk to anyone - i was just walking by, and i saw the sign, and i thought george might get a kick out of it. \n\nfrank: i gotta get that picture - it could be my cousin, carlo. \n\nelaine: who is that? \n\ngeorge: (muttering out, not really wanting to talk about his family) when the costanzas came here, one brother stayed behind. \n\nfrank: i played with him every day until the age of four - and then we separated. \n\nelaine: so, you weren't born here? \n\nfrank: no. that's why i can never be president.. it always irked me. that's why, even at an early age, i had no interest in politics. i refuse to vote. (yelling out) they don't want me, i don't want them! \n\ngeorge: i don't know what you're getting all riled up about. there are probably a million costanzas- \n\nfrank: (cutting him off) don't bring me down. (to elaine) do you have another copy of that photo? \n\nelaine: no, i, i don't. but.. well, the maestro might. \n\nfrank: the maestro? what maestro? \n\nelaine: he's this guy that i went to tuscany with. he's a great guy, but i just wouldn't feel comfortable calling him. \n\ngeorge: really? why? \n\nelaine: (explaining) because he hasn't called me since we got back.. i spilled wine on his 8 by 10 photo of one of his favorite italian opera stars. \n\ngeorge: who? \n\nelaine: you know the three tenors? \n\ngeorge: yeah.. (trying to remember) poverotti.. domingo.. and.. uh.. the other guy. \n\nelaine: (nodding) the other guy. \n\n[setting: airplane] \n\nstewardess: (overly nice) could i take that box for you? \n\njerry: uh.. well, you better not. i'm supposed to be careful with it. \n\nstewardess: oh, then, i'll have to put your bag in the over-head. \n\njerry: oh, okay.. \n\nstewardess: there we go. \n\n[setting: jerry's apartment] \n\njerry: ohh.. look at this.. \n\nkramer: what? \n\njerry: i bought a bottle of bbq sauce in memphis. i think the stewardess broke it when she tried to jam it into the overhead compartment because of this \n\nkramer: well, don't press the panic button. i'm sure that we can still salvage some sauce.. \n\njerry: i don't care about the sauce. it came in this funny little bottle, and there was a guy on the label that looked exactly like charles grodin. \n\nkramer: (taking some of jerry's clothing over to the kitchen) i see.. \n\njerry: no, you don't see - because i'm going on the show this week, and this was going to be my bit on the show. \n\nkramer: well, why don't you do your material? \n\njerry: i'm out. \n\nkramer: (looking up, sighs) well, you better get to work. \n\njerry: (sarcastic) thanks for the tip. \n\ngeorge: hey, buddies. \n\njerry: hey. hey, this is for you. (taps the gift) it's from.. uh, susan's roommate, sally. \n\ngeorge: oh yeah.. (starts to open it) sally called susan - said you guys really hit it off. \n\njerry: (annoyed at the thought) nobody hit anything off. she just gave me the box. (looks over at kramer. he is scraping the bbq sauce off jerry's clothes with a knife, then dipping some bread into it) what the hell are you doing? \n\nkramer: (looks up) i'm salvaging the sauce. what's the matter with you? (eats the bread) \n\njerry: (pleading) hey, hey, hey. come on, come on. \n\nkramer: (moving out into the living room) jerry, why don't you do a bit on styrofoam? \n\njerry: like what? \n\nkramer: well, uh.. (starts to impersonate jerry's act) \"what is this stuff? why do we need this stuff?.. and why do they make it so small..?\" \n\njerry: (confused) where's the punchline? \n\nkramer: it's all attitude.. (makes a humorous face - mocking jerry's) \n\ngoerge: (taking out a mat from the huge box) well, this is certainly a crappy gift.. \n\njerry: a door mat? that's what she had me lug up from memphis?! \n\ngeorge: pretty chintzy, huh? considering the money she makes.. she's a big executive for federal express. \n\njerry: federal express?! is she out of her mind? why didn't she just ship it?! \n\nkramer: look, it's personalized. (holds it up, reading) \"the costanzas\" \n\ngeorge: no, no. forget it. i don't want it. let's just get rid of it. \n\nkramer: well, maybe your father would be interested in that. \n\ngeorge: i doubt it. you know what he's doing now? he's putting a pool table in my old bedroom. \n\nkramer: (interested) oh yeah? well, maybe i'll go out there and knock a few balls around with him. you know, show him a thing or two.. \n\n[setting: george's old bedroom] \n\nkramer: so, what's your game? what do you like to play? \n\nfrank: eight ball. \n\nkramer: no, nothing doing. let's, you and me, play a game of straight pool.. hmm? \n\nfrank: you like to gamble, cosmo? \n\nkramer: yeah, now and then - you know how it is.. \n\nfrank: five dollars a game, huh? \n\nkramer: i'll break. \n\nfrank: okay. \n\n[setting: george and susan's apartment] \n\ngeorge: what's all this? \n\nsusan: oh, i'm just moving in some more of my stuff. \n\ngeorge: (muttering to himself as he walks to the bedroom) more stuff.. \n\nsusan: (calling out) oh, i put up my doll collection.. \n\ngeorge: oh my god! what is that?! \n\nsusan: (rushing in) what? what is it? \n\ngeorge: (staring at the doll) this doll (pointing) looks like my mother. \n\nsusan: george, it's a doll. \n\ngeorge: i know it's a doll, but it looks like my mother! \n\nsusan: (going back to the living room) oh, get outta here.. \n\n[setting: george's old bedroom] \n\nestelle: what's going on in here? (kramer hits the cue ball, it jumps up from the table and flies off screen) are you two still playing?! you've been up here three hours! \n\nfrank: we still haven't finished the first game. \n\nestelle: the first game?! \n\nkramer: (explaining why they are doing so bad) well, we're still, uh, learning the subtleties of the table. \n\nfrank: (to estelle) he knows the maestro. he could have the picture.. \n\nestelle: oh, forget about it. it's not your cousin. \n\nfrank: (yelling out) you don't know that! (estelle leaves, slamming the door) we're gonna go see him, huh? \n\nkramer: (judging up his next move) as soon as the game is over.. \n\nfrank: (sensing the game is going to last a long time) oh boy. \n\nkramer: eleven, corner pocket. (pulls back on his stick, accidentally crashing it into the window) \n\n[setting: george and susan's bedroom] \n\ngeorge: what is this thing doing here? \n\nsusan: oh, i used to love to sleep with my dolls when i was a little girl.. \n\ngeorge: uh, i'm sorry, i can't do this.. \n\nsusan: why? \n\ngeorge: i feel like i'm in bed with my mother. \n\nsusan: oh, stop it. \n\n[setting: jerry's apartment] \n\njerry: hey, elaine, you have got to buy this new electric toothbrush i just got - the ori-dent. \n\nelaine: (just making conversation) oh yeah? \n\njerry: oh, it's unbelievable. every time you use it you feel like you just came from the dentist! \n\nelaine: (mock enthusiasm) oh, that's dynamite. \n\njerry: hey, what are you doing tomorrow? you want to come see me on the charles grodin show? \n\nelaine: who else is on the show? \n\njerry: uh.. one of the three tenors. \n\nelaine: (interested) the three tenors? (stands up) which one?! \n\njerry: uh.. it's not poverotti.. it's not domingo.. \n\nelaine: (extremely excited) the other guy?! \n\njerry: (nodding) yeah, the other guy. \n\nelaine: (screams out in joy) my god! i can't believe the other guy's going to be on the show! \n\njerry: why? \n\nelaine: because i ruined this autographed picture of him that belonged to the maestro. you think i can go and get his autograph? \n\njerry: why not? \n\nelaine: (extremely giddy) wow! the other guy! \n\njerry: hey, you look awful. \n\ngeorge: (sitting on the sofa) i'm on no sleep, bro. \n\njerry: problem in the bedroom? \n\ngeorge: (muttering) susan has the doll collection.. one of the dolls looks exactly like my mother.. she likes to sleep with it. \n\njerry: wow. you were in bed with your mother last night? \n\ngeorge: (long pause) ..felt like it. i tell you, this doll is pretty spooky. (takes off his glasses, rubbing his eye) it's freakin' me out man. and now i got to go back out there and pick up this doormat. \n\njerry: i thought you didn't want the doormat. \n\ngeorge: i don't. susan wants to have it out when sally comes tomorrow. \n\njerry: sally? (getting upset) wait, wait a minute - she's coming to new york? \n\ngeorge: yeah, (smiling) susan said you'd be excited. \n\njerry: excited? i'm gonna kill her! she knew she was coming here and she made me carry that box?! \n\nelaine: who's sally? \n\ngeorge: susan's college roommate. \n\njerry: it's because of her that bottle got broke that i was going to give to charles grodin on his show. \n\ngeorge: so call her up and tell her to bring you another one. she'll be delighted to talk to you. \n\njerry: (while opening a cereal box) i will - don't worry. (plotting revenge) in fact, i'll have her bring up a whole case of the stuff. it'll be really heavy. let's see if she likes sitting on a plane with a big box on her lap! \n\nelaine: that's sounds pretty juvenile. \n\njerry: (pulling out the toy from the cereal box - he displays even more immaturity by holding it up, smiling) hey! a dinosaur! \n\n[setting: the maestro's office] \n\nfrank: his name was carlo costanza. we played together everyday until i was four. if i could just look through your photographs, maybe i could recognize him. \n\nmaestro: unfortunately those photographs are at home. \n\nkramer: well, listen, if you bring 'em by, maybe we could interest you in a game of pool.. yeah, frank here - he's got his own billiard room. \n\nfrank: (trying to concentrate) yes, it's, uh, it's.. uh, uh.. what do you call it, kramer? \n\nkramer: a billiard room. \n\nfrank: no, not billiard.. (scolding) not billiards.. it was.. come on, already. come on.. \n\nkramer: (confused) what? \n\nfrank: we call it.. the, uh.. \n\nkramer: (snaps) the place to be! \n\nfrank: the place to be! yes! it's the place to be. \n\nmaestro: (agreeing to a game) ah, then i shall be there. and now, gentlemen, (making dramatic actions) if you will excuse me - i must prepare for the symphony. \n\nkramer: oh, yeah? \n\nmaestro: (noticing the expressions) ohh, my pants. (begins putting on a near-by pair of pants) it's an old conductor's trick i learned from leonard bernstein. \n\nkramer: really? \n\nmaestro: you keep a perfect crease by not sitting in them before the performance. \n\nkramer: that's good thinking. \n\n[setting: jerry's apartment] \n\ngeorge: you see?.. you see?! \n\njerry: well, it doesn't look exactly like her. \n\ngeorge: jerry, come on. if my mother keeps shrinking, this is exactly what she's gonna look like in ten years! \n\njerry: why don't you just get rid of it? \n\ngeorge: i tried! i almost threw it down the incinerator, but i couldn't do it. the guilt was too overwhelming. (grabs the doll, opening the door to leave) susan's so attached to this thing. \n\njerry: wait, where are you going? don't take your dolly and go home. \n\ngeorge: hi, elaine. \n\nelaine: did you see that?! \n\njerry: i'm just glad it's outta here. (elaine exhales deeply - getting over the scare of the doll. she moves into the apartment) what's that? (pointing to a rolled up poster elaine is carrying) \n\nelaine: oh, it's a poster of the three tenors. \n\njerry: oh. (intercom buzzes, jerry answers it) yeah? \n\nsally: (through the intercom) it's sally. \n\njerry: oh, did you bring the bar-b-que sauce? \n\nsally: a whole case. \n\njerry: (letting her up) excellent. (to elaine) so, did you buy that electric toothbrush i was telling you about? \n\nelaine: (blunt, to the point) no. \n\njerry: how come? i told you - it's fantastic. \n\nelaine: eh, i like mine. \n\njerry: i've had yours, i'm telling you - this one is ten times better. don't you believe me? \n\nelaine: i don't want it. \n\njerry: (slightly confused by her behavior) i don't understand this. why wouldn't you want to get something that's better if i'm telling you it's better? and it's not a little better - it's much better. \n\nelaine: (not committing to the conversation) it doesn't matter to me. \n\njerry: come in. \n\nsally: (peppy) well, here i am! \n\njerry: oh, hi. elaine, this is sally. \n\nelaine: hi. \n\njerry: how was your flight? (wishful thinking) pretty uncomfortable? \n\nsally: (setting the box down on his table) actually, the seat next to me was empty, so, there was no problem at all. \n\njerry: (let down) oh.. (starts to open the box) oh, wait.. (holding up one of the bbq jars) this isn't the sauce that i asked for! \n\nsally: that's right. it's a special gourmet sauce. \"the pride of memphis!\" \n\njerry: (complaining) no, no. i wanted the one in the little bottle with that guy on it that looks like charles grodin! \n\nsally: this is much better. and frankly, in memphis, we think that other sauce as (whispering) kind of a joke. \n\njerry: i know it's a joke. it's supposed to be a joke! now i'm going on the charles grodin show with nothing. (sets the jar down angrily) nothing! \n\nsally: you could just do your material. \n\njerry: (peeved) i don't have any material! \n\nelaine: (yelling out) he's got nothin'! \n\n[setting: the coffee shop] \n\ndoll: georgie! don't eat with your hands! (george starts eating faster) why do you eat so fast?! you can't even taste it! \n\ngeorge: (losing it) don't tell me how to eat! \n\ndoll: you're wearing that shirt? you've had it for five years already! why don't you get a new shirt?! \n\ngeorge: (trying to keep it down) because i like this one! (notices people staring at him, he quickly gets up, collecting the his coat and the tiny replica) c'mon, let's go. let's go! (on his way out, he stops in front of a woman blocking his path) oh, hi.. (embarrassed about the doll, he sheepishly walks out) \n\nwoman: (to ruthie, the cashier) that man should really be in a sanitarium. (ruthie nods, agreeing) \n\n[setting: george's old bedroom] \n\nkramer: now this is remarkable. i'm lounging, and yet, my pants remain perfectly creased. \n\nfrank: it's him! (standing up) it's carlo costanza! \n\nkramer: come on. are you sure? \n\nfrank: i'd know him anywhere. \n\nmaestro: i've seen that man in tuscany. eccentric fellow. reputation of being kind of a village idiot. \n\nfrank: i still say we're related. \n\nmaestro: (recognizing the currently playing song) ohh, i love this piece. (turns it up, then pantomimes that he is conducting the instruments) \n\nkramer: alright, come on frank. it's your shot. \n\nfrank: (complaining) i can't make anything.. \n\nkramer: (like a professional) well, that's because you don't know how to follow through correctly. \n\nfrank: follow through? what do you mean? \n\nkramer: right here, come on, i'll show you.. (gets behind frank, holding the pool stick with him) take hold of your stick.. alright, bring it back slowly.. \n\nfrank: it's a little unnatural, but i think i'm getting the hang of it. \n\nestelle: oh, my god! \n\n[setting: jerry's apartment] \n\njerry: (still ticked off) that woman is such an idiot! i was gonna do this whole bit on that bottle - and now i got nothing to talk about. \n\nelaine: well, have you ever considered writing new material? \n\njerry: well, maybe if i didn't have so many people in my apartment all the time i'd be able to get some work done. \n\nelaine: (getting the hint) me? are you talking about me? \n\njerry: (deeply sarcastic) no. you're never here. \n\nelaine: (reflecting) boy, that doll was really freaky, wasn't it? \n\njerry: yeah. really. (forming and idea) hey, you know what? maybe i could talk about that on the show. \n\nelaine: what? \n\njerry: show the doll - show the picture of george's mother.. it's pretty funny. (moving toward the phone) i'm gonna call them. \n\nsally: hello? \n\njerry: hello, susan? it's jerry. \n\nsally: hi jerry, it's sally! \n\njerry: (disappointed) oh. is george there? \n\nsally: no, but he should be home soon. \n\njerry: uh, listen, this is important. tell him to meet me at the tv studio with a picture of his mother and that doll that looks like her. \n\nsally: is this for your comedy routine? \n\njerry: (obviously resents talking to her) yes. \n\nsally: (gasps) don't worry. (like a detective) i'm on the case. \n\n[setting: george's old bedroom] \n\nmaestro: (sighs slightly) i, uh, think i'll get some air. (slowly leaves) \n\nkramer: yeah.. (sizes up his next shot. his stick jams into the window as he draws back) see? this is no good.. (looks around the room. his sights fall on the maestro's baton) hey, the baton. (chalks it up) i got a hunch, fat man, i can't miss. (measures up his shot) 13 in the side pocket. (does just that) giddy-up. (moves around to the other side of the board, judging his next move) six in the corner. (hits it in) this table's mine. (a series of kramer's plays are displayed, and, on the last ball of the game..) you know where it's going.. \n\n[setting: the charles grodin show dressing room] \n\nelaine and jerry: hey! \n\nelaine: is george here? \n\njerry: not yet. (points over to a man sitting in one of the room's chairs. whispers) the other guy. \n\nelaine: it's.. .. you! it's really you! oh, i'm such a huge fan of yours. would you mind signing this poster for me? \n\ncarreras: my pleasure. (reaches for a pen as elaine unravels her poster) \n\nelaine: (as he is signing) oh, thank you so much. (he finishes. elaine gives out a happy gasp) thank you so much, mr.. (tries to read his signature) camaro. (carreras gives her a look as he is getting up) mr. casea? (he walks off as elaine rolls the picture back up. jerry gives his \"that's a shame\" face) well, whatever. (to jerry) i'm gonna take this to the maestro. he's, he's playing at the queens convalescent center. \n\njerry: (joking around) well, that's one hell of a gig. (turning around, he picks up a box labeled \"ori-dent\") hey, look, i got something for you. the ori-dent! \n\nelaine: (mock joy) ohh.. thank you. (accepts the gift) huh.. (struggles under the size) wha-- why does a toothbrush come in such a big box? \n\njerry: well, it's a delicate mechanism - it, you know, needs lots of packaging. \n\nelaine: (still trying to get a grasp on the package) how am i supposed to carry this thing? (she looks up to see jerry taking his pants off) what are you doing? \n\njerry: well, i want to sit down. \n\nelaine: so? \n\njerry: it's a trick i just learned from kramer. it keeps a crease in the pants. (folds his pants over the head of a chair, then sits down in another. when he sees elaine's staring at him, he makes a \"tada!\" gesture with his hands. elaine holds her hand up - as if to say \"i'll see ya.\", and while she's slowly walking out jerry gives her a salute) \n\n[setting: george's old bedroom] \n\nmaestro: (making his exit, he lays the charm on mrs. costanza) madame, you have been an extremely gracious hostess. (kisses her hand) \n\nestelle: (coy) ohh.. thank you, maestro. (giggles to herself as the maestro leaves) \n\nfrank: (holding up a picture) here, take a look at this. \n\nestelle: (looking at it) yeah, what is it? \n\nfrank: it's carlo. i found him! \n\nestelle: (handing the picture back) you've been cooped up in this room too long. \n\nfrank: (yelling out) you never support me! let's see what george says about this.. where're my pants? (takes his pair off a rack and leaves) \n\nkramer: (taking his pair off, he inspects them) aw, beautiful! \n\n[setting: the charles grodin show dressing room] \n\nsally: hey there, mr. hairy legs! \n\njerry: (surprised to see her, he gets up) where's george? \n\nsally: don't worry, i brought your doll.. (pulls out an extremely different doll - this one resembles a baker) tada! \n\njerry: (complaining) no! that's the wrong doll! \n\nsally: jerry, i saw the doll you were talking about - not funny! this doll's much funnier. look, it has a little bowtie, and a cute little hat.. i think it's a riot! \n\njerry: (slow whispering) this is a nightmare. \n\nsally: oh well, i'll be watching. (sets the doll down, then crosses her fingers) don't screw up. (leaves) \n\njerry: my pants! \n\nstagehand: mr. seinfeld, you're on. \n\n[setting: nyc street] \n\nmaestro: elaine? what a surprise. \n\nelaine: i know you're very busy, but i just wanted to come by and give you this. \n\nmaestro: ohh.. (looking at the box) ori-dent - that electric toothbrush i've heard so much about.. \n\nelaine: no, no, no. not the toothbrush.. (holds out the poster) this. \n\nmaestro: ohh, what a sweet gesture. and autographed poster of my favorite tenor, with.. those two other guys. oh, elaine, this is magnifico! \n\nelaine: oh, well, i just felt so bad about what happened in tuscany.. \n\nstagehand: (yelling from off-camera) maestro, you're on! \n\nmaestro: oh, elaine.. wait for me after the concert? we'll celebrate. \n\nelaine: oh, ok! (picking up the ori-dent box, she knocks over a bottle of wine. it spills all over the poster) \n\n[setting: george and susan's apartment] \n\nsusan: i want to know why you took my doll out of the house. \n\ngeorge: i just wanted a second opinion. \n\nfrank: (holding up the picture) take a look at this. doesn't that look like my flesh and blood? of course, your mother- (his attention is drawn over to susan's doll. like george did earlier, he starts to imagine that the doll is scolding him as his wife would) \n\ndoll: oh, stop bothering everybody with that picture. it's ridiculous! \n\nfrank: (walking toward the doll) ridiculous?! i'll show you ridiculous! (struggles with susan for possession of the doll) come here! \n\nsusan: (pleading) no, mr. costanza! no, no! \n\nfrank: (holding out the head in his hand, he addresses it) there! now what have you got to say for yourself?! \n\ngeorge: (to susan) i told you it looked like her.. \n\n[setting: a street in tuscany] \n\nfrank: (sets a gift he's brought down) carlo! it's me, frank! (attempts to hug the guy, but he resists - pushing frank away. he scolds frank in another language) i'm your cousin, frank! aren't you carlo? \n\nman: carlo? no. mi nome e giuseppe. \n\nfrank: (realizing) what do you know.. alright. (picking up his present) i guess i was wrong. (walks off) \n\ngeorge: (joyful) june. it's june. \n\ngeorge: (high-fiving) hey! \n\ngeorge: it's june.mark's michelle is a dog. \n\ngeorge: june, june, june. \n\ngeorge: (to passerby) hey, he-hah. it's june, june. \n\ngeorge: it's juu-uu-une! hey hay. yes. \n\ngeorge: i love juu-uuu-uu-uune! \n\ngeorge: june. juune, baby! \n\njerry: what? \n\ngeorge: the catering hall screwed up. the wedding is delayed until june. it's like a stay of execution. \n\njerry: dead man walking. \n\ngeorge: (pointing to jerry in joyous agreement) ha-ha-hah. this is my lucky day. \n\njerry: well, one outta twenty thousand. that's not bad. \n\ngeorge: yeah. hey, wait a second, you know, good news for you too. susan's best friend, hallie? broke up with her boyfriend. \n\njerry: she did? \n\ngeorge: yeah. \n\njerry: so? wheels? \n\ngeorge: in motion. the wheels are in motion. \n\njerry: beautiful. \n\ngeorge: aah, hey. (enthusiastic) if this works out, forget about it. vacations together, movies together, dinner together. it..it's almost as good as if i didn't get married. \n\njerry: so, set it up. you know what, we could have dinner at the friars club. \n\ngeorge: the friars club? \n\njerry: yeah, i'm thinking of joining. pat cooper said he would put me up for membership. \n\nkramer: hey everybody. (to jerry) listen, uh, do me a favour, will you? i got a hot date tonight with connie. knock on my door, wake me up in twenty minutes, alright? \n\njerry: catnap? \n\nkramer: no, no, no, no. (comes in) this is evolutionary. i been reading this book, on leonardo de vinci. see, that means 'from vinci', d'you know that? \n\njerry: (deadpan) that must be some book. \n\nkramer: yeah, well, turns out that the master slept only twenty minutes every three hours. now, that works out to two and a half extra days, that i'm awake per week, every week. which means, if i live to be eighty, i will have lived the equivalent of a hundred and five years. \n\njerry: just imagine how much more you'll accomplish. \n\nkramer: oh, i got a lot of things in the hopper, buddy. \n\njerry: i didn't know you had a hopper. \n\nkramer: (smiling) oh, i got a hopper. a big hopper. \n\npeterman: alright, people, i'd like to begin with a hearty hail and well-met good fellow, to bob grossberg, who's joining us from business affairs. \n\nbob: thanks. hi everybody. \n\npeterman: bob, we have a little baptism by fire for you, so to speak. \n\nelaine: (whispers) poor bastard. \n\npeterman: (to bob) i want you to handle all the fact-checking and the copy-editing for the new catalogue. \n\nbob: ah, could you repeat that? \n\npeterman: (slower and louder) why don't you handle all the copy-editing? \n\nbob: (apologetic) i..i'm sorry. what? \n\npeterman: (louder still) copy-editing! \n\npeterman: eh, never mind. (turns to elaine) elaine, you do it. \n\njerry: hi, i'm jerry seinfeld. pat cooper made a reservation for me. \n\nmaitre d': yes, mr seinfeld, but uhm, all gentlemen are required to wear jackets in the dining room. \n\njerry: (downcast) oh, i'm sorry. \n\nhallie: (smiling) how embarrassing this must be for you. \n\njerry: (jocular) you just bought your own dinner. \n\nmaitre d': no problem. please, follow me. \n\njerry: (passing hallie) 'scuse me. \n\ngeorge: (smiling) ho ho. funny. isn't he funny? funny guy. ha ha ha. \n\ngeorge: friars. \n\njerry: hey, not bad. (pointing to crest) i kinda like this little thing here. \n\nmaitre d': this way please. \n\ngeorge: hup, here we go. here we go. \n\ngeorge: (adamant) ah, c'mon! i'm telling you, i can coach for the nfl. it's not that hard \n\nsusan: (to hallie) mmm, mm, mm. hallie (points to her plate) taste this fish. it's really delicious. \n\njerry: (to george) that might be the stupidest thing you've ever said. \n\ngeorge: (to jerry) oh, get outta here. \n\njerry: (to george) i mean, come on. (a thought occurs) no, the stupidest thing you ever said was when you said steve kroft from sixty minutes is the same guy from *seals and croft*. \n\nhallie: (to susan) mmm, it is good. \n\nsusan: (to hallie) what do you think about having fish for the wedding? \n\ngeorge: (to jerry) you watch the old videos. (insistent) i'm telling you, look at him. \n\nhallie: (to susan) oh. remember (indistinct) wedding? \n\njerry: oh, come on. \n\ngeorge: look... \n\njerry: alright. \n\njerry: (looking at kramer) this is nice. \n\nkramer: yeah, morning. \n\njerry: morning? \n\nkramer: yeah, what time is it? \n\njerry: (looks at watch) ten-thirty. \n\nkramer: (pleased) ah, see. (rubs his hands together) i got the whole night ahead of me. (looks at jerry) boy, that's a nice jacket, huh? \n\njerry: (realising) ohh, i don't believe this. i forgot to give it back. it belongs to the friars club. \n\nkramer: yeah, i like that crest. (he shakes cereal into the bowl) alright, here we go. \n\njerry: breakfast? \n\nkramer: (pouring cereal) oh yeah. most important meal of the day. \n\njerry: so this da vinci sleep is working out? \n\nkramer: (enthusiastic) oh, i'm percolating, jerry. i'm telling you, i have never felt so fertile. i'm mossy, jerry. my brain is mossy. listen to this idea. (fetches a spoon from the drawer) a restaurant that serves only peanut butter and jelly. (clicks tongue) \n\njerry: what d'you call it? \n\nkramer: p b and j's. what d'you think? \n\njerry: (deadpan) i think you need more sleep. \n\nkramer: (dismissive) ahh. \n\njerry: so, how'd your date work out with the mysterious connie? \n\nkramer: i am telling you, this woman is strange. she never wants to leave the apartment. it's almost like she doesn't wanna be seen with me. \n\njerry: oh, now you're being ridiculous. \n\nkramer: (laughing) he he, yeah. \n\njerry: (indicates the bowl of cereal) no milk? \n\nkramer: oh, i'll be back. \n\nkramer: (quietly) jerry. \n\nkramer: (quietly) hey jerry. \n\nkramer: (prodding jerry) c'mon buddy. \n\njerry: (startled) kramer! \n\nkramer: you awake? \n\njerry: (confused) wha..? what time is it? \n\nkramer: w...it's four. \n\njerry: (aghast) four in the morning?! \n\nkramer: yeah. \n\njerry: well, what's wrong with you? \n\nkramer: i'm bored. i got all this free time on my hands, i dunno what to do. you wanna do something? \n\njerry: no. would you just get out? \n\nkramer: you wanna rent a movie? \n\njerry: no! \n\nkramer: well, what am i gonna do? \n\njerry: ready for lunch? \n\nelaine: (irked) i'm stuck here, editing the stupid catalogue, because of stupid bob grossberg. \n\nelaine: listen, there is something really suspicious about this guy. every time mr peterman tries to assign him any work, he says he can't hear, and it all gets dumped on me. \n\njerry: you think he's faking? \n\nelaine: i don't know. but i'd like to try that earpiece on, see if it's real. \n\nbob: hey elaine. (he spots jerry) oh, you have a friend. \n\nbob: (to elaine) just wanted to say hi. \n\nelaine: bob, you know what? i'm kinda swamped here. you think you could give me a hand with some of the catalogue? \n\nbob: (cupping his hand behind his ear) i..i'm sorry. what? \n\nelaine: (slower and louder) i'm kind of swamped. \n\nbob: thank you. i'm having lunch with mr p. i better get going. \n\nelaine: did you see that? did you see that, jerry? \n\njerry: that was him? \n\nelaine: yes. \n\njerry: somehow i thought he'd be taller. \n\nelaine: alright, listen, we'll have to do this again some other time, okay? i got a lotta work to do. \n\njerry: (standing) alright, i'll see you later. \n\nelaine: alright. \n\njerry: hey, bob. \n\njerry: bob. \n\njerry: hey, bobby, over here. \n\njerry: bob. oh, bob. \n\njerry: (louder) bob! \n\nbob: hi. \n\njerry: (urgent whisper) elaine. \n\nelaine: (makes an irked noise) \n\njerry: i was just in the bathroom. \n\nelaine: (really doesn't want to know) okay, jerry, please, please. i'm really busy here. \n\njerry: no, no, no. i was just in the bathroom with that bob guy. \n\nelaine: so what? \n\njerry: no, i kinda tried to test his hearing. \n\nelaine: get out! what'd you do? \n\njerry: well, i kinda snuck up behind him at the urinal and tried to see if he could hear me. \n\nelaine: (hopeful) and? \n\njerry: well, he flinched, sort of. \n\nelaine: what d'you mean, sort of? what'd he do? \n\njerry: well, he kinda moved his head, you know. it mighta been on the zip up, i dunno. \n\nelaine: so you don't know anything? \n\njerry: actually, no. \n\nelaine: (sarcasm) alright, good job. \n\njerry: right. \n\njerry: come in. \n\ngeorge: (entering) last night, huh? was that something, or was that something? \n\njerry: that was something. \n\ngeorge: ah. she's great, isn't she? \n\njerry: (positive) fantastic. fantastic woman. \n\ngeorge: i told you. \n\njerry: i'm nuts about her. \n\ngeorge: you think she could be an 'it'? could she be an 'it'? \n\njerry: she could be an 'it'. \n\ngeorge: (claps hands triumphantly) we might have an 'it'! \n\njerry: she's got 'it' written all over her. \n\ngeorge: she's got everything, right? (counts on his fingers) she's intelligent, she's smart, she's got a great sense of humour. \n\njerry: well, i dunno. i didn't really talk to her. \n\ngeorge: well, she's smart. you take my word for it. \n\njerry: whatever. \n\ngeorge: (gleeful) hehee. w..we could be like the gatsbys. didn't they always like, you know, a bunch of people around, and they were all best friends? \n\njerry: that doesn't sound right. \n\ngeorge: no. so, tonight she's got tickets for that show she's been working on. the flying sandos brother. \n\njerry: flying sandos. beautiful. \n\ngeorge: great. seven-thirty, alright? \n\njerry: walk me down to the friars. \n\ngeorge: sure. so, uh, jerry, there's an empty apartment in my building. if you and hallie want, we could try and hold it, may... \n\njerry: it's not here. \n\ngeorge: what? \n\njerry: th..the jacket, it's not here. it's gotta be here somewhere. \n\nkramer: oh, boy. \n\njerry: (to kramer) thanks for that four a.m. wakeup call last night. (frustrated) where the hell is that jacket? \n\nkramer: oh, the one with the crest. \n\njerry: yeah. \n\njerry: oh, well, that's at the cleaners. \n\njerry: the cleaners? how did it get there? \n\nkramer: well, i, uh, i borrowed it last night and it got a little dirty. \n\njerry: (irritated) great. \n\nkramer: (laughing to himself) somehow i dozed off and woke up in a pile of garbage. \n\njerry: somehow? you've had an hour and twenty minutes sleep in three days! \n\nkramer: well, so, look, the cleaner said you could pick it up tonight at six. \n\njerry: alright. i just hope i can get it to the friars club before the show. \n\ngeorge: won't be a problem...(mumbles) \n\njerry: (to kramer) hey. \n\njerry: (louder) hey!! \n\nkramer: watch out, boy. \n\nelaine: can you give us a hand with some of these boxes, bob? \n\nelaine: bob! \n\nelaine: (sexily) i want you so bad, bob. you turn me on... \n\nelaine: ...so much. you're so damn...sexy. \n\nelaine: (sexy) ohh. i'm starting to unbutton. \n\nelaine: (dropping the sexy voice) anything getting through? bob? \n\nhallie: well, they perform all over. europe mostly. \n\ngeorge: a-ha, huh. (mumbles) tours. \n\nhallie: yeah. \n\njerry: sorry, sorry i'm late. \n\ngeorge/susan: hey! \n\nsusan: jerry. \n\ngeorge: isn't that the uh, friars club jacket? \n\njerry: yeah, it wasn't ready on time. i have to return it after the show. \n\ngeorge: sure, sure, sure, sure. (patting jerry on the shoulders) how about these seats? are these fantastic, huh? huh? i feel like lincoln. \n\njerry: yeah. well, let's hope this evening turns out a little better. \n\nkramer: so, uhm, are you sure you don't wanna go to the movies? \n\nconnie: mmm, no, cosmo. i like just being here with you. \n\nkramer: oh, it's uh, it's a bold adventure. \n\nkramer: ooh. well, this is uh, risky business, huh? i'm all a-twitter. \n\nsandos brother 1: how would you kind people like to lend a hand with our next trick? \n\njerry: (smiling) i don't think so. \n\nsandos brother 1: please, take off your jacket. \n\njerry: my jacket? \n\nsandos brother 1: yes, the jacket. (turns to the crowd) what do you say, ladies and gentlemen? \n\nsandos brother 1: (to jerry) can't argue with that. \n\nhallie: c'mon. \n\nsusan: do it. come on, jerry. \n\ngeorge: give him the jacket. \n\njerry: (giving in) alright. \n\nsandos brother 1: and now, we say the magic word. (gestures with his hand) agrabah! and we make it disappear. \n\nconnie: (passionate) oh cosmo. mm-mmm, cosmo. oh cosmo. \n\nconnie: (uncomfortable) uh, honey, can you move a little, this hurts. \n\nconnie: (worried) cosmo? \n\nconnie: (panicky) oh my god. cosmo, wake up! \n\nconnie: cosmo? \n\nconnie: (horrified) oh my god! he's dead! he's dead. \n\nconnie: (into phone) yeah, tommy, this is connie. you gotta help me. some guy dropped dead on top of me. (listens) i can't call the cops, 'cos joey might find out. (listens) i can't. i'm stuck. you gotta help me. \n\ngeorge: this is very exciting. the inner sanctum. \n\njerry: hi. i..i was in the audience earlier. you threw my jacket down. i just wanted to pick it up. \n\nsandos brother 2: jacket? what jacket? \n\njerry: (explaining) i had a jacket with a crest on it. you came into the audience, you threw it away. agrabah. \n\nsandos brother 2: a..are you sure it was me? \n\njerry: well, it was either you or one of your brothers. \n\nsandos brother 2: well, two of them have left already. \n\nsandos brother 2: (shaking his head apologetically) no. \n\njerry: it doesn't even belong to me. it belongs to the friars club. \n\nsandos brother 2: sorry. \n\nhallie: jerry, i'm sure it'll turn up. \n\njerry: (cynical) i'm sure it won't. \n\nhallie: don't worry. i'll get the jacket back. \n\ngeorge: (cheerful) alright, there you go. she's gonna get the jacket back. (claps hands) so, let's go get some coffee, huh? \n\njerry: (downcast) no, i'm a little tired. i think i'll go home. \n\nsusan: aww, that's too bad. \n\ngeorge: really? \n\njerry: yeah, we'll do it another time. \n\nsusan: (bright) george, we'll go. \n\ngeorge: i, uh, oh, broke a shoelace today. \n\nsusan: oh, i can get you shoelaces tomorrow. \n\ngeorge: okay. \n\nsusan: so, what colour? \n\ngeorge: brown. \n\ngeorge: maybe a black. \n\nsusan: mmm. \n\nwaitress: more coffee? \n\ngeorge: (urgent) no! check! (quieter) please. \n\njerry: (looking after the guys) that nut is always up to something. \n\nkramer: hey!! sh..! shii! mama!! \n\nkramer: aah! aagh! \n\npeterman: elaine. i think i've been working you a little too hard, lately. \n\nelaine: (shrugging it off) oh. \n\npeterman: so, i have two tickets for you (holds up the bits of card) to the flying sandos brothers magic show. \n\nelaine: (pleased) ah. \n\npeterman: it is a real hoot. \n\nelaine: (delighted) well, thank you mr peterman. \n\npeterman: ah, the tickets are for tonight. so you and bob can knock off a little early, so you both can get ready. \n\nelaine: mr peterman, you... \n\npeterman: (interrupting) there's no need to deny it, elaine. i heard every word you said. \n\npeterman: and i know you wouldn't be just having fun with his handicap. (staring away) that kind of cruelty would be grounds for dismissal. \n\nelaine: (resigned) of course, mr peterman. \n\njerry: (into phone) tell 'em i'll come down and talk to 'em. okay, bye. (to george) well, that was the friars club. d'you think they're gonna let a jacket-stealer join? i don't think so! they're gonna charge me eight hundred dollars for the jacket, and i gotta deal with pat cooper! \n\njerry: (worked up) wh..what kinda show is that sandos brothers? they take your jacket, then they just throw it? i never heard of that! \n\ngeorge: it's a little unusual. so, uh, susan and i were thinking, uh, dinner at our house saturday night. just the four of us. \n\njerry: (unenthusiastic) uhh, i don't think so. \n\ngeorge: (worried) why not? \n\njerry: (impassive) ah, i'm a little turned off. \n\ngeorge: (standing) c'mon, what're you talking about? \n\njerry: ahh, i'm, i'm kinda soured. \n\ngeorge: you're soured? \n\njerry: yeah, i'm soured. \n\ngeorge: don't be soured. \n\njerry: i'm sorry. i'm soured. \n\ngeorge: (animated) what're you kidding me? we were all getting along so well. where is all this coming from? \n\njerry: well, you know, frankly, i don't think she was too concerned about my jacket. \n\ngeorge: (animated) what're you talking about?! she's very concerned! she said she was gonna get it back. \n\njerry: (indifferent) yeah, we'll see. \n\ngeorge: (worked up) because if she gets it back, then you'll have no reason to be sour. you'll de-sour, right? \n\njerry: i'll try and de-sour. \n\ngeorge: (aggravated) oh, that's not good enough! you don't try and de-sour. you have to sweeten too! \n\njerry: (sharp) i'll try! i'll try and de-sour and sweeten. \n\ngeorge: i wanna get it back when we were the gatsbys. \n\njerry: i still don't know what that means. \n\ngeorge: (neither does he) yeah, well. \n\nkramer: god. \n\njerry: (astonished) oh god! what happened to you?! \n\nkramer: (animated) she tried to kill me jerry! \n\njerry: who? \n\nkramer: (shouts) connie! \n\njerry: what'd she do? \n\nkramer: i don't know! (building to a shout) but i woke up in the hudson river in a sack!! i think she drugged me, but she's a murderer and i'm calling the cops. \n\njerry: (bewildered) why would she try and kill you? \n\nkramer: (animated) well, isn't it obvious? she doesn't want anybody else to have me! \n\nkramer: (to door) gah! \n\njerry: hey, there's uncle milty. \n\ngeorge: (pleased) yeah, it is. \n\njerry: (pointing) and there's david steinberg. \n\ngeorge: the comedian, or the manager? \n\njerry: the manager. \n\njerry: (to george) hey, there's pat. (calls) hey, pat. \n\npat: hey, jerry. what the hell went wrong? what's the matter with you? are you a kleptomaniac, or what? \n\njerry: i forgot to take it off. \n\npat: (dubious) you forgot to take it off? oh, you go into a department store, you put a suit on, and you walk right out. what are you some sort of an idiot? \n\njerry: i'm sorry. \n\npat: where's the jacket? \n\njerry: well, one of the gypsies took it. \n\npat: (skeptical) aww, the gypsies took it! of course, new york has a lot of gypsies! oh, on every block there's a gypsy! \n\ngeorge: (meekly) well, it's true. i saw it. \n\npat: (probing) excuse me, are you an entertainer? are you in showbusiness? \n\ngeorge: no, i uh... \n\npat: (interrupting) then what am i talking to you for? (to jerry) jerry, bring the jacket back tomorrow. \n\njerry: alright. \n\ngeorge: wait a minute, wait a minute. \n\ngeorge: look at that guy. right there. isn't that the guy from the show? he's..he's wearing the jacket. \n\njerry: god, you're right. \n\ngeorge: (motioning jerry to follow) c'mon. \n\nmaitre d': wait a second! excuse me gentlemen, are you members? \n\njerry: well, i'm a prospective member. \n\nmaitre d': until then, (pointing) that's the way out. \n\njerry: but that guy has my jacket. \n\nmaitre d': c'mon, let's go. \n\ngeorge: excuse me, the guy is wearing a jacket that my friend is... \n\nmaitre d': come on. \n\njerry: come on. \n\nmaitre d': let's go. \n\ngeorge: if i could talk to the guy for just a sec... \n\nbob: these seats are fantastic. it was really nice of mr peterman to give us these tickets. \n\nelaine: (flat) yeah, yeah. was nice. \n\nbob: (smiling) yeah. got our own little private box here, don't we? \n\nelaine: (pushing bob away) get offa me! stop it. stop it. \n\nelaine: get offa me! \n\nelaine: get a hold of yourself, bob! (throwing bob back between the seats) get a hold of yourself! \n\njerry: i dunno how that guy gave us the slip at the friars club. \n\ngeorge: i told you, he probably went out the back. \n\njerry: ouf. \n\njerry: hey. it's you! (pointing) th..that's my friars club jacket! \n\nsandos brother 1: no, it is not. it is my jacket. \n\njerry: (adamant) no, no, no. that's my jacket, give it back. \n\nsandos brother 1: no, it is not. this is mine. \n\njerry: c'mon i need it. \n\njerry: (determined) i wanna join. i need it to become a member. \n\ngeorge: give 'im the jacket already! \n\nsandos brother 1: (yelling) help! help! (foreign language) azobar! azobar disay! \n\ngeorge: what's he yelling about? they're stealing jackets here! \n\njerry: can you believe it?! \n\njerry: (examining) hey george, you know what? i think this crest is different. it's got a moose on it. \n\ngeorge: moose? \n\njerry: yeah. (subdued) i don't think this is the jacket. \n\nhallie: no, it's not. \n\nhallie: this is the jacket. \n\njerry: ohh, you got the jacket back. \n\ngeorge: ohh, yeahh. \n\njerry: (taking the jacket) thank you. \n\nhallie: it got a little dirty, so they wanted to clean it before they gave it back to you. \n\njerry: oh. (smiling) oh, that's nice of 'em. \n\ngeorge: (smiling) that is really nice. \n\nhallie: yeah. \n\njerry: yeah. \n\nhallie: yeah. \n\njerry: yeah. \n\ngeorge: this is nice. \n\njerry: yeahh. \n\nhallie: yeah. \n\ngeorge: (forced buoyancy) hey, you know, let's call susan, we'll go have coffee. \n\nhallie: (flat) i'll see you at the wedding. \n\ngeorge: (moody) great! now she's sour! \n\njerry: maybe she'll sweeten. \n\ngeorge: (angry) she won't sweeten, and i'm bitter! \n\nsandos brother 1: (pointing) there they are! \n\ngeorge: here. (panicky) we'll leave it here for you! \n\nkramer: (pointing) that's her, officer. \n\nconnie: (shocked) kramer! oh my god, i thought you were... \n\nkramer: (animated) what? sleeping with the fishes? i guess i woke up! \n\ndetective: you're under arrest for the attempted murder of cosmo kramer. \n\nconnie: (defensive) i didn't do anything. \n\nkramer: (sarcastic) oh, yeah! yeah! \n\ndetective: get your coat, we gotta take you in. \n\nconnie: can i call my lawyer? \n\ndetective: okay, go ahead. \n\nconnie: (on phone) you gotta meet me at the police station. they're arresting me for attempted murder. \n\njackie: attempted murder? of whom? \n\nconnie: this guy, kramer. \n\njackie: oh. (hesitantly) cosmo kramer? \n\nconnie: (surprised) yeah, that's right. \n\njackie: (adamant) i don't want nothing to do with it. \n\njerry: i'm looking for a crested blazer \n\ncraig: a crested blazer.. \n\njerry: i've worn one once and i really think it did something for me. \n\ncraig: (turning around) yes .i think we may have something. (picks up a blazer) the joseph aboud crested blazer is the finest.... that's hand ticking around the crest and these are the world famous corriso buttons made from the finest andulo corn. \n\njerry: (softly) hmm.. they'll match my sneakers. \n\ncraig: it looks fabulous on you... shall i wrap it up? \n\njerry: you know...i'm not sure. i'll tell you what. i'll come back later with someone and see what they think. \n\ncraig: (doubtful) a hum! \n\njerry: really i'll be back. \n\ncraig: yeah! \n\njerry: so i didn't like the crest all that much., but the guy spent fifteen minutes with me so to get out of the store i told i wanted to see what someone else thought.... and then he makes a face like he doesn't believe me. \n\nelaine: ah! so he knew that you were making it up.! \n\njerry: yeah..... he caught me so here's what i want you to do. come back with me to the store and we'll pretend to look at the coat. \n\nelaine: that's ridiculous. why do do you want to go back there if you don't want the coat? \n\njerry: because he thinks i was lying and i want to show him i wasn't. \n\nelaine: but you were!! \n\njerry: but if you go back with me , then i'm not. \n\ngeorge: (still on the phone) all right fine.... whatever \n\njerry: (to george) problems with the house guest? \n\nelaine: what house guest? \n\ngeorge: this friend of susan's is staying with us for two weeks...now am i wrong or is that excessive? \n\nkramer: well bob sacamano he stayed with me once for a year and a half. \n\nelaine: who is he? \n\ngeorge: he's a wig master \n\nelaine: what is a wig master? \n\ngeorge: he's with the touring company of joseph and the amazing technicolor dreamcoat. he's the guy in charge of the wigs. \n\njerry: boy.. imagine.. liking wigs to the point it becomes a career choice. \n\nkramer: about some tickets george , you know i'd kill for a peek.. \n\ngeorge: (leaving) yeah, sure, sure ,,, i got to drop my car off at the new lot. \n\nkramer: euh what...what lot is that? \n\ngeorge: jiffy park. it's incredible.. seventy-five dollars a month. \n\nkramer: seventy -five bucks a month! \n\ngeorge: yeah and you get this really cool t-shirt when you sign on.. \n\nkramer: oh i'm down. \n\njerry: (proud of himself) remember me? i said i 'd come back with someone and i did. surprised?. \n\ncraig: no i believed you. \n\njerry: yeah.... well elaine. \n\nelaine: (looking up to the salesman) \n\ncraig: oh!... hello i'm craig. \n\nelaine: .....hi. \n\ncraig: well (picks up the blazer again) here it is. \n\nelaine: oh!!.....joseph aboud .. and look at this hand ticking around the crest. \n\ncraig: you know your coats? \n\nelaine: well i'm in the biz .. i work for j. peterman. \n\ncraig: i love j. peterman. \n\nelaine: (giggling) ohhh!!. \n\ncraig: i especially enjoy the catalogue, those fanciful narratives really take me away.. \n\nelaine: ohhh!! really ..well you know what, i write those. \n\ncraig: no!!! \n\nelaine: yeeeahh!!! \n\njerry: (impatiently cutting in) hey elaine what about the crest.? what d'you think of the crest here. \n\njerry: you what?? \n\nelaine: i think it's great. i think you should get it. \n\ncraig: well .... will it be check or credit card? \n\njerry: (giving up) check. \n\ncraig: i'll need you to write down your phone number on the check for me. (turning to elaine) perhaps you could do the same. \n\nelaine: (laughs and giggles like a schoolgirl) \n\njerry: you weren't supposed to say that. \n\nelaine: but i really did like it \n\njerry: that's not the point. you put me in a position where i had no choice. \n\nelaine: uhn... sorry! \n\njerry: and what about that guy asking you out right in front of me? \n\nelaine: what is the big deal!! \n\njerry: ...'s very emasculating, he doesn't know the nature of our relationship. you're there approving new clothes.....that's a girlfriend job! how dare he!! \n\nelaine: he dared.... \n\nethan: (sitting in the couch and combing his wigs)hi george.. how was your day? \n\ngeorge: good....good day (not too convincing) you? \n\nethan: i am getting so much work done..... see? \n\ngeorge: very nice \n\nsusan: (walks in) hi sweety how was your day? \n\nethan: i already ask him that. he said good...good day.... \n\nkramer: (frantically pulling at his doorknob) thank god you're home. i'm wiped out. i drop my car at jiffy park and i forgot to take my apartment keys off the ring. so you got my spare? \n\njerry: no i gave it back to you \n\nkramer: y'did.........phfwelll. look.. hum..... can you take me over there? \n\njerry: oh come on!! \n\nkramer: oh come on jerry, it's all the way over to twelfth avenue.. \n\njerry: i didn,t tell you to park in that lot .. now someone's gonna have to drive you every time you need your car.? take the bus! \n\nkramer: i'm not going to take the bus that's why i got a car! \n\njerry: forget it. \n\nkramer: awright i'm gonna get george to pick me up. \n\njerry: he wont take ya.. \n\ngeorge: (grabs the phone quick) got it, got it,...hello? \n\nkramer: listen, can you take me over to the jiffy park? \n\ngeorge: yeah,yeah!! i'll pick you up right now.....all right all right....hey! gotta go. \n\ngeorge: so the wig master.......the wig master said you could stop by the theater tonight.. and he'll show you around. \n\ngeorge: would you pick a station!!!!! \n\nkramer: i like 'em all(still fiddles with the radio) \n\ngeorge: aw great. now the volume knob fell off \n\nkramer: (seems to pickup something on the floor) ....'s'this? \n\nkramer: gawd!!! \n\ngeorge: what? \n\nkramer: that's a....ca.....ca..........condom!! \n\nelaine: how do you like working there at the .... hum...andover shop? i mean it's a pretty swanky upscale clientele. \n\ncraig: hmmm \n\nelaine: except for jerry!(laughs) \n\ncraig: so did you see anything you'd like.... \n\nelaine: oh!!! \n\ncraig: cause i can get you a considerable discount. \n\nelaine: really!...well actually yeah i did see this ......'mazing little black dress...it was sleeveless.... \n\ncraig: the nicole miller \n\nelaine: yeah..yeah... \n\ncraig: i'll take care of it. \n\nelaine: really....but i barely know you. \n\ncraig: well...hum.....we'll just have to do something about that. won't we. \n\nelaine: ah! ah!ah! \n\njerry: hey! greg \n\ncraig: it's craig \n\njerry: ah! right...nice. lunch with elaine? \n\ncraig: yes lovely. \n\njerry: you know 'm just curious, how did you know she wasn't my girlfriend? \n\ncraig: well i could just sense it \n\njerry: because you know we used to go out. \n\ncraig: oh ! you did \n\njerry: oh yeah we went way out and wild. \n\nelaine: hey jerr... \n\njerry: hi elaine. \n\nlady: would you like to buy a rose for your wife? ( to craig) \n\njerry: how do you know she's not my wife? \n\ngeorge: i want to know how did that get into my car? \n\nattendant: hey look ..you walk in to this city you got to expect things are gonna stick to your foot. you open in your car and bing!! condom. \n\ngeorge: that doesn't explain the lipstick on the dashboard? \n\nattendant: here take a few shirts.... \n\nattendant: i'm terribly sorry mr kramer but we can't get your car now, the keys seems to have been misplaced. \n\nkramer: wait a minute i need those keys. i wont be able to get into my apartment. \n\nattendant: aaye mr kramer....you like cadillacs? \n\nkramer: ...yeah i like cadillacs (cautiously) why ? what you got on your mind? \n\nattendant: take that pink eldorado cadillac over there , it's a mary kay car.... \n\nkramer: mary kay uh? \n\nattendant: mary kay car.. \n\nkramer: (to george) well listen see you later ..thanks for driving me by.. \n\nhooker: hey!! whats happening? \n\ngeorge: we're gonna hang around here a little while....something funny going on here \n\nelaine: you were wrong about craig . he's a very sweet guy. \n\njerry: well, what about the ponytail? \n\nelaine: what about it? \n\njerry: c'mon ponytail ...get real. \n\nelaine: all i know he's promised me a discount on that dress. \n\njerry: of course he did ..the guy's working ya. \n\nelaine: ah! jerry i've been around long enough to know when i'm being worked. \n\njerry: have you slept with him yet? \n\nelaine: i just met him this morning. \n\njerry: it's been known to happen....... telling you right now elaine, this guy 's gonna dangle that dress in front of you like a dirt farmer dangles a carrot in front of a mule. \n\nelaine: . well this is all very flattering... \n\njerry: (interrupts)like a shark fisherman with a bucket of (?) ch.... \n\nelaine: ok.... \n\njerry: (continues)like a shrimp farmer.... \n\nelaine: okay!!! \n\nethan: well that's the grand tour ... aw but i save the best for last... \n\nkramer: oh yeah!! \n\nethan: behold .. the technicolor dreamcoat. \n\nkramer: oooooh ...pops .... wow!! spectacular. \n\ngeorge: s'cuse me ..do you mind if i ask you a few questions? \n\nhooker: are you a cop?? \n\ngeorge: oh no nonono i'm not a cop ...heum... i work for the yankees. \n\nhooker: urghh they stink. \n\ngeorge: nevertheless.. i was wondering if you and your .friends are doing business here at the jiffy park.... you know ..hum what do you people call it? turning tricks? anyway i...i....found a condom in my car....and i'm not saying it's yours but.... i want to know if i should just change parking lots. \n\nhooker: get lost mister, i'm trying to make a living here. \n\ngeorge: i'll pay you for your time....i just ..i just need some information . how much do you want? ten....fifteen? you have change for twenty? \n\nhooker: fifteen? \n\nsusan: (walks in) george? \n\ngeorge: hi honey.. \n\nsusan: ..so you're telling me the truth? \n\ngeorge: of course i'm telling the truth. \n\nsusan: because i have to be able to trust you... if i can't trust you then there's no way that this can work. \n\ngeorge: really! \n\nsusan: yeah. \n\ngeorge: well then...then you really have something to think about because.....you know if there's any doubt in your mind ....and.. and,, it doesn't even have to be a big doubt, you know even a tiny doubt, a dot of a doubt.. and..... \n\nsusan: there's no doubt. \n\ngeorge: because if there's any doubt at all i...i feel we should cultivate it. \n\nsusan: cultivate it? \n\ngeorge: yes, you know. deal with it .we have to deal with the doubt, susan the doubt!! must be dealt with. \n\nsusan: i have no doubt george. do you? \n\ngeorge: (hesitates) ...nooooooooooo... \n\nelaine: you know... i can't wait to get that dress.. \n\ncraig: yeah... it should arrive eminently. \n\nelaine: arrive? \n\ncraig: yes! from milan. \n\nelaine: but you said it was in the store!. \n\ncraig: no no no we sold out we had to order some more. \n\nelaine: but i thought .. nicole miller was made....... \n\ncraig: (interrupts) eeen!!! \n\nian: hey craig. \n\ncraig: elaine this is een. \n\nelaine: hi e-an \n\nian: een.. \n\nelaine: e-an \n\ncraig: een... he's a friend a mine from england \n\nian: (word missing) what are doing? \n\ncraig: i'm working at the andover shop actually....you should come by. i'll get you a great discount. \n\nian: maybe i will. nice meeting you. \n\nelaine: oh..nice to meet you. \n\ncraig: bye \n\nian: ..cheery-o \n\nelaine: bye eeeen. \n\nelaine: so you're giving him a discount too? \n\ncraig: hummm why so surprised? \n\nelaine: hem!! no reason. \n\njerry: you know that clothing salesman had a lot of nerve hitting on elaine right in front of me. he stands to make a big commission too on that jacket with the crest that nobody seems to like. you know what i'm gonna do.? i'm gonna take that jacket back.. i'm putting this guy ....right out of commission.... \n\nkramer: heeeeeummmrph.... i'm gonna turn in \n\njerry: turn in? \n\nkramer: yeah,i had a tough day \n\njerry: it's only nine o clock. \n\nkramer: well ..i don't argue with the body jerry. it's an argument you can't win. \n\njerry: i can't go to sleep at nine o clock! \n\nkramer: well you can go to your room and read. \n\njerry: hey look ,you know, you're the one who's locked out. i'm letting you stay here. you're wearing my bathrobe. you should adapt to me. \n\nkramer: but i'm tired.. \n\njerry: oh why don't you go sleep over at newman's. \n\nkramer: aah! he's got a girl up there. this quilt is too thin...i know i'm gonna get cold. i don't even fit on this couch. don't even know if i'm gonna sleep.... \n\njerry: well that's all i got. \n\nkramer: can i sleep with you? \n\njerry: huh? \n\nkramer: well you got that big comfortable bed and that nice warm quilt. \n\njerry: kramer , there's no way you're sleeping with me. \n\nkramer: why? \n\njerry: why? \n\nkramer: yeah! \n\njerry: do i really have to explain why? \n\nkramer: well i......( elaine pops in at that moment) \n\nelaine: hi!. \n\nkramer: hi...........what's that? \n\nelaine: squire's walking stick. i had to write about it for the catalogue. \n\nkramer: wow. \n\nelaine: you want it? \n\nkramer: yeaaahmm.... \n\nelaine: you can have ,i don't need it anymore. \n\nkramer: ooh mama...( walks away) \n\nelaine: ok so ..i am positive you are wrong about craig. \n\njerry: yeah why? \n\nelaine: because he told a man he'd give him a discount too... a man jerry. \n\njerry: so ,who is he? \n\nelaine: some friend of his from england. \n\njerry: don't you see?...........it's all a big scam. \n\nelaine: you're nuts! \n\nkramer: how do you know he's not wondering the same thing about you? \n\nelaine: what d'you mean? \n\nkramer: what do i mean?.. well perhaps he thinks that you're working him for the discount. shaking that little butt of yours into big, big savings.... and then when you get it,you know, you drop him like a hot potato. \n\nelaine: aawwh please..... \n\nkramer: now see the two of you need to work on trust... and then and only then will there be a free exchange of sex and discounts.. cornerstones of a healthy relationship....and now if you would (taps twice on the door) excuse us. we need to get to bed. \n\nkramer: (softly)hmmm....patio furniture's on sale. \n\ngeorge: excuse me...huh... i think i made a big mistake. i'd like my deposit back please. \n\nattendant: whats the problem \n\ngeorge: you got hookers turning tricks in my car. how's that for starters. \n\nattendant: haaan! that is all hearsay. \n\ngeorge: allright, very good i'd like my car and my deposit back please \n\nattendant: can't do it' \n\ngeorge: whadday'mean.? \n\nattendant: if you read the agreement you signed the deposit is not refundable. \n\ngeorge: well does it say anywhere in the contract about my car being used as a whorehouse? 'cause i don't remember reading that clause either.. \n\nattendant: what can i tell you buddy. take it up with consumer affairs. \n\ngeorge: . all right , just give me my car and let me get the hell out of here. \n\nattendant: well that's going to be a problem \n\ngeorge: why? \n\nattendant: it's all the way in the back. can't get it out for a couple of days. \n\ngeorge: what are you talking about.. i want my car!! \n\nattendant: we ask that you please bear with us. \n\ngeorge: bear with you! this is a parking lot people are supposed to be able to get \n\nattendant: ideally.. \n\njerry: excuse me i'd like to return this jacket. \n\nteller: certainly. may i ask why? \n\njerry: ........for spite... \n\nteller: spite? \n\njerry: that's right. i don't care for the salesman that sold it to me. \n\nteller: i don't think you can return an item for spite. \n\njerry: what do you mean? \n\nteller: well if there was some problem with the garment. if it were unsatisfactory in some way, then we could do it for you, but i'm afraid spite doesn't fit into any of our conditions for a refund \n\njerry: that's ridiculous, i want to return it. what's the difference what the reason is. \n\nteller: let me speak with the manager...excuse me .............bob! \n\nteller: ........spite.....(manager walks over) \n\nbob: what seems to be the problem? \n\njerry: well i want to return this jacket and she asked me why and i said for spite and now she won't take it back. \n\nbob: that's true. you can't return an item based purely on spite. \n\njerry: . well so fine then ..then i don't want it and then that's why i'm returning it \n\nbob: well you already said spite so...... \n\njerry: but i changed my mind.. \n\nbob: no...you said spite...too late. \n\nkramer: it's halloween (not sure) \n\ncharmaine: get a calendar honey! it's the 90's \n\nkramer: hey! elaine.. \n\njerry: oh! hey!! \n\nkramer: these are my friends jerry and elaine. \n\njerry & elaine: hi! how 'r u doing? \n\ncharmaine: hi i'm charmaine \n\nethan: i'm ethan \n\nkramer: yes, she's the costume designer and he's the wig master for the show. \n\njerry: hey you're staying with my friend george. \n\nethan: right george! i get the feeling he doesn't want me there. \n\njerry: well he doesn't even want himself there. \n\ncharmaine: why don't you sit down and join us? \n\njerry: all right. (sits down) \n\nelaine: i can't i 've got to meet a friend. \n\nkramer: well what are we ...dog meat. \n\nethan: (to waiter) ....champagne coolies , please. \n\nethan: (to elaine) you've got really beautiful hair. \n\nelaine: oh thanks, thank you very much. \n\nethan: have you ever thought about selling it .it would make a brilliant wig.. \n\njerry: they make wigs out of human hairs? \n\nethan: ..and pay plenty for them. \n\nelaine: well you guys are gonna have fun here so..bye take care \n\nkramer: yeah. see ou later.. \n\nall: bye, now... \n\ncharmaine: oh! i just remembered i 've got to get the dreamcoat from the dry cleaners \n\nkramer: hey! you gonna let me try the other one right?' \n\ncharmaine: yeah. but you gonna have to be really careful with it , it's my only backup. \n\nkramer: hey! who do you think you're talking to. \n\ncharmaine: ok. buh- bye! \n\nkramer: bye!! \n\njerry: bye! \n\nethan: there's your champagne coolie. well looks like it's just you and me cowboy!. \n\njerry: ...guess so. \n\nelaine: well, here we are. \n\ncraig: i....am..beat.(sits on the couch) \n\nelaine: (sighs) \n\ncraig: ohh! that's nice. \n\nelaine: so.ehmmmm. so, do you have any ideas when the nicole millers are coming in? \n\ncraig: oh! yeah. the nicole millers ...hemm.. well the funniest thing. \n\nelaine: huh! \n\ncraig: i've learned that the new shipment's coming in by boat... which does tend to take a little longer with, you know ,what with the waves and all .. so you'll just have to be a little bit patient . \n\nelaine: hummm.... so you've no idea when.. they'll arrive. \n\ncraig: (yawns) ...nno....i really don't...... \n\nethan: how can she go with a guy like that , he's a mess... i just don't see them together at all \n\njessie: ethan? \n\nethan: yes.. \n\njessie: . hi it's me jessie....george hamilton's personal assistant. \n\nethan: . right, right. \n\nethan: how you doin'? \n\njessie: nice to see you.. \n\nethan: this is jerry. \n\njerry: hello.. \n\njessie: yeah , hummm ( turns back to ethan) ethan ,what brings you in to town. \n\nethan: i'm touring with joseph and the amazing technicolor dreamcoat \n\njessie: you're kidding... listen maybe you and i should...ehmmm get together . have you been on the slide at club usa it's ...intense. \n\njerry: (interrupts) excuse me...excuse me... are you asking him out ? \n\njessie: yeah...i guess you could say that.. \n\njerry: right in front of me!. how do you know we're not together. two guys, sittin' laughin' drinking champagne coolies. \n\njessie: i dunno i just didn't think you were. \n\njerry: well we're sitting here together. why wouldn't you think that. \n\njessie: i dont know. i just didn't. \n\njerry: well it's very emasculating.. \n\nelaine: hello. \n\nbob: . hi this is bob from the andover shop. i'm trying to reach craig stewart. he left this number. \n\nelaine: uhmmm huh! is it important.? \n\nbob: well..... \n\nelaine: let me ask you something. ahemm..do you know when the nicole millers are coming in from milan?. \n\nbob: nicole millers, we're not expecting any nicole millers, in fact we have too many as it is. \n\nelaine: well do you have any in a... size four.? \n\nbob: yes several.. just tell him he doesn't have to be in tomorrow before eleven. \n\nelaine: (sarcastically) oh! yeah i'll make sure he gets the message. (looks at the sleeping craig and thinks) they make wigs out of human hair? (still thinking, ethan's voice) and pay plenty for them. \n\nkramer: (looks inside the car and gasps) ohhh sweet maria. hey! lets go. \n\nkramer: hey what are you doing in my car? hey!hey!hey! where you going. \n\nhooker: hey. you just cost me some money mr.(starts hitting kramer) \n\nkramer: cool it lady ( they struggle and we here a siren) \n\npolice: policer officer. freeze right there. \n\npolice: ok big daddy. take the hat off...... awright turn to your right...(kramer hesitates) i said turn pimp. \n\nkramer: (cries) i'm not a pimp.!!!. \n\ngeorge: i believe the doors on the bathroom stalls, here at the stadium, don't offer much by way of privacy. but i was thinking if we extend the doors all the way to the floors...... \n\nmr. steinbrenner: all the way to the floor! what are you crazy! you'd suffocate in there. your lucky you have any doors at all. you know when i was in the army...... hey costanza. what's that your eating over there? it looks pretty tasty. \n\ngeorge: it's a calzone, sir. \n\nmr. steinbrenner: a calzone huh. pass it down here. let's have a look at at it. i want a little taste. come on, come on. pass it down here. that's a good boy. okay. what's in this thing? \n\ngeorge: uh. cheese, pepperoni, eggplant. \n\nmr. steinbrenner: eggplant. yes. that's a hell of a thing. okay let's get back to business. okay here you go. very good, very good. excellent. excellent calzone you got there costanza. okay a little jealous now. okay lets go. ok last week....... you know that eggplant was very good. everybody out. i got eggplant on my mind. costanza get me couple of those calzones right now. pronto. move out. pigstein what's an eggplant calzone. must have one. everybody out. out. \n\nelaine: one of those fabric wholesalers. this guy todd gack. i won a bet from him. \n\njerry: what bet? \n\nelaine: he bet me dustin hoffman was in star wars. \n\njerry: dustin hoffman in star wars!?! short jewish guy against darth vader. i don't think so. \n\nelaine: that's what i said. \n\njerry: so the bet was that the loser has to buy dinner? \n\nelaine: yeah. \n\njerry: huh. \n\nelaine: what? \n\njerry: no. nothing. \n\njerry: what's with you? \n\nkramer: feel this. \n\njerry: wow.that's hot. \n\nkramer: yeah. it's piquing hot. it's fresh out of the dryer. hey elaine you have to feel my pants. \n\nelaine: i'll see you later. \n\nkramer: oh. all right. you don't know what your missing. i'm loving this jerry. i am never putting on another piece of clothing unless it's straight out of the dryer. \n\njerry: so know every time you get dressed. you are going to go down to the basement and use the dryer. \n\nkramer: oh yeah. it's a warm and wonderful feeling, jerry. so what are you doing later? \n\njerry: i got a date with nikki. \n\nkramer: oh yeah she's a beauty. \n\njerry: she's also quite bold. \n\nkramer: oh bold and beautiful. \n\nmr. steinbrenner: i am loving this calzone. the pita pocket prevents it from dripping. the pita pocket. (phone rings)what is it watson? a lost and found. no. i don't think we need that. if people keel over because they lost something that's there tough luck. you got a drip on your mouth by the way. \n\ngeorge: you know a lost and found could be a good idea. \n\nmr. steinbrenner: hold on watson. you like lost and found george? \n\ngeorge: definitely. \n\nmr. steinbrenner: all right lost and found. but these got to be a time limit. we're not running a pawn shop here. \n\njerry: hey, elaine. \n\nelaine: hi jerry! \n\njerry: this is nikki. \n\nnikki: hi! \n\nelaine: hello. this is todd gack. \n\njerry: oh of course. todd gack. you did you bet was in star wars? sammy davis jr. \n\nelaine: so what movie are you guys seeing? \n\nnikki: \"means to an end\" \n\nelaine: oh. we were going to see that but it was sold out. so were going to see\"blame it on the rain\" \n\njerry: why don't you see what you can do? \n\nnikki: okay. \n\nelaine: what's she going to do? there's no more tickets. \n\njerry: we'll see. \n\ntodd: hey jerry. do you like cigars? \n\njerry: yeah. why? \n\ntodd: i am going to montreal tomorrow and they sell them dirt cheap. \n\njerry: hey,that might be a nice idea for george's wedding. \n\ntodd: so do you want a box? \n\njerry: sure. if there cheap why not. \n\ntodd: all right i buy a box and give to elaine. \n\nnikki: okay two tickets\"means to an end\" \n\njerry: told you. \n\nelaine: how did you do that? \n\nnikki: i just talked to the manager. \n\njerry: all right. enjoy\"blame it on the rain\" \n\ngeorge: there putting in a lost and found because of me. there's a time limit but still. \n\njerry: there really building a utopian society up there huh.and you tribute all this to the calzone. \n\ngeorge: yeah. i am like a drug dealer. i got the guy hooked. i am having lunch at his desk everyday this week. he doesn't make a move without me. it's very exciting. \n\njerry: with you two guys at the helm. the last piece of the puzzle is in place. \n\ngeorge: so let me ask you a question about the tip jar. i had a little thing with the calzone guy this week. i go to drop a buck in the tip jar and just as i am about to drop it in he looks the other way. and then when i am leaving he gives me this look think thanks for nothing. i mean if they don't notice it what's the point. \n\njerry: so you don't make it a habit of giving to the blind. \n\ngeorge: not bills. \n\njerry: so george. remember when i told you nikki gets whatever she wants. we are at the movies last night. it's sold out. nikki goes and talks to the manager. right in. \n\ngeorge: beautiful women. you know they could get away with murder. you never she any of them lift anything over three pounds. they get whatever they want whenever they want it. you can't stop them. \n\njerry: she's like a beautiful godzilla. \n\ngeorge: without thousands of fleeing japanese. \n\nkramer: hey buddy. \n\njerry: what the hell is all this? \n\nkramer: i am looking for quarters for the dryer. \n\njerry: why can't you do this on your table? \n\nkramer: because i don't have a table. \n\nelaine: hey. \n\njerry: hey. so how was\"blame it on the rain?\" \n\nelaine: huh. yeah thanks for getting us tickets too. \n\njerry: oh!! let me ask you a question. was the movie part of the bet? \n\nelaine: no. we were both in the mood for one. \n\njerry: you know elaine, it is not my way to intrude on the personal lives of close fiends.... \n\nelaine: oh is that so. \n\njerry: absolutely. but i feel i must inform you that what happened last night was more than a simple bet. \n\nelaine: what are you talking about? \n\njerry: come on. dustin hoffman in star wars. he made a bet he knew he was going to lose just to take you to dinner \n\nelaine: if he wanted to ask me out why didn't he just ask me. \n\njerry: because if he doesn't ask you out he doesn't get rejected. he has found a dating loop hole. \n\nelaine: i don't buy it. \n\njerry: so what happened after the movie? \n\nelaine: nothing. he walked me home. \n\njerry: to the door? \n\nelaine: yeah. \n\njerry: that's a date. \n\nelaine: no it's not. \n\njerry: but i never walk you home. \n\nelaine: that's just because your a jackass. \n\nkramer: ah!! i found a quarter. anybody want there clothes heated up? \n\njerry: no, no. \n\nelaine: no, no. \n\njerry: so how did you leave it with him? \n\nelaine: i am supposed to meet him to pick up your cigars. \n\njerry: that's another loop hole. that's two dates without asking you out. \n\nelaine: your crazy! \n\njerry: crazy like a man. \n\nworker: number 49. \n\ngeorge: you know my last name is costanza. that's italian. so you and i are like country men. pisano's! \n\nworker: $ 6.50 your change. \n\ngeorge: and i always take care of my pisano's. so here is a little something. (drop in tip and worker looks the other way, so george decides to take it out and try again only to get caught) \n\nworker: hey! you steal my money!! \n\ngeorge: no no. that's not what i was trying to do. \n\nworker: i know what you try to do. get out. don't ever come back ever. \n\ngeorge: i got your calzones mr. steinbrenner. \n\nmr. steinbrenner: beautiful. i am starving george. \n\ngeorge: i thought tomorrow maybe we'd try a little corn beef. \n\nmr. steinbrenner: corn beef. i don't think so. it is a little fatty. \n\ngeorge: how about chinese? \n\nmr. steinbrenner: uhhhhh. no. too many containers. big mess, big mess. too sloppy.i want to stick with the calzones from pisano's. that's the ticket. \n\ngeorge: i just thought it would be nice. a little variety. \n\nmr. steinbrenner: no, no, no. george let me tell you something. when i find something i like i stick with it. from 1973 to 1982 i ate the exact same lunch everyday. turkey chili in a bowl made out of bread. bread bowl george. first you eat the chili then you eat the bowl. there's nothing more satisfying than looking down after lunch and seeing nothing but a table. \n\nelaine: thanks for the dinner. \n\ntodd: well i had to give these cigars and we were both hungry. \n\nelaine: hey todd. let me ask you a question. um. was this whole date thing just a way of asking me out? \n\ntodd: what? \n\nelaine: i mean dustin hoffman in star wars? \n\ntodd: elaine that was a legitimate bet and i lost so i bought you dinner. \n\nelaine: oh all right. okay well, goodnight. \n\ntodd: hey, if your not doing anything saturday do you want to meet somewhere? \n\nelaine: see what is that? is that a date? \n\ntodd: why can't two people go and do something without it being a date? \n\nelaine: all right. i am sorry it's not a date. \n\ntodd: no way. so i'll see you saturday night? \n\nelaine: all right. \n\ntodd: pick you up at 800 p.m. \n\npolice officer: do you know what the posted speed limit on this road is? \n\njerry: i was got to be 55. \n\npolice officer: that's right it is. do you know how fast you were going? \n\njerry: a lot faster than that! \n\npolice officer: step out of the car sir. \n\njerry: okay dokey \n\npolice officer: can i have your license and registration please? \n\njerry: absolutely. nikki! \n\nnikki: yes. \n\njerry: would you mind bringing the officer the registration? \n\nnikki: not at all. \n\npolice officer: i got you on the radar at 93 miles per hour. \n\njerry: you must have gotten me when i slowed down to take that curve because for a while there i was doing well over 100. \n\nnikki: officer. hi. do you really have to give us a ticket? \n\njerry: all right nik. that's it. \n\nkramer: hey buddy. i am waiting for my shirt. \n\njerry: you got your shirt in my oven!?! \n\nkramer: i didn't have any quarters for the dryer. anyway this is better. and it's more convenient. \n\njerry: for both of us. \n\nkramer: and i have a lot more control. i have one shirt going for 10 minutes at 325 degrees. \n\njerry: what's wrong with your oven? \n\nkramer: i am baking a pie! \n\njerry: yeah. \n\ngeorge: yeah. \n\njerry: come on up. \n\nkramer: you got cigars, huh. \n\njerry: i got some cubans for george's wedding. they were more than i wanted to pay for but what the hell! \n\nkramer: oh yeah baby. spit, spit. what are these?\"perducto de peru\"jerry, if you think these are cubans you have another thing coming. \n\njerry: peru! i paid $300 bucks for these. i could have bought a house in peru for $300 bucks! \n\nkramer: you got ripped buddy. \n\njerry: i got to pay this todd gack guy $300 bucks just so he has some excuse to see elaine again without asking her out. \n\nkramer: that's a nice name. todd gack. is that dutch? (dingggggg) oh baby. here we go. uh momma.(putting his fresh out of the oven shirt on) hey george hey. \n\ngeorge: well this is bad. i am really in a bad situation now. \n\njerry: so what is steinbrenner going to do if he doesn't get his calzones? \n\ngeorge: what's he going to do? that's exactly the point. nobody knows what this guy is capable of! he fires people like it is a bodily function. \n\njerry: why don't you get someone else from the office to go get pisano's for you? \n\ngeorge: because before you know it he'll be having lunch with him. you know how these interoffice politics work. \n\njerry: no. i never had a job. \n\nkramer: i decided to go with the brown one 's. (pants) \n\ngeorge: what the hell is this? \n\njerry: kramer's cooking up some corduroy. \n\ngeorge: there has got to be some way to get back into pisano's. \n\nkramer: pisano's. that's the place by the stadium right? \n\ngeorge: yeah. you've heard of it? \n\nkramer: yeah. newman raves about it. it's on his mail route. he goes by there everyday. \n\ngeorge: i'll see you guys later. \n\njerry: what kind of pie are you cooking? \n\nkramer: huckleberry. \n\nnewman: you certainly are in a bind. \n\ngeorge: yeah. and since you go buy there everyday. i was hoping that we could help each other out. \n\nnewman: oh well. let me perfectly blunt. i don't care for you costanza. you hang out at the west side of the building with seinfeld all day and just it up wasting your lives. \n\ngeorge: are you going to help me or not? \n\nnewman: all right, all right. i'll help you but i will except something in return. \n\ngeorge: what? \n\nnewman: well for starters i want a calzone of my own..... \n\ngeorge: all right. \n\nnewman: and a slice of pepperoni pizza and a large soda and three times a week i will require a canolie. \n\ngeorge: that's a little steep don't you think? \n\nnewman: you know i hear mr. steinbrenner can be a bit erratic. i would hate to see him when he's hungry. \n\ngeorge: all right, all right. \n\nnewman: do we have a deal? \n\ngeorge: but i have to have them by one o'clock. he's very regiment about his meals. \n\nnewman: i know exactly how he feels. pleasure doing business with you. do come again. ha, ha, ha, ha. \n\nelaine: this is nice. \n\ntodd: gack. party of four. \n\nelaine: party of four? who are we meeting? \n\ntodd: mom! dad! this is elaine. \n\nmom: hello. \n\nelaine: hellllllooooo. \n\nmom: nice meeting you. \n\ntodd: bye mom. \n\nmom: she's wonderful. \n\nelaine: what the hell was that? \n\ntodd: what? \n\nelaine: why did you introduce me to your parents? \n\ntodd: there nice people. i thought you would like them. \n\nelaine: come on todd. admit it, this is a date. \n\ntodd: why is this a date? \n\nelaine: saturday night with your parents. unless i'm your sister this is a date. \n\ntodd: elaine. i don't understand why you can't meet someone else's parents without classifying it as a date. \n\nelaine: well if it's not a date then what is it? \n\ntodd: it's a lovely evening together. \n\nelaine: i don't believe this. \n\ntodd: well i am getting a cab want to join me? \n\nelaine: no. i'll just walk home. \n\ntodd: okay goodnight. (goes to kiss her) \n\nelaine: now what was that? \n\nnewman: hello. what 's this? \n\ngeorge: well i was dropping of the calzone money for the week.... um shouldn't you be at work by now? \n\nnewman: work? it's raining. \n\ngeorge: soooooo \n\nnewman: i called in sick. i don't work in the rain. \n\ngeorge: you don't work in the rain? your a mailman.\"neither rain nor sleet nor snow.....\"it's the first one. \n\nnewman: i was never that big on creeds. \n\ngeorge: you were supposed to deliver my calzones. we had a deal! \n\nnewman: i believe the deal was that i get the calzones on my mail route. well today i won't be going on my mail route! will i. perhaps tomorrow. \n\ngeorge: but i'm paying you! \n\nnewman: yes thank you. (slams door) \n\ngeorge: newman!! \n\nnikki: peru? i thought you wanted cigars from cuba? \n\njerry: i did. \n\nnikki: well if these aren't what you wanted then why did you pay him? \n\njerry: well what could i do? unless you pay him a visit. \n\nnikki: okay. \n\ngeorge: kramer! \n\nkramer: hey you! \n\ngeorge: look i need you to do me a favor. i need you to get me lunch at pisano's. \n\nkramer: what happened to newman? \n\ngeorge: he called in sick. \n\nkramer: oh yeah right it's raining. \n\ngeorge: can you do it? \n\nkramer: what time do you need it at? \n\ngeorge: 100 p.m. do you need any money? \n\nkramer: no. i got eight tons of change. i'm loaded. \n\nkramer: hey hold that bus! \n\nkramer: hey. it's really wet out there. \n\nworker: what can i get you? \n\nkramer: i here you make a pretty mean calzone. \n\nworker: calzone! \n\nkramer: yeah calzone. \n\nworker: the best! \n\nkramer: all right. lay them on me. i'll take three. \n\nworker: three calzones. \n\nkramer: hey. that's a big oven. huh. listen. i was wondering if you could do me a favor. \n\nelaine: hey todd. \n\ntodd: hi. you know nikki. \n\nelaine: yeah sure. \n\nnikki: wait. elaine will settle this. what's the\"m\"stand for in richard m. nixon? \n\nelaine: milhouse. \n\nnikki: i told you so. he said it was moe. you owe me a dinner. \n\nworker: your order is ready. three calzones and one shirt and jacket. \n\nkramer: oh. this is all burned up. look at this. \n\nworker: what the hell do i know about cooking a shirt? what the hell is this? your paying in pennies? \n\nkramer: that's all i got. \n\nworker: no. you have to have bills. paper money. you can't pay with this. \n\nkramer: i told you this is all i got. \n\nworker: then no calzones. \n\ngeorge: what happened? where have you been? \n\nkramer: the guy wouldn't give them to me because i wanted to pay in change. \n\ngeorge: what the hell happened to your shirt? \n\nkramer: he overcooked it. it's ruined. \n\ngeorge: your clothes smell just like pisano's. there's another italian place on jerome. maybe i can fool him. \n\nmr. steinbrenner: (on phone) that's right. do you want to say it again. i'll say it again. i hadn't had a pimple since i was eighteen and i don't care that you don't believe me or not. and how's this. your fired. okay your not. i am just a little hungry. where's costanza with my calzone. it's 115. he's late. that smell. i have to call you back. costanza. he's in the building. costanza is in the building and he's not in this office. costanza! i'll get you. \n\njerry: stupid cigars. you know if i didn't send nikki over to talk to him they wouldn't be together. \n\nelaine: these are terrible. \n\njerry: it's like trying to smoke a chicken bone. \n\nelaine: what kind of a name is todd gack anyway. \n\njerry: i think it's dutch. i got to get going. \n\nelaine: where are you going? \n\njerry: i... uh....promised nikki that i'd walk her dog for her. \n\nelaine: but she broke up with you. \n\njerry: i know, i know. but some how she explained it to me and i couldn't say no. \n\nelaine: it smells like a rubber fire. \n\njerry: what's that? \n\nelaine: i said rubber fire. \n\njerry: oh. \n\nelaine: did you ever pay todd for these things? \n\njerry: actually it's being taken care of right now. \n\nkramer: you gack? \n\ntodd: yeah. \n\nkramer: here's your money. \n\nmr. steinbrenner: george. why do these clothes smell like pisano's? \n\ngeorge: because they were heated up there. \n\nmr. steinbrenner: heating up your clothes? that's not a bad idea. \n\nwilhelm: and you can tell the players that i reimburse the trainer for the cigarettes and the dive checks. \n\ngeorge: sorry, the players will be reimbursed? \n\nwilhelm: the trainer, george. tell the players i'll reimburse the trainer. what's the matter with you? this is the third time i've had to repeat myself. \n\ngeorge: sorry, mr wilhelm. \n\nwilhelm: look, sorry doesn't cut it. we're running a ball club here george. you've got to pay attention. \n\ngeorge: i know, sir. it won't happen again. \n\nwilhelm: lemme see, i uh, i had an assignment for you... uh. \n\nwilhelm: lemme think here. \n\npeterman: elaine. \n\nelaine: hi, mr peterman. \n\npeterman: you know what a huge fan i am of john f kennedy. \n\nelaine: i do. \n\npeterman: it was the peace corps that gave me my start in this business. (nostalgic) clothing the naked natives of bantu besh. \n\nelaine: the pygmy pullover. \n\npeterman: sotheby's is having an auction of jfk's memorabilia. one item in particular has caught my eye. the presidential golf clubs. to me, they capture that indefinable romance that was camelot. \n\nelaine: whatever. \n\npeterman: but, unfortunately i will be out of town with my lady-friend and therefore unable to bid on the lot. i was hoping maybe you would go in my stead. \n\nelaine: oh. (pleasant surprise) oh yeah, i'd be happy to. uhm, how much d'you want this thing? (smilingly) i mean, you know, how high are you willing to go? \n\npeterman: i would see no trouble in spending up to, say, ten thousand dollars. have my secretary give you a signed cheque. \n\nelaine: wow. \n\nwilhelm: ...when you're done george, and bring it directly to me. mr steinbrenner is very interested in this. \n\ngeorge: yes, sir. \n\nwilhelm: (drying his hands and heading for the door) yes, george. i want you to make this project a top priority. \n\ngeorge: i will, sir. top priority. \n\nwilhelm: (exiting) top priority. \n\ngeorge: top priority. \n\ngeorge: so he walks out of the stall, he's been talking the whole time. \n\njerry: he pulled an lbj on you. \n\ngeorge: lbj? \n\njerry: lyndon johnson, used to do that to his staffers. \n\ngeorge: no kidding? \n\njerry: oh yeah. he'd hold national security meetings in there. he planned the hanoi bombing after a bad thai meal. \n\ngeorge: well, i still don't know what i'm supposed to do. i don't even know what my assignment is. \n\njerry: ask him to repeat it. tell him there was an echo in there. \n\ngeorge: i can't. he's been on my case about not paying attention. besides, it's too late, i already told him i heard him. \n\njerry: you know what you do? ask him a follow-up question. tell him you're having trouble getting started, and you want his advice. \n\ngeorge: yeah, follow-up question, that'll work. \n\nkramer: hey buddy. \n\njerry: hey. \n\ngeorge: hey. \n\njerry: can i have my keys... \n\nkramer: (tossing car keys to jerry) yeah. \n\njerry: (catching keys) ...back, please? \n\nkramer: you shoulda come, jerry. \n\nnewman: we made quite a haul. \n\ngeorge: where'd you go? \n\nkramer: price club. \n\ngeorge: why didn't you take your car? \n\nkramer: ah, the steering wheel fell off. i don't know where it is. \n\nkramer: what're you doing. (fetching the bottle from the trash) don't throw that away. \n\nnewman: well, i'm not paying the five cents for that stupid recycling thing. \n\nkramer: you don't pay five cents, you get five cents back. here, read the label here. (reads from bottle) vermont, connecticut, massachusetts, new york. refund, (brings bottle up close to newman's eyes) vrrup, five cents. \n\nnewman: (taking bottle) refund? \n\nkramer: yes. \n\njerry: well, what d'you think the hoboes are doing? \n\nnewman: i don't know, they're deranged. \n\ngeorge: awright, listen, can you uh, gimme a lift back to my place? \n\njerry: no i can't. i gotta pick up elaine. i'm taking her to this kennedy auction. \n\ngeorge: awright, i'll see you later. \n\nnewman: (peering at bottle label) what is this 'mi, ten cents'? \n\nkramer: that's michigan. in michigan you get ten cents. \n\nnewman: ten cents!? \n\nkramer: yeah. \n\nnewman: wait a minute. you mean you get five cents here, and ten cents there. you could round up bottles here and run 'em out to michigan for the difference. \n\nkramer: no, it doesn't work. \n\nnewman: what d'you mean it doesn't work? you get enough bottles together... \n\nkramer: yeah, you overload your inventory and you blow your margins on gasoline. trust me, it doesn't work. \n\njerry: (re-entering) hey, you're not talking that michigan deposit bottle scam again, are you? \n\nkramer: no, no, i'm off that. \n\nnewman: you tried it? \n\nkramer: oh yeah. every which way. couldn't crunch the numbers. it drove me crazy. \n\njerry: (leaving) you two keep an eye on each other? \n\nnewman/kramer: (simultaneous) no problem. you bet. \n\njerry: are you sure you didn't hear my car making a funny noise? i know those two idiots did something to it. \n\nelaine: no, i didn't hear anything. (she spots a familiar face) oh, my god, look who's here. \n\njerry: sue ellen mishke, the braless 'o henry' candy bar heiress. \n\nsue ellen: well. hello elaine. jerry. \n\nelaine: hi sue ellen. \n\njerry: hi sue ellen. \n\nsue ellen: i'm surprised to see you here. come to catch a glimpse of high society? \n\nelaine: (faked laughter) oh, ho ha ha. no, no, i'm actually here to bid, sue ellen. i mean that is if anything is to my liking. \n\njerry: i'm here to catch a glimpse... of high society. \n\nsue ellen: well, i hope you find something that fits your budget. \n\nelaine: (half under her breath and half to jerry) i... hate that woman. \n\nnewman: i don't understand. you fill an eighteen-wheeler? \n\nkramer: no, an eighteen-wheeler's no good. too much overhead. you got permits, weigh-stations, tolls... look, you're way outta your league. \n\nnewman: i wanna learn. i want to know why. \n\nelaine: (loudly, for the benefit of sue-ellen) oh. those are handsome. look at that set. yeah, think i might bid on those. \n\nauctioneer: lot number seven forty-five. we have a full set of golf clubs, that were owned by president john f kennedy, as seen in the famous photograph of the president chipping at burning tree on the morning of the bay of pigs invasion. the set in perfect condition, and we will start the bidding at four thousand dollars. four thousand dollars? do i have four thousand dollars? \n\nauctioneer: i have four thousand dollars. do i have five? (another person bids) five thousand dollars. i have five thousand dollars. do i have six? six thousand dollars for this set of beautiful clubs. (another bid) six. i have six thousand dollars. can i have sixty-five hundred? \n\nauctioneer: sixty-five hundred to the dark-haired person on the right. we are at sixty-five hundred, do i hear sixty-six hundred? \n\nauctioneer: the president's own golf clubs. leisure life at camelot. sixty-five hundred going once... \n\nsue ellen: eight thousand. \n\nauctioneer: eight thousand. we have eight thousand. the bid is now eight thousand dollars. \n\nelaine: (to jerry) what is she doing? she's starting in on the bidding now? (to auctioneer) eighty-five hundred! \n\nauctioneer: we have eighty-five... \n\nsue ellen: nine thousand. \n\nauctioneer: nine thousand dollars. \n\njerry: think she wants those clubs. \n\nauctioneer: do i hear ninety-five? ninety-five hundred... \n\nelaine: ninety-five hundred. \n\nsue ellen: ten thousand. \n\nauctioneer: ten thousand, to the shapely woman on the left. ten thousand going once... \n\njerry: well, that's your ceiling. \n\nauctioneer: ten thousand going twice... \n\nelaine: (determined) eleven thousand! \n\nsue ellen: twelve thousand. \n\nelaine: (angrier) thirteen thousand! \n\nsue ellen: fourteen thousand. \n\nelaine: (vicious) fifteen thousand!! \n\nelaine: peterman is gonna kill me. \n\njerry: i really thought you had her there at seventeen thousand. \n\nelaine: why didn't you stop me? \n\njerry: do you hear this clunking? \n\nelaine: (listening) a little. \n\nelaine: oh. you know what? (indicates clubs) i'm gonna grab these from you later. you'll take care of 'em, okay? okay. see you tomorrow. \n\njerry: okay. \n\nelaine: alrighty, bye. \n\njerry: bye. \n\njerry: what's going on here? \n\njerry: oh god! \n\njerry: (angry) oh, you idiots! \n\nnewman: so we could put the bottles in a u-haul. you know, go lean and mean? \n\nkramer: newman, it's a dead-end, c'mon. (jerry enters) hey, there he is. \n\njerry: hey. you put your groceries under the hood of my car? \n\nkramer: (to newman) aw, that's right, we forgot about those. \n\nnewman: (to kramer) that's where my missing soda is. \n\njerry: and your crab legs, and a thing of cheese. the triple-a guy said i was this close to sucking a muffin down the carburetor. what were you thinking? \n\nkramer: we ran outta space. \n\njerry: now i gotta take the car down to tony and get it checked out. \n\nkramer: ah, tony, he's good. \n\njerry: yeah, he's real good. but he's so obsessive about the car. he makes me feel guilty about every little thing that's wrong with it. i gotta get it washed before i bring it down to him, or i'm afraid he'll yell at me. \n\nkramer: (offering the artichoke can) 'choke?' \n\njerry: no, thank you. \n\ntony: (lovingly) oh, yeah. i remember this car. beautiful car. \n\njerry: yeah. so, anyway, the engine's been idling a little rough. i thought it might be time for a check up... \n\njerry: there's really nothing wrong on the inside. \n\ntony: well, the shift knob is loose. you know about that? \n\njerry: no, i hadn't noticed. \n\ntony: (accusingly) have you been picking at it? \n\njerry: have i been picking at it? no. you know. it's just wear and tear. \n\ntony: (disapprovingly) wear and tear. i see. \n\njerry: the engine is really the only thing that needs checking. \n\ntony: you been rotating the tires? \n\njerry: try to. \n\ntony: (sharp) you don't try to. you do it! fifty-one percent of all turns are right turns. you know that? 'try to.' \n\npeterman: twenty thousand dollars!?! elaine, that's twice the amount i authorised you to spend. \n\nelaine: i know, mr peterman, but but but but once i saw them, i just couldn't stand to let anyone else have them. (warming to her subject) you know, certainly not some stuck-up candy bar heiress who shamelessly flaunts herself in public without any regard... \n\npeterman: well, where are they? \n\nelaine: (ingratiatingly) they should be here today. \n\ngeorge: uh, mr wilhelm. \n\nwilhelm: (entering the office) yes george. \n\ngeorge: hi, i was just uh... i just had one little question about uh, my assignment. \n\nwilhelm: yes, well i trust things are moving smoothly. mr steinbrenner's counting on you, you know. \n\ngeorge: yes, yes. very smooth, super smooth. no, but i really wanna attack this thing, you know. sink my teeth into it. so i was just wondering... what do you think would be the very best way to get started? \n\nwilhelm: (confusion) get started? i don't understand, george. \n\ngeorge: well, i was wondering... \n\nwilhelm: you mean you haven't been to payroll? \n\ngeorge: payroll? no, no, i haven't done that. \n\nwilhelm: well, what's the problem? now come on george. i told the big man you were moving on this. now, don't let him down! \n\ngeorge: payroll!! \n\n[yankee stadium: payroll office] \n\ngeorge: hello there. i'm george costanza. \n\nclerk: yes? \n\ngeorge: assistant to the travelling secretary. (fishing for a reaction) i'm uh, working on the project. \n\nclerk: what project? \n\ngeorge: payroll project. wilhelm? big uh, big payroll project. \n\nclerk: you're gonna have to fill me in. \n\ngeorge: you know what, i'll just uh, i'll just look around for a little while. (moving to come round the counter) i'll just browse around. \n\nclerk: (blocking george) hey, wait, hey. excuse me, uh, you can't come back here. \n\ngeorge: look, i am under direct orders from mr wilhelm. so if you have a problem with that, maybe you should just take it up with him. \n\nclerk: well, maybe i will. \n\ngeorge: (spotting possible salvation) you know what, i urge you to take it up with him. go ahead, give him a call, he'll tell you what i'm doing here. (half to himself) then you can tell me. \n\nclerk: (on phone) mr wilhelm, uh, this is lafarge in payroll. uh, there's a costanza here, says he's working on some project? \n\nclerk: (on phone) oh. (he swaps the phone to his other ear) oh, i see. (listens) interesting. (listens) well, that's quite a project. alright, thank you. \n\nclerk: (apologetically) ah, i'm sorry uh, that i doubted you. whatever you need, just uh, make yourself at home. \n\ngeorge: so he explained it all to you? \n\nclerk: yes, he explained it all very clearly. \n\ngeorge: what'd he tell you? \n\nclerk: (upset) look! you were right, i was wrong! you don't have to humiliate me about it, alright! \n\nnewman: damn! \n\nnewman (v.o.): oh, mother's day. (inspiration strikes) wait a second. mother's day?! \n\nnewman: (triumphant) yessss! \n\nnewman: ahaha! \n\nnewman: come on kramer! \n\nkramer: wha...? \n\nnewman: it's the truck, kramer. the truck! \n\nkramer: look, newman, i told you to let this thing go. \n\nnewman: no, no, no, no no. listen to me. most days, the post office sends one truckload of mail to the second domestic regional sorting facility in sagenaw, michigan. \n\nkramer: (interested) uh-huh. \n\nnewman: but, on the week before holidays, we see a surge. on alentine's day, we send two trucks. on christmas, four, packed to the brim. and tomorrow, if history is any guide, will see some spillover into a fifth truck. \n\nkramer: (realisation) mother's day. \n\nnewman: the mother of all mail days. and guess who signed up for the truck. \n\nkramer: a free truck? oh boy, that completely changes our cost structure. our g and a goes down fifty percent. \n\nnewman: (excited) we carry a coupla bags of mail, and the rest is ours! \n\nkramer: newman, you magnificent bastard, you did it! \n\nnewman: (triumph) let the collecting begin! \n\n[yankee stadium: george's office] \n\nwilhelm: so... \n\nwilhelm: ...did you go down to payroll? \n\ngeorge: (standing) yes, payroll. yes i did. very productive. payroll... paid off. \n\nwilhelm: (pleased) well then, i guess you'll be heading downtown then, huh? \n\ngeorge: oh, yeah. downtown. definitely. \n\nwilhelm: well, i'm very interested to see how this thing turns out. \n\ngeorge: (to himself) yeah, you said it. (to wilhelm) uh, excuse me, mr wilhelm. uh, do you really think... well, is this downtown trip really necessary, you know, for the project? \n\nwilhelm: oh no, you've got to go downtown, george. it's all downtown. just like the song says. \n\ngeorge: the song? \n\nwilhelm: there's your answer. downtown. \n\ngeorge: (thoughtful) downtown. \n\njerry: the song downtown? you mean the petula clark song? \n\ngeorge: yeah. \n\njerry: you sure he didn't just mention it because you happened to be going downtown? \n\ngeorge: i think he was trying to tell me something, like it had some sort of a meaning. \n\njerry: okay, so how does it go? \n\ngeorge: 'when you're alone, and life is making you lonely, you can always go...' \n\njerry: '... downtown.' \n\ngeorge: 'maybe you know some little places to go, where they never close...' \n\njerry: '...downtown.' \n\ngeorge: wait a second. 'little places to go, where they never close.' what's a little place that never closes? \n\njerry: seven-eleven? \n\ngeorge: 'just listen to the music of the traffic, in the city. linger on the sidewalk, where the neon lights are pretty.' where the neon lights are pretty. the broadway area? \n\njerry: no, that's midtown. \n\ngeorge: 'the lights are much brighter there. you can forget all your troubles, forget all your cares, just go...' \n\njerry: '...down town.' \n\ngeorge: 'things'll be great, when you're...' \n\njerry: '...downtown.' \n\ngeorge: i got nothing, jerry. nothing. \n\njerry: well, 'don't hang around and let your troubles surround you. there are movie shows...' \n\ngeorge: you think i should come clean? what d'you think, you think i should confess? \n\njerry: how can you lose? \n\ntony (o.s.): yeah, jerry, it's tony abato at the shop. look, we gotta talk. you better come down, any time after four. \n\njerry: hello. \n\nelaine: hi, it's me. \n\njerry: oh, hi. \n\nelaine: listen, i need to come over and pick up the clubs for peterman. \n\njerry: oh, you know what? \n\nelaine: (worry) oh no. what? \n\njerry: oh, no. it's no big deal. i left the clubs in the car. \n\nelaine: you left them in the car? how could you leave them in the car? \n\njerry: i forgot. \n\nelaine: oh, go down and get them. \n\njerry: i can't. the car's at the mechanics. \n\nelaine: ah, this is great. alright, well, where is the mechanic? i'll just go and pick 'em up myself. \n\njerry: no, no, you can't. he's working on the car right now. you can not disturb him while he's working. but i'm going down there in like an hour, if you wanna meet me down there. you know the place, it's on fifty-sixth street? \n\nelaine: (resigned) ugh, okay, alright, fine. \n\njerry: hey, tony. \n\ntony: thanks for coming in, jerry. \n\njerry: sure. \n\ntony: i think i know what's goin' on here, and i just wanna hear it from you. but i want you to be straight with me. don't lie to me, jerry. you know that motor oil you're puttin' in there? (reproachful) from one of those quicky lube places, isn't it? \n\njerry: well, i change it so often, i mean to come all the way down here... \n\ntony: jerry, motor oil is the lifeblood of a car. okay, you put in a low-grade oil, you could damage vital engine parts. okay. (holds up component) see this gasket? (throws it down) i have no confidence in that gasket. \n\njerry: i really wanna... \n\ntony: here's what i wanna do. i wanna overhaul the entire engine. but it's gonna take a major commitment from you. you're gonna have to keep it under sixty miles an hour for a while. you gotta come in, and you gotta get the oil changed every thousand miles. \n\njerry: how much money is this gonna cost me? \n\ntony: (contempt) huh. i don't understand you. it's your own car we're talking about. you know you wrote the wrong mileage down on the form? you barely know the car. you don't know the mileage, you don't know the tyre pressure. when was the last time you even checked the washer fluid? \n\njerry: the washer fluid is fine. \n\ntony: (angry) the washer fluid is not fine! \n\njerry: alright, you know what, uhm... i just wanna take my car, and i'm gonna bring it someplace else. \n\ntony: what d'you mean? \n\njerry: just, can i have my car? i wanna pay my bill, i'm gonna be on my way. \n\ntony: well, the car's on a lift. \n\njerry: well, just get it down. \n\ntony: (subdued) alright. okay. well, uhm, wait here and i'll uh, i'll bring it around. \n\njerry: okay. thank you, very much. \n\nelaine: hey. where's the car? \n\njerry: he's bringing it. \n\nelaine: good. \n\njerry (v.o.): last week on seinfeld. \n\nso far: newman and kramer are using a usps mail truck to run deposit bottles and cans to michigan, in order to collect 10 cents on each of them. george has been given an assignment by mr wilhelm, but he hasn't a clue what it is. elaine outbids sue-ellen mishke at an auction, to buy john f kennedy's golf clubs on behalf of mr peterman, and leaves them in the back of jerry's car. kramer and newman have left groceries under the hood of jerry's car, meaning jerry has to take it to tony the mechanic, who loves the car more than jerry does. when jerry asks for his car back, tony flees in it, taking jfk's clubs with him. \n\njerry: okay, thank you. (hangs up the phone) \n\nelaine: so? what'd they say? \n\njerry: they're sending a detective to my apartment tomorrow. \n\nelaine: what the hell were you thinking leaving my clubs in that car?! \n\njerry: well, i didn't count on my mechanic pulling a mary-beth whitehead, did i? \n\nelaine: what kind of maniac is this guy? \n\njerry: he's a very special maniac. \n\nelaine: what am i supposed to tell mr peterman. \n\njerry: i don't know. \n\nelaine: why couldn't you take better care of that car?! \n\npeterman: well, are they here? \n\nelaine: mr peterman, uh... there seems to be a bit of a snag. \n\npeterman: snag? \n\nelaine: it seems that a psychotic mechanic has absconded with my friend's car. \n\npeterman: what does that have to do with my clubs? \n\nelaine: they happened to be in the back seat at the time. \n\ndetective: what was the suspect wearing at the time of the incident? \n\njerry: you know, like mechanic's pants, a shirt that said 'tony'. lemme ask you something, have you ever seen a case like this before? \n\ndetective: all the time. a mechanic forms an emotional attachment, thinks he'sgonna lose the car, he panics, he does something rash. i'm gonna ask you somepersonal questions. i'm sorry if i touch a nerve, but i think it'll help with the case. had you been taking good care of the car? \n\njerry: had i been taking...? \n\ndetective: well, did you leave the a/c on? do you zip over speed bumps? do you ride the clutch? things like that. \n\njerry: w-well, what does it matter? it's my car, i can do whatever i want with it. \n\njerry: not that i would think of doing such things. \n\ndetective: (making a note) alright mr seinfeld, we'll let you know if we find anything. i gotta be honest with you, these cases never end up well. \n\njerry: well uh, whatever you can do. thanks. \n\n[yankee stadium: george's office] \n\ngeorge: (hesitant) uh, mr wilhelm. uh, about the project... \n\nwilhelm: that's what i came to talk to you about. great job george. (shakes george's hand) you really nailed it. \n\ngeorge: i did? \n\nwilhelm: oh yes, i read through it this morning. i couldn't have done it better myself, and i turned it right over to mr steinbrenner. good work george. \n\njerry: i don't get it. he assigns it to you, you don't do it. somehow it gets done, and now he's telling you what a great job you did. \n\ngeorge: maybe somebody did it and didn't take credit for it. maybe it was already done and didn't need doing in the first place. i have no idea who did it, what they did, or how they did it so well. and you know what? jimmy crack corn and i don't care. \n\nwilhelm: the gardener did a nice job planting the rose bushes, didn't he dear? \n\nmrs wilhelm (o.c.): you planted the rose bushes, dear. \n\nwilhelm: i did? \n\nmrs wilhelm (o.c.): yesterday. you remember. \n\nwilhelm: (thinks for a moment) that's right. (pause) what's for dinner? \n\nmrs wilhelm (o.c.): we just ate. did you forget to take your medicine? \n\ngeorge: the point is, however it got done, it's done. so, any luck with the car? \n\njerry: no. the police have no leads (sitting on the couch arm) and i just found out today my insurance doesn't cover it. \n\ngeorge: why not? \n\njerry: they don't consider it stolen, if you wilfully give the guy the keys. \n\nelaine: (to george) hey. \n\ngeorge: hey. \n\nelaine: (to jerry) hey. what did the detective say? \n\njerry: they're looking. \n\ngeorge: i gotta go. \n\njerry: y'hello. \n\ndetective (v.o.): mr seinfeld? \n\njerry: yeah. \n\ndetective (v.o.): it's detective mcmahon... \n\ndetective (v.o.): ...i'm at the warehouse on pier 38. ah, i think you'd better get down here. \n\njerry: yeah, okay. (to elaine) they may have found the car. \n\nelaine: (makes surprise noise) are the clubs in it? ask him. \n\njerry: are there golf clubs in the back? \n\ndetective (v.o.): we really can't tell. you better bring your service records. \n\nyoung cop: watch where you step. there's quite a bit of... grease. detective, jerry seinfeld is here. \n\ndetective: how d'you do. thanks for coming down. \n\njerry: (indicating) this is elaine benes. \n\nelaine: (explaining) we used to date, but now we're just friends. \n\ndetective: i see. \n\njerry: yeah. \n\ndetective: i'm sorry to make you go through this, but we need to make sure. \n\njerry: well, what's going on? what is this thing? \n\ndetective: one of our patrolmen stumbled over this. \n\nelaine: (horrified) huuh! (she turns away and covers her mouth) \n\njerry: oh my god! \n\ndetective: the block is nearly split apart. we found the overhead cams thirty feet away. we can only hope the body sold for scrap. \n\nelaine: oh, my god. \n\ndetective: and we know it's a saab. the angle on the vee-6 is definitely ninety-two. the model is hard to determine because the drive train is all burnt out. \n\njerry: what is that smell? \n\ndetective: look at the clutch. \n\nelaine: uuh. \n\nyoung cop: excuse me. \n\ndetective: whoever did this didn't just dismantle it. i mean, they took their time, they had fun. they were very systematic. they went out of their way to gouge the sides of every piston, and the turbo was separated from the housing and shoved right up the exhaust pipe. \n\nelaine: uhh \n\njerry: wait a second. turbo? i didn't have a turbo. \n\ndetective: your car's not a turbo? \n\njerry: no, it's a nine-hundred s. (happy) it's a turbo, elaine, a turbo! \n\nelaine: (sobbing happiness) it's a tu-hur-bo. \n\nwoman: excuse me, did you say turbo? saab turbo nine-thousand? is it... (voice breaking) midnight blue? \n\ndetective: (condolences) yes ma'am. \n\nkramer/newman: (singing) nine thousand, nine hundred and ninety-nine bottle and cans in the trunk, nine thousand, nine hundred and ninety-nine bottles and cans. at ten cents a bottle and ten cents a can, we're pulling in five hundred dollars a man. nine thousand, nine hundred and ninety-eight bottle and cans in the trunk, nine thousand, nine hundred and ninety-eight bottles and cans. we fill up with gas, we count up our cash!!... \n\njerry: hello. \n\ntony: hey jerry, it's tony. \n\njerry: tony, where are you? \n\ntony: aw look, i just want you to know that the car is fine. i got her all fixed up. we're in a nice area, no potholes, no traffic. so there's nothing to worry about. okay? in fact, here, somebody wants to talk to you. \n\njerry: tony, y-you better bring that car back! \n\ntony: (angry) nobody's giving anything back! you tried to take it from me, i don't forget that. \n\njerry: tony, it is my car, and i want it back! \n\ntony: oh, your car. you want your car back! \n\njerry: tony. \n\ntony: listen, that registration may have your name on it, jerry. but this engine's running on my sweat and my blood. \n\njerry: (exasperated) where do i find these guys? \n\nnewman: how much gas we got? \n\nkramer: three quarters of a tank. \n\nkramer: that's better than we estimated. \n\nnewman: (smugly) that is seven dollars and twenty-two cents better. \n\nnewman: maybe we could uh, stop for a snack. \n\nkramer: ah, no, that's not in the budget. \n\nnewman: yeah well, the budget changed, you know. i mean, it might be a good investment. \n\nkramer: that's not a good investment, that's a loss. \n\nkramer: hey, d'you see that car? looks like jerry's. i'm gonna check out that license plate. \n\nkramer: yeah, those are new york plates. \n\nnewman: is that jerry's number? \n\nkramer: i don't know, but that's new york and we're in ohio. those are pretty good odds. \n\nnewman: what're you doing? \n\nkramer: i'm calling jerry. \n\nnewman: on what? \n\nkramer: brought my phone. \n\njerry: (answering phone) y'hello. \n\nkramer: yeah, hey jerry, what's your licence plate number? \n\njerry: why, what's up? \n\nkramer: yeah, well i think i spotted your car. \n\njerry: oh my god, you're kidding. (dives for his wallet) hang on a second. (reading from his registration) it's jvn 728. \n\nkramer: (checks the car ahead of him) hey, that's it! that's it. hey, uh look, we got him. we're driving right behind him in a truck. \n\njerry: oh my god. yeah, yeah, he said he brought it to the country. \n\nkramer: well we're in the country and we're right on his tail. \n\njerry: good work kramer, this is incredible. \n\nkramer: yeah, don't worry jerry. we're right on this guy like stink on a monkey! i'll check back with you. \n\nelaine: elaine benes. \n\njerry: yeah, it's me. kramer found the car! \n\nelaine: oh my god, where is it? \n\njerry: it's somewhere in the country, they're following 'em. \n\nelaine: are the clubs there? \n\njerry: i don't know. they're tailing him. i'm waiting for them to call me back. \n\nelaine: alright, i'm heading over right now. \n\nelaine: what's the status? \n\njerry: last check-in, they were still on him. \n\nelaine: well, have they called the police yet? \n\njerry: no, they won't call the police. \n\nelaine: what? why not? \n\njerry: they're afraid they'll get in trouble for misusing a mail truck. kramer doesn't want a record. \n\nelaine: kramer has a record. \n\njerry: not a federal record. \n\nelaine/jerry: kramer? \n\njerry: what's going on? \n\nkramer: yeah, nothing. we're still following him. \n\nkramer: wait a second, he's getting off. yeah, he's gonna be going south on the one-thirty-five. \n\nelaine: keep following him. \n\nkramer: alright, alright, i'll follow him. \n\nnewman: hey, we can't follow him, we're going north to michigan. \n\nkramer: yeah, hey listen, i can't. it's gonna be taking us out of our way. \n\nelaine: i need those clubs. \n\njerry: kramer, i want my car. \n\nkramer: well, i don't know what to do. \n\nnewman: hey, we got ten thousand deposit bottles here. i mean, this guy could be going to arkansas. \n\njerry: keep following him kramer. don't let me down. \n\nnewman: hey, don't listen to him. i mean, we can't afford a detour. our budget won't hold it. \n\nkramer: well, i don't know what to do man! \n\nnewman: kramer! stay left. left, left, left. \n\nelaine/jerry: right. go right!/south! \n\nkramer: alright! alright. i'm getting off! i'm gonna go on the ramp. \n\nnewman: i hope you realise what you've done. you've destroyed our whole venture. \n\nkramer: this ramp is steep. \n\nnewman: all my work, my planning, my genius. all for nought. \n\nkramer: alright, look, we're pulling too much weight. he's getting away from us here. (indicating) take the wheel. \n\nnewman: what're you doing? \n\nkramer: (climbing though into the back of the truck) i'm gonna get something. \n\nnewman: are you crazy? \n\nkramer: keep your foot on the gas. \n\nnewman: hey! you're not dumping those bottles back there, are you? \n\nnewman: hey kramer, those have wholesale value! we could cut our losses. \n\nkramer: look out below!! \n\n[yankee stadium: steinbrenner's office] \n\nsteinbrenner: (to himself) with this magnifying glass, i feel like a scientist. \n\ngeorge: you wanted to see me, sir? \n\nsteinbrenner: ah, come in george, come in. \n\nsteinbrenner: uh, wilhelm gave me this project you worked on. \n\ngeorge: (smiling) yes sir. \n\nsteinbrenner: let me ask you something, george. you having any personal problems at home? girl trouble, love trouble of any kind? \n\ngeorge: (wondering where this is leading) no sir. \n\nsteinbrenner: what about drugs? you doing some of that crack cocaine? you on the pipe? \n\ngeorge: (worried now) no sir. \n\nsteinbrenner: are you seeing a psychiatrist? bcause i got a flash for you young man, you're non compos mentis! you got some bats in the belfry! \n\ngeorge: what're.. what're you talking about? \n\nsteinbrenner: george, i've read this report. it's very troubling, very troubling indeed. it's a sick mind at work here. \n\nsteinbrenner: okay, come on boys, come on in here. george, this is herb and dan. \n\nsteinbrenner: they're gonna take you away to a nice place where you can get some help. they're very friendly people there. my brother-in-law was there for a couple of weeks. the man was obsessed with lactating women. they completely cured him, although he still eats a lot of cheese. \n\ngeorge: ah, see, mister.. i didn't write that report. that, that's not mine. \n\nsteinbrenner: of course you didn't george. of course you didn't write it. \n\ngeorge: i didn't do it! it..it just got done. i don't know how it got done, but it did. \n\nsteinbrenner: of course. of course it got done. things get done all the time, i understand. (as george disappears) don't worry, your job'll be waiting for you when you get back. (banging his fist on his desk) get better george. get better! \n\nkramer: (frustrated) damn. i don't understand this. i've ditched every bottle and can, and we still can't gain. it's like we're... \n\nkramer: ...sluggish. \n\nnewman: i went through all those bottles and all those cans, for what? what a waste. and i'm really gonna catch hell for those missing mailbags. \n\nkramer: heyy, wasn't that a pie stand back there? \n\nnewman: (perks up) a pie stand? where? \n\nkramer: oh yeah. home-made pies, two hundred yards back. \n\nnewman: aww, c'mon, pull over, pull over will ya. \n\nnewman: where? i..i..i don't see it. \n\nkramer: well open the door, you get a better look. \n\nnewman: i don't see any pie... \n\nnewman: ...aargh! \n\nnewman: kramer!! \n\nkramer: i'm sorry newman, you were holding us back. \n\nnewman: (after speeding truck) kramer!! \n\nkramer: (shouting) jerry! we've lost the fat man, and we're running lean. we're back on track, buddy! \n\nnewman: federal employee. federal employee. \n\nfarmer: hello stranger. \n\nnewman: (a touch desperate) ah, look, i..i'm sorry to bother you, but i'm a us postal worker and my mail truck was just ambushed by a band of backwoods mail-hating survivalists. \n\nfarmer: calm down, now. calm down. don't worry, we'll take care of you. this farm ain't much, but uh, you're welcome to what we have. hot bath, hearty meal, clean bed. \n\nnewman: oh, thank you, sir. \n\nfarmer: just have one rule. keep your hands off my daughter. \n\nkramer: jerry, we got 'im. i'm riding his tail. there's no escape. he's running scared, buddy. \n\njerry: how's the gas situation? \n\nkramer: (checks dial) i got enough to get to memphis. \n\nkramer: he's reaching in back. he's grabbing at something. \n\nkramer: he's pulling out a gun! he's got a gun, jerry!! \n\njerry: duck, kramer! duck! \n\nkramer: it's a golf club! it's no gun. he threw a golf club at me! \n\nelaine: those are jfk's golf clubs! \n\nkramer: hey, i'm under fire here. (another club hits) i'm under heavy fire here, boy. (another hit) jeez! that was a five-iron! \n\nelaine: stop the truck, kramer. pick up the clubs! \n\njerry: no, don't stop, kramer. keep going, don't let him get away. \n\nkramer: wait a minute, i think he's done. (peers at the saab) oh no, he's taking out the woods! \n\nkramer: (noise) \n\nkramer: (yelling at tony) you'll have to do a lot better than that! \n\njerry: (hearing the noises) what's happening! \n\nkramer: this truck is dying. we're losing him. \n\nkramer: i think we lost him. \n\njerry: (disappointment) dammit! \n\nelaine: (quietly) can you stop and pick up those clubs kramer? \n\nkramer: (subdued) yeah, yeah, i'll get 'em. \n\nfarmer: enjoy that mutton? \n\nnewman: (mouth full) it's delicious mutton. this is uh, this is outta sight. i would, i would love to get the recipe. it's very good. \n\nfarmer: that cider too strong for you? \n\nnewman: no, no. i love strong cider. (for the farmer's daughter's benefit) i'm a big, strong, cider guy. \n\nfarmer: gonna be milking holsteins in the morning, if you'd like to lend a hand. \n\nnewman: (reluctant) you know, i don't really know that much about uh.. i don't have any.. i don't.. i don't think i know much about that. \n\nfarmer: ahh, susie here'll teach you. \n\nfarmer: just gotta pull on the teat a little. \n\nsusie: (suggestive) nice having a big, strong, man around. \n\nnewman: you know, those mail bags, they get mighty heavy. i uh, i nautilus, of course. (puffs out his chest) \n\nnewman: (breaking from his pose) can i have some gravy? \n\ngeorge: (desperate) steinbrenner had me committed! i'm in the nuthouse! \n\ndeena: i'll be back same time next week, pop. \n\ngeorge: (quieter desperation) they took my belt, jerry. i got nothing to hold my pants up. (listens) well, you gotta come over here now! just tell 'em what we talked about, how i, how i, i didn't do the project. \n\ndeena: george? \n\ndeena: i see you're finally getting some help. \n\ngeorge: aw, hoh, oh deena, thank god. (he hugs deena) thank god you're here. listen, you gotta help me. you gotta tell these people that i'm okay. you know that i don't belong in here. \n\ndeena: george, this is the best thing for you. (she walks away) \n\ngeorge: yea... (sinks in) what? no, no! \n\ngeorge: deena! deena, wait a... deena, help! \n\npop: is that little georgie c? how's the folks? you still got that nice little car? \n\nnewman: (screaming in panic) aaah!! aaah! \n\nkramer: what you doing?! \n\nnewman: (pushing past kramer) kramer, help me! help me! \n\nkramer: (takes one look and sets off after newman) jeez! \n\nfarmer: (taking aim) i told you to keep away from my daughter! \n\nsusie: no daddy, you'll hurt him! i love him! (waving after newman) goodbye norman, goodbye. \n\npeterman: (excited) elaine! you found the clubs. that's wonderful news. where are they? \n\nelaine: (not the soul of happiness) yep. lemme get 'em for you, mr peterman. \n\npeterman: oh, i'll be inaugrating them this weekend, with none other than ethel kennedy. a woman whose triumph in the face of tragedy is exceeded only by her proclivity to procreate. \n\nelaine: the uh, the letter of, authenticity's in the side pocket there. \n\npeterman: elaine. i never knew kennedy had such a temper. \n\nelaine: (spotting a chance to keep her job) oh. oh yeah. the only thing worse was his slice. (she laughs nervously) \n\npeterman: see you on monday. \n\nelaine: have a good game. \n\n[setting: the coffee shop] \n\njerry: hairdo? \n\nelaine: (looking up from a menu) yeah. \n\njerry: you look like brenda starr. \n\nelaine: is that good? \n\njerry: it's better than dondi. \n\nelaine: hey, my god, look at that. (jerry looks over at the table. a man and a woman are dining) david and beth lookner. (leaning in for confidentiality) you know, i heard a rumor their marriage was a little rocky. \n\njerry: (interested, still looking at the couple) really? \n\nelaine: mm-hmm. \n\njerry: you know, i have a little thing for beth lookner. \n\nelaine: well, i have to admit, i've always thought david was kind of sponge-worthy. (winks, making a clicking sound with her tongue) \n\njerry: yeah.. i've been waitin' out their marriage for three years. \n\nelaine: yeah, me too. well, i've been waiting out two or three marriages, but this is the one i really had my eye on. \n\ngeorge: this car out there is taking up, like, three parking spaces. \n\nelaine: oh, (laughs at george's misfortune) that's mine. \n\ngeorge: you have a car? \n\nelaine: well, my friend, elise, lent it to me for the week. she's out of town. \n\njerry: (noting) you know, i've never seen you drive. \n\ngeorge: me either. \n\nbeth: (unsure as to whether it's him or not) jerry? elaine, hi! \n\nelaine: (overly generous) hi, david! \n\njerry: hi, beth! \n\nbeth: oh, uh, george, (introducing to two) this is my husband, david. \n\ngeorge: oh, hi.. (they shake hands) \n\ndavid: hello. so, george, uh, you're the one who works for the yankees, right? \n\ngeorge: yeah. why, what do you do? \n\ndavid: well, i sell insurance, but beth used to be don mattingly's doctor. \n\ngeorge: really? \n\nbeth: mm-hm. \n\ndavid: yeah. \n\ngeorge: (laughs slightly) a physician married to a salesman. (chuckles) well, i gotta tell you, beth, you coulda done a lot better than him. \n\n[setting: jerry's apartment] \n\nkramer: hey! \n\njerry: hey. hey, mickey. what's going on? \n\nmickey: i'm very nervous. i'm auditioning to be in the actor's studio tonight. \n\njerry: really? \n\nkramer: it's a method, jerry. it's intense. (clicks his tongue) \n\nmickey: kramer's going to be my scene partner. \n\njerry: kramer? \n\nmickey: he doesn't have to say anything, he just has to sit there. i'm playing a detective. \n\nkramer: yeah, and i'm playing a business man accused of murder. \n\njerry: ohh boy. well, i gotta meet elaine and run some errands. so.. (goes for his coat) \n\nkramer: (fixing up his pants) yeah.. look at this, mickey. these pants are fallin' apart, huh? \n\njerry: (fishing for his keys in a kitchen drawer) you know, when i first met you, kramer, you used to wear jeans all the time. \n\nkramer: (looking over mickey's shoulder at the script) yeah, well, i was a different man then. \n\njerry: (jokingly playing off kramer's statement) with a different body. \n\nkramer: (slightly offended) hey, i got the body of a.. taught, pre-teen, swedish boy. \n\njerry: ehh, i dunno.. \n\nkramer: now, what are you thinkin'? (getting upset) you think that i'm not able to wear jeans anymore? is that what you're sayin'? because if that's what you're sayin', jerry, i'll go and i'll buy some jeans. (jerry shrugs. kramer raises his voice to a menacing tone) i swear to god i will! (jerry's showing off a skeptical face. \n\n[setting: elaine's car] \n\nelaine: god, it is so great to drive again. i miss it so much! (suddenly swerves to the right, then yells out of her window) how about a left turn signal, ya moron?! \n\njerry: (his thoughts) i'm so nauseous. she's the worst driver. \n\nelaine: you know what? on my first road test, i hit a dog. (jerry nods, blinking) i think it was a golden retriever. no, no, no, it was a - it was a yellow lab. (picks up the car phone) i'm gonna check my messages. (begins to dial as she pulls up to a pedestrian crosswalk. she stops right before hitting a man crossing the street) \n\nman: hey! \n\njerry: (once again, the audience hears his thoughts) i'm so car sick. i'm gonna vomit! \n\nelaine: oh my god! jerry! my friend, kim called - david and beth got separated last night! \n\njerry: (out of it) huh? \n\nelaine: they're gettin' divorced! (quickly breaks, stopping traffic) \n\n[setting: monk's coffee shop] \n\nelaine: so, now, what is our move? what do we do? \n\njerry: i don't know, but we don't have much time. \n\nelaine: (agreeing) mm. \n\njerry: the city's probably teeming with people who've been waiting out that marriage. \n\nelaine: right. \n\njerry: it's like when tenant dies in a rent controlled building - you gotta take immediate action. \n\nelaine: yeeah, but david and beth are going to need their grieving time. \n\njerry: their grieving time is a luxury i can't afford. i'm calling beth tonight, and if you want a clean shot at david, i suggest you do likewise. \n\nelaine: (nodding) yeah, yeah.. \n\njerry: but we gotta make it seem like we're not calling for dates. \n\nelaine: then why are we calling? \n\njerry: good question. (more to himself than to elaine) why are we calling? \n\nelaine: ah! (jerry has a surprised look) i've got it! i've got it! we're calling just to say, \"i'm there for you.\" \n\njerry: (nodding, trying it out) \"i'm there for you.\" \n\nelaine: then, after a period of being \"there for you\", we slowly remove the two words \"for you\", and we're just (makes a \"ta-da!\" gesture) \"there\". \n\n[setting: jerry's apartment] \n\nelaine: hey. \n\njerry: hey, remember beth and david from yesterday? they got separated. \n\ngeorge: really? (realizes) well, you don't think it had anything to do with what i said, do you? \n\njerry: what'd you say? \n\ngeorge: you know, that, that thing about her being too good for him. i mean, i was just bein' folksy. they could tell i was just being folksy..? \n\nelaine: yeah, i thought you were being folksy. \n\ngeorge: totally folksy. \n\njerry: hey, uh.. (kramer walks around a little) what'd you get there? \n\nkramer: uh, yeah, i bought dungarees. \n\nelaine: kramer, they're painted on! \n\nkramer: well, they're slim-fit. \n\njerry: slim-fit? \n\nkramer: (talking fast) yeah, they're streamlined. \n\njerry: you're walkin' like frankenstein! \n\nkramer: (making his way toward the door) what? they just gotta be worked in a little bit, that's all. (pulling the door shut behind him) alright, see you later. \n\n[setting: elaine's apartment] \n\nelaine: (mock sympathy) well.. david, it happens. \n\njerry: sure, beth, these things happen. (brief pause) so, have you told many.. people yet? \n\nelaine: because it's really nobody's business. \n\njerry: anyway, i just called to tell you that, i'm there for you. \n\nelaine: \"there\" is, um.. anywhere you want me to be.. \n\njerry: sure, dinner would be fine. \n\nelaine: and i could just be there. (adding) for you. \n\nkramer: jerry, you gotta help me! \n\njerry: what's wrong? \n\nkramer: i can't get my pants off, and mickey's audition is in twenty minutes! you know, i'm supposed to be a business man, i gotta be in costume! \n\njerry: alright, alright. uh, undo them. i'll help you get them off. \n\nkramer: (bracing himself on a bar stool) yeah, i already did it. it won't come off. the zipper's suck.. \n\njerry: (walks over and starts pulling on kramer's pants) you just gotta wiggle your hips a little bit. \n\nkramer: (wiggling and floppin) pull down \n\njerry: (stops pulling on the pants) alright, alright, that's no good. (moves kramer over to the couch) let me try getting them from the bottom. (goes for kramer's leg) just gimme one leg. \n\nkramer: (feet off the ground, his body going everywhere on the couch) wait, jerry...wait a minu... \n\njerry: (still pulling on kramer's pants from the ankles) man these are tight. (yanking) squinch your hips in \n\njerry: (still pulling) squinch em! \n\nkramer: (getting pulled and pulled) i...um...ei... \n\njerry: (stops) alright, that's not gonna work, it's not gonna work. let me just think for a second here. \n\nkramer: (starts to tilt back onto the couch) you better get me. (falls back and jerry starts to him upright) get me up, get me up, get me up. \n\njerry: hold it, hold it...look your gonna need the jaws of life to get out of those things. \n\nkramer: (walking toward the door) look i don't have time to wait, i'm gonna be late. \n\njerry: (kramer waddling out the door) maybe you can soak in the tub. \n\nkramer: you better get the door. \n\n[setting: restaurant] \n\nbeth: it was nice to get your call. \n\njerry: well, i just want you to know i'm there for you. course now i'm here for you, but when i'm not here for you, i'm there for you. \n\nbeth: (laughing) well where ever you are i appreciate it. \n\njerry: so how did this all happen? \n\nbeth: well actually, it had a lot to do with george's comment. \n\njerry: (stunned) is that right? \n\nbeth: i thought maybe i could do better. \n\njerry: maybe, maybe \n\nbeth: well it wasn't just that, i realized after 3 years of marriage that david's little quirks were getting on my nerves a little. \n\njerry: (agreeing) well three years is a long time to be married. \n\nbeth: like in the middle of our fight last night he did this thing that he always does where he asks questions to himself, aloud. and then answers them. \n\ndavid: am i happy beth left me? of course not. do i hope to pick up the pieces and move on? absolutely \n\nelaine: you're gonna pick up the pieces. \n\ndavid: just had our third anniversary on april 8th \n\nelaine: 10th \n\ndavid: (very sad) right \n\nelaine: right \n\ndavid: (mad) you know as far as i'm concerned, this whole thing is george's fault \n\nelaine: well, david the thing about george is that he's an idiot. \n\n[setting: play house] \n\ncasting director: alright, auditioning next is mickey abbott (mickey starts looking around for kramer and checks his watch) doing a scene from the terrance clifford play \"press wounds in ithaca\" \n\nmickey: (stands up) sorry my scene partner isn't here yet so i guess uh..(kramer enters and runs into some chairs) oh \n\nkramer: hey, sorry i'm late. \n\nmickey: (quietly talking to kramer) what's with the jeans you're supposed to be a business man \n\nkramer: i know, it's a long story. \n\nmickey: well just get up there \n\nmickey: so, bradley. i guess this is the last place you expected to find yourself. \n\nkramer: (takes a breath) \n\nmickey: well we're gonna be here a while so take a seat. (kramer starts trying to sit down, mickey has his back to him and gets out a pack of cigarettes, mickey then turns around once he has his cigarette to find kramer struggling to sit down) you know if it hadn't been for that secretary of yours...i said sit down! (kramer still trying to sit down, mickey throws the pack of cigarettes to the floor) are you deaf bradley?! i said sit down! \n\nkramer: (still trying to sit down, says under his breath) i'm trying. {hard to make out} \n\nmickey: (almost starts to laugh) bradley! (looking to the crowd) it's very important that you sit down (kramer still trying to sit down) now for the last time, (angry) try again to sit down! (running at kramer with his arms in the air) sit down you big stupid ape! (mickey tackles kramer) \n\n[setting: jerry's apartment] \n\nelaine: did i have a great time with david lickner last night? i sure did. (jerry comes over to the couch with a beverage and sits down) do i think there is a future here? i don't see why not. \n\njerry: i'll tell you, that there for you crap was a stroke of genius. \n\nelaine: ooooh, please. \n\njerry: never mind \n\nelaine: ah come on \n\njerry: you're a genius! \n\nelaine: aaalright! \n\nelaine: mmmnn, georgie! \n\ngeorge: (confused) what, what's going on? \n\njerry: what's going on? you're the man of the hour, that's what's going on. \n\nelaine: right \n\ngeorge: what do you mean? \n\nelaine: well thanks to you and your little comment there to david and beth. jerry and i are in prime pouncing position to scoop these two up (jerry and elaine do a little slow dance of joy) before they know what hit em. \n\ngeorge: so it was my comment that broke them up? \n\njerry: according to them \n\nelaine: ya \n\ngeorge: i feel terrible, i can't be responsible for breaking up a marriage. oh no (starting moving for the door, elaine begins to stop him) \n\njerry: (moving over to block the door) where are you going? \n\ngeorge: well i gotta go talk to beth. \n\njerry: talk to beth? \n\ngeorge: well i gotta undo what i did. \n\njerry: you're not undoing anything. \n\ngeorge: oh yes i am \n\njerry: oh no you're not! \n\ngeorge: (starts to try to get passed jerry and elaine) alright get out of my way. (jerry and elaine push him back, george very annoyed) alright don't make me get physical here! \n\nelaine: (put her finger in george's face) you be careful george. \n\n[setting: beth's apartment] \n\nbeth: (opens the door to reveal a ruffed up george) george?! \n\ngeorge: hi beth (scene ends then re-begins with beth and george on beth's couch) um anyway jerry told me that uh.. it might have been my comment in the coffee shop that broke you up. \n\nbeth: oh, well you know it's funny george. sometimes you don't know how you're really feeling about something until a person like you comes along and articulates it so perfectly. \n\ngeorge: oh (snorts) articulate....me? i've never articulated anything, i'm completely incoherent. \n\nbeth: (gets up to answer the phone) i don't know about that. hold on (picks phone up) hello...hi (pauses for jerry to speak) ya last night i had a good time too (pauses for jerry to speak) really? that's so funny he's here right now. \n\njerry: (talking to beth on the phone) could you put him on, i'd love to say hello. \n\nbeth: (talk to jerry) sure. (starts to hand george the phone) george it's jerry. \n\ngeorge: he..he wants to talk to me? \n\nbeth: ya he says he wants to say hello. \n\ngeorge: sweet guy (receives the phone from beth, starts to talk to jerry) hello \n\njerry: george what the hell are you doing over there? i told you to mind your own business now stay out of my affairs! \n\ngeorge: oh jerry, that is so sweet of you but actually i already ate. \n\njerry: ate? what? what the hell are you talking about? now you listen to me, you get out of that apartment this instant. if you screw this up for me i swear.... \n\ngeorge: (cuts into jerry talking) chocolate chip mint? oh well, actually jerry i prefer chocolate chip. what is it about the chocolate and the mint that makes it go so well together? \n\njerry: what are you talking about? \n\ngeorge: oh of course you can use it, sure. (jerry saying stuff through the phone) ok, bye. (hangs the phone up) \n\n[setting: jerry's apartment] \n\nkramer: hey \n\njerry: hey, are you still wearing those things. \n\nkramer: oh ya, i think they are starting to loosen up a bit. (mrs. anvino come to jerry's threshold) oh hi mrs. anvino. \n\nmrs. anvino: oh kramer would you do me a favor my baby sitter hasn't show up could you come watch joey for an hour i gotta run out. \n\nkramer: sure mrs. anvino, ya. \n\nmrs. anvino: he's sleeping already, you don't have to do anything, just wait till i get back \n\nkramer: (salutes jerry on his way out) see you later buddy. \n\njerry: see you later \n\njerry: hello \n\nbeth: hi jerry it's beth. \n\njerry: (excited) oh, hi beth \n\nbeth: hi, i've been doing a lot of thinking today and i don't know maybe i made a huge mistake \n\njerry: (under his breath) george. \n\nbeth: i'm feeling really confused. \n\njerry: um. i'll call you back ok? \n\nbeth: ok \n\njerry: trouble \n\nelaine: what \n\njerry: george \n\nelaine: is it? \n\njerry: ya \n\nelaine: dam \n\njerry: what are we gonna do? \n\nelaine: what do we do? you get your ass over to beth's, toot sweet. that's what you do and turn on some of that so called charm you're always telling me about. \n\njerry: ya i could try and do that. \n\nelaine: (pushing jerry) you don't try, you do it! i got the loser in this relationship and i'm breathing new life into him, you give me three more days, he won't be able to remember her name. you got the winner, you got the easy part. alright let's go (claps) i'll drive you over there. come on. \n\njerry: no you go on ahead, i'll take the bus. \n\nelaine: what? i'm parked right outside, let's go. come on (grabs jerry's arm) come on. \n\njerry: no, no. i'll take the subway. \n\nelaine: (pulling jerry out the door) nah it doesn't matter come on, i'll take you. \n\njerry: na, uh, no, uh, i'll hitch hike. \n\nelaine: what's your problem? \n\njerry: it's really not necessary. \n\n[setting: monk's] \n\ngeorge: (breaks a long silence) the uh, the shoe laces that you bought me, they uh, they worked out well. (thumbs up) \n\nsusan: well you know, if you need some more. i can get them for ya. \n\ngeorge: should be a while though. \n\n[setting: jerry and elaine driving through the city] \n\nelaine: (car tires screeching) woah, ahhh. hehe ha ha ha. that was close. confide in her, open up to her. you know women like that. \n\njerry: i don't feel so good. \n\n[setting: beth's apartment] \n\njerry: anyway beth, you know i was thinking on my way over how when i was 9. i wanted these handball sneakers, they were all black but they came in adult sizes so you know i never got the sneakers. (beth looks him confused) \n\nbeth: oh really? \n\n[setting: elaine and david walking] \n\nelaine: my father left us when i was 9 so i guess that is why i have such a fear of abandonment. \n\ndavid: wow that's so touching \n\nelaine: yes it is. \n\ndavid: (looking in through the window) hey it's george \n\nelaine: oh, maybe we should go some place else. \n\ndavid: no, let's go in. \n\ngeorge: oh uh hi hi, david \n\ndavid: hi george \n\ngeorge: elaine \n\nelaine: hi \n\ngeorge: listen uh, david, i, i, i want to apologize about that comment \n\ndavid: (interrupting) george please, please i'm fine. \n\ngeorge: oh ya, this is my fiance, susan. this is david \n\nsusan: david \n\ndavid: oh fiance. boy you coulda done a lot better than him. (susan laughs) come on elaine lets go. \n\n[setting: the anvino apartment] \n\njoey: (wakes up to see a shadow image of kramer and takes off out of the apartment) aah! it's frankinstein! frankinstein! \n\nkramer: (waddling after joey) joey! joey! \n\n[setting: apartment} \n\ngirl: mickey you were so incredible in that scene yesterday, the rage. \n\nmickey: right, the rage. tons of rage. \n\nkramer: (going to the phone) i don't believe this \n\nmickey: (phone rings, sighs, answers) hello? \n\nkramer: mickey \n\nmickey: oh hi kramer. what do you want, i'm a little busy. \n\nkramer: look, you gotta do me a favor. \n\nmickey: what? now? i can't \n\nkramer: hey, you owe me. i got you into actor's studio. they thought what we did was the scene. \n\nmickey: oh alright, alright. i'll be right over. \n\ngeorge: (coming back to the table from the bathroom) oh uh. you ready? \n\nsusan: (sighs) you know what george, uh. why don't you go ahead. i think i'd like to be alone for a while. \n\ngeorge: oh sure, sure. you wanna be alone, sure. i understand that, you wanna a little time to think uh thing..ponder things..you know..ruminant..(chuckles) you go ahead, lotta stuff on your mind..you think things out..think, mull, mull, do a lot of mulling. (short laugh then exits monk's) \n\n[setting: anvino apartment, joey's bedroom] \n\nkramer: i gotta go find this kid. so all you gotta do is lay here, pretend you're asleep in case she gets back, here (grabs the covers and throws em over mickey) keep the covers over ya. \n\nmickey: why don't you just cut the stupid pants and get them off already/ \n\nkramer: i'm breaking them in, and they're feeling better. \n\nmickey: what am i gonna do in here? \n\nkramer: just keep the lights down and your eyes closed. i'll be back. \n\n[setting: jerry's apartment] \n\ngeorge: jerry! jerry! je jerry jerry . the most unbelievable thing has just happened, it's too unbelievable! i'm sitting in the coffee shop, i'm talking to susan, were talking about shoe laces (does two guns to the head) so in walks..in walks david, right, he walks right to the table..righ i introduced him to susan..and he says get this (laughs) he says 'boy you could do a lot better than this guy' huh right (more laughing by george, jerry is totally just mellow and straight faced) the exact same thing that i said to him, just to get back at me just to get back at me..and then, and then she says she wants to be alone for awhile..alone jerry! i think that she thinks that she could do better (laughs) do you appreciate this? do you see the irony of this? do you see what is going on here? what's the matter? \n\njerry: i'm nauseous. \n\ngeorge: is that what's hurting your appreciation for the story? \n\njerry: a little \n\ngeorge: because it's really a pretty good little story. don't you think? \n\njerry: it's not bad. \n\ngeorge: yea \n\nkramer: joey, there you are. hey \n\njoey: ah!! \n\nkramer: joey \n\njoey: (runs into the arms of a police officer) a monster \n\nkramer: i'm the babysitter \n\nmrs. anvino: goodnight, honey. \n\nmickey: goodnight \n\njerry: it's gotta have something to do with kramer \n\n[setting: david and elaine at david's apartment] \n\ndavid: elaine, here's to you being there. \n\nelaine: and here. \n\ndavid: excuse me. (answers the door) beth \n\nbeth: david \n\nelaine: (takes a huge shot) i'll tell ya, it's not bad. \n\n[setting: george and susans' apartment] \n\nsusan: george? \n\ngeorge: (places the doll presumingly where it belongs on a shelf) ya? \n\nsusan: can i talk to you for a minute? \n\ngeorge: ya, sure sure. \n\nsusan: i've been doing a lot of thinking about the wedding and all. and uh (george puts his head down and his hand on her shoulder as if to brace himself for something big) i've decided to go with the chicken. \n\n[setting: kramer at the police station] \n\nofficer: so chasing little kids huh? you're in a lot of trouble mister. \n\nkramer: no no look, i was baby-sitting \n\nofficer: ya ya right. sit down! \n\nofficer: what are you deaf? i said sit down! (kramer tries to sit down but struggles) hey, for the last time, sit down. \n\nkramer: (somewhat under his breath) ya ya. \n\nsusan: hi. \n\nclerk: hi.. may i help you? \n\nsusan: yes, we'd like some wedding invitations. \n\nclerk: ohh! well...congratulations \n\nsusan: (happily) thank you. \n\ngeorge: (mildly embarrassed) yeah.. thank you. \n\nclerk: when 's the wedding? \n\nsusan: june \n\ngeorge: late june. \n\nclerk: oh! well, we have quite a few to pick from ( turns around and picks up a huge binder) they're arranged in order of price , the most expensive are in the front. \n\ngeorge: he..hmmm. humm...what about this one. \n\nclerk: hmmm,..to tell you the truth they haven't manufactured that one for a number of years. i might have couple of boxes left in our warehouse in new jersey. i'd have to check. \n\nsusan: oh! no. george that's so ugly we don't want that. \n\ngeorge: what's the difference you just read it and mail it right back. these we'll do. \n\nsusan: why don't they make'em anymore? \n\nclerk: well.. for one thing the glue isn't very adhesive. it takes a lot of moisture to make them stick. \n\ngeorge: so we pick up some (word missing) \n\nsusan: (disappointed)all right. you see what i do for you. \n\ngeorge: hey! kramer. \n\nkramer: hey! george.....lily.. \n\nsusan: no. susan. \n\nkramer: no. no it's lily \n\nsusan: i think i know my own name. \n\ngeorge: it's susan \n\nkramer: (lost for words) well you look like a lily... \n\ngeorge: it's coming jerry, it's coming. \n\njerry: what's coming? \n\ngeorge: the day.. \n\njerry: ahhh...the day.. \n\ngeorge: we ordered the wedding invitations today,, nothing can stop it now. nothing. it's here! it's happening. can i do this? i can't do this...look at me. look at me i can't do this, i can't do this (manic) help me jerry, help me. \n\njerry: why don't you just break it off with her. tell her it's over \n\ngeorge: i can't \n\njerry: why not? \n\njerry: all right take it easy, just take it easy. \n\ngeorge: what about a letter? \n\njerry: a letter. \n\ngeorge: i...i...write a letter and then i..i go to china. i disappear in a sea of people for like six months, a year you know just while things simmer down. ehm.. ehm...dear susan. i'm sorry. i made a terrible mistake. i'm really , really sorry. \n\njerry: that's it? \n\ngeorge: what? too short? \n\nboth: seems a little short, yeah.. \n\njerry: you can't go to china what about your job? \n\ngeorge: my job..arghhh \n\njerry: so write a letter.. move to another...move to staten island., 'lot easier to blend in a sea of people in staten island than china believe me. \n\ngeorge: yeah! yeah!..staten island . what about my clothes ,how do i get the rest of the clothes? \n\njerry: aagh! you come back for your clothes \n\ngeorge: i'm not going back in there. \n\njerry: so forget about your clothes. \n\ngeorge: well i'm not starting up a whole new wardrobe now!!! \n\njerry: look, freedom with no clothes is a lot better than no freedom with clothes. \n\ngeorge: if she'd just take a plane somewhere. \n\njerry: and what, hope for a crash? \n\ngeorge: it happens. \n\njerry: you know what the odds are on a crash it's a million to one. \n\ngeorge: it's something . it's hope. \n\nelaine: hey!...( sees george) hey!! georgie. you know what i just realized; the wedding is like a month away.ha..haa.. \n\njerry: euhh...elaine.... \n\nelaine: what?...oh! by the way. what am i going to be in the wedding party? \n\ngeorge: what do you mean? \n\nelaine: well jerry's gonna be the best man and kramer's gonna be the usher so what am i gonna be? \n\ngeorge: i don't know. i don't think you're anything. \n\nelaine: wel...i have to be something. i 'm a close friend....what about being a bridesmaid. \n\ngeorge: those are susan's friends. \n\nelaine: well then...aaahh how about being an usher? \n\ngeorge: well...i'll ask susan about it later. \n\nelaine: you don't ask.. you tell. \n\ngeorge: ( to jerry) what about the letter, should i think about the letter? \n\njerry: hey elaine if a guy wanted to end a relationship with you . what could he do? \n\nelaine: start smoking. \n\ngeorge: smoking. \n\njerry: does she hate cigarettes? \n\ngeorge: yes, she hates cigarettes. \n\njerry: but you don't smoke. \n\ngeorge: nooooooo...... \n\njerry: you know, i think i'm getting a little depressed about george's wedding. \n\nelaine: really? \n\njerry: yeah. well once he gets married that's it, she'll probably get pregnant, they'll move to westchester. i'll never see him again. \n\nelaine: yeah! you're probably right. \n\njerry: then it'll just be me, you and kramer. \n\nelaine: no! not me pal. i can't keep this up much longer. i'm sick of being single. i'm getting out. \n\njerry: so it's just gonna be me and kramer. \n\nelaine: yep! just you and kramer. \n\njerry: see you ... me and kramer... \n\nkramer: hey!! buddy. i thought of a great invention for driving. a periscope in a car, so you can see the traffic. \n\njerry: (annoyed) how you gonna drive when looking through a periscope? besides it's not a submarine and there's no room for a periscope in a car. \n\nkramer: huh! you make a higher roof. \n\njerry: they're not making higher roofs. \n\nkramer: why can't you make a higher roof. \n\njerry: because it's a stupid idea. no one's gonna go for it. don't you understand it's stupid ,stupid... \n\njerry: .....stupid , stupid. \n\njeannie: hey! hey! look out. (she pulls him back saving his life.) ok!, are you okay? \n\njerry: yeah!.. thanks.oh! my god you saved my life. \n\njeannie: shouldn't there be some kind of reward for that. \n\njerry: oh! thank you. \n\njeannie: you know you should be a lot more careful crossing the street like that, otherwise you could die.. if that bothers you. \n\njerry: well i... \n\njeannie: you see..(points to his collar) to me this is a waste. \n\njerry: what? \n\njeannie: the shirt you got on under your sweather. it sits for three weeks in your drawer, waiting to come out. and when it finally does . it sticks up only half an inch out of your collar. \n\njerry: i'm jerry seinfeld. \n\njeannie: jeannie steinman. \n\njerry: hey! same initials . how do you like that? \n\njeannie: i like it. \n\ngeorge: listen i was talking to elaine today and she said she'd would really like to be an usher at the wedding \n\nsusan: no. out of the question. i don't want any women ushers at my wedding and while we're on the subject, kramer is not an usher either. \n\ngeorge: why not? \n\nsusan: he doesn't even know my name. \n\ngeorge: that was an honest mistake. \n\nsusan: nah! he's too weird he'd fall or something. he'd ruin the whole ceremony. \n\ngeorge: yeah! you're right.. you're probably right. \n\nsusan: whadda doing? \n\ngeorge: (shrugs and lights it up) \n\nsusan: since when do you smoke? \n\ngeorge: (coughs) i've always smoked. \n\nsusan: i've never seen you smoke. \n\ngeorge: oh yeeah.. well , big smoker... i (coughs some more) gave it up for a while but it was too tough. y' know.....i got no will power. \n\nsusan: i don't like this one bit. \n\ngeorge: well(coughs) i can't stop now...(coughs) i'm addicted... \n\nsusan: well you are gonna have to quit. \n\ngeorge: oh my god.... \n\nwaitress: menus? \n\njerry: no. i know what i want. \n\nwaitress: the usual? \n\njerry: yeah., \n\nwaitress: and for you? \n\njeannie: i'll have a bowl of cheerios , not to much milk. \n\nwaitress: ok two bowls of cheerios. \n\njeannie: you too.?... \n\njerry: yeah!!! \n\nkramer: hey! did you hear the bank on the corner is offering a 100 dollars if you go in there and they don't greet you with a hello? \n\njerry: uh! really .that's nice. \n\nkramer: now what's with you? \n\njerry: i think i'm in love. \n\nkramer: oh. come on. \n\njerry: no it's true. this woman saved my life. i was crossing the street .i was almost hit by a car...and then we talked and.......the whole thing just seemed like a dream. \n\nkramer: if a guy saved your life you'd be in love with him too. \n\njerry: no, no this woman is different , she's incredible. she's just like me. she talks like me, she acts like me. she even ordered cereal at a restaurant. we even have the same initials. wait a minute, i just realised what's going on. \n\nkramer: what? \n\njerry: now i know what i've been looking for all these years......myself! (kramer is speechless) i've been waiting for me to come along and now i 've swept myself off my feet. \n\nkramer: you stop it man.. you're freaking me out!!! \n\nkramer: hey! \n\nteller: hey! \n\nkramer: hey! wait a second. you didn't say hello. \n\nteller: yes i did \n\nkramer: no no you didn't ...hundred dollars.. i get a hundred dollars. \n\nteller: no, no i said hello. \n\nkramer: no, no you said hey! \n\nteller: well.. hey! is hello, same thing. \n\nkramer: the add said that the bank's gonna pay a hundred dollars if you are not greeted with a hello \n\nteller: you're taking that much to literally. now sir , do you have any business to transact. \n\nkramer: no, i want to speak to the manager. \n\nteller: well, he's not here right now. \n\nkramer: then i'll be back. \n\nelaine: so i'm not gonna be an usher? \n\ngeorge: no.. \n\nelaine: so i'm nothing. jerry is best man , kramer is an usher and i am nothing. \n\ngeorge: well kramer's not an usher anymore. \n\nkramer: what are you talking about? \n\ngeorge: you've been demoted. \n\nkramer: why? \n\ngeorge: because you called her by the wrong name. \n\nkramer: but she really looks like a lily \n\nelaine: jerry ( as they come into the apt.) jerry, susan says i can't be an usher at he wedding. \n\nkramer: yeah. me neither. \n\njerry: (shrugs) hey george i think i want to bring a date to the wedding \n\ngeorge: who!!? \n\njerry: i just met her, she's incredible. \n\nelaine: aaawh...this is great!!.....now i'm gonna be stuck at the singles table with all the losers. \n\njerry: you can go with kramer \n\nkramer: no , no no no no. weddings are a great place to meet chicks. i have to be unfettered. \n\ngeorge: do you see what this is turning in to? do i need this. i have to get out of this thing. \n\nelaine: did you try the cigarettes? \n\ngeorge: yeah.. they made me sick. \n\nkramer: all right, all right. lets get down here. you really want to get out of this thing ? \n\ngeorge: yeah... \n\nkramer: all right. i got two words for you; pre-nup. \n\ngeorge: what does that mean? \n\nkramer: ask her to sign a pre-nup. \n\ngeorge: what does that do? \n\nkramer: because most women when they're asked to sign a pre-nup are so offended they back out of the marriage. \n\ngeorge: they are?... elaine? \n\nelaine: i wouldn't sign one. \n\ngeorge: pre-nup of course ..kramer.... \n\nkramer: get out of here. \n\ngeorge: hi. \n\nsusan: hi. hey i've been going over the list .what about the drake? wanna invite him? \n\ngeorge: yeah. got to invite the drake. listen hem...there's something that's been on my mind and we haven't really talked about it..i t's kind of important to me. \n\nsusan: what is it? \n\ngeorge: well i i ..put a lot of thought into this and i think i would like you to sign a prenuptual agreement. \n\nsusan: a pre-nup? \n\ngeorge: yeah. \n\nsusan: (burst out laughing) \n\ngeorge: what's so funny? \n\nsusan: ha.ha.ha. ha...you don't have any money. i make more money than you do. ha. ha. ha. yeah.. give me the papers i'll sign 'em.( she leaves) a pre-nup... \n\njerry: excuse me.( gets up and opens the door) \n\nkramer: jerry.... hey jeannie. \n\njeannie: hello. \n\nkramer: remember i told you about the bank? \n\njerry: yeah. \n\nkramer: yeah well i went in there and they said hey! \n\njerry: hey is the same thing as hello. what do you think jeannie. \n\njeannie: yeah i think it's the same thing. \n\nkramer: oh! big surprise ( he leaves frustrated) \n\ndelivery man: delivery from melody stationaries. \n\nsusan: oh those are the invitations. \n\ndelivery man: just sign there. \n\nsusan: yeah! thank you. \n\ngeorge: see ya later. \n\nsusan: urgh.. these are so cheap. (as george leaves) and don't forget tommorrow we're going shopping for some rings, so don't make any plans...and this time we're not skimping. \n\nkramer: hey \n\njerry: hey. \n\nkramer: jeannie left? \n\njerry: yeah , she's coming to see my act tonight. \n\nkramer: oh yeah! well that's nice. i'm sure that's right up her alley. \n\njerry: what's with you? \n\nkramer: nothin' \n\njerry: something on your mind? \n\nkramer: no. \n\njerry: looks like there is? \n\nkramer: no \n\njerry: come on. something's on your mind. out with it. \n\nkramer: i don't like her. \n\njerry: you don't like her? \n\nkramer: that's right i don't like , i never like her from the get-go. \n\njerry: what's wrong with her? \n\nkramer: everything she thinks. you think. everything you think she thinks. no i can't take it. i can't take it jerry. it's too much. it's too much. \n\njerry: well you can't take her maybe you can't take me either. \n\nkramer: so that's how it's going to be \n\njerry: that's how it's gonna be. \n\nkramer: oh! god help us!!! \n\nsusan: eurk.. awful \n\nmanager: may i help you? \n\nkramer: yeah. uh..i was in here the other day and i went up to that teller and he didn't say hello. \n\nmanager: then you are entitled to a hundred dollars. that's our policy. \n\nkramer: yeah., but he wouldn't give me the money. \n\nmanager: hehummm.. jim...can i see you for a second \n\njim: uh.. yes can you give me a minute. \n\nmanager: yea....hum......he'll be. hum.. right over.(awkward pause) \n\nkramer: (knocks on desk) is thi oak? \n\nmanager: 'think it's pine. \n\nkramer: pine is good. \n\nmanager: yeah. pine's okay. \n\njim: you want to see me \n\nmanager: yeah... hum..jim , a man here says came in the other day , you didn't say hello? \n\njim: no, no that's not true, i said hey! you know like a friendly greeting, hey! \n\nkramer: but that's not hello. \n\nmanager: that's a tough one. \n\nkramer: uhummm... \n\nmanager: you know what, let me bring some other people in on this...barbara, jane, mike can i see you please. \n\nbarbara: how you doin'? \n\njane: what's happening? \n\nmike: what's up? \n\nmanager: (to kramer) can you excuse us for one minute. just one minute. \n\nmanager: thanks. (they huddle) \n\nsome guy: how's it going? \n\nmanager: thanks, thanks everybody. (they leave) sir, have a seat. \n\nmanager: well , we've discussed this, here's the feeling. you got a greeting starts with an h how's twenty bucks sound. \n\nkramer: i'll take it. \n\nmanager: awright sir (they shake hands) \n\njerry: will you marry me? \n\njerry: i would like to propose a toast....wait a second.. george! george costanza come in here. \n\njeannie: georgie boy.. \n\njerry: george, big news; i'm getting married!! \n\ngeorge: married , what!(astounded) \n\njerry: september 21st, first day of autumn. leaves changing colours.. beautiful colors. \n\njeannie: ... all that crap. \n\njerry: you see , i kept up my end of the pact. \n\ngeorge: good for you (sympathetic) \n\njerry: hey look , champagne.. \n\ngeorge: hehehe. .(feebly) \n\njerry: to our future wives....yeah... \n\njerry: well it's been quite a night i could sure use a cup of coffee. \n\njeannie: hey! what's the deal with decaf; how do they get the caffeine out of there and then where does it go? \n\njerry: (weakly) i dunno \n\njeannie: that's a shame.. \n\njerry: (to waitress) i' ll just have a cup of coffee. \n\njeannie: bowl of corn flakes. \n\njerry: more cereal? that's your third bowl today, you had it for breakfast and lunch. \n\njeannie: hey! so what's the deal with brunch, i mean that if it's a combination of breakfast and lunch. how comes there's no lupper or no linner. \n\nkramer: hey!! frank just called me. congratulations. \n\njerry: thanks , thanks \n\nkramer: look i'm sorry about before....i mean i'm sure i'll learn to like her, jerry \n\njerry: yeah , yeah . \n\nkramer: c'mon , c'mon what's the matter? \n\njerry: i think i may have made a big mistake. \n\nkramer: oh! come on. \n\njerry: all of a sudden it hit me, i realized what the problem is; i can't be with someone like me.. i hate myself!! if anything i need to get the exact opposite of me....it's too much. it's too much i can't take it ...i can't take it!!! \n\nkramer: (mocking) too bad you got engaged. \n\njerry: yeah! too bad. \n\njerry: hello. oh! hi george.......what! ..really! all right i'll call elaine , we'll meet you down there. \n\nkramer: what happened? \n\njerry: they just took susan to the hospital \n\njerry: so she was just lying there. \n\ngeorge: tsss...yeah.. \n\nelaine: i wonder what happened? \n\ngeorge: i don't know....hmmm ha! here's the doctor. \n\ndoctor: excuse me , are you the husband? \n\ngeorge: well , not yet.. fianc. \n\ndoctor: well , i'm sorry.....she's gone. \n\ngeorge: .........what's that?... \n\ndoctor: she expired. \n\ngeorge: ...are you sure? \n\ndoctor: yes , of course. \n\ngeorge: so.....she's dead? \n\ndoctor: yes \n\ngeorge: ...huh! \n\ndoctor: let me ask you ; had she been exposed to any kind of inexpensive glue? \n\ngeorge: ...why? \n\ndoctor: we found traces of a certain toxic adhesive commonly found in very low priced envelopes. \n\ngeorge: well she was sending out our wedding invitations. \n\ndoctor: that's probably what did it. \n\ngeorge: we were expecting about two hundred people...well...thank you , thank you. \n\ngeorge: she's ahem....gone \n\njerry: dead? \n\nelaine: i'm so sorry george \n\njerry: yeah! me too \n\nkramer: poor lily.. \n\njerry: how did it happen? \n\ngeorge: apparently the glue in the wedding invitations was a....toxic. \n\nall: aah!.. \n\nkramer: well that's weird \n\njerry: so i guess , you're not getting married? \n\ngeorge: (embarrassed with a touch of unrestrained jubilation) yes. \n\njerry: but.... \n\ngeorge: yeah? \n\njerry: well , now i'm engaged.. \n\ngeorge: yeah?... \n\njerry: well i thought we'd both be getting married. \n\ngeorge: hey!.. what can i tell ya. \n\nelaine: all right. (they start to leave except jerry) \n\ngeorge: well humm.. lets get some coffee. \n\njerry: we had a pact!!! \n\ngeorge: yes i'd like to speak to marisa tomei, please? marisa, hi it's george costanza.. i'm the short, funny, quirky bald man you met a little while ago, heh! yeah i was just calling 'cos i wanted you to know that i'm not engaged anymore......well huh, she died....toxic glue from the wedding invitations.....well we were expecting about two hundred people. yeah... anyway.. hum i got the funeral tomorrow but huh.. my weekend is pretty wide open and i was wondering... (dial tone interrupts george)..... hello...hello.. \n\ngeorge: well... it's a magnificent stone. \n\nmr. ross: they put it up this morning. \n\ngeorge: it's just a magnificent stone. (turns to jerry) jerry? \n\nmrs. ross: george... we'll leave you alone with her. \n\ngeorge: what? \n\nmrs. ross: i'm sure there are things you'd like to say. \n\ngeorge: no, i-i-i-i'm good. really. \n\ngeorge: jerry... \n\njerry: thank you, no. \n\ngeorge: (to susan's stone) ...and then, right after the all-star break, we, we just swept the orioles. four games. in baltimore. (adjusts necktie nervously) so... yeah. \n\ngeorge: boy, that was awkward! \n\njerry: i don't mind the cemetery. \n\ngeorge: what were you saying to the rosses over there, anyway? \n\njerry: oh, i don't know. i told them her death takes place in the shadow of new life. she's not really dead if we find a way to remember her. \n\ngeorge: what is that? \n\njerry: star trek ii. \n\ngeorge: (identifying it) wrath of khan! \n\njerry: right. kramer and i saw it last night. spock dies, they wrap him up in a towel, and they shoot him out the bowel of the ship in that big sunglasses case. \n\ngeorge: that was a hell of a thing when spock died... \n\njerry: yeah... \n\ngeorge: well anyway, the, uh... the stone is up, i paid my respects, guess that's it. \n\njerry: so it's over? \n\ngeorge: i have mourned for three long months! summer months, too! anybody could grieve in january! it's time for george to start being george again. \n\njerry: all right, so uh, let's do something later. how 'bout a movie? \n\ngeorge: yes! nothing says george like a movie! \n\nkramer: movie? \n\njerry: yeah, you in? \n\nkramer: no, no, no, i can't. i got my martial arts class. \n\ngeorge: george is going to the movies! (exits) \n\njerry: (to kramer) so how's your karate class going? \n\nkramer: (pronouncing it \"kar-ah-tay\") karate, jerry. karate. the lifetime pursuit of balance and harmony. \n\njerry: ...but with punching and kicking. \n\nkramer: jerry, karate is not here (pointing to the ground). it's here (points to head), and here (points to chest), and here (makes a circle with his hands). \n\njerry: alright, i gotta go to the airport to pick up elaine. \n\nkramer: what, she's been away? \n\njerry: she's been in mexico for six weeks. \n\nkramer: no, i really think you're wrong. we just went to the fireworks the other day. \n\njerry: that was july 4th! \n\njerry: alright, i'm outta here, and when i get back, i don't want to see you here (points to kitchen), here (points to living room), or here (makes similar circle with his hands). \n\nelaine: it was unbelievable. six weeks of traveling through mexico all on peterman's peso. \n\njerry: wow. so did you get any good ideas for the catalog? \n\nelaine: oh, tons! \n\njerry: anything you couldn't have gotten tearing open a bag of doritos and watching viva zapata? \n\nelaine: (laughs sarcastically) you don't respect my work at all, do you? \n\njerry: no, i don't. \n\nelaine: so what's been going on around this dump? how's your fiancee? \n\njerry: my what? \n\nelaine: jeannie... your fiancee. \n\njerry: oh, yeah, that. well... \n\nelaine: all right. spill it, jerome. \n\njerry: there's really not that much to tell. \n\njerry & jeannie: (simultaneously) i hate you! \n\njeannie: see ya. \n\njerry: see ya. \n\njerry: (continuing) no rejection, no guilt, no remorse. \n\nelaine: you've never felt remorse. \n\njerry: i know, i feel bad about that... \n\nelaine: i bet your parents were upset, huh? \n\njerry: eh. \n\nelaine: you haven't told them yet, have you? \n\njerry: no. \n\ndugan: \"so i pressed through the rushes, there below me, the shimmering waters of lake victoria...\" \n\nj. peterman: oh, for the love of god, man! just tell me what the product is. \n\ndugan: it's a, uh, washcloth. \n\nj. peterman: no washcloths! \n\nelaine: well, mr. peterman, i've got a really good idea for a hat. it combines the spirit of old mexico with a little big city panache. i like to call it the urban sombrero. \n\nj. peterman: (rubbing his neck) oh, my neck is one gargantuan monkey fist. \n\nelaine: are you okay, mr. peterman? \n\nj. peterman: yes, yes. go on, go on, go on. \n\nelaine: well, see, it's... businessmen taking siestas. you know, it's the, uh, the urban sombrero. \n\nelaine: mr. peterman? \n\ngeorge: (inhales deeply) i tell you, jerry, i'm feeling something. something i haven't felt in a long time. \n\njerry: pride? \n\ngeorge: no. autonomy, complete and total autonomy. \n\njerry: well, you're your own boss now. \n\ngeorge: i wanna go to a tractor pull. \n\njerry: go ahead. \n\ngeorge: i am staying out all night! \n\njerry: who's stopping you? \n\ngeorge: i wanna bite into a big hunk of cheese, just bite into it like it's an apple. \n\njerry: whatever. \n\njerry: oh god. \n\ngeorge: what? \n\njerry: it's dolores. \n\ngeorge: who? \n\njerry: mulva. \n\ndolores: jerry, hi. \n\njerry: hi, dolores. george, you remember dolores? \n\ngeorge: dolores! \n\ndolores: hi. (to jerry) i heard you got engaged. \n\njerry: yes, dolores, i did. it didn't work out, though, dolores. \n\ndolores: oh, that's too bad. you know... we should get together sometime. see ya. \n\njerry: see ya. \n\ngeorge: bye, dolores. \n\ngeorge: i thought mulva hated you. \n\njerry: yeah, so did i. you know what? i bet it was the engagement. i've shown i can go all the way. \n\ngeorge: all the way? \n\njerry: not our \"all the way\", their \"all the way.\" i got the stink of responsibility on me. \n\ngeorge: yeah, and you were engaged for like a minute, i was engaged for a year. \n\njerry: you stink worse than i do! \n\ngeorge: i'm feeling something else here, jerry! \n\nsecretary: elaine, it's mr. peterman on the phone. \n\nelaine: (answers the phone) hello, mr. peterman, how are you feeling? \n\nj. peterman: elaine, i'll be blunt. i'm burnt out. i'm fried. my mind is as barren as the surface of the moon. i can run that catalog no longer. \n\nelaine: what? well, who's gonna do it? \n\nj. peterman: what about you? \n\nelaine: me? why me? \n\nj. peterman: why, indeed. \n\nelaine: mr. peterman, you can't leave. \n\nj. peterman: i've already left, elaine. i'm in burma. \n\nelaine: burma? \n\nj. peterman: you most likely know it as myanmar, but it will always be burma to me. bonne chance, elaine. (to a passerby) you there on the motorbike! sell me one of your melons! (runs after him) \n\nelaine: mr. peterman? \n\njerry: where? \n\nelaine: burma. \n\njerry: isn't it myanmar now? \n\nelaine: jerry, he wants me to run the catalog! it's crazy! i can't be in charge! \n\njerry: no, certainly not. \n\nelaine: i mean, i can't give people orders! \n\njerry: no one's gonna listen to you. \n\nelaine: i am not qualified to run the catalog! \n\njerry: you're not qualified to work at the catalog. \n\nkramer: hey. (notices elaine) what's wrong? \n\nelaine: oh, peterman ran off to burma, and now he wants me to run the catalog. \n\nkramer: where? \n\njerry: myanmar. \n\nkramer: the discount pharmacy? \n\nelaine: well, i'm just gonna tell him no. i can't run the catalog. \n\nkramer: whoa, whoa. can't? when did that word enter your vocabulary? what, is the job too difficult? (jerry nods) what, you don't have enough experience? (jerry shakes his head) oh, you're not smart enough? (jerry shakes his head) where's your confidence? (jerry shrugs his shoulders) look, elaine, let me tell you a story. when i first studied karate... \n\nelaine: karate? \n\nkramer: yeah, karate. i had no support. not from him, not from newman, no one. the first time i sparred with an opponent, i was terrified. my legs, they were like noodles. but then i looked inside, and i found my katra. \n\nelaine: katra? \n\nkramer: yeah, your spirit, your, uh, being. the part of you that says, \"yes, i can!\" \n\njerry: sammy davis had it. \n\nkramer: so i listened to my katra and now <vreep> i'm dominating the dojo. i'm class champion. \n\nelaine: well, you know, i, i have watched peterman run the company. \n\nkramer: sure you have. \n\nelaine: i know how to do it. pair of pants, a stupid story, a huge markup. i can do that. \n\nkramer: you follow your katra, and you can do anything. (leads her to the door) now get out of here. \n\nelaine: (excitedly) okay. \n\nkramer: that kid is gonna be all right. \n\njerry: no, she's not. \n\njoey: come on, kramer! \n\nkramer: hey there. \n\njoey: come on. mom's down in the car. \n\nkramer: okay, joey. \n\njerry: you guys both have class at the same time? \n\nkramer: no, we're in the same class. \n\njerry: what do you mean you're in the same class? \n\nkramer: he almost beat me. \n\njerry: kramer, you're fighting children?! \n\nkramer: we're all at the same skill level, jerry. \n\njerry: he's nine years old! you don't need karate, you can just wring his neck! \n\nkramer: i got carpool. (exits) \n\nkramer: thanks for the juice box, mrs. z. \n\njoey: hey, could we stop for ice cream on the way home, mom? \n\nmrs. zanfino: mmm, i don't know... \n\nmrs. zanfino: all right. \n\nkids & kramer: yay! \n\ndugan: *you're* taking the job? \n\nelaine: you got that straight. now i want four new ideas from each of you by 600. no, make that six ideas by 400. all right, let's move, move, move, move, move! \n\nsansei: are you prepared for kumite? \n\nkramer & joey: yes, sansei. \n\nsansei: fight stance. \n\nsansei: hydjama! begin! \n\nsansei: (raising kramer's arm) winner! \n\ngeorge: it's open! \n\ngeorge: (surprised) rosses. \n\nmrs. ross: hello, george. \n\ngeorge: well, uh... come in, come, come in. (frantically clears the couch of newspapers and crumbs) \n\nmr. ross: we, uh, tried to call, but the line was busy. \n\ngeorge: oh. oh. yeah, sure. here. uh, sit down. uh, uh, cheese, there? (he grabs a suit jacket from the desk chair and puts it on) \n\nmrs. ross: we know the last three months have been hard on you. \n\ngeorge: oh, yes, yes, yes. very, very hard. \n\nmr. ross: and they've been hard on us, too. it's a terrible tragedy when parents outlive their children. \n\ngeorge: yes, i agree. i hope my parents go long before i do. \n\nmr. ross: that's why we decided to create a foundation to preserve susan's memory. \n\ngeorge: oh, that's wonderful. \n\nmr. ross: and, of course, we want you to be an integral part. \n\ngeorge: yes, inte-- h-how inte-- how integral? \n\nmr. ross: you'll be on the board of directors. \n\ngeorge: (feigning excitement) great, great. o-oh, oh, oh, gosh. you know, it's just... my duties with the yankees... \n\nmrs. ross: don't worry, george. the foundation will revolve around your schedule. evenings, weekends, whenever you have free time. \n\ngeorge: i can't believe this is happening. \n\nmr. ross: well, it wouldn't have without your friend jerry's inspirational words. he said to us, \"she's not really dead if her shadow is...\" uh, w-what was it, dear? \n\nmrs. ross: something about a way, a-and a light, uh... ha. who the hell knows? \n\nmr. ross: well, what's important is that your relationship with susan doesn't have to end. \n\nmrs. ross: so will you be sure to thank jerry for us? \n\ngeorge: (feigning happiness) the second i see him. \n\njerry: hey. \n\ngeorge: hey. how's your day, good? \n\njerry: actually, yeah. i'm meeting mulva here in a few minutes. \n\ngeorge: so uh... wrath of khan, huh? \n\njerry: yeah. was that a beauty or what? \n\ngeorge: what was that line again? something about finding your way in a shadow? \n\njerry: no, no, no, it's... \"she's not really dead if we find a way to remember her.\" \n\ngeorge: that's it. that's the line... (squirts mustard into jerry's coffee and stirs it) ...that destroyed my life. \n\njerry: (stares into coffee cup and looks back at george) problem? \n\ngeorge: the rosses have started up a foundation, jerry, and i have to sit on the board of directors. \n\njerry: hey, board of directors. look at you! \n\ngeorge: yeah! look at me! i was free and clear! i was living the dream! i was stripped to the waist, eating a block of cheese the size of a car battery! \n\njerry: before we go any further, i'd just like to point out how disturbing it is that you equate eating a block of cheese with some sort of bachelor paradise. \n\ngeorge: don't you see? i'm back in. \n\njerry: all because of wrath of khan? \n\ngeorge: yes! \n\njerry: well, it was the best of those movies. \n\ngeorge: khan! \n\nwyck: george. \n\nwyck: george. (taps him on the shoulder) \n\ngeorge: (startled) oh! \n\nwyck: i'm wyck thayer, chairman of the susan ross foundation. \n\ngeorge: wink. \n\nwyck: (correcting him) wyck. \n\ngeorge: wyck. \n\nwyck: now, as you know, the rosses had considerable monies. \n\ngeorge: oh. i know they have some monies. \n\nwyck: they had more than some monies. many, many monies. and they planned to give a sizable portion of their estate to you and susan after the wedding. \n\ngeorge: so, if susan and i had... i mean, if the envelopes hadn't, uh... then we-- \n\nwyck: yes. \n\ngeorge: and now? \n\nwyck: not. it's all been endowed to the foundation, even this townhouse. \n\ngeorge: this townhouse? \n\nwyck: this would have been your wedding gift. \n\ngeorge: and now? \n\nwyck: not. \n\ngeorge: not. \n\nwyck: also endowed. george... i know how much susan meant to you. it can't be easy. \n\ngeorge: you know, it really can't. \n\ndolores: so who broke it off? \n\njerry: well, that's the thing. it was completely mutual. \n\ndolores: oh, come on. everybody knows there's no such thing as a mutual breakup. tell me the truth. \n\njerry: i am. it was the world's first. \n\ndolores: you know, when i heard you got engaged, i thought *maybe* you had matured. but obviously there's no growth here. (exits) \n\njerry: well, i can't argue with that, but the fact remains... i was completely... (to himself, cursing her) mulva! \n\njerry: (answering) hello? \n\nsecretary: please hold for elaine benes. \n\njerry: oh, i don't believe this. \n\nelaine: (picking up) jerry! \n\njerry: hey! \n\nelaine: hey. guess who just finished laying out her first issue of the j. peterman catalog. \n\njerry: how's it look? \n\nelaine: (muffled, as she's smoking a cigar) it's a peach. \n\njerry: huh? \n\nelaine: i say, it's a peach. \n\njerry: elaine, let me ask you something. when i told you my breakup was mutual, did you believe me? \n\nelaine: no, no, no. it's weak. no one's gonna buy it, and you shouldn't be selling it. \n\njerry: i gotta do some research here. \n\nelaine: hey, hey. me. talking. you know, between you and me, i always thought kramer was a bit of a doofus, but he believed in me. *you* did not. so as i see it, he's not the doofus. *you* are the doofus. \n\njerry: oh, i'm the doofus? \n\nelaine: yeah. you, jerry, are the doofus. \n\njerry: you know, it occurs to me that kramer is at karate right now. \n\nelaine: oh, well, maybe i'll just go down there and thank him in person. \n\njerry: yeah, that's what i was thinking. \n\nelaine: kramer! \n\nkramer: oh, hey. \n\nelaine: what are you doing? \n\nkramer: oh, well, i-i-i'm dominating. \n\nelaine: you never said you were fighting children. \n\nkramer: well, it's not the size of the opponent, elaine, it's, uh, the ferocity. \n\nelaine: this is what you used to build me up? this is where you got all that stupid katra stuff? \n\nkramer: no, no. that's from, uh, star trek iii... the search for spock. \n\nelaine: search... for spock?! \n\nkramer: yeah, i know jerry will tell you that the wrath of khan is the better picture, but for me, i always... \n\nelaine: (pushes him) you doofus! \n\njerry: okay, question #8. what if i told you my fiancee left me for another man? does that make me more likable, less likable, as likable? let's start over here this time. \n\nwaitress #1: more. \n\nwaitress #2: less. \n\nruthie: same. \n\nwillie: are we about through here? \n\nkramer: i thought you said your mom was meeting us in the alley. \n\njoey: she had a little change of plans. \n\nkramer: what's going on? hey, timmy, clara. that was some kind of workout we had tonight, huh? \n\ngirl: now we finish it. \n\nkramer: aah! aah! mama! \n\njerry: (on the phone) dad, i wouldn't eat anything you caught in that pond out in front of the condo. \n\njerry: uh, look, elaine's here, i gotta get going. oh, by the way, uh, i'm not getting married. tell mom. bye. (hangs up) \n\njerry: so... did you stop by the dojo? \n\nelaine: yep. \n\njerry: how's your confidence level? \n\nelaine: shot. \n\njerry: self-esteem? \n\nelaine: gone. \n\njerry: doofus? \n\nelaine: (raises her hand) yo. \n\njerry: all right, so what? you put out the catalog. how bad could it be? \n\njerry: what is that? \n\nelaine: it's the urban sombrero. i put it on the cover. \n\njerry: well, nobody sees the... cover. \n\nkramer: god! \n\njerry: what happened to you? \n\nkramer: whew! i got whooped. you should have seen the rage in their little eyes. and those tiny little fists of fury. oh. (notices the urban sombrero) what is that? \n\njerry: it's the new cover of the j. peterman catalog. it is elaine's choice. let's congratulate her. \n\nkramer: oh i see. (elaine walks up to him) woof! \n\nelaine: (pointing a finger accusingly at kramer) you! this is all your fault! you told me i could run the company! \n\nkramer: well, then i was way off! \n\nelaine: well, i'll see ya... (exits) \n\njerry: vaya con dios. \n\nkramer: (with his forehead in his hands) man, i gotta go lay down. you and george going out a little later? \n\njerry: no, he's still stuck at the foundation. \n\nkramer: you know, you oughta go down there and help him out. he's a widower. \n\njerry: widower? wait a second. (goes to a notebook of his research) \n\nwyck: okay, let's see. the beachhouse. 48 acres... ooh. southampton. that should fetch a fair price. \n\ngeorge: would i have had access to that? \n\nwyck: of course, it would have been yours. \n\ngeorge: and now? \n\ngeorge: (anticipating the answer) not. \n\ngeorge: hello? \n\njerry: hey, georgie! i'm doing some research down at the coffee shop. your story's the one. \n\ngeorge: my story? \n\njerry: yeah, your widower story's tested through the roof. (various patrons give the thumbs up in approval) when are you getting out of there? \n\ngeorge: uh, excuse me, wyck. uh, are we, uh, almost done here? \n\nwyck: (chuckling) oh, no, not even close. \n\ngeorge: (remorsefully) i can't go. \n\njerry: what do you mean you can't go? there's two really girls sitting at the counter eating grilled cheese. cheese, george! cheese! \n\nwyck: okay, next item. susan's doll collection. estimated value $2.6 million. what do you say we go through this doll by doll? \n\ngeorge: you want me to find a poem about susan? may she rest in peace?! \n\nwyck: well, we think it would be a nice touch for the foundation literature. do you have a favorite poet, george? \n\ngeorge: i like, uh...(mutters something unintelligible under his breath.) \n\nwyck: pardon? \n\ngeorge: (mutters it again) \n\nwyck: well, you should choose the poem since you knew susan best at the time of her unfortunate (clears his throat)...accident. \n\njerry: he cleared his throat? \n\ngeorge: yes! \n\njerry: so? \n\ngeorge: he did it right as he said \"her unfortunate accident.\" \n\njerry: not getting it. \n\ngeorge: jerry, a throat-clear is a non-verbal implication of doubt - he thinks i killed susan! \n\njerry: oh, help me, rhonda. \n\ngeorge: what time is it? \n\njerry (looks at his watch): 115. \n\ngeorge: right now? \n\njerry: i gotta go meet pam. \n\ngeorge: oh, the bookstore girl. how's that goin'? \n\njerry: okay. i'm just not ga-ga over her. for once i'd like to be ga-ga. \n\ngeorge: where's elaine? \n\njerry: she's having carol, gail and lisa over. you know they all have kids now? \n\ngeorge: what's with all these people having babies? \n\njerry: perpetuation of the species. \n\ngeorge: yeah! right! \n\njerry: by the way, just for the record - \n\ngeorge: no, i did not! (they exit the coffee shop.) \n\ncarol: ...but because it comes out of your baby, it smells good! \n\nelaine: well, that's...that's sweet. \n\ngail: being a mother has made me feel so beautiful. \n\ncarol: elaine, you gotta have a baby! \n\nelaine: oh, hey, you know...i had a piece of whitefish over at barney greengrass the other day... \n\nlisa: elaine. move to long island and have a baby already. \n\nelaine: i really like the city. \n\ncarol: the city's a toilet. when's the last time you saw my little adam? \n\nelaine: uh, it was in the hamptons. \n\ncarol: oh! i have pictures! \n\nelaine: no, no, that's okay, it's uh... \n\ncarol (shows elaine and the girls pictures of adam): look at him! just look at him! \n\njerry: so, elaine was telling me about this piece of whitefish she had the other day... \n\ngeorge: do you really think i'm wrong about this wyck guy? \n\njerry: you know, if you really want to test him out, why don't you try the old jerry lewis trick? \n\ngeorge: jerry lewis? \n\njerry: i heard that when jerry lewis left a meeting, he'd purposefully leave a briefcase with a tape recorder in it. then after five minutes, he'd come back for it and listen to what everyone said about him. \n\ngeorge: that's pretty paranoid. \n\njerry: yes, it is. \n\ngeorge: i like it! \n\njerry: i thought you might. \n\npam: oh, hi! i'm pam. you must be kramer. (kramer is smitten with pam and grins goofily.) jerry's told me a lot about you. (kramer continues grinning.) well, i'm supposed to meet jerry, it's my day off. i work in a bookstore. \n\nkramer (mouths the words): books. (knocks over a bowl of fruit on the counter.) \n\npam: oh, careful! (jerry enters.) \n\njerry: hi, sorry i'm late. \n\npam: that's okay. kramer let me in. \n\njerry: you know, if we rush, we can still make the movie. \n\npam: okay. (touches kramer's hand) it was really nice meeting you. \n\nkramer: i'm in trouble, buddy. i just met a woman. \n\nnewman: go on. \n\nkramer: well, she's jerry's girlfriend. \n\nnewman: ah, yes. forbidden love. \n\nkramer: she works in a book shop. her name is pam. \n\nnewman: \"pam.\" i don't know the woman, but she sounds quite fetching. \n\nkramer: i can't even speak in front of her. (sits down on the couch.) \n\nnewman: jerry! what could she possibly see in jerry? (walks in front of kramer and trips over his feet.) \n\nkramer: she has delicate beauty. \n\nnewman: jerry wouldn't know delicate beauty if it bludgeoned him over the head. \n\nkramer: and yet, he's my friend. \n\nnewman: and therein lies the tragedy. for i believe, sadly for you, that there is but one woman meant for each of us. one perfect angel for whom we are put on this earth. \n\nkramer: aw, that's beautiful, newman. \n\nnewman: one winsome tulip we ceaselessly yearn for throughout our dreary, workaday lives! and you, my friend, have found your angel. i can tell. for my heart has also been captured by a breathless beauty - whom i fear i will never possess. \n\nkramer: i thought we were talking about me. \n\nnewman: right. kramer, you have to confront jerry. \n\nkramer: confront jerry? i can't. \n\nnewman: you must! \n\nkramer: i won't! \n\nnewman: you will! \n\nelaine (to jerry, imitating carol): \"elaine, ya gotta have a baby.\" ugh. \n\ngeorge: where are all the poetry magazines? \n\nelaine: the new yorker has poetry. \n\ngeorge: yes. the new yorker. \n\njerry: why do you invite these women over if they annoy you so much? \n\nelaine: they're my friends, but they act as if having a baby takes some kind of talent. \n\njerry: c'mon, you want to have a baby. \n\nelaine: why? because i can? \n\njerry: it's the life force. i saw a show on the mollusk last night. elaine, the mollusk travels from alaska to chile just for a shot at another mollusk. you think you're any better? \n\nelaine: yes! i think i am better than the mollusk! \n\nkevin: i couldn't help overhearing what you were saying. \n\nelaine: oh, i'm sorry. \n\nkevin: no, no, i think i agree with you. i mean, all this talk about having babies. \n\nelaine: yeah, like you must procreate. \n\nkevin: besides, anyone can do it. \n\nelaine: oh, it's been done to death. (smiles) \n\ngeorge: i, uh, should have a poem very soon now. \n\nwyck: are you okay, george? \n\ngeorge: no, no, not really. ever since susan passed on, i have good days and bad. (turns the briefcase towards the woman on his left.) some days, i'm haunted by one word - why. why susan? why wasn't it me licking those invitations? why am i still here? well, i gotta run. (gets up and leaves the meeting.) \n\nwyck: ...and the stock options for this year look quite, uh... (george returns and retrieves the briefcase.) \n\ngeorge (apologetic): briefcase. (shrugs and exits.) \n\nelaine: so, kevin. if i don't want children, does that make me a bad humanitarian? \n\nkevin: not at all. \n\nelaine: 'cause, i mean, when you get to know me, you'll see that i'm a pretty good humanitarian. (waitress comes to the table and pours more coffee.) you are doing a wonderful job, by the way. thanks a lot. (to kevin) right? am i right? (kramer walks by.) kramer. kramer! come here, look at my new friend kevin. (kramer and kevin shake hands.) oh, you got a little, uh... \n\nkramer (wipes chocolate off his face): oh, i just had two double-fudge sundaes. \n\nelaine: oh. are you alright? \n\nkramer: yeah, i'll be okay. \n\nelaine: you know, jerry has one of those every time he bombs on stage. \n\nkramer: well, i'm sure he'll be sharing his next one with pam. \n\nelaine: oh, no...that won't last. \n\nkramer: what do you mean? \n\nelaine: he's not ga-ga. \n\ngeorge: lemme tell you something, that jerry lewis? you wonder how some of these people get to the top? it's ideas like this! brilliant! hah-hah! (notices that the briefcase is damaged.) look at this - what the hell happened? the whole side is damaged here...and the lock is broken. \n\njerry: how long did you leave it up there? \n\ngeorge: five minutes. what the hell happened here? \n\njerry: play the tape, maybe we'll get a clue. \n\ngeorge: i have to rewind it first. (george presses the rewind button on the tape recorder. he and jerry stand there, waiting impatiently as it rewinds.) alright, alright. \n\njerry: is that it? \n\ngeorge: stopped dead. \n\njerry: what do you make of it? \n\ngeorge: i don't know. (george sits down at the table. kramer enters.) \n\nkramer: jerry. uh, can we talk? \n\ngeorge (to kramer): kinda busy here. \n\nkramer: i'd like to talk to jerry in private. \n\ngeorge: why can't i stay? \n\nkramer: because it doesn't concern you. \n\ngeorge: well, if it doesn't concern me, then i can stay. (kramer grabs the back of george's chair, drags him out into the hallway and closes the door.) \n\njerry: so, what's on your mind? \n\nkramer: it's pam. \n\njerry: pam? what about pam? \n\nkramer: i love her, jerry! \n\njerry: you what? \n\nkramer: i love her! \n\njerry: is that right? \n\nkramer: oh, she's uh...she's real. she can bring home the bacon and fry it in the pan. \n\njerry: what does that mean? \n\nkramer: oh, and that voice! \n\njerry: what about her name? \n\nkramer: pam? oh, it's a beautiful name. (kramer sits on the couch.) pam. pam. pam! \n\njerry: she's got really nice hair. \n\nkramer: oh, it's incredible. although, i might replace her tortoise clip with one of those velvet scrunchies. i love those. \n\njerry: you've got really specific tastes. \n\nkramer: oh, i know what i want, jerry. \n\njerry: she's got nice calves. \n\nkramer: oh, she's a dreamboat. but, you don't like her, so... \n\njerry: maybe i could, you're making some pretty good points. \n\nkramer: no you can't, jerry. \n\njerry: but i might. \n\nkramer: oh, no you don't. \n\njerry: why not? the voice? the calves? the bacon? \n\nkramer: what...? \n\njerry: i think i can! i even like the name! pam! \n\nkramer (frantic): huh? \n\njerry: pam! \n\nkramer: huh? \n\njerry: pam! \n\nkramer: huh-yah! (kramer loses it and runs out past george, who is still sitting in the hallway on a chair.) \n\nkramer: so now he wants her more than ever! \n\nnewman: blast! \n\nkramer: what am i gonna do, huh? \n\nnewman: don't despair, my friend. (newman walks in front of kramer and trips over his feet. again.) i won't allow your love to go unrequited. not like mine. \n\nkramer: what, again with you? \n\nnewman: sorry. but love is spice with many tastes. a dizzying array of textures...and moments. \n\nkramer: if only i could say things like that around her. \n\nnewman (getting an idea): yes... \n\nelaine: well, i hear three distinct sounds. a low rumple...followed by a metallic 'squink'... \n\ngeorge: yes! yes, i heard the 'squink'! \n\nelaine: ...followed by a mysterious...'glonk.' \n\ngeorge: it's baffling, isn't it? \n\nelaine: well, one question does come to mind. have you considered just...asking them what happened to the briefcase? \n\ngeorge: they would never tell me, elaine. first of all, they probably think that i killed susan. besides, i don't even think they like me. (jerry comes over to the table.) \n\njerry: that pam! i am ga-ga over her! \n\nelaine: ga-ga? when did that happen? \n\njerry: yesterday. six-ish. \n\nelaine: well, maybe we should double. i'm pretty ga-ga myself. \n\njerry: you just met the guy yesterday. \n\nelaine: yeah, but we have a common goal. \n\njerry: a barren, sterile existence that ends when you die? \n\nelaine (happily): yeah. \n\ngeorge: and you really believe this guy doesn't want to have kids. \n\nelaine: yeah, of course. \n\njerry: elaine, a guy'll say anything to get a woman. \n\nelaine: oh, please. he wouldn't say that. \n\ngeorge: elaine, i once told a woman that i coined the phrase, \"pardon my french.\" \n\njerry: i once told a woman that i don't eat cake 'cause it goes right to my thighs. \n\ngeorge: i once told a woman that i really enjoy spending time with my family. \n\nnewman: with your looks and my words, we'll have built the perfect beast. (kramer claps him on the shoulder, then goes to the other side of the aisle to talk to pam.) \n\npam: oh, hi! kramer. \n\nnewman (whispers through the bookcase): hi. how are you? \n\nkramer: hi. how are you? \n\npam: i'm great. \n\nnewman: i too am well. \n\nkramer: i too am well. \n\nnewman: do i smell pantene? \n\nkramer: do i smell? \n\nnewman: pantene! \n\nkramer: uh, pantene. \n\npam: oh, my shampoo. yeah, it is pantene, i got a free sample in with my junk mail. \n\nkramer (talks rapidly in an attempt to keep up with newman): well, there really is no junk-mail...well, everybody wants to get a check or a birthday card, but... \n\nnewman (frantic): ...it takes just as much man-power to deliver it as their precious little greeting cards... \n\nkramer: newman! (elbows him through the books. newman falls over.) \n\npam: what? \n\nkramer: uh, human. it's...human to be moved by a fragrance. \n\npam: that's so true. \n\nkramer: her bouquet cleaved his hardened... \n\nnewman: shell. \n\nkramer: ...shell. and fondled his muscled heart. he embibed her glistening spell...just before the other shoe...fell. \n\npam: kramer, that is so lovely. \n\nkramer: it's by an unknown 20th-century poet. \n\npam: oh, what's his name? \n\nkramer: newman. (on the other side of the bookcase, newman preens proudly.) \n\nkevin: elaine, you've changed my life. \n\nelaine: oh, kevin...you can go on and on about how you don't want kids...and it sounds, it sounds really nice, but...the truth is, i don't know if you mean it or not. \n\nkevin: i got a vasectomy this morning. \n\nelaine: although, i have a hunch you mean it. \n\njerry: i just came by to tell you - i'm really, really happy about this relationship. really happy. \n\npam: oh. well, that's um...(clears her throat)...nice. (jerry looks suspicious. pam turns around and jerry notices her tortoise clip has been replaced with a velvet scrunchie.) \n\njerry's brain: a velvet scrunchie! \n\njerry: kramer! \n\njerry: hello, newman. \n\nnewman: hello, jerry. how's pam? \n\njerry: pam? what do you care? (newman shrugs. jerry notices he's carrying a brentano's bookstore bag.) \n\nnewman: well, ta-ta! (scampers away.) \n\njerry: wait a minute! (a manic chase scene ensues, with jerry chasing newman from one end of the building to the other. jerry finally catches up with him in the hallway on another floor.) \n\njerry: alright, newman! this is it! (shoves him against the wall.) \n\nnewman (sweating): easy, jerry. steady. you wouldn't want to lose your cool at a time like this. \n\njerry: why not? \n\nnewman: because right now, i'm the only chance you've got. (newman giggles nervously. jerry makes newman flinch, and his giggling is choked off.) \n\njerry (rolls his eyes): c'mon. (they exit.) \n\njerry: i can't believe i'm losing pam! \n\nnewman: i know how you feel. for i, too, have a woman for whom i pine. \n\njerry: i thought we were talking about me. \n\nnewman: right. \n\njerry: anyway, i don't need your help. (turns to leave.) \n\nnewman: oh, don't you? joke boy? you really think you can manipulate that beautiful young woman like the half-soused nightclub rabble that lap up your inane \"observations\"? \n\njerry: alright, newman. what do i have to do to get you to stop pulling the strings for kramer? \n\nnewman: well, there is a little something you can do for me... \n\njerry: c'mon, out with it. \n\nnewman: it's about...elaine. \n\njerry: elaine? what does she have to - (notices newman looking up at him longlingly.) oh no... \n\nnewman: you dated her. give me some inside information. anything i can use! \n\njerry (shrugs): well, i know she doesn't want to have kids. (newman considers the implications of this.) \n\nkevin: i thought you'd be a little more enthusiastic about it. \n\nelaine: i know, i don't want...(clears her throat)...kids. \n\nkevin: what was that? \n\nelaine: well, kevin, maybe i have a little doubt. i mean, nothing is a hundred percent. \n\nkevin: this is! oh boy, i always do this. \n\nelaine: what? \n\nkevin: oh, i get all jazzed up about something and i go way to far with it. \n\nelaine: really? \n\nkevin: oh, yeah. like last summer. i'm watchin' tv and i saw one of those jet-skis. $4000 later and it's sitting in my garage. \n\nelaine: you know, that's weird, actually, 'cause i'm sort of the same way. i mean once for like, no reason, i flattened my hair and i had all these strands hanging in my face all the time... \n\nkevin: sometimes i think i do want kids. maybe a lot of kids! \n\nelaine: sometimes i think about wearing my hair real short. \n\nkevin: yeah! i think i like short hair. really short. \n\nelaine: yeah! \n\nkevin: yeah! \n\ngeorge: this is a crude mock-up of the conference room. 1/14th scale. \n\njerry: when did you build this thing? \n\ngeorge: yesterday, took the day off. (picks up a red power ranger action figure from the model and pretends it's him.) now, from the time i left the room... \n\njerry (points at the power ranger): wait, that's you? \n\ngeorge: yeah. \n\njerry (picks up a yellow m&m toy from the model): i really think the m&m should be you. \n\ngeorge (grabs the m&m away from jerry): alright, whatever! now. whatever caused the damage...(drops a tiny briefcase onto the table in the model)...was jarring enough to completely stop the tape. \n\njerry: and? \n\ngeorge: okay. that's what we know. \n\njerry: but we already knew that. \n\ngeorge: well, yeah. \n\njerry: just give me some idea of what you think it could be. \n\ngeorge: i don't know if you're ready for it. \n\njerry: please. \n\ngeorge: i believe that i am about to become the target of a systematic process of intimidation and manipulation, the likes of which you have never - \n\njerry: hold it, hold it! you're right, i'm not ready for this. (the door buzzer sounds, jerry answers it.) yeah? \n\nvoice on speaker: it's pam. \n\njerry: c'mon up. (to george) alright, it's pam, you gotta get goin.' \n\ngeorge: i'm not through here, jerry. (picks up the model of the conference room.) i'm gonna keep on investigating. this thing is like an onion. the more layers you peel, the more it stinks. (pam enters, george leaves.) \n\npam: what was that? \n\njerry: we were just playin.' \n\npam: listen, i had a long talk with kramer today... \n\njerry: uh huh... \n\npam: well, the thing is, i uh...i think i have a little crush on him. (kramer slides in the door on his knees.) \n\nkramer: i'm so happy! my world suddenly has meaning! \n\njerry (to pam): this is the man you have a crush on? \n\npam: well, i have feelings for both of you. \n\nkramer: how can you have feelings for him? we're soul mates. \n\njerry: why can't i be a soul mate? \n\nkramer: jerry, you really think that pam would want you to be the father of her children? \n\npam: children? who said anything about children? i don't want to have children. \n\ngeorge: there are some people in this room who would have been very happy to never see this briefcase again. there are people in this room who think they can destroy other people's property and get away with it. well, let me tell you something about those people. they weren't counting on this brain! and this tape recorder. \n\nwyck: george... \n\ngeorge: you'll have your turn! the truth must be heard. (plays back the tape.) that's all there was. and yet, it speaks volumes. a low rumple. a metallic 'squink.' a 'glonk.' someone crying out...\"dear god!\" let's start with, uh...with you, wyck. \n\nwyck: george, quinn here was moving a chair...he lost his balance and dropped it...it must have fallen on your briefcase, which, for some reason, contained a running tape recorder? \n\ngeorge: alright, then. we've gotten to the bottom of that. \n\nelaine: what are you guys doing here? \n\njerry: we're getting vasectomies. \n\nelaine: why? \n\nnewman (to elaine): i'm doing it for you. \n\nelaine: what? \n\njerry (to elaine): what'd you do to your hair? \n\nelaine: i cut it. \n\njerry: it's a little short. \n\nkevin: y'think? \n\njerry (to kevin): what are you doing here? \n\nelaine: kevin's having his vasectomy reversed. \n\njerry and newman: reversed?! (kramer comes hobbling out of the doctors office in pain, after having a vasectomy of his own, and exits. jerry and newman look at each other, and bolt for the door themselves.) \n\ngeorge: ...he embibed her glistening spell...just before the other shoe...fell. \n\nwyck: is that a keats poem? \n\ngeorge: no, it's a newman. well, i gotta run. (smiles, pats his briefcase and exits.) \n\nwyck: does anyone think george might have murdered susan? \n\nmr. cross: oh, yeah. i just assumed he murdered her. \n\nms. baines: of course he killed her. \n\nwyck: so it's not just me, then. alright! back to business. \n\njerry: all right. how 'bout this one let's say you're abducted by aliens. \n\ngeorge: fine. \n\njerry: they haul you aboard the mother ship, take you back to their planet as a curiosity. now would you rather be in their zoo, or their circus? \n\ngeorge: i gotta go zoo. i feel like i could set more of my own schedule. \n\njerry: but in the circus you get to ride around in the train, see the whole planet! \n\ngeorge: i'm wearin' a little hat, i'm jumpin' through fire.. they're puttin' their little alien heads in my mouth.. \n\njerry: (resigned) at least it's show business.. \n\ngeorge: but in the zoo, you know, they might, put a woman in there with me to uh.. you know, get me to mate. \n\njerry: what if she's got no interest in you? \n\ngeorge: w--then i'm pretty much where i am now. at least i got to take a ride on a spaceship. \n\n[exterior long shot: looking up at an office building; interior of office reception area of \"brand/leland\" as george, jerry, and kramer come in. they calmly keep it quiet.] \n\nkramer: george, why couldn't i use the bathroom in that store? \n\ngeorge: kramer, trust me, this is the best bathroom in midtown! \n\nkramer: (frustrated) wha?? \n\njerry: (dry) he knows. \n\ngeorge: (anyway,) on the left--exquisite marble! high ceilings. an' a flush, like a jet engine! (imitates sound) ha ha! \n\nkramer: (impressed) now, listen, uh. you better not wait. i'll catch you later. \n\ngeorge: you sure? \n\njerry: (dry) he knows. \n\ngeorge: wow. nice. \n\njerry: why don't you try your engagement story? \n\ngeorge: (considers, but got into elevator) won't work. \n\njerry: are you sure? \n\ngeorge: (wry) he knows. \n\nelaine: look. kevin. i really like you, heh, heh, uh. but, um, maybe we'd be, better off just being.. friends. (takes a bite of her sandwich) \n\nkevin: friends? \n\nelaine: well. i mean. (distracted by the food) oh, god. this tuna tastes like an old sponge. \n\nkevin: friends. yeah! why not friends? i might like to try that! like you an' jerry! \n\nman: (frustrated) damn thing is jammed again.. \n\nkramer: you know what happens with these? the rollers, they get flat spots on 'em. (hits button several times and whacks it) \n\nman: come on, let's go. \n\nkramer: (absently wants to be part of it) oh, yeah--yeah.. (follows them) \n\nelaine: (to jerry) remember i was telling you about gillian, my friend who writes for the l.l. bean catalogue? i really think you should give her a call. \n\njerry: (doubtful) i don't know, do you have a-- \n\njerry: not bad. wuh--what does she-- \n\nelaine: (dry) i put her stats on the back. \n\njerry: pretty impressive--\"serious boyfriend '92 to '95.\" owns her own car.. \"favorite president james polk!\" (elaine had echoed \"uh-huh. yup.\" during it) \n\ngeorge: hnn! let me see that. \n\njerry: (hands it to him as he asks elaine) so how'd it go with kevin? did you, steel-toe his ass back to kentucky? \n\nelaine: (laughs in appreciation) you are not gonna believe this! i told him that i just wanted to be friends. he's fine with it. he really wants to be friends. \n\njerry: why would anybody want a friend. \n\nelaine: (dread) uh. it's really not that bad, actually. he said he'd even go with me to the museum of miniatures. this is something you would never ever do. \n\njerry: i mean all that stuff is so small.. ((elaine is wryly assessing him)) stupid.. \n\ngeorge: (still looking at that picture) you know if i told my engagement story to that receptionist, but told her this, was my fiance.. \n\njerry: what? \n\ngeorge: don't you see. women like that are like, members of a secret tribe living in a forbidden city. people like me have not been inside in thousands of years.. but with this, it's like i've already been with one of her own! my hands been stamped! i come and go as i please! \n\nelaine: (wry, not impressed) well you cracked it! i warned the queen you were gettin' close an', now it looks like we're gonna have to move the whole damn forbidden city. (chuckles with jerry) \n\ngeorge: (getting up) can i keep this? \n\nelaine: no, i need it. \n\ngeorge: (absently leaving with it) thanks. \n\ngeorge: hi. i'm ah, i'm here to see a mr. art vandelay.. \n\namanda: i'm sorry sir, there is no mr. vandelay here.. \n\ngeorge: (taking out wallet) well, let me. heh. let me just eh.. check an', make sure i have the right man--ha! heh, heh, heh! seems--oh! i, oh! (has conveniently dropped the photo into her view) \n\namanda: oh! she's beautiful! who is she? \n\ngeorge: (humble) well, if you must know, shhhe, was my fiance, susan. may she rest in peace. \n\namanda: oh, sorry.. she was lovely. i'm amanda. \n\ngeorge: (shaking hands) i'm george. \n\nman #3: good work today, k-man! \n\nman #3: heh, heh! \n\nkramer: you want a drink? i'm buyin'. \n\nman #3: in that case, make mine a double! \n\ngillian: jerry? \n\njerry: gillian. hiii.. \n\ngillian: very nice to meet you. \n\njerry: it's nice to meet you! \n\njerry: she had man-hands. \n\nelaine: (pause) man, hands? \n\njerry: the hands of a man. it's like a creature out of greek mythology, i mean, she was like part woman, part horrible beast. \n\nelaine: (weary) (look,) would you, prefer it, if she had, no hands at all? \n\njerry: would she have hooks? \n\nelaine: do uh, do hooks make it more attractive, jerry? \n\njerry: kinda cool lookin'.. \n\nelaine: (getting up to go) uh.. listen, you're picking me up from my (place tomorrow)-- \n\njerry: (leaving too) yeah. yeah. \n\nelaine: okay, i've got five, huge boxes of (buttons). \n\njerry: right. well if you need an extra set of hands, i know who you can call-- \n\nelaine: (weary) jerry! \n\njerry: kramer?! \n\nkramer: hey buddy! hey! \n\njerry: it--eight o'clock in the morning! what the hell is goin' on?! \n\nkramer: breakfast. i gotta be in at brand/leland by nine. \n\njerry: why?? \n\nkramer: because i'm workin' there, that's why. \n\njerry: (disoriented) how long have i been asleep? what--what year is this? \n\nkramer: jerry. i don't know if you've noticed, but lately, i've been drifting, aimlessly? \n\njerry: (snaps fingers) now that you mention it. \n\nkramer: but i finally realized what's missing, in my life. structure. an' at brand/leland, i'm gettin' things done. an' i love the people i'm workin' with. \n\njerry: how much are they payin' you? \n\nkramer: oh, no, no, no-no--i don't want any pay. i'm doin' this just for me. \n\njerry: really. so uh, what do you do down there all day? \n\nkramer: t.c.b. you know, takin' care o' business. aa--i gotta go. \n\njerry: all right. \n\nkramer: (leaving) i'll see you tonight, huh? (turning back, grabs his briefcase) forget my briefcase. \n\njerry: w-w-wha' you got in there? \n\nkramer: (as he leaves with it) crackers. \n\n(music (sheena easton's \"morning train (nine to five)\") accompanies assorted shots of working-man kramer: getting on the subway (everyone else is going the opposite direction). washing his shoes at the water cooler. eating rolls of crackers out of his briefcase. laughing it up after hours with co-workers at a tgif-type restaurant.) \n\njerry: so the picture worked. amazing! \n\ngeorge: hey, she wants me to dress uh \"smart casual.\" what uh, what is that? \n\njerry: i don't know, but you don't have it. \n\ngeorge: right. bye. \n\nelaine: where were you today? \n\njerry: what? \n\nelaine: pick. up. \n\njerry: (whispers) damn. \n\nelaine: so? where were you?! \n\njerry: uh, here i guess, an' uh, uh i went out and picked up a paper. \n\nelaine: (irritated, throwing down her bag) i had to ask kevin, to leave his office an' come an' pick me up! \n\njerry: so? what are friends for? \n\nelaine: yeah! an' he is a friend, jerry. he is reliable. he is considerate. he's like your, exact opposite. \n\njerry: so he's bizarro jerry! \n\nelaine: (pause) bizarro jerry? \n\njerry: yeah. like bizarro superman. superman's exact opposite, who lives in the backwards bizarro world. up is down. down is up. he says \"hello\" when he leaves, \"good bye\" when he arrives. \n\nelaine: (pause) shouldn't he say \"bad bye\"? isn't that the, opposite of \"good bye\"? \n\njerry: no. it's still a goodbye. \n\nelaine: uh. does he live underwater? \n\njerry: no. \n\nelaine: is he black.. \n\njerry: look. just, forget it, (already). all right? \n\nkramer: wow. man. what a day. could i use a drink. (starts getting a drink and ice) \n\njerry: tough day at the office? \n\nkramer: just comin' in, an' that phone just wouldn't stop. \n\njerry: well, we better get goin' if we're gonna go to that uh, seven o'clock cold fusion. \n\nkramer: yeah. well, count me out. i'm swimmin'. old man leland is bustin' my hump over these reports. if i don't get 'em done by nine, i'm toast.. ((takes a swig and reacts)) \n\ngeorge: this is a fantastic place! i always thought it was a meat packing plant! \n\nmodel #1: hey! amanda! \n\namanda: these are my friends. anabelle, justina, and nikki. we used to model together. \n\ngeorge: oh! modelling! what's that like? fun? ha ha. (to self in head) stupid! stupid! stupid! \n\namanda: so nikki, uh, how was paris this time? \n\nmodel #2: (petulant) a bore. \n\ngeorge: you know, i used to love paris. my uh, dead fiance, susan.. (opening wallet) in fact i. think i, i may have a picture of her.. \n\nmodel #3: (awed) wow.. she was beautiful.. do you wanna dance? \n\ngillian: would you like some bread, jerry? \n\njerry: no.. no thanks, i'm, just not hungry. \n\ngillian: well, then at least drink your beer.. (she's opening the bottle--brief closeup on hands) \n\njerry: (to self) oh. twist off.. \n\ngillian: you have a little something on your face. \n\njerry: i can get it. (feeling his face) \n\ngillian: eh, no-no, no-no.. you're missing it, it's higher. (reaches over) \n\ngillian: (friendly) it's an eyelash. make a wish. \n\njerry: i don't want to. \n\ngillian: make a wish. \n\njerry: okay. (closes eyes, blows on her finger, opens eyes, says to self) didn't come true. \n\ngillian: (smiles at him) don't you just love lobster? \n\nkevin: that museum of miniatures was amazing. \n\nelaine: i know, he's so tiny! \n\nkevin: yeah! hey--hey guys! elaine, sit down. these are a couple o' my friends. uh, this is gene. and this guy, we.. just call \"feldman!\" \n\nelaine: (to self in head) bizarro world.. \n\ngeorge: (delighted) jerry? it was incredible! models! as far as the eye could see! \n\njerry: then it does exist. \n\ngeorge: yes. the legends are true. \n\njerry: so when are you goin' out with this girl again? \n\ngeorge: i'm not! i'm inside the walls! \n\njerry: so you're gonna burn that bridge. \n\ngeorge: flame on! \n\ngene: (about the check) i got it. \n\nkevin: (grabs it) no. you got it last time. \n\ngene: (calmly takes it) don't worry about it. \n\nelaine: (to self in head) this is unbelievable.. \n\nfeldman: hey elaine, what do you think of an alarm clock, that automatically tells you the weather when you wake up? \n\nelaine: well, i gotta say that i think that that is a fantastic idea, feldman! \n\nfeldman: nah, it's not--it's just not practical. \n\nkevin: (getting up) well. see ya later, elaine. feldman an' i 'a' gotta get down 'o the library. (the three guys are leaving) \n\nelaine: what are you gonna do down there? \n\nkevin: read! \n\nelaine: (pause, then vaguely waves while watching them leave) hello? \n\njerry: so, uh. gillian's comin' over later. i think i'm gonna end it. \n\nkramer: uh-huh. \n\njerry: those meaty paws, i feel like i'm dating george the animal, (steer). \n\nkramer: yeah.. \n\njerry: maybe i'll chain her to the refrigerator an' sell tickets. \n\nkramer: that's nice.. \n\njerry: kramer, put the paper down! you never listen to me anymore! we hardly even talk! \n\nkramer: well, we're, talkin' now, aren't we?-- \n\njerry: i sit here for twenty lousy minutes in the morning-- \n\nkramer: oh here we go-- \n\njerry: an' then when you come home at night, you're always exhausted--we never do anything anymore! \n\nkramer: what are you starting with me for? you know this is my crazy time o' year?! \n\njerry: (pause) it's your third day.. \n\nkramer: (grabs briefcase to leave) i gotta go to work. we'll talk about this later. (leaves) \n\njerry: well. (calling down the hall) call if you're gonna be late! \n\nelaine: what? what is goin' on with you two? \n\njerry: oh, i don't wanna talk about it.. \n\nelaine: all right, listen. have you seen my addre-- (sees address book on counter) --ah! there it is. okay. i got it. i'll see you later. (leaving) \n\njerry: hey! wait! wait! wait a second! where you goin'? i-i hardly ever see you anymore. \n\nelaine: (stops, pause) well, i. (a little ashamed) i guess i been at reggie's.. \n\njerry: the bizarro coffeeshop? \n\nelaine: kevin and his friends are nice people! they do good things. they read.. \n\njerry: i read. \n\nelaine: books, jerry. \n\njerry: (pause) oh. big deal.. \n\nelaine: well! i can't spend the rest of my life coming into this stinking apartment every ten minutes to pore over the, excruciating minutia, of every, single, daily event.. \n\njerry: (what's goin' on,) like yesterday, i go to the bank to make a deposit, an' the teller gives me this look, like-- \n\nelaine: i'll see you later man. i gotta go. \n\njerry: (frustrated, to self) the whole system is breakin' down! \n\ngeorge: hello? amanda. hi, yes. listen. you know, i'm thinkin', we might just be better of bein' friends. yeah. yeah, you know what, i can't even really talk about it right now. bye-bye. (hangs up) (happy with himself, but then sees the burned up photo) no! no! \n\ngillian: friends. just friends. \n\njerry: yeah. \n\ngillian: yeah. all right. well, do you still want to see a movie later? \n\njerry: i wish i could, but, we're friends.. \n\ngillian: i'm just gonna go, wash my hands. \n\njerry: good idea. (phone's ringing, goes to it) (muttering) there's a beach towel on the rack.. (to phone) yeah. \n\ngeorge: (frantic) jerry! jerry, muh--muh--my hair-dryer ruined the picture! an' i need another one or i can't get back into the forbidden city! \n\njerry: (to drive him crazy) who is this.. \n\ngeorge: jerry! i need you to get another picture of man-hands. i'm beggin' you! \n\njerry: (pause) if i get it for you, will you take me to that club an' show me a good time? \n\ngeorge: yes! yes, all right--anything! \n\njerry: got it. (but now a man-hand grabs his arm) uh! \n\nkramer: jerry. hey jerry? \n\njerry: i'm right here. (note he has an athletic bandage on his right hand) you're late. \n\nkramer: yeah, well, i got held up, you know. what happened to your hand? \n\njerry: like you care. \n\nkramer: the work piled up, i lost track of time-- \n\njerry: (calmly getting up with plate of chicken) oh! sure! sure! you an' your work! elaine's off in the bizarro world, george only calls when he wants something, an' i'm left sitting here like this plate of cold chicken, which, by the way, (drops chicken into sink) was, for two. \n\nkramer: you cooked? \n\njerry: (calm) i ordered in. it's still effort. \n\nkramer: (in pain) ow! jeez! \n\njerry: what's wrong? \n\nkramer: (ow!) it's my stomach. \n\njerry: you're probably gettin' an ulcer. this job is killing you! it's killing us. \n\nkramer: (putting briefcase down) you know what? you're right. these reports, they can wait a couple of hours. whadda say we go out tonight? any place you want. \n\njerry: the coffeeshop? \n\nkramer: you got it, buddy. \n\njerry: (pleased) i'll call george! \n\njerry: hey. isn't that elaine? \n\ngeorge: (quiet, desperate) maybe she can get me another picture of man-hands. (calling) elaine! \n\njerry: elaine! \n\nkramer: elaine! \n\nall three: elaine! elaine! \n\n(elaine finally notices them, but suddenly from the other direction, three other guys are coming: gene, kevin, and feldman.) \n\nkevin: hey! elaine! hi-i! over here! \n\nelaine: jerry.. george, kramer.. this is kevin, gene.. and feldman. \n\njerry: (quietly crept out) this is really weird.. \n\nelaine: (diplomatically to kevin, gene, and feldman) could you guys excuse us, just for a moment. \n\nkevin: sure. (strolls away with his friends) \n\nelaine: (pause) thanks. (to jerry, george, and kramer) what.. what do you guys want.. \n\ngeorge: elaine, i got to have another picture of gillian. \n\njerry: i tried to get him one but man-hands almost ripped my arm out of the socket! \n\nkevin: (here ya are.) \n\nelaine: (pause, turns back to jerry et al.) guys. i gotta go. take it easy. \n\ngeorge: elaine? (she turns, sighing) can i come? \n\nelaine: i'm, i'm sorry.. we've already got a george.. \n\nkramer: what did you want to see me about, mr. leland? \n\nleland: kramer, i've.. been reviewing your work.. quite frankly, it stinks. \n\nkramer: well, i ah.. been havin' trouble at home and uh.. i mean, ah, you know, i'll work harder, nights, weekends, whatever it takes.. \n\nleland: no, no, i don't think that's going to, do it, uh. these reports you handed in. it's almost as if you have no business training at all.. i don't know what this is supposed to be! \n\nkramer: well, i'm uh, just--tryin' to get ahead.. \n\nleland: well, i'm sorry. there's just no way that we could keep you on. \n\nkramer: i don't even really work here! \n\nleland: that's what makes this so difficult. \n\ngeorge: hi. george. \n\nmodel #4: are you sure you're supposed to be here? \n\ngeorge: oh, yeah. yeah. i used to come here all the time with my fiance, back when it was a meat-packing plant. ha. here's her picture. (hands her a magazine page) \n\nmodel #4: what'd you do? cut this out of a magazine or something? \n\ngeorge: huh? \n\nmodel #4: that's me? it's from a clinique ad i did.. \n\ngeorge: ha! heh. \n\nbouncer: let's go. private party. (escorts him out) \n\nkevin: who is it? \n\nelaine: (off-camera) it's lainey! \n\nkevin: (unlocks, opens door) hi elaine! (warmly hugs her) \n\nelaine: hi (?). oh! oh-oh-oh-oh! \n\nkevin: come on in! \n\nelaine: okay. hi gene! (comfortably tosses her bag to the left, it falls on the floor) uh-ha! (smiling, picks up her bag, puts it on a chair that's to the right) \n\nelaine: what's up? \n\nkevin: (friendly) just reading.. \n\n(elaine decides to make herself at home, opens the refrigerator and starts eating olives out of a jar, with her fingers. in the living room area, kevin is looking at her. note: a statue of bizarro superman on a stereo speaker.) \n\nkevin: hey.. what're you doing? \n\nelaine: eatin' olives. \n\nkevin: have you ever heard of asking? (door bell rings) who is it? \n\nfeldman: (off-screen) feldman.. from across the hall. \n\nkevin: (drops his suspicion and smiles, goes to door) hold on. (unlocks and opens door) hey. \n\nfeldman: he-ey, kevin! \n\nkevin: hi. \n\nfeldman: look who i ran into. \n\nvargus: (testy) hello, kevin.. \n\nkevin: (testy) hello, vargus.. \n\nkevin: ya wanna catch a ballgame this weekend? \n\nvargus: great! i'll see ya later! (leaves) \n\nkevin: okay. (to self, smiling) vargus.. (to feldman) so? \n\nfeldman: i got 'em.. \n\nkevin: all right! hey, elaine, feldman was able to get us all tickets to the bolshoi! \n\nelaine: oh! (comes to him) \n\nkevin: (enthused) fourth row, center. \n\nelaine: get out! (pushes him back, but he falls back on the floor!) \n\ngene: (to elaine) what is the matter with you? \n\nelaine: oh, kevin! i'm so sorry. is there anything i can do? \n\ngene: haven't you done enough already? \n\nelaine: (turning to them, awkward) it's locked.. \n\njerry: so this is it, huh? \n\ngeorge: but it--eh.. it was here, i'm tellin' you, an' w--w--it was really here! the, there was, a, bar, and a, an' a dance floor.. \n\njerry: (dry) i guess the dj booth was over there behind the bone saw? (really disappointed) let's get out of here george. \n\ngene: at work today, i discovered there's a payphone in the lobby that has free long distance. \n\nkevin: oh, so what did you do? \n\ngene: i called the phone company an' immediately reported the error. \n\nkevin: nice. (doorbell rings) who is it? \n\nfeldman: (off-screen) feldman.. from across the hall. \n\nkevin: (smiles, relieved) hold on. \n\nfeldman: kevin! brought some groceries. \n\nkevin: again?! feldman, you didn't have to do that! \n\nfeldman: hey, what are friends for? \n\nkevin: you know, i may not say this enough but you two are about the best friends a guy could have. \n\nkevin: (eyes closed in hug) oh. me so happy. me want to cry. \n\nkramer: i wouldn't walk over there. \n\njerry: why not? \n\nkramer: it's the most dangerous part of the sidewalk. cab hops a curb, wap! you've had your last egg sandwich. \n\njerry: what about over there? you know air conditioners fall out all the time. \n\nkramer: i'd much rather get hit by an 80 pound air conditioner than a two ton cab. \n\njerry: no, cab's comin' in right here (hand at waist) set of plastic hips, prosthetic legs, and a monkey to answer the door, i'm back in business. \n\nkramer: much rather take it to the head, like i did in '79. \n\njerry: you were livin' in the village then, right? \n\nkramer: don't really remember. \n\nelaine: (showing fingernails) toxic waste green. \n\njerry: that is disgusting. \n\nelaine: you know, revulsion has now become a valid form of attraction. \n\njerry: well, then you're drivin' me wild. \n\nelaine: i had 'em done for the big peterman bash i'm throwin'. \n\njerry: (george enters) oh, why you havin' a party? \n\nelaine: i drive my people hard, and then i reward them. \n\njerry: like with dogs. \n\nelaine: exactly. \n\ngeorge: party? \n\nelaine: yeah. \n\ngeorge: food? \n\nelaine: uh huh. \n\ngeorge: bar? \n\nelaine: yeah. \n\ngeorge: george? \n\njerry: he's gonna show up anyway. \n\nelaine: george, i just don't want you interfering. \n\ngeorge: how could i possibly interfere? \n\njerry: isn't that what jack ruby said? \n\ngeorge: (eating) oh yeah. these are fantastic, fantastic. (to server) you know, i'd love to get a jump on the next batch, where do you come out? (server leaves) (to anna) she's been ignoring this section all night. quesadilla? \n\nanna: no thanks. \n\ngeorge: hi ah, my name is george. \n\nanna: anna. i don't recall seeing you around the office. do you work in the mail room? \n\ngeorge: no, i'm a friend of elaine benes. \n\nanna: oh. excuse me. (she leaves) \n\ngeorge: so... \n\nman: how 'bout leading us in a toast? \n\nelaine: oh sure. hey guys, i wanna make a toast. um... here's to us who wish us well, and those who don't can go to hell... all right, who's dancin'? c'mon, who's dancin'? you want me, you want me to get it started? i'll get it started. whew! (she dances) \n\ngeorge: sweet fancy moses! \n\nkramer: you get the tickets? \n\njerry: who wants two? special sneak preview of death blow. \n\nkramer: death blow when someone tries to blow you up, not because of who you are, but for different reasons altogether. (jerry buzzes up george) jerry, do you think you can get an extra ticket for my friend brody? \n\njerry: kramer, do you know what i had to go through to get these? \n\nkramer: yeah, i know, but he's a big fan of the genre. you know i'd consider it a personal favor to me. \n\njerry: yeah i guess i do owe you. \n\nkramer: uh, listen, do you want me to stay here until george gets up? \n\njerry: no, i'm okay. \n\nkramer: there's no problem, really. \n\njerry: i'm fine. (george enters, kramer exits) how was the party? \n\ngeorge: food was good. \n\njerry: yeah, so i didn't miss anything? \n\ngeorge: well, actually you did miss one nugget of entertainment. (pause) have you ever seen elaine dance? \n\njerry: elaine danced? \n\ngeorge: it was more like a full bodied dry heave set to music. \n\njerry: did she do the little kicks and the thumbs? \n\ngeorge: what, you mean you know about this? \n\njerry: for some time... (video of elaine dancing on the street with jerry and the street musicians watching her awful dance) it was about five years ago. i never knew what to say to her about it. it was one of those problems i hoped would just go away. \n\ngeorge: well, sometimes you can't help these people 'til they hit rock bottom. \n\njerry: and by then you've lost interest. \n\ngeorge: hey, you gotta take a ride with me later. i borrowed my father's car. '68 gto. \n\njerry: what made him get that thing? \n\ngeorge: during that period when my folks were separated he went a little crazy. \n\njerry: not a very long trip. (enter kramer) \n\nkramer: brody's in. \n\njerry: i don't even have the extra ticket yet. \n\nkramer: well, you better get on the horn. \n\nelaine: i'm tellin' you jerry i'm gettin' a vibe. if i didn't know better, i'd say the staff completely lost respect for me. (staff mocks her dancing in the background) \n\njerry: how could that be? \n\nelaine: jerry, it's like the feeling is palpable. you think it could have something to do with the party? \n\njerry: no, george was there, he said he had a great time. \n\nelaine: ah, it's george. i bet you this is somehow george related. \n\njerry: oh, what are you talkin' about? \n\nelaine: he's like a virus. he attaches himself to a healthy host company, and the next thing you know, the entire staff's infected. \n\njerry: now you're talkin' crazy! \n\nelaine: all right, jerry, if that's not what it is, you tell me. what is it? \n\njerry: (makes sound) oh there's my call waiting, i gotta get goin'. \n\nanna: you have a minute to approve some copy? \n\nelaine: oh yeah, sure, sure. so ah, did ya have a good time at the party last night? \n\nanna: it was a real... kick. \n\nelaine: hey, did you happen to speak to my friend george? \n\nanna: as a matter of fact i did. \n\nelaine: ah hah. well, listen. you would be wise to keep your distance from him. \n\nanna: why? he seems harmless. \n\nelaine: oh he's not. he's very harmful. \n\nanna: really? \n\nelaine: oh trust me. he's a bad seed. he's a horrible seed. he's one of the worst seeds i've ever seen. \n\nanna: and you two are friends? \n\nelaine: yeah, we're good friends. \n\ngeorge: so this anna called me from out of the blue. \n\njerry: really? i thought you were rebuffed. \n\ngeorge: with extreme prejudice. \n\njerry: maybe elaine put in a good word for you. \n\ngeorge: no, no. that's just the thing. anna told me that elaine said i was one of the worst seeds she'd ever seen. \n\njerry: interesting. she doesn't care for you, then a stern warning, suddenly a phone call. seems elaine's made you the bad boy. and anna digs the bad boy. \n\ngeorge: i'm the bad boy. i've never been the bad boy. \n\njerry: you've been the bad employee, the bad son, the bad friend... \n\ngeorge: yes ... yes, yes \n\njerry: the bad fianc&mac226;, the bad dinner guest, the bad credit risk... \n\ngeorge: okay, the point is made. \n\njerry: the bad date, the bad sport, the bad citizen... (looks at table as george exits) the bad tipper! \n\njerry: half of show business is here. \n\nkramer: there's brody. brody! over here. \n\nbrody: hey kramer. and you must be jerry. thanks for the ticket. \n\njerry: that's quite a feed bag you're workin' on there. \n\nbrody: it's for all of us. is there a problem? \n\nkramer: brody, c'mon. he's just kidding. he's a joke maker. tell him, jerry. \n\njerry: i'm a joke maker. \n\nkramer: all right, here we go, death blow. (brody takes out video camera) \n\njerry: (to kramer) hey, hey, what the hell is he doing? \n\nkramer: relax, he does that all the time. \n\njerry: does what? \n\nkramer: he's making a copy of the movie for sale on the street, hum? \n\njerry: may i see you outside for a moment please? \n\nkramer: but i want to-- \n\njerry: outside! \n\nelaine: hey, have you seen anna? \n\nworker: uh, she just went to meet your friend george. \n\nelaine: to meet george? i knew it. where did they go? \n\nworker: the park, why? \n\nelaine: don't you see? george is in the bloodstream! you stay away from him, too! \n\njerry: what do you mean he's bootlegging the movie? \n\nkramer: well, it's a perfectly legitimate business. \n\njerry: it's not legitimate. \n\nkramer: it's a business. \n\njerry: where did you meet this guy? \n\nkramer: he's a friend of a friend. you know corky ramarez up on 94th street? one day he and i are playing pachinco-- \n\njerry: kramer. (boom sound) \n\nkramer: man, we're missin' the death blow! \n\njerry: i don't believe this. (they run into theater) \n\nanna: you know i'm not supposed to be talking to you. \n\ngeorge: no one's putting a gun to your head. do i, uh, scare you? \n\nanna: no... a little. nice car. \n\ngeorge: yeah, she's a sweet ride. \n\nanna: is that your orthopedic back pillow? \n\ngeorge: maybe. \n\nanna: well is it or isn't it? \n\ngeorge: guess not. \n\nelaine: (to george) stay away from her. \n\ngeorge: i didn't do nothin'. \n\nelaine: (to anna) get in the car. \n\nanna: but... \n\nelaine: you heard me young lady, get in the car. (to george) and you, you should know better. i don't want you infecting my staff. \n\ngeorge: lighten up. \n\nkramer: go get 'em, death blow! (to brody) you okay? \n\n(movie voice: so death blow, we meet again ...) \n\nbrody: uh, i got a cramp. \n\nkramer: well, it's no wonder. you ate that entire bag of candy. \n\nbrody: uh, there it goes again. kramer, you gotta drive me home. \n\njerry: hey, what is going on over there? \n\nbrody: jerry, finish shooting the movie for me. \n\njerry: are you nuts? there's no way i'm holding that thing. \n\nkramer: jerry, if the man is in pain... \n\njerry: yeah well, maybe if he didn't lick his fingers before he reached in the bag we would've eaten some. serves him right. \n\nbrody: (pulls out a gun) what are you some kind of tough guy? \n\nkramer: okay. let's everybody just relax. jerry, take the camera. \n\njerry: all right, i'm, i,m takin' the camera. \n\nkramer: (to brody) c'mon, let's go. \n\njerry: oh man... \n\nkramer: hey man, so how was the rest of death blow? \n\njerry: how was the rest of death blow? \n\nkramer: yeah, who got the final death blow, 'cause i thought that hawaiian guy, he had it comin' to him! \n\njerry: kramer, you make me get a ticket for this friend of yours and then the guy forces me to bootleg the movie at gun point! \n\nkramer: he's quite a character, isn't he? \n\njerry: you know, he came by here at 3 o'clock in the morning to pick up the tape. i was scared out of my mind! \n\nkramer: i got it. yep. \n\nbrody: brody. \n\nkramer: come on up. it's brody. \n\njerry: what are you, crazy? i don't want to see this guy again. \n\nkramer: jerry, you did him a favor. he probably wants to come up and thank you. \n\njerry: what if i didn't do it right? \n\nkramer: it's your first time. he'll understand. \n\njerry: people with guns don't understand. that's why they get guns. too many misunderstandings. \n\nkramer: hey, brody! \n\njerry: hi. \n\nbrody: jerry, i have to talk to you about the tape. \n\njerry: yeah. \n\nbrody: i've never seen such beautiful work. \n\njerry: what? \n\nbrody: (con,t) you're a genius. the zoom-ins, the framing. i was enchanted. \n\njerry: well, i did the best i could. \n\nbrody: i got another project for you. it's a movie called cry cry again. i was gonna give it to one of my other guys, but it's an arty movie and quite frankly, they don't have the sensibility. \n\nbrody: may i use your phone? \n\nkramer: uh yeah. it's under the couch. \n\nkramer: look at you! you've got another gig! uhh. \n\njerry: i don't want another gig! i'm not doin' this. \n\nkramer: but you have a gift. jerry, this is not your little comedy act. we're talkin' feature films. \n\njerry: we're talkin' federal crime here. \n\nbrody: (to jerry) i'll expect that tape by three o'clock tomorrow. (to kramer) may i borrow this? (holding baseball bat) \n\nkramer: sure, do you need a glove? \n\nbrody: nah. \n\nworker: i pressed through the rushes and there, the native dancers whirled before me limbs flailing, arms akimbo, feet kicking up dust... (all workers laugh) \n\nelaine: what? what is so funny? \n\nanna: sorry, i got hung up. \n\nelaine: at yankee stadium? \n\nanna: this? it's mine. \n\nelaine: oh really? 'cause it looks a little big for you. it looks like something a short, stocky, slow-witted, bald man might wear. \n\nanna: he's not stocky. \n\nelaine: who did that? who did that?!? \n\nkramer: (laughing) the french guy fell off his bike. oh man, that's precious. (eats popcorn) \n\njerry: no, no, no, no, no, no, no! what were you thinking when you shot this? \n\nkramer: that's fine. \n\njerry: do you even know what this scene is about? \n\nkramer: it's about a guy buying a loaf of bread. \n\njerry: no, bread is his soul. he's trying to buy back a loaf of his soul. \n\nkramer: wha? where? \n\njerry: kramer there is no way you're giving this tape to brody and telling him i shot it. \n\nkramer: nah, nah, he's not going to know the difference. \n\njerry: i don't care about brody. i was up on 96th street today, there was a kid couldn't have been more than ten years old. he was asking a street vendor if he had any other bootlegs as good as death blow. that's who i care about. the little kid who needs bootlegs, because his parent or guardian won't let him see the excessive violence and strong sexual content you and i take for granted. \n\nkramer: so you'll do the movie? (jerry watches the movie kramer shot - we hear kramer, on the tape say 'ah man, i sat in gum') \n\njerry: i have to. but i'm gonna need to storyboard this whole thing. where are my magic markers? \n\nkramer: right here. (elaine enters) \n\nelaine: well, i have lost complete control of my staff. why did i let george go to that party? i mean, we were having so much fun. we were wining, we were dining, we were dancing. (she starts dancing, kramer flips out) what? \n\nkramer: (he shows her) this umpf thing. \n\nelaine: it's dancing. \n\nkramer: no, no. that ain't dancing, sally. \n\nelaine: i dance fine. \n\nkramer: you stink. (he exits) \n\nelaine: he doesn't know what he's talkin' about. (jerry fake laughs) jer? jerry, i'm a good dancer, right? \n\njerry: i forgot to make my bed. (he tries to get away) \n\nelaine: jerry, do i stink? \n\njerry: all right, you're beyond stink. \n\nelaine: but i really enjoy dancing. \n\njerry: and that's not helpin' either. that's why you're havin' trouble with your staff, not because of george. \n\nelaine: it's that bad? \n\njerry: have you ever seen yourself? (she starts dancing) ah, ah, please, please. not in my home. i gotta go throw this stuff in the laundry. i'll be right back. \n\nvoice: i have george costanza still holding. \n\nelaine: george, hi. i have anna here. there's something i wanna say to both of you. \n\ngeorge: yo, anna. \n\nanna: hi, george. what're you up to? \n\ngeorge: (ironing) you don't wanna know. \n\nelaine: uh, well, listen. i feel really horrible about trying to keep you two apart and i just wanted to apologize. \n\ngeorge: what, wha, what're you talkin' about? \n\nelaine: well, george, i just want you to hear me say to anna that you're a good and decent person. \n\ngeorge: pick up the phone, elaine. pick it up! \n\nelaine: i never should have given anna the impression-- \n\ngeorge: pick it up, pick it up! \n\nelaine: --that you're a bad seed, i mean, you're a fine seed. \n\ngeorge: elaine, get off the speaker! (elaine picks up phone) \n\nelaine: what? \n\ngeorge: you are ruinin' everything. \n\nelaine: i'm trying to help. why are you being so difficult? \n\ngeorge: yeah, yeah, yeah, yeah. that's it. more of that, difficult. i'm a difficult seed. \n\nelaine: george, i don't have time for this. uh, anna, do you wanna talk to george? \n\nanna: um, no, i don't think so. \n\nelaine: no, she doesn't want to. okay, bye, george. we'll see ya. \n\ngeorge: i'm a bad man! \n\nbrody: so where's the tape? \n\njerry: no, i didn't shoot this one. i'm just scouting the location. \n\nbrody: i need the tape. \n\njerry: you'll get your tape. but here's what i'm gonna need. i'm gonna need three cameras, two on the floor, one in the balcony. and i want headsets for the guys runnin' 'em. i wanna be able to talk to 'em. \n\nbrody: are you out of your mind? \n\njerry: kramer... \n\nkramer: i know, jerry. it's okay. (jerry steps aside) yeah, look, brody. uh, jerry wants to do the bootleg. he's dyin' to do it. but if you don't make him happy, the work suffers. and then, nobody's happy. \n\nbrody: just shoot the damn thing so i can get it out on the street! \n\njerry: all right. that's it, i can't work like this. \n\nkramer: jerry... \n\njerry: i'm off the project. (he exits) \n\nkramer: jerry! \n\nbrody: i want the tape. \n\nkramer: yeah. \n\ngeorge: well, i'm the good boy again. can you believe that? \n\njerry: they think they can get anyone to shoot these bootlegs. \n\ngeorge: anna actually has respect for me now. (laughs/snorts) it's all over. \n\njerry: eh, the whole business has changed. it's all about money now. the sad thing is it's the kids that suffer. (kramer enters) \n\nkramer: listen, man. you gotta shoot this movie for me. brody, he's a reasonable man, but he's insane! \n\njerry: kramer, i'm not doin' this anymore. i don't know what i was thinking. it's illegal, it's dangerous... \n\ngeorge: did you say dangerous? \n\ngeorge: i'm a bootlegger. \n\nanna: you're a what? \n\ngeorge: i'm bootleggin' a movie, baby! \n\nanna: isn't that illegal? \n\ngeorge: i can do hard time for this one. and community service! \n\nanna: is this your fibercon? \n\ngeorge: (takes it and throws it out window) get outta my way! \n\nkramer: jerry, george got arrested. \n\njerry: what? \n\nkramer: yeah. he went down at the beackman, he tried to lam, but they cheesed him. \n\njerry: oh now i see. (buzzer) yeah. \n\nbrody: brody, i'm comin' up. \n\njerry: what're we gonna do? \n\nkramer: well, i ah, gotta give him something. come on, where's that tape i shot? \n\njerry: i think that's it. (they play it and see elaine dancing) sweet fancy moses! \n\nkramer: jerry, she taped over the whole ending! (brody enters) \n\nbrody: where's the tape? \n\njerry: uh, well. it, uh... \n\nbrody: is that it? \n\nkramer: uh, yeah, yeah. here it is, brody. one copy of cry cry again. \n\nbrody: how'd it turn out? \n\nkramer + jerry: uh... great. \n\nkramer: although the whole story kinda comes apart at the end there. \n\njerry: yeah, out of nowhere there's this lone dancer who appears to be injured. \n\nkramer: yeah, it's a disturbing image. \n\njerry: yeah, so you cry... and when you see the dancing, you cry again. \n\nanna: (george is crying) it's all right, george. you'll just pay a fine and that'll be it. \n\ngeorge: why did the policeman have to yell at me like that? (elaine enters) \n\nelaine: anna... \n\nanna: oh, elaine, thanks for picking me up. i can explain everything. \n\nelaine: all right. well, we'll talk about it tomorrow at the office. (mr. costanza enters) \n\nfrank: okay, where's my boy? \n\ngeorge: oh my god. \n\nfrank: i'm sitting at home, reading a periodical, and this is the call i get? my son is a bootlegger? (he hits george in the head) \n\ngeorge: ow! dad... \n\nfrank: who put you up to this, was it her? \n\nelaine: all right. wait a minute. i think you've got it backwards. \n\nfrank: my george isn't clever enough to hatch a scheme like this. \n\nelaine: you got that right. \n\nfrank: what the hell does that mean? \n\nelaine: that means whatever the hell you want it to mean. \n\nfrank: you sayin' you want a piece of me? \n\nelaine: i could drop you like a bag of dirt. \n\nfrank: you wanna piece of me? you got it! (they begin to fight) \n\njerry: but he's an old man, elaine. \n\nelaine: well, he wrote the check, and i cashed it. \n\njerry: (seeing a street vendor) hey, it's the bootlegged death blow that i shot. \n\nelaine: oh, cry cry again, i wanna see that. \n\njerry: no you don't. \n\nman: you shot death blow? \n\njerry: yeah. \n\nman: that was brilliant. \n\njerry: thank you. (they continue walking) \n\nelaine: you were big. \n\njerry: i'm still big. it's the bootlegs that got small. so how are things at the office? back to normal? \n\nelaine: yeah, pretty much. although i still get the vibe every once in a while. \n\njerry: i wouldn't worry about it. (people on sidewalk behind them are doing her dance as they go) \n\nkramer: well, i really miss the bermuda triangle. \n\nnewman: i guess there's not much action down there these days. \n\nkramer: oh, there's action. there's plenty of action. that damned alien autopsy is stealing all the headlines. \n\nnewman: yeah, tell me about it. \n\nkramer: see, what they gotta do is loose a plane or a greenpeace boat in there. see, that would get the triangle going again. \n\nnewman: what keeps the water in there? i mean, why doesn't it disappear? \n\nkramer: what would be the point in taking the water? \n\nnewman: it's gorgeous water. (pause) do we own bermuda? \n\nkramer: no. it belongs to the british. \n\nnewman: lucky krauts. \n\nkramer: so, what do you think about that alien autopsy? \n\nnewman: oh, that's real. \n\nkramer: i think so too. \n\nattendant: the doctor will be with you in a moment. \n\nelaine: difficult? \n\ndoctor: elaine. you shouldn't be reading that. so tell me about this rash of yours. \n\nelaine: well it's, it's..... you know i noticed that somebody wrote in my chart that i was difficult in january of 92 and i have to tell you that i remember that appointment exactly. you see this nurse asked me to put a gown on but it was a mole on my shoulder and i specifically wore a tank top so i wouldn't have to put a gown on. you know there made of paper. \n\ndoctor: well that was a long time ago. how about if i just erase it. now about that rash...... \n\nelaine: but it was in pen. you fake erase. \n\ndoctor: all right miss benes. this doesn't look to serious. you'll be fine. \n\nelaine: what are you writing? doctor. \n\nsheila: here you go. \n\ngeorge: thanks. \n\nsheila: i hope you got that mustard stain out of your shirt. \n\ngeorge: ohhhhhh \n\njerry: no. all you got to do is jiggle it with this screwdriver. \n\ngeorge: smile \n\njerry: what are you doing? \n\ngeorge: i meet this women, sheila. she works down at the one hour photo pace. she's got this incredible smile. like she's got extra teeth or something \n\njerry: extra teeth. i love that look. \n\ngeorge: hey check this out. i go to pick up my pictures and she says \" i hope you got that mustard stain out of your shirt.\" \n\njerry: what mustard stain? \n\ngeorge: don't you see. she's looking at my pictures. \n\njerry: why did you take a picture of a mustard stain? \n\ngeorge: that's got nothing to do with it. \n\njerry: i see. she's looking. \n\ngeorge: yesssss. \n\nkramer: hey, you got to get this thing fixed. \n\njerry: they've tried to fix it. but it keeps coming back the same. \n\nkramer: would you like a refund? \n\njerry: well i can't the warranty expired two years ago. \n\nkramer: would you be interested? \n\njerry: well how are you going..... \n\nkramer: would you? \n\njerry: i guess i would. \n\nkramer: yeah, yeah. \n\nelaine: you are not going to believe what happened to me at the doctors office today. \n\njerry: not the gown again. \n\nelaine: no, no. i was looking at my chart and it said i was difficult. why would they write that? \n\njerry: they have gotten to know you. \n\nelaine: then the doctor writes more stuff down and doesn't even look at my rash. \n\ngeorge: why don't you find a doctor that doesn't know your difficult. \n\nelaine: oh come on. i'm not difficult. i'm easy. \n\njerry: why because you dress casual and sleep with a lot of guys. \n\nelaine: listen to me you little shi........ \n\ngeorge: smile. \n\ndoctor: well elaine you really didn't have to put on the gown. \n\nelaine: oh it's my pleasure. i love these. in fact i got one at home. it's perfect when you just want to throw something on. \n\ndoctor: all rightly. let me just review your history before we begin. \n\nelaine: where did you get my chart? \n\ndoctor: from your last doctor. it's a standard procedure. \n\nelaine: you know i can tell you my whole history. let's just....... \n\ndoctor: okay. let's take a look. well that doesn't look to serious. you'll be fine. \n\nelaine: please, please. it's really, really itchy. \n\npostal worker danny: seinfeld? \n\njerry: yeah. \n\npostal worker danny: i got a package for you. sign here. \n\njerry: who's it from? \n\npostal worker danny: no return address. \n\njerry: what if i don't want it? \n\npostal worker: are you refusing delivery? \n\njerry: maybe i am. \n\npostal worker danny: why would you do that? \n\njerry: i've never done it before. \n\npostal worker danny: why start now? \n\njerry: why not? \n\npostal worker danny: all right. \n\ngeorge: why did you refuse the package. everybody loves a package. \n\njerry: i don't know it was weird. crazy printing. i don't know who it was from. \n\ngeorge: what do you think it's a bomb? \n\njerry: it's not totally impossible. \n\ngeorge: oh the ego on you. \n\njerry: why can't i be bombable? \n\ngeorge: who's going to bomb you. an airline for all the stupid little peanut jokes. \n\njerry: i suppose you think your bombable. \n\ngeorge: hey. there is a couple of people that wouldn't mind having me out of the way. \n\njerry: there's more than a couple. \n\ngeorge: hey. check these out. i just picked them up from sheila. she must have loved these. \n\njerry: you don't have a mercedes. \n\ngeorge: i know. i just sort of leaned on it so it would look like it was mine. \n\njerry: the driver seems a little put out. \n\ngeorge: no. he was fine with it. check that out. \n\njerry: is that burt reynolds? \n\ngeorge: wax museum. \n\njerry: oh. \n\ngeorge: oh. what is this? \n\njerry: that's a lot of skin. \n\ngeorge: this must be sheila from the photo place. \n\njerry: you can barely see her face. \n\ngeorge: she must have slipped it in here. \n\nkramer: i i i \n\ngeorge: photo store sheila. \n\nkramer: well hello photo store sheila. \n\ngeorge: all right. i will see you boys later. \n\njerry: where are you going? \n\ngeorge: to ask her out. \n\nkramer: no, no. your not playing the game. \n\ngeorge: what game? \n\nkramer: she goes to these lengths to entice you and your only response is \" gee i really like your picture. would you like to go out on a date with me please. \" \n\ngeorge: no good? \n\nkramer: george. it's the timeless art of seduction. you got to join in the dance. she sends you an enticing photo, you send her one right back. \n\ngeorge: oh, i don't know. \n\nkramer: well as you know i've always been something of a photog. \n\njerry: oh yeah i like this idea. \n\nuncle leo: hey danny. hello. how are you? \n\npostal worker danny: hey leo. leo what's up with your nephew. he wouldn't except his package. \n\nuncle leo: oh he wants it. he's just trying to be funny. yeah i'll sign it . \n\nelaine: and then he starts writing on my chart. \n\ngeorge: well why don't you get a hold of it and change what you don't like. \n\nelaine: you can't change your chart. it's your chart. \n\ngeorge: i am in and out of my personnel file at work all the time. \n\nelaine: you are!?! \n\ngeorge: hey. i've kept the same job for more than two years. it's not luck. elaine, have you ever sent a racy photograph of yourself to anyone? \n\nelaine: yeah. i sent one to everyone i know. remember my christmas card. \n\ngeorge: oh yeah the nipple. but besides that. how did you feel about kramer's work? \n\nelaine: actually i thought he was very professional. \n\ngeorge: so it was a good experience. \n\nelaine: oh yeah. in fact i like the picture so much i cropped out the nipple and am using as my health club id. \n\ngeorge: nice. \n\nelaine: yeah it is nice actually. \n\nelaine: i need to see dr. burke right away. this rash is spreading. \n\nattendant: he can't see you miss benes, he's busy. \n\nelaine: oh come on. have some compassion. okay well i hope it's contagious \n\nelaine: come on. move. (elevator doors reopen; dr. burke and two orderlies are revealed) oh hi dr. burke. i didn't know if uh.... \n\ndr. burke: the chart miss benes. \n\nelaine: oh please no more. \n\njerry: hey \n\ngeorge: where's kramer? \n\njerry: he went to get some steak sauce. why? \n\ngeorge: personal matter. \n\njerry: hello \n\nuncle leo: jerry! it's your uncle leo! hello! \n\njerry: hello leo. you don't have to yell. \n\nuncle leo: i got your package. \n\njerry: how did you get my package? \n\nuncle leo: what should i do with it? \n\njerry: i don't know what you should do with it. \n\ngeorge: tell him to open it. \n\njerry: i am not going to treat my uncle like a bomb defusing robot. \n\nuncle leo: jerry, your cousin jeffrey is in the parks production of \"the mikado\". i want you to go see it with me. \n\njerry: open the package leo. \n\nuncle leo: okay. opening. \n\njerry: opening. \n\n(through the phone: boom!!!) \n\nelaine: so it wasn't a bomb. \n\njerry: no, no bomb. \n\nelaine: well then what? \n\njerry: oh stupid leo was using one of those oven cleaners. he left the canister in there and the pilot light was on. the whole thing blew up. \n\nelaine: but he's okay? \n\njerry: yeah but the explosion singed off his eyebrows, mustache everything. he's all smooth now. look's like a seal. \n\nelaine: yeah i am still holding. \n\njerry: is this my stereo? \n\nkramer: hey you got it. \n\njerry: what happened to my stereo? it's all smashed up. \n\nkramer: that's right. now it looks like it was broken during shipping and i insured it for $400. \n\njerry: but you were supposed to get me a refund. \n\nkramer: you can't get a refund. your warranty expired two years ago. \n\njerry: so were going to make the post office pay for my new stereo? \n\nkramer: it's just a write off for them. \n\njerry: how is it a write off? \n\nkramer: they just write it off. \n\njerry: write it off what? \n\nkramer: jerry all these big companies they write off everything \n\njerry: you don't even know what a write off is. \n\nkramer: do you? \n\njerry: no. i don't. \n\nkramer: but they do and they are the ones writing it off. \n\njerry: i wish i just had the last twenty seconds of my life back. \n\nelaine: what?!? he doesn't have one appointment this whole month!?! oh come on. i am dying here man. hello, hello. \n\njerry: still no luck \n\nelaine: jerry i am at doctor zimmerman. i am at the end of the alphabet. \n\njerry: there's no zorn or zoutraph. \n\nelaine: there on vacation. every doctor in this city seems to know who i am . \n\njerry: hey what about dr. resnick my uncle leo is going to see him tomorrow . \n\nelaine: dr. resnick. he's not listed. \n\njerry: he's not that good. \n\ngeorge: elaine said your pretty good at this stuff. \n\nkramer: oh yeah. elaine was a fun project. i enjoyed working with her. \n\ngeorge: you don't have your own camera. \n\nkramer: uh no. look at this. okay yeah this looks good and i like what your wearing. \n\ngeorge: i feel fat. \n\nkramer: no, no. you're stoked. the camera loves stokedness. look were not going to do anything that makes you feel uncomfortable. the key word is tasteful. now i want you to relax and have fun because your a fun guy. all right let's do it. okay come on. feel the beat. feel the beat. you know you got some real strong pecks but it's hard to tell under that t-shirt. \n\ngeorge: well do you want me to take it off? \n\nkramer: i don't know it's up to you. \n\ngeorge: do you think it would be better if i did? \n\nkramer: it might be. i mean whatever you want. \n\ngeorge: all right!! \n\nkramer: that's it george. come on, come on. give it to me. come on,work it. work it. yeah be a man, be a man. \n\nkramer: you are a lover boy!! \n\njerry: oh yeah. this can't miss. \n\nelaine: hello. \n\nguy: is this elaine marie benes? \n\nelaine: yes. who it this? \n\nguy: we are with the american medical association. can you confirm the correct spelling of your last name? is it b-e-n-e-s. \n\nelaine: yeah. what is this all about \n\nguy: good bye. \n\nelaine: hello, hello. \n\nguy: what? \n\nelaine: oh uh uh... \n\nguy: get off the line. were trying to make another call. \n\nuncle leo: elaine. hello. what are you doing here? \n\nelaine: leo. has the doctor been in yet? \n\nuncle leo: no. i am going to ask him about my eyebrows. \n\nelaine: okay listen leo. your hairless, your scared. when the doctor comes in let me do the talking. okay. \n\ndr. resnick: leo. i heard you had a little mishap. \n\nuncle leo: it was a fireball. \n\nelaine: i should have never left him alone. \n\ndr. resnick: and who are you? \n\nelaine: i am his nurse... poloma. \n\nuncle leo: you're not my nurse. \n\nelaine: he has good days and bad. \n\ndr. resnick: what seems to be the problem? \n\nuncle leo: are my eyebrows going to grow back? \n\nelaine: and he's has a bit of a rash. \n\ndr. resnick: really. \n\nelaine: yeah. \n\ndr. resnick: well there's been a bit of that going around lately. will you excuse me poloma. i just need to get some ointment. \n\nelaine: i don't like this, it is to easy. \n\nuncle leo: elaine... \n\nelaine: shut up! i think he's on to us. \n\nuncle leo: elaine what about my eyebrows? \n\nelaine: shhhhhh. here. \n\njerry: i don't like this kramer. will it be much longer? \n\nattendant: i am sorry. it looks like the claim has been red flagged. your under investigation. \n\njerry: investigation? \n\nnewman: hello jerry. \n\njerry: hello newman. \n\nnewman: kramer you might as well run along. jerry might be a while. suspicion of mail fraud. \n\nkramer: mail fraud. your in a lot of trouble buddy. \n\ndr. resnick: i got your ointment. where's your nurse? \n\nuncle leo: she left. \n\ndr. resnick: no need to get angry. calm down. \n\nuncle leo: i am calm. \n\ndr. resnick: leo i don't care for your demeanor. \n\nuncle leo: demeanor? \n\ndr. resnick: now your just being difficult. \n\nuncle leo: what are you writing? \n\ngeorge: so i really liked the pictures i picked up here yesterday. \n\nsheila: i am glad george. \n\ngeorge: and here's a roll that i think you may enjoy. \n\nsheila: great. \n\ngeorge: shall we say an hour. \n\nsheila: hey ron i got to go to lunch. can you do a roll? \n\nron: no problem. \n\nsheila: by the way. you know that model that is always in here. she's missing one of her lingerie shots. have you seen it? \n\nron: no. \n\nnewman: all right. then let me ask you this. didn't you find it interesting that your friend had the foresight to purchase postal insurance for your stereo. huh. i mean parcels are rarely damaged during shipping. \n\njerry: define rarely. \n\nnewman: frequently. \n\njerry: are we about throw here newman? \n\nnewman: it's pretty hot under these lights huh seinfeld. pretty....... hot . \n\njerry: actually i am quite comfortable. \n\nnewman: can i have a sip? \n\njerry: no. \n\nnewman: not going to play ball. huh all right. admit it that stereo was all ready busted. \n\njerry: you can't prove anything. \n\nnewman: is this or is this not your signature? \n\njerry: no in a matter of fact it isn't. \n\nnewman: uncle leo? this case is closed pending further evidence. jerry. \n\nelaine: get in there. get chart. get out. you got it. \n\nkramer: yeah let me borrow your scarf. \n\nelaine: this. \n\nkramer: yeah. all right one chart coming up. \n\nelaine: okay. \n\nkramer: bennette right? \n\nelaine: benes. my last name is benes you jackass. yeah. \n\nnewman: jerry, jerry, jerry, jerry, jerry, jerry, jerry, jerry, jerry. \n\nkramer: i like what you've done with that. \n\nattendant: may i help you? \n\nkramer: yes, yes. i am dr. vanostran from the clinic. i need elaine benes chart. she's a patient of mine and she's not going to make it. it's uh very bad very messy. \n\nattendant: i see and what clinic is that again? \n\nkramer: that's correct. \n\nattendant: excuse me. \n\nkramer: from the hoffer-mandale clinic in belgium. \n\nattendant: really? \n\nkramer: the netherlands? \n\nelaine: where's my chart? did you get it? \n\nkramer: no. \n\nelaine: what? what happened? \n\nkramer: i don't know. but now they got a chart on me. \n\nsheila: i don't know where they could be. \n\ngeorge: can't find them. that's marvelous. the dance continues. \n\nsheila: well if i find them i'll call you. \n\ngeorge: and maybe we could go out and do something. \n\nsheila: sure. \n\nron: hello. \n\ngeorge: hi. \n\nsheila: so the little guy finally asked me out. \n\nron: really? \n\nsheila: hey i can't find his photo's anywhere. \n\nron: oh you know what happened. some guy from the post office confiscated them. he left his card. \n\nsheila: newman? \n\ngeorge: i don't know what newman wanted to see me for. \n\nnewman: gentlemen, gentlemen. i am so happy to see you both. there is just some inconsistencies i'd like to straighten out. \n\njerry: i'm clean and you know it. \n\nnewman: clean? hardly. this looks like a man that isn't happy with his stereo performance. \n\njerry: where did you get that? \n\ngeorge: i think that's one of mine. \n\nnewman: it looks like your breaking into it like an otter breaking into a clad. \n\njerry: i don't know about that but i'm sure there is a explanation. \n\nnewman: yes. it's called mail fraud. oohhhh. how i've longed for this moment seinfeld. the day when i would have the proof i needed to hall you out of your cushy lair and expose to the light of justice as the monster that you are. a monster so vile..... \n\nguy: newman!! \n\nnewman: there will be a small fine. \n\njerry: okay. \n\ngeorge: can we go now? \n\nnewman: not so fast pretty boy. there is more to this sorted little affair. \n\njerry: oh my god!! \n\nnewman: this photo clearly indicates your involvement in some ill-conceived mail order pornography ring.as does this one found in the same disturbing packet. \n\ngeorge: oh my god!!! \n\nnewman: we have some questions we'd like you to answer. \n\njerry: i have some questions of my own. \n\nsheila: hi. one of your mailmen....... oh my god, george!?! \n\ngeorge: listen sheila it's not what you think. i put my trust into the wrong person. he said the key word was tasteful. \n\njerry: the timeless art of seduction. \n\ngeorge: sheila!!! \n\nwoman: well i started out working in mortgage bonds, but i just found that so limiting. \n\njerry: my friend kramer and i were discussing that same thing the other day. he was with brant-leland for a while. \n\nwoman: wow. well then my mentor suggested that i move into equities, best move i ever made. \n\njerry: mentor? you mean your boss. \n\nwoman: oh, no no no, cynthia's just a successful businesswoman who's taken me under her wing. \n\njerry: hmm. so cynthia's your mentor. \n\nwoman: and i'm her protg. you must have someone like that. you know, who guides you in your career path. \n\njerry: well, i like gabe kaplan. \n\ngeorge: i still don't understand this. abby has a mentor? \n\njerry: yes. and the mentor advises the protg. \n\ngeorge: is there any money involved? \n\njerry: no. \n\ngeorge: so what's in it for the mentor? \n\njerry: respect, admiration, prestige. \n\ngeorge: pssh. would the protg pick up stuff for the mentor? \n\njerry: i suppose if it was on the protg's way to the mentor, they might. \n\ngeorge: laundry? dry cleaning? \n\njerry: it's not a valet, it's a protg. \n\ngeorge: alright. listen, i gotta get some reading done. you mind if i do this here? i can't concentrate in my apartment. \n\njerry: (checking out george's textbook) risk management? \n\ngeorge: yeah. steinbrenner wants everyone in the front office to give a lecture in their area of business expertise. \n\njerry: well what makes them think you're a risk management expert? \n\ngeorge: i guess it's on my resume. \n\njerry: hello? \n\nvoice: please hold for elaine benes. \n\ngeorge: you know what? i can't do this. i can't read books anymore; books on tape have ruined me, jerry. i need that nice voice. this book has *my* voice. i hate my voice. \n\njerry: so get this book on tape. \n\ngeorge: you can't, it's a textbook. \n\nelaine: hey, jer. are you going to this bob sacamano party? \n\njerry: am i going? it was three nights ago. \n\nelaine: what? you're kidding, i just got this invitation today. oh, i was so excited. it's really a beautiful invitation. \n\njerry: oh, it was a lovely affair. \n\nelaine: wait a minute; this postmark is three weeks old. man, this happens all the time. (into intercom) jeanine? who the hell runs the mailroom? \n\njeanine: eddie sherman. \n\nelaine: alright, send him up here. \n\njerry: you gonna do a little yelling? \n\nelaine: i'm gonna do a little firing. \n\njerry: that is so cool, can you put me on the speaker? \n\nelaine: oh yeah, sure. (hangs up) gimme a break. \n\njerry: hey, copernicus? \n\njeanine: eddie sherman is here. \n\nelaine: oh, great. send him in. \n\neddie: you wanted to see me? \n\nelaine: eddie. yes, um, i am so sorry but i'm afraid we're gonna have to... promote you. \n\njerry: so, what did you say? \n\nelaine: well, i called him all the way up to my office, so i had to tell him something important. so i promoted him. \n\njerry: what? what did you-- \n\nelaine: copywriter. \n\njerry: he's writing copy? \n\nelaine: well it can't be any worse than the pointless drivel we normally churn out. \n\nkramer: yowza yowza. check it out. \n\njerry: (reading) jewish singles night? \n\nkramer: i expect you both to be there. \n\nelaine: i'm not jewish. \n\nkramer: well neither am i. \n\njerry: well why are you going? \n\nkramer: i'm not, i'm running it. \n\njerry: what are you talking about? \n\nkramer: well lomez, he usually runs it but he's in the everglades. \n\njerry: lomez is jewish? \n\nkramer: oh yeah yeah yeah. orthodox, jerry. old school. \n\nelaine: (reading) at the knights of columbus? \n\nkramer: yeah, frank costanza, he's getting me a room at his lodge. so jerry, you know i'm really counting on you to come to this. \n\njerry: kramer, you know, i-- \n\nkramer: no, jerry, look i'm cooking all the food myself. \n\nelaine: (reading) a tempting schmear of authentic jewish delicacies. \n\nkramer: do you like tsimmis? \n\nabby: my mentor says the duck is outstanding here. \n\njerry: i'm not really a duck fan, the skin seems sort of human. \n\nabby: oh! look who's here, cynthia! \n\ncynthia: hello, abby. \n\nabby: hello. jerry, this is cynthia pearlman, my mentor. \n\njerry: hello. \n\ncynthia: hi jerry, nice to finally meet you. \n\nabby: well come join us, we could pull up a chair. \n\ncynthia: great, my boyfriend's just parking the car. actually, jerry, you \n\njerry: no kidding? \n\ncynthia: kenny bania. \n\njerry: bania? \n\nbania: hey, jerry!! how's it going?! you gonna join us for dinner? the duck here's the best. the best, jerry. \n\ngeorge: excuse me, i'm sorry to bother you, i noticed that you have a textbook on tape. may i ask where you got that? \n\nman: reading for the blind. they can get any book on tape. \n\ngeorge: i tell ya, i am hooked on these books on tape. \n\nman: oh, tell me about it. these things have ruined me for braille. \n\njerry: reading for the blind? \n\ngeorge: i take an eye test; i flunk it, the next thing you know i am swinging to the sweet sounds of risk management. \n\njerry: so, i finally met the mentor. \n\ngeorge: what's she like? impressive? \n\njerry: oh yeah, she's dating bania. \n\ngeorge: bania? \n\njerry: yeah. i had to spend two hours at dinner last night with that specimen. \n\ngeorge: what did you have? \n\njerry: chicken, how could she look up to a person who voluntarily spends time with bania? \n\ngeorge: marsala? \n\njerry: piccata, if anything i should be dating a mentor and bania should be setting pins in a bowling alley. \n\njerry: hey, good luck with that. \n\ngeorge: thank you. \n\ngeorge: dad. \n\nfrank: what are you wearing, an athletic sweat suit? \n\ngeorge: what are you doing here? \n\nkramer: well, he came by to pick up his check for the banquet hall. you know i got a hundred and eighty-three responses? oh, it's gonna be a rager. \n\njerry: kramer, how are you gonna cook jewish delicacies for a hundred and eighty-three people? \n\nkramer: yeah, you're right. that's a lot of pupkitz. hey frank, you know anybody who can help me cook? \n\nfrank: cook? no, i don't know any cooks. i don't know anything about cooking! \n\nkramer: what's the matter with him? \n\ngeorge: my dad was a cook during the korean war. something very bad happened, ever since you can't get him near a kitchen. \n\nkramer: shell-shocked? \n\ngeorge: oh yeah, but that has nothing to do with it. \n\nelaine: that's good work, guys. that aught to do it for today. \n\neddie: wait. you didn't ask me about my ideas. \n\nelaine: oh, eddie, well it's your first day. \n\neddie: i'm ready. \n\nelaine: oh, okay. \n\neddit: (reading) it's a hot night. the mind races. you think about your knife; the only friend who hasn't betrayed you, the only friend who won't be dead by sun up. sleep tight, mates, in your quilted chambray nightshirts. \n\nelaine: what am i gonna do? he is a disaster. \n\njerry: well, if he's doing that bad, maybe he's in line for another promotion. \n\nelaine: you know what? you are exactly right. that is what i should do, i should promote him. i'll give him another office on another floor and he can sit there with his nice title and his bayonet and stop freakin' me out. \n\ngeorge: nothing at all. \n\ndoctor: well george, your vision is quite impaired. if you'll just sign this insurance form, here's a pen. \n\ngeorge: you're a very handsome man, by the way. \n\njerry: what the hell is going on here? \n\njerry: what are you doing? \n\nkramer: i got three kitchens going. i got brisket going at newman's, i got kugel working at mrs. zamfino's, this is kreplach. here, try some of this. \n\njerry: no, i don't want to. \n\nkramer: eat, eat! you're skin and bones. \n\nkramer: hah? \n\njerry: oh, this is awful. \n\nkramer: jerry, it's kreplach. it's an acquired taste, yeah. \n\njerry: did you follow the recipe? \n\nkramer: the recipe was for four to six people; i had to multiply for a hundred and eighty-three people. i guess i got confused. \n\njerry: it tastes like dirt. \n\nkramer: well i also dropped it on the way over. look i'm in trouble, i got no skills. i can't peel, i can't chop, i can't grate. i can't mince! i got no sense of flavor, obviously. you know, i gotta talk to frank. \n\njerry: kramer, you can't talk to frank. \n\nkramer: no i gotta talk to him, i know that he can help me, jerry. \n\nabby: i think there's a dead animal in the elevator. \n\nkramer: my stuffed cabbage! \n\nabby: so, great dinner last night. \n\njerry: yeah, it was alright. \n\nabby: i told cynthia we'd double with her and bania saturday and then catch his act. \n\njerry: no. no, no way, no bania. \n\nabby: what? \n\njerry: have you seen his act? he's got a twelve-minute bit about ovaltine. he's a punk, a patsy, a hack. \n\nabby: cynthia would not date a hack. \n\njerry: would. does. is. \n\nelaine: before we get started, i am happy to tell you that eddie sherman is no longer writing for this catalog. \n\nelaine: he's upstairs, i made him director of corporate development. \n\nemployee: you promoted him? \n\nelaine: well, no, i would hardly-- \n\nemployee: i bust my hump ever day. \n\nelaine: relax-- \n\nemployee: as far as i'm concerned, you and your deranged protg can run the catalog by yourselves! i quit! \n\nelaine: well, hey? hey. hey!! \n\nvoice: chapter one. in order to manage risk we must first understand risk. how do you spot risk? how do you avoid risk and what makes it so risky? \n\ngeorge: this guy sounds just like me. \n\nvoice: to understand risk, we must first define risk. \n\ngeorge: this is horrible. \n\nvoice: risk is defined as-- \n\ngeorge: (banging the recorder) stop it! stop it! \n\nkramer: c'mon frank, i need you. i mean the war was fifty years ago. \n\nfrank: in my mind, there's a war still going on. \n\nkramer: alright, what happened, frank? what is it that you can't get over? \n\nfrank: inchon, korea, 1950. i was the best cook uncle sam ever saw, slinging hash for the fighting 103rd. as we marched north, our supply lines were getting thin. one day a couple of gis found a crate, inside were six hundred pounds of prime texas steer. at least it once was prime. the use date was three weeks past, but i was arrogant, i was brash, i thought if i used just the right spices, cooked it long enough... \n\nkramer: what happened? \n\nfrank: i went too far. i over seasoned it. men were keeling over all around me. i can still hear the retching, the screaming. i sent sixteen of my own men to the latrines that night. they were just boys. \n\nkramer: frank, you were a boy too. and it was war. it was a crazy time for everyone. \n\nfrank: tell that to bobby colby. all that kid wanted to do was go home. well he went home alright, with a crater in his colon the size of a cutlet. had to sit him on a cork the eighteen-hour flight home! \n\nkramer: frank, now listen to me. two hundred jewish singles need you. this is your chance to make it all right again. \n\nfrank: no. no, i'll never cook again! never! now get out of my house!! get out. go. \n\njerry: so you saw bania's act? \n\nabby: he got two minutes into that ovaltine thing and i just couldn't take it anymore. \n\njerry: i told you, it's like getting beaten with a bag of oranges. \n\nabby: why is he so obsessed with ovaltine? \n\njerry: he just thinks that anything that dissolves in milk is funny. \n\nabby: anyway, cynthia and i got into this big argument afterwards and i think it's over. \n\njerry: no more mentor? \n\nabby: looks that way. \n\njerry: well at least you and i are okay again. \n\nabby: actually i was kind of thinking that maybe we shouldn't see each other for a while. \n\njerry: why? \n\nabby: well i'm feeling a little disoriented. it's just weird for me not to have an advisor. \n\njerry: i can tell you what to do. \n\nabby: no, it's more than that. \n\njerry: i can tell you what to think. \n\nabby: i need someone i can trust. \n\njerry: oh. \n\ngeorge: i got a big problem here, jerry. the tapes are worthless. \n\njerry: kind of in the middle of something here, george. \n\njerry: george? \n\nabby: i gotta run anyway. \n\njerry: i can't believe you feel you really need a mentor. \n\nabby: i just need someone who can give me some kind of direction. i'll see ya. \n\njerry: yeah, see ya. \n\njerry: what's your problem. \n\ngeorge: no problem. \n\neddie: hey, i think i got something here. the bengalese galoshes. \n\nelaine: oh. \n\neddie: (reading) it's tough keeping your feet dry when you're kicking in a skull. \n\nelaine: you know, eddie, that might be just a tad harsh for womenswear. \n\neddie: well, i'm not married to it. \n\neddie: dewy meadow. \n\nestelle: here's your omelet. \n\nfrank: it's dry. \n\nestelle: that's the way i always make it. \n\nfrank: well it sucks. \n\nestelle: what did you say? \n\nfrank: your meatloaf is mushy, your salmon croquettes are oily and your eggplant parmesan is a disgrace to this house! \n\nestelle: well that's too bad, because i'm the only one who cooks around here! \n\nfrank: not any more! gimme that spatula! i'm back, baby! \n\nabby: and you're sure with your busy schedule you'd have time to take on a protg? \n\ngeorge: i'll make time, because abby, i was once like you; wide-eyed, naive, i didn't know the first thing about a subject as fundamental as risk management. \n\nabby: i'm not familiar with that, you'll have to explain it to me. \n\ngeorge: i'll tell you what, why don't you read this book and let's just see if you can explain it to me. \n\nabby: alright. \n\ngeorge: okay. \n\nbania: hey jerry. \n\njerry: oh, hey bania. \n\nbania: didja hear what happened? the mentor saw my act. she dumped me. \n\njerry: oh, that's too bad. \n\nbania: maybe she's right. maybe i am a complete hack. i'm the absolute worst. the worst, jerry. \n\njerry: well it's just that you got so many things with the milk. you got that bosco bit then you got your nestl's quik bit, by the time you get to ovaltine-- \n\nbania: you think you can give me a hand with my material? \n\nkramer: hey. \n\nfrank: you still need a cook? \n\nkramer: oh yeah, come on in, frank. \n\nfrank: ya got t-fal? \n\nkramer: keflon. \n\nfrank: no! follow me. \n\nbania: (reading) why do they call it ovaltine? the mug is round. the jar is round. they should call it round tine. that's gold, jerry! gold! \n\nelaine: let's just replace \"hail of shrapnel\" and \"scar tissue\" with \"string of pearls\" and \"raspberry scones\". \n\njerry: george costanza is your mentor? \n\nabby: yeah, he's great! i am learning so much. \n\njerry: about what? how to calculate five percent of a restaurant check? \n\nabby: you know what your problem is? you just have no respect for the mentor/mentor relationship. \n\njerry: as a matter of fact, i happen to have a protg of my own. \n\nabby: who? \n\njerry: a mister kenneth bania. \n\nabby: bania? \n\njerry: i'm gonna mentor this kid to the top. \n\nabby: huh, well, i don't think i want to date a mentor whose protg is a hack. \n\njerry: well, i don't think i want to date a protg whose mentor is a costanza. \n\nelaine: i don't know how we did it, but there's some kind of chemistry between us, we turned out one hell of a catalog. \n\neddie: cool. \n\nelaine: hey ed, let me ask you something. what's with the fatigues and all the psychotic imagery? huh? \n\neddie: i don't want to talk about it. \n\nelaine: come on, don't be a baby. \n\neddie: i went out on a couple of dates with this woman, i thought she really liked me, and then things kind of cooled off. \n\nelaine: that's it? \n\neddie: well it's tough meeting somebody you like, let alone somebody jewish. \n\nelaine: mm. this food is fantastic. \n\njerry: have you tried the hamentashen? \n\nelaine: i can't get off the kishkas. \n\nbania: hey jerry! \n\njerry: bania? \n\nbania: i just stopped by to thank you. that risk management stuff you wrote for me? it's killer! \n\njerry: risk management? \n\nbania: aw, it's gold, jerry! gold! i got all these corporate gigs and even cynthia took me back. \n\nwoman: so you went from the mailroom to the director of corporate development in two days? \n\neddie: that's right. \n\nwoman: how much are they paying you? i'll double it. \n\nkramer: ya know these latkes are going like hotcakes. \n\nfrank: where's the powdered sugar? \n\nkramer: you know frank, you could take a break. \n\nfrank: no breaks. i fell reborn, i'm like a phoenix rising from arizona. \n\nelaine: you're quitting? \n\neddie: i can't churn out that pointless drivel any more. \n\nelaine: well, you can't quit, you're all i've got. i need you! \n\nvoice: our next speaker is george costanza on the subject of risk management. \n\ngeorge: ovaltine. have you ever had this stuff? why is it called ovaltine? \n\ngeorge: they should call it round tine. you know what i'm talking about. \n\nwilhelm: (proudly, to the man seated beside him) he's my protg. \n\nfrank: noooo!!! don't eat it! no good!\" \n\njerry: hey, have you seen all these new commercials for indigestion drugs? pepcid ac, tagemat hb. \n\nelaine: ugh, the whole country's sick to their stomach. \n\njerry: now, you know you're supposed to take these things before you get sick? \n\nelaine: what is this, a 'bit'? \n\njerry: no. \n\nelaine: 'cos i'm not in the mood. \n\njerry: we're just talking. is this not the greatest marketing ploy ever? if you feel good, you're supposed to take one! \n\nelaine: yeah, i know that tone. this is a bit. \n\njerry: they've opened up a whole new market. medication for the well. \n\nelaine: (tired) alright, are you done with your little amusement? \n\njerry: (hopeful) then you admit it was amusing? \n\nelaine: it was okay, but move the 'medication for the well' to the front, and hit the word 'good' harder. \n\njerry: (thinking) great. thanks. \n\nelaine: so, your firm designed all the furniture in here? \n\nbrett: we manufacture it. the original designs are by karl farbman. \n\nelaine: (as if she knows) oh, farbman. \n\nbrett: you know farbman? \n\nelaine: mm, love farbman. \n\nbrett: most people go their whole lives without sitting in a farbman. \n\nelaine: wuh, if you call that living. (laughs) ahaha. \n\nelaine: wouldn't it be great if farbman designed shoes? \n\nelaine: brett? don't you think that would be great? \n\nelaine: brett? \n\nbrett: (still staring off) after the song, babe. \n\nelaine: huh? \n\nbrett: the song. \n\njerry: so when do i meet this jerk? \n\nelaine: he's not a jerk, jer. he only works with karl farbman. \n\njerry: who? \n\nelaine: (dismissive) i dunno, some designer. anyway, brett is so generous, and sensitive. last night he was moved just listening to a song. \n\njerry: what song? \n\nelaine: desperado. \n\njerry: desperado? \n\nelaine: uh huh. \n\njerry: and you're still dating him? i tell you who sounds a little desperado. \n\njerry: (pointing toward the guy) see that salesman, twirling that umbrella. \n\nelaine: uh huh. \n\njerry: i invented that. \n\nelaine: that, had to be invented? \n\njerry: when i started out as a comedian, i sold umbrellas. it was my idea to twirl it, to attract customers. \n\nelaine: (skeptical) oh hoh, really? well, why don't we ask him about it? \n\njerry: elaine. \n\nelaine: excuse me. hey, how you doing. uhm, my, uh, friend here says that he invented that little twirl you're doing. \n\njerry: elaine, please, it was a long time ago. the man doesn't want a history lesson. \n\nclicky: teddy padillac came up with this twirl. \n\nelaine: (looking at jerry) ohh. \n\njerry: i know teddy padillac. i worked with him on forty-eighth and sixth. \n\nclicky: yeah, that's where he come up with it. \n\njerry: in his dreams. \n\nelaine: alright, can we (glances at her watch) go? \n\njerry: (to clicky) by the way, you're doing it too fast. you'll disorient the customers. \n\njerry: it's the twirling that dazzles the eye. \n\ngeorge: (pulls a face) i find it disorienting. who buys an umbrella anyway? y..you get 'em for free in the coffee shop in the metal cans. \n\njerry: (as if speaking to a moron) those belong to people. \n\nkramer: hey. well. (proffers the envelope) this was downstairs for you. ker-ching. \n\njerry: (taking the envelope) oh no, not more checks. they're coming faster than i can sign 'em. \n\ngeorge: what checks? \n\nkramer: oh, you didn't hear? jerry's a big star in japan. \n\njerry: i don't know why. there's a one-second clip of me in the opening credits of some japanese comedy show. \n\nkramer: yeah, the super terrific happy hour. \n\njerry: (opening the envelope and pulling out a stack of checks) they run it all the time, and now i'm starting to get all these royalty checks. \n\ngeorge: look at all of those! you're rich! \n\njerry: naw. each one is for like twelve cents. it's barely worth the pain in my hand to sign 'em. \n\nkramer: hey, jerry, you need any new furniture? \n\njerry: why? \n\nkramer: (getting a bottle of water out of the fridge) yeah, well, elaine's new boyfriend, you know. he's giving me this oversize chest of drawers. it's a farbman. \n\ngeorge: he's giving you furniture? who is this guy? \n\njerry: ah, who are any of her losers? \n\ngeorge: (dryly) you're on that list. \n\ngeorge: alright, i gotta go home and open up with the house for the carpet cleaners. you know they're doing my whole place for twenty-five dollars. \n\nkramer: oh, no, no, no. not the sunshine carpet cleaners? \n\nego: yeah, you heard of 'em? \n\nkramer: they're a crazy religious cult. the carpet cleaning is just a means for them to get into your apartment. \n\ngeorge: so? for a twenty-five dollar cleaning, i can listen to some pointless blather. \n\njerry: i do it, i'm not even getting the cleaning. \n\njerry: signed over a hundred checks this morning. \n\nkramer: hello, twelve dollars. \n\nmr oh: excuse me. would you take picture please? \n\nkramer: (takes camera) oh, yeah, sure. \n\njerry: i'm gonna ask this guy something. \n\njerry: (to umbrella guy) hey. nice twirl you got there. you know who invented that, don't you? \n\nkramer: (to tourists) hey, are you folks from japan. \n\nmr yamaguchi: hai. \n\nmr oh: yes. \n\nkramer: (points over to jerry) you recognise that mug? \n\nkramer: that's the funny face that greets you at the beginning of the super terrific happy hour. \n\nmr oh: ahh, super terrific happy... \n\nkramer: ah, yeah. yeah, that's him. \n\nmr oh: what is he doing? \n\nkramer: well, i don't know. but something super terrific, i'm sure. \n\nmr oh: he's funny. \n\nkramer: oh yeah, very funny. and it wouldn't be impolite to laugh at his antics. \n\nkramer: yeah. yeah, that's it. because everybody laughs at jerry here in america. \n\ncrew leader: (calling to george) we're pretty much finished. \n\ncrew leader: there's just one more thing. \n\ngeorge: (smiling expectantly) here it comes. \n\ncrew leader: (clears throat) you forgot to sign your check. \n\ngeorge: (signs) sorry. (expectant) you're sure, uh, there isn't anything else? \n\ncrew leader: (flat) no. \n\ngeorge: (let down) so, that's it? \n\ncrew leader: unless you need a receipt. \n\ngeorge: (melancholy) i wish that was all needed. life can be so confusing. i..i'm searching for answers, anywhere. \n\ncrew leader: (flat) good luck with that. \n\njerry: hey. \n\nelaine: what's with the claw? \n\njerry: super terrific carpal tunnel syndrome. \n\nbrett: (to elaine) there's no sign of kramer. \n\nelaine: oh, brett. (indicating) this is jerry. \n\njerry: hi. \n\nbrett: that's very funny. elaine told me you were some kinda comedian. \n\njerry: ah, i'm one kind. \n\nelaine: have you seen the chest of drawers that brett gave to kramer? \n\njerry: the fleckman. \n\nbrett: farbman. \n\njerry: right. \n\nelaine: you gotta see 'em. beautiful. \n\njerry: (not interested) oh, i'm sure they are. \n\nbrett: i'd be happy to get you some if that's what you're driving at. \n\njerry: no. i'm fine, thank you. \n\nbrett: don't worry. it's no charge to you. \n\nbrett: looks like what you really need is a decent desk for writing your skits. \n\njerry: (quiet annoyance) i don't write skits. \n\nbrett: (walking back to elaine) well, of course you don't. you don't have a proper workstation. i'll fax you over my catalogue. \n\nelaine: mmm. brett, uhm, jerry doesn't have a fax machine. \n\nbrett: (quiet) oops. \n\nbrett: well, i'm sure things'll pick up for you soon. elaine, maybe we should get going. \n\nelaine: oh. jerry, you wanna join us? \n\njerry: oh, where you going? the coffee shop? \n\nbrett: (scoff) coffee shop? i think we can do a little better than that. you look like you could use a solid meal at a real restaurant. \n\njerry: you look like you could use a... \n\nelaine: (warning) jerry. \n\nkramer: (reads) three hundred dollars. hey, mr oh, how much would these run you in tokyo? \n\nmr oh: (thinks for a second) ahh, about, uh, thirty thousand yen. \n\nkramer: (shocked) thirty thousand?! these are practically free. \n\nkramer: giddyup. you're a cowboy now. \n\nbrett: i feel terrible about your friend jerry. he's upset that i gave kramer that chest of drawers, isn't he? \n\nelaine: why? why d'you think he's upset? \n\nbrett: how could he not be? living in that cramped little apartment. and outdated furniture, so terribly... un-karl farbman-like. \n\nelaine: (romantic) we're not gonna talk about karl farbman all night, are we? \n\nbrett: (smiling) i hope not. \n\nelaine: (surprised) brett? everything alright? \n\nelaine: (worried) brett! what is it? is there someone outside? \n\nbrett: elaine, the song. \n\nelaine: (relieved) oh. oh, oh, phew. you know, for a minute there i thought it was like that urban legend about the guy with the hook who's hanging on the fender... \n\nbrett: elaine, could you just not talk for one minute? \n\nelaine: (apologetic, silently mouthed) sorry. \n\njerry: no spiel? \n\ngeorge: (annoyed) not a peep. they just cleaned the carpets and left. call themselves a cult! \n\njerry: so you're angry that this bizarre carpet cabal made no attempt to abduct you? \n\ngeorge: they could've at least tried! \n\njerry: you know, maybe they thought you looked too smart to be brainwashed? \n\ngeorge: please. \n\njerry: too dumb? \n\njerry: (impressed) well! mack is back in town! nice duds. \n\nkramer: konichi-wa. yeah, it's a gift from my japanese friends. (sits beside jerry) they're known as gift-givers. and tonight we're going dancing at the rainbow room. \n\njerry: sounds like you're throwing a lot of their money around. \n\nkramer: well, jerry, they're japanese. i mean, that tv you watch, that sushi you eat, i mean, even that kimono you wear. where to you think all that money goes, hmm? \n\nkramer: that's right. \n\ngeorge: how'd you hook up with these guys? \n\nkramer: well, they recognised jerry from the super terrific happy hour. see now, you should be doing your own show in japan. now, they get you. \n\njerry: what kind of show am i gonna do in japan? \n\nkramer: (to george) alright, what'd you do with that pilot you did. \n\ngeorge: (excited) yeah, the pilot! \n\nkramer: that's right, i think that had marvellous production values. \n\ngeorge: (enthusiastic) and, you know, i do a lotta business with japanese tv. they broadcast a lot of american baseball. they got an office here in new york! \n\njerry: forget it! the pilot was awful. it failed. \n\ngeorge: (animated) it failed here! because, here, every time you turn on a tv, all you see is four morons sitting round an apartment, whining about their dates! \n\nkramer: george is right, jerry. see, here, you're just another apple, but in japan, you're an exotic fruit. like an orange. which is rare there. \n\ntv jerry: you had a date? you went out with my butler?! who said you could go out with my butler?! \n\ntv elaine: well, why do i need your permission? \n\ntv jerry: because he's my butler. \n\ngeorge: (eager) so? what d'you think? \n\nexecutive 1: we're bit confused. why was this man jerry's butler? \n\ngeorge: ah. you see, the man who was the butler, uh, had gotten into a car accident with jerry, and because he didn't have any insurance, the judge decreed that the man become jerry's butler. \n\nexecutive 1: is this customary in your legal system? \n\njerry: no. that's what makes it such a humorous situation. \n\nexecutive 1: (speaks japanese) subtitle are you following any of this? \n\nexecutive 2: (speaks japanese) subtitle i'm still trying to figure out why they gave us a bag of oranges. \n\nexecutive 1: (to jerry and george) i'm sorry. i'm sure mr seinfeld is very funny to americans, but i'm not sure this butler show would work in japan. \n\ngeorge: oh, i, uh, i disagree. you've, uh, you've been living in america too long. (indicates the bag of oranges) you've forgotten what it's like to have no oranges. \n\nexecutive 1: (speaks japanese) subtitle again with the oranges \n\njerry: (flexing his fingers) sorry. my hand is numb. \n\ngeorge: (positive) yes. from endorsing checks for the super terrific happy hour. (laughs) \n\nexecutive 1: you must go now. \n\nelaine: ah, i think i'm on the outs with brett. i got shushed during desperado. \n\njerry: (throws out his hands) what does he listen to? the all desperado station? \n\nelaine: he is just in his own world when he hears that song. it's like, i'm sitting there in the car, and he's.. out riding fences. \n\njerry: you know, what you need is a song you can share. \n\nelaine: yes. you're right. we need to find 'our' song. \n\njerry: okay. so, is there any song that you feel very strongly about? \n\nelaine: (points) i like witchy woman. \n\njerry: witchy woman? \n\nelaine: you know, witchy woman. (sings) 'ooo-ooh, wit-chay woman'. \n\njerry: (getting it) ahh. wit-chay woman. \n\nkramer: (to jerry) hey, man. \n\nelaine: hey. \n\njerry: hey. how was the rainbow room? \n\nkramer: uh, well, we, uh, we had to leave early. there was a, uh, slight monetary discrepancy regarding the bill. \n\njerry: ah. \n\nkramer: uh, listen, uh, can i borrow some pillows? \n\njerry: what for? \n\nkramer (o.c.): yeah, well, uh, my japanese friends're gonna stay with me. \n\njerry: i thought they all had suites at the plaza? \n\nkramer: well, i'm sorry, jerry, we all don't have checks rolling in like you do. \n\njerry: well, what about all that money from the kimonos i wear? \n\nkramer: well, they ran out of it. manhattan can be quite pricey. even with fifty thousand yen. \n\nelaine: fifty thousand yen? isn't that only a few hundred dollars? \n\nkramer: evidently. (to elaine) oh, by the way, tell brett that his chest of drawers are a big hit. my guests are very comfortable in them. \n\nelaine: in them?! \n\njerry: you have them sleeping in drawers?! \n\nkramer: jerry, have you ever seen the business hotels in tokyo? they sleep in tiny stacked cubicles all the time. they feel right at home. \n\njerry: this has 'international incident' written all over it. \n\nkramer: (smiling) oh yeah, yeah. \n\nkramer: goodnight, mr tanaka. \n\nmr tanaka: goodnight. \n\nkramer: goodnight, mr oh. \n\nmr oh: (sits up) goodnight. \n\nkramer: goodnight, mr yamaguchi. \n\nmr yamaguchi: (sits up) oyasuminasai *(japanese for goodnight) \n\njerry: what is this? \n\nkramer: rice crispies. east meets west, jerry. \n\njerry: ah. it's a lovely little bureau and breakfast you're running. well, i'm off to the bank. \n\nkramer: (opening the fridge) sayonara. \n\njerry: (leaving) konichi-wa. \n\nbrett: elaine, i... \n\nelaine: shh-shh! (smiling) what d'you think? \n\nelaine: what are you doing? that's witchy woman. that could be our song. \n\nbrett: witchy woman is okay for you, but i've already got a song. \n\nelaine: oh. oh, then how about desperado? (smiling) we can share it. \n\nbrett: (flat) no. it's mine. \n\nkramer: here you go. snap, crackle and pop. \n\nkramer: (loudly) good morning, mr oh. i gotta make up the drawer. \n\nmr oh (o.c.): ach, come back in half hour. \n\njerry: (calls) hey, i'll take one. \n\nclicky: well, look who's back! \n\nclicky: teddy! (indicates jerry) this's the guy says he invented the twirl. \n\nteddy: (unfriendly recognition) jerry seinfeld! \n\njerry: teddy padillac. long time, no see. (pointing at the umbrellas) what've you got in a push-button mini. \n\nteddy: (bitter) same thing we had, when you bailed on us, fifteen years ago. \n\njerry: bailed? c'mon, you knew i wanted to be a comedian. besides, we had some good time. remember tropical storm renee? \n\nteddy: (angry) oh, yeah, sure. but where were you during the poncho craze of eighty-four? i almost lost my house. \n\nclicky: umbrella, buddy? \n\nclicky: now we got that damn 'urban sombrero' to contend with. \n\nteddy: (to clicky) easy, there. (to jerry) i hear you're taking credit for the twirl. \n\njerry: aw, it was so many years ago. who cares? \n\nteddy: (intense) i care. clicky cares. \n\njerry: so, could i... \n\njerry: could i just buy an umbrella? \n\nteddy: (sour) yeah, sure. two hundred dollars. \n\njerry: (shock) what?! \n\nteddy: (caustically) special price, for a real foul-weather friend. \n\nkramer: hey, george. how about that tour, huh? these guys are ready to run the bases. \n\ngeorge: (indicating the window) kramer, it's, it's raining. they got the tarp on the field. \n\nkramer: (quietly) ah, listen, george, what else can i do with these guys? now, bear in mind, they're a little light on the yen. \n\ngeorge: well, i, i got the pilot of the jerry show. \n\nkramer: (snaps his fingers) that's perfect. (to the japanese) hey, how would you guys like to watch super terrific happy star jerry seinfeld? \n\nmr oh: but, we are also very hungry. \n\nkramer: oh, yeah, yeah. (feeds tape into vcr) well, you guys just watch the tape and, uh, i'll get you some food. \n\nkramer: (shouts) hey, peanuts! \n\nwilhelm: george. (waves george over) george. \n\nwilhelm: (puzzled) uh, george, uh, did you call some carpet cleaners? \n\ngeorge: are they here? \n\nwilhelm: they're in my office, right now. \n\ngeorge: (suspicious) they haven't said anything to you, have they? \n\nwilhelm: about what? \n\ngeorge: (to himself, resentful) what kind of a snobby, stuck-up, cult is this?! \n\nbrett: (calls over) hey jerry! \n\njerry: oh, hi brett. \n\nbrett: haven't you ever heard of an umbrella? \n\njerry: ah, i didn't have enough money. \n\nbrett: i'm sure things'll pick up for you. \n\njerry: no, it's not that, it's the... \n\njerry: oh no, look at the checks! hours of hard work ruined! \n\nbrett: ah, don't worry, i can spot you the (reads) twelve cents? \n\njerry: no, it's not the money. it's my hand. it's crippled from writing and writing. \n\nbrett: nothing's working for you, is is? \n\njerry: (bitter) not at the moment, brett. \n\nbrett: i'd give you a ride, but i got karl farbman here. \n\njerry: (sarcastic) thanks for stopping! \n\nelaine: brett said you ran away from him, as if he were the boogetyman. \n\njerry: boogeyman. \n\nelaine: boogey? \n\njerry: i'm quite sure. anyway, any luck getting together on a song? \n\nelaine: no. he blew out my witchy woman, and he won't share desperado. hey, what d'you think of oye como va? \n\njerry: (negative) eehh. \n\nelaine: (desperation) well, i'm running outta guys here in this city, jer! \n\njerry: hey. \n\ngeorge: (excited) great news! i showed the pilot to kramer's japanese friends. they loved it! \n\njerry: really? they bought the butler character? \n\ngeorge: (excited) did i tell you that story's relatable?! that was a great show! that is why i'm bringing it back to nbc. \n\njerry: nbc? \n\ngeorge: (little subdued) nakahama broadcast corporation. \n\njerry: ah. but they told us we must go now. \n\ngeorge: but now i have my own market research. actual japanese viewers, that love the show! i'm gonna talk to kramer. \n\njerry: hey, george, do me a favour. if they make you an offer, whatever it is. (vehement) just take it! \n\ngeorge: hey, by the way, what'd you think of miss yoshimura? \n\njerry: who? \n\ngeorge: the network executive. you think she liked me? \n\nkramer: heyy! look who's here. \n\nkramer: (beckoning to george) come on, i want you to come in here. \n\nmr oh: come on in, fat boy! \n\ngeorge: get a good night's sleep, alright fellas. (thumbs up) big day tomorrow! \n\njerry: (to himself) last one. \n\njerry: (agonised) uugh! ahh. \n\nkramer: there you are. \n\ngeorge: uh. (smiles) where's the boys? \n\nkramer: uh, no, i let 'em sleep in. \n\nkramer: i'm on my way to cash in their plane tickets for them. they need a little food money. \n\ngeorge: (horrified) but that meeting starts in ten minutes! \n\nkramer: no, well, i set their alarm. but they did have a lot of sake in that hot-tub. \n\ngeorge: (frantic) i'm calling jerry. \n\njerry: yeah? \n\ngeorge: (panicked and rushed) jerry! the japanese guys had sake in the hot-tub! you gotta get 'em outta the drawers and get 'em down here, or i don't have a focus group to sell the pilot to japanese tv! \n\njerry: (kidding) uncle leo? \n\ngeorge: (scream) jerry!! \n\njerry: alright, alright. i'll wake 'em up. \n\njerry: (to himself) hmm, testy. \n\njerry: hello? \n\nmr oh (o.c.): mr jerry! open the drawer, please! \n\njerry: it's stuck. (pained) oww! the steam from the hot-tub musta warped the wood. \n\nmr oh (o.c.): pull harder. \n\njerry: i'm trying. i can't get a grip. my hand's had kind of a bad week. \n\nmr oh (o.c): very funny, but no joking, please. \n\njerry: (looks round) don't worry, i'll get you out. \n\nelaine: brett, believe me. you don't have to do this. \n\nbrett: elaine, i know he'll appreciate this. granted, it's not as nice as kramer's cabinet, but it's start. \n\nelaine: uh, i promise you, jerry is not jealous of kramer's cabinet. \n\njerry (o.c.): (yell) move to the back of the drawers! \n\nelaine: jerry? \n\nelaine: jerry. \n\nbrett: (shouting) not the farbman!! \n\nmr oh: (speaks japanese) subtitle jerry seinfeld is a dangerous lunatic. he wouldn't let us out of the drawers. then he came at me with an axe. \n\nexecutive 1: (speaks japanese) subtitle we suspect his friend here is also unbalanced. \n\ngeorge: so, uh, gentlemen, do we have a deal? \n\nmr oh: (speaks japanese) subtitle could we have a couple of those oranges? \n\nmr oh: (speaks japanese) subtitle we are very hungry and have survived many hardships. \n\ngeorge: (to the executives) excuse me. did you hire the sunshine carpet cleaners? \n\nexecutive 1: yes. cleaned up the (points) coffee stain, left by jerry seinfield. \n\ngeorge: mr wilhelm? wha..what're you doing here? \n\nwilhelm: i'm here to clean the carpets. most of the world is carpeted. and, one day, we will do the cleaning. \n\ngeorge: (incredulity) him you brainwashed! (angry shout) what's he got that i don't have?! \n\ngeorge: (urgent) mr wilhelm, listen. you've been abducted! please, mr wilhelm, you gotta listen to me! \n\nwilhelm: wilhelm? (he raises the nozzle of his cleaner) my name is tanya. \n\nexecutive 1: (speaks japanese) subtitle with these two idiots i don't know how the yankees won the world series. \n\njerry: (apologetically) brett, i'm, i'm really sorry. i didn't mean to hit you in the head with.. an axe. \n\njerry: (defensive) at least it was just the handle! \n\nbrett: it was a beautiful cabinet. what am i gonna tell... \n\nbrett: i can't remember his name! \n\njerry: fleckman? \n\nelaine: calm down brett, okay. you could have a concussion. calm down. (holds brett's head and sings) 'desperado, mmm-mm-mmm. you better...' \n\nelaine/jerry: (singing) '...let somebody love you. let somebody love you, before it's too...' \n\nnurse: his pulse is fine. \n\ndoctor: hmm. looks like a minor concussion. let me see what i can do to relieve the swelling. \n\nnurse: doctor? \n\nnurse: (concerned) doctor? \n\nnurse: (worried) doctor? \n\nnurse: (alarm) doctor, i think we're losing him! \n\ngeorge: dollar eighty-nine. why is this a dollar eighty-nine? why is there no haggling in this country? \n\njerry: i guess we like to think we've progressed beyond a knife fight for a citrus drink. \n\ngeorge: not me. everything should be negotiable. (he picks up a container of fruit) \n\njerry: restaurants too? \n\ngeorge: absolutely. you're telling me there's no room to move on pasta. all starches are a scam. \n\njerry: yea especially ziti, with that big hole. \n\ngeorge: ahh, excuse me, how much is this? \n\nworker: dollar nineteen. \n\ngeorge: i'll give you a quarter. \n\nworker: get the hell out of here. \n\njerry: tell him forty and no fork. \n\ngeorge: thirty. \n\nworker: that's it you leave and never come back! \n\njerry: how about we leave and, come back in a week? \n\nworker: deal! (turns and walks into the market) \n\ngeorge: alright see? we got something there. \n\nkramer: awe check it out. \n\njerry: wow. kenny rogers roasters. finally open. hey, look at the size of that neon chicken on the roof. \n\nkramer: roger's can't sell chicken around here, we got chicken places on every block. \n\njerry: he is the gambler. \n\nkramer: well, (rubs hands) i gotta meet newman at the pet store. helping him pick out a turtle. \n\njerry: try and stay calm. \n\nkramer: yea, yea. \n\nman: hey jerry. \n\njerry: seth! wow what has it been like five years? \n\nseth: at least. \n\njerry: you wanna grab lunch? \n\nseth: ah, i'm actually headed back to the office. \n\njerry: seth, it's me. what's more important than catching up with an old college buddy? \n\nseth: well i am, supposed to be in this meeting. \n\njerry: blow it off. remember poli sci? how many of those did we go to? \n\nseth & jerry: alright, alright. \n\njerry: hey whatever happened to moochie? \n\nseth: he's dead. \n\njerry: is that right? \n\ngeorge: you know i still don't know how you can call lunch with me a business expense. \n\nelaine: what do you think of the catalog? \n\ngeorge: it stinks. \n\nelaine: there, we just talked business. \n\nsales woman: we do have the down comforter and the cookware you liked. \n\nelaine: oh great, put it all on the peterman account with the other stuff. \n\nsales woman: you know what else we have that you might like? \n\nelaine: i'll take it. \n\ngeorge: hey, you like? \n\nsales woman: i think it looks very nice on you. \n\ngeorge: really? (feeling flattered) \n\nsales woman: hmm. \n\ngeorge: elaine, huh... peterman account? \n\nelaine: why not? (to the sales woman) and some hair for my little friend here. \n\nseth: so how's your stand up career? \n\njerry: good, as a matter of fact. i almost had my own show in japan. \n\nseth: do you speak japanese? \n\njerry: no \n\nseth: so you would have done it in japan, but in english. \n\njerry: i don't know. so what's this job of yours? \n\nseth: big investment firm. \n\njerry: mmmm. \n\nseth: we just got the citibank account. in fact today was our first big meeting with them. \n\njerry: the, the meeting you blew off? \n\nseth: yea. \n\njerry: wasn't that kind of important? \n\nseth: yea. \n\nelaine: ...and i brought i whole new set of cookware, and a water pik. \n\njerry: you use a water pik? \n\nelaine: sure. water pik, floss, plax, brush, listerine. \n\njerry: so you go in the bathroom at eleven your in bed by what, two? \n\nelaine: well, at the latest. oh hang on a second, i gotta another call. \n\nelaine: hello? \n\nman: good day ms. benes. its roger ipswitch. \n\nelaine: oh hey! how things doing in accounting? \n\nroger: ms. benes, i notice youve been charging quite a bit of merchandise on the peterman account. \n\nelaine: well, i am the president. \n\nroger: yes, and we're all very impressed. never the less, the expense account is for business purposes only. \n\nelaine: well, well isn't the president allowed to do anything that they want? \n\nroger: no. i'll be in your office first thing tomorrow. good day. (hangs up the phone) \n\nelaine: good day. \n\njerry: hello. anybody? \n\ngeorge: hey. \n\njerry: hey. why didn't cha get the big one? \n\ngeorge: this hat just bottles in the heat, i -i don't even need a coat! it's unbelievable! \n\njerry: i don't believe it. \n\ngeorge: ah, and i got a date with the sales woman. she's got a little marisa tomei thing going on. \n\njerry: ahh, too bad you got a little, george costanza thing going on. \n\ngeorge: i'm going out with her tomorrow, she said she had some errands to run. \n\njerry: that's a date? \n\ngeorge: what's the difference? you know they way i work. i'm like a commercial jingle. first it's a little irritating, then you hear it a few times, youre hummin it in the shower, by the third date it's (sings) \"by mennen!\". \n\njerry: how do you make sure your gonna get to the third date? \n\ngeorge: if there's any doubt, i do a leave-behind. keys, gloves, scarf -- i go back to her place to pick it up...(pop sound) date number two. \n\njerry: that is so old. why don't you show up at her door in a wood horse? \n\njerry: (sings theme) \"by mennen.\"  what the?... \n\njerry: what's going on in there? \n\nkramer: what? \n\njerry: that light! \n\nkramer: oh the red. yeah, its the chicken roaster sign. you know, its right across from my window. \n\njerry: can't you shut the shades? \n\nkramer: they are shut. oh by the way, your friend seth, he stopped by. \n\njerry: oh yeah? what'd he have to say? \n\nkramer: yeah, he was fired. \n\nelaine: well, as you can see the comforter i expensed is actually the aristotle goose down tunic. (laughs, modeling the comforter) what do you think? \n\nroger: another bulls eye. \n\nelaine: hmm. well mr. ipswitch since everyone of my expenses was obviously for a legitimate business purpose. \n\nroger: i just need to see the sable hat you purchased yesterday. \n\nelaine: the hat? why do you need to see the hat? \n\nroger: it costs eight-thousand dollars. \n\nelaine: what? \n\nelaine: ohh. (trying to control the water pik and shut it off.) \n\njerry: seth, if you knew the meeting was so important why did you go the lunch with me? \n\nseth: we're old college buddies. \n\njerry: i only knew you through moochie. \n\nseth: hey jerry don't worry about it all right. the important thing is, is we got to catch up. mind if i ah, grab the want ads? \n\njerry: um, actually i haven't read tank mcnamara yet. (takes the paper back) \n\njerry: how's life on the red planet? (shuts door) \n\nkramer: its killing me, i can't eat, i can't sleep. all i can see is that giant red sun in the shape of a chicken. (gets some cereal from the cubard and pours it in a big bowl) \n\njerry: well, did you go down to the kenny rogers and complain? \n\nkramer: ah, they gave me the heave ho. you know, i don't think that kenny rogers has any idea what's going on down there. \n\njerry: what are you doing? \n\nkramer: getting some cereal \n\njerry: that, that's tomato juice. \n\nkramer: that looked like milk to me! jerry my rods and cones are all screwed up! alright, that's it.  i gotta move in with you jerry. \n\njerry: i don't know kramer, ahh, my concern is that .... \n\njerry: ..living together after a while we... we might start to get on each others nerves a little. \n\nkramer: alright listen to me, i got a great idea. now, you're a heavy sleeper, right? why don't we just switch apartments? \n\njerry: or i could sleep in the park? you could knock these walls down, make it an eight room luxury suite. \n\nkramer: jerry these are load bearing walls, they're not gonna come down! \n\njerry: yea, that's no good. \n\nkramer: i may have to drive that place out of business. \n\njerry: how you gonna do that? \n\nkramer: like we did in the sixties, takin' in to the streets. \n\nheather: thanks george, but i got it from here. \n\ngeorge: oh no i'm in already come on. \n\ngeorge: so eh, you eh, wanna get together tomorrow? \n\nheather: no, i'm gonna be pretty busy. \n\ngeorge: what about this weekend? \n\nheather: i'm gonna be busy for a while. \n\ngeorge: ok, ah.. (george throws his keys on the table) see ya! \n\nheather: hey, you forgot your keys. \n\ngeorge: oh, those, those aren't my keys. \n\nheather: well they're not mine. \n\ngeorge: oh. ha. they are my keys, how weird. (laughs) \n\nheather: goodbye george. \n\ngeorge: yea bye. \n\nheather: george, bye! (picks up phone) hello? you are not going to believe the date i just had. \n\ngeorge: (sings) co-stan-za. (like \"by mennen\") \n\nelaine: what do you mean you don't have the hat? \n\ngeorge: i left it at heather's. are these alive? (pounding on glass display) \n\nelaine: no dead! george, i need that russian hat back! \n\ngeorge: alright, alright, i'll call heather, you'll get your hat back, i will get a second date. ha ha ha. now watch the magic. \n\nelaine: dial 9- merlin. \n\nheather: hello? \n\ngeorge: (clears throat) heather hi, it's george costanza. \n\nheather: oy! \n\ngeorge: ah, listen ah, i don't mean to bother you but ah, silly me, i- i think i may have left my hat in your apartment. so ah, i thought i'd just come by later and pick it up. \n\nheather: you didn't' leave a hat here. \n\ngeorge: i- i'm pretty sure i left it eh, behind the cushion of the chair ... accidentally. \n\nheather: no hat. george i gotta go. \n\ngeorge: ah, a, you know what, maybe i'll just come ... umm, yummm (stammering) \n\njerry: seth? \n\nseth: jerry hi! what do you think? \n\njerry: i think your taking the trash out for this chicken place, but that couldn't be. \n\nseth: yeah, i'm the new manager \n\njerry: but your were an executive, this is fast food. \n\nseth: not fast food, good food quickly. hey, next time lunchll be on me, huh jer. \n\nkramer: hey, stay away from the chicken. bad, bad chicken, mess you up. \n\nseth: that's not going to be good for business. \n\njerry: that's not going to be good for anybody. \n\nkramer: jerry im so glad we switched apartments. it was a perfect solution. \n\njerry: look kramer, i-i-if i'm gonna live over there, y-y-you gotta take some of this stuff out. i mean this thing is really freaking me out (holds up a ventriloquist dummy). i feel like its gonna come to life in the middle of the night and kill me. \n\nkramer: what, mr. marbles? he's harmless. \n\njerry: and one other thing, i don't want newman using my... \n\njerry: oh no. \n\nnewman: nice place you got here kramer ... \n\nkramer: yeah. \n\nnewman: ... a man can really get some thinking done. (sits on couch, next to kramer.) \n\njerry: well don't get too comfortable. as soon as seth gets a real job you two are gong back in that chicken supernova. \n\nkramer: what is that roger's chicken? oh get that outta here. \n\nnewman: i don't know. the man makes a pretty strong bird. \n\nkramer: well i'm boycotting it. \n\nnewman: (eating) hm. \n\nkramer: what is that, hickory? \n\nnewman: yea, it's the wood that makes it good. \n\nkramer: really? \n\nnewman: uh-huh. \n\nkramer: oh stop it. (he slaps newmans shoulder) whats the matter with you. \n\nkramer: mmmmm. \n\nheather: can i help you? \n\nelaine: hi, yeah, i'm elaine benes, we met at barney's... \n\nheather: oh. \n\nelaine: ... i'm a friend of george costanza's. (while she is talking, she is dragging george in by pulling his ear) \n\ngeorge: hi. \n\nelaine: ah, (releases georges ear) whether you're aware of it or not george had this pathetic little plan to, leave something behind so he could weasel a second date. \n\nheather: really? \n\nelaine: i know, he- he has a real confidence problem. \n\ngeorge: well not really... \n\nelaine: george... \n\ngeorge: ah... (quietly) \n\nelaine: ... anyway i know you told him you didn't have the hat because you didn't want to see him again. and, more sympathetic i could not be. but, i really do need to have the hat back. \n\nheather: look, i don't know what to tell you, but there's no hat here. i mean, maybe the maid took it, i had people over, but... \n\ngeorge: well that makes sense. \n\nelaine: well then you wouldn't mind if we took a second look around? \n\nheather: be my guest. \n\ngeorge: good to see you again. \n\ngeorge: she's bluffing... \n\nelaine: uhhh... \n\ngeorge: ... she's got it stashed away in there somewhere. \n\nelaine: this is an absolute disaster. \n\ngeorge: oh i don't know. check this out. \n\nelaine: you stole her clock? \n\nelaine: well done. (pats george on the shoulder) \n\ngeorge: yep, this one for our side! \n\njerry: (thinking) what is that creaking, its like i'm in the hold of a ship. gotta relax. \n\njerry: (startled - eyes wide open) hello, is somebody there? (scurrying sound) mr.- mr. marbles? \n\nelaine: so i told ipswitch i'd have the hat by this afternoon. what am i gonna do? \n\nkramer: you should sleep with him. \n\njerry: hey buddy. i'm on no sleep, no sleep!. you don't know what it's like in there, all night long things are creaking and cracking. and that red light is burning my brain! \n\nelaine: you look a little stressed. \n\njerry: oh i'm stressed! (makes like kramer, outstretching his arm. jerry heads for the freezer for some ice cream.) \n\nelaine: so kramer what am i supposed to do? if i don't have that fur hat by four o'clock they're gonna take me down like nixon. \n\njerry: you know my friend bob sacamano? \n\nelaine: i thought he was kramer's friend. \n\njerry: well, he called last night about 3 a.m. and we got to talking, he sells russian hats down at battery park, forty bucks. \n\nelaine: forty bucks? are they sable? \n\njerry: no, but the difference is negligible. \n\nkramer: oh yea, i like this idea. (sounding very much like jerry) \n\nelaine: alright, lets give it a shot, lets go. \n\njerry: giddee up! \n\nnewman: it's getting cold, it's getting cold. \n\nkramer: that was a close one. \n\nnewman: well why do we have to keep this from jerry? \n\nkramer: because if jerry finds out that i'm hooked on roger's chicken i'm back there with the red menace. \n\nipswitch: ms. benes the hat you charged to the company was sable, this is nutria. \n\nelaine: w-w- well, that's a -ah, its kind of sable. \n\nipswitch: no, its a kind of rat. \n\nelaine: that's a rat hat? \n\nipswitch: and a poorly made one, even by rat hat standards. i have no choice but to recommend your prompt termination to the board of directors. nothing short of the approval of peterman himself will save you this time. \n\nelaine: but, but, he's in the burmese jungle. \n\nipswitch: and quite mad too from what i hear. \n\nelaine: wait a minute, wait a minute. can i fire you? \n\nipswitch: no. \n\nkramer: so heather called? \n\ngeorge: yeah, but get this, the message said 'call me if you have the time'. heh heh if i have the time, you get it? \n\nkramer: no, but this is all very exciting. (sounding very much like jerry) \n\ngeorge: she knows that i have her clock. i know that she has my hat. i think she's getting ready to make an exchange. \n\nkramer: well there is the possibility that you've gone right out of your mind. \n\ngeorge: i've looked at that, seems unlikely. \n\nkramer: i'd look again. so ah, how come you didn't call jerry about all this? \n\ngeorge: jerry, i can't talk to jerry anymore. ever since he moved into that apartment he's too much ... like you. \n\nkramer: hmm. that's a shame. \n\njerry: seth, you're the manager, can't you turn off that sign? \n\nseth: jerry i lied. i'm just an assistant manager. \n\nseth: (on loud speaker) number sixty seven, family feast. \n\nnewman: number 67, right here, right here! \n\njerry: hello newman. \n\nnewman: hello jerry. \n\nseth: and don't forget your steamed broccoli. \n\njerry: hold it. broccoli? newman, you wouldn't eat broccoli if it was deep fried in chocolate sauce. \n\nnewman: i love.. broccoli, its, good for you. \n\njerry: really? then maybe you'd like to have a piece? \n\nnewman: gladly. (starts munching on the broccoli, then spits it out) \n\nnewman: vile weed! \n\njerry: it's kramer isn't it? i knew it!  the greasy door knob the constant licking of the fingers, he's hooked to the chicken isn't he? \n\nnewman: yes, yes, now please. someone, honey mustard. \n\nkramer: newman, what took you... ah hey, hey \n\njerry: expecting newman? that's funny because i just happened upon him down at the kenny roger's roasters. \n\nkramer: oh, shh, kenny roger's? whew, boy, i hate that place. \n\njerry: he was buying quite a load of chicken, almost for two people ... \n\nkramer: oh \n\njerry: ... as long as one of them is not him. \n\nkramer: (laughs) oh hey, you know elaine, ah she stopped by... \n\njerry: uh-ha. \n\nkramer: ... yeah dropped off that bob sacamano hat. oh she's ah, upset at him, oh yes siree. yeah well thanks for stopping by. \n\njerry: i sure do miss my apartment. maybe i'll switch back. \n\nkramer: oh you don't want to think about that no sir. otherwise i'd have no choice but to put that banner back up and eh, he-he-hwow, run that roger's right out of town. \n\njerry: i don't think you will. as a matter of fact i'll save you the trouble. i'll do it myself. \n\nkramer: yeah, yeah go ahead yeah, put the banner up doesn't matter to me. \n\njerry: all right. (opens door - red light floods hallway - a buzzing sound emanates.) \n\nkramer: no jerry! i - i need that chicken, i gotta have that chicken. now you leave those roasters alone. kenny never hurt anybody. \n\njerry: you got a little problem. \n\nkramer: oh i got a big problem jerry! \n\nboy: here, kneel here. \n\nelaine: what? \n\nboy: kneel. \n\nelaine: kneel? \n\npeterman: elaine. \n\nelaine: mr. peterman. \n\npeterman: jaba! bagama ma jaba. olymala hungui. (the boy runs out of the room) \n\nelaine: you speak burmese? \n\npeterman: no elaine, that was gibberish. \n\nelaine: ah. \n\npeterman: so did you have any trouble finding the place? \n\nelaine: no, you're the only, white poet warlord in the neighborhood. (laughs) \n\npeterman: are you an assassin? \n\nelaine: i - i work for your mail order catalog. \n\npeterman: you're an errand girl, sent by grocery clerks, to collect a bill. \n\nelaine: well actually um, i do have a bill here. if you could just sign, this expense form, i think i could still make the last fan boat out of here. \n\npeterman: i'd be happy to elaine (he starts reading the form as she hands him a pen)... but i will have to see this hat. \n\nelaine: right... (nodding) \n\ngeorge: so how do you want to do this? \n\nheather: alright george, i'll be honest. the first time we went out, i found you very irritating. but after seeing you a couple of times, you sorta got stuck in my head, (sings) ca-stan-za! (like \"by mennen\") (laughs) \n\ngeorge: so you - you really don't have my hat? \n\nheather: what? \n\ngeorge: uh, le - let's go do, something. \n\nheather: what's in the bag? \n\ngeorge: oh that's eh, that's a sandwich. \n\ngeorge: ...ah (picks up the bag) damn salami. \n\nheather: (grabs the bag) my clock, you stole it! \n\ngeorge: that damn delicatessen that - that is last time they screw up one of my orders. \n\njerry: hey seth. man it is coming down hard out there. \n\njerry: oh, gross. that's not gonna be good for business. \n\nseth: that's not gonna be good for anybody. \n\nkramer: (his mouth is very full) kenny? ... kenny? \n\nkramer: (quietly and staring across the street) kenny .... kenny ....... kenny \n\njerry: home at last. ahhhh. (light turns off) \n\njerry: is someone there? \n\njerry: mr. marbles? \n\nelaine: this the urban sombrero, i put it on the last catalog cover. \n\npeterman: the horror ... the horror. \n\ndefinitions of several items in the chicken roaster episode: nan \n\nhttp: //www.nutria.com/site.php \n\nhttp: //www.nationaltrappers.com/nutria.html \n\ngeorge: say you, me, and kramer are, uh, flying over the andes. \n\njerry: why are we flyin' over the andes? \n\ngeorge: we got a soccer game in chile. anyway, the plane crashes. who are you gonna eat to survive? \n\njerry: kramer. \n\ngeorge: so fast? what about me? \n\njerry: no. \n\ngeorge: kramer's so stringy. i'm plump, juicy. \n\njerry: kramer's got more muscle, higher protein content. it's better for you. \n\ngeorge: well i would eat you. \n\njerry: that's very nice, i guess. \n\ngeorge: i still don't see why you wouldn't eat me. i'm your best friend. \n\njerry: look, if other people are having some, i'll try you. \n\ngeorge: thank you. \n\njerry: can i have a piece of that? \n\ngeorge: no. \n\nlouise: george, i can't have sex. \n\ngeorge: with me or in general? \n\nlouise: i went to the doctor today. i have mono. \n\ngeorge: nucleosis. \n\nlouise: oh i hope it's not a problem for you. \n\ngeorge: no, no, pff... \n\nlouise: how long is this not gonna be a problem for me? \n\njerry: six weeks? \n\ngeorge: yeah, six weeks. \n\njerry: well, so what? you've gone six weeks before. \n\ngeorge: i can do six weeks standin' on my head. i'm a sexual camel. that's not the point. at least there was the possibility. \n\njerry: well, so, are you gonna break up with her? \n\ngeorge: i don't know. i don't wanna be one of those guys. \n\njerry: what guys? \n\ngeorge: like us. (elaine enters) \n\njerry: yeah. \n\ngeorge: so it's just mono. \n\nelaine: mono? huh, well, if anyone needs any medical advise, elaine met a doctor. and he's unattached. \n\njerry: i thought the whole dream of dating a doctor was debunked. \n\nelaine: no, it's not debunked, it's totally bunk. \n\njerry: isn't bunk bad? like, that's a lot of bunk. \n\ngeorge: no something is bunk and then you debunk it. \n\njerry: what? \n\nelaine: huh? \n\ngeorge: i think. (pause as they all look down) \n\nelaine: look it, i'm dating a doctor and i like it. let's just move on. (phone rings) \n\njerry: hello? \n\nkatie: jerry. \n\njerry: oh hi, katie. \n\nkatie: listen, something just came up for tuesday at the dayton civic center. that's ohio, jerry. \n\njerry: i've heard of ohio, katie. but tuesday's no good. i'm doin' career day at my old junior high. \n\nkatie: okay, jerry. that's fine. you're the boss. katie works for jerry. \n\njerry: yes, all right, katie. \n\nkatie: sorry for the late notice. \n\njerry: yes, bye. \n\nkatie: you're the-- (he hangs up) \n\ngeorge: they asked you to do career day? \n\njerry: yeah, it's no big deal. \n\ngeorge: oh with all due respect, i went there too, and i work for a team that just won the world series. \n\njerry: and you were integral. \n\nteacher: jerry, it was so nice of you to come down here. \n\njerry: i'm on next, right? \n\nteacher: well, unfortunately, mr. o'meary from the bronx zoo... \n\njerry: the guy with the lizard. \n\nteacher: yes. well, he started feedin' it crickets, and the children just love him. and we're outta time. \n\nteacher: so can you come back tomorrow? \n\njerry: i'm getting bumped? you're bumping me from career day? \n\nelaine: so do most doctors like er or do you guys just think it's fake? \n\nben: i couldn't tell you. you know, i'm not really a doctor. \n\nelaine: oh, yeah. and i'm not really attracted to you. \n\nben: well, i'm serious, elaine. i went to medical school, but i still have to pass my licensing exam. \n\nelaine: when do you take this exam? \n\nben: i've taken it. three times. i almost passed the last one. \n\nelaine: well, you're basically a doctor. right? i mean, people do call you doctor. \n\nben: well, um... \n\nelaine: well, can i introduce you as doctor? \n\nben: yeah. \n\nelaine: all right, that's all i wanted to know. \n\nlouise: mono. (george removes hand) \n\ngeorge: it was fantastic, jerry. we wound up talking all night. \n\njerry: so you're enjoying the not enjoying. \n\ngeorge: you know, just by conversing, you can really learn a lot about a person. \n\njerry: i'm finding that out. (kramer enters) \n\nkramer: hey, buddy. how was career day? \n\njerry: ah, i didn't get on. the lizard guy went long. \n\ngeorge: you got bumped from career day? \n\njerry: it was a mix-up, i'm sure. \n\nkramer: they're trying to screw with your head. \n\njerry: now why would a junior high school want to screw with my head? \n\nkramer: why does radio shack ask for your phone number when you buy batteries? i don't know. \n\ngeorge: hey, hey. kramer, what are you doing? you can't smoke in here. \n\nkramer: no, come on. (larry the cook comes over) \n\nlarry: take it outside. \n\nkramer: come on, larry. you know me. \n\nlarry: it bothers people, and it's against the law. \n\njerry: you can make all the laws you want, he's still gonna bother people. \n\nkramer: what, did they kick you out too? \n\nman: yeah, they kicked us all out. \n\nteacher: thanks so much for coming back, jerry. care for a graham cracker? \n\njerry: no, let's just do it. (fire alarm goes off) what? what is going on? what is that about? \n\nteacher: fire drill. sorry. single file everyone! \n\njerry: but i was promised this slot. \n\nteacher: single file, jerry. (jerry joins the line) \n\njerry: fire drill, can you believe that? \n\ngeorge: what is pericles? \n\nalex trebek: pericles is correct. \n\njerry: like fire in a school is such a big deal. (kramer enters) \n\nkramer: hey, you got any matches? \n\njerry: middle drawer. \n\ngeorge: who is sir arthur conan doyle? \n\nalex trebek: we were looking for 'who is sir arthur conan doyle.' \n\nkramer: thanks. (kramer leaves, phone rings) \n\njerry: hello? \n\nkatie: jerry. \n\njerry: oh hi, katie. \n\nkatie: i heard what happened to the junior high. they can't bump you like that. that is so unprofessional. \n\njerry: oh relax, katie. it's not a problem. \n\ngeorge: what is borax? \n\nalex trebek: yes, you're right. \n\nkatie: they bump you in junior high, the next thing you know you're being bumped in high schools, colleges, trade schools. before you know it, letterman's not returning your calls. (kramer enters) \n\nkramer: ashtrays? \n\njerry: no, i don't have any ashtrays. \n\nkramer: ooh, cereal bowls. \n\nkatie: jerry, now don't freak out, i'll take care of it. \n\njerry: no, katie, don't-- (he hangs up phone) \n\nkramer: all right, thanks. (kramer leaves) \n\ngeorge: what is tungsten or wolfram? \n\nalex trebek: we were looking for 'what is tungsten, or wolfram'. \n\njerry: is this a repeat? \n\ngeorge: no, no, no. just lately, i've been thinking a lot clearer. like this afternoon, (to television) what is chicken kiev, (back to jerry) i really enjoyed watching a documentary with louise. \n\njerry: louise! that's what's doin' it. you're no longer pre-occupied with sex, so your mind is able to focus. \n\ngeorge: you think? \n\njerry: yeah. i mean, let's say this is your brain. (holds lettuce head) okay, from what i know about you, your brain consists of two parts the intellect, represented here (pulls off tiny piece of lettuce), and the part obsessed with sex. (shows large piece) now granted, you have extracted an astonishing amount from this little scrap. but with no-sex-louise, this previously useless lump, is now functioning for the first time in its existence. (eats tiny piece of lettuce) \n\ngeorge: oh my god. i just remembered where i left my retainer in second grade. i'll see ya. (he throws finished rubik's cube to jerry and he exits. kramer enters) \n\nkramer: need some more matches. \n\njerry: what is goin' on in there? \n\nkramer: i met some people smoking on the street, so i invited them up to my apartment to smoke. \n\njerry: why? \n\nkramer: well somebody had to. you know, just because a person's a smoker, that doesn't mean he's not a human being. \n\njerry: it doesn't? \n\nkramer: well you can confine them, you can punish them, you can cram them into the corner, but they're not going away, jerry. \n\njerry: all right. \n\nkramer: yeah. \n\nelaine: so when they're handing you those cadavers, do you get to choose whether it's a man or a woman? \n\nben: i dunno. dead bodies really gross me out. (sue ellen mischke enters with a man) \n\nelaine: oh my god. \n\nben: what's wrong? \n\nelaine: it's sue ellen mischke, this old braless friend i hate. (elaine tries to cover her face) \n\nsue ellen: elaine? hi. \n\nelaine: oh hi, sue ellen. \n\nsue ellen: oh rick, this is an old, old, friend of mine, elaine benes. rick is a periodontist. he does giuliani's gums. \n\nelaine: well, this is my boyfriend, doctor ben gelfen. \n\nben: well, i'm an intern. \n\nelaine: hey, stop kidding me. he's a doctor. he's a very good doctor. \n\nwoman: carlitto's just passed out. can anyone help? \n\nelaine: well, there's a doctor right here. \n\nben: no there's not. \n\nelaine: can't you at least tell him what to do? \n\nben: like what? \n\nsue ellen: shouldn't he elevate his legs? \n\nben: right. elevate your legs! \n\nelaine: i hope carlitto feels better. ben really wishes he could've helped. \n\nlarry: i thought he was a doctor. \n\nelaine: oh he is. kind of. i mean, i call him doctor. (she walks away and sees george sitting down reading books) george. (he holds up his hand to signal her to wait a second.) \n\ngeorge: of course. absolute zero! \n\nelaine: what? what is with all these books? \n\ngeorge: i stopped having sex. \n\nkramer: all right, i'll see ya bill. all right, i got room for two, but the only thing i have is in the non-filter section. (jerry enters) hey. \n\njerry: hey. wh-what'd you got, a smoker's lounge in there? \n\nkramer: oh yeah, people really seem to be enjoying themselves. you know, they come in once, it's like they're addicted. (katie enters) \n\nkatie: jerry, oh there you are. you didn't answer the phone. \n\njerry: i was out. \n\nkatie: oh. jerry, great news. i got you an assembly. \n\njerry: an assembly? \n\nkatie: two hours in front of the entire junior high, grades six through eight. that's six grade, seventh grade-- \n\njerry: i understand. but what am i gonna talk about for two hours? \n\nkatie: and, it is already in the school paper. they cancelled rick james. \n\njerry: superfreak? \n\nkatie: yes. \n\nelaine: what is your answer to number 74? \n\nben: medobolic acidosis. \n\nelaine: no! hypocalimia, not medibolic acidosis. duh! \n\nben: man, i'm never gonna pass this thing. \n\nelaine: oh yes you are. we'll just stop having sex. \n\ngeorge: guys, hitting is not about muscle. it's simple physics. calculate the velocity, v, in relation to the trajectory, t, in which g, gravity, of course remains a constant. (hits a home run) it's not complicated. \n\njeter: now who are you again? \n\ngeorge: george costanza, assistant to the traveling secretary. \n\nwilliams: are you the guy who put us in that ramada in milwaukee? \n\ngeorge: do you wanna talk about hotels, or do you wanna win some ball games? \n\njeter: we won the world series. \n\ngeorge: in six games. \n\njerry: ...so if you like to tell jokes, and love to make people laugh, stand-up comedy may be the career for you. \n\ngeorge: nine minutes. \n\njerry: how am i gonna fill two hours? \n\ngeorge: hello? i can take an hour off your hands. give the kids a chance to see a real live yankee. \n\njerry: and give you the chance to see some real disappointed kids. (waitress comes to table) \n\nwaitress: more coffee? \n\ngeorge: excuse me, darling, do i detect a portuguese accent? \n\nwaitress: si \n\ngeorge: das kaffes un salat e grand por favor. \n\nwaitress: mute pragalas senor \n\ngeorge: eh, don't mention it. \n\nelaine: portuguese? \n\ngeorge: yeah, my cleaning lady's portuguese. i must've picked it up. \n\nelaine: how come he's gettin' so smart? i stopped having sex with ben three days ago and i don't know no portuguese? \n\njerry: are you all right? \n\nelaine: i don't know. it's just the last coupla days my mind has been, not good. \n\njerry: wait a second, i know what's happening. the no sex thing is having a reverse effect on you. \n\nelaine: what? what are you talking about? \n\njerry: to a woman, sex is like the garbage man. you just take for granted the fact that any time you put some trash out on the street, a guy in a jumpsuit's gonna come along and pick it up. but now, it's like a garbage strike. the bags are piling up in your head. the sidewalk is blocked. nothing's getting through. you're stupid. \n\nelaine: i don't understand. \n\njerry: exactly. \n\nkramer: hey buddy. \n\njerry: hey. \n\nkramer: hey, you should come over. tonight's pipe night. \n\njerry: what? what happened to your face? it looks like an old catcher's mitt. \n\nkramer: what? (kramer checks it out.) my face is all craggly, it's crinkly. \n\njerry: it's from all that smoke. you've experienced a lifetime of smoking in 72 hours. what did you expect? \n\nkramer: emphysema, birth defects, cancer. but not this. jerry, my face is my livelihood. everything i have i owe to this face. \n\njerry: and your teeth, your teeth are all brown. \n\nkramer: look away, i'm hideous. \n\nelaine: hey, ben. i need a four letter word. winnie the blank. \n\nben: pooh! \n\nelaine: pooh...(laughing) \n\nben: no, it's winnie the pooh. \n\nlouise: so the hospital called, turns out some stupid intern screwed up my test. i never had mono. so we can... you know. \n\njerry: so what did you do? \n\ngeorge: i told her i would have to think about it. \n\njerry: but ultimately, you're gonna choose in favor of sex, right? \n\ngeorge: i don't know. perhaps i can better serve the world this way. \n\njerry: you mean, not subjecting yourself to your sexual advances. \n\ngeorge: simple joke from a simple man. \n\njerry: so you're never gonna have sex again? \n\ngeorge: well, jerry. there was a pretty good chance i was never gonna have sex again anyway. \n\njerry: so you ready for the assembly tomorrow? you know what you're gonna say about the yankees? \n\ngeorge: oh, sports are so pedestrian. i've prepared some science experiments that will illuminate the mind and dazzle the eye. \n\njerry: i wrote a 20 minute bit about how homework stinks. \n\njackie: my vacation was restful, splendid, magnificent. in fact, next time i'm plannin' on going to kofu. \n\njackie: oh no. \n\nkramer: jackie we gotta talk. \n\njackie: no way, kramer. you've brought nothing but a mountain of misfortune and humiliation. now get out. \n\nkramer: but jackie-- \n\njackie: i said out. \n\nkramer: jackie, i think i gotta case against the tobacco companies. \n\njackie: the who? \n\nkramer: the tobacco companies. \n\njackie: i've been wanting a piece of them for years. \n\njackie: did that cigarette warning label mention anything about damage to your appearance? \n\nkramer: no, it didn't say anything. \n\njackie: so you're a victim. now your face is shallow, unattractive, disgusting. \n\nkramer: so jackie, do you think we gotta case? \n\njackie: your face is my case. \n\njerry: how ya doin'? \n\nelaine: not good. i'm a moron. \n\njerry: well, don't worry about it. once he passes the test, you'll have sex again, and you'll be fine. \n\nelaine: well, that kinda brings us to why i'm here. you got eleven minutes? \n\njerry: what for? oh come on. \n\nelaine: i just wanna clear my head. it has nothing to do with you. \n\njerry: i think it has something to do with me. \n\nelaine: you could read the paper through the whole thing if you want. \n\njerry: (thinks about it for a second as to reconsider) no, no, no. i'm sorry, it's too weird. \n\nelaine: oh, all right. is kramer home? \n\ngeorge: you know, louise. i think you'll find this amusing. in early euclidean geometry-- \n\nlouise: george, i have to have sex. \n\ngeorge: i used to share that same outlook. but now, i have so many things to occupy my mind. for instance, the atom. \n\nlouise: goodbye, george. i hate you. (she leaves) \n\ngeorge: what a fascinating turn of events. (waitress approaches) \n\nwaitress: mas caf? \n\ngeorge: si, por favor. \n\njackie: miss wilkie, your tobacco company has turned this beautiful specimen, into a horrible twisted freak. \n\nkramer: who could love me? \n\nwilkie: i disagree. in fact, i feel mr. kramer projects a rugged masculinity. \n\njackie: rugged? the man's a goblin. he's only been exposed to smoke for four days. by the time this case gets to trial, he'll be nothing more than a shrunken head. \n\nwilkie: all right, mr. chiles. you'll have our offer by tomorrow. good day, gentlemen. (she exits) \n\nkramer: bye-bye. jackie, you did it. we're rich. \n\njackie: you better believe it. jackie's cashin' in on your wretched disfigurement. \n\nelaine: congratulations! you passed! \n\nben: elaine, elaine. i don't think we should see each other anymore. \n\nelaine: what? you're breaking up with me? but i sacrificed and supported you while you struggled. what about my dream of dating a doctor? \n\nben: i'm sorry, elaine. i always knew that after i became a doctor, i would dump whoever i was with and find someone better. that's the dream of becoming a doctor. \n\nelaine: look it, are we going to have sex, or not? \n\nkatie: okay, jerry, now when the glee club's finished singing, george goes on, then you. (george enters) \n\ngeorge: hey. \n\njerry: where have you been? you know, you're on next. \n\ngeorge: i got lost on the way over. \n\njerry: got lost? we went to school here for three years. \n\ngeorge: what are these? (holds test tubes to his head like antennae) take me to your leader. \n\njerry: oh my god. you had sex. you had sex with louise! \n\ngeorge: no, the portuguese waitress. \n\njerry: the portuguese waitress? \n\ngeorge: i calculated my odds of ever getting together with a portuguese waitress. mathematically, i had to do it, jerry. \n\nkatie: george, george, you're on. \n\ngeorge: no, no. i'm not going on. \n\njerry: then what'd you come down here for? \n\ngeorge: tell you about the portuguese waitress. \n\njerry: it's good to have you back. \n\nkatie: one of you has to go on. \n\njerry: all right, i'll do it. (goes on stage) hey kids. what's the deal with homework? you're not working on your home! (audience boos) \n\nkramer: it was a great lunch, jackie. thanks. \n\njackie: it's a little puzzling we haven't gotten that offer yet. \n\nkramer: mrs. wilkie, from the tobacco company called me. we had a little pow-wow. \n\njackie: a pow-wow? who told you to have a pow-wow? i didn't tell you to have pow-wow. \n\nkramer: she made an offer. i took it. \n\njackie: how much? \n\nkramer: no, no, no. there was no money. \n\njackie: no money? then what'd we get? \n\nkramer: check it out. (they see a marlboro man billboard with kramer on it) \n\njackie: this is the most public yet of my many humiliations. \n\njerry: cancelled? but i was supposed to be on tomorrow night. \n\nletterman: yeah, but then, you know, some people were telling me about that little flap out there at the junior high assembly. and before that, you were bumped by a lizard? \n\njerry: actually, it was a ********. \n\nletterman: those things, deadly dangerous. a long time ago my uncle and a date are driving, like, through mexico. they see one on the road, drags him out of the road, and chews his face off. listen, we'll call you if anything opens up. okay, jimmy? \n\njerry: jerry. \n\nletterman: right. jerry. \n\n[setting: jerry's apartment] \n\ngeorge: jerry! (slams the door) georgie's moving out! \n\njerry: (gets up) get out! \n\ngeorge: i'm out! fantastic apartment right across from mine, huh. i can't wait for you to see it. \n\njerry: (looks around his apartment) is it better than mine? \n\ngeorge: (definite) oh yeah. \n\njerry: so, it's a two-bedroom-one-bath-make-your-friends-hate-ya? \n\ngeorge: you know what? it's better than elaine's, too. i gotta give her a call. (moves tward the phone) \n\njerry: she's out. \n\ngeorge: (stops) oh right, the blind date. \n\njerry: yeah, well, they like to call it a set-up now. i guess the blind people don't like being associated with all those losers. \n\ngeorge: come on. come check out my new place. it'll take you two minutes. \n\njerry: i can't. i'm meeting kramer down at my mini-storage. \n\ngeorge: (gloating) hey, you got any extra furniture down there? i need some more stuff to fill that extra bedroom with the walk-in closet. (smiles) \n\njerry: (grabs his coat) oh, this is really annoying. \n\ngeorge: (laughs as they leave) it's working already! (both exit) \n\n[setting: manhattan mini-storage] \n\njerry: (disgusted) what is with that?! \n\nkramer: well, it's coughing, jerry. it expells the diseased germs out of the body, into the air. (makes a guesture of germs being in the air) \n\njerry: (takes out his key to unlock the unit door) where is your key? \n\nkramer: yeah, well, uh, newman. he's - he's got it. \n\njerry: you know, kramer, i rented out half of my space to you. \n\nkramer: yeah, and i rented out half that space to newman. (starts coughing again) \n\njerry: (picks one up) mail bags? he's storing mail in here? \n\nkramer: (looks at the bags on the floor) evidently. \n\n[setting: george's new apartment] \n\nricardi: excuse me, george? (h1) \n\ngeorge: (looks at her) yeah, uh, no menus. (waves her off) \n\nricardi: (moves into the apartment, hand out) no, i'm mrs. ricardi - president of the tenant's association. \n\ngeorge: oh, right! (shakes her hand) right! hey, hey.. i love the floors in here. it's like a gymnasium in here! try and guard me! (dribbles an imaginary ball \n\nricardi: no, no.. (laughs nervously) uh, george, unfortunately, clarance eldridge in 8c has decided that he wants the apartment. \n\ngeorge: (let down) yeah, but you - you promised it to me. \n\nricardi: yes, but, you see - mister eldridge is an andrea doria survivor. and, in light of the terrible suffering that he's already been through, we've decided to give it to him. \n\ngeorge: (depressed) well,.. the andrea doria.. that was quite a fire. (moves to the door, leaving) \n\nricardi: (correcting) shipwreck. \n\ngeorge: i remember.. (leaves) \n\n[setting: restaurant] \n\nelaine: where is this guy?! (checks her watch) i hate this! (sighs) i shoulda brought something to read.. (picks up a sugar packet) \"cancer in labratory animals\".. huh. \n\nwaiter: excuse me, elaine benes? \n\nelaine: yeah? \n\nwaiter: an alan mercer called for you. he said he's sorry, but he won't be able to make it tonight. (pause) he's been stabbed. \n\nelaine: (shocked) stabbed?! \n\nwaiter: more bread? \n\n[setting: jerry's apartment] \n\njerry: (talking to elaine) you ate more bread? \n\nelaine: that is not the point! the guy was stabbed! \n\njerry: did you find out who stabbed him? \n\nelaine: yeah, (nodding) it turns out it was his ex-girlfriend. \n\njerry: (like a father) well, you're not going near this hooligan anymore. \n\nelaine: well, i don't know.. i mean, think about it, jerry. there must be something exciting about this guy if he can arouse that kind of passion. (obviously turned on by the stabbing) i mean, to be stab-worthy.. you know, it's.. kind of a compliment. \n\njerry: (sarcastic) yeah, too bad he didn't get shot. he could have been the one. \n\nkramer: (coughs) hey. how's everybody? (moves to the kitchen) \n\njerry and elaine: hey. \n\nkramer: ehh.. (picks up a carton of food) no expiration date on this.. (opens it, then starts coughing directly onto the food) \n\njerry: there is now. kramer, you should really get that cough checked out by a doctor. \n\nkramer: (shrugging it off) nah, no, no, no. no doctors for me. a bunch of lackeys and yes-men all towing the company line.. (looks at jerry, then leans in so elaine can't hear) plus, the botched my vasectimy. \n\njerry: (in awe. whispering) the botched it? \n\nkramer: (complaining) i'm even more potent now! \n\ngeorge: hey. \n\njerry: hey. how's the new place?! \n\ngeorge: gone. (moves over to a chair in the living room. kramer takes the carton of food to the table, and begins eating) the tenant association made me give it to this guy because he was an andrea doria survivor.. \n\nelaine: andrea doria? isn't that the one they did the song about? \n\njerry: (correcting her) edmund fitzgerald. \n\nelane: i love edmund fitzgerald's voice. \n\njerry: (gives elaine a look) no, gordon lightfoot was the singer. edmund fitzgerald was the ship. \n\ngeorge: (talking about his would-be apartment) you could fit 15 people in that bathroom.. \n\nelaine: i think gordon lightfoot was the boat. \n\njerry: (sarcastic) yeah, and it was rammed by the cat stevens. \n\nkramer: (like a teacher) the andrea doria collided with the stockholm in dense fog 21 miles off the coast of nantucket. (makes a clicking sound with his tongue) \n\ngeorge: how do you know? \n\nkramer: it's in my book - \"astonishing tales of the sea\" 51 people died. \n\ngeorge: 51 people?! that's it?! i thought it was, like, a thousand! \n\nkramer: there were 1,650 survivors. \n\ngeorge: that's no tragedy! how many people do you lose on a normal cruse? 30? 40?! kramer, can i take a look at that book? (starts walking tward the door. kramer grabs his food, and follows) \n\nkramer: oh yeah. i also got \"astounding bear attacks\" \n\njerry: hey, uh, before you go, did you talk to newman about getting that mail outta there? \n\nkramer: yeah, oh, yeah. yeah, he's not gonna do it. (leaves) \n\n[setting: newman's apartment] \n\njerry: newman? \n\nnewman: (eyes glued to the tv) i guess. \n\njerry: listen, i want you to get the mail outta my storage unit. \n\nnewman: sometimes we don't get what we want. \n\njerry: (confused) what are you talking about? \n\nnewman: i didn't get my transfer. \n\njerry: \"transfer\"? \n\nnewman: to hawaii. the most sought-after postal route of them all. the air is so dewy-sweet you don't even have to like the stamps.. but it's not to be - so, i'm hanging it up. \n\njerry: you quit the post office? \n\nnewman: kind of. i'm still collecting checks, i'm just not delivering mail. \n\njerry: well, get it out of my storage. it's illegal. \n\nnewman: and yet, it's perfectly legal to take a man's soul and crush it out like a stale pall mall. \n\njerry: (cheerfully) well, a law's a law. (leaves) \n\n[setting: central park] \n\nkramer: ok, hold on there.. that's a nasty cough you got there, huh? \n\nman: what cough? \n\n[setting: restaurant] \n\nelaine: i love shrimp! (waves her knife around as she's talking) i'm a shrimp eater. you put shrimp infront of me, (waves her knife along with her hand gestures. alan is getting edgy about it, and even more so with every wave) and i will eat it until my stomach pops! (notices alan's unsettled) oh.. (puts the knife down) \n\nalan: no, it's okay. i'm.. still just a little bit jumpy. \n\nelaine: (leans in close) between you and me, what happened there with the stabbing? \n\nalan: just.. one of those things, you know. \n\nelaine: what? was she just so crazy in love with you that she just couldn't take it anymore? or..? \n\nalan: i don't know. could be. \n\ncarol: alan?! \n\nalan: carol? \n\nelaine: (gets up, pointing after carol) was that the one?! was that the one who stabbed you?! \n\nalan: (between screams) no, that was a different girl. \n\n[setting: coffee shop] \n\njerry: there was another crazed ex-girlfriend? \n\nelaine: right, so, i called my friend, you know - the one who set us up - i found out, he's a bad-breaker-upper. \n\njerry: mmm.. bad how? \n\nelaine: (fast) well, you know when you break up, how you say things you don't mean? well, he says the mean things you don't mean, but he means them. \n\njerry: (nods) i follow. so what are you gonna do? \n\nelaine: dump him. i can't be with someone who doesn't break up nicely. i mean, to me, that's one of the most important parts of a relationship. \n\njerry: (agreeing) what's more important? \n\n[setting: nyc street] \n\nkramer: (between coughs) hey. \n\ngeorge: what's with the dog? \n\nkramer: (petting smuckers) yeah, this is smuckers. i borrowed him. (starts coughing) \n\ngeorge: oh.. \n\nkramer: (pointing at the dog) yeah, we share the same affliction, so i'm gonna have a vet check us out. \n\ngeorge: a vet? \n\nkramer: oh, i'll take a vet over an m.d. any day. they gotta be able to cure a (snaps his fingers in rhythm with his words) lizard, a chicken, a pig, a frog (stops snapping) - all on the same day. \n\ngeorge: so, if i may jump ahead - you're gonna take dog medicine? \n\nkramer: (smiling) you bet we are! huh, smuckers? (smuckers coughs. they turn to leave) i'll see ya. \n\n[setting: george's apartment building] \n\ngeorge: ahoy! mr. eldridge. i understand you were on the andrea doria. \n\neldridge: yes, it was a terrifying ordeal. \n\ngeorge: i tell ya, i hear people really stuff themselves on those cruise ships. (laughs) the buffet, that's the real ordeal, huh, clarence? (laughs) \n\neldridge: (defensively) we had to abandon ship. \n\ngeorge: well, all vacations have to end eventually. \n\neldridge: the boat sank. \n\ngeorge: (holding up kramer's book) according to this, it took.. 10 hours. it eased into the water like an old man into a nice warm bath - no offence. (pause) so, uh, clarence, how about abandoning this apartment, and letting me shove off in this beauty? \n\neldridge: is that what this is all about?! i don't think i like you. (enters his apartment, and slams the door behind him) \n\ngeorge: (yelling out) it's my apartment, eldridge! the stalkholm may not have sunk ya, but i will! ha, ha, ha! \n\n[setting: vet's office] \n\nvet: what are the symptoms? \n\nkramer: well, uh.. it hurts when he swallows. expecially when he drinks orange juice. (vet gives him a look) i mean, uh.. dog food.. juice. (adding) what's worse - he has a nagging cough. (smucker's coughs) yeah, that's it. that's it. \n\nvet: yeah, well, uh - we've been seeing a lot of this lately. been drinking from the toilet? \n\nkramer: (offended) what? no. that's disgusting.. \n\n[setting: coffee shop] \n\nalan: so that's it? we're, uh, we're breakin' up? \n\nelaine: (confused by his sudden change-of-heart) what? break-up? we went out on one date. \n\nalan: (fast) ok, yeah, sure, fine, right. whatever you say. \n\nelaine: (shows no sign that she cares) alright, good. good. \n\nalan: ok, then, well, so.. see ya around.. big head. (gets up to leave) \n\nelaine: pardon? \n\nalan: you got a big head. it's too big for your body. (walks for the door) \n\nelaine: (laughing out loud) that's it?! (laughs again) that's the best you got?! (laughs loudly as alan exits) \n\n[setting: jerry's apartment] \n\ngeorge: so, he's keeping the apartment. he doesn't deserve it, though! even if he did suffer, that was, like, 40 years ago! what has he been doing lately?! i've been suffering for the past 30 years up to and including yesterday! \n\njerry: you know, if this tenant board is so impressed with suffering, maybe you should tell them the \"astonishing tales of costanza\". \n\ngeorge: (interested) i should! \n\njerry: i mean, your body of work in this field is unparalleled. \n\ngeorge: i could go bumper to bumper with any one else on this planet! \n\njerry: you're the man! \n\nnewman: jerry! \n\njerry: i'm with people, i'll be with you in a moment. (slams the door on newman's face. then tries to delay talking to newman by keeping the conversation with george going) so, you want a protein shake, or something? \n\ngeorge: nah, i guess i should really get moving on this, huh? i'm gonna go. (opens the door, letting newman in. leaves) \n\njerry: (angered) hello.. newman. \n\nnewman: (urgent) i need that mail, where is it?! \n\njerry: what's the difference? \n\nnewman: the guy who had the hawaii transfer got busted for hoarding victoria secret catalogues. i gotta deliver that mail! \n\njerry: well, go ahead. there's 8 bags of it. \n\nnewman: blast! there's no way i can handle 8 in addition to my ususal load of one! i'll never get to hawaii! (moves over to jerry's couch, depressed) i'll be stuck in this apartment building forever! (lays down on jerry's couch) the dream is dead. \n\njerry: you're giving up that easy? \n\nnewman: i usually do. (gets up to leave) see ya. \n\njerry: (stopping him) no, wait a minute, newman! you can't let this dream die. you moving away is my dream too! \n\nnewman: (intrigued) what are you proposing? \n\njerry: (fast) whatever it takes, for as long as it takes me, where ever it takes me as long as it takes you away from me! \n\nnewman: an alliance? \n\njerry: (confirming) an alliance. (they both shake hands and laugh evily) now get the hell outta here. (newman leaves) \n\n[setting: jerry's apartment] \n\nelaine: hawaii? that's why you're helping newman with the mail? \n\njerry: (like an army general) elaine, newman is my sworn enemy. and he lives down the hall from my home - my home, elaine! where i sleep, where i come to play with my toys. \n\nelaine: well, anyway, get this i spoke to alan. you know, i told him i didn't want to see him anymore.. he called me \"big head\". \n\njerry: \"big head\" (scoffs) that's almost a compliment. \n\nelaine: (agreeing) it's one of the nicest things anyone's ever said to me. \n\njerry: hello? \n\ngeorge: (on the other line) hey. \n\njerry: hey, george. \n\ngeorge: yeah, listen, i can't make it later. \n\njerry: you can't make it? \n\ngeorge: yeah, the tenant association has decided to hear my side of the story. so, uh, i gotta kinda get ready. i'll see ya. \n\njerry: alright. (hangs up) \n\nelaine: is he not gonna go to the coffee shop? \n\njerry: (saddened) doesn't look like it's gonna happen. \n\nelaine: (gives a \"that's a shame\" face) alright, well, i'll see ya. (opens the door to exit. kramer enters coughing. elaine does her best to dodge out of the way of kramer's coughs, then walks off) \n\njerry: kramer, aren't you taking any medication for that? \n\nkramer: yeah, yeah. (pulls a bottle out of his pocket) i got some pilss. they taste terrible. \n\njerry: (takes the bottle from him) just swallow 'em. \n\nkramer: (gestures to his throat) no, my throat's too tender. \n\njerry: alright, sit down, sit down. (grabs a pill from the bottle, and starts advancing tward kramer - like an owner with his dog) \n\nkramer: i don't want to! \n\njerry: c'mon. just sit down! \n\nkramer: (squirming) jerry! what?! \n\njerry: sit down! sit down! \n\nkramer: (struggling) hey! \n\njerry: lean your head back. open your mouth! (grabs kramer's head) open your mouth! open it! open it! \n\njerry: (reads the pill bottle) what kind of pills are these, anyways?! \"for smuckers\"? \"may cause panting and loss of fur\"? (turns to kramer) these are dog pills! \n\nkramer: whe have the same symptoms. \n\njerry: but, he's a dog! you need to see a real doctor. \n\nkramer: no, no. no doctors. \n\njerry: alright.. (heads for the door, grabbing his coat) \n\nkramer: where are you going? \n\njerry: i'm taking the car. i gotta run some errands. you want to go? \n\nkramer: i don't know.. \n\njerry: (opens the door) c'mon, you wanna go for a ride? (starts jiggling his keys - as if he's calling out for a dog) huh? c'mon! c'mon! \n\n[setting: taxi cab] \n\ndriver: lady, could you move your head a little bit? \n\nelaine: what? \n\ndriver: your head. i can't see out the back. (elaine slumps down in her seat) little more.. (elaine slumps lower) ..little more. (slides down until just her eyes and forehead can be seen) thank you. \n\n[setting: jerry's car] \n\nkramer: i don't see any tissues back her.. (looks out the windows) wait a minute!.. (jerry looks like he's trying to keep something from kramer) this isn't the way to the park! (starts getting even more energetic) where are we going?.. i recognize this block! (looks at jerry, scared) you're taking me to the doctor! \n\n[setting: coffee shop] \n\ngeorge: so, uh, mom, dad, i was hoping that you could help me to remember my childhood a little clearly.. \n\nestelle: i feel a draft. (grabs the bread basket and her drink) let's change tables. \n\nfrank: get outta here! we have a booth. \n\nestelle: frank, i'm cold! \n\nfrank: order a hot dish. \n\nestelle: why can't we sit over there? (points to a table) \n\nfrank: (yelling) that's not a booth! \n\nestelle: (trying to match frank's loudness) so, who says we have to sit in a booth?! \n\nfrank: (loud shouting) i didn't take the subway all the way to new york to sit at a table like that! (gestures to the table) \n\nestelle: (nagging yell) well, i didn't take the subway to be in a drafty restaurant! \n\ngeorge: (pleading for them to stop) mom.. dad. \n\nfrank: now, george, what do you want to know about your childhood? \n\ngeorge: (fed up with his parents) actually, i think i'm pretty clear on it. \n\nfrank: (looks up) where's that breeze coming from? \n\n[setting: nyc street] \n\njerry: kramer, outta the car. out, now! \n\nkramer: no, jerry! \n\njerry: alright, that's it.. (grabs kramer, trying to pull him out of the car) \n\nkramer: no! don't! \n\njerry: hey, hey! get back over here! kramer! get over here! you are bad! bad neighbor! kramer! \n\n[setting: tenant board room] \n\neldridge: just then, a rescue ship emerged from the fog and saved us. it was.. (stops, then gives george a look. george stops knocking on the walls) it was the sweetest sight my eyes ever saw. \n\nricardi: (touched) thank you mr. eldridge. the tenant board will now hear mr. costanza's testimony. \n\n[setting: newman's apartment] \n\njerry: newman, how'd it go? did you get it all delivered? (sees the pac) what happened? \n\nnewman: kramer bit me! \n\njerry: bit you?! \n\nnewman: we had an arguement about me going to hawaii, and he locked onto my ankle like it was a soup bone. i'm hubbled! i don't think i can do my route - and they're awarding the transfer in two days! \n\njerry: (bravely) well, what if i deliver it? \n\nnewman: you?! (laughs hysterically) you can't deliver mail! \n\njerry: well, why not? \n\nnewman: (thinks for a moment) i guess you're right. it's just walking around putting it into boxes.. \n\njerry: what am i gonna wear? \n\nnewman: i could give you my uniform from my rookie year. \n\njerry: (excited) i can't believe i'm gonna be a mailman! \n\njerry: (hands him some mail) there you go. merry chirstmas! \n\nowner: mail on sunday? \n\njerry: (shrugs) oops. (continues walking along the route, whistling. hands a newspaper to a homeless bum on the street, then keeps walking) \n\n[setting: tenant board room] \n\ngeorge: i was handcuffed to the bed.. in my underwear, (sighs) where i remained.. (scene cuts to another story) she was attractive.. she was, also, infact, a nazi.. (cuts to another story) the water.. that i had been swiming in was.. very cold. and, when i dropped the towel, there was.. significant shrinkage.. (scene cuts to, yet, another story) her parents were looking at me.. so, there i was, with a marble rye hanging from the end of a fishing pole.. (scene cuts to his closing statements) in closing, these stories have not been embellished, because - they need no embellishment. they are simply, horrifyingly, the story of my life as a short, stocky, slow witted bald man. (gets up) thank you. (every memeber of the board shows some sign that george's story is most deserving of the apartment. ricardi is crying. george turns to leave, then remembers one more thing..) oh, also.. my fiance died from licking toxic envelopes that i picked out. (sobs and loud crying erupts from the board members) thanks again. (leaves. eldridge looks defeated) \n\n[setting: newman's apartment] \n\njerry: hey, i've been trying to jam stuff in the box, like you told me, but sometimes it says, like, \"photographs - do not bend\". \n\nnewman: \"do not bend\". (laughs evilly) just crease, crumple, cram.. you'll do fine. (phone rings. newman answers it) hello?.. this is he. i don't understand.. very well. (hangs up in disappointment) \n\njerry: what? \n\nnewman: that was the vice president of the post office. i didn't get the transfer.. they knew it wasn't me doing my route! \n\njerry: how did they know?! \n\nnewman: (stands up) too many people go their mail! close to 80%. no body from the post office has ever cracked the 50% barrier! it's like the 3-minute mile! \n\njerry: (pleading) i tried my best! \n\nnewman: exactly. you're a disgrace to the uniform. (newman takes off jerry's mailman hat. jerry turns his head in shame. newman then tears the post office badge from jerry's coat) \n\njerry: you know, this is your coat. \n\nnewman: (realizing) damn! \n\n[setting: central park] \n\nman 2: he flew right into your head. like he couldn't avoid it. \n\nelaine: (rubbing her head to relieve the pain) really? \n\nman 2: never seen that before. bird into a woman's head.. \n\n[setting: coffee shop] \n\ngeorge: it's not contest. the guy had nothing! the ship went down, he got into a life boat, i mean, come on. \n\njerry: boy, he didn't know what he was up against. (george laughs) so, when do you move into the apartment? \n\ngeorge: they're making their decision today. \n\njerry: what's the matter with you? \n\nelaine: nothing.. except that a bird ran into my giant freak-head. (sits down) \n\njerry: what giant freak-head? \n\nelaine: (annoyed, near tears) the one that sits atop my disproportunately puny body.. i'm a walking candy apple! \n\njerry: so, it's actually gotten to you? you're playing right into his hands! \n\nelaine: (realizing) what? yeah.. you're right!.. all i have to do is call him up, and sit with him, and show him that it doesn't bother me. you know, laugh it off.. or jam a fork into his forehead. \n\njerry: (casually, sarcastic) either way. \n\nelaine: (getting up to leave) alright. \n\n[setting: restaurant] \n\nalan: i want to apologize for.. \n\nelaine: (shrugging it off) oh, please. \n\nalan: so you have a big head. \n\nelaine: (casually playing along) so what? \n\nalan: it goes well with that bump in your nose. \n\nelaine: (suddenly angry) what?! \n\nwoman: please! get help! there's a crazy big-headed woman beating up some guy! tell the police \"the old mill restaurant\". hurry! \n\ncop: boy, that's some cough you got there. \n\ncop 2: no, i think he's trying to tell us something. what is it? (between coughs, kramer manages to say the word \"trouble\") trouble?! trouble? where? where's trouble? (kramer coughs out the words \"old mill\") trouble at the old mill?! oh my god! good boy, good boy! lead the way! come on. \n\n[setting: george's apartment building] \n\ngeorge: excuse me, uh, what are you doing in there? \n\nalan: i'm moving in. alan mercer. new neighbor. (they shake hands) \n\ngeorge: what? elaine's big-head guy? they have you the apartment?! \n\nalan: yeah. \n\ngeorge: why?! because you were stabbed, and.. got coffee thrown in your face, and.. uh.. (points to alan's bandaged forehead) \n\nalan: oh, fork in the forehead. \n\ngeorge: that's why they gave you the apartment? \n\nalan: no, i just gave the super 50 bucks. \n\ngeorge: wait a minute, that is my apartment. i earned it with 34 years of misery! \n\nalan: tough luck, chinless. (goes into his new apartment, and slams the door on george) \n\njerry: so what happened to you yesterday? we were supposed to go to the auto show, i waited for you, you never came. \n\nelaine: i'm sorry, i got really busy. how long did you wait? \n\njerry: five minutes. \n\nelaine: five minutes? that's it? \n\njerry: what's the difference? you never showed up. \n\nelaine: i could've! i mean, last week we waited for that friend of kramer's for like, forty minutes. \n\njerry: well, we barely knew the guy. \n\nelaine: so, the longer you know someone, the shorter you wait for 'em. \n\njerry: that's the way it works. \n\nelaine: when did you tell george to be here? \n\njerry: i told him to meet us here in ten minutes. how long has it been? \n\nelaine: about five. \n\njerry: that's enough. (they leave. george comes around the corner.) \n\ngeorge (looks at his watch): early! alright! (shivers.) cold. \n\nkramer: so, i noticed you bounced a check at the bodega. \n\njerry: how did you know about that? \n\nkramer: because marcelino, he taped it up on his cash register with all the other bad checks. \n\njerry: he can't do that. \n\nkramer (sternly): it's the only way you'll learn. (tastes his eggs.) aw, these eggs are disgusting. this chicken should be ashamed of himself. \n\ngeorge: fantastic day! fantastic! \n\njerry: what happened? \n\ngeorge: (laughs - hehe) well, first, i'm brushing my teeth and this piece of apple-skin, that must have been lodged in there for days, comes loose. \n\njerry: fantastic. \n\ngeorge: then, i'm at the foundation... \n\njerry: you're still doing that? \n\ngeorge: sometimes, once in a while. \n\njerry: when you feel guilty. \n\ngeorge: no, occasionally i'll forget to let the machine pick up. anyway, they made this large donation, to a women's prison, and i get to go down there and check it out. \n\nkramer: that's caged heat. \n\ngeorge: yeah-hah! \n\njerry: what are you gonna do there? \n\ngeorge: nothing really, you know...just eh, stroll around the cell blocks, maybe eh, take in a shower fight. (chuckles.) hey eh, you know you got a bounced check hanging up in the little market over on columbus? \n\njerry: yes, i know, i know. \n\ngeorge: i noticed you eh, chose the eh \"clowns with balloons\" check design. \n\njerry: it was a mistake, the bank sent me the wrong ones. \n\nelaine: hey! look who's here! hey kurt, this is jerry, and george, and kramer. \n\nkramer: hey, kurt. taste these eggs. \n\nkurt: uh, no - i only eat cage-free, farm-fresh. \n\nkramer: yes! these are sweatshop eggs. \n\nkurt (to elaine): ah, i gotta call the office. honey, will you order for me? \n\nelaine (sitting down): i'm a \"honey.\" he's pretty great, huh? \n\njerry: is he from the future? \n\nelaine: no, he just shaves his head. i think it's pretty gutsy. \n\ngeorge: listen, sweetheart, let me tell you a little something about guts. (points to his head.) this is guts. \n\nelaine: what? clinging to some scraps? \n\ngeorge: these are not \"scraps.\" these are historic remains of a once great society of hair. \n\nelaine: oh, did you guys stop at the bodega today? some moron bounced a clown check! \n\n[the bodega, starts with a shot of marcelino's cash register with jerry's clown check attached under a sign that reads \"checks no longer accepted from: \".] \n\ncheck #1246, dated dec. 15 96, made out to: columbus deli for $40.00 \n\njerry: again, i'm really sorry about the check, marcelino. \n\nmarcelino: people seem to like the clowns. \n\njerry (takes out his wallet): look, let me just give you the forty, plus another twenty for your trouble. \n\nmarcelino: 'kay. \n\njerry (turning to leave): aren't you going to take the check down? \n\nmarcelino: sorry, no. it's store policy. \n\njerry: but it's your bodega. \n\nmarcelino: even i am not above the policy. \n\nbetsy: those are our tennis courts. \n\ngeorge: tennis courts? w-w-what about the yard? where do they have the gang fights? \n\nbetsy: there's no fights here, mr. costanza. this is a minimum security facility. \n\ngeorge: hmm. what about a hole? you ever put anybody in \"the box\"? \n\nbetsy: no. \n\ngeorge (to himself): this prison stinks. \n\nbetsy: and finally, the library, which has just been refurbished thanks to your generous donation. this is celia morgan, our librarian. \n\ncelia: nice to meet you. \n\nbetsy: i'll be in my office if you need me. \n\ngeorge: thanks, warden. \n\nbetsy (sweetly): betsy. \n\ngeorge (disappointed): betsy. \n\ncelia: so, are you the head of the foundation? \n\ngeorge: well, let's just say it wouldn't exist without me. (notices another person in the library dressed the same as celia.) so you two uh, shop at the same store, (hu)? \n\ncelia: no, it's standard issue. \n\ngeorge: oh my god...you're in jail? (celia nods.) that is so cool! \n\njerry: you asked her out? \n\ngeorge: well...not \"out.\" she's a prisoner. \n\njerry: how could you ask her out? \n\ngeorge: why not? \n\njerry: i remember when you wouldn't date that girl who lived in queens because you didn't want to go over the bridge! \n\ngeorge: that was different! \n\njerry: i'll say. \n\ngeorge: jerry, i like being with her. plus, i know where she is all the time. i have relatively no competition. an-and you know how you live in fear of the pop-in? \n\njerry (shudders): the pop-in. \n\ngeorge: yeah, no pop-in, no \"in the neighborhood,\" no \"i saw your light was on.\" and the best part is, if things go really well... \n\njerry: conjugal visit? \n\ngeorge (giddy): don't jinx it! don't jinx (trails off quietly in elation) \n\nkramer: hey. \n\ngeorge: hey. \n\nkramer: what's up? \n\njerry: george is dating a convict. \n\nkramer: oh? what's she in for? (putting groceries in the fridge) \n\ngeorge: embezzlement. \n\nkramer (approvingly): sounds like a nice girl. hey jerry, is it all right if i put some stuff in your fridge? 'cause mine's full. \n\njerry: yeah, sure. you don't even have a fridge, do you? \n\nkramer: well, not here. \n\nkramer: okay (lifting the bag and carrying it into the apt.) \n\njerry: kramer, kramer, wait a minute, what the hell is that? \n\nkramer: well, it's chicken feed. (slams the bag into jerry's fridge.) \n\njerry: i sense something is afoot. \n\nkramer: yeah, i bought a chicken. \n\ngeorge: allow me. why? \n\nkramer: cage-free, farm-fresh eggs. \n\njerry: allow me. what are you, an idiot? \n\nkramer: no (throws hand in the air and turns and looks back at jerry) \n\nkurt: hold it, hold it, hold it, here, i got it. catch. (tosses his wallet to elaine, she pays the delivery guy.) \n\nelaine: hm. (looking at kurt's driver's license photo) hey, driver's license. oh...my god. \n\nkurt: what? \n\nelaine: your hair. it's so thick and lustrous. i mean, it...it was. \n\nkurt: well, it still is. i shave my head for my swim team. i just liked the way it looked, so i kept it. \n\nelaine: are you saying that i could be dating this hair? i mean wi..with you under it? (kurt shrugs.) \n\njerry: (sits up in bed) oh what... \n\nkramer: hey. \n\njerry: is that your \"chicken\" making all that noise? \n\nkramer: oh, jerry loves the morning. \n\njerry: who? \n\nkramer: little jerry seinfeld. i named my chicken after you. \n\njerry: thanks, that's very sweet, but that is not, a chicken. \n\nkramer: of course it is. i picked it out myself. \n\njerry: well, you picked out a rooster. \n\nkramer: well, that would explain little jerry's poor egg production. \n\ncelia: this was fun. \n\ngeorge: yeah. i had a great time. \n\nguard: five minutes, mr. costanza. \n\ngeorge: the whole hour just flew by. (laughs - hehe) (begins cleaning up the table.) \n\nguard: i'll get that. \n\ngeorge: oh, thanks, bobby. (to celia) well, i guess i'll see you in four days. \n\ncelia: yeah. go out and have a ball with the guys. i'll be waiting right here for you. \n\ngeorge: of course you will. (quick chuckle). you're the best. (with a light fist motion across her chin) \n\ncelia: hmm \n\njerry: hello? \n\nhelen (in florida with morty): jerry? leo told us he saw your bounced check. are you having money problems? \n\njerry: i'm not having money problems. \n\nhelen: enough with the comedy! you're very clever, you should look into advertising. \n\nmorty: he never even called ed roydlick. they were looking for someone! \n\njerry: i'm not calling ed roydlick. i'm doing fine! \n\nhelen: that's it. i'm gonna to send you fifty dollars. \n\njerry: you are not sending me fifty dollars! \n\nhelen: we're sending you fifty dollars! morty, get me an envelope. \n\njerry (angrily): i swear to god, if you send me fifty dollars, you are gonna be so sorry! \n\nmorty: i don't see envelopes! \n\nhelen: they're right in front of you! oh, for heaven's sakes... (she puts the phone down on the couch and goes to help morty.) show you... \n\njerry: ma! ma! maaa! (hangs up the phone in disgust.) oh, ahhhh (sighs quietly) \n\ngeorge: how're the folks? \n\njerry: good. \n\ngeorge: so? movie tonight? \n\njerry: i thought you were going out with celia? \n\ngeorge: i did. i'm back. i love this relationship, i feel so liberated! \n\njerry: having her in jail. \n\ngeorge: the only thing that bothers me is that i'm just coming up with this now. \n\njerry: yeah, dating a convicted felon. i don't know how you missed it. \n\nelaine: here. (shows kurt's driver's license to jerry.) take a look at that. \n\njerry: huh. kurt's an organ donor. \n\nelaine: no! he's not bald. look! he's got a full head of hair. \n\njerry: so he just shaves his head for no reason? \n\ngeorge: that's like using a wheelchair for the fun of it! \n\nelaine: and he's growing it in just for me. (happily) it's mine. it's all mine. (clutches the photo between her hands and to her chest then looks at it again) \n\njerry: it's just hair. \n\nelaine: it's not just hair! look! \n\njerry: it's brown. \n\nelaine: it's chestnut with auburn highlights! \n\njerry: so? \n\nelaine: you're not around women. you don't know how important a man's hair is. \n\nelaine: i'm sorry, george, but it's true. \n\ngeorge (close to tears): i knew it. \n\nmarcelino: hey, kramer. \n\nkramer: yeah (quietly) \n\nmarcelino: nice rooster. \n\nkramer: yeah (again quietly) \n\nmarcelino: what's his name? \n\nkramer: ah, well, this is little jerry seinfeld. \n\nmarcelino: little jerry seinfeld. does he bounce checks? (laughs) \n\nkramer: look, can't you take jerry's check down? \n\nmarcelino: sorry kramer, can't help you. \n\nkramer: hey, hey jerry, come on. sorry. \n\nmarcelino (impressed): i like the way he handles himself. \n\nkramer: oh yeah (quietly) \n\nelaine: ohhh, it's coming in already! \n\nkurt: yeah (quietly) \n\nelaine: wow, you have some very nice little seedlings here. huh... \n\nkurt: what? \n\nelaine: well, it doesn't seem to be coming in so good over here. or here. \n\nkurt: what do you mean? (goes into the bedroom to look in the mirror.) \n\nelaine: well, i don't know... h- how long have you been shaving your head for? \n\nkurt (from the bedroom): about three years. \n\nelaine: huh. \n\nkurt: oh my god! (steps into the doorway) i'm going bald! \n\ncelia: george! i'm so glad to see you! \n\ngeorge: hey, i brought you some cigarettes. you buy yourself something nice. \n\ncelia: good news - i'm up for parole. \n\ngeorge: parole! (feigning joy) that's dynamite! \n\njerry: so marcelino's going to take down the check? \n\nkramer: yeah, well, it comes down if little jerry seinfeld wins the cockfight. \n\njerry: great! (realizing) what? \n\nkramer: well, marcelino, he has cockfights in the back of his store. \n\njerry: ah ha... \n\nkramer: yeah, so he says if little jerry seinfeld wins, the check comes down. \n\njerry: kramer, cockfighting is illegal. \n\nkramer: only in the united states. \n\njerry: it's inhumane! \n\nkramer: no, jerry, it's not what you think it is. \n\njerry: it's two roosters peckin' at each other! \n\nkramer: what? \n\njerry: yeah! \n\nkramer: well, i thought they wore gloves and helmets, you know, like \"american gladiators.\" \n\njerry: no kramer, little jerry could get hurt. \n\nkramer: yeah, well, i left him with marcelino! \n\nkramer: my little jerry! (runs out.) \n\njerry: hey, did you get little jerry, is he o.k.? \n\nkramer: oh well, he's more than o.k., he won! \n\njerry: you let him fight? \n\nkramer: yeah, well i couldn't get there in time to stop it, but you should have seen little jerry, jerry! flappin' his wings and struttin' his stuff! he was peckin' and weavin' and bobbin' and talkin' trash! he didn't even have to touch him! the other rooster ran out of the ring. the whole fight lasted two seconds. \n\njerry: how long do they usually last? \n\nkramer: five seconds. and marcelino says he's taking your check down today. \n\njerry: great! \n\nkramer: hey. \n\ngeorge: celia's up for parole. \n\nkramer: hey, little jerry won his cockfight. \n\ngeorge: what? \n\nkramer: who? \n\njerry: i'm too tired. \n\nkramer (to jerry): o.k., listen, i want you to come by later, alright? 'cause we're having a victory party for little jerry. \n\njerry: o.k. (kramer leaves.) \n\ngeorge (sadly): it's over, jerry. she's gettin' out. \n\njerry: ah, i'm so sorry. \n\ngeorge: she's been locked up for two years. she's gonna want to make up for lost time. dinners. movies. (rubs his forehead.) talking... \n\njerry: in other words, a normal relationship. \n\ngeorge: heh, haa. and that's no good. i've tried it straight, jerry. we've all seen the results. for me, sick is the only way to go. \n\njerry: well, she'll still be an ex-con. \n\ngeorge: it's not the same. \n\njerry: hey, if you two are meant to be together...i'm sure the cops'll pick her up on something. \n\nelaine: kurt? what's with the sweats? aren't we going out? \n\nkurt: i don't care. \n\nelaine: you, uh...got a big stain on your shirt. \n\nkurt: oh yeah...meatball...fell out of my sandwich. \n\nelaine: you already ate? \n\nkurt: it's from yesterday. \n\nmarcelino: jerry! you missed a hell of a cockfight last night. \n\njerry: then what is my check still doing up? we had a deal! \n\nmarcelino: now we have a new deal. \n\njerry: new deal? \n\nmarcelino: when little jerry seinfeld is mine, the check will be yours. \n\njerry: this is outrageous! (to marcelino) pack of juicy fruit. \n\nmarcelino (tosses the gum on the counter): 85 cents. \n\njerry: 85 cents? that is outrageous! \n\njerry: kramer, marcelino wants us to sell him little jerry seinfeld. \n\nkramer: well, that's out of the question. \n\njerry: but kramer, cockfighting is an illegal and immoral activity. \n\nkramer: yeah, if you got a loser. but little jerry was born to cockfight! \n\njerry: no, no more cockfighting. let's just sell him to marcelino the cockfighter and be done with it! \n\nkramer: you know, i think you're jealous. \n\njerry: of what? \n\nkramer (points at jerry like he's found him out): yah, yah! you see in little jerry seinfeld the unlimited future you once had. now, just because jerry seinfeld is a has-been, don't make little jerry seinfeld a never-was! \n\njerry: kramer, give me that rooster! \n\nkramer: never! you hate him because he's doing more with your name than you ever will! yah-yah! (kramer leaves.) \n\nbetsy: george, celia has listed you as a character reference. whatever you can tell us would certainly be helpful in, her getting paroled. \n\ngeorge: well, anything i can do to help, um...she's a wonderful girl. very smart. very eh...crafty. \n\nbetsy: does she have any plans after she's released? \n\ngeorge: plans. schemes. she ah, she keeps talking about getting back together with her old friends, you know - \"the gang,\" as she likes to call them (chuckles), you know. yeah, they're eh, they're hatching something, you can count on that. \n\nmarcelino: jerry! tomorrow night's fight-night. where's my rooster? \n\njerry: kramer won't sell. \n\nmarcelino: well, tell you what i'm gonna do. i'm gonna take down your check anyway. \n\njerry: oh well, thank you, marcelino. \n\nmarcelino: well, perhaps someday you will do me a favor. and that day is today. little jerry seinfeld must go down in the third round of tomorrow's main event. \n\njerry: you want little jerry to take a dive? \n\nmarcelino: shhh, not so loud. \n\njerry: first of all, i don't think you can make a rooster take a dive. \n\nmarcelino: can, too! \n\njerry: second of all, jerry seinfeld - big or little - doesn't go down for anyone, anywhere, at anytime! now i'd appreciate it if you please leave. \n\nmarcelino (leaving): big jerry is making a big mistake, jerry. \n\njerry: we'll see about that. (runs to the window and shouts up to kramer, who's on the roof.) kramer, i'm comin' up! we got a cockfight to win! \n\nkramer: o.k.! \n\nkurt: elaine said you would be the best person i could talk to. \n\ngeorge (examining kurt's head with a lamp): yep. classic horseshoe pattern. i've seen a lot of this. \n\nkurt: oh, god. \n\ngeorge: no, no, kurt - wrong attitude. you should be happy now. \n\nkurt: happy? why should i be happy? \n\ngeorge: you've still got pretty good coverage. once the enemy advances beyond this perimeter - (points at kurt's head with a pen) - then you won't be kurt anymore. \n\nkurt: who will i be? \n\nkurt: how long do i have? \n\ngeorge (solemnly): 14 months. maybe 10. \n\nkurt: is there anything i can do? \n\ngeorge: yes. live, dammit. live! every precious moment as if this was the last year of your life. because in many ways...it is. (there's a knock at the door.) excuse me. \n\ngeorge: celia? w-w-what are you doing here? \n\ncelia: well, i didn't get my parole, so i busted out. \n\ngeorge (nervously): and-and you just decided to pop in...! \n\nelaine: kurt! \n\nkurt: elaine...(holds out a wedding ring) will you marry me? \n\nkramer: oh, yeah. oh, yeah. boy he's lookin' good, huh jerry? \n\njerry: yeah. alright, i think that's enough for today. (kramer picks up little jerry and takes him to the sink.) little jerry is lean, mean, peckin' machine! (kramer starts filling a pot with water.) what are you doing with that? \n\nkramer: i'm just gonna heat this up. make a little hot-tub for little jerry. \n\njerry: hey, kramer...? \n\njerry: be careful. \n\ngeorge: hey. \n\njerry: hey, guess what! little jerry ran from here to newman's in under thirty seconds! \n\ngeorge: is that good? \n\njerry: i don't know. where have you been? \n\ngeorge: celia broke out of prison. i'm sitting in my home, she shows up at the door! \n\njerry: oh my god! the break-out/pop-in! \n\ngeorge: yeah. hey jerry, listen to this. i discovered something even better than conjugal visit sex. fugitive sex! now, it's like everytime - \n\njerry (interrupts): george, this is a little too much for me - escaped convicts, fugitive sex...i got a cockfight to focus on. (jerry leaves.) \n\nelaine: hey hey kurt, slow down! i can't just marry you, whim-bam-boom! i mean, i need some \"fiance-time,\" i need some \"make-my-girlfriends-jealous\" time... \n\nkurt: plus, you want to get to know me. \n\nelaine: yeah, yeah, that too. \n\nkurt: well, how much time? \n\nelaine: (sighs wa-ah) i don't know...a year? \n\nkurt: no, no, no...it has to be now. \n\nelaine: (sighs ahh) could i see the ring again? \n\njerry (to elaine): so, you're actually considering it? \n\nelaine: well, it'll be a couple of years before he's completely bald. those'll be good times. \n\njerry: marriage is a big step, elaine. your life'll totally change. \n\nelaine: jerry, it's three-thirty in the morning. i'm at a cockfight. what am i clinging to? \n\ngeorge: oh, hey, sorry i'm late. \n\njerry: hey. \n\ngeorge: sorry i'm late. \n\njerry: where's celia? \n\ngeorge: she didn't want to come, she-she's not really into sports. \n\njerry: hmm. (nodding head) \n\njerry: hey, how's he doin'? \n\nkramer: ohh, he's got a big sweat going. (takes an envelope out of his pocket.) oh, this came for you express-mail. it's from your parents. \n\njerry (opens the envelope): fifty dollars. i don't believe this! \n\nkramer: there's marcelino. (marcelino enters the ring holding a huge white rooster.) \n\njerry: look at the size of his bird! \n\nkramer: that looks like a dog with a glove on his head. \n\nkurt: hi, is george back from the cockfight yet? you know, i gotta thank him, he changed my life. \n\ncelia: no, it must have been a good fight, he's not back yet. \n\nkurt: ah, damn. \n\ndetective #1 (to kurt): sorry to bother you, mr. costanza. well, well, well. look who's here. \n\ncelia: aw, man! \n\ndetective #2 (to kurt): mr. costanza, you're under arrest for aiding and abetting a known fugitive. \n\nkurt (laughs): i'm not george costanza. \n\ndetective #2: save it. we know you're bald. we know it's you. let's go! (they escort kurt and celia out.) \n\nelaine (to a woman at the fight): muchos gracias. (turns back to jerry and kramer.) o.k., i got the whole scoop. marcelino flew the bird in from ecuador. he's 68 and 0! \n\njerry: he's a ringer! \n\ngeorge: where's the tamale guy? \n\nkramer: little jerry's going to get his clock cleaned. i gotta get him outta there. \n\nkramer (lunging for little jerry): lit _ tle jer _ ry! \n\njerry: kra _ mer! \n\nelaine: stop _ the _ fight! \n\ngeorge (holds up one finger): ta _ mal _ e! \n\nkramer: ahhh, uh, uh, uh, ohuh, aaaa ouh au au au ah ah (more pecking) ah, ah, ah, ah. \n\nelaine: why? why did you get into a fist fight with the cop? you were innocent! \n\nkurt: they thought i was george. i'm not that bald. and i have too little time left to take that kind of crap, so i, slugged him. \n\nelaine: so, how long are you gonna be in here for? \n\nkurt: well, my lawyer says 14 months, but with good behavior, maybe...10? \n\nelaine: (sighs) so 10 to 14 months. \n\nkurt: yeah. \n\nkramer: well, that was alright, huh? \n\nemily: yeah. \n\nkramer: well, um, goodnight. \n\nemily: goodnight. \n\n(kramer rolls over to go to sleep. the bedside clock reads 12: 30. emily snuggles up to him and puts an arm around him. kramer doesn't look comfortable with this.) \n\n(the clock reads 3: 31. kramer is lying on his back, sleeping. beside him, emily lies face-down, sleeping, with her arms flung out wide. one hand is on the pillow above kramer's head, then it moves and emily's forearm runs across kramer's face, waking him. kramer looks disgruntled at being awakened.) \n\nkramer: (quietly, to himself) look at this. \n\n(the clock reads 5: 11. a wide awake kramer is right over to the edge of the bed, with emily cuddled up to him, sleeping happily. kramer tries to carefully move, so as to not wake emily, but as he shifts his weight, he slips off the end of the mattress and falls to the floor. emily rolls into the space vacated, continuing to sleep.) \n\nhelen: jerry, we can only stay four days. \n\njerry: well, i'm upset, but we'll make the most of it. \n\nmorty: helen, did you pack my travel gym? \n\nhelen: yes. (to jerry) oh, your father bought a exercise device off the television. he does it every morning at four. \n\nmorty: only twenty-five minutes a day, and you can attach it to any doorknob. \n\njerry: huh. so, i guess your travel miles are about to expire. \n\nhelen: well, actually, jerry, we wanted to talk to you about something. \n\njerry: am i finally getting a baby brother? \n\nhelen: jerry, be serious. \n\nmorty: how would you feel if we sold the cadillac? \n\njerry: what? the cadillac i bought for you? \n\nmorty: it's too much car, jerry. \n\njerry: aw, c'mon, you love that car. what about the northstar system? \n\nmorty: i don't think we even use it. \n\njerry: well, it's a gift and i want you to keep it. \n\nhelen: we already sold it. \n\njerry: wh..why didn't you tell me before you sold it? \n\nmorty: because we had a buyer, and we couldn't get a free flight until now. \n\nhelen: well, we could, but we wanted the bulkhead. \n\njerry: (exasperated) ugh. \n\nkramer: (to jerry) man, that emily is wearing me out. \n\njerry: kramer. \n\nkramer: no, no, no. it's not the sex, jerry. (noticing morty and helen) heyy! seinfelds. \n\nhelen: hi kramer. \n\nmorty: hiya kramer. \n\njerry: we're in the middle of a discussion here. \n\nkramer: oh yeah? what about? \n\nhelen: jerry's upset we sold the cadillac. \n\nkramer: what'd you get for it? \n\nmorty: jack klompus gave us six grand. \n\njerry: you sold my cadillac to jack klompus? \n\nmorty: (trying to press the cheque on jerry) and we want you to have the money. \n\njerry: (getting worked up) i don't need the money. \n\nmorty: what're you talking about? you had a cheque bounce at the bodega. \n\njerry: (animated) oh, is that what this is all about?! i bounce a cheque and you sold a cadillac?! \n\nhelen: well, also, jerry, we read an article in the sun sentinel. (digs in her purse and extracts a newspaper clipping) it says standup comedy is not what it used to be, what with def jam and all. \n\nkramer: yeah, that def jam is a force. \n\nhelen: jerry, you know, i hear wonderful things about bloomingdales' executive training program. \n\njerry: (sits on the back of the couch) oh my god. \n\nkramer: y'know you've given this comedy thing your best shot. yeah, you had some good observations, but it's over. now, this bloomingdale thing, that could be the next wave. \n\ngeorge: uh, excuse me. uh, pound of arabian mocha java, please. \n\nelaine: so, you understand how my peterman stock options are gonna work? \n\ngeorge: i'm going to the bathroom. \n\nelaine: just, very interesting. \n\njerry: yeah, when it's your money, it's fascinating. \n\ncounterperson: arabian mocha java? \n\nelaine: (looks for george) mmm. (can't see him) oh, um, i got it. \n\njerry: that arabian is strong coffee. \n\nelaine: it's plo blend. \n\nelaine: ohh, i got your coffee. \n\ngeorge: oh oh, here, lemme uh... \n\nelaine: (waving away) nah, nah, it's on me. (looks at her watch) aww, man. okay, listen guys, i'm gonna be late. (taking her cup of coffee) i'll see you, okay? (begins to walk away) \n\ngeorge: yeah. \n\nelaine: bye. \n\ngeorge: mmm. \n\ngeorge: you see what just happened here? \n\njerry: what? \n\ngeorge: she treated me to the arabian mocha java. \n\njerry: and you misinterpret this how? \n\ngeorge: she's stickin' it to me that she makes more money than me. \n\njerry: i'm sure she was just being nice, buying you the coffee. \n\ngeorge: no, not nice. she's stickin' it to me. \n\njerry: you're crazy. \n\ngeorge: (worked up) stickin' it to me, jerry. \n\njerry: george. \n\ngeorge: (angry) stickin' it! \n\ngeorge: so you're buying the car back for your parents? \n\njerry: i'm flying down to florida tomorrow. \n\ngeorge: your parents'll never let you do it. \n\njerry: they lied to me about selling the car. i'll lie to them about buying it back. they think they can dump six grand on me? think again. \n\ngeorge: what kind of money you think your parents have? \n\njerry: excuse me? \n\ngeorge: i bet they have more money than mine. \n\njerry: come on, your parents have money. \n\ngeorge: you think? \n\njerry: when did they ever spend any money? \n\ngeorge: never. \n\njerry: what are their living expenses? \n\ngeorge: nothing. \n\njerry: where do they ever go on vacation? \n\ngeorge: nowhere. \n\ngeorge: how much money d'you think they have? \n\njerry: few hundred grand? \n\ngeorge: (excited) you're saying i stand to inherit three hundred thousand dollars, is that what you're saying?! \n\njerry: course you may not see it for twenty years. \n\ngeorge: twenty years? that long? \n\njerry: does your father still eat bacon and eggs every day? \n\ngeorge: fortunately, yes. \n\njerry: how's your family history? \n\ngeorge: i have an aunt that died at seven. \n\njerry: really? \n\ngeorge: aunt baby. \n\nkramer: elaine. uh, you got a moment? \n\nelaine: yeah, kramer, come on in. \n\nkramer: i, uh, need to speak to you about some lady problems. \n\nelaine: (unsure) oh-kay. \n\nkramer: (a little anxious) you know, after i have sex with emily, uh, i don't want her in the bed any more. \n\nelaine: ah. \n\nkramer: yeah, because she's throwing off my whole sleep. she's got the jimmy legs. \n\nelaine: (confused) jimmy legs? \n\nkramer: jimmy leg. \n\nelaine: (grasping the concept) ohh. \n\nkramer: so, uh, well, maybe i should just be honest with her, huh? \n\nelaine: tell her after sex, you just want her outta there? \n\nkramer: well, i'd say it nicely. \n\nelaine: i don't think so. \n\nkramer: well, you know, i really like this girl and i, you know, i think if i could just work out this one thing... \n\nelaine: (interrupting) yeah. i gotta be honest with you kramer. you might be more than just a coupla tweaks away from a healthy relationship. \n\nkramer: well you're not exactly zeroing in yourself, lady. \n\nelaine: (pointing to the door, angry) alright, get out. \n\nelaine: (impatient) get out! \n\njerry: so listen, i gotta go down to atlantic city. i'm performing at bally's. \n\nmorty: you just heard about this today? \n\njerry: (pulling on a jacket) they had a cancellation and they instantly called me. \n\nhelen: who cancelled? \n\njerry: carrot top. i told you, my career's fine. \n\ngeorge: i been, uh, thinking about the family. tell me, uh, about aunt baby. \n\nfrank: (looks up to heaven) she's deceased. \n\ngeorge: (glances upwards) yeah. uhm, why did she die so young? \n\nfrank: (looks to estelle) she had problems. (estelle nods) internal. \n\ngeorge: is that common in our family? \n\nestelle: well, your uncle moe, he died a young man. \n\nfrank: also internal problems. \n\nestelle: it's that temper on your side. they're yelling and yelling, and then one day, they're all gone. \n\nfrank: what about your side? your cousin hennie. (animated) she was sickly from the moment i met her! \n\nestelle: (shouts) don't you talk about hennie! \n\ngeorge: i guess you two are the lucky ones. \n\nfrank: so far. \n\nestelle: frank, if aunt baby were alive today, how old would she be? \n\nfrank: she'd never make it. \n\nemily: so let me get this straight. you enjoy the lovemaking... \n\nkramer: shh, shh. \n\nemily: (quieter) well, do you? \n\nkramer: oh yeah, like strawberry pie. \n\nemily: okay, but you have a problem sharing a bed with me? \n\nkramer: i know it's not what the ladies like. but without some solid sack time, i'm a zombie. \n\nemily: i don't know. \n\nkramer: (pleading) aww, c'mon, man. meet me halfway. \n\nemily: you're not easy, kramer. \n\nkramer: i know. \n\njack: so, to what do i owe the pleasure of this, unannounced, visit? \n\njerry: i wanna buy back the cadillac. \n\njack: you wanna buy it back? why, you go drugs hidden in the trunk? \n\njack: i'm kidding. \n\njerry: (reaching into his pocket) alright, i'll give you nine thousand for it. \n\njack: nine thousand for a cadillac? it's got no miles on it. \n\njerry: you bought it for six! \n\njack: you're not me. \n\njerry: (standing) how much d'you want for it? \n\njack: the kelly blue book value. twenty-two thousand dollars. \n\njerry: fourteen thousand. \n\njack: done. but, i get to drive it tomorrow, because doris wants to go to naples. \n\njack: need a pen? \n\njack: still works. \n\nkramer: hey, where's jerry? \n\nhelen: he's performing at bally's in atlantic city. \n\nkramer: aw, okay. (picks up the phone and starts dialling) yeah, i need his shoeshine kit. (still dialling) he always hides it from me. (puts the phone to his ear and waits for a second or two) yeah, bally's? yeah, jerry seinfeld's room, please. \n\nmorty: you know that number? \n\nkramer: i used to have a problem. (into phone) well, what d'you mean, he's not registered? wha..s, e, i, n, v... \n\nhelen: f. f, e, l , d. \n\nkramer: ...f, e, l, d. (half-laughing) well, i think you're wrong. (listens) alright, you have a lucky day, too. \n\nhelen: he's not there? \n\nkramer: no, they never heard of him. \n\nelaine: this is so nice of you to take us all out to dinner, george. \n\ngeorge: (oozing fake sincerity) well, as much as i enjoy all the good-natured ribbing, nothing really makes me happier than spending money on the people i care about. \n\nhelen: where's jerry? \n\ngeorge: oh, he'll be here. by the way, elaine, (reaches under the table and brings out a large coffee machine) thank you for laying out for the arabian mocha java. \n\nelaine: george, you didn't have to do this. i'm president of a big company. i can afford to buy you coffee. \n\nmorty: (surprised) president? \n\nelaine: yeah. \n\ngeorge: hey look, he's back. \n\njerry: i got your message, (sitting) so i came straight from atlantic city. \n\nhelen: jerry, kramer called bally's. you weren't registered. \n\njerry: (extemporising) well, i can't stay under my own name. i was registered under slappy white. \n\ngeorge: mom? dad? \n\nestelle: well, look who's here. hello, seinfelds. \n\ngeorge: wh..what're you doing here? \n\nfrank: we're having an upscale dinner. \n\ngeorge: what? \n\nestelle: well, after talking to you, we realised we may not have much time left. \n\nfrank: so, we're blowing it all. \n\nfrank: (holding out his tie) look george, it's a pierre cardin. \n\nkramer: that was alright. \n\nemily: yeah. \n\nkramer: (abruptly) well, i'll see you. \n\njerry: hello. \n\njack: (shouting like there's a bad line) jerry, i had a little mishap with the car. \n\njack: i'm down here in alligator alley. you better get down here. \n\njerry: (quiet) huh. alright. \n\nhelen: who was that? \n\njerry: (extemporising) that was the golden nugget. also in atlantic city. they heard such good things about my show at bally's, they want me for tonight. so i'll have to repack, and go. \n\nmorty: that didn't sound like the golden nugget. \n\nhelen: i'm worried. what happens if we have to support jerry? \n\nmorty: i'd have to go back to work. \n\nhelen: where would you work? \n\nmorty: maybe i should talk to elaine. \n\nelaine: well, mr seinfeld, i..i'm not sure i understand why you want a job here. \n\nmorty: what's not to understand? \n\nelaine: well, for one thing, you live in florida. \n\nmorty: i'm very comfortable working outta the house. i have a phone, we have a kinko's nearby. you know, i think that my resume speaks for itself. \n\nelaine: (looking around her desk) where is your resume? \n\nmorty: i don't have it. i'll mail you one. \n\nelaine: alright, mr seinfeld, i... what kind of position did you have in mind? \n\nmorty: you sell clothes here, don't you? \n\nelaine: yeah. \n\nmorty: well, i sold raincoats in the garment centre for thirty-eight years. in nineteen forty-nine... \n\nelaine: (interrupting) alright. alright, alright. you come in tomorrow, we'll find something for you to do. \n\nmorty: you won't regret this, miss benes. what time should i be in? i get up at four, i could be here as early as four twenty-five. \n\nelaine: uhm... \n\npeterman: (upbeat) oh, elaine, this dry air is curing me like a black forest ham. \n\nelaine: (stunned) mr peterman. you're back. \n\nmorty: who's mr fancy? \n\nkramer: (hesitant) i uh, i was thinking maybe i should spend the night. \n\nemily: aww, that's sweet, but actually i, i think i'd prefer it if you left. \n\nkramer: (surprise) what? \n\nemily: you were completely right. i sleep so much better when i'm alone. (pause) and you scream in your sleep. \n\nkramer: i do? \n\nkramer: (fearful) there was a man, he was trying to get into my apartment last night. he was jiggling the doorknob for twenty-five minutes. \n\nemily: c'mon, it was probably the wind. \n\nkramer: no, no, no. it was a fearless cat burglar. (pleading) now listen, you gotta let me sleep here, huh? y'know, i'll stay here on my side, and i'll stuff a sock in my mouth. (panicky) 'cos i don't wanna sleep alone. \n\nemily: (adamant) well, i do. \n\njack: what took you so long? \n\njerry: i live in new york. (slams the cab door) what the hell happened? \n\njack: this thing is a, is a behemoth. \n\njerry: what did you do? \n\njack: i was, i was making a, a simple lane change. i, i put on the blinker and it took off on me. and the next thing you know, i was submerged. i'm telling you, jerry, i'm very lucky that those crocs didn't get me. \n\njerry: (exasperation) you are such an idiot. well, we gotta get the car cleaned up for my parents. \n\njack: (shrugging) do whatever you want. it's your car. \n\njerry: my car? you drove it into the swamp! \n\njack: it drove itself into the swamp! besides, i think i lost my pen, too. \n\njerry: (smiling with pleasure) you know, that almost makes this all worthwhile. \n\ngeorge: (pointing outside) why is there a cadillac parked in front of the house? \n\nfrank: that's your mother's new car. \n\ngeorge: you bought that? \n\nfrank: it's a coupe de elegance. \n\nestelle: your father wanted a mercedes, but i won't ride in a german car. \n\nkramer: mornin'. \n\nkramer: oh, boy. \n\ngeorge: what the hell is going on here? \n\nkramer: i had some trouble at my place, so i need a little company at night to sleep. \n\nestelle: george, your mother and i, and kramer (holds kramer's hand) have been talking. \n\ngeorge: (dread) oh god. \n\nkramer: uh, george, your parents can't blow through their savings in this community. it's low-rent. now, we feel that florida is really the place where they should be. \n\nfrank: (claps his hands) you can drop a grand in disneyworld, like that. \n\ngeorge: wait a minute. (astonished) you're thinking of moving to florida again?! \n\nestelle: well, it's either that or we stay here, near you, and just sit on the money. what do you think we should do, georgie? \n\npeterman: so, anyway, effective immediately, miss benes will return to her old position, at her original salary... \n\npeterman: ...and i, of course, will return to mine. kudos, elaine, on a job... done. \n\nelaine: (hardly daring to ask) what about my stock options? \n\npeterman: i think not. \n\npeterman: now, down to business. (thoughtful) i have had this vision of a diaphanous rum-runner scarf. \n\nelaine: well, we could fly some fabric in from our silk factories, for about a thousand dollars a bolt. \n\nmorty: (shocked) a thousand?! i know a coupla chinamen over there on forty-third street, who'll do it for half that. \n\nelaine: (tactful) it's, ah, asian-americans. \n\nmorty: what? \n\npeterman: (puzzled) who are you? \n\nelaine: don't worry, i... \n\nmorty: morty seinfeld. i cut velvet for forty years with harry altman. \n\nelaine: okay, mr seinfeld, this is not the t... \n\npeterman: elaine, did you hire this man? \n\nelaine: (worried) no, no. well, i mean, you know, he's more like an intern, you know, at best. \n\nelaine: so, if your parents move to florida, you're poor. \n\ngeorge: (pointing out the positive) but happy. \n\nelaine: obviously. and if they stay, you're rich, but... \n\ngeorge: obviously. \n\nelaine: quite a dilemma. you know, i have a bit of a dilemma of my own. \n\ngeorge: no, no. no, no, no. (determined) we're staying on me. we haven't solved anything yet. \n\nelaine: alright, this is easy. let 'em go. \n\ngeorge: what d'you mean, let 'em go? they're spending all my money. \n\nelaine: alright, well, then they stay. lemma ask you something... \n\ngeorge: (upset) could you put a little thought into this? jerry's gone, you could humour me. he humours me. \n\nelaine: speaking of jerry, his father is driving me so crazy down at peterman's. \n\ngeorge: you know what i do at the yankees, when one of these old guys is breathing down my neck? \n\nelaine: what? \n\ngeorge: you schedule a late meeting. \n\nelaine: (puzzlement) huh? what does that do? \n\ngeorge: these old guys, they're up at 4 a.m., by two thirty they're wiped. (animated) how did we get back onto you?! \n\nelaine: (grabbing her bag and coat) i gotta split. \n\ngeorge: (shouted after elaine) you know, i got nothing outta this! \n\nkramer: hey frank, you got two beds in here. \n\nfrank: that's right. that's me on the left. \n\nkramer: so, you sleep in separate beds. \n\nfrank: thirty years ago, we came to an agreement. it was the only way i could get some rest. \n\nkramer: (intrigued) really? \n\nfrank: (confidential) estelle's got the (jerks his elbow) jimmy arms. \n\nkramer: you can get that in your arms? \n\nfrank: like you wouldn't believe. \n\njack: jerry, it's getting late. you've cleaned up the car. you've made all your phone calls. why are you still here? \n\njerry: well, i uh, maxed out my credit cards, and i don't have enough cash for a hotel room. so... \n\njack: you are uh, thinking of staying here? \n\njerry: well... \n\njack: (laughing) you've got some nerve. i almost break my neck in that death-trap of yours, and now you ask me for a favour! \n\njerry: you didn't like that crack about the pen. \n\njack: i did not. \n\ngeorge: well, i've given this a lot of thought, and i've gotta say... \n\ngeorge: (attempting sincerity) as much as i'd like to see the two of you living it up in a warm, tropical, setting, i, i would just miss you too much. (smiling) so, i've decided, i want you to stay. \n\nfrank: it's too late. we bought a condo at del boca vista. we're leaving tonight. \n\ngeorge: (crestfallen) but you said it was my call. \n\nestelle: we were just being nice. \n\nestelle: (motherly concern) cosmo, are you sure you're gonna be alright here alone? \n\nkramer: oh, yeah, yeah. i got emily coming over tonight. \n\ngeorge: (animated) you're letting him have a woman over?! \n\nfrank: he's not family. it's different, psychologically. \n\npeterman: and so, i made an explosive out of chick peas, and i stopped that great rhino right in his tracks. \n\nmorty: well, it's getting kinda late, why don't we uh... \n\nelaine: mr peterman, that can't have been the only time that you faced mortal danger. \n\npeterman: (smiles and laughs) ha ha ha. funny you should ask, elaine. \n\nmorty: look, if we're gonna stay here until all hours of the night, can we at least get some food here? \n\npeterman: (looks at his watch) it's only five fifteen. so, later on that same day, i developed a great hankering for some wild honey... \n\nmorty: (standing) okay, i'm done. i'll be back in the morning, when he's close to finish with his story. \n\npeterman: morty. my stories are what sell these clothes. \n\nmorty: cheap fabric, and dim lighting. that's how you move merchandise. \n\npeterman: (winks) morty, you're out. \n\nmorty: (unconcerned) ach, i never knew what the hell i was peddling with those stupid cartoons and that paper book, anyway. \n\nkramer: i don't know why i let you talk me into that corned beef at snitzer's. \n\nemily: (not looking up from her book) no-one held a gun to your head. \n\nkramer: (dismissive) yeah. \n\nemily: (still reading) don't forget, we're eating dinner at the feinerman's tomorrow night. \n\nkramer: (moody) oh, why do i have to go? they're your friends. \n\nemily: you like 'em. \n\nkramer: i've had it with 'em. \n\nemily: then we won't go. \n\nkramer: (yielding) okay, okay. what time? \n\nemily: eight thirty. \n\nkramer: (satisfied) ahh. that was alright. \n\nelaine: 'one bright note in today's market, was the stock of retailer j peterman, whose founder's surprise return generated a rise of twelve and a half points.' \n\njerry: mmm-mmm-mmm. that means, if you still had those stock options... \n\nelaine: (downcast) yeah. \n\ngeorge: (jerry-style) that's a shame. \n\nelaine: (sharp) what, are you sticking it to me? \n\ngeorge: (innocent) what? \n\nelaine: i think you're sticking it to me. \n\njerry: elaine, i'm sure george is just being sympathetic. \n\nelaine: (leaning forward and accusing) stickin' it! \n\njerry: you're not alone. i'm practically broke. \n\nelaine: really? \n\njerry: no. but, i did blow over twenty thousand on that cadillac. \n\ngeorge: (relishing) hmm-hmm-hmm-hmm. delicious. \n\njerry: well, you seem happy. \n\ngeorge: i am. the folks are twelve hundred miles away. (gleeful) i'm basking in the buffer zone. (looks for the waitress) 'nother piece of pie here! \n\nelaine: so, were your parents shocked to see the cadillac? \n\njerry: actually, i haven't heard from 'em yet. \n\nelaine: hmm. \n\nmorty: when are we gonna tell jerry? \n\nhelen: i don't wanna worry him. we'll tell him next time we go up. \n\nmorty: he thought he could buy back that cadillac for us? he's not getting away with that. \n\nhelen: besides, that condo was too much house. \n\nestelle: how many times can you check the car? \n\nfrank: (coming away from the window) i saw a bum sleeping in a cadillac the other day. \n\nestelle: why would someone break into a car to take a nap? \n\nfrank: they don't nap. they make it their home. they urinate in there! \n\nestelle: (shouts) you're driving me crazy! \n\nfrank: (standing) that's it, we're going back to queens. (claps hands) where's my hat? \n\nestelle: (shouts) nooh! \n\nbill: well, if the big man wants a new scoreboard, i don't wanna be the one to tell him no. \n\nreilly: no-one in the park is gonna be able to see it from there. \n\ngeorge: (through a mouthful of shrimp) well, why don't we just put a monitor in his skybox? \n\nreilly: hey george, the ocean called. they're running outta shrimp. \n\ngeorge: (angry, to himself) the ocean called. running outta shrimp. outta shrimp! (a thought occurs) oh! yes! that's what i shoulda said! (frustrated shout) dammit! \n\njerry: 'the ocean called, they're running outta shrimp'? \n\ngeorge: yeah, yeah, yeah. but then, i said to him, 'oh yeah? well, the jerk store called, and they're running outta you.' \n\njerry: (smiling) really? that's great. you said that to him? \n\ngeorge: (confessing) well, actually, i thought it up on the way over here. \n\njerry: oh. that's not quite the same. \n\ngeorge: no. no it's not. you don't know this guy. it woulda been so sweet. \n\njerry: i'm gonna grab a can of balls. \n\ngeorge: right. \n\nmilos: hello. my name is milos. how can i help you. \n\njerry: i need a can of balls. \n\nmilos: can of balls for the nice guy, alri... \n\nmilos: ...ahh. you don't plan to hit these balls with that racquet, do you? \n\nkramer: checking out the staff picks, miss benes? \n\nelaine: oh. (laughs) ha-ha. hey. yeah, yeah. (indicating shelf) this vincent guy, he is the best. he and i have the exact same taste in movies. \n\nkramer: oh, vincent is an art-house goon. i stick to the gene rack. \n\nelaine: gene? oh, it's so stupid and mainstream. \n\nkramer: (indicates 'gene' shelf) i've seen all these, so i went with a kramer pick. \n\nelaine: (reading) 'the other side of darkness'. huh, i never heard of that one. \n\nkramer: yeah, went straight to video. \n\nkramer: (positive) that makes me the premiere. \n\nelaine: (gets kramer's point) hah. \n\nkramer: jerry, have you ever seen the movie the other side of darkness? \n\njerry: no. \n\nkramer: it's about this woman, in a coma. well, i couldn't finish watching it, so i want you to read this. \n\njerry: (reading) 'i, cosmo kramer, having just seen the movie the other side of darkness, and not wanting to be in a coma like that lady in the movie, hereby want jerry seinfeld to remove my life support, feeding machine, lung-blower, etcetera, etcetera, etcetera.' \n\nkramer: can you do that for me, buddy? \n\njerry: well, i don't if what you have here constitutes a legally binding document. \n\nkramer: well, i'm gonna type it up. \n\njerry: yes, well, of course, but, even so, you may wanna talk to a lawyer. \n\nkramer: yeah, but, jackie chiles, he put a restraining order on me. (frustrated) i'm not allowed within two hundred feet of his office. i couldn't even give him his christmas present. \n\nkramer: oh, hey, new racquet, huh? \n\njerry: yeah. (hands racquet to kramer) i wasn't gonna get it, but this guy milos, who runs the pro shop, he really recommended it. \n\njerry: in fact, it's the only racquet he plays with. \n\nkramer: (picking up jerry's old racquet) well, you're not gonna need this any more. \n\njerry: (accusingly) hey, this is the zee page of my address book. \n\nkramer: (explaining) oh yeah, i put all your zees on the weights and measures page. \n\nelaine: (emotional) oh. oh, bravo, vincent. bravo. (sniffs) \n\nelaine: what? \n\nvincent (o.c.): did you enjoy the movie? \n\nelaine: who is it? \n\nvincent (o.c.): it's vincent. \n\nelaine: of vincent's picks? \n\nvincent (o.c.): the same. \n\njerry: he called you? \n\nelaine: he musta got my number off the computer. we ended up talking for, like, two hours. \n\njerry: to a guy you've never met? (mild sarcasm) your screening process is getting ever more rigorous. \n\nelaine: trying to meet him. he's never at the video store. they said he sets his own hours. \n\nplayer (o.c.): little help, hey! \n\nelaine: (tossing the ball back) yeah. \n\nplayer: thank you. \n\nelaine: (laughing to jerry) oh god, that guy's terrible. \n\njerry: (pulling on a jacket) mmm-hmm. \n\nelaine: hey, how come we played at this crummy place instead of your club? \n\njerry: george used up all my guest passes already. \n\nelaine: ah. \n\nplayer: ahh. \n\njerry: come on. \n\nplayer: thank you. \n\njerry: (tossing the ball) here you go. \n\njerry: (disbelief) milos? \n\nmilos: (shock) oh, hey. (puts sunglasses back on) how you doing? \n\nmilos: okay, we should uh, wrap it up here. \n\nelaine: so he was bad. what d'you care? \n\njerry: elaine, i paid two hundred dollars for this racquet, because he said it's the only one he plays with. he could've played just as well with a log. \n\nkramer: hey. right, i talked to this lawyer guy, shellbach. now, he's gonna set me up, but you gotta come with me and be the executor. \n\nelaine: the executor? of what? \n\njerry: kramer wants to die with dignity. \n\nelaine: there's a feather in your cap. \n\nkramer: i don't wanna be a vegetable, elaine. i just want out. (snaps fingers) \n\ngeorge: sometimes in life, the gods smile upon you, my friends. \n\njerry: d'you get someone to take that canadian quarter? \n\ngeorge: i got another meeting with reilly. a whole new audience, and i bet i can get him to try that line again. \n\nelaine: who's reilly? \n\njerry: george was scarfing shrimp at this meeting, and this guy says 'hey, george, the ocean called. they're running outta shrimp.' \n\ngeorge: listen to the comeback. (pleased) 'oh yeah? well the jerk store called. they're running outta you.' \n\ngeorge: (worked up) wha...you gotta be kidding me?! \n\nelaine: how 'bout this one? how 'bout, 'your cranium called. it's got some space to rent.'? \n\ngeorge: (confused) what does that mean? \n\njerry: (taps george's chest) hey, here you go. 'hey, reilly. the zoo called. you're due back by six.' \n\ngeorge: (frustrated) no. no, no, no. you're not helping me. \n\nkramer: look, just tell him you had sex with his wife. that'll kill him. \n\ngeorge: (shouting) i'm not looking for another line. i got the line. \n\nkramer: look, george, just think about it. you know, you're married, how would you feel if somebody says to you that they just had se... \n\ngeorge: (really animated) alright, alright. you see? this is why i hate writing with a large group. everybody has their own little opinions, and it all gets homogenised, and you lose the whole edge of it. i'm going with jerk store! jerk store is the line! jerk store! yess! \n\nkramer: (picking the racquet up) did you take this out of the garbage? \n\njerry: yeah, it's still got some spring in the strings. \n\nkramer: oh, jerry, this is a piece of junk. (drops racquet in the trash) how are you gonna be the executor of my living will? \n\nkramer: (indicating) you see? you can't let go. \n\njerry: trust me, kramer. given the legal opportunity, i will kill you. \n\nkramer: i wish i could believe you. hey, elaine, do you have some free time tomorrow afternoon? \n\nelaine: me? \n\nkramer: yeah, because you're perfect. you're a calculating, cold-hearted businesswoman. and when there's dirty work to be done, you don't mind stomping on a few throats. \n\nelaine: (smiling, flattered) oh, ho, c'mon. \n\nshellbach: situation number four. you're breathing on your own, you're conscious, but with no muscular function. \n\nkramer: well, would i be able to communicate? \n\nshellbach: i don't see how. \n\nelaine: ach, i don't like the sound of this one. \n\nkramer: huhh, yeah, let's pull the cord. \n\nelaine: yank it like (pops open soda can) you're starting a mower. \n\nshellbach: moving on. you have liver, kidneys and gall bladder, but no central nervous system. \n\nkramer: well, i gotta have a central nervous system. \n\nshellbach: okay. one lung, blind and you're eating through a tube. \n\nkramer: naw, that's not my style. \n\nelaine: bore-ing. \n\nshellbach: alright, you can eat. but machines do everything else. \n\nkramer: (hesitant) uhm... \n\nelaine: i'd stick. \n\nkramer: yeah, yeah. stick. (to elaine) 'cos i could still go to the coffee shop. \n\nelaine: (points to kramer and smiles in agreement) that's right. \n\njerry: hello milos. \n\nmilos: jerry, thank god you got my message. thank you so much for coming down here. uhm, listen... \n\njerry: (animated) you know, i spent two hundred dollars on a racquet because i thought you knew what you were talking about. \n\nmilos: i..i... \n\njerry: you can't even play. \n\nmilos: believe me, it is milos great shame. but jerry, i could lose my business if anybody find out. how would you like extra year membership of the club? free. no charge. \n\njerry: you could do that? \n\nmilos: jerry, for you, anything. \n\njerry: (indicating the woman) game, set and match, huh milos? \n\nmilos: (apologetic) hah, jerry, i am so sorry. they tell me there is no way they can do it. (meek) is there anything else i can do for you? anything at all. i refund your money. \n\njerry: (animated) you know what milos, i don't even care about the money. i just feel like i was taken by the worst tennis player i... \n\nmilos: shhh-shhh. (whispers) i make it up to you. \n\njerry: (doubtful) yeah, you'll make it up to me. \n\njerry: tennis, anyone? \n\nelaine: oh, this is the one vincent told me about. the pain and the yearning. (reads from the box) 'an old woman experiences pain and yearning.' a hundred and ninety-two minutes? \n\nkramer: that's a lotta yearning, huh? \n\nelaine: you know, these movies are great, but they're just so emotionally exhausting. \n\nkramer: yeah, well, what you need is some summertime adolescent high jinx. \n\nelaine: really? \n\nkramer: (looking at 'gene' rack) see what doctor gene prescribes, huh? (pulls down a cassette) oh, here, look at that. weekend at bernies two. now, that's an hilarious premise. \n\nelaine: (laughs) huh. (looks from tape to tape) well... \n\nkramer: yeah. (taps the weekend at bernie's ii box) \n\nelaine: yeah, i could use a chuckle. \n\nkramer: (approving) yeah. \n\nelaine: what're you getting? \n\nkramer: nothing, i'm gonna finish watching the other side of darkness. \n\nelaine: oh. how much you got left? \n\nkramer: yeah, about two hours. \n\nkramer: yeah, she shot in that coma pretty quick. \n\nelaine: (at tv screen) bernie is dead, you moron! (frustration) just because he's wearing sunglasses he looks alive?! (picks up video box) ugh, how long is this weekend, anyway? (reads from label) ugh! \n\nelaine: hello. \n\nvincent (o.c.): (accusing) how's the movie. elaine? \n\nelaine: vincent? \n\nvincent (o.c.): (betrayed) the gene pick. how could you? i thought we had something special. \n\nelaine: (defensive) no, it doesn't mean anything. i'm not even gonna rewind it. \n\nelaine: vincent? \n\nfred: alright, let's get to it. \n\ngeorge: wha..wait a minute, wha..what about reilly? \n\nfred: reilly doesn't work here any more. \n\ngeorge: (surprise) what? i..i didn't hear about that. \n\nfred: oh, we only wake you up for the important meetings. \n\npatty: hello. \n\njerry: hello. didn't i see you at the pro shop yesterday? \n\npatty: i think so. i'm patty. milos gave me your address. i hope you don't mind me waiting for you here. \n\njerry: (to himself) hoh, that milos. (to patty) well uh, what shall we do, uhm, care for a cup of coffee? \n\npatty: why don't we just go up to your apartment? \n\njerry: (surprised) alright. \n\njerry: (to himself) gotta be an easier way. \n\nnurse (o.c.): doctor, how's her coma? \n\ndoctor (o.c.): oh, exactly the same. \n\ndoctor (o.c.): wait a minute, she's coming out of the coma. \n\ndoctor (o.c.): mrs allbright, can you hear me? are you okay? \n\nallbright (o.c.): (bright and cheerful) i feel so rested and refreshed. get me a toothbrush. \n\njerry: so, you play tennis? \n\npatty: (putting the glass down on the counter) enough talk, jerry. \n\njerry: not for me, i love chatting. \n\npatty: (putting her hand to jerry's face) shh. \n\npatty: (anguished) no! no, i can't do this. (moving away) i can't go through with it. (sitting on the couch) not even for him! \n\njerry: who? \n\npatty: (cries) milos. my husband! \n\njerry: (shocked) your husband?! \n\ngeorge: so concerned was he, that word of his poor tennis skills might leak out, he chose to offer you his wife as some sort of mediaeval sexual payola? \n\njerry: (explanation) he's new around here. \n\ngeorge: (hopeful) so, details? \n\njerry: (walking away) well, i didn't sleep with her. \n\ngeorge: because of society, right? \n\njerry: (weary) yes, george, because of society. so how did the big meeting turn out? \n\ngeorge: reilly is no longer with the club. (getting up) you believe that? \n\njerry: ah, you're better off. now you can just let it go. \n\ngeorge: yeah, i'm gonna let it go. \n\njerry: you never really had the right comeback, anyway. \n\ngeorge: (animated) are you insane? jerk store, woulda smoked that guy! smoked him, i say. \n\nkramer: hey. oh, jerry, listen uh, you know, i saw the rest of that movie, the other side of darkness? the coma lady wakes up at the end. \n\ngeorge: (frustrated) ohh, i wanted to see that. (waves his arms in frustration) thanks. thanks a lot. \n\nkramer: i didn't know it was possible to come out of a coma. \n\njerry: i didn't know it was possible not to know that. \n\ngeorge (o.c.): (from bathroom) how was eric roberts as the husband? \n\nkramer: (shouting back) oh, unforgettable. \n\ngeorge (o.c.): (disappointed) oww. \n\nkramer: (nervous) i gotta find elaine. y'know, she's gonna pull my plug. \n\nelaine: what? betrayed? oh, vincent, i'm so sorry. i... \n\nkramer: yeah, listen, uh, elaine, i've changed my mind about the whole coma thing. (positive) yeah, i decided i'm up for it. \n\nelaine: kramer, do you have any idea what you've done? \n\nmanager: excuse me. \n\nelaine: what're you doing? \n\nelaine: wha..wha...? \n\nmanager: vincent stopped making picks. \n\nelaine: (upset) well, how am i gonna know what movies to see? \n\nmanager: we have a wide variety of gene picks. \n\nelaine: (dismissive) gene's trash. \n\nmanager: i'm gene. \n\nelaine: (forcing a smile) hi. \n\njerry: milos, i can assure you, i had no intention of telling anyone about your unbelievably bad tennis playing. \n\nmilos: (not cheered) thank you, but, unfortunately, i have much larger problems to fry. my wife, she has no respect for milos anymore. \n\njerry: i guess that's a risk you run when you dabble in the flesh trade. \n\nmilos: patty, she, she loves tennis, as much like i do. (hopeful) wou..would you, wi..will you let me beat you in tennis? that is the only way i can show her i am still a man. \n\njerry: (reluctant) well, i'll do it as long as there's no other girls around. i mean, i wanna be a man too. \n\njerry: so you hurt vincent's feelings? \n\nelaine: (handing jerry an envelope) look what came in the mail today. \n\njerry: (taking the envelope) wh..what's this? \n\nelaine: it's the play button, off his vcr. \n\njerry: (examining the button) boy, look how far back it goes. it's like a tooth. \n\ngeorge: (sitting) so, guess where mr 'ocean phoned' turned up? he's working for firestone, in akron, ohio. \n\nelaine: ohio? \n\ngeorge: yep. i'm leaving first thing tomorrow morning. \n\njerry: (nonplused) you're flying to akron, just to zing a guy? \n\ngeorge: don't you understand? it's not about him. to have a line as perfect as 'jerk store' and to never use it. i, i couldn't live with myself. \n\nelaine: see, there are no jerk stores. it..it's just a little confusing, is all. \n\ngeorge: (adamant) it's smart. it's a smart line, and a smart crowd will appreciate it. (shouting) and, i'm not gonna dumb it down for some bonehead mass audience! \n\ngeorge: (waving apologetically) not you. \n\nold woman (o.c.): oh, brittle bones. how i long to be rid of the pain. \n\nelaine: hello. \n\nvincent (o.c.): elaine? it's vincent. \n\nelaine: (surprised) vincent. (pleading) where are you? i have to meet you. \n\nvincent (o.c.): no. i can't bear to have anyone see me. \n\nelaine: vincent, listen, i won't judge you the way everyone else does. you're, you're strange and beautiful, and sensitive. (blunter) now, let's have a look at you. \n\nvincent (o.c.): (relenting) alright, but, can you bring me few things from the store? i haven't been out in a while. \n\nkramer: (indicating that cars should pass him) well, go around, you bunch of crazies. you maniacs are gonna get us all killed. \n\nsecretary: hi, can i help you? \n\nkramer: oh, yeah, yeah. i'm cosmo kramer. yeah, i had an appointment to annul my living will. \n\nsecretary: oh. (looks at her watch) mr kramer, you had a ten-thirty appointment. it's two o'clock. mr shellbach had a tennis lesson. he's gone for the day. \n\njerry: too good. \n\nmilos: (triumphant shout) another game for milos!! hahaha! \n\njerry: you're on fire today. \n\nmilos: (shouting over) hey patty. look at this guy. he's awful! \n\nmilos: (milking it) he's not a man, this jerry. he's not even married like i am. (laughs) huhuhuhu. \n\njerry: (quietly) hey, uh, milos, i don't mind rolling over here, but could you lighten up on the 'not a man' stuff? \n\nmilos: (shouting) hey everybody, look! the little chicken girl wants me to ease up. he can't handle this, so he cries like a woman! (laughs evilly) hahaha! \n\nelaine: hello? vincent? \n\nvincent: elaine? \n\nelaine: i got what you asked. \n\nvincent: just, leave it and go. \n\nelaine: w..well, can't i come in? \n\nvincent: no. go away. now. \n\nelaine: (pleading) no, no. vincent, i... don't shut me out. (beseeching) i just, i know you feel what i feel. \n\nwoman: excuse me. can i help you? \n\nvincent: aw, dammit! \n\nelaine: (confused) uh, uhm, i'm, i'm here to see vincent. \n\nwoman: well, i'm his mother. (stern) vincent, what's going on here? \n\nvincent: (shrieks) no, my acne! \n\nelaine: ahh-cnee. \n\nwoman: (regarding the grocery bag) what d'you have here? \n\nwoman: (disapproving) vodka, cigarettes, fireworks. (accusing) what kind of a sick woman brings this to a fifteen year old? \n\nelaine: (sick smile) we have the same taste in movies. \n\nwoman: did he send you part of our vcr? \n\nelaine: yeah. \n\nwoman: (entering the apartment) vincent! \n\nmilos: (pointing and shouting) look at the big baby! (laughter) hehaha. (to jerry) hey, big baby, are you wetting yourself? maybe it is time for you to be changed. (laughter) hahah. \n\njerry: (quietly) i told you to cut it out. \n\nmilos: (quietly, to jerry) hey, c'mon, what're you doing? (to his audience) \n\nkramer: (waving) shellbach. \n\nkramer: racquet. \n\nreilly: so, george. you're proposing a snow tyre day at yankee stadium? \n\ngeorge: (through a mouthful) long as they don't throw 'em on the field. (laughs) huhu. (indicating dish) help yourself to some shrimp, i brought enough for everybody. \n\nmcadam: (doubtful) i have to say this, this proposal doesn't make a whole lot of sense. \n\ngeorge: well, you never know. (picks up more shrimp) let's see how many i can fit in my mouth. \n\nreilly: (leaning forward) you know, george... \n\nreilly: the ocean called. they're running outta shrimp. \n\ngeorge: (standing) oh yeah, reilly? (smugly) well, the jerk store called. they're running outta you \n\nreilly: (unperturbed) what's the difference? you're their all-time best seller! \n\ngeorge: yeah? well, i had sex with your wife. \n\nmcadam: his wife is in a coma. \n\nelaine: (to jerry) hi. (indicating kramer) how's he doing? \n\njerry: he's been sleeping a lot. he's still groggy. \n\nelaine: oh. (puts the vcr down) i thought a movie might cheer him up. i got him a gene pick. \n\njerry: what happened to vincent? \n\nelaine: (evasive) i'm kinda off of him. (looking around) uh, outlet? \n\nelaine: ah. \n\nkramer: (screaming) waahhh!!! \n\ngeorge: 'my wife's in a coma.' yeah? well, the life support machine called and... \n\ngeorge: (shouts) wait! yes! that's what i should've said! (frustration) d'ohh! \n\ngeorge: (cocky laughter) huh haha! (shouts) you're meat, reilly! you just screwed yourself! (laughter) ha ha! \n\n[setting: a restaurant] \n\nellen: so, they have this clock now, where you punch in your age, and all your risk factors. it actually counts down how much time you have left to live. \n\njerry: so what's the great moment? you're on your death bed, they're pounding on your chest - and you're going 10, 9, 8,.. i told you this thing was good! \n\nellen: (laughs) i can't believe this is our first date. \n\njerry: i know.. how about dessert? \n\nellen: i suppose i have to get a piece of cake.. \n\njerry: why? \n\nellen: today's my birthday. \n\njerry: what? today? really? \n\nellen: yeah. \n\n[setting: jerry's apartment] \n\ngeorge: so, she went out with you on a first date.. and it was her birthday? \n\njerry: yeah. and she picked the day! \n\ngeorge: is she socially awkward? \n\njerry: no, she's great! she's.. attractive, she's fun.. \n\ngeorge: well, maybe she decided to celebrate her birthday on the monday after the weekend. \n\njerry: she's not lincoln. \n\nkramer: hey! anybody up for lorenzo's pizza? \n\njerry: i'll pass. \n\nkramer: oh, yeah? huh. (turns to george) hey, george! pizza? yum, yum! \n\ngeorge: eh, i can't. i gotta go down to the foundation. i'm interviewing high schoolers for the susan ross.. scholarship. \n\njerry: does it ever bother you that this organization- \n\ngeorge: nope! \n\njerry: is beating the bushes- \n\ngeorge: nope! (starts heading for the door) \n\njerry: to basically give this money away- \n\ngeorge: noo! \n\njerry: to virtually anyone, as long as they're not you? \n\ngeorge: (standing in the doorway) i'm fine with it! fi-hi-hi-hine i say! (leaves) \n\n[setting: susan ross foundation conference room] \n\nstudent 1: and then i received a 740 on the english achievement test. (george looks bored) \n\ngeorge: quick, what's your favorite animal? \n\nstudent 1: i.. i don't know.. frog? \n\ngeorge: (disappointed) a frog? \n\nstudent 1: well, i.. i.. \n\ngeorge: (annoyed) frog is wrong. \n\ngeorge: (reading) i see here that you play the harp.. tell me, why do you have to tilt it? can't you just build it on an angle? it'd save you a lot of trouble. \n\nstudent 2: well, the modern-day harp has been refined over thousands of years- \n\ngeorge: (annoyed) yeah, yeah. we'll, uh, let you know. \n\ngeorge: (reading) i see your g.p.a's a 4.0. \n\nstudent 3: (smiling gloatingly) you like that, don't you? \n\ngeorge: so, uh, steven.. i see you're president of the chess club. \n\nsteven: state champs. \n\ngeorge: who's your favorite chess player? \n\nsteven: (hesitating, he mumbles) nastercoff? \n\ngeorge: right. (mumbles) nastercoff.. what country is he from, again? \n\nsteven: (sighs) i don't know.. i made it up. (gets up to leave) i'm never gonna get this thing. \n\ngeorge: (gets up, stopping him) woah, woah, woah! what are you telling me for? you really had me going, there! c'mon, sit down. (they both sit back down) what do you want to do when you grow up? \n\nsteven: i've been telling people that i'd like to be an architect.. \n\n[setting: jerry's apartment] \n\nelaine: so, get this mister peterman is finally letting me do some real writing. he's got this book deal, for his autobiography. he's gonna let me ghost write it. \n\njerry: wow. that's great! when it comes out, i'll have to get someone to ghost read it. \n\nkramer: hey. \n\njerry: hey. \n\nelaine: hey! \n\nkramer: alright, so there i am at lorenzo's - loading up my slice of the fixin's bar.. garlic, (imitates the shaking of garlic onto a pizza) and what-not.. mmm, mmm.. and i see this guy over at the pizza boxes giving me the stink-eye. (imitates the 'stink-eye') so i give hime the crook-eye back, (imitates the 'crook-eye') you know.. then, i notice that he's not alone! i'm taking on the entire van buren boys! \n\njerry: the van buren boys? there's a street gang named after president martin van buren? \n\nkramer: oh yeah, and they're just as mean as he was! so, i make a move to the door, you know, (makes a noise) they block it! so, i lunged for the bathroom. (demonstrates) i grab the knob - occupado! then they back me up agains the cartoon map of italy, and all of the sudden, they just stop. \n\nelaine: what? what happened? \n\nkramer: because i'm still holding the garlic shaker.. yeah.. like this (grabs jerry's peper shaker, and demonstrates) i'm only showing eight fingers. \n\njerry: well, what does that mean? \n\nkramer: that's their secret sign! see, van buren, he was teh eighth president.. (holds up 8 fingers) they thought i was a former van b. boy! \n\n[setting: outside a coffee shop] \n\nellen: (sees a pay phone) oh, jerry, can you hold on a sec? i just want to check my messages.. (she meets up with two of her friends on the way to the phone) oh, melissa! kim! \n\nmelissa: ellen. \n\nellen: hey! you guys, i want you to meet jerry. (gestures tward jerry, then goes back to the phone) \n\nmelissa: ohh, we've heard a lot about you! (confidentially) it is so sweet of you to take her out. \n\nkim: yeah, you don't even know how much she needs this. \n\njerry: (sympathetically) she coming of a bad break-up? \n\nkim: (casually) no. \n\nmelissa: see ya! \n\njerry: any messages? \n\nellen: yeah, no one called. \n\n[setting: coffee shop] \n\njerry: they act like it was some act of charity. just going out with her. \n\ngeorge: so, she's the loser of the group. every group has someone that they all make fun of.. like us with elaine. (jerry thinks about this, then shakes it off) \n\njerry: there is no way ellen is the loser of that group. \n\ngeorge: are you looking deep down at the real person underneath? \n\njerry: no, i'm being as superficial as i possibly can! \n\ngeorge: (changing subject) hey, i htink i may have found someone for the scholarship. \n\njerry: yeah? \n\ngeorge: i'm interviewing all these annoying little overachievers.. finally, this kid walks in - steven koren - a regular guy.. likes sports.. watches t.v.. \n\njerry: is he smart? \n\ngeorge: (defensively) he knows how to read. and he also knows finishing an entire book doesn't prove anything. and get this he's into architecture. \n\njerry: hey! just like you pretend to be. \n\ngeorge: yes. with a little guidance, steven koren is going to be everything i claim to be, only for real. that's my dream, jerry. \n\njerry: i had a dream last night that a hamburger was eating me! \n\n[setting: j. peterman's apartment] \n\nelaine: mister peterman, thanks for having me over. your place isn't quite what i imagined.. (it's plain, with no sign of peterman's personality) \n\npeterman: ohhh.. it's just a place to flop. (sits in his recliner) \n\nelaine: well, (clears throat) what part of your life (hits the record button on a mini-recorder, and sets it down on the table) do you want to start with? foreign intrigue? exotic romances? \n\npeterman: oh, elaine, we've covered all of that in the catalogue ad nauseum. no, i would like this book to be about my day-to-day life. \n\nelaine: oh. \n\npeterman: (turns on the t.v, and starts flipping through the channels) oh damn. they changed the cable stations again.. just when i finally memorized them. \n\nelaine: well, mister peterman, do you want to, um.. \n\npeterman: (still flipping through the channels) 2.. cbs.. \n\nelaine: get, um, started.. \n\npeterman: 3.. i don't know what that is.. where's my damn preview channel? \n\nelaine: (after observing peterman's home life) well, i - i got ta tell you, mister peterman.. i don't think i see a whole book here. \n\npeterman: well, i'm sure we'll come up with something. what do you say you and i order ourselves a pie? do you like lorenzo's? \n\nelaine: you know, a friend of mine almost got beat up at that place by the van buren boys? \n\npeterman: (interested) you don't say. \n\nelaine: yeah. the only think that saved him is that he accidentally flashed their secret gang sign. \n\npeterman: well, that's pretty exciting. (pause) let's put that in the book. \n\nelaine: but, that didn't happen to you. \n\npeterman: so, we pay off your friend, and it becomes a peterman. \n\nelaine: no, i - i really don't think you can do that. \n\npeterman: (looking at his dying plant) ohh, damn. i forgot to buy plant food again.. i'll bet i got a coupon for it. (starts looking through a small coupon box) \n\nelaine: you know what? maybe i better talk to my friend. \n\n[setting: coffee shop] \n\njerry: is that the same outfit you were wearing yesterday? \n\nellen: no, this is brand new. do you like it? \n\njerry: actually, yeah. (pause) wait a second! is that the fork that fell on the floor?! (dramatically) are you using the fork that fell on the floor?! \n\nellen: (laughs) no, jerry, the waitress game be another one. \n\njerry: i guess that's all right. \n\nellen: is something wrong, jerry? \n\njerry: no, absolutely nothing. (they get up to leave) you're fantastic! (they meet up with kramer and george on the way out) hey guys! \n\ngeorge: hey. \n\njerry: (gesturing to ellen) kramer, george, this is ellen. \n\n[setting: susan ross foundation conference room] \n\ngeorge: ladies and gentlemen, this (opens the door, steven is standing there) is steven koren. his g.p.a. is a solid 2.0! right in that meaty part of the curve - not showing off, not falling behind. \n\nwyck: george, the quailifications for this scholarship were suppose to be.. largely academic. \n\ngeorge: i'm sure we're all aware of the flaws and biases of standardized tests.. \n\nwyck: these aren't standardized tests - these are his grades. \n\ngeorge: besides, steven koren has the highest of aspirations. he wants to be (pauses for effect) an architect. \n\nwyck: is that right? \n\nsteven: actually, maybe i could set my sights a little bit higher. \n\ngeorge: (laughs) steven, nothing is higher than an architect. \n\nsteven: i think i'd really like to be a city planner. (sits down, addressing the entire foundation board) why limit myself to just one building, when i can design a whole city? \n\nwyck: well, that's a good point. \n\ngeorge: (mutters) no, it's not. \n\nsteven: well, isn't an architect just an art school drop-out with a tilty desk, and a big ruler? (laughs - so do the board members) \n\ngeorge: (irritated) it's called a t-square. \n\nwyck: you know, the stupidest guy in my fraternity became an architect - after he flunked out of dental school! (everyone but george laughs) contratulations, young man. (shakes steven's hand) \n\nsteven: thank you. \n\nwyck: susan would be proud of what you're doing. \n\nsteven: thank you. \n\n[setting: peterman's office] \n\nkramer: and they made it their sign, because, van buren, our 8th president, was the man they most admired. \n\npeterman: (laughs) kramer, my friend, that is one ripping good yarn.. (hands kramer a check) \n\nkramer: you know, if you like that one, i got more.. what are you looking for? romance? comedy? adventue? .. erotica? (clicks his tongue) \n\nelaine: no, uh, kramer. i don't think - \n\npeterman: (interrupting) how much would you take for the whole lot? \n\nkramer: my whole lot? \n\npeterman: name your price, man! \n\nkramer: (thinks) 1500 dollars. \n\npeterman: i'll give you half that. \n\nkramer: (excited) done! \n\npeterman: kramer, my friend, (gestures to elaine) consider elaine at your disposal. \n\nkramer: okay.. (to elaine) well, i, uh.. i like to work in the evenings.. (elaine slumps back, and covers her head in misfortune) \n\n[setting: elaine's office] \n\nelaine: would you please just get on with the stupid bob saccamano story?! \n\nkramer: well, i'm on the phone with bob, and i realize right then and there that i need to return this pair of pants. so, i'm off to the store. \n\nelaine: what happened to bob saccamano? \n\nkramer: well, nothing. his part of the story is done. (elaine covers her face with her hands - showing her difficulty coping with kramer) so i'm waiting for the subway, it's not coming, so i decided to hoof it through the tunnel. \n\nelaine: alright, well, now that's something.. \n\nkramer: well, i don't know if i lost track of time - or what, but the next think i knew.. \n\nelaine: (adding) a train is bearing down on you?! \n\nkramer: no, i slipped - and fell in the mud. ruining the very pants i was about to return. \n\nelaine: (reflects on the story) i don't understand.. you were wearing the pants you were returning? \n\nkramer: well, i guess i was.. \n\nelaine: (still confused) what were you gonna wear on the way back? \n\nkramer: elaine, are you listening?! i didn't even get there! (pauses) all right, next story.. \n\nelaine: alright, i think i got enough for one day. \n\nkramer: yeah, yeah, chew on that. \n\nelaine: (mocking) yeah, i'll chew on that. \n\nkramer: oh, hey, listen, by the way - i'm hosting a little get-together tonight in honor of my little financial upturn.. \n\nelaine: oh, thanks. i've got plans. \n\nkramer: elaine, you should be there to document it. \n\nelaine: (putting on her coat) oh, you're getting together with some of your jackass friends, and you want me to take notes? \n\nkramer: yeah, but get there after nine. you know, give the poeple a chance to loosen up. \n\n[setting: jerry's apartment] \n\njerry: so you're denying him the scholarship just because he wants to be a city planner? \n\ngeorge: i was betrayed! that kid was like a son to me. and if there's one person you should be able to hold down, it's your own flesh and blood. like my father.. my father's father before him. \n\njerry: you know, maybe philanthropy is not your field. (phone rings, he answers it) hello. oh, hi, ellen. yeah, i called the hotel.. we're all set for the weekend. \n\ngeorge: you're spending the weekend with ellen? \n\njerry: (to george, in a 'cha-ching!' motion) vermont! (to ellen) with any luck, they said we could stay an extra couple of days if we want to! (george is disturbed. he gets up, goes go kramer's door, and knocks. they talk) four days at a beautiful bed-and-breakfast! i can't wait.. buy-bye. (hangs up. george and kramer come into jerry's apartment, confronting him) what? (george takes the phone off the hook) what is this? \n\ngeorge: (to kramer) you want to start? \n\nkramer: (to george) uh, no, no, no.. you go ahead. i gotta get my thoughts together. \n\ngeorge: jerry, this whole ellen situation.. has gone far enough. \n\njerry: what?! \n\nkramer: (adding) jerry, she's a loser. (george points to kramer - gesturing that he's right on target) \n\njerry: where is this coming from? she's great! \n\ngeorge: (concerned) why're you doing this, jerry? is it your career? things will pick up. \n\njerry: there's nothing wrong with my career! \n\nkramer: (like a parent) well, i still like the bloomingdale's executive training program for him. \n\ngeorge: i though we said we weren't going to discuss that now! \n\nkramer: well, you know, i think it's something he should consider. \n\ngeorge: of course he should consider it, but now is not the time! \n\nkramer: listen, george, all these issues are interrelated. \n\njerry: (fed up) alright! excuse me! (gets up) i'm not buying any of this! \n\nkramer: all right, so what're you saying? that we're wrong? oh, everybody's wrong but you! \n\njerry: you know, this is liek that twilight zone where the guy wakes up, and he's the same - but everyone else is different! \n\nkramer: which one? \n\njerry: they were all like that! \n\n[setting: nyc street] \n\nsteven: why'd you take away my scholarship, mister costanza? \n\ngeorge: well, steven, i, uh.. (all the sudden, a small gang steps out of nowhere, surrounding george) \n\nsteven: these are my new friends - the van buren boys. \n\nmember 1: he became so disillusioned, he had to join us. \n\ngeorge: oh.. nice. \n\nsteven: i want my scholarship back, so i can be a city planner. \n\ngeorge: what about architect, steven? \n\nmember 1: (moves threateningly close to george) city planner. \n\n[setting: cafe] \n\nfriend 1: great party, k-man! \n\nkramer: yeah, well, you got that straight! (turns to elaine) hey, elaine, try the beef - because that's realy au jus sauce, huh. (dramatically) real au jus sauce! \n\nelaine: (sourly) i'll make a note of it. \n\nfriend 1: hey, kramer, \n\nkramer: yeah? \n\nfriend 1: ramirez has never heard your pants story. \n\nkramer: ohh kay! well, you know, i had bob saccamano on the phone, and i suddenly realized that i- (elaine stops him) \n\nelaine: you can't tell that story now. it belongs to peterman. \n\nkramer: what do ya mean? \n\nelaine: you signed the release. \n\nkramer: yeah. \n\nelaine: he sat in mud. not you. \n\nkramer: but i did sit in mud. \n\nelaine: (stern) ya didn't! you never sat in mud! \n\nkramer: (pleading) i was all dirty! \n\nelaine: it ever happened! understand? \n\nkramer: (to crowd) hey, hey, hey! all right! yeah, uh, yeah.. well.. uh, the pants. they, uh, they fit, uh, well - and so i, uh, decided i wasn't gonna return them! (laughs) wooh-hoo-hoo-hoo! \n\nfriend 1: it's getting late. maybe we better get going. (they all get up to leave) \n\nkramer: what? you're gonna go now? hey, woah! i don't.. (watches his friends leave) \n\nkramer: (frantic) kramer, kramer! i got big trouble with the - with the van buren boys. \n\nkramer: hey, now, they're tough cookies. \n\ngeorge: yeah, and i - i heard you got on their good side. now, what'd you do? \n\nkramer: uh.. ah, (looks over at elaine, and realizes he can't tell the van buren boys story) oh, nothing - nothing.. no, i certainly don't have any stories, if that's what you're implying. (laughs heartily) \n\ngeorge: (frantic) kramer, do you know what those guys are gonna do to me?! \n\nkramer: yeah, well, uh.. you know uh, you didn't hear from me, but, uh, the van buren boys - they never hassle their own kind. \n\ngeorge: you mean, like, a former member? \n\n[setting: jerry's apartment] \n\nelaine: these kramer stories are unusable! (thumbs through them) i mean, some of them aren't even stories! (holds one out) look, this is a list of things in his apartment! \n\njerry: is my toaster oven on there? \n\nelaine: how am i ever gonna turn this into a book? \n\njerry: well, just shape them - change them. you're a writer. \n\nelaine: yes! i'm a writer. \n\njerry: make them interesting. \n\nelaine: interesting! of course! people love interesting writing! \n\njerry: well, i gotta go to the airport. i'm picking up my parents. \n\nelaine: what? wheren't they just here? \n\njerry: yeah. i'm flying them in to meet ellen. i don't know where to turn! i gotta see what they think of her. \n\nelaine: maybe we could all have dinner later? \n\njerry: i don't think so. i'm gonna try to get them to fly right back tonight. \n\nkramer: oh, hey! hey, have i told you about my bunions? oh, you're gonna love this story! (rubs his hands together) so, i line up my cold cuts on the couch next to me, but as i'm stacking them up, they keep falling into my foot bath! (jerry and elaine look disgusted) \n\njerry: kramer, this is awful! we don't want to hear about this! \n\nkramer: damn! \n\njerry: what? \n\nkramer: oh, i bought a bunch of bunion stories from newman - but they all stink! \n\nelaine: how much did you pay for them? \n\nkramer: eight bucks! i think i got ripped off! (leaves, yelling out \"newman!\") \n\n[setting: peterman's office] \n\nelaine: oh, what didn't you like about the first chapter? \n\npeterman: well, it started out nicely \"i'm returning some pants.\" a very identifiable problem.. (turns page) \"i set of down a train tunnel.\".. (turns page) but that's where the story takes a most unappealing turn. \n\nelaine: oh, no, no! that's where it gets interesting! don't you see? the - the train is bearing down on you, you - you dive into a side tunnel - and you run into a whole band of underground tunnel dwellers! \n\npeterman: it just seems so cliched, and obvious. it's not interesting writing. \n\nelaine: yeah.. yeah. i know. um.. how about if, instead of.. diving from the train, you.. uh, you, i don't know, you slip and, and fall in some mud, and.. ruin your pants? \n\npeterman: (intrigued) the very pants i was returning. that's perfect irony! elaine, that is interesting writing! (the intercom beeps) \n\nsecretary: i have a cosmo kramer on line 4. \n\npeterman: (picks up the phone) peterman, here. \n\nkramer: mister peterson, you gotta sell me my stories back! \n\npeterman: you want to know something? i no longer need them! \n\nelaine: no, no. mister peterman, why don't we keep them - as a, as a reference? \n\npeterman: nonsense! (to kramer) i have benes' woderfully imaginative mind to spin my stories. you take back your tales, you vagabond! \n\nkramer: yippie-yi-yay! \n\npeterman: (hangs up) there you are, elaine. go forth, and create. (elaine gets up to leave) and, by the way, when you get to that chapter about my romantic escapades - feel free to toss yourself in the mix. \n\n[setting: nyc street] \n\ngeorge: hey, van b. boys. \n\nsteven: so, mister costanza, did you get my scholarship back? \n\ngeorge: now, fellas, fellas.. easy. you wouldn't want to beat up on one of your own. \n\nmember 2: is that right? then why don't you flash us the sign? \n\ngeorge: right.. the sign. (hesitates, then makes a series of stupid gestures) \n\nsteven: that's not the sign. \n\ngeorge: (defensively loud) it was when i was banging! \n\nmember 2: all right, if you really are one of us.. let's see you take the wallet off the next guy who walks by. \n\ngeorge: love to! (cracks his knuckles, then winces under the pain) \n\n[setting: coffee shop] \n\nellen: and after college, i got my masters at the sorbonne. \n\nmorty: sorbonne? oh, hey. (to helen) that's in paris. \n\nellen: (looks at her watch) oh, jerry, you're parking meter's about to expire. don't get up, i've got change. (leaves with her purse) \n\njerry: (to his parents) so? what do you think? \n\nhelen: jerry, she's fantastic. \n\njerry: i knew it! i'm not crazy. \n\nhelen: she's so sweet, and she's got some body on her! \n\nmorty: and smart! like a computer! \n\nhelen: and so much personality! but, it doesn't matter what we think. do you like her? \n\njerry: (after seeing how much his parents like her) now, i'm not so sure. \n\nhelen: well, she's 10 times better than that awful amber girl that you were with. \n\njerry: yeah, amber.. i wonder if she's back from vegas.. \n\n[setting: nyc alley] \n\nmember 2: the next one, or you're meat! \n\ngeorge: alright, alright! (goes out onto the sidewalk. the seinfelds walk by) seinfelds! \n\nmorty: hey, george! \n\ngeorge: shhh! listen, you gotta do me a favor. give me your wallet. i'll give it back to you later. \n\nmorty: how're your folks? \n\ngeorge: eh, they're trying to pick out a new couch - you don't want to know. (remembering the watching van buren boys) give me your wallet, or i'll spill your guts right here on the street! \n\nmorty: what did you say? \n\ngeorge: come on, hurry up, old man! i'm an animal! \n\nhelen: you're being very rude. come on, morty. \n\ngeorge: (pleading) please, please, they're gonna hit me! (attempts to grab helen's purse, she starts hitting george defensively, he backs off) \n\nmorty: tell your parents we said 'hi!' (they leave) \n\nkramer: look how dark it's gettin' already. \n\njerry: well, it's not daylight savings time yet. \n\nkramer: when does it start? \n\njerry: (pause) i don't know, they just tell you the night before. \n\nkramer: uh. well, i'm sick o' waiting. (pulls out his pocket-watch (it has a chain, too)) i am springin' ahead riiight now. \n\njerry: (under breath) oh, i'm sure that won't cause any problems.. \n\njerry: oh, god, it's mike moffit.. \n\nkramer: oh now, don't tell me you're still mad at him for calling you a phony. jerry, that was five years ago! \n\njerry: i'm not a phony an' i don't want anything to do with this guy. \n\nkramer: hey! mike! \n\nmike: (sees and is enthused, coming over) kramer! jerry! how's it goin'?! \n\njerry: fine. an' i'm not just sayin' that.. \n\nmike: guess what? i just started my own business. i'm a bookie! \n\njerry: no openings in arson? \n\nmike: (pauses, struck by j's attitude) either of you guys wanna place a bet i'm your guy. \n\nkramer: (quickly) ah no no no. no bets for me, i uh, i got a disease. \n\njerry: i'm feelin' a bit queasy myself. maybe i'll see you in another five years. (casually leaves) \n\nmike: kramer. jerry still mad about that \"phony\" thing? \n\nkramer: you kidding? it's all water near a bridge. \n\nmike: hey, what time you got? \n\nkramer: (pulling out his timepiece) oh yes. uh.. it's aaalmost six. \n\nmike: whoa--uh--i'm really late. (leaves) \n\nelaine: oh! these designs look great! peggy, you really saved me. \n\npeggy: oh, it was no problem. \n\nelaine: (leaving with the drawings) mr. peterman is gonna love 'em. \n\npeggy: (focusing on her work) thanks, susie. \n\nelaine: you won't believe this but, as i'm leaving, she calls me \"susie.\" \n\njerry: i don't see you as a susie. sharon maybe. \n\nelaine: what am i, a--a bulimic, chain-smoking, stenographer from staten island? \n\njerry: who are you describing? \n\nelaine: someone i know. \n\njerry: named sharon? \n\nelaine: i'd rather not say. \n\ngeorge: hey. \n\nelaine: (to say hello) mmm! what's in the bag? \n\ngeorge: (sitting) newww tuxedo. for the pinstripe ball. steinbrenner is throwing a huge party at tavern on the green, heh! \n\njerry: kind of a yankee prom? \n\ngeorge: (resentfully dampened) it's not a prom. it's a ball. \n\njerry: you taking allison? \n\ngeorge: yes, of course i'm taking allison. this woman is genetically engineered to go to a ball. tall, blonde, lithe-- \n\njerry: live? \n\nelaine: lithe. \n\ngeorge: live? \n\nelaine: (rolling her eyes) lithe! \n\njerry: oh, lithe! \n\nelaine: well, you two'll have a great time there. \n\njerry: it can't be worse than this. \n\nelaine: mmm! \n\ngeorge: an' wait'll you see the dress that she's got. it's backless! uh?! i'm finally gonna make a great entrance! \n\nelaine: backless? ya gonna back her in? \n\ngeorge: elaine, when a woman makes a ball entrance.. she twirls. \n\nelaine: she's not gonna twirl-- \n\ngeorge: she'll twirl. \n\ngeorge: that is what mr. steinbrenner wants. he wants, everyone, ta, twirl around. \n\nallison: (weary) all right. \n\ngeorge: hey! uh--listen--did you get your--uh--boss's knick ticket, for kramer? \n\nallison: (digging in purse) yeah, uh--here. (hands him ticket) \n\ngeorge: oh! great! \n\nallison: uh. say, george-- \n\ngeorge: woo! courtside! (mock-snide) is that the best you could do? ha ha! \n\nallison: (sitting) george. we need to talk. \n\ngeorge: what? \n\nallison: i really, think we need to talk. \n\ngeorge: (pause) uh-oh. \n\njerry: she wants to talk. \n\ngeorge: she doesn't want to talk, she needs to talk. \n\njerry: nobody needs to talk. \n\ngeorge: who would want to. she tried to end it with me, jerry. \n\njerry: what'd ya do? \n\ngeorge: i told her i was out o' soda, i went out to get some, an' i never went back. \n\njerry: (pause) all night?! \n\ngeorge: yeah, i slept at my parents' house. \n\njerry: and she wants to break up with you.. \n\ngeorge: ha! (snort) can you believe it? (amused) i'm supposed to be havin' lunch with her right now at pomodoro. \n\njerry: uh-oh. \"everybody breaks up at pomodoro's.\" \n\ngeorge: so? what'm i gonna do? \n\njerry: you really like this girl. \n\ngeorge: no. i like the ball! this is my one chance to make a great entrance! my whole life! i have never made a great entrance! \n\njerry: you've made some fine exits. \n\ngeorge: (admitting) all right.. \n\njerry: so what do you do? you can't keep avoiding her. \n\ngeorge: (resolved) why not. (determined) if she can't find me, she can't break up with me. and, if we're still goin' out, she has to gooo to the ballll. \n\nkramer: (suddenly entering) hey, oh--listen. did you get my ticket from allison-- \n\ngeorge: yeah, yeah, right here. (hands it to him) \n\nkramer: all right! yeah.. courtside.. whoa! don't let this girl get away.. \n\ngeorge: (clipping on shades) ha.. she'll have to find me first. (leaving) \n\nkramer: (all right.) (to jerry) ah? oh, by the way you owe mike a hundred dollars. \n\njerry: what for? \n\nkramer: well i put a bet down for ya on tonight's game. yeah, if the knicks beat the pacers by more than thirty-five? it pays ten to one. oo-oo! that's some sweet action! \n\njerry: but i don't want any \"sweet action.\" \n\nkramer: well, i couldn't do it i got a gamblin' problem. \n\njerry: so you put down my money?! \n\nkramer: (impatient sigh) you don't have a problem. \n\njerry: not (with) that, no.. \n\npeggy: susie. susie! \n\nelaine: (coming in) uh.. hi, peggy. um.. look, i should have said this yesterday, but-- \n\npeggy: did you get this memo from elaine benes? \n\nelaine: yeah. see that-- \n\npeggy: (preoccupied) you know, it's amazing peterman hasn't fired that dolt. she practically ran the company into the gro-ound. \n\nelaine: well. well, i thought she did a pretty good job.. \n\npeggy: i heard she was a disaster, suze-- \n\nelaine: (testy, leans into peggy's personal space) look-it. it's not suze. all right? it's su-zie. my name, is su-zie! \n\ngeorge: (on tape, singing) \"believe it or not, george, isn't at home, please leave a mes-saaage at the beep. i must be out or i'd pick up the pho-one. where could i be? believe it or not, i'm not hooome.\" (beep) \n\njerry: george, pick up. i know you're screening for allison. \n\ngeorge: (answers phone, good mood) hey. \n\njerry: so, coffee shop? \n\ngeorge: no, i can't. she knows i go there. it's not secure. (the call waiting beeps) hey, i got another call comin' in. i gotta let the machine get it. bye. (hangs up) \n\ngeorge: (on tape, singing) \"believe it or not, george, isn't at home, please leave a mes-saaage at the beep. i must be out or i'd pick up the pho-one. where could i be? believe it or not, i'm not hooome.\" (beep) \n\nallison: (on phone machine, peeved) george? are you there? (muttering) i hate that stupid message. (terse) i know you're avoiding me, i'm at the office, please call me, i've gotta talk to you. (hangs up) \n\ngeorge: (to phone) hi, allison? oh, i guess you're not at home.. i probably should 'ave tried you at the office. anyway, good to hear from ya, really looking forward to the ball.. (hangs up and happily chuckles) ha ha! \n\nelaine: can you believe this woman? \n\njerry: (ironic outrage) the nerve. talkin' about ya behind your back--and right to your face! \n\nelaine: no. \"suze!\" i mean, \"suzie!\" \"suzanne!\" \"suzanna.\" fine! but there is no, way, i'm gonna be a suze. \n\njerry: no. no suze. \n\nelaine: (tense) i mean--what am i--some pom-pom-wavin' backseat bimbo?! \n\njerry: who are you describin'? \n\nelaine: someone i know! \n\njerry: named suze? \n\nelaine: no, still sharon! \n\nkramer: (comes in, subdued) hey. (grabs a water from refrigerator) \n\njerry: hey, i thought you went to the game. \n\nkramer: no. i was kicked out for fightin' with one of the players. (leaving) \n\njerry: wait. way--way--way--way--way--way--wait! who?! \n\nkramer: (stops) w--reggie miller. \n\nelaine: cheryl miller's brother? \n\nkramer: yeah. (leaving) \n\njerry: hey--hey--hey--wait, wait, wait, wait! what happened! \n\nkramer: (stops again) well, first of all, for some reason, they started the game an hour late. and uh, i was sittin' next to spike lee an' he an' reggie were jawin' at each other, so i guess i got involved. (leaving) \n\nelaine: (same time as jerry) --wait, whoa--whoa--whoa--whoa!-- \n\njerry: well--wait--wait--wait--wait! what do you mean \"involved\"?! \n\nkramer: (stops again) well i.. ran out onto the court an' threw a hotdog at reggie miller. \"involved.\" an' they threw meee, an' reggie, an' spike out o' the game. \n\nelaine: so that's it? \n\nkramer: well i, well i, felt, pretty bad about everything an' uh, then the three of us, we went to a strip club. (leaves) \n\njerry: can you believe that? \n\nelaine: i didn't know cheryl miller's brother played basketball. \n\nkramer: (suddenly comes back, excited) the knicks killed 'em a hundred an' ten to seventy three! \n\njerry: what--of course, without reggie miller, it's a blowout! \n\nkramer: no, jerry--that's thirty-seven points! the knicks covered! you won! see, that's a cooool-g, daddy-o--now you gotta let it riiiide! \n\njerry: on what?! \n\nkramer: (real addict) ah, come-on, jerry--i don't wanna lose this feeling. hey--let's go down to the o.t.b. we'll put some money on the ponies. (getting out pocket-watch) \n\njerry: yeah, all right. \n\nkramer: (looking at watch) ssssh--ah! they just closed! \n\njerry: (not) oh. too bad. \n\nelaine: mr. peterman? you wanted to see me? \n\npeterman: apparently peggy--down in design?--got into a liiiittle bit of a tiff yesterday with somebody named, \"susie\"? \n\nelaine: su-sie? \n\npeterman: yes. between you, me and the lamppost. and the desk. peggy says this \"suze\" isn't much of a worker. \n\nelaine: (nit) it's susie. \n\npeterman: nevertheless, elaine. the house, of peterman is in disorder. first thing tomorrow morning i want to see you, peggy, and, susie right here, in my office. \n\nelaine: (dismayed) ah, all o'--all of us? \n\nkramer: allison. hi. uh--listen i'm really sorry about what happened at the game last night. listen--could i have a ticket tonight--'cause the rockets are in town an' that, hakeem olajuwon? ohhh--he's got a real attitude. \n\nallison: kramer? have you seen george, around? i can't get a hold of him. \n\nkramer: oh, yeah, yeah. well, he--uh--visits the guy across the hall from me like every ten minutes. \n\nallison: oh yeah? \n\njerry: (singing) believe it or not, geooorge isn't at home. \n\nmike: (comes up) hey. jerry. \n\njerry: hey mike.. how 'bout those knicks? \n\nmike: (a little anxious) yeah! how 'bout 'em? ha ha. look, jerry. i can't pay you. \n\njerry: why not? \n\nmike: 'cause i don't have the money.. \n\njerry: mike. you say you're a bookie? you take a bet an' then you can't pay? i don't know, mike, to me it sounds a little, how you say.. \"phony\"? \n\nmike: just give me 'til friday. please. please! \n\njerry: you know, you're supposed to be the bookie. act like one. \n\nmike: i'm sorry. uh--oh here--let me give you a hand with that. \n\njerry: (trying to shut the trunk hood) something wrong with this trunk. \n\nmike: oh. let me see. \n\ngeorge: so--ah, kramer. why'd you ask me out to dinner? (amused) an' why pomodoro? \n\nkramer: (quiet, delicately) allison spoke to me, and um. she wanted me to speak to you. \n\ngeorge: (quiet) uh-oh. \n\nkramer: we all know that this relationship isn't working. so allison an' i think that the best thing to do is just.. make a, clean break. \n\ngeorge: can't we discuss this? \n\nkramer: (reasoning) we just don't think you're ready for a serious relationship! \n\ngeorge: (dismayed) i didn't even know you wanted to get serious! \n\nkramer: (dismayed) so what am i in this for? you know, i'm getting to a point in my life where i need something more than just.. a good time. (is tearing up) \n\ngeorge: (pause) are you? \n\nkramer: wha--me? no! no. but she is. \n\ngeorge: i, i can't believe this is happening! \n\nkramer: george, we're sorry. \n\ngeorge: krama. please. \n\nkramer: (leaves, upset) waaa-aa--aa! i'm sorry-- \n\nelaine: (entering, uneasy) mr. peterman, peggy, i.. guess we, should just get this over with. (sits) \n\npeterman: just hold on a minute. still one short. \n\nelaine: oh. no, we're not-- \n\npeggy: susie has been very rude to me. \n\npeterman: well, elaine, has nothing but good things to say about susie. \n\nelaine: look. (engaging smile) we don't have to name names, or, point fingers, or.. (breathes in) name names! (indicating empty chair) me and her, have had our problems. she and i have had our problems! you and i, and she and you-- \n\npeterman: don't you drag me into this! this is between you and her, and her. (indicating empty chair) \n\nelaine: yes! and i am convinced that if she were here with us today, she would agree with me, too. \n\npeterman: who. \n\nelaine: (uh-oh) her? \n\npeterman: where is she?! \n\nelaine: ah--this is part of the problem! \n\npeggy: iiii thought i was, part of this problem. \n\nelaine: (smiling, convincing) you're a, huuge part of the problem. but, i think that at it's core, this is a susie-and-elaine problem that requires, a susie-and-elaine solution! and, who better to do that than.. elaine and susie! susie and elaine! \n\npeterman: well, now that we have that cleared up.. why don't the three of us have lunch. \n\nelaine: (feigning hearing something) what?! oh! oh, i'm, coming! i--i gotta go. (rushes out!) \n\npeterman: she is the best. what was your name again. \n\nkramer: mike's outside. he wants to talk to you. \n\njerry: well why doesn't he just come in? \n\nkramer: because he's scared, jerry. \n\njerry: why is he scared. \n\nkramer: (sighs, opens door) come on in. did you do this? (mike has two hand casts on) \n\njerry: yeah, but-- \n\nkramer: uh--ah--ah! you broke his thumbs. \n\njerry: it was an accident. \n\nkramer: oh, is that what you call it when, somebody doesn't pay up? \n\nmike: (desperate) i'll get you the money, jerry. i got a hundred dollars in my front pocket if you want to, reach in an' take it! \n\njerry: (hands up) i don't want it that way. \n\nkramer: nuh! okay jerry, how about if mike fixes your truuunk, we call it even, an' this way, nobody has to get hurt. \n\njerry: (whatever) fine.. \n\nmike: oh--uh--thank you, jerry, thank you! i won't forget this, i'm gonna fix your trunk good--real good! \n\nkramer: see that was nice, jerry. (under breath) oh, by the way, i'm the one who broke your trunk. \n\njerry: ah, it's just a car. \n\ngeorge: hi. \n\nkramer: (looking down, nodding) hi. \n\ngeorge: it's, funny runnin' into you here. \n\nkramer: yeah, yeah.. \n\ngeorge: (embarrassed/self-conscious about his gut) do i? thanks.. you too.. \n\nkramer: ooo, yeah.. (indicating his face, embarrassed) (heh, right.) you know, it's gettin' kind of late, i, i really have to be going, so, uh, it's nice seeing you again, all right-- \n\ngeorge: (sad) yeah! yeah. hey--hey you, you know.. maybe i'll call you sometime. \n\nkramer: george, it's over. it's just.. it's over. (leaves) \n\ngeorge: (pause) what do you think, jerry. \n\njerry: (wistful) i don't know, i just see you guys together. \n\nmike: thumbs! \n\nmike: (from inside the trunk) oh! help! somebody, help! help! \n\njerry: so peterman bought it? i can't believe you got away with that! \n\nelaine: well, i'm very fortunate to be surrounded by such stupidity. \n\njerry: yeah, i know how you feel. \n\nelaine: do you hear something? \n\njerry: what? \n\njerry: oh, the trunk's broken, it's rattling. \n\nelaine: jerry, i don't know how much longer i can keep this up. they're starting to give susie assignments now! \n\njerry: well, there's only one thing to do. eliminate her. \n\nelaine: what? \n\njerry: (firmly matter-of-fact) get rid of susie. make her disappear. \n\nelaine: i kinda like her. \n\njerry: she's gooone. \n\nelaine: jerry-- \n\njerry: (impatient) gone! (starts maniacally laughing) (briefly stops to point and explain) that bumper sticker. \n\nmike: (desperately anxious) oh god, i'm in trouble.. \n\ngeorge: krama. open up! i--i know you're in there! \n\nkramer: (opens door) uh--george, uh--uh--it's five o'clock in the morning, what's the matter with you.. \n\ngeorge: (sad) it's only four.. \n\nkramer: huh? \n\ngeorge: i--i've been, walkin' around all night.. i've been thinkin' about allison and me.. an' you-- \n\nkramer: oh. oh, george. \n\ngeorge: please. give me another chance. \n\nkramer: (regretfully) uh.. i know i'm gonna regret this. (sigh) all right. \n\ngeorge: (grateful, relieved) thank you! i'm gonna make you both so happy! \n\nkramer: all right, all right, i'll see ya later. (shuts door) \n\ngeorge: (delighted!) woooo! \n\npeterman: elaine! where's susie? i want her to head up our new fingerless glove division. \n\nelaine: (quiet) oh, but i thought i was in line for that assignment. \n\npeterman: mmmmm--nah. \n\nelaine: all right, then, i was gonna wait, to tell ya this, but.. last night, susie.. (difficult subject, quiet) she took her own life.. \n\nkramer: (happy, enthused) we're takin' george back-- \n\nallison: what?! \n\nkramer: he's gonna make us very happy. \n\nelaine: (quiet) look at this turnout. \n\njerry: (quiet) where did susie find the time to meet all these people.. \n\nelaine: (irritated) your funeral's not gonna come close to this. \n\npeggy: (to herself) oh my god! (quiet) susie? \n\nelaine: (quiet) oh, oh--ho--i'm not susie.. i'm elaine. \n\npeggy: but i've been calling you susie. \n\nelaine: oh! hadn't noticed! excuse me. (she's going to the podium) \n\npeggy: i guess i never met susie. \n\njerry: (privately amused) suze? i actually had a little thing with her for a while. (indicating elaine) her too. \n\nelaine: what can you say about a girl like susie? (she doesn't know..) \n\nkramer: hey. \n\ngeorge: where's uh, where's allison.. \n\nkramer: oh, allison, she didn't want to come. \n\ngeorge: but you took me back. \n\nkramer: well, yeah, i did, but she's a tough nut. how d'ya like the tuxedo. it's a rental but i've had it for fifteen years. all right, eh. (heading in) \n\ngeorge: where are you goin'.. \n\nkramer: the ball, silly. \n\ngeorge: (afraid not) no no, no no no. you're not goin' in there. \n\nkramer: george. i thought you were gonna change. \n\ngeorge: (impatient) for her. not for you. \n\nkramer: (light admonishing, under breath) let's just try, an' have a nice time for once, an' we'll talk about this when we get home.. \n\ngeorge: all right, look--wait--wait--krama--wait, wait a minute, you are not. you are not goin' in. ah-ahhh! \n\nwilhelm: wow! what an, entrance! (friendly, to george) and eh, who might this be? \n\nkramer: oh, i'm with him. \n\nwilhelm: oh. ah-ha.. \n\nelaine: and.. also, much like me, susie hated going to the, market. \n\npeterman: elaine! may i say a few words. \n\nelaine: oh, god, yes, mr. peterman. (steps down) \n\npeterman: (steps up to the podium, refreshed) ahhh. i don't think i'll ever be able to forget susie--ahhh. and most of all, i will never, forget that one night. working late on the catalogue. juuust the two of us. and we surrendered to temptation. and it was pretty good. \n\njerry: (proud to peggy, under his breath) yeah, but he didn't sleep with both of 'em. (winks) \n\npeterman: but iiii never heard her cries for help. (sighs) an' nowww.. susie is gone. \n\nmike: (running in, still hoarse, desperate!) hold on! hol--on! susie didn't commit suicide! (rushes up to podium!) she was murdered, by jerry, sein-feld! \n\njerry: (smugly, under-his-breath) not only that, i broke his thumbs. \n\npeterman: elaine? guess what. i've decided to form a charitable foundation, in susie's honor. and as susie's best friend, i want you to be involved. \n\nelaine: mr. peterman.. (leaning forward, whispering) i'm susie.. she's me.. \n\npeterman: (leans forward, whispers carefully) i feel the same way. (announcing) and that's why this foundation will meet around your schedule. nights! weekends! every, free moment you have. (leaving, pats her shoulders confidently) \n\nelaine: (looks up, screaming in frustration!) suuuuuuuuuuze! \n\n[jenna's apartment: bathroom] \n\njenna: morning. \n\njerry: morning. \n\njenna: hope you don't mind baking soda flavour. \n\njerry: (applying paste to brush) ah, baking soda. annoying little product. 'i can do this. i can do that.' why doesn't this stuff just shut up? \n\njenna: i'm gonna grab you a towel. \n\njerry: ooh-ooh \n\ngeorge: so? \n\njerry: so? she used the toothbrush! \n\ngeorge: you said you grabbed it outta there real fast, right? \n\njerry: yeah. \n\ngeorge: so i'm sure whatever germs it landed on were knocked out, and by the time the rest of them realised what was going on, you had already grabbed it out. \n\njerry: how many years of med school did you have? \n\ngeorge: was she mad? \n\ngeorge: you didn't tell her. \n\njerry: jenna's like me. she's very... (searches for word) \n\ngeorge: finicky? prissy? fastidious? \n\njerry: i'll take fastidious. \n\njerry: what is that? \n\ngeorge: ahh, steinbrenner gave 'em to us, in honour of phil rizzuto being inducted into the hall of fame. \n\nhead: holy cow! \n\njerry: they don't actually have to squeeze his head to get him to say 'holy cow', do they? \n\ngeorge: just the last few innings of a double-header. \n\nkramer: hey. look at this. i'm in the passing lane of the arthur berkhardt expressway, going seventy and (makes impact sound - pckergh!) dragged this thing for five exits. \n\njerry: why didn't you pull over? \n\nkramer: well i was draughting behind a semi. i didn't wanna lose him. the infrastructure, jerry, it's crumbling. \n\nhead: holy cow! \n\nkramer: well, look at that. a talking nixon. \n\nowner: china panda. \n\nelaine: yeah, i'd like to place an order. \n\nowner: ah yes, what you like? \n\nelaine: this supreme flounder, it says first time served in america. is that true? \n\nowner: what number? \n\nelaine: forty-seven. \n\nowner: yeah, first time. what else? \n\nelaine: uh, that's it. \n\nowner: address? \n\nelaine: seventy-eight, west eighty-sixth street. apartment three e. \n\nowner: that's southside. sorry, we don't deliver below eighty-sixth. \n\nelaine: i'm not below. \n\nowner: yes you are. street itself is boundary. \n\nelaine: your guy can't cross to my side? \n\nowner: if we deliver to you, then what? eighty-fifth street, wall street, mexico, eighty-fourth street. \n\nelaine: alright, fine. i'll just cross and meet him. \n\nowner: sorry, food only for those who live within boundary. (slams down phone) \n\nowner: (picks up phone) china panda. \n\nelaine: (using silly voice) uh, yeah yeah. i'd like to place an order. \n\nowner: ah, what you like? \n\nkramer: well, i'm a poppa. \n\njerry: bring it on. nothing's throwing me at this point. \n\nkramer: (handing jerry a cigar) well, as of today i am a proud parent of a one-mile stretch of the arthur berkhardt expressway. \n\njerry: oh, that adopt-a-highway thing. \n\nkramer: yeah, i'm part of the solution now jerry. yeah, i went down there and i checked it out this morning. here, take a look. mile one-fourteen. \n\njerry: aw, looks just like you. \n\nkramer: aw, i'm beaming jerry. \n\njerry: so what d'you have to do? pay to keep it clean? \n\nkramer: they try to push you into using their cleaning crew, with all their so-called maintenance equipment. \n\njerry: that old scam. \n\nkramer: yeah, well that's why i'm doing it all myself. this parenting isn't about delegating responsibility, it's about being there. \n\njerry: at the side of the road, with a pile of garbage. \n\nkramer: quality time. \n\ngeorge: keys. i can't find my keys. \n\njerry: you lost phil rizzuto's head?! \n\ngeorge: have you seen 'em? \n\njerry: no. \n\ngeorge: dammit! \n\nkramer: c'mon, retrace your steps. what d'you do today? \n\ngeorge: i got up, i was supposed to go to work, i came here instead. \n\nkramer: right. \n\njerry: well, they're not here. you'll have to dig up your spare set. \n\ngeorge: i don't have a spare set. all my keys say 'do not duplicate'. \n\njerry: so? \n\ngeorge: so you can't duplicate 'em. \n\nkramer: sure you can. (to jerry) such a sweet kid. \n\nelaine: oh. oh, hi. china panda? \n\ndelivery boy: (suspicious) why you waiting on the street and not in your apartment? \n\nelaine: i... thought that i would meet you halfway. \n\ndelivery boy: you really live here? \n\nelaine: oh yeah. (handing over money) there you go, keep the change. bye now. i'll see you. \n\nelaine: (at the boy's back) this isn't fair. this is address discrimination! \n\njerry: well, i cleaned out their whole dental hygiene shelf. \n\ngeorge: so the plan is to secretly sterilise her mouth? \n\njerry: by the time i'm through with her mouth, she'll be able to eat off it. is it safe to drink bleach if you dilute it? \n\ngeorge: no, stings the throat. anyway, so i was coming along here, and i felt like a piece of cake, you know? but then i thought, it's morning, i should really have a muffin. i like those chocolate chip ones. then i figured, well, they're really both cake. so i, uh, i sat on that bench for a little while, twenty minutes or an hour, and then i figured, check and see what you were up to. (a thought occurs to him) wait a minute, wait a minute. the broad jump! the broad jump over the pothole on eighty-sixth street! \n\ngeorge: now i remember, as i jumped over the hole i heard a, like a jingling sound. \n\njerry: you didn't look down? \n\ngeorge: i was trying to stick the landing. (indistinct) ...was right around here. \n\ngeorge: no! no!! \n\nhead (o.c.): holy, holy cow! \n\njerry: poor son of a bitch. \n\njerry: it's a hundred thousand revolutions a second. it's the most powerful one they make. \n\njenna: it's like i'm holding a blender. \n\njerry: the engine's made by mcdonnell-douglas. \n\njerry: oh no, you keep going. it shuts off automatically. \n\njenna: (restarting and reapplying the brush) really, it does? \n\njerry: (unheard by jenna) when the battery runs out. \n\njenna: (shouting to jerry) i was really happy with my old toothbrush. \n\njerry: no, trust me, that one was doing more harm than good. don't forget to use the plax too. \n\njenna (o.c.): that stuff tastes like bleach! \n\njerry: i don't know anything about that. \n\njenna: mmm. my mouth feels so clean. \n\njerry: that's the idea. \n\njerry: you know, maybe we better not. i, i think i'm getting a little cold. i don't wanna give you any of my germs. \n\njenna: aww. okay. thanks, i guess. \n\nelaine: you still couldn't kiss her? \n\njerry: she has a taint. i can't see it, but i know it's there. \n\nelaine: oh, so now you're finding fault on a sub-atomic level. \n\njerry: maybe if i could shrink myself down, like in fantastic voyage, and get inside a microscopic submarine, i could be sure. although if there was something there, it might be pretty scary. course, i would have that laser. \n\nelaine: jer, do you see where this is going? \n\njerry: being really clean and happy? \n\nelaine: jerry, you have tendencies. they're always annoying, but they were just tendencies. but now, if you can't kiss this girl, i'm afraid we're talking disorder. \n\njerry: disorder? \n\nelaine: and from disorder, you're a quirk or two away from full-on dementia. \n\njerry: (thoughtful) hmm, that could hurt me. (pointing out of window) hey, there it is. \n\nelaine: shall we stop and say hi? \n\njerry: nah, we've seen it. \n\nelaine: yeah. \n\nkramer: (shouting after car) hey jerry! yeah, i'll see you back at the house! \n\nkramer: mile one-fourteen, clean as a whistle. \n\nman: yeah? \n\nelaine: hi. i'm your neighbour, uh, fr... from across the street. and uh, (coughs nervously) i was wondering, if it wouldn't be too much trouble, if i could use your apartment to order some food? \n\nman: wha? what d'you want? \n\nelaine: you see, there's this certain flounder and they won't deliver it to my side of the street. \n\nman: wh, when is that? \n\nelaine: no, i just need them to deliver it here and i have to be kinda inside is all. \n\nman: who are you with? \n\nelaine: no, actually i'm... i'm just kind of hungry. \n\nman: who let you in? \n\nelaine: well, the lock was broken. you just have to jiggle it, actually. but, i just need like a half an hour to an hour. \n\njerry: what's with the signs? \n\nkramer: hey, you should see the berkhardt, jerry. my mile is spotless. i mean the big stuff was easy. cinderblocks, air-conditioners, shopping carts (makes sound - fzup!), i just rolled 'em into the woods. \n\njerry: yeah, that stuff's all natural anyway. \n\nkramer: (holding up a sign) speed limit, one hundred and sixty-five miles per hour. see? they slipped a one in there. (laughing) those kids with the spray paint, god love 'em. \n\njerry: hey. so, keys? \n\ngeorge: no keys. and i been calling the city all day. course there's not really a number to call if you wanna make a pothole. \n\njerry: i guess they leave that up to the general population. \n\ngeorge: i tell you this. if the real phil rizzuto was down there, this wouldn't be happening! \n\njerry: hard to say. \n\nkramer: hey, you need some roadwork done? 'cos i met some maintenance guys today on the highway, they could probably help you out. \n\ngeorge: really? \n\nkramer: oh yeah, yeah. i borrowed some cones from them when i was sweeping my car-pool lane. \n\njerry: yeah? \n\njenna (o.c.): it's jenna. \n\njerry: if you guys wouldn't mind, i would like to ward off dementia. \n\ngeorge: you think you could hook me up with these guys? \n\nkramer: oh yeah, yeah. give me a ring tomorrow. i'm gonna be at emergency callbox seven-eight-four. \n\ngeorge: seven-eight-four. \n\njenna: hey. \n\njerry: hi. \n\njenna: how you feeling? \n\njerry: good. my cold's gone, and i've been looking forwards to kissing you, which i'm ready to do now, if you are ready. \n\njenna: what?! \n\njerry: nothing. i just, i uh, i bruised my lip. i was drinking a celray, and i brought it up too fast and i banged it into my lip, (lower voice and hurriedly) and then i knocked your toothbrush into the toilet and i wasn't able to tell you before you could use it. \n\njenna: what? \n\njerry: i'm sorry. \n\njenna: when were you gonna tell me this?! \n\njerry: obviously never. \n\nkramer: i need the yield sign. \n\njerry: kramer, i'm kind of in the middle of something. would you get these signs out of here, please? \n\nkramer: you could've introduced me. \n\njerry: i wouldn't know where to start. \n\njerry: (knocking) hey, jenna. hey! \n\njenna: there. now something of yours has been in the toilet. \n\njerry: what?! wha... what'd you put in there? \n\njenna: gotta run. \n\njerry: oh, man! \n\njerry: (into phone) hello, jenna, did you dunk the spatula? was it the spatula? hello? dammit! \n\nelaine: she won't even give you a hint? \n\njerry: no. could be anything. the whole apartment's a biohazard. \n\nelaine: you know what i bet it is? (points) your remote. \n\njerry: yes, that is a definite possibility. \n\nelaine: (walking to the couch) or, could be your walkman there. \n\njerry: are you just screwing with me? \n\nelaine: yeah, i am. \n\nkramer: hey ah. \n\njerry: hey, how's life on the road? \n\nkramer: oh, i'm making a difference jerry. \n\njerry: i don't doubt it. \n\nkramer: you should see the smiles on the drivers' faces. i mean, you gotta look quick, but they're there. \n\njerry: what's this? \n\nkramer: well, you know, those annoying little bumps on the lane-lines? (makes noise - bum, bum, bum, bum, bump) \n\njerry: isn't that some kind of safety thing? \n\nkramer: well, i had to pull 'em up if i'm gonna widen the lanes. \n\njerry: what the hell are you talking about? \n\nkramer: ah, you know how in planes they got first class? more leg room, better ride? well, i'm bringing that concept to mile one-fourteen. \n\nelaine: how are you gonna widen the lanes? \n\nkramer: well you black out lane-lines one and three, and a four-lane highway becomes a two-lane comfort cruise. (to jerry) so, you got any black paint? \n\njerry: (sarcasm) yeah, in my toolshed, next to the riding mower. \n\nelaine: (into phone) yuh, i'd like an order of supreme flounder, number forty-seven. yeah, apartment one-q. \n\njerry: one-q? whose apartment is that? \n\nelaine: that's the janitor closet, across the street. \n\njerry: you're pretending to live in a janitor's closet, just to get this flounder? \n\nelaine: it's better than eating it alone in the restaurant, like some loser. \n\nkramer: that stuff is unbelievable. i'd eat it out of a dumpster. \n\nelaine: (heading to door) how do you know about it? you're not in the delivery zone. \n\nkramer: well, newman uses his mail truck to run fish for china panda on the weekends. \n\nelaine: well, mine's coming in ten, so... see you boys. \n\nkramer: now, where's that tool shed of yours? \n\nelaine: hi. sorry, i didn't hear you. i was in the shower. \n\nelaine: i'll see you. \n\nralph: you costanza? \n\ngeorge: yeah. thanks for, thanks for coming by fellas. eh, got a set of keys, buried in the pothole. \n\nralph: what're the keys doing in there? \n\ngeorge: just need to uh, to dig 'em up. \n\nralph: you put 'em in there? \n\ngeorge: nah, nah, it's uh, it's a long story. just uh, try to get it up. \n\nralph: bad place to put your keys. \n\ngeorge: yeah, i know that. (clears throat) could you start, working? \n\nralph: difficult job. you want those keys, we're gonna have to dig this up. \n\ngeorge: (penny drops) oh, uh, wait a minute, wait a minute. (snorts) is this about money? \n\nralph: yeah. (snorts) it's about money. \n\nmrs allister: 'scuse me, what are you doing in there? \n\nelaine: uhm, nothing. i was just uhm... i wasn't in there. \n\nmrs allister: you were hanging around in there, lazing on the job. when you shoulda been downstairs in the basement, cleaning out those old carpets and scrap wood. \n\nelaine: right, because... i'm the janitor. (picks teeth with fingernail) \n\nmrs allister: don't get smart with me. \n\nelaine: (meek) yes ma'am. \n\nradio: hey, and if you're heading north on the arthur berkhardt, whoah nelly, for some reason four lanes are converging into two, instantaneously right at mile-marker one-fourteen. i don't know what that is, but the a-b's a parking lot out there. somebody screwed up on that one. \n\nelaine: oh it's you. \n\njerry: is the flounder here yet? \n\nelaine: no, it's not here yet. you want the tour? \n\nelaine: (gesturing) there's this. \n\njerry: nice. french doors'd really open this place up. oh, but you have a slop-bucket. \n\nelaine: (gleeful) the fish! \n\nelaine: ah, what're you doing here? \n\ngeorge: hey. \n\njerry: hey. \n\ngeorge: oh, i was uh, i was waiting downstairs for the jackhammer, thought i'd drop by. \n\njerry: kramer's guys? \n\ngeorge: yeah. i got 'em down to fifty bucks. i just have to do all the jackhammering myself. \n\njerry: oh that's nice, kind of a hard-labour fantasy camp. \n\ngeorge: ow! \n\nelaine: uh, man! \n\nkramer: huh, yeah. (looks round) oh, sweet setup. elaine, d'you have any paint thinner? i need like uh, forty gallons. \n\nelaine: i'm plumb out. \n\nkramer: oh man, if i don't get that black paint off the city's gonna go ape. i don't wanna lose my baby! \n\nmrs allister (o.c.): janitor? \n\nelaine: (to the guys) uh, mrs allister. (louder) yeah, uh, just coming mrs allister. (to guys) okay, i've gotta get out. \n\nelaine: here, can you move, you gotta move from the door. \n\nelaine: hi, i uhm... what can i do for you? \n\nmrs allister: i told you yesterday to haul that trash outta the basement. \n\nelaine: yeah, i am so sorry. \n\nmrs allister: some of the children have been playing near it and putting it in their mouths. \n\nelaine: well, a lot of it is vegetable... \n\nmrs allister: get that stuff outta there today, or you'll be outta here. understand? \n\nelaine: (meekly) yes ma'am. \n\ngeorge: ...stop pushing. (to elaine) kramer spilled ammonia. \n\njerry: i don't feel like eating. \n\nkramer: (holding up a set of heavy chains) i'm gonna borrow this, huh? \n\nelaine: (to mrs allister) janitor's meeting. \n\njenna: so jerry, why'd you call me? \n\njerry: well, i thought it's about time we put aside all this silliness. i know now you didn't put anything in my toilet bowl. (pause) did you? \n\njenna: yes, i did. \n\njerry: well, whatever. so, how've you been? \n\njenna: good. \n\njerry: good. (pause) steak knife? \n\njenna: just eating away at you isn't it? \n\njerry: nah. \n\nelaine: hi. \n\njenna: hi. \n\njerry: hi. \n\nelaine: hi. jerry, can i borrow your car? \n\njerry: for what? \n\nelaine: i have to haul some dirty garbage to the dump. \n\njerry: dirt? that's alright, (for jenna's benefit) because there's nothing wrong with dirt. \n\nelaine: well, actually it's pretty grimy. \n\njerry: grime, grease, filth, funk, ooze. whatever it is, you take that stuff and put it right on my leather upholstery. \n\nelaine: well, i don't know who you are, but thanks for the car. \n\njerry: sure. bye. \n\nelaine: bye. \n\njenna: bye. \n\nelaine: bye. \n\njerry: there, you see? i just leant her my car, and she's gonna fill it with all sorts of... (he cracks) alright! you win! that car was my last germ-free sanctuary. i slept there last night! now, for the love of god, please, what is it? what is it?! \n\njenna: toilet brush. \n\njerry: toilet brush, oh (he pulls a 'damn, shoulda guessed!' face). alright, i can replace that. \n\njenna: you wanna order dinner? \n\njerry: yeah. let's uh, go to your place. because i, threw out all my dishes. \n\njerry: that's true. \n\njenna: mm. \n\njerry: but, i'll tell you this much. i am never going to let some silly hygienic mishap get in the way of, what could be, a meaningful, long-lasting relationship. \n\njenna: do you hear something? \n\njerry: i don't know what that could be. \n\nhead: holy cow! \n\njerry: anyway, i'm a new man, and i'm looking towards the future. clean, dirty, whatever. \n\njerry: holy cow! have a nice life. \n\nelaine: hey, look at this. wide lanes. this is so luxurious. woo, yeah. \n\nkramer: bugger! \n\nnewman: (sings) you're once. twice. three times a lady. \n\nnewman: what the hell was that? \n\nkramer: double bugger! \n\nnewman: (sings) yes, you're once. twice. three times... \n\nnewman: aaah! aaagh! aah-aah. oh, oh the humanity! aaagh! \n\nkramer: hey buddy. what're you doing out here? \n\nkramer: man, did you see that fireball? woo-hoo-hoo, hoo-hoo. \n\nkramer: hey, i gotta skedaddle. you wanna lift? \n\nkramer: newman! newman!! \n\nkramer: well, i'll meet you at the coffee shop. \n\njerry: you know at the movies, they show that little ad for the concession stand? \n\nelaine: where the cartoon candy's dancing and the milk dud's playing the banjo? \n\njerry: he's wailing on that banjo. \n\nelaine: yeah. \n\njerry: i just don't understand the raisinettes. \n\nelaine: the sax player? \n\njerry: yeah. \n\nelaine: yeah. \n\njerry: the box of raisinettes runs up to the concession stand, buys another box of raisinettes. \n\nelaine: so? \n\njerry: box of raisinettes eating another box of raisinettes? it's perverse. \n\nelaine: he's not gonna eat them. he's buying 'em for his pepsi girlfriend. \n\njerry: why's he dating a pepsi? they're not having children. \n\nelaine: he's a musician. \n\njerry: musicians. get a real job. \n\nwaitress: what d'you want? \n\ngeorge: ah, i've had everything on the menu. uh, surprise me. \n\ndanielle: (to george) neil. \n\ndanielle: neil. \n\ndanielle: (apologetic) oh, i am sorry. (smiling broadly) i'm supposed to meet my boyfriend here. he looks just like you. \n\ngeorge: (bemused) really? \n\ndanielle: (smiling) yeah. \n\ngeorge: (pointing to himself) like me? \n\ndanielle: uh-huh. sorry. \n\ngeorge: (confused, to himself) like me? but how? \n\nwaitress: here's your halibut omelette. surprised? \n\ngeorge: yes, yes, i am. \n\nkramer: look what i got for you, for your florida trip. crazy shirts was closing 'em out. i got a dozen for a buck. \n\nkramer: saved a fortune. look at that. heyy. \n\njerry: (reading, unimpressed) ohh, 'number 1 dad'. \n\nkramer: yeah. \n\njerry: (examining the label) ooh, and it's in medium. perfect. \n\nkramer: hey. \n\ngeorge: hey. \n\njerry: hey. \n\ngeorge: hey. you ready? \n\njerry: almost. \n\nkramer: okay, look, uh, when you're in florida, can my cigar guy drop off some cubans for me at your parents' house? \n\njerry: (reluctant) kramer, i'm helping my parents move into their new condo. i'm gonna be busy. \n\nkramer: aw, c'mon man. help a brother out. \n\njerry: (grudging) alright. \n\nkramer: yeahh. i owe you one. \n\njerry: (holding up the '# dad' shirt) we're even. \n\ngeorge: jerry, figure this out. i'm in the coffee shop, and this beautiful girl i could never even talk to, mistakes me for her boyfriend. \n\njerry: (continuing to pack) that's a nice four seconds. \n\ngeorge: (incredulous) i look just like him. i. me. (flings his arms out) this! this is what her boyfriend looks like. how is that possible? \n\njerry: maybe he has money. \n\ngeorge: (wondering) maybe he doesn't. maybe he and i are exactly the same, except for one minor, yet crucial, detail. you never know. \n\njerry: (zipping up his bag) sometimes you do. \n\ngeorge: maybe it's some small thing i could change. like a moustache. or wearing a top hat, or a monocle, or a..or a cane. \n\njerry: (picking up his bag and coat) who's she dating? mr peanut? \n\ngeorge: (pointedly) she could do a lot worse than mr peanut, my friend. \n\nblaine: so, what d'you wanna see? \n\nelaine: (indicating a movie poster) what about sack lunch? \n\nblaine: (indicating another poster) how about the english patient? it's up for all those oscars. \n\nelaine: oh, c'mon blaine. i mean, look at the poster for sack lunch. \n\nblaine: it's a family in a brown paper bag. \n\nelaine: (laughing) don't you wanna know how they got in there? \n\nblaine: no. \n\nelaine: (disappointment) aww. sold out. \n\nblaine: (to the booth guy) oh, two for the english patient. \n\nelaine: so d'you think they got shrunk down, or is it just a giant sack? \n\ngeorge: (smiling) uh, hi. uhm, remember me? i..i'm the guy who looks like neil? \n\ndanielle: (smiling back) hi. \n\ngeorge: huh-hi. (looks around a little) uhm, is neil here? \n\ndanielle: oh, no. he got held up at work. \n\ngeorge: oh, that's too bad. i kinda wanted to meet him, seeing as how we look so similar. \n\ndanielle: well, you know, you don't look that much like him. \n\ngeorge: (disappointment) oh. course not. \n\ndanielle: no, you're a little taller. \n\ndanielle: you look like you're in better shape than neil. do you work out? \n\ngeorge: (smiling) listen, i..i..i don't mean to seem forward... \n\ngeorge: ...but is there any way that i could possibly have neil's phone number? \n\nelaine: (very dissatisfied) why is everyone talking about \"the english patient, it's so romantic\". (vehement) god, that movie stunk! \n\nblaine: i kinda liked it. \n\nelaine: (firm) no you didn't. \n\ncarol: elaine. elaine, did you just see the english patient? \n\ngail: (tearful) didn't you love it? \n\nlisa: how could you not love that movie? \n\nelaine: how about, it sucked? \n\ncarol: that ralph fiennes, i would give up my firstborn for him. \n\nelaine: (aside) huhh, getting the short end of that stick. \n\nmorty: jerry, this is del boca vista's new physical fitness room. they got medicine balls, you can bike ride, anything you want. \n\njerry: stairmaster? \n\nmorty: what? \n\njerry: nothin'. \n\nmorty: (opening his tracksuit top) see what i'm wearing? \n\njerry: oh, did you get that outta my bag? \n\nmorty: no, your mother found it. son, this is the most wonderful and thoughtful thing you've ever done for me. \n\njerry: you know, i bought you a cadillac. twice. \n\nmorty: hoh, here he is. this is the man i wanted you to see. izzy mandelbaum. he's eighty years old, but strong as an ox. (pointing) watch this. \n\nmorty: see that? you couldn't do that. \n\njerry: i could, but i choose not to. \n\nsid: hey morty. (nodding toward jerry) who's this? \n\nmorty: this is my son jerry, from new york. (leaning toward sid) he thinks he can lift more than izzy. \n\njerry: (protesting) i..i didn't say that. \n\nsid: (calling over) hey, izzy, this kid says he can lift more than you can. \n\nizzy: your kid's pretty funny, morty. should be a comedian. \n\njerry: (smiles) actually, i am a comedian. \n\nsid: that's not so funny. \n\nizzy: (challenging) think you're better than me, huh? \n\nmorty: izzy used to work out with charles atlas in the fifties. \n\njerry: (jocular) eighteen-fifties? \n\nizzy: yeah, that's it. it's go time. (points to the weights he put down) let's see you lift that. \n\njerry: (reluctant) mr mandelbaum, i... \n\nizzy: c'mon, c'mon. pump it! \n\njerry: (consenting) alright. \n\nizzy: yeah, wrong attitude. you're not bringing that trash into my house. \n\njerry: there. alright? \n\nizzy: step aside, stringbean. \n\nizzy: i'll show you. we're gonna take it up a notch. \n\nizzy: (agonised) ah! my back. ugh. \n\nizzy: (drawn out) aaaahh. \n\nsid: somebody, call an ambulance. \n\nmorty: (unpanicked) there's already an ambulance here for mrs glickman. there's room for one more. \n\nelaine: (handing over her money) okay, one for sack lunch. (taking the ticket) it's good, right? (smiling) yeah, good. \n\nelaine: (surprise) hey, what're you guys doing here? \n\nlisa: we just saw the english patient again. \n\ngail: it's even better the second time. \n\nelaine: they make it longer? \n\nblaine: (to the girls) got my umbrella. \n\nelaine: (shocked) blaine!? \n\nblaine: elaine. \n\nelaine: i thought you were busy tonight. \n\nblaine: (cold) well, to tell you the truth elaine. i don't know if i can be with someone who doesn't like the english patient. \n\nelaine: it's just a stupid movie. \n\nblaine: (to carol) that's what i'm talking about. \n\ncarol: (taking blaine's arm) come on, blaine. let's go. \n\nblaine: (bitter) enjoy sack lunch! \n\nelaine: (fierce) i will! \n\nhelen: (accusing) how could you do that to mr mandelbaum? you should be ashamed of yourself. \n\njerry: (defensive) he egged me on. \n\nhelen: you should be more mature. \n\njerry: he's eighty! \n\nmorty: (standing) okay. tomorrow, jerry and i will visit izzy and apologise. now, goodnight. \n\nhelen: (walking after morty) you're not sleeping in that shirt. it's too tight. \n\nmorty: this shirt will never leave my body. \n\nhelen: (to jerry) goodnight. \n\njerry: (smiling) alright. seven-thirty, got the place to myself. \n\nguillermo: jerry seinfeld please. \n\njerry: ah, you must be kramer's guys. (indicating) come on in. you got the cigars? \n\nguillermo: what cigars? \n\njerry: kramer said i was supposed to bring him back some cubans. \n\nguillermo: (indicating the threesome) we are the cubans. \n\nkramer: yeah, hello, jerry's place. \n\njerry: (animated) they're real cubans?! they're human beings, from cuba?! \n\nkramer: i said cubans. what'd you think i meant? \n\njerry: cigars! \n\nkramer: jerry, cuban cigars are illegal in this country. that's why i got these guys. \n\njerry: (incredulous) you're making your own cigars now? \n\nkramer: yeah, yeah. i got investors all lined up. \n\njerry: (to kramer) hold on a second. (to morty) hiya dad. \n\nmorty: (without looking up) who are they? \n\njerry: they're cuban cigar rollers. \n\nmorty: (walking back out of the room) don't tell your mother. \n\njerry: what is that bubbling sound? are you making your tomato sauce? \n\nkramer: hot and spicy. \n\njerry: (accusing) you're not wearing a shirt, are you? \n\nkramer: yes i am. \n\njerry: what colour is it? \n\nkramer: damn! \n\ngeorge: you know, you could've just given me neil's number. you..you didn't have to take me out to dinner. \n\ndanielle: i wanted to give it to you in person. \n\ndanielle: (flirtatious) you know, i don't have to be up in the morning, and i know a great breakfast place, right around the corner. \n\ngeorge: does neil like to eat a big breakfast? \n\ndanielle: (inviting) why don't you come in? we'll take about it. \n\ngeorge: (looking at his watch) i really should get going. y'know, i..i wanna be home in case neil calls. \n\ndanielle: well, goodnight. \n\ngeorge: (hurried) i'll see you. \n\nwaitress: rough night? \n\nelaine: ugh. you wouldn't believe it. my boyfriend dumped me. my friends, who i don't even like, they won't talk to me. (face-pulling) all because i don't like that stupid english patient movie. \n\nwaitress: really? i thought it was pretty good. \n\nelaine: oh, come on. good? what was good about it? (scoffs) those sex scenes! i mean, please! gimme something i can use! \n\nwaitress: (sour) well, i liked it. \n\nelaine: (calling after) hey. you forgot about my piece of pie. hello? (irritated) you know, sex in a tub. that doesn't work! \n\njerry: this is quite a condo. \n\nmorty: the mandelbaums own the magic pan restaurants. \n\njerry: the crepe place? \n\nmorty: yeah. this is all big crepe money. \n\njerry: (doubtful) there's crepe money? \n\nizzy: what are you doing here? \n\njerry: (apologetic) aw, mr mandelbaum, i just wanted to come by and tell you how sorry i was that you hurt yourself. \n\nizzy: what the hell is that? \n\njerry: what? \n\nizzy: that shirt. you think that you are the number one dad? \n\nmorty: this was a gift from my son. \n\nizzy: oh, i see how it works now. (indicates jerry) he knocks me outta commission, so (indicates morty) you can strut around in your fancy number one shirt. (moves the bedcovers) well, i'll show you who's number one. \n\njerry: mr mandelbaum, please. \n\nizzy: it's go time. \n\nizzy: (pained) ahh. my back. i can't move. \n\nmorty: call an ambulance. \n\njerry: i think i saw one a coupla doors down. \n\njerry: (disbelief) so she wanted you to come up, but you left because you thought some guy might be calling you?! \n\ngeorge: (animated) some guy. some guy? neil! i have got to find out how he could get a girl like danielle. \n\njerry: (pointing out the obvious) george, you've got danielle. forget about neil. you've out-neiled him. \n\ngeorge: (surprised) so, i'm neil? how did i do that? \n\njerry: i don't know, but you better keep it up. \n\ngeorge: i'm gonna go meet danielle. (grabs his coat) there's a new neil in town! (triumphant laughter) hahaha! \n\njerry: (to himself) i try to take a vacation, i come back, the whole operation's a shambles. (answers phone) hello. \n\nmorty: hey jerry. number one here. did you go see izzy at the back specialist? \n\njerry: i will, i just walked in the door. \n\nhelen: you have to go see him. \n\njerry: ma. \n\nmorty: helen, will you stop bothering him. \n\nhelen: jerry, that shirt is gone right to his head. \n\nmorty: number one, signing off. \n\nkramer: jerry, i just picked up the cubans at the bus station. (shrill) what's going on!? \n\njerry: what? \n\nkramer: (animated) they're not real cubans. they're dominicans. \n\njerry: so? \n\nkramer: so, jerry, if my investors don't get cubans, the whole deal's off. \n\njerry: what's the difference? \n\nkramer: jerry, once you've had real cubans, there's just nothing else like it. \n\njerry: (confused) we're talking about people, right? \n\nkramer: yes, yes. the quality, the texture, the intoxicating aroma. these guys don't have it. \n\njerry: i thought they smelled pretty nice. \n\nkramer: jerry, your palate's unrefined. \n\njerry: is not. \n\nkramer: is too. \n\njerry: is not. \n\nkramer: is too. \n\njerry: i'm not having this conversation. \n\nkramer: are too. \n\njerry: am not. \n\nkramer: are too. \n\njerry: am not. \n\nkramer: are too. \n\npeterman: another productive meeting. by the way, i saw that english patient film last night. it was extraordinary. \n\ndugan: (enthusiastic) oh yes. it was so romantic. it ravished me. \n\npeterman: elaine, what'd you think? \n\nelaine: (hesitant) well, uh, act..actually, i haven't seen it. so, i couldn't tell you whether i liked it, or whether it really sucked. \n\npeterman: (aghast) you haven't seen it? \n\nelaine: (shakes head) no. \n\npeterman: that's it! drop everything. we're going right now. \n\njerry: again, mr mandelbaum, this back specialist is supposed to be the best. so if there's anything else i can do, please don't hesitate to, uh, try and find my number. \n\nizzy: uh, oh, wait. \n\nizzy: how 'bout that, huh? the world's greatest dad. my son made it for me. \n\njerry: (humouring him) that's very nice. \n\nizzy: the best in the world. (pointing to himself) which means i'm better than just number one. \n\njerry: well, i don't know how official any of these rankings really are. \n\nizzy: hi, son. \n\nizzy jr.: hi daddy. \n\njerry: (surprise) this is your son? \n\nizzy: i got married in high school. \n\nizzy jr.: (to jerry) hey, who are you? \n\nizzy: this is seinfeld's kid. \n\nizzy jr.: oh, you think you're tough, picking on an old man? (squaring up to jerry) maybe you'd like to try taking on somebody your own age. \n\njerry: (jocular) you got any kids? \n\nizzy jr.: oh, you think you're better than me? (challenging) go ahead, pick out anything in the room here. i'll lift it up over my head. \n\njerry: (trying to defuse the situation) look, no-one is lifting anything. \n\nizzy: (pointing) the television. \n\njerry: (under his breath) oh no. \n\nizzy jr.: this one's for you, pop. it's go time. \n\nizzy jr.: (pained) ohh! my back! \n\nizzy: (urgent) call an ambulance. \n\njerry: (laconic) we're already in a hospital. \n\nhaffler: awright, partner. let's get down to business. \n\nkramer: (nervous) okay, well, uh, i'll uh, i'll get the cubans. \n\nkramer: they're right out here. \n\nkramer: hey, here they are. the cubans. real cubans. \n\nhaffler: you wouldn't be trying to sell old earl haffler dominicans in a cuban wrapper now, would you? \n\nkramer: (fidgety) oh, now, come on. look at these boys. if they were any more cuban, castro would've smoked them himself. huh. \n\nhaffler: (confusion) we're talking about people, right? \n\nkramer: (puzzled) i think so. \n\nhaffler: i thought he quit smoking cigars. \n\nkramer: well, yeah, yeah. but they also rolled for his brother... (thinks for a second) ...dennis. \n\nhaffler: (dubious) dennis castro? \n\nkramer: uh, dwayne. \n\nhaffler: get the hell outta my office. \n\nkramer: (shrill) what!? \n\ndanielle: you know, neil called me today. \n\ngeorge: (interested) really? \n\ndanielle: yeah. he's pretty upset that i broke up with him to go out with you. \n\ngeorge: (smug) ah, i guess i showed neil who's neil. \n\ndanielle: he wants to get together tomorrow night and have coffee. \n\ngeorge: (little worried) coffee? (thinks) i can beat that. move in with me. \n\ndanielle: (surprised) what? \n\ngeorge: (smiles) beats the hell out of coffee. \n\npeterman: (emotional) and i thought i knew what love was. \n\nelaine: (indifferent) yuh. \n\njerry: (incredulous) you asked her to move in with you? \n\ngeorge: i gotta stay one step ahead of neil. \n\njerry: (musing) what if it's neil armstrong? \n\ngeorge: (animated) then i'm going to mars! \n\njerry: what if it's neil diamond? \n\ngeorge: (tormented) aw, shut up jerry! just shut up! \n\njerry: alright, i gotta go back to the hospital. \n\ngeorge: what, to see the old guy? \n\njerry: no, i got into a thing with the son, and now he's laid up too. \n\ngeorge: how old's the son? \n\njerry: i think he's the same age as the father. \n\ngeorge: what is with this family? \n\njerry: i dunno. it's like, if one of 'em dies, the other one wants to bench press the casket. \n\nkramer: (quietly) hey, jerry. \n\nkramer: (noise - like shivery) datiditadit. \n\njerry: you're cold? \n\nkramer: no. (indicates with his head) (noise again) ditadidatidat. \n\njerry: something wrong with your chest? \n\nkramer: (indicating with his thumb) dijadidatjd. there. \n\njerry: (leaning round kramer) where? \n\nkramer: (urgent) no, no. don't look. don't look. \n\nkramer: over there. the dominicans. \n\njerry: aren't they supposed to be rolling cigars? \n\nkramer: well, it didn't quite work out, and now i've got nothing for them to do. \n\ngeorge: so? \n\nkramer: so, i taught 'em all about cuba, and they really took to it. you know, marxism, the worker's revolution, the clothing. \n\njerry: boy, they seem pretty angry about something. \n\nkramer: (nervous) yeah. i'm a little worried. when there's no work, and the people get restless, who do you think they come after? (pointing to himself, shrill) el presidente! \n\njerry: i swear to you, i didn't know they tv was bolted to the table. \n\nizzy jr.: i bet you pulled that trick on my daddy, in florida. \n\njerry: he couldn't handle the weight. \n\nizzy: (hostile) oh, so now you think you're better than me? \n\nizzy jr.: (indicating izzy) you think you're better than him?! \n\njerry: (placatory) look, let me just state for the record, i think you're both better than me. \n\nizzy: okay. \n\nizzy sr.: my boys. \n\nizzy: my dad. \n\nizzy jr.: my grandpa. \n\njerry: (incredulous) oh, come on! \n\nizzy sr.: (indicating izzy jr) what happened to him? \n\njerry: he was trying to lift the tv. \n\nizzy sr.: (pointing) that tv? \n\njerry: (consternation) oh no. (to the bedridden two) it's go time. \n\nizzy izzy sr.. (o.c.): (pained) oohh! \n\nizzy sr.: why didn't anybody tell me? it was bolted down! \n\nizzy: i still thought you could do it. \n\nizzy jr.: me too. \n\nizzy/izzy jr/izzy izzy sr.: (chanting and punching the air) mandelbaum, mandelbaum, mandelbaum... \n\njerry: fellas, fellas, look, i gotta go. \n\nizzy: oh yeah, that's right. go. put us all in the hospital. and you've ruined our business with all your macho head games. \n\njerry: (defensive) i didn't ruin your business. \n\nizzy: yes, you did. there's nobody there now at the magic pan to roll the crepes. we gotta close it up. \n\njerry: (uncertain) don't you hire people to do that? \n\nizzy: each crepe has to be hand-rolled by a mandelbaum. that's what puts the magic in magic pan! \n\njerry: (thinking) so, you just need some guys that could roll 'em? \n\nizzy: yeah. \n\njerry: (having an idea) i think i can help you out. i'll see you later. \n\nizzy sr.: (calls) hey, i can't see the tv. \n\njerry: here. \n\nizzy: you think you're better than us, don't you?! huh!? \n\npeterman: elaine, i hope you're watching the clothes, because i can't take my eyes off the passion. \n\nelaine: (quiet vehemence) oh. no. i can't do this any more. i can't. it's too long. (to the screen) quit telling your stupid story, about the stupid desert, and just die already! (louder) die!! \n\npeterman: (surprised) elaine. you don't like the movie? \n\nelaine: (shouts) i hate it!! \n\ncrowd: shh! \n\nelaine: (shouts) oh, go to hell!! \n\npeterman: (quietly) well, why didn't you say so in the first place? you're fired. \n\nelaine: (grabbing her bag and coat) great. i'll wait for you outside. \n\njerry: he was gonna fire you? \n\nelaine: the only way i could talk him out of it was that i agreed to go and visit the tunisian desert. \n\njerry: tunisia? \n\nelaine: that's where they filmed the movie. it's supposed to inspire me. \n\njerry: well, that doesn't sound so bad. \n\nelaine: i have to live in a cave. \n\njerry: (sardonic) oh. (smiles) \n\nkramer: these dominicans really know their way round a crepe. look at that. it's like they're rolling a double corona. \n\nkramer: (to one of the guys) just a cigar made outta bisquik, huh, guillermo? \n\ndanielle: i'm very happy with george. i'm sorry neil, it's over. \n\ndanielle: come on, let's just eat our crepes. \n\ncustomer: (pained scream) aaghh!! my face! \n\ndanielle: (concerned cry) neil! \n\njerry: why are the crepes spraying? \n\nkramer: (looks over at the three guys) the dominicans are rolling them too tight. (regretful) uhm, well, that's why you gotta get real cubans. \n\ngeorge: danielle. where's neil? (indicating the bed) is this him? \n\ndanielle: yeah, that blueberry crepe burned him pretty badly. \n\ngeorge: (to danielle) whose cane is this? \n\ndanielle: it's neil's. \n\ngeorge: (to himself) a cane. i knew it. (to neil) so, we meet at last. i admire your skills, mr peanut. \n\ngeorge: well, danielle, (digs in his pocket) we should get going. i got a key made for you. \n\ndanielle: george, i can't move in with you. \n\ngeorge: (shocked) what? \n\ndanielle: i'm sorry, but i'm taking neil to a clinic in england. \n\ngeorge: (animated) n..no, no. you can't leave me. (frantic) marry me! i'll burn myself. i'll burn my parents! \n\ndanielle: sorry george. \n\nneil: (beckoning) george. \n\nneil: (quiet triumph) i win. \n\ntan: ladies and gentlemen. in just one moment, we'll be showing our feature presentation... \n\nelaine: (dread) no, no, no, no, no. \n\ntan: ...the comedy hit, sack lunch, starring dabney coleman. \n\nelaine: (cheering up) ah, right! aw, this is shaping up. \n\nguy: excuse me, please. \n\nelaine: oh, sure. \n\nelaine: (uncomfortable) ooh. \n\nguillermo: ladies and gentlemen. because we have been exploited by your magic pan crepe restaurants... \n\nguillermo: ...we are hijacking this plane to cuba! \n\nguillermo: everyone stay in your seats. and shut that movie off! \n\nelaine: (annoyed) aww, nuts! \n\ngeorge: oh, boy i was up to four in the morning watching the omen trilogy. \n\njerry: that's good stuff. \n\ngeorge: i can't to myself. i'm exhausted. \n\njerry: can you grab a nap at work. \n\ngeorge: not with that big glass window looking out into the hall. i'd love a good nap. that's the only thing getting me out of bed in the morning. i'll see ya'. \n\nelaine: bye. \n\njerry: so what are you doing now? \n\nelaine: i'm going to take a little stroll through the park. \n\njerry: with a gentleman caller? \n\nelaine: yes, his name is hal. \n\njerry: the walking date is a good date. you don't have to look right at the other -person. \n\nelaine: it's the next best thing to being alone. \n\njerry: shower? \n\nkramer: no, pool. i just swam 200 laps. \n\nelaine: you are kidding. \n\nkramer: look at hose babies [hands]. they're prunes. i saw conrad going up to oyur place. \n\nelaine: oh, yeah, that's right. those new kitchen cabinets. how is that coming? \n\njerry: a little slow. i've got to hold this guy's hand on every little decision. \n\nelaine: hey, kramer, listen, you've seen the omen right? \n\nelaine: what exactly was that kid? \n\nkramer: who, damien? nothing, just a mischievous, rambunctious kid. \n\nwilhelm: oh, george, have you seen the american league directory? it is a big green book. oh, thanks kiddo. \n\nhal: nan \n\nelaine: well i don't care. it was delicious. \n\nelaine: wanna sit down? \n\nhal: oh, i don't sit on park benches. they're very bad for the back. \n\nelaine: really? \n\nhal: i threw my back out about 15 years ago. ever since i have been very careful. i only buy furniture in the ergonomics store. \n\nelaine: oh those places have the stupidest names. like, uh, \"back in \", or \"good vertibrations\". \n\nhal: not this one. it's called the \"lumbar yard\". \n\nconrad: oh, jerry are you okay with this hinge? \n\njerry: yeah. \n\nconrad: i can get you any kind you want, you know. four holes, three holes, two holes, bronze, no hinge at all. \n\njerry: you know, why don't we just go with the one in your hand? \n\nconrad: oh, these are different. \n\njerry: drop one. . . . left! \n\ngeorge: jerry, look at my eyes. \n\njerry: a little less beady today. \n\ngeorge: because i'm refreshed. i finally found a way to sleep in my office. under the desk. i lie on my back. i tuck in the chair. i'm invisible. \n\njerry: sounds like a really cool fort. \n\nconrad: jerry, do you want a flat edge on this molding or do you want me to bevel it? \n\njerry: i'll tell you what i would like you to do with it. \n\ngeorge: conrad, is it? \n\nconrad: conrad, connie, or con, whatever you prefer. \n\ngeorge: uh, let me ask you a question. could you, uh, expand the space underneath a desk to give it a little more headroom? \n\njerry: he's kind of tied up here. \n\ngeorge: it'll have to be a night job anyway. you don't normally work after dinner, do you? \n\nconrad: there is no normal, whatever jerry wants. he wants me here late, i'm here late, he wants me here early, i'm here early, he . . . \n\njerry: why don't you just work on george's project for a while? \n\nconrad: whatever you want. \n\njerry: so how was wednesday's walk in the park with hal. \n\nelaine: uh, it was okay,. he's coming over later to watch a movie. hey listen, what's better for your back? couch cushions or a folding chair? \n\njerry: i don't know. \n\nelaine: uh, maybe we'll just stand and watch the tv. [knock knock]. i gotta go someone's at my door. yeah! \n\ndelivery guy: delivery. elaine benes? \n\nelaine: yeah. \n\ndelivery guy: we're from the lumbar yard, we got your mattress. \n\nelaine: mattress, i didn't order a mattress. who sent this? hal kitzmiller? \n\ngeorge: do you think it might be possible to add a little shelf like, uh, for an alarm clock? \n\nconrad: you mean like that big? \n\ngeorge: like this. \n\nconrad: yeah, i can do that. \n\ngeorge: thanks. you know this could sound crazy but, what do you think about adding a drawer for - like a blanket? \n\nconrad: blanket or quilt? \n\ngeorge: blanket. \n\nconrad: that thick? \n\ngeorge: maybe like this. \n\nconrad: like that? \n\ngeorge: yeah, like that. \n\nconrad: if that is what you want. \n\ngeorge: that is what i want. \n\nconrad: hey george, you want this cup holder mounted on the left, or the right, or the middle, . . . \n\ngeorge: whatever!!. . . . oh oh oh this is unbelievable. this is better than my bed at home. \n\ngeorge: its been a long night. you go home and get some sleep. \n\nconrad: if that's what you want. \n\ngeorge: that's what i want. \n\nwilhelm: morning george. \n\ngeorge: good morning mr. wilhelm. \n\nkramer: got problems jerry. \n\njerry: what happened? \n\nkramer: well i had been swimming for three hours and i was in a real grove so i decided to keep going. but at ten they start the aquasonics thirty-five geriatrics throwing elbows. it was like i was swimming through a flabby armed spanking machine. \n\njerry: how long did that last? \n\nkramer: a half hour then diving class started. well that got a little messy. i gotta find a new place to swim 'cause that pooll can't hold me, jerry. \n\njerry: how was the movie? \n\nelaine: i cancelled. hal sent a mattress to my apartment. the nerve of that guy. \n\njerry: why? \n\nelaine: he's got a back problem. \n\njerry: so you think he was expecting a roll in the supportive hay. \n\nelaine: after one date! \n\nkramer: what's that guy's last name again? \n\nelaine: kitzmiller. \n\nkramer: oh, that's right. \n\njerry: so what are you going to do with the mattress? \n\nelaine: i don't know. chuck it? \n\nkramer: oh, no no no no i'll take it. why don't you come over. let's see if it will fit in my bedroom. \n\nelaine: oh, all right. \n\nkramer: my old one sprung a leak. \n\nelaine: you have a water bed? \n\nkramer: sand! it's like sleeping on the beach. \n\nconrad: hi, jerry i'm sorry i'm late. george and i have been up working all night long. i can make up the time in any number of ways. \n\njerry: how about this? . . . finish this thing up today! \n\nconrad: couple of questions for you. \n\njerry: no. no more questions. just figure it out for yourself and get it done. \n\nconrad: all right jerry. but i can figure it out myself any way you want. \n\njerry: just . . . do it. \n\nsteinbrenner: costanza? where's costanza? . . . excus mois? have you seen costanza? \n\nsecretary: i've seen him around. \n\nsteinbrenner: um, i'm stuck on this song yesterday. i can't seem to get it out of my head. i don't know the name of that. \"she's a heart breaker, love taker . . ..oh. oh\" . . .very catchy. you know what? i can't stay awake for that guy. what is this? people? um, the most beautiful people people. ally selica, nothing wrong with that uh? \n\nhal: elaine, your taking this totally the wrong way. that's not what ii intended. \n\nelaine: well, what did you intend, hal? \n\nhal: i just wanted you to have the comfort and report you deserve. that's why i had the mattress custom designed for you. \n\nelaine: custom designed? \n\nhal: they adjust the foam density and spring tension to your body type. i estimated your height and weight. five eight, about 110 pounds? \n\nelaine: uh, that is the nicest thing anyone has ever done for me. \n\nhal: so you do like the mattress? \n\nelaine: oh, i love it. i'm glad . . . i kept it. \n\nfather: over there, that's brooklyn . that's where spike lee lives. \n\nson: hey, there's a man swimming in the water. \n\nfather: naw, that's probably just a dead body son. you see when the mob kills someone they through the body in the river. \n\nkramer: jer. \n\njerry: hi. \n\nkramer: well my swimming pool problems are solved. i just found myself miles and miles of open lanes. \n\njerry: what is that smell? \n\nkramer: that's east river. \n\njerry: you're swimming in the east river? the most heavily trafficked overly contaminated waterway on the eastern seaboard? \n\nkramer: technically norfok has more gross tonnage. \n\njerry: how could you swim in that water? \n\nkramer: i saw a couple of other guys out there. \n\njerry: swimming? \n\nkramer: floating, they weren't moving much. but they were out there. \n\nelaine: (on phone) hey, kramer, it's elaine, thanks for bringing my mattress back. and i guess i'll just get my spare key from you - whenever. all right, bye. \n\nelaine: oh, this is a good mattress. sniff, sniff, ugh! \n\nsteinbrenner: what is with this guy? i've been waiting three and a half hours. should i go? no way jack! ??? at the registrar again, i'll tell you that. \n\nseconrad: mr. steinbrenner? \n\nsteinbrenner: that's what they call me. \n\nseconrad: your grandchildren are here to see you. \n\nsteinbrenner: oh, well, send them in. send the little tykes in.  little people .. pony express  wow, \n\njerry: (on phone) hello. \n\ngeorge: jerry, i'm trapped under my desk. steinbrenner is in the room. you got to help[ me. \n\njerry: who is this? \n\ngeorge: jerry, . . . \n\nbrady: hi, \n\ngeorge: sh, sh, goodbye, sh, get away. \n\nbrady: hi, i'm brady. \n\ngeorge: ?? get away?? \n\njerry: why don't you just have him paged? \n\ngeorge: can't you think of something. call in a bomb threat. \n\njerry: a bomb threat? why would i call in a bomb threat? \n\ngeorge: just call! \n\njerry: i should have some reason. \n\nsteinbrenner: hey you kids know tunes; see if this song rinsteinbrenner a bell, \"heartbreaker , . . . \" \n\nseconrad: mr. steinbrenner we just received a call. there's a bomb in the building. \n\nsteinbrenner: a bomb in the building, oh, m'god. quick, everyone under the desk. \n\nsteinbrenner: boy can you think of what went through my mind when i saw there wasn't going to be enough room under that desk for me and my babies. \n\ngeorge: i'm sorry sir. \n\nsteinbrenner: you know what i think? i think you knew about that bomb ahead of time. \n\ngeorge: what? \n\nsteinbrenner: ???? about that bomb. you climbed under that desk because you have esp. george, what's on my mind? . . . meatballs! huh? unbelievable. anyway this terrorist had a specific demand. not more cheap adjustable hats on hat day. he wants fitted hats just like the players wear. \n\nelaine: jerry, jerry. \n\njerry: yeah. \n\nelaine: what the hell is this? where are you? \n\njerry: over here. you can see right through here. \n\nelaine: what is this. it's like you're selling movie tickets back here. \n\njerry: it's kind of cozy. \n\nelaine: hey, you're not going to believe what kramer did to my mattress. . . . i can't talk to you like this. so kramer completely funked up my mattress. \n\njerry: does it smell like the east river? \n\nelaine: how did you know? \n\njerry: because kramer has been swimming laps between the queensborough bridge and the brooklyn bridge. \n\nelaine: oh, great! \n\nkramer: oh man, i'm on the wrong floor again. \n\nelaine: hey, thanks for ruining my mattress. it reeks. \n\nkramer: hey, you know what i think it is? i think it's that east river. i think it might be polluted. \n\ngeorge: well, you really did it to me this time, seinfeld. . . . what the hell happened here? \n\nelaine: hi. \n\ngeorge: hi. look at how obtrusive this is. \n\nelaine: it is obtrusive, isn't it? \n\nkramer: it is very obtrusive. \n\njerry: i don't think it's that bad. \n\nkramer: you can't get a stool in here. \n\njerry: no the stools go over there. \n\nkramer: no, that's no good. i'm leaving. \n\nelaine: i'm with you. i'm going back to my place. \n\ngeorge: fitted hat day! that's what you asked steinbrenner for? \n\njerry: you mean they're actually doing the fitted hats? cool. \n\ngeorge: guess who he put in charge of fitted hat day? me. \n\njerry: hey look at you. \n\ngeorge: yeah, look at me. now i gotta figure out the hat sizes of 59,000 different people!! what if a pinhead shows up. i gotta be on top of that. \n\njerry: no knock offs. i want the ones like the real players wear. \n\ngeorge: ??? knock offs. i not going to do it! and you're going to call steinbrenner back and cancel the whole thing. \n\njerry: could you at least get a hat for me? \n\ngeorge: fine? what size? \n\njerry: seven and five eighths \n\ngeorge: seven and five eighths!! \n\njerry: why are you shouting? \n\ngeorge: i don't know. it's this place. i'm very uncomfortable here. \n\nhal: so are you liking the mattress? \n\nelaine: i am totally loving it. uh, you know  we should um  get going. \n\nhal: what is that smell? \n\nelaine: what smell? \n\nhal: i think it's the mattress. did something happen to it. \n\nelaine: no no, oh, you know what that is? i um, went claming the other day and i forgot to hose off my boots. \n\nhal: claming? \n\nelaine: yeah, clam and scallop. i clam and scallop. \n\nsteinbrenner: yes, yes, come in. \n\ngeorge: sir, i just got a call from the terrorist. i told him to call back here. \n\nsteinbrenner: just let me ask you something. is it \"february\" or \" february\"? because i prefer \"febuary\" and what is this \"ru\"? \n\ngeorge: let me put that on speaker phone. \n\nsteinbrenner: hello are you the bomber? \n\njerry: yes this is the terrorist bomber. \n\nsteinbrenner: costanza here is busting his ass on those hats. \n\njerry: think i've changed my mind. \n\nsteinbrenner: you don't want them, then goodbye. \n\ngeorge: ??? sir. \n\nsteinbrenner: well what do you want instead? \n\njerry: what? \n\nsteinbrenner: well, you're the terrorist. you're going to want something. \n\njerry: i guess it would be nice if you called all the ticket holders if the game was going to be rained out. \n\nsteinbrenner: all right george, you can handle that. \n\nsteinbrenner: costanza what the hell are you doing? \n\ngeorge: you have to stand tough sir. that's why i had to hang up the phone. \n\nsteinbrenner: you know what i'm going to do? i'm going to run around the stadium and close all the windows. that's where i'm going, pal. and i'll tell you something else. i'm very nervous. \n\nelaine: gotta get some of that stuffed crust pizza. cheese crust pizza. \n\nhal: it's just more cheese. \n\nelaine: i'll tell you something. it'll be years before they find places to hide more cheese on a pizza. kramer! \n\nkramer: oh, hey, \n\nelaine: oh, hi. this is hal. hal, this is kramer. kramer, hal. \n\nkramer: hal, .. uh langerhans. \n\nhal: kitzmiller. \n\nkramer: oh, kitzmiller. that's right \n\nelaine: you feeling jiff? \n\nkramer: oh, i'm jiff. \n\nhal: that smell \n\nkramer: oh, listen i gotta get to the pier. the ferry traffic is really bad around four thirty. look, i still got the key to your apartment and i'll get it back to you as soon as i can. \n\nelaine: oh, baby. \n\ngeorge: finished. \n\nhal: kramer? can i talk to you a minute? \n\nkramer: yeah, sure, um, oh boy, . . . \n\nhal: kitzmiller. \n\nkramer: that's it. \n\nhal: you and elaine are pretty close. \n\nkramer: oh, we go back a ways. \n\nhal: and you've, . . . how do i put this? you've been in her bed? \n\nkramer: that's right. \n\nhal: but this isn't still going on. \n\nkramer: no, no. she put a stop to that. \n\nhal: that's all i needed to know. so you actually swim in this thing? \n\nkramer: oh yeah. exercises every muscle in the body. it's great for the back. \n\nhal: great for the back. right. \n\nkramer: four hours in this chop and i'm a full inch taller. . . . giddyup. \n\nsteinbrenner: \"heatbreaker, brewbaker, \" hey george, i remember that tune. george? george? um, what's that ticking. oh oh. oh, oooh,wo wo wo wo . [runs out] fire in the hole! \n\nelaine: i wouldn't believe the lumbar yard wouldn't pick this up. ug, oh, okay, . . . \n\nconrad: you want it back the way it was? \n\njerry: yeah, that's right. \n\nconrad: you know i don't get you seinfeld. you want something one day. the next day you don't like it. come on man, make a decision. \n\njerry: one second. hello. \n\nelaine: jerry you gotta help me. i threw my back out. \n\njerry: just lie down. \n\nelaine: i am lying down. i am trapped under a funky mattress. i gotta go get a doctor or at least come over and roll this thing off of me. \n\njerry: all right. i'll be right there., conrad i gotta go. \n\nconrad: stay, go whatever. \n\nhal: hey, kramer. \n\nkramer: what's going on? \n\nhal: i told my chiropractor how swimming in the river made my back heal. he recommended it to all his patients. \n\nold man: step aside. \n\nkramer: he just sunk like a stone. \n\ngeorge: sir, i'm sure it's not a police matter. \n\nsteinbrenner: don't be so sure george. mess with them and they're messing with you. all right boys send it in \n\nsteinbrenner: what's that figure ahead? is that anything? okay, let's check the desk. that's where i heard the ticking. search each one of those drawers starting with the top one. so, empty calories and male curiosity, eh, georgie? \n\nbomb cop: looks like there's more compartments underneath. \n\nsteinbrenner: compartments underneath, that's probably where it is. okay boys, let 'er rip. i'll tell you what george. starting tomorrow no more desks. just lucite tables and four lesteinbrenner. \n\nkramer: hey, watch where you're kicking! \n\nelaine: kramer. \n\nkramer: elaine \n\nelaine: i can't believe it. hey, i'll meet you at the coffee shop. \n\nkramer: yeah. \n\nelaine: yeah. \n\ngeorge: hi connie, jerry around? \n\nconrad: no, and i prefer \"conrad\". so i heard what happened to the desk. \n\ngeorge: there was something so reassuring about that cozy little space. \n\nconrad: yeah, well, whatever. see ya' \n\njerry: ah, back to normal. not bad for four thousand bucks. . . . i can't believe i got the low fat! \n\ngeorge: so, marcy, you should've seen me in the hot tub yoday. \n\nmarcy: why? \n\ngeorge: i was naked. \n\nmarcy: oh, george. \n\njerry: i saw it. \n\nmarcy: how'd he look? \n\njerry: okay. i wouldn't see it again. \n\nmarcy: you know, a friend of mine thought she got legonare's disease in the hot tub. \n\ngeorge: really? what happened? \n\nmarcy: oh, yada yada yada, just some bad egg salad. i'll be right back. (she gets up) \n\njerry: i noticed she's big on the phrase \"yada yada.\" \n\ngeorge: is \"yada yada\" bad? \n\njerry: no, \"yada yada\" is good. she's very succinct. \n\ngeorge: she is succinct. \n\njerry: yeah, it's like you're dating usa today. (tim the dentist enters monk's) \n\ngeorge: hey. \n\njerry: hey, george, you know tim whatley. \n\ngeorge: yeah, dentist of the stars. \n\njerry: what's up? \n\ntim: i'll tell you what's up. i'm a jew. \n\njerry: excuse me? \n\ntim: i'm a jew. i finished converting two days ago. \n\njerry: well... (thinking of something to say) welcome aboard. \n\ntim: thanks. \n\ngeorge: hey, where you just at the health club? \n\ntim: oh, well, i didn't do much. i just sat in the sauna. you know, it was more like a jewish workout. i'll see ya. (jerry and george give confused looks) \n\njerry: elaine, the guy's jewish two days, he's already making jewish jokes. \n\nelaine: so what? when someone turns twenty-one, they usually get drunk the first night. \n\njerry: booze is not a religion. \n\nelaine: tell that to my father. anyway, guess what? beth lookner called me. \n\njerry: ooh. beth lookner, still waitin' out hat marriage. \n\nelaine: what are you talking about? that marriage ended six months ago. she's already remarried. \n\njerry: i gotta get on that internet. i'm late on everything. \n\nelaine: anyway, beth and her new husband arnie have listed me a reference for an adoption agency. they're trying to get a baby. (kramer and mickey enter wearing the same shirt) \n\nkramer: elaine, all right, who looks better in this shirt? me or mickey? \n\nmickey: we're double dating tonight, and if we wear the same shirt we'll look like idiots. \n\nelaine: hmm, turn around. (they turn around) both so striking. \n\nkramer: tell me about it. we just picked up two women at the gap. \n\nelaine: how did you decide which one of you would date which girl? (they pause then look at each other) \n\nmarcy: so i'm on 3rd avenue, mindin' my own business, and, yada yada yada, i get a free massage and a facial. \n\ngeorge: what a succinct story. \n\nmarcy: i'm surprised you drive a cadillac. \n\ngeorge: oh, it's not mine. it's my mother's. \n\nmarcy: are you close with your parents? \n\ngeorge: well, they gave birth to me, and, yada yada... \n\nmarcy: yada what? \n\ngeorge: yada yada yada... \n\nkaren: (to mickey, wearing the shirt elaine looked at for them) i like your shirt. \n\nmickey: oh, thank you. it's 100 cotton, and some wool. \n\nkramer: well, you too seem to have the same taste. \n\njulie: well i like it, too. \n\nkramer: well i have the same shirt. \n\nmickey: yeah, well i'm wearin' it. \n\njulie: i like your shirt too. \n\nkaren: oh, so do i. \n\nkramer: oh. (waiter approaches table) \n\nwaiter: anything to drink? some wine, perhaps. \n\nmickey: i like merlot. \n\nkaren: i love merlot. \n\njulie: i'm crazy about merlot. \n\nkramer: i live for merlot. \n\nwaiter: we're out of merlot. \n\nagent: so you, uh, know betha and arnie pretty well? \n\nelaine: oh, yeah, yeah. \n\nagent: do you socialize with them often? \n\nelaine: yeah, we got out to dinner a lot. usually chinese, well sometimes thai. and we go to the movies, arnie's a real film buff. \n\nagent: oh. \n\nelaine: actually, i remember this one time, um, this is funny. um, we went to see the movie striptease. i don't know if you've seen... doesn't matter. anyway, i was whispering something to beth, and arnie leens over to me, and he goes, \"would you shut up?!\" i mean, he barely even knew me. where did he get ah-- but they're nice people. (elaine tries to smile realizing her mistake) \n\ngeorge: oh, you're in here. \n\njerry: what're you doing here? \n\ngeorge: i knew you had an appointment. \n\njerry: well this is very awkward. \n\ngeorge: i'll leave when the guy comes in. i gotta tell you, i am loving this yada yada thing. you know, i can cross over my whole life story. (picks up dental tool) \n\njerry: hey, you don't play with that. that's going in my mouth. \n\ngeorge: hey, what this thing? whew! \n\njerry: all right, that's enough. now get going. get outta here. (tim and his staff enter) \n\ngeorge: hey, tim. quick question. is it normal for your teeth to make noises, like a hissing or a chirping? \n\njerry: george... \n\ntim: um... \n\ngeorge: fine, i'll make an appointment. (he leaves) \n\ntim: all right, it is cavity time. ah, here we go. which reminds me, did you here the one about the rabbi and the farmer's daughter? huh? \n\njerry: hey. \n\ntim: those aren't mahtzah balls. \n\njerry: tim, do you think you should be making jokes like that? \n\ntim: why not? i'm jewish, remember? \n\njerry: i know, but... \n\ntim: jerry, it's our sense of humor that sustained us as a people for 3000 years. \n\njerry: 5000. \n\ntim: 5000, even better. okay, chrissie. give me a schtickle of flouride. \n\njerry: and then he asked the assistant for a schtickle of flouride. \n\nelaine: why are you so concerned about this? \n\njerry: i'll tell you why. because i believe whatley converted to judaism just for the jokes. (phone rings) \n\nphone: would you be interested in a subscription to the new york times? \n\njerry: yes. (slams down phone. kramer and mickey enter) \n\nkramer: i don't believe that. \n\nmickey: if you had gotten into the backseat of the car we could've figured this whole thing out. \n\nkramer: why were you holding the door open for? \n\nmickey: not for you! who holds a door open for a man? \n\nkramer: well, i thought it was a nice gesture. but i guess i was wrong! \n\nmickey: let's just put they're names in a hat. \n\nkramer: i don't even know their names! look, why don't you just take the one that was on the left? \n\nmickey: i'm not sure she was my type. \n\nkramer: oh, everybody's your type. \n\nmickey: what the hell does that mean? \n\nkramer: you've been married three times. \n\nmickey: that's it, it's go time! (charges toward kramer, only to be held back by jerry and elaine) \n\njerry: all right, take it easy. \n\nelaine: hey, hey, hey! \n\nkramer: come on, let him go. you want throw? let's throw! \n\nelaine: hey! hold on a second. all right, look, i got an idea. why don't you just show up early for your next date, sit across from each other, and see who the girls sit next to. \n\nmickey: that's not bad. \n\nkramer: all right, so we let the girls decide. \n\nmickey: yeah, why should we knock ourselves out? \n\nkramer: yeah, i wanna wear that shirt next time. \n\nmickey: no, no one wears the shirt next time. \n\nkramer: that's right, 'cause they already saw it. \n\nmickey: we'll look like idiots. (they exit) \n\ngeorge: well, we were engaged to be married, uh, we bought the wedding invitations, and, uh, yada yada yada, i'm still single. \n\nmarcy: so what's she doing now? \n\ngeorge: yada. \n\nmarcy: speaking of ex's, my old boyfriend came over late last night, and, yada yada yada, anyway. i'm really tired today. \n\nelaine: beth, arnie, hi. what's up? \n\narnie: well our adoption application was denied. \n\nelaine: really. \n\nbeth: the adoption agent seems to feel that arnie has a violent temper. \n\nelaine: oh. \n\nbeth: so we're just asking our friends what they may have said to the adoption agent. \n\nelaine: uh, you know, i just told them what kind people you are and, uh, yada yada yada, that is it. \n\njerry: how you doing? \n\nfather: i have a discomfort in my molar. (enter tim) \n\ntim: well, the curtis, why don't you come in? (to jerry) father curtis, good guy. oh, which reminds me, did you hear the one about the pope and raquel welch on the lifeboat, huh? i'll tell you later. (exits) \n\njerry: whatley. (like \"newman\") \n\nkramer: what are they doing here? \n\nmickey: i told you we should've gotten here a half hour early. \n\nkramer: all right, all right. now what're we gonna do? \n\nmickey: all right, don't panic. let's just decide now. which one do you want? \n\nkramer: all right, i'll take julie. \n\nmickey: i knew you wanted her. that's who i wanted. \n\nkramer: all right, i'll take karen. \n\nmickey: no, no, you think i'm fallin' for that? i'll take karen. \n\nkramer: all right, which one is julie? (they walk over to the table and fight over who sits where) hey, you ladies look lovely tonight. (continue to struggle) \n\njerry: so whatley sayd to me, \"hey, i can make catholic jokes, i used to be catholic.\" \n\nelaine: you see, i don't think it is a catholic joke. i think it's more of a raquel welch joke. what was it? no, i said hand me the buoys. (laughing) bouys! \n\njerry: don't you see what whatley is after? total joke telling immunity. he's already got the two big religions covered, if he ever gets polish citizenship there'll be no stopping him. \n\nelaine: so what're you gonna do? \n\njerry: i think this father curtis might be very interested to hear what whatley has the pope doing with raquel welch. \n\nelaine: (calling on phone) hey, beth, arnie, it's elaine. um, thought you guys might wanna have lunch. gimme a call. bye. \n\njerry: they're not getting a baby so you're taking them out to lunch? \n\nelaine: thought it would be nice. \n\njerry: poor beth. \n\nelaine: hey, arnie's just as upset. \n\njerry: oh screw him! (george enters) \n\ngeorge: listen to this. marcy comes up and she tells me her ex-boyfriend was over late last night, and \"yada yada yada, i'm really tired today.\" you don't think she yada yada'd sex. \n\nelaine: (raising hand) i've yada yada'd sex. \n\ngeorge: really? \n\nelaine: yeah. i met this lawyer, we went out to dinner, i had the lobster bisk, we went back to my place, yada yada yada, i never heard from him again. \n\njerry: but you yada yada'd over the best part. \n\nelaine: no, i mentioned the bisk. \n\ngeorge: well, i gotta do somethin'. (walks over to bathroom. kramer enters) \n\nkramer: well, i gotta do somethin'. \n\njerry: george is already in there. \n\nkramer: (confused) no, mickey and i, we can't work it out. you know, i'm thinking of asking that karen out by myself. \n\njerry: i thought you were leaning towards julie. \n\nkramer: i was, but the one i thought was julie turned out to be karen. \n\ngeorge: well it was a helluva yada yada. \n\nmarcy: he's moving to seattle. we wanted to say goodbye, i was just getting out of the shower, and yada yada yada-- \n\ngeorge: all right, enough! enough! from now on, no more yada yada's. just give me the full story. \n\nmarcy: okay. \n\ngeorge: tell me about the free facial. \n\nmarcy: okay, well, like i said i was on 3rd avenue, and i stopped by a large department store. \n\ngeorge: which one? \n\nmarcy: bloomingdale's. \n\ngeorge: very good. go on. \n\nmarcy: oh, and i stole a piaget watch. \n\ngeorge: what's that? \n\nmarcy: and then, i was on such a... high, that i went upstairs to the salon on the fifth floor, and got a massage and facial, and skipped out on the bill. \n\ngeorge: shoplifting. \n\nmarcy: well, what about you? you told me that you were engaged. what was the rest of that? (pause) \n\njerry: excuse me, mother? \n\nnun: sister. \n\njerry: sister, right. do you know when father curtis has office hours? \n\nnun: well not until tomorrow. \n\njerry: hmm, i really need to speak with him. \n\nfather: that's a kneeler. \n\njerry: oh. (adjusts accordingly) \n\nfather: tell me your sins, my son. \n\njerry: well i should tell you that i'm jewish. \n\nfather: that's no sin. \n\njerry: oh good. anyway, i wanted to talk to you about dr. whatley. i have a suspicion that he's converted to judaism just for the jokes. \n\nfather: and this offends you as a jewish person. \n\njerry: no, it offends me as a comedian. and it'll interest you that he's also telling catholic jokes. \n\nfather: well. \n\njerry: and they're old jokes. i mean, the pope and raquel welch in a lifeboat. \n\nfather: i haven't heard that one. \n\njerry: oh, i'm sure you have. they're out on the ocean and, yada yada yada, and she says, \"those aren't buoys.\" (father starts laughing) father... \n\nfather: one second... well, if it would make you feel better i could speak to dr. whatley. i have to go back and have a wisdom teeth removed. \n\njerry: you know the difference between a dentist and a sadist don't you? \n\nfather: um... \n\njerry: newer magazines. \n\nfather: now if you'll excuse me. (closes door. george enters confessional.) \n\ngeorge: jerry, i gotta talk to you. \n\nkramer: hi. \n\nkaren: hi, kramer. \n\nkramer: got a minute? \n\nkaren: uh, actually my parents are over, but, would you like to meet them? \n\nkramer: sure. \n\nkaren: (parents enter and are little people like mickey) mom, dad. \n\nkramer: hi. \n\narnie: elaine, i have to ask you something. what exactly happened down there? \n\nelaine: well, i don't know. i mean, i talked to him and, blah blah blah, he asked about you guys and, da da da da da, more questions, bleh bleh bleh.... \n\narnie: all right, shut up! \n\nelaine: again you are telling me to shut up? \n\narnie: what? \n\nelaine: you yelled that time at the movies. that's why you're not getting the baby. \n\narnie: oh my god. how am i gonna tell beth? \n\nelaine: look, i'll go down and talk to this adoption guy and i'll make sure that it all gets worked out. \n\narnie: all right, just don't screw it up this time! (he exits) \n\nelaine: see, again with the yelling. not a fan of the yelling. \n\njerry: (in pain) oh, are you about done? \n\ntim: i'm just getting warmed up. because i'm just a sadist with newer magazines. \n\njerry: huh? \n\ntim: father curtis told me about your little joke. \n\njerry: what about all your jewish jokes? \n\ntim: i'm jewish, you're not a dentist. you have no idea what my people have been through. \n\njerry: the jews? \n\ntim: no, the dentists. you know, we have the highest suicide rate of any profession? \n\njerry: is that why it's so hard to get an appointment? \n\nkramer: so, i'll uh... all right. (hangs up) \n\njerry: date with karen? \n\nkramer: no, julie. she's the one. \n\njerry: what happened to karen? \n\nkramer: well, mickey and her have a lot more in common. you know her parents are little people? \n\njerry: oh, small world. so little people can have not little people children? \n\nkramer: oh yeah, and vice versa. mother nature's a mad scientist, jerry. \n\njerry: so you won't believe what happened with whatley today. it got back to hime that i made this little dentist joke and he got all offended. those people can be so touchy. \n\nkramer: those people, listen to yourself. \n\njerry: what? \n\nkramer: you think that dentists are so different from me and you? they came to this country just like everybody else, in search of a dream. \n\njerry: kramer, he's just a dentist. \n\nkramer: yeah, and you're an anti-dentite. \n\njerry: i am not an anti-dentite! \n\nkramer: you're a rabid anti-dentite! oh, it starts with a few jokes and some slurs. \"hey, denty!\" next thing you know you're saying they should have their own schools. \n\njerry: they do have their own schools! \n\nkramer: yeah! \n\nelaine: one little baby, whatever you have in stock. \n\naent: miss benes... \n\nelaine: look it, look it, ryan. these people are gettin' a baby. period. now we can do this the easy way, or we can do this the fun way. \n\nbeth: jerry, i'm sorry to bother you, but you always said you'd be there for me. \n\njerry: well, what's wrong? \n\nbeth: i'm thinking of leaving arnie. \n\njerry: talk to me. \n\nbeth: he met with elaine, and i asked him what happened, and he yada yada'd me. i mean, could he be having an affair? \n\njerry: well, i wouldn't put anything past anybody. \n\nbeth: but we just got married. \n\njerry: well obviously that was a mistake. you need to forget about arnie. the important thing is you're moving on. \n\nbeth: why would elaine do that to me? \n\njerry: forget about elaine. let's just focus on us. come on, big hug. (mickey and karen enter) \n\nmickey: hey jerry. where's kramer? i've got exciting news. \n\njerry: i'm kinda in the middle of something. \n\nmickey: karen and i are getting married. \n\njerry: oh, congratulations. her marriage just fell apart. \n\nmickey: (to beth) how many is that for you? \n\nbeth: two. \n\nmickey: you're a lightweight. come on, honey. \n\nelaine: hey jerry. what are you doing here with beth? \n\njerry: beth and arnie broke up. \n\nelaine: so they don't want a baby? \n\njerry: (shaking his head no) pff. \n\nelaine: (realizes her mistake) i think i'm gonna be sick. (george enters alone) \n\njerry: hey, where's marcy? \n\ngeorge: she, uh, went shopping for some shoes for the wedding and, yada yada yada, i'll see her in six to eight months. (kramer and julie enter) \n\njerry: hey, kramer, over here. \n\nkramer: i just assume not sit next to you. \n\njerry: kramer... oh look, there's mickey and his parents. \n\nelaine: nice looking family. \n\njerry: very handsome. \n\nkramer: (to mr. abbott) how ya doing? \n\nmr. abbott: hey kramer. \n\njulie: oh mickey. excuse me, i can't take this. (she exits quickly) \n\njerry: hi, mr. abbott. \n\nmr. abbott: that's dr. abbott, d.d.s. tim whatley was one of my students. and if this wasn't my son's wedding day, i'd knock you teeth out you anti-dentite bastard. \n\nbeth: what was that all about? \n\njerry: oh, i said something about dentists and it got blown all out of proportion. \n\nbeth: hey, what do you call a doctor who fails out of med school? \n\njerry: what? \n\nbeth: a dentist. (they laugh) \n\njerry: that's a good one. dentists. \n\nbeth: yeah, who needs 'em? not to mention the blacks and the jews. (jerry fakes a smile) \n\nelaine: where's beth? \n\njerry: she went out to get her head shaved. \n\nfather: we are gathered her today to unite this couple in holy... matrimony. \n\njerry: those wisdom teeth are tough to get out. \n\nfather: marriage is not an intervention to be entered lightly... yada yada yada, i pronounce you man and wife. (they kiss, walk toward exit) \n\nkaren: (to kramer) i really wanted you. \n\nelaine: uh, excuse me. \n\ngladys: be with you in a minute. (turns her back to elaine and continues into phone) no, you shoulda come last night, it was fun. \n\nelaine: uhm, i just have a question. \n\ngladys: (into phone) i know, the margaritas in that place are so strong. \n\nelaine: (walks up to counter) helloo? i'd like to buy these hirachis. \n\ngladys: (into phone) so? what else is goin' on? \n\nelaine: (shouts) hey!! \n\ngladys: listen, i'll call you back. (to elaine) yes? what can i do for you? \n\nelaine: (tosses the hirachis onto the counter) nothing. you, just lost a customer. \n\nvalerie: ready to go? i don't wanna miss the previews. \n\njerry: me neither. i love the previews. in fact i enjoy being in the theatre cut up(?). last week after a preview, i yelled out 'must miss'. \n\nvalerie: i think that i was in that theatre. that, that was really funny. \n\njerry: yeah, it got a good laugh. let me just check my messages before we go. \n\ngeorge: so you're on the speed dial? \n\njerry: after two dates! \n\ngeorge: what number? \n\njerry: seven. \n\ngeorge: wha! you know, it's a pain to change that. you gotta lift up that plastic thing with a pen. \n\nkramer: uh, hey buddy. \n\njerry: hey. \n\nkramer: it all right if i keep these here for a while? i'm having a new year's eve party. \n\njerry: you're gonna keep these here for eight months?! \n\nkramer: no, jerry. new year's eve nineteen ninety-nine. the millennium. i told you about that. \n\njerry: kramer, you're gonna leave these chairs here for two and a half years?! \n\nkramer: you're not gonna see 'em. i got a case of party poppers i'm gonna keep in front of 'em. \n\ngeorge: hey, so get this. i get a call this morning from one of the mets front office guys. they wanna take me out to lunch. \n\njerry: what for? \n\ngeorge: (smiling) i'm on a winning ball club, jerry. they probably wanna pick my brains. \n\njerry: really, why d'you think they're taking you out to lunch? \n\ngeorge: (thoughtful) i have no idea. \n\nelaine: alright, i have had it with those mayans. \n\njerry: i don't mind the mayans. \n\nelaine: (unfolding chair) you know that store, putumayo? (sits) i was trying to buy these hirachis, right, and the saleswoman just completely ignored me. \n\nkramer: what, we talking hirachis? i know a great store for hirachis. \n\nelaine: no, no, not putumayo. \n\nkramer: no, no. cinqo de mayo. (leaving) yeah, marcellino, he turned me on to it, and he's one sixty-fourth mayan. \n\ngeorge: (slightly worried) you know, i'm starting to get a little nervous about this lunch. \n\nelaine: what'd you have? \n\nkramer: yeah, i'm gonna keep these here too, huh? they'll be alright. (begins to leave) \n\njerry: kramer, these balloons aren't gonna stay filled till new year's! \n\nkramer: (at the door) well, those aren't for new year's. those are my everyday balloons. \n\nminkler: george, we'll be blunt. the mets need somebody to head up scouting, and we think that someone might be you. \n\ngeorge: (surprise) head of scouting? \n\nmooney: interested? \n\ngeorge: (playing it cool) i'm still here. \n\nminkler: now, unfortunately, league rules prevent us from making you an offer while you're still under contract. \n\nmooney: you understand what we're talking about? \n\ngeorge: so you're talking... \n\nminkler: no, no. \n\nmooney: we're *not* talking. we're just, talking. \n\ngeorge: so, you need me to get fired. \n\nminkler: we didn't say that. \n\nmooney: we couldn't say that, because even if we did... \n\nminkler: ...we couldn't say that we said it. \n\nmooney: you see what we're saying? \n\ngeorge: (jokingly) you are still paying for this lunch? \n\nminkler: (serious) we didn't say that. \n\njerry: hi. sorry i'm late. there's a lotta chairs and balloons in my apartment. how 'bout i make it up to you with dinner? \n\nvalerie: (pointedly) someplace nice this time? \n\njerry: yeah, i'm sorry about that mongolian barbecue last night. i'd heard good things. \n\nvalerie: (rising) i don't know, got a two in zagat's. \n\njerry: lemme just check my messages. (to himself) maybe a nicer girl called. \n\nvoice (o.c.): hello? \n\njerry: hello? who's this? \n\nvoice (o.c.): jane. what number did you dial? \n\njerry: seven? \n\nelaine: hey! see these? (raises her foot so her new hirachis can be seen) cinqo de mayo! sales commission, bye-bye-o! (waves) \n\ngeorge (o.c.): (singing) meet the mets... \n\ngeorge: ...meet the mets. come on in and greet the mets. \n\njerry: good meeting? \n\ngeorge: there was no meeting. (gets one of the folding chairs) but it was quite a meeting. you are looking at the next director of mets scouting. the only thing is, i have to get fired from the yankees first. \n\njerry: you can do that. \n\ngeorge: of course. but i really wanna leave my mark this time, you know, uh. i wanna walk away from the yankees with people saying 'wow! now that guy got canned!' \n\njerry: so you want to go out in a final blaze of incompetence? \n\ngeorge: ehh. (nostalgic) remember that summer at dairy queen where i cooled my feet in the soft-serve machine? \n\nkramer: you think people will still be using napkins in the year two-thousand? or is this mouth-vacuum thing for real? \n\njerry: so, george... \n\ngeorge: yeah. \n\njerry: (rising) i had like a so-so date with valerie, now i'm number nine on the speed-dial. \n\ngeorge: so? \n\njerry: so? i used to be seven. i dropped two spots. \n\ngeorge: what, she's ranking you? \n\njerry: yeah, this speed-dial's like a relationship barometer. \n\ngeorge: what is a barometer exactly? \n\nkramer: it's pronounced thermometer. \n\nkramer: you know, in the year two-thousand, we'll all be on speed-dial. you'll just have to think of a person, they'll be talking to you. it'll be like, wup (judders and puts his hands to his temples, as if receiving a call on a 'mental phone') getting a call here. \n\nkramer: (to jerry and george) hey, it's newman. (to 'mental phone') hey, how you doing, newman? \n\nkramer: (to 'mental phone') oh, you wanna talk to jerry? \n\nvalerie: (pleased) oh, flowers. you didn't have to do that. i mean, the dinner, and the play, and the hansom cab ride. \n\njerry: well, i just wanted to... (breaks off) you forgot the gift certificate to barnes and noble. \n\nvalerie: oh. \n\njerry: (resumes) ...you know, make a good impression. \n\nvalerie: i'm gonna go put these in some water. \n\njerry: i like the way you think. \n\njerry: oh my god! number one!! seinfeld, you magnificent bastard! \n\ngeorge: sorry i'm late, but look what i found in the yankee hall of pride display case. \n\nwilhelm: isn't that babe ruth's uniform? \n\ngeorge: is it? (reaches into bag) \n\ngeorge: huh, strawberries, anyone? (eats a strawberry) ah, that's good. ooh, juicy this time of year. \n\ngeorge: gotta get the good ones. \n\ngeorge: oh, that's bad. that's bad. \n\nkramer: so jerry, my millennium party's really coming together. will people be able to breathe underwater in the year two-thousand? \n\njerry: some of us. \n\nkramer: (crumpling a piece of paper) i don't wanna exclude anybody. \n\njerry: hola. \n\nelaine: shove it! \n\njerry: what is all this? \n\nelaine: i got all this junk at cinqo de mayo, because i was trying to show putumayo how much business they'd lost. i mean, i been dancing (demonstrates dance) and strutting in front of their store for two days. \n\njerry: ah, no wonder we're getting so much rain. \n\nkramer: elaine, i'm having a millennium party, so save the date. \n\nelaine: hey, you know what? newman sent me an invitation already, to his party. \n\nkramer: newman? \n\nelaine: yeah. \n\nkramer: (reads) come celebrate the millennium, with newmanniun. newman! \n\njerry: hi valerie. \n\njerry: you're not valerie. \n\nmrs hamilton: i'm her step-mother. drive. \n\nmrs hamilton: it's taken me thirteen years to climb up to the top of that speed-dial, and i don't intend to lose my spot to you. \n\njerry: but, i never... \n\nmrs hamilton: (threatening) you just stay away from that phone. \n\ngeorge: you wanted to see me, sir? \n\nsteinbrenner: i heard about what happened at the meeting this morning... \n\ngeorge: oh, yes. i already packed up my desk, sir. i can be outta here in an hour. \n\nsteinbrenner: ...and i have to tell you, it's exactly what this organisation needed. \n\nsteinbrenner: we wanna look to the future, we gotta tear down the past. babe ruth was nothing more than a fat old man, with little-girl legs. and here's something i just found out recently. he wasn't really a sultan. ah, what d'you make of that? hey, check this out. (he stands to reveal he's wearing baseball pants) lou gehrig's pants. not a bad fit. (a thought occurs) hey, you don't think that nerve disease of his was contagious, do you? uh, i better take 'em off. i'm too important to this team. (removes the pants to reveal his boxers) big stein can't be flopping and twitching. \n\nsteinbrenner: hey, how 'bout some lunch. what're you going for? \n\njerry: you know uh, valerie, i uh, couldn't help but notice that i'm on your speed-dial. \n\nvalerie: you deserve it. \n\njerry: but i can't help thinking that maybe there's someone in your life who deserves it more. someone you've known, you know, more than a week. \n\nvalerie: my stepmother got to you, didn't she? \n\njerry: what? no. \n\nvalerie: uuh, i can't believe she did this again. that's it! she's off the speed-dial completely! \n\njerry: yikes! \n\nkramer: well, i just got your invitation to the newmanniun party. \n\nnewman: you just got it? damn, the mail is slow. \n\nkramer: (getting worked up) you knew i was having a millennium party, but you just had to throw yours on the same day! \n\nnewman: i have done nothing unethical. \n\nkramer: yeah, well you're gonna have to cancel it, because i've told everybody about my party. \n\nnewman: cancel! (jumps to feet) think again, longshanks! i started planning this in nineteen seventy-eight. i put a deposit down on that revolving restaurant that overlooks times square, and i booked christopher cross. \n\nkramer: (worked up) well, what am i gonna do? i got over two hundred folding chairs, and quite a bit of ice. \n\nnewman: (thoughtful) what kind? \n\nkramer: cubed. \n\nnewman: that's good stuff, and you can never have too much ice. alright, i'll tell you what i'll do. you can co-host the party with me, under one condition. no jerry. jerry is not invited. \n\nkramer: i gotta invite jerry. he's my buddy. \n\nnewman: that he may be. but he's outta my life, starting in the year two-thousand. for me, the next millennium must be, jerry-free! \n\njerry: how could they not fire you? \n\ngeorge: never thought i'd fail at failing. \n\njerry: aw, come on there now. \n\ngeorge: (depressed) feel like i can't do anything wrong. \n\njerry: nonsense. you do everything wrong. \n\ngeorge: (hopeful) everything? \n\njerry: everything. \n\ngeorge: you really think so? \n\njerry: absolutely. i have no confidence in you. \n\ngeorge: alright. i guess i just have to pick myself up, dust myself off, and throw myself right back down again! \n\njerry: that's the spirit. you suck! \n\ngeorge: (pleased) i know. \n\nelaine: no, no, no no, listen to me. i work in fashion. together, we can drive putumayo outta business and make cinqo de mayo numero uno... de mayo. \n\ngladys: do you need some help with something? \n\nelaine: (puzzled) you? what're you doing here? \n\ngladys: i own this store. \n\nelaine: no you don't. you own putumayo. unless you own both stores. (laughs nervously) \n\ngladys: i'm gladys mayo. \n\nelaine: ah, this really sticks in my craw. \n\njerry: well, mrs hamilton, it's certainly nice that you and valerie patched things up, so we could all get together like this. where is valerie? \n\nmrs hamilton: i'm sure she'll be along. (handing over a glass) have some wine, jerome. \n\njerry: okay. \n\nmrs hamilton: you know jerome, i can understand what valerie sees in you. so attractive, so strong, so comedic. \n\njerry: uh, good. \n\nmrs hamilton: jerome, i have a deliciously naughty idea. \n\njerry: (nervous) what? \n\nmrs hamilton: why don't i put you on my speed-dial? \n\njerry: i don't know, mrs hamilton. that doesn't sound... \n\nmrs hamilton: don't be such a child, jerome. how's number three sound? \n\njerry: valerie's not coming over, is she? \n\nmrs hamilton: seven, four... \n\njerry: no... \n\nmrs hamilton: two... \n\njerry: stop, stop. this isn't right. what about valerie? \n\nmrs hamilton: i won't tell if you don't. \n\njerry: (leaving hurriedly) wuhh... \n\nkramer: jerry... newman... two-thousand... \n\nkramer: (yells) newmanniun!! \n\nkramer: (whimper) jerry? \n\nkoren (o.c.): alright, yankees, two. orioles, nothing. wait a minute! a short stocky bald man is streaking across the field. \n\njerry: oh my god, george! \n\nkoren (o.c.): check that. he's not streaking. he's wearing a flesh-tone body-stocking. apparently, he's a bit bashful, and oddly, no-one seems upset. \n\njerry: kramer, look, it's george. \n\nkoren (o.c.): everyone loves him. \n\nkramer: yeah, yeah, i know. (he clicks off the tv) listen, jerry, i can't let you come to my new year's party. \n\njerry: (neutral) fine. \n\nkramer: (agitated) i mean, it's killing me! newman's got the jump on the invites, and will crush me if i try to go it alone! \n\njerry: (neutral) no problem. \n\nkramer: (swung by jerry's argument) you're right. i won't do it without you. i feel so ashamed i even thought of it, huh. \n\nkramer: (pleading) elaine, you can't go to newman's newmanniun. \n\nelaine: (neutral) okay. \n\nkramer: no, no, no. you gotta spend new year's nineteen ninety-nine with me and jerry. \n\nelaine: (neutral) fine. \n\nkramer: (frustrated shout) oh come on!! \n\nelaine: (neutral) alright. \n\nkramer: (triumph) yesss! alright, so it's you, it's me, and it's jerry, huh. (claps hands) yeah, now things are starting to snowball, huh. i'll tell newman i don't need him. so, i'll uh, see you two in the twenty-first century. \n\nelaine: (following kramer to the door) okay. kramer, kramer, wait a minute. do you still have that pricing-gun? \n\nkramer: yeah. \n\nelaine: okay, i need you to help me put putumayo outta business. \n\nkramer: can do. \n\njerry: what're you doing with a pricing-gun? \n\nelaine: that place is about to have the sale of the century. nothing over ninety-nine cents. \n\njerry: (to himself) still a rip-off. \n\njerry: hello? \n\nvalerie: jerry, i was just at my stepmom's house, and i saw that you were on her speed-dial. \n\njerry: uh, well, she uh, probably just wanted to be able to keep tabs on you. \n\njerry: hold on a second. \n\njerry: hello? \n\nmrs hamilton: (seductive) hi jerome. \n\njerry: oh, mrs hamilton, this is a very bad time. i've got valerie on the other line. just a second. \n\njerry: hello? \n\nvalerie: that's her on the other line, isn't it? \n\njerry: well... \n\nvalerie: tell her i don't want you on her speed-dial. \n\njerry: hang on. \n\njerry: she knows about the speed-dial. mrs hamilton, you gotta get me off this thing. \n\nmrs hamilton: i won't, until she puts me back on hers. \n\njerry: hang on. \n\njerry: she wants to be back on yours. \n\nvalerie: fine. but only if you're off hers. \n\njerry: hang on. \n\njerry: fine, if i'm off yours. \n\nvalerie: no, still me. \n\njerry: sorry. hang on. \n\njerry: fine, if i'm off yours. \n\nmrs hamilton: i won't do it. it's my speed-dial, and i don't trust her. \n\njerry: please, mrs hamilton, this is very awkward for me. \n\nmrs hamilton: (conspiratorial) alright. i'll hide you in one of the emergency buttons. \n\njerry: (hurried) great, bye. \n\njerry: she said she'll do it. \n\nvalerie: great. \n\njerry: hang on. \n\njerry: hello? \n\ngeorge: jerry. i can't get fired. \n\nfan: hey, body-suit man. 's up? \n\nfan: (pointing) hey, body-suit man. \n\nkramer: hi, i'm h.e. pennypacker. i'm a wealthy american industrialist uh, looking to open a silver mine in the mountains of peru and uh, before i invest millions in a lucrative mine, i, i'd like to go a little native. uh, get the feel of their condiments, of their unmentionables, you know, the real uh, gritty-gritty. \n\ngladys: well, lemme show you what we have. \n\nkramer: well uh, i think i can just browse around on my own. \n\nkramer: (re the chips) hmm, macchu picchu. are these free? \n\ngladys: yeah. \n\nkramer: hmm-mmm. \n\ngladys: some of those are women's clothes. \n\nkramer: oh, not a problem. \n\ngeorge: attention steinbrenner and front-office morons! your triumphs mean nothing. you all stink. you can sit on it, and rotate! this is george costanza. i fear no reprisal. extension five-one-seven-oh. \n\nkramer: l'occupado. \n\nelaine: come on, what is taking you so long? \n\nkramer: elaine, i broke the price-gun, so i had to move to plan b. \n\nelaine: plan b? there is no plan b. \n\nkramer: (holds up some small white sachets) i took these out of every single garment in the store. \n\nelaine: what?! \n\nkramer: they're dessicates. see, they absorb moisture. (gleeful) these clothes won't last five years without 'em. \n\nelaine: that's not gonna do anything. \n\nkramer: patience. \n\nelaine: alright. forget it! \n\nkramer: what? \n\nelaine: you have screwed me again, pennypacker! \n\ngladys: ladies, care for some chips? \n\nkramer: (emerging from the changing room) well, i don't mind if i do. \n\nkramer: well, i've uh, i've changed my mind. i think i'm going to build a rollercoaster instead. \n\nsteinbrenner: i heard what you did in the parking lot, big boy, and it is in-excuse-a-bull. you personally insulted me, my staff... i cannot believe that you, body-suit man, could perpetrate such a disloyalty. breaks my heart to say it... oh, who am i kidding? i love it. you're fi... \n\nwilhelm: wait, wait, mr steinbrenner. george doesn't deserve any of the blame for what happened in the parking lot today, sir. if there's anyone to blame here, it's me. \n\nsteinbrenner: what're you talking about, wilhelm. you popping pills? you got the crazies again? \n\nwilhelm: no, no. no, no, sir. i ordered george to drive around insulting people today. because i'm tired of all your macho head games. \n\ngeorge: (agitated) he's lying, sir! i'm tired of all your macho head games! \n\nsteinbrenner: macho head games? \n\nwilhelm: (puts arm round george's shoulder) he's just being loyal to me, sir. \n\nsteinbrenner: wilhelm, you're fired. i owe you an apology, body-suit man. streak on. (rising) now, if you gentlemen'll excuse me, i'm not going to the game today, i'm gonna go outside and scalp some tickets. (heads toward the door) owner's box, that's gotta bring in forty bucks, no problem. \n\ngeorge: mr wilhelm, what was that?! \n\nwilhelm: i wanted to get fired. george, you are looking at the new head scout of the new york mets. \n\nwilhelm: (singing) meet the mets, meet the mets. come right out and greet the mets. \n\nkramer: i don't know what elaine is so upset about. i mean, without dessicates, those clothes'll be noticeably musty in five years. \n\njerry: she never sees the big picture. \n\njerry: hello, newman! \n\nnewman: hello jerry. (to kramer) what did you say to elaine? i just got her cancellation in the mail. \n\nkramer: oh, well i guess she found some place better to go. \n\nnewman: well, it's her mistake. because she is going to miss the party of a lifetime. \n\nkramer: well, maybe so, but come midnight, when she's looking for someone warm and cuddly to kiss, i guess you'll be caught between the moon and new york city. \n\nnewman: alright. come back to my party, please. \n\nkramer: jerry too, of course. \n\nnewman: (reluctant) you don't wanna do your... act, or anything, do you? \n\njerry: no. \n\nnewman: alright then, i guess i can accept a little jerry, if it gets me a (suggestive) lot of elaine. \n\nkramer: deal? \n\nnewman: to the newmanniun! (holds out his hand) \n\nkramer: (grasps newman's hand) to the kramennium. \n\njerry: by the way newman, i'm just curious. when you booked the hotel, did you book it for the millennium new year? \n\nnewman: (smug) as a matter of fact, i did. \n\njerry: oh, that's interesting, because as everyone knows, since there was no year zero, the millennium doesn't begin until the year two-thousand and one. which would make your party, one year late, and thus, quite lame. \n\njerry: aww! \n\nmrs hamilton: i don't feel well at all. i feel all dried-out inside. \n\nvalerie: i'll call for help. \n\njerry: hello? \n\nvalerie: who's this? \n\njerry: it's jerry. who's this? \n\nvalerie: uh, it's valerie. \n\njerry: oh, hi valerie. what's up? \n\nvalerie: i'll tell you what's up. my stepmother is violently ill, so i hit the button for poison control and i get you! \n\njerry: wow, poison control? that's even higher than number one! \n\njerry: hello? \n\njerry: hang on just let me pick up a paper. \n\nman: excuse me. would you mind watching my bag for a minute? \n\ngeorge: yeah. no problem. \n\njerry: let's go. \n\ngeorge: woah, i gotta watch this guy's bag. \n\njerry: for how long? \n\ngeorge: i'm sure he'll be back in a second. \n\njerry: come on. \n\ngeorge: excuse me sir. would you mind watching my bag for a minute? \n\nman 2: why? so i can stand here like an idiot not knowing if you'll ever come back? \n\ngeorge: where are you going? \n\njerry: i'm going to be this guy's friend. \n\njerry: new clothes? \n\ngeorge: yeah. i did some shopping. some new clothes shopping. (turns to a man) can i borrow your menu? \n\njerry: strange. for new pants, there's noticable wear on the buttocks of those chinos. wait those are the clothes from the bag! \n\ngeorge: the guy never came back. \n\njerry: he asked you to watch them not wear them. \n\ngeorge: i'm still watching them. \n\njerry: you look like a tourist. \n\ngeorge: all right, let me ask you something when do you start to worry about ear hair? \n\njerry: when you hear like a soft russeling. \n\ngeorge: it's like puberty that never stops. ear puberty, nose puberty, knuckle puberty, you gotta be vigilent. let me ask you this do you know where walker street is downtown? i've got a league meeting there. \n\njerry: oh right, the new job, how is it? \n\ngeorge: i love it. new office, new salary. i'm the new wilhelm. \n\njerry: so who's the new you? \n\ngeorge: they got a new intern from francis louis high. his name is keith. he comes in mondays after school. \n\njerry: oh hi alex. \n\nalex: i'm sorry i'm late. have you ordered yet? \n\njerry: no. \n\nalex: i'll be right back. \n\ngeorge: where are you meeting these women? when they get off the bus at the port authority? \n\njerry: right here, george. in here. (pointing to his chest) try opening this up. you'll find the biggest dating scene in the world. \n\ngeorge: thanks. thanks a lot. \n\nkramer: hey. \n\nelaine: hey. \n\nkramer: hi. \n\nelaine: where's jerry? \n\nkramer: well he's in the shower. you want me to get him? \n\nelaine: no. no no. actually i kind of need to speak to you. \n\nkramer: well let's sit down. \n\nelaine: kramer, ahem, remember that whole deal with you selling peterman your stories for his book and then he gave them back to you? \n\nkramer: vaguely. \n\nelaine: well i was kind of, hehehe, short on material and i, um, i put them in the book anyway. \n\nkramer: you put my life's stories in his autobiography? \n\nelaine: kramer listen, it is such a stupid book. it doesn't matter. \n\nkramer: oh no. sure. it matters. wow. i've broken through, huh. i'm part of popular culture now. listen i've got to thank mr. peterman. \n\nelaine: he's doing a book signing at waldenbooks this afternoon. \n\nkramer: waldenbooks? that's a major chain huh. \n\nkramer: he jerry, i'm going to waldenbooks. \n\njerry: (yelling) get out! get out! i don't want to live like this. \n\nkramer: all right, let's go. \n\nelaine: mr. lippman, how are you? \n\nmr. lippman: well i'm not bad. not bad. \n\nelaine: what are you doing here? \n\nmr. lippman: i work for pundant publishishing. this is our book. \n\nelaine: oh. \n\nmr. lippman: if you can call it that. why is it every half-wit and sitcom star has his own book out now? \n\nkramer: hey buddy. remember me? \n\nmr. peterman: you're that gangly fellow we bought the stories from. \n\nkramer: yeah, i'm just here to do my part. what's your name darling? \n\nwoman: who are you? \n\nkramer: i'm the real peterman. \n\nmr. peterman: all right playtime's over. \n\nkramer: relax man. there's enough juice here to keep us all fat and giggley. \n\nwoman: i can't believe somebody pulled the top off of this muffin. \n\nelaine: that was me. i'm sorry. i don't like the stumps. \n\nmr. lippman: so you just eat the tops. \n\nelaine: oh yeah. it's the best part. it's crunchy, it's explosive, it's where the muffin breaks free of the pan and sort of (makes hand motions) does it's own thing. i'll tell you. that's a million dollor idea right there. just sell the tops. \n\nkramer: i have a right to be here. these are my fans. hey you're hurting my elbow. \n\nman 1: try looking up hayseed. \n\nman 2: you wanna sightsee? get on a bus. \n\nmary anne: please don't think all new yorkers are so rude. \n\ngeorge: well actually i'm... \n\nmary anne: i'm mary anne. i work for the new york visitor's center. where are you visiting from? \n\ngeorge: little rock, arkensas. \n\nmary anne: ooh. \n\njerry: hmm. that looks new. \n\nkramer: so get this. peterman has his henchmen forcefully eject me from the book signing like i'm some kind of a maniac. \n\njerry: (uncomfortably) yeah that's too bad. \n\nkramer: what's the matter with you? \n\njerry: (uncomfortably) nothing. \n\nkramer: no, no, no. don't give me that. i know you. something's wrong. what is it. \n\njerry: i did something stupid. \n\nkramer: what did you do? \n\njerry: well i was shaving. and i noticed an asymmetry in my chest hair and i was trying to even it out. next thing i knew, (high pitched voice) gone. \n\nkramer: don't you know you're not supposed to poke around down there. \n\njerry: well women do it. \n\nkramer: (high pitched voice) \"well women do it.\" i'll tell you what. i'll pick you up a sundress and a parasol and you can just (high pitched voice) sashey your pretty little self around the town square. \n\njerry: well what am i going to tell alex? \n\nkramer: listen to me. you don't tell anybody about this. no one. you hear me? \n\njerry: um hum. \n\nkramer: hey, jerry shaved his chest. \n\njerry: hey! \n\nkramer: i forgot. wait. never mind. \n\nalex: how about the beach this weekend? \n\njerry: you couldn't pay me enough to go to the beach on a weekend. i mean it's hard enough... \n\nalex: all right. all right. wow is that a mexican hairless? oh, i love those. ooh, hairless. this is where it's at. it's so much smoother and cleaner. \n\njerry: really? \n\nelaine: \"top of the muffin to you!\"? \n\nmr. lippman: top of the muffin to you. elaine! \n\nelaine: mr lippman? \n\njerry: so you're pretending to be a tourist? \n\ngeorge: it's beautiful. she makes all the plans. i'm not from around here so it's okay if i'm stupid, and she knows i'm only in town visiting so there's no messy breakup \n\njerry: how do you explain your apartment? \n\ngeorge: i got a hotel room. \n\njerry: you moved into a hotel? \n\ngeorge: well i don't know anyone here jerry. where else am i going to stay? \n\njerry: so get this we're in the park today alex goes wild for this hairless dog. \n\ngeorge: so? \n\njerry: so. i figure since she likes one hairless animal why not another. \n\ngeorge: oh really. you tell her you shaved it? \n\njerry: are you nuts? i don't want her to think i'm one of those low-rise briefs guys who shaves his chest. \n\nkramer: (yelling up at jerry) hey jerry. \n\nkramer: (yelling) i'm starting a peterman reality bus tour. check it out. hahaha. \n\ngeorge: reality tour? \n\njerry: the last thing this guy's qualified to give a tour of is reality. \n\nelaine: this was my idea you stole my idea. \n\nmr. lippman: elaine these ideas are all in the air. they're in the air. \n\nelaine: well if that air is comming out of this face then it is my air and my idea. \n\nmr. lippman: you want a muffin or not? \n\nelaine: peach. \n\nmary anne: so i notice you don't have much of an accent. \n\ngeorge: yeah my parents have it. sometimes it skips a generation. \n\nmary anne: look george, i'm really enjoying spending time with you but i'm not sure this is going to work out. at some point you're going back to your job at tyler chicken and your three-legged dog willie. \n\ngeorge: willie. yeah. \n\nmary anne: and i'm still going to be here. \n\ngeorge: well what if i told you i'm thinking of moving here? \n\nmary anne: (laughs) george, no offense. but this city would eat you alive. \n\njerry: you're moving to new york? that's fantastic. i can see you all the time now. \n\ngeorge: eat me alive, huh? we'll see who can make it in *this* town. \n\njerry: what is it she think you can't do? \n\ngeorge: find a job. get an apartment. \n\njerry: how did you do those things? \n\ngeorge: never mind. the're done. all i have to do now is redo them. you know if you take everything i've ever done in my entire life and condense it down into one day, it looks decent. \n\njerry: hey, what were you doing with that bus yesterday? \n\nkramer: here you go, here you go, check it out. \n\njerry: \"the real peterman reality bus tour\". i'm confused. \n\nkramer: peterman's book is big business. people want to know the stories behind the stories. \n\njerry: nobody wants to go on a three hour bus tour of a totally unknown person's life. \n\nkramer: i'm only charging $37.50, plus you get a pizza bagel and desert. \n\ngeorge: what's desert? \n\nkramer: bite-size three musketeers. just like the real peterman eats. \n\ngeorge: he eats those? \n\nkramer: no. i eat those. i'm the real peterman. \n\ngeorge: i think i understand this. jay peterman is real. his biography is not. now, you kramer are real. \n\nkramer: talk to me. \n\ngeorge: but your life is peterman's. now the bus tour, which is real, takes to places that, while they are real, they are not real in sense that they did not *really* happen to the *real* peterman which is you. \n\nkramer: understand? \n\njerry: yeah. $37.50 for a three musketeers. \n\nmr. lippman: elaine. i'm in over my head. nobody likes my muffin tops. \n\nelaine: so? what do you want me to do about it? \n\nmr. lippman: you're the muffin top expert, tell me what i'm doing wrong. \n\nelaine: mr. lippman, when i worked for you at pendent publishing, i believed in you, you know as a man of integrity. but, i saw you in that paper hat and that aprin... \n\nmr. lippman: what if i cut you in for 30% of the profits? \n\nelaine: deal. here's your problem. you're making just the muffin tops. you've gotta make the *whole* muffin. then you... pop the top, toss the stump. taste. \n\nmr. lippman: ah. (takes a bite of the top.) mmmmm. ah hah? \n\nelaine: yeah. \n\nmr. lippman: so what do we with the bottoms? \n\nelaine: i don't know, give em to a soup kitchen. \n\nmr. lippman: that's a good idea. \n\nelaine: and one more thing, you really think we need the exclamation point? because, it's not \"top of the muffin *to you!!!*\" \n\nmr. lippman: no. no. it is. \n\nkramer: hey jerry. what is this? lady gillette? what's going on? \n\njerry: what? can't i get a moment's peace? \n\nkramer: what are you doing to yourself? \n\njerry: i can't stop. alex thinks i'm naturally hairless. \n\nkramer: you can't keep this up. don't you know what's going to happen? everytime you shave it, it's going to come in thicker and fuller and darker. \n\njerry: oh that's an old wives tale. \n\nkramer: is it? look at this. \n\nkramer: (high pitched voice) look at it! look at it! and it's all me. i shaved there when i was a lifeguard. \n\njerry: oh come on. that's genetics. that's not going to happen to me. \n\nkramer: won't it? or is it already starting to happen? \n\nelaine: wow. look at this. we're cleaning up. \n\nlippman: oh, rubin, get me another tray of lowfat cranberry. \n\nrebecca: excuse me, i'm rebecca demore from the homeless shelter. \n\nelaine: oh, hi. \n\nrebecca: are you the ones leaveing the muffing pieces behind our shelter? \n\nelaine: you been enjoying them? \n\nrebecca: they're just stumps. \n\nelaine: well they're perfectly edible. \n\nrebecca: oh, so you just assume that the homeless will eat them, they'll eat anything? \n\nmr. lippman: no no, we just thought... \n\nrebecca: i know what you thought. they don't have homes, they don't have jobs, what do they need the top of a muffin for? they're lucky to get the stumps. \n\nelaine: if the homeless don't like them the homeless don't have to eat them. \n\nrebecca: the homeless don't like them. \n\nelaine: fine. \n\nrebecca: we've never gotten so many complaints. every two minutes, \"where is the top of this muffin? who ate the rest of this?\" \n\nelaine: we were just trying to help. \n\nrebecca: why don't you just drop off some chicken skins and lobster shells. \n\nelaine: i think i might. \n\nmary anne: i can't believe you found something so quickly. how much you pay? \n\ngeorge: $2300. \n\nmary anne: ouch. a month? \n\ngeorge: yeah. \n\nmary anne: well, guess that's all right for now, but if you say here for more than a few months, you're a real sucker. \n\ngeorge: yeah, well i uh got lots of other stuff to show you too. wait till you see the plum job that i landed. \n\nmary anne: yeah. we should let this place air out anyway. it smells like the last tenant had monkeys or something. \n\nkramer: comming up on the right, if you glance up you can just make out my bedroom window. it's the one that's covered in chicken wire. \n\nwoman: hey if you're the real peterman, who come you're wearing those ratty clothes? the're not very romantic. \n\nkramer: (over the speaker) well that's your opinion. \n\nman 1: can i have another three musketeers? they're rather small. \n\nkramer: forget it. okay newman's postal route is around here somewhere. \n\nman 2: who's newman? \n\nman 3: who cares. \n\nman 4: hey fake peterman, let me off. i'm nautious. \n\nman 1: can i have his candy bar? \n\nkramer: ahh. everyone just settle down. we have three hours left on this thing, and i can't drive and argue with you rubes all at the same time. okay. lomez's place of worship is right on the right here. \n\njerry: why do i have to go on the tour? \n\nkramer: jerry you're a minor celebrity. if you go on this thing, it could create a minor stir. bring that girlfriend of your and i'll only charge to 60 bucks. \n\njerry: hey, how's business? \n\nelaine: ooh, i've got stump troubles. the sanitation department won't get rid of them all, i can't get a truck to haul this stuff until next week. meanwhile, i'm sitting on a mountain of stumps. \n\nkramer: all right, i've got to hose the puke off the floor of the bus. \n\nelaine: bus? wait a minute, wait a minute, bus? you've got a bus? \n\nkramer: yeah. \n\nelaine: you got any room on that thing? \n\nkramer: yeah there are a few seats still available. \n\nelaine: do you think you could transport some stumps for me? i'll make it worth your while. \n\nkramer: well, if they don't mind sitting in the back. \n\nelaine: no they don't. \n\nkramer: are they war veterans? \n\nmary anne: wow this is your office. \n\nmr. steinbrenner: woah. hello. sorry george, didn't know you got a girl in here. give me a signal on the doornob like a necktie or a sock or something. come on george, help me out. \n\nmary anne: mr. steinbrenner, i would like to thank you for taking a chance on a hen supervisor at tyler chicken like our boy george here. \n\nmr. steinbrenner: hen supervisor from tyler chicken? \n\ngeorge: yes. very nice to have had her to mention... (starting to leave) \n\nmr. steinbrenner: wait a minute george. \n\ngeorge: be right with you. look mr. steinbrenner. \n\nmr. steinbrenner: moonlighting for tyler chicken. pretty impressive george. days with the new york yankees and nights in arkensas with a top flight bird outlet. and a hen supervisor to boot. i am blown. bloooown away. blown george. (vibration in the \"o\"'s) bloooooooooooooooooooown. \n\nalex: you know when you make a pizza bagel, you really shouldn't use cinnimon rasin. \n\njerry: you also shouldn't use a donut. \n\nkramer: all right ladies and gentlemen. welcome to the peterman reality tour... \n\ntape player: turn music off. \n\njerry: can we just go? \n\nkramer: and go we will. \n\nman: what is this? a piece of pound cake? \n\nkramer: we have a bonus reality stop today. we will be hauling muffin stumps to the local repository. \n\nman 2: we're going to a garbage dump? \n\nkramer: and we're off. \n\njerry: you know i never though he would be able to recreate the experience of actually knowing him, but this is pretty close. \n\nmr. steinbrenner: (the back of his head to the camera) john tyler? george steinbreener here. i want to talk about george castanza. i understand he's been dividing his time between us and you. i cannot have that. \n\njohn tyler: (the back of his head also to the camera) well i don't know who he is but if you want him that bad i'm not giving him up that easily. \n\nmr. steinbrenner: oh is that so. playing a little hardball huh jonnyboy? \n\njohn tyler: how about this. you give me castanza, i convert your concessions to all chicken no charge. instead of hot dogs, chicken dogs. instead of pretzels, chicken twists. instead of beer, alcoholic chicken. \n\nmr. steinbrenner: how do you make that alcoholic chicken? \n\njohn tyler: let if ferment, just like everything else. \n\nmr. steinbrenner: that stuff sounds great. all right. i'll have costanza on the next bus. \n\nman: hey hey hey hey hey. where do you think you're going? \n\nkramer: i was going to dump this. \n\nman: it doesn't look like garbage. \n\nkramer: well it's muffin stumps \n\nman: where are the muffin tops? \n\nkramer: this is a garbage dump. just let me dump it. \n\nman: can't do it. \n\nkramer: is this a joke? \n\nman: that's what i'd like to know about it. \n\nalex: you have a pretty heavy beard, don't you? \n\njerry: what's that? \n\nalex: well look it's almost time for you to shave again. \n\njerry: oh. yeah. \n\nkramer: (gets back on the bus, yelling) well maybe i will take it up with consumer affairs. ladies and gentlemen you're in for an additional treat. we're going to extend the tour at no extra charge. \n\nman: where are we going? \n\nkramer: (looking at a map) i don't know. (over the speaker) uh, no more questions. \n\nwaitress: so, the new york yankees traded you for a bunch of tyler chicken. \n\ngeorge: dogs, twists, a kind of fermented chicken drink. \n\nman: hey, aren't you the guy i asked to watch my clothes? \n\ngeorge: what clothes? \n\nman: these clothes. the ones you're wearing. \n\njerry: (in low voice to next to kramer) kramer how much longer? my chest hair is comming back and it's itching me like crazy. i can't let her see me scratch it. \n\nkramer: don't worry. i've got a good feeling about this dump. \n\njerry: i'm telling you man, i'm losing it. \n\njerry: i can't sit on this bus anymore. i think i'll go play with that dog. \n\nkramer: i don't know where the tops are. \n\nkramer: jerry what's the matter? \n\njerry: (for the first half of the howl, a dog howls along with him.) awoooooo-oooooooo, that feels good. \n\nbartender: hey, you looking for george? \n\nmary anne: yeah. \n\nbartender: he's been in the bathroom awhile. you might want to check on him. \n\ngeorge: (talking on the phone) jerry you gotta bring me some clothes down here. i lost my job with the yankees. i'm standing in the men's room on 43rd street in my underpants. \n\nmary anne: i told you this city would eat you alive. \n\nmr. lippman: what is this guy again? \n\nelaine: they call him a cleaner. he makes problems go away. \n\nnewman: hello elaine. where are they? \n\nelaine: in the back. \n\nnewman: all right, i'm going to need a clean 8 ounce glass. \n\nmr. lippman: what is going on here? \n\nnewman: if i'm curt, then i appologize. but as i understand it, we have a situation here and time is of the essence. \n\n(newman goes to the back room with the muffin stumps and sets down a cooler and an empty glass. from the cooler he takes out 4 bottles of milk and sets them down. he bites into a stump, then takes a drink of milk from the glass. (continuity error: he never actually poured the glass of milk.) he swishes the muffin and the milk together and swollows. he takes another stump.) \n\njerry: nah, you had a good run. took them to the world series. \n\ngeorge: i got to give the players most of the credit for that. \n\njerry: don't sell yourself short. you made all the flight arrangements, hotels, busses. \n\ngeorge: no, i don't know who was doing that. \n\njerry: so, when you actually did work, what it was that you did? \n\ngeorge: they had a pastry cart you wouldn't believe. \n\nlanette: here you go. your latt, your cappuccino. \n\njerry: maybe i should ask her out? \n\ngeorge: she is a good waitress. \n\njerry: that's true. maybe i take her to the tony's. \n\ngeorge: you're going to the tony's? \n\njerry: yeah, i wrote some jokes to the show and they gave me two tickets. \n\ngeorge: why didn't you ask me? i know a million theater jokes. 'what's the deal with those guys down in the pit?' \n\njerry: they're musicians. that's not a joke. \n\ngeorge: it's a funny observation. \n\ngeorge: severance package...the yankees are giving me three months full pay for doing nothing. \n\njerry: they did it for three years. what's another few months. \n\ngeorge: i'm really going to do something with these three months. \n\njerry: like what? \n\ngeorge: i'm gonna read a book. from beginning to end. in that order. \n\njerry: i've always wanted to do that... \n\ngeorge: i'm gonna play frolf. \n\njerry: you mean golf? \n\ngeorge: frolf, frisbee golf jerry. golf with a frisbee. this is gonna be my time. time to taste the fruits and let the juices drip down my chin. i proclaim this the summer of george! \n\nelaine: ...and then peterman ate it. i never told him. \n\nelaine: who's that? \n\ndugan: that's sam, the new girl in the counting. \n\nwalter: what's with her arms? they just hang like salamis. \n\ndugan: she walks like orangutan. \n\nelaine: better call the zoo. \n\ndugan: reer... \n\nelaine: what? \n\nwalter: ssssss... \n\ndugan: cat-ty... \n\nelaine: it's like she's carrying invisible suitcases. \n\njerry: like this? (imitates the walk) \n\nelaine: yes, exactly. \n\njerry: that's so strange. \n\nelaine: right. so why i'm the one who gets 'reer'. you know i mean they were being as catty as i was. it's a double standard. \n\njerry: oh, what about 'ladies night'? women admitted free before 10? \n\nelaine: that is so stupid. \n\njerry: reer. \n\ngeorge: hey, 'the white shadow' is on... \n\njerry: boy, your really packing it all in. \n\ngeorge: jerry, my vacation just started. i need a day or two to de-compress. besides, i did plenty today. \n\njerry: like what? \n\ngeorge: i bought a new recliner with a fridge build right in to it. \n\nkramer: hey jerry, you got any tums? \n\njerry: stomach ache? \n\nkramer: i drank too much water in the shower. \n\njerry: aah, top of the fridge. hey george, i'm taking that waitress to the tony's. \n\ngeorge: shadow! \n\nkramer: oh, the tony's. i'll see you there buddy. \n\nelaine: you're going to the tony's too? \n\nkramer: roger that. \n\njerry: where are you sitting? \n\nkramer: well, all over the place. yeah, i'm a seat filler. they don't like to see empty seats on tv so when somebody gets up i just park my kaboos on their spot until they get back. \n\nelaine: how did you get that job? \n\nkramer: mickey, mickey he hooked me up. he's a member of the academy. \n\njerry: what academy? \n\nkramer: well, he didn't say (leaves). \n\nlanette: hi! \n\njerry: hi! \n\nlanette: nice tuxedo. \n\njerry: thanks, it's a breakaway. \n\nlanette: should we go? \n\njerry: absolutely. \n\nlanette: lyle, were going! jerry, this is lyle. \n\nlyle: hey, how you doing? \n\njerry: ok... \n\nlanette: bye. \n\nlyle: have a good time. \n\njerry: thanks, lyle... \n\nkramer: are you leaving? cause i got you covered. \n\nkramer: i'll just squeeze in... \n\nman: what are you doing? \n\nkramer: my job. what are you doing? \n\nkramer: you know, if they catch two of us on tv, you got some explaining to do. \n\njerry: so, you and lyle are roommates? \n\nlanette: no. \n\njerry: gay? \n\nlanette: what? \n\njerry: is he gay? \n\nlanette: no. \n\njerry: are you sure? \n\nlanette: i think i would know. \n\njerry: (to himself) this is a new one. \n\nkramer: (to woman next to him) pemmican turkey? come on take a bite...well more for me. \n\nannouncer: ...and the best musical award goes to scarsdale surprise! \n\ngeorge: kramer? \n\nmr. graham: (on tv) thank you and god bless you all. this has truly been a scarsdale surprise! \n\nsam: elaine, am i crazy? i just get the feeling that dugan and the others are making fun of me all the time. \n\nelaine: well, you might wanna think about...maybe, eh...moving your arms a little when you walk. \n\nsam: my arms? \n\nelaine: you know, sort of swing them, so your not lurching around like a caveman. \n\nsam: i a caveman? \n\nelaine: no no no no, it's just... \n\nsam: everybody told what a catty shrude you are. your horrible! \n\ngeorge: she had a dude? \n\njerry: yeah, when i went to pick her up there was this dude. \n\ngeorge: how do you know it was her dude? \n\njerry: what do you think it could've been just some dude? \n\ngeorge: sure, dudes in this town are dime a dozen. \n\njerry: i reckon. \n\ngeorge: or maybe, she just wanted to go to the tony's. i tell you what; you ask her out again. no tony, just jerry. that way you know it he was her dude or just some dude. \n\njerry: dude! \n\ngeorge: all right, that's enough. i gotta go home and take a nap. \n\njerry: it's 1030 in the morning? \n\ngeorge: i tell you; i'm wiped. \n\njerry: so, has the summer of george already started or are you still de-composing? \n\ngeorge: de-compressing. \n\nkramer: whooa, good morning gentleman and tony says hello to you. \n\njerry: you didn't give that thing back? \n\nkramer: jerry, it was a whirlwind. they whisked us backstage, the media is sworming, champagne is flowing...whooo! i can't describe how great it is to win. \n\njerry: that's because you didn't win. \n\ngeorge: 'scarsdale surprise'. that's the musical about that scarsdale diet doctor murder. \n\nkramer: featuring the mind-blowing performance of ms. raquel welch! \n\njerry: you haven't even seen it. \n\nkramer: aah, jerry i'm not gonna let you bring me down from this high. i've been partying all night. i saw the sunrise at liza's! \n\ngeorge: what, minelli's!?! \n\nkramer: no. \n\nelaine: sam, listen i'm so sorry about the other day. \n\nsam: no, don't apologize elaine. i was thinking that maybe i should swing my arms a little bit more. \n\nelaine: see, yeah, that's all i was saying. \n\nsam: how's this (sam hits a pen case out of the table), or this (swings a paper holder of the table and starts to clear the table left and right). \n\nelaine: well, you seem to be getting a hang of it... \n\njerry: hi! \n\nlanette: sorry, i'm running late. i just lost track of time. \n\njerry: no rush. \n\nlyle: hey, jerry! what's up? \n\njerry: (to himself) i have absolutely no idea. \n\njerry: ..except that the dude plays the showroom and i'm stuck doing food and beveridged! \n\ngeorge: who's that? \n\njerry: it's kramer. \n\ngeorge: hey kramer. \n\njerry: george says hi. \n\nkramer: (shouts to the telephone) hi george! \n\ngeorge: how's that tony? \n\njerry: why don't you just come over? \n\ngeorge: why can't we do this on the phone? what's kramer doing now? \n\njerry: he's looking on to fridgerator. \n\ngeorge: kramer. anything good in there? any popsicles? \n\njerry: i can't do this. \n\nkramer: so, what's george doing? \n\njerry: he's not doing anything. goodbye! \n\nkramer: so listen, i'm going to crab a bite to eat at sardi's. you wanna go? \n\njerry: are you taking the tony to sardi's? \n\nkramer: the tony is taking me to sardi's. \n\njerry: oh, hello. \n\nkramer: i'm going. \n\nlanette: congratulations! \n\nkramer: oh, thank you, thank you so much. i have so many people i want to thank and don't want to forget anyone... \n\njerry: all right, all right. \n\njerry: i said no! (hangs up the phone.) \n\nlanette: jerry, i just want to let you know; lyle and i are completely over. i'd rather be with you. \n\njerry: just me? no dudes or fellas? \n\nlanette: what you think? \n\njerry: i can start right away. \n\njerry: but not here. (they leave.) \n\njerry's answering machine: 'i'm not here, leave a message.' \n\ngeorge: (on the answering machine) jerry, what's happening? come on, pick up the phone. \n\nkramer: ...so i said to him arthur, artie come on, why does the salesman have to die? change the title; the life of a salesman. that's what people want to see. \n\nmr. graham: mr. kramer, my name is lewis maxton graham. i'm one of the producers of 'scarsdale surprise'. \n\nkramer: hey, eh, lew! \n\nmr. graham: we need to talk. \n\npeterman: elaine, what did you want to talk me about? \n\nelaine: this. my office. sam trashed my office. \n\npeterman: well, i see what's going on in here. i am smack dab in the middle of a good old fashioned cat fight. \n\nelaine: mr. petermen, this is not a cat fight. this is violent psychotic behavior directed at me all because are told her to swing her arms. \n\npeterman: woof! \n\nelaine: do you mean \"reer?\" \n\npeterman: yes, that's the one! good day elaine. (leaves.) \n\nelaine: oh, no please mr. peterman, she's crazy! (sam walks by and elaine starts to sing) crazy for feelings... \n\njerry: i can't believe how much we did this afternoon. i have friends who this would've be their whole life. \n\nlanette: now, what time are you picking me up tonight? \n\njerry: eh, what? \n\nlanette: you got our reservation from sfuzi's, didn't you? \n\njerry: oh yeah, sfuzi? i- i've gotta do that. \n\nlanette: should i ware the outfit i bought today? \n\njerry: sure. \n\nlanette: which one? \n\njerry: the one with the...(mumbles.) \n\nlanette: if i wanna get my hair cut i've gotta go now. call me when you get home. i wont be there, but leave a message so i know you called. \n\njerry: ok, ok... \n\nlanette: do you mind? \n\njerry: no, i'll crab it. \n\ngeorge: hey, i've done that today. \n\njerry: what, did you lose your remote? \n\ngeorge: nah, the cable's out. what's with you? you look dead. \n\njerry: it's lanette! i need an assistant or intern or something. \n\ngeorge: (laughs) relationship intern...hey, what if two of us teamed up? \n\njerry: not. \n\ngeorge: no, no... \n\njerry: no, because that's... \n\ngeorge: no, listen; we are always sitting here, i am always helping you with your girl problems and you are helping me with my girl problems. where do we end up? \n\njerry: here. \n\ngeorge: exactly! because neither one of us can't handle a woman all by ourselves. \n\njerry: i'm trying. \n\ngeorge: i've tried. we don't have it. but maybe the two of us, working together at full capacity, could do the job of one normal man. \n\njerry: then each of us would only have be like a half man. that sounds about right! \n\nmr. graham: i'm sure how excited you are to have this very very prestigious award. but you didn't have anything to do with the actual production. \n\nkramer: no. \n\nmr. graham: i don't think there's no way how we can allow you to keep this tony. unless... \n\nkramer: anything... \n\nmalcolm: are you familiar with our star, raquel welch? \n\nkramer: oh yeah, she's fantastic.... \n\nmr. graham: she's a train wreck. \n\nmalcolm: there's a big tap dance number just before jean harris leaves the (?) school to confront dr tarnover. \n\nmr. graham: it is a gut wrenching scene. \n\nmalcolm: but, raquel welch doesn't move her arms when she tap dances. it's very distracting. \n\nmr. graham: there's lot of this (swings his arms) in tap dancing. \n\nkramer: so, you'd like me to teach how to dance? \n\nmalcolm: no, we want you to fire her. \n\njerry: why they want you to fire raquel welch? \n\nkramer: because they're terrified of her. i heard from someone that when they cut one of her lines, she climbed up the rope on side of the stage and started dropping lights on peoples heads. story like that has got to be true. \n\njerry: she seems very nice. \n\nkramer: jerry, you're not in show business. you don't know what these people are like. \n\njerry: i'm in show business. \n\nkramer: oh, come on! what am i gonna do? she's going to eat me alive. \n\njerry: i've got a tape of 'fantastic voyage' if you think that would help. \n\nkramer: yayaya... \n\nelaine: jerry, that crazy straight-armed woman down at peterman's trashed my office. and then listen to this; this is message she left me. \n\nsam's voice: elaine...i am going to find you. if not in your office then in the xerox room or the little conference room near to the kitchen... \n\nelaine: she must've got a blueprint of the building or something. \n\njerry: did you tell peterman about this? \n\nelaine: well, i tried, but he thought it was some sort of cat fight. \n\nkramer: cat fight? \n\nelaine: ok, why? why do guys do this? what is so appealing to men about a cat fight? \n\nkramer: yeye cat fight! \n\njerry: because men think if women are grabbing and clawing at each other there's a chance they might somehow kiss. \n\nkramer: t-t-t-t... \n\njerry: you got the tickets? \n\ngeorge: yeah, two for the 715 of novaj pravas (?). what you're wearing the green sweater? \n\njerry: i like it. \n\ngeorge: she doesn't like. here is your blue one, it's her favorite. (takes sweater out of his bag.) \n\njerry: what? \n\ngeorge: just put it on! all right now, remember she had her nails done today so remark how you like the color. and if you need me you beep me, all right. here you go, hey, hey, hey, hey...(sprays binaca into jerry's mouth.) go get'em you're a tiger! \n\njerry: hey george, one second, she's having a party friday night and she wants me to take care of the invitations. \n\ngeorge: a little notice would've helped! how many people? \n\njerry: 35, and george, on the invitations... \n\ngeorge: i know, i know...don't skimp. go go go go... \n\nlanette: right on time, i like that. \n\njerry: i like your nails, that is a great color. \n\nlanette: love the sweater. \n\njerry: this old thing? \n\ngeorge: hi, i need some party invitations. \n\nclerk: okay, have you been in here before? \n\ngeorge: about a year ago. wedding invitations. \n\nclerk: right, how did that all work out? \n\ngeorge: no complaints. \n\nclerk: well, they are arranged according the price. and as i recall...(she flips the sample book all the way to the end.) \n\ngeorge: actually, (george flips the book back to the beginning) i'll take these nice glossy ones. \n\nraquel: \"you are a fraud dr tarnover. you haven't even been to scarsdale.\" \n\nkramer: ms. welch. \n\nraquel: who are you? \n\nkramer: well, i'm cosmo kramer, i'm one of the producers. \n\nraquel: hello, sidney! no, no i told you i don't want to do that! if you bring it up again i will feed your genitals to a wolf! (hangs up) kids! you're still here. \n\nkramer: well, i- i ms. welch i do need to talk to you about a little problem regarding, eh, your performance. \n\nraquel: what kind of problem? \n\nkramer: well, it seems that due to the vagaries of the production parameters of this fragmenting of the audience to the cable television, carnivals, water parks... \n\nraquel: out with it! \n\nkramer: well, you're fired because you don't move your arms when you tap dance, you're like a gorilla out there i've gotta go... \n\nguy: little help? \n\ngeorge: hey, frolf? \n\nguy: yeah, you know we need a fourth for the back nine. you want in? \n\n(george looks up and sees jerry on the other side and frisbee on the other. jerry says: \"what's the deal with airplane peanuts?\") \n\ngeorge: yeah, sure. \n\nguy: ok, come on. \n\njerry: ok, let's towel it up. \n\nlanette: jerry, where are those invitations you were supposed to get? if they don't go out today they're useless. \n\njerry: but we're in towels. \n\nlanette: jerry. \n\njerry: all right. one second. \n\ngeorge: he frolfs, he scores...(he drops one invitation on the stairs.) \n\ngeorge: hello. \n\njerry: george, where are those invitations? you were supposed to leave them with her doorman! \n\nlanette: did you shave your chest hair? \n\njerry: no. (lanette leaves.) did you at least pick them up? \n\ngeorge: yeah, the super glossy. the best they had. \n\njerry: ok, get them over here pronto. we're in towels here george. \n\ngeorge: all right, all right, keep your towel on. \n\njerry: ...what? \n\ngeorge: it's a joke. \n\njerry: all right, that's not bad. now get over here! \n\nsam's voice: (on the tape)...if not in your apartment then in the laundry room or the atm in the building across the street or the watch shop! \n\nelaine: can't you do anything about this? i mean this woman is a psycho! \n\ncop #1: 'reer.' \n\nelaine: look, just because i'm a woman... \n\ncop #2: 'mauau.' \n\ncop #1: 'meeow.' \n\nraquel: i don't move my arms when i dance. that's my signature! \n\nelaine: would you just keep an eye out for this woman. she's about ye high and eh, she doesn't swing her arms when she walks. \n\ncop #1: what do you mean? \n\nelaine: like this...(imitates the walk with her arms hanging.) \n\nraquel: what the hell is that? are you making fun of my dancing? \n\nelaine: aren't you raquel welch? \n\nraquel: you know who i am. now, what are you doing? \n\nelaine: nothing, i wasn't just moving my arms... \n\nraquel: that's it, you are going down. \n\ncop #1: ooh, cat fight. \n\nkramer: so how's george? \n\njerry: i don't know. they don't tell me anything. what's that? (kramer holds a broken tony) \n\nkramer: tony. \n\njerry: what happened to you? \n\nkramer: raquel welch! \n\njerry: yikes. \n\njerry: what happened to you? \n\nelaine: raquel welch! \n\nkramer: the woman is a menace. \n\nelaine: yeah, i bumped in to her on the street. it got pretty ugly. \n\njerry: cat fight with raquel welch. \n\nkramer: yey eye ca-catfight. \n\nelaine: my god, george! \n\ngeorge: i slipped on the invitations...how's the towels? \n\njerry: back on the rack. \n\ngeorge: with the two of us? \n\njerry: i think we're still a man short. \n\ndoctor: mr. costanza. ..your legs have sustained extensive trauma. apparently your body was in the state of advanced atrophy, due to a period of extreme inactivity. but with a lot of hard work and a little bit of luck, i think there's a good chance you may, one day, walk again. \n\nkramer: well, that's good news. \n\nelaine: wow, invitations again... \n\nkramer: yeah, that's weird. \n\nelaine: all right, well...you want to grab some coffee? \n\njerry: yeah... \n\nkramer: i'd like to get some coffee. \n\ngeorge: this was supposed to be 'the summer of george'! the summer of george. \n\ntherapist: now, swing them...swing...swing them, just swing them. \n\nsam: i can't do it. it's hard! \n\ngeorge: still a little summer left. \n\ngeorge: what is holland? \n\njerry: (also wearing a moustache) what do you mean, 'what is it?' it's a country right next to belgium. \n\ngeorge: no, that's the netherlands. \n\njerry: holland *is* the netherlands. \n\ngeorge: then who are the dutch? \n\njerry: (picking at his moustache) you know i cannot stand this thing anymore. \n\ngeorge: i know, i hate it too. i feel like an out of work porn star. \n\njerry: i told you, we should have taken some kind of vacation. \n\ngeorge: well why didn't we? \n\njerry: because you said this would be better. remember? a vacation from ourselves. that's what you said. \n\ngeorge: what if we grew muttonchops? \n\njerry: no. \n\ngeorge: buzz cuts? parachute pants! \n\njerry: stop it, george. stop it. i'm sorry, you've gotta get a job. \n\ngeorge: (resigned) dammit. \n\ngeorge: hey hey hey, check me out, huh? \n\njerry: no more crutches, that must be a relief. \n\ngeorge: yeah, with crutches everyone has questions. \n\njerry: not with a cane? \n\ngeorge: nah, with crutches it's a funny story, with a cane it's a sad story. you through with those? \n\njerry: that is a sad story. hey, you should have been here tonight. some guy from nbc saw my set, he wants me to do a showcase. i might have another shot at a pilot. \n\ngeorge: alright, we're back in! \n\njerry: we? no. \n\nclub announcer: (off camera) ladies and gentlemen, kenny bania. \n\nbania: thank you, thank you, (to jerry) hey, jerry, did ya see me up there? i was killing, jerry. killing. i killed. \n\njerry: killed? \n\nbania: killed. (pause) i'm gonna go pick up some chicks. good-looking ones, too! (walking away) hey, what's your name? \n\njerry: yeah, killed. because i killed first and warmed up the crowd. he's like that fish that attaches himself to the shark. \n\ngeorge: and you're the shark? \n\njerry: yeah, i'm the shark and he's the fish eating my laughs. \n\ngeorge: i don't know how a fish could eat laughs. \n\njerry: well, i'm glad i brought it up. \n\nkramer: you got any shredded coconut? \n\njerry: (looking at kramer's moustache) uh, we're not doing that anymore. \n\nkramer: yeah, yeah, right. (walks out) \n\ngeorge: (on the phone) oh my god. \n\njerry: what? \n\ngeorge: i got a job interview. they want to see me this afternoon. \n\njerry: so what's this job? \n\ngeorge: oh, it's beautiful. it's in sports. \n\njerry: knicks? rangers? \n\ngeorge: playground equipment. \n\njerry: welcome back to the show. \n\ngeorge: yeah haha. \n\nkramer: yeah, this is better. so, you got any shredded coconut? \n\njerry: no. \n\ngeorge: (holding his cane) i gotta hobble. (walks out) \n\nkramer: d-d-d-d. i gotta switch shaving creams. i'm getting no protection. \n\njerry: what kind do you use? \n\nkramer: whatever you get. \n\njerry: (nods) look, postcard from elaine from europe. \n\nkramer: don't tell me she's dragging another poor guy across europe. \n\njerry: remember david puddy? \n\nkramer: oh, the face-painting auto mechanic. so she's dating him again, huh? \n\njerry: well, i guess she's batted around and she's back at the top of the order. \n\nkramer: boy, a month in europe with elaine. (whistles) that guy's coming home in a body bag. \n\npuddy: well, let's see, i've got a ten kroner, a five kroner, a twenty kroner? no wait, that's another ten kroner. a fimty kroner? how much is that? \n\nelaine: we have to break up. \n\npuddy: what? \n\nelaine: i can't take this anymore! i don't want to hear how interesting the change with the hole in it is! and if you tell me what time it is in new york again, you are going home in a body bag! \n\npuddy: well what about you? what do you think the gap in rome has that's not in the gap on broadway? \n\nelaine: okay, alright listen. forget about the gap because we are through! \n\npuddy: fine! \n\nelaine: fine! \n\ncab driver: okay, terminal three. have a nice flight. \n\ncaptain: ladies and gentlemen, our flight time, with stopovers, will be approximately 22 hours. \n\nelaine: (to flight attendant) hey, you gonna bust out that drink cart or what? \n\nkramer: hey, what are you doing? \n\njerry: oh, i'm taking this lace out. it came undone and touched the floor of a men's room. that's the end of that. \n\nkramer: did you see bania's set last night? 'cause i read on the internet he killed. \n\njerry: he killed. he only does well when he has me for a lead-in. he's a time slot hit. \n\nkramer: jerry, you gotta give him some credit. (starts rubbing a stick of jerry's butter across his face) you're just being totally ridiculous. (keeps rubbing) i'll see you later buddy. \n\njerry: wait, wait, wait, wait, wait a minute. \n\nkramer: what? \n\njerry: do i have to ask? \n\nkramer: i ran out of butter so i had to borrow yours. anything else, mr. nosy? \n\njerry: why are you buttering your face? \n\nkramer: i'm shaving with it. \n\njerry: oh moses smell the roses. \n\nkramer: jerry, it's vastly superior to any commercial shaving cream. the shave is close and clean, and the natural emolients keep my skin silky-smooth. now feel my face. \n\njerry: no. \n\nkramer: feel it. \n\njerry: i don't want to. \n\nkramer: feel it. feel it. \n\njerry: (places two slices of bread against kramer's face) that is close. \n\ngeorge: i got the job? \n\nmr. thomassoulo: george, everybody here at play now is very impressed with you. i, i'm sure you heard that. \n\ngeorge: well, no. \n\nmr.thomassoulo: now i don't want you to think that anyone's gonna treat you any differently just because of your, uh, (clears his throat) handicap. \n\ngeorge: handicap? (gesturing to his cane) oh, i'm not handicapped. \n\nmr. thomassoulo: i'm sorry. differently, uh, advantaged. \n\ngeorge: yeah, i didn't mean that. \n\nmr. thomassoulo: of course you will have your own private, fully equipped bathroom. \n\ngeorge: (shocked) when do i start? \n\nmr. thomassoulo: whenever you feel that you're able. (rises to show george out) um, you need a hand here. \n\ngeorge: (thomassoulo helps george get up) yeah, what the hell. \n\njerry: you got the job? \n\ngeorge: jerry, it's fantastic. i love the people over there. they- they treat me so great. you know they think i'm handicapped, they gave me this incredible office, a great view. \n\njerry: hold on, they think you're handicapped? \n\ngeorge: yeah, yeah, well, because of the cane. you should see the bathroom they gave me! \n\njerry: how can you do this? \n\ngeorge: jerry, let's face it, i've always been handicapped. i'm just now getting the recognition for it. name one thing i have that puts me in a position of advantage. huh? there was a guy that worked at the yankees-- no arms! he got more work done than i did, made more money, had a wife, a family, drove a better car than i did. \n\njerry: he drove a car with no arms? \n\ngeorge: all right, i made up the part about the car, but the rest is true. and he hated me anyway! \n\njerry: do you know how hard it's getting just to tell people i know you? \n\ngeorge: i love that bathroom. it's got that high, high toilet. i feel like a gargoyle perched on the ledge of a building. \n\nkramer: hey! they hooked me up. \n\ngeorge: what's with all the butter? \n\nkramer: i'm shaving with it, and you know what i discovered? \n\njerry: you can eat it? \n\nkramer: no, my face feels so good, i'm gonna use it all over my body. \n\njerry: oh my god, it's bania and jenna. \n\ngeorge: who? \n\njerry: the tooth brush in the toilet bowl. \n\nbania: hey jerry, this is jenna. pretty good-lookin' huh? \n\njenna: uh, jerry's the guy that i dated right before you. \n\nbania: oh. this is awkward. \n\njenna: don't worry, kenny. after dating jerry, you're a pleasure. \n\njerry: i don't believe this. \n\ngeorge: you miss her, don't you? \n\njerry: no! he's riding my coattails again. he's getting everything off me, first laughs now ladies. \n\ngeorge: you miss her. \n\npuddy: (to flight attendant) you know i think ultimately, i'm upset with myself. i knew what i was getting into, she's a bitter, unstable person. i mean the sex was good. i'm sure it was fine for her. i need more. \n\nelaine: (to another passenger) huh. you believing this? \n\npassenger: excuse me, i...i was sleeping. \n\nelaine: you missed quite a performance. \n\npassenger: (disbelieving) that's my apple juice. \n\njerry: someone's cooking. \n\nnewman: hello, jerry. \n\njerry: hello, newman. \n\nnewman: you know, old friend, sometimes i ponder this silly gulf between us and i say, \"why?\" are we really so different. for what is-- \n\njerry: (cutting in) i'm not the one doing the cooking, newman. \n\nnewman: damn you seinfeld. you useless pustule. um, somebody's got something on the griddle. maybe it's kramer. \n\njerry: no, he's up on the roof getting some sun with the butter (pauses) oh no! \n\nnewman: butter? \n\npassenger: (explaining the coins to elaine) this is the fimty kroner. \n\nelaine: (to passenger) oh? you know my last boyfriend, he had a real kroner comprehension problem. know what i mean? a real cement head. \n\nwoman: david, you are so funny. \n\npuddy: yeah, i know. \n\nelaine: (grabbing puddy) what are you doing? \n\npuddy: it's a long flight, elaine. i had to get on with my life. \n\nelaine: by making time with some floozy across the aisle? \n\npuddy: yeah, that's right. well, what's going on over there with you and, uh, vegetable lasagna? \n\nelaine: this guy? he's an idiot. he doesn't mean anything to me. \n\npassenger: (hereon known as vegetable lasagna) i can hear you. \n\npuddy: well, she doesn't mean anything to me either. if it were up to me, we'd still be together. \n\nelaine: well maybe i feel the same way. \n\npuddy: ok. \n\nelaine: ok, so now what? \n\npuddy: let's make out. \n\njerry: kramer! \n\nkramer: oh, man. i think i cooked myself. \n\njerry: look at your skin. \n\nkramer: stick a fork in me, jerry. i'm done. \n\nkramer: i'm fried. \n\njerry: technically, you're sauted. so, what are you doing for that? \n\nkramer: well, i just gotta keep my skin moist so i don't dry out. \n\njerry: is that what the doctor said? \n\nkramer: no, i read an article in bon appetit magazine. (grabs a baster) i'll see you later. \n\njerry: yea. \n\nkramer: hey. \n\ngeorge: hey. \n\nkramer: how you doing? (kramer leaves) \n\ngeorge: (sniffing) hmm. game hen? \n\njerry: kind of. nice limp, you're bringing your work home with you? \n\ngeorge: no, i fake limp on my right. this is a real limp because i sprained my ankle. \n\njerry: what happened? \n\ngeorge: well, i was buttering myself up for a nice shave -- \n\njerry: oh no, not you too? \n\ngeorge: i must have dripped some on the floor and i slipped and... \n\njerry: you know what's good for that? relish. \n\njerry: hello? yeah, this is jerry seinfeld. what? no. no! no! no!! no!!! thank you. (hangs up.) i don't believe this. they've added bania to the network showcase and he's going on right after me. \n\ngeorge: so what, he's got a couple of good jokes. \n\njerry: oh, like what, ovaltine? why do dogs drink out of the toilet? shopping carts with one bad wheel? \n\ngeorge: that's true, that always happens to me. \n\njerry: you think that's funny? \n\ngeorge: i don't know, i like stuff you don't have to think about too much. \n\njerry: you like bania's act. you're a closet bania fan! \n\ngeorge: maybe i am. \n\njerry: oh, i'm gonna puke. \n\ngeorge: puke! that's a funny word. puke. (laughing) puke! don't have to think about that. \n\nelaine: i can't believe we broke up like that. \n\npuddy: it was stupid. \n\nelaine: do you want something to read? \n\npuddy: no i'm good. \n\nelaine: well, are you going to take a nap or -- \n\npuddy: no. \n\nelaine: you're just going to sit there staring at the back of a seat? \n\npuddy: yeah. \n\nelaine: that's it! i cannot take this! i mean, look at this, nothing has changed. we've been back together two hours, we're having the same problems we had 12 hours ago. \n\npuddy: tell me about it, i don't know why i ever took you back. \n\nelaine: oh, please! i took you back. you know it, i know it, vegetable lasagna here knows it. \n\nvegetable lasagna: please, please, i don't want to get involved. \n\nelaine: ugh, i hope a giant mountain rises out of the ocean and we just ram right into it and end this whole thing! \n\nvegetable lasagna: oh god. \n\npassenger 2: ow! ow!! \n\nnewman: how much longer you gonna be, i'm starving here. \n\nkramer: just a few more squirts. cause i gotta stay juicy. \n\nnewman: that smell. it's still with you, huh? \n\nkramer: yeah, it's baked on in. hey, put another stick of butter in. \n\nnewman: here. \n\nkramer: yeah, stir it up so it melts. \n\nkramer: oh yea that feels good. ahh, now i'm simmering. \n\nnewman: i'll meet you at the coffee shop. \n\nmr. thomassoulo: good morning, george. \n\ngeorge: good morning, sir. \n\nmr. thomassoulo: is there something wrong with your other leg? \n\ngeorge: oh, no, that's just the old, uh, the old handicap acting up. \n\nmr. thomassoulo: but your cane's on the wrong side. \n\ngeorge: oh well, that's, uh, thats just because we're, uh, standing on opposite sides. \n\nmr.thomassoulo: huh? \n\ngeorge: yeah, see, uh, when we met, i was over there and, uh, you were over here, so the image, uh, the image was reversed, like, uh, like in the mirror. \n\ngeorge: see? this looks right to you, doesn't it? \n\nmr. thomassoulo: uh, yeah, i guess. \n\ngeorge: (passes cane from right to left and back a few times) but, see here. right. wrong. right. wrong. right. right. wrong-- \n\nmr. thomassoulo: will you stop it, george? just stop it! i think i can see what's going on here. \n\ngeorge: well, you're not gonna believe what happened. \n\njerry: you mugged stephen hawking? \n\ngeorge: play now thinks i got problems in both legs. my own personal rascal, jerry. on the house. \n\njerry: well it must be comforting to know you'll be going straight to hell at no more than three miles an hour. \n\njerry: hello? \n\nelaine: jerry. \n\njerry: hey, lainie, how's the trip going? \n\nelaine: awful. this trip was a *huge* mistake. huge! \n\nvegetable lasagna: please don't shout. i can't take it. \n\njerry: who's that? \n\nelaine: it's vegetable lasagna. \n\njerry: who? \n\nelaine: vegetable lasagna! \n\nvegetable lasagna: my name is magnus. \n\nelaine: shut up or i'll snap you in half and stuff you in the overhead! \n\njerry: get me some duty free kahlua. \n\ngeorge: how's the trip? \n\njerry: sounded good. \n\ngeorge: well. gotta motor. \n\njerry: hey, if you got any juice left, you might wanna roll by the big showcase tonight. \n\ngeorge: ah, you still going on in front of bania, eh? \n\njerry: that's right, and i'll tell you what. i'm feeling a little off. \n\ngeorge: what are you talking about? (jerry grins) you're not! \n\njerry: that's right, i'm taking a dive. \n\ngeorge: you're throwing the set? \n\njerry: i'm laying down! then we'll see how he does up there, without all the assistance. \n\ngeorge: listen jerry. with all due respect, bania's voice is the voice of a new generation. my generation. \n\njerry: we're four months apart. \n\ngeorge: nevertheless. his time has come. \n\ngeorge: now if you will kindly help me unwedge my front wheel, i'll be on my way. \n\nnewman: butter. kramer. butter. kramer. \n\nkramer/turkey: (waving wing) hey buddy. \n\nkramer: jerry, what are you doing? george tells me you're gonna throw your set? \n\njerry: that's right, choochie. let's see how bania does without the cushy timeslot. \n\nclub announcer: (oc) ladies and gentlemen, jerry seinfeld! \n\njerry: if you'll excuse me. \n\nkramer: whoa, man! \n\njerry: (oc) hey everybody! who's ready to laugh? \n\njerry: what's the deal with lampshades? i mean if it's a lamp, why do you want shade? \n\njerry: and what's with people getting sick? \n\nnewman: hee hee! yeah yeah! \n\njerry: i mean, what's the deal with cancer? \n\nman in audience: i have cancer! \n\nkramer: oh, tough crowd. \n\nman: hey, hey! you dented my ride. \n\ngeorge: whatcha got there, the 4-volt? heh, i did you a favor. \n\nman: how about i do you a favor upside your head? \n\ngeorge: oh yeah? \n\nman: oh yeah. \n\nman: hey! \n\nwoman: get the bikes. \n\nbania: ouch. \n\nkramer: well, that wasn't so bad, huh? \n\njerry: what are you talking about? i bombed! \n\nkramer: no, you had some good stuff. the cancer bit? i mean, it was edgy, it was not my sort of thing but some of those people out there, they really liked it. \n\njerry: like who? \n\nkramer: well, that guy who yelled out. \n\njerry: he *had* cancer! \n\nkramer: and laughter is the best medicine. \n\njerry: hey, sorry kenny. guess you got your work cut out for you. \n\nclub announcer: (oc) ladies and gentlemen, kenny bania! \n\nkramer: hey, jerry, he could have used your laugh. he was a big turkey out there. \n\nnewman: (salivating) turkey? \n\nkramer: a big fat turkey. \n\nnewman: i'm sorry i missed that. \n\nkramer: i tell ya, he worked so hard and then he just-- \n\nkramer: what is this, oregano? \n\nkramer: look at me! i'm all covered in oregano and parmesan, and it's sticking to me because of the butter! look at me! \n\nnewman: here. hold this. \n\nkramer: what is this, parsley? \n\njerry: ah, the sweet stench of failure. \n\nkramer: ah you bit me. get off of me, get off of me! \n\nman: now i got you! \n\nmr. thomassoulo: george? your legs! \n\ngeorge: are you a religious man, sir? \n\nmr. thomassoulo: no. \n\nman: eat hickory!! \n\nbania: hey jerry, didja see it? \n\njerry: ouch. \n\nstu: kenny! there you are. jay shermak and stu crespi from nbc. listen, kenny. really funny out there. \n\njerry: what? \n\njay: that thing you did having the two guys running through? i love stuff you don't have to think too much about. \n\nstu: give us a call. we want to be in the kenny bania business. \n\njay: by the way, jerry? the suspenders? a little hacky. \n\nbania: how about that jerry? first you had a pilot on nbc and now i'll have one. looks like i'm following you again. \n\njerry: oh, i'm gonna puke. \n\nbania: puke? that's a funny word. can i use that? \n\nelaine: david, this has been the worst month of my life and if i never see you again it'll be too soon. \n\npuddy: ditto. \n\nelaine: oh that's origi- \n\npuddy: go to hell. \n\nelaine: 86th and broadway please. \n\ncab driver: i'm sorry lady, there's a cab shortage. the transit police are making everybody share. \n\nelaine: oh no. \n\nvegetable lasagna: hello! (sees elaine) oh no. i'm sorry. \n\nelaine: noooooooooooo! \n\n[scene: in the play now office] \n\nthomassoulo: george, youre not really handicapped, are you? \n\ngeorge: ive had my difficulties. \n\nthomassoulo: i saw you running down amsterdam avenue lifting that 200 pound motorized cart with one hand. \n\ngeorge: mr. thomassoulo during times of great stress, people are capable of super human strength. have you ever seen the incredible hulk, sir? \n\nthomassoulo: no \n\ngeorge: how about the old spider man live action show? \n\nthomassoulo: george, ive realized weve signed a one-year contract with you, but at this point i think its best that we both go our separate ways. \n\ngeorge: i dont understand. \n\nthomassoulo: we dont like you. we want you to leave. \n\ngeorge: clearer \n\n[scene: at monks caf] \n\njerry: so youre staying at play now? \n\ngeorge: why not? pay is good. i got dental, private access to one of the great handicapped toilets in the city. \n\njerry: but they not you arent handicapped, arent you ashamed? \n\ngeorge: theyre the ones who should be ashamed. they signed me to a one-year contract. as long as i show up for work every day, they have to pay me. \n\nelaine: hey \n\njerry & george: (doing the voice) hello-o-o-o! \n\ngeorge: hello-o-o-o elaine! \n\nelaine: whats that? \n\njerry: oh, its just this stupid thing. \n\nelaine: well, im sure its stupid. its not about me, is it? \n\njerry: (doing the voice) no-o-o-o. \n\ngeorge: (doing the voice) not at all. \n\nelaine: tell me! \n\njerry: all right. you know this girl clare i am seeing? \n\nelaine: yeah. \n\njerry: well, he and i starting joking that when she falls asleep her stomach stays awake all night and talks to me. \n\nelaine: how is it talking? \n\njerry: well, her belly button is like a mouth. (doing the voice) im bored. talk to me. \n\nelaine: oh i gotta start taking these \"stupid\" warnings more seriously. \n\njerry: hey, look whose here - puddy. \n\nelaine: my puddy? but we broke up. \n\njerry: and yet he continues to live. \n\npuddy: hey benes, how are you? \n\nelaine: im doing great. \n\npuddy: great. (pauses) see ya. \n\njerry: well, thats it. you two are back together. \n\nelaine: what? \n\njerry: the bump into. the bump into always leads to the backslide. \n\nelaine: david and i will not be getting back together. \n\njerry: elaine, breaking up is like knocking over a coke machine. you cant do it in one push, you got to rock it back and forth a few times, and then it goes over. \n\ngeorge: thats beautiful. \n\nelaine: what about you? you were even engaged, and you cut it off just like that. \n\njerry: thats different. i didnt have feelings for those people. but you, youll backslide \n\nelaine: you want to bet? \n\njerry: stakes? \n\nelaine: 50 \n\njerry: dollars? \n\nelaine: all right. witness? (looks at george). \n\ngeorge: witness. \n\njerry: done. \n\ngeorge: percentage? \n\njerry & elaine: no. \n\n[scene: at jerrys apartment] \n\nclare: so ill call you tonight? \n\njerry: yeah. \n\nclare: whats wrong with the belt? \n\njerry: i went to the movies last night, i went to the bathroom and i unbuckled a little wobbly and the buckle kind of banged against the side of the urinal. so(throws away belt) thats it! \n\nclare: so, youre insane? \n\njerry: oh yes, quite. \n\nkramer: hello! \n\njerry: of course its a sliding scale. \n\nclare: catch you later. \n\nkramer & jerry: (doing the voice) hello-o-o-o! (haha) \n\njerry: (doing the voice) la la la. \n\nkramer: (doing the voice) la la la. \n\nkramer: look at this, they are redoing the cloud club. \n\njerry: oh, that restaurant on top of the chrysler building? yeah, thats a good idea. \n\nkramer: of course its a good idea, its my idea. i conceived this whole project two years ago. \n\njerry: which part? the renovating the restaurant you dont own part or spending the two hundred million you dont have part? \n\nkramer: you see i come up with these things, i know theyre gold, but nothing happens. you know why? \n\njerry: no resources, no skill, no talent, no ability, no brains. \n\nkramer: (interrupts) no, notime! its all this meaningless time. laundry, grocery, shopping, coming in here talking to you. do you have any idea how much time i waste in this apartment? \n\njerry: i can ball park it. \n\nelaine: (doing the voice) hello-o-o-o! \n\nkramer: here we go; now she comes in. now my whole day is shot! \n\njerry: hey, i called you last night, where were you? \n\nelaine: (looking very guilty) i went out with a (fake cough) a friend. \n\njerry: george? \n\nelaine: (looking guiltier) no, nono. \n\njerry: well, i was here, thats everyone (laughing). \n\nelaine: (laughing). \n\njerry: are those the same shoes as yesterday? \n\nelaine: oh, you know i wear these shoes all the time. \n\njerry: your hair, its somewhat de-poofed. \n\nelaine: its the new look. you know heroin cheek? \n\njerry: wait a second, whats going on here? \n\nelaine: nothing, nothing. \n\njerry: (screams). \n\nelaine: (screams). \n\njerry: youre wearing the same clothes as yesterday!!! (pauses) you saw puddy! \n\nkramer: hoochie moochie. (haha) \n\njerry: hand it over. pay up. \n\nelaine: no! its an isolated, sexual incident. we are not back together! \n\njerry: then what do you call it? people dont just bump into each other and have sex. this isnt cinemax. \n\nelaine: it was no big deal ok? i mean we fooled around, then we went out and grabbed a little dinner. \n\njerry: ah, dinner! thats it, youre all the way back! \n\nelaine: ugh! \n\njerry: sex, thats meaningless, i can understand that, but dinner; thats heavy. thats like an hour. \n\nkramer: (still reading the paper) man, 2.9 percent financing on a toyota onedun (sp?). that was my idea too! \n\n[scene: at play now] \n\ngeorge: good morning! \n\nco-worker: go to hell! \n\ngeorge: hi allison, thats a nice dress. \n\nallison: dont even look at me. \n\ngeorge: hey glenn! \n\nglenn: hey, go tell hell! \n\ngeorge: heard that one already. \n\n[scene: at jerrys apartment] \n\nkramer: so thats the bedroom. heres the bathroom. if you need to, you can familiarize yourself with the kitchenyeah, go ahead and look through some of the drawers. \n\njerry: and you are? \n\ndarren: oh, hey, im darren. im new here. \n\nkramer: yeah, thats jerry, you dont have to worry about him. why dont you go across the hall and get started on that mail. \n\ndarren: right! \n\nkramer: hes a go getter! \n\njerry: whos he? \n\nkramer: my intern from nyu. well, you remember my corporation, kramerica industries. \n\njerry: alright. \n\nkramer: well, apparently nyu is very enthusiastic about their students getting some real world corporate experience. \n\njerry: but you only provide fantasy world corporate experience. \n\nkramer: well, this will really free up my time so i can focus on more important things, like my bladder system. \n\njerry: alright, its time to go. \n\nkramer: jerry, its not for people, its for oil tankers. \n\njerry: (sarcastically) i know! \n\nkramer: you see the idea is for a rubber ball inside the tanker so if it crashes, the oil wont spill out. \n\njerry: actually, that is not a bad idea. \n\nkramer: (smiles) yeah. \n\njerry: now, its time to go. \n\njerry: hello \n\ngeorge: (doing the voice) hello-o-o-o. (hes sitting on the floor in his play now office). \n\njerry: (doing the voice) hello-o-o-o. (pauses) so, whats going on? \n\ngeorge: siege mentality, jerry. they really want me out of here. theyve downgraded me to some sort of a bunker. im like hitlers last days here. \n\njerry: so, are you going to leave? \n\ngeorge: oh no! im vigilant. theyll never get me out. im like a weed, jerry. \n\njerry: i thought youre like hitler in the bunker? \n\ngeorge: im a weed in hitlers bunker. \n\njerry: im getting a little uncomfortable with the hitler stuff. (his other line beeps) im getting another call, see ya(answers call) hello! \n\ndarren: hi, this is darren from kramers office. mr. kramer would like to schedule a lunch with you at monks coffee shop. \n\njerry: (looking shocked) really? when? \n\ndarren: in 10 minutes. do you need directions? \n\njerry: no, i dont. \n\ndarren: well, ill call back in 5 minutes to confirm. \n\nkramer: yeah, 5. \n\nelaine: hey! \n\njerry: hey! so, wheres my money? \n\nelaine: no money, i am puddy free. so, are we eating or what? \n\njerry: oh yeah, hold on. \n\njerry: hello darren, this is jerry from jerrys office. (elaine is looking confused). were going to be three for lunch. (elaine is still looking confused) what do you mean hes already left? \n\njerry: hey, elaine is going to come with us, alright? \n\nkramer: what? when did this happen? \n\njerry: well, just \n\nkramer: (yelling) darren! \n\n[scene: at elaines apartment] \n\nelaine: i am not calling puddy. what did i do with my gloves? oh, i bet i left them over at puddys. i should call him. i need those gloves. no, i better not. ill call. (looks at table) oh, look at that! there are the gloves. i was just about to call. there they are. thats funny. thats really funny. thats really really funny. you know who loves funny stories, david puddy. (picks up phone). \n\n[scene: at monks cafe] \n\ngeorge: well, play now is through playing. they turned the heat way up in my office. they tried to sweat me out. \n\njerry: do you have to write all this stuff down. \n\ndarren: well, mr. kramer is in a meeting with mr. lohmase and he didnt want to miss anything. \n\njerry: so, how hot did it get? \n\ngeorge: i dont know, 120, 130then they sent some guys to sandblast for 6 hours. tomorrow they are putting in asbestos. \n\njerry: i guess you can take anything, but actual work. \n\ngeorge: bring it on! \n\ngeorge: (doing the voice) hello-o-o-o kramer! \n\njerry: (doing the voice) wel-l-l-c-o-m-e! \n\ngeorge: (doing the voice) la la la. \n\nkramer: sorry i couldnt get out of there, what did i miss? (asking his \"intern\") \n\ndarren: well, after ordering, mr. seinfeld and mr. costanza debated on whether or not iron man wore some sort under garment between his skin and his iron suit \n\nkramer: uh huh \n\ngeorge: (interrupts) and i still say hes naked under there! \n\njerry: oh that makes a lot of sense. \n\ngeorge: oh, shut up! \n\ndarren: then mr. seinfeld went to the restroom, at which point mr. costanza scooped ice out of mr. seinfelds drink with his bare hands using it to wash up (jerry is taking a sip of water and looking mad) then mr. costanza remarked to me, \"this never happened.\" (jerry then spits out the water). \n\n[scene: at jerrys apartment in his bed] \n\njerry: (giggling) \n\nclare: whats so funny? \n\njerry: oh, nothing. (still giggling) \n\nclare: what are you laughing about? tell me. \n\njerry: oh all right, this is really dumb, really stupid. weve been doing this silly, dumb voice. \n\nclare: so is it fun humiliating me? \n\njerry: no, its not you. its your stomach, hes taking with this funny, booming, jovial voice. (doing the voice) hello-o-o-o. \n\nclare: so you think im fat? \n\njerry: no its \n\ndarren: mr. kramer says, \"hey buddy!\" \n\njerry: hey, were kind of in the middle of something here. would you mind coming back later? \n\ndarren: oh yeah sure, sure. should we set something up now? \n\njerry: (screams) get out! \n\nclare: im leaving too. \n\njerry: no body said youre fat. hes a loving character, like the kool-ade guy. \n\nclare: he is fat! \n\njerry: no, hes just a little bloated. \n\nclare: good-bye! \n\njerry: its mostly water weight. \n\nkramer: boysenberry, the kid is still learning. \n\ndarren: mr. kramerdean, my internship is on line two, she wants to set up a meeting. \n\nkramer: yeah, well nothing before noon. \n\njerry: line two? \n\nkramer: yeah, your phone is line one. \n\njerry: oh \n\n[scene: at elaines apartment] \n\npuddy: so the gloves were right by the phone. that is pretty funny. \n\nelaine: see, this is what jerrys doesnt understand. we can see each other. we can see each other every day, but it doesnt mean we are back together. \n\npuddy: i mean i love just seeing you and having sex. \n\nelaine: yeah. \n\npuddy: not having to do all thatyou knowwork. \n\nelaine: well, either way \n\npuddy: all that calling you, and buying you stuff \n\nelaine: david \n\npuddy: caring about how everyone at work isnt as smart as you. its brutal. \n\nelaine: alright thats it! were back together! \n\npuddy: oh, no. \n\nelaine: oh, yeah. \n\npuddy: look elaine, be reasonable. \n\nelaine: get those clothes off. youre going to spend the night and were going to cuddle. \n\npuddy: what? \n\nelaine: you heard me. strip! \n\n[scene: at play now] \n\ngeorge: (whistling).(laughing).alrightok. \n\ngeorge: (on phone  calling secretary) hello margery, george costanza. how are you sweet heart? listen, can you give mr. thomassoulo a message for me? yes. if he needs me, tell him (screams) im in my office! thanks. \n\n[scene: at nyu] \n\nkramer: dean jones, you wanting to talk to me? \n\ndean jones: ive been reviewing darrens internship journal. doing laundry \n\nkramer: yeah. \n\ndean jones: mending chicken wire, hi-tea with a mr. newman. \n\nkramer: i know it sounds pretty glamorous, but its business as usual at kramerica. \n\ndean jones: as far as i can tell your entire enterprise is more than a solitary man with a messy apartment which may or may not contain a chicken. \n\nkramer: and with darrens help, well get that chicken. \n\ndean jones: im sorry, but we cant allow darren to continue working with you. \n\nkramer: well, i have to say this seems capricious and arbitrary. \n\ndean jones: you fly is open. \n\n[scene: at jerrys apartment] \n\njerry: so youre sure youre not still angry about last night? \n\nclare: no, im fine. just as long as you dont ever do that voice again. \n\njerry: never? \n\nclare: never. \n\njerry: what about if youre not around? \n\nclare: no! \n\njerry: so i have to choose between seeing you and doing the voice? \n\nclare: thats right. \n\njerry: i can do that. \n\nclare: so whats your decision? \n\njerry: i dont know. \n\nclare: jerryhi. \n\njerry: (doing the voice) hello-o-o-o. la-la-la. (haha) \n\n[scene: at jerrys apartment] \n\ngeorge: you broke up with her? why? \n\njerry: so we could do the voice. (doing the voice) la-la-la. whats the matter? \n\ngeorge: i think im getting tired of it. i mean is that all it does? hello? la-la-la? \n\njerry: no, it can do anything. it can be spanish. (doing the voice) hola. hello-o-o-o. \n\ngeorge: i think i like the girl better than the voice. \n\njerry: really? \n\njerry: (doing the voice) hello-o-o-o. \n\nelaine: still? \n\ngeorge: i told you. \n\nelaine: alright, here you go, choke on it (hands him money). \n\njerry: see, never bet against the backslide. i knew you two would get back together. \n\nelaine: yeah, well not for long. im breaking up with him. \n\njerry: no, i dont think so. ive seen you two together. you make each other miserable. its kismet. \n\nelaine: double or nothing. \n\njerry: done. \n\ngeorge: (talking from bathroom) witness? \n\njerry: youre in there again. \n\ngeorge: i think play now is putting something in my food. \n\nelaine: alright, im out of here. \n\njerry: what is this? (kramer is wearing jeans that look like it doesnt fit him). \n\nkramer: i dont know. i found them in your closet. ever since darren left i havent been able to find anything. he took all my clothes to some cleaners. im clueless. (looks at clock) is that clock right? \n\njerry: yeah. nine oclock. \n\nkramer: i was supposed to pick up newman at the zoo twelve hours ago. \n\njerry: (doing the voice) good-bye kramer. \n\nkramer: jerry, buddy, i got to tell you something. that voice is played. \n\njerry: really? \n\nkramer: so played. \n\ngeorge: i told you. \n\n[scene: hallway, darren is knocking on kramers door] \n\nkramer: darren? what are you doing here? the college canceled the internship. \n\ndarren: i dont care about the internship. i care about kramerica. \n\nkramer: kramerica is no more. \n\ndarren: what about the oil tanker bladder system? we were going to put an end to maritime oil spills. \n\nkramer: probably. darren, you go home. forget about kramerica. \n\nkramer: well, youre still here? \n\ndarren: i havent had time to leave. \n\nkramer: well, i havent changed my mind. \n\nkramer: well, you are a tenacious little monkey. alright, ill do it. kramerica industries lives! lets get back to work! \n\nkramer: lets see what jerry has to eat. \n\n[scene: at play now  in the bosses office] \n\nthomassoulo: you win george. weve had it. if you leave right now, play now will give you six months pay. thats half of your entire contract. pleasejust go. \n\ngeorge: you see if i stay the whole year, i get it all. \n\nthomassoulo: want to play hand ball huh? fine. (calls on intercom) attention play now employees, george costanzas handicapped bathroom is now open on the sixteenth floor to all employees and their families. \n\ngeorge: well played. \n\nthomassoulo: ill see you in hell costanza. \n\n[scene: at jerrys apartment] \n\njerry: (on the phone with clare) clare thanks for giving me a second chance. our relationship is certainly worth more than some silly, stupid voice. hold on one second. (george walks in  jerry asks george) so we definitely dont want to do the voice anymore? (george shakes his head no) alright, were back together again, great. bye bye. \n\n[scene: hallway  kramer & darren are pushing an oil tank] \n\nkramer: hey. \n\njerry: trouble down at the plant? \n\nkramer: its a tank of oil. darren and i are finally going to test out my bladder system. \n\ngeorge: you have to drink that whole thing? \n\nkramer: no. no. no. its for oil tankers. all i need to do is fill some sort of rubber container with oil and then drop it to see whether or not it can restrain the impact. \n\njerry: i understand (not really understanding, lol). \n\ngeorge: would a giant rubber ball work? \n\nkramer: conceivably. \n\ngeorge: well, play now has all kinds of different rubber balls. why dont we test your bladder system at my office? \n\njerry: youre not \n\ngeorge: oh, yes i am. mr. thomassoulo likes to play dirty. well, theres nothing dirtier than a giant ball of oil. \n\n[scene: at monks cafe] \n\npuddy: hey, you want to split a root beer (i think thats what he says)? \n\nelaine: i dont think so david, were through. \n\npuddy: ohthats a nice sweater (elaine smiles). \n\n[scene: at elaines house  the two are in bed] \n\nelaine: whew that was a dozy. \n\n[scene: at jerrys apartment] \n\njerry: go again? \n\nelaine: book it. \n\ngeorge: (again from bathroom) witness. \n\n[scene: at elaines apartment] \n\nelaine: david i know this hurts, but its the way it has to be (puddy is giving her a look like hes going to still get some). \n\n[scene: at jerrys apartment] \n\njerry: ha ha ha. ha ha ha ha. \n\n[scene: jerry and elaine at the movies] \n\nelaine: im going to get some popcorn. \n\nscene: at jerrys apartment] \n\nelaine: so, how did it end? \n\njerry: they got away. \n\nelaine: uh. \n\n[scene: at elaines apartment] \n\nelaine: listen david, ive got to run. can you lend me fifty bucks? \n\n[scene: at play now] \n\njerry: hey. \n\nkramer: did you bring the video camera? \n\njerry: yeah, i put a six hour tape in. that should cover the experiment, the arrest, and most of your trial. alright, ill see ya. \n\ngeorge: oh, you might want to stick around jerry. mr. thomassoulo picked the wrong man to hire because he was fake handicapped. \n\njerry: i cant. i got to meet clare. \n\nkramer: you gave up the voice? \n\njerry: yeah, i thought it was stupid. unless you guys are liking it again. \n\nkramer & george: no. no \n\njerry: darren? \n\ndarren: sorry mr. seinfeld. \n\njerry: uh, bathroom. \n\ngeorge: hey, use mine. ill let you in. \n\njerry: i thought it was open to the public. \n\ngeorge: i uh, took care of that. \n\njerry: wow! zanadu . no wonder youre putting in so many hours. (looks at urinal) may i? \n\ngeorge: i insist. ill fix us a drink. (phone rings  who would that be?) i got it. \n\nkramer: whew. you know darren, if you would have told me twenty-five years ago that some day id be standing here about to solve the worlds energy problems, i wouldve said youre crazy now lets push this giant ball of oil out the window. \n\ngeorge: so, check out my view. \n\njerry: wow! hey, theres clare. i better go down. \n\ngeorge: hey, theres kramer & darren. \n\njerry: theres the giant ball of oil. clares right underneath that thing. clare! hello-o-o-o! hello-o-o-o! hello-o-o-o! \n\nclare: i dont believe this. i am not looking up if youre going to do that voice. \n\nkramer: bombs away (uh oh). \n\njerry: this is going to be a shame. \n\ngeorge: hello. \n\nkramer: well, that didnt work. hey, how about thisketchup and mustard in the same bottle? \n\ndarren: oh that sounds interesting sir. \n\nkramer: yeah. \n\n[scene: at monks caf] \n\njerry: clare won her lawsuit against play now. gee, play now is filing for bankruptcy. i guess youre not going in anymore. \n\ngeorge: yeah. \n\njerry: so theyre not paying you your \n\ngeorge: no. \n\njerry: so youre pretty much \n\ngeorge: yeah. \n\njerry: what ever happened to darren? \n\nkramer: darren is going away for a long long time. \n\njerry: so clare sure looked real funny covered in oil like that (doing the voice) hello-o-o-o i got beamed with a giant ball of oil \n\ngeorge: (doing the voice) im slippery as an eel \n\nkramer: (doing the voice) la la la. \n\njerry: im just so glad its back. \n\n(scene: at elaines apartment in bed with puddy again) \n\nelaine: see, this is good. this is the way it should be. you know why are we fooling ourselves. we belong together. \n\npuddy: elaine i want to break up. \n\nelaine: ah nuts! \n\nfrank: i got no leg room back here. move your seat forward. \n\nestelle: that's as far as it goes. \n\nfrank: there's a mechanism. you just pull it, and throw your body weight. \n\nestelle: i pulled it. it doesn't go. \n\nfrank: if you want the leg room, say you want the leg room! don't blame the mechanism! \n\ngeorge: all right, dad, we're five blocks from the house. sit sideways. \n\nfrank: like an animal. because of her, i have to sit here like an animal! serenity now! serenity now! \n\ngeorge: what is that? \n\nfrank: doctor gave me a relaxation cassette. when my blood pressure gets too high, the man on the tape tells me to say, 'serenity now!' \n\ngeorge: are you supposed to yell it? \n\nfrank: the man on the tape wasn't specific. \n\ngeorge: what happened to the screen door? it blew off again? \n\nestelle: i told you to fix that thing. \n\nfrank: serenity nowww! \n\npatty: so i told bobby and lisa that we'd try the new chinese spanish \n\njerry: oh, i thought we had tickets for the knicks home opener. \n\npatty: well i thought this would be more fun so i gave the tickets away. \n\njerry: what? all right, fine. \n\npatty: are you mad at me? \n\njerry: no, i love a good chinese spanish whatever it is. \n\npatty: you know... i've never seen you mad. \n\njerry: i get peeved. \n\npatty: mad. \n\njerry: miffed. \n\npatty: *mad*. \n\njerry: irked? \n\npatty: i'd like to see you get *really* mad. \n\ngeorge: why does she want you to be mad? \n\njerry: she says i suppress my emotions. \n\ngeorge: so what do you care what she thinks. \n\njerry: good body. \n\ngeorge: she probably gets that impression because you're cool. you're under control. like me. nothing wrong with that. \n\njerry: but i get upset, i've yelled. you've heard me yell. \n\ngeorge: not really. your voice kind of raises to this comedic pitch. (kramer enters) \n\nkramer: hey. \n\njerry: kramer, i am so sick of you comin' in here and eatin' all my food. now shut that door and get the hell out of here! \n\nkramer: (laughing) what is that, a new bit? \n\ngeorge: i told ya. hey, any of you guys want to come out and help me fix my father's screen door in queens? \n\njerry: sorry, i'm fixing a screen door in the bronx. \n\nkramer: i'll do it. \n\ngeorge: really? you wanna come? \n\nkramer: yeah, i love going to the country. \n\nelaine: where are they goin'? \n\njerry: fix a screen door in queens. \n\nelaine: (laughing) that's funny. hey, listen, what are you doin' saturday night? \n\njerry: not goin' to the knick game. \n\nelaine: i need someone to go with me to mr. lippman's son's bar mitzvah. \n\njerry: you know, if you don't bring a guest they save a catering. you should be able to buy a cheaper gift. \n\nelaine: (taking out boggle) oh, i don't think that's possible. \n\nkramer: (holding camera) get in a little closer. i can't see the screen door. (takes picture) perfect. \n\ngeorge: dad, the hinges are all rusted here. that's why the wind keeps blowing the door off. \n\nestelle: i hate that old door. throw it out! \n\nfrank: serenity now! \n\nkramer: it might be time to just let her go, frank. she's worked hard for ya. \n\nfrank: will you put her to rest for me? \n\nkramer: oh yeah, i'll take good care of her. (rips out the screen door) \n\nestelle: (from other room) get george to put those boxes in the garage. \n\ngeorge: dad, what's all this? \n\nestelle: (from other room) it's junk. \n\nfrank: my computers. i've been selling them for two months now. shut up! \n\ngeorge: you're selling computers? \n\nfrank: two months ago, i saw a provocative movie on cable tv. it was called the net, with that girl from the bus. i did a little reading, and i realize, it wasn't that farfetched. \n\ngeorge: dad, you know what it takes to compete with microsoft and ibm? \n\nfrank: yes, i do. that's why i got a secret weapon... my son. \n\njerry: damn it, they gave me cream! i asked for nonfat milk! \n\npatty: i think they have 1% over there. \n\njerry: 1%?! they can kiss 1% of my ass! \n\npatty: ok, jerry, enough. i'm not buying it. \n\njerry: you're damn right you're not buying it! \n\npatty: you shouldn't have to try. it's just being open. \n\njerry: i'm open. there's just nothing in there. \n\npatty: sarcastically) uh huh. \n\njerry: oh, you think i'm lying about this? \n\npatty: i think you are. \n\njerry: well, i'm not. \n\npatty: yes, you are, liar. \n\njerry: oh, stop it. \n\npatty: ok, liar. \n\njerry: that's enough! \n\npatty: ooh, that was good. \n\njerry: really? it felt good. \n\nelaine: congratulations, mr. lippman. \n\nlippman: oh, elaine. my boy's a man today. can you believe it? he's a man. \n\nelaine: oh, congratulations, adam. (adam zealously french-kisses elaine) \n\nadam: i'm a man! \n\njerry: tongue? \n\nelaine: yeah. \n\ngeorge: wow! i didn't try that 'til i was 23. \n\njerry: well this kid's not just a man. he's a man's man. \n\nelaine: and i think he's been telling his friends. i got invitations to six more bar mitzvahs. (phone rings) \n\njerry: hello? yeah, this is jerry seinfeld. no, no, no, i do not want to stop over in cincinnati. well, then you upgrade me. that's right, you should thank me. goodbye. (hangs up) hey, i'm flyin' first class. \n\nelaine: where did that come from? \n\njerry: patty showed me how to get mad. you gotta problem with that? \n\nelaine: no. \n\njerry: good. \n\ngeorge: all right, relax, tough guy. i got to go out to my father's garage, help him sell some computers. \n\njerry: what? the two of you workin' in that garage is like a steel cage death match. \n\ngeorge: kramer. \n\nkramer: yeah. \n\ngeorge: what-what are you doing? \n\nkramer: oh, i'm putting up frank's screen door. this beauty's got a little life in her yet. \n\njerry: what do you need it for? \n\nkramer: (closing door) the cool evening breezes of anytown, usa. let's see how this baby closes. oh yeah, yeah, yeah. \n\ngeorge: morning, ma. \n\nestelle: (from another room ) you're late! \n\ngeorge: morning, dad. \n\nfrank: i'm not 'dad' in the workplace. my professional name is mr. costanza, and i will refer to you as 'costanza'. morning, braun. \n\nlloyd: (handing frank coffee) morning, george. two cream, no sugar. \n\ngeorge: what is lloyd braun doing here? \n\nfrank: your mother recommended him. \n\ngeorge: yeah, of course she did. that's all i ever heard growing up is 'why can't you be more like lloyd braun?' did you know he was in a mental institution? \n\nfrank: i didn't read his resume. \n\nlloyd: (ringing the sale bell) another sale, mr. costanza. chalk me up on the big board. \n\ngeorge: (inquiring about the chalk board) what is this? \n\nfrank: (drawing a zero under george's name) this is your lagging. good work, braun. \n\nestelle: (from another room) good for you, lloyd! \n\nelaine: so adam, i just talked to your father, and, apology accepted. \n\nadam: i'm not apologizing. it was great. i told everyone. \n\nelaine: yeah, i know. uh, by the way, could you do me a favor and tell mitchell tanenbaum that i will be unable to attend this saturday. \n\nadam: are you free friday night? \n\nelaine: i am, but that is not the point. you are thirteen, and i am in my early... 20s. \n\nadam: but i'm a man. the rabbi said so. \n\nelaine: no. you are not a man. it takes a *long* time to become a man. i mean, half my friends aren't even there yet. \n\nadam: well, if i'm not a man, then this whole thing was a sham! first, they said i was gonna get great gifts, and then, somebody gives me boggle. i renounce my religion! \n\nlippman: who wants cookies? \n\nadam: as of this moment, i am no longer jewish. i quit! \n\nlippman: what? \n\nelaine: (eating) walnuts, mmmmmm. \n\nfrank: you're late again, costanza, so listen up. starting tonight, we're having a little sales contest. the loser gets fired, the winner gets a waterpik. \n\nestelle: (from another room) you're not giving away our waterpik! \n\nfrank: serenity now! \n\ngeorge: you know what? it doesn't matter, because i quit! \n\nfrank: i guess your mother was right. you never could compete with lloyd braun! (lloyd rings his sale bell and smiles) \n\ngeorge: you wanna sell computers? i will show *you* how to sell computers! hello, mr. farneman. you wanna buy a computer? no? why not? all right, i see! good answer! thank you! (lloyd rings his sale bell) serenity now! \n\nelaine: adam, you don't become a man overnight. look at your father. it takes time. patience, experience. uh, several careers of varying success. and these are things i look for in a man. \n\nadam: (storming out of the room) well, that does me a lot of good. 'early 20s'! \n\nelaine: well, i'm sorry, sir, i tried. \n\nlippman: so, that's the type of guy you're looking for? \n\nelaine: uhh. i guess so. why? (mr. lippman vigorously starts making out with her) \n\npatty: (surveying kramer's hall patio ) what is this? \n\njerry: (knocking on kramer's door) anytown, u.s.a. hello? is kramer home? oh, hey. \n\nkramer: (spraying his flowers) hello, neighbor. \n\njerry: boy, those azaleas are really coming in nicely. \n\nkramer: oh, you gotta mulch. you've got to. \n\njerry: you barbecuing tonight? \n\nkramer: (ringing his wind chimes) right after the fireworks. \n\njerry: so, where do you want to eat tonight? \n\npatty: how about la caridad again? \n\njerry: again!? how much flan can a person eat!? \n\npatty: jerry, you've been yelling at me all afternoon. \n\njerry: well, i don't think more flan is the answer! \n\npatty: maybe i should just leave. \n\njerry: 'maybe'!? \n\npatty: good-bye! \n\njerry: double good-bye! (as patty leaves, open door reveals kramer, sitting on his lawn chair with a sparkler) \n\nkramer: hey, buddy! \n\nelaine: (coming in jerry's apartment) hey. happy new year! \n\nkramer: (getting the door slammed on him) y'all come back reeeaall... \n\nelaine: did you and patty just break up? \n\njerry: yeah! in fact, she broke up with me! and i don't want to talk about it! \n\nelaine: well, then you're free tonight. you know what, i heard about this great place called la caridad. \n\njerry: that's the last thing she said to me. she wanted to go there also, but i wasn't in the mood. \n\nelaine: whoa. what is the matter? \n\njerry: it's patty. \n\nelaine: jerry, you break up with a girl every week. \n\njerry: (crying) what--what is this salty discharge? \n\nelaine: oh my god. you're crying. \n\njerry: this is horrible! i care! \n\njerry: patty won't call me back. i don't know if i can live without her. \n\nkramer: she's really gotten to you, hasn't she? \n\njerry: i don't know what's happening to me. \n\nkramer: simple. you let out one emotion, all the rest will come with it. it's like endora's box. \n\njerry: that was the mother on bewitched. you mean pandora. \n\nkramer: yeah, well, she... had one, too. (george enters) \n\ngeorge: jerry, can i talk to you for a second? (they enter jerry's apartment) \n\nkramer: (baseball flies at kramer and hits him) that's it, that's it! i warned you kids. i told you not to play in front of my house. this time, i'm keepin' it. and you're not getting back your rock either! \n\ngeorge: (hearing jerry broke up with patty) are you still down in the dumps? come on. it's just a chick. \n\njerry: you ever heard of a little thing called feelings? \n\ngeorge: well, i got just the thing to cheer you up. a computer! huh? we can check porn, and stock quotes. \n\njerry: porn quotes... i'm so lucky to have a friend like you, george. ever tell you how much i love you? \n\ngeorge: what? \n\njerry: i love you, george. come here. \n\ngeorge: i-i'm already here. i'm here. i'm here. uh, you know what? if you want a computer, call me. i-i gotta go. \n\njerry: go wherever you want. i'm still gonna love you. \n\nkramer: look what they did. look what they did to my house! i turn my back for two seconds, and they put shaving cream all over my door. you, i see you! i'll teach these kids a lesson. where's that house i put under your sink? \n\njerry: hose under my sink. i love *you*, kramer! \n\nkramer: i love you, too, buddy, and george-- \n\ngeorge: i don't want to hear it, kramer! \n\nkramer: listen, when i give you the signal, i want you to turn this water on full blast. \n\ngeorge: what signal? what-what signal? \n\nkramer: i'll yell, uh, 'hoochie mama!' \n\ngeorge: if i do it, will you buy a computer? \n\nkramer: on the signal, george. on the signal. \n\ngeorge: only if you buy. i gotta make a sale. \n\njerry: i love you, costanza. \n\ngeorge: will you shut up?! \n\nkramer: now! now, george! turn on the faucet! george, turn on the faucet! hoochie mama! hoochie mama! hoochie mamamaaaaa! \n\nelaine: so now the *other* lippman kissed me. \n\ngeorge: well, sure. they're jewish, and you're a shiksa. \n\nelaine: what? \n\ngeorge: it means a non-jewish woman. \n\nelaine: i know what it means, but what does being a shiksa have to do with it? \n\ngeorge: you've got 'shiksappeal'. jewish men love the idea of meeting a woman that's not like their mother. \n\nelaine: oh, that's insane. \n\ngeorge: i'll tell you what's insane the price that i could get you on a new desktop computer. \n\nelaine: i am not buying a computer from you. \n\ngeorge: there's porn. \n\nelaine: (pausing) even so. \n\ngeorge: damn it! \n\nelaine: don't get me wrong, mr. lippman. i-i'm very flattered that you found me attractive enough to... lunge at me. huh. but the only reason you like me is because i'm a shiksa. \n\nlippman: that's simply not true. \n\nelaine: if you weren't jewish, you wouldn't be interested in me. \n\nlippman: you are wrong. i'll prove it. \n\nelaine: oh, no. don't! \n\nlippman: i renounce judaism! \n\nelaine: oy vey! \n\njerry: what happened to you, pal? \n\nkramer: joey zanfino and some of the neighborhood kids. they ambushed me with a box of 'grade a's. \n\njerry: are you all right? \n\nkramer: oh, no. i'm fine. serenity now. serenity now. serenity now. \n\njerry: so, you're using frank's relaxation method? \n\nkramer: (trying to open a back of chips) jerry, the anger, it just melts right off. serenity now. look at this. serenity now! \n\nelaine: (enters) hey, what happened to you? \n\nkramer: serenity! (he exits) \n\nelaine: well. you are not gonna believe this. now lippman is renounced. this shiksa thing is *totally* out of control. what is *with* you people? what are you looking at? \n\njerry: sit down, elaine. \n\nelaine: oh, no. jerry, i can't take any more gentle sobbing. \n\njerry: i've been thinking about what it means to be complete. \n\nelaine: do you have an apple or anything? \n\njerry: look at us, hurtling through space on this big, blue marble. \n\nelaine: or a nectarine? i would absolutely love a nectarine. \n\njerry: looking everywhere for some kind of meaning... \n\nelaine: why am i in such a fruit mood? ahh, banana! \n\njerry: when all the while, the real secret to happiness has been right in front of us! \n\nelaine: what? \n\njerry: elaine... \n\ngeorge: (entering jerry's apartment with a cartload of computers) jerry, i've found a way to beat lloyd braun! i buy the computers myself, i store 'em in your apartment. then, after i win the contest, i bring 'em all back and get my money back. ha ha! it's brilliant. what? what's wrong with your leg? \n\njerry: i'm asking elaine to marry me. \n\ngeorge: (leaving) i'll store these over at kramer's apartment. \n\njerry: elaine? \n\nelaine: uhh, jerry, i've got a lot goin' on with, uh, lippman right now. \n\njerry: lippman? \n\nelaine: (trying to get her bag to leave) yeah, and him too. what?! oh, yeah! i think george is calling me, so i'm gonna go give him a hand. come on! come on! \n\njerry: can i help you? \n\nelaine: no. stay! stay. stay. \n\nfrank: hey, braun, costanza's kicking your butt! \n\ngeorge: (using the phone) watch how it's done. oh, hello, mr. vandelay? would you like to buy a computer? oh, really? two dozen? \n\nfrank: costanza, you're white hot! \n\nphone: if you'd like to make a call, please hang up and-- \n\nfrank: hey, braun, i got good news and bad news. and they're both the same you're fired. costanza, you've won the water pik! \n\nestelle: you're not gonna give away that water pik! \n\nfrank: you wanna bet? serenity now, serenity now! \n\nlloyd: you know, you should tell your dad that 'serenity now' thing doesn't work. it just bottles up the anger, and eventually, you blow. \n\ngeorge: what do you know? you were in the nut house. \n\nlloyd: what do you think put me there? \n\ngeorge: i heard they found a family in your freezer \n\nlloyd: serenity now. insanity later. \n\njerry: what happened here, kramer? \n\nkramer: serenity now, serenity now... \n\njerry: kramer! \n\nkramer: geez! jerry, i didn't here you come in. yeah, the children, they've done sum redecorating. serenity now, serenity now. \n\njerry: you don't look well. \n\nkramer: well, that's odd, 'cause i feel perfectly at peace with the world- uh! eggs! you! serenity now, serenity now, serenity now. \n\njerry: oh, i'm sorry. look at me, i stepped on your last rose. \n\nkramer: (going into his apartment) jerry, come on. don't get upset about it. there's always next spring. now will you excuse me for a moment. serenity nooooooooww! \n\ngeorge: jerry! i did it! haha! i beat braun! \n\nkramer: (crashing and banging in his apartment) serenity now! \n\ngeorge: come on, wanna give me a hand with the computers? \n\nkramer: (crashing and banging around) serenity nooooowwwww! \n\ngeorge: why couldn't you squeeze one of those stupid rubber balls to get your stress out? why did you have to destroy *twenty-five* computers? \n\nkramer: (leaving) george, you listen to me. i owe ya one. \n\njerry: he's incorrigible. you want to talk about it? \n\ngeorge: oh, please don't tell me you love me again, jerry, i can't handle it. \n\njerry: george, letting my emotions out was the best thing i've ever done. sure i'm not funny anymore, but there's more to life than making shallow, fairly-obvious observations. how about you? \n\ngeorge: all right... here goes... \n\nelaine: rabbi, is there anything i can do to combat this shiks-appeal? \n\nrabbi: ha! elaine, shiks-appeal is a myth, like the yeti, or his north american cousin, the sasquatch. \n\nelaine: well, something's goin' on here, 'cause every able-bodied israelite in the county is driving pretty strong to the hoop. \n\nrabbi: elaine, there's much you don't understand about the jewish religion. for example, did you know that rabbis are allowed to date? \n\nelaine: (about to leave) well, what does that have to do...? \n\nrabbi: you know, a member of my congregation has a timeshare in myrtle beach. perhaps, if you're not too busy, we could wing on down after the high holidays? elaine? 'lainie? \n\ngeorge: so, that's it. all of my darkest fears, and... everything i'm capable of. that's me. \n\njerry: yikes. well, good look with all that. \n\ngeorge: where you going? i-i thought i could count on you for a little compassion. \n\njerry: i think you scared me straight. \n\nelaine: all right, jerome, i'm in. \n\njerry: what? \n\nelaine: maybe we should get married. maybe everything we need is right here in front of us. jer... let's do it. \n\njerry: i tell ya, i don't see it happening. \n\nelaine: what? what happened to the new jerry? \n\njerry: he doesn't work here anymore. \n\nelaine: oh, well that's just *great!* \n\ngeorge: i love you, jerry. \n\njerry: (leaving) right back at ya, slick. \n\ngeorge: you know, all these years, i've always wanted to see the two of you get back together. \n\nelaine: well, that's because you're an idiot. \n\nfrank: you single-handedly brought costanza and son to the brink of bankruptcy. \n\ngeorge: well what about all the lloyd braun sales? \n\nfrank: he's crazy. his phone wasn't even hooked up. he just liked ringing that bell. \n\nestelle: i told you to clean out this garage. i have to put my car in! \n\nfrank: this is a place of business. i told you never to come in here. serenity now! \n\nestelle: all right... \n\ngeorge: dad, you really should lay off the 'serenity now' stuff. \n\nfrank: so, what am i supposed to say? \n\ngeorge: 'hoochie mama'? \n\nestelle: move your crap, i'm comin' in! \n\nfrank: no you're not! hoochie mama! hoochie mama! \n\njerry: are you sure you can't stay longer? \n\nmorty: no, we just came for the funeral. ` \n\nhelen: poor marvin kessler, he went too early. \n\njerry: he was 96 years old. \n\nmorty: that had nothing to do with it, the man was out of shape. \n\nhelen: that's why we joined a program. we walk once around the block three times a week. \n\nmorty: and every morning i eat a plum. \n\njerry: well, what ever you do, you're wearing me out. \n\nhelen: what about you? \n\nmorty: yeah, looks like you're getting a little spare tire there, tiger. \n\njerry: really? \n\nkramer: hey, seinfelds! \n\nmorty: hey, mr. kramer! \n\nkramer: how long are you staying? \n\nhelen: we just came down for a funeral. \n\nkramer: oh yeah, yeah i heard, marvin kessler. boy, that makes you think. if he could go... \n\nhelen: see you downstairs with the car. \n\njerry: are you sure you don't need a hand with that? \n\nmorty: no no, the luggage is on the program. i got a brick in here. \n\njerry: did you give blood? \n\nkramer: no, not giving. hoarding. i'm storing it in to a blood bank. just in case. \n\njerry: in case of what? \n\nkramer: jerry, i know myself. if i'm out on the street and it's starts to go down, i don't back off until it's finished. \n\njerry: are we finished? \n\nkramer: done. \n\nvivian: elaine, i'm so glad you came out. \n\nelaine: yeah... \n\nvivian: you haven't seen jimmy for years. \n\nelaine: i know, i'm glad i got to see him before he hit puberty and got, you know all lurchy and awkward. \n\nvivian: actually, i'm gonna need someone to look after him tomorrow evening. \n\nelaine: tomorrow evening, sure. \n\nvivian: do you know anyone responsible? \n\nelaine: do i know anyone?? \n\nvivian: well, if you think of anybody, give me a call. \n\ngeorge: what are you doing? \n\ntara: incense, for the mood. \n\ngeorge: oh yes, by no means, the mood. let me know if there's anything i can do to lend support to the mood. \n\ngeorge: um, cream soda? \n\ntara: vanilla. \n\nelaine: can you believe that, vivian doesn't think i'm responsible? \n\njerry: who wants to responsible? when ever anything goes wrong, the first thing they ask is who's responsible for this? \n\nelaine: i couldn't raise a kid? come on, i love bossing people around. \n\njerry: what happened, i thought you were with tara tonight? \n\ngeorge: i was, i had to leave. she lit some vanilla incenses. the smell drove me nuts, all i could think about was food, i had to get out of there. we need some pudding here! pudding! \n\nelaine: you just left? what did you tell her? \n\ngeorge: i told i had a bus transfer that was only good just for another hour. \n\njerry: what? \n\ngeorge: i don't know, i was starving jerry! \n\ngeorge: oh, pudding! you want some? \n\njerry: hey, you guys think i'm getting a little...chunky? \n\ngeorge: what are you kidding? we look great! you know what this pudding needs? the skin on the top, you know like your mother used to make it on the stove. \n\njerry: elaine, what do you think? \n\nelaine: i think you're getting a little pudding under the skin yourself. \n\nkramer: my service rates went up? you banks are all the same with your hidden fees and your service charges. well, maybe i'll just take my blood elsewhere, yeah. \n\nbank employee: well, we can transfer to another bank for you. \n\nkramer: oh, no no no...no more banks. i'm keeping my blood in my freezer with...my money! \n\ngeorge: so eh, what do you say? \n\ntara: i guess we could use some food in our lovemaking. \n\ngeorge: ok, we got your...got your strawberries, your chocolate sauce, your pastrami on rye with mustard, your honey... \n\ntara: wait wait wait, pastrami on rye with mustard? \n\ngeorge: oh yeah yeah, don't you know they used pastrami in that movie 9? weeks? remember the pastrami scene? \n\ntara: no. \n\ngeorge: well, maybe it was ghostbusters? where ever it was, it worked! \n\njerry: didn't go for it, huh? \n\ngeorge: no. \n\njerry: so, she didn't appreciate the erotic qualities of the salted cured meats? \n\ngeorge: she tolerated the strawberries and the chocolate sauce, but eh, it's not a meal, you know? food and sex, those are my two passions. it's only natural to combine them. \n\njerry: natural? sex is about love between a man and a woman, not a man and a sandwich. \n\ngeorge: jerry, i'm not suggesting getting rid of the girl. she's integral. \n\njerry: maybe instead of trying to satisfy two of your needs, how about satisfying one of somebody else's. \n\ngeorge: hey, speaking of which, i found a great way to separate the skin from the top of the pudding without leaving any around the edges; exacto knife. \n\njerry: i told you george, no more pudding. i'm starting a purification program. keep all that kind of food away from me. \n\ngeorge: well, i guess these would be out of the question. (pulls out two pudding skins in plastic bags.) \n\njerry: what the hell is that? \n\ngeorge: pudding skin singles. \n\nkramer: hey buddy, i'm borrowing all your tupperware. \n\njerry: oh, why? \n\nkramer: i closed down my account at the blood bank. \n\njerry: what, it...it's here in the building? \n\nkramer: right across the hall. what, you wanna go see? \n\njerry: no i don't! in fact, if even one corpuscles of that blood should find it's way across that hall i will freak out on you kramer! freak out. \n\nkramer: you know, for a fat guy you're not very jolly. \n\nelaine: hey, working out? \n\njerry: you know it and i ditched all my junk food. \n\nkramer: what the heck is going on here? \n\njerry: sorry buddy, clean house. it's all health food. \n\nkramer: well, i may have to take it, but i don't have to like it. \n\nelaine: vivian left me a message. i guess a certain someone changed her mind about whether someone was responsible enough to watch certain other someone. \n\njerry: is this about me? \n\nelaine: no. \n\njerry: oh, then i lost interest. \n\nelaine: vivian, hi it's elaine. yeah, i'm over at jerry's, i got your message...what? yeah, he's right here, hold on...(hands the phone to kramer.) \n\nkramer: for me? go...yeah, what tonight? yeah, i'll be there...yeah later. (puts the phone down) well, somebody's baby-sitting. \n\nelaine: you? i'm more responsible than you are! \n\nkramer: don't be ridiculous. now, if you'll excuse me, i have to go to fill my freezer with my own blood. \n\ngeorge: oh, tara! \n\nkramer: hello, vivian! oh, this is a nice screen. \n\nelaine: kramer... \n\nkramer: don't take my money! \n\nelaine: it is me, you idiot. hi, all right you've got to get out of here, i'm gonna baby-sit the hell out of that kid. \n\nkramer: no, i'm the baby-sitter. \n\nelaine: no no no, you're out, i'm in. now, hit the road. \n\nvivian: elaine? what are you doing here? \n\nelaine: kramer is actually sleeping one off, so i thought that i'd help out...(kramer moans from the bushes) what's that, some raccoon or something...(hits kramer with a broom.) \n\nvivian: well, i guess this would be all right. jimmy, you remember elaine? she's gonna watch you tonight. \n\nelaine: hi jimmy. (jimmy kicks elaine to the shin.) ouch! (the screen door hits her in the head.) \n\njerry: hey, what are you doing here? i thought you were baby-sitting at vivian's. \n\nkramer: there was an incident. \n\njerry: oh no, where's the blood? (opens the fridge) it's in here isn't it? \n\nkramer: would you stop it. \n\njerry: what is this? \n\nkramer: it's jell-o. \n\njerry: what about this? this is blood isn't it?! \n\nkramer: this is tomato juice, look...(drinks from the bottle.) \n\njerry: ooh, you're sick! you're sick!! \n\nkramer: will you calm down. i took all my blood down to newman's. he let me put it in his meat freezer. \n\njerry: hey, what's going on? who made pudding? \n\nkramer: oh yeah yeah, george he came by and made more of those pudding skin singles. they're delicious. \n\njerry: damn that george, i told him i don't want this stuff around here anymore... \n\nkramer: heads up! \n\njerry: aaah... \n\njimmy: you're dead, president lincoln! you're dead! \n\nelaine: i wish i was dead. \n\njimmy: can i have your juice? \n\nelaine: as long as you don't put... \n\nelaine: thanks for the re-fill. \n\nvivian: hey, elaine! how did it go? \n\nelaine: oh, he's...he's a joy... \n\nvivian: really? some sitter have told me he's bit of a handful. \n\nelaine: oh, handful of sunshine. i wish i could do this every day. \n\nvivian: oh elaine, that's so good to hear. i've been having a few health problems lately. \n\nelaine: it's not serious, is it? \n\nvivian: well, it might be. just in case anything does happen, it's nice to know there's somebody like you around. \n\nelaine: oh yeah, that eh...that is nice to know. (pours the juice from the bag back to glass.) \n\njerry: aah! \n\nkramer: it's ok, jerry. i'm right here. \n\njerry: i can see that! what happened? \n\nkramer: that knife, it nicked your jugular. you know jerry, when somebody yells 'heads up', you're not supposed to actually look up. \n\njerry: i'll remember that. \n\nkramer: anyway, you were lucky that i was there. you lost a lot of blood. \n\njerry: what? \n\nkramer: oh yeah, you've got three pints of kramer in you, buddy. \n\ngeorge: three pints of kramer's blood? \n\njerry: i can feel his blood inside of me. borrowing things from my blood. \n\ngeorge: well, so much for purification week. \n\njerry: so, how's the fornicating gourmet? \n\ngeorge: doing quite well, thank you. yesterday i had a soft boiled egg and a quickie. you know what? if i could add tv to the equation, that would really be the ultimate. \n\njerry: george, we're trying to have a civilization here. \n\nelaine: hey. \n\njerry: hey, how was baby-sitting? \n\nelaine: oh, just great. i found out that vivian has some kind of medical problem and if the worst happens she wants me to take care of jimmy. \n\njerry: oh, i'm sure it won't be the worst. \n\nelaine: it doesn't matter. if anything happens to her, i'm on deck! scissors mishap, air show disaster, chinese organ thieves...it's a dangerous world. \n\ngeorge: she's right, i heard kramer got mugged out on the suburbs on a baby-sitting gig. \n\njerry: really? \n\nkramer: look at this, look at the hair on the back of my neck. it's all bramble, see it's like thicket back there. look, i need somebody to shave it for me, huh? \n\njerry: i'm not touching that thing. \n\nkramer: well, i have to say i'm very surprised and disappointed - blood brother. \n\njerry: oh, no... \n\nkramer: what? jerry, i gave you my blood. listen to your pulse, (takes jerry hand) hey buddy-hey buddy-hey buddy... \n\njerry: kramer, i'm not shaving your neck. \n\nkramer: so, my blood is not enough. would you like a kidney too, because i'll give it to you? i'll rip it out right here and stack it on the table! \n\njerry: all right, all right i'll do it, sit down. \n\nkramer: no no no, i don't have time right now. i'll catch you tonight, we'll do sort of an all over kind of thing, all right? \n\njerry: hello? \n\nhelen: kramer called, he told that you were in a hospital. \n\njerry: kramer called you? \n\nhelen: he calls every week. are you all right? \n\njerry: yes, i'm fine. \n\nhelen: he says he's fine. \n\nmorty: tell him to eat a plum. \n\nhelen: jerry, you really have to take better care of yourself. we bought you some session with a personal trainer. \n\njerry: i don't need a personal trainer. (kramer comes in) all right i've got to go, we'll talk about this later. \n\nmorty: plum...(jerry hangs up.) \n\njerry: why are you calling my parents? \n\nkramer: well, maybe if you called more often, i wouldn't have to. listen, is it all right if i watch a tape in here? \n\njerry: why here? \n\nkramer: well, i'm taping canadian parliament, you know on c-span. \n\njerry: ok... \n\nkramer: is it all right if i watch it in your bedroom, cause your bed is really nice? \n\njerry: fine... \n\nkramer: ok! \n\njerry: no no no no no no no no no no! i do not want that in here! \n\nkramer: blood! \n\njerry: all right. \n\nizzy: hello, dough boy. \n\njerry: mr. mandelbaum? you're the personal trainer? \n\nizzy: i'm here to whip you in to shape, so grab your jocks - if you need one. it's go-time. \n\nvivian: elaine? elaine? \n\nelaine: oh, hi, oh god. i didn't here you come in. \n\nvivian: where's jimmy? \n\nelaine: i don't know, i don't know...we had hohos for dinner and then eh...and then he put this plastic bag over his head and started running around until he got tired and then he laid down somewhere i...i tell you i'm no good watching that kid. \n\nvivian: sleeping like an angel. elaine, you're the best. \n\nelaine: no! i'm a scatter brain. that's why i probably can't hold a job or keep a man! \n\nvivian: be quiet. so, will you watch jimmy tomorrow? \n\nelaine: all right, but i'm running out of purses here. (takes her purse from a punch ball.) \n\njerry: ok mr. mandelbaum, what you want me to do? \n\nizzy: don't get puss honey, and pick up that medicine ball. \n\njerry: is this a gym, or some kind of fitness museum? \n\nizzy: not funny, over your head with it. are you ready? \n\njerry: for what? \n\nizzy: all aboard in the pain train! \n\njerry: how many session did my parents paid for? \n\nizzy: not enough to make a man of you, daffodil. \n\ngeorge: oohoho...spicy mustard...woohoho, you're hot tonight! \n\ntara: oh, george! \n\ngeorge: and now for the trifecta. (picks up a hand held tv and gets back under the covers.) \n\ntara: george? george? what are you doing?! (pulls the covers off. george is eating a sandwich and watching tv.) \n\ngeorge: pleasuring you? \n\n[5a. kramer and newman are making sausages. tape recorder plays jackie davis: manana. jerry comes in.] \n\njerry: what is this? \n\nkramer: we're making sausages. \n\njerry: i thought you were gonna watch a video. \n\nkramer: yeah, an instructional video about how to make your own sausages. \n\njerry: kramer, i'm not in a mood for this. \n\nkramer: all right, all right. newman, let's go grab some mail sacks and haul these beauties out of here. \n\njerry: blood over there, sausages over here. i'm living in a slaughter house. \n\nizzy: tonight i want you to sleep on this. toughens the vertebrae. (looks at the sausages) what in holy hell? sausages? is this your diet? \n\njerry: no they're not mine mr. mandelbaum... \n\nizzy: don't lie to me, butter bean. we're taking it up a notch. \n\njerry: so, the free love buffet is over? \n\ngeorge: i got greedy. flew too close to the sun on wings of pastrami. \n\njerry: yeah, that's what you did...i can't believe i got another session with izzy mandelbaum, he's probably makes me box a kangaroo. \n\njerry: what's going on? \n\ngeorge: i don't know. this sandwich is making me flush. \n\njerry: oh no, i'll tell you what you did caligula; you combined food and sex in to one disgusting uncontrollable urge. \n\ngeorge: i think you're right. you gonna eat that? \n\njerry: no, but please tell me that's all you're gonna do with it. \n\nelaine: jerry, i tell you; if this woman dies, it is going to be a major inconvenience. \n\ngeorge: these fries are really really good... \n\njerry: all right, that's enough of that. (jerry takes the plates and hands them to a waitress.) \n\nelaine: i mean i can't shake this woman. you know, now i have to go to jimmy's birthday party. \n\ngeorge: uuh, sleepy. \n\nelaine: no matter what i do, i cannot weasel out of raising this kid. \n\njerry: well, sleepy here is quite a weasel, maybe he can bat for you. \n\nelaine: yeah, that's what i need; a pinch weasel. \n\nkramer: why did you get rid of that sausage? \n\njerry: it wasn't me, it was mr. mandelbaum. \n\nkramer: yeah well, newman's not happy, he booted me out of his freezer. look, i've got to take my blood back to the bank, can i borrow your car? \n\njerry: what's wrong with yours? \n\nkramer: i got no a/c and i gotta keep the blood cold or it'll go bad. \n\njerry: all right, but this is it, this is the last favor, we're even! \n\nkramer: all right, even steven. oh, by the way, when you get back to your apartment try to keep it down because newman is taking a nap in your bed. \n\nkramer: oh, man...(looks to the glove compartment for a manual.) \"if the engine begins to overheat, turn off air conditioner\". never, i can't do that. \n\nkramer: oh, mama... \n\nkramer: shees, come on...(opens the radiator)..this thing is bone dry. (looks at the blood.) \n\nelaine: vivian... \n\nvivian: elaine! \n\nelaine: hi! this is my friend george. \n\nvivian: hi... \n\nelaine: i'm gonna go say hi to jimmy. \n\nvivian: ok. \n\nelaine: (whispering to george) you're up. \n\nvivian: oh, isn't elaine fantastic? \n\ngeorge: yes she is. it's a pity we won't be seeing much more of her. \n\nvivian: really, why? \n\ngeorge: oh, you haven't heard, she's going to live with her grandparents in redding pennsylvania. \n\nvivian: her grandparent passed away five years ago. \n\ngeorge: yes they did. i was covering. elaine has been deported back to scotland. \n\nvivian: she's american citizen, i have seen her passport. \n\ngeorge: all right, no more lies. elaine is been chosen to represent the upper west side in the next biosphere project. \n\nvivian: i haven't heard anything about another biosphere. \n\ngeorge: that's because it's underwater. \n\nvivian: this is insane. \n\ngeorge: is it? \n\nvivian: yes it it. \n\ngeorge: well, it's all for charity, so what's the difference. \n\nvivian: you...very knowledgeable. \n\ngeorge: well, i'm also an architect. is that pastrami? \n\nvivian: yes it is. i find the pastrami to be the most sensual of all the salted cured meats. hungry? \n\ngeorge: very. \n\nvivian: oh, wait...(vivian turns the tv on.) oohh... \n\ngeorge: vivian!! \n\njerry: is this really necessary? \n\nizzy: if you wanna live in a butcher shop, i'm gonna treat you like a piece of meat. \n\njerry: what if i can't keep up? \n\nizzy: you lie, you dry. fire it up, son. \n\nizzy jr.: right dad, mandelbaum, mandelbaum... \n\nizzy & izzy jr.: mandelbaum, mandelbaum...(izzy jr. drives ahead, but the car starts jerking) \n\nizzy: move it, move it! get those knees up! come on, kick it, kick it! \n\njerry: what's going on? \n\nizzy jr.: there's something wrong with your car. it's dripping something on my feet. some kind of red liquid. \n\njerry: oh my god, the blood! \n\nizzy jr.: blood!! \n\nizzy: get up boy, get up! we got a problem here! tough it up. this is for real, you've got to want it... \n\nelaine: so how long did they drag you? \n\njerry: well, for the first quarter mile they thought that i was just doggin' it. \n\nelaine: hi george. hi jimmy. \n\ngeorge: yeah, jimmy why don't you wait outside, you know, play with something. \n\ngeorge: ouch! \n\njerry: what's the kid doing here? \n\ngeorge: i'm baby-sitting! vivian asked me to raise him if she doesn't make it. \n\njerry: oh, that's a drag... \n\nkramer: that kid... \n\njerry: you put blood in the car?! \n\nkramer: jerry, it was overheating. you should take better care of that thing. \n\njerry: well, they told me that i got more blood, so i guess i owe you again. \n\nkramer: you didn't get the blood from me. \n\njerry: then who? \n\nnewman: hello jerry. \n\njerry: aaaaahhh...!!! \n\njerry & kramer: aaaahhh...!!! \n\njerry, kramer & newman: aaaaahhh...!!! \n\njerry: (on the phone) yeah. yeah. all right. uh-huh. \n\ngeorge: (knocking on the counter and feigning a muffled, chinese voice) chinese food! \n\njerry: (hanging up the phone) oh! there's my chinese food, i gotta run. all you. \n\ngeorge: who was it? \n\njerry: i did a show for a car dealership and they're getting me a new saab. \n\ngeorge: what about your old car? they couldn't get kramer's blood out of it? \n\njerry: no, the engine clotted. you know who set this whole thing up for me? frank merman. \n\ngeorge: fragile frankie merman? i never liked that guy. \n\njerry: why? he's harmless. \n\ngeorge: every summer you guys went to camp together. i was jealous. felt like he was the summer me. \n\njerry: he was not the summer you. besides, you had a summer me. whitey fisk, the guy who snuck you into last tango in paris. \n\ngeorge: i made him up. \n\njerry: so you never saw last tango in paris? \n\ngeorge: no. \n\njerry: too bad. it was erotic. \n\nkramer: (enters) well... i've had it with these jackbooted thugs! \n\njerry: 'pottery barn'? \n\nkramer: i got three 'pottery barn' catalogs in one day. that makes eight this month. \n\ngeorge: (holding a magazine cover) mira sorvino. think she'd go out with me? \n\njerry: why don't you just throw 'em out? \n\nkramer: oh, no. i've been saving them up here in your apartment. and now, it's payback time. 'pottery barn' is in for a world of hurt. \n\njerry: (taking a catalog) can i have one? i need one of those old-looking phones. so you wanna grab a bite? \n\ngeorge: i can't. i gotta make the weekly call to the folks. \n\njerry: so call now. \n\ngeorge: i gotta prep. i need a couple of anecdotes, a few you-were-right-abouts. it's a whole procedure. wasn't fragile frankie the one that used to run into the woods every time he got upset? \n\njerry: that's him. \n\ngeorge: is he still nuts? \n\njerry: what do you think? they gave me a new car for thirty minutes of 'so, who's from out of town?' \n\npuddy: (finishing eating) seriously, is this the best okra you've ever had, or what? \n\nelaine: mmm. de-lish. \n\npuddy: delish? \n\nelaine: delish. you know, short for delicious. \n\npuddy: oh, like scrump. \n\nelaine: yeah. \n\npuddy: (leaving) i'm gonna be late. see ya later. \n\njack: excuse me, can i borrow your ketchup? \n\nelaine: (passing him the ketchup) oh, sure. \n\njack: thank you. \n\nestelle: (answering the phone) hello? \n\ngeorge: hey, it's georgie. \n\nestelle: let me put your father on the phone. \n\ngeorge: ma! \n\nfrank: who is this? \n\ngeorge: dad, it's me. hey, listen, i was at fortunoff's the other day, and, you know what, you were right. \n\nestelle: (feigning a chinese, muffled voice) chinese food. \n\nfrank: (hanging up) sorry, george, our chinese food just came. talk to you later. \n\ngeorge: chinese food? \n\nkramer: (throwing his catalogs in the pottery barn store) hey, you like sending out catalogs!? how do you like gettin' 'em back!? \n\njerry: so, maybe they had chinese food? \n\ngeorge: after dark? please. at their age, that's like swallowing stun grenades. \n\njerry: well, there's one way to check. where there's chinese food, there's leftovers. \n\nelaine: (enters) well, gentlemen. lainie is... in love. \n\ngeorge: that's dynamite. yeah, i'll look for the chinese food leftovers. \n\nelaine: hey, hey, hey! i met this guy! and it was like this, totally unreal, fairy tale moment. \n\njerry: it wasn't whitey fisk, was it? \n\nelaine: oh, george's friend. whatever happened to him? \n\ngeorge: nothing. uh, i don't know. i gotta go. \n\njerry: so, this is beautiful. you, and puddy, and this new guy, in a big pot of love stew. \n\nelaine: oh, yeah... puddy. well, i won't fire him until i see if this new guy can... handle the workload. \n\nkramer: (entering jerry's apartment) will you look at this? more catalogs! 'omaha steaks', 'mac warehouse', 'newsweek'?! i can't stop all these companies, so, i'm gonna attack this problem at the choke point. \n\njerry: stop the mail? \n\nkramer: that's... even better! \n\nfrankie: jerry! \n\njerry: hey, frankie! so, where's the car? \n\nfrankie: this is it. \n\njerry: inside the van? \n\nfrankie: it is the van! don't you remember, we always talked about how cool it would be to have a van and just drive? \n\njerry: we were ten. \n\nfrankie: come on. let's take it for a spin. \n\njerry: i don't want a van. \n\nelaine: well, just tell him you want the saab. \n\njerry: you don't understand. this is fragile frankie merman. when we were in camp, if you upset him, he'd run out to the woods, dig a hole, and sit in it. \n\nelaine: well, i have an idea. keep the van, and get a bumper sticker that says, 'if this vans a-rockin', don't come a-knockin'.' \n\njerry: always helpful. \n\nestelle: oh, georgie, what are you doing here? \n\ngeorge: just dropped in for a visit. you, uh, you never called me back. \n\nestelle: uh... the phone broke. \n\nfrank: well, we got to get moving. \n\ngeorge: what? where are you going? \n\nfrank: we have a catered affair. \n\ngeorge: you're going like that? \n\nfrank: (leaving the kitchen) it's creative black tie. move, woman. \n\ngeorge: (checking the fridge) no chinese leftovers. george is gettin' suspicious. \n\njack: elaine, i'm sorry i'm late. \n\njack: i'm gonna be in the can. \n\nelaine: okay, jack. (to the cashier) can i use your phone? \n\ncashier (ruthie cohen): sure. \n\nelaine: (over the phone) puddy? it's elaine. we're through. yeah, that's right. again. \n\nfrankie: (in the van with jerry) nice captain's chairs, huh? \n\njerry: aye, aye. \n\nfrankie: oh, there's a spot. just back up. \n\njerry: hold on. there must be a truck backing up. \n\nfrankie: no, that's us. \n\njerry: great. you know, frankie, i was wondering. what if i decided that it's silly to drive a van, because, you know, i live in new york city. is there maybe some way i could exchange it? \n\nfrankie: you don't like the van? \n\njerry: no, no, no. just hypothetically. \n\nfrankie: i gotta go to the park. \n\njerry: no! no, you don't! no woods. i love the van. i'm a van guy. \n\nkramer: (showing jerry his mailbox) check it out. rain and sleet may not stop them, but let's see them get by... these bricks. \n\njerry: where'd you get the bricks? \n\nkramer: jerry, the whole building is brick. \n\njerry: so you want to take a ride with me out to jersey? i'm gonna try to sell the van to a lot. \n\nkramer: a dealer? are you insane? no, take out an ad. sell it privately. \n\njerry: i don't think i want to meet the people that are in the market for a used van. \n\nkramer: come on, jerry, just let me help you. \n\njerry: ok. \n\nkramer: all right! ok! right, here we go. yeah. ok, so... 'for sale. a big, juicy van.' and, ooh, you gotta put down, 'interesting trades considered.' \n\njerry: i don't want to trade. \n\nkramer: no, you don't have to. it's all about tickling their buying bone. \n\njerry: hey, you know what? this is all your mail. they're puttin' it in my box now. \n\nkramer: oh, that's it. they have gone too far. they keep pushing me, and pushing me. now i got no choice but to go down there... and talk to them. \n\nelaine: hey, jerry. i'd like you to meet someone. this is jack. (heraldic harp sounds as jerry looks at jack's face) \n\npostal employee: may i help you? \n\nkramer: yeah, i'd like to cancel my mail. \n\npostal employee: certainly. how long would you like us to hold it? \n\nkramer: oh, no, no. i don't think you get me. i want out, permanently. \n\nnewman: i'll handle this, violet. why don't you take your three hour break? oh, calm down, everyone. no one's cancelling any mail. \n\nkramer: oh, yes, i am. \n\nnewman: what about your bills? \n\nkramer: the bank can pay 'em. \n\nnewman: the bank. what about your cards and letters? \n\nkramer: e-mail, telephones, fax machines. fedex, telex, telegrams, holograms. \n\nnewman: all right, it's true! of course nobody needs mail. what do you think, you're so clever for figuring that out? but you don't know the half of what goes on here. so just walk away, kramer. i beg of you. \n\nsupervisor: is everything all right here, postal employee newman? \n\nnewman: yes, sir, i believe everything is all squared away. isn't it, mr. kramer? \n\nkramer: oh, yeah. as long as i stop getting mail! \n\ngeorge: (surprising his parents in the kitchen) welcome back. \n\nestelle: oh! \n\ngeorge: quick for a... catered affair. \n\nfrank: i don't know what you mean. \n\ngeorge: you ditched me. that's twice. now i demand to know what's going on! \n\nfrank: george, we've had it with you. understand? we love you like a son, but even parents have limits. \n\nestelle: the breakups, the firings. and every sunday with the calls. \n\nfrank: what my wife is trying to say is that this is supposed to be our time. \n\ngeorge: i'm not following. \n\nfrank: we're cuttin' you lose. \n\ngeorge: you're cuttin' me loose? \n\nfrank: now, if you'll excuse me, i'm going to make love to your mother. \n\ngeorge: they don't want to see me anymore! \n\njerry: but this is what you've always wanted. \n\ngeorge: it is. i'm just not ready yet. \n\njerry: aw, that's kind of sweet. \n\ngeorge: ah, shut up, jerry. my parents think they can ignore me. heh heh. well, they better think again. \n\njerry: oh, no. george, please. what are you going to do? \n\ngeorge: you remember my cousin rhisa? i'm gonna date her. \n\njerry: mother of god. \n\ngeorge: one little wink. she'll freak out, tell my parents. they'll be all over me. who is this guy? \n\njerry: that guy elaine's dating seems really familiar to me. i think he may have been a comedian i worked with one time. wait a minute, what is this? \n\njerry: that is the guy! \n\ngeorge: elaine's in love with the wiz guy? \n\njerry: no, she thinks she's in love with him. but she's just remembering this old commercial. \n\ngeorge: that's pretty pathetic. \n\njerry: i know. they're not even related. \n\nelaine: (enters) hey. \n\ngeorge: uh... hey. i'm gonna get going. \n\njerry: hey, have fun at the... family reunion. (george exits) so, what do you know about this jack fellow? \n\nelaine: isn't he the best? \n\njerry: yeah, nobody beats him. what kind of work does he do? \n\nelaine: oh, right now he's a fact checker for new york magazine. it's not much, but it has a certain type of quiet dignity. \n\njerry: (turning on the commercial) right, quiet dignity. as opposed to, say, this? \n\nelaine: oh, no. \n\njerry: oh, yes. \n\njerry: (answering the phone) hello? yeah, the van is still for sale. sure, come on buy. \n\nkramer: (rushing into jerry's apartment) yeah, i called about the van. \n\ngeorge: (at dinner with his cousin) some more merlot? \n\nrhisa: yeah, thanks. \n\ngeorge: sure. you know, rhisa. i've always found you... very attractive. \n\nrhisa: what? \n\ngeorge: i know it may sound shocking. but, i just can't stop myself from... wanting you. \n\nrhisa: you want to borrow money, right? \n\ngeorge: no, no. i-i just want us to be... together. \n\nrhisa: all right. \n\ngeorge: all right? \n\nrhisa: let's go for it. \n\ngeorge: well... we could dance around it a little first. \n\nrhisa: (playing footsie) nah. let's be bad, george. let's be really... bad. \n\ngeorge: whoa! whoa! geez! \n\nkramer: (inspecting jerry's van) so, how come you're selling it? \n\njerry: you know why i'm selling it. i hate it. \n\nkramer: how many miles? \n\njerry: two. \n\nkramer: city or highway? \n\njerry: look, do you really want to buy this thing, or what? \n\nkramer: (breaking the antenna) hey, hey. take it easy. i'm not gonna be pressured. i'll walk away right now. is this thing bent? i'm not paying for that. \n\njerry: all right, just get out of here. \n\nkramer: all right, look. i'm going to be honest. i'm very interested in the van. \n\njerry: ok, fine. 'what do i have to do to put you in this van today?' \n\nkramer: (pointing to the newspaper ad) well, i don't really have any money. but it says right here, 'interesting trades considered'. \n\njerry: you put that in! \n\nkramer: (pulling out an undershirt) and i'm glad i did. here. \n\njerry: you want to trade me an undershirt? \n\nkramer: no, i want to trade you screen legend anthony quinn's undershirt. he took this off to do sit-ups in the park and i nabbed it. \n\njerry: that's disgusting. \n\nkramer: well, it's my final offer. \n\npuddy: you dumped me for some idiotic tv pitchman. \n\nelaine: look, i'm sorry, puddy. it-it was a mistake. so, let's just put it behind us, and we can continue like this never happened. \n\npuddy: gee, i don't know. what if we're out somewhere and you see the maytag repairman. \n\nelaine: you're not taking me back? \n\npuddy: (leaving) that's right. \n\nelaine: he's not idiotic. he's the wiz. and nobody beats him. nobody... \n\nkramer: (handing out anti-mail pamphlets) here you go. mail is evil. pass it on. hey, mail blows. fax it to a friend. \n\nwoman: why does this dummy have a bucket on its head? \n\nkramer: because we're blind to their tyranny. \n\nwoman: then shouldn't you be wearing the bucket? \n\nkramer: yeah. move along, betty. \n\nfrankie: is this, uh, jerry seinfeld's van? \n\nkramer: well, not anymore. he traded it to me for some hollywood memorabilia. \n\nfrankie: i'm, uh, i'm so stupid. \n\nkramer: what? \n\nfrankie: (running away) i'm so stupid. uh, excuse me. i'm sorry. \n\nkramer: yeah, nice to meet you. \n\njerry: she's into it? \n\ngeorge: she's leaving me dirty messages on my answering machine. \n\njerry: so have your parents found out about it? \n\ngeorge: she wants to keep it quiet. she... thinks we have a real future together. \n\njerry: brave new world, alright. \n\nkramer: (entering monk's) hey, you guys. \n\njerry: hey, how's the anti-mail campaign going? \n\nkramer: oh, it's fantastic. we were out in front of the post office today, and not one person went in. \n\njerry: it's sunday. \n\ngeorge: why is the mailman wearing a bucket? \n\nkramer: huh? well, it symbolizes our persecution. \n\ngeorge: then... shouldn't you be wearing the bucket. \n\njerry: hey, i want my van keys back. \n\nkramer: oh, well. i, uh, thought we made a deal for quinn's t-shirt. \n\njerry: are you insane? give 'em to me. \n\nkramer: no, i can't, i can't. see, i told frank he could borrow it. yeah, he wants to move some of george's stuff into storage. \n\ngeorge: wait a minute? he's picking up the van tonight? this is perfect. i'll drive rhisa to someplace romantic. then when my father slides the door open, i'm in the van kissing his brother's daughter. \n\nkramer: oh, listen, jerry. one of your friends came by and he was very upset that i had your wheels. \n\njerry: oh, no, not frankie. \n\nkramer: well, i didn't catch his name, but then he went running into the park. \n\njerry: oh, no, the woods! the hole! \n\nkramer: (seeing newman pull up along side him in his truck) hey. \n\nnewman: kramer, what the hell are you doing? \n\nkramer: i know, i'm gonna switch the bucket to something else. \n\nnewman: not that! \n\nkramer: what? \n\nnewman: you're in trouble, kramer. i shouldn't even be talking to you, but i'm telling you as a friend. here's how it's going to happen you may be walking. maybe on a crisp, autumn day just like today. when a mail truck will slow beside you, and a door will open, and a mailman you know, maybe even trust, will offer to give you a lift. \n\nkramer: are you through? \n\nnewman: no! and no one will ever see you again! \n\nkramer: are you through? \n\nnewman: yes. no, wait! ok, yes. \n\nnewman: (seeing postal security officials walking towards kramer) quick! get in! \n\nkramer: oh, no, no, no. that's exactly how you said it was going down. \n\nnewman: there's another way it can go down, and it's going down right now! \n\nkramer: no. you said a mailman i know, and you're a mailman i know! \n\nnewman: i know you know, but you don't know what i know. \n\nkramer: (being grabbed by the security officials) hey! \n\njerry: frankie! frankie! frankie! frankie, is that you? \n\nhole digger: my name is edgar. \n\njerry: have a nice night. \n\nhole digger: thank you. \n\nfrankie: (digging a hole, talking to himself, and seeing jerry's van pull up near him) stupid... so stupid! jerry? \n\nrhisa: all right, george. i'm ready. \n\ngeorge: yeah, hold on. i'm, uh, i'm just trying to get a reading on my dashboard compass. where are my parents? \n\nrhisa: geor-gie... \n\nfrankie: (running up to the van and yelling through the window) is this seinfeld's van? seinfeld's van? seinfeld's van?! \n\nrhisa: (hearing frankie as george runs to the back of the van) wait. what's he saying? \n\ngeorge: i think he's saying 'son of sam'! oh, my god! \n\nrhisa: no, they caught him. \n\ngeorge: (running out and away from the van) i knew it wasn't berkowitz! \n\nfrankie: (seeing george running away) ohh... \n\nelaine: so i told him, 'hit the road. i'm going back with jack.' \n\njack: elaine, that's the second piece of good news today. \n\nelaine: really, what was the first? \n\njack: (pulling out his wiz hat) they're bringing me back. yeah. i'm the wiz again. \n\nelaine: what? \n\njack: (dancing around) i'm the wiz! i'm the wiz! \n\nelaine: well what, what about your fact-checking job? \n\njack: (dancing around) oh... here's a fact. uh, i'm... the wiz! i'm the wiz and noooobody beats me! \n\njerry: (finding frankie, in his hole) frankie... come on out of there. \n\nfrankie: you hate the van. \n\njerry: but i'm keeping it. as much as i hate the idea of being a van guy, it's much better than hanging out here with the nocturnal dirt people. \n\nfrankie: so, can we go for a ride? \n\njerry: yeah, let's just get out of here. \n\nhole digger #2: (eyeing the empty hole, and getting into it) are you done with that? \n\nfrank: (coming upon the van) good. he left the door unlocked. \n\nestelle: why did kramer have to park the van in the woods? \n\nfrank: isn't it obvious? there are no parking meters out here. \n\nestelle: (looking inside of the van) wow! \n\nfrank: (reclining the seats in the van to a bed) hey, look at this. hoochie mama! \n\npostmaster general: oh, my goodness. what have they done to you here? \n\nkramer: huh? who are you? \n\npostmaster general: well, you can just call me henry. \n\nkramer: henry atkins? the postmaster general? \n\npostmaster general: last time i checked. \n\nkramer: henry... can i get out of here now? \n\npostmaster general: oh, oh. sit a bit. sit a bit. i mean, after all, i drove all the way up here from d.c. just to talk to you. \n\nkramer: oh? \n\npostmaster general: i even had to cancel a round of golf with the secretary of state. do you like golf, mr. kramer? \n\nkramer: yeah. \n\npostmaster general: kramer, i've been, uh, reading some of your material here. i gotta be honest with you you make a pretty strong case. i mean, just imagine. an army of men in wool pants running through the neighborhood handing out pottery catalogs, door to door. \n\nkramer: yeah! ha ha. \n\npostmaster general: well, it's my job. and i'm pretty damn serious about it. in addition to being a postmaster, i'm a general. and we both know, it's the job of a general to, by god, get things done. so maybe you can understand why i get a little irritated when someone calls me away from my golf. \n\nkramer: i'm very, very sorry. \n\npostmaster general: sure, you're sorry. i think we got a stack of mail out at the desk that belongs to you. now, you want that mail, don't you mr. kramer? \n\nkramer: sure do! \n\npostmaster general: (receiving a salute from kramer) now, that's better. \n\nkramer: (seeing newman walk into the office with a bucket on his head, escorted by a security man) geez. newman? \n\nnewman: (whimpering) tell the world my story. \n\njerry: hey, george! \n\ngeorge: jerry! hey, that's the guy! \n\njerry: what? george costanza, frankie merman. \n\ngeorge: oh. the summer me. \n\nfrankie: the winter me. \n\njerry: you must be george's cousin. \n\nrhisa: girlfriend. \n\njerry: all right. \n\ngeorge: (seeing jerry's van shaking) what is that? that van's a-rockin'. \n\njerry: don't go a-knockin'. \n\nestelle: (after george opens the van door) oh, my god! \n\ngeorge: (seeing his parents being intimate) oh, my god! \n\nfrankie: now you gotta sell this van. \n\njerry: oh, yeah. \n\nfrank: what you saw in that van was a natural expression of a man's love for his lady. \n\ngeorge: ohhhh... \n\nestelle: your father's right. it's beautiful. \n\nfrank: and it was safe. \n\ngeorge: oh, god... \n\nfrank: now if you'll excuse me. once again, your mother and i... \n\ngeorge: oh... make it stop. \n\njerry: i just think if you borrow my blender you should return it. \n\nkramer: well whats the difference -- come on (pats him on the back) -- were like cain and able. \n\njerry: yeah, ya know cain slew able. \n\nkramer: no he didnt. they were in business together it was dry wall, or somethin. \n\njerry: oh, no. \n\nkramer: all right then, what was it? \n\njerry: well i think able worked hard all summer harvesting his crops, while cain just played in the field. then when winter came, able had all the nuts; cain had no nuts, so he killed him. \n\nkramer: the way i remember it, cain, he was a successful doctor, but when he took this special formula, he became mr. able. \n\njerry: ya broke my blender, didnt ya? \n\nkramer: yeah. well i was trying to make gravel and it just (moves hands around) just didnt work out. \n\njerry: i knew it. \n\njerry: why were you making gravel? \n\nkramer: well ... i like the sound it makes when you walk on it. \n\nkramer: aahh, this looks familiar \n\njerry: of course. it's garbage. \n\nkramer: no, no, no, no. these brown things. the chairs. (hits his hand on the rim) jerry, this is the set from the old merv griffin show! (he climbs into the dumpster) they must be throwing it out. this stuff belongs in the smithsonian! \n\njerry: yeah, at least in the dumpster behind the smithsonian. \n\nkramer: look at this. boy, one minute elliot gould is sitting on you and the next thing - you're yesterday's trash. \n\njerry: come on, kramer, get out of there. \n\nkramer: no, no, no. you go on ahead. i'm not finished taking this in. oh, jerry look ... merv griffin's cigar. \n\njerry: (moans) ohhh (walks away) \n\ngeorge: you know i uh, spilled a yogurt smoothie in here two days ago. hm, can't smell anything, can ya? \n\nmiranda: banana? \n\ngeorge: right. \n\nmiranda: george watch out for those pigeons. \n\ngeorge: oh they'll get out of the way. you really smell banana? \n\nmiranda: (gasp) oh my god. (trying to catch her breath, she puts her hand to her chest.) \n\ngeorge: so uh where we eating? \n\njerry: and it was his idea to put a sprig of parsley on the plate. \n\ncelia: you're making this up. there was never a joseph garnish. \n\njerry: wow! (jerry spots all the classic toys) \n\ncelia: oh yeah the toys. \n\njerry: where did you get all these? \n\ncelia: my dad was a collector. i inherited them after he died from a long painful bout with \n\njerry: super bowl! hey, an original g.i. joe. (picks up both items) with a full frogman suit. \n\ncelia: jerry, what are you doing? \n\njerry: i'm putting this on him and we're going to the sink. \n\ncelia: ohhh jerry. (takes them from jerry and puts them back with the other toys) they're priceless. they've never been played with. \n\njerry: i just want a, touch em a little. \n\ncelia: i said no. now come here. \n\nlou: hi (startled, elaine spills her coffee on her sleeve) i'm lou filerman. i'm new here. \n\nelaine: hey walter, what is the deal with that guy? \n\nwalter: uh-he's lou filerman. he's new here. \n\nelaine: (exhales) \n\nwalter: hey your coffee stain looks like fidel castro. \n\nelaine: you've been an enormous help. \n\njerry: you ran over some pigeons? how many? \n\ngeorge: what ever they had. miranda thinks i'm a butcher but i-i-it's not my fault is it? don't we have a deal with the pigeons? \n\njerry: course we have a deal. they get out of the way of our cars, we look the other way on the statue defecation. \n\ngeorge: right! and these pigeons broke the deal. i will not accept the blame for this! \n\njerry: so miranda's cooled on ya? \n\ngeorge: i'm getting nothing. \n\njerry: yeah, me neither. \n\ngeorge: really? i thought you and celia were sleeping together? \n\njerry: oh, the sex is wild but she's got this incredible toy collection and she won't let me near it! \n\ngeorge: i don't understand women. \n\njerry: here comes one. \n\nelaine: hey. what's going on? \n\ngeorge: hey (sees the coffee stain) art garfunkel? \n\nelaine: no, castro. \n\ngeorge: right. \n\nelaine: all because of this creepy new guy at work. he just - he just comes out of nowhere and he's right next to you! \n\njerry: so he just sidles up? \n\nelaine: that's right! he's a real sidler. (points at jerry) \n\njerry: maybe you just didn't see him. \n\nelaine: wha-you never see him. he sidled me again in my office. i was sitting there making cup-a-soup singing that song from \"the lion king\". \n\njerry: hakuna matata? \n\nelaine: i thought i was alone. \n\njerry: that doesn't make it right. \n\njerry: see, to me, the hakuna matata is not nearly as embarrassing as the cup of soup... \n\nelaine: would you just, let it go? \n\nkramer: (from his apartment) hey, jerry! come here a sec! \n\nkramer: hey! (moving a chair onto the set) \n\njerry: oh my god! \n\nkramer: (outstretched arms) it's the merv griffin set. (claps 7 times) \n\njerry: how did you get this in here? \n\nkramer: oh, you just bring it in sideways and (pop) hook it. \n\njerry: so where you gonna sleep? \n\nkramer: yeah ... backstage. \n\nelaine: ehnn! this chair smells like garbage. \n\nkramer: (putting on jacket) oh, well a lot of the stars from the 70's - they were not as hygienic as they appeared on tv. you take mannix for example. \n\njerry: i'm gonna get that. (walks across the set towards the blue curtain) \n\nkramer: all right. well, jerry, we'd love to have you back anytime. (stretches his arm out, as if hes reaching out a good-bye) \n\nkramer: well, elaine benes! well, it's great to have you! (elaine sits down) boy, is it possible that youre even more beautiful than the last time i saw you? \n\nelaine: (giggles) \n\ngeorge: ahh, ah-ahwe had a deal! \n\nelaine: mr. peterman, here are these pages that you wanted. \n\npeterman: one moment. i'm reading the most fascinating article on the most fascinating people of the year. annnnnd, done. oh, yes. i'm sorry i needed this so quickly (leafing through the pages). it must have been an awful lot of work. thank you very much, you two. \n\nelaine: what? (with arms crossed, she turns quickly and ) \n\njerry: so three dates and she still won't let me play with her toys. \n\nkramer: hm, that's interesting. you know someone mentioned to me you were not very happy with your toys, growing up. \n\njerry: yeah, that was me. \n\nkramer: oh, that's right, right, right. and uh you mentioned that uh, you didn't get a g.i. joe. you had an \n\njerry: an army pete. \n\nkramer: right. \n\njerry: he was made of wood and in the rain he would swell up and then split. \n\nkramer: and we all know how painful that can be. (as he says this, he turns and speaks directly into the non-existent television camera. jerry looks a bit confused.) \n\nelaine: jerry. oh there - - \n\nkramer: oh, elaine benes. well, this is quite a thrill, yes. come - - (motions for jerry to move down one seat as the new guest has arrived for her segment. kramer gives jerry a little push) come on sit down. yes. \n\nelaine: (clears throat) (to jerry) well, i'll tell ya, this sidler guy is really chapping my hide. \n\nkramer: ju - excuse me. yeah we're, talking this way. \n\nelaine: well, he's getting credit for work that i did! he's gonna sidle me right out of a job. \n\nkramer: ah, now, for those of us who don't know, uh, sidling is what? \n\nelaine: kramer, what is wrong with you? \n\nkramer: what do you mean? \n\nelaine: well, for starters, you're looking at note cards \n\nelaine: (to jerry) i'm gonna have to give that guy a taste of his own medicine, so, i am going to sidle, the sidler. \n\njerry: you, sidle? y-you ... you stomp around like a clydesdale! \n\nelaine: not with these honeys. ... wrestling shoes! \n\nkramer: (to the imaginary tv camera) only in new york. ... ha ha \n\ngeorge: jerry? \n\nkramer: oh! (turns on the merv griffin theme music) heeeyy! well, ladies and gentlemen! it's our good friend, george costanza! what a surprise! \n\ntape recorder: turn music off (kramer pushes the off button turning the music off) \n\nkramer: yeah, sit, sit, sit weeell! (laughing, clapping) \n\ngeorge: well, it happened again. \n\njerry: what happened? \n\nkramer: eyaaaya-ya-ya, i'll ask the questions. what happened? \n\ngeorge: well i just stomped some pigeons in the park. they - they didn't move. \n\nkramer: all right, let's uh, change the subject, ah. (looking at the yellow note cards) now, uh you and uh, jerry dated for a while. tell us ah ... what was that like? \n\nkramer: that was the wrong card. \n\ngeorge: i-i don't get these birds! they're breaking the deal. it-it's like the pigeons decided to ignore me! \n\njerry: so they're like everyone else. \n\nkramer: (laughs too loudly) all right, let's take a short break. \n\nkramer: okay ah, (checks his watch) we're back! \n\ngeorge: boy that-that bank clock is-is eight minutes off. \n\nmiranda: then why don't you just run it over too? \n\ngeorge: zing. \n\nmiranda: george, what are you doing? \n\ngeorge: did you see that? that-that pigeon didn't move! i had to swerve to get out of the way! i saved that pigeons life! \n\nmiranda: what pigeon? you drove right into that squirrel. (leaves the car) \n\ngeorge: squirrel? well, we have no deal with them! \n\njerry: (sound of gunfire) pkew, pkew, pkew, pkew, pkeeew! \n\ncelia: jerry! (she slides away from him)  those hands! they never stop! \n\njerry: i'm sorry. got any booze? what's say you and i get ripped! \n\ncelia: no. thanks. i have a headache. can you just get me an aspirin? \n\njerry: all right. \n\njerry: ohh, will not cause drowsiness\" \n\nlou: here's the new copy you wanted. \n\npeterman: ah, yes. well this certainly looks like a lot of words. in record time. i'm very impressed ... with both of you. \n\nelaine: (winks and clicks) thank you. ha ha ha ha. (sits down) \n\npeterman: unfortunately, i am also disgusted. this is incoherent drivel! this is a total redo. and i'm assuming i need it right away. \n\nelaine: well, i guess we'll just have - (lou has left) ohh, just gimme that. (takes the papers and walks away) \n\njerry: uhn-uh-uhn - uhn-uh-uhn - - veeer, veeer, veeer, veeer, veeer, veeer, veeer, veeer a-ha ha! mission accomplished! back to base, joe. (singing) dee, de-de, de-de-de-de-de (makes g.i. joe swim off, legs kicking) \n\nmiranda: doctor is the squirrel going to live? \n\ndoctor: there's been massive trauma. we could of course try to save him but, it would be costly, difficult and we'd have to send away for some special really tiny instruments. \n\ngeorge: well, uh, are there any other options? \n\ndoctor: we, could put him to sleep. \n\ngeorge: what might that cost? \n\ndoctor: well it's by the pound. so ... about 80 cents. \n\ngeorge: well? (miranda hits george) i was just - i'm curious, that's all. we, uh. we'd like you to, do everything possible. \n\ndoctor: he, um. he's not going to be the same, you know? \n\ngeorge: yeah. yeah. i-i know. \n\ngeorge: so they're flying the tiny instruments in from el paso. \n\nkramer: el paso? i spent a month there one night. \n\nnewman: (laughs - t-heheheheheheheh) el paso! \n\njerry: what's he here for? \n\nnewman: eue-aaa. \n\nkramer: ah to take some of the pressure off of me. so, jerry ah, what's going on with you? i understand there's a young lady in your life. mmm. \n\njerry: well, actually, it's kind of a funny story because she has this amazing toy collection and last night i finally got to play with them. \n\nkramer: well. sounds like things are progressing. do i hear, wedding bells? \n\nnewman: are you married right now? (points at jerry) \n\nkramer: newman. (kramer smacks newmans arm) \n\njerry: actually she doesn't even know about the toys. i gave her the wrong kind of medicine and i, guess she passed out! \n\nkramer: what do you mean \"wrong kind of medicine\"? \n\njerry: she's even got that old mattel football game that we love! \n\ngeorge: oh, come on! you gotta get me over there! \n\nkramer: wait a minute, wait a minute! you mean to say that you drugged a woman so you could take advantage of her toys? let's pause a moment. (newman starts the taped music) jerry, now, what you do with your personal life is your business, but when you're on my set - you clean it up, mister! \n\nnewman: i told you he was a risk. \n\njerry: oh, like he's not just carrying you! and has been for years! \n\nnewman: yeah? well, you bombed! that story stunk worse than these chairs! \n\nkramer: smile, everyone! we're back! \n\nlou: you wanted to see me, elaine? \n\nelaine: yes, lou. (exhales) you've got a lot going for you. you're um ... you're spontaneous. you're, symmetrical. you're, uh, ... (spins around as lou is behind her now) ehh - you're very quick, aren't ya. um, it's just that your... \n\nlou: my dead tooth? \n\nelaine: no. your. (breathes) \n\nlou: not my breath? \n\nelaine: uuhhh. \n\nlou: what can i do? \n\nelaine: well, you should never ever go anywhere, (shakes a box of tic tacs) without these. \n\nlou: thanks, elaine. you're such a super lady! (he opens the door and goes into the hall - now he clicks and clacks when he walks) \n\ngeorge: more wine and turkey? (pours celia more wine) \n\ncelia: hmm. (takes a sip) \n\njerry: so when i saw george on the street with an 18 pound turkey and a giant box of wine, i thought ... what a coincidence. we're just about to eat. \n\ncelia: what is that stuff in turkey that makes you sleepy? \n\njerry and george: tryptophan.* (*footnote - see end of script) \n\ncelia: ahh. \n\njerry: ... i think. have some more wine. (jerry pours his whole glass of wine into her glass.) \n\ncelia: what video did you get? \n\ngeorge: oh. \n\njerry: oh, george brought home movies of his boyhood trip to michigan. \n\ngeorge: four hours. \n\njerry: more heavy gravy? \n\ngeorge: (playing with toys) ahhhh, yes! touch down! your turn, jerry. (hands jerry the mattel football. george starts playing with the etch-a-sketch.) \n\nnewman: lately, though, i've been, uh, - i've been buying the generic brand of waxed beans. you know, i rip of the label i can hardly tell the difference. \n\nkramer: we've officially bottomed out, mm. who's our next guest? \n\nnewman: we got no one! \n\nkramer: we need a new format. we should shut down and re-tool. \n\nnewman: what about a guest-host? \n\nkramer: i'll pretend i didn't hear that. \n\nmiranda: doctor, how's the squirrel? \n\ngeorge: is he dead? \n\ndoctor: no. fortunately, the special tiny instruments arrived just in time. would you like to visit him? \n\nmiranda: yes he would. \n\ndoctor: you uh, you have 30 minutes. (doctor exits. george turns and looks towards the doctor) \n\ngeorge: so ... uh, squirrel. \n\ndoctor: one more thing mister costanza, we just need to know what time you'll be picking him up tomorrow. \n\ngeorge: what's that? \n\ndoctor: oh, we're discharging the squirrel. we think he'll be better off at home. \n\ngeorge: he has no home. he's a squirrel. \n\ndoctor: hmm-hm. your home, mister costanza. just make sure he gets his medicine six times a day and keep his tail elevated. (exits) \n\njerry: maybe it'll be fun having a pet. \n\ngeorge: it's not a pet! it's a wild invalid! and it knows that i tried to kill it. as soon as it gets better, it's gonna gnaw my brain out in my sleep! \n\nkramer: jerry, (claps) aaya - what are you doin' tomorrow? i want you to come by the set. \n\njerry: what about my \"questionable material\"? \n\nkramer: nope, we got a whole new format. edgy, youthful, plus ... we got jim fowler! \n\njerry: jim fowler? the animal guy from \"wild kingdom\" is coming to your apartment? \n\nkramer: well, i practically raised his kids. \n\ngeorge: that's perfect! he's a zoo guy! he take's care of animals. c-can i bring the squirrel by? \n\nkramer: what? two animal acts on the same show? (turns to jerry) what is this, amateur hour? look, george, i'm sorry, maybe another time, all right? (drums table and exits) \n\ngeorge: i gotta get to fowler. i know that he would take this squirrel off my hands. it's practically bionic! \n\nelaine: hey! (startles jerry and george) ha ha ha ha. nice sidle, huh? speaking, of which i think ive got that problem, solved. \n\njerry: tic-tacs work? \n\nelaine: he's a human maraca. \n\ngeorge: boy, my knuckles are still cramped from that football game. \n\nelaine: you took him over to celia's? \n\njerry: what? it's a victimless crime. \n\nelaine: what about the woman who's been drugged and taken advantage of? \n\njerry: okay, one victim. \n\nelaine: i think it's unconscionable. \n\ngeorge: hey, last night, i found a whole weeble village right behind the ez bake oven. \n\nelaine: ez bake oven? \n\nelaine: who wants cupcake? \n\ngeorge: oh, me, me, me, me, me! \n\njerry: you know, that batter is, like, 30 years old. \n\nfrank: (on tv) you step on it and it flushes. \n\nelaine: why is your father giving a tour of a rest stop? \n\nestelle: (on tv) stop squirming. \n\ngeorge: oh, don't look. t-this is the part where they change me. \n\njerry: you're like eight years old. \n\nestelle: (on tv) georgie. \n\ngeorge: i was seven and a half. \n\npeterman: that noise. that's the noise! \n\nelaine: what? \n\npeterman: that infernal rattling sound that has plagued me these past two days - and i could not find the source. in my office, in the hallway. even in the men's room! shame on you, elaine! \n\nelaine: no, no, mr. peterman that wasn't me! \n\npeterman: that reminds me of the hatian voodoo rattle torture! you haven't gone over to their side have you? \n\nelaine: no mister peterman. \n\npeterman: because, if i hear one more rattle - just one - your out on your can. and if you are undead - i'll find out about that too. (exits) \n\nelaine: (pushes lou into the room) lou! in here! (closes the door) we have to talk. \n\nlou: oh, right. \n\nelaine: (takes the tic tacs away from lou) ooh, stop it! bad voodoo. you gotta stop using these. \n\nlou: why? \n\nelaine: because they're turning your teeth green? \n\nlou: i only buy the white ones. \n\nelaine: o-kay ... well then your teeth are green for a different reason. you just gotta stop carrying these, okay? just ... just mouth wash. \n\nlou: i can't. it burns my cankers. \n\nelaine: binaca? \n\nlou: again. \n\nelaine: right, right, cankers. um, i got it! chew gum! \n\nlou: i hate gum. the only guy i ever liked came with the mickey mouse gumball machine. they stopped making that 20 years ago. \n\nelaine: well, stinky, this is your lucky day. \n\nkramer: okay. a little later, we're gonna be talking with animal expert, jim fowler. \n\nfowler: where are the cameras? (he has a live hawk perched on his arm) \n\nkramer: but first, we're talking with, jerry. (looks down to his yellow note cards) okay, jerry, uh, you uh, you drugged a woman in order to play with her toy, collection. how do you feel about that? \n\njerry: it was great! i've done it a few more time since then. \n\nkramer: and she doesn't know anything, about this? \n\njerry: no, not a thing. \n\nkramer: well, jerry, we have a little surprise for you! come on out, celia! \n\ncelia: what kind of a sick twisted creep are you? \n\nnewman & kramer: woah. \n\njerry: what, what is this? what is she doing here? \n\nkramer: it's the new format. scandals and animals. git gt gt. \n\ncelia: if you think you can drug me and play with my toys, you got another thing coming, buddy! \n\nnewman: go girl! \n\njerry: well, what kind of woman drinks an entire box of wine? \n\nnewman and kramer: ohhh! \n\ngeorge: mister fowler, i-i have a squirrel here that is a miracle of modern science! (laughs) \n\nkramer: george i told you we're booked! \n\nfowler: careful. hawks and squirrels don't get along together. \n\nkramer: ohhh. another interesting confrontation. this could be spicy. yeah, george bring him over. \n\ngeorge: uh. \n\nfowler: no, you idiot! hawks eat squirrels! \n\ngeorge: ahhhh, ahh, ah, ahhh, ahh, ah! \n\nkramer: (off camera) are we getting this? \n\njerry: so the whole set was destroyed? \n\nkramer: well, the squirrel kept scurrying and the hawk kept clawing. \n\ngeorge: well, at least we know the prosthetic squirrel hips work ... sorry bout the set. \n\nkramer: ill tell ya it was a grind having to fill 10 hours a day. i'm not sure i was ready to have my own talk show set. \n\nmiranda: i got the nut bread, george. let's go. (exits) \n\njerry: so the squirrel's gonna make it? \n\ngeorge: yeah, he's in my bed. i'm sleeping on the couch. \n\njerry: on the couch? so you're... \n\ngeorge: still getting nothing! \n\ngeorge: so go ahead pigeons. hu hu hu. laugh it up. i'm getting in my car now and the last i heard ... we have no deal! \n\ncelia: i'm glad you called, elaine. i really needed to talk to someone. \n\nelaine: oh well, hey, i dated jerry too. i-i know what a monster he can be. more wine and turkey? \n\ncelia: who's he? (lou) \n\nelaine: oh, he's nobody. hey, listen, ... let me top that off for ya. (pours her glass of wine into celias glass) \n\nelaine: hey. \n\njerry: morning. \n\nelaine: look, this is crazy, i can't go on like this. \n\njerry: but why? \n\nelaine: i need some space. \n\ngeorge: does that mean i have to go too? \n\njerry: you don't think she's just talking to me? \n\ngeorge: hey, shut up. \n\njerry: you shut up. \n\nelaine: i hate this. \n\nkramer: you'll get used to it. it's like a grubby scrub. \n\nelaine: no, i don't want this anymore. \n\njerry: we'll come to work with you. \n\ngeorge: and on your dates. \n\njerry: and shopping. \n\nkramer: and to the bathroom. \n\njerry, george & kramer: elaine, elaine, elaine, elaine...(distant alarm sound which is getting louder.) \n\nelaine: i can't breath...i'm sorry...(elaine wakes up) you're killing me! \n\n(elaine tries to push her alarm clock showing 3: 30. she realizes, that alarm comes from next door.) \n\nelaine: (banging the wall) turn your alarm off!! (screams) \n\nkruger: your background is impressive george, but how does it apply to what we do here, at kruger industrial smoothing? \n\ngeorge: well, at the yankees it was all about smoothing things over, you know, chiseling away, grinding down. in fact we used to call it 'the grind'. \n\nkruger: it says here that you worked at play now for four days? \n\ngeorge: that should be 14, let me just...(corrects it with a pen.) \n\nkruger: george, i have to honest; i could go either way with you...but what the hell, we need someone, huh. \n\ngeorge: you won't regret this, sir. \n\nkruger: i don't care. let's find you an office. \n\n(kruger leaves and george notices a photograph on the table: kruger's family and george on the background.) \n\ngeorge: ...and then when i saw the photo i remembered where i'd seen him; the boom box incident. \n\njerry: the boom box incident? \n\ngeorge: summer of '89 i'm at the beach. this family sits up next to me. i go in to the surfs and when i come from out, my clothes, my towel, my umbrella, they're all gone. i am furious, i start screaming to these kids demanding my stuff back and finally i lose it; i grab their boom box and i chuck it in to the ocean. \n\njerry: seems reasonable. \n\ngeorge: then i see my clothes floating out there. the tied took them out, not the kids. \n\njerry: even more reasonable. \n\ngeorge: so now, the father is screaming at me, he's demanding that i pay for the boom box. finally, i gave them a fake address and got the hell out of there. \n\njerry: and that guy is your new boss? \n\ngeorge: until that stupid photo jogs his memory. \n\nkramer: kruger? that's not kruger industrial smoothing, is it? \n\ngeorge: yeah. \n\nkramer: grinders, sanders, wet stones. they are the ones who botched the statue of liberty job. \n\njerry: right, they couldn't get the green stuff off. \n\ngeorge: it is a horrible company. there's no management what so ever. i could go hog wild in there. \n\nkramer: you now what you do? you sneak that photo out of there for couple of days and get it air brushed. \n\ngeorge: like retouched. \n\nkramer: you remember that photo of me and gerald ford and i took it in. got that ford right out of there. \n\ngeorge: oh, this is good. this kruger guy is clueless. i can't wait to work for him. \n\nkramer: look at this. this sandwich is terrible. everywhere you go, they give you this misshaped shardy meat. look at this... \n\nkramer: i haven't had a decent sandwich in 13 years. \n\njerry: neither have i. \n\nkramer: hey, our meat problems are solved. \n\njerry: where did you get this thing? \n\nkramer: i traded it to my sausage press. look how thin that is, see that's all surface area. the taste has nowhere to hide. \n\nelaine: hey. \n\nkramer: hey, spice. (gives elaine a piece of meat.) welcome to flavor country. \n\nelaine: yeah, that's pretty good. \n\njerry: hey, i got a date with that doctor you met. \n\nelaine: sara sitarides? \n\njerry: mmhu. \n\nelaine: oh...(falls in to the sofa.) \n\njerry: what's with you? \n\nelaine: you remember that next door neighbor of mine, the apartment that always smells like potatoes? \n\njerry: your whole building smells like potatoes. \n\nelaine: this jackass goes to paris, leaves the alarm on. it's been beeping since 330 this morning. \n\nkramer: you know, that happened to lomez, so he blew his neighbor's circuit. \n\nelaine: how do you do that? \n\nkramer: yeah well, that's easy. just let me finish this mile high and i'll be right with you. oh, and jerry, we are gonna need a case of kaiser rolls. \n\njerry: i think we might have one left in the stock room. \n\nkramer: this hallway smells like potatoes. \n\nelaine: i know, i know, this is it. (points to a door.) \n\nkramer: ok, oh, you see this socket it's probably connected to her apartment. so what we'll do, we'll take this paper clip and bend it so it'll short out the entire circuit. here you go... \n\nelaine: i think i'll let you do it. \n\nkramer: no no no. it's easy, you just...do it quickly. \n\nelaine: no, i really don't want to. \n\nkramer: well, i don't want to either. \n\nelaine: i thought you had done this before. \n\nkramer: it's just...it's no picnic. \n\nelaine: well, how are we gonna do it? \n\nkramer: alright, fine fine, i'll do it. \n\nkramer: oh mama. \n\nelaine: are you okay? \n\nkramer: i will lose that nail. \n\nsara: i enjoy the challenge of medicine. naturally you have no idea what it's like to have someone's life depending on you. \n\njerry: well, i have this neighbor... \n\nsara: a joke. do you have any idea how it feels like to save someone's life? \n\njerry: is it anything like hitting a home run in softball? \n\nsara: no. \n\njerry: cause i hit a whopper last week! \n\nclerk: here you go, airbrushed in to sand and sky. \n\ngeorge: what did you do here? you took out the wrong guy. \n\nclerk: i thought you said you wanted to be out? \n\ngeorge: well, i'm still here. you took out the other guy! \n\nclerk: you've really lost a lot of hair. \n\ngeorge: i am aware! \n\nelaine thinking: hmm, the world's best pizza cutter. 76 bucks, how often do i make...oh, i've gotta buy a book. \n\nelaine: the cat. \n\njerry: he took out kruger? \n\ngeorge: i just pray kruger doesn't realize that it's gone until this guy can fix it up. \n\nkramer: this slicer is indomitable. \n\njerry: where did you get that butcher's coat? \n\nkramer: you buy enough meat, they'll give you anything. \n\nelaine: kramer, my neighbor has a cat. when you blew the power, we must've shut off the automatic feeder. \n\nkramer: see, that's the same thing that happened to lomez. \n\nelaine: what did he do about it? \n\nkramer: well, he moved to a hotel and the cat eventually died. \n\nelaine: well, this meowing is absolutely worst than the alarm. \n\nkramer: oh, that's a prickly one. \n\nelaine: yeah, how's the doctor date? \n\njerry: eh, died on the table. just spent hour and a half making me feel, if i don't save lives, i'm worthless. \n\nelaine: well, she's very focused. dermatology is her life. \n\njerry: dermatology? \n\nelaine: yes, she's a dermatologist. \n\njerry: saving lives? the whole profession is; eh, just put some aloe on it. \n\nkramer: the slicer! elaine, let's go. \n\nelaine: where are we going? \n\nkramer: the cat. just grab that meat and let's ride. \n\ngeorge: when are you going on your next date with her? \n\njerry: oh, what's the point? \n\ngeorge: what, you're gonna pass up a wonderful opportunity to put that aloe pusher in her place? \n\njerry: revenge date? that sound like you more than me. \n\ngeorge: this good be so sweet, jerry. saving lives? she's one step away working at the clinique counter! \n\njerry: dermatologist? skin doesn't need a doctor! \n\ngeorge: of course not! wash it, dry it, move on! \n\njerry: you're right. i'm gonna call her right now and tell her off. \n\ngeorge: no no no no no, this has to be carefully orchestrated. you go to a fancy dinner, flowers... \n\njerry: flowers? \n\ngeorge: yeah, you gotta do it classy (wipes his mouth to his sweater.) \n\njerry: so, you've done this? \n\ngeorge: almost. couldn't get the girl go out with me the second time. \n\nkramer: i think we are looking half a millimeter. \n\nelaine: can it cut that thin? \n\nkramer: oh, i've cut slices so thin, i couldn't even see them. \n\nelaine: how did you know you cut it? \n\nkramer: well, i guess i just assumed. \n\nelaine: hold on kitty, dinner's coming. \n\nkramer: yeah, that's a hall of famer. \n\nelaine: alright, let's do it. \n\nkramer: alright, here we go. yeah, watch that baby slide...(puts a slice of meat under the door.) \n\nelaine: come on, come on kitty...(slice disappears) ooh...how about that; it worked! wow, can i borrow that thing for a while? \n\nkramer: oh no, i don't think so. \n\nelaine: why not? \n\nkramer: well, you're not checked at on it. \n\nelaine: what do i have to know? \n\nkramer: well, where the meat goes? \n\nelaine: right there. \n\nkramer: where do you turn it on? \n\nelaine: right there. \n\nkramer: but where does the meat go? \n\nsara: restaurant, flowers...this is so nice. \n\njerry: well, i'm a classy guy. how's the life saving business? \n\nsara: it's fine. \n\njerry: it must take a really really big zit, to kill a man! \n\nsara: what is with you? \n\njerry: you call yourself a lifesaver. i call you pimple popper md! \n\nparry: dr. sitarides? \n\nsara: mr. parry, how are you? \n\nparry: i just wanted to thank you again for saving my life. \n\njerry: she saved your life? \n\nparry: i had skin cancer. \n\njerry: skin cancer! damn. \n\nelaine: you were right kramer, this slicer is absolutely amazing...yeah, yeah...no no no i'll bring it by tonight...ok bye. \n\nelaine: these heals are so uneven. (watches the slicer.) \n\nclerk: here you mr. costanza. \n\ngeorge: what is this? this is a drawing. \n\nclerk: looks real, doesn't it? \n\ngeorge: this is a cartoon! \n\nclerk: hey, i had to draw that guy from memory. considering, i think that's damn good. \n\ngeorge: but it's not a photograph, i need a photograph! \n\nclerk: then you better get a camera. \n\njerry: he looks like a peanuts character. \n\ngeorge: i know. the only way to fix it now, is to get a whole new photo of kruger. \n\njerry: you can do that. \n\ngeorge: without his shirt on. \n\njerry: you can't do that. well, maybe kruger wasn't the place for you. \n\ngeorge: it seemed so disorganized. \n\njerry: i understand. \n\ngeorge: what about the coast guard? seems like a lot of pride there, a lot of tradition. \n\njerry: true. you mean, for you? \n\ngeorge: i think. \n\njerry: what about your sea sickness? \n\ngeorge: maybe i could be a land guy. \n\njerry: i don't know if they have land guys. \n\ngeorge: someone's have to unhook the boat before it leaves...the place! \n\nelaine: pliers? \n\njerry: drawer. \n\nelaine: got it. \n\njerry: what are they for? \n\nelaine: i...eh...i got a piece a my heal stuck in a slicer. \n\njerry: come again? \n\nelaine: okay, i got a little slicer happy, but listen; don't tell kramer, okay? he has very strong feelings for it. \n\ngeorge: i forgot to ask you; how did the revenge date go? \n\njerry: eh, it went okay. \n\ngeorge: did you dressed nice, did you do it classy? \n\njerry: yeah, i started out real classy... \n\ngeorge: yeah you did, you classed it up! \n\njerry: but then i found out about the skin cancer. \n\ngeorge: oh, so it backfired? \n\njerry: yeah. \n\ngeorge: so, i guess i was lucky that i never tried that myself. \n\nelaine: of course she treats skin cancer. that's how i met her, she was doing a skin cancer screening at peterman. that's what dermatologists do. \n\njerry: sadly, that knowledge could've help me. \n\ngeorge: wait a minute, she did a skin cancer screening at peterman? \n\nelaine: aha. \n\ngeorge: could she do that at kruger? \n\nelaine: i don't know, i guess. \n\ngeorge: so i set up a screening, everyone takes their shirt off and click, i snap me a shot of a bear-chested kruger. \n\nelaine: you have a little thing for this fella'? \n\ngeorge: jerry, you gotta talk to sitarides. \n\njerry: yesterday you said i had to get my revenge on her! \n\ngeorge: and that was wrong, jerry! you simple must to apologize.. \n\njerry: must i? \n\ngeorge: yes! because it is the mature, adult thing to do. \n\njerry: how does that reflect me? \n\nkramer: elaine, alright where's the sp2000? cause i gotta slice. \n\nelaine: aah, i forgot it. i gotta get home. \n\nkramer: ok, i'll go with you. \n\nelaine: umm, i'm not actually going straight to home, i have to first stop at the eh...circus, you know with all the...clowns. \n\nkramer: oh, well you have fun...(elaine leaves) oh no clowns...hate clowns...the clowns. \n\njerry: so again, i'm sorry. i had no right to yell at you, you're a life saving doctor and i'm just a comedian... \n\nsara: jerry, enough. i'll do your friend's cancer screening, because i believe in that, but as far as you and i are concerned; it's off. \n\njerry: was it pimple popper md? \n\nsara: that's the one. (taps jerry on the cheek and leaves.) \n\njerry: still got it. \n\nelaine: out, damn heal! \n\nkramer: elaine? \n\nelaine: kramer? \n\nkramer: yeah listen, i need my slicer back. \n\nelaine: just hold on! \n\nkramer: hey, what's going on? \n\nelaine: nothing...(heal comes loose and elaine opens the door.) here, ok i'm on the phone alright? i'm on the phone with someone... \n\nkramer: my blade is all dinged up. oh, come on! elaine! \n\nelaine: phone call! i'm in a big phone call! \n\nkramer: come on, this is important! (shakes the door handle and it comes loose. kramer falls backwards to the next door.) \n\nneighbor: hey, get the hell out of here! \n\nkramer: wow, that's a lot of potatoes. \n\nkramer: so, george took my slicer down to kruger and they're smoothing it out for me. \n\njerry: what the hell is this? \n\nkramer: boy, that looks like an allergic reaction. have you been wearing a fake beard? \n\njerry: no. \n\nkramer: well, what have you been doing? \n\njerry: nothing, i got up, run some errands, i went down to sara's office and apologized... \n\nkramer: whoa whoa, backup, dr. sitarides, what happened there? \n\njerry: well, i tried to apologise, it didn't go over that well... \n\nkramer: there, there's your hives. \n\njerry: what, she gave me hives? \n\nkramer: jerry, as the bible says; thou who cureth, can maketh ill. \n\njerry: she did kind of touch my face. \n\nkramer: now you listen to me, you've got to find this woman and tell her that you're not a test tube pin cushion. \n\njerry: it does itch. maybe i will go down at kruger and talk to her. \n\nkramer: alright, great, because i got to get down there and pick up my blade. hey, and i couldn't find that stock room. \n\nelaine: oh, that's fantastic. \n\ngeorge: i just talked to mr. kruger, he'll be down in a minute. he wanted me to take a photograph for the record. \n\nsara: what record? \n\ngeorge: his personal file, i, i don't ask... \n\nsara: jerry? what brings you here? \n\njerry: i don't know, this? (shows his neck to sara.) \n\nsara: looks like hives. \n\njerry: where do you suppose that could've come from? \n\ngeorge: jerry, what are you doing... \n\nkramer: he is just setting the record straight. \n\njerry: come on sitarides, cop to it. what brand of perverted science do you practice? \n\nsara: are you suggesting i somehow i infected you on purpose? \n\njerry: i want the antidote, pimple popper! \n\nsara: that's it, i'm out of here! you're insane. \n\njerry: am i? you touched my face. i didn't imagine that! \n\ngeorge: dr. sitarides don't go! oh, thanks jerry! \n\nkruger: hey george, hey doc. we doing the screening here? \n\ngeorge: aah, yeah, yeah. won't you head on in, we'll be in in a second. be right with you. \n\nkramer: doc, huh? \n\ngeorge: kramer, this is perfect. i need you to go in there, pretend you're a doctor and check this guy for moles. \n\nkramer: moles, yes. freckle's ugly cousin. \n\ngeorge: and get a picture of him, with his shirt off. \n\nkramer: you really are cooking up a little scheme here, aren't you? \n\ngeorge: alright, lets get in there. quick, quick, quick... \n\nelaine: this is it. i can take this anymore. \n\n(she turns the radio on loud (foghat: slow ride) and \"dances\" few little kicks.) \n\nkramer: male mammal. approximately 30 to 60 years of age. weight...uh indeterminate. ok, mr. kruger, we are gonna take a photo now for the records. so if you'll stand up please and give me a big smile, oh no no no, not that big. yeah, that's nice, yes okay. yes, let's have a looksee...ok, so eh, fiber from shirt on the left shoulder. i'm gonna have to keep my on that. \n\nkruger: how long have you been doing this dr. van nostrand? \n\nkramer: uuh, long long time. yes, i've seen moles so big they have their own moles. freckles that cover two men. \n\nkruger: so, how am i looking? \n\nkramer: oh, so far, so good...(looks at mr. kruger's shoulder) yeuye... \n\ngeorge: kramer, i really owe you one. \n\nkramer: george, we got a problem. \n\ngeorge: what? \n\nkramer: well, he's got a mole on his shoulder. very suspicious. \n\ngeorge: so, tell him you're concerned about it and he should see someone else. \n\nkramer: george, why would i, a juilliard trained dermatologist, send him to another doctor? \n\ngeorge: because, you're not a dermatologist. \n\nkramer: he thinks i am. i'm not gonna betray that trust. here's what i wanna do; i think i can get a section... \n\ngeorge: whoa, whoa, a section?! \n\nkramer: yeah, if i could crab my slicer and he'd hold still... \n\ngeorge: no, you're not taking a deli slicer to my boss... \n\nkramer: it'll be operative thing, he would barely feel it. \n\ngeorge: no! absolutely not! \n\nkramer: well, it's my medical opinion, that you're making a big mistake. and it's going in my chart. \n\n[elaine is on the phone and the radio plays music very loud (iron butterfly: in-a-gadda-da-vida)] \n\nelaine: yeah, hello is this allied lock smith?! oh, finally, listen i need someone to come over here right away! \n\nneighbor: turn it off! turn it off! \n\nelaine: i am getting a lock smith, alright?! relax! \n\nneighbor: alright, that's it! \n\nelaine: yeah, the address is 78th west... \n\nneighbor: oh, oh mama... \n\njerry: so, kramer pulled it off? \n\ngeorge: yep, and the photo was all fixed and back on his desk, no thanks to you. \n\njerry: well, that woman had it coming to her. look at my neck, it looks like i had a beard of bees! \n\ngeorge: why don't you see someone about it? \n\njerry: i've called everyone. you know how hard it is to get a dermatologist in this town? (kramer comes in) a real dermatologist. \n\nkramer: (points to a page on the book) squamous cell carcinoma. \n\ngeorge: you're not a doctor. you shouldn't even have books like this. \n\nkramer: george, that's what he has and i have to give him a call. now we gotta came clean. \n\ngeorge: you can't tell him the truth, you're gonna blow the whole thing. \n\nkramer: i don't want this on my conscience. \n\ngeorge: i'll get him to see a real doctor. you just stay away from this. \n\nkramer: yeah, alright... \n\njerry: hey, i wonder if they have a picture of my rash in here. \n\nkramer: they've got everything there, jerry. i underlined the best parts. \n\njerry: hey, this looks like the thing i have. caused by exposure to benzene, a common ingredient in metal cleaners. \n\nkramer: well, that's weird. \n\njerry: what are you doing? \n\nkramer: well, i'm cleaning my slicer. \n\njerry: that's my hand towel! i use that on my face, hands and chest! that's where the hives are coming from! it's not from dr. sitarides, it's from dr. van nostrand! \n\nkramer: so, somehow the bronzo (?) is reacting to the poison she's giving you. \n\njerry: alright, get out. and take your bronzo with you (throws the bottle to kramer.) \n\nkramer: ohh, that's toxic. (jerry throws the towel over kramer's head.) ououou.... \n\nkruger: george, come in. i'm just going over our annual report...boy did we take it on the chin last year. \n\ngeorge: eh, listen mr. kruger, i got a message from dr. van nostrand and he says it might be wise to you to see another doctor about that mole. \n\nkruger: i'm not too worried about it. \n\ngeorge: well, he said it could be cancer, maybe you should get it checked out. \n\nkruger: george, take a look at this photo. this is taken 10 years ago. that mole looks exactly as it does today. so, there's no cause for concern, eh? \n\ngeorge: whatever. \n\nkruger: actually, funny thing about this photo. we were at the beach and there was this dumb looking guy near by. when he went in for a swim, my sons and i took all his stuff and threw it in the ocean! what a pear shaped loser. \n\ngeorge: well, that pear shaped loser was me! and i was in that photo, until i broke in here, stole the photograph and airbrushed myself out of there! \n\nkruger: well, i'll be...you have lost a lot of hair. \n\ngeorge: that's what they tell me! \n\nkramer: do you want more pastrami? \n\nelaine: um, what was that last thing you gave me? that was pretty good. \n\nkramer: yeah, it was olive loaf. you want that? \n\njerry: i can't believe kruger didn't fire you after all you did. \n\ngeorge: he said he didn't care. oh, god i love that place. hey, have you seen other dermatologist? \n\njerry: yeah, i finally got to see dr. kazarian. he said it was really bad. \n\ngeorge: what did he give you for it. \n\njerry: aloe. so where's that lock smith? \n\ngeorge: have to give him time on this hour. \n\nelaine: can i have a zip? (sticks a straw out from keyhole.) \n\nkramer: oh yeah, coming up... \n\ngeorge: so, elaine, are you going to sleep with me or what?! \n\nelaine: (aggravated) george, i just got off a twenty-three hour plane ride. i'm too tired to even vomit at the thought. \n\ngeorge: (angered) fine. i'll ask you again when you're rested. \n\njerry: (sarcastic) oh, i'm sure she'll come around. \n\ngeorge: yeah, i hope so. for your sake! \n\njerry: (to george) i said i was sorry. \n\ngeorge: you can stuff you sorries in a sack, mister! \n\njerry: (nauseated at the saying) would you please stop saying that?! \n\nkramer: (confused) what is up with you two? \n\ngeorge: i don't want to talk about it. \n\nkramer: (to jerry) so how was the big trip? \n\njerry: i don't want to talk about it! \n\nkramer: (observing elaine's bandaged nose) well, what happened to your nose? \n\nelaine: i don't want to talk ab-ow!-t it! (she winces under the pain from her nose on the word 'about') \n\nkramer: well, you gotta give me something! come on, how was the wedding? was the bride radiant? \n\nelaine: she.. was. \n\njerry: 'till she found out elaine slept with the groom. \n\nkramer: (interested) ooohh... that sounds juicy. listen, i gotta go to the bathroom, but i want to hear all about it. (gets up and heads for the bathroom) \n\ngeorge: (while skimming a monk's menu) you know, i didn't go to the bathroom the entire time we were in india. \n\njerry: i can't believe we went all the way to india for a wedding! \n\n[setting: india] \n\nnotice: \"india - one day earlier\" \n\nsue ellen: that's it! the wedding's off. \n\npinter: what? but, sue ellen- \n\nsue ellen: (cutting him off. to elaine) elaine, you were my maid of honor and you slept with my pinter?! \n\nelaine: no, no, no! it was years ago - before you met him. and, and i - i got to tell you.. it was very mechanical. \n\nsue ellen: i have never been so humiliated! \n\nelaine: (to jerry and george) idiots! this is all your fault! \n\ngeorge: (while pointing at jerry) not me! him! his fault! he betrayed me! \n\njerry: (pleading) george, i'm sorry. \n\ngeorge: oh you can stuff your sorries in a sack, mister! \n\njerry: (confused) i don't know what that means. \n\ngeorge: (to his girlfriend) nina, you have to decide right now. jerry or me? \n\nnina: (casually) alright.. neither. \n\ngeorge: what?! well, what are you doing here? \n\nnina: a free trip to india. and by the way, you can take off those boots. everyone knows you're five' six. \n\ngeorge: five' eight! five' seven! \n\nelaine: (to sue ellen) see? see the way they are?! we're - we're still best friends, right? \n\nsue ellen: no. (grabbing at the stud in elaine's nose) and take that stupid thing out of your nose! \n\njerry: that's got to hurt, i don't care where you're from! \n\ngeorge: (whispering to jerry) what time is our flight back? i got to go to the bathroom. \n\n[setting: a building in india - the wedding ceremony is about to start] \n\nnotice: \"fifteen minutes earlier\" \n\nelaine: (whispering to jerry) hey. \n\njerry: hey. \n\nelaine: what happened last night? \n\njerry: oh, you were pretty loaded. \n\nelaine: (gesturing to her nose stud) i know. i woke up with this. \n\njerry: oh. hello, tetanus. \n\nnina: george, i've used the bathroom. it's fine. \n\ngeorge: (struggling) no, no, no, no. i can walk it off. it's a hundred and twenty degrees in here.. i'll sweat it out. \n\nelaine: (seeing george, she walks over to greet him) hey. (looking at his shoes) are those timberlands ... painted black? \n\ngeorge: (looking at her nose) is your nose pierced? \n\nelaine: (embarrassed) i should.. (walks toward the bride and groom) \n\ngeorge: yeah. (points to two open seats in front of jerry's. to nina) sit down there. (sees jerry in the crowd) hello, jerry. (obviously angered at jerry) i believe you know nina. \n\njerry: (as george sits down) george, we need to talk. \n\ngeorge: (trying to keep his voice down) i think you've done a lot more than talk! you betrayed me! \n\njerry: alright, i admit it. i slept with nina, but that's all. \n\ngeorge: (outraged) \"that's all\"?! that's everything! i don't know what all the rest of it is for anyway! \n\njerry: (pleading) i'm really sorry. \n\ngeorge: you can stuff your sorries in a sack, mister! \n\njerry: (confused) where'd you get that one? \n\ngeorge: it's an expression. \n\nelaine: (from the front of the room, she can hear george and jerry's heated discussion) hey! shhhhh! (crosses herself, then shakes her head - apologizing) \n\ngeorge: (trying to whisper to jerry) look, we are gonna settle this right now! i demand reparations! i should get to sleep with elaine. that's the only way to punish you! \n\njerry: that doesn't punish me. it punishes elaine! and cruelly, i might add. \n\ngeorge: (losing it) funny guy! \n\nelaine: hey! monkeys! knock it off. my best friend is trying to get married up here! \n\ngeorge: elaine, you have to sleep with me. \n\nelaine: (definite) i'm not gonna sleep with you. \n\ngeorge: reparations! \n\nelaine: would you grow up, george?! what is the difference? nina slept with him (points to jerry), he slept with me, i slept with pinter. nobody cares! it's all ancient history. \n\ngeorge: (loud, so everyone at the wedding can hear) you slept with the groom?! \n\n[setting: new york street] \n\nnotice: nan \n\nkramer: oh, thank you, fdr! all right, now were even. \n\nfdr: i-i-i stuck a rock in there too. \n\nfdr: all right. \n\n[setting: the coffee shop] \n\nnotice: \"one hour earlier\" \n\nkramer: alright, fdr. this wish is for all the marbles. you win, you get your wish - i drop dead. i win, i don't drop dead, and i get one-hundred percent anti-drop-dead protection -- forever. \n\nfdr: alright. \n\nkramer: oh, man! all right, come on. there's got to be something that'll change your mind, fdr. something..\" (fdr lifts up a cooler, and puts it on the table) what, you want my kidney? (fdr is smiling wickedly as he pulls a snowball out of the cooler) mama!.. \n\n[setting: jerry's room in india] \n\nnotice: \"the night before, back in india\" \n\nelaine: george knows that you slept with nina. that's why he was acting so weird. \n\njerry: how did he find out? \n\nelaine: he schnapped me. \n\njerry: you know you're not supposed to drink while you're keeping a secret! (elaine laughs) is there anything else? \n\nelaine: i can't tell you. \n\njerry: (handing her a small bottle) here, drink this. \n\nelaine: okay. (takes a drink and wave jerry to lean in) i slept with the groom. \n\njerry: pinter? \n\nelaine: he used to be called peter. \n\njerry: (making nothing of it) so? who cares about that? \n\nelaine: sue ellen! if she knew, she'd call off the whole wedding. \n\njerry: oh, nobody's calling off any weddings. alright, it's time to go. come on.. up. \n\nelaine: do you know what 'jerry' is in indian? \n\njerry: (carrying her out, piggy-back style) no, what? \n\nelaine: (between laughs) jugdish. \n\njerry: yes, jugdish. \n\nelaine: hey, what if i got my, nose pierced? that would be pretty freaky.. oooohhhhaaa! (sliding off jerry onto the hallway floor) \n\njerry: (trying to get rid of her) yes, i think it's a fine idea. well, good night. \n\nelaine: g'night, jugdish. (laughs) \n\n[setting: jerry's room, india] \n\nnotice: \"one hour earlier\" \n\njerry: bless you. \n\nelaine: thank you...aah, hm mm. \n\n[setting: jerry's room, india] \n\nnotice: \"three seconds earlier\" \n\n[setting: new york park] \n\nnotice: \"two hours earlier, new york\" \n\nkramer: ah, hello fdr. yeah, ill have a hot one, (pulls out some cash and slaps down a bill on the stand) everything on it. \n\nfdr: these thingsll kill ya... but so what...(squirts mustard on the hot dog)youre already gonna drop dead (grins) \n\nkramer: well, guess what, fdr? i made a wish on a shooting star last night, and i wished, against your wish. \n\nfdr: that's funny. as it happens, i saw the same shooting star and double-wished you, to drop dead. (clicks out some coins from his changer and hands them to kramer) here's your change. \n\nkramer: alright, i'm triple-wishing! yep! \n\nfdr: (throwing four coins into the fountain) then i'm quadruple-wishing! \n\nkramer: alright.. how do you like this? (pulls out one of his eyebrows) ya! \n\nfdr: i like it a lot. (pulls out one of his eyebrows) ow! (blows it away) \n\nkramer: (tears out another eyelash) ah! (blows it away) \n\nfdr: (doing the same) oh! (blows it away) \n\n[setting: indian airport] \n\nnotice: \"three hours earlier - india\" \n\nelaine: oh, god, it's so hot! (sniffing) what is that smell? \n\njerry: (joking around) i think it's the stench of death. \n\nnina: george, you've been wearing those boots since i met you. you're not gonna wear them to the wedding, are you? \n\ngeorge: no (snorts - laughing nervously)... i'm gonna wear black shoes. \n\nelaine: (sees her enemy, sue ellen, at the airport) oh boy. there's sue ellen. she didn't want me at this wedding, but here i am with a bunch of my idiot friends! \n\njerry: (giddy) this is gonna be great! \n\nsue ellen: (walking up to the group) elaine? oh! oh, i am so happy to see you! \n\nelaine: (confused by her reaction) you are? \n\nsue ellen: well, of course! no one else was even willing to come to india. i mean, not even pinter's parents - and they're indian. \n\nelaine: come on, sue ellen. you don't wear a bra, you're tall... we hate each other! \n\nsue ellen: elaine, i know. i know we've had our problems, but.. i want you to be my maid of honor - and my best friend. \n\nelaine: (toying with the idea) huh.. alright. i guess. \n\nsue ellen: uh, this is my fianc, pinter. (to pinter) say hello. \n\npinter: (walking up to them) hello. \n\nelaine: (recognizing him) peter? \n\nsue ellen: uh, no. it's pinter. does anyone want to use the bathroom? \n\ngeorge: (leading nina out the airport) oh, no. no. we're good. let's get goin'. alright. (almost bumps into jerry) watch it, funny man. (leaves) \n\njerry: elaine, have you noticed george was acting strange the whole flight? \n\nelaine: (acting equally strange) no. what? like what? what? strange.. no. i.. \n\njerry: (pulls a small bottle out of his pocket) uh-huh. hey, look what they had on the plane. schnapps. \n\nelaine: ooohh. \n\n[setting: jerry/kramer's apartment building] \n\nnotice: \"the night before, new york\" \n\nkramer: come on.. come on. yes! (sees a falling star) there's one! (yelling out) i wish i don't drop dead!! \n\nman: (off-screen) hey, shut up up there! \n\nkramer: you shut up! \n\nman: aw, drop dead! \n\n[setting: airplane] \n\nnotice: \"five hours earlier - somewhere between new york & india\" \n\ngeorge: hello, friend. enjoying the flight? \n\njerry: coach to india - the only way to go. \n\ngeorge: (heavily sarcastic. he's angered at jerry) good one. very funny. you're very funny, jerry. that's what i always tell people. (yelling out) jerry seinfeld's a funny guy! \n\njerry: you all right? \n\ngeorge: of course i'm all right. i'm here with my girl, nina. and what better way to pass the time than gabbing with my best friend -- with whom there are no secrets. (flashes two intertwined fingers) like this. since the fourth grade. \n\njerry: (joking around) hey, didn't i beat you up in the fourth grade? \n\ngeorge: (yelling out to the whole coach) funny guy! (points to jerry) right here! \n\nnina: by the way, you never said anything to george about jerry and me, did ya? \n\nelaine: oh please.. it's in the vault. \n\ngeorge: ho, ha, ho! jerry seinfeld's a funny guy! \n\n[setting: the airplane] \n\nnotice: \"one hour earlier\" \n\nelaine: hey, what time is it? (she looks up and asks as jerry walks in the aisle) \n\njerry: you just asked me two minutes ago. \n\n[setting: the airplane] \n\nnotice: \"two minutes ago\" \n\nelaine: hey, what time is it? \n\njerry: ah, im not wearing a watch. \n\nelaine: oh (quietly). is this tooth chipped? (pointing to a tooth) \n\njerry: yeah. howd ya do that? \n\nelaine: i have no idea. \n\n[setting: the coffee shop] \n\nnotice: \"one day earlier\" \n\nelaine: watch this. (puts the bottle of schnapps in her mouth, flips her head up, drinking it, then puts it back down with her teeth. she is effected by that last drink) oh.. god.. \n\ngeorge: so, jerry and nina, huh? \n\nelaine: oh, mm mm.. (scoots up close to george) i'm not gonna tell you, any - more - things. (points at george) \n\ngeorge: you already told me everything. \n\nelaine: okey-dokey. \n\n[setting: newman's apartment] \n\nnotice: \"thirty minutes earlier\" \n\nkramer: i mean, we had a deal, newman. and you were supposed to give my your birthday wish. and now you've wasted it! \n\nnewman: (with a gorgeous woman sitting on his lap) did i? \n\nwoman: newman, i'm bored. \n\nnewman: aww.. \n\nkramer: does your girlfriend have to be here? \n\nnewman: (suggesting jerry) does yours? \n\njerry: (giving newman a sour look) i'm just hanging out in this hell-hole because of george. \n\nkramer: alright, come on, newman. now you gotta help me! what am i gonna do about fdr? \n\nwoman: why don't you just make another wish? \n\nkramer: and how am i gonna do that, toots? \n\nwoman: what about a shooting star? \n\nkramer: (interested) that's perfect. \n\nnewman: (kissing the woman) beauty .. and brains. (they nuzzle noses) \n\njerry: (disgusted. to the woman) oh, come on. you know he's a postman, don't ya? \n\n[setting: jerry's apartment] \n\nnotice: \"fifteen minutes earlier\" \n\nelaine: heres your plane ticket. \n\njerry: what are you talking about. \n\nelaine: sue ellen sends me an invitation, one week before her wedding in india. tst, ill show her... \n\njerry: by flying half way around the world? \n\nelaine: spite never sleeps (doing a little dance as she says it \n\njerry: especially when you got a layover in sarajevo. (bosnia herzegovina) \n\ngeorge: hey. \n\nelaine: (handing george a ticket) here. you're going to india with us tomorrow. \n\ngeorge: for how long? \n\nelaine: three days. \n\ngeorge: great. jerry, i gotta tell you, i had the best time with that nina last night. i - i think i'm in love with her already. you are a great friend. (hugs jerry) a great, great friend. \n\njerry: (trying to change the subject away from nina) hey - hey kramer, what are you doing? you want to borrow something? you want to eat something? come on in! \n\nkramer: (shrugging jerry off) nah. \n\nelaine: you want to go to india? \n\nkramer: i can't. (complaining) i'm gonna drop dead. \n\ngeorge: great! (snaps fingers and grabs the extra plane ticket) nina could go, huh? jerry, this is great. you and elaine. me and nina. \n\njerry: h-hey, kramer, wait up. i'll go with you. \n\nkramer: i'm goin' to newman's! \n\njerry: great, i love newman! (eagerly following kramer) \n\ngeorge: (asking elaine) jerry seem a little weird when i mentioned nina? \n\nelaine: nina? nina? no. psshhh.. not weird. no. nina. \n\ngeorge: why do you keep saying nina? \n\nelaine: i don't know. nina. nina! (feeling she's said to much, she goes to leave) i'm gonna go grab a bite. \n\ngeorge: uhh.. i'll- i'll meet you down there. \n\n[setting: nyc street] \n\nnotice: \"thirty minutes earlier\" \n\nkramer: (knocking on a port-a-potty door) come on, lomez! we're gonna be late for the movie. \n\nnewman: (to his new girlfriend) you see, my dear, all certified mail is registered, but registered mail is not necessarily certified. \n\nwoman: i could listen to you talk about mail all day. \n\nkramer: anything you wish. i'll tell you a little secret about zip codes they're meaningless! (laughs evilly, driving away) \n\nkramer: wish?! newman! \n\nkramer: lomez, im leavin \n\n[setting: newman's apartment] \n\nnotice: \"one day earlier\" \n\nall: (singing to newman) ..and you smell like one, too. (laughing and clapping) \n\npostman: make a wish, newman! we've gotta get back to work in three hours! \n\nkramer: newman, wait! \n\nnewman: (stands up and sputtering loudly) kramer! i'm with people. \n\nkramer: yeah, yeah. and thanks for inviting me! \n\nnewman: i did invite you. your invitation must've gotten ... lost in the mail. \n\nkramer: well, newman, i need your wish to protect me from fdr. \n\nnewman: can't do it. i'm on an unbelievable birthday-wish hot streak! my last five birthday wishes came true. \n\nkramer: come on! look, i'll give you my next birthday wish, huh? \n\nnewman: (negotiating) your next, fifty wishes. \n\nkramer: forty-eight. \n\nnewman: fourty-nine. \n\nkramer: done! \n\nnewman and kramer: (together) sucker.. \n\nnewman: alright, alright, back, savages. back! i haven't made my wish yet.. \n\n[setting: jerry's apartment] \n\nnotice: \"one day earlier\" \n\nelaine: well, ahh, this mischke mish-mash is just gettin' worse. \n\njerry: uh-huh. \n\nelaine: i talked with the groom's parents.. \n\njerry: mm-hmm. mm-hmm.. \n\nelaine: ... and it's so obvious that they don't want.. \n\njerry: uh-huh.. \n\nelaine: ... me to go. \n\njerry: sure. \n\nelaine: so, the only reason ... \n\njerry: uh-huh. \n\nelaine: ... she sent me an invitation was that so i'd send her a gift. \n\njerry: uh-huh. \n\nnina: (from jerry's room) jerry? \n\njerry: (to elaine) uh, well, you know, a coffee grinder is nice. or a coffee maker. everyone likes coffee. anything to do with coffee. maybe you should go get some coffee. \n\nnina: oh. hi. \n\nelaine: hi. \n\nnina: (getting ready to leave) oh, i should... um... \n\njerry: sure. \n\nnina: yeah. \n\nelaine: bye-bye. \n\nnina: bye. (leaves) \n\nelaine: (gesturing back to the bedroom) who else ya got back there? \n\njerry: look, there was an awkward moment in the conversation. it never happened before. \n\nelaine: you slept with nina? what are you gonna tell george? \n\njerry: nothing. and neither will you. george can never know about this.. it'll crush him. \n\nelaine: uh. alright, alright. i'll put it in the vault. \n\njerry: no good. too many people know the combination. \n\nelaine: (confused) what combination? \n\nelaine: don't be ridiculous. \n\njerry: oh my god. this drawer is filled with fruit loops! \n\nelaine: so what? \n\njerry: and milk. \n\nnotice: \"thirty minutes earlier\" \n\nkramer: oh, geez.. \n\njerry: (from outside the apartment) hello? \n\n[setting: pinter's parent's house - elaine visiting] \n\nnotice: \"one hour earlier\" \n\nelaine: hi. mr. and mrs. ranawat? \n\nzubin: please, call us usha and zubin. \n\nelaine: oh. well, usha. \n\nzubin: i'm zubin. \n\nelaine: (shrugging it off) anyway, your son is marrying my friend, sue ellen mischke. \n\nusha: you're not going to the wedding, are you? \n\nelaine: well ... \n\nusha: don't go. india is a dreadful, dreadful place. \n\nzubin: you know, it's the only country that still has the plague? (laughing as he says the line) i mean, the plague! please! \n\nusha: here's the registry. send her a gift, and be glad you did not have to go. \n\nelaine: (soaking it in) right. don't go. send a gift. i think i understand. \n\nzubin: if i had to go to india, i wouldn't go to the bathroom the entire trip. \n\nelaine: (leaving) that's fantastic. \n\nzubin: and i'm not so crazy about manhattan, either. \n\n[setting: jerry's apartment] \n\nnotice: \"thirty minutes earlier\" \n\nnina: oh, you were going to tell me all about george. \n\njerry: ah, just remember when you see him tomorrow night to tell him that the waiter liked him. \n\nnina: really? \n\njerry: believe me. you know, i forgot how much fun it is hanging out with you. \n\nnina: i know. you know, we never had a bad conversation. \n\njerry: i know. no awkward pauses. probably the reason we never fooled around.. \n\nnina: heh.. yeah. \n\njerry: probably the reason.. \n\n[setting: fdr's apartment building] \n\nnotice: \"one day earlier\" \n\nfdr: are - are you dense? i said i wanted you to drop dead. now.. drop dead! (slams the door in kramer's face *note fdrs apt. #548*) \n\nkramer: (walking away) i knew it.. stupid jerry.. \n\nnotice: \"ten minutes earlier\" \n\njerry: kramer, i know what i'm talking about. there's no way fdr wants you to drop dead. \n\nkramer: but you haven't seen.. \n\njerry: just go back and ask him again. (slams the door on kramer) \n\nkramer: yeah.. (heads for fdr's) \n\nnotice: \"ten minutes earlier\" \n\nfdr: that's right. my birthday wish was that you drop dead. \n\nkramer: well, why? \n\nfdr: (sinister) i have my reasons. \n\nkramer: woah, wait, wait, wait. if you make a birthday wish out loud, it doesn't come true. \n\nfdr: that's just a silly superstition. (slams his door on kramer) \n\nnotice: \"ten minutes earlier\" \n\nkramer: hey, fdr wants me to drop dead. \n\ngeorge: fdr? \n\nkramer: (to george) yeah, franklin delano romanowski. (resumes telling the story) i go to his birthday part, and just before he blew out his candles, he gives me this look.. \n\ngeorge: (guessing the look) stink eye? \n\njerry: (also guessing) crook eye? \n\nkramer: evil, eye. \n\njerry: well, everybody's a little cranky on their birthday. \n\ngeorge: oh, it's a bad day. uh, you got everyone in your house, you're thinkin', \"these are my friends?!\" \n\njerry: everyday is my birthday. (sarcastically joking off what george said) \n\nkramer: yeah, well, i can't have this hanging over my head. it's bad mojo. \n\nelaine: hi. \n\nelaine: you're not gonna believe what i got in the mail. invitation to sue ellen mischke's wedding. \n\njerry: (joking about the bra-less wonder) well, at least the wedding gown will give her some support. \n\nelaine: not the point. the wedding is in one week. i got this (holds up invitation) today. \n\njerry: so you think it's a non-vite? \n\nelaine: it's an un-vitation! (notices george is a few inches higher) hey, are you gettin' taller? \n\ngeorge: timberlands. (showing elaine his boots) \n\nelaine: ah. (looking at the invitation) hey, look at this. 'pinter ranawat'.. i wonder if he's related to that guy i dated, peter ranawat.. \n\njerry: ah, it's probably like smith over there. \n\ngeorge: jerry, would you make the call already? \n\nelaine: what call? \n\njerry: he wants me to set him up with this girl, nina stengal. \n\nelaine: (remembers jerry's talking about her) oh, the great conversation girl. (somewhat bitter toward jerry) the one you think can replace me? \n\njerry: i was kidding when i said that! \n\ngeorge: (to elaine) told me the same thing. \n\njerry: (on the phone) nina, hi. it's jerry. \n\ngeorge: you-you sure you never slept with her? (jerry shakes his head 'no') perfect. \n\njerry: (to nina) hey, how 'bout my friend, george? quite a guy, huh? \n\ngeorge: (rubbing his stomach) ooh.. something's not sitting right.. \n\n[setting: the coffee shop] \n\nnotice: \"one hour earlier\" \n\ngeorge: i'll have the clams casino. \n\njerry: get outta here. \n\ngeorge: (showing jerry the menu) \"chef recommends\" \n\njerry: hmm.. \n\ngeorge: (motioning toward waitress) i think she likes me. \n\njerry: sure. \n\ngeorge: so, how come nothing ever happened between you and nina? (getting paranoid) is there a problem with her? is she a man? \n\njerry: are you? \n\ngeorge: well, what's the reason? \n\njerry: we were too compatible our conversations were so engrossing. \n\ngeorge: how engrossing? \n\njerry: if we ever had a problem with elaine, we could bring in nina and not lose a step. \n\ngeorge: wow! heh. (half kidding) you don't, huh, have a replacement lined up for me, do ya? heh he he he he he... \n\njerry: anyway, like i was saying, i couldn't make the transition from conversation to sex. there were no awkward pauses... i need an awkward pause. \n\ngeorge: i'm all for awkward pauses. fix me up with her.. wait a minute, nina just saw me in my timberlands! now i have to wear them every time i see her. \n\njerry: why? \n\ngeorge: in any other shoe, i lose two inches. i - i can't have a drop down. we were eye to eye, i can't go eye to chin! \n\njerry: so, you're gonna wear 'em no matter what the situation? \n\ngeorge: in every situation. no matter how silly i look. (tastes his clams casino) hm.. tastes a little funky. \n\njerry: oh, i'm sure it's fine. \n\n[setting: fdr's apartment] \n\nnotice: \"thirty minutes earlier\" \n\nall: ..to you! \n\nman: come on, make a wish! make a wish! \n\nkramer: yeah! \n\nall: heyyy, yeahhhh (clapping). \n\n[setting: nyc street] \n\nnotice: \"ten minutes earlier\" \n\ngeorge: ah, this is the kind of day that almost makes you feel good to be alive. \n\njerry: almost. (notices his shoes) hey, new timberlands? \n\ngeorge: yeah, and a whole new me. i'm up two inches in these babies! \n\njerry: really? \n\ngeorge: five' eight. five' seven. \n\nnina: jerry? \n\njerry: nina? \n\nnina: hi. \n\njerry: it's been years! \n\nnina: yeah! \n\njerry: (introducing the two) george, this is nina. \n\ngeorge: nice to meet you. \n\nnina: nice to meet you, too. \n\n[setting: elaine's apartment building] \n\nnotice: \"three hours earlier\" \n\nelaine: (reading an invitation) india? tst, yeah, right. (sarcastic) i'm goin' to india.. \n\n[setting: the coffee shop] \n\nnotice: \"two years earlier\" \n\nnina: and they call it the world wide web. you can e-mail anyone! \n\njerry: (mesmerized) what are you, a scientist?! \n\nnina: ah, i gotta go. (gets up to leave) \n\njerry: ah. \n\nnina: it's great talkin' \n\njerry: great talkin' to you. (nina leaves. to himself) what the hell is e-mail? \n\ngeorge: how as the date? \n\njerry: pretty good. i think she might be the one. \n\nsusan: no. \n\ngeorge: whooo.. (to a waitress taking orders) ooh.. french fries. \n\nsusan: ah, george. \n\ngeorge: (clearing his throat, he changes his order for susan) baked, uh, potato. \n\nsusan: uh-huh. \n\ngeorge: sorry. \n\nsusan: yeah, you stuff your sorries in a sack, mister. \n\nkramer: hey, hey. yeah, check it out. it's packin' tight! (puts the snowball on the table, then drips water from jerry's cup onto it) \n\njerry: what are you bringing snowballs in here for? \n\nkramer: oh, i need some water. ice it up nice and hard ... and when you throw it - pop! oh look, (fdr is at the cash register, pays and leaves monks) there's my friend, fdr. i'm gonna nail him in the back of the head. it's gonna be great! (rushes out of monks to peg his friend with the snowball) \n\njerry: hi, elaine. \n\ngeorge: hey! \n\nelaine: (turning around and leaving with pinter) hey, let's go someplace else, okay, peter? \n\n[setting: jerry's new apartment] \n\nnotice: \"eleven years earlier\" \n\nkramer: oh, hey, how you doing? \n\njerry: oh, hi. i-i'm jerry seinfeld. i'm movin' in. i saw your name on the buzzer - you must be kessler. \n\nkramer: uh, no. actually, it's kramer. \n\njerry: oh. \n\nkramer: uh, you need any help, or..? \n\njerry: no, thanks. but i ordered a pizza. you want some of it? \n\nkramer: ah, no, no, no. i-i couldn't impose. \n\njerry: why not? we're neighbors. what's mine is yours. (and with that, jerry made the most fatal mistake of his life) \n\nkramer: (quietly) ohh (eyeing jerry's empty apartment) really? \n\nthe definition of sari or saree is: nan \n\nsari / saree: a long piece of cotton or silk cloth, constituting the principal garment of hindu women, worn round the waist, one end falling to the feet, and the other crossed over the bosom and shoulder, and sometimes over the head. \n\njerry: (tapping the spatula while waiting for waffles to be done) any second now. light is on! melissa, waffles are ready. \n\nmelissa: (appearing in the kitchen stark naked) oh, fantastic! i'm starving. \n\njerry: (looking at her) how about that. \n\nmelissa: (eating the waffles) mmm-hmm. \n\ngeorge: she ate breakfast naked? \n\njerry: she didn't even want a napkin. \n\ngeorge: i've had bedroom naked, i've had walk-to-the-bathroom naked... i have never had living-room naked. \n\njerry: oh, it's a scene. \n\ngeorge: it's like you're livin' in the playboy mansion! did she, uh, did she frolic? \n\njerry: i don't really have enough room. \n\ngeorge: (seeing elaine and puddy come into monk's) yeah. hey, lainie, puddy. \n\nelaine: hey! \n\npuddy: hi. \n\njerry: hey. \n\npuddy: (heading towards the bathroom) i got to make a pit stop. \n\nelaine: (sitting down in the booth) 'kay. \n\njerry: back together? \n\nelaine: his apartment was being fumigated, so we thought we'd give it another shot. \n\njerry: ah... \n\nelaine: so guess who called me last night? jason hanke. \n\ngeorge: 'stanky hanke'? what did he want? \n\nelaine: he called to apologize for standing me up five years ago. \n\njerry: why now? \n\nelaine: a.a. it's one of the twelve steps. step number nine is you have to apologize to anyone you've ever wronged. \n\ngeorge: ho ho ho ho! i can't wait for hanke to come crawling back to me. \n\njerry: still with the neck hole? \n\ngeorge: still upset. very upset. \n\nelaine: what neck hole? \n\ngeorge: remember that new year's party he threw a few years ago? he had that very drafty apartment, you know, i think on ninth avenue. \n\nelaine, becoming board: faster. \n\ngeorge: i asked if i could borrow a sweater. \n\njerry: a cashmere sweater. \n\ngeorge: i said preferably cashmere, for warmth. so in front of the whole party, he says, 'no. i don't want you stretching out the neck hole.' \n\nelaine: ha ha ha ha ha ha ha! \n\ngeorge: oh, yeah, sure, laugh it up. everybody else did! \n\nelaine: well, it's funny. i mean, you have a big head. or is it 'cause of your neck? \n\njerry: no, i think the head does most of the stretching. \n\ngeorge: regardless. i had to walk around for the rest of the party in some cheap metlife windbreaker. now, it is payback time. \n\nelaine: i really think it's the size of your neck. \n\ngeorge: it's my head! \n\nelaine: ha ha ha ha ha ha ha! \n\nelaine: hey. \n\npeggy: hey. \n\nelaine: isn't this great? with those nerds in accounting moved, you and i are the only ones who use this bathroom. \n\npeggy: (somewhat sarcastically) yeah. great. \n\nkramer: you went to the coffee shop without me? i told ya, i just wanted to hop in the shower. \n\njerry: that was an hour ago. what were you doing in there? \n\nkramer: showering. how long does it take you? \n\njerry: ten minutes. \n\nkramer: (seeing elaine come into jerry's apartment) ten minutes? that's kooky talk. hey elaine, how long do you spend in the shower? \n\nelaine: ten minutes. \n\nkramer: let me smell you. \n\nelaine: all right. whiff away. \n\nkramer: (after delicately sniffing elaine) uh... that's not bad at all. \n\nelaine: (holding kramer off from getting another whiff) hup! that's it. \n\nkramer: (backing off) ok. \n\nelaine: so get this. i'm in the bathroom at work today, and i see peggy using a seat protector. \n\njerry: so? \n\nelaine: so... we're the only women on the floor. i mean, we're like roommates. would-would you use a seat protector if you had a roommate? \n\njerry: (seeing kramer struggle to open a soda, spilling it all over) i think the damage is probably already done. (interrupting kramer's inadequate attempt to clean up the soda) all right! i'll get that. well, maybe she just practices good hygiene. \n\nelaine: (eyeing jerry meticulously cleaning up the soda) yeah, you're probably right. she's probably one of those neurotic clean freaks. \n\njerry: mmm. \n\nkramer: well, here's my shower routine. maybe i can make some changes. get wash cloth mittens and maybe some liquid soap, and just... -pop- focus! \n\njerry: (playing scrabble with his naked girlfriend) zephyr? that is not a word. \n\nmelissa: do you challenge? \n\njerry: no, i do not challenge. \n\nmelissa: 66 points. ha ha. \n\njerry: i'd accuse you of cheating, but i don't know where you'd hide the tiles. \n\nmelissa: you want some more ice tea? \n\njerry: sure. \n\nmelissa: (coughing loudly, while jerry's expression turns to disgust) wrong pipe. \n\ngeorge: so she coughed. \n\njerry: coughing... naked... it's a turn-off, man. \n\ngeorge: everything goes with naked. \n\njerry: when you cough, there are thousands of unseen muscles that suddenly spring into action. it's like watching that fat guy catch a cannonball in his stomach in slow motion. \n\ngeorge: oh, you spoiled, spoiled man. do you now how much mental energy i expend just trying to picture women naked? \n\njerry: but the thing you don't realize is that there's good naked and bad naked. naked hair brushing, good; naked crouching, bad. hey, there's hanke. \n\ngeorge: all right. it's grovel time. \n\nhanke: hey, george. jerry. listen, i just got sober, so i've been going through the twelve steps. \n\ngeorge: what are you up to now, uh, step nine? \n\nhanke: yeah. making amends. \n\ngeorge: important step. maybe the most important. \n\nhanke: anyway, uh, jerry, you know, this may sound dumb, but, you know, when we first met i thought your name was gary. and, i think i may even have called you gary a couple of times, and... i don't know if you noticed, but i always felt bad about it, so, i'm sorry. \n\njerry: thank you. i did notice, and i appreciate you rectifying it. \n\nhanke: (eyeing george, who's looking expectedly up at him) great. great. well, i'll see you guys later. \n\nkramer: (enters) well, i just got out of a 27-minute shower. i made some good cuts, and i didn't lose anything i needed. yeah, i think what i kept is even stronger now. \n\njerry: (pointing to kramer's hair) you got some suds over here. \n\nkramer: (noticing suds all over his clothes and body) wha...? oh, man! geez! look at that! i'm all lathery. jerry, you got to show me what i'm doing wrong. \n\njerry: oh, come on! \n\nkramer: no, i mean it, man. i'm lost! \n\njerry: you promise you'll never come in here again? \n\nkramer: (chuckling) oh, jerry, you know i can't do that. \n\njerry: (standing in the bathtub) now my sense of it is that you're probably wasting time working piecemeal, first cleaning one area, then another. \n\nkramer: well, that's how cats do it. \n\njerry: but, when you have a faucet instead of a tongue, you want to use gravity. \n\nkramer: ok. let's turn the water on now. \n\njerry: no, i told you, it's just a dry run. \n\ngeorge: (entering jerry's bathroom) well, hanke's moved on to step ten. he was spotted taking personal inventory. \n\njerry: that's step ten? \n\ngeorge: all he has to do now is count his blessings, say a prayer, and he's done. do you believe this? \n\nkramer: come on, jerry. how about a-a baggy swimsuit? \n\njerry: you're not gettin' any skin, kramer. \n\nkramer: well, this has all been one big tease! \n\nelaine: (moving peggy's water to make room for paper on the desk) these proofs look pretty good. oh. can i move this? yup. i think this will work. \n\npeggy: (having seen elaine touch her nearly full water bottle) i'm... gonna get another bottle of water. \n\nwalter: (taking a final swig from his own water bottle) here, take mine. there's a little left. \n\npeggy: (gulping down walter's water) oh, thanks, walter. ahh! \n\nhanke: (talking with two men in monk's) guys, there's no doubt that the pay is good. but i don't just know if i see myself working with ice cream. \n\nman #1: you get pretty buff forearms. \n\nhanke: i don't know if i'm into that. \n\ngeorge: (entering monk's) oh, hello, hanke, others. \n\nhanke: george. \n\ngeorge: you know, jason, i, uh, i couldn't help notice, i... i didn't get my apology. \n\nhanke: apology? for what? \n\ngeorge: a drafty apartment? a... sweaterless friend? a ball-game giveaway metlife windbreaker? \n\nhanke: george, come on, not that neck hole thing. \n\ngeorge: yeah, the neck hole thing, and i would appreciate it if you would say you're sorry. \n\nhanke: no way, you would've completely stretched it out. \n\ngeorge: you're an alcoholic! you have to apologize. step nine! step nine. \n\nhanke: all right, george, all right. i'm sorry. i'm very, very sorry. i'm so sorry that i didn't want your rather bulbous head struggling to find its way through the normal-size neck hole of my finely knit sweater. \n\nkramer: (taking notes on showering men at the ymca) now see, that's smart. constant motion. wow. \n\nman in shower: (seeing kramer staring at the showering man) hey! \n\nkramer: oh, yeah, yeah, i-i'm watching you, too. but this guy's really showing me something! \n\nkramer: (walking into jerry's apartment with a fresh black eye) you got a steak? \n\njerry: what happened to you? \n\nkramer: ah, people in this city are crazy. \n\njerry: (giving him a steak from the fridge) here ya go. \n\nkramer: (applying the steak to his eye) thanks, buddy. oh... yes! hey, you got any a1, 'cause i'm cooking a steak. \n\njerry: what? \n\nkramer: yeah, a different one. \n\njerry: (closing the door on him) oh! \n\nkramer: jerry! \n\nmelissa: (wheeling out jerry's bicycle) ok, jerry. i fixed that bike. \n\njerry: oh. that wasn't really necessary. i don't ride it. it's just for show. \n\nmelissa: (crouching down next to the bike) i should really clean those bearings. hold this. look at all that gunk. \n\njerry: please don't crouch. \n\nmelissa: ouch! caught my skin. \n\njerry: oh, that's bad. especially that area. \n\nmelissa: you got anything to snack on? \n\njerry: uhh... \n\nmelissa: (grabbing the pickle jar and straining to open it) oh, pickles! unnhhhh! it's a tough one. \n\njerry: look, please stop! let me help you with that! \n\nmelissa: (finally opening the jar) unnnnh! oooh. that's gonna leave a welt. look at that. \n\njerry: (leaving the room) i can't. i can't look anymore. i-i-i've seen too much. \n\nelaine: peggy, we've got to talk. what is it about me that you find so offensive? \n\npeggy: you seem to be with a lot of men. \n\nelaine: what!? i happen to have a very steady boyfriend. you know, i mean, we broke up a few times and there has been an occasional guy here or... or there, but, wh-why is this your business? \n\npeggy: it's not. good day. \n\nelaine: (leaving the room after rubbing peggy's keyboard on her butt, sticking the stapler in her armpit, and coughing on her doorknob) oh. all right. you think i've got germs? i'll give you some germs. how about some for your keyboard, huh? huh? oooh, how about for your stapler. hmmm? that's good, isn't it? you have a happy and a healthy. \n\njerry: well, technically he did apologize. \n\ngeorge: jerry, i felt like a straight man in some horrible sketch. he was riffing! riffing! on my pain! \n\njerry: so now you want an apology for the apology, plus the original apology? \n\ngeorge: that's right. i'm two in the hole! \n\njerry: well, i hit the wall yesterday with lady godiva. she did a full body flex on a pickle jar. \n\ngeorge: did you explain to her about the good naked and the bad naked? \n\njerry: where am i gonna get a fat guy and a cannonball? \n\ngeorge: well... what if you showed up bad naked, huh? you still got that belt sander? \n\njerry: yeah. \n\ngeorge: (going into the bathroom) well, you on all fours, that thing vibratin', kickin' up sawdust, ho ho! she'll get the picture! \n\njerry: (answering the ringing phone) hello? \n\nkramer: hey, jerry, guess where i'm calling from! \n\njerry: world war i plane? \n\nkramer: no, i'm in my shower. well, you know, i'm trying to get out of the shower sooner, and then i ask myself, 'why?' i mean this is where i want to be. so i got a waterproof phone, i shaved, i brushed my teeth, and now i ordered a pair of chinos from j. crew. \n\njerry: when are ya gettin' out? \n\nkramer: i'm not! i'll see ya later, buddy. \n\npeterman: bad news, people. peggy is home sick. \n\nelaine: oh, please. \n\npeterman: she's stuffed up, achy, and suffering from intense malaise. \n\nelaine: oh, come on, we all have intense malaise. right? \n\npeterman: i just spoke with her, elaine. she's in bed. \n\nelaine: yeah, let me tell you something this is all in her mind, ok? she is insane. she thinks i made her sick because i coughed on her doorknob, rubbed her stapler in my armpit, and put her keyboard on my butt. yeah, she's a wacko. \n\ngeorge: so you're jason hanke's supervisor? \n\nsponsor: sponsor. \n\ngeorge: whatever. listen, i'm very concerned about this guy. \n\nsponsor: he's doing very well. he's already on to step ten. \n\ngeorge: yeah, well when you don't actually do the steps, you can go through them pretty quick. you can get through six a day. \n\nsponsor: is there some unresolved issue between you and jason? \n\ngeorge: i don't know. a little thing called step nine? instead of an apology, he was beboppin' and scattin' all over me. \n\nsponsor: i'm not sure what you want me to do. \n\ngeorge: well, aren't you the boss of him? you shouldn't let him move up! when i was in the cub scouts, i got stuck on weebolos for three years 'cause i kept losing the pinewood derby. \n\nsponsor: you're quite upset, george. \n\ngeorge: well, i think you should drop him down to step two. \n\nsponsor: admit there's a higher power? \n\ngeorge: yeah, let him chew on that for a while. \n\nsponer: you know george, i think i can help you. we're having a meeting tomorrow. why don't you just come by? \n\ngeorge: all right. that's more like it. thank you very much. (giving the sponsor the 'be strong' hand clench) by the way, my uncle was an alcoholic, so... \n\nkramer: (on the phone in the shower) lomez, you're not listenin'. jerry likes the naked, just some of the things she does when she's naked. calm down, i'm on your side. geez. hey, hold on a second. i got a clog, i'll call ya back. \n\nmelissa: (naked on the couch) what are you doing? \n\njerry: (naked, carrying a belt sander) i found a rough spot on the kitchen floor, i thought i'd polish it up with this belt sander i have here. \n\nmelissa: no, not that. why are you naked? \n\njerry: i thought naked is good. \n\nmelissa: (eyeing him) this isn't good naked. \n\nsponser: george, here, have a seat. \n\ngeorge: (sitting down) where's hanke? \n\nsponser: (motioning to the leader) shhhhh. \n\nleader: ok, let's get started. welcome to rage-aholics anonymous. \n\ngeorge: what? rate-aholics? \n\nsponser: george, this can help you. \n\ngeorge: hey, i am not here for rage. i'm here for revenge. \n\nleader: excuse me. we have a 'no yelling' policy at these meetings. \n\ngeorge: excuse me. am i talking to you, pinhead? am i?! \n\nleader: please don't call me 'pinhead'. \n\ngeorge: i'm losin' it! \n\njerry: he took you to rage-aholics? why? \n\ngeorge: probably because this whole universe is against me! \n\njerry: you've got a little rage. \n\ngeorge: i know. and now they want me to bottle it up. it makes me so mad! \n\njerry: by the way, my bad naked demo didn't quite work. \n\ngeorge: this bread has nuts in it! \n\njerry: (seeing elaine enter monk's) oh, great. elaine. what is wrong with my body? \n\nelaine: chicken wing shoulder blades. \n\njerry: that's it? \n\nelaine: no, but that's one problem. why? \n\njerry: well, i was walking around naked in front of melissa the other day-- \n\nelaine: whoa! walking around naked? ahh... that is not a good look for a man. \n\ngeorge: why not? it's a good look for a woman. \n\nelaine: well, the female body is a... work of art. the male body is utilitarian, it's for gettin' around, like a jeep. \n\njerry: so you don't think it's attractive? \n\nelaine: it's hideous. the hair, the... the lumpiness. it's simian. \n\ngeorge: well, some women like it. \n\nelaine: hmm. sickies. \n\nkramer: (in the shower, reading an instruction manual) installing your clarkman garbage disposal. dismantle latch hasp beneath main drainage lot. oh, come on, clarkman. \n\npuddy: (staring into space, picks up the phone) puddy. \n\nkramer: is, uh, david puddy there? \n\npuddy: this is puddy. \n\nkramer: well, this is kramer. \n\npuddy: i know. \n\nkramer: um, listen, you're a mechanic. could you help me install a garbage disposal? \n\npuddy: well, it's a big job. you've got to dismantle the latch hasp from the auxiliary drainage line. \n\nkramer: no. it says 'main line'. \n\npuddy: it's a misprint. what do you got, a clarkman? \n\nkramer: yeah. \n\npuddy: (seeing elaine come in) hey, man, i'll call you back. i'll talk you through it. \n\nkramer: oh, ok. well, thanks, buddy. \n\nelaine: hey, puddy. \n\npuddy: hey, babe, your boss called. you owe five bucks for a balloon bouquet. yeah, he says you can just give it to him tomorrow when you see him. \n\nelaine: balloon bouquet? for who? \n\npuddy: peggy took a turn for the worst. \n\nelaine: peggy. oh, great. i suppose she's still blaming me? \n\npuddy: that's what he said. \n\nelaine: i don't believe this woman. \n\npuddy: talk to me, babe. \n\nelaine: she's this crazy woman who is convinced that my germs make her sick. \n\npuddy: oh, germ-o-phobe. i know what that's about. \n\nelaine: huh? \n\npuddy: (showing her his necklace) i'm a recovering germ-o-phobe. ten years. \n\nelaine: what is this symbol? \n\npuddy: it's a germ. \n\npeggy: elaine, it was very nice of you to bring the man you're currently sleeping with over to talk to me, but i assure you, i don't have any problem with germs. \n\npuddy: don't you? elaine. \n\npeggy: (flinching away) please! \n\npuddy: i know it looks bleak. i've been there. ten years ago waking up in bed next to a woman like this would've sent me running for the phisohex. \n\npeggy: really? \n\npuddy: i still have trouble looking at those disgusting old bedroom slippers she slogs around in. \n\nelaine: hey, i've had those since college. they're bunnies. \n\npuddy: they're bacteria traps. \n\npeggy: so you... just learned to live with it? \n\npuddy: for the most part. \n\nelaine: ok, we're broken up for the rest of the day. \n\njerry: so i'm glad we had a talk and worked this out. don't you feel this is better? \n\nmelissa: this is nice. \n\njerry: yes, clothes. this is normal. \n\nmelissa: hey, what are you doing tomorrow? i was thinking that we could go down... \n\nmelissa: jerry? jerry, are you listening to me? \n\njerry: oh... yeah. what? i'm sorry. \n\nmelissa: i wanted to know what you're doing tomorrow. \n\njerry: oh, maybe a haircut, and, i don't know, maybe a... \n\nkramer: (in the shower, on the phone with jerry) so you broke up? \n\njerry: we couldn't carry on a conversation. i kept trying to picture her naked, she kept trying to not picture me naked. \n\nkramer: hang on. \n\njerry: so what are you up to? \n\nkramer: oh, just cooking up a little thank you for puddy. hey, how do you make those radish roses? \n\njerry: insert a knife into the center and twist. then, to make it bloom, soak it in water for thirty to forty minutes. \n\nkramer: no problem there. \n\nhanke: george. thanks for coming down to talk to me. i wanted to see you right away, but my hours here aren't very flexible. i just started yesterday. \n\ngeorge: well, i'm here. what is it? \n\nhanke: well, i talked to my sponsor, and, uh, i've thought it over, and, you know, my apology at the coffee shop was sarcastic, and rude, and you deserve much better. \n\ngeorge: (ready to leave) well, thank you. \n\nhanke: you're welcome. \n\nkid: (entering the store) can i get a triple minute man mint? \n\nhanke: waffle or sugar cone? \n\ngeorge: uh, excuse me, uh, um, jason. i don't want to get into a big thing here, but... i'm not sure if, technically, what you just said was actually an apology. \n\nhanke: what? \n\nkid: can you get on that cone? \n\nhanke: would you hang on just a second, son? george, what are you talking about? \n\ngeorge: well, it's just, all you said was 'your welcome', which is nice. it's very nice. but... i feel i gotta get the apology. \n\nkid: is there anybody else here but you? \n\nhanke: i'm alone, and it's my second day. you know, i don't even think we have that flavor so... george, really, enough, ok? you know, i-i admitted i was wrong, so what more do you want from me? \n\ngeorge: i would like an apology. \n\nhanke: all right, look, you know-- \n\nkid #2: (entering the store) did you try it? \n\nkid: no, this guy doesn't know what he's doing. \n\nhanke: oh, yes i do. yes, i do. ok? i'm interacting with someone here, if you can understand that. now, i'm sorry. \n\ngeorge: baah! there it is! you just said it! that's what i want! now say it again, and tell it to me. \n\nhanke: i'm not saying anything to you. i'm not sorry. i was never sorry. it was cashmere. i hate step nine! where's that rum raisin? where is it? can't find anything. i need a drink. ah, daquiri ice. here we go. what are you looking at? get out! come on, can't you see we're closed?! get out! \n\nelaine: (eating dinner with kramer, elaine, and puddy) mmm. this food is fantastic, peggy and what a pretty radish rose, huh? \n\nkramer: well, thank you. \n\nelaine: here's to peggy, on her first week of being germ-free, free. \n\nkramer: yeah. and here's to david puddy for helping me install a much needed and much appreciated garbage disposal in my bathtub. \n\npeggy: you have a garbage disposal in your bathtub? \n\nkramer: oh, yeah, and i use it all the time. yeah, i made this whole meal in there. \n\nelaine: this food was in the shower with you? \n\nkramer: mm-hmm. i prepared it as i bathed. \n\npuddy: oh, germs. germs. germs! \n\ngeorge: excuse me. is this, uh, rage-aholics? \n\npuddy: (waiting with elaine and peggy) no, germ-o-phobes. \n\ngeorge: thanks. what are you guys doin' here? \n\nelaine: kramer. \n\ngeorge: right. \n\nhanke: (speaking in front of other rage-aholics) hi, i'm, uh, jason. i'm a rage-aholic. \n\naudience: hi, jason. \n\nhanke: uh, this is my first meeting. \n\ngeorge: step-skipper. that man is a step-skipper! he skips step nine! \n\nhanke: please. step nine. \n\ngeorge: that's right! he never apologized to me for saying that i would stretch out the neck hole of his sweater. \n\ngeorge: it wasn't funny. \n\nhanke: it was a very nice sweater. take a look at his neck, not to mention the melon sitting on top of it. i don't know if i'd trust him with a v-neck. \n\ngeorge: he's beboppin' and scattin', and i'm losin' it! \n\n[setting: tim whatley's apartment] \n\nelaine: so.. whatley's still jewish, huh? \n\njerry: oh, sure. with out the parents, it's a breeze. \n\ntim: hey! happy chanukah! \n\njerry: hey, tim. great party. \n\ntim: (suggesting a kiss to elaine) eh? \n\nelaine: (shrugging it off) eh. \n\ntim: (accepting) oh. (turns to george) hey, george, thanks again for getting me those yankee tickets. \n\ngeorge: oh, yeah. still in good with the ground crew. (laghs) \n\ntim: (notices a woman walking by) oh, hey, listen, i'd better circulate.. (moving over to the woman) happy chanukah, tiffany! (they both move off camera) \n\nelaine: this place is like studio 54 with a menorah. \n\ngeorge: i'm gonna get some more of these kosher cocktail franks.. (leaves) \n\nelaine: oh.. (sees a guy looking at her) i got denim vest checking me out. (laughs) fake phone number's coming out tonight. \n\njerry: you have a standard fake? \n\nelaine: mm-hmm. \n\njerry: (notices an attractive woman walking by, starts to follow her) that's neat. \n\nelaine: (holds onto jerry's arm) no, please! denim vest! he's smoothing it! jerry! god! (jerry excapes elaine's grasp, moves over to the woman. the man wearing a denim vest moves over to elaine.) \n\ndenim vest: hi! \n\njerry: hi, i'm jerry. \n\nwoman: hi. jerry you might not know it to look at me, but i can run really, really fast. \n\nelaine: nice vest. i like the.. big metal buttons \n\ndenim vest: they're snaps. listen, maybe we should, uh, go out some time? \n\nelaine: why don't i give you my phone number? \n\n[setting: coffee shop] \n\ngeorge: hey. \n\njerry: hey! how'd it go with the cocktail franks? \n\ngeorge: great! i ate the entire platter! had to call in sick today. \n\njerry: didn't you call in sick yesterday? \n\ngeorge: hey, i work for kruger industrial smoothing \"we don't care, and it shows.\" \n\njerry: (notices george brought hhis mail) you're gonna open your mail here? \n\ngeorge: hey, at least i'm bringing something to this. (starts flipping through envelopes, reads one ) \"have you seen me?\" (flicks it aside) nope. (looks at next envelope) woah, something from whatley. \n\njerry: see? you give, and you get. \n\ngeorge: (reading the card from whatley) \"this holiday season a donation has been made in your name to the children's alliance.\"? \n\njerry: oh, that's nice. \n\ngeorge: i got him yankee's tickets! he got me a piece of paper saying \"i've given your gift to someone else!\" \n\njerry: to a children's charity! \n\ngeorge: don't you see how wrong that is?! where's your christmas spirit? and eye for an eye! \n\nelaine: hey! \n\njerry: hey. \n\nelaine: (to waitress) oh, nothing for me. (waitress leaves) i'm going to \"atomic sub\" later. \n\njerry: \"atomic sub\"? why are you eating there? \n\nelaine: i got a card, and they stamp it every time i buy a sub. 24 stamps, and i become a submarine (makes a gesture) captain. \n\njerry: what does that mean? \n\nelaine: (embarrassed) free sub. \n\nelaine: what? \n\ngeorge: nothing. it's a card from my dad. \n\nelaine: what is it? (grabs the card from george, he tries to stop her, but fails. she reads it out loud.) \"dear son, happy festivus.\" what is festivus? \n\ngeorge: it's nothing, stop it.. \n\njerry: when george was growing up.. \n\ngeorge: (interrupting) jerry, no! \n\njerry: his father.. \n\ngeorge: no! \n\njerry: hated all the commercial and religious aspects of christmas, so he made up his own holiday. \n\nelaine: ohhhh.. and another piece of the puzzle falls into place. \n\ngeorge: (pleading) alright.. \n\njerry: and instead of a tree, didn't your father put up an aluminum pole? \n\ngeorge: jerry! stop it! \n\njerry: and weren't there a feats of strength that always ended up with you crying? \n\ngeorge: i can't take it anymore! i'm going to work! are you happy now?! (gathers his things, and runs out of the coffee shop. elaine and jerry laugh hysterically) \n\n[setting: jerry's apartment] \n\nelaine: oh, i can't believe it! i've lost my \"atomic sub\" card!.. oh no! i bet i wrote that fake number on the back of it when i gave it to denim vest! \n\njerry: so? \n\nelaine: i've eaten 23 bad subs, i just need 1 more! it's like a long, bad movie, but you want to see the end of it! \n\njerry: no, you walk out. \n\nelaine: alright, then, it's like a boring book, but you gotta finish it. \n\njerry: no, you wait for the movie! \n\nelaine: (irritated, and through clinched teeth) i want that free sub. \n\njerry: you don't need the card. high-end hoagie outfit like that, it's all computerized! (snaps) they're cloning sheep now. \n\nkramer: (correcting) no, they're not cloning sheep. it's the same sheep! i saw harry blackstone do that trick with two goats and a handkerchief on the old dean martin show! \n\njerry: so, why don't you just try your blow-off number and see if he's called it? \n\nelaine: that's a good idea. \n\nkramer: (answering phone) yeah, go! wha.. really? yeah, ok. yeah! bye. (hangs up) great news! yeah, the strike has been settled. i'm going back to work. \n\njerry: what strike? \n\nkramer: yeah, h&h bagels. that's where i worked. \n\njerry: you? \n\nelaine: worked? \n\njerry: bagels? \n\nkramer: yeah. look, see. i still have my business card. (pulls it out, hands it to elaine) yeah, we've been on strike for 12 years. \n\nelaine: oh, i remember seeing those guys picketing out there, but i haven't seen them in a long time. \n\nkramer: yeah, well, h&h wouldn't let us use their bath room while we were picketing. it put a cramp on our solidarity. \n\nelaine: what were your.. demands? \n\nkramer: yeah, 5.35 an hour. and that's what they're paying now. \n\nelaine: i believe that's the new minimum wage. \n\nkramer: now you know who to thank for that!.. alright, i've got to go. (heads for the door) \n\njerry: why didn't you ever mention this? \n\nkramer: jerry, i didn't want you to know i was out of work. it's embarrassing! (leaves) (scene ends) \n\n[setting: h&h bagel shop] \n\nkramer: all right, everybody! i'm back! \n\nmanager: who are you? \n\nkramer: cosmo kramer.. strikes over. \n\nmanager: oh yeah! kramer. \n\nkramer: huh.. wha- didn't any of the guys come back? \n\nmanager: no, i\"m sure they all got jobs.. like, ten years ago. \n\nkramer: oh, man. makes you wonder what it was all for.. \n\nmanager: i could use someone for the holidays.. \n\nkramer: alright! toss me an apron, let's bagel! (takes off his coat, puts it in the display case, then turns to see a plate full of bagels.) what are those? \n\nmanager: those are rasin bagels. \n\nkramer: (picks one up, he's mesmerized) i never thought i'd live to see that.. \n\n[setting: horse track betting] \n\nelaine: so, anyway, i've been giving out your number as my standard fake. \n\nbookie: so. you're elaine benes. we've been getting calls fro you for 5 years. \n\nelaine: so, listen, when this guy calls, if you could just give him my real number.. \n\nbookie: (interrupting) hey, charlie! guess who's here. elaine benes. \n\ncharlie: elaine benes?! \n\nbookie: you make a lot of man friends. you know who's a man? charlie here, he's a man. you know who else? me. i'm a man. \n\ncharlie: (faintly) i'm a man. \n\nelaine: ohh.. my.. \n\nbookie: i'll have this best guy call your real number. you just, uh, give it to me. and that way, i'll have it. (slides a pad over to elaine so she can write it down) \n\nelaine: my number? ohh.. (looks at kramer's business card) okay.. uh, well, there you go. (writes h&h's number down) and, uh, tell you what.. (looks at the board in the back) put a sawbuck on captain nemo in the third at belmont. \n\n[setting: classy restaurant] \n\ntim: hey, jerry. \n\njerry: hey, tim. \n\ntim: what's up? \n\njerry: actually, i'm having dinner with a girl i met at your party. \n\ntim: mazel tov. \n\ngwen: jerry.. hi. \n\njerry: gwen? \n\ngwen: yeah. \n\njerry: (not willing to believe how much uglier she is) really? \n\ngwen: yeah! come on, our table is ready. \n\n[setting: jerry's apartment] \n\ngeorge: so, attractive one day - not attractive the next? \n\njerry: have you come across this? \n\ngeorge: yes, i am familiar with this syndrome -- she's a two-face. \n\njerry: (relating) like the batman villain? \n\ngeorge: (annoyed) if that helps you.. \n\njerry: so, if i ask her out again - i don't know who's showing up the good, the bad, or the ugly. \n\ngeorge: (identifying what jerry said) clint eastwood! \n\njerry: yeah. \n\ngeorge: hey, check this out. i gotta give out christmas presents to everyone down at kruger, so i'm pulling a whatley. (give a christmas card to jerry) \n\njerry: (reading it) \"a donation has been made in your name to the human fund.\" - what is that? \n\ngeorge: (with pride) made it up. \n\njerry: (continuing reading) \"the human fund. money for people.\" \n\ngeorge: what do you think? \n\njerry: it has a certain understated stupidity. \n\ngeorge: (once again, identifying) the outlaw of josey whales! \n\njerry: ..yeah. \n\nkramer: ah, gentlemen.. bagels on the house! \n\njerry: how was your first day? \n\nkramer: oh, fantastic! (jerry and george both pick out a bagel) it felt so good to get my hands back in taht dough. \n\njerry: your hands were in the dough? \n\nkramer: no, i didn't make these bagels. (jerry and george both take a bite) yeah, they're day-olds. the homeless won't even touch them. (jerry and george stop eating) oh, we try to fool them by putting a few fresh ones on top, but they dig.. they, they test. \n\ngeorge: alright. uh, well, i'm out of here. (gets up to leave) \n\njerry: happy festivus! \n\nkramer: what's festivus? \n\njerry: when george was growing up.. \n\ngeorge: (interrupting) no! \n\njerry: his father.. \n\ngeorge: stop it! it's nothing. it's a stupid holiday my father invented. it doesn't exist! \n\nelaine: happy festivus, georgie. \n\nkramer: frank invented a holiday? he's so prolific! \n\nelaine: kramer, listen, i got a little phone relay going, so, if a guy calls h&h and he's looking for me, you take a message. \n\njerry: you're still trying to gget that free sub? \n\nelaine: hey! i have spent a lot of time, and i have eaten a lot of crap to get to where i am today. and i am not throwing it all away now. \n\njerry: is there a captain's hat involved in this? \n\nelaine: maybe. \n\n[setting: h&h bagel shop] \n\nfrank: kramer, i got your message. i haven't celebrated festivus in years! what is your interest? \n\nkramer: well, just tell me everything, huh? \n\nfrank: many christmases ago, i went to buy a doll for my son. i reach for the last one they had - but so did another man. as i rained blows opon him, i realized there had to be another way! \n\nkramer: what happened to the doll? \n\nfrank: it was destroyed. but out of that, a new holiday was born. \"a festivus for the rest of us!\" \n\nkramer: that musta been some kind of doll. \n\nfrank: she was. \n\n[setting: kruger office building] \n\ngeorge: merry christmas, merry christmas! (co-worker gives a gift to george) oh, sandy! here is a little something for you.. (hands her a card) \n\nsandy: (after reading the cheap gift, she's suddenly unimpressed) ..oh.. thanks. (walks off) \n\ngeorge: phil, i loved those cigars! incoming! (flicks his card tward phil) \n\nphil: ow! \n\ngeorge: aw, mr. kruger, sir. merry christmas! (hands him a card) \n\nkruger: not if you could see our books.. what's this? \n\ngeorge: the human fund. \n\nkruger: whatever. (walks off) \n\ngeorge: exactly. (sees an off-camera co-worker) erica! \n\n[setting: h&h bagel shop] \n\nfrank: and at the festivus dinner, you gather your family around, and you tell them all the ways they have disappointed you over the past year. \n\nkramer: is there a tree? \n\nfrank: no. instead, there's a pole. it requires not decoration. i find tinsel distracting. \n\nkramer: frank, this new holiday of yours is scratching me right where i itch. \n\nfrank: let's do it then! festivus is back! i'll get the pole out of the crawl space. (turns to leave, meets up with elaine) \n\nelaine: hello, frank. \n\nfrank: hello, woman. (leaves) \n\nelaine: kramer! kramer.. any word from the vest? \n\nkramer: no. (to manager of h&h) ah, listen, harry, i need the 23rd off. \n\nmanager: hey! i hired you to work during the holidays. this is the holidays. \n\nkramer: but it's festivus. \n\nmanager: what? \n\nkramer: you know you're infringing on my right to celebrate new holidays.. \n\nmanager: that's not a right. \n\nkramer: well, it's going to be! because i'm going back on strike. come on elaine. (takes of his apron, and goes for his coat) it's a walk out! \n\nelaine: no, i got to stay here and wait for the call. \n\nkramer: what? you're siding with management?! \n\nelaine: no, i just.. \n\nkramer: (interrupting) scab! scab! (pointing at elaine) scab! \n\n[setting: taxi cab] \n\ngwen: hey. \n\njerry: boy, am i glad to see you. \n\ngwen: you were expecting someone else? \n\njerry: you never know. \n\ngwen: (to driver) you know, you might want to take the tunnel. \n\njerry: so, uh, what do you feel like eating? chinese or italian? \n\ngwen: i can go either way. \n\njerry: (shocked) you're telling me. \n\n[setting: the coffee shop] \n\ngeorge: so, she was switching? back and forth? \n\njerry: actually, the only place she always looked good was in that back booth over there. \n\ngeorge: so, just bring her here. this is all you really need. \n\njerry: i can't just keep bringing her to the coffee shop. i mean, what if things, you know, progress? \n\ngeorge: lights out. \n\njerry: alright, i'll give it a shot! i do really like this coffee shop. nice cuff links, by the way. \n\ngeorge: (pointing to them) office christmas gift. i tell you, this human fund is a gold mine! \n\njerry: that's not a french cuff shirt, you know. \n\ngeorge: i know. i cut the button off and poked a hole with a letter opener. \n\njerry: oh, that's classy. \n\nkramer: well, happy festivus. \n\ngeorge: what is that? is taht the pole?! \n\nfrank: george, festivus is your heritage - it's part of who you are. \n\ngeorge: (sulking) that's why i hate it. \n\nkramer: there's a big dinner tuesday night at frank's house - everyone's invited. \n\nfrank: george, you're forgetting how much festivus has meant to us all. i brought one of the casette tapes. (franks pushes play, george as a child celebrating festivus is heard) \n\nfrank: read that poem. \n\ngeorge: (complaining) i can't read it. i need my glasses! \n\nfrank: you don't need glasses, you're just weak! you're weak! \n\nestelle: leave him alone! \n\nfrank: alright, george. it's time for the feats of strength. \n\ngeorge: no! no! turn it off! no feats of strength! (gets up and starts running out of the coffee shop) i hate festivus! \n\nfrank: we had some good times. \n\ngwen: hey. \n\njerry: i there. this is kramer, and frank. \n\ngwen: hi. \n\nkramer: (shocked at her ugliness, he stammers) hello. \n\ngwen: so, you ready to go? \n\njerry: uh, why don't we stay here? the back booth just opened up. (they both walk to the booth and sit down. suddenly, gwen is attractive) now this is a good looking booth. \n\n[setting: h&h bagel shop] \n\nkramer: protect festivus! hey, no bagels, no bagels, no bagels, (continues to chant) \n\nmanager: (to a waiting elaine) lady, if you want a sandwich, i'll make you a sandwich. \n\nelaine: (whining) i want the one that i earned. (phone rings) i'll get it. i'll get it! (into phone) h&h, and elaine. \n\nkramer: (from a phone booth right outside the store) elaine, you should get out of there. i sabotaged the bagel machine last night. it's going down. \n\nelaine: what did you do? \n\nkramer: you've been warned. \n\nelaine: oh, hi! (waves at him) \n\nworker: hey, the steam valve's broke. \n\nmanager: can we still make bagels? \n\nworker: sure. it's just a little steamy. \n\nkramer: hey! how do you like your bagels now?! \n\n[setting: kruger building] \n\nkruger: george, i got something for you. (pulls a check from his pocket) i'm suppose to find a charity and throw some of the company's money at it. they all seem the same to me, so, what's the difference? (hands the check to george) \n\ngeorge: 20 thousand dollars? \n\nkruger: made out to the human fund. (tries to enter his office, but it's locked) oh, damn. i've locked myself out of my office again. oh well. i'm going home. \n\n[setting: coffee shop] \n\ngwen: jerry, how many times do we have to come to this.. place? \n\njerry: why? it's our place. \n\ngwen: i just found a rubber band in my soup. \n\njerry: oh.. i know who's cooking today! \n\ngeorge: hey! surprise, surprise! \n\njerry: hey, georgie! \n\ngwen: i think i'm just gonna go. \n\njerry: i'll be here. \n\ngeorge: (sees gwen's meal) hey, soup. \n\njerry: she didn't touch it. \n\ngeorge: ohh.. paco! (flicks rubber band tward the kitchen) hey, take a look at this. (hands jerry kruger's check) \n\njerry: 20 thousand dollars from kruger? you're not keeping this. \n\ngeorge: i don't know. \n\njerry: excuse me? \n\ngeorge: i've been doing a lot of thinking. this might be my chance to start giving something back. \n\njerry: you want to give something back? start with the 20 thousand dollars. \n\ngeorge: i'm serious. \n\njerry: you're going to start your own charity? \n\ngeorge: i think i could be a philanthropist. a kick ass philanthropist! i would have all this money, and people would love me. then they would come to me.. and beg! and if i felt like it, i would help them out. and then they would owe me big time! (thinking to himself) .. first thing i'm gonna need is a driver.. \n\n[setting: outside h&h bagels] \n\nelaine: kramer, the vest just called. \n\nkramer: (shocked by the way elaine looks) yama - hama! it's fright night! \n\nelaine: oh, yeah, i got a little steam bath. listen, in 10 minutes, i'm gonna have my hands on that \"atomic sub\" card. \n\nkramer: and? \n\nelaine: (embarrassed) free sub. (starts to leave) i'll see ya. \n\nkramer: yeah. \n\ngwen: kramer, hi! \n\nkramer: oh, hello. \n\ngwen: it's gwen.. we met .. at the coffee shop. \n\nkramer: ah-huh. \n\ngwen: i'm dating your friend, jerry.. \n\nkramer: ahh.. i don't know who you really are, but i've seen jerry's girlfriend, and she's not you. you're much better looking - and like, a foot taller. \n\ngwen: that's why we're always hiding in that coffee shop! he's afraid of getting caught. \n\nkramer: oh, he's a tomcat. \n\nelaine: steve. \n\ndenim vest: hmm? \n\nelaine: it's elaine. \n\ndenim vest: from tim whatley's party? \n\nelaine: yeah. \n\ndenim vest: you look.. different. \n\nelaine: i see you're still sticking with the denim. (he's wearing a denim coat) do you have that card that i gave you? \n\ndenim vest: well, i had it back at my place, but i can't go there now.. i'll give it to you later, or something. \n\nelaine: no, no, no. you give me your number. \n\ndenim vest: okay. sure. (pulls out a pad, and starts writing a number down) do you have the mumps? \n\nelaine: no. \n\ndenim vest: typhoid? \n\nelaine: no. \n\ndenim vest: (hands her the paper, and runs off) yama - hama! \n\nelaine: a fake number! blimey! \n\n[setting: kruger's office] \n\nkruger: george, we have a problem. there's a memo, here, from accounting telling me there's no such thing as the human fund. \n\ngeorge: well, there could be. \n\nkruger: but there isn't. \n\ngeorge: well, i - i could, uh, i could give the money back. here. (holds it out) \n\nkruger: george, i don't get it. if there's no human fund, those donation cards were fake. you better have a damn good reason why you gave me a fake christmas gift. \n\ngeorge: well, sir, i - i gave out the fake card, because, um, i don't really celebrate christmas. i, um, i celebrate festivus. \n\nkruger: vemonous? \n\ngeorge: festivus, sir. and, uh, i was afraid that i would be persecuted for my beliefs. they drove my family out of bayside, sir! \n\nkruger: are you making all this up, too? \n\ngeorge: oh, no, sir. festivus is all too real. and.. i could prove it - if i had to. \n\nkruger: yeah, you probably should. \n\n[setting: the costanza's house] \n\ngeorge: happy festivus! \n\nfrank: george? this is a surprise. (looking at kruger) who's the suit? \n\ngeorge: yo, dad. this is my boss, mr. kruger. \n\nfrank: have you seen the pole, kruger? \n\ngeorge: dad, he doesn't need to see the pole. \n\nfrank: he's gonna see it. \n\ngeorge: happy festivus! (sees elaine) yama - hama! \n\nelaine: i didn't have time to go home. what are you doing here? \n\ngeorge: embracing my roots. \n\njerry: they nailed you on the 20 g's? \n\ngeorge: busted cold. \n\nfrank: it's made from aluminum. very high strength-to-weight ratio. \n\nkruger: i find your belief system fascinating. \n\nkramer: hey! happy festivus, everyone! (hugs george, and jumps up and down) hee, hee, hee! \n\nbookie: hello again, miss benes. \n\nelaine: what are you doing here? \n\nbookie: damnedest thing.. me and charlie were calling to ask you out, and, uh, we got this bagel place.. \n\nkramer: (finishing the story) i told them i was just about to see you.. it's a festivus miracle! \n\nestelle: dinner's ready! \n\nfrank: let's begin. \n\n(everyone sits around the table. kruger recognized kramer from \"the meat slicer\" episode..) kruger: dr.. van nostrand? \n\nkramer: uh.. that's right. \n\nfrank: welcome, new comers. the tradition of festivus begins with the airing of grievances. i got a lot of problems with you people! and now you're gonna hear about it! you, kruger. my son tells me your company stinks! \n\ngeorge: oh, god. \n\nfrank: (to george) quiet, you'll get yours in a minute. kruger, you couldn't smooth a silk sheet if you had a hot date with a babe.. i lost my train of thought. \n\ngwen: jerry! \n\njerry: gwen! how'd you know i was here? \n\ngwen: kramer told me. \n\nkramer: another festivus miracle! \n\ngwen: i guess this is the ugly girl i've been hearing about. \n\nelaine: hey, i was in a shvitz for 6 hours. give me a break. \n\njerry: gwen. gwen, wait! ah! (runs back to his seat) bad lighting on the porch. \n\nelaine: (to bookie) hey, how'd my horse do? \n\nbookie: he had to be shot. \n\nfrank: and now as festivus rolls on, we come to the feats of strength. \n\ngeorge: not the feats of strength.. \n\nfrank: this year, the honor goes to mr. kramer. \n\nkramer: uh-oh. oh, gee, frank, i'm sorry. i gotta go. i have to work a double shift at h&h. \n\njerry: i thought you were on strike? \n\nkramer: well, i caved. i mean, i really had to use their bathroom. frank, no offence, but this holiday is a little (makes a series of noises) out there. \n\ngeorge: kramer! you can't go! who's gonna do the feats of strength? \n\nkruger: (sipping liquor from a flask) how about george? \n\nfrank: good thinking, kruger. until you pin me, george, festivus is not over! \n\ngeorge: oh, please, somebody, stop this! \n\nfrank: (taking off his sweater) let's rumble! \n\nestelle: i think you can take him, georgie! \n\ngeorge: oh, come on! be sensible. \n\nfrank: stop crying, and fight your father! \n\ngeorge: ow! .. ow! i give, i give! uncle! \n\nfrank: this is the best festivus ever! \n\n[setting: h&h bagel shop] \n\nmanager: alright. that's enough. you're fired. \n\nkramer: thank - you! (gets his coat, and leaves) \n\n[setting: a car dealership] \n\ngeorge: when are they gonna have the flying cars, already? \n\njerry: yeah, they have been promising that for a while.. \n\ngeorge: years. when we were kids, they made it seem like it was right around the corner. \n\njerry: i think ed begley jr. has one. \n\ngeorge: no. that's just electric. \n\njerry: what about harrison ford? he had one in, uh, blade runner. that was a cool one. \n\ngeorge: (sarcastically) what's the competition, chitty chitty bang bang? \n\njerry: well, what do you think the big holdup is? \n\ngeorge: the government is very touchy about us being in the air. let us run around on the ground as much as we want. anything in the air is a big production. \n\njerry: yeah, right. and what about the floating cities? \n\ngeorge: and the underwater bubble cities? \n\njerry: it's like we're living in the '50s here. \n\nkramer: it's good suspension! \n\njerry: (to kramer) would you stop it? you'll have plenty of time to destroy it after i get it. hey, george, i'm buyin' this car. (gestures to a black saab) \n\ngeorge: shhh what is wrong with you? you never tell 'em you like the car. (advising) you're not sure what you want. you don't even know why you're here. \n\njerry: (gestures to his forehead) youre getting that vein again. \n\ngeorge: i'm starving. we should have had lunch first.. \n\njerry: (trying to quiet george down) it'll be twenty minutes. i told ya, puddy's getting me an insider deal. \n\ngeorge: since when is elaine's boyfriend selling cars? i thought he was a mechanic. \n\njerry: i guess he graduated. \n\ngeorge: there's an easy move go from screwin' you behind your back to screwin' you right to your face. \n\njerry: (to kramer) thank you. \n\ngeorge: puddys just gonna give you the car, huh? (skeptically) youll see. first they stick you with the undercoating, rust-proofing, dealer prep. suddenly, youre on your back like a turtle. \n\njerry: all right. calm down. \n\ngeorge: my father had a car salesman buddy. he was gonna fix him up real nice. next thing i know, im gettin dropped of in a le car with a fabric sunroof. all the kids are shoutin at me, \"hey, le george! bonjour, le george! lets stuff le george in le locker!\" \n\nkramer: jerry, i dont think this thing is hooked up right. \n\njerry: (to kramer) all right, were goin in. \n\nsalesman: youve got a good eye, there. i see youve noticed the uni-body construction. im rick. are you looking to buy or to lease? \n\nkramer: uh, borrow. its for my friend. yeah, hell be buying.. \n\nrick: maybe i should talk to him. \n\nkramer: oh, i dont think so. no, hes an entertainer. you know, all over the place. thats where i come in. \n\nrick: i see. so, youre his manag- \n\nkramer: yeah, neighbor. thats right. yeah, why dont we take this boiler out for a shakedown huh? \n\ngeorge: look at these salesmen. the only thing these guys fear is the walk-out. no matter what they say, you say, \"ill walk out of here right now!\" \n\nsalesman: can i help you with something? \n\ngeorge: (threatening) hold it! one more step and were walkin! \n\njerry: (scolding) george. (to salesman) sorry, were just waiting for david puddy. \n\ngeorge: (still with a tone) he is. you dont know what im doin here. \n\nelaine: hey. \n\njerry: hey. \n\npuddy: sorry im late. \n\nelaine: (full of pride) my new salesman boyfriend took me out to celebrate his promotion. \n\njerry: ah. whered you go? \n\nelaine: (obviously embarrassed) uh, to a restaurant. \n\npuddy: arbys. \n\nelaine: i had the roast beef \n\njerry: so, puddy, i decided im gonna go with another 900 convertible. \n\npuddy: all right. classic. (holds his hand up) high-five. \n\nelaine: (interrupting) david, can you tell me where the xerox machine is? \n\npuddy: oh, sure, babe. salesman-only copy room (points) right there. \n\nelaine: oh. (leaves for the room) \n\npuddy: (to jerry and george) hey, come on, guys. ill show you the 900. \n\ngeorge: (mocking, skeptic) yeah, you show us the 900. \n\nrick: and look at these features, mr. kramer anti-lock brakes, automatic climate control. uh, (points out the windshield) make a right at this corner, please. (goes back to the features) an adjustable steering wheel, and oh, mr. kramer, you missed the turn.. \n\nkramer: no, no, no, i didnt. \n\nrick: well, thats okay. (pointing) well make this next right, and swing around to get back to the dealership. \n\nkramer: (up to something) well, its a test drive, right? i never drive around here. if im gonna recommend this car, i need to see that itll handle my daily routine. \n\nrick: well where are we going? \n\nkramer: just a little place i like to call, \"youll see\". \n\n[setting: puddys office] \n\ngeorge: im starving. you got any of those free donuts you use to soften people up? \n\npuddy: (pointing out his office door) by the service department. \n\ngeorge: (getting up, he addresses jerry) all right, remember no rust-proofing. commit to nothing. if you have to speak - mumble. \n\njerry: (as george is leaving for the donuts) au revoir, le george. \n\ngeorge: dont think it cant happen! (leaves) \n\njerry: so, puddy, this is a pretty good move for you, huh? no more \"grease monkey\". \n\npuddy: i dont care for that term. \n\njerry: oh. sorry, i didnt know.. \n\npuddy: no, i dont know too many monkeys who could take apart a fuel injector. \n\njerry: i saw one once that could do sign language. \n\npuddy: yeah, i saw that one. uh.. koko. \n\njerry: yeah, koko. \n\npuddy: right, koko. that chimps all right. (holds up his hand) high-five. \n\ngeorge: hey, hey, hey! whats goin on here? (to jerry) you didnt agree to anything, did ya? \n\njerry: no. we both just saw the same monkey. \n\ngeorge: (aggravated) well, i got screwed on the donuts. there were none left. heh! \n\npuddy: (standing up) well, theres a vending machine. i could show you where it is. (leaves, showing george the way) \n\ngeorge: (to jerry) hey, gimme a dollar. \n\njerry: (getting a dollar out) wheres your money? \n\ngeorge: (talking it) im here helpin you. \n\nelaine: hey. wheres puddy? the copy machine is broken. \n\ngeorge: (on his way out) heh, heh, heh. thats what they want you to think. \n\njerry: hey, elaine, have you noticed your boyfriend has developed an annoying little habit? \n\nelaine: (squints, imitating puddy) the squinting? \n\njerry: no. \n\nelaine: (stares ahead, again, imitating puddy) the staring? \n\njerry: no. he keeps asking me to give him a high-five. \n\nelaine: (shrugging) i thought all guys do that. \n\njerry: slapping hands is the lowest form of male primate ritual. in fact, even some of them have moved on - theyre doing sign language now. \n\nelaine: its that bad? \n\njerry: what do you think the nazis were doin? (imitates the nazis salute) that was the heil-five. \n\nelaine: (pointing out) isnt that from your act, like, ten years ago? \n\njerry: (slightly embarrassed) it was a good bit in the 80s, and its still relatable today. \n\npuddy: good news. we got a 900 in black. thats the hot color. (holds up his hand) high-five. \n\nelaine: um, david, you know what? can you come help me fix the copy machine? come. \n\npuddy: (pointing at jerry) you owe me five. \n\n[setting: dealership back room] \n\ngeorge: twix.. (makes various noises) b-5. \n\ngeorge: ah, come on! \n\ngeorge: ah, excuse me. do you have, uh, change of a dollar? \n\nmechanic: (while retrieving his candy) no. \n\ngeorge: could i, uh, could i trade you for another dollar? \n\nmechanic: (while walking away) dont have one. \n\ngeorge: (stopping him) ah, excuse me. when your, uh, when your wallet was open, i - i glanced inside, and i couldnt help but notice that you have several crisp dollar bills. \n\nmechanic: (calm) youre incorrect. \n\ngeorge: (persistent) perhaps you could look again, please? im very hungry. \n\nmechanic: (while taking his exit) we had donuts earlier. \n\ngeorge: (losing it) i guess everyone here enjoys giving the old screwgie, huh?! youre all doin a hell of a job! (looks longingly at the twix in the machine) ho, ho. what i would do with you.. \n\n[setting: dealership car] \n\nrick: uh, mr. kramer, were really not allowed to use the cars to run errands. \n\nkramer: now look, rick. im very close to giving this car, that my celebrity friend is considering, my full endorsement. (looks out the window) oooh, lets see if i can get a smile from these femininas.. (yells out to them) hey, ladies! (points to the car) its the saab 900! what do you think? can i interest you in a little supplemental restraint?! (they obviously do something to offend him. kramer reacts with a face) geez \n\n[setting: dealership back room] \n\njerry: (tapping the door you lift to retrieve your candy on the machine) i think the candy comes out over there. \n\ngeorge: people can drop change down here, jerry. and theyre too lazy to pick it up. \n\njerry: either that, or theyve got a weird little hang-up about lying face-down in filth. why dont you just go to the cashier? \n\ngeorge: the cashier is at lunch - which is where id like to be. \n\njerry: how much was under there? \n\ngeorge: (looking at his finger) i think somethin bit me. i just need another nickel. \n\njerry: (while fishing through his pocket for change) hey, puddy thinks i should go for the cd player. what do you think? (hands him a nickel) \n\ngeorge: ho, ho, ho! hes got a live one. hes just reeling his big fish in! \n\njerry: hey, can i have my dollar back? \n\ngeorge: (stingy) its wrinkled. its worthless. \n\ngeorge: (as the twix starts to move) ha, ha, ha, ha! (the twix gets stuck in the spindle right before falling. george begins to pound the machine) come on! jump! \n\nman: they just put out some more donuts. \n\ngeorge: they did? \n\nman: (holding his up) last one. \n\n[setting: dealership car] \n\nkramer: well, just one more errand and we can head back. \n\nrick: actually, it looks like were gonna need some gas. \n\nkramer: oh? well, how much gas do you think is in there right now? \n\nrick: (looking) well, its on \"e\". \n\nkramer: you know, rick, oftentimes, jerry - he lends me his car and i find myself in a situation where the car is almost out of gas. but, for a variety of reasons, i dont want to be the one responsible for purchasing costly gasoline. \n\nrick: (pointing out) so, you want to know how far you can drive your friends car for free. \n\nkramer: (in the spotlight, his voice goes high) well, i make it up to him in other ways. \n\n[setting: dealership back room] \n\ngeorge: as you will see, the candy bar is paid for, and yet, remains dangling in the machine. (notices that the twix slot is completely empty) hey, its gone. where is my twix? (quickly looks around. his sights fall on the window of a door labeled \"employees only\". the same mechanic from before is eating a candy bar) what?! that guys eatin it! \n\nsalesman: well, how do you know that ones yours? \n\ngeorge: uh, it was dangling! there were only two left in the machine! he mustve bought one, and gotten both. \n\nsalesman: sir, are you gonna buy a car? \n\ngeorge: no! (the salesman walks away. he addresses the mechanic through the doors window) hey! hey! i see you! that is my twix! (the mechanic eats the last of the twix, obviously to make george even more angered. it works) oh, ha, ha! ho, ho! \n\npuddy: paper jam.. got it! \n\nelaine: yay! \n\npuddy: (holds his hand up) high-five. (elaine reluctantly slaps it. he turns around, and puts his hand out behind his back) on the flip side. \n\nelaine: david, um, i.. \n\npuddy: (still holding out his hand) dont leave me hangin. \n\nelaine: youre a salesman now - and the high-five is its very grease monkey. \n\npuddy: what did i tell you about that? \n\nelaine: ah, i, im sorry, but the high-five is just so stupid. \n\npuddy: (somewhat hurt) oh yeah? ill tell you whats stupid. you. stupid. \n\nelaine: (sarcastically) oh, that is really mature. \n\npuddy: yeah? so are you. youre the grease monkey. \n\nelaine: (confused at davids attempts at a comeback) uh that doesnt make any sense. i am leaving. \n\npuddy: yeah, if you leave, were through. \n\nelaine: fine! were through! \n\npuddy: oh, so youre leaving? \n\nelaine: (while leaving) thats right. (mocking puddy, she puts her hand up) high-five! (turns around, putting her hand behind her back like he had done) on the flip side! (as elaine is leaving, she mutters to herself) takin me to arbys \n\njerry: (sees elaine leaving) hey! wh-where are you? \n\npuddy: lets finish this up. \n\njerry: did you two break up? \n\npuddy: (while punching up numbers on a calculator) that chicks whacked. were history. (back to the transaction) i just left out a couple of things uh, rust-proofing \n\njerry: \"rust-proofing\"? \n\npuddy: (reading off what hes adding up on the calculator) transport charge, storage surcharge, additional overcharge, finders fee \n\njerry: \"finders fee\"? it was on the lot! \n\npuddy: yeah, thats right. (continues reading off) uh, floor mats, keys \n\njerry: keys?! \n\npuddy: how ya gonna start it? \n\n[setting: dealerships shop] \n\ngeorge: excuse me. i believe you just ate my twix bar. it was dangling. and when you purchased your twix bar, you got a little freebie, and you never bothered to ask why, or seek out its rightful owner. \n\nmechanic: first of all, it wasnt a twix. it was a 5th avenue bar. \n\ngeorge: huh. you must think im pretty stupid. (the mechanic shoots him a look as if he cleary does think hes stupid) that was no 5th avenue bar. i can see the crumb right there in the corner of your lip! now, that-that-that is a cookie - and we all know that twix is the only candy bar with the cookie crunch. \n\nmechanic: its uh, its just a little nougat. \n\ngeorge: nougat? please. i think ive reached the point in my life where i can tell the difference between nougat and cookie. so lets not just say things that we both know are obvious fabrications. \n\nmechanic: (pointing to georges forehead) you know, youre gettin a little vein there.. \n\ngeorge: (watching the mechanic leave) i know about the vein! i cant believe this guy.. \n\njerry: hey, george! \n\ngeorge: hey, starving! (grabs the box from jerry) \n\njerry: no, last one. listen, you gotta help me out. elaine and puddy just broke up, hes treatin me just like a regular customer, now! \n\ngeorge: i tried to tell you, but you wouldnt listen. no, ho, ho! you were gonna get a deal, huh? theres no laws in this place. anything goes! its thunderdome! \n\nsaleswoman: is someone helping you? \n\ngeorge: stay back! (runs out of the room, pushing jerry out ahead of him) \n\n[setting: dealership car] \n\nrick: (trying to look at the gas gauge) where is it now? \n\nkramer: theres still some overlap between the needle and the slash below the \"e\". \n\nrick: how low are you gonna go? \n\nkramer: oh, ive been in the slash many times. this is nothing. youll get used to it. just, (makes a popping sound) put it out of your mind. \n\nrick: have you ever been completely below the slash? \n\nkramer: well, i almost did once, and i blacked out. when i came to, the car was in a ditch, and the tank was full. i dont know who did it, and i never got to thank them.. \n\nrick: (as the car slowly drifts off the road) mr. kramer, the road! \n\nkramer: whoop! whoop! \n\n[setting: puddys office] \n\njerry: (threatening tone) so, listen, puddy. when we first started this deal, i thought things were gonna be different. now, if you want to play hard ball, i got my friend, george, here, and he can play pretty hard ball. (leaving the negotiation to george) george, vein it up. \n\ngeorge: all right, puddy, listen, and listen good i need to know the name of that mechanic that walks around here. big guy, a liar. short name. sam? moe? sol?! \n\njerry: george! can we focus on the car, here? \n\ngeorge: im starving! i can feel my stomach sucking up against my spine. \n\npuddy: (handing a sheet of paper to jerry) jerry, i just need your signature here, and well get you that yellow car ready to go. \n\njerry: yellow? i wanted black. \n\npuddy: i cant give you black at that price. \n\njerry: (pleading) george, would you help me, please? \n\ngeorge: (standing up) yes. this is wrong! \n\njerry: sing it, sister! \n\ngeorge: just because a candy bar fails to fall from its perch \n\njerry: (exasperated) oh, god \n\ngeorge: (losing it) does not imply transfer of ownership. moe, sol, or lem is not gonna get away with this! \n\njerry: (to puddy) ill be right back. \n\npuddy: okay. \n\njerry: hey, george! \n\n[setting: dealership car] \n\nrick: is it just the angle im looking from? \n\nkramer: no, sir. we are down there. \n\nrick: oh, this is amazing! oh, ive never felt so alive! \n\nkramer: all right, im satisfied. we better get some gas. \n\nrick: what? well, we cant stop now. \n\nkramer: what do you mean? \n\nrick: we have to keep going - all the way back to the dealership. that was the plan. \n\nkramer: there was no plan. \n\nrick: well, lets make it the plan! lets just go for it! like thelma and louise. \n\nkramer: what, they drove to a dealership? \n\nrick: no, they drove off a cliff. \n\nkramer: you are one sick mama i like it. \n\nrick: mr. kramer, the road! \n\nkramer: yup! yup! \n\n[setting: elaines apartment] \n\nelaine: hello? \n\njerry: (over the phone) elaine, youve got to get back down to the dealer. puddy is screwin me on this car, which is yellow now! \n\nelaine: (jokingly mimicking jerry) who is this? \n\njerry: (banging the phone against the booth) elaine! \n\nelaine: what?! \n\njerry: you gotta get back together with puddy so i can make this deal. \n\nelaine: (sarcastically) you know, just that you cared enough to call means so much, jerry. \n\njerry: youre gonna get back together, anyway. its thousands of dollars! \n\nelaine: oh, i dont know.. \n\njerry: come on. then you dont have to see him again til my 15,000-mile check. \n\nelaine: well, will you pay my cab fare out there? \n\njerry: fine. \n\nelaine: and i didnt like that roast beef, so how bout some lunch? \n\njerry: no. no lunch. \n\nelaine: ill hang this phone up right now! \n\njerry: all right! lunch! \n\nelaine: ill see ya. (hanging up the phone) \n\njerry: bye. (hangs up) \n\njerry: (frustrated, he reacts) everybodys ripping me off! \n\ngeorge: yes, id like to report a problem with one of your mechanics. \n\nwillie: when did you bring the car in? \n\ngeorge: (to the man behind him in line) yeah, right im gonna get my car repaired at a dealership. huh! why dont i just flush my money down the toilet? \n\nwillie: sir, what, exactly, is the problem? \n\ngeorge: one of your guys - kip, or ned, short name - stole my twix candy bar! \n\nwillie: are you saying he grabbed your candy bar away from you? \n\ngeorge: he might as well have! i caught him, and his face was covered in chocolate and cookie crumbs. \n\nwillie: i thought you said it was a twix. \n\ngeorge: oh, it was. but he claimed it was a 5th avenue bar. \n\nwillie: maybe it was. \n\ngeorge: oh, no, no. twix is the only candy with the cookie crunch. \n\nwillie: what about the hundred-thousand-dollar bar? \n\ngeorge: no. rice and caramel. \n\nwillie: nougat? \n\ngeorge: no. \n\nwillie: positive? \n\ngeorge: please. \n\nwoman: you know they changed the name from hundred-thousand-dollar bar to hundred-grand? \n\ngeorge: all i want is my seventy-five cents back, an apology, and for him to be fired! \n\nwillie sr: i remember when you used to be able to get a hershey for a nickel. \n\nman: whats the one with the swirling chocolate in the commercial? \n\ngeorge: they all have swirling chocolate in the commercial! \n\nwillie sr: not skittles. \n\nwillie: dad, i told you you could sit here only if you dont talk. \n\nwoman: (sitting behind george) you make your father sit here all day? \n\nwillie: he likes it! \n\ngeorge: all right, do you mind? i have the window! (to willie) now, what are you gonna do about my twix? \n\nman: (in line behind george) twix has too much coconut. \n\ngeorge: no! theres no coconut! \n\nwoman: (behind service window) im allergic to coconut. \n\nwillie: im not. \n\nwillie sr: a nickel! \n\n[setting: dealership office showroom] \n\nelaine: cab receipt. hey, puddy. \n\npuddy: im with a customer. \n\nelaine: uh \n\njerry: no, no. no, elaine, the car can wait. whats important is you two getting back together. eh, then well talk about the car. \n\npuddy: (like a kid) i dont want to get back with her. shes too bossy. \n\nelaine: (raising her finger at him, in an authoritative tone) david.. \n\njerry: okay. now, i know this is an important decision. why dont we all just sit down and talk about it? come on, come on. (all three sit down) now, look, you both find each other attractive, right? \n\nelaine and puddy: right. \n\njerry: clearly, no one else can stand to be with either one of you. \n\nelaine: i guess. \n\npuddy: good point. \n\njerry: (smiling, like a salesman) all right. now, what do i have to do to put you two in a relationship today? \n\n[setting: gas station] \n\nkramer: cars can go on empty, but not us humans, huh, fella? ill get us a couple of twix bars. \n\nrick: no, no coconut for me. \n\nkramer: all right, ill get ya a mounds bar. keep the engine running. \n\nrick: ahh! \n\nkramer: no, man! not the gas! \n\nrick: but it needs it, kramer! it needs it bad! \n\nkramer: do you think that thisll make you happy? cause it wont! \n\nrick: (walking away) ah, you can just go on without me. \n\nkramer: listen to me. when that car rolls into that dealership, and that tank is bone dry, i want you to be there with me when everyone says, \"kramer and that other guy, oh, they went further to the left of the slash than anyone ever dreamed!\" \n\nrick: maybe we better get moving. \n\nkramer: its good to have you back, stan. \n\nrick: its rick, by the way. \n\nkramer: no time! \n\n[setting: dealerships customer service room] \n\nwillie: mr. costanza, i really dont have time for this. \n\ngeorge: now, if this mechanic guy, was, in fact, eating a 5th avenue bar, as he claims, wouldnt you agree he would have no problem picking one out from a candy line-up? \n\nwillie: \"candy line-up\"? \n\ngeorge: ive spent the last hour preparing ten candy bars with no wrappers or identification of any kind for him to select from. \n\nwillie: it took you an hour? \n\ngeorge: only i hold the answer key to their true candy identities. and so, without further ado, i give you the candy line-up. (opens a door to a back room. various dealership employees are munching on candy bars) \n\nsaleswoman: hey, willie, check it out! free candy! \n\ngeorge: thats my candy line-up! where are all my cards?! theyre - theyre all on the floor! \n\ngeorge: and you! how many twix does that make for you, today?! like, 8 twix?! \n\nmechanic: no. \n\nman: hey, this clark bar is good. \n\ngeorge: its a twix! theyre all twix! it was a setup! a setup, i tell ya! and youve robbed it! youve all screwed me again! now, gimme one! gimme a twix! \n\nmechanic: theyre all gone. \n\ngeorge: (yelling out, frustrated. the camera spins from a top angle) twwwwiiiiiixxxxx! \n\nelaine: what was that? \n\npuddy: theres a mental hospital right near here. \n\njerry: all right. elaine, david, i believe we have a deal here in principle arbys no more than once a month. and in exchange, elaine comes to your softball game, and doesnt read a book. \n\nelaine: (while looking over the contract jerry just drew up) yeah, well, thats not bad. \n\npuddy: i can live with that. \n\njerry: so, youre back together? \n\npuddy: yeah. \n\njerry: all right, all right. all right, thats enough! lets get back to my deal. that undercoating, thats a rip-off, isnt it, david? \n\npuddy: oh, we dont even know what it is. \n\njerry: so, im gettin the insiders deal? \n\npuddy: insiders deal. (holds up his hand) high-five. \n\n[setting: dealership car] \n\nrick: (seeing the turn-off up ahead) theres the dealer! \n\nkramer: hey! \n\nrick: we did! we pulled it off! i cant believe it! wheres the needle? \n\nkramer: oh, it broke off, baby! woo, hoo, hoo! \n\nrick: oh, mr. kramer, i gotta thank you. i - i learned a lot. things are gonna be different for me now. \n\nkramer: well, thats a weird thing to say \n\nrick: i wonder how much longer we could have lasted. \n\nkramer: yeah, yeah. i wonder hmm. \n\n[setting: nyc cab] \n\nelaine: this is nice. what kind of car is this? \n\ncabbie: caprice classic. \n\nelaine: (to jerry) you couldnt just give him one high-five? \n\njerry: and where does it end? then everyones doin it. its like the wave at ball games. air quotes. the phrase, \"dont go there.\" - someones gotta take a stand! \n\ngeorge: (munching on a hamburger) this arbys is good. \n\nelaine: so, george, i still dont understand - how was that a setup? \n\njerry: and who were you tryin to set up, anyway? the mechanic or the manager? \n\ngeorge: i dont know. all of em. theyre all crooks! besides, i couldnt get all different candy bars, anyway. \n\ngeorge: what was that? \n\njerry: i think theres a mental hospital near here. \n\nelaine: very near. \n\nkramer: ya-hoo! ya-hoo! (rick is silent) whew! well, i think we stopped. \n\nrick: you - you can probably let go of my hand now. \n\nkramer: yeah, yeah. (getting out of the car) well, ill think about it.. \n\nrick: do you have my card? \n\nwaitress: careful, this plate is extremely hot. \n\nelaine: thank you. ow! \n\nwaitress: i just told you it was hot. why'd you touch it? \n\nelaine: i just wanted to know what your idea of 'hot' is. \n\npuddy: hey, babe. you ready to hit the ice? \n\nelaine: i am ready to skate up a-- ha, ha, ha...why are you wearing that? \n\npuddy: it's my winter coat. \n\nelaine: a fur? \n\npuddy: is there a problem? \n\nelaine: a seemingly infinite supply. \n\nelaine: ow! careful, it's hot. \n\npuddy: ow! \n\njerry: so, puddy wear's a man fur? \n\nelaine: he was struttin' around the coffee shop like stein erickson. \n\njerry: and, of course, you find fur morally reprehensible. \n\nelaine: eh, anti-fur. i mean, who has the energy anymore? this is more about hanging off the arm of an idiot. \n\ngeorge: and this is the first you're seeing of the coat? \n\nelaine: we never dated in winter. \n\njerry: you might want to get a look at that bathing suit drawer. \n\nelaine: oh, i walked by bloomingdale's the other day, and i saw that massage chair we want to get joe mayo as an apartment gift. \n\ngeorge: an apartment-warming gift? we got to give presents to people for moving? birthdays, christmas, it's enough gifts. i would like one month off. \n\njerry: kramer said it's a perfect gift. that's what we're gettin' him. \n\ngeorge: all right, but we're not buyin' it at bloomingdale's. i will buy it, you pay me back later. i'll sniff out a deal. i have a sixth sense. \n\njerry: cheapness is not a sense. \n\nelaine: i can't stand joe mayo's parties. you know, the second you walk in, he's got you workin' for him. 'hey, can you do me a favor? can you keep an eye on the ice, make sure we have enough?' uh... \n\njerry: i had a great time at the last one. i was in charge of the music. i turned that mother out. \n\nkramer: hey. \n\njerry: hey. \n\nkramer: you got any pliers? \n\njerry: what, has newman got another army man stuck in his ear? \n\nnewman: hilarious. \n\nkramer: newman and i are reversing the peepholes on our door. so you can see in. \n\nelaine: why? \n\nnewman: to prevent an ambush. \n\nkramer: yeah, so now i can peek to see if anyone is waiting to jack me with a sock full of pennies. \n\njerry: but then anyone can just look in and see you. \n\nkramer: our policy is, we're comfortable with our bodies. you know, if someone wants to help themselves to an eyefull, well, we say, 'enjoy the show.' \n\nelaine: i'm sorry i can't stay for the... second act. \n\njerry: hey, george. here's the model number on that chair, by the way. \n\nkramer: mmm... nice wallet. \n\nnewman: wallet. \n\njerry: what? \n\nkramer: nobody carries wallets anymore. i mean, they went out with powdered wigs. yeah, see here's what you need. just a couple of cards and your bankroll. see, keep the big bills on the outside. \n\njerry: that's a five. \n\nkramer: i'm on the mexican, whoa ohh, radio... \n\nsilvio: eh, what are you doing? \n\nkramer: hey, silvio. yeah, i'm reversing my peephole. \n\nsilvio: hey, you know you gotta get permission from me. i'm the super. who said you could do that? \n\nkramer: well, who says i can do any of the things i do in my place? \n\nsilvio: like what? \n\nkramer: well, i... uh, nothing. no, i'll, um, i'll switch it back. \n\nsilvio: no, no, no, no. no, that's all right. \n\nkramer: well, that's good. because, uh, newman and i-- \n\nsilvio: newman? he did this, too? \n\nkramer: well, yeah. \n\nsilvio: i deal with him. \n\ngeorge: hey, look at this. this is the same massage chair we're gettin' for joe mayo, $60 cheaper. \n\njerry: except the store's in delaware. \n\ngeorge: i'll have 'em overnight it. \n\njerry: maybe cheapness is a sense. you know it is better without this big wallet. it's more comfortable. \n\ngeorge: it doesn't matter if it's more comfortable. it's wrong. \n\njerry: why? \n\ngeorge: because important things go in a case. you got a skull for your brain, a plastic sleeve for your comb, and a wallet for your money. \n\njerry: but look at this thing. it's-it's huge. you got more cow here than here. \n\ngeorge: i need everything in there. \n\njerry: irish money? \n\ngeorge: i might go there. \n\njerry: show this card at any participating orlando-area exxon station...to get your free 'save the tiger' poster. \n\ngeorge: all right, just gimme that. and gimme some of those sweet & lows. \n\nkramer: who is it? \n\nnewman: it's newman. \n\nkramer: what do you want? i'm in the middle of something. \n\nnewman: i can't believe i'm being evicted. \n\nkramer: what? what are you talking about? \n\nnewman: the reverse peepholes. silvio said i'm an agitator and i'm out of the building. \n\nkramer: no. no, he can't do that. \n\nnewman: i'm homeless! i'm gonna be out on a street corner, dancing for nickels. i'll be with the hobos in the trainyard, eating out of a bucket. \n\nkramer: come on, we'll go and talk to him, and we'll straighten this thing out. \n\nnewman: uh, you, uh, you better put something on. \n\njerry: george, i am loving this no wallet thing. \n\ngeorge: a man carries a wallet. \n\njerry: you know, the very fact that you oppose this makes me think i'm onto something. \n\njoy mayo: hey, jerry. \n\njerry: hey, joe mayo. nice place. \n\njoy mayo: thanks. george, can you do me a favor and stay by the phone in case anybody calls and needs directions? \n\ngeorge: love to. \n\njoy mayo: thanks. jerry... \n\njerry: music? \n\njoy mayo: actually, can you keep an eye on the aquarium and make sure nobody taps on the glass? \n\njerry: but i could do that and the music. \n\njoy mayo: oh, no, don't worry about the music. just... have fun! \n\njerry: i was ready to get jiggy with it. \n\npuddy: hey. \n\njerry: hey, elaine. \n\nelaine: hey. i think you know dr... zaius. \n\njerry: so, elaine, notice anything different about my... pants? \n\nelaine: so, george... did you get the chair? \n\ngeorge: no, i don't have it yet. \n\njerry: so, we're givin' him nothing? \n\ngeorge: no, i brought a picture of the chair. \n\njerry: did you at least get him a card? \n\ngeorge: i thought we'd all sign the picture. \n\njoy mayo: elaine... \n\nelaine: hey, joe mayo. \n\njoy mayo: i need you to be in charge of coats. \n\nelaine: oh, fantastic. \n\njoy mayo: and puddy, can you make sure no one puts a drink on my...sound system? \n\npuddy: sure thing, joe mayo. \n\njerry: hi, i'm jerry. how do you like my pants? \n\nkeri: nice. \n\njerry: (talking to george) it's working. (to the girl, who's tapping on the aquarium) don't tap on the glass. \n\ngeorge: (answering the phone while walking away) joe mayo's apartment? \n\npuddy: (standing guard by the stereo as george walks by him) hey! cocktail off the speaker. \n\nelaine: goodbye, dr. zaius. \n\nsilvio: why are we in jerry's apartment? \n\nkramer: well, i, uh, i like to think of this as my conference room. yeah, it has a more formal atmosphere, you know, with the shelves, and the furniture. \n\nsilvio: make it quick kramer, my wife and i are about to go bowling. \n\nkramer: oh, well, um, newman thinks that you, uh, evicted him? \n\nsilvio: i did. i don't like mr. newman. he is an agitator. \n\nkramer: look... i've known newman all my life, in the building, and you're all wrong about him. he's a model tenant. portly, yes, but smart as a whip. \n\nsilvio: ok, on your word he can stay. \n\nkramer: all right. \n\nsilvio: but... i'm gonna keep my eye on him. \n\nkramer: well, you won't regret it. \n\nsilvio: what's wrong? \n\njoy mayo: elaine, thanks for coming. \n\nelaine: good working with you. \n\npuddy: all right, let's hit the bricks. \n\nelaine: what? \n\njoy mayo: hey, i got a coat just like this! \n\nelaine: oh. uhhh... \n\nelaine: so joe mayo had the same coat. \n\ngeorge: and you threw it out the window? \n\nelaine: mm-hmm. \n\ngeorge: god, you're like a rock star. \n\nelaine: so now joe mayo wants me to buy him a new coat. \n\njerry: because you threw it out. \n\nelaine: no, because i was in charge of the coats. it's... insane. \n\njerry: but you did actually throw his coat out the window. \n\nelaine: but he doesn't know that. as far as he knows, somebody stole it, and that's the person who should be responsible. \n\njerry: but that's you. \n\nelaine: so i guess i'll have to buy him a new coat, even though i don't think i should be held responsible, which i am anyway. \n\ngeorge: well, i'm satisfied. uh...my back is...killing me. \n\njerry: of course. because of that wallet. you-you got a filing cabinet under half of your ass. \n\ngeorge: this...is an organizer, a secretary, and a friend. \n\nelaine: look at you. you're on a slant. \n\ngeorge: here, just give me a couple of napkins. \n\ngeorge: there, there i'm fine. \n\njerry: what was that? \n\ngeorge: i think i had some hard candy in there. \n\ngeorge: no, no, this is supposed to go to joe mayo's apartment. \n\ngeorge: ahhh. how does this thing work? \n\ngeorge: ahhhhh... \n\ndelivery man: sir, do you want me to deliver this to your friend's place or not? \n\ngeorge: ahhhhh... \n\nkeri: ready to go? \n\njerry: all set. i can't believe i'm going dancing. \n\nkeri: you don't go that often? \n\njerry: no, because it's so stupid. shall we? \n\nkeri: do me a favor. can you hold this stuff for me? \n\njerry: compact, lipstick, all this? \n\nkeri: and can you help to carry my keys? \n\njerry: what are you, a medieval dungeon master? \n\nkeri: and a tin of altoids. \n\njerry: ow! sharp key. \n\nkramer: so, you're sleeping with silvio's wife? \n\nnewman: well, there's very little sleeping going on. \n\nkramer: well, why didn't you tell me about this? \n\nnewman: quite frankly, i don't see how it's any of your business. \n\nkramer: well, it's my business now. look, i stuck up for you. man, if he catches you, we're both out. \n\nnewman: hey, what is that up that tree? \n\nkramer: hoooh! man, that looks like a dead bear. \n\nnewman: no, that's a fur coat! hey, uh, give me a boost. \n\nkramer: man, where did you learn to climb trees like that? \n\nnewman: the pacific northwest. \n\nelaine: so, you had to carry some of keri's stuff. big deal. \n\njerry: you don't understand. i went on a successful pocket diet, and i want to keep that weight off. \n\nelaine: you know what? we sell this thing at peterman that would be perfect for you. \n\njerry: not more of that crap from the titanic? \n\nelaine: no. no. it's a small men's carryall. \n\njerry: i'm not carrying a purse. \n\nelaine: it's not a purse. it's european. \n\njerry: oh. \n\nelaine: hey, did george buy joe mayo that chair yet? \n\njerry: i don't know. \n\nelaine: if i'm gettin' him a new fur, i'm not chippin' in on a gift, too. \n\ngeorge: yeah? \n\njerry: hey, george, did you get joe mayo that chair yet? \n\ngeorge: not yet. oh! ho ho! god... \n\njerry: what? \n\ngeorge: it's in... transit. \n\nelaine: did he get it? \n\njerry: no. \n\nelaine: mmm, good. tell him i'm out. \n\ngeorge: (hearing elaine over the phone) what, she's out? \n\njerry: well, so what? you're gettin' a deal, right? we'll split it three ways. \n\ngeorge: allllll right! \n\njerry: what is that noise? \n\ngeorge: (hangs up the phone) that's my toaster. i got to go. ohhhhhhhhhhhhh! \n\njerry: you know, sometimes i get the feeling george isn't being completely honest with me. \n\nkramer: hey. oh, uh, yeah. uh, here are your pliers back....weak hinge. \n\nelaine: well, i guess i better go and price fur coats. \n\nkramer: oh, go down to 88th street. they're free. \n\nelaine: what are you talking about? \n\nkramer: well, they're hanging from the trees. you know, newman found one there yesterday. man, that guy can climb like a ring-tailed lemur! \n\nelaine: 88th street? that's where joe mayo lives. that's the coat! \n\njerry: what was that pop sound? \n\nkramer: well, i had some hard candy in there. \n\nnewman: so, to what do i owe this unusual invitation? \n\nelaine: come in, come in. \n\nnewman: ahh! this is very much as i imagined it to be. aside from this rattan piece, which seems oddly out of place. \n\nelaine: please, sit down. newman, um, i wanted to talk to you about something. \n\nnewman: this isn't about my opening your mail? \n\nelaine: what? \n\nnewman: because i don't, never have, anything i read was already open. \n\nelaine: uh, yeah, uh, no. newman, uh, i heard that you found a fur coat in a tree. and, i believe that it belongs to a friend of mine, and i'd like to give it back to him. \n\nnewman: sorry. climbers, keepers. \n\nelaine: you know, newmie. um, i know how you feel about me, and i have to tell you, i'm quite flattered. \n\nnewman: you are? \n\nelaine: oh, yeah. i mean, of all the men that i know, you're the only one who's held down a steady job for several years. \n\nnewman: well, it's-it's interesting work, i don't mind it. \n\nelaine: ha ha ha ha. \n\nnewman: don't you have a-a boyfriend? a, uh, burly, athletic type? \n\nelaine: uh, don't worry, he's cool. \n\nnewman: cool? \n\nelaine: very cool. so, what do you say? can you do this one little favor, newmie? \n\nnewman: oh, how i've waited for this moment. but alas, my heart belongs to another man's wife, and i have given the coat to her. \n\nelaine: all right, we're done here. \n\nnewman: for i am in love with svetlana, and i don't care if the whole world knows, except for silvio, who would throw me out of the apartment, where i would be dancing on the sidewalk-- \n\nelaine: thank you, thank you, thank you very much. \n\nkeri: nice carryall. \n\njerry: it's european. \n\nkeri: do you still have my lipstick? \n\njerry: uh, yeah, i think i do. i can never find anything in here. ah, here it is. so, that joe mayo throws the worst parties, doesn't he? so what was your job? \n\nkeri: my job was to keep you away from the music. \n\njerry: what, he doesn't like my taste in music? \n\nkeri: guess not. \n\njerry: you should've been there last year. i got jiggy with it! \n\nsilvio: kramer! it's silvio! open up, i need to talk to you! i can see you through the reverse peephole. \n\nkramer: hey, silvio! \n\nsilvio: look at this. \n\nkramer: huh? \n\nsilvio: svetlana says she find it in the laundry room, but i think it is a gift from that postman agitator. where is he? \n\nkramer: relax, silvio. \n\nsilvio: no, that's it. you're both out of the building! \n\nkramer: oh, come on! hey, newman didn't even give her that! no, that's not even a woman's coat. it's a man's! \n\nsilvio: a man's? \n\nkramer: yeah. \n\nsilvio: what kind of a man would wear fur? \n\nkramer: oh, lots of 'em. \n\nsilvio: would you? \n\nkramer: no. \n\nsilvio: then who? \n\nkramer: what about jerry? \n\nsilvio: jerry? \n\nkramer: yeah, sure, he's a celebrity. oh, yeah, they wear a lot of furs. they're desperate, insecure people. \n\nsilvio: yes, you are right. it's all about, me, me, me. please, look at me! i am so pretty! love me! want me! \n\nkramer: yeah, something like that. \n\njerry: i have to do what? \n\nkramer: all you have to do is wear the fur so silvio thinks it's yours. \n\njerry: i'm not wearing the fur. \n\nkramer: well, then, newman and i, we get thrown out of the building. \n\njerry: is that right? \n\nkramer: all right, why don't you just take a good, hard look at what your life will be like if i'm not around? \n\njerry: newman, too? \n\nkramer: oh, come on, man! well, i'll tell you what, if you do this, i'll give you that walkman you're always asking about. \n\njerry: that's my walkman! \n\nkramer: and you'll get it back. \n\njerry: all right. \n\nkramer: all right. good, thanks, i owe you one. \n\ngeorge: hey. \n\nkramer: oh, hey, and by the way, uh, that walkman was broke when you gave it to me. \n\njerry: george, did you get that chair yet? \n\ngeorge: it gets here when it gets here. would you stop ridin' me? \n\njerry: you know what? just call up and cancel it. i'm out. \n\ngeorge: excuse me? \n\njerry: joe mayo doesn't like my taste in music. he's not gettin' a gift from me. \n\ngeorge: oh, i can't believe you're dropping out, too. so now kramer and i have to pay for the entire gift? \n\nkramer: whoa, whoa. now, who's this joe mayo everyone's talking about? \n\ngeorge: he's the guy we're the buying the chair for, remember? it was your suggestion. \n\nkramer: i think the chair is a fantastic gift idea. but i never heard of this joe mayo. and frankly, it sounds made up. \n\ngeorge: oh, so now i have to buy this whole chair by myself? \n\njerry: no, you don't have to buy anything. \n\ngeorge: i already bought it! i've been lyin' to you for three days, and now you're all screwin' me! \n\njerry: i don't understand. why didn't you tell us you had it? \n\ngeorge: i needed it! my back is... a little tweaked. \n\njerry: because of your giant wallet. just get rid of it! \n\ngeorge: never! it is a part of me. i will just return the chair, and it will be easy, because the receipt is in my good friend. \n\njerry: your good friend is morbidly obese. \n\ngeorge: well, at least, i'm not carrying a purse. \n\njerry: it's not a purse. it's european! \n\nkramer: all right, silvio's down there. he's shoveling the walk. now, all you gotta do is put this on, you go down to the corner, you pick up a paper, and you come right back. \n\njerry: all right. \n\nkramer: there you go. \n\njerry: how do i look? \n\nkramer: ahh.... \n\ngeorge: learn guitar, first lesson free? huh. \n\ngeorge: my receipts! the chair! my tiger poster! \n\njerry: hey, silvio, just out for a little stroll in my favorite fur coat. \n\nsilvio: that is your coat? \n\njerry: it sure is. \n\nsilvio: kramer says you need it because you're an entertainer and you're desperate for attention. \n\njerry: that's true. \n\nkramer: jerry, you forgot your purse. \n\njerry: oh, thanks. \n\nkramer: hey, silvio, look at jerry here, prancing around in his coat with his purse. yup, he's a dandy. he's a real fancy boy. \n\njerry: maybe this isn't my coat. \n\nkramer: all right, you're not fancy! \n\nsilvio: no, he's very fancy! want me, love me! shower me with kisses! \n\nelaine: jerry, where'd you get it? that's his coat. \n\njerry: no, it's not. it's mine. i'm a fancy boy. \n\nelaine: no, that's not your coat. \n\nsilvio: if that is not his coat, whose coat is it? \n\nelaine: it's joe mayo's coat. \n\nsilvio: who's joe mayo? \n\nkramer: that must be the man that's sleeping with your wife. \n\njerry: hey! officer! someone took my european carryall! \n\ncop: your what? \n\njerry: the...black, leather...thing with a strap. \n\ncop: you mean a purse? \n\njerry: yes, a purse. i carry a purse! \n\njerry: so, silvio ambushed joe mayo? \n\nelaine: yeah, he was waitin' inside his apartment for him with a sock full of pennies. \n\njerry: he should have had a reverse peephole. \n\npuddy: hey, babe. \n\njerry: hello? hello? \n\nelaine: what is that? \n\npuddy: it's my new coat. \n\nelaine: you ditched the fur? \n\npuddy: yeah, i saw jerry wearing his. he looked like a bit of a dandy. check it out! 8-ball! you got a question, you ask the 8-ball. \n\nelaine: you're gonna wear this all the time? \n\npuddy: all signs point to 'yes!' \n\njerry: so your saying unicef is a scam? \n\nkramer: it's the perfect cover for a money laundering operation . no one can keep track of all those kids with the little orange boxes of change. \n\njerry: oh! no it's sally weaver. \n\nkramer: oh! yeah your old college roommate huh? \n\njerry: no, it's susan ross's old college roommate; she moved to new york a few years ago . she's trying to become an actress. \n\nkramer: hmmm,, dramatica comedia heh! \n\njerry: untalented, she's always inviting me to see her in some bad play in tiny room without ventilation. it's really depressing. \n\nkramer: euh.. we don't go to enough theater. \n\njerry: she should just give up. \n\njerry: heeyyy!... \n\nsally: hey there mr. too big to come to my shows. i just came back from (?) whoooooooo.....i'm on my way to an audition still waiting for that big break. \n\nkramer: why don't you just give up? \n\njerry: kramer!!! \n\nkramer: at least that's what jerry says. now face it. if it hasn't happen it's not gonna happen. all right, we go grab some bouffe . join us? \n\njerry: so......susan's dead..... \n\nkramer: i think she was happy someone finally said it. \n\njerry: why'd you have to say anything to her? \n\nkramer: 'felt that the conversation was lagging. \n\njerry: why can't you ever keep your big mouth shut? \n\nkramer: i come in here to get a pleasant meal and if we're not gonna have one i'll grab a bite to eat at your place. \n\nelaine: you know, maybe kramer is right, some people should just give up . i have. \n\njerry: what did you wanna be? \n\nelaine: i don't remember, but it certainly wasn't this. look at this cartoon in the new yorker, i don't get this. \n\njerry: i don't either. \n\nelaine: and you're on the fringe of the humor business. \n\ngeorge: hey! \n\nelaine: hey! george look at this. \n\ngeorge: that's cute. \n\nelaine: you got it? \n\ngeorge: no, never mind. \n\nelaine: come on, we're two intelligent people here. we can figure this out. now we got a dog and a cat in an office. \n\njerry: it looks like my accountant's office but there's no pets working there. \n\nelaine: the cat is saying \" i've enjoyed reading your e-mail\". \n\ngeorge: maybe it's got something to do with that 42 in the corner . \n\nelaine: it's a page number. \n\ngeorge: well, i can't crack this one. \n\nelaine: aahh! this has got to be a mistake. \n\ngeorge: try shaking it...(long pause) well,janet should be here any minute. \n\njerry: you've been hiding her from us. you must really like her? \n\ngeorge: aah! the minute i saw this girl, we just clicked. she's got such a nice face. hummmm her eyes, her mouth, nose \n\nelaine: we know what a face consists of. \n\njanet: i'm sorry i'm late. \n\ngeorge: jerry, elaine, i give you.. janet. \n\njanet: nice to meet you. \n\nelaine: hi! \n\njanet: do we still have time to make the movie? \n\ngeorge: oh! euh.. yeah we just can't go to the supermarket to get some candy. \n\nelaine: jerry, she looks exactly like you. \n\njerry: she does not. \n\nelaine: well maybe she doesn't, i don't care. \n\njerry: hey! kramer. \n\nkramer: hey! you got some messages.. yeahumm.. .george, george, elaine, george again, elaine, newman; but that was a crank call. and some sally woman called said \"thanks a lot, she's quitting the business, you ruined her life. \n\njerry: what! you're the one who ruined her life. \n\nkramer: well that's not how she remembers it. \n\njerry: well, i got to talk her out of this. \n\nkramer: i thought you said she stinks \n\njerry: she does stink and she should quit. but i don't want it to be because of me. it should be the traditional route; years of rejections and failures till she's spit out the bottom of the porn industry. \n\njerry: yeah... \n\ngeorge: hey! george and janet. \n\nkramer: aahh...who's janet? \n\njerry: george's girlfriend, elaine thinks she looks like me but i think it's as you would say,kookie talk. \n\nkramer: you know what woman i always thought you looked like; leena horne. \n\nall: hey, hey! \n\nkramer: and you must....look exactly like jerry. you don't see this; you're like twins .. wooooohhhhh!!! this is eerie. \n\ngeorge: kramer, what are you talking about...janet doesn't look anything like jerry \n\njanet: well maybe we do look a little like each other. \n\ngeorge: no..hummm, what do you know about what you look like. \n\nkramer: c'mon george relax . just because they look alike doesn't mean you're secretly in love with jerry. \n\ngeorge: (nervous) all right now we're going bye bye. \n\njanet: we just got here george \n\ngeorge: well,,, it's getting dark. \n\nkramer: yeah, she's a nice girl, kinda quiet though. \n\njerry: what are you doing? don't tell a woman she looks like a man and george doesn't want to hear his girlfriend looks like me and frankly neither do i \n\nkramer: well how should i have \"broached the subject\" \n\njerry: you don't broach, you keep your mouth shut. \n\nkramer: well sounds like someone's having a bad day. \n\njerry: yeah! because of you. \n\nkramer: well, i think one of us should leave. \n\njerry: sally, you can't quit the business. this is all because of me. \n\nsally: (nods) hehumm!! \n\njerry: you can't give up. you don't think people tell me i stink? when i'm on stage that's all i hear; you stink, you suck. we like magic. \n\nsally: really? \n\njerry: of course, i stink, you stink. it's show bizz. everybody stinks.. \n\nsally: yeah! you've been stinking since the eighties. \n\njerry: all right, i think we've covered my act. now you get out there and stink it up with everybody else. \n\nsally: right!, yesss!! thank you i'm gonna do it. (starts to eat her food) \n\njerry: now!!!!.... (she leaves in a hurry) \n\nelaine: well i've asked every one at work and nobody gets this cartoon. i mean i don't understand why no one can explain it, but i'm gonna get to the bottom of this. \n\njerry: oh! i think we're at the bottom. \n\nelaine: (to george who just came in) hey! george, janet looks very nice and she's quite a handsome woman. \n\ngeorge: what does that mean? \n\njerry: yeah. what does that mean? \n\ngeorge: (to jerry) what do you mean by that? \n\nelaine: enjoy. (she leaves) \n\njerry: elaine huh?.. she's completely.. \n\ngeorge: oh! i know....'cos you don't think janet?.. \n\njerry: no.... \n\ngeorge: why would i... \n\njerry: it's ludicrous.. \n\ngeorge: yes. \n\njerry: for either one of us.. \n\ngeorge: no... \n\njerry: so... \n\ngeorge: exactly. \n\njerry: i'm not gay. \n\ngeorge: ...neither am i. \n\nboth: kramer, kramer, get in here. \n\ngeorge: where's the crazy man, come on up. \n\njerry: come on in here. \n\ngeorge: haaaaaa!!! \n\njerry: what's happening? what, you doing, come and talk to us. \n\nkramer: i've made an important life decision. \n\njerry: lets talk about that. \n\ngeorge: don't leave (george slams the door) \n\nkramer: aw right. i know i've been shooting off at the mouth lately; first with that girl whose life you destroyed and.. emm...about george dating a lady jerry \n\ngeorge: what's the decision? \n\nkramer: i know you want me to keep my big mouth shut and that's exactly what i'm going to do. i'm never gonna talk again. \n\njerry: yeah right. \n\nkramer: what do i need to talk for.. ha!, for to blab to the neighbors about george has a new fem-jerry friend or to tell everybody at the coffee shop ho george is all mixed up in a perverse sexual amalgam of some girl and his best friend. see now, i've done all that.....now it's time for silence. \n\ngeorge: silence yes!! \n\njerry: kramer you're never gonna be able to completely stop talking. \n\nkramer: jerry, ninety four percent of communications is non-verbal. here watch. \n\njerry: well what does this mean? \n\nkramer: well it's frank and estelle's reaction of hearing george's man love towards she-jerry. \n\ngeorge: (frantic by now) shut up,shut up, shut up,...(then leaves) \n\nkramer: that's the idea. \n\njerry: kramer there's no way you stick to this. \n\nkramer: (makes a zipper gesture to his mouth) ..weeeeeepp!! \n\njerry: oh! you just startin' now? \n\nkramer: that's right......aye oooh!! ...right now. \n\nkramer: ouch!!..........now!! \n\nmr. elinoff: so, j. peterman wants to hire some of our cartoonists to illustrate your catalog? \n\nelaine: well we're hoping that if perhaps that the catalog is a little funnier,people won't be so quick to return the clothes ha ha....for example.. i..i really do....well i love this one \n\nmr. elinoff: oh! yeah... that's a rather clever jab at inter office politics don't you think. \n\nelaine: ahan, ahan....yeah...euh but, why is it that the, that the animals enjoy reading the email? \n\nmr. elinoff: well miss benes . cartoons are like gossamer and one doesn't dissect gossamer. heh..hemm.. \n\nelaine: well you don't have to dissect if you can just tell me. why this is suppose to be funny? \n\nmr. elinoff: ha! it's merely a commentary on contemporary mores. (slides the magazine to her) \n\nelaine: but, what is the comment. (she slides the magazine back to him) \n\nmr. elinoff: it's a slice of life. \n\nelaine: no it isn't. \n\nmr. elinoff: pun? \n\nelaine: i don,t think so. \n\nmr. elinoff: vorshtein? \n\nelaine: that's not a word.....you have no idea what this means do you? \n\nmr. elinoff: no. \n\nelaine: then why did you print it. \n\nmr. elinoff: i liked the kitty. \n\nelaine: (gets up) you know what? you people should be ashamed of yourself, you know ya doodle a couple of bears at a cocktail party talking about the stock market. you think you're doing comedy. \n\nmr. elinoff: actually that's not bad.. \n\nelaine: oh! really (laughs) well you know..... i have others \n\njerry: sally, i can't believe you're already doing a one-woman show? \n\nsally: no, no.. it's just a little performance piece i wrote... you know what? you really inspired me,okay, a tear. \n\njerry: ah! there you are.(kramer motions silence) \n\njerry: aw.. right, code of silence.. how's that going?....ha!!... \n\nsally: hi everybody think you're really going to like this 'cos it' about me...all right it's not just about me it's about me and this guy; jerry seinfeld. who i like to call; the devil...okay, okay so.. i run into this jerry on the street and he says to me \" sally, you stink, you should give up acting.\" oh! i'm doing jerry now so you've got imagine i have ; horns, a tail and hooks instead of feet. (big laughs from the audience and kramer is cracking up) \n\njerry: (to kramer) oh! shut up!!! \n\nelaine: she does a full hour about how you're the devil .i got to go see this thing. \n\njerry: good luck, it's sold out for the next three weeks. \n\nelaine: well i bet i can get in once i mention i'm from ...the new yorker. \n\njerry: the new yorker? \n\nelaine: yes, the new yorker, i've met with their cartoon editor and i got him to admit that that cartoon ...made no sense.... \n\njerry: wow! good work, nancy drew \n\nelaine: then we ended up going out to lunch and he had some great gossip about james thurber. \n\njerry: nodding off... \n\nelaine: ....and he said i could submit some of my own cartoons. \n\njerry: wow! that's incredible......but you don't draw. \n\nelaine: i do to. \n\njerry: what, your sad little horsies, the house with the little curl of smoke, the sunflower with the smiley face. the transparent cube... (as she leaves) \n\nelaine: it's better than your drawings of naked lois lane. \n\njerry: where did you see that? those are private!!! \n\nsally: jerry, sorry i'm late. channel nine is doing a piece on my show. isn't that great? do you hate me? \n\njerry: no,no i tought the show was terrific. i was just wondering if you have to keep saying jerry seinfeld is the devil. \n\nsally: well...that is the title. \n\njerry: i know but i thought that maybe you could mention how i apologized then encouraged you to stick with it. \n\nsally: you know i workshopped that and.. snoozers!!! he he he....but i'll tell you what i'll think... it's all a journey. \n\njerry: you got a little shmootz there (picks something on her sweater) \n\nnewman: excuse me miss weaver, oh! my god it is you! i.. i've seen your show six times.. \n\njerry: what a surprise. \n\nnewman: aahh! you're great,it's great, it's so great to see a show that's (looks at jerry) about something. \n\ndriver: where to? \n\ngeorge: (we hear him think) my friends are idiots, she doesn't look like jerry. she doesn't look like anybody. and so what if does look like jerry,what does that mean?. that i could have everything i have with jerry but because it's a woman i could also have sex with her....and that somehow that would be exactly what i always wanted.....she doesn't even look like jerry.. \n\nsally: you know i really do look like your friend jerry. \n\ngeorge: i know.... \n\ntv announcer: thanks for watching nine news. we leave you tonight with a scene from sally weavers one woman show. \n\nsally: ok so i go to meet jerry seinfeld at this horrible coffee shop right? and he's like \"hey stop doing your show.\" and i'm like, hello! it's a free country. so then he goes.\" okay shmootsie\" and he starts pulling at my sweater right?. he's getting, you know, hands across america. \n\njerry: there really was shmootz on i didn't try to grab her \n\nsally: ...and this is what he looks like when he's eating... \n\njerry: get out of my house!!. \n\nelaine: well boys, i did it. i had to stay up all night but i finally came up with a great new yorker cartoon. \n\njerry: i'd stayed up all night i'd fixed myself up a little before i'd go out. \n\nelaine: that is not the point. \n\njerry: some mouthwash, a hat, something. \n\nelaine: just read it! \n\njerry: (glances at it) pretty good. \n\nelaine: pretty good? well uh! this is a gem . kramer look it....(kramer stays silent).....what? it's funny. \n\njerry: it's a pig at a complain department. \n\nelaine: and he's saying \" i wish i was taller\" ha ha. see? that's his complaint. \n\njerry: i get it. \n\nelaine: do you!!!.. because that's not a normal complaint. \n\njerry: how 'bout if it was something like \" i can't find my receipt my place's a stye. \n\nelaine: everything with you has to be so .. jokey. \n\njerry: i'm a comedian. \n\nelaine: i wish i was taller, that's, that's, that's nice. that's real. \n\njerry: well i got a complaint. this cartoon stinks. \n\nelaine: i'll tell you who doesn't think it stinks, the new yorker. that's right. they're publishing it in their next issue. oh! you know what i just ran into newman in the hall and he said you tried to grope sally weaver. \n\njerry: oh! that's it i'm gonna put an end to this. \n\nelaine: the pig says \"my wife is a slut.\" \n\njerry: now that's a complaint. ...hello sally, yeah this is jerry,i just wanted to leave you a message that i caught your little piece on tv and.. \n\njerry: ....i'm getting a little tired of hearing how horrible i am and would appreciate it if you would leave me out of your act all together. \n\njerry: (from the back of the club, leaving) that's it i'm calling in the big guns. \n\nsally: to cease and desist on behalf of my client, jerry seinfeld. signed ; crybaby jerry seinfeld's lawyer. ok but i got two words for you jerry seinfeld...(censored beep)...you \n\njerry: how could she say that on tv?.. and how did she get a cable special . i 've never gotten a cable special.....well that's it i'm not giving her any more material. we are incommunicado. (to the silent kramer on the couch beside him) ...exactly. \n\nelaine: check it out, from the new issue of the new yorker...huh!...funny isn't it? (dugan shrugs) look at it, the pig wants to be taller and what's this guy gonna say?.. he he...nothin'..he he. \n\npeterman: elaine, i'm afraid i have incurred yet another flat tire. \n\nelaine: can i fix that after lunch sir? \n\npeterman: oh! no right away, chop, chop........oh! a new cartoon.....\"i wish i was taller (hearty laugh) i'd like to see that complaint get rectified. (more laughs and he leaves) \n\nelaine: (to dugan ) you see? you see? smart people think this is funny and you want to know why? 'cause i wrote it. \n\ndugan: you shouldn't make fun of pigs. (he leaves) \n\npeterman: (returns) flash of lightning elaine i just realized why i like this cartoon so much. \n\nelaine: oh! do tell sir? \n\npeterman: it's a ziggy! \n\nelaine: a ziggy? \n\npeterman: that irreverence, that wit i'd recognize it anywhere. some charlatan has stolen a ziggy and passed it off as his own. i can prove it. quick elaine, to my archives. \n\ngeorge: you know, you know what's great about our relationship?...it's not about looks. \n\njanet: it's not? \n\ngeorge: no, can't be...for instance i remember when we first met, we had a great conversation. \n\njanet: i remember you said i was the prettiest girl at the party. \n\ngeorge: ....but after that we really talked didn't we? \n\njanet: well,you told me how familiar i looked and that you must have seen me somewhere before. \n\ngeorge: na....no ... this relationship he..he..has got to be about something and fast or i'm in very serious and weird trouble....hum what else happened? \n\njanet: you asked for a piece of gum because you thought your breath smelled like hummus. \n\ngeorge: aw right yes! gum! good enough i'll take it. \n\njanet: i like gum. \n\ngeorge: i do too. you see that's what we're about . you don't remind me of anyone and we love gum. \n\njanet: i have gum in my hair. \n\ngeorge: i'm losin' it \n\nsally: (joining kramer) hey! your jerry's friend. you're goofy, mind if i sit. my show is going really well. have you seen it yet? you should. everybody else have and you know what? i got recognized the other day, how weird is that. i know . at first i liked the attention but it's like whoa!! take three steps back, get a life, okay. but then there wouldn't be a sally weaver without the fans, know what i mean. but who am i? anyway. i mean there's sally weaver the woman, sally weaver the artist, sally weaver the person... \n\nkramer: (loudly) now you gotta shut up!.....(sally is speechless)...i'm sorry, i..i haven't spoken in days. \n\nsally: well, lay it on me string bean. \n\njanet: let me get this gum out of my hair and then i'll be ready for bed. \n\ngeorge: ok look, the gum isn't cutting it for me. we need to be about something else...anything..please. \n\njanet: george. \n\ngeorge: your hair? \n\njanet: well i had to cut the gum out and i had a little trouble getting it even. so why don't you get undressed george. (george speeds out the door) \n\ngeorge: george is in big trouble.... \n\njerry: you ripped off a ziggy? \n\nelaine: it must've seeped up my subconscious, puddy has ziggy bed sheets....d'you read the comics today? \n\njerry: i see that ziggy's back at the complaint department.. \"the new yorker is stealing my ideas.\" ha ha ha see that's funny.....'cause it's real. \n\nelaine: hey look it ;sally's cable show's on (kramer turns around to leave) \n\njerry: hey! kramer come on in. you've got to watch this, now she's got nothing. \n\nsally: (on tv) master of evil jerry seinfeld has broke off all contacts with me. \n\njerry: that's right sister. why don't you just give up? \n\nelaine: why are you yelling at the tv? \n\nsally: ..ok get this; i heard he makes his best friend date women that look just like him.hello issues.. \n\njerry: elaine, have you been talking to her? \n\nelaine: hey! i'm just a fan..ha ha... \n\nsally: oh and speaking of issues . guess who got a no-polish manicure and begged his neighbor not to tell anyone? \n\njerry: (to kramer) i thought you stopped talking?? \n\nkramer: ...all right ..starting now...... \n\njerry: you broke up with her just because she cut her hair! how short? \n\ngeorge: like that (looking at jerry) \n\njerry: you mean like.. (points to his hair) \n\ngeorge: ..that. \n\njerry: so she.. \n\ngeorge: yes.. \n\njerry: and you don't... \n\ngeorge: nooo... \n\njerry: so... \n\ngeorge: exactly.. \n\njerry: hmmmm... \n\ngeorge: we...must never ever speak of this again.. \n\njerry: no, no......(long pause . they stare at the walls) hey uh.. you want to see a movie? \n\ngeorge: actually i think i'm gonna take a few days off (starts to leave) \n\njerry: i think that's for the best. \n\ngeorge: (clears throat) maura, i, uh- i want you to know... i-i've given this a lot of thought. i'm sorry, but... we, uh, we have to break up. \n\nmaura: no. (sips her drink) \n\ngeorge: (double takes) what's that? \n\nmaura: we're not breaking up. (takes another sip) \n\ngeorge: (puzzled) w-we're not? \n\nmaura: no. (hands george his cup) \n\ngeorge: all right (he smiles weakly at maura) \n\njerry: she said no? \n\ngeorge: she said no. \n\njerry: what did you do? \n\ngeorge: what could i do?! we fooled around and went to a movie! \n\njerry: george, both parties don't have to consent to a break-up. it's not like you're launching missiles from a submarine and you both have to turn your keys. obviously, you didn't make a convincing case. let me hear your arguments. \n\ngeorge: well, i don't really like her. \n\njerry: that's good. \n\ngeorge: i don't find her attractive. \n\njerry: solid. \n\ngeorge: i'd like to sleep with a lot of other women. \n\njerry: always popular. \n\ngeorge: sometimes at restaurants she talks to her food 'ooh, mr. mashed potatoes, you are sooo goood.' \n\njerry: you have an airtight case! \n\ngeorge: and in bed-- \n\njerry: i'm afraid we're out of time. \n\njerry: hey. \n\ngeorge: what? \n\njerry: check these out. these are jerry lewis' old cufflinks that he actually wore in the movie \"cinderfella\". i got 'em at an auction. \n\ngeorge: i got some cufflinks i could've loaned you. \n\njerry: no, jerry lewis is gonna be at this friar's club roast i'm goin' to next week. now i have an in to strike up a conversation with him. \n\ngeorge: you already have an in. you have the same first name!... (no reaction) 'jerry'! \n\njerry: oh, that'll intrigue him. \n\ngeorge: well, it worked when i met george peppard last week. \n\njerry: george peppard has been dead for years. \n\ngeorge: well, whoever he was, he knew a lot about the a-team! \n\nglenn: so you would choose your last meal based on the method of execution? \n\nelaine: right, right. i mean, if i was getting the chair, i'd go for something... hot and spicy, you know... thai, maybe mexican. lethal injection, feels like pasta... you know, painless, don't want anything too heavy... \n\nglenn: so, um, why don't we get together some time? \n\nelaine: oh, sure! why don't you give me your number? \n\nglenn: i think it'd be better if i called you. \n\nelaine: oh. ok. maybe we could grab some lunch sometime. d-do you work around here or-? \n\nglenn: mm mm... no, not really. \n\nelaine: so, is there anything you can tell me about yourself? \n\nglenn: (seductive tone) i think you're very beautiful. \n\nelaine: (flattered) oh (laughs) that'll do! (laughs some more) \n\njerry: what about puddy? \n\nelaine: i haven't talked to him in, like, three weeks... i think it might be over... \n\njerry: (unimpressed) so, what's this guy about? \n\nelaine: i don't know. he wouldn't tell me his phone number, where he worked... i'll bet he's in a relationship. \n\njerry: or he's a crime fighter safeguarding his secret identity! elaine, you could be dating the green lantern! \n\nelaine: which one is he? \n\njerry: green suit, power ring. \n\nelaine: i don't care for jewellery on men (wags her finger disapprovingly) \n\nkramer: hey. it happened again. (puts box on counter) another robbery in the building. \n\njerry: so you bought a cooler? \n\nkramer: no, it's a strongbox to protect my irreplaceables. \n\nelaine: and... what would those be? \n\nkramer: some taxidermy that's been in my family for generations, my tony, my... military discharge. \n\njerry: (doubtful) you were in the army? \n\nkramer: y- b-briefly. now, i gotta find a good place to hide this key. because if somebody finds this, they hold the key to all my possessions. (makes a clicking sound) \n\nelaine: literally. \n\nkramer: (offended) 'literally'? what's that supposed to mean? (then to jerry, before elaine can answer) you mind if i hide this somewhere? \n\njerry: no, go ahead. \n\nkramer: (stuttering gibberish, gestures that they should leave) a little... privacy, uh? \n\njerry: oh, come on! \n\nelaine: oh! \n\nkramer: come on, jerry, this is a security issue! (elaine laughs) boy, you wouldn't last a day in the army. \n\njerry: (walking towards door with elaine) how long did you last? (opens door) \n\nkramer: well, that's classified. \n\nelaine: hey, what if he's married? \n\njerry: kramer?! \n\nelaine: no, the green lantern. \n\nkramer: (from inside) ok! \n\njerry: so, you would date a married guy? that's so hacky. \n\nelaine: well, i don't know. i may never marry. it might be the closest i get. \n\nkramer: (bangs arm of couch in frustration) you peeked! \n\njerry: this is your hiding place?! (elaine laughs) \n\nkramer: it was under a spoon! \n\ngeorge: and so, for all these reasons, we are officially broken up. (shuts book and reaches for door) thank you, (opens door) and good night. \n\nmaura: no, george, we're not. \n\ngeorge: (gestures towards book) but i proved it! \n\nmaura: i refuse to give up on this relationship. it's like... launching missiles from a submarine. both of us have to turn our keys. \n\ngeorge: well, then, i am gonna have to ask you to turn your key. \n\nmaura: (assertive) i'm sorry, george, i can't do that. \n\ngeorge: (shouting) turn your key, maura. turn your key! \n\nelaine: so, how is a guy like you not involved? \n\nglenn: i might ask you the same thing. \n\nelaine: (in her mind) that's true, maybe he's not married. \n\nelaine: oh, that is so sweet. \n\nelaine: (in her mind, cynical) how long do i have to hold this? \n\nglenn: (seeing a woman on the street) oh, no. \n\nelaine: who is it? \n\nglenn: um, uh, no one, no one. (running with elaine into an alley) here, uh, let me show you a short cut. come on. come on. \n\nelaine: (in her mind) married. that's it, i'm chucking the flower. (she does) \n\nelaine: (shouting up) jerry! jerry! \n\njerry: elaine, what are you doin' down there? \n\nelaine: you didn't hear me buzzing? \n\njerry: oh, i guess it's broken! \n\nelaine: throw down your key. \n\njerry: it's liable to bounce and go into a sewer. \n\nelaine: i'll catch it! \n\njerry: you'll chicken out at the last second. \n\nelaine: ...yeah, you're right. well, will you at least keep me company until somebody comes out? \n\njerry: (annoyed) all right. (after a pause) hey, you know what's weird? \n\nelaine: huh? \n\njerry: i used to be able to have a huge meal and go right to sleep. but i can't anymore. \n\nelaine: nodding off!... well, i was right. he's an adulterer. and he's cheating on his wife with me! \n\njerry: all right. \n\njerry: here! i'm gonna try and fix the buzzer. \n\nelaine: (from the street) it went in the sewer! (jerry reacts) \n\njerry: hey... \n\nkramer: (re buzzer box) what are you doin'? \n\njerry: (waving the key) you jammed your key in here? you shorted out my intercom! \n\nkramer: (grabbing the key) you just had to go lookin' for it, didn't you? see, you hate it that i have a little secret. anything i do -- oooh, oooh! -- you gotta know all about it. you're so obsessed with me. \n\njerry: i'm gonna go let elaine in. (kramer reaches out to stop him leaving) \n\nkramer: oo, y- what are you doing with her? (jerry ignores him and exits) \n\njerry: (in the hallway, hearing the door lock behind him, turns back) kramer! \n\nkramer: (from inside) security issue! \n\njerry: oh, hey. you got in. \n\nelaine: yeah, flirted with the menu guy. here. (hands him a large stack of papers) \n\njerry: (taking the menus) oh, thanks. \n\nkramer: (clattering inside) that wasn't me! \n\njerry: so, he's definitely married, huh? \n\nelaine: uh... \n\njerry: boy, i would love to have been there when you told him off. \n\njerry: oh, come on! \n\nelaine: well, he could be a superhero! you should've seen him run. \n\nkramer: (from inside jerry's apartment) ok! (door opens) \n\nkramer: all right, jerry. let's see if you can get it in your head that this is not an easter egg hunt for your childish amusement. (shuts door) \n\ngeorge: (from the street below jerry's window) jerry! \n\njerry: (out of window) george, the buzzer's broken! i'll come down! \n\njerry: (putting on his coat to go downstairs, he finds the key in his coat pocket) i believe this belongs to you. \n\nkramer: heyyyy! (bangs the table in frustration and grabs the key) \n\njerry: (opens the door for george) where did you get that? \n\ngeorge: (puzzled) i bought it. (enters lobby) \n\nphil: (walking up to get inside after george) thanks. \n\njerry: (barring the way) i'm sorry. i-i don't know you. \n\nphil: what? \n\njerry: there's been some robberies in the building. i-i can't let you in. \n\nphil: but, i live here! i ran out to buy some birdseed, and-and i forgot my key. \n\ngeorge: sounds like a scam. (takes a bite from the granola bar) \n\njerry: (shakes his head) i'm very sorry. (closing the door on phil. jerry smiles and shrugs apologetically as phil stares at them through the glass) \n\ngeorge: so, i broke up with maura. it's done. i'm out. \n\njerry: great, you're lonely and miserable again. (presses button to call elevator) \n\ngeorge: feels right. (cheerfully takes another bite) \n\njerry: is that guy still there? (they are side-on to phil who is in the background, still pressed against the glass, aghast) \n\ngeorge: (looking at the door) he's starin' at us. \n\njerry: don't look at him. (phil starts to knock on the door) \n\njerry: we don't hear that. (they enter the elevator) \n\ngeorge: want a bite? \n\njerry: nooo, i don't. (the elevator doors shut) \n\ngeorge: (in his mind) i think that ginger ale at the coffee shop is just coke and sprite mixed together. how can i prove it? ah! can't, dammit. (knock at door. george goes to open it) \n\nmaura: (cheerily) hey, honey. (she sweeps in, shuts the door behind her, and sits down) \n\ngeorge: (still by the door) what? m-maura, what are you doin' here? i ended this relationship... twice! \n\nmaura: george, you didn't mean that. that was just a fight. \n\ngeorge: why does it always seem like i'm the only one working at this break-up? \n\nmaura: george, i listened to your arguments, and they were rambling and flimsy. i'm not convinced. come on, get dressed and let's get some dinner. \n\ngeorge: (pauses to consider this then gives in) all right. (starts heading towards bedroom) \n\nmaura: (picking up the apple) eww, mr. apple. you have a brown spot. (george freezes, shakes his head, and continues walking) \n\nelaine: so, this is your little... love nest? (laughs) \n\nglenn: it's nothing special, just a little place i keep. \n\nelaine: oh. \n\nglenn: ah, should i light a fire? \n\nelaine: oh, that sounds... romantic. \n\nglenn: i'm having a little problem with the heat. um, i got some cardboard out here. (climbing through the window) \n\nelaine: (in her mind, anguished) this is wrong. i should go. (there's a knock at the door) \n\nglenn: (leaning in) can you get that, please? \n\nelaine: oh, sure. \n\nwoman: where's glenn? \n\nelaine: (guiltily) ah... you're the woman from the street, and i am so sorry. you know, i'm not really a home-wrecker. i-i-i-i-i thought he was a superhero. i swear. \n\nwoman: lady, i'm not his wife, i'm his welfare caseworker. is he home? \n\nelaine: this is his home? \n\nwoman: yes. \n\nelaine: so, he's... \n\nwoman: (nodding) poor. (elaine mouths 'oo') \n\nglenn: (coming back through the window carrying an old chair) i think this will burn! \n\njerry: so you do live here. \n\nphil: (sulkily) yeah. (jerry has an anguished expression as the elevator doors shut) \n\njerry: you live on this floor? \n\nphil: yeah. \n\njerry: (arriving at apartment, sees phil start to open his apartment door, only one door down from kramer's) so you live right... there. \n\nphil: yeah. (enters his apartment) \n\njerry: so i guess i'll s-- \n\nelaine: he wouldn't give me his number because he doesn't have a phone. (unwrapping a lollipop) he's not married. he's poor. (puts lollipop in her mouth) \n\njerry: is he wretchedly poor? does he wear one of those barrels with the straps? \n\nelaine: he probably busted it up and burned it for heat. \n\njerry: so, when are you giving boxcar willie his walking papers? \n\nelaine: how can i end it over money? i feel bad. \n\njerry: well, let's think. have you ever dealt with the poor in any other situation? \n\nelaine: yes. there was this homeless guy who used to urinate on our garbage cans. \n\njerry: good. how did you handle that? \n\nelaine: well, we gave him a few bucks, and... now he goes in the alley across the street. \n\njerry: same situation. pay him off, and you're clean. \n\nelaine: well, i am not paying glenn off to get out of this relationship. wh-what am i supposed to do, just walk into his hovel, and hand him... well, how much do you think it would be? \n\ngeorge: (entering monk's) hey. \n\njerry: hey, where have you been? \n\ngeorge: (sitting down next to jerry) seeing maura. apparently, i was unable to break up beyond a reasonable doubt. \n\nelaine: if only he could have been cheating on his wife, you know, things would have been so much simpler. \n\ngeorge: who's this, blue arrow? \n\nelaine: green lantern. \n\njerry: we found out his super power was lack of money. \n\nelaine: (not amused) all right. \n\njerry: he's invulnerable to creditors. \n\nelaine: (annoyed) we get it. (george is laughing) \n\njerry: he's the got-no-green lantern. \n\nelaine: thank you. (gets up from her seat) \n\ngeorge: hey, elaine. maybe his girlfriend is lois loan. \n\nelaine: (leaning over to george) ooh, (fake laugh) well crafted. (exits) \n\ngeorge: hey, maybe this cheating thing is what i could use to ditch maura. \n\njerry: sure, just tell maura you're having an affair. \n\ngeorge: she's like a district attorney. if it's not the truth, i'll break under the cross. i actually have to do it. \n\njerry: (fidgets like he has no room with george next to him)... could you move over there?! \n\ngeorge: hey, you know, there's this secretary at work that always had a crush on me. \n\njerry: really? how come you never pursued her before? \n\ngeorge: she's too tanned. it's the middle of the winter, she's like a carrot. \n\nelaine: (coming back into monk's) did i leave my glasses here? \n\njerry: (to elaine, still joking) he can wipe out his checking account in a single bounce! \n\nelaine: (leaving again) keep 'em! (george and jerry savour the joke) \n\nkramer: heh. \n\njerry: there's a giant parrot in the hallway. \n\nkramer: it's phil's. \n\njerry: who? \n\nkramer: our neighbor that you... turned against. (jerry reacts) anyway, i told him it'd be fine with us if he wanted to let it stretch its wings out in the hallway. \n\njerry: what'd ya tell him that for? \n\nkramer: because since you've been playing god with the front door, i've been tryin' to smooth things out, jerry. in fact, i was just hanging out at his place. \n\njerry: really? what's it like? is it nicer than mine? where does he have the couch? \n\nkramer: well, i don't know, but the key problem is solved. i hid it at phil's... \n\njerry: he let you? \n\nkramer: no, he doesn't know. see, i hid it without tellin' him. so, uh, (starts walking towards door) phil won't be compulsively looking for it like some people... you! (points at jerry) \n\ngeorge: so, you... you say you've been in the city all winter? \n\nloretta: i was in maine for a couple days. (george looks puzzled at how she's so tanned) \n\ngeorge: well... (shuts door) heeere we are (puts down his coat and chuckles) \n\nloretta: george, i've always fantasized about jumping into bed with you. \n\ngeorge: (excited) ho ho! (gestures and steps towards bedroom but loretta walks the other way to the couch) \n\nloretta: but... i don't want to spoil things by sleeping with you too soon. \n\ngeorge: (walking back) are you sure? 'cause it could really help me out of a jam. \n\nloretta: i want to build something with you, george. \n\ngeorge: oh, not more building. \n\nloretta: (sighs) and i won't take no for an answer. (she sits down) \n\ngeorge: no? \n\nloretta: no. \n\ngeorge: (after hesitating, resignedly) all right. (he sits down and smiles unconvincingly at her) \n\nelaine: so, uh, what are we doing in this alley, anyway? \n\nglenn: it's a surprise. \n\nelaine: (giggling) oh. \n\nelaine: what are you doing? what is that? \n\nglenn: it's a bag of donuts. \n\nelaine: it's garbage. \n\nglenn: no, no, no, no. when they make the new ones, the old ones come out... right here. \n\nelaine: (has had enough) all right, that's it. (rummaging in purse, pulls out her chequebook) how do you spell your last name? \n\nglenn: (still looking through the garbage bag) it's a bear claw! you have no idea how rare this is. \n\nelaine: (writing out cheque) i'll make it out to cash. how 'bout two hundred bucks? two-fifty? \n\nglenn: (eating the bear claw) oooh! \n\nelaine: make it three hundred. \n\nglenn: (re the bear claw) you know, elaine, you're the bear claw in the garbage bag of my life. (breaks bear claw in half and offers her a piece) \n\nelaine: (touched, she takes it) aw, glenn. \n\njerry: hi. is phil here? \n\nphil: (from inside the apartment) yeah, i'm here. (comes to the door. the caged parrot is visible in the background) \n\njerry: phil... hi. i-i know we got off to kind of a bad start. but your bird, which is lovely... by the way, made a mess on my door. \n\nphil: and? \n\njerry: i thought maybe you'd clean it up, or your maid, there. \n\nphil: that's my wife. \n\njerry: (nodding awkwardly for a moment) all right, i think we're done here. (jerry leaves and phil shuts the door darkly) \n\njerry: (in a tuxedo) so, you're in a relationship with a woman you don't like, and you're having an affair with a woman that won't have sex with you. \n\ngeorge: this isn't going well. \n\njerry: i cannot find my jerry lewis cufflinks. without 'em, i have no in! \n\ngeorge: you don't need the cufflinks! you have the same name! (no reaction) 'jerry'! (heads for door, grabbing his coat) \n\njerry: where are you goin'? help me look! \n\ngeorge: (opening door) it's a big night. i'm, uh, ice skating with one, and going to a staged reading of \"godspell\" with the other. \n\njerry: which is with who? \n\ngeorge: (shaking his head, weary) it doesn't matter. (he leaves) \n\nkramer: (entering jerry's apartment, in his own tuxedo) whoo! boy. yeah, you clean up nice. \n\njerry: i can't go until i find my cufflinks. \n\nkramer: yeah, see? i knew you would lose 'em. that's why i took 'em out of your dresser drawer and put 'em in my strongbox. \n\njerry: you're a lifesaver. would you get them, please? \n\nkramer: yeah, we'll stop by phil's, we'll pick up the key, uh? \n\nkramer: hey, what's going on? \n\nphil: fredo is dead. (his wife sobs) \n\njerry: that strange portuguese guy that lives next-door to the incinerator? \n\nphil: no! my bird. we just got back from the pet cemetery. (starts opening door) \n\njerry: oh, phil... mrs. phil. i'm so sorry. \n\nphil: oh, i'll bet you are! they told us he was poisoned! something in his food. \n\njerry: but i, i didn't, i-- \n\njerry: kramer, they think i killed fredo! (kramer gestures sympathetically) and who buries a bird? \n\nkramer: yeah. just give it to the portuguese guy, and he... puts it in the incinerator. \n\njerry: just get the key and let's get out of here. \n\nkramer: yeah, yeah. (goes to phil's door) you know, it's a... it's a funny thing about that bird dying. i hid the key in fredo's food dish. whoo! that's a weeeird coincidence. \n\njerry: kramer!? (grabbing kramer's arm roughly, pulling him back as he's about to knock) \n\nkramer: what? \n\njerry: you killed fredo! \n\nkramer: (high-pitched) well, fredo was weak and stupid! he shouldn't have eaten that key! \n\njerry: kramer, i need those cufflinks, but now they're in the box, and the key is in the bird... what are we gonna do? \n\nkramer: you just answered your own question. \n\njerry: (frowning in realization) oh, no! \n\nkramer: (nodding) i'll get the shovel. (walks towards his apartment, as jerry grimaces at the prospect) \n\ngeorge: the, uh, actor that played jesus made some odd choices. \n\nloretta: (shaking head, confused) what? \n\ngeorge: i mean, uh... i had fun ice skating. \n\nloretta: oh. (she smiles, reassured, and nods) \n\nmaura: george? \n\ngeorge: maura. (starts acting dramatically, looking from maura to loretta and back again) oh, my god! what are you doing here?! \n\nmaura: you told me to meet you here for lunch. \n\ngeorge: (standing up, still acting) uhh! i'm caught in my own web of lies! (holds his hands up in surrender) \n\nmaura: (calmly ignoring george) i'm maura. (shaking loretta's hand and smiling) \n\nloretta: (to maura, also friendly) i'm loretta. you want to join us? (maura nods and sits down next to her) \n\ngeorge: (laughs hysterically, gesticulating wildly) this is all blowing up in my face! my serious girlfriend, and my torrid love affair have accidentally crossed paths. i have ruined three lives... (grabbing coat) well, i understand if you never want to see me again, so... (points towards door) \n\nmaura: george, what we have is too important. we can work through this. \n\nloretta: so can we. \n\ngeorge: (astounded) what? so, this is still not over? \n\nmaura: no. \n\ngeorge: you? \n\nloretta: no. \n\ngeorge: all right. (throws his coat back down on the seat and sits down opposite them) \n\nglenn: elaine, wow, a tv, a stereo? \n\nelaine: yeah, and i got you a cord of wood, so you won't have to burn 'em. \n\nglenn: oh, my god, alison. you're home early. \n\nelaine: who is this? \n\nalison: (arms crossed, angry) his wife. \n\nelaine: you're... poor and married? \n\nglenn: looks like it. \n\nalison: who the hell are you? \n\nelaine: i guess i'm... lois loan. \n\njerry: kramer, i can't believe we're grave robbers. \n\nkramer: (reading a tombstone) 'man's best friend'. jerry, i want something like that on my tombstone. \n\njerry: (seeing fredo's tombstone) oh, my god. here he is. i don't want to dig him up! (hands the shovel to kramer) \n\nkramer: (sighs) all right, then you're the one getting the key out of him. \n\njerry: (grimaces and takes the shovel back) i'll dig. \n\nkramer: listen, i heard that lassie #3 is buried around here. i'm gonna go check it out. \n\njerry: (hitting metal with the first strike of the shovel) well, that was easy. \n\nphil: all right, honey, one last look, then you have to let fredo rest in peace. \n\njerry: (with a wild expression) hey, kramer! i dug fredo up, now let's cut him open! \n\nphil: (horrified) oh, my god! \n\njerry: (after a very awkward pause, cheerily) hey, neighbor. \n\ngeorge: all right. i'm gonna try givin' them fifty-five dollars each... (to elaine) what do you think? \n\nelaine: give me forty, you'll never see me again. \n\nelaine: (to jerry) so, what are you gonna do? are you gonna live here, or are you gonna move out, or what? \n\njerry: (still in tuxedo, tie undone) ah, i'll just take the fire escape to get in and out of the building. \n\ngeorge: so, what's in the cooler? (flips open the lid) \n\nkramer: oh. well, would you look at that. (puts a gun-shaped hand to his head and goes 'pop') i guess i forgot to lock it. \n\njerry: you mean it was open? we desecrated a pet cemetery for nothing? \n\nkramer: well, this is one for the books, huh, jerry?... reeeally one for the books! \n\ngeorge: when are they gonna learn that any news about china is an instant page-turner? (seeing jerry with a small black device) what's that? \n\njerry: it's a wizard electronic organizer for my dad. i'm goin' to florida for his birthday. \n\ngeorge: how much was it? \n\njerry: two hundred. but i'll tell him it's fifty. he doesn't care about the gift. he gets excited about the deal. \n\ngeorge: where are you gettin' a wizard for fifty dollars? \n\njerry: ah, i'll tell him i got it on the street, and maybe it's hot. that's his favorite. \n\ngeorge: i got a message from the rosses at work today. \n\njerry: susan's parents? when's the last time you talked to them? \n\ngeorge: at the funeral, give or take. you know, deep down, i always kinda felt that they blamed me for susan's death. \n\njerry: why, because you picked out the poision envelopes? that's silly. \n\nelaine: (entering monk's with her boyfriend) oh, um... darryl. these are... people i know. jerry, george. \n\ndarryl: nice meeting you. ah, i gotta run, elaine. i'll see you later. \n\nelaine: ok. \n\njerry: still no puddy? \n\nelaine: uh, i think his answering machine's broken, so i just gave up. well, what do you think? \n\njerry: what? about you datin' a black guy? what's the big deal? \n\nelaine: what black guy? \n\njerry: darryl. he's black, isn't he? \n\nelaine: he is? \n\ngeorge: no, he isn't. \n\njerry: isn't he, elaine? \n\nelaine: you think? \n\ngeorge: i thought he looked irish. \n\njerry: what's his last name? \n\nelaine: nelson. \n\ngeorge: that's not irish. \n\njerry: i think he's black. \n\ngeorge: should we be talkin' about this? \n\nelaine: i think it's ok. \n\ngeorge: no, it isn't. \n\njerry: why not? \n\ngeorge: well, it would be ok if darryl was here. \n\njerry: if he's black. \n\nelaine: is he black? \n\njerry: does it matter? \n\nelaine: no, course not. i mean, i'd just like to know. \n\njerry: oh, so you need to know? \n\nelaine: no, i don't need to know. i just think it would be nice if i knew. \n\nwaitress: should i take that? \n\njerry: (getting out his wallet) uh, one second. \n\nelaine: (looking in her purse) oh, here. \n\ngeorge: (pulling out some money) uh, yeah. hang on. just... yeah. \n\ngeorge: (on the phone) uh, mrs. ross? it's-it's george. \n\nmrs. ross: uh, who? \n\ngeorge: george costanza. susan's, uh, friend? long time no speak. \n\nmr. ross: (walking by mrs. ross) we're all out of lime juice. i told that woman to buy more. \n\nmrs. ross: uh, george, the susan ross foundation is having an event this weekend. \n\ngeorge: oh, i just, uh, leased a house out in the hamptons, and i have got to get out there this weekend and sign the papers. \n\nmr. ross: (again walking by) i'm goin' back to bed. \n\nmrs. ross: thank you for calling, george. \n\ngeorge: oh, sure. i mean, after all, you were almost my, uh... ok, i gotta go. \n\njerry: house in the hamptons? \n\ngeorge: well, you know, i've been lyin' about my income for a few years. i figured i could afford a fake house in the hamptons. \n\nkramer: (enters) well. \n\njerry: hey. \n\nkramer: well, grab a cigar, boys. yeah. it's time to celebrate. \n\njerry: wow. what are we celebrating? \n\nkramer: uh, you remember my coffee table book? \n\njerry: with the little legs? \n\nkramer: that's the one. a big hollywood so-and-so optioned it for a movie. \n\ngeorge: how are they gonna make that book into a movie? \n\nkramer: you remember that photo book on toy ray guns? \n\ngeorge: yeah? \n\nkramer: independence day? \n\ngeorge: oh. \n\njerry: how much are they payin' you? \n\nkramer: let's just say that i don't have to worry about working for a while. a long while. \n\njerry: that's funny because i haven't seen you working for a while. a long while. \n\nkramer: yeah, and you're not going to, because i'm hanging it up. boys, i'm retiring. \n\njerry: from what? \n\nkramer: from the grind. i mean, who needs it? i mean, i've accomplished everything i've set out to do. \n\njerry: (seeing that kramer has a new watch) what's that? \n\nkramer: oh, i bought myself a little retirement gift. gold watch. \n\njerry & george: ooh! \n\nkramer: well, it's not really gold. \n\njerry & george: aww. \n\nelaine: (as darryl opens his door) hey. \n\ndarryl: hey. \n\nelaine: great music. \n\ndarryl: oh, it's my neighbor. they blast that stuff twenty four hours a day. i hate it. \n\ndarryl: yo, you! turn it down! \n\nelaine: oh, wow, these are nice. do they have any cultural significance? \n\ndarryl: they're... african. \n\nelaine: right. african. \n\ndarryl: well, not africa, actually. south africa. \n\nelaine: south africa. \n\ndarryl: my family used to live there, but, uh, we got out years ago, for obvious reasons. you know how it is. \n\nelaine: maybe. \n\ngeorge: (to a street vender selling hot dogs) you must hate hot dogs, huh? or else, you, uh, you really like 'em and that's why you, you do this. \n\ngeorge: i'll tell ya, if i had one of these things, i'd be eatin' hot dogs all the time. \n\nvender: are you gonna buy a hot dog or not? \n\ngeorge: mmm... no. \n\nmorty: (jerry comes out of his room, having just woken up) rise and shine, sleepy head! ha ha! \n\njerry: it's 530 in the morning! \n\nhelen: we let you sleep in. \n\njerry: (handing his dad a gift) well, as long as i'm up. dad, i got you a birthday present. here. happy birthday. \n\nmorty: aw, jerry. i should be buyin' you presents. \n\njerry: what does that mean? \n\nhelen: leave your father alone. it's his birthday. \n\nmorty: oooh! heh heh! it's a radar detector. \n\njerry: radar detector? i've never seen you go over twenty miles an hour. you're like the grand marshall of the rose bowl parade. it's a wizard organizer. \n\nmorty: this looks like too much money. \n\njerry: nah, i got it from a guy on the street. it was, like, fifty bucks. \n\nmorty: you think it's hot? \n\njerry: could be. \n\nmorty: attaboy! helen, jerry got me a hot wizard computer! \n\nhelen: i'm right here. \n\njerry: and you can do everything with it. you can get e-mail, fax, there's a calculator. \n\nmorty: so, i can use it in the restaurant to figure out the tip? \n\njerry: yeah, i guess. but the really cool thing is the daily planner. \n\nmorty: helen, we got into restaurants and figure out the tips. \n\nhelen: jerry, you're getting your father too excited. \n\nkramer: (entering the condo, and going to the fridge as if he's a neighbor) hey, buddy. when'd you get here? \n\njerry: kramer, what are you doing here? \n\nkramer: i told you i was retiring. i moved in next door. \n\nhelen: mr. kornstein died, and it's a beautiful apartment. \n\nkramer: yeah, your, uh, folks said it was for rent, so i jumped on it. \n\njerry: kramer, you can't live down here. this is where people come to die. \n\njerry: (getting looks from his parents) not you. older people. \n\nhelen: don't eat cookies for breakfast! i'll fix you something. how 'bout a feta cheese omelette? \n\nkramer: mmmm, that sounds great, mom. \n\njerry: if you feed him, he'll never leave. \n\nhelen: we don't have any feta. how about cottage cheese and egg beaters? \n\nkramer: (immaturely) i guess. \n\njerry: i can't believe this. \n\nkramer: i know, i know. don't i look more relaxed? \n\nelaine: so, george, do you have any thoughts on this darryl situation? \n\ngeorge: actually, i did have a thought. \n\nelaine: oh. \n\ngeorge: why don't you just ask him? \n\nelaine: (rudely and giving him a 'duh' look) because, if i ask him, then it's like i really want to know. \n\ngeorge: maybe he's, um... mixed. \n\nelaine: is that the right word? \n\ngeorge: i really don't think we're supposed to be talkin' about this. \n\nelaine: yeah. \n\ngeorge: (standing up) i'm just gonna go to the bathroom. \n\nelaine: (starting to leave) you know what, i'm leavin'. \n\ngeorge: yeah. \n\nelaine: i'll just talk to jerry when he gets back. (seeing the rosses entering monk's) oh. mrs. ross, mr. ross. \n\nmrs. ross: oh, you're george's friend. \n\nmr. ross: we saw him in the city this weekend. uh, what happened to his place in the hamptons? \n\nelaine: (laughing uproariously) the hamptons? george costanza? i, uh... i don't think so. have a good one. \n\ngeorge: rosses. \n\nmr. ross: george, we were just talking about you. \n\ngeorge: well, sorry i missed that, uh, charity thing. but this was one of those truly glorious hampton weekends that you always hear about. \n\nmrs. ross: really? \n\ngeorge: yeah, i may move out there. (getting 'yeah, right' glances from the rosses) i mean it, i'll do it! ok, i'll see ya later. keep it real! \n\nmorty: (eating lunch with helen and jerry) another fine meal, and now for my wizard tip calculator. \n\njerry: dad, it's got lots of other functions. \n\nmorty: don't worry. i'll get to the other functions. (trying to open it) i can't get it open. \n\nhelen: yay! jerry got it open. \n\nmorty: the service was slow. and god forbid they should refill the water. how does 12.4% sound? \n\njerry: (looking at the wizard) well, your tip is four dollars and thirty-six point six six six six cents. \n\nmorty: we'll round down. \n\nhelen: jerry, it was so nice of you to come down here on your father's birthday. you've helped take his mind off the condo elections. \n\njerry: oh, right. you can't run for condo president because you were impeached at the other condo. \n\nmorty: i was never impeached! i resigned! \n\nhelen: even so, the press would bury him! \n\njerry: what press? \n\nhelen: the condo newsletter, the boca breeze. \n\nmorty: pinko commie rag. \n\nold man: (coming up to the three seinfelds) hey, morty. your boy here, he just got a date with that young aquacise instructor. \n\njerry: she's fifty. \n\nold man: you know what he's got? he's got charisma. that's my man. \n\nkramer: all right, i'll see you guys. \n\nold man: yeah. \n\nkramer: yeah. \n\nkramer: (taping morty's glasses) morty, what're you lookin' at? \n\nmorty: i'll tell you what i'm looking at the next condo president of del boca vista, phase three. \n\nkramer: hmm. \n\ndarryl: elaine, thank you for the wizard! \n\ndarryl: wow, it's got so many functions. \n\nelaine: yeah, yeah. forget about all that. first thing is first. warranty information. name, we know that. uh, hobbies. skiing, racquetball... \n\ndarryl: well, i don't do that stuff. \n\nelaine: it doesn't matter, it doesn't matter, it doesn't matter. um. oh, here's one race. \n\ndarryl: isn't that optional? \n\nelaine: it certainly should be. it's nobody's damn business! but they really would like to know. \n\ndarryl: all right, i'm... asian. \n\nelaine: what? \n\ndarryl: just to mess with 'em. \n\nelaine: laughing awkwardly oh. right. good one. \n\ndarryl: average income, uh... over a hundred thousand. \n\nelaine: really? \n\ndarryl: does that matter? \n\nelaine: no, but... it is very nice to know. \n\njerry: (in his parent's condo, on the phone with elaine) so did you figure out darryl's... you know. \n\nelaine: (in jerry's apartment) ah, i've given up. so, now we're going to a bunch of spanish restaurants. i figure that'll cover us either way. \n\njerry: (as kramer walks by) you're a master of race relations. \n\nelaine: hey, so kramer's running for president of the condo? \n\njerry: yeah, it's all my father's doing. \n\njerry: he wants to install kramer in a puppet regime and then wield power from behind the scenes. preferably from the sauna in the clubhouse. \n\nelaine: oh, heh heh heh. who are they running against? \n\njerry: common sense and a guy in a wheelchair. \n\ngeorge: (entering jerry's apartment) jerry? \n\nelaine: (to george) he's still down with his folks. \n\ngeorge: (to elaine) what are you doin' here? \n\njerry: (overhearing the other two elaine, elaine-- \n\nelaine: (to george) i'm gettin' his mail. \n\njerry: (overhearing the other two) oh, no. \n\ngeorge: (to elaine) he asked you to get the mail? \n\nelaine: (to george) mm-hmm. \n\ngeorge: (taking the phone from elaine) jerry, why is elaine getting your mail? \n\njerry: george, listen to me. i have a very important job for you. i want you to come by twice a day and flush the toilet so the gaskets don't dry out and leak. \n\nelaine: (trying to understand what they're talking about) what? \n\ngeorge: what about the mail? \n\njerry: this is far more important. you must exercise the gaskets, george. \n\ngeorge: (hanging up) all right, jerry. i'll do it. see ya. \n\ngeorge: so, i ran into the rosses again. \n\nelaine: oh, right, at the coffee shop. where did they get the idea that you have a place in the hamptons? \n\ngeorge: from me. \n\nelaine: what did you say? \n\ngeorge: i told them i have a place in the hamptons. what did you say? \n\nelaine: i told them you didn't. and i laughed and i laughed. \n\ngeorge: so, they knew? those liars! \n\nelaine: but you lied first. \n\ngeorge: yeah, but they let me go on and on all about the hamptons, they never said a thing! you don't let somebody lie when they know you're lying. you call them a liar! \n\nelaine: like you're a liar! \n\ngeorge: yes. thank you! is that so hard? \n\nelaine: so, this is over, not over? i'm bettin', not over. \n\ngeorge: hmm-hmm, not by a long shot. i'm calling up the rosses and inviting them up to my non-existent place in the hamptons. then we'll see who blinks first. \n\nelaine: haven't you done enough to these people? \n\ngeorge: this is not about them. now, if you'll excuse me, i have to exercise jerry's gaskets. \n\nkramer: (to a room) vote for kramer. (to a man walking by) cosmo kramer. i'm running for condo president. i'd like your vote. thanks. (to an old woman) remember, ma'am, a vote for me, is a vote for kramer. \n\nold woman: will you cut my meat? \n\nkramer: gladly. \n\nwaitress: (to darryl) coffee? \n\ndarryl: sure. \n\nwaitress: (to darryl) are you black? or should i bring some cream. \n\ndarryl: i'm black. (re-thinking) oh, you know what? bring a little cream. (seeing a couple gesturing towards him and elaine) did you hear that? \n\nelaine: what? \n\ndarryl: god, there are still people who have trouble with an interracial couple. \n\nelaine: interracial? us? \n\ndarryl: isn't that unbelievable!? \n\nelaine: yes, it's awful! they're upset because we're an interracial couple. that is racism! \n\ndarryl: i don't feel like eating. \n\nelaine: me neither. well, maybe this turkey club. \n\ngeorge: so... here i am. ready to take you to the hamptons. \n\nmrs. ross: sounds grand. \n\ngeorge: do you have your bathing suits? \n\nmr. ross: it's march. \n\ngeorge: speak now, or we are headed to the hamptons. it's a two-hour drive. once you get in that car, we are going all the way... to the hamptons. all right, you wanna get nuts? come on. let's get nuts! \n\njerry: (in his parent's condo, to his father, who's in another room) hey, dad. you know you can program this thing to beep every time you need to take a vitamin. (as kramer comes walking out in a retirement-like athletic sweatsuit) dad, you look so different. \n\nkramer: oh, no. we're campaigning, jerry. to rule the people, one... must walk among them. \n\nmorty: (coming into the hall) this is the home stretch. tomorrow's the election! \n\nkramer: right. yeah. the polls close after dinner, three o'clock. but then when we win, the celebration goes all night until the break of eight p.m. \n\njerry: you know, you can put that whole schedule right in your daily planner. \n\nmorty: daily what? \n\nhelen: (coming into the condo) have you read today's boca breeze? \n\nkramer: (looking at the newsletter) hey, look at that. picture of me, huh? (reading out loud) candidate cosmo kramer caught barefoot in clubhouse. \n\nmorty: barefoot in the clubhouse? don't you realize this is against the rules. \n\nkramer: well, i couldn't find my shoes. \n\njerry: kramer, these people work and wait their whole lives to move down here, sit in the heat, pretend it's not hot, and enforce these rules. \n\nhelen: who wants hot chocolate? \n\nkramer: oh, yeah! me. \n\nmorty: this is a huge scandal! we need damage control. \n\nkramer: all right, look. people seem to like those tip calculators, huh? \n\njerry: wizards! \n\nkramer: yeah, well, how 'bout if we give one out to every member on the condo board. \n\njerry: kramer... \n\nmorty: there are twenty people on the board. thank god you can get that deal. \n\nkramer: payoffs. now we're playin' politics. all right, what do we next, morty, huh? wiretaps, slush funds? \n\nmorty: (rushing to his bedroom) first, i need a nap. \n\nhelen: (running after him) oh, i'll get your electric blanket! \n\njerry: kramer, i can't get that many wizards. \n\nkramer: well, what about your deal, huh? \n\njerry: i didn't have a deal! they're two hundred dollars a pop. what do i do? \n\nkramer: well, don't worry about it. i know a guy. \n\njerry: down here? \n\nkramer: yeah, bob saccamano's father. \n\nmrs. ross: tell us more. \n\ngeorge: you want to hear more? the master bedroom opens into the solarium. \n\nmr. ross: another solarium? \n\ngeorge: yes, two solariums. quite a find. and i have horses, too? \n\nmr. ross: what are their names? \n\ngeorge: snoopy and prickly pete. should i keep driving? \n\nmrs. ross: oh, look, an antique stand. pull over. we'll buy you a housewarming gift. \n\ngeorge: (chuckling to himself) housewarming gift. (swerving the car to go to the antique stand) all right, we're taking it up a notch! \n\nwaitress: (handing elaine a menu) here you go. \n\nelaine: (to the black waitress) long day? \n\nwaitress: yeah, i just worked a triple shift. \n\nelaine: i hear ya, sister. \n\nwaitress: sister? \n\nelaine: (as darryl comes into monk's) yeah. it's ok. my boyfriend's black. here he is. see? \n\ndarryl: hi, elaine. \n\nelaine: hey. \n\nwaitress: he's black? \n\nelaine: yeah. \n\ndarryl: i'm black? \n\nelaine: aren't you? \n\nwaitress: (leaving) i'll give you a couple minutes to decide. \n\ndarryl: what are you talking about? \n\nelaine: you're black. you said we were an interracial couple. \n\ndarryl: we are. because you're hispanic. \n\nelaine: i am? \n\ndarryl: aren't you? \n\nelaine: no. why would you think that? \n\ndarryl: your name's benes, your hair, and you kept taking me to those spanish restaurants. \n\nelaine: that's because i thought you were black. \n\ndarryl: why would you take me to a spanish restaurant because i'm black? \n\nelaine: i don't think we should be talking about this. \n\ndarryl: so, what are you? \n\nelaine: i'm white. \n\ndarryl: so, we're just a couple of white people? \n\nelaine: i guess. \n\ndarryl: oh. \n\nelaine: yeah. so do you want to go to the gap? \n\ndarryl: (leaving with elaine) sure. \n\nkramer: (having lunch with jerry and his parents) oh, well... i handed out all the wizards. polls close in one hour. whoo hoo hoo! i think we've got this baby all sewn up, huh? oh, uh, there was an extra one. norman burgerman, he won't be leavin' any tips where he is. \n\njerry: aw. \n\nmorty: congratulations, mr. president. \n\nkramer: congratulations, mr. puppet master. \n\nold man: hey, morty, what's wrong with these tip calculators? \n\nmorty: what are you talking about? \n\nold man: it's overtipping. i just left five bucks for a blt. \n\nmorty: this isn't a wizard, it's a willard. \n\njerry: a willard? saccamano, sr. screwed me! \n\nold man #2: mine doesn't have a seven! \n\nold man #3: i'm ruined! \n\nmorty: jerry, why didn't you get them wizards? \n\njerry: because a real wizard's two hundred dollars. \n\nmorty: you didn't have a deal? \n\njerry: no deal. not hot. \n\nold man: morty, you, and kramer, you're finished. \n\nkramer: what? \n\nold man: everyone vote for the guy in the wheelchair. \n\nkramer: (getting up to leave) well, the people have spoken. well, that's it for me. i'm, i'm headin' back to new york. \n\njerry: dad, i'm sorry. \n\nmorty: you should be! how could you spend two hundred dollars on a tip calculator?! \n\njerry: it does other things! \n\nmr. ross: where are we, george? \n\ngeorge: almost there. \n\nmr. ross: well, this is the end of long island. where's your house? \n\ngeorge: we, uh, we go on foot from here. \n\nmr. ross: all right. \n\ngeorge: there's no house! it's a lie! there's no solarium. there's no prickly pete. there's no other solarium. \n\nmr. ross: we know. \n\ngeorge: then, why? why did you make me drive all the way out here? why didn't you say something? why? why? why? \n\nmrs. ross: we don't like you, george. \n\nmr. ross: and we always blamed you for what happened to susan. \n\ngeorge: oh. \n\nmr. ross: all right! let's head back. \n\npuddy: alright, be careful with the car, babe. \n\nelaine: yeah, yeah. \n\npuddy: and don't move the seat, i got it right where i like it. \n\nelaine: goodbye? \n\npuddy: two and ten, babe. \n\nelaine: okay. \n\npuddy: don't peel out. \n\nelaine: i won't. \n\n(elaine peels out and turns on the car stereo. she hears: \"jesus is one, jesus is all, jesus picks me up when i fall...\" elaine changes the stations but all of the presets are set to religious radio stations; \"and he said unto abraham...\", \"amen! amen!\", \"so we pray...\", \"saved!\", \"jey-sus!\" she turns off the radio.) \n\nelaine: jesus? \n\nkruger: according to our latest quarterly thing,kruger industrial smoothing is heading into the red. or the black, or whatever the bad one is. any thoughts? \n\ngeorge: well, i know when i'm a little strapped, i sometimes drop off my rent check having forgotten to sign it. that could buy us some time. \n\nkruger: works for me. good thinking, george. \n\nco-worker #1: alright, george. \n\nco-worker #2: way to go man. \n\ngeorge: or we don't even send the check and then when they call, we pretend we're the cleaning service. heh heh. \"hello? i sorry, no here kruger.\" \n\nkruger: are you done? silly voices, c'mon people, let's get real. \n\nco-worker #1: good one. \n\nco-worker #2: that was bad. \n\ngeorge: i had 'em, jerry. they loved me. \n\njerry: and then? \n\ngeorge: i lost them. i can usually come up with one good comment during a meeting but by the end it's buried under a pile of gaffs and bad puns. \n\njerry: showmanship, george. when you hit that high note, you say goodnight and walk off. \n\ngeorge: i can't just leave. \n\njerry: that's the way they do it in vegas. \n\ngeorge: you never played vegas. \n\njerry: i hear things. \n\nelaine: here's one. i borrowed puddy's car and all the presets on his radio were christian rock stations. \n\ngeorge: i like christian rock. it's very positive. it's not like those real musicians who think they're so cool and hip. \n\nelaine: so, you think that puddy actually believes in something? \n\njerry: it's a used car, he probably never changed the presets. \n\nelaine: yes, he is lazy. \n\njerry: plus he probably doesn't even know how to program the buttons. \n\nelaine: yes, he is dumb. \n\njerry: so you prefer dumb and lazy to religious? \n\nelaine: dumb and lazy, i understand. \n\ngeorge: tell you how you could check. \n\nelaine: how? \n\ngeorge: reprogram all the buttons, see if he changes them back. you know? the old switcheroo. \n\njerry: no, no, the old switcheroo is you poison your drink then you switch it with the other person's. \n\ngeorge: no, it's doing the same thing to someone that they did to you. \n\njerry: yeah, elaine's gonna do the same thing to puddy's radio that the radio did to her. \n\ngeorge: well that's the gist of it! \n\nelaine: quiet! so where is this sophie? \n\njerry: oh, she's picking me up in a few minutes. \n\nelaine: how long have you two been together? \n\njerry: i dunno. since the last one. oh, here she is. you wanna meet her? \n\nelaine & george: nah. \n\ngeorge: by the way, how did puddy get back in the picture? \n\nelaine: i needed to move a bureau. \n\nkramer: hey jerry, you got any pepper? \n\nmickey: hey jerry. \n\njerry: hey mickey. check the pepper shaker. \n\nkramer: yeah. (inhales some pepper then sneezes violently) see? it should sound like that, something like that. \n\nmickey: aah-choo. \n\nkramer: a little wetter. see, i didn't believe it. \n\njerry: what's with the fake sneezing? \n\nkramer: yeah, we're going down to mt. sinai hospital, see they hire actors to help the students practice diagnosing. \n\nmickey: they assign you a specific disease and you act out the symptoms. it's an easy gig. \n\njerry: do medical schools actually do this? \n\nkramer: well the better ones. alright, let's practice retching. \n\nkramer & mickey: huaahhh!! \n\njerry: i think the phone is ringing. \n\nkramer & mickey: huaahhh!! \n\njerry: would you hold it a second?! thank you, will you get out of here with that stuff? \n\nkramer: mickey, dts. \n\njerry: hello? \n\nsophie: hey. it's me. \n\njerry: elaine? \n\nsophie: no, it's me. \n\njerry: george?? \n\nsophie: jerry, it's sophie. i can't believe you don't recognize my voice. \n\njerry: oh, i knew it was you, i was joking. i'm a comedian. \n\nkramer: you got any ipecac? \n\njerry: ipecac? kramer, i really think you guys are going too far with this. \n\nkramer: no, mickey, he swallowed twelve aspirin. \n\njerry: did he overdose? \n\nkramer: no, it's just too much. \n\nkruger: ...and it gets worse. the team working on the statue in lafayette square kind of over-smoothed it. they ground the head down to about the size of a softball, and that spells trouble. \n\ngeorge: alright, well why don't we smooth the head down to nothing, stick a pumpkin under its arm and change the nameplate to ichabod crane? \n\ngeorge: (getting up and leaving) alright! that's it for me. goodnight everybody. \n\ndr. wexler: in your packet you will find the disease you have been assigned and the symptoms you will need to exhibit. \n\nmickey: bacterial meningitis. jackpot! \n\nkramer: gonorrhea? you wanna trade? \n\nmickey: sorry buddy, this is the \"hamlet\" of diseases. severe pain, nausea, delusions, it's got everything. \n\nman: sure. \n\nkramer: okay, what do you got? \n\nman: the surgeon left a sponge inside me. \n\nkramer: good luck with that. \n\ngeorge: i knew i had hit my high note so i thanked the crowd and i was gone. \n\njerry: what did you do the rest of the day? \n\ngeorge: i saw \"titanic\". so that old woman, she's just a liar, right? \n\njerry: and a bit of a tramp if you ask me. \n\nelaine: hello boys. \n\ngeorge: hey, so, did you give that radio the old switcheroo? \n\nelaine: i did. \n\ngeorge: and the christian rock? \n\nelaine: ressurected! and look what i pried off of his bumper, a jesus fish! \n\ngeorge: jerry, do you have any fishsticks? \n\njerry: no. so you're disappointed he's a spiritual person? \n\nelaine: well yeah, i got him because he seemed so one-dimensional, i feel misled. \n\ngeorge: i think it's neat. you don't hear that much about god anymore. \n\njerry: i hear things. hey, so sophie gave me the \"it's me\" on the phone today. \n\nelaine: \"it's me?\" isn't it a little premature? \n\njerry: i thought so. \n\nelaine: hah. she's not a \"me\". i'm a \"me\". \n\ngeorge: i'm against all \"it's me\"s. so self-absorbed and egotistical, it's like those hip musicians with their complicated shoes! \n\nkramer: well, i got gonorrhea. \n\nelaine: that seems about right. \n\nkramer: that's what they gave me. \n\ngeorge: they? the government? \n\njerry: no, no. he's pretending he's got gonorrhea so med students can diagnose it. \n\nkramer: and it's a waste of my talent. it's just a little burning. mickey, he got bacterial meningitis. \n\ngeorge: i guess there are no small diseases, only small actors. \n\ngeorge: (leaving) alright that's it for me. good night everybody. \n\nelaine: what was that? \n\njerry: showmanship, george is trying to get out on a high note. \n\nkramer: see, showmanship. maybe that's what my gonorrhea is missing. \n\njerry: yes! step into that spotlight and belt that gonorrhea out to the back row. \n\nkramer: yes, yes i will! i'm gonna make people feel my gonorrhea, and feel the gonorrhea themselves. \n\nstudent #1: and are you experiencing any discomfort? \n\nkramer: just a little burning during urination. \n\nstudent #1: okay, any other pain? \n\nkramer: the haunting memories of lost love. may i? (signals to mickey) lights? (mickey turns down the lights and kramer lights a cigar) our eyes met across the crowded hat store. i, a customer, and she a coquettish haberdasher. oh, i pursued and she withdrew, then she pursued and i withdrew, and so we danced. i burned for her, much like the burning during urination that i would experience soon afterwards. \n\nstudent #1: gonorrhea?! \n\nkramer: gonorrhea! \n\njerry: one message. hope it's not from you. \n\nanswering machine: \"hey jerry, it's me. call me back.\" \n\njerry: sophie. \n\ngeorge: she's still doing that? \n\njerry: yep. \n\ngeorge: alright, i'll tell you what you do. you call her back and give her the \"it's me\", heh? pull the old switcheroo. \n\njerry: i think that's a \"what's good for the goose is good for the gander\". \n\ngeorge: what the hell is a gander, anyway? \n\njerry: (picking up the phone and dialing) it's a goose that's had the old switcheroo pulled on it. hi sophie, it's me. \n\nsophie: hey raef. \n\njerry: (to george) she thinks it's someone named raef. \n\ngeorge: good, let her think it. \n\njerry: (into the phone, with a disguised voice) so, what's going on? \n\nsophie: not a lot. \n\ngeorge: ask about you, ask about you. \n\njerry: so, uh, how are things with jerry? \n\nsophie: oh, i really like him but, well, i still haven't told him the tractor story. \n\njerry: right, right, the tractor story. \n\nsophie: are you sick, raef? you sound kinda funny. \n\njerry: i sound funny? \n\ngeorge: abort! abort! \n\njerry: yeah i better get to a doctor, bye. (hangs up) that was close! what drives me to take chances like that? \n\ngeorge: that was very real. \n\njerry: she said there's some tractor story that she hasn't told me about. \n\ngeorge: woah, back it up, back it up. beep, beep, beep. tractor story? \n\njerry: beep, beep, beep? what are you doing? \n\nelaine: so where do you wanna eat? \n\npuddy: feels like an arby's night. \n\nelaine: arby's. beef and cheese and do you believe in god? \n\npuddy: yes. \n\nelaine: oh. so, you're pretty religious? \n\npuddy: that's right. \n\nelaine: so is it a problem that i'm not really religious? \n\npuddy: not for me. \n\nelaine: why not? \n\npuddy: i'm not the one going to hell. \n\ngeorge: you know what i think? i bet she stole a tractor. \n\njerry: no one's stealing a tractor, it's a five-mile-an-hour getaway. we're dancing around the obvious, it's gotta be disfigurement. \n\ngeorge: does she walk around holding a pen she never seems to need? \n\njerry: no, she looks completely normal. \n\ngeorge: oh. okay, here it is, i got it. she lost her thumbs in a tractor accident and they grafted her big toes on. they do it every day. \n\njerry: you think she's got toes for thumbs? \n\ngeorge: how's her handshake? a little firm, isn't it? maybe a little too firm? \n\njerry: i don't know. \n\ngeorge: hands a little smelly? \n\njerry: why do i seek your counsel? \n\nelaine: well i'm going to hell. \n\njerry: that seems about right. \n\nelaine: according to puddy. \n\njerry: hey, have you heard the one about the guy in hell with the coffee and the doughtnuts and-- \n\nelaine: i'm not in the mood. \n\ngeorge: (to a passing waitress) i'll have some coffee and a doughnut. \n\njerry: what do you care? you don't believe in hell. \n\nelaine: i know, but he does. \n\njerry: so it's more of a relationship problem than the final destination of your soul. \n\nelaine: well, relationships are very important to me. \n\njerry: maybe you can strike one up with the prince of darkness as you burn for all eternity. \n\ngeorge: (to the waitress bringing his doughnut) and a slice of devil's food cake. \n\ngeorge: hey. where is everyone? \n\nkruger: they're all off the project. they were boring. george, you are my main man. \n\ngeorge: i am? \n\nkruger: i don't know what it is, i can't put my finger on it, but lately you have just seemed 'on'. and you always leave me wanting more. \n\ngeorge: this is a huge project involving lots of numbers and papers and folders. \n\nkruger: ah, i'm not too worried about it. let's get started. \n\ngeorge: okay. \n\nkruger: george? check it out. (he begins to spin around in his chair) three times around, no feet. \n\ngeorge: and? \n\nkruger: all me. \n\ndr. wexler: alright, and here are you ailments for this week. by the way, mr. kramer, you were excellent. \n\nkramer: oh, thank you. \n\nmickey: cirrhosis of the liver with jaundice! alright i get to wear make-up! what did you get? \n\nkramer: gonorrhea? excuse me, i think there's been a mistake, see, i had gonorrhea last week. \n\ndr. wexler: oh, it's no mistake. we loved what you did with it. \n\nkramer: i don't believe this, i'm being typecast. \n\nsophie: i move my knight... here. check. \n\njerry: they should update these pieces, nobody rides horses anymore. maybe they should change it to a tractor. \n\nsophie: jerry, are you embarrassed that you're losing? \n\njerry: losing? you know, yesterday i lost control of my car, almost bought the farm. \n\nsophie: bought the farm? \n\njerry: tractor! \n\nsophie: this is an odd side of you, jerry. i feel uncomfortable. \n\njerry: wait, don't go. let's thumb wrestle. \n\ngeorge: a scar? \n\njerry: a big long scar where her leg would dangle when she's riding a...? \n\ngeorge: a tractor. \n\njerry: i'm sure she's a little self-conscious and doesn't like to talk about it. \n\ngeorge: i don't see why's she more self-conscious about that than her toe thumbs. \n\njerry: she doesn't have toe thumbs. \n\ngeorge: well, if she keeps horsing around with that tractor-- \n\njerry: alright. so how's the two-man operation at kruger? \n\ngeorge: two-man? it's all me. kruger doesn't do anything; disappears for hours at a time, gives me fake excuses. this afternoon i found him with sleep creases on his face. the only reason i got out to get a bite today was that he finally promised to buckle down and do some actual work. (turning around, george sees mr. kruger at a booth eating a piece of cake) oh, i don't believe this. this is what i have to put up with, jerry. (he walks over) mr. kruger? who said he was going to do some actual work today? who? \n\nkruger: i'm not too worried about it. \n\ngeorge: well i am. couldn't you try to go through some of that stuff i put in your shoebox? \n\nkruger: alright, alright i'm going. \n\ngeorge: (to jerry) huh-ho! have you ever seen anything like this? \n\njerry: never. \n\npuddy: elaine, they forgot to deliver your paper today. why don't you just grab that one. \n\nelaine: 'cause that belongs to mr. potato guy, that's his. \n\npuddy: c'mon, get it. \n\nelaine: well if you want it, you get it. \n\npuddy: sorry, thou shalt not steal. \n\nelaine: oh, but it's ok for me? \n\npuddy: what do you care, you know where you're going. \n\nelaine: alright, that is it! i can't live like this. \n\npuddy: nah. \n\nelaine: c'mon. \n\npuddy: alright, what did i do? \n\nelaine: david, i'm going to hell! the worst place in the world! with devils and those caves and the ragged clothing! and the heat! my god, the heat! i mean, what do you think about all that? \n\npuddy: gonna be rough. \n\nelaine: uh, you should be trying to save me! \n\npuddy: don't boss me! this is why you're going to hell. \n\nelaine: i am not going to hell and if you think i'm going to hell, you should care that i'm going to hell even though i am not. \n\npuddy: you stole my jesus fish, didn't you? \n\nelaine: yeah, that's right! \n\nmickey: oh, my liver! why did i drink all those years? why did i look for love in a bottle? \n\ndr. wexler: mr. kramer? you're up. \n\nmickey: wait a minute. you are doing gonorrhea, aren't you? \n\nkramer: well, we'll see. \n\nstudent #2: so, what seems to be bothering you today, mr. kramer? \n\nkramer: (pulling a liquor bottle from his jacket pocket) well, i guess it started about twenty years ago when i got back from viet nam, and this was the only friend i had left. \n\nmickey: hey! that's my cirrhosis! he's stealing my cirrhosis! (he jumps kramer) you wanna be sick? i'll make you sick. \n\nstudent #2: cirrhosis of the liver and pcp addiction? \n\nfather curtis: let me see if i understand this. you're concerned that he isn't concerned that you're going to hell. and you feel that she's too bossy. \n\nelaine & puddy: yeah, that's right. \n\nfather curtis: well, oftentimes in cases of inter-faith marriages, couples have difficulty-- \n\nfather curtis: you aren't? \n\npuddy: no. \n\nelaine: we're just, you know, having a good time. \n\nfather curtis: oh, well then it's simple. you're both going to hell. \n\npuddy: no way, this is bogus, man! \n\nelaine: well, thank you father. \n\nfather curtis: oh, did you hear the one about the new guy in hell who's talkng to the devil by the coffee machine? \n\npuddy: i'm really not in the mood, i'm going to hell. \n\nelaine: oh, lighten up. it'll only feel like an eternity. \n\nsophie: you know, jerry, there's this thing that i haven't told you about. see, there was this tractor and, oh boy, this is really difficult. \n\njerry: sophie, it's me. i know about the tractor story and i'm fine with it. \n\nsophie: how could you know? \n\njerry: (putting his finger to sophie's lips, then to his own, then back to sopie's) shh. shh. shh. it's not important. what's important is i'm not gonna let a little thing like that ruin what could be a very long-term and meaningful relationship. \n\nkramer: ...i didn't say that, no. \n\nmickey: you gave me gonorrhea, you didn't even tell me! \n\nkramer: well, i'm sorry. i gave you gonorrhea because i thought you'd have fun with it. \n\njerry: hey, hey! i'm with someone. \n\nkramer: oh. hello. \n\nsophie: no, i understand. this could be a tough thing to deal with. the important thing is that you have a partner who's supportive. \n\nkramer: (to mickey) you know? she's right. \n\nsophie: unfortunately, i didn't have a partner. i got gonorrhea from a tractor. \n\njerry: you got gonorrhea from a tractor?? and you call *that* your tractor story?? \n\nkramer: you can't get it from that. \n\nsophie: but i did. my boyfriend said i got gonorrhea from riding the tractor in my bathing suit. \n\njerry: (walking out) alright, that's it for me. you've been great. goodnight everybody. \n\ngeorge: would you mind helping me out with some of this stuff?!? \n\nkruger: you seem like you've got a pretty good handle on it. \n\ngeorge: no! i don't! don't you even care? this is your company! it's your name on the outside of the building! speaking of which, the 'r' fell off and all it says now is k-uger! \n\nkruger: k-uger, that sounds like one of those old-time car horns, huh? k-uger! k-uger! \n\ngeorge: huh-ho! oh! you are too much, mr. kruger! too much! \n\nkruger: (getting up to leave) thank you george, you've been great. that's it for me. \n\ngeorge: oh no, you're not going out on a high note with me mr. kruger! \n\nkruger: it's k-uger! \n\ngeorge: no! no! \n\nkruger: goodnight everybody! \n\ndedication: in memory of our friend, lloyd bridges. \n\n[setting: bookstore] \n\ngeorge: i read somewhere that this brentano's is the place to meet girls in new york. \n\njerry: first it was the health club, then the supermarket, now the bookstore. they could put it anywhere they want, no one's meetin' anybody. \n\nkramer: jerry, look at all these pagodas, huh? i gotta get over to hong kong before it all goes back to china.. \n\njerry: (sarcastic) you better hurry. \n\ngeorge: i'm gonna hit the head. \n\nkramer: oh, boy, look at this. hong kong's outlawed the rickshaw. see, i always thought those would be perfect for new york. \n\njerry: (sarcastic) yes. the city needs more slow-moving wicker vehicles. \n\nkramer: hmm, elaine's been to hong kong. i should give her a call. \n\njerry: she's at that annual peterman party tonight. you know the one she danced at last year? \n\nkramer: (remembering) no, that wasn't dancing. \n\njerry: (pointing) hey, there's leo. \n\nkramer: oh? who's leo? \n\njerry: uncle leo. \n\nkramer: oh, yeah. right. uncle, leo. forgot his first name.. \n\njerry: did i just see that?! \n\nkramer: (to jerry) well, that ougta keep you busy for a few days, huh? \n\n[setting: the annual peterman party] \n\nwalter: (joking around with her) so, elaine.. are you going to dance this year? \n\nelaine: maybe.. all over your face! \n\nwaiter: if you do dance, the cooks want to know - so they can be brought out of the kitchen. they missed it last year. \n\npeterman: my friends, a toast. as the wolly-haired melanasians of papua, new guinea once said, (makes a series of clicking and popping sounds. the music starts up) all right! who's dancing? (no one makes a gesture that they intend to dance) no one? alright, i'll just have to get things started. (grabs a female employee, and starts dancing with her. the crowd is impressed) \n\nzach: hi, i'm zach. \n\nelaine: hi, i'm miserable. (they both laugh) \n\n[setting: bookstore] \n\nmanager: excuse me, sir. what are you doing? \n\ngeorge: (acting innocent) i'm all set. \n\nmanager: (pointing) did you take that book with you into the bathroom? \n\ngeorge: (not sure what the answer should be) what do you want to hear? \n\n[setting: the coffee shop] \n\ngeorge: they made me buy it.. a hundred bucks this thing cost me. (gesturing to the book) how dare they?! i got news for you, if it wasn't for the toilet, there would be no books. \n\njerry: (sarcastic) yeah. i understand guttenberg used to spend a lot of time in there. \n\ngeorge: they're selling coffee, bran muffins.. you're surrounded by reading material. it's entrapment! \n\njerry: (reading the cover of the book george was forced to buy) 'french impressionist paintings'? \n\ngeorge: i find the soothing pastorial images very conduc- \n\njerry: (cutting him off) thank you very much. \n\ngeorge: well, i'm gonna go back there later and return it when there's different people working.. you want to catch a movie? \n\njerry: i can't. i'm meeting uncle leo. i saw him shoplifting at the bookstore. \n\ngeorge: (praising leo's stealing) alright, leo! stickin' it to the man! \n\njerry: sleeping in the caragain? \n\nelaine: cocktail flu. \n\njerry: (remembering) oh, right. the big party.. \n\ngeorge: you, uh, didn't dance again, did you? \n\nelaine: (angered) no, i found a better way to humiliate myself. there was this guy, and we had a few too many.. \n\ngeorge: you went home with him? \n\nelaine: worse. we made out at the table like our plane was going down! \n\njerry: (rubbing it in) ah, the drunken make-out. an office classic. did you end up xeroxing anything? \n\nelaine: (gives jerry a look) do you know how embarrassing this is to someone in my position? \n\njerry: (confused) what's your position? \n\nelaine: i am an associate. \n\ngeorge: hey, me too. \n\nwaitress: yeah, me too. \n\nelaine: oh god. why did i do this? now i'm the office skank. \n\ngeorge: well, unless you tell everybody you're dating. \n\nelaine: (liking the idea) ohh.. right. cause if we're dating, what everyone saw was just a beautiful moment between two lovers. \n\njerry: (jokingly rubbing it in) as opposed to a spirited bout of skanko-roman wrestling. \n\nelaine: (sarcastic) oh, bravo. \n\n[setting: jerry's apartment] \n\njerry: (sarcastic) oh, hey. can i fix you fellas some drinks and sandwiches? \n\nkramer: (taking his offer seriously) no, we've already eaten. \n\nnewman: (gesturing to dishes and silverware on the table) but you can clear some of this stuff out of the way. \n\nkramer: jerry, check this out. (pointing at some papers on the table) remember my idea about rickshaws in new youk? well, we're gonna make it happen! \n\njerry: (jokingly trying to be skeptical) no, you're not. \n\nkramer: newman, he knows a guy in the hong kong post office.. \n\njerry: (still skeptical) no, he doesn't. \n\nnewman: he's shipping us a rickshaw. it can't miss! \n\njerry: yes, it can. \n\nkramer: we'll start out with one, and they when it catches on, we're gonna have a whole fleet! \n\nnewman: it's the romance of the handsome cab without the guilt or dander of the equine. \n\njerry: so, who's gonna pull this thing? \n\nkramer: (to newman) well, i just assumed you would. \n\nnewman: yeah, but i though- \n\nkramer: (stopping his thought) da-da-da-da no. \n\njerry: (extremely happy about kramer and newman's dilemma) my, isn't this an awkward moment? \n\nkramer: (brainstorming) what about the homeless? \n\nnewman: can't we worry about them later? \n\nkramer: (explaining) to pull the rickshaw. \n\nnewman: (pondering kramer's plan out loud) they do have an intimate knowledge of the street.. \n\nkramer: they're always walkin' around the city. why not just strap something to them?! \n\njerry: (sarcastic) now, that's the first sensible idea i've heard all day. \n\n[setting: the coffee shop] \n\nleo: jerry, hello! (sits down) \n\njerry: so, leo, how's everything? you doin' okay? \n\nleo: i still have the ringing in the ears. sounds like the phone. \n\njerry: (shrugging his problems off) yeah, yeah. but what about money? are you strapped? do you need a little? \n\nleo: what, are you kidding? i should you loaning you money! (quickly amending what he just said) but i'm not. \n\njerry: (being frank) leo, i saw you in brentano's yesterday. \n\nleo: why didn't ya say hello? \n\njerry: because you were too busy stealing a book. \n\nleo: (giving a courtesy lesson) you still say hello. \n\njerry: (showing that it's a problem) leo, i saw you steal. \n\nleo: oh, they don't care. we all do it. \n\njerry: who, criminals? \n\nleo: senior citizens. no big deal. \n\njerry: you could get arrested. \n\nleo: arrested? come on! (goes into a routine explaination for his stealing) i'm an old man. i'm confused! i thought i paid for it. what's my name? will you take me home? \n\njerry: (pleading) leo.. \n\nleo: alright, alright. mr. goody two-shoes. you made your point. \n\njerry: (thinking he's stopped leo's thefts) thank you. \n\nleo: (yelling out to every one in the coffee shop) will somebody answer that damn phone?! \n\n[setting: peterman office building hallway] \n\nelaine: (talking to a co-worker) of course zach and i have been dating. what'd you think, i was the office skank? \n\nwalter: well.. \n\nelaine: \"well\"? we've been dating for three months. between you and me, and.. anyone else you want to tell. \n\nelaine: (exits, closing the door behind her) oh man. ugh.. \n\nwalter: (pointing at the closed door) isn't that zach? \n\nelaine: yeah. \n\nwalter: aren't you upset? \n\nelaine: (starts to fake cry) yes. oh, man! oh! \n\n[setting: nyc street] \n\nkramer: alright, listen up. now, you three have been hand-picked out of possibly dozens that applied. now, what we're looking for are motivated, hard-working, homeless gentlemen like yourselves to pull rickshaws. (one of the homeless men starts to wander off, walking away) now, i don't caer where you're from, or how you got here, or what happened to your homes. but you will have to be physically fit. \n\nhomeless man: the government! \n\nkramer: (continuing as if nothing happened) because to pull rickshaws means more than just strong legs. you're also going to need a well-toned upper body. \n\nnewman: alright, who's first? \n\nkrmaer: hey. \n\nnewman: name, please. \n\nhomeless man: rusty. \n\nnewman: (writing on a clipboard) rusty. \n\nkramer: (to rusty) you know, i once knew a horse named rusty. no offence. \n\nnewman: (to rusty) alright, uh, take it down to the end of the block. make a controlled turn, and bring her back. let's see what you've got! ok? ready, and go! \n\nkramer: (watching rusty's pulling of the rickshaw) giddy up! good form. \n\nnewman: (yelling out to rusty) alright, pace yourself, 'cause you're gonna have to do this all day for very little money. \n\nkramer: hey, what's he doin'? \n\nnewman: i think he stealing our rickshaw! \n\nkramer: well, then, he's out! \n\nhomeless man 2: (salutes kramer) i'll take the job. potato salad!\" \n\n[setting: bookstore] \n\ngeorge: yes, i, uh, i need to return this book. \n\ncashier: (puts the book's code into the computer) i'm sorry, we can't take this book back. \n\ngeorge: why not? \n\ncashier: it's been flagged. \n\ngeorge: (confused) flagged? \n\ncashier: it's been in the bathroom. \n\ngeorge: it says that on the computer? \n\ncashier: please take it home. we don't want it near the other books. \n\ngeorge: (outraged. leaving) well, you just lost a lot of business! because i love to read! \n\njerry: (to himself) i don't believe this! (walks over to a security guard) excuse me, i wonder if you could do me a favor? my uncle's having a little problem with shoplifting.. \n\nguard: mm-hmm. where's your uncle? \n\njerry: (pointing) he's over there in the overcoat. if you could just kind of put a scare into him.. you know, set him straight.. \n\ngaurd: (into his walkie-talkie) we have a 51-50 in paperbacks. all units respond. \n\njerry: '51-50'? that - that's just a scare, right? \n\nguard: sir, i'm gonna have to ask you to stand out of the way and let us handle this. (the guard rushes tward uncle leo) swarm! swarm! \n\nleo: what?! i'm an old man! i'm confused! \n\nguard: you're under arrest. \n\njerry: (to guard) i just wanted you to scare him. \n\nleo: jerry, you ratted me out?! \n\njerry: (unsure of what to say - he remember's leo's courtesy tip) hello? \n\nleo: hello. \n\n[setting: jerry's apartment] \n\njerry: mom, i didn't rat out uncle leo. i just wanted the guard to scare him straight. \n\nhelen: jerry, he won't last a day in prison. \n\njerry: (scoffing) prison. i'm sure it's just a fine. \n\nmorty: she's got priors. \n\njerry: (not believeing it) prior convictions? leo? \n\nhelen: it was a crime of passion. leave it alone. \n\nmorty: besides, it's not stealing if it's something you need. \n\njerry: (confused) what does that mean? \n\nhelen: nobody pays for everyting. \n\njerry: (shocked at his parents) you're stealing too?! \n\nmorty: nothing. batteries. (jerry scoffs) well, they wear out so quick. \n\njerry: mom, you too? \n\nhelen: sometimes your father forgets, so i have to steal them. \n\njerry: alright, i'll talk to you later. \n\nkramer: (while washing his hands in jerry's kithen sink) well, the rickshaw's gone. we strapped it to a homeless guy and he (makes a noise), he bolted. \n\njerry: (joking around) well, you know, eighty-five percent of all homeless rickshaw businesses fail within the first three months. \n\nkramer: (to newman) see, we should've gotten some collateral from him.. like his bag of cans, or.. his other bag of cans. \n\nnewman: we gotta find that rickshaw. you check the sewers and dumpsters. i'll hit the soup kitchens, bakeries, and smorgasbords. \n\njerry: to the idiotmobile! \n\n[setting: the coffee shop] \n\njerry: so, even though you're not really going out with this guy, he's cheating on you? \n\nelaine: that is correct. but here's the beauty part - now i stand up for myself by telling everybody i'm dumping his sorry ass, and i'm the office- \n\njerry: (butting in) tina turner? \n\nelaine: (accepting) alright. \n\ngeorge: well, i've to every brentano's. this thing's flagged in every database in town! \n\njerry: is it so horrible to have to keep a book? \n\ngeorge: i don't understand what the big deal is. they let you try on pants. \n\njerry: (stern on george) not underpants. \n\nelaine: hey, that's your uncle leo. \n\njerry: (getting up) uncle leo. hello! \n\nleo: (bitter) jerry. \n\njerry: (trying to explain) uncle leo, i'm sorry. i didn't know about your.. past. \n\nleo: (exiting) you mean my crime of passion? if anyone betrays me, i never forget! \n\njerry: (following leo out the door) uncle leo, wait! hello?! \n\nelaine: french impressionism. oh, i love this. (looking up at george) now, what is the problem with this book? \n\ngeorge: nothing. \n\nelaine: how much do you want for it? \n\ngeorge: you know, i could let it go for.. say.. a hundred and twenty-five. \n\njerry: leo's furious. (he stops in his tracks when he sees elaine looking at george's book) what is that doing on the table? \n\ngeorge: (wanting elaine to take it off his hands, he tries to silence jerry) jerry, simmer down. \n\njerry: (pointing) i'm not eating anything in the vicinity of that book. \n\nelaine: (confused) what is wrong with this book? \n\ngeorge: simmer! \n\njerry: that book has been on a wild ride. george took it into the bathroom with him and- \n\nelaine: (cutting jerry off, she stands up, trying to get away from the book. yelling out) alright! everyone clear! bio-hazard coming through! clear! clear!! (runs to the bathroom to wash her hands) \n\ngeorge: (the damage has been done. he is slightly angered at jerry) may i ask, what do you read in the bathroom? \n\njerry: i don't read in the bathroom. \n\ngeorge: well, aren't you something? \n\n[setting: elaine's office] \n\npeterman: elaine, do you have a moment? it's about your lover. \n\nelaine: (faking a broken heart) oh yes. i know all about his little performance in the break room. \n\npeterman: elaine, who among us hasn't snuck into the break room to nibble on a love newton? \n\nelaine: (confused) love newton? \n\npeterman: i'm afraid the problem with zach is more serious. he's back on the horse, elaine. smack. white palace. the chinaman's nightcap. \n\nelaine: an addict? (sacrcastic) well, it just keeps getting better! \n\npeterman: and, in a tiny way, i almost feel responsible. i'm the one who sent him to thailand - in search of low-cost whistles. filled his head with pseudoerotic tales of my own opium excursions. plus, i have him some phone numbers of places he could score near the hotel. \n\nelaine: look, uh, mr. peterman, the fact is that i was planning on breaking up with zach anyway. he was cheating on me! \n\npeterman: damn it, elaine. that wasn't zach. that was the yam-yam. now, he is going cold turkey. (ordering) and you will be at his side. \n\nelaine: oh. well, you know, i had planned to uh- \n\npeterman: (cutting her off) no buts, elaine. or i will strip you of your 'associate' status. (goes to leave) uh, p.s., the first twenty-four hours are the worst. better bring a poncho. \n\n[setting: jerry's bedroom] \n\nhelen: it was a crime of passion. \n\nleo: if anyone betrays me, i never forget. \n\nhelen: he won't last a day in prison. \n\nleo: (leo has \"jerry\" written on the fingers his right hand, and \"hello\" written on his left. he's doing pull-ups) jerry. hello. jerry. hello. jerry. (turns to the right, yelling out) answer that damn phone! \n\njerry: hello? \n\nelaine: hey, it's me. \n\njerry: uncle leo? \n\nelaine: (sarcastic) oh, that's nice. what are you up to? \n\njerry: nightmares. you? \n\nelaine: my fake boyfriend is going through real withdrawals. \n\nzach: (yelling out from off-camera) i'm burning up! elaine! \n\nelaine: eat your soup! \n\njerry: you're not feeding him, are you? \n\nelaine: why? (zach vomits. elaine yells out to him) i told you, away from the curtains. away. (pointing) use your bucket. (he vomits again - this time into the bucket) there you go, that's it. (to jerry) you know what? i gotta go. \n\nkramer: hey, buddy. \n\njerry: (scared) ah! kramer! \n\nkramer: i thought i heard you. \n\njerry: get out of here! \n\nnewman: (from outside the room) kramer? kramer? (enters jerry's bedroom) there you are. \n\njerry: will everybody please leave?! \n\nnewman: i just heard that a postman spotted a rickshaw down in battery park. \n\nkramer: our rickshaw? \n\nnewman: it's entirely possible. \n\njerry: i want everyone out! \n\nkramer: (exiting the bedroom with newman) let's talk in jerry's kitchen. i'll make some cocoa. \n\nnewman: (to jerry) good night. \n\njerry: (bitter) good night, newman. \n\n[setting: park] \n\nnewman: there it is! \n\nkramer: rusty! \n\nrusty: oh, there you are. oh, do i get the job? \n\nkramer: (sarcastic) yeah, yeah. we'll get back to you. (pulling the rickshaw with newman) let's get this baby home. \n\nnewman: uh.. \n\nkramer: what? \n\nnewman: you know, when you think about it, it's kind of silly for us both to pull this thing all t he way back uptown. i mean, after all, it is a conveyance. \n\nkramer: yes, that's true. \n\nnewman: so, which one of us is gonna pull? \n\nkramer: well, there's only one way to settle this. (starts pointing back and forth between newman and him with each word of the rhyme) one spot, two spot, zig, zag, tear, pop-die, pennygot, tennyum, tear, harum, scare 'em, rip 'em, tear 'em, tay, taw, toe.. \n\nnewman: (realizing he won) yeah. \n\nkramer: best two out of three? (starts the pointing and the rhyme again) one spot, two spot.. \n\nnemwan: hey, boy. smooth it out up there. too much jostling! \n\n[setting: a homeless charity center] \n\nrebecca: (gesturing tward the book) so, you want to donate this to charity? \n\ngeorge: well, i assume there's some sort of write-off. \n\nrebecca: what's the value of the book? \n\ngeorge: uh, about two hundred dollars, miss demooney. \n\nrebecca: (correcting. stern) it's demornay. rebecca demornay. \n\ngeorge: oh. \n\nrebecca: (opens the cover of the book) oh, wait a second. (certain) this book has been in the bathroom. \n\ngeorge: (nervous) wh-what are you talking about? that - that's rediculous. \n\nrebecca: it's been flagged. i know. i used to work in a brentano's. mister, we're trying to help the homeless heare - it's bad enough that we have some nut out there trying to strap 'em to a rickshaw! \n\ngeorge: (desperate to get rid of the book) alright, i, i'll just take fifty. do - do we have a deal? \n\nrebecca: yeah, and here it is you get your toilet book out of here, and i won't jump over this counter and punch you in the brain! \n\ngeorge: i could take it in merchandise.. \n\nrebecca: (threatening to hit him) here i come.. \n\n[setting: bookstore] \n\nelaine: so, this book'll tell me how to get puke out of cashmere? \n\ncashier: yeah. \n\nelaine: great. \n\njerry: (to elaine) so, the worst is over? \n\nelaine: yeah. now i can break up with him. he's clean, and i'm the office hero. \n\njerry: seems like you're better at fake relationships than real ones. \n\nelaien: yeah, huh. i even got an idea out of it. the detox poncho. \n\nelaine: (leaving jerry) see ya. \n\njerry: (to cashier) i'd like to speak with the manager, please. \n\n[setting: nyc street] \n\nnewman: mind your pace, boy. chop, chop! \n\nkramer: (tired) oh, i can't go on. i gotta take a break. (sets the rickshaw down - taking a rest) \n\nnewman: well, don't tarry. i'm behind schedule as it is. \n\nkramer: (stretching) oh.. \n\nnewman: (scared) boy.. boy. kramer! \n\nkramer: woah! wait! \n\nnewman: ahhh! yaaaahhh! \n\nzach: (optimistic) well, this is the first day of the rest of my life! \n\nnewman: waaaaahhhh! \n\n[setting: bookstore] \n\njerry: george? what are you doin' here? \n\ngeorge: i can't sell the book. it's been marked. \n\njerry: (sarcasticly joking) it certainly has. \n\ngeorge: so, i'm gonna steal another one, and then return it. that way, everything is even. \n\njerry: (trying to straighten things out) you defile one book, steal another, ask for your money back - and to you that's even? \n\ngeorge: i'm goin' in! \n\nmanager: did you want to speak with the manager? \n\njerry: yes. my uncle leo was cought shoplifing here the other day.. \n\nmanager: yes, uncle leo. i remember him. i'm sorry, our policy is we prosecute all shoplifters. \n\njerry: (pleading) oh, come on. he's just a lonely old man. all old people steal. \n\nmanager: that's right. that's why we stopped carrying batteries. look, i'll be honest with you, we've had a lot of trouble with theft lately - and my boss says i have to make an example to someone. \n\njerry: so it could be anyone? \n\nmanager: i.. guess. as long as we catch him in the act. \n\njerry: that guy! (pointing at george) swarm! swarm! \n\ngeorge: no! jerry! \n\nall (singing): happy birthday to you. \n\nwalter: thanks. \n\nfemale worker: elaine, cake? \n\nelaine: uh, no, thanks. \n\nfemale worker: it's walter's special day. \n\nelaine: you know, there are 200 people who work in this office. every day is somebody's special day. \n\nmale worker: elaine! where're you going? it's walter's last day. we have to celebrate. \n\nelaine: it's his birthday and it's his last day? \n\nmale worker: this is other-walter, from returns. \n\nother-walter: hey, what's going on here? \n\nall: surprise! \n\nother-walter: oh guys. \n\nother-walter: elaine, it's my last day. have a piece. \n\nelaine: all right, pile it on. \n\nall (singing, competing): for he's a jolly good fellow...happy birthday to you...for he's a jolly good fellow...birthday to you...which nobody can deny... \n\njerry: what is so bad about having a little piece of cake? \n\nelaine: it is the forced socializing. i mean, just because we work in the same office, why do we have to act like we're friends? \n\njerry: why aren't you there now? \n\nelaine: i had to take a sick day. i'm so sick of these people. by the way, i talked to lisi, and tomorrow night's good for her. \n\njerry: you know, i shouldn't go out with a friend of yours. i foresee messiness. \n\nelaine: yeah, you're better off sitting around here, reading comic books, and eating spaghetti at two in the morning.. \n\njerry: hey, speaking of tomato sauce, you want to come with me and george to mario's pizza? \n\nelaine: your old high school hangout? why? \n\njerry: they're closing. we're going for one last slice. \n\nkramer: hey. all right. hi. check it out, official police caution tape. look at that. \n\nkramer: uh-uh-uh. step back, son, there's nothing to see here. \n\njerry: where did you get this? \n\nkramer: well, i got it from my cop buddy doug. \n\njerry: you sure have a lot of friends. how come i never see any of these people? \n\nkramer: they want to know why they never see you. \n\nkramer: i'm gonna eat that later. \n\njerry: so they just gave you this? \n\nkramer: oh no, no,. no. i had to fish around in the evidence room for it. you know, they're all preoccupied, trying to hunt down this new psycho-serial killer, the lopper. all right, i'll see ya. \n\nelaine: wait a minute, wait a minute. who is the lopper? \n\nkramer: oh, it's no big deal. it's just some guy who's been running around riverside park-pffff. you know, cutting people's heads off. \n\njerry: how come i haven't read about this? \n\nkramer: well, you know, the police, they've been having some internal dissension about the name. \n\nelaine: really? what're the other titles? \n\nkramer: uh, headso...uh...the denogginizer...son of dad. \n\njerry: son of dad? \n\nkramer: yeah. that was my suggestion. it's sort of a catchall. \n\ngeorge: mario's pizza. \n\ngeorge: just as she was. hey, mario! remember us? \n\nmario: no. \n\njerry: we used to come in every day. \n\nmario: so where ya been? we're tanking here. \n\ngeorge: we'll have 2 slices and 2 grape sodas. \n\nmario: oh, thanks. that'll save us. \n\njerry: all right, make it the large sodas. \n\ngeorge: hey, jerry, remember frogger? i used to be so into this game. gettin' that frog across the street was my entire life. \n\njerry: yeah. and then you went on to...well, it's a good game. \n\ngeorge: double jump! eat the fly! eat it! \n\nboy: thanks a lot. \n\ngeorge: ah, beat it, punk. \n\njerry: hey, look at the high score--\"g.l.c.\" george louis costanza. that's not you, is it? \n\ngeorge: yes! 860,000. i can't believe it's still standing. no one has beaten me in like 10 years. \n\njerry: i remember that night. \n\ngeorge: the perfect combination of mountain dew and mozzarella...just the right amount of grease on the joy stick... \n\nmario: here's your pizza pea brains. \n\njerry: i think i remember why we stopped coming here. \n\ngeorge: yeah. \n\nelaine (thinking): this pen smells really bad. so why do i keep smelling it? is it too late for me to go to law school? \n\nelaine: what is this? \n\nmale worker: you were out sick yesterday, so we got you a get-well cake. \n\nfemale worker: it's carrot. it's good for you. \n\nworkers (singing): get well get well soon, we wish you to get-- \n\nelaine: stop it! that's not even a song! i mean, now we're celebrating a sick day? \n\nmale worker: i think it's nice. \n\nelaine: what? what is nice? trying to fill the void in your life with flour and sugar and egg and vanilla? i mean, we are all unhappy. do we have to be fat, too? not you becky, i know you have a slow metabolism. i don't want one more piece of cake in my office! \n\nworker (singing): get well, get well soon-- \n\nmale worker: it's not happening. \n\nbecky: can we still it eat? \n\njerry: i'll tell you lisi, i never expected that movie to-- \n\nlisi: end under water? \n\njerry: be that long. i mean, most action movies are-- \n\nlisi: so much more violent. \n\njerry: not as long. \n\nlisi: well, i should probably-- \n\njerry: get going. \n\nlisi: yeah. \n\njerry: well, it was nice meeting you. i'm sure i'll see you-- \n\nlisi: eight tomorrow? \n\njerry: actually, that's-- \n\nlisi: what you were thinking. \n\njerry: right. \n\ngeorge: oh! here you are. ha ha...you, uh, you want to-- \n\njerry: sure. (points at booth) how about this one? \n\ngeorge: well, i'm doing it, jerry. i'm buying the frogger machine. now the torch will burn forever. \n\njerry: fabulous. see, now you're really do something. \n\ngeorge: so, you want to come down to mario's pizza with me and help me pick up the frogger? \n\njerry: hey, how you gonna keep the machine plugged in while you move it? \n\ngeorge: what? \n\njerry: once you unplug the machine, all the scores will be erased. \n\ngeorge: you're right. why must there always be a problem? you'd think just once i could get a break. god knows i earned it with that score! \n\nkramer: well, more bad news jerry. \n\nkramer: you know the police, they found another victim of the lopper in riverside park. i saw the photo, and it looked a lot like you. \n\njerry: oh, come on. there's a lot of people walking around the city that look like me. \n\nkramer: not as many as there used to be. \n\ngeorge: no. i need a guy that can rig a frogger machine so that i can move it without losing power, 'cause i have the high score. h-hello? \n\nkramer: you know, george, you're not gonna find an electrician like that in the yellow pages. now, i know just the guy who can do this. \n\njerry: another friend? \n\nkramer: oh, no, no, no. this guy is no friend. in fact, we don't even get along. \n\ngeorge: well, is he good, kramer? \n\nkramer: oh, he's the best...and the worst. \n\ngeorge: kramer, listen to me. i'm never gonna have a child. if i lose this frogger high score, that's it for me. \n\nkramer: believe me george, you can count on slippery pete. \n\ngeorge: slippery pete? \n\nkramer: yeah, i don't care for the name, either. in fact, that's one of the things that we argue about. \n\ngeorge: all right, i'm gonna find a guy with a truck. glc must live on! \n\njerry: come on. \n\nkramer: dng-ga-gng-ga-wt. \n\njerry: hello? \n\nelaine: so how's it going with my friend? \n\njerry: she's a sentence finisher. it's like dating mad libs. \n\njerry: what is that? \n\nelaine: oh, it's a cake party. it's the third one today. i didn't realize how hooked i got on that 400 sugar rush. \n\njerry: so join in. \n\nelaine: i can't. i denounced them. maybe i'll go raid peterman's fridge. he's always got a truffle or something in there. \n\njerry: all right. \n\njerry: hey, wh-what-- \n\nkramer: yeah. i dropped an egg. be careful. \n\nelaine: anybody here? peterboy? \n\nelaine: ooh, it's a cake walk. \n\npeterman (singing): get well, get well soon we wish you to get well. \n\npeterman: ha ha ha ha...oh, what a stirring little anthem of wellness. \n\nelaine: mr. peterman, um-- \n\npeterman: we missed you at the get well party. poor old walt has a polyp in the duodenum. it's benign, but--ooh--still a bastard. oh, elaine, can you keep a secret? \n\nelaine: no, sir, i can't. \n\npeterman: inside that small college boy minifridge is my latest acquisition. a slice of cake from the wedding of king edward viii to wallis simpson, circa 1937, price--$29,000. \n\njerry: well lisi, that was another- \n\nlisi: lovely evening. \n\njerry: really bad meal. i was thinking maybe we should-- \n\nlisi: go for a hansom cab ride? \n\njerry: call it a night. i'll walk you home. where do you live? \n\nlisi: 84th street, right off riverside park. \n\njerry: riverside park. \n\nlisi: i thought we were going-- \n\njerry: back to my place. that's right. \n\ngeorge: so you slept with her? \n\njerry: she lives right off riverside park. i was scared of the lopper, so i let her stay over. \n\ngeorge: and you automatically sleep with her? \n\njerry: well, i just wanted to make out a little, but she kind of-- \n\ngeorge: finished your thought. \n\nelaine: guess what i ate. \n\ngeorge: an ostrich burger. \n\nelaine: no. a $29,000 piece of cake. peterman got it at the duke of windsor auction. it was the most romantic thing i've ever eaten. \n\njerry: how'd it taste? \n\nelaine: a little stale. \n\njerry: yeah. \n\ngeorge (nudges elaine with his elbow): so, uh are you sleeping with peterman? \n\nelaine (nudges george with her elbow): no. he doesn't know i ate it. in fact, he almost caught me. i have to sneak back in and even it out. \n\ngeorge: you know, they say ostrich has less fat, but you eat more of it. \n\nelaine: hey, so i talked to lisi and she has got a big surprise for you. she's planning a weekend trip to pennsylvania dutch country. \n\njerry: pennsylvania dutch country? oh, that's the serious relationship weekend place. \n\nelaine: what is going on with you two? \n\njerry: well, i think by sleeping with her, i may have sent her the wrong message. \n\ngeorge: what's that? \n\nelaine: 400 sugar fix. \n\njerry: well, i'm calling this off right now. \n\nelaine: no, no. you are way past the phone call breakup stage. \n\njerry: well, i'm not going over there. that's where the lopper is. \n\nelaine: oh...it's daylight. it won't take you that long. just make a clean break. \n\nelaine: just a little off the side... \n\nelaine: well, no point in wasting $1,200. \n\nelaine (thinking): oh, commander, isn't the wedding marvelous? more cake? oh, i shouldn't. i mustn't. ah, what the hell? \n\ngeorge: now, each of you is here because you're the best at what you do. \n\ngeorge: slippery pete, kramer tells me you are one hell of a rogue electrician. and shlomo, you're the best truck driver. \n\nshlomo: i don't know if i'm the best. \n\ngeorge: oh...you're very good. \n\nshlomo: let's say \"good.\" \n\ngeorge: ok. good. and kramer, you're in charge of taping off the loading zone. \n\nkramer: lock and load. \n\nslippery pete: you think you can handle that, numb nuts? \n\nkramer: all right, all right, come on, now. \n\nslippery pete: that was my mail-order bride. \n\nkramer: hey, you weren't home, so i signed for her. \n\nslippery pete: it doesn't give you the right to make out with her. \n\nkramer: you weren't even married yet. \n\ngeorge: all right, all right, calm down, calm down. whatever happened in the past is past. \n\ngeorge: now, this is the basic layout for mario's pizza. \n\nshlomo: so what kind of jail time are we looking at if we're caught? \n\ngeorge: what do you mean? \n\nslippery pete: we're stealing this thing, right? \n\ngeorge: no. i--i paid for it. \n\nslippery pete: i thought we were stealing it. \n\nkramer: yeah. it feels like we're stealing it. \n\ngeorge: we're not stealing it. \n\nshlomo: i definitely thought we're stealing it. \n\ngeorge: all right, let's--let's focus. can we get back to the plan? \n\nslippery pete: well, i need a battery for this kind of a job. can i at least steal a battery? \n\ngeorge: fine. steal the battery. now, all right, here is the frogger. this is the front door, and this is the outlet. \n\nslippery pete: what's that? \n\ngeorge: the outlet? \n\nslippery pete: mm-hmm. \n\ngeorge: that's where the electricity comes out. \n\nslippert pete: oh, you mean the holes. \n\nshlomo: which one's the bathroom? \n\ngeorge: uh, here. \n\nshlomo: they put the frogger with the toilet? yecchh. \n\ngeorge: the frogger is here. \n\nkramer: george, i thought that was the door. \n\nslippery pete: where are all the pizza ovens? \n\nshlomo: i thought the bathroom was here. \n\ngeorge: all right. you understand now? it's not that complicated. \n\nelaine: i need to replace an antique piece of cake. \n\nelaine: do you have anything that's been...you know, laying around for a while? something prewar would be just great. \n\nkramer: oh, hey, elaine. what, you got the munchies? \n\nelaine: oh, kramer, i am in big. big, big trouble. i need a cake that looks like this. \n\nkramer: oh, yeah--sotheby's. yeah. they make good cake. \n\nelaine: do any of these look close? \n\nkramer: no, but i know i've seen cake just like that. oh--entenmann's. yeah. \n\nelaine: entenmann's? from the supermarket? \n\nkramer: well, no. they're not really in the supermarket. yeah, they got their own case at the end of the aisle. \n\njerry: hi, lisi. \n\nlisi: hi, honey. is that a bat? \n\njerry: uh, yeah. i found it on the street. it's gotta be worth something. \n\nlisi: so, what do you want to do, sweetheart? \n\njerry: well, before we do anything...maybe we should talk. \n\nmontage: nan \n\njerry: then this pennsylvania dutch thing comes out of nowhere. i mean, how am i supposed to respond to that? \n\nlisi: then may i say something... without being interrupted? \n\njerry: well i'm sorry if i ruined your life. that's exactly what i set out to do. \n\nlisi: uh-huh. uh-huh. mm-hmm. uh-huh... \n\nlisi: are you afraid to kiss me in public? \n\njerry: have we even been in public? \n\nlisi: so now you're going to tell me what i'm thinking. well, go ahead, 'cause i'd really like to know. \n\njerry: you are not dumb. don't say that.. \n\njerry: these beans are pretty good. \n\nlisi: 20 minutes. \n\njerry: well, i'm sorry i'm not brad. i'm me! \n\njerry: nice to meet ya! \n\nlisi: boy, did your mother do a number on you. \n\nlisi: fine. so it's over. \n\njerry: oh, thank god. why is it dark out? what time is it? \n\nlisi: 930. \n\njerry: we've been breaking up for 10 hours? \n\nlisi: good-bye, jerry. \n\njerry: lopper. you know, lisi, maybe we should give this a little more time. see how it looks in the light of day. \n\nlisi: out! \n\njerry: lopper. \n\njerry: lisi, lisi. let me in! we can work this out. i was wrong, you were right. i'll do anything! \n\ngeorge: jerry, you came for the big moment. \n\njerry: no. i'm waiting for... \n\ngeorge: ha ha. everything's timed out to perfection, jerry. slippery pete's got the frogger running on battery power, the truck will be there any minute, and kramer's taped out the loading zone. \n\njerry: oh. sounds great. \n\ngeorge: yeah, yeah. you gotta come over tonight. we can play. \n\njerry: oh, i can't. i'm busy. i'm going away on a long weekend. \n\ngeorge: where? \n\nlisi: look what i found. i got one for you, too. \n\njerry: great. uh, you know what? why don't you put it in the car so i don't toss it in that dumpster? \n\nlisi: ha ha. ok. i'll meet thee in front of your place, 15 minutes. \n\njerry: a long, long weekend. \n\ngeorge: i hear thee. \n\npeterman: elaine! excellent. i'd like you to meet a friend of mine, irwin lubeck. \n\nelaine: oh, hello. \n\nlubeck: charmed. \n\npeterman: all right, brace yourself, lubeck. you are about to be launched via pastry back to the wedding of one of the most dashing and romantic nazi sympathizers of the entire british royal family. \n\nelaine: i guess i'll just-- \n\npeterman: oh, no elaine, stay. lubeck here is the world's foremost appraiser of vintage pastry. \n\npeterman: all right, lubeck. how much is she worth? \n\nlubeck: i'd say about 219. \n\npeterman: ha ha ha ha ha!$219,000! lubeck, you glorious titwillow. you just made me a profit of $190,000. \n\nlubeck: no, $2.19. it's an entenmann's. \n\npeterman: do they have a castle at windsor? \n\nlubeck: no. they have a display case at the end of the aisle. \n\npeterman: oh, good lord. \n\nlubeck: you all right, peterman? you look ill. \n\nelaine (singing): get well, get well soon, we want you to get well. get well, get well soon we want you to get well. \n\ngeorge: what are you guys doing? \n\nshlomo: eat the fly. eat the fly. got him! \n\ngeorge: you idiots. you're gonna wear down the battery. \n\nslippery pete: the batteries are fine. we've got...oh, god. only 3 minutes left. \n\ngeorge: quick. get this thing back in the pizzeria \n\nkramer: george, they closed up. \n\ngeorge: i need an outlet! \n\nslippery pete: a what? \n\ngeorge: holes! i need holes! \n\nkramer: the pharmacy's still open. \n\ngeorge: all right. kramer, you block off traffic. you to go sweet-talk the pharmacist. \n\nslippery pete (to george): you owe me a quarter. \n\ngeorge (to jerry): slippery pete. kramer, hurry up! \n\nkramer: ahh! i'm out! no tape left! \n\njerry: well, come on george, i'll help you push it across. \n\ngeorge: wait a minute. this looks familiar. this reminds me of something. i can do this. \n\njerry: by yourself? \n\ngeorge: jerry, i've been preparing for this moment my entire life. \n\nshlomo: he looks like a frog. \n\nslippery pete: so do you. \n\njerry: game over. \n\nelaine: mr. peterman, you wanted to see me, sir? \n\npeterman: elaine, up until a moment ago, i was convinced that i was on the receiving end of one of the oldest baker's grift in the books--the entenmann's shim-sham. \n\nelaine: ohh... \n\npeterman: until i remembered the videotape surveillance system that i installed to catch other-walter using my latrine. but it also caught this. \n\nealine: mr. peterman, i, uh... \n\npeterman: elaine, i have a question for you. is the item still...with you? \n\nelaine: um...as far as i know. \n\npeterman: do you know what happens to a butter-based frosting after six decades in a poorly ventilated english basement? \n\nelaine: uh, i guess i hadn't-- \n\npeterman: well, i have a feeling that what you are about to go through is punishment enough. dismissed. \n\njerry (to waitress): cup of tea with lemon. \n\ngeorge: what happened to your voice? \n\njerry: i was screamin' at hecklers all night. the last time i open for a rodeo. \n\ngeorge: well, jerry, i been thinkin'. i've gotten as far as i can go with george costanza. \n\njerry: is this the suicide talk or the nickname talk? \n\ngeorge: the nickname. george. what is that? it's nothing. it's got no snap, no zip. i need a nickname that makes people light up. \n\njerry: you mean like...liza! \n\ngeorge: but i was thinking...t-bone. \n\njerry: but there's no \"t\" in your name. what about g-bone? \n\ngeorge: there's no g-bone. \n\njerry: there's a g-spot. \n\ngeorge: that's a myth. \n\njerry: t-bone, the ladies are gonna love ya. \n\nelaine: why did they hire you for a rodeo? \n\njerry: they heard i opened for kenny rogers once. \n\nelaine: didn't he throw you off a bus in the middle of alabama or-- \n\njerry: oh, i had that comin' to me. \n\nelaine: you know, kenny rogers has a- \n\nelaine (whispering): why did you get a maid? \n\njerry: you don't have to whisper. she knows she's a maid. \n\nelaine: where did you get her? \n\njerry: i hired her from a service! \n\nmaid: all done. \n\njerry: thank you. nice job. \n\nmaid: is this mine? \n\njerry: yeah. \n\njerry: what? \n\nelaine: come on, jerry. you didn't notice? \n\njerry: notice what? she's not really even a maid. \n\nelaine: oh. \n\njerry: she wants to be an actress...or a, uh, model...or a dancer...or a...news woman. \n\nelaine: uh-huh. news woman. yeah. \n\nkramer: hey. well, bad news, boys. my life is over. my girlfriend's movin' away. \n\njerry: you have a girlfriend? \n\nkramer: jerry, where have you been? \n\njerry: at a rodeo. where's she moving? \n\nkramer: downtown. \n\nelaine: downtown new york? \n\nkramer: yeah. i don't know if i can handle one of these long-distance relationships. \n\njerry: it's like 10 minutes by subway. \n\nkramer: i don't know. \n\nkramer: oh! jeez! well, you've got a maid. it's a whole different world downtown-- different gap, different tower records, and she's a 646. \n\nelaine: what? what is that? \n\njerry: that's the new area code. they've run out of 242s, so all the new numbers are 646. \n\nelaine: i was a 718 when i first moved here. i cried every night. \n\nkramer: listen. heads up, elaine. i'm gonna have to stop by later and pick up a fax. \n\nelaine: at work? \n\nkramer: no. at your apartment. \n\nelaine: i don't have a fax machine. \n\njerry: here we go. \n\nkramer: well, now what are we gonna do? (to jerry) see? this is why you should get a fax and a xerox. \n\njerry: and a dead bolt. \n\nelaine: then maybe you have a fax machine. \n\nkramer: you just blew my mind. \n\nkruger: let's order lunch. \n\nkruger: mary, i will have a chef's salad. \n\nmale worker: turkey sandwich. \n\ngeorge: t-bone steak. \n\nkruger: for lunch? \n\ngeorge: well, i am just a t-bone kinda guy. love that t-bone. in fact, you might as well call me-- \n\nwatkins: that sounds good. i'll have one, too. \n\nkruger: watkins, you're havin' a t-bone? \n\nwatkins: i love 'em. \n\nkruger: well, then we should call you t-bone. \n\ngeorge: uh, no. no, we shouldn't. \n\nkruger: t-bone! \n\nall (chanting): t-bone! t-bone! t-bone! t-bone! t-bone! t-bone! t-bone! t-bone! \n\nelaine: hello? \n\nelaine: what? \n\nmachine: you have 57 messages. message one... \n\nmachine: message two... \n\nmachine: message three... \n\ngeorge: hey, it's george. listen, i- \n\nmachine: message four... \n\nealine: hello? \n\nelaine: aah! \n\njerry: well cindy, the place looks great. \n\ncindy: thanks jerry, gotta run. \n\njerry: ok, i'll see ya. \n\ncindy: hi, elaine. \n\nelaine: all right! you're foolin' around with your maid. that is a wise decision. \n\njerry: elaine, do you think i would go willy-nilly into a situation so obviously fraught with potential complications? \n\nelaine: you are paying a woman to come to your house and sleep with you. \n\njerry: no. i pay her to clean. the rest is-- \n\nelaine: what? a health plan? \n\njerry: i was going to say, \"being a good host.\" \n\nelaine: oh-ho-ho. oh. \n\njerry: but the point is we have our personal relationship, and we have our work relationship. they're separate and, i think, some what sophisticated. \n\nelaine: so you consider this a relationship? \n\njerry: yes, i do. \n\nelaine: oh. have you been out? \n\njerry: yes, we have. \n\nelaine: where did you go? \n\njerry: the store. \n\nelaine: mm! to get what? \n\njerry: stuff. \n\nelaine: cleaning supplies? \n\njerry: and gum. \n\nelaine: oh. well, there's nothin' more sophisticated than diddlin' the maid and then chewin' some gum. \n\njerry: she's not a maid. she might be a news woman! \n\nkramer: hey. well, i just saw madeline off. yeah. she's in a cab and--nguh nguh nguh--on her way. i miss her already. \n\nelaine: hey, kramer, what was it you were having faxed to my house every 30 seconds? \n\nkramer: well, i signed up for a food delivery service, now we're cookin'. that's a play on words. you know, they're faxing me the menus from some restaurants. \n\nelaine: which ones? \n\nkramer: well, all of them. it's the deluxe package. \n\nelaine: so this is never gonna stop? \n\nkramer: well, it better not. paid for the whole year. so, should i pick those up later? \n\nelaine: you can pick 'em up right now. \n\nkramer: ah! \n\nelaine (thinking): i wonder if anyone knows he's here. if he just disappeared...would anybody notice? \n\nphone man: all right, miss benes, all finished. here's your new number. \n\nelaine: ahem. 646? what is this? \n\nphone man: that's your new area code. \n\nelaine: i thought 646 was just for new numbers. \n\nphone man: this is a new number. \n\nelaine: no, no, no, no. it's not a new number. it's--it's--it's just a changed number. see? it's not different. it's the same, just...changed. \n\nphone man: look, i work for the phone company. i've had a lot of experience with semantics, so don't try to lure me into some maze of circular logic. \n\nelaine: you know, i could've killed you, and no one would've known. \n\nphone man: i could've killed you, and no one would've known. \n\njerry: kramer, you're still on the phone? \n\nkramer: madeline and i are watching quincy together. jerry, you know this comes on at the same time here as it does there? \n\njerry: really? it's tuesday here. what day is it there? \n\nkramer (into phone): jerry's teasing. uh-oh! commercial. oh, you going to the bathroom? yeah. i'll go, too. \n\njerry: madeline stays here. \n\njerry: hey, t-bone! \n\ngeorge: no. no t-bone. \n\njerry: no t-bone? \n\nkramer (from bathroom): hey, is that t-bone?! \n\njerry: no! there's no t-bone! \n\nkramer: well, why no t-bone?! \n\njerry: why no t-bone? \n\ngeorge: 'cause neil watkins from accounting is t-bone! \n\nkramer: oh, yeah i'm back. hey, you wanna play cards over the phone? \n\nkramer: oh, hey, uh, listen, jerry, uh, laundry's pilin' up there. you might want to tell your girlfriend. mmm. yeah. \n\ngeorge: your girlfriend is doin' your laundry? \n\nkramer (from hallway): he's sleeping with his maid! \n\ngeorge: you're sleepin' with the maid? \n\njerry: yes. \n\ngeorge: i've done that. did you ever eat an ostrich burger? \n\njerry: no. \n\nman: you're probably one of those women who doesn't like to give out her number. \n\nelaine: no, i'm not. here you go. \n\nman: 646? \n\nelaine: it's a new area code. \n\nman: what area? new jersey? \n\nelaine: no, no. it's right here in the city. it's the same as 212. they just multiplied it by 3, and then they added one to the middle number. it's the same. \n\nman: do i have to dial a one first? \n\nman: i'm really kinda seein' somebody. \n\nelaine: yeah? well, so am i! \n\ngeorge: excuse me. can i talk to you for a second there, watkins? \n\nwatkins: it's t-bone. \n\ngeorge: the thing is...i'm supposed to be t-bone. \n\nwatkins: heh heh. you're not a t-bone. you're a perfect george. \n\ngeorge: what? now, you listen to me! \n\nkruger: hey, look at george. he's givin' it to t-bone. he's jumpin' up and down like some kind of monkey. hey, what was the name of that monkey that could read sign language? \n\nwatkins: all right, you can have t-bone. stop crying. \n\ngeorge (sniffling): i'm not crying. and i shouldn't have said that about your wife. please accept my apologies. \n\ngeorge: ok, everybody, uh...i have an announcement to make. from now on, i will be known as- \n\nkruger: koko the monkey. \n\ngeorge: what? \n\nall (chanting): koko! koko! koko! koko! koko! koko! koko! koko! koko! koko! \n\nman: thank you both for being here. \n\nealine: um, excuse me. i live in the building. did something happen to mrs. krantz? \n\nman: she passed. \n\nelaine: oh, i'm so sorry. \n\nman: thank you. \n\nelaine: a quick question-- did she by any chance have a 212 phone number? \n\ncindy: i can't find my earring. oh, here it is. \n\nkramer: hey, listen, can i borrow your suitcases? \n\njerry: yeah. it's in your closet. \n\nkramer: no, no, no. i looked. \n\njerry: they're behind my skis and my tennis racket. \n\nkramer: thanks, buddy. \n\njerry: where you goin'? \n\nkramer: huh? well, i'm gettin' out of town. i'm gonna visit madeline for the weekend. you know, this place is lookin' kinda messy. what happened to cindy? \n\njerry: well, she's here. she just didn't get around to it. \n\nkramer: oh. \n\ncindy: hi, kramer. \n\ncindy: thanks, jerry. bye. \n\nkramer: well, what's the matter? \n\njerry: what did i just pay for? \n\nkramer: uh-oh. you're a john. \n\njerry: koko? \n\ngeorge: koko. \n\njerry: well, it's probably the most intelligent ape there is. \n\ngeorge: yeah. so, how's cindy the maid? \n\njerry: well, everything's goin' great except, basically, i'm payin' for sex. \n\ngeorge: tell me about it. i went out with this girl last week. first i had to pay for dinner, then-- \n\njerry: no, george. she's coming over and not cleaning. it's like i'm seein' a prostitute. \n\ngeorge: how much you pay this maid? \n\njerry: 40. \n\ngeorge: 40? i'm payin' 60 to my maid. she doesn't do laundry and i'm gettin' nothin'. all right. once she pinched my ass, but i don't know what that was. \n\njerry: i don't know what this is. \n\nkramer: hey, hey, hey. look at that. \n\njerry: ooh. \n\nkramer: jerry, you wouldn't believe what it's like down there. taxicab drivers are insane. you know, everybody is in a hurry. \n\ngeorge: i can't eat with you leanin' over like this. just look straight forward. \n\nkramer: well, now i can't see jerry. \n\njerry: i look about the same. \n\ngeorge: what? \n\njerry: i was talking to him. \n\nkramer: what? \n\njerry: never mind. \n\nkramer: come on. what'd he say? \n\ngeorge: never mind. \n\nkramer: jerry, come on. what'd you say? \n\njerry: what? \n\nkramer: come on. where'd you go? \n\njerry: go back. \n\nkramer: eh! come on. what did you say? \n\njerry: i said, never mind. \n\nkramer: yeah. i know that. uh, uh. \n\njerry: i hate the counter. \n\nelaine: hey. \n\njerry: hey. \n\nelaine: i hate the counter. \n\nkramer: who's that? \n\nelaine (to jerry): well, i got a 212 number from this little old lady in my building-- mrs. krantz. \n\njerry: oh, she didn't mind? \n\nelaine: no. she died. \n\njerry: hey, that's great. \n\ngeorge: what happened to mrs. krantz? \n\njerry: elaine got a new number because she died. \n\nkramer: newman died? \n\nelaine: what did he say? \n\njerry: some new kind of pie. \n\ngeorge: i'll try a piece. \n\nkramer: all right, who's down there? \n\njerry: hey, there's a booth. \n\nkramer: hey, elaine. \n\nelaine: oh, hi. \n\nkramer: did you hear about newman? \n\nelaine: what? \n\ngeorge: hey. \n\njerry: so how's it goin' at work? they get tired of it? \n\ngeorge: oh, yeah. \n\njerry: double zero? \n\ngeorge: it's \"ooh\" as in \"ooh ooh ah ah.\" \n\ncindy: your nickname's koko? one of the girls down at the maid service is named coco. \n\ngeorge: really? coco? \n\ncindy: yeah. coco. that girl's all right. \n\ngeorge: you know, if i could get this coco woman down to kruger, they wouldn't be able to call me koko anymore because kruger would never allow 2 kokos. \n\njerry: sounds like he runs a real tight ship. \n\ngeorge: say good-bye to koko. \n\njerry: good-bye, koko. \n\nkramer: bye, koko. whew! jerry, this relationship is killing me. the distance, the longing, the distance, the-- you know, i didn't realize it, but i'm a needy person. \n\njerry: kramer, maybe this relationship isn't for you. \n\nkramer: oh, yeah? so what am i supposed to do, be more like you? all sealed up in here, emotionally unavailable, paying scrubwomen for sexual favors! no! jerry, i won't be like you! never! i'll never be like you! \n\ncindy: what was that? \n\njerry: i didn't hear anything. \n\ncindy: all right, i'm takin' off. aren't you forgetting something? \n\njerry: oh, right! hey, it was great seeing you again. i love your outfit. \n\ncindy: no. my money. \n\njerry: for what? \n\ncindy: for my maid services. you booked me for today. \n\njerry: but you didn't really do any work. \n\ncindy: i made the bed. \n\njerry: but you took a nap in it. \n\ncindy: so? \n\njerry: i thought that was kind of girlfriend bed making. \n\ncindy: no. that was the maid. \n\njerry: well, who took the nap? \n\ncindy: the girlfriend. \n\njerry: $40 seems kind of steep for a nap. \n\ncindy: so, what are you saying? that i'm a bad maid or some kind of a prostitute? \n\njerry: ho, ho...ho! hold on. let's keep this sophisticated. \n\ncindy: you know, i don't think i want to be your girlfriend or your maid. \n\njerry: so is this a breakup/quitting? \n\ncindy: yeah. don't ever call me or hire me again. \n\njerry: oh, yeah? well, then, we're through! and you're fired! \n\nphone man: sign here. \n\nelaine: yes! 212. \n\nelaine: hey, what happened to the guy i had last time? \n\nphone man: oh, you know, it's an odd thing. he went out on a job and never came back. nobody knows what happened. \n\nelaine: all right! i am back in the game. \n\nelaine: hello? \n\nboy: gammy! \n\nelaine: no. you got the wrong number, kid. \n\nboy: gammy krantz, it's your grandson bobby. why haven't you called? \n\nelaine: oh...nuts. \n\nboy: do you hate me 'cause of my lazy eye? \n\nelaine: no. it's just that i've been kind of buried over here. \n\njerry: so the kid doesn't know his grandmother is dead? g-5? \n\nelaine: hit. no. i guess his parents didn't want to tell him. b-2? \n\njerry: miss. \n\nelaine: he called 6 times yesterday. what a nightmare it must be to have a real family. \n\njerry: i wouldn't worry about it. b-6? \n\nelaine: hit. uhh...you sank my submarine. \n\njerry: elaine... \n\njerry: hello? \n\ncomputer voice: you have a collect call from-- \n\nkramer: hey, buddy, don't say no! \n\njerry: i accept. \n\nkramer: i went down to madeline's. i told her, \"you gotta move, or it's over.\" \n\njerry: well, what happened? \n\nkramer: i think it's over. we had a big fight, she threw me out, i started walkin', and now i'm lost downtown! i don't have any money. i don't recognize anybody. i miss home, and i don't even know how to get there. \n\njerry: what's around you? \n\nkramer: i'm lookin' at ray's pizza. you know where that is? \n\njerry: is it famous ray's? \n\nkramer: no. it's original ray's. \n\njerry: famous original ray's? \n\nkramer: it's just original, jerry! \n\njerry: well, what street are you on? \n\nkramer: hey, i'm on first and first. how can the same street intersect with itself? i must be at the nexus of the universe. \n\njerry: just wait there. i'll pick you up, and, kramer, stay alive no matter what occurs, i will find you! \n\nkramer: aah! \n\nman: you steinfeld? \n\njerry: yeah. \n\nman: my name is maxwell. i'm from maid to order. it's a pun. i sent one of my girls over to your place. \n\njerry: cindy. \n\nman: she says she had a little problem with you. you didn't pay. \n\njerry: you know, she didn't really do what she was supposed to do. \n\nman: oh, yeah? she told me what you like. you're a little sickie, aren't you? disinfectant on the blinds, vacuuming the counter-- \n\njerry: hey, come on. come on. i gotta live around here. \n\nman: you know what i do to people who stiff me on a job? \n\njerry: what? \n\nman: well, it kinda depends on the situation, but if i don't get my money from you, i'm gonna get it from her. \n\njerry: i don't want to make trouble. you want the money? here. \n\nman: hey! wait, wait, wait! whoa! give it to the girl. i'm an independent contractor. tax purposes. \n\nelaine: bobby, you gotta stop calling your gammy. why? because sometimes you call very early in the morning when gammy has been out late the night before and sometimes when gammy's not alone. your parents still haven't said anything to you about your gammy? (sighs) all right, here we go. (coughing) gammy doesn't feel so good. i think gammy might be dying. yep. yep. ok. good-bye, bobby. don't call anymore. i'm dead now. gotta go. \n\nbobby: 9-1-1. \n\njerry: nexus of the universe. hey, cindy. cindy. \n\ncindy: what do you want? \n\njerry: here. i got your money. \n\ncindy: i don't want any money from you. \n\njerry: come on. take it. it's money. let me give it to ya. \n\npolice: looking for a good time, sir? you wanna step out of the car, sickie? \n\njerry: well, this is all very sophisticated. \n\nfireman: all right, hang on, gammy! you're gonna make it! \n\nelaine: aah! \n\nmaxwell: hey, you look a little lost. you from around here? \n\nkramer: uh, no. \n\nmaxwell: you know where you're going? \n\nkramer: not really. my friend was supposed to pick me up, but i don't know where he is. \n\nmaxwell: doesn't sound like much of a friend. you got any money? \n\nkramer: uh, no. \n\nmaxwell: you wanna make some? \n\nkramer: ok. \n\nmaxwell: do you know how to use a mop wringer? \n\nkramer: yeah, yeah. \n\nmaxwell: why don't you get in the car? \n\nkramer: hi. ahh...these are soft seats. \n\nkruger: hey, koko, who's this? \n\ngeorge: this is our new vice-president of acquisitions, sir. \n\nkruger: so you're just hiring new people now? that's your job, to hire people? \n\ngeorge: yes? \n\nkruger: ok, good enough for me, koko. \n\nkruger: ahem. now, what's your name? \n\ncoco: my name is coco. coco higgins. \n\ngeorge: coco? \n\nkruger: we can't have 2 cocos. so i guess you're back to being george. \n\ngeorge: well, it was a hell of a ride. \n\nkruger: all right, the grace building. there's a big stain on the front. how do we get it off? \n\ncoco: when i was a little girl in jamaica, my gammy taught me to take a wet rag and in a circ-- \n\ngeorge: ah, excuse me, vice-president coco, no one cares about your gammy. \n\ncoco: what did you say about my gammy? \n\ngeorge: forget gammy. \n\nkruger: who's gammy? \n\ngeorge: there's no gammy. \n\nkruger: maybe there should be a gammy. \n\ngeorge: oh, no. \n\nkruger: george. \n\nall (chanting): gammy! gammy! gammy! gammy! gammy! gammy! gammy! \n\ngeorge: gammy's gettin' upset! \n\ngeorge: man, i'm starving. \n\nelaine: how can you be hungry after what you ate at that mets game? \n\ngeorge: because ballpark food doesn't count as real food. \n\njerry: right. it's just an activity. it's like that paddle with the ball and the rubber band. \n\nkramer: you know, my friend bob saccamano made a fortune off of those. see he came up with the idea for the rubber band. before that, people would just hit the ball, and it would fly away. \n\njerry: i can't believe you all made me leave before the end of the game. \n\nelaine: oh, come on, jerry. it was 9 to nothing. we were getting shellacked. \n\ngeorge: those nachos are killing me. \n\nelaine: i thought you were hungry. \n\ngeorge: it's complicated. \n\nkramer: come on, jerry, you're going to miss the exit. \n\njerry: keep your shirt on. i got it. \n\nelaine: watch out for that maroon golf. \n\nkramer: oh, boy. \n\njerry: look at this guy. he's trying to box me out. \n\nkramer: i'll tell you when you can go. wait, wait, wait, wait-- now, now, now. no, no, no. go, go! no, no. wait-- now, now! now! jerry! go--ahh... \n\njerry: oh, calm down, maroon golf. he thinks i cut him off. he accelerated. \n\nkramer: you want me to moon him? ooh, let's moon him. roll up your window. let's do a pressed ham under glass. \n\nelaine: oh, no, i couldn't do that. \n\nkramer: look at this, look at this. he's giving us the finger. \n\nelaine: oh, all right. \n\nkramer: yeah. \n\ngeorge: so i saw that new movie about the hindenburg. \n\nelaine: oh, yeah. what's that called? \n\ngeorge: blimp the hindenburg story. \n\njerry: how was it? \n\ngeorge: i found it morose. why dwell on these negative themes? \n\njerry: yeah. they should make a movie about all the hindenburg flights that made it. \n\ngeorge: anyway, right in the middle, the ship blows up-- burning debris, bodies falling-- and then just as this eerie silence settles over the airfield, i yelled out, \"that's gotta hurt!\" \n\njerry: heh. \n\ngeorge: the place went nuts. \n\njerry: imagine the laugh you could have gotten if you'd yelled that out at the actual disaster. \n\ngeorge: yeah. \n\nkramer: why are we slowing down? \n\njerry: what is that music? \n\ngeorge: what's with all these flags? \n\njerry: oh, no. \n\nelaine and jerry: it's the puerto rican day parade! \n\nelaine: ohh! oh, the city shuts down fifth avenue. they never let anyone through. we're never getting home. \n\nkramer: all right. i'm gonna check it out. aiee. mucho trafico. \n\n[stock footage: puerto rican day parade.] \n\nkramer: yeah...uhh...well, the streets are all blocked. i think every puerto rican in the world is out here. \n\npuerto rican man: well, it is our day. \n\nkramer: whoo. wrong car. sorry. \n\nradio: and the mets score two in the eighth inning. \n\njerry: see? if we had stayed, we could have seen those runs. \n\ngeorge: i could have had some ice cream. i think that might have calmed down the nachos. \n\nelaine: i'm going to miss 60 minutes. you know, i hate to miss 60 minutes. it's part of my sunday weekend wind-down. \n\njerry: i don't know how you can unwind with that clock ticking. it makes me anxious. \n\nkramer: all right, gentlemen, i scouted it out. i think we can get out over there. \n\njerry: but that's a one-way street coming this way. besides, how am i gonna get all the way over there? \n\ngeorge: just inch over. you worm your way. \n\nelaine: just do it, jerry. uhh. this exhaust. i'm gonna throw up. \n\nkramer: you know, you should make yourself throw up. \n\nelaine: huh? \n\nkramer: you know you're going to. \n\njerry: all right, i'm worming. \n\nkramer: hey, jerry. you know who the grand marshal is of this thing? none other than miss chita rivera. \n\njerry: they're not letting me in. \n\ngeorge: my hand is out. \n\njerry: well, i think we're gonna need more than a hand. they have to see a human face. \n\nelaine: you sure you want his face? \n\nkramer: no, no, no. it was mara conchita alonso. \n\ngeorge: this guy's giving me the stare-ahead. \n\njerry: the stare-ahead. i hate that. i use it all the time. \n\ngeorge: look at me! i am man! i am you! \n\ngeorge: all right, he's letting you in. thank you! creep. \n\nkramer: oh! i know who it is. stacy keach. \n\njerry: one more lane to go. \n\ngeorge: all right! we're here! \n\nlamar: oh, look who's here. my old buddy, black saab. \n\njerry: maroon golf. \n\nlamar: where you goin', black saab? you seem to be a tad askew. \n\njerry: could you move your car back a little? \n\nlamar: oh. sorry. i seem to have cut you off. \n\nelaine: all right, i think i know where this is going, and i am going somewhere else. \n\njerry: you can't do that. you can't just leave the group. \n\nelaine: i've been trying to leave this group for 10 years. vaya con dios. \n\nkramer: con dios? well, that's rude. \n\njerry: can you believe her? \n\ngeorge: yeah. i'll see you later. \n\njerry: where are you going? \n\ngeorge: the movies. blimp is playing right there. \n\njerry: you're going to that again? why? just to do that stupid line? \n\ngeorge: it's a performance, jerry. like what you do. \n\njerry: that's not what i do. \n\ngeorge: isn't it? \n\njerry: maybe a little. ah, hell, i guess it is. \n\nkramer: you know, actually, jerry, you haven't worked a room that big in a while. \n\n[stock footage: taxis stuck in traffic]. \n\nelaine: look at that guy's dog. i hate it when their ears get flipped inside out like that. why doesn't he fix it? \n\nelaine (yelling): hey! fold your dog's ear back! \n\nelaine: ooh! this isn't moving! i could walk faster than this. \n\ncab driver: no, you can't. \n\nelaine: yes, i can. here. i'm outta here. \n\nelaine: oh, now it's moving. oh, yeah. i knew it. hey! hey! \n\ncab driver: where to? \n\nelaine: that's cute. that's really cute. oh! come on! all right. bye again. \n\nelaine: hey. taxi! taxi! \n\ngeorge: ladies. i, uh, i haven't seen this before. \n\nlady 1: what is that dot? \n\nlady 2: oh, i think someone has one of those funny laser pointers. \n\nlaser guy: gimme a box of those and one of those. \n\ngeorge: excuse me, are you the guy with that funny laser? \n\nlaser guy: the laser's not funny. i'm funny. \n\ngeorge: yeah. the thing is, i, uh...i had this little zinger of my own i wanted to try. \n\nlaser guy: uh-huh. \n\ngeorge: it's right in the explosion scene. so if you could just...leave me a little window. you know, my, uh, my aunt had a thing removed with a laser. all right, i don't want to interrupt your meal, so... \n\njerry: i've gotta see this game. if it wasn't for this guy, we could get out of here. \n\nlamar: this traffic's a killer, ain't it? \n\nkramer: you want to get outta here? here's what we do. we leave the car here, we take the plates off, we scratch the serial number off the engine block, and we walk away. \n\njerry: walk away? \n\nkramer: you've got insurance. you tell them that the car was stolen, and then you get another one free. \n\njerry: isn't there a deductible? \n\nkramer: all right, what is your deductible? \n\njerry: i don't know. \n\nkramer: yes, because they've already deducted it. \n\njerry: from what? \n\nkramer: the car, which we're leaving. so the net is zero. see you pocket the money, if there is any, and you get a new car. \n\njerry: we're not leaving the car! \n\nkramer: all right. if you refuse to grow up and scam your insurance company, you'll have to work this out with maroon golf. \n\njerry: absolutely not. he sped up. \n\nradio: swung on, line hard toward left center field. that's in the gap, that's a base hit. \n\njerry: i'm ready to talk. \n\nlady 1: hey! there's that laser guy again. \n\nlady 2: he's funny. i never meet anyone funny. \n\nlady 1: i know. a sense of humor is so much more important to me than looks or hair. \n\nlady 2: mmm, yeah. \n\ngeorge: that's gotta hurt! \n\ngeorge: it's...gotta hurt! hurt! because...aaarrrrrgh! \n\ngeorge: damn you, laser guy! you had to grab it all with your lowbrow laser shtick! you're just a prop comic! where's the craft?! \n\nlady 1: look! it's on the bald guy. \n\nlady 2: i am so glad we came to this showing. \n\nkramer: ok, here's the deal. he wants you to acknowledge that you cut him off with an \"i am sorry\" wave. \n\njerry: what's that? \n\nkramer: you raise the hand, lower the head-- \"i'm sorry, i'm sorry. the buttons are really big on the car. i don't understand it. i haven't read the manual. ooh!\" you get my drift. \n\njerry: ok! \n\nlamar: hallelujah. praise the lord. but i'll take it. \n\nkramer: yes! all right, lamar, back it up a little bit so we can get out now. \n\ngeorge: all right. at last, we're finally gettin' out of here. \n\njerry: what's that on your forehead? \n\ngeorge: it's probably chocolate. \n\njerry: hey, is that one of those laser pointers? \n\nkramer: hey, jerry, crank up the floyd. it's a george laserium! \n\ngeorge: all right, stop it! stay away from my breasts! chest! \n\njerry: see ya around maroon golf. and, by the way, that was an \"i'm not sorry\" wave. \n\nlamar: what was that? \n\njerry: i'm glad i cut you off, because black saab rules! so long, jackass! \n\njerry: elaine?! \n\nelaine: jerry?! \n\nlamar: jackass? so i'm a jackass now? \n\njerry: so if everyone would just put their cars in reverse at the same time, we can do this. all right, on the count of three. can everyone hear me? hey, amigo, are you paying attention? \n\npuerto rican man: buenos dias, my friend. \n\njerry: not you! the guy in the amigo. \n\nelaine: uh, well, uh, here--here is good. \n\ntaxi driver: oh, yeah, sure, and now i'm gonna be stuck here. but you knew the way to go! you went to college! \n\nelaine: hey, i went to tufts! that was my safety school! so don't talk to me about hardship. \n\nelaine: boy, eh, can you believe this mess? \n\njerry: elaine, why did you have the cab come down the street?! we were almost out! \n\nlamar: so that was your girlfriend that blocked you in. that's real good. \n\nelaine: i'm not his girlfriend. well, actually, we used to date, but not anymore. \n\njerry: elaine, he doesn't need- \n\nlamar: used to date? so i guess you found out he's a jackass. \n\njerry: 'cause that's what's gonna happen. \n\nkramer: wow. he's givin' you a mustache. where is this guy? \n\ngeorge: don't look around. don't look around. that's what he wants. \n\nelaine: all right. well, i'll see ya. hey, george, i think there's a sniper lookin' to pop ya. \n\ngeorge: this thing can't hurt me, can it? i mean, it is a laser. what if it hits my eye? \n\njerry: i don't know. \n\ngeorge: i can't be blind, jerry the blind are courageous. \n\nkramer: you'll be fine as long as it doesn't hit you right in the pupil, 'cause then the whole ball will go up like the death star. tchoo! i gotta go find a bathroom. \n\njerry: hold it, george. don't move. it's right between your eyes. \n\ngeorge: oh, my god. \n\njerry: hey, there's the soda guy. \n\nlamar: hey, jackass! get me a diet dr. pepper! \n\njerry (exasperated): all right! \n\nolder man: hey, hey, hey! \n\nolder woman: wha--ow! \n\nelaine: oh, this is nuts! i can't get across anywhere! \n\nolder man: well, none of us can! we're trapped! \n\nolder woman: ow! \n\nelaine: hey! hey, everyone. this way. i think we can get out through here. \n\nolder man: oh, i don't know if that's such a good idea. \n\nelaine: look! no one knows how long this parade is gonna last! they are a very festive people. all i know is that it's sunday night, and i have got to unwind! now who's with me?! \n\nolder woman: father? \n\npriest: none of us saw the nylon flap. that might mean something. \n\npregnant woman: oh, all right, all right! \n\nelaine: all right! come on. come on. let's go. let's go. \n\nbusiness man: but it's dark! \n\nelaine: get in there! \n\nkramer: yes, uh, i'm interested in the apartment. \n\nsales woman: yes! come in, come in. \n\nkramer: ok. \n\nsales woman: i'm christine nyhart. \n\nkramer: oh. delicious to meet you. \n\nsales woman: did the broker send you over? \n\nkramer: uh, yes, most likely, yes. i'm, uh, h.e. pennypacker. i'm a wealthy industrialist and philanthropist and, uh, a bicyclist. and, um, yes, i'm looking for a place where i can settle down with my, uh, peculiar habits, and, uh, the women that i frequent with. (sniffing wall) mmm. mombassa, hmm? \n\nsales woman: the asking price is $1.5 million. \n\nkramer: oh, i spend that much on after shave. yes, i buy and sell men like myself every day. now, i assume that there's a waterfall grotto? \n\nsales woman: no. \n\nkramer: how about a bathroom? \n\nsales woman: it has 4. \n\nkramer: yes, and where would the absolute nearest one be? \n\nsales woman: just down the hall. \n\nkramer: oh, thank you. \n\nelaine: oh, don't worry. we'll get you home to your husband real soon. \n\npregnant woman: i'm not married. \n\nelaine: well, i, for one, really respect that. \n\npregnant woman: oh, thank you. \n\nelaine (whispering): hey! guess who's not married. \n\nolder man: is the boyfriend still in the picture? \n\nelaine: come on, father, you can make it. \n\npriest: no, i can't. i've got a bad hip. go on without me. \n\nelaine: no! i won't! \n\npriest: leave me! you must. \n\nelaine: all right. take it easy. \n\nelaine: all right, we can move faster without father o'gimpy. \n\npriest: i heard that! \n\nlamar: you know, i don't think i've ever seen a man driving a saab convertible. still haven't. \n\njerry (sarcastically): ho ho! \n\njerry: what seems to be the problem, officer? \n\ngeorge: they're for protection, jerry. can you tell where i'm lookin'? \n\njerry: at me? \n\ngeorge: no. \n\njerry: oh. it's back. \n\ngeorge: bring it on, baby \n\njerry: what if it gets in the side? \n\ngeorge: the side? \n\njerry: yeah. wouldn't it just bounce back and forth between your cornea and the mirror, faster and faster, getting more and more intense, until finally- \n\ngeorge: all right! \n\njerry: oh. it's in your eye now. \n\nkramer: hola, jerry! i'm into this puerto rican day! the sights! the sounds! the hot, spicy flavor of it all! it's caliente, jerry! \n\njerry: kramer, the mets have got men on base! \n\nkramer: yeah, i know! i was watchin' the game. \n\njerry: you were watchin'? where? \n\njerry: oh, that was a strike! did you see that?! \n\nsales woman: would you like to see the rest of the apartment, mister, um-- \n\njerry: eh...varnsen. kel varnsen. actually, this room intrigues me. why is it called the tv room? \n\nsales woman: well, it's-- \n\njerry: balk?! how was that a balk?! you have any snacks? \n\nsales woman: mr. varnsen, if you like the apartment, i should tell you i've also had some interest from a wealthy industrialist. \n\njerry: not pennypacker! \n\nsales woman: you know him? \n\njerry: i wish i didn't. brace yourself, madam, for an all-out bidding war. but this time, advantage varnsen! \n\ngeorge: wait a second. i think i see where that laser guy is. no! don't look! don't look. oh, yeah, that's him. ok. i'm gonna sneak up on him. now the hunted becomes the hunter. \n\nelaine: we should be able to get across right through here! \n\nolder woman: it's a dead end! \n\nelaine: oh, no! i thought-- \n\nbusiness man: you thought?! we're gonna die in the dark! i knew it! i knew it! we're gonna die! \n\nelaine: get a hold of yourself! \n\npregnant woman: oh, come on! \n\nelaine: sorry. somebody...help us! \n\nman: !mira! !mira! stacy keach! \n\nelaine: we're down here! help! \n\nman: there's people down there! hold on! \n\nelaine: let us out. there's an unmarried pregnant woman down here. \n\npregnant woman: don't judge me! \n\nelaine: help us up so we can cross the street? \n\npolice officer: nah, nah, you can't cross here. there's a parade. \n\nelaine: but we've come so far. we just want to unwind. \n\npolice officer: hey, what can i tell ya? \n\nbusiness man: wanna make out some more? \n\nelaine: oh, god! let us out! \n\ngeorge: that wasn't a laser pen. \n\ndelivery man: no. it's just a pen. \n\ngeorge: oh, that's funny \n\ndelivery man: no. you have, like, a dot on your face. whoever's doing that is very clever. \n\nkramer: come on, man. you need to lighten up. you know, a feeling like this only happens once a year. \n\nkramer: yeah, it's like this every day in puerto rico. \n\nkramer: see, now you're getting the spirit of it, huh? \n\nkramer: ooh! !dios mio! \n\nman: hey! there's a guy burning the puerto rican flag! \n\nbob: who! who is burning the flag?! \n\nkramer: oh, no. \n\nbob: him?! \n\ncedric: that's not very nice. \n\nkramer: it was an accident. \n\nbob: do you know what day this is? because i know what day this is, they know what day this is, so i was wondering if you know what day this is! \n\ncedric: because it's puerto rican day. \n\nbob: maybe we should stomp you like you stomp the flag! what do you think of that? \n\nkramer: now look, i just have one thing to say to you boys. mama! \n\nsales woman: right this way, mr. vandelay. \n\ngeorge: well, this is a lovely apartment. lovely! my kids are gonna go crazy. i, uh, i wonder if i could see the bathrooms. preferably one with some paint thinner and, uh, some rags? \n\nsales woman: it's down the hall. \n\njerry: oh, hello... \n\ngeorge: art. \n\njerry: mr. vandelay, of course. \n\nsales woman: you two know each other? \n\nsales woman: mr. pennypacker! \n\nkramer: uh, yes, uh, i--i wanted to, uh, stop by and make sure that my shark tank fits-- uh, hello. \n\nsales woman: mr. pennypacker, this is mr. vandelay, and you know mr. varnsen \n\nkramer: uh, varnsen. \n\njerry: pennypacker. \n\nkramer: vandelay. \n\ngeorge: pennypacker. varnsen. \n\njerry: vandelay. wait a second. mr. pennypacker, if you're here, and mr. vandelay is also here, then who's watching the factory? \n\nkramer: the factory? \n\njerry: the saab factory? \n\nkramer: jerry, that's in sweden. \n\njerry: my car! \n\nkramer: well, you know, it's like this every day in puerto rico. \n\ngeorge: jerry, the mets lost. \n\njerry: i love a parade! \n\ngeorge: how do you suppose they did that? \n\nkramer: well...there's no logical explanation. all right. well, shall we go home? \n\njerry: well, what about my car? \n\nkramer: well, jerry, you can't deduct it now. \n\njerry: hey, there's elaine. \n\nelaine: hey. \n\njerry: well, you look, uh...relaxed. \n\nelaine: well, it is sunday night, and you know how i like to unwind. \n\nlamar: hey, black saab. looks like that building cut you off! ha ha ha! see ya around! \n\njerry: well, at least he didn't- \n\nlamar: jackass! \n\njerry: somebody remember where we parked. \n\nkramer: this was a fun day. it's nice to get out. \n\ngeorge: i can't eat this without catsup. would it kill her to check up on us? would that be a terrible thing? \"how's everything? do you need anything? what can i do for you?\" \n\njerry: i know what you mean. \n\ngeorge: do ya? \n\njerry: it's like going out with someone and you never hear from them again. \n\ngeorge: same thing! \n\njerry: not really, but it's something. ask the people behind you. \n\ngeorge: excuse me. are you using your catsup? \n\nwoman: what do you think? you want to give him the catsup? \n\nman: it's up to you. \n\nwoman: you know what? i don't think so. i'm going to need it from time to time. \n\njerry: so what are you doing later? you want to go to the movies? \n\ngeorge: nah - what for? \n\njerry: to see a movie. \n\ngeorge: i've been to the movies. \n\njerry: not this movie. \n\ngeorge: they're all the same. you go, you sit, you eat popcorn, you watch. i'm sick of it. \n\njerry: did you shower today? \n\ngeorge: yeah. \n\njerry: that's usually the kind of mood i'm in when i haven't showered. \n\ngeorge: when is it going to be my turn, jerry? when do i get my 15 minutes? i want my 15 minutes! \n\njerry: oh, quit complaining. at least you have your health. \n\ngeorge: ah! health's not good enough. i want more than health. health's not doing it for me anymore. i'm sick of health. \n\nwoman: all right, we're done. you can have it now. \n\ngeorge: oh, very gracious. \n\nman: nice day \n\ngeorge: yeah. \n\njerry: what is that? \n\nkramer: hey! jojo! \n\njerry: ey, ey! \n\nelaine: all right, thanks for the ride, kramer. \n\nkramer: no, thank you. so what are you doing? \n\njerry: nothing. \n\nkramer: come on, let's go to the beach. \n\ngeorge: what are you crazy? \n\nkramer: what? it's a beautiful day. \n\njerry: have a good time. \n\nkramer: yeah, there's something in the air today. you feel it? there's something in the air. \n\njerry: you know you're turning into burt lancaster? \n\nkramer: yeah, there's something in the air. \n\nelaine: oh, i forgot to call jill. jill. hi, it's elaine. how is your father? is everything okay? what? i can't hear you so good. there's a lot of static. wha? i'm going to call you back. \n\njerry: jill's father is in the hospital and you call to ask about him on a cell phone? \n\nelaine: what? no good? \n\njerry: faux pas. \n\nelaine: faux pas? \n\ngeorge: big hefty stinking faux pas. \n\nelaine: why? \n\njerry: you can't make a health inquiry on a cell phone. it's like saying \"i don't want to take up any of my important time in my home so i'll just get it out of the way on the street.\" \n\ngeorge: on-the-street cell-phone call is the lowest phone call you can make. \n\njerry: it's an act of total disregard. it's selfish. \n\ngeorge: it's dismissive. \n\njerry: it's pompous. \n\ngeorge: why don't you think before you do something? \n\nelaine: here's a thought - bye bye. \n\ngeorge: too much? \n\ngeorge: boy - i'm really surprised at elaine - that whole phone business - she should know better than that. \n\njerry: hey - hey - hey! \n\ngeorge: what? \n\njerry: where do you think this relationship is? if you are thinking of instituting an open-door urination policy, let me disabuse you of that notion right now, my friend. \n\ngeorge: you're so uptight. \n\njerry: uptight? let's all just have a big pee party. hey everybody, grab a bucket. we're going up to jerry's. it's a pee party. \n\nphone tape: jerry, this is elizabeth clark calling from james kimbrough's office at nbc. could you please give us a call?thanks. \n\njerry: hello. yeah, hi, this is jerry seinfeld calling for james kimbrough. hello? hi? uh huh, really, uh, no problem, definitely, ok, buhbye. that was james kimbrough. \n\ngeorge: who's he? \n\njerry: he is the new president of nbc. he wants to sit down with us and talk about \"jerry.\" \n\ngeorge: our show, \"jerry\"? \n\njerry: right. \n\ngeorge: \"jerry\", oh my god. he wants to talk about \"jerry\"? \n\njerry: yeah! \n\ngeorge: when? \n\njerry: today, like right now. \n\ngeorge: right now? \"jerry\"? \n\njerry: \"jerry\"! \n\ngeorge: he wants to talk about \"jerry\"? \n\njerry: he wants to talk about \"jerry\"! \n\ngeorge: \"jerry\"! \n\njerry: \"jerry\"! \n\ngeorge: can i go like this? \n\njerry: sure! \n\ngeorge: no sports jacket? i don't need a sports jacket? writers wear sports jackets. \n\njerry: forget the sports jacket. \n\ngeorge: i won't feel like a writer. \n\njerry: you're not a writer. \n\ngeorge: right! \n\ngeorge: water. need some water! water here! \n\njerry: ok, now listen, i don't want any scenes in here like the last time. \n\ngeorge: don't worry, don't worry, no scenes. \n\njerry: don't blow this. \n\ngeorge: i will not blow this. \n\njerry: if he says he doesn't want it to be a show about nothing, don't go nuts. \n\ngeorge: it's fine, it doesn't have to be about nothing. \n\njerry: he might not want nothing. \n\ngeorge: something, nothing, i could care less. \n\njerry: he might want a show about anything and everything. \n\ngeorge: anything, everything, something, nothing - who the hell cares? put me down. i'm down! \n\njerry: all right. \n\nreceptionist: mr. kimbrough is ready to see you \n\ngeorge: magic time. \n\njerry: what? \n\ngeorge: nothing \n\nreceptionist: mr. kimbrough. \n\nstu: hey, jerry, good to see you. \n\ngeorge: hey, hey, hey! \n\nstu: how you been? \n\njerry: good, good. you remember george. \n\nstu: george, good to see you. \n\ngeorge: hello stu. \n\nstu: you remember jay crespi. \n\ngeorge: jay crespi, how am i gonna forget jay crespi? \n\nstu: this is james kimbrough. \n\nkimbrough: nice to meet you, pleasure, thanks for coming in. \n\ngeorge: kimbrough. \n\njerry: don't spell. \n\ngeorge: k-i-m-b-r-o-u-g-h \n\nkimbrough: that's right. \n\ngeorge: it's a talent i have. \n\nkimbrough: why don't we sit down, glad you're here. \n\ngeorge: woo! some day out there - you ever see weather like that? woo! it's crisp - it's crispy crisp. \n\njerry: shut up, george. \n\nkimbrough: can i get you anything? \n\ngeorge: what do we have in the fruit department? \n\njerry: oy. \n\nstu: pineapple. \n\ngeorge: oh, that's a dangerous fruit. it's like a weapon that thing, got spikes on the end. you can get killed from one of those things. \n\nkimbrough: anyway, let me tell you why i called. when i took over here last month, i reviewed what was in development,and it was pretty much same old, same old. \n\ngeorge: been there, done that. \n\nkimbrough: right. i was looking for something different. something that would have people talking at the water coolers. \n\ngeorge: water coolers? \n\ncrespi: we call it a water-cooler show. \n\njerry: because the next day in the offices, people gather around the water coolers to talk about it, right? \n\ngeorge: see, i think people would talk about it at the coffee machines. \n\njerry: well it's probably just easier to say \"water cooler show\" than \"coffee machine show.\" \n\ngeorge: it's really not accurate. nobody drinks from a water cooler any more - they use bottles. \n\njerry: but i think mr. kimbrough makes a good point. \n\nkimbrough: anyway, stu here started telling me about a show, \"jerry\", that he developed five years ago. \n\nstu: i have always loved it. \n\nkimbrough: he said it was a show about nothing. so, i saw the pilot and i've got to tell you - i flipped out. \n\ncrespi: he totally flipped out. \n\nkimbrough: what i want to do is put it on the air. 13-episode commitment. start it off on wednesday night, build up an audience. this show needs time to grow. i love that kramer guy. \n\njerry: he's a little off the wall. \n\ncrespi: oh yeah. \n\nstu: kramer. \n\nkimbrough: and elaine - i wouldn't mind seeing something happening between you two. \n\njerry: definitely. \n\ngeorge: i tell you, i really don't think so-called relationship humor is what this show is all about. \n\nkimbrough: or we could not do the show altogether, how about that? \n\ngeorge: or we could get them together. woo! \n\ngeorge: yeah! \n\njerry: yeah! \n\nelaine: jill, hi, it's elaine. well, i'm calling from my home. indoors. well, i was just calling to see how your fa.. i'm sorry, i'm getting another call. hang on just a second. hello? \n\njerry: hi. elaine, it's me. \n\nelaine: jerry, i'm on the other line. \n\njerry: no no - this is an emergency - get off the phone. \n\nelaine: i'm sorry, jill. i'm going to have to take this call. jerry, what's the emergency? \n\njerry: the \"jerry\"'s back on - the tv show! george and i are moving to california! \n\nelaine: that's the emergency? \n\njerry: did you hear what i said? \n\nelaine: i was on the other line talking to jill. \n\njerry: jill? well, why didn't you say so? \n\nelaine: you said it was an emergency. \n\njerry: so now she's lost a phone face-off? that's even worse than your cell phone walk-and-talk. \n\nhelen: congratulations, they're doing the show. \n\nmorty: they should have put that show on 5 years ago. bunch of idiots at that network. can i tell you something, jerry? it's all crap on tv. the only thing i watch is xena the warrior princess. she must be about six-six. \n\nhelen: she's not six-six. \n\nmorty: jerry, you ever watch that? \n\njerry: yeah, it's pretty good. \n\nestelle: they picked up the show? \n\ngeorge: i'm moving to california. \n\nfrank: oh baby-doll, this kid's going places, i told you. \n\nestelle: the nbc guy liked it? \n\ngeorge: of course he liked it. \n\nestelle: he told you he liked it? \n\ngeorge: he wouldn't put it on if he didn't like it. \n\nestelle: well, what are you doing? \n\ngeorge: i'm writing. \n\nestelle: you know how to write? \n\nfrank: without the writing, you have nothing. you're the ones that make them look good. \n\nestelle: since when do you know how to write? i never saw you write anything. \n\ngeorge: ma?! \n\nestelle: i don't know how you're going to write all those shows. and where are you get all the ideas? \n\nfrank: would you leave him alone? you'll shatter his confidence! \n\ngeorge: i don't need any ideas. it's a show about nothing. \n\nestelle: nothing. please. i'll tell you the truth - the whole thing sounds pretty stupid to me. \n\njerry: nbc is letting me use their private jet? and i can go anywhere i want? that's fantastic! thanks. great. okay, bye. \n\nkramer: oh hey! \n\njerry: hey - how was the beach? \n\nkramer: oh, you missed it, buddy - lot of femininas - some major femininas \n\njerry: i had a little meeting today at nbc. what are you doing? \n\nkramer: you know, i went swimming and i can't get this water out of my ear. \n\njerry: so do you remember five years ago, we did that pilot, \"jerry\"? well, the new guy at nbc wants to do it. they're putting it on the air! they're giving us a 13-episode commitment. george and i are moving to california! \n\nkramer: you're moving to california? \n\njerry: yeah, only for a while. \n\nkramer: yeah, but jerry, what happens if the show's a hit? you could be out there for years! you might never come back. \n\njerry: no, i'll be back. \n\nkramer: jerry. it's l.a. nobody leaves. she's a seductress, she's a siren, she's a virgin, she's a whore. \n\njerry: and my agent said as a bonus, i can use their private jet, so we'll all go somewhere - the four of us, one big fling before george and i go to california. \n\nkramer: fling! \n\nelaine: so we can go anywhere we want? \n\njerry: anywhere. \n\nelaine: why are they doing this? \n\njerry: i think they want to make it up to us cause they let this thing sit on their shelf for five years. \n\nelaine: this is all very exciting. \n\ngeorge: so? where are we going? \n\nkramer: i say japan. \n\nelaine: why japan? \n\nkramer: oh - geishas - they cater to your every whim. they're shy at first, but they're quite skilled at conversation. they can discuss anything from world affairs to the fine art of fishing - or baking. \n\nelaine: oh - i got it - how about russia? \n\njerry: russia, it's so bleak. \n\nelaine: it's not bleak - it's springtime. \n\njerry: it's still bleak. \n\nelaine: you can't be bleak in spring. \n\njerry: you can be bleak in spring. \n\ngeorge: if you're bleak, you're bleak. \n\nelaine: what about switzerland? \n\nkramer: oh - switzerland - the von trapp family, huh? \n\ngeorge: it's a bit hilly - no? \n\nelaine: you're not going to do any walking. \n\ngeorge: what if i want to walk around a little? \n\nelaine: so then you'll walk down the hill and we'll pick you up. \n\ngeorge: what if i'm at the bottom? \n\nelaine: all right! you know what, just forget it! \n\njerry: alright - come on - come on now, people. let's face it, we're not all going to agree on anything. why don't we all just go to paris? \n\nelaine: i'll go to paris. \n\ngeorge: me too. \n\nkramer: oh yeah - oui oui. \n\njerry: so that's it - it's settled, we're going to paris. \n\ngroup: yeah! \n\nelaine: hey. nbc limo is downstairs - beep beep beep. {nbc tune} i'm just going to call jill one more time before we go. \n\njerry: wait, you can't make a call like that on your way out. you can't rush that conversation. \n\nelaine: well, i can't call from the limo. can i call from the plane? \n\njerry: first you make a cell-phone walk-and-talk, then she loses a call-waiting face-off, now you're talking about a plane call? \n\nelaine: all right, i'll just have to call her from paris. \n\nnewman: hello, jerry. \n\njerry: hello, newman. what gives? \n\nnewman: i was speaking earlier with kramer and he mentioned something about a private jet to paris? \n\njerry: yeah, that's right. \n\nnewman: well, i hear it's quite beautiful there this time of year, and of course you know i'm one-quarter french. \n\njerry: really. \n\nnewman: oh yes, in fact i still have family there. this probably won't interest you, but i have a cousin there who's suffering very badly. she's lost all use of her muscles. she can only communicate by blinking. i would so love to see her - bring a ray of sunshine into her tragic life. but alas, i can't afford it, for i am, as you know, but a simple postal worker. \n\njerry: that's a shame. \n\nnewman: take me! take me! \n\njerry: oh, forget it. pull yourself together. you're making me sick. be a man! \n\nnewman: all right! but hear me and hear me well - the day will come. oh yes, mark my words, seinfeld - your day of reckoning is coming. when an evil wind will blow through your little playworld, and wipe that smug smile off your face. and i'll be there, in all my glory, watching - watching as it all comes crumbling down. \n\ncaptain: ah, jerry? \n\njerry: yeah. \n\ncaptain: i'm captain maddox this is my co-pilot, kurt adams. ready to go to paris? \n\njerry: all set. we'll just grab the bags. \n\ncaptain: don't worry about that. we'll take care of them for you. \n\njerry: just keeps on getting better and better. \n\njerry: not bad. \n\nelaine: wow! \n\nkramer: the only way to fly. \n\ngeorge: this is it? \n\ngeorge: i'm sorry - i have to say, i'm a little disappointed, i thought it would be a lot nicer. \n\njerry: you're complaining about a private jet? \n\ngeorge: you think this is the plane that ted danson gets? \n\njerry: ted danson is not even on the network anymore. \n\ngeorge: still, i bet when they gave him a plane, it was a lot nicer than this one. \n\nelaine: will you shut up? you are ruining the whole trip. \n\ngeorge: this is a real piece of junk. i don't even feel safe on this thing. i have a good mind to write a letter tomr. kimbrough. \n\njerry: you're not writing any letters! \n\nelaine: will you turn around? \n\ngeorge: why? \n\nelaine: you are annoying me sitting like that. it's effeminate. \n\ngeorge: it's effeminate to sit like this? \n\nelaine: yes, i think it's a little effeminate. \n\ngeorge: how is this effeminate? \n\nelaine: i don't know - it just is. \n\ngeorge: kramer, what are you doing? \n\njerry: still got water in your ear? \n\nkramer: can't get rid of it. maybe it leaked inside my brain. \n\ngeorge: would you stop that? it's not safe to be jumping up and down on a plane. \n\nkramer: i got to get it out, i can't take this anymore. \n\ngeorge: kramer, don't be fooling around up here. \n\ngeorge: kramer! \n\ncaptain: hey, get the hell out of here! \n\nelaine: what is that? \n\ngeorge: oh my god! \n\nelaine: what is that noise? what is that noise? \n\njerry: kramer, what the hell did you do? \n\nkramer: i lost my balance. \n\nelaine: oh my god! \n\nelaine: what's going on? \n\njerry: kramer! \n\nkramer: it was an accident. \n\ngeorge: i told you to stop with the hopping. \n\nelaine: oh my god, we're going down. we're going to die! \n\ngeorge: just when i was doing great. i told you god wouldn't let me be successful. \n\njerry: is this it? is this how it ends? it can't- it can't end like this. \n\nkramer: i'm ready! i'm ready! glory hallelujah! \n\ngeorge: jerry? jerry can you hear me? \n\njerry: yeah. \n\ngeorge: there's something i have to tell you. \n\njerry: what? what is it? \n\ngeorge: i cheated in the contest. \n\nelaine: what? \n\njerry: what? \n\ngeorge: the contest - i cheated. \n\njerry: why? \n\ngeorge: because i'm a cheater! i had to tell you. \n\njerry: great - i won. \n\nelaine: jerry, i gotta tell you something too. \n\njerry: yeah, elaine i got something i want to say to you. \n\nelaine: no no - me first. \n\njerry: alright. \n\nelaine: jerry, i've always loved ..u.. \n\ngeorge: hey - what's going on? \n\nkramer: we're straightening out! \n\nelaine: we're straightening out? \n\njerry: we're straightening out! \n\ngeorge: we're straightening out! \n\ngroup: yeah! \n\ncaptain: well, again, sorry about that little mishap. but once you get everything checked out there shouldn't be anymore problems. \n\njerry: where are we? \n\ncaptain: latham, massachusetts. why don't you take a cab into town, get yourself something to eat. i got your beeper number - i'll beep you as soon as we're ready. \n\njerry: okay. \n\nelaine: okay. \n\njerry: we'll see you later. \n\nelaine: well, what are we going to do about paris? i mean are we actually going to get back on this plane? \n\njerry: i say we go back to new york, and take a regular flight. \n\ngeorge: i'm not getting on a regular plane now - i'm all psyched up to go on a private jet. no way i'm getting on a regular plane. \n\nelaine: well, i'm sure that they would fly us first class. \n\ngeorge: first class doesn't make it anymore. now you get on the phone with kimbrough, tell him what happened and tell him to get another plane down here, but this time, the good one - the ted danson plane. \n\njerry: alright, i'll feel him out. \n\ngeorge: yeah, just tell him to hurry it up. \n\nstranger: nice day. \n\njerry: another one? \n\nrobber: alright fatso, out of the car. \n\nkramer: i want to capture this. \n\nrobber: come on! gimme your wallet. \n\nvogel: don't shoot. \n\njerry: well, there goes the money for the lipo. \n\nelaine: see, the great thing about robbing a fat guy is it's an easy getaway. you know? they can't really chase ya! \n\ngeorge: he's actually doing him a favor. it's less money for him to buy food. \n\nrobber: i want your wallet. come on. come on, come on. \n\njerry: that's a shame. alright, i'm gonna call nbc. \n\nvogel: officer, he's stealing my car! officer, i was carjacked. i was held up at gunpoint! he took my wallet, everything! \n\njerry: okay, thanks anyway. they can't get another plane. \n\nkramer: all right, what's wrong with the plane we got? they're just checking it out. \n\nelaine: forget it. \n\njerry: no, no, no. we're not getting on there. come on, let's go get something to eat in sticksville. \n\nofficer: all right, hold it right there. \n\nkramer: what? \n\nofficer: you're under arrest. \n\njerry: under arrest? what for? \n\nofficer: article 223-7 of the latham county penal code. \n\nelaine: what? no, no - we didn't do anything. \n\nofficer: that's exactly right. the law requires you to help or assist anyone in danger as long as it's reasonable todo so. \n\ngeorge: i never heard of that. \n\nofficer: it's new. it's called the good samaritan law. let's go. \n\nelaine: the good samaritan law? are they crazy? \n\ngeorge: why would we want to help somebody? \n\nelaine: i know. \n\ngeorge: that's what nuns and red cross workers are for. \n\nkramer: the samaritans were an ancient tribe - very helpful to people. \n\nelaine: alright - um, excuse me, hi, could you tell me what kind of law this is. \n\ndeputy: well, they just passed it last year. it's modeled after the french law. i heard about it after princess diana was killed and all those photographers were just standing around. \n\njerry: oh, yeah. \n\nelaine: oh, yeah. \n\ndeputy: you're the first ones to be arrested on it, probably in the whole country. \n\ngeorge: all right, so what's the penalty here? let's just pay the fine or something and get the hell out of here. \n\ndeputy: well, it's not that easy. now see, the law calls for a maximum fine of $85,000 and as much as five years in prison. \n\nelaine: what? \n\ngeorge: oh no no no no - we have to be in california next week. we're starting a tv show. \n\ndeputy: california? oh gosh, i don't think so. yeah, my guess is you're gonna be prosecuted. better get yourselves a good lawyer. \n\nchiles: who told you to put the cheese on? did i tell you to put the cheese on? i didn't tell you to put the cheese on. \n\nsecretary: jerry seinfeld on the phone. \n\nchiles: you people with the cheese. it never ends. hello? uh huh. uh huh. uh huh. good samaritan law? i never heard of it. you don't have to help anybody. that's what this country's all about. that's deplorable, unfathomable, improbable. hold on. suzie, cancel my appointment with dr. bison. and pack a bag for me. i want to get to latham, massachusetts,right away. \n\nhoyt: so they got jackie chiles, huh? (sets down the newspaper) uh hmm. you know what that means. this whole place is going to be swarming with media by the time this thing is over. you're not going to be able to find a hotel room in this town. the whole country is going to be watching us. now we got to do whatever it takes to win it, no matter what the cost. the big issue in this trial is going to be character. i want you to find out everything you can about these people - and i mean everything. \n\nkramer: mmmm, this is pretty good chow, huh? \n\ngeorge: would it kill him to check up on us? no - drops off the meals and that's it. i realize we're prisoners, but we're still entitled to catsup. \n\nelaine: i guess we could've called for help. \n\njerry: but then we would have missed the whole thing. \n\nkramer: i still had it on video. we could have watched it later. \n\ngeorge: yeah, he's right. \n\njerry: i forgot about the video. \n\nelaine: sure - the video. \n\nelaine: what is that? \n\njerry: plane's ready. \n\nrivera: hi everybody, i'm geraldo rivera. tonight we'll be talking about what most of you have probably been discussing in your homes, and around the water coolers in your offices. i am speaking of course of the controversial good samaritan trial that gets underway thursday in latham, massachusetts. now before we meet our distinguished panel, let's go to latham live, where jane wells is standing by. jane- \n\nwells: yes. good evening, geraldo. \n\nrivera: what's the mood? what's going on tonight? \n\nwells: well, latham is fairly quite tonight, considering the media circus that has descended upon this quaint little town. \n\nrivera: and what about the defendants - the so-called new york four. how are they holding up? \n\nwells: well, i did speak with one of the deputies who had some contact with them, and he told me quote \"there's no love lost with that group.\" \n\nrivera: anything else, jane? \n\nwells: there also seems to be some friction between mr. seinfeld, and ms. benes. the rumor is that they once dated, and it's possible that ended badly. \n\nrivera: well, ladies and gentlemen, who know, maybe this trial will bring them closer together. maybe they'll even end up getting married. \n\nhelen: i hope you packed enough - this trial could last for weeks. \n\nmorty: what's all that? \n\nhelen: cereal. \n\nmorty: you're packing cereal? \n\nhelen: i'm bringing it for jerry. \n\nmorty: you got enough here for a life sentence. \n\nhelen: he likes it. he says he misses that more that anything. \n\nmorty: so bring a snack-pack. \n\nestelle: poor georgie, was it our fault this happened to him? did we do something wrong? maybe it was our fault. \n\nfrank: maybe it was your fault. it wasn't my fault. i can tell you that. \n\nestelle: oh, so it was my fault, but not yours. \n\nfrank: you were the one who smothered him. \n\nestelle: i did not smother him. \n\nfrank: you smothered! he couldn't get any air! he couldn't breathe! he was suffocating! \n\nestelle: sure, and you were always in korea with your religious chachkis. \n\nfrank: i had to make a living! \n\nkramer: this is excellent huh? don't worry i didn't use too much milk, cause i know we gotta make it last. \n\njerry: you know i've had to reduce my milk level. my whole life i've always filled to at least three quarters - sometimes, to the top of the cereal. now, to conserve, i can't even see the milk anymore. it's a big adjustment. \n\nkramer: i bet. \n\njerry: it's one of the hardest things i've ever had to do. \n\nchiles: good morning. \n\nelaine: good morning, jackie. \n\njerry: good morning. \n\nchiles: is everybody ready? didn't i tell you i wanted you to wear the cardigan? \n\ngeorge: it makes me look older. \n\nchiles: look older? do you think this is a game? is that what you think this is? i'm trying to give you amoral compass. you have no moral compass. you're going to walk into that courtroom, and the jury's going to see a mean, nasty, evil george costanza. i want them to see perry como. no one's going to convict perry como. perry como helps out a fat tub who's getting robbed. \n\nchiles: do you think it's funny? \n\njerry: no. \n\nchiles: you damn right it isn't. you better not be carrying on laughing in that courtroom, funny man. cause if you start getting all smart-alecky, making wisecracks, acting a fool, you gonna find yourself in here for a long, long time. i don't like that tie. suzie, get one of my ties from my briefcase. \n\nelaine: how do i look, jackie? \n\nchiles: oh, you looking good. you look strong. you one fine-looking sexy lady. \n\nelaine: thank you, jackie. \n\nkramer: how bout me, jackie? \n\nchiles: kramer, you always look good. you got respect for yourself. you're genuine. jury's going to pick up on that. \n\nchiles: here. \n\njerry: this one? \n\nchiles: that's right. \n\njerry: do i have to? \n\nelaine: jackie says put it on, jerry. \n\nbailiff: all rise. fourth district county court, latham, massachusetts is now in session. the honorable judge arthur vandelay presiding. \n\ngeorge: vandelay? the judge's name is vandelay? \n\nchiles: vanda who? \n\ngeorge: jerry, did you hear that? \n\njerry: yeah. \n\ngeorge: i think that's a good sign. \n\nvandelay: is the district attorney ready to proceed? \n\nhoyt: we are, your honor. \n\nvandelay: mr. hoyt. \n\nhoyt: ladies and gentlemen, last year, our city council by a vote of twelve to two, passed a good samaritan law. now, essentially, we made it a crime to ignore a fellow human being in trouble. now this group from new york not only ignored, but, as we will prove, they actually mocked the victim as he was being robbed at gunpoint. i can guarantee you one other thing, ladies and gentlemen, this is not the first time they have behaved in this manner. on the contrary, they have quite a record of mocking and maligning. this is a history of selfishness, self-absorption, immaturity, and greed. and you will see how everyone who has come into contact with these four individuals has been abused, wronged, deceived and betrayed. this time, they have gone too far. this time they are going to be held accountable. this time, they are the ones who will pay. \n\nvandelay: mr. chiles. \n\nchiles: i am shocked and chagrined, mortified and stupefied. this trial is outrageous! it is a waste of the taxpayers' time and money. it is a travesty of justice that these four people have been incarcerated while the real perpetrator is walking around laughing - lying and laughing, laughing and lying. you know what these four people were? they were innocentbystanders. now, you just think about that term. innocent. bystanders. because that's exactly what they were. we know theywere bystanders, nobody's disputing that. so how can a bystander be guilty? no such thing. have you ever heard of a guilty bystander? no, because you cannot be a bystander and be guilty. bystanders are by definition, innocent. that is the nature of bystanding. but no, they want to change nature here. they want to create a whole new animal - the guilty bystander. don't you let them do it. only you can stop them. \n\nvandelay: is the prosecution ready to present its first witness? \n\nhoyt: we are, your honor. call officer matt vogel to the stand. \n\nbailiff: call matt vogel. \n\nhoyt: so they were just standing there? \n\nvogel: yes. \n\nhoyt: did one of them have a video camera? \n\nvogel: yes. \n\nhoyt: your honor, with the court's permission, we would like to play back that video and enter it into evidence as exhibit a. \n\nvandelay: proceed. \n\nvogel: don't shoot. \n\njerry: well, there goes the money for the lipo. \n\nelaine: see, the great thing about robbing a fat guy is it's an easy getaway. they can't really chase ya! \n\ngeorge: he's actually doing him a favor. it's less money for him to buy food. \n\n[new witness: the victim of the robbery] \n\nhoyt: so they just stood there and did nothing? \n\nvogel: yeah, nothing. nothing! \n\nhoyt: no further questions. \n\ngeorge: hey! great plane! thanks a lot. piece of junk. you know you almost got us killed! \n\nhoyt: call mabel choate to the stand. \n\nbailiff: call mabel choate. \n\nchiles: your honor. i most strenuously and vigorously object to this witness. she was not present at the time of the incident. her testimony is irrelevant, irrational, and inconsequential. \n\nhoyt: your honor, the prosecution has gone to great lengths and considerable cost to find these character witnesses.it is imperative that we establish this is not merely an isolated incident. it's part of a pattern of anti-social behavior that's been going on for years. \n\nvandelay: objection overruled. i'll hear the witness. \n\nhoyt: now, mrs. choate, would you please tell the court what happen the evening of january 4th. \n\nchoate: well, i was in snitzer's bakery when i got accosted by that man. \n\nhoyt: let the record show that she is pointing at mr. seinfeld. \n\nhoyt: what did he want? \n\nchoate: my marble rye. \n\nhoyt: your marble rye? \n\nchoate: i got the last one. he kept persisting, and i said no. \n\nhoyt: and then you left the bakery. \n\nchoate: that's right. \n\nhoyt: but it didn't end there, did it, mrs. choate? \n\nchoate: oh no. \n\njerry: gimme that rye. \n\nchoate: stop it. \n\njerry: i want that rye lady. \n\nchoate: help - someone help. \n\njerry: shut up, you old bag! \n\nhoyt: no further questions. \n\nhoyt: i call marla penny to the stand. \n\nbailiff: call marla penny. \n\njerry: the virgin! \n\nhoyt: and what was your connection to the defendants? \n\npenny: i dated mr. seinfeld for several weeks in the autumn of 1992. \n\nhoyt: then on the evening of october 28, there was an abrupt end to that relationship. tell us what happened. \n\npenny: it's rather difficult to talk about. \n\nhoyt: it's alright. take your time. \n\npenny: well, i became aware of a - \n\nhoyt: a what? \n\npenny: a, uh - \n\nhoyt: yes? \n\npenny: a contest. \n\nhoyt: contest? \n\npenny: yes. \n\nhoyt: what was the nature of the contest? \n\npenny: oh please, i can't. \n\nhoyt: it's okay. \n\npenny: the four of them made a wager to see if they could - \n\nhoyt: yes? \n\npenny: to see who could go the longest without gratifying themselves. \n\npeterman: for the love of god! \n\npenny: it was horrible, horrible! \n\nhoyt: call donald sanger to the stand. \n\njerry: who the hell is that? \n\nmr. sanger: come on donald, you're doing fine. \n\ngeorge: the bubble boy! \n\nchiles: bubble boy? \n\njerry: that's right, the bubble boy. \n\nchiles: what's a bubble boy? \n\njerry: he's a boy who lives in a bubble. \n\nbubble boy: what the hell are all you looking at? \n\nhoyt: so donald, would you please tell the court about the incident that occurred in your house, october 7th, 1992. \n\nbubble boy: well, jerry seinfeld was supposed to come to my house, but his friend costanza showed up instead, so i challenged him to a game of trivial pursuit. \n\ngeorge: who invaded spain in the eighth century? \n\nbubble boy: that's a joke - the moors. \n\ngeorge: oh no - i'm so sorry, it's the moops. the correct answer is the moops. \n\nbubble boy: moops? let me see that. that's not moops, you jerk. it's moors. it's a misprint. \n\ngeorge: sorry, the card says moops. \n\nbubble boy: it doesn't matter. it's moors - there's no moops. \n\ngeorge: it's moops. \n\nbubble boy: moors! \n\ngeorge: moops! \n\ngeorge: help! someone! \n\nbubble boy: there's no moops, you idiot. \n\nsusan: stop it! let go of him! \n\nmrs. sanger: donald, stop it. no. donald, stop it. \n\ngeorge: it was moops. \n\nbubble boy: moors. \n\n[new witness: the lady kramer gave a defective wheelchair to in \"the handicapped spot\"] \n\nhoyt: so mr. costanza parked in a handicapped spot, and as a result you got in an accident, and your wheelchair was destroyed? \n\nlady: that's right. \n\nhoyt: and then mr. kramer gave you a used wheelchair? \n\nlady: that's right. \n\n[new witness: dr. wilcox, the doctor on duty when susan died] \n\nhoyt: so you were the doctor on duty the night susan ross died? \n\nwilcox: yes, that's right. it was may 16, 1996. i'll never forget it. \n\nhoyt: so you broke the news to mr. costanza? could you tell the court, please, what his reaction was? \n\nwilcox: i would describe it as restrained jubilation. \n\nmr. ross: murderer! \n\nmrs. ross: he killed our daughter! he knew those envelopes were toxic! \n\nvandelay: order in this court! \n\nhoyt: call sidra holland to the stand. \n\nchiles: whew! look at this one, she fine. you dated her? \n\nhoyt: so you met jerry seinfeld in a health club sometime in 1993? \n\nsidra: yes. \n\nhoyt: and you also met miss benes in that same health club? \n\nsidra: yes, that's true. \n\nhoyt: would you describe the circumstances of that meeting. \n\nsidra: we were in the sauna, making chit-chat. \n\nsidra: you know, i've seen you around the club. my name's sidra. this is marcie. \n\nelaine: oh, hi, i'm elaine. \n\nhoyt: so, she pretended to trip, and she fell into your breasts? \n\nsidra: yes. \n\nhoyt: why would she do something like that? \n\nsidra: because he sent her in there to find out if they were real. \n\n[new witness: joe bookman, library cop] \n\nhoyt: state your name. \n\nbookman: bookman, joe bookman. \n\nhoyt: and what's your occupation? \n\nbookman: i'm a library cop. \n\nhoyt: what does a library cop do? \n\nbookman: we chase down library delinquents. \n\nhoyt: anyone in this room ever delinquent? \n\nbookman: yeah, he was. right over there - seinfeld. \n\nhoyt: how long was his book overdue? \n\nbookman: 25 years. we don't call them delinquent after that long. \n\nhoyt: what do you call them? \n\nbookman: criminals. \n\n[new witness: george's old girlfriend] \n\nhoyt: so you and mr. costanza were dating. \n\nwoman: yes. \n\nhoyt: and then what happened? \n\nwoman: well, i invited him to attend my son's birthday party and - \n\ngeorge: fire! get out of the way! \n\n[new witness: parking lot security guard] \n\nguard: at the time, i was employed as a security guard in the parking lot at the garden valley shopping mall. \n\njerry: why would i do it unless i was in mortal danger? i know it's against the law. \n\nguard: i don't know. \n\njerry: because i could get uromycitisis poisoning and die - that's why. \n\nhoyt: uromycitisis! i wonder if they're having any trouble controlling themselves during this trial? perhaps these two hooligans would like to have a pee party right here in the courtroom! \n\nchiles: objection, your honor! this is completely inappropriate! my clients' medical condition is not on trial here! i refer you to the disability act of 1990. \n\nvandelay: sit down, mr. chiles. \n\n[new witness: police detective] \n\nhoyt: alright, detective, then what happened? \n\ndetective: we got a tip that a lot of prostitutes had been turning tricks in the parking lot. \n\nprostitute: you just cost me some money. \n\nkramer: cool it, lady. cool it. cool it, lady. cool it. \n\npolice: police officers - freeze right there! \n\nhoyt: so cosmo kramer was, in fact, a pimp. \n\n[witness: the low-talker from \"the puffy shirt\"] \n\nhoyt: so you asked mr. seinfeld if he would wear your puffy shirt on the today show? \n\nlow-talker: (mumbles) \n\nhoyt: excuse me? \n\nchiles: uh, excuse me, your honor, but what is the point of this testimony? this woman's a low-talker. i can't hear a word she's saying. so either get some other kind of microphone up there, or let's move on. \n\n[new witness: george steinbrenner] \n\nhoyt: call george steinbrenner to the stand. \n\nbailiff: call george steinbrenner. \n\nhoyt: so george costanza came to work for you in may of 1994? \n\nsteinbrenner: yes, that's right, he was good kid - a lovely boy. shared his calzone with me - that was a heck of a sandwich, wasn't it, georgie? \n\ngeorge: yes, sir, that was a good sandwich, sir. \n\nsteinbrenner: he had one little problem though. \n\nhoyt: what was that? \n\nsteinbrenner: he was a communist. thick as they come. like a big juicy steak. \n\nfrank: how could you give twelve million dollars to hideki irabu?! \n\nvandelay: order! \n\n[new witness: marcellino from \"the little jerry\"] \n\nhoyt: cock fighting? \n\nmarcellino: cock fighting. \n\n[new witness: pharmacist from \"the sponge\"] \n\npharmacist: sponges. i don't mean the kind you clean your tub with. they're for sex. said she needed a whole case of them. \n\n[new witness: elaine's old boyfriend from work] \n\nman: she exposed her nipple. \n\n[new witness: mr. pitt] \n\nhoyt: how did she try to kill you? \n\npitt: she tried to smother me with a pillow. \n\nhoyt: call yev kassem to the stand. \n\nbailiff: call yev kassem. \n\njerry: who? \n\nelaine: the soup nazi! \n\nchiles: soup nazi? you people have a little pet name for everybody. \n\nhoyt: state your name. \n\nsoup nazi: yev kassem. \n\nhoyt: could you spell that? \n\nsoup nazi: no! next question. \n\nhoyt: how do you know the defendants? \n\nsoup nazi: they used to come to my restaurant. \n\ngeorge: medium turkey chili. \n\njerry: medium crab bisque. \n\ngeorge: i didn't get any bread. \n\njerry: just forget it. let it go. \n\ngeorge: um, excuse me, i think you forgot my bread. \n\nsoup nazi: you want bread? \n\ngeorge: yes, please. \n\nsoup nazi: three dollars! \n\ngeorge: what? \n\nsoup nazi: no soup for you! \n\nsoup nazi: but the idiot clowns did not know how to order. i banned that one - the woman - for a year. then one day, she came back. \n\nelaine: five cups chopped porcini mushrooms. half a cup of olive oil. three pounds celery. \n\nsoup nazi: that's my recipe for wild mushroom. \n\nelaine: you're through, soup nazi. pack it up. no more soup for you. next! \n\nsoup nazi: she published my recipes. i had to close the store, move to argentina. she ruined my business! \n\nelaine: soup's not all that good anyway. \n\nsoup nazi: what did you say?! \n\nhoyt: the state calls mr. babu bhatt to the stand. \n\njerry: how did they find babu? \n\nelaine: i thought he was deported. \n\nhoyt: you came a long way to be here today, haven't you? \n\nhoyt: and what's your connection to the defendant? \n\nhoyt: and then what happened? \n\nrivera: hi everybody, i'm geraldo rivera and welcome to this special edition of rivera live. well, arguments in the good samaritan trial ended today. the jury has been in deliberation for four and a half hours now. let's go live to jane wells who is in latham, massachusetts, covering this trial for us. jane - \n\nwells: geraldo, just a few minutes ago, the jury asked to see the video tape. \n\nrivera: that's the one where they are overheard making sarcastic remarks during the robbery. \n\nwells: yes, it's a very incriminating piece of evidence. but i must tell you, geraldo, this courtroom and everyone who has attended this trial is still reeling from the endless parade of witness who have come forth so enthusiastically to testify against these four seemingly ordinary people. one even had the feeling that if judge vandelay didn't finally put a stop to it, it could've gone on for months. \n\nrivera: jane, whose testimony do you think resonated most strongly with this jury? \n\nwells: that is so hard to say. certainly there's the doctor with the poison invitations. the bubble boy was an extremely sympathetic and tragic figure. and that bizarre contest certainly didn't sit well with this small town jury.there's the woman they sold the defective wheelchair to, the deported pakistani restaurateur. geraldo, it just went on, and on, and on, into the night. \n\nrivera: and so we wait. \n\njerry: do they make you wear uniforms in prison? \n\nelaine: i think so. \n\njerry: it's not that bright orange one is it? \n\nelaine: i hope it's not that one, because i cannot wear orange. \n\nkramer: will you stop worrying? jackie's going to get us off. he never loses. how about when he asked that cop if a black man had ever been to his house. did you see the look on his face? \n\nestelle: sorry to bother you, judge. \n\nvandelay: how did you get in here? \n\nestelle: please, if he's found guilty, please be kind to him. he's a good boy. \n\nvandelay: this is highly irregular. \n\nestelle: well, maybe there's something i can do for you. \n\nvandelay: what do you mean? \n\nestelle: you know \n\nsidra: oh, jackie, you're so articulate. \n\nchiles: we have plenty of time, too. this jury could be out for days. \n\nchiles: hello? damn. they're ready. \n\njerry: hey elaine, what was it you were about to say to me on the plane when it was going down? \n\nelaine: i've always loved ... united airlines. \n\nkramer: i think it's going to be okay - that girl just smiled at me. \n\njerry: maybe because she knows you're going to jail. \n\nbailiff: all rise. \n\nvandelay: ladies and gentlemen of the jury, have you reached a verdict? \n\nforeman: we have, your honor. \n\nvandelay: will the defendants please rise. and how do you find, with respect to the charge of criminal indifference? \n\nforeman: we find the defendants - guilty. \n\nvandelay: order! order in this court, i will clear this room! i do not know how, or under what circumstances the four of you found each other, but your callous indifference and utter disregard for everything that is good and decent has rocked the very foundation upon which our society is built. i can think of nothing more fitting than for the four of youto spend a year removed from society so that you can contemplate the manner in which you have conducted yourselves. i know i will. this court is adjourned. \n\ngeorge: you had to hop! you had to hop on the plane. \n\nelaine: puddy, don't wait for me. \n\npuddy: alright. \n\nfrank: we gotta get out of here. we want to beat the traffic. \n\nsidra: come on, jackie. let's go. \n\njerry: what? \n\nchiles: oh, and by the way, they're real, and they're spectacular. \n\njerry: well, it's only a year. that's not so bad. we'll be out in a year, and then we'll be back \n\nkramer: could be fun. don't have to worry about your meals, or what you're going to do saturday night. and they do shows. yeah, we could put on a show - maybe \"bye bye birdie\" or \"my fair lady\". elaine, you could be liza doolittle. \n\nelaine: why don't you just blow it out your a... \n\nelaine: if i call jill from prison, do you think that would make up for the other ones? \n\njerry: sure. \n\nelaine: cause you only get one call. the prison call is like the king of calls. \n\njerry: i think that would be a very nice gesture. \n\nkramer: i got it - it's out! how about that, huh? oh, boy, what a relief. \n\njerry: see now, to me, that button is in the worst possible spot. \n\ngeorge: really? \n\njerry: oh yeah. the second button is the key button. it literally makes or breaks the shirt. look at it, it's too high, it's in no-man's land. \n\ngeorge: haven't we had this conversation before? \n\njerry: you think? \n\ngeorge: i think we have. \n\njerry: yeah, maybe we have. \n\njerry: so what is the deal with the yard? i mean when i was a kid my mother wanted me to play in the yard. but of course she didn't have to worry about my next door neighbor tommy sticking a shiv in my thigh. and what's with the lockdown? why do we have to be locked in our cells? are we that bad that we have to be sent to prison, in prison? you would think the weightlifting and the sodomy is enough. so, anyone from cellblock d? \n\nprisoner 1: i am. \n\njerry: i'll talk slower. i'm kidding - i love cellblock d. my friend george is in cellblock d. what are you in for,sir? \n\nprisoner 2: murder one. \n\njerry: murder one? oooooo, watch out everybody. better be nice to you. i'm only kidding sir - lighten up. how about you, what are you in for? \n\nprisoner 3: grand theft auto. \n\njerry: grand theft auto - don't steal any of my jokes. \n\nprisoner 3: you suck - i'm gonna cut you. \n\njerry: hey, i don't come down to where you work, and knock the license plate out of your hand. \n\nguard: alright, seinfeld, that's it. let's go. come on. \n\njerry: alright, hey, you've been great! see you in the cafeteria. \n\n"
  },
  {
    "path": "DEEP LEARNING/NLP/LSTM RNN/Next Chars pytorch/project-tv-script-generation/helper.py",
    "content": "import os\nimport pickle\nimport torch\n\n\nSPECIAL_WORDS = {\"PADDING\": \"<PAD>\"}\n\n\ndef load_data(path):\n    \"\"\"\n    Load Dataset from File\n    \"\"\"\n    input_file = os.path.join(path)\n    with open(input_file, \"r\") as f:\n        data = f.read()\n\n    return data\n\n\ndef preprocess_and_save_data(dataset_path, token_lookup, create_lookup_tables):\n    \"\"\"\n    Preprocess Text Data\n    \"\"\"\n    text = load_data(dataset_path)\n\n    # Ignore notice, since we don't use it for analysing the data\n    text = text[81:]\n\n    token_dict = token_lookup()\n    for key, token in token_dict.items():\n        text = text.replace(key, \" {} \".format(token))\n\n    text = text.lower()\n    text = text.split()\n\n    vocab_to_int, int_to_vocab = create_lookup_tables(\n        text + list(SPECIAL_WORDS.values())\n    )\n    int_text = [vocab_to_int[word] for word in text]\n    pickle.dump(\n        (int_text, vocab_to_int, int_to_vocab, token_dict), open(\"preprocess.p\", \"wb\")\n    )\n\n\ndef load_preprocess():\n    \"\"\"\n    Load the Preprocessed Training data and return them in batches of <batch_size> or less\n    \"\"\"\n    return pickle.load(open(\"preprocess.p\", mode=\"rb\"))\n\n\ndef save_model(filename, decoder):\n    save_filename = os.path.splitext(os.path.basename(filename))[0] + \".pt\"\n    torch.save(decoder, save_filename)\n\n\ndef load_model(filename):\n    save_filename = os.path.splitext(os.path.basename(filename))[0] + \".pt\"\n    return torch.load(save_filename)\n"
  },
  {
    "path": "DEEP LEARNING/NLP/LSTM RNN/Next Chars pytorch/project-tv-script-generation/problem_unittests.py",
    "content": "from unittest.mock import MagicMock, patch\nimport numpy as np\nimport torch\n\n\nclass _TestNN(torch.nn.Module):\n    def __init__(self, input_size, output_size):\n        super(_TestNN, self).__init__()\n        self.decoder = torch.nn.Linear(input_size, output_size)\n        self.forward_called = False\n\n    def forward(self, nn_input, hidden):\n        self.forward_called = True\n        output = self.decoder(nn_input)\n\n        return output, hidden\n\n\ndef _print_success_message():\n    print(\"Tests Passed\")\n\n\nclass AssertTest(object):\n    def __init__(self, params):\n        self.assert_param_message = \"\\n\".join(\n            [str(k) + \": \" + str(v) + \"\" for k, v in params.items()]\n        )\n\n    def test(self, assert_condition, assert_message):\n        assert assert_condition, (\n            assert_message\n            + \"\\n\\nUnit Test Function Parameters\\n\"\n            + self.assert_param_message\n        )\n\n\ndef test_create_lookup_tables(create_lookup_tables):\n    test_text = \"\"\"\n        Moe_Szyslak Moe's Tavern Where the elite meet to drink\n        Bart_Simpson Eh yeah hello is Mike there Last name Rotch\n        Moe_Szyslak Hold on I'll check Mike Rotch Mike Rotch Hey has anybody seen Mike Rotch lately\n        Moe_Szyslak Listen you little puke One of these days I'm gonna catch you and I'm gonna carve my name on your back with an ice pick\n        Moe_Szyslak Whats the matter Homer You're not your normal effervescent self\n        Homer_Simpson I got my problems Moe Give me another one\n        Moe_Szyslak Homer hey you should not drink to forget your problems\n        Barney_Gumble Yeah you should only drink to enhance your social skills\"\"\"\n\n    test_text = test_text.lower()\n    test_text = test_text.split()\n\n    vocab_to_int, int_to_vocab = create_lookup_tables(test_text)\n\n    # Check types\n    assert isinstance(vocab_to_int, dict), \"vocab_to_int is not a dictionary.\"\n    assert isinstance(int_to_vocab, dict), \"int_to_vocab is not a dictionary.\"\n\n    # Compare lengths of dicts\n    assert len(vocab_to_int) == len(int_to_vocab), (\n        \"Length of vocab_to_int and int_to_vocab don't match. \"\n        \"vocab_to_int is length {}. int_to_vocab is length {}\".format(\n            len(vocab_to_int), len(int_to_vocab)\n        )\n    )\n\n    # Make sure the dicts have the same words\n    vocab_to_int_word_set = set(vocab_to_int.keys())\n    int_to_vocab_word_set = set(int_to_vocab.values())\n\n    assert not (vocab_to_int_word_set - int_to_vocab_word_set), (\n        \"vocab_to_int and int_to_vocab don't have the same words.\"\n        \"{} found in vocab_to_int, but not in int_to_vocab\".format(\n            vocab_to_int_word_set - int_to_vocab_word_set\n        )\n    )\n    assert not (int_to_vocab_word_set - vocab_to_int_word_set), (\n        \"vocab_to_int and int_to_vocab don't have the same words.\"\n        \"{} found in int_to_vocab, but not in vocab_to_int\".format(\n            int_to_vocab_word_set - vocab_to_int_word_set\n        )\n    )\n\n    # Make sure the dicts have the same word ids\n    vocab_to_int_word_id_set = set(vocab_to_int.values())\n    int_to_vocab_word_id_set = set(int_to_vocab.keys())\n\n    assert not (vocab_to_int_word_id_set - int_to_vocab_word_id_set), (\n        \"vocab_to_int and int_to_vocab don't contain the same word ids.\"\n        \"{} found in vocab_to_int, but not in int_to_vocab\".format(\n            vocab_to_int_word_id_set - int_to_vocab_word_id_set\n        )\n    )\n    assert not (int_to_vocab_word_id_set - vocab_to_int_word_id_set), (\n        \"vocab_to_int and int_to_vocab don't contain the same word ids.\"\n        \"{} found in int_to_vocab, but not in vocab_to_int\".format(\n            int_to_vocab_word_id_set - vocab_to_int_word_id_set\n        )\n    )\n\n    # Make sure the dicts make the same lookup\n    missmatches = [\n        (word, id, id, int_to_vocab[id])\n        for word, id in vocab_to_int.items()\n        if int_to_vocab[id] != word\n    ]\n\n    assert (\n        not missmatches\n    ), \"Found {} missmatche(s). First missmatch: vocab_to_int[{}] = {} and int_to_vocab[{}] = {}\".format(\n        len(missmatches), *missmatches[0]\n    )\n\n    assert (\n        len(vocab_to_int) > len(set(test_text)) / 2\n    ), \"The length of vocab seems too small.  Found a length of {}\".format(\n        len(vocab_to_int)\n    )\n\n    _print_success_message()\n\n\ndef test_tokenize(token_lookup):\n    symbols = set([\".\", \",\", '\"', \";\", \"!\", \"?\", \"(\", \")\", \"-\", \"\\n\"])\n    token_dict = token_lookup()\n\n    # Check type\n    assert isinstance(token_dict, dict), \"Returned type is {}.\".format(type(token_dict))\n\n    # Check symbols\n    missing_symbols = symbols - set(token_dict.keys())\n    unknown_symbols = set(token_dict.keys()) - symbols\n\n    assert not missing_symbols, \"Missing symbols: {}\".format(missing_symbols)\n    assert not unknown_symbols, \"Unknown symbols: {}\".format(unknown_symbols)\n\n    # Check values type\n    bad_value_type = [\n        type(val) for val in token_dict.values() if not isinstance(val, str)\n    ]\n\n    assert not bad_value_type, \"Found token as {} type.\".format(bad_value_type[0])\n\n    # Check for spaces\n    key_has_spaces = [k for k in token_dict.keys() if \" \" in k]\n    val_has_spaces = [val for val in token_dict.values() if \" \" in val]\n\n    assert (\n        not key_has_spaces\n    ), 'The key \"{}\" includes spaces. Remove spaces from keys and values'.format(\n        key_has_spaces[0]\n    )\n    assert (\n        not val_has_spaces\n    ), 'The value \"{}\" includes spaces. Remove spaces from keys and values'.format(\n        val_has_spaces[0]\n    )\n\n    # Check for symbols in values\n    symbol_val = ()\n    for symbol in symbols:\n        for val in token_dict.values():\n            if symbol in val:\n                symbol_val = (symbol, val)\n\n    assert (\n        not symbol_val\n    ), \"Don't use a symbol that will be replaced in your tokens. Found the symbol {} in value {}\".format(\n        *symbol_val\n    )\n\n    _print_success_message()\n\n\ndef test_rnn(RNN, train_on_gpu):\n    batch_size = 50\n    sequence_length = 3\n    vocab_size = 20\n    output_size = 20\n    embedding_dim = 15\n    hidden_dim = 10\n    n_layers = 2\n\n    # create test RNN\n    # params: (vocab_size, output_size, embedding_dim, hidden_dim, n_layers)\n    rnn = RNN(vocab_size, output_size, embedding_dim, hidden_dim, n_layers)\n\n    # create test input\n    a = np.random.randint(vocab_size, size=(batch_size, sequence_length))\n    # b = torch.LongTensor(a)\n    b = torch.from_numpy(a)\n    hidden = rnn.init_hidden(batch_size)\n\n    if train_on_gpu:\n        rnn.cuda()\n        b = b.cuda()\n\n    output, hidden_out = rnn(b, hidden)\n\n    assert_test = AssertTest(\n        {\n            \"Input Size\": vocab_size,\n            \"Output Size\": output_size,\n            \"Hidden Dim\": hidden_dim,\n            \"N Layers\": n_layers,\n            \"Batch Size\": batch_size,\n            \"Sequence Length\": sequence_length,\n            \"Input\": b,\n        }\n    )\n\n    # initialization\n    correct_hidden_size = (n_layers, batch_size, hidden_dim)\n    assert_condition = hidden[0].size() == correct_hidden_size\n    assert_message = \"Wrong hidden state size. Expected type {}. Got type {}\".format(\n        correct_hidden_size, hidden[0].size()\n    )\n    assert_test.test(assert_condition, assert_message)\n\n    # output of rnn\n    correct_hidden_size = (n_layers, batch_size, hidden_dim)\n    assert_condition = hidden_out[0].size() == correct_hidden_size\n    assert_message = \"Wrong hidden state size. Expected type {}. Got type {}\".format(\n        correct_hidden_size, hidden_out[0].size()\n    )\n    assert_test.test(assert_condition, assert_message)\n\n    correct_output_size = (batch_size, output_size)\n    assert_condition = output.size() == correct_output_size\n    assert_message = \"Wrong output size. Expected type {}. Got type {}\".format(\n        correct_output_size, output.size()\n    )\n    assert_test.test(assert_condition, assert_message)\n\n    _print_success_message()\n\n\ndef test_forward_back_prop(RNN, forward_back_prop, train_on_gpu):\n    batch_size = 200\n    input_size = 20\n    output_size = 10\n    sequence_length = 3\n    embedding_dim = 15\n    hidden_dim = 10\n    n_layers = 2\n    learning_rate = 0.01\n\n    # create test RNN\n    rnn = RNN(input_size, output_size, embedding_dim, hidden_dim, n_layers)\n\n    mock_decoder = MagicMock(wraps=_TestNN(input_size, output_size))\n    if train_on_gpu:\n        mock_decoder.cuda()\n\n    mock_decoder_optimizer = MagicMock(\n        wraps=torch.optim.Adam(mock_decoder.parameters(), lr=learning_rate)\n    )\n    mock_criterion = MagicMock(wraps=torch.nn.CrossEntropyLoss())\n\n    with patch.object(\n        torch.autograd, \"backward\", wraps=torch.autograd.backward\n    ) as mock_autograd_backward:\n        inp = torch.FloatTensor(np.random.rand(batch_size, input_size))\n        target = torch.LongTensor(np.random.randint(output_size, size=batch_size))\n\n        hidden = rnn.init_hidden(batch_size)\n\n        loss, hidden_out = forward_back_prop(\n            mock_decoder, mock_decoder_optimizer, mock_criterion, inp, target, hidden\n        )\n\n    assert (\n        hidden_out[0][0] == hidden[0][0]\n    ).sum() == batch_size * hidden_dim, \"Returned hidden state is the incorrect size.\"\n\n    assert (\n        mock_decoder.zero_grad.called or mock_decoder_optimizer.zero_grad.called\n    ), \"Didn't set the gradients to 0.\"\n    assert mock_decoder.forward_called, \"Forward propagation not called.\"\n    assert mock_autograd_backward.called, \"Backward propagation not called\"\n    assert mock_decoder_optimizer.step.called, \"Optimization step not performed\"\n    assert type(loss) == float, \"Wrong return type. Expected {}, got {}\".format(\n        float, type(loss)\n    )\n\n    _print_success_message()\n"
  },
  {
    "path": "DEEP LEARNING/NLP/LSTM RNN/Sentiment pytorch/labels.txt",
    "content": "positive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\npositive\nnegative\n"
  },
  {
    "path": "DEEP LEARNING/NLP/WSDM - Fake News Classification/Berd generate embeddings/0_bert_encode_en_train.py",
    "content": "# Please run bert-serving-start before running this notebook\n# Setup: https://github.com/hanxiao/bert-as-service\n# Examples (change folders to your locals)\n# english cased: bert-serving-start -model_dir /bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=4\n# multi cased: bert-serving-start -model_dir /bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=4\n# chinese: bert-serving-start -model_dir /bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=4\n\n# launch bert (valilenk):\n# english cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=2\n# multi cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=2\n# chinese: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=2\n\nimport pandas as pd\nimport torch\nimport os\nfrom time import time\nfrom tqdm import tqdm\nfrom bert_serving.client import BertClient\n\ndata_folder = os.path.dirname(os.getcwd()) + \"/data\"\ntrain = pd.read_csv(data_folder + \"/raw/train.csv\")\n\nbc = BertClient()\n\n\ndef gen_encodings(df, column):\n    t0 = time()\n    _list = list(df.loc[:, column])\n    for i, text in enumerate(_list):\n        if not isinstance(_list[i], str):\n            _list[i] = str(text)\n        if not _list[i].strip():\n            _list[i] = _list[i].strip()\n        if len(_list[i]) == 0:\n            _list[i] = \"temp\"\n    arr = bc.encode(_list)\n    temp = pd.DataFrame(arr)\n    temp.columns = [f\"{column}_{c}\" for c in range(len(arr[0]))]\n    temp = temp.join(df.id)\n    print(f\"time: {time() - t0}\")\n    return temp\n\n\nencoded_train = gen_encodings(train, \"title1_en\")\nencoded_train.to_csv(\"encoded_train1.csv\")\nencoded_train = gen_encodings(train, \"title2_en\")\nencoded_train.to_csv(\"encoded_train2.csv\")\n"
  },
  {
    "path": "DEEP LEARNING/NLP/WSDM - Fake News Classification/Berd generate embeddings/1_bert_encode_en_test.py",
    "content": "# Please run bert-serving-start before running this notebook\n# Setup: https://github.com/hanxiao/bert-as-service\n# Examples (change folders to your locals)\n# english cased: bert-serving-start -model_dir /bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=4\n# multi cased: bert-serving-start -model_dir /bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=4\n# chinese: bert-serving-start -model_dir /bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=4\n\n# launch bert (valilenk):\n# english cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=2\n# multi cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=2\n# chinese: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=2\n\nimport pandas as pd\nimport torch\nimport os\nfrom time import time\nfrom tqdm import tqdm\nfrom bert_serving.client import BertClient\n\ndata_folder = os.path.dirname(os.getcwd()) + \"/data\"\ntest = pd.read_csv(data_folder + \"/raw/test.csv\")\n\nbc = BertClient()\n\n\ndef gen_encodings(df, column):\n    t0 = time()\n    _list = list(df.loc[:, column])\n    for i, text in enumerate(_list):\n        if not isinstance(_list[i], str):\n            _list[i] = str(text)\n        if not _list[i].strip():\n            _list[i] = _list[i].strip()\n        if len(_list[i]) == 0:\n            _list[i] = \"temp\"\n    arr = bc.encode(_list)\n    temp = pd.DataFrame(arr)\n    temp.columns = [f\"{column}_{c}\" for c in range(len(arr[0]))]\n    temp = temp.join(df.id)\n    print(f\"time: {time() - t0}\")\n    return temp\n\n\nencoded_test = gen_encodings(test, \"title1_en\")\nencoded_test.to_csv(\"encoded_test1.csv\")\nencoded_test = gen_encodings(test, \"title2_en\")\nencoded_test.to_csv(\"encoded_test2.csv\")\n"
  },
  {
    "path": "DEEP LEARNING/NLP/WSDM - Fake News Classification/Berd generate embeddings/2_bert_encode_ch_train.py",
    "content": "# Please run bert-serving-start before running this notebook\n# Setup: https://github.com/hanxiao/bert-as-service\n# Examples (change folders to your locals)\n# english cased: bert-serving-start -model_dir /bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=4\n# multi cased: bert-serving-start -model_dir /bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=4\n# chinese: bert-serving-start -model_dir /bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=4\n\n# launch bert (valilenk):\n# english cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=2\n# multi cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=2\n# chinese: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=2\n\nimport pandas as pd\nimport torch\nimport os\nfrom time import time\nfrom tqdm import tqdm\nfrom bert_serving.client import BertClient\n\ndata_folder = os.path.dirname(os.getcwd()) + \"/data\"\ntrain = pd.read_csv(data_folder + \"/raw/train.csv\")\n\nbc = BertClient()\n\n\ndef gen_encodings(df, column):\n    t0 = time()\n    _list = list(df.loc[:, column])\n    for i, text in enumerate(_list):\n        if not isinstance(_list[i], str):\n            _list[i] = str(text)\n        if not _list[i].strip():\n            _list[i] = _list[i].strip()\n        if len(_list[i]) == 0:\n            _list[i] = \"temp\"\n    arr = bc.encode(_list)\n    temp = pd.DataFrame(arr)\n    temp.columns = [f\"{column}_{c}\" for c in range(len(arr[0]))]\n    temp = temp.join(df.id)\n    print(f\"time: {time() - t0}\")\n    return temp\n\n\nencoded_train = gen_encodings(train, \"title1_zh\")\nencoded_train.to_csv(\"encoded_ch_train1.csv\")\nencoded_train = gen_encodings(train, \"title2_zh\")\nencoded_train.to_csv(\"encoded_ch_train2.csv\")\n"
  },
  {
    "path": "DEEP LEARNING/NLP/WSDM - Fake News Classification/Berd generate embeddings/3_bert_encode_ch_test.py",
    "content": "# Please run bert-serving-start before running this notebook\n# Setup: https://github.com/hanxiao/bert-as-service\n# Examples (change folders to your locals)\n# english cased: bert-serving-start -model_dir /bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=4\n# multi cased: bert-serving-start -model_dir /bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=4\n# chinese: bert-serving-start -model_dir /bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=4\n\n# launch bert (valilenk):\n# english cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/cased_L-24_H-1024_A-16/ -num_worker=2\n# multi cased: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/multi_cased_L-12_H-768_A-12/ -num_worker=2\n# chinese: bert-serving-start -model_dir /media/airvetra/1tb/valilenk/nlp/bert-as-service/chinese_L-12_H-768_A-12/ -num_worker=2\n\nimport pandas as pd\nimport torch\nimport os\nfrom time import time\nfrom tqdm import tqdm\nfrom bert_serving.client import BertClient\n\ndata_folder = os.path.dirname(os.getcwd()) + \"/data\"\ntest = pd.read_csv(data_folder + \"/raw/test.csv\")\n\nbc = BertClient()\n\n\ndef gen_encodings(df, column):\n    t0 = time()\n    _list = list(df.loc[:, column])\n    for i, text in enumerate(_list):\n        if not isinstance(_list[i], str):\n            _list[i] = str(text)\n        if not _list[i].strip():\n            _list[i] = _list[i].strip()\n        if len(_list[i]) == 0:\n            _list[i] = \"temp\"\n    arr = bc.encode(_list)\n    temp = pd.DataFrame(arr)\n    temp.columns = [f\"{column}_{c}\" for c in range(len(arr[0]))]\n    temp = temp.join(df.id)\n    print(f\"time: {time() - t0}\")\n    return temp\n\n\nencoded_test = gen_encodings(test, \"title1_zh\")\nencoded_test.to_csv(\"encoded_ch_test1.csv\")\nencoded_test = gen_encodings(test, \"title2_zh\")\nencoded_test.to_csv(\"encoded_ch_test2.csv\")\n"
  },
  {
    "path": "DEEP LEARNING/NLP/WSDM - Fake News Classification/Berd generate embeddings/4_gen_encoded_dfs.py",
    "content": "# Please run 0-1-2-3 files before running this one + put raw data to ../data/raw\n\nimport numpy as np\nimport pandas as pd\nimport os\nfrom tqdm import tqdm\n\n\ndef label_encode_target(df, _inplace=True):\n    df.replace(\"unrelated\", 0, inplace=_inplace)\n    df.replace(\"agreed\", 1, inplace=_inplace)\n    df.replace(\"disagreed\", 2, inplace=_inplace)\n\n\ndata_folder = os.path.dirname(os.getcwd()) + \"/data\"\nprocessed_folder = f\"{data_folder}/processed\"\nif not os.path.exists(data_folder):\n    os.makedirs(data_folder)\nif not os.path.exists(processed_folder):\n    os.makedirs(processed_folder)\n\ntrain = pd.read_csv(data_folder + \"/raw/train.csv\")\ntest = pd.read_csv(data_folder + \"/raw/test.csv\")\nlabel_encode_target(train)\n\n# Process train embeddings\nenc_train1 = pd.read_csv(\"encoded_train1.csv\", index_col=0)\nenc_train2 = pd.read_csv(\"encoded_train2.csv\", index_col=0)\nenc_train3 = pd.read_csv(\"encoded_ch_train1.csv\", index_col=0)\nenc_train4 = pd.read_csv(\"encoded_ch_train2.csv\", index_col=0)\nX_train = enc_train1.merge(enc_train2, how=\"left\", on=\"id\")\nX_train = X_train.merge(enc_train3, how=\"left\", on=\"id\")\nX_train = X_train.merge(enc_train4, how=\"left\", on=\"id\")\nX_train = X_train.merge(train[[\"id\", \"label\"]], how=\"left\", on=\"id\")\n\nfloat_cols = [c for c in X_train.columns if X_train.loc[:, c].dtype == \"float64\"]\nfor col in tqdm(float_cols):\n    X_train.loc[:, col] = X_train.loc[:, col].astype(np.float32)\nint_cols = [c for c in X_train.columns if X_train.loc[:, c].dtype == \"int64\"]\nfor col in int_cols:\n    X_train.loc[:, col] = X_train.loc[:, col].astype(np.int32)\nX_train.to_pickle(processed_folder + \"/train\")\nX_train.to_csv(processed_folder + \"/train.csv\")\n\n# Process test embeddings\nenc_test1 = pd.read_csv(\"encoded_test1.csv\", index_col=0)\nenc_test2 = pd.read_csv(\"encoded_test2.csv\", index_col=0)\nenc_test3 = pd.read_csv(\"encoded_ch_test1.csv\", index_col=0)\nenc_test4 = pd.read_csv(\"encoded_ch_test2.csv\", index_col=0)\nX_test = enc_test1.merge(enc_test2, how=\"left\", on=\"id\")\nX_test = X_test.merge(enc_test3, how=\"left\", on=\"id\")\nX_test = X_test.merge(enc_test4, how=\"left\", on=\"id\")\n\nfloat_cols = [c for c in X_test.columns if X_test.loc[:, c].dtype == \"float64\"]\nfor col in tqdm(float_cols):\n    X_test.loc[:, col] = X_test.loc[:, col].astype(np.float32)\nX_test.to_pickle(processed_folder + \"/test\")\nX_test.to_csv(processed_folder + \"/test.csv\")\n"
  },
  {
    "path": "DEEP LEARNING/NLP/elmo EMBEDDINGS/Sentence encode.html",
    "content": "<html><head><meta charset=\"utf-8\" /></head><body><script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script><script type=\"text/javascript\">/**\n* plotly.js v1.44.3\n* Copyright 2012-2019, Plotly, Inc.\n* All rights reserved.\n* Licensed under the MIT license\n*/\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).Plotly=t()}}(function(){return function(){return function t(e,r,n){function i(o,s){if(!r[o]){if(!e[o]){var l=\"function\"==typeof require&&require;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error(\"Cannot find module '\"+o+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var u=r[o]={exports:{}};e[o][0].call(u.exports,function(t){return i(e[o][1][t]||t)},u,u.exports,t,e,r,n)}return r[o].exports}for(var a=\"function\"==typeof require&&require,o=0;o<n.length;o++)i(n[o]);return i}}()({1:[function(t,e,r){\"use strict\";var n=t(\"../src/lib\"),i={\"X,X div\":\"direction:ltr;font-family:'Open Sans', verdana, arial, sans-serif;margin:0;padding:0;\",\"X input,X button\":\"font-family:'Open Sans', verdana, arial, sans-serif;\",\"X input:focus,X button:focus\":\"outline:none;\",\"X a\":\"text-decoration:none;\",\"X a:hover\":\"text-decoration:none;\",\"X .crisp\":\"shape-rendering:crispEdges;\",\"X .user-select-none\":\"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;\",\"X svg\":\"overflow:hidden;\",\"X svg a\":\"fill:#447adb;\",\"X svg a:hover\":\"fill:#3c6dc5;\",\"X .main-svg\":\"position:absolute;top:0;left:0;pointer-events:none;\",\"X .main-svg .draglayer\":\"pointer-events:all;\",\"X .cursor-default\":\"cursor:default;\",\"X .cursor-pointer\":\"cursor:pointer;\",\"X .cursor-crosshair\":\"cursor:crosshair;\",\"X .cursor-move\":\"cursor:move;\",\"X .cursor-col-resize\":\"cursor:col-resize;\",\"X .cursor-row-resize\":\"cursor:row-resize;\",\"X .cursor-ns-resize\":\"cursor:ns-resize;\",\"X .cursor-ew-resize\":\"cursor:ew-resize;\",\"X .cursor-sw-resize\":\"cursor:sw-resize;\",\"X .cursor-s-resize\":\"cursor:s-resize;\",\"X .cursor-se-resize\":\"cursor:se-resize;\",\"X .cursor-w-resize\":\"cursor:w-resize;\",\"X .cursor-e-resize\":\"cursor:e-resize;\",\"X .cursor-nw-resize\":\"cursor:nw-resize;\",\"X .cursor-n-resize\":\"cursor:n-resize;\",\"X .cursor-ne-resize\":\"cursor:ne-resize;\",\"X .cursor-grab\":\"cursor:-webkit-grab;cursor:grab;\",\"X .modebar\":\"position:absolute;top:2px;right:2px;z-index:1001;\",\"X .ease-bg\":\"-webkit-transition:background-color 0.3s ease 0s;-moz-transition:background-color 0.3s ease 0s;-ms-transition:background-color 0.3s ease 0s;-o-transition:background-color 0.3s ease 0s;transition:background-color 0.3s ease 0s;\",\"X .modebar--hover>:not(.watermark)\":\"opacity:0;-webkit-transition:opacity 0.3s ease 0s;-moz-transition:opacity 0.3s ease 0s;-ms-transition:opacity 0.3s ease 0s;-o-transition:opacity 0.3s ease 0s;transition:opacity 0.3s ease 0s;\",\"X:hover .modebar--hover .modebar-group\":\"opacity:1;\",\"X .modebar-group\":\"float:left;display:inline-block;box-sizing:border-box;margin-left:8px;position:relative;vertical-align:middle;white-space:nowrap;\",\"X .modebar-btn\":\"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;\",\"X .modebar-btn svg\":\"position:relative;top:2px;\",\"X .modebar.vertical\":\"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;\",\"X .modebar.vertical svg\":\"top:-1px;\",\"X .modebar.vertical .modebar-group\":\"display:block;float:none;margin-left:0px;margin-bottom:8px;\",\"X .modebar.vertical .modebar-group .modebar-btn\":\"display:block;text-align:center;\",\"X [data-title]:before,X [data-title]:after\":\"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;\",\"X [data-title]:hover:before,X [data-title]:hover:after\":\"display:block;opacity:1;\",\"X [data-title]:before\":\"content:'';position:absolute;background:transparent;border:6px solid transparent;z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;\",\"X [data-title]:after\":\"content:attr(data-title);background:#69738a;color:white;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;\",\"X .vertical [data-title]:before,X .vertical [data-title]:after\":\"top:0%;right:200%;\",\"X .vertical [data-title]:before\":\"border:6px solid transparent;border-left-color:#69738a;margin-top:8px;margin-right:-30px;\",\"X .select-outline\":\"fill:none;stroke-width:1;shape-rendering:crispEdges;\",\"X .select-outline-1\":\"stroke:white;\",\"X .select-outline-2\":\"stroke:black;stroke-dasharray:2px 2px;\",Y:\"font-family:'Open Sans';position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;\",\"Y p\":\"margin:0;\",\"Y .notifier-note\":\"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,0.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;\",\"Y .notifier-close\":\"color:#fff;opacity:0.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;\",\"Y .notifier-close:hover\":\"color:#444;text-decoration:none;cursor:pointer;\"};for(var a in i){var o=a.replace(/^,/,\" ,\").replace(/X/g,\".js-plotly-plot .plotly\").replace(/Y/g,\".plotly-notifier\");n.addStyleRule(o,i[a])}},{\"../src/lib\":694}],2:[function(t,e,r){\"use strict\";e.exports={undo:{width:857.1,height:1e3,path:\"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z\",transform:\"matrix(1 0 0 -1 0 850)\"},home:{width:928.6,height:1e3,path:\"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z\",transform:\"matrix(1 0 0 -1 0 850)\"},\"camera-retro\":{width:1e3,height:1e3,path:\"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z\",transform:\"matrix(1 0 0 -1 0 850)\"},zoombox:{width:1e3,height:1e3,path:\"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z\",transform:\"matrix(1 0 0 -1 0 850)\"},pan:{width:1e3,height:1e3,path:\"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z\",transform:\"matrix(1 0 0 -1 0 850)\"},zoom_plus:{width:875,height:1e3,path:\"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z\",transform:\"matrix(1 0 0 -1 0 850)\"},zoom_minus:{width:875,height:1e3,path:\"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z\",transform:\"matrix(1 0 0 -1 0 850)\"},autoscale:{width:1e3,height:1e3,path:\"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z\",transform:\"matrix(1 0 0 -1 0 850)\"},tooltip_basic:{width:1500,height:1e3,path:\"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z\",transform:\"matrix(1 0 0 -1 0 850)\"},tooltip_compare:{width:1125,height:1e3,path:\"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z\",transform:\"matrix(1 0 0 -1 0 850)\"},plotlylogo:{width:1542,height:1e3,path:\"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z\",transform:\"matrix(1 0 0 -1 0 850)\"},\"z-axis\":{width:1e3,height:1e3,path:\"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z\",transform:\"matrix(1 0 0 -1 0 850)\"},\"3d_rotate\":{width:1e3,height:1e3,path:\"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z\",transform:\"matrix(1 0 0 -1 0 850)\"},camera:{width:1e3,height:1e3,path:\"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z\",transform:\"matrix(1 0 0 -1 0 850)\"},movie:{width:1e3,height:1e3,path:\"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z\",transform:\"matrix(1 0 0 -1 0 850)\"},question:{width:857.1,height:1e3,path:\"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z\",transform:\"matrix(1 0 0 -1 0 850)\"},disk:{width:857.1,height:1e3,path:\"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z\",transform:\"matrix(1 0 0 -1 0 850)\"},lasso:{width:1031,height:1e3,path:\"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z\",transform:\"matrix(1 0 0 -1 0 850)\"},selectbox:{width:1e3,height:1e3,path:\"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z\",transform:\"matrix(1 0 0 -1 0 850)\"},spikeline:{width:1e3,height:1e3,path:\"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z\",transform:\"matrix(1.5 0 0 -1.5 0 850)\"},newplotlylogo:{name:\"newplotlylogo\",svg:\"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 132'><defs><style>.cls-1 {fill: #119dff;} .cls-2 {fill: #25fefd;} .cls-3 {fill: #fff;}</style></defs><title>plotly-logomark</title><g id='symbol'><rect class='cls-1' width='132' height='132' rx='6' ry='6'/><circle class='cls-2' cx='78' cy='54' r='6'/><circle class='cls-2' cx='102' cy='30' r='6'/><circle class='cls-2' cx='78' cy='30' r='6'/><circle class='cls-2' cx='54' cy='30' r='6'/><circle class='cls-2' cx='30' cy='30' r='6'/><circle class='cls-2' cx='30' cy='54' r='6'/><path class='cls-3' d='M30,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,30,72Z'/><path class='cls-3' d='M78,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,78,72Z'/><path class='cls-3' d='M54,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,54,48Z'/><path class='cls-3' d='M102,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,102,48Z'/></g></svg>\"}}},{}],3:[function(t,e,r){\"use strict\";e.exports=t(\"../src/transforms/aggregate\")},{\"../src/transforms/aggregate\":1159}],4:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/bar\")},{\"../src/traces/bar\":842}],5:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/barpolar\")},{\"../src/traces/barpolar\":854}],6:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/box\")},{\"../src/traces/box\":864}],7:[function(t,e,r){\"use strict\";e.exports=t(\"../src/components/calendars\")},{\"../src/components/calendars\":569}],8:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/candlestick\")},{\"../src/traces/candlestick\":873}],9:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/carpet\")},{\"../src/traces/carpet\":892}],10:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/choropleth\")},{\"../src/traces/choropleth\":906}],11:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/cone\")},{\"../src/traces/cone\":914}],12:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/contour\")},{\"../src/traces/contour\":929}],13:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/contourcarpet\")},{\"../src/traces/contourcarpet\":940}],14:[function(t,e,r){\"use strict\";e.exports=t(\"../src/core\")},{\"../src/core\":673}],15:[function(t,e,r){\"use strict\";e.exports=t(\"../src/transforms/filter\")},{\"../src/transforms/filter\":1160}],16:[function(t,e,r){\"use strict\";e.exports=t(\"../src/transforms/groupby\")},{\"../src/transforms/groupby\":1161}],17:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/heatmap\")},{\"../src/traces/heatmap\":952}],18:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/heatmapgl\")},{\"../src/traces/heatmapgl\":961}],19:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/histogram\")},{\"../src/traces/histogram\":973}],20:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/histogram2d\")},{\"../src/traces/histogram2d\":980}],21:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/histogram2dcontour\")},{\"../src/traces/histogram2dcontour\":984}],22:[function(t,e,r){\"use strict\";var n=t(\"./core\");n.register([t(\"./bar\"),t(\"./box\"),t(\"./heatmap\"),t(\"./histogram\"),t(\"./histogram2d\"),t(\"./histogram2dcontour\"),t(\"./pie\"),t(\"./contour\"),t(\"./scatterternary\"),t(\"./violin\"),t(\"./scatter3d\"),t(\"./surface\"),t(\"./isosurface\"),t(\"./mesh3d\"),t(\"./cone\"),t(\"./streamtube\"),t(\"./scattergeo\"),t(\"./choropleth\"),t(\"./scattergl\"),t(\"./splom\"),t(\"./pointcloud\"),t(\"./heatmapgl\"),t(\"./parcoords\"),t(\"./parcats\"),t(\"./scattermapbox\"),t(\"./sankey\"),t(\"./table\"),t(\"./carpet\"),t(\"./scattercarpet\"),t(\"./contourcarpet\"),t(\"./ohlc\"),t(\"./candlestick\"),t(\"./scatterpolar\"),t(\"./scatterpolargl\"),t(\"./barpolar\")]),n.register([t(\"./aggregate\"),t(\"./filter\"),t(\"./groupby\"),t(\"./sort\")]),n.register([t(\"./calendars\")]),e.exports=n},{\"./aggregate\":3,\"./bar\":4,\"./barpolar\":5,\"./box\":6,\"./calendars\":7,\"./candlestick\":8,\"./carpet\":9,\"./choropleth\":10,\"./cone\":11,\"./contour\":12,\"./contourcarpet\":13,\"./core\":14,\"./filter\":15,\"./groupby\":16,\"./heatmap\":17,\"./heatmapgl\":18,\"./histogram\":19,\"./histogram2d\":20,\"./histogram2dcontour\":21,\"./isosurface\":23,\"./mesh3d\":24,\"./ohlc\":25,\"./parcats\":26,\"./parcoords\":27,\"./pie\":28,\"./pointcloud\":29,\"./sankey\":30,\"./scatter3d\":31,\"./scattercarpet\":32,\"./scattergeo\":33,\"./scattergl\":34,\"./scattermapbox\":35,\"./scatterpolar\":36,\"./scatterpolargl\":37,\"./scatterternary\":38,\"./sort\":39,\"./splom\":40,\"./streamtube\":41,\"./surface\":42,\"./table\":43,\"./violin\":44}],23:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/isosurface\")},{\"../src/traces/isosurface\":989}],24:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/mesh3d\")},{\"../src/traces/mesh3d\":994}],25:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/ohlc\")},{\"../src/traces/ohlc\":999}],26:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/parcats\")},{\"../src/traces/parcats\":1008}],27:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/parcoords\")},{\"../src/traces/parcoords\":1017}],28:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/pie\")},{\"../src/traces/pie\":1028}],29:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/pointcloud\")},{\"../src/traces/pointcloud\":1037}],30:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/sankey\")},{\"../src/traces/sankey\":1043}],31:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scatter3d\")},{\"../src/traces/scatter3d\":1079}],32:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scattercarpet\")},{\"../src/traces/scattercarpet\":1085}],33:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scattergeo\")},{\"../src/traces/scattergeo\":1092}],34:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scattergl\")},{\"../src/traces/scattergl\":1100}],35:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scattermapbox\")},{\"../src/traces/scattermapbox\":1106}],36:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scatterpolar\")},{\"../src/traces/scatterpolar\":1113}],37:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scatterpolargl\")},{\"../src/traces/scatterpolargl\":1117}],38:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/scatterternary\")},{\"../src/traces/scatterternary\":1123}],39:[function(t,e,r){\"use strict\";e.exports=t(\"../src/transforms/sort\")},{\"../src/transforms/sort\":1163}],40:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/splom\")},{\"../src/traces/splom\":1128}],41:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/streamtube\")},{\"../src/traces/streamtube\":1133}],42:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/surface\")},{\"../src/traces/surface\":1138}],43:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/table\")},{\"../src/traces/table\":1146}],44:[function(t,e,r){\"use strict\";e.exports=t(\"../src/traces/violin\")},{\"../src/traces/violin\":1154}],45:[function(t,e,r){\"use strict\";e.exports=function(t,e){t=t||document.body,e=e||{};var r=[.01,1/0];\"distanceLimits\"in e&&(r[0]=e.distanceLimits[0],r[1]=e.distanceLimits[1]);\"zoomMin\"in e&&(r[0]=e.zoomMin);\"zoomMax\"in e&&(r[1]=e.zoomMax);var c=i({center:e.center||[0,0,0],up:e.up||[0,1,0],eye:e.eye||[0,0,10],mode:e.mode||\"orbit\",distanceLimits:r}),u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=0,h=t.clientWidth,p=t.clientHeight,d={view:c,element:t,delay:e.delay||16,rotateSpeed:e.rotateSpeed||1,zoomSpeed:e.zoomSpeed||1,translateSpeed:e.translateSpeed||1,flipX:!!e.flipX,flipY:!!e.flipY,modes:c.modes,tick:function(){var e=n(),r=this.delay;c.idle(e-r),c.flush(e-(100+2*r));var i=e-2*r;c.recalcMatrix(i);for(var a=!0,o=c.computedMatrix,s=0;s<16;++s)a=a&&u[s]===o[s],u[s]=o[s];var l=t.clientWidth===h&&t.clientHeight===p;return h=t.clientWidth,p=t.clientHeight,a?!l:(f=Math.exp(c.computedRadius[0]),!0)},lookAt:function(t,e,r){c.lookAt(c.lastT(),t,e,r)},rotate:function(t,e,r){c.rotate(c.lastT(),t,e,r)},pan:function(t,e,r){c.pan(c.lastT(),t,e,r)},translate:function(t,e,r){c.translate(c.lastT(),t,e,r)}};Object.defineProperties(d,{matrix:{get:function(){return c.computedMatrix},set:function(t){return c.setMatrix(c.lastT(),t),c.computedMatrix},enumerable:!0},mode:{get:function(){return c.getMode()},set:function(t){return c.setMode(t),c.getMode()},enumerable:!0},center:{get:function(){return c.computedCenter},set:function(t){return c.lookAt(c.lastT(),t),c.computedCenter},enumerable:!0},eye:{get:function(){return c.computedEye},set:function(t){return c.lookAt(c.lastT(),null,t),c.computedEye},enumerable:!0},up:{get:function(){return c.computedUp},set:function(t){return c.lookAt(c.lastT(),null,null,t),c.computedUp},enumerable:!0},distance:{get:function(){return f},set:function(t){return c.setDistance(c.lastT(),t),t},enumerable:!0},distanceLimits:{get:function(){return c.getDistanceLimits(r)},set:function(t){return c.setDistanceLimits(t),t},enumerable:!0}}),t.addEventListener(\"contextmenu\",function(t){return t.preventDefault(),!1});var g=0,v=0,m={shift:!1,control:!1,alt:!1,meta:!1};function y(e,r,i,a){var o=1/t.clientHeight,s=o*(r-g),l=o*(i-v),u=d.flipX?1:-1,h=d.flipY?1:-1,p=Math.PI*d.rotateSpeed,y=n();if(1&e)a.shift?c.rotate(y,0,0,-s*p):c.rotate(y,u*p*s,-h*p*l,0);else if(2&e)c.pan(y,-d.translateSpeed*s*f,d.translateSpeed*l*f,0);else if(4&e){var x=d.zoomSpeed*l/window.innerHeight*(y-c.lastT())*50;c.pan(y,0,0,f*(Math.exp(x)-1))}g=r,v=i,m=a}return a(t,y),t.addEventListener(\"touchstart\",function(e){var r=s(e.changedTouches[0],t);y(0,r[0],r[1],m),y(1,r[0],r[1],m),e.preventDefault()},!!l&&{passive:!1}),t.addEventListener(\"touchmove\",function(e){var r=s(e.changedTouches[0],t);y(1,r[0],r[1],m),e.preventDefault()},!!l&&{passive:!1}),t.addEventListener(\"touchend\",function(e){s(e.changedTouches[0],t),y(0,g,v,m),e.preventDefault()},!!l&&{passive:!1}),o(t,function(t,e,r){var i=d.flipX?1:-1,a=d.flipY?1:-1,o=n();if(Math.abs(t)>Math.abs(e))c.rotate(o,0,0,-t*i*Math.PI*d.rotateSpeed/window.innerWidth);else{var s=d.zoomSpeed*a*e/window.innerHeight*(o-c.lastT())/100;c.pan(o,0,0,f*(Math.exp(s)-1))}},!0),d};var n=t(\"right-now\"),i=t(\"3d-view\"),a=t(\"mouse-change\"),o=t(\"mouse-wheel\"),s=t(\"mouse-event-offset\"),l=t(\"has-passive-events\")},{\"3d-view\":46,\"has-passive-events\":397,\"mouse-change\":421,\"mouse-event-offset\":422,\"mouse-wheel\":424,\"right-now\":482}],46:[function(t,e,r){\"use strict\";e.exports=function(t){var e=(t=t||{}).eye||[0,0,1],r=t.center||[0,0,0],s=t.up||[0,1,0],l=t.distanceLimits||[0,1/0],c=t.mode||\"turntable\",u=n(),f=i(),h=a();return u.setDistanceLimits(l[0],l[1]),u.lookAt(0,e,r,s),f.setDistanceLimits(l[0],l[1]),f.lookAt(0,e,r,s),h.setDistanceLimits(l[0],l[1]),h.lookAt(0,e,r,s),new o({turntable:u,orbit:f,matrix:h},c)};var n=t(\"turntable-camera-controller\"),i=t(\"orbit-camera-controller\"),a=t(\"matrix-camera-controller\");function o(t,e){this._controllerNames=Object.keys(t),this._controllerList=this._controllerNames.map(function(e){return t[e]}),this._mode=e,this._active=t[e],this._active||(this._mode=\"turntable\",this._active=t.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var s=o.prototype;[[\"flush\",1],[\"idle\",1],[\"lookAt\",4],[\"rotate\",4],[\"pan\",4],[\"translate\",4],[\"setMatrix\",2],[\"setDistanceLimits\",2],[\"setDistance\",2]].forEach(function(t){for(var e=t[0],r=[],n=0;n<t[1];++n)r.push(\"a\"+n);var i=\"var cc=this._controllerList;for(var i=0;i<cc.length;++i){cc[i].\"+t[0]+\"(\"+r.join()+\")}\";s[e]=Function.apply(null,r.concat(i))}),s.recalcMatrix=function(t){this._active.recalcMatrix(t)},s.getDistance=function(t){return this._active.getDistance(t)},s.getDistanceLimits=function(t){return this._active.getDistanceLimits(t)},s.lastT=function(){return this._active.lastT()},s.setMode=function(t){if(t!==this._mode){var e=this._controllerNames.indexOf(t);if(!(e<0)){var r=this._active,n=this._controllerList[e],i=Math.max(r.lastT(),n.lastT());r.recalcMatrix(i),n.setMatrix(i,r.computedMatrix),this._active=n,this._mode=t,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}}},s.getMode=function(){return this._mode}},{\"matrix-camera-controller\":419,\"orbit-camera-controller\":442,\"turntable-camera-controller\":520}],47:[function(t,e,r){var n,i;n=this,i=function(t,e,r,n){\"use strict\";t.sankey=function(){var t={},i=24,a=8,o=[1,1],s=[],l=[],c=2/3;function u(){function t(t,e){return t.source.y-e.source.y||t.originalIndex-e.originalIndex}function e(t,e){return t.target.y-e.target.y||t.originalIndex-e.originalIndex}s.forEach(function(r){r.sourceLinks.sort(e),r.targetLinks.sort(t)}),s.forEach(function(t){var e=0,r=0;t.sourceLinks.forEach(function(t){t.sy=e,e+=t.dy}),t.targetLinks.forEach(function(t){t.ty=r,r+=t.dy})})}function f(t){return t.y+t.dy/2}function h(t){return t.value}return t.nodeWidth=function(e){return arguments.length?(i=+e,t):i},t.nodePadding=function(e){return arguments.length?(a=+e,t):a},t.nodes=function(e){return arguments.length?(s=e,t):s},t.links=function(e){return arguments.length?(l=e,t):l},t.size=function(e){return arguments.length?(o=e,t):o},t.layout=function(n){return s.forEach(function(t){t.sourceLinks=[],t.targetLinks=[]}),l.forEach(function(t,e){var r=t.source,n=t.target;\"number\"==typeof r&&(r=t.source=s[t.source]),\"number\"==typeof n&&(n=t.target=s[t.target]),t.originalIndex=e,r.sourceLinks.push(t),n.targetLinks.push(t)}),s.forEach(function(t){t.value=Math.max(e.sum(t.sourceLinks,h),e.sum(t.targetLinks,h))}),function(){for(var t,e,r=s,n=0;r.length;)t=[],r.forEach(function(e){e.x=n,e.dx=i,e.sourceLinks.forEach(function(e){t.indexOf(e.target)<0&&t.push(e.target)})}),r=t,++n;(function(t){s.forEach(function(e){e.sourceLinks.length||(e.x=t-1)})})(n),e=(o[0]-i)/(n-1),s.forEach(function(t){t.x*=e})}(),function(t){var n=r.nest().key(function(t){return t.x}).sortKeys(e.ascending).entries(s).map(function(t){return t.values});(function(){var t=e.max(n,function(t){return t.length}),r=c*o[1]/(t-1);a>r&&(a=r);var i=e.min(n,function(t){return(o[1]-(t.length-1)*a)/e.sum(t,h)});n.forEach(function(t){t.forEach(function(t,e){t.y=e,t.dy=t.value*i})}),l.forEach(function(t){t.dy=t.value*i})})(),d();for(var i=1;t>0;--t)p(i*=.99),d(),u(i),d();function u(t){function r(t){return f(t.source)*t.value}n.forEach(function(n){n.forEach(function(n){if(n.targetLinks.length){var i=e.sum(n.targetLinks,r)/e.sum(n.targetLinks,h);n.y+=(i-f(n))*t}})})}function p(t){function r(t){return f(t.target)*t.value}n.slice().reverse().forEach(function(n){n.forEach(function(n){if(n.sourceLinks.length){var i=e.sum(n.sourceLinks,r)/e.sum(n.sourceLinks,h);n.y+=(i-f(n))*t}})})}function d(){n.forEach(function(t){var e,r,n,i=0,s=t.length;for(t.sort(g),n=0;n<s;++n)e=t[n],(r=i-e.y)>0&&(e.y+=r),i=e.y+e.dy+a;if((r=i-a-o[1])>0)for(i=e.y-=r,n=s-2;n>=0;--n)e=t[n],(r=e.y+e.dy+a-i)>0&&(e.y-=r),i=e.y})}function g(t,e){return t.y-e.y}}(n),u(),t},t.relayout=function(){return u(),t},t.link=function(){var t=.5;function e(e){var r=e.source.x+e.source.dx,i=e.target.x,a=n.interpolateNumber(r,i),o=a(t),s=a(1-t),l=e.source.y+e.sy,c=l+e.dy,u=e.target.y+e.ty,f=u+e.dy;return\"M\"+r+\",\"+l+\"C\"+o+\",\"+l+\" \"+s+\",\"+u+\" \"+i+\",\"+u+\"L\"+i+\",\"+f+\"C\"+s+\",\"+f+\" \"+o+\",\"+c+\" \"+r+\",\"+c+\"Z\"}return e.curvature=function(r){return arguments.length?(t=+r,e):t},e},t},Object.defineProperty(t,\"__esModule\",{value:!0})},\"object\"==typeof r&&\"undefined\"!=typeof e?i(r,t(\"d3-array\"),t(\"d3-collection\"),t(\"d3-interpolate\")):i(n.d3=n.d3||{},n.d3,n.d3,n.d3)},{\"d3-array\":141,\"d3-collection\":142,\"d3-interpolate\":146}],48:[function(t,e,r){\"use strict\";var n=\"undefined\"==typeof WeakMap?t(\"weak-map\"):WeakMap,i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=new n;e.exports=function(t){var e=o.get(t),r=e&&(e._triangleBuffer.handle||e._triangleBuffer.buffer);if(!r||!t.isBuffer(r)){var n=i(t,new Float32Array([-1,-1,-1,4,4,-1]));(e=a(t,[{buffer:n,type:t.FLOAT,size:2}]))._triangleBuffer=n,o.set(t,e)}e.bind(),t.drawArrays(t.TRIANGLES,0,3),e.unbind()}},{\"gl-buffer\":231,\"gl-vao\":313,\"weak-map\":530}],49:[function(t,e,r){e.exports=function(t){var e=0,r=0,n=0,i=0;return t.map(function(t){var a=(t=t.slice())[0],o=a.toUpperCase();if(a!=o)switch(t[0]=o,a){case\"a\":t[6]+=n,t[7]+=i;break;case\"v\":t[1]+=i;break;case\"h\":t[1]+=n;break;default:for(var s=1;s<t.length;)t[s++]+=n,t[s++]+=i}switch(o){case\"Z\":n=e,i=r;break;case\"H\":n=t[1];break;case\"V\":i=t[1];break;case\"M\":n=e=t[1],i=r=t[2];break;default:n=t[t.length-2],i=t[t.length-1]}return t})}},{}],50:[function(t,e,r){var n=t(\"pad-left\");e.exports=function(t,e,r){e=\"number\"==typeof e?e:1,r=r||\": \";var i=t.split(/\\r?\\n/),a=String(i.length+e-1).length;return i.map(function(t,i){var o=i+e,s=String(o).length,l=n(o,a-s);return l+r+t}).join(\"\\n\")}},{\"pad-left\":443}],51:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.length;if(0===e)return[];if(1===e)return[0];for(var r=t[0].length,n=[t[0]],a=[0],o=1;o<e;++o)if(n.push(t[o]),i(n,r)){if(a.push(o),a.length===r+1)return a}else n.pop();return a};var n=t(\"robust-orientation\");function i(t,e){for(var r=new Array(e+1),i=0;i<t.length;++i)r[i]=t[i];for(i=0;i<=t.length;++i){for(var a=t.length;a<=e;++a){for(var o=new Array(e),s=0;s<e;++s)o[s]=Math.pow(a+1-i,s);r[a]=o}if(n.apply(void 0,r))return!0}return!1}},{\"robust-orientation\":488}],52:[function(t,e,r){\"use strict\";e.exports=function(t,e){return n(e).filter(function(r){for(var n=new Array(r.length),a=0;a<r.length;++a)n[a]=e[r[a]];return i(n)*t<1})};var n=t(\"delaunay-triangulate\"),i=t(\"circumradius\")},{circumradius:103,\"delaunay-triangulate\":151}],53:[function(t,e,r){e.exports=function(t,e){return i(n(t,e))};var n=t(\"alpha-complex\"),i=t(\"simplicial-complex-boundary\")},{\"alpha-complex\":52,\"simplicial-complex-boundary\":495}],54:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(!t||null==t.length)throw Error(\"Argument should be an array\");e=null==e?1:Math.floor(e);for(var r=Array(2*e),n=0;n<e;n++){for(var i=-1/0,a=1/0,o=n,s=t.length;o<s;o+=e)t[o]>i&&(i=t[o]),t[o]<a&&(a=t[o]);r[n]=a,r[e+n]=i}return r}},{}],55:[function(t,e,r){\"use strict\";var n=t(\"array-bounds\");e.exports=function(t,e,r){if(!t||null==t.length)throw Error(\"Argument should be an array\");null==e&&(e=1);null==r&&(r=n(t,e));for(var i=0;i<e;i++){var a=r[e+i],o=r[i],s=i,l=t.length;if(a===1/0&&o===-1/0)for(s=i;s<l;s+=e)t[s]=t[s]===a?1:t[s]===o?0:.5;else if(a===1/0)for(s=i;s<l;s+=e)t[s]=t[s]===a?1:0;else if(o===-1/0)for(s=i;s<l;s+=e)t[s]=t[s]===o?0:1;else{var c=a-o;for(s=i;s<l;s+=e)t[s]=0===c?.5:(t[s]-o)/c}}return t}},{\"array-bounds\":54}],56:[function(t,e,r){e.exports=function(t,e){var r=\"number\"==typeof t,n=\"number\"==typeof e;r&&!n?(e=t,t=0):r||n||(t=0,e=0);var i=(e|=0)-(t|=0);if(i<0)throw new Error(\"array length must be positive\");for(var a=new Array(i),o=0,s=t;o<i;o++,s++)a[o]=s;return a}},{}],57:[function(t,e,r){(function(r){\"use strict\";function n(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,a=Math.min(r,n);i<a;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0}function i(t){return r.Buffer&&\"function\"==typeof r.Buffer.isBuffer?r.Buffer.isBuffer(t):!(null==t||!t._isBuffer)}var a=t(\"util/\"),o=Object.prototype.hasOwnProperty,s=Array.prototype.slice,l=\"foo\"===function(){}.name;function c(t){return Object.prototype.toString.call(t)}function u(t){return!i(t)&&(\"function\"==typeof r.ArrayBuffer&&(\"function\"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):!!t&&(t instanceof DataView||!!(t.buffer&&t.buffer instanceof ArrayBuffer))))}var f=e.exports=m,h=/\\s*function\\s+([^\\(\\s]*)\\s*/;function p(t){if(a.isFunction(t)){if(l)return t.name;var e=t.toString().match(h);return e&&e[1]}}function d(t,e){return\"string\"==typeof t?t.length<e?t:t.slice(0,e):t}function g(t){if(l||!a.isFunction(t))return a.inspect(t);var e=p(t);return\"[Function\"+(e?\": \"+e:\"\")+\"]\"}function v(t,e,r,n,i){throw new f.AssertionError({message:r,actual:t,expected:e,operator:n,stackStartFunction:i})}function m(t,e){t||v(t,!0,e,\"==\",f.ok)}function y(t,e,r,o){if(t===e)return!0;if(i(t)&&i(e))return 0===n(t,e);if(a.isDate(t)&&a.isDate(e))return t.getTime()===e.getTime();if(a.isRegExp(t)&&a.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if(null!==t&&\"object\"==typeof t||null!==e&&\"object\"==typeof e){if(u(t)&&u(e)&&c(t)===c(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return 0===n(new Uint8Array(t.buffer),new Uint8Array(e.buffer));if(i(t)!==i(e))return!1;var l=(o=o||{actual:[],expected:[]}).actual.indexOf(t);return-1!==l&&l===o.expected.indexOf(e)||(o.actual.push(t),o.expected.push(e),function(t,e,r,n){if(null==t||null==e)return!1;if(a.isPrimitive(t)||a.isPrimitive(e))return t===e;if(r&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var i=x(t),o=x(e);if(i&&!o||!i&&o)return!1;if(i)return t=s.call(t),e=s.call(e),y(t,e,r);var l,c,u=w(t),f=w(e);if(u.length!==f.length)return!1;for(u.sort(),f.sort(),c=u.length-1;c>=0;c--)if(u[c]!==f[c])return!1;for(c=u.length-1;c>=0;c--)if(l=u[c],!y(t[l],e[l],r,n))return!1;return!0}(t,e,r,o))}return r?t===e:t==e}function x(t){return\"[object Arguments]\"==Object.prototype.toString.call(t)}function b(t,e){if(!t||!e)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function _(t,e,r,n){var i;if(\"function\"!=typeof e)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),t&&!i&&v(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!t&&i&&!r;if((!t&&a.isError(i)&&o&&b(i,r)||s)&&v(i,r,\"Got unwanted exception\"+n),t&&i&&r&&!b(i,r)||!t&&i)throw i}f.AssertionError=function(t){var e;this.name=\"AssertionError\",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=d(g((e=this).actual),128)+\" \"+e.operator+\" \"+d(g(e.expected),128),this.generatedMessage=!0);var r=t.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=p(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(f.AssertionError,Error),f.fail=v,f.ok=m,f.equal=function(t,e,r){t!=e&&v(t,e,r,\"==\",f.equal)},f.notEqual=function(t,e,r){t==e&&v(t,e,r,\"!=\",f.notEqual)},f.deepEqual=function(t,e,r){y(t,e,!1)||v(t,e,r,\"deepEqual\",f.deepEqual)},f.deepStrictEqual=function(t,e,r){y(t,e,!0)||v(t,e,r,\"deepStrictEqual\",f.deepStrictEqual)},f.notDeepEqual=function(t,e,r){y(t,e,!1)&&v(t,e,r,\"notDeepEqual\",f.notDeepEqual)},f.notDeepStrictEqual=function t(e,r,n){y(e,r,!0)&&v(e,r,n,\"notDeepStrictEqual\",t)},f.strictEqual=function(t,e,r){t!==e&&v(t,e,r,\"===\",f.strictEqual)},f.notStrictEqual=function(t,e,r){t===e&&v(t,e,r,\"!==\",f.notStrictEqual)},f.throws=function(t,e,r){_(!0,t,e,r)},f.doesNotThrow=function(t,e,r){_(!1,t,e,r)},f.ifError=function(t){if(t)throw t};var w=Object.keys||function(t){var e=[];for(var r in t)o.call(t,r)&&e.push(r);return e}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"util/\":60}],58:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],59:[function(t,e,r){e.exports=function(t){return t&&\"object\"==typeof t&&\"function\"==typeof t.copy&&\"function\"==typeof t.fill&&\"function\"==typeof t.readUInt8}},{}],60:[function(t,e,r){(function(e,n){var i=/%[sdj%]/g;r.format=function(t){if(!m(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(s(arguments[r]));return e.join(\" \")}r=1;for(var n=arguments,a=n.length,o=String(t).replace(i,function(t){if(\"%%\"===t)return\"%\";if(r>=a)return t;switch(t){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(t){return\"[Circular]\"}default:return t}}),l=n[r];r<a;l=n[++r])g(l)||!b(l)?o+=\" \"+l:o+=\" \"+s(l);return o},r.deprecate=function(t,i){if(y(n.process))return function(){return r.deprecate(t,i).apply(this,arguments)};if(!0===e.noDeprecation)return t;var a=!1;return function(){if(!a){if(e.throwDeprecation)throw new Error(i);e.traceDeprecation?console.trace(i):console.error(i),a=!0}return t.apply(this,arguments)}};var a,o={};function s(t,e){var n={seen:[],stylize:c};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),d(e)?n.showHidden=e:e&&r._extend(n,e),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,t,n.depth)}function l(t,e){var r=s.styles[e];return r?\"\\x1b[\"+s.colors[r][0]+\"m\"+t+\"\\x1b[\"+s.colors[r][1]+\"m\":t}function c(t,e){return t}function u(t,e,n){if(t.customInspect&&e&&k(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(n,t);return m(i)||(i=u(t,i,n)),i}var a=function(t,e){if(y(e))return t.stylize(\"undefined\",\"undefined\");if(m(e)){var r=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return t.stylize(r,\"string\")}if(v(e))return t.stylize(\"\"+e,\"number\");if(d(e))return t.stylize(\"\"+e,\"boolean\");if(g(e))return t.stylize(\"null\",\"null\")}(t,e);if(a)return a;var o=Object.keys(e),s=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(e)),w(e)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return f(e);if(0===o.length){if(k(e)){var l=e.name?\": \"+e.name:\"\";return t.stylize(\"[Function\"+l+\"]\",\"special\")}if(x(e))return t.stylize(RegExp.prototype.toString.call(e),\"regexp\");if(_(e))return t.stylize(Date.prototype.toString.call(e),\"date\");if(w(e))return f(e)}var c,b=\"\",A=!1,M=[\"{\",\"}\"];(p(e)&&(A=!0,M=[\"[\",\"]\"]),k(e))&&(b=\" [Function\"+(e.name?\": \"+e.name:\"\")+\"]\");return x(e)&&(b=\" \"+RegExp.prototype.toString.call(e)),_(e)&&(b=\" \"+Date.prototype.toUTCString.call(e)),w(e)&&(b=\" \"+f(e)),0!==o.length||A&&0!=e.length?n<0?x(e)?t.stylize(RegExp.prototype.toString.call(e),\"regexp\"):t.stylize(\"[Object]\",\"special\"):(t.seen.push(e),c=A?function(t,e,r,n,i){for(var a=[],o=0,s=e.length;o<s;++o)S(e,String(o))?a.push(h(t,e,r,n,String(o),!0)):a.push(\"\");return i.forEach(function(i){i.match(/^\\d+$/)||a.push(h(t,e,r,n,i,!0))}),a}(t,e,n,s,o):o.map(function(r){return h(t,e,n,s,r,A)}),t.seen.pop(),function(t,e,r){if(t.reduce(function(t,e){return 0,e.indexOf(\"\\n\")>=0&&0,t+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===e?\"\":e+\"\\n \")+\" \"+t.join(\",\\n  \")+\" \"+r[1];return r[0]+e+\" \"+t.join(\", \")+\" \"+r[1]}(c,b,M)):M[0]+b+M[1]}function f(t){return\"[\"+Error.prototype.toString.call(t)+\"]\"}function h(t,e,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize(\"[Getter/Setter]\",\"special\"):t.stylize(\"[Getter]\",\"special\"):l.set&&(s=t.stylize(\"[Setter]\",\"special\")),S(n,i)||(o=\"[\"+i+\"]\"),s||(t.seen.indexOf(l.value)<0?(s=g(r)?u(t,l.value,null):u(t,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(t){return\"  \"+t}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(t){return\"   \"+t}).join(\"\\n\")):s=t.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=t.stylize(o,\"string\"))}return o+\": \"+s}function p(t){return Array.isArray(t)}function d(t){return\"boolean\"==typeof t}function g(t){return null===t}function v(t){return\"number\"==typeof t}function m(t){return\"string\"==typeof t}function y(t){return void 0===t}function x(t){return b(t)&&\"[object RegExp]\"===A(t)}function b(t){return\"object\"==typeof t&&null!==t}function _(t){return b(t)&&\"[object Date]\"===A(t)}function w(t){return b(t)&&(\"[object Error]\"===A(t)||t instanceof Error)}function k(t){return\"function\"==typeof t}function A(t){return Object.prototype.toString.call(t)}function M(t){return t<10?\"0\"+t.toString(10):t.toString(10)}r.debuglog=function(t){if(y(a)&&(a=e.env.NODE_DEBUG||\"\"),t=t.toUpperCase(),!o[t])if(new RegExp(\"\\\\b\"+t+\"\\\\b\",\"i\").test(a)){var n=e.pid;o[t]=function(){var e=r.format.apply(r,arguments);console.error(\"%s %d: %s\",t,n,e)}}else o[t]=function(){};return o[t]},r.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},r.isArray=p,r.isBoolean=d,r.isNull=g,r.isNullOrUndefined=function(t){return null==t},r.isNumber=v,r.isString=m,r.isSymbol=function(t){return\"symbol\"==typeof t},r.isUndefined=y,r.isRegExp=x,r.isObject=b,r.isDate=_,r.isError=w,r.isFunction=k,r.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||\"undefined\"==typeof t},r.isBuffer=t(\"./support/isBuffer\");var T=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}r.log=function(){var t,e;console.log(\"%s - %s\",(t=new Date,e=[M(t.getHours()),M(t.getMinutes()),M(t.getSeconds())].join(\":\"),[t.getDate(),T[t.getMonth()],e].join(\" \")),r.format.apply(r,arguments))},r.inherits=t(\"inherits\"),r._extend=function(t,e){if(!e||!b(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./support/isBuffer\":59,_process:468,inherits:58}],61:[function(t,e,r){e.exports=function(t){return atob(t)}},{}],62:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r=e.length,a=new Array(r+1),o=0;o<r;++o){for(var s=new Array(r+1),l=0;l<=r;++l)s[l]=t[l][o];a[o]=s}a[r]=new Array(r+1);for(var o=0;o<=r;++o)a[r][o]=1;for(var c=new Array(r+1),o=0;o<r;++o)c[o]=e[o];c[r]=1;var u=n(a,c),f=i(u[r+1]);0===f&&(f=1);for(var h=new Array(r+1),o=0;o<=r;++o)h[o]=i(u[o])/f;return h};var n=t(\"robust-linear-solve\");function i(t){for(var e=0,r=0;r<t.length;++r)e+=t[r];return e}},{\"robust-linear-solve\":487}],63:[function(t,e,r){\"use strict\";r.byteLength=function(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n},r.toByteArray=function(t){for(var e,r=c(t),n=r[0],o=r[1],s=new a(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),l=0,u=o>0?n-4:n,f=0;f<u;f+=4)e=i[t.charCodeAt(f)]<<18|i[t.charCodeAt(f+1)]<<12|i[t.charCodeAt(f+2)]<<6|i[t.charCodeAt(f+3)],s[l++]=e>>16&255,s[l++]=e>>8&255,s[l++]=255&e;2===o&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,s[l++]=255&e);1===o&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,s[l++]=e>>8&255,s[l++]=255&e);return s},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;o<s;o+=16383)a.push(u(t,o,o+16383>s?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s<l;++s)n[s]=o[s],i[o.charCodeAt(s)]=s;function c(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s<r;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(n[(a=i)>>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],64:[function(t,e,r){\"use strict\";var n=t(\"./lib/rationalize\");e.exports=function(t,e){return n(t[0].mul(e[1]).add(e[0].mul(t[1])),t[1].mul(e[1]))}},{\"./lib/rationalize\":74}],65:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t[0].mul(e[1]).cmp(e[0].mul(t[1]))}},{}],66:[function(t,e,r){\"use strict\";var n=t(\"./lib/rationalize\");e.exports=function(t,e){return n(t[0].mul(e[1]),t[1].mul(e[0]))}},{\"./lib/rationalize\":74}],67:[function(t,e,r){\"use strict\";var n=t(\"./is-rat\"),i=t(\"./lib/is-bn\"),a=t(\"./lib/num-to-bn\"),o=t(\"./lib/str-to-bn\"),s=t(\"./lib/rationalize\"),l=t(\"./div\");e.exports=function t(e,r){if(n(e))return r?l(e,t(r)):[e[0].clone(),e[1].clone()];var c=0;var u,f;if(i(e))u=e.clone();else if(\"string\"==typeof e)u=o(e);else{if(0===e)return[a(0),a(1)];if(e===Math.floor(e))u=a(e);else{for(;e!==Math.floor(e);)e*=Math.pow(2,256),c-=256;u=a(e)}}if(n(r))u.mul(r[1]),f=r[0].clone();else if(i(r))f=r.clone();else if(\"string\"==typeof r)f=o(r);else if(r)if(r===Math.floor(r))f=a(r);else{for(;r!==Math.floor(r);)r*=Math.pow(2,256),c+=256;f=a(r)}else f=a(1);c>0?u=u.ushln(c):c<0&&(f=f.ushln(-c));return s(u,f)}},{\"./div\":66,\"./is-rat\":68,\"./lib/is-bn\":72,\"./lib/num-to-bn\":73,\"./lib/rationalize\":74,\"./lib/str-to-bn\":75}],68:[function(t,e,r){\"use strict\";var n=t(\"./lib/is-bn\");e.exports=function(t){return Array.isArray(t)&&2===t.length&&n(t[0])&&n(t[1])}},{\"./lib/is-bn\":72}],69:[function(t,e,r){\"use strict\";var n=t(\"bn.js\");e.exports=function(t){return t.cmp(new n(0))}},{\"bn.js\":83}],70:[function(t,e,r){\"use strict\";var n=t(\"./bn-sign\");e.exports=function(t){var e=t.length,r=t.words,i=0;if(1===e)i=r[0];else if(2===e)i=r[0]+67108864*r[1];else for(var a=0;a<e;a++){var o=r[a];i+=o*Math.pow(67108864,a)}return n(t)*i}},{\"./bn-sign\":69}],71:[function(t,e,r){\"use strict\";var n=t(\"double-bits\"),i=t(\"bit-twiddle\").countTrailingZeros;e.exports=function(t){var e=i(n.lo(t));if(e<32)return e;var r=i(n.hi(t));if(r>20)return 52;return r+32}},{\"bit-twiddle\":81,\"double-bits\":153}],72:[function(t,e,r){\"use strict\";t(\"bn.js\");e.exports=function(t){return t&&\"object\"==typeof t&&Boolean(t.words)}},{\"bn.js\":83}],73:[function(t,e,r){\"use strict\";var n=t(\"bn.js\"),i=t(\"double-bits\");e.exports=function(t){var e=i.exponent(t);return e<52?new n(t):new n(t*Math.pow(2,52-e)).ushln(e-52)}},{\"bn.js\":83,\"double-bits\":153}],74:[function(t,e,r){\"use strict\";var n=t(\"./num-to-bn\"),i=t(\"./bn-sign\");e.exports=function(t,e){var r=i(t),a=i(e);if(0===r)return[n(0),n(1)];if(0===a)return[n(0),n(0)];a<0&&(t=t.neg(),e=e.neg());var o=t.gcd(e);if(o.cmpn(1))return[t.div(o),e.div(o)];return[t,e]}},{\"./bn-sign\":69,\"./num-to-bn\":73}],75:[function(t,e,r){\"use strict\";var n=t(\"bn.js\");e.exports=function(t){return new n(t)}},{\"bn.js\":83}],76:[function(t,e,r){\"use strict\";var n=t(\"./lib/rationalize\");e.exports=function(t,e){return n(t[0].mul(e[0]),t[1].mul(e[1]))}},{\"./lib/rationalize\":74}],77:[function(t,e,r){\"use strict\";var n=t(\"./lib/bn-sign\");e.exports=function(t){return n(t[0])*n(t[1])}},{\"./lib/bn-sign\":69}],78:[function(t,e,r){\"use strict\";var n=t(\"./lib/rationalize\");e.exports=function(t,e){return n(t[0].mul(e[1]).sub(t[1].mul(e[0])),t[1].mul(e[1]))}},{\"./lib/rationalize\":74}],79:[function(t,e,r){\"use strict\";var n=t(\"./lib/bn-to-num\"),i=t(\"./lib/ctz\");e.exports=function(t){var e=t[0],r=t[1];if(0===e.cmpn(0))return 0;var a=e.abs().divmod(r.abs()),o=a.div,s=n(o),l=a.mod,c=e.negative!==r.negative?-1:1;if(0===l.cmpn(0))return c*s;if(s){var u=i(s)+4,f=n(l.ushln(u).divRound(r));return c*(s+f*Math.pow(2,-u))}var h=r.bitLength()-l.bitLength()+53,f=n(l.ushln(h).divRound(r));return h<1023?c*f*Math.pow(2,-h):(f*=Math.pow(2,-1023),c*f*Math.pow(2,1023-h))}},{\"./lib/bn-to-num\":70,\"./lib/ctz\":71}],80:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){var o=[\"function \",t,\"(a,l,h,\",n.join(\",\"),\"){\",a?\"\":\"var i=\",r?\"l-1\":\"h+1\",\";while(l<=h){var m=(l+h)>>>1,x=a\",i?\".get(m)\":\"[m]\"];return a?e.indexOf(\"c\")<0?o.push(\";if(x===y){return m}else if(x<=y){\"):o.push(\";var p=c(x,y);if(p===0){return m}else if(p<=0){\"):o.push(\";if(\",e,\"){i=m;\"),r?o.push(\"l=m+1}else{h=m-1}\"):o.push(\"h=m-1}else{l=m+1}\"),o.push(\"}\"),a?o.push(\"return -1};\"):o.push(\"return i};\"),o.join(\"\")}function i(t,e,r,i){return new Function([n(\"A\",\"x\"+t+\"y\",e,[\"y\"],!1,i),n(\"B\",\"x\"+t+\"y\",e,[\"y\"],!0,i),n(\"P\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],!1,i),n(\"Q\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],!0,i),\"function dispatchBsearch\",r,\"(a,y,c,l,h){if(a.shape){if(typeof(c)==='function'){return Q(a,(l===undefined)?0:l|0,(h===undefined)?a.shape[0]-1:h|0,y,c)}else{return B(a,(c===undefined)?0:c|0,(l===undefined)?a.shape[0]-1:l|0,y)}}else{if(typeof(c)==='function'){return P(a,(l===undefined)?0:l|0,(h===undefined)?a.length-1:h|0,y,c)}else{return A(a,(c===undefined)?0:c|0,(l===undefined)?a.length-1:l|0,y)}}}return dispatchBsearch\",r].join(\"\"))()}e.exports={ge:i(\">=\",!1,\"GE\"),gt:i(\">\",!1,\"GT\"),lt:i(\"<\",!0,\"LT\"),le:i(\"<=\",!0,\"LE\"),eq:i(\"-\",!0,\"EQ\",!0)}},{}],81:[function(t,e,r){\"use strict\";function n(t){var e=32;return(t&=-t)&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}r.INT_BITS=32,r.INT_MAX=2147483647,r.INT_MIN=-1<<31,r.sign=function(t){return(t>0)-(t<0)},r.abs=function(t){var e=t>>31;return(t^e)-e},r.min=function(t,e){return e^(t^e)&-(t<e)},r.max=function(t,e){return t^(t^e)&-(t<e)},r.isPow2=function(t){return!(t&t-1||!t)},r.log2=function(t){var e,r;return e=(t>65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},r.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},r.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},r.countTrailingZeros=n,r.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1},r.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},r.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var i=new Array(256);!function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<<i&255}}(i),r.reverse=function(t){return i[255&t]<<24|i[t>>>8&255]<<16|i[t>>>16&255]<<8|i[t>>>24&255]},r.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},r.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},r.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},r.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},r.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>n(t)+1}},{}],82:[function(t,e,r){\"use strict\";var n=t(\"clamp\");e.exports=function(t,e){e||(e={});var r,o,s,l,c,u,f,h,p,d,g,v=null==e.cutoff?.25:e.cutoff,m=null==e.radius?8:e.radius,y=e.channel||0;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error(\"For raw data width and height should be provided by options\");r=e.width,o=e.height,l=t,u=e.stride?e.stride:Math.floor(t.length/r/o)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(f=(h=t).getContext(\"2d\"),r=h.width,o=h.height,p=f.getImageData(0,0,r,o),l=p.data,u=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(h=t.canvas,f=t,r=h.width,o=h.height,p=f.getImageData(0,0,r,o),l=p.data,u=4):window.ImageData&&t instanceof window.ImageData&&(p=t,r=t.width,o=t.height,l=p.data,u=4);if(s=Math.max(r,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(c=l,l=Array(r*o),d=0,g=c.length;d<g;d++)l[d]=c[d*u+y]/255;else if(1!==u)throw Error(\"Raw data can have only 1 value per pixel\");var x=Array(r*o),b=Array(r*o),_=Array(s),w=Array(s),k=Array(s+1),A=Array(s);for(d=0,g=r*o;d<g;d++){var M=l[d];x[d]=1===M?0:0===M?i:Math.pow(Math.max(0,.5-M),2),b[d]=1===M?i:0===M?0:Math.pow(Math.max(0,M-.5),2)}a(x,r,o,_,w,A,k),a(b,r,o,_,w,A,k);var T=window.Float32Array?new Float32Array(r*o):new Array(r*o);for(d=0,g=r*o;d<g;d++)T[d]=n(1-((x[d]-b[d])/m+v),0,1);return T};var i=1e20;function a(t,e,r,n,i,a,s){for(var l=0;l<e;l++){for(var c=0;c<r;c++)n[c]=t[c*e+l];for(o(n,i,a,s,r),c=0;c<r;c++)t[c*e+l]=i[c]}for(c=0;c<r;c++){for(l=0;l<e;l++)n[l]=t[c*e+l];for(o(n,i,a,s,e),l=0;l<e;l++)t[c*e+l]=Math.sqrt(i[l])}}function o(t,e,r,n,a){r[0]=0,n[0]=-i,n[1]=+i;for(var o=1,s=0;o<a;o++){for(var l=(t[o]+o*o-(t[r[s]]+r[s]*r[s]))/(2*o-2*r[s]);l<=n[s];)s--,l=(t[o]+o*o-(t[r[s]]+r[s]*r[s]))/(2*o-2*r[s]);r[++s]=o,n[s]=l,n[s+1]=+i}for(o=0,s=0;o<a;o++){for(;n[s+1]<o;)s++;e[o]=(o-r[s])*(o-r[s])+t[r[s]]}}},{clamp:104}],83:[function(t,e,r){!function(e,r){\"use strict\";function n(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function a(t,e,r){if(a.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&(\"le\"!==e&&\"be\"!==e||(r=e,e=10),this._init(t||0,e||10,r||\"be\"))}var o;\"object\"==typeof e?e.exports=a:r.BN=a,a.BN=a,a.wordSize=26;try{o=t(\"buffer\").Buffer}catch(t){}function s(t,e,r){for(var n=0,i=Math.min(t.length,r),a=e;a<i;a++){var o=t.charCodeAt(a)-48;n<<=4,n|=o>=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return n}function l(t,e,r,n){for(var i=0,a=Math.min(t.length,r),o=e;o<a;o++){var s=t.charCodeAt(o)-48;i*=n,i+=s>=49?s-49+10:s>=17?s-17+10:s}return i}a.isBN=function(t){return t instanceof a||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===a.wordSize&&Array.isArray(t.words)},a.max=function(t,e){return t.cmp(e)>0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36);var i=0;\"-\"===(t=t.toString().replace(/\\s+/g,\"\"))[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},a.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},a.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var a,o,s=0;if(\"be\"===r)for(i=t.length-1,a=0;i>=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[a]|=o<<s&67108863,this.words[a+1]=o>>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if(\"le\"===r)for(i=0,a=0;i<t.length;i+=3)o=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[a]|=o<<s&67108863,this.words[a+1]=o>>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,i,a=0;for(r=t.length-6,n=0;r>=e;r-=6)i=s(t,r,r+6),this.words[n]|=i<<a&67108863,this.words[n+1]|=i>>>26-a&4194303,(a+=24)>=26&&(a-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<<a&67108863,this.words[n+1]|=i>>>26-a&4194303),this.strip()},a.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var a=t.length-r,o=a%n,s=Math.min(a,a-o)+r,c=0,u=r;u<s;u+=n)c=l(t,u,u+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==o){var f=1;for(c=l(t,u,t.length,e),u=0;u<o;u++)f*=e;this.imuln(f),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}},a.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},a.prototype.clone=function(){var t=new a(null);return this.copy(t),t},a.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},a.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var c=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],a=0|e.words[0],o=i*a,s=67108863&o,l=o/67108864|0;r.words[0]=s;for(var c=1;c<n;c++){for(var u=l>>>26,f=67108863&l,h=Math.min(c,e.length-1),p=Math.max(0,c-t.length+1);p<=h;p++){var d=c-p|0;u+=(o=(i=0|t.words[d])*(a=0|e.words[p])+f)/67108864|0,f=67108863&o}r.words[c]=0|f,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}a.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||\"hex\"===t){r=\"\";for(var i=0,a=0,o=0;o<this.length;o++){var s=this.words[o],l=(16777215&(s<<i|a)).toString(16);r=0!==(a=s>>>24-i&16777215)||o!==this.length-1?c[6-l.length]+l+r:l+r,(i+=2)>=26&&(i-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%e!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var h=u[t],p=f[t];r=\"\";var d=this.clone();for(d.negative=0;!d.isZero();){var g=d.modn(p).toString(t);r=(d=d.idivn(p)).isZero()?g+r:c[h-g.length]+g+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof o),this.toArrayLike(o,t,e)},a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},a.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),a=r||Math.max(1,i);n(i<=a,\"byte array longer than desired length\"),n(a>0,\"Requested array length <= 0\"),this.strip();var o,s,l=\"le\"===e,c=new t(a),u=this.clone();if(l){for(s=0;!u.isZero();s++)o=u.andln(255),u.iushrn(8),c[s]=o;for(;s<a;s++)c[s]=0}else{for(s=0;s<a-i;s++)c[s]=0;for(s=0;!u.isZero();s++)o=u.andln(255),u.iushrn(8),c[a-s-1]=o}return c},Math.clz32?a.prototype._countBits=function(t){return 32-Math.clz32(t)}:a.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},a.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return 0!==this.negative},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},a.prototype.ior=function(t){return n(0==(this.negative|t.negative)),this.iuor(t)},a.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this.strip()},a.prototype.iand=function(t){return n(0==(this.negative|t.negative)),this.iuand(t)},a.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this.strip()},a.prototype.ixor=function(t){return n(0==(this.negative|t.negative)),this.iuxor(t)},a.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<<i:this.words[r]&~(1<<i),this.strip()},a.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,a=0;a<n.length;a++)e=(0|r.words[a])+(0|n.words[a])+i,this.words[a]=67108863&e,i=e>>>26;for(;0!==i&&a<r.length;a++)e=(0|r.words[a])+i,this.words[a]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;a<r.length;a++)this.words[a]=r.words[a];return this},a.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var a=0,o=0;o<n.length;o++)a=(e=(0|r.words[o])-(0|n.words[o])+a)>>26,this.words[o]=67108863&e;for(;0!==a&&o<r.length;o++)a=(e=(0|r.words[o])+a)>>26,this.words[o]=67108863&e;if(0===a&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this.strip()},a.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,r){var n,i,a,o=t.words,s=e.words,l=r.words,c=0,u=0|o[0],f=8191&u,h=u>>>13,p=0|o[1],d=8191&p,g=p>>>13,v=0|o[2],m=8191&v,y=v>>>13,x=0|o[3],b=8191&x,_=x>>>13,w=0|o[4],k=8191&w,A=w>>>13,M=0|o[5],T=8191&M,S=M>>>13,C=0|o[6],E=8191&C,L=C>>>13,z=0|o[7],O=8191&z,I=z>>>13,D=0|o[8],P=8191&D,R=D>>>13,F=0|o[9],B=8191&F,N=F>>>13,j=0|s[0],V=8191&j,U=j>>>13,q=0|s[1],H=8191&q,G=q>>>13,W=0|s[2],Y=8191&W,X=W>>>13,Z=0|s[3],$=8191&Z,J=Z>>>13,K=0|s[4],Q=8191&K,tt=K>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],at=8191&it,ot=it>>>13,st=0|s[7],lt=8191&st,ct=st>>>13,ut=0|s[8],ft=8191&ut,ht=ut>>>13,pt=0|s[9],dt=8191&pt,gt=pt>>>13;r.negative=t.negative^e.negative,r.length=19;var vt=(c+(n=Math.imul(f,V))|0)+((8191&(i=(i=Math.imul(f,U))+Math.imul(h,V)|0))<<13)|0;c=((a=Math.imul(h,U))+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(d,V),i=(i=Math.imul(d,U))+Math.imul(g,V)|0,a=Math.imul(g,U);var mt=(c+(n=n+Math.imul(f,H)|0)|0)+((8191&(i=(i=i+Math.imul(f,G)|0)+Math.imul(h,H)|0))<<13)|0;c=((a=a+Math.imul(h,G)|0)+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(m,V),i=(i=Math.imul(m,U))+Math.imul(y,V)|0,a=Math.imul(y,U),n=n+Math.imul(d,H)|0,i=(i=i+Math.imul(d,G)|0)+Math.imul(g,H)|0,a=a+Math.imul(g,G)|0;var yt=(c+(n=n+Math.imul(f,Y)|0)|0)+((8191&(i=(i=i+Math.imul(f,X)|0)+Math.imul(h,Y)|0))<<13)|0;c=((a=a+Math.imul(h,X)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(b,V),i=(i=Math.imul(b,U))+Math.imul(_,V)|0,a=Math.imul(_,U),n=n+Math.imul(m,H)|0,i=(i=i+Math.imul(m,G)|0)+Math.imul(y,H)|0,a=a+Math.imul(y,G)|0,n=n+Math.imul(d,Y)|0,i=(i=i+Math.imul(d,X)|0)+Math.imul(g,Y)|0,a=a+Math.imul(g,X)|0;var xt=(c+(n=n+Math.imul(f,$)|0)|0)+((8191&(i=(i=i+Math.imul(f,J)|0)+Math.imul(h,$)|0))<<13)|0;c=((a=a+Math.imul(h,J)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(k,V),i=(i=Math.imul(k,U))+Math.imul(A,V)|0,a=Math.imul(A,U),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,G)|0)+Math.imul(_,H)|0,a=a+Math.imul(_,G)|0,n=n+Math.imul(m,Y)|0,i=(i=i+Math.imul(m,X)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,X)|0,n=n+Math.imul(d,$)|0,i=(i=i+Math.imul(d,J)|0)+Math.imul(g,$)|0,a=a+Math.imul(g,J)|0;var bt=(c+(n=n+Math.imul(f,Q)|0)|0)+((8191&(i=(i=i+Math.imul(f,tt)|0)+Math.imul(h,Q)|0))<<13)|0;c=((a=a+Math.imul(h,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(T,V),i=(i=Math.imul(T,U))+Math.imul(S,V)|0,a=Math.imul(S,U),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,G)|0)+Math.imul(A,H)|0,a=a+Math.imul(A,G)|0,n=n+Math.imul(b,Y)|0,i=(i=i+Math.imul(b,X)|0)+Math.imul(_,Y)|0,a=a+Math.imul(_,X)|0,n=n+Math.imul(m,$)|0,i=(i=i+Math.imul(m,J)|0)+Math.imul(y,$)|0,a=a+Math.imul(y,J)|0,n=n+Math.imul(d,Q)|0,i=(i=i+Math.imul(d,tt)|0)+Math.imul(g,Q)|0,a=a+Math.imul(g,tt)|0;var _t=(c+(n=n+Math.imul(f,rt)|0)|0)+((8191&(i=(i=i+Math.imul(f,nt)|0)+Math.imul(h,rt)|0))<<13)|0;c=((a=a+Math.imul(h,nt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(E,V),i=(i=Math.imul(E,U))+Math.imul(L,V)|0,a=Math.imul(L,U),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,G)|0)+Math.imul(S,H)|0,a=a+Math.imul(S,G)|0,n=n+Math.imul(k,Y)|0,i=(i=i+Math.imul(k,X)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,X)|0,n=n+Math.imul(b,$)|0,i=(i=i+Math.imul(b,J)|0)+Math.imul(_,$)|0,a=a+Math.imul(_,J)|0,n=n+Math.imul(m,Q)|0,i=(i=i+Math.imul(m,tt)|0)+Math.imul(y,Q)|0,a=a+Math.imul(y,tt)|0,n=n+Math.imul(d,rt)|0,i=(i=i+Math.imul(d,nt)|0)+Math.imul(g,rt)|0,a=a+Math.imul(g,nt)|0;var wt=(c+(n=n+Math.imul(f,at)|0)|0)+((8191&(i=(i=i+Math.imul(f,ot)|0)+Math.imul(h,at)|0))<<13)|0;c=((a=a+Math.imul(h,ot)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(O,V),i=(i=Math.imul(O,U))+Math.imul(I,V)|0,a=Math.imul(I,U),n=n+Math.imul(E,H)|0,i=(i=i+Math.imul(E,G)|0)+Math.imul(L,H)|0,a=a+Math.imul(L,G)|0,n=n+Math.imul(T,Y)|0,i=(i=i+Math.imul(T,X)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,X)|0,n=n+Math.imul(k,$)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(A,$)|0,a=a+Math.imul(A,J)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(_,Q)|0,a=a+Math.imul(_,tt)|0,n=n+Math.imul(m,rt)|0,i=(i=i+Math.imul(m,nt)|0)+Math.imul(y,rt)|0,a=a+Math.imul(y,nt)|0,n=n+Math.imul(d,at)|0,i=(i=i+Math.imul(d,ot)|0)+Math.imul(g,at)|0,a=a+Math.imul(g,ot)|0;var kt=(c+(n=n+Math.imul(f,lt)|0)|0)+((8191&(i=(i=i+Math.imul(f,ct)|0)+Math.imul(h,lt)|0))<<13)|0;c=((a=a+Math.imul(h,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(P,V),i=(i=Math.imul(P,U))+Math.imul(R,V)|0,a=Math.imul(R,U),n=n+Math.imul(O,H)|0,i=(i=i+Math.imul(O,G)|0)+Math.imul(I,H)|0,a=a+Math.imul(I,G)|0,n=n+Math.imul(E,Y)|0,i=(i=i+Math.imul(E,X)|0)+Math.imul(L,Y)|0,a=a+Math.imul(L,X)|0,n=n+Math.imul(T,$)|0,i=(i=i+Math.imul(T,J)|0)+Math.imul(S,$)|0,a=a+Math.imul(S,J)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(A,Q)|0,a=a+Math.imul(A,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(_,rt)|0,a=a+Math.imul(_,nt)|0,n=n+Math.imul(m,at)|0,i=(i=i+Math.imul(m,ot)|0)+Math.imul(y,at)|0,a=a+Math.imul(y,ot)|0,n=n+Math.imul(d,lt)|0,i=(i=i+Math.imul(d,ct)|0)+Math.imul(g,lt)|0,a=a+Math.imul(g,ct)|0;var At=(c+(n=n+Math.imul(f,ft)|0)|0)+((8191&(i=(i=i+Math.imul(f,ht)|0)+Math.imul(h,ft)|0))<<13)|0;c=((a=a+Math.imul(h,ht)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,V),i=(i=Math.imul(B,U))+Math.imul(N,V)|0,a=Math.imul(N,U),n=n+Math.imul(P,H)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(R,H)|0,a=a+Math.imul(R,G)|0,n=n+Math.imul(O,Y)|0,i=(i=i+Math.imul(O,X)|0)+Math.imul(I,Y)|0,a=a+Math.imul(I,X)|0,n=n+Math.imul(E,$)|0,i=(i=i+Math.imul(E,J)|0)+Math.imul(L,$)|0,a=a+Math.imul(L,J)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(S,Q)|0,a=a+Math.imul(S,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(A,rt)|0,a=a+Math.imul(A,nt)|0,n=n+Math.imul(b,at)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(_,at)|0,a=a+Math.imul(_,ot)|0,n=n+Math.imul(m,lt)|0,i=(i=i+Math.imul(m,ct)|0)+Math.imul(y,lt)|0,a=a+Math.imul(y,ct)|0,n=n+Math.imul(d,ft)|0,i=(i=i+Math.imul(d,ht)|0)+Math.imul(g,ft)|0,a=a+Math.imul(g,ht)|0;var Mt=(c+(n=n+Math.imul(f,dt)|0)|0)+((8191&(i=(i=i+Math.imul(f,gt)|0)+Math.imul(h,dt)|0))<<13)|0;c=((a=a+Math.imul(h,gt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(B,H),i=(i=Math.imul(B,G))+Math.imul(N,H)|0,a=Math.imul(N,G),n=n+Math.imul(P,Y)|0,i=(i=i+Math.imul(P,X)|0)+Math.imul(R,Y)|0,a=a+Math.imul(R,X)|0,n=n+Math.imul(O,$)|0,i=(i=i+Math.imul(O,J)|0)+Math.imul(I,$)|0,a=a+Math.imul(I,J)|0,n=n+Math.imul(E,Q)|0,i=(i=i+Math.imul(E,tt)|0)+Math.imul(L,Q)|0,a=a+Math.imul(L,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(S,rt)|0,a=a+Math.imul(S,nt)|0,n=n+Math.imul(k,at)|0,i=(i=i+Math.imul(k,ot)|0)+Math.imul(A,at)|0,a=a+Math.imul(A,ot)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(_,lt)|0,a=a+Math.imul(_,ct)|0,n=n+Math.imul(m,ft)|0,i=(i=i+Math.imul(m,ht)|0)+Math.imul(y,ft)|0,a=a+Math.imul(y,ht)|0;var Tt=(c+(n=n+Math.imul(d,dt)|0)|0)+((8191&(i=(i=i+Math.imul(d,gt)|0)+Math.imul(g,dt)|0))<<13)|0;c=((a=a+Math.imul(g,gt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(B,Y),i=(i=Math.imul(B,X))+Math.imul(N,Y)|0,a=Math.imul(N,X),n=n+Math.imul(P,$)|0,i=(i=i+Math.imul(P,J)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,J)|0,n=n+Math.imul(O,Q)|0,i=(i=i+Math.imul(O,tt)|0)+Math.imul(I,Q)|0,a=a+Math.imul(I,tt)|0,n=n+Math.imul(E,rt)|0,i=(i=i+Math.imul(E,nt)|0)+Math.imul(L,rt)|0,a=a+Math.imul(L,nt)|0,n=n+Math.imul(T,at)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(S,at)|0,a=a+Math.imul(S,ot)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(A,lt)|0,a=a+Math.imul(A,ct)|0,n=n+Math.imul(b,ft)|0,i=(i=i+Math.imul(b,ht)|0)+Math.imul(_,ft)|0,a=a+Math.imul(_,ht)|0;var St=(c+(n=n+Math.imul(m,dt)|0)|0)+((8191&(i=(i=i+Math.imul(m,gt)|0)+Math.imul(y,dt)|0))<<13)|0;c=((a=a+Math.imul(y,gt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(B,$),i=(i=Math.imul(B,J))+Math.imul(N,$)|0,a=Math.imul(N,J),n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,tt)|0)+Math.imul(R,Q)|0,a=a+Math.imul(R,tt)|0,n=n+Math.imul(O,rt)|0,i=(i=i+Math.imul(O,nt)|0)+Math.imul(I,rt)|0,a=a+Math.imul(I,nt)|0,n=n+Math.imul(E,at)|0,i=(i=i+Math.imul(E,ot)|0)+Math.imul(L,at)|0,a=a+Math.imul(L,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(S,lt)|0,a=a+Math.imul(S,ct)|0,n=n+Math.imul(k,ft)|0,i=(i=i+Math.imul(k,ht)|0)+Math.imul(A,ft)|0,a=a+Math.imul(A,ht)|0;var Ct=(c+(n=n+Math.imul(b,dt)|0)|0)+((8191&(i=(i=i+Math.imul(b,gt)|0)+Math.imul(_,dt)|0))<<13)|0;c=((a=a+Math.imul(_,gt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(B,Q),i=(i=Math.imul(B,tt))+Math.imul(N,Q)|0,a=Math.imul(N,tt),n=n+Math.imul(P,rt)|0,i=(i=i+Math.imul(P,nt)|0)+Math.imul(R,rt)|0,a=a+Math.imul(R,nt)|0,n=n+Math.imul(O,at)|0,i=(i=i+Math.imul(O,ot)|0)+Math.imul(I,at)|0,a=a+Math.imul(I,ot)|0,n=n+Math.imul(E,lt)|0,i=(i=i+Math.imul(E,ct)|0)+Math.imul(L,lt)|0,a=a+Math.imul(L,ct)|0,n=n+Math.imul(T,ft)|0,i=(i=i+Math.imul(T,ht)|0)+Math.imul(S,ft)|0,a=a+Math.imul(S,ht)|0;var Et=(c+(n=n+Math.imul(k,dt)|0)|0)+((8191&(i=(i=i+Math.imul(k,gt)|0)+Math.imul(A,dt)|0))<<13)|0;c=((a=a+Math.imul(A,gt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(B,rt),i=(i=Math.imul(B,nt))+Math.imul(N,rt)|0,a=Math.imul(N,nt),n=n+Math.imul(P,at)|0,i=(i=i+Math.imul(P,ot)|0)+Math.imul(R,at)|0,a=a+Math.imul(R,ot)|0,n=n+Math.imul(O,lt)|0,i=(i=i+Math.imul(O,ct)|0)+Math.imul(I,lt)|0,a=a+Math.imul(I,ct)|0,n=n+Math.imul(E,ft)|0,i=(i=i+Math.imul(E,ht)|0)+Math.imul(L,ft)|0,a=a+Math.imul(L,ht)|0;var Lt=(c+(n=n+Math.imul(T,dt)|0)|0)+((8191&(i=(i=i+Math.imul(T,gt)|0)+Math.imul(S,dt)|0))<<13)|0;c=((a=a+Math.imul(S,gt)|0)+(i>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,n=Math.imul(B,at),i=(i=Math.imul(B,ot))+Math.imul(N,at)|0,a=Math.imul(N,ot),n=n+Math.imul(P,lt)|0,i=(i=i+Math.imul(P,ct)|0)+Math.imul(R,lt)|0,a=a+Math.imul(R,ct)|0,n=n+Math.imul(O,ft)|0,i=(i=i+Math.imul(O,ht)|0)+Math.imul(I,ft)|0,a=a+Math.imul(I,ht)|0;var zt=(c+(n=n+Math.imul(E,dt)|0)|0)+((8191&(i=(i=i+Math.imul(E,gt)|0)+Math.imul(L,dt)|0))<<13)|0;c=((a=a+Math.imul(L,gt)|0)+(i>>>13)|0)+(zt>>>26)|0,zt&=67108863,n=Math.imul(B,lt),i=(i=Math.imul(B,ct))+Math.imul(N,lt)|0,a=Math.imul(N,ct),n=n+Math.imul(P,ft)|0,i=(i=i+Math.imul(P,ht)|0)+Math.imul(R,ft)|0,a=a+Math.imul(R,ht)|0;var Ot=(c+(n=n+Math.imul(O,dt)|0)|0)+((8191&(i=(i=i+Math.imul(O,gt)|0)+Math.imul(I,dt)|0))<<13)|0;c=((a=a+Math.imul(I,gt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(B,ft),i=(i=Math.imul(B,ht))+Math.imul(N,ft)|0,a=Math.imul(N,ht);var It=(c+(n=n+Math.imul(P,dt)|0)|0)+((8191&(i=(i=i+Math.imul(P,gt)|0)+Math.imul(R,dt)|0))<<13)|0;c=((a=a+Math.imul(R,gt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863;var Dt=(c+(n=Math.imul(B,dt))|0)+((8191&(i=(i=Math.imul(B,gt))+Math.imul(N,dt)|0))<<13)|0;return c=((a=Math.imul(N,gt))+(i>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l[0]=vt,l[1]=mt,l[2]=yt,l[3]=xt,l[4]=bt,l[5]=_t,l[6]=wt,l[7]=kt,l[8]=At,l[9]=Mt,l[10]=Tt,l[11]=St,l[12]=Ct,l[13]=Et,l[14]=Lt,l[15]=zt,l[16]=Ot,l[17]=It,l[18]=Dt,0!==c&&(l[19]=c,r.length++),r};function d(t,e,r){return(new g).mulp(t,e,r)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=h),a.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?p(this,t,e):r<63?h(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,a=0;a<r.length-1;a++){var o=i;i=0;for(var s=67108863&n,l=Math.min(a,e.length-1),c=Math.max(0,a-t.length+1);c<=l;c++){var u=a-c,f=(0|t.words[u])*(0|e.words[c]),h=67108863&f;s=67108863&(h=h+s|0),i+=(o=(o=o+(f/67108864|0)|0)+(h>>>26)|0)>>>26,o&=67108863}r.words[a]=s,n=o,o=i}return 0!==n?r.words[a]=n:r.length--,r.strip()}(this,t,e):d(this,t,e)},g.prototype.makeRBT=function(t){for(var e=new Array(t),r=a.prototype._countBits(t)-1,n=0;n<t;n++)e[n]=this.revBin(n,r,t);return e},g.prototype.revBin=function(t,e,r){if(0===t||t===r-1)return t;for(var n=0,i=0;i<e;i++)n|=(1&t)<<e-i-1,t>>=1;return n},g.prototype.permute=function(t,e,r,n,i,a){for(var o=0;o<a;o++)n[o]=e[t[o]],i[o]=r[t[o]]},g.prototype.transform=function(t,e,r,n,i,a){this.permute(a,t,e,r,n,i);for(var o=1;o<i;o<<=1)for(var s=o<<1,l=Math.cos(2*Math.PI/s),c=Math.sin(2*Math.PI/s),u=0;u<i;u+=s)for(var f=l,h=c,p=0;p<o;p++){var d=r[u+p],g=n[u+p],v=r[u+p+o],m=n[u+p+o],y=f*v-h*m;m=f*m+h*v,v=y,r[u+p]=d+v,n[u+p]=g+m,r[u+p+o]=d-v,n[u+p+o]=g-m,p!==s&&(y=l*f-c*h,h=l*h+c*f,f=y)}},g.prototype.guessLen13b=function(t,e){var r=1|Math.max(e,t),n=1&r,i=0;for(r=r/2|0;r;r>>>=1)i++;return 1<<i+1+n},g.prototype.conjugate=function(t,e,r){if(!(r<=1))for(var n=0;n<r/2;n++){var i=t[n];t[n]=t[r-n-1],t[r-n-1]=i,i=e[n],e[n]=-e[r-n-1],e[r-n-1]=-i}},g.prototype.normalize13b=function(t,e){for(var r=0,n=0;n<e/2;n++){var i=8192*Math.round(t[2*n+1]/e)+Math.round(t[2*n]/e)+r;t[n]=67108863&i,r=i<67108864?0:i/67108864|0}return t},g.prototype.convert13b=function(t,e,r,i){for(var a=0,o=0;o<e;o++)a+=0|t[o],r[2*o]=8191&a,a>>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*e;o<i;++o)r[o]=0;n(0===a),n(0==(-8192&a))},g.prototype.stub=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=0;return e},g.prototype.mulp=function(t,e,r){var n=2*this.guessLen13b(t.length,e.length),i=this.makeRBT(n),a=this.stub(n),o=new Array(n),s=new Array(n),l=new Array(n),c=new Array(n),u=new Array(n),f=new Array(n),h=r.words;h.length=n,this.convert13b(t.words,t.length,o,n),this.convert13b(e.words,e.length,c,n),this.transform(o,a,s,l,n,i),this.transform(c,a,u,f,n,i);for(var p=0;p<n;p++){var d=s[p]*u[p]-l[p]*f[p];l[p]=s[p]*f[p]+l[p]*u[p],s[p]=d}return this.conjugate(s,l,n),this.transform(s,l,h,a,n,i),this.conjugate(h,a,n),this.normalize13b(h,n),r.negative=t.negative^e.negative,r.length=t.length+e.length,r.strip()},a.prototype.mul=function(t){var e=new a(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},a.prototype.mulf=function(t){var e=new a(null);return e.words=new Array(this.length+t.length),d(this,t,e)},a.prototype.imul=function(t){return this.clone().mulTo(t,this)},a.prototype.imuln=function(t){n(\"number\"==typeof t),n(t<67108864);for(var e=0,r=0;r<this.length;r++){var i=(0|this.words[r])*t,a=(67108863&i)+(67108863&e);e>>=26,e+=i/67108864|0,e+=a>>>26,this.words[r]=67108863&a}return 0!==e&&(this.words[r]=e,this.length++),this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=(t.words[n]&1<<i)>>>i}return e}(t);if(0===e.length)return new a(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var i=r.sqr();n<e.length;n++,i=i.sqr())0!==e[n]&&(r=r.mul(i));return r},a.prototype.iushln=function(t){n(\"number\"==typeof t&&t>=0);var e,r=t%26,i=(t-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e<this.length;e++){var s=this.words[e]&a,l=(0|this.words[e])-s<<r;this.words[e]=l|o,o=s>>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this.strip()},a.prototype.ishln=function(t){return n(0===this.negative),this.iushln(t)},a.prototype.iushrn=function(t,e,r){var i;n(\"number\"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<<a,l=r;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var f=0|this.words[c];this.words[c]=u<<26-a|f>>>a,u=f&s}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<<e;return!(this.length<=r)&&!!(this.words[r]&i)},a.prototype.imaskn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this.strip()},a.prototype.maskn=function(t){return this.clone().imaskn(t)},a.prototype.iaddn=function(t){return n(\"number\"==typeof t),n(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},a.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},a.prototype.addn=function(t){return this.clone().iaddn(t)},a.prototype.subn=function(t){return this.clone().isubn(t)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(t,e,r){var i,a,o=t.length+r;this._expand(o);var s=0;for(i=0;i<t.length;i++){a=(0|this.words[i+r])+s;var l=(0|t.words[i])*e;s=((a-=67108863&l)>>26)-(l/67108864|0),this.words[i+r]=67108863&a}for(;i<this.length-r;i++)s=(a=(0|this.words[i+r])+s)>>26,this.words[i+r]=67108863&a;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i<this.length;i++)s=(a=-(0|this.words[i])+s)>>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,l=n.length-i.length;if(\"mod\"!==e){(s=new a(null)).length=l+1,s.words=new Array(s.length);for(var c=0;c<s.length;c++)s.words[c]=0}var u=n.clone()._ishlnsubmul(i,1,l);0===u.negative&&(n=u,s&&(s.words[l]=1));for(var f=l-1;f>=0;f--){var h=67108864*(0|n.words[i.length+f])+(0|n.words[i.length+f-1]);for(h=Math.min(h/o|0,67108863),n._ishlnsubmul(i,h,f);0!==n.negative;)h--,n.negative=0,n._ishlnsubmul(i,1,f),n.isZero()||(n.negative^=1);s&&(s.words[f]=h)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},a.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),\"mod\"!==e&&(i=s.div.neg()),\"div\"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(t)),{div:i,mod:o}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),\"mod\"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),\"div\"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(t)),{div:s.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new a(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,o,s},a.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},a.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},a.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),a=r.cmp(n);return a<0||1===i&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},a.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new a(1),o=new a(0),s=new a(0),l=new a(1),c=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),f=e.clone();!e.isZero();){for(var h=0,p=1;0==(e.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(e.iushrn(h);h-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(f)),i.iushrn(1),o.iushrn(1);for(var d=0,g=1;0==(r.words[0]&g)&&d<26;++d,g<<=1);if(d>0)for(r.iushrn(d);d-- >0;)(s.isOdd()||l.isOdd())&&(s.iadd(u),l.isub(f)),s.iushrn(1),l.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s),o.isub(l)):(r.isub(e),s.isub(i),l.isub(o))}return{a:s,b:l,gcd:r.iushln(c)}},a.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i,o=new a(1),s=new a(0),l=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var f=0,h=1;0==(r.words[0]&h)&&f<26;++f,h<<=1);if(f>0)for(r.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),o.isub(s)):(r.isub(e),s.isub(o))}return(i=0===e.cmpn(1)?o:s).cmpn(0)<0&&i.iadd(t),i},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var a=e;e=r,r=a}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<<e;if(this.length<=r)return this._expand(r+1),this.words[r]|=i,this;for(var a=i,o=r;0!==a&&o<this.length;o++){var s=0|this.words[o];a=(s+=a)>>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},a.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},a.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new w(t)},a.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},a.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},a.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},a.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},a.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function m(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){m.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function x(){m.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function b(){m.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function _(){m.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function w(t){if(\"string\"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function k(t){w.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}m.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},m.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):r.strip(),r},m.prototype.split=function(t,e){t.iushrn(this.n,0,e)},m.prototype.imulK=function(t){return t.imul(this.k)},i(y,m),y.prototype.split=function(t,e){for(var r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var i=t.words[9];for(e.words[e.length++]=4194303&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(4194303&a)<<4|i>>>22,i=a}i>>>=22,t.words[n-10]=i,0===i&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},i(x,m),i(b,m),i(_,m),_.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(v[t])return v[t];var e;if(\"k256\"===t)e=new y;else if(\"p224\"===t)e=new x;else if(\"p192\"===t)e=new b;else{if(\"p25519\"!==t)throw new Error(\"Unknown prime \"+t);e=new _}return v[t]=e,e},w.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},w.prototype._verify2=function(t,e){n(0==(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},w.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},w.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},w.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},w.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},w.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},w.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},w.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},w.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},w.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},w.prototype.isqr=function(t){return this.imul(t,t.clone())},w.prototype.sqr=function(t){return this.mul(t,t)},w.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2==1),3===e){var r=this.m.add(new a(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var s=new a(1).toRed(this),l=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new a(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var f=this.pow(u,i),h=this.pow(t,i.addn(1).iushrn(1)),p=this.pow(t,i),d=o;0!==p.cmp(s);){for(var g=p,v=0;0!==g.cmp(s);v++)g=g.redSqr();n(v<d);var m=this.pow(f,new a(1).iushln(d-v-1));h=h.redMul(m),f=m.redSqr(),p=p.redMul(f),d=v}return h},w.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},w.prototype.pow=function(t,e){if(e.isZero())return new a(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new a(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var i=r[0],o=0,s=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var f=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==f||0!==o?(o<<=1,o|=f,(4===++s||0===n&&0===u)&&(i=this.mul(i,r[o]),s=0,o=0)):s=0}l=26}return i},w.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},w.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new k(t)},i(k,w),k.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},k.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},k.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},k.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},k.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(\"undefined\"==typeof e||e,this)},{buffer:92}],84:[function(t,e,r){\"use strict\";e.exports=function(t){var e,r,n,i=t.length,a=0;for(e=0;e<i;++e)a+=t[e].length;var o=new Array(a),s=0;for(e=0;e<i;++e){var l=t[e],c=l.length;for(r=0;r<c;++r){var u=o[s++]=new Array(c-1),f=0;for(n=0;n<c;++n)n!==r&&(u[f++]=l[n]);if(1&r){var h=u[1];u[1]=u[0],u[0]=h}}}return o}},{}],85:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){switch(arguments.length){case 1:return n=[],c(i=t,i,u,!0),n;case 2:return\"function\"==typeof e?c(t,t,e,!0):function(t,e){return n=[],c(t,e,u,!1),n}(t,e);case 3:return c(t,e,r,!1);default:throw new Error(\"box-intersect: Invalid arguments\")}var i};var n,i=t(\"typedarray-pool\"),a=t(\"./lib/sweep\"),o=t(\"./lib/intersect\");function s(t,e){for(var r=0;r<t;++r)if(!(e[r]<=e[r+t]))return!0;return!1}function l(t,e,r,n){for(var i=0,a=0,o=0,l=t.length;o<l;++o){var c=t[o];if(!s(e,c)){for(var u=0;u<2*e;++u)r[i++]=c[u];n[a++]=o}}return a}function c(t,e,r,n){var s=t.length,c=e.length;if(!(s<=0||c<=0)){var u=t[0].length>>>1;if(!(u<=0)){var f,h=i.mallocDouble(2*u*s),p=i.mallocInt32(s);if((s=l(t,u,h,p))>0){if(1===u&&n)a.init(s),f=a.sweepComplete(u,r,0,s,h,p,0,s,h,p);else{var d=i.mallocDouble(2*u*c),g=i.mallocInt32(c);(c=l(e,u,d,g))>0&&(a.init(s+c),f=1===u?a.sweepBipartite(u,r,0,s,h,p,0,c,d,g):o(u,r,n,s,h,p,c,d,g),i.free(d),i.free(g))}i.free(h),i.free(p)}return f}}}function u(t,e){n.push([t,e])}},{\"./lib/intersect\":87,\"./lib/sweep\":91,\"typedarray-pool\":523}],86:[function(t,e,r){\"use strict\";var n=\"d\",i=\"ax\",a=\"vv\",o=\"fp\",s=\"es\",l=\"rs\",c=\"re\",u=\"rb\",f=\"ri\",h=\"rp\",p=\"bs\",d=\"be\",g=\"bb\",v=\"bi\",m=\"bp\",y=\"rv\",x=\"Q\",b=[n,i,a,l,c,u,f,p,d,g,v];function _(t){var e=\"bruteForce\"+(t?\"Full\":\"Partial\"),r=[],_=b.slice();t||_.splice(3,0,o);var w=[\"function \"+e+\"(\"+_.join()+\"){\"];function k(e,o){var _=function(t,e,r){var o=\"bruteForce\"+(t?\"Red\":\"Blue\")+(e?\"Flip\":\"\")+(r?\"Full\":\"\"),_=[\"function \",o,\"(\",b.join(),\"){\",\"var \",s,\"=2*\",n,\";\"],w=\"for(var i=\"+l+\",\"+h+\"=\"+s+\"*\"+l+\";i<\"+c+\";++i,\"+h+\"+=\"+s+\"){var x0=\"+u+\"[\"+i+\"+\"+h+\"],x1=\"+u+\"[\"+i+\"+\"+h+\"+\"+n+\"],xi=\"+f+\"[i];\",k=\"for(var j=\"+p+\",\"+m+\"=\"+s+\"*\"+p+\";j<\"+d+\";++j,\"+m+\"+=\"+s+\"){var y0=\"+g+\"[\"+i+\"+\"+m+\"],\"+(r?\"y1=\"+g+\"[\"+i+\"+\"+m+\"+\"+n+\"],\":\"\")+\"yi=\"+v+\"[j];\";return t?_.push(w,x,\":\",k):_.push(k,x,\":\",w),r?_.push(\"if(y1<x0||x1<y0)continue;\"):e?_.push(\"if(y0<=x0||x1<y0)continue;\"):_.push(\"if(y0<x0||x1<y0)continue;\"),_.push(\"for(var k=\"+i+\"+1;k<\"+n+\";++k){var r0=\"+u+\"[k+\"+h+\"],r1=\"+u+\"[k+\"+n+\"+\"+h+\"],b0=\"+g+\"[k+\"+m+\"],b1=\"+g+\"[k+\"+n+\"+\"+m+\"];if(r1<b0||b1<r0)continue \"+x+\";}var \"+y+\"=\"+a+\"(\"),e?_.push(\"yi,xi\"):_.push(\"xi,yi\"),_.push(\");if(\"+y+\"!==void 0)return \"+y+\";}}}\"),{name:o,code:_.join(\"\")}}(e,o,t);r.push(_.code),w.push(\"return \"+_.name+\"(\"+b.join()+\");\")}w.push(\"if(\"+c+\"-\"+l+\">\"+d+\"-\"+p+\"){\"),t?(k(!0,!1),w.push(\"}else{\"),k(!1,!1)):(w.push(\"if(\"+o+\"){\"),k(!0,!0),w.push(\"}else{\"),k(!0,!1),w.push(\"}}else{if(\"+o+\"){\"),k(!1,!0),w.push(\"}else{\"),k(!1,!1),w.push(\"}\")),w.push(\"}}return \"+e);var A=r.join(\"\")+w.join(\"\");return new Function(A)()}r.partial=_(!1),r.full=_(!0)},{}],87:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,a,u,S,C,E,L){!function(t,e){var r=8*i.log2(e+1)*(t+1)|0,a=i.nextPow2(b*r);w.length<a&&(n.free(w),w=n.mallocInt32(a));var o=i.nextPow2(_*r);k<o&&(n.free(k),k=n.mallocDouble(o))}(t,a+C);var z,O=0,I=2*t;A(O++,0,0,a,0,C,r?16:0,-1/0,1/0),r||A(O++,0,0,C,0,a,1,-1/0,1/0);for(;O>0;){var D=(O-=1)*b,P=w[D],R=w[D+1],F=w[D+2],B=w[D+3],N=w[D+4],j=w[D+5],V=O*_,U=k[V],q=k[V+1],H=1&j,G=!!(16&j),W=u,Y=S,X=E,Z=L;if(H&&(W=E,Y=L,X=u,Z=S),!(2&j&&(F=v(t,P,R,F,W,Y,q),R>=F)||4&j&&(R=m(t,P,R,F,W,Y,U))>=F)){var $=F-R,J=N-B;if(G){if(t*$*($+J)<p){if(void 0!==(z=l.scanComplete(t,P,e,R,F,W,Y,B,N,X,Z)))return z;continue}}else{if(t*Math.min($,J)<f){if(void 0!==(z=o(t,P,e,H,R,F,W,Y,B,N,X,Z)))return z;continue}if(t*$*J<h){if(void 0!==(z=l.scanBipartite(t,P,e,H,R,F,W,Y,B,N,X,Z)))return z;continue}}var K=d(t,P,R,F,W,Y,U,q);if(R<K)if(t*(K-R)<f){if(void 0!==(z=s(t,P+1,e,R,K,W,Y,B,N,X,Z)))return z}else if(P===t-2){if(void 0!==(z=H?l.sweepBipartite(t,e,B,N,X,Z,R,K,W,Y):l.sweepBipartite(t,e,R,K,W,Y,B,N,X,Z)))return z}else A(O++,P+1,R,K,B,N,H,-1/0,1/0),A(O++,P+1,B,N,R,K,1^H,-1/0,1/0);if(K<F){var Q=c(t,P,B,N,X,Z),tt=X[I*Q+P],et=g(t,P,Q,N,X,Z,tt);if(et<N&&A(O++,P,K,F,et,N,(4|H)+(G?16:0),tt,q),B<Q&&A(O++,P,K,F,B,Q,(2|H)+(G?16:0),U,tt),Q+1===et){if(void 0!==(z=G?T(t,P,e,K,F,W,Y,Q,X,Z[Q]):M(t,P,e,H,K,F,W,Y,Q,X,Z[Q])))return z}else if(Q<et){var rt;if(G){if(rt=y(t,P,K,F,W,Y,tt),K<rt){var nt=g(t,P,K,rt,W,Y,tt);if(P===t-2){if(K<nt&&void 0!==(z=l.sweepComplete(t,e,K,nt,W,Y,Q,et,X,Z)))return z;if(nt<rt&&void 0!==(z=l.sweepBipartite(t,e,nt,rt,W,Y,Q,et,X,Z)))return z}else K<nt&&A(O++,P+1,K,nt,Q,et,16,-1/0,1/0),nt<rt&&(A(O++,P+1,nt,rt,Q,et,0,-1/0,1/0),A(O++,P+1,Q,et,nt,rt,1,-1/0,1/0))}}else rt=H?x(t,P,K,F,W,Y,tt):y(t,P,K,F,W,Y,tt),K<rt&&(P===t-2?z=H?l.sweepBipartite(t,e,Q,et,X,Z,K,rt,W,Y):l.sweepBipartite(t,e,K,rt,W,Y,Q,et,X,Z):(A(O++,P+1,K,rt,Q,et,H,-1/0,1/0),A(O++,P+1,Q,et,K,rt,1^H,-1/0,1/0)))}}}}};var n=t(\"typedarray-pool\"),i=t(\"bit-twiddle\"),a=t(\"./brute\"),o=a.partial,s=a.full,l=t(\"./sweep\"),c=t(\"./median\"),u=t(\"./partition\"),f=128,h=1<<22,p=1<<22,d=u(\"!(lo>=p0)&&!(p1>=hi)\",[\"p0\",\"p1\"]),g=u(\"lo===p0\",[\"p0\"]),v=u(\"lo<p0\",[\"p0\"]),m=u(\"hi<=p0\",[\"p0\"]),y=u(\"lo<=p0&&p0<=hi\",[\"p0\"]),x=u(\"lo<p0&&p0<=hi\",[\"p0\"]),b=6,_=2,w=n.mallocInt32(1024),k=n.mallocDouble(1024);function A(t,e,r,n,i,a,o,s,l){var c=b*t;w[c]=e,w[c+1]=r,w[c+2]=n,w[c+3]=i,w[c+4]=a,w[c+5]=o;var u=_*t;k[u]=s,k[u+1]=l}function M(t,e,r,n,i,a,o,s,l,c,u){var f=2*t,h=l*f,p=c[h+e];t:for(var d=i,g=i*f;d<a;++d,g+=f){var v=o[g+e],m=o[g+e+t];if(!(p<v||m<p)&&(!n||p!==v)){for(var y,x=s[d],b=e+1;b<t;++b){v=o[g+b],m=o[g+b+t];var _=c[h+b],w=c[h+b+t];if(m<_||w<v)continue t}if(void 0!==(y=n?r(u,x):r(x,u)))return y}}}function T(t,e,r,n,i,a,o,s,l,c){var u=2*t,f=s*u,h=l[f+e];t:for(var p=n,d=n*u;p<i;++p,d+=u){var g=o[p];if(g!==c){var v=a[d+e],m=a[d+e+t];if(!(h<v||m<h)){for(var y=e+1;y<t;++y){v=a[d+y],m=a[d+y+t];var x=l[f+y],b=l[f+y+t];if(m<x||b<v)continue t}var _=r(g,c);if(void 0!==_)return _}}}}},{\"./brute\":86,\"./median\":88,\"./partition\":89,\"./sweep\":91,\"bit-twiddle\":81,\"typedarray-pool\":523}],88:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,o,s,l){if(o<=r+1)return r;var c=r,u=o,f=o+r>>>1,h=2*t,p=f,d=s[h*f+e];for(;c<u;){if(u-c<i){a(t,e,c,u,s,l),d=s[h*f+e];break}var g=u-c,v=Math.random()*g+c|0,m=s[h*v+e],y=Math.random()*g+c|0,x=s[h*y+e],b=Math.random()*g+c|0,_=s[h*b+e];m<=x?_>=x?(p=y,d=x):m>=_?(p=v,d=m):(p=b,d=_):x>=_?(p=y,d=x):_>=m?(p=v,d=m):(p=b,d=_);for(var w=h*(u-1),k=h*p,A=0;A<h;++A,++w,++k){var M=s[w];s[w]=s[k],s[k]=M}var T=l[u-1];l[u-1]=l[p],l[p]=T,p=n(t,e,c,u-1,s,l,d);for(var w=h*(u-1),k=h*p,A=0;A<h;++A,++w,++k){var M=s[w];s[w]=s[k],s[k]=M}var T=l[u-1];if(l[u-1]=l[p],l[p]=T,f<p){for(u=p-1;c<u&&s[h*(u-1)+e]===d;)u-=1;u+=1}else{if(!(p<f))break;for(c=p+1;c<u&&s[h*c+e]===d;)c+=1}}return n(t,e,r,f,s,l,s[h*f+e])};var n=t(\"./partition\")(\"lo<p0\",[\"p0\"]),i=8;function a(t,e,r,n,i,a){for(var o=2*t,s=o*(r+1)+e,l=r+1;l<n;++l,s+=o)for(var c=i[s],u=l,f=o*(l-1);u>r&&i[f+e]>c;--u,f-=o){for(var h=f,p=f+o,d=0;d<o;++d,++h,++p){var g=i[h];i[h]=i[p],i[p]=g}var v=a[u];a[u]=a[u-1],a[u-1]=v}}},{\"./partition\":89}],89:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=\"abcdef\".split(\"\").concat(e),i=[];t.indexOf(\"lo\")>=0&&i.push(\"lo=e[k+n]\");t.indexOf(\"hi\")>=0&&i.push(\"hi=e[k+o]\");return r.push(n.replace(\"_\",i.join()).replace(\"$\",t)),Function.apply(void 0,r)};var n=\"for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m\"},{}],90:[function(t,e,r){\"use strict\";e.exports=function(t,e){e<=4*n?i(0,e-1,t):function t(e,r,f){var h=(r-e+1)/6|0,p=e+h,d=r-h,g=e+r>>1,v=g-h,m=g+h,y=p,x=v,b=g,_=m,w=d,k=e+1,A=r-1,M=0;c(y,x,f)&&(M=y,y=x,x=M);c(_,w,f)&&(M=_,_=w,w=M);c(y,b,f)&&(M=y,y=b,b=M);c(x,b,f)&&(M=x,x=b,b=M);c(y,_,f)&&(M=y,y=_,_=M);c(b,_,f)&&(M=b,b=_,_=M);c(x,w,f)&&(M=x,x=w,w=M);c(x,b,f)&&(M=x,x=b,b=M);c(_,w,f)&&(M=_,_=w,w=M);var T=f[2*x];var S=f[2*x+1];var C=f[2*_];var E=f[2*_+1];var L=2*y;var z=2*b;var O=2*w;var I=2*p;var D=2*g;var P=2*d;for(var R=0;R<2;++R){var F=f[L+R],B=f[z+R],N=f[O+R];f[I+R]=F,f[D+R]=B,f[P+R]=N}o(v,e,f);o(m,r,f);for(var j=k;j<=A;++j)if(u(j,T,S,f))j!==k&&a(j,k,f),++k;else if(!u(j,C,E,f))for(;;){if(u(A,C,E,f)){u(A,T,S,f)?(s(j,k,A,f),++k,--A):(a(j,A,f),--A);break}if(--A<j)break}l(e,k-1,T,S,f);l(r,A+1,C,E,f);k-2-e<=n?i(e,k-2,f):t(e,k-2,f);r-(A+2)<=n?i(A+2,r,f):t(A+2,r,f);A-k<=n?i(k,A,f):t(k,A,f)}(0,e-1,t)};var n=32;function i(t,e,r){for(var n=2*(t+1),i=t+1;i<=e;++i){for(var a=r[n++],o=r[n++],s=i,l=n-2;s-- >t;){var c=r[l-2],u=r[l-1];if(c<a)break;if(c===a&&u<o)break;r[l]=c,r[l+1]=u,l-=2}r[l]=a,r[l+1]=o}}function a(t,e,r){e*=2;var n=r[t*=2],i=r[t+1];r[t]=r[e],r[t+1]=r[e+1],r[e]=n,r[e+1]=i}function o(t,e,r){e*=2,r[t*=2]=r[e],r[t+1]=r[e+1]}function s(t,e,r,n){e*=2,r*=2;var i=n[t*=2],a=n[t+1];n[t]=n[e],n[t+1]=n[e+1],n[e]=n[r],n[e+1]=n[r+1],n[r]=i,n[r+1]=a}function l(t,e,r,n,i){e*=2,i[t*=2]=i[e],i[e]=r,i[t+1]=i[e+1],i[e+1]=n}function c(t,e,r){e*=2;var n=r[t*=2],i=r[e];return!(n<i)&&(n!==i||r[t+1]>r[e+1])}function u(t,e,r,n){var i=n[t*=2];return i<e||i===e&&n[t+1]<r}},{}],91:[function(t,e,r){\"use strict\";e.exports={init:function(t){var e=i.nextPow2(t);s.length<e&&(n.free(s),s=n.mallocInt32(e));l.length<e&&(n.free(l),l=n.mallocInt32(e));c.length<e&&(n.free(c),c=n.mallocInt32(e));u.length<e&&(n.free(u),u=n.mallocInt32(e));f.length<e&&(n.free(f),f=n.mallocInt32(e));h.length<e&&(n.free(h),h=n.mallocInt32(e));var r=8*e;p.length<r&&(n.free(p),p=n.mallocDouble(r))},sweepBipartite:function(t,e,r,n,i,f,h,v,m,y){for(var x=0,b=2*t,_=t-1,w=b-1,k=r;k<n;++k){var A=f[k],M=b*k;p[x++]=i[M+_],p[x++]=-(A+1),p[x++]=i[M+w],p[x++]=A}for(var k=h;k<v;++k){var A=y[k]+o,T=b*k;p[x++]=m[T+_],p[x++]=-A,p[x++]=m[T+w],p[x++]=A}var S=x>>>1;a(p,S);for(var C=0,E=0,k=0;k<S;++k){var L=0|p[2*k+1];if(L>=o)d(c,u,E--,L=L-o|0);else if(L>=0)d(s,l,C--,L);else if(L<=-o){L=-L-o|0;for(var z=0;z<C;++z){var O=e(s[z],L);if(void 0!==O)return O}g(c,u,E++,L)}else{L=-L-1|0;for(var z=0;z<E;++z){var O=e(L,c[z]);if(void 0!==O)return O}g(s,l,C++,L)}}},sweepComplete:function(t,e,r,n,i,o,v,m,y,x){for(var b=0,_=2*t,w=t-1,k=_-1,A=r;A<n;++A){var M=o[A]+1<<1,T=_*A;p[b++]=i[T+w],p[b++]=-M,p[b++]=i[T+k],p[b++]=M}for(var A=v;A<m;++A){var M=x[A]+1<<1,S=_*A;p[b++]=y[S+w],p[b++]=1|-M,p[b++]=y[S+k],p[b++]=1|M}var C=b>>>1;a(p,C);for(var E=0,L=0,z=0,A=0;A<C;++A){var O=0|p[2*A+1],I=1&O;if(A<C-1&&O>>1==p[2*A+3]>>1&&(I=2,A+=1),O<0){for(var D=-(O>>1)-1,P=0;P<z;++P){var R=e(f[P],D);if(void 0!==R)return R}if(0!==I)for(var P=0;P<E;++P){var R=e(s[P],D);if(void 0!==R)return R}if(1!==I)for(var P=0;P<L;++P){var R=e(c[P],D);if(void 0!==R)return R}0===I?g(s,l,E++,D):1===I?g(c,u,L++,D):2===I&&g(f,h,z++,D)}else{var D=(O>>1)-1;0===I?d(s,l,E--,D):1===I?d(c,u,L--,D):2===I&&d(f,h,z--,D)}}},scanBipartite:function(t,e,r,n,i,c,u,f,h,v,m,y){var x=0,b=2*t,_=e,w=e+t,k=1,A=1;n?A=o:k=o;for(var M=i;M<c;++M){var T=M+k,S=b*M;p[x++]=u[S+_],p[x++]=-T,p[x++]=u[S+w],p[x++]=T}for(var M=h;M<v;++M){var T=M+A,C=b*M;p[x++]=m[C+_],p[x++]=-T}var E=x>>>1;a(p,E);for(var L=0,M=0;M<E;++M){var z=0|p[2*M+1];if(z<0){var T=-z,O=!1;if(T>=o?(O=!n,T-=o):(O=!!n,T-=1),O)g(s,l,L++,T);else{var I=y[T],D=b*T,P=m[D+e+1],R=m[D+e+1+t];t:for(var F=0;F<L;++F){var B=s[F],N=b*B;if(!(R<u[N+e+1]||u[N+e+1+t]<P)){for(var j=e+2;j<t;++j)if(m[D+j+t]<u[N+j]||u[N+j+t]<m[D+j])continue t;var V,U=f[B];if(void 0!==(V=n?r(I,U):r(U,I)))return V}}}}else d(s,l,L--,z-k)}},scanComplete:function(t,e,r,n,i,l,c,u,f,h,d){for(var g=0,v=2*t,m=e,y=e+t,x=n;x<i;++x){var b=x+o,_=v*x;p[g++]=l[_+m],p[g++]=-b,p[g++]=l[_+y],p[g++]=b}for(var x=u;x<f;++x){var b=x+1,w=v*x;p[g++]=h[w+m],p[g++]=-b}var k=g>>>1;a(p,k);for(var A=0,x=0;x<k;++x){var M=0|p[2*x+1];if(M<0){var b=-M;if(b>=o)s[A++]=b-o;else{var T=d[b-=1],S=v*b,C=h[S+e+1],E=h[S+e+1+t];t:for(var L=0;L<A;++L){var z=s[L],O=c[z];if(O===T)break;var I=v*z;if(!(E<l[I+e+1]||l[I+e+1+t]<C)){for(var D=e+2;D<t;++D)if(h[S+D+t]<l[I+D]||l[I+D+t]<h[S+D])continue t;var P=r(O,T);if(void 0!==P)return P}}}}else{for(var b=M-o,L=A-1;L>=0;--L)if(s[L]===b){for(var D=L+1;D<A;++D)s[D-1]=s[D];break}--A}}}};var n=t(\"typedarray-pool\"),i=t(\"bit-twiddle\"),a=t(\"./sort\"),o=1<<28,s=n.mallocInt32(1024),l=n.mallocInt32(1024),c=n.mallocInt32(1024),u=n.mallocInt32(1024),f=n.mallocInt32(1024),h=n.mallocInt32(1024),p=n.mallocDouble(8192);function d(t,e,r,n){var i=e[n],a=t[r-1];t[i]=a,e[a]=i}function g(t,e,r,n){t[r]=n,e[n]=r}},{\"./sort\":90,\"bit-twiddle\":81,\"typedarray-pool\":523}],92:[function(t,e,r){},{}],93:[function(t,e,r){var n=Object.create||function(t){var e=function(){};return e.prototype=t,new e},i=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return r},a=Function.prototype.bind||function(t){var e=this;return function(){return e.apply(t,arguments)}};function o(){this._events&&Object.prototype.hasOwnProperty.call(this,\"_events\")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}e.exports=o,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._maxListeners=void 0;var s,l=10;try{var c={};Object.defineProperty&&Object.defineProperty(c,\"x\",{value:0}),s=0===c.x}catch(t){s=!1}function u(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function f(t,e,r,i){var a,o,s;if(\"function\"!=typeof r)throw new TypeError('\"listener\" argument must be a function');if((o=t._events)?(o.newListener&&(t.emit(\"newListener\",e,r.listener?r.listener:r),o=t._events),s=o[e]):(o=t._events=n(null),t._eventsCount=0),s){if(\"function\"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),!s.warned&&(a=u(t))&&a>0&&s.length>a){s.warned=!0;var l=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+' \"'+String(e)+'\" listeners added. Use emitter.setMaxListeners() to increase limit.');l.name=\"MaxListenersExceededWarning\",l.emitter=t,l.type=e,l.count=s.length,\"object\"==typeof console&&console.warn&&console.warn(\"%s: %s\",l.name,l.message)}}else s=o[e]=r,++t._eventsCount;return t}function h(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var t=new Array(arguments.length),e=0;e<t.length;++e)t[e]=arguments[e];this.listener.apply(this.target,t)}}function p(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=a.call(h,n);return i.listener=r,n.wrapFn=i,i}function d(t,e,r){var n=t._events;if(!n)return[];var i=n[e];return i?\"function\"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}(i):v(i,i.length):[]}function g(t){var e=this._events;if(e){var r=e[t];if(\"function\"==typeof r)return 1;if(r)return r.length}return 0}function v(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}s?Object.defineProperty(o,\"defaultMaxListeners\",{enumerable:!0,get:function(){return l},set:function(t){if(\"number\"!=typeof t||t<0||t!=t)throw new TypeError('\"defaultMaxListeners\" must be a positive number');l=t}}):o.defaultMaxListeners=l,o.prototype.setMaxListeners=function(t){if(\"number\"!=typeof t||t<0||isNaN(t))throw new TypeError('\"n\" argument must be a positive number');return this._maxListeners=t,this},o.prototype.getMaxListeners=function(){return u(this)},o.prototype.emit=function(t){var e,r,n,i,a,o,s=\"error\"===t;if(o=this._events)s=s&&null==o.error;else if(!s)return!1;if(s){if(arguments.length>1&&(e=arguments[1]),e instanceof Error)throw e;var l=new Error('Unhandled \"error\" event. ('+e+\")\");throw l.context=e,l}if(!(r=o[t]))return!1;var c=\"function\"==typeof r;switch(n=arguments.length){case 1:!function(t,e,r){if(e)t.call(r);else for(var n=t.length,i=v(t,n),a=0;a<n;++a)i[a].call(r)}(r,c,this);break;case 2:!function(t,e,r,n){if(e)t.call(r,n);else for(var i=t.length,a=v(t,i),o=0;o<i;++o)a[o].call(r,n)}(r,c,this,arguments[1]);break;case 3:!function(t,e,r,n,i){if(e)t.call(r,n,i);else for(var a=t.length,o=v(t,a),s=0;s<a;++s)o[s].call(r,n,i)}(r,c,this,arguments[1],arguments[2]);break;case 4:!function(t,e,r,n,i,a){if(e)t.call(r,n,i,a);else for(var o=t.length,s=v(t,o),l=0;l<o;++l)s[l].call(r,n,i,a)}(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),a=1;a<n;a++)i[a-1]=arguments[a];!function(t,e,r,n){if(e)t.apply(r,n);else for(var i=t.length,a=v(t,i),o=0;o<i;++o)a[o].apply(r,n)}(r,c,this,i)}return!0},o.prototype.addListener=function(t,e){return f(this,t,e,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(t,e){return f(this,t,e,!0)},o.prototype.once=function(t,e){if(\"function\"!=typeof e)throw new TypeError('\"listener\" argument must be a function');return this.on(t,p(this,t,e)),this},o.prototype.prependOnceListener=function(t,e){if(\"function\"!=typeof e)throw new TypeError('\"listener\" argument must be a function');return this.prependListener(t,p(this,t,e)),this},o.prototype.removeListener=function(t,e){var r,i,a,o,s;if(\"function\"!=typeof e)throw new TypeError('\"listener\" argument must be a function');if(!(i=this._events))return this;if(!(r=i[t]))return this;if(r===e||r.listener===e)0==--this._eventsCount?this._events=n(null):(delete i[t],i.removeListener&&this.emit(\"removeListener\",t,r.listener||e));else if(\"function\"!=typeof r){for(a=-1,o=r.length-1;o>=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,a=o;break}if(a<0)return this;0===a?r.shift():function(t,e){for(var r=e,n=r+1,i=t.length;n<i;r+=1,n+=1)t[r]=t[n];t.pop()}(r,a),1===r.length&&(i[t]=r[0]),i.removeListener&&this.emit(\"removeListener\",t,s||e)}return this},o.prototype.removeAllListeners=function(t){var e,r,a;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=n(null),this._eventsCount=0):r[t]&&(0==--this._eventsCount?this._events=n(null):delete r[t]),this;if(0===arguments.length){var o,s=i(r);for(a=0;a<s.length;++a)\"removeListener\"!==(o=s[a])&&this.removeAllListeners(o);return this.removeAllListeners(\"removeListener\"),this._events=n(null),this._eventsCount=0,this}if(\"function\"==typeof(e=r[t]))this.removeListener(t,e);else if(e)for(a=e.length-1;a>=0;a--)this.removeListener(t,e[a]);return this},o.prototype.listeners=function(t){return d(this,t,!0)},o.prototype.rawListeners=function(t){return d(this,t,!1)},o.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):g.call(t,e)},o.prototype.listenerCount=g,o.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],94:[function(t,e,r){\"use strict\";var n=t(\"base64-js\"),i=t(\"ieee754\");r.Buffer=s,r.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},r.INSPECT_MAX_BYTES=50;var a=2147483647;function o(t){if(t>a)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=s.prototype,e}function s(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return u(t)}return l(t,e,r)}function l(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!s.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|p(t,e),n=o(r),i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e);if(ArrayBuffer.isView(t))return f(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(j(t,ArrayBuffer)||t&&j(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r);return n.__proto__=s.prototype,n}(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return s.from(n,e,r);var i=function(t){if(s.isBuffer(t)){var e=0|h(t.length),r=o(e);return 0===r.length?r:(t.copy(r,0,0,e),r)}if(void 0!==t.length)return\"number\"!=typeof t.length||V(t.length)?o(0):f(t);if(\"Buffer\"===t.type&&Array.isArray(t.data))return f(t.data)}(t);if(i)return i;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return s.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function c(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function u(t){return c(t),o(t<0?0:0|h(t))}function f(t){for(var e=t.length<0?0:0|h(t.length),r=o(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function h(t){if(t>=a)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a.toString(16)+\" bytes\");return 0|t}function p(t,e){if(s.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||j(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return F(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return B(t).length;default:if(i)return n?-1:F(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function d(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=s.from(e,n)),s.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function v(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;a<s;a++)if(c(t,a)===c(e,-1===u?0:a-u)){if(-1===u&&(u=a),a-u+1===l)return u*o}else-1!==u&&(a-=a-u),u=-1}else for(r+l>s&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;h<l;h++)if(c(t,a+h)!==c(e,h)){f=!1;break}if(f)return a}return-1}function m(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o<n;++o){var s=parseInt(e.substr(2*o,2),16);if(V(s))return o;t[r+o]=s}return o}function y(t,e,r,n){return N(F(e,t.length-r),t,r,n)}function x(t,e,r,n){return N(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function b(t,e,r,n){return x(t,e,r,n)}function _(t,e,r,n){return N(B(e),t,r,n)}function w(t,e,r,n){return N(function(t,e){for(var r,n,i,a=[],o=0;o<t.length&&!((e-=2)<0);++o)r=t.charCodeAt(o),n=r>>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function k(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var a,o,s,l,c=t[i],u=null,f=c>239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=M)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=M));return r}(n)}r.kMaxLength=a,s.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}(),s.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(s.prototype,\"parent\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,\"offset\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(t,e,r){return l(t,e,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(t,e,r){return function(t,e,r){return c(t),t<=0?o(t):void 0!==e?\"string\"==typeof r?o(t).fill(e,r):o(t).fill(e):o(t)}(t,e,r)},s.allocUnsafe=function(t){return u(t)},s.allocUnsafeSlow=function(t){return u(t)},s.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==s.prototype},s.compare=function(t,e){if(j(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),j(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(t)||!s.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,i=0,a=Math.min(r,n);i<a;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},s.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=s.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var a=t[r];if(j(a,Uint8Array)&&(a=s.from(a)),!s.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(n,i),i+=a.length}return n},s.byteLength=p,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)d(this,e,e+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)d(this,e,e+3),d(this,e+1,e+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)d(this,e,e+7),d(this,e+1,e+6),d(this,e+2,e+5),d(this,e+3,e+4);return this},s.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?A(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return C(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return S(this,e,r);case\"base64\":return k(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t=\"\",e=r.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,e).replace(/(.{2})/g,\"$1 \").trim(),this.length>e&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},s.prototype.compare=function(t,e,r,n,i){if(j(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),l=Math.min(a,o),c=this.slice(n,i),u=t.slice(e,r),f=0;f<l;++f)if(c[f]!==u[f]){a=c[f],o=u[f];break}return a<o?-1:o<a?1:0},s.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},s.prototype.indexOf=function(t,e,r){return g(this,t,e,r,!0)},s.prototype.lastIndexOf=function(t,e,r){return g(this,t,e,r,!1)},s.prototype.write=function(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return y(this,t,e,r);case\"ascii\":return x(this,t,e,r);case\"latin1\":case\"binary\":return b(this,t,e,r);case\"base64\":return _(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return w(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},s.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function S(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function C(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",a=e;a<r;++a)i+=R(t[a]);return i}function E(t,e,r){for(var n=t.slice(e,r),i=\"\",a=0;a<n.length;a+=2)i+=String.fromCharCode(n[a]+256*n[a+1]);return i}function L(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function z(t,e,r,n,i,a){if(!s.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function O(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function I(t,e,r,n,a){return e=+e,r>>>=0,a||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,a){return e=+e,r>>>=0,a||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}s.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return n.__proto__=s.prototype,n},s.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||L(t,e,this.length);for(var n=this[t],i=1,a=0;++a<e&&(i*=256);)n+=this[t+a]*i;return n},s.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||L(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},s.prototype.readUInt8=function(t,e){return t>>>=0,e||L(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return t>>>=0,e||L(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return t>>>=0,e||L(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return t>>>=0,e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,e){return t>>>=0,e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||L(t,e,this.length);for(var n=this[t],i=1,a=0;++a<e&&(i*=256);)n+=this[t+a]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*e)),n},s.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||L(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},s.prototype.readInt8=function(t,e){return t>>>=0,e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){t>>>=0,e||L(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(t,e){t>>>=0,e||L(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(t,e){return t>>>=0,e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return t>>>=0,e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return t>>>=0,e||L(t,4,this.length),i.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return t>>>=0,e||L(t,4,this.length),i.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return t>>>=0,e||L(t,8,this.length),i.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return t>>>=0,e||L(t,8,this.length),i.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||z(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a<r&&(i*=256);)this[e+a]=t/i&255;return e+r},s.prototype.writeUIntBE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||z(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},s.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,1,255,0),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},s.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);z(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a<r&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},s.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);z(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},s.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},s.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||z(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeFloatLE=function(t,e,r){return I(this,t,e,!0,r)},s.prototype.writeFloatBE=function(t,e,r){return I(this,t,e,!1,r)},s.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},s.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},s.prototype.copy=function(t,e,r,n){if(!s.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i=n-r;if(this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var a=i-1;a>=0;--a)t[a+e]=this[a+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},s.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!s.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var a;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(a=e;a<r;++a)this[a]=t;else{var o=s.isBuffer(t)?t:s.from(t,n),l=o.length;if(0===l)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(a=0;a<r-e;++a)this[a+e]=o[a%l]}return this};var P=/[^+\\/0-9A-Za-z-_]/g;function R(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function F(t,e){var r;e=e||1/0;for(var n=t.length,i=null,a=[],o=0;o<n;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function B(t){return n.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(P,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function N(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function j(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function V(t){return t!=t}},{\"base64-js\":63,ieee754:398}],95:[function(t,e,r){\"use strict\";var n=t(\"./lib/monotone\"),i=t(\"./lib/triangulation\"),a=t(\"./lib/delaunay\"),o=t(\"./lib/filter\");function s(t){return[Math.min(t[0],t[1]),Math.max(t[0],t[1])]}function l(t,e){return t[0]-e[0]||t[1]-e[1]}function c(t,e,r){return e in t?t[e]:r}e.exports=function(t,e,r){Array.isArray(e)?(r=r||{},e=e||[]):(r=e||{},e=[]);var u=!!c(r,\"delaunay\",!0),f=!!c(r,\"interior\",!0),h=!!c(r,\"exterior\",!0),p=!!c(r,\"infinity\",!1);if(!f&&!h||0===t.length)return[];var d=n(t,e);if(u||f!==h||p){for(var g=i(t.length,function(t){return t.map(s).sort(l)}(e)),v=0;v<d.length;++v){var m=d[v];g.addTriangle(m[0],m[1],m[2])}return u&&a(t,g),h?f?p?o(g,0,p):g.cells():o(g,1,p):o(g,-1)}return d}},{\"./lib/delaunay\":96,\"./lib/filter\":97,\"./lib/monotone\":98,\"./lib/triangulation\":99}],96:[function(t,e,r){\"use strict\";var n=t(\"robust-in-sphere\")[4];t(\"binary-search-bounds\");function i(t,e,r,i,a,o){var s=e.opposite(i,a);if(!(s<0)){if(a<i){var l=i;i=a,a=l,l=o,o=s,s=l}e.isConstraint(i,a)||n(t[i],t[a],t[o],t[s])<0&&r.push(i,a)}}e.exports=function(t,e){for(var r=[],a=t.length,o=e.stars,s=0;s<a;++s)for(var l=o[s],c=1;c<l.length;c+=2){var u=l[c];if(!(u<s)&&!e.isConstraint(s,u)){for(var f=l[c-1],h=-1,p=1;p<l.length;p+=2)if(l[p-1]===u){h=l[p];break}h<0||n(t[s],t[u],t[f],t[h])<0&&r.push(s,u)}}for(;r.length>0;){for(var u=r.pop(),s=r.pop(),f=-1,h=-1,l=o[s],d=1;d<l.length;d+=2){var g=l[d-1],v=l[d];g===u?h=v:v===u&&(f=g)}f<0||h<0||(n(t[s],t[u],t[f],t[h])>=0||(e.flip(s,u),i(t,e,r,f,s,h),i(t,e,r,s,h,f),i(t,e,r,h,u,f),i(t,e,r,u,f,h)))}}},{\"binary-search-bounds\":100,\"robust-in-sphere\":486}],97:[function(t,e,r){\"use strict\";var n,i=t(\"binary-search-bounds\");function a(t,e,r,n,i,a,o){this.cells=t,this.neighbor=e,this.flags=n,this.constraint=r,this.active=i,this.next=a,this.boundary=o}function o(t,e){return t[0]-e[0]||t[1]-e[1]||t[2]-e[2]}e.exports=function(t,e,r){var n=function(t,e){for(var r=t.cells(),n=r.length,i=0;i<n;++i){var s=r[i],l=s[0],c=s[1],u=s[2];c<u?c<l&&(s[0]=c,s[1]=u,s[2]=l):u<l&&(s[0]=u,s[1]=l,s[2]=c)}r.sort(o);for(var f=new Array(n),i=0;i<f.length;++i)f[i]=0;var h=[],p=[],d=new Array(3*n),g=new Array(3*n),v=null;e&&(v=[]);for(var m=new a(r,d,g,f,h,p,v),i=0;i<n;++i)for(var s=r[i],y=0;y<3;++y){var l=s[y],c=s[(y+1)%3],x=d[3*i+y]=m.locate(c,l,t.opposite(c,l)),b=g[3*i+y]=t.isConstraint(l,c);x<0&&(b?p.push(i):(h.push(i),f[i]=1),e&&v.push([c,l,-1]))}return m}(t,r);if(0===e)return r?n.cells.concat(n.boundary):n.cells;var i=1,s=n.active,l=n.next,c=n.flags,u=n.cells,f=n.constraint,h=n.neighbor;for(;s.length>0||l.length>0;){for(;s.length>0;){var p=s.pop();if(c[p]!==-i){c[p]=i;u[p];for(var d=0;d<3;++d){var g=h[3*p+d];g>=0&&0===c[g]&&(f[3*p+d]?l.push(g):(s.push(g),c[g]=i))}}}var v=l;l=s,s=v,l.length=0,i=-i}var m=function(t,e,r){for(var n=0,i=0;i<t.length;++i)e[i]===r&&(t[n++]=t[i]);return t.length=n,t}(u,c,e);if(r)return m.concat(n.boundary);return m},a.prototype.locate=(n=[0,0,0],function(t,e,r){var a=t,s=e,l=r;return e<r?e<t&&(a=e,s=r,l=t):r<t&&(a=r,s=t,l=e),a<0?-1:(n[0]=a,n[1]=s,n[2]=l,i.eq(this.cells,n,o))})},{\"binary-search-bounds\":100}],98:[function(t,e,r){\"use strict\";var n=t(\"binary-search-bounds\"),i=t(\"robust-orientation\")[3],a=0,o=1,s=2;function l(t,e,r,n,i){this.a=t,this.b=e,this.idx=r,this.lowerIds=n,this.upperIds=i}function c(t,e,r,n){this.a=t,this.b=e,this.type=r,this.idx=n}function u(t,e){var r=t.a[0]-e.a[0]||t.a[1]-e.a[1]||t.type-e.type;return r||(t.type!==a&&(r=i(t.a,t.b,e.b))?r:t.idx-e.idx)}function f(t,e){return i(t.a,t.b,e)}function h(t,e,r,a,o){for(var s=n.lt(e,a,f),l=n.gt(e,a,f),c=s;c<l;++c){for(var u=e[c],h=u.lowerIds,p=h.length;p>1&&i(r[h[p-2]],r[h[p-1]],a)>0;)t.push([h[p-1],h[p-2],o]),p-=1;h.length=p,h.push(o);var d=u.upperIds;for(p=d.length;p>1&&i(r[d[p-2]],r[d[p-1]],a)<0;)t.push([d[p-2],d[p-1],o]),p-=1;d.length=p,d.push(o)}}function p(t,e){var r;return(r=t.a[0]<e.a[0]?i(t.a,t.b,e.a):i(e.b,e.a,t.a))?r:(r=e.b[0]<t.b[0]?i(t.a,t.b,e.b):i(e.b,e.a,t.b))||t.idx-e.idx}function d(t,e,r){var i=n.le(t,r,p),a=t[i],o=a.upperIds,s=o[o.length-1];a.upperIds=[s],t.splice(i+1,0,new l(r.a,r.b,r.idx,[s],o))}function g(t,e,r){var i=r.a;r.a=r.b,r.b=i;var a=n.eq(t,r,p),o=t[a];t[a-1].upperIds=o.upperIds,t.splice(a,1)}e.exports=function(t,e){for(var r=t.length,n=e.length,i=[],f=0;f<r;++f)i.push(new c(t[f],null,a,f));for(var f=0;f<n;++f){var p=e[f],v=t[p[0]],m=t[p[1]];v[0]<m[0]?i.push(new c(v,m,s,f),new c(m,v,o,f)):v[0]>m[0]&&i.push(new c(m,v,s,f),new c(v,m,o,f))}i.sort(u);for(var y=i[0].a[0]-(1+Math.abs(i[0].a[0]))*Math.pow(2,-52),x=[new l([y,1],[y,0],-1,[],[],[],[])],b=[],f=0,_=i.length;f<_;++f){var w=i[f],k=w.type;k===a?h(b,x,t,w.a,w.idx):k===s?d(x,t,w):g(x,t,w)}return b}},{\"binary-search-bounds\":100,\"robust-orientation\":488}],99:[function(t,e,r){\"use strict\";var n=t(\"binary-search-bounds\");function i(t,e){this.stars=t,this.edges=e}e.exports=function(t,e){for(var r=new Array(t),n=0;n<t;++n)r[n]=[];return new i(r,e)};var a=i.prototype;function o(t,e,r){for(var n=1,i=t.length;n<i;n+=2)if(t[n-1]===e&&t[n]===r)return t[n-1]=t[i-2],t[n]=t[i-1],void(t.length=i-2)}a.isConstraint=function(){var t=[0,0];function e(t,e){return t[0]-e[0]||t[1]-e[1]}return function(r,i){return t[0]=Math.min(r,i),t[1]=Math.max(r,i),n.eq(this.edges,t,e)>=0}}(),a.removeTriangle=function(t,e,r){var n=this.stars;o(n[t],e,r),o(n[e],r,t),o(n[r],t,e)},a.addTriangle=function(t,e,r){var n=this.stars;n[t].push(e,r),n[e].push(r,t),n[r].push(t,e)},a.opposite=function(t,e){for(var r=this.stars[e],n=1,i=r.length;n<i;n+=2)if(r[n]===t)return r[n-1];return-1},a.flip=function(t,e){var r=this.opposite(t,e),n=this.opposite(e,t);this.removeTriangle(t,e,r),this.removeTriangle(e,t,n),this.addTriangle(t,n,r),this.addTriangle(e,r,n)},a.edges=function(){for(var t=this.stars,e=[],r=0,n=t.length;r<n;++r)for(var i=t[r],a=0,o=i.length;a<o;a+=2)e.push([i[a],i[a+1]]);return e},a.cells=function(){for(var t=this.stars,e=[],r=0,n=t.length;r<n;++r)for(var i=t[r],a=0,o=i.length;a<o;a+=2){var s=i[a],l=i[a+1];r<Math.min(s,l)&&e.push([r,s,l])}return e}},{\"binary-search-bounds\":100}],100:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=[\"function \",t,\"(a,l,h,\",n.join(\",\"),\"){\",i?\"\":\"var i=\",r?\"l-1\":\"h+1\",\";while(l<=h){var m=(l+h)>>>1,x=a[m]\"];return i?e.indexOf(\"c\")<0?a.push(\";if(x===y){return m}else if(x<=y){\"):a.push(\";var p=c(x,y);if(p===0){return m}else if(p<=0){\"):a.push(\";if(\",e,\"){i=m;\"),r?a.push(\"l=m+1}else{h=m-1}\"):a.push(\"h=m-1}else{l=m+1}\"),a.push(\"}\"),i?a.push(\"return -1};\"):a.push(\"return i};\"),a.join(\"\")}function i(t,e,r,i){return new Function([n(\"A\",\"x\"+t+\"y\",e,[\"y\"],i),n(\"P\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],i),\"function dispatchBsearch\",r,\"(a,y,c,l,h){if(typeof(c)==='function'){return P(a,(l===void 0)?0:l|0,(h===void 0)?a.length-1:h|0,y,c)}else{return A(a,(c===void 0)?0:c|0,(l===void 0)?a.length-1:l|0,y)}}return dispatchBsearch\",r].join(\"\"))()}e.exports={ge:i(\">=\",!1,\"GE\"),gt:i(\">\",!1,\"GT\"),lt:i(\"<\",!0,\"LT\"),le:i(\"<=\",!0,\"LE\"),eq:i(\"-\",!0,\"EQ\",!0)}},{}],101:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=1,r=1;r<t.length;++r)for(var n=0;n<r;++n)if(t[r]<t[n])e=-e;else if(t[n]===t[r])return 0;return e}},{}],102:[function(t,e,r){\"use strict\";var n=t(\"dup\"),i=t(\"robust-linear-solve\");function a(t,e){for(var r=0,n=t.length,i=0;i<n;++i)r+=t[i]*e[i];return r}function o(t){var e=t.length;if(0===e)return[];t[0].length;var r=n([t.length+1,t.length+1],1),o=n([t.length+1],1);r[e][e]=0;for(var s=0;s<e;++s){for(var l=0;l<=s;++l)r[l][s]=r[s][l]=2*a(t[s],t[l]);o[s]=a(t[s],t[s])}var c=i(r,o),u=0,f=c[e+1];for(s=0;s<f.length;++s)u+=f[s];var h=new Array(e);for(s=0;s<e;++s){f=c[s];var p=0;for(l=0;l<f.length;++l)p+=f[l];h[s]=p/u}return h}function s(t){if(0===t.length)return[];for(var e=t[0].length,r=n([e]),i=o(t),a=0;a<t.length;++a)for(var s=0;s<e;++s)r[s]+=t[a][s]*i[a];return r}s.barycenetric=o,e.exports=s},{dup:156,\"robust-linear-solve\":487}],103:[function(t,e,r){e.exports=function(t){for(var e=n(t),r=0,i=0;i<t.length;++i)for(var a=t[i],o=0;o<e.length;++o)r+=Math.pow(a[o]-e[o],2);return Math.sqrt(r/t.length)};var n=t(\"circumcenter\")},{circumcenter:102}],104:[function(t,e,r){e.exports=function(t,e,r){return e<r?t<e?e:t>r?r:t:t<r?r:t>e?e:t}},{}],105:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n;if(r){n=e;for(var i=new Array(e.length),a=0;a<e.length;++a){var o=e[a];i[a]=[o[0],o[1],r[a]]}e=i}var s=function(t,e,r){var n=d(t,[],p(t));return m(e,n,r),!!n}(t,e,!!r);for(;y(t,e,!!r);)s=!0;if(r&&s){n.length=0,r.length=0;for(var a=0;a<e.length;++a){var o=e[a];n.push([o[0],o[1]]),r.push(o[2])}}return s};var n=t(\"union-find\"),i=t(\"box-intersect\"),a=t(\"robust-segment-intersect\"),o=t(\"big-rat\"),s=t(\"big-rat/cmp\"),l=t(\"big-rat/to-float\"),c=t(\"rat-vec\"),u=t(\"nextafter\"),f=t(\"./lib/rat-seg-intersect\");function h(t){var e=l(t);return[u(e,-1/0),u(e,1/0)]}function p(t){for(var e=new Array(t.length),r=0;r<t.length;++r){var n=t[r];e[r]=[u(n[0],-1/0),u(n[1],-1/0),u(n[0],1/0),u(n[1],1/0)]}return e}function d(t,e,r){for(var a=e.length,o=new n(a),s=[],l=0;l<e.length;++l){var c=e[l],f=h(c[0]),p=h(c[1]);s.push([u(f[0],-1/0),u(p[0],-1/0),u(f[1],1/0),u(p[1],1/0)])}i(s,function(t,e){o.link(t,e)});var d=!0,g=new Array(a);for(l=0;l<a;++l){(m=o.find(l))!==l&&(d=!1,t[m]=[Math.min(t[l][0],t[m][0]),Math.min(t[l][1],t[m][1])])}if(d)return null;var v=0;for(l=0;l<a;++l){var m;(m=o.find(l))===l?(g[l]=v,t[v++]=t[l]):g[l]=-1}t.length=v;for(l=0;l<a;++l)g[l]<0&&(g[l]=g[o.find(l)]);return g}function g(t,e){return t[0]-e[0]||t[1]-e[1]}function v(t,e){var r=t[0]-e[0]||t[1]-e[1];return r||(t[2]<e[2]?-1:t[2]>e[2]?1:0)}function m(t,e,r){if(0!==t.length){if(e)for(var n=0;n<t.length;++n){var i=e[(o=t[n])[0]],a=e[o[1]];o[0]=Math.min(i,a),o[1]=Math.max(i,a)}else for(n=0;n<t.length;++n){var o;i=(o=t[n])[0],a=o[1];o[0]=Math.min(i,a),o[1]=Math.max(i,a)}r?t.sort(v):t.sort(g);var s=1;for(n=1;n<t.length;++n){var l=t[n-1],c=t[n];(c[0]!==l[0]||c[1]!==l[1]||r&&c[2]!==l[2])&&(t[s++]=c)}t.length=s}}function y(t,e,r){var n=function(t,e){for(var r=new Array(e.length),n=0;n<e.length;++n){var i=e[n],a=t[i[0]],o=t[i[1]];r[n]=[u(Math.min(a[0],o[0]),-1/0),u(Math.min(a[1],o[1]),-1/0),u(Math.max(a[0],o[0]),1/0),u(Math.max(a[1],o[1]),1/0)]}return r}(t,e),h=function(t,e,r){var n=[];return i(r,function(r,i){var o=e[r],s=e[i];if(o[0]!==s[0]&&o[0]!==s[1]&&o[1]!==s[0]&&o[1]!==s[1]){var l=t[o[0]],c=t[o[1]],u=t[s[0]],f=t[s[1]];a(l,c,u,f)&&n.push([r,i])}}),n}(t,e,n),g=p(t),v=function(t,e,r,n){var o=[];return i(r,n,function(r,n){var i=e[r];if(i[0]!==n&&i[1]!==n){var s=t[n],l=t[i[0]],c=t[i[1]];a(l,c,s,s)&&o.push([r,n])}}),o}(t,e,n,g),y=d(t,function(t,e,r,n,i){var a,u,h=t.map(function(t){return[o(t[0]),o(t[1])]});for(a=0;a<r.length;++a){var p=r[a];u=p[0];var d=p[1],g=e[u],v=e[d],m=f(c(t[g[0]]),c(t[g[1]]),c(t[v[0]]),c(t[v[1]]));if(m){var y=t.length;t.push([l(m[0]),l(m[1])]),h.push(m),n.push([u,y],[d,y])}}for(n.sort(function(t,e){if(t[0]!==e[0])return t[0]-e[0];var r=h[t[1]],n=h[e[1]];return s(r[0],n[0])||s(r[1],n[1])}),a=n.length-1;a>=0;--a){var x=e[u=(S=n[a])[0]],b=x[0],_=x[1],w=t[b],k=t[_];if((w[0]-k[0]||w[1]-k[1])<0){var A=b;b=_,_=A}x[0]=b;var M,T=x[1]=S[1];for(i&&(M=x[2]);a>0&&n[a-1][0]===u;){var S,C=(S=n[--a])[1];i?e.push([T,C,M]):e.push([T,C]),T=C}i?e.push([T,_,M]):e.push([T,_])}return h}(t,e,h,v,r));return m(e,y,r),!!y||(h.length>0||v.length>0)}},{\"./lib/rat-seg-intersect\":106,\"big-rat\":67,\"big-rat/cmp\":65,\"big-rat/to-float\":79,\"box-intersect\":85,nextafter:437,\"rat-vec\":472,\"robust-segment-intersect\":491,\"union-find\":524}],106:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var a=s(e,t),f=s(n,r),h=u(a,f);if(0===o(h))return null;var p=s(t,r),d=u(f,p),g=i(d,h),v=c(a,g);return l(t,v)};var n=t(\"big-rat/mul\"),i=t(\"big-rat/div\"),a=t(\"big-rat/sub\"),o=t(\"big-rat/sign\"),s=t(\"rat-vec/sub\"),l=t(\"rat-vec/add\"),c=t(\"rat-vec/muls\");function u(t,e){return a(n(t[0],e[1]),n(t[1],e[0]))}},{\"big-rat/div\":66,\"big-rat/mul\":76,\"big-rat/sign\":77,\"big-rat/sub\":78,\"rat-vec/add\":471,\"rat-vec/muls\":473,\"rat-vec/sub\":474}],107:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:104}],108:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],109:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:104,\"color-rgba\":111,dtype:155}],110:[function(t,e,r){(function(r){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=t.slice(1),f=u.length,h=f<=4;c=1,h?(l=[parseInt(u[0]+u[0],16),parseInt(u[1]+u[1],16),parseInt(u[2]+u[2],16)],4===f&&(c=parseInt(u[3]+u[3],16)/255)):(l=[parseInt(u[0]+u[1],16),parseInt(u[2]+u[3],16),parseInt(u[4]+u[5],16)],8===f&&(c=parseInt(u[6]+u[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var p=e[1],u=p.replace(/a$/,\"\");s=u;var f=\"cmyk\"===u?4:\"gray\"===u?1:3;l=e[2].trim().split(/\\s*,\\s*/).map(function(t,e){if(/%$/.test(t))return e===f?parseFloat(t)/100:\"rgb\"===u?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===u[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)}),p===u&&l.push(1),c=void 0===l[f]?1:l[f],l=l.slice(0,f)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map(function(t){return parseFloat(t)}),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":108,defined:150,\"is-plain-obj\":408}],111:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:104,\"color-parse\":110,\"color-space/hsl\":112}],112:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":113}],113:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],114:[function(t,e,r){e.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],cool:[{index:0,rgb:[0,255,255]},{index:1,rgb:[255,0,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],\"rainbow-soft\":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],\"freesurface-blue\":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],\"freesurface-red\":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],\"velocity-blue\":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],\"velocity-green\":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},{}],115:[function(t,e,r){\"use strict\";var n=t(\"./colorScale\"),i=t(\"lerp\");function a(t){return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function o(t){for(var e,r=\"#\",n=0;n<3;++n)r+=(\"00\"+(e=(e=t[n]).toString(16))).substr(e.length);return r}function s(t){return\"rgba(\"+t.join(\",\")+\")\"}e.exports=function(t){var e,r,l,c,u,f,h,p,d,g;t||(t={});p=(t.nshades||72)-1,h=t.format||\"hex\",(f=t.colormap)||(f=\"jet\");if(\"string\"==typeof f){if(f=f.toLowerCase(),!n[f])throw Error(f+\" not a supported colorscale\");u=n[f]}else{if(!Array.isArray(f))throw Error(\"unsupported colormap option\",f);u=f.slice()}if(u.length>p)throw new Error(f+\" map requires nshades to be at least size \"+u.length);d=Array.isArray(t.alpha)?2!==t.alpha.length?[1,1]:t.alpha.slice():\"number\"==typeof t.alpha?[t.alpha,t.alpha]:[1,1];e=u.map(function(t){return Math.round(t.index*p)}),d[0]=Math.min(Math.max(d[0],0),1),d[1]=Math.min(Math.max(d[1],0),1);var v=u.map(function(t,e){var r=u[e].index,n=u[e].rgb.slice();return 4===n.length&&n[3]>=0&&n[3]<=1?n:(n[3]=d[0]+(d[1]-d[0])*r,n)}),m=[];for(g=0;g<e.length-1;++g){c=e[g+1]-e[g],r=v[g],l=v[g+1];for(var y=0;y<c;y++){var x=y/c;m.push([Math.round(i(r[0],l[0],x)),Math.round(i(r[1],l[1],x)),Math.round(i(r[2],l[2],x)),i(r[3],l[3],x)])}}m.push(u[u.length-1].rgb.concat(d[1])),\"hex\"===h?m=m.map(o):\"rgbaString\"===h?m=m.map(s):\"float\"===h&&(m=m.map(a));return m}},{\"./colorScale\":114,lerp:411}],116:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,a){var o=n(e,r,a);if(0===o){var s=i(n(t,e,r)),c=i(n(t,e,a));if(s===c){if(0===s){var u=l(t,e,r),f=l(t,e,a);return u===f?0:u?1:-1}return 0}return 0===c?s>0?-1:l(t,e,a)?-1:1:0===s?c>0?1:l(t,e,r)?1:-1:i(c-s)}var h=n(t,e,r);if(h>0)return o>0&&n(t,e,a)>0?1:-1;if(h<0)return o>0||n(t,e,a)>0?1:-1;var p=n(t,e,a);return p>0?1:l(t,e,r)?1:-1};var n=t(\"robust-orientation\"),i=t(\"signum\"),a=t(\"two-sum\"),o=t(\"robust-product\"),s=t(\"robust-sum\");function l(t,e,r){var n=a(t[0],-e[0]),i=a(t[1],-e[1]),l=a(r[0],-e[0]),c=a(r[1],-e[1]),u=s(o(n,l),o(i,c));return u[u.length-1]>=0}},{\"robust-orientation\":488,\"robust-product\":489,\"robust-sum\":493,signum:494,\"two-sum\":522}],117:[function(t,e,r){e.exports=function(t,e){var r=t.length,a=t.length-e.length;if(a)return a;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:return t[0]+t[1]-e[0]-e[1]||n(t[0],t[1])-n(e[0],e[1]);case 3:var o=t[0]+t[1],s=e[0]+e[1];if(a=o+t[2]-(s+e[2]))return a;var l=n(t[0],t[1]),c=n(e[0],e[1]);return n(l,t[2])-n(c,e[2])||n(l+t[2],o)-n(c+e[2],s);case 4:var u=t[0],f=t[1],h=t[2],p=t[3],d=e[0],g=e[1],v=e[2],m=e[3];return u+f+h+p-(d+g+v+m)||n(u,f,h,p)-n(d,g,v,m,d)||n(u+f,u+h,u+p,f+h,f+p,h+p)-n(d+g,d+v,d+m,g+v,g+m,v+m)||n(u+f+h,u+f+p,u+h+p,f+h+p)-n(d+g+v,d+g+m,d+v+m,g+v+m);default:for(var y=t.slice().sort(i),x=e.slice().sort(i),b=0;b<r;++b)if(a=y[b]-x[b])return a;return 0}};var n=Math.min;function i(t,e){return t-e}},{}],118:[function(t,e,r){\"use strict\";var n=t(\"compare-cell\"),i=t(\"cell-orientation\");e.exports=function(t,e){return n(t,e)||i(t)-i(e)}},{\"cell-orientation\":101,\"compare-cell\":117}],119:[function(t,e,r){\"use strict\";var n=t(\"./lib/ch1d\"),i=t(\"./lib/ch2d\"),a=t(\"./lib/chnd\");e.exports=function(t){var e=t.length;if(0===e)return[];if(1===e)return[[0]];var r=t[0].length;if(0===r)return[];if(1===r)return n(t);if(2===r)return i(t);return a(t,r)}},{\"./lib/ch1d\":120,\"./lib/ch2d\":121,\"./lib/chnd\":122}],120:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=0,r=0,n=1;n<t.length;++n)t[n][0]<t[e][0]&&(e=n),t[n][0]>t[r][0]&&(r=n);return e<r?[[e],[r]]:e>r?[[r],[e]]:[[e]]}},{}],121:[function(t,e,r){\"use strict\";e.exports=function(t){var e=n(t),r=e.length;if(r<=2)return[];for(var i=new Array(r),a=e[r-1],o=0;o<r;++o){var s=e[o];i[o]=[a,s],a=s}return i};var n=t(\"monotone-convex-hull-2d\")},{\"monotone-convex-hull-2d\":420}],122:[function(t,e,r){\"use strict\";e.exports=function(t,e){try{return n(t,!0)}catch(s){var r=i(t);if(r.length<=e)return[];var a=function(t,e){for(var r=t.length,n=new Array(r),i=0;i<e.length;++i)n[i]=t[e[i]];for(var a=e.length,i=0;i<r;++i)e.indexOf(i)<0&&(n[a++]=t[i]);return n}(t,r),o=n(a,!0);return function(t,e){for(var r=t.length,n=e.length,i=0;i<r;++i)for(var a=t[i],o=0;o<a.length;++o){var s=a[o];if(s<n)a[o]=e[s];else{s-=n;for(var l=0;l<n;++l)s>=e[l]&&(s+=1);a[o]=s}}return t}(o,r)}};var n=t(\"incremental-convex-hull\"),i=t(\"affine-hull\")},{\"affine-hull\":51,\"incremental-convex-hull\":399}],123:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CAF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAM:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOM:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],124:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],125:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],126:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],127:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],128:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":130,\"./stringify\":131}],129:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":124}],130:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach(function(t){r[t]=e}),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":129,\"css-font-stretch-keywords\":125,\"css-font-style-keywords\":126,\"css-font-weight-keywords\":127,\"css-global-keywords\":132,\"css-system-font-keywords\":133,\"string-split-by\":507,unquote:526}],131:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;r<t.length;r++)e[t[r]]=1;return e}e.exports=function(t){if((t=n(t,{style:\"style fontstyle fontStyle font-style slope distinction\",variant:\"variant font-variant fontVariant fontvariant var capitalization\",weight:\"weight w font-weight fontWeight fontweight\",stretch:\"stretch font-stretch fontStretch fontstretch width\",size:\"size s font-size fontSize fontsize height em emSize\",lineHeight:\"lh line-height lineHeight lineheight leading\",family:\"font family fontFamily font-family fontfamily type typeface face\",system:\"system reserved default global\"})).system)return t.system&&d(t.system,o),t.system;if(d(t.style,l),d(t.variant,u),d(t.weight,s),d(t.stretch,c),null==t.size&&(t.size=h),\"number\"==typeof t.size&&(t.size+=\"px\"),!i)throw Error(\"Bad size value `\"+t.size+\"`\");t.family||(t.family=p),Array.isArray(t.family)&&(t.family.length||(t.family=[p]),t.family=t.family.map(function(t){return f[t]?t:'\"'+t+'\"'}).join(\", \"));var e=[];return e.push(t.style),t.variant!==t.style&&e.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&e.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&e.push(t.stretch),e.push(t.size+(null==t.lineHeight||\"normal\"===t.lineHeight||t.lineHeight+\"\"==\"1\"?\"\":\"/\"+t.lineHeight)),e.push(t.family),e.filter(Boolean).join(\" \")}},{\"./lib/util\":129,\"css-font-stretch-keywords\":125,\"css-font-style-keywords\":126,\"css-font-weight-keywords\":127,\"css-global-keywords\":132,\"css-system-font-keywords\":133,\"pick-by-alias\":451}],132:[function(t,e,r){e.exports=[\"inherit\",\"initial\",\"unset\"]},{}],133:[function(t,e,r){e.exports=[\"caption\",\"icon\",\"menu\",\"message-box\",\"small-caption\",\"status-bar\"]},{}],134:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i,a){var o=i-1,s=i*i,l=o*o,c=(1+2*i)*l,u=i*l,f=s*(3-2*i),h=s*o;if(t.length){a||(a=new Array(t.length));for(var p=t.length-1;p>=0;--p)a[p]=c*t[p]+u*e[p]+f*r[p]+h*n[p];return a}return c*t+u*e+f*r+h*n},e.exports.derivative=function(t,e,r,n,i,a){var o=6*i*i-6*i,s=3*i*i-4*i+1,l=-6*i*i+6*i,c=3*i*i-2*i;if(t.length){a||(a=new Array(t.length));for(var u=t.length-1;u>=0;--u)a[u]=o*t[u]+s*e[u]+l*r[u]+c*n[u];return a}return o*t+s*e+l*r[u]+c*n}},{}],135:[function(t,e,r){\"use strict\";var n=t(\"./lib/thunk.js\");function i(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName=\"\",this.pre=null,this.body=null,this.post=null,this.debug=!1}e.exports=function(t){var e=new i;e.pre=t.pre,e.body=t.body,e.post=t.post;var r=t.args.slice(0);e.argTypes=r;for(var a=0;a<r.length;++a){var o=r[a];if(\"array\"===o||\"object\"==typeof o&&o.blockIndices){if(e.argTypes[a]=\"array\",e.arrayArgs.push(a),e.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),e.shimArgs.push(\"array\"+a),a<e.pre.args.length&&e.pre.args[a].count>0)throw new Error(\"cwise: pre() block may not reference array args\");if(a<e.post.args.length&&e.post.args[a].count>0)throw new Error(\"cwise: post() block may not reference array args\")}else if(\"scalar\"===o)e.scalarArgs.push(a),e.shimArgs.push(\"scalar\"+a);else if(\"index\"===o){if(e.indexArgs.push(a),a<e.pre.args.length&&e.pre.args[a].count>0)throw new Error(\"cwise: pre() block may not reference array index\");if(a<e.body.args.length&&e.body.args[a].lvalue)throw new Error(\"cwise: body() block may not write to array index\");if(a<e.post.args.length&&e.post.args[a].count>0)throw new Error(\"cwise: post() block may not reference array index\")}else if(\"shape\"===o){if(e.shapeArgs.push(a),a<e.pre.args.length&&e.pre.args[a].lvalue)throw new Error(\"cwise: pre() block may not write to array shape\");if(a<e.body.args.length&&e.body.args[a].lvalue)throw new Error(\"cwise: body() block may not write to array shape\");if(a<e.post.args.length&&e.post.args[a].lvalue)throw new Error(\"cwise: post() block may not write to array shape\")}else{if(\"object\"!=typeof o||!o.offset)throw new Error(\"cwise: Unknown argument type \"+r[a]);e.argTypes[a]=\"offset\",e.offsetArgs.push({array:o.array,offset:o.offset}),e.offsetArgIndex.push(a)}}if(e.arrayArgs.length<=0)throw new Error(\"cwise: No array arguments specified\");if(e.pre.args.length>r.length)throw new Error(\"cwise: Too many arguments in pre() block\");if(e.body.args.length>r.length)throw new Error(\"cwise: Too many arguments in body() block\");if(e.post.args.length>r.length)throw new Error(\"cwise: Too many arguments in post() block\");return e.debug=!!t.printCode||!!t.debug,e.funcName=t.funcName||\"cwise\",e.blockSize=t.blockSize||64,n(e)}},{\"./lib/thunk.js\":137}],136:[function(t,e,r){\"use strict\";var n=t(\"uniq\");function i(t,e,r){var n,i,a=t.length,o=e.arrayArgs.length,s=e.indexArgs.length>0,l=[],c=[],u=0,f=0;for(n=0;n<a;++n)c.push([\"i\",n,\"=0\"].join(\"\"));for(i=0;i<o;++i)for(n=0;n<a;++n)f=u,u=t[n],0===n?c.push([\"d\",i,\"s\",n,\"=t\",i,\"p\",u].join(\"\")):c.push([\"d\",i,\"s\",n,\"=(t\",i,\"p\",u,\"-s\",f,\"*t\",i,\"p\",f,\")\"].join(\"\"));for(c.length>0&&l.push(\"var \"+c.join(\",\")),n=a-1;n>=0;--n)u=t[n],l.push([\"for(i\",n,\"=0;i\",n,\"<s\",u,\";++i\",n,\"){\"].join(\"\"));for(l.push(r),n=0;n<a;++n){for(f=u,u=t[n],i=0;i<o;++i)l.push([\"p\",i,\"+=d\",i,\"s\",n].join(\"\"));s&&(n>0&&l.push([\"index[\",f,\"]-=s\",f].join(\"\")),l.push([\"++index[\",u,\"]\"].join(\"\"))),l.push(\"}\")}return l.join(\"\\n\")}function a(t,e,r){for(var n=t.body,i=[],a=[],o=0;o<t.args.length;++o){var s=t.args[o];if(!(s.count<=0)){var l=new RegExp(s.name,\"g\"),c=\"\",u=e.arrayArgs.indexOf(o);switch(e.argTypes[o]){case\"offset\":var f=e.offsetArgIndex.indexOf(o);u=e.offsetArgs[f].array,c=\"+q\"+f;case\"array\":c=\"p\"+u+c;var h=\"l\"+o,p=\"a\"+u;if(0===e.arrayBlockIndices[u])1===s.count?\"generic\"===r[u]?s.lvalue?(i.push([\"var \",h,\"=\",p,\".get(\",c,\")\"].join(\"\")),n=n.replace(l,h),a.push([p,\".set(\",c,\",\",h,\")\"].join(\"\"))):n=n.replace(l,[p,\".get(\",c,\")\"].join(\"\")):n=n.replace(l,[p,\"[\",c,\"]\"].join(\"\")):\"generic\"===r[u]?(i.push([\"var \",h,\"=\",p,\".get(\",c,\")\"].join(\"\")),n=n.replace(l,h),s.lvalue&&a.push([p,\".set(\",c,\",\",h,\")\"].join(\"\"))):(i.push([\"var \",h,\"=\",p,\"[\",c,\"]\"].join(\"\")),n=n.replace(l,h),s.lvalue&&a.push([p,\"[\",c,\"]=\",h].join(\"\")));else{for(var d=[s.name],g=[c],v=0;v<Math.abs(e.arrayBlockIndices[u]);v++)d.push(\"\\\\s*\\\\[([^\\\\]]+)\\\\]\"),g.push(\"$\"+(v+1)+\"*t\"+u+\"b\"+v);if(l=new RegExp(d.join(\"\"),\"g\"),c=g.join(\"+\"),\"generic\"===r[u])throw new Error(\"cwise: Generic arrays not supported in combination with blocks!\");n=n.replace(l,[p,\"[\",c,\"]\"].join(\"\"))}break;case\"scalar\":n=n.replace(l,\"Y\"+e.scalarArgs.indexOf(o));break;case\"index\":n=n.replace(l,\"index\");break;case\"shape\":n=n.replace(l,\"shape\")}}}return[i.join(\"\\n\"),n,a.join(\"\\n\")].join(\"\\n\").trim()}e.exports=function(t,e){for(var r=e[1].length-Math.abs(t.arrayBlockIndices[0])|0,o=new Array(t.arrayArgs.length),s=new Array(t.arrayArgs.length),l=0;l<t.arrayArgs.length;++l)s[l]=e[2*l],o[l]=e[2*l+1];var c=[],u=[],f=[],h=[],p=[];for(l=0;l<t.arrayArgs.length;++l){t.arrayBlockIndices[l]<0?(f.push(0),h.push(r),c.push(r),u.push(r+t.arrayBlockIndices[l])):(f.push(t.arrayBlockIndices[l]),h.push(t.arrayBlockIndices[l]+r),c.push(0),u.push(t.arrayBlockIndices[l]));for(var d=[],g=0;g<o[l].length;g++)f[l]<=o[l][g]&&o[l][g]<h[l]&&d.push(o[l][g]-f[l]);p.push(d)}var v=[\"SS\"],m=[\"'use strict'\"],y=[];for(g=0;g<r;++g)y.push([\"s\",g,\"=SS[\",g,\"]\"].join(\"\"));for(l=0;l<t.arrayArgs.length;++l){for(v.push(\"a\"+l),v.push(\"t\"+l),v.push(\"p\"+l),g=0;g<r;++g)y.push([\"t\",l,\"p\",g,\"=t\",l,\"[\",f[l]+g,\"]\"].join(\"\"));for(g=0;g<Math.abs(t.arrayBlockIndices[l]);++g)y.push([\"t\",l,\"b\",g,\"=t\",l,\"[\",c[l]+g,\"]\"].join(\"\"))}for(l=0;l<t.scalarArgs.length;++l)v.push(\"Y\"+l);if(t.shapeArgs.length>0&&y.push(\"shape=SS.slice(0)\"),t.indexArgs.length>0){var x=new Array(r);for(l=0;l<r;++l)x[l]=\"0\";y.push([\"index=[\",x.join(\",\"),\"]\"].join(\"\"))}for(l=0;l<t.offsetArgs.length;++l){var b=t.offsetArgs[l],_=[];for(g=0;g<b.offset.length;++g)0!==b.offset[g]&&(1===b.offset[g]?_.push([\"t\",b.array,\"p\",g].join(\"\")):_.push([b.offset[g],\"*t\",b.array,\"p\",g].join(\"\")));0===_.length?y.push(\"q\"+l+\"=0\"):y.push([\"q\",l,\"=\",_.join(\"+\")].join(\"\"))}var w=n([].concat(t.pre.thisVars).concat(t.body.thisVars).concat(t.post.thisVars));for((y=y.concat(w)).length>0&&m.push(\"var \"+y.join(\",\")),l=0;l<t.arrayArgs.length;++l)m.push(\"p\"+l+\"|=0\");t.pre.body.length>3&&m.push(a(t.pre,t,s));var k=a(t.body,t,s),A=function(t){for(var e=0,r=t[0].length;e<r;){for(var n=1;n<t.length;++n)if(t[n][e]!==t[0][e])return e;++e}return e}(p);A<r?m.push(function(t,e,r,n){for(var a=e.length,o=r.arrayArgs.length,s=r.blockSize,l=r.indexArgs.length>0,c=[],u=0;u<o;++u)c.push([\"var offset\",u,\"=p\",u].join(\"\"));for(u=t;u<a;++u)c.push([\"for(var j\"+u+\"=SS[\",e[u],\"]|0;j\",u,\">0;){\"].join(\"\")),c.push([\"if(j\",u,\"<\",s,\"){\"].join(\"\")),c.push([\"s\",e[u],\"=j\",u].join(\"\")),c.push([\"j\",u,\"=0\"].join(\"\")),c.push([\"}else{s\",e[u],\"=\",s].join(\"\")),c.push([\"j\",u,\"-=\",s,\"}\"].join(\"\")),l&&c.push([\"index[\",e[u],\"]=j\",u].join(\"\"));for(u=0;u<o;++u){for(var f=[\"offset\"+u],h=t;h<a;++h)f.push([\"j\",h,\"*t\",u,\"p\",e[h]].join(\"\"));c.push([\"p\",u,\"=(\",f.join(\"+\"),\")\"].join(\"\"))}for(c.push(i(e,r,n)),u=t;u<a;++u)c.push(\"}\");return c.join(\"\\n\")}(A,p[0],t,k)):m.push(i(p[0],t,k)),t.post.body.length>3&&m.push(a(t.post,t,s)),t.debug&&console.log(\"-----Generated cwise routine for \",e,\":\\n\"+m.join(\"\\n\")+\"\\n----------\");var M=[t.funcName||\"unnamed\",\"_cwise_loop_\",o[0].join(\"s\"),\"m\",A,function(t){for(var e=new Array(t.length),r=!0,n=0;n<t.length;++n){var i=t[n],a=i.match(/\\d+/);a=a?a[0]:\"\",0===i.charAt(0)?e[n]=\"u\"+i.charAt(1)+a:e[n]=i.charAt(0)+a,n>0&&(r=r&&e[n]===e[n-1])}return r?e[0]:e.join(\"\")}(s)].join(\"\");return new Function([\"function \",M,\"(\",v.join(\",\"),\"){\",m.join(\"\\n\"),\"} return \",M].join(\"\"))()}},{uniq:525}],137:[function(t,e,r){\"use strict\";var n=t(\"./compile.js\");e.exports=function(t){var e=[\"'use strict'\",\"var CACHED={}\"],r=[],i=t.funcName+\"_cwise_thunk\";e.push([\"return function \",i,\"(\",t.shimArgs.join(\",\"),\"){\"].join(\"\"));for(var a=[],o=[],s=[[\"array\",t.arrayArgs[0],\".shape.slice(\",Math.max(0,t.arrayBlockIndices[0]),t.arrayBlockIndices[0]<0?\",\"+t.arrayBlockIndices[0]+\")\":\")\"].join(\"\")],l=[],c=[],u=0;u<t.arrayArgs.length;++u){var f=t.arrayArgs[u];r.push([\"t\",f,\"=array\",f,\".dtype,\",\"r\",f,\"=array\",f,\".order\"].join(\"\")),a.push(\"t\"+f),a.push(\"r\"+f),o.push(\"t\"+f),o.push(\"r\"+f+\".join()\"),s.push(\"array\"+f+\".data\"),s.push(\"array\"+f+\".stride\"),s.push(\"array\"+f+\".offset|0\"),u>0&&(l.push(\"array\"+t.arrayArgs[0]+\".shape.length===array\"+f+\".shape.length+\"+(Math.abs(t.arrayBlockIndices[0])-Math.abs(t.arrayBlockIndices[u]))),c.push(\"array\"+t.arrayArgs[0]+\".shape[shapeIndex+\"+Math.max(0,t.arrayBlockIndices[0])+\"]===array\"+f+\".shape[shapeIndex+\"+Math.max(0,t.arrayBlockIndices[u])+\"]\"))}for(t.arrayArgs.length>1&&(e.push(\"if (!(\"+l.join(\" && \")+\")) throw new Error('cwise: Arrays do not all have the same dimensionality!')\"),e.push(\"for(var shapeIndex=array\"+t.arrayArgs[0]+\".shape.length-\"+Math.abs(t.arrayBlockIndices[0])+\"; shapeIndex--\\x3e0;) {\"),e.push(\"if (!(\"+c.join(\" && \")+\")) throw new Error('cwise: Arrays do not all have the same shape!')\"),e.push(\"}\")),u=0;u<t.scalarArgs.length;++u)s.push(\"scalar\"+t.scalarArgs[u]);return r.push([\"type=[\",o.join(\",\"),\"].join()\"].join(\"\")),r.push(\"proc=CACHED[type]\"),e.push(\"var \"+r.join(\",\")),e.push([\"if(!proc){\",\"CACHED[type]=proc=compile([\",a.join(\",\"),\"])}\",\"return proc(\",s.join(\",\"),\")}\"].join(\"\")),t.debug&&console.log(\"-----Generated thunk:\\n\"+e.join(\"\\n\")+\"\\n----------\"),new Function(\"compile\",e.join(\"\\n\"))(n.bind(void 0,t))}},{\"./compile.js\":136}],138:[function(t,e,r){e.exports=t(\"cwise-compiler\")},{\"cwise-compiler\":135}],139:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/copy\"),a=t(\"es5-ext/object/normalize-options\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/map\"),l=t(\"es5-ext/object/valid-callable\"),c=t(\"es5-ext/object/valid-value\"),u=Function.prototype.bind,f=Object.defineProperty,h=Object.prototype.hasOwnProperty;n=function(t,e,r){var n,a=c(e)&&l(e.value);return delete(n=i(e)).writable,delete n.value,n.get=function(){return!r.overwriteDefinition&&h.call(this,t)?a:(e.value=u.call(a,r.resolveContext?r.resolveContext(this):this),f(this,t,e),this[t])},n},e.exports=function(t){var e=a(arguments[1]);return null!=e.resolveContext&&o(e.resolveContext),s(t,function(t,r){return n(r,t,e)})}},{\"es5-ext/object/copy\":175,\"es5-ext/object/map\":184,\"es5-ext/object/normalize-options\":185,\"es5-ext/object/valid-callable\":189,\"es5-ext/object/valid-value\":191}],140:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/object/assign\"),i=t(\"es5-ext/object/normalize-options\"),a=t(\"es5-ext/object/is-callable\"),o=t(\"es5-ext/string/#/contains\");(e.exports=function(t,e){var r,a,s,l,c;return arguments.length<2||\"string\"!=typeof t?(l=e,e=t,t=null):l=arguments[2],null==t?(r=s=!0,a=!1):(r=o.call(t,\"c\"),a=o.call(t,\"e\"),s=o.call(t,\"w\")),c={value:e,configurable:r,enumerable:a,writable:s},l?n(i(l),c):c}).gs=function(t,e,r){var s,l,c,u;return\"string\"!=typeof t?(c=r,r=e,e=t,t=null):c=arguments[3],null==e?e=void 0:a(e)?null==r?r=void 0:a(r)||(c=r,r=void 0):(c=e,e=r=void 0),null==t?(s=!0,l=!1):(s=o.call(t,\"c\"),l=o.call(t,\"e\")),u={get:e,set:r,configurable:s,enumerable:l},c?n(i(c),u):u}},{\"es5-ext/object/assign\":172,\"es5-ext/object/is-callable\":178,\"es5-ext/object/normalize-options\":185,\"es5-ext/string/#/contains\":192}],141:[function(t,e,r){var n;n=this,function(t){\"use strict\";function e(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n<i;){var a=n+i>>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n<i;){var a=n+i>>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o<i;)isNaN(r=s(t[o]))||(c+=(n=r-l)*(r-(l+=n/++a)));else for(;++o<i;)isNaN(r=s(e(t[o],o,t)))||(c+=(n=r-l)*(r-(l+=n/++a)));if(a>1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o<a;)if(null!=(r=t[o])&&r>=r)for(n=i=r;++o<a;)null!=(r=t[o])&&(n>r&&(n=r),i<r&&(i=r))}else for(;++o<a;)if(null!=(r=e(t[o],o,t))&&r>=r)for(n=i=r;++o<a;)null!=(r=e(t[o],o,t))&&(n>r&&(n=r),i<r&&(i=r));return[n,i]}var f=Array.prototype,h=f.slice,p=f.map;function d(t){return function(){return t}}function g(t){return t}function v(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=0|Math.max(0,Math.ceil((e-t)/r)),a=new Array(i);++n<i;)a[n]=t+n*r;return a}var m=Math.sqrt(50),y=Math.sqrt(10),x=Math.sqrt(2);function b(t,e,r){var n=(e-t)/Math.max(0,r),i=Math.floor(Math.log(n)/Math.LN10),a=n/Math.pow(10,i);return i>=0?(a>=m?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=m?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=m?i*=10:a>=y?i*=5:a>=x&&(i*=2),e<t?-i:i}function w(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function k(t,e,r){if(null==r&&(r=s),n=t.length){if((e=+e)<=0||n<2)return+r(t[0],0,t);if(e>=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function A(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(r=t[a])&&r>=r)for(n=r;++a<i;)null!=(r=t[a])&&n>r&&(n=r)}else for(;++a<i;)if(null!=(r=e(t[a],a,t))&&r>=r)for(n=r;++a<i;)null!=(r=e(t[a],a,t))&&n>r&&(n=r);return n}function M(t){if(!(i=t.length))return[];for(var e=-1,r=A(t,T),n=new Array(r);++e<r;)for(var i,a=-1,o=n[e]=new Array(i);++a<i;)o[a]=t[a][e];return n}function T(t){return t.length}t.bisect=i,t.bisectRight=i,t.bisectLeft=a,t.ascending=e,t.bisector=r,t.cross=function(t,e,r){var n,i,a,s,l=t.length,c=e.length,u=new Array(l*c);for(null==r&&(r=o),n=a=0;n<l;++n)for(s=t[n],i=0;i<c;++i,++a)u[a]=r(s,e[i]);return u},t.descending=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;a<s;++a)l[a]=t(n[a],a,n);var c=e(l),u=c[0],f=c[1],h=r(l,u,f);Array.isArray(h)||(h=_(u,f,h),h=v(Math.ceil(u/h)*h,f,h));for(var p=h.length;h[0]<=u;)h.shift(),--p;for(;h[p-1]>f;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a<p?h[a]:f;for(a=0;a<s;++a)u<=(o=l[a])&&o<=f&&g[i(h,o,0,p)].push(n[a]);return g}return n.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:d(e),n):t},n.domain=function(t){return arguments.length?(e=\"function\"==typeof t?t:d([t[0],t[1]]),n):e},n.thresholds=function(t){return arguments.length?(r=\"function\"==typeof t?t:Array.isArray(t)?d(h.call(t)):d(t),n):r},n},t.thresholdFreedmanDiaconis=function(t,r,n){return t=p.call(t,s).sort(e),Math.ceil((n-r)/(2*(k(t,.75)-k(t,.25))*Math.pow(t.length,-1/3)))},t.thresholdScott=function(t,e,r){return Math.ceil((r-e)/(3.5*c(t)*Math.pow(t.length,-1/3)))},t.thresholdSturges=w,t.max=function(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(r=t[a])&&r>=r)for(n=r;++a<i;)null!=(r=t[a])&&r>n&&(n=r)}else for(;++a<i;)if(null!=(r=e(t[a],a,t))&&r>=r)for(n=r;++a<i;)null!=(r=e(t[a],a,t))&&r>n&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a<n;)isNaN(r=s(t[a]))?--i:o+=r;else for(;++a<n;)isNaN(r=s(e(t[a],a,t)))?--i:o+=r;if(i)return o/i},t.median=function(t,r){var n,i=t.length,a=-1,o=[];if(null==r)for(;++a<i;)isNaN(n=s(t[a]))||o.push(n);else for(;++a<i;)isNaN(n=s(r(t[a],a,t)))||o.push(n);return k(o.sort(e),.5)},t.merge=function(t){for(var e,r,n,i=t.length,a=-1,o=0;++a<i;)o+=t[a].length;for(r=new Array(o);--i>=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=A,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r<n;)a[r]=e(i,i=t[++r]);return a},t.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},t.quantile=k,t.range=v,t.scan=function(t,r){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==r&&(r=e);++a<n;)(r(i=t[a],s)<0||0!==r(s,s))&&(s=i,o=a);return 0===r(s,s)?o:void 0}},t.shuffle=function(t,e,r){for(var n,i,a=(null==r?t.length:r)-(e=null==e?0:+e);a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},t.sum=function(t,e){var r,n=t.length,i=-1,a=0;if(null==e)for(;++i<n;)(r=+t[i])&&(a+=r);else for(;++i<n;)(r=+e(t[i],i,t))&&(a+=r);return a},t.ticks=function(t,e,r){var n,i,a,o,s=-1;if(r=+r,(t=+t)==(e=+e)&&r>0)return[t];if((n=e<t)&&(i=t,t=e,e=i),0===(o=b(t,e,r))||!isFinite(o))return[];if(o>0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s<i;)a[s]=(t+s)*o;else for(t=Math.floor(t*o),e=Math.ceil(e*o),a=new Array(i=Math.ceil(t-e+1));++s<i;)a[s]=(t-s)/o;return n&&a.reverse(),a},t.tickIncrement=b,t.tickStep=_,t.transpose=M,t.variance=l,t.zip=function(){return M(arguments)},Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],142:[function(t,e,r){var n;n=this,function(t){\"use strict\";function e(){}function r(t,r){var n=new e;if(t instanceof e)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,a=-1,o=t.length;if(null==r)for(;++a<o;)n.set(a,t[a]);else for(;++a<o;)n.set(r(i=t[a],a,t),i)}else if(t)for(var s in t)n.set(s,t[s]);return n}e.prototype=r.prototype={constructor:e,has:function(t){return\"$\"+t in this},get:function(t){return this[\"$\"+t]},set:function(t,e){return this[\"$\"+t]=e,this},remove:function(t){var e=\"$\"+t;return e in this&&delete this[e]},clear:function(){for(var t in this)\"$\"===t[0]&&delete this[t]},keys:function(){var t=[];for(var e in this)\"$\"===e[0]&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)\"$\"===e[0]&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)\"$\"===e[0]&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)\"$\"===e[0]&&++t;return t},empty:function(){for(var t in this)if(\"$\"===t[0])return!1;return!0},each:function(t){for(var e in this)\"$\"===e[0]&&t(this[e],e.slice(1),this)}};function n(){return{}}function i(t,e,r){t[e]=r}function a(){return r()}function o(t,e,r){t.set(e,r)}function s(){}var l=r.prototype;function c(t,e){var r=new s;if(t instanceof s)t.each(function(t){r.add(t)});else if(t){var n=-1,i=t.length;if(null==e)for(;++n<i;)r.add(t[n]);else for(;++n<i;)r.add(e(t[n],n,t))}return r}s.prototype=c.prototype={constructor:s,has:l.has,add:function(t){return this[\"$\"+(t+=\"\")]=t,this},remove:l.remove,clear:l.clear,values:l.keys,size:l.size,empty:l.empty,each:l.each};t.nest=function(){var t,e,s,l=[],c=[];function u(n,i,a,o){if(i>=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),v=a();++h<p;)(f=g.get(s=d(c=n[h])+\"\"))?f.push(c):g.set(s,[c]);return g.each(function(t,e){o(v,e,u(t,i,a,o))}),v}return s={object:function(t){return u(t,0,n,i)},map:function(t){return u(t,0,a,o)},entries:function(t){return function t(r,n){if(++n>l.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each(function(e,r){i.push({key:r,values:t(e,n)})})),null!=a?i.sort(function(t,e){return a(t.key,e.key)}):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],143:[function(t,e,r){var n;n=this,function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3})$/,l=/^#([0-9a-f]{6})$/,c=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),u=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),h=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),p=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),d=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),g={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function v(t){var e;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?new _((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=l.exec(t))?m(parseInt(e[1],16)):(e=c.exec(t))?new _(e[1],e[2],e[3],1):(e=u.exec(t))?new _(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=f.exec(t))?y(e[1],e[2],e[3],e[4]):(e=h.exec(t))?y(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=p.exec(t))?k(e[1],e[2]/100,e[3]/100,1):(e=d.exec(t))?k(e[1],e[2]/100,e[3]/100,e[4]):g.hasOwnProperty(t)?m(g[t]):\"transparent\"===t?new _(NaN,NaN,NaN,0):null}function m(t){return new _(t>>16&255,t>>8&255,255&t,1)}function y(t,e,r,n){return n<=0&&(t=e=r=NaN),new _(t,e,r,n)}function x(t){return t instanceof n||(t=v(t)),t?new _((t=t.rgb()).r,t.g,t.b,t.opacity):new _}function b(t,e,r,n){return 1===arguments.length?x(t):new _(t,e,r,null==n?1:n)}function _(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function w(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function k(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new M(t,e,r,n)}function A(t,e,r,i){return 1===arguments.length?function(t){if(t instanceof M)return new M(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new M;if(t instanceof M)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r<i):r===o?(i-e)/l+2:(e-r)/l+4,l/=c<.5?o+a:2-o-a,s*=60):l=c>0&&c<1?0:s,new M(s,l,c,t.opacity)}(t):new M(t,e,r,null==i?1:i)}function M(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function T(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+\"\"}}),e(_,b,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new _(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new _(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return\"#\"+w(this.r)+w(this.g)+w(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}})),e(M,A,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new M(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new M(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new _(T(t>=240?t-240:t+120,i,n),T(t,i,n),T(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var S=Math.PI/180,C=180/Math.PI,E=.96422,L=1,z=.82521,O=4/29,I=6/29,D=3*I*I,P=I*I*I;function R(t){if(t instanceof B)return new B(t.l,t.a,t.b,t.opacity);if(t instanceof G){if(isNaN(t.h))return new B(t.l,0,0,t.opacity);var e=t.h*S;return new B(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof _||(t=x(t));var r,n,i=U(t.r),a=U(t.g),o=U(t.b),s=N((.2225045*i+.7168786*a+.0606169*o)/L);return i===a&&a===o?r=n=s:(r=N((.4360747*i+.3850649*a+.1430804*o)/E),n=N((.0139322*i+.0971045*a+.7141733*o)/z)),new B(116*s-16,500*(r-s),200*(s-n),t.opacity)}function F(t,e,r,n){return 1===arguments.length?R(t):new B(t,e,r,null==n?1:n)}function B(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function N(t){return t>P?Math.pow(t,1/3):t/D+O}function j(t){return t>I?t*t*t:D*(t-O)}function V(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function q(t){if(t instanceof G)return new G(t.h,t.c,t.l,t.opacity);if(t instanceof B||(t=R(t)),0===t.a&&0===t.b)return new G(NaN,0,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*C;return new G(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function H(t,e,r,n){return 1===arguments.length?q(t):new G(t,e,r,null==n?1:n)}function G(t,e,r,n){this.h=+t,this.c=+e,this.l=+r,this.opacity=+n}e(B,F,r(n,{brighter:function(t){return new B(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new B(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return new _(V(3.1338561*(e=E*j(e))-1.6168667*(t=L*j(t))-.4906146*(r=z*j(r))),V(-.9787684*e+1.9161415*t+.033454*r),V(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}})),e(G,H,r(n,{brighter:function(t){return new G(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new G(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return R(this).rgb()}}));var W=-.14861,Y=1.78277,X=-.29227,Z=-.90649,$=1.97294,J=$*Z,K=$*Y,Q=Y*X-Z*W;function tt(t,e,r,n){return 1===arguments.length?function(t){if(t instanceof et)return new et(t.h,t.s,t.l,t.opacity);t instanceof _||(t=x(t));var e=t.r/255,r=t.g/255,n=t.b/255,i=(Q*n+J*e-K*r)/(Q+J-K),a=n-i,o=($*(r-i)-X*a)/Z,s=Math.sqrt(o*o+a*a)/($*i*(1-i)),l=s?Math.atan2(o,a)*C-120:NaN;return new et(l<0?l+360:l,s,i,t.opacity)}(t):new et(t,e,r,null==n?1:n)}function et(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}e(et,tt,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new et(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new et(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*S,e=+this.l,r=isNaN(this.s)?0:this.s*e*(1-e),n=Math.cos(t),i=Math.sin(t);return new _(255*(e+r*(W*n+Y*i)),255*(e+r*(X*n+Z*i)),255*(e+r*($*n)),this.opacity)}})),t.color=v,t.rgb=b,t.hsl=A,t.lab=F,t.hcl=H,t.lch=function(t,e,r,n){return 1===arguments.length?q(t):new G(r,e,t,null==n?1:n)},t.gray=function(t,e){return new B(t,0,0,null==e?1:e)},t.cubehelix=tt,Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],144:[function(t,e,r){var n;n=this,function(t){\"use strict\";var e={value:function(){}};function r(){for(var t,e=0,r=arguments.length,i={};e<r;++e){if(!(t=arguments[e]+\"\")||t in i)throw new Error(\"illegal type: \"+t);i[t]=[]}return new n(i)}function n(t){this._=t}function i(t,e){for(var r,n=0,i=t.length;n<i;++n)if((r=t[n]).name===e)return r.value}function a(t,r,n){for(var i=0,a=t.length;i<a;++i)if(t[i].name===r){t[i]=e,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=n&&t.push({name:r,value:n}),t}n.prototype=r.prototype={constructor:n,on:function(t,e){var r,n,o=this._,s=(n=o,(t+\"\").trim().split(/^|\\s+/).map(function(t){var e=\"\",r=t.indexOf(\".\");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:e}})),l=-1,c=s.length;if(!(arguments.length<2)){if(null!=e&&\"function\"!=typeof e)throw new Error(\"invalid callback: \"+e);for(;++l<c;)if(r=(t=s[l]).type)o[r]=a(o[r],t.name,e);else if(null==e)for(r in o)o[r]=a(o[r],t.name,null);return this}for(;++l<c;)if((r=(t=s[l]).type)&&(r=i(o[r],t.name)))return r},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new n(t)},call:function(t,e){if((r=arguments.length-2)>0)for(var r,n,i=new Array(r),a=0;a<r;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);for(a=0,r=(n=this._[t]).length;a<r;++a)n[a].value.apply(e,i)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);for(var n=this._[t],i=0,a=n.length;i<a;++i)n[i].value.apply(e,r)}},t.dispatch=r,Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],145:[function(t,e,r){var n,i;n=this,i=function(t,e,r,n,i){\"use strict\";var a=function(t){return function(){return t}},o=function(){return 1e-6*(Math.random()-.5)};function s(t){return t.x+t.vx}function l(t){return t.y+t.vy}function c(t){return t.index}function u(t,e){var r=t.get(e);if(!r)throw new Error(\"missing: \"+e);return r}function f(t){return t.x}function h(t){return t.y}var p=10,d=Math.PI*(3-Math.sqrt(5));t.forceCenter=function(t,e){var r;function n(){var n,i,a=r.length,o=0,s=0;for(n=0;n<a;++n)o+=(i=r[n]).x,s+=i.y;for(o=o/a-t,s=s/a-e,n=0;n<a;++n)(i=r[n]).x-=o,i.y-=s}return null==t&&(t=0),null==e&&(e=0),n.initialize=function(t){r=t},n.x=function(e){return arguments.length?(t=+e,n):t},n.y=function(t){return arguments.length?(e=+t,n):e},n},t.forceCollide=function(t){var r,n,i=1,c=1;function u(){for(var t,a,u,h,p,d,g,v=r.length,m=0;m<c;++m)for(a=e.quadtree(r,s,l).visitAfter(f),t=0;t<v;++t)u=r[t],d=n[u.index],g=d*d,h=u.x+u.vx,p=u.y+u.vy,a.visit(y);function y(t,e,r,n,a){var s=t.data,l=t.r,c=d+l;if(!s)return e>h+c||n<h-c||r>p+c||a<p-c;if(s.index>u.index){var f=h-s.x-s.vx,v=p-s.y-s.vy,m=f*f+v*v;m<c*c&&(0===f&&(m+=(f=o())*f),0===v&&(m+=(v=o())*v),m=(c-(m=Math.sqrt(m)))/m*i,u.vx+=(f*=m)*(c=(l*=l)/(g+l)),u.vy+=(v*=m)*c,s.vx-=f*(c=1-c),s.vy-=v*c)}}}function f(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e<a;++e)i=r[e],n[i.index]=+t(i,e,r)}}return\"function\"!=typeof t&&(t=a(null==t?1:+t)),u.initialize=function(t){r=t,h()},u.iterations=function(t){return arguments.length?(c=+t,u):c},u.strength=function(t){return arguments.length?(i=+t,u):i},u.radius=function(e){return arguments.length?(t=\"function\"==typeof e?e:a(+e),h(),u):t},u},t.forceLink=function(t){var e,n,i,s,l,f=c,h=function(t){return 1/Math.min(s[t.source.index],s[t.target.index])},p=a(30),d=1;function g(r){for(var i=0,a=t.length;i<d;++i)for(var s,c,u,f,h,p,g,v=0;v<a;++v)c=(s=t[v]).source,f=(u=s.target).x+u.vx-c.x-c.vx||o(),h=u.y+u.vy-c.y-c.vy||o(),f*=p=((p=Math.sqrt(f*f+h*h))-n[v])/p*r*e[v],h*=p,u.vx-=f*(g=l[v]),u.vy-=h*g,c.vx+=f*(g=1-g),c.vy+=h*g}function v(){if(i){var a,o,c=i.length,h=t.length,p=r.map(i,f);for(a=0,s=new Array(c);a<h;++a)(o=t[a]).index=a,\"object\"!=typeof o.source&&(o.source=u(p,o.source)),\"object\"!=typeof o.target&&(o.target=u(p,o.target)),s[o.source.index]=(s[o.source.index]||0)+1,s[o.target.index]=(s[o.target.index]||0)+1;for(a=0,l=new Array(h);a<h;++a)o=t[a],l[a]=s[o.source.index]/(s[o.source.index]+s[o.target.index]);e=new Array(h),m(),n=new Array(h),y()}}function m(){if(i)for(var r=0,n=t.length;r<n;++r)e[r]=+h(t[r],r,t)}function y(){if(i)for(var e=0,r=t.length;e<r;++e)n[e]=+p(t[e],e,t)}return null==t&&(t=[]),g.initialize=function(t){i=t,v()},g.links=function(e){return arguments.length?(t=e,v(),g):t},g.id=function(t){return arguments.length?(f=t,g):f},g.iterations=function(t){return arguments.length?(d=+t,g):d},g.strength=function(t){return arguments.length?(h=\"function\"==typeof t?t:a(+t),m(),g):h},g.distance=function(t){return arguments.length?(p=\"function\"==typeof t?t:a(+t),y(),g):p},g},t.forceManyBody=function(){var t,r,n,i,s=a(-30),l=1,c=1/0,u=.81;function p(i){var a,o=t.length,s=e.quadtree(t,f,h).visitAfter(g);for(n=i,a=0;a<o;++a)r=t[a],s.visit(v)}function d(){if(t){var e,r,n=t.length;for(i=new Array(n),e=0;e<n;++e)r=t[e],i[r.index]=+s(r,e,t)}}function g(t){var e,r,n,a,o,s=0,l=0;if(t.length){for(n=a=o=0;o<4;++o)(e=t[o])&&(r=Math.abs(e.value))&&(s+=e.value,l+=r,n+=r*e.x,a+=r*e.y);t.x=n/l,t.y=a/l}else{(e=t).x=e.data.x,e.y=e.data.y;do{s+=i[e.data.index]}while(e=e.next)}t.value=s}function v(t,e,a,s){if(!t.value)return!0;var f=t.x-r.x,h=t.y-r.y,p=s-e,d=f*f+h*h;if(p*p/u<d)return d<c&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d<l&&(d=Math.sqrt(l*d)),r.vx+=f*t.value*n/d,r.vy+=h*t.value*n/d),!0;if(!(t.length||d>=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d<l&&(d=Math.sqrt(l*d)));do{t.data!==r&&(p=i[t.data.index]*n/d,r.vx+=f*p,r.vy+=h*p)}while(t=t.next)}}return p.initialize=function(e){t=e,d()},p.strength=function(t){return arguments.length?(s=\"function\"==typeof t?t:a(+t),d(),p):s},p.distanceMin=function(t){return arguments.length?(l=t*t,p):Math.sqrt(l)},p.distanceMax=function(t){return arguments.length?(c=t*t,p):Math.sqrt(c)},p.theta=function(t){return arguments.length?(u=t*t,p):Math.sqrt(u)},p},t.forceRadial=function(t,e,r){var n,i,o,s=a(.1);function l(t){for(var a=0,s=n.length;a<s;++a){var l=n[a],c=l.x-e||1e-6,u=l.y-r||1e-6,f=Math.sqrt(c*c+u*u),h=(o[a]-f)*i[a]*t/f;l.vx+=c*h,l.vy+=u*h}}function c(){if(n){var e,r=n.length;for(i=new Array(r),o=new Array(r),e=0;e<r;++e)o[e]=+t(n[e],e,n),i[e]=isNaN(o[e])?0:+s(n[e],e,n)}}return\"function\"!=typeof t&&(t=a(+t)),null==e&&(e=0),null==r&&(r=0),l.initialize=function(t){n=t,c()},l.strength=function(t){return arguments.length?(s=\"function\"==typeof t?t:a(+t),c(),l):s},l.radius=function(e){return arguments.length?(t=\"function\"==typeof e?e:a(+e),c(),l):t},l.x=function(t){return arguments.length?(e=+t,l):e},l.y=function(t){return arguments.length?(r=+t,l):r},l},t.forceSimulation=function(t){var e,a=1,o=.001,s=1-Math.pow(o,1/300),l=0,c=.6,u=r.map(),f=i.timer(g),h=n.dispatch(\"tick\",\"end\");function g(){v(),h.call(\"tick\",e),a<o&&(f.stop(),h.call(\"end\",e))}function v(){var e,r,n=t.length;for(a+=(l-a)*s,u.each(function(t){t(a)}),e=0;e<n;++e)null==(r=t[e]).fx?r.x+=r.vx*=c:(r.x=r.fx,r.vx=0),null==r.fy?r.y+=r.vy*=c:(r.y=r.fy,r.vy=0)}function m(){for(var e,r=0,n=t.length;r<n;++r){if((e=t[r]).index=r,isNaN(e.x)||isNaN(e.y)){var i=p*Math.sqrt(r),a=r*d;e.x=i*Math.cos(a),e.y=i*Math.sin(a)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function y(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),m(),e={tick:v,restart:function(){return f.restart(g),e},stop:function(){return f.stop(),e},nodes:function(r){return arguments.length?(t=r,m(),u.each(y),e):t},alpha:function(t){return arguments.length?(a=+t,e):a},alphaMin:function(t){return arguments.length?(o=+t,e):o},alphaDecay:function(t){return arguments.length?(s=+t,e):+s},alphaTarget:function(t){return arguments.length?(l=+t,e):l},velocityDecay:function(t){return arguments.length?(c=1-t,e):1-c},force:function(t,r){return arguments.length>1?(null==r?u.remove(t):u.set(t,y(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c<u;++c)(o=(i=e-(s=t[c]).x)*i+(a=r-s.y)*a)<n&&(l=s,n=o);return l},on:function(t,r){return arguments.length>1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vx+=(n[a]-i.x)*r[a]*t}function s(){if(e){var a,o=e.length;for(r=new Array(o),n=new Array(o),a=0;a<o;++a)r[a]=isNaN(n[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return\"function\"!=typeof t&&(t=a(null==t?0:+t)),o.initialize=function(t){e=t,s()},o.strength=function(t){return arguments.length?(i=\"function\"==typeof t?t:a(+t),s(),o):i},o.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:a(+e),s(),o):t},o},t.forceY=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vy+=(n[a]-i.y)*r[a]*t}function s(){if(e){var a,o=e.length;for(r=new Array(o),n=new Array(o),a=0;a<o;++a)r[a]=isNaN(n[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return\"function\"!=typeof t&&(t=a(null==t?0:+t)),o.initialize=function(t){e=t,s()},o.strength=function(t){return arguments.length?(i=\"function\"==typeof t?t:a(+t),s(),o):i},o.y=function(e){return arguments.length?(t=\"function\"==typeof e?e:a(+e),s(),o):t},o},Object.defineProperty(t,\"__esModule\",{value:!0})},\"object\"==typeof r&&\"undefined\"!=typeof e?i(r,t(\"d3-quadtree\"),t(\"d3-collection\"),t(\"d3-dispatch\"),t(\"d3-timer\")):i(n.d3=n.d3||{},n.d3,n.d3,n.d3,n.d3)},{\"d3-collection\":142,\"d3-dispatch\":144,\"d3-quadtree\":147,\"d3-timer\":148}],146:[function(t,e,r){var n,i;n=this,i=function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i<e-1?t[i+2]:2*o-a;return r((n-i/e)*e,s,a,o,l)}}function i(t){var e=t.length;return function(n){var i=Math.floor(((n%=1)<0?++n:n)*e),a=t[(i+e-1)%e],o=t[i%e],s=t[(i+1)%e],l=t[(i+2)%e];return r((n-i/e)*e,a,o,s,l)}}function a(t){return function(){return t}}function o(t,e){return function(r){return t+r*e}}function s(t,e){var r=e-t;return r?o(t,r>180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;n<a;++n)i=e.rgb(r[n]),o[n]=i.r||0,s[n]=i.g||0,l[n]=i.b||0;return o=t(o),s=t(s),l=t(l),i.opacity=1,function(t){return i.r=o(t),i.g=s(t),i.b=l(t),i+\"\"}}}var h=f(n),p=f(i);function d(t,e){var r,n=e?e.length:0,i=t?Math.min(n,t.length):0,a=new Array(i),o=new Array(n);for(r=0;r<i;++r)a[r]=_(t[r],e[r]);for(;r<n;++r)o[r]=e[r];return function(t){for(r=0;r<i;++r)o[r]=a[r](t);return o}}function g(t,e){var r=new Date;return e-=t=+t,function(n){return r.setTime(t+e*n),r}}function v(t,e){return e-=t=+t,function(r){return t+e*r}}function m(t,e){var r,n={},i={};for(r in null!==t&&\"object\"==typeof t||(t={}),null!==e&&\"object\"==typeof e||(e={}),e)r in t?n[r]=_(t[r],e[r]):i[r]=e[r];return function(t){for(r in n)i[r]=n[r](t);return i}}var y=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,x=new RegExp(y.source,\"g\");function b(t,e){var r,n,i,a=y.lastIndex=x.lastIndex=0,o=-1,s=[],l=[];for(t+=\"\",e+=\"\";(r=y.exec(t))&&(n=x.exec(e));)(i=n.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:v(r,n)})),a=x.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?l[0]?function(t){return function(e){return t(e)+\"\"}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var r,n=0;n<e;++n)s[(r=l[n]).i]=r.x(t);return s.join(\"\")})}function _(t,r){var n,i=typeof r;return null==r||\"boolean\"===i?a(r):(\"number\"===i?v:\"string\"===i?(n=e.color(r))?(r=n,u):b:r instanceof e.color?u:r instanceof Date?g:Array.isArray(r)?d:\"function\"!=typeof r.valueOf&&\"function\"!=typeof r.toString||isNaN(r)?m:v)(t,r)}var w,k,A,M,T=180/Math.PI,S={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function C(t,e,r,n,i,a){var o,s,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),t*n<e*r&&(t=-t,e=-e,l=-l,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*T,skewX:Math.atan(l)*T,scaleX:o,scaleY:s}}function E(t,e,r,n){function i(t){return t.length?t.pop()+\" \":\"\"}return function(a,o){var s=[],l=[];return a=t(a),o=t(o),function(t,n,i,a,o,s){if(t!==i||n!==a){var l=o.push(\"translate(\",null,e,null,r);s.push({i:l-4,x:v(t,i)},{i:l-2,x:v(n,a)})}else(i||a)&&o.push(\"translate(\"+i+e+a+r)}(a.translateX,a.translateY,o.translateX,o.translateY,s,l),function(t,e,r,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:v(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:v(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:v(t,r)},{i:s-2,x:v(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r<n;)s[(e=l[r]).i]=e.x(t);return s.join(\"\")}}}var L=E(function(t){return\"none\"===t?S:(w||(w=document.createElement(\"DIV\"),k=document.documentElement,A=document.defaultView),w.style.transform=t,t=A.getComputedStyle(k.appendChild(w),null).getPropertyValue(\"transform\"),k.removeChild(w),C(+(t=t.slice(7,-1).split(\",\"))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},\"px, \",\"px)\",\"deg)\"),z=E(function(t){return null==t?S:(M||(M=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")),M.setAttribute(\"transform\",t),(t=M.transform.baseVal.consolidate())?C((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):S)},\", \",\")\",\")\"),O=Math.SQRT2,I=2,D=4,P=1e-12;function R(t){return((t=Math.exp(t))+1/t)/2}function F(t){return function(r,n){var i=t((r=e.hsl(r)).h,(n=e.hsl(n)).h),a=c(r.s,n.s),o=c(r.l,n.l),s=c(r.opacity,n.opacity);return function(t){return r.h=i(t),r.s=a(t),r.l=o(t),r.opacity=s(t),r+\"\"}}}var B=F(s),N=F(c);function j(t){return function(r,n){var i=t((r=e.hcl(r)).h,(n=e.hcl(n)).h),a=c(r.c,n.c),o=c(r.l,n.l),s=c(r.opacity,n.opacity);return function(t){return r.h=i(t),r.c=a(t),r.l=o(t),r.opacity=s(t),r+\"\"}}}var V=j(s),U=j(c);function q(t){return function r(n){function i(r,i){var a=t((r=e.cubehelix(r)).h,(i=e.cubehelix(i)).h),o=c(r.s,i.s),s=c(r.l,i.l),l=c(r.opacity,i.opacity);return function(t){return r.h=a(t),r.s=o(t),r.l=s(Math.pow(t,n)),r.opacity=l(t),r+\"\"}}return n=+n,i.gamma=r,i}(1)}var H=q(s),G=q(c);t.interpolate=_,t.interpolateArray=d,t.interpolateBasis=n,t.interpolateBasisClosed=i,t.interpolateDate=g,t.interpolateDiscrete=function(t){var e=t.length;return function(r){return t[Math.max(0,Math.min(e-1,Math.floor(r*e)))]}},t.interpolateHue=function(t,e){var r=s(+t,+e);return function(t){var e=r(t);return e-360*Math.floor(e/360)}},t.interpolateNumber=v,t.interpolateObject=m,t.interpolateRound=function(t,e){return e-=t=+t,function(r){return Math.round(t+e*r)}},t.interpolateString=b,t.interpolateTransformCss=L,t.interpolateTransformSvg=z,t.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],c=e[2],u=s-i,f=l-a,h=u*u+f*f;if(h<P)n=Math.log(c/o)/O,r=function(t){return[i+t*u,a+t*f,o*Math.exp(O*t*n)]};else{var p=Math.sqrt(h),d=(c*c-o*o+D*h)/(2*o*I*p),g=(c*c-o*o-D*h)/(2*c*I*p),v=Math.log(Math.sqrt(d*d+1)-d),m=Math.log(Math.sqrt(g*g+1)-g);n=(m-v)/O,r=function(t){var e,r=t*n,s=R(v),l=o/(I*p)*(s*(e=O*r+v,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(v));return[i+l*u,a+l*f,o*s/R(O*r+v)]}}return r.duration=1e3*n,r},t.interpolateRgb=u,t.interpolateRgbBasis=h,t.interpolateRgbBasisClosed=p,t.interpolateHsl=B,t.interpolateHslLong=N,t.interpolateLab=function(t,r){var n=c((t=e.lab(t)).l,(r=e.lab(r)).l),i=c(t.a,r.a),a=c(t.b,r.b),o=c(t.opacity,r.opacity);return function(e){return t.l=n(e),t.a=i(e),t.b=a(e),t.opacity=o(e),t+\"\"}},t.interpolateHcl=V,t.interpolateHclLong=U,t.interpolateCubehelix=H,t.interpolateCubehelixLong=G,t.piecewise=function(t,e){for(var r=0,n=e.length-1,i=e[0],a=new Array(n<0?0:n);r<n;)a[r]=t(i,i=e[++r]);return function(t){var e=Math.max(0,Math.min(n-1,Math.floor(t*=n)));return a[e](t-e)}},t.quantize=function(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t(n/(e-1));return r},Object.defineProperty(t,\"__esModule\",{value:!0})},\"object\"==typeof r&&\"undefined\"!=typeof e?i(r,t(\"d3-color\")):i(n.d3=n.d3||{},n.d3)},{\"d3-color\":143}],147:[function(t,e,r){var n;n=this,function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,v=t._y0,m=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+m)/2))?g=a:m=a,(u=r>=(o=(v+y)/2))?v=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+m)/2))?g=a:m=a,(u=r>=(o=(v+y)/2))?v=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}var r=function(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i};function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;n<o;++n)isNaN(i=+this._x.call(null,r=t[n]))||isNaN(a=+this._y.call(null,r))||(s[n]=i,l[n]=a,i<c&&(c=i),i>f&&(f=i),a<u&&(u=a),a>h&&(h=a));for(f<c&&(c=this._x0,f=this._x1),h<u&&(u=this._y0,h=this._y1),this.cover(c,u).cover(f,h),n=0;n<o;++n)e(this,s[n],l[n],t[n]);return this},l.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var r=this._x0,n=this._y0,i=this._x1,a=this._y1;if(isNaN(r))i=(r=Math.floor(t))+1,a=(n=Math.floor(e))+1;else{if(!(r>t||t>i||n>e||e>a))return this;var o,s,l=i-r,c=this._root;switch(s=(e<(n+a)/2)<<1|t<(r+i)/2){case 0:do{(o=new Array(4))[s]=c,c=o}while(a=n+(l*=2),t>(i=r+l)||e>a);break;case 1:do{(o=new Array(4))[s]=c,c=o}while(a=n+(l*=2),(r=i-l)>t||e>a);break;case 2:do{(o=new Array(4))[s]=c,c=o}while(n=a-(l*=2),t>(i=r+l)||n>e);break;case 3:do{(o=new Array(4))[s]=c,c=o}while(n=a-(l*=2),(r=i-l)>t||n>e)}this._root&&this._root.length&&(this._root=c)}return this._x0=r,this._y0=n,this._x1=i,this._y1=a,this},l.data=function(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t},l.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},l.find=function(t,e,n){var i,a,o,s,l,c,u,f=this._x0,h=this._y0,p=this._x1,d=this._y1,g=[],v=this._root;for(v&&g.push(new r(v,f,h,p,d)),null==n?n=1/0:(f=t-n,h=e-n,p=t+n,d=e+n,n*=n);c=g.pop();)if(!(!(v=c.node)||(a=c.x0)>p||(o=c.y0)>d||(s=c.x1)<f||(l=c.y1)<h))if(v.length){var m=(a+s)/2,y=(o+l)/2;g.push(new r(v[3],m,y,s,l),new r(v[2],a,y,m,l),new r(v[1],m,o,s,y),new r(v[0],a,o,m,y)),(u=(e>=y)<<1|t>=m)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,v.data),b=e-+this._y.call(null,v.data),_=x*x+b*b;if(_<n){var w=Math.sqrt(n=_);f=t-w,h=e-w,p=t+w,d=e+w,i=v.data}}return i},l.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var e,r,n,i,a,o,s,l,c,u,f,h,p=this._root,d=this._x0,g=this._y0,v=this._x1,m=this._y1;if(!p)return this;if(p.length)for(;;){if((c=a>=(s=(d+v)/2))?d=s:v=s,(u=o>=(l=(g+m)/2))?g=l:m=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e<r;++e)this.remove(t[e]);return this},l.root=function(){return this._root},l.size=function(){var t=0;return this.visit(function(e){if(!e.length)do{++t}while(e=e.next)}),t},l.visit=function(t){var e,n,i,a,o,s,l=[],c=this._root;for(c&&l.push(new r(c,this._x0,this._y0,this._x1,this._y1));e=l.pop();)if(!t(c=e.node,i=e.x0,a=e.y0,o=e.x1,s=e.y1)&&c.length){var u=(i+o)/2,f=(a+s)/2;(n=c[3])&&l.push(new r(n,u,f,o,s)),(n=c[2])&&l.push(new r(n,i,f,u,s)),(n=c[1])&&l.push(new r(n,u,a,o,f)),(n=c[0])&&l.push(new r(n,i,a,u,f))}return this},l.visitAfter=function(t){var e,n=[],i=[];for(this._root&&n.push(new r(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var a=e.node;if(a.length){var o,s=e.x0,l=e.y0,c=e.x1,u=e.y1,f=(s+c)/2,h=(l+u)/2;(o=a[0])&&n.push(new r(o,s,l,f,h)),(o=a[1])&&n.push(new r(o,f,l,c,h)),(o=a[2])&&n.push(new r(o,s,h,f,u)),(o=a[3])&&n.push(new r(o,f,h,c,u))}i.push(e)}for(;e=i.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},l.x=function(t){return arguments.length?(this._x=t,this):this._x},l.y=function(t){return arguments.length?(this._y=t,this):this._y},t.quadtree=a,Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],148:[function(t,e,r){var n;n=this,function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=1e3,s=0,l=0,c=0,u=\"object\"==typeof performance&&performance.now?performance:Date,f=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function h(){return l||(f(p),l=u.now()+c)}function p(){l=0}function d(){this._call=this._time=this._next=null}function g(t,e,r){var n=new d;return n.restart(t,e,r),n}function v(){h(),++n;for(var t,r=e;r;)(t=l-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){l=(s=u.now())+c,n=i=0;try{v()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,x(a)}(),l=0}}function y(){var t=u.now(),e=t-s;e>o&&(c-=e,s=t)}function x(t){n||(i&&(i=clearTimeout(i)),t-l>24?(t<1/0&&(i=setTimeout(m,t-u.now()-c)),a&&(a=clearInterval(a))):(a||(s=u.now(),a=setInterval(y,o)),n=1,f(m)))}d.prototype=g.prototype={constructor:d,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?h():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,x()},stop:function(){this._call&&(this._call=null,this._time=1/0,x())}};t.now=h,t.timer=g,t.timerFlush=v,t.timeout=function(t,e,r){var n=new d;return e=null==e?0:+e,n.restart(function(r){n.stop(),t(r+e)},e,r),n},t.interval=function(t,e,r){var n=new d,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?h():+r,n.restart(function a(o){o+=i,n.restart(a,i+=e,r),t(o)},e,r),n)},Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.d3=n.d3||{})},{}],149:[function(t,e,r){!function(){var t={version:\"3.5.17\"},r=[].slice,n=function(t){return r.call(t)},i=this.document;function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}if(i)try{n(i.documentElement.childNodes)[0].nodeType}catch(t){n=function(t){for(var e=t.length,r=new Array(e);e--;)r[e]=t[e];return r}}if(Date.now||(Date.now=function(){return+new Date}),i)try{i.createElement(\"DIV\").style.setProperty(\"opacity\",0,\"\")}catch(t){var s=this.Element.prototype,l=s.setAttribute,c=s.setAttributeNS,u=this.CSSStyleDeclaration.prototype,f=u.setProperty;s.setAttribute=function(t,e){l.call(this,t,e+\"\")},s.setAttributeNS=function(t,e,r){c.call(this,t,e,r+\"\")},u.setProperty=function(t,e,r){f.call(this,t,e+\"\",r)}}function h(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function p(t){return null===t?NaN:+t}function d(t){return!isNaN(t)}function g(t){return{left:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n<i;){var a=n+i>>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n<i;){var a=n+i>>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}t.ascending=h,t.descending=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},t.min=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i<a;)if(null!=(n=t[i])&&n>=n){r=n;break}for(;++i<a;)null!=(n=t[i])&&r>n&&(r=n)}else{for(;++i<a;)if(null!=(n=e.call(t,t[i],i))&&n>=n){r=n;break}for(;++i<a;)null!=(n=e.call(t,t[i],i))&&r>n&&(r=n)}return r},t.max=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i<a;)if(null!=(n=t[i])&&n>=n){r=n;break}for(;++i<a;)null!=(n=t[i])&&n>r&&(r=n)}else{for(;++i<a;)if(null!=(n=e.call(t,t[i],i))&&n>=n){r=n;break}for(;++i<a;)null!=(n=e.call(t,t[i],i))&&n>r&&(r=n)}return r},t.extent=function(t,e){var r,n,i,a=-1,o=t.length;if(1===arguments.length){for(;++a<o;)if(null!=(n=t[a])&&n>=n){r=i=n;break}for(;++a<o;)null!=(n=t[a])&&(r>n&&(r=n),i<n&&(i=n))}else{for(;++a<o;)if(null!=(n=e.call(t,t[a],a))&&n>=n){r=i=n;break}for(;++a<o;)null!=(n=e.call(t,t[a],a))&&(r>n&&(r=n),i<n&&(i=n))}return[r,i]},t.sum=function(t,e){var r,n=0,i=t.length,a=-1;if(1===arguments.length)for(;++a<i;)d(r=+t[a])&&(n+=r);else for(;++a<i;)d(r=+e.call(t,t[a],a))&&(n+=r);return n},t.mean=function(t,e){var r,n=0,i=t.length,a=-1,o=i;if(1===arguments.length)for(;++a<i;)d(r=p(t[a]))?n+=r:--o;else for(;++a<i;)d(r=p(e.call(t,t[a],a)))?n+=r:--o;if(o)return n/o},t.quantile=function(t,e){var r=(t.length-1)*e+1,n=Math.floor(r),i=+t[n-1],a=r-n;return a?i+a*(t[n]-i):i},t.median=function(e,r){var n,i=[],a=e.length,o=-1;if(1===arguments.length)for(;++o<a;)d(n=p(e[o]))&&i.push(n);else for(;++o<a;)d(n=p(r.call(e,e[o],o)))&&i.push(n);if(i.length)return t.quantile(i.sort(h),.5)},t.variance=function(t,e){var r,n,i=t.length,a=0,o=0,s=-1,l=0;if(1===arguments.length)for(;++s<i;)d(r=p(t[s]))&&(o+=(n=r-a)*(r-(a+=n/++l)));else for(;++s<i;)d(r=p(e.call(t,t[s],s)))&&(o+=(n=r-a)*(r-(a+=n/++l)));if(l>1)return o/(l-1)},t.deviation=function(){var e=t.variance.apply(this,arguments);return e?Math.sqrt(e):e};var v=g(h);function m(t){return t.length}t.bisectLeft=v.left,t.bisect=t.bisectRight=v.right,t.bisector=function(t){return g(1===t.length?function(e,r){return h(t(e),r)}:t)},t.shuffle=function(t,e,r){(a=arguments.length)<3&&(r=t.length,a<2&&(e=0));for(var n,i,a=r-e;a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},t.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},t.pairs=function(t){for(var e=0,r=t.length-1,n=t[0],i=new Array(r<0?0:r);e<r;)i[e]=[n,n=t[++e]];return i},t.transpose=function(e){if(!(a=e.length))return[];for(var r=-1,n=t.min(e,m),i=new Array(n);++r<n;)for(var a,o=-1,s=i[r]=new Array(a);++o<a;)s[o]=e[o][r];return i},t.zip=function(){return t.transpose(arguments)},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},t.merge=function(t){for(var e,r,n,i=t.length,a=-1,o=0;++a<i;)o+=t[a].length;for(r=new Array(o);--i>=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r};var y=Math.abs;function x(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function b(){this._=Object.create(null)}t.range=function(t,e,r){if(arguments.length<3&&(r=1,arguments.length<2&&(e=t,t=0)),(e-t)/r==1/0)throw new Error(\"infinite range\");var n,i=[],a=function(t){var e=1;for(;t*e%1;)e*=10;return e}(y(r)),o=-1;if(t*=a,e*=a,(r*=a)<0)for(;(n=t+r*++o)>e;)i.push(n/a);else for(;(n=t+r*++o)<e;)i.push(n/a);return i},t.map=function(t,e){var r=new b;if(t instanceof b)t.forEach(function(t,e){r.set(t,e)});else if(Array.isArray(t)){var n,i=-1,a=t.length;if(1===arguments.length)for(;++i<a;)r.set(i,t[i]);else for(;++i<a;)r.set(e.call(t,n=t[i],i),n)}else for(var o in t)r.set(o,t[o]);return r};var _=\"__proto__\",w=\"\\0\";function k(t){return(t+=\"\")===_||t[0]===w?w+t:t}function A(t){return(t+=\"\")[0]===w?t.slice(1):t}function M(t){return k(t)in this._}function T(t){return(t=k(t))in this._&&delete this._[t]}function S(){var t=[];for(var e in this._)t.push(A(e));return t}function C(){var t=0;for(var e in this._)++t;return t}function E(){for(var t in this._)return!1;return!0}function L(){this._=Object.create(null)}function z(t){return t}function O(t,e,r){return function(){var n=r.apply(e,arguments);return n===e?t:n}}function I(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var r=0,n=D.length;r<n;++r){var i=D[r]+e;if(i in t)return i}}x(b,{has:M,get:function(t){return this._[k(t)]},set:function(t,e){return this._[k(t)]=e},remove:T,keys:S,values:function(){var t=[];for(var e in this._)t.push(this._[e]);return t},entries:function(){var t=[];for(var e in this._)t.push({key:A(e),value:this._[e]});return t},size:C,empty:E,forEach:function(t){for(var e in this._)t.call(this,A(e),this._[e])}}),t.nest=function(){var e,r,n={},i=[],a=[];function o(t,a,s){if(s>=i.length)return r?r.call(n,a):e?a.sort(e):a;for(var l,c,u,f,h=-1,p=a.length,d=i[s++],g=new b;++h<p;)(f=g.get(l=d(c=a[h])))?f.push(c):g.set(l,[c]);return t?(c=t(),u=function(e,r){c.set(e,o(t,r,s))}):(c={},u=function(e,r){c[e]=o(t,r,s)}),g.forEach(u),c}return n.map=function(t,e){return o(e,t,0)},n.entries=function(e){return function t(e,r){if(r>=i.length)return e;var n=[],o=a[r++];return e.forEach(function(e,i){n.push({key:e,values:t(i,r)})}),o?n.sort(function(t,e){return o(t.key,e.key)}):n}(o(t.map,e,0),0)},n.key=function(t){return i.push(t),n},n.sortKeys=function(t){return a[i.length-1]=t,n},n.sortValues=function(t){return e=t,n},n.rollup=function(t){return r=t,n},n},t.set=function(t){var e=new L;if(t)for(var r=0,n=t.length;r<n;++r)e.add(t[r]);return e},x(L,{has:M,add:function(t){return this._[k(t+=\"\")]=!0,t},remove:T,values:S,size:C,empty:E,forEach:function(t){for(var e in this._)t.call(this,A(e))}}),t.behavior={},t.rebind=function(t,e){for(var r,n=1,i=arguments.length;++n<i;)t[r=arguments[n]]=O(t,e,e[r]);return t};var D=[\"webkit\",\"ms\",\"moz\",\"Moz\",\"o\",\"O\"];function P(){}function R(){}function F(t){var e=[],r=new b;function n(){for(var r,n=e,i=-1,a=n.length;++i<a;)(r=n[i].on)&&r.apply(this,arguments);return t}return n.on=function(n,i){var a,o=r.get(n);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,a=e.indexOf(o)).concat(e.slice(a+1)),r.remove(n)),i&&e.push(r.set(n,{on:i})),t)},n}function B(){t.event.preventDefault()}function N(){for(var e,r=t.event;e=r.sourceEvent;)r=e;return r}function j(e){for(var r=new R,n=0,i=arguments.length;++n<i;)r[arguments[n]]=F(r);return r.of=function(n,i){return function(a){try{var o=a.sourceEvent=t.event;a.target=e,t.event=a,r[a.type].apply(n,i)}finally{t.event=o}}},r}t.dispatch=function(){for(var t=new R,e=-1,r=arguments.length;++e<r;)t[arguments[e]]=F(t);return t},R.prototype.on=function(t,e){var r=t.indexOf(\".\"),n=\"\";if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t)return arguments.length<2?this[t].on(n):this[t].on(n,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(n,null);return this}},t.event=null,t.requote=function(t){return t.replace(V,\"\\\\$&\")};var V=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g,U={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]};function q(t){return U(t,Y),t}var H=function(t,e){return e.querySelector(t)},G=function(t,e){return e.querySelectorAll(t)},W=function(t,e){var r=t.matches||t[I(t,\"matchesSelector\")];return(W=function(t,e){return r.call(t,e)})(t,e)};\"function\"==typeof Sizzle&&(H=function(t,e){return Sizzle(t,e)[0]||null},G=Sizzle,W=Sizzle.matchesSelector),t.selection=function(){return t.select(i.documentElement)};var Y=t.selection.prototype=[];function X(t){return\"function\"==typeof t?t:function(){return H(t,this)}}function Z(t){return\"function\"==typeof t?t:function(){return G(t,this)}}Y.select=function(t){var e,r,n,i,a=[];t=X(t);for(var o=-1,s=this.length;++o<s;){a.push(e=[]),e.parentNode=(n=this[o]).parentNode;for(var l=-1,c=n.length;++l<c;)(i=n[l])?(e.push(r=t.call(i,i.__data__,l,o)),r&&\"__data__\"in i&&(r.__data__=i.__data__)):e.push(null)}return q(a)},Y.selectAll=function(t){var e,r,i=[];t=Z(t);for(var a=-1,o=this.length;++a<o;)for(var s=this[a],l=-1,c=s.length;++l<c;)(r=s[l])&&(i.push(e=n(t.call(r,r.__data__,l,a))),e.parentNode=r);return q(i)};var $=\"http://www.w3.org/1999/xhtml\",J={svg:\"http://www.w3.org/2000/svg\",xhtml:$,xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};function K(e,r){return e=t.ns.qualify(e),null==r?e.local?function(){this.removeAttributeNS(e.space,e.local)}:function(){this.removeAttribute(e)}:\"function\"==typeof r?e.local?function(){var t=r.apply(this,arguments);null==t?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,t)}:function(){var t=r.apply(this,arguments);null==t?this.removeAttribute(e):this.setAttribute(e,t)}:e.local?function(){this.setAttributeNS(e.space,e.local,r)}:function(){this.setAttribute(e,r)}}function Q(t){return t.trim().replace(/\\s+/g,\" \")}function tt(e){return new RegExp(\"(?:^|\\\\s+)\"+t.requote(e)+\"(?:\\\\s+|$)\",\"g\")}function et(t){return(t+\"\").trim().split(/^|\\s+/)}function rt(t,e){var r=(t=et(t).map(nt)).length;return\"function\"==typeof e?function(){for(var n=-1,i=e.apply(this,arguments);++n<r;)t[n](this,i)}:function(){for(var n=-1;++n<r;)t[n](this,e)}}function nt(t){var e=tt(t);return function(r,n){if(i=r.classList)return n?i.add(t):i.remove(t);var i=r.getAttribute(\"class\")||\"\";n?(e.lastIndex=0,e.test(i)||r.setAttribute(\"class\",Q(i+\" \"+t))):r.setAttribute(\"class\",Q(i.replace(e,\" \")))}}function it(t,e,r){return null==e?function(){this.style.removeProperty(t)}:\"function\"==typeof e?function(){var n=e.apply(this,arguments);null==n?this.style.removeProperty(t):this.style.setProperty(t,n,r)}:function(){this.style.setProperty(t,e,r)}}function at(t,e){return null==e?function(){delete this[t]}:\"function\"==typeof e?function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}:function(){this[t]=e}}function ot(e){return\"function\"==typeof e?e:(e=t.ns.qualify(e)).local?function(){return this.ownerDocument.createElementNS(e.space,e.local)}:function(){var t=this.ownerDocument,r=this.namespaceURI;return r===$&&t.documentElement.namespaceURI===$?t.createElement(e):t.createElementNS(r,e)}}function st(){var t=this.parentNode;t&&t.removeChild(this)}function lt(t){return{__data__:t}}function ct(t){return function(){return W(this,t)}}function ut(t,e){for(var r=0,n=t.length;r<n;r++)for(var i,a=t[r],o=0,s=a.length;o<s;o++)(i=a[o])&&e(i,o,r);return t}function ft(t){return U(t,ht),t}t.ns={prefix:J,qualify:function(t){var e=t.indexOf(\":\"),r=t;return e>=0&&\"xmlns\"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),J.hasOwnProperty(r)?{space:J[r],local:t}:t}},Y.attr=function(e,r){if(arguments.length<2){if(\"string\"==typeof e){var n=this.node();return(e=t.ns.qualify(e)).local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}for(r in e)this.each(K(r,e[r]));return this}return this.each(K(e,r))},Y.classed=function(t,e){if(arguments.length<2){if(\"string\"==typeof t){var r=this.node(),n=(t=et(t)).length,i=-1;if(e=r.classList){for(;++i<n;)if(!e.contains(t[i]))return!1}else for(e=r.getAttribute(\"class\");++i<n;)if(!tt(t[i]).test(e))return!1;return!0}for(e in t)this.each(rt(e,t[e]));return this}return this.each(rt(t,e))},Y.style=function(t,e,r){var n=arguments.length;if(n<3){if(\"string\"!=typeof t){for(r in n<2&&(e=\"\"),t)this.each(it(r,t[r],e));return this}if(n<2){var i=this.node();return o(i).getComputedStyle(i,null).getPropertyValue(t)}r=\"\"}return this.each(it(t,e,r))},Y.property=function(t,e){if(arguments.length<2){if(\"string\"==typeof t)return this.node()[t];for(e in t)this.each(at(e,t[e]));return this}return this.each(at(t,e))},Y.text=function(t){return arguments.length?this.each(\"function\"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?\"\":e}:null==t?function(){this.textContent=\"\"}:function(){this.textContent=t}):this.node().textContent},Y.html=function(t){return arguments.length?this.each(\"function\"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?\"\":e}:null==t?function(){this.innerHTML=\"\"}:function(){this.innerHTML=t}):this.node().innerHTML},Y.append=function(t){return t=ot(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Y.insert=function(t,e){return t=ot(t),e=X(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Y.remove=function(){return this.each(st)},Y.data=function(t,e){var r,n,i=-1,a=this.length;if(!arguments.length){for(t=new Array(a=(r=this[0]).length);++i<a;)(n=r[i])&&(t[i]=n.__data__);return t}function o(t,r){var n,i,a,o=t.length,u=r.length,f=Math.min(o,u),h=new Array(u),p=new Array(u),d=new Array(o);if(e){var g,v=new b,m=new Array(o);for(n=-1;++n<o;)(i=t[n])&&(v.has(g=e.call(i,i.__data__,n))?d[n]=i:v.set(g,i),m[n]=g);for(n=-1;++n<u;)(i=v.get(g=e.call(r,a=r[n],n)))?!0!==i&&(h[n]=i,i.__data__=a):p[n]=lt(a),v.set(g,!0);for(n=-1;++n<o;)n in m&&!0!==v.get(m[n])&&(d[n]=t[n])}else{for(n=-1;++n<f;)i=t[n],a=r[n],i?(i.__data__=a,h[n]=i):p[n]=lt(a);for(;n<u;++n)p[n]=lt(r[n]);for(;n<o;++n)d[n]=t[n]}p.update=h,p.parentNode=h.parentNode=d.parentNode=t.parentNode,s.push(p),l.push(h),c.push(d)}var s=ft([]),l=q([]),c=q([]);if(\"function\"==typeof t)for(;++i<a;)o(r=this[i],t.call(r,r.parentNode.__data__,i));else for(;++i<a;)o(r=this[i],t);return l.enter=function(){return s},l.exit=function(){return c},l},Y.datum=function(t){return arguments.length?this.property(\"__data__\",t):this.property(\"__data__\")},Y.filter=function(t){var e,r,n,i=[];\"function\"!=typeof t&&(t=ct(t));for(var a=0,o=this.length;a<o;a++){i.push(e=[]),e.parentNode=(r=this[a]).parentNode;for(var s=0,l=r.length;s<l;s++)(n=r[s])&&t.call(n,n.__data__,s,a)&&e.push(n)}return q(i)},Y.order=function(){for(var t=-1,e=this.length;++t<e;)for(var r,n=this[t],i=n.length-1,a=n[i];--i>=0;)(r=n[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},Y.sort=function(t){t=function(t){arguments.length||(t=h);return function(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}}.apply(this,arguments);for(var e=-1,r=this.length;++e<r;)this[e].sort(t);return this.order()},Y.each=function(t){return ut(this,function(e,r,n){t.call(e,e.__data__,r,n)})},Y.call=function(t){var e=n(arguments);return t.apply(e[0]=this,e),this},Y.empty=function(){return!this.node()},Y.node=function(){for(var t=0,e=this.length;t<e;t++)for(var r=this[t],n=0,i=r.length;n<i;n++){var a=r[n];if(a)return a}return null},Y.size=function(){var t=0;return ut(this,function(){++t}),t};var ht=[];function pt(e,r,i){var a=\"__on\"+e,o=e.indexOf(\".\"),s=gt;o>0&&(e=e.slice(0,o));var l=dt.get(e);function c(){var t=this[a];t&&(this.removeEventListener(e,t,t.$),delete this[a])}return l&&(e=l,s=vt),o?r?function(){var t=s(r,n(arguments));c.call(this),this.addEventListener(e,this[a]=t,t.$=i),t._=r}:c:r?P:function(){var r,n=new RegExp(\"^__on([^.]+)\"+t.requote(e)+\"$\");for(var i in this)if(r=i.match(n)){var a=this[i];this.removeEventListener(r[1],a,a.$),delete this[i]}}}t.selection.enter=ft,t.selection.enter.prototype=ht,ht.append=Y.append,ht.empty=Y.empty,ht.node=Y.node,ht.call=Y.call,ht.size=Y.size,ht.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++s<l;){n=(i=this[s]).update,o.push(e=[]),e.parentNode=i.parentNode;for(var c=-1,u=i.length;++c<u;)(a=i[c])?(e.push(n[c]=r=t.call(i.parentNode,a.__data__,c,s)),r.__data__=a.__data__):e.push(null)}return q(o)},ht.insert=function(t,e){var r,n,i;return arguments.length<2&&(r=this,e=function(t,e,a){var o,s=r[a].update,l=s.length;for(a!=i&&(i=a,n=0),e>=n&&(n=e+1);!(o=s[n])&&++n<l;);return o}),Y.insert.call(this,t,e)},t.select=function(t){var e;return\"string\"==typeof t?(e=[H(t,i)]).parentNode=i.documentElement:(e=[t]).parentNode=a(t),q([e])},t.selectAll=function(t){var e;return\"string\"==typeof t?(e=n(G(t,i))).parentNode=i.documentElement:(e=n(t)).parentNode=null,q([e])},Y.on=function(t,e,r){var n=arguments.length;if(n<3){if(\"string\"!=typeof t){for(r in n<2&&(e=!1),t)this.each(pt(r,t[r],e));return this}if(n<2)return(n=this.node()[\"__on\"+t])&&n._;r=!1}return this.each(pt(t,e,r))};var dt=t.map({mouseenter:\"mouseover\",mouseleave:\"mouseout\"});function gt(e,r){return function(n){var i=t.event;t.event=n,r[0]=this.__data__;try{e.apply(this,r)}finally{t.event=i}}}function vt(t,e){var r=gt(t,e);return function(t){var e=t.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||r.call(this,t)}}i&&dt.forEach(function(t){\"on\"+t in i&&dt.remove(t)});var mt,yt=0;function xt(e){var r=\".dragsuppress-\"+ ++yt,n=\"click\"+r,i=t.select(o(e)).on(\"touchmove\"+r,B).on(\"dragstart\"+r,B).on(\"selectstart\"+r,B);if(null==mt&&(mt=!(\"onselectstart\"in e)&&I(e.style,\"userSelect\")),mt){var s=a(e).style,l=s[mt];s[mt]=\"none\"}return function(t){if(i.on(r,null),mt&&(s[mt]=l),t){var e=function(){i.on(n,null)};i.on(n,function(){B(),e()},!0),setTimeout(e,0)}}}t.mouse=function(t){return _t(t,N())};var bt=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function _t(e,r){r.changedTouches&&(r=r.changedTouches[0]);var n=e.ownerSVGElement||e;if(n.createSVGPoint){var i=n.createSVGPoint();if(bt<0){var a=o(e);if(a.scrollX||a.scrollY){var s=(n=t.select(\"body\").append(\"svg\").style({position:\"absolute\",top:0,left:0,margin:0,padding:0,border:\"none\"},\"important\"))[0][0].getScreenCTM();bt=!(s.f||s.e),n.remove()}}return bt?(i.x=r.pageX,i.y=r.pageY):(i.x=r.clientX,i.y=r.clientY),[(i=i.matrixTransform(e.getScreenCTM().inverse())).x,i.y]}var l=e.getBoundingClientRect();return[r.clientX-l.left-e.clientLeft,r.clientY-l.top-e.clientTop]}function wt(){return t.event.changedTouches[0].identifier}t.touch=function(t,e,r){if(arguments.length<3&&(r=e,e=N().changedTouches),e)for(var n,i=0,a=e.length;i<a;++i)if((n=e[i]).identifier===r)return _t(t,n)},t.behavior.drag=function(){var e=j(a,\"drag\",\"dragstart\",\"dragend\"),r=null,n=s(P,t.mouse,o,\"mousemove\",\"mouseup\"),i=s(wt,t.touch,z,\"touchmove\",\"touchend\");function a(){this.on(\"mousedown.drag\",n).on(\"touchstart.drag\",i)}function s(n,i,a,o,s){return function(){var l,c=t.event.target.correspondingElement||t.event.target,u=this.parentNode,f=e.of(this,arguments),h=0,p=n(),d=\".drag\"+(null==p?\"\":\"-\"+p),g=t.select(a(c)).on(o+d,function(){var t,e,r=i(u,p);if(!r)return;t=r[0]-m[0],e=r[1]-m[1],h|=t|e,m=r,f({type:\"drag\",x:r[0]+l[0],y:r[1]+l[1],dx:t,dy:e})}).on(s+d,function(){if(!i(u,p))return;g.on(o+d,null).on(s+d,null),v(h),f({type:\"dragend\"})}),v=xt(c),m=i(u,p);l=r?[(l=r.apply(this,arguments)).x-m[0],l.y-m[1]]:[0,0],f({type:\"dragstart\"})}}return a.origin=function(t){return arguments.length?(r=t,a):r},t.rebind(a,e,\"on\")},t.touches=function(t,e){return arguments.length<2&&(e=N().touches),e?n(e).map(function(e){var r=_t(t,e);return r.identifier=e.identifier,r}):[]};var kt=1e-6,At=kt*kt,Mt=Math.PI,Tt=2*Mt,St=Tt-kt,Ct=Mt/2,Et=Mt/180,Lt=180/Mt;function zt(t){return t>0?1:t<0?-1:0}function Ot(t,e,r){return(e[0]-t[0])*(r[1]-t[1])-(e[1]-t[1])*(r[0]-t[0])}function It(t){return t>1?0:t<-1?Mt:Math.acos(t)}function Dt(t){return t>1?Ct:t<-1?-Ct:Math.asin(t)}function Pt(t){return((t=Math.exp(t))+1/t)/2}function Rt(t){return(t=Math.sin(t/2))*t}var Ft=Math.SQRT2;t.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],c=e[2],u=s-i,f=l-a,h=u*u+f*f;if(h<At)n=Math.log(c/o)/Ft,r=function(t){return[i+t*u,a+t*f,o*Math.exp(Ft*t*n)]};else{var p=Math.sqrt(h),d=(c*c-o*o+4*h)/(2*o*2*p),g=(c*c-o*o-4*h)/(2*c*2*p),v=Math.log(Math.sqrt(d*d+1)-d),m=Math.log(Math.sqrt(g*g+1)-g);n=(m-v)/Ft,r=function(t){var e,r=t*n,s=Pt(v),l=o/(2*p)*(s*(e=Ft*r+v,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(v));return[i+l*u,a+l*f,o*s/Pt(Ft*r+v)]}}return r.duration=1e3*n,r},t.behavior.zoom=function(){var e,r,n,a,s,l,c,u,f,h={x:0,y:0,k:1},p=[960,500],d=jt,g=250,v=0,m=\"mousedown.zoom\",y=\"mousemove.zoom\",x=\"mouseup.zoom\",b=\"touchstart.zoom\",_=j(w,\"zoomstart\",\"zoom\",\"zoomend\");function w(t){t.on(m,z).on(Nt+\".zoom\",I).on(\"dblclick.zoom\",D).on(b,O)}function k(t){return[(t[0]-h.x)/h.k,(t[1]-h.y)/h.k]}function A(t){h.k=Math.max(d[0],Math.min(d[1],t))}function M(t,e){e=function(t){return[t[0]*h.k+h.x,t[1]*h.k+h.y]}(e),h.x+=t[0]-e[0],h.y+=t[1]-e[1]}function T(e,n,i,a){e.__chart__={x:h.x,y:h.y,k:h.k},A(Math.pow(2,a)),M(r=n,i),e=t.select(e),g>0&&(e=e.transition().duration(g)),e.call(w.event)}function S(){c&&c.domain(l.range().map(function(t){return(t-h.x)/h.k}).map(l.invert)),f&&f.domain(u.range().map(function(t){return(t-h.y)/h.k}).map(u.invert))}function C(t){v++||t({type:\"zoomstart\"})}function E(t){S(),t({type:\"zoom\",scale:h.k,translate:[h.x,h.y]})}function L(t){--v||(t({type:\"zoomend\"}),r=null)}function z(){var e=this,r=_.of(e,arguments),n=0,i=t.select(o(e)).on(y,function(){n=1,M(t.mouse(e),a),E(r)}).on(x,function(){i.on(y,null).on(x,null),s(n),L(r)}),a=k(t.mouse(e)),s=xt(e);fs.call(e),C(r)}function O(){var e,r=this,n=_.of(r,arguments),i={},a=0,o=\".zoom-\"+t.event.changedTouches[0].identifier,l=\"touchmove\"+o,c=\"touchend\"+o,u=[],f=t.select(r),p=xt(r);function d(){var n=t.touches(r);return e=h.k,n.forEach(function(t){t.identifier in i&&(i[t.identifier]=k(t))}),n}function g(){var e=t.event.target;t.select(e).on(l,v).on(c,y),u.push(e);for(var n=t.event.changedTouches,o=0,f=n.length;o<f;++o)i[n[o].identifier]=null;var p=d(),g=Date.now();if(1===p.length){if(g-s<500){var m=p[0];T(r,m,i[m.identifier],Math.floor(Math.log(h.k)/Math.LN2)+1),B()}s=g}else if(p.length>1){m=p[0];var x=p[1],b=m[0]-x[0],_=m[1]-x[1];a=b*b+_*_}}function v(){var o,l,c,u,f=t.touches(r);fs.call(r);for(var h=0,p=f.length;h<p;++h,u=null)if(c=f[h],u=i[c.identifier]){if(l)break;o=c,l=u}if(u){var d=(d=c[0]-o[0])*d+(d=c[1]-o[1])*d,g=a&&Math.sqrt(d/a);o=[(o[0]+c[0])/2,(o[1]+c[1])/2],l=[(l[0]+u[0])/2,(l[1]+u[1])/2],A(g*e)}s=null,M(o,l),E(n)}function y(){if(t.event.touches.length){for(var e=t.event.changedTouches,r=0,a=e.length;r<a;++r)delete i[e[r].identifier];for(var s in i)return void d()}t.selectAll(u).on(o,null),f.on(m,z).on(b,O),p(),L(n)}g(),C(n),f.on(m,null).on(b,g)}function I(){var i=_.of(this,arguments);a?clearTimeout(a):(fs.call(this),e=k(r=n||t.mouse(this)),C(i)),a=setTimeout(function(){a=null,L(i)},50),B(),A(Math.pow(2,.002*Bt())*h.k),M(r,e),E(i)}function D(){var e=t.mouse(this),r=Math.log(h.k)/Math.LN2;T(this,e,k(e),t.event.shiftKey?Math.ceil(r)-1:Math.floor(r)+1)}return Nt||(Nt=\"onwheel\"in i?(Bt=function(){return-t.event.deltaY*(t.event.deltaMode?120:1)},\"wheel\"):\"onmousewheel\"in i?(Bt=function(){return t.event.wheelDelta},\"mousewheel\"):(Bt=function(){return-t.event.detail},\"MozMousePixelScroll\")),w.event=function(e){e.each(function(){var e=_.of(this,arguments),n=h;ds?t.select(this).transition().each(\"start.zoom\",function(){h=this.__chart__||{x:0,y:0,k:1},C(e)}).tween(\"zoom:zoom\",function(){var i=p[0],a=p[1],o=r?r[0]:i/2,s=r?r[1]:a/2,l=t.interpolateZoom([(o-h.x)/h.k,(s-h.y)/h.k,i/h.k],[(o-n.x)/n.k,(s-n.y)/n.k,i/n.k]);return function(t){var r=l(t),n=i/r[2];this.__chart__=h={x:o-r[0]*n,y:s-r[1]*n,k:n},E(e)}}).each(\"interrupt.zoom\",function(){L(e)}).each(\"end.zoom\",function(){L(e)}):(this.__chart__=h,C(e),E(e),L(e))})},w.translate=function(t){return arguments.length?(h={x:+t[0],y:+t[1],k:h.k},S(),w):[h.x,h.y]},w.scale=function(t){return arguments.length?(h={x:h.x,y:h.y,k:null},A(+t),S(),w):h.k},w.scaleExtent=function(t){return arguments.length?(d=null==t?jt:[+t[0],+t[1]],w):d},w.center=function(t){return arguments.length?(n=t&&[+t[0],+t[1]],w):n},w.size=function(t){return arguments.length?(p=t&&[+t[0],+t[1]],w):p},w.duration=function(t){return arguments.length?(g=+t,w):g},w.x=function(t){return arguments.length?(c=t,l=t.copy(),h={x:0,y:0,k:1},w):c},w.y=function(t){return arguments.length?(f=t,u=t.copy(),h={x:0,y:0,k:1},w):f},t.rebind(w,_,\"on\")};var Bt,Nt,jt=[0,1/0];function Vt(){}function Ut(t,e,r){return this instanceof Ut?(this.h=+t,this.s=+e,void(this.l=+r)):arguments.length<2?t instanceof Ut?new Ut(t.h,t.s,t.l):ue(\"\"+t,fe,Ut):new Ut(t,e,r)}t.color=Vt,Vt.prototype.toString=function(){return this.rgb()+\"\"},t.hsl=Ut;var qt=Ut.prototype=new Vt;function Ht(t,e,r){var n,i;function a(t){return Math.round(255*function(t){return t>360?t-=360:t<0&&(t+=360),t<60?n+(i-n)*t/60:t<180?i:t<240?n+(i-n)*(240-t)/60:n}(t))}return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:e<0?0:e>1?1:e,n=2*(r=r<0?0:r>1?1:r)-(i=r<=.5?r*(1+e):r+e-r*e),new ae(a(t+120),a(t),a(t-120))}function Gt(e,r,n){return this instanceof Gt?(this.h=+e,this.c=+r,void(this.l=+n)):arguments.length<2?e instanceof Gt?new Gt(e.h,e.c,e.l):ee(e instanceof Xt?e.l:(e=he((e=t.rgb(e)).r,e.g,e.b)).l,e.a,e.b):new Gt(e,r,n)}qt.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new Ut(this.h,this.s,this.l/t)},qt.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Ut(this.h,this.s,t*this.l)},qt.rgb=function(){return Ht(this.h,this.s,this.l)},t.hcl=Gt;var Wt=Gt.prototype=new Vt;function Yt(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new Xt(r,Math.cos(t*=Et)*e,Math.sin(t)*e)}function Xt(t,e,r){return this instanceof Xt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof Xt?new Xt(t.l,t.a,t.b):t instanceof Gt?Yt(t.h,t.c,t.l):he((t=ae(t)).r,t.g,t.b):new Xt(t,e,r)}Wt.brighter=function(t){return new Gt(this.h,this.c,Math.min(100,this.l+Zt*(arguments.length?t:1)))},Wt.darker=function(t){return new Gt(this.h,this.c,Math.max(0,this.l-Zt*(arguments.length?t:1)))},Wt.rgb=function(){return Yt(this.h,this.c,this.l).rgb()},t.lab=Xt;var Zt=18,$t=.95047,Jt=1,Kt=1.08883,Qt=Xt.prototype=new Vt;function te(t,e,r){var n=(t+16)/116,i=n+e/500,a=n-r/200;return new ae(ie(3.2404542*(i=re(i)*$t)-1.5371385*(n=re(n)*Jt)-.4985314*(a=re(a)*Kt)),ie(-.969266*i+1.8760108*n+.041556*a),ie(.0556434*i-.2040259*n+1.0572252*a))}function ee(t,e,r){return t>0?new Gt(Math.atan2(r,e)*Lt,Math.sqrt(e*e+r*r),t):new Gt(NaN,NaN,t)}function re(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function ne(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function ie(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function ae(t,e,r){return this instanceof ae?(this.r=~~t,this.g=~~e,void(this.b=~~r)):arguments.length<2?t instanceof ae?new ae(t.r,t.g,t.b):ue(\"\"+t,ae,Ht):new ae(t,e,r)}function oe(t){return new ae(t>>16,t>>8&255,255&t)}function se(t){return oe(t)+\"\"}Qt.brighter=function(t){return new Xt(Math.min(100,this.l+Zt*(arguments.length?t:1)),this.a,this.b)},Qt.darker=function(t){return new Xt(Math.max(0,this.l-Zt*(arguments.length?t:1)),this.a,this.b)},Qt.rgb=function(){return te(this.l,this.a,this.b)},t.rgb=ae;var le=ae.prototype=new Vt;function ce(t){return t<16?\"0\"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function ue(t,e,r){var n,i,a,o=0,s=0,l=0;if(n=/([a-z]+)\\((.*)\\)/.exec(t=t.toLowerCase()))switch(i=n[2].split(\",\"),n[1]){case\"hsl\":return r(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case\"rgb\":return e(de(i[0]),de(i[1]),de(i[2]))}return(a=ge.get(t))?e(a.r,a.g,a.b):(null==t||\"#\"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o|=o>>4,s=240&a,s|=s>>4,l=15&a,l|=l<<4):7===t.length&&(o=(16711680&a)>>16,s=(65280&a)>>8,l=255&a)),e(o,s,l))}function fe(t,e,r){var n,i,a=Math.min(t/=255,e/=255,r/=255),o=Math.max(t,e,r),s=o-a,l=(o+a)/2;return s?(i=l<.5?s/(o+a):s/(2-o-a),n=t==o?(e-r)/s+(e<r?6:0):e==o?(r-t)/s+2:(t-e)/s+4,n*=60):(n=NaN,i=l>0&&l<1?0:n),new Ut(n,i,l)}function he(t,e,r){var n=ne((.4124564*(t=pe(t))+.3575761*(e=pe(e))+.1804375*(r=pe(r)))/$t),i=ne((.2126729*t+.7151522*e+.072175*r)/Jt);return Xt(116*i-16,500*(n-i),200*(i-ne((.0193339*t+.119192*e+.9503041*r)/Kt)))}function pe(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function de(t){var e=parseFloat(t);return\"%\"===t.charAt(t.length-1)?Math.round(2.55*e):e}le.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,r=this.g,n=this.b,i=30;return e||r||n?(e&&e<i&&(e=i),r&&r<i&&(r=i),n&&n<i&&(n=i),new ae(Math.min(255,e/t),Math.min(255,r/t),Math.min(255,n/t))):new ae(i,i,i)},le.darker=function(t){return new ae((t=Math.pow(.7,arguments.length?t:1))*this.r,t*this.g,t*this.b)},le.hsl=function(){return fe(this.r,this.g,this.b)},le.toString=function(){return\"#\"+ce(this.r)+ce(this.g)+ce(this.b)};var ge=t.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});function ve(t){return\"function\"==typeof t?t:function(){return t}}function me(t){return function(e,r,n){return 2===arguments.length&&\"function\"==typeof r&&(n=r,r=null),ye(e,r,t,n)}}function ye(e,r,i,a){var o={},s=t.dispatch(\"beforesend\",\"progress\",\"load\",\"error\"),l={},c=new XMLHttpRequest,u=null;function f(){var t,e=c.status;if(!e&&function(t){var e=t.responseType;return e&&\"text\"!==e?t.response:t.responseText}(c)||e>=200&&e<300||304===e){try{t=i.call(o,c)}catch(t){return void s.error.call(o,t)}s.load.call(o,t)}else s.error.call(o,c)}return!this.XDomainRequest||\"withCredentials\"in c||!/^(http(s)?:)?\\/\\//.test(e)||(c=new XDomainRequest),\"onload\"in c?c.onload=c.onerror=f:c.onreadystatechange=function(){c.readyState>3&&f()},c.onprogress=function(e){var r=t.event;t.event=e;try{s.progress.call(o,c)}finally{t.event=r}},o.header=function(t,e){return t=(t+\"\").toLowerCase(),arguments.length<2?l[t]:(null==e?delete l[t]:l[t]=e+\"\",o)},o.mimeType=function(t){return arguments.length?(r=null==t?null:t+\"\",o):r},o.responseType=function(t){return arguments.length?(u=t,o):u},o.response=function(t){return i=t,o},[\"get\",\"post\"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(n(arguments)))}}),o.send=function(t,n,i){if(2===arguments.length&&\"function\"==typeof n&&(i=n,n=null),c.open(t,e,!0),null==r||\"accept\"in l||(l.accept=r+\",*/*\"),c.setRequestHeader)for(var a in l)c.setRequestHeader(a,l[a]);return null!=r&&c.overrideMimeType&&c.overrideMimeType(r),null!=u&&(c.responseType=u),null!=i&&o.on(\"error\",i).on(\"load\",function(t){i(null,t)}),s.beforesend.call(o,c),c.send(null==n?null:n),o},o.abort=function(){return c.abort(),o},t.rebind(o,s,\"on\"),null==a?o:o.get(function(t){return 1===t.length?function(e,r){t(null==e?r:null)}:t}(a))}ge.forEach(function(t,e){ge.set(t,oe(e))}),t.functor=ve,t.xhr=me(z),t.dsv=function(t,e){var r=new RegExp('[\"'+t+\"\\n]\"),n=t.charCodeAt(0);function i(t,r,n){arguments.length<3&&(n=r,r=null);var i=ye(t,e,null==r?a:o(r),n);return i.row=function(t){return arguments.length?i.response(null==(r=t)?a:o(t)):r},i}function a(t){return i.parse(t.responseText)}function o(t){return function(e){return i.parse(e.responseText,t)}}function s(e){return e.map(l).join(t)}function l(t){return r.test(t)?'\"'+t.replace(/\\\"/g,'\"\"')+'\"':t}return i.parse=function(t,e){var r;return i.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function(\"d\",\"return {\"+t.map(function(t,e){return JSON.stringify(t)+\": d[\"+e+\"]\"}).join(\",\")+\"}\");r=e?function(t,r){return e(i(t),r)}:i})},i.parseRows=function(t,e){var r,i,a={},o={},s=[],l=t.length,c=0,u=0;function f(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var r=e;r++<l;)if(34===t.charCodeAt(r)){if(34!==t.charCodeAt(r+1))break;++r}return c=r+2,13===(s=t.charCodeAt(r+1))?(i=!0,10===t.charCodeAt(r+2)&&++c):10===s&&(i=!0),t.slice(e+1,r).replace(/\"\"/g,'\"')}for(;c<l;){var s,u=1;if(10===(s=t.charCodeAt(c++)))i=!0;else if(13===s)i=!0,10===t.charCodeAt(c)&&(++c,++u);else if(s!==n)continue;return t.slice(e,c-u)}return t.slice(e)}for(;(r=f())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=f();e&&null==(h=e(h,u++))||s.push(h)}return s},i.format=function(e){if(Array.isArray(e[0]))return i.formatRows(e);var r=new L,n=[];return e.forEach(function(t){for(var e in t)r.has(e)||n.push(r.add(e))}),[n.map(l).join(t)].concat(e.map(function(e){return n.map(function(t){return l(e[t])}).join(t)})).join(\"\\n\")},i.formatRows=function(t){return t.map(s).join(\"\\n\")},i},t.csv=t.dsv(\",\",\"text/csv\"),t.tsv=t.dsv(\"\\t\",\"text/tab-separated-values\");var xe,be,_e,we,ke=this[I(this,\"requestAnimationFrame\")]||function(t){setTimeout(t,17)};function Ae(t,e,r){var n=arguments.length;n<2&&(e=0),n<3&&(r=Date.now());var i={c:t,t:r+e,n:null};return be?be.n=i:xe=i,be=i,_e||(we=clearTimeout(we),_e=1,ke(Me)),i}function Me(){var t=Te(),e=Se()-t;e>24?(isFinite(e)&&(clearTimeout(we),we=setTimeout(Me,e)),_e=0):(_e=1,ke(Me))}function Te(){for(var t=Date.now(),e=xe;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Se(){for(var t,e=xe,r=1/0;e;)e.c?(e.t<r&&(r=e.t),e=(t=e).n):e=t?t.n=e.n:xe=e.n;return be=t,r}function Ce(t,e){return e-(t?Math.ceil(Math.log(t)/Math.LN10):1)}t.timer=function(){Ae.apply(this,arguments)},t.timer.flush=function(){Te(),Se()},t.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var Ee=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"].map(function(t,e){var r=Math.pow(10,3*y(8-e));return{scale:e>8?function(t){return t/r}:function(t){return t*r},symbol:t}});t.formatPrefix=function(e,r){var n=0;return(e=+e)&&(e<0&&(e*=-1),r&&(e=t.round(e,Ce(e,r))),n=1+Math.floor(1e-12+Math.log(e)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),Ee[8+n/3]};var Le=/(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i,ze=t.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(e,r){return(e=t.round(e,Ce(e,r))).toFixed(Math.max(0,Math.min(20,Ce(e*(1+1e-15),r))))}});function Oe(t){return t+\"\"}var Ie=t.time={},De=Date;function Pe(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}Pe.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Re.setUTCDate.apply(this._,arguments)},setDay:function(){Re.setUTCDay.apply(this._,arguments)},setFullYear:function(){Re.setUTCFullYear.apply(this._,arguments)},setHours:function(){Re.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Re.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Re.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Re.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Re.setUTCSeconds.apply(this._,arguments)},setTime:function(){Re.setTime.apply(this._,arguments)}};var Re=Date.prototype;function Fe(t,e,r){function n(e){var r=t(e),n=a(r,1);return e-r<n-e?r:n}function i(r){return e(r=t(new De(r-1)),1),r}function a(t,r){return e(t=new De(+t),r),t}function o(t,n,a){var o=i(t),s=[];if(a>1)for(;o<n;)r(o)%a||s.push(new Date(+o)),e(o,1);else for(;o<n;)s.push(new Date(+o)),e(o,1);return s}t.floor=t,t.round=n,t.ceil=i,t.offset=a,t.range=o;var s=t.utc=Be(t);return s.floor=s,s.round=Be(n),s.ceil=Be(i),s.offset=Be(a),s.range=function(t,e,r){try{De=Pe;var n=new Pe;return n._=t,o(n,e,r)}finally{De=Date}},t}function Be(t){return function(e,r){try{De=Pe;var n=new Pe;return n._=e,t(n,r)._}finally{De=Date}}}Ie.year=Fe(function(t){return(t=Ie.day(t)).setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),Ie.years=Ie.year.range,Ie.years.utc=Ie.year.utc.range,Ie.day=Fe(function(t){var e=new De(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),Ie.days=Ie.day.range,Ie.days.utc=Ie.day.utc.range,Ie.dayOfYear=function(t){var e=Ie.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"].forEach(function(t,e){e=7-e;var r=Ie[t]=Fe(function(t){return(t=Ie.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var r=Ie.year(t).getDay();return Math.floor((Ie.dayOfYear(t)+(r+e)%7)/7)-(r!==e)});Ie[t+\"s\"]=r.range,Ie[t+\"s\"].utc=r.utc.range,Ie[t+\"OfYear\"]=function(t){var r=Ie.year(t).getDay();return Math.floor((Ie.dayOfYear(t)+(r+e)%7)/7)}}),Ie.week=Ie.sunday,Ie.weeks=Ie.sunday.range,Ie.weeks.utc=Ie.sunday.utc.range,Ie.weekOfYear=Ie.sundayOfYear;var Ne={\"-\":\"\",_:\" \",0:\"0\"},je=/^\\s*\\d+/,Ve=/^%/;function Ue(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a<r?new Array(r-a+1).join(e)+i:i)}function qe(e){return new RegExp(\"^(?:\"+e.map(t.requote).join(\"|\")+\")\",\"i\")}function He(t){for(var e=new b,r=-1,n=t.length;++r<n;)e.set(t[r].toLowerCase(),r);return e}function Ge(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function We(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r));return n?(t.U=+n[0],r+n[0].length):-1}function Ye(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r));return n?(t.W=+n[0],r+n[0].length):-1}function Xe(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function Ze(t,e,r){je.lastIndex=0;var n,i=je.exec(e.slice(r,r+2));return i?(t.y=(n=+i[0])+(n>68?1900:2e3),r+i[0].length):-1}function $e(t,e,r){return/^[+-]\\d{4}$/.test(e=e.slice(r,r+5))?(t.Z=-e,r+5):-1}function Je(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function Ke(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function Qe(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+3));return n?(t.j=+n[0],r+n[0].length):-1}function tr(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function er(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function rr(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function nr(t,e,r){je.lastIndex=0;var n=je.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function ir(t){var e=t.getTimezoneOffset(),r=e>0?\"-\":\"+\",n=y(e)/60|0,i=y(e)%60;return r+Ue(n,\"0\",2)+Ue(i,\"0\",2)}function ar(t,e,r){Ve.lastIndex=0;var n=Ve.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function or(t){for(var e=t.length,r=-1;++r<e;)t[r][0]=this(t[r][0]);return function(e){for(var r=0,n=t[r];!n[1](e);)n=t[++r];return n[0](e)}}t.locale=function(e){return{numberFormat:function(e){var r=e.decimal,n=e.thousands,i=e.grouping,a=e.currency,o=i&&n?function(t,e){for(var r=t.length,a=[],o=0,s=i[0],l=0;r>0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),a.push(t.substring(r-=s,r+s)),!((l+=s+1)>e));)s=i[o=(o+1)%i.length];return a.reverse().join(n)}:z;return function(e){var n=Le.exec(e),i=n[1]||\" \",s=n[2]||\">\",l=n[3]||\"-\",c=n[4]||\"\",u=n[5],f=+n[6],h=n[7],p=n[8],d=n[9],g=1,v=\"\",m=\"\",y=!1,x=!0;switch(p&&(p=+p.substring(1)),(u||\"0\"===i&&\"=\"===s)&&(u=i=\"0\",s=\"=\"),d){case\"n\":h=!0,d=\"g\";break;case\"%\":g=100,m=\"%\",d=\"f\";break;case\"p\":g=100,m=\"%\",d=\"r\";break;case\"b\":case\"o\":case\"x\":case\"X\":\"#\"===c&&(v=\"0\"+d.toLowerCase());case\"c\":x=!1;case\"d\":y=!0,p=0;break;case\"s\":g=-1,d=\"r\"}\"$\"===c&&(v=a[0],m=a[1]),\"r\"!=d||p||(d=\"g\"),null!=p&&(\"g\"==d?p=Math.max(1,Math.min(21,p)):\"e\"!=d&&\"f\"!=d||(p=Math.max(0,Math.min(20,p)))),d=ze.get(d)||Oe;var b=u&&h;return function(e){var n=m;if(y&&e%1)return\"\";var a=e<0||0===e&&1/e<0?(e=-e,\"-\"):\"-\"===l?\"\":l;if(g<0){var c=t.formatPrefix(e,p);e=c.scale(e),n=c.symbol+m}else e*=g;var _,w,k=(e=d(e,p)).lastIndexOf(\".\");if(k<0){var A=x?e.lastIndexOf(\"e\"):-1;A<0?(_=e,w=\"\"):(_=e.substring(0,A),w=e.substring(A))}else _=e.substring(0,k),w=r+e.substring(k+1);!u&&h&&(_=o(_,1/0));var M=v.length+_.length+w.length+(b?0:a.length),T=M<f?new Array(M=f-M+1).join(i):\"\";return b&&(_=o(T+_,T.length?f-w.length:1/0)),a+=v,e=_+w,(\"<\"===s?a+e+T:\">\"===s?T+a+e:\"^\"===s?T.substring(0,M>>=1)+a+e+T.substring(M):a+(b?e:T+e))+n}}}(e),timeFormat:function(e){var r=e.dateTime,n=e.date,i=e.time,a=e.periods,o=e.days,s=e.shortDays,l=e.months,c=e.shortMonths;function u(t){var e=t.length;function r(r){for(var n,i,a,o=[],s=-1,l=0;++s<e;)37===t.charCodeAt(s)&&(o.push(t.slice(l,s)),null!=(i=Ne[n=t.charAt(++s)])&&(n=t.charAt(++s)),(a=_[n])&&(n=a(r,null==i?\"e\"===n?\" \":\"0\":i)),o.push(n),l=s+1);return o.push(t.slice(l,s)),o.join(\"\")}return r.parse=function(e){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null};if(f(r,t,e,0)!=e.length)return null;\"p\"in r&&(r.H=r.H%12+12*r.p);var n=null!=r.Z&&De!==Pe,i=new(n?Pe:De);return\"j\"in r?i.setFullYear(r.y,0,r.j):\"W\"in r||\"U\"in r?(\"w\"in r||(r.w=\"W\"in r?1:0),i.setFullYear(r.y,0,1),i.setFullYear(r.y,0,\"W\"in r?(r.w+6)%7+7*r.W-(i.getDay()+5)%7:r.w+7*r.U-(i.getDay()+6)%7)):i.setFullYear(r.y,r.m,r.d),i.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),n?i._:i},r.toString=function(){return t},r}function f(t,e,r,n){for(var i,a,o,s=0,l=e.length,c=r.length;s<l;){if(n>=c)return-1;if(37===(i=e.charCodeAt(s++))){if(o=e.charAt(s++),!(a=w[o in Ne?e.charAt(s++):o])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}u.utc=function(t){var e=u(t);function r(t){try{var r=new(De=Pe);return r._=t,e(r)}finally{De=Date}}return r.parse=function(t){try{De=Pe;var r=e.parse(t);return r&&r._}finally{De=Date}},r.toString=e.toString,r},u.multi=u.utc.multi=or;var h=t.map(),p=qe(o),d=He(o),g=qe(s),v=He(s),m=qe(l),y=He(l),x=qe(c),b=He(c);a.forEach(function(t,e){h.set(t.toLowerCase(),e)});var _={a:function(t){return s[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return l[t.getMonth()]},c:u(r),d:function(t,e){return Ue(t.getDate(),e,2)},e:function(t,e){return Ue(t.getDate(),e,2)},H:function(t,e){return Ue(t.getHours(),e,2)},I:function(t,e){return Ue(t.getHours()%12||12,e,2)},j:function(t,e){return Ue(1+Ie.dayOfYear(t),e,3)},L:function(t,e){return Ue(t.getMilliseconds(),e,3)},m:function(t,e){return Ue(t.getMonth()+1,e,2)},M:function(t,e){return Ue(t.getMinutes(),e,2)},p:function(t){return a[+(t.getHours()>=12)]},S:function(t,e){return Ue(t.getSeconds(),e,2)},U:function(t,e){return Ue(Ie.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Ue(Ie.mondayOfYear(t),e,2)},x:u(n),X:u(i),y:function(t,e){return Ue(t.getFullYear()%100,e,2)},Y:function(t,e){return Ue(t.getFullYear()%1e4,e,4)},Z:ir,\"%\":function(){return\"%\"}},w={a:function(t,e,r){g.lastIndex=0;var n=g.exec(e.slice(r));return n?(t.w=v.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){p.lastIndex=0;var n=p.exec(e.slice(r));return n?(t.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){x.lastIndex=0;var n=x.exec(e.slice(r));return n?(t.m=b.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){m.lastIndex=0;var n=m.exec(e.slice(r));return n?(t.m=y.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,e,r){return f(t,_.c.toString(),e,r)},d:Ke,e:Ke,H:tr,I:tr,j:Qe,L:nr,m:Je,M:er,p:function(t,e,r){var n=h.get(e.slice(r,r+=2).toLowerCase());return null==n?-1:(t.p=n,r)},S:rr,U:We,w:Ge,W:Ye,x:function(t,e,r){return f(t,_.x.toString(),e,r)},X:function(t,e,r){return f(t,_.X.toString(),e,r)},y:Ze,Y:Xe,Z:$e,\"%\":ar};return u}(e)}};var sr=t.locale({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],dateTime:\"%a %b %e %X %Y\",date:\"%m/%d/%Y\",time:\"%H:%M:%S\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});function lr(){}t.format=sr.numberFormat,t.geo={},lr.prototype={s:0,t:0,add:function(t){ur(t,this.t,cr),ur(cr.s,this.s,this),this.s?this.t+=cr.t:this.s=cr.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cr=new lr;function ur(t,e,r){var n=r.s=t+e,i=n-t,a=n-i;r.t=t-a+(e-i)}function fr(t,e){t&&pr.hasOwnProperty(t.type)&&pr[t.type](t,e)}t.geo.stream=function(t,e){t&&hr.hasOwnProperty(t.type)?hr[t.type](t,e):fr(t,e)};var hr={Feature:function(t,e){fr(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n<i;)fr(r[n].geometry,e)}},pr={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var r=t.coordinates,n=-1,i=r.length;++n<i;)t=r[n],e.point(t[0],t[1],t[2])},LineString:function(t,e){dr(t.coordinates,e,0)},MultiLineString:function(t,e){for(var r=t.coordinates,n=-1,i=r.length;++n<i;)dr(r[n],e,0)},Polygon:function(t,e){gr(t.coordinates,e)},MultiPolygon:function(t,e){for(var r=t.coordinates,n=-1,i=r.length;++n<i;)gr(r[n],e)},GeometryCollection:function(t,e){for(var r=t.geometries,n=-1,i=r.length;++n<i;)fr(r[n],e)}};function dr(t,e,r){var n,i=-1,a=t.length-r;for(e.lineStart();++i<a;)n=t[i],e.point(n[0],n[1],n[2]);e.lineEnd()}function gr(t,e){var r=-1,n=t.length;for(e.polygonStart();++r<n;)dr(t[r],e,1);e.polygonEnd()}t.geo.area=function(e){return vr=0,t.geo.stream(e,Er),vr};var vr,mr,yr,xr,br,_r,wr,kr,Ar,Mr,Tr,Sr,Cr=new lr,Er={sphere:function(){vr+=4*Mt},point:P,lineStart:P,lineEnd:P,polygonStart:function(){Cr.reset(),Er.lineStart=Lr},polygonEnd:function(){var t=2*Cr;vr+=t<0?4*Mt+t:t,Er.lineStart=Er.lineEnd=Er.point=P}};function Lr(){var t,e,r,n,i;function a(t,e){e=e*Et/2+Mt/4;var a=(t*=Et)-r,o=a>=0?1:-1,s=o*a,l=Math.cos(e),c=Math.sin(e),u=i*c,f=n*l+u*Math.cos(s),h=u*o*Math.sin(s);Cr.add(Math.atan2(h,f)),r=t,n=l,i=c}Er.point=function(o,s){Er.point=a,r=(t=o)*Et,n=Math.cos(s=(e=s)*Et/2+Mt/4),i=Math.sin(s)},Er.lineEnd=function(){a(t,e)}}function zr(t){var e=t[0],r=t[1],n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}function Or(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ir(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Dr(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Pr(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Rr(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Fr(t){return[Math.atan2(t[1],t[0]),Dt(t[2])]}function Br(t,e){return y(t[0]-e[0])<kt&&y(t[1]-e[1])<kt}t.geo.bounds=function(){var e,r,n,i,a,o,s,l,c,u,f,h={point:p,lineStart:g,lineEnd:v,polygonStart:function(){h.point=m,h.lineStart=x,h.lineEnd=b,c=0,Er.polygonStart()},polygonEnd:function(){Er.polygonEnd(),h.point=p,h.lineStart=g,h.lineEnd=v,Cr<0?(e=-(n=180),r=-(i=90)):c>kt?i=90:c<-kt&&(r=-90),f[0]=e,f[1]=n}};function p(t,a){u.push(f=[e=t,n=t]),a<r&&(r=a),a>i&&(i=a)}function d(t,o){var s=zr([t*Et,o*Et]);if(l){var c=Ir(l,s),u=Ir([c[1],-c[0],0],c);Rr(u),u=Fr(u);var f=t-a,h=f>0?1:-1,d=u[0]*Lt*h,g=y(f)>180;if(g^(h*a<d&&d<h*t))(v=u[1]*Lt)>i&&(i=v);else if(g^(h*a<(d=(d+360)%360-180)&&d<h*t)){var v;(v=-u[1]*Lt)<r&&(r=v)}else o<r&&(r=o),o>i&&(i=o);g?t<a?_(e,t)>_(e,n)&&(n=t):_(t,n)>_(e,n)&&(e=t):n>=e?(t<e&&(e=t),t>n&&(n=t)):t>a?_(e,t)>_(e,n)&&(n=t):_(t,n)>_(e,n)&&(e=t)}else p(t,o);l=s,a=t}function g(){h.point=d}function v(){f[0]=e,f[1]=n,h.point=p,l=null}function m(t,e){if(l){var r=t-a;c+=y(r)>180?r+(r>0?360:-360):r}else o=t,s=e;Er.point(t,e),d(t,e)}function x(){Er.lineStart()}function b(){m(o,s),Er.lineEnd(),y(c)>kt&&(e=-(n=180)),f[0]=e,f[1]=n,l=null}function _(t,e){return(e-=t)<0?e+360:e}function w(t,e){return t[0]-e[0]}function k(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}return function(a){if(i=n=-(e=r=1/0),u=[],t.geo.stream(a,h),c=u.length){u.sort(w);for(var o=1,s=[g=u[0]];o<c;++o)k((p=u[o])[0],g)||k(p[1],g)?(_(g[0],p[1])>_(g[0],g[1])&&(g[1]=p[1]),_(p[0],g[1])>_(g[0],g[1])&&(g[0]=p[0])):s.push(g=p);for(var l,c,p,d=-1/0,g=(o=0,s[c=s.length-1]);o<=c;g=p,++o)p=s[o],(l=_(g[1],p[0]))>d&&(d=l,e=p[0],n=g[1])}return u=f=null,e===1/0||r===1/0?[[NaN,NaN],[NaN,NaN]]:[[e,r],[n,i]]}}(),t.geo.centroid=function(e){mr=yr=xr=br=_r=wr=kr=Ar=Mr=Tr=Sr=0,t.geo.stream(e,Nr);var r=Mr,n=Tr,i=Sr,a=r*r+n*n+i*i;return a<At&&(r=wr,n=kr,i=Ar,yr<kt&&(r=xr,n=br,i=_r),(a=r*r+n*n+i*i)<At)?[NaN,NaN]:[Math.atan2(n,r)*Lt,Dt(i/Math.sqrt(a))*Lt]};var Nr={sphere:P,point:jr,lineStart:Ur,lineEnd:qr,polygonStart:function(){Nr.lineStart=Hr},polygonEnd:function(){Nr.lineStart=Ur}};function jr(t,e){t*=Et;var r=Math.cos(e*=Et);Vr(r*Math.cos(t),r*Math.sin(t),Math.sin(e))}function Vr(t,e,r){xr+=(t-xr)/++mr,br+=(e-br)/mr,_r+=(r-_r)/mr}function Ur(){var t,e,r;function n(n,i){n*=Et;var a=Math.cos(i*=Et),o=a*Math.cos(n),s=a*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*s)*c+(c=r*o-t*l)*c+(c=t*s-e*o)*c),t*o+e*s+r*l);yr+=c,wr+=c*(t+(t=o)),kr+=c*(e+(e=s)),Ar+=c*(r+(r=l)),Vr(t,e,r)}Nr.point=function(i,a){i*=Et;var o=Math.cos(a*=Et);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(a),Nr.point=n,Vr(t,e,r)}}function qr(){Nr.point=jr}function Hr(){var t,e,r,n,i;function a(t,e){t*=Et;var a=Math.cos(e*=Et),o=a*Math.cos(t),s=a*Math.sin(t),l=Math.sin(e),c=n*l-i*s,u=i*o-r*l,f=r*s-n*o,h=Math.sqrt(c*c+u*u+f*f),p=r*o+n*s+i*l,d=h&&-It(p)/h,g=Math.atan2(h,p);Mr+=d*c,Tr+=d*u,Sr+=d*f,yr+=g,wr+=g*(r+(r=o)),kr+=g*(n+(n=s)),Ar+=g*(i+(i=l)),Vr(r,n,i)}Nr.point=function(o,s){t=o,e=s,Nr.point=a,o*=Et;var l=Math.cos(s*=Et);r=l*Math.cos(o),n=l*Math.sin(o),i=Math.sin(s),Vr(r,n,i)},Nr.lineEnd=function(){a(t,e),Nr.lineEnd=qr,Nr.point=jr}}function Gr(t,e){function r(r,n){return r=t(r,n),e(r[0],r[1])}return t.invert&&e.invert&&(r.invert=function(r,n){return(r=e.invert(r,n))&&t.invert(r[0],r[1])}),r}function Wr(){return!0}function Yr(t,e,r,n,i){var a=[],o=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,r=t[0],n=t[e];if(Br(r,n)){i.lineStart();for(var s=0;s<e;++s)i.point((r=t[s])[0],r[1]);i.lineEnd()}else{var l=new Zr(r,t,null,!0),c=new Zr(r,null,l,!1);l.o=c,a.push(l),o.push(c),l=new Zr(n,t,null,!1),c=new Zr(n,null,l,!0),l.o=c,a.push(l),o.push(c)}}}),o.sort(e),Xr(a),Xr(o),a.length){for(var s=0,l=r,c=o.length;s<c;++s)o[s].e=l=!l;for(var u,f,h=a[0];;){for(var p=h,d=!0;p.v;)if((p=p.n)===h)return;u=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(d)for(s=0,c=u.length;s<c;++s)i.point((f=u[s])[0],f[1]);else n(p.x,p.n.x,1,i);p=p.n}else{if(d)for(s=(u=p.p.z).length-1;s>=0;--s)i.point((f=u[s])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function Xr(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n<e;)i.n=r=t[n],r.p=i,i=r;i.n=r=t[0],r.p=i}}function Zr(t,e,r,n){this.x=t,this.z=e,this.o=r,this.e=n,this.v=!1,this.n=this.p=null}function $r(e,r,n,i){return function(a,o){var s,l=r(o),c=a.invert(i[0],i[1]),u={point:f,lineStart:p,lineEnd:d,polygonStart:function(){u.point=b,u.lineStart=_,u.lineEnd=w,s=[],g=[]},polygonEnd:function(){u.point=f,u.lineStart=p,u.lineEnd=d,s=t.merge(s);var e=function(t,e){var r=t[0],n=t[1],i=[Math.sin(r),-Math.cos(r),0],a=0,o=0;Cr.reset();for(var s=0,l=e.length;s<l;++s){var c=e[s],u=c.length;if(u)for(var f=c[0],h=f[0],p=f[1]/2+Mt/4,d=Math.sin(p),g=Math.cos(p),v=1;;){v===u&&(v=0);var m=(t=c[v])[0],y=t[1]/2+Mt/4,x=Math.sin(y),b=Math.cos(y),_=m-h,w=_>=0?1:-1,k=w*_,A=k>Mt,M=d*x;if(Cr.add(Math.atan2(M*w*Math.sin(k),g*b+M*Math.cos(k))),a+=A?_+w*Tt:_,A^h>=r^m>=r){var T=Ir(zr(f),zr(t));Rr(T);var S=Ir(i,T);Rr(S);var C=(A^_>=0?-1:1)*Dt(S[2]);(n>C||n===C&&(T[0]||T[1]))&&(o+=A^_>=0?1:-1)}if(!v++)break;h=m,d=x,g=b,f=t}}return(a<-kt||a<kt&&Cr<-kt)^1&o}(c,g);s.length?(x||(o.polygonStart(),x=!0),Yr(s,Qr,e,n,o)):e&&(x||(o.polygonStart(),x=!0),o.lineStart(),n(null,null,1,o),o.lineEnd()),x&&(o.polygonEnd(),x=!1),s=g=null},sphere:function(){o.polygonStart(),o.lineStart(),n(null,null,1,o),o.lineEnd(),o.polygonEnd()}};function f(t,r){var n=a(t,r);e(t=n[0],r=n[1])&&o.point(t,r)}function h(t,e){var r=a(t,e);l.point(r[0],r[1])}function p(){u.point=h,l.lineStart()}function d(){u.point=f,l.lineEnd()}var g,v,m=Kr(),y=r(m),x=!1;function b(t,e){v.push([t,e]);var r=a(t,e);y.point(r[0],r[1])}function _(){y.lineStart(),v=[]}function w(){b(v[0][0],v[0][1]),y.lineEnd();var t,e=y.clean(),r=m.buffer(),n=r.length;if(v.pop(),g.push(v),v=null,n)if(1&e){var i,a=-1;if((n=(t=r[0]).length-1)>0){for(x||(o.polygonStart(),x=!0),o.lineStart();++a<n;)o.point((i=t[a])[0],i[1]);o.lineEnd()}}else n>1&&2&e&&r.push(r.pop().concat(r.shift())),s.push(r.filter(Jr))}return u}}function Jr(t){return t.length>1}function Kr(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,r){t.push([e,r])},lineEnd:P,buffer:function(){var r=e;return e=[],t=null,r},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function Qr(t,e){return((t=t.x)[0]<0?t[1]-Ct-kt:Ct-t[1])-((e=e.x)[0]<0?e[1]-Ct-kt:Ct-e[1])}var tn=$r(Wr,function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?Mt:-Mt,l=y(a-r);y(l-Mt)<kt?(t.point(r,n=(n+o)/2>0?Ct:-Ct),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(s,n),t.point(a,n),e=0):i!==s&&l>=Mt&&(y(r-i)<kt&&(r-=i*kt),y(a-s)<kt&&(a-=s*kt),n=function(t,e,r,n){var i,a,o=Math.sin(t-r);return y(o)>kt?Math.atan((Math.sin(e)*(a=Math.cos(n))*Math.sin(r)-Math.sin(n)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+n)/2}(r,n,a,o),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(s,n),e=0),t.point(r=a,n=o),i=s},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}},function(t,e,r,n){var i;if(null==t)i=r*Ct,n.point(-Mt,i),n.point(0,i),n.point(Mt,i),n.point(Mt,0),n.point(Mt,-i),n.point(0,-i),n.point(-Mt,-i),n.point(-Mt,0),n.point(-Mt,i);else if(y(t[0]-e[0])>kt){var a=t[0]<e[0]?Mt:-Mt;i=r*a/2,n.point(-a,i),n.point(0,i),n.point(a,i)}else n.point(e[0],e[1])},[-Mt,-Mt/2]);function en(t,e,r,n){return function(i){var a,o=i.a,s=i.b,l=o.x,c=o.y,u=0,f=1,h=s.x-l,p=s.y-c;if(a=t-l,h||!(a>0)){if(a/=h,h<0){if(a<u)return;a<f&&(f=a)}else if(h>0){if(a>f)return;a>u&&(u=a)}if(a=r-l,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>u&&(u=a)}else if(h>0){if(a<u)return;a<f&&(f=a)}if(a=e-c,p||!(a>0)){if(a/=p,p<0){if(a<u)return;a<f&&(f=a)}else if(p>0){if(a>f)return;a>u&&(u=a)}if(a=n-c,p||!(a<0)){if(a/=p,p<0){if(a>f)return;a>u&&(u=a)}else if(p>0){if(a<u)return;a<f&&(f=a)}return u>0&&(i.a={x:l+u*h,y:c+u*p}),f<1&&(i.b={x:l+f*h,y:c+f*p}),i}}}}}}var rn=1e9;function nn(e,r,n,i){return function(l){var c,u,f,h,p,d,g,v,m,y,x,b=l,_=Kr(),w=en(e,r,n,i),k={point:T,lineStart:function(){k.point=S,u&&u.push(f=[]);y=!0,m=!1,g=v=NaN},lineEnd:function(){c&&(S(h,p),d&&m&&_.rejoin(),c.push(_.buffer()));k.point=T,m&&l.lineEnd()},polygonStart:function(){l=_,c=[],u=[],x=!0},polygonEnd:function(){l=b,c=t.merge(c);var r=function(t){for(var e=0,r=u.length,n=t[1],i=0;i<r;++i)for(var a,o=1,s=u[i],l=s.length,c=s[0];o<l;++o)a=s[o],c[1]<=n?a[1]>n&&Ot(c,a,t)>0&&++e:a[1]<=n&&Ot(c,a,t)<0&&--e,c=a;return 0!==e}([e,i]),n=x&&r,a=c.length;(n||a)&&(l.polygonStart(),n&&(l.lineStart(),A(null,null,1,l),l.lineEnd()),a&&Yr(c,o,r,A,l),l.polygonEnd()),c=u=f=null}};function A(t,o,l,c){var u=0,f=0;if(null==t||(u=a(t,l))!==(f=a(o,l))||s(t,o)<0^l>0)do{c.point(0===u||3===u?e:n,u>1?i:r)}while((u=(u+l+4)%4)!==f);else c.point(o[0],o[1])}function M(t,a){return e<=t&&t<=n&&r<=a&&a<=i}function T(t,e){M(t,e)&&l.point(t,e)}function S(t,e){var r=M(t=Math.max(-rn,Math.min(rn,t)),e=Math.max(-rn,Math.min(rn,e)));if(u&&f.push([t,e]),y)h=t,p=e,d=r,y=!1,r&&(l.lineStart(),l.point(t,e));else if(r&&m)l.point(t,e);else{var n={a:{x:g,y:v},b:{x:t,y:e}};w(n)?(m||(l.lineStart(),l.point(n.a.x,n.a.y)),l.point(n.b.x,n.b.y),r||l.lineEnd(),x=!1):r&&(l.lineStart(),l.point(t,e),x=!1)}g=t,v=e,m=r}return k};function a(t,i){return y(t[0]-e)<kt?i>0?0:3:y(t[0]-n)<kt?i>0?2:1:y(t[1]-r)<kt?i>0?1:0:i>0?3:2}function o(t,e){return s(t.x,e.x)}function s(t,e){var r=a(t,1),n=a(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}}function an(t){var e=0,r=Mt/3,n=En(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*Mt/180,r=t[1]*Mt/180):[e/Mt*180,r/Mt*180]},i}function on(t,e){var r=Math.sin(t),n=(r+Math.sin(e))/2,i=1+r*(2*n-r),a=Math.sqrt(i)/n;function o(t,e){var r=Math.sqrt(i-2*n*Math.sin(e))/n;return[r*Math.sin(t*=n),a-r*Math.cos(t)]}return o.invert=function(t,e){var r=a-e;return[Math.atan2(t,r)/n,Dt((i-(t*t+r*r)*n*n)/(2*n))]},o}t.geo.clipExtent=function(){var t,e,r,n,i,a,o={stream:function(t){return i&&(i.valid=!1),(i=a(t)).valid=!0,i},extent:function(s){return arguments.length?(a=nn(t=+s[0][0],e=+s[0][1],r=+s[1][0],n=+s[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[r,n]]}};return o.extent([[0,0],[960,500]])},(t.geo.conicEqualArea=function(){return an(on)}).raw=on,t.geo.albers=function(){return t.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},t.geo.albersUsa=function(){var e,r,n,i,a=t.geo.albers(),o=t.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=t.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,r){e=[t,r]}};function c(t){var a=t[0],o=t[1];return e=null,r(a,o),e||(n(a,o),e)||i(a,o),e}return c.invert=function(t){var e=a.scale(),r=a.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?o:i>=.166&&i<.234&&n>=-.214&&n<-.115?s:a).invert(t)},c.stream=function(t){var e=a.stream(t),r=o.stream(t),n=s.stream(t);return{point:function(t,i){e.point(t,i),r.point(t,i),n.point(t,i)},sphere:function(){e.sphere(),r.sphere(),n.sphere()},lineStart:function(){e.lineStart(),r.lineStart(),n.lineStart()},lineEnd:function(){e.lineEnd(),r.lineEnd(),n.lineEnd()},polygonStart:function(){e.polygonStart(),r.polygonStart(),n.polygonStart()},polygonEnd:function(){e.polygonEnd(),r.polygonEnd(),n.polygonEnd()}}},c.precision=function(t){return arguments.length?(a.precision(t),o.precision(t),s.precision(t),c):a.precision()},c.scale=function(t){return arguments.length?(a.scale(t),o.scale(.35*t),s.scale(t),c.translate(a.translate())):a.scale()},c.translate=function(t){if(!arguments.length)return a.translate();var e=a.scale(),u=+t[0],f=+t[1];return r=a.translate(t).clipExtent([[u-.455*e,f-.238*e],[u+.455*e,f+.238*e]]).stream(l).point,n=o.translate([u-.307*e,f+.201*e]).clipExtent([[u-.425*e+kt,f+.12*e+kt],[u-.214*e-kt,f+.234*e-kt]]).stream(l).point,i=s.translate([u-.205*e,f+.212*e]).clipExtent([[u-.214*e+kt,f+.166*e+kt],[u-.115*e-kt,f+.234*e-kt]]).stream(l).point,c},c.scale(1070)};var sn,ln,cn,un,fn,hn,pn={point:P,lineStart:P,lineEnd:P,polygonStart:function(){ln=0,pn.lineStart=dn},polygonEnd:function(){pn.lineStart=pn.lineEnd=pn.point=P,sn+=y(ln/2)}};function dn(){var t,e,r,n;function i(t,e){ln+=n*t-r*e,r=t,n=e}pn.point=function(a,o){pn.point=i,t=r=a,e=n=o},pn.lineEnd=function(){i(t,e)}}var gn={point:function(t,e){t<cn&&(cn=t);t>fn&&(fn=t);e<un&&(un=e);e>hn&&(hn=e)},lineStart:P,lineEnd:P,polygonStart:P,polygonEnd:P};function vn(){var t=mn(4.5),e=[],r={point:n,lineStart:function(){r.point=i},lineEnd:o,polygonStart:function(){r.lineEnd=s},polygonEnd:function(){r.lineEnd=o,r.point=n},pointRadius:function(e){return t=mn(e),r},result:function(){if(e.length){var t=e.join(\"\");return e=[],t}}};function n(r,n){e.push(\"M\",r,\",\",n,t)}function i(t,n){e.push(\"M\",t,\",\",n),r.point=a}function a(t,r){e.push(\"L\",t,\",\",r)}function o(){r.point=n}function s(){e.push(\"Z\")}return r}function mn(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}var yn,xn={point:bn,lineStart:_n,lineEnd:wn,polygonStart:function(){xn.lineStart=kn},polygonEnd:function(){xn.point=bn,xn.lineStart=_n,xn.lineEnd=wn}};function bn(t,e){xr+=t,br+=e,++_r}function _n(){var t,e;function r(r,n){var i=r-t,a=n-e,o=Math.sqrt(i*i+a*a);wr+=o*(t+r)/2,kr+=o*(e+n)/2,Ar+=o,bn(t=r,e=n)}xn.point=function(n,i){xn.point=r,bn(t=n,e=i)}}function wn(){xn.point=bn}function kn(){var t,e,r,n;function i(t,e){var i=t-r,a=e-n,o=Math.sqrt(i*i+a*a);wr+=o*(r+t)/2,kr+=o*(n+e)/2,Ar+=o,Mr+=(o=n*t-r*e)*(r+t),Tr+=o*(n+e),Sr+=3*o,bn(r=t,n=e)}xn.point=function(a,o){xn.point=i,bn(t=r=a,e=n=o)},xn.lineEnd=function(){i(t,e)}}function An(t){var e=4.5,r={point:n,lineStart:function(){r.point=i},lineEnd:o,polygonStart:function(){r.lineEnd=s},polygonEnd:function(){r.lineEnd=o,r.point=n},pointRadius:function(t){return e=t,r},result:P};function n(r,n){t.moveTo(r+e,n),t.arc(r,n,e,0,Tt)}function i(e,n){t.moveTo(e,n),r.point=a}function a(e,r){t.lineTo(e,r)}function o(){r.point=n}function s(){t.closePath()}return r}function Mn(t){var e=.5,r=Math.cos(30*Et),n=16;function i(e){return(n?function(e){var r,i,o,s,l,c,u,f,h,p,d,g,v={point:m,lineStart:y,lineEnd:b,polygonStart:function(){e.polygonStart(),v.lineStart=_},polygonEnd:function(){e.polygonEnd(),v.lineStart=y}};function m(r,n){r=t(r,n),e.point(r[0],r[1])}function y(){f=NaN,v.point=x,e.lineStart()}function x(r,i){var o=zr([r,i]),s=t(r,i);a(f,h,u,p,d,g,f=s[0],h=s[1],u=r,p=o[0],d=o[1],g=o[2],n,e),e.point(f,h)}function b(){v.point=m,e.lineEnd()}function _(){y(),v.point=w,v.lineEnd=k}function w(t,e){x(r=t,e),i=f,o=h,s=p,l=d,c=g,v.point=x}function k(){a(f,h,u,p,d,g,i,o,r,s,l,c,n,e),v.lineEnd=b,b()}return v}:function(e){return Sn(e,function(r,n){r=t(r,n),e.point(r[0],r[1])})})(e)}function a(n,i,o,s,l,c,u,f,h,p,d,g,v,m){var x=u-n,b=f-i,_=x*x+b*b;if(_>4*e&&v--){var w=s+p,k=l+d,A=c+g,M=Math.sqrt(w*w+k*k+A*A),T=Math.asin(A/=M),S=y(y(A)-1)<kt||y(o-h)<kt?(o+h)/2:Math.atan2(k,w),C=t(S,T),E=C[0],L=C[1],z=E-n,O=L-i,I=b*z-x*O;(I*I/_>e||y((x*z+b*O)/_-.5)>.3||s*p+l*d+c*g<r)&&(a(n,i,o,s,l,c,E,L,S,w/=M,k/=M,A,v,m),m.point(E,L),a(E,L,S,w,k,A,u,f,h,p,d,g,v,m))}}return i.precision=function(t){return arguments.length?(n=(e=t*t)>0&&16,i):Math.sqrt(e)},i}function Tn(t){this.stream=t}function Sn(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function Cn(t){return En(function(){return t})()}function En(e){var r,n,i,a,o,s,l=Mn(function(t,e){return[(t=r(t,e))[0]*c+a,o-t[1]*c]}),c=150,u=480,f=250,h=0,p=0,d=0,g=0,v=0,m=tn,x=z,b=null,_=null;function w(t){return[(t=i(t[0]*Et,t[1]*Et))[0]*c+a,o-t[1]*c]}function k(t){return(t=i.invert((t[0]-a)/c,(o-t[1])/c))&&[t[0]*Lt,t[1]*Lt]}function A(){i=Gr(n=In(d,g,v),r);var t=r(h,p);return a=u-t[0]*c,o=f+t[1]*c,M()}function M(){return s&&(s.valid=!1,s=null),w}return w.stream=function(t){return s&&(s.valid=!1),(s=Ln(m(n,l(x(t))))).valid=!0,s},w.clipAngle=function(t){return arguments.length?(m=null==t?(b=t,tn):function(t){var e=Math.cos(t),r=e>0,n=y(e)>kt;return $r(i,function(t){var e,s,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(f,h){var p,d=[f,h],g=i(f,h),v=r?g?0:o(f,h):g?o(f+(f<0?Mt:-Mt),h):0;if(!e&&(c=l=g)&&t.lineStart(),g!==l&&(p=a(e,d),(Br(e,p)||Br(d,p))&&(d[0]+=kt,d[1]+=kt,g=i(d[0],d[1]))),g!==l)u=0,g?(t.lineStart(),p=a(d,e),t.point(p[0],p[1])):(p=a(e,d),t.point(p[0],p[1]),t.lineEnd()),e=p;else if(n&&e&&r^g){var m;v&s||!(m=a(d,e,!0))||(u=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!g||e&&Br(e,d)||t.point(d[0],d[1]),e=d,l=g,s=v},lineEnd:function(){l&&t.lineEnd(),e=null},clean:function(){return u|(c&&l)<<1}}},Fn(t,6*Et),r?[0,-t]:[-Mt,t-Mt]);function i(t,r){return Math.cos(t)*Math.cos(r)>e}function a(t,r,n){var i=[1,0,0],a=Ir(zr(t),zr(r)),o=Or(a,a),s=a[0],l=o-s*s;if(!l)return!n&&t;var c=e*o/l,u=-e*s/l,f=Ir(i,a),h=Pr(i,c);Dr(h,Pr(a,u));var p=f,d=Or(h,p),g=Or(p,p),v=d*d-g*(Or(h,h)-1);if(!(v<0)){var m=Math.sqrt(v),x=Pr(p,(-d-m)/g);if(Dr(x,h),x=Fr(x),!n)return x;var b,_=t[0],w=r[0],k=t[1],A=r[1];w<_&&(b=_,_=w,w=b);var M=w-_,T=y(M-Mt)<kt;if(!T&&A<k&&(b=k,k=A,A=b),T||M<kt?T?k+A>0^x[1]<(y(x[0]-_)<kt?k:A):k<=x[1]&&x[1]<=A:M>Mt^(_<=x[0]&&x[0]<=w)){var S=Pr(p,(-d+m)/g);return Dr(S,h),[x,Fr(S)]}}}function o(e,n){var i=r?t:Mt-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}}((b=+t)*Et),M()):b},w.clipExtent=function(t){return arguments.length?(_=t,x=t?nn(t[0][0],t[0][1],t[1][0],t[1][1]):z,M()):_},w.scale=function(t){return arguments.length?(c=+t,A()):c},w.translate=function(t){return arguments.length?(u=+t[0],f=+t[1],A()):[u,f]},w.center=function(t){return arguments.length?(h=t[0]%360*Et,p=t[1]%360*Et,A()):[h*Lt,p*Lt]},w.rotate=function(t){return arguments.length?(d=t[0]%360*Et,g=t[1]%360*Et,v=t.length>2?t[2]%360*Et:0,A()):[d*Lt,g*Lt,v*Lt]},t.rebind(w,l,\"precision\"),function(){return r=e.apply(this,arguments),w.invert=r.invert&&k,A()}}function Ln(t){return Sn(t,function(e,r){t.point(e*Et,r*Et)})}function zn(t,e){return[t,e]}function On(t,e){return[t>Mt?t-Tt:t<-Mt?t+Tt:t,e]}function In(t,e,r){return t?e||r?Gr(Pn(t),Rn(e,r)):Pn(t):e||r?Rn(e,r):On}function Dn(t){return function(e,r){return[(e+=t)>Mt?e-Tt:e<-Mt?e+Tt:e,r]}}function Pn(t){var e=Dn(t);return e.invert=Dn(-t),e}function Rn(t,e){var r=Math.cos(t),n=Math.sin(t),i=Math.cos(e),a=Math.sin(e);function o(t,e){var o=Math.cos(e),s=Math.cos(t)*o,l=Math.sin(t)*o,c=Math.sin(e),u=c*r+s*n;return[Math.atan2(l*i-u*a,s*r-c*n),Dt(u*i+l*a)]}return o.invert=function(t,e){var o=Math.cos(e),s=Math.cos(t)*o,l=Math.sin(t)*o,c=Math.sin(e),u=c*i-l*a;return[Math.atan2(l*i+c*a,s*r+u*n),Dt(u*r-s*n)]},o}function Fn(t,e){var r=Math.cos(t),n=Math.sin(t);return function(i,a,o,s){var l=o*e;null!=i?(i=Bn(r,i),a=Bn(r,a),(o>0?i<a:i>a)&&(i+=o*Tt)):(i=t+o*Tt,a=t-.5*l);for(var c,u=i;o>0?u>a:u<a;u-=l)s.point((c=Fr([r,-n*Math.cos(u),-n*Math.sin(u)]))[0],c[1])}}function Bn(t,e){var r=zr(e);r[0]-=t,Rr(r);var n=It(-r[1]);return((-r[2]<0?-n:n)+2*Math.PI-kt)%(2*Math.PI)}function Nn(e,r,n){var i=t.range(e,r-kt,n).concat(r);return function(t){return i.map(function(e){return[t,e]})}}function jn(e,r,n){var i=t.range(e,r-kt,n).concat(r);return function(t){return i.map(function(e){return[e,t]})}}function Vn(t){return t.source}function Un(t){return t.target}t.geo.path=function(){var e,r,n,i,a,o=4.5;function s(e){return e&&(\"function\"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=n(i)),t.geo.stream(e,a)),i.result()}function l(){return a=null,s}return s.area=function(e){return sn=0,t.geo.stream(e,n(pn)),sn},s.centroid=function(e){return xr=br=_r=wr=kr=Ar=Mr=Tr=Sr=0,t.geo.stream(e,n(xn)),Sr?[Mr/Sr,Tr/Sr]:Ar?[wr/Ar,kr/Ar]:_r?[xr/_r,br/_r]:[NaN,NaN]},s.bounds=function(e){return fn=hn=-(cn=un=1/0),t.geo.stream(e,n(gn)),[[cn,un],[fn,hn]]},s.projection=function(t){return arguments.length?(n=(e=t)?t.stream||(r=t,i=Mn(function(t,e){return r([t*Lt,e*Lt])}),function(t){return Ln(i(t))}):z,l()):e;var r,i},s.context=function(t){return arguments.length?(i=null==(r=t)?new vn:new An(t),\"function\"!=typeof o&&i.pointRadius(o),l()):r},s.pointRadius=function(t){return arguments.length?(o=\"function\"==typeof t?t:(i.pointRadius(+t),+t),s):o},s.projection(t.geo.albersUsa()).context(null)},t.geo.transform=function(t){return{stream:function(e){var r=new Tn(e);for(var n in t)r[n]=t[n];return r}}},Tn.prototype={point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},t.geo.projection=Cn,t.geo.projectionMutator=En,(t.geo.equirectangular=function(){return Cn(zn)}).raw=zn.invert=zn,t.geo.rotation=function(t){function e(e){return(e=t(e[0]*Et,e[1]*Et))[0]*=Lt,e[1]*=Lt,e}return t=In(t[0]%360*Et,t[1]*Et,t.length>2?t[2]*Et:0),e.invert=function(e){return(e=t.invert(e[0]*Et,e[1]*Et))[0]*=Lt,e[1]*=Lt,e},e},On.invert=zn,t.geo.circle=function(){var t,e,r=[0,0],n=6;function i(){var t=\"function\"==typeof r?r.apply(this,arguments):r,n=In(-t[0]*Et,-t[1]*Et,0).invert,i=[];return e(null,null,1,{point:function(t,e){i.push(t=n(t,e)),t[0]*=Lt,t[1]*=Lt}}),{type:\"Polygon\",coordinates:[i]}}return i.origin=function(t){return arguments.length?(r=t,i):r},i.angle=function(r){return arguments.length?(e=Fn((t=+r)*Et,n*Et),i):t},i.precision=function(r){return arguments.length?(e=Fn(t*Et,(n=+r)*Et),i):n},i.angle(90)},t.geo.distance=function(t,e){var r,n=(e[0]-t[0])*Et,i=t[1]*Et,a=e[1]*Et,o=Math.sin(n),s=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((r=f*o)*r+(r=c*u-l*f*s)*r),l*u+c*f*s)},t.geo.graticule=function(){var e,r,n,i,a,o,s,l,c,u,f,h,p=10,d=p,g=90,v=360,m=2.5;function x(){return{type:\"MultiLineString\",coordinates:b()}}function b(){return t.range(Math.ceil(i/g)*g,n,g).map(f).concat(t.range(Math.ceil(l/v)*v,s,v).map(h)).concat(t.range(Math.ceil(r/p)*p,e,p).filter(function(t){return y(t%g)>kt}).map(c)).concat(t.range(Math.ceil(o/d)*d,a,d).filter(function(t){return y(t%v)>kt}).map(u))}return x.lines=function(){return b().map(function(t){return{type:\"LineString\",coordinates:t}})},x.outline=function(){return{type:\"Polygon\",coordinates:[f(i).concat(h(s).slice(1),f(n).reverse().slice(1),h(l).reverse().slice(1))]}},x.extent=function(t){return arguments.length?x.majorExtent(t).minorExtent(t):x.minorExtent()},x.majorExtent=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],l=+t[0][1],s=+t[1][1],i>n&&(t=i,i=n,n=t),l>s&&(t=l,l=s,s=t),x.precision(m)):[[i,l],[n,s]]},x.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),x.precision(m)):[[r,o],[e,a]]},x.step=function(t){return arguments.length?x.majorStep(t).minorStep(t):x.minorStep()},x.majorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],x):[g,v]},x.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],x):[p,d]},x.precision=function(t){return arguments.length?(m=+t,c=Nn(o,a,90),u=jn(r,e,m),f=Nn(l,s,90),h=jn(i,n,m),x):m},x.majorExtent([[-180,-90+kt],[180,90-kt]]).minorExtent([[-180,-80-kt],[180,80+kt]])},t.geo.greatArc=function(){var e,r,n=Vn,i=Un;function a(){return{type:\"LineString\",coordinates:[e||n.apply(this,arguments),r||i.apply(this,arguments)]}}return a.distance=function(){return t.geo.distance(e||n.apply(this,arguments),r||i.apply(this,arguments))},a.source=function(t){return arguments.length?(n=t,e=\"function\"==typeof t?null:t,a):n},a.target=function(t){return arguments.length?(i=t,r=\"function\"==typeof t?null:t,a):i},a.precision=function(){return arguments.length?a:0},a},t.geo.interpolate=function(t,e){return r=t[0]*Et,n=t[1]*Et,i=e[0]*Et,a=e[1]*Et,o=Math.cos(n),s=Math.sin(n),l=Math.cos(a),c=Math.sin(a),u=o*Math.cos(r),f=o*Math.sin(r),h=l*Math.cos(i),p=l*Math.sin(i),d=2*Math.asin(Math.sqrt(Rt(a-n)+o*l*Rt(i-r))),g=1/Math.sin(d),(v=d?function(t){var e=Math.sin(t*=d)*g,r=Math.sin(d-t)*g,n=r*u+e*h,i=r*f+e*p,a=r*s+e*c;return[Math.atan2(i,n)*Lt,Math.atan2(a,Math.sqrt(n*n+i*i))*Lt]}:function(){return[r*Lt,n*Lt]}).distance=d,v;var r,n,i,a,o,s,l,c,u,f,h,p,d,g,v},t.geo.length=function(e){return yn=0,t.geo.stream(e,qn),yn};var qn={sphere:P,point:P,lineStart:function(){var t,e,r;function n(n,i){var a=Math.sin(i*=Et),o=Math.cos(i),s=y((n*=Et)-t),l=Math.cos(s);yn+=Math.atan2(Math.sqrt((s=o*Math.sin(s))*s+(s=r*a-e*o*l)*s),e*a+r*o*l),t=n,e=a,r=o}qn.point=function(i,a){t=i*Et,e=Math.sin(a*=Et),r=Math.cos(a),qn.point=n},qn.lineEnd=function(){qn.point=qn.lineEnd=P}},lineEnd:P,polygonStart:P,polygonEnd:P};function Hn(t,e){function r(e,r){var n=Math.cos(e),i=Math.cos(r),a=t(n*i);return[a*i*Math.sin(e),a*Math.sin(r)]}return r.invert=function(t,r){var n=Math.sqrt(t*t+r*r),i=e(n),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,n*o),Math.asin(n&&r*a/n)]},r}var Gn=Hn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(t.geo.azimuthalEqualArea=function(){return Cn(Gn)}).raw=Gn;var Wn=Hn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},z);function Yn(t,e){var r=Math.cos(t),n=function(t){return Math.tan(Mt/4+t/2)},i=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(n(e)/n(t)),a=r*Math.pow(n(t),i)/i;if(!i)return $n;function o(t,e){a>0?e<-Ct+kt&&(e=-Ct+kt):e>Ct-kt&&(e=Ct-kt);var r=a/Math.pow(n(e),i);return[r*Math.sin(i*t),a-r*Math.cos(i*t)]}return o.invert=function(t,e){var r=a-e,n=zt(i)*Math.sqrt(t*t+r*r);return[Math.atan2(t,r)/i,2*Math.atan(Math.pow(a/n,1/i))-Ct]},o}function Xn(t,e){var r=Math.cos(t),n=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),i=r/n+t;if(y(n)<kt)return zn;function a(t,e){var r=i-e;return[r*Math.sin(n*t),i-r*Math.cos(n*t)]}return a.invert=function(t,e){var r=i-e;return[Math.atan2(t,r)/n,i-zt(n)*Math.sqrt(t*t+r*r)]},a}(t.geo.azimuthalEquidistant=function(){return Cn(Wn)}).raw=Wn,(t.geo.conicConformal=function(){return an(Yn)}).raw=Yn,(t.geo.conicEquidistant=function(){return an(Xn)}).raw=Xn;var Zn=Hn(function(t){return 1/t},Math.atan);function $n(t,e){return[t,Math.log(Math.tan(Mt/4+e/2))]}function Jn(t){var e,r=Cn(t),n=r.scale,i=r.translate,a=r.clipExtent;return r.scale=function(){var t=n.apply(r,arguments);return t===r?e?r.clipExtent(null):r:t},r.translate=function(){var t=i.apply(r,arguments);return t===r?e?r.clipExtent(null):r:t},r.clipExtent=function(t){var o=a.apply(r,arguments);if(o===r){if(e=null==t){var s=Mt*n(),l=i();a([[l[0]-s,l[1]-s],[l[0]+s,l[1]+s]])}}else e&&(o=null);return o},r.clipExtent(null)}(t.geo.gnomonic=function(){return Cn(Zn)}).raw=Zn,$n.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Ct]},(t.geo.mercator=function(){return Jn($n)}).raw=$n;var Kn=Hn(function(){return 1},Math.asin);(t.geo.orthographic=function(){return Cn(Kn)}).raw=Kn;var Qn=Hn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});function ti(t,e){return[Math.log(Math.tan(Mt/4+e/2)),-t]}function ei(t){return t[0]}function ri(t){return t[1]}function ni(t){for(var e=t.length,r=[0,1],n=2,i=2;i<e;i++){for(;n>1&&Ot(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function ii(t,e){return t[0]-e[0]||t[1]-e[1]}(t.geo.stereographic=function(){return Cn(Qn)}).raw=Qn,ti.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Ct]},(t.geo.transverseMercator=function(){var t=Jn(ti),e=t.center,r=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return t?r([t[0],t[1],t.length>2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90])}).raw=ti,t.geom={},t.geom.hull=function(t){var e=ei,r=ri;if(arguments.length)return n(t);function n(t){if(t.length<3)return[];var n,i=ve(e),a=ve(r),o=t.length,s=[],l=[];for(n=0;n<o;n++)s.push([+i.call(this,t[n],n),+a.call(this,t[n],n),n]);for(s.sort(ii),n=0;n<o;n++)l.push([s[n][0],-s[n][1]]);var c=ni(s),u=ni(l),f=u[0]===c[0],h=u[u.length-1]===c[c.length-1],p=[];for(n=c.length-1;n>=0;--n)p.push(t[s[c[n]][2]]);for(n=+f;n<u.length-h;++n)p.push(t[s[u[n]][2]]);return p}return n.x=function(t){return arguments.length?(e=t,n):e},n.y=function(t){return arguments.length?(r=t,n):r},n},t.geom.polygon=function(t){return U(t,ai),t};var ai=t.geom.polygon.prototype=[];function oi(t,e,r){return(r[0]-e[0])*(t[1]-e[1])<(r[1]-e[1])*(t[0]-e[0])}function si(t,e,r,n){var i=t[0],a=r[0],o=e[0]-i,s=n[0]-a,l=t[1],c=r[1],u=e[1]-l,f=n[1]-c,h=(s*(l-c)-f*(i-a))/(f*o-s*u);return[i+h*o,l+h*u]}function li(t){var e=t[0],r=t[t.length-1];return!(e[0]-r[0]||e[1]-r[1])}ai.area=function(){for(var t,e=-1,r=this.length,n=this[r-1],i=0;++e<r;)t=n,n=this[e],i+=t[1]*n[0]-t[0]*n[1];return.5*i},ai.centroid=function(t){var e,r,n=-1,i=this.length,a=0,o=0,s=this[i-1];for(arguments.length||(t=-1/(6*this.area()));++n<i;)e=s,s=this[n],r=e[0]*s[1]-s[0]*e[1],a+=(e[0]+s[0])*r,o+=(e[1]+s[1])*r;return[a*t,o*t]},ai.clip=function(t){for(var e,r,n,i,a,o,s=li(t),l=-1,c=this.length-li(this),u=this[c-1];++l<c;){for(e=t.slice(),t.length=0,i=this[l],a=e[(n=e.length-s)-1],r=-1;++r<n;)oi(o=e[r],u,i)?(oi(a,u,i)||t.push(si(a,o,u,i)),t.push(o)):oi(a,u,i)&&t.push(si(a,o,u,i)),a=o;s&&t.push(t[0]),u=i}return t};var ci,ui,fi,hi,pi,di=[],gi=[];function vi(){Di(this),this.edge=this.site=this.circle=null}function mi(t){var e=di.pop()||new vi;return e.site=t,e}function yi(t){Si(t),fi.remove(t),di.push(t),Di(t)}function xi(t){var e=t.circle,r=e.x,n=e.cy,i={x:r,y:n},a=t.P,o=t.N,s=[t];yi(t);for(var l=a;l.circle&&y(r-l.circle.x)<kt&&y(n-l.circle.cy)<kt;)a=l.P,s.unshift(l),yi(l),l=a;s.unshift(l),Si(l);for(var c=o;c.circle&&y(r-c.circle.x)<kt&&y(n-c.circle.cy)<kt;)o=c.N,s.push(c),yi(c),c=o;s.push(c),Si(c);var u,f=s.length;for(u=1;u<f;++u)c=s[u],l=s[u-1],zi(c.edge,l.site,c.site,i);l=s[0],(c=s[f-1]).edge=Li(l.site,c.site,null,i),Ti(l),Ti(c)}function bi(t){for(var e,r,n,i,a=t.x,o=t.y,s=fi._;s;)if((n=_i(s,o)-a)>kt)s=s.L;else{if(!((i=a-wi(s,o))>kt)){n>-kt?(e=s.P,r=s):i>-kt?(e=s,r=s.N):e=r=s;break}if(!s.R){e=s;break}s=s.R}var l=mi(t);if(fi.insert(e,l),e||r){if(e===r)return Si(e),r=mi(e.site),fi.insert(l,r),l.edge=r.edge=Li(e.site,l.site),Ti(e),void Ti(r);if(r){Si(e),Si(r);var c=e.site,u=c.x,f=c.y,h=t.x-u,p=t.y-f,d=r.site,g=d.x-u,v=d.y-f,m=2*(h*v-p*g),y=h*h+p*p,x=g*g+v*v,b={x:(v*y-p*x)/m+u,y:(h*x-g*y)/m+f};zi(r.edge,c,d,b),l.edge=Li(c,t,null,b),r.edge=Li(t,d,null,b),Ti(e),Ti(r)}else l.edge=Li(e.site,l.site)}}function _i(t,e){var r=t.site,n=r.x,i=r.y,a=i-e;if(!a)return n;var o=t.P;if(!o)return-1/0;var s=(r=o.site).x,l=r.y,c=l-e;if(!c)return s;var u=s-n,f=1/a-1/c,h=u/c;return f?(-h+Math.sqrt(h*h-2*f*(u*u/(-2*c)-l+c/2+i-a/2)))/f+n:(n+s)/2}function wi(t,e){var r=t.N;if(r)return _i(r,e);var n=t.site;return n.y===e?n.x:1/0}function ki(t){this.site=t,this.edges=[]}function Ai(t,e){return e.angle-t.angle}function Mi(){Di(this),this.x=this.y=this.arc=this.site=this.cy=null}function Ti(t){var e=t.P,r=t.N;if(e&&r){var n=e.site,i=t.site,a=r.site;if(n!==a){var o=i.x,s=i.y,l=n.x-o,c=n.y-s,u=a.x-o,f=2*(l*(v=a.y-s)-c*u);if(!(f>=-At)){var h=l*l+c*c,p=u*u+v*v,d=(v*h-c*p)/f,g=(l*p-u*h)/f,v=g+s,m=gi.pop()||new Mi;m.arc=t,m.site=i,m.x=d+o,m.y=v+Math.sqrt(d*d+g*g),m.cy=v,t.circle=m;for(var y=null,x=pi._;x;)if(m.y<x.y||m.y===x.y&&m.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}pi.insert(y,m),y||(hi=m)}}}}function Si(t){var e=t.circle;e&&(e.P||(hi=e.N),pi.remove(e),gi.push(e),Di(e),t.circle=null)}function Ci(t,e){var r=t.b;if(r)return!0;var n,i,a=t.a,o=e[0][0],s=e[1][0],l=e[0][1],c=e[1][1],u=t.l,f=t.r,h=u.x,p=u.y,d=f.x,g=f.y,v=(h+d)/2,m=(p+g)/2;if(g===p){if(v<o||v>=s)return;if(h>d){if(a){if(a.y>=c)return}else a={x:v,y:l};r={x:v,y:c}}else{if(a){if(a.y<l)return}else a={x:v,y:c};r={x:v,y:l}}}else if(i=m-(n=(h-d)/(g-p))*v,n<-1||n>1)if(h>d){if(a){if(a.y>=c)return}else a={x:(l-i)/n,y:l};r={x:(c-i)/n,y:c}}else{if(a){if(a.y<l)return}else a={x:(c-i)/n,y:c};r={x:(l-i)/n,y:l}}else if(p<g){if(a){if(a.x>=s)return}else a={x:o,y:n*o+i};r={x:s,y:n*s+i}}else{if(a){if(a.x<o)return}else a={x:s,y:n*s+i};r={x:o,y:n*o+i}}return t.a=a,t.b=r,!0}function Ei(t,e){this.l=t,this.r=e,this.a=this.b=null}function Li(t,e,r,n){var i=new Ei(t,e);return ci.push(i),r&&zi(i,t,e,r),n&&zi(i,e,t,n),ui[t.i].edges.push(new Oi(i,t,e)),ui[e.i].edges.push(new Oi(i,e,t)),i}function zi(t,e,r,n){t.a||t.b?t.l===r?t.b=n:t.a=n:(t.a=n,t.l=e,t.r=r)}function Oi(t,e,r){var n=t.a,i=t.b;this.edge=t,this.site=e,this.angle=r?Math.atan2(r.y-e.y,r.x-e.x):t.l===e?Math.atan2(i.x-n.x,n.y-i.y):Math.atan2(n.x-i.x,i.y-n.y)}function Ii(){this._=null}function Di(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function Pi(t,e){var r=e,n=e.R,i=r.U;i?i.L===r?i.L=n:i.R=n:t._=n,n.U=i,r.U=n,r.R=n.L,r.R&&(r.R.U=r),n.L=r}function Ri(t,e){var r=e,n=e.L,i=r.U;i?i.L===r?i.L=n:i.R=n:t._=n,n.U=i,r.U=n,r.L=n.R,r.L&&(r.L.U=r),n.R=r}function Fi(t){for(;t.L;)t=t.L;return t}function Bi(t,e){var r,n,i,a=t.sort(Ni).pop();for(ci=[],ui=new Array(t.length),fi=new Ii,pi=new Ii;;)if(i=hi,a&&(!i||a.y<i.y||a.y===i.y&&a.x<i.x))a.x===r&&a.y===n||(ui[a.i]=new ki(a),bi(a),r=a.x,n=a.y),a=t.pop();else{if(!i)break;xi(i.arc)}e&&(function(t){for(var e,r=ci,n=en(t[0][0],t[0][1],t[1][0],t[1][1]),i=r.length;i--;)(!Ci(e=r[i],t)||!n(e)||y(e.a.x-e.b.x)<kt&&y(e.a.y-e.b.y)<kt)&&(e.a=e.b=null,r.splice(i,1))}(e),function(t){for(var e,r,n,i,a,o,s,l,c,u,f=t[0][0],h=t[1][0],p=t[0][1],d=t[1][1],g=ui,v=g.length;v--;)if((a=g[v])&&a.prepare())for(l=(s=a.edges).length,o=0;o<l;)n=(u=s[o].end()).x,i=u.y,e=(c=s[++o%l].start()).x,r=c.y,(y(n-e)>kt||y(i-r)>kt)&&(s.splice(o,0,new Oi((m=a.site,x=u,b=y(n-f)<kt&&d-i>kt?{x:f,y:y(e-f)<kt?r:d}:y(i-d)<kt&&h-n>kt?{x:y(r-d)<kt?e:h,y:d}:y(n-h)<kt&&i-p>kt?{x:h,y:y(e-h)<kt?r:p}:y(i-p)<kt&&n-f>kt?{x:y(r-p)<kt?e:f,y:p}:null,_=void 0,_=new Ei(m,null),_.a=x,_.b=b,ci.push(_),_),a.site,null)),++l);var m,x,b,_}(e));var o={cells:ui,edges:ci};return fi=pi=ci=ui=null,o}function Ni(t,e){return e.y-t.y||e.x-t.x}ki.prototype.prepare=function(){for(var t,e=this.edges,r=e.length;r--;)(t=e[r].edge).b&&t.a||e.splice(r,1);return e.sort(Ai),e.length},Oi.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},Ii.prototype={insert:function(t,e){var r,n,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;r=t}else this._?(t=Fi(this._),e.P=null,e.N=t,t.P=t.L=e,r=t):(e.P=e.N=null,this._=e,r=null);for(e.L=e.R=null,e.U=r,e.C=!0,t=e;r&&r.C;)r===(n=r.U).L?(i=n.R)&&i.C?(r.C=i.C=!1,n.C=!0,t=n):(t===r.R&&(Pi(this,r),r=(t=r).U),r.C=!1,n.C=!0,Ri(this,n)):(i=n.L)&&i.C?(r.C=i.C=!1,n.C=!0,t=n):(t===r.L&&(Ri(this,r),r=(t=r).U),r.C=!1,n.C=!0,Pi(this,n)),r=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,r,n,i=t.U,a=t.L,o=t.R;if(r=a?o?Fi(o):a:o,i?i.L===t?i.L=r:i.R=r:this._=r,a&&o?(n=r.C,r.C=t.C,r.L=a,a.U=r,r!==o?(i=r.U,r.U=t.U,t=r.R,i.L=t,r.R=o,o.U=r):(r.U=i,i=r,t=r.R)):(n=t.C,t=r),t&&(t.U=i),!n)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,Pi(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,Ri(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,Pi(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,Ri(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,Pi(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,Ri(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}},t.geom.voronoi=function(t){var e=ei,r=ri,n=e,i=r,a=ji;if(t)return o(t);function o(t){var e=new Array(t.length),r=a[0][0],n=a[0][1],i=a[1][0],o=a[1][1];return Bi(s(t),a).cells.forEach(function(a,s){var l=a.edges,c=a.site;(e[s]=l.length?l.map(function(t){var e=t.start();return[e.x,e.y]}):c.x>=r&&c.x<=i&&c.y>=n&&c.y<=o?[[r,o],[i,o],[i,n],[r,n]]:[]).point=t[s]}),e}function s(t){return t.map(function(t,e){return{x:Math.round(n(t,e)/kt)*kt,y:Math.round(i(t,e)/kt)*kt,i:e}})}return o.links=function(t){return Bi(s(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},o.triangles=function(t){var e=[];return Bi(s(t)).cells.forEach(function(r,n){for(var i,a,o,s,l=r.site,c=r.edges.sort(Ai),u=-1,f=c.length,h=c[f-1].edge,p=h.l===l?h.r:h.l;++u<f;)h,i=p,p=(h=c[u].edge).l===l?h.r:h.l,n<i.i&&n<p.i&&(o=i,s=p,((a=l).x-s.x)*(o.y-a.y)-(a.x-o.x)*(s.y-a.y)<0)&&e.push([t[n],t[i.i],t[p.i]])}),e},o.x=function(t){return arguments.length?(n=ve(e=t),o):e},o.y=function(t){return arguments.length?(i=ve(r=t),o):r},o.clipExtent=function(t){return arguments.length?(a=null==t?ji:t,o):a===ji?null:a},o.size=function(t){return arguments.length?o.clipExtent(t&&[[0,0],t]):a===ji?null:a&&a[1]},o};var ji=[[-1e6,-1e6],[1e6,1e6]];function Vi(t){return t.x}function Ui(t){return t.y}function qi(e,r){e=t.rgb(e),r=t.rgb(r);var n=e.r,i=e.g,a=e.b,o=r.r-n,s=r.g-i,l=r.b-a;return function(t){return\"#\"+ce(Math.round(n+o*t))+ce(Math.round(i+s*t))+ce(Math.round(a+l*t))}}function Hi(t,e){var r,n={},i={};for(r in t)r in e?n[r]=Zi(t[r],e[r]):i[r]=t[r];for(r in e)r in t||(i[r]=e[r]);return function(t){for(r in n)i[r]=n[r](t);return i}}function Gi(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function Wi(t,e){var r,n,i,a=Yi.lastIndex=Xi.lastIndex=0,o=-1,s=[],l=[];for(t+=\"\",e+=\"\";(r=Yi.exec(t))&&(n=Xi.exec(e));)(i=n.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:Gi(r,n)})),a=Xi.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?l[0]?(e=l[0].x,function(t){return e(t)+\"\"}):function(){return e}:(e=l.length,function(t){for(var r,n=0;n<e;++n)s[(r=l[n]).i]=r.x(t);return s.join(\"\")})}t.geom.delaunay=function(e){return t.geom.voronoi().triangles(e)},t.geom.quadtree=function(t,e,r,n,i){var a,o=ei,s=ri;if(a=arguments.length)return o=Vi,s=Ui,3===a&&(i=r,n=e,r=e=0),l(t);function l(t){var l,c,u,f,h,p,d,g,v,m=ve(o),x=ve(s);if(null!=e)p=e,d=r,g=n,v=i;else if(g=v=-(p=d=1/0),c=[],u=[],h=t.length,a)for(f=0;f<h;++f)(l=t[f]).x<p&&(p=l.x),l.y<d&&(d=l.y),l.x>g&&(g=l.x),l.y>v&&(v=l.y),c.push(l.x),u.push(l.y);else for(f=0;f<h;++f){var b=+m(l=t[f],f),_=+x(l,f);b<p&&(p=b),_<d&&(d=_),b>g&&(g=b),_>v&&(v=_),c.push(b),u.push(_)}var w=g-p,k=v-d;function A(t,e,r,n,i,a,o,s){if(!isNaN(r)&&!isNaN(n))if(t.leaf){var l=t.x,c=t.y;if(null!=l)if(y(l-r)+y(c-n)<.01)M(t,e,r,n,i,a,o,s);else{var u=t.point;t.x=t.y=t.point=null,M(t,u,l,c,i,a,o,s),M(t,e,r,n,i,a,o,s)}else t.x=r,t.y=n,t.point=e}else M(t,e,r,n,i,a,o,s)}function M(t,e,r,n,i,a,o,s){var l=.5*(i+o),c=.5*(a+s),u=r>=l,f=n>=c,h=f<<1|u;t.leaf=!1,u?i=l:o=l,f?a=c:s=c,A(t=t.nodes[h]||(t.nodes[h]={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){A(T,t,+m(t,++f),+x(t,f),p,d,g,v)}}),e,r,n,i,a,o,s)}w>k?v=d+w:g=p+k;var T={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){A(T,t,+m(t,++f),+x(t,f),p,d,g,v)}};if(T.visit=function(t){!function t(e,r,n,i,a,o){if(!e(r,n,i,a,o)){var s=.5*(n+a),l=.5*(i+o),c=r.nodes;c[0]&&t(e,c[0],n,i,s,l),c[1]&&t(e,c[1],s,i,a,l),c[2]&&t(e,c[2],n,l,s,o),c[3]&&t(e,c[3],s,l,a,o)}}(t,T,p,d,g,v)},T.find=function(t){return function(t,e,r,n,i,a,o){var s,l=1/0;return function t(c,u,f,h,p){if(!(u>a||f>o||h<n||p<i)){if(d=c.point){var d,g=e-c.x,v=r-c.y,m=g*g+v*v;if(m<l){var y=Math.sqrt(l=m);n=e-y,i=r-y,a=e+y,o=r+y,s=d}}for(var x=c.nodes,b=.5*(u+h),_=.5*(f+p),w=(r>=_)<<1|e>=b,k=w+4;w<k;++w)if(c=x[3&w])switch(3&w){case 0:t(c,u,f,b,_);break;case 1:t(c,b,f,h,_);break;case 2:t(c,u,_,b,p);break;case 3:t(c,b,_,h,p)}}}(t,n,i,a,o),s}(T,t[0],t[1],p,d,g,v)},f=-1,null==e){for(;++f<h;)A(T,t[f],c[f],u[f],p,d,g,v);--f}else t.forEach(T.add);return c=u=t=l=null,T}return l.x=function(t){return arguments.length?(o=t,l):o},l.y=function(t){return arguments.length?(s=t,l):s},l.extent=function(t){return arguments.length?(null==t?e=r=n=i=null:(e=+t[0][0],r=+t[0][1],n=+t[1][0],i=+t[1][1]),l):null==e?null:[[e,r],[n,i]]},l.size=function(t){return arguments.length?(null==t?e=r=n=i=null:(e=r=0,n=+t[0],i=+t[1]),l):null==e?null:[n-e,i-r]},l},t.interpolateRgb=qi,t.interpolateObject=Hi,t.interpolateNumber=Gi,t.interpolateString=Wi;var Yi=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,Xi=new RegExp(Yi.source,\"g\");function Zi(e,r){for(var n,i=t.interpolators.length;--i>=0&&!(n=t.interpolators[i](e,r)););return n}function $i(t,e){var r,n=[],i=[],a=t.length,o=e.length,s=Math.min(t.length,e.length);for(r=0;r<s;++r)n.push(Zi(t[r],e[r]));for(;r<a;++r)i[r]=t[r];for(;r<o;++r)i[r]=e[r];return function(t){for(r=0;r<s;++r)i[r]=n[r](t);return i}}t.interpolate=Zi,t.interpolators=[function(t,e){var r=typeof e;return(\"string\"===r?ge.has(e.toLowerCase())||/^(#|rgb\\(|hsl\\()/i.test(e)?qi:Wi:e instanceof Vt?qi:Array.isArray(e)?$i:\"object\"===r&&isNaN(e)?Hi:Gi)(t,e)}],t.interpolateArray=$i;var Ji=function(){return z},Ki=t.map({linear:Ji,poly:function(t){return function(e){return Math.pow(e,t)}},quad:function(){return ra},cubic:function(){return na},sin:function(){return aa},exp:function(){return oa},circle:function(){return sa},elastic:function(t,e){var r;arguments.length<2&&(e=.45);arguments.length?r=e/Tt*Math.asin(1/t):(t=1,r=e/4);return function(n){return 1+t*Math.pow(2,-10*n)*Math.sin((n-r)*Tt/e)}},back:function(t){t||(t=1.70158);return function(e){return e*e*((t+1)*e-t)}},bounce:function(){return la}}),Qi=t.map({in:z,out:ta,\"in-out\":ea,\"out-in\":function(t){return ea(ta(t))}});function ta(t){return function(e){return 1-t(1-e)}}function ea(t){return function(e){return.5*(e<.5?t(2*e):2-t(2-2*e))}}function ra(t){return t*t}function na(t){return t*t*t}function ia(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function aa(t){return 1-Math.cos(t*Ct)}function oa(t){return Math.pow(2,10*(t-1))}function sa(t){return 1-Math.sqrt(1-t*t)}function la(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function ca(t,e){return e-=t,function(r){return Math.round(t+e*r)}}function ua(t){var e,r,n,i=[t.a,t.b],a=[t.c,t.d],o=ha(i),s=fa(i,a),l=ha(((e=a)[0]+=(n=-s)*(r=i)[0],e[1]+=n*r[1],e))||0;i[0]*a[1]<a[0]*i[1]&&(i[0]*=-1,i[1]*=-1,o*=-1,s*=-1),this.rotate=(o?Math.atan2(i[1],i[0]):Math.atan2(-a[0],a[1]))*Lt,this.translate=[t.e,t.f],this.scale=[o,l],this.skew=l?Math.atan2(s,l)*Lt:0}function fa(t,e){return t[0]*e[0]+t[1]*e[1]}function ha(t){var e=Math.sqrt(fa(t,t));return e&&(t[0]/=e,t[1]/=e),e}t.ease=function(t){var e,n=t.indexOf(\"-\"),i=n>=0?t.slice(0,n):t,a=n>=0?t.slice(n+1):\"in\";return i=Ki.get(i)||Ji,a=Qi.get(a)||z,e=a(i.apply(null,r.call(arguments,1))),function(t){return t<=0?0:t>=1?1:e(t)}},t.interpolateHcl=function(e,r){e=t.hcl(e),r=t.hcl(r);var n=e.h,i=e.c,a=e.l,o=r.h-n,s=r.c-i,l=r.l-a;isNaN(s)&&(s=0,i=isNaN(i)?r.c:i);isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360);return function(t){return Yt(n+o*t,i+s*t,a+l*t)+\"\"}},t.interpolateHsl=function(e,r){e=t.hsl(e),r=t.hsl(r);var n=e.h,i=e.s,a=e.l,o=r.h-n,s=r.s-i,l=r.l-a;isNaN(s)&&(s=0,i=isNaN(i)?r.s:i);isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360);return function(t){return Ht(n+o*t,i+s*t,a+l*t)+\"\"}},t.interpolateLab=function(e,r){e=t.lab(e),r=t.lab(r);var n=e.l,i=e.a,a=e.b,o=r.l-n,s=r.a-i,l=r.b-a;return function(t){return te(n+o*t,i+s*t,a+l*t)+\"\"}},t.interpolateRound=ca,t.transform=function(e){var r=i.createElementNS(t.ns.prefix.svg,\"g\");return(t.transform=function(t){if(null!=t){r.setAttribute(\"transform\",t);var e=r.transform.baseVal.consolidate()}return new ua(e?e.matrix:pa)})(e)},ua.prototype.toString=function(){return\"translate(\"+this.translate+\")rotate(\"+this.rotate+\")skewX(\"+this.skew+\")scale(\"+this.scale+\")\"};var pa={a:1,b:0,c:0,d:1,e:0,f:0};function da(t){return t.length?t.pop()+\",\":\"\"}function ga(e,r){var n=[],i=[];return e=t.transform(e),r=t.transform(r),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(\"translate(\",null,\",\",null,\")\");n.push({i:i-4,x:Gi(t[0],e[0])},{i:i-2,x:Gi(t[1],e[1])})}else(e[0]||e[1])&&r.push(\"translate(\"+e+\")\")}(e.translate,r.translate,n,i),function(t,e,r,n){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(da(r)+\"rotate(\",null,\")\")-2,x:Gi(t,e)})):e&&r.push(da(r)+\"rotate(\"+e+\")\")}(e.rotate,r.rotate,n,i),function(t,e,r,n){t!==e?n.push({i:r.push(da(r)+\"skewX(\",null,\")\")-2,x:Gi(t,e)}):e&&r.push(da(r)+\"skewX(\"+e+\")\")}(e.skew,r.skew,n,i),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(da(r)+\"scale(\",null,\",\",null,\")\");n.push({i:i-4,x:Gi(t[0],e[0])},{i:i-2,x:Gi(t[1],e[1])})}else 1===e[0]&&1===e[1]||r.push(da(r)+\"scale(\"+e+\")\")}(e.scale,r.scale,n,i),e=r=null,function(t){for(var e,r=-1,a=i.length;++r<a;)n[(e=i[r]).i]=e.x(t);return n.join(\"\")}}function va(t,e){return e=(e-=t=+t)||1/e,function(r){return(r-t)/e}}function ma(t,e){return e=(e-=t=+t)||1/e,function(r){return Math.max(0,Math.min(1,(r-t)/e))}}function ya(t){for(var e=t.source,r=t.target,n=function(t,e){if(t===e)return t;var r=xa(t),n=xa(e),i=r.pop(),a=n.pop(),o=null;for(;i===a;)o=i,i=r.pop(),a=n.pop();return o}(e,r),i=[e];e!==n;)e=e.parent,i.push(e);for(var a=i.length;r!==n;)i.splice(a,0,r),r=r.parent;return i}function xa(t){for(var e=[],r=t.parent;null!=r;)e.push(t),t=r,r=r.parent;return e.push(t),e}function ba(t){t.fixed|=2}function _a(t){t.fixed&=-7}function wa(t){t.fixed|=4,t.px=t.x,t.py=t.y}function ka(t){t.fixed&=-5}t.interpolateTransform=ga,t.layout={},t.layout.bundle=function(){return function(t){for(var e=[],r=-1,n=t.length;++r<n;)e.push(ya(t[r]));return e}},t.layout.chord=function(){var e,r,n,i,a,o,s,l={},c=0;function u(){var l,u,h,p,d,g={},v=[],m=t.range(i),y=[];for(e=[],r=[],l=0,p=-1;++p<i;){for(u=0,d=-1;++d<i;)u+=n[p][d];v.push(u),y.push(t.range(i)),l+=u}for(a&&m.sort(function(t,e){return a(v[t],v[e])}),o&&y.forEach(function(t,e){t.sort(function(t,r){return o(n[e][t],n[e][r])})}),l=(Tt-c*i)/l,u=0,p=-1;++p<i;){for(h=u,d=-1;++d<i;){var x=m[p],b=y[x][d],_=n[x][b],w=u,k=u+=_*l;g[x+\"-\"+b]={index:x,subindex:b,startAngle:w,endAngle:k,value:_}}r[x]={index:x,startAngle:h,endAngle:u,value:v[x]},u+=c}for(p=-1;++p<i;)for(d=p-1;++d<i;){var A=g[p+\"-\"+d],M=g[d+\"-\"+p];(A.value||M.value)&&e.push(A.value<M.value?{source:M,target:A}:{source:A,target:M})}s&&f()}function f(){e.sort(function(t,e){return s((t.source.value+t.target.value)/2,(e.source.value+e.target.value)/2)})}return l.matrix=function(t){return arguments.length?(i=(n=t)&&n.length,e=r=null,l):n},l.padding=function(t){return arguments.length?(c=t,e=r=null,l):c},l.sortGroups=function(t){return arguments.length?(a=t,e=r=null,l):a},l.sortSubgroups=function(t){return arguments.length?(o=t,e=null,l):o},l.sortChords=function(t){return arguments.length?(s=t,e&&f(),l):s},l.chords=function(){return e||u(),e},l.groups=function(){return r||u(),r},l},t.layout.force=function(){var e,r,n,i,a,o,s={},l=t.dispatch(\"start\",\"tick\",\"end\"),c=[1,1],u=.9,f=Aa,h=Ma,p=-30,d=Ta,g=.1,v=.64,m=[],y=[];function x(t){return function(e,r,n,i){if(e.point!==t){var a=e.cx-t.x,o=e.cy-t.y,s=i-r,l=a*a+o*o;if(s*s/v<l){if(l<d){var c=e.charge/l;t.px-=a*c,t.py-=o*c}return!0}if(e.point&&l&&l<d){c=e.pointCharge/l;t.px-=a*c,t.py-=o*c}}return!e.charge}}function b(e){e.px=t.event.x,e.py=t.event.y,s.resume()}return s.tick=function(){if((n*=.99)<.005)return e=null,l.end({type:\"end\",alpha:n=0}),!0;var r,s,f,h,d,v,b,_,w,k=m.length,A=y.length;for(s=0;s<A;++s)h=(f=y[s]).source,(v=(_=(d=f.target).x-h.x)*_+(w=d.y-h.y)*w)&&(_*=v=n*a[s]*((v=Math.sqrt(v))-i[s])/v,w*=v,d.x-=_*(b=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=w*b,h.x+=_*(b=1-b),h.y+=w*b);if((b=n*g)&&(_=c[0]/2,w=c[1]/2,s=-1,b))for(;++s<k;)(f=m[s]).x+=(_-f.x)*b,f.y+=(w-f.y)*b;if(p)for(!function t(e,r,n){var i=0,a=0;e.charge=0;if(!e.leaf)for(var o,s=e.nodes,l=s.length,c=-1;++c<l;)null!=(o=s[c])&&(t(o,r,n),e.charge+=o.charge,i+=o.charge*o.cx,a+=o.charge*o.cy);if(e.point){e.leaf||(e.point.x+=Math.random()-.5,e.point.y+=Math.random()-.5);var u=r*n[e.point.index];e.charge+=e.pointCharge=u,i+=u*e.point.x,a+=u*e.point.y}e.cx=i/e.charge;e.cy=a/e.charge}(r=t.geom.quadtree(m),n,o),s=-1;++s<k;)(f=m[s]).fixed||r.visit(x(f));for(s=-1;++s<k;)(f=m[s]).fixed?(f.x=f.px,f.y=f.py):(f.x-=(f.px-(f.px=f.x))*u,f.y-=(f.py-(f.py=f.y))*u);l.tick({type:\"tick\",alpha:n})},s.nodes=function(t){return arguments.length?(m=t,s):m},s.links=function(t){return arguments.length?(y=t,s):y},s.size=function(t){return arguments.length?(c=t,s):c},s.linkDistance=function(t){return arguments.length?(f=\"function\"==typeof t?t:+t,s):f},s.distance=s.linkDistance,s.linkStrength=function(t){return arguments.length?(h=\"function\"==typeof t?t:+t,s):h},s.friction=function(t){return arguments.length?(u=+t,s):u},s.charge=function(t){return arguments.length?(p=\"function\"==typeof t?t:+t,s):p},s.chargeDistance=function(t){return arguments.length?(d=t*t,s):Math.sqrt(d)},s.gravity=function(t){return arguments.length?(g=+t,s):g},s.theta=function(t){return arguments.length?(v=t*t,s):Math.sqrt(v)},s.alpha=function(t){return arguments.length?(t=+t,n?t>0?n=t:(e.c=null,e.t=NaN,e=null,l.end({type:\"end\",alpha:n=0})):t>0&&(l.start({type:\"start\",alpha:n=t}),e=Ae(s.tick)),s):n},s.start=function(){var t,e,r,n=m.length,l=y.length,u=c[0],d=c[1];for(t=0;t<n;++t)(r=m[t]).index=t,r.weight=0;for(t=0;t<l;++t)\"number\"==typeof(r=y[t]).source&&(r.source=m[r.source]),\"number\"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;t<n;++t)r=m[t],isNaN(r.x)&&(r.x=g(\"x\",u)),isNaN(r.y)&&(r.y=g(\"y\",d)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],\"function\"==typeof f)for(t=0;t<l;++t)i[t]=+f.call(this,y[t],t);else for(t=0;t<l;++t)i[t]=f;if(a=[],\"function\"==typeof h)for(t=0;t<l;++t)a[t]=+h.call(this,y[t],t);else for(t=0;t<l;++t)a[t]=h;if(o=[],\"function\"==typeof p)for(t=0;t<n;++t)o[t]=+p.call(this,m[t],t);else for(t=0;t<n;++t)o[t]=p;function g(r,i){if(!e){for(e=new Array(n),c=0;c<n;++c)e[c]=[];for(c=0;c<l;++c){var a=y[c];e[a.source.index].push(a.target),e[a.target.index].push(a.source)}}for(var o,s=e[t],c=-1,u=s.length;++c<u;)if(!isNaN(o=s[c][r]))return o;return Math.random()*i}return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){if(r||(r=t.behavior.drag().origin(z).on(\"dragstart.force\",ba).on(\"drag.force\",b).on(\"dragend.force\",_a)),!arguments.length)return r;this.on(\"mouseover.force\",wa).on(\"mouseout.force\",ka).call(r)},t.rebind(s,l,\"on\")};var Aa=20,Ma=1,Ta=1/0;function Sa(e,r){return t.rebind(e,r,\"sort\",\"children\",\"value\"),e.nodes=e,e.links=Ia,e}function Ca(t,e){for(var r=[t];null!=(t=r.pop());)if(e(t),(i=t.children)&&(n=i.length))for(var n,i;--n>=0;)r.push(i[n])}function Ea(t,e){for(var r=[t],n=[];null!=(t=r.pop());)if(n.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++o<i;)r.push(a[o]);for(;null!=(t=n.pop());)e(t)}function La(t){return t.children}function za(t){return t.value}function Oa(t,e){return e.value-t.value}function Ia(e){return t.merge(e.map(function(t){return(t.children||[]).map(function(e){return{source:t,target:e}})}))}t.layout.hierarchy=function(){var t=Oa,e=La,r=za;function n(i){var a,o=[i],s=[];for(i.depth=0;null!=(a=o.pop());)if(s.push(a),(c=e.call(n,a,a.depth))&&(l=c.length)){for(var l,c,u;--l>=0;)o.push(u=c[l]),u.parent=a,u.depth=a.depth+1;r&&(a.value=0),a.children=c}else r&&(a.value=+r.call(n,a,a.depth)||0),delete a.children;return Ea(i,function(e){var n,i;t&&(n=e.children)&&n.sort(t),r&&(i=e.parent)&&(i.value+=e.value)}),s}return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Ca(t,function(t){t.children&&(t.value=0)}),Ea(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},t.layout.partition=function(){var e=t.layout.hierarchy(),r=[1,1];function n(t,n){var i=e.call(this,t,n);return function t(e,r,n,i){var a=e.children;if(e.x=r,e.y=e.depth*i,e.dx=n,e.dy=i,a&&(o=a.length)){var o,s,l,c=-1;for(n=e.value?n/e.value:0;++c<o;)t(s=a[c],r,l=s.value*n,i),r+=l}}(i[0],0,r[0],r[1]/function t(e){var r=e.children,n=0;if(r&&(i=r.length))for(var i,a=-1;++a<i;)n=Math.max(n,t(r[a]));return 1+n}(i[0])),i}return n.size=function(t){return arguments.length?(r=t,n):r},Sa(n,e)},t.layout.pie=function(){var e=Number,r=Da,n=0,i=Tt,a=0;function o(s){var l,c=s.length,u=s.map(function(t,r){return+e.call(o,t,r)}),f=+(\"function\"==typeof n?n.apply(this,arguments):n),h=(\"function\"==typeof i?i.apply(this,arguments):i)-f,p=Math.min(Math.abs(h)/c,+(\"function\"==typeof a?a.apply(this,arguments):a)),d=p*(h<0?-1:1),g=t.sum(u),v=g?(h-c*d)/g:0,m=t.range(c),y=[];return null!=r&&m.sort(r===Da?function(t,e){return u[e]-u[t]}:function(t,e){return r(s[t],s[e])}),m.forEach(function(t){y[t]={data:s[t],value:l=u[t],startAngle:f,endAngle:f+=l*v+d,padAngle:p}}),y}return o.value=function(t){return arguments.length?(e=t,o):e},o.sort=function(t){return arguments.length?(r=t,o):r},o.startAngle=function(t){return arguments.length?(n=t,o):n},o.endAngle=function(t){return arguments.length?(i=t,o):i},o.padAngle=function(t){return arguments.length?(a=t,o):a},o};var Da={};function Pa(t){return t.x}function Ra(t){return t.y}function Fa(t,e,r){t.y0=e,t.y=r}t.layout.stack=function(){var e=z,r=ja,n=Va,i=Fa,a=Pa,o=Ra;function s(l,c){if(!(p=l.length))return l;var u=l.map(function(t,r){return e.call(s,t,r)}),f=u.map(function(t){return t.map(function(t,e){return[a.call(s,t,e),o.call(s,t,e)]})}),h=r.call(s,f,c);u=t.permute(u,h),f=t.permute(f,h);var p,d,g,v,m=n.call(s,f,c),y=u[0].length;for(g=0;g<y;++g)for(i.call(s,u[0][g],v=m[g],f[0][g][1]),d=1;d<p;++d)i.call(s,u[d][g],v+=f[d-1][g][1],f[d][g][1]);return l}return s.values=function(t){return arguments.length?(e=t,s):e},s.order=function(t){return arguments.length?(r=\"function\"==typeof t?t:Ba.get(t)||ja,s):r},s.offset=function(t){return arguments.length?(n=\"function\"==typeof t?t:Na.get(t)||Va,s):n},s.x=function(t){return arguments.length?(a=t,s):a},s.y=function(t){return arguments.length?(o=t,s):o},s.out=function(t){return arguments.length?(i=t,s):i},s};var Ba=t.map({\"inside-out\":function(e){var r,n,i=e.length,a=e.map(Ua),o=e.map(qa),s=t.range(i).sort(function(t,e){return a[t]-a[e]}),l=0,c=0,u=[],f=[];for(r=0;r<i;++r)n=s[r],l<c?(l+=o[n],u.push(n)):(c+=o[n],f.push(n));return f.reverse().concat(u)},reverse:function(e){return t.range(e.length).reverse()},default:ja}),Na=t.map({silhouette:function(t){var e,r,n,i=t.length,a=t[0].length,o=[],s=0,l=[];for(r=0;r<a;++r){for(e=0,n=0;e<i;e++)n+=t[e][r][1];n>s&&(s=n),o.push(n)}for(r=0;r<a;++r)l[r]=(s-o[r])/2;return l},wiggle:function(t){var e,r,n,i,a,o,s,l,c,u=t.length,f=t[0],h=f.length,p=[];for(p[0]=l=c=0,r=1;r<h;++r){for(e=0,i=0;e<u;++e)i+=t[e][r][1];for(e=0,a=0,s=f[r][0]-f[r-1][0];e<u;++e){for(n=0,o=(t[e][r][1]-t[e][r-1][1])/(2*s);n<e;++n)o+=(t[n][r][1]-t[n][r-1][1])/s;a+=o*t[e][r][1]}p[r]=l-=i?a/i*s:0,l<c&&(c=l)}for(r=0;r<h;++r)p[r]-=c;return p},expand:function(t){var e,r,n,i=t.length,a=t[0].length,o=1/i,s=[];for(r=0;r<a;++r){for(e=0,n=0;e<i;e++)n+=t[e][r][1];if(n)for(e=0;e<i;e++)t[e][r][1]/=n;else for(e=0;e<i;e++)t[e][r][1]=o}for(r=0;r<a;++r)s[r]=0;return s},zero:Va});function ja(e){return t.range(e.length)}function Va(t){for(var e=-1,r=t[0].length,n=[];++e<r;)n[e]=0;return n}function Ua(t){for(var e,r=1,n=0,i=t[0][1],a=t.length;r<a;++r)(e=t[r][1])>i&&(n=r,i=e);return n}function qa(t){return t.reduce(Ha,0)}function Ha(t,e){return t+e[1]}function Ga(t,e){return Wa(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Wa(t,e){for(var r=-1,n=+t[0],i=(t[1]-n)/e,a=[];++r<=e;)a[r]=i*r+n;return a}function Ya(e){return[t.min(e),t.max(e)]}function Xa(t,e){return t.value-e.value}function Za(t,e){var r=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=r,r._pack_prev=e}function $a(t,e){t._pack_next=e,e._pack_prev=t}function Ja(t,e){var r=e.x-t.x,n=e.y-t.y,i=t.r+e.r;return.999*i*i>r*r+n*n}function Ka(t){if((e=t.children)&&(l=e.length)){var e,r,n,i,a,o,s,l,c=1/0,u=-1/0,f=1/0,h=-1/0;if(e.forEach(Qa),(r=e[0]).x=-r.r,r.y=0,x(r),l>1&&((n=e[1]).x=n.r,n.y=0,x(n),l>2))for(eo(r,n,i=e[2]),x(i),Za(r,i),r._pack_prev=i,Za(i,n),n=r._pack_next,a=3;a<l;a++){eo(r,n,i=e[a]);var p=0,d=1,g=1;for(o=n._pack_next;o!==n;o=o._pack_next,d++)if(Ja(o,i)){p=1;break}if(1==p)for(s=r._pack_prev;s!==o._pack_prev&&!Ja(s,i);s=s._pack_prev,g++);p?(d<g||d==g&&n.r<r.r?$a(r,n=o):$a(r=s,n),a--):(Za(r,i),n=i,x(i))}var v=(c+u)/2,m=(f+h)/2,y=0;for(a=0;a<l;a++)(i=e[a]).x-=v,i.y-=m,y=Math.max(y,i.r+Math.sqrt(i.x*i.x+i.y*i.y));t.r=y,e.forEach(to)}function x(t){c=Math.min(t.x-t.r,c),u=Math.max(t.x+t.r,u),f=Math.min(t.y-t.r,f),h=Math.max(t.y+t.r,h)}}function Qa(t){t._pack_next=t._pack_prev=t}function to(t){delete t._pack_next,delete t._pack_prev}function eo(t,e,r){var n=t.r+r.r,i=e.x-t.x,a=e.y-t.y;if(n&&(i||a)){var o=e.r+r.r,s=i*i+a*a,l=.5+((n*=n)-(o*=o))/(2*s),c=Math.sqrt(Math.max(0,2*o*(n+s)-(n-=s)*n-o*o))/(2*s);r.x=t.x+l*i+c*a,r.y=t.y+l*a-c*i}else r.x=t.x+n,r.y=t.y}function ro(t,e){return t.parent==e.parent?1:2}function no(t){var e=t.children;return e.length?e[0]:t.t}function io(t){var e,r=t.children;return(e=r.length)?r[e-1]:t.t}function ao(t,e,r){var n=r/(e.i-t.i);e.c-=n,e.s+=r,t.c+=n,e.z+=r,e.m+=r}function oo(t,e,r){return t.a.parent===e.parent?t.a:r}function so(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function lo(t,e){var r=t.x+e[3],n=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return i<0&&(r+=i/2,i=0),a<0&&(n+=a/2,a=0),{x:r,y:n,dx:i,dy:a}}function co(t){var e=t[0],r=t[t.length-1];return e<r?[e,r]:[r,e]}function uo(t){return t.rangeExtent?t.rangeExtent():co(t.range())}function fo(t,e,r,n){var i=r(t[0],t[1]),a=n(e[0],e[1]);return function(t){return a(i(t))}}function ho(t,e){var r,n=0,i=t.length-1,a=t[n],o=t[i];return o<a&&(r=n,n=i,i=r,r=a,a=o,o=r),t[n]=e.floor(a),t[i]=e.ceil(o),t}function po(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:go}t.layout.histogram=function(){var e=!0,r=Number,n=Ya,i=Ga;function a(a,o){for(var s,l,c=[],u=a.map(r,this),f=n.call(this,u,o),h=i.call(this,f,u,o),p=(o=-1,u.length),d=h.length-1,g=e?1:1/p;++o<d;)(s=c[o]=[]).dx=h[o+1]-(s.x=h[o]),s.y=0;if(d>0)for(o=-1;++o<p;)(l=u[o])>=f[0]&&l<=f[1]&&((s=c[t.bisect(h,l,1,d)-1]).y+=g,s.push(a[o]));return c}return a.value=function(t){return arguments.length?(r=t,a):r},a.range=function(t){return arguments.length?(n=ve(t),a):n},a.bins=function(t){return arguments.length?(i=\"number\"==typeof t?function(e){return Wa(e,t)}:ve(t),a):i},a.frequency=function(t){return arguments.length?(e=!!t,a):e},a},t.layout.pack=function(){var e,r=t.layout.hierarchy().sort(Xa),n=0,i=[1,1];function a(t,a){var o=r.call(this,t,a),s=o[0],l=i[0],c=i[1],u=null==e?Math.sqrt:\"function\"==typeof e?e:function(){return e};if(s.x=s.y=0,Ea(s,function(t){t.r=+u(t.value)}),Ea(s,Ka),n){var f=n*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;Ea(s,function(t){t.r+=f}),Ea(s,Ka),Ea(s,function(t){t.r-=f})}return function t(e,r,n,i){var a=e.children;e.x=r+=i*e.x;e.y=n+=i*e.y;e.r*=i;if(a)for(var o=-1,s=a.length;++o<s;)t(a[o],r,n,i)}(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),o}return a.size=function(t){return arguments.length?(i=t,a):i},a.radius=function(t){return arguments.length?(e=null==t||\"function\"==typeof t?t:+t,a):e},a.padding=function(t){return arguments.length?(n=+t,a):n},Sa(a,r)},t.layout.tree=function(){var e=t.layout.hierarchy().sort(null).value(null),r=ro,n=[1,1],i=null;function a(t,a){var c=e.call(this,t,a),u=c[0],f=function(t){var e,r={A:null,children:[t]},n=[r];for(;null!=(e=n.pop());)for(var i,a=e.children,o=0,s=a.length;o<s;++o)n.push((a[o]=i={_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return r.children[0]}(u);if(Ea(f,o),f.parent.m=-f.z,Ca(f,s),i)Ca(u,l);else{var h=u,p=u,d=u;Ca(u,function(t){t.x<h.x&&(h=t),t.x>p.x&&(p=t),t.depth>d.depth&&(d=t)});var g=r(h,p)/2-h.x,v=n[0]/(p.x+r(p,h)/2+g),m=n[1]/(d.depth||1);Ca(u,function(t){t.x=(t.x+g)*v,t.y=t.depth*m})}return c}function o(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){!function(t){var e,r=0,n=0,i=t.children,a=i.length;for(;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(t);var a=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+r(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+r(t._,i._));t.parent.A=function(t,e,n){if(e){for(var i,a=t,o=t,s=e,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=io(s),a=no(a),s&&a;)l=no(l),(o=io(o)).a=t,(i=s.z+f-a.z-c+r(s._,a._))>0&&(ao(oo(s,t,n),t,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!io(o)&&(o.t=s,o.m+=f-u),a&&!no(l)&&(l.t=a,l.m+=c-h,n=t)}return n}(t,i,t.parent.A||n[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function l(t){t.x*=n[0],t.y=t.depth*n[1]}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t)?l:null,a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null==(n=t)?null:l,a):i?n:null},Sa(a,e)},t.layout.cluster=function(){var e=t.layout.hierarchy().sort(null).value(null),r=ro,n=[1,1],i=!1;function a(a,o){var s,l=e.call(this,a,o),c=l[0],u=0;Ea(c,function(e){var n=e.children;n&&n.length?(e.x=function(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}(n),e.y=function(e){return 1+t.max(e,function(t){return t.y})}(n)):(e.x=s?u+=r(e,s):0,e.y=0,s=e)});var f=function t(e){var r=e.children;return r&&r.length?t(r[0]):e}(c),h=function t(e){var r,n=e.children;return n&&(r=n.length)?t(n[r-1]):e}(c),p=f.x-r(f,h)/2,d=h.x+r(h,f)/2;return Ea(c,i?function(t){t.x=(t.x-c.x)*n[0],t.y=(c.y-t.y)*n[1]}:function(t){t.x=(t.x-p)/(d-p)*n[0],t.y=(1-(c.y?t.y/c.y:1))*n[1]}),l}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t),a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null!=(n=t),a):i?n:null},Sa(a,e)},t.layout.treemap=function(){var e,r=t.layout.hierarchy(),n=Math.round,i=[1,1],a=null,o=so,s=!1,l=\"squarify\",c=.5*(1+Math.sqrt(5));function u(t,e){for(var r,n,i=-1,a=t.length;++i<a;)n=(r=t[i]).value*(e<0?0:e),r.area=isNaN(n)||n<=0?0:n}function f(t){var e=t.children;if(e&&e.length){var r,n,i,a=o(t),s=[],c=e.slice(),h=1/0,g=\"slice\"===l?a.dx:\"dice\"===l?a.dy:\"slice-dice\"===l?1&t.depth?a.dy:a.dx:Math.min(a.dx,a.dy);for(u(c,a.dx*a.dy/t.value),s.area=0;(i=c.length)>0;)s.push(r=c[i-1]),s.area+=r.area,\"squarify\"!==l||(n=p(s,g))<=h?(c.pop(),h=n):(s.area-=s.pop().area,d(s,g,a,!1),g=Math.min(a.dx,a.dy),s.length=s.area=0,h=1/0);s.length&&(d(s,g,a,!0),s.length=s.area=0),e.forEach(f)}}function h(t){var e=t.children;if(e&&e.length){var r,n=o(t),i=e.slice(),a=[];for(u(i,n.dx*n.dy/t.value),a.area=0;r=i.pop();)a.push(r),a.area+=r.area,null!=r.z&&(d(a,r.z?n.dx:n.dy,n,!i.length),a.length=a.area=0);e.forEach(h)}}function p(t,e){for(var r,n=t.area,i=0,a=1/0,o=-1,s=t.length;++o<s;)(r=t[o].area)&&(r<a&&(a=r),r>i&&(i=r));return e*=e,(n*=n)?Math.max(e*i*c/n,n/(e*a*c)):1/0}function d(t,e,r,i){var a,o=-1,s=t.length,l=r.x,c=r.y,u=e?n(t.area/e):0;if(e==r.dx){for((i||u>r.dy)&&(u=r.dy);++o<s;)(a=t[o]).x=l,a.y=c,a.dy=u,l+=a.dx=Math.min(r.x+r.dx-l,u?n(a.area/u):0);a.z=!0,a.dx+=r.x+r.dx-l,r.y+=u,r.dy-=u}else{for((i||u>r.dx)&&(u=r.dx);++o<s;)(a=t[o]).x=l,a.y=c,a.dx=u,c+=a.dy=Math.min(r.y+r.dy-c,u?n(a.area/u):0);a.z=!1,a.dy+=r.y+r.dy-c,r.x+=u,r.dx-=u}}function g(t){var n=e||r(t),a=n[0];return a.x=a.y=0,a.value?(a.dx=i[0],a.dy=i[1]):a.dx=a.dy=0,e&&r.revalue(a),u([a],a.dx*a.dy/a.value),(e?h:f)(a),s&&(e=n),n}return g.size=function(t){return arguments.length?(i=t,g):i},g.padding=function(t){if(!arguments.length)return a;function e(e){return lo(e,t)}var r;return o=null==(a=t)?so:\"function\"==(r=typeof t)?function(e){var r=t.call(g,e,e.depth);return null==r?so(e):lo(e,\"number\"==typeof r?[r,r,r,r]:r)}:\"number\"===r?(t=[t,t,t,t],e):e,g},g.round=function(t){return arguments.length?(n=t?Math.round:Number,g):n!=Number},g.sticky=function(t){return arguments.length?(s=t,e=null,g):s},g.ratio=function(t){return arguments.length?(c=t,g):c},g.mode=function(t){return arguments.length?(l=t+\"\",g):l},Sa(g,r)},t.random={normal:function(t,e){var r=arguments.length;return r<2&&(e=1),r<1&&(t=0),function(){var r,n,i;do{i=(r=2*Math.random()-1)*r+(n=2*Math.random()-1)*n}while(!i||i>1);return t+e*r*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var e=t.random.normal.apply(t,arguments);return function(){return Math.exp(e())}},bates:function(e){var r=t.random.irwinHall(e);return function(){return r()/e}},irwinHall:function(t){return function(){for(var e=0,r=0;r<t;r++)e+=Math.random();return e}}},t.scale={};var go={floor:z,ceil:z};function vo(e,r,n,i){var a=[],o=[],s=0,l=Math.min(e.length,r.length)-1;for(e[l]<e[0]&&(e=e.slice().reverse(),r=r.slice().reverse());++s<=l;)a.push(n(e[s-1],e[s])),o.push(i(r[s-1],r[s]));return function(r){var n=t.bisect(e,r,1,l)-1;return o[n](a[n](r))}}function mo(e,r){return t.rebind(e,r,\"range\",\"rangeRound\",\"interpolate\",\"clamp\")}function yo(t,e){return ho(t,po(xo(t,e)[2])),ho(t,po(xo(t,e)[2])),t}function xo(t,e){null==e&&(e=10);var r=co(t),n=r[1]-r[0],i=Math.pow(10,Math.floor(Math.log(n/e)/Math.LN10)),a=e/n*i;return a<=.15?i*=10:a<=.35?i*=5:a<=.75&&(i*=2),r[0]=Math.ceil(r[0]/i)*i,r[1]=Math.floor(r[1]/i)*i+.5*i,r[2]=i,r}function bo(e,r){return t.range.apply(t,xo(e,r))}function _o(e,r,n){var i=xo(e,r);if(n){var a=Le.exec(n);if(a.shift(),\"s\"===a[8]){var o=t.formatPrefix(Math.max(y(i[0]),y(i[1])));return a[7]||(a[7]=\".\"+ko(o.scale(i[2]))),a[8]=\"f\",n=t.format(a.join(\"\")),function(t){return n(o.scale(t))+o.symbol}}a[7]||(a[7]=\".\"+function(t,e){var r=ko(e[2]);return t in wo?Math.abs(r-ko(Math.max(y(e[0]),y(e[1]))))+ +(\"e\"!==t):r-2*(\"%\"===t)}(a[8],i)),n=a.join(\"\")}else n=\",.\"+ko(i[2])+\"f\";return t.format(n)}t.scale.linear=function(){return function t(e,r,n,i){var a,o;function s(){var t=Math.min(e.length,r.length)>2?vo:fo,s=i?ma:va;return a=t(e,r,s,n),o=t(r,e,s,Zi),l}function l(t){return a(t)}l.invert=function(t){return o(t)};l.domain=function(t){return arguments.length?(e=t.map(Number),s()):e};l.range=function(t){return arguments.length?(r=t,s()):r};l.rangeRound=function(t){return l.range(t).interpolate(ca)};l.clamp=function(t){return arguments.length?(i=t,s()):i};l.interpolate=function(t){return arguments.length?(n=t,s()):n};l.ticks=function(t){return bo(e,t)};l.tickFormat=function(t,r){return _o(e,t,r)};l.nice=function(t){return yo(e,t),s()};l.copy=function(){return t(e,r,n,i)};return s()}([0,1],[0,1],Zi,!1)};var wo={s:1,g:1,p:1,r:1,e:1};function ko(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}t.scale.log=function(){return function e(r,n,i,a){function o(t){return(i?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(n)}function s(t){return i?Math.pow(n,t):-Math.pow(n,-t)}function l(t){return r(o(t))}l.invert=function(t){return s(r.invert(t))};l.domain=function(t){return arguments.length?(i=t[0]>=0,r.domain((a=t.map(Number)).map(o)),l):a};l.base=function(t){return arguments.length?(n=+t,r.domain(a.map(o)),l):n};l.nice=function(){var t=ho(a.map(o),i?Math:Mo);return r.domain(t),a=t.map(s),l};l.ticks=function(){var t=co(a),e=[],r=t[0],l=t[1],c=Math.floor(o(r)),u=Math.ceil(o(l)),f=n%1?2:n;if(isFinite(u-c)){if(i){for(;c<u;c++)for(var h=1;h<f;h++)e.push(s(c)*h);e.push(s(c))}else for(e.push(s(c));c++<u;)for(var h=f-1;h>0;h--)e.push(s(c)*h);for(c=0;e[c]<r;c++);for(u=e.length;e[u-1]>l;u--);e=e.slice(c,u)}return e};l.tickFormat=function(e,r){if(!arguments.length)return Ao;arguments.length<2?r=Ao:\"function\"!=typeof r&&(r=t.format(r));var i=Math.max(1,n*e/l.ticks().length);return function(t){var e=t/s(Math.round(o(t)));return e*n<n-.5&&(e*=n),e<=i?r(t):\"\"}};l.copy=function(){return e(r.copy(),n,i,a)};return mo(l,r)}(t.scale.linear().domain([0,1]),10,!0,[1,10])};var Ao=t.format(\".0e\"),Mo={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};function To(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}t.scale.pow=function(){return function t(e,r,n){var i=To(r),a=To(1/r);function o(t){return e(i(t))}o.invert=function(t){return a(e.invert(t))};o.domain=function(t){return arguments.length?(e.domain((n=t.map(Number)).map(i)),o):n};o.ticks=function(t){return bo(n,t)};o.tickFormat=function(t,e){return _o(n,t,e)};o.nice=function(t){return o.domain(yo(n,t))};o.exponent=function(t){return arguments.length?(i=To(r=t),a=To(1/r),e.domain(n.map(i)),o):r};o.copy=function(){return t(e.copy(),r,n)};return mo(o,e)}(t.scale.linear(),1,[0,1])},t.scale.sqrt=function(){return t.scale.pow().exponent(.5)},t.scale.ordinal=function(){return function e(r,n){var i,a,o;function s(t){return a[((i.get(t)||(\"range\"===n.t?i.set(t,r.push(t)):NaN))-1)%a.length]}function l(e,n){return t.range(r.length).map(function(t){return e+n*t})}s.domain=function(t){if(!arguments.length)return r;r=[],i=new b;for(var e,a=-1,o=t.length;++a<o;)i.has(e=t[a])||i.set(e,r.push(e));return s[n.t].apply(s,n.a)};s.range=function(t){return arguments.length?(a=t,o=0,n={t:\"range\",a:arguments},s):a};s.rangePoints=function(t,e){arguments.length<2&&(e=0);var i=t[0],c=t[1],u=r.length<2?(i=(i+c)/2,0):(c-i)/(r.length-1+e);return a=l(i+u*e/2,u),o=0,n={t:\"rangePoints\",a:arguments},s};s.rangeRoundPoints=function(t,e){arguments.length<2&&(e=0);var i=t[0],c=t[1],u=r.length<2?(i=c=Math.round((i+c)/2),0):(c-i)/(r.length-1+e)|0;return a=l(i+Math.round(u*e/2+(c-i-(r.length-1+e)*u)/2),u),o=0,n={t:\"rangeRoundPoints\",a:arguments},s};s.rangeBands=function(t,e,i){arguments.length<2&&(e=0),arguments.length<3&&(i=e);var c=t[1]<t[0],u=t[c-0],f=t[1-c],h=(f-u)/(r.length-e+2*i);return a=l(u+h*i,h),c&&a.reverse(),o=h*(1-e),n={t:\"rangeBands\",a:arguments},s};s.rangeRoundBands=function(t,e,i){arguments.length<2&&(e=0),arguments.length<3&&(i=e);var c=t[1]<t[0],u=t[c-0],f=t[1-c],h=Math.floor((f-u)/(r.length-e+2*i));return a=l(u+Math.round((f-u-(r.length-e)*h)/2),h),c&&a.reverse(),o=Math.round(h*(1-e)),n={t:\"rangeRoundBands\",a:arguments},s};s.rangeBand=function(){return o};s.rangeExtent=function(){return co(n.a[0])};s.copy=function(){return e(r,n)};return s.domain(r)}([],{t:\"range\",a:[[]]})},t.scale.category10=function(){return t.scale.ordinal().range(So)},t.scale.category20=function(){return t.scale.ordinal().range(Co)},t.scale.category20b=function(){return t.scale.ordinal().range(Eo)},t.scale.category20c=function(){return t.scale.ordinal().range(Lo)};var So=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(se),Co=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(se),Eo=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(se),Lo=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(se);function zo(){return 0}t.scale.quantile=function(){return function e(r,n){var i;function a(){var e=0,a=n.length;for(i=[];++e<a;)i[e-1]=t.quantile(r,e/a);return o}function o(e){if(!isNaN(e=+e))return n[t.bisect(i,e)]}o.domain=function(t){return arguments.length?(r=t.map(p).filter(d).sort(h),a()):r};o.range=function(t){return arguments.length?(n=t,a()):n};o.quantiles=function(){return i};o.invertExtent=function(t){return(t=n.indexOf(t))<0?[NaN,NaN]:[t>0?i[t-1]:r[0],t<i.length?i[t]:r[r.length-1]]};o.copy=function(){return e(r,n)};return a()}([],[])},t.scale.quantize=function(){return function t(e,r,n){var i,a;function o(t){return n[Math.max(0,Math.min(a,Math.floor(i*(t-e))))]}function s(){return i=n.length/(r-e),a=n.length-1,o}o.domain=function(t){return arguments.length?(e=+t[0],r=+t[t.length-1],s()):[e,r]};o.range=function(t){return arguments.length?(n=t,s()):n};o.invertExtent=function(t){return[t=(t=n.indexOf(t))<0?NaN:t/i+e,t+1/i]};o.copy=function(){return t(e,r,n)};return s()}(0,1,[0,1])},t.scale.threshold=function(){return function e(r,n){function i(e){if(e<=e)return n[t.bisect(r,e)]}i.domain=function(t){return arguments.length?(r=t,i):r};i.range=function(t){return arguments.length?(n=t,i):n};i.invertExtent=function(t){return t=n.indexOf(t),[r[t-1],r[t]]};i.copy=function(){return e(r,n)};return i}([.5],[0,1])},t.scale.identity=function(){return function t(e){function r(t){return+t}r.invert=r;r.domain=r.range=function(t){return arguments.length?(e=t.map(r),r):e};r.ticks=function(t){return bo(e,t)};r.tickFormat=function(t,r){return _o(e,t,r)};r.copy=function(){return t(e)};return r}([0,1])},t.svg={},t.svg.arc=function(){var t=Io,e=Do,r=zo,n=Oo,i=Po,a=Ro,o=Fo;function s(){var s=Math.max(0,+t.apply(this,arguments)),c=Math.max(0,+e.apply(this,arguments)),u=i.apply(this,arguments)-Ct,f=a.apply(this,arguments)-Ct,h=Math.abs(f-u),p=u>f?0:1;if(c<s&&(d=c,c=s,s=d),h>=St)return l(c,p)+(s?l(s,1-p):\"\")+\"Z\";var d,g,v,m,y,x,b,_,w,k,A,M,T=0,S=0,C=[];if((m=(+o.apply(this,arguments)||0)/2)&&(v=n===Oo?Math.sqrt(s*s+c*c):+n.apply(this,arguments),p||(S*=-1),c&&(S=Dt(v/c*Math.sin(m))),s&&(T=Dt(v/s*Math.sin(m)))),c){y=c*Math.cos(u+S),x=c*Math.sin(u+S),b=c*Math.cos(f-S),_=c*Math.sin(f-S);var E=Math.abs(f-u-2*S)<=Mt?0:1;if(S&&Bo(y,x,b,_)===p^E){var L=(u+f)/2;y=c*Math.cos(L),x=c*Math.sin(L),b=_=null}}else y=x=0;if(s){w=s*Math.cos(f-T),k=s*Math.sin(f-T),A=s*Math.cos(u+T),M=s*Math.sin(u+T);var z=Math.abs(u-f+2*T)<=Mt?0:1;if(T&&Bo(w,k,A,M)===1-p^z){var O=(u+f)/2;w=s*Math.cos(O),k=s*Math.sin(O),A=M=null}}else w=k=0;if(h>kt&&(d=Math.min(Math.abs(c-s)/2,+r.apply(this,arguments)))>.001){g=s<c^p?0:1;var I=d,D=d;if(h<Mt){var P=null==A?[w,k]:null==b?[y,x]:si([y,x],[A,M],[b,_],[w,k]),R=y-P[0],F=x-P[1],B=b-P[0],N=_-P[1],j=1/Math.sin(Math.acos((R*B+F*N)/(Math.sqrt(R*R+F*F)*Math.sqrt(B*B+N*N)))/2),V=Math.sqrt(P[0]*P[0]+P[1]*P[1]);D=Math.min(d,(s-V)/(j-1)),I=Math.min(d,(c-V)/(j+1))}if(null!=b){var U=No(null==A?[w,k]:[A,M],[y,x],c,I,p),q=No([b,_],[w,k],c,I,p);d===I?C.push(\"M\",U[0],\"A\",I,\",\",I,\" 0 0,\",g,\" \",U[1],\"A\",c,\",\",c,\" 0 \",1-p^Bo(U[1][0],U[1][1],q[1][0],q[1][1]),\",\",p,\" \",q[1],\"A\",I,\",\",I,\" 0 0,\",g,\" \",q[0]):C.push(\"M\",U[0],\"A\",I,\",\",I,\" 0 1,\",g,\" \",q[0])}else C.push(\"M\",y,\",\",x);if(null!=A){var H=No([y,x],[A,M],s,-D,p),G=No([w,k],null==b?[y,x]:[b,_],s,-D,p);d===D?C.push(\"L\",G[0],\"A\",D,\",\",D,\" 0 0,\",g,\" \",G[1],\"A\",s,\",\",s,\" 0 \",p^Bo(G[1][0],G[1][1],H[1][0],H[1][1]),\",\",1-p,\" \",H[1],\"A\",D,\",\",D,\" 0 0,\",g,\" \",H[0]):C.push(\"L\",G[0],\"A\",D,\",\",D,\" 0 0,\",g,\" \",H[0])}else C.push(\"L\",w,\",\",k)}else C.push(\"M\",y,\",\",x),null!=b&&C.push(\"A\",c,\",\",c,\" 0 \",E,\",\",p,\" \",b,\",\",_),C.push(\"L\",w,\",\",k),null!=A&&C.push(\"A\",s,\",\",s,\" 0 \",z,\",\",1-p,\" \",A,\",\",M);return C.push(\"Z\"),C.join(\"\")}function l(t,e){return\"M0,\"+t+\"A\"+t+\",\"+t+\" 0 1,\"+e+\" 0,\"+-t+\"A\"+t+\",\"+t+\" 0 1,\"+e+\" 0,\"+t}return s.innerRadius=function(e){return arguments.length?(t=ve(e),s):t},s.outerRadius=function(t){return arguments.length?(e=ve(t),s):e},s.cornerRadius=function(t){return arguments.length?(r=ve(t),s):r},s.padRadius=function(t){return arguments.length?(n=t==Oo?Oo:ve(t),s):n},s.startAngle=function(t){return arguments.length?(i=ve(t),s):i},s.endAngle=function(t){return arguments.length?(a=ve(t),s):a},s.padAngle=function(t){return arguments.length?(o=ve(t),s):o},s.centroid=function(){var r=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,n=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-Ct;return[Math.cos(n)*r,Math.sin(n)*r]},s};var Oo=\"auto\";function Io(t){return t.innerRadius}function Do(t){return t.outerRadius}function Po(t){return t.startAngle}function Ro(t){return t.endAngle}function Fo(t){return t&&t.padAngle}function Bo(t,e,r,n){return(t-r)*e-(e-n)*t>0?0:1}function No(t,e,r,n,i){var a=t[0]-e[0],o=t[1]-e[1],s=(i?n:-n)/Math.sqrt(a*a+o*o),l=s*o,c=-s*a,u=t[0]+l,f=t[1]+c,h=e[0]+l,p=e[1]+c,d=(u+h)/2,g=(f+p)/2,v=h-u,m=p-f,y=v*v+m*m,x=r-n,b=u*p-h*f,_=(m<0?-1:1)*Math.sqrt(Math.max(0,x*x*y-b*b)),w=(b*m-v*_)/y,k=(-b*v-m*_)/y,A=(b*m+v*_)/y,M=(-b*v+m*_)/y,T=w-d,S=k-g,C=A-d,E=M-g;return T*T+S*S>C*C+E*E&&(w=A,k=M),[[w-l,k-c],[w*r/x,k*r/x]]}function jo(t){var e=ei,r=ri,n=Wr,i=Uo,a=i.key,o=.7;function s(a){var s,l=[],c=[],u=-1,f=a.length,h=ve(e),p=ve(r);function d(){l.push(\"M\",i(t(c),o))}for(;++u<f;)n.call(this,s=a[u],u)?c.push([+h.call(this,s,u),+p.call(this,s,u)]):c.length&&(d(),c=[]);return c.length&&d(),l.length?l.join(\"\"):null}return s.x=function(t){return arguments.length?(e=t,s):e},s.y=function(t){return arguments.length?(r=t,s):r},s.defined=function(t){return arguments.length?(n=t,s):n},s.interpolate=function(t){return arguments.length?(a=\"function\"==typeof t?i=t:(i=Vo.get(t)||Uo).key,s):a},s.tension=function(t){return arguments.length?(o=t,s):o},s}t.svg.line=function(){return jo(z)};var Vo=t.map({linear:Uo,\"linear-closed\":qo,step:function(t){var e=0,r=t.length,n=t[0],i=[n[0],\",\",n[1]];for(;++e<r;)i.push(\"H\",(n[0]+(n=t[e])[0])/2,\"V\",n[1]);r>1&&i.push(\"H\",n[0]);return i.join(\"\")},\"step-before\":Ho,\"step-after\":Go,basis:Xo,\"basis-open\":function(t){if(t.length<4)return Uo(t);var e,r=[],n=-1,i=t.length,a=[0],o=[0];for(;++n<3;)e=t[n],a.push(e[0]),o.push(e[1]);r.push(Zo(Ko,a)+\",\"+Zo(Ko,o)),--n;for(;++n<i;)e=t[n],a.shift(),a.push(e[0]),o.shift(),o.push(e[1]),Qo(r,a,o);return r.join(\"\")},\"basis-closed\":function(t){var e,r,n=-1,i=t.length,a=i+4,o=[],s=[];for(;++n<4;)r=t[n%i],o.push(r[0]),s.push(r[1]);e=[Zo(Ko,o),\",\",Zo(Ko,s)],--n;for(;++n<a;)r=t[n%i],o.shift(),o.push(r[0]),s.shift(),s.push(r[1]),Qo(e,o,s);return e.join(\"\")},bundle:function(t,e){var r=t.length-1;if(r)for(var n,i,a=t[0][0],o=t[0][1],s=t[r][0]-a,l=t[r][1]-o,c=-1;++c<=r;)n=t[c],i=c/r,n[0]=e*n[0]+(1-e)*(a+i*s),n[1]=e*n[1]+(1-e)*(o+i*l);return Xo(t)},cardinal:function(t,e){return t.length<3?Uo(t):t[0]+Wo(t,Yo(t,e))},\"cardinal-open\":function(t,e){return t.length<4?Uo(t):t[1]+Wo(t.slice(1,-1),Yo(t,e))},\"cardinal-closed\":function(t,e){return t.length<3?qo(t):t[0]+Wo((t.push(t[0]),t),Yo([t[t.length-2]].concat(t,[t[1]]),e))},monotone:function(t){return t.length<3?Uo(t):t[0]+Wo(t,function(t){var e,r,n,i,a=[],o=function(t){var e=0,r=t.length-1,n=[],i=t[0],a=t[1],o=n[0]=ts(i,a);for(;++e<r;)n[e]=(o+(o=ts(i=a,a=t[e+1])))/2;return n[e]=o,n}(t),s=-1,l=t.length-1;for(;++s<l;)e=ts(t[s],t[s+1]),y(e)<kt?o[s]=o[s+1]=0:(r=o[s]/e,n=o[s+1]/e,(i=r*r+n*n)>9&&(i=3*e/Math.sqrt(i),o[s]=i*r,o[s+1]=i*n));s=-1;for(;++s<=l;)i=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+o[s]*o[s])),a.push([i||0,o[s]*i||0]);return a}(t))}});function Uo(t){return t.length>1?t.join(\"L\"):t+\"Z\"}function qo(t){return t.join(\"L\")+\"Z\"}function Ho(t){for(var e=0,r=t.length,n=t[0],i=[n[0],\",\",n[1]];++e<r;)i.push(\"V\",(n=t[e])[1],\"H\",n[0]);return i.join(\"\")}function Go(t){for(var e=0,r=t.length,n=t[0],i=[n[0],\",\",n[1]];++e<r;)i.push(\"H\",(n=t[e])[0],\"V\",n[1]);return i.join(\"\")}function Wo(t,e){if(e.length<1||t.length!=e.length&&t.length!=e.length+2)return Uo(t);var r=t.length!=e.length,n=\"\",i=t[0],a=t[1],o=e[0],s=o,l=1;if(r&&(n+=\"Q\"+(a[0]-2*o[0]/3)+\",\"+(a[1]-2*o[1]/3)+\",\"+a[0]+\",\"+a[1],i=t[1],l=2),e.length>1){s=e[1],a=t[l],l++,n+=\"C\"+(i[0]+o[0])+\",\"+(i[1]+o[1])+\",\"+(a[0]-s[0])+\",\"+(a[1]-s[1])+\",\"+a[0]+\",\"+a[1];for(var c=2;c<e.length;c++,l++)a=t[l],s=e[c],n+=\"S\"+(a[0]-s[0])+\",\"+(a[1]-s[1])+\",\"+a[0]+\",\"+a[1]}if(r){var u=t[l];n+=\"Q\"+(a[0]+2*s[0]/3)+\",\"+(a[1]+2*s[1]/3)+\",\"+u[0]+\",\"+u[1]}return n}function Yo(t,e){for(var r,n=[],i=(1-e)/2,a=t[0],o=t[1],s=1,l=t.length;++s<l;)r=a,a=o,o=t[s],n.push([i*(o[0]-r[0]),i*(o[1]-r[1])]);return n}function Xo(t){if(t.length<3)return Uo(t);var e=1,r=t.length,n=t[0],i=n[0],a=n[1],o=[i,i,i,(n=t[1])[0]],s=[a,a,a,n[1]],l=[i,\",\",a,\"L\",Zo(Ko,o),\",\",Zo(Ko,s)];for(t.push(t[r-1]);++e<=r;)n=t[e],o.shift(),o.push(n[0]),s.shift(),s.push(n[1]),Qo(l,o,s);return t.pop(),l.push(\"L\",n),l.join(\"\")}function Zo(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}Vo.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var $o=[0,2/3,1/3,0],Jo=[0,1/3,2/3,0],Ko=[0,1/6,2/3,1/6];function Qo(t,e,r){t.push(\"C\",Zo($o,e),\",\",Zo($o,r),\",\",Zo(Jo,e),\",\",Zo(Jo,r),\",\",Zo(Ko,e),\",\",Zo(Ko,r))}function ts(t,e){return(e[1]-t[1])/(e[0]-t[0])}function es(t){for(var e,r,n,i=-1,a=t.length;++i<a;)r=(e=t[i])[0],n=e[1]-Ct,e[0]=r*Math.cos(n),e[1]=r*Math.sin(n);return t}function rs(t){var e=ei,r=ei,n=0,i=ri,a=Wr,o=Uo,s=o.key,l=o,c=\"L\",u=.7;function f(s){var f,h,p,d=[],g=[],v=[],m=-1,y=s.length,x=ve(e),b=ve(n),_=e===r?function(){return h}:ve(r),w=n===i?function(){return p}:ve(i);function k(){d.push(\"M\",o(t(v),u),c,l(t(g.reverse()),u),\"Z\")}for(;++m<y;)a.call(this,f=s[m],m)?(g.push([h=+x.call(this,f,m),p=+b.call(this,f,m)]),v.push([+_.call(this,f,m),+w.call(this,f,m)])):g.length&&(k(),g=[],v=[]);return g.length&&k(),d.length?d.join(\"\"):null}return f.x=function(t){return arguments.length?(e=r=t,f):r},f.x0=function(t){return arguments.length?(e=t,f):e},f.x1=function(t){return arguments.length?(r=t,f):r},f.y=function(t){return arguments.length?(n=i=t,f):i},f.y0=function(t){return arguments.length?(n=t,f):n},f.y1=function(t){return arguments.length?(i=t,f):i},f.defined=function(t){return arguments.length?(a=t,f):a},f.interpolate=function(t){return arguments.length?(s=\"function\"==typeof t?o=t:(o=Vo.get(t)||Uo).key,l=o.reverse||o,c=o.closed?\"M\":\"L\",f):s},f.tension=function(t){return arguments.length?(u=t,f):u},f}function ns(t){return t.radius}function is(t){return[t.x,t.y]}function as(){return 64}function os(){return\"circle\"}function ss(t){var e=Math.sqrt(t/Mt);return\"M0,\"+e+\"A\"+e+\",\"+e+\" 0 1,1 0,\"+-e+\"A\"+e+\",\"+e+\" 0 1,1 0,\"+e+\"Z\"}t.svg.line.radial=function(){var t=jo(es);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ho.reverse=Go,Go.reverse=Ho,t.svg.area=function(){return rs(z)},t.svg.area.radial=function(){var t=rs(es);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},t.svg.chord=function(){var t=Vn,e=Un,r=ns,n=Po,i=Ro;function a(r,n){var i,a,c=o(this,t,r,n),u=o(this,e,r,n);return\"M\"+c.p0+s(c.r,c.p1,c.a1-c.a0)+(a=u,(i=c).a0==a.a0&&i.a1==a.a1?l(c.r,c.p1,c.r,c.p0):l(c.r,c.p1,u.r,u.p0)+s(u.r,u.p1,u.a1-u.a0)+l(u.r,u.p1,c.r,c.p0))+\"Z\"}function o(t,e,a,o){var s=e.call(t,a,o),l=r.call(t,s,o),c=n.call(t,s,o)-Ct,u=i.call(t,s,o)-Ct;return{r:l,a0:c,a1:u,p0:[l*Math.cos(c),l*Math.sin(c)],p1:[l*Math.cos(u),l*Math.sin(u)]}}function s(t,e,r){return\"A\"+t+\",\"+t+\" 0 \"+ +(r>Mt)+\",1 \"+e}function l(t,e,r,n){return\"Q 0,0 \"+n}return a.radius=function(t){return arguments.length?(r=ve(t),a):r},a.source=function(e){return arguments.length?(t=ve(e),a):t},a.target=function(t){return arguments.length?(e=ve(t),a):e},a.startAngle=function(t){return arguments.length?(n=ve(t),a):n},a.endAngle=function(t){return arguments.length?(i=ve(t),a):i},a},t.svg.diagonal=function(){var t=Vn,e=Un,r=is;function n(n,i){var a=t.call(this,n,i),o=e.call(this,n,i),s=(a.y+o.y)/2,l=[a,{x:a.x,y:s},{x:o.x,y:s},o];return\"M\"+(l=l.map(r))[0]+\"C\"+l[1]+\" \"+l[2]+\" \"+l[3]}return n.source=function(e){return arguments.length?(t=ve(e),n):t},n.target=function(t){return arguments.length?(e=ve(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},t.svg.diagonal.radial=function(){var e=t.svg.diagonal(),r=is,n=e.projection;return e.projection=function(t){return arguments.length?n(function(t){return function(){var e=t.apply(this,arguments),r=e[0],n=e[1]-Ct;return[r*Math.cos(n),r*Math.sin(n)]}}(r=t)):r},e},t.svg.symbol=function(){var t=os,e=as;function r(r,n){return(ls.get(t.call(this,r,n))||ss)(e.call(this,r,n))}return r.type=function(e){return arguments.length?(t=ve(e),r):t},r.size=function(t){return arguments.length?(e=ve(t),r):e},r};var ls=t.map({circle:ss,cross:function(t){var e=Math.sqrt(t/5)/2;return\"M\"+-3*e+\",\"+-e+\"H\"+-e+\"V\"+-3*e+\"H\"+e+\"V\"+-e+\"H\"+3*e+\"V\"+e+\"H\"+e+\"V\"+3*e+\"H\"+-e+\"V\"+e+\"H\"+-3*e+\"Z\"},diamond:function(t){var e=Math.sqrt(t/(2*us)),r=e*us;return\"M0,\"+-e+\"L\"+r+\",0 0,\"+e+\" \"+-r+\",0Z\"},square:function(t){var e=Math.sqrt(t)/2;return\"M\"+-e+\",\"+-e+\"L\"+e+\",\"+-e+\" \"+e+\",\"+e+\" \"+-e+\",\"+e+\"Z\"},\"triangle-down\":function(t){var e=Math.sqrt(t/cs),r=e*cs/2;return\"M0,\"+r+\"L\"+e+\",\"+-r+\" \"+-e+\",\"+-r+\"Z\"},\"triangle-up\":function(t){var e=Math.sqrt(t/cs),r=e*cs/2;return\"M0,\"+-r+\"L\"+e+\",\"+r+\" \"+-e+\",\"+r+\"Z\"}});t.svg.symbolTypes=ls.keys();var cs=Math.sqrt(3),us=Math.tan(30*Et);Y.transition=function(t){for(var e,r,n=ds||++ms,i=bs(t),a=[],o=gs||{time:Date.now(),ease:ia,delay:0,duration:250},s=-1,l=this.length;++s<l;){a.push(e=[]);for(var c=this[s],u=-1,f=c.length;++u<f;)(r=c[u])&&_s(r,u,i,n,o),e.push(r)}return ps(a,i,n)},Y.interrupt=function(t){return this.each(null==t?fs:hs(bs(t)))};var fs=hs(bs());function hs(t){return function(){var e,r,n;(e=this[t])&&(n=e[r=e.active])&&(n.timer.c=null,n.timer.t=NaN,--e.count?delete e[r]:delete this[t],e.active+=.5,n.event&&n.event.interrupt.call(this,this.__data__,n.index))}}function ps(t,e,r){return U(t,vs),t.namespace=e,t.id=r,t}var ds,gs,vs=[],ms=0;function ys(t,e,r,n){var i=t.id,a=t.namespace;return ut(t,\"function\"==typeof r?function(t,o,s){t[a][i].tween.set(e,n(r.call(t,t.__data__,o,s)))}:(r=n(r),function(t){t[a][i].tween.set(e,r)}))}function xs(t){return null==t&&(t=\"\"),function(){this.textContent=t}}function bs(t){return null==t?\"__transition__\":\"__transition_\"+t+\"__\"}function _s(t,e,r,n,i){var a,o,s,l,c,u=t[r]||(t[r]={active:0,count:0}),f=u[n];function h(r){var i=u.active,h=u[i];for(var d in h&&(h.timer.c=null,h.timer.t=NaN,--u.count,delete u[i],h.event&&h.event.interrupt.call(t,t.__data__,h.index)),u)if(+d<n){var g=u[d];g.timer.c=null,g.timer.t=NaN,--u.count,delete u[d]}o.c=p,Ae(function(){return o.c&&p(r||1)&&(o.c=null,o.t=NaN),1},0,a),u.active=n,f.event&&f.event.start.call(t,t.__data__,e),c=[],f.tween.forEach(function(r,n){(n=n.call(t,t.__data__,e))&&c.push(n)}),l=f.ease,s=f.duration}function p(i){for(var a=i/s,o=l(a),h=c.length;h>0;)c[--h].call(t,o);if(a>=1)return f.event&&f.event.end.call(t,t.__data__,e),--u.count?delete u[n]:delete t[r],1}f||(a=i.time,o=Ae(function(t){var e=f.delay;if(o.t=e+a,e<=t)return h(t-e);o.c=h},0,a),f=u[n]={tween:new b,time:a,timer:o,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++u.count)}vs.call=Y.call,vs.empty=Y.empty,vs.node=Y.node,vs.size=Y.size,t.transition=function(e,r){return e&&e.transition?ds?e.transition(r):e:t.selection().transition(e)},t.transition.prototype=vs,vs.select=function(t){var e,r,n,i=this.id,a=this.namespace,o=[];t=X(t);for(var s=-1,l=this.length;++s<l;){o.push(e=[]);for(var c=this[s],u=-1,f=c.length;++u<f;)(n=c[u])&&(r=t.call(n,n.__data__,u,s))?(\"__data__\"in n&&(r.__data__=n.__data__),_s(r,u,a,i,n[a][i]),e.push(r)):e.push(null)}return ps(o,a,i)},vs.selectAll=function(t){var e,r,n,i,a,o=this.id,s=this.namespace,l=[];t=Z(t);for(var c=-1,u=this.length;++c<u;)for(var f=this[c],h=-1,p=f.length;++h<p;)if(n=f[h]){a=n[s][o],r=t.call(n,n.__data__,h,c),l.push(e=[]);for(var d=-1,g=r.length;++d<g;)(i=r[d])&&_s(i,d,s,o,a),e.push(i)}return ps(l,s,o)},vs.filter=function(t){var e,r,n=[];\"function\"!=typeof t&&(t=ct(t));for(var i=0,a=this.length;i<a;i++){n.push(e=[]);for(var o,s=0,l=(o=this[i]).length;s<l;s++)(r=o[s])&&t.call(r,r.__data__,s,i)&&e.push(r)}return ps(n,this.namespace,this.id)},vs.tween=function(t,e){var r=this.id,n=this.namespace;return arguments.length<2?this.node()[n][r].tween.get(t):ut(this,null==e?function(e){e[n][r].tween.remove(t)}:function(i){i[n][r].tween.set(t,e)})},vs.attr=function(e,r){if(arguments.length<2){for(r in e)this.attr(r,e[r]);return this}var n=\"transform\"==e?ga:Zi,i=t.ns.qualify(e);function a(){this.removeAttribute(i)}function o(){this.removeAttributeNS(i.space,i.local)}return ys(this,\"attr.\"+e,r,i.local?function(t){return null==t?o:(t+=\"\",function(){var e,r=this.getAttributeNS(i.space,i.local);return r!==t&&(e=n(r,t),function(t){this.setAttributeNS(i.space,i.local,e(t))})})}:function(t){return null==t?a:(t+=\"\",function(){var e,r=this.getAttribute(i);return r!==t&&(e=n(r,t),function(t){this.setAttribute(i,e(t))})})})},vs.attrTween=function(e,r){var n=t.ns.qualify(e);return this.tween(\"attr.\"+e,n.local?function(t,e){var i=r.call(this,t,e,this.getAttributeNS(n.space,n.local));return i&&function(t){this.setAttributeNS(n.space,n.local,i(t))}}:function(t,e){var i=r.call(this,t,e,this.getAttribute(n));return i&&function(t){this.setAttribute(n,i(t))}})},vs.style=function(t,e,r){var n=arguments.length;if(n<3){if(\"string\"!=typeof t){for(r in n<2&&(e=\"\"),t)this.style(r,t[r],e);return this}r=\"\"}function i(){this.style.removeProperty(t)}return ys(this,\"style.\"+t,e,function(e){return null==e?i:(e+=\"\",function(){var n,i=o(this).getComputedStyle(this,null).getPropertyValue(t);return i!==e&&(n=Zi(i,e),function(e){this.style.setProperty(t,n(e),r)})})})},vs.styleTween=function(t,e,r){return arguments.length<3&&(r=\"\"),this.tween(\"style.\"+t,function(n,i){var a=e.call(this,n,i,o(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),r)}})},vs.text=function(t){return ys(this,\"text\",t,xs)},vs.remove=function(){var t=this.namespace;return this.each(\"end.transition\",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},vs.ease=function(e){var r=this.id,n=this.namespace;return arguments.length<1?this.node()[n][r].ease:(\"function\"!=typeof e&&(e=t.ease.apply(t,arguments)),ut(this,function(t){t[n][r].ease=e}))},vs.delay=function(t){var e=this.id,r=this.namespace;return arguments.length<1?this.node()[r][e].delay:ut(this,\"function\"==typeof t?function(n,i,a){n[r][e].delay=+t.call(n,n.__data__,i,a)}:(t=+t,function(n){n[r][e].delay=t}))},vs.duration=function(t){var e=this.id,r=this.namespace;return arguments.length<1?this.node()[r][e].duration:ut(this,\"function\"==typeof t?function(n,i,a){n[r][e].duration=Math.max(1,t.call(n,n.__data__,i,a))}:(t=Math.max(1,t),function(n){n[r][e].duration=t}))},vs.each=function(e,r){var n=this.id,i=this.namespace;if(arguments.length<2){var a=gs,o=ds;try{ds=n,ut(this,function(t,r,a){gs=t[i][n],e.call(t,t.__data__,r,a)})}finally{gs=a,ds=o}}else ut(this,function(a){var o=a[i][n];(o.event||(o.event=t.dispatch(\"start\",\"end\",\"interrupt\"))).on(e,r)});return this},vs.transition=function(){for(var t,e,r,n=this.id,i=++ms,a=this.namespace,o=[],s=0,l=this.length;s<l;s++){o.push(t=[]);for(var c,u=0,f=(c=this[s]).length;u<f;u++)(e=c[u])&&_s(e,u,a,i,{time:(r=e[a][n]).time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration}),t.push(e)}return ps(o,a,i)},t.svg.axis=function(){var e,r=t.scale.linear(),i=ws,a=6,o=6,s=3,l=[10],c=null;function u(n){n.each(function(){var n,u=t.select(this),f=this.__chart__||r,h=this.__chart__=r.copy(),p=null==c?h.ticks?h.ticks.apply(h,l):h.domain():c,d=null==e?h.tickFormat?h.tickFormat.apply(h,l):z:e,g=u.selectAll(\".tick\").data(p,h),v=g.enter().insert(\"g\",\".domain\").attr(\"class\",\"tick\").style(\"opacity\",kt),m=t.transition(g.exit()).style(\"opacity\",kt).remove(),y=t.transition(g.order()).style(\"opacity\",1),x=Math.max(a,0)+s,b=uo(h),_=u.selectAll(\".domain\").data([0]),w=(_.enter().append(\"path\").attr(\"class\",\"domain\"),t.transition(_));v.append(\"line\"),v.append(\"text\");var k,A,M,T,S=v.select(\"line\"),C=y.select(\"line\"),E=g.select(\"text\").text(d),L=v.select(\"text\"),O=y.select(\"text\"),I=\"top\"===i||\"left\"===i?-1:1;if(\"bottom\"===i||\"top\"===i?(n=As,k=\"x\",M=\"y\",A=\"x2\",T=\"y2\",E.attr(\"dy\",I<0?\"0em\":\".71em\").style(\"text-anchor\",\"middle\"),w.attr(\"d\",\"M\"+b[0]+\",\"+I*o+\"V0H\"+b[1]+\"V\"+I*o)):(n=Ms,k=\"y\",M=\"x\",A=\"y2\",T=\"x2\",E.attr(\"dy\",\".32em\").style(\"text-anchor\",I<0?\"end\":\"start\"),w.attr(\"d\",\"M\"+I*o+\",\"+b[0]+\"H0V\"+b[1]+\"H\"+I*o)),S.attr(T,I*a),L.attr(M,I*x),C.attr(A,0).attr(T,I*a),O.attr(k,0).attr(M,I*x),h.rangeBand){var D=h,P=D.rangeBand()/2;f=h=function(t){return D(t)+P}}else f.rangeBand?f=h:m.call(n,h,f);v.call(n,f,h),y.call(n,h,h)})}return u.scale=function(t){return arguments.length?(r=t,u):r},u.orient=function(t){return arguments.length?(i=t in ks?t+\"\":ws,u):i},u.ticks=function(){return arguments.length?(l=n(arguments),u):l},u.tickValues=function(t){return arguments.length?(c=t,u):c},u.tickFormat=function(t){return arguments.length?(e=t,u):e},u.tickSize=function(t){var e=arguments.length;return e?(a=+t,o=+arguments[e-1],u):a},u.innerTickSize=function(t){return arguments.length?(a=+t,u):a},u.outerTickSize=function(t){return arguments.length?(o=+t,u):o},u.tickPadding=function(t){return arguments.length?(s=+t,u):s},u.tickSubdivide=function(){return arguments.length&&u},u};var ws=\"bottom\",ks={top:1,right:1,bottom:1,left:1};function As(t,e,r){t.attr(\"transform\",function(t){var n=e(t);return\"translate(\"+(isFinite(n)?n:r(t))+\",0)\"})}function Ms(t,e,r){t.attr(\"transform\",function(t){var n=e(t);return\"translate(0,\"+(isFinite(n)?n:r(t))+\")\"})}t.svg.brush=function(){var e,r,n=j(h,\"brushstart\",\"brush\",\"brushend\"),i=null,a=null,s=[0,0],l=[0,0],c=!0,u=!0,f=Ss[0];function h(e){e.each(function(){var e=t.select(this).style(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush\",v).on(\"touchstart.brush\",v),r=e.selectAll(\".background\").data([0]);r.enter().append(\"rect\").attr(\"class\",\"background\").style(\"visibility\",\"hidden\").style(\"cursor\",\"crosshair\"),e.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\",\"extent\").style(\"cursor\",\"move\");var n=e.selectAll(\".resize\").data(f,z);n.exit().remove(),n.enter().append(\"g\").attr(\"class\",function(t){return\"resize \"+t}).style(\"cursor\",function(t){return Ts[t]}).append(\"rect\").attr(\"x\",function(t){return/[ew]$/.test(t)?-3:null}).attr(\"y\",function(t){return/^[ns]/.test(t)?-3:null}).attr(\"width\",6).attr(\"height\",6).style(\"visibility\",\"hidden\"),n.style(\"display\",h.empty()?\"none\":null);var o,s=t.transition(e),l=t.transition(r);i&&(o=uo(i),l.attr(\"x\",o[0]).attr(\"width\",o[1]-o[0]),d(s)),a&&(o=uo(a),l.attr(\"y\",o[0]).attr(\"height\",o[1]-o[0]),g(s)),p(s)})}function p(t){t.selectAll(\".resize\").attr(\"transform\",function(t){return\"translate(\"+s[+/e$/.test(t)]+\",\"+l[+/^s/.test(t)]+\")\"})}function d(t){t.select(\".extent\").attr(\"x\",s[0]),t.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\",s[1]-s[0])}function g(t){t.select(\".extent\").attr(\"y\",l[0]),t.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\",l[1]-l[0])}function v(){var f,v,m=this,y=t.select(t.event.target),x=n.of(m,arguments),b=t.select(m),_=y.datum(),w=!/^(n|s)$/.test(_)&&i,k=!/^(e|w)$/.test(_)&&a,A=y.classed(\"extent\"),M=xt(m),T=t.mouse(m),S=t.select(o(m)).on(\"keydown.brush\",function(){32==t.event.keyCode&&(A||(f=null,T[0]-=s[1],T[1]-=l[1],A=2),B())}).on(\"keyup.brush\",function(){32==t.event.keyCode&&2==A&&(T[0]+=s[1],T[1]+=l[1],A=0,B())});if(t.event.changedTouches?S.on(\"touchmove.brush\",L).on(\"touchend.brush\",O):S.on(\"mousemove.brush\",L).on(\"mouseup.brush\",O),b.interrupt().selectAll(\"*\").interrupt(),A)T[0]=s[0]-T[0],T[1]=l[0]-T[1];else if(_){var C=+/w$/.test(_),E=+/^n/.test(_);v=[s[1-C]-T[0],l[1-E]-T[1]],T[0]=s[C],T[1]=l[E]}else t.event.altKey&&(f=T.slice());function L(){var e=t.mouse(m),r=!1;v&&(e[0]+=v[0],e[1]+=v[1]),A||(t.event.altKey?(f||(f=[(s[0]+s[1])/2,(l[0]+l[1])/2]),T[0]=s[+(e[0]<f[0])],T[1]=l[+(e[1]<f[1])]):f=null),w&&z(e,i,0)&&(d(b),r=!0),k&&z(e,a,1)&&(g(b),r=!0),r&&(p(b),x({type:\"brush\",mode:A?\"move\":\"resize\"}))}function z(t,n,i){var a,o,h=uo(n),p=h[0],d=h[1],g=T[i],v=i?l:s,m=v[1]-v[0];if(A&&(p-=g,d-=m+g),a=(i?u:c)?Math.max(p,Math.min(d,t[i])):t[i],A?o=(a+=g)+m:(f&&(g=Math.max(p,Math.min(d,2*f[i]-a))),g<a?(o=a,a=g):o=g),v[0]!=a||v[1]!=o)return i?r=null:e=null,v[0]=a,v[1]=o,!0}function O(){L(),b.style(\"pointer-events\",\"all\").selectAll(\".resize\").style(\"display\",h.empty()?\"none\":null),t.select(\"body\").style(\"cursor\",null),S.on(\"mousemove.brush\",null).on(\"mouseup.brush\",null).on(\"touchmove.brush\",null).on(\"touchend.brush\",null).on(\"keydown.brush\",null).on(\"keyup.brush\",null),M(),x({type:\"brushend\"})}b.style(\"pointer-events\",\"none\").selectAll(\".resize\").style(\"display\",null),t.select(\"body\").style(\"cursor\",y.style(\"cursor\")),x({type:\"brushstart\"}),L()}return h.event=function(i){i.each(function(){var i=n.of(this,arguments),a={x:s,y:l,i:e,j:r},o=this.__chart__||a;this.__chart__=a,ds?t.select(this).transition().each(\"start.brush\",function(){e=o.i,r=o.j,s=o.x,l=o.y,i({type:\"brushstart\"})}).tween(\"brush:brush\",function(){var t=$i(s,a.x),n=$i(l,a.y);return e=r=null,function(e){s=a.x=t(e),l=a.y=n(e),i({type:\"brush\",mode:\"resize\"})}}).each(\"end.brush\",function(){e=a.i,r=a.j,i({type:\"brush\",mode:\"resize\"}),i({type:\"brushend\"})}):(i({type:\"brushstart\"}),i({type:\"brush\",mode:\"resize\"}),i({type:\"brushend\"}))})},h.x=function(t){return arguments.length?(f=Ss[!(i=t)<<1|!a],h):i},h.y=function(t){return arguments.length?(f=Ss[!i<<1|!(a=t)],h):a},h.clamp=function(t){return arguments.length?(i&&a?(c=!!t[0],u=!!t[1]):i?c=!!t:a&&(u=!!t),h):i&&a?[c,u]:i?c:a?u:null},h.extent=function(t){var n,o,c,u,f;return arguments.length?(i&&(n=t[0],o=t[1],a&&(n=n[0],o=o[0]),e=[n,o],i.invert&&(n=i(n),o=i(o)),o<n&&(f=n,n=o,o=f),n==s[0]&&o==s[1]||(s=[n,o])),a&&(c=t[0],u=t[1],i&&(c=c[1],u=u[1]),r=[c,u],a.invert&&(c=a(c),u=a(u)),u<c&&(f=c,c=u,u=f),c==l[0]&&u==l[1]||(l=[c,u])),h):(i&&(e?(n=e[0],o=e[1]):(n=s[0],o=s[1],i.invert&&(n=i.invert(n),o=i.invert(o)),o<n&&(f=n,n=o,o=f))),a&&(r?(c=r[0],u=r[1]):(c=l[0],u=l[1],a.invert&&(c=a.invert(c),u=a.invert(u)),u<c&&(f=c,c=u,u=f))),i&&a?[[n,c],[o,u]]:i?[n,o]:a&&[c,u])},h.clear=function(){return h.empty()||(s=[0,0],l=[0,0],e=r=null),h},h.empty=function(){return!!i&&s[0]==s[1]||!!a&&l[0]==l[1]},t.rebind(h,n,\"on\")};var Ts={n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Ss=[[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"],[\"e\",\"w\"],[\"n\",\"s\"],[]],Cs=Ie.format=sr.timeFormat,Es=Cs.utc,Ls=Es(\"%Y-%m-%dT%H:%M:%S.%LZ\");function zs(t){return t.toISOString()}function Os(e,r,n){function i(t){return e(t)}function a(e,n){var i=(e[1]-e[0])/n,a=t.bisect(Ds,i);return a==Ds.length?[r.year,xo(e.map(function(t){return t/31536e6}),n)[2]]:a?r[i/Ds[a-1]<Ds[a]/i?a-1:a]:[Fs,xo(e,n)[2]]}return i.invert=function(t){return Is(e.invert(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain().map(Is)},i.nice=function(t,e){var r=i.domain(),n=co(r),o=null==t?a(n,10):\"number\"==typeof t&&a(n,t);function s(r){return!isNaN(r)&&!t.range(r,Is(+r+1),e).length}return o&&(t=o[0],e=o[1]),i.domain(ho(r,e>1?{floor:function(e){for(;s(e=t.floor(e));)e=Is(e-1);return e},ceil:function(e){for(;s(e=t.ceil(e));)e=Is(+e+1);return e}}:t))},i.ticks=function(t,e){var r=co(i.domain()),n=null==t?a(r,10):\"number\"==typeof t?a(r,t):!t.range&&[{range:t},e];return n&&(t=n[0],e=n[1]),t.range(r[0],Is(+r[1]+1),e<1?1:e)},i.tickFormat=function(){return n},i.copy=function(){return Os(e.copy(),r,n)},mo(i,e)}function Is(t){return new Date(t)}Cs.iso=Date.prototype.toISOString&&+new Date(\"2000-01-01T00:00:00.000Z\")?zs:Ls,zs.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},zs.toString=Ls.toString,Ie.second=Fe(function(t){return new De(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),Ie.seconds=Ie.second.range,Ie.seconds.utc=Ie.second.utc.range,Ie.minute=Fe(function(t){return new De(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),Ie.minutes=Ie.minute.range,Ie.minutes.utc=Ie.minute.utc.range,Ie.hour=Fe(function(t){var e=t.getTimezoneOffset()/60;return new De(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),Ie.hours=Ie.hour.range,Ie.hours.utc=Ie.hour.utc.range,Ie.month=Fe(function(t){return(t=Ie.day(t)).setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),Ie.months=Ie.month.range,Ie.months.utc=Ie.month.utc.range;var Ds=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ps=[[Ie.second,1],[Ie.second,5],[Ie.second,15],[Ie.second,30],[Ie.minute,1],[Ie.minute,5],[Ie.minute,15],[Ie.minute,30],[Ie.hour,1],[Ie.hour,3],[Ie.hour,6],[Ie.hour,12],[Ie.day,1],[Ie.day,2],[Ie.week,1],[Ie.month,1],[Ie.month,3],[Ie.year,1]],Rs=Cs.multi([[\".%L\",function(t){return t.getMilliseconds()}],[\":%S\",function(t){return t.getSeconds()}],[\"%I:%M\",function(t){return t.getMinutes()}],[\"%I %p\",function(t){return t.getHours()}],[\"%a %d\",function(t){return t.getDay()&&1!=t.getDate()}],[\"%b %d\",function(t){return 1!=t.getDate()}],[\"%B\",function(t){return t.getMonth()}],[\"%Y\",Wr]]),Fs={range:function(e,r,n){return t.range(Math.ceil(e/n)*n,+r,n).map(Is)},floor:z,ceil:z};Ps.year=Ie.year,Ie.scale=function(){return Os(t.scale.linear(),Ps,Rs)};var Bs=Ps.map(function(t){return[t[0].utc,t[1]]}),Ns=Es.multi([[\".%L\",function(t){return t.getUTCMilliseconds()}],[\":%S\",function(t){return t.getUTCSeconds()}],[\"%I:%M\",function(t){return t.getUTCMinutes()}],[\"%I %p\",function(t){return t.getUTCHours()}],[\"%a %d\",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],[\"%b %d\",function(t){return 1!=t.getUTCDate()}],[\"%B\",function(t){return t.getUTCMonth()}],[\"%Y\",Wr]]);function js(t){return JSON.parse(t.responseText)}function Vs(t){var e=i.createRange();return e.selectNode(i.body),e.createContextualFragment(t.responseText)}Bs.year=Ie.year.utc,Ie.scale.utc=function(){return Os(t.scale.linear(),Bs,Ns)},t.text=me(function(t){return t.responseText}),t.json=function(t,e){return ye(t,\"application/json\",js,e)},t.html=function(t,e){return ye(t,\"text/html\",Vs,e)},t.xml=me(function(t){return t.responseXML}),\"object\"==typeof e&&e.exports?e.exports=t:this.d3=t}()},{}],150:[function(t,e,r){e.exports=function(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t]}},{}],151:[function(t,e,r){\"use strict\";var n=t(\"incremental-convex-hull\"),i=t(\"uniq\");function a(t,e){this.point=t,this.index=e}function o(t,e){for(var r=t.point,n=e.point,i=r.length,a=0;a<i;++a){var o=n[a]-r[a];if(o)return o}return 0}e.exports=function(t,e){var r=t.length;if(0===r)return[];var s=t[0].length;if(s<1)return[];if(1===s)return function(t,e,r){if(1===t)return r?[[-1,0]]:[];var n=e.map(function(t,e){return[t[0],e]});n.sort(function(t,e){return t[0]-e[0]});for(var i=new Array(t-1),a=1;a<t;++a){var o=n[a-1],s=n[a];i[a-1]=[o[1],s[1]]}r&&i.push([-1,i[0][1]],[i[t-1][1],-1]);return i}(r,t,e);for(var l=new Array(r),c=1,u=0;u<r;++u){for(var f=t[u],h=new Array(s+1),p=0,d=0;d<s;++d){var g=f[d];h[d]=g,p+=g*g}h[s]=p,l[u]=new a(h,u),c=Math.max(p,c)}i(l,o),r=l.length;for(var v=new Array(r+s+1),m=new Array(r+s+1),y=(s+1)*(s+1)*c,x=new Array(s+1),u=0;u<=s;++u)x[u]=0;x[s]=y,v[0]=x.slice(),m[0]=-1;for(var u=0;u<=s;++u){var h=x.slice();h[u]=1,v[u+1]=h,m[u+1]=-1}for(var u=0;u<r;++u){var b=l[u];v[u+s+1]=b.point,m[u+s+1]=b.index}var _=n(v,!1);_=e?_.filter(function(t){for(var e=0,r=0;r<=s;++r){var n=m[t[r]];if(n<0&&++e>=2)return!1;t[r]=n}return!0}):_.filter(function(t){for(var e=0;e<=s;++e){var r=m[t[e]];if(r<0)return!1;t[e]=r}return!0});if(1&s)for(var u=0;u<_.length;++u){var b=_[u],h=b[0];b[0]=b[1],b[1]=h}return _}},{\"incremental-convex-hull\":399,uniq:525}],152:[function(t,e,r){\"use strict\";e.exports=a;var n=(a.canvas=document.createElement(\"canvas\")).getContext(\"2d\"),i=o([32,126]);function a(t,e){Array.isArray(t)&&(t=t.join(\", \"));var r,a={},s=16,l=.05;e&&(2===e.length&&\"number\"==typeof e[0]?r=o(e):Array.isArray(e)?r=e:(e.o?r=o(e.o):e.pairs&&(r=e.pairs),e.fontSize&&(s=e.fontSize),null!=e.threshold&&(l=e.threshold))),r||(r=i),n.font=s+\"px \"+t;for(var c=0;c<r.length;c++){var u=r[c],f=n.measureText(u[0]).width+n.measureText(u[1]).width,h=n.measureText(u).width;if(Math.abs(f-h)>s*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i<t[1];i++){var a=n+String.fromCharCode(i);e.push(a)}return e}a.createPairs=o,a.ascii=i},{}],153:[function(t,e,r){(function(t){var r=!1;if(\"undefined\"!=typeof Float64Array){var n=new Float64Array(1),i=new Uint32Array(n.buffer);if(n[0]=1,r=!0,1072693248===i[1]){e.exports=function(t){return n[0]=t,[i[0],i[1]]},e.exports.pack=function(t,e){return i[0]=t,i[1]=e,n[0]},e.exports.lo=function(t){return n[0]=t,i[0]},e.exports.hi=function(t){return n[0]=t,i[1]}}else if(1072693248===i[0]){e.exports=function(t){return n[0]=t,[i[1],i[0]]},e.exports.pack=function(t,e){return i[1]=t,i[0]=e,n[0]},e.exports.lo=function(t){return n[0]=t,i[1]},e.exports.hi=function(t){return n[0]=t,i[0]}}else r=!1}if(!r){var a=new t(8);e.exports=function(t){return a.writeDoubleLE(t,0,!0),[a.readUInt32LE(0,!0),a.readUInt32LE(4,!0)]},e.exports.pack=function(t,e){return a.writeUInt32LE(t,0,!0),a.writeUInt32LE(e,4,!0),a.readDoubleLE(0,!0)},e.exports.lo=function(t){return a.writeDoubleLE(t,0,!0),a.readUInt32LE(0,!0)},e.exports.hi=function(t){return a.writeDoubleLE(t,0,!0),a.readUInt32LE(4,!0)}}e.exports.sign=function(t){return e.exports.hi(t)>>>31},e.exports.exponent=function(t){return(e.exports.hi(t)<<1>>>21)-1023},e.exports.fraction=function(t){var r=e.exports.lo(t),n=e.exports.hi(t),i=1048575&n;return 2146435072&n&&(i+=1<<20),[r,i]},e.exports.denormalized=function(t){return!(2146435072&e.exports.hi(t))}}).call(this,t(\"buffer\").Buffer)},{buffer:94}],154:[function(t,e,r){var n=t(\"abs-svg-path\"),i=t(\"normalize-svg-path\"),a={M:\"moveTo\",C:\"bezierCurveTo\"};e.exports=function(t,e){t.beginPath(),i(n(e)).forEach(function(e){var r=e[0],n=e.slice(1);t[a[r]].apply(t,n)}),t.closePath()}},{\"abs-svg-path\":49,\"normalize-svg-path\":438}],155:[function(t,e,r){e.exports=function(t){switch(t){case\"int8\":return Int8Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"uint8\":return Uint8Array;case\"uint16\":return Uint16Array;case\"uint32\":return Uint32Array;case\"float32\":return Float32Array;case\"float64\":return Float64Array;case\"array\":return Array;case\"uint8_clamped\":return Uint8ClampedArray}}},{}],156:[function(t,e,r){\"use strict\";e.exports=function(t,e){switch(\"undefined\"==typeof e&&(e=0),typeof t){case\"number\":if(t>0)return function(t,e){var r,n;for(r=new Array(t),n=0;n<t;++n)r[n]=e;return r}(0|t,e);break;case\"object\":if(\"number\"==typeof t.length)return function t(e,r,n){var i=0|e[n];if(i<=0)return[];var a,o=new Array(i);if(n===e.length-1)for(a=0;a<i;++a)o[a]=r;else for(a=0;a<i;++a)o[a]=t(e,r,n+1);return o}(t,e,0)}return[]}},{}],157:[function(t,e,r){\"use strict\";function n(t,e,r){r=r||2;var n,s,l,c,u,p,g,v=e&&e.length,m=v?e[0]*r:t.length,y=i(t,0,m,r,!0),x=[];if(!y)return x;if(v&&(y=function(t,e,r,n){var o,s,l,c,u,p=[];for(o=0,s=e.length;o<s;o++)l=e[o]*n,c=o<s-1?e[o+1]*n:t.length,(u=i(t,l,c,n,!1))===u.next&&(u.steiner=!0),p.push(d(u));for(p.sort(f),o=0;o<p.length;o++)h(p[o],r),r=a(r,r.next);return r}(t,e,y,r)),t.length>80*r){n=l=t[0],s=c=t[1];for(var b=r;b<m;b+=r)(u=t[b])<n&&(n=u),(p=t[b+1])<s&&(s=p),u>l&&(l=u),p>c&&(c=p);g=0!==(g=Math.max(l-n,c-s))?1/g:0}return o(y,x,r,n,s,g),x}function i(t,e,r,n,i){var a,o;if(i===M(t,e,r,n)>0)for(a=e;a<r;a+=n)o=w(a,t[a],t[a+1],o);else for(a=r-n;a>=e;a-=n)o=w(a,t[a],t[a+1],o);return o&&y(o,o.next)&&(k(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!y(n,n.next)&&0!==m(n.prev,n,n.next))n=n.next;else{if(k(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=p(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e<c&&(s++,n=n.nextZ);e++);for(l=c;s>0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var d,g,v=t;t.prev!==t.next;)if(d=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(d.i/r),e.push(t.i/r),e.push(g.i/r),k(t),t=g.next,v=g.next;else if((t=g)===v){h?1===h?o(t=c(t,e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(m(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(g(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&m(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(m(i,a,o)>=0)return!1;for(var s=i.x<a.x?i.x<o.x?i.x:o.x:a.x<o.x?a.x:o.x,l=i.y<a.y?i.y<o.y?i.y:o.y:a.y<o.y?a.y:o.y,c=i.x>a.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=p(s,l,e,r,n),h=p(c,u,e,r,n),d=t.prevZ,v=t.nextZ;d&&d.z>=f&&v&&v.z<=h;){if(d!==t.prev&&d!==t.next&&g(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&m(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,v!==t.prev&&v!==t.next&&g(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&m(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;d&&d.z>=f;){if(d!==t.prev&&d!==t.next&&g(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&m(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;v&&v.z<=h;){if(v!==t.prev&&v!==t.next&&g(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&m(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!y(i,a)&&x(i,n,n.next,a)&&b(i,a)&&b(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),k(n),k(n.next),n=t=a),n=n.next}while(n!==t);return n}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=_(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x<n.next.x?n:n.next}}n=n.next}while(n!==e);if(!r)return null;if(i===o)return r.prev;var l,c=r,u=r.x,f=r.y,h=1/0;n=r.next;for(;n!==c;)i>=n.x&&n.x>=u&&i!==n.x&&g(a<f?i:o,a,u,f,a<f?o:i,a,n.x,n.y)&&((l=Math.abs(a-n.y)/(i-n.x))<h||l===h&&n.x>r.x)&&b(n,t)&&(r=n,h=l),n=n.next;return r}(t,e)){var r=_(e,t);a(r,r.next)}}function p(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function d(t){var e=t,r=t;do{e.x<r.x&&(r=e),e=e.next}while(e!==t);return r}function g(t,e,r,n,i,a,o,s){return(i-o)*(e-s)-(t-o)*(a-s)>=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&x(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&b(t,e)&&b(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)}function m(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function y(t,e){return t.x===e.x&&t.y===e.y}function x(t,e,r,n){return!!(y(t,e)&&y(r,n)||y(t,n)&&y(r,e))||m(t,e,r)>0!=m(t,e,n)>0&&m(r,n,t)>0!=m(r,n,e)>0}function b(t,e){return m(t.prev,t,t.next)<0?m(t,e,t.next)>=0&&m(t,t.prev,e)>=0:m(t,e,t.prev)<0||m(t,t.next,e)<0}function _(t,e){var r=new A(t.i,t.x,t.y),n=new A(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function w(t,e,r,n){var i=new A(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function k(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function A(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function M(t,e,r,n){for(var i=0,a=e,o=r-n;a<r;a+=n)i+=(t[o]-t[a])*(t[a+1]+t[o+1]),o=a;return i}e.exports=n,e.exports.default=n,n.deviation=function(t,e,r,n){var i=e&&e.length,a=i?e[0]*r:t.length,o=Math.abs(M(t,0,a,r));if(i)for(var s=0,l=e.length;s<l;s++){var c=e[s]*r,u=s<l-1?e[s+1]*r:t.length;o-=Math.abs(M(t,c,u,r))}var f=0;for(s=0;s<n.length;s+=3){var h=n[s]*r,p=n[s+1]*r,d=n[s+2]*r;f+=Math.abs((t[h]-t[d])*(t[p+1]-t[h+1])-(t[h]-t[p])*(t[d+1]-t[h+1]))}return 0===o&&0===f?0:Math.abs((f-o)/o)},n.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var o=0;o<e;o++)r.vertices.push(t[i][a][o]);i>0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],158:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=t.length;if(\"number\"!=typeof e){e=0;for(var i=0;i<r;++i){var a=t[i];e=Math.max(e,a[0],a[1])}e=1+(0|e)}e|=0;for(var o=new Array(e),i=0;i<e;++i)o[i]=[];for(var i=0;i<r;++i){var a=t[i];o[a[0]].push(a[1]),o[a[1]].push(a[0])}for(var s=0;s<e;++s)n(o[s],function(t,e){return t-e});return o};var n=t(\"uniq\")},{uniq:525}],159:[function(t,e,r){\"use strict\";var n=t(\"../../object/valid-value\");e.exports=function(){return n(this).length=0,this}},{\"../../object/valid-value\":191}],160:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Array.from:t(\"./shim\")},{\"./is-implemented\":161,\"./shim\":162}],161:[function(t,e,r){\"use strict\";e.exports=function(){var t,e,r=Array.from;return\"function\"==typeof r&&(e=r(t=[\"raz\",\"dwa\"]),Boolean(e&&e!==t&&\"dwa\"===e[1]))}},{}],162:[function(t,e,r){\"use strict\";var n=t(\"es6-symbol\").iterator,i=t(\"../../function/is-arguments\"),a=t(\"../../function/is-function\"),o=t(\"../../number/to-pos-integer\"),s=t(\"../../object/valid-callable\"),l=t(\"../../object/valid-value\"),c=t(\"../../object/is-value\"),u=t(\"../../string/is-string\"),f=Array.isArray,h=Function.prototype.call,p={configurable:!0,enumerable:!0,writable:!0,value:null},d=Object.defineProperty;e.exports=function(t){var e,r,g,v,m,y,x,b,_,w,k=arguments[1],A=arguments[2];if(t=Object(l(t)),c(k)&&s(k),this&&this!==Array&&a(this))e=this;else{if(!k){if(i(t))return 1!==(m=t.length)?Array.apply(null,t):((v=new Array(1))[0]=t[0],v);if(f(t)){for(v=new Array(m=t.length),r=0;r<m;++r)v[r]=t[r];return v}}v=[]}if(!f(t))if(void 0!==(_=t[n])){for(x=s(_).call(t),e&&(v=new e),b=x.next(),r=0;!b.done;)w=k?h.call(k,A,b.value,r):b.value,e?(p.value=w,d(v,r,p)):v[r]=w,b=x.next(),++r;m=r}else if(u(t)){for(m=t.length,e&&(v=new e),r=0,g=0;r<m;++r)w=t[r],r+1<m&&(y=w.charCodeAt(0))>=55296&&y<=56319&&(w+=t[++r]),w=k?h.call(k,A,w,g):w,e?(p.value=w,d(v,g,p)):v[g]=w,++g;m=g}if(void 0===m)for(m=o(t.length),e&&(v=new e(m)),r=0;r<m;++r)w=k?h.call(k,A,t[r],r):t[r],e?(p.value=w,d(v,r,p)):v[r]=w;return e&&(p.value=null,v.length=m),v}},{\"../../function/is-arguments\":163,\"../../function/is-function\":164,\"../../number/to-pos-integer\":170,\"../../object/is-value\":180,\"../../object/valid-callable\":189,\"../../object/valid-value\":191,\"../../string/is-string\":195,\"es6-symbol\":205}],163:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(function(){return arguments}());e.exports=function(t){return n.call(t)===i}},{}],164:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(t(\"./noop\"));e.exports=function(t){return\"function\"==typeof t&&n.call(t)===i}},{\"./noop\":165}],165:[function(t,e,r){\"use strict\";e.exports=function(){}},{}],166:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Math.sign:t(\"./shim\")},{\"./is-implemented\":167,\"./shim\":168}],167:[function(t,e,r){\"use strict\";e.exports=function(){var t=Math.sign;return\"function\"==typeof t&&(1===t(10)&&-1===t(-20))}},{}],168:[function(t,e,r){\"use strict\";e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:t>0?1:-1}},{}],169:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":169}],171:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e})}}},{\"./valid-callable\":189,\"./valid-value\":191}],172:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":173,\"./shim\":174}],173:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],174:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o<l;++o)e=arguments[o],n(e).forEach(s);if(void 0!==r)throw r;return t}},{\"../keys\":181,\"../valid-value\":191}],175:[function(t,e,r){\"use strict\";var n=t(\"../array/from\"),i=t(\"./assign\"),a=t(\"./valid-value\");e.exports=function(t){var e=Object(a(t)),r=arguments[1],o=Object(arguments[2]);if(e!==t&&!r)return e;var s={};return r?n(r,function(e){(o.ensure||e in t)&&(s[e]=t[e])}):i(s,t),s}},{\"../array/from\":160,\"./assign\":172,\"./valid-value\":191}],176:[function(t,e,r){\"use strict\";var n,i,a,o,s=Object.create;t(\"./set-prototype-of/is-implemented\")()||(n=t(\"./set-prototype-of/shim\")),e.exports=n?1!==n.level?s:(i={},a={},o={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(t){a[t]=\"__proto__\"!==t?o:{configurable:!0,enumerable:!1,writable:!0,value:void 0}}),Object.defineProperties(i,a),Object.defineProperty(n,\"nullPolyfill\",{configurable:!1,enumerable:!1,writable:!1,value:i}),function(t,e){return s(null===t?i:t,e)}):s},{\"./set-prototype-of/is-implemented\":187,\"./set-prototype-of/shim\":188}],177:[function(t,e,r){\"use strict\";e.exports=t(\"./_iterate\")(\"forEach\")},{\"./_iterate\":171}],178:[function(t,e,r){\"use strict\";e.exports=function(t){return\"function\"==typeof t}},{}],179:[function(t,e,r){\"use strict\";var n=t(\"./is-value\"),i={function:!0,object:!0};e.exports=function(t){return n(t)&&i[typeof t]||!1}},{\"./is-value\":180}],180:[function(t,e,r){\"use strict\";var n=t(\"../function/noop\")();e.exports=function(t){return t!==n&&null!==t}},{\"../function/noop\":165}],181:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.keys:t(\"./shim\")},{\"./is-implemented\":182,\"./shim\":183}],182:[function(t,e,r){\"use strict\";e.exports=function(){try{return Object.keys(\"primitive\"),!0}catch(t){return!1}}},{}],183:[function(t,e,r){\"use strict\";var n=t(\"../is-value\"),i=Object.keys;e.exports=function(t){return i(n(t)?Object(t):t)}},{\"../is-value\":180}],184:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./for-each\"),a=Function.prototype.call;e.exports=function(t,e){var r={},o=arguments[2];return n(e),i(t,function(t,n,i,s){r[n]=a.call(e,o,t,n,i,s)}),r}},{\"./for-each\":177,\"./valid-callable\":189}],185:[function(t,e,r){\"use strict\";var n=t(\"./is-value\"),i=Array.prototype.forEach,a=Object.create;e.exports=function(t){var e=a(null);return i.call(arguments,function(t){n(t)&&function(t,e){var r;for(r in t)e[r]=t[r]}(Object(t),e)}),e}},{\"./is-value\":180}],186:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.setPrototypeOf:t(\"./shim\")},{\"./is-implemented\":187,\"./shim\":188}],187:[function(t,e,r){\"use strict\";var n=Object.create,i=Object.getPrototypeOf,a={};e.exports=function(){var t=Object.setPrototypeOf,e=arguments[0]||n;return\"function\"==typeof t&&i(t(e(null),a))===a}},{}],188:[function(t,e,r){\"use strict\";var n,i,a,o,s=t(\"../is-object\"),l=t(\"../valid-value\"),c=Object.prototype.isPrototypeOf,u=Object.defineProperty,f={configurable:!0,enumerable:!1,writable:!0,value:void 0};n=function(t,e){if(l(t),null===e||s(e))return t;throw new TypeError(\"Prototype must be null or an object\")},e.exports=(i=function(){var t,e=Object.create(null),r={},n=Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\");if(n){try{(t=n.set).call(e,r)}catch(t){}if(Object.getPrototypeOf(e)===r)return{set:t,level:2}}return e.__proto__=r,Object.getPrototypeOf(e)===r?{level:2}:((e={}).__proto__=r,Object.getPrototypeOf(e)===r&&{level:1})}())?(2===i.level?i.set?(o=i.set,a=function(t,e){return o.call(n(t,e),e),t}):a=function(t,e){return n(t,e).__proto__=e,t}:a=function t(e,r){var i;return n(e,r),(i=c.call(t.nullPolyfill,e))&&delete t.nullPolyfill.__proto__,null===r&&(r=t.nullPolyfill),e.__proto__=r,i&&u(t.nullPolyfill,\"__proto__\",f),e},Object.defineProperty(a,\"level\",{configurable:!1,enumerable:!1,writable:!1,value:i.level})):null,t(\"../create\")},{\"../create\":176,\"../is-object\":179,\"../valid-value\":191}],189:[function(t,e,r){\"use strict\";e.exports=function(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return t}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"./is-object\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not an Object\");return t}},{\"./is-object\":179}],191:[function(t,e,r){\"use strict\";var n=t(\"./is-value\");e.exports=function(t){if(!n(t))throw new TypeError(\"Cannot use null or undefined\");return t}},{\"./is-value\":180}],192:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?String.prototype.contains:t(\"./shim\")},{\"./is-implemented\":193,\"./shim\":194}],193:[function(t,e,r){\"use strict\";var n=\"razdwatrzy\";e.exports=function(){return\"function\"==typeof n.contains&&(!0===n.contains(\"dwa\")&&!1===n.contains(\"foo\"))}},{}],194:[function(t,e,r){\"use strict\";var n=String.prototype.indexOf;e.exports=function(t){return n.call(this,t,arguments[1])>-1}},{}],195:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],196:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],197:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o(function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t})}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":200,d:140,\"es5-ext/object/set-prototype-of\":186,\"es5-ext/string/#/contains\":192,\"es6-symbol\":205}],198:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,v,m=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,m,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p<d&&(g=t[p],p+1<d&&(v=g.charCodeAt(0))>=55296&&v<=56319&&(g+=t[++p]),l.call(e,m,g,f),!h);++p);else c.call(t,function(t){return l.call(e,m,t,f),h})}},{\"./get\":199,\"es5-ext/function/is-arguments\":163,\"es5-ext/object/valid-callable\":189,\"es5-ext/string/is-string\":195}],199:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":197,\"./string\":202,\"./valid-iterable\":203,\"es5-ext/function/is-arguments\":163,\"es5-ext/string/is-string\":195,\"es6-symbol\":205}],200:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l(function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()}),next:l(function(){return this._createResult(this._next())}),_createResult:l(function(t){return void 0===t?{done:!0,value:void 0}:{done:!1,value:this._resolve(t)}}),_resolve:l(function(t){return this.__list__[t]}),_unBind:l(function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off(\"_add\",this._onAdd),this.__context__.off(\"_delete\",this._onDelete),this.__context__.off(\"_clear\",this._onClear),this.__context__=null)}),toString:l(function(){return\"[object \"+(this[u.toStringTag]||\"Object\")+\"]\"})},c({_onAdd:l(function(t){t>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(e,r){e>=t&&(this.__redo__[r]=++e)},this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))}),_onDelete:l(function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach(function(e,r){e>t&&(this.__redo__[r]=--e)},this)))}),_onClear:l(function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0})}))),f(n.prototype,u.iterator,l(function(){return this}))},{d:140,\"d/auto-bind\":139,\"es5-ext/array/#/clear\":159,\"es5-ext/object/assign\":172,\"es5-ext/object/valid-callable\":189,\"es5-ext/object/valid-value\":191,\"es6-symbol\":205}],201:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":163,\"es5-ext/object/is-value\":180,\"es5-ext/string/is-string\":195,\"es6-symbol\":205}],202:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a(function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()}),_resolve:a(function(t){var e,r=this.__list__[t];return this.__nextIndex__===this.__length__?r:(e=r.charCodeAt(0))>=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r})}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":200,d:140,\"es5-ext/object/set-prototype-of\":186,\"es6-symbol\":205}],203:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":201}],204:[function(t,e,r){(function(n,i){!function(t,n){\"object\"==typeof r&&\"undefined\"!=typeof e?e.exports=n():t.ES6Promise=n()}(this,function(){\"use strict\";function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},a=0,o=void 0,s=void 0,l=function(t,e){g[a]=t,g[a+1]=e,2===(a+=2)&&(s?s(v):_())};var c=\"undefined\"!=typeof window?window:void 0,u=c||{},f=u.MutationObserver||u.WebKitMutationObserver,h=\"undefined\"==typeof self&&\"undefined\"!=typeof n&&\"[object process]\"==={}.toString.call(n),p=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function d(){var t=setTimeout;return function(){return t(v,1)}}var g=new Array(1e3);function v(){for(var t=0;t<a;t+=2){(0,g[t])(g[t+1]),g[t]=void 0,g[t+1]=void 0}a=0}var m,y,x,b,_=void 0;function w(t,e){var r=arguments,n=this,i=new this.constructor(M);void 0===i[A]&&U(i);var a,o=n._state;return o?(a=r[o-1],l(function(){return j(o,i,a,n._result)})):R(n,i,t,e),i}function k(t){if(t&&\"object\"==typeof t&&t.constructor===this)return t;var e=new this(M);return O(e,t),e}h?_=function(){return n.nextTick(v)}:f?(y=0,x=new f(v),b=document.createTextNode(\"\"),x.observe(b,{characterData:!0}),_=function(){b.data=y=++y%2}):p?((m=new MessageChannel).port1.onmessage=v,_=function(){return m.port2.postMessage(0)}):_=void 0===c&&\"function\"==typeof t?function(){try{var e=t(\"vertx\");return o=e.runOnLoop||e.runOnContext,function(){o(v)}}catch(t){return d()}}():d();var A=Math.random().toString(36).substring(16);function M(){}var T=void 0,S=1,C=2,E=new B;function L(t){try{return t.then}catch(t){return E.error=t,E}}function z(t,r,n){r.constructor===t.constructor&&n===w&&r.constructor.resolve===k?function(t,e){e._state===S?D(t,e._result):e._state===C?P(t,e._result):R(e,void 0,function(e){return O(t,e)},function(e){return P(t,e)})}(t,r):n===E?P(t,E.error):void 0===n?D(t,r):e(n)?function(t,e,r){l(function(t){var n=!1,i=function(t,e,r,n){try{t.call(e,r,n)}catch(t){return t}}(r,e,function(r){n||(n=!0,e!==r?O(t,r):D(t,r))},function(e){n||(n=!0,P(t,e))},t._label);!n&&i&&(n=!0,P(t,i))},t)}(t,r,n):D(t,r)}function O(t,e){var r;t===e?P(t,new TypeError(\"You cannot resolve a promise with itself\")):\"function\"==typeof(r=e)||\"object\"==typeof r&&null!==r?z(t,e,L(e)):D(t,e)}function I(t){t._onerror&&t._onerror(t._result),F(t)}function D(t,e){t._state===T&&(t._result=e,t._state=S,0!==t._subscribers.length&&l(F,t))}function P(t,e){t._state===T&&(t._state=C,t._result=e,l(I,t))}function R(t,e,r,n){var i=t._subscribers,a=i.length;t._onerror=null,i[a]=e,i[a+S]=r,i[a+C]=n,0===a&&t._state&&l(F,t)}function F(t){var e=t._subscribers,r=t._state;if(0!==e.length){for(var n=void 0,i=void 0,a=t._result,o=0;o<e.length;o+=3)n=e[o],i=e[o+r],n?j(r,n,i,a):i(a);t._subscribers.length=0}}function B(){this.error=null}var N=new B;function j(t,r,n,i){var a=e(n),o=void 0,s=void 0,l=void 0,c=void 0;if(a){if((o=function(t,e){try{return t(e)}catch(t){return N.error=t,N}}(n,i))===N?(c=!0,s=o.error,o=null):l=!0,r===o)return void P(r,new TypeError(\"A promises callback cannot return that same promise.\"))}else o=i,l=!0;r._state!==T||(a&&l?O(r,o):c?P(r,s):t===S?D(r,o):t===C&&P(r,o))}var V=0;function U(t){t[A]=V++,t._state=void 0,t._result=void 0,t._subscribers=[]}function q(t,e){this._instanceConstructor=t,this.promise=new t(M),this.promise[A]||U(this.promise),r(e)?(this._input=e,this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?D(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&D(this.promise,this._result))):P(this.promise,new Error(\"Array Methods must be provided an Array\"))}function H(t){this[A]=V++,this._result=this._state=void 0,this._subscribers=[],M!==t&&(\"function\"!=typeof t&&function(){throw new TypeError(\"You must pass a resolver function as the first argument to the promise constructor\")}(),this instanceof H?function(t,e){try{e(function(e){O(t,e)},function(e){P(t,e)})}catch(e){P(t,e)}}(this,t):function(){throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\")}())}function G(){var t=void 0;if(\"undefined\"!=typeof i)t=i;else if(\"undefined\"!=typeof self)t=self;else try{t=Function(\"return this\")()}catch(t){throw new Error(\"polyfill failed because global object is unavailable in this environment\")}var e=t.Promise;if(e){var r=null;try{r=Object.prototype.toString.call(e.resolve())}catch(t){}if(\"[object Promise]\"===r&&!e.cast)return}t.Promise=H}return q.prototype._enumerate=function(){for(var t=this.length,e=this._input,r=0;this._state===T&&r<t;r++)this._eachEntry(e[r],r)},q.prototype._eachEntry=function(t,e){var r=this._instanceConstructor,n=r.resolve;if(n===k){var i=L(t);if(i===w&&t._state!==T)this._settledAt(t._state,e,t._result);else if(\"function\"!=typeof i)this._remaining--,this._result[e]=t;else if(r===H){var a=new r(M);z(a,t,i),this._willSettleAt(a,e)}else this._willSettleAt(new r(function(e){return e(t)}),e)}else this._willSettleAt(n(t),e)},q.prototype._settledAt=function(t,e,r){var n=this.promise;n._state===T&&(this._remaining--,t===C?P(n,r):this._result[e]=r),0===this._remaining&&D(n,this._result)},q.prototype._willSettleAt=function(t,e){var r=this;R(t,void 0,function(t){return r._settledAt(S,e,t)},function(t){return r._settledAt(C,e,t)})},H.all=function(t){return new q(this,t).promise},H.race=function(t){var e=this;return r(t)?new e(function(r,n){for(var i=t.length,a=0;a<i;a++)e.resolve(t[a]).then(r,n)}):new e(function(t,e){return e(new TypeError(\"You must pass an array to race.\"))})},H.resolve=k,H.reject=function(t){var e=new this(M);return P(e,t),e},H._setScheduler=function(t){s=t},H._setAsap=function(t){l=t},H._asap=l,H.prototype={constructor:H,then:w,catch:function(t){return this.then(null,t)}},G(),H.polyfill=G,H.Promise=H,H})}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:468}],205:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Symbol:t(\"./polyfill\")},{\"./is-implemented\":206,\"./polyfill\":208}],206:[function(t,e,r){\"use strict\";var n={object:!0,symbol:!0};e.exports=function(){var t;if(\"function\"!=typeof Symbol)return!1;t=Symbol(\"test symbol\");try{String(t)}catch(t){return!1}return!!n[typeof Symbol.iterator]&&(!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag])}},{}],207:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],208:[function(t,e,r){\"use strict\";var n,i,a,o,s=t(\"d\"),l=t(\"./validate-symbol\"),c=Object.create,u=Object.defineProperties,f=Object.defineProperty,h=Object.prototype,p=c(null);if(\"function\"==typeof Symbol){n=Symbol;try{String(n()),o=!0}catch(t){}}var d,g=(d=c(null),function(t){for(var e,r,n=0;d[t+(n||\"\")];)++n;return d[t+=n||\"\"]=!0,f(h,e=\"@@\"+t,s.gs(null,function(t){r||(r=!0,f(this,e,s(t)),r=!1)})),e});a=function(t){if(this instanceof a)throw new TypeError(\"Symbol is not a constructor\");return i(t)},e.exports=i=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return o?n(e):(r=c(a.prototype),e=void 0===e?\"\":String(e),u(r,{__description__:s(\"\",e),__name__:s(\"\",g(e))}))},u(i,{for:s(function(t){return p[t]?p[t]:p[t]=i(String(t))}),keyFor:s(function(t){var e;for(e in l(t),p)if(p[e]===t)return e}),hasInstance:s(\"\",n&&n.hasInstance||i(\"hasInstance\")),isConcatSpreadable:s(\"\",n&&n.isConcatSpreadable||i(\"isConcatSpreadable\")),iterator:s(\"\",n&&n.iterator||i(\"iterator\")),match:s(\"\",n&&n.match||i(\"match\")),replace:s(\"\",n&&n.replace||i(\"replace\")),search:s(\"\",n&&n.search||i(\"search\")),species:s(\"\",n&&n.species||i(\"species\")),split:s(\"\",n&&n.split||i(\"split\")),toPrimitive:s(\"\",n&&n.toPrimitive||i(\"toPrimitive\")),toStringTag:s(\"\",n&&n.toStringTag||i(\"toStringTag\")),unscopables:s(\"\",n&&n.unscopables||i(\"unscopables\"))}),u(a.prototype,{constructor:s(i),toString:s(\"\",function(){return this.__name__})}),u(i.prototype,{toString:s(function(){return\"Symbol (\"+l(this).__description__+\")\"}),valueOf:s(function(){return l(this)})}),f(i.prototype,i.toPrimitive,s(\"\",function(){var t=l(this);return\"symbol\"==typeof t?t:t.toString()})),f(i.prototype,i.toStringTag,s(\"c\",\"Symbol\")),f(a.prototype,i.toStringTag,s(\"c\",i.prototype[i.toStringTag])),f(a.prototype,i.toPrimitive,s(\"c\",i.prototype[i.toPrimitive]))},{\"./validate-symbol\":209,d:140}],209:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":207}],210:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":211,\"./polyfill\":213}],211:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],212:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],213:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/object/valid-object\"),o=t(\"es5-ext/object/valid-value\"),s=t(\"es5-ext/string/random-uniq\"),l=t(\"d\"),c=t(\"es6-iterator/get\"),u=t(\"es6-iterator/for-of\"),f=t(\"es6-symbol\").toStringTag,h=t(\"./is-native-implemented\"),p=Array.isArray,d=Object.defineProperty,g=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=h&&i&&WeakMap!==n?i(new WeakMap,v(this)):this,null!=e&&(p(e)||(e=c(e))),d(t,\"__weakMapData__\",l(\"c\",\"$weakMap$\"+s())),e?(u(e,function(e){o(e),t.set(e[0],e[1])}),t):t},h&&(i&&i(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:l(n)})),Object.defineProperties(n.prototype,{delete:l(function(t){return!!g.call(a(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:l(function(t){if(g.call(a(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:l(function(t){return g.call(a(t),this.__weakMapData__)}),set:l(function(t,e){return d(a(t),this.__weakMapData__,l(\"c\",e)),this}),toString:l(function(){return\"[object WeakMap]\"})}),d(n.prototype,f,l(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":212,d:140,\"es5-ext/object/set-prototype-of\":186,\"es5-ext/object/valid-object\":190,\"es5-ext/object/valid-value\":191,\"es5-ext/string/random-uniq\":196,\"es6-iterator/for-of\":198,\"es6-iterator/get\":199,\"es6-symbol\":205}],214:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n=e||0,i=r||1;return[[t[12]+t[0],t[13]+t[1],t[14]+t[2],t[15]+t[3]],[t[12]-t[0],t[13]-t[1],t[14]-t[2],t[15]-t[3]],[t[12]+t[4],t[13]+t[5],t[14]+t[6],t[15]+t[7]],[t[12]-t[4],t[13]-t[5],t[14]-t[6],t[15]-t[7]],[n*t[12]+t[8],n*t[13]+t[9],n*t[14]+t[10],n*t[15]+t[11]],[i*t[12]-t[8],i*t[13]-t[9],i*t[14]-t[10],i*t[15]-t[11]]]}},{}],215:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":409}],216:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){switch(arguments.length){case 0:return new o([0],[0],0);case 1:if(\"number\"==typeof t){var n=l(t);return new o(n,n,0)}return new o(t,l(t.length),0);case 2:if(\"number\"==typeof e){var n=l(t.length);return new o(t,n,+e)}r=0;case 3:if(t.length!==e.length)throw new Error(\"state and velocity lengths must match\");return new o(t,e,r)}};var n=t(\"cubic-hermite\"),i=t(\"binary-search-bounds\");function a(t,e,r){return Math.min(e,Math.max(t,r))}function o(t,e,r){this.dimension=t.length,this.bounds=[new Array(this.dimension),new Array(this.dimension)];for(var n=0;n<this.dimension;++n)this.bounds[0][n]=-1/0,this.bounds[1][n]=1/0;this._state=t.slice().reverse(),this._velocity=e.slice().reverse(),this._time=[r],this._scratch=[t.slice(),t.slice(),t.slice(),t.slice(),t.slice()]}var s=o.prototype;function l(t){for(var e=new Array(t),r=0;r<t;++r)e[r]=0;return e}s.flush=function(t){var e=i.gt(this._time,t)-1;e<=0||(this._time.splice(0,e),this._state.splice(0,e*this.dimension),this._velocity.splice(0,e*this.dimension))},s.curve=function(t){var e=this._time,r=e.length,o=i.le(e,t),s=this._scratch[0],l=this._state,c=this._velocity,u=this.dimension,f=this.bounds;if(o<0)for(var h=u-1,p=0;p<u;++p,--h)s[p]=l[h];else if(o>=r-1){h=l.length-1;var d=t-e[r-1];for(p=0;p<u;++p,--h)s[p]=l[h]+d*c[h]}else{h=u*(o+1)-1;var g=e[o],v=e[o+1]-g||1,m=this._scratch[1],y=this._scratch[2],x=this._scratch[3],b=this._scratch[4],_=!0;for(p=0;p<u;++p,--h)m[p]=l[h],x[p]=c[h]*v,y[p]=l[h+u],b[p]=c[h+u]*v,_=_&&m[p]===y[p]&&x[p]===b[p]&&0===x[p];if(_)for(p=0;p<u;++p)s[p]=m[p];else n(m,x,y,b,(t-g)/v,s)}var w=f[0],k=f[1];for(p=0;p<u;++p)s[p]=a(w[p],k[p],s[p]);return s},s.dcurve=function(t){var e=this._time,r=e.length,a=i.le(e,t),o=this._scratch[0],s=this._state,l=this._velocity,c=this.dimension;if(a>=r-1)for(var u=s.length-1,f=(e[r-1],0);f<c;++f,--u)o[f]=l[u];else{u=c*(a+1)-1;var h=e[a],p=e[a+1]-h||1,d=this._scratch[1],g=this._scratch[2],v=this._scratch[3],m=this._scratch[4],y=!0;for(f=0;f<c;++f,--u)d[f]=s[u],v[f]=l[u]*p,g[f]=s[u+c],m[f]=l[u+c]*p,y=y&&d[f]===g[f]&&v[f]===m[f]&&0===v[f];if(y)for(f=0;f<c;++f)o[f]=0;else{n.derivative(d,v,g,m,(t-h)/p,o);for(f=0;f<c;++f)o[f]/=p}}return o},s.lastT=function(){var t=this._time;return t[t.length-1]},s.stable=function(){for(var t=this._velocity,e=t.length,r=this.dimension-1;r>=0;--r)if(t[--e])return!1;return!0},s.jump=function(t){var e=this.lastT(),r=this.dimension;if(!(t<e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=this.bounds,l=s[0],c=s[1];this._time.push(e,t);for(var u=0;u<2;++u)for(var f=0;f<r;++f)n.push(n[o++]),i.push(0);this._time.push(t);for(f=r;f>0;--f)n.push(a(l[f-1],c[f-1],arguments[f])),i.push(0)}},s.push=function(t){var e=this.lastT(),r=this.dimension;if(!(t<e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=t-e,l=this.bounds,c=l[0],u=l[1],f=s>1e-6?1/s:0;this._time.push(t);for(var h=r;h>0;--h){var p=a(c[h-1],u[h-1],arguments[h]);n.push(p),i.push((p-n[o++])*f)}}},s.set=function(t){var e=this.dimension;if(!(t<this.lastT()||arguments.length!==e+1)){var r=this._state,n=this._velocity,i=this.bounds,o=i[0],s=i[1];this._time.push(t);for(var l=e;l>0;--l)r.push(a(o[l-1],s[l-1],arguments[l])),n.push(0)}},s.move=function(t){var e=this.lastT(),r=this.dimension;if(!(t<=e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=this.bounds,l=s[0],c=s[1],u=t-e,f=u>1e-6?1/u:0;this._time.push(t);for(var h=r;h>0;--h){var p=arguments[h];n.push(a(l[h-1],c[h-1],n[o++]+p)),i.push(p*f)}}},s.idle=function(t){var e=this.lastT();if(!(t<e)){var r=this.dimension,n=this._state,i=this._velocity,o=n.length-r,s=this.bounds,l=s[0],c=s[1],u=t-e;this._time.push(t);for(var f=r-1;f>=0;--f)n.push(a(l[f],c[f],n[o]+u*i[o])),i.push(0),o+=1}}},{\"binary-search-bounds\":80,\"cubic-hermite\":134}],217:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;i<t.length;i++)for(a=0;a<l;a++)e[o++]=null===t[i][a]?NaN:t[i][a]}else if(e&&\"string\"!=typeof e)e.set(t,r);else{var f=n(e||\"float32\");if(Array.isArray(t)||\"array\"===e)for(e=new f(t.length+r),i=0,o=r,s=e.length;o<s;o++,i++)e[o]=null===t[i]?NaN:t[i];else 0===r?e=new f(t):(e=new f(t.length+r)).set(t,r)}return e}},{dtype:155}],218:[function(t,e,r){\"use strict\";var n=t(\"css-font/stringify\"),i=[32,126];e.exports=function(t){var e=(t=t||{}).shape?t.shape:t.canvas?[t.canvas.width,t.canvas.height]:[512,512],r=t.canvas||document.createElement(\"canvas\"),a=t.font,o=\"number\"==typeof t.step?[t.step,t.step]:t.step||[32,32],s=t.chars||i;a&&\"string\"!=typeof a&&(a=n(a));if(Array.isArray(s)){if(2===s.length&&\"number\"==typeof s[0]&&\"number\"==typeof s[1]){for(var l=[],c=s[0],u=0;c<=s[1];c++)l[u++]=String.fromCharCode(c);s=l}}else s=String(s).split(\"\");e=e.slice(),r.width=e[0],r.height=e[1];var f=r.getContext(\"2d\");f.fillStyle=\"#000\",f.fillRect(0,0,r.width,r.height),f.font=a,f.textAlign=\"center\",f.textBaseline=\"middle\",f.fillStyle=\"#fff\";for(var h=o[0]/2,p=o[1]/2,c=0;c<s.length;c++)f.fillText(s[c],h,p),(h+=o[0])>e[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":131}],219:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",tittle:void 0!==e.tittle?e.tittle:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var v=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-v+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var m=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=m,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.tittle&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.tittle,0,0),d.tittle=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-m}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n<r.length;n+=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}function o(t){for(var e=t.height,r=t.data,n=r.length-1;n>0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],220:[function(t,e,r){\"use strict\";e.exports=function(t){return new c(t||d,null)};var n=0,i=1;function a(t,e,r,n,i,a){this._color=t,this.key=e,this.value=r,this.left=n,this.right=i,this._count=a}function o(t){return new a(t._color,t.key,t.value,t.left,t.right,t._count)}function s(t,e){return new a(t,e.key,e.value,e.left,e.right,e._count)}function l(t){t._count=1+(t.left?t.left._count:0)+(t.right?t.right._count:0)}function c(t,e){this._compare=t,this.root=e}var u=c.prototype;function f(t,e){this.tree=t,this._stack=e}Object.defineProperty(u,\"keys\",{get:function(){var t=[];return this.forEach(function(e,r){t.push(e)}),t}}),Object.defineProperty(u,\"values\",{get:function(){var t=[];return this.forEach(function(e,r){t.push(r)}),t}}),Object.defineProperty(u,\"length\",{get:function(){return this.root?this.root._count:0}}),u.insert=function(t,e){for(var r=this._compare,o=this.root,u=[],f=[];o;){var h=r(t,o.key);u.push(o),f.push(h),o=h<=0?o.left:o.right}u.push(new a(n,t,e,null,null,1));for(var p=u.length-2;p>=0;--p){o=u[p];f[p]<=0?u[p]=new a(o._color,o.key,o.value,u[p+1],o.right,o._count+1):u[p]=new a(o._color,o.key,o.value,o.left,u[p+1],o._count+1)}for(p=u.length-1;p>1;--p){var d=u[p-1];o=u[p];if(d._color===i||o._color===i)break;var g=u[p-2];if(g.left===d)if(d.left===o){if(!(v=g.right)||v._color!==n){if(g._color=n,g.left=d.right,d._color=i,d.right=g,u[p-2]=d,u[p-1]=o,l(g),l(d),p>=3)(m=u[p-3]).left===g?m.left=d:m.right=d;break}d._color=i,g.right=s(i,v),g._color=n,p-=1}else{if(!(v=g.right)||v._color!==n){if(d.right=o.left,g._color=n,g.left=o.right,o._color=i,o.left=d,o.right=g,u[p-2]=o,u[p-1]=d,l(g),l(d),l(o),p>=3)(m=u[p-3]).left===g?m.left=o:m.right=o;break}d._color=i,g.right=s(i,v),g._color=n,p-=1}else if(d.right===o){if(!(v=g.left)||v._color!==n){if(g._color=n,g.right=d.left,d._color=i,d.left=g,u[p-2]=d,u[p-1]=o,l(g),l(d),p>=3)(m=u[p-3]).right===g?m.right=d:m.left=d;break}d._color=i,g.left=s(i,v),g._color=n,p-=1}else{var v;if(!(v=g.left)||v._color!==n){var m;if(d.left=o.right,g._color=n,g.right=o.left,o._color=i,o.right=d,o.left=g,u[p-2]=o,u[p-1]=d,l(g),l(d),l(o),p>=3)(m=u[p-3]).right===g?m.right=o:m.left=o;break}d._color=i,g.left=s(i,v),g._color=n,p-=1}}return u[0]._color=i,new c(r,u[0])},u.forEach=function(t,e,r){if(this.root)switch(arguments.length){case 1:return function t(e,r){var n;if(r.left&&(n=t(e,r.left)))return n;return(n=e(r.key,r.value))||(r.right?t(e,r.right):void 0)}(t,this.root);case 2:return function t(e,r,n,i){if(r(e,i.key)<=0){var a;if(i.left&&(a=t(e,r,n,i.left)))return a;if(a=n(i.key,i.value))return a}if(i.right)return t(e,r,n,i.right)}(e,this._compare,t,this.root);case 3:if(this._compare(e,r)>=0)return;return function t(e,r,n,i,a){var o,s=n(e,a.key),l=n(r,a.key);if(s<=0){if(a.left&&(o=t(e,r,n,i,a.left)))return o;if(l>0&&(o=i(a.key,a.value)))return o}if(l>0&&a.right)return t(e,r,n,i,a.right)}(e,r,this._compare,t,this.root)}},Object.defineProperty(u,\"begin\",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.left;return new f(this,t)}}),Object.defineProperty(u,\"end\",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.right;return new f(this,t)}}),u.at=function(t){if(t<0)return new f(this,[]);for(var e=this.root,r=[];;){if(r.push(e),e.left){if(t<e.left._count){e=e.left;continue}t-=e.left._count}if(!t)return new f(this,r);if(t-=1,!e.right)break;if(t>=e.right._count)break;e=e.right}return new f(this,[])},u.ge=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<=0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new f(this,n)},u.gt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new f(this,n)},u.lt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new f(this,n)},u.le=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>=0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new f(this,n)},u.find=function(t){for(var e=this._compare,r=this.root,n=[];r;){var i=e(t,r.key);if(n.push(r),0===i)return new f(this,n);r=i<=0?r.left:r.right}return new f(this,[])},u.remove=function(t){var e=this.find(t);return e?e.remove():this},u.get=function(t){for(var e=this._compare,r=this.root;r;){var n=e(t,r.key);if(0===n)return r.value;r=n<=0?r.left:r.right}};var h=f.prototype;function p(t,e){t.key=e.key,t.value=e.value,t.left=e.left,t.right=e.right,t._color=e._color,t._count=e._count}function d(t,e){return t<e?-1:t>e?1:0}Object.defineProperty(h,\"valid\",{get:function(){return this._stack.length>0}}),Object.defineProperty(h,\"node\",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),h.clone=function(){return new f(this.tree,this._stack.slice())},h.remove=function(){var t=this._stack;if(0===t.length)return this.tree;var e=new Array(t.length),r=t[t.length-1];e[e.length-1]=new a(r._color,r.key,r.value,r.left,r.right,r._count);for(var u=t.length-2;u>=0;--u){(r=t[u]).left===t[u+1]?e[u]=new a(r._color,r.key,r.value,e[u+1],r.right,r._count):e[u]=new a(r._color,r.key,r.value,r.left,e[u+1],r._count)}if((r=e[e.length-1]).left&&r.right){var f=e.length;for(r=r.left;r.right;)e.push(r),r=r.right;var h=e[f-1];e.push(new a(r._color,h.key,h.value,r.left,r.right,r._count)),e[f-1].key=r.key,e[f-1].value=r.value;for(u=e.length-2;u>=f;--u)r=e[u],e[u]=new a(r._color,r.key,r.value,r.left,e[u+1],r._count);e[f-1].left=e[f]}if((r=e[e.length-1])._color===n){var d=e[e.length-2];d.left===r?d.left=null:d.right===r&&(d.right=null),e.pop();for(u=0;u<e.length;++u)e[u]._count--;return new c(this.tree._compare,e[0])}if(r.left||r.right){r.left?p(r,r.left):r.right&&p(r,r.right),r._color=i;for(u=0;u<e.length-1;++u)e[u]._count--;return new c(this.tree._compare,e[0])}if(1===e.length)return new c(this.tree._compare,null);for(u=0;u<e.length;++u)e[u]._count--;var g=e[e.length-2];return function(t){for(var e,r,a,c,u=t.length-1;u>=0;--u){if(e=t[u],0===u)return void(e._color=i);if((r=t[u-1]).left===e){if((a=r.right).right&&a.right._color===n)return c=(a=r.right=o(a)).right=o(a.right),r.right=a.left,a.left=r,a.right=c,a._color=r._color,e._color=i,r._color=i,c._color=i,l(r),l(a),u>1&&((f=t[u-2]).left===r?f.left=a:f.right=a),void(t[u-1]=a);if(a.left&&a.left._color===n)return c=(a=r.right=o(a)).left=o(a.left),r.right=c.left,a.left=c.right,c.left=r,c.right=a,c._color=r._color,r._color=i,a._color=i,e._color=i,l(r),l(a),l(c),u>1&&((f=t[u-2]).left===r?f.left=c:f.right=c),void(t[u-1]=c);if(a._color===i){if(r._color===n)return r._color=i,void(r.right=s(n,a));r.right=s(n,a);continue}a=o(a),r.right=a.left,a.left=r,a._color=r._color,r._color=n,l(r),l(a),u>1&&((f=t[u-2]).left===r?f.left=a:f.right=a),t[u-1]=a,t[u]=r,u+1<t.length?t[u+1]=e:t.push(e),u+=2}else{if((a=r.left).left&&a.left._color===n)return c=(a=r.left=o(a)).left=o(a.left),r.left=a.right,a.right=r,a.left=c,a._color=r._color,e._color=i,r._color=i,c._color=i,l(r),l(a),u>1&&((f=t[u-2]).right===r?f.right=a:f.left=a),void(t[u-1]=a);if(a.right&&a.right._color===n)return c=(a=r.left=o(a)).right=o(a.right),r.left=c.right,a.right=c.left,c.right=r,c.left=a,c._color=r._color,r._color=i,a._color=i,e._color=i,l(r),l(a),l(c),u>1&&((f=t[u-2]).right===r?f.right=c:f.left=c),void(t[u-1]=c);if(a._color===i){if(r._color===n)return r._color=i,void(r.left=s(n,a));r.left=s(n,a);continue}var f;a=o(a),r.left=a.right,a.right=r,a._color=r._color,r._color=n,l(r),l(a),u>1&&((f=t[u-2]).right===r?f.right=a:f.left=a),t[u-1]=a,t[u]=r,u+1<t.length?t[u+1]=e:t.push(e),u+=2}}}(e),g.left===r?g.left=null:g.right=null,new c(this.tree._compare,e[0])},Object.defineProperty(h,\"key\",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(h,\"value\",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(h,\"index\",{get:function(){var t=0,e=this._stack;if(0===e.length){var r=this.tree.root;return r?r._count:0}e[e.length-1].left&&(t=e[e.length-1].left._count);for(var n=e.length-2;n>=0;--n)e[n+1]===e[n].right&&(++t,e[n].left&&(t+=e[n].left._count));return t},enumerable:!0}),h.next=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.right)for(e=e.right;e;)t.push(e),e=e.left;else for(t.pop();t.length>0&&t[t.length-1].right===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,\"hasNext\",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].right)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].left===t[e])return!0;return!1}}),h.update=function(t){var e=this._stack;if(0===e.length)throw new Error(\"Can't update empty node!\");var r=new Array(e.length),n=e[e.length-1];r[r.length-1]=new a(n._color,n.key,t,n.left,n.right,n._count);for(var i=e.length-2;i>=0;--i)(n=e[i]).left===e[i+1]?r[i]=new a(n._color,n.key,n.value,r[i+1],n.right,n._count):r[i]=new a(n._color,n.key,n.value,n.left,r[i+1],n._count);return new c(this.tree._compare,r[0])},h.prev=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.left)for(e=e.left;e;)t.push(e),e=e.right;else for(t.pop();t.length>0&&t[t.length-1].left===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,\"hasPrev\",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].left)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].right===t[e])return!0;return!1}})},{}],221:[function(t,e,r){var n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],i=607/128,a=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];function o(t){if(t<0)return Number(\"0/0\");for(var e=a[0],r=a.length-1;r>0;--r)e+=a[r]/(t+r);var n=t+i+.5;return.5*Math.log(2*Math.PI)+(t+.5)*Math.log(n)-n+Math.log(e)-Math.log(t)}e.exports=function t(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*t(1-e));if(e>100)return Math.exp(o(e));e-=1;for(var r=n[0],i=1;i<9;i++)r+=n[i]/(e+i);var a=e+7+.5;return Math.sqrt(2*Math.PI)*Math.pow(a,e+.5)*Math.exp(-a)*r},e.exports.log=o},{}],222:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o<a.length;o++)if(n=r.getContext(a[o],i))return n}catch(t){n=null}return n||null}},{}],223:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=new u(t);return r.update(e),r};var n=t(\"./lib/text.js\"),i=t(\"./lib/lines.js\"),a=t(\"./lib/background.js\"),o=t(\"./lib/cube.js\"),s=t(\"./lib/ticks.js\"),l=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function c(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function u(t){this.gl=t,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=[\"sans-serif\",\"sans-serif\",\"sans-serif\"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this._tickAlign=[\"auto\",\"auto\",\"auto\"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=[\"x\",\"y\",\"z\"],this.labelEnable=[!0,!0,!0],this.labelFont=\"sans-serif\",this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=[\"auto\",\"auto\",\"auto\"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=a(t)}var f=u.prototype;function h(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}f.update=function(t){function e(e,r,n){if(n in t){var i,a=t[n],o=this[n];(e?Array.isArray(a)&&Array.isArray(a[0]):Array.isArray(a))?this[n]=i=[r(a[0]),r(a[1]),r(a[2])]:this[n]=i=[r(a),r(a),r(a)];for(var s=0;s<3;++s)if(i[s]!==o[s])return!0}return!1}t=t||{};var r,a=e.bind(this,!1,Number),o=e.bind(this,!1,Boolean),l=e.bind(this,!1,String),c=e.bind(this,!0,function(t){if(Array.isArray(t)){if(3===t.length)return[+t[0],+t[1],+t[2],1];if(4===t.length)return[+t[0],+t[1],+t[2],+t[3]]}return[0,0,0,1]}),u=!1,f=!1;if(\"bounds\"in t)for(var h=t.bounds,p=0;p<2;++p)for(var d=0;d<3;++d)h[p][d]!==this.bounds[p][d]&&(f=!0),this.bounds[p][d]=h[p][d];if(\"ticks\"in t){r=t.ticks,u=!0,this.autoTicks=!1;for(p=0;p<3;++p)this.tickSpacing[p]=0}else a(\"tickSpacing\")&&(this.autoTicks=!0,f=!0);if(this._firstInit&&(\"ticks\"in t||\"tickSpacing\"in t||(this.autoTicks=!0),f=!0,u=!0,this._firstInit=!1),f&&this.autoTicks&&(r=s.create(this.bounds,this.tickSpacing),u=!0),u){for(p=0;p<3;++p)r[p].sort(function(t,e){return t.x-e.x});s.equal(r,this.ticks)?u=!1:this.ticks=r}o(\"tickEnable\"),l(\"tickFont\")&&(u=!0),a(\"tickSize\"),a(\"tickAngle\"),a(\"tickPad\"),c(\"tickColor\");var g=l(\"labels\");l(\"labelFont\")&&(g=!0),o(\"labelEnable\"),a(\"labelSize\"),a(\"labelPad\"),c(\"labelColor\"),o(\"lineEnable\"),o(\"lineMirror\"),a(\"lineWidth\"),c(\"lineColor\"),o(\"lineTickEnable\"),o(\"lineTickMirror\"),a(\"lineTickLength\"),a(\"lineTickWidth\"),c(\"lineTickColor\"),o(\"gridEnable\"),a(\"gridWidth\"),c(\"gridColor\"),o(\"zeroEnable\"),c(\"zeroLineColor\"),a(\"zeroLineWidth\"),o(\"backgroundEnable\"),c(\"backgroundColor\"),this._text?this._text&&(g||u)&&this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont):this._text=n(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont),this._lines&&u&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=i(this.gl,this.bounds,this.ticks))};var p=[new h,new h,new h];function d(t,e,r,n,i){for(var a=t.primalOffset,o=t.primalMinor,s=t.mirrorOffset,l=t.mirrorMinor,c=n[e],u=0;u<3;++u)if(e!==u){var f=a,h=s,p=o,d=l;c&1<<u&&(f=s,h=a,p=l,d=o),f[u]=r[0][u],h[u]=r[1][u],i[u]>0?(p[u]=-1,d[u]=0):(p[u]=0,d[u]=1)}}var g=[0,0,0],v={model:l,view:l,projection:l};f.isOpaque=function(){return!0},f.isTransparent=function(){return!1},f.drawTransparent=function(t){};var m=[0,0,0],y=[0,0,0],x=[0,0,0];f.draw=function(t){t=t||v;for(var e=this.gl,r=t.model||l,n=t.view||l,i=t.projection||l,a=this.bounds,s=o(r,n,i,a),u=s.cubeEdges,f=s.axis,h=n[12],b=n[13],_=n[14],w=n[15],k=this.pixelRatio*(i[3]*h+i[7]*b+i[11]*_+i[15]*w)/e.drawingBufferHeight,A=0;A<3;++A)this.lastCubeProps.cubeEdges[A]=u[A],this.lastCubeProps.axis[A]=f[A];var M=p;for(A=0;A<3;++A)d(p[A],A,this.bounds,u,f);e=this.gl;var T,S=g;for(A=0;A<3;++A)this.backgroundEnable[A]?S[A]=f[A]:S[A]=0;this._background.draw(r,n,i,a,S,this.backgroundColor),this._lines.bind(r,n,i,this);for(A=0;A<3;++A){var C=[0,0,0];f[A]>0?C[A]=a[1][A]:C[A]=a[0][A];for(var E=0;E<2;++E){var L=(A+1+E)%3,z=(A+1+(1^E))%3;this.gridEnable[L]&&this._lines.drawGrid(L,z,this.bounds,C,this.gridColor[L],this.gridWidth[L]*this.pixelRatio)}for(E=0;E<2;++E){L=(A+1+E)%3,z=(A+1+(1^E))%3;this.zeroEnable[z]&&Math.min(a[0][z],a[1][z])<=0&&Math.max(a[0][z],a[1][z])>=0&&this._lines.drawZero(L,z,this.bounds,C,this.zeroLineColor[z],this.zeroLineWidth[z]*this.pixelRatio)}}for(A=0;A<3;++A){this.lineEnable[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].primalOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio),this.lineMirror[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].mirrorOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio);var O=c(m,M[A].primalMinor),I=c(y,M[A].mirrorMinor),D=this.lineTickLength;for(E=0;E<3;++E){var P=k/r[5*E];O[E]*=D[E]*P,I[E]*=D[E]*P}this.lineTickEnable[A]&&this._lines.drawAxisTicks(A,M[A].primalOffset,O,this.lineTickColor[A],this.lineTickWidth[A]*this.pixelRatio),this.lineTickMirror[A]&&this._lines.drawAxisTicks(A,M[A].mirrorOffset,I,this.lineTickColor[A],this.lineTickWidth[A]*this.pixelRatio)}this._lines.unbind(),this._text.bind(r,n,i,this.pixelRatio);var R,F;function B(t){(F=[0,0,0])[t]=1}function N(t,e,r){var n=(t+1)%3,i=(t+2)%3,a=e[n],o=e[i],s=r[n],l=r[i];a>0&&l>0?B(n):a>0&&l<0?B(n):a<0&&l>0?B(n):a<0&&l<0?B(n):o>0&&s>0?B(i):o>0&&s<0?B(i):o<0&&s>0?B(i):o<0&&s<0&&B(i)}for(A=0;A<3;++A){var j=M[A].primalMinor,V=M[A].mirrorMinor,U=c(x,M[A].primalOffset);for(E=0;E<3;++E)this.lineTickEnable[A]&&(U[E]+=k*j[E]*Math.max(this.lineTickLength[E],0)/r[5*E]);var q=[0,0,0];if(q[A]=1,this.tickEnable[A]){-3600===this.tickAngle[A]?(this.tickAngle[A]=0,this._tickAlign[A]=\"auto\"):this._tickAlign[A]=-1,R=1,\"auto\"===(T=[this._tickAlign[A],.5,R])[0]?T[0]=0:T[0]=parseInt(\"\"+T[0]),F=[0,0,0],N(A,j,V);for(E=0;E<3;++E)U[E]+=k*j[E]*this.tickPad[E]/r[5*E];this._text.drawTicks(A,this.tickSize[A],this.tickAngle[A],U,this.tickColor[A],q,F,T)}if(this.labelEnable[A]){R=0,F=[0,0,0],this.labels[A].length>4&&(B(A),R=1),\"auto\"===(T=[this.labelAlign[A],.5,R])[0]?T[0]=0:T[0]=parseInt(\"\"+T[0]);for(E=0;E<3;++E)U[E]+=k*j[E]*this.labelPad[E]/r[5*E];U[A]+=.5*(a[0][A]+a[1][A]),this._text.drawLabel(A,this.labelSize[A],this.labelAngle[A],U,this.labelColor[A],[0,0,0],F,T)}}this._text.unbind()},f.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},{\"./lib/background.js\":224,\"./lib/cube.js\":225,\"./lib/lines.js\":226,\"./lib/text.js\":228,\"./lib/ticks.js\":229}],224:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=[],r=[],s=0,l=0;l<3;++l)for(var c=(l+1)%3,u=(l+2)%3,f=[0,0,0],h=[0,0,0],p=-1;p<=1;p+=2){r.push(s,s+2,s+1,s+1,s+2,s+3),f[l]=p,h[l]=p;for(var d=-1;d<=1;d+=2){f[c]=d;for(var g=-1;g<=1;g+=2)f[u]=g,e.push(f[0],f[1],f[2],h[0],h[1],h[2]),s+=1}var v=c;c=u,u=v}var m=n(t,new Float32Array(e)),y=n(t,new Uint16Array(r),t.ELEMENT_ARRAY_BUFFER),x=i(t,[{buffer:m,type:t.FLOAT,size:3,offset:0,stride:24},{buffer:m,type:t.FLOAT,size:3,offset:12,stride:24}],y),b=a(t);return b.attributes.position.location=0,b.attributes.normal.location=1,new o(t,m,x,b)};var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"./shaders\").bg;function o(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n}var s=o.prototype;s.draw=function(t,e,r,n,i,a){for(var o=!1,s=0;s<3;++s)o=o||i[s];if(o){var l=this.gl;l.enable(l.POLYGON_OFFSET_FILL),l.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:t,view:e,projection:r,bounds:n,enable:i,colors:a},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),l.disable(l.POLYGON_OFFSET_FILL)}},s.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{\"./shaders\":227,\"gl-buffer\":231,\"gl-vao\":313}],225:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,a){i(s,e,t),i(s,r,s);for(var p=0,y=0;y<2;++y){u[2]=a[y][2];for(var x=0;x<2;++x){u[1]=a[x][1];for(var b=0;b<2;++b)u[0]=a[b][0],h(l[p],u,s),p+=1}}for(var _=-1,y=0;y<8;++y){for(var w=l[y][3],k=0;k<3;++k)c[y][k]=l[y][k]/w;w<0&&(_<0?_=y:c[y][2]<c[_][2]&&(_=y))}if(_<0){_=0;for(var A=0;A<3;++A){for(var M=(A+2)%3,T=(A+1)%3,S=-1,C=-1,E=0;E<2;++E){var L=E<<A,z=L+(E<<M)+(1-E<<T),O=L+(1-E<<M)+(E<<T);o(c[L],c[z],c[O],f)<0||(E?S=1:C=1)}if(S<0||C<0)C>S&&(_|=1<<A);else{for(var E=0;E<2;++E){var L=E<<A,z=L+(E<<M)+(1-E<<T),O=L+(1-E<<M)+(E<<T),I=d([l[L],l[z],l[O],l[L+(1<<M)+(1<<T)]]);E?S=I:C=I}C>S&&(_|=1<<A)}}}for(var D=7^_,P=-1,y=0;y<8;++y)y!==_&&y!==D&&(P<0?P=y:c[P][1]>c[y][1]&&(P=y));for(var R=-1,y=0;y<3;++y){var F=P^1<<y;if(F!==_&&F!==D){R<0&&(R=F);var T=c[F];T[0]<c[R][0]&&(R=F)}}for(var B=-1,y=0;y<3;++y){var F=P^1<<y;if(F!==_&&F!==D&&F!==R){B<0&&(B=F);var T=c[F];T[0]>c[B][0]&&(B=F)}}var N=g;N[0]=N[1]=N[2]=0,N[n.log2(R^P)]=P&R,N[n.log2(P^B)]=P&B;var j=7^B;j===_||j===D?(j=7^R,N[n.log2(B^j)]=j&B):N[n.log2(R^j)]=j&R;for(var V=v,U=_,A=0;A<3;++A)V[A]=U&1<<A?-1:1;return m};var n=t(\"bit-twiddle\"),i=t(\"gl-mat4/multiply\"),a=t(\"split-polygon\"),o=t(\"robust-orientation\"),s=new Array(16),l=new Array(8),c=new Array(8),u=new Array(3),f=[0,0,0];function h(t,e,r){for(var n=0;n<4;++n){t[n]=r[12+n];for(var i=0;i<3;++i)t[n]+=e[i]*r[4*i+n]}}!function(){for(var t=0;t<8;++t)l[t]=[1,1,1,1],c[t]=[1,1,1]}();var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function d(t){for(var e=0;e<p.length;++e)if((t=a.positive(t,p[e])).length<3)return 0;var r=t[0],n=r[0]/r[3],i=r[1]/r[3],o=0;for(e=1;e+1<t.length;++e){var s=t[e],l=t[e+1],c=s[0]/s[3]-n,u=s[1]/s[3]-i,f=l[0]/l[3]-n,h=l[1]/l[3]-i;o+=Math.abs(c*h-u*f)}return o}var g=[1,1,1],v=[0,0,0],m={cubeEdges:g,axis:v}},{\"bit-twiddle\":81,\"gl-mat4/multiply\":258,\"robust-orientation\":488,\"split-polygon\":505}],226:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var o=[],s=[0,0,0],l=[0,0,0],c=[0,0,0],u=[0,0,0];o.push(0,0,1,0,1,1,0,0,-1,0,0,-1,0,1,1,0,1,-1);for(var f=0;f<3;++f){for(var h=o.length/3|0,d=0;d<r[f].length;++d){var g=+r[f][d].x;o.push(g,0,1,g,1,1,g,0,-1,g,0,-1,g,1,1,g,1,-1)}var v=o.length/3|0;s[f]=h,l[f]=v-h;for(var h=o.length/3|0,m=0;m<r[f].length;++m){var g=+r[f][m].x;o.push(g,0,1,g,1,1,g,0,-1,g,0,-1,g,1,1,g,1,-1)}var v=o.length/3|0;c[f]=h,u[f]=v-h}var y=n(t,new Float32Array(o)),x=i(t,[{buffer:y,type:t.FLOAT,size:3,stride:0,offset:0}]),b=a(t);return b.attributes.position.location=0,new p(t,y,x,b,l,s,u,c)};var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"./shaders\").line,o=[0,0,0],s=[0,0,0],l=[0,0,0],c=[0,0,0],u=[1,1];function f(t){return t[0]=t[1]=t[2]=0,t}function h(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function p(t,e,r,n,i,a,o,s){this.gl=t,this.vertBuffer=e,this.vao=r,this.shader=n,this.tickCount=i,this.tickOffset=a,this.gridCount=o,this.gridOffset=s}var d=p.prototype;d.bind=function(t,e,r){this.shader.bind(),this.shader.uniforms.model=t,this.shader.uniforms.view=e,this.shader.uniforms.projection=r,u[0]=this.gl.drawingBufferWidth,u[1]=this.gl.drawingBufferHeight,this.shader.uniforms.screenShape=u,this.vao.bind()},d.unbind=function(){this.vao.unbind()},d.drawAxisLine=function(t,e,r,n,i){var a=f(s);this.shader.uniforms.majorAxis=s,a[t]=e[1][t]-e[0][t],this.shader.uniforms.minorAxis=a;var o,u=h(c,r);u[t]+=e[0][t],this.shader.uniforms.offset=u,this.shader.uniforms.lineWidth=i,this.shader.uniforms.color=n,(o=f(l))[(t+2)%3]=1,this.shader.uniforms.screenAxis=o,this.vao.draw(this.gl.TRIANGLES,6),(o=f(l))[(t+1)%3]=1,this.shader.uniforms.screenAxis=o,this.vao.draw(this.gl.TRIANGLES,6)},d.drawAxisTicks=function(t,e,r,n,i){if(this.tickCount[t]){var a=f(o);a[t]=1,this.shader.uniforms.majorAxis=a,this.shader.uniforms.offset=e,this.shader.uniforms.minorAxis=r,this.shader.uniforms.color=n,this.shader.uniforms.lineWidth=i;var s=f(l);s[t]=1,this.shader.uniforms.screenAxis=s,this.vao.draw(this.gl.TRIANGLES,this.tickCount[t],this.tickOffset[t])}},d.drawGrid=function(t,e,r,n,i,a){if(this.gridCount[t]){var u=f(s);u[e]=r[1][e]-r[0][e],this.shader.uniforms.minorAxis=u;var p=h(c,n);p[e]+=r[0][e],this.shader.uniforms.offset=p;var d=f(o);d[t]=1,this.shader.uniforms.majorAxis=d;var g=f(l);g[t]=1,this.shader.uniforms.screenAxis=g,this.shader.uniforms.lineWidth=a,this.shader.uniforms.color=i,this.vao.draw(this.gl.TRIANGLES,this.gridCount[t],this.gridOffset[t])}},d.drawZero=function(t,e,r,n,i,a){var o=f(s);this.shader.uniforms.majorAxis=o,o[t]=r[1][t]-r[0][t],this.shader.uniforms.minorAxis=o;var u=h(c,n);u[t]+=r[0][t],this.shader.uniforms.offset=u;var p=f(l);p[e]=1,this.shader.uniforms.screenAxis=p,this.shader.uniforms.lineWidth=a,this.shader.uniforms.color=i,this.vao.draw(this.gl.TRIANGLES,6)},d.dispose=function(){this.vao.dispose(),this.vertBuffer.dispose(),this.shader.dispose()}},{\"./shaders\":227,\"gl-buffer\":231,\"gl-vao\":313}],227:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=t(\"gl-shader\"),a=n([\"#define GLSLIFY 1\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 offset, majorAxis, minorAxis, screenAxis;\\nuniform float lineWidth;\\nuniform vec2 screenShape;\\n\\nvec3 project(vec3 p) {\\n  vec4 pp = projection * view * model * vec4(p, 1.0);\\n  return pp.xyz / max(pp.w, 0.0001);\\n}\\n\\nvoid main() {\\n  vec3 major = position.x * majorAxis;\\n  vec3 minor = position.y * minorAxis;\\n\\n  vec3 vPosition = major + minor + offset;\\n  vec3 pPosition = project(vPosition);\\n  vec3 offset = project(vPosition + screenAxis * position.z);\\n\\n  vec2 screen = normalize((offset - pPosition).xy * screenShape) / screenShape;\\n\\n  gl_Position = vec4(pPosition + vec3(0.5 * screen * lineWidth, 0), 1.0);\\n}\\n\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = color;\\n}\"]);r.line=function(t){return i(t,a,o,null,[{name:\"position\",type:\"vec3\"}])};var s=n([\"#define GLSLIFY 1\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 offset, axis, alignDir, alignOpt;\\nuniform float scale, angle, pixelScale;\\nuniform vec2 resolution;\\n\\nvec3 project(vec3 p) {\\n  vec4 pp = projection * view * model * vec4(p, 1.0);\\n  return pp.xyz / max(pp.w, 0.0001);\\n}\\n\\nfloat computeViewAngle(vec3 a, vec3 b) {\\n  vec3 A = project(a);\\n  vec3 B = project(b);\\n\\n  return atan(\\n    (B.y - A.y) * resolution.y,\\n    (B.x - A.x) * resolution.x\\n  );\\n}\\n\\nconst float PI = 3.141592;\\nconst float TWO_PI = 2.0 * PI;\\nconst float HALF_PI = 0.5 * PI;\\nconst float ONE_AND_HALF_PI = 1.5 * PI;\\n\\nint option = int(floor(alignOpt.x + 0.001));\\nfloat hv_ratio =       alignOpt.y;\\nbool enableAlign =    (alignOpt.z != 0.0);\\n\\nfloat mod_angle(float a) {\\n  return mod(a, PI);\\n}\\n\\nfloat positive_angle(float a) {\\n  return mod_angle((a < 0.0) ?\\n    a + TWO_PI :\\n    a\\n  );\\n}\\n\\nfloat look_upwards(float a) {\\n  float b = positive_angle(a);\\n  return ((b > HALF_PI) && (b <= ONE_AND_HALF_PI)) ?\\n    b - PI :\\n    b;\\n}\\n\\nfloat look_horizontal_or_vertical(float a, float ratio) {\\n  // ratio controls the ratio between being horizontal to (vertical + horizontal)\\n  // if ratio is set to 0.5 then it is 50%, 50%.\\n  // when using a higher ratio e.g. 0.75 the result would\\n  // likely be more horizontal than vertical.\\n\\n  float b = positive_angle(a);\\n\\n  return\\n    (b < (      ratio) * HALF_PI) ? 0.0 :\\n    (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :\\n    (b < (2.0 + ratio) * HALF_PI) ? 0.0 :\\n    (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :\\n                                    0.0;\\n}\\n\\nfloat roundTo(float a, float b) {\\n  return float(b * floor((a + 0.5 * b) / b));\\n}\\n\\nfloat look_round_n_directions(float a, int n) {\\n  float b = positive_angle(a);\\n  float div = TWO_PI / float(n);\\n  float c = roundTo(b, div);\\n  return look_upwards(c);\\n}\\n\\nfloat applyAlignOption(float rawAngle, float delta) {\\n  return\\n    (option >  2) ? look_round_n_directions(rawAngle + delta, option) :       // option 3-n: round to n directions\\n    (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical\\n    (option == 1) ? rawAngle + delta :       // use free angle, and flip to align with one direction of the axis\\n    (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards\\n    (option ==-1) ? 0.0 :                    // useful for backward compatibility, all texts remains horizontal\\n                    rawAngle;                // otherwise return back raw input angle\\n}\\n\\nbool isAxisTitle = (axis.x == 0.0) &&\\n                   (axis.y == 0.0) &&\\n                   (axis.z == 0.0);\\n\\nvoid main() {\\n  //Compute world offset\\n  float axisDistance = position.z;\\n  vec3 dataPosition = axisDistance * axis + offset;\\n\\n  float beta = angle; // i.e. user defined attributes for each tick\\n\\n  float axisAngle;\\n  float clipAngle;\\n  float flip;\\n\\n  if (enableAlign) {\\n    axisAngle = (isAxisTitle) ? HALF_PI :\\n                      computeViewAngle(dataPosition, dataPosition + axis);\\n    clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);\\n\\n    axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;\\n    clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;\\n\\n    flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),\\n                vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;\\n\\n    beta += applyAlignOption(clipAngle, flip * PI);\\n  }\\n\\n  //Compute plane offset\\n  vec2 planeCoord = position.xy * pixelScale;\\n\\n  mat2 planeXform = scale * mat2(\\n     cos(beta), sin(beta),\\n    -sin(beta), cos(beta)\\n  );\\n\\n  vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;\\n\\n  //Compute clip position\\n  vec3 clipPosition = project(dataPosition);\\n\\n  //Apply text offset in clip coordinates\\n  clipPosition += vec3(viewOffset, 0.0);\\n\\n  //Done\\n  gl_Position = vec4(clipPosition, 1.0);\\n}\"]),l=n([\"precision mediump float;\\n#define GLSLIFY 1\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = color;\\n}\"]);r.text=function(t){return i(t,s,l,null,[{name:\"position\",type:\"vec3\"}])};var c=n([\"#define GLSLIFY 1\\nattribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 enable;\\nuniform vec3 bounds[2];\\n\\nvarying vec3 colorChannel;\\n\\nvoid main() {\\n\\n  vec3 signAxis = sign(bounds[1] - bounds[0]);\\n\\n  vec3 realNormal = signAxis * normal;\\n\\n  if(dot(realNormal, enable) > 0.0) {\\n    vec3 minRange = min(bounds[0], bounds[1]);\\n    vec3 maxRange = max(bounds[0], bounds[1]);\\n    vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));\\n    gl_Position = projection * view * model * vec4(nPosition, 1.0);\\n  } else {\\n    gl_Position = vec4(0,0,0,0);\\n  }\\n\\n  colorChannel = abs(realNormal);\\n}\"]),u=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 colors[3];\\n\\nvarying vec3 colorChannel;\\n\\nvoid main() {\\n  gl_FragColor = colorChannel.x * colors[0] +\\n                 colorChannel.y * colors[1] +\\n                 colorChannel.z * colors[2];\\n}\"]);r.bg=function(t){return i(t,c,u,null,[{name:\"position\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}])}},{\"gl-shader\":290,glslify:395}],228:[function(t,e,r){(function(r){\"use strict\";e.exports=function(t,e,r,a,s,l){var u=n(t),f=i(t,[{buffer:u,size:3}]),h=o(t);h.attributes.position.location=0;var p=new c(t,h,u,f);return p.update(e,r,a,s,l),p};var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"vectorize-text\"),o=t(\"./shaders\").text,s=window||r.global||{},l=s.__TEXT_CACHE||{};s.__TEXT_CACHE={};function c(t,e,r,n){this.gl=t,this.shader=e,this.buffer=r,this.vao=n,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var u=c.prototype,f=[0,0];u.bind=function(t,e,r,n){this.vao.bind(),this.shader.bind();var i=this.shader.uniforms;i.model=t,i.view=e,i.projection=r,i.pixelScale=n,f[0]=this.gl.drawingBufferWidth,f[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=f},u.unbind=function(){this.vao.unbind()},u.update=function(t,e,r,n,i){var o=[];function s(t,e,r,n,i,s){var c=l[r];c||(c=l[r]={});var u=c[e];u||(u=c[e]=function(t,e){try{return a(t,e)}catch(e){return console.warn('error vectorizing text:\"'+t+'\" error:',e),{cells:[],positions:[]}}}(e,{triangles:!0,font:r,textAlign:\"center\",textBaseline:\"middle\",lineSpacing:i,styletags:s}));for(var f=(n||12)/12,h=u.positions,p=u.cells,d=0,g=p.length;d<g;++d)for(var v=p[d],m=2;m>=0;--m){var y=h[v[m]];o.push(f*y[0],-f*y[1],t)}}for(var c=[0,0,0],u=[0,0,0],f=[0,0,0],h=[0,0,0],p={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},d=0;d<3;++d){f[d]=o.length/3|0,s(.5*(t[0][d]+t[1][d]),e[d],r[d],12,1.25,p),h[d]=(o.length/3|0)-f[d],c[d]=o.length/3|0;for(var g=0;g<n[d].length;++g)n[d][g].text&&s(n[d][g].x,n[d][g].text,n[d][g].font||i,n[d][g].fontSize||12,1.25,p);u[d]=(o.length/3|0)-c[d]}this.buffer.update(o),this.tickOffset=c,this.tickCount=u,this.labelOffset=f,this.labelCount=h},u.drawTicks=function(t,e,r,n,i,a,o,s){this.tickCount[t]&&(this.shader.uniforms.axis=a,this.shader.uniforms.color=i,this.shader.uniforms.angle=r,this.shader.uniforms.scale=e,this.shader.uniforms.offset=n,this.shader.uniforms.alignDir=o,this.shader.uniforms.alignOpt=s,this.vao.draw(this.gl.TRIANGLES,this.tickCount[t],this.tickOffset[t]))},u.drawLabel=function(t,e,r,n,i,a,o,s){this.labelCount[t]&&(this.shader.uniforms.axis=a,this.shader.uniforms.color=i,this.shader.uniforms.angle=r,this.shader.uniforms.scale=e,this.shader.uniforms.offset=n,this.shader.uniforms.alignDir=o,this.shader.uniforms.alignOpt=s,this.vao.draw(this.gl.TRIANGLES,this.labelCount[t],this.labelOffset[t]))},u.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()}}).call(this,t(\"_process\"))},{\"./shaders\":227,_process:468,\"gl-buffer\":231,\"gl-vao\":313,\"vectorize-text\":528}],229:[function(t,e,r){\"use strict\";function n(t,e){var r=t+\"\",n=r.indexOf(\".\"),i=0;n>=0&&(i=r.length-n-1);var a=Math.pow(10,i),o=Math.round(t*e*a),s=o+\"\";if(s.indexOf(\"e\")>=0)return s;var l=o/a,c=o%a;o<0?(l=0|-Math.ceil(l),c=0|-c):(l=0|Math.floor(l),c|=0);var u=\"\"+l;if(o<0&&(u=\"-\"+u),i){for(var f=\"\"+c;f.length<i;)f=\"0\"+f;return u+\".\"+f}return u}r.create=function(t,e){for(var r=[],i=0;i<3;++i){for(var a=[],o=(t[0][i],t[1][i],0);o*e[i]<=t[1][i];++o)a.push({x:o*e[i],text:n(e[i],o)});for(var o=-1;o*e[i]>=t[0][i];--o)a.push({x:o*e[i],text:n(e[i],o)});r.push(a)}return r},r.equal=function(t,e){for(var r=0;r<3;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;n<t[r].length;++n){var i=t[r][n],a=e[r][n];if(i.x!==a.x||i.text!==a.text||i.font!==a.font||i.fontColor!==a.fontColor||i.fontSize!==a.fontSize||i.dx!==a.dx||i.dy!==a.dy)return!1}}return!0}},{}],230:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,l,f){var h=e.model||c,p=e.view||c,m=e.projection||c,y=t.bounds,x=(f=f||a(h,p,m,y)).axis;f.edges;o(u,p,h),o(u,m,u);for(var b=g,_=0;_<3;++_)b[_].lo=1/0,b[_].hi=-1/0,b[_].pixelsPerDataUnit=1/0;var w=n(s(u,u));s(u,u);for(var k=0;k<3;++k){var A=(k+1)%3,M=(k+2)%3,T=v;t:for(var _=0;_<2;++_){var S=[];if(x[k]<0!=!!_){T[k]=y[_][k];for(var C=0;C<2;++C){T[A]=y[C^_][A];for(var E=0;E<2;++E)T[M]=y[E^C^_][M],S.push(T.slice())}for(var C=4;4===C;++C){if(0===S.length)continue t;S=i.positive(S,w[C])}for(var C=0;C<S.length;++C)for(var M=S[C],L=d(v,u,M,r,l),E=0;E<3;++E)b[E].lo=Math.min(b[E].lo,M[E]),b[E].hi=Math.max(b[E].hi,M[E]),E!==k&&(b[E].pixelsPerDataUnit=Math.min(b[E].pixelsPerDataUnit,Math.abs(L[E])))}}}return b};var n=t(\"extract-frustum-planes\"),i=t(\"split-polygon\"),a=t(\"./lib/cube.js\"),o=t(\"gl-mat4/multiply\"),s=t(\"gl-mat4/transpose\"),l=t(\"gl-vec4/transformMat4\"),c=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),u=new Float32Array(16);function f(t,e,r){this.lo=t,this.hi=e,this.pixelsPerDataUnit=r}var h=[0,0,0,1],p=[0,0,0,1];function d(t,e,r,n,i){for(var a=0;a<3;++a){for(var o=h,s=p,c=0;c<3;++c)s[c]=o[c]=r[c];s[3]=o[3]=1,s[a]+=1,l(s,s,e),s[3]<0&&(t[a]=1/0),o[a]-=1,l(o,o,e),o[3]<0&&(t[a]=1/0);var u=(o[0]/o[3]-s[0]/s[3])*n,f=(o[1]/o[3]-s[1]/s[3])*i;t[a]=.25*Math.sqrt(u*u+f*f)}return t}var g=[new f(1/0,-1/0,1/0),new f(1/0,-1/0,1/0),new f(1/0,-1/0,1/0)],v=[0,0,0]},{\"./lib/cube.js\":225,\"extract-frustum-planes\":214,\"gl-mat4/multiply\":258,\"gl-mat4/transpose\":266,\"gl-vec4/transformMat4\":384,\"split-polygon\":505}],231:[function(t,e,r){\"use strict\";var n=t(\"typedarray-pool\"),i=t(\"ndarray-ops\"),a=t(\"ndarray\"),o=[\"uint8\",\"uint8_clamped\",\"uint16\",\"uint32\",\"int8\",\"int16\",\"int32\",\"float32\"];function s(t,e,r,n,i){this.gl=t,this.type=e,this.handle=r,this.length=n,this.usage=i}var l=s.prototype;function c(t,e,r,n,i,a){var o=i.length*i.BYTES_PER_ELEMENT;if(a<0)return t.bufferData(e,i,n),o;if(o+a>r)throw new Error(\"gl-buffer: If resizing buffer, must not specify offset\");return t.bufferSubData(e,a,i),r}function u(t,e){for(var r=n.malloc(t.length,e),i=t.length,a=0;a<i;++a)r[a]=t[a];return r}l.bind=function(){this.gl.bindBuffer(this.type,this.handle)},l.unbind=function(){this.gl.bindBuffer(this.type,null)},l.dispose=function(){this.gl.deleteBuffer(this.handle)},l.update=function(t,e){if(\"number\"!=typeof e&&(e=-1),this.bind(),\"object\"==typeof t&&\"undefined\"!=typeof t.shape){var r=t.dtype;if(o.indexOf(r)<0&&(r=\"float32\"),this.type===this.gl.ELEMENT_ARRAY_BUFFER)r=gl.getExtension(\"OES_element_index_uint\")&&\"uint16\"!==r?\"uint32\":\"uint16\";if(r===t.dtype&&function(t,e){for(var r=1,n=e.length-1;n>=0;--n){if(e[n]!==r)return!1;r*=t[n]}return!0}(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=c(this.gl,this.type,this.length,this.usage,t.data,e):this.length=c(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),e);else{var s=n.malloc(t.size,r),l=a(s,t.shape);i.assign(l,t),this.length=c(this.gl,this.type,this.length,this.usage,e<0?s:s.subarray(0,t.size),e),n.free(s)}}else if(Array.isArray(t)){var f;f=this.type===this.gl.ELEMENT_ARRAY_BUFFER?u(t,\"uint16\"):u(t,\"float32\"),this.length=c(this.gl,this.type,this.length,this.usage,e<0?f:f.subarray(0,t.length),e),n.free(f)}else if(\"object\"==typeof t&&\"number\"==typeof t.length)this.length=c(this.gl,this.type,this.length,this.usage,t,e);else{if(\"number\"!=typeof t&&void 0!==t)throw new Error(\"gl-buffer: Invalid data type\");if(e>=0)throw new Error(\"gl-buffer: Cannot specify offset when resizing buffer\");(t|=0)<=0&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},e.exports=function(t,e,r,n){if(r=r||t.ARRAY_BUFFER,n=n||t.DYNAMIC_DRAW,r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw new Error(\"gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER\");if(n!==t.DYNAMIC_DRAW&&n!==t.STATIC_DRAW&&n!==t.STREAM_DRAW)throw new Error(\"gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW\");var i=t.createBuffer(),a=new s(t,r,i,0,n);return a.update(e),a}},{ndarray:436,\"ndarray-ops\":430,\"typedarray-pool\":523}],232:[function(t,e,r){\"use strict\";var n=t(\"gl-vec3\"),i=(t(\"gl-vec4\"),function(t,e){for(var r=0;r<t.length;r++)if(t[r]>=e)return r-1;return r}),a=n.create(),o=n.create(),s=function(t,e,r){return t<e?e:t>r?r:t},l=function(t,e,r,l){var c=t[0],u=t[1],f=t[2],h=r[0].length,p=r[1].length,d=r[2].length,g=i(r[0],c),v=i(r[1],u),m=i(r[2],f),y=g+1,x=v+1,b=m+1;if(l&&(g=s(g,0,h-1),y=s(y,0,h-1),v=s(v,0,p-1),x=s(x,0,p-1),m=s(m,0,d-1),b=s(b,0,d-1)),g<0||v<0||m<0||y>=h||x>=p||b>=d)return n.create();var _=(c-r[0][g])/(r[0][y]-r[0][g]),w=(u-r[1][v])/(r[1][x]-r[1][v]),k=(f-r[2][m])/(r[2][b]-r[2][m]);(_<0||_>1||isNaN(_))&&(_=0),(w<0||w>1||isNaN(w))&&(w=0),(k<0||k>1||isNaN(k))&&(k=0);var A=m*h*p,M=b*h*p,T=v*h,S=x*h,C=g,E=y,L=e[T+A+C],z=e[T+A+E],O=e[S+A+C],I=e[S+A+E],D=e[T+M+C],P=e[T+M+E],R=e[S+M+C],F=e[S+M+E],B=n.create();return n.lerp(B,L,z,_),n.lerp(a,O,I,_),n.lerp(B,B,a,w),n.lerp(a,D,P,_),n.lerp(o,R,F,_),n.lerp(a,a,o,w),n.lerp(B,B,a,k),B};e.exports=function(t,e){var r;r=t.positions?t.positions:function(t){for(var e=t[0],r=t[1],n=t[2],i=[],a=0;a<n.length;a++)for(var o=0;o<r.length;o++)for(var s=0;s<e.length;s++)i.push([n[a],r[o],e[s]]);return i}(t.meshgrid);var i=t.meshgrid,a=t.vectors,o={positions:[],vertexIntensity:[],vertexIntensityBounds:t.vertexIntensityBounds,vertexNormals:[],vectors:[],cells:[],coneOffset:t.coneOffset,colormap:t.colormap};if(0===t.positions.length)return e&&(e[0]=[0,0,0],e[1]=[0,0,0]),o;for(var s=0,c=1/0,u=-1/0,f=1/0,h=-1/0,p=1/0,d=-1/0,g=null,v=null,m=[],y=1/0,x=0;x<r.length;x++){var b,_=r[x];c=Math.min(_[0],c),u=Math.max(_[0],u),f=Math.min(_[1],f),h=Math.max(_[1],h),p=Math.min(_[2],p),d=Math.max(_[2],d),b=i?l(_,a,i,!0):a[x],n.length(b)>s&&(s=n.length(b)),x&&(y=Math.min(y,2*n.distance(g,_)/(n.length(v)+n.length(b)))),g=_,v=b,m.push(b)}var w=[c,f,p],k=[u,h,d];e&&(e[0]=w,e[1]=k),0===s&&(s=1);var A=1/s;isFinite(y)&&!isNaN(y)||(y=1),o.vectorScale=y;var M=function(t,e,r){var i=n.create();return void 0!==t&&n.set(i,t,e,r),i}(0,1,0),T=t.coneSize||.5;t.absoluteConeSize&&(T=t.absoluteConeSize*A),o.coneScale=T;x=0;for(var S=0;x<r.length;x++)for(var C=(_=r[x])[0],E=_[1],L=_[2],z=m[x],O=n.length(z)*A,I=0;I<8;I++){o.positions.push([C,E,L,S++]),o.positions.push([C,E,L,S++]),o.positions.push([C,E,L,S++]),o.positions.push([C,E,L,S++]),o.positions.push([C,E,L,S++]),o.positions.push([C,E,L,S++]),o.vectors.push(z),o.vectors.push(z),o.vectors.push(z),o.vectors.push(z),o.vectors.push(z),o.vectors.push(z),o.vertexIntensity.push(O,O,O),o.vertexIntensity.push(O,O,O),o.vertexNormals.push(M,M,M),o.vertexNormals.push(M,M,M);var D=o.positions.length;o.cells.push([D-6,D-5,D-4],[D-3,D-2,D-1])}return o},e.exports.createConeMesh=t(\"./lib/conemesh\")},{\"./lib/conemesh\":234,\"gl-vec3\":332,\"gl-vec4\":368}],233:[function(t,e,r){\"use strict\";var n=t(\"barycentric\"),i=t(\"polytope-closest-point/lib/closest_point_2d.js\");function a(t,e){for(var r=[0,0,0,0],n=0;n<4;++n)for(var i=0;i<4;++i)r[i]+=t[4*n+i]*e[n];return r}function o(t,e,r,n,i){for(var o=a(n,a(r,a(e,[t[0],t[1],t[2],1]))),s=0;s<3;++s)o[s]/=o[3];return[.5*i[0]*(1+o[0]),.5*i[1]*(1-o[1])]}e.exports=function(t,e,r,a,s,l){if(1===t.length)return[0,t[0].slice()];for(var c=new Array(t.length),u=0;u<t.length;++u)c[u]=o(t[u],r,a,s,l);for(var f=0,h=1/0,u=0;u<c.length;++u){for(var p=0,d=0;d<2;++d)p+=Math.pow(c[u][d]-e[d],2);p<h&&(h=p,f=u)}for(var g=function(t,e){if(2===t.length){for(var r=0,a=0,o=0;o<2;++o)r+=Math.pow(e[o]-t[0][o],2),a+=Math.pow(e[o]-t[1][o],2);return r=Math.sqrt(r),a=Math.sqrt(a),r+a<1e-6?[1,0]:[a/(r+a),r/(a+r)]}if(3===t.length){var s=[0,0];return i(t[0],t[1],t[2],e,s),n(t,s)}return[]}(c,e),v=0,u=0;u<3;++u){if(g[u]<-.001||g[u]>1.0001)return null;v+=g[u]}if(Math.abs(v-1)>.001)return null;return[f,function(t,e){for(var r=[0,0,0],n=0;n<t.length;++n)for(var i=t[n],a=e[n],o=0;o<3;++o)r[o]+=a*i[o];return r}(t,g),g]}},{barycentric:62,\"polytope-closest-point/lib/closest_point_2d.js\":467}],234:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=t(\"gl-texture2d\"),s=t(\"normals\"),l=t(\"gl-mat4/multiply\"),c=t(\"gl-mat4/invert\"),u=t(\"ndarray\"),f=t(\"colormap\"),h=t(\"simplicial-complex-contour\"),p=t(\"typedarray-pool\"),d=t(\"./shaders\"),g=(t(\"./closest-point\"),d.meshShader),v=d.pickShader,m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function y(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,v,y,x,b,_,w,k,A,M,T,S,C){this.gl=t,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleVectors=c,this.triangleColors=f,this.triangleNormals=p,this.triangleUVs=h,this.triangleIds=u,this.triangleVAO=d,this.triangleCount=0,this.lineWidth=1,this.edgePositions=g,this.edgeColors=y,this.edgeUVs=x,this.edgeIds=v,this.edgeVAO=b,this.edgeCount=0,this.pointPositions=_,this.pointColors=k,this.pointUVs=A,this.pointSizes=M,this.pointIds=w,this.pointVAO=T,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=S,this.contourVAO=C,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.coneScale=2,this.vectorScale=1,this.coneOffset=.25,this._model=m,this._view=m,this._projection=m,this._resolution=[1,1]}var x=y.prototype;function b(t){var e=n(t,v.vertex,v.fragment,null,v.attributes);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.vector.location=5,e}x.isOpaque=function(){return this.opacity>=1},x.isTransparent=function(){return this.opacity<1},x.pickSlots=1,x.setPickBase=function(t){this.pickId=t},x.highlight=function(t){if(t&&this.contourEnable){for(var e=h(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=p.mallocFloat32(6*a),s=0,l=0;l<a;++l)for(var c=r[l],u=0;u<2;++u){var f=c[0];2===c.length&&(f=c[u]);for(var d=n[f][0],g=n[f][1],v=i[f],m=1-v,y=this.positions[d],x=this.positions[g],b=0;b<3;++b)o[s++]=v*y[b]+m*x[b]}this.contourCount=s/3|0,this.contourPositions.update(o.subarray(0,s)),p.free(o)}else this.contourCount=0},x.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,\"contourEnable\"in t&&(this.contourEnable=t.contourEnable),\"contourColor\"in t&&(this.contourColor=t.contourColor),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"lightPosition\"in t&&(this.lightPosition=t.lightPosition),\"opacity\"in t&&(this.opacity=t.opacity),\"ambient\"in t&&(this.ambientLight=t.ambient),\"diffuse\"in t&&(this.diffuseLight=t.diffuse),\"specular\"in t&&(this.specularLight=t.specular),\"roughness\"in t&&(this.roughness=t.roughness),\"fresnel\"in t&&(this.fresnel=t.fresnel),void 0!==t.vectorScale&&(this.vectorScale=t.vectorScale),void 0!==t.coneScale&&(this.coneScale=t.coneScale),void 0!==t.coneOffset&&(this.coneOffset=t.coneOffset),t.texture?(this.texture.dispose(),this.texture=o(e,t.texture)):t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(function(t){for(var e=f({colormap:t,nshades:256,format:\"rgba\"}),r=new Uint8Array(1024),n=0;n<256;++n){for(var i=e[n],a=0;a<3;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return u(r,[256,256,4],[4,0,1])}(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions,i=t.vectors;if(n&&r&&i){var a=[],l=[],c=[],h=[],p=[],d=[],g=[],v=[],m=[],y=[],x=[],b=[],_=[],w=[],k=[];this.cells=r,this.positions=n;var A=t.vertexNormals,M=t.cellNormals,T=void 0===t.vertexNormalsEpsilon?1e-6:t.vertexNormalsEpsilon,S=void 0===t.faceNormalsEpsilon?1e-6:t.faceNormalsEpsilon;t.useFacetNormals&&!M&&(M=s.faceNormals(r,n,S)),M||A||(A=s.vertexNormals(r,n,T));var C=t.vertexColors,E=t.cellColors,L=t.meshColor||[1,1,1,1],z=t.vertexUVs,O=t.vertexIntensity,I=t.cellUVs,D=t.cellIntensity,P=1/0,R=-1/0;if(!z&&!I)if(O)if(t.vertexIntensityBounds)P=+t.vertexIntensityBounds[0],R=+t.vertexIntensityBounds[1];else for(var F=0;F<O.length;++F){var B=O[F];P=Math.min(P,B),R=Math.max(R,B)}else if(D)for(F=0;F<D.length;++F){B=D[F];P=Math.min(P,B),R=Math.max(R,B)}else for(F=0;F<n.length;++F){B=n[F][2];P=Math.min(P,B),R=Math.max(R,B)}this.intensity=O||(D?function(t,e,r){for(var n=new Array(e),i=0;i<e;++i)n[i]=0;var a=t.length;for(i=0;i<a;++i)for(var o=t[i],s=0;s<o.length;++s)n[o[s]]=r[i];return n}(r,n.length,D):function(t){for(var e=t.length,r=new Array(e),n=0;n<e;++n)r[n]=t[n][2];return r}(n));var N=t.pointSizes,j=t.pointSize||1;this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];for(F=0;F<n.length;++F)for(var V=n[F],U=0;U<3;++U)!isNaN(V[U])&&isFinite(V[U])&&(this.bounds[0][U]=Math.min(this.bounds[0][U],V[U]),this.bounds[1][U]=Math.max(this.bounds[1][U],V[U]));var q=0,H=0,G=0;t:for(F=0;F<r.length;++F){var W=r[F];switch(W.length){case 1:for(V=n[X=W[0]],U=0;U<3;++U)if(isNaN(V[U])||!isFinite(V[U]))continue t;x.push(V[0],V[1],V[2],V[3]),3===(Z=C?C[X]:E?E[F]:L).length?b.push(Z[0],Z[1],Z[2],1):b.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],_.push($[0],$[1]),N?w.push(N[X]):w.push(j),k.push(F),G+=1;break;case 2:for(U=0;U<2;++U){V=n[X=W[U]];for(var Y=0;Y<3;++Y)if(isNaN(V[Y])||!isFinite(V[Y]))continue t}for(U=0;U<2;++U){V=n[X=W[U]];g.push(V[0],V[1],V[2]),3===(Z=C?C[X]:E?E[F]:L).length?v.push(Z[0],Z[1],Z[2],1):v.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],m.push($[0],$[1]),y.push(F)}H+=1;break;case 3:for(U=0;U<3;++U)for(V=n[X=W[U]],Y=0;Y<3;++Y)if(isNaN(V[Y])||!isFinite(V[Y]))continue t;for(U=0;U<3;++U){var X;V=n[X=W[U]];a.push(V[0],V[1],V[2],V[3]);var Z,$,J,K=i[X];l.push(K[0],K[1],K[2]),3===(Z=C?C[X]:E?E[F]:L).length?c.push(Z[0],Z[1],Z[2],1):c.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],p.push($[0],$[1]),J=A?A[X]:M[F],h.push(J[0],J[1],J[2]),d.push(F)}q+=1}}this.pointCount=G,this.edgeCount=H,this.triangleCount=q,this.pointPositions.update(x),this.pointColors.update(b),this.pointUVs.update(_),this.pointSizes.update(w),this.pointIds.update(new Uint32Array(k)),this.edgePositions.update(g),this.edgeColors.update(v),this.edgeUVs.update(m),this.edgeIds.update(new Uint32Array(y)),this.trianglePositions.update(a),this.triangleVectors.update(l),this.triangleColors.update(c),this.triangleUVs.update(p),this.triangleNormals.update(h),this.triangleIds.update(new Uint32Array(d))}},x.drawTransparent=x.draw=function(t){t=t||{};for(var e=this.gl,r=t.model||m,n=t.view||m,i=t.projection||m,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);var s={model:r,view:n,projection:i,clipBounds:a,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],opacity:this.opacity,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,contourColor:this.contourColor,texture:0};this.texture.bind(0);var u=new Array(16);l(u,s.view,s.model),l(u,s.projection,u),c(u,u);for(o=0;o<3;++o)s.eyePosition[o]=u[12+o]/u[15];var f,h=u[15];for(o=0;o<3;++o)h+=this.lightPosition[o]*u[4*o+3];for(o=0;o<3;++o){for(var p=u[12+o],d=0;d<3;++d)p+=u[4*d+o]*this.lightPosition[d];s.lightPosition[o]=p/h}this.triangleCount>0&&((f=this.triShader).bind(),f.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind());this.edgeCount>0&&this.lineWidth>0&&((f=this.lineShader).bind(),f.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind());this.pointCount>0&&((f=this.pointShader).bind(),f.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind());this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((f=this.contourShader).bind(),f.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},x.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||m,n=t.view||m,i=t.projection||m,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255};((s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0)&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},x.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions[r[1]].slice(0,3);return{index:Math.floor(r[1]/48),position:n,dataCoordinate:n}},x.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleNormals.dispose(),this.triangleIds.dispose(),this.edgeVAO.dispose(),this.edgePositions.dispose(),this.edgeColors.dispose(),this.edgeUVs.dispose(),this.edgeIds.dispose(),this.pointVAO.dispose(),this.pointPositions.dispose(),this.pointColors.dispose(),this.pointUVs.dispose(),this.pointSizes.dispose(),this.pointIds.dispose(),this.contourVAO.dispose(),this.contourPositions.dispose()},e.exports=function(t,e){1===arguments.length&&(t=(e=t).gl);var r=e.triShader||function(t){var e=n(t,g.vertex,g.fragment,null,g.attributes);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.vector.location=5,e}(t),s=b(t),l=o(t,u(new Uint8Array([255,255,255,255]),[1,1,4]));l.generateMipmap(),l.minFilter=t.LINEAR_MIPMAP_LINEAR,l.magFilter=t.LINEAR;var c=i(t),f=i(t),h=i(t),p=i(t),d=i(t),v=i(t),m=a(t,[{buffer:c,type:t.FLOAT,size:4},{buffer:v,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:h,type:t.FLOAT,size:4},{buffer:p,type:t.FLOAT,size:2},{buffer:d,type:t.FLOAT,size:3},{buffer:f,type:t.FLOAT,size:3}]),x=i(t),_=i(t),w=i(t),k=i(t),A=a(t,[{buffer:x,type:t.FLOAT,size:3},{buffer:k,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:_,type:t.FLOAT,size:4},{buffer:w,type:t.FLOAT,size:2}]),M=i(t),T=i(t),S=i(t),C=i(t),E=i(t),L=a(t,[{buffer:M,type:t.FLOAT,size:3},{buffer:E,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:T,type:t.FLOAT,size:4},{buffer:S,type:t.FLOAT,size:2},{buffer:C,type:t.FLOAT,size:1}]),z=i(t),O=new y(t,l,r,null,null,s,null,null,c,f,v,h,p,d,m,x,k,_,w,A,M,E,T,S,C,L,z,a(t,[{buffer:z,type:t.FLOAT,size:3}]));return O.update(e),O}},{\"./closest-point\":233,\"./shaders\":235,colormap:115,\"gl-buffer\":231,\"gl-mat4/invert\":256,\"gl-mat4/multiply\":258,\"gl-shader\":290,\"gl-texture2d\":308,\"gl-vao\":313,ndarray:436,normals:439,\"simplicial-complex-contour\":496,\"typedarray-pool\":523}],235:[function(t,e,r){var n=t(\"glslify\"),i=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat inverse(float m) {\\n  return 1.0 / m;\\n}\\n\\nmat2 inverse(mat2 m) {\\n  return mat2(m[1][1],-m[0][1],\\n             -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\\n}\\n\\nmat3 inverse(mat3 m) {\\n  float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\\n  float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\\n  float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\\n\\n  float b01 = a22 * a11 - a12 * a21;\\n  float b11 = -a22 * a10 + a12 * a20;\\n  float b21 = a21 * a10 - a11 * a20;\\n\\n  float det = a00 * b01 + a01 * b11 + a02 * b21;\\n\\n  return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\\n              b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\\n              b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\\n}\\n\\nmat4 inverse(mat4 m) {\\n  float\\n      a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\\n      a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\\n      a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\\n      a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\\n\\n      b00 = a00 * a11 - a01 * a10,\\n      b01 = a00 * a12 - a02 * a10,\\n      b02 = a00 * a13 - a03 * a10,\\n      b03 = a01 * a12 - a02 * a11,\\n      b04 = a01 * a13 - a03 * a11,\\n      b05 = a02 * a13 - a03 * a12,\\n      b06 = a20 * a31 - a21 * a30,\\n      b07 = a20 * a32 - a22 * a30,\\n      b08 = a20 * a33 - a23 * a30,\\n      b09 = a21 * a32 - a22 * a31,\\n      b10 = a21 * a33 - a23 * a31,\\n      b11 = a22 * a33 - a23 * a32,\\n\\n      det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\\n\\n  return mat4(\\n      a11 * b11 - a12 * b10 + a13 * b09,\\n      a02 * b10 - a01 * b11 - a03 * b09,\\n      a31 * b05 - a32 * b04 + a33 * b03,\\n      a22 * b04 - a21 * b05 - a23 * b03,\\n      a12 * b08 - a10 * b11 - a13 * b07,\\n      a00 * b11 - a02 * b08 + a03 * b07,\\n      a32 * b02 - a30 * b05 - a33 * b01,\\n      a20 * b05 - a22 * b02 + a23 * b01,\\n      a10 * b10 - a11 * b08 + a13 * b06,\\n      a01 * b08 - a00 * b10 - a03 * b06,\\n      a30 * b04 - a31 * b02 + a33 * b00,\\n      a21 * b02 - a20 * b04 - a23 * b00,\\n      a11 * b07 - a10 * b09 - a12 * b06,\\n      a00 * b09 - a01 * b07 + a02 * b06,\\n      a31 * b01 - a30 * b03 - a32 * b00,\\n      a20 * b03 - a21 * b01 + a22 * b00) / det;\\n}\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the cone vertex and normal at the given index.\\n//\\n// The returned vertex is for a cone with its top at origin and height of 1.0,\\n// pointing in the direction of the vector attribute.\\n//\\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\\n// These vertices are used to make up the triangles of the cone by the following:\\n//   segment + 0 top vertex\\n//   segment + 1 perimeter vertex a+1\\n//   segment + 2 perimeter vertex a\\n//   segment + 3 center base vertex\\n//   segment + 4 perimeter vertex a\\n//   segment + 5 perimeter vertex a+1\\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\\n// To go from index to segment, floor(index / 6)\\n// To go from segment to angle, 2*pi * (segment/segmentCount)\\n// To go from index to segment index, index - (segment*6)\\n//\\nvec3 getConePosition(vec3 d, float index, float coneOffset, out vec3 normal) {\\n\\n  const float segmentCount = 8.0;\\n\\n  index = mod(index, segmentCount * 6.0);\\n\\n  float segment = floor(index/6.0);\\n  float segmentIndex = index - (segment*6.0);\\n\\n  normal = -normalize(d);\\n\\n  if (segmentIndex == 3.0) {\\n    return mix(vec3(0.0), -d, coneOffset);\\n  }\\n\\n  // angle = 2pi * ((segment + ((segmentIndex == 1.0 || segmentIndex == 5.0) ? 1.0 : 0.0)) / segmentCount)\\n  float nextAngle = float(segmentIndex == 1.0 || segmentIndex == 5.0);\\n  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\\n\\n  vec3 v1 = mix(d, vec3(0.0), coneOffset);\\n  vec3 v2 = v1 - d;\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d)*0.25;\\n  vec3 y = v * sin(angle) * length(d)*0.25;\\n  vec3 v3 = v2 + x + y;\\n  if (segmentIndex <= 2.0) {\\n    vec3 tx = u * sin(angle);\\n    vec3 ty = v * -cos(angle);\\n    vec3 tangent = tx + ty;\\n    normal = normalize(cross(v3 - v1, tangent));\\n  }\\n\\n  if (segmentIndex == 0.0) {\\n    return mix(d, vec3(0.0), coneOffset);\\n  }\\n  return v3;\\n}\\n\\nattribute vec3 vector;\\nattribute vec4 color, position;\\nattribute vec2 uv;\\nuniform float vectorScale;\\nuniform float coneScale;\\n\\nuniform float coneOffset;\\n\\nuniform mat4 model\\n           , view\\n           , projection;\\nuniform vec3 eyePosition\\n           , lightPosition;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data\\n           , f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  // Scale the vector magnitude to stay constant with\\n  // model & view changes.\\n  vec3 normal;\\n  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\\n  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n  normal = normalize(normal * inverse(mat3(model)));\\n\\n  // vec4 m_position  = model * vec4(conePosition, 1.0);\\n  vec4 t_position  = view * conePosition;\\n  gl_Position      = projection * t_position;\\n  f_color          = color; //vec4(position.w, color.r, 0, 0);\\n  f_normal         = normal;\\n  f_data           = conePosition.xyz;\\n  f_position       = position.xyz;\\n  f_eyeDirection   = eyePosition   - conePosition.xyz;\\n  f_lightDirection = lightPosition - conePosition.xyz;\\n  f_uv             = uv;\\n}\\n\"]),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness\\n            , fresnel\\n            , kambient\\n            , kdiffuse\\n            , kspecular\\n            , opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data\\n           , f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(!gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = cookTorranceSpecular(L, V, N, roughness, fresnel);\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor =  texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * opacity;\\n}\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the cone vertex and normal at the given index.\\n//\\n// The returned vertex is for a cone with its top at origin and height of 1.0,\\n// pointing in the direction of the vector attribute.\\n//\\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\\n// These vertices are used to make up the triangles of the cone by the following:\\n//   segment + 0 top vertex\\n//   segment + 1 perimeter vertex a+1\\n//   segment + 2 perimeter vertex a\\n//   segment + 3 center base vertex\\n//   segment + 4 perimeter vertex a\\n//   segment + 5 perimeter vertex a+1\\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\\n// To go from index to segment, floor(index / 6)\\n// To go from segment to angle, 2*pi * (segment/segmentCount)\\n// To go from index to segment index, index - (segment*6)\\n//\\nvec3 getConePosition(vec3 d, float index, float coneOffset, out vec3 normal) {\\n\\n  const float segmentCount = 8.0;\\n\\n  index = mod(index, segmentCount * 6.0);\\n\\n  float segment = floor(index/6.0);\\n  float segmentIndex = index - (segment*6.0);\\n\\n  normal = -normalize(d);\\n\\n  if (segmentIndex == 3.0) {\\n    return mix(vec3(0.0), -d, coneOffset);\\n  }\\n\\n  // angle = 2pi * ((segment + ((segmentIndex == 1.0 || segmentIndex == 5.0) ? 1.0 : 0.0)) / segmentCount)\\n  float nextAngle = float(segmentIndex == 1.0 || segmentIndex == 5.0);\\n  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\\n\\n  vec3 v1 = mix(d, vec3(0.0), coneOffset);\\n  vec3 v2 = v1 - d;\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d)*0.25;\\n  vec3 y = v * sin(angle) * length(d)*0.25;\\n  vec3 v3 = v2 + x + y;\\n  if (segmentIndex <= 2.0) {\\n    vec3 tx = u * sin(angle);\\n    vec3 ty = v * -cos(angle);\\n    vec3 tangent = tx + ty;\\n    normal = normalize(cross(v3 - v1, tangent));\\n  }\\n\\n  if (segmentIndex == 0.0) {\\n    return mix(d, vec3(0.0), coneOffset);\\n  }\\n  return v3;\\n}\\n\\nattribute vec3 vector;\\nattribute vec4 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\n\\nuniform float vectorScale;\\nuniform float coneScale;\\nuniform float coneOffset;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  vec3 normal;\\n  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\\n  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n  gl_Position = projection * view * conePosition;\\n  f_id        = id;\\n  f_position  = position.xyz;\\n}\\n\"]),s=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]);r.meshShader={vertex:i,fragment:a,attributes:[{name:\"position\",type:\"vec4\"},{name:\"normal\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"},{name:\"vector\",type:\"vec3\"}]},r.pickShader={vertex:o,fragment:s,attributes:[{name:\"position\",type:\"vec4\"},{name:\"id\",type:\"vec4\"},{name:\"vector\",type:\"vec3\"}]}},{glslify:395}],236:[function(t,e,r){e.exports={0:\"NONE\",1:\"ONE\",2:\"LINE_LOOP\",3:\"LINE_STRIP\",4:\"TRIANGLES\",5:\"TRIANGLE_STRIP\",6:\"TRIANGLE_FAN\",256:\"DEPTH_BUFFER_BIT\",512:\"NEVER\",513:\"LESS\",514:\"EQUAL\",515:\"LEQUAL\",516:\"GREATER\",517:\"NOTEQUAL\",518:\"GEQUAL\",519:\"ALWAYS\",768:\"SRC_COLOR\",769:\"ONE_MINUS_SRC_COLOR\",770:\"SRC_ALPHA\",771:\"ONE_MINUS_SRC_ALPHA\",772:\"DST_ALPHA\",773:\"ONE_MINUS_DST_ALPHA\",774:\"DST_COLOR\",775:\"ONE_MINUS_DST_COLOR\",776:\"SRC_ALPHA_SATURATE\",1024:\"STENCIL_BUFFER_BIT\",1028:\"FRONT\",1029:\"BACK\",1032:\"FRONT_AND_BACK\",1280:\"INVALID_ENUM\",1281:\"INVALID_VALUE\",1282:\"INVALID_OPERATION\",1285:\"OUT_OF_MEMORY\",1286:\"INVALID_FRAMEBUFFER_OPERATION\",2304:\"CW\",2305:\"CCW\",2849:\"LINE_WIDTH\",2884:\"CULL_FACE\",2885:\"CULL_FACE_MODE\",2886:\"FRONT_FACE\",2928:\"DEPTH_RANGE\",2929:\"DEPTH_TEST\",2930:\"DEPTH_WRITEMASK\",2931:\"DEPTH_CLEAR_VALUE\",2932:\"DEPTH_FUNC\",2960:\"STENCIL_TEST\",2961:\"STENCIL_CLEAR_VALUE\",2962:\"STENCIL_FUNC\",2963:\"STENCIL_VALUE_MASK\",2964:\"STENCIL_FAIL\",2965:\"STENCIL_PASS_DEPTH_FAIL\",2966:\"STENCIL_PASS_DEPTH_PASS\",2967:\"STENCIL_REF\",2968:\"STENCIL_WRITEMASK\",2978:\"VIEWPORT\",3024:\"DITHER\",3042:\"BLEND\",3088:\"SCISSOR_BOX\",3089:\"SCISSOR_TEST\",3106:\"COLOR_CLEAR_VALUE\",3107:\"COLOR_WRITEMASK\",3317:\"UNPACK_ALIGNMENT\",3333:\"PACK_ALIGNMENT\",3379:\"MAX_TEXTURE_SIZE\",3386:\"MAX_VIEWPORT_DIMS\",3408:\"SUBPIXEL_BITS\",3410:\"RED_BITS\",3411:\"GREEN_BITS\",3412:\"BLUE_BITS\",3413:\"ALPHA_BITS\",3414:\"DEPTH_BITS\",3415:\"STENCIL_BITS\",3553:\"TEXTURE_2D\",4352:\"DONT_CARE\",4353:\"FASTEST\",4354:\"NICEST\",5120:\"BYTE\",5121:\"UNSIGNED_BYTE\",5122:\"SHORT\",5123:\"UNSIGNED_SHORT\",5124:\"INT\",5125:\"UNSIGNED_INT\",5126:\"FLOAT\",5386:\"INVERT\",5890:\"TEXTURE\",6401:\"STENCIL_INDEX\",6402:\"DEPTH_COMPONENT\",6406:\"ALPHA\",6407:\"RGB\",6408:\"RGBA\",6409:\"LUMINANCE\",6410:\"LUMINANCE_ALPHA\",7680:\"KEEP\",7681:\"REPLACE\",7682:\"INCR\",7683:\"DECR\",7936:\"VENDOR\",7937:\"RENDERER\",7938:\"VERSION\",9728:\"NEAREST\",9729:\"LINEAR\",9984:\"NEAREST_MIPMAP_NEAREST\",9985:\"LINEAR_MIPMAP_NEAREST\",9986:\"NEAREST_MIPMAP_LINEAR\",9987:\"LINEAR_MIPMAP_LINEAR\",10240:\"TEXTURE_MAG_FILTER\",10241:\"TEXTURE_MIN_FILTER\",10242:\"TEXTURE_WRAP_S\",10243:\"TEXTURE_WRAP_T\",10497:\"REPEAT\",10752:\"POLYGON_OFFSET_UNITS\",16384:\"COLOR_BUFFER_BIT\",32769:\"CONSTANT_COLOR\",32770:\"ONE_MINUS_CONSTANT_COLOR\",32771:\"CONSTANT_ALPHA\",32772:\"ONE_MINUS_CONSTANT_ALPHA\",32773:\"BLEND_COLOR\",32774:\"FUNC_ADD\",32777:\"BLEND_EQUATION_RGB\",32778:\"FUNC_SUBTRACT\",32779:\"FUNC_REVERSE_SUBTRACT\",32819:\"UNSIGNED_SHORT_4_4_4_4\",32820:\"UNSIGNED_SHORT_5_5_5_1\",32823:\"POLYGON_OFFSET_FILL\",32824:\"POLYGON_OFFSET_FACTOR\",32854:\"RGBA4\",32855:\"RGB5_A1\",32873:\"TEXTURE_BINDING_2D\",32926:\"SAMPLE_ALPHA_TO_COVERAGE\",32928:\"SAMPLE_COVERAGE\",32936:\"SAMPLE_BUFFERS\",32937:\"SAMPLES\",32938:\"SAMPLE_COVERAGE_VALUE\",32939:\"SAMPLE_COVERAGE_INVERT\",32968:\"BLEND_DST_RGB\",32969:\"BLEND_SRC_RGB\",32970:\"BLEND_DST_ALPHA\",32971:\"BLEND_SRC_ALPHA\",33071:\"CLAMP_TO_EDGE\",33170:\"GENERATE_MIPMAP_HINT\",33189:\"DEPTH_COMPONENT16\",33306:\"DEPTH_STENCIL_ATTACHMENT\",33635:\"UNSIGNED_SHORT_5_6_5\",33648:\"MIRRORED_REPEAT\",33901:\"ALIASED_POINT_SIZE_RANGE\",33902:\"ALIASED_LINE_WIDTH_RANGE\",33984:\"TEXTURE0\",33985:\"TEXTURE1\",33986:\"TEXTURE2\",33987:\"TEXTURE3\",33988:\"TEXTURE4\",33989:\"TEXTURE5\",33990:\"TEXTURE6\",33991:\"TEXTURE7\",33992:\"TEXTURE8\",33993:\"TEXTURE9\",33994:\"TEXTURE10\",33995:\"TEXTURE11\",33996:\"TEXTURE12\",33997:\"TEXTURE13\",33998:\"TEXTURE14\",33999:\"TEXTURE15\",34000:\"TEXTURE16\",34001:\"TEXTURE17\",34002:\"TEXTURE18\",34003:\"TEXTURE19\",34004:\"TEXTURE20\",34005:\"TEXTURE21\",34006:\"TEXTURE22\",34007:\"TEXTURE23\",34008:\"TEXTURE24\",34009:\"TEXTURE25\",34010:\"TEXTURE26\",34011:\"TEXTURE27\",34012:\"TEXTURE28\",34013:\"TEXTURE29\",34014:\"TEXTURE30\",34015:\"TEXTURE31\",34016:\"ACTIVE_TEXTURE\",34024:\"MAX_RENDERBUFFER_SIZE\",34041:\"DEPTH_STENCIL\",34055:\"INCR_WRAP\",34056:\"DECR_WRAP\",34067:\"TEXTURE_CUBE_MAP\",34068:\"TEXTURE_BINDING_CUBE_MAP\",34069:\"TEXTURE_CUBE_MAP_POSITIVE_X\",34070:\"TEXTURE_CUBE_MAP_NEGATIVE_X\",34071:\"TEXTURE_CUBE_MAP_POSITIVE_Y\",34072:\"TEXTURE_CUBE_MAP_NEGATIVE_Y\",34073:\"TEXTURE_CUBE_MAP_POSITIVE_Z\",34074:\"TEXTURE_CUBE_MAP_NEGATIVE_Z\",34076:\"MAX_CUBE_MAP_TEXTURE_SIZE\",34338:\"VERTEX_ATTRIB_ARRAY_ENABLED\",34339:\"VERTEX_ATTRIB_ARRAY_SIZE\",34340:\"VERTEX_ATTRIB_ARRAY_STRIDE\",34341:\"VERTEX_ATTRIB_ARRAY_TYPE\",34342:\"CURRENT_VERTEX_ATTRIB\",34373:\"VERTEX_ATTRIB_ARRAY_POINTER\",34466:\"NUM_COMPRESSED_TEXTURE_FORMATS\",34467:\"COMPRESSED_TEXTURE_FORMATS\",34660:\"BUFFER_SIZE\",34661:\"BUFFER_USAGE\",34816:\"STENCIL_BACK_FUNC\",34817:\"STENCIL_BACK_FAIL\",34818:\"STENCIL_BACK_PASS_DEPTH_FAIL\",34819:\"STENCIL_BACK_PASS_DEPTH_PASS\",34877:\"BLEND_EQUATION_ALPHA\",34921:\"MAX_VERTEX_ATTRIBS\",34922:\"VERTEX_ATTRIB_ARRAY_NORMALIZED\",34930:\"MAX_TEXTURE_IMAGE_UNITS\",34962:\"ARRAY_BUFFER\",34963:\"ELEMENT_ARRAY_BUFFER\",34964:\"ARRAY_BUFFER_BINDING\",34965:\"ELEMENT_ARRAY_BUFFER_BINDING\",34975:\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\",35040:\"STREAM_DRAW\",35044:\"STATIC_DRAW\",35048:\"DYNAMIC_DRAW\",35632:\"FRAGMENT_SHADER\",35633:\"VERTEX_SHADER\",35660:\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\",35661:\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\",35663:\"SHADER_TYPE\",35664:\"FLOAT_VEC2\",35665:\"FLOAT_VEC3\",35666:\"FLOAT_VEC4\",35667:\"INT_VEC2\",35668:\"INT_VEC3\",35669:\"INT_VEC4\",35670:\"BOOL\",35671:\"BOOL_VEC2\",35672:\"BOOL_VEC3\",35673:\"BOOL_VEC4\",35674:\"FLOAT_MAT2\",35675:\"FLOAT_MAT3\",35676:\"FLOAT_MAT4\",35678:\"SAMPLER_2D\",35680:\"SAMPLER_CUBE\",35712:\"DELETE_STATUS\",35713:\"COMPILE_STATUS\",35714:\"LINK_STATUS\",35715:\"VALIDATE_STATUS\",35716:\"INFO_LOG_LENGTH\",35717:\"ATTACHED_SHADERS\",35718:\"ACTIVE_UNIFORMS\",35719:\"ACTIVE_UNIFORM_MAX_LENGTH\",35720:\"SHADER_SOURCE_LENGTH\",35721:\"ACTIVE_ATTRIBUTES\",35722:\"ACTIVE_ATTRIBUTE_MAX_LENGTH\",35724:\"SHADING_LANGUAGE_VERSION\",35725:\"CURRENT_PROGRAM\",36003:\"STENCIL_BACK_REF\",36004:\"STENCIL_BACK_VALUE_MASK\",36005:\"STENCIL_BACK_WRITEMASK\",36006:\"FRAMEBUFFER_BINDING\",36007:\"RENDERBUFFER_BINDING\",36048:\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\",36049:\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\",36050:\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\",36051:\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\",36053:\"FRAMEBUFFER_COMPLETE\",36054:\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\",36055:\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\",36057:\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\",36061:\"FRAMEBUFFER_UNSUPPORTED\",36064:\"COLOR_ATTACHMENT0\",36096:\"DEPTH_ATTACHMENT\",36128:\"STENCIL_ATTACHMENT\",36160:\"FRAMEBUFFER\",36161:\"RENDERBUFFER\",36162:\"RENDERBUFFER_WIDTH\",36163:\"RENDERBUFFER_HEIGHT\",36164:\"RENDERBUFFER_INTERNAL_FORMAT\",36168:\"STENCIL_INDEX8\",36176:\"RENDERBUFFER_RED_SIZE\",36177:\"RENDERBUFFER_GREEN_SIZE\",36178:\"RENDERBUFFER_BLUE_SIZE\",36179:\"RENDERBUFFER_ALPHA_SIZE\",36180:\"RENDERBUFFER_DEPTH_SIZE\",36181:\"RENDERBUFFER_STENCIL_SIZE\",36194:\"RGB565\",36336:\"LOW_FLOAT\",36337:\"MEDIUM_FLOAT\",36338:\"HIGH_FLOAT\",36339:\"LOW_INT\",36340:\"MEDIUM_INT\",36341:\"HIGH_INT\",36346:\"SHADER_COMPILER\",36347:\"MAX_VERTEX_UNIFORM_VECTORS\",36348:\"MAX_VARYING_VECTORS\",36349:\"MAX_FRAGMENT_UNIFORM_VECTORS\",37440:\"UNPACK_FLIP_Y_WEBGL\",37441:\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\",37442:\"CONTEXT_LOST_WEBGL\",37443:\"UNPACK_COLORSPACE_CONVERSION_WEBGL\",37444:\"BROWSER_DEFAULT_WEBGL\"}},{}],237:[function(t,e,r){var n=t(\"./1.0/numbers\");e.exports=function(t){return n[t]}},{\"./1.0/numbers\":236}],238:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e),o=i(e,[{buffer:r,type:e.FLOAT,size:3,offset:0,stride:40},{buffer:r,type:e.FLOAT,size:4,offset:12,stride:40},{buffer:r,type:e.FLOAT,size:3,offset:28,stride:40}]),l=a(e);l.attributes.position.location=0,l.attributes.color.location=1,l.attributes.offset.location=2;var c=new s(e,r,o,l);return c.update(t),c};var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"./shaders/index\"),o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(t,e,r,n){this.gl=t,this.shader=n,this.buffer=e,this.vao=r,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var l=s.prototype;function c(t,e){for(var r=0;r<3;++r)t[0][r]=Math.min(t[0][r],e[r]),t[1][r]=Math.max(t[1][r],e[r])}l.isOpaque=function(){return!this.hasAlpha},l.isTransparent=function(){return this.hasAlpha},l.drawTransparent=l.draw=function(t){var e=this.gl,r=this.shader.uniforms;this.shader.bind();var n=r.view=t.view||o,i=r.projection=t.projection||o;r.model=t.model||o,r.clipBounds=this.clipBounds,r.opacity=this.opacity;var a=n[12],s=n[13],l=n[14],c=n[15],u=this.pixelRatio*(i[3]*a+i[7]*s+i[11]*l+i[15]*c)/e.drawingBufferHeight;this.vao.bind();for(var f=0;f<3;++f)e.lineWidth(this.lineWidth[f]),r.capSize=this.capSize[f]*u,this.lineCount[f]&&e.drawArrays(e.LINES,this.lineOffset[f],this.lineCount[f]);this.vao.unbind()};var u=function(){for(var t=new Array(3),e=0;e<3;++e){for(var r=[],n=1;n<=2;++n)for(var i=-1;i<=1;i+=2){var a=[0,0,0];a[(n+e)%3]=i,r.push(a)}t[e]=r}return t}();function f(t,e,r,n){for(var i=u[n],a=0;a<i.length;++a){var o=i[a];t.push(e[0],e[1],e[2],r[0],r[1],r[2],r[3],o[0],o[1],o[2])}return i.length}l.update=function(t){\"lineWidth\"in(t=t||{})&&(this.lineWidth=t.lineWidth,Array.isArray(this.lineWidth)||(this.lineWidth=[this.lineWidth,this.lineWidth,this.lineWidth])),\"capSize\"in t&&(this.capSize=t.capSize,Array.isArray(this.capSize)||(this.capSize=[this.capSize,this.capSize,this.capSize])),this.hasAlpha=!1,\"opacity\"in t&&(this.opacity=+t.opacity,this.opacity<1&&(this.hasAlpha=!0));var e=t.color||[[0,0,0],[0,0,0],[0,0,0]],r=t.position,n=t.error;if(Array.isArray(e[0])||(e=[e,e,e]),r&&n){var i=[],a=r.length,o=0;this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.lineCount=[0,0,0];for(var s=0;s<3;++s){this.lineOffset[s]=o;t:for(var l=0;l<a;++l){for(var u=r[l],h=0;h<3;++h)if(isNaN(u[h])||!isFinite(u[h]))continue t;var p=n[l],d=e[s];if(Array.isArray(d[0])&&(d=e[l]),3===d.length?d=[d[0],d[1],d[2],1]:4===d.length&&(d=[d[0],d[1],d[2],d[3]],!this.hasAlpha&&d[3]<1&&(this.hasAlpha=!0)),!isNaN(p[0][s])&&!isNaN(p[1][s])){var g;if(p[0][s]<0)(g=u.slice())[s]+=p[0][s],i.push(u[0],u[1],u[2],d[0],d[1],d[2],d[3],0,0,0,g[0],g[1],g[2],d[0],d[1],d[2],d[3],0,0,0),c(this.bounds,g),o+=2+f(i,g,d,s);if(p[1][s]>0)(g=u.slice())[s]+=p[1][s],i.push(u[0],u[1],u[2],d[0],d[1],d[2],d[3],0,0,0,g[0],g[1],g[2],d[0],d[1],d[2],d[3],0,0,0),c(this.bounds,g),o+=2+f(i,g,d,s)}}this.lineCount[s]=o-this.lineOffset[s]}this.buffer.update(i)}},l.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},{\"./shaders/index\":239,\"gl-buffer\":231,\"gl-vao\":313}],239:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=t(\"gl-shader\"),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, offset;\\nattribute vec4 color;\\nuniform mat4 model, view, projection;\\nuniform float capSize;\\nvarying vec4 fragColor;\\nvarying vec3 fragPosition;\\n\\nvoid main() {\\n  vec4 worldPosition  = model * vec4(position, 1.0);\\n  worldPosition       = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\\n  gl_Position         = projection * view * worldPosition;\\n  fragColor           = color;\\n  fragPosition        = position;\\n}\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float opacity;\\nvarying vec3 fragPosition;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  if (\\n    outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||\\n    fragColor.a * opacity == 0.\\n  ) discard;\\n\\n  gl_FragColor = opacity * fragColor;\\n}\"]);e.exports=function(t){return i(t,a,o,null,[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"offset\",type:\"vec3\"}])}},{\"gl-shader\":290,glslify:395}],240:[function(t,e,r){\"use strict\";var n=t(\"gl-texture2d\");e.exports=function(t,e,r,n){i||(i=t.FRAMEBUFFER_UNSUPPORTED,a=t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,o=t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,s=t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var c=t.getExtension(\"WEBGL_draw_buffers\");!l&&c&&function(t,e){var r=t.getParameter(e.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(r+1);for(var n=0;n<=r;++n){for(var i=new Array(r),a=0;a<n;++a)i[a]=t.COLOR_ATTACHMENT0+a;for(var a=n;a<r;++a)i[a]=t.NONE;l[n]=i}}(t,c);Array.isArray(e)&&(n=r,r=0|e[1],e=0|e[0]);if(\"number\"!=typeof e)throw new Error(\"gl-fbo: Missing shape parameter\");var u=t.getParameter(t.MAX_RENDERBUFFER_SIZE);if(e<0||e>u||r<0||r>u)throw new Error(\"gl-fbo: Parameters are too large for FBO\");var f=1;if(\"color\"in(n=n||{})){if((f=Math.max(0|n.color,0))<0)throw new Error(\"gl-fbo: Must specify a nonnegative number of colors\");if(f>1){if(!c)throw new Error(\"gl-fbo: Multiple draw buffer extension not supported\");if(f>t.getParameter(c.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error(\"gl-fbo: Context does not support \"+f+\" draw buffers\")}}var h=t.UNSIGNED_BYTE,p=t.getExtension(\"OES_texture_float\");if(n.float&&f>0){if(!p)throw new Error(\"gl-fbo: Context does not support floating point textures\");h=t.FLOAT}else n.preferFloat&&f>0&&p&&(h=t.FLOAT);var g=!0;\"depth\"in n&&(g=!!n.depth);var v=!1;\"stencil\"in n&&(v=!!n.stencil);return new d(t,e,r,h,f,g,v,c)};var i,a,o,s,l=null;function c(t){return[t.getParameter(t.FRAMEBUFFER_BINDING),t.getParameter(t.RENDERBUFFER_BINDING),t.getParameter(t.TEXTURE_BINDING_2D)]}function u(t,e){t.bindFramebuffer(t.FRAMEBUFFER,e[0]),t.bindRenderbuffer(t.RENDERBUFFER,e[1]),t.bindTexture(t.TEXTURE_2D,e[2])}function f(t){switch(t){case i:throw new Error(\"gl-fbo: Framebuffer unsupported\");case a:throw new Error(\"gl-fbo: Framebuffer incomplete attachment\");case o:throw new Error(\"gl-fbo: Framebuffer incomplete dimensions\");case s:throw new Error(\"gl-fbo: Framebuffer incomplete missing attachment\");default:throw new Error(\"gl-fbo: Framebuffer failed for unspecified reason\")}}function h(t,e,r,i,a,o){if(!i)return null;var s=n(t,e,r,a,i);return s.magFilter=t.NEAREST,s.minFilter=t.NEAREST,s.mipSamples=1,s.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,s.handle,0),s}function p(t,e,r,n,i){var a=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,a),t.renderbufferStorage(t.RENDERBUFFER,n,e,r),t.framebufferRenderbuffer(t.FRAMEBUFFER,i,t.RENDERBUFFER,a),a}function d(t,e,r,n,i,a,o,s){this.gl=t,this._shape=[0|e,0|r],this._destroyed=!1,this._ext=s,this.color=new Array(i);for(var d=0;d<i;++d)this.color[d]=null;this._color_rb=null,this.depth=null,this._depth_rb=null,this._colorType=n,this._useDepth=a,this._useStencil=o;var g=this,v=[0|e,0|r];Object.defineProperties(v,{0:{get:function(){return g._shape[0]},set:function(t){return g.width=t}},1:{get:function(){return g._shape[1]},set:function(t){return g.height=t}}}),this._shapeVector=v,function(t){var e=c(t.gl),r=t.gl,n=t.handle=r.createFramebuffer(),i=t._shape[0],a=t._shape[1],o=t.color.length,s=t._ext,d=t._useStencil,g=t._useDepth,v=t._colorType;r.bindFramebuffer(r.FRAMEBUFFER,n);for(var m=0;m<o;++m)t.color[m]=h(r,i,a,v,r.RGBA,r.COLOR_ATTACHMENT0+m);0===o?(t._color_rb=p(r,i,a,r.RGBA4,r.COLOR_ATTACHMENT0),s&&s.drawBuffersWEBGL(l[0])):o>1&&s.drawBuffersWEBGL(l[o]);var y=r.getExtension(\"WEBGL_depth_texture\");y?d?t.depth=h(r,i,a,y.UNSIGNED_INT_24_8_WEBGL,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):g&&(t.depth=h(r,i,a,r.UNSIGNED_SHORT,r.DEPTH_COMPONENT,r.DEPTH_ATTACHMENT)):g&&d?t._depth_rb=p(r,i,a,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):g?t._depth_rb=p(r,i,a,r.DEPTH_COMPONENT16,r.DEPTH_ATTACHMENT):d&&(t._depth_rb=p(r,i,a,r.STENCIL_INDEX,r.STENCIL_ATTACHMENT));var x=r.checkFramebufferStatus(r.FRAMEBUFFER);if(x!==r.FRAMEBUFFER_COMPLETE){for(t._destroyed=!0,r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(r.deleteRenderbuffer(t._depth_rb),t._depth_rb=null),m=0;m<t.color.length;++m)t.color[m].dispose(),t.color[m]=null;t._color_rb&&(r.deleteRenderbuffer(t._color_rb),t._color_rb=null),u(r,e),f(x)}u(r,e)}(this)}var g=d.prototype;function v(t,e,r){if(t._destroyed)throw new Error(\"gl-fbo: Can't resize destroyed FBO\");if(t._shape[0]!==e||t._shape[1]!==r){var n=t.gl,i=n.getParameter(n.MAX_RENDERBUFFER_SIZE);if(e<0||e>i||r<0||r>i)throw new Error(\"gl-fbo: Can't resize FBO, invalid dimensions\");t._shape[0]=e,t._shape[1]=r;for(var a=c(n),o=0;o<t.color.length;++o)t.color[o].shape=t._shape;t._color_rb&&(n.bindRenderbuffer(n.RENDERBUFFER,t._color_rb),n.renderbufferStorage(n.RENDERBUFFER,n.RGBA4,t._shape[0],t._shape[1])),t.depth&&(t.depth.shape=t._shape),t._depth_rb&&(n.bindRenderbuffer(n.RENDERBUFFER,t._depth_rb),t._useDepth&&t._useStencil?n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,t._shape[0],t._shape[1]):t._useDepth?n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_COMPONENT16,t._shape[0],t._shape[1]):t._useStencil&&n.renderbufferStorage(n.RENDERBUFFER,n.STENCIL_INDEX,t._shape[0],t._shape[1])),n.bindFramebuffer(n.FRAMEBUFFER,t.handle);var s=n.checkFramebufferStatus(n.FRAMEBUFFER);s!==n.FRAMEBUFFER_COMPLETE&&(t.dispose(),u(n,a),f(s)),u(n,a)}}Object.defineProperties(g,{shape:{get:function(){return this._destroyed?[0,0]:this._shapeVector},set:function(t){if(Array.isArray(t)||(t=[0|t,0|t]),2!==t.length)throw new Error(\"gl-fbo: Shape vector must be length 2\");var e=0|t[0],r=0|t[1];return v(this,e,r),[e,r]},enumerable:!1},width:{get:function(){return this._destroyed?0:this._shape[0]},set:function(t){return v(this,t|=0,this._shape[1]),t},enumerable:!1},height:{get:function(){return this._destroyed?0:this._shape[1]},set:function(t){return t|=0,v(this,this._shape[0],t),t},enumerable:!1}}),g.bind=function(){if(!this._destroyed){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this.handle),t.viewport(0,0,this._shape[0],this._shape[1])}},g.dispose=function(){if(!this._destroyed){this._destroyed=!0;var t=this.gl;t.deleteFramebuffer(this.handle),this.handle=null,this.depth&&(this.depth.dispose(),this.depth=null),this._depth_rb&&(t.deleteRenderbuffer(this._depth_rb),this._depth_rb=null);for(var e=0;e<this.color.length;++e)this.color[e].dispose(),this.color[e]=null;this._color_rb&&(t.deleteRenderbuffer(this._color_rb),this._color_rb=null)}}},{\"gl-texture2d\":308}],241:[function(t,e,r){var n=t(\"sprintf-js\").sprintf,i=t(\"gl-constants/lookup\"),a=t(\"glsl-shader-name\"),o=t(\"add-line-numbers\");e.exports=function(t,e,r){\"use strict\";var s=a(e)||\"of unknown name (see npm glsl-shader-name)\",l=\"unknown type\";void 0!==r&&(l=r===i.FRAGMENT_SHADER?\"fragment\":\"vertex\");for(var c=n(\"Error compiling %s shader %s:\\n\",l,s),u=n(\"%s%s\",c,t),f=t.split(\"\\n\"),h={},p=0;p<f.length;p++){var d=f[p];if(\"\"!==d&&\"\\0\"!==d){var g=parseInt(d.split(\":\")[2]);if(isNaN(g))throw new Error(n(\"Could not parse error: %s\",d));h[g]=d}}for(var v=o(e).split(\"\\n\"),p=0;p<v.length;p++)if(h[p+3]||h[p+2]||h[p+1]){var m=v[p];if(c+=m+\"\\n\",h[p+1]){var y=h[p+1];y=y.substr(y.split(\":\",3).join(\":\").length+1).trim(),c+=n(\"^^^ %s\\n\\n\",y)}}return{long:c.trim(),short:u.trim()}}},{\"add-line-numbers\":50,\"gl-constants/lookup\":237,\"glsl-shader-name\":387,\"sprintf-js\":506}],242:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=t.gl,n=o(r,l.vertex,l.fragment),i=o(r,l.pickVertex,l.pickFragment),a=s(r),u=s(r),f=s(r),h=s(r),p=new c(t,n,i,a,u,f,h);return p.update(e),t.addObject(p),p};var n=t(\"binary-search-bounds\"),i=t(\"iota-array\"),a=t(\"typedarray-pool\"),o=t(\"gl-shader\"),s=t(\"gl-buffer\"),l=t(\"./lib/shaders\");function c(t,e,r,n,i,a,o){this.plot=t,this.shader=e,this.pickShader=r,this.positionBuffer=n,this.weightBuffer=i,this.colorBuffer=a,this.idBuffer=o,this.xData=[],this.yData=[],this.shape=[0,0],this.bounds=[1/0,1/0,-1/0,-1/0],this.pickOffset=0}var u,f=c.prototype,h=[0,0,1,0,0,1,1,0,1,1,0,1];f.draw=(u=[1,0,0,0,1,0,0,0,1],function(){var t=this.plot,e=this.shader,r=this.bounds,n=this.numVertices;if(!(n<=0)){var i=t.gl,a=t.dataBox,o=r[2]-r[0],s=r[3]-r[1],l=a[2]-a[0],c=a[3]-a[1];u[0]=2*o/l,u[4]=2*s/c,u[6]=2*(r[0]-a[0])/l-1,u[7]=2*(r[1]-a[1])/c-1,e.bind();var f=e.uniforms;f.viewTransform=u,f.shape=this.shape;var h=e.attributes;this.positionBuffer.bind(),h.position.pointer(),this.weightBuffer.bind(),h.weight.pointer(i.UNSIGNED_BYTE,!1),this.colorBuffer.bind(),h.color.pointer(i.UNSIGNED_BYTE,!0),i.drawArrays(i.TRIANGLES,0,n)}}),f.drawPick=function(){var t=[1,0,0,0,1,0,0,0,1],e=[0,0,0,0];return function(r){var n=this.plot,i=this.pickShader,a=this.bounds,o=this.numVertices;if(!(o<=0)){var s=n.gl,l=n.dataBox,c=a[2]-a[0],u=a[3]-a[1],f=l[2]-l[0],h=l[3]-l[1];t[0]=2*c/f,t[4]=2*u/h,t[6]=2*(a[0]-l[0])/f-1,t[7]=2*(a[1]-l[1])/h-1;for(var p=0;p<4;++p)e[p]=r>>8*p&255;this.pickOffset=r,i.bind();var d=i.uniforms;d.viewTransform=t,d.pickOffset=e,d.shape=this.shape;var g=i.attributes;return this.positionBuffer.bind(),g.position.pointer(),this.weightBuffer.bind(),g.weight.pointer(s.UNSIGNED_BYTE,!1),this.idBuffer.bind(),g.pickId.pointer(s.UNSIGNED_BYTE,!1),s.drawArrays(s.TRIANGLES,0,o),r+this.shape[0]*this.shape[1]}}}(),f.pick=function(t,e,r){var n=this.pickOffset,i=this.shape[0]*this.shape[1];if(r<n||r>=n+i)return null;var a=r-n,o=this.xData,s=this.yData;return{object:this,pointId:a,dataCoord:[o[a%this.shape[0]],s[a/this.shape[0]|0]]}},f.update=function(t){var e=(t=t||{}).shape||[0,0],r=t.x||i(e[0]),o=t.y||i(e[1]),s=t.z||new Float32Array(e[0]*e[1]);this.xData=r,this.yData=o;var l=t.colorLevels||[0],c=t.colorValues||[0,0,0,1],u=l.length,f=this.bounds,p=f[0]=r[0],d=f[1]=o[0],g=1/((f[2]=r[r.length-1])-p),v=1/((f[3]=o[o.length-1])-d),m=e[0],y=e[1];this.shape=[m,y];var x=(m-1)*(y-1)*(h.length>>>1);this.numVertices=x;for(var b=a.mallocUint8(4*x),_=a.mallocFloat32(2*x),w=a.mallocUint8(2*x),k=a.mallocUint32(x),A=0,M=0;M<y-1;++M)for(var T=v*(o[M]-d),S=v*(o[M+1]-d),C=0;C<m-1;++C)for(var E=g*(r[C]-p),L=g*(r[C+1]-p),z=0;z<h.length;z+=2){var O,I,D,P,R=h[z],F=h[z+1],B=s[(M+F)*m+(C+R)],N=n.le(l,B);if(N<0)O=c[0],I=c[1],D=c[2],P=c[3];else if(N===u-1)O=c[4*u-4],I=c[4*u-3],D=c[4*u-2],P=c[4*u-1];else{var j=(B-l[N])/(l[N+1]-l[N]),V=1-j,U=4*N,q=4*(N+1);O=V*c[U]+j*c[q],I=V*c[U+1]+j*c[q+1],D=V*c[U+2]+j*c[q+2],P=V*c[U+3]+j*c[q+3]}b[4*A]=255*O,b[4*A+1]=255*I,b[4*A+2]=255*D,b[4*A+3]=255*P,_[2*A]=.5*E+.5*L,_[2*A+1]=.5*T+.5*S,w[2*A]=R,w[2*A+1]=F,k[A]=M*m+C,A+=1}this.positionBuffer.update(_),this.weightBuffer.update(w),this.colorBuffer.update(b),this.idBuffer.update(k),a.free(_),a.free(b),a.free(w),a.free(k)},f.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.positionBuffer.dispose(),this.weightBuffer.dispose(),this.colorBuffer.dispose(),this.idBuffer.dispose(),this.plot.removeObject(this)}},{\"./lib/shaders\":243,\"binary-search-bounds\":244,\"gl-buffer\":231,\"gl-shader\":290,\"iota-array\":402,\"typedarray-pool\":523}],243:[function(t,e,r){\"use strict\";var n=t(\"glslify\");e.exports={fragment:n([\"precision lowp float;\\n#define GLSLIFY 1\\nvarying vec4 fragColor;\\nvoid main() {\\n  gl_FragColor = vec4(fragColor.rgb * fragColor.a, fragColor.a);\\n}\\n\"]),vertex:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 color;\\nattribute vec2 weight;\\n\\nuniform vec2 shape;\\nuniform mat3 viewTransform;\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\\n  fragColor = color;\\n  gl_Position = vec4(vPosition.xy, 0, vPosition.z);\\n}\\n\"]),pickFragment:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragId;\\nvarying vec2 vWeight;\\n\\nuniform vec2 shape;\\nuniform vec4 pickOffset;\\n\\nvoid main() {\\n  vec2 d = step(.5, vWeight);\\n  vec4 id = fragId + pickOffset;\\n  id.x += d.x + d.y*shape.x;\\n\\n  id.y += floor(id.x / 256.0);\\n  id.x -= floor(id.x / 256.0) * 256.0;\\n\\n  id.z += floor(id.y / 256.0);\\n  id.y -= floor(id.y / 256.0) * 256.0;\\n\\n  id.w += floor(id.z / 256.0);\\n  id.z -= floor(id.z / 256.0) * 256.0;\\n\\n  gl_FragColor = id/255.;\\n}\\n\"]),pickVertex:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 pickId;\\nattribute vec2 weight;\\n\\nuniform vec2 shape;\\nuniform mat3 viewTransform;\\n\\nvarying vec4 fragId;\\nvarying vec2 vWeight;\\n\\nvoid main() {\\n  vWeight = weight;\\n\\n  fragId = pickId;\\n\\n  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\\n  gl_Position = vec4(vPosition.xy, 0, vPosition.z);\\n}\\n\"])}},{glslify:395}],244:[function(t,e,r){arguments[4][100][0].apply(r,arguments)},{dup:100}],245:[function(t,e,r){var n=t(\"glslify\"),i=t(\"gl-shader\"),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, nextPosition;\\nattribute float arcLength, lineWidth;\\nattribute vec4 color;\\n\\nuniform vec2 screenShape;\\nuniform float pixelRatio;\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 fragColor;\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\n\\nvec4 project(vec3 p) {\\n  return projection * view * model * vec4(p, 1.0);\\n}\\n\\nvoid main() {\\n  vec4 startPoint = project(position);\\n  vec4 endPoint   = project(nextPosition);\\n\\n  vec2 A = startPoint.xy / startPoint.w;\\n  vec2 B =   endPoint.xy /   endPoint.w;\\n\\n  float clipAngle = atan(\\n    (B.y - A.y) * screenShape.y,\\n    (B.x - A.x) * screenShape.x\\n  );\\n\\n  vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(\\n    sin(clipAngle),\\n    -cos(clipAngle)\\n  ) / screenShape;\\n\\n  gl_Position = vec4(startPoint.xy + startPoint.w * offset, startPoint.zw);\\n\\n  worldPosition = position;\\n  pixelArcLength = arcLength;\\n  fragColor = color;\\n}\\n\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3      clipBounds[2];\\nuniform sampler2D dashTexture;\\nuniform float     dashScale;\\nuniform float     opacity;\\n\\nvarying vec3    worldPosition;\\nvarying float   pixelArcLength;\\nvarying vec4    fragColor;\\n\\nvoid main() {\\n  if (\\n    outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||\\n    fragColor.a * opacity == 0.\\n  ) discard;\\n\\n  float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\\n  if(dashWeight < 0.5) {\\n    discard;\\n  }\\n  gl_FragColor = fragColor * opacity;\\n}\\n\"]),s=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\n#define FLOAT_MAX  1.70141184e38\\n#define FLOAT_MIN  1.17549435e-38\\n\\nlowp vec4 encode_float_1540259130(highp float v) {\\n  highp float av = abs(v);\\n\\n  //Handle special cases\\n  if(av < FLOAT_MIN) {\\n    return vec4(0.0, 0.0, 0.0, 0.0);\\n  } else if(v > FLOAT_MAX) {\\n    return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\\n  } else if(v < -FLOAT_MAX) {\\n    return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\\n  }\\n\\n  highp vec4 c = vec4(0,0,0,0);\\n\\n  //Compute exponent and mantissa\\n  highp float e = floor(log2(av));\\n  highp float m = av * pow(2.0, -e) - 1.0;\\n  \\n  //Unpack mantissa\\n  c[1] = floor(128.0 * m);\\n  m -= c[1] / 128.0;\\n  c[2] = floor(32768.0 * m);\\n  m -= c[2] / 32768.0;\\n  c[3] = floor(8388608.0 * m);\\n  \\n  //Unpack exponent\\n  highp float ebias = e + 127.0;\\n  c[0] = floor(ebias / 2.0);\\n  ebias -= c[0] * 2.0;\\n  c[1] += floor(ebias) * 128.0; \\n\\n  //Unpack sign bit\\n  c[0] += 128.0 * step(0.0, -v);\\n\\n  //Scale back to range\\n  return c / 255.0;\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform float pickId;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;\\n\\n  gl_FragColor = vec4(pickId/255.0, encode_float_1540259130(pixelArcLength).xyz);\\n}\"]),l=[{name:\"position\",type:\"vec3\"},{name:\"nextPosition\",type:\"vec3\"},{name:\"arcLength\",type:\"float\"},{name:\"lineWidth\",type:\"float\"},{name:\"color\",type:\"vec4\"}];r.createShader=function(t){return i(t,a,o,null,l)},r.createPickShader=function(t){return i(t,a,s,null,l)}},{\"gl-shader\":290,glslify:395}],246:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl||t.scene&&t.scene.gl,r=u(e);r.attributes.position.location=0,r.attributes.nextPosition.location=1,r.attributes.arcLength.location=2,r.attributes.lineWidth.location=3,r.attributes.color.location=4;var o=f(e);o.attributes.position.location=0,o.attributes.nextPosition.location=1,o.attributes.arcLength.location=2,o.attributes.lineWidth.location=3,o.attributes.color.location=4;for(var s=n(e),c=i(e,[{buffer:s,size:3,offset:0,stride:48},{buffer:s,size:3,offset:12,stride:48},{buffer:s,size:1,offset:24,stride:48},{buffer:s,size:1,offset:28,stride:48},{buffer:s,size:4,offset:32,stride:48}]),h=l(new Array(1024),[256,1,4]),p=0;p<1024;++p)h.data[p]=255;var d=a(e,h);d.wrap=e.REPEAT;var g=new v(e,r,o,s,c,d);return g.update(t),g};var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"gl-texture2d\"),o=t(\"glsl-read-float\"),s=t(\"binary-search-bounds\"),l=t(\"ndarray\"),c=t(\"./lib/shaders\"),u=c.createShader,f=c.createPickShader,h=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function p(t,e){for(var r=0,n=0;n<3;++n){var i=t[n]-e[n];r+=i*i}return Math.sqrt(r)}function d(t){for(var e=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],r=0;r<3;++r)e[0][r]=Math.max(t[0][r],e[0][r]),e[1][r]=Math.min(t[1][r],e[1][r]);return e}function g(t,e,r,n){this.arcLength=t,this.position=e,this.index=r,this.dataCoordinate=n}function v(t,e,r,n,i,a){this.gl=t,this.shader=e,this.pickShader=r,this.buffer=n,this.vao=i,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=a,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var m=v.prototype;m.isTransparent=function(){return this.hasAlpha},m.isOpaque=function(){return!this.hasAlpha},m.pickSlots=1,m.setPickBase=function(t){this.pickId=t},m.drawTransparent=m.draw=function(t){if(this.vertexCount){var e=this.gl,r=this.shader,n=this.vao;r.bind(),r.uniforms={model:t.model||h,view:t.view||h,projection:t.projection||h,clipBounds:d(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},m.drawPick=function(t){if(this.vertexCount){var e=this.gl,r=this.pickShader,n=this.vao;r.bind(),r.uniforms={model:t.model||h,view:t.view||h,projection:t.projection||h,pickId:this.pickId,clipBounds:d(this.clipBounds),screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},m.update=function(t){var e,r;this.dirty=!0;var n=!!t.connectGaps;\"dashScale\"in t&&(this.dashScale=t.dashScale),this.hasAlpha=!1,\"opacity\"in t&&(this.opacity=+t.opacity,this.opacity<1&&(this.hasAlpha=!0));var i=[],a=[],o=[],c=0,u=0,f=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],h=t.position||t.positions;if(h){var d=t.color||t.colors||[0,0,0,1],g=t.lineWidth||1,v=!1;t:for(e=1;e<h.length;++e){var m,y,x,b=h[e-1],_=h[e];for(a.push(c),o.push(b.slice()),r=0;r<3;++r){if(isNaN(b[r])||isNaN(_[r])||!isFinite(b[r])||!isFinite(_[r])){if(!n&&i.length>0){for(var w=0;w<24;++w)i.push(i[i.length-12]);u+=2,v=!0}continue t}f[0][r]=Math.min(f[0][r],b[r],_[r]),f[1][r]=Math.max(f[1][r],b[r],_[r])}Array.isArray(d[0])?(m=d.length>e-1?d[e-1]:d.length>0?d[d.length-1]:[0,0,0,1],y=d.length>e?d[e]:d.length>0?d[d.length-1]:[0,0,0,1]):m=y=d,3===m.length&&(m=[m[0],m[1],m[2],1]),3===y.length&&(y=[y[0],y[1],y[2],1]),!this.hasAlpha&&m[3]<1&&(this.hasAlpha=!0),x=Array.isArray(g)?g.length>e-1?g[e-1]:g.length>0?g[g.length-1]:[0,0,0,1]:g;var k=c;if(c+=p(b,_),v){for(r=0;r<2;++r)i.push(b[0],b[1],b[2],_[0],_[1],_[2],k,x,m[0],m[1],m[2],m[3]);u+=2,v=!1}i.push(b[0],b[1],b[2],_[0],_[1],_[2],k,x,m[0],m[1],m[2],m[3],b[0],b[1],b[2],_[0],_[1],_[2],k,-x,m[0],m[1],m[2],m[3],_[0],_[1],_[2],b[0],b[1],b[2],c,-x,y[0],y[1],y[2],y[3],_[0],_[1],_[2],b[0],b[1],b[2],c,x,y[0],y[1],y[2],y[3]),u+=4}}if(this.buffer.update(i),a.push(c),o.push(h[h.length-1].slice()),this.bounds=f,this.vertexCount=u,this.points=o,this.arcLength=a,\"dashes\"in t){var A=t.dashes.slice();for(A.unshift(0),e=1;e<A.length;++e)A[e]=A[e-1]+A[e];var M=l(new Array(1024),[256,1,4]);for(e=0;e<256;++e){for(r=0;r<4;++r)M.set(e,0,r,0);1&s.le(A,A[A.length-1]*e/255)?M.set(e,0,0,0):M.set(e,0,0,255)}this.texture.setPixels(M)}},m.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()},m.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=o(t.value[0],t.value[1],t.value[2],0),r=s.le(this.arcLength,e);if(r<0)return null;if(r===this.arcLength.length-1)return new g(this.arcLength[this.arcLength.length-1],this.points[this.points.length-1].slice(),r);for(var n=this.points[r],i=this.points[Math.min(r+1,this.points.length-1)],a=(e-this.arcLength[r])/(this.arcLength[r+1]-this.arcLength[r]),l=1-a,c=[0,0,0],u=0;u<3;++u)c[u]=l*n[u]+a*i[u];var f=Math.min(a<.5?r:r+1,this.points.length-1);return new g(e,c,f,this.points[f])}},{\"./lib/shaders\":245,\"binary-search-bounds\":247,\"gl-buffer\":231,\"gl-texture2d\":308,\"gl-vao\":313,\"glsl-read-float\":386,ndarray:436}],247:[function(t,e,r){arguments[4][100][0].apply(r,arguments)},{dup:100}],248:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=r*o,t):null}},{}],249:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],f=u*o-s*c,h=-u*a+s*l,p=c*a-o*l,d=r*f+n*h+i*p;return d?(d=1/d,t[0]=f*d,t[1]=(-u*n+i*c)*d,t[2]=(s*n-i*o)*d,t[3]=h*d,t[4]=(u*r-i*l)*d,t[5]=(-s*r+i*a)*d,t[6]=p*d,t[7]=(-c*r+n*l)*d,t[8]=(o*r-n*a)*d,t):null}},{}],250:[function(t,e,r){e.exports=function(t){var e=new Float32Array(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},{}],251:[function(t,e,r){e.exports=function(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},{}],252:[function(t,e,r){e.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],l=t[7],c=t[8],u=t[9],f=t[10],h=t[11],p=t[12],d=t[13],g=t[14],v=t[15];return(e*o-r*a)*(f*v-h*g)-(e*s-n*a)*(u*v-h*d)+(e*l-i*a)*(u*g-f*d)+(r*s-n*o)*(c*v-h*p)-(r*l-i*o)*(c*g-f*p)+(n*l-i*s)*(c*d-u*p)}},{}],253:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,l=i+i,c=r*o,u=n*o,f=n*s,h=i*o,p=i*s,d=i*l,g=a*o,v=a*s,m=a*l;return t[0]=1-f-d,t[1]=u+m,t[2]=h-v,t[3]=0,t[4]=u-m,t[5]=1-c-d,t[6]=p+g,t[7]=0,t[8]=h+v,t[9]=p-g,t[10]=1-c-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},{}],254:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=n+n,l=i+i,c=a+a,u=n*s,f=n*l,h=n*c,p=i*l,d=i*c,g=a*c,v=o*s,m=o*l,y=o*c;return t[0]=1-(p+g),t[1]=f+y,t[2]=h-m,t[3]=0,t[4]=f-y,t[5]=1-(u+g),t[6]=d+v,t[7]=0,t[8]=h+m,t[9]=d-v,t[10]=1-(u+p),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}},{}],255:[function(t,e,r){e.exports=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},{}],256:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],p=e[11],d=e[12],g=e[13],v=e[14],m=e[15],y=r*s-n*o,x=r*l-i*o,b=r*c-a*o,_=n*l-i*s,w=n*c-a*s,k=i*c-a*l,A=u*g-f*d,M=u*v-h*d,T=u*m-p*d,S=f*v-h*g,C=f*m-p*g,E=h*m-p*v,L=y*E-x*C+b*S+_*T-w*M+k*A;if(!L)return null;return L=1/L,t[0]=(s*E-l*C+c*S)*L,t[1]=(i*C-n*E-a*S)*L,t[2]=(g*k-v*w+m*_)*L,t[3]=(h*w-f*k-p*_)*L,t[4]=(l*T-o*E-c*M)*L,t[5]=(r*E-i*T+a*M)*L,t[6]=(v*b-d*k-m*x)*L,t[7]=(u*k-h*b+p*x)*L,t[8]=(o*C-s*T+c*A)*L,t[9]=(n*T-r*C-a*A)*L,t[10]=(d*w-g*b+m*y)*L,t[11]=(f*b-u*w-p*y)*L,t[12]=(s*M-o*S-l*A)*L,t[13]=(r*S-n*M+i*A)*L,t[14]=(g*x-d*_-v*y)*L,t[15]=(u*_-f*x+h*y)*L,t}},{}],257:[function(t,e,r){var n=t(\"./identity\");e.exports=function(t,e,r,i){var a,o,s,l,c,u,f,h,p,d,g=e[0],v=e[1],m=e[2],y=i[0],x=i[1],b=i[2],_=r[0],w=r[1],k=r[2];if(Math.abs(g-_)<1e-6&&Math.abs(v-w)<1e-6&&Math.abs(m-k)<1e-6)return n(t);f=g-_,h=v-w,p=m-k,d=1/Math.sqrt(f*f+h*h+p*p),a=x*(p*=d)-b*(h*=d),o=b*(f*=d)-y*p,s=y*h-x*f,(d=Math.sqrt(a*a+o*o+s*s))?(a*=d=1/d,o*=d,s*=d):(a=0,o=0,s=0);l=h*s-p*o,c=p*a-f*s,u=f*o-h*a,(d=Math.sqrt(l*l+c*c+u*u))?(l*=d=1/d,c*=d,u*=d):(l=0,c=0,u=0);return t[0]=a,t[1]=l,t[2]=f,t[3]=0,t[4]=o,t[5]=c,t[6]=h,t[7]=0,t[8]=s,t[9]=u,t[10]=p,t[11]=0,t[12]=-(a*g+o*v+s*m),t[13]=-(l*g+c*v+u*m),t[14]=-(f*g+h*v+p*m),t[15]=1,t}},{\"./identity\":255}],258:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],v=e[13],m=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*v,t[2]=x*a+b*c+_*p+w*m,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*v,t[6]=x*a+b*c+_*p+w*m,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*v,t[10]=x*a+b*c+_*p+w*m,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*v,t[14]=x*a+b*c+_*p+w*m,t[15]=x*o+b*u+_*d+w*y,t}},{}],259:[function(t,e,r){e.exports=function(t,e,r,n,i){var a=1/Math.tan(e/2),o=1/(n-i);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t}},{}],260:[function(t,e,r){e.exports=function(t,e,r,n){var i,a,o,s,l,c,u,f,h,p,d,g,v,m,y,x,b,_,w,k,A,M,T,S,C=n[0],E=n[1],L=n[2],z=Math.sqrt(C*C+E*E+L*L);if(Math.abs(z)<1e-6)return null;C*=z=1/z,E*=z,L*=z,i=Math.sin(r),a=Math.cos(r),o=1-a,s=e[0],l=e[1],c=e[2],u=e[3],f=e[4],h=e[5],p=e[6],d=e[7],g=e[8],v=e[9],m=e[10],y=e[11],x=C*C*o+a,b=E*C*o+L*i,_=L*C*o-E*i,w=C*E*o-L*i,k=E*E*o+a,A=L*E*o+C*i,M=C*L*o+E*i,T=E*L*o-C*i,S=L*L*o+a,t[0]=s*x+f*b+g*_,t[1]=l*x+h*b+v*_,t[2]=c*x+p*b+m*_,t[3]=u*x+d*b+y*_,t[4]=s*w+f*k+g*A,t[5]=l*w+h*k+v*A,t[6]=c*w+p*k+m*A,t[7]=u*w+d*k+y*A,t[8]=s*M+f*T+g*S,t[9]=l*M+h*T+v*S,t[10]=c*M+p*T+m*S,t[11]=u*M+d*T+y*S,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t}},{}],261:[function(t,e,r){e.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],l=e[7],c=e[8],u=e[9],f=e[10],h=e[11];e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t[4]=a*i+c*n,t[5]=o*i+u*n,t[6]=s*i+f*n,t[7]=l*i+h*n,t[8]=c*i-a*n,t[9]=u*i-o*n,t[10]=f*i-s*n,t[11]=h*i-l*n,t}},{}],262:[function(t,e,r){e.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[8],u=e[9],f=e[10],h=e[11];e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t[0]=a*i-c*n,t[1]=o*i-u*n,t[2]=s*i-f*n,t[3]=l*i-h*n,t[8]=a*n+c*i,t[9]=o*n+u*i,t[10]=s*n+f*i,t[11]=l*n+h*i,t}},{}],263:[function(t,e,r){e.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[4],u=e[5],f=e[6],h=e[7];e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t[0]=a*i+c*n,t[1]=o*i+u*n,t[2]=s*i+f*n,t[3]=l*i+h*n,t[4]=c*i-a*n,t[5]=u*i-o*n,t[6]=f*i-s*n,t[7]=h*i-l*n,t}},{}],264:[function(t,e,r){e.exports=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},{}],265:[function(t,e,r){e.exports=function(t,e,r){var n,i,a,o,s,l,c,u,f,h,p,d,g=r[0],v=r[1],m=r[2];e===t?(t[12]=e[0]*g+e[4]*v+e[8]*m+e[12],t[13]=e[1]*g+e[5]*v+e[9]*m+e[13],t[14]=e[2]*g+e[6]*v+e[10]*m+e[14],t[15]=e[3]*g+e[7]*v+e[11]*m+e[15]):(n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=c,t[7]=u,t[8]=f,t[9]=h,t[10]=p,t[11]=d,t[12]=n*g+s*v+f*m+e[12],t[13]=i*g+l*v+h*m+e[13],t[14]=a*g+c*v+p*m+e[14],t[15]=o*g+u*v+d*m+e[15]);return t}},{}],266:[function(t,e,r){e.exports=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[11]=e[14],t[12]=i,t[13]=o,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}},{}],267:[function(t,e,r){\"use strict\";e.exports=function(t,e){switch(e.length){case 0:break;case 1:t[0]=1/e[0];break;case 4:n(t,e);break;case 9:i(t,e);break;case 16:a(t,e);break;default:throw new Error(\"currently supports matrices up to 4x4\")}return t};var n=t(\"gl-mat2/invert\"),i=t(\"gl-mat3/invert\"),a=t(\"gl-mat4/invert\")},{\"gl-mat2/invert\":248,\"gl-mat3/invert\":249,\"gl-mat4/invert\":256}],268:[function(t,e,r){arguments[4][233][0].apply(r,arguments)},{barycentric:62,dup:233,\"polytope-closest-point/lib/closest_point_2d.js\":467}],269:[function(t,e,r){var n=t(\"glslify\"),i=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, normal;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model\\n           , view\\n           , projection\\n           , inverseModel;\\nuniform vec3 eyePosition\\n           , lightPosition;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvec4 project(vec3 p) {\\n  return projection * view * model * vec4(p, 1.0);\\n}\\n\\nvoid main() {\\n  gl_Position      = project(position);\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * vec4(position , 1.0);\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  f_lightDirection = lightPosition - cameraCoordinate.xyz;\\n  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  f_normal  = normalize((vec4(normal,0) * inverseModel).xyz);\\n\\n  f_color          = color;\\n  f_data           = position;\\n  f_uv             = uv;\\n}\\n\"]),a=n([\"#extension GL_OES_standard_derivatives : enable\\n\\nprecision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\n//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness\\n            , fresnel\\n            , kambient\\n            , kdiffuse\\n            , kspecular\\n            , opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\\n\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\\n  //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d\\n\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor = f_color * texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * opacity;\\n}\\n\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n  f_color = color;\\n  f_data  = position;\\n  f_uv    = uv;\\n}\"]),s=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\\n\\n  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\"]),l=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\nattribute float pointSize;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    gl_Position = projection * view * model * vec4(position, 1.0);\\n  }\\n  gl_PointSize = pointSize;\\n  f_color = color;\\n  f_uv = uv;\\n}\"]),c=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  vec2 pointR = gl_PointCoord.xy - vec2(0.5,0.5);\\n  if(dot(pointR, pointR) > 0.25) {\\n    discard;\\n  }\\n  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\"]),u=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n  f_id        = id;\\n  f_position  = position;\\n}\"]),f=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]),h=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3  position;\\nattribute float pointSize;\\nattribute vec4  id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    gl_Position  = projection * view * model * vec4(position, 1.0);\\n    gl_PointSize = pointSize;\\n  }\\n  f_id         = id;\\n  f_position   = position;\\n}\"]),p=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\n\\nvoid main() {\\n  gl_Position = projection * view * model * vec4(position, 1.0);\\n}\"]),d=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 contourColor;\\n\\nvoid main() {\\n  gl_FragColor = vec4(contourColor,1);\\n}\\n\"]);r.meshShader={vertex:i,fragment:a,attributes:[{name:\"position\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"}]},r.wireShader={vertex:o,fragment:s,attributes:[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"}]},r.pointShader={vertex:l,fragment:c,attributes:[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"},{name:\"pointSize\",type:\"float\"}]},r.pickShader={vertex:u,fragment:f,attributes:[{name:\"position\",type:\"vec3\"},{name:\"id\",type:\"vec4\"}]},r.pointPickShader={vertex:h,fragment:f,attributes:[{name:\"position\",type:\"vec3\"},{name:\"pointSize\",type:\"float\"},{name:\"id\",type:\"vec4\"}]},r.contourShader={vertex:p,fragment:d,attributes:[{name:\"position\",type:\"vec3\"}]}},{glslify:395}],270:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=t(\"gl-texture2d\"),s=t(\"normals\"),l=t(\"gl-mat4/multiply\"),c=t(\"gl-mat4/invert\"),u=t(\"ndarray\"),f=t(\"colormap\"),h=t(\"simplicial-complex-contour\"),p=t(\"typedarray-pool\"),d=t(\"./lib/shaders\"),g=t(\"./lib/closest-point\"),v=d.meshShader,m=d.wireShader,y=d.pointShader,x=d.pickShader,b=d.pointPickShader,_=d.contourShader,w=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function k(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,v,m,y,x,b,_,k,A,M,T,S){this.gl=t,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleColors=u,this.triangleNormals=h,this.triangleUVs=f,this.triangleIds=c,this.triangleVAO=p,this.triangleCount=0,this.lineWidth=1,this.edgePositions=d,this.edgeColors=v,this.edgeUVs=m,this.edgeIds=g,this.edgeVAO=y,this.edgeCount=0,this.pointPositions=x,this.pointColors=_,this.pointUVs=k,this.pointSizes=A,this.pointIds=b,this.pointVAO=M,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=T,this.contourVAO=S,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this._model=w,this._view=w,this._projection=w,this._resolution=[1,1]}var A=k.prototype;function M(t){var e=n(t,y.vertex,y.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.pointSize.location=4,e}function T(t){var e=n(t,x.vertex,x.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e}function S(t){var e=n(t,b.vertex,b.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.pointSize.location=4,e}function C(t){var e=n(t,_.vertex,_.fragment);return e.attributes.position.location=0,e}A.isOpaque=function(){return this.opacity>=1},A.isTransparent=function(){return this.opacity<1},A.pickSlots=1,A.setPickBase=function(t){this.pickId=t},A.highlight=function(t){if(t&&this.contourEnable){for(var e=h(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=p.mallocFloat32(6*a),s=0,l=0;l<a;++l)for(var c=r[l],u=0;u<2;++u){var f=c[0];2===c.length&&(f=c[u]);for(var d=n[f][0],g=n[f][1],v=i[f],m=1-v,y=this.positions[d],x=this.positions[g],b=0;b<3;++b)o[s++]=v*y[b]+m*x[b]}this.contourCount=s/3|0,this.contourPositions.update(o.subarray(0,s)),p.free(o)}else this.contourCount=0},A.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,\"contourEnable\"in t&&(this.contourEnable=t.contourEnable),\"contourColor\"in t&&(this.contourColor=t.contourColor),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"lightPosition\"in t&&(this.lightPosition=t.lightPosition),\"opacity\"in t&&(this.opacity=t.opacity),\"ambient\"in t&&(this.ambientLight=t.ambient),\"diffuse\"in t&&(this.diffuseLight=t.diffuse),\"specular\"in t&&(this.specularLight=t.specular),\"roughness\"in t&&(this.roughness=t.roughness),\"fresnel\"in t&&(this.fresnel=t.fresnel),t.texture?(this.texture.dispose(),this.texture=o(e,t.texture)):t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(function(t){for(var e=f({colormap:t,nshades:256,format:\"rgba\"}),r=new Uint8Array(1024),n=0;n<256;++n){for(var i=e[n],a=0;a<3;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return u(r,[256,256,4],[4,0,1])}(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions;if(n&&r){var i=[],a=[],l=[],c=[],h=[],p=[],d=[],g=[],v=[],m=[],y=[],x=[],b=[],_=[];this.cells=r,this.positions=n;var w=t.vertexNormals,k=t.cellNormals,A=void 0===t.vertexNormalsEpsilon?1e-6:t.vertexNormalsEpsilon,M=void 0===t.faceNormalsEpsilon?1e-6:t.faceNormalsEpsilon;t.useFacetNormals&&!k&&(k=s.faceNormals(r,n,M)),k||w||(w=s.vertexNormals(r,n,A));var T=t.vertexColors,S=t.cellColors,C=t.meshColor||[1,1,1,1],E=t.vertexUVs,L=t.vertexIntensity,z=t.cellUVs,O=t.cellIntensity,I=1/0,D=-1/0;if(!E&&!z)if(L)if(t.vertexIntensityBounds)I=+t.vertexIntensityBounds[0],D=+t.vertexIntensityBounds[1];else for(var P=0;P<L.length;++P){var R=L[P];I=Math.min(I,R),D=Math.max(D,R)}else if(O)for(P=0;P<O.length;++P){R=O[P];I=Math.min(I,R),D=Math.max(D,R)}else for(P=0;P<n.length;++P){R=n[P][2];I=Math.min(I,R),D=Math.max(D,R)}this.intensity=L||(O?function(t,e,r){for(var n=new Array(e),i=0;i<e;++i)n[i]=0;var a=t.length;for(i=0;i<a;++i)for(var o=t[i],s=0;s<o.length;++s)n[o[s]]=r[i];return n}(r,n.length,O):function(t){for(var e=t.length,r=new Array(e),n=0;n<e;++n)r[n]=t[n][2];return r}(n));var F=t.pointSizes,B=t.pointSize||1;this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];for(P=0;P<n.length;++P)for(var N=n[P],j=0;j<3;++j)!isNaN(N[j])&&isFinite(N[j])&&(this.bounds[0][j]=Math.min(this.bounds[0][j],N[j]),this.bounds[1][j]=Math.max(this.bounds[1][j],N[j]));var V=0,U=0,q=0;t:for(P=0;P<r.length;++P){var H=r[P];switch(H.length){case 1:for(N=n[W=H[0]],j=0;j<3;++j)if(isNaN(N[j])||!isFinite(N[j]))continue t;m.push(N[0],N[1],N[2]),3===(Y=T?T[W]:S?S[P]:C).length?y.push(Y[0],Y[1],Y[2],1):y.push(Y[0],Y[1],Y[2],Y[3]),X=E?E[W]:L?[(L[W]-I)/(D-I),0]:z?z[P]:O?[(O[P]-I)/(D-I),0]:[(N[2]-I)/(D-I),0],x.push(X[0],X[1]),F?b.push(F[W]):b.push(B),_.push(P),q+=1;break;case 2:for(j=0;j<2;++j){N=n[W=H[j]];for(var G=0;G<3;++G)if(isNaN(N[G])||!isFinite(N[G]))continue t}for(j=0;j<2;++j){N=n[W=H[j]];p.push(N[0],N[1],N[2]),3===(Y=T?T[W]:S?S[P]:C).length?d.push(Y[0],Y[1],Y[2],1):d.push(Y[0],Y[1],Y[2],Y[3]),X=E?E[W]:L?[(L[W]-I)/(D-I),0]:z?z[P]:O?[(O[P]-I)/(D-I),0]:[(N[2]-I)/(D-I),0],g.push(X[0],X[1]),v.push(P)}U+=1;break;case 3:for(j=0;j<3;++j)for(N=n[W=H[j]],G=0;G<3;++G)if(isNaN(N[G])||!isFinite(N[G]))continue t;for(j=0;j<3;++j){var W,Y,X,Z;N=n[W=H[2-j]];i.push(N[0],N[1],N[2]),3===(Y=T?T[W]:S?S[P]:C).length?a.push(Y[0],Y[1],Y[2],1):a.push(Y[0],Y[1],Y[2],Y[3]),X=E?E[W]:L?[(L[W]-I)/(D-I),0]:z?z[P]:O?[(O[P]-I)/(D-I),0]:[(N[2]-I)/(D-I),0],c.push(X[0],X[1]),Z=w?w[W]:k[P],l.push(Z[0],Z[1],Z[2]),h.push(P)}V+=1}}this.pointCount=q,this.edgeCount=U,this.triangleCount=V,this.pointPositions.update(m),this.pointColors.update(y),this.pointUVs.update(x),this.pointSizes.update(b),this.pointIds.update(new Uint32Array(_)),this.edgePositions.update(p),this.edgeColors.update(d),this.edgeUVs.update(g),this.edgeIds.update(new Uint32Array(v)),this.trianglePositions.update(i),this.triangleColors.update(a),this.triangleUVs.update(c),this.triangleNormals.update(l),this.triangleIds.update(new Uint32Array(h))}},A.drawTransparent=A.draw=function(t){t=t||{};for(var e=this.gl,r=t.model||w,n=t.view||w,i=t.projection||w,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);var s={model:r,view:n,projection:i,inverseModel:w.slice(),clipBounds:a,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],opacity:this.opacity,contourColor:this.contourColor,texture:0};s.inverseModel=c(s.inverseModel,s.model),e.disable(e.CULL_FACE),this.texture.bind(0);var u=new Array(16);l(u,s.view,s.model),l(u,s.projection,u),c(u,u);for(o=0;o<3;++o)s.eyePosition[o]=u[12+o]/u[15];var f,h=u[15];for(o=0;o<3;++o)h+=this.lightPosition[o]*u[4*o+3];for(o=0;o<3;++o){for(var p=u[12+o],d=0;d<3;++d)p+=u[4*d+o]*this.lightPosition[d];s.lightPosition[o]=p/h}this.triangleCount>0&&((f=this.triShader).bind(),f.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind());this.edgeCount>0&&this.lineWidth>0&&((f=this.lineShader).bind(),f.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind());this.pointCount>0&&((f=this.pointShader).bind(),f.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind());this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((f=this.contourShader).bind(),f.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},A.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||w,n=t.view||w,i=t.projection||w,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,pickId:this.pickId/255};((s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0)&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},A.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;for(var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions,i=new Array(r.length),a=0;a<r.length;++a)i[a]=n[r[a]];var o=g(i,[t.coord[0],this._resolution[1]-t.coord[1]],this._model,this._view,this._projection,this._resolution);if(!o)return null;var s=o[2],l=0;for(a=0;a<r.length;++a)l+=s[a]*this.intensity[r[a]];return{position:o[1],index:r[o[0]],cell:r,cellId:e,intensity:l,dataCoordinate:this.positions[r[o[0]]]}},A.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.lineShader.dispose(),this.pointShader.dispose(),this.pickShader.dispose(),this.pointPickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleNormals.dispose(),this.triangleIds.dispose(),this.edgeVAO.dispose(),this.edgePositions.dispose(),this.edgeColors.dispose(),this.edgeUVs.dispose(),this.edgeIds.dispose(),this.pointVAO.dispose(),this.pointPositions.dispose(),this.pointColors.dispose(),this.pointUVs.dispose(),this.pointSizes.dispose(),this.pointIds.dispose(),this.contourVAO.dispose(),this.contourPositions.dispose(),this.contourShader.dispose()},e.exports=function(t,e){if(1===arguments.length&&(t=(e=t).gl),!(t.getExtension(\"OES_standard_derivatives\")||t.getExtension(\"MOZ_OES_standard_derivatives\")||t.getExtension(\"WEBKIT_OES_standard_derivatives\")))throw new Error(\"derivatives not supported\");var r=function(t){var e=n(t,v.vertex,v.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.normal.location=4,e}(t),s=function(t){var e=n(t,m.vertex,m.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e}(t),l=M(t),c=T(t),f=S(t),h=C(t),p=o(t,u(new Uint8Array([255,255,255,255]),[1,1,4]));p.generateMipmap(),p.minFilter=t.LINEAR_MIPMAP_LINEAR,p.magFilter=t.LINEAR;var d=i(t),g=i(t),y=i(t),x=i(t),b=i(t),_=a(t,[{buffer:d,type:t.FLOAT,size:3},{buffer:b,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:g,type:t.FLOAT,size:4},{buffer:y,type:t.FLOAT,size:2},{buffer:x,type:t.FLOAT,size:3}]),w=i(t),A=i(t),E=i(t),L=i(t),z=a(t,[{buffer:w,type:t.FLOAT,size:3},{buffer:L,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:A,type:t.FLOAT,size:4},{buffer:E,type:t.FLOAT,size:2}]),O=i(t),I=i(t),D=i(t),P=i(t),R=i(t),F=a(t,[{buffer:O,type:t.FLOAT,size:3},{buffer:R,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:I,type:t.FLOAT,size:4},{buffer:D,type:t.FLOAT,size:2},{buffer:P,type:t.FLOAT,size:1}]),B=i(t),N=new k(t,p,r,s,l,c,f,h,d,b,g,y,x,_,w,L,A,E,z,O,R,I,D,P,F,B,a(t,[{buffer:B,type:t.FLOAT,size:3}]));return N.update(e),N}},{\"./lib/closest-point\":268,\"./lib/shaders\":269,colormap:115,\"gl-buffer\":231,\"gl-mat4/invert\":256,\"gl-mat4/multiply\":258,\"gl-shader\":290,\"gl-texture2d\":308,\"gl-vao\":313,ndarray:436,normals:439,\"simplicial-complex-contour\":496,\"typedarray-pool\":523}],271:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e,[0,0,0,1,1,0,1,1]),s=i(e,a.boxVert,a.lineFrag);return new o(t,r,s)};var n=t(\"gl-buffer\"),i=t(\"gl-shader\"),a=t(\"./shaders\");function o(t,e,r){this.plot=t,this.vbo=e,this.shader=r}var s,l,c=o.prototype;c.bind=function(){var t=this.shader;this.vbo.bind(),this.shader.bind(),t.attributes.coord.pointer(),t.uniforms.screenBox=this.plot.screenBox},c.drawBox=(s=[0,0],l=[0,0],function(t,e,r,n,i){var a=this.plot,o=this.shader,c=a.gl;s[0]=t,s[1]=e,l[0]=r,l[1]=n,o.uniforms.lo=s,o.uniforms.hi=l,o.uniforms.color=i,c.drawArrays(c.TRIANGLE_STRIP,0,4)}),c.dispose=function(){this.vbo.dispose(),this.shader.dispose()}},{\"./shaders\":274,\"gl-buffer\":231,\"gl-shader\":290}],272:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e),a=i(e,o.gridVert,o.gridFrag),l=i(e,o.tickVert,o.gridFrag);return new s(t,r,a,l)};var n=t(\"gl-buffer\"),i=t(\"gl-shader\"),a=t(\"binary-search-bounds\"),o=t(\"./shaders\");function s(t,e,r,n){this.plot=t,this.vbo=e,this.shader=r,this.tickShader=n,this.ticks=[[],[]]}function l(t,e){return t-e}var c,u,f,h,p,d=s.prototype;d.draw=(c=[0,0],u=[0,0],f=[0,0],function(){for(var t=this.plot,e=this.vbo,r=this.shader,n=this.ticks,i=t.gl,a=t._tickBounds,o=t.dataBox,s=t.viewBox,l=t.gridLineWidth,h=t.gridLineColor,p=t.gridLineEnable,d=t.pixelRatio,g=0;g<2;++g){var v=a[g],m=a[g+2]-v,y=.5*(o[g+2]+o[g]),x=o[g+2]-o[g];u[g]=2*m/x,c[g]=2*(v-y)/x}r.bind(),e.bind(),r.attributes.dataCoord.pointer(),r.uniforms.dataShift=c,r.uniforms.dataScale=u;var b=0;for(g=0;g<2;++g){f[0]=f[1]=0,f[g]=1,r.uniforms.dataAxis=f,r.uniforms.lineWidth=l[g]/(s[g+2]-s[g])*d,r.uniforms.color=h[g];var _=6*n[g].length;p[g]&&_&&i.drawArrays(i.TRIANGLES,b,_),b+=_}}),d.drawTickMarks=function(){var t=[0,0],e=[0,0],r=[1,0],n=[0,1],i=[0,0],o=[0,0];return function(){for(var s=this.plot,c=this.vbo,u=this.tickShader,f=this.ticks,h=s.gl,p=s._tickBounds,d=s.dataBox,g=s.viewBox,v=s.pixelRatio,m=s.screenBox,y=m[2]-m[0],x=m[3]-m[1],b=g[2]-g[0],_=g[3]-g[1],w=0;w<2;++w){var k=p[w],A=p[w+2]-k,M=.5*(d[w+2]+d[w]),T=d[w+2]-d[w];e[w]=2*A/T,t[w]=2*(k-M)/T}e[0]*=b/y,t[0]*=b/y,e[1]*=_/x,t[1]*=_/x,u.bind(),c.bind(),u.attributes.dataCoord.pointer();var S=u.uniforms;S.dataShift=t,S.dataScale=e;var C=s.tickMarkLength,E=s.tickMarkWidth,L=s.tickMarkColor,z=6*f[0].length,O=Math.min(a.ge(f[0],(d[0]-p[0])/(p[2]-p[0]),l),f[0].length),I=Math.min(a.gt(f[0],(d[2]-p[0])/(p[2]-p[0]),l),f[0].length),D=0+6*O,P=6*Math.max(0,I-O),R=Math.min(a.ge(f[1],(d[1]-p[1])/(p[3]-p[1]),l),f[1].length),F=Math.min(a.gt(f[1],(d[3]-p[1])/(p[3]-p[1]),l),f[1].length),B=z+6*R,N=6*Math.max(0,F-R);i[0]=2*(g[0]-C[1])/y-1,i[1]=(g[3]+g[1])/x-1,o[0]=C[1]*v/y,o[1]=E[1]*v/x,N&&(S.color=L[1],S.tickScale=o,S.dataAxis=n,S.screenOffset=i,h.drawArrays(h.TRIANGLES,B,N)),i[0]=(g[2]+g[0])/y-1,i[1]=2*(g[1]-C[0])/x-1,o[0]=E[0]*v/y,o[1]=C[0]*v/x,P&&(S.color=L[0],S.tickScale=o,S.dataAxis=r,S.screenOffset=i,h.drawArrays(h.TRIANGLES,D,P)),i[0]=2*(g[2]+C[3])/y-1,i[1]=(g[3]+g[1])/x-1,o[0]=C[3]*v/y,o[1]=E[3]*v/x,N&&(S.color=L[3],S.tickScale=o,S.dataAxis=n,S.screenOffset=i,h.drawArrays(h.TRIANGLES,B,N)),i[0]=(g[2]+g[0])/y-1,i[1]=2*(g[3]+C[2])/x-1,o[0]=E[2]*v/y,o[1]=C[2]*v/x,P&&(S.color=L[2],S.tickScale=o,S.dataAxis=r,S.screenOffset=i,h.drawArrays(h.TRIANGLES,D,P))}}(),d.update=(h=[1,1,-1,-1,1,-1],p=[1,-1,1,1,-1,-1],function(t){for(var e=t.ticks,r=t.bounds,n=new Float32Array(18*(e[0].length+e[1].length)),i=(this.plot.zeroLineEnable,0),a=[[],[]],o=0;o<2;++o)for(var s=a[o],l=e[o],c=r[o],u=r[o+2],f=0;f<l.length;++f){var d=(l[f].x-c)/(u-c);s.push(d);for(var g=0;g<6;++g)n[i++]=d,n[i++]=h[g],n[i++]=p[g]}this.ticks=a,this.vbo.update(n)}),d.dispose=function(){this.vbo.dispose(),this.shader.dispose(),this.tickShader.dispose()}},{\"./shaders\":274,\"binary-search-bounds\":276,\"gl-buffer\":231,\"gl-shader\":290}],273:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e,[-1,-1,-1,1,1,-1,1,1]),s=i(e,a.lineVert,a.lineFrag);return new o(t,r,s)};var n=t(\"gl-buffer\"),i=t(\"gl-shader\"),a=t(\"./shaders\");function o(t,e,r){this.plot=t,this.vbo=e,this.shader=r}var s,l,c=o.prototype;c.bind=function(){var t=this.shader;this.vbo.bind(),this.shader.bind(),t.attributes.coord.pointer(),t.uniforms.screenBox=this.plot.screenBox},c.drawLine=(s=[0,0],l=[0,0],function(t,e,r,n,i,a){var o=this.plot,c=this.shader,u=o.gl;s[0]=t,s[1]=e,l[0]=r,l[1]=n,c.uniforms.start=s,c.uniforms.end=l,c.uniforms.width=i*o.pixelRatio,c.uniforms.color=a,u.drawArrays(u.TRIANGLE_STRIP,0,4)}),c.dispose=function(){this.vbo.dispose(),this.shader.dispose()}},{\"./shaders\":274,\"gl-buffer\":231,\"gl-shader\":290}],274:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision lowp float;\\n#define GLSLIFY 1\\nuniform vec4 color;\\nvoid main() {\\n  gl_FragColor = vec4(color.xyz * color.w, color.w);\\n}\\n\"]);e.exports={lineVert:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 start, end;\\nuniform float width;\\n\\nvec2 perp(vec2 v) {\\n  return vec2(v.y, -v.x);\\n}\\n\\nvec2 screen(vec2 v) {\\n  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n  vec2 delta = normalize(perp(start - end));\\n  vec2 offset = mix(start, end, 0.5 * (coord.y+1.0));\\n  gl_Position = vec4(screen(offset + 0.5 * width * delta * coord.x), 0, 1);\\n}\\n\"]),lineFrag:i,textVert:n([\"#define GLSLIFY 1\\nattribute vec3 textCoordinate;\\n\\nuniform vec2 dataScale, dataShift, dataAxis, screenOffset, textScale;\\nuniform float angle;\\n\\nvoid main() {\\n  float dataOffset  = textCoordinate.z;\\n  vec2 glyphOffset  = textCoordinate.xy;\\n  mat2 glyphMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n  vec2 screenCoordinate = dataAxis * (dataScale * dataOffset + dataShift) +\\n    glyphMatrix * glyphOffset * textScale + screenOffset;\\n  gl_Position = vec4(screenCoordinate, 0, 1);\\n}\\n\"]),textFrag:i,gridVert:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale;\\nuniform float lineWidth;\\n\\nvoid main() {\\n  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n  pos += 10.0 * dataCoord.y * vec2(dataAxis.y, -dataAxis.x) + dataCoord.z * lineWidth;\\n  gl_Position = vec4(pos, 0, 1);\\n}\\n\"]),gridFrag:i,boxVert:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 lo, hi;\\n\\nvec2 screen(vec2 v) {\\n  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n  gl_Position = vec4(screen(mix(lo, hi, coord)), 0, 1);\\n}\\n\"]),tickVert:n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale, screenOffset, tickScale;\\n\\nvoid main() {\\n  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n  gl_Position = vec4(pos + tickScale*dataCoord.yz + screenOffset, 0, 1);\\n}\\n\"])}},{glslify:395}],275:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e),a=i(e,s.textVert,s.textFrag);return new l(t,r,a)};var n=t(\"gl-buffer\"),i=t(\"gl-shader\"),a=t(\"text-cache\"),o=t(\"binary-search-bounds\"),s=t(\"./shaders\");function l(t,e,r){this.plot=t,this.vbo=e,this.shader=r,this.tickOffset=[[],[]],this.tickX=[[],[]],this.labelOffset=[0,0],this.labelCount=[0,0]}var c,u,f,h,p,d,g=l.prototype;g.drawTicks=(c=[0,0],u=[0,0],f=[0,0],function(t){var e=this.plot,r=this.shader,n=this.tickX[t],i=this.tickOffset[t],a=e.gl,s=e.viewBox,l=e.dataBox,h=e.screenBox,p=e.pixelRatio,d=e.tickEnable,g=e.tickPad,v=e.tickColor,m=e.tickAngle,y=e.labelEnable,x=e.labelPad,b=e.labelColor,_=e.labelAngle,w=this.labelOffset[t],k=this.labelCount[t],A=o.lt(n,l[t]),M=o.le(n,l[t+2]);c[0]=c[1]=0,c[t]=1,u[t]=(s[2+t]+s[t])/(h[2+t]-h[t])-1;var T=2/h[2+(1^t)]-h[1^t];u[1^t]=T*s[1^t]-1,d[t]&&(u[1^t]-=T*p*g[t],A<M&&i[M]>i[A]&&(r.uniforms.dataAxis=c,r.uniforms.screenOffset=u,r.uniforms.color=v[t],r.uniforms.angle=m[t],a.drawArrays(a.TRIANGLES,i[A],i[M]-i[A]))),y[t]&&k&&(u[1^t]-=T*p*x[t],r.uniforms.dataAxis=f,r.uniforms.screenOffset=u,r.uniforms.color=b[t],r.uniforms.angle=_[t],a.drawArrays(a.TRIANGLES,w,k)),u[1^t]=T*s[2+(1^t)]-1,d[t+2]&&(u[1^t]+=T*p*g[t+2],A<M&&i[M]>i[A]&&(r.uniforms.dataAxis=c,r.uniforms.screenOffset=u,r.uniforms.color=v[t+2],r.uniforms.angle=m[t+2],a.drawArrays(a.TRIANGLES,i[A],i[M]-i[A]))),y[t+2]&&k&&(u[1^t]+=T*p*x[t+2],r.uniforms.dataAxis=f,r.uniforms.screenOffset=u,r.uniforms.color=b[t+2],r.uniforms.angle=_[t+2],a.drawArrays(a.TRIANGLES,w,k))}),g.drawTitle=function(){var t=[0,0],e=[0,0];return function(){var r=this.plot,n=this.shader,i=r.gl,a=r.screenBox,o=r.titleCenter,s=r.titleAngle,l=r.titleColor,c=r.pixelRatio;if(this.titleCount){for(var u=0;u<2;++u)e[u]=2*(o[u]*c-a[u])/(a[2+u]-a[u])-1;n.bind(),n.uniforms.dataAxis=t,n.uniforms.screenOffset=e,n.uniforms.angle=s,n.uniforms.color=l,i.drawArrays(i.TRIANGLES,this.titleOffset,this.titleCount)}}}(),g.bind=(h=[0,0],p=[0,0],d=[0,0],function(){var t=this.plot,e=this.shader,r=t._tickBounds,n=t.dataBox,i=t.screenBox,a=t.viewBox;e.bind();for(var o=0;o<2;++o){var s=r[o],l=r[o+2]-s,c=.5*(n[o+2]+n[o]),u=n[o+2]-n[o],f=a[o],g=a[o+2]-f,v=i[o],m=i[o+2]-v;p[o]=2*l/u*g/m,h[o]=2*(s-c)/u*g/m}d[1]=2*t.pixelRatio/(i[3]-i[1]),d[0]=d[1]*(i[3]-i[1])/(i[2]-i[0]),e.uniforms.dataScale=p,e.uniforms.dataShift=h,e.uniforms.textScale=d,this.vbo.bind(),e.attributes.textCoordinate.pointer()}),g.update=function(t){var e,r,n,i,o,s=[],l=t.ticks,c=t.bounds;for(o=0;o<2;++o){var u=[Math.floor(s.length/3)],f=[-1/0],h=l[o];for(e=0;e<h.length;++e){var p=h[e],d=p.x,g=p.text,v=p.font||\"sans-serif\";i=p.fontSize||12;for(var m=1/(c[o+2]-c[o]),y=c[o],x=g.split(\"\\n\"),b=0;b<x.length;b++)for(n=a(v,x[b]).data,r=0;r<n.length;r+=2)s.push(n[r]*i,-n[r+1]*i-b*i*1.2,(d-y)*m);u.push(Math.floor(s.length/3)),f.push(d)}this.tickOffset[o]=u,this.tickX[o]=f}for(o=0;o<2;++o){for(this.labelOffset[o]=Math.floor(s.length/3),n=a(t.labelFont[o],t.labels[o],{textAlign:\"center\"}).data,i=t.labelSize[o],e=0;e<n.length;e+=2)s.push(n[e]*i,-n[e+1]*i,0);this.labelCount[o]=Math.floor(s.length/3)-this.labelOffset[o]}for(this.titleOffset=Math.floor(s.length/3),n=a(t.titleFont,t.title).data,i=t.titleSize,e=0;e<n.length;e+=2)s.push(n[e]*i,-n[e+1]*i,0);this.titleCount=Math.floor(s.length/3)-this.titleOffset,this.vbo.update(s)},g.dispose=function(){this.vbo.dispose(),this.shader.dispose()}},{\"./shaders\":274,\"binary-search-bounds\":276,\"gl-buffer\":231,\"gl-shader\":290,\"text-cache\":514}],276:[function(t,e,r){arguments[4][100][0].apply(r,arguments)},{dup:100}],277:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=n(e,[e.drawingBufferWidth,e.drawingBufferHeight]),c=new l(e,r);return c.grid=i(c),c.text=a(c),c.line=o(c),c.box=s(c),c.update(t),c};var n=t(\"gl-select-static\"),i=t(\"./lib/grid\"),a=t(\"./lib/text\"),o=t(\"./lib/line\"),s=t(\"./lib/box\");function l(t,e){this.gl=t,this.pickBuffer=e,this.screenBox=[0,0,t.drawingBufferWidth,t.drawingBufferHeight],this.viewBox=[0,0,0,0],this.dataBox=[-10,-10,10,10],this.gridLineEnable=[!0,!0],this.gridLineWidth=[1,1],this.gridLineColor=[[0,0,0,1],[0,0,0,1]],this.pixelRatio=1,this.tickMarkLength=[0,0,0,0],this.tickMarkWidth=[0,0,0,0],this.tickMarkColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[15,15,15,15],this.tickAngle=[0,0,0,0],this.tickEnable=[!0,!0,!0,!0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[15,15,15,15],this.labelAngle=[0,Math.PI/2,0,3*Math.PI/2],this.labelEnable=[!0,!0,!0,!0],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.titleCenter=[0,0],this.titleEnable=!0,this.titleAngle=0,this.titleColor=[0,0,0,1],this.borderColor=[0,0,0,0],this.backgroundColor=[0,0,0,0],this.zeroLineEnable=[!0,!0],this.zeroLineWidth=[4,4],this.zeroLineColor=[[0,0,0,1],[0,0,0,1]],this.borderLineEnable=[!0,!0,!0,!0],this.borderLineWidth=[2,2,2,2],this.borderLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.grid=null,this.text=null,this.line=null,this.box=null,this.objects=[],this.overlays=[],this._tickBounds=[1/0,1/0,-1/0,-1/0],this.static=!1,this.dirty=!1,this.pickDirty=!1,this.pickDelay=120,this.pickRadius=10,this._pickTimeout=null,this._drawPick=this.drawPick.bind(this),this._depthCounter=0}var c=l.prototype;function u(t){for(var e=t.slice(),r=0;r<e.length;++r)e[r]=e[r].slice();return e}function f(t,e){return t.x-e.x}c.setDirty=function(){this.dirty=this.pickDirty=!0},c.setOverlayDirty=function(){this.dirty=!0},c.nextDepthValue=function(){return this._depthCounter++/65536},c.draw=function(){var t=this.gl,e=this.screenBox,r=this.viewBox,n=this.dataBox,i=this.pixelRatio,a=this.grid,o=this.line,s=this.text,l=this.objects;if(this._depthCounter=0,this.pickDirty&&(this._pickTimeout&&clearTimeout(this._pickTimeout),this.pickDirty=!1,this._pickTimeout=setTimeout(this._drawPick,this.pickDelay)),this.dirty){if(this.dirty=!1,t.bindFramebuffer(t.FRAMEBUFFER,null),t.enable(t.SCISSOR_TEST),t.disable(t.DEPTH_TEST),t.depthFunc(t.LESS),t.depthMask(!1),t.enable(t.BLEND),t.blendEquation(t.FUNC_ADD,t.FUNC_ADD),t.blendFunc(t.ONE,t.ONE_MINUS_SRC_ALPHA),this.borderColor){t.scissor(e[0],e[1],e[2]-e[0],e[3]-e[1]);var c=this.borderColor;t.clearColor(c[0]*c[3],c[1]*c[3],c[2]*c[3],c[3]),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}t.scissor(r[0],r[1],r[2]-r[0],r[3]-r[1]),t.viewport(r[0],r[1],r[2]-r[0],r[3]-r[1]);var u=this.backgroundColor;t.clearColor(u[0]*u[3],u[1]*u[3],u[2]*u[3],u[3]),t.clear(t.COLOR_BUFFER_BIT),a.draw();var f=this.zeroLineEnable,h=this.zeroLineColor,p=this.zeroLineWidth;if(f[0]||f[1]){o.bind();for(var d=0;d<2;++d)if(f[d]&&n[d]<=0&&n[d+2]>=0){var g=e[d]-n[d]*(e[d+2]-e[d])/(n[d+2]-n[d]);0===d?o.drawLine(g,e[1],g,e[3],p[d],h[d]):o.drawLine(e[0],g,e[2],g,p[d],h[d])}}for(d=0;d<l.length;++d)l[d].draw();t.viewport(e[0],e[1],e[2]-e[0],e[3]-e[1]),t.scissor(e[0],e[1],e[2]-e[0],e[3]-e[1]),this.grid.drawTickMarks(),o.bind();var v=this.borderLineEnable,m=this.borderLineWidth,y=this.borderLineColor;for(v[1]&&o.drawLine(r[0],r[1]-.5*m[1]*i,r[0],r[3]+.5*m[3]*i,m[1],y[1]),v[0]&&o.drawLine(r[0]-.5*m[0]*i,r[1],r[2]+.5*m[2]*i,r[1],m[0],y[0]),v[3]&&o.drawLine(r[2],r[1]-.5*m[1]*i,r[2],r[3]+.5*m[3]*i,m[3],y[3]),v[2]&&o.drawLine(r[0]-.5*m[0]*i,r[3],r[2]+.5*m[2]*i,r[3],m[2],y[2]),s.bind(),d=0;d<2;++d)s.drawTicks(d);this.titleEnable&&s.drawTitle();var x=this.overlays;for(d=0;d<x.length;++d)x[d].draw();t.disable(t.SCISSOR_TEST),t.disable(t.BLEND),t.depthMask(!0)}},c.drawPick=function(){if(!this.static){var t=this.pickBuffer;this.gl;this._pickTimeout=null,t.begin();for(var e=1,r=this.objects,n=0;n<r.length;++n)e=r[n].drawPick(e);t.end()}},c.pick=function(t,e){if(!this.static){var r=this.pixelRatio,n=this.pickPixelRatio,i=this.viewBox,a=0|Math.round((t-i[0]/r)*n),o=0|Math.round((e-i[1]/r)*n),s=this.pickBuffer.query(a,o,this.pickRadius);if(!s)return null;for(var l=s.id+(s.value[0]<<8)+(s.value[1]<<16)+(s.value[2]<<24),c=this.objects,u=0;u<c.length;++u){var f=c[u].pick(a,o,l);if(f)return f}return null}},c.setScreenBox=function(t){var e=this.screenBox,r=this.pixelRatio;e[0]=0|Math.round(t[0]*r),e[1]=0|Math.round(t[1]*r),e[2]=0|Math.round(t[2]*r),e[3]=0|Math.round(t[3]*r),this.setDirty()},c.setDataBox=function(t){var e=this.dataBox;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3])&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],this.setDirty())},c.setViewBox=function(t){var e=this.pixelRatio,r=this.viewBox;r[0]=0|Math.round(t[0]*e),r[1]=0|Math.round(t[1]*e),r[2]=0|Math.round(t[2]*e),r[3]=0|Math.round(t[3]*e);var n=this.pickPixelRatio;this.pickBuffer.shape=[0|Math.round((t[2]-t[0])*n),0|Math.round((t[3]-t[1])*n)],this.setDirty()},c.update=function(t){t=t||{};var e=this.gl;this.pixelRatio=t.pixelRatio||1;var r=this.pixelRatio;this.pickPixelRatio=Math.max(r,1),this.setScreenBox(t.screenBox||[0,0,e.drawingBufferWidth/r,e.drawingBufferHeight/r]);this.screenBox;this.setViewBox(t.viewBox||[.125*(this.screenBox[2]-this.screenBox[0])/r,.125*(this.screenBox[3]-this.screenBox[1])/r,.875*(this.screenBox[2]-this.screenBox[0])/r,.875*(this.screenBox[3]-this.screenBox[1])/r]);var n=this.viewBox,i=(n[2]-n[0])/(n[3]-n[1]);this.setDataBox(t.dataBox||[-10,-10/i,10,10/i]),this.borderColor=!1!==t.borderColor&&(t.borderColor||[0,0,0,0]).slice(),this.backgroundColor=(t.backgroundColor||[0,0,0,0]).slice(),this.gridLineEnable=(t.gridLineEnable||[!0,!0]).slice(),this.gridLineWidth=(t.gridLineWidth||[1,1]).slice(),this.gridLineColor=u(t.gridLineColor||[[.5,.5,.5,1],[.5,.5,.5,1]]),this.zeroLineEnable=(t.zeroLineEnable||[!0,!0]).slice(),this.zeroLineWidth=(t.zeroLineWidth||[4,4]).slice(),this.zeroLineColor=u(t.zeroLineColor||[[0,0,0,1],[0,0,0,1]]),this.tickMarkLength=(t.tickMarkLength||[0,0,0,0]).slice(),this.tickMarkWidth=(t.tickMarkWidth||[0,0,0,0]).slice(),this.tickMarkColor=u(t.tickMarkColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]),this.titleCenter=(t.titleCenter||[.5*(n[0]+n[2])/r,(n[3]+120)/r]).slice(),this.titleEnable=!(\"titleEnable\"in t&&!t.titleEnable),this.titleAngle=t.titleAngle||0,this.titleColor=(t.titleColor||[0,0,0,1]).slice(),this.labelPad=(t.labelPad||[15,15,15,15]).slice(),this.labelAngle=(t.labelAngle||[0,Math.PI/2,0,3*Math.PI/2]).slice(),this.labelEnable=(t.labelEnable||[!0,!0,!0,!0]).slice(),this.labelColor=u(t.labelColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]),this.tickPad=(t.tickPad||[15,15,15,15]).slice(),this.tickAngle=(t.tickAngle||[0,0,0,0]).slice(),this.tickEnable=(t.tickEnable||[!0,!0,!0,!0]).slice(),this.tickColor=u(t.tickColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]),this.borderLineEnable=(t.borderLineEnable||[!0,!0,!0,!0]).slice(),this.borderLineWidth=(t.borderLineWidth||[2,2,2,2]).slice(),this.borderLineColor=u(t.borderLineColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);var a=t.ticks||[[],[]],o=this._tickBounds;o[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(var s=0;s<2;++s){var l=a[s].slice(0);0!==l.length&&(l.sort(f),o[s]=Math.min(o[s],l[0].x),o[s+2]=Math.max(o[s+2],l[l.length-1].x))}this.grid.update({bounds:o,ticks:a}),this.text.update({bounds:o,ticks:a,labels:t.labels||[\"x\",\"y\"],labelSize:t.labelSize||[12,12],labelFont:t.labelFont||[\"sans-serif\",\"sans-serif\"],title:t.title||\"\",titleSize:t.titleSize||18,titleFont:t.titleFont||\"sans-serif\"}),this.static=!!t.static,this.setDirty()},c.dispose=function(){this.box.dispose(),this.grid.dispose(),this.text.dispose(),this.line.dispose();for(var t=this.objects.length-1;t>=0;--t)this.objects[t].dispose();this.objects.length=0;for(t=this.overlays.length-1;t>=0;--t)this.overlays[t].dispose();this.overlays.length=0,this.gl=null},c.addObject=function(t){this.objects.indexOf(t)<0&&(this.objects.push(t),this.setDirty())},c.removeObject=function(t){for(var e=this.objects,r=0;r<e.length;++r)if(e[r]===t){e.splice(r,1),this.setDirty();break}},c.addOverlay=function(t){this.overlays.indexOf(t)<0&&(this.overlays.push(t),this.setOverlayDirty())},c.removeOverlay=function(t){for(var e=this.overlays,r=0;r<e.length;++r)if(e[r]===t){e.splice(r,1),this.setOverlayDirty();break}}},{\"./lib/box\":271,\"./lib/grid\":272,\"./lib/line\":273,\"./lib/text\":275,\"gl-select-static\":289}],278:[function(t,e,r){var n=t(\"glslify\"),i=t(\"gl-shader\"),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\nattribute vec2 position;\\nvarying vec2 uv;\\nvoid main() {\\n  uv = position;\\n  gl_Position = vec4(position, 0, 1);\\n}\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D accumBuffer;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));\\n  gl_FragColor = min(vec4(1,1,1,1), accum);\\n}\"]);e.exports=function(t){return i(t,a,o,null,[{name:\"position\",type:\"vec2\"}])}},{\"gl-shader\":290,glslify:395}],279:[function(t,e,r){\"use strict\";e.exports=function(t){var e=!1,r=((t=t||{}).pixelRatio||parseFloat(window.devicePixelRatio),t.canvas);if(!r)if(r=document.createElement(\"canvas\"),t.container){var m=t.container;m.appendChild(r)}else document.body.appendChild(r);var y=t.gl;y||(y=function(t,e){var r=null;try{(r=t.getContext(\"webgl\",e))||(r=t.getContext(\"experimental-webgl\",e))}catch(t){return null}return r}(r,t.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:p}));if(!y)throw new Error(\"webgl not supported\");var x=t.bounds||[[-10,-10,-10],[10,10,10]],b=new d,_=l(y,[y.drawingBufferWidth,y.drawingBufferHeight],{preferFloat:!p}),w=h(y),k=t.camera||{eye:[2,0,0],center:[0,0,0],up:[0,1,0],zoomMin:.1,zoomMax:100,mode:\"turntable\"},A=t.axes||{},M=i(y,A);M.enable=!A.disable;var T=t.spikes||{},S=o(y,T),C=[],E=[],L=[],z=[],O=!0,I=!0,D=new Array(16),P=new Array(16),R={view:null,projection:D,model:P},I=!0,F=[y.drawingBufferWidth,y.drawingBufferHeight],B={gl:y,contextLost:!1,pixelRatio:t.pixelRatio||parseFloat(window.devicePixelRatio),canvas:r,selection:b,camera:n(r,k),axes:M,axesPixels:null,spikes:S,bounds:x,objects:C,shape:F,aspect:t.aspectRatio||[1,1,1],pickRadius:t.pickRadius||10,zNear:t.zNear||.01,zFar:t.zFar||1e3,fovy:t.fovy||Math.PI/4,clearColor:t.clearColor||[0,0,0,0],autoResize:v(t.autoResize),autoBounds:v(t.autoBounds),autoScale:!!t.autoScale,autoCenter:v(t.autoCenter),clipToBounds:v(t.clipToBounds),snapToData:!!t.snapToData,onselect:t.onselect||null,onrender:t.onrender||null,onclick:t.onclick||null,cameraParams:R,oncontextloss:null,mouseListener:null},N=[y.drawingBufferWidth/B.pixelRatio|0,y.drawingBufferHeight/B.pixelRatio|0];function j(){if(!e&&B.autoResize){var t=r.parentNode,n=1,i=1;t&&t!==document.body?(n=t.clientWidth,i=t.clientHeight):(n=window.innerWidth,i=window.innerHeight);var a=0|Math.ceil(n*B.pixelRatio),o=0|Math.ceil(i*B.pixelRatio);if(a!==r.width||o!==r.height){r.width=a,r.height=o;var s=r.style;s.position=s.position||\"absolute\",s.left=\"0px\",s.top=\"0px\",s.width=n+\"px\",s.height=i+\"px\",O=!0}}}B.autoResize&&j();function V(){for(var t=C.length,e=z.length,r=0;r<e;++r)L[r]=0;t:for(var r=0;r<t;++r){var n=C[r],i=n.pickSlots;if(i){for(var a=0;a<e;++a)if(L[a]+i<255){E[r]=a,n.setPickBase(L[a]+1),L[a]+=i;continue t}var o=s(y,F);E[r]=e,z.push(o),L.push(i),n.setPickBase(1),e+=1}else E[r]=-1}for(;e>0&&0===L[e-1];)L.pop(),z.pop().dispose()}window.addEventListener(\"resize\",j),B.update=function(t){e||(t=t||{},O=!0,I=!0)},B.add=function(t){e||(t.axes=M,C.push(t),E.push(-1),O=!0,I=!0,V())},B.remove=function(t){if(!e){var r=C.indexOf(t);r<0||(C.splice(r,1),E.pop(),O=!0,I=!0,V())}},B.dispose=function(){if(!e&&(e=!0,window.removeEventListener(\"resize\",j),r.removeEventListener(\"webglcontextlost\",H),B.mouseListener.enabled=!1,!B.contextLost)){M.dispose(),S.dispose();for(var t=0;t<C.length;++t)C[t].dispose();_.dispose();for(var t=0;t<z.length;++t)z[t].dispose();w.dispose(),y=null,M=null,S=null,C=[]}};var U=!1,q=0;function H(){if(B.contextLost)return!0;y.isContextLost()&&(B.contextLost=!0,B.mouseListener.enabled=!1,B.selection.object=null,B.oncontextloss&&B.oncontextloss())}B.mouseListener=u(r,function(t,r,n){if(!e){var i=z.length,a=C.length,o=b.object;b.distance=1/0,b.mouse[0]=r,b.mouse[1]=n,b.object=null,b.screen=null,b.dataCoordinate=b.dataPosition=null;var s=!1;if(t&&q)U=!0;else{U&&(I=!0),U=!1;for(var l=0;l<i;++l){var c=z[l].query(r,N[1]-n-1,B.pickRadius);if(c){if(c.distance>b.distance)continue;for(var u=0;u<a;++u){var f=C[u];if(E[u]===l){var h=f.pick(c);h&&(b.buttons=t,b.screen=c.coord,b.distance=c.distance,b.object=f,b.index=h.distance,b.dataPosition=h.position,b.dataCoordinate=h.dataCoordinate,b.data=h,s=!0)}}}}}o&&o!==b.object&&(o.highlight&&o.highlight(null),O=!0),b.object&&(b.object.highlight&&b.object.highlight(b.data),O=!0),(s=s||b.object!==o)&&B.onselect&&B.onselect(b),1&t&&!(1&q)&&B.onclick&&B.onclick(b),q=t}}),r.addEventListener(\"webglcontextlost\",H);var G=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],W=[G[0].slice(),G[1].slice()];function Y(){if(!H()){j();var t=B.camera.tick();R.view=B.camera.matrix,O=O||t,I=I||t,M.pixelRatio=B.pixelRatio,S.pixelRatio=B.pixelRatio;var e=C.length,r=G[0],n=G[1];r[0]=r[1]=r[2]=1/0,n[0]=n[1]=n[2]=-1/0;for(var i=0;i<e;++i){var o=C[i];o.pixelRatio=B.pixelRatio,o.axes=B.axes,O=O||!!o.dirty,I=I||!!o.dirty;var s=o.bounds;if(s)for(var l=s[0],u=s[1],h=0;h<3;++h)r[h]=Math.min(r[h],l[h]),n[h]=Math.max(n[h],u[h])}var p=B.bounds;if(B.autoBounds)for(var h=0;h<3;++h){if(n[h]<r[h])r[h]=-1,n[h]=1;else{r[h]===n[h]&&(r[h]-=1,n[h]+=1);var d=.05*(n[h]-r[h]);r[h]=r[h]-d,n[h]=n[h]+d}p[0][h]=r[h],p[1][h]=n[h]}for(var v=!1,h=0;h<3;++h)v=v||W[0][h]!==p[0][h]||W[1][h]!==p[1][h],W[0][h]=p[0][h],W[1][h]=p[1][h];if(I=I||v,O=O||v){if(v){for(var m=[0,0,0],i=0;i<3;++i)m[i]=g((p[1][i]-p[0][i])/10);M.autoTicks?M.update({bounds:p,tickSpacing:m}):M.update({bounds:p})}var x=y.drawingBufferWidth,k=y.drawingBufferHeight;F[0]=x,F[1]=k,N[0]=0|Math.max(x/B.pixelRatio,1),N[1]=0|Math.max(k/B.pixelRatio,1),f(D,B.fovy,x/k,B.zNear,B.zFar);for(var i=0;i<16;++i)P[i]=0;P[15]=1;for(var A=0,i=0;i<3;++i)A=Math.max(A,p[1][i]-p[0][i]);for(var i=0;i<3;++i)B.autoScale?P[5*i]=B.aspect[i]/(p[1][i]-p[0][i]):P[5*i]=1/A,B.autoCenter&&(P[12+i]=.5*-P[5*i]*(p[0][i]+p[1][i]));for(var i=0;i<e;++i){var o=C[i];o.axesBounds=p,B.clipToBounds&&(o.clipBounds=p)}b.object&&(B.snapToData?S.position=b.dataCoordinate:S.position=b.dataPosition,S.bounds=p),I&&(I=!1,function(){if(H())return;y.colorMask(!0,!0,!0,!0),y.depthMask(!0),y.disable(y.BLEND),y.enable(y.DEPTH_TEST);for(var t=C.length,e=z.length,r=0;r<e;++r){var n=z[r];n.shape=N,n.begin();for(var i=0;i<t;++i)if(E[i]===r){var a=C[i];a.drawPick&&(a.pixelRatio=1,a.drawPick(R))}n.end()}}()),B.axesPixels=a(B.axes,R,x,k),B.onrender&&B.onrender(),y.bindFramebuffer(y.FRAMEBUFFER,null),y.viewport(0,0,x,k);var T=B.clearColor;y.clearColor(T[0],T[1],T[2],T[3]),y.clear(y.COLOR_BUFFER_BIT|y.DEPTH_BUFFER_BIT),y.depthMask(!0),y.colorMask(!0,!0,!0,!0),y.enable(y.DEPTH_TEST),y.depthFunc(y.LEQUAL),y.disable(y.BLEND),y.disable(y.CULL_FACE);var L=!1;M.enable&&(L=L||M.isTransparent(),M.draw(R)),S.axes=M,b.object&&S.draw(R),y.disable(y.CULL_FACE);for(var i=0;i<e;++i){var o=C[i];o.axes=M,o.pixelRatio=B.pixelRatio,o.isOpaque&&o.isOpaque()&&o.draw(R),o.isTransparent&&o.isTransparent()&&(L=!0)}if(L){_.shape=F,_.bind(),y.clear(y.DEPTH_BUFFER_BIT),y.colorMask(!1,!1,!1,!1),y.depthMask(!0),y.depthFunc(y.LESS),M.enable&&M.isTransparent()&&M.drawTransparent(R);for(var i=0;i<e;++i){var o=C[i];o.isOpaque&&o.isOpaque()&&o.draw(R)}y.enable(y.BLEND),y.blendEquation(y.FUNC_ADD),y.blendFunc(y.ONE,y.ONE_MINUS_SRC_ALPHA),y.colorMask(!0,!0,!0,!0),y.depthMask(!1),y.clearColor(0,0,0,0),y.clear(y.COLOR_BUFFER_BIT),M.isTransparent()&&M.drawTransparent(R);for(var i=0;i<e;++i){var o=C[i];o.isTransparent&&o.isTransparent()&&o.drawTransparent(R)}y.bindFramebuffer(y.FRAMEBUFFER,null),y.blendFunc(y.ONE,y.ONE_MINUS_SRC_ALPHA),y.disable(y.DEPTH_TEST),w.bind(),_.color[0].bind(0),w.uniforms.accumBuffer=0,c(y),y.disable(y.BLEND)}O=!1;for(var i=0;i<e;++i)C[i].dirty=!1}}}return function t(){e||B.contextLost||(Y(),requestAnimationFrame(t))}(),B.redraw=function(){e||(O=!0,Y())},B};var n=t(\"3d-view-controls\"),i=t(\"gl-axes3d\"),a=t(\"gl-axes3d/properties\"),o=t(\"gl-spikes3d\"),s=t(\"gl-select-static\"),l=t(\"gl-fbo\"),c=t(\"a-big-triangle\"),u=t(\"mouse-change\"),f=t(\"gl-mat4/perspective\"),h=t(\"./lib/shader\"),p=t(\"is-mobile\")({tablet:!0});function d(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function g(t){var e=Math.round(Math.log(Math.abs(t))/Math.log(10));if(e<0){var r=Math.round(Math.pow(10,-e));return Math.ceil(t*r)/r}if(e>0){r=Math.round(Math.pow(10,e));return Math.ceil(t/r)*r}return Math.ceil(t)}function v(t){return\"boolean\"!=typeof t||t}},{\"./lib/shader\":278,\"3d-view-controls\":45,\"a-big-triangle\":48,\"gl-axes3d\":223,\"gl-axes3d/properties\":230,\"gl-fbo\":240,\"gl-mat4/perspective\":259,\"gl-select-static\":289,\"gl-spikes3d\":299,\"is-mobile\":406,\"mouse-change\":421}],280:[function(t,e,r){var n=t(\"glslify\");r.pointVertex=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\n\\nuniform mat3 matrix;\\nuniform float pointSize;\\nuniform float pointCloud;\\n\\nhighp float rand(vec2 co) {\\n  highp float a = 12.9898;\\n  highp float b = 78.233;\\n  highp float c = 43758.5453;\\n  highp float d = dot(co.xy, vec2(a, b));\\n  highp float e = mod(d, 3.14);\\n  return fract(sin(e) * c);\\n}\\n\\nvoid main() {\\n  vec3 hgPosition = matrix * vec3(position, 1);\\n  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);\\n    // if we don't jitter the point size a bit, overall point cloud\\n    // saturation 'jumps' on zooming, which is disturbing and confusing\\n  gl_PointSize = pointSize * ((19.5 + rand(position)) / 20.0);\\n  if(pointCloud != 0.0) { // pointCloud is truthy\\n    // get the same square surface as circle would be\\n    gl_PointSize *= 0.886;\\n  }\\n}\"]),r.pointFragment=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color, borderColor;\\nuniform float centerFraction;\\nuniform float pointCloud;\\n\\nvoid main() {\\n  float radius;\\n  vec4 baseColor;\\n  if(pointCloud != 0.0) { // pointCloud is truthy\\n    if(centerFraction == 1.0) {\\n      gl_FragColor = color;\\n    } else {\\n      gl_FragColor = mix(borderColor, color, centerFraction);\\n    }\\n  } else {\\n    radius = length(2.0 * gl_PointCoord.xy - 1.0);\\n    if(radius > 1.0) {\\n      discard;\\n    }\\n    baseColor = mix(borderColor, color, step(radius, centerFraction));\\n    gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\\n  }\\n}\\n\"]),r.pickVertex=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 pickId;\\n\\nuniform mat3 matrix;\\nuniform float pointSize;\\nuniform vec4 pickOffset;\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n  vec3 hgPosition = matrix * vec3(position, 1);\\n  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);\\n  gl_PointSize = pointSize;\\n\\n  vec4 id = pickId + pickOffset;\\n  id.y += floor(id.x / 256.0);\\n  id.x -= floor(id.x / 256.0) * 256.0;\\n\\n  id.z += floor(id.y / 256.0);\\n  id.y -= floor(id.y / 256.0) * 256.0;\\n\\n  id.w += floor(id.z / 256.0);\\n  id.z -= floor(id.z / 256.0) * 256.0;\\n\\n  fragId = id;\\n}\\n\"]),r.pickFragment=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n  float radius = length(2.0 * gl_PointCoord.xy - 1.0);\\n  if(radius > 1.0) {\\n    discard;\\n  }\\n  gl_FragColor = fragId / 255.0;\\n}\\n\"])},{glslify:395}],281:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=t(\"gl-buffer\"),a=t(\"typedarray-pool\"),o=t(\"./lib/shader\");function s(t,e,r,n,i){this.plot=t,this.offsetBuffer=e,this.pickBuffer=r,this.shader=n,this.pickShader=i,this.sizeMin=.5,this.sizeMinCap=2,this.sizeMax=20,this.areaRatio=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.blend=!1,this.pickOffset=0,this.points=null}e.exports=function(t,e){var r=t.gl,a=i(r),l=i(r),c=n(r,o.pointVertex,o.pointFragment),u=n(r,o.pickVertex,o.pickFragment),f=new s(t,a,l,c,u);return f.update(e),t.addObject(f),f};var l,c,u=s.prototype;u.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.plot.removeObject(this)},u.update=function(t){var e;function r(e,r){return e in t?t[e]:r}t=t||{},this.sizeMin=r(\"sizeMin\",.5),this.sizeMax=r(\"sizeMax\",20),this.color=r(\"color\",[1,0,0,1]).slice(),this.areaRatio=r(\"areaRatio\",1),this.borderColor=r(\"borderColor\",[0,0,0,1]).slice(),this.blend=r(\"blend\",!1);var n=t.positions.length>>>1,i=t.positions instanceof Float32Array,o=t.idToIndex instanceof Int32Array&&t.idToIndex.length>=n,s=t.positions,l=i?s:a.mallocFloat32(s.length),c=o?t.idToIndex:a.mallocInt32(n);if(i||l.set(s),!o)for(l.set(s),e=0;e<n;e++)c[e]=e;this.points=s,this.offsetBuffer.update(l),this.pickBuffer.update(c),i||a.free(l),o||a.free(c),this.pointCount=n,this.pickOffset=0},u.unifiedDraw=(l=[1,0,0,0,1,0,0,0,1],c=[0,0,0,0],function(t){var e=void 0!==t,r=e?this.pickShader:this.shader,n=this.plot.gl,i=this.plot.dataBox;if(0===this.pointCount)return t;var a=i[2]-i[0],o=i[3]-i[1],s=function(t,e){var r,n=0,i=t.length>>>1;for(r=0;r<i;r++){var a=t[2*r],o=t[2*r+1];a>=e[0]&&a<=e[2]&&o>=e[1]&&o<=e[3]&&n++}return n}(this.points,i),u=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(s,.33333)));l[0]=2/a,l[4]=2/o,l[6]=-2*i[0]/a-1,l[7]=-2*i[1]/o-1,this.offsetBuffer.bind(),r.bind(),r.attributes.position.pointer(),r.uniforms.matrix=l,r.uniforms.color=this.color,r.uniforms.borderColor=this.borderColor,r.uniforms.pointCloud=u<5,r.uniforms.pointSize=u,r.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio))),e&&(c[0]=255&t,c[1]=t>>8&255,c[2]=t>>16&255,c[3]=t>>24&255,this.pickBuffer.bind(),r.attributes.pickId.pointer(n.UNSIGNED_BYTE),r.uniforms.pickOffset=c,this.pickOffset=t);var f=n.getParameter(n.BLEND),h=n.getParameter(n.DITHER);return f&&!this.blend&&n.disable(n.BLEND),h&&n.disable(n.DITHER),n.drawArrays(n.POINTS,0,this.pointCount),f&&!this.blend&&n.enable(n.BLEND),h&&n.enable(n.DITHER),t+this.pointCount}),u.draw=u.unifiedDraw,u.drawPick=u.unifiedDraw,u.pick=function(t,e,r){var n=this.pickOffset,i=this.pointCount;if(r<n||r>=n+i)return null;var a=r-n,o=this.points;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}}},{\"./lib/shader\":280,\"gl-buffer\":231,\"gl-shader\":290,\"typedarray-pool\":523}],282:[function(t,e,r){e.exports=function(t,e,r,n){var i,a,o,s,l,c=e[0],u=e[1],f=e[2],h=e[3],p=r[0],d=r[1],g=r[2],v=r[3];(a=c*p+u*d+f*g+h*v)<0&&(a=-a,p=-p,d=-d,g=-g,v=-v);1-a>1e-6?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,l=Math.sin(n*i)/o):(s=1-n,l=n);return t[0]=s*c+l*p,t[1]=s*u+l*d,t[2]=s*f+l*g,t[3]=s*h+l*v,t}},{}],283:[function(t,e,r){\"use strict\";e.exports=function(t){return t||0===t?t.toString():\"\"}},{}],284:[function(t,e,r){\"use strict\";var n=t(\"vectorize-text\");e.exports=function(t,e){var r=i[e];r||(r=i[e]={});if(t in r)return r[t];var a={textAlign:\"center\",textBaseline:\"middle\",lineHeight:1,font:e,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},triangles:!0},o=n(t,a);a.triangles=!1;for(var s=n(t,a),l=[[1/0,1/0],[-1/0,-1/0]],c=s.positions.length,u=0;u<c;++u)for(var f=s.positions[u],h=0;h<2;++h)l[0][h]=Math.min(l[0][h],f[h]),l[1][h]=Math.max(l[1][h],f[h]);return r[t]=[o,s,l]};var i={}},{\"vectorize-text\":528}],285:[function(t,e,r){var n=t(\"gl-shader\"),i=t(\"glslify\"),a=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform vec4 highlightId;\\nuniform float highlightScale;\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float scale = 1.0;\\n    if(distance(highlightId, id) < 0.0001) {\\n      scale = highlightScale;\\n    }\\n\\n    vec4 worldPosition = model * vec4(position, 1);\\n    vec4 viewPosition = view * worldPosition;\\n    viewPosition = viewPosition / viewPosition.w;\\n    vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\\n\\n    gl_Position = clipPosition;\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = position;\\n  }\\n}\"]),o=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float highlightScale, pixelRatio;\\nuniform vec4 highlightId;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float scale = pixelRatio;\\n    if(distance(highlightId.bgr, id.bgr) < 0.001) {\\n      scale *= highlightScale;\\n    }\\n\\n    vec4 worldPosition = model * vec4(position, 1.0);\\n    vec4 viewPosition = view * worldPosition;\\n    vec4 clipPosition = projection * viewPosition;\\n    clipPosition /= clipPosition.w;\\n\\n    gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = position;\\n  }\\n}\"]),s=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform float highlightScale;\\nuniform vec4 highlightId;\\nuniform vec3 axes[2];\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float scale, pixelRatio;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], position)) {\\n\\n    gl_Position = vec4(0,0,0,0);\\n  } else {\\n    float lscale = pixelRatio * scale;\\n    if(distance(highlightId, id) < 0.0001) {\\n      lscale *= highlightScale;\\n    }\\n\\n    vec4 clipCenter   = projection * view * model * vec4(position, 1);\\n    vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\\n    vec4 clipPosition = projection * view * model * vec4(dataPosition, 1);\\n\\n    gl_Position = clipPosition;\\n    interpColor = color;\\n    pickId = id;\\n    dataCoordinate = dataPosition;\\n  }\\n}\\n\"]),l=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float opacity;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (\\n    outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||\\n    interpColor.a * opacity == 0.\\n  ) discard;\\n  gl_FragColor = interpColor * opacity;\\n}\\n\"]),c=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float pickGroup;\\n\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n  if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;\\n\\n  gl_FragColor = vec4(pickGroup, pickId.bgr);\\n}\"]),u=[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"glyph\",type:\"vec2\"},{name:\"id\",type:\"vec4\"}],f={vertex:a,fragment:l,attributes:u},h={vertex:o,fragment:l,attributes:u},p={vertex:s,fragment:l,attributes:u},d={vertex:a,fragment:c,attributes:u},g={vertex:o,fragment:c,attributes:u},v={vertex:s,fragment:c,attributes:u};function m(t,e){var r=n(t,e),i=r.attributes;return i.position.location=0,i.color.location=1,i.glyph.location=2,i.id.location=3,r}r.createPerspective=function(t){return m(t,f)},r.createOrtho=function(t){return m(t,h)},r.createProject=function(t){return m(t,p)},r.createPickPerspective=function(t){return m(t,d)},r.createPickOrtho=function(t){return m(t,g)},r.createPickProject=function(t){return m(t,v)}},{\"gl-shader\":290,glslify:395}],286:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\"),i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=t(\"typedarray-pool\"),s=t(\"gl-mat4/multiply\"),l=t(\"./lib/shaders\"),c=t(\"./lib/glyphs\"),u=t(\"./lib/get-simple-string\"),f=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function h(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];return t[0]=e[0]*r+e[4]*n+e[8]*i+e[12]*a,t[1]=e[1]*r+e[5]*n+e[9]*i+e[13]*a,t[2]=e[2]*r+e[6]*n+e[10]*i+e[14]*a,t[3]=e[3]*r+e[7]*n+e[11]*i+e[15]*a,t}function p(t,e,r,n){return h(n,n),h(n,n),h(n,n)}function d(t,e){this.index=t,this.dataCoordinate=this.position=e}function g(t){return!0===t?1:t>1?1:t}function v(t,e,r,n,i,a,o,s,l,c,u,f){this.gl=t,this.pixelRatio=1,this.shader=e,this.orthoShader=r,this.projectShader=n,this.pointBuffer=i,this.colorBuffer=a,this.glyphBuffer=o,this.idBuffer=s,this.vao=l,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[2/3,2/3,2/3],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=c,this.pickOrthoShader=u,this.pickProjectShader=f,this.points=[],this._selectResult=new d(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}e.exports=function(t){var e=t.gl,r=l.createPerspective(e),n=l.createOrtho(e),o=l.createProject(e),s=l.createPickPerspective(e),c=l.createPickOrtho(e),u=l.createPickProject(e),f=i(e),h=i(e),p=i(e),d=i(e),g=a(e,[{buffer:f,size:3,type:e.FLOAT},{buffer:h,size:4,type:e.FLOAT},{buffer:p,size:2,type:e.FLOAT},{buffer:d,size:4,type:e.UNSIGNED_BYTE,normalized:!0}]),m=new v(e,r,n,o,f,h,p,d,g,s,c,u);return m.update(t),m};var m=v.prototype;m.pickSlots=1,m.setPickBase=function(t){this.pickId=t},m.isTransparent=function(){if(this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&this.projectHasAlpha)return!0;return!1},m.isOpaque=function(){if(!this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&!this.projectHasAlpha)return!0;return!1};var y=[0,0],x=[0,0,0],b=[0,0,0],_=[0,0,0,1],w=[0,0,0,1],k=f.slice(),A=[0,0,0],M=[[0,0,0],[0,0,0]];function T(t){return t[0]=t[1]=t[2]=0,t}function S(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t}function C(t,e,r,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[r]=n,t}function E(t,e,r){var n,i=e.axesProject,a=e.gl,o=t.uniforms,l=r.model||f,c=r.view||f,u=r.projection||f,h=e.axesBounds,d=function(t){for(var e=M,r=0;r<2;++r)for(var n=0;n<3;++n)e[r][n]=Math.max(Math.min(t[r][n],1e8),-1e8);return e}(e.clipBounds);n=e.axes&&e.axes.lastCubeProps?e.axes.lastCubeProps.axis:[1,1,1],y[0]=2/a.drawingBufferWidth,y[1]=2/a.drawingBufferHeight,t.bind(),o.view=c,o.projection=u,o.screenSize=y,o.highlightId=e.highlightId,o.highlightScale=e.highlightScale,o.clipBounds=d,o.pickGroup=e.pickId/255,o.pixelRatio=e.pixelRatio;for(var g=0;g<3;++g)if(i[g]){o.scale=e.projectScale[g],o.opacity=e.projectOpacity[g];for(var v=k,m=0;m<16;++m)v[m]=0;for(m=0;m<4;++m)v[5*m]=1;v[5*g]=0,n[g]<0?v[12+g]=h[0][g]:v[12+g]=h[1][g],s(v,l,v),o.model=v;var E=(g+1)%3,L=(g+2)%3,z=T(x),O=T(b);z[E]=1,O[L]=1;var I=p(0,0,0,S(_,z)),D=p(0,0,0,S(w,O));if(Math.abs(I[1])>Math.abs(D[1])){var P=I;I=D,D=P,P=z,z=O,O=P;var R=E;E=L,L=R}I[0]<0&&(z[E]=-1),D[1]>0&&(O[L]=-1);var F=0,B=0;for(m=0;m<4;++m)F+=Math.pow(l[4*E+m],2),B+=Math.pow(l[4*L+m],2);z[E]/=Math.sqrt(F),O[L]/=Math.sqrt(B),o.axes[0]=z,o.axes[1]=O,o.fragClipBounds[0]=C(A,d[0],g,-1e8),o.fragClipBounds[1]=C(A,d[1],g,1e8),e.vao.bind(),e.vao.draw(a.TRIANGLES,e.vertexCount),e.lineWidth>0&&(a.lineWidth(e.lineWidth),e.vao.draw(a.LINES,e.lineVertexCount,e.vertexCount)),e.vao.unbind()}}var L=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function z(t,e,r,n,i,a){var o=r.gl;if((i===r.projectHasAlpha||a)&&E(e,r,n),i===r.hasAlpha||a){t.bind();var s=t.uniforms;s.model=n.model||f,s.view=n.view||f,s.projection=n.projection||f,y[0]=2/o.drawingBufferWidth,y[1]=2/o.drawingBufferHeight,s.screenSize=y,s.highlightId=r.highlightId,s.highlightScale=r.highlightScale,s.fragClipBounds=L,s.clipBounds=r.axes.bounds,s.opacity=r.opacity,s.pickGroup=r.pickId/255,s.pixelRatio=r.pixelRatio,r.vao.bind(),r.vao.draw(o.TRIANGLES,r.vertexCount),r.lineWidth>0&&(o.lineWidth(r.lineWidth),r.vao.draw(o.LINES,r.lineVertexCount,r.vertexCount)),r.vao.unbind()}}function O(t,e,r){var i;i=Array.isArray(t)?e<t.length?t[e]:void 0:t,i=u(i);var a=!0;n(i)&&(i=\"\\u25bc\",a=!1);var o=c(i,r);return{mesh:o[0],lines:o[1],bounds:o[2],visible:a}}m.draw=function(t){z(this.useOrtho?this.orthoShader:this.shader,this.projectShader,this,t,!1,!1)},m.drawTransparent=function(t){z(this.useOrtho?this.orthoShader:this.shader,this.projectShader,this,t,!0,!1)},m.drawPick=function(t){z(this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader,this.pickProjectShader,this,t,!0,!0)},m.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[2]+(t.value[1]<<8)+(t.value[0]<<16);if(e>=this.pointCount||e<0)return null;var r=this.points[e],n=this._selectResult;n.index=e;for(var i=0;i<3;++i)n.position[i]=n.dataCoordinate[i]=r[i];return n},m.highlight=function(t){if(t){var e=t.index,r=255&e,n=e>>8&255,i=e>>16&255;this.highlightId=[r/255,n/255,i/255,0]}else this.highlightId=[1,1,1,1]},m.update=function(t){if(\"perspective\"in(t=t||{})&&(this.useOrtho=!t.perspective),\"orthographic\"in t&&(this.useOrtho=!!t.orthographic),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"project\"in t)if(Array.isArray(t.project))this.axesProject=t.project;else{var e=!!t.project;this.axesProject=[e,e,e]}if(\"projectScale\"in t)if(Array.isArray(t.projectScale))this.projectScale=t.projectScale.slice();else{var r=+t.projectScale;this.projectScale=[r,r,r]}if(this.projectHasAlpha=!1,\"projectOpacity\"in t){if(Array.isArray(t.projectOpacity))this.projectOpacity=t.projectOpacity.slice();else{r=+t.projectOpacity;this.projectOpacity=[r,r,r]}for(var n=0;n<3;++n)this.projectOpacity[n]=g(this.projectOpacity[n]),this.projectOpacity[n]<1&&(this.projectHasAlpha=!0)}this.hasAlpha=!1,\"opacity\"in t&&(this.opacity=g(t.opacity),this.opacity<1&&(this.hasAlpha=!0)),this.dirty=!0;var i,a,s=t.position,l=t.font||\"normal\",c=t.alignment||[0,0];if(2===c.length)i=c[0],a=c[1];else{i=[],a=[];for(n=0;n<c.length;++n)i[n]=c[n][0],a[n]=c[n][1]}var u=[1/0,1/0,1/0],f=[-1/0,-1/0,-1/0],h=t.glyph,p=t.color,d=t.size,v=t.angle,m=t.lineColor,y=-1,x=0,b=0,_=0;if(s.length){_=s.length;t:for(n=0;n<_;++n){for(var w=s[n],k=0;k<3;++k)if(isNaN(w[k])||!isFinite(w[k]))continue t;var A=(N=O(h,n,l)).mesh,M=N.lines,T=N.bounds;x+=3*A.cells.length,b+=2*M.edges.length}}var S=x+b,C=o.mallocFloat(3*S),E=o.mallocFloat(4*S),L=o.mallocFloat(2*S),z=o.mallocUint32(S);if(S>0){var I=0,D=x,P=[0,0,0,1],R=[0,0,0,1],F=Array.isArray(p)&&Array.isArray(p[0]),B=Array.isArray(m)&&Array.isArray(m[0]);t:for(n=0;n<_;++n){y+=1;for(w=s[n],k=0;k<3;++k){if(isNaN(w[k])||!isFinite(w[k]))continue t;f[k]=Math.max(f[k],w[k]),u[k]=Math.min(u[k],w[k])}A=(N=O(h,n,l)).mesh,M=N.lines,T=N.bounds;var N,j=N.visible;if(j)if(Array.isArray(p)){if(3===(V=F?n<p.length?p[n]:[0,0,0,0]:p).length){for(k=0;k<3;++k)P[k]=V[k];P[3]=1}else if(4===V.length){for(k=0;k<4;++k)P[k]=V[k];!this.hasAlpha&&V[3]<1&&(this.hasAlpha=!0)}}else P[0]=P[1]=P[2]=0,P[3]=1;else P=[1,1,1,0];if(j)if(Array.isArray(m)){var V;if(3===(V=B?n<m.length?m[n]:[0,0,0,0]:m).length){for(k=0;k<3;++k)R[k]=V[k];R[k]=1}else if(4===V.length){for(k=0;k<4;++k)R[k]=V[k];!this.hasAlpha&&V[3]<1&&(this.hasAlpha=!0)}}else R[0]=R[1]=R[2]=0,R[3]=1;else R=[1,1,1,0];var U=.5;j?Array.isArray(d)?U=n<d.length?+d[n]:12:d?U=+d:this.useOrtho&&(U=12):U=0;var q=0;Array.isArray(v)?q=n<v.length?+v[n]:0:v&&(q=+v);var H=Math.cos(q),G=Math.sin(q);for(w=s[n],k=0;k<3;++k)f[k]=Math.max(f[k],w[k]),u[k]=Math.min(u[k],w[k]);var W=i,Y=a;W=0;Array.isArray(i)?W=n<i.length?i[n]:0:i&&(W=i);Y=0;Array.isArray(a)?Y=n<a.length?a[n]:0:a&&(Y=a);var X=[W*=W>0?1-T[0][0]:W<0?1+T[1][0]:1,Y*=Y>0?1-T[0][1]:Y<0?1+T[1][1]:1],Z=A.cells||[],$=A.positions||[];for(k=0;k<Z.length;++k)for(var J=Z[k],K=0;K<3;++K){for(var Q=0;Q<3;++Q)C[3*I+Q]=w[Q];for(Q=0;Q<4;++Q)E[4*I+Q]=P[Q];z[I]=y;var tt=$[J[K]];L[2*I]=U*(H*tt[0]-G*tt[1]+X[0]),L[2*I+1]=U*(G*tt[0]+H*tt[1]+X[1]),I+=1}for(Z=M.edges,$=M.positions,k=0;k<Z.length;++k)for(J=Z[k],K=0;K<2;++K){for(Q=0;Q<3;++Q)C[3*D+Q]=w[Q];for(Q=0;Q<4;++Q)E[4*D+Q]=R[Q];z[D]=y;tt=$[J[K]];L[2*D]=U*(H*tt[0]-G*tt[1]+X[0]),L[2*D+1]=U*(G*tt[0]+H*tt[1]+X[1]),D+=1}}}this.bounds=[u,f],this.points=s,this.pointCount=s.length,this.vertexCount=x,this.lineVertexCount=b,this.pointBuffer.update(C),this.colorBuffer.update(E),this.glyphBuffer.update(L),this.idBuffer.update(z),o.free(C),o.free(E),o.free(L),o.free(z)},m.dispose=function(){this.shader.dispose(),this.orthoShader.dispose(),this.pickPerspectiveShader.dispose(),this.pickOrthoShader.dispose(),this.vao.dispose(),this.pointBuffer.dispose(),this.colorBuffer.dispose(),this.glyphBuffer.dispose(),this.idBuffer.dispose()}},{\"./lib/get-simple-string\":283,\"./lib/glyphs\":284,\"./lib/shaders\":285,\"gl-buffer\":231,\"gl-mat4/multiply\":258,\"gl-vao\":313,\"is-string-blank\":409,\"typedarray-pool\":523}],287:[function(t,e,r){\"use strict\";var n=t(\"glslify\");r.boxVertex=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 vertex;\\n\\nuniform vec2 cornerA, cornerB;\\n\\nvoid main() {\\n  gl_Position = vec4(mix(cornerA, cornerB, vertex), 0, 1);\\n}\\n\"]),r.boxFragment=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\n\\nvoid main() {\\n  gl_FragColor = color;\\n}\\n\"])},{glslify:395}],288:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=t(\"gl-buffer\"),a=t(\"./lib/shaders\");function o(t,e,r){this.plot=t,this.boxBuffer=e,this.boxShader=r,this.enabled=!0,this.selectBox=[1/0,1/0,-1/0,-1/0],this.borderColor=[0,0,0,1],this.innerFill=!1,this.innerColor=[0,0,0,.25],this.outerFill=!0,this.outerColor=[0,0,0,.5],this.borderWidth=10}e.exports=function(t,e){var r=t.gl,s=i(r,[0,0,0,1,1,0,1,1]),l=n(r,a.boxVertex,a.boxFragment),c=new o(t,s,l);return c.update(e),t.addOverlay(c),c};var s=o.prototype;s.draw=function(){if(this.enabled){var t=this.plot,e=this.selectBox,r=this.borderWidth,n=(this.innerFill,this.innerColor),i=(this.outerFill,this.outerColor),a=this.borderColor,o=t.box,s=t.screenBox,l=t.dataBox,c=t.viewBox,u=t.pixelRatio,f=(e[0]-l[0])*(c[2]-c[0])/(l[2]-l[0])+c[0],h=(e[1]-l[1])*(c[3]-c[1])/(l[3]-l[1])+c[1],p=(e[2]-l[0])*(c[2]-c[0])/(l[2]-l[0])+c[0],d=(e[3]-l[1])*(c[3]-c[1])/(l[3]-l[1])+c[1];if(f=Math.max(f,c[0]),h=Math.max(h,c[1]),p=Math.min(p,c[2]),d=Math.min(d,c[3]),!(p<f||d<h)){o.bind();var g=s[2]-s[0],v=s[3]-s[1];if(this.outerFill&&(o.drawBox(0,0,g,h,i),o.drawBox(0,h,f,d,i),o.drawBox(0,d,g,v,i),o.drawBox(p,h,g,d,i)),this.innerFill&&o.drawBox(f,h,p,d,n),r>0){var m=r*u;o.drawBox(f-m,h-m,p+m,h+m,a),o.drawBox(f-m,d-m,p+m,d+m,a),o.drawBox(f-m,h-m,f+m,d+m,a),o.drawBox(p-m,h-m,p+m,d+m,a)}}}},s.update=function(t){t=t||{},this.innerFill=!!t.innerFill,this.outerFill=!!t.outerFill,this.innerColor=(t.innerColor||[0,0,0,.5]).slice(),this.outerColor=(t.outerColor||[0,0,0,.5]).slice(),this.borderColor=(t.borderColor||[0,0,0,1]).slice(),this.borderWidth=t.borderWidth||0,this.selectBox=(t.selectBox||this.selectBox).slice()},s.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},{\"./lib/shaders\":287,\"gl-buffer\":231,\"gl-shader\":290}],289:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=n(t,e),a=i.mallocUint8(e[0]*e[1]*4);return new c(t,r,a)};var n=t(\"gl-fbo\"),i=t(\"typedarray-pool\"),a=t(\"ndarray\"),o=t(\"bit-twiddle\").nextPow2,s=t(\"cwise/lib/wrapper\")({args:[\"array\",{offset:[0,0,1],array:0},{offset:[0,0,2],array:0},{offset:[0,0,3],array:0},\"scalar\",\"scalar\",\"index\"],pre:{body:\"{this_closestD2=1e8,this_closestX=-1,this_closestY=-1}\",args:[],thisVars:[\"this_closestD2\",\"this_closestX\",\"this_closestY\"],localVars:[]},body:{body:\"{if(_inline_16_arg0_<255||_inline_16_arg1_<255||_inline_16_arg2_<255||_inline_16_arg3_<255){var _inline_16_l=_inline_16_arg4_-_inline_16_arg6_[0],_inline_16_a=_inline_16_arg5_-_inline_16_arg6_[1],_inline_16_f=_inline_16_l*_inline_16_l+_inline_16_a*_inline_16_a;_inline_16_f<this_closestD2&&(this_closestD2=_inline_16_f,this_closestX=_inline_16_arg6_[0],this_closestY=_inline_16_arg6_[1])}}\",args:[{name:\"_inline_16_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg1_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg3_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg4_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg5_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_16_arg6_\",lvalue:!1,rvalue:!0,count:4}],thisVars:[\"this_closestD2\",\"this_closestX\",\"this_closestY\"],localVars:[\"_inline_16_a\",\"_inline_16_f\",\"_inline_16_l\"]},post:{body:\"{return[this_closestX,this_closestY,this_closestD2]}\",args:[],thisVars:[\"this_closestD2\",\"this_closestX\",\"this_closestY\"],localVars:[]},debug:!1,funcName:\"cwise\",blockSize:64});function l(t,e,r,n,i){this.coord=[t,e],this.id=r,this.value=n,this.distance=i}function c(t,e,r){this.gl=t,this.fbo=e,this.buffer=r,this._readTimeout=null;var n=this;this._readCallback=function(){n.gl&&(e.bind(),t.readPixels(0,0,e.shape[0],e.shape[1],t.RGBA,t.UNSIGNED_BYTE,n.buffer),n._readTimeout=null)}}var u=c.prototype;Object.defineProperty(u,\"shape\",{get:function(){return this.gl?this.fbo.shape.slice():[0,0]},set:function(t){if(this.gl){this.fbo.shape=t;var e=this.fbo.shape[0],r=this.fbo.shape[1];if(r*e*4>this.buffer.length){i.free(this.buffer);for(var n=this.buffer=i.mallocUint8(o(r*e*4)),a=0;a<r*e*4;++a)n[a]=255}return t}}}),u.begin=function(){var t=this.gl;this.shape;t&&(this.fbo.bind(),t.clearColor(1,1,1,1),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT))},u.end=function(){var t=this.gl;t&&(t.bindFramebuffer(t.FRAMEBUFFER,null),this._readTimeout||clearTimeout(this._readTimeout),this._readTimeout=setTimeout(this._readCallback,1))},u.query=function(t,e,r){if(!this.gl)return null;var n=this.fbo.shape.slice();t|=0,e|=0,\"number\"!=typeof r&&(r=1);var i=0|Math.min(Math.max(t-r,0),n[0]),o=0|Math.min(Math.max(t+r,0),n[0]),c=0|Math.min(Math.max(e-r,0),n[1]),u=0|Math.min(Math.max(e+r,0),n[1]);if(o<=i||u<=c)return null;var f=[o-i,u-c],h=a(this.buffer,[f[0],f[1],4],[4,4*n[0],1],4*(i+n[0]*c)),p=s(h.hi(f[0],f[1],1),r,r),d=p[0],g=p[1];return d<0||Math.pow(this.radius,2)<p[2]?null:new l(d+i|0,g+c|0,h.get(d,g,0),[h.get(d,g,1),h.get(d,g,2),h.get(d,g,3)],Math.sqrt(p[2]))},u.dispose=function(){this.gl&&(this.fbo.dispose(),i.free(this.buffer),this.gl=null,this._readTimeout&&clearTimeout(this._readTimeout))}},{\"bit-twiddle\":81,\"cwise/lib/wrapper\":138,\"gl-fbo\":240,ndarray:436,\"typedarray-pool\":523}],290:[function(t,e,r){\"use strict\";var n=t(\"./lib/create-uniforms\"),i=t(\"./lib/create-attributes\"),a=t(\"./lib/reflect\"),o=t(\"./lib/shader-cache\"),s=t(\"./lib/runtime-reflect\"),l=t(\"./lib/GLError\");function c(t){this.gl=t,this.gl.lastAttribCount=0,this._vref=this._fref=this._relink=this.vertShader=this.fragShader=this.program=this.attributes=this.uniforms=this.types=null}var u=c.prototype;function f(t,e){return t.name<e.name?-1:1}u.bind=function(){var t;this.program||this._relink();var e=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES),r=this.gl.lastAttribCount;if(e>r)for(t=r;t<e;t++)this.gl.enableVertexAttribArray(t);else if(r>e)for(t=e;t<r;t++)this.gl.disableVertexAttribArray(t);this.gl.lastAttribCount=e,this.gl.useProgram(this.program)},u.dispose=function(){for(var t=this.gl.lastAttribCount,e=0;e<t;e++)this.gl.disableVertexAttribArray(e);this.gl.lastAttribCount=0,this._fref&&this._fref.dispose(),this._vref&&this._vref.dispose(),this.attributes=this.types=this.vertShader=this.fragShader=this.program=this._relink=this._fref=this._vref=null},u.update=function(t,e,r,c){if(!e||1===arguments.length){var u=t;t=u.vertex,e=u.fragment,r=u.uniforms,c=u.attributes}var h=this,p=h.gl,d=h._vref;h._vref=o.shader(p,p.VERTEX_SHADER,t),d&&d.dispose(),h.vertShader=h._vref.shader;var g=this._fref;if(h._fref=o.shader(p,p.FRAGMENT_SHADER,e),g&&g.dispose(),h.fragShader=h._fref.shader,!r||!c){var v=p.createProgram();if(p.attachShader(v,h.fragShader),p.attachShader(v,h.vertShader),p.linkProgram(v),!p.getProgramParameter(v,p.LINK_STATUS)){var m=p.getProgramInfoLog(v);throw new l(m,\"Error linking program:\"+m)}r=r||s.uniforms(p,v),c=c||s.attributes(p,v),p.deleteProgram(v)}(c=c.slice()).sort(f);var y,x=[],b=[],_=[];for(y=0;y<c.length;++y){var w=c[y];if(w.type.indexOf(\"mat\")>=0){for(var k=0|w.type.charAt(w.type.length-1),A=new Array(k),M=0;M<k;++M)A[M]=_.length,b.push(w.name+\"[\"+M+\"]\"),\"number\"==typeof w.location?_.push(w.location+M):Array.isArray(w.location)&&w.location.length===k&&\"number\"==typeof w.location[M]?_.push(0|w.location[M]):_.push(-1);x.push({name:w.name,type:w.type,locations:A})}else x.push({name:w.name,type:w.type,locations:[_.length]}),b.push(w.name),\"number\"==typeof w.location?_.push(0|w.location):_.push(-1)}var T=0;for(y=0;y<_.length;++y)if(_[y]<0){for(;_.indexOf(T)>=0;)T+=1;_[y]=T}var S=new Array(r.length);function C(){h.program=o.program(p,h._vref,h._fref,b,_);for(var t=0;t<r.length;++t)S[t]=p.getUniformLocation(h.program,r[t].name)}C(),h._relink=C,h.types={uniforms:a(r),attributes:a(c)},h.attributes=i(p,h,x,_),Object.defineProperty(h,\"uniforms\",n(p,h,r,S))},e.exports=function(t,e,r,n,i){var a=new c(t);return a.update(e,r,n,i),a}},{\"./lib/GLError\":291,\"./lib/create-attributes\":292,\"./lib/create-uniforms\":293,\"./lib/reflect\":294,\"./lib/runtime-reflect\":295,\"./lib/shader-cache\":296}],291:[function(t,e,r){function n(t,e,r){this.shortMessage=e||\"\",this.longMessage=r||\"\",this.rawError=t||\"\",this.message=\"gl-shader: \"+(e||t||\"\")+(r?\"\\n\"+r:\"\"),this.stack=(new Error).stack}n.prototype=new Error,n.prototype.name=\"GLError\",n.prototype.constructor=n,e.exports=n},{}],292:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var a={},l=0,c=r.length;l<c;++l){var u=r[l],f=u.name,h=u.type,p=u.locations;switch(h){case\"bool\":case\"int\":case\"float\":o(t,e,p[0],i,1,a,f);break;default:if(h.indexOf(\"vec\")>=0){var d=h.charCodeAt(h.length-1)-48;if(d<2||d>4)throw new n(\"\",\"Invalid data type for attribute \"+f+\": \"+h);o(t,e,p[0],i,d,a,f)}else{if(!(h.indexOf(\"mat\")>=0))throw new n(\"\",\"Unknown data type for attribute \"+f+\": \"+h);var d=h.charCodeAt(h.length-1)-48;if(d<2||d>4)throw new n(\"\",\"Invalid data type for attribute \"+f+\": \"+h);s(t,e,p,i,d,a,f)}}}return a};var n=t(\"./GLError\");function i(t,e,r,n,i,a){this._gl=t,this._wrapper=e,this._index=r,this._locations=n,this._dimension=i,this._constFunc=a}var a=i.prototype;function o(t,e,r,n,a,o,s){for(var l=[\"gl\",\"v\"],c=[],u=0;u<a;++u)l.push(\"x\"+u),c.push(\"x\"+u);l.push(\"if(x0.length===void 0){return gl.vertexAttrib\"+a+\"f(v,\"+c.join()+\")}else{return gl.vertexAttrib\"+a+\"fv(v,x0)}\");var f=Function.apply(null,l),h=new i(t,e,r,n,a,f);Object.defineProperty(o,s,{set:function(e){return t.disableVertexAttribArray(n[r]),f(t,n[r],e),e},get:function(){return h},enumerable:!0})}function s(t,e,r,n,i,a,s){for(var l=new Array(i),c=new Array(i),u=0;u<i;++u)o(t,e,r[u],n,i,l,u),c[u]=l[u];Object.defineProperty(l,\"location\",{set:function(t){if(Array.isArray(t))for(var e=0;e<i;++e)c[e].location=t[e];else for(e=0;e<i;++e)c[e].location=t+e;return t},get:function(){for(var t=new Array(i),e=0;e<i;++e)t[e]=n[r[e]];return t},enumerable:!0}),l.pointer=function(e,a,o,s){e=e||t.FLOAT,a=!!a,o=o||i*i,s=s||0;for(var l=0;l<i;++l){var c=n[r[l]];t.vertexAttribPointer(c,i,e,a,o,s+l*i),t.enableVertexAttribArray(c)}};var f=new Array(i),h=t[\"vertexAttrib\"+i+\"fv\"];Object.defineProperty(a,s,{set:function(e){for(var a=0;a<i;++a){var o=n[r[a]];if(t.disableVertexAttribArray(o),Array.isArray(e[0]))h.call(t,o,e[a]);else{for(var s=0;s<i;++s)f[s]=e[i*a+s];h.call(t,o,f)}}return e},get:function(){return l},enumerable:!0})}a.pointer=function(t,e,r,n){var i=this._gl,a=this._locations[this._index];i.vertexAttribPointer(a,this._dimension,t||i.FLOAT,!!e,r||0,n||0),i.enableVertexAttribArray(a)},a.set=function(t,e,r,n){return this._constFunc(this._locations[this._index],t,e,r,n)},Object.defineProperty(a,\"location\",{get:function(){return this._locations[this._index]},set:function(t){return t!==this._locations[this._index]&&(this._locations[this._index]=0|t,this._wrapper.program=null),0|t}})},{\"./GLError\":291}],293:[function(t,e,r){\"use strict\";var n=t(\"./reflect\"),i=t(\"./GLError\");function a(t){return new Function(\"y\",\"return function(){return y}\")(t)}function o(t,e){for(var r=new Array(t),n=0;n<t;++n)r[n]=e;return r}e.exports=function(t,e,r,s){function l(t,e,r){switch(r){case\"bool\":case\"int\":case\"sampler2D\":case\"samplerCube\":return\"gl.uniform1i(locations[\"+e+\"],obj\"+t+\")\";case\"float\":return\"gl.uniform1f(locations[\"+e+\"],obj\"+t+\")\";default:var n=r.indexOf(\"vec\");if(!(0<=n&&n<=1&&r.length===4+n)){if(0===r.indexOf(\"mat\")&&4===r.length){var a=r.charCodeAt(r.length-1)-48;if(a<2||a>4)throw new i(\"\",\"Invalid uniform dimension type for matrix \"+name+\": \"+r);return\"gl.uniformMatrix\"+a+\"fv(locations[\"+e+\"],false,obj\"+t+\")\"}throw new i(\"\",\"Unknown uniform data type for \"+name+\": \"+r)}var a=r.charCodeAt(r.length-1)-48;if(a<2||a>4)throw new i(\"\",\"Invalid data type\");switch(r.charAt(0)){case\"b\":case\"i\":return\"gl.uniform\"+a+\"iv(locations[\"+e+\"],obj\"+t+\")\";case\"v\":return\"gl.uniform\"+a+\"fv(locations[\"+e+\"],obj\"+t+\")\";default:throw new i(\"\",\"Unrecognized data type for vector \"+name+\": \"+r)}}}function c(e){for(var n=[\"return function updateProperty(obj){\"],i=function t(e,r){if(\"object\"!=typeof r)return[[e,r]];var n=[];for(var i in r){var a=r[i],o=e;parseInt(i)+\"\"===i?o+=\"[\"+i+\"]\":o+=\".\"+i,\"object\"==typeof a?n.push.apply(n,t(o,a)):n.push([o,a])}return n}(\"\",e),a=0;a<i.length;++a){var o=i[a],c=o[0],u=o[1];s[u]&&n.push(l(c,u,r[u].type))}n.push(\"return obj}\");var f=new Function(\"gl\",\"locations\",n.join(\"\\n\"));return f(t,s)}function u(n,l,u){if(\"object\"==typeof u){var h=f(u);Object.defineProperty(n,l,{get:a(h),set:c(u),enumerable:!0,configurable:!1})}else s[u]?Object.defineProperty(n,l,{get:(p=u,new Function(\"gl\",\"wrapper\",\"locations\",\"return function(){return gl.getUniform(wrapper.program,locations[\"+p+\"])}\")(t,e,s)),set:c(u),enumerable:!0,configurable:!1}):n[l]=function(t){switch(t){case\"bool\":return!1;case\"int\":case\"sampler2D\":case\"samplerCube\":case\"float\":return 0;default:var e=t.indexOf(\"vec\");if(0<=e&&e<=1&&t.length===4+e){var r=t.charCodeAt(t.length-1)-48;if(r<2||r>4)throw new i(\"\",\"Invalid data type\");return\"b\"===t.charAt(0)?o(r,!1):o(r,0)}if(0===t.indexOf(\"mat\")&&4===t.length){var r=t.charCodeAt(t.length-1)-48;if(r<2||r>4)throw new i(\"\",\"Invalid uniform dimension type for matrix \"+name+\": \"+t);return o(r*r,0)}throw new i(\"\",\"Unknown uniform data type for \"+name+\": \"+t)}}(r[u].type);var p}function f(t){var e;if(Array.isArray(t)){e=new Array(t.length);for(var r=0;r<t.length;++r)u(e,r,t[r])}else for(var n in e={},t)u(e,n,t[n]);return e}var h=n(r,!0);return{get:a(f(h)),set:c(h),enumerable:!0,configurable:!0}}},{\"./GLError\":291,\"./reflect\":294}],294:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r={},n=0;n<t.length;++n)for(var i=t[n].name,a=i.split(\".\"),o=r,s=0;s<a.length;++s){var l=a[s].split(\"[\");if(l.length>1){l[0]in o||(o[l[0]]=[]),o=o[l[0]];for(var c=1;c<l.length;++c){var u=parseInt(l[c]);c<l.length-1||s<a.length-1?(u in o||(c<l.length-1?o[u]=[]:o[u]={}),o=o[u]):o[u]=e?n:t[n].type}}else s<a.length-1?(l[0]in o||(o[l[0]]={}),o=o[l[0]]):o[l[0]]=e?n:t[n].type}return r}},{}],295:[function(t,e,r){\"use strict\";r.uniforms=function(t,e){for(var r=t.getProgramParameter(e,t.ACTIVE_UNIFORMS),n=[],i=0;i<r;++i){var o=t.getActiveUniform(e,i);if(o){var s=a(t,o.type);if(o.size>1)for(var l=0;l<o.size;++l)n.push({name:o.name.replace(\"[0]\",\"[\"+l+\"]\"),type:s});else n.push({name:o.name,type:s})}}return n},r.attributes=function(t,e){for(var r=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES),n=[],i=0;i<r;++i){var o=t.getActiveAttrib(e,i);o&&n.push({name:o.name,type:a(t,o.type)})}return n};var n={FLOAT:\"float\",FLOAT_VEC2:\"vec2\",FLOAT_VEC3:\"vec3\",FLOAT_VEC4:\"vec4\",INT:\"int\",INT_VEC2:\"ivec2\",INT_VEC3:\"ivec3\",INT_VEC4:\"ivec4\",BOOL:\"bool\",BOOL_VEC2:\"bvec2\",BOOL_VEC3:\"bvec3\",BOOL_VEC4:\"bvec4\",FLOAT_MAT2:\"mat2\",FLOAT_MAT3:\"mat3\",FLOAT_MAT4:\"mat4\",SAMPLER_2D:\"sampler2D\",SAMPLER_CUBE:\"samplerCube\"},i=null;function a(t,e){if(!i){var r=Object.keys(n);i={};for(var a=0;a<r.length;++a){var o=r[a];i[t[o]]=n[o]}}return i[e]}},{}],296:[function(t,e,r){\"use strict\";r.shader=function(t,e,r){return u(t).getShaderReference(e,r)},r.program=function(t,e,r,n,i){return u(t).getProgram(e,r,n,i)};var n=t(\"./GLError\"),i=t(\"gl-format-compiler-error\"),a=new(\"undefined\"==typeof WeakMap?t(\"weakmap-shim\"):WeakMap),o=0;function s(t,e,r,n,i,a,o){this.id=t,this.src=e,this.type=r,this.shader=n,this.count=a,this.programs=[],this.cache=o}function l(t){this.gl=t,this.shaders=[{},{}],this.programs={}}s.prototype.dispose=function(){if(0==--this.count){for(var t=this.cache,e=t.gl,r=this.programs,n=0,i=r.length;n<i;++n){var a=t.programs[r[n]];a&&(delete t.programs[n],e.deleteProgram(a))}e.deleteShader(this.shader),delete t.shaders[this.type===e.FRAGMENT_SHADER|0][this.src]}};var c=l.prototype;function u(t){var e=a.get(t);return e||(e=new l(t),a.set(t,e)),e}c.getShaderReference=function(t,e){var r=this.gl,a=this.shaders[t===r.FRAGMENT_SHADER|0],l=a[e];if(l&&r.isShader(l.shader))l.count+=1;else{var c=function(t,e,r){var a=t.createShader(e);if(t.shaderSource(a,r),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS)){var o=t.getShaderInfoLog(a);try{var s=i(o,r,e)}catch(t){throw console.warn(\"Failed to format compiler error: \"+t),new n(o,\"Error compiling shader:\\n\"+o)}throw new n(o,s.short,s.long)}return a}(r,t,e);l=a[e]=new s(o++,e,t,c,[],1,this)}return l},c.getProgram=function(t,e,r,i){var a=[t.id,e.id,r.join(\":\"),i.join(\":\")].join(\"@\"),o=this.programs[a];return o&&this.gl.isProgram(o)||(this.programs[a]=o=function(t,e,r,i,a){var o=t.createProgram();t.attachShader(o,e),t.attachShader(o,r);for(var s=0;s<i.length;++s)t.bindAttribLocation(o,a[s],i[s]);if(t.linkProgram(o),!t.getProgramParameter(o,t.LINK_STATUS)){var l=t.getProgramInfoLog(o);throw new n(l,\"Error linking program: \"+l)}return o}(this.gl,t.shader,e.shader,r,i),t.programs.push(a),e.programs.push(a)),o}},{\"./GLError\":291,\"gl-format-compiler-error\":241,\"weakmap-shim\":533}],297:[function(t,e,r){\"use strict\";function n(t){this.plot=t,this.enable=[!0,!0,!1,!1],this.width=[1,1,1,1],this.color=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.center=[1/0,1/0]}e.exports=function(t,e){var r=new n(t);return r.update(e),t.addOverlay(r),r};var i=n.prototype;i.update=function(t){t=t||{},this.enable=(t.enable||[!0,!0,!1,!1]).slice(),this.width=(t.width||[1,1,1,1]).slice(),this.color=(t.color||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]).map(function(t){return t.slice()}),this.center=(t.center||[1/0,1/0]).slice(),this.plot.setOverlayDirty()},i.draw=function(){var t=this.enable,e=this.width,r=this.color,n=this.center,i=this.plot,a=i.line,o=i.dataBox,s=i.viewBox;if(a.bind(),o[0]<=n[0]&&n[0]<=o[2]&&o[1]<=n[1]&&n[1]<=o[3]){var l=s[0]+(n[0]-o[0])/(o[2]-o[0])*(s[2]-s[0]),c=s[1]+(n[1]-o[1])/(o[3]-o[1])*(s[3]-s[1]);t[0]&&a.drawLine(l,c,s[0],c,e[0],r[0]),t[1]&&a.drawLine(l,c,l,s[1],e[1],r[1]),t[2]&&a.drawLine(l,c,s[2],c,e[2],r[2]),t[3]&&a.drawLine(l,c,l,s[3],e[3],r[3])}},i.dispose=function(){this.plot.removeOverlay(this)}},{}],298:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=t(\"gl-shader\"),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, color;\\nattribute float weight;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 coordinates[3];\\nuniform vec4 colors[3];\\nuniform vec2 screenShape;\\nuniform float lineWidth;\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  vec3 vertexPosition = mix(coordinates[0],\\n    mix(coordinates[2], coordinates[1], 0.5 * (position + 1.0)), abs(position));\\n\\n  vec4 clipPos = projection * view * model * vec4(vertexPosition, 1.0);\\n  vec2 clipOffset = (projection * view * model * vec4(color, 0.0)).xy;\\n  vec2 delta = weight * clipOffset * screenShape;\\n  vec2 lineOffset = normalize(vec2(delta.y, -delta.x)) / screenShape;\\n\\n  gl_Position   = vec4(clipPos.xy + clipPos.w * 0.5 * lineWidth * lineOffset, clipPos.z, clipPos.w);\\n  fragColor     = color.x * colors[0] + color.y * colors[1] + color.z * colors[2];\\n}\\n\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n  gl_FragColor = fragColor;\\n}\"]);e.exports=function(t){return i(t,a,o,null,[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec3\"},{name:\"weight\",type:\"float\"}])}},{\"gl-shader\":290,glslify:395}],299:[function(t,e,r){\"use strict\";var n=t(\"gl-buffer\"),i=t(\"gl-vao\"),a=t(\"./shaders/index\");e.exports=function(t,e){var r=[];function o(t,e,n,i,a,o){var s=[t,e,n,0,0,0,1];s[i+3]=1,s[i]=a,r.push.apply(r,s),s[6]=-1,r.push.apply(r,s),s[i]=o,r.push.apply(r,s),r.push.apply(r,s),s[6]=1,r.push.apply(r,s),s[i]=a,r.push.apply(r,s)}o(0,0,0,0,0,1),o(0,0,0,1,0,1),o(0,0,0,2,0,1),o(1,0,0,1,-1,1),o(1,0,0,2,-1,1),o(0,1,0,0,-1,1),o(0,1,0,2,-1,1),o(0,0,1,0,-1,1),o(0,0,1,1,-1,1);var l=n(t,r),c=i(t,[{type:t.FLOAT,buffer:l,size:3,offset:0,stride:28},{type:t.FLOAT,buffer:l,size:3,offset:12,stride:28},{type:t.FLOAT,buffer:l,size:1,offset:24,stride:28}]),u=a(t);u.attributes.position.location=0,u.attributes.color.location=1,u.attributes.weight.location=2;var f=new s(t,l,c,u);return f.update(e),f};var o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n,this.pixelRatio=1,this.bounds=[[-1e3,-1e3,-1e3],[1e3,1e3,1e3]],this.position=[0,0,0],this.lineWidth=[2,2,2],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.enabled=[!0,!0,!0],this.drawSides=[!0,!0,!0],this.axes=null}var l=s.prototype,c=[0,0,0],u=[0,0,0],f=[0,0];l.isTransparent=function(){return!1},l.drawTransparent=function(t){},l.draw=function(t){var e=this.gl,r=this.vao,n=this.shader;r.bind(),n.bind();var i,a=t.model||o,s=t.view||o,l=t.projection||o;this.axes&&(i=this.axes.lastCubeProps.axis);for(var h=c,p=u,d=0;d<3;++d)i&&i[d]<0?(h[d]=this.bounds[0][d],p[d]=this.bounds[1][d]):(h[d]=this.bounds[1][d],p[d]=this.bounds[0][d]);f[0]=e.drawingBufferWidth,f[1]=e.drawingBufferHeight,n.uniforms.model=a,n.uniforms.view=s,n.uniforms.projection=l,n.uniforms.coordinates=[this.position,h,p],n.uniforms.colors=this.colors,n.uniforms.screenShape=f;for(d=0;d<3;++d)n.uniforms.lineWidth=this.lineWidth[d]*this.pixelRatio,this.enabled[d]&&(r.draw(e.TRIANGLES,6,6*d),this.drawSides[d]&&r.draw(e.TRIANGLES,12,18+12*d));r.unbind()},l.update=function(t){t&&(\"bounds\"in t&&(this.bounds=t.bounds),\"position\"in t&&(this.position=t.position),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"colors\"in t&&(this.colors=t.colors),\"enabled\"in t&&(this.enabled=t.enabled),\"drawSides\"in t&&(this.drawSides=t.drawSides))},l.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{\"./shaders/index\":298,\"gl-buffer\":231,\"gl-vao\":313}],300:[function(t,e,r){arguments[4][233][0].apply(r,arguments)},{barycentric:62,dup:233,\"polytope-closest-point/lib/closest_point_2d.js\":467}],301:[function(t,e,r){var n=t(\"glslify\"),i=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat inverse(float m) {\\n  return 1.0 / m;\\n}\\n\\nmat2 inverse(mat2 m) {\\n  return mat2(m[1][1],-m[0][1],\\n             -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\\n}\\n\\nmat3 inverse(mat3 m) {\\n  float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\\n  float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\\n  float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\\n\\n  float b01 = a22 * a11 - a12 * a21;\\n  float b11 = -a22 * a10 + a12 * a20;\\n  float b21 = a21 * a10 - a11 * a20;\\n\\n  float det = a00 * b01 + a01 * b11 + a02 * b21;\\n\\n  return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\\n              b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\\n              b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\\n}\\n\\nmat4 inverse(mat4 m) {\\n  float\\n      a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\\n      a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\\n      a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\\n      a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\\n\\n      b00 = a00 * a11 - a01 * a10,\\n      b01 = a00 * a12 - a02 * a10,\\n      b02 = a00 * a13 - a03 * a10,\\n      b03 = a01 * a12 - a02 * a11,\\n      b04 = a01 * a13 - a03 * a11,\\n      b05 = a02 * a13 - a03 * a12,\\n      b06 = a20 * a31 - a21 * a30,\\n      b07 = a20 * a32 - a22 * a30,\\n      b08 = a20 * a33 - a23 * a30,\\n      b09 = a21 * a32 - a22 * a31,\\n      b10 = a21 * a33 - a23 * a31,\\n      b11 = a22 * a33 - a23 * a32,\\n\\n      det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\\n\\n  return mat4(\\n      a11 * b11 - a12 * b10 + a13 * b09,\\n      a02 * b10 - a01 * b11 - a03 * b09,\\n      a31 * b05 - a32 * b04 + a33 * b03,\\n      a22 * b04 - a21 * b05 - a23 * b03,\\n      a12 * b08 - a10 * b11 - a13 * b07,\\n      a00 * b11 - a02 * b08 + a03 * b07,\\n      a32 * b02 - a30 * b05 - a33 * b01,\\n      a20 * b05 - a22 * b02 + a23 * b01,\\n      a10 * b10 - a11 * b08 + a13 * b06,\\n      a01 * b08 - a00 * b10 - a03 * b06,\\n      a30 * b04 - a31 * b02 + a33 * b00,\\n      a21 * b02 - a20 * b04 - a23 * b00,\\n      a11 * b07 - a10 * b09 - a12 * b06,\\n      a00 * b09 - a01 * b07 + a02 * b06,\\n      a31 * b01 - a30 * b03 - a32 * b00,\\n      a20 * b03 - a21 * b01 + a22 * b00) / det;\\n}\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the tube vertex and normal at the given index.\\n//\\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\\n//\\n// Each tube segment is made up of a ring of vertices.\\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\\n// The indexes of tube segments run from 0 to 8.\\n//\\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\\n  float segmentCount = 8.0;\\n\\n  float angle = 2.0 * 3.14159 * (index / segmentCount);\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d);\\n  vec3 y = v * sin(angle) * length(d);\\n  vec3 v3 = x + y;\\n\\n  normal = normalize(v3);\\n\\n  return v3;\\n}\\n\\nattribute vec4 vector;\\nattribute vec4 color, position;\\nattribute vec2 uv;\\nuniform float tubeScale;\\n\\nuniform mat4 model\\n           , view\\n           , projection;\\nuniform vec3 eyePosition\\n           , lightPosition;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data\\n           , f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n  // Scale the vector magnitude to stay constant with\\n  // model & view changes.\\n  vec3 normal;\\n  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\\n  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n  normal = normalize(normal * inverse(mat3(model)));\\n\\n  gl_Position      = projection * view * tubePosition;\\n  f_color          = color;\\n  f_normal         = normal;\\n  f_data           = tubePosition.xyz;\\n  f_position       = position.xyz;\\n  f_eyeDirection   = eyePosition   - tubePosition.xyz;\\n  f_lightDirection = lightPosition - tubePosition.xyz;\\n  f_uv             = uv;\\n}\\n\"]),a=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat cookTorranceSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness,\\n  float fresnel) {\\n\\n  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n  //Half angle vector\\n  vec3 H = normalize(lightDirection + viewDirection);\\n\\n  //Geometric term\\n  float NdotH = max(dot(surfaceNormal, H), 0.0);\\n  float VdotH = max(dot(viewDirection, H), 0.000001);\\n  float LdotH = max(dot(lightDirection, H), 0.000001);\\n  float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n  float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n  float G = min(1.0, min(G1, G2));\\n  \\n  //Distribution term\\n  float D = beckmannDistribution(NdotH, roughness);\\n\\n  //Fresnel term\\n  float F = pow(1.0 - VdotN, fresnel);\\n\\n  //Multiply terms and done\\n  return  G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness\\n            , fresnel\\n            , kambient\\n            , kdiffuse\\n            , kspecular\\n            , opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal\\n           , f_lightDirection\\n           , f_eyeDirection\\n           , f_data\\n           , f_position;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  vec3 N = normalize(f_normal);\\n  vec3 L = normalize(f_lightDirection);\\n  vec3 V = normalize(f_eyeDirection);\\n\\n  if(!gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = cookTorranceSpecular(L, V, N, roughness, fresnel);\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  vec4 surfaceColor =  texture2D(texture, f_uv);\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = litColor * opacity;\\n}\"]),o=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvec3 getOrthogonalVector(vec3 v) {\\n  // Return up-vector for only-z vector.\\n  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\\n  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.\\n  // Assign z = 0, x = -b, y = a:\\n  // a*-b + b*a + c*0 = -ba + ba + 0 = 0\\n  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\\n    return normalize(vec3(-v.y, v.x, 0.0));\\n  } else {\\n    return normalize(vec3(0.0, v.z, -v.y));\\n  }\\n}\\n\\n// Calculate the tube vertex and normal at the given index.\\n//\\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\\n//\\n// Each tube segment is made up of a ring of vertices.\\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\\n// The indexes of tube segments run from 0 to 8.\\n//\\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\\n  float segmentCount = 8.0;\\n\\n  float angle = 2.0 * 3.14159 * (index / segmentCount);\\n\\n  vec3 u = getOrthogonalVector(d);\\n  vec3 v = normalize(cross(u, d));\\n\\n  vec3 x = u * cos(angle) * length(d);\\n  vec3 y = v * sin(angle) * length(d);\\n  vec3 v3 = x + y;\\n\\n  normal = normalize(v3);\\n\\n  return v3;\\n}\\n\\nattribute vec4 vector;\\nattribute vec4 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform float tubeScale;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  vec3 normal;\\n  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\\n  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\\n\\n  gl_Position = projection * view * tubePosition;\\n  f_id        = id;\\n  f_position  = position.xyz;\\n}\\n\"]),s=n([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3  clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\\n\\n  gl_FragColor = vec4(pickId, f_id.xyz);\\n}\"]);r.meshShader={vertex:i,fragment:a,attributes:[{name:\"position\",type:\"vec4\"},{name:\"normal\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"},{name:\"vector\",type:\"vec4\"}]},r.pickShader={vertex:o,fragment:s,attributes:[{name:\"position\",type:\"vec4\"},{name:\"id\",type:\"vec4\"},{name:\"vector\",type:\"vec4\"}]}},{glslify:395}],302:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=t(\"gl-texture2d\"),s=t(\"normals\"),l=t(\"gl-mat4/multiply\"),c=t(\"gl-mat4/invert\"),u=t(\"ndarray\"),f=t(\"colormap\"),h=t(\"simplicial-complex-contour\"),p=t(\"typedarray-pool\"),d=t(\"./shaders\"),g=(t(\"./closest-point\"),d.meshShader),v=d.pickShader,m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function y(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,v,y,x,b,_,w,k,A,M,T,S,C){this.gl=t,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleVectors=c,this.triangleColors=f,this.triangleNormals=p,this.triangleUVs=h,this.triangleIds=u,this.triangleVAO=d,this.triangleCount=0,this.lineWidth=1,this.edgePositions=g,this.edgeColors=y,this.edgeUVs=x,this.edgeIds=v,this.edgeVAO=b,this.edgeCount=0,this.pointPositions=_,this.pointColors=k,this.pointUVs=A,this.pointSizes=M,this.pointIds=w,this.pointVAO=T,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=S,this.contourVAO=C,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!1,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.tubeScale=1,this._model=m,this._view=m,this._projection=m,this._resolution=[1,1]}var x=y.prototype;function b(t){var e=n(t,v.vertex,v.fragment,null,v.attributes);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.vector.location=5,e}x.isOpaque=function(){return this.opacity>=1},x.isTransparent=function(){return this.opacity<1},x.pickSlots=1,x.setPickBase=function(t){this.pickId=t},x.highlight=function(t){if(t&&this.contourEnable){for(var e=h(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=p.mallocFloat32(6*a),s=0,l=0;l<a;++l)for(var c=r[l],u=0;u<2;++u){var f=c[0];2===c.length&&(f=c[u]);for(var d=n[f][0],g=n[f][1],v=i[f],m=1-v,y=this.positions[d],x=this.positions[g],b=0;b<3;++b)o[s++]=v*y[b]+m*x[b]}this.contourCount=s/3|0,this.contourPositions.update(o.subarray(0,s)),p.free(o)}else this.contourCount=0},x.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,\"contourEnable\"in t&&(this.contourEnable=t.contourEnable),\"contourColor\"in t&&(this.contourColor=t.contourColor),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"lightPosition\"in t&&(this.lightPosition=t.lightPosition),\"opacity\"in t&&(this.opacity=t.opacity),\"ambient\"in t&&(this.ambientLight=t.ambient),\"diffuse\"in t&&(this.diffuseLight=t.diffuse),\"specular\"in t&&(this.specularLight=t.specular),\"roughness\"in t&&(this.roughness=t.roughness),\"fresnel\"in t&&(this.fresnel=t.fresnel),t.texture?(this.texture.dispose(),this.texture=o(e,t.texture)):t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(function(t){for(var e=f({colormap:t,nshades:256,format:\"rgba\"}),r=new Uint8Array(1024),n=0;n<256;++n){for(var i=e[n],a=0;a<3;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return u(r,[256,256,4],[4,0,1])}(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions,i=t.vectors;if(n&&r&&i){void 0!==t.tubeScale&&(this.tubeScale=t.tubeScale);var a=[],l=[],c=[],h=[],p=[],d=[],g=[],v=[],m=[],y=[],x=[],b=[],_=[],w=[],k=[];this.cells=r,this.positions=n,this.vectors=i;var A=t.vertexNormals,M=t.cellNormals,T=void 0===t.vertexNormalsEpsilon?1e-6:t.vertexNormalsEpsilon,S=void 0===t.faceNormalsEpsilon?1e-6:t.faceNormalsEpsilon;t.useFacetNormals&&!M&&(M=s.faceNormals(r,n,S)),M||A||(A=s.vertexNormals(r,n,T));var C=t.vertexColors,E=t.cellColors,L=t.meshColor||[1,1,1,1],z=t.vertexUVs,O=t.vertexIntensity,I=t.cellUVs,D=t.cellIntensity,P=1/0,R=-1/0;if(!z&&!I)if(O)if(t.vertexIntensityBounds)P=+t.vertexIntensityBounds[0],R=+t.vertexIntensityBounds[1];else for(var F=0;F<O.length;++F){var B=O[F];P=Math.min(P,B),R=Math.max(R,B)}else if(D)for(F=0;F<D.length;++F){B=D[F];P=Math.min(P,B),R=Math.max(R,B)}else for(F=0;F<n.length;++F){B=n[F][2];P=Math.min(P,B),R=Math.max(R,B)}this.intensity=O||(D?function(t,e,r){for(var n=new Array(e),i=0;i<e;++i)n[i]=0;var a=t.length;for(i=0;i<a;++i)for(var o=t[i],s=0;s<o.length;++s)n[o[s]]=r[i];return n}(r,n.length,D):function(t){for(var e=t.length,r=new Array(e),n=0;n<e;++n)r[n]=t[n][2];return r}(n));var N=t.pointSizes,j=t.pointSize||1;this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];for(F=0;F<n.length;++F)for(var V=n[F],U=0;U<3;++U)!isNaN(V[U])&&isFinite(V[U])&&(this.bounds[0][U]=Math.min(this.bounds[0][U],V[U]),this.bounds[1][U]=Math.max(this.bounds[1][U],V[U]));var q=0,H=0,G=0;t:for(F=0;F<r.length;++F){var W=r[F];switch(W.length){case 1:for(V=n[X=W[0]],U=0;U<3;++U)if(isNaN(V[U])||!isFinite(V[U]))continue t;x.push(V[0],V[1],V[2],V[3]),3===(Z=C?C[X]:E?E[F]:L).length?b.push(Z[0],Z[1],Z[2],1):b.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],_.push($[0],$[1]),N?w.push(N[X]):w.push(j),k.push(F),G+=1;break;case 2:for(U=0;U<2;++U){V=n[X=W[U]];for(var Y=0;Y<3;++Y)if(isNaN(V[Y])||!isFinite(V[Y]))continue t}for(U=0;U<2;++U){V=n[X=W[U]];g.push(V[0],V[1],V[2]),3===(Z=C?C[X]:E?E[F]:L).length?v.push(Z[0],Z[1],Z[2],1):v.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],m.push($[0],$[1]),y.push(F)}H+=1;break;case 3:for(U=0;U<3;++U)for(V=n[X=W[U]],Y=0;Y<3;++Y)if(isNaN(V[Y])||!isFinite(V[Y]))continue t;for(U=0;U<3;++U){var X;V=n[X=W[U]];a.push(V[0],V[1],V[2],V[3]);var Z,$,J,K=i[X];l.push(K[0],K[1],K[2],K[3]),3===(Z=C?C[X]:E?E[F]:L).length?c.push(Z[0],Z[1],Z[2],1):c.push(Z[0],Z[1],Z[2],Z[3]),$=z?z[X]:O?[(O[X]-P)/(R-P),0]:I?I[F]:D?[(D[F]-P)/(R-P),0]:[(V[2]-P)/(R-P),0],p.push($[0],$[1]),J=A?A[X]:M[F],h.push(J[0],J[1],J[2]),d.push(F)}q+=1}}this.pointCount=G,this.edgeCount=H,this.triangleCount=q,this.pointPositions.update(x),this.pointColors.update(b),this.pointUVs.update(_),this.pointSizes.update(w),this.pointIds.update(new Uint32Array(k)),this.edgePositions.update(g),this.edgeColors.update(v),this.edgeUVs.update(m),this.edgeIds.update(new Uint32Array(y)),this.trianglePositions.update(a),this.triangleVectors.update(l),this.triangleColors.update(c),this.triangleUVs.update(p),this.triangleNormals.update(h),this.triangleIds.update(new Uint32Array(d))}},x.drawTransparent=x.draw=function(t){t=t||{};for(var e=this.gl,r=t.model||m,n=t.view||m,i=t.projection||m,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);var s={model:r,view:n,projection:i,clipBounds:a,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],opacity:this.opacity,tubeScale:this.tubeScale,contourColor:this.contourColor,texture:0};this.texture.bind(0);var u=new Array(16);l(u,s.view,s.model),l(u,s.projection,u),c(u,u);for(o=0;o<3;++o)s.eyePosition[o]=u[12+o]/u[15];var f,h=u[15];for(o=0;o<3;++o)h+=this.lightPosition[o]*u[4*o+3];for(o=0;o<3;++o){for(var p=u[12+o],d=0;d<3;++d)p+=u[4*d+o]*this.lightPosition[d];s.lightPosition[o]=p/h}this.triangleCount>0&&((f=this.triShader).bind(),f.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind());this.edgeCount>0&&this.lineWidth>0&&((f=this.lineShader).bind(),f.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind());this.pointCount>0&&((f=this.pointShader).bind(),f.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind());this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((f=this.contourShader).bind(),f.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},x.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||m,n=t.view||m,i=t.projection||m,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,tubeScale:this.tubeScale,pickId:this.pickId/255};((s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0)&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},x.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions[r[1]].slice(0,3);return{index:e,position:n,intensity:this.intensity[r[1]],velocity:this.vectors[r[1]].slice(0,3),divergence:this.vectors[r[1]][3],dataCoordinate:n}},x.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleNormals.dispose(),this.triangleIds.dispose(),this.edgeVAO.dispose(),this.edgePositions.dispose(),this.edgeColors.dispose(),this.edgeUVs.dispose(),this.edgeIds.dispose(),this.pointVAO.dispose(),this.pointPositions.dispose(),this.pointColors.dispose(),this.pointUVs.dispose(),this.pointSizes.dispose(),this.pointIds.dispose(),this.contourVAO.dispose(),this.contourPositions.dispose()},e.exports=function(t,e){1===arguments.length&&(t=(e=t).gl);var r=e.triShader||function(t){var e=n(t,g.vertex,g.fragment,null,g.attributes);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.vector.location=5,e}(t),s=b(t),l=o(t,u(new Uint8Array([255,255,255,255]),[1,1,4]));l.generateMipmap(),l.minFilter=t.LINEAR_MIPMAP_LINEAR,l.magFilter=t.LINEAR;var c=i(t),f=i(t),h=i(t),p=i(t),d=i(t),v=i(t),m=a(t,[{buffer:c,type:t.FLOAT,size:4},{buffer:v,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:h,type:t.FLOAT,size:4},{buffer:p,type:t.FLOAT,size:2},{buffer:d,type:t.FLOAT,size:3},{buffer:f,type:t.FLOAT,size:4}]),x=i(t),_=i(t),w=i(t),k=i(t),A=a(t,[{buffer:x,type:t.FLOAT,size:3},{buffer:k,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:_,type:t.FLOAT,size:4},{buffer:w,type:t.FLOAT,size:2}]),M=i(t),T=i(t),S=i(t),C=i(t),E=i(t),L=a(t,[{buffer:M,type:t.FLOAT,size:3},{buffer:E,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:T,type:t.FLOAT,size:4},{buffer:S,type:t.FLOAT,size:2},{buffer:C,type:t.FLOAT,size:1}]),z=i(t),O=new y(t,l,r,null,null,s,null,null,c,f,v,h,p,d,m,x,k,_,w,A,M,E,T,S,C,L,z,a(t,[{buffer:z,type:t.FLOAT,size:3}]));return O.update(e),O}},{\"./closest-point\":300,\"./shaders\":301,colormap:115,\"gl-buffer\":231,\"gl-mat4/invert\":256,\"gl-mat4/multiply\":258,\"gl-shader\":290,\"gl-texture2d\":308,\"gl-vao\":313,ndarray:436,normals:439,\"simplicial-complex-contour\":496,\"typedarray-pool\":523}],303:[function(t,e,r){\"use strict\";var n=t(\"gl-vec3\"),i=t(\"gl-vec4\"),a=function(t,e,r,a){for(var o=0,s=0;s<t.length;s++)for(var l=t[s].velocities,c=0;c<l.length;c++){var u=n.length(l[c]);u>o&&(o=u)}var f=t.map(function(t){return function(t,e,r,a){var o,s,l,c=t.points,u=t.velocities,f=t.divergences;n.set(n.create(),0,1,0),n.create(),n.create();n.create();for(var h=[],p=[],d=[],g=[],v=[],m=[],y=0,x=0,b=i.create(),_=i.create(),w=0;w<c.length;w++){o=c[w],s=u[w],l=f[w],0===e&&(l=.05*r),x=n.length(s)/a,b=i.create(),n.copy(b,s),b[3]=l;for(var k=0;k<8;k++)v[k]=[o[0],o[1],o[2],k];if(g.length>0)for(k=0;k<8;k++){var A=(k+1)%8;h.push(g[k],v[k],v[A],v[A],g[A],g[k]),d.push(_,b,b,b,_,_),m.push(y,x,x,x,y,y),p.push([h.length-6,h.length-5,h.length-4],[h.length-3,h.length-2,h.length-1])}var M=g;g=v,v=M,M=_,_=b,b=M,M=y,y=x,x=M}return{positions:h,cells:p,vectors:d,vertexIntensity:m}}(t,r,a,o)}),h=[],p=[],d=[],g=[];for(s=0;s<f.length;s++){var v=f[s],m=h.length;h=h.concat(v.positions),d=d.concat(v.vectors),g=g.concat(v.vertexIntensity);for(c=0;c<v.cells.length;c++){var y=v.cells[c],x=[];p.push(x);for(var b=0;b<y.length;b++)x.push(y[b]+m)}}return{positions:h,cells:p,vectors:d,vertexIntensity:g,colormap:e}},o=function(t,e){var r=n.create(),i=1e-4;n.add(r,t,[i,0,0]);var a=this.getVelocity(r);n.subtract(a,a,e),n.scale(a,a,1e4),n.add(r,t,[0,i,0]);var o=this.getVelocity(r);n.subtract(o,o,e),n.scale(o,o,1e4),n.add(r,t,[0,0,i]);var s=this.getVelocity(r);return n.subtract(s,s,e),n.scale(s,s,1e4),n.add(r,a,o),n.add(r,r,s),r},s=function(t){return h(t,this.vectors,this.meshgrid,this.clampBorders)},l=function(t,e){for(var r=0;r<t.length;r++){var n=t[r];if(n===e)return r;if(n>e)return r-1}return r},c=n.create(),u=n.create(),f=function(t,e,r){return t<e?e:t>r?r:t},h=function(t,e,r,i){var a=t[0],o=t[1],s=t[2],h=r[0].length,p=r[1].length,d=r[2].length,g=l(r[0],a),v=l(r[1],o),m=l(r[2],s),y=g+1,x=v+1,b=m+1;if(r[0][g]===a&&(y=g),r[1][v]===o&&(x=v),r[2][m]===s&&(b=m),i&&(g=f(g,0,h-1),y=f(y,0,h-1),v=f(v,0,p-1),x=f(x,0,p-1),m=f(m,0,d-1),b=f(b,0,d-1)),g<0||v<0||m<0||y>=h||x>=p||b>=d)return n.create();var _=(a-r[0][g])/(r[0][y]-r[0][g]),w=(o-r[1][v])/(r[1][x]-r[1][v]),k=(s-r[2][m])/(r[2][b]-r[2][m]);(_<0||_>1||isNaN(_))&&(_=0),(w<0||w>1||isNaN(w))&&(w=0),(k<0||k>1||isNaN(k))&&(k=0);var A=m*h*p,M=b*h*p,T=v*h,S=x*h,C=g,E=y,L=e[T+A+C],z=e[T+A+E],O=e[S+A+C],I=e[S+A+E],D=e[T+M+C],P=e[T+M+E],R=e[S+M+C],F=e[S+M+E],B=n.create();return n.lerp(B,L,z,_),n.lerp(c,O,I,_),n.lerp(B,B,c,w),n.lerp(c,D,P,_),n.lerp(u,R,F,_),n.lerp(c,c,u,w),n.lerp(B,B,c,k),B},p=function(t){var e=1/0;t.sort(function(t,e){return t-e});for(var r=1;r<t.length;r++){var n=Math.abs(t[r]-t[r-1]);n<e&&(e=n)}return e};e.exports=function(t,e){var r=t.startingPositions,i=t.maxLength||1e3,l=t.tubeSize||1,c=t.absoluteTubeSize;t.getDivergence||(t.getDivergence=o),t.getVelocity||(t.getVelocity=s),void 0===t.clampBorders&&(t.clampBorders=!0);var u=[],f=e[0][0],h=e[0][1],d=e[0][2],g=e[1][0],v=e[1][1],m=e[1][2],y=function(t,e){var r=e[0],n=e[1],i=e[2];return r>=f&&r<=g&&n>=h&&n<=v&&i>=d&&i<=m},x=10*n.distance(e[0],e[1])/i,b=x*x,_=1,w=0;n.create();r.length>=2&&(_=function(t){for(var e=[],r=[],n=[],i={},a={},o={},s=0;s<t.length;s++){var l=t[s],c=l[0],u=l[1],f=l[2];i[c]||(e.push(c),i[c]=!0),a[u]||(r.push(u),a[u]=!0),o[f]||(n.push(f),o[f]=!0)}var h=p(e),d=p(r),g=p(n),v=Math.min(h,d,g);return isFinite(v)?v:1}(r));for(var k=0;k<r.length;k++){var A=n.create();n.copy(A,r[k]);var M=[A],T=[],S=t.getVelocity(A),C=A;T.push(S);var E=[],L=t.getDivergence(A,S);(D=n.length(L))>w&&!isNaN(D)&&isFinite(D)&&(w=D),E.push(D),u.push({points:M,velocities:T,divergences:E});for(var z=0;z<100*i&&M.length<i&&y(0,A);){z++;var O=n.clone(S),I=n.squaredLength(O);if(0===I)break;if(I>b&&n.scale(O,O,x/Math.sqrt(I)),n.add(O,O,A),S=t.getVelocity(O),n.squaredDistance(C,O)-b>-1e-4*b){M.push(O),C=O,T.push(S);L=t.getDivergence(O,S);(D=n.length(L))>w&&!isNaN(D)&&isFinite(D)&&(w=D),E.push(D)}A=O}}for(k=0;k<E.length;k++){var D=E[k];!isNaN(D)&&isFinite(D)||(E[k]=w)}var P=a(u,t.colormap,w,_);return c?P.tubeScale=c:(0===w&&(w=1),P.tubeScale=.5*l*_/w),P},e.exports.createTubeMesh=t(\"./lib/tubemesh\")},{\"./lib/tubemesh\":302,\"gl-vec3\":332,\"gl-vec4\":368}],304:[function(t,e,r){var n=t(\"gl-shader\"),i=t(\"glslify\"),a=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute vec3 f;\\nattribute vec3 normal;\\n\\nuniform vec3 objectOffset;\\nuniform mat4 model, view, projection, inverseModel;\\nuniform vec3 lightPosition, eyePosition;\\nuniform sampler2D colormap;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  vec3 localCoordinate = vec3(uv.zw, f.x);\\n  worldCoordinate = objectOffset + localCoordinate;\\n  vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\\n  vec4 clipPosition = projection * view * worldPosition;\\n  gl_Position = clipPosition;\\n  kill = f.y;\\n  value = f.z;\\n  planeCoordinate = uv.xy;\\n\\n  vColor = texture2D(colormap, vec2(value, value));\\n\\n  //Lighting geometry parameters\\n  vec4 cameraCoordinate = view * worldPosition;\\n  cameraCoordinate.xyz /= cameraCoordinate.w;\\n  lightDirection = lightPosition - cameraCoordinate.xyz;\\n  eyeDirection   = eyePosition - cameraCoordinate.xyz;\\n  surfaceNormal  = normalize((vec4(normal,0) * inverseModel).xyz);\\n}\\n\"]),o=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution(float x, float roughness) {\\n  float NdotH = max(x, 0.0001);\\n  float cos2Alpha = NdotH * NdotH;\\n  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n  float roughness2 = roughness * roughness;\\n  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n  return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\nfloat beckmannSpecular(\\n  vec3 lightDirection,\\n  vec3 viewDirection,\\n  vec3 surfaceNormal,\\n  float roughness) {\\n  return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness);\\n}\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec3 lowerBound, upperBound;\\nuniform float contourTint;\\nuniform vec4 contourColor;\\nuniform sampler2D colormap;\\nuniform vec3 clipBounds[2];\\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\\nuniform float vertexColor;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  if ((kill > 0.0) ||\\n      (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\\n\\n  vec3 N = normalize(surfaceNormal);\\n  vec3 V = normalize(eyeDirection);\\n  vec3 L = normalize(lightDirection);\\n\\n  if(gl_FrontFacing) {\\n    N = -N;\\n  }\\n\\n  float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\\n  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n  //decide how to interpolate color \\u2014 in vertex or in fragment\\n  vec4 surfaceColor =\\n    step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +\\n    step(.5, vertexColor) * vColor;\\n\\n  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);\\n\\n  gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\\n}\\n\"]),s=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute float f;\\n\\nuniform vec3 objectOffset;\\nuniform mat3 permutation;\\nuniform mat4 model, view, projection;\\nuniform float height, zOffset;\\nuniform sampler2D colormap;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\nvarying vec4 vColor;\\n\\nvoid main() {\\n  vec3 dataCoordinate = permutation * vec3(uv.xy, height);\\n  worldCoordinate = objectOffset + dataCoordinate;\\n  vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\\n\\n  vec4 clipPosition = projection * view * worldPosition;\\n  clipPosition.z += zOffset;\\n\\n  gl_Position = clipPosition;\\n  value = f + objectOffset.z;\\n  kill = -1.0;\\n  planeCoordinate = uv.zw;\\n\\n  vColor = texture2D(colormap, vec2(value, value));\\n\\n  //Don't do lighting for contours\\n  surfaceNormal   = vec3(1,0,0);\\n  eyeDirection    = vec3(0,1,0);\\n  lightDirection  = vec3(0,0,1);\\n}\\n\"]),l=i([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nbool outOfRange(float a, float b, float p) {\\n  return ((p > max(a, b)) || \\n          (p < min(a, b)));\\n}\\n\\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y));\\n}\\n\\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\\n  return (outOfRange(a.x, b.x, p.x) ||\\n          outOfRange(a.y, b.y, p.y) ||\\n          outOfRange(a.z, b.z, p.z));\\n}\\n\\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\\n  return outOfRange(a.xyz, b.xyz, p.xyz);\\n}\\n\\nuniform vec2 shape;\\nuniform vec3 clipBounds[2];\\nuniform float pickId;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 surfaceNormal;\\n\\nvec2 splitFloat(float v) {\\n  float vh = 255.0 * v;\\n  float upper = floor(vh);\\n  float lower = fract(vh);\\n  return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\\n}\\n\\nvoid main() {\\n  if ((kill > 0.0) ||\\n      (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\\n\\n  vec2 ux = splitFloat(planeCoordinate.x / shape.x);\\n  vec2 uy = splitFloat(planeCoordinate.y / shape.y);\\n  gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\\n}\\n\"]);r.createShader=function(t){var e=n(t,a,o,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createPickShader=function(t){var e=n(t,a,l,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createContourShader=function(t){var e=n(t,s,o,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"float\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e},r.createPickContourShader=function(t){var e=n(t,s,l,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"float\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e}},{\"gl-shader\":290,glslify:395}],305:[function(t,e,r){arguments[4][100][0].apply(r,arguments)},{dup:100}],306:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.gl,r=y(e),n=b(e),s=x(e),l=_(e),c=i(e),u=a(e,[{buffer:c,size:4,stride:w,offset:0},{buffer:c,size:3,stride:w,offset:16},{buffer:c,size:3,stride:w,offset:28}]),f=i(e),h=a(e,[{buffer:f,size:4,stride:20,offset:0},{buffer:f,size:1,stride:20,offset:16}]),p=i(e),d=a(e,[{buffer:p,size:2,type:e.FLOAT}]),g=o(e,1,S,e.RGBA,e.UNSIGNED_BYTE);g.minFilter=e.LINEAR,g.magFilter=e.LINEAR;var v=new C(e,[0,0],[[0,0,0],[0,0,0]],r,n,c,u,g,s,l,f,h,p,d,[0,0,0]),m={levels:[[],[],[]]};for(var k in t)m[k]=t[k];return m.colormap=m.colormap||\"jet\",v.update(m),v};var n=t(\"bit-twiddle\"),i=t(\"gl-buffer\"),a=t(\"gl-vao\"),o=t(\"gl-texture2d\"),s=t(\"typedarray-pool\"),l=t(\"colormap\"),c=t(\"ndarray-ops\"),u=t(\"ndarray-pack\"),f=t(\"ndarray\"),h=t(\"surface-nets\"),p=t(\"gl-mat4/multiply\"),d=t(\"gl-mat4/invert\"),g=t(\"binary-search-bounds\"),v=t(\"ndarray-gradient\"),m=t(\"./lib/shaders\"),y=m.createShader,x=m.createContourShader,b=m.createPickShader,_=m.createPickContourShader,w=40,k=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],M=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];function T(t,e,r,n,i){this.position=t,this.index=e,this.uv=r,this.level=n,this.dataCoordinate=i}!function(){for(var t=0;t<3;++t){var e=M[t],r=(t+2)%3;e[(t+1)%3+0]=1,e[r+3]=1,e[t+6]=1}}();var S=256;function C(t,e,r,n,i,a,o,l,c,u,h,p,d,g,v){this.gl=t,this.shape=e,this.bounds=r,this.objectOffset=v,this.intensityBounds=[],this._shader=n,this._pickShader=i,this._coordinateBuffer=a,this._vao=o,this._colorMap=l,this._contourShader=c,this._contourPickShader=u,this._contourBuffer=h,this._contourVAO=p,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new T([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=d,this._dynamicVAO=g,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var E=C.prototype;E.isTransparent=function(){return this.opacity<1},E.isOpaque=function(){if(this.opacity>=1)return!0;for(var t=0;t<3;++t)if(this._contourCounts[t].length>0||this._dynamicCounts[t]>0)return!0;return!1},E.pickSlots=1,E.setPickBase=function(t){this.pickId=t};var L=[0,0,0],z={showSurface:!1,showContour:!1,projections:[k.slice(),k.slice(),k.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function O(t,e){var r,n,i,a=e.axes&&e.axes.lastCubeProps.axis||L,o=e.showSurface,s=e.showContour;for(r=0;r<3;++r)for(o=o||e.surfaceProject[r],n=0;n<3;++n)s=s||e.contourProject[r][n];for(r=0;r<3;++r){var l=z.projections[r];for(n=0;n<16;++n)l[n]=0;for(n=0;n<4;++n)l[5*n]=1;l[5*r]=0,l[12+r]=e.axesBounds[+(a[r]>0)][r],p(l,t.model,l);var c=z.clipBounds[r];for(i=0;i<2;++i)for(n=0;n<3;++n)c[i][n]=t.clipBounds[i][n];c[0][r]=-1e8,c[1][r]=1e8}return z.showSurface=o,z.showContour=s,z}var I={model:k,view:k,projection:k,inverseModel:k.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},D=k.slice(),P=[1,0,0,0,1,0,0,0,1];function R(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=I;n.model=t.model||k,n.view=t.view||k,n.projection=t.projection||k,n.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],n.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],n.objectOffset=this.objectOffset,n.contourColor=this.contourColor[0],n.inverseModel=d(n.inverseModel,n.model);for(var i=0;i<2;++i)for(var a=n.clipBounds[i],o=0;o<3;++o)a[o]=Math.min(Math.max(this.clipBounds[i][o],-1e8),1e8);n.kambient=this.ambientLight,n.kdiffuse=this.diffuseLight,n.kspecular=this.specularLight,n.roughness=this.roughness,n.fresnel=this.fresnel,n.opacity=this.opacity,n.height=0,n.permutation=P,n.vertexColor=this.vertexColor;var s=D;for(p(s,n.view,n.model),p(s,n.projection,s),d(s,s),i=0;i<3;++i)n.eyePosition[i]=s[12+i]/s[15];var l=s[15];for(i=0;i<3;++i)l+=this.lightPosition[i]*s[4*i+3];for(i=0;i<3;++i){var c=s[12+i];for(o=0;o<3;++o)c+=s[4*o+i]*this.lightPosition[o];n.lightPosition[i]=c/l}var u=O(n,this);if(u.showSurface&&e===this.opacity<1){for(this._shader.bind(),this._shader.uniforms=n,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(r.TRIANGLES,this._vertexCount),i=0;i<3;++i)this.surfaceProject[i]&&this.vertexCount&&(this._shader.uniforms.model=u.projections[i],this._shader.uniforms.clipBounds=u.clipBounds[i],this._vao.draw(r.TRIANGLES,this._vertexCount));this._vao.unbind()}if(u.showContour&&!e){var f=this._contourShader;n.kambient=1,n.kdiffuse=0,n.kspecular=0,n.opacity=1,f.bind(),f.uniforms=n;var h=this._contourVAO;for(h.bind(),i=0;i<3;++i)for(f.uniforms.permutation=M[i],r.lineWidth(this.contourWidth[i]),o=0;o<this.contourLevels[i].length;++o)o===this.highlightLevel[i]?(f.uniforms.contourColor=this.highlightColor[i],f.uniforms.contourTint=this.highlightTint[i]):0!==o&&o-1!==this.highlightLevel[i]||(f.uniforms.contourColor=this.contourColor[i],f.uniforms.contourTint=this.contourTint[i]),this._contourCounts[i][o]&&(f.uniforms.height=this.contourLevels[i][o],h.draw(r.LINES,this._contourCounts[i][o],this._contourOffsets[i][o]));for(i=0;i<3;++i)for(f.uniforms.model=u.projections[i],f.uniforms.clipBounds=u.clipBounds[i],o=0;o<3;++o)if(this.contourProject[i][o]){f.uniforms.permutation=M[o],r.lineWidth(this.contourWidth[o]);for(var g=0;g<this.contourLevels[o].length;++g)g===this.highlightLevel[o]?(f.uniforms.contourColor=this.highlightColor[o],f.uniforms.contourTint=this.highlightTint[o]):0!==g&&g-1!==this.highlightLevel[o]||(f.uniforms.contourColor=this.contourColor[o],f.uniforms.contourTint=this.contourTint[o]),f.uniforms.height=this.contourLevels[o][g],h.draw(r.LINES,this._contourCounts[o][g],this._contourOffsets[o][g])}for(h.unbind(),(h=this._dynamicVAO).bind(),i=0;i<3;++i)if(0!==this._dynamicCounts[i])for(f.uniforms.model=n.model,f.uniforms.clipBounds=n.clipBounds,f.uniforms.permutation=M[i],r.lineWidth(this.dynamicWidth[i]),f.uniforms.contourColor=this.dynamicColor[i],f.uniforms.contourTint=this.dynamicTint[i],f.uniforms.height=this.dynamicLevel[i],h.draw(r.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]),o=0;o<3;++o)this.contourProject[o][i]&&(f.uniforms.model=u.projections[o],f.uniforms.clipBounds=u.clipBounds[o],h.draw(r.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]));h.unbind()}}E.draw=function(t){return R.call(this,t,!1)},E.drawTransparent=function(t){return R.call(this,t,!0)};var F={model:k,view:k,projection:k,inverseModel:k,clipBounds:[[0,0,0],[0,0,0]],height:0,shape:[0,0],pickId:0,lowerBound:[0,0,0],upperBound:[0,0,0],zOffset:0,objectOffset:[0,0,0],permutation:[1,0,0,0,1,0,0,0,1],lightPosition:[0,0,0],eyePosition:[0,0,0]};function B(t,e){return Array.isArray(t)?[e(t[0]),e(t[1]),e(t[2])]:[e(t),e(t),e(t)]}function N(t){return Array.isArray(t)?3===t.length?[t[0],t[1],t[2],1]:[t[0],t[1],t[2],t[3]]:[0,0,0,1]}function j(t){if(Array.isArray(t)){if(Array.isArray(t))return[N(t[0]),N(t[1]),N(t[2])];var e=N(t);return[e.slice(),e.slice(),e.slice()]}}E.drawPick=function(t){t=t||{};var e=this.gl;e.disable(e.CULL_FACE);var r=F;r.model=t.model||k,r.view=t.view||k,r.projection=t.projection||k,r.shape=this._field[2].shape,r.pickId=this.pickId/255,r.lowerBound=this.bounds[0],r.upperBound=this.bounds[1],r.objectOffset=this.objectOffset,r.permutation=P;for(var n=0;n<2;++n)for(var i=r.clipBounds[n],a=0;a<3;++a)i[a]=Math.min(Math.max(this.clipBounds[n][a],-1e8),1e8);var o=O(r,this);if(o.showSurface){for(this._pickShader.bind(),this._pickShader.uniforms=r,this._vao.bind(),this._vao.draw(e.TRIANGLES,this._vertexCount),n=0;n<3;++n)this.surfaceProject[n]&&(this._pickShader.uniforms.model=o.projections[n],this._pickShader.uniforms.clipBounds=o.clipBounds[n],this._vao.draw(e.TRIANGLES,this._vertexCount));this._vao.unbind()}if(o.showContour){var s=this._contourPickShader;s.bind(),s.uniforms=r;var l=this._contourVAO;for(l.bind(),a=0;a<3;++a)for(e.lineWidth(this.contourWidth[a]),s.uniforms.permutation=M[a],n=0;n<this.contourLevels[a].length;++n)this._contourCounts[a][n]&&(s.uniforms.height=this.contourLevels[a][n],l.draw(e.LINES,this._contourCounts[a][n],this._contourOffsets[a][n]));for(n=0;n<3;++n)for(s.uniforms.model=o.projections[n],s.uniforms.clipBounds=o.clipBounds[n],a=0;a<3;++a)if(this.contourProject[n][a]){s.uniforms.permutation=M[a],e.lineWidth(this.contourWidth[a]);for(var c=0;c<this.contourLevels[a].length;++c)this._contourCounts[a][c]&&(s.uniforms.height=this.contourLevels[a][c],l.draw(e.LINES,this._contourCounts[a][c],this._contourOffsets[a][c]))}l.unbind()}},E.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=this._field[2].shape,r=this._pickResult,n=e[0]*(t.value[0]+(t.value[2]>>4)/16)/255,i=Math.floor(n),a=n-i,o=e[1]*(t.value[1]+(15&t.value[2])/16)/255,s=Math.floor(o),l=o-s;i+=1,s+=1;var c=r.position;c[0]=c[1]=c[2]=0;for(var u=0;u<2;++u)for(var f=u?a:1-a,h=0;h<2;++h)for(var p=i+u,d=s+h,v=f*(h?l:1-l),m=0;m<3;++m)c[m]+=this._field[m].get(p,d)*v;for(var y=this._pickResult.level,x=0;x<3;++x)if(y[x]=g.le(this.contourLevels[x],c[x]),y[x]<0)this.contourLevels[x].length>0&&(y[x]=0);else if(y[x]<this.contourLevels[x].length-1){var b=this.contourLevels[x][y[x]],_=this.contourLevels[x][y[x]+1];Math.abs(b-c[x])>Math.abs(_-c[x])&&(y[x]+=1)}for(r.index[0]=a<.5?i:i+1,r.index[1]=l<.5?s:s+1,r.uv[0]=n/e[0],r.uv[1]=o/e[1],m=0;m<3;++m)r.dataCoordinate[m]=this._field[m].get(r.index[0],r.index[1]);return r},E.padField=function(t,e){var r=e.shape.slice(),n=t.shape.slice();c.assign(t.lo(1,1).hi(r[0],r[1]),e),c.assign(t.lo(1).hi(r[0],1),e.hi(r[0],1)),c.assign(t.lo(1,n[1]-1).hi(r[0],1),e.lo(0,r[1]-1).hi(r[0],1)),c.assign(t.lo(0,1).hi(1,r[1]),e.hi(1)),c.assign(t.lo(n[0]-1,1).hi(1,r[1]),e.lo(r[0]-1)),t.set(0,0,e.get(0,0)),t.set(0,n[1]-1,e.get(0,r[1]-1)),t.set(n[0]-1,0,e.get(r[0]-1,0)),t.set(n[0]-1,n[1]-1,e.get(r[0]-1,r[1]-1))},E.update=function(t){t=t||{},this.objectOffset=t.objectOffset||this.objectOffset,this.dirty=!0,\"contourWidth\"in t&&(this.contourWidth=B(t.contourWidth,Number)),\"showContour\"in t&&(this.showContour=B(t.showContour,Boolean)),\"showSurface\"in t&&(this.showSurface=!!t.showSurface),\"contourTint\"in t&&(this.contourTint=B(t.contourTint,Boolean)),\"contourColor\"in t&&(this.contourColor=j(t.contourColor)),\"contourProject\"in t&&(this.contourProject=B(t.contourProject,function(t){return B(t,Boolean)})),\"surfaceProject\"in t&&(this.surfaceProject=t.surfaceProject),\"dynamicColor\"in t&&(this.dynamicColor=j(t.dynamicColor)),\"dynamicTint\"in t&&(this.dynamicTint=B(t.dynamicTint,Number)),\"dynamicWidth\"in t&&(this.dynamicWidth=B(t.dynamicWidth,Number)),\"opacity\"in t&&(this.opacity=t.opacity),\"colorBounds\"in t&&(this.colorBounds=t.colorBounds),\"vertexColor\"in t&&(this.vertexColor=t.vertexColor?1:0);var e=t.field||t.coords&&t.coords[2]||null,r=!1;if(e||(e=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),\"field\"in t||\"coords\"in t){var i=(e.shape[0]+2)*(e.shape[1]+2);i>this._field[2].data.length&&(s.freeFloat(this._field[2].data),this._field[2].data=s.mallocFloat(n.nextPow2(i))),this._field[2]=f(this._field[2].data,[e.shape[0]+2,e.shape[1]+2]),this.padField(this._field[2],e),this.shape=e.shape.slice();for(var a=this.shape,o=0;o<2;++o)this._field[2].size>this._field[o].data.length&&(s.freeFloat(this._field[o].data),this._field[o].data=s.mallocFloat(this._field[2].size)),this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2]);if(t.coords){var p=t.coords;if(!Array.isArray(p)||3!==p.length)throw new Error(\"gl-surface: invalid coordinates for x/y\");for(o=0;o<2;++o){var d=p[o];for(b=0;b<2;++b)if(d.shape[b]!==a[b])throw new Error(\"gl-surface: coords have incorrect shape\");this.padField(this._field[o],d)}}else if(t.ticks){var g=t.ticks;if(!Array.isArray(g)||2!==g.length)throw new Error(\"gl-surface: invalid ticks\");for(o=0;o<2;++o){var m=g[o];if((Array.isArray(m)||m.length)&&(m=f(m)),m.shape[0]!==a[o])throw new Error(\"gl-surface: invalid tick length\");var y=f(m.data,a);y.stride[o]=m.stride[0],y.stride[1^o]=0,this.padField(this._field[o],y)}}else{for(o=0;o<2;++o){var x=[0,0];x[o]=1,this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2],x,0)}this._field[0].set(0,0,0);for(var b=0;b<a[0];++b)this._field[0].set(b+1,0,b);for(this._field[0].set(a[0]+1,0,a[0]-1),this._field[1].set(0,0,0),b=0;b<a[1];++b)this._field[1].set(0,b+1,b);this._field[1].set(0,a[1]+1,a[1]-1)}var _=this._field,w=f(s.mallocFloat(3*_[2].size*2),[3,a[0]+2,a[1]+2,2]);for(o=0;o<3;++o)v(w.pick(o),_[o],\"mirror\");var k=f(s.mallocFloat(3*_[2].size),[a[0]+2,a[1]+2,3]);for(o=0;o<a[0]+2;++o)for(b=0;b<a[1]+2;++b){var M=w.get(0,o,b,0),T=w.get(0,o,b,1),C=w.get(1,o,b,0),E=w.get(1,o,b,1),L=w.get(2,o,b,0),z=w.get(2,o,b,1),O=C*z-E*L,I=L*T-z*M,D=M*E-T*C,P=Math.sqrt(O*O+I*I+D*D);P<1e-8?(P=Math.max(Math.abs(O),Math.abs(I),Math.abs(D)))<1e-8?(D=1,I=O=0,P=1):P=1/P:P=1/Math.sqrt(P),k.set(o,b,0,O*P),k.set(o,b,1,I*P),k.set(o,b,2,D*P)}s.free(w.data);var R=[1/0,1/0,1/0],F=[-1/0,-1/0,-1/0],N=1/0,V=-1/0,U=(a[0]-1)*(a[1]-1)*6,q=s.mallocFloat(n.nextPow2(10*U)),H=0,G=0;for(o=0;o<a[0]-1;++o)t:for(b=0;b<a[1]-1;++b){for(var W=0;W<2;++W)for(var Y=0;Y<2;++Y)for(var X=0;X<3;++X){var Z=this._field[X].get(1+o+W,1+b+Y);if(isNaN(Z)||!isFinite(Z))continue t}for(X=0;X<6;++X){var $=o+A[X][0],J=b+A[X][1],K=this._field[0].get($+1,J+1),Q=this._field[1].get($+1,J+1);Z=this._field[2].get($+1,J+1),O=k.get($+1,J+1,0),I=k.get($+1,J+1,1),D=k.get($+1,J+1,2),t.intensity&&(tt=t.intensity.get($,J));var tt=t.intensity?t.intensity.get($,J):Z+this.objectOffset[2];q[H++]=$,q[H++]=J,q[H++]=K,q[H++]=Q,q[H++]=Z,q[H++]=0,q[H++]=tt,q[H++]=O,q[H++]=I,q[H++]=D,R[0]=Math.min(R[0],K+this.objectOffset[0]),R[1]=Math.min(R[1],Q+this.objectOffset[1]),R[2]=Math.min(R[2],Z+this.objectOffset[2]),N=Math.min(N,tt),F[0]=Math.max(F[0],K+this.objectOffset[0]),F[1]=Math.max(F[1],Q+this.objectOffset[1]),F[2]=Math.max(F[2],Z+this.objectOffset[2]),V=Math.max(V,tt),G+=1}}for(t.intensityBounds&&(N=+t.intensityBounds[0],V=+t.intensityBounds[1]),o=6;o<H;o+=10)q[o]=(q[o]-N)/(V-N);this._vertexCount=G,this._coordinateBuffer.update(q.subarray(0,H)),s.freeFloat(q),s.free(k.data),this.bounds=[R,F],this.intensity=t.intensity||this._field[2],this.intensityBounds[0]===N&&this.intensityBounds[1]===V||(r=!0),this.intensityBounds=[N,V]}if(\"levels\"in t){var et=t.levels;for(et=Array.isArray(et[0])?et.slice():[[],[],et],o=0;o<3;++o)et[o]=et[o].slice(),et.sort(function(t,e){return t-e});for(o=0;o<3;++o)for(b=0;b<et[o].length;++b)et[o][b]-=this.objectOffset[o];t:for(o=0;o<3;++o){if(et[o].length!==this.contourLevels[o].length){r=!0;break}for(b=0;b<et[o].length;++b)if(et[o][b]!==this.contourLevels[o][b]){r=!0;break t}}this.contourLevels=et}if(r){_=this._field,a=this.shape;for(var rt=[],nt=0;nt<3;++nt){et=this.contourLevels[nt];var it=[],at=[],ot=[0,0,0];for(o=0;o<et.length;++o){var st=h(this._field[nt],et[o]);it.push(rt.length/5|0),G=0;t:for(b=0;b<st.cells.length;++b){var lt=st.cells[b];for(X=0;X<2;++X){var ct=st.positions[lt[X]],ut=ct[0],ft=0|Math.floor(ut),ht=ut-ft,pt=ct[1],dt=0|Math.floor(pt),gt=pt-dt,vt=!1;e:for(var mt=0;mt<3;++mt){ot[mt]=0;var yt=(nt+mt+1)%3;for(W=0;W<2;++W){var xt=W?ht:1-ht;for($=0|Math.min(Math.max(ft+W,0),a[0]),Y=0;Y<2;++Y){var bt=Y?gt:1-gt;if(J=0|Math.min(Math.max(dt+Y,0),a[1]),Z=mt<2?this._field[yt].get($,J):(this.intensity.get($,J)-this.intensityBounds[0])/(this.intensityBounds[1]-this.intensityBounds[0]),!isFinite(Z)||isNaN(Z)){vt=!0;break e}var _t=xt*bt;ot[mt]+=_t*Z}}}if(vt){if(X>0){for(var wt=0;wt<5;++wt)rt.pop();G-=1}continue t}rt.push(ot[0],ot[1],ct[0],ct[1],ot[2]),G+=1}}at.push(G)}this._contourOffsets[nt]=it,this._contourCounts[nt]=at}var kt=s.mallocFloat(rt.length);for(o=0;o<rt.length;++o)kt[o]=rt[o];this._contourBuffer.update(kt),s.freeFloat(kt)}t.colormap&&this._colorMap.setPixels(function(t){var e=u([l({colormap:t,nshades:S,format:\"rgba\"}).map(function(t){return[t[0],t[1],t[2],255*t[3]]})]);return c.divseq(e,255),e}(t.colormap))},E.dispose=function(){this._shader.dispose(),this._vao.dispose(),this._coordinateBuffer.dispose(),this._colorMap.dispose(),this._contourBuffer.dispose(),this._contourVAO.dispose(),this._contourShader.dispose(),this._contourPickShader.dispose(),this._dynamicBuffer.dispose(),this._dynamicVAO.dispose();for(var t=0;t<3;++t)s.freeFloat(this._field[t].data)},E.highlight=function(t){var e,r;if(!t)return this._dynamicCounts=[0,0,0],this.dyanamicLevel=[NaN,NaN,NaN],void(this.highlightLevel=[-1,-1,-1]);for(e=0;e<3;++e)this.enableHighlight[e]?this.highlightLevel[e]=t.level[e]:this.highlightLevel[e]=-1;for(r=this.snapToData?t.dataCoordinate:t.position,e=0;e<3;++e)r[e]-=this.objectOffset[e];if(this.enableDynamic[0]&&r[0]!==this.dynamicLevel[0]||this.enableDynamic[1]&&r[1]!==this.dynamicLevel[1]||this.enableDynamic[2]&&r[2]!==this.dynamicLevel[2]){for(var n=0,i=this.shape,a=s.mallocFloat(12*i[0]*i[1]),o=0;o<3;++o)if(this.enableDynamic[o]){this.dynamicLevel[o]=r[o];var l=(o+1)%3,c=(o+2)%3,u=this._field[o],f=this._field[l],p=this._field[c],d=h(u,r[o]),g=d.cells,v=d.positions;for(this._dynamicOffsets[o]=n,e=0;e<g.length;++e)for(var m=g[e],y=0;y<2;++y){var x=v[m[y]],b=+x[0],_=0|b,w=0|Math.min(_+1,i[0]),k=b-_,A=1-k,M=+x[1],T=0|M,S=0|Math.min(T+1,i[1]),C=M-T,E=1-C,L=A*E,z=A*C,O=k*E,I=k*C,D=L*f.get(_,T)+z*f.get(_,S)+O*f.get(w,T)+I*f.get(w,S),P=L*p.get(_,T)+z*p.get(_,S)+O*p.get(w,T)+I*p.get(w,S);if(isNaN(D)||isNaN(P)){y&&(n-=1);break}a[2*n+0]=D,a[2*n+1]=P,n+=1}this._dynamicCounts[o]=n-this._dynamicOffsets[o]}else this.dynamicLevel[o]=NaN,this._dynamicCounts[o]=0;this._dynamicBuffer.update(a.subarray(0,2*n)),s.freeFloat(a)}}},{\"./lib/shaders\":304,\"binary-search-bounds\":305,\"bit-twiddle\":81,colormap:115,\"gl-buffer\":231,\"gl-mat4/invert\":256,\"gl-mat4/multiply\":258,\"gl-texture2d\":308,\"gl-vao\":313,ndarray:436,\"ndarray-gradient\":427,\"ndarray-ops\":430,\"ndarray-pack\":431,\"surface-nets\":509,\"typedarray-pool\":523}],307:[function(t,e,r){\"use strict\";var n=t(\"css-font\"),i=t(\"pick-by-alias\"),a=t(\"regl\"),o=t(\"gl-util/context\"),s=t(\"es6-weak-map\"),l=t(\"color-normalize\"),c=t(\"font-atlas\"),u=t(\"typedarray-pool\"),f=t(\"parse-rect\"),h=t(\"is-plain-obj\"),p=t(\"parse-unit\"),d=t(\"to-px\"),g=t(\"detect-kerning\"),v=t(\"object-assign\"),m=t(\"font-measure\"),y=t(\"flatten-vertex-data\"),x=t(\"bit-twiddle\").nextPow2,b=new s,_=!1;if(document.body){var w=document.body.appendChild(document.createElement(\"div\"));w.style.font=\"italic small-caps bold condensed 16px/2 cursive\",getComputedStyle(w).fontStretch&&(_=!0),document.body.removeChild(w)}var k=function(t){!function(t){return\"function\"==typeof t&&t._gl&&t.prop&&t.texture&&t.buffer}(t)?this.gl=o(t):(t={regl:t},this.gl=t.regl._gl),this.shader=b.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||a({gl:this.gl}),this.charBuffer=this.regl.buffer({type:\"uint8\",usage:\"stream\"}),this.sizeBuffer=this.regl.buffer({type:\"float\",usage:\"stream\"}),this.shader||(this.shader=this.createShader(),b.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(h(t)?t:{})};k.prototype.createShader=function(){var t=this.regl,e=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:\"src alpha\",dstRGB:\"one minus src alpha\",srcAlpha:\"one minus dst alpha\",dstAlpha:\"one\"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop(\"count\"),offset:t.prop(\"offset\"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this(\"sizeBuffer\")},width:{offset:0,stride:8,buffer:t.this(\"sizeBuffer\")},char:t.this(\"charBuffer\"),position:t.this(\"position\")},uniforms:{atlasSize:function(t,e){return[e.atlas.width,e.atlas.height]},atlasDim:function(t,e){return[e.atlas.cols,e.atlas.rows]},atlas:function(t,e){return e.atlas.texture},charStep:function(t,e){return e.atlas.step},em:function(t,e){return e.atlas.em},color:t.prop(\"color\"),opacity:t.prop(\"opacity\"),viewport:t.this(\"viewportArray\"),scale:t.this(\"scale\"),align:t.prop(\"align\"),baseline:t.prop(\"baseline\"),translate:t.this(\"translate\"),positionOffset:t.prop(\"positionOffset\")},primitive:\"points\",viewport:t.this(\"viewport\"),vert:\"\\n\\t\\t\\tprecision highp float;\\n\\t\\t\\tattribute float width, charOffset, char;\\n\\t\\t\\tattribute vec2 position;\\n\\t\\t\\tuniform float fontSize, charStep, em, align, baseline;\\n\\t\\t\\tuniform vec4 viewport;\\n\\t\\t\\tuniform vec4 color;\\n\\t\\t\\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\\n\\t\\t\\tvarying vec2 charCoord, charId;\\n\\t\\t\\tvarying float charWidth;\\n\\t\\t\\tvarying vec4 fontColor;\\n\\t\\t\\tvoid main () {\\n\\t\\t\\t\\t\"+(k.normalViewport?\"\":\"vec2 positionOffset = vec2(positionOffset.x,- positionOffset.y);\")+\"\\n\\n\\t\\t\\t\\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\\n\\t\\t\\t\\t\\t+ positionOffset))\\n\\t\\t\\t\\t\\t/ (viewport.zw * scale.xy);\\n\\n\\t\\t\\t\\tvec2 position = (position + translate) * scale;\\n\\t\\t\\t\\tposition += offset * scale;\\n\\n\\t\\t\\t\\t\"+(k.normalViewport?\"position.y = 1. - position.y;\":\"\")+\"\\n\\n\\t\\t\\t\\tcharCoord = position * viewport.zw + viewport.xy;\\n\\n\\t\\t\\t\\tgl_Position = vec4(position * 2. - 1., 0, 1);\\n\\n\\t\\t\\t\\tgl_PointSize = charStep;\\n\\n\\t\\t\\t\\tcharId.x = mod(char, atlasDim.x);\\n\\t\\t\\t\\tcharId.y = floor(char / atlasDim.x);\\n\\n\\t\\t\\t\\tcharWidth = width * em;\\n\\n\\t\\t\\t\\tfontColor = color / 255.;\\n\\t\\t\\t}\",frag:\"\\n\\t\\t\\tprecision highp float;\\n\\t\\t\\tuniform sampler2D atlas;\\n\\t\\t\\tuniform float fontSize, charStep, opacity;\\n\\t\\t\\tuniform vec2 atlasSize;\\n\\t\\t\\tuniform vec4 viewport;\\n\\t\\t\\tvarying vec4 fontColor;\\n\\t\\t\\tvarying vec2 charCoord, charId;\\n\\t\\t\\tvarying float charWidth;\\n\\n\\t\\t\\tfloat lightness(vec4 color) {\\n\\t\\t\\t\\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\\n\\t\\t\\t}\\n\\n\\t\\t\\tvoid main () {\\n\\t\\t\\t\\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\\n\\t\\t\\t\\tfloat halfCharStep = floor(charStep * .5 + .5);\\n\\n\\t\\t\\t\\t// invert y and shift by 1px (FF expecially needs that)\\n\\t\\t\\t\\tuv.y = charStep - uv.y;\\n\\n\\t\\t\\t\\t// ignore points outside of character bounding box\\n\\t\\t\\t\\tfloat halfCharWidth = ceil(charWidth * .5);\\n\\t\\t\\t\\tif (floor(uv.x) > halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},k.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(t){return parseFloat(t)}):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),k.normalViewport&&(this.viewport.y=this.canvas.height-this.viewport.y-this.viewport.height),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=k.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(k.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:k.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=k.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:m(c,{origin:\"top\",fontSize:k.baseFontSize,fontStyle:u.join(\" \")})},k.fonts[i]=e.font[r]}}),(a||o)&&this.font.forEach(function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)}),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h<s.length;h++)s[h]=t.text;t.text=s}if(null!=t.text||a){if(this.textOffsets=[0],Array.isArray(t.text)){this.count=t.text[0].length,this.counts=[this.count];for(var b=1;b<t.text.length;b++)e.textOffsets[b]=e.textOffsets[b-1]+t.text[b-1].length,e.count+=t.text[b].length,e.counts.push(t.text[b].length);this.text=t.text.join(\"\")}else this.text=t.text,this.count=this.text.length,this.counts=[this.count];r=[],this.font.forEach(function(t,n){k.atlasContext.font=t.baseString;for(var i=e.fontAtlas[n],a=0;a<e.text.length;a++){var o=e.text.charAt(a);if(null==i.ids[o]&&(i.ids[o]=i.chars.length,i.chars.push(o),r.push(o)),null==t.width[o]&&(t.width[o]=k.atlasContext.measureText(o).width/k.baseFontSize,e.kerning)){var s=[];for(var l in t.width)s.push(l+o,o+l);v(t.kerning,g(t.family,{pairs:s}))}}})}if(t.position)if(t.position.length>2){for(var w=!t.position[0].length,A=u.mallocFloat(2*this.count),M=0,T=0;M<this.counts.length;M++){var S=e.counts[M];if(w)for(var C=0;C<S;C++)A[T++]=t.position[2*M],A[T++]=t.position[2*M+1];else for(var E=0;E<S;E++)A[T++]=t.position[M][0],A[T++]=t.position[M][1]}this.position.call?this.position({type:\"float\",data:A}):this.position=this.regl.buffer({type:\"float\",data:A}),u.freeFloat(A)}else this.position.destroy&&this.position.destroy(),this.position={constant:t.position};if(t.text||a){var L=u.mallocUint8(this.count),z=u.mallocFloat(2*this.count);this.textWidth=[];for(var O=0,I=0;O<this.counts.length;O++){for(var D=e.counts[O],P=e.font[O]||e.font[0],R=e.fontAtlas[O]||e.fontAtlas[0],F=0;F<D;F++){var B=e.text.charAt(I),N=e.text.charAt(I-1);if(L[I]=R.ids[B],z[2*I]=P.width[B],F){var j=z[2*I-2],V=z[2*I],U=z[2*I-1]+.5*j+.5*V;if(e.kerning){var q=P.kerning[N+B];q&&(U+=.001*q)}z[2*I+1]=U}else z[2*I+1]=.5*z[2*I];I++}e.textWidth.push(z.length?.5*z[2*I-2]+z[2*I-1]:0)}t.align||(t.align=this.align),this.charBuffer({data:L,type:\"uint8\",usage:\"stream\"}),this.sizeBuffer({data:z,type:\"float\",usage:\"stream\"}),u.freeUint8(L),u.freeFloat(z),r.length&&this.font.forEach(function(t,r){var n=e.fontAtlas[r],i=n.step,a=Math.floor(k.maxAtlasSize/i),o=Math.min(a,n.chars.length),s=Math.ceil(n.chars.length/o),l=x(o*i),u=x(s*i);n.width=l,n.height=u,n.rows=s,n.cols=o,n.em&&n.texture({data:c({canvas:k.atlasCanvas,font:n.fontString,chars:n.chars,shape:[l,u],step:[i,i]})})})}if(t.align&&(this.align=t.align,this.alignOffset=this.textWidth.map(function(t,r){var n=Array.isArray(e.align)?e.align.length>1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0})),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],k.normalViewport||(i*=-1),i})),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var H;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;H=u.mallocUint8(G);for(var W=(t.color.subarray||t.color.slice).bind(t.color),Y=0;Y<G;Y+=4)H.set(l(W(Y,Y+4),\"uint8\"),Y)}else{var X=t.color.length;H=u.mallocUint8(4*X);for(var Z=0;Z<X;Z++)H.set(l(t.color[Z]||0,\"uint8\"),4*Z)}this.color=H}else this.color=l(t.color,\"uint8\");if(t.position||t.text||t.color||t.baseline||t.align||t.font||t.offset||t.opacity)if(this.color.length>4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var $=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array($);for(var J=0;J<this.batch.length;J++)e.batch[J]={count:e.counts.length>1?e.counts[J]:e.counts[0],offset:e.textOffsets.length>1?e.textOffsets[J]:e.textOffsets[0],color:e.color?e.color.length<=4?e.color:e.color.subarray(4*J,4*J+4):[0,0,0,255],opacity:Array.isArray(e.opacity)?e.opacity[J]:e.opacity,baseline:null!=e.baselineOffset[J]?e.baselineOffset[J]:e.baselineOffset[0],align:e.align?null!=e.alignOffset[J]?e.alignOffset[J]:e.alignOffset[0]:0,atlas:e.fontAtlas[J]||e.fontAtlas[0],positionOffset:e.positionOffset.length>2?e.positionOffset.subarray(2*J,2*J+2):e.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},k.prototype.destroy=function(){},k.prototype.kerning=!0,k.prototype.position={constant:new Float32Array(2)},k.prototype.translate=null,k.prototype.scale=null,k.prototype.font=null,k.prototype.text=\"\",k.prototype.positionOffset=[0,0],k.prototype.opacity=1,k.prototype.color=new Uint8Array([0,0,0,255]),k.prototype.alignOffset=[0,0],k.normalViewport=!1,k.maxAtlasSize=1024,k.atlasCanvas=document.createElement(\"canvas\"),k.atlasContext=k.atlasCanvas.getContext(\"2d\",{alpha:!1}),k.baseFontSize=64,k.fonts={},e.exports=k},{\"bit-twiddle\":81,\"color-normalize\":109,\"css-font\":128,\"detect-kerning\":152,\"es6-weak-map\":210,\"flatten-vertex-data\":217,\"font-atlas\":218,\"font-measure\":219,\"gl-util/context\":309,\"is-plain-obj\":408,\"object-assign\":440,\"parse-rect\":445,\"parse-unit\":447,\"pick-by-alias\":451,regl:480,\"to-px\":517,\"typedarray-pool\":523}],308:[function(t,e,r){\"use strict\";var n=t(\"ndarray\"),i=t(\"ndarray-ops\"),a=t(\"typedarray-pool\");e.exports=function(t){if(arguments.length<=1)throw new Error(\"gl-texture2d: Missing arguments for texture2d constructor\");o||function(t){o=[t.LINEAR,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_NEAREST],s=[t.NEAREST,t.LINEAR,t.NEAREST_MIPMAP_NEAREST,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_LINEAR],l=[t.REPEAT,t.CLAMP_TO_EDGE,t.MIRRORED_REPEAT]}(t);if(\"number\"==typeof arguments[1])return v(t,arguments[1],arguments[2],arguments[3]||t.RGBA,arguments[4]||t.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return v(t,0|arguments[1][0],0|arguments[1][1],arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(\"object\"==typeof arguments[1]){var e=arguments[1],r=c(e)?e:e.raw;if(r)return function(t,e,r,n,i,a){var o=g(t);return t.texImage2D(t.TEXTURE_2D,0,i,i,a,e),new h(t,o,r,n,i,a)}(t,r,0|e.width,0|e.height,arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(e.shape&&e.data&&e.stride)return function(t,e){var r=e.dtype,o=e.shape.slice(),s=t.getParameter(t.MAX_TEXTURE_SIZE);if(o[0]<0||o[0]>s||o[1]<0||o[1]>s)throw new Error(\"gl-texture2d: Invalid texture size\");var l=d(o,e.stride.slice()),c=0;\"float32\"===r?c=t.FLOAT:\"float64\"===r?(c=t.FLOAT,l=!1,r=\"float32\"):\"uint8\"===r?c=t.UNSIGNED_BYTE:(c=t.UNSIGNED_BYTE,l=!1,r=\"uint8\");var f,p,v=0;if(2===o.length)v=t.LUMINANCE,o=[o[0],o[1],1],e=n(e.data,o,[e.stride[0],e.stride[1],1],e.offset);else{if(3!==o.length)throw new Error(\"gl-texture2d: Invalid shape for texture\");if(1===o[2])v=t.ALPHA;else if(2===o[2])v=t.LUMINANCE_ALPHA;else if(3===o[2])v=t.RGB;else{if(4!==o[2])throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");v=t.RGBA}}c!==t.FLOAT||t.getExtension(\"OES_texture_float\")||(c=t.UNSIGNED_BYTE,l=!1);var m=e.size;if(l)f=0===e.offset&&e.data.length===m?e.data:e.data.subarray(e.offset,e.offset+m);else{var y=[o[2],o[2]*o[0],1];p=a.malloc(m,r);var x=n(p,o,y,0);\"float32\"!==r&&\"float64\"!==r||c!==t.UNSIGNED_BYTE?i.assign(x,e):u(x,e),f=p.subarray(0,m)}var b=g(t);t.texImage2D(t.TEXTURE_2D,0,v,o[0],o[1],0,v,c,f),l||a.free(p);return new h(t,b,o[0],o[1],v,c)}(t,e)}throw new Error(\"gl-texture2d: Invalid arguments for texture2d constructor\")};var o=null,s=null,l=null;function c(t){return\"undefined\"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||\"undefined\"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||\"undefined\"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement||\"undefined\"!=typeof ImageData&&t instanceof ImageData}var u=function(t,e){i.muls(t,e,255)};function f(t,e,r){var n=t.gl,i=n.getParameter(n.MAX_TEXTURE_SIZE);if(e<0||e>i||r<0||r>i)throw new Error(\"gl-texture2d: Invalid texture size\");return t._shape=[e,r],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,e,r,0,t.format,t.type,null),t._mipLevels=[0],t}function h(t,e,r,n,i,a){this.gl=t,this.handle=e,this.format=i,this.type=a,this._shape=[r,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var l=[this._shape[0],this._shape[1]];Object.defineProperties(l,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=l}var p=h.prototype;function d(t,e){return 3===t.length?1===e[2]&&e[1]===t[0]*t[2]&&e[0]===t[2]:1===e[0]&&e[1]===t[0]}function g(t){var e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function v(t,e,r,n,i){var a=t.getParameter(t.MAX_TEXTURE_SIZE);if(e<0||e>a||r<0||r>a)throw new Error(\"gl-texture2d: Invalid texture shape\");if(i===t.FLOAT&&!t.getExtension(\"OES_texture_float\"))throw new Error(\"gl-texture2d: Floating point textures not supported on this platform\");var o=g(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new h(t,o,e,r,n,i)}Object.defineProperties(p,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension(\"OES_texture_float_linear\")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown filter mode \"+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension(\"OES_texture_float_linear\")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown filter mode \"+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var e=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),e!==this._anisoSamples){var r=this.gl.getExtension(\"EXT_texture_filter_anisotropic\");r&&this.gl.texParameterf(this.gl.TEXTURE_2D,r.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error(\"gl-texture2d: Must specify wrap mode for rows and columns\");for(var e=0;e<2;++e)if(l.indexOf(t[e])<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);this._wrapS=t[0],this._wrapT=t[1];var r=this.gl;return this.bind(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,this._wrapS),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error(\"gl-texture2d: Invalid texture shape\")}else t=[0|t,0|t];return f(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return f(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,f(this,this._shape[0],t),t}}}),p.bind=function(t){var e=this.gl;return void 0!==t&&e.activeTexture(e.TEXTURE0+(0|t)),e.bindTexture(e.TEXTURE_2D,this.handle),void 0!==t?0|t:e.getParameter(e.ACTIVE_TEXTURE)-e.TEXTURE0},p.dispose=function(){this.gl.deleteTexture(this.handle)},p.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),e=0;t>0;++e,t>>>=1)this._mipLevels.indexOf(e)<0&&this._mipLevels.push(e)},p.setPixels=function(t,e,r,o){var s=this.gl;this.bind(),Array.isArray(e)?(o=r,r=0|e[1],e=0|e[0]):(e=e||0,r=r||0),o=o||0;var l=c(t)?t:t.raw;if(l){this._mipLevels.indexOf(o)<0?(s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,this.type,l),this._mipLevels.push(o)):s.texSubImage2D(s.TEXTURE_2D,o,e,r,this.format,this.type,l)}else{if(!(t.shape&&t.stride&&t.data))throw new Error(\"gl-texture2d: Unsupported data type\");if(t.shape.length<2||e+t.shape[1]>this._shape[1]>>>o||r+t.shape[0]>this._shape[0]>>>o||e<0||r<0)throw new Error(\"gl-texture2d: Texture dimensions are out of bounds\");!function(t,e,r,o,s,l,c,f){var h=f.dtype,p=f.shape.slice();if(p.length<2||p.length>3)throw new Error(\"gl-texture2d: Invalid ndarray, must be 2d or 3d\");var g=0,v=0,m=d(p,f.stride.slice());\"float32\"===h?g=t.FLOAT:\"float64\"===h?(g=t.FLOAT,m=!1,h=\"float32\"):\"uint8\"===h?g=t.UNSIGNED_BYTE:(g=t.UNSIGNED_BYTE,m=!1,h=\"uint8\");if(2===p.length)v=t.LUMINANCE,p=[p[0],p[1],1],f=n(f.data,p,[f.stride[0],f.stride[1],1],f.offset);else{if(3!==p.length)throw new Error(\"gl-texture2d: Invalid shape for texture\");if(1===p[2])v=t.ALPHA;else if(2===p[2])v=t.LUMINANCE_ALPHA;else if(3===p[2])v=t.RGB;else{if(4!==p[2])throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");v=t.RGBA}p[2]}v!==t.LUMINANCE&&v!==t.ALPHA||s!==t.LUMINANCE&&s!==t.ALPHA||(v=s);if(v!==s)throw new Error(\"gl-texture2d: Incompatible texture format for setPixels\");var y=f.size,x=c.indexOf(o)<0;x&&c.push(o);if(g===l&&m)0===f.offset&&f.data.length===y?x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,f.data):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,f.data):x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,f.data.subarray(f.offset,f.offset+y)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,f.data.subarray(f.offset,f.offset+y));else{var b;b=l===t.FLOAT?a.mallocFloat32(y):a.mallocUint8(y);var _=n(b,p,[p[2],p[2]*p[0],1]);g===t.FLOAT&&l===t.UNSIGNED_BYTE?u(_,f):i.assign(_,f),x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,b.subarray(0,y)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,b.subarray(0,y)),l===t.FLOAT?a.freeFloat32(b):a.freeUint8(b)}}(s,e,r,o,this.format,this.type,this._mipLevels,t)}}},{ndarray:436,\"ndarray-ops\":430,\"typedarray-pool\":523}],309:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*window.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*window.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var r=document.querySelector(t.container);if(!r)throw Error(\"Element \"+t.container+\" is not found\");t.container=r}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=document.createElement(\"canvas\"),t.container.appendChild(t.canvas),i(t))}else t.canvas||(t.container=document.body||document.documentElement,t.canvas=document.createElement(\"canvas\"),t.canvas.style.position=\"absolute\",t.canvas.style.top=0,t.canvas.style.left=0,t.container.appendChild(t.canvas),i(t));if(!t.gl)try{t.gl=t.canvas.getContext(\"webgl\",t.attrs)}catch(e){try{t.gl=t.canvas.getContext(\"experimental-webgl\",t.attrs)}catch(e){t.gl=t.canvas.getContext(\"webgl-experimental\",t.attrs)}}return t.gl}},{\"pick-by-alias\":451}],310:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){e?e.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(r){if(r.length>n)throw new Error(\"gl-vao: Too many vertex attributes\");for(var i=0;i<r.length;++i){var a=r[i];if(a.buffer){var o=a.buffer,s=a.size||4,l=a.type||t.FLOAT,c=!!a.normalized,u=a.stride||0,f=a.offset||0;o.bind(),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,s,l,c,u,f)}else{if(\"number\"==typeof a)t.vertexAttrib1f(i,a);else if(1===a.length)t.vertexAttrib1f(i,a[0]);else if(2===a.length)t.vertexAttrib2f(i,a[0],a[1]);else if(3===a.length)t.vertexAttrib3f(i,a[0],a[1],a[2]);else{if(4!==a.length)throw new Error(\"gl-vao: Invalid vertex attribute\");t.vertexAttrib4f(i,a[0],a[1],a[2],a[3])}t.disableVertexAttribArray(i)}}for(;i<n;++i)t.disableVertexAttribArray(i)}else for(t.bindBuffer(t.ARRAY_BUFFER,null),i=0;i<n;++i)t.disableVertexAttribArray(i)}},{}],311:[function(t,e,r){\"use strict\";var n=t(\"./do-bind.js\");function i(t){this.gl=t,this._elements=null,this._attributes=null,this._elementsType=t.UNSIGNED_SHORT}i.prototype.bind=function(){n(this.gl,this._elements,this._attributes)},i.prototype.update=function(t,e,r){this._elements=e,this._attributes=t,this._elementsType=r||this.gl.UNSIGNED_SHORT},i.prototype.dispose=function(){},i.prototype.unbind=function(){},i.prototype.draw=function(t,e,r){r=r||0;var n=this.gl;this._elements?n.drawElements(t,e,this._elementsType,r):n.drawArrays(t,r,e)},e.exports=function(t){return new i(t)}},{\"./do-bind.js\":310}],312:[function(t,e,r){\"use strict\";var n=t(\"./do-bind.js\");function i(t,e,r,n,i,a){this.location=t,this.dimension=e,this.a=r,this.b=n,this.c=i,this.d=a}function a(t,e,r){this.gl=t,this._ext=e,this.handle=r,this._attribs=[],this._useElements=!1,this._elementsType=t.UNSIGNED_SHORT}i.prototype.bind=function(t){switch(this.dimension){case 1:t.vertexAttrib1f(this.location,this.a);break;case 2:t.vertexAttrib2f(this.location,this.a,this.b);break;case 3:t.vertexAttrib3f(this.location,this.a,this.b,this.c);break;case 4:t.vertexAttrib4f(this.location,this.a,this.b,this.c,this.d)}},a.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var t=0;t<this._attribs.length;++t)this._attribs[t].bind(this.gl)},a.prototype.unbind=function(){this._ext.bindVertexArrayOES(null)},a.prototype.dispose=function(){this._ext.deleteVertexArrayOES(this.handle)},a.prototype.update=function(t,e,r){if(this.bind(),n(this.gl,e,t),this.unbind(),this._attribs.length=0,t)for(var a=0;a<t.length;++a){var o=t[a];\"number\"==typeof o?this._attribs.push(new i(a,1,o)):Array.isArray(o)&&this._attribs.push(new i(a,o.length,o[0],o[1],o[2],o[3]))}this._useElements=!!e,this._elementsType=r||this.gl.UNSIGNED_SHORT},a.prototype.draw=function(t,e,r){r=r||0;var n=this.gl;this._useElements?n.drawElements(t,e,this._elementsType,r):n.drawArrays(t,r,e)},e.exports=function(t,e){return new a(t,e,e.createVertexArrayOES())}},{\"./do-bind.js\":310}],313:[function(t,e,r){\"use strict\";var n=t(\"./lib/vao-native.js\"),i=t(\"./lib/vao-emulated.js\");function a(t){this.bindVertexArrayOES=t.bindVertexArray.bind(t),this.createVertexArrayOES=t.createVertexArray.bind(t),this.deleteVertexArrayOES=t.deleteVertexArray.bind(t)}e.exports=function(t,e,r,o){var s,l=t.createVertexArray?new a(t):t.getExtension(\"OES_vertex_array_object\");return(s=l?n(t,l):i(t)).update(e,r,o),s}},{\"./lib/vao-emulated.js\":311,\"./lib/vao-native.js\":312}],314:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}},{}],315:[function(t,e,r){e.exports=function(t,e){var r=n(t[0],t[1],t[2]),o=n(e[0],e[1],e[2]);i(r,r),i(o,o);var s=a(r,o);return s>1?0:Math.acos(s)};var n=t(\"./fromValues\"),i=t(\"./normalize\"),a=t(\"./dot\")},{\"./dot\":325,\"./fromValues\":331,\"./normalize\":342}],316:[function(t,e,r){e.exports=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}},{}],317:[function(t,e,r){e.exports=function(t){var e=new Float32Array(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},{}],318:[function(t,e,r){e.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},{}],319:[function(t,e,r){e.exports=function(){var t=new Float32Array(3);return t[0]=0,t[1]=0,t[2]=0,t}},{}],320:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t}},{}],321:[function(t,e,r){e.exports=t(\"./distance\")},{\"./distance\":322}],322:[function(t,e,r){e.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}},{}],323:[function(t,e,r){e.exports=t(\"./divide\")},{\"./divide\":324}],324:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}},{}],325:[function(t,e,r){e.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},{}],326:[function(t,e,r){e.exports=1e-6},{}],327:[function(t,e,r){e.exports=function(t,e){var r=t[0],i=t[1],a=t[2],o=e[0],s=e[1],l=e[2];return Math.abs(r-o)<=n*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=n*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-l)<=n*Math.max(1,Math.abs(a),Math.abs(l))};var n=t(\"./epsilon\")},{\"./epsilon\":326}],328:[function(t,e,r){e.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},{}],329:[function(t,e,r){e.exports=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}},{}],330:[function(t,e,r){e.exports=function(t,e,r,i,a,o){var s,l;e||(e=3);r||(r=0);l=i?Math.min(i*e+r,t.length):t.length;for(s=r;s<l;s+=e)n[0]=t[s],n[1]=t[s+1],n[2]=t[s+2],a(n,n,o),t[s]=n[0],t[s+1]=n[1],t[s+2]=n[2];return t};var n=t(\"./create\")()},{\"./create\":319}],331:[function(t,e,r){e.exports=function(t,e,r){var n=new Float32Array(3);return n[0]=t,n[1]=e,n[2]=r,n}},{}],332:[function(t,e,r){e.exports={EPSILON:t(\"./epsilon\"),create:t(\"./create\"),clone:t(\"./clone\"),angle:t(\"./angle\"),fromValues:t(\"./fromValues\"),copy:t(\"./copy\"),set:t(\"./set\"),equals:t(\"./equals\"),exactEquals:t(\"./exactEquals\"),add:t(\"./add\"),subtract:t(\"./subtract\"),sub:t(\"./sub\"),multiply:t(\"./multiply\"),mul:t(\"./mul\"),divide:t(\"./divide\"),div:t(\"./div\"),min:t(\"./min\"),max:t(\"./max\"),floor:t(\"./floor\"),ceil:t(\"./ceil\"),round:t(\"./round\"),scale:t(\"./scale\"),scaleAndAdd:t(\"./scaleAndAdd\"),distance:t(\"./distance\"),dist:t(\"./dist\"),squaredDistance:t(\"./squaredDistance\"),sqrDist:t(\"./sqrDist\"),length:t(\"./length\"),len:t(\"./len\"),squaredLength:t(\"./squaredLength\"),sqrLen:t(\"./sqrLen\"),negate:t(\"./negate\"),inverse:t(\"./inverse\"),normalize:t(\"./normalize\"),dot:t(\"./dot\"),cross:t(\"./cross\"),lerp:t(\"./lerp\"),random:t(\"./random\"),transformMat4:t(\"./transformMat4\"),transformMat3:t(\"./transformMat3\"),transformQuat:t(\"./transformQuat\"),rotateX:t(\"./rotateX\"),rotateY:t(\"./rotateY\"),rotateZ:t(\"./rotateZ\"),forEach:t(\"./forEach\")}},{\"./add\":314,\"./angle\":315,\"./ceil\":316,\"./clone\":317,\"./copy\":318,\"./create\":319,\"./cross\":320,\"./dist\":321,\"./distance\":322,\"./div\":323,\"./divide\":324,\"./dot\":325,\"./epsilon\":326,\"./equals\":327,\"./exactEquals\":328,\"./floor\":329,\"./forEach\":330,\"./fromValues\":331,\"./inverse\":333,\"./len\":334,\"./length\":335,\"./lerp\":336,\"./max\":337,\"./min\":338,\"./mul\":339,\"./multiply\":340,\"./negate\":341,\"./normalize\":342,\"./random\":343,\"./rotateX\":344,\"./rotateY\":345,\"./rotateZ\":346,\"./round\":347,\"./scale\":348,\"./scaleAndAdd\":349,\"./set\":350,\"./sqrDist\":351,\"./sqrLen\":352,\"./squaredDistance\":353,\"./squaredLength\":354,\"./sub\":355,\"./subtract\":356,\"./transformMat3\":357,\"./transformMat4\":358,\"./transformQuat\":359}],333:[function(t,e,r){e.exports=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}},{}],334:[function(t,e,r){e.exports=t(\"./length\")},{\"./length\":335}],335:[function(t,e,r){e.exports=function(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}},{}],336:[function(t,e,r){e.exports=function(t,e,r,n){var i=e[0],a=e[1],o=e[2];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t}},{}],337:[function(t,e,r){e.exports=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}},{}],338:[function(t,e,r){e.exports=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}},{}],339:[function(t,e,r){e.exports=t(\"./multiply\")},{\"./multiply\":340}],340:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}},{}],341:[function(t,e,r){e.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}},{}],342:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;a>0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a);return t}},{}],343:[function(t,e,r){e.exports=function(t,e){e=e||1;var r=2*Math.random()*Math.PI,n=2*Math.random()-1,i=Math.sqrt(1-n*n)*e;return t[0]=Math.cos(r)*i,t[1]=Math.sin(r)*i,t[2]=n*e,t}},{}],344:[function(t,e,r){e.exports=function(t,e,r,n){var i=r[1],a=r[2],o=e[1]-i,s=e[2]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=e[0],t[1]=i+o*c-s*l,t[2]=a+o*l+s*c,t}},{}],345:[function(t,e,r){e.exports=function(t,e,r,n){var i=r[0],a=r[2],o=e[0]-i,s=e[2]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=i+s*l+o*c,t[1]=e[1],t[2]=a+s*c-o*l,t}},{}],346:[function(t,e,r){e.exports=function(t,e,r,n){var i=r[0],a=r[1],o=e[0]-i,s=e[1]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=i+o*c-s*l,t[1]=a+o*l+s*c,t[2]=e[2],t}},{}],347:[function(t,e,r){e.exports=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}},{}],348:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}},{}],349:[function(t,e,r){e.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}},{}],350:[function(t,e,r){e.exports=function(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}},{}],351:[function(t,e,r){e.exports=t(\"./squaredDistance\")},{\"./squaredDistance\":353}],352:[function(t,e,r){e.exports=t(\"./squaredLength\")},{\"./squaredLength\":354}],353:[function(t,e,r){e.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}},{}],354:[function(t,e,r){e.exports=function(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}},{}],355:[function(t,e,r){e.exports=t(\"./subtract\")},{\"./subtract\":356}],356:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}},{}],357:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t}},{}],358:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[3]*n+r[7]*i+r[11]*a+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*a+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*a+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*a+r[14])/o,t}},{}],359:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],c=r[3],u=c*n+s*a-l*i,f=c*i+l*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-l*a;return t[0]=u*c+p*-o+f*-l-h*-s,t[1]=f*c+p*-s+h*-o-u*-l,t[2]=h*c+p*-l+u*-s-f*-o,t}},{}],360:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}},{}],361:[function(t,e,r){e.exports=function(t){var e=new Float32Array(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}},{}],362:[function(t,e,r){e.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}},{}],363:[function(t,e,r){e.exports=function(){var t=new Float32Array(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}},{}],364:[function(t,e,r){e.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return Math.sqrt(r*r+n*n+i*i+a*a)}},{}],365:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}},{}],366:[function(t,e,r){e.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}},{}],367:[function(t,e,r){e.exports=function(t,e,r,n){var i=new Float32Array(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i}},{}],368:[function(t,e,r){e.exports={create:t(\"./create\"),clone:t(\"./clone\"),fromValues:t(\"./fromValues\"),copy:t(\"./copy\"),set:t(\"./set\"),add:t(\"./add\"),subtract:t(\"./subtract\"),multiply:t(\"./multiply\"),divide:t(\"./divide\"),min:t(\"./min\"),max:t(\"./max\"),scale:t(\"./scale\"),scaleAndAdd:t(\"./scaleAndAdd\"),distance:t(\"./distance\"),squaredDistance:t(\"./squaredDistance\"),length:t(\"./length\"),squaredLength:t(\"./squaredLength\"),negate:t(\"./negate\"),inverse:t(\"./inverse\"),normalize:t(\"./normalize\"),dot:t(\"./dot\"),lerp:t(\"./lerp\"),random:t(\"./random\"),transformMat4:t(\"./transformMat4\"),transformQuat:t(\"./transformQuat\")}},{\"./add\":360,\"./clone\":361,\"./copy\":362,\"./create\":363,\"./distance\":364,\"./divide\":365,\"./dot\":366,\"./fromValues\":367,\"./inverse\":369,\"./length\":370,\"./lerp\":371,\"./max\":372,\"./min\":373,\"./multiply\":374,\"./negate\":375,\"./normalize\":376,\"./random\":377,\"./scale\":378,\"./scaleAndAdd\":379,\"./set\":380,\"./squaredDistance\":381,\"./squaredLength\":382,\"./subtract\":383,\"./transformMat4\":384,\"./transformQuat\":385}],369:[function(t,e,r){e.exports=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}},{}],370:[function(t,e,r){e.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}},{}],371:[function(t,e,r){e.exports=function(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t[3]=s+n*(r[3]-s),t}},{}],372:[function(t,e,r){e.exports=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}},{}],373:[function(t,e,r){e.exports=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}},{}],374:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}},{}],375:[function(t,e,r){e.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}},{}],376:[function(t,e,r){e.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o);return t}},{}],377:[function(t,e,r){var n=t(\"./normalize\"),i=t(\"./scale\");e.exports=function(t,e){return e=e||1,t[0]=Math.random(),t[1]=Math.random(),t[2]=Math.random(),t[3]=Math.random(),n(t,t),i(t,t,e),t}},{\"./normalize\":376,\"./scale\":378}],378:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}},{}],379:[function(t,e,r){e.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t}},{}],380:[function(t,e,r){e.exports=function(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}},{}],381:[function(t,e,r){e.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return r*r+n*n+i*i+a*a}},{}],382:[function(t,e,r){e.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}},{}],383:[function(t,e,r){e.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}},{}],384:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}},{}],385:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],c=r[3],u=c*n+s*a-l*i,f=c*i+l*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-l*a;return t[0]=u*c+p*-o+f*-l-h*-s,t[1]=f*c+p*-s+h*-o-u*-l,t[2]=h*c+p*-l+u*-s-f*-o,t[3]=e[3],t}},{}],386:[function(t,e,r){e.exports=function(t,e,r,a){return n[0]=a,n[1]=r,n[2]=e,n[3]=t,i[0]};var n=new Uint8Array(4),i=new Float32Array(n.buffer)},{}],387:[function(t,e,r){var n=t(\"glsl-tokenizer\"),i=t(\"atob-lite\");e.exports=function(t){for(var e=Array.isArray(t)?t:n(t),r=0;r<e.length;r++){var a=e[r];if(\"preprocessor\"===a.type){var o=a.data.match(/\\#define\\s+SHADER_NAME(_B64)?\\s+(.+)$/);if(o&&o[2]){var s=o[1],l=o[2];return(s?i(l):l).trim()}}}}},{\"atob-lite\":61,\"glsl-tokenizer\":394}],388:[function(t,e,r){e.exports=function(t){var e,r,k,A=0,M=0,T=l,S=[],C=[],E=1,L=0,z=0,O=!1,I=!1,D=\"\",P=a,R=n;\"300 es\"===(t=t||{}).version&&(P=s,R=o);return function(t){return C=[],null!==t?function(t){var r;A=0,k=(D+=t).length;for(;e=D[A],A<k;){switch(r=A,T){case u:A=V();break;case f:case h:A=j();break;case p:A=U();break;case d:A=G();break;case _:A=H();break;case g:A=W();break;case c:A=Y();break;case x:A=N();break;case l:A=B()}if(r!==A)switch(D[r]){case\"\\n\":L=0,++E;break;default:++L}}return M+=A,D=D.slice(A),C}(t.replace?t.replace(/\\r\\n/g,\"\\n\"):t):function(t){S.length&&F(S.join(\"\"));return T=b,F(\"(eof)\"),C}()};function F(t){t.length&&C.push({type:w[T],data:t,position:z,line:E,column:L})}function B(){return S=S.length?[]:S,\"/\"===r&&\"*\"===e?(z=M+A-1,T=u,r=e,A+1):\"/\"===r&&\"/\"===e?(z=M+A-1,T=f,r=e,A+1):\"#\"===e?(T=h,z=M+A,A):/\\s/.test(e)?(T=x,z=M+A,A):(O=/\\d/.test(e),I=/[^\\w_]/.test(e),z=M+A,T=O?d:I?p:c,A)}function N(){return/[^\\s]/g.test(e)?(F(S.join(\"\")),T=l,A):(S.push(e),r=e,A+1)}function j(){return\"\\r\"!==e&&\"\\n\"!==e||\"\\\\\"===r?(S.push(e),r=e,A+1):(F(S.join(\"\")),T=l,A)}function V(){return\"/\"===e&&\"*\"===r?(S.push(e),F(S.join(\"\")),T=l,A+1):(S.push(e),r=e,A+1)}function U(){if(\".\"===r&&/\\d/.test(e))return T=g,A;if(\"/\"===r&&\"*\"===e)return T=u,A;if(\"/\"===r&&\"/\"===e)return T=f,A;if(\".\"===e&&S.length){for(;q(S););return T=g,A}if(\";\"===e||\")\"===e||\"(\"===e){if(S.length)for(;q(S););return F(e),T=l,A+1}var t=2===S.length&&\"=\"!==e;if(/[\\w_\\d\\s]/.test(e)||t){for(;q(S););return T=l,A}return S.push(e),r=e,A+1}function q(t){for(var e,r,n=0;;){if(e=i.indexOf(t.slice(0,t.length+n).join(\"\")),r=i[e],-1===e){if(n--+t.length>0)continue;r=t.slice(0,1).join(\"\")}return F(r),z+=r.length,(S=S.slice(r.length)).length}}function H(){return/[^a-fA-F0-9]/.test(e)?(F(S.join(\"\")),T=l,A):(S.push(e),r=e,A+1)}function G(){return\".\"===e?(S.push(e),T=g,r=e,A+1):/[eE]/.test(e)?(S.push(e),T=g,r=e,A+1):\"x\"===e&&1===S.length&&\"0\"===S[0]?(T=_,S.push(e),r=e,A+1):/[^\\d]/.test(e)?(F(S.join(\"\")),T=l,A):(S.push(e),r=e,A+1)}function W(){return\"f\"===e&&(S.push(e),r=e,A+=1),/[eE]/.test(e)?(S.push(e),r=e,A+1):\"-\"===e&&/[eE]/.test(r)?(S.push(e),r=e,A+1):/[^\\d]/.test(e)?(F(S.join(\"\")),T=l,A):(S.push(e),r=e,A+1)}function Y(){if(/[^\\d\\w_]/.test(e)){var t=S.join(\"\");return T=R.indexOf(t)>-1?y:P.indexOf(t)>-1?m:v,F(S.join(\"\")),T=l,A}return S.push(e),r=e,A+1}};var n=t(\"./lib/literals\"),i=t(\"./lib/operators\"),a=t(\"./lib/builtins\"),o=t(\"./lib/literals-300es\"),s=t(\"./lib/builtins-300es\"),l=999,c=9999,u=0,f=1,h=2,p=3,d=4,g=5,v=6,m=7,y=8,x=9,b=10,_=11,w=[\"block-comment\",\"line-comment\",\"preprocessor\",\"operator\",\"integer\",\"float\",\"ident\",\"builtin\",\"keyword\",\"whitespace\",\"eof\",\"integer\"]},{\"./lib/builtins\":390,\"./lib/builtins-300es\":389,\"./lib/literals\":392,\"./lib/literals-300es\":391,\"./lib/operators\":393}],389:[function(t,e,r){var n=t(\"./builtins\");n=n.slice().filter(function(t){return!/^(gl\\_|texture)/.test(t)}),e.exports=n.concat([\"gl_VertexID\",\"gl_InstanceID\",\"gl_Position\",\"gl_PointSize\",\"gl_FragCoord\",\"gl_FrontFacing\",\"gl_FragDepth\",\"gl_PointCoord\",\"gl_MaxVertexAttribs\",\"gl_MaxVertexUniformVectors\",\"gl_MaxVertexOutputVectors\",\"gl_MaxFragmentInputVectors\",\"gl_MaxVertexTextureImageUnits\",\"gl_MaxCombinedTextureImageUnits\",\"gl_MaxTextureImageUnits\",\"gl_MaxFragmentUniformVectors\",\"gl_MaxDrawBuffers\",\"gl_MinProgramTexelOffset\",\"gl_MaxProgramTexelOffset\",\"gl_DepthRangeParameters\",\"gl_DepthRange\",\"trunc\",\"round\",\"roundEven\",\"isnan\",\"isinf\",\"floatBitsToInt\",\"floatBitsToUint\",\"intBitsToFloat\",\"uintBitsToFloat\",\"packSnorm2x16\",\"unpackSnorm2x16\",\"packUnorm2x16\",\"unpackUnorm2x16\",\"packHalf2x16\",\"unpackHalf2x16\",\"outerProduct\",\"transpose\",\"determinant\",\"inverse\",\"texture\",\"textureSize\",\"textureProj\",\"textureLod\",\"textureOffset\",\"texelFetch\",\"texelFetchOffset\",\"textureProjOffset\",\"textureLodOffset\",\"textureProjLod\",\"textureProjLodOffset\",\"textureGrad\",\"textureGradOffset\",\"textureProjGrad\",\"textureProjGradOffset\"])},{\"./builtins\":390}],390:[function(t,e,r){e.exports=[\"abs\",\"acos\",\"all\",\"any\",\"asin\",\"atan\",\"ceil\",\"clamp\",\"cos\",\"cross\",\"dFdx\",\"dFdy\",\"degrees\",\"distance\",\"dot\",\"equal\",\"exp\",\"exp2\",\"faceforward\",\"floor\",\"fract\",\"gl_BackColor\",\"gl_BackLightModelProduct\",\"gl_BackLightProduct\",\"gl_BackMaterial\",\"gl_BackSecondaryColor\",\"gl_ClipPlane\",\"gl_ClipVertex\",\"gl_Color\",\"gl_DepthRange\",\"gl_DepthRangeParameters\",\"gl_EyePlaneQ\",\"gl_EyePlaneR\",\"gl_EyePlaneS\",\"gl_EyePlaneT\",\"gl_Fog\",\"gl_FogCoord\",\"gl_FogFragCoord\",\"gl_FogParameters\",\"gl_FragColor\",\"gl_FragCoord\",\"gl_FragData\",\"gl_FragDepth\",\"gl_FragDepthEXT\",\"gl_FrontColor\",\"gl_FrontFacing\",\"gl_FrontLightModelProduct\",\"gl_FrontLightProduct\",\"gl_FrontMaterial\",\"gl_FrontSecondaryColor\",\"gl_LightModel\",\"gl_LightModelParameters\",\"gl_LightModelProducts\",\"gl_LightProducts\",\"gl_LightSource\",\"gl_LightSourceParameters\",\"gl_MaterialParameters\",\"gl_MaxClipPlanes\",\"gl_MaxCombinedTextureImageUnits\",\"gl_MaxDrawBuffers\",\"gl_MaxFragmentUniformComponents\",\"gl_MaxLights\",\"gl_MaxTextureCoords\",\"gl_MaxTextureImageUnits\",\"gl_MaxTextureUnits\",\"gl_MaxVaryingFloats\",\"gl_MaxVertexAttribs\",\"gl_MaxVertexTextureImageUnits\",\"gl_MaxVertexUniformComponents\",\"gl_ModelViewMatrix\",\"gl_ModelViewMatrixInverse\",\"gl_ModelViewMatrixInverseTranspose\",\"gl_ModelViewMatrixTranspose\",\"gl_ModelViewProjectionMatrix\",\"gl_ModelViewProjectionMatrixInverse\",\"gl_ModelViewProjectionMatrixInverseTranspose\",\"gl_ModelViewProjectionMatrixTranspose\",\"gl_MultiTexCoord0\",\"gl_MultiTexCoord1\",\"gl_MultiTexCoord2\",\"gl_MultiTexCoord3\",\"gl_MultiTexCoord4\",\"gl_MultiTexCoord5\",\"gl_MultiTexCoord6\",\"gl_MultiTexCoord7\",\"gl_Normal\",\"gl_NormalMatrix\",\"gl_NormalScale\",\"gl_ObjectPlaneQ\",\"gl_ObjectPlaneR\",\"gl_ObjectPlaneS\",\"gl_ObjectPlaneT\",\"gl_Point\",\"gl_PointCoord\",\"gl_PointParameters\",\"gl_PointSize\",\"gl_Position\",\"gl_ProjectionMatrix\",\"gl_ProjectionMatrixInverse\",\"gl_ProjectionMatrixInverseTranspose\",\"gl_ProjectionMatrixTranspose\",\"gl_SecondaryColor\",\"gl_TexCoord\",\"gl_TextureEnvColor\",\"gl_TextureMatrix\",\"gl_TextureMatrixInverse\",\"gl_TextureMatrixInverseTranspose\",\"gl_TextureMatrixTranspose\",\"gl_Vertex\",\"greaterThan\",\"greaterThanEqual\",\"inversesqrt\",\"length\",\"lessThan\",\"lessThanEqual\",\"log\",\"log2\",\"matrixCompMult\",\"max\",\"min\",\"mix\",\"mod\",\"normalize\",\"not\",\"notEqual\",\"pow\",\"radians\",\"reflect\",\"refract\",\"sign\",\"sin\",\"smoothstep\",\"sqrt\",\"step\",\"tan\",\"texture2D\",\"texture2DLod\",\"texture2DProj\",\"texture2DProjLod\",\"textureCube\",\"textureCubeLod\",\"texture2DLodEXT\",\"texture2DProjLodEXT\",\"textureCubeLodEXT\",\"texture2DGradEXT\",\"texture2DProjGradEXT\",\"textureCubeGradEXT\"]},{}],391:[function(t,e,r){var n=t(\"./literals\");e.exports=n.slice().concat([\"layout\",\"centroid\",\"smooth\",\"case\",\"mat2x2\",\"mat2x3\",\"mat2x4\",\"mat3x2\",\"mat3x3\",\"mat3x4\",\"mat4x2\",\"mat4x3\",\"mat4x4\",\"uint\",\"uvec2\",\"uvec3\",\"uvec4\",\"samplerCubeShadow\",\"sampler2DArray\",\"sampler2DArrayShadow\",\"isampler2D\",\"isampler3D\",\"isamplerCube\",\"isampler2DArray\",\"usampler2D\",\"usampler3D\",\"usamplerCube\",\"usampler2DArray\",\"coherent\",\"restrict\",\"readonly\",\"writeonly\",\"resource\",\"atomic_uint\",\"noperspective\",\"patch\",\"sample\",\"subroutine\",\"common\",\"partition\",\"active\",\"filter\",\"image1D\",\"image2D\",\"image3D\",\"imageCube\",\"iimage1D\",\"iimage2D\",\"iimage3D\",\"iimageCube\",\"uimage1D\",\"uimage2D\",\"uimage3D\",\"uimageCube\",\"image1DArray\",\"image2DArray\",\"iimage1DArray\",\"iimage2DArray\",\"uimage1DArray\",\"uimage2DArray\",\"image1DShadow\",\"image2DShadow\",\"image1DArrayShadow\",\"image2DArrayShadow\",\"imageBuffer\",\"iimageBuffer\",\"uimageBuffer\",\"sampler1DArray\",\"sampler1DArrayShadow\",\"isampler1D\",\"isampler1DArray\",\"usampler1D\",\"usampler1DArray\",\"isampler2DRect\",\"usampler2DRect\",\"samplerBuffer\",\"isamplerBuffer\",\"usamplerBuffer\",\"sampler2DMS\",\"isampler2DMS\",\"usampler2DMS\",\"sampler2DMSArray\",\"isampler2DMSArray\",\"usampler2DMSArray\"])},{\"./literals\":392}],392:[function(t,e,r){e.exports=[\"precision\",\"highp\",\"mediump\",\"lowp\",\"attribute\",\"const\",\"uniform\",\"varying\",\"break\",\"continue\",\"do\",\"for\",\"while\",\"if\",\"else\",\"in\",\"out\",\"inout\",\"float\",\"int\",\"void\",\"bool\",\"true\",\"false\",\"discard\",\"return\",\"mat2\",\"mat3\",\"mat4\",\"vec2\",\"vec3\",\"vec4\",\"ivec2\",\"ivec3\",\"ivec4\",\"bvec2\",\"bvec3\",\"bvec4\",\"sampler1D\",\"sampler2D\",\"sampler3D\",\"samplerCube\",\"sampler1DShadow\",\"sampler2DShadow\",\"struct\",\"asm\",\"class\",\"union\",\"enum\",\"typedef\",\"template\",\"this\",\"packed\",\"goto\",\"switch\",\"default\",\"inline\",\"noinline\",\"volatile\",\"public\",\"static\",\"extern\",\"external\",\"interface\",\"long\",\"short\",\"double\",\"half\",\"fixed\",\"unsigned\",\"input\",\"output\",\"hvec2\",\"hvec3\",\"hvec4\",\"dvec2\",\"dvec3\",\"dvec4\",\"fvec2\",\"fvec3\",\"fvec4\",\"sampler2DRect\",\"sampler3DRect\",\"sampler2DRectShadow\",\"sizeof\",\"cast\",\"namespace\",\"using\"]},{}],393:[function(t,e,r){e.exports=[\"<<=\",\">>=\",\"++\",\"--\",\"<<\",\">>\",\"<=\",\">=\",\"==\",\"!=\",\"&&\",\"||\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"&=\",\"^^\",\"^=\",\"|=\",\"(\",\")\",\"[\",\"]\",\".\",\"!\",\"~\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\">\",\"&\",\"^\",\"|\",\"?\",\":\",\"=\",\",\",\";\",\"{\",\"}\"]},{}],394:[function(t,e,r){var n=t(\"./index\");e.exports=function(t,e){var r=n(e),i=[];return i=(i=i.concat(r(t))).concat(r(null))}},{\"./index\":388}],395:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n<t.length-1;n++)r.push(t[n],e[n]||\"\");return r.push(t[n]),r.join(\"\")}},{}],396:[function(t,e,r){(function(r){\"use strict\";var n,i=t(\"is-browser\");n=\"function\"==typeof r.matchMedia?!r.matchMedia(\"(hover: none)\").matches:i,e.exports=n}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"is-browser\":403}],397:[function(t,e,r){\"use strict\";var n=t(\"is-browser\");e.exports=n&&function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"test\",null,e),window.removeEventListener(\"test\",null,e)}catch(e){t=!1}return t}()},{\"is-browser\":403}],398:[function(t,e,r){r.read=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<<s)-1,c=l>>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<<c)-1,f=u>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],399:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=t.length;if(0===r)throw new Error(\"Must have at least d+1 points\");var i=t[0].length;if(r<=i)throw new Error(\"Must input at least d+1 points\");var o=t.slice(0,i+1),s=n.apply(void 0,o);if(0===s)throw new Error(\"Input not in general position\");for(var l=new Array(i+1),u=0;u<=i;++u)l[u]=u;s<0&&(l[0]=1,l[1]=0);for(var f=new a(l,new Array(i+1),!1),h=f.adjacent,p=new Array(i+2),u=0;u<=i;++u){for(var d=l.slice(),g=0;g<=i;++g)g===u&&(d[g]=-1);var v=d[0];d[0]=d[1],d[1]=v;var m=new a(d,new Array(i+1),!0);h[u]=m,p[u]=m}p[i+1]=f;for(var u=0;u<=i;++u)for(var d=h[u].vertices,y=h[u].adjacent,g=0;g<=i;++g){var x=d[g];if(x<0)y[g]=f;else for(var b=0;b<=i;++b)h[b].vertices.indexOf(x)<0&&(y[g]=h[b])}for(var _=new c(i,o,p),w=!!e,u=i+1;u<r;++u)_.insert(t[u],w);return _.boundary()};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\").compareCells;function a(t,e,r){this.vertices=t,this.adjacent=e,this.boundary=r,this.lastVisited=-1}function o(t,e,r){this.vertices=t,this.cell=e,this.index=r}function s(t,e){return i(t.vertices,e.vertices)}a.prototype.flip=function(){var t=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=t;var e=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=e};var l=[];function c(t,e,r){this.dimension=t,this.vertices=e,this.simplices=r,this.interior=r.filter(function(t){return!t.boundary}),this.tuple=new Array(t+1);for(var i=0;i<=t;++i)this.tuple[i]=this.vertices[i];var a=l[t];a||(a=l[t]=function(t){for(var e=[\"function orient(){var tuple=this.tuple;return test(\"],r=0;r<=t;++r)r>0&&e.push(\",\"),e.push(\"tuple[\",r,\"]\");e.push(\")}return orient\");var i=new Function(\"test\",e.join(\"\")),a=n[t+1];return a||(a=n),i(a)}(t)),this.orient=a}var u=c.prototype;u.handleBoundaryDegeneracy=function(t,e){var r=this.dimension,n=this.vertices.length-1,i=this.tuple,a=this.vertices,o=[t];for(t.lastVisited=-n;o.length>0;){(t=o.pop()).vertices;for(var s=t.adjacent,l=0;l<=r;++l){var c=s[l];if(c.boundary&&!(c.lastVisited<=-n)){for(var u=c.vertices,f=0;f<=r;++f){var h=u[f];i[f]=h<0?e:a[h]}var p=this.orient();if(p>0)return c;c.lastVisited=-n,0===p&&o.push(c)}}}return null},u.walk=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,a=this.tuple,o=e?this.interior.length*Math.random()|0:this.interior.length-1,s=this.interior[o];t:for(;!s.boundary;){for(var l=s.vertices,c=s.adjacent,u=0;u<=n;++u)a[u]=i[l[u]];s.lastVisited=r;for(u=0;u<=n;++u){var f=c[u];if(!(f.lastVisited>=r)){var h=a[u];a[u]=t;var p=this.orient();if(a[u]=h,p<0){s=f;continue t}f.boundary?f.lastVisited=-r:f.lastVisited=r}}return}return s},u.addPeaks=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,l=this.tuple,c=this.interior,u=this.simplices,f=[e];e.lastVisited=r,e.vertices[e.vertices.indexOf(-1)]=r,e.boundary=!1,c.push(e);for(var h=[];f.length>0;){var p=(e=f.pop()).vertices,d=e.adjacent,g=p.indexOf(r);if(!(g<0))for(var v=0;v<=n;++v)if(v!==g){var m=d[v];if(m.boundary&&!(m.lastVisited>=r)){var y=m.vertices;if(m.lastVisited!==-r){for(var x=0,b=0;b<=n;++b)y[b]<0?(x=b,l[b]=t):l[b]=i[y[b]];if(this.orient()>0){y[x]=r,m.boundary=!1,c.push(m),f.push(m),m.lastVisited=r;continue}m.lastVisited=-r}var _=m.adjacent,w=p.slice(),k=d.slice(),A=new a(w,k,!0);u.push(A);var M=_.indexOf(e);if(!(M<0)){_[M]=A,k[g]=m,w[v]=-1,k[v]=e,d[v]=A,A.flip();for(b=0;b<=n;++b){var T=w[b];if(!(T<0||T===r)){for(var S=new Array(n-1),C=0,E=0;E<=n;++E){var L=w[E];L<0||E===b||(S[C++]=L)}h.push(new o(S,A,b))}}}}}}h.sort(s);for(v=0;v+1<h.length;v+=2){var z=h[v],O=h[v+1],I=z.index,D=O.index;I<0||D<0||(z.cell.adjacent[z.index]=O.cell,O.cell.adjacent[O.index]=z.cell)}},u.insert=function(t,e){var r=this.vertices;r.push(t);var n=this.walk(t,e);if(n){for(var i=this.dimension,a=this.tuple,o=0;o<=i;++o){var s=n.vertices[o];a[o]=s<0?t:r[s]}var l=this.orient(a);l<0||(0!==l||(n=this.handleBoundaryDegeneracy(n,t)))&&this.addPeaks(t,n)}},u.boundary=function(){for(var t=this.dimension,e=[],r=this.simplices,n=r.length,i=0;i<n;++i){var a=r[i];if(a.boundary){for(var o=new Array(t),s=a.vertices,l=0,c=0,u=0;u<=t;++u)s[u]>=0?o[l++]=s[u]:c=1&u;if(c===(1&t)){var f=o[0];o[0]=o[1],o[1]=f}e.push(o)}}return e}},{\"robust-orientation\":488,\"simplicial-complex\":498}],400:[function(t,e,r){\"use strict\";var n=t(\"binary-search-bounds\"),i=0,a=1;function o(t,e,r,n,i){this.mid=t,this.left=e,this.right=r,this.leftPoints=n,this.rightPoints=i,this.count=(e?e.count:0)+(r?r.count:0)+n.length}e.exports=function(t){if(!t||0===t.length)return new x(null);return new x(y(t))};var s=o.prototype;function l(t,e){t.mid=e.mid,t.left=e.left,t.right=e.right,t.leftPoints=e.leftPoints,t.rightPoints=e.rightPoints,t.count=e.count}function c(t,e){var r=y(e);t.mid=r.mid,t.left=r.left,t.right=r.right,t.leftPoints=r.leftPoints,t.rightPoints=r.rightPoints,t.count=r.count}function u(t,e){var r=t.intervals([]);r.push(e),c(t,r)}function f(t,e){var r=t.intervals([]),n=r.indexOf(e);return n<0?i:(r.splice(n,1),c(t,r),a)}function h(t,e,r){for(var n=0;n<t.length&&t[n][0]<=e;++n){var i=r(t[n]);if(i)return i}}function p(t,e,r){for(var n=t.length-1;n>=0&&t[n][1]>=e;--n){var i=r(t[n]);if(i)return i}}function d(t,e){for(var r=0;r<t.length;++r){var n=e(t[r]);if(n)return n}}function g(t,e){return t-e}function v(t,e){var r=t[0]-e[0];return r||t[1]-e[1]}function m(t,e){var r=t[1]-e[1];return r||t[0]-e[0]}function y(t){if(0===t.length)return null;for(var e=[],r=0;r<t.length;++r)e.push(t[r][0],t[r][1]);e.sort(g);var n=e[e.length>>1],i=[],a=[],s=[];for(r=0;r<t.length;++r){var l=t[r];l[1]<n?i.push(l):n<l[0]?a.push(l):s.push(l)}var c=s,u=s.slice();return c.sort(v),u.sort(m),new o(n,y(i),y(a),c,u)}function x(t){this.root=t}s.intervals=function(t){return t.push.apply(t,this.leftPoints),this.left&&this.left.intervals(t),this.right&&this.right.intervals(t),t},s.insert=function(t){var e=this.count-this.leftPoints.length;if(this.count+=1,t[1]<this.mid)this.left?4*(this.left.count+1)>3*(e+1)?u(this,t):this.left.insert(t):this.left=y([t]);else if(t[0]>this.mid)this.right?4*(this.right.count+1)>3*(e+1)?u(this,t):this.right.insert(t):this.right=y([t]);else{var r=n.ge(this.leftPoints,t,v),i=n.ge(this.rightPoints,t,m);this.leftPoints.splice(r,0,t),this.rightPoints.splice(i,0,t)}},s.remove=function(t){var e=this.count-this.leftPoints;if(t[1]<this.mid)return this.left?4*(this.right?this.right.count:0)>3*(e-1)?f(this,t):2===(c=this.left.remove(t))?(this.left=null,this.count-=1,a):(c===a&&(this.count-=1),c):i;if(t[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(e-1)?f(this,t):2===(c=this.right.remove(t))?(this.right=null,this.count-=1,a):(c===a&&(this.count-=1),c):i;if(1===this.count)return this.leftPoints[0]===t?2:i;if(1===this.leftPoints.length&&this.leftPoints[0]===t){if(this.left&&this.right){for(var r=this,o=this.left;o.right;)r=o,o=o.right;if(r===this)o.right=this.right;else{var s=this.left,c=this.right;r.count-=o.count,r.right=o.left,o.left=s,o.right=c}l(this,o),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?l(this,this.left):l(this,this.right);return a}for(s=n.ge(this.leftPoints,t,v);s<this.leftPoints.length&&this.leftPoints[s][0]===t[0];++s)if(this.leftPoints[s]===t){this.count-=1,this.leftPoints.splice(s,1);for(c=n.ge(this.rightPoints,t,m);c<this.rightPoints.length&&this.rightPoints[c][1]===t[1];++c)if(this.rightPoints[c]===t)return this.rightPoints.splice(c,1),a}return i},s.queryPoint=function(t,e){if(t<this.mid){if(this.left)if(r=this.left.queryPoint(t,e))return r;return h(this.leftPoints,t,e)}if(t>this.mid){var r;if(this.right)if(r=this.right.queryPoint(t,e))return r;return p(this.rightPoints,t,e)}return d(this.leftPoints,e)},s.queryInterval=function(t,e,r){var n;if(t<this.mid&&this.left&&(n=this.left.queryInterval(t,e,r)))return n;if(e>this.mid&&this.right&&(n=this.right.queryInterval(t,e,r)))return n;return e<this.mid?h(this.leftPoints,e,r):t>this.mid?p(this.rightPoints,t,r):d(this.leftPoints,r)};var b=x.prototype;b.insert=function(t){this.root?this.root.insert(t):this.root=new o(t[0],null,null,[t],[t])},b.remove=function(t){if(this.root){var e=this.root.remove(t);return 2===e&&(this.root=null),e!==i}return!1},b.queryPoint=function(t,e){if(this.root)return this.root.queryPoint(t,e)},b.queryInterval=function(t,e,r){if(t<=e&&this.root)return this.root.queryInterval(t,e,r)},Object.defineProperty(b,\"count\",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(b,\"intervals\",{get:function(){return this.root?this.root.intervals([]):[]}})},{\"binary-search-bounds\":80}],401:[function(t,e,r){\"use strict\";e.exports=function(t,e){e=e||new Array(t.length);for(var r=0;r<t.length;++r)e[t[r]]=r;return e}},{}],402:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=new Array(t),r=0;r<t;++r)e[r]=r;return e}},{}],403:[function(t,e,r){e.exports=!0},{}],404:[function(t,e,r){function n(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}e.exports=function(t){return null!=t&&(n(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},{}],405:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],406:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;return e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"==typeof e&&(t.tablet?i.test(e):n.test(e))}},{}],407:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],408:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],409:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n<r;n++)if(((e=t.charCodeAt(n))<9||e>13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],410:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],411:[function(t,e,r){e.exports=function(t,e,r){return t*(1-r)+e*r}},{}],412:[function(t,e,r){(function(t){!function(t,n){\"object\"==typeof r&&\"undefined\"!=typeof e?e.exports=n():t.mapboxgl=n()}(this,function(){\"use strict\";var e,r,n;function i(t,i){if(e)if(r){var a=\"var sharedChunk = {}; (\"+e+\")(sharedChunk); (\"+r+\")(sharedChunk);\",o={};e(o),(n=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else r=i;else e=i}return i(0,function(e){var r=\"undefined\"!=typeof window?window:\"undefined\"!=typeof t?t:\"undefined\"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}function i(t,e){return t(e={exports:{}},e.exports),e.exports}var a=o;function o(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}o.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},o.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},o.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},o.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)<e)return i;var s=this.sampleCurveDerivativeX(i);if(Math.abs(s)<1e-6)break;i-=a/s}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(a=this.sampleCurveX(i),Math.abs(a-t)<e)return i;t>a?r=i:n=i,i=.5*(n-r)+r}return i},o.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var s=function(t,e,r){this.column=t,this.row=e,this.zoom=r};s.prototype.clone=function(){return new s(this.column,this.row,this.zoom)},s.prototype.zoomTo=function(t){return this.clone()._zoomTo(t)},s.prototype.sub=function(t){return this.clone()._sub(t)},s.prototype._zoomTo=function(t){var e=Math.pow(2,t-this.zoom);return this.column*=e,this.row*=e,this.zoom=t,this},s.prototype._sub=function(t){return t=t.zoomTo(this.zoom),this.column-=t.column,this.row-=t.row,this};var l=c;function c(t,e){this.x=t,this.y=e}function u(t,e,r,n){var i=new a(t,e,r,n);return function(t){return i.solve(t)}}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(t){return t instanceof c?t:Array.isArray(t)?new c(t[0],t[1]):t};var f=u(.25,.1,.25,1);function h(t,e,r){return Math.min(r,Math.max(e,t))}function p(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o]}return t}var d=1;function g(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e))})}function v(t,e){return-1!==t.indexOf(e,t.length-e.length)}function m(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?m(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function k(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r<n;i=r++)a=t[r],e+=((o=t[i]).x-a.x)*(a.y+o.y);return e}var A={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(A);var M=function(t){function e(e,r,n){t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error);function T(t){var e=new self.XMLHttpRequest;for(var r in e.open(\"GET\",t.url,!0),t.headers)e.setRequestHeader(r,t.headers[r]);return e.withCredentials=\"include\"===t.credentials,e}var S=function(t,e){var r=T(t);return r.responseType=\"arraybuffer\",r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){var n=r.response;if(0===n.byteLength&&200===r.status)return e(new Error(\"http status 200 returned without content.\"));r.status>=200&&r.status<300&&r.response?e(null,{data:n,cacheControl:r.getResponseHeader(\"Cache-Control\"),expires:r.getResponseHeader(\"Expires\")}):e(new M(r.statusText,r.status,t.url))},r.send(),r};function C(t,e,r){r[t]=r[t]||[],r[t].push(e)}function E(t,e,r){if(r&&r[t]){var n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1)}}var L=function(t,e){void 0===e&&(e={}),p(this,e),this.type=t},z=function(t){function e(e,r){void 0===r&&(r={}),t.call(this,\"error\",p({error:e},r))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(L),O=function(){};O.prototype.on=function(t,e){return this._listeners=this._listeners||{},C(t,e,this._listeners),this},O.prototype.off=function(t,e){return E(t,e,this._listeners),E(t,e,this._oneTimeListeners),this},O.prototype.once=function(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},C(t,e,this._oneTimeListeners),this},O.prototype.fire=function(t){\"string\"==typeof t&&(t=new L(t,arguments[1]||{}));var e=t.type;if(this.listens(e)){t.target=this;for(var r=0,n=this._listeners&&this._listeners[e]?this._listeners[e].slice():[];r<n.length;r+=1)n[r].call(this,t);for(var i=0,a=this._oneTimeListeners&&this._oneTimeListeners[e]?this._oneTimeListeners[e].slice():[];i<a.length;i+=1){var o=a[i];E(e,o,this._oneTimeListeners),o.call(this,t)}var s=this._eventedParent;s&&(p(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),s.fire(t))}else v(e,\"error\")?console.error(t&&t.error||t||\"Empty error event\"):v(e,\"warning\")&&console.warn(t&&t.warning||t||\"Empty warning event\");return this},O.prototype.listens=function(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},O.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var I={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.0511,180,85.0511]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.0511,180,85.0511]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.0511,180,85.0511]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},lineMetrics:{type:\"boolean\",default:!1}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_fill:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_circle:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_line:{\"line-cap\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{butt:{},round:{},square:{}},default:\"butt\"},\"line-join\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,values:{bevel:{},round:{},miter:{}},default:\"miter\"},\"line-miter-limit\":{type:\"number\",default:2,function:\"interpolated\",\"zoom-function\":!0,requires:[{\"line-join\":\"miter\"}]},\"line-round-limit\":{type:\"number\",default:1.05,function:\"interpolated\",\"zoom-function\":!0,requires:[{\"line-join\":\"round\"}]},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{point:{},line:{}},default:\"point\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,function:\"interpolated\",\"zoom-function\":!0,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}]},\"symbol-avoid-edges\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1},\"icon-allow-overlap\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"icon-image\"]},\"icon-ignore-placement\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"icon-image\"]},\"icon-optional\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"icon-image\",\"text-field\"]},\"icon-rotation-alignment\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"]},\"icon-size\":{type:\"number\",default:1,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,units:\"factor of the original icon size\",requires:[\"icon-image\"]},\"icon-text-fit\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"]},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",function:\"interpolated\",\"zoom-function\":!0,requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}]},\"icon-image\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,tokens:!0},\"icon-rotate\":{type:\"number\",default:0,period:360,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,units:\"degrees\",requires:[\"icon-image\"]},\"icon-padding\":{type:\"number\",default:2,minimum:0,function:\"interpolated\",\"zoom-function\":!0,units:\"pixels\",requires:[\"icon-image\"]},\"icon-keep-upright\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,requires:[\"icon-image\"]},\"icon-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"]},\"icon-pitch-alignment\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"]},\"text-pitch-alignment\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"]},\"text-rotation-alignment\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"]},\"text-field\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,default:\"\",tokens:!0},\"text-font\":{type:\"array\",value:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"]},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,requires:[\"text-field\"]},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,requires:[\"text-field\"]},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",function:\"interpolated\",\"zoom-function\":!0,requires:[\"text-field\"]},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,requires:[\"text-field\"]},\"text-justify\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,values:{left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"]},\"text-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\"]},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",function:\"interpolated\",\"zoom-function\":!0,requires:[\"text-field\",{\"symbol-placement\":\"line\"}]},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,requires:[\"text-field\"]},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",function:\"interpolated\",\"zoom-function\":!0,requires:[\"text-field\"]},\"text-keep-upright\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"text-transform\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,\"property-function\":!0,values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"]},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,length:2,default:[0,0],requires:[\"text-field\"]},\"text-allow-overlap\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"text-field\"]},\"text-ignore-placement\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"text-field\"]},\"text-optional\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!1,requires:[\"text-field\",\"icon-image\"]},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function_stop:{type:\"array\",minimum:0,maximum:22,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Heatmap\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},transition:!1,\"zoom-function\":!0,\"property-function\":!1,function:\"piecewise-constant\"},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",transition:!0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1},color:{type:\"color\",default:\"#ffffff\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1,transition:!0},intensity:{type:\"number\",default:.5,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1,transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",function:\"piecewise-constant\",\"zoom-function\":!0,default:!0},\"fill-opacity\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,default:1,minimum:0,maximum:1,transition:!0},\"fill-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[{\"!\":\"fill-pattern\"}]},\"fill-outline-color\":{type:\"color\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}]},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\"},\"fill-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"]},\"fill-pattern\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,transition:!0}},paint_line:{\"line-opacity\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,default:1,minimum:0,maximum:1,transition:!0},\"line-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[{\"!\":\"line-pattern\"}]},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\"},\"line-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"]},\"line-width\":{type:\"number\",default:1,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"line-offset\":{type:\"number\",default:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"line-blur\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"line-dasharray\":{type:\"array\",value:\"number\",function:\"piecewise-constant\",\"zoom-function\":!0,minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}]},\"line-pattern\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,transition:!0},\"line-gradient\":{type:\"color\",function:\"interpolated\",\"zoom-function\":!1,\"property-function\":!1,transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}]}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"circle-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0},\"circle-blur\":{type:\"number\",default:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\"},\"circle-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"]},\"circle-pitch-scale\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\"},\"circle-pitch-alignment\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"viewport\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!1},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1,transition:!0},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],function:\"interpolated\",\"zoom-function\":!1,\"property-function\":!1,transition:!1},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1,transition:!0}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"icon-image\"]},\"icon-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"icon-image\"]},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"icon-image\"]},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\",requires:[\"icon-image\"]},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\",requires:[\"icon-image\"]},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\",requires:[\"icon-image\"]},\"icon-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"]},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"text-field\"]},\"text-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"text-field\"]},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[\"text-field\"]},\"text-halo-width\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\",requires:[\"text-field\"]},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,units:\"pixels\",requires:[\"text-field\"]},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\",requires:[\"text-field\"]},\"text-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"]}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"degrees\"},\"raster-brightness-min\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,default:0,minimum:0,maximum:1,transition:!0},\"raster-brightness-max\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,default:1,minimum:0,maximum:1,transition:!0},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,function:\"interpolated\",\"zoom-function\":!0,transition:!1,units:\"milliseconds\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,function:\"interpolated\",\"zoom-function\":!0,transition:!1},\"hillshade-illumination-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"viewport\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",function:\"interpolated\",\"zoom-function\":!0,transition:!0},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,transition:!0}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,transition:!0,requires:[{\"!\":\"background-pattern\"}]},\"background-pattern\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,transition:!0},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,function:\"interpolated\",\"zoom-function\":!0,transition:!0}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\"}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!1,default:1,minimum:0,maximum:1,transition:!0},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}]},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],function:\"interpolated\",\"zoom-function\":!0,transition:!0,units:\"pixels\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",function:\"piecewise-constant\",\"zoom-function\":!0,values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"]},\"fill-extrusion-pattern\":{type:\"string\",function:\"piecewise-constant\",\"zoom-function\":!0,transition:!0},\"fill-extrusion-height\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,default:0,minimum:0,units:\"meters\",transition:!0},\"fill-extrusion-base\":{type:\"number\",function:\"interpolated\",\"zoom-function\":!0,\"property-function\":!0,default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"]}}},D=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function P(t){var e=t.key,r=t.value;return r?[new D(e,r,\"constants have been deprecated as of v8\")]:[]}function R(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o]}return t}function F(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function B(t){return Array.isArray(t)?t.map(B):F(t)}var N=function(t){function e(e,r){t.call(this,r),this.message=r,this.key=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),j=function(t,e){void 0===e&&(e=[]),this.parent=t,this.bindings={};for(var r=0,n=e;r<n.length;r+=1){var i=n[r],a=i[0],o=i[1];this.bindings[a]=o}};j.prototype.concat=function(t){return new j(this,t)},j.prototype.get=function(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+\" not found in scope.\")},j.prototype.has=function(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)};var V={kind:\"null\"},U={kind:\"number\"},q={kind:\"string\"},H={kind:\"boolean\"},G={kind:\"color\"},W={kind:\"object\"},Y={kind:\"value\"},X={kind:\"collator\"};function Z(t,e){return{kind:\"array\",itemType:t,N:e}}function $(t){if(\"array\"===t.kind){var e=$(t.itemType);return\"number\"==typeof t.N?\"array<\"+e+\", \"+t.N+\">\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var J=[V,U,q,H,G,W,Z(Y)];function K(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&!K(t.itemType,e.itemType)&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=J;r<n.length;r+=1)if(!K(n[r],e))return null}return\"Expected \"+$(t)+\" but found \"+$(e)+\" instead.\"}var Q=i(function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return(t=Math.round(t))<0?0:t>255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),v=g<=.5?g*(d+1):g+d-g*d,m=2*g-v;return[n(255*s(m,v,p+1/3)),n(255*s(m,v,p)),n(255*s(m,v,p-1/3)),h];default:return null}}return null}}catch(t){}}).parseCSSColor,tt=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};tt.parse=function(t){if(t){if(t instanceof tt)return t;if(\"string\"==typeof t){var e=Q(t);if(e)return new tt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},tt.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},tt.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},tt.black=new tt(0,0,0,1),tt.white=new tt(1,1,1,1),tt.transparent=new tt(0,0,0,0);var et=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};et.prototype.compare=function(t,e){return this.collator.compare(t,e)},et.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var rt=function(t,e,r){this.type=X,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e};function nt(t,e,r,n){return\"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function it(t){if(null===t)return V;if(\"string\"==typeof t)return q;if(\"boolean\"==typeof t)return H;if(\"number\"==typeof t)return U;if(t instanceof tt)return G;if(t instanceof et)return X;if(Array.isArray(t)){for(var e,r=t.length,n=0,i=t;n<i.length;n+=1){var a=it(i[n]);if(e){if(e===a)continue;e=Y;break}e=a}return Z(e||Y,r)}return W}rt.parse=function(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");var r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");var n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,H);if(!n)return null;var i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,H);if(!i)return null;var a=null;return r.locale&&!(a=e.parse(r.locale,1,q))?null:new rt(n,i,a)},rt.prototype.evaluate=function(t){return new et(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},rt.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale)},rt.prototype.possibleOutputs=function(){return[void 0]},rt.prototype.serialize=function(){var t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]};var at=function(t,e){this.type=t,this.value=e};at.parse=function(t,e){if(2!==t.length)return e.error(\"'literal' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(!function t(e){if(null===e)return!0;if(\"string\"==typeof e)return!0;if(\"boolean\"==typeof e)return!0;if(\"number\"==typeof e)return!0;if(e instanceof tt)return!0;if(e instanceof et)return!0;if(Array.isArray(e)){for(var r=0,n=e;r<n.length;r+=1)if(!t(n[r]))return!1;return!0}if(\"object\"==typeof e){for(var i in e)if(!t(e[i]))return!1;return!0}return!1}(t[1]))return e.error(\"invalid value\");var r=t[1],n=it(r),i=e.expectedType;return\"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new at(n,r)},at.prototype.evaluate=function(){return this.value},at.prototype.eachChild=function(){},at.prototype.possibleOutputs=function(){return[this.value]},at.prototype.serialize=function(){return\"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof tt?[\"rgba\"].concat(this.value.toArray()):this.value};var ot=function(t){this.name=\"ExpressionEvaluationError\",this.message=t};ot.prototype.toJSON=function(){return this.message};var st={string:q,number:U,boolean:H,object:W},lt=function(t,e){this.type=t,this.args=e};lt.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");for(var r=t[0],n=st[r],i=[],a=1;a<t.length;a++){var o=e.parse(t[a],a,Y);if(!o)return null;i.push(o)}return new lt(n,i)},lt.prototype.evaluate=function(t){for(var e=0;e<this.args.length;e++){var r=this.args[e].evaluate(t);if(!K(this.type,it(r)))return r;if(e===this.args.length-1)throw new ot(\"Expected value to be of type \"+$(this.type)+\", but found \"+$(it(r))+\" instead.\")}return null},lt.prototype.eachChild=function(t){this.args.forEach(t)},lt.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.args.map(function(t){return t.possibleOutputs()}));var t},lt.prototype.serialize=function(){return[this.type.kind].concat(this.args.map(function(t){return t.serialize()}))};var ct={string:q,number:U,boolean:H},ut=function(t,e){this.type=t,this.input=e};ut.parse=function(t,e){if(t.length<2||t.length>4)return e.error(\"Expected 1, 2, or 3 arguments, but found \"+(t.length-1)+\" instead.\");var r,n;if(t.length>2){var i=t[1];if(\"string\"!=typeof i||!(i in ct))return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);r=ct[i]}else r=Y;if(t.length>3){if(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2]))return e.error('The length argument to \"array\" must be a positive integer literal',2);n=t[2]}var a=Z(r,n),o=e.parse(t[t.length-1],t.length-1,Y);return o?new ut(a,o):null},ut.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(K(this.type,it(e)))throw new ot(\"Expected value to be of type \"+$(this.type)+\", but found \"+$(it(e))+\" instead.\");return e},ut.prototype.eachChild=function(t){t(this.input)},ut.prototype.possibleOutputs=function(){return this.input.possibleOutputs()},ut.prototype.serialize=function(){var t=[\"array\"],e=this.type.itemType;if(\"string\"===e.kind||\"number\"===e.kind||\"boolean\"===e.kind){t.push(e.kind);var r=this.type.N;\"number\"==typeof r&&t.push(r)}return t.push(this.input.serialize()),t};var ft={\"to-number\":U,\"to-color\":G},ht=function(t,e){this.type=t,this.args=e};ht.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");for(var r=t[0],n=ft[r],i=[],a=1;a<t.length;a++){var o=e.parse(t[a],a,Y);if(!o)return null;i.push(o)}return new ht(n,i)},ht.prototype.evaluate=function(t){if(\"color\"===this.type.kind){for(var e,r,n=0,i=this.args;n<i.length;n+=1)if(r=null,\"string\"==typeof(e=i[n].evaluate(t))){var a=t.parseColor(e);if(a)return a}else if(Array.isArray(e)&&!(r=e.length<3||e.length>4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":nt(e[0],e[1],e[2],e[3])))return new tt(e[0]/255,e[1]/255,e[2]/255,e[3]);throw new ot(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:JSON.stringify(e))+\"'\")}for(var o=null,s=0,l=this.args;s<l.length;s+=1)if(null!==(o=l[s].evaluate(t))){var c=Number(o);if(!isNaN(c))return c}throw new ot(\"Could not convert \"+JSON.stringify(o)+\" to number.\")},ht.prototype.eachChild=function(t){this.args.forEach(t)},ht.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.args.map(function(t){return t.possibleOutputs()}));var t},ht.prototype.serialize=function(){var t=[\"to-\"+this.type.kind];return this.eachChild(function(e){t.push(e.serialize())}),t};var pt=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],dt=function(){this._parseColorCache={}};dt.prototype.id=function(){return this.feature&&\"id\"in this.feature?this.feature.id:null},dt.prototype.geometryType=function(){return this.feature?\"number\"==typeof this.feature.type?pt[this.feature.type]:this.feature.type:null},dt.prototype.properties=function(){return this.feature&&this.feature.properties||{}},dt.prototype.parseColor=function(t){var e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=tt.parse(t)),e};var gt=function(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n};function vt(t){if(t instanceof gt){if(\"get\"===t.name&&1===t.args.length)return!1;if(\"has\"===t.name&&1===t.args.length)return!1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return!1;if(/^filter-/.test(t.name))return!1}var e=!0;return t.eachChild(function(t){e&&!vt(t)&&(e=!1)}),e}function mt(t,e){if(t instanceof gt&&e.indexOf(t.name)>=0)return!1;var r=!0;return t.eachChild(function(t){r&&!mt(t,e)&&(r=!1)}),r}gt.prototype.evaluate=function(t){return this._evaluate(t,this.args)},gt.prototype.eachChild=function(t){this.args.forEach(t)},gt.prototype.possibleOutputs=function(){return[void 0]},gt.prototype.serialize=function(){return[this.name].concat(this.args.map(function(t){return t.serialize()}))},gt.parse=function(t,e){var r=t[0],n=gt.definitions[r];if(!n)return e.error('Unknown expression \"'+r+'\". If you wanted a literal array, use [\"literal\", [...]].',0);for(var i=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,o=a.filter(function(e){var r=e[0];return!Array.isArray(r)||r.length===t.length-1}),s=[],l=1;l<t.length;l++){var c=t[l],u=void 0;if(1===o.length){var f=o[0][0];u=Array.isArray(f)?f[l-1]:f.type}var h=e.parse(c,1+s.length,u);if(!h)return null;s.push(h)}for(var p=null,d=0,g=o;d<g.length;d+=1){var v=g[d],m=v[0],y=v[1];if(p=new xt(e.registry,e.path,null,e.scope),Array.isArray(m)&&m.length!==s.length)p.error(\"Expected \"+m.length+\" arguments, but found \"+s.length+\" instead.\");else{for(var x=0;x<s.length;x++){var b=Array.isArray(m)?m[x]:m.type,_=s[x];p.concat(x+1).checkSubtype(b,_.type)}if(0===p.errors.length)return new gt(r,i,y,s)}}if(1===o.length)e.errors.push.apply(e.errors,p.errors);else{var w=(o.length?o:a).map(function(t){var e;return e=t[0],Array.isArray(e)?\"(\"+e.map($).join(\", \")+\")\":\"(\"+$(e.type)+\"...)\"}).join(\" | \"),k=s.map(function(t){return $(t.type)}).join(\", \");e.error(\"Expected arguments of type \"+w+\", but found (\"+k+\") instead.\")}return null},gt.register=function(t,e){for(var r in gt.definitions=e,e)t[r]=gt};var yt=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e};yt.parse=function(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");var r=t[1];return e.scope.has(r)?new yt(r,e.scope.get(r)):e.error('Unknown variable \"'+r+'\". Make sure \"'+r+'\" has been bound in an enclosing \"let\" expression before using it.',1)},yt.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},yt.prototype.eachChild=function(){},yt.prototype.possibleOutputs=function(){return[void 0]},yt.prototype.serialize=function(){return[\"var\",this.name]};var xt=function(t,e,r,n,i){void 0===e&&(e=[]),void 0===n&&(n=new j),void 0===i&&(i=[]),this.registry=t,this.path=e,this.key=e.map(function(t){return\"[\"+t+\"]\"}).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r};function bt(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)],n=t[o+1],e===r||e>r&&e<n)return o;if(r<e)i=o+1;else{if(!(r>e))throw new ot(\"Input is not a number.\");a=o-1}}return Math.max(o-1,0)}xt.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},xt.prototype._parse=function(t,e){if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var r=t[0];if(\"string\"!=typeof r)return this.error(\"Expression name must be a string, but found \"+typeof r+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var n=this.registry[r];if(n){var i=n.parse(t,this);if(!i)return null;if(this.expectedType){var a=this.expectedType,o=i.type;if(\"string\"!==a.kind&&\"number\"!==a.kind&&\"boolean\"!==a.kind&&\"object\"!==a.kind||\"value\"!==o.kind)if(\"array\"===a.kind&&\"value\"===o.kind)e.omitTypeAnnotations||(i=new ut(a,i));else if(\"color\"!==a.kind||\"value\"!==o.kind&&\"string\"!==o.kind){if(this.checkSubtype(this.expectedType,i.type))return null}else e.omitTypeAnnotations||(i=new ht(a,[i]));else e.omitTypeAnnotations||(i=new lt(a,[i]))}if(!(i instanceof at)&&function t(e){if(e instanceof yt)return t(e.boundExpression);if(e instanceof gt&&\"error\"===e.name)return!1;if(e instanceof rt)return!1;var r=e instanceof ht||e instanceof lt||e instanceof ut,n=!0;return e.eachChild(function(e){n=r?n&&t(e):n&&e instanceof at}),!!n&&(vt(e)&&mt(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"is-supported-script\"]))}(i)){var s=new dt;try{i=new at(i.type,i.evaluate(s))}catch(t){return this.error(t.message),null}}return i}return this.error('Unknown expression \"'+r+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},xt.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new xt(this.registry,n,e||null,i,this.errors)},xt.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map(function(t){return\"[\"+t+\"]\"}).join(\"\");this.errors.push(new N(n,t))},xt.prototype.checkSubtype=function(t,e){var r=K(t,e);return r&&this.error(r),r};var _t=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n<i.length;n+=1){var a=i[n],o=a[0],s=a[1];this.labels.push(o),this.outputs.push(s)}};function wt(t,e,r){return t*(1-r)+e*r}_t.parse=function(t,e){var r=t[1],n=t.slice(2);if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(r=e.parse(r,1,U)))return null;var i=[],a=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(a=e.expectedType),n.unshift(-1/0);for(var o=0;o<n.length;o+=2){var s=n[o],l=n[o+1],c=o+1,u=o+2;if(\"number\"!=typeof s)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',c);if(i.length&&i[i.length-1][0]>=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',c);var f=e.parse(l,u,a);if(!f)return null;a=a||f.type,i.push([s,f])}return new _t(a,r,i)},_t.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[bt(e,n)].evaluate(t)},_t.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e])},_t.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.outputs.map(function(t){return t.possibleOutputs()}));var t},_t.prototype.serialize=function(){for(var t=[\"step\",this.input.serialize()],e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var kt=Object.freeze({number:wt,color:function(t,e,r){return new tt(wt(t.r,e.r,r),wt(t.g,e.g,r),wt(t.b,e.b,r),wt(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,n){return wt(t,e[n],r)})}}),At=function(t,e,r,n){this.type=t,this.interpolation=e,this.input=r,this.labels=[],this.outputs=[];for(var i=0,a=n;i<a.length;i+=1){var o=a[i],s=o[0],l=o[1];this.labels.push(s),this.outputs.push(l)}};function Mt(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}At.interpolationFactor=function(t,e,r,n){var i=0;if(\"exponential\"===t.name)i=Mt(e,t.base,r,n);else if(\"linear\"===t.name)i=Mt(e,1,r,n);else if(\"cubic-bezier\"===t.name){var o=t.controlPoints;i=new a(o[0],o[1],o[2],o[3]).solve(Mt(e,1,r,n))}return i},At.parse=function(t,e){var r=t[1],n=t[2],i=t.slice(3);if(!Array.isArray(r)||0===r.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===r[0])r={name:\"linear\"};else if(\"exponential\"===r[0]){var a=r[1];if(\"number\"!=typeof a)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);r={name:\"exponential\",base:a}}else{if(\"cubic-bezier\"!==r[0])return e.error(\"Unknown interpolation type \"+String(r[0]),1,0);var o=r.slice(1);if(4!==o.length||o.some(function(t){return\"number\"!=typeof t||t<0||t>1}))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);r={name:\"cubic-bezier\",controlPoints:o}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(n=e.parse(n,2,U)))return null;var s=[],l=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(l=e.expectedType);for(var c=0;c<i.length;c+=2){var u=i[c],f=i[c+1],h=c+3,p=c+4;if(\"number\"!=typeof u)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',h);if(s.length&&s[s.length-1][0]>=u)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',h);var d=e.parse(f,p,l);if(!d)return null;l=l||d.type,s.push([u,d])}return\"number\"===l.kind||\"color\"===l.kind||\"array\"===l.kind&&\"number\"===l.itemType.kind&&\"number\"==typeof l.N?new At(l,r,n,s):e.error(\"Type \"+$(l)+\" is not interpolatable.\")},At.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=bt(e,n),o=e[a],s=e[a+1],l=At.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return kt[this.type.kind.toLowerCase()](c,u,l)},At.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e])},At.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.outputs.map(function(t){return t.possibleOutputs()}));var t},At.prototype.serialize=function(){for(var t=[\"interpolate\",\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints),this.input.serialize()],e=0;e<this.labels.length;e++)t.push(this.labels[e],this.outputs[e].serialize());return t};var Tt=function(t,e){this.type=t,this.args=e};Tt.parse=function(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");var r=null,n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);for(var i=[],a=0,o=t.slice(1);a<o.length;a+=1){var s=o[a],l=e.parse(s,1+i.length,r,void 0,{omitTypeAnnotations:!0});if(!l)return null;r=r||l.type,i.push(l)}var c=n&&i.some(function(t){return K(n,t.type)});return new Tt(c?Y:r,i)},Tt.prototype.evaluate=function(t){for(var e=null,r=0,n=this.args;r<n.length&&null===(e=n[r].evaluate(t));r+=1);return e},Tt.prototype.eachChild=function(t){this.args.forEach(t)},Tt.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.args.map(function(t){return t.possibleOutputs()}));var t},Tt.prototype.serialize=function(){var t=[\"coalesce\"];return this.eachChild(function(e){t.push(e.serialize())}),t};var St=function(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e};St.prototype.evaluate=function(t){return this.result.evaluate(t)},St.prototype.eachChild=function(t){for(var e=0,r=this.bindings;e<r.length;e+=1)t(r[e][1]);t(this.result)},St.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found \"+(t.length-1)+\" instead.\");for(var r=[],n=1;n<t.length-1;n+=2){var i=t[n];if(\"string\"!=typeof i)return e.error(\"Expected string, but found \"+typeof i+\" instead.\",n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);var a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a])}var o=e.parse(t[t.length-1],t.length-1,void 0,r);return o?new St(r,o):null},St.prototype.possibleOutputs=function(){return this.result.possibleOutputs()},St.prototype.serialize=function(){for(var t=[\"let\"],e=0,r=this.bindings;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];t.push(i,a.serialize())}return t.push(this.result.serialize()),t};var Ct=function(t,e,r){this.type=t,this.index=e,this.input=r};Ct.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,U),n=e.parse(t[2],2,Z(e.expectedType||Y));if(!r||!n)return null;var i=n.type;return new Ct(i.itemType,r,n)},Ct.prototype.evaluate=function(t){var e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new ot(\"Array index out of bounds: \"+e+\" < 0.\");if(e>=r.length)throw new ot(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ot(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},Ct.prototype.eachChild=function(t){t(this.index),t(this.input)},Ct.prototype.possibleOutputs=function(){return[void 0]},Ct.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var Et=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};Et.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;o<t.length-1;o+=2){var s=t[o],l=t[o+1];Array.isArray(s)||(s=[s]);var c=e.concat(o);if(0===s.length)return c.error(\"Expected at least one branch label.\");for(var u=0,f=s;u<f.length;u+=1){var h=f[u];if(\"number\"!=typeof h&&\"string\"!=typeof h)return c.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof h&&Math.abs(h)>Number.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,it(h)))return null}else r=it(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,r);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?new Et(r,n,d,i,a,g):null},Et.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Et.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Et.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.outputs.map(function(t){return t.possibleOutputs()})).concat(this.otherwise.possibleOutputs());var t},Et.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i<a.length;i+=1){var o=a[i],s=n[t.cases[o]];void 0===s?(n[t.cases[o]]=r.length,r.push([t.cases[o],[o]])):r[s][1].push(o)}for(var l=function(e){return\"number\"===t.input.type.kind?Number(e):e},c=0,u=r;c<u.length;c+=1){var f=u[c],h=f[0],p=f[1];1===p.length?e.push(l(p[0])):e.push(p.map(l)),e.push(t.outputs[h].serialize())}return e.push(this.otherwise.serialize()),e};var Lt=function(t,e,r){this.type=t,this.branches=e,this.otherwise=r};function zt(t){return\"string\"===t.kind||\"number\"===t.kind||\"boolean\"===t.kind||\"null\"===t.kind}function Ot(t,e){return function(){function r(t,e,r){this.type=H,this.lhs=t,this.rhs=e,this.collator=r}return r.parse=function(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");var n=e.parse(t[1],1,Y);if(!n)return null;var i=e.parse(t[2],2,Y);if(!i)return null;if(!zt(n.type)&&!zt(i.type))return e.error(\"Expected at least one argument to be a string, number, boolean, or null, but found (\"+$(n.type)+\", \"+$(i.type)+\") instead.\");if(n.type.kind!==i.type.kind&&\"value\"!==n.type.kind&&\"value\"!==i.type.kind)return e.error(\"Cannot compare \"+$(n.type)+\" and \"+$(i.type)+\".\");var a=null;if(4===t.length){if(\"string\"!==n.type.kind&&\"string\"!==i.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(!(a=e.parse(t[3],3,X)))return null}return new r(n,i,a)},r.prototype.evaluate=function(t){var r=this.collator?0===this.collator.evaluate(t).compare(this.lhs.evaluate(t),this.rhs.evaluate(t)):this.lhs.evaluate(t)===this.rhs.evaluate(t);return e?!r:r},r.prototype.eachChild=function(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)},r.prototype.possibleOutputs=function(){return[!0,!1]},r.prototype.serialize=function(){var e=[t];return this.eachChild(function(t){e.push(t.serialize())}),e},r}()}Lt.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");var r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);for(var n=[],i=1;i<t.length-1;i+=2){var a=e.parse(t[i],i,H);if(!a)return null;var o=e.parse(t[i+1],i+1,r);if(!o)return null;n.push([a,o]),r=r||o.type}var s=e.parse(t[t.length-1],t.length-1,r);return s?new Lt(r,n,s):null},Lt.prototype.evaluate=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];if(i.evaluate(t))return a.evaluate(t)}return this.otherwise.evaluate(t)},Lt.prototype.eachChild=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];t(i),t(a)}t(this.otherwise)},Lt.prototype.possibleOutputs=function(){return(t=[]).concat.apply(t,this.branches.map(function(t){return t[0],t[1].possibleOutputs()})).concat(this.otherwise.possibleOutputs());var t},Lt.prototype.serialize=function(){var t=[\"case\"];return this.eachChild(function(e){t.push(e.serialize())}),t};var It=Ot(\"==\",!1),Dt=Ot(\"!=\",!0),Pt=function(t){this.type=U,this.input=t};Pt.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+$(r.type)+\" instead.\"):new Pt(r):null},Pt.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ot(\"Expected value to be of type string or array, but found \"+$(it(e))+\" instead.\")},Pt.prototype.eachChild=function(t){t(this.input)},Pt.prototype.possibleOutputs=function(){return[void 0]},Pt.prototype.serialize=function(){var t=[\"length\"];return this.eachChild(function(e){t.push(e.serialize())}),t};var Rt={\"==\":It,\"!=\":Dt,array:ut,at:Ct,boolean:lt,case:Lt,coalesce:Tt,collator:rt,interpolate:At,length:Pt,let:St,literal:at,match:Et,number:lt,object:lt,step:_t,string:lt,\"to-color\":ht,\"to-number\":ht,var:yt};function Ft(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=nt(r,n,i,o);if(s)throw new ot(s);return new tt(r/255*o,n/255*o,i/255*o,o)}function Bt(t,e){return t in e}function Nt(t,e){var r=e[t];return void 0===r?null:r}function jt(t,e){var r=e[0],n=e[1];return r.evaluate(t)<n.evaluate(t)}function Vt(t,e){var r=e[0],n=e[1];return r.evaluate(t)>n.evaluate(t)}function Ut(t,e){var r=e[0],n=e[1];return r.evaluate(t)<=n.evaluate(t)}function qt(t,e){var r=e[0],n=e[1];return r.evaluate(t)>=n.evaluate(t)}function Ht(t){return{type:t}}function Gt(t){return{result:\"success\",value:t}}function Wt(t){return{result:\"error\",value:t}}gt.register(Rt,{error:[{kind:\"error\"},[q],function(t,e){var r=e[0];throw new ot(r.evaluate(t))}],typeof:[q,[Y],function(t,e){return $(it(e[0].evaluate(t)))}],\"to-string\":[q,[Y],function(t,e){var r=e[0],n=typeof(r=r.evaluate(t));return null===r?\"\":\"string\"===n||\"number\"===n||\"boolean\"===n?String(r):r instanceof tt?r.toString():JSON.stringify(r)}],\"to-boolean\":[H,[Y],function(t,e){var r=e[0];return Boolean(r.evaluate(t))}],\"to-rgba\":[Z(U,4),[G],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[G,[U,U,U],Ft],rgba:[G,[U,U,U,U],Ft],has:{type:H,overloads:[[[q],function(t,e){return Bt(e[0].evaluate(t),t.properties())}],[[q,W],function(t,e){var r=e[0],n=e[1];return Bt(r.evaluate(t),n.evaluate(t))}]]},get:{type:Y,overloads:[[[q],function(t,e){return Nt(e[0].evaluate(t),t.properties())}],[[q,W],function(t,e){var r=e[0],n=e[1];return Nt(r.evaluate(t),n.evaluate(t))}]]},properties:[W,[],function(t){return t.properties()}],\"geometry-type\":[q,[],function(t){return t.geometryType()}],id:[Y,[],function(t){return t.id()}],zoom:[U,[],function(t){return t.globals.zoom}],\"heatmap-density\":[U,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[U,[],function(t){return t.globals.lineProgress||0}],\"+\":[U,Ht(U),function(t,e){for(var r=0,n=0,i=e;n<i.length;n+=1)r+=i[n].evaluate(t);return r}],\"*\":[U,Ht(U),function(t,e){for(var r=1,n=0,i=e;n<i.length;n+=1)r*=i[n].evaluate(t);return r}],\"-\":{type:U,overloads:[[[U,U],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)-n.evaluate(t)}],[[U],function(t,e){return-e[0].evaluate(t)}]]},\"/\":[U,[U,U],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)/n.evaluate(t)}],\"%\":[U,[U,U],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)%n.evaluate(t)}],ln2:[U,[],function(){return Math.LN2}],pi:[U,[],function(){return Math.PI}],e:[U,[],function(){return Math.E}],\"^\":[U,[U,U],function(t,e){var r=e[0],n=e[1];return Math.pow(r.evaluate(t),n.evaluate(t))}],sqrt:[U,[U],function(t,e){var r=e[0];return Math.sqrt(r.evaluate(t))}],log10:[U,[U],function(t,e){var r=e[0];return Math.log10(r.evaluate(t))}],ln:[U,[U],function(t,e){var r=e[0];return Math.log(r.evaluate(t))}],log2:[U,[U],function(t,e){var r=e[0];return Math.log2(r.evaluate(t))}],sin:[U,[U],function(t,e){var r=e[0];return Math.sin(r.evaluate(t))}],cos:[U,[U],function(t,e){var r=e[0];return Math.cos(r.evaluate(t))}],tan:[U,[U],function(t,e){var r=e[0];return Math.tan(r.evaluate(t))}],asin:[U,[U],function(t,e){var r=e[0];return Math.asin(r.evaluate(t))}],acos:[U,[U],function(t,e){var r=e[0];return Math.acos(r.evaluate(t))}],atan:[U,[U],function(t,e){var r=e[0];return Math.atan(r.evaluate(t))}],min:[U,Ht(U),function(t,e){return Math.min.apply(Math,e.map(function(e){return e.evaluate(t)}))}],max:[U,Ht(U),function(t,e){return Math.max.apply(Math,e.map(function(e){return e.evaluate(t)}))}],abs:[U,[U],function(t,e){var r=e[0];return Math.abs(r.evaluate(t))}],round:[U,[U],function(t,e){var r=e[0].evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[U,[U],function(t,e){var r=e[0];return Math.floor(r.evaluate(t))}],ceil:[U,[U],function(t,e){var r=e[0];return Math.ceil(r.evaluate(t))}],\"filter-==\":[H,[q,Y],function(t,e){var r=e[0],n=e[1];return t.properties()[r.value]===n.value}],\"filter-id-==\":[H,[Y],function(t,e){var r=e[0];return t.id()===r.value}],\"filter-type-==\":[H,[q],function(t,e){var r=e[0];return t.geometryType()===r.value}],\"filter-<\":[H,[q,Y],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<a}],\"filter-id-<\":[H,[Y],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<i}],\"filter->\":[H,[q,Y],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[H,[Y],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[H,[q,Y],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[H,[Y],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[H,[q,Y],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[H,[Y],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[H,[Y],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[H,[],function(t){return null!==t.id()}],\"filter-type-in\":[H,[Z(q)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[H,[Z(Y)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[H,[q,Z(Y)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[H,[q,Z(Y)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],\">\":{type:H,overloads:[[[U,U],Vt],[[q,q],Vt],[[q,q,X],function(t,e){var r=e[0],n=e[1];return e[2].evaluate(t).compare(r.evaluate(t),n.evaluate(t))>0}]]},\"<\":{type:H,overloads:[[[U,U],jt],[[q,q],jt],[[q,q,X],function(t,e){var r=e[0],n=e[1];return e[2].evaluate(t).compare(r.evaluate(t),n.evaluate(t))<0}]]},\">=\":{type:H,overloads:[[[U,U],qt],[[q,q],qt],[[q,q,X],function(t,e){var r=e[0],n=e[1];return e[2].evaluate(t).compare(r.evaluate(t),n.evaluate(t))>=0}]]},\"<=\":{type:H,overloads:[[[U,U],Ut],[[q,q],Ut],[[q,q,X],function(t,e){var r=e[0],n=e[1];return e[2].evaluate(t).compare(r.evaluate(t),n.evaluate(t))<=0}]]},all:{type:H,overloads:[[[H,H],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Ht(H),function(t,e){for(var r=0,n=e;r<n.length;r+=1)if(!n[r].evaluate(t))return!1;return!0}]]},any:{type:H,overloads:[[[H,H],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)||n.evaluate(t)}],[Ht(H),function(t,e){for(var r=0,n=e;r<n.length;r+=1)if(n[r].evaluate(t))return!0;return!1}]]},\"!\":[H,[H],function(t,e){return!e[0].evaluate(t)}],\"is-supported-script\":[H,[q],function(t,e){var r=e[0],n=t.globals&&t.globals.isSupportedScript;return!n||n(r.evaluate(t))}],upcase:[q,[q],function(t,e){return e[0].evaluate(t).toUpperCase()}],downcase:[q,[q],function(t,e){return e[0].evaluate(t).toLowerCase()}],concat:[q,Ht(q),function(t,e){return e.map(function(e){return e.evaluate(t)}).join(\"\")}],\"resolved-locale\":[q,[X],function(t,e){return e[0].evaluate(t).resolvedLocale()}]});var Yt=.95047,Xt=1,Zt=1.08883,$t=4/29,Jt=6/29,Kt=3*Jt*Jt,Qt=Jt*Jt*Jt,te=Math.PI/180,ee=180/Math.PI;function re(t){return t>Qt?Math.pow(t,1/3):t/Kt+$t}function ne(t){return t>Jt?t*t*t:Kt*(t-$t)}function ie(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ae(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function oe(t){var e=ae(t.r),r=ae(t.g),n=ae(t.b),i=re((.4124564*e+.3575761*r+.1804375*n)/Yt),a=re((.2126729*e+.7151522*r+.072175*n)/Xt);return{l:116*a-16,a:500*(i-a),b:200*(a-re((.0193339*e+.119192*r+.9503041*n)/Zt)),alpha:t.a}}function se(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=Xt*ne(e),r=Yt*ne(r),n=Zt*ne(n),new tt(ie(3.2404542*r-1.5371385*e-.4985314*n),ie(-.969266*r+1.8760108*e+.041556*n),ie(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}var le={forward:oe,reverse:se,interpolate:function(t,e,r){return{l:wt(t.l,e.l,r),a:wt(t.a,e.a,r),b:wt(t.b,e.b,r),alpha:wt(t.alpha,e.alpha,r)}}},ce={forward:function(t){var e=oe(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*ee;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*te,r=t.c;return se({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:function(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}(t.h,e.h,r),c:wt(t.c,e.c,r),l:wt(t.l,e.l,r),alpha:wt(t.alpha,e.alpha,r)}}},ue=Object.freeze({lab:le,hcl:ce});function fe(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function he(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function pe(t){return t}function de(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function ge(t,e,r,n,i){return de(typeof r===i?n[r]:void 0,t.default,e.default)}function ve(t,e,r){if(\"number\"!==fe(r))return de(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=xe(t.stops,r);return t.stops[i][1]}function me(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==fe(r))return de(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=xe(t.stops,r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=kt[e.type]||pe;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ue[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function ye(t,e,r){return\"color\"===e.type?r=tt.parse(r):fe(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),de(r,t.default,e.default)}function xe(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)][0],n=t[o+1][0],e===r||e>r&&e<n)return o;r<e?i=o+1:r>e&&(a=o-1)}return Math.max(o-1,0)}var be=function(t,e){var r;this.expression=t,this._warningHistory={},this._defaultValue=\"color\"===(r=e).type&&he(r.default)?new tt(0,0,0,0):\"color\"===r.type?tt.parse(r.default)||null:void 0===r.default?null:r.default,\"enum\"===e.type&&(this._enumValues=e.values)};function _e(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in Rt}function we(t,e){var r=new xt(Rt,[],function(t){var e={color:G,string:q,number:U,enum:q,boolean:H};return\"array\"===t.type?Z(e[t.value]||Y,t.length):e[t.type]||null}(e)),n=r.parse(t);return n?Gt(new be(n,e)):Wt(r.errors)}be.prototype.evaluateWithoutErrorHandling=function(t,e){return this._evaluator||(this._evaluator=new dt),this._evaluator.globals=t,this._evaluator.feature=e,this.expression.evaluate(this._evaluator)},be.prototype.evaluate=function(t,e){this._evaluator||(this._evaluator=new dt),this._evaluator.globals=t,this._evaluator.feature=e;try{var r=this.expression.evaluate(this._evaluator);if(null==r)return this._defaultValue;if(this._enumValues&&!(r in this._enumValues))throw new ot(\"Expected value to be one of \"+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(\", \")+\", but found \"+JSON.stringify(r)+\" instead.\");return r}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var ke=function(t,e){this.kind=t,this._styleExpression=e};ke.prototype.evaluateWithoutErrorHandling=function(t,e){return this._styleExpression.evaluateWithoutErrorHandling(t,e)},ke.prototype.evaluate=function(t,e){return this._styleExpression.evaluate(t,e)};var Ae=function(t,e,r){this.kind=t,this.zoomStops=r.labels,this._styleExpression=e,r instanceof At&&(this._interpolationType=r.interpolation)};function Me(t,e){if(\"error\"===(t=we(t,e)).result)return t;var r=t.value.expression,n=vt(r);if(!n&&!e[\"property-function\"])return Wt([new N(\"\",\"property expressions not supported\")]);var i=mt(r,[\"zoom\"]);if(!i&&!1===e[\"zoom-function\"])return Wt([new N(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof St)r=t(e.result);else if(e instanceof Tt)for(var n=0,i=e.args;n<i.length;n+=1){var a=i[n];if(r=t(a))break}else(e instanceof _t||e instanceof At)&&e.input instanceof gt&&\"zoom\"===e.input.name&&(r=e);return r instanceof N?r:(e.eachChild(function(e){var n=t(e);n instanceof N?r=n:!r&&n?r=new N(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):r&&n&&r!==n&&(r=new N(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'))}),r)}(r);return a||i?a instanceof N?Wt([a]):a instanceof At&&\"piecewise-constant\"===e.function?Wt([new N(\"\",'\"interpolate\" expressions cannot be used with this property')]):Gt(a?new Ae(n?\"camera\":\"composite\",t.value,a):new ke(n?\"constant\":\"source\",t.value)):Wt([new N(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}Ae.prototype.evaluateWithoutErrorHandling=function(t,e){return this._styleExpression.evaluateWithoutErrorHandling(t,e)},Ae.prototype.evaluate=function(t,e){return this._styleExpression.evaluate(t,e)},Ae.prototype.interpolationFactor=function(t,e,r){return this._interpolationType?At.interpolationFactor(this._interpolationType,t,e,r):0};var Te=function(t,e){this._parameters=t,this._specification=e,R(this,function t(e,r){var n,i,a,o=\"color\"===r.type,s=e.stops&&\"object\"==typeof e.stops[0][0],l=s||void 0!==e.property,c=s||!l,u=e.type||(\"interpolated\"===r.function?\"exponential\":\"interval\");if(o&&((e=R({},e)).stops&&(e.stops=e.stops.map(function(t){return[t[0],tt.parse(t[1])]})),e.default?e.default=tt.parse(e.default):e.default=tt.parse(r.default)),e.colorSpace&&\"rgb\"!==e.colorSpace&&!ue[e.colorSpace])throw new Error(\"Unknown color space: \"+e.colorSpace);if(\"exponential\"===u)n=me;else if(\"interval\"===u)n=ve;else if(\"categorical\"===u){n=ge,i=Object.create(null);for(var f=0,h=e.stops;f<h.length;f+=1){var p=h[f];i[p[0]]=p[1]}a=typeof e.stops[0][0]}else{if(\"identity\"!==u)throw new Error('Unknown function type \"'+u+'\"');n=ye}if(s){for(var d={},g=[],v=0;v<e.stops.length;v++){var m=e.stops[v],y=m[0].zoom;void 0===d[y]&&(d[y]={zoom:y,type:e.type,property:e.property,default:e.default,stops:[]},g.push(y)),d[y].stops.push([m[0].value,m[1]])}for(var x=[],b=0,_=g;b<_.length;b+=1){var w=_[b];x.push([d[w].zoom,t(d[w],r)])}return{kind:\"composite\",interpolationFactor:At.interpolationFactor.bind(void 0,{name:\"linear\"}),zoomStops:x.map(function(t){return t[0]}),evaluate:function(t,n){var i=t.zoom;return me({stops:x,base:e.base},r,i).evaluate(i,n)}}}return c?{kind:\"camera\",interpolationFactor:\"exponential\"===u?At.interpolationFactor.bind(void 0,{name:\"exponential\",base:void 0!==e.base?e.base:1}):function(){return 0},zoomStops:e.stops.map(function(t){return t[0]}),evaluate:function(t){var o=t.zoom;return n(e,r,o,i,a)}}:{kind:\"source\",evaluate:function(t,o){var s=o&&o.properties?o.properties[e.property]:void 0;return void 0===s?de(e.default,r.default):n(e,r,s,i,a)}}}(this._parameters,this._specification))};function Se(t,e){if(he(t))return new Te(t,e);if(_e(t)){var r=Me(t,e);if(\"error\"===r.result)throw new Error(r.value.map(function(t){return t.key+\": \"+t.message}).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=tt.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}function Ce(t){var e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,o=t.styleSpec,s=[],l=fe(r);if(\"object\"!==l)return[new D(e,r,\"object expected, \"+l+\" found\")];for(var c in r){var u=c.split(\".\")[0],f=n[u]||n[\"*\"],h=void 0;if(i[u])h=i[u];else if(n[u])h=Ke;else if(i[\"*\"])h=i[\"*\"];else{if(!n[\"*\"]){s.push(new D(e,r[c],'unknown property \"'+c+'\"'));continue}h=Ke}s=s.concat(h({key:(e?e+\".\":e)+c,value:r[c],valueSpec:f,style:a,styleSpec:o,object:r,objectKey:c},r))}for(var p in n)i[p]||n[p].required&&void 0===n[p].default&&void 0===r[p]&&s.push(new D(e,r,'missing required property \"'+p+'\"'));return s}function Ee(t){var e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,o=t.arrayElementValidator||Ke;if(\"array\"!==fe(e))return[new D(a,e,\"array expected, \"+fe(e)+\" found\")];if(r.length&&e.length!==r.length)return[new D(a,e,\"array length \"+r.length+\" expected, length \"+e.length+\" found\")];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return[new D(a,e,\"array length at least \"+r[\"min-length\"]+\" expected, length \"+e.length+\" found\")];var s={type:r.value};i.$version<7&&(s.function=r.function),\"object\"===fe(r.value)&&(s=r.value);for(var l=[],c=0;c<e.length;c++)l=l.concat(o({array:e,arrayIndex:c,value:e[c],valueSpec:s,style:n,styleSpec:i,key:a+\"[\"+c+\"]\"}));return l}function Le(t){var e=t.key,r=t.value,n=t.valueSpec,i=fe(r);return\"number\"!==i?[new D(e,r,\"number expected, \"+i+\" found\")]:\"minimum\"in n&&r<n.minimum?[new D(e,r,r+\" is less than the minimum value \"+n.minimum)]:\"maximum\"in n&&r>n.maximum?[new D(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function ze(t){var e,r,n,i=t.valueSpec,a=F(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===fe(t.value.stops)&&\"array\"===fe(t.value.stops[0])&&\"object\"===fe(t.value.stops[0][0]),u=Ce({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new D(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;return e=e.concat(Ee({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===fe(r)&&0===r.length&&e.push(new D(t.key,r,\"array must have at least one stop\")),e},default:function(t){return Ke({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new D(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new D(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&\"piecewise-constant\"===t.valueSpec.function&&u.push(new D(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!t.valueSpec[\"property-function\"]?u.push(new D(t.key,t.value,\"property functions not supported\")):s&&!t.valueSpec[\"zoom-function\"]&&\"heatmap-color\"!==t.objectKey&&\"line-gradient\"!==t.objectKey&&u.push(new D(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new D(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==fe(a))return[new D(s,a,\"array expected, \"+fe(a)+\" found\")];if(2!==a.length)return[new D(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==fe(a[0]))return[new D(s,a,\"object expected, \"+fe(a[0])+\" found\")];if(void 0===a[0].zoom)return[new D(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new D(s,a,\"object stop key must have value\")];if(n&&n>F(a[0].zoom))return[new D(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];F(a[0].zoom)!==n&&(n=F(a[0].zoom),r=void 0,o={}),e=e.concat(Ce({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Le,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return e.concat(Ke({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=fe(t.value),l=F(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new D(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new D(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return i[\"property-function\"]&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new D(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l<r?[new D(t.key,c,\"stop domain values must appear in ascending order\")]:(r=l,\"categorical\"===a&&l in o?[new D(t.key,c,\"stop domain values must be unique\")]:(o[l]=!0,[])):[new D(t.key,c,\"integer expected, found \"+l)]}}function Oe(t){var e=(\"property\"===t.expressionContext?Me:we)(B(t.value),t.valueSpec);return\"error\"===e.result?e.value.map(function(e){return new D(\"\"+t.key+e.key,t.value,e.message)}):\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&-1!==e.value._styleExpression.expression.possibleOutputs().indexOf(void 0)?[new D(t.key,t.value,'Invalid data expression for \"text-font\". Output values must be contained as literals within the expression.')]:[]}function Ie(t){var e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(F(r))&&i.push(new D(e,r,\"expected one of [\"+n.values.join(\", \")+\"], \"+JSON.stringify(r)+\" found\")):-1===Object.keys(n.values).indexOf(F(r))&&i.push(new D(e,r,\"expected one of [\"+Object.keys(n.values).join(\", \")+\"], \"+JSON.stringify(r)+\" found\")),i}function De(t){if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3===t.length&&(Array.isArray(t[1])||Array.isArray(t[2]));case\"any\":case\"all\":for(var e=0,r=t.slice(1);e<r.length;e+=1){var n=r[e];if(!De(n)&&\"boolean\"!=typeof n)return!1}return!0;default:return!0}}Te.deserialize=function(t){return new Te(t._parameters,t._specification)},Te.serialize=function(t){return{_parameters:t._parameters,_specification:t._specification}};var Pe={type:\"boolean\",default:!1,function:!0,\"property-function\":!0,\"zoom-function\":!0};function Re(t){if(!t)return function(){return!0};De(t)||(t=Be(t));var e=we(t,Pe);if(\"error\"===e.result)throw new Error(e.value.map(function(t){return t.key+\": \"+t.message}).join(\", \"));return function(t,r){return e.value.evaluate(t,r)}}function Fe(t,e){return t<e?-1:t>e?1:0}function Be(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?Ne(t[1],t[2],\"==\"):\"!=\"===r?Ue(Ne(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?Ne(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(Be))):\"all\"===r?[\"all\"].concat(t.slice(1).map(Be)):\"none\"===r?[\"all\"].concat(t.slice(1).map(Be).map(Ue)):\"in\"===r?je(t[1],t.slice(2)):\"!in\"===r?Ue(je(t[1],t.slice(2))):\"has\"===r?Ve(t[1]):\"!has\"!==r||Ue(Ve(t[1]))}function Ne(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function je(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?[\"filter-in-large\",t,[\"literal\",e.sort(Fe)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Ve(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function Ue(t){return[\"!\",t]}function qe(t){return De(B(t.value))?Oe(R({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==fe(r))return[new D(n,r,\"array expected, \"+fe(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new D(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(Ie({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),F(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===F(r[1])&&o.push(new D(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new D(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=fe(r[1]))&&o.push(new D(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s<r.length;s++)i=fe(r[s]),\"$type\"===F(r[1])?o=o.concat(Ie({key:n+\"[\"+s+\"]\",value:r[s],valueSpec:a.geometry_type,style:e.style,styleSpec:e.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&o.push(new D(n+\"[\"+s+\"]\",r[s],\"string, number, or boolean expected, \"+i+\" found\"));break;case\"any\":case\"all\":case\"none\":for(var l=1;l<r.length;l++)o=o.concat(t({key:n+\"[\"+l+\"]\",value:r[l],style:e.style,styleSpec:e.styleSpec}));break;case\"has\":case\"!has\":i=fe(r[1]),2!==r.length?o.push(new D(n,r,'filter array for \"'+r[0]+'\" operator must have 2 elements')):\"string\"!==i&&o.push(new D(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"))}return o}(t)}function He(t,e){var r=t.key,n=t.style,i=t.styleSpec,a=t.value,o=t.objectKey,s=i[e+\"_\"+t.layerType];if(!s)return[];var l=o.match(/^(.*)-transition$/);if(\"paint\"===e&&l&&s[l[1]]&&s[l[1]].transition)return Ke({key:r,value:a,valueSpec:i.transition,style:n,styleSpec:i});var c,u=t.valueSpec||s[o];if(!u)return[new D(r,a,'unknown property \"'+o+'\"')];if(\"string\"===fe(a)&&u[\"property-function\"]&&!u.tokens&&(c=/^{([^}]+)}$/.exec(a)))return[new D(r,a,'\"'+o+'\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": '+JSON.stringify(c[1])+\" }`.\")];var f=[];return\"symbol\"===t.layerType&&(\"text-field\"===o&&n&&!n.glyphs&&f.push(new D(r,a,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===o&&he(B(a))&&\"identity\"===F(a.type)&&f.push(new D(r,a,'\"text-font\" does not support identity functions'))),f.concat(Ke({key:t.key,value:a,valueSpec:u,style:n,styleSpec:i,expressionContext:\"property\",propertyKey:o}))}function Ge(t){return He(t,\"paint\")}function We(t){return He(t,\"layout\")}function Ye(t){var e=[],r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new D(n,r,'either \"type\" or \"ref\" is required'));var o,s=F(r.type),l=F(r.ref);if(r.id)for(var c=F(r.id),u=0;u<t.arrayIndex;u++){var f=i.layers[u];F(f.id)===c&&e.push(new D(n,r.id,'duplicate layer id \"'+r.id+'\", previously used at line '+f.id.__line__))}if(\"ref\"in r)[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach(function(t){t in r&&e.push(new D(n,r[t],'\"'+t+'\" is prohibited for ref layers'))}),i.layers.forEach(function(t){F(t.id)===l&&(o=t)}),o?o.ref?e.push(new D(n,r.ref,\"ref cannot reference another ref layer\")):s=F(o.type):e.push(new D(n,r.ref,'ref layer \"'+l+'\" not found'));else if(\"background\"!==s)if(r.source){var h=i.sources&&i.sources[r.source],p=h&&F(h.type);h?\"vector\"===p&&\"raster\"===s?e.push(new D(n,r.source,'layer \"'+r.id+'\" requires a raster source')):\"raster\"===p&&\"raster\"!==s?e.push(new D(n,r.source,'layer \"'+r.id+'\" requires a vector source')):\"vector\"!==p||r[\"source-layer\"]?\"raster-dem\"===p&&\"hillshade\"!==s?e.push(new D(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==s||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===p&&h.lineMetrics||e.push(new D(n,r,'layer \"'+r.id+'\" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.')):e.push(new D(n,r,'layer \"'+r.id+'\" must specify a \"source-layer\"')):e.push(new D(n,r.source,'source \"'+r.source+'\" not found'))}else e.push(new D(n,r,'missing required property \"source\"'));return e=e.concat(Ce({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(){return[]},type:function(){return Ke({key:n+\".type\",value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"})},filter:qe,layout:function(t){return Ce({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return We(R({layerType:s},t))}}})},paint:function(t){return Ce({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return Ge(R({layerType:s},t))}}})}}}))}function Xe(t){var e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return[new D(r,e,'\"type\" is required')];var a=F(e.type),o=[];switch(a){case\"vector\":case\"raster\":case\"raster-dem\":if(o=o.concat(Ce({key:r,value:e,valueSpec:n[\"source_\"+a.replace(\"-\",\"_\")],style:t.style,styleSpec:n})),\"url\"in e)for(var s in e)[\"type\",\"url\",\"tileSize\"].indexOf(s)<0&&o.push(new D(r+\".\"+s,e[s],'a source with a \"url\" property may not include a \"'+s+'\" property'));return o;case\"geojson\":return Ce({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n});case\"video\":return Ce({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return Ce({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return o.push(new D(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")),o;default:return Ie({key:r+\".type\",value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function Ze(t){var e=t.value,r=t.styleSpec,n=r.light,i=t.style,a=[],o=fe(e);if(void 0===e)return a;if(\"object\"!==o)return a.concat([new D(\"light\",e,\"object expected, \"+o+\" found\")]);for(var s in e){var l=s.match(/^(.*)-transition$/);a=l&&n[l[1]]&&n[l[1]].transition?a.concat(Ke({key:s,value:e[s],valueSpec:r.transition,style:i,styleSpec:r})):n[s]?a.concat(Ke({key:s,value:e[s],valueSpec:n[s],style:i,styleSpec:r})):a.concat([new D(s,e[s],'unknown property \"'+s+'\"')])}return a}function $e(t){var e=t.value,r=t.key,n=fe(e);return\"string\"!==n?[new D(r,e,\"string expected, \"+n+\" found\")]:[]}var Je={\"*\":function(){return[]},array:Ee,boolean:function(t){var e=t.value,r=t.key,n=fe(e);return\"boolean\"!==n?[new D(r,e,\"boolean expected, \"+n+\" found\")]:[]},number:Le,color:function(t){var e=t.key,r=t.value,n=fe(r);return\"string\"!==n?[new D(e,r,\"color expected, \"+n+\" found\")]:null===Q(r)?[new D(e,r,'color expected, \"'+r+'\" found')]:[]},constants:P,enum:Ie,filter:qe,function:ze,layer:Ye,object:Ce,source:Xe,light:Ze,string:$e};function Ke(t){var e=t.value,r=t.valueSpec,n=t.styleSpec;return r.function&&he(F(e))?ze(t):r.function&&_e(B(e))?Oe(t):r.type&&Je[r.type]?Je[r.type](t):Ce(R({},t,{valueSpec:r.type?n[r.type]:r}))}function Qe(t){var e=t.value,r=t.key,n=$e(t);return n.length?n:(-1===e.indexOf(\"{fontstack}\")&&n.push(new D(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new D(r,e,'\"glyphs\" url must include a \"{range}\" token')),n)}function tr(t,e){e=e||I;var r=[];return r=r.concat(Ke({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Qe,\"*\":function(){return[]}}})),t.constants&&(r=r.concat(P({key:\"constants\",value:t.constants,style:t,styleSpec:e}))),er(r)}function er(t){return[].concat(t).sort(function(t,e){return t.line-e.line})}function rr(t){return function(){return er(t.apply(this,arguments))}}tr.source=rr(Xe),tr.light=rr(Ze),tr.layer=rr(Ye),tr.filter=rr(qe),tr.paintProperty=rr(Ge),tr.layoutProperty=rr(We);var nr=tr,ir=tr.light,ar=tr.paintProperty,or=tr.layoutProperty;function sr(t,e){var r=!1;if(e&&e.length)for(var n=0,i=e;n<i.length;n+=1){var a=i[n];t.fire(new z(new Error(a.message))),r=!0}return r}var lr=ur,cr=3;function ur(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],e=i[1],r=i[2],this.d=e+2*r;for(var a=0;a<this.d*this.d;a++){var o=i[cr+a],s=i[cr+a+1];n.push(o===s?null:i.subarray(o,s))}var l=i[cr+n.length],c=i[cr+n.length+1];this.keys=i.subarray(l,c),this.bboxes=i.subarray(c),this.insert=this._insertReadonly}else{this.d=e+2*r;for(var u=0;u<this.d*this.d;u++)n.push([]);this.keys=[],this.bboxes=[]}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var f=r/e*t;this.min=-f,this.max=t+f}ur.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},ur.prototype._insertReadonly=function(){throw\"Cannot insert into a GridIndex created from an ArrayBuffer.\"},ur.prototype._insertCell=function(t,e,r,n,i,a){this.cells[i].push(a)},ur.prototype.query=function(t,e,r,n){var i=this.min,a=this.max;if(t<=i&&e<=i&&a<=r&&a<=n)return Array.prototype.slice.call(this.keys);var o=[];return this._forEachCell(t,e,r,n,this._queryCell,o,{}),o},ur.prototype._queryCell=function(t,e,r,n,i,a,o){var s=this.cells[i];if(null!==s)for(var l=this.keys,c=this.bboxes,u=0;u<s.length;u++){var f=s[u];if(void 0===o[f]){var h=4*f;t<=c[h+2]&&e<=c[h+3]&&r>=c[h+0]&&n>=c[h+1]?(o[f]=!0,a.push(l[f])):o[f]=!1}}},ur.prototype._forEachCell=function(t,e,r,n,i,a,o){for(var s=this._convertToCellCoord(t),l=this._convertToCellCoord(e),c=this._convertToCellCoord(r),u=this._convertToCellCoord(n),f=s;f<=c;f++)for(var h=l;h<=u;h++){var p=this.d*h+f;if(i.call(this,t,e,r,n,p,a,o))return}},ur.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},ur.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=cr+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var a=e,o=0;o<t.length;o++){var s=t[o];i[cr+o]=a,i.set(s,a),a+=s.length}return i[cr+t.length]=a,i.set(this.keys,a),a+=this.keys.length,i[cr+t.length+1]=a,i.set(this.bboxes,a),a+=this.bboxes.length,i.buffer};var fr=self.ImageData,hr={};function pr(t,e,r){void 0===r&&(r={}),Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),hr[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]}}for(var dr in pr(\"Object\",Object),lr.serialize=function(t,e){var r=t.toArrayBuffer();return e&&e.push(r),r},lr.deserialize=function(t){return new lr(t)},pr(\"Grid\",lr),pr(\"Color\",tt),pr(\"Error\",Error),pr(\"StylePropertyFunction\",Te),pr(\"StyleExpression\",be,{omit:[\"_evaluator\"]}),pr(\"ZoomDependentExpression\",Ae),pr(\"ZoomConstantExpression\",ke),pr(\"CompoundExpression\",gt,{omit:[\"_evaluate\"]}),Rt)Rt[dr]._classRegistryKey||pr(\"Expression_\"+dr,Rt[dr]);function gr(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(t instanceof ArrayBuffer)return e&&e.push(t),t;if(ArrayBuffer.isView(t)){var r=t;return e&&e.push(r.buffer),r}if(t instanceof fr)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){for(var n=[],i=0,a=t;i<a.length;i+=1){var o=a[i];n.push(gr(o,e))}return n}if(\"object\"==typeof t){var s=t.constructor,l=s._classRegistryKey;if(!l)throw new Error(\"can't serialize object of unregistered class\");var c={};if(s.serialize)c._serialized=s.serialize(t,e);else{for(var u in t)if(t.hasOwnProperty(u)&&!(hr[l].omit.indexOf(u)>=0)){var f=t[u];c[u]=hr[l].shallow.indexOf(u)>=0?f:gr(f,e)}t instanceof Error&&(c.message=t.message)}return{name:l,properties:c}}throw new Error(\"can't serialize object of type \"+typeof t)}function vr(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||t instanceof fr)return t;if(Array.isArray(t))return t.map(function(t){return vr(t)});if(\"object\"==typeof t){var e=t,r=e.name,n=e.properties;if(!r)throw new Error(\"can't deserialize object of anonymous class\");var i=hr[r].klass;if(!i)throw new Error(\"can't deserialize unregistered class \"+r);if(i.deserialize)return i.deserialize(n._serialized);for(var a=Object.create(i.prototype),o=0,s=Object.keys(n);o<s.length;o+=1){var l=s[o];a[l]=hr[r].shallow.indexOf(l)>=0?n[l]:vr(n[l])}return a}throw new Error(\"can't deserialize object of type \"+typeof t)}var mr=function(){this.first=!0};mr.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))};var yr={\"Latin-1 Supplement\":function(t){return t>=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function xr(t){for(var e=0,r=t;e<r.length;e+=1)if(_r(r[e].charCodeAt(0)))return!0;return!1}function br(t){return!(yr.Arabic(t)||yr[\"Arabic Supplement\"](t)||yr[\"Arabic Extended-A\"](t)||yr[\"Arabic Presentation Forms-A\"](t)||yr[\"Arabic Presentation Forms-B\"](t))}function _r(t){return!!(746===t||747===t||!(t<4352)&&(yr[\"Bopomofo Extended\"](t)||yr.Bopomofo(t)||yr[\"CJK Compatibility Forms\"](t)&&!(t>=65097&&t<=65103)||yr[\"CJK Compatibility Ideographs\"](t)||yr[\"CJK Compatibility\"](t)||yr[\"CJK Radicals Supplement\"](t)||yr[\"CJK Strokes\"](t)||!(!yr[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||yr[\"CJK Unified Ideographs Extension A\"](t)||yr[\"CJK Unified Ideographs\"](t)||yr[\"Enclosed CJK Letters and Months\"](t)||yr[\"Hangul Compatibility Jamo\"](t)||yr[\"Hangul Jamo Extended-A\"](t)||yr[\"Hangul Jamo Extended-B\"](t)||yr[\"Hangul Jamo\"](t)||yr[\"Hangul Syllables\"](t)||yr.Hiragana(t)||yr[\"Ideographic Description Characters\"](t)||yr.Kanbun(t)||yr[\"Kangxi Radicals\"](t)||yr[\"Katakana Phonetic Extensions\"](t)||yr.Katakana(t)&&12540!==t||!(!yr[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!yr[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||yr[\"Unified Canadian Aboriginal Syllabics\"](t)||yr[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||yr[\"Vertical Forms\"](t)||yr[\"Yijing Hexagram Symbols\"](t)||yr[\"Yi Syllables\"](t)||yr[\"Yi Radicals\"](t)))}function wr(t){return!(_r(t)||function(t){return!!(yr[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||yr[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||yr[\"Letterlike Symbols\"](t)||yr[\"Number Forms\"](t)||yr[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||yr[\"Control Pictures\"](t)&&9251!==t||yr[\"Optical Character Recognition\"](t)||yr[\"Enclosed Alphanumerics\"](t)||yr[\"Geometric Shapes\"](t)||yr[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||yr[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||yr[\"CJK Symbols and Punctuation\"](t)||yr.Katakana(t)||yr[\"Private Use Area\"](t)||yr[\"CJK Compatibility Forms\"](t)||yr[\"Small Form Variants\"](t)||yr[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function kr(t,e){return!(!e&&(t>=1424&&t<=2303||yr[\"Arabic Presentation Forms-A\"](t)||yr[\"Arabic Presentation Forms-B\"](t))||t>=2304&&t<=3583||t>=3840&&t<=4255||yr.Khmer(t))}var Ar,Mr=!1,Tr=null,Sr=!1,Cr=new O,Er={applyArabicShaping:null,processBidirectionalText:null,isLoaded:function(){return Sr||null!=Er.applyArabicShaping}},Lr=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new mr,this.transition={})};Lr.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;r<n.length;r+=1)if(!kr(n[r].charCodeAt(0),e))return!1;return!0}(t,Er.isLoaded())},Lr.prototype.crossFadingFactor=function(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)};var zr=function(t,e){this.property=t,this.value=e,this.expression=Se(void 0===e?t.specification.default:e,t.specification)};zr.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},zr.prototype.possiblyEvaluate=function(t){return this.property.possiblyEvaluate(this,t)};var Or=function(t){this.property=t,this.value=new zr(t,void 0)};Or.prototype.transitioned=function(t,e){return new Dr(this.property,this.value,e,p({},t.transition,this.transition),t.now)},Or.prototype.untransitioned=function(){return new Dr(this.property,this.value,null,{},0)};var Ir=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};Ir.prototype.getValue=function(t){return x(this._values[t].value.value)},Ir.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Or(this._values[t].property)),this._values[t].value=new zr(this._values[t].property,null===e?void 0:x(e))},Ir.prototype.getTransition=function(t){return x(this._values[t].transition)},Ir.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Or(this._values[t].property)),this._values[t].transition=x(e)||void 0},Ir.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i);var a=this.getTransition(n);void 0!==a&&(t[n+\"-transition\"]=a)}return t},Ir.prototype.transitioned=function(t,e){for(var r=new Pr(this._properties),n=0,i=Object.keys(this._values);n<i.length;n+=1){var a=i[n];r._values[a]=this._values[a].transitioned(t,e._values[a])}return r},Ir.prototype.untransitioned=function(){for(var t=new Pr(this._properties),e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e];t._values[n]=this._values[n].untransitioned()}return t};var Dr=function(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r)};Dr.prototype.possiblyEvaluate=function(t){var e=t.now||0,r=this.value.possiblyEvaluate(t),n=this.prior;if(n){if(e>this.end)return this.prior=null,r;if(this.value.isDataDriven())return this.prior=null,r;if(e<this.begin)return n.possiblyEvaluate(t);var i=(e-this.begin)/(this.end-this.begin);return this.property.interpolate(n.possiblyEvaluate(t),r,function(t){if(i<=0)return 0;if(i>=1)return 1;var e=i*i,r=e*i;return 4*(i<.5?r:3*(i-e)+r-.75)}())}return r};var Pr=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};Pr.prototype.possiblyEvaluate=function(t){for(var e=new Br(this._properties),r=0,n=Object.keys(this._values);r<n.length;r+=1){var i=n[r];e._values[i]=this._values[i].possiblyEvaluate(t)}return e},Pr.prototype.hasTransition=function(){for(var t=0,e=Object.keys(this._values);t<e.length;t+=1){var r=e[t];if(this._values[r].prior)return!0}return!1};var Rr=function(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues)};Rr.prototype.getValue=function(t){return x(this._values[t].value)},Rr.prototype.setValue=function(t,e){this._values[t]=new zr(this._values[t].property,null===e?void 0:x(e))},Rr.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i)}return t},Rr.prototype.possiblyEvaluate=function(t){for(var e=new Br(this._properties),r=0,n=Object.keys(this._values);r<n.length;r+=1){var i=n[r];e._values[i]=this._values[i].possiblyEvaluate(t)}return e};var Fr=function(t,e,r){this.property=t,this.value=e,this.globals=r};Fr.prototype.isConstant=function(){return\"constant\"===this.value.kind},Fr.prototype.constantOr=function(t){return\"constant\"===this.value.kind?this.value.value:t},Fr.prototype.evaluate=function(t){return this.property.evaluate(this.value,this.globals,t)};var Br=function(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues)};Br.prototype.get=function(t){return this._values[t]};var Nr=function(t){this.specification=t};Nr.prototype.possiblyEvaluate=function(t,e){return t.expression.evaluate(e)},Nr.prototype.interpolate=function(t,e,r){var n=kt[this.specification.type];return n?n(t,e,r):t};var jr=function(t){this.specification=t};jr.prototype.possiblyEvaluate=function(t,e){return\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?new Fr(this,{kind:\"constant\",value:t.expression.evaluate(e)},e):new Fr(this,t.expression,e)},jr.prototype.interpolate=function(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new Fr(this,{kind:\"constant\",value:void 0},t.globals);var n=kt[this.specification.type];return n?new Fr(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.globals):t},jr.prototype.evaluate=function(t,e,r){return\"constant\"===t.kind?t.value:t.evaluate(e,r)};var Vr=function(t){this.specification=t};Vr.prototype.possiblyEvaluate=function(t,e){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var r=t.expression.evaluate(e);return this._calculate(r,r,r,e)}return this._calculate(t.expression.evaluate(new Lr(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Lr(Math.floor(e.zoom),e)),t.expression.evaluate(new Lr(Math.floor(e.zoom+1),e)),e)}},Vr.prototype._calculate=function(t,e,r,n){var i=n.zoom,a=i-Math.floor(i),o=n.crossFadingFactor();return i>n.zoomHistory.lastIntegerZoom?{from:t,to:e,fromScale:2,toScale:1,t:a+(1-a)*o}:{from:r,to:e,fromScale:.5,toScale:1,t:1-(1-o)*a}},Vr.prototype.interpolate=function(t){return t};var Ur=function(t){this.specification=t};Ur.prototype.possiblyEvaluate=function(t,e){return!!t.expression.evaluate(e)},Ur.prototype.interpolate=function(){return!1};var qr=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},t){var r=t[e],n=this.defaultPropertyValues[e]=new zr(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Or(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};pr(\"DataDrivenProperty\",jr),pr(\"DataConstantProperty\",Nr),pr(\"CrossFadedProperty\",Vr),pr(\"ColorRampProperty\",Ur);var Hr=function(t){function e(e,r){for(var n in t.call(this),this.id=e.id,this.metadata=e.metadata,this.type=e.type,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,this.visibility=\"visible\",\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),this._featureFilter=function(){return!0},r.layout&&(this._unevaluatedLayout=new Rr(r.layout)),this._transitionablePaint=new Ir(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(or,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=\"none\"===e?e:\"visible\"},e.prototype.getPaintProperty=function(t){return v(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(ar,n,t,e,r))return}v(t,\"-transition\")?this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0):this._transitionablePaint.setValue(t,e)},e.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t){this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t)),this.paint=this._transitioningPaint.possiblyEvaluate(t)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return\"none\"===this.visibility&&(t.layout=t.layout||{},t.layout.visibility=\"none\"),y(t,function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,n,i){return(!i||!1!==i.validate)&&sr(this,t.call(nr,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:I,style:{glyphs:!0,sprite:!0}}))},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e}(O),Gr={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Wr=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Yr=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Xr(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map(function(t){var i,a=(i=t.type,Gr[i].BYTES_PER_ELEMENT),o=r=Zr(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}}),size:Zr(r,Math.max(n,e)),alignment:e}}function Zr(t,e){return Math.ceil(t/e)*e}Yr.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Yr.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Yr.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Yr.prototype.clear=function(){this.length=0},Yr.prototype.resize=function(t){this.reserve(t),this.length=t},Yr.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Yr.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var $r=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;this.resize(r+1);var n=2*r;return this.int16[n+0]=t,this.int16[n+1]=e,r},e}(Yr);$r.prototype.bytesPerElement=4,pr(\"StructArrayLayout2i4\",$r);var Jr=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;this.resize(i+1);var a=4*i;return this.int16[a+0]=t,this.int16[a+1]=e,this.int16[a+2]=r,this.int16[a+3]=n,i},e}(Yr);Jr.prototype.bytesPerElement=8,pr(\"StructArrayLayout4i8\",Jr);var Kr=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;this.resize(o+1);var s=6*o;return this.int16[s+0]=t,this.int16[s+1]=e,this.int16[s+2]=r,this.int16[s+3]=n,this.int16[s+4]=i,this.int16[s+5]=a,o},e}(Yr);Kr.prototype.bytesPerElement=12,pr(\"StructArrayLayout2i4i12\",Kr);var Qr=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var l=this.length;this.resize(l+1);var c=6*l,u=12*l;return this.int16[c+0]=t,this.int16[c+1]=e,this.int16[c+2]=r,this.int16[c+3]=n,this.uint8[u+8]=i,this.uint8[u+9]=a,this.uint8[u+10]=o,this.uint8[u+11]=s,l},e}(Yr);Qr.prototype.bytesPerElement=12,pr(\"StructArrayLayout4i4ub12\",Qr);var tn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var l=this.length;this.resize(l+1);var c=8*l;return this.int16[c+0]=t,this.int16[c+1]=e,this.int16[c+2]=r,this.int16[c+3]=n,this.uint16[c+4]=i,this.uint16[c+5]=a,this.uint16[c+6]=o,this.uint16[c+7]=s,l},e}(Yr);tn.prototype.bytesPerElement=16,pr(\"StructArrayLayout4i4ui16\",tn);var en=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;this.resize(n+1);var i=3*n;return this.float32[i+0]=t,this.float32[i+1]=e,this.float32[i+2]=r,n},e}(Yr);en.prototype.bytesPerElement=12,pr(\"StructArrayLayout3f12\",en);var rn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;this.resize(e+1);var r=1*e;return this.uint32[r+0]=t,e},e}(Yr);rn.prototype.bytesPerElement=4,pr(\"StructArrayLayout1ul4\",rn);var nn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u){var f=this.length;this.resize(f+1);var h=12*f,p=6*f;return this.int16[h+0]=t,this.int16[h+1]=e,this.int16[h+2]=r,this.int16[h+3]=n,this.int16[h+4]=i,this.int16[h+5]=a,this.uint32[p+3]=o,this.uint16[h+8]=s,this.uint16[h+9]=l,this.int16[h+10]=c,this.int16[h+11]=u,f},e}(Yr);nn.prototype.bytesPerElement=24,pr(\"StructArrayLayout6i1ul2ui2i24\",nn);var an=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;this.resize(o+1);var s=6*o;return this.int16[s+0]=t,this.int16[s+1]=e,this.int16[s+2]=r,this.int16[s+3]=n,this.int16[s+4]=i,this.int16[s+5]=a,o},e}(Yr);an.prototype.bytesPerElement=12,pr(\"StructArrayLayout2i2i2i12\",an);var on=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;this.resize(r+1);var n=4*r;return this.uint8[n+0]=t,this.uint8[n+1]=e,r},e}(Yr);on.prototype.bytesPerElement=4,pr(\"StructArrayLayout2ub4\",on);var sn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p){var d=this.length;this.resize(d+1);var g=20*d,v=10*d,m=40*d;return this.int16[g+0]=t,this.int16[g+1]=e,this.uint16[g+2]=r,this.uint16[g+3]=n,this.uint32[v+2]=i,this.uint32[v+3]=a,this.uint32[v+4]=o,this.uint16[g+10]=s,this.uint16[g+11]=l,this.uint16[g+12]=c,this.float32[v+7]=u,this.float32[v+8]=f,this.uint8[m+36]=h,this.uint8[m+37]=p,d},e}(Yr);sn.prototype.bytesPerElement=40,pr(\"StructArrayLayout2i2ui3ul3ui2f2ub40\",sn);var ln=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;this.resize(e+1);var r=1*e;return this.float32[r+0]=t,e},e}(Yr);ln.prototype.bytesPerElement=4,pr(\"StructArrayLayout1f4\",ln);var cn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;this.resize(n+1);var i=3*n;return this.int16[i+0]=t,this.int16[i+1]=e,this.int16[i+2]=r,n},e}(Yr);cn.prototype.bytesPerElement=6,pr(\"StructArrayLayout3i6\",cn);var un=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;this.resize(n+1);var i=2*n,a=4*n;return this.uint32[i+0]=t,this.uint16[a+2]=e,this.uint16[a+3]=r,n},e}(Yr);un.prototype.bytesPerElement=8,pr(\"StructArrayLayout1ul2ui8\",un);var fn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;this.resize(n+1);var i=3*n;return this.uint16[i+0]=t,this.uint16[i+1]=e,this.uint16[i+2]=r,n},e}(Yr);fn.prototype.bytesPerElement=6,pr(\"StructArrayLayout3ui6\",fn);var hn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;this.resize(r+1);var n=2*r;return this.uint16[n+0]=t,this.uint16[n+1]=e,r},e}(Yr);hn.prototype.bytesPerElement=4,pr(\"StructArrayLayout2ui4\",hn);var pn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;this.resize(r+1);var n=2*r;return this.float32[n+0]=t,this.float32[n+1]=e,r},e}(Yr);pn.prototype.bytesPerElement=8,pr(\"StructArrayLayout2f8\",pn);var dn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;this.resize(i+1);var a=4*i;return this.float32[a+0]=t,this.float32[a+1]=e,this.float32[a+2]=r,this.float32[a+3]=n,i},e}(Yr);dn.prototype.bytesPerElement=16,pr(\"StructArrayLayout4f16\",dn);var gn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},radius:{configurable:!0},signedDistanceFromAnchor:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointX.set=function(t){this._structArray.int16[this._pos2+0]=t},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorPointY.set=function(t){this._structArray.int16[this._pos2+1]=t},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.x1.set=function(t){this._structArray.int16[this._pos2+2]=t},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.y1.set=function(t){this._structArray.int16[this._pos2+3]=t},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.x2.set=function(t){this._structArray.int16[this._pos2+4]=t},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.y2.set=function(t){this._structArray.int16[this._pos2+5]=t},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t},r.radius.get=function(){return this._structArray.int16[this._pos2+10]},r.radius.set=function(t){this._structArray.int16[this._pos2+10]=t},r.signedDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+11]},r.signedDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+11]=t},r.anchorPoint.get=function(){return new l(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Wr);gn.prototype.size=24;var vn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new gn(this,t)},e}(nn);pr(\"CollisionBoxArray\",vn);var mn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},hidden:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.glyphStartIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.numGlyphs.set=function(t){this._structArray.uint16[this._pos2+3]=t},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.vertexStartIndex.set=function(t){this._structArray.uint32[this._pos4+2]=t},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineStartIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.lineLength.set=function(t){this._structArray.uint32[this._pos4+4]=t},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.segment.set=function(t){this._structArray.uint16[this._pos2+10]=t},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.lowerSize.set=function(t){this._structArray.uint16[this._pos2+11]=t},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.upperSize.set=function(t){this._structArray.uint16[this._pos2+12]=t},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetX.set=function(t){this._structArray.float32[this._pos4+7]=t},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.lineOffsetY.set=function(t){this._structArray.float32[this._pos4+8]=t},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.writingMode.set=function(t){this._structArray.uint8[this._pos1+36]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+37]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+37]=t},Object.defineProperties(e.prototype,r),e}(Wr);mn.prototype.size=40;var yn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new mn(this,t)},e}(sn);pr(\"PlacedSymbolArray\",yn);var xn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={offsetX:{configurable:!0}};return r.offsetX.get=function(){return this._structArray.float32[this._pos4+0]},r.offsetX.set=function(t){this._structArray.float32[this._pos4+0]=t},Object.defineProperties(e.prototype,r),e}(Wr);xn.prototype.size=4;var bn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e.prototype.get=function(t){return new xn(this,t)},e}(ln);pr(\"GlyphOffsetArray\",bn);var _n=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={x:{configurable:!0},y:{configurable:!0},tileUnitDistanceFromAnchor:{configurable:!0}};return r.x.get=function(){return this._structArray.int16[this._pos2+0]},r.x.set=function(t){this._structArray.int16[this._pos2+0]=t},r.y.get=function(){return this._structArray.int16[this._pos2+1]},r.y.set=function(t){this._structArray.int16[this._pos2+1]=t},r.tileUnitDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+2]},r.tileUnitDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+2]=t},Object.defineProperties(e.prototype,r),e}(Wr);_n.prototype.size=6;var wn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e.prototype.get=function(t){return new _n(this,t)},e}(cn);pr(\"SymbolLineVertexArray\",wn);var kn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+0]=t},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+3]=t},Object.defineProperties(e.prototype,r),e}(Wr);kn.prototype.size=8;var An=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new kn(this,t)},e}(un);pr(\"FeatureIndexArray\",An);var Mn=Xr([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,Tn=function(t){void 0===t&&(t=[]),this.segments=t};Tn.prototype.prepareSegment=function(t,e,r){var n=this.segments[this.segments.length-1];return t>Tn.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+Tn.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!n||n.vertexLength+t>Tn.MAX_VERTEX_ARRAY_LENGTH)&&(n={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},this.segments.push(n)),n},Tn.prototype.get=function(){return this.segments},Tn.prototype.destroy=function(){for(var t=0,e=this.segments;t<e.length;t+=1){var r=e[t];for(var n in r.vaos)r.vaos[n].destroy()}},Tn.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,pr(\"SegmentVector\",Tn);var Sn=function(t,e){return 256*(t=h(Math.floor(t),0,255))+h(Math.floor(e),0,255)};function Cn(t){return[Sn(255*t.r,255*t.g),Sn(255*t.b,255*t.a)]}var En=function(t,e,r){this.value=t,this.name=e,this.type=r,this.statistics={max:-1/0}};En.prototype.defines=function(){return[\"#define HAS_UNIFORM_u_\"+this.name]},En.prototype.populatePaintArray=function(){},En.prototype.upload=function(){},En.prototype.destroy=function(){},En.prototype.setUniforms=function(t,e,r,n){var i=n.constantOr(this.value),a=t.gl;\"color\"===this.type?a.uniform4f(e.uniforms[\"u_\"+this.name],i.r,i.g,i.b,i.a):a.uniform1f(e.uniforms[\"u_\"+this.name],i)};var Ln=function(t,e,r){this.expression=t,this.name=e,this.type=r,this.statistics={max:-1/0};var n=\"color\"===r?pn:ln;this.paintVertexAttributes=[{name:\"a_\"+e,type:\"Float32\",components:\"color\"===r?2:1,offset:0}],this.paintVertexArray=new n};Ln.prototype.defines=function(){return[]},Ln.prototype.populatePaintArray=function(t,e){var r=this.paintVertexArray,n=r.length;r.reserve(t);var i=this.expression.evaluate(new Lr(0),e);if(\"color\"===this.type)for(var a=Cn(i),o=n;o<t;o++)r.emplaceBack(a[0],a[1]);else{for(var s=n;s<t;s++)r.emplaceBack(i);this.statistics.max=Math.max(this.statistics.max,i)}},Ln.prototype.upload=function(t){this.paintVertexArray&&(this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes))},Ln.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()},Ln.prototype.setUniforms=function(t,e){t.gl.uniform1f(e.uniforms[\"a_\"+this.name+\"_t\"],0)};var zn=function(t,e,r,n,i){this.expression=t,this.name=e,this.type=r,this.useIntegerZoom=n,this.zoom=i,this.statistics={max:-1/0};var a=\"color\"===r?dn:pn;this.paintVertexAttributes=[{name:\"a_\"+e,type:\"Float32\",components:\"color\"===r?4:2,offset:0}],this.paintVertexArray=new a};zn.prototype.defines=function(){return[]},zn.prototype.populatePaintArray=function(t,e){var r=this.paintVertexArray,n=r.length;r.reserve(t);var i=this.expression.evaluate(new Lr(this.zoom),e),a=this.expression.evaluate(new Lr(this.zoom+1),e);if(\"color\"===this.type)for(var o=Cn(i),s=Cn(a),l=n;l<t;l++)r.emplaceBack(o[0],o[1],s[0],s[1]);else{for(var c=n;c<t;c++)r.emplaceBack(i,a);this.statistics.max=Math.max(this.statistics.max,i,a)}},zn.prototype.upload=function(t){this.paintVertexArray&&(this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes))},zn.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()},zn.prototype.interpolationFactor=function(t){return this.useIntegerZoom?this.expression.interpolationFactor(Math.floor(t),this.zoom,this.zoom+1):this.expression.interpolationFactor(t,this.zoom,this.zoom+1)},zn.prototype.setUniforms=function(t,e,r){t.gl.uniform1f(e.uniforms[\"a_\"+this.name+\"_t\"],this.interpolationFactor(r.zoom))};var On=function(){this.binders={},this.cacheKey=\"\",this._buffers=[]};On.createDynamic=function(t,e,r){var n=new On,i=[];for(var a in t.paint._values)if(r(a)){var o=t.paint.get(a);if(o instanceof Fr&&o.property.specification[\"property-function\"]){var s=Dn(a,t.type),l=o.property.specification.type,c=o.property.useIntegerZoom;\"constant\"===o.value.kind?(n.binders[a]=new En(o.value,s,l),i.push(\"/u_\"+s)):\"source\"===o.value.kind?(n.binders[a]=new Ln(o.value,s,l),i.push(\"/a_\"+s)):(n.binders[a]=new zn(o.value,s,l,c,e),i.push(\"/z_\"+s))}}return n.cacheKey=i.sort().join(\"\"),n},On.prototype.populatePaintArrays=function(t,e){for(var r in this.binders)this.binders[r].populatePaintArray(t,e)},On.prototype.defines=function(){var t=[];for(var e in this.binders)t.push.apply(t,this.binders[e].defines());return t},On.prototype.setUniforms=function(t,e,r,n){for(var i in this.binders)this.binders[i].setUniforms(t,e,n,r.get(i))},On.prototype.getPaintVertexBuffers=function(){return this._buffers},On.prototype.upload=function(t){for(var e in this.binders)this.binders[e].upload(t);var r=[];for(var n in this.binders){var i=this.binders[n];(i instanceof Ln||i instanceof zn)&&i.paintVertexBuffer&&r.push(i.paintVertexBuffer)}this._buffers=r},On.prototype.destroy=function(){for(var t in this.binders)this.binders[t].destroy()};var In=function(t,e,r,n){void 0===n&&(n=function(){return!0}),this.programConfigurations={};for(var i=0,a=e;i<a.length;i+=1){var o=a[i];this.programConfigurations[o.id]=On.createDynamic(o,r,n),this.programConfigurations[o.id].layoutAttributes=t}};function Dn(t,e){return{\"text-opacity\":\"opacity\",\"icon-opacity\":\"opacity\",\"text-color\":\"fill_color\",\"icon-color\":\"fill_color\",\"text-halo-color\":\"halo_color\",\"icon-halo-color\":\"halo_color\",\"text-halo-blur\":\"halo_blur\",\"icon-halo-blur\":\"halo_blur\",\"text-halo-width\":\"halo_width\",\"icon-halo-width\":\"halo_width\",\"line-gap-width\":\"gapwidth\"}[t]||t.replace(e+\"-\",\"\").replace(/-/g,\"_\")}In.prototype.populatePaintArrays=function(t,e){for(var r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e)},In.prototype.get=function(t){return this.programConfigurations[t]},In.prototype.upload=function(t){for(var e in this.programConfigurations)this.programConfigurations[e].upload(t)},In.prototype.destroy=function(){for(var t in this.programConfigurations)this.programConfigurations[t].destroy()},pr(\"ConstantBinder\",En),pr(\"SourceExpressionBinder\",Ln),pr(\"CompositeExpressionBinder\",zn),pr(\"ProgramConfiguration\",On,{omit:[\"_buffers\"]}),pr(\"ProgramConfigurationSet\",In);var Pn=8192,Rn=(16,{min:-1*Math.pow(2,15),max:Math.pow(2,15)-1});function Fn(t){for(var e=Pn/t.extent,r=t.loadGeometry(),n=0;n<r.length;n++)for(var i=r[n],a=0;a<i.length;a++){var o=i[a];o.x=Math.round(o.x*e),o.y=Math.round(o.y*e),(o.x<Rn.min||o.x>Rn.max||o.y<Rn.min||o.y>Rn.max)&&_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}return r}function Bn(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Nn=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.layoutVertexArray=new $r,this.indexArray=new fn,this.segments=new Tn,this.programConfigurations=new In(Mn,t.layers,t.zoom)};function jn(t,e,r){for(var n=0;n<t.length;n++){var i=t[n];if(Zn(i,e))return!0;if(Wn(e,i,r))return!0}return!1}function Vn(t,e){if(1===t.length&&1===t[0].length)return Xn(e,t[0][0]);for(var r=0;r<e.length;r++)for(var n=e[r],i=0;i<n.length;i++)if(Xn(t,n[i]))return!0;for(var a=0;a<t.length;a++){for(var o=t[a],s=0;s<o.length;s++)if(Xn(e,o[s]))return!0;for(var l=0;l<e.length;l++)if(Hn(o,e[l]))return!0}return!1}function Un(t,e,r){for(var n=0;n<e.length;n++)for(var i=e[n],a=0;a<t.length;a++){var o=t[a];if(o.length>=3)for(var s=0;s<i.length;s++)if(Zn(o,i[s]))return!0;if(qn(o,i,r))return!0}return!1}function qn(t,e,r){if(t.length>1){if(Hn(t,e))return!0;for(var n=0;n<e.length;n++)if(Wn(e[n],t,r))return!0}for(var i=0;i<t.length;i++)if(Wn(t[i],e,r))return!0;return!1}function Hn(t,e){if(0===t.length||0===e.length)return!1;for(var r=0;r<t.length-1;r++)for(var n=t[r],i=t[r+1],a=0;a<e.length-1;a++)if(Gn(n,i,e[a],e[a+1]))return!0;return!1}function Gn(t,e,r,n){return w(t,r,n)!==w(e,r,n)&&w(t,e,r)!==w(t,e,n)}function Wn(t,e,r){var n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(var i=1;i<e.length;i++)if(Yn(t,e[i-1],e[i])<n)return!0;return!1}function Yn(t,e,r){var n=e.distSqr(r);if(0===n)return t.distSqr(e);var i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return i<0?t.distSqr(e):i>1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function Xn(t,e){for(var r,n,i,a=!1,o=0;o<t.length;o++)for(var s=0,l=(r=t[o]).length-1;s<r.length;l=s++)n=r[s],i=r[l],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function Zn(t,e){for(var r=!1,n=0,i=t.length-1;n<t.length;i=n++){var a=t[n],o=t[i];a.y>e.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function $n(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).binders[t].statistics.max}function Jn(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Kn(t,e,r,n,i){if(!e[0]&&!e[1])return t;var a=l.convert(e);\"viewport\"===r&&a._rotate(-n);for(var o=[],s=0;s<t.length;s++){for(var c=t[s],u=[],f=0;f<c.length;f++)u.push(c[f].sub(a._mult(i)));o.push(u)}return o}Nn.prototype.populate=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=i.feature,o=i.index,s=i.sourceLayerIndex;if(this.layers[0]._featureFilter(new Lr(this.zoom),a)){var l=Fn(a);this.addFeature(a,l),e.featureIndex.insert(a,l,o,s,this.index)}}},Nn.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Nn.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Mn),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.programConfigurations.upload(t)},Nn.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},Nn.prototype.addFeature=function(t,e){for(var r=0,n=e;r<n.length;r+=1)for(var i=0,a=n[r];i<a.length;i+=1){var o=a[i],s=o.x,l=o.y;if(!(s<0||s>=Pn||l<0||l>=Pn)){var c=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),u=c.vertexLength;Bn(this.layoutVertexArray,s,l,-1,-1),Bn(this.layoutVertexArray,s,l,1,-1),Bn(this.layoutVertexArray,s,l,1,1),Bn(this.layoutVertexArray,s,l,-1,1),this.indexArray.emplaceBack(u,u+1,u+2),this.indexArray.emplaceBack(u,u+3,u+2),c.vertexLength+=4,c.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t)},pr(\"CircleBucket\",Nn,{omit:[\"layers\"]});var Qn={paint:new qr({\"circle-radius\":new jr(I.paint_circle[\"circle-radius\"]),\"circle-color\":new jr(I.paint_circle[\"circle-color\"]),\"circle-blur\":new jr(I.paint_circle[\"circle-blur\"]),\"circle-opacity\":new jr(I.paint_circle[\"circle-opacity\"]),\"circle-translate\":new Nr(I.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new Nr(I.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new Nr(I.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new Nr(I.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new jr(I.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new jr(I.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new jr(I.paint_circle[\"circle-stroke-opacity\"])})},ti=i(function(t,e){var r;t.exports=((r=new Float32Array(3))[0]=0,r[1]=0,r[2]=0,function(){var t=new Float32Array(4);t[0]=0,t[1]=0,t[2]=0,t[3]=0}(),{vec3:{transformMat3:function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t}},vec4:{transformMat4:function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}},mat2:{create:function(){var t=new Float32Array(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},rotate:function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=n*l+a*s,t[1]=i*l+o*s,t[2]=n*-s+a*l,t[3]=i*-s+o*l,t},scale:function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],l=r[1];return t[0]=n*s,t[1]=i*s,t[2]=a*l,t[3]=o*l,t}},mat3:{create:function(){var t=new Float32Array(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},fromRotation:function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}},mat4:{create:function(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},translate:function(t,e,r){var n,i,a,o,s,l,c,u,f,h,p,d,g=r[0],v=r[1],m=r[2];return e===t?(t[12]=e[0]*g+e[4]*v+e[8]*m+e[12],t[13]=e[1]*g+e[5]*v+e[9]*m+e[13],t[14]=e[2]*g+e[6]*v+e[10]*m+e[14],t[15]=e[3]*g+e[7]*v+e[11]*m+e[15]):(n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=c,t[7]=u,t[8]=f,t[9]=h,t[10]=p,t[11]=d,t[12]=n*g+s*v+f*m+e[12],t[13]=i*g+l*v+h*m+e[13],t[14]=a*g+c*v+p*m+e[14],t[15]=o*g+u*v+d*m+e[15]),t},scale:function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},multiply:function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],v=e[13],m=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*v,t[2]=x*a+b*c+_*p+w*m,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*v,t[6]=x*a+b*c+_*p+w*m,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*v,t[10]=x*a+b*c+_*p+w*m,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*v,t[14]=x*a+b*c+_*p+w*m,t[15]=x*o+b*u+_*d+w*y,t},perspective:function(t,e,r,n,i){var a=1/Math.tan(e/2),o=1/(n-i);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},rotateX:function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],l=e[7],c=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+c*n,t[5]=o*i+u*n,t[6]=s*i+f*n,t[7]=l*i+h*n,t[8]=c*i-a*n,t[9]=u*i-o*n,t[10]=f*i-s*n,t[11]=h*i-l*n,t},rotateZ:function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[4],u=e[5],f=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+c*n,t[1]=o*i+u*n,t[2]=s*i+f*n,t[3]=l*i+h*n,t[4]=c*i-a*n,t[5]=u*i-o*n,t[6]=f*i-s*n,t[7]=h*i-l*n,t},invert:function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],p=e[11],d=e[12],g=e[13],v=e[14],m=e[15],y=r*s-n*o,x=r*l-i*o,b=r*c-a*o,_=n*l-i*s,w=n*c-a*s,k=i*c-a*l,A=u*g-f*d,M=u*v-h*d,T=u*m-p*d,S=f*v-h*g,C=f*m-p*g,E=h*m-p*v,L=y*E-x*C+b*S+_*T-w*M+k*A;return L?(L=1/L,t[0]=(s*E-l*C+c*S)*L,t[1]=(i*C-n*E-a*S)*L,t[2]=(g*k-v*w+m*_)*L,t[3]=(h*w-f*k-p*_)*L,t[4]=(l*T-o*E-c*M)*L,t[5]=(r*E-i*T+a*M)*L,t[6]=(v*b-d*k-m*x)*L,t[7]=(u*k-h*b+p*x)*L,t[8]=(o*C-s*T+c*A)*L,t[9]=(n*T-r*C-a*A)*L,t[10]=(d*w-g*b+m*y)*L,t[11]=(f*b-u*w-p*y)*L,t[12]=(s*M-o*S-l*A)*L,t[13]=(r*S-n*M+i*A)*L,t[14]=(g*x-d*_-v*y)*L,t[15]=(u*_-f*x+h*y)*L,t):null},ortho:function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t}}})}),ei=(ti.vec3,ti.vec4),ri=(ti.mat2,ti.mat3,ti.mat4),ni=function(t){function e(e){t.call(this,e,Qn)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Nn(t)},e.prototype.queryRadius=function(t){var e=t;return $n(\"circle-radius\",this,e)+$n(\"circle-stroke-width\",this,e)+Jn(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o){for(var s=Kn(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),i.angle,a),l=this.paint.get(\"circle-radius\").evaluate(e)+this.paint.get(\"circle-stroke-width\").evaluate(e),c=\"map\"===this.paint.get(\"circle-pitch-alignment\"),u=c?s:function(t,e,r){return s.map(function(t){return t.map(function(t){return ii(t,e,r)})})}(0,o,i),f=c?l*a:l,h=0,p=r;h<p.length;h+=1)for(var d=0,g=p[h];d<g.length;d+=1){var v=g[d],m=c?v:ii(v,o,i),y=f,x=ei.transformMat4([],[v.x,v.y,0,1],o);if(\"viewport\"===this.paint.get(\"circle-pitch-scale\")&&\"map\"===this.paint.get(\"circle-pitch-alignment\")?y*=x[3]/i.cameraToCenterDistance:\"map\"===this.paint.get(\"circle-pitch-scale\")&&\"viewport\"===this.paint.get(\"circle-pitch-alignment\")&&(y*=i.cameraToCenterDistance/x[3]),jn(u,m,y))return!0}return!1},e}(Hr);function ii(t,e,r){var n=ei.transformMat4([],[t.x,t.y,0,1],e);return new l((n[0]/n[3]+1)*r.width*.5,(n[1]/n[3]+1)*r.height*.5)}var ai=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Nn);function oi(t,e,r,n){var i=e.width,a=e.height;if(n){if(n.length!==i*a*r)throw new RangeError(\"mismatched image size\")}else n=new Uint8Array(i*a*r);return t.width=i,t.height=a,t.data=n,t}function si(t,e,r){var n=e.width,i=e.height;if(n!==t.width||i!==t.height){var a=oi({},{width:n,height:i},r);li(t,a,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,i)},r),t.width=n,t.height=i,t.data=a.data}}function li(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l<i.height;l++)for(var c=((r.y+l)*t.width+r.x)*a,u=((n.y+l)*e.width+n.x)*a,f=0;f<i.width*a;f++)s[u+f]=o[c+f];return e}pr(\"HeatmapBucket\",ai,{omit:[\"layers\"]});var ci=function(t,e){oi(this,t,1,e)};ci.prototype.resize=function(t){si(this,t,1)},ci.prototype.clone=function(){return new ci({width:this.width,height:this.height},new Uint8Array(this.data))},ci.copy=function(t,e,r,n,i){li(t,e,r,n,i,1)};var ui=function(t,e){oi(this,t,4,e)};ui.prototype.resize=function(t){si(this,t,4)},ui.prototype.clone=function(){return new ui({width:this.width,height:this.height},new Uint8Array(this.data))},ui.copy=function(t,e,r,n,i){li(t,e,r,n,i,4)},pr(\"AlphaImage\",ci),pr(\"RGBAImage\",ui);var fi={paint:new qr({\"heatmap-radius\":new jr(I.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new jr(I.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new Nr(I.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Ur(I.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new Nr(I.paint_heatmap[\"heatmap-opacity\"])})};function hi(t,e){for(var r=new Uint8Array(1024),n={},i=0,a=0;i<256;i++,a+=4){n[e]=i/255;var o=t.evaluate(n);r[a+0]=Math.floor(255*o.r/o.a),r[a+1]=Math.floor(255*o.g/o.a),r[a+2]=Math.floor(255*o.b/o.a),r[a+3]=Math.floor(255*o.a)}return new ui({width:256,height:1},r)}var pi=function(t){function e(e){t.call(this,e,fi),this._updateColorRamp()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new ai(t)},e.prototype.setPaintProperty=function(e,r,n){t.prototype.setPaintProperty.call(this,e,r,n),\"heatmap-color\"===e&&this._updateColorRamp()},e.prototype._updateColorRamp=function(){var t=this._transitionablePaint._values[\"heatmap-color\"].value.expression;this.colorRamp=hi(t,\"heatmapDensity\"),this.colorRampTexture=null},e.prototype.resize=function(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility},e}(Hr),di={paint:new qr({\"hillshade-illumination-direction\":new Nr(I.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new Nr(I.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new Nr(I.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new Nr(I.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new Nr(I.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new Nr(I.paint_hillshade[\"hillshade-accent-color\"])})},gi=function(t){function e(e){t.call(this,e,di)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility},e}(Hr),vi=Xr([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,mi=xi,yi=xi;function xi(t,e,r){r=r||2;var n,i,a,o,s,l,c,u=e&&e.length,f=u?e[0]*r:t.length,h=bi(t,0,f,r,!0),p=[];if(!h)return p;if(u&&(h=function(t,e,r,n){var i,a,o,s=[];for(i=0,a=e.length;i<a;i++)(o=bi(t,e[i]*n,i<a-1?e[i+1]*n:t.length,n,!1))===o.next&&(o.steiner=!0),s.push(Li(o));for(s.sort(Si),i=0;i<s.length;i++)Ci(s[i],r),r=_i(r,r.next);return r}(t,e,h,r)),t.length>80*r){n=a=t[0],i=o=t[1];for(var d=r;d<f;d+=r)(s=t[d])<n&&(n=s),(l=t[d+1])<i&&(i=l),s>a&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return wi(h,p,r,n,i,c),p}function bi(t,e,r,n,i){var a,o;if(i===Vi(t,e,r,n)>0)for(a=e;a<r;a+=n)o=Bi(a,t[a],t[a+1],o);else for(a=r-n;a>=e;a-=n)o=Bi(a,t[a],t[a+1],o);return o&&Di(o,o.next)&&(Ni(o),o=o.next),o}function _i(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!Di(n,n.next)&&0!==Ii(n.prev,n,n.next))n=n.next;else{if(Ni(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function wi(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Ei(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e<c&&(s++,n=n.nextZ);e++);for(l=c;s>0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Ai(t,n,i,a):ki(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),Ni(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?wi(t=Mi(t,e,r),e,r,n,i,a,2):2===o&&Ti(t,e,r,n,i,a):wi(_i(t),e,r,n,i,a,1);break}}}function ki(t){var e=t.prev,r=t,n=t.next;if(Ii(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(zi(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Ii(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Ai(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Ii(i,a,o)>=0)return!1;for(var s=i.x<a.x?i.x<o.x?i.x:o.x:a.x<o.x?a.x:o.x,l=i.y<a.y?i.y<o.y?i.y:o.y:a.y<o.y?a.y:o.y,c=i.x>a.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Ei(s,l,e,r,n),h=Ei(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&zi(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Ii(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&zi(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Ii(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&zi(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Ii(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&zi(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Ii(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Mi(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!Di(i,a)&&Pi(i,n,n.next,a)&&Ri(i,a)&&Ri(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),Ni(n),Ni(n.next),n=t=a),n=n.next}while(n!==t);return n}function Ti(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Oi(o,s)){var l=Fi(o,s);return o=_i(o,o.next),l=_i(l,l.next),wi(o,e,r,n,i,a),void wi(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Si(t,e){return t.x-e.x}function Ci(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x<n.next.x?n:n.next}}n=n.next}while(n!==e);if(!r)return null;if(i===o)return r.prev;var l,c=r,u=r.x,f=r.y,h=1/0;for(n=r.next;n!==c;)i>=n.x&&n.x>=u&&i!==n.x&&zi(a<f?i:o,a,u,f,a<f?o:i,a,n.x,n.y)&&((l=Math.abs(a-n.y)/(i-n.x))<h||l===h&&n.x>r.x)&&Ri(n,t)&&(r=n,h=l),n=n.next;return r}(t,e)){var r=Fi(e,t);_i(r,r.next)}}function Ei(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Li(t){var e=t,r=t;do{e.x<r.x&&(r=e),e=e.next}while(e!==t);return r}function zi(t,e,r,n,i,a,o,s){return(i-o)*(e-s)-(t-o)*(a-s)>=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Oi(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Pi(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&Ri(t,e)&&Ri(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)}function Ii(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Di(t,e){return t.x===e.x&&t.y===e.y}function Pi(t,e,r,n){return!!(Di(t,e)&&Di(r,n)||Di(t,n)&&Di(r,e))||Ii(t,e,r)>0!=Ii(t,e,n)>0&&Ii(r,n,t)>0!=Ii(r,n,e)>0}function Ri(t,e){return Ii(t.prev,t,t.next)<0?Ii(t,e,t.next)>=0&&Ii(t,t.prev,e)>=0:Ii(t,e,t.prev)<0||Ii(t,t.next,e)<0}function Fi(t,e){var r=new ji(t.i,t.x,t.y),n=new ji(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function Bi(t,e,r,n){var i=new ji(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Ni(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ji(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Vi(t,e,r,n){for(var i=0,a=e,o=r-n;a<r;a+=n)i+=(t[o]-t[a])*(t[a+1]+t[o+1]),o=a;return i}xi.deviation=function(t,e,r,n){var i=e&&e.length,a=i?e[0]*r:t.length,o=Math.abs(Vi(t,0,a,r));if(i)for(var s=0,l=e.length;s<l;s++){var c=e[s]*r,u=s<l-1?e[s+1]*r:t.length;o-=Math.abs(Vi(t,c,u,r))}var f=0;for(s=0;s<n.length;s+=3){var h=n[s]*r,p=n[s+1]*r,d=n[s+2]*r;f+=Math.abs((t[h]-t[d])*(t[p+1]-t[h+1])-(t[h]-t[p])*(t[d+1]-t[h+1]))}return 0===o&&0===f?0:Math.abs((f-o)/o)},xi.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var o=0;o<e;o++)r.vertices.push(t[i][a][o]);i>0&&(n+=t[i-1].length,r.holes.push(n))}return r},mi.default=yi;var Ui=Hi,qi=Hi;function Hi(t,e,r,n,i){!function t(e,r,n,i,a){for(;i>n;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1);t(e,r,Math.max(n,Math.floor(r-s*c/o+u)),Math.min(i,Math.floor(r+(o-s)*c/o+u)),a)}var f=e[r],h=n,p=i;for(Gi(e,n,r),a(e[i],f)>0&&Gi(e,n,i);h<p;){for(Gi(e,h,p),h++,p--;a(e[h],f)<0;)h++;for(;a(e[p],f)>0;)p--}0===a(e[n],f)?Gi(e,n,p):Gi(e,++p,i),p<=r&&(n=p+1),r<=p&&(i=p-1)}}(t,e,r||0,n||t.length-1,i||Wi)}function Gi(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Wi(t,e){return t<e?-1:t>e?1:0}function Yi(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o<r;o++){var s=k(t[o]);0!==s&&(t[o].area=Math.abs(s),void 0===i&&(i=s<0),i===s<0?(n&&a.push(n),n=[t[o]]):n.push(t[o]))}if(n&&a.push(n),e>1)for(var l=0;l<a.length;l++)a[l].length<=e||(Ui(a[l],e,1,a[l].length-1,Xi),a[l]=a[l].slice(0,e));return a}function Xi(t,e){return e.area-t.area}Ui.default=qi;var Zi=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.layoutVertexArray=new $r,this.indexArray=new fn,this.indexArray2=new hn,this.programConfigurations=new In(vi,t.layers,t.zoom),this.segments=new Tn,this.segments2=new Tn};Zi.prototype.populate=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=i.feature,o=i.index,s=i.sourceLayerIndex;if(this.layers[0]._featureFilter(new Lr(this.zoom),a)){var l=Fn(a);this.addFeature(a,l),e.featureIndex.insert(a,l,o,s,this.index)}}},Zi.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Zi.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,vi),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2),this.programConfigurations.upload(t)},Zi.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},Zi.prototype.addFeature=function(t,e){for(var r=0,n=Yi(e,500);r<n.length;r+=1){for(var i=n[r],a=0,o=0,s=i;o<s.length;o+=1)a+=s[o].length;for(var l=this.segments.prepareSegment(a,this.layoutVertexArray,this.indexArray),c=l.vertexLength,u=[],f=[],h=0,p=i;h<p.length;h+=1){var d=p[h];if(0!==d.length){d!==i[0]&&f.push(u.length/2);var g=this.segments2.prepareSegment(d.length,this.layoutVertexArray,this.indexArray2),v=g.vertexLength;this.layoutVertexArray.emplaceBack(d[0].x,d[0].y),this.indexArray2.emplaceBack(v+d.length-1,v),u.push(d[0].x),u.push(d[0].y);for(var m=1;m<d.length;m++)this.layoutVertexArray.emplaceBack(d[m].x,d[m].y),this.indexArray2.emplaceBack(v+m-1,v+m),u.push(d[m].x),u.push(d[m].y);g.vertexLength+=d.length,g.primitiveLength+=d.length}}for(var y=mi(u,f),x=0;x<y.length;x+=3)this.indexArray.emplaceBack(c+y[x],c+y[x+1],c+y[x+2]);l.vertexLength+=a,l.primitiveLength+=y.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t)},pr(\"FillBucket\",Zi,{omit:[\"layers\"]});var $i={paint:new qr({\"fill-antialias\":new Nr(I.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new jr(I.paint_fill[\"fill-opacity\"]),\"fill-color\":new jr(I.paint_fill[\"fill-color\"]),\"fill-outline-color\":new jr(I.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new Nr(I.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new Nr(I.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new Vr(I.paint_fill[\"fill-pattern\"])})},Ji=function(t){function e(e){t.call(this,e,$i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(t){this.paint=this._transitioningPaint.possiblyEvaluate(t);var e=this.paint._values[\"fill-outline-color\"];\"constant\"===e.value.kind&&void 0===e.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"])},e.prototype.createBucket=function(t){return new Zi(t)},e.prototype.queryRadius=function(){return Jn(this.paint.get(\"fill-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a){return Vn(Kn(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),i.angle,a),r)},e}(Hr),Ki=Xr([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal_ed\",components:4,type:\"Int16\"}],4).members,Qi=Math.pow(2,13);function ta(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Qi)+o,i*Qi*2,a*Qi*2,Math.round(s))}var ea=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.layoutVertexArray=new Kr,this.indexArray=new fn,this.programConfigurations=new In(Ki,t.layers,t.zoom),this.segments=new Tn};function ra(t,e){return t.x===e.x&&(t.x<0||t.x>Pn)||t.y===e.y&&(t.y<0||t.y>Pn)}function na(t){return t.every(function(t){return t.x<0})||t.every(function(t){return t.x>Pn})||t.every(function(t){return t.y<0})||t.every(function(t){return t.y>Pn})}ea.prototype.populate=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=i.feature,o=i.index,s=i.sourceLayerIndex;if(this.layers[0]._featureFilter(new Lr(this.zoom),a)){var l=Fn(a);this.addFeature(a,l),e.featureIndex.insert(a,l,o,s,this.index)}}},ea.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},ea.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ki),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.programConfigurations.upload(t)},ea.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},ea.prototype.addFeature=function(t,e){for(var r=0,n=Yi(e,500);r<n.length;r+=1){for(var i=n[r],a=0,o=0,s=i;o<s.length;o+=1)a+=s[o].length;for(var l=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),c=0,u=i;c<u.length;c+=1){var f=u[c];if(0!==f.length&&!na(f))for(var h=0,p=0;p<f.length;p++){var d=f[p];if(p>=1){var g=f[p-1];if(!ra(d,g)){l.vertexLength+4>Tn.MAX_VERTEX_ARRAY_LENGTH&&(l=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var v=d.sub(g)._perp()._unit(),m=g.dist(d);h+m>32768&&(h=0),ta(this.layoutVertexArray,d.x,d.y,v.x,v.y,0,0,h),ta(this.layoutVertexArray,d.x,d.y,v.x,v.y,0,1,h),h+=m,ta(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,0,h),ta(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,1,h);var y=l.vertexLength;this.indexArray.emplaceBack(y,y+1,y+2),this.indexArray.emplaceBack(y+1,y+2,y+3),l.vertexLength+=4,l.primitiveLength+=2}}}}l.vertexLength+a>Tn.MAX_VERTEX_ARRAY_LENGTH&&(l=this.segments.prepareSegment(a,this.layoutVertexArray,this.indexArray));for(var x=[],b=[],_=l.vertexLength,w=0,k=i;w<k.length;w+=1){var A=k[w];if(0!==A.length){A!==i[0]&&b.push(x.length/2);for(var M=0;M<A.length;M++){var T=A[M];ta(this.layoutVertexArray,T.x,T.y,0,0,1,1,0),x.push(T.x),x.push(T.y)}}}for(var S=mi(x,b),C=0;C<S.length;C+=3)this.indexArray.emplaceBack(_+S[C],_+S[C+1],_+S[C+2]);l.primitiveLength+=S.length/3,l.vertexLength+=a}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t)},pr(\"FillExtrusionBucket\",ea,{omit:[\"layers\"]});var ia={paint:new qr({\"fill-extrusion-opacity\":new Nr(I[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new jr(I[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new Nr(I[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new Nr(I[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new Vr(I[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new jr(I[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new jr(I[\"paint_fill-extrusion\"][\"fill-extrusion-base\"])})},aa=function(t){function e(e){t.call(this,e,ia)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new ea(t)},e.prototype.queryRadius=function(){return Jn(this.paint.get(\"fill-extrusion-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a){return Vn(Kn(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),i.angle,a),r)},e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"fill-extrusion-opacity\")&&\"none\"!==this.visibility},e.prototype.resize=function(){this.viewportFrame&&(this.viewportFrame.destroy(),this.viewportFrame=null)},e}(Hr),oa=Xr([{name:\"a_pos_normal\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],4).members,sa=la;function la(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(ca,this,e)}function ca(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos)}function ua(t){for(var e,r,n=0,i=0,a=t.length,o=a-1;i<a;o=i++)e=t[i],n+=((r=t[o]).x-e.x)*(e.y+r.y);return n}la.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],la.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,i=0,a=0,o=0,s=[];t.pos<r;){if(i<=0){var c=t.readVarint();n=7&c,i=c>>3}if(i--,1===n||2===n)a+=t.readSVarint(),o+=t.readSVarint(),1===n&&(e&&s.push(e),e=[]),e.push(new l(a,o));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&s.push(e),s},la.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos<e;){if(n<=0){var u=t.readVarint();r=7&u,n=u>>3}if(n--,1===r||2===r)(i+=t.readSVarint())<o&&(o=i),i>s&&(s=i),(a+=t.readSVarint())<l&&(l=a),a>c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},la.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=la.types[this.type];function u(t){for(var e=0;e<t.length;e++){var r=t[e],n=180-360*(r.y+s)/a;t[e]=[360*(r.x+o)/a-180,360/Math.PI*Math.atan(Math.exp(n*Math.PI/180))-90]}}switch(this.type){case 1:var f=[];for(n=0;n<l.length;n++)f[n]=l[n][0];u(l=f);break;case 2:for(n=0;n<l.length;n++)u(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return[t];for(var r,n,i=[],a=0;a<e;a++){var o=ua(t[a]);0!==o&&(void 0===n&&(n=o<0),n===o<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]))}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)u(l[n][i])}1===l.length?l=l[0]:c=\"Multi\"+c;var h={type:\"Feature\",geometry:{type:c,coordinates:l},properties:this.properties};return\"id\"in this&&(h.id=this.id),h};var fa=ha;function ha(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(pa,this,e),this.length=this._features.length}function pa(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function da(t,e,r){if(3===t){var n=new fa(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}ha.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new sa(this._pbf,e,this.extent,this._keys,this._values)};var ga={VectorTile:function(t,e){this.layers=t.readFields(da,{},e)},VectorTileFeature:sa,VectorTileLayer:fa},va=ga.VectorTileFeature.types,ma=63,ya=Math.cos(Math.PI/180*37.5),xa=.5,ba=Math.pow(2,14)/xa;function _a(t,e,r,n,i,a,o){t.emplaceBack(e.x,e.y,n?1:0,i?1:-1,Math.round(ma*r.x)+128,Math.round(ma*r.y)+128,1+(0===a?0:a<0?-1:1)|(o*xa&63)<<2,o*xa>>6)}var wa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.layoutVertexArray=new Qr,this.indexArray=new fn,this.programConfigurations=new In(oa,t.layers,t.zoom),this.segments=new Tn};function ka(t,e){return(t/e.tileTotal*(e.end-e.start)+e.start)*(ba-1)}wa.prototype.populate=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=i.feature,o=i.index,s=i.sourceLayerIndex;if(this.layers[0]._featureFilter(new Lr(this.zoom),a)){var l=Fn(a);this.addFeature(a,l),e.featureIndex.insert(a,l,o,s,this.index)}}},wa.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},wa.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,oa),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.programConfigurations.upload(t)},wa.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},wa.prototype.addFeature=function(t,e){for(var r=this.layers[0].layout,n=r.get(\"line-join\").evaluate(t),i=r.get(\"line-cap\"),a=r.get(\"line-miter-limit\"),o=r.get(\"line-round-limit\"),s=0,l=e;s<l.length;s+=1){var c=l[s];this.addLine(c,t,n,i,a,o)}},wa.prototype.addLine=function(t,e,r,n,i,a){var o=null;e.properties&&e.properties.hasOwnProperty(\"mapbox_clip_start\")&&e.properties.hasOwnProperty(\"mapbox_clip_end\")&&(o={start:e.properties.mapbox_clip_start,end:e.properties.mapbox_clip_end,tileTotal:void 0});for(var s=\"Polygon\"===va[e.type],l=t.length;l>=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c<l-1&&t[c].equals(t[c+1]);)c++;if(!(l<(s?3:2))){o&&(o.tileTotal=function(t,e,r){for(var n,i,a=0,o=c;o<r-1;o++)n=t[o],i=t[o+1],a+=n.dist(i);return a}(t,0,l)),\"bevel\"===r&&(i=1.05);var u=Pn/(512*this.overscaling)*15,f=t[c],h=this.segments.prepareSegment(10*l,this.layoutVertexArray,this.indexArray);this.distance=0;var p,d,g,v=n,m=s?\"butt\":n,y=!0,x=void 0,b=void 0,_=void 0,w=void 0;this.e1=this.e2=this.e3=-1,s&&(p=t[l-2],w=f.sub(p)._unit()._perp());for(var k=c;k<l;k++)if(!(b=s&&k===l-1?t[c+1]:t[k+1])||!t[k].equals(b)){w&&(_=w),p&&(x=p),p=t[k],w=b?b.sub(p)._unit()._perp():_;var A=(_=_||w).add(w);0===A.x&&0===A.y||A._unit();var M=A.x*w.x+A.y*w.y,T=0!==M?1/M:1/0,S=M<ya&&x&&b;if(S&&k>c){var C=p.dist(x);if(C>2*u){var E=p.sub(p.sub(x)._mult(u/C)._round());this.distance+=E.dist(x),this.addCurrentVertex(E,this.distance,_.mult(1),0,0,!1,h,o),x=E}}var L=x&&b,z=L?r:b?v:m;if(L&&\"round\"===z&&(T<a?z=\"miter\":T<=2&&(z=\"fakeround\")),\"miter\"===z&&T>i&&(z=\"bevel\"),\"bevel\"===z&&(T>2&&(z=\"flipbevel\"),T<i&&(z=\"miter\")),x&&(this.distance+=p.dist(x)),\"miter\"===z)A._mult(T),this.addCurrentVertex(p,this.distance,A,0,0,!1,h,o);else if(\"flipbevel\"===z){if(T>100)A=w.clone().mult(-1);else{var O=_.x*w.y-_.y*w.x>0?-1:1,I=T*_.add(w).mag()/_.sub(w).mag();A._perp()._mult(I*O)}this.addCurrentVertex(p,this.distance,A,0,0,!1,h,o),this.addCurrentVertex(p,this.distance,A.mult(-1),0,0,!1,h,o)}else if(\"bevel\"===z||\"fakeround\"===z){var D=_.x*w.y-_.y*w.x>0,P=-Math.sqrt(T*T-1);if(D?(g=0,d=P):(d=0,g=P),y||this.addCurrentVertex(p,this.distance,_,d,g,!1,h,o),\"fakeround\"===z){for(var R=Math.floor(8*(.5-(M-.5))),F=void 0,B=0;B<R;B++)F=w.mult((B+1)/(R+1))._add(_)._unit(),this.addPieSliceVertex(p,this.distance,F,D,h,o);this.addPieSliceVertex(p,this.distance,A,D,h,o);for(var N=R-1;N>=0;N--)F=_.mult((N+1)/(R+1))._add(w)._unit(),this.addPieSliceVertex(p,this.distance,F,D,h,o)}b&&this.addCurrentVertex(p,this.distance,w,-d,-g,!1,h,o)}else\"butt\"===z?(y||this.addCurrentVertex(p,this.distance,_,0,0,!1,h,o),b&&this.addCurrentVertex(p,this.distance,w,0,0,!1,h,o)):\"square\"===z?(y||(this.addCurrentVertex(p,this.distance,_,1,1,!1,h,o),this.e1=this.e2=-1),b&&this.addCurrentVertex(p,this.distance,w,-1,-1,!1,h,o)):\"round\"===z&&(y||(this.addCurrentVertex(p,this.distance,_,0,0,!1,h,o),this.addCurrentVertex(p,this.distance,_,1,1,!0,h,o),this.e1=this.e2=-1),b&&(this.addCurrentVertex(p,this.distance,w,-1,-1,!0,h,o),this.addCurrentVertex(p,this.distance,w,0,0,!1,h,o)));if(S&&k<l-1){var j=p.dist(b);if(j>2*u){var V=p.add(b.sub(p)._mult(u/j)._round());this.distance+=V.dist(p),this.addCurrentVertex(V,this.distance,w.mult(1),0,0,!1,h,o),p=V}}y=!1}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e)}},wa.prototype.addCurrentVertex=function(t,e,r,n,i,a,o,s){var l,c=this.layoutVertexArray,u=this.indexArray;s&&(e=ka(e,s)),l=r.clone(),n&&l._sub(r.perp()._mult(n)),_a(c,t,l,a,!1,n,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(u.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,l=r.mult(-1),i&&l._sub(r.perp()._mult(i)),_a(c,t,l,a,!0,-i,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(u.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,e>ba/2&&!s&&(this.distance=0,this.addCurrentVertex(t,this.distance,r,n,i,a,o))},wa.prototype.addPieSliceVertex=function(t,e,r,n,i,a){r=r.mult(n?-1:1);var o=this.layoutVertexArray,s=this.indexArray;a&&(e=ka(e,a)),_a(o,t,r,!1,n,0,e),this.e3=i.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),i.primitiveLength++),n?this.e2=this.e3:this.e1=this.e3},pr(\"LineBucket\",wa,{omit:[\"layers\"]});var Aa=new qr({\"line-cap\":new Nr(I.layout_line[\"line-cap\"]),\"line-join\":new jr(I.layout_line[\"line-join\"]),\"line-miter-limit\":new Nr(I.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new Nr(I.layout_line[\"line-round-limit\"])}),Ma={paint:new qr({\"line-opacity\":new jr(I.paint_line[\"line-opacity\"]),\"line-color\":new jr(I.paint_line[\"line-color\"]),\"line-translate\":new Nr(I.paint_line[\"line-translate\"]),\"line-translate-anchor\":new Nr(I.paint_line[\"line-translate-anchor\"]),\"line-width\":new jr(I.paint_line[\"line-width\"]),\"line-gap-width\":new jr(I.paint_line[\"line-gap-width\"]),\"line-offset\":new jr(I.paint_line[\"line-offset\"]),\"line-blur\":new jr(I.paint_line[\"line-blur\"]),\"line-dasharray\":new Vr(I.paint_line[\"line-dasharray\"]),\"line-pattern\":new Vr(I.paint_line[\"line-pattern\"]),\"line-gradient\":new Ur(I.paint_line[\"line-gradient\"])}),layout:Aa},Ta=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new Lr(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n){return r=p({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n)},e}(jr))(Ma.paint.properties[\"line-width\"].specification);Ta.useIntegerZoom=!0;var Sa=function(t){function e(e){t.call(this,e,Ma)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPaintProperty=function(e,r,n){t.prototype.setPaintProperty.call(this,e,r,n),\"line-gradient\"===e&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=hi(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),this.paint._values[\"line-floorwidth\"]=Ta.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new wa(t)},e.prototype.queryRadius=function(t){var e=t,r=Ca($n(\"line-width\",this,e),$n(\"line-gap-width\",this,e)),n=$n(\"line-offset\",this,e);return r/2+Math.abs(n)+Jn(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a){var o=Kn(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),i.angle,a),s=a/2*Ca(this.paint.get(\"line-width\").evaluate(e),this.paint.get(\"line-gap-width\").evaluate(e)),c=this.paint.get(\"line-offset\").evaluate(e);return c&&(r=function(t,e){for(var r=[],n=new l(0,0),i=0;i<t.length;i++){for(var a=t[i],o=[],s=0;s<a.length;s++){var c=a[s-1],u=a[s],f=a[s+1],h=0===s?n:u.sub(c)._unit()._perp(),p=s===a.length-1?n:f.sub(u)._unit()._perp(),d=h._add(p)._unit(),g=d.x*p.x+d.y*p.y;d._mult(1/g),o.push(d._mult(e)._add(u))}r.push(o)}return r}(r,c*a)),Un(o,r,s)},e}(Hr);function Ca(t,e){return e>0?e+2*t:t}var Ea=Xr([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}]),La=Xr([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),za=(Xr([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Xr([{name:\"a_placed\",components:2,type:\"Uint8\"}],4)),Oa=(Xr([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"radius\"},{type:\"Int16\",name:\"signedDistanceFromAnchor\"}]),Xr([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),Ia=Xr([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4);function Da(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r);return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),Er.applyArabicShaping&&(t=Er.applyArabicShaping(t)),t}Xr([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"hidden\"}]),Xr([{type:\"Float32\",name:\"offsetX\"}]),Xr([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);var Pa={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"},Ra=function(t){function e(e,r,n,i){t.call(this,e,r),this.angle=n,void 0!==i&&(this.segment=i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(l);function Fa(t,e){var r=e.expression;if(\"constant\"===r.kind)return{functionType:\"constant\",layoutSize:r.evaluate(new Lr(t+1))};if(\"source\"===r.kind)return{functionType:\"source\"};for(var n=r.zoomStops,i=0;i<n.length&&n[i]<=t;)i++;for(var a=i=Math.max(0,i-1);a<n.length&&n[a]<t+1;)a++;a=Math.min(n.length-1,a);var o={min:n[i],max:n[a]};return\"composite\"===r.kind?{functionType:\"composite\",zoomRange:o,propertyValue:e.value}:{functionType:\"camera\",layoutSize:r.evaluate(new Lr(t+1)),zoomRange:o,sizeRange:{min:r.evaluate(new Lr(o.min)),max:r.evaluate(new Lr(o.max))},propertyValue:e.value}}pr(\"Anchor\",Ra);var Ba=ga.VectorTileFeature.types,Na=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function ja(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,o,s?s[0]:0,s?s[1]:0)}function Va(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r)}var Ua=function(t){this.layoutVertexArray=new tn,this.indexArray=new fn,this.programConfigurations=t,this.segments=new Tn,this.dynamicLayoutVertexArray=new en,this.opacityVertexArray=new rn,this.placedSymbolArray=new yn};Ua.prototype.upload=function(t,e){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ea.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.programConfigurations.upload(t),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,La.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Na,!0),this.opacityVertexBuffer.itemSize=1},Ua.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy())},pr(\"SymbolBuffers\",Ua);var qa=function(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new Tn,this.collisionVertexArray=new on};qa.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,za.members,!0)},qa.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())},pr(\"CollisionBuffers\",qa);var Ha=function(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex;var e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Fa(this.zoom,e[\"text-size\"]),this.iconSizeData=Fa(this.zoom,e[\"icon-size\"]);var r=this.layers[0].layout;this.sortFeaturesByY=r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\")};Ha.prototype.createArrays=function(){this.text=new Ua(new In(Ea.members,this.layers,this.zoom,function(t){return/^text/.test(t)})),this.icon=new Ua(new In(Ea.members,this.layers,this.zoom,function(t){return/^icon/.test(t)})),this.collisionBox=new qa(an,Oa.members,hn),this.collisionCircle=new qa(an,Ia.members,fn),this.glyphOffsetArray=new bn,this.lineVertexArray=new wn},Ha.prototype.populate=function(t,e){var r=this.layers[0],n=r.layout,i=n.get(\"text-font\"),a=n.get(\"text-field\"),o=n.get(\"icon-image\"),s=(\"constant\"!==a.value.kind||a.value.value.length>0)&&(\"constant\"!==i.value.kind||i.value.value.length>0),l=\"constant\"!==o.value.kind||o.value.value&&o.value.value.length>0;if(this.features=[],s||l){for(var c=e.iconDependencies,u=e.glyphDependencies,f=new Lr(this.zoom),h=0,p=t;h<p.length;h+=1){var d=p[h],g=d.feature,v=d.index,m=d.sourceLayerIndex;if(r._featureFilter(f,g)){var y=void 0;s&&(y=Da(y=r.getValueAndResolveTokens(\"text-field\",g),r,g));var x=void 0;if(l&&(x=r.getValueAndResolveTokens(\"icon-image\",g)),y||x){var b={text:y,icon:x,index:v,sourceLayerIndex:m,geometry:Fn(g),properties:g.properties,type:Ba[g.type]};if(void 0!==g.id&&(b.id=g.id),this.features.push(b),x&&(c[x]=!0),y)for(var _=i.evaluate(g).join(\",\"),w=u[_]=u[_]||{},k=\"map\"===n.get(\"text-rotation-alignment\")&&\"line\"===n.get(\"symbol-placement\"),A=xr(y),M=0;M<y.length;M++)if(w[y.charCodeAt(M)]=!0,k&&A){var T=Pa[y.charAt(M)];T&&(w[T.charCodeAt(0)]=!0)}}}}\"line\"===n.get(\"symbol-placement\")&&(this.features=function(t){var e={},r={},n=[],i=0;function a(e){n.push(t[e]),i++}function o(t,e,i){var a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function s(t,r,i){var a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function l(t,e,r){var n=r?e[0][e[0].length-1]:e[0][0];return t+\":\"+n.x+\":\"+n.y}for(var c=0;c<t.length;c++){var u=t[c],f=u.geometry,h=u.text;if(h){var p=l(h,f),d=l(h,f,!0);if(p in r&&d in e&&r[p]!==e[d]){var g=s(p,d,f),v=o(p,d,n[g].geometry);delete e[p],delete r[d],r[l(h,n[v].geometry,!0)]=v,n[g].geometry=null}else p in r?o(p,d,f):d in e?s(p,d,f):(a(c),e[p]=i-1,r[d]=i-1)}else a(c)}return n.filter(function(t){return t.geometry})}(this.features))}},Ha.prototype.isEmpty=function(){return 0===this.symbolInstances.length},Ha.prototype.upload=function(t){this.text.upload(t,this.sortFeaturesByY),this.icon.upload(t,this.sortFeaturesByY),this.collisionBox.upload(t),this.collisionCircle.upload(t)},Ha.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.collisionBox.destroy(),this.collisionCircle.destroy()},Ha.prototype.addToLineVertexArray=function(t,e){var r=this.lineVertexArray.length;if(void 0!==t.segment){for(var n=t.dist(e[t.segment+1]),i=t.dist(e[t.segment]),a={},o=t.segment+1;o<e.length;o++)a[o]={x:e[o].x,y:e[o].y,tileUnitDistanceFromAnchor:n},o<e.length-1&&(n+=e[o+1].dist(e[o]));for(var s=t.segment||0;s>=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l<e.length;l++){var c=a[l];this.lineVertexArray.emplaceBack(c.x,c.y,c.tileUnitDistanceFromAnchor)}}return{lineStartIndex:r,lineLength:this.lineVertexArray.length-r}},Ha.prototype.addSymbols=function(t,e,r,n,i,a,o,s,l,c){for(var u=t.indexArray,f=t.layoutVertexArray,h=t.dynamicLayoutVertexArray,p=t.segments.prepareSegment(4*e.length,t.layoutVertexArray,t.indexArray),d=this.glyphOffsetArray.length,g=p.vertexLength,v=0,m=e;v<m.length;v+=1){var y=m[v],x=y.tl,b=y.tr,_=y.bl,w=y.br,k=y.tex,A=p.vertexLength,M=y.glyphOffset[1];ja(f,s.x,s.y,x.x,M+x.y,k.x,k.y,r),ja(f,s.x,s.y,b.x,M+b.y,k.x+k.w,k.y,r),ja(f,s.x,s.y,_.x,M+_.y,k.x,k.y+k.h,r),ja(f,s.x,s.y,w.x,M+w.y,k.x+k.w,k.y+k.h,r),Va(h,s,0),u.emplaceBack(A,A+1,A+2),u.emplaceBack(A+1,A+2,A+3),p.vertexLength+=4,p.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(y.glyphOffset[0])}t.placedSymbolArray.emplaceBack(s.x,s.y,d,this.glyphOffsetArray.length-d,g,l,c,s.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],o,!1),t.programConfigurations.populatePaintArrays(t.layoutVertexArray.length,a)},Ha.prototype._addCollisionDebugVertex=function(t,e,r,n,i){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n.x,n.y,Math.round(i.x),Math.round(i.y))},Ha.prototype.addCollisionDebugVertices=function(t,e,r,n,i,a,o,s){var c=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),u=c.vertexLength,f=i.layoutVertexArray,h=i.collisionVertexArray;if(this._addCollisionDebugVertex(f,h,a,o.anchor,new l(t,e)),this._addCollisionDebugVertex(f,h,a,o.anchor,new l(r,e)),this._addCollisionDebugVertex(f,h,a,o.anchor,new l(r,n)),this._addCollisionDebugVertex(f,h,a,o.anchor,new l(t,n)),c.vertexLength+=4,s){var p=i.indexArray;p.emplaceBack(u,u+1,u+2),p.emplaceBack(u,u+2,u+3),c.primitiveLength+=2}else{var d=i.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),c.primitiveLength+=4}},Ha.prototype.generateCollisionDebugBuffers=function(){for(var t=0,e=this.symbolInstances;t<e.length;t+=1){var r=e[t];r.textCollisionFeature={boxStartIndex:r.textBoxStartIndex,boxEndIndex:r.textBoxEndIndex},r.iconCollisionFeature={boxStartIndex:r.iconBoxStartIndex,boxEndIndex:r.iconBoxEndIndex};for(var n=0;n<2;n++){var i=r[0===n?\"textCollisionFeature\":\"iconCollisionFeature\"];if(i)for(var a=i.boxStartIndex;a<i.boxEndIndex;a++){var o=this.collisionBoxArray.get(a),s=o.x1,l=o.y1,c=o.x2,u=o.y2,f=o.radius>0;this.addCollisionDebugVertices(s,l,c,u,f?this.collisionCircle:this.collisionBox,o.anchorPoint,r,f)}}}},Ha.prototype.deserializeCollisionBoxes=function(t,e,r,n,i){for(var a={},o=e;o<r;o++){var s=t.get(o);if(0===s.radius){a.textBox={x1:s.x1,y1:s.y1,x2:s.x2,y2:s.y2,anchorPointX:s.anchorPointX,anchorPointY:s.anchorPointY},a.textFeatureIndex=s.featureIndex;break}a.textCircles||(a.textCircles=[],a.textFeatureIndex=s.featureIndex),a.textCircles.push(s.anchorPointX,s.anchorPointY,s.radius,s.signedDistanceFromAnchor,1)}for(var l=n;l<i;l++){var c=t.get(l);if(0===c.radius){a.iconBox={x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2,anchorPointX:c.anchorPointX,anchorPointY:c.anchorPointY},a.iconFeatureIndex=c.featureIndex;break}}return a},Ha.prototype.hasTextData=function(){return this.text.segments.get().length>0},Ha.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Ha.prototype.hasCollisionBoxData=function(){return this.collisionBox.segments.get().length>0},Ha.prototype.hasCollisionCircleData=function(){return this.collisionCircle.segments.get().length>0},Ha.prototype.sortFeatures=function(t){var e=this;if(this.sortFeaturesByY&&this.sortedAngle!==t&&(this.sortedAngle=t,!(this.text.segments.get().length>1||this.icon.segments.get().length>1))){for(var r=[],n=0;n<this.symbolInstances.length;n++)r.push(n);var i=Math.sin(t),a=Math.cos(t);r.sort(function(t,r){var n=e.symbolInstances[t],o=e.symbolInstances[r];return(i*n.anchor.x+a*n.anchor.y|0)-(i*o.anchor.x+a*o.anchor.y|0)||o.featureIndex-n.featureIndex}),this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var o=0,s=r;o<s.length;o+=1){var l=s[o],c=e.symbolInstances[l];e.featureSortOrder.push(c.featureIndex);for(var u=0,f=c.placedTextSymbolIndices;u<f.length;u+=1)for(var h=f[u],p=e.text.placedSymbolArray.get(h),d=p.vertexStartIndex+4*p.numGlyphs,g=p.vertexStartIndex;g<d;g+=4)e.text.indexArray.emplaceBack(g,g+1,g+2),e.text.indexArray.emplaceBack(g+1,g+2,g+3);var v=e.icon.placedSymbolArray.get(l);if(v.numGlyphs){var m=v.vertexStartIndex;e.icon.indexArray.emplaceBack(m,m+1,m+2),e.icon.indexArray.emplaceBack(m+1,m+2,m+3)}}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},pr(\"SymbolBucket\",Ha,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"],shallow:[\"symbolInstances\"]}),Ha.MAX_GLYPHS=65535,Ha.addDynamicAttributes=Va;var Ga=new qr({\"symbol-placement\":new Nr(I.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new Nr(I.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new Nr(I.layout_symbol[\"symbol-avoid-edges\"]),\"icon-allow-overlap\":new Nr(I.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new Nr(I.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new Nr(I.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new Nr(I.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new jr(I.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new Nr(I.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new Nr(I.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new jr(I.layout_symbol[\"icon-image\"]),\"icon-rotate\":new jr(I.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new Nr(I.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new Nr(I.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new jr(I.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new jr(I.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new Nr(I.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new Nr(I.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new Nr(I.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new jr(I.layout_symbol[\"text-field\"]),\"text-font\":new jr(I.layout_symbol[\"text-font\"]),\"text-size\":new jr(I.layout_symbol[\"text-size\"]),\"text-max-width\":new jr(I.layout_symbol[\"text-max-width\"]),\"text-line-height\":new Nr(I.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new jr(I.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new jr(I.layout_symbol[\"text-justify\"]),\"text-anchor\":new jr(I.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new Nr(I.layout_symbol[\"text-max-angle\"]),\"text-rotate\":new jr(I.layout_symbol[\"text-rotate\"]),\"text-padding\":new Nr(I.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new Nr(I.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new jr(I.layout_symbol[\"text-transform\"]),\"text-offset\":new jr(I.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new Nr(I.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new Nr(I.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new Nr(I.layout_symbol[\"text-optional\"])}),Wa={paint:new qr({\"icon-opacity\":new jr(I.paint_symbol[\"icon-opacity\"]),\"icon-color\":new jr(I.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new jr(I.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new jr(I.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new jr(I.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new Nr(I.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new Nr(I.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new jr(I.paint_symbol[\"text-opacity\"]),\"text-color\":new jr(I.paint_symbol[\"text-color\"]),\"text-halo-color\":new jr(I.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new jr(I.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new jr(I.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new Nr(I.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new Nr(I.paint_symbol[\"text-translate-anchor\"])}),layout:Ga},Ya=function(t){function e(e){t.call(this,e,Wa)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"line\"===this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"line\"===this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"))},e.prototype.getValueAndResolveTokens=function(t,e){var r,n=this.layout.get(t).evaluate(e),i=this._unevaluatedLayout._values[t];return i.isDataDriven()||_e(i.value)?n:(r=e.properties,n.replace(/{([^{}]+)}/g,function(t,e){return e in r?String(r[e]):\"\"}))},e.prototype.createBucket=function(t){return new Ha(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e}(Hr),Xa={paint:new qr({\"background-color\":new Nr(I.paint_background[\"background-color\"]),\"background-pattern\":new Vr(I.paint_background[\"background-pattern\"]),\"background-opacity\":new Nr(I.paint_background[\"background-opacity\"])})},Za=function(t){function e(e){t.call(this,e,Xa)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Hr),$a={paint:new qr({\"raster-opacity\":new Nr(I.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new Nr(I.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new Nr(I.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new Nr(I.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new Nr(I.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new Nr(I.paint_raster[\"raster-contrast\"]),\"raster-fade-duration\":new Nr(I.paint_raster[\"raster-fade-duration\"])})},Ja={circle:ni,heatmap:pi,hillshade:gi,fill:Ji,\"fill-extrusion\":aa,line:Sa,symbol:Ya,background:Za,raster:function(t){function e(e){t.call(this,e,$a)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Hr)},Ka=i(function(t,e){t.exports=function(){function t(t,e,r){r=r||{},this.w=t||64,this.h=e||64,this.autoResize=!!r.autoResize,this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0}function e(t,e,r){this.x=0,this.y=t,this.w=this.free=e,this.h=r}return t.prototype.pack=function(t,e){t=[].concat(t),e=e||{};for(var r,n,i,a,o=[],s=0;s<t.length;s++)if(r=t[s].w||t[s].width,n=t[s].h||t[s].height,i=t[s].id,r&&n){if(!(a=this.packOne(r,n,i)))continue;e.inPlace&&(t[s].x=a.x,t[s].y=a.y,t[s].id=a.id),o.push(a)}return this.shrink(),o},t.prototype.packOne=function(t,r,n){var i,a,o,s,l,c,u,f,h={freebin:-1,shelf:-1,waste:1/0},p=0;if(\"string\"==typeof n||\"number\"==typeof n){if(i=this.getBin(n))return this.ref(i),i;\"number\"==typeof n&&(this.maxId=Math.max(n,this.maxId))}else n=++this.maxId;for(s=0;s<this.freebins.length;s++){if(r===(i=this.freebins[s]).maxh&&t===i.maxw)return this.allocFreebin(s,t,r,n);r>i.maxh||t>i.maxw||r<=i.maxh&&t<=i.maxw&&(o=i.maxw*i.maxh-t*r)<h.waste&&(h.waste=o,h.freebin=s)}for(s=0;s<this.shelves.length;s++)if(p+=(a=this.shelves[s]).h,!(t>a.free)){if(r===a.h)return this.allocShelf(s,t,r,n);r>a.h||r<a.h&&(o=(a.h-r)*t)<h.waste&&(h.freebin=-1,h.waste=o,h.shelf=s)}return-1!==h.freebin?this.allocFreebin(h.freebin,t,r,n):-1!==h.shelf?this.allocShelf(h.shelf,t,r,n):r<=this.h-p&&t<=this.w?(a=new e(p,this.w,r),this.allocShelf(this.shelves.push(a)-1,t,r,n)):this.autoResize?(l=c=this.h,((u=f=this.w)<=l||t>u)&&(f=2*Math.max(t,u)),(l<u||r>l)&&(c=2*Math.max(r,l)),this.resize(f,c),this.packOne(t,r,n)):null},t.prototype.allocFreebin=function(t,e,r,n){var i=this.freebins.splice(t,1)[0];return i.id=n,i.w=e,i.h=r,i.refcount=0,this.bins[n]=i,this.ref(i),i},t.prototype.allocShelf=function(t,e,r,n){var i=this.shelves[t].alloc(e,r,n);return this.bins[n]=i,this.ref(i),i},t.prototype.shrink=function(){if(this.shelves.length>0){for(var t=0,e=0,r=0;r<this.shelves.length;r++){var n=this.shelves[r];e+=n.h,t=Math.max(n.w-n.free,t)}this.resize(t,e)}},t.prototype.getBin=function(t){return this.bins[t]},t.prototype.ref=function(t){if(1==++t.refcount){var e=t.h;this.stats[e]=1+(0|this.stats[e])}return t.refcount},t.prototype.unref=function(t){return 0===t.refcount?0:(0==--t.refcount&&(this.stats[t.h]--,delete this.bins[t.id],this.freebins.push(t)),t.refcount)},t.prototype.clear=function(){this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var r=0;r<this.shelves.length;r++)this.shelves[r].resize(t);return!0},e.prototype.alloc=function(t,e,r){if(t>this.free||e>this.h)return null;var n=this.x;return this.x+=t,this.free-=t,new function(t,e,r,n,i,a,o){this.id=t,this.x=e,this.y=r,this.w=n,this.h=i,this.maxw=a||n,this.maxh=o||i,this.refcount=0}(r,n,this.y,t,e,t,this.h)},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t}()}),Qa=function(t,e){var r=e.pixelRatio;this.paddedRect=t,this.pixelRatio=r},to={tl:{configurable:!0},br:{configurable:!0},displaySize:{configurable:!0}};to.tl.get=function(){return[this.paddedRect.x+1,this.paddedRect.y+1]},to.br.get=function(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]},to.displaySize.get=function(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]},Object.defineProperties(Qa.prototype,to);var eo=function(t){var e=new ui({width:0,height:0}),r={},n=new Ka(0,0,{autoResize:!0});for(var i in t){var a=t[i],o=n.packOne(a.data.width+2,a.data.height+2);e.resize({width:n.w,height:n.h}),ui.copy(a.data,e,{x:0,y:0},{x:o.x+1,y:o.y+1},a.data),r[i]=new Qa(o,a)}n.shrink(),e.resize({width:n.w,height:n.h}),this.image=e,this.positions=r};pr(\"ImagePosition\",Qa),pr(\"ImageAtlas\",eo);var ro=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<<s)-1,c=l>>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},no=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<<c)-1,f=u>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},io=ao;function ao(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}function oo(t){return t.type===ao.Bytes?t.readVarint()+t.pos:t.pos+1}function so(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function lo(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function co(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r])}function uo(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r])}function fo(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r])}function ho(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r])}function po(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r])}function go(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r])}function vo(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r])}function mo(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r])}function yo(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r])}function xo(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function bo(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function _o(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ao.Varint=0,ao.Fixed64=1,ao.Bytes=2,ao.Fixed32=5,ao.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=xo(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=_o(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=xo(this.buf,this.pos)+4294967296*xo(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=xo(this.buf,this.pos)+4294967296*_o(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=ro(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=ro(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128)return so(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return so(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return so(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return so(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return so(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return so(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=function(t,e,r){for(var n=\"\",i=e;i<r;){var a,o,s,l=t[i],c=null,u=l>239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,this.pos,t);return this.pos=t,e},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){var r=oo(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){var e=oo(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===ao.Varint)for(;this.buf[this.pos++]>127;);else if(e===ao.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ao.Fixed32)this.pos+=4;else{if(e!==ao.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),bo(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),bo(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),bo(this.buf,-1&t,this.pos),bo(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),bo(this.buf,-1&t,this.pos),bo(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&lo(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),no(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),no(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r]},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&lo(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ao.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){this.writeMessage(t,co,e)},writePackedSVarint:function(t,e){this.writeMessage(t,uo,e)},writePackedBoolean:function(t,e){this.writeMessage(t,po,e)},writePackedFloat:function(t,e){this.writeMessage(t,fo,e)},writePackedDouble:function(t,e){this.writeMessage(t,ho,e)},writePackedFixed32:function(t,e){this.writeMessage(t,go,e)},writePackedSFixed32:function(t,e){this.writeMessage(t,vo,e)},writePackedFixed64:function(t,e){this.writeMessage(t,mo,e)},writePackedSFixed64:function(t,e){this.writeMessage(t,yo,e)},writeBytesField:function(t,e){this.writeTag(t,ao.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ao.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ao.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ao.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ao.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ao.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ao.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ao.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ao.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ao.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};var wo=3;function ko(t,e,r){1===t&&r.readMessage(Ao,e)}function Ao(t,e,r){if(3===t){var n=r.readMessage(Mo,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new ci({width:o+2*wo,height:s+2*wo},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Mo(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}var To=wo,So=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,g([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1)};So.prototype.send=function(t,e,r,n){var i=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[i]=r);var a=[];this.target.postMessage({targetMapId:n,sourceMapId:this.mapId,type:t,id:String(i),data:gr(e,a)},a)},So.prototype.receive=function(t){var e,r=this,n=t.data,i=n.id;if(!n.targetMapId||this.mapId===n.targetMapId){var a=function(t,e){var n=[];r.target.postMessage({sourceMapId:r.mapId,type:\"<response>\",id:String(i),error:t?gr(t):null,data:gr(e,n)},n)};if(\"<response>\"===n.type)e=this.callbacks[n.id],delete this.callbacks[n.id],e&&n.error?e(vr(n.error)):e&&e(null,vr(n.data));else if(void 0!==n.id&&this.parent[n.type])this.parent[n.type](n.sourceMapId,vr(n.data),a);else if(void 0!==n.id&&this.parent.getWorkerSource){var o=n.type.split(\".\");this.parent.getWorkerSource(n.sourceMapId,o[0],o[1])[o[2]](vr(n.data),a)}else this.parent[n.type](vr(n.data))}},So.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1)};var Co=n(i(function(t,e){!function(t){function e(t,e,n){var i=r(256*t,256*(e=Math.pow(2,n)-e-1),n),a=r(256*(t+1),256*(e+1),n);return i[0]+\",\"+i[1]+\",\"+a[0]+\",\"+a[1]}function r(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return[t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}t.getURL=function(t,r,n,i,a,o){return o=o||{},t+\"?\"+[\"bbox=\"+e(n,i,a),\"format=\"+(o.format||\"image/png\"),\"service=\"+(o.service||\"WMS\"),\"version=\"+(o.version||\"1.1.1\"),\"request=\"+(o.request||\"GetMap\"),\"srs=\"+(o.srs||\"EPSG:3857\"),\"width=\"+(o.width||256),\"height=\"+(o.height||256),\"layers=\"+r].join(\"&\")},t.getTileBBox=e,t.getMercCoords=r,Object.defineProperty(t,\"__esModule\",{value:!0})}(e)})),Eo=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Oo(0,t,e,r)};Eo.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Eo.prototype.url=function(t,e){var r=Co.getTileBBox(this.x,this.y,this.z),n=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<<a-1)?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(this.z)).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",n).replace(\"{bbox-epsg-3857}\",r)};var Lo=function(t,e){this.wrap=t,this.canonical=e,this.key=Oo(t,e.z,e.x,e.y)},zo=function(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Eo(r,+n,+i),this.key=Oo(e,t,n,i)};function Oo(t,e,r,n){(t*=2)<0&&(t=-1*t-1);var i=1<<e;return 32*(i*i*t+i*n+r)+e}zo.prototype.equals=function(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)},zo.prototype.scaledTo=function(t){var e=this.canonical.z-t;return t>this.canonical.z?new zo(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new zo(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},zo.prototype.isChildOf=function(t){var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e},zo.prototype.children=function(t){if(this.overscaledZ>=t)return[new zo(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new zo(e,this.wrap,e,r,n),new zo(e,this.wrap,e,r+1,n),new zo(e,this.wrap,e,r,n+1),new zo(e,this.wrap,e,r+1,n+1)]},zo.prototype.isLessThan=function(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))},zo.prototype.wrapped=function(){return new zo(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)},zo.prototype.unwrapTo=function(t){return new zo(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)},zo.prototype.overscaleFactor=function(){return Math.pow(2,this.overscaledZ-this.canonical.z)},zo.prototype.toUnwrapped=function(){return new Lo(this.wrap,this.canonical)},zo.prototype.toString=function(){return this.overscaledZ+\"/\"+this.canonical.x+\"/\"+this.canonical.y},zo.prototype.toCoordinate=function(){return new s(this.canonical.x+Math.pow(2,this.wrap),this.canonical.y,this.canonical.z)},pr(\"CanonicalTileID\",Eo),pr(\"OverscaledTileID\",zo,{omit:[\"posMatrix\"]});var Io=function(t,e,r){if(t<=0)throw new RangeError(\"Level must have positive dimension\");this.dim=t,this.border=e,this.stride=this.dim+2*this.border,this.data=r||new Int32Array((this.dim+2*this.border)*(this.dim+2*this.border))};Io.prototype.set=function(t,e,r){this.data[this._idx(t,e)]=r+65536},Io.prototype.get=function(t,e){return this.data[this._idx(t,e)]-65536},Io.prototype._idx=function(t,e){if(t<-this.border||t>=this.dim+this.border||e<-this.border||e>=this.dim+this.border)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+this.border)*this.stride+(t+this.border)},pr(\"Level\",Io);var Do=function(t,e,r){this.uid=t,this.scale=e||1,this.level=r||new Io(256,512),this.loaded=!!r};Do.prototype.loadFromImage=function(t,e){if(t.height!==t.width)throw new RangeError(\"DEM tiles must be square\");if(e&&\"mapbox\"!==e&&\"terrarium\"!==e)return _('\"'+e+'\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".');var r=this.level=new Io(t.width,t.width/2),n=t.data;this._unpackData(r,n,e||\"mapbox\");for(var i=0;i<r.dim;i++)r.set(-1,i,r.get(0,i)),r.set(r.dim,i,r.get(r.dim-1,i)),r.set(i,-1,r.get(i,0)),r.set(i,r.dim,r.get(i,r.dim-1));r.set(-1,-1,r.get(0,0)),r.set(r.dim,-1,r.get(r.dim-1,0)),r.set(-1,r.dim,r.get(0,r.dim-1)),r.set(r.dim,r.dim,r.get(r.dim-1,r.dim-1)),this.loaded=!0},Do.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},Do.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Do.prototype._unpackData=function(t,e,r){for(var n={mapbox:this._unpackMapbox,terrarium:this._unpackTerrarium}[r],i=0;i<t.dim;i++)for(var a=0;a<t.dim;a++){var o=4*(i*t.dim+a);t.set(a,i,this.scale*n(e[o],e[o+1],e[o+2]))}},Do.prototype.getPixels=function(){return new ui({width:this.level.dim+2*this.level.border,height:this.level.dim+2*this.level.border},new Uint8Array(this.level.data.buffer))},Do.prototype.backfillBorder=function(t,e,r){var n=this.level,i=t.level;if(n.dim!==i.dim)throw new Error(\"level mismatch (dem dimension)\");var a=e*n.dim,o=e*n.dim+n.dim,s=r*n.dim,l=r*n.dim+n.dim;switch(e){case-1:a=o-1;break;case 1:o=a+1}switch(r){case-1:s=l-1;break;case 1:l=s+1}for(var c=h(a,-n.border,n.dim+n.border),u=h(o,-n.border,n.dim+n.border),f=h(s,-n.border,n.dim+n.border),p=h(l,-n.border,n.dim+n.border),d=-e*n.dim,g=-r*n.dim,v=f;v<p;v++)for(var m=c;m<u;m++)n.set(m,v,i.get(m+d,v+g))},pr(\"DEMData\",Do);var Po=function(t){this._stringToNumber={},this._numberToString=[];for(var e=0;e<t.length;e++){var r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r}};Po.prototype.encode=function(t){return this._stringToNumber[t]},Po.prototype.decode=function(t){return this._numberToString[t]};var Ro=function(t,e,r,n){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,null!=t.id&&(this.id=t.id)},Fo={geometry:{configurable:!0}};Fo.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},Fo.geometry.set=function(t){this._geometry=t},Ro.prototype.toJSON=function(){var t={geometry:this.geometry};for(var e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t},Object.defineProperties(Ro.prototype,Fo);var Bo=function(t,e,r){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=e||new lr(Pn,16,0),this.featureIndexArray=r||new An};function No(t,e){return e-t}Bo.prototype.insert=function(t,e,r,n,i){var a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);for(var o=0;o<e.length;o++){for(var s=e[o],l=[1/0,1/0,-1/0,-1/0],c=0;c<s.length;c++){var u=s[c];l[0]=Math.min(l[0],u.x),l[1]=Math.min(l[1],u.y),l[2]=Math.max(l[2],u.x),l[3]=Math.max(l[3],u.y)}l[0]<Pn&&l[1]<Pn&&l[2]>=0&&l[3]>=0&&this.grid.insert(a,l[0],l[1],l[2],l[3])}},Bo.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new ga.VectorTile(new io(this.rawTileData)).layers,this.sourceLayerCoder=new Po(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},Bo.prototype.query=function(t,e){var r=this;this.loadVTLayers();for(var n=t.params||{},i=Pn/t.tileSize/t.scale,a=Re(n.filter),o=t.queryGeometry,s=t.queryPadding*i,l=1/0,c=1/0,u=-1/0,f=-1/0,h=0;h<o.length;h++)for(var p=o[h],d=0;d<p.length;d++){var g=p[d];l=Math.min(l,g.x),c=Math.min(c,g.y),u=Math.max(u,g.x),f=Math.max(f,g.y)}var v=this.grid.query(l-s,c-s,u+s,f+s);v.sort(No);for(var m,y={},x=function(s){var l=v[s];if(l!==m){m=l;var c=r.featureIndexArray.get(l),u=null;r.loadMatchingFeature(y,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,a,n.layers,e,function(e,n){return u||(u=Fn(e)),n.queryIntersectsFeature(o,e,u,r.z,t.transform,i,t.posMatrix)})}},b=0;b<v.length;b++)x(b);return y},Bo.prototype.loadMatchingFeature=function(t,e,r,n,i,a,o,s){var l=this.bucketLayerIDs[e];if(!a||function(t,e){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return!0;return!1}(a,l)){var c=this.sourceLayerCoder.decode(r),u=this.vtLayers[c].feature(n);if(i(new Lr(this.tileID.overscaledZ),u))for(var f=0;f<l.length;f++){var h=l[f];if(!(a&&a.indexOf(h)<0)){var p=o[h];if(p&&(!s||s(u,p))){var d=new Ro(u,this.z,this.x,this.y);d.layer=p.serialize();var g=t[h];void 0===g&&(g=t[h]=[]),g.push({featureIndex:n,feature:d})}}}}},Bo.prototype.lookupSymbolFeatures=function(t,e,r,n,i,a){var o={};this.loadVTLayers();for(var s=Re(n),l=0,c=t;l<c.length;l+=1){var u=c[l];this.loadMatchingFeature(o,e,r,u,s,i,a)}return o},Bo.prototype.hasLayer=function(t){for(var e=0,r=this.bucketLayerIDs;e<r.length;e+=1)for(var n=0,i=r[e];n<i.length;n+=1)if(t===i[n])return!0;return!1},pr(\"FeatureIndex\",Bo,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});var jo={horizontal:1,vertical:2,horizontalOnly:3},Vo={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Uo={};function qo(t,e,r,n){var i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function Ho(t,e){var r=0;return 10===t&&(r-=1e4),40!==t&&65288!==t||(r+=50),41!==e&&65289!==e||(r+=50),r}function Go(t,e,r,n,i,a){for(var o=null,s=qo(e,r,i,a),l=0,c=n;l<c.length;l+=1){var u=c[l],f=qo(e-u.x,r,i,a)+u.badness;f<=s&&(o=u,s=f)}return{index:t,x:e,priorBreak:o,badness:s}}function Wo(t,e,r,n){if(!r)return[];if(!t)return[];for(var i,a=[],o=function(t,e,r,n){for(var i=0,a=0;a<t.length;a++){var o=n[t.charCodeAt(a)];o&&(i+=o.metrics.advance+e)}return i/Math.max(1,Math.ceil(i/r))}(t,e,r,n),s=0,l=0;l<t.length;l++){var c=t.charCodeAt(l),u=n[c];u&&!Vo[c]&&(s+=u.metrics.advance+e),l<t.length-1&&(Uo[c]||!((i=c)<11904)&&(yr[\"Bopomofo Extended\"](i)||yr.Bopomofo(i)||yr[\"CJK Compatibility Forms\"](i)||yr[\"CJK Compatibility Ideographs\"](i)||yr[\"CJK Compatibility\"](i)||yr[\"CJK Radicals Supplement\"](i)||yr[\"CJK Strokes\"](i)||yr[\"CJK Symbols and Punctuation\"](i)||yr[\"CJK Unified Ideographs Extension A\"](i)||yr[\"CJK Unified Ideographs\"](i)||yr[\"Enclosed CJK Letters and Months\"](i)||yr[\"Halfwidth and Fullwidth Forms\"](i)||yr.Hiragana(i)||yr[\"Ideographic Description Characters\"](i)||yr[\"Kangxi Radicals\"](i)||yr[\"Katakana Phonetic Extensions\"](i)||yr.Katakana(i)||yr[\"Vertical Forms\"](i)||yr[\"Yi Radicals\"](i)||yr[\"Yi Syllables\"](i)))&&a.push(Go(l+1,s,o,a,Ho(c,t.charCodeAt(l+1)),!1))}return function t(e){return e?t(e.priorBreak).concat(e.index):[]}(Go(t.length,s,o,a,0,!0))}function Yo(t){var e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0}return{horizontalAlign:e,verticalAlign:r}}function Xo(t,e,r,n,i){if(i){var a=e[t[n].glyph];if(a)for(var o=a.metrics.advance,s=(t[n].x+o)*i,l=r;l<=n;l++)t[l].x-=s}}Uo[10]=!0,Uo[32]=!0,Uo[38]=!0,Uo[40]=!0,Uo[41]=!0,Uo[43]=!0,Uo[45]=!0,Uo[47]=!0,Uo[173]=!0,Uo[183]=!0,Uo[8203]=!0,Uo[8208]=!0,Uo[8211]=!0,Uo[8231]=!0,e.commonjsGlobal=r,e.unwrapExports=n,e.createCommonjsModule=i,e.default=self,e.default$1=l,e.getJSON=function(t,e){var r=T(t);return r.setRequestHeader(\"Accept\",\"application/json\"),r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var n;try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n)}else 401===r.status&&t.url.match(/mapbox.com/)?e(new M(r.statusText+\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens\",r.status,t.url)):e(new M(r.statusText,r.status,t.url))},r.send(),r},e.getImage=function(t,e){return S(t,function(t,r){if(t)e(t);else if(r){var n=new self.Image,i=self.URL||self.webkitURL;n.onload=function(){e(null,n),i.revokeObjectURL(n.src)};var a=new self.Blob([new Uint8Array(r.data)],{type:\"image/png\"});n.cacheControl=r.cacheControl,n.expires=r.expires,n.src=r.data.byteLength?i.createObjectURL(a):\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\"}})},e.ResourceType=A,e.RGBAImage=ui,e.default$2=Ka,e.ImagePosition=Qa,e.getArrayBuffer=S,e.default$3=function(t){return new io(t).readFields(ko,[])},e.default$4=yr,e.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);var n=t.length,i=new Array(t.length),a=null;t.forEach(function(t,o){e(t,function(t,e){t&&(a=t),i[o]=e,0==--n&&r(a,i)})})},e.AlphaImage=ci,e.default$5=I,e.endsWith=v,e.extend=p,e.sphericalToCartesian=function(t){var e=t[0],r=t[1],n=t[2];return r+=90,r*=Math.PI/180,n*=Math.PI/180,{x:e*Math.cos(r)*Math.sin(n),y:e*Math.sin(r)*Math.sin(n),z:e*Math.cos(n)}},e.Evented=O,e.validateStyle=nr,e.validateLight=ir,e.emitValidationErrors=sr,e.default$6=tt,e.number=wt,e.Properties=qr,e.Transitionable=Ir,e.Transitioning=Pr,e.PossiblyEvaluated=Br,e.DataConstantProperty=Nr,e.warnOnce=_,e.uniqueId=function(){return d++},e.default$7=So,e.pick=function(t,e){for(var r={},n=0;n<e.length;n++){var i=e[n];i in t&&(r[i]=t[i])}return r},e.wrap=function(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i},e.clamp=h,e.Event=L,e.ErrorEvent=z,e.OverscaledTileID=zo,e.default$8=Pn,e.createLayout=Xr,e.getCoordinatesCenter=function(t){for(var e=1/0,r=1/0,n=-1/0,i=-1/0,a=0;a<t.length;a++)e=Math.min(e,t[a].column),r=Math.min(r,t[a].row),n=Math.max(n,t[a].column),i=Math.max(i,t[a].row);var o=n-e,l=i-r,c=Math.max(o,l),u=Math.max(0,Math.floor(-Math.log(c)/Math.LN2));return new s((e+n)/2,(r+i)/2,0).zoomTo(u)},e.CanonicalTileID=Eo,e.RasterBoundsArray=Jr,e.getVideo=function(t,e){var r,n,i=self.document.createElement(\"video\");i.onloadstart=function(){e(null,i)};for(var a=0;a<t.length;a++){var o=self.document.createElement(\"source\");r=t[a],n=void 0,(n=self.document.createElement(\"a\")).href=r,(n.protocol!==self.document.location.protocol||n.host!==self.document.location.host)&&(i.crossOrigin=\"Anonymous\"),o.src=t[a],i.appendChild(o)}return i},e.default$9=D,e.bindAll=g,e.default$10=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n<e.length;n++)if(!t(e[n],r[n]))return!1;return!0}if(\"object\"==typeof e&&null!==e&&null!==r){if(\"object\"!=typeof r)return!1;if(Object.keys(e).length!==Object.keys(r).length)return!1;for(var i in e)if(!t(e[i],r[i]))return!1;return!0}return e===r},e.parseCacheControl=function(t){var e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"}),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e},e.default$11=Bo,e.default$12=Ro,e.default$13=Re,e.default$14=Ha,e.CollisionBoxArray=vn,e.default$15=Tn,e.TriangleIndexArray=fn,e.default$16=Lr,e.default$17=s,e.keysDifference=function(t,e){var r=[];for(var n in t)n in e||r.push(n);return r},e.default$18=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],e.mat4=ri,e.vec4=ei,e.getSizeData=Fa,e.evaluateSizeForFeature=function(t,e,r){var n=e;return\"source\"===t.functionType?r.lowerSize/10:\"composite\"===t.functionType?wt(r.lowerSize/10,r.upperSize/10,n.uSizeT):n.uSize},e.evaluateSizeForZoom=function(t,e,r){if(\"constant\"===t.functionType)return{uSizeT:0,uSize:t.layoutSize};if(\"source\"===t.functionType)return{uSizeT:0,uSize:0};if(\"camera\"===t.functionType){var n=t.propertyValue,i=t.zoomRange,a=t.sizeRange,o=h(Se(n,r.specification).interpolationFactor(e,i.min,i.max),0,1);return{uSizeT:0,uSize:a.min+o*(a.max-a.min)}}var s=t.propertyValue,l=t.zoomRange;return{uSizeT:h(Se(s,r.specification).interpolationFactor(e,l.min,l.max),0,1),uSize:0}},e.addDynamicAttributes=Va,e.default$19=Wa,e.WritingMode=jo,e.multiPolygonIntersectsBufferedPoint=jn,e.multiPolygonIntersectsMultiPolygon=Vn,e.multiPolygonIntersectsBufferedMultiLine=Un,e.polygonIntersectsPolygon=function(t,e){for(var r=0;r<t.length;r++)if(Zn(e,t[r]))return!0;for(var n=0;n<e.length;n++)if(Zn(t,e[n]))return!0;return!!Hn(t,e)},e.distToSegmentSquared=Yn,e.default$20=ti,e.default$21=Hr,e.default$22=function(t){return new Ja[t.type](t)},e.clone=x,e.filterObject=y,e.mapObject=m,e.registerForPluginAvailability=function(t){return Tr?t({pluginURL:Tr,completionCallback:Ar}):Cr.once(\"pluginAvailable\",t),t},e.evented=Cr,e.default$23=mr,e.default$24=On,e.PosArray=$r,e.UnwrappedTileID=Lo,e.ease=f,e.bezier=u,e.setRTLTextPlugin=function(t,e){if(Mr)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Mr=!0,Tr=t,Ar=function(t){t?(Mr=!1,Tr=null,e&&e(t)):Sr=!0},Cr.fire(new L(\"pluginAvailable\",{pluginURL:Tr,completionCallback:Ar}))},e.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},e.default$25=Ra,e.register=pr,e.GLYPH_PBF_BORDER=To,e.shapeText=function(t,e,r,n,i,a,o,s,l,c){var u=t.trim();c===jo.vertical&&(u=function(t){for(var e=\"\",r=0;r<t.length;r++){var n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;n&&wr(n)&&!Pa[t[r+1]]||i&&wr(i)&&!Pa[t[r-1]]||!Pa[t[r]]?e+=t[r]:e+=Pa[t[r]]}return e}(u));var f=[],h={positionedGlyphs:f,text:u,top:s[1],bottom:s[1],left:s[0],right:s[0],writingMode:c},p=Er.processBidirectionalText;return function(t,e,r,n,i,a,o,s,l){for(var c=0,u=-17,f=0,h=t.positionedGlyphs,p=\"right\"===a?1:\"left\"===a?0:.5,d=0,g=r;d<g.length;d+=1){var v=g[d];if((v=v.trim()).length){for(var m=h.length,y=0;y<v.length;y++){var x=v.charCodeAt(y),b=e[x];b&&(_r(x)&&o!==jo.horizontal?(h.push({glyph:x,x:c,y:0,vertical:!0}),c+=l+s):(h.push({glyph:x,x:c,y:u,vertical:!1}),c+=b.metrics.advance+s))}if(h.length!==m){var _=c-s;f=Math.max(_,f),Xo(h,e,m,h.length-1,p)}c=0,u+=n}else u+=n}var w=Yo(i),k=w.horizontalAlign,A=w.verticalAlign;!function(t,e,r,n,i,a,o){for(var s=(e-r)*i,l=(-n*o+.5)*a,c=0;c<t.length;c++)t[c].x+=s,t[c].y+=l}(h,p,k,A,f,n,r.length);var M=r.length*n;t.top+=-A*M,t.bottom=t.top+M,t.left+=-k*f,t.right=t.left+f}(h,e,p?p(u,Wo(u,o,r,e)):function(t,e){for(var r=[],n=0,i=0,a=e;i<a.length;i+=1){var o=a[i];r.push(t.substring(n,o)),n=o}return n<t.length&&r.push(t.substring(n,t.length)),r}(u,Wo(u,o,r,e)),n,i,a,c,o,l),!!f.length&&h},e.shapeIcon=function(t,e,r){var n=Yo(r),i=n.horizontalAlign,a=n.verticalAlign,o=e[0],s=e[1],l=o-t.displaySize[0]*i,c=l+t.displaySize[0],u=s-t.displaySize[1]*a;return{image:t,top:u,bottom:u+t.displaySize[1],left:l,right:c}},e.allowsVerticalWritingMode=xr,e.allowsLetterSpacing=function(t){for(var e=0,r=t;e<r.length;e+=1)if(!br(r[e].charCodeAt(0)))return!1;return!0},e.default$26=Yi,e.default$27=Po,e.default$28=eo,e.default$29=ga,e.default$30=io,e.default$31=Do,e.__moduleExports=ga,e.default$32=l,e.__moduleExports$1=io,e.plugin=Er}),i(0,function(t){function e(t){var r=typeof t;if(\"number\"===r||\"boolean\"===r||\"string\"===r||null==t)return JSON.stringify(t);if(Array.isArray(t)){for(var n=\"[\",i=0,a=t;i<a.length;i+=1)n+=e(a[i])+\",\";return n+\"]\"}for(var o=Object.keys(t).sort(),s=\"{\",l=0;l<o.length;l++)s+=JSON.stringify(o[l])+\":\"+e(t[o[l]])+\",\";return s+\"}\"}function r(r){for(var n=\"\",i=0,a=t.default$18;i<a.length;i+=1)n+=\"/\"+e(r[a[i]]);return n}var n=function(t){t&&this.replace(t)};function i(t,e,r,n,i){if(void 0===e.segment)return!0;for(var a=e,o=e.segment+1,s=0;s>-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;s<r/2;){var u=t[o-1],f=t[o],h=t[o+1];if(!h)return!1;var p=u.angleTo(f)-f.angleTo(h);for(p=Math.abs((p+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:s,angleDelta:p}),c+=p;s-l[0].distance>n;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function a(e,r,n,a,o,s,l,c,u){var f=a?.6*s*l:0,h=Math.max(a?a.right-a.left:0,o?o.right-o.left:0),p=0===e[0].x||e[0].x===u||0===e[0].y||e[0].y===u;return r-h*l<r/4&&(r=h*l+r/4),function e(r,n,a,o,s,l,c,u,f){for(var h=l/2,p=0,d=0;d<r.length-1;d++)p+=r[d].dist(r[d+1]);for(var g=0,v=n-a,m=[],y=0;y<r.length-1;y++){for(var x=r[y],b=r[y+1],_=x.dist(b),w=b.angleTo(x);v+a<g+_;){var k=((v+=a)-g)/_,A=t.number(x.x,b.x,k),M=t.number(x.y,b.y,k);if(A>=0&&A<f&&M>=0&&M<f&&v-h>=0&&v+h<=p){var T=new t.default$25(A,M,w,y);T._round(),o&&!i(r,T,l,o,s)||m.push(T)}}g+=_}return u||m.length||c||(m=e(r,g/2,a,o,s,l,c,!0,f)),m}(e,p?r/2*c%r:(h/2+2*s)*l*c%r,r,f,n,h*l,p,!1,u)}n.prototype.replace=function(t){this._layerConfigs={},this._layers={},this.update(t,[])},n.prototype.update=function(e,n){for(var i=this,a=0,o=e;a<o.length;a+=1){var s=o[a];i._layerConfigs[s.id]=s;var l=i._layers[s.id]=t.default$22(s);l._featureFilter=t.default$13(l.filter)}for(var c=0,u=n;c<u.length;c+=1){var f=u[c];delete i._layerConfigs[f],delete i._layers[f]}this.familiesBySource={};for(var h=0,p=function(t){for(var e={},n=0;n<t.length;n++){var i=r(t[n]),a=e[i];a||(a=e[i]=[]),a.push(t[n])}var o=[];for(var s in e)o.push(e[s]);return o}(t.values(this._layerConfigs));h<p.length;h+=1){var d=p[h].map(function(t){return i._layers[t.id]}),g=d[0];if(\"none\"!==g.visibility){var v=g.source||\"\",m=i.familiesBySource[v];m||(m=i.familiesBySource[v]={});var y=g.sourceLayer||\"_geojsonTileLayer\",x=m[y];x||(x=m[y]=[]),x.push(d)}}};var o=function(){this.opacity=0,this.targetOpacity=0,this.time=0};o.prototype.clone=function(){var t=new o;return t.opacity=this.opacity,t.targetOpacity=this.targetOpacity,t.time=this.time,t},t.register(\"OpacityState\",o);var s=function(t,e,r,n,i,a,o,s,l,c,u){var f=o.top*s-l,h=o.bottom*s+l,p=o.left*s-l,d=o.right*s+l;if(this.boxStartIndex=t.length,c){var g=h-f,v=d-p;g>0&&(g=Math.max(10*s,g),this._addLineCollisionCircles(t,e,r,r.segment,v,g,n,i,a,u))}else t.emplaceBack(r.x,r.y,p,f,d,h,n,i,a,0,0);this.boxEndIndex=t.length};s.prototype._addLineCollisionCircles=function(t,e,r,n,i,a,o,s,l,c){var u=a/2,f=Math.floor(i/u),h=1+.4*Math.log(c)/Math.LN2,p=Math.floor(f*h/2),d=-a/2,g=r,v=n+1,m=d,y=-i/2,x=y-i/4;do{if(--v<0){if(m>y)return;v=0;break}m-=e[v].dist(g),g=e[v]}while(m>x);for(var b=e[v].dist(e[v+1]),_=-p;_<f+p;_++){var w=_*u,k=y+w;if(w<0&&(k+=w),w>i&&(k+=w-i),!(k<m)){for(;m+b<k;){if(m+=b,++v+1>=e.length)return;b=e[v].dist(e[v+1])}var A=k-m,M=e[v],T=e[v+1].sub(M)._unit()._mult(A)._add(M)._round(),S=Math.abs(k-d)<u?0:.8*(k-d);t.emplaceBack(T.x,T.y,-a/2,-a/2,a/2,a/2,o,s,l,a/2,S)}}};var l=u,c=u;function u(t,e){if(!(this instanceof u))return new u(t,e);if(this.data=t||[],this.length=this.data.length,this.compare=e||f,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)}function f(t,e){return t<e?-1:t>e?1:0}function h(e,r,n){void 0===r&&(r=1),void 0===n&&(n=!1);for(var i=1/0,a=1/0,o=-1/0,s=-1/0,c=e[0],u=0;u<c.length;u++){var f=c[u];(!u||f.x<i)&&(i=f.x),(!u||f.y<a)&&(a=f.y),(!u||f.x>o)&&(o=f.x),(!u||f.y>s)&&(s=f.y)}var h=o-i,g=s-a,v=Math.min(h,g),m=v/2,y=new l(null,p);if(0===v)return new t.default$1(i,a);for(var x=i;x<o;x+=v)for(var b=a;b<s;b+=v)y.push(new d(x+m,b+m,m,e));for(var _=function(t){for(var e=0,r=0,n=0,i=t[0],a=0,o=i.length,s=o-1;a<o;s=a++){var l=i[a],c=i[s],u=l.x*c.y-c.x*l.y;r+=(l.x+c.x)*u,n+=(l.y+c.y)*u,e+=3*u}return new d(r/e,n/e,0,t)}(e),w=y.length;y.length;){var k=y.pop();(k.d>_.d||!_.d)&&(_=k,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*k.d)/1e4,w)),k.max-_.d<=r||(m=k.h/2,y.push(new d(k.p.x-m,k.p.y-m,m,e)),y.push(new d(k.p.x+m,k.p.y-m,m,e)),y.push(new d(k.p.x-m,k.p.y+m,m,e)),y.push(new d(k.p.x+m,k.p.y+m,m,e)),w+=4)}return n&&(console.log(\"num probes: \"+w),console.log(\"best distance: \"+_.d)),_.p}function p(t,e){return e.max-t.max}function d(e,r,n,i){this.p=new t.default$1(e,r),this.h=n,this.d=function(e,r){for(var n=!1,i=1/0,a=0;a<r.length;a++)for(var o=r[a],s=0,l=o.length,c=l-1;s<l;c=s++){var u=o[s],f=o[c];u.y>e.y!=f.y>e.y&&e.x<(f.x-u.x)*(e.y-u.y)/(f.y-u.y)+u.x&&(n=!n),i=Math.min(i,t.distToSegmentSquared(e,u,f))}return(n?1:-1)*Math.sqrt(i)}(this.p,i),this.max=this.d+this.h*Math.SQRT2}function g(e,r,n,i,a,o){e.createArrays(),e.symbolInstances=[];var s=512*e.overscaling;e.tilePixelRatio=t.default$8/s,e.compareText={},e.iconsNeedLinear=!1;var l=e.layers[0].layout,c=e.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===e.textSizeData.functionType){var f=e.textSizeData.zoomRange,h=f.min,p=f.max;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new t.default$16(h)),c[\"text-size\"].possiblyEvaluate(new t.default$16(p))]}if(\"composite\"===e.iconSizeData.functionType){var d=e.iconSizeData.zoomRange,g=d.min,m=d.max;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new t.default$16(g)),c[\"icon-size\"].possiblyEvaluate(new t.default$16(m))]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new t.default$16(e.zoom+1)),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new t.default$16(e.zoom+1)),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new t.default$16(18));for(var y=24*l.get(\"text-line-height\"),x=\"map\"===l.get(\"text-rotation-alignment\")&&\"line\"===l.get(\"symbol-placement\"),b=l.get(\"text-keep-upright\"),_=0,w=e.features;_<w.length;_+=1){var k=w[_],A=l.get(\"text-font\").evaluate(k).join(\",\"),M=r[A]||{},T=n[A]||{},S={},C=k.text;if(C){var E=l.get(\"text-offset\").evaluate(k).map(function(t){return 24*t}),L=24*l.get(\"text-letter-spacing\").evaluate(k),z=t.allowsLetterSpacing(C)?L:0,O=l.get(\"text-anchor\").evaluate(k),I=l.get(\"text-justify\").evaluate(k),D=\"line\"!==l.get(\"symbol-placement\")?24*l.get(\"text-max-width\").evaluate(k):0;S.horizontal=t.shapeText(C,M,D,y,O,I,z,E,24,t.WritingMode.horizontal),t.allowsVerticalWritingMode(C)&&x&&b&&(S.vertical=t.shapeText(C,M,D,y,O,I,z,E,24,t.WritingMode.vertical))}var P=void 0;if(k.icon){var R=i[k.icon];R&&(P=t.shapeIcon(a[k.icon],l.get(\"icon-offset\").evaluate(k),l.get(\"icon-anchor\").evaluate(k)),void 0===e.sdfIcons?e.sdfIcons=R.sdf:e.sdfIcons!==R.sdf&&t.warnOnce(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),R.pixelRatio!==e.pixelRatio?e.iconsNeedLinear=!0:0!==l.get(\"icon-rotate\").constantOr(1)&&(e.iconsNeedLinear=!0))}(S.horizontal||P)&&v(e,k,S,P,T,u)}o&&e.generateCollisionDebugBuffers()}function v(e,r,n,i,l,c){var u=c.layoutTextSize.evaluate(r),f=c.layoutIconSize.evaluate(r),p=c.textMaxSize.evaluate(r);void 0===p&&(p=u);var d=e.layers[0].layout,g=d.get(\"text-offset\").evaluate(r),v=d.get(\"icon-offset\").evaluate(r),x=u/24,b=e.tilePixelRatio*x,_=e.tilePixelRatio*p/24,w=e.tilePixelRatio*f,k=e.tilePixelRatio*d.get(\"symbol-spacing\"),A=d.get(\"text-padding\")*e.tilePixelRatio,M=d.get(\"icon-padding\")*e.tilePixelRatio,T=d.get(\"text-max-angle\")/180*Math.PI,S=\"map\"===d.get(\"text-rotation-alignment\")&&\"line\"===d.get(\"symbol-placement\"),C=\"map\"===d.get(\"icon-rotation-alignment\")&&\"line\"===d.get(\"symbol-placement\"),E=k/2,L=function(a,u){u.x<0||u.x>=t.default$8||u.y<0||u.y>=t.default$8||e.symbolInstances.push(function(e,r,n,i,a,l,c,u,f,h,p,d,g,v,y,x,b,_,w,k,A){var M,T,S=e.addToLineVertexArray(r,n),C=0,E=0,L=0,z=i.horizontal?i.horizontal.text:\"\",O=[];i.horizontal&&(M=new s(c,n,r,u,f,h,i.horizontal,p,d,g,e.overscaling),E+=m(e,r,i.horizontal,l,g,w,v,S,i.vertical?t.WritingMode.horizontal:t.WritingMode.horizontalOnly,O,k,A),i.vertical&&(L+=m(e,r,i.vertical,l,g,w,v,S,t.WritingMode.vertical,O,k,A)));var I=M?M.boxStartIndex:e.collisionBoxArray.length,D=M?M.boxEndIndex:e.collisionBoxArray.length;if(a){var P=function(e,r,n,i,a,o){var s,l,c,u,f=r.image,h=n.layout,p=r.top-1/f.pixelRatio,d=r.left-1/f.pixelRatio,g=r.bottom+1/f.pixelRatio,v=r.right+1/f.pixelRatio;if(\"none\"!==h.get(\"icon-text-fit\")&&a){var m=v-d,y=g-p,x=h.get(\"text-size\").evaluate(o)/24,b=a.left*x,_=a.right*x,w=a.top*x,k=_-b,A=a.bottom*x-w,M=h.get(\"icon-text-fit-padding\")[0],T=h.get(\"icon-text-fit-padding\")[1],S=h.get(\"icon-text-fit-padding\")[2],C=h.get(\"icon-text-fit-padding\")[3],E=\"width\"===h.get(\"icon-text-fit\")?.5*(A-y):0,L=\"height\"===h.get(\"icon-text-fit\")?.5*(k-m):0,z=\"width\"===h.get(\"icon-text-fit\")||\"both\"===h.get(\"icon-text-fit\")?k:m,O=\"height\"===h.get(\"icon-text-fit\")||\"both\"===h.get(\"icon-text-fit\")?A:y;s=new t.default$1(b+L-C,w+E-M),l=new t.default$1(b+L+T+z,w+E-M),c=new t.default$1(b+L+T+z,w+E+S+O),u=new t.default$1(b+L-C,w+E+S+O)}else s=new t.default$1(d,p),l=new t.default$1(v,p),c=new t.default$1(v,g),u=new t.default$1(d,g);var I=n.layout.get(\"icon-rotate\").evaluate(o)*Math.PI/180;if(I){var D=Math.sin(I),P=Math.cos(I),R=[P,-D,D,P];s._matMult(R),l._matMult(R),u._matMult(R),c._matMult(R)}return[{tl:s,tr:l,bl:u,br:c,tex:f.paddedRect,writingMode:void 0,glyphOffset:[0,0]}]}(0,a,l,0,i.horizontal,w);T=new s(c,n,r,u,f,h,a,y,x,!1,e.overscaling),C=4*P.length;var R=e.iconSizeData,F=null;\"source\"===R.functionType?F=[10*l.layout.get(\"icon-size\").evaluate(w)]:\"composite\"===R.functionType&&(F=[10*A.compositeIconSizes[0].evaluate(w),10*A.compositeIconSizes[1].evaluate(w)]),e.addSymbols(e.icon,P,F,_,b,w,!1,r,S.lineStartIndex,S.lineLength)}var B=T?T.boxStartIndex:e.collisionBoxArray.length,N=T?T.boxEndIndex:e.collisionBoxArray.length;return e.glyphOffsetArray.length>=t.default$14.MAX_GLYPHS&&t.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),{key:z,textBoxStartIndex:I,textBoxEndIndex:D,iconBoxStartIndex:B,iconBoxEndIndex:N,textOffset:v,iconOffset:_,anchor:r,line:n,featureIndex:u,feature:w,numGlyphVertices:E,numVerticalGlyphVertices:L,numIconVertices:C,textOpacityState:new o,iconOpacityState:new o,isDuplicate:!1,placedTextSymbolIndices:O,crossTileID:0}}(e,u,a,n,i,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,b,A,S,g,w,M,C,v,r,l,c))};if(\"line\"===d.get(\"symbol-placement\"))for(var z=0,O=function(e,r,n,i,a){for(var o=[],s=0;s<e.length;s++)for(var l=e[s],c=void 0,u=0;u<l.length-1;u++){var f=l[u],h=l[u+1];f.x<0&&h.x<0||(f.x<0?f=new t.default$1(0,f.y+(h.y-f.y)*((0-f.x)/(h.x-f.x)))._round():h.x<0&&(h=new t.default$1(0,f.y+(h.y-f.y)*((0-f.x)/(h.x-f.x)))._round()),f.y<0&&h.y<0||(f.y<0?f=new t.default$1(f.x+(h.x-f.x)*((0-f.y)/(h.y-f.y)),0)._round():h.y<0&&(h=new t.default$1(f.x+(h.x-f.x)*((0-f.y)/(h.y-f.y)),0)._round()),f.x>=i&&h.x>=i||(f.x>=i?f=new t.default$1(i,f.y+(h.y-f.y)*((i-f.x)/(h.x-f.x)))._round():h.x>=i&&(h=new t.default$1(i,f.y+(h.y-f.y)*((i-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new t.default$1(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new t.default$1(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}(r.geometry,0,0,t.default$8,t.default$8);z<O.length;z+=1)for(var I=O[z],D=0,P=a(I,k,T,n.vertical||n.horizontal,i,24,_,e.overscaling,t.default$8);D<P.length;D+=1){var R=P[D],F=n.horizontal;F&&y(e,F.text,E,R)||L(I,R)}else if(\"Polygon\"===r.type)for(var B=0,N=t.default$26(r.geometry,0);B<N.length;B+=1){var j=N[B],V=h(j,16);L(j[0],new t.default$25(V.x,V.y,0))}else if(\"LineString\"===r.type)for(var U=0,q=r.geometry;U<q.length;U+=1){var H=q[U];L(H,new t.default$25(H[0].x,H[0].y,0))}else if(\"Point\"===r.type)for(var G=0,W=r.geometry;G<W.length;G+=1)for(var Y=0,X=W[G];Y<X.length;Y+=1){var Z=X[Y];L([Z],new t.default$25(Z.x,Z.y,0))}}function m(e,r,n,i,a,o,s,l,c,u,f,h){var p=function(e,r,n,i,a,o){for(var s=n.layout.get(\"text-rotate\").evaluate(a)*Math.PI/180,l=n.layout.get(\"text-offset\").evaluate(a).map(function(t){return 24*t}),c=r.positionedGlyphs,u=[],f=0;f<c.length;f++){var h=c[f],p=o[h.glyph];if(p){var d=p.rect;if(d){var g=t.GLYPH_PBF_BORDER+1,v=p.metrics.advance/2,m=i?[h.x+v,h.y]:[0,0],y=i?[0,0]:[h.x+v+l[0],h.y+l[1]],x=p.metrics.left-g-v+y[0],b=-p.metrics.top-g+y[1],_=x+d.w,w=b+d.h,k=new t.default$1(x,b),A=new t.default$1(_,b),M=new t.default$1(x,w),T=new t.default$1(_,w);if(i&&h.vertical){var S=new t.default$1(-v,v),C=-Math.PI/2,E=new t.default$1(5,0);k._rotateAround(C,S)._add(E),A._rotateAround(C,S)._add(E),M._rotateAround(C,S)._add(E),T._rotateAround(C,S)._add(E)}if(s){var L=Math.sin(s),z=Math.cos(s),O=[z,-L,L,z];k._matMult(O),A._matMult(O),M._matMult(O),T._matMult(O)}u.push({tl:k,tr:A,bl:M,br:T,tex:d,writingMode:r.writingMode,glyphOffset:m})}}}return u}(0,n,i,a,o,f),d=e.textSizeData,g=null;return\"source\"===d.functionType?g=[10*i.layout.get(\"text-size\").evaluate(o)]:\"composite\"===d.functionType&&(g=[10*h.compositeTextSizes[0].evaluate(o),10*h.compositeTextSizes[1].evaluate(o)]),e.addSymbols(e.text,p,g,s,a,o,c,r,l.lineStartIndex,l.lineLength),u.push(e.text.placedSymbolArray.length-1),4*p.length}function y(t,e,r,n){var i=t.compareText;if(e in i){for(var a=i[e],o=a.length-1;o>=0;o--)if(n.dist(a[o])<r)return!0}else i[e]=[];return i[e].push(n),!1}u.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},_down:function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t<n;){var a=1+(t<<1),o=a+1,s=e[a];if(o<this.length&&r(e[o],s)<0&&(a=o,s=e[o]),r(s,i)>=0)break;e[t]=s,t=a}e[t]=i}},l.default=c;var x=function(e){var r=new t.AlphaImage({width:0,height:0}),n={},i=new t.default$2(0,0,{autoResize:!0});for(var a in e){var o=e[a],s=n[a]={};for(var l in o){var c=o[+l];if(c&&0!==c.bitmap.width&&0!==c.bitmap.height){var u=i.packOne(c.bitmap.width+2,c.bitmap.height+2);r.resize({width:i.w,height:i.h}),t.AlphaImage.copy(c.bitmap,r,{x:0,y:0},{x:u.x+1,y:u.y+1},c.bitmap),s[l]={rect:u,metrics:c.metrics}}}}i.shrink(),r.resize({width:i.w,height:i.h}),this.image=r,this.positions=n};t.register(\"GlyphAtlas\",x);var b=function(e){this.tileID=new t.OverscaledTileID(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming};function _(e,r){for(var n=new t.default$16(r),i=0,a=e;i<a.length;i+=1)a[i].recalculate(n)}b.prototype.parse=function(e,r,n,i){var a=this;this.status=\"parsing\",this.data=e,this.collisionBoxArray=new t.CollisionBoxArray;var o=new t.default$27(Object.keys(e.layers).sort()),s=new t.default$11(this.tileID);s.bucketLayerIDs=[];var l,c,u,f={},h={featureIndex:s,iconDependencies:{},glyphDependencies:{}},p=r.familiesBySource[this.source];for(var d in p){var v=e.layers[d];if(v){1===v.version&&t.warnOnce('Vector tile source \"'+a.source+'\" layer \"'+d+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var m=o.encode(d),y=[],b=0;b<v.length;b++){var w=v.feature(b);y.push({feature:w,index:b,sourceLayerIndex:m})}for(var k=0,A=p[d];k<A.length;k+=1){var M=A[k],T=M[0];T.minzoom&&a.zoom<Math.floor(T.minzoom)||T.maxzoom&&a.zoom>=T.maxzoom||\"none\"!==T.visibility&&(_(M,a.zoom),(f[T.id]=T.createBucket({index:s.bucketLayerIDs.length,layers:M,zoom:a.zoom,pixelRatio:a.pixelRatio,overscaling:a.overscaling,collisionBoxArray:a.collisionBoxArray,sourceLayerIndex:m})).populate(y,h),s.bucketLayerIDs.push(M.map(function(t){return t.id})))}}}var S=t.mapObject(h.glyphDependencies,function(t){return Object.keys(t).map(Number)});Object.keys(S).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:S},function(t,e){l||(l=t,c=e,E.call(a))}):c={};var C=Object.keys(h.iconDependencies);function E(){if(l)return i(l);if(c&&u){var e=new x(c),r=new t.default$28(u);for(var n in f){var a=f[n];a instanceof t.default$14&&(_(a.layers,this.zoom),g(a,c,e.positions,u,r.positions,this.showCollisionBoxes))}this.status=\"done\",i(null,{buckets:t.values(f).filter(function(t){return!t.isEmpty()}),featureIndex:s,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,iconAtlasImage:r.image})}}C.length?n.send(\"getImages\",{icons:C},function(t,e){l||(l=t,u=e,E.call(a))}):u={},E.call(this)};var w=function(t){return!(!performance||!performance.getEntriesByName)&&performance.getEntriesByName(t)};function k(e,r){var n=t.getArrayBuffer(e.request,function(e,n){e?r(e):n&&r(null,{vectorTile:new t.default$29.VectorTile(new t.default$30(n.data)),rawData:n.data,cacheControl:n.cacheControl,expires:n.expires})});return function(){n.abort(),r()}}var A=function(t,e,r){this.actor=t,this.layerIndex=e,this.loadVectorData=r||k,this.loading={},this.loaded={}};A.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var a=this.loading[i]=new b(e);a.abort=this.loadVectorData(e,function(o,s){if(delete n.loading[i],o||!s)return r(o);var l=s.rawData,c={};s.expires&&(c.expires=s.expires),s.cacheControl&&(c.cacheControl=s.cacheControl);var u={};if(e.request&&e.request.collectResourceTiming){var f=w(e.request.url);f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}a.vectorTile=s.vectorTile,a.parse(s.vectorTile,n.layerIndex,n.actor,function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))}),n.loaded=n.loaded||{},n.loaded[i]=a})},A.prototype.reloadTile=function(t,e){var r=this.loaded,n=t.uid,i=this;if(r&&r[n]){var a=r[n];a.showCollisionBoxes=t.showCollisionBoxes;var o=function(t,r){var n=a.reloadCallback;n&&(delete a.reloadCallback,a.parse(a.vectorTile,i.layerIndex,i.actor,n)),e(t,r)};\"parsing\"===a.status?a.reloadCallback=o:\"done\"===a.status&&a.parse(a.vectorTile,this.layerIndex,this.actor,o)}},A.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},A.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var M=function(){this.loading={},this.loaded={}};M.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=new t.default$31(n);this.loading[n]=a,a.loadFromImage(e.rawImageData,i),delete this.loading[n],this.loaded=this.loaded||{},this.loaded[n]=a,r(null,a)},M.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var T={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142};function S(t){var e=0;if(t&&t.length>0){e+=Math.abs(C(t[0]));for(var r=1;r<t.length;r++)e-=Math.abs(C(t[r]))}return e}function C(t){var e,r,n,i,a,o,s=0,l=t.length;if(l>2){for(o=0;o<l;o++)o===l-2?(n=l-2,i=l-1,a=0):o===l-1?(n=l-1,i=0,a=1):(n=o,i=o+1,a=o+2),e=t[n],r=t[i],s+=(E(t[a][0])-E(e[0]))*Math.sin(E(r[1]));s=s*T.RADIUS*T.RADIUS/2}return s}function E(t){return t*Math.PI/180}var L={geometry:function t(e){var r,n=0;switch(e.type){case\"Polygon\":return S(e.coordinates);case\"MultiPolygon\":for(r=0;r<e.coordinates.length;r++)n+=S(e.coordinates[r]);return n;case\"Point\":case\"MultiPoint\":case\"LineString\":case\"MultiLineString\":return 0;case\"GeometryCollection\":for(r=0;r<e.geometries.length;r++)n+=t(e.geometries[r]);return n}},ring:C};function z(t,e){return function(r){return t(r,e)}}function O(t,e){e=!!e,t[0]=I(t[0],e);for(var r=1;r<t.length;r++)t[r]=I(t[r],!e);return t}function I(t,e){return function(t){return L.ring(t)>=0}(t)===e?t:t.reverse()}var D=t.default$29.VectorTileFeature.prototype.toGeoJSON,P=function(e){this._feature=e,this.extent=t.default$8,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};P.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r<n.length;r+=1){var i=n[r];e.push([new t.default$1(i[0],i[1])])}return e}for(var a=[],o=0,s=this._feature.geometry;o<s.length;o+=1){for(var l=[],c=0,u=s[o];c<u.length;c+=1){var f=u[c];l.push(new t.default$1(f[0],f[1]))}a.push(l)}return a},P.prototype.toGeoJSON=function(t,e,r){return D.call(this,t,e,r)};var R=function(e){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=t.default$8,this.length=e.length,this._features=e};R.prototype.feature=function(t){return new P(this._features[t])};var F=t.__moduleExports.VectorTileFeature,B=N;function N(t,e){this.options=e||{},this.features=t,this.length=t.length}function j(t,e){this.id=\"number\"==typeof t.id?t.id:void 0,this.type=t.type,this.rawGeometry=1===t.type?[t.geometry]:t.geometry,this.properties=t.tags,this.extent=e||4096}N.prototype.feature=function(t){return new j(this.features[t],this.options.extent)},j.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var r=0;r<e.length;r++){for(var n=e[r],i=[],a=0;a<n.length;a++)i.push(new t.default$32(n[a][0],n[a][1]));this.geometry.push(i)}return this.geometry},j.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var t=this.geometry,e=1/0,r=-1/0,n=1/0,i=-1/0,a=0;a<t.length;a++)for(var o=t[a],s=0;s<o.length;s++){var l=o[s];e=Math.min(e,l.x),r=Math.max(r,l.x),n=Math.min(n,l.y),i=Math.max(i,l.y)}return[e,n,r,i]},j.prototype.toGeoJSON=F.prototype.toGeoJSON;var V=H,U=H,q=B;function H(e){var r=new t.__moduleExports$1;return function(t,e){for(var r in t.layers)e.writeMessage(3,G,t.layers[r])}(e,r),r.finish()}function G(t,e){var r;e.writeVarintField(15,t.version||1),e.writeStringField(1,t.name||\"\"),e.writeVarintField(5,t.extent||4096);var n={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<t.length;r++)n.feature=t.feature(r),e.writeMessage(2,W,n);var i=n.keys;for(r=0;r<i.length;r++)e.writeStringField(3,i[r]);var a=n.values;for(r=0;r<a.length;r++)e.writeMessage(4,J,a[r])}function W(t,e){var r=t.feature;void 0!==r.id&&e.writeVarintField(1,r.id),e.writeMessage(2,Y,t),e.writeVarintField(3,r.type),e.writeMessage(4,$,r)}function Y(t,e){var r=t.feature,n=t.keys,i=t.values,a=t.keycache,o=t.valuecache;for(var s in r.properties){var l=a[s];void 0===l&&(n.push(s),l=n.length-1,a[s]=l),e.writeVarint(l);var c=r.properties[s],u=typeof c;\"string\"!==u&&\"boolean\"!==u&&\"number\"!==u&&(c=JSON.stringify(c));var f=u+\":\"+c,h=o[f];void 0===h&&(i.push(c),h=i.length-1,o[f]=h),e.writeVarint(h)}}function X(t,e){return(e<<3)+(7&t)}function Z(t){return t<<1^t>>31}function $(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s<o;s++){var l=r[s],c=1;1===n&&(c=l.length),e.writeVarint(X(1,c));for(var u=3===n?l.length-1:l.length,f=0;f<u;f++){1===f&&1!==n&&e.writeVarint(X(2,u-1));var h=l[f].x-i,p=l[f].y-a;e.writeVarint(Z(h)),e.writeVarint(Z(p)),i+=h,a+=p}3===n&&e.writeVarint(X(7,0))}}function J(t,e){var r=typeof t;\"string\"===r?e.writeStringField(1,t):\"boolean\"===r?e.writeBooleanField(7,t):\"number\"===r&&(t%1!=0?e.writeDoubleField(3,t):t<0?e.writeSVarintField(6,t):e.writeVarintField(5,t))}V.fromVectorTileJs=U,V.fromGeojsonVt=function(t,e){e=e||{};var r={};for(var n in t)r[n]=new B(t[n].features,e),r[n].name=n,r[n].version=e.version,r[n].extent=e.extent;return H({layers:r})},V.GeoJSONWrapper=q;var K=function t(e,r,n,i,a,o){if(!(a-i<=n)){var s=Math.floor((i+a)/2);!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1);t(e,r,n,Math.max(i,Math.floor(n-l*u/s+f)),Math.min(a,Math.floor(n+(s-l)*u/s+f)),o)}var h=r[2*n+o],p=i,d=a;for(Q(e,r,i,n),r[2*a+o]>h&&Q(e,r,i,a);p<d;){for(Q(e,r,p,d),p++,d--;r[2*p+o]<h;)p++;for(;r[2*d+o]>h;)d--}r[2*i+o]===h?Q(e,r,i,d):Q(e,r,++d,a),d<=n&&(i=d+1),n<=d&&(a=d-1)}}(e,r,s,i,a,o%2),t(e,r,n,i,s-1,o+1),t(e,r,n,s+1,a,o+1)}};function Q(t,e,r,n){tt(t,r,n),tt(e,2*r,2*n),tt(e,2*r+1,2*n+1)}function tt(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function et(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}var rt=function(t,e,r,n,i){return new nt(t,e,r,n,i)};function nt(t,e,r,n,i){e=e||it,r=r||at,i=i||Array,this.nodeSize=n||64,this.points=t,this.ids=new i(t.length),this.coords=new i(2*t.length);for(var a=0;a<t.length;a++)this.ids[a]=a,this.coords[2*a]=e(t[a]),this.coords[2*a+1]=r(t[a]);K(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function it(t){return t[0]}function at(t){return t[1]}nt.prototype={range:function(t,e,r,n){return function(t,e,r,n,i,a,o){for(var s,l,c=[0,t.length-1,0],u=[];c.length;){var f=c.pop(),h=c.pop(),p=c.pop();if(h-p<=o)for(var d=p;d<=h;d++)s=e[2*d],l=e[2*d+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var v=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(v)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(v))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},within:function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)et(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];et(d,g,r,n)<=l&&s.push(t[p]);var v=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(v)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(v))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)}};function ot(t){this.options=pt(Object.create(this.options),t),this.trees=new Array(this.options.maxZoom+1)}function st(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:n,properties:i,parentId:-1,numPoints:r}}function lt(t,e){var r=t.geometry.coordinates;return{x:ft(r[0]),y:ht(r[1]),zoom:1/0,id:e,parentId:-1}}function ct(t){return{type:\"Feature\",properties:ut(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function ut(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return pt(pt({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function ft(t){return t/360+.5}function ht(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function pt(t,e){for(var r in e)t[r]=e[r];return t}function dt(t){return t.x}function gt(t){return t.y}function vt(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function mt(t,e,r,n){var i={id:t||null,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)yt(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n<e.length;n++)yt(t,e[n]);else if(\"MultiPolygon\"===r)for(n=0;n<e.length;n++)for(var i=0;i<e[n].length;i++)yt(t,e[n][i])}(i),i}function yt(t,e){for(var r=0;r<e.length;r+=3)t.minX=Math.min(t.minX,e[r]),t.minY=Math.min(t.minY,e[r+1]),t.maxX=Math.max(t.maxX,e[r]),t.maxY=Math.max(t.maxY,e[r+1])}function xt(t,e,r){if(e.geometry){var n=e.geometry.coordinates,i=e.geometry.type,a=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),o=[];if(\"Point\"===i)bt(n,o);else if(\"MultiPoint\"===i)for(var s=0;s<n.length;s++)bt(n[s],o);else if(\"LineString\"===i)_t(n,o,a,!1);else if(\"MultiLineString\"===i)if(r.lineMetrics)for(s=0;s<n.length;s++)return o=[],_t(n[s],o,a,!1),void t.push(mt(e.id,\"LineString\",o,e.properties));else wt(n,o,a,!1);else if(\"Polygon\"===i)wt(n,o,a,!0);else{if(\"MultiPolygon\"!==i){if(\"GeometryCollection\"===i){for(s=0;s<e.geometry.geometries.length;s++)xt(t,{id:e.id,geometry:e.geometry.geometries[s],properties:e.properties},r);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(s=0;s<n.length;s++){var l=[];wt(n[s],l,a,!0),o.push(l)}}t.push(mt(e.id,i,o,e.properties))}}function bt(t,e){e.push(kt(t[0])),e.push(At(t[1])),e.push(0)}function _t(t,e,r,n){for(var i,a,o=0,s=0;s<t.length;s++){var l=kt(t[s][0]),c=At(t[s][1]);e.push(l),e.push(c),e.push(0),s>0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=e[r],l=e[r+1],c=e[n],u=e[n+1],f=r+3;f<n;f+=3){var h=vt(e[f],e[f+1],s,l,c,u);h>o&&(a=f,o=h)}o>i&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function wt(t,e,r,n){for(var i=0;i<t.length;i++){var a=[];_t(t[i],a,r,n),e.push(a)}}function kt(t){return t/360+.5}function At(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function Mt(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o<=n)return t;if(a>n||o<r)return null;for(var l=[],c=0;c<t.length;c++){var u=t[c],f=u.geometry,h=u.type,p=0===i?u.minX:u.minY,d=0===i?u.maxX:u.maxY;if(p>=r&&d<=n)l.push(u);else if(!(p>n||d<r)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)Tt(f,g,r,n,i);else if(\"LineString\"===h)St(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)Et(f,g,r,n,i,!1);else if(\"Polygon\"===h)Et(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var v=0;v<f.length;v++){var m=[];Et(f[v],m,r,n,i,!0),m.length&&g.push(m)}if(g.length){if(s.lineMetrics&&\"LineString\"===h){for(v=0;v<g.length;v++)l.push(mt(u.id,h,g[v],u.tags));continue}\"LineString\"!==h&&\"MultiLineString\"!==h||(1===g.length?(h=\"LineString\",g=g[0]):h=\"MultiLineString\"),\"Point\"!==h&&\"MultiPoint\"!==h||(h=3===g.length?\"Point\":\"MultiPoint\"),l.push(mt(u.id,h,g,u.tags))}}}return l.length?l:null}function Tt(t,e,r,n,i){for(var a=0;a<t.length;a+=3){var o=t[a+i];o>=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function St(t,e,r,n,i,a,o){for(var s,l,c=Ct(t),u=0===i?zt:Ot,f=t.start,h=0;h<t.length-3;h+=3){var p=t[h],d=t[h+1],g=t[h+2],v=t[h+3],m=t[h+4],y=0===i?p:d,x=0===i?v:m,b=!1;o&&(s=Math.sqrt(Math.pow(p-v,2)+Math.pow(d-m,2))),y<r?x>=r&&(l=u(c,p,d,v,m,r),o&&(c.start=f+s*l)):y>n?x<=n&&(l=u(c,p,d,v,m,n),o&&(c.start=f+s*l)):Lt(c,p,d,g),x<r&&y>=r&&(l=u(c,p,d,v,m,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,v,m,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=Ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&Lt(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&Lt(c,c[0],c[1],c[2]),c.length&&e.push(c)}function Ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function Et(t,e,r,n,i,a){for(var o=0;o<t.length;o++)St(t[o],e,r,n,i,a,!1)}function Lt(t,e,r,n){t.push(e),t.push(r),t.push(n)}function zt(t,e,r,n,i,a){var o=(a-e)/(n-e);return t.push(a),t.push(r+(i-r)*o),t.push(1),o}function Ot(t,e,r,n,i,a){var o=(a-r)/(i-r);return t.push(e+(n-e)*o),t.push(a),t.push(1),o}function It(t,e){for(var r=[],n=0;n<t.length;n++){var i,a=t[n],o=a.type;if(\"Point\"===o||\"MultiPoint\"===o||\"LineString\"===o)i=Dt(a.geometry,e);else if(\"MultiLineString\"===o||\"Polygon\"===o){i=[];for(var s=0;s<a.geometry.length;s++)i.push(Dt(a.geometry[s],e))}else if(\"MultiPolygon\"===o)for(i=[],s=0;s<a.geometry.length;s++){for(var l=[],c=0;c<a.geometry[s].length;c++)l.push(Dt(a.geometry[s][c],e));i.push(l)}r.push(mt(a.id,o,i,a.tags))}return r}function Dt(t,e){var r=[];r.size=t.size,void 0!==t.start&&(r.start=t.start,r.end=t.end);for(var n=0;n<t.length;n+=3)r.push(t[n]+e,t[n+1],t[n+2]);return r}function Pt(t,e){if(t.transformed)return t;var r,n,i,a=1<<t.z,o=t.x,s=t.y;for(r=0;r<t.features.length;r++){var l=t.features[r],c=l.geometry,u=l.type;if(l.geometry=[],1===u)for(n=0;n<c.length;n+=2)l.geometry.push(Rt(c[n],c[n+1],e,a,o,s));else for(n=0;n<c.length;n++){var f=[];for(i=0;i<c[n].length;i+=2)f.push(Rt(c[n][i],c[n][i+1],e,a,o,s));l.geometry.push(f)}}return t.transformed=!0,t}function Rt(t,e,r,n,i,a){return[Math.round(r*(t*n-i)),Math.round(r*(e*n-a))]}function Ft(t,e,r,n,i){for(var a=e===i.maxZoom?0:i.tolerance/((1<<e)*i.extent),o={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:n,z:e,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},s=0;s<t.length;s++){o.numFeatures++,Bt(o,t[s],a,i);var l=t[s].minX,c=t[s].minY,u=t[s].maxX,f=t[s].maxY;l<o.minX&&(o.minX=l),c<o.minY&&(o.minY=c),u>o.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function Bt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s<i.length;s+=3)o.push(i[s]),o.push(i[s+1]),t.numPoints++,t.numSimplified++;else if(\"LineString\"===a)Nt(o,i,t,r,!1,!1);else if(\"MultiLineString\"===a||\"Polygon\"===a)for(s=0;s<i.length;s++)Nt(o,i[s],t,r,\"Polygon\"===a,0===s);else if(\"MultiPolygon\"===a)for(var l=0;l<i.length;l++){var c=i[l];for(s=0;s<c.length;s++)Nt(o,c[s],t,r,!0,0===s)}if(o.length){var u=e.tags||null;if(\"LineString\"===a&&n.lineMetrics){for(var f in u={},e.tags)u[f]=e.tags[f];u.mapbox_clip_start=i.start/i.size,u.mapbox_clip_end=i.end/i.size}var h={geometry:o,type:\"Polygon\"===a||\"MultiPolygon\"===a?3:\"LineString\"===a||\"MultiLineString\"===a?2:1,tags:u};null!==e.id&&(h.id=e.id),t.features.push(h)}}function Nt(t,e,r,n,i,a){var o=n*n;if(n>0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;l<e.length;l+=3)(0===n||e[l+2]>o)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n<i;a=n,n+=2)r+=(t[n]-t[a])*(t[n+1]+t[a+1]);if(r>0===e)for(n=0,i=t.length;n<i/2;n+=2){var o=t[n],s=t[n+1];t[n]=t[i-2-n],t[n+1]=t[i-1-n],t[i-2-n]=o,t[i-1-n]=s}}(s,a),t.push(s)}}function jt(t,e){var r=(e=this.options=function(t,e){for(var r in e)t[r]=e[r];return t}(Object.create(this.options),e)).debug;if(r&&console.time(\"preprocess data\"),e.maxZoom<0||e.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n<t.features.length;n++)xt(r,t.features[n],e);else\"Feature\"===t.type?xt(r,t,e):xt(r,{geometry:t},e);return r}(t,e);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",e.indexMaxZoom,e.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(n=function(t,e){var r=e.buffer/e.extent,n=t,i=Mt(t,1,-1-r,r,0,-1,2,e),a=Mt(t,1,1-r,2+r,0,-1,2,e);return(i||a)&&(n=Mt(t,1,-r,1+r,0,-1,2,e)||[],i&&(n=It(i,1).concat(n)),a&&(n=n.concat(It(a,-1)))),n}(n,e)).length&&this.splitTile(n,0,0,0),r&&(n.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)))}function Vt(t,e,r){return 32*((1<<t)*r+e)+t}function Ut(t,e){var r=t.tileID.canonical;if(!this._geoJSONIndex)return e(null,null);var n=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!n)return e(null,null);var i=new R(n.features),a=V(i);0===a.byteOffset&&a.byteLength===a.buffer.byteLength||(a=new Uint8Array(a)),e(null,{vectorTile:i,rawData:a.buffer})}ot.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time(\"total time\");var r=\"prepare \"+t.length+\" points\";e&&console.time(r),this.points=t;var n=t.map(lt);e&&console.timeEnd(r);for(var i=this.options.maxZoom;i>=this.options.minZoom;i--){var a=+Date.now();this.trees[i+1]=rt(n,dt,gt,this.options.nodeSize,Float32Array),n=this._cluster(n,i),e&&console.log(\"z%d: %d clusters in %dms\",i,n.length,+Date.now()-a)}return this.trees[this.options.minZoom]=rt(n,dt,gt,this.options.nodeSize,Float32Array),e&&console.timeEnd(\"total time\"),this},getClusters:function(t,e){for(var r=this.trees[this._limitZoom(e)],n=r.range(ft(t[0]),ht(t[3]),ft(t[2]),ht(t[1])),i=[],a=0;a<n.length;a++){var o=r.points[n[a]];i.push(o.numPoints?ct(o):this.points[o.id])}return i},getChildren:function(t,e){for(var r=this.trees[e+1].points[t],n=this.options.radius/(this.options.extent*Math.pow(2,e)),i=this.trees[e+1].within(r.x,r.y,n),a=[],o=0;o<i.length;o++){var s=this.trees[e+1].points[i[o]];s.parentId===t&&a.push(s.numPoints?ct(s):this.points[s.id])}return a},getLeaves:function(t,e,r,n){r=r||10,n=n||0;var i=[];return this._appendLeaves(i,t,e,r,n,0),i},getTile:function(t,e,r){var n=this.trees[this._limitZoom(t)],i=Math.pow(2,t),a=this.options.extent,o=this.options.radius/a,s=(r-o)/i,l=(r+1+o)/i,c={features:[]};return this._addTileFeatures(n.range((e-o)/i,s,(e+1+o)/i,l),n.points,e,r,i,c),0===e&&this._addTileFeatures(n.range(1-o/i,s,1,l),n.points,i,r,i,c),e===i-1&&this._addTileFeatures(n.range(0,s,o/i,l),n.points,-1,r,i,c),c.features.length?c:null},getClusterExpansionZoom:function(t,e){for(;e<this.options.maxZoom;){var r=this.getChildren(t,e);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e},_appendLeaves:function(t,e,r,n,i,a){for(var o=this.getChildren(e,r),s=0;s<o.length;s++){var l=o[s].properties;if(l.cluster?a+l.point_count<=i?a+=l.point_count:a=this._appendLeaves(t,l.cluster_id,r+1,n,i,a):a<i?a++:t.push(o[s]),t.length===n)break}return a},_addTileFeatures:function(t,e,r,n,i,a){for(var o=0;o<t.length;o++){var s=e[t[o]];a.features.push({type:1,geometry:[[Math.round(this.options.extent*(s.x*i-r)),Math.round(this.options.extent*(s.y*i-n))]],tags:s.numPoints?ut(s):this.points[s.id].properties})}},_limitZoom:function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},_cluster:function(t,e){for(var r=[],n=this.options.radius/(this.options.extent*Math.pow(2,e)),i=0;i<t.length;i++){var a=t[i];if(!(a.zoom<=e)){a.zoom=e;var o=this.trees[e+1],s=o.within(a.x,a.y,n),l=a.numPoints||1,c=a.x*l,u=a.y*l,f=null;this.options.reduce&&(f=this.options.initial(),this._accumulate(f,a));for(var h=0;h<s.length;h++){var p=o.points[s[h]];if(e<p.zoom){var d=p.numPoints||1;p.zoom=e,c+=p.x*d,u+=p.y*d,l+=d,p.parentId=i,this.options.reduce&&this._accumulate(f,p)}}1===l?r.push(a):(a.parentId=i,r.push(st(c/l,u/l,l,i,f)))}}return r},_accumulate:function(t,e){var r=e.numPoints?e.properties:this.options.map(this.points[e.id].properties);this.options.reduce(t,r)}},jt.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,debug:0},jt.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<<e,f=Vt(e,r,n),h=this.tiles[f];if(!h&&(c>1&&console.time(\"creation\"),h=this.tiles[f]=Ft(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<<i-e;if(r!==Math.floor(a/d)||n!==Math.floor(o/d))continue}else if(e===l.indexMaxZoom||h.numPoints<=l.indexMaxPoints)continue;if(h.source=null,0!==t.length){c>1&&console.time(\"clipping\");var g,v,m,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,k=.5+_,A=1+_;g=v=m=y=null,x=Mt(t,u,r-_,r+k,0,h.minX,h.maxX,l),b=Mt(t,u,r+w,r+A,0,h.minX,h.maxX,l),t=null,x&&(g=Mt(x,u,n-_,n+k,1,h.minY,h.maxY,l),v=Mt(x,u,n+w,n+A,1,h.minY,h.maxY,l),x=null),b&&(m=Mt(b,u,n-_,n+k,1,h.minY,h.maxY,l),y=Mt(b,u,n+w,n+A,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(v||[],e+1,2*r,2*n+1),s.push(m||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},jt.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<<t,s=Vt(t,e=(e%o+o)%o,r);if(this.tiles[s])return Pt(this.tiles[s],i);a>1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[Vt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?Pt(this.tiles[s],i):null):null};var qt=function(e){function r(t,r,n){e.call(this,t,r,Ut),n&&(this.loadGeoJSON=n)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var t=this;if(this._pendingCallback&&this._pendingLoadDataParams){var e=this._pendingCallback,r=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams,this.loadGeoJSON(r,function(n,i){if(n||!i)return e(n);if(\"object\"!=typeof i)return e(new Error(\"Input data is not a valid GeoJSON object.\"));!function t(e,r){switch(e&&e.type||null){case\"FeatureCollection\":return e.features=e.features.map(z(t,r)),e;case\"Feature\":return e.geometry=t(e.geometry,r),e;case\"Polygon\":case\"MultiPolygon\":return function(t,e){return\"Polygon\"===t.type?t.coordinates=O(t.coordinates,e):\"MultiPolygon\"===t.type&&(t.coordinates=t.coordinates.map(z(O,e))),t}(e,r);default:return e}}(i,!0);try{t._geoJSONIndex=r.cluster?function(t){return new ot(t)}(r.superclusterOptions).load(i.features):new jt(i,r.geojsonVtOptions)}catch(n){return e(n)}t.loaded={};var a={};if(r.request&&r.request.collectResourceTiming){var o=w(r.request.url);o&&(a.resourceTiming={},a.resourceTiming[r.source]=JSON.parse(JSON.stringify(o)))}e(null,a)})}},r.prototype.coalesce=function(){\"Coalescing\"===this._state?this._state=\"Idle\":\"NeedsLoadData\"===this._state&&(this._state=\"Coalescing\",this._loadData())},r.prototype.reloadTile=function(t,r){var n=this.loaded,i=t.uid;return n&&n[i]?e.prototype.reloadTile.call(this,t,r):this.loadTile(t,r)},r.prototype.loadGeoJSON=function(e,r){if(e.request)t.getJSON(e.request,r);else{if(\"string\"!=typeof e.data)return r(new Error(\"Input data is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(e.data))}catch(t){return r(new Error(\"Input data is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),e()},r}(A),Ht=function(e){var r=this;this.self=e,this.actor=new t.default$7(e,this),this.layerIndexes={},this.workerSourceTypes={vector:A,geojson:qt},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=function(t,e){if(r.workerSourceTypes[t])throw new Error('Worker source with name \"'+t+'\" already registered.');r.workerSourceTypes[t]=e},this.self.registerRTLTextPlugin=function(e){if(t.plugin.isLoaded())throw new Error(\"RTL text plugin already registered.\");t.plugin.applyArabicShaping=e.applyArabicShaping,t.plugin.processBidirectionalText=e.processBidirectionalText}};return Ht.prototype.setLayers=function(t,e,r){this.getLayerIndex(t).replace(e),r()},Ht.prototype.updateLayers=function(t,e,r){this.getLayerIndex(t).update(e.layers,e.removedIds),r()},Ht.prototype.loadTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).loadTile(e,r)},Ht.prototype.loadDEMTile=function(t,e,r){this.getDEMWorkerSource(t,e.source).loadTile(e,r)},Ht.prototype.reloadTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).reloadTile(e,r)},Ht.prototype.abortTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).abortTile(e,r)},Ht.prototype.removeTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).removeTile(e,r)},Ht.prototype.removeDEMTile=function(t,e){this.getDEMWorkerSource(t,e.source).removeTile(e)},Ht.prototype.removeSource=function(t,e,r){if(this.workerSources[t]&&this.workerSources[t][e.type]&&this.workerSources[t][e.type][e.source]){var n=this.workerSources[t][e.type][e.source];delete this.workerSources[t][e.type][e.source],void 0!==n.removeSource?n.removeSource(e,r):r()}},Ht.prototype.loadWorkerSource=function(t,e,r){try{this.self.importScripts(e.url),r()}catch(t){r(t.toString())}},Ht.prototype.loadRTLTextPlugin=function(e,r,n){try{t.plugin.isLoaded()||(this.self.importScripts(r),n(t.plugin.isLoaded()?null:new Error(\"RTL Text Plugin failed to import scripts from \"+r)))}catch(t){n(t.toString())}},Ht.prototype.getLayerIndex=function(t){var e=this.layerIndexes[t];return e||(e=this.layerIndexes[t]=new n),e},Ht.prototype.getWorkerSource=function(t,e,r){var n=this;if(this.workerSources[t]||(this.workerSources[t]={}),this.workerSources[t][e]||(this.workerSources[t][e]={}),!this.workerSources[t][e][r]){var i={send:function(e,r,i){n.actor.send(e,r,i,t)}};this.workerSources[t][e][r]=new this.workerSourceTypes[e](i,this.getLayerIndex(t))}return this.workerSources[t][e][r]},Ht.prototype.getDEMWorkerSource=function(t,e){return this.demWorkerSources[t]||(this.demWorkerSources[t]={}),this.demWorkerSources[t][e]||(this.demWorkerSources[t][e]=new M),this.demWorkerSources[t][e]},\"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&new Ht(self),Ht}),i(0,function(t){var e=t.createCommonjsModule(function(t){function e(t){return!!(\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray&&Function.prototype&&Function.prototype.bind&&Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions&&\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON&&function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return!1;var t,e,r=new Blob([\"\"],{type:\"text/javascript\"}),n=URL.createObjectURL(r);try{e=new Worker(n),t=!0}catch(e){t=!1}return e&&e.terminate(),URL.revokeObjectURL(n),t}()&&\"Uint8ClampedArray\"in window&&function(t){return void 0===r[t]&&(r[t]=function(t){var r=document.createElement(\"canvas\"),n=Object.create(e.webGLContextAttributes);return n.failIfMajorPerformanceCaveat=t,r.probablySupportsContext?r.probablySupportsContext(\"webgl\",n)||r.probablySupportsContext(\"experimental-webgl\",n):r.supportsContext?r.supportsContext(\"webgl\",n)||r.supportsContext(\"experimental-webgl\",n):r.getContext(\"webgl\",n)||r.getContext(\"experimental-webgl\",n)}(t)),r[t]}(t&&t.failIfMajorPerformanceCaveat))}t.exports?t.exports=e:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=e);var r={};e.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0}}),r=t.default.performance&&t.default.performance.now?t.default.performance.now.bind(t.default.performance):Date.now.bind(Date),n=t.default.requestAnimationFrame||t.default.mozRequestAnimationFrame||t.default.webkitRequestAnimationFrame||t.default.msRequestAnimationFrame,i=t.default.cancelAnimationFrame||t.default.mozCancelAnimationFrame||t.default.webkitCancelAnimationFrame||t.default.msCancelAnimationFrame,a={now:r,frame:function(t){return n(t)},cancelFrame:function(t){return i(t)},getImageData:function(e){var r=t.default.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=e.width,r.height=e.height,n.drawImage(e,0,0,e.width,e.height),n.getImageData(0,0,e.width,e.height)},hardwareConcurrency:t.default.navigator.hardwareConcurrency||4,get devicePixelRatio(){return t.default.devicePixelRatio},supportsWebp:!1};if(t.default.document){var o=t.default.document.createElement(\"img\");o.onload=function(){a.supportsWebp=!0},o.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\"}var s={create:function(e,r,n){var i=t.default.document.createElement(e);return r&&(i.className=r),n&&n.appendChild(i),i},createNS:function(e,r){return t.default.document.createElementNS(e,r)}},l=t.default.document?t.default.document.documentElement.style:null;function c(t){if(!l)return null;for(var e=0;e<t.length;e++)if(t[e]in l)return t[e];return t[0]}var u,f=c([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]);s.disableDrag=function(){l&&f&&(u=l[f],l[f]=\"none\")},s.enableDrag=function(){l&&f&&(l[f]=u)};var h=c([\"transform\",\"WebkitTransform\"]);s.setTransform=function(t,e){t.style[h]=e};var p=!1;try{var d=Object.defineProperty({},\"passive\",{get:function(){p=!0}});t.default.addEventListener(\"test\",d,d),t.default.removeEventListener(\"test\",d,d)}catch(t){p=!1}s.addEventListener=function(t,e,r,n){void 0===n&&(n={}),\"passive\"in n&&p?t.addEventListener(e,r,n):t.addEventListener(e,r,n.capture)},s.removeEventListener=function(t,e,r,n){void 0===n&&(n={}),\"passive\"in n&&p?t.removeEventListener(e,r,n):t.removeEventListener(e,r,n.capture)};var g=function(e){e.preventDefault(),e.stopPropagation(),t.default.removeEventListener(\"click\",g,!0)};s.suppressClick=function(){t.default.addEventListener(\"click\",g,!0),t.default.setTimeout(function(){t.default.removeEventListener(\"click\",g,!0)},0)},s.mousePos=function(e,r){var n=e.getBoundingClientRect();return r=r.touches?r.touches[0]:r,new t.default$1(r.clientX-n.left-e.clientLeft,r.clientY-n.top-e.clientTop)},s.touchPos=function(e,r){for(var n=e.getBoundingClientRect(),i=[],a=\"touchend\"===r.type?r.changedTouches:r.touches,o=0;o<a.length;o++)i.push(new t.default$1(a[o].clientX-n.left-e.clientLeft,a[o].clientY-n.top-e.clientTop));return i},s.mouseButton=function(e){return void 0!==t.default.InstallTrigger&&2===e.button&&e.ctrlKey&&t.default.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:e.button},s.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var v={API_URL:\"https://api.mapbox.com\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null},m=\"See https://www.mapbox.com/api-documentation/#access-tokens\";function y(t,e){var r=M(v.API_URL);if(t.protocol=r.protocol,t.authority=r.authority,\"/\"!==r.path&&(t.path=\"\"+r.path+t.path),!v.REQUIRE_ACCESS_TOKEN)return T(t);if(!(e=e||v.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+m);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+m);return t.params.push(\"access_token=\"+e),T(t)}function x(t){return 0===t.indexOf(\"mapbox:\")}var b=function(t,e){if(!x(t))return t;var r=M(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),y(r,e)},_=function(t,e,r,n){var i=M(t);return x(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,y(i,n)):(i.path+=\"\"+e+r,T(i))},w=/(\\.(png|jpg)\\d*)(?=$)/,k=function(t,e,r){if(!e||!x(e))return t;var n=M(t),i=a.devicePixelRatio>=2||512===r?\"@2x\":\"\",o=a.supportsWebp?\".webp\":\"$1\";return n.path=n.path.replace(w,\"\"+i+o),function(t){for(var e=0;e<t.length;e++)0===t[e].indexOf(\"access_token=tk.\")&&(t[e]=\"access_token=\"+(v.ACCESS_TOKEN||\"\"))}(n.params),T(n)},A=/^(\\w+):\\/\\/([^\\/?]*)(\\/[^?]+)?\\??(.+)?/;function M(t){var e=t.match(A);if(!e)throw new Error(\"Unable to parse URL object\");return{protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function T(t){var e=t.params.length?\"?\"+t.params.join(\"&\"):\"\";return t.protocol+\"://\"+t.authority+t.path+e}var S=t.default.HTMLImageElement,C=t.default.HTMLCanvasElement,E=t.default.HTMLVideoElement,L=t.default.ImageData,z=function(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n)};z.prototype.update=function(t,e){var r=t.width,n=t.height,i=!this.size||this.size[0]!==r||this.size[1]!==n,a=this.context,o=a.gl;this.useMipmap=Boolean(e&&e.useMipmap),o.bindTexture(o.TEXTURE_2D,this.texture),i?(this.size=[r,n],a.pixelStoreUnpack.set(1),this.format!==o.RGBA||e&&!1===e.premultiply||a.pixelStoreUnpackPremultiplyAlpha.set(!0),t instanceof S||t instanceof C||t instanceof E||t instanceof L?o.texImage2D(o.TEXTURE_2D,0,this.format,this.format,o.UNSIGNED_BYTE,t):o.texImage2D(o.TEXTURE_2D,0,this.format,r,n,0,this.format,o.UNSIGNED_BYTE,t.data)):t instanceof S||t instanceof C||t instanceof E||t instanceof L?o.texSubImage2D(o.TEXTURE_2D,0,0,0,o.RGBA,o.UNSIGNED_BYTE,t):o.texSubImage2D(o.TEXTURE_2D,0,0,0,r,n,o.RGBA,o.UNSIGNED_BYTE,t.data),this.useMipmap&&this.isSizePowerOfTwo()&&o.generateMipmap(o.TEXTURE_2D)},z.prototype.bind=function(t,e,r){var n=this.context.gl;n.bindTexture(n.TEXTURE_2D,this.texture),r!==n.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=n.LINEAR),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e)},z.prototype.isSizePowerOfTwo=function(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0},z.prototype.destroy=function(){this.context.gl.deleteTexture(this.texture),this.texture=null};var O=function(){this.images={},this.loaded=!1,this.requestors=[],this.shelfPack=new t.default$2(64,64,{autoResize:!0}),this.patterns={},this.atlasImage=new t.RGBAImage({width:64,height:64}),this.dirty=!0};O.prototype.isLoaded=function(){return this.loaded},O.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e<r.length;e+=1){var n=r[e],i=n.ids,a=n.callback;this._notify(i,a)}this.requestors=[]}},O.prototype.getImage=function(t){return this.images[t]},O.prototype.addImage=function(t,e){this.images[t]=e},O.prototype.removeImage=function(t){delete this.images[t];var e=this.patterns[t];e&&(this.shelfPack.unref(e.bin),delete this.patterns[t])},O.prototype.getImages=function(t,e){var r=!0;if(!this.isLoaded())for(var n=0,i=t;n<i.length;n+=1){var a=i[n];this.images[a]||(r=!1)}this.isLoaded()||r?this._notify(t,e):this.requestors.push({ids:t,callback:e})},O.prototype._notify=function(t,e){for(var r={},n=0,i=t;n<i.length;n+=1){var a=i[n],o=this.images[a];o&&(r[a]={data:o.data.clone(),pixelRatio:o.pixelRatio,sdf:o.sdf})}e(null,r)},O.prototype.getPixelSize=function(){return{width:this.shelfPack.w,height:this.shelfPack.h}},O.prototype.getPattern=function(e){var r=this.patterns[e];if(r)return r.position;var n=this.getImage(e);if(!n)return null;var i=n.data.width+2,a=n.data.height+2,o=this.shelfPack.packOne(i,a);if(!o)return null;this.atlasImage.resize(this.getPixelSize());var s=n.data,l=this.atlasImage,c=o.x+1,u=o.y+1,f=s.width,h=s.height;t.RGBAImage.copy(s,l,{x:0,y:0},{x:c,y:u},{width:f,height:h}),t.RGBAImage.copy(s,l,{x:0,y:h-1},{x:c,y:u-1},{width:f,height:1}),t.RGBAImage.copy(s,l,{x:0,y:0},{x:c,y:u+h},{width:f,height:1}),t.RGBAImage.copy(s,l,{x:f-1,y:0},{x:c-1,y:u},{width:1,height:h}),t.RGBAImage.copy(s,l,{x:0,y:0},{x:c+f,y:u},{width:1,height:h}),this.dirty=!0;var p=new t.ImagePosition(o,n);return this.patterns[e]={bin:o,position:p},p},O.prototype.bind=function(t){var e=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new z(t,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE)};var I=P,D=1e20;function P(t,e,r,n,i,a){this.fontSize=t||24,this.buffer=void 0===e?3:e,this.cutoff=n||.25,this.fontFamily=i||\"sans-serif\",this.fontWeight=a||\"normal\",this.radius=r||8;var o=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=o,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(o*o),this.gridInner=new Float64Array(o*o),this.f=new Float64Array(o),this.d=new Float64Array(o),this.z=new Float64Array(o+1),this.v=new Int16Array(o),this.middle=Math.round(o/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1))}function R(t,e,r,n,i,a,o){for(var s=0;s<e;s++){for(var l=0;l<r;l++)n[l]=t[l*e+s];for(F(n,i,a,o,r),l=0;l<r;l++)t[l*e+s]=i[l]}for(l=0;l<r;l++){for(s=0;s<e;s++)n[s]=t[l*e+s];for(F(n,i,a,o,e),s=0;s<e;s++)t[l*e+s]=Math.sqrt(i[s])}}function F(t,e,r,n,i){r[0]=0,n[0]=-D,n[1]=+D;for(var a=1,o=0;a<i;a++){for(var s=(t[a]+a*a-(t[r[o]]+r[o]*r[o]))/(2*a-2*r[o]);s<=n[o];)o--,s=(t[a]+a*a-(t[r[o]]+r[o]*r[o]))/(2*a-2*r[o]);r[++o]=a,n[o]=s,n[o+1]=+D}for(a=0,o=0;a<i;a++){for(;n[o+1]<a;)o++;e[a]=(a-r[o])*(a-r[o])+t[r[o]]}}P.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var e=this.ctx.getImageData(0,0,this.size,this.size),r=new Uint8ClampedArray(this.size*this.size),n=0;n<this.size*this.size;n++){var i=e.data[4*n+3]/255;this.gridOuter[n]=1===i?0:0===i?D:Math.pow(Math.max(0,.5-i),2),this.gridInner[n]=1===i?D:0===i?0:Math.pow(Math.max(0,i-.5),2)}for(R(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),R(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),n=0;n<this.size*this.size;n++){var a=this.gridOuter[n]-this.gridInner[n];r[n]=Math.max(0,Math.min(255,Math.round(255-255*(a/this.radius+this.cutoff))))}return r};var B=function(t,e){this.requestTransform=t,this.localIdeographFontFamily=e,this.entries={}};B.prototype.setURL=function(t){this.url=t},B.prototype.getGlyphs=function(e,r){var n=this,i=[];for(var a in e)for(var o=0,s=e[a];o<s.length;o+=1){var l=s[o];i.push({stack:a,id:l})}t.asyncAll(i,function(t,e){var r=t.stack,i=t.id,a=n.entries[r];a||(a=n.entries[r]={glyphs:{},requests:{}});var o=a.glyphs[i];if(void 0===o)if(o=n._tinySDF(a,r,i))e(null,{stack:r,id:i,glyph:o});else{var s=Math.floor(i/256);if(256*s>65535)e(new Error(\"glyphs > 65535 not supported\"));else{var l=a.requests[s];l||(l=a.requests[s]=[],B.loadGlyphRange(r,s,n.url,n.requestTransform,function(t,e){if(e)for(var r in e)a.glyphs[+r]=e[+r];for(var n=0,i=l;n<i.length;n+=1)(0,i[n])(t,e);delete a.requests[s]})),l.push(function(t,n){t?e(t):n&&e(null,{stack:r,id:i,glyph:n[i]||null})})}}else e(null,{stack:r,id:i,glyph:o})},function(t,e){if(t)r(t);else if(e){for(var n={},i=0,a=e;i<a.length;i+=1){var o=a[i],s=o.stack,l=o.id,c=o.glyph;(n[s]||(n[s]={}))[l]=c&&{id:c.id,bitmap:c.bitmap.clone(),metrics:c.metrics}}r(null,n)}})},B.prototype._tinySDF=function(e,r,n){var i=this.localIdeographFontFamily;if(i&&(t.default$4[\"CJK Unified Ideographs\"](n)||t.default$4[\"Hangul Syllables\"](n))){var a=e.tinySDF;if(!a){var o=\"400\";/bold/i.test(r)?o=\"900\":/medium/i.test(r)?o=\"500\":/light/i.test(r)&&(o=\"200\"),a=e.tinySDF=new B.TinySDF(24,3,8,.25,i,o)}return{id:n,bitmap:new t.AlphaImage({width:30,height:30},a.draw(String.fromCharCode(n))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},B.loadGlyphRange=function(e,r,n,i,a){var o=256*r,s=o+255,l=i(function(t,e){if(!x(t))return t;var r=M(t);return r.path=\"/fonts/v1\"+r.path,y(r,e)}(n).replace(\"{fontstack}\",e).replace(\"{range}\",o+\"-\"+s),t.ResourceType.Glyphs);t.getArrayBuffer(l,function(e,r){if(e)a(e);else if(r){for(var n={},i=0,o=t.default$3(r.data);i<o.length;i+=1){var s=o[i];n[s.id]=s}a(null,n)}})},B.TinySDF=I;var N=function(){this.specification=t.default$5.light.position};N.prototype.possiblyEvaluate=function(e,r){return t.sphericalToCartesian(e.expression.evaluate(r))},N.prototype.interpolate=function(e,r,n){return{x:t.number(e.x,r.x,n),y:t.number(e.y,r.y,n),z:t.number(e.z,r.z,n)}};var j=new t.Properties({anchor:new t.DataConstantProperty(t.default$5.light.anchor),position:new N,color:new t.DataConstantProperty(t.default$5.light.color),intensity:new t.DataConstantProperty(t.default$5.light.intensity)}),V=function(e){function r(r){e.call(this),this._transitionable=new t.Transitionable(j),this.setLight(r),this._transitioning=this._transitionable.untransitioned()}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.getLight=function(){return this._transitionable.serialize()},r.prototype.setLight=function(e){if(!this._validate(t.validateLight,e))for(var r in e){var n=e[r];t.endsWith(r,\"-transition\")?this._transitionable.setTransition(r.slice(0,-\"-transition\".length),n):this._transitionable.setValue(r,n)}},r.prototype.updateTransitions=function(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)},r.prototype.hasTransition=function(){return this._transitioning.hasTransition()},r.prototype.recalculate=function(t){this.properties=this._transitioning.possiblyEvaluate(t)},r.prototype._validate=function(e,r){return t.emitValidationErrors(this,e.call(t.validateStyle,t.extend({value:r,style:{glyphs:!0,sprite:!0},styleSpec:t.default$5})))},r}(t.Evented),U=function(t,e){this.width=t,this.height=e,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}};U.prototype.getDash=function(t,e){var r=t.join(\",\")+String(e);return this.positions[r]||(this.positions[r]=this.addDash(t,e)),this.positions[r]},U.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o<e.length;o++)a+=e[o];for(var s=this.width/a,l=s/2,c=e.length%2==1,u=-n;u<=n;u++)for(var f=this.nextRow+n+u,h=this.width*f,p=c?-e[e.length-1]:0,d=e[0],g=1,v=0;v<this.width;v++){for(;d<v/s;)p=d,d+=e[g],c&&g===e.length-1&&(d+=e[0]),g++;var m=Math.abs(v-p*s),y=Math.abs(v-d*s),x=Math.min(m,y),b=g%2==1,_=void 0;if(r){var w=n?u/n*(l+1):0;if(b){var k=l-Math.abs(w);_=Math.sqrt(x*x+k*k)}else _=l-Math.sqrt(x*x+w*w)}else _=(b?1:-1)*x;this.data[3+4*(h+v)]=Math.max(0,Math.min(255,_+128))}var A={y:(this.nextRow+n+.5)/this.height,height:2*n/this.height,width:a};return this.nextRow+=i,this.dirty=!0,A},U.prototype.bind=function(t){var e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.RGBA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.width,this.height,0,e.RGBA,e.UNSIGNED_BYTE,this.data))};var q=function e(r,n){this.workerPool=r,this.actors=[],this.currentActor=0,this.id=t.uniqueId();for(var i=this.workerPool.acquire(this.id),a=0;a<i.length;a++){var o=i[a],s=new e.Actor(o,n,this.id);s.name=\"Worker \"+a,this.actors.push(s)}};function H(e,r,n){var i=function(e,r){if(e)return n(e);if(r){var i=t.pick(r,[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\"]);r.vector_layers&&(i.vectorLayers=r.vector_layers,i.vectorLayerIds=i.vectorLayers.map(function(t){return t.id})),n(null,i)}};e.url?t.getJSON(r(b(e.url),t.ResourceType.Source),i):a.frame(function(){return i(null,e)})}q.prototype.broadcast=function(e,r,n){n=n||function(){},t.asyncAll(this.actors,function(t,n){t.send(e,r,n)},n)},q.prototype.send=function(t,e,r,n){return(\"number\"!=typeof n||isNaN(n))&&(n=this.currentActor=(this.currentActor+1)%this.actors.length),this.actors[n].send(t,e,r),n},q.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},q.Actor=t.default$7;var G=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};G.prototype.wrap=function(){return new G(t.wrap(this.lng,-180,180),this.lat)},G.prototype.toArray=function(){return[this.lng,this.lat]},G.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},G.prototype.toBounds=function(t){var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new W(new G(this.lng-r,this.lat-e),new G(this.lng+r,this.lat+e))},G.convert=function(t){if(t instanceof G)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new G(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new G(Number(t.lng),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")};var W=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};W.prototype.setNorthEast=function(t){return this._ne=t instanceof G?new G(t.lng,t.lat):G.convert(t),this},W.prototype.setSouthWest=function(t){return this._sw=t instanceof G?new G(t.lng,t.lat):G.convert(t),this},W.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof G)e=t,r=t;else{if(!(t instanceof W))return Array.isArray(t)?t.every(Array.isArray)?this.extend(W.convert(t)):this.extend(G.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new G(e.lng,e.lat),this._ne=new G(r.lng,r.lat)),this},W.prototype.getCenter=function(){return new G((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},W.prototype.getSouthWest=function(){return this._sw},W.prototype.getNorthEast=function(){return this._ne},W.prototype.getNorthWest=function(){return new G(this.getWest(),this.getNorth())},W.prototype.getSouthEast=function(){return new G(this.getEast(),this.getSouth())},W.prototype.getWest=function(){return this._sw.lng},W.prototype.getSouth=function(){return this._sw.lat},W.prototype.getEast=function(){return this._ne.lng},W.prototype.getNorth=function(){return this._ne.lat},W.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},W.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},W.prototype.isEmpty=function(){return!(this._sw&&this._ne)},W.convert=function(t){return!t||t instanceof W?t:new W(t)};var Y=function(t,e,r){this.bounds=W.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=r||24};Y.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},Y.prototype.contains=function(t){var e=Math.floor(this.lngX(this.bounds.getWest(),t.z)),r=Math.floor(this.latY(this.bounds.getNorth(),t.z)),n=Math.ceil(this.lngX(this.bounds.getEast(),t.z)),i=Math.ceil(this.latY(this.bounds.getSouth(),t.z));return t.x>=e&&t.x<n&&t.y>=r&&t.y<i},Y.prototype.lngX=function(t,e){return(t+180)*(Math.pow(2,e)/360)},Y.prototype.latY=function(e,r){var n=t.clamp(Math.sin(Math.PI/180*e),-.9999,.9999),i=Math.pow(2,r)/(2*Math.PI);return Math.pow(2,r-1)+.5*Math.log((1+n)/(1-n))*-i};var X=function(e){function r(r,n,i,a){if(e.call(this),this.id=r,this.dispatcher=i,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,t.extend(this,t.pick(n,[\"url\",\"scheme\",\"tileSize\"])),this._options=t.extend({type:\"vector\"},n),this._collectResourceTiming=n.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(a)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),H(this._options,this.map._transformRequest,function(r,n){r?e.fire(new t.ErrorEvent(r)):n&&(t.extend(e,n),n.bounds&&(e.tileBounds=new Y(n.bounds,e.minzoom,e.maxzoom)),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})},r.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.serialize=function(){return t.extend({},this._options)},r.prototype.loadTile=function(e,r){var n=k(e.tileID.canonical.url(this.tiles,this.scheme),this.url),i={request:this.map._transformRequest(n,t.ResourceType.Tile),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:a.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};function o(t,n){return e.aborted?r(null):t?r(t):(n&&n.resourceTiming&&(e.resourceTiming=n.resourceTiming),this.map._refreshExpiredTiles&&e.setExpiryData(n),e.loadVectorData(n,this.map.painter),r(null),void(e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)))}i.request.collectResourceTiming=this._collectResourceTiming,void 0===e.workerID||\"expired\"===e.state?e.workerID=this.dispatcher.send(\"loadTile\",i,o.bind(this)):\"loading\"===e.state?e.reloadCallback=r:this.dispatcher.send(\"reloadTile\",i,o.bind(this),e.workerID)},r.prototype.abortTile=function(t){this.dispatcher.send(\"abortTile\",{uid:t.uid,type:this.type,source:this.id},void 0,t.workerID)},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},void 0,t.workerID)},r.prototype.hasTransition=function(){return!1},r}(t.Evented),Z=function(e){function r(r,n,i,a){e.call(this),this.id=r,this.dispatcher=i,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.extend({},n),t.extend(this,t.pick(n,[\"url\",\"scheme\",\"tileSize\"]))}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),H(this._options,this.map._transformRequest,function(r,n){r?e.fire(new t.ErrorEvent(r)):n&&(t.extend(e,n),n.bounds&&(e.tileBounds=new Y(n.bounds,e.minzoom,e.maxzoom)),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.serialize=function(){return t.extend({},this._options)},r.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)},r.prototype.loadTile=function(e,r){var n=this,i=k(e.tileID.canonical.url(this.tiles,this.scheme),this.url,this.tileSize);e.request=t.getImage(this.map._transformRequest(i,t.ResourceType.Tile),function(t,i){if(delete e.request,e.aborted)e.state=\"unloaded\",r(null);else if(t)e.state=\"errored\",r(t);else if(i){n.map._refreshExpiredTiles&&e.setExpiryData(i),delete i.cacheControl,delete i.expires;var a=n.map.painter.context,o=a.gl;e.texture=n.map.painter.getTileTexture(i.width),e.texture?e.texture.update(i,{useMipmap:!0}):(e.texture=new z(a,i,o.RGBA,{useMipmap:!0}),e.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),a.extTextureFilterAnisotropic&&o.texParameterf(o.TEXTURE_2D,a.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,a.extTextureFilterAnisotropicMax)),e.state=\"loaded\",r(null)}})},r.prototype.abortTile=function(t,e){t.request&&(t.request.abort(),delete t.request),e()},r.prototype.unloadTile=function(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e()},r.prototype.hasTransition=function(){return!1},r}(t.Evented),$=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.extend({},n),this.encoding=n.encoding||\"mapbox\"}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.serialize=function(){return{type:\"raster-dem\",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}},r.prototype.loadTile=function(e,r){var n=k(e.tileID.canonical.url(this.tiles,this.scheme),this.url,this.tileSize);e.request=t.getImage(this.map._transformRequest(n,t.ResourceType.Tile),function(t,n){if(delete e.request,e.aborted)e.state=\"unloaded\",r(null);else if(t)e.state=\"errored\",r(t);else if(n){this.map._refreshExpiredTiles&&e.setExpiryData(n),delete n.cacheControl,delete n.expires;var i=a.getImageData(n),o={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:i,encoding:this.encoding};e.workerID&&\"expired\"!==e.state||(e.workerID=this.dispatcher.send(\"loadDEMTile\",o,function(t,n){t&&(e.state=\"errored\",r(t)),n&&(e.dem=n,e.needsHillshadePrepare=!0,e.state=\"loaded\",r(null))}.bind(this)))}}.bind(this)),e.neighboringTiles=this._getNeighboringTiles(e.tileID)},r.prototype._getNeighboringTiles=function(e){var r=e.canonical,n=Math.pow(2,r.z),i=(r.x-1+n)%n,a=0===r.x?e.wrap-1:e.wrap,o=(r.x+1+n)%n,s=r.x+1===n?e.wrap+1:e.wrap,l={};return l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y).key]={backfilled:!1},r.y>0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+1<n&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y+1).key]={backfilled:!1}),l},r.prototype.unloadTile=function(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state=\"unloaded\",this.dispatcher.send(\"removeDEMTile\",{uid:t.uid,source:this.id},void 0,t.workerID)},r}(Z),J=function(e){function r(r,n,i,a){e.call(this),this.id=r,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this.dispatcher=i,this.setEventedParent(a),this._data=n.data,this._options=t.extend({},n),this._collectResourceTiming=n.collectResourceTiming,this._resourceTiming=[],void 0!==n.maxzoom&&(this.maxzoom=n.maxzoom),n.type&&(this.type=n.type);var o=t.default$8/this.tileSize;this.workerOptions=t.extend({source:this.id,cluster:n.cluster||!1,geojsonVtOptions:{buffer:(void 0!==n.buffer?n.buffer:128)*o,tolerance:(void 0!==n.tolerance?n.tolerance:.375)*o,extent:t.default$8,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1},superclusterOptions:{maxZoom:void 0!==n.clusterMaxZoom?Math.min(n.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:t.default$8,radius:(n.clusterRadius||50)*o,log:!1}},n.workerOptions)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData(function(r){if(r)e.fire(new t.ErrorEvent(r));else{var n={dataType:\"source\",sourceDataType:\"metadata\"};e._collectResourceTiming&&e._resourceTiming&&e._resourceTiming.length>0&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}})},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData(function(e){if(e)return r.fire(new t.ErrorEvent(e));var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}),this},r.prototype._updateWorkerData=function(e){var r,n,i=this,a=t.extend({},this.workerOptions),o=this._data;\"string\"==typeof o?(a.request=this.map._transformRequest((r=o,(n=t.default.document.createElement(\"a\")).href=r,n.href),t.ResourceType.Source),a.request.collectResourceTiming=this._collectResourceTiming):a.data=JSON.stringify(o),this.workerID=this.dispatcher.send(this.type+\".\"+a.source+\".loadData\",a,function(t,r){i._removed||r&&r.abandoned||(i._loaded=!0,r&&r.resourceTiming&&r.resourceTiming[i.id]&&(i._resourceTiming=r.resourceTiming[i.id].slice(0)),i.dispatcher.send(i.type+\".\"+a.source+\".coalesce\",null,null,i.workerID),e(t))},this.workerID)},r.prototype.loadTile=function(t,e){var r=this,n=void 0===t.workerID?\"loadTile\":\"reloadTile\",i={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:a.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send(n,i,function(i,a){return t.unloadVectorData(),t.aborted?e(null):i?e(i):(t.loadVectorData(a,r.map.painter,\"reloadTile\"===n),e(null))},this.workerID)},r.prototype.abortTile=function(t){t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},null,t.workerID)},r.prototype.onRemove=function(){this._removed=!0,this.dispatcher.send(\"removeSource\",{type:this.type,source:this.id},null,this.workerID)},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),K=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),Q=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Q.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c<n.length;c++)this.boundPaintVertexBuffers[c]!==n[c]&&(l=!0);var u=!this.vao||this.boundProgram!==e||this.boundLayoutVertexBuffer!==r||l||this.boundIndexBuffer!==i||this.boundVertexOffset!==a||this.boundDynamicVertexBuffer!==o||this.boundDynamicVertexBuffer2!==s;!t.extVertexArrayObject||u?this.freshBind(e,r,n,i,a,o,s):(t.bindVertexArrayOES.set(this.vao),o&&o.bind(),i&&i.dynamicDraw&&i.bind(),s&&s.bind())},Q.prototype.freshBind=function(t,e,r,n,i,a,o){var s,l=t.numAttributes,c=this.context,u=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=r,this.boundIndexBuffer=n,this.boundVertexOffset=i,this.boundDynamicVertexBuffer=a,this.boundDynamicVertexBuffer2=o;else{s=c.currentNumAttributes||0;for(var f=l;f<s;f++)u.disableVertexAttribArray(f)}e.enableAttributes(u,t);for(var h=0,p=r;h<p.length;h+=1)p[h].enableAttributes(u,t);a&&a.enableAttributes(u,t),o&&o.enableAttributes(u,t),e.bind(),e.setVertexAttribPointers(u,t,i);for(var d=0,g=r;d<g.length;d+=1){var v=g[d];v.bind(),v.setVertexAttribPointers(u,t,i)}a&&(a.bind(),a.setVertexAttribPointers(u,t,i)),n&&n.bind(),o&&(o.bind(),o.setVertexAttribPointers(u,t,i)),c.currentNumAttributes=l},Q.prototype.destroy=function(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)};var tt=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._transformRequest(this.url,t.ResourceType.Image),function(r,n){r?e.fire(new t.ErrorEvent(r)):n&&(e.image=a.getImageData(n),e._finishLoading())})},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){this.coordinates=e;var r=this.map,n=e.map(function(t){return r.transform.locationCoordinate(G.convert(t)).zoomTo(0)}),i=this.centerCoord=t.getCoordinatesCenter(n);i.column=Math.floor(i.column),i.row=Math.floor(i.row),this.tileID=new t.CanonicalTileID(i.zoom,i.column,i.row),this.minzoom=this.maxzoom=i.zoom;var a=n.map(function(e){var r=e.zoomTo(i.zoom);return new t.default$1(Math.round((r.column-i.column)*t.default$8),Math.round((r.row-i.row)*t.default$8))});return this._boundsArray=new t.RasterBoundsArray,this._boundsArray.emplaceBack(a[0].x,a[0].y,0,0),this._boundsArray.emplaceBack(a[1].x,a[1].y,t.default$8,0),this._boundsArray.emplaceBack(a[3].x,a[3].y,0,t.default$8),this._boundsArray.emplaceBack(a[2].x,a[2].y,t.default$8,t.default$8),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this},r.prototype.prepare=function(){if(0!==Object.keys(this.tiles).length&&this.image){var t=this.map.painter.context,e=t.gl;for(var r in this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,K.members)),this.boundsVAO||(this.boundsVAO=new Q),this.texture||(this.texture=new z(t,this.image,e.RGBA),this.texture.bind(e.LINEAR,e.CLAMP_TO_EDGE)),this.tiles){var n=this.tiles[r];\"loaded\"!==n.state&&(n.state=\"loaded\",n.texture=this.texture)}}},r.prototype.loadTile=function(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state=\"errored\",e(null))},r.prototype.serialize=function(){return{type:\"image\",url:this.options.url,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return!1},r}(t.Evented),et=function(e){function r(t,r,n,i){e.call(this,t,r,n,i),this.roundZoom=!0,this.type=\"video\",this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){var e=this,r=this.options;this.urls=[];for(var n=0,i=r.urls;n<i.length;n+=1){var a=i[n];e.urls.push(e.map._transformRequest(a,t.ResourceType.Source).url)}t.getVideo(this.urls,function(r,n){r?e.fire(new t.ErrorEvent(r)):n&&(e.video=n,e.video.loop=!0,e.video.addEventListener(\"playing\",function(){e.map._rerender()}),e.map&&e.video.play(),e._finishLoading())})},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var t=this.map.painter.context,e=t.gl;for(var r in this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,K.members)),this.boundsVAO||(this.boundsVAO=new Q),this.texture?this.video.paused||(this.texture.bind(e.LINEAR,e.CLAMP_TO_EDGE),e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,this.video)):(this.texture=new z(t,this.video,e.RGBA),this.texture.bind(e.LINEAR,e.CLAMP_TO_EDGE)),this.tiles){var n=this.tiles[r];\"loaded\"!==n.state&&(n.state=\"loaded\",n.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(tt),rt=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some(function(t){return!Array.isArray(t)||2!==t.length||t.some(function(t){return\"number\"!=typeof t})})||this.fire(new t.ErrorEvent(new t.default$9(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.default$9(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.default$9(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.default.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.default$9(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.default$9(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this.canvas||(this.canvas=this.options.canvas instanceof t.default.HTMLCanvasElement?this.options.canvas:t.default.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map._rerender()},this.pause=function(){this._playing=!1},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,K.members)),this.boundsVAO||(this.boundsVAO=new Q),this.texture?t?this.texture.update(this.canvas):this._playing&&(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.canvas)):(this.texture=new z(e,this.canvas,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];t<e.length;t+=1){var r=e[t];if(isNaN(r)||r<=0)return!0}return!1},r}(tt),nt={vector:X,raster:Z,\"raster-dem\":$,geojson:J,video:et,image:tt,canvas:rt},it=function(e,r,n,i){var a=new nt[r.type](e,r,n,i);if(a.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+a.id);return t.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],a),a};function at(t,e,r,n,i){var a=i.maxPitchScaleFactor(),o=t.tilesIn(r,a);o.sort(ot);for(var s=[],l=0,c=o;l<c.length;l+=1){var u=c[l];s.push({wrappedTileID:u.tileID.wrapped().key,queryResults:u.tile.queryRenderedFeatures(e,u.queryGeometry,u.scale,n,i,a,t.transform.calculatePosMatrix(u.tileID.toUnwrapped()))})}return function(t){for(var e={},r={},n=0,i=t;n<i.length;n+=1){var a=i[n],o=a.queryResults,s=a.wrappedTileID,l=r[s]=r[s]||{};for(var c in o)for(var u=o[c],f=l[c]=l[c]||{},h=e[c]=e[c]||[],p=0,d=u;p<d.length;p+=1){var g=d[p];f[g.featureIndex]||(f[g.featureIndex]=!0,h.push(g.feature))}}return e}(s)}function ot(t,e){var r=t.tileID,n=e.tileID;return r.overscaledZ-n.overscaledZ||r.canonical.y-n.canonical.y||r.wrap-n.wrap||r.canonical.x-n.canonical.x}var st=function(e,r){this.tileID=e,this.uid=t.uniqueId(),this.uses=0,this.tileSize=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.expiredRequestCount=0,this.state=\"loading\"};st.prototype.registerFadeDuration=function(t){var e=t+this.timeAdded;e<a.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e)},st.prototype.wasRequested=function(){return\"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},st.prototype.loadVectorData=function(e,r,n){if(this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e){if(e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(t,e){var r={};if(!e)return r;for(var n=0,i=t;n<i.length;n+=1){var a=i[n],o=a.layerIds.map(function(t){return e.getLayer(t)}).filter(Boolean);if(0!==o.length){a.layers=o;for(var s=0,l=o;s<l.length;s+=1)r[l[s].id]=a}}return r}(e.buckets,r.style),n)for(var i in this.buckets){var a=this.buckets[i];a instanceof t.default$14&&(a.justReloaded=!0)}for(var o in this.queryPadding=0,this.buckets){var s=this.buckets[o];this.queryPadding=Math.max(this.queryPadding,r.style.getLayer(s.layerIds[0]).queryRadius(s))}e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage)}else this.collisionBoxArray=new t.CollisionBoxArray},st.prototype.unloadVectorData=function(){for(var t in this.buckets)this.buckets[t].destroy();this.buckets={},this.iconAtlasTexture&&this.iconAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\"},st.prototype.unloadDEMData=function(){this.dem=null,this.neighboringTiles=null,this.state=\"unloaded\"},st.prototype.getBucket=function(t){return this.buckets[t.id]},st.prototype.upload=function(t){for(var e in this.buckets){var r=this.buckets[e];r.uploaded||(r.upload(t),r.uploaded=!0)}var n=t.gl;this.iconAtlasImage&&(this.iconAtlasTexture=new z(t,this.iconAtlasImage,n.RGBA),this.iconAtlasImage=null),this.glyphAtlasImage&&(this.glyphAtlasTexture=new z(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)},st.prototype.queryRenderedFeatures=function(t,e,r,n,i,a,o){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:e,scale:r,tileSize:this.tileSize,posMatrix:o,transform:i,params:n,queryPadding:this.queryPadding*a},t):{}},st.prototype.querySourceFeatures=function(e,r){if(this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData){var n=this.latestFeatureIndex.loadVTLayers(),i=r?r.sourceLayer:\"\",a=n._geojsonTileLayer||n[i];if(a)for(var o=t.default$13(r&&r.filter),s={z:this.tileID.overscaledZ,x:this.tileID.canonical.x,y:this.tileID.canonical.y},l=0;l<a.length;l++){var c=a.feature(l);if(o(new t.default$16(this.tileID.overscaledZ),c)){var u=new t.default$12(c,s.z,s.x,s.y);u.tile=s,e.push(u)}}}},st.prototype.clearMask=function(){this.segments&&(this.segments.destroy(),delete this.segments),this.maskedBoundsBuffer&&(this.maskedBoundsBuffer.destroy(),delete this.maskedBoundsBuffer),this.maskedIndexBuffer&&(this.maskedIndexBuffer.destroy(),delete this.maskedIndexBuffer)},st.prototype.setMask=function(e,r){if(!t.default$10(this.mask,e)&&(this.mask=e,this.clearMask(),!t.default$10(e,{0:!0}))){var n=new t.RasterBoundsArray,i=new t.TriangleIndexArray;this.segments=new t.default$15,this.segments.prepareSegment(0,n,i);for(var a=Object.keys(e),o=0;o<a.length;o++){var s=e[a[o]],l=t.default$8>>s.z,c=new t.default$1(s.x*l,s.y*l),u=new t.default$1(c.x+l,c.y+l),f=this.segments.prepareSegment(4,n,i);n.emplaceBack(c.x,c.y,c.x,c.y),n.emplaceBack(u.x,c.y,u.x,c.y),n.emplaceBack(c.x,u.y,c.x,u.y),n.emplaceBack(u.x,u.y,u.x,u.y);var h=f.vertexLength;i.emplaceBack(h,h+1,h+2),i.emplaceBack(h+1,h+2,h+3),f.vertexLength+=4,f.primitiveLength+=2}this.maskedBoundsBuffer=r.createVertexBuffer(n,K.members),this.maskedIndexBuffer=r.createIndexBuffer(i)}},st.prototype.hasData=function(){return\"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},st.prototype.setExpiryData=function(e){var r=this.expirationTime;if(e.cacheControl){var n=t.parseCacheControl(e.cacheControl);n[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*n[\"max-age\"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){var i=Date.now(),a=!1;if(this.expirationTime>i)a=!1;else if(r)if(this.expirationTime<r)a=!0;else{var o=this.expirationTime-r;o?this.expirationTime=i+Math.max(o,3e4):a=!0}else a=!0;a?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0}},st.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)};var lt=function(t,e){this.max=t,this.onRemove=e,this.reset()};lt.prototype.reset=function(){for(var t in this.data)for(var e=0,r=this.data[t];e<r.length;e+=1){var n=r[e];n.timeout&&clearTimeout(n.timeout),this.onRemove(n.value)}return this.data={},this.order=[],this},lt.prototype.add=function(t,e,r){var n=this,i=t.wrapped().key;void 0===this.data[i]&&(this.data[i]=[]);var a={value:e,timeout:void 0};if(void 0!==r&&(a.timeout=setTimeout(function(){n.remove(t,a)},r)),this.data[i].push(a),this.order.push(i),this.order.length>this.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},lt.prototype.has=function(t){return t.wrapped().key in this.data},lt.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},lt.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},lt.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},lt.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},lt.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this};var ct=function(t,e,r){this.context=t;var n=t.gl;this.buffer=n.createBuffer(),this.dynamicDraw=Boolean(r),this.unbindVAO(),t.bindElementBuffer.set(this.buffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};ct.prototype.unbindVAO=function(){this.context.extVertexArrayObject&&this.context.bindVertexArrayOES.set(null)},ct.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer)},ct.prototype.updateData=function(t){var e=this.context.gl;this.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)},ct.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer)};var ut={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},ft=function(t,e,r,n){this.length=e.length,this.attributes=r,this.itemSize=e.bytesPerElement,this.dynamicDraw=n,this.context=t;var i=t.gl;this.buffer=i.createBuffer(),t.bindVertexBuffer.set(this.buffer),i.bufferData(i.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?i.DYNAMIC_DRAW:i.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};ft.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer)},ft.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer)},ft.prototype.enableAttributes=function(t,e){for(var r=0;r<this.attributes.length;r++){var n=this.attributes[r],i=e.attributes[n.name];void 0!==i&&t.enableVertexAttribArray(i)}},ft.prototype.setVertexAttribPointers=function(t,e,r){for(var n=0;n<this.attributes.length;n++){var i=this.attributes[n],a=e.attributes[i.name];void 0!==a&&t.vertexAttribPointer(a,i.components,t[ut[i.type]],!1,this.itemSize,i.offset+this.itemSize*(r||0))}},ft.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer)};var ht=function(e){this.context=e,this.current=t.default$6.transparent};ht.prototype.get=function(){return this.current},ht.prototype.set=function(t){var e=this.current;t.r===e.r&&t.g===e.g&&t.b===e.b&&t.a===e.a||(this.context.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t)};var pt=function(t){this.context=t,this.current=1};pt.prototype.get=function(){return this.current},pt.prototype.set=function(t){this.current!==t&&(this.context.gl.clearDepth(t),this.current=t)};var dt=function(t){this.context=t,this.current=0};dt.prototype.get=function(){return this.current},dt.prototype.set=function(t){this.current!==t&&(this.context.gl.clearStencil(t),this.current=t)};var gt=function(t){this.context=t,this.current=[!0,!0,!0,!0]};gt.prototype.get=function(){return this.current},gt.prototype.set=function(t){var e=this.current;t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]||(this.context.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t)};var vt=function(t){this.context=t,this.current=!0};vt.prototype.get=function(){return this.current},vt.prototype.set=function(t){this.current!==t&&(this.context.gl.depthMask(t),this.current=t)};var mt=function(t){this.context=t,this.current=255};mt.prototype.get=function(){return this.current},mt.prototype.set=function(t){this.current!==t&&(this.context.gl.stencilMask(t),this.current=t)};var yt=function(t){this.context=t,this.current={func:t.gl.ALWAYS,ref:0,mask:255}};yt.prototype.get=function(){return this.current},yt.prototype.set=function(t){var e=this.current;t.func===e.func&&t.ref===e.ref&&t.mask===e.mask||(this.context.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t)};var xt=function(t){this.context=t;var e=this.context.gl;this.current=[e.KEEP,e.KEEP,e.KEEP]};xt.prototype.get=function(){return this.current},xt.prototype.set=function(t){var e=this.current;t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]||(this.context.gl.stencilOp(t[0],t[1],t[2]),this.current=t)};var bt=function(t){this.context=t,this.current=!1};bt.prototype.get=function(){return this.current},bt.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t}};var _t=function(t){this.context=t,this.current=[0,1]};_t.prototype.get=function(){return this.current},_t.prototype.set=function(t){var e=this.current;t[0]===e[0]&&t[1]===e[1]||(this.context.gl.depthRange(t[0],t[1]),this.current=t)};var wt=function(t){this.context=t,this.current=!1};wt.prototype.get=function(){return this.current},wt.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t}};var kt=function(t){this.context=t,this.current=t.gl.LESS};kt.prototype.get=function(){return this.current},kt.prototype.set=function(t){this.current!==t&&(this.context.gl.depthFunc(t),this.current=t)};var At=function(t){this.context=t,this.current=!1};At.prototype.get=function(){return this.current},At.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t}};var Mt=function(t){this.context=t;var e=this.context.gl;this.current=[e.ONE,e.ZERO]};Mt.prototype.get=function(){return this.current},Mt.prototype.set=function(t){var e=this.current;t[0]===e[0]&&t[1]===e[1]||(this.context.gl.blendFunc(t[0],t[1]),this.current=t)};var Tt=function(e){this.context=e,this.current=t.default$6.transparent};Tt.prototype.get=function(){return this.current},Tt.prototype.set=function(t){var e=this.current;t.r===e.r&&t.g===e.g&&t.b===e.b&&t.a===e.a||(this.context.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t)};var St=function(t){this.context=t,this.current=null};St.prototype.get=function(){return this.current},St.prototype.set=function(t){this.current!==t&&(this.context.gl.useProgram(t),this.current=t)};var Ct=function(t){this.context=t,this.current=1};Ct.prototype.get=function(){return this.current},Ct.prototype.set=function(e){var r=this.context.lineWidthRange,n=t.clamp(e,r[0],r[1]);this.current!==n&&(this.context.gl.lineWidth(n),this.current=e)};var Et=function(t){this.context=t,this.current=t.gl.TEXTURE0};Et.prototype.get=function(){return this.current},Et.prototype.set=function(t){this.current!==t&&(this.context.gl.activeTexture(t),this.current=t)};var Lt=function(t){this.context=t;var e=this.context.gl;this.current=[0,0,e.drawingBufferWidth,e.drawingBufferHeight]};Lt.prototype.get=function(){return this.current},Lt.prototype.set=function(t){var e=this.current;t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]||(this.context.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t)};var zt=function(t){this.context=t,this.current=null};zt.prototype.get=function(){return this.current},zt.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t}};var Ot=function(t){this.context=t,this.current=null};Ot.prototype.get=function(){return this.current},Ot.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t}};var It=function(t){this.context=t,this.current=null};It.prototype.get=function(){return this.current},It.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t}};var Dt=function(t){this.context=t,this.current=null};Dt.prototype.get=function(){return this.current},Dt.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t}};var Pt=function(t){this.context=t,this.current=null};Pt.prototype.get=function(){return this.current},Pt.prototype.set=function(t){var e=this.context.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t};var Rt=function(t){this.context=t,this.current=null};Rt.prototype.get=function(){return this.current},Rt.prototype.set=function(t){this.current!==t&&this.context.extVertexArrayObject&&(this.context.extVertexArrayObject.bindVertexArrayOES(t),this.current=t)};var Ft=function(t){this.context=t,this.current=4};Ft.prototype.get=function(){return this.current},Ft.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t}};var Bt=function(t){this.context=t,this.current=!1};Bt.prototype.get=function(){return this.current},Bt.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t}};var Nt=function(t,e){this.context=t,this.current=null,this.parent=e};Nt.prototype.get=function(){return this.current};var jt=function(t){function e(e,r){t.call(this,e,r),this.dirty=!1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(this.dirty||this.current!==t){var e=this.context.gl;this.context.bindFramebuffer.set(this.parent),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}},e.prototype.setDirty=function(){this.dirty=!0},e}(Nt),Vt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(this.current!==t){var e=this.context.gl;this.context.bindFramebuffer.set(this.parent),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t}},e}(Nt),Ut=function(t,e,r){this.context=t,this.width=e,this.height=r;var n=t.gl,i=this.framebuffer=n.createFramebuffer();this.colorAttachment=new jt(t,i),this.depthAttachment=new Vt(t,i)};Ut.prototype.destroy=function(){var t=this.context.gl,e=this.colorAttachment.get();e&&t.deleteTexture(e);var r=this.depthAttachment.get();r&&t.deleteRenderbuffer(r),t.deleteFramebuffer(this.framebuffer)};var qt=function(t,e,r){this.func=t,this.mask=e,this.range=r};qt.ReadOnly=!1,qt.ReadWrite=!0,qt.disabled=new qt(519,qt.ReadOnly,[0,1]);var Ht=function(t,e,r,n,i,a){this.test=t,this.ref=e,this.mask=r,this.fail=n,this.depthFail=i,this.pass=a};Ht.disabled=new Ht({func:519,mask:0},0,0,7680,7680,7680);var Gt=function(t,e,r){this.blendFunction=t,this.blendColor=e,this.mask=r};Gt.disabled=new Gt(Gt.Replace=[1,0],t.default$6.transparent,[!1,!1,!1,!1]),Gt.unblended=new Gt(Gt.Replace,t.default$6.transparent,[!0,!0,!0,!0]),Gt.alphaBlended=new Gt([1,771],t.default$6.transparent,[!0,!0,!0,!0]);var Wt=function(t){this.gl=t,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.lineWidthRange=t.getParameter(t.ALIASED_LINE_WIDTH_RANGE),this.clearColor=new ht(this),this.clearDepth=new pt(this),this.clearStencil=new dt(this),this.colorMask=new gt(this),this.depthMask=new vt(this),this.stencilMask=new mt(this),this.stencilFunc=new yt(this),this.stencilOp=new xt(this),this.stencilTest=new bt(this),this.depthRange=new _t(this),this.depthTest=new wt(this),this.depthFunc=new kt(this),this.blend=new At(this),this.blendFunc=new Mt(this),this.blendColor=new Tt(this),this.program=new St(this),this.lineWidth=new Ct(this),this.activeTexture=new Et(this),this.viewport=new Lt(this),this.bindFramebuffer=new zt(this),this.bindRenderbuffer=new Ot(this),this.bindTexture=new It(this),this.bindVertexBuffer=new Dt(this),this.bindElementBuffer=new Pt(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new Rt(this),this.pixelStoreUnpack=new Ft(this),this.pixelStoreUnpackPremultiplyAlpha=new Bt(this),this.extTextureFilterAnisotropic=t.getExtension(\"EXT_texture_filter_anisotropic\")||t.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||t.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureHalfFloat=t.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&t.getExtension(\"OES_texture_half_float_linear\")};Wt.prototype.createIndexBuffer=function(t,e){return new ct(this,t,e)},Wt.prototype.createVertexBuffer=function(t,e,r){return new ft(this,t,e,r)},Wt.prototype.createRenderbuffer=function(t,e,r){var n=this.gl,i=n.createRenderbuffer();return this.bindRenderbuffer.set(i),n.renderbufferStorage(n.RENDERBUFFER,t,e,r),this.bindRenderbuffer.set(null),i},Wt.prototype.createFramebuffer=function(t,e){return new Ut(this,t,e)},Wt.prototype.clear=function(t){var e=t.color,r=t.depth,n=this.gl,i=0;e&&(i|=n.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==r&&(i|=n.DEPTH_BUFFER_BIT,this.clearDepth.set(r),this.depthMask.set(!0)),n.clear(i)},Wt.prototype.setDepthMode=function(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1)},Wt.prototype.setStencilMode=function(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1)},Wt.prototype.setColorMode=function(e){t.default$10(e.blendFunction,Gt.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask)};var Yt=function(e){function r(t,r,n){var i=this;e.call(this),this.id=t,this.dispatcher=n,this.on(\"data\",function(t){\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(i._sourceLoaded=!0),i._sourceLoaded&&!i._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(i.reload(),i.transform&&i.update(i.transform))}),this.on(\"error\",function(){i._sourceErrored=!0}),this._source=it(t,r,n,this),this._tiles={},this._cache=new lt(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._isIdRenderable=this._isIdRenderable.bind(this),this._coveredTiles={}}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.onAdd=function(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t)},r.prototype.onRemove=function(t){this._source&&this._source.onRemove&&this._source.onRemove(t)},r.prototype.loaded=function(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;for(var t in this._tiles){var e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return!1}return!0},r.prototype.getSource=function(){return this._source},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){if(this._paused){var t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform)}},r.prototype._loadTile=function(t,e){return this._source.loadTile(t,e)},r.prototype._unloadTile=function(t){if(this._source.unloadTile)return this._source.unloadTile(t,function(){})},r.prototype._abortTile=function(t){if(this._source.abortTile)return this._source.abortTile(t,function(){})},r.prototype.serialize=function(){return this._source.serialize()},r.prototype.prepare=function(t){for(var e in this._source.prepare&&this._source.prepare(),this._tiles)this._tiles[e].upload(t)},r.prototype.getIds=function(){var e=this;return Object.keys(this._tiles).map(Number).sort(function(r,n){var i=e._tiles[r].tileID,a=e._tiles[n].tileID,o=new t.default$1(i.canonical.x,i.canonical.y).rotate(e.transform.angle),s=new t.default$1(a.canonical.x,a.canonical.y).rotate(e.transform.angle);return i.overscaledZ-a.overscaledZ||s.y-o.y||s.x-o.x})},r.prototype.getRenderableIds=function(){return this.getIds().filter(this._isIdRenderable)},r.prototype.hasRenderableParent=function(t){var e=this.findLoadedParent(t,0,{});return!!e&&this._isIdRenderable(e.tileID.key)},r.prototype._isIdRenderable=function(t){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]},r.prototype.reload=function(){if(this._paused)this._shouldReloadOnResume=!0;else for(var t in this._cache.reset(),this._tiles)this._reloadTile(t,\"reloading\")},r.prototype._reloadTile=function(t,e){var r=this._tiles[t];r&&(\"loading\"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)))},r.prototype._tileLoaded=function(e,r,n,i){if(i)return e.state=\"errored\",void(404!==i.status?this._source.fire(new t.ErrorEvent(i,{tile:e})):this.update(this.transform));e.timeAdded=a.now(),\"expired\"===n&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(r,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._source.fire(new t.Event(\"data\",{dataType:\"source\",tile:e,coord:e.tileID})),this.map&&(this.map.painter.tileExtentVAO.vao=null)},r.prototype._backfillDEM=function(t){for(var e=this.getRenderableIds(),r=0;r<e.length;r++){var n=e[r];if(t.neighboringTiles&&t.neighboringTiles[n]){var i=this.getTileByID(n);a(t,i),a(i,t)}}function a(t,e){t.needsHillshadePrepare=!0;var r=e.tileID.canonical.x-t.tileID.canonical.x,n=e.tileID.canonical.y-t.tileID.canonical.y,i=Math.pow(2,t.tileID.canonical.z),a=e.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype.getZoom=function(t){return t.zoom+t.scaleZoom(t.tileSize/this._source.tileSize)},r.prototype._findLoadedChildren=function(t,e,r){var n=!1;for(var i in this._tiles){var a=this._tiles[i];if(!(r[i]||!a.hasData()||a.tileID.overscaledZ<=t.overscaledZ||a.tileID.overscaledZ>e)){var o=Math.pow(2,a.tileID.canonical.z-t.canonical.z);if(Math.floor(a.tileID.canonical.x/o)===t.canonical.x&&Math.floor(a.tileID.canonical.y/o)===t.canonical.y)for(r[i]=a.tileID,n=!0;a&&a.tileID.overscaledZ-1>t.overscaledZ;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);if(!s)break;(a=this._tiles[s.key])&&a.hasData()&&(delete r[i],r[s.key]=s)}}}return n},r.prototype.findLoadedParent=function(t,e,r){for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n);if(!i)return;var a=String(i.key),o=this._tiles[a];if(o&&o.hasData())return r[a]=i,o;if(this._cache.has(i))return r[a]=i,this._cache.get(i)}},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(t){return n._source.hasTile(t)}))):i=[];var o,s=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),l=Math.max(s-r.maxOverzooming,this._source.minzoom),c=Math.max(s+r.maxUnderzooming,this._source.minzoom),u=this._updateRetainedTiles(i,s),f={};if(Zt(this._source.type))for(var h=Object.keys(u),p=0;p<h.length;p++){var d=h[p],g=u[d],v=n._tiles[d];if(v&&(void 0===v.fadeEndTime||v.fadeEndTime>=a.now())){n._findLoadedChildren(g,c,u)&&(u[d]=g);var m=n.findLoadedParent(g,l,f);m&&n._addTile(m.tileID)}}for(o in f)u[o]||(n._coveredTiles[o]=!0);for(o in f)u[o]=f[o];for(var y=t.keysDifference(this._tiles,u),x=0;x<y.length;x++)n._removeTile(y[x])}},r.prototype._updateRetainedTiles=function(t,e){for(var n={},i={},a=Math.max(e-r.maxOverzooming,this._source.minzoom),o=Math.max(e+r.maxUnderzooming,this._source.minzoom),s=0;s<t.length;s++){var l=t[s],c=this._addTile(l),u=!1;if(c.hasData())n[l.key]=l;else{u=c.wasRequested(),n[l.key]=l;var f=!0;if(e+1>this._source.maxzoom){var h=l.children(this._source.maxzoom)[0],p=this.getTile(h);p&&p.hasData()?n[h.key]=h:f=!1}else{this._findLoadedChildren(l,o,n);for(var d=l.children(this._source.maxzoom),g=0;g<d.length;g++)if(!n[d[g].key]){f=!1;break}}if(!f)for(var v=l.overscaledZ-1;v>=a;--v){var m=l.scaledTo(v);if(i[m.key])break;if(i[m.key]=!0,!(c=this.getTile(m))&&u&&(c=this._addTile(m)),c&&(n[m.key]=m,u=c.wasRequested(),c.hasData()))break}}}return n},r.prototype._addTile=function(e){var r=this._tiles[e.key];if(r)return r;(r=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,r),r.tileID=e);var n=Boolean(r);return n||(r=new st(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(r,this._tileLoaded.bind(this,r,e.key,r.state))),r?(r.uses++,this._tiles[e.key]=r,n||this._source.fire(new t.Event(\"dataloading\",{tile:r,coord:r.tileID,dataType:\"source\"})),r):null},r.prototype._setTileReloadTimer=function(t,e){var r=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var n=e.getExpiryTimeout();n&&(this._timers[t]=setTimeout(function(){r._reloadTile(t,\"expired\"),delete r._timers[t]},n))},r.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r){for(var n=[],i=this.getIds(),a=1/0,o=1/0,s=-1/0,l=-1/0,c=e[0].zoom,u=0;u<e.length;u++){var f=e[u];a=Math.min(a,f.column),o=Math.min(o,f.row),s=Math.max(s,f.column),l=Math.max(l,f.row)}for(var h=0;h<i.length;h++){var p=this._tiles[i[h]],d=p.tileID,g=Math.pow(2,this.transform.zoom-p.tileID.overscaledZ),v=r*p.queryPadding*t.default$8/p.tileSize/g,m=[Xt(d,new t.default$17(a,o,c)),Xt(d,new t.default$17(s,l,c))];if(m[0].x-v<t.default$8&&m[0].y-v<t.default$8&&m[1].x+v>=0&&m[1].y+v>=0){for(var y=[],x=0;x<e.length;x++)y.push(Xt(d,e[x]));n.push({tile:p,tileID:d,queryGeometry:[y],scale:g})}}return n},r.prototype.getVisibleCoordinates=function(){for(var t=this,e=this.getRenderableIds().map(function(e){return t._tiles[e].tileID}),r=0,n=e;r<n.length;r+=1){var i=n[r];i.posMatrix=t.transform.calculatePosMatrix(i.toUnwrapped())}return e},r.prototype.hasTransition=function(){if(this._source.hasTransition())return!0;if(Zt(this._source.type))for(var t in this._tiles){var e=this._tiles[t];if(void 0!==e.fadeEndTime&&e.fadeEndTime>=a.now())return!0}return!1},r}(t.Evented);function Xt(e,r){var n=r.zoomTo(e.canonical.z);return new t.default$1((n.column-(e.canonical.x+e.wrap*Math.pow(2,e.canonical.z)))*t.default$8,(n.row-e.canonical.y)*t.default$8)}function Zt(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function $t(){return new t.default.Worker(Cn.workerUrl)}Yt.maxOverzooming=10,Yt.maxUnderzooming=3;var Jt,Kt=function(){this.active={}};function Qt(e,r){var n={};for(var i in e)\"ref\"!==i&&(n[i]=e[i]);return t.default$18.forEach(function(t){t in r&&(n[t]=r[t])}),n}function te(t){t=t.slice();for(var e=Object.create(null),r=0;r<t.length;r++)e[t[r].id]=t[r];for(var n=0;n<t.length;n++)\"ref\"in t[n]&&(t[n]=Qt(t[n],e[t[n].ref]));return t}Kt.prototype.acquire=function(t){if(!this.workers){var e=Cn.workerCount;for(this.workers=[];this.workers.length<e;)this.workers.push(new $t)}return this.active[t]=!0,this.workers.slice()},Kt.prototype.release=function(t){delete this.active[t],0===Object.keys(this.active).length&&(this.workers.forEach(function(t){t.terminate()}),this.workers=null)};var ee={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};function re(t,e,r){r.push({command:ee.addSource,args:[t,e[t]]})}function ne(t,e,r){e.push({command:ee.removeSource,args:[t]}),r[t]=!0}function ie(t,e,r,n){ne(t,r,n),re(t,e,r)}function ae(e,r,n){var i;for(i in e[n])if(e[n].hasOwnProperty(i)&&\"data\"!==i&&!t.default$10(e[n][i],r[n][i]))return!1;for(i in r[n])if(r[n].hasOwnProperty(i)&&\"data\"!==i&&!t.default$10(e[n][i],r[n][i]))return!1;return!0}function oe(e,r,n,i,a,o){var s;for(s in r=r||{},e=e||{})e.hasOwnProperty(s)&&(t.default$10(e[s],r[s])||n.push({command:o,args:[i,s,r[s],a]}));for(s in r)r.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(t.default$10(e[s],r[s])||n.push({command:o,args:[i,s,r[s],a]}))}function se(t){return t.id}function le(t,e){return t[e.id]=e,t}var ce=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a<this.xCellCount*this.yCellCount;a++)n.push([]),i.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0};ce.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},ce.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},ce.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},ce.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},ce.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},ce.prototype._query=function(t,e,r,n,i){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var a=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var o=0;o<this.boxKeys.length;o++)a.push({key:this.boxKeys[o],x1:this.bboxes[4*o],y1:this.bboxes[4*o+1],x2:this.bboxes[4*o+2],y2:this.bboxes[4*o+3]});for(var s=0;s<this.circleKeys.length;s++){var l=this.circles[3*s],c=this.circles[3*s+1],u=this.circles[3*s+2];a.push({key:this.circleKeys[s],x1:l-u,y1:c-u,x2:l+u,y2:c+u})}}else{var f={hitTest:i,seenUids:{box:{},circle:{}}};this._forEachCell(t,e,r,n,this._queryCell,a,f)}return i?a.length>0:a},ce.prototype._queryCircle=function(t,e,r,n){var i=t-r,a=t+r,o=e-r,s=e+r;if(a<0||i>this.width||s<0||o>this.height)return!n&&[];var l=[],c={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(i,o,a,s,this._queryCellCircle,l,c),n?l.length>0:l},ce.prototype.query=function(t,e,r,n){return this._query(t,e,r,n,!1)},ce.prototype.hitTest=function(t,e,r,n){return this._query(t,e,r,n,!0)},ce.prototype.hitTestCircle=function(t,e,r){return this._queryCircle(t,e,r,!0)},ce.prototype._queryCell=function(t,e,r,n,i,a,o){var s=o.seenUids,l=this.boxCells[i];if(null!==l)for(var c=this.bboxes,u=0,f=l;u<f.length;u+=1){var h=f[u];if(!s.box[h]){s.box[h]=!0;var p=4*h;if(t<=c[p+2]&&e<=c[p+3]&&r>=c[p+0]&&n>=c[p+1]){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[h],x1:c[p],y1:c[p+1],x2:c[p+2],y2:c[p+3]})}}}var d=this.circleCells[i];if(null!==d)for(var g=this.circles,v=0,m=d;v<m.length;v+=1){var y=m[v];if(!s.circle[y]){s.circle[y]=!0;var x=3*y;if(this._circleAndRectCollide(g[x],g[x+1],g[x+2],t,e,r,n)){if(o.hitTest)return a.push(!0),!0;var b=g[x],_=g[x+1],w=g[x+2];a.push({key:this.circleKeys[y],x1:b-w,y1:_-w,x2:b+w,y2:_+w})}}}},ce.prototype._queryCellCircle=function(t,e,r,n,i,a,o){var s=o.circle,l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f<h.length;f+=1){var p=h[f];if(!l.box[p]){l.box[p]=!0;var d=4*p;if(this._circleAndRectCollide(s.x,s.y,s.radius,u[d+0],u[d+1],u[d+2],u[d+3]))return a.push(!0),!0}}var g=this.circleCells[i];if(null!==g)for(var v=this.circles,m=0,y=g;m<y.length;m+=1){var x=y[m];if(!l.circle[x]){l.circle[x]=!0;var b=3*x;if(this._circlesCollide(v[b],v[b+1],v[b+2],s.x,s.y,s.radius))return a.push(!0),!0}}},ce.prototype._forEachCell=function(t,e,r,n,i,a,o){for(var s=this._convertToXCellCoord(t),l=this._convertToYCellCoord(e),c=this._convertToXCellCoord(r),u=this._convertToYCellCoord(n),f=s;f<=c;f++)for(var h=l;h<=u;h++){var p=this.xCellCount*h+f;if(i.call(this,t,e,r,n,p,a,o))return}},ce.prototype._convertToXCellCoord=function(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))},ce.prototype._convertToYCellCoord=function(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))},ce.prototype._circlesCollide=function(t,e,r,n,i,a){var o=n-t,s=i-e,l=r+a;return l*l>o*o+s*s},ce.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ue=t.default$19.layout;function fe(e,r,n,i,a){var o=t.mat4.identity(new Float32Array(16));return r?(t.mat4.identity(o),t.mat4.scale(o,o,[1/a,1/a,1]),n||t.mat4.rotateZ(o,o,i.angle)):(t.mat4.scale(o,o,[i.width/2,-i.height/2,1]),t.mat4.translate(o,o,[1,-1,0]),t.mat4.multiply(o,o,e)),o}function he(e,r,n,i,a){var o=t.mat4.identity(new Float32Array(16));return r?(t.mat4.multiply(o,o,e),t.mat4.scale(o,o,[a,a,1]),n||t.mat4.rotateZ(o,o,-i.angle)):(t.mat4.scale(o,o,[1,-1,1]),t.mat4.translate(o,o,[-1,-1,0]),t.mat4.scale(o,o,[2/i.width,2/i.height,1])),o}function pe(e,r){var n=[e.x,e.y,0,1];ke(n,n,r);var i=n[3];return{point:new t.default$1(n[0]/i,n[1]/i),signedDistanceFromCamera:i}}function de(t,e){var r=t[0]/t[3],n=t[1]/t[3];return r>=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ge(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom,ue.properties[i?\"text-size\":\"icon-size\"]),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,v=!1,m=0;m<d.length;m++){var y=d.get(m);if(y.hidden||y.writingMode===t.WritingMode.vertical&&!v)we(y.numGlyphs,h);else{v=!1;var x=[y.anchorX,y.anchorY,0,1];if(t.vec4.transformMat4(x,x,r),de(x,f)){var b=.5+x[3]/n.transform.cameraToCenterDistance*.5,_=t.evaluateSizeForFeature(c,u,y),w=s?_*b:_/b,k=new t.default$1(y.anchorX,y.anchorY),A=pe(k,a).point,M={},T=ye(y,w,!1,l,r,a,o,e.glyphOffsetArray,p,h,A,k,M,g);v=T.useVertical,(T.notEnoughRoom||v||T.needsFlipping&&ye(y,w,!0,l,r,a,o,e.glyphOffsetArray,p,h,A,k,M,g).notEnoughRoom)&&we(y.numGlyphs,h)}else we(y.numGlyphs,h)}}i?e.text.dynamicLayoutVertexBuffer.updateData(h):e.icon.dynamicLayoutVertexBuffer.updateData(h)}function ve(t,e,r,n,i,a,o,s,l,c,u,f){var h=s.glyphStartIndex+s.numGlyphs,p=s.lineStartIndex,d=s.lineStartIndex+s.lineLength,g=e.getoffsetX(s.glyphStartIndex),v=e.getoffsetX(h-1),m=be(t*g,r,n,i,a,o,s.segment,p,d,l,c,u,f);if(!m)return null;var y=be(t*v,r,n,i,a,o,s.segment,p,d,l,c,u,f);return y?{first:m,last:y}:null}function me(e,r,n,i){return e===t.WritingMode.horizontal&&Math.abs(n.y-r.y)>Math.abs(n.x-r.x)*i?{useVertical:!0}:(e===t.WritingMode.vertical?r.y<n.y:r.x>n.x)?{needsFlipping:!0}:null}function ye(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,v=r/24,m=e.lineOffsetX*r,y=e.lineOffsetY*r;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ve(v,l,m,y,n,f,h,e,c,o,p,!1);if(!w)return{notEnoughRoom:!0};var k=pe(w.first.point,s).point,A=pe(w.last.point,s).point;if(i&&!n){var M=me(e.writingMode,k,A,d);if(M)return M}g=[w.first];for(var T=e.glyphStartIndex+1;T<x-1;T++)g.push(be(v*l.getoffsetX(T),m,y,n,f,h,e.segment,b,_,c,o,p,!1));g.push(w.last)}else{if(i&&!n){var S=pe(h,a).point,C=e.lineStartIndex+e.segment+1,E=new t.default$1(c.getx(C),c.gety(C)),L=pe(E,a),z=L.signedDistanceFromCamera>0?L.point:xe(h,E,S,1,a),O=me(e.writingMode,S,z,d);if(O)return O}var I=be(v*l.getoffsetX(e.glyphStartIndex),m,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p,!1);if(!I)return{notEnoughRoom:!0};g=[I]}for(var D=0,P=g;D<P.length;D+=1){var R=P[D];t.addDynamicAttributes(u,R.point,R.angle)}return{}}function xe(t,e,r,n,i){var a=pe(t.add(t.sub(e)._unit()),i).point,o=r.sub(a);return r.add(o._mult(n/o.mag()))}function be(e,r,n,i,a,o,s,l,c,u,f,h,p){var d=i?e-r:e+r,g=d>0?1:-1,v=0;i&&(g*=-1,v=Math.PI),g<0&&(v+=Math.PI);for(var m=g>0?l+s:l+s+1,y=m,x=a,b=a,_=0,w=0,k=Math.abs(d);_+w<=k;){if((m+=g)<l||m>=c)return null;if(b=x,void 0===(x=h[m])){var A=new t.default$1(u.getx(m),u.gety(m)),M=pe(A,f);if(M.signedDistanceFromCamera>0)x=h[m]=M.point;else{var T=m-g;x=xe(0===_?o:new t.default$1(u.getx(T),u.gety(T)),A,b,k-_+1,f)}}_+=w,w=b.dist(x)}var S=(k-_)/w,C=x.sub(b),E=C.mult(S)._add(b);return E._add(C._unit()._perp()._mult(n*g)),{point:E,angle:v+Math.atan2(x.y-b.y,x.x-b.x),tileDistance:p?{prevTileDistance:m-g===y?0:u.gettileUnitDistanceFromAnchor(m-g),lastSegmentViewportDistance:k-_}:null}}var _e=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function we(t,e){for(var r=0;r<t;r++){var n=e.length;e.resize(n+4),e.float32.set(_e,3*n)}}function ke(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t[3]=r[3]*n+r[7]*i+r[15],t}t.default$20.mat4;var Ae=function(t,e,r){void 0===e&&(e=new ce(t.width+200,t.height+200,25)),void 0===r&&(r=new ce(t.width+200,t.height+200,25)),this.transform=t,this.grid=e,this.ignoredGrid=r,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+100,this.screenBottomBoundary=t.height+100};function Me(t,e,r){t[e+4]=r?1:0}function Te(e,r,n){return r*(t.default$8/(e.tileSize*Math.pow(2,n-e.tileID.overscaledZ)))}Ae.prototype.placeCollisionBox=function(t,e,r,n){var i=this.projectAndGetPerspectiveRatio(n,t.anchorPointX,t.anchorPointY),a=r*i.perspectiveRatio,o=t.x1*a+i.point.x,s=t.y1*a+i.point.y,l=t.x2*a+i.point.x,c=t.y2*a+i.point.y;return!e&&this.grid.hitTest(o,s,l,c)?{box:[],offscreen:!1}:{box:[o,s,l,c],offscreen:this.isOffscreen(o,s,l,c)}},Ae.prototype.approximateTileDistance=function(t,e,r,n,i){var a=i?1:n/this.pitchfactor,o=t.lastSegmentViewportDistance*r;return t.prevTileDistance+o+(a-1)*o*Math.abs(Math.sin(e))},Ae.prototype.placeCollisionCircles=function(e,r,n,i,a,o,s,l,c,u,f,h,p){var d=[],g=this.projectAnchor(u,o.anchorX,o.anchorY),v=c/24,m=o.lineOffsetX*c,y=o.lineOffsetY*c,x=new t.default$1(o.anchorX,o.anchorY),b=ve(v,l,m,y,!1,pe(x,f).point,x,o,s,f,{},!0),_=!1,w=!0,k=g.perspectiveRatio*i,A=1/(i*n),M=0,T=0;b&&(M=this.approximateTileDistance(b.first.tileDistance,b.first.angle,A,g.cameraDistance,p),T=this.approximateTileDistance(b.last.tileDistance,b.last.angle,A,g.cameraDistance,p));for(var S=0;S<e.length;S+=5){var C=e[S],E=e[S+1],L=e[S+2],z=e[S+3];if(!b||z<-M||z>T)Me(e,S,!1);else{var O=this.projectPoint(u,C,E),I=L*k;if(d.length>0){var D=O.x-d[d.length-4],P=O.y-d[d.length-3];if(I*I*2>D*D+P*P&&S+8<e.length){var R=e[S+8];if(R>-M&&R<T){Me(e,S,!1);continue}}}var F=S/5;if(d.push(O.x,O.y,I,F),Me(e,S,!0),w=w&&this.isOffscreen(O.x-I,O.y-I,O.x+I,O.y+I),!r&&this.grid.hitTestCircle(O.x,O.y,I)){if(!h)return{circles:[],offscreen:!1};_=!0}}}return{circles:_?[]:d,offscreen:w}},Ae.prototype.queryRenderedSymbols=function(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};for(var r=[],n=1/0,i=1/0,a=-1/0,o=-1/0,s=0,l=e;s<l.length;s+=1){var c=l[s],u=new t.default$1(c.x+100,c.y+100);n=Math.min(n,u.x),i=Math.min(i,u.y),a=Math.max(a,u.x),o=Math.max(o,u.y),r.push(u)}for(var f={},h={},p=0,d=this.grid.query(n,i,a,o).concat(this.ignoredGrid.query(n,i,a,o));p<d.length;p+=1){var g=d[p],v=g.key;if(void 0===f[v.bucketInstanceId]&&(f[v.bucketInstanceId]={}),!f[v.bucketInstanceId][v.featureIndex]){var m=[new t.default$1(g.x1,g.y1),new t.default$1(g.x2,g.y1),new t.default$1(g.x2,g.y2),new t.default$1(g.x1,g.y2)];t.polygonIntersectsPolygon(r,m)&&(f[v.bucketInstanceId][v.featureIndex]=!0,void 0===h[v.bucketInstanceId]&&(h[v.bucketInstanceId]=[]),h[v.bucketInstanceId].push(v.featureIndex))}}return h},Ae.prototype.insertCollisionBox=function(t,e,r,n){var i={bucketInstanceId:r,featureIndex:n};(e?this.ignoredGrid:this.grid).insert(i,t[0],t[1],t[2],t[3])},Ae.prototype.insertCollisionCircles=function(t,e,r,n){for(var i=e?this.ignoredGrid:this.grid,a={bucketInstanceId:r,featureIndex:n},o=0;o<t.length;o+=4)i.insertCircle(a,t[o],t[o+1],t[o+2])},Ae.prototype.projectAnchor=function(t,e,r){var n=[e,r,0,1];return ke(n,n,t),{perspectiveRatio:.5+this.transform.cameraToCenterDistance/n[3]*.5,cameraDistance:n[3]}},Ae.prototype.projectPoint=function(e,r,n){var i=[r,n,0,1];return ke(i,i,e),new t.default$1((i[0]/i[3]+1)/2*this.transform.width+100,(-i[1]/i[3]+1)/2*this.transform.height+100)},Ae.prototype.projectAndGetPerspectiveRatio=function(e,r,n){var i=[r,n,0,1];return ke(i,i,e),{point:new t.default$1((i[0]/i[3]+1)/2*this.transform.width+100,(-i[1]/i[3]+1)/2*this.transform.height+100),perspectiveRatio:.5+this.transform.cameraToCenterDistance/i[3]*.5}},Ae.prototype.isOffscreen=function(t,e,r,n){return r<100||t>=this.screenRightBoundary||n<100||e>this.screenBottomBoundary};var Se=t.default$19.layout,Ce=function(t,e,r,n){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):n&&r?1:0,this.placed=r};Ce.prototype.isHidden=function(){return 0===this.opacity&&!this.placed};var Ee=function(t,e,r,n,i){this.text=new Ce(t?t.text:null,e,r,i),this.icon=new Ce(t?t.icon:null,e,n,i)};Ee.prototype.isHidden=function(){return this.text.isHidden()&&this.icon.isHidden()};var Le=function(t,e,r){this.text=t,this.icon=e,this.skipFade=r},ze=function(t,e){this.transform=t.clone(),this.collisionIndex=new Ae(this.transform),this.placements={},this.opacities={},this.stale=!1,this.fadeDuration=e,this.retainedQueryData={}};function Oe(t,e,r){t.emplaceBack(e?1:0,r?1:0),t.emplaceBack(e?1:0,r?1:0),t.emplaceBack(e?1:0,r?1:0),t.emplaceBack(e?1:0,r?1:0)}ze.prototype.placeLayerTile=function(e,r,n,i){var a=r.getBucket(e),o=r.latestFeatureIndex;if(a&&o&&e.id===a.layerIds[0]){var s=r.collisionBoxArray,l=a.layers[0].layout,c=Math.pow(2,this.transform.zoom-r.tileID.overscaledZ),u=r.tileSize/t.default$8,f=this.transform.calculatePosMatrix(r.tileID.toUnwrapped()),h=fe(f,\"map\"===l.get(\"text-pitch-alignment\"),\"map\"===l.get(\"text-rotation-alignment\"),this.transform,Te(r,1,this.transform.zoom)),p=fe(f,\"map\"===l.get(\"icon-pitch-alignment\"),\"map\"===l.get(\"icon-rotation-alignment\"),this.transform,Te(r,1,this.transform.zoom));this.retainedQueryData[a.bucketInstanceId]=new function(t,e,r,n,i){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=r,this.bucketIndex=n,this.tileID=i}(a.bucketInstanceId,o,a.sourceLayerIndex,a.index,r.tileID),this.placeLayerBucket(a,f,h,p,c,u,n,i,s)}},ze.prototype.placeLayerBucket=function(e,r,n,i,a,o,s,l,c){for(var u=e.layers[0].layout,f=t.evaluateSizeForZoom(e.textSizeData,this.transform.zoom,Se.properties[\"text-size\"]),h=!e.hasTextData()||u.get(\"text-optional\"),p=!e.hasIconData()||u.get(\"icon-optional\"),d=0,g=e.symbolInstances;d<g.length;d+=1){var v=g[d];if(!l[v.crossTileID]){var m=void 0!==v.feature.text,y=void 0!==v.feature.icon,x=!0,b=null,_=null,w=null,k=0,A=0;v.collisionArrays||(v.collisionArrays=e.deserializeCollisionBoxes(c,v.textBoxStartIndex,v.textBoxEndIndex,v.iconBoxStartIndex,v.iconBoxEndIndex)),v.collisionArrays.textFeatureIndex&&(k=v.collisionArrays.textFeatureIndex),v.collisionArrays.textBox&&(m=(b=this.collisionIndex.placeCollisionBox(v.collisionArrays.textBox,u.get(\"text-allow-overlap\"),o,r)).box.length>0,x=x&&b.offscreen);var M=v.collisionArrays.textCircles;if(M){var T=e.text.placedSymbolArray.get(v.placedTextSymbolIndices[0]),S=t.evaluateSizeForFeature(e.textSizeData,f,T);_=this.collisionIndex.placeCollisionCircles(M,u.get(\"text-allow-overlap\"),a,o,v.key,T,e.lineVertexArray,e.glyphOffsetArray,S,r,n,s,\"map\"===u.get(\"text-pitch-alignment\")),m=u.get(\"text-allow-overlap\")||_.circles.length>0,x=x&&_.offscreen}v.collisionArrays.iconFeatureIndex&&(A=v.collisionArrays.iconFeatureIndex),v.collisionArrays.iconBox&&(y=(w=this.collisionIndex.placeCollisionBox(v.collisionArrays.iconBox,u.get(\"icon-allow-overlap\"),o,r)).box.length>0,x=x&&w.offscreen),h||p?p?h||(y=y&&m):m=y&&m:y=m=y&&m,m&&b&&this.collisionIndex.insertCollisionBox(b.box,u.get(\"text-ignore-placement\"),e.bucketInstanceId,k),y&&w&&this.collisionIndex.insertCollisionBox(w.box,u.get(\"icon-ignore-placement\"),e.bucketInstanceId,A),m&&_&&this.collisionIndex.insertCollisionCircles(_.circles,u.get(\"text-ignore-placement\"),e.bucketInstanceId,k),this.placements[v.crossTileID]=new Le(m,y,x||e.justReloaded),l[v.crossTileID]=!0}}e.justReloaded=!1},ze.prototype.commit=function(t,e){this.commitTime=e;var r=!1,n=t&&0!==this.fadeDuration?(this.commitTime-t.commitTime)/this.fadeDuration:1,i=t?t.opacities:{};for(var a in this.placements){var o=this.placements[a],s=i[a];s?(this.opacities[a]=new Ee(s,n,o.text,o.icon),r=r||o.text!==s.text.placed||o.icon!==s.icon.placed):(this.opacities[a]=new Ee(null,n,o.text,o.icon,o.skipFade),r=r||o.text||o.icon)}for(var l in i){var c=i[l];if(!this.opacities[l]){var u=new Ee(c,n,!1,!1);u.isHidden()||(this.opacities[l]=u,r=r||c.text.placed||c.icon.placed)}}r?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)},ze.prototype.updateLayerOpacities=function(t,e){for(var r={},n=0,i=e;n<i.length;n+=1){var a=i[n],o=a.getBucket(t);o&&a.latestFeatureIndex&&t.id===o.layerIds[0]&&this.updateBucketOpacities(o,r,a.collisionBoxArray)}},ze.prototype.updateBucketOpacities=function(t,e,r){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasCollisionBoxData()&&t.collisionBox.collisionVertexArray.clear(),t.hasCollisionCircleData()&&t.collisionCircle.collisionVertexArray.clear();for(var n=t.layers[0].layout,i=new Ee(null,0,!1,!1,!0),a=new Ee(null,0,n.get(\"text-allow-overlap\"),n.get(\"icon-allow-overlap\"),!0),o=0;o<t.symbolInstances.length;o++){var s=t.symbolInstances[o],l=e[s.crossTileID],c=this.opacities[s.crossTileID];l?c=i:c||(c=a,this.opacities[s.crossTileID]=c),e[s.crossTileID]=!0;var u=s.numGlyphVertices>0||s.numVerticalGlyphVertices>0,f=s.numIconVertices>0;if(u){for(var h=je(c.text),p=(s.numGlyphVertices+s.numVerticalGlyphVertices)/4,d=0;d<p;d++)t.text.opacityVertexArray.emplaceBack(h);for(var g=0,v=s.placedTextSymbolIndices;g<v.length;g+=1){var m=v[g];t.text.placedSymbolArray.get(m).hidden=c.text.isHidden()}}if(f){for(var y=je(c.icon),x=0;x<s.numIconVertices/4;x++)t.icon.opacityVertexArray.emplaceBack(y);t.icon.placedSymbolArray.get(o).hidden=c.icon.isHidden()}s.collisionArrays||(s.collisionArrays=t.deserializeCollisionBoxes(r,s.textBoxStartIndex,s.textBoxEndIndex,s.iconBoxStartIndex,s.iconBoxEndIndex));var b=s.collisionArrays;if(b){b.textBox&&t.hasCollisionBoxData()&&Oe(t.collisionBox.collisionVertexArray,c.text.placed,!1),b.iconBox&&t.hasCollisionBoxData()&&Oe(t.collisionBox.collisionVertexArray,c.icon.placed,!1);var _=b.textCircles;if(_&&t.hasCollisionCircleData())for(var w=0;w<_.length;w+=5){var k=l||0===_[w+4];Oe(t.collisionCircle.collisionVertexArray,c.text.placed,k)}}}t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasCollisionBoxData()&&t.collisionBox.collisionVertexBuffer&&t.collisionBox.collisionVertexBuffer.updateData(t.collisionBox.collisionVertexArray),t.hasCollisionCircleData()&&t.collisionCircle.collisionVertexBuffer&&t.collisionCircle.collisionVertexBuffer.updateData(t.collisionCircle.collisionVertexArray)},ze.prototype.symbolFadeChange=function(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration},ze.prototype.hasTransitions=function(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration},ze.prototype.stillRecent=function(t){return\"undefined\"!==this.commitTime&&this.commitTime+this.fadeDuration>t},ze.prototype.setStale=function(){this.stale=!0};var Ie=Math.pow(2,25),De=Math.pow(2,24),Pe=Math.pow(2,17),Re=Math.pow(2,16),Fe=Math.pow(2,9),Be=Math.pow(2,8),Ne=Math.pow(2,1);function je(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*Ie+e*De+r*Pe+e*Re+r*Fe+e*Be+r*Ne+e}var Ve=function(){this._currentTileIndex=0,this._seenCrossTileIDs={}};Ve.prototype.continuePlacement=function(t,e,r,n,i){for(;this._currentTileIndex<t.length;){var a=t[this._currentTileIndex];if(e.placeLayerTile(n,a,r,this._seenCrossTileIDs),this._currentTileIndex++,i())return!0}};var Ue=function(t,e,r,n,i){this.placement=new ze(t,i),this._currentPlacementIndex=e.length-1,this._forceFullPlacement=r,this._showCollisionBoxes=n,this._done=!1};Ue.prototype.isDone=function(){return this._done},Ue.prototype.continuePlacement=function(t,e,r){for(var n=this,i=a.now(),o=function(){var t=a.now()-i;return!n._forceFullPlacement&&t>2};this._currentPlacementIndex>=0;){var s=e[t[n._currentPlacementIndex]],l=n.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(n._inProgressLayer||(n._inProgressLayer=new Ve),n._inProgressLayer.continuePlacement(r[s.source],n.placement,n._showCollisionBoxes,s,o))return;delete n._inProgressLayer}n._currentPlacementIndex--}this._done=!0},Ue.prototype.commit=function(t,e){return this.placement.commit(t,e),this.placement};var qe=512/t.default$8/2,He=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0,i=e;n<i.length;n+=1){var a=i[n],o=a.key;this.indexedSymbolInstances[o]||(this.indexedSymbolInstances[o]=[]),this.indexedSymbolInstances[o].push({crossTileID:a.crossTileID,coord:this.getScaledCoordinates(a,t)})}};He.prototype.getScaledCoordinates=function(e,r){var n=r.canonical.z-this.tileID.canonical.z,i=qe/Math.pow(2,n),a=e.anchor;return{x:Math.floor((r.canonical.x*t.default$8+a.x)*i),y:Math.floor((r.canonical.y*t.default$8+a.y)*i)}},He.prototype.findMatches=function(t,e,r){for(var n=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z),i=0,a=t;i<a.length;i+=1){var o=a[i];if(!o.crossTileID){var s=this.indexedSymbolInstances[o.key];if(s)for(var l=this.getScaledCoordinates(o,e),c=0,u=s;c<u.length;c+=1){var f=u[c];if(Math.abs(f.coord.x-l.x)<=n&&Math.abs(f.coord.y-l.y)<=n&&!r[f.crossTileID]){r[f.crossTileID]=!0,o.crossTileID=f.crossTileID;break}}}}};var Ge=function(){this.maxCrossTileID=0};Ge.prototype.generate=function(){return++this.maxCrossTileID};var We=function(){this.indexes={},this.usedCrossTileIDs={},this.lng=0};We.prototype.handleWrapJump=function(t){var e=Math.round((t-this.lng)/360);if(0!==e)for(var r in this.indexes){var n=this.indexes[r],i={};for(var a in n){var o=n[a];o.tileID=o.tileID.unwrapTo(o.tileID.wrap+e),i[o.tileID.key]=o}this.indexes[r]=i}this.lng=t},We.prototype.addBucket=function(t,e,r){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(var n=0,i=e.symbolInstances;n<i.length;n+=1)i[n].crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});var a=this.usedCrossTileIDs[t.overscaledZ];for(var o in this.indexes){var s=this.indexes[o];if(Number(o)>t.overscaledZ)for(var l in s){var c=s[l];c.tileID.isChildOf(t)&&c.findMatches(e.symbolInstances,t,a)}else{var u=s[t.scaledTo(Number(o)).key];u&&u.findMatches(e.symbolInstances,t,a)}}for(var f=0,h=e.symbolInstances;f<h.length;f+=1){var p=h[f];p.crossTileID||(p.crossTileID=r.generate(),a[p.crossTileID]=!0)}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new He(t,e.symbolInstances,e.bucketInstanceId),!0},We.prototype.removeBucketCrossTileIDs=function(t,e){for(var r in e.indexedSymbolInstances)for(var n=0,i=e.indexedSymbolInstances[r];n<i.length;n+=1){var a=i[n];delete this.usedCrossTileIDs[t][a.crossTileID]}},We.prototype.removeStaleBuckets=function(t){var e=!1;for(var r in this.indexes){var n=this.indexes[r];for(var i in n)t[n[i].bucketInstanceId]||(this.removeBucketCrossTileIDs(r,n[i]),delete n[i],e=!0)}return e};var Ye=function(){this.layerIndexes={},this.crossTileIDs=new Ge,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}};Ye.prototype.addLayer=function(t,e,r){var n=this.layerIndexes[t.id];void 0===n&&(n=this.layerIndexes[t.id]=new We);var i=!1,a={};n.handleWrapJump(r);for(var o=0,s=e;o<s.length;o+=1){var l=s[o],c=l.getBucket(t);c&&t.id===c.layerIds[0]&&(c.bucketInstanceId||(c.bucketInstanceId=++this.maxBucketInstanceId),n.addBucket(l.tileID,c,this.crossTileIDs)&&(i=!0),a[c.bucketInstanceId]=!0)}return n.removeStaleBuckets(a)&&(i=!0),i},Ye.prototype.pruneUnusedLayers=function(t){var e={};for(var r in t.forEach(function(t){e[t]=!0}),this.layerIndexes)e[r]||delete this.layerIndexes[r]};var Xe=function(e,r){return t.emitValidationErrors(e,r&&r.filter(function(t){return\"source.canvas\"!==t.identifier}))},Ze=t.pick(ee,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\"]),$e=t.pick(ee,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Je=function(e){function r(n,i){var a=this;void 0===i&&(i={}),e.call(this),this.map=n,this.dispatcher=new q((Jt||(Jt=new Kt),Jt),this),this.imageManager=new O,this.glyphManager=new B(n._transformRequest,i.localIdeographFontFamily),this.lineAtlas=new U(256,512),this.crossTileSymbolIndex=new Ye,this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.default$23,this._loaded=!1,this._resetUpdates();var o=this;this._rtlTextPluginCallback=r.registerForPluginAvailability(function(t){for(var e in o.dispatcher.broadcast(\"loadRTLTextPlugin\",t.pluginURL,t.completionCallback),o.sourceCaches)o.sourceCaches[e].reload()}),this.on(\"data\",function(t){if(\"source\"===t.dataType&&\"metadata\"===t.sourceDataType){var e=a.sourceCaches[t.sourceId];if(e){var r=e.getSource();if(r&&r.vectorLayerIds)for(var n in a._layers){var i=a._layers[n];i.source===r.id&&a._validateLayer(i)}}}})}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadURL=function(e,r){var n=this;void 0===r&&(r={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"}));var i=\"boolean\"==typeof r.validate?r.validate:!x(e);e=function(t,e){if(!x(t))return t;var r=M(t);return r.path=\"/styles/v1\"+r.path,y(r,e)}(e,r.accessToken);var a=this.map._transformRequest(e,t.ResourceType.Style);t.getJSON(a,function(e,r){e?n.fire(new t.ErrorEvent(e)):r&&n._load(r,i)})},r.prototype.loadJSON=function(e,r){var n=this;void 0===r&&(r={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),a.frame(function(){n._load(e,!1!==r.validate)})},r.prototype._load=function(e,r){var n=this;if(!r||!Xe(this,t.validateStyle(e))){for(var i in this._loaded=!0,this.stylesheet=e,e.sources)n.addSource(i,e.sources[i],{validate:!1});e.sprite?function(e,r,n){var i,o,s,l=a.devicePixelRatio>1?\"@2x\":\"\";function c(){if(s)n(s);else if(i&&o){var e=a.getImageData(o),r={};for(var l in i){var c=i[l],u=c.width,f=c.height,h=c.x,p=c.y,d=c.sdf,g=c.pixelRatio,v=new t.RGBAImage({width:u,height:f});t.RGBAImage.copy(e,v,{x:h,y:p},{x:0,y:0},{width:u,height:f}),r[l]={data:v,pixelRatio:g,sdf:d}}n(null,r)}}t.getJSON(r(_(e,l,\".json\"),t.ResourceType.SpriteJSON),function(t,e){s||(s=t,i=e,c())}),t.getImage(r(_(e,l,\".png\"),t.ResourceType.SpriteImage),function(t,e){s||(s=t,o=e,c())})}(e.sprite,this.map._transformRequest,function(e,r){if(e)n.fire(new t.ErrorEvent(e));else if(r)for(var i in r)n.imageManager.addImage(i,r[i]);n.imageManager.setLoaded(!0),n.fire(new t.Event(\"data\",{dataType:\"style\"}))}):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var o=te(this.stylesheet.layers);this._order=o.map(function(t){return t.id}),this._layers={};for(var s=0,l=o;s<l.length;s+=1){var c=l[s];(c=t.default$22(c)).setEventedParent(n,{layer:{id:c.id}}),n._layers[c.id]=c}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new V(this.stylesheet.light),this.fire(new t.Event(\"data\",{dataType:\"style\"})),this.fire(new t.Event(\"style.load\"))}},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){var e=this;return t.map(function(t){return e._layers[t].serialize()})},r.prototype.hasTransitions=function(){if(this.light&&this.light.hasTransition())return!0;for(var t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(var e in this._layers)if(this._layers[e].hasTransition())return!0;return!1},r.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},r.prototype.update=function(e){if(this._loaded){if(this._changed){var r=Object.keys(this._updatedLayers),n=Object.keys(this._removedLayers);for(var i in(r.length||n.length)&&this._updateWorkerLayers(r,n),this._updatedSources){var a=this._updatedSources[i];\"reload\"===a?this._reloadSource(i):\"clear\"===a&&this._clearSource(i)}for(var o in this._updatedPaintProps)this._layers[o].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates(),this.fire(new t.Event(\"data\",{dataType:\"style\"}))}for(var s in this.sourceCaches)this.sourceCaches[s].used=!1;for(var l=0,c=this._order;l<c.length;l+=1){var u=c[l],f=this._layers[u];f.recalculate(e),!f.isHidden(e.zoom)&&f.source&&(this.sourceCaches[f.source].used=!0)}this.light.recalculate(e),this.z=e.zoom}},r.prototype._updateWorkerLayers=function(t,e){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(t),removedIds:e})},r.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={}},r.prototype.setState=function(e){var r=this;if(this._checkLoaded(),Xe(this,t.validateStyle(e)))return!1;(e=t.clone(e)).layers=te(e.layers);var n=function(e,r){if(!e)return[{command:ee.setStyle,args:[r]}];var n=[];try{if(!t.default$10(e.version,r.version))return[{command:ee.setStyle,args:[r]}];t.default$10(e.center,r.center)||n.push({command:ee.setCenter,args:[r.center]}),t.default$10(e.zoom,r.zoom)||n.push({command:ee.setZoom,args:[r.zoom]}),t.default$10(e.bearing,r.bearing)||n.push({command:ee.setBearing,args:[r.bearing]}),t.default$10(e.pitch,r.pitch)||n.push({command:ee.setPitch,args:[r.pitch]}),t.default$10(e.sprite,r.sprite)||n.push({command:ee.setSprite,args:[r.sprite]}),t.default$10(e.glyphs,r.glyphs)||n.push({command:ee.setGlyphs,args:[r.glyphs]}),t.default$10(e.transition,r.transition)||n.push({command:ee.setTransition,args:[r.transition]}),t.default$10(e.light,r.light)||n.push({command:ee.setLight,args:[r.light]});var i={},a=[];!function(e,r,n,i){var a;for(a in r=r||{},e=e||{})e.hasOwnProperty(a)&&(r.hasOwnProperty(a)||ne(a,n,i));for(a in r)r.hasOwnProperty(a)&&(e.hasOwnProperty(a)?t.default$10(e[a],r[a])||(\"geojson\"===e[a].type&&\"geojson\"===r[a].type&&ae(e,r,a)?n.push({command:ee.setGeoJSONSourceData,args:[a,r[a].data]}):ie(a,r,n,i)):re(a,r,n))}(e.sources,r.sources,a,i);var o=[];e.layers&&e.layers.forEach(function(t){i[t.source]?n.push({command:ee.removeLayer,args:[t.id]}):o.push(t)}),n=n.concat(a),function(e,r,n){r=r||[];var i,a,o,s,l,c,u,f=(e=e||[]).map(se),h=r.map(se),p=e.reduce(le,{}),d=r.reduce(le,{}),g=f.slice(),v=Object.create(null);for(i=0,a=0;i<f.length;i++)o=f[i],d.hasOwnProperty(o)?a++:(n.push({command:ee.removeLayer,args:[o]}),g.splice(g.indexOf(o,a),1));for(i=0,a=0;i<h.length;i++)o=h[h.length-1-i],g[g.length-1-i]!==o&&(p.hasOwnProperty(o)?(n.push({command:ee.removeLayer,args:[o]}),g.splice(g.lastIndexOf(o,g.length-a),1)):a++,c=g[g.length-i],n.push({command:ee.addLayer,args:[d[o],c]}),g.splice(g.length-i,0,o),v[o]=!0);for(i=0;i<h.length;i++)if(s=p[o=h[i]],l=d[o],!v[o]&&!t.default$10(s,l))if(t.default$10(s.source,l.source)&&t.default$10(s[\"source-layer\"],l[\"source-layer\"])&&t.default$10(s.type,l.type)){for(u in oe(s.layout,l.layout,n,o,null,ee.setLayoutProperty),oe(s.paint,l.paint,n,o,null,ee.setPaintProperty),t.default$10(s.filter,l.filter)||n.push({command:ee.setFilter,args:[o,l.filter]}),t.default$10(s.minzoom,l.minzoom)&&t.default$10(s.maxzoom,l.maxzoom)||n.push({command:ee.setLayerZoomRange,args:[o,l.minzoom,l.maxzoom]}),s)s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?oe(s[u],l[u],n,o,u.slice(6),ee.setPaintProperty):t.default$10(s[u],l[u])||n.push({command:ee.setLayerProperty,args:[o,u,l[u]]}));for(u in l)l.hasOwnProperty(u)&&!s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?oe(s[u],l[u],n,o,u.slice(6),ee.setPaintProperty):t.default$10(s[u],l[u])||n.push({command:ee.setLayerProperty,args:[o,u,l[u]]}))}else n.push({command:ee.removeLayer,args:[o]}),c=g[g.lastIndexOf(o)+1],n.push({command:ee.addLayer,args:[l,c]})}(o,r.layers,n)}catch(t){console.warn(\"Unable to compute style diff:\",t),n=[{command:ee.setStyle,args:[r]}]}return n}(this.serialize(),e).filter(function(t){return!(t.command in $e)});if(0===n.length)return!1;var i=n.filter(function(t){return!(t.command in Ze)});if(i.length>0)throw new Error(\"Unimplemented: \"+i.map(function(t){return t.command}).join(\", \")+\".\");return n.forEach(function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)}),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.addSource=function(e,r,n){var i=this;if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0&&this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n))){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Yt(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}}),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone(e),e=t.extend(e,{source:i})),!this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n)){var a=t.default$22(e);this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}});var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e]}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r){this._checkLoaded();var n=this.getLayer(e);if(n){if(!t.default$10(n.filter,r))return null==r?(n.filter=void 0,void this._updateLayer(n)):void(this._validate(t.validateStyle.filter,\"layers.\"+n.id+\".filter\",r)||(n.filter=t.clone(r),this._updateLayer(n)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?t.default$10(i.getLayoutProperty(r),n)||(i.setLayoutProperty(r,n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(t,e){return this.getLayer(t).getLayoutProperty(e)},r.prototype.setPaintProperty=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.default$10(i.getPaintProperty(r),n)){var a=i._transitionablePaint._values[r].value.isDataDriven();i.setPaintProperty(r,n),(i._transitionablePaint._values[r].value.isDataDriven()||a)&&this._updateLayer(i),this._changed=!0,this._updatedPaintProps[e]=!0}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){var e=this;return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._order.map(function(t){return e._layers[t].serialize()})},function(t){return void 0!==t})},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenRenderedFeatures=function(t){for(var e=[],r=this._order.length-1;r>=0;r--)for(var n=this._order[r],i=0,a=t;i<a.length;i+=1){var o=a[i][n];if(o)for(var s=0,l=o;s<l.length;s+=1){var c=l[s];e.push(c)}}return e},r.prototype.queryRenderedFeatures=function(e,r,n){r&&r.filter&&this._validate(t.validateStyle.filter,\"queryRenderedFeatures.filter\",r.filter);var i={};if(r&&r.layers){if(!Array.isArray(r.layers))return this.fire(new t.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(var a=0,o=r.layers;a<o.length;a+=1){var s=o[a],l=this._layers[s];if(!l)return this.fire(new t.ErrorEvent(new Error(\"The layer '\"+s+\"' does not exist in the map's style and cannot be queried for features.\"))),[];i[l.source]=!0}}var c=[];for(var u in this.sourceCaches)r.layers&&!i[u]||c.push(at(this.sourceCaches[u],this._layers,e.worldCoordinate,r,n));return this.placement&&c.push(function(t,e,r,n,i){for(var a={},o=n.queryRenderedSymbols(e),s=[],l=0,c=Object.keys(o).map(Number);l<c.length;l+=1){var u=c[l];s.push(i[u])}s.sort(ot);for(var f=function(){var e=p[h],n=e.featureIndex.lookupSymbolFeatures(o[e.bucketInstanceId],e.bucketIndex,e.sourceLayerIndex,r.filter,r.layers,t);for(var i in n){var s=a[i]=a[i]||[],l=n[i];l.sort(function(t,r){var n=e.featureSortOrder;if(n){var i=n.indexOf(t.featureIndex);return n.indexOf(r.featureIndex)-i}return r.featureIndex-t.featureIndex});for(var c=0,u=l;c<u.length;c+=1){var f=u[c];s.push(f.feature)}}},h=0,p=s;h<p.length;h+=1)f();return a}(this._layers,e.viewport,r,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenRenderedFeatures(c)},r.prototype.querySourceFeatures=function(e,r){r&&r.filter&&this._validate(t.validateStyle.filter,\"querySourceFeatures.filter\",r.filter);var n=this.sourceCaches[e];return n?function(t,e){for(var r=t.getRenderableIds().map(function(e){return t.getTileByID(e)}),n=[],i={},a=0;a<r.length;a++){var o=r[a],s=o.tileID.canonical.key;i[s]||(i[s]=!0,o.querySourceFeatures(n,e))}return n}(n,r):[]},r.prototype.addSourceType=function(t,e,n){return r.getSourceType(t)?n(new Error('A source type called \"'+t+'\" already exists.')):(r.setSourceType(t,e),e.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:t,url:e.workerSourceURL},n):n(null,null))},r.prototype.getLight=function(){return this.light.getLight()},r.prototype.setLight=function(e){this._checkLoaded();var r=this.light.getLight(),n=!1;for(var i in e)if(!t.default$10(e[i],r[i])){n=!0;break}if(n){var o={now:a.now(),transition:t.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e),this.light.updateTransitions(o)}},r.prototype._validate=function(e,r,n,i,a){return(!a||!1!==a.validate)&&Xe(this,e.call(t.validateStyle,t.extend({key:r,style:this.serialize(),value:n,styleSpec:t.default$5},i)))},r.prototype._remove=function(){for(var e in t.evented.off(\"pluginAvailable\",this._rtlTextPluginCallback),this.sourceCaches)this.sourceCaches[e].clearTiles();this.dispatcher.remove()},r.prototype._clearSource=function(t){this.sourceCaches[t].clearTiles()},r.prototype._reloadSource=function(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()},r.prototype._updateSources=function(t){for(var e in this.sourceCaches)this.sourceCaches[e].update(t)},r.prototype._generateCollisionBoxes=function(){for(var t in this.sourceCaches)this._reloadSource(t)},r.prototype._updatePlacement=function(t,e,r){for(var n=!1,i=!1,o={},s=0,l=this._order;s<l.length;s+=1){var c=l[s],u=this._layers[c];if(\"symbol\"===u.type){if(!o[u.source]){var f=this.sourceCaches[u.source];o[u.source]=f.getRenderableIds().map(function(t){return f.getTileByID(t)}).sort(function(t,e){return e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)})}var h=this.crossTileSymbolIndex.addLayer(u,o[u.source],t.center.lng);n=n||h}}this.crossTileSymbolIndex.pruneUnusedLayers(this._order);var p=this._layerOrderChanged;if((p||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(a.now()))&&(this.pauseablePlacement=new Ue(t,this._order,p,e,r),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,o),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(this.placement,a.now()),i=!0),n&&this.pauseablePlacement.placement.setStale()),i||n)for(var d=0,g=this._order;d<g.length;d+=1){var v=g[d],m=this._layers[v];\"symbol\"===m.type&&this.placement.updateLayerOpacities(m,o[m.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(a.now())},r.prototype.getImages=function(t,e,r){this.imageManager.getImages(e.icons,r)},r.prototype.getGlyphs=function(t,e,r){this.glyphManager.getGlyphs(e.stacks,r)},r}(t.Evented);Je.getSourceType=function(t){return nt[t]},Je.setSourceType=function(t,e){nt[t]=e},Je.registerForPluginAvailability=t.registerForPluginAvailability;var Ke=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2}]),Qe={prelude:{fragmentSource:\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\",vertexSource:\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\\n// Unpack a pair of values that have been packed into a single float.\\n// The packed values are assumed to be 8-bit unsigned integers, and are\\n// packed like so:\\n// packedValue = floor(input[0]) * 256 + input[1],\\nvec2 unpack_float(const float packedValue) {\\n    int packedIntValue = int(packedValue);\\n    int v0 = packedIntValue / 256;\\n    return vec2(v0, packedIntValue - v0 * 256);\\n}\\n\\nvec2 unpack_opacity(const float packedOpacity) {\\n    int intOpacity = int(packedOpacity) / 2;\\n    return vec2(float(intOpacity) / 127.0, mod(packedOpacity, 2.0));\\n}\\n\\n// To minimize the number of attributes needed, we encode a 4-component\\n// color into a pair of floats (i.e. a vec2) as follows:\\n// [ floor(color.r * 255) * 256 + color.g * 255,\\n//   floor(color.b * 255) * 256 + color.g * 255 ]\\nvec4 decode_color(const vec2 encodedColor) {\\n    return vec4(\\n        unpack_float(encodedColor[0]) / 255.0,\\n        unpack_float(encodedColor[1]) / 255.0\\n    );\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nfloat unpack_mix_vec2(const vec2 packedValue, const float t) {\\n    return mix(packedValue[0], packedValue[1], t);\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nvec4 unpack_mix_vec4(const vec4 packedColors, const float t) {\\n    vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));\\n    vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));\\n    return mix(minColor, maxColor, t);\\n}\\n\\n// The offset depends on how many pixels are between the world origin and the edge of the tile:\\n// vec2 offset = mod(pixel_coord, size)\\n//\\n// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.\\n// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.\\n//\\n// The pixel_coord is passed in as two 16 bit values:\\n// pixel_coord_upper = floor(pixel_coord / 2^16)\\n// pixel_coord_lower = mod(pixel_coord, 2^16)\\n//\\n// The offset is calculated in a series of steps that should preserve this precision:\\nvec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,\\n    const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {\\n\\n    vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);\\n    return (tile_units_to_pixels * pos + offset) / pattern_size;\\n}\\n\"},background:{fragmentSource:\"uniform vec4 u_color;\\nuniform float u_opacity;\\n\\nvoid main() {\\n    gl_FragColor = u_color * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},backgroundPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\nuniform float u_opacity;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\nvoid main() {\\n    vec2 imagecoord = mod(v_pos_a, 1.0);\\n    vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n    vec4 color1 = texture2D(u_image, pos);\\n\\n    vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n    vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n    vec4 color2 = texture2D(u_image, pos2);\\n\\n    gl_FragColor = mix(color1, color2, u_mix) * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n    v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n    v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n}\\n\"},circle:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize mediump float radius\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize highp vec4 stroke_color\\n    #pragma mapbox: initialize mediump float stroke_width\\n    #pragma mapbox: initialize lowp float stroke_opacity\\n\\n    vec2 extrude = v_data.xy;\\n    float extrude_length = length(extrude);\\n\\n    lowp float antialiasblur = v_data.z;\\n    float antialiased_blur = -max(blur, antialiasblur);\\n\\n    float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);\\n\\n    float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(\\n        antialiased_blur,\\n        0.0,\\n        extrude_length - radius / (radius + stroke_width)\\n    );\\n\\n    gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform bool u_scale_with_map;\\nuniform bool u_pitch_with_map;\\nuniform vec2 u_extrude_scale;\\nuniform highp float u_camera_to_center_distance;\\n\\nattribute vec2 a_pos;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main(void) {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize mediump float radius\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize highp vec4 stroke_color\\n    #pragma mapbox: initialize mediump float stroke_width\\n    #pragma mapbox: initialize lowp float stroke_opacity\\n\\n    // unencode the extrusion vector that we snuck into the a_pos vector\\n    vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\\n\\n    // multiply a_pos by 0.5, since we had it * 2 in order to sneak\\n    // in extrusion data\\n    vec2 circle_center = floor(a_pos * 0.5);\\n    if (u_pitch_with_map) {\\n        vec2 corner_position = circle_center;\\n        if (u_scale_with_map) {\\n            corner_position += extrude * (radius + stroke_width) * u_extrude_scale;\\n        } else {\\n            // Pitching the circle with the map effectively scales it with the map\\n            // To counteract the effect for pitch-scale: viewport, we rescale the\\n            // whole circle based on the pitch scaling effect at its central point\\n            vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);\\n            corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);\\n        }\\n\\n        gl_Position = u_matrix * vec4(corner_position, 0, 1);\\n    } else {\\n        gl_Position = u_matrix * vec4(circle_center, 0, 1);\\n\\n        if (u_scale_with_map) {\\n            gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;\\n        } else {\\n            gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;\\n        }\\n    }\\n\\n    // This is a minimum blur distance that serves as a faux-antialiasing for\\n    // the circle. since blur is a ratio of the circle's size and the intent is\\n    // to keep the blur at roughly 1px, the two are inversely related.\\n    lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);\\n\\n    v_data = vec3(extrude.x, extrude.y, antialiasblur);\\n}\\n\"},clippingMask:{fragmentSource:\"void main() {\\n    gl_FragColor = vec4(1.0);\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},heatmap:{fragmentSource:\"#pragma mapbox: define highp float weight\\n\\nuniform highp float u_intensity;\\nvarying vec2 v_extrude;\\n\\n// Gaussian kernel coefficient: 1 / sqrt(2 * PI)\\n#define GAUSS_COEF 0.3989422804014327\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp float weight\\n\\n    // Kernel density estimation with a Gaussian kernel of size 5x5\\n    float d = -0.5 * 3.0 * 3.0 * dot(v_extrude, v_extrude);\\n    float val = weight * u_intensity * GAUSS_COEF * exp(d);\\n\\n    gl_FragColor = vec4(val, 1.0, 1.0, 1.0);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\n\\nuniform mat4 u_matrix;\\nuniform float u_extrude_scale;\\nuniform float u_opacity;\\nuniform float u_intensity;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_extrude;\\n\\n// Effective \\\"0\\\" in the kernel density texture to adjust the kernel size to;\\n// this empirically chosen number minimizes artifacts on overlapping kernels\\n// for typical heatmap cases (assuming clustered source)\\nconst highp float ZERO = 1.0 / 255.0 / 16.0;\\n\\n// Gaussian kernel coefficient: 1 / sqrt(2 * PI)\\n#define GAUSS_COEF 0.3989422804014327\\n\\nvoid main(void) {\\n    #pragma mapbox: initialize highp float weight\\n    #pragma mapbox: initialize mediump float radius\\n\\n    // unencode the extrusion vector that we snuck into the a_pos vector\\n    vec2 unscaled_extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\\n\\n    // This 'extrude' comes in ranging from [-1, -1], to [1, 1].  We'll use\\n    // it to produce the vertices of a square mesh framing the point feature\\n    // we're adding to the kernel density texture.  We'll also pass it as\\n    // a varying, so that the fragment shader can determine the distance of\\n    // each fragment from the point feature.\\n    // Before we do so, we need to scale it up sufficiently so that the\\n    // kernel falls effectively to zero at the edge of the mesh.\\n    // That is, we want to know S such that\\n    // weight * u_intensity * GAUSS_COEF * exp(-0.5 * 3.0^2 * S^2) == ZERO\\n    // Which solves to:\\n    // S = sqrt(-2.0 * log(ZERO / (weight * u_intensity * GAUSS_COEF))) / 3.0\\n    float S = sqrt(-2.0 * log(ZERO / weight / u_intensity / GAUSS_COEF)) / 3.0;\\n\\n    // Pass the varying in units of radius\\n    v_extrude = S * unscaled_extrude;\\n\\n    // Scale by radius and the zoom-based scale factor to produce actual\\n    // mesh position\\n    vec2 extrude = v_extrude * radius * u_extrude_scale;\\n\\n    // multiply a_pos by 0.5, since we had it * 2 in order to sneak\\n    // in extrusion data\\n    vec4 pos = vec4(floor(a_pos * 0.5) + extrude, 0, 1);\\n\\n    gl_Position = u_matrix * pos;\\n}\\n\"},heatmapTexture:{fragmentSource:\"uniform sampler2D u_image;\\nuniform sampler2D u_color_ramp;\\nuniform float u_opacity;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    float t = texture2D(u_image, v_pos).r;\\n    vec4 color = texture2D(u_color_ramp, vec2(t, 0.5));\\n    gl_FragColor = color * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(0.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nattribute vec2 a_pos;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\\n\\n    v_pos.x = a_pos.x;\\n    v_pos.y = 1.0 - a_pos.y;\\n}\\n\"},collisionBox:{fragmentSource:\"\\nvarying float v_placed;\\nvarying float v_notUsed;\\n\\nvoid main() {\\n\\n    float alpha = 0.5;\\n\\n    // Red = collision, hide label\\n    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\\n\\n    // Blue = no collision, label is showing\\n    if (v_placed > 0.5) {\\n        gl_FragColor = vec4(0.0, 0.0, 1.0, 0.5) * alpha;\\n    }\\n\\n    if (v_notUsed > 0.5) {\\n        // This box not used, fade it out\\n        gl_FragColor *= .1;\\n    }\\n}\",vertexSource:\"attribute vec2 a_pos;\\nattribute vec2 a_anchor_pos;\\nattribute vec2 a_extrude;\\nattribute vec2 a_placed;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_extrude_scale;\\nuniform float u_camera_to_center_distance;\\n\\nvarying float v_placed;\\nvarying float v_notUsed;\\n\\nvoid main() {\\n    vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\\n    highp float camera_to_anchor_distance = projectedPoint.w;\\n    highp float collision_perspective_ratio = clamp(\\n        0.5 + 0.5 * (u_camera_to_center_distance / camera_to_anchor_distance),\\n        0.0, // Prevents oversized near-field boxes in pitched/overzoomed tiles\\n        4.0);\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0.0, 1.0);\\n    gl_Position.xy += a_extrude * u_extrude_scale * gl_Position.w * collision_perspective_ratio;\\n\\n    v_placed = a_placed.x;\\n    v_notUsed = a_placed.y;\\n}\\n\"},collisionCircle:{fragmentSource:\"uniform float u_overscale_factor;\\n\\nvarying float v_placed;\\nvarying float v_notUsed;\\nvarying float v_radius;\\nvarying vec2 v_extrude;\\nvarying vec2 v_extrude_scale;\\n\\nvoid main() {\\n    float alpha = 0.5;\\n\\n    // Red = collision, hide label\\n    vec4 color = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\\n\\n    // Blue = no collision, label is showing\\n    if (v_placed > 0.5) {\\n        color = vec4(0.0, 0.0, 1.0, 0.5) * alpha;\\n    }\\n\\n    if (v_notUsed > 0.5) {\\n        // This box not used, fade it out\\n        color *= .2;\\n    }\\n\\n    float extrude_scale_length = length(v_extrude_scale);\\n    float extrude_length = length(v_extrude) * extrude_scale_length;\\n    float stroke_width = 15.0 * extrude_scale_length / u_overscale_factor;\\n    float radius = v_radius * extrude_scale_length;\\n\\n    float distance_to_edge = abs(extrude_length - radius);\\n    float opacity_t = smoothstep(-stroke_width, 0.0, -distance_to_edge);\\n\\n    gl_FragColor = opacity_t * color;\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\nattribute vec2 a_anchor_pos;\\nattribute vec2 a_extrude;\\nattribute vec2 a_placed;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_extrude_scale;\\nuniform float u_camera_to_center_distance;\\n\\nvarying float v_placed;\\nvarying float v_notUsed;\\nvarying float v_radius;\\n\\nvarying vec2 v_extrude;\\nvarying vec2 v_extrude_scale;\\n\\nvoid main() {\\n    vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\\n    highp float camera_to_anchor_distance = projectedPoint.w;\\n    highp float collision_perspective_ratio = clamp(\\n        0.5 + 0.5 * (u_camera_to_center_distance / camera_to_anchor_distance),\\n        0.0, // Prevents oversized near-field circles in pitched/overzoomed tiles\\n        4.0);\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0.0, 1.0);\\n\\n    highp float padding_factor = 1.2; // Pad the vertices slightly to make room for anti-alias blur\\n    gl_Position.xy += a_extrude * u_extrude_scale * padding_factor * gl_Position.w * collision_perspective_ratio;\\n\\n    v_placed = a_placed.x;\\n    v_notUsed = a_placed.y;\\n    v_radius = abs(a_extrude.y); // We don't pitch the circles, so both units of the extrusion vector are equal in magnitude to the radius\\n\\n    v_extrude = a_extrude * padding_factor;\\n    v_extrude_scale = u_extrude_scale * u_camera_to_center_distance * collision_perspective_ratio;\\n}\\n\"},debug:{fragmentSource:\"uniform highp vec4 u_color;\\n\\nvoid main() {\\n    gl_FragColor = u_color;\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},fill:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    gl_FragColor = color * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},fillOutline:{fragmentSource:\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 outline_color\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    float dist = length(v_pos - gl_FragCoord.xy);\\n    float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n    gl_FragColor = outline_color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_world;\\n\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 outline_color\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n    v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillOutlinePattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    vec2 imagecoord = mod(v_pos_a, 1.0);\\n    vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n    vec4 color1 = texture2D(u_image, pos);\\n\\n    vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n    vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n    vec4 color2 = texture2D(u_image, pos2);\\n\\n    // find distance to outline for alpha interpolation\\n\\n    float dist = length(v_pos - gl_FragCoord.xy);\\n    float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n\\n\\n    gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n    v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n    v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n\\n    v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    vec2 imagecoord = mod(v_pos_a, 1.0);\\n    vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n    vec4 color1 = texture2D(u_image, pos);\\n\\n    vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n    vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n    vec4 color2 = texture2D(u_image, pos2);\\n\\n    gl_FragColor = mix(color1, color2, u_mix) * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n    v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n    v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n}\\n\"},fillExtrusion:{fragmentSource:\"varying vec4 v_color;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float base\\n    #pragma mapbox: initialize lowp float height\\n    #pragma mapbox: initialize highp vec4 color\\n\\n    gl_FragColor = v_color;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec4 a_normal_ed;\\n\\nvarying vec4 v_color;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float base\\n    #pragma mapbox: initialize lowp float height\\n    #pragma mapbox: initialize highp vec4 color\\n\\n    vec3 normal = a_normal_ed.xyz;\\n\\n    base = max(0.0, base);\\n    height = max(0.0, height);\\n\\n    float t = mod(normal.x, 2.0);\\n\\n    gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);\\n\\n    // Relative luminance (how dark/bright is the surface color?)\\n    float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\\n\\n    v_color = vec4(0.0, 0.0, 0.0, 1.0);\\n\\n    // Add slight ambient lighting so no extrusions are totally black\\n    vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\\n    color += ambientlight;\\n\\n    // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\\n    float directional = clamp(dot(normal / 16384.0, u_lightpos), 0.0, 1.0);\\n\\n    // Adjust directional so that\\n    // the range of values for highlight/shading is narrower\\n    // with lower light intensity\\n    // and with lighter/brighter surface colors\\n    directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\\n\\n    // Add gradient along z axis of side surfaces\\n    if (normal.y != 0.0) {\\n        directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n    }\\n\\n    // Assign final color based on surface + ambient light color, diffuse light directional, and light color\\n    // with lower bounds adjusted to hue of light\\n    // so that shading is tinted with the complementary (opposite) color to the light color\\n    v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\\n    v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\\n    v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\\n}\\n\"},fillExtrusionPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float base\\n    #pragma mapbox: initialize lowp float height\\n\\n    vec2 imagecoord = mod(v_pos_a, 1.0);\\n    vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n    vec4 color1 = texture2D(u_image, pos);\\n\\n    vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n    vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n    vec4 color2 = texture2D(u_image, pos2);\\n\\n    vec4 mixedColor = mix(color1, color2, u_mix);\\n\\n    gl_FragColor = mixedColor * v_lighting;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\nuniform float u_height_factor;\\n\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec4 a_normal_ed;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\nvarying float v_directional;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float base\\n    #pragma mapbox: initialize lowp float height\\n\\n    vec3 normal = a_normal_ed.xyz;\\n    float edgedistance = a_normal_ed.w;\\n\\n    base = max(0.0, base);\\n    height = max(0.0, height);\\n\\n    float t = mod(normal.x, 2.0);\\n    float z = t > 0.0 ? height : base;\\n\\n    gl_Position = u_matrix * vec4(a_pos, z, 1);\\n\\n    vec2 pos = normal.x == 1.0 && normal.y == 0.0 && normal.z == 16384.0\\n        ? a_pos // extrusion top\\n        : vec2(edgedistance, z * u_height_factor); // extrusion side\\n\\n    v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, pos);\\n    v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, pos);\\n\\n    v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\\n    float directional = clamp(dot(normal / 16383.0, u_lightpos), 0.0, 1.0);\\n    directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\\n\\n    if (normal.y != 0.0) {\\n        directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n    }\\n\\n    v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\\n}\\n\"},extrusionTexture:{fragmentSource:\"uniform sampler2D u_image;\\nuniform float u_opacity;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(0.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nattribute vec2 a_pos;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\\n\\n    v_pos.x = a_pos.x;\\n    v_pos.y = 1.0 - a_pos.y;\\n}\\n\"},hillshadePrepare:{fragmentSource:\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\n\\nuniform sampler2D u_image;\\nvarying vec2 v_pos;\\nuniform vec2 u_dimension;\\nuniform float u_zoom;\\nuniform float u_maxzoom;\\n\\nfloat getElevation(vec2 coord, float bias) {\\n    // Convert encoded elevation value to meters\\n    vec4 data = texture2D(u_image, coord) * 255.0;\\n    return (data.r + data.g * 256.0 + data.b * 256.0 * 256.0) / 4.0;\\n}\\n\\nvoid main() {\\n    vec2 epsilon = 1.0 / u_dimension;\\n\\n    // queried pixels:\\n    // +-----------+\\n    // |   |   |   |\\n    // | a | b | c |\\n    // |   |   |   |\\n    // +-----------+\\n    // |   |   |   |\\n    // | d | e | f |\\n    // |   |   |   |\\n    // +-----------+\\n    // |   |   |   |\\n    // | g | h | i |\\n    // |   |   |   |\\n    // +-----------+\\n\\n    float a = getElevation(v_pos + vec2(-epsilon.x, -epsilon.y), 0.0);\\n    float b = getElevation(v_pos + vec2(0, -epsilon.y), 0.0);\\n    float c = getElevation(v_pos + vec2(epsilon.x, -epsilon.y), 0.0);\\n    float d = getElevation(v_pos + vec2(-epsilon.x, 0), 0.0);\\n    float e = getElevation(v_pos, 0.0);\\n    float f = getElevation(v_pos + vec2(epsilon.x, 0), 0.0);\\n    float g = getElevation(v_pos + vec2(-epsilon.x, epsilon.y), 0.0);\\n    float h = getElevation(v_pos + vec2(0, epsilon.y), 0.0);\\n    float i = getElevation(v_pos + vec2(epsilon.x, epsilon.y), 0.0);\\n\\n    // here we divide the x and y slopes by 8 * pixel size\\n    // where pixel size (aka meters/pixel) is:\\n    // circumference of the world / (pixels per tile * number of tiles)\\n    // which is equivalent to: 8 * 40075016.6855785 / (512 * pow(2, u_zoom))\\n    // which can be reduced to: pow(2, 19.25619978527 - u_zoom)\\n    // we want to vertically exaggerate the hillshading though, because otherwise\\n    // it is barely noticeable at low zooms. to do this, we multiply this by some\\n    // scale factor pow(2, (u_zoom - u_maxzoom) * a) where a is an arbitrary value\\n    // Here we use a=0.3 which works out to the expression below. see \\n    // nickidlugash's awesome breakdown for more info\\n    // https://github.com/mapbox/mapbox-gl-js/pull/5286#discussion_r148419556\\n    float exaggeration = u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;\\n\\n    vec2 deriv = vec2(\\n        (c + f + f + i) - (a + d + d + g),\\n        (g + h + h + i) - (a + b + b + c)\\n    ) /  pow(2.0, (u_zoom - u_maxzoom) * exaggeration + 19.2562 - u_zoom);\\n\\n    gl_FragColor = clamp(vec4(\\n        deriv.x / 2.0 + 0.5,\\n        deriv.y / 2.0 + 0.5,\\n        1.0,\\n        1.0), 0.0, 1.0);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n    v_pos = (a_texture_pos / 8192.0) / 2.0 + 0.25;\\n}\\n\"},hillshade:{fragmentSource:\"uniform sampler2D u_image;\\nvarying vec2 v_pos;\\n\\nuniform vec2 u_latrange;\\nuniform vec2 u_light;\\nuniform vec4 u_shadow;\\nuniform vec4 u_highlight;\\nuniform vec4 u_accent;\\n\\n#define PI 3.141592653589793\\n\\nvoid main() {\\n    vec4 pixel = texture2D(u_image, v_pos);\\n\\n    vec2 deriv = ((pixel.rg * 2.0) - 1.0);\\n\\n    // We divide the slope by a scale factor based on the cosin of the pixel's approximate latitude\\n    // to account for mercator projection distortion. see #4807 for details\\n    float scaleFactor = cos(radians((u_latrange[0] - u_latrange[1]) * (1.0 - v_pos.y) + u_latrange[1]));\\n    // We also multiply the slope by an arbitrary z-factor of 1.25\\n    float slope = atan(1.25 * length(deriv) / scaleFactor);\\n    float aspect = deriv.x != 0.0 ? atan(deriv.y, -deriv.x) : PI / 2.0 * (deriv.y > 0.0 ? 1.0 : -1.0);\\n\\n    float intensity = u_light.x;\\n    // We add PI to make this property match the global light object, which adds PI/2 to the light's azimuthal\\n    // position property to account for 0deg corresponding to north/the top of the viewport in the style spec\\n    // and the original shader was written to accept (-illuminationDirection - 90) as the azimuthal.\\n    float azimuth = u_light.y + PI;\\n\\n    // We scale the slope exponentially based on intensity, using a calculation similar to\\n    // the exponential interpolation function in the style spec:\\n    // https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/expression/definitions/interpolate.js#L217-L228\\n    // so that higher intensity values create more opaque hillshading.\\n    float base = 1.875 - intensity * 1.75;\\n    float maxValue = 0.5 * PI;\\n    float scaledSlope = intensity != 0.5 ? ((pow(base, slope) - 1.0) / (pow(base, maxValue) - 1.0)) * maxValue : slope;\\n\\n    // The accent color is calculated with the cosine of the slope while the shade color is calculated with the sine\\n    // so that the accent color's rate of change eases in while the shade color's eases out.\\n    float accent = cos(scaledSlope);\\n    // We multiply both the accent and shade color by a clamped intensity value\\n    // so that intensities >= 0.5 do not additionally affect the color values\\n    // while intensity values < 0.5 make the overall color more transparent.\\n    vec4 accent_color = (1.0 - accent) * u_accent * clamp(intensity * 2.0, 0.0, 1.0);\\n    float shade = abs(mod((aspect + azimuth) / PI + 0.5, 2.0) - 1.0);\\n    vec4 shade_color = mix(u_shadow, u_highlight, shade) * sin(scaledSlope) * clamp(intensity * 2.0, 0.0, 1.0);\\n    gl_FragColor = accent_color * (1.0 - shade_color.a) + shade_color;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n    v_pos = a_texture_pos / 8192.0;\\n}\\n\"},line:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_width2;\\nvarying vec2 v_normal;\\nvarying float v_gamma_scale;\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    // Calculate the distance of the pixel from the line in pixels.\\n    float dist = length(v_normal) * v_width2.s;\\n\\n    // Calculate the antialiasing fade factor. This is either when fading in\\n    // the line in case of an offset line (v_width2.t) or when fading out\\n    // (v_width2.s)\\n    float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n    float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n    gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\n// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_gamma_scale;\\nvarying highp float v_linesofar;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize mediump float gapwidth\\n    #pragma mapbox: initialize lowp float offset\\n    #pragma mapbox: initialize mediump float width\\n\\n    vec2 a_extrude = a_data.xy - 128.0;\\n    float a_direction = mod(a_data.z, 4.0) - 1.0;\\n\\n    v_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * 2.0;\\n\\n    vec2 pos = a_pos_normal.xy;\\n\\n    // x is 1 if it's a round cap, 0 otherwise\\n    // y is 1 if the normal points up, and -1 if it points down\\n    mediump vec2 normal = a_pos_normal.zw;\\n    v_normal = normal;\\n\\n    // these transformations used to be applied in the JS and native code bases.\\n    // moved them into the shader for clarity and simplicity.\\n    gapwidth = gapwidth / 2.0;\\n    float halfwidth = width / 2.0;\\n    offset = -1.0 * offset;\\n\\n    float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n    float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n    // Scale the extrusion vector down to a normal and then up by the line width\\n    // of this vertex.\\n    mediump vec2 dist = outset * a_extrude * scale;\\n\\n    // Calculate the offset when drawing a line that is to the side of the actual line.\\n    // We do this by creating a vector that points towards the extrude, but rotate\\n    // it when we're drawing round end points (a_direction = -1 or 1) since their\\n    // extrude vector points in another direction.\\n    mediump float u = 0.5 * a_direction;\\n    mediump float t = 1.0 - abs(u);\\n    mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n    vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n    gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n    // calculate how much the perspective view squishes or stretches the extrude\\n    float extrude_length_without_perspective = length(dist);\\n    float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n    v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n    v_width2 = vec2(outset, inset);\\n}\\n\"},lineGradient:{fragmentSource:\"\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_width2;\\nvarying vec2 v_normal;\\nvarying float v_gamma_scale;\\nvarying highp float v_lineprogress;\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    // Calculate the distance of the pixel from the line in pixels.\\n    float dist = length(v_normal) * v_width2.s;\\n\\n    // Calculate the antialiasing fade factor. This is either when fading in\\n    // the line in case of an offset line (v_width2.t) or when fading out\\n    // (v_width2.s)\\n    float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n    float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n    // For gradient lines, v_lineprogress is the ratio along the entire line,\\n    // scaled to [0, 2^15), and the gradient ramp is stored in a texture.\\n    vec4 color = texture2D(u_image, vec2(v_lineprogress, 0.5));\\n\\n    gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"\\n// the attribute conveying progress along a line is scaled to [0, 2^15)\\n#define MAX_LINE_DISTANCE 32767.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\n// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_gamma_scale;\\nvarying highp float v_lineprogress;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize mediump float gapwidth\\n    #pragma mapbox: initialize lowp float offset\\n    #pragma mapbox: initialize mediump float width\\n\\n    vec2 a_extrude = a_data.xy - 128.0;\\n    float a_direction = mod(a_data.z, 4.0) - 1.0;\\n\\n    v_lineprogress = (floor(a_data.z / 4.0) + a_data.w * 64.0) * 2.0 / MAX_LINE_DISTANCE;\\n\\n    vec2 pos = a_pos_normal.xy;\\n\\n    // x is 1 if it's a round cap, 0 otherwise\\n    // y is 1 if the normal points up, and -1 if it points down\\n    mediump vec2 normal = a_pos_normal.zw;\\n    v_normal = normal;\\n\\n    // these transformations used to be applied in the JS and native code bases.\\n    // moved them into the shader for clarity and simplicity.\\n    gapwidth = gapwidth / 2.0;\\n    float halfwidth = width / 2.0;\\n    offset = -1.0 * offset;\\n\\n    float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n    float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n    // Scale the extrusion vector down to a normal and then up by the line width\\n    // of this vertex.\\n    mediump vec2 dist = outset * a_extrude * scale;\\n\\n    // Calculate the offset when drawing a line that is to the side of the actual line.\\n    // We do this by creating a vector that points towards the extrude, but rotate\\n    // it when we're drawing round end points (a_direction = -1 or 1) since their\\n    // extrude vector points in another direction.\\n    mediump float u = 0.5 * a_direction;\\n    mediump float t = 1.0 - abs(u);\\n    mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n    vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n    gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n    // calculate how much the perspective view squishes or stretches the extrude\\n    float extrude_length_without_perspective = length(dist);\\n    float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n    v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n    v_width2 = vec2(outset, inset);\\n}\\n\"},linePattern:{fragmentSource:\"uniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_fade;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    // Calculate the distance of the pixel from the line in pixels.\\n    float dist = length(v_normal) * v_width2.s;\\n\\n    // Calculate the antialiasing fade factor. This is either when fading in\\n    // the line in case of an offset line (v_width2.t) or when fading out\\n    // (v_width2.s)\\n    float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n    float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n    float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\\n    float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\\n\\n    // v_normal.y is 0 at the midpoint of the line, -1 at the lower edge, 1 at the upper edge\\n    // we clamp the line width outset to be between 0 and half the pattern height plus padding (2.0)\\n    // to ensure we don't sample outside the designated symbol on the sprite sheet.\\n    // 0.5 is added to shift the component to be bounded between 0 and 1 for interpolation of\\n    // the texture coordinate\\n    float y_a = 0.5 + (v_normal.y * clamp(v_width2.s, 0.0, (u_pattern_size_a.y + 2.0) / 2.0) / u_pattern_size_a.y);\\n    float y_b = 0.5 + (v_normal.y * clamp(v_width2.s, 0.0, (u_pattern_size_b.y + 2.0) / 2.0) / u_pattern_size_b.y);\\n    vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a));\\n    vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b));\\n\\n    vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\\n\\n    gl_FragColor = color * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize lowp float offset\\n    #pragma mapbox: initialize mediump float gapwidth\\n    #pragma mapbox: initialize mediump float width\\n\\n    vec2 a_extrude = a_data.xy - 128.0;\\n    float a_direction = mod(a_data.z, 4.0) - 1.0;\\n    float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n    vec2 pos = a_pos_normal.xy;\\n\\n    // x is 1 if it's a round cap, 0 otherwise\\n    // y is 1 if the normal points up, and -1 if it points down\\n    mediump vec2 normal = a_pos_normal.zw;\\n    v_normal = normal;\\n\\n    // these transformations used to be applied in the JS and native code bases.\\n    // moved them into the shader for clarity and simplicity.\\n    gapwidth = gapwidth / 2.0;\\n    float halfwidth = width / 2.0;\\n    offset = -1.0 * offset;\\n\\n    float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n    float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n    // Scale the extrusion vector down to a normal and then up by the line width\\n    // of this vertex.\\n    mediump vec2 dist = outset * a_extrude * scale;\\n\\n    // Calculate the offset when drawing a line that is to the side of the actual line.\\n    // We do this by creating a vector that points towards the extrude, but rotate\\n    // it when we're drawing round end points (a_direction = -1 or 1) since their\\n    // extrude vector points in another direction.\\n    mediump float u = 0.5 * a_direction;\\n    mediump float t = 1.0 - abs(u);\\n    mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n    vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n    gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n    // calculate how much the perspective view squishes or stretches the extrude\\n    float extrude_length_without_perspective = length(dist);\\n    float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n    v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n    v_linesofar = a_linesofar;\\n    v_width2 = vec2(outset, inset);\\n}\\n\"},lineSDF:{fragmentSource:\"\\nuniform sampler2D u_image;\\nuniform float u_sdfgamma;\\nuniform float u_mix;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize mediump float width\\n    #pragma mapbox: initialize lowp float floorwidth\\n\\n    // Calculate the distance of the pixel from the line in pixels.\\n    float dist = length(v_normal) * v_width2.s;\\n\\n    // Calculate the antialiasing fade factor. This is either when fading in\\n    // the line in case of an offset line (v_width2.t) or when fading out\\n    // (v_width2.s)\\n    float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n    float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n    float sdfdist_a = texture2D(u_image, v_tex_a).a;\\n    float sdfdist_b = texture2D(u_image, v_tex_b).a;\\n    float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\\n    alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);\\n\\n    gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_patternscale_a;\\nuniform float u_tex_y_a;\\nuniform vec2 u_patternscale_b;\\nuniform float u_tex_y_b;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 color\\n    #pragma mapbox: initialize lowp float blur\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize mediump float gapwidth\\n    #pragma mapbox: initialize lowp float offset\\n    #pragma mapbox: initialize mediump float width\\n    #pragma mapbox: initialize lowp float floorwidth\\n\\n    vec2 a_extrude = a_data.xy - 128.0;\\n    float a_direction = mod(a_data.z, 4.0) - 1.0;\\n    float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n    vec2 pos = a_pos_normal.xy;\\n\\n    // x is 1 if it's a round cap, 0 otherwise\\n    // y is 1 if the normal points up, and -1 if it points down\\n    mediump vec2 normal = a_pos_normal.zw;\\n    v_normal = normal;\\n\\n    // these transformations used to be applied in the JS and native code bases.\\n    // moved them into the shader for clarity and simplicity.\\n    gapwidth = gapwidth / 2.0;\\n    float halfwidth = width / 2.0;\\n    offset = -1.0 * offset;\\n\\n    float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n    float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n    // Scale the extrusion vector down to a normal and then up by the line width\\n    // of this vertex.\\n    mediump vec2 dist =outset * a_extrude * scale;\\n\\n    // Calculate the offset when drawing a line that is to the side of the actual line.\\n    // We do this by creating a vector that points towards the extrude, but rotate\\n    // it when we're drawing round end points (a_direction = -1 or 1) since their\\n    // extrude vector points in another direction.\\n    mediump float u = 0.5 * a_direction;\\n    mediump float t = 1.0 - abs(u);\\n    mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n    vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n    gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n    // calculate how much the perspective view squishes or stretches the extrude\\n    float extrude_length_without_perspective = length(dist);\\n    float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n    v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n    v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);\\n    v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);\\n\\n    v_width2 = vec2(outset, inset);\\n}\\n\"},raster:{fragmentSource:\"uniform float u_fade_t;\\nuniform float u_opacity;\\nuniform sampler2D u_image0;\\nuniform sampler2D u_image1;\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nuniform float u_brightness_low;\\nuniform float u_brightness_high;\\n\\nuniform float u_saturation_factor;\\nuniform float u_contrast_factor;\\nuniform vec3 u_spin_weights;\\n\\nvoid main() {\\n\\n    // read and cross-fade colors from the main and parent tiles\\n    vec4 color0 = texture2D(u_image0, v_pos0);\\n    vec4 color1 = texture2D(u_image1, v_pos1);\\n    if (color0.a > 0.0) {\\n        color0.rgb = color0.rgb / color0.a;\\n    }\\n    if (color1.a > 0.0) {\\n        color1.rgb = color1.rgb / color1.a;\\n    }\\n    vec4 color = mix(color0, color1, u_fade_t);\\n    color.a *= u_opacity;\\n    vec3 rgb = color.rgb;\\n\\n    // spin\\n    rgb = vec3(\\n        dot(rgb, u_spin_weights.xyz),\\n        dot(rgb, u_spin_weights.zxy),\\n        dot(rgb, u_spin_weights.yzx));\\n\\n    // saturation\\n    float average = (color.r + color.g + color.b) / 3.0;\\n    rgb += (average - rgb) * u_saturation_factor;\\n\\n    // contrast\\n    rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\\n\\n    // brightness\\n    vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\\n    vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\\n\\n    gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_tl_parent;\\nuniform float u_scale_parent;\\nuniform float u_buffer_scale;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nvoid main() {\\n    gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n    // We are using Int16 for texture position coordinates to give us enough precision for\\n    // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n    // as an arbitrarily high number to preserve adequate precision when rendering.\\n    // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n    // so math for modifying either is consistent.\\n    v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;\\n    v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\\n}\\n\"},symbolIcon:{fragmentSource:\"uniform sampler2D u_texture;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_tex;\\nvarying float v_fade_opacity;\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    lowp float alpha = opacity * v_fade_opacity;\\n    gl_FragColor = texture2D(u_texture, v_tex) * alpha;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\nattribute float a_fade_opacity;\\n\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform float u_fade_change;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec2 v_tex;\\nvarying float v_fade_opacity;\\n\\nvoid main() {\\n    #pragma mapbox: initialize lowp float opacity\\n\\n    vec2 a_pos = a_pos_offset.xy;\\n    vec2 a_offset = a_pos_offset.zw;\\n\\n    vec2 a_tex = a_data.xy;\\n    vec2 a_size = a_data.zw;\\n\\n    highp float segment_angle = -a_projected_pos[2];\\n\\n    float size;\\n    if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n        size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n    } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n        size = a_size[0] / 10.0;\\n    } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n        size = u_size;\\n    } else {\\n        size = u_size;\\n    }\\n\\n    vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n    highp float camera_to_anchor_distance = projectedPoint.w;\\n    // See comments in symbol_sdf.vertex\\n    highp float distance_ratio = u_pitch_with_map ?\\n        camera_to_anchor_distance / u_camera_to_center_distance :\\n        u_camera_to_center_distance / camera_to_anchor_distance;\\n    highp float perspective_ratio = clamp(\\n            0.5 + 0.5 * distance_ratio,\\n            0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles\\n            4.0);\\n\\n    size *= perspective_ratio;\\n\\n    float fontScale = u_is_text ? size / 24.0 : size;\\n\\n    highp float symbol_rotation = 0.0;\\n    if (u_rotate_symbol) {\\n        // See comments in symbol_sdf.vertex\\n        vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n        vec2 a = projectedPoint.xy / projectedPoint.w;\\n        vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n        symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n    }\\n\\n    highp float angle_sin = sin(segment_angle + symbol_rotation);\\n    highp float angle_cos = cos(segment_angle + symbol_rotation);\\n    mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n    vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n    gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);\\n\\n    v_tex = a_tex / u_texsize;\\n    vec2 fade_opacity = unpack_opacity(a_fade_opacity);\\n    float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;\\n    v_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));\\n}\\n\"},symbolSDF:{fragmentSource:\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\n\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform sampler2D u_texture;\\nuniform highp float u_gamma_scale;\\nuniform bool u_is_text;\\n\\nvarying vec2 v_data0;\\nvarying vec3 v_data1;\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 fill_color\\n    #pragma mapbox: initialize highp vec4 halo_color\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize lowp float halo_width\\n    #pragma mapbox: initialize lowp float halo_blur\\n\\n    vec2 tex = v_data0.xy;\\n    float gamma_scale = v_data1.x;\\n    float size = v_data1.y;\\n    float fade_opacity = v_data1[2];\\n\\n    float fontScale = u_is_text ? size / 24.0 : size;\\n\\n    lowp vec4 color = fill_color;\\n    highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);\\n    lowp float buff = (256.0 - 64.0) / 256.0;\\n    if (u_is_halo) {\\n        color = halo_color;\\n        gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);\\n        buff = (6.0 - halo_width / fontScale) / SDF_PX;\\n    }\\n\\n    lowp float dist = texture2D(u_texture, tex).a;\\n    highp float gamma_scaled = gamma * gamma_scale;\\n    highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\\n\\n    gl_FragColor = color * (alpha * opacity * fade_opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n    gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\nattribute float a_fade_opacity;\\n\\n// contents of a_size vary based on the type of property value\\n// used for {text,icon}-size.\\n// For constants, a_size is disabled.\\n// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.\\n// For composite functions:\\n// [ text-size(lowerZoomStop, feature),\\n//   text-size(upperZoomStop, feature) ]\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\n\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_camera_to_center_distance;\\nuniform float u_fade_change;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec2 v_data0;\\nvarying vec3 v_data1;\\n\\nvoid main() {\\n    #pragma mapbox: initialize highp vec4 fill_color\\n    #pragma mapbox: initialize highp vec4 halo_color\\n    #pragma mapbox: initialize lowp float opacity\\n    #pragma mapbox: initialize lowp float halo_width\\n    #pragma mapbox: initialize lowp float halo_blur\\n\\n    vec2 a_pos = a_pos_offset.xy;\\n    vec2 a_offset = a_pos_offset.zw;\\n\\n    vec2 a_tex = a_data.xy;\\n    vec2 a_size = a_data.zw;\\n\\n    highp float segment_angle = -a_projected_pos[2];\\n    float size;\\n\\n    if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n        size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n    } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n        size = a_size[0] / 10.0;\\n    } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n        size = u_size;\\n    } else {\\n        size = u_size;\\n    }\\n\\n    vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n    highp float camera_to_anchor_distance = projectedPoint.w;\\n    // If the label is pitched with the map, layout is done in pitched space,\\n    // which makes labels in the distance smaller relative to viewport space.\\n    // We counteract part of that effect by multiplying by the perspective ratio.\\n    // If the label isn't pitched with the map, we do layout in viewport space,\\n    // which makes labels in the distance larger relative to the features around\\n    // them. We counteract part of that effect by dividing by the perspective ratio.\\n    highp float distance_ratio = u_pitch_with_map ?\\n        camera_to_anchor_distance / u_camera_to_center_distance :\\n        u_camera_to_center_distance / camera_to_anchor_distance;\\n    highp float perspective_ratio = clamp(\\n        0.5 + 0.5 * distance_ratio,\\n        0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles\\n        4.0);\\n\\n    size *= perspective_ratio;\\n\\n    float fontScale = u_is_text ? size / 24.0 : size;\\n\\n    highp float symbol_rotation = 0.0;\\n    if (u_rotate_symbol) {\\n        // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units\\n        // To figure out that angle in projected space, we draw a short horizontal line in tile\\n        // space, project it, and measure its angle in projected space.\\n        vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n        vec2 a = projectedPoint.xy / projectedPoint.w;\\n        vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n        symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n    }\\n\\n    highp float angle_sin = sin(segment_angle + symbol_rotation);\\n    highp float angle_cos = cos(segment_angle + symbol_rotation);\\n    mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n    vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n    gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);\\n    float gamma_scale = gl_Position.w;\\n\\n    vec2 tex = a_tex / u_texsize;\\n    vec2 fade_opacity = unpack_opacity(a_fade_opacity);\\n    float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;\\n    float interpolated_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));\\n\\n    v_data0 = vec2(tex.x, tex.y);\\n    v_data1 = vec3(gamma_scale, size, interpolated_fade_opacity);\\n}\\n\"}},tr=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,er=function(t){var e=Qe[t],r={};e.fragmentSource=e.fragmentSource.replace(tr,function(t,e,n,i,a){return r[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+n+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+n+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n    \"+n+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}),e.vertexSource=e.vertexSource.replace(tr,function(t,e,n,i,a){var o=\"float\"===i?\"vec2\":\"vec4\";return r[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+n+\" \"+o+\" a_\"+a+\";\\nvarying \"+n+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+n+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n    \"+a+\" = unpack_mix_\"+o+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n    \"+n+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+n+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+n+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n    \"+n+\" \"+i+\" \"+a+\" = unpack_mix_\"+o+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n    \"+n+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})};for(var rr in Qe)er(rr);var nr=Qe,ir=function(t,e,r,n){var i=t.gl;this.program=i.createProgram();var o=r.defines().concat(\"#define DEVICE_PIXEL_RATIO \"+a.devicePixelRatio.toFixed(1));n&&o.push(\"#define OVERDRAW_INSPECTOR;\");var s=o.concat(nr.prelude.fragmentSource,e.fragmentSource).join(\"\\n\"),l=o.concat(nr.prelude.vertexSource,e.vertexSource).join(\"\\n\"),c=i.createShader(i.FRAGMENT_SHADER);i.shaderSource(c,s),i.compileShader(c),i.attachShader(this.program,c);var u=i.createShader(i.VERTEX_SHADER);i.shaderSource(u,l),i.compileShader(u),i.attachShader(this.program,u);for(var f=r.layoutAttributes||[],h=0;h<f.length;h++)i.bindAttribLocation(this.program,h,f[h].name);i.linkProgram(this.program),this.numAttributes=i.getProgramParameter(this.program,i.ACTIVE_ATTRIBUTES),this.attributes={},this.uniforms={};for(var p=0;p<this.numAttributes;p++){var d=i.getActiveAttrib(this.program,p);d&&(this.attributes[d.name]=i.getAttribLocation(this.program,d.name))}for(var g=i.getProgramParameter(this.program,i.ACTIVE_UNIFORMS),v=0;v<g;v++){var m=i.getActiveUniform(this.program,v);m&&(this.uniforms[m.name]=i.getUniformLocation(this.program,m.name))}};function ar(e,r,n,i,a){for(var o=0;o<n.length;o++){var s=n[o];if(i.isLessThan(s.tileID))break;if(r.key===s.tileID.key)return;if(s.tileID.isChildOf(r)){for(var l=r.children(1/0),c=0;c<l.length;c++)ar(e,l[c],n.slice(o),i,a);return}}var u=r.overscaledZ-e.overscaledZ,f=new t.CanonicalTileID(u,r.canonical.x-(e.canonical.x<<u),r.canonical.y-(e.canonical.y<<u));a[f.key]=a[f.key]||f}function or(t,e,r,n,i){var a=t.context,o=a.gl,s=i?t.useProgram(\"collisionCircle\"):t.useProgram(\"collisionBox\");a.setDepthMode(qt.disabled),a.setStencilMode(Ht.disabled),a.setColorMode(t.colorModeForRenderPass());for(var l=0;l<n.length;l++){var c=n[l],u=e.getTile(c),f=u.getBucket(r);if(f){var h=i?f.collisionCircle:f.collisionBox;if(h){o.uniformMatrix4fv(s.uniforms.u_matrix,!1,c.posMatrix),i||a.lineWidth.set(1),o.uniform1f(s.uniforms.u_camera_to_center_distance,t.transform.cameraToCenterDistance);var p=Te(u,1,t.transform.zoom),d=Math.pow(2,t.transform.zoom-u.tileID.overscaledZ);o.uniform1f(s.uniforms.u_pixels_to_tile_units,p),o.uniform2f(s.uniforms.u_extrude_scale,t.transform.pixelsToGLUnits[0]/(p*d),t.transform.pixelsToGLUnits[1]/(p*d)),o.uniform1f(s.uniforms.u_overscale_factor,u.tileID.overscaleFactor()),s.draw(a,i?o.TRIANGLES:o.LINES,r.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,null,h.collisionVertexBuffer,null)}}}}ir.prototype.draw=function(t,e,r,n,i,a,o,s,l){for(var c,u=t.gl,f=(c={},c[u.LINES]=2,c[u.TRIANGLES]=3,c)[e],h=0,p=a.get();h<p.length;h+=1){var d=p[h],g=d.vaos||(d.vaos={});(g[r]||(g[r]=new Q)).bind(t,this,n,o?o.getPaintVertexBuffers():[],i,d.vertexOffset,s,l),u.drawElements(e,d.primitiveLength*f,u.UNSIGNED_SHORT,d.primitiveOffset*f*2)}};var sr=t.mat4.identity(new Float32Array(16)),lr=t.default$19.layout;function cr(t,e,r,n,i,a,o,s,l,c){var u,f=t.context,h=f.gl,p=t.transform,d=\"map\"===s,g=\"map\"===l,v=d&&\"line\"===r.layout.get(\"symbol-placement\"),m=d&&!g&&!v,y=g;f.setDepthMode(y?t.depthModeForSublayer(0,qt.ReadOnly):qt.disabled);for(var x=0,b=n;x<b.length;x+=1){var _=b[x],w=e.getTile(_),k=w.getBucket(r);if(k){var A=i?k.text:k.icon;if(A&&A.segments.get().length){var M=A.programConfigurations.get(r.id),T=i||k.sdfIcons,S=i?k.textSizeData:k.iconSizeData;if(u||(u=t.useProgram(T?\"symbolSDF\":\"symbolIcon\",M),M.setUniforms(t.context,u,r.paint,{zoom:t.transform.zoom}),ur(u,t,r,i,m,g,S)),f.activeTexture.set(h.TEXTURE0),h.uniform1i(u.uniforms.u_texture,0),i)w.glyphAtlasTexture.bind(h.LINEAR,h.CLAMP_TO_EDGE),h.uniform2fv(u.uniforms.u_texsize,w.glyphAtlasTexture.size);else{var C=1!==r.layout.get(\"icon-size\").constantOr(0)||k.iconsNeedLinear,E=g||0!==p.pitch;w.iconAtlasTexture.bind(T||t.options.rotating||t.options.zooming||C||E?h.LINEAR:h.NEAREST,h.CLAMP_TO_EDGE),h.uniform2fv(u.uniforms.u_texsize,w.iconAtlasTexture.size)}h.uniformMatrix4fv(u.uniforms.u_matrix,!1,t.translatePosMatrix(_.posMatrix,w,a,o));var L=Te(w,1,t.transform.zoom),z=fe(_.posMatrix,g,d,t.transform,L),O=he(_.posMatrix,g,d,t.transform,L);h.uniformMatrix4fv(u.uniforms.u_gl_coord_matrix,!1,t.translatePosMatrix(O,w,a,o,!0)),v?(h.uniformMatrix4fv(u.uniforms.u_label_plane_matrix,!1,sr),ge(k,_.posMatrix,t,i,z,O,g,c)):h.uniformMatrix4fv(u.uniforms.u_label_plane_matrix,!1,z),h.uniform1f(u.uniforms.u_fade_change,t.options.fadeDuration?t.symbolFadeChange:1),fr(u,M,t,r,w,A,i,T,g)}}}}function ur(e,r,n,i,a,o,s){var l=r.context.gl,c=r.transform;l.uniform1i(e.uniforms.u_pitch_with_map,o?1:0),l.uniform1f(e.uniforms.u_is_text,i?1:0),l.uniform1f(e.uniforms.u_pitch,c.pitch/360*2*Math.PI);var u=\"constant\"===s.functionType||\"source\"===s.functionType,f=\"constant\"===s.functionType||\"camera\"===s.functionType;l.uniform1i(e.uniforms.u_is_size_zoom_constant,u?1:0),l.uniform1i(e.uniforms.u_is_size_feature_constant,f?1:0),l.uniform1f(e.uniforms.u_camera_to_center_distance,c.cameraToCenterDistance);var h=t.evaluateSizeForZoom(s,c.zoom,lr.properties[i?\"text-size\":\"icon-size\"]);void 0!==h.uSizeT&&l.uniform1f(e.uniforms.u_size_t,h.uSizeT),void 0!==h.uSize&&l.uniform1f(e.uniforms.u_size,h.uSize),l.uniform1f(e.uniforms.u_aspect_ratio,c.width/c.height),l.uniform1i(e.uniforms.u_rotate_symbol,a?1:0)}function fr(t,e,r,n,i,a,o,s,l){var c=r.context,u=c.gl,f=r.transform;if(s){var h=0!==n.paint.get(o?\"text-halo-width\":\"icon-halo-width\").constantOr(1),p=l?Math.cos(f._pitch)*f.cameraToCenterDistance:1;u.uniform1f(t.uniforms.u_gamma_scale,p),h&&(u.uniform1f(t.uniforms.u_is_halo,1),hr(a,n,c,t)),u.uniform1f(t.uniforms.u_is_halo,0)}hr(a,n,c,t)}function hr(t,e,r,n){n.draw(r,r.gl.TRIANGLES,e.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,t.programConfigurations.get(e.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer)}function pr(t,e,r,n,i,o,s,l,c){var u,f,h,p,d=e.context,g=d.gl,v=i.paint.get(\"line-dasharray\"),m=i.paint.get(\"line-pattern\");if(l||c){var y=1/Te(r,1,e.transform.tileZoom);if(v){u=e.lineAtlas.getDash(v.from,\"round\"===i.layout.get(\"line-cap\")),f=e.lineAtlas.getDash(v.to,\"round\"===i.layout.get(\"line-cap\"));var x=u.width*v.fromScale,b=f.width*v.toScale;g.uniform2f(t.uniforms.u_patternscale_a,y/x,-u.height/2),g.uniform2f(t.uniforms.u_patternscale_b,y/b,-f.height/2),g.uniform1f(t.uniforms.u_sdfgamma,e.lineAtlas.width/(256*Math.min(x,b)*a.devicePixelRatio)/2)}else if(m){if(h=e.imageManager.getPattern(m.from),p=e.imageManager.getPattern(m.to),!h||!p)return;g.uniform2f(t.uniforms.u_pattern_size_a,h.displaySize[0]*m.fromScale/y,h.displaySize[1]),g.uniform2f(t.uniforms.u_pattern_size_b,p.displaySize[0]*m.toScale/y,p.displaySize[1]);var _=e.imageManager.getPixelSize(),w=_.width,k=_.height;g.uniform2fv(t.uniforms.u_texsize,[w,k])}g.uniform2f(t.uniforms.u_gl_units_to_pixels,1/e.transform.pixelsToGLUnits[0],1/e.transform.pixelsToGLUnits[1])}l&&(v?(g.uniform1i(t.uniforms.u_image,0),d.activeTexture.set(g.TEXTURE0),e.lineAtlas.bind(d),g.uniform1f(t.uniforms.u_tex_y_a,u.y),g.uniform1f(t.uniforms.u_tex_y_b,f.y),g.uniform1f(t.uniforms.u_mix,v.t)):m&&(g.uniform1i(t.uniforms.u_image,0),d.activeTexture.set(g.TEXTURE0),e.imageManager.bind(d),g.uniform2fv(t.uniforms.u_pattern_tl_a,h.tl),g.uniform2fv(t.uniforms.u_pattern_br_a,h.br),g.uniform2fv(t.uniforms.u_pattern_tl_b,p.tl),g.uniform2fv(t.uniforms.u_pattern_br_b,p.br),g.uniform1f(t.uniforms.u_fade,m.t))),d.setStencilMode(e.stencilModeForClipping(o));var A=e.translatePosMatrix(o.posMatrix,r,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"));if(g.uniformMatrix4fv(t.uniforms.u_matrix,!1,A),g.uniform1f(t.uniforms.u_ratio,1/Te(r,1,e.transform.zoom)),i.paint.get(\"line-gradient\")){d.activeTexture.set(g.TEXTURE0);var M=i.gradientTexture;if(!i.gradient)return;M||(M=i.gradientTexture=new z(d,i.gradient,g.RGBA)),M.bind(g.LINEAR,g.CLAMP_TO_EDGE),g.uniform1i(t.uniforms.u_image,0)}t.draw(d,g.TRIANGLES,i.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,s)}var dr=function(t,e){if(!t)return!1;var r=e.imageManager.getPattern(t.from),n=e.imageManager.getPattern(t.to);return!r||!n},gr=function(t,e,r){var n=e.context,i=n.gl,a=e.imageManager.getPattern(t.from),o=e.imageManager.getPattern(t.to);i.uniform1i(r.uniforms.u_image,0),i.uniform2fv(r.uniforms.u_pattern_tl_a,a.tl),i.uniform2fv(r.uniforms.u_pattern_br_a,a.br),i.uniform2fv(r.uniforms.u_pattern_tl_b,o.tl),i.uniform2fv(r.uniforms.u_pattern_br_b,o.br);var s=e.imageManager.getPixelSize(),l=s.width,c=s.height;i.uniform2fv(r.uniforms.u_texsize,[l,c]),i.uniform1f(r.uniforms.u_mix,t.t),i.uniform2fv(r.uniforms.u_pattern_size_a,a.displaySize),i.uniform2fv(r.uniforms.u_pattern_size_b,o.displaySize),i.uniform1f(r.uniforms.u_scale_a,t.fromScale),i.uniform1f(r.uniforms.u_scale_b,t.toScale),n.activeTexture.set(i.TEXTURE0),e.imageManager.bind(e.context)},vr=function(t,e,r){var n=e.context.gl;n.uniform1f(r.uniforms.u_tile_units_to_pixels,1/Te(t,1,e.transform.tileZoom));var i=Math.pow(2,t.tileID.overscaledZ),a=t.tileSize*Math.pow(2,e.transform.tileZoom)/i,o=a*(t.tileID.canonical.x+t.tileID.wrap*i),s=a*t.tileID.canonical.y;n.uniform2f(r.uniforms.u_pixel_coord_upper,o>>16,s>>16),n.uniform2f(r.uniforms.u_pixel_coord_lower,65535&o,65535&s)};function mr(t,e,r,n,i){if(!dr(r.paint.get(\"fill-pattern\"),t))for(var a=!0,o=0,s=n;o<s.length;o+=1){var l=s[o],c=e.getTile(l),u=c.getBucket(r);u&&(t.context.setStencilMode(t.stencilModeForClipping(l)),i(t,e,r,c,l,u,a),a=!1)}}function yr(t,e,r,n,i,a,o){var s=t.context.gl,l=a.programConfigurations.get(r.id);br(\"fill\",r.paint.get(\"fill-pattern\"),t,l,r,n,i,o).draw(t.context,s.TRIANGLES,r.id,a.layoutVertexBuffer,a.indexBuffer,a.segments,l)}function xr(t,e,r,n,i,a,o){var s=t.context.gl,l=a.programConfigurations.get(r.id),c=br(\"fillOutline\",r.getPaintProperty(\"fill-outline-color\")?null:r.paint.get(\"fill-pattern\"),t,l,r,n,i,o);s.uniform2f(c.uniforms.u_world,s.drawingBufferWidth,s.drawingBufferHeight),c.draw(t.context,s.LINES,r.id,a.layoutVertexBuffer,a.indexBuffer2,a.segments2,l)}function br(t,e,r,n,i,a,o,s){var l,c=r.context.program.get();return e?(l=r.useProgram(t+\"Pattern\",n),(s||l.program!==c)&&(n.setUniforms(r.context,l,i.paint,{zoom:r.transform.zoom}),gr(e,r,l)),vr(a,r,l)):(l=r.useProgram(t,n),(s||l.program!==c)&&n.setUniforms(r.context,l,i.paint,{zoom:r.transform.zoom})),r.context.gl.uniformMatrix4fv(l.uniforms.u_matrix,!1,r.translatePosMatrix(o.posMatrix,a,i.paint.get(\"fill-translate\"),i.paint.get(\"fill-translate-anchor\"))),l}var _r=t.default$20.mat3,wr=t.default$20.mat4,kr=t.default$20.vec3;function Ar(t,e,r,n,i,a,o){var s=t.context,l=s.gl,c=r.paint.get(\"fill-extrusion-pattern\"),u=t.context.program.get(),f=a.programConfigurations.get(r.id),h=t.useProgram(c?\"fillExtrusionPattern\":\"fillExtrusion\",f);if((o||h.program!==u)&&f.setUniforms(s,h,r.paint,{zoom:t.transform.zoom}),c){if(dr(c,t))return;gr(c,t,h),vr(n,t,h),l.uniform1f(h.uniforms.u_height_factor,-Math.pow(2,i.overscaledZ)/n.tileSize/8)}t.context.gl.uniformMatrix4fv(h.uniforms.u_matrix,!1,t.translatePosMatrix(i.posMatrix,n,r.paint.get(\"fill-extrusion-translate\"),r.paint.get(\"fill-extrusion-translate-anchor\"))),function(t,e){var r=e.context.gl,n=e.style.light,i=n.properties.get(\"position\"),a=[i.x,i.y,i.z],o=_r.create();\"viewport\"===n.properties.get(\"anchor\")&&_r.fromRotation(o,-e.transform.angle),kr.transformMat3(a,a,o);var s=n.properties.get(\"color\");r.uniform3fv(t.uniforms.u_lightpos,a),r.uniform1f(t.uniforms.u_lightintensity,n.properties.get(\"intensity\")),r.uniform3f(t.uniforms.u_lightcolor,s.r,s.g,s.b)}(h,t),h.draw(s,l.TRIANGLES,r.id,a.layoutVertexBuffer,a.indexBuffer,a.segments,f)}function Mr(e,r,n){var i=e.context,a=i.gl,o=r.fbo;if(o){var s=e.useProgram(\"hillshade\"),l=e.transform.calculatePosMatrix(r.tileID.toUnwrapped(),!0);!function(t,e,r){var n=r.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===r.paint.get(\"hillshade-illumination-anchor\")&&(n-=e.transform.angle),e.context.gl.uniform2f(t.uniforms.u_light,r.paint.get(\"hillshade-exaggeration\"),n)}(s,e,n);var c=function(e,r){var n=r.toCoordinate(),i=new t.default$17(n.column,n.row+1,n.zoom);return[e.transform.coordinateLocation(n).lat,e.transform.coordinateLocation(i).lat]}(e,r.tileID);i.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,o.colorAttachment.get()),a.uniformMatrix4fv(s.uniforms.u_matrix,!1,l),a.uniform2fv(s.uniforms.u_latrange,c),a.uniform1i(s.uniforms.u_image,0);var u=n.paint.get(\"hillshade-shadow-color\");a.uniform4f(s.uniforms.u_shadow,u.r,u.g,u.b,u.a);var f=n.paint.get(\"hillshade-highlight-color\");a.uniform4f(s.uniforms.u_highlight,f.r,f.g,f.b,f.a);var h=n.paint.get(\"hillshade-accent-color\");if(a.uniform4f(s.uniforms.u_accent,h.r,h.g,h.b,h.a),r.maskedBoundsBuffer&&r.maskedIndexBuffer&&r.segments)s.draw(i,a.TRIANGLES,n.id,r.maskedBoundsBuffer,r.maskedIndexBuffer,r.segments);else{var p=e.rasterBoundsBuffer;e.rasterBoundsVAO.bind(i,s,p,[]),a.drawArrays(a.TRIANGLE_STRIP,0,p.length)}}}function Tr(e,r,n){var i=e.context,a=i.gl;if(r.dem&&r.dem.level){var o=r.dem.level.dim,s=r.dem.getPixels();if(i.activeTexture.set(a.TEXTURE1),i.pixelStoreUnpackPremultiplyAlpha.set(!1),r.demTexture=r.demTexture||e.getTileTexture(r.tileSize),r.demTexture){var l=r.demTexture;l.update(s,{premultiply:!1}),l.bind(a.NEAREST,a.CLAMP_TO_EDGE)}else r.demTexture=new z(i,s,a.RGBA,{premultiply:!1}),r.demTexture.bind(a.NEAREST,a.CLAMP_TO_EDGE);i.activeTexture.set(a.TEXTURE0);var c=r.fbo;if(!c){var u=new z(i,{width:o,height:o,data:null},a.RGBA);u.bind(a.LINEAR,a.CLAMP_TO_EDGE),(c=r.fbo=i.createFramebuffer(o,o)).colorAttachment.set(u.texture)}i.bindFramebuffer.set(c.framebuffer),i.viewport.set([0,0,o,o]);var f=t.mat4.create();t.mat4.ortho(f,0,t.default$8,-t.default$8,0,0,1),t.mat4.translate(f,f,[0,-t.default$8,0]);var h=e.useProgram(\"hillshadePrepare\");a.uniformMatrix4fv(h.uniforms.u_matrix,!1,f),a.uniform1f(h.uniforms.u_zoom,r.tileID.overscaledZ),a.uniform2fv(h.uniforms.u_dimension,[2*o,2*o]),a.uniform1i(h.uniforms.u_image,1),a.uniform1f(h.uniforms.u_maxzoom,n);var p=e.rasterBoundsBuffer;e.rasterBoundsVAO.bind(i,h,p,[]),a.drawArrays(a.TRIANGLE_STRIP,0,p.length),r.needsHillshadePrepare=!1}}function Sr(e,r,n,i,o){var s=i.paint.get(\"raster-fade-duration\");if(s>0){var l=a.now(),c=(l-e.timeAdded)/s,u=r?(l-r.timeAdded)/s:-1,f=n.getSource(),h=o.coveringZoomLevel({tileSize:f.tileSize,roundZoom:f.roundZoom}),p=!r||Math.abs(r.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=p&&e.refreshedUponExpiration?1:t.clamp(p?c:1-u,0,1);return e.refreshedUponExpiration&&c>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return{opacity:1,mix:0}}function Cr(e,r,n){var i=e.context,o=i.gl;i.lineWidth.set(1*a.devicePixelRatio);var s=n.posMatrix,l=e.useProgram(\"debug\");i.setDepthMode(qt.disabled),i.setStencilMode(Ht.disabled),i.setColorMode(e.colorModeForRenderPass()),o.uniformMatrix4fv(l.uniforms.u_matrix,!1,s),o.uniform4f(l.uniforms.u_color,1,0,0,1),e.debugVAO.bind(i,l,e.debugBuffer,[]),o.drawArrays(o.LINE_STRIP,0,e.debugBuffer.length);for(var c=function(t,e,r,n){n=n||1;var i,a,o,s,l,c,u,f,h=[];for(i=0,a=t.length;i<a;i++)if(l=Er[t[i]]){for(f=null,o=0,s=l[1].length;o<s;o+=2)-1===l[1][o]&&-1===l[1][o+1]?f=null:(c=e+l[1][o]*n,u=200-l[1][o+1]*n,f&&h.push(f.x,f.y,c,u),f={x:c,y:u});e+=l[0]*n}return h}(n.toString(),50,0,5),u=new t.PosArray,f=0;f<c.length;f+=2)u.emplaceBack(c[f],c[f+1]);var h=i.createVertexBuffer(u,Ke.members);(new Q).bind(i,l,h,[]),o.uniform4f(l.uniforms.u_color,1,1,1,1);for(var p=r.getTile(n).tileSize,d=t.default$8/(Math.pow(2,e.transform.zoom-n.overscaledZ)*p),g=[[-1,-1],[-1,1],[1,-1],[1,1]],v=0;v<g.length;v++){var m=g[v];o.uniformMatrix4fv(l.uniforms.u_matrix,!1,t.mat4.translate([],s,[d*m[0],d*m[1],0])),o.drawArrays(o.LINES,0,h.length)}o.uniform4f(l.uniforms.u_color,0,0,0,1),o.uniformMatrix4fv(l.uniforms.u_matrix,!1,s),o.drawArrays(o.LINES,0,h.length)}var Er={\" \":[16,[]],\"!\":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'\"':[16,[4,21,4,14,-1,-1,12,21,12,14]],\"#\":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],\"%\":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],\"&\":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],\"'\":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],\"(\":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],\")\":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],\"*\":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],\"+\":[26,[13,18,13,0,-1,-1,4,9,22,9]],\",\":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"-\":[26,[4,9,22,9]],\".\":[10,[5,2,4,1,5,0,6,1,5,2]],\"/\":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],\":\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],\";\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"<\":[24,[20,18,4,9,20,0]],\"=\":[26,[4,12,22,12,-1,-1,4,6,22,6]],\">\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]},Lr={symbol:function(t,e,r,n){if(\"translucent\"===t.renderPass){var i=t.context;i.setStencilMode(Ht.disabled),i.setColorMode(t.colorModeForRenderPass()),0!==r.paint.get(\"icon-opacity\").constantOr(1)&&cr(t,e,r,n,!1,r.paint.get(\"icon-translate\"),r.paint.get(\"icon-translate-anchor\"),r.layout.get(\"icon-rotation-alignment\"),r.layout.get(\"icon-pitch-alignment\"),r.layout.get(\"icon-keep-upright\")),0!==r.paint.get(\"text-opacity\").constantOr(1)&&cr(t,e,r,n,!0,r.paint.get(\"text-translate\"),r.paint.get(\"text-translate-anchor\"),r.layout.get(\"text-rotation-alignment\"),r.layout.get(\"text-pitch-alignment\"),r.layout.get(\"text-keep-upright\")),e.map.showCollisionBoxes&&function(t,e,r,n){or(t,e,r,n,!1),or(t,e,r,n,!0)}(t,e,r,n)}},circle:function(t,e,r,n){if(\"translucent\"===t.renderPass){var i=r.paint.get(\"circle-opacity\"),a=r.paint.get(\"circle-stroke-width\"),o=r.paint.get(\"circle-stroke-opacity\");if(0!==i.constantOr(1)||0!==a.constantOr(1)&&0!==o.constantOr(1)){var s=t.context,l=s.gl;s.setDepthMode(t.depthModeForSublayer(0,qt.ReadOnly)),s.setStencilMode(Ht.disabled),s.setColorMode(t.colorModeForRenderPass());for(var c=!0,u=0;u<n.length;u++){var f=n[u],h=e.getTile(f),p=h.getBucket(r);if(p){var d=t.context.program.get(),g=p.programConfigurations.get(r.id),v=t.useProgram(\"circle\",g);if((c||v.program!==d)&&(g.setUniforms(s,v,r.paint,{zoom:t.transform.zoom}),c=!1),l.uniform1f(v.uniforms.u_camera_to_center_distance,t.transform.cameraToCenterDistance),l.uniform1i(v.uniforms.u_scale_with_map,\"map\"===r.paint.get(\"circle-pitch-scale\")?1:0),\"map\"===r.paint.get(\"circle-pitch-alignment\")){l.uniform1i(v.uniforms.u_pitch_with_map,1);var m=Te(h,1,t.transform.zoom);l.uniform2f(v.uniforms.u_extrude_scale,m,m)}else l.uniform1i(v.uniforms.u_pitch_with_map,0),l.uniform2fv(v.uniforms.u_extrude_scale,t.transform.pixelsToGLUnits);l.uniformMatrix4fv(v.uniforms.u_matrix,!1,t.translatePosMatrix(f.posMatrix,h,r.paint.get(\"circle-translate\"),r.paint.get(\"circle-translate-anchor\"))),v.draw(s,l.TRIANGLES,r.id,p.layoutVertexBuffer,p.indexBuffer,p.segments,g)}}}}},heatmap:function(e,r,n,i){if(0!==n.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===e.renderPass){var a=e.context,o=a.gl;a.setDepthMode(e.depthModeForSublayer(0,qt.ReadOnly)),a.setStencilMode(Ht.disabled),function(t,e,r){var n=t.gl;t.activeTexture.set(n.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);var i=r.heatmapFbo;if(i)n.bindTexture(n.TEXTURE_2D,i.colorAttachment.get()),t.bindFramebuffer.set(i.framebuffer);else{var a=n.createTexture();n.bindTexture(n.TEXTURE_2D,a),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),i=r.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4),function t(e,r,n,i){var a=e.gl;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,r.width/4,r.height/4,0,a.RGBA,e.extTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:a.UNSIGNED_BYTE,null),i.colorAttachment.set(n),e.extTextureHalfFloat&&a.checkFramebufferStatus(a.FRAMEBUFFER)!==a.FRAMEBUFFER_COMPLETE&&(e.extTextureHalfFloat=null,i.colorAttachment.setDirty(),t(e,r,n,i))}(t,e,a,i)}}(a,e,n),a.clear({color:t.default$6.transparent}),a.setColorMode(new Gt([o.ONE,o.ONE],t.default$6.transparent,[!0,!0,!0,!0]));for(var s=!0,l=0;l<i.length;l++){var c=i[l];if(!r.hasRenderableParent(c)){var u=r.getTile(c),f=u.getBucket(n);if(f){var h=e.context.program.get(),p=f.programConfigurations.get(n.id),d=e.useProgram(\"heatmap\",p),g=e.transform.zoom;(s||d.program!==h)&&(p.setUniforms(e.context,d,n.paint,{zoom:g}),s=!1),o.uniform1f(d.uniforms.u_extrude_scale,Te(u,1,g)),o.uniform1f(d.uniforms.u_intensity,n.paint.get(\"heatmap-intensity\")),o.uniformMatrix4fv(d.uniforms.u_matrix,!1,c.posMatrix),d.draw(a,o.TRIANGLES,n.id,f.layoutVertexBuffer,f.indexBuffer,f.segments,p)}}}a.viewport.set([0,0,e.width,e.height])}else\"translucent\"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,r){var n=e.context,i=n.gl,a=r.heatmapFbo;if(a){n.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,a.colorAttachment.get()),n.activeTexture.set(i.TEXTURE1);var o=r.colorRampTexture;o||(o=r.colorRampTexture=new z(n,r.colorRamp,i.RGBA)),o.bind(i.LINEAR,i.CLAMP_TO_EDGE),n.setDepthMode(qt.disabled);var s=e.useProgram(\"heatmapTexture\"),l=r.paint.get(\"heatmap-opacity\");i.uniform1f(s.uniforms.u_opacity,l),i.uniform1i(s.uniforms.u_image,0),i.uniform1i(s.uniforms.u_color_ramp,1);var c=t.mat4.create();t.mat4.ortho(c,0,e.width,e.height,0,0,1),i.uniformMatrix4fv(s.uniforms.u_matrix,!1,c),i.uniform2f(s.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),e.viewportVAO.bind(e.context,s,e.viewportBuffer,[]),i.drawArrays(i.TRIANGLE_STRIP,0,4)}}(e,n))},line:function(t,e,r,n){if(\"translucent\"===t.renderPass&&0!==r.paint.get(\"line-opacity\").constantOr(1)){var i=t.context;i.setDepthMode(t.depthModeForSublayer(0,qt.ReadOnly)),i.setColorMode(t.colorModeForRenderPass());for(var a,o=r.paint.get(\"line-dasharray\")?\"lineSDF\":r.paint.get(\"line-pattern\")?\"linePattern\":r.paint.get(\"line-gradient\")?\"lineGradient\":\"line\",s=!0,l=0,c=n;l<c.length;l+=1){var u=c[l],f=e.getTile(u),h=f.getBucket(r);if(h){var p=h.programConfigurations.get(r.id),d=t.context.program.get(),g=t.useProgram(o,p),v=s||g.program!==d,m=a!==f.tileID.overscaledZ;v&&p.setUniforms(t.context,g,r.paint,{zoom:t.transform.zoom}),pr(g,t,f,h,r,u,p,v,m),a=f.tileID.overscaledZ,s=!1}}}},fill:function(e,r,n,i){var a=n.paint.get(\"fill-color\"),o=n.paint.get(\"fill-opacity\");if(0!==o.constantOr(1)){var s=e.context;s.setColorMode(e.colorModeForRenderPass());var l=n.paint.get(\"fill-pattern\")||1!==a.constantOr(t.default$6.transparent).a||1!==o.constantOr(0)?\"translucent\":\"opaque\";e.renderPass===l&&(s.setDepthMode(e.depthModeForSublayer(1,\"opaque\"===e.renderPass?qt.ReadWrite:qt.ReadOnly)),mr(e,r,n,i,yr)),\"translucent\"===e.renderPass&&n.paint.get(\"fill-antialias\")&&(s.lineWidth.set(2),s.setDepthMode(e.depthModeForSublayer(n.getPaintProperty(\"fill-outline-color\")?2:0,qt.ReadOnly)),mr(e,r,n,i,xr))}},\"fill-extrusion\":function(e,r,n,i){if(0!==n.paint.get(\"fill-extrusion-opacity\"))if(\"offscreen\"===e.renderPass){!function(e,r){var n=e.context,i=n.gl,a=r.viewportFrame;if(e.depthRboNeedsClear&&e.setupOffscreenDepthRenderbuffer(),!a){var o=new z(n,{width:e.width,height:e.height,data:null},i.RGBA);o.bind(i.LINEAR,i.CLAMP_TO_EDGE),(a=r.viewportFrame=n.createFramebuffer(e.width,e.height)).colorAttachment.set(o.texture)}n.bindFramebuffer.set(a.framebuffer),a.depthAttachment.set(e.depthRbo),e.depthRboNeedsClear&&(n.clear({depth:1}),e.depthRboNeedsClear=!1),n.clear({color:t.default$6.transparent}),n.setStencilMode(Ht.disabled),n.setDepthMode(new qt(i.LEQUAL,qt.ReadWrite,[0,1])),n.setColorMode(e.colorModeForRenderPass())}(e,n);for(var a=!0,o=0,s=i;o<s.length;o+=1){var l=s[o],c=r.getTile(l),u=c.getBucket(n);u&&(Ar(e,0,n,c,l,u,a),a=!1)}}else\"translucent\"===e.renderPass&&function(t,e){var r=e.viewportFrame;if(r){var n=t.context,i=n.gl,a=t.useProgram(\"extrusionTexture\");n.setStencilMode(Ht.disabled),n.setDepthMode(qt.disabled),n.setColorMode(t.colorModeForRenderPass()),n.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,r.colorAttachment.get()),i.uniform1f(a.uniforms.u_opacity,e.paint.get(\"fill-extrusion-opacity\")),i.uniform1i(a.uniforms.u_image,0);var o=wr.create();wr.ortho(o,0,t.width,t.height,0,0,1),i.uniformMatrix4fv(a.uniforms.u_matrix,!1,o),i.uniform2f(a.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),t.viewportVAO.bind(n,a,t.viewportBuffer,[]),i.drawArrays(i.TRIANGLE_STRIP,0,4)}}(e,n)},hillshade:function(t,e,r,n){if(\"offscreen\"===t.renderPass||\"translucent\"===t.renderPass){var i=t.context,a=e.getSource().maxzoom;i.setDepthMode(t.depthModeForSublayer(0,qt.ReadOnly)),i.setStencilMode(Ht.disabled),i.setColorMode(t.colorModeForRenderPass());for(var o=0,s=n;o<s.length;o+=1){var l=s[o],c=e.getTile(l);c.needsHillshadePrepare&&\"offscreen\"===t.renderPass?Tr(t,c,a):\"translucent\"===t.renderPass&&Mr(t,c,r)}i.viewport.set([0,0,t.width,t.height])}},raster:function(t,e,r,n){if(\"translucent\"===t.renderPass&&0!==r.paint.get(\"raster-opacity\")){var i,a,o=t.context,s=o.gl,l=e.getSource(),c=t.useProgram(\"raster\");o.setStencilMode(Ht.disabled),o.setColorMode(t.colorModeForRenderPass()),s.uniform1f(c.uniforms.u_brightness_low,r.paint.get(\"raster-brightness-min\")),s.uniform1f(c.uniforms.u_brightness_high,r.paint.get(\"raster-brightness-max\")),s.uniform1f(c.uniforms.u_saturation_factor,(i=r.paint.get(\"raster-saturation\"))>0?1-1/(1.001-i):-i),s.uniform1f(c.uniforms.u_contrast_factor,(a=r.paint.get(\"raster-contrast\"))>0?1/(1-a):1+a),s.uniform3fv(c.uniforms.u_spin_weights,function(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}(r.paint.get(\"raster-hue-rotate\"))),s.uniform1f(c.uniforms.u_buffer_scale,1),s.uniform1i(c.uniforms.u_image0,0),s.uniform1i(c.uniforms.u_image1,1);for(var u=n.length&&n[0].overscaledZ,f=0,h=n;f<h.length;f+=1){var p=h[f];o.setDepthMode(t.depthModeForSublayer(p.overscaledZ-u,1===r.paint.get(\"raster-opacity\")?qt.ReadWrite:qt.ReadOnly,s.LESS));var d=e.getTile(p),g=t.transform.calculatePosMatrix(p.toUnwrapped(),!0);d.registerFadeDuration(r.paint.get(\"raster-fade-duration\")),s.uniformMatrix4fv(c.uniforms.u_matrix,!1,g);var v=e.findLoadedParent(p,0,{}),m=Sr(d,v,e,r,t.transform),y=void 0,x=void 0;if(o.activeTexture.set(s.TEXTURE0),d.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),o.activeTexture.set(s.TEXTURE1),v?(v.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),y=Math.pow(2,v.tileID.overscaledZ-d.tileID.overscaledZ),x=[d.tileID.canonical.x*y%1,d.tileID.canonical.y*y%1]):d.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),s.uniform2fv(c.uniforms.u_tl_parent,x||[0,0]),s.uniform1f(c.uniforms.u_scale_parent,y||1),s.uniform1f(c.uniforms.u_fade_t,m.mix),s.uniform1f(c.uniforms.u_opacity,m.opacity*r.paint.get(\"raster-opacity\")),l instanceof tt){var b=l.boundsBuffer;l.boundsVAO.bind(o,c,b,[]),s.drawArrays(s.TRIANGLE_STRIP,0,b.length)}else if(d.maskedBoundsBuffer&&d.maskedIndexBuffer&&d.segments)c.draw(o,s.TRIANGLES,r.id,d.maskedBoundsBuffer,d.maskedIndexBuffer,d.segments);else{var _=t.rasterBoundsBuffer;t.rasterBoundsVAO.bind(o,c,_,[]),s.drawArrays(s.TRIANGLE_STRIP,0,_.length)}}}},background:function(t,e,r){var n=r.paint.get(\"background-color\"),i=r.paint.get(\"background-opacity\");if(0!==i){var a=t.context,o=a.gl,s=t.transform,l=s.tileSize,c=r.paint.get(\"background-pattern\"),u=c||1!==n.a||1!==i?\"translucent\":\"opaque\";if(t.renderPass===u){var f;if(a.setStencilMode(Ht.disabled),a.setDepthMode(t.depthModeForSublayer(0,\"opaque\"===u?qt.ReadWrite:qt.ReadOnly)),a.setColorMode(t.colorModeForRenderPass()),c){if(dr(c,t))return;f=t.useProgram(\"backgroundPattern\"),gr(c,t,f),t.tileExtentPatternVAO.bind(a,f,t.tileExtentBuffer,[])}else f=t.useProgram(\"background\"),o.uniform4fv(f.uniforms.u_color,[n.r,n.g,n.b,n.a]),t.tileExtentVAO.bind(a,f,t.tileExtentBuffer,[]);o.uniform1f(f.uniforms.u_opacity,i);for(var h=0,p=s.coveringTiles({tileSize:l});h<p.length;h+=1){var d=p[h];c&&vr({tileID:d,tileSize:l},t,f),o.uniformMatrix4fv(f.uniforms.u_matrix,!1,t.transform.calculatePosMatrix(d.toUnwrapped())),o.drawArrays(o.TRIANGLE_STRIP,0,t.tileExtentBuffer.length)}}}},debug:function(t,e,r){for(var n=0;n<r.length;n++)Cr(t,e,r[n])}},zr=function(e,r){this.context=new Wt(e),this.transform=r,this._tileTextures={},this.setup(),this.numSublayers=Yt.maxUnderzooming+Yt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.depthRboNeedsClear=!0,this.emptyProgramConfiguration=new t.default$24,this.crossTileSymbolIndex=new Ye};function Or(t,e){if(t.row>e.row){var r=t;t=e,e=r}return{x0:t.column,y0:t.row,x1:e.column,y1:e.row,dx:e.column-t.column,dy:e.row-t.row}}function Ir(t,e,r,n,i){var a=Math.max(r,Math.floor(e.y0)),o=Math.min(n,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx<e.x1:t.x1-e.dy/t.dy*t.dx<e.x0){var s=t;t=e,e=s}for(var l=t.dx/t.dy,c=e.dx/e.dy,u=t.dx>0,f=e.dx<0,h=a;h<o;h++){var p=l*Math.max(0,Math.min(t.dy,h+u-t.y0))+t.x0,d=c*Math.max(0,Math.min(e.dy,h+f-e.y0))+e.x0;i(Math.floor(d),Math.ceil(p),h)}}function Dr(t,e,r,n,i,a){var o,s=Or(t,e),l=Or(e,r),c=Or(r,t);s.dy>l.dy&&(o=s,s=l,l=o),s.dy>c.dy&&(o=s,s=c,c=o),l.dy>c.dy&&(o=l,l=c,c=o),s.dy&&Ir(c,s,n,i,a),l.dy&&Ir(c,l,n,i,a)}zr.prototype.resize=function(t,e){var r=this.context.gl;if(this.width=t*a.devicePixelRatio,this.height=e*a.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var n=0,i=this.style._order;n<i.length;n+=1){var o=i[n];this.style._layers[o].resize()}this.depthRbo&&(r.deleteRenderbuffer(this.depthRbo),this.depthRbo=null)},zr.prototype.setup=function(){var e=this.context,r=new t.PosArray;r.emplaceBack(0,0),r.emplaceBack(t.default$8,0),r.emplaceBack(0,t.default$8),r.emplaceBack(t.default$8,t.default$8),this.tileExtentBuffer=e.createVertexBuffer(r,Ke.members),this.tileExtentVAO=new Q,this.tileExtentPatternVAO=new Q;var n=new t.PosArray;n.emplaceBack(0,0),n.emplaceBack(t.default$8,0),n.emplaceBack(t.default$8,t.default$8),n.emplaceBack(0,t.default$8),n.emplaceBack(0,0),this.debugBuffer=e.createVertexBuffer(n,Ke.members),this.debugVAO=new Q;var i=new t.RasterBoundsArray;i.emplaceBack(0,0,0,0),i.emplaceBack(t.default$8,0,t.default$8,0),i.emplaceBack(0,t.default$8,0,t.default$8),i.emplaceBack(t.default$8,t.default$8,t.default$8,t.default$8),this.rasterBoundsBuffer=e.createVertexBuffer(i,K.members),this.rasterBoundsVAO=new Q;var a=new t.PosArray;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(a,Ke.members),this.viewportVAO=new Q},zr.prototype.clearStencil=function(){var e=this.context,r=e.gl;e.setColorMode(Gt.disabled),e.setDepthMode(qt.disabled),e.setStencilMode(new Ht({func:r.ALWAYS,mask:0},0,255,r.ZERO,r.ZERO,r.ZERO));var n=t.mat4.create();t.mat4.ortho(n,0,this.width,this.height,0,0,1),t.mat4.scale(n,n,[r.drawingBufferWidth,r.drawingBufferHeight,0]);var i=this.useProgram(\"clippingMask\");r.uniformMatrix4fv(i.uniforms.u_matrix,!1,n),this.viewportVAO.bind(e,i,this.viewportBuffer,[]),r.drawArrays(r.TRIANGLE_STRIP,0,4)},zr.prototype._renderTileClippingMasks=function(t){var e=this.context,r=e.gl;e.setColorMode(Gt.disabled),e.setDepthMode(qt.disabled);var n=1;this._tileClippingMaskIDs={};for(var i=0,a=t;i<a.length;i+=1){var o=a[i],s=this._tileClippingMaskIDs[o.key]=n++;e.setStencilMode(new Ht({func:r.ALWAYS,mask:0},s,255,r.KEEP,r.KEEP,r.REPLACE));var l=this.useProgram(\"clippingMask\");r.uniformMatrix4fv(l.uniforms.u_matrix,!1,o.posMatrix),this.tileExtentVAO.bind(this.context,l,this.tileExtentBuffer,[]),r.drawArrays(r.TRIANGLE_STRIP,0,this.tileExtentBuffer.length)}},zr.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Ht({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},zr.prototype.colorModeForRenderPass=function(){var e=this.context.gl;return this._showOverdrawInspector?new Gt([e.CONSTANT_COLOR,e.ONE],new t.default$6(1/8,1/8,1/8,0),[!0,!0,!0,!0]):\"opaque\"===this.renderPass?Gt.unblended:Gt.alphaBlended},zr.prototype.depthModeForSublayer=function(t,e,r){var n=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon,i=n-1+this.depthRange;return new qt(r||this.context.gl.LEQUAL,e,[i,n])},zr.prototype.render=function(e,r){var n=this;for(var i in this.style=e,this.options=r,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(a.now()),e.sourceCaches){var o=n.style.sourceCaches[i];o.used&&o.prepare(n.context)}var s=this.style._order,l=t.filterObject(this.style.sourceCaches,function(t){return\"raster\"===t.getSource().type||\"raster-dem\"===t.getSource().type}),c=function(e){var r=l[e];!function(e,r){for(var n=e.sort(function(t,e){return t.tileID.isLessThan(e.tileID)?-1:e.tileID.isLessThan(t.tileID)?1:0}),i=0;i<n.length;i++){var a={},o=n[i],s=n.slice(i+1);ar(o.tileID.wrapped(),o.tileID,s,new t.OverscaledTileID(0,o.tileID.wrap+1,0,0,0),a),o.setMask(a,r)}}(r.getVisibleCoordinates().map(function(t){return r.getTile(t)}),n.context)};for(var u in l)c(u);this.renderPass=\"offscreen\";var f,h=[];this.depthRboNeedsClear=!0;for(var p=0;p<s.length;p++){var d=n.style._layers[s[p]];d.hasOffscreenPass()&&!d.isHidden(n.transform.zoom)&&(d.source!==(f&&f.id)&&(h=[],(f=n.style.sourceCaches[d.source])&&(h=f.getVisibleCoordinates()).reverse()),h.length&&n.renderLayer(n,f,d,h))}this.context.bindFramebuffer.set(null),this.context.clear({color:r.showOverdrawInspector?t.default$6.black:t.default$6.transparent,depth:1}),this._showOverdrawInspector=r.showOverdrawInspector,this.depthRange=(e._order.length+2)*this.numSublayers*this.depthEpsilon,this.renderPass=\"opaque\";var g,v=[];for(this.currentLayer=s.length-1,this.currentLayer;this.currentLayer>=0;this.currentLayer--){var m=n.style._layers[s[n.currentLayer]];m.source!==(g&&g.id)&&(v=[],(g=n.style.sourceCaches[m.source])&&(n.clearStencil(),v=g.getVisibleCoordinates(),g.getSource().isTileClipped&&n._renderTileClippingMasks(v))),n.renderLayer(n,g,m,v)}this.renderPass=\"translucent\";var y,x=[];for(this.currentLayer=0,this.currentLayer;this.currentLayer<s.length;this.currentLayer++){var b=n.style._layers[s[n.currentLayer]];b.source!==(y&&y.id)&&(x=[],(y=n.style.sourceCaches[b.source])&&(n.clearStencil(),x=y.getVisibleCoordinates(),y.getSource().isTileClipped&&n._renderTileClippingMasks(x)),x.reverse()),n.renderLayer(n,y,b,x)}if(this.options.showTileBoundaries){var _=this.style.sourceCaches[Object.keys(this.style.sourceCaches)[0]];_&&Lr.debug(this,_,_.getVisibleCoordinates())}},zr.prototype.setupOffscreenDepthRenderbuffer=function(){var t=this.context;this.depthRbo||(this.depthRbo=t.createRenderbuffer(t.gl.DEPTH_COMPONENT16,this.width,this.height))},zr.prototype.renderLayer=function(t,e,r,n){r.isHidden(this.transform.zoom)||(\"background\"===r.type||n.length)&&(this.id=r.id,Lr[r.type](t,e,r,n))},zr.prototype.translatePosMatrix=function(e,r,n,i,a){if(!n[0]&&!n[1])return e;var o=a?\"map\"===i?this.transform.angle:0:\"viewport\"===i?-this.transform.angle:0;if(o){var s=Math.sin(o),l=Math.cos(o);n=[n[0]*l-n[1]*s,n[0]*s+n[1]*l]}var c=[a?n[0]:Te(r,n[0],this.transform.zoom),a?n[1]:Te(r,n[1],this.transform.zoom),0],u=new Float32Array(16);return t.mat4.translate(u,e,c),u},zr.prototype.saveTileTexture=function(t){var e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t]},zr.prototype.getTileTexture=function(t){var e=this._tileTextures[t];return e&&e.length>0?e.pop():null},zr.prototype._createProgramCached=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new ir(this.context,nr[t],e,this._showOverdrawInspector)),this.cache[r]},zr.prototype.useProgram=function(t,e){var r=this._createProgramCached(t,e||this.emptyProgramConfiguration);return this.context.program.set(r.program),r};var Pr=t.default$20.vec4,Rr=t.default$20.mat4,Fr=t.default$20.mat2,Br=function(t,e,r){this.tileSize=512,this._renderWorldCopies=void 0===r||r,this._minZoom=t||0,this._maxZoom=e||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new G(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._posMatrixCache={},this._alignedPosMatrixCache={}},Nr={minZoom:{configurable:!0},maxZoom:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerPoint:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},unmodified:{configurable:!0},x:{configurable:!0},y:{configurable:!0},point:{configurable:!0}};Br.prototype.clone=function(){var t=new Br(this._minZoom,this._maxZoom,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._calcMatrices(),t},Nr.minZoom.get=function(){return this._minZoom},Nr.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Nr.maxZoom.get=function(){return this._maxZoom},Nr.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Nr.renderWorldCopies.get=function(){return this._renderWorldCopies},Nr.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Nr.worldSize.get=function(){return this.tileSize*this.scale},Nr.centerPoint.get=function(){return this.size._div(2)},Nr.size.get=function(){return new t.default$1(this.width,this.height)},Nr.bearing.get=function(){return-this.angle/Math.PI*180},Nr.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=Fr.create(),Fr.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Nr.pitch.get=function(){return this._pitch/Math.PI*180},Nr.pitch.set=function(e){var r=t.clamp(e,0,60)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Nr.fov.get=function(){return this._fov/Math.PI*180},Nr.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Nr.zoom.get=function(){return this._zoom},Nr.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Nr.center.get=function(){return this._center},Nr.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Br.prototype.coveringZoomLevel=function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},Br.prototype.getVisibleUnwrappedCoordinates=function(e){var r=this.pointCoordinate(new t.default$1(0,0),0),n=this.pointCoordinate(new t.default$1(this.width,0),0),i=Math.floor(r.column),a=Math.floor(n.column),o=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var s=i;s<=a;s++)0!==s&&o.push(new t.UnwrappedTileID(s,e));return o},Br.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&r<e.minzoom)return[];void 0!==e.maxzoom&&r>e.maxzoom&&(r=e.maxzoom);var i=this.pointCoordinate(this.centerPoint,r),a=new t.default$1(i.column-.5,i.row-.5);return function(e,r,n,i){void 0===i&&(i=!0);var a=1<<e,o={};function s(r,s,l){var c,u,f,h;if(l>=0&&l<=a)for(c=r;c<s;c++)u=Math.floor(c/a),f=(c%a+a)%a,0!==u&&!0!==i||(h=new t.OverscaledTileID(n,u,e,f,l),o[h.key]=h)}return Dr(r[0],r[1],r[2],0,a,s),Dr(r[2],r[3],r[0],0,a,s),Object.keys(o).map(function(t){return o[t]})}(r,[this.pointCoordinate(new t.default$1(0,0),r),this.pointCoordinate(new t.default$1(this.width,0),r),this.pointCoordinate(new t.default$1(this.width,this.height),r),this.pointCoordinate(new t.default$1(0,this.height),r)],e.reparseOverscaled?n:r,this._renderWorldCopies).sort(function(t,e){return a.dist(t.canonical)-a.dist(e.canonical)})},Br.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Nr.unmodified.get=function(){return this._unmodified},Br.prototype.zoomScale=function(t){return Math.pow(2,t)},Br.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},Br.prototype.project=function(e){return new t.default$1(this.lngX(e.lng),this.latY(e.lat))},Br.prototype.unproject=function(t){return new G(this.xLng(t.x),this.yLat(t.y))},Nr.x.get=function(){return this.lngX(this.center.lng)},Nr.y.get=function(){return this.latY(this.center.lat)},Nr.point.get=function(){return new t.default$1(this.x,this.y)},Br.prototype.lngX=function(t){return(180+t)*this.worldSize/360},Br.prototype.latY=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*this.worldSize/360},Br.prototype.xLng=function(t){return 360*t/this.worldSize-180},Br.prototype.yLat=function(t){var e=180-360*t/this.worldSize;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90},Br.prototype.setLocationAtPoint=function(t,e){var r=this.pointCoordinate(e)._sub(this.pointCoordinate(this.centerPoint));this.center=this.coordinateLocation(this.locationCoordinate(t)._sub(r)),this._renderWorldCopies&&(this.center=this.center.wrap())},Br.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},Br.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},Br.prototype.locationCoordinate=function(e){return new t.default$17(this.lngX(e.lng)/this.tileSize,this.latY(e.lat)/this.tileSize,this.zoom).zoomTo(this.tileZoom)},Br.prototype.coordinateLocation=function(t){var e=t.zoomTo(this.zoom);return new G(this.xLng(e.column*this.tileSize),this.yLat(e.row*this.tileSize))},Br.prototype.pointCoordinate=function(e,r){void 0===r&&(r=this.tileZoom);var n=[e.x,e.y,0,1],i=[e.x,e.y,1,1];Pr.transformMat4(n,n,this.pixelMatrixInverse),Pr.transformMat4(i,i,this.pixelMatrixInverse);var a=n[3],o=i[3],s=n[0]/a,l=i[0]/o,c=n[1]/a,u=i[1]/o,f=n[2]/a,h=i[2]/o,p=f===h?0:(0-f)/(h-f);return new t.default$17(t.number(s,l,p)/this.tileSize,t.number(c,u,p)/this.tileSize,this.zoom)._zoomTo(r)},Br.prototype.coordinatePoint=function(e){var r=e.zoomTo(this.zoom),n=[r.column*this.tileSize,r.row*this.tileSize,0,1];return Pr.transformMat4(n,n,this.pixelMatrix),new t.default$1(n[0]/n[3],n[1]/n[3])},Br.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=Rr.identity(new Float64Array(16));return Rr.translate(l,l,[s*o,a.y*o,0]),Rr.scale(l,l,[o/t.default$8,o/t.default$8,1]),Rr.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},Br.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=this.latY(f[1]),e=(o=this.latY(f[0]))-a<c.y?c.y/(o-a):0}if(this.lngRange){var h=this.lngRange;s=this.lngX(h[0]),r=(l=this.lngX(h[1]))-s<c.x?c.x/(l-s):0}var p=Math.max(r||0,e||0);if(p)return this.center=this.unproject(new t.default$1(r?(l+s)/2:this.x,e?(o+a)/2:this.y)),this.zoom+=this.scaleZoom(p),this._unmodified=u,void(this._constraining=!1);if(this.latRange){var d=this.y,g=c.y/2;d-g<a&&(i=a+g),d+g>o&&(i=o-g)}if(this.lngRange){var v=this.x,m=c.x/2;v-m<s&&(n=s+m),v+m>l&&(n=l-m)}void 0===n&&void 0===i||(this.center=this.unproject(new t.default$1(void 0!==n?n:this.x,void 0!==i?i:this.y))),this._unmodified=u,this._constraining=!1}},Br.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var t=this._fov/2,e=Math.PI/2+this._pitch,r=Math.sin(t)*this.cameraToCenterDistance/Math.sin(Math.PI-e-t),n=this.x,i=this.y,a=1.01*(Math.cos(Math.PI/2-this._pitch)*r+this.cameraToCenterDistance),o=new Float64Array(16);Rr.perspective(o,this._fov,this.width/this.height,1,a),Rr.scale(o,o,[1,-1,1]),Rr.translate(o,o,[0,0,-this.cameraToCenterDistance]),Rr.rotateX(o,o,this._pitch),Rr.rotateZ(o,o,this.angle),Rr.translate(o,o,[-n,-i,0]);var s=this.worldSize/(2*Math.PI*6378137*Math.abs(Math.cos(this.center.lat*(Math.PI/180))));Rr.scale(o,o,[1,1,s,1]),this.projMatrix=o;var l=this.width%2/2,c=this.height%2/2,u=Math.cos(this.angle),f=Math.sin(this.angle),h=n-Math.round(n)+u*l+f*c,p=i-Math.round(i)+u*c+f*l,d=new Float64Array(o);if(Rr.translate(d,d,[h>.5?h-1:h,p>.5?p-1:p,0]),this.alignedProjMatrix=d,o=Rr.create(),Rr.scale(o,o,[this.width/2,-this.height/2,1]),Rr.translate(o,o,[1,-1,0]),this.pixelMatrix=Rr.multiply(new Float64Array(16),o,this.projMatrix),!(o=Rr.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=o,this._posMatrixCache={},this._alignedPosMatrixCache={}}},Br.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.default$1(0,0)).zoomTo(this.zoom),r=[e.column*this.tileSize,e.row*this.tileSize,0,1];return Pr.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},Object.defineProperties(Br.prototype,Nr);var jr=function(){var e,r,n,i;t.bindAll([\"_onHashChange\",\"_updateHash\"],this),this._updateHash=(e=this._updateHashUnthrottled.bind(this),300,r=!1,n=0,i=function(){n=0,r&&(e(),n=setTimeout(i,300),r=!1)},function(){return r=!0,n||i(),n})};jr.prototype.addTo=function(e){return this._map=e,t.default.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},jr.prototype.remove=function(){return t.default.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},jr.prototype.getHashString=function(t){var e=this._map.getCenter(),r=Math.round(100*this._map.getZoom())/100,n=Math.ceil((r*Math.LN2+Math.log(512/360/.5))/Math.LN10),i=Math.pow(10,n),a=Math.round(e.lng*i)/i,o=Math.round(e.lat*i)/i,s=this._map.getBearing(),l=this._map.getPitch(),c=\"\";return c+=t?\"#/\"+a+\"/\"+o+\"/\"+r:\"#\"+r+\"/\"+o+\"/\"+a,(s||l)&&(c+=\"/\"+Math.round(10*s)/10),l&&(c+=\"/\"+Math.round(l)),c},jr.prototype._onHashChange=function(){var e=t.default.location.hash.replace(\"#\",\"\").split(\"/\");return e.length>=3&&(this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:+(e[3]||0),pitch:+(e[4]||0)}),!0)},jr.prototype._updateHashUnthrottled=function(){var e=this.getHashString();t.default.history.replaceState(t.default.history.state,\"\",e)};var Vr=function(e){function r(r,n,i,a){void 0===a&&(a={});var o=s.mousePos(n.getCanvasContainer(),i),l=n.unproject(o);e.call(this,r,t.extend({point:o,lngLat:l,originalEvent:i},a)),this._defaultPrevented=!1,this.target=n}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var n={defaultPrevented:{configurable:!0}};return r.prototype.preventDefault=function(){this._defaultPrevented=!0},n.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(r.prototype,n),r}(t.Event),Ur=function(e){function r(r,n,i){var a=s.touchPos(n.getCanvasContainer(),i),o=a.map(function(t){return n.unproject(t)}),l=a.reduce(function(t,e,r,n){return t.add(e.div(n.length))},new t.default$1(0,0)),c=n.unproject(l);e.call(this,r,{points:a,point:l,lngLats:o,lngLat:c,originalEvent:i}),this._defaultPrevented=!1}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var n={defaultPrevented:{configurable:!0}};return r.prototype.preventDefault=function(){this._defaultPrevented=!0},n.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(r.prototype,n),r}(t.Event),qr=function(t){function e(e,r,n){t.call(this,e,{originalEvent:n}),this._defaultPrevented=!1}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,r),e}(t.Event),Hr=function(e){this._map=e,this._el=e.getCanvasContainer(),this._delta=0,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};Hr.prototype.isEnabled=function(){return!!this._enabled},Hr.prototype.isActive=function(){return!!this._active},Hr.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},Hr.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Hr.prototype.onWheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.default.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=a.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this.isActive()||this._start(e)),e.preventDefault()}},Hr.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this.isActive()||this._start(t)},Hr.prototype._start=function(e){if(this._delta){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),this._active=!0,this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._map.fire(new t.Event(\"zoomstart\",{originalEvent:e})),this._finishTimeout&&clearTimeout(this._finishTimeout);var r=s.mousePos(this._el,e);this._around=G.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(r)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame))}},Hr.prototype._onScrollFrame=function(){var e=this;if(this._frameId=null,this.isActive()){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?1/450:.01,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var o=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(o*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var s=!1;if(\"wheel\"===this._type){var l=Math.min((a.now()-this._lastWheelEventTime)/200,1),c=this._easing(l);r.zoom=t.number(this._startZoom,this._targetZoom,c),l<1?this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame)):s=!0}else r.zoom=this._targetZoom,s=!0;r.setLocationAtPoint(this._around,this._aroundPoint),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastWheelEvent})),this._map.fire(new t.Event(\"zoom\",{originalEvent:this._lastWheelEvent})),s&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._map.fire(new t.Event(\"zoomend\",{originalEvent:e._lastWheelEvent})),e._map.fire(new t.Event(\"moveend\",{originalEvent:e._lastWheelEvent})),delete e._targetZoom},200))}},Hr.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(a.now()-n.start)/n.duration,o=n.easing(i+.01)-n.easing(i),s=.27/Math.sqrt(o*o+1e-4)*.01,l=Math.sqrt(.0729-s*s);r=t.bezier(s,l,.25,1)}return this._prevEase={start:a.now(),duration:e,easing:r},r};var Gr=function(e){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),t.bindAll([\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this)};Gr.prototype.isEnabled=function(){return!!this._enabled},Gr.prototype.isActive=function(){return!!this._active},Gr.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},Gr.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Gr.prototype.onMouseDown=function(e){this.isEnabled()&&e.shiftKey&&0===e.button&&(t.default.document.addEventListener(\"mousemove\",this._onMouseMove,!1),t.default.document.addEventListener(\"keydown\",this._onKeyDown,!1),t.default.document.addEventListener(\"mouseup\",this._onMouseUp,!1),s.disableDrag(),this._startPos=s.mousePos(this._el,e),this._active=!0)},Gr.prototype._onMouseMove=function(t){var e=this._startPos,r=s.mousePos(this._el,t);this._box||(this._box=s.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",t));var n=Math.min(e.x,r.x),i=Math.max(e.x,r.x),a=Math.min(e.y,r.y),o=Math.max(e.y,r.y);s.setTransform(this._box,\"translate(\"+n+\"px,\"+a+\"px)\"),this._box.style.width=i-n+\"px\",this._box.style.height=o-a+\"px\"},Gr.prototype._onMouseUp=function(e){if(0===e.button){var r=this._startPos,n=s.mousePos(this._el,e),i=(new W).extend(this._map.unproject(r)).extend(this._map.unproject(n));this._finish(),s.suppressClick(),r.x===n.x&&r.y===n.y?this._fireEvent(\"boxzoomcancel\",e):this._map.fitBounds(i,{linear:!0}).fire(new t.Event(\"boxzoomend\",{originalEvent:e,boxZoomBounds:i}))}},Gr.prototype._onKeyDown=function(t){27===t.keyCode&&(this._finish(),this._fireEvent(\"boxzoomcancel\",t))},Gr.prototype._finish=function(){this._active=!1,t.default.document.removeEventListener(\"mousemove\",this._onMouseMove,!1),t.default.document.removeEventListener(\"keydown\",this._onKeyDown,!1),t.default.document.removeEventListener(\"mouseup\",this._onMouseUp,!1),this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(s.remove(this._box),this._box=null),s.enableDrag()},Gr.prototype._fireEvent=function(e,r){return this._map.fire(new t.Event(e,{originalEvent:r}))};var Wr=t.bezier(0,0,.25,1),Yr=function(e,r){this._map=e,this._el=r.element||e.getCanvasContainer(),this._state=\"disabled\",this._button=r.button||\"right\",this._bearingSnap=r.bearingSnap||0,this._pitchWithRotate=!1!==r.pitchWithRotate,t.bindAll([\"_onMouseMove\",\"_onMouseUp\",\"_onBlur\",\"_onDragFrame\"],this)};Yr.prototype.isEnabled=function(){return\"disabled\"!==this._state},Yr.prototype.isActive=function(){return\"active\"===this._state},Yr.prototype.enable=function(){this.isEnabled()||(this._state=\"enabled\")},Yr.prototype.disable=function(){if(this.isEnabled())switch(this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"rotateend\"),this._pitchWithRotate&&this._fireEvent(\"pitchend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\"}},Yr.prototype.onMouseDown=function(e){if(\"enabled\"===this._state){if(\"right\"===this._button){if(this._eventButton=s.mouseButton(e),this._eventButton!==(e.ctrlKey?0:2))return}else{if(e.ctrlKey||0!==s.mouseButton(e))return;this._eventButton=0}s.disableDrag(),t.default.document.addEventListener(\"mousemove\",this._onMouseMove,{capture:!0}),t.default.document.addEventListener(\"mouseup\",this._onMouseUp),t.default.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._inertia=[[a.now(),this._map.getBearing()]],this._previousPos=s.mousePos(this._el,e),this._center=this._map.transform.centerPoint,e.preventDefault()}},Yr.prototype._onMouseMove=function(t){this._lastMoveEvent=t,this._pos=s.mousePos(this._el,t),\"pending\"===this._state&&(this._state=\"active\",this._fireEvent(\"rotatestart\",t),this._fireEvent(\"movestart\",t),this._pitchWithRotate&&this._fireEvent(\"pitchstart\",t)),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onDragFrame))},Yr.prototype._onDragFrame=function(){this._frameId=null;var t=this._lastMoveEvent;if(t){var e=this._map.transform,r=this._previousPos,n=this._pos,i=.8*(r.x-n.x),o=-.5*(r.y-n.y),s=e.bearing-i,l=e.pitch-o,c=this._inertia,u=c[c.length-1];this._drainInertiaBuffer(),c.push([a.now(),this._map._normalizeBearing(s,u[1])]),e.bearing=s,this._pitchWithRotate&&(this._fireEvent(\"pitch\",t),e.pitch=l),this._fireEvent(\"rotate\",t),this._fireEvent(\"move\",t),delete this._lastMoveEvent,this._previousPos=this._pos}},Yr.prototype._onMouseUp=function(t){if(s.mouseButton(t)===this._eventButton)switch(this._state){case\"active\":this._state=\"enabled\",s.suppressClick(),this._unbind(),this._deactivate(),this._inertialRotate(t);break;case\"pending\":this._state=\"enabled\",this._unbind()}},Yr.prototype._onBlur=function(t){switch(this._state){case\"active\":this._state=\"enabled\",this._unbind(),this._deactivate(),this._fireEvent(\"rotateend\",t),this._pitchWithRotate&&this._fireEvent(\"pitchend\",t),this._fireEvent(\"moveend\",t);break;case\"pending\":this._state=\"enabled\",this._unbind()}},Yr.prototype._unbind=function(){t.default.document.removeEventListener(\"mousemove\",this._onMouseMove,{capture:!0}),t.default.document.removeEventListener(\"mouseup\",this._onMouseUp),t.default.removeEventListener(\"blur\",this._onBlur),s.enableDrag()},Yr.prototype._deactivate=function(){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._lastMoveEvent,delete this._previousPos},Yr.prototype._inertialRotate=function(t){var e=this;this._fireEvent(\"rotateend\",t),this._drainInertiaBuffer();var r=this._map,n=r.getBearing(),i=this._inertia,a=function(){Math.abs(n)<e._bearingSnap?r.resetNorth({noMoveStart:!0},{originalEvent:t}):e._fireEvent(\"moveend\",t),e._pitchWithRotate&&e._fireEvent(\"pitchend\",t)};if(i.length<2)a();else{var o=i[0],s=i[i.length-1],l=i[i.length-2],c=r._normalizeBearing(n,l[1]),u=s[1]-o[1],f=u<0?-1:1,h=(s[0]-o[0])/1e3;if(0!==u&&0!==h){var p=Math.abs(u*(.25/h));p>180&&(p=180);var d=p/180;c+=f*p*(d/2),Math.abs(r._normalizeBearing(c,0))<this._bearingSnap&&(c=r._normalizeBearing(0,c)),r.rotateTo(c,{duration:1e3*d,easing:Wr,noMoveStart:!0},{originalEvent:t})}else a()}},Yr.prototype._fireEvent=function(e,r){return this._map.fire(new t.Event(e,r?{originalEvent:r}:{}))},Yr.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=a.now();t.length>0&&e-t[0][0]>160;)t.shift()};var Xr=t.bezier(0,0,.3,1),Zr=function(e){this._map=e,this._el=e.getCanvasContainer(),this._state=\"disabled\",t.bindAll([\"_onMove\",\"_onMouseUp\",\"_onTouchEnd\",\"_onBlur\",\"_onDragFrame\"],this)};Zr.prototype.isEnabled=function(){return\"disabled\"!==this._state},Zr.prototype.isActive=function(){return\"active\"===this._state},Zr.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._state=\"enabled\")},Zr.prototype.disable=function(){if(this.isEnabled())switch(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"dragend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\"}},Zr.prototype.onMouseDown=function(e){\"enabled\"===this._state&&(e.ctrlKey||0!==s.mouseButton(e)||(s.addEventListener(t.default.document,\"mousemove\",this._onMove,{capture:!0}),s.addEventListener(t.default.document,\"mouseup\",this._onMouseUp),this._start(e)))},Zr.prototype.onTouchStart=function(e){\"enabled\"===this._state&&(e.touches.length>1||(s.addEventListener(t.default.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),s.addEventListener(t.default.document,\"touchend\",this._onTouchEnd),this._start(e)))},Zr.prototype._start=function(e){t.default.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._previousPos=s.mousePos(this._el,e),this._inertia=[[a.now(),this._previousPos]]},Zr.prototype._onMove=function(t){this._lastMoveEvent=t,t.preventDefault(),this._pos=s.mousePos(this._el,t),this._drainInertiaBuffer(),this._inertia.push([a.now(),this._pos]),\"pending\"===this._state&&(this._state=\"active\",this._fireEvent(\"dragstart\",t),this._fireEvent(\"movestart\",t)),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onDragFrame))},Zr.prototype._onDragFrame=function(){this._frameId=null;var t=this._lastMoveEvent;if(t){var e=this._map.transform;e.setLocationAtPoint(e.pointLocation(this._previousPos),this._pos),this._fireEvent(\"drag\",t),this._fireEvent(\"move\",t),this._previousPos=this._pos,delete this._lastMoveEvent}},Zr.prototype._onMouseUp=function(t){if(0===s.mouseButton(t))switch(this._state){case\"active\":this._state=\"enabled\",s.suppressClick(),this._unbind(),this._deactivate(),this._inertialPan(t);break;case\"pending\":this._state=\"enabled\",this._unbind()}},Zr.prototype._onTouchEnd=function(t){switch(this._state){case\"active\":this._state=\"enabled\",this._unbind(),this._deactivate(),this._inertialPan(t);break;case\"pending\":this._state=\"enabled\",this._unbind()}},Zr.prototype._onBlur=function(t){switch(this._state){case\"active\":this._state=\"enabled\",this._unbind(),this._deactivate(),this._fireEvent(\"dragend\",t),this._fireEvent(\"moveend\",t);break;case\"pending\":this._state=\"enabled\",this._unbind()}},Zr.prototype._unbind=function(){s.removeEventListener(t.default.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),s.removeEventListener(t.default.document,\"touchend\",this._onTouchEnd),s.removeEventListener(t.default.document,\"mousemove\",this._onMove,{capture:!0}),s.removeEventListener(t.default.document,\"mouseup\",this._onMouseUp),s.removeEventListener(t.default,\"blur\",this._onBlur)},Zr.prototype._deactivate=function(){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._lastMoveEvent,delete this._previousPos,delete this._pos},Zr.prototype._inertialPan=function(t){this._fireEvent(\"dragend\",t),this._drainInertiaBuffer();var e=this._inertia;if(e.length<2)this._fireEvent(\"moveend\",t);else{var r=e[e.length-1],n=e[0],i=r[1].sub(n[1]),a=(r[0]-n[0])/1e3;if(0===a||r[1].equals(n[1]))this._fireEvent(\"moveend\",t);else{var o=i.mult(.3/a),s=o.mag();s>1400&&(s=1400,o._unit()._mult(s));var l=s/750,c=o.mult(-l/2);this._map.panBy(c,{duration:1e3*l,easing:Xr,noMoveStart:!0},{originalEvent:t})}}},Zr.prototype._fireEvent=function(e,r){return this._map.fire(new t.Event(e,r?{originalEvent:r}:{}))},Zr.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=a.now();t.length>0&&e-t[0][0]>160;)t.shift()};var $r=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onKeyDown\"],this)};function Jr(t){return t*(2-t)}$r.prototype.isEnabled=function(){return!!this._enabled},$r.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0)},$r.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1)},$r.prototype._onKeyDown=function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=0,r=0,n=0,i=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?r=-1:(t.preventDefault(),i=-1);break;case 39:t.shiftKey?r=1:(t.preventDefault(),i=1);break;case 38:t.shiftKey?n=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?n=-1:(a=1,t.preventDefault());break;default:return}var o=this._map,s=o.getZoom(),l={duration:300,delayEndEvents:500,easing:Jr,zoom:e?Math.round(s)+e*(t.shiftKey?2:1):s,bearing:o.getBearing()+15*r,pitch:o.getPitch()+10*n,offset:[100*-i,100*-a],center:o.getCenter()};o.easeTo(l,{originalEvent:t})}};var Kr=function(e){this._map=e,t.bindAll([\"_onDblClick\",\"_onZoomEnd\"],this)};Kr.prototype.isEnabled=function(){return!!this._enabled},Kr.prototype.isActive=function(){return!!this._active},Kr.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},Kr.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Kr.prototype.onTouchStart=function(t){var e=this;this.isEnabled()&&(t.points.length>1||(this._tapped?(clearTimeout(this._tapped),this._tapped=null,this._zoom(t)):this._tapped=setTimeout(function(){e._tapped=null},300)))},Kr.prototype.onDblClick=function(t){this.isEnabled()&&(t.originalEvent.preventDefault(),this._zoom(t))},Kr.prototype._zoom=function(t){this._active=!0,this._map.on(\"zoomend\",this._onZoomEnd),this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t)},Kr.prototype._onZoomEnd=function(){this._active=!1,this._map.off(\"zoomend\",this._onZoomEnd)};var Qr=t.bezier(0,0,.15,1),tn=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onMove\",\"_onEnd\",\"_onTouchFrame\"],this)};tn.prototype.isEnabled=function(){return!!this._enabled},tn.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around)},tn.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!1)},tn.prototype.disableRotation=function(){this._rotationDisabled=!0},tn.prototype.enableRotation=function(){this._rotationDisabled=!1},tn.prototype.onStart=function(e){if(this.isEnabled()&&2===e.touches.length){var r=s.mousePos(this._el,e.touches[0]),n=s.mousePos(this._el,e.touches[1]);this._startVec=r.sub(n),this._gestureIntent=void 0,this._inertia=[],s.addEventListener(t.default.document,\"touchmove\",this._onMove,{passive:!1}),s.addEventListener(t.default.document,\"touchend\",this._onEnd)}},tn.prototype._getTouchEventData=function(t){var e=s.mousePos(this._el,t.touches[0]),r=s.mousePos(this._el,t.touches[1]),n=e.sub(r);return{vec:n,center:e.add(r).div(2),scale:n.mag()/this._startVec.mag(),bearing:this._rotationDisabled?0:180*n.angleWith(this._startVec)/Math.PI}},tn.prototype._onMove=function(e){if(2===e.touches.length){var r=this._getTouchEventData(e),n=r.vec,i=r.scale,a=r.bearing;if(!this._gestureIntent){var o=Math.abs(1-i)>.15;Math.abs(a)>10?this._gestureIntent=\"rotate\":o&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._map.fire(new t.Event(this._gestureIntent+\"start\",{originalEvent:e})),this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._startVec=n)}this._lastTouchEvent=e,this._frameId||(this._frameId=this._map._requestRenderFrame(this._onTouchFrame)),e.preventDefault()}},tn.prototype._onTouchFrame=function(){this._frameId=null;var e=this._gestureIntent;if(e){var r=this._map.transform;this._startScale||(this._startScale=r.scale,this._startBearing=r.bearing);var n=this._getTouchEventData(this._lastTouchEvent),i=n.center,o=n.bearing,s=n.scale,l=r.pointLocation(i),c=r.locationPoint(l);\"rotate\"===e&&(r.bearing=this._startBearing+o),r.zoom=r.scaleZoom(this._startScale*s),r.setLocationAtPoint(l,c),this._map.fire(new t.Event(e,{originalEvent:this._lastTouchEvent})),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastTouchEvent})),this._drainInertiaBuffer(),this._inertia.push([a.now(),s,i])}},tn.prototype._onEnd=function(e){s.removeEventListener(t.default.document,\"touchmove\",this._onMove,{passive:!1}),s.removeEventListener(t.default.document,\"touchend\",this._onEnd);var r=this._gestureIntent,n=this._startScale;if(this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._gestureIntent,delete this._startScale,delete this._startBearing,delete this._lastTouchEvent,r){this._map.fire(new t.Event(r+\"end\",{originalEvent:e})),this._drainInertiaBuffer();var i=this._inertia,a=this._map;if(i.length<2)a.snapToNorth({},{originalEvent:e});else{var o=i[i.length-1],l=i[0],c=a.transform.scaleZoom(n*o[1]),u=a.transform.scaleZoom(n*l[1]),f=c-u,h=(o[0]-l[0])/1e3,p=o[2];if(0!==h&&c!==u){var d=.15*f/h;Math.abs(d)>2.5&&(d=d>0?2.5:-2.5);var g=1e3*Math.abs(d/(12*.15)),v=c+d*g/2e3;v<0&&(v=0),a.easeTo({zoom:v,duration:g,easing:Qr,around:this._aroundCenter?a.getCenter():a.unproject(p),noMoveStart:!0},{originalEvent:e})}else a.snapToNorth({},{originalEvent:e})}}},tn.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=a.now();t.length>2&&e-t[0][0]>160;)t.shift()};var en={scrollZoom:Hr,boxZoom:Gr,dragRotate:Yr,dragPan:Zr,keyboard:$r,doubleClickZoom:Kr,touchZoomRotate:tn},rn=function(e){function r(r,n){e.call(this),this._moving=!1,this._zooming=!1,this.transform=r,this._bearingSnap=n.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.getCenter=function(){return this.transform.center},r.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},r.prototype.panBy=function(e,r,n){return e=t.default$1.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},r),n)},r.prototype.panTo=function(e,r,n){return this.easeTo(t.extend({center:e},r),n)},r.prototype.getZoom=function(){return this.transform.zoom},r.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},r.prototype.zoomTo=function(e,r,n){return this.easeTo(t.extend({zoom:e},r),n)},r.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},r.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},r.prototype.getBearing=function(){return this.transform.bearing},r.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},r.prototype.rotateTo=function(e,r,n){return this.easeTo(t.extend({bearing:e},r),n)},r.prototype.resetNorth=function(e,r){return this.rotateTo(0,t.extend({duration:1e3},e),r),this},r.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},r.prototype.getPitch=function(){return this.transform.pitch},r.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},r.prototype.fitBounds=function(e,r,n){if(\"number\"==typeof(r=t.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},r)).padding){var i=r.padding;r.padding={top:i,bottom:i,right:i,left:i}}if(!t.default$10(Object.keys(r.padding).sort(function(t,e){return t<e?-1:t>e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"]))return t.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\"),this;e=W.convert(e);var a=[(r.padding.left-r.padding.right)/2,(r.padding.top-r.padding.bottom)/2],o=Math.min(r.padding.right,r.padding.left),s=Math.min(r.padding.top,r.padding.bottom);r.offset=[r.offset[0]+a[0],r.offset[1]+a[1]];var l=t.default$1.convert(r.offset),c=this.transform,u=c.project(e.getNorthWest()),f=c.project(e.getSouthEast()),h=f.sub(u),p=(c.width-2*o-2*Math.abs(l.x))/h.x,d=(c.height-2*s-2*Math.abs(l.y))/h.y;return d<0||p<0?(t.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\"),this):(r.center=c.unproject(u.add(f).div(2)),r.zoom=Math.min(c.scaleZoom(c.scale*Math.min(p,d)),r.maxZoom),r.bearing=0,r.linear?this.easeTo(r,n):this.flyTo(r,n))},r.prototype.jumpTo=function(e,r){this.stop();var n=this.transform,i=!1,a=!1,o=!1;return\"zoom\"in e&&n.zoom!==+e.zoom&&(i=!0,n.zoom=+e.zoom),void 0!==e.center&&(n.center=G.convert(e.center)),\"bearing\"in e&&n.bearing!==+e.bearing&&(a=!0,n.bearing=+e.bearing),\"pitch\"in e&&n.pitch!==+e.pitch&&(o=!0,n.pitch=+e.pitch),this.fire(new t.Event(\"movestart\",r)).fire(new t.Event(\"move\",r)),i&&this.fire(new t.Event(\"zoomstart\",r)).fire(new t.Event(\"zoom\",r)).fire(new t.Event(\"zoomend\",r)),a&&this.fire(new t.Event(\"rotatestart\",r)).fire(new t.Event(\"rotate\",r)).fire(new t.Event(\"rotateend\",r)),o&&this.fire(new t.Event(\"pitchstart\",r)).fire(new t.Event(\"pitch\",r)).fire(new t.Event(\"pitchend\",r)),this.fire(new t.Event(\"moveend\",r))},r.prototype.easeTo=function(e,r){var n=this;this.stop(),!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate&&(e.duration=0);var i=this.transform,a=this.getZoom(),o=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?+e.zoom:a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,o):o,u=\"pitch\"in e?+e.pitch:s,f=i.centerPoint.add(t.default$1.convert(e.offset)),h=i.pointLocation(f),p=G.convert(e.center||h);this._normalizeCenter(p);var d,g,v=i.project(h),m=i.project(p).sub(v),y=i.zoomScale(l-a);return e.around&&(d=G.convert(e.around),g=i.locationPoint(d)),this._zooming=l!==a,this._rotating=o!==c,this._pitching=u!==s,this._prepareEase(r,e.noMoveStart),clearTimeout(this._easeEndTimeoutID),this._ease(function(e){if(n._zooming&&(i.zoom=t.number(a,l,e)),n._rotating&&(i.bearing=t.number(o,c,e)),n._pitching&&(i.pitch=t.number(s,u,e)),d)i.setLocationAtPoint(d,g);else{var h=i.zoomScale(i.zoom-a),p=l>a?Math.min(2,y):Math.max(.5,y),x=Math.pow(p,1-e),b=i.unproject(v.add(m.mult(e*x)).mult(h));i.setLocationAtPoint(i.renderWorldCopies?b.wrap():b,f)}n._fireMoveEvents(r)},function(){e.delayEndEvents?n._easeEndTimeoutID=setTimeout(function(){return n._afterEase(r)},e.delayEndEvents):n._afterEase(r)},e),this},r.prototype._prepareEase=function(e,r){this._moving=!0,r||this.fire(new t.Event(\"movestart\",e)),this._zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e){var r=this._zooming,n=this._rotating,i=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,r&&this.fire(new t.Event(\"zoomend\",e)),n&&this.fire(new t.Event(\"rotateend\",e)),i&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))},r.prototype.flyTo=function(e,r){var n=this;this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var i=this.transform,a=this.getZoom(),o=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?t.clamp(+e.zoom,i.minZoom,i.maxZoom):a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,o):o,u=\"pitch\"in e?+e.pitch:s,f=i.zoomScale(l-a),h=i.centerPoint.add(t.default$1.convert(e.offset)),p=i.pointLocation(h),d=G.convert(e.center||p);this._normalizeCenter(d);var g=i.project(p),v=i.project(d).sub(g),m=e.curve,y=Math.max(i.width,i.height),x=y/f,b=v.mag();if(\"minZoom\"in e){var _=t.clamp(Math.min(e.minZoom,a,l),i.minZoom,i.maxZoom),w=y/i.zoomScale(_-a);m=Math.sqrt(w/b*2)}var k=m*m;function A(t){var e=(x*x-y*y+(t?-1:1)*k*k*b*b)/(2*(t?x:y)*k*b);return Math.log(Math.sqrt(e*e+1)-e)}function M(t){return(Math.exp(t)-Math.exp(-t))/2}function T(t){return(Math.exp(t)+Math.exp(-t))/2}var S=A(0),C=function(t){return T(S)/T(S+m*t)},E=function(t){return y*((T(S)*(M(e=S+m*t)/T(e))-M(S))/k)/b;var e},L=(A(1)-S)/m;if(Math.abs(b)<1e-6||!isFinite(L)){if(Math.abs(y-x)<1e-6)return this.easeTo(e,r);var z=x<y?-1:1;L=Math.abs(Math.log(x/y))/m,E=function(){return 0},C=function(t){return Math.exp(z*m*t)}}if(\"duration\"in e)e.duration=+e.duration;else{var O=\"screenSpeed\"in e?+e.screenSpeed/m:+e.speed;e.duration=1e3*L/O}return e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=o!==c,this._pitching=u!==s,this._prepareEase(r,!1),this._ease(function(e){var l=e*L,f=1/C(l);i.zoom=a+i.scaleZoom(f),n._rotating&&(i.bearing=t.number(o,c,e)),n._pitching&&(i.pitch=t.number(s,u,e));var p=i.unproject(g.add(v.mult(E(l))).mult(f));i.setLocationAtPoint(i.renderWorldCopies?p.wrap():p,h),n._fireMoveEvents(r)},function(){return n._afterEase(r)},e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var t=this._onEaseEnd;delete this._onEaseEnd,t.call(this)}return this},r.prototype._ease=function(t,e,r){!1===r.animate||0===r.duration?(t(1),e()):(this._easeStart=a.now(),this._easeOptions=r,this._onEaseFrame=t,this._onEaseEnd=e,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var t=Math.min((a.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)<n&&(e-=360),Math.abs(e+360-r)<n&&(e+=360),e},r.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var r=t.lng-e.center.lng;t.lng+=r>180?-360:r<-180?360:0}},r}(t.Evented),nn=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};nn.prototype.getDefaultPosition=function(){return\"bottom-right\"},nn.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=s.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},nn.prototype.onRemove=function(){s.remove(this._container),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0},nn.prototype._updateEditLink=function(){var t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var e=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:v.ACCESS_TOKEN}];if(t){var r=e.reduce(function(t,r,n){return r.value&&(t+=r.key+\"=\"+r.value+(n<e.length-1?\"&\":\"\")),t},\"?\");t.href=\"https://www.mapbox.com/feedback/\"+r+(this._map._hash?this._map._hash.getHashString(!0):\"\")}},nn.prototype._updateData=function(t){t&&\"metadata\"===t.sourceDataType&&(this._updateAttributions(),this._updateEditLink())},nn.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this._map.style.stylesheet){var e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}var r=this._map.style.sourceCaches;for(var n in r){var i=r[n].getSource();i.attribution&&t.indexOf(i.attribution)<0&&t.push(i.attribution)}t.sort(function(t,e){return t.length-e.length}),(t=t.filter(function(e,r){for(var n=r+1;n<t.length;n++)if(t[n].indexOf(e)>=0)return!1;return!0})).length?(this._container.innerHTML=t.join(\" | \"),this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null}},nn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var an=function(){t.bindAll([\"_updateLogo\"],this)};an.prototype.onAdd=function(t){this._map=t,this._container=s.create(\"div\",\"mapboxgl-ctrl\");var e=s.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",\"Mapbox logo\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._container},an.prototype.onRemove=function(){s.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo)},an.prototype.getDefaultPosition=function(){return\"bottom-left\"},an.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},an.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}};var on=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};on.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},on.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;r<n.length;r+=1){var i=n[r];if(i.id===t)return void(i.cancelled=!0)}},on.prototype.run=function(){var t=this._currentlyRunning=this._queue;this._queue=[];for(var e=0,r=t;e<r.length;e+=1){var n=r[e];if(!n.cancelled&&(n.callback(),this._cleared))break}this._cleared=!1,this._currentlyRunning=!1},on.prototype.clear=function(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]};var sn=t.default.HTMLImageElement,ln=t.default.HTMLElement,cn={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:0,maxZoom:22,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,transformRequest:null,fadeDuration:300},un=function(r){function n(e){if(null!=(e=t.extend({},cn,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var n=new Br(e.minZoom,e.maxZoom,e.renderWorldCopies);r.call(this,n,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new on;var i=e.transformRequest;if(this._transformRequest=i?function(t,e){return i(t,e)||{url:t}}:function(t){return{url:t}},\"string\"==typeof e.container){var a=t.default.document.getElementById(e.container);if(!a)throw new Error(\"Container '\"+e.container+\"' not found.\");this._container=a}else{if(!(e.container instanceof ln))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\",\"_update\",\"_render\",\"_onData\",\"_onDataLoading\"],this),this._setupContainer(),this._setupPainter(),this.on(\"move\",this._update.bind(this,!1)),this.on(\"zoom\",this._update.bind(this,!0)),void 0!==t.default&&(t.default.addEventListener(\"online\",this._onWindowOnline,!1),t.default.addEventListener(\"resize\",this._onWindowResize,!1)),function(t,e){var r=t.getCanvasContainer(),n=null,i=!1;for(var a in en)t[a]=new en[a](t,e),e.interactive&&e[a]&&t[a].enable(e[a]);s.addEventListener(r,\"mouseout\",function(e){t.fire(new Vr(\"mouseout\",t,e))}),s.addEventListener(r,\"mousedown\",function(r){i=!0;var n=new Vr(\"mousedown\",t,r);t.fire(n),n.defaultPrevented||(e.interactive&&!t.doubleClickZoom.isActive()&&t.stop(),t.boxZoom.onMouseDown(r),t.boxZoom.isActive()||t.dragPan.isActive()||t.dragRotate.onMouseDown(r),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onMouseDown(r))}),s.addEventListener(r,\"mouseup\",function(e){var r=t.dragRotate.isActive();n&&!r&&t.fire(new Vr(\"contextmenu\",t,n)),n=null,i=!1,t.fire(new Vr(\"mouseup\",t,e))}),s.addEventListener(r,\"mousemove\",function(e){if(!t.dragPan.isActive()&&!t.dragRotate.isActive()){for(var n=e.toElement||e.target;n&&n!==r;)n=n.parentNode;n===r&&t.fire(new Vr(\"mousemove\",t,e))}}),s.addEventListener(r,\"mouseover\",function(e){for(var n=e.toElement||e.target;n&&n!==r;)n=n.parentNode;n===r&&t.fire(new Vr(\"mouseover\",t,e))}),s.addEventListener(r,\"touchstart\",function(r){var n=new Ur(\"touchstart\",t,r);t.fire(n),n.defaultPrevented||(e.interactive&&t.stop(),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onTouchStart(r),t.touchZoomRotate.onStart(r),t.doubleClickZoom.onTouchStart(n))},{passive:!1}),s.addEventListener(r,\"touchmove\",function(e){t.fire(new Ur(\"touchmove\",t,e))},{passive:!1}),s.addEventListener(r,\"touchend\",function(e){t.fire(new Ur(\"touchend\",t,e))}),s.addEventListener(r,\"touchcancel\",function(e){t.fire(new Ur(\"touchcancel\",t,e))}),s.addEventListener(r,\"click\",function(e){t.fire(new Vr(\"click\",t,e))}),s.addEventListener(r,\"dblclick\",function(e){var r=new Vr(\"dblclick\",t,e);t.fire(r),r.defaultPrevented||t.doubleClickZoom.onDblClick(r)}),s.addEventListener(r,\"contextmenu\",function(e){var r=t.dragRotate.isActive();i||r?i&&(n=e):t.fire(new Vr(\"contextmenu\",t,e)),e.preventDefault()}),s.addEventListener(r,\"wheel\",function(e){var r=new qr(\"wheel\",t,e);t.fire(r),r.defaultPrevented||t.scrollZoom.onWheel(e)},{passive:!1})}(this,e),this._hash=e.hash&&(new jr).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),this.resize(),e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new nn),this.addControl(new an,e.logoPosition),this.on(\"style.load\",function(){this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on(\"data\",this._onData),this.on(\"dataloading\",this._onDataLoading)}r&&(n.__proto__=r),n.prototype=Object.create(r&&r.prototype),n.prototype.constructor=n;var i={showTileBoundaries:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0}};return n.prototype.addControl=function(t,e){void 0===e&&t.getDefaultPosition&&(e=t.getDefaultPosition()),void 0===e&&(e=\"top-right\");var r=t.onAdd(this),n=this._controlPositions[e];return-1!==e.indexOf(\"bottom\")?n.insertBefore(r,n.firstChild):n.appendChild(r),this},n.prototype.removeControl=function(t){return t.onRemove(this),this},n.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];return this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e)).fire(new t.Event(\"resize\",e)).fire(new t.Event(\"moveend\",e))},n.prototype.getBounds=function(){var e=new W(this.transform.pointLocation(new t.default$1(0,this.transform.height)),this.transform.pointLocation(new t.default$1(this.transform.width,0)));return(this.transform.angle||this.transform.pitch)&&(e.extend(this.transform.pointLocation(new t.default$1(this.transform.size.x,0))),e.extend(this.transform.pointLocation(new t.default$1(0,this.transform.size.y)))),e},n.prototype.getMaxBounds=function(){return this.transform.latRange&&2===this.transform.latRange.length&&this.transform.lngRange&&2===this.transform.lngRange.length?new W([this.transform.lngRange[0],this.transform.latRange[0]],[this.transform.lngRange[1],this.transform.latRange[1]]):null},n.prototype.setMaxBounds=function(t){if(t){var e=W.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null==t&&(this.transform.lngRange=null,this.transform.latRange=null,this._update());return this},n.prototype.setMinZoom=function(t){if((t=null==t?0:t)>=0&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between 0 and the current maxZoom, inclusive\")},n.prototype.getMinZoom=function(){return this.transform.minZoom},n.prototype.setMaxZoom=function(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},n.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},n.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update(),this},n.prototype.getMaxZoom=function(){return this.transform.maxZoom},n.prototype.project=function(t){return this.transform.locationPoint(G.convert(t))},n.prototype.unproject=function(e){return this.transform.pointLocation(t.default$1.convert(e))},n.prototype.isMoving=function(){return this._moving||this.dragPan.isActive()||this.dragRotate.isActive()||this.scrollZoom.isActive()},n.prototype.isZooming=function(){return this._zooming||this.scrollZoom.isActive()},n.prototype.isRotating=function(){return this._rotating||this.dragRotate.isActive()},n.prototype.on=function(t,e,n){var i,a=this;if(void 0===n)return r.prototype.on.call(this,t,e);var o=function(){if(\"mouseenter\"===t||\"mouseover\"===t){var r=!1;return{layer:e,listener:n,delegates:{mousemove:function(i){var o=a.getLayer(e)?a.queryRenderedFeatures(i.point,{layers:[e]}):[];o.length?r||(r=!0,n.call(a,new Vr(t,a,i.originalEvent,{features:o}))):r=!1},mouseout:function(){r=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:n,delegates:{mousemove:function(r){(a.getLayer(e)?a.queryRenderedFeatures(r.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,n.call(a,new Vr(t,a,r.originalEvent)))},mouseout:function(e){o&&(o=!1,n.call(a,new Vr(t,a,e.originalEvent)))}}}}return{layer:e,listener:n,delegates:(i={},i[t]=function(t){var r=a.getLayer(e)?a.queryRenderedFeatures(t.point,{layers:[e]}):[];r.length&&(t.features=r,n.call(a,t),delete t.features)},i)}}();for(var s in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(o),o.delegates)a.on(s,o.delegates[s]);return this},n.prototype.off=function(t,e,n){if(void 0===n)return r.prototype.off.call(this,t,e);if(this._delegatedListeners&&this._delegatedListeners[t])for(var i=this._delegatedListeners[t],a=0;a<i.length;a++){var o=i[a];if(o.layer===e&&o.listener===n){for(var s in o.delegates)this.off(s,o.delegates[s]);return i.splice(a,1),this}}return this},n.prototype.queryRenderedFeatures=function(e,r){var n;return 2===arguments.length?(e=arguments[0],r=arguments[1]):1===arguments.length&&((n=arguments[0])instanceof t.default$1||Array.isArray(n))?(e=arguments[0],r={}):1===arguments.length?(e=void 0,r=arguments[0]):(e=void 0,r={}),this.style?this.style.queryRenderedFeatures(this._makeQueryGeometry(e),r,this.transform):[]},n.prototype._makeQueryGeometry=function(e){var r,n=this;if(void 0===e&&(e=[t.default$1.convert([0,0]),t.default$1.convert([this.transform.width,this.transform.height])]),e instanceof t.default$1||\"number\"==typeof e[0])r=[t.default$1.convert(e)];else{var i=[t.default$1.convert(e[0]),t.default$1.convert(e[1])];r=[i[0],new t.default$1(i[1].x,i[0].y),i[1],new t.default$1(i[0].x,i[1].y),i[0]]}return{viewport:r,worldCoordinate:r.map(function(t){return n.transform.pointCoordinate(t)})}},n.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},n.prototype.setStyle=function(e,r){if((!r||!1!==r.diff&&!r.localIdeographFontFamily)&&this.style&&e&&\"object\"==typeof e)try{return this.style.setState(e)&&this._update(!0),this}catch(e){t.warnOnce(\"Unable to perform style diff: \"+(e.message||e.error||e)+\".  Rebuilding the style from scratch.\")}return this.style&&(this.style.setEventedParent(null),this.style._remove()),e?(this.style=new Je(this,r||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof e?this.style.loadURL(e):this.style.loadJSON(e),this):(delete this.style,this)},n.prototype.getStyle=function(){if(this.style)return this.style.serialize()},n.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():t.warnOnce(\"There is no style added to the map.\")},n.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0),this},n.prototype.isSourceLoaded=function(e){var r=this.style&&this.style.sourceCaches[e];if(void 0!==r)return r.loaded();this.fire(new t.ErrorEvent(new Error(\"There is no source with ID '\"+e+\"'\")))},n.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var r=t[e]._tiles;for(var n in r){var i=r[n];if(\"loaded\"!==i.state&&\"errored\"!==i.state)return!1}}return!0},n.prototype.addSourceType=function(t,e,r){return this.style.addSourceType(t,e,r)},n.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0),this},n.prototype.getSource=function(t){return this.style.getSource(t)},n.prototype.addImage=function(e,r,n){void 0===n&&(n={});var i=n.pixelRatio;void 0===i&&(i=1);var o=n.sdf;if(void 0===o&&(o=!1),r instanceof sn){var s=a.getImageData(r),l=s.width,c=s.height,u=s.data;this.style.addImage(e,{data:new t.RGBAImage({width:l,height:c},u),pixelRatio:i,sdf:o})}else{if(void 0===r.width||void 0===r.height)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));var f=r.width,h=r.height,p=r.data;this.style.addImage(e,{data:new t.RGBAImage({width:f,height:h},p.slice(0)),pixelRatio:i,sdf:o})}},n.prototype.hasImage=function(e){return e?!!this.style.getImage(e):(this.fire(new t.ErrorEvent(new Error(\"Missing required image id\"))),!1)},n.prototype.removeImage=function(t){this.style.removeImage(t)},n.prototype.loadImage=function(e,r){t.getImage(this._transformRequest(e,t.ResourceType.Image),r)},n.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0),this},n.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0),this},n.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0),this},n.prototype.getLayer=function(t){return this.style.getLayer(t)},n.prototype.setFilter=function(t,e){return this.style.setFilter(t,e),this._update(!0),this},n.prototype.setLayerZoomRange=function(t,e,r){return this.style.setLayerZoomRange(t,e,r),this._update(!0),this},n.prototype.getFilter=function(t){return this.style.getFilter(t)},n.prototype.setPaintProperty=function(t,e,r){return this.style.setPaintProperty(t,e,r),this._update(!0),this},n.prototype.getPaintProperty=function(t,e){return this.style.getPaintProperty(t,e)},n.prototype.setLayoutProperty=function(t,e,r){return this.style.setLayoutProperty(t,e,r),this._update(!0),this},n.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},n.prototype.setLight=function(t){return this.style.setLight(t),this._update(!0),this},n.prototype.getLight=function(){return this.style.getLight()},n.prototype.getContainer=function(){return this._container},n.prototype.getCanvasContainer=function(){return this._canvasContainer},n.prototype.getCanvas=function(){return this._canvas},n.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),[t,e]},n.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\"),(this._missingCSSContainer=s.create(\"div\",\"mapboxgl-missing-css\",t)).innerHTML=\"Missing Mapbox GL JS CSS\";var e=this._canvasContainer=s.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=s.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.style.position=\"absolute\",this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\");var r=this._containerDimensions();this._resizeCanvas(r[0],r[1]);var n=this._controlContainer=s.create(\"div\",\"mapboxgl-control-container\",t),i=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(function(t){i[t]=s.create(\"div\",\"mapboxgl-ctrl-\"+t,n)})},n.prototype._resizeCanvas=function(e,r){var n=t.default.devicePixelRatio||1;this._canvas.width=n*e,this._canvas.height=n*r,this._canvas.style.width=e+\"px\",this._canvas.style.height=r+\"px\"},n.prototype._setupPainter=function(){var r=t.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},e.webGLContextAttributes),n=this._canvas.getContext(\"webgl\",r)||this._canvas.getContext(\"experimental-webgl\",r);n?this.painter=new zr(n,this.transform):this.fire(new t.ErrorEvent(new Error(\"Failed to initialize WebGL\")))},n.prototype._contextLost=function(e){e.preventDefault(),this._frameId&&(a.cancelFrame(this._frameId),this._frameId=null),this.fire(new t.Event(\"webglcontextlost\",{originalEvent:e}))},n.prototype._contextRestored=function(e){this._setupPainter(),this.resize(),this._update(),this.fire(new t.Event(\"webglcontextrestored\",{originalEvent:e}))},n.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},n.prototype._update=function(t){this.style&&(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender())},n.prototype._requestRenderFrame=function(t){return this._update(),this._renderTaskQueue.add(t)},n.prototype._cancelRenderFrame=function(t){this._renderTaskQueue.remove(t)},n.prototype._render=function(){this._renderTaskQueue.run();var e=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;var r=this.transform.zoom,n=a.now();this.style.zoomHistory.update(r,n);var i=new t.default$16(r,{now:n,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),o=i.crossFadingFactor();1===o&&o===this._crossFadingFactor||(e=!0,this._crossFadingFactor=o),this.style.update(i)}return this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),fadeDuration:this._fadeDuration}),this.fire(new t.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.Event(\"load\"))),this.style&&(this.style.hasTransitions()||e)&&(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty||this._placementDirty)&&this._rerender(),this},n.prototype.remove=function(){this._hash&&this._hash.remove(),a.cancelFrame(this._frameId),this._renderTaskQueue.clear(),this._frameId=null,this.setStyle(null),void 0!==t.default&&(t.default.removeEventListener(\"resize\",this._onWindowResize,!1),t.default.removeEventListener(\"online\",this._onWindowOnline,!1));var e=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");e&&e.loseContext(),fn(this._canvasContainer),fn(this._controlContainer),fn(this._missingCSSContainer),this._container.classList.remove(\"mapboxgl-map\"),this.fire(new t.Event(\"remove\"))},n.prototype._rerender=function(){var t=this;this.style&&!this._frameId&&(this._frameId=a.frame(function(){t._frameId=null,t._render()}))},n.prototype._onWindowOnline=function(){this._update()},n.prototype._onWindowResize=function(){this._trackResize&&this.stop().resize()._update()},i.showTileBoundaries.get=function(){return!!this._showTileBoundaries},i.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},i.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},i.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update())},i.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},i.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},i.repaint.get=function(){return!!this._repaint},i.repaint.set=function(t){this._repaint=t,this._update()},i.vertices.get=function(){return!!this._vertices},i.vertices.set=function(t){this._vertices=t,this._update()},n.prototype._onData=function(e){this._update(\"style\"===e.dataType),this.fire(new t.Event(e.dataType+\"data\",e))},n.prototype._onDataLoading=function(e){this.fire(new t.Event(e.dataType+\"dataloading\",e))},Object.defineProperties(n.prototype,i),n}(rn);function fn(t){t.parentNode&&t.parentNode.removeChild(t)}var hn={showCompass:!0,showZoom:!0},pn=function(e){var r=this;this.options=t.extend({},hn,e),this._container=s.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this.options.showZoom&&(this._zoomInButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in\",\"Zoom In\",function(){return r._map.zoomIn()}),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out\",\"Zoom Out\",function(){return r._map.zoomOut()})),this.options.showCompass&&(t.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-compass\",\"Reset North\",function(){return r._map.resetNorth()}),this._compassArrow=s.create(\"span\",\"mapboxgl-ctrl-compass-arrow\",this._compass))};function dn(t,e,r){if(t=new G(t.lng,t.lat),e){var n=new G(t.lng-360,t.lat),i=new G(t.lng+360,t.lat),a=r.locationPoint(t).distSqr(e);r.locationPoint(n).distSqr(e)<a?t=n:r.locationPoint(i).distSqr(e)<a&&(t=i)}for(;Math.abs(t.lng-r.center.lng)>180;){var o=r.locationPoint(t);if(o.x>=0&&o.y>=0&&o.x<=r.width&&o.y<=r.height)break;t.lng>r.center.lng?t.lng-=360:t.lng+=360}return t}pn.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t},pn.prototype.onAdd=function(t){return this._map=t,this.options.showCompass&&(this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Yr(t,{button:\"left\",element:this._compass}),this._handler.enable()),this._container},pn.prototype.onRemove=function(){s.remove(this._container),this.options.showCompass&&(this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.disable(),delete this._handler),delete this._map},pn.prototype._createButton=function(t,e,r){var n=s.create(\"button\",t,this._container);return n.type=\"button\",n.setAttribute(\"aria-label\",e),n.addEventListener(\"click\",r),n};var gn={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function vn(t,e,r){var n=t.classList;for(var i in gn)n.remove(\"mapboxgl-\"+r+\"-anchor-\"+i);n.add(\"mapboxgl-\"+r+\"-anchor-\"+e)}var mn=function(e){if((arguments[0]instanceof t.default.HTMLElement||2===arguments.length)&&(e=t.extend({element:e},arguments[1])),t.bindAll([\"_update\",\"_onMapClick\"],this),this._anchor=e&&e.anchor||\"center\",this._color=e&&e.color||\"#3FB1CE\",e&&e.element)this._element=e.element,this._offset=t.default$1.convert(e&&e.offset||[0,0]);else{this._defaultMarker=!0,this._element=s.create(\"div\");var r=s.createNS(\"http://www.w3.org/2000/svg\",\"svg\");r.setAttributeNS(null,\"height\",\"41px\"),r.setAttributeNS(null,\"width\",\"27px\"),r.setAttributeNS(null,\"viewBox\",\"0 0 27 41\");var n=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"stroke\",\"none\"),n.setAttributeNS(null,\"stroke-width\",\"1\"),n.setAttributeNS(null,\"fill\",\"none\"),n.setAttributeNS(null,\"fill-rule\",\"evenodd\");var i=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");i.setAttributeNS(null,\"fill-rule\",\"nonzero\");var a=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");a.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),a.setAttributeNS(null,\"fill\",\"#000000\");for(var o=0,l=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];o<l.length;o+=1){var c=l[o],u=s.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");u.setAttributeNS(null,\"opacity\",\"0.04\"),u.setAttributeNS(null,\"cx\",\"10.5\"),u.setAttributeNS(null,\"cy\",\"5.80029008\"),u.setAttributeNS(null,\"rx\",c.rx),u.setAttributeNS(null,\"ry\",c.ry),a.appendChild(u)}var f=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");f.setAttributeNS(null,\"fill\",this._color);var h=s.createNS(\"http://www.w3.org/2000/svg\",\"path\");h.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),f.appendChild(h);var p=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");p.setAttributeNS(null,\"opacity\",\"0.25\"),p.setAttributeNS(null,\"fill\",\"#000000\");var d=s.createNS(\"http://www.w3.org/2000/svg\",\"path\");d.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),p.appendChild(d);var g=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");g.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),g.setAttributeNS(null,\"fill\",\"#FFFFFF\");var v=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");v.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");var m=s.createNS(\"http://www.w3.org/2000/svg\",\"circle\");m.setAttributeNS(null,\"fill\",\"#000000\"),m.setAttributeNS(null,\"opacity\",\"0.25\"),m.setAttributeNS(null,\"cx\",\"5.5\"),m.setAttributeNS(null,\"cy\",\"5.5\"),m.setAttributeNS(null,\"r\",\"5.4999962\");var y=s.createNS(\"http://www.w3.org/2000/svg\",\"circle\");y.setAttributeNS(null,\"fill\",\"#FFFFFF\"),y.setAttributeNS(null,\"cx\",\"5.5\"),y.setAttributeNS(null,\"cy\",\"5.5\"),y.setAttributeNS(null,\"r\",\"5.4999962\"),v.appendChild(m),v.appendChild(y),i.appendChild(a),i.appendChild(f),i.appendChild(p),i.appendChild(g),i.appendChild(v),r.appendChild(i),this._element.appendChild(r),this._offset=t.default$1.convert(e&&e.offset||[0,-14])}this._element.classList.add(\"mapboxgl-marker\"),this._popup=null};mn.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this._update(),this._map.on(\"click\",this._onMapClick),this},mn.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),delete this._map),s.remove(this._element),this._popup&&this._popup.remove(),this},mn.prototype.getLngLat=function(){return this._lngLat},mn.prototype.setLngLat=function(t){return this._lngLat=G.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},mn.prototype.getElement=function(){return this._element},mn.prototype.setPopup=function(t){if(this._popup&&(this._popup.remove(),this._popup=null),t){if(!(\"offset\"in t.options)){var e=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[e,-1*(24.6+e)],\"bottom-right\":[-e,-1*(24.6+e)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat)}return this},mn.prototype._onMapClick=function(t){var e=t.originalEvent.target,r=this._element;this._popup&&(e===r||r.contains(e))&&this.togglePopup()},mn.prototype.getPopup=function(){return this._popup},mn.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},mn.prototype._update=function(t){this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=dn(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),s.setTransform(this._element,gn[this._anchor]+\" translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px)\"),vn(this._element,this._anchor,\"marker\"))},mn.prototype.getOffset=function(){return this._offset},mn.prototype.setOffset=function(e){return this._offset=t.default$1.convert(e),this._update(),this};var yn,xn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0},bn=function(e){function r(r){e.call(this),this.options=t.extend({},xn,r),t.bindAll([\"_onSuccess\",\"_onError\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\"],this)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.onAdd=function(e){var r;return this._map=e,this._container=s.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),r=this._setupUI,void 0!==yn?r(yn):void 0!==t.default.navigator.permissions?t.default.navigator.permissions.query({name:\"geolocation\"}).then(function(t){yn=\"denied\"!==t.state,r(yn)}):(yn=!!t.default.navigator.geolocation,r(yn)),this._container},r.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(t.default.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker.remove(),s.remove(this._container),this._map=void 0},r.prototype._onSuccess=function(e){if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()},r.prototype._updateCamera=function(t){var e=new G(t.coords.longitude,t.coords.latitude),r=t.coords.accuracy;this._map.fitBounds(e.toBounds(r),this.options.fitBoundsOptions,{geolocateSource:!0})},r.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove()},r.prototype._onError=function(e){if(this.options.trackUserLocation)if(1===e.code)this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),void 0!==this._geolocationWatchID&&this._clearWatch();else switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()},r.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},r.prototype._setupUI=function(e){var r=this;!1!==e&&(this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._geolocateButton=s.create(\"button\",\"mapboxgl-ctrl-icon mapboxgl-ctrl-geolocate\",this._container),this._geolocateButton.type=\"button\",this._geolocateButton.setAttribute(\"aria-label\",\"Geolocate\"),this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=s.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new mn(this._dotElement),this.options.trackUserLocation&&(this._watchState=\"OFF\")),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",function(e){e.geolocateSource||\"ACTIVE_LOCK\"!==r._watchState||(r._watchState=\"BACKGROUND\",r._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),r._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),r.fire(new t.Event(\"trackuserlocationend\")))}))},r.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._geolocationWatchID=t.default.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions))}else t.default.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},r.prototype._clearWatch=function(){t.default.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},r}(t.Evented),_n={maxWidth:100,unit:\"metric\"},wn=function(e){this.options=t.extend({},_n,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function kn(t,e,r){var n,i,a,o,s,l,c=r&&r.maxWidth||100,u=t._container.clientHeight/2,f=(n=t.unproject([0,u]),i=t.unproject([c,u]),a=Math.PI/180,o=n.lat*a,s=i.lat*a,l=Math.sin(o)*Math.sin(s)+Math.cos(o)*Math.cos(s)*Math.cos((i.lng-n.lng)*a),6371e3*Math.acos(Math.min(l,1)));if(r&&\"imperial\"===r.unit){var h=3.2808*f;h>5280?An(e,c,h/5280,\"mi\"):An(e,c,h,\"ft\")}else r&&\"nautical\"===r.unit?An(e,c,f/1852,\"nm\"):An(e,c,f,\"m\")}function An(t,e,r,n){var i,a,o,s=(i=r,(a=Math.pow(10,(\"\"+Math.floor(i)).length-1))*(o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:1)),l=s/r;\"m\"===n&&s>=1e3&&(s/=1e3,n=\"km\"),t.style.width=e*l+\"px\",t.innerHTML=s+n}wn.prototype.getDefaultPosition=function(){return\"bottom-left\"},wn.prototype._onMove=function(){kn(this._map,this._container,this.options)},wn.prototype.onAdd=function(t){return this._map=t,this._container=s.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},wn.prototype.onRemove=function(){s.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},wn.prototype.setUnit=function(t){this.options.unit=t,kn(this._map,this._container,this.options)};var Mn=function(){this._fullscreen=!1,t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.default.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.default.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.default.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.default.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\"};Mn.prototype.onAdd=function(e){return this._map=e,this._mapContainer=this._map.getContainer(),this._container=s.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._container.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._container},Mn.prototype.onRemove=function(){s.remove(this._container),this._map=null,t.default.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Mn.prototype._checkFullscreenSupport=function(){return!!(t.default.document.fullscreenEnabled||t.default.document.mozFullScreenEnabled||t.default.document.msFullscreenEnabled||t.default.document.webkitFullscreenEnabled)},Mn.prototype._setupUI=function(){var e=this._fullscreenButton=s.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._container);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.default.document.addEventListener(this._fullscreenchange,this._changeIcon)},Mn.prototype._isFullscreen=function(){return this._fullscreen},Mn.prototype._changeIcon=function(){(t.default.document.fullscreenElement||t.default.document.mozFullScreenElement||t.default.document.webkitFullscreenElement||t.default.document.msFullscreenElement)===this._mapContainer!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"))},Mn.prototype._onClickFullscreen=function(){this._isFullscreen()?t.default.document.exitFullscreen?t.default.document.exitFullscreen():t.default.document.mozCancelFullScreen?t.default.document.mozCancelFullScreen():t.default.document.msExitFullscreen?t.default.document.msExitFullscreen():t.default.document.webkitCancelFullScreen&&t.default.document.webkitCancelFullScreen():this._mapContainer.requestFullscreen?this._mapContainer.requestFullscreen():this._mapContainer.mozRequestFullScreen?this._mapContainer.mozRequestFullScreen():this._mapContainer.msRequestFullscreen?this._mapContainer.msRequestFullscreen():this._mapContainer.webkitRequestFullscreen&&this._mapContainer.webkitRequestFullscreen()};var Tn={closeButton:!0,closeOnClick:!0},Sn=function(e){function r(r){e.call(this),this.options=t.extend(Object.create(Tn),r),t.bindAll([\"_update\",\"_onClickClose\"],this)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.addTo=function(e){return this._map=e,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._update(),this.fire(new t.Event(\"open\")),this},r.prototype.isOpen=function(){return!!this._map},r.prototype.remove=function(){return this._content&&s.remove(this._content),this._container&&(s.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),delete this._map),this.fire(new t.Event(\"close\")),this},r.prototype.getLngLat=function(){return this._lngLat},r.prototype.setLngLat=function(t){return this._lngLat=G.convert(t),this._pos=null,this._update(),this},r.prototype.setText=function(e){return this.setDOMContent(t.default.document.createTextNode(e))},r.prototype.setHTML=function(e){var r,n=t.default.document.createDocumentFragment(),i=t.default.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},r.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},r.prototype._createContent=function(){this._content&&s.remove(this._content),this._content=s.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=s.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClickClose))},r.prototype._update=function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=s.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=s.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content)),this._map.transform.renderWorldCopies&&(this._lngLat=dn(this._lngLat,this._pos,this._map.transform));var e=this._pos=this._map.project(this._lngLat),r=this.options.anchor,n=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.default$1(0,0),top:new t.default$1(0,r),\"top-left\":new t.default$1(n,n),\"top-right\":new t.default$1(-n,n),bottom:new t.default$1(0,-r),\"bottom-left\":new t.default$1(n,-n),\"bottom-right\":new t.default$1(-n,-n),left:new t.default$1(r,0),right:new t.default$1(-r,0)}}if(r instanceof t.default$1||Array.isArray(r)){var i=t.default$1.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.default$1.convert(r.center||[0,0]),top:t.default$1.convert(r.top||[0,0]),\"top-left\":t.default$1.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.default$1.convert(r[\"top-right\"]||[0,0]),bottom:t.default$1.convert(r.bottom||[0,0]),\"bottom-left\":t.default$1.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.default$1.convert(r[\"bottom-right\"]||[0,0]),left:t.default$1.convert(r.left||[0,0]),right:t.default$1.convert(r.right||[0,0])}}return e(new t.default$1(0,0))}(this.options.offset);if(!r){var i,a=this._container.offsetWidth,o=this._container.offsetHeight;i=e.y+n.bottom.y<o?[\"top\"]:e.y>this._map.transform.height-o?[\"bottom\"]:[],e.x<a/2?i.push(\"left\"):e.x>this._map.transform.width-a/2&&i.push(\"right\"),r=0===i.length?\"bottom\":i.join(\"-\")}var l=e.add(n[r]).round();s.setTransform(this._container,gn[r]+\" translate(\"+l.x+\"px,\"+l.y+\"px)\"),vn(this._container,r,\"popup\")}},r.prototype._onClickClose=function(){this.remove()},r}(t.Evented),Cn={version:\"0.45.0\",supported:e,workerCount:Math.max(Math.floor(a.hardwareConcurrency/2),1),setRTLTextPlugin:t.setRTLTextPlugin,Map:un,NavigationControl:pn,GeolocateControl:bn,AttributionControl:nn,ScaleControl:wn,FullscreenControl:Mn,Popup:Sn,Marker:mn,Style:Je,LngLat:G,LngLatBounds:W,Point:t.default$1,Evented:t.Evented,config:v,get accessToken(){return v.ACCESS_TOKEN},set accessToken(t){v.ACCESS_TOKEN=t},workerUrl:\"\"};return Cn}),n})}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],413:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=1<<t+1,r=new Array(e),n=0;n<e;++n)r[n]=a(t,n);return r};var n=t(\"convex-hull\");function i(t,e,r){for(var n=new Array(t),i=0;i<t;++i)n[i]=0,i===e&&(n[i]+=.5),i===r&&(n[i]+=.5);return n}function a(t,e){if(0===e||e===(1<<t+1)-1)return[];for(var r=[],a=[],o=0;o<=t;++o)if(e&1<<o){r.push(i(t,o-1,o-1)),a.push(null);for(var s=0;s<=t;++s)~e&1<<s&&(r.push(i(t,o-1,s-1)),a.push([o,s]))}var l=n(r),c=[];t:for(o=0;o<l.length;++o){var u=l[o],f=[];for(s=0;s<u.length;++s){if(!a[u[s]])continue t;f.push(a[u[s]].slice())}c.push(f)}return c}},{\"convex-hull\":119}],414:[function(t,e,r){var n=t(\"./normalize\"),i=t(\"gl-mat4/create\"),a=t(\"gl-mat4/clone\"),o=t(\"gl-mat4/determinant\"),s=t(\"gl-mat4/invert\"),l=t(\"gl-mat4/transpose\"),c={length:t(\"gl-vec3/length\"),normalize:t(\"gl-vec3/normalize\"),dot:t(\"gl-vec3/dot\"),cross:t(\"gl-vec3/cross\")},u=i(),f=i(),h=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],d=[0,0,0];function g(t,e,r,n,i){t[0]=e[0]*n+r[0]*i,t[1]=e[1]*n+r[1]*i,t[2]=e[2]*n+r[2]*i}e.exports=function(t,e,r,i,v,m){if(e||(e=[0,0,0]),r||(r=[0,0,0]),i||(i=[0,0,0]),v||(v=[0,0,0,1]),m||(m=[0,0,0,1]),!n(u,t))return!1;if(a(f,u),f[3]=0,f[7]=0,f[11]=0,f[15]=1,Math.abs(o(f)<1e-8))return!1;var y,x,b,_,w,k,A,M=u[3],T=u[7],S=u[11],C=u[12],E=u[13],L=u[14],z=u[15];if(0!==M||0!==T||0!==S){if(h[0]=M,h[1]=T,h[2]=S,h[3]=z,!s(f,f))return!1;l(f,f),y=v,b=f,_=(x=h)[0],w=x[1],k=x[2],A=x[3],y[0]=b[0]*_+b[4]*w+b[8]*k+b[12]*A,y[1]=b[1]*_+b[5]*w+b[9]*k+b[13]*A,y[2]=b[2]*_+b[6]*w+b[10]*k+b[14]*A,y[3]=b[3]*_+b[7]*w+b[11]*k+b[15]*A}else v[0]=v[1]=v[2]=0,v[3]=1;if(e[0]=C,e[1]=E,e[2]=L,function(t,e){t[0][0]=e[0],t[0][1]=e[1],t[0][2]=e[2],t[1][0]=e[4],t[1][1]=e[5],t[1][2]=e[6],t[2][0]=e[8],t[2][1]=e[9],t[2][2]=e[10]}(p,u),r[0]=c.length(p[0]),c.normalize(p[0],p[0]),i[0]=c.dot(p[0],p[1]),g(p[1],p[1],p[0],1,-i[0]),r[1]=c.length(p[1]),c.normalize(p[1],p[1]),i[0]/=r[1],i[1]=c.dot(p[0],p[2]),g(p[2],p[2],p[0],1,-i[1]),i[2]=c.dot(p[1],p[2]),g(p[2],p[2],p[1],1,-i[2]),r[2]=c.length(p[2]),c.normalize(p[2],p[2]),i[1]/=r[2],i[2]/=r[2],c.cross(d,p[1],p[2]),c.dot(p[0],d)<0)for(var O=0;O<3;O++)r[O]*=-1,p[O][0]*=-1,p[O][1]*=-1,p[O][2]*=-1;return m[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),m[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),m[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),m[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(m[0]=-m[0]),p[0][2]>p[2][0]&&(m[1]=-m[1]),p[1][0]>p[0][1]&&(m[2]=-m[2]),!0}},{\"./normalize\":415,\"gl-mat4/clone\":250,\"gl-mat4/create\":251,\"gl-mat4/determinant\":252,\"gl-mat4/invert\":256,\"gl-mat4/transpose\":266,\"gl-vec3/cross\":320,\"gl-vec3/dot\":325,\"gl-vec3/length\":335,\"gl-vec3/normalize\":342}],415:[function(t,e,r){e.exports=function(t,e){var r=e[15];if(0===r)return!1;for(var n=1/r,i=0;i<16;i++)t[i]=e[i]*n;return!0}},{}],416:[function(t,e,r){var n=t(\"gl-vec3/lerp\"),i=t(\"mat4-recompose\"),a=t(\"mat4-decompose\"),o=t(\"gl-mat4/determinant\"),s=t(\"quat-slerp\"),l=f(),c=f(),u=f();function f(){return{translate:h(),scale:h(1),skew:h(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function h(t){return[t||0,t||0,t||0]}e.exports=function(t,e,r,f){if(0===o(e)||0===o(r))return!1;var h=a(e,l.translate,l.scale,l.skew,l.perspective,l.quaternion),p=a(r,c.translate,c.scale,c.skew,c.perspective,c.quaternion);return!(!h||!p||(n(u.translate,l.translate,c.translate,f),n(u.skew,l.skew,c.skew,f),n(u.scale,l.scale,c.scale,f),n(u.perspective,l.perspective,c.perspective,f),s(u.quaternion,l.quaternion,c.quaternion,f),i(t,u.translate,u.scale,u.skew,u.perspective,u.quaternion),0))}},{\"gl-mat4/determinant\":252,\"gl-vec3/lerp\":336,\"mat4-decompose\":414,\"mat4-recompose\":417,\"quat-slerp\":469}],417:[function(t,e,r){var n={identity:t(\"gl-mat4/identity\"),translate:t(\"gl-mat4/translate\"),multiply:t(\"gl-mat4/multiply\"),create:t(\"gl-mat4/create\"),scale:t(\"gl-mat4/scale\"),fromRotationTranslation:t(\"gl-mat4/fromRotationTranslation\")},i=(n.create(),n.create());e.exports=function(t,e,r,a,o,s){return n.identity(t),n.fromRotationTranslation(t,s,e),t[3]=o[0],t[7]=o[1],t[11]=o[2],t[15]=o[3],n.identity(i),0!==a[2]&&(i[9]=a[2],n.multiply(t,t,i)),0!==a[1]&&(i[9]=0,i[8]=a[1],n.multiply(t,t,i)),0!==a[0]&&(i[8]=0,i[4]=a[0],n.multiply(t,t,i)),n.scale(t,t,r),t}},{\"gl-mat4/create\":251,\"gl-mat4/fromRotationTranslation\":254,\"gl-mat4/identity\":255,\"gl-mat4/multiply\":258,\"gl-mat4/scale\":264,\"gl-mat4/translate\":265}],418:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],419:[function(t,e,r){\"use strict\";var n=t(\"binary-search-bounds\"),i=t(\"mat4-interpolate\"),a=t(\"gl-mat4/invert\"),o=t(\"gl-mat4/rotateX\"),s=t(\"gl-mat4/rotateY\"),l=t(\"gl-mat4/rotateZ\"),c=t(\"gl-mat4/lookAt\"),u=t(\"gl-mat4/translate\"),f=(t(\"gl-mat4/scale\"),t(\"gl-vec3/normalize\")),h=[0,0,0];function p(t){this._components=t.slice(),this._time=[0],this.prevMatrix=t.slice(),this.nextMatrix=t.slice(),this.computedMatrix=t.slice(),this.computedInverse=t.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}e.exports=function(t){return new p((t=t||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var d=p.prototype;d.recalcMatrix=function(t){var e=this._time,r=n.le(e,t),o=this.computedMatrix;if(!(r<0)){var s=this._components;if(r===e.length-1)for(var l=16*r,c=0;c<16;++c)o[c]=s[l++];else{var u=e[r+1]-e[r],h=(l=16*r,this.prevMatrix),p=!0;for(c=0;c<16;++c)h[c]=s[l++];var d=this.nextMatrix;for(c=0;c<16;++c)d[c]=s[l++],p=p&&h[c]===d[c];if(u<1e-6||p)for(c=0;c<16;++c)o[c]=h[c];else i(o,h,d,(t-e[r])/u)}var g=this.computedUp;g[0]=o[1],g[1]=o[5],g[2]=o[9],f(g,g);var v=this.computedInverse;a(v,o);var m=this.computedEye,y=v[15];m[0]=v[12]/y,m[1]=v[13]/y,m[2]=v[14]/y;var x=this.computedCenter,b=Math.exp(this.computedRadius[0]);for(c=0;c<3;++c)x[c]=m[c]-o[2+4*c]*b}},d.idle=function(t){if(!(t<this.lastT())){for(var e=this._components,r=e.length-16,n=0;n<16;++n)e.push(e[r++]);this._time.push(t)}},d.flush=function(t){var e=n.gt(this._time,t)-2;e<0||(this._time.splice(0,e),this._components.splice(0,16*e))},d.lastT=function(){return this._time[this._time.length-1]},d.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||h,n=n||this.computedUp,this.setMatrix(t,c(this.computedMatrix,e,r,n));for(var i=0,a=0;a<3;++a)i+=Math.pow(r[a]-e[a],2);i=Math.log(Math.sqrt(i)),this.computedRadius[0]=i},d.rotate=function(t,e,r,n){this.recalcMatrix(t);var i=this.computedInverse;e&&s(i,i,e),r&&o(i,i,r),n&&l(i,i,n),this.setMatrix(t,a(this.computedMatrix,i))};var g=[0,0,0];d.pan=function(t,e,r,n){g[0]=-(e||0),g[1]=-(r||0),g[2]=-(n||0),this.recalcMatrix(t);var i=this.computedInverse;u(i,i,g),this.setMatrix(t,a(i,i))},d.translate=function(t,e,r,n){g[0]=e||0,g[1]=r||0,g[2]=n||0,this.recalcMatrix(t);var i=this.computedMatrix;u(i,i,g),this.setMatrix(t,i)},d.setMatrix=function(t,e){if(!(t<this.lastT())){this._time.push(t);for(var r=0;r<16;++r)this._components.push(e[r])}},d.setDistance=function(t,e){this.computedRadius[0]=e},d.setDistanceLimits=function(t,e){var r=this._limits;r[0]=t,r[1]=e},d.getDistanceLimits=function(t){var e=this._limits;return t?(t[0]=e[0],t[1]=e[1],t):e}},{\"binary-search-bounds\":80,\"gl-mat4/invert\":256,\"gl-mat4/lookAt\":257,\"gl-mat4/rotateX\":261,\"gl-mat4/rotateY\":262,\"gl-mat4/rotateZ\":263,\"gl-mat4/scale\":264,\"gl-mat4/translate\":265,\"gl-vec3/normalize\":342,\"mat4-interpolate\":416}],420:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.length;if(e<3){for(var r=new Array(e),i=0;i<e;++i)r[i]=i;return 2===e&&t[0][0]===t[1][0]&&t[0][1]===t[1][1]?[0]:r}for(var a=new Array(e),i=0;i<e;++i)a[i]=i;a.sort(function(e,r){var n=t[e][0]-t[r][0];return n||t[e][1]-t[r][1]});for(var o=[a[0],a[1]],s=[a[0],a[1]],i=2;i<e;++i){for(var l=a[i],c=t[l],u=o.length;u>1&&n(t[o[u-2]],t[o[u-1]],c)<=0;)u-=1,o.pop();for(o.push(l),u=s.length;u>1&&n(t[s[u-2]],t[s[u-1]],c)>=0;)u-=1,s.pop();s.push(l)}for(var r=new Array(s.length+o.length-2),f=0,i=0,h=o.length;i<h;++i)r[f++]=o[i];for(var p=s.length-2;p>0;--p)r[f++]=s[p];return r};var n=t(\"robust-orientation\")[3]},{\"robust-orientation\":488}],421:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function v(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}v();var m={element:t};return Object.defineProperties(m,{enabled:{get:function(){return s},set:function(e){e?v():s&&(s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h)))},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),m};var n=t(\"mouse-event\")},{\"mouse-event\":423}],422:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],423:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<<e-1}else if(\"button\"in t){var e;if(1===(e=t.button))return 4;if(2===e)return 2;if(e>=0)return 1<<e}}return 0},r.element=n,r.x=function(t){if(\"object\"==typeof t){if(\"offsetX\"in t)return t.offsetX;var e=n(t).getBoundingClientRect();return t.clientX-e.left}return 0},r.y=function(t){if(\"object\"==typeof t){if(\"offsetY\"in t)return t.offsetY;var e=n(t).getBoundingClientRect();return t.clientY-e.top}return 0}},{}],424:[function(t,e,r){\"use strict\";var n=t(\"to-px\");e.exports=function(t,e,r){\"function\"==typeof t&&(r=!!e,e=t,t=window);var i=n(\"ex\",t),a=function(t){r&&t.preventDefault();var n=t.deltaX||0,a=t.deltaY||0,o=t.deltaZ||0,s=t.deltaMode,l=1;switch(s){case 1:l=i;break;case 2:l=window.innerHeight}if(a*=l,o*=l,(n*=l)||a||o)return e(n,a,o,t)};return t.addEventListener(\"wheel\",a),a}},{\"to-px\":517}],425:[function(t,e,r){\"use strict\";var n=t(\"typedarray-pool\");function i(t){return\"a\"+t}function a(t){return\"d\"+t}function o(t,e){return\"c\"+t+\"_\"+e}function s(t){return\"s\"+t}function l(t,e){return\"t\"+t+\"_\"+e}function c(t){return\"o\"+t}function u(t){return\"x\"+t}function f(t){return\"p\"+t}function h(t,e){return\"d\"+t+\"_\"+e}function p(t){return\"i\"+t}function d(t,e){return\"u\"+t+\"_\"+e}function g(t){return\"b\"+t}function v(t){return\"y\"+t}function m(t){return\"e\"+t}function y(t){return\"v\"+t}e.exports=function(t){function e(t){throw new Error(\"ndarray-extract-contour: \"+t)}\"object\"!=typeof t&&e(\"Must specify arguments\");var r=t.order;Array.isArray(r)||e(\"Must specify order\");var T=t.arrayArguments||1;T<1&&e(\"Must have at least one array argument\");var S=t.scalarArguments||0;S<0&&e(\"Scalar arg count must be > 0\");\"function\"!=typeof t.vertex&&e(\"Must specify vertex creation function\");\"function\"!=typeof t.cell&&e(\"Must specify cell creation function\");\"function\"!=typeof t.phase&&e(\"Must specify phase function\");for(var C=t.getters||[],E=new Array(T),L=0;L<T;++L)C.indexOf(L)>=0?E[L]=!0:E[L]=!1;return function(t,e,r,T,S,C){var E=C.length,L=S.length;if(L<2)throw new Error(\"ndarray-extract-contour: Dimension must be at least 2\");for(var z=\"extractContour\"+S.join(\"_\"),O=[],I=[],D=[],P=0;P<E;++P)D.push(i(P));for(var P=0;P<T;++P)D.push(u(P));for(var P=0;P<L;++P)I.push(s(P)+\"=\"+i(0)+\".shape[\"+P+\"]|0\");for(var P=0;P<E;++P){I.push(a(P)+\"=\"+i(P)+\".data\",c(P)+\"=\"+i(P)+\".offset|0\");for(var R=0;R<L;++R)I.push(l(P,R)+\"=\"+i(P)+\".stride[\"+R+\"]|0\")}for(var P=0;P<E;++P){I.push(f(P)+\"=\"+c(P)),I.push(o(P,0));for(var R=1;R<1<<L;++R){for(var F=[],B=0;B<L;++B)R&1<<B&&F.push(\"-\"+l(P,B));I.push(h(P,R)+\"=(\"+F.join(\"\")+\")|0\"),I.push(o(P,R)+\"=0\")}}for(var P=0;P<E;++P)for(var R=0;R<L;++R){var N=[l(P,S[R])];R>0&&N.push(l(P,S[R-1])+\"*\"+s(S[R-1])),I.push(d(P,S[R])+\"=(\"+N.join(\"-\")+\")|0\")}for(var P=0;P<L;++P)I.push(p(P)+\"=0\");I.push(_+\"=0\");for(var j=[\"2\"],P=L-2;P>=0;--P)j.push(s(S[P]));I.push(w+\"=(\"+j.join(\"*\")+\")|0\",b+\"=mallocUint32(\"+w+\")\",x+\"=mallocUint32(\"+w+\")\",k+\"=0\"),I.push(g(0)+\"=0\");for(var R=1;R<1<<L;++R){for(var V=[],U=[],B=0;B<L;++B)R&1<<B&&(0===U.length?V.push(\"1\"):V.unshift(U.join(\"*\"))),U.push(s(S[B]));var q=\"\";V[0].indexOf(s(S[L-2]))<0&&(q=\"-\");var H=M(L,R,S);I.push(m(H)+\"=(-\"+V.join(\"-\")+\")|0\",v(H)+\"=(\"+q+V.join(\"-\")+\")|0\",g(H)+\"=0\")}function G(t,e){O.push(\"for(\",p(S[t]),\"=\",e,\";\",p(S[t]),\"<\",s(S[t]),\";\",\"++\",p(S[t]),\"){\")}function W(t){for(var e=0;e<E;++e)O.push(f(e),\"+=\",d(e,S[t]),\";\");O.push(\"}\")}function Y(){for(var t=1;t<1<<L;++t)O.push(A,\"=\",m(t),\";\",m(t),\"=\",v(t),\";\",v(t),\"=\",A,\";\")}I.push(y(0)+\"=0\",A+\"=0\"),function t(e,r){if(e<0)return void function(t){for(var e=0;e<E;++e)C[e]?O.push(o(e,0),\"=\",a(e),\".get(\",f(e),\");\"):O.push(o(e,0),\"=\",a(e),\"[\",f(e),\"];\");for(var r=[],e=0;e<E;++e)r.push(o(e,0));for(var e=0;e<T;++e)r.push(u(e));O.push(g(0),\"=\",b,\"[\",k,\"]=phase(\",r.join(),\");\");for(var n=1;n<1<<L;++n)O.push(g(n),\"=\",b,\"[\",k,\"+\",m(n),\"];\");for(var i=[],n=1;n<1<<L;++n)i.push(\"(\"+g(0)+\"!==\"+g(n)+\")\");O.push(\"if(\",i.join(\"||\"),\"){\");for(var s=[],e=0;e<L;++e)s.push(p(e));for(var e=0;e<E;++e){s.push(o(e,0));for(var n=1;n<1<<L;++n)C[e]?O.push(o(e,n),\"=\",a(e),\".get(\",f(e),\"+\",h(e,n),\");\"):O.push(o(e,n),\"=\",a(e),\"[\",f(e),\"+\",h(e,n),\"];\"),s.push(o(e,n))}for(var e=0;e<1<<L;++e)s.push(g(e));for(var e=0;e<T;++e)s.push(u(e));O.push(\"vertex(\",s.join(),\");\",y(0),\"=\",x,\"[\",k,\"]=\",_,\"++;\");for(var l=(1<<L)-1,c=g(l),n=0;n<L;++n)if(0==(t&~(1<<n))){for(var d=l^1<<n,v=g(d),w=[],A=d;A>0;A=A-1&d)w.push(x+\"[\"+k+\"+\"+m(A)+\"]\");w.push(y(0));for(var A=0;A<E;++A)1&n?w.push(o(A,l),o(A,d)):w.push(o(A,d),o(A,l));1&n?w.push(c,v):w.push(v,c);for(var A=0;A<T;++A)w.push(u(A));O.push(\"if(\",c,\"!==\",v,\"){\",\"face(\",w.join(),\")}\")}O.push(\"}\",k,\"+=1;\")}(r);!function(t){for(var e=t-1;e>=0;--e)G(e,0);for(var r=[],e=0;e<E;++e)C[e]?r.push(a(e)+\".get(\"+f(e)+\")\"):r.push(a(e)+\"[\"+f(e)+\"]\");for(var e=0;e<T;++e)r.push(u(e));O.push(b,\"[\",k,\"++]=phase(\",r.join(),\");\");for(var e=0;e<t;++e)W(e);for(var n=0;n<E;++n)O.push(f(n),\"+=\",d(n,S[t]),\";\")}(e);O.push(\"if(\",s(S[e]),\">0){\",p(S[e]),\"=1;\");t(e-1,r|1<<S[e]);for(var n=0;n<E;++n)O.push(f(n),\"+=\",d(n,S[e]),\";\");e===L-1&&(O.push(k,\"=0;\"),Y());G(e,2);t(e-1,r);e===L-1&&(O.push(\"if(\",p(S[L-1]),\"&1){\",k,\"=0;}\"),Y());W(e);O.push(\"}\")}(L-1,0),O.push(\"freeUint32(\",x,\");freeUint32(\",b,\");\");var X=[\"'use strict';\",\"function \",z,\"(\",D.join(),\"){\",\"var \",I.join(),\";\",O.join(\"\"),\"}\",\"return \",z].join(\"\");return new Function(\"vertex\",\"face\",\"phase\",\"mallocUint32\",\"freeUint32\",X)(t,e,r,n.mallocUint32,n.freeUint32)}(t.vertex,t.cell,t.phase,S,r,E)};var x=\"V\",b=\"P\",_=\"N\",w=\"Q\",k=\"X\",A=\"T\";function M(t,e,r){for(var n=0,i=0;i<t;++i)e&1<<i&&(n|=1<<r[i]);return n}},{\"typedarray-pool\":523}],426:[function(t,e,r){\"use strict\";var n=t(\"cwise/lib/wrapper\")({args:[\"index\",\"array\",\"scalar\"],pre:{body:\"{}\",args:[],thisVars:[],localVars:[]},body:{body:\"{_inline_1_arg1_=_inline_1_arg2_.apply(void 0,_inline_1_arg0_)}\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg1_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_1_arg2_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},debug:!1,funcName:\"cwise\",blockSize:64});e.exports=function(t,e){return n(t,e),t}},{\"cwise/lib/wrapper\":138}],427:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){if(Array.isArray(r)){if(r.length!==e.dimension)throw new Error(\"ndarray-gradient: invalid boundary conditions\")}else r=n(e.dimension,\"string\"==typeof r?r:\"clamp\");if(t.dimension!==e.dimension+1)throw new Error(\"ndarray-gradient: output dimension must be +1 input dimension\");if(t.shape[e.dimension]!==e.dimension)throw new Error(\"ndarray-gradient: output shape must match input shape\");for(var i=0;i<e.dimension;++i)if(t.shape[i]!==e.shape[i])throw new Error(\"ndarray-gradient: shape mismatch\");if(0===e.size)return t;if(e.dimension<=0)return t.set(0),t;return function(t){var e=t.join();if(m=o[e])return m;var r=t.length,n=[\"function gradient(dst,src){var s=src.shape.slice();\"];function i(e){for(var i=r-e.length,a=[],o=[],s=[],l=0;l<r;++l)e.indexOf(l+1)>=0?s.push(\"0\"):e.indexOf(-(l+1))>=0?s.push(\"s[\"+l+\"]-1\"):(s.push(\"-1\"),a.push(\"1\"),o.push(\"s[\"+l+\"]-2\"));var c=\".lo(\"+a.join()+\").hi(\"+o.join()+\")\";if(0===a.length&&(c=\"\"),i>0){n.push(\"if(1\");for(var l=0;l<r;++l)e.indexOf(l+1)>=0||e.indexOf(-(l+1))>=0||n.push(\"&&s[\",l,\"]>2\");n.push(\"){grad\",i,\"(src.pick(\",s.join(),\")\",c);for(var l=0;l<r;++l)e.indexOf(l+1)>=0||e.indexOf(-(l+1))>=0||n.push(\",dst.pick(\",s.join(),\",\",l,\")\",c);n.push(\");\")}for(var l=0;l<e.length;++l){var u=Math.abs(e[l])-1,f=\"dst.pick(\"+s.join()+\",\"+u+\")\"+c;switch(t[u]){case\"clamp\":var h=s.slice(),p=s.slice();e[l]<0?h[u]=\"s[\"+u+\"]-2\":p[u]=\"1\",0===i?n.push(\"if(s[\",u,\"]>1){dst.set(\",s.join(),\",\",u,\",0.5*(src.get(\",h.join(),\")-src.get(\",p.join(),\")))}else{dst.set(\",s.join(),\",\",u,\",0)};\"):n.push(\"if(s[\",u,\"]>1){diff(\",f,\",src.pick(\",h.join(),\")\",c,\",src.pick(\",p.join(),\")\",c,\");}else{zero(\",f,\");};\");break;case\"mirror\":0===i?n.push(\"dst.set(\",s.join(),\",\",u,\",0);\"):n.push(\"zero(\",f,\");\");break;case\"wrap\":var d=s.slice(),g=s.slice();e[l]<0?(d[u]=\"s[\"+u+\"]-2\",g[u]=\"0\"):(d[u]=\"s[\"+u+\"]-1\",g[u]=\"1\"),0===i?n.push(\"if(s[\",u,\"]>2){dst.set(\",s.join(),\",\",u,\",0.5*(src.get(\",d.join(),\")-src.get(\",g.join(),\")))}else{dst.set(\",s.join(),\",\",u,\",0)};\"):n.push(\"if(s[\",u,\"]>2){diff(\",f,\",src.pick(\",d.join(),\")\",c,\",src.pick(\",g.join(),\")\",c,\");}else{zero(\",f,\");};\");break;default:throw new Error(\"ndarray-gradient: Invalid boundary condition\")}}i>0&&n.push(\"};\")}for(var s=0;s<1<<r;++s){for(var f=[],h=0;h<r;++h)s&1<<h&&f.push(h+1);for(var p=0;p<1<<f.length;++p){for(var d=f.slice(),h=0;h<f.length;++h)p&1<<h&&(d[h]=-d[h]);i(d)}}n.push(\"return dst;};return gradient\");for(var g=[\"diff\",\"zero\"],v=[l,c],s=1;s<=r;++s)g.push(\"grad\"+s),v.push(u(s));g.push(n.join(\"\"));var m=Function.apply(void 0,g).apply(void 0,v);return a[e]=m,m}(r)(t,e)};var n=t(\"dup\"),i=t(\"cwise-compiler\"),a={},o={},s={body:\"\",args:[],thisVars:[],localVars:[]},l=i({args:[\"array\",\"array\",\"array\"],pre:s,post:s,body:{args:[{name:\"out\",lvalue:!0,rvalue:!1,count:1},{name:\"left\",lvalue:!1,rvalue:!0,count:1},{name:\"right\",lvalue:!1,rvalue:!0,count:1}],body:\"out=0.5*(left-right)\",thisVars:[],localVars:[]},funcName:\"cdiff\"}),c=i({args:[\"array\"],pre:s,post:s,body:{args:[{name:\"out\",lvalue:!0,rvalue:!1,count:1}],body:\"out=0\",thisVars:[],localVars:[]},funcName:\"zero\"});function u(t){if(t in a)return a[t];for(var e=[],r=0;r<t;++r)e.push(\"out\",r,\"s=0.5*(inp\",r,\"l-inp\",r,\"r);\");var o=[\"array\"],l=[\"junk\"];for(r=0;r<t;++r){o.push(\"array\"),l.push(\"out\"+r+\"s\");var c=n(t);c[r]=-1,o.push({array:0,offset:c.slice()}),c[r]=1,o.push({array:0,offset:c.slice()}),l.push(\"inp\"+r+\"l\",\"inp\"+r+\"r\")}return a[t]=i({args:o,pre:s,post:s,body:{body:e.join(\"\"),args:l.map(function(t){return{name:t,lvalue:0===t.indexOf(\"out\"),rvalue:0===t.indexOf(\"inp\"),count:\"junk\"!==t|0}}),thisVars:[],localVars:[]},funcName:\"fdTemplate\"+t})}},{\"cwise-compiler\":135,dup:156}],428:[function(t,e,r){\"use strict\";var n=t(\"ndarray-warp\"),i=t(\"gl-matrix-invert\");e.exports=function(t,e,r){var a=e.dimension,o=i([],r);return n(t,e,function(t,e){for(var r=0;r<a;++r){t[r]=o[(a+1)*a+r];for(var n=0;n<a;++n)t[r]+=o[(a+1)*n+r]*e[n]}var i=o[(a+1)*(a+1)-1];for(n=0;n<a;++n)i+=o[(a+1)*n+a]*e[n];var s=1/i;for(r=0;r<a;++r)t[r]*=s;return t}),t}},{\"gl-matrix-invert\":267,\"ndarray-warp\":435}],429:[function(t,e,r){\"use strict\";function n(t,e){var r=Math.floor(e),n=e-r,i=0<=r&&r<t.shape[0],a=0<=r+1&&r+1<t.shape[0];return(1-n)*(i?+t.get(r):0)+n*(a?+t.get(r+1):0)}function i(t,e,r){var n=Math.floor(e),i=e-n,a=0<=n&&n<t.shape[0],o=0<=n+1&&n+1<t.shape[0],s=Math.floor(r),l=r-s,c=0<=s&&s<t.shape[1],u=0<=s+1&&s+1<t.shape[1],f=a&&c?t.get(n,s):0,h=a&&u?t.get(n,s+1):0;return(1-l)*((1-i)*f+i*(o&&c?t.get(n+1,s):0))+l*((1-i)*h+i*(o&&u?t.get(n+1,s+1):0))}function a(t,e,r,n){var i=Math.floor(e),a=e-i,o=0<=i&&i<t.shape[0],s=0<=i+1&&i+1<t.shape[0],l=Math.floor(r),c=r-l,u=0<=l&&l<t.shape[1],f=0<=l+1&&l+1<t.shape[1],h=Math.floor(n),p=n-h,d=0<=h&&h<t.shape[2],g=0<=h+1&&h+1<t.shape[2],v=o&&u&&d?t.get(i,l,h):0,m=o&&f&&d?t.get(i,l+1,h):0,y=s&&u&&d?t.get(i+1,l,h):0,x=s&&f&&d?t.get(i+1,l+1,h):0,b=o&&u&&g?t.get(i,l,h+1):0,_=o&&f&&g?t.get(i,l+1,h+1):0;return(1-p)*((1-c)*((1-a)*v+a*y)+c*((1-a)*m+a*x))+p*((1-c)*((1-a)*b+a*(s&&u&&g?t.get(i+1,l,h+1):0))+c*((1-a)*_+a*(s&&f&&g?t.get(i+1,l+1,h+1):0)))}e.exports=function(t,e,r,o){switch(t.shape.length){case 0:return 0;case 1:return n(t,e);case 2:return i(t,e,r);case 3:return a(t,e,r,o);default:return function(t){var e,r,n=0|t.shape.length,i=new Array(n),a=new Array(n),o=new Array(n),s=new Array(n);for(e=0;e<n;++e)r=+arguments[e+1],i[e]=Math.floor(r),a[e]=r-i[e],o[e]=0<=i[e]&&i[e]<t.shape[e],s[e]=0<=i[e]+1&&i[e]+1<t.shape[e];var l,c,u,f=0;t:for(e=0;e<1<<n;++e){for(c=1,u=t.offset,l=0;l<n;++l)if(e&1<<l){if(!s[l])continue t;c*=a[l],u+=t.stride[l]*(i[l]+1)}else{if(!o[l])continue t;c*=1-a[l],u+=t.stride[l]*i[l]}f+=c*t.data[u]}return f}.apply(void 0,arguments)}},e.exports.d1=n,e.exports.d2=i,e.exports.d3=a},{}],430:[function(t,e,r){\"use strict\";var n=t(\"cwise-compiler\"),i={body:\"\",args:[],thisVars:[],localVars:[]};function a(t){if(!t)return i;for(var e=0;e<t.args.length;++e){var r=t.args[e];t.args[e]=0===e?{name:r,lvalue:!0,rvalue:!!t.rvalue,count:t.count||1}:{name:r,lvalue:!1,rvalue:!0,count:1}}return t.thisVars||(t.thisVars=[]),t.localVars||(t.localVars=[]),t}function o(t){for(var e=[],r=0;r<t.args.length;++r)e.push(\"a\"+r);return new Function(\"P\",[\"return function \",t.funcName,\"_ndarrayops(\",e.join(\",\"),\") {P(\",e.join(\",\"),\");return a0}\"].join(\"\"))(function(t){return n({args:t.args,pre:a(t.pre),body:a(t.body),post:a(t.proc),funcName:t.funcName})}(t))}var s={add:\"+\",sub:\"-\",mul:\"*\",div:\"/\",mod:\"%\",band:\"&\",bor:\"|\",bxor:\"^\",lshift:\"<<\",rshift:\">>\",rrshift:\">>>\"};!function(){for(var t in s){var e=s[t];r[t]=o({args:[\"array\",\"array\",\"array\"],body:{args:[\"a\",\"b\",\"c\"],body:\"a=b\"+e+\"c\"},funcName:t}),r[t+\"eq\"]=o({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a\"+e+\"=b\"},rvalue:!0,funcName:t+\"eq\"}),r[t+\"s\"]=o({args:[\"array\",\"array\",\"scalar\"],body:{args:[\"a\",\"b\",\"s\"],body:\"a=b\"+e+\"s\"},funcName:t+\"s\"}),r[t+\"seq\"]=o({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"s\"],body:\"a\"+e+\"=s\"},rvalue:!0,funcName:t+\"seq\"})}}();var l={not:\"!\",bnot:\"~\",neg:\"-\",recip:\"1.0/\"};!function(){for(var t in l){var e=l[t];r[t]=o({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=\"+e+\"b\"},funcName:t}),r[t+\"eq\"]=o({args:[\"array\"],body:{args:[\"a\"],body:\"a=\"+e+\"a\"},rvalue:!0,count:2,funcName:t+\"eq\"})}}();var c={and:\"&&\",or:\"||\",eq:\"===\",neq:\"!==\",lt:\"<\",gt:\">\",leq:\"<=\",geq:\">=\"};!function(){for(var t in c){var e=c[t];r[t]=o({args:[\"array\",\"array\",\"array\"],body:{args:[\"a\",\"b\",\"c\"],body:\"a=b\"+e+\"c\"},funcName:t}),r[t+\"s\"]=o({args:[\"array\",\"array\",\"scalar\"],body:{args:[\"a\",\"b\",\"s\"],body:\"a=b\"+e+\"s\"},funcName:t+\"s\"}),r[t+\"eq\"]=o({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=a\"+e+\"b\"},rvalue:!0,count:2,funcName:t+\"eq\"}),r[t+\"seq\"]=o({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"s\"],body:\"a=a\"+e+\"s\"},rvalue:!0,count:2,funcName:t+\"seq\"})}}();var u=[\"abs\",\"acos\",\"asin\",\"atan\",\"ceil\",\"cos\",\"exp\",\"floor\",\"log\",\"round\",\"sin\",\"sqrt\",\"tan\"];!function(){for(var t=0;t<u.length;++t){var e=u[t];r[e]=o({args:[\"array\",\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\"],body:\"a=this_f(b)\",thisVars:[\"this_f\"]},funcName:e}),r[e+\"eq\"]=o({args:[\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\"],body:\"a=this_f(a)\",thisVars:[\"this_f\"]},rvalue:!0,count:2,funcName:e+\"eq\"})}}();var f=[\"max\",\"min\",\"atan2\",\"pow\"];!function(){for(var t=0;t<f.length;++t){var e=f[t];r[e]=o({args:[\"array\",\"array\",\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\",\"c\"],body:\"a=this_f(b,c)\",thisVars:[\"this_f\"]},funcName:e}),r[e+\"s\"]=o({args:[\"array\",\"array\",\"scalar\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\",\"c\"],body:\"a=this_f(b,c)\",thisVars:[\"this_f\"]},funcName:e+\"s\"}),r[e+\"eq\"]=o({args:[\"array\",\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\"],body:\"a=this_f(a,b)\",thisVars:[\"this_f\"]},rvalue:!0,count:2,funcName:e+\"eq\"}),r[e+\"seq\"]=o({args:[\"array\",\"scalar\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\"],body:\"a=this_f(a,b)\",thisVars:[\"this_f\"]},rvalue:!0,count:2,funcName:e+\"seq\"})}}();var h=[\"atan2\",\"pow\"];!function(){for(var t=0;t<h.length;++t){var e=h[t];r[e+\"op\"]=o({args:[\"array\",\"array\",\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\",\"c\"],body:\"a=this_f(c,b)\",thisVars:[\"this_f\"]},funcName:e+\"op\"}),r[e+\"ops\"]=o({args:[\"array\",\"array\",\"scalar\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\",\"c\"],body:\"a=this_f(c,b)\",thisVars:[\"this_f\"]},funcName:e+\"ops\"}),r[e+\"opeq\"]=o({args:[\"array\",\"array\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\"],body:\"a=this_f(b,a)\",thisVars:[\"this_f\"]},rvalue:!0,count:2,funcName:e+\"opeq\"}),r[e+\"opseq\"]=o({args:[\"array\",\"scalar\"],pre:{args:[],body:\"this_f=Math.\"+e,thisVars:[\"this_f\"]},body:{args:[\"a\",\"b\"],body:\"a=this_f(b,a)\",thisVars:[\"this_f\"]},rvalue:!0,count:2,funcName:e+\"opseq\"})}}(),r.any=n({args:[\"array\"],pre:i,body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:1}],body:\"if(a){return true}\",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:\"return false\"},funcName:\"any\"}),r.all=n({args:[\"array\"],pre:i,body:{args:[{name:\"x\",lvalue:!1,rvalue:!0,count:1}],body:\"if(!x){return false}\",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:\"return true\"},funcName:\"all\"}),r.sum=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:1}],body:\"this_s+=a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"sum\"}),r.prod=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=1\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:1}],body:\"this_s*=a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"prod\"}),r.norm2squared=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:2}],body:\"this_s+=a*a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"norm2squared\"}),r.norm2=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:2}],body:\"this_s+=a*a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return Math.sqrt(this_s)\"},funcName:\"norm2\"}),r.norminf=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:4}],body:\"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"norminf\"}),r.norm1=n({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:3}],body:\"this_s+=a<0?-a:a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"norm1\"}),r.sup=n({args:[\"array\"],pre:{body:\"this_h=-Infinity\",args:[],thisVars:[\"this_h\"],localVars:[]},body:{body:\"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_h\"],localVars:[]},post:{body:\"return this_h\",args:[],thisVars:[\"this_h\"],localVars:[]}}),r.inf=n({args:[\"array\"],pre:{body:\"this_h=Infinity\",args:[],thisVars:[\"this_h\"],localVars:[]},body:{body:\"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_h\"],localVars:[]},post:{body:\"return this_h\",args:[],thisVars:[\"this_h\"],localVars:[]}}),r.argmin=n({args:[\"index\",\"array\",\"shape\"],pre:{body:\"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}\",args:[{name:\"_inline_0_arg0_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_0_arg1_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_0_arg2_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_i\",\"this_v\"],localVars:[]},body:{body:\"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_i\",\"this_v\"],localVars:[\"_inline_1_k\"]},post:{body:\"{return this_i}\",args:[],thisVars:[\"this_i\"],localVars:[]}}),r.argmax=n({args:[\"index\",\"array\",\"shape\"],pre:{body:\"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}\",args:[{name:\"_inline_0_arg0_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_0_arg1_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_0_arg2_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_i\",\"this_v\"],localVars:[]},body:{body:\"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_i\",\"this_v\"],localVars:[\"_inline_1_k\"]},post:{body:\"{return this_i}\",args:[],thisVars:[\"this_i\"],localVars:[]}}),r.random=o({args:[\"array\"],pre:{args:[],body:\"this_f=Math.random\",thisVars:[\"this_f\"]},body:{args:[\"a\"],body:\"a=this_f()\",thisVars:[\"this_f\"]},funcName:\"random\"}),r.assign=o({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=b\"},funcName:\"assign\"}),r.assigns=o({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"b\"],body:\"a=b\"},funcName:\"assigns\"}),r.equals=n({args:[\"array\",\"array\"],pre:i,body:{args:[{name:\"x\",lvalue:!1,rvalue:!0,count:1},{name:\"y\",lvalue:!1,rvalue:!0,count:1}],body:\"if(x!==y){return false}\",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:\"return true\"},funcName:\"equals\"})},{\"cwise-compiler\":135}],431:[function(t,e,r){\"use strict\";var n=t(\"ndarray\"),i=t(\"./doConvert.js\");e.exports=function(t,e){for(var r=[],a=t,o=1;Array.isArray(a);)r.push(a.length),o*=a.length,a=a[0];return 0===r.length?n():(e||(e=n(new Float64Array(o),r)),i(e,t),e)}},{\"./doConvert.js\":432,ndarray:436}],432:[function(t,e,r){e.exports=t(\"cwise-compiler\")({args:[\"array\",\"scalar\",\"index\"],pre:{body:\"{}\",args:[],thisVars:[],localVars:[]},body:{body:\"{\\nvar _inline_1_v=_inline_1_arg1_,_inline_1_i\\nfor(_inline_1_i=0;_inline_1_i<_inline_1_arg2_.length-1;++_inline_1_i) {\\n_inline_1_v=_inline_1_v[_inline_1_arg2_[_inline_1_i]]\\n}\\n_inline_1_arg0_=_inline_1_v[_inline_1_arg2_[_inline_1_arg2_.length-1]]\\n}\",args:[{name:\"_inline_1_arg0_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg2_\",lvalue:!1,rvalue:!0,count:4}],thisVars:[],localVars:[\"_inline_1_i\",\"_inline_1_v\"]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},funcName:\"convert\",blockSize:64})},{\"cwise-compiler\":135}],433:[function(t,e,r){\"use strict\";var n=t(\"typedarray-pool\"),i=32;function a(t){switch(t){case\"uint8\":return[n.mallocUint8,n.freeUint8];case\"uint16\":return[n.mallocUint16,n.freeUint16];case\"uint32\":return[n.mallocUint32,n.freeUint32];case\"int8\":return[n.mallocInt8,n.freeInt8];case\"int16\":return[n.mallocInt16,n.freeInt16];case\"int32\":return[n.mallocInt32,n.freeInt32];case\"float32\":return[n.mallocFloat,n.freeFloat];case\"float64\":return[n.mallocDouble,n.freeDouble];default:return null}}function o(t){for(var e=[],r=0;r<t;++r)e.push(\"s\"+r);for(r=0;r<t;++r)e.push(\"n\"+r);for(r=1;r<t;++r)e.push(\"d\"+r);for(r=1;r<t;++r)e.push(\"e\"+r);for(r=1;r<t;++r)e.push(\"f\"+r);return e}e.exports=function(t,e){var r=[\"'use strict'\"],n=[\"ndarraySortWrapper\",t.join(\"d\"),e].join(\"\");r.push([\"function \",n,\"(\",[\"array\"].join(\",\"),\"){\"].join(\"\"));for(var s=[\"data=array.data,offset=array.offset|0,shape=array.shape,stride=array.stride\"],l=0;l<t.length;++l)s.push([\"s\",l,\"=stride[\",l,\"]|0,n\",l,\"=shape[\",l,\"]|0\"].join(\"\"));var c=new Array(t.length),u=[];for(l=0;l<t.length;++l)0!==(p=t[l])&&(0===u.length?c[p]=\"1\":c[p]=u.join(\"*\"),u.push(\"n\"+p));var f=-1,h=-1;for(l=0;l<t.length;++l){var p,d=t[l];0!==d&&(f>0?s.push([\"d\",d,\"=s\",d,\"-d\",f,\"*n\",f].join(\"\")):s.push([\"d\",d,\"=s\",d].join(\"\")),f=d),0!=(p=t.length-1-l)&&(h>0?s.push([\"e\",p,\"=s\",p,\"-e\",h,\"*n\",h,\",f\",p,\"=\",c[p],\"-f\",h,\"*n\",h].join(\"\")):s.push([\"e\",p,\"=s\",p,\",f\",p,\"=\",c[p]].join(\"\")),h=p)}r.push(\"var \"+s.join(\",\"));var g=[\"0\",\"n0-1\",\"data\",\"offset\"].concat(o(t.length));r.push([\"if(n0<=\",i,\"){\",\"insertionSort(\",g.join(\",\"),\")}else{\",\"quickSort(\",g.join(\",\"),\")}\"].join(\"\")),r.push(\"}return \"+n);var v=new Function(\"insertionSort\",\"quickSort\",r.join(\"\\n\")),m=function(t,e){var r=[\"'use strict'\"],n=[\"ndarrayInsertionSort\",t.join(\"d\"),e].join(\"\"),i=[\"left\",\"right\",\"data\",\"offset\"].concat(o(t.length)),s=a(e),l=[\"i,j,cptr,ptr=left*s0+offset\"];if(t.length>1){for(var c=[],u=1;u<t.length;++u)l.push(\"i\"+u),c.push(\"n\"+u);s?l.push(\"scratch=malloc(\"+c.join(\"*\")+\")\"):l.push(\"scratch=new Array(\"+c.join(\"*\")+\")\"),l.push(\"dptr\",\"sptr\",\"a\",\"b\")}else l.push(\"scratch\");function f(t){return\"generic\"===e?[\"data.get(\",t,\")\"].join(\"\"):[\"data[\",t,\"]\"].join(\"\")}function h(t,r){return\"generic\"===e?[\"data.set(\",t,\",\",r,\")\"].join(\"\"):[\"data[\",t,\"]=\",r].join(\"\")}if(r.push([\"function \",n,\"(\",i.join(\",\"),\"){var \",l.join(\",\")].join(\"\"),\"for(i=left+1;i<=right;++i){\",\"j=i;ptr+=s0\",\"cptr=ptr\"),t.length>1){for(r.push(\"dptr=0;sptr=ptr\"),u=t.length-1;u>=0;--u)0!==(p=t[u])&&r.push([\"for(i\",p,\"=0;i\",p,\"<n\",p,\";++i\",p,\"){\"].join(\"\"));for(r.push(\"scratch[dptr++]=\",f(\"sptr\")),u=0;u<t.length;++u)0!==(p=t[u])&&r.push(\"sptr+=d\"+p,\"}\");for(r.push(\"__g:while(j--\\x3eleft){\",\"dptr=0\",\"sptr=cptr-s0\"),u=1;u<t.length;++u)1===u&&r.push(\"__l:\"),r.push([\"for(i\",u,\"=0;i\",u,\"<n\",u,\";++i\",u,\"){\"].join(\"\"));for(r.push([\"a=\",f(\"sptr\"),\"\\nb=scratch[dptr]\\nif(a<b){break __g}\\nif(a>b){break __l}\"].join(\"\")),u=t.length-1;u>=1;--u)r.push(\"sptr+=e\"+u,\"dptr+=f\"+u,\"}\");for(r.push(\"dptr=cptr;sptr=cptr-s0\"),u=t.length-1;u>=0;--u)0!==(p=t[u])&&r.push([\"for(i\",p,\"=0;i\",p,\"<n\",p,\";++i\",p,\"){\"].join(\"\"));for(r.push(h(\"dptr\",f(\"sptr\"))),u=0;u<t.length;++u)0!==(p=t[u])&&r.push([\"dptr+=d\",p,\";sptr+=d\",p].join(\"\"),\"}\");for(r.push(\"cptr-=s0\\n}\"),r.push(\"dptr=cptr;sptr=0\"),u=t.length-1;u>=0;--u)0!==(p=t[u])&&r.push([\"for(i\",p,\"=0;i\",p,\"<n\",p,\";++i\",p,\"){\"].join(\"\"));for(r.push(h(\"dptr\",\"scratch[sptr++]\")),u=0;u<t.length;++u){var p;0!==(p=t[u])&&r.push(\"dptr+=d\"+p,\"}\")}}else r.push(\"scratch=\"+f(\"ptr\"),\"while((j--\\x3eleft)&&(\"+f(\"cptr-s0\")+\">scratch)){\",h(\"cptr\",f(\"cptr-s0\")),\"cptr-=s0\",\"}\",h(\"cptr\",\"scratch\"));return r.push(\"}\"),t.length>1&&s&&r.push(\"free(scratch)\"),r.push(\"} return \"+n),s?new Function(\"malloc\",\"free\",r.join(\"\\n\"))(s[0],s[1]):new Function(r.join(\"\\n\"))()}(t,e),y=function(t,e,r){var n=[\"'use strict'\"],s=[\"ndarrayQuickSort\",t.join(\"d\"),e].join(\"\"),l=[\"left\",\"right\",\"data\",\"offset\"].concat(o(t.length)),c=a(e),u=0;n.push([\"function \",s,\"(\",l.join(\",\"),\"){\"].join(\"\"));var f=[\"sixth=((right-left+1)/6)|0\",\"index1=left+sixth\",\"index5=right-sixth\",\"index3=(left+right)>>1\",\"index2=index3-sixth\",\"index4=index3+sixth\",\"el1=index1\",\"el2=index2\",\"el3=index3\",\"el4=index4\",\"el5=index5\",\"less=left+1\",\"great=right-1\",\"pivots_are_equal=true\",\"tmp\",\"tmp0\",\"x\",\"y\",\"z\",\"k\",\"ptr0\",\"ptr1\",\"ptr2\",\"comp_pivot1=0\",\"comp_pivot2=0\",\"comp=0\"];if(t.length>1){for(var h=[],p=1;p<t.length;++p)h.push(\"n\"+p),f.push(\"i\"+p);for(p=0;p<8;++p)f.push(\"b_ptr\"+p);f.push(\"ptr3\",\"ptr4\",\"ptr5\",\"ptr6\",\"ptr7\",\"pivot_ptr\",\"ptr_shift\",\"elementSize=\"+h.join(\"*\")),c?f.push(\"pivot1=malloc(elementSize)\",\"pivot2=malloc(elementSize)\"):f.push(\"pivot1=new Array(elementSize),pivot2=new Array(elementSize)\")}else f.push(\"pivot1\",\"pivot2\");function d(t){return[\"(offset+\",t,\"*s0)\"].join(\"\")}function g(t){return\"generic\"===e?[\"data.get(\",t,\")\"].join(\"\"):[\"data[\",t,\"]\"].join(\"\")}function v(t,r){return\"generic\"===e?[\"data.set(\",t,\",\",r,\")\"].join(\"\"):[\"data[\",t,\"]=\",r].join(\"\")}function m(e,r,i){if(1===e.length)n.push(\"ptr0=\"+d(e[0]));else for(var a=0;a<e.length;++a)n.push([\"b_ptr\",a,\"=s0*\",e[a]].join(\"\"));for(r&&n.push(\"pivot_ptr=0\"),n.push(\"ptr_shift=offset\"),a=t.length-1;a>=0;--a)0!==(o=t[a])&&n.push([\"for(i\",o,\"=0;i\",o,\"<n\",o,\";++i\",o,\"){\"].join(\"\"));if(e.length>1)for(a=0;a<e.length;++a)n.push([\"ptr\",a,\"=b_ptr\",a,\"+ptr_shift\"].join(\"\"));for(n.push(i),r&&n.push(\"++pivot_ptr\"),a=0;a<t.length;++a){var o;0!==(o=t[a])&&(e.length>1?n.push(\"ptr_shift+=d\"+o):n.push(\"ptr0+=d\"+o),n.push(\"}\"))}}function y(e,r,i,a){if(1===r.length)n.push(\"ptr0=\"+d(r[0]));else{for(var o=0;o<r.length;++o)n.push([\"b_ptr\",o,\"=s0*\",r[o]].join(\"\"));n.push(\"ptr_shift=offset\")}for(i&&n.push(\"pivot_ptr=0\"),e&&n.push(e+\":\"),o=1;o<t.length;++o)n.push([\"for(i\",o,\"=0;i\",o,\"<n\",o,\";++i\",o,\"){\"].join(\"\"));if(r.length>1)for(o=0;o<r.length;++o)n.push([\"ptr\",o,\"=b_ptr\",o,\"+ptr_shift\"].join(\"\"));for(n.push(a),o=t.length-1;o>=1;--o)i&&n.push(\"pivot_ptr+=f\"+o),r.length>1?n.push(\"ptr_shift+=e\"+o):n.push(\"ptr0+=e\"+o),n.push(\"}\")}function x(){t.length>1&&c&&n.push(\"free(pivot1)\",\"free(pivot2)\")}function b(e,r){var i=\"el\"+e,a=\"el\"+r;if(t.length>1){var o=\"__l\"+ ++u;y(o,[i,a],!1,[\"comp=\",g(\"ptr0\"),\"-\",g(\"ptr1\"),\"\\n\",\"if(comp>0){tmp0=\",i,\";\",i,\"=\",a,\";\",a,\"=tmp0;break \",o,\"}\\n\",\"if(comp<0){break \",o,\"}\"].join(\"\"))}else n.push([\"if(\",g(d(i)),\">\",g(d(a)),\"){tmp0=\",i,\";\",i,\"=\",a,\";\",a,\"=tmp0}\"].join(\"\"))}function _(e,r){t.length>1?m([e,r],!1,v(\"ptr0\",g(\"ptr1\"))):n.push(v(d(e),g(d(r))))}function w(e,r,i){if(t.length>1){var a=\"__l\"+ ++u;y(a,[r],!0,[e,\"=\",g(\"ptr0\"),\"-pivot\",i,\"[pivot_ptr]\\n\",\"if(\",e,\"!==0){break \",a,\"}\"].join(\"\"))}else n.push([e,\"=\",g(d(r)),\"-pivot\",i].join(\"\"))}function k(e,r){t.length>1?m([e,r],!1,[\"tmp=\",g(\"ptr0\"),\"\\n\",v(\"ptr0\",g(\"ptr1\")),\"\\n\",v(\"ptr1\",\"tmp\")].join(\"\")):n.push([\"ptr0=\",d(e),\"\\n\",\"ptr1=\",d(r),\"\\n\",\"tmp=\",g(\"ptr0\"),\"\\n\",v(\"ptr0\",g(\"ptr1\")),\"\\n\",v(\"ptr1\",\"tmp\")].join(\"\"))}function A(e,r,i){t.length>1?(m([e,r,i],!1,[\"tmp=\",g(\"ptr0\"),\"\\n\",v(\"ptr0\",g(\"ptr1\")),\"\\n\",v(\"ptr1\",g(\"ptr2\")),\"\\n\",v(\"ptr2\",\"tmp\")].join(\"\")),n.push(\"++\"+r,\"--\"+i)):n.push([\"ptr0=\",d(e),\"\\n\",\"ptr1=\",d(r),\"\\n\",\"ptr2=\",d(i),\"\\n\",\"++\",r,\"\\n\",\"--\",i,\"\\n\",\"tmp=\",g(\"ptr0\"),\"\\n\",v(\"ptr0\",g(\"ptr1\")),\"\\n\",v(\"ptr1\",g(\"ptr2\")),\"\\n\",v(\"ptr2\",\"tmp\")].join(\"\"))}function M(t,e){k(t,e),n.push(\"--\"+e)}function T(e,r,i){t.length>1?m([e,r],!0,[v(\"ptr0\",g(\"ptr1\")),\"\\n\",v(\"ptr1\",[\"pivot\",i,\"[pivot_ptr]\"].join(\"\"))].join(\"\")):n.push(v(d(e),g(d(r))),v(d(r),\"pivot\"+i))}function S(e,r){n.push([\"if((\",r,\"-\",e,\")<=\",i,\"){\\n\",\"insertionSort(\",e,\",\",r,\",data,offset,\",o(t.length).join(\",\"),\")\\n\",\"}else{\\n\",s,\"(\",e,\",\",r,\",data,offset,\",o(t.length).join(\",\"),\")\\n\",\"}\"].join(\"\"))}function C(e,r,i){t.length>1?(n.push([\"__l\",++u,\":while(true){\"].join(\"\")),m([e],!0,[\"if(\",g(\"ptr0\"),\"!==pivot\",r,\"[pivot_ptr]){break __l\",u,\"}\"].join(\"\")),n.push(i,\"}\")):n.push([\"while(\",g(d(e)),\"===pivot\",r,\"){\",i,\"}\"].join(\"\"))}return n.push(\"var \"+f.join(\",\")),b(1,2),b(4,5),b(1,3),b(2,3),b(1,4),b(3,4),b(2,5),b(2,3),b(4,5),t.length>1?m([\"el1\",\"el2\",\"el3\",\"el4\",\"el5\",\"index1\",\"index3\",\"index5\"],!0,[\"pivot1[pivot_ptr]=\",g(\"ptr1\"),\"\\n\",\"pivot2[pivot_ptr]=\",g(\"ptr3\"),\"\\n\",\"pivots_are_equal=pivots_are_equal&&(pivot1[pivot_ptr]===pivot2[pivot_ptr])\\n\",\"x=\",g(\"ptr0\"),\"\\n\",\"y=\",g(\"ptr2\"),\"\\n\",\"z=\",g(\"ptr4\"),\"\\n\",v(\"ptr5\",\"x\"),\"\\n\",v(\"ptr6\",\"y\"),\"\\n\",v(\"ptr7\",\"z\")].join(\"\")):n.push([\"pivot1=\",g(d(\"el2\")),\"\\n\",\"pivot2=\",g(d(\"el4\")),\"\\n\",\"pivots_are_equal=pivot1===pivot2\\n\",\"x=\",g(d(\"el1\")),\"\\n\",\"y=\",g(d(\"el3\")),\"\\n\",\"z=\",g(d(\"el5\")),\"\\n\",v(d(\"index1\"),\"x\"),\"\\n\",v(d(\"index3\"),\"y\"),\"\\n\",v(d(\"index5\"),\"z\")].join(\"\")),_(\"index2\",\"left\"),_(\"index4\",\"right\"),n.push(\"if(pivots_are_equal){\"),n.push(\"for(k=less;k<=great;++k){\"),w(\"comp\",\"k\",1),n.push(\"if(comp===0){continue}\"),n.push(\"if(comp<0){\"),n.push(\"if(k!==less){\"),k(\"k\",\"less\"),n.push(\"}\"),n.push(\"++less\"),n.push(\"}else{\"),n.push(\"while(true){\"),w(\"comp\",\"great\",1),n.push(\"if(comp>0){\"),n.push(\"great--\"),n.push(\"}else if(comp<0){\"),A(\"k\",\"less\",\"great\"),n.push(\"break\"),n.push(\"}else{\"),M(\"k\",\"great\"),n.push(\"break\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}else{\"),n.push(\"for(k=less;k<=great;++k){\"),w(\"comp_pivot1\",\"k\",1),n.push(\"if(comp_pivot1<0){\"),n.push(\"if(k!==less){\"),k(\"k\",\"less\"),n.push(\"}\"),n.push(\"++less\"),n.push(\"}else{\"),w(\"comp_pivot2\",\"k\",2),n.push(\"if(comp_pivot2>0){\"),n.push(\"while(true){\"),w(\"comp\",\"great\",2),n.push(\"if(comp>0){\"),n.push(\"if(--great<k){break}\"),n.push(\"continue\"),n.push(\"}else{\"),w(\"comp\",\"great\",1),n.push(\"if(comp<0){\"),A(\"k\",\"less\",\"great\"),n.push(\"}else{\"),M(\"k\",\"great\"),n.push(\"}\"),n.push(\"break\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),T(\"left\",\"(less-1)\",1),T(\"right\",\"(great+1)\",2),S(\"left\",\"(less-2)\"),S(\"(great+2)\",\"right\"),n.push(\"if(pivots_are_equal){\"),x(),n.push(\"return\"),n.push(\"}\"),n.push(\"if(less<index1&&great>index5){\"),C(\"less\",1,\"++less\"),C(\"great\",2,\"--great\"),n.push(\"for(k=less;k<=great;++k){\"),w(\"comp_pivot1\",\"k\",1),n.push(\"if(comp_pivot1===0){\"),n.push(\"if(k!==less){\"),k(\"k\",\"less\"),n.push(\"}\"),n.push(\"++less\"),n.push(\"}else{\"),w(\"comp_pivot2\",\"k\",2),n.push(\"if(comp_pivot2===0){\"),n.push(\"while(true){\"),w(\"comp\",\"great\",2),n.push(\"if(comp===0){\"),n.push(\"if(--great<k){break}\"),n.push(\"continue\"),n.push(\"}else{\"),w(\"comp\",\"great\",1),n.push(\"if(comp<0){\"),A(\"k\",\"less\",\"great\"),n.push(\"}else{\"),M(\"k\",\"great\"),n.push(\"}\"),n.push(\"break\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),n.push(\"}\"),x(),S(\"less\",\"great\"),n.push(\"}return \"+s),t.length>1&&c?new Function(\"insertionSort\",\"malloc\",\"free\",n.join(\"\\n\"))(r,c[0],c[1]):new Function(\"insertionSort\",n.join(\"\\n\"))(r)}(t,e,m);return v(m,y)}},{\"typedarray-pool\":523}],434:[function(t,e,r){\"use strict\";var n=t(\"./lib/compile_sort.js\"),i={};e.exports=function(t){var e=t.order,r=t.dtype,a=[e,r].join(\":\"),o=i[a];return o||(i[a]=o=n(e,r)),o(t),t}},{\"./lib/compile_sort.js\":433}],435:[function(t,e,r){\"use strict\";var n=t(\"ndarray-linear-interpolate\"),i=t(\"cwise/lib/wrapper\")({args:[\"index\",\"array\",\"scalar\",\"scalar\",\"scalar\"],pre:{body:\"{this_warped=new Array(_inline_3_arg4_)}\",args:[{name:\"_inline_3_arg0_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_3_arg1_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_3_arg2_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_3_arg3_\",lvalue:!1,rvalue:!1,count:0},{name:\"_inline_3_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_warped\"],localVars:[]},body:{body:\"{_inline_4_arg2_(this_warped,_inline_4_arg0_),_inline_4_arg1_=_inline_4_arg3_.apply(void 0,this_warped)}\",args:[{name:\"_inline_4_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_4_arg1_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_4_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_4_arg3_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_4_arg4_\",lvalue:!1,rvalue:!1,count:0}],thisVars:[\"this_warped\"],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},debug:!1,funcName:\"warpND\",blockSize:64}),a=t(\"cwise/lib/wrapper\")({args:[\"index\",\"array\",\"scalar\",\"scalar\",\"scalar\"],pre:{body:\"{this_warped=[0]}\",args:[],thisVars:[\"this_warped\"],localVars:[]},body:{body:\"{_inline_7_arg2_(this_warped,_inline_7_arg0_),_inline_7_arg1_=_inline_7_arg3_(_inline_7_arg4_,this_warped[0])}\",args:[{name:\"_inline_7_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_7_arg1_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_7_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_7_arg3_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_7_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_warped\"],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},debug:!1,funcName:\"warp1D\",blockSize:64}),o=t(\"cwise/lib/wrapper\")({args:[\"index\",\"array\",\"scalar\",\"scalar\",\"scalar\"],pre:{body:\"{this_warped=[0,0]}\",args:[],thisVars:[\"this_warped\"],localVars:[]},body:{body:\"{_inline_10_arg2_(this_warped,_inline_10_arg0_),_inline_10_arg1_=_inline_10_arg3_(_inline_10_arg4_,this_warped[0],this_warped[1])}\",args:[{name:\"_inline_10_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_10_arg1_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_10_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_10_arg3_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_10_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_warped\"],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},debug:!1,funcName:\"warp2D\",blockSize:64}),s=t(\"cwise/lib/wrapper\")({args:[\"index\",\"array\",\"scalar\",\"scalar\",\"scalar\"],pre:{body:\"{this_warped=[0,0,0]}\",args:[],thisVars:[\"this_warped\"],localVars:[]},body:{body:\"{_inline_13_arg2_(this_warped,_inline_13_arg0_),_inline_13_arg1_=_inline_13_arg3_(_inline_13_arg4_,this_warped[0],this_warped[1],this_warped[2])}\",args:[{name:\"_inline_13_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_13_arg1_\",lvalue:!0,rvalue:!1,count:1},{name:\"_inline_13_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_13_arg3_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_13_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[\"this_warped\"],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},debug:!1,funcName:\"warp3D\",blockSize:64});e.exports=function(t,e,r){switch(e.shape.length){case 1:a(t,r,n.d1,e);break;case 2:o(t,r,n.d2,e);break;case 3:s(t,r,n.d3,e);break;default:i(t,r,n.bind(void 0,e),e.shape.length)}return t}},{\"cwise/lib/wrapper\":138,\"ndarray-linear-interpolate\":429}],436:[function(t,e,r){var n=t(\"iota-array\"),i=t(\"is-buffer\"),a=\"undefined\"!=typeof Float64Array;function o(t,e){return t[0]-e[0]}function s(){var t,e=this.stride,r=new Array(e.length);for(t=0;t<r.length;++t)r[t]=[Math.abs(e[t]),t];r.sort(o);var n=new Array(r.length);for(t=0;t<n.length;++t)n[t]=r[t][1];return n}function l(t,e){var r=[\"View\",e,\"d\",t].join(\"\");e<0&&(r=\"View_Nil\"+t);var i=\"generic\"===t;if(-1===e){var a=\"function \"+r+\"(a){this.data=a;};var proto=\"+r+\".prototype;proto.dtype='\"+t+\"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new \"+r+\"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_\"+r+\"(a){return new \"+r+\"(a);}\";return new Function(a)()}if(0===e){a=\"function \"+r+\"(a,d) {this.data = a;this.offset = d};var proto=\"+r+\".prototype;proto.dtype='\"+t+\"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function \"+r+\"_copy() {return new \"+r+\"(this.data,this.offset)};proto.pick=function \"+r+\"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function \"+r+\"_get(){return \"+(i?\"this.data.get(this.offset)\":\"this.data[this.offset]\")+\"};proto.set=function \"+r+\"_set(v){return \"+(i?\"this.data.set(this.offset,v)\":\"this.data[this.offset]=v\")+\"};return function construct_\"+r+\"(a,b,c,d){return new \"+r+\"(a,d)}\";return new Function(\"TrivialArray\",a)(c[t][0])}a=[\"'use strict'\"];var o=n(e),l=o.map(function(t){return\"i\"+t}),u=\"this.offset+\"+o.map(function(t){return\"this.stride[\"+t+\"]*i\"+t}).join(\"+\"),f=o.map(function(t){return\"b\"+t}).join(\",\"),h=o.map(function(t){return\"c\"+t}).join(\",\");a.push(\"function \"+r+\"(a,\"+f+\",\"+h+\",d){this.data=a\",\"this.shape=[\"+f+\"]\",\"this.stride=[\"+h+\"]\",\"this.offset=d|0}\",\"var proto=\"+r+\".prototype\",\"proto.dtype='\"+t+\"'\",\"proto.dimension=\"+e),a.push(\"Object.defineProperty(proto,'size',{get:function \"+r+\"_size(){return \"+o.map(function(t){return\"this.shape[\"+t+\"]\"}).join(\"*\"),\"}})\"),1===e?a.push(\"proto.order=[0]\"):(a.push(\"Object.defineProperty(proto,'order',{get:\"),e<4?(a.push(\"function \"+r+\"_order(){\"),2===e?a.push(\"return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})\"):3===e&&a.push(\"var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})\")):a.push(\"ORDER})\")),a.push(\"proto.set=function \"+r+\"_set(\"+l.join(\",\")+\",v){\"),i?a.push(\"return this.data.set(\"+u+\",v)}\"):a.push(\"return this.data[\"+u+\"]=v}\"),a.push(\"proto.get=function \"+r+\"_get(\"+l.join(\",\")+\"){\"),i?a.push(\"return this.data.get(\"+u+\")}\"):a.push(\"return this.data[\"+u+\"]}\"),a.push(\"proto.index=function \"+r+\"_index(\",l.join(),\"){return \"+u+\"}\"),a.push(\"proto.hi=function \"+r+\"_hi(\"+l.join(\",\")+\"){return new \"+r+\"(this.data,\"+o.map(function(t){return[\"(typeof i\",t,\"!=='number'||i\",t,\"<0)?this.shape[\",t,\"]:i\",t,\"|0\"].join(\"\")}).join(\",\")+\",\"+o.map(function(t){return\"this.stride[\"+t+\"]\"}).join(\",\")+\",this.offset)}\");var p=o.map(function(t){return\"a\"+t+\"=this.shape[\"+t+\"]\"}),d=o.map(function(t){return\"c\"+t+\"=this.stride[\"+t+\"]\"});a.push(\"proto.lo=function \"+r+\"_lo(\"+l.join(\",\")+\"){var b=this.offset,d=0,\"+p.join(\",\")+\",\"+d.join(\",\"));for(var g=0;g<e;++g)a.push(\"if(typeof i\"+g+\"==='number'&&i\"+g+\">=0){d=i\"+g+\"|0;b+=c\"+g+\"*d;a\"+g+\"-=d}\");a.push(\"return new \"+r+\"(this.data,\"+o.map(function(t){return\"a\"+t}).join(\",\")+\",\"+o.map(function(t){return\"c\"+t}).join(\",\")+\",b)}\"),a.push(\"proto.step=function \"+r+\"_step(\"+l.join(\",\")+\"){var \"+o.map(function(t){return\"a\"+t+\"=this.shape[\"+t+\"]\"}).join(\",\")+\",\"+o.map(function(t){return\"b\"+t+\"=this.stride[\"+t+\"]\"}).join(\",\")+\",c=this.offset,d=0,ceil=Math.ceil\");for(g=0;g<e;++g)a.push(\"if(typeof i\"+g+\"==='number'){d=i\"+g+\"|0;if(d<0){c+=b\"+g+\"*(a\"+g+\"-1);a\"+g+\"=ceil(-a\"+g+\"/d)}else{a\"+g+\"=ceil(a\"+g+\"/d)}b\"+g+\"*=d}\");a.push(\"return new \"+r+\"(this.data,\"+o.map(function(t){return\"a\"+t}).join(\",\")+\",\"+o.map(function(t){return\"b\"+t}).join(\",\")+\",c)}\");var v=new Array(e),m=new Array(e);for(g=0;g<e;++g)v[g]=\"a[i\"+g+\"]\",m[g]=\"b[i\"+g+\"]\";a.push(\"proto.transpose=function \"+r+\"_transpose(\"+l+\"){\"+l.map(function(t,e){return t+\"=(\"+t+\"===undefined?\"+e+\":\"+t+\"|0)\"}).join(\";\"),\"var a=this.shape,b=this.stride;return new \"+r+\"(this.data,\"+v.join(\",\")+\",\"+m.join(\",\")+\",this.offset)}\"),a.push(\"proto.pick=function \"+r+\"_pick(\"+l+\"){var a=[],b=[],c=this.offset\");for(g=0;g<e;++g)a.push(\"if(typeof i\"+g+\"==='number'&&i\"+g+\">=0){c=(c+this.stride[\"+g+\"]*i\"+g+\")|0}else{a.push(this.shape[\"+g+\"]);b.push(this.stride[\"+g+\"])}\");return a.push(\"var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}\"),a.push(\"return function construct_\"+r+\"(data,shape,stride,offset){return new \"+r+\"(data,\"+o.map(function(t){return\"shape[\"+t+\"]\"}).join(\",\")+\",\"+o.map(function(t){return\"stride[\"+t+\"]\"}).join(\",\")+\",offset)}\"),new Function(\"CTOR_LIST\",\"ORDER\",a.join(\"\\n\"))(c[t],s)}var c={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};e.exports=function(t,e,r,n){if(void 0===t)return(0,c.array[0])([]);\"number\"==typeof t&&(t=[t]),void 0===e&&(e=[t.length]);var o=e.length;if(void 0===r){r=new Array(o);for(var s=o-1,u=1;s>=0;--s)r[s]=u,u*=e[s]}if(void 0===n)for(n=0,s=0;s<o;++s)r[s]<0&&(n-=(e[s]-1)*r[s]);for(var f=function(t){if(i(t))return\"buffer\";if(a)switch(Object.prototype.toString.call(t)){case\"[object Float64Array]\":return\"float64\";case\"[object Float32Array]\":return\"float32\";case\"[object Int8Array]\":return\"int8\";case\"[object Int16Array]\":return\"int16\";case\"[object Int32Array]\":return\"int32\";case\"[object Uint8Array]\":return\"uint8\";case\"[object Uint16Array]\":return\"uint16\";case\"[object Uint32Array]\":return\"uint32\";case\"[object Uint8ClampedArray]\":return\"uint8_clamped\"}return Array.isArray(t)?\"array\":\"generic\"}(t),h=c[f];h.length<=o+1;)h.push(l(f,h.length-1));return(0,h[o+1])(t,e,r,n)}},{\"iota-array\":402,\"is-buffer\":404}],437:[function(t,e,r){\"use strict\";var n=t(\"double-bits\"),i=Math.pow(2,-1074),a=-1>>>0;e.exports=function(t,e){if(isNaN(t)||isNaN(e))return NaN;if(t===e)return t;if(0===t)return e<0?-i:i;var r=n.hi(t),o=n.lo(t);e>t==t>0?o===a?(r+=1,o=0):o+=1:0===o?(o=a,r-=1):o-=1;return n.pack(o,r)}},{\"double-bits\":153}],438:[function(t,e,r){var n=Math.PI,i=c(120);function a(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function o(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function s(t,e,r,a,o,c,u,f,h,p){if(p)k=p[0],A=p[1],_=p[2],w=p[3];else{var d=l(t,e,-o);t=d.x,e=d.y;var g=(t-(f=(d=l(f,h,-o)).x))/2,v=(e-(h=d.y))/2,m=g*g/(r*r)+v*v/(a*a);m>1&&(r*=m=Math.sqrt(m),a*=m);var y=r*r,x=a*a,b=(c==u?-1:1)*Math.sqrt(Math.abs((y*x-y*v*v-x*g*g)/(y*v*v+x*g*g)));b==1/0&&(b=1);var _=b*r*v/a+(t+f)/2,w=b*-a*g/r+(e+h)/2,k=Math.asin(((e-w)/a).toFixed(9)),A=Math.asin(((h-w)/a).toFixed(9));(k=t<_?n-k:k)<0&&(k=2*n+k),(A=f<_?n-A:A)<0&&(A=2*n+A),u&&k>A&&(k-=2*n),!u&&A>k&&(A-=2*n)}if(Math.abs(A-k)>i){var M=A,T=f,S=h;A=k+i*(u&&A>k?1:-1);var C=s(f=_+r*Math.cos(A),h=w+a*Math.sin(A),r,a,o,0,u,T,S,[A,M,_,w])}var E=Math.tan((A-k)/4),L=4/3*r*E,z=4/3*a*E,O=[2*t-(t+L*Math.sin(k)),2*e-(e-z*Math.cos(k)),f+L*Math.sin(A),h-z*Math.cos(A),f,h];if(p)return O;C&&(O=O.concat(C));for(var I=0;I<O.length;){var D=l(O[I],O[I+1],o);O[I++]=D.x,O[I++]=D.y}return O}function l(t,e,r){return{x:t*Math.cos(r)-e*Math.sin(r),y:t*Math.sin(r)+e*Math.cos(r)}}function c(t){return t*(n/180)}e.exports=function(t){for(var e,r=[],n=0,i=0,l=0,u=0,f=null,h=null,p=0,d=0,g=0,v=t.length;g<v;g++){var m=t[g],y=m[0];switch(y){case\"M\":l=m[1],u=m[2];break;case\"A\":(m=s(p,d,m[1],m[2],c(m[3]),m[4],m[5],m[6],m[7])).unshift(\"C\"),m.length>7&&(r.push(m.splice(0,7)),m.unshift(\"C\"));break;case\"S\":var x=p,b=d;\"C\"!=e&&\"S\"!=e||(x+=x-n,b+=b-i),m=[\"C\",x,b,m[1],m[2],m[3],m[4]];break;case\"T\":\"Q\"==e||\"T\"==e?(f=2*p-f,h=2*d-h):(f=p,h=d),m=o(p,d,f,h,m[1],m[2]);break;case\"Q\":f=m[1],h=m[2],m=o(p,d,m[1],m[2],m[3],m[4]);break;case\"L\":m=a(p,d,m[1],m[2]);break;case\"H\":m=a(p,d,m[1],d);break;case\"V\":m=a(p,d,p,m[1]);break;case\"Z\":m=a(p,d,l,u)}e=y,p=m[m.length-2],d=m[m.length-1],m.length>4?(n=m[m.length-4],i=m[m.length-3]):(n=p,i=d),r.push(m)}return r}},{}],439:[function(t,e,r){r.vertexNormals=function(t,e,r){for(var n=e.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;o<n;++o)i[o]=[0,0,0];for(o=0;o<t.length;++o)for(var s=t[o],l=0,c=s[s.length-1],u=s[0],f=0;f<s.length;++f){l=c,c=u,u=s[(f+1)%s.length];for(var h=e[l],p=e[c],d=e[u],g=new Array(3),v=0,m=new Array(3),y=0,x=0;x<3;++x)g[x]=h[x]-p[x],v+=g[x]*g[x],m[x]=d[x]-p[x],y+=m[x]*m[x];if(v*y>a){var b=i[c],_=1/Math.sqrt(v*y);for(x=0;x<3;++x){var w=(x+1)%3,k=(x+2)%3;b[x]+=_*(m[w]*g[k]-m[k]*g[w])}}}for(o=0;o<n;++o){b=i[o];var A=0;for(x=0;x<3;++x)A+=b[x]*b[x];if(A>a)for(_=1/Math.sqrt(A),x=0;x<3;++x)b[x]*=_;else for(x=0;x<3;++x)b[x]=0}return i},r.faceNormals=function(t,e,r){for(var n=t.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;o<n;++o){for(var s=t[o],l=new Array(3),c=0;c<3;++c)l[c]=e[s[c]];var u=new Array(3),f=new Array(3);for(c=0;c<3;++c)u[c]=l[1][c]-l[0][c],f[c]=l[2][c]-l[0][c];var h=new Array(3),p=0;for(c=0;c<3;++c){var d=(c+1)%3,g=(c+2)%3;h[c]=u[d]*f[g]-u[g]*f[d],p+=h[c]*h[c]}p=p>a?1/Math.sqrt(p):0;for(c=0;c<3;++c)h[c]*=p;i[o]=h}return i}},{}],440:[function(t,e,r){\"use strict\";var n=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",\"5\"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;if(\"0123456789\"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(\"\"))return!1;var n={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(t){n[t]=t}),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},n)).join(\"\")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,o,s=function(t){if(null==t)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}(t),l=1;l<arguments.length;l++){for(var c in r=Object(arguments[l]))i.call(r,c)&&(s[c]=r[c]);if(n){o=n(r);for(var u=0;u<o.length;u++)a.call(r,o[u])&&(s[o[u]]=r[o[u]])}}return s}},{}],441:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i,a,o,s,l,c){var u=e+a+c;if(f>0){var f=Math.sqrt(u+1);t[0]=.5*(o-l)/f,t[1]=.5*(s-n)/f,t[2]=.5*(r-a)/f,t[3]=.5*f}else{var h=Math.max(e,a,c),f=Math.sqrt(2*h-u+1);e>=h?(t[0]=.5*f,t[1]=.5*(i+r)/f,t[2]=.5*(s+n)/f,t[3]=.5*(o-l)/f):a>=h?(t[0]=.5*(r+i)/f,t[1]=.5*f,t[2]=.5*(l+o)/f,t[3]=.5*(s-n)/f):(t[0]=.5*(n+s)/f,t[1]=.5*(o+l)/f,t[2]=.5*f,t[3]=.5*(r-i)/f)}return t}},{}],442:[function(t,e,r){\"use strict\";e.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.rotation||[0,0,0,1],n=t.radius||1;e=[].slice.call(e,0,3),u(r=[].slice.call(r,0,4),r);var i=new f(r,e,Math.log(n));i.setDistanceLimits(t.zoomMin,t.zoomMax),(\"eye\"in t||\"up\"in t)&&i.lookAt(0,t.eye,t.center,t.up);return i};var n=t(\"filtered-vector\"),i=t(\"gl-mat4/lookAt\"),a=t(\"gl-mat4/fromQuat\"),o=t(\"gl-mat4/invert\"),s=t(\"./lib/quatFromFrame\");function l(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function c(t,e,r,n){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2)+Math.pow(n,2))}function u(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=c(r,n,i,a);o>1e-6?(t[0]=r/o,t[1]=n/o,t[2]=i/o,t[3]=a/o):(t[0]=t[1]=t[2]=0,t[3]=1)}function f(t,e,r){this.radius=n([r]),this.center=n(e),this.rotation=n(t),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var h=f.prototype;h.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},h.recalcMatrix=function(t){this.radius.curve(t),this.center.curve(t),this.rotation.curve(t);var e=this.computedRotation;u(e,e);var r=this.computedMatrix;a(r,e);var n=this.computedCenter,i=this.computedEye,o=this.computedUp,s=Math.exp(this.computedRadius[0]);i[0]=n[0]+s*r[2],i[1]=n[1]+s*r[6],i[2]=n[2]+s*r[10],o[0]=r[1],o[1]=r[5],o[2]=r[9];for(var l=0;l<3;++l){for(var c=0,f=0;f<3;++f)c+=r[l+4*f]*i[f];r[12+l]=-c}},h.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r},h.idle=function(t){this.center.idle(t),this.radius.idle(t),this.rotation.idle(t)},h.flush=function(t){this.center.flush(t),this.radius.flush(t),this.rotation.flush(t)},h.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=i[1],o=i[5],s=i[9],c=l(a,o,s);a/=c,o/=c,s/=c;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=l(u-=a*p,f-=o*p,h-=s*p);u/=d,f/=d,h/=d;var g=i[2],v=i[6],m=i[10],y=g*a+v*o+m*s,x=g*u+v*f+m*h,b=l(g-=y*a+x*u,v-=y*o+x*f,m-=y*s+x*h);g/=b,v/=b,m/=b;var _=u*e+a*r,w=f*e+o*r,k=h*e+s*r;this.center.move(t,_,w,k);var A=Math.exp(this.computedRadius[0]);A=Math.max(1e-4,A+n),this.radius.set(t,Math.log(A))},h.rotate=function(t,e,r,n){this.recalcMatrix(t),e=e||0,r=r||0;var i=this.computedMatrix,a=i[0],o=i[4],s=i[8],u=i[1],f=i[5],h=i[9],p=i[2],d=i[6],g=i[10],v=e*a+r*u,m=e*o+r*f,y=e*s+r*h,x=-(d*y-g*m),b=-(g*v-p*y),_=-(p*m-d*v),w=Math.sqrt(Math.max(0,1-Math.pow(x,2)-Math.pow(b,2)-Math.pow(_,2))),k=c(x,b,_,w);k>1e-6?(x/=k,b/=k,_/=k,w/=k):(x=b=_=0,w=1);var A=this.computedRotation,M=A[0],T=A[1],S=A[2],C=A[3],E=M*w+C*x+T*_-S*b,L=T*w+C*b+S*x-M*_,z=S*w+C*_+M*b-T*x,O=C*w-M*x-T*b-S*_;if(n){x=p,b=d,_=g;var I=Math.sin(n)/l(x,b,_);x*=I,b*=I,_*=I,O=O*(w=Math.cos(e))-(E=E*w+O*x+L*_-z*b)*x-(L=L*w+O*b+z*x-E*_)*b-(z=z*w+O*_+E*b-L*x)*_}var D=c(E,L,z,O);D>1e-6?(E/=D,L/=D,z/=D,O/=D):(E=L=z=0,O=1),this.rotation.set(t,E,L,z,O)},h.lookAt=function(t,e,r,n){this.recalcMatrix(t),r=r||this.computedCenter,e=e||this.computedEye,n=n||this.computedUp;var a=this.computedMatrix;i(a,e,r,n);var o=this.computedRotation;s(o,a[0],a[1],a[2],a[4],a[5],a[6],a[8],a[9],a[10]),u(o,o),this.rotation.set(t,o[0],o[1],o[2],o[3]);for(var l=0,c=0;c<3;++c)l+=Math.pow(r[c]-e[c],2);this.radius.set(t,.5*Math.log(Math.max(l,1e-6))),this.center.set(t,r[0],r[1],r[2])},h.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},h.setMatrix=function(t,e){var r=this.computedRotation;s(r,e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]),u(r,r),this.rotation.set(t,r[0],r[1],r[2],r[3]);var n=this.computedMatrix;o(n,e);var i=n[15];if(Math.abs(i)>1e-6){var a=n[12]/i,l=n[13]/i,c=n[14]/i;this.recalcMatrix(t);var f=Math.exp(this.computedRadius[0]);this.center.set(t,a-n[2]*f,l-n[6]*f,c-n[10]*f),this.radius.idle(t)}else this.center.idle(t),this.radius.idle(t)},h.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},h.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},h.getDistanceLimits=function(t){var e=this.radius.bounds;return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},h.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},h.fromJSON=function(t){var e=this.lastT(),r=t.center;r&&this.center.set(e,r[0],r[1],r[2]);var n=t.rotation;n&&this.rotation.set(e,n[0],n[1],n[2],n[3]);var i=t.distance;i&&i>0&&this.radius.set(e,Math.log(i)),this.setDistanceLimits(t.zoomMin,t.zoomMax)}},{\"./lib/quatFromFrame\":441,\"filtered-vector\":216,\"gl-mat4/fromQuat\":253,\"gl-mat4/invert\":256,\"gl-mat4/lookAt\":257}],443:[function(t,e,r){\"use strict\";var n=t(\"repeat-string\");e.exports=function(t,e,r){return n(r=\"undefined\"!=typeof r?r+\"\":\" \",e)+t}},{\"repeat-string\":481}],444:[function(t,e,r){\"use strict\";function n(t,e){if(\"string\"!=typeof t)return[t];var r=[t];\"string\"==typeof e||Array.isArray(e)?e={brackets:e}:e||(e={});var n=e.brackets?Array.isArray(e.brackets)?e.brackets:[e.brackets]:[\"{}\",\"[]\",\"()\"],i=e.escape||\"___\",a=!!e.flat;n.forEach(function(t){var e=new RegExp([\"\\\\\",t[0],\"[^\\\\\",t[0],\"\\\\\",t[1],\"]*\\\\\",t[1]].join(\"\")),n=[];function a(e,a,o){var s=r.push(e.slice(t[0].length,-t[1].length))-1;return n.push(s),i+s}r.forEach(function(t,n){for(var i,o=0;t!=i;)if(i=t,t=t.replace(e,a),o++>1e4)throw Error(\"References have circular dependency. Please, check them.\");r[n]=t}),n=n.reverse(),r=r.map(function(e){return n.forEach(function(r){e=e.replace(new RegExp(\"(\\\\\"+i+r+\"(?![0-9]))\",\"g\"),t[0]+\"$1\"+t[1])}),e})});var o=new RegExp(\"\\\\\"+i+\"([0-9]+)\");return a?r:function t(e,r,n){for(var i,a=[],s=0;i=o.exec(e);){if(s++>1e4)throw Error(\"Circular references in parenthesis\");a.push(e.slice(0,i.index)),a.push(t(r[i[1]],r)),e=e.slice(i.index+i[0].length)}return a.push(e),a}(r[0],r)}function i(t,e){if(e&&e.flat){var r,n=e&&e.escape||\"___\",i=t[0];if(!i)return\"\";for(var a=new RegExp(\"\\\\\"+n+\"([0-9]+)\"),o=0;i!=r;){if(o++>1e4)throw Error(\"Circular references in \"+t);r=i,i=i.replace(a,s)}return i}return t.reduce(function t(e,r){return Array.isArray(r)&&(r=r.reduce(t,\"\")),e+r},\"\");function s(e,r){if(null==t[r])throw Error(\"Reference \"+r+\"is undefined\");return t[r]}}function a(t,e){return Array.isArray(t)?i(t,e):n(t,e)}a.parse=n,a.stringify=i,e.exports=a},{}],445:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\");e.exports=function(t){var e;arguments.length>1&&(t=arguments);\"string\"==typeof t?t=t.split(/\\s/).map(parseFloat):\"number\"==typeof t&&(t=[t]);t.length&&\"number\"==typeof t[0]?e=1===t.length?{width:t[0],height:t[0],x:0,y:0}:2===t.length?{width:t[0],height:t[1],x:0,y:0}:{x:t[0],y:t[1],width:t[2]-t[0]||0,height:t[3]-t[1]||0}:t&&(t=n(t,{left:\"x l left Left\",top:\"y t top Top\",width:\"w width W Width\",height:\"h height W Width\",bottom:\"b bottom Bottom\",right:\"r right Right\"}),e={x:t.left||0,y:t.top||0},null==t.width?t.right?e.width=t.right-e.x:e.width=0:e.width=t.width,null==t.height?t.bottom?e.height=t.bottom-e.y:e.height=0:e.height=t.height);return e}},{\"pick-by-alias\":451}],446:[function(t,e,r){e.exports=function(t){var e=[];return t.replace(i,function(t,r,i){var o=r.toLowerCase();for(i=function(t){var e=t.match(a);return e?e.map(Number):[]}(i),\"m\"==o&&i.length>2&&(e.push([r].concat(i.splice(0,2))),o=\"l\",r=\"m\"==r?\"l\":\"L\");;){if(i.length==n[o])return i.unshift(r),e.push(i);if(i.length<n[o])throw new Error(\"malformed path data\");e.push([r].concat(i.splice(0,n[o])))}}),e};var n={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=/([astvzqmhlc])([^astvzqmhlc]*)/gi;var a=/-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/gi},{}],447:[function(t,e,r){e.exports=function(t,e){e||(e=[0,\"\"]),t=String(t);var r=parseFloat(t,10);return e[0]=r,e[1]=t.match(/[\\d.\\-\\+]*\\s*(.*)/)[1]||\"\",e}},{}],448:[function(t,e,r){(function(t){(function(){var r,n,i,a,o,s;\"undefined\"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:\"undefined\"!=typeof t&&null!==t&&t.hrtime?(e.exports=function(){return(r()-o)/1e6},n=t.hrtime,a=(r=function(){var t;return 1e9*(t=n())[0]+t[1]})(),s=1e9*t.uptime(),o=a-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(this)}).call(this,t(\"_process\"))},{_process:468}],449:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.length;if(e<n){for(var r=1,a=0;a<e;++a)for(var o=0;o<a;++o)if(t[a]<t[o])r=-r;else if(t[a]===t[o])return 0;return r}for(var s=i.mallocUint8(e),a=0;a<e;++a)s[a]=0;for(var r=1,a=0;a<e;++a)if(!s[a]){var l=1;s[a]=1;for(var o=t[a];o!==a;o=t[o]){if(s[o])return i.freeUint8(s),0;l+=1,s[o]=1}1&l||(r=-r)}return i.freeUint8(s),r};var n=32,i=t(\"typedarray-pool\")},{\"typedarray-pool\":523}],450:[function(t,e,r){\"use strict\";var n=t(\"typedarray-pool\"),i=t(\"invert-permutation\");r.rank=function(t){var e=t.length;switch(e){case 0:case 1:return 0;case 2:return t[1]}var r,a,o,s=n.mallocUint32(e),l=n.mallocUint32(e),c=0;for(i(t,l),o=0;o<e;++o)s[o]=t[o];for(o=e-1;o>0;--o)a=l[o],r=s[o],s[o]=s[a],s[a]=r,l[o]=l[r],l[r]=a,c=(c+r)*o;return n.freeUint32(l),n.freeUint32(s),c},r.unrank=function(t,e,r){switch(t){case 0:return r||[];case 1:return r?(r[0]=0,r):[0];case 2:return r?(e?(r[0]=0,r[1]=1):(r[0]=1,r[1]=0),r):e?[0,1]:[1,0]}var n,i,a,o=1;for((r=r||new Array(t))[0]=0,a=1;a<t;++a)r[a]=a,o=o*a|0;for(a=t-1;a>0;--a)e=e-(n=e/o|0)*o|0,o=o/a|0,i=0|r[a],r[a]=0|r[n],r[n]=0|i;return r}},{\"invert-permutation\":401,\"typedarray-pool\":523}],451:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n,a,o={};if(\"string\"==typeof e&&(e=i(e)),Array.isArray(e)){var s={};for(a=0;a<e.length;a++)s[e[a]]=!0;e=s}for(n in e)e[n]=i(e[n]);var l={};for(n in e){var c=e[n];if(Array.isArray(c))for(a=0;a<c.length;a++){var u=c[a];if(r&&(l[u]=!0),u in t){if(o[n]=t[u],r)for(var f=a;f<c.length;f++)l[c[f]]=!0;break}}else n in t&&(e[n]&&(o[n]=t[n]),r&&(l[n]=!0))}if(r)for(n in t)l[n]||(o[n]=t[n]);return o};var n={};function i(t){return n[t]?n[t]:(\"string\"==typeof t&&(t=n[t]=t.split(/\\s*,\\s*|\\s+/)),t)}},{}],452:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r=0|e.length,i=t.length,a=[new Array(r),new Array(r)],o=0;o<r;++o)a[0][o]=[],a[1][o]=[];for(var o=0;o<i;++o){var s=t[o];a[0][s[0]].push(s),a[1][s[1]].push(s)}for(var l=[],o=0;o<r;++o)a[0][o].length+a[1][o].length===0&&l.push([o]);function c(t,e){var r=a[e][t[e]];r.splice(r.indexOf(t),1)}function u(t,r,i){for(var o,s,l,u=0;u<2;++u)if(a[u][r].length>0){o=a[u][r][0],l=u;break}s=o[1^l];for(var f=0;f<2;++f)for(var h=a[f][r],p=0;p<h.length;++p){var d=h[p],g=d[1^f],v=n(e[t],e[r],e[s],e[g]);v>0&&(o=d,s=g,l=f)}return i?s:(o&&c(o,l),s)}function f(t,r){var i=a[r][t][0],o=[t];c(i,r);for(var s=i[1^r];;){for(;s!==t;)o.push(s),s=u(o[o.length-2],s,!1);if(a[0][t].length+a[1][t].length===0)break;var l=o[o.length-1],f=t,h=o[1],p=u(l,f,!0);if(n(e[l],e[f],e[h],e[p])<0)break;o.push(t),s=u(l,f)}return o}function h(t,e){return e[1]===e[e.length-1]}for(var o=0;o<r;++o)for(var p=0;p<2;++p){for(var d=[];a[p][o].length>0;){a[0][o].length;var g=f(o,p);h(d,g)?d.push.apply(d,g):(d.length>0&&l.push(d),d=g)}d.length>0&&l.push(d)}return l};var n=t(\"compare-angle\")},{\"compare-angle\":116}],453:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r=n(t,e.length),i=new Array(e.length),a=new Array(e.length),o=[],s=0;s<e.length;++s){var l=r[s].length;a[s]=l,i[s]=!0,l<=1&&o.push(s)}for(;o.length>0;){var c=o.pop();i[c]=!1;for(var u=r[c],s=0;s<u.length;++s){var f=u[s];0==--a[f]&&o.push(f)}}for(var h=new Array(e.length),p=[],s=0;s<e.length;++s)if(i[s]){var c=p.length;h[s]=c,p.push(e[s])}else h[s]=-1;for(var d=[],s=0;s<t.length;++s){var g=t[s];i[g[0]]&&i[g[1]]&&d.push([h[g[0]],h[g[1]]])}return[d,p]};var n=t(\"edges-to-adjacency-list\")},{\"edges-to-adjacency-list\":158}],454:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=c(t,e);t=r[0];for(var f=(e=r[1]).length,h=(t.length,n(t,e.length)),p=0;p<f;++p)if(h[p].length%2==1)throw new Error(\"planar-graph-to-polyline: graph must be manifold\");var d=i(t,e);for(var g=(d=d.filter(function(t){for(var r=t.length,n=[0],i=0;i<r;++i){var a=e[t[i]],l=e[t[(i+1)%r]],c=o(-a[0],a[1]),u=o(-a[0],l[1]),f=o(l[0],a[1]),h=o(l[0],l[1]);n=s(n,s(s(c,u),s(f,h)))}return n[n.length-1]>0})).length,v=new Array(g),m=new Array(g),p=0;p<g;++p){v[p]=p;var y=new Array(g),x=d[p].map(function(t){return e[t]}),b=a([x]),_=0;t:for(var w=0;w<g;++w)if(y[w]=0,p!==w){for(var k=d[w],A=k.length,M=0;M<A;++M){var T=b(e[k[M]]);if(0!==T){T<0&&(y[w]=1,_+=1);continue t}}y[w]=1,_+=1}m[p]=[_,p,y]}m.sort(function(t,e){return e[0]-t[0]});for(var p=0;p<g;++p)for(var y=m[p],S=y[1],C=y[2],w=0;w<g;++w)C[w]&&(v[w]=S);for(var E=function(t){for(var e=new Array(t),r=0;r<t;++r)e[r]=[];return e}(g),p=0;p<g;++p)E[p].push(v[p]),E[v[p]].push(p);for(var L={},z=u(f,!1),p=0;p<g;++p)for(var k=d[p],A=k.length,w=0;w<A;++w){var O=k[w],I=k[(w+1)%A],D=Math.min(O,I)+\":\"+Math.max(O,I);if(D in L){var P=L[D];E[P].push(p),E[p].push(P),z[O]=z[I]=!0}else L[D]=p}function R(t){for(var e=t.length,r=0;r<e;++r)if(!z[t[r]])return!1;return!0}for(var F=[],B=u(g,-1),p=0;p<g;++p)v[p]!==p||R(d[p])?B[p]=-1:(F.push(p),B[p]=0);var r=[];for(;F.length>0;){var N=F.pop(),j=E[N];l(j,function(t,e){return t-e});var V,U=j.length,q=B[N];if(0===q){var k=d[N];V=[k]}for(var p=0;p<U;++p){var H=j[p];if(!(B[H]>=0)&&(B[H]=1^q,F.push(H),0===q)){var k=d[H];R(k)||(k.reverse(),V.push(k))}}0===q&&r.push(V)}return r};var n=t(\"edges-to-adjacency-list\"),i=t(\"planar-dual\"),a=t(\"point-in-big-polygon\"),o=t(\"two-product\"),s=t(\"robust-sum\"),l=t(\"uniq\"),c=t(\"./lib/trim-leaves\");function u(t,e){for(var r=new Array(t),n=0;n<t;++n)r[n]=e;return r}},{\"./lib/trim-leaves\":453,\"edges-to-adjacency-list\":158,\"planar-dual\":452,\"point-in-big-polygon\":458,\"robust-sum\":493,\"two-product\":521,uniq:525}],455:[function(t,e,r){\"use strict\";e.exports=t(\"./quad\")},{\"./quad\":457}],456:[function(t,e,r){arguments[4][100][0].apply(r,arguments)},{dup:100}],457:[function(t,e,r){\"use strict\";var n=t(\"binary-search-bounds\"),i=t(\"clamp\"),a=t(\"parse-rect\"),o=t(\"array-bounds\"),s=t(\"pick-by-alias\"),l=t(\"defined\"),c=t(\"flatten-vertex-data\"),u=t(\"is-obj\"),f=t(\"dtype\"),h=t(\"math-log2\");function p(t,e){for(var r=e[0],n=e[1],a=1/(e[2]-r),o=1/(e[3]-n),s=new Array(t.length),l=0,c=t.length/2;l<c;l++)s[2*l]=i((t[2*l]-r)*a,0,1),s[2*l+1]=i((t[2*l+1]-n)*o,0,1);return s}e.exports=function(t,e){e||(e={}),t=c(t,\"float64\"),e=s(e,{bounds:\"range bounds dataBox databox\",maxDepth:\"depth maxDepth maxdepth level maxLevel maxlevel levels\",dtype:\"type dtype format out dst output destination\"});var r=l(e.maxDepth,255),i=l(e.bounds,o(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;var d,g=p(t,i),v=t.length>>>1;e.dtype||(e.dtype=\"array\"),\"string\"==typeof e.dtype?d=new(f(e.dtype))(v):e.dtype&&(d=e.dtype,Array.isArray(d)&&(d.length=v));for(var m=0;m<v;++m)d[m]=m;var y=[],x=[],b=[],_=[];!function t(e,n,i,a,o,s){if(!a.length)return null;var l=y[o]||(y[o]=[]);var c=b[o]||(b[o]=[]);var u=x[o]||(x[o]=[]);var f=l.length;o++;if(o>r){for(var h=0;h<a.length;h++)l.push(a[h]),c.push(s),u.push(null,null,null,null);return f}l.push(a[0]);c.push(s);if(a.length<=1)return u.push(null,null,null,null),f;var p=.5*i;var d=e+p,v=n+p;var m=[],_=[],w=[],k=[];for(var A=1,M=a.length;A<M;A++){var T=a[A],S=g[2*T],C=g[2*T+1];S<d?C<v?m.push(T):_.push(T):C<v?w.push(T):k.push(T)}s<<=2;u.push(t(e,n,p,m,o,s),t(e,v,p,_,o,s+1),t(d,n,p,w,o,s+2),t(d,v,p,k,o,s+3));return f}(0,0,1,d,0,1);for(var w=0,k=0;k<y.length;k++){var A=y[k];if(d.set)d.set(A,w);else for(var M=0,T=A.length;M<T;M++)d[M+w]=A[M];var S=w+y[k].length;_[k]=[w,S],w=S}return d.range=function(){var e,r=[],o=arguments.length;for(;o--;)r[o]=arguments[o];if(u(r[r.length-1])){var c=r.pop();r.length||null==c.x&&null==c.l&&null==c.left||(r=[c],e={}),e=s(c,{level:\"level maxLevel\",d:\"d diam diameter r radius px pxSize pixel pixelSize maxD size minSize\",lod:\"lod details ranges offsets\"})}else e={};r.length||(r=i);var f=a.apply(void 0,r),d=[Math.min(f.x,f.x+f.width),Math.min(f.y,f.y+f.height),Math.max(f.x,f.x+f.width),Math.max(f.y,f.y+f.height)],g=d[0],v=d[1],m=d[2],w=d[3],k=p([g,v,m,w],i),A=k[0],M=k[1],T=k[2],S=k[3],E=l(e.level,y.length);if(null!=e.d){var L;\"number\"==typeof e.d?L=[e.d,e.d]:e.d.length&&(L=e.d),E=Math.min(Math.max(Math.ceil(-h(Math.abs(L[0])/(i[2]-i[0]))),Math.ceil(-h(Math.abs(L[1])/(i[3]-i[1])))),E)}if(E=Math.min(E,y.length),e.lod)return function(t,e,r,i,a){for(var o=[],s=0;s<a;s++){var l=b[s],c=_[s][0],u=C(t,e,s),f=C(r,i,s),h=n.ge(l,u),p=n.gt(l,f,h,l.length-1);o[s]=[h+c,p+c]}return o}(A,M,T,S,E);var z=[];return function e(r,n,i,a,o,s){if(null!==o&&null!==s){var l=r+i,c=n+i;if(!(A>l||M>c||T<r||S<n||a>=E||o===s)){var u=y[a];void 0===s&&(s=u.length);for(var f=o;f<s;f++){var h=u[f],p=t[2*h],d=t[2*h+1];p>=g&&p<=m&&d>=v&&d<=w&&z.push(h)}var b=x[a],_=b[4*o+0],k=b[4*o+1],C=b[4*o+2],L=b[4*o+3],O=function(t,e){for(var r=null,n=0;null===r;)if(r=t[4*e+n],++n>t.length)return null;return r}(b,o+1),I=.5*i,D=a+1;e(r,n,I,D,_,k||C||L||O),e(r,n+I,I,D,k,C||L||O),e(r+I,n,I,D,C,L||O),e(r+I,n+I,I,D,L,O)}}}(0,0,1,0,0,1),z},d;function C(t,e,r){for(var n=1,i=.5,a=.5,o=.5,s=0;s<r;s++)n<<=2,n+=t<i?e<a?0:1:e<a?2:3,o*=.5,i+=t<i?-o:o,a+=e<a?-o:o;return n}}},{\"array-bounds\":54,\"binary-search-bounds\":456,clamp:104,defined:150,dtype:155,\"flatten-vertex-data\":217,\"is-obj\":407,\"math-log2\":418,\"parse-rect\":445,\"pick-by-alias\":451}],458:[function(t,e,r){e.exports=function(t){for(var e=t.length,r=[],a=[],s=0;s<e;++s)for(var u=t[s],f=u.length,h=f-1,p=0;p<f;h=p++){var d=u[h],g=u[p];d[0]===g[0]?a.push([d,g]):r.push([d,g])}if(0===r.length)return 0===a.length?c:(v=l(a),function(t){return v(t[0],t[1])?0:1});var v;var m=i(r),y=function(t,e){return function(r){var i=o.le(e,r[0]);if(i<0)return 1;var a=t[i];if(!a){if(!(i>0&&e[i]===r[0]))return 1;a=t[i-1]}for(var s=1;a;){var l=a.key,c=n(r,l[0],l[1]);if(l[0][0]<l[1][0])if(c<0)a=a.left;else{if(!(c>0))return 0;s=-1,a=a.right}else if(c>0)a=a.left;else{if(!(c<0))return 0;s=1,a=a.right}}return s}}(m.slabs,m.coordinates);return 0===a.length?y:function(t,e){return function(r){return t(r[0],r[1])?0:e(r)}}(l(a),y)};var n=t(\"robust-orientation\")[3],i=t(\"slab-decomposition\"),a=t(\"interval-tree-1d\"),o=t(\"binary-search-bounds\");function s(){return!0}function l(t){for(var e={},r=0;r<t.length;++r){var n=t[r],i=n[0][0],o=n[0][1],l=n[1][1],c=[Math.min(o,l),Math.max(o,l)];i in e?e[i].push(c):e[i]=[c]}var u={},f=Object.keys(e);for(r=0;r<f.length;++r){var h=e[f[r]];u[f[r]]=a(h)}return function(t){return function(e,r){var n=t[e];return!!n&&!!n.queryPoint(r,s)}}(u)}function c(t){return 1}},{\"binary-search-bounds\":80,\"interval-tree-1d\":400,\"robust-orientation\":488,\"slab-decomposition\":504}],459:[function(t,e,r){var n,i=t(\"./lib/build-log\"),a=t(\"./lib/epsilon\"),o=t(\"./lib/intersecter\"),s=t(\"./lib/segment-chainer\"),l=t(\"./lib/segment-selector\"),c=t(\"./lib/geojson\"),u=!1,f=a();function h(t,e,r){var i=n.segments(t),a=n.segments(e),o=r(n.combine(i,a));return n.polygon(o)}n={buildLog:function(t){return!0===t?u=i():!1===t&&(u=!1),!1!==u&&u.list},epsilon:function(t){return f.epsilon(t)},segments:function(t){var e=o(!0,f,u);return t.regions.forEach(e.addRegion),{segments:e.calculate(t.inverted),inverted:t.inverted}},combine:function(t,e){return{combined:o(!1,f,u).calculate(t.segments,t.inverted,e.segments,e.inverted),inverted1:t.inverted,inverted2:e.inverted}},selectUnion:function(t){return{segments:l.union(t.combined,u),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:l.intersect(t.combined,u),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:l.difference(t.combined,u),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:l.differenceRev(t.combined,u),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:l.xor(t.combined,u),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:s(t.segments,f,u),inverted:t.inverted}},polygonFromGeoJSON:function(t){return c.toPolygon(n,t)},polygonToGeoJSON:function(t){return c.fromPolygon(n,f,t)},union:function(t,e){return h(t,e,n.selectUnion)},intersect:function(t,e){return h(t,e,n.selectIntersect)},difference:function(t,e){return h(t,e,n.selectDifference)},differenceRev:function(t,e){return h(t,e,n.selectDifferenceRev)},xor:function(t,e){return h(t,e,n.selectXor)}},\"object\"==typeof window&&(window.PolyBool=n),e.exports=n},{\"./lib/build-log\":460,\"./lib/epsilon\":461,\"./lib/geojson\":462,\"./lib/intersecter\":463,\"./lib/segment-chainer\":465,\"./lib/segment-selector\":466}],460:[function(t,e,r){e.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n(\"check\",{seg1:t,seg2:e})},segmentChop:function(t,e){return n(\"div_seg\",{seg:t,pt:e}),n(\"chop\",{seg:t,pt:e})},statusRemove:function(t){return n(\"pop_seg\",{seg:t})},segmentUpdate:function(t){return n(\"seg_update\",{seg:t})},segmentNew:function(t,e){return n(\"new_seg\",{seg:t,primary:e})},segmentRemove:function(t){return n(\"rem_seg\",{seg:t})},tempStatus:function(t,e,r){return n(\"temp_status\",{seg:t,above:e,below:r})},rewind:function(t){return n(\"rewind\",{seg:t})},status:function(t,e,r){return n(\"status\",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n(\"vert\",{x:e}))},log:function(t){return\"string\"!=typeof t&&(t=JSON.stringify(t,!1,\"  \")),n(\"log\",{txt:t})},reset:function(){return n(\"reset\")},selected:function(t){return n(\"selected\",{segs:t})},chainStart:function(t){return n(\"chain_start\",{seg:t})},chainRemoveHead:function(t,e){return n(\"chain_rem_head\",{index:t,pt:e})},chainRemoveTail:function(t,e){return n(\"chain_rem_tail\",{index:t,pt:e})},chainNew:function(t,e){return n(\"chain_new\",{pt1:t,pt2:e})},chainMatch:function(t){return n(\"chain_match\",{index:t})},chainClose:function(t){return n(\"chain_close\",{index:t})},chainAddHead:function(t,e){return n(\"chain_add_head\",{index:t,pt:e})},chainAddTail:function(t,e){return n(\"chain_add_tail\",{index:t,pt:e})},chainConnect:function(t,e){return n(\"chain_con\",{index1:t,index2:e})},chainReverse:function(t){return n(\"chain_rev\",{index:t})},chainJoin:function(t,e){return n(\"chain_join\",{index1:t,index2:e})},done:function(){return n(\"done\")}}}},{}],461:[function(t,e,r){e.exports=function(t){\"number\"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return\"number\"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l<t||l-(a*a+s*s)>-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])<t},pointsSameY:function(e,r){return Math.abs(e[1]-r[1])<t},pointsSame:function(t,r){return e.pointsSameX(t,r)&&e.pointsSameY(t,r)},pointsCompare:function(t,r){return e.pointsSameX(t,r)?e.pointsSameY(t,r)?0:t[1]<r[1]?-1:1:t[0]<r[0]?-1:1},pointsCollinear:function(e,r,n){var i=e[0]-r[0],a=e[1]-r[1],o=r[0]-n[0],s=r[1]-n[1];return Math.abs(i*s-o*a)<t},linesIntersect:function(e,r,n,i){var a=r[0]-e[0],o=r[1]-e[1],s=i[0]-n[0],l=i[1]-n[1],c=a*l-o*s;if(Math.abs(c)<t)return!1;var u=e[0]-n[0],f=e[1]-n[1],h=(s*f-l*u)/c,p=(a*f-o*u)/c,d={alongA:0,alongB:0,pt:[e[0]+h*a,e[1]+h*o]};return d.alongA=h<=-t?-2:h<t?-1:h-1<=-t?0:h-1<t?1:2,d.alongB=p<=-t?-2:p<t?-1:p-1<=-t?0:p-1<t?1:2,d},pointInsideRegion:function(e,r){for(var n=e[0],i=e[1],a=r[r.length-1][0],o=r[r.length-1][1],s=!1,l=0;l<r.length;l++){var c=r[l][0],u=r[l][1];u-i>t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],462:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i<e.length;i++)n=t.selectDifference(t.combine(n,r(e[i])));return n}if(\"Polygon\"===e.type)return t.polygon(r(e.coordinates));if(\"MultiPolygon\"===e.type){for(var n=t.segments({inverted:!1,regions:[]}),i=0;i<e.coordinates.length;i++)n=t.selectUnion(t.combine(n,r(e.coordinates[i])));return t.polygon(n)}throw new Error(\"PolyBool: Cannot convert GeoJSON object to PolyBool polygon\")},fromPolygon:function(t,e,r){function n(t,r){return e.pointInsideRegion([.5*(t[0][0]+t[1][0]),.5*(t[0][1]+t[1][1])],r)}function i(t){return{region:t,children:[]}}r=t.polygon(t.segments(r));var a=i(null);function o(t,e){for(var r=0;r<t.children.length;r++){if(n(e,(s=t.children[r]).region))return void o(s,e)}var a=i(e);for(r=0;r<t.children.length;r++){var s;n((s=t.children[r]).region,e)&&(a.children.push(s),t.children.splice(r,1),r--)}t.children.push(a)}for(var s=0;s<r.regions.length;s++){var l=r.regions[s];l.length<3||o(a,l)}function c(t,e){for(var r=0,n=t[t.length-1][0],i=t[t.length-1][1],a=[],o=0;o<t.length;o++){var s=t[o][0],l=t[o][1];a.push([s,l]),r+=l*n-s*i,n=s,i=l}return r<0!==e&&a.reverse(),a.push([a[0][0],a[0][1]]),a}var u=[];function f(t){var e=[c(t.region,!1)];u.push(e);for(var r=0;r<t.children.length;r++)e.push(h(t.children[r]))}function h(t){for(var e=0;e<t.children.length;e++)f(t.children[e]);return c(t.region,!0)}for(s=0;s<a.children.length;s++)f(a.children[s]);return u.length<=0?{type:\"Polygon\",coordinates:[]}:1==u.length?{type:\"Polygon\",coordinates:u[0]}:{type:\"MultiPolygon\",coordinates:u}}};e.exports=n},{}],463:[function(t,e,r){var n=t(\"./linked-list\");e.exports=function(t,e,r){function i(t,e,n){return{id:r?r.segmentId():-1,start:t,end:e,myFill:{above:n.myFill.above,below:n.myFill.below},otherFill:null}}var a=n.create();function o(t,r){a.insertBefore(t,function(n){return function(t,r,n,i,a,o){var s=e.pointsCompare(r,a);return 0!==s?s:e.pointsSame(n,o)?0:t!==i?t?1:-1:e.pointAboveOrOnLine(n,i?a:o,i?o:a)?1:-1}(t.isStart,t.pt,r,n.isStart,n.pt,n.other.pt)<0})}function s(t,e){var r=function(t,e){var r=n.node({isStart:!0,pt:t.start,seg:t,primary:e,other:null,status:null});return o(r,t.end),r}(t,e);return function(t,e,r){var i=n.node({isStart:!1,pt:e.end,seg:e,primary:r,other:t,status:null});t.other=i,o(i,t.pt)}(r,t,e),r}function l(t,e){var n=i(e,t.seg.end,t.seg);return function(t,e){r&&r.segmentChop(t.seg,e),t.other.remove(),t.seg.end=e,t.other.pt=e,o(t.other,t.pt)}(t,e),s(n,t.primary)}function c(i,o){var s=n.create();function c(t){return s.findTransition(function(r){var n,i,a,o,s,l;return n=t,i=r.ev,a=n.seg.start,o=n.seg.end,s=i.seg.start,l=i.seg.end,(e.pointsCollinear(a,s,l)?e.pointsCollinear(o,s,l)?1:e.pointAboveOrOnLine(o,s,l)?1:-1:e.pointAboveOrOnLine(a,s,l)?1:-1)>0})}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function v(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var m,y,x=v();if(x)t?(y=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(x.seg.myFill.above=!x.seg.myFill.above):x.seg.otherFill=h.seg.myFill,r&&r.segmentUpdate(x.seg),h.other.remove(),h.remove();if(a.getHead()!==h){r&&r.rewind(h.seg);continue}t?(y=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=y?!h.seg.myFill.below:h.seg.myFill.below):null===h.seg.otherFill&&(m=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:m,below:m}),r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l<t.length;l++){n=o,o=t[l];var c=e.pointsCompare(n,o);0!==c&&s((i=c<0?n:o,a=c<0?o:n,{id:r?r.segmentId():-1,start:i,end:a,myFill:{above:null,below:null},otherFill:null}),!0)}},calculate:function(t){return c(t,!1)}}:{calculate:function(t,e,r,n){return t.forEach(function(t){s(i(t.start,t.end,t),!0)}),r.forEach(function(t){s(i(t.start,t.end,t),!1)}),c(e,n)}}}},{\"./linked-list\":464}],464:[function(t,e,r){e.exports={create:function(){var t={root:{root:!0,next:null},exists:function(e){return null!==e&&e!==t.root},isEmpty:function(){return null===t.root.next},getHead:function(){return t.root.next},insertBefore:function(e,r){for(var n=t.root,i=t.root.next;null!==i;){if(r(i))return e.prev=i.prev,e.next=i,i.prev.next=e,void(i.prev=e);n=i,i=i.next}n.next=e,e.prev=n,e.next=null},findTransition:function(e){for(var r=t.root,n=t.root.next;null!==n&&!e(n);)r=n,n=n.next;return{before:r===t.root?null:r,after:n,insert:function(t){return t.prev=r,t.next=n,r.next=t,null!==n&&(n.prev=t),t}}}};return t},node:function(t){return t.prev=null,t.next=null,t.remove=function(){t.prev.next=t.next,t.next&&(t.next.prev=t.prev),t.prev=null,t.next=null},t}}},{}],465:[function(t,e,r){e.exports=function(t,e,r){var n=[],i=[];return t.forEach(function(t){var a=t.start,o=t.end;if(e.pointsSame(a,o))console.warn(\"PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large\");else{r&&r.chainStart(t);for(var s={index:0,matches_head:!1,matches_pt1:!1},l={index:0,matches_head:!1,matches_pt1:!1},c=s,u=0;u<n.length;u++){var f=(v=n[u])[0],h=(v[1],v[v.length-1]);if(v[v.length-2],e.pointsSame(f,a)){if(A(u,!0,!0))break}else if(e.pointsSame(f,o)){if(A(u,!0,!1))break}else if(e.pointsSame(h,a)){if(A(u,!1,!0))break}else if(e.pointsSame(h,o)&&A(u,!1,!1))break}if(c===s)return n.push([a,o]),void(r&&r.chainNew(a,o));if(c===l){r&&r.chainMatch(s.index);var p=s.index,d=s.matches_pt1?o:a,g=s.matches_head,v=n[p],m=g?v[0]:v[v.length-1],y=g?v[1]:v[v.length-2],x=g?v[v.length-1]:v[0],b=g?v[v.length-2]:v[1];return e.pointsCollinear(y,m,d)&&(g?(r&&r.chainRemoveHead(s.index,d),v.shift()):(r&&r.chainRemoveTail(s.index,d),v.pop()),m=y),e.pointsSame(x,d)?(n.splice(p,1),e.pointsCollinear(b,x,m)&&(g?(r&&r.chainRemoveTail(s.index,m),v.pop()):(r&&r.chainRemoveHead(s.index,m),v.shift())),r&&r.chainClose(s.index),void i.push(v)):void(g?(r&&r.chainAddHead(s.index,d),v.unshift(d)):(r&&r.chainAddTail(s.index,d),v.push(d)))}var _=s.index,w=l.index;r&&r.chainConnect(_,w);var k=n[_].length<n[w].length;s.matches_head?l.matches_head?k?(M(_),T(_,w)):(M(w),T(w,_)):T(w,_):l.matches_head?T(_,w):k?(M(_),T(w,_)):(M(w),T(_,w))}function A(t,e,r){return c.index=t,c.matches_head=e,c.matches_pt1=r,c===s?(c=l,!1):(c=null,!0)}function M(t){r&&r.chainReverse(t),n[t].reverse()}function T(t,i){var a=n[t],o=n[i],s=a[a.length-1],l=a[a.length-2],c=o[0],u=o[1];e.pointsCollinear(l,s,c)&&(r&&r.chainRemoveTail(t,s),a.pop(),s=l),e.pointsCollinear(s,c,u)&&(r&&r.chainRemoveHead(i,c),o.shift()),r&&r.chainJoin(t,i),n[t]=a.concat(o),n.splice(i,1)}}),i}},{}],466:[function(t,e,r){function n(t,e,r){var n=[];return t.forEach(function(t){var i=(t.myFill.above?8:0)+(t.myFill.below?4:0)+(t.otherFill&&t.otherFill.above?2:0)+(t.otherFill&&t.otherFill.below?1:0);0!==e[i]&&n.push({id:r?r.segmentId():-1,start:t.start,end:t.end,myFill:{above:1===e[i],below:2===e[i]},otherFill:null})}),r&&r.selected(n),n}var i={union:function(t,e){return n(t,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],e)},intersect:function(t,e){return n(t,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],e)},difference:function(t,e){return n(t,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],e)},differenceRev:function(t,e){return n(t,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],e)},xor:function(t,e){return n(t,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],e)}};e.exports=i},{}],467:[function(t,e,r){\"use strict\";var n=new Float64Array(4),i=new Float64Array(4),a=new Float64Array(4);e.exports=function(t,e,r,o,s){n.length<o.length&&(n=new Float64Array(o.length),i=new Float64Array(o.length),a=new Float64Array(o.length));for(var l=0;l<o.length;++l)n[l]=t[l]-o[l],i[l]=e[l]-t[l],a[l]=r[l]-t[l];var c=0,u=0,f=0,h=0,p=0,d=0;for(l=0;l<o.length;++l){var g=i[l],v=a[l],m=n[l];c+=g*g,u+=g*v,f+=v*v,h+=m*g,p+=m*v,d+=m*m}var y,x,b,_,w,k=Math.abs(c*f-u*u),A=u*p-f*h,M=u*h-c*p;if(A+M<=k)if(A<0)M<0&&h<0?(M=0,-h>=c?(A=1,y=c+2*h+d):y=h*(A=-h/c)+d):(A=0,p>=0?(M=0,y=d):-p>=f?(M=1,y=f+2*p+d):y=p*(M=-p/f)+d);else if(M<0)M=0,h>=0?(A=0,y=d):-h>=c?(A=1,y=c+2*h+d):y=h*(A=-h/c)+d;else{var T=1/k;y=(A*=T)*(c*A+u*(M*=T)+2*h)+M*(u*A+f*M+2*p)+d}else A<0?(b=f+p)>(x=u+h)?(_=b-x)>=(w=c-2*u+f)?(A=1,M=0,y=c+2*h+d):y=(A=_/w)*(c*A+u*(M=1-A)+2*h)+M*(u*A+f*M+2*p)+d:(A=0,b<=0?(M=1,y=f+2*p+d):p>=0?(M=0,y=d):y=p*(M=-p/f)+d):M<0?(b=c+h)>(x=u+p)?(_=b-x)>=(w=c-2*u+f)?(M=1,A=0,y=f+2*p+d):y=(A=1-(M=_/w))*(c*A+u*M+2*h)+M*(u*A+f*M+2*p)+d:(M=0,b<=0?(A=1,y=c+2*h+d):h>=0?(A=0,y=d):y=h*(A=-h/c)+d):(_=f+p-u-h)<=0?(A=0,M=1,y=f+2*p+d):_>=(w=c-2*u+f)?(A=1,M=0,y=c+2*h+d):y=(A=_/w)*(c*A+u*(M=1-A)+2*h)+M*(u*A+f*M+2*p)+d;var S=1-A-M;for(l=0;l<o.length;++l)s[l]=S*t[l]+A*e[l]+M*r[l];return y<0?0:y}},{}],468:[function(t,e,r){var n,i,a=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function l(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{i=\"function\"==typeof clearTimeout?clearTimeout:s}catch(t){i=s}}();var c,u=[],f=!1,h=-1;function p(){f&&c&&(f=!1,c.length?u=c.concat(u):h=-1,u.length&&d())}function d(){if(!f){var t=l(p);f=!0;for(var e=u.length;e;){for(c=u,u=[];++h<e;)c&&c[h].run();h=-1,e=u.length}c=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===s||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function v(){}a.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];u.push(new g(t,e)),1!==u.length||f||l(d)},g.prototype.run=function(){this.fun.apply(null,this.array)},a.title=\"browser\",a.browser=!0,a.env={},a.argv=[],a.version=\"\",a.versions={},a.on=v,a.addListener=v,a.once=v,a.off=v,a.removeListener=v,a.removeAllListeners=v,a.emit=v,a.prependListener=v,a.prependOnceListener=v,a.listeners=function(t){return[]},a.binding=function(t){throw new Error(\"process.binding is not supported\")},a.cwd=function(){return\"/\"},a.chdir=function(t){throw new Error(\"process.chdir is not supported\")},a.umask=function(){return 0}},{}],469:[function(t,e,r){e.exports=t(\"gl-quat/slerp\")},{\"gl-quat/slerp\":282}],470:[function(t,e,r){(function(r){for(var n=t(\"performance-now\"),i=\"undefined\"==typeof window?r:window,a=[\"moz\",\"webkit\"],o=\"AnimationFrame\",s=i[\"request\"+o],l=i[\"cancel\"+o]||i[\"cancelRequest\"+o],c=0;!s&&c<a.length;c++)s=i[a[c]+\"Request\"+o],l=i[a[c]+\"Cancel\"+o]||i[a[c]+\"CancelRequest\"+o];if(!s||!l){var u=0,f=0,h=[];s=function(t){if(0===h.length){var e=n(),r=Math.max(0,1e3/60-(e-u));u=r+e,setTimeout(function(){var t=h.slice(0);h.length=0;for(var e=0;e<t.length;e++)if(!t[e].cancelled)try{t[e].callback(u)}catch(t){setTimeout(function(){throw t},0)}},Math.round(r))}return h.push({handle:++f,callback:t,cancelled:!1}),f},l=function(t){for(var e=0;e<h.length;e++)h[e].handle===t&&(h[e].cancelled=!0)}}e.exports=function(t){return s.call(i,t)},e.exports.cancel=function(){l.apply(i,arguments)},e.exports.polyfill=function(t){t||(t=i),t.requestAnimationFrame=s,t.cancelAnimationFrame=l}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"performance-now\":448}],471:[function(t,e,r){\"use strict\";var n=t(\"big-rat/add\");e.exports=function(t,e){for(var r=t.length,i=new Array(r),a=0;a<r;++a)i[a]=n(t[a],e[a]);return i}},{\"big-rat/add\":64}],472:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=new Array(t.length),r=0;r<t.length;++r)e[r]=n(t[r]);return e};var n=t(\"big-rat\")},{\"big-rat\":67}],473:[function(t,e,r){\"use strict\";var n=t(\"big-rat\"),i=t(\"big-rat/mul\");e.exports=function(t,e){for(var r=n(e),a=t.length,o=new Array(a),s=0;s<a;++s)o[s]=i(t[s],r);return o}},{\"big-rat\":67,\"big-rat/mul\":76}],474:[function(t,e,r){\"use strict\";var n=t(\"big-rat/sub\");e.exports=function(t,e){for(var r=t.length,i=new Array(r),a=0;a<r;++a)i[a]=n(t[a],e[a]);return i}},{\"big-rat/sub\":78}],475:[function(t,e,r){\"use strict\";var n=t(\"compare-cell\"),i=t(\"compare-oriented-cell\"),a=t(\"cell-orientation\");e.exports=function(t){t.sort(i);for(var e=t.length,r=0,o=0;o<e;++o){var s=t[o],l=a(s);if(0!==l){if(r>0){var c=t[r-1];if(0===n(s,c)&&a(c)!==l){r-=1;continue}}t[r++]=s}}return t.length=r,t}},{\"cell-orientation\":101,\"compare-cell\":117,\"compare-oriented-cell\":118}],476:[function(t,e,r){\"use strict\";var n=t(\"array-bounds\"),i=t(\"color-normalize\"),a=t(\"update-diff\"),o=t(\"pick-by-alias\"),s=t(\"object-assign\"),l=t(\"flatten-vertex-data\"),c=t(\"to-float32\"),u=c.float32,f=c.fract32;e.exports=function(t,e){\"function\"==typeof t?(e||(e={}),e.regl=t):e=t;e.length&&(e.positions=e);if(!(t=e.regl).hasExtension(\"ANGLE_instanced_arrays\"))throw Error(\"regl-error2d: `ANGLE_instanced_arrays` extension should be enabled\");var r,c,p,d,g,v,m=t._gl,y={color:\"black\",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},x=[];return d=t.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array(0)}),c=t.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array(0)}),p=t.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array(0)}),g=t.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array(0)}),v=t.buffer({usage:\"static\",type:\"float\",data:h}),k(e),r=t({vert:\"\\n\\t\\tprecision highp float;\\n\\n\\t\\tattribute vec2 position, positionFract;\\n\\t\\tattribute vec4 error;\\n\\t\\tattribute vec4 color;\\n\\n\\t\\tattribute vec2 direction, lineOffset, capOffset;\\n\\n\\t\\tuniform vec4 viewport;\\n\\t\\tuniform float lineWidth, capSize;\\n\\t\\tuniform vec2 scale, scaleFract, translate, translateFract;\\n\\n\\t\\tvarying vec4 fragColor;\\n\\n\\t\\tvoid main() {\\n\\t\\t\\tfragColor = color / 255.;\\n\\n\\t\\t\\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\\n\\n\\t\\t\\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\\n\\n\\t\\t\\tvec2 position = position + dxy;\\n\\n\\t\\t\\tvec2 pos = (position + translate) * scale\\n\\t\\t\\t\\t+ (positionFract + translateFract) * scale\\n\\t\\t\\t\\t+ (position + translate) * scaleFract\\n\\t\\t\\t\\t+ (positionFract + translateFract) * scaleFract;\\n\\n\\t\\t\\tpos += pixelOffset / viewport.zw;\\n\\n\\t\\t\\tgl_Position = vec4(pos * 2. - 1., 0, 1);\\n\\t\\t}\\n\\t\\t\",frag:\"\\n\\t\\tprecision mediump float;\\n\\n\\t\\tvarying vec4 fragColor;\\n\\n\\t\\tuniform float opacity;\\n\\n\\t\\tvoid main() {\\n\\t\\t\\tgl_FragColor = fragColor;\\n\\t\\t\\tgl_FragColor.a *= opacity;\\n\\t\\t}\\n\\t\\t\",uniforms:{range:t.prop(\"range\"),lineWidth:t.prop(\"lineWidth\"),capSize:t.prop(\"capSize\"),opacity:t.prop(\"opacity\"),scale:t.prop(\"scale\"),translate:t.prop(\"translate\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{color:{buffer:d,offset:function(t,e){return 4*e.offset},divisor:1},position:{buffer:c,offset:function(t,e){return 8*e.offset},divisor:1},positionFract:{buffer:p,offset:function(t,e){return 8*e.offset},divisor:1},error:{buffer:g,offset:function(t,e){return 16*e.offset},divisor:1},direction:{buffer:v,stride:24,offset:0},lineOffset:{buffer:v,stride:24,offset:8},capOffset:{buffer:v,stride:24,offset:16}},primitive:\"triangles\",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:\"add\",alpha:\"add\"},func:{srcRGB:\"src alpha\",dstRGB:\"one minus src alpha\",srcAlpha:\"one minus dst alpha\",dstAlpha:\"one\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"viewport\")},viewport:t.prop(\"viewport\"),stencil:!1,instances:t.prop(\"count\"),count:h.length}),s(b,{update:k,draw:_,destroy:A,regl:t,gl:m,canvas:m.canvas,groups:x}),b;function b(t){t?k(t):null===t&&A(),_()}function _(e){if(\"number\"==typeof e)return w(e);e&&!Array.isArray(e)&&(e=[e]),t._refresh(),x.forEach(function(t,r){t&&(e&&(e[r]?t.draw=!0:t.draw=!1),t.draw?w(r):t.draw=!0)})}function w(t){\"number\"==typeof t&&(t=x[t]),null!=t&&t&&t.count&&t.color&&t.opacity&&t.positions&&t.positions.length>1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function k(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map(function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a<r;a++)t[a]=n}if(t.length<r)throw Error(\"Not enough colors\");for(var o=new Uint8Array(4*r),s=0;s<r;s++){var l=i(t[s],\"uint8\");o.set(l,4*s)}return o},range:function(t,e,r){var n=e.bounds;return t||(t=n),e.scale=[1/(t[2]-t[0]),1/(t[3]-t[1])],e.translate=[-t[0],-t[1]],e.scaleFract=f(e.scale),e.translateFract=f(e.translate),t},viewport:function(t){var e;return Array.isArray(t)?e={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]}:t?(e={x:t.x||t.left||0,y:t.y||t.top||0},t.right?e.width=t.right-e.x:e.width=t.w||t.width||0,t.bottom?e.height=t.bottom-e.y:e.height=t.h||t.height||0):e={x:0,y:0,width:m.drawingBufferWidth,height:m.drawingBufferHeight},e}}]),u):u}),e||r){var h=x.reduce(function(t,e,r){return t+(e?e.count:0)},0),v=new Float64Array(2*h),_=new Uint8Array(4*h),w=new Float32Array(4*h);x.forEach(function(t,e){if(t){var r=t.positions,n=t.count,i=t.offset,a=t.color,o=t.errors;n&&(_.set(a,4*i),w.set(o,4*i),v.set(r,2*i))}}),c(u(v)),p(f(v)),d(_),g(w)}}}function A(){c.destroy(),p.destroy(),d.destroy(),g.destroy(),v.destroy()}};var h=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]]},{\"array-bounds\":54,\"color-normalize\":109,\"flatten-vertex-data\":217,\"object-assign\":440,\"pick-by-alias\":451,\"to-float32\":516,\"update-diff\":527}],477:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\"),i=t(\"array-bounds\"),a=t(\"object-assign\"),o=t(\"glslify\"),s=t(\"pick-by-alias\"),l=t(\"flatten-vertex-data\"),c=t(\"earcut\"),u=t(\"array-normalize\"),f=t(\"to-float32\"),h=f.float32,p=f.fract32,d=t(\"es6-weak-map\"),g=t(\"parse-rect\");function v(t,e){if(!(this instanceof v))return new v(t,e);if(\"function\"==typeof t?(e||(e={}),e.regl=t):e=t,e.length&&(e.positions=e),!(t=e.regl).hasExtension(\"ANGLE_instanced_arrays\"))throw Error(\"regl-error2d: `ANGLE_instanced_arrays` extension should be enabled\");this.gl=t._gl,this.regl=t,this.passes=[],this.shaders=v.shaders.has(t)?v.shaders.get(t):v.shaders.set(t,v.createShaders(t)).get(t),this.update(e)}e.exports=v,v.dashMult=2,v.maxPatternLength=256,v.precisionThreshold=3e6,v.maxPoints=1e4,v.maxLines=2048,v.shaders=new d,v.createShaders=function(t){var e,r=t.buffer({usage:\"static\",type:\"float\",data:[0,1,0,0,1,1,1,0]}),n={primitive:\"triangle strip\",instances:t.prop(\"count\"),count:4,offset:0,uniforms:{miterMode:function(t,e){return\"round\"===e.join?2:1},miterLimit:t.prop(\"miterLimit\"),scale:t.prop(\"scale\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),thickness:t.prop(\"thickness\"),dashPattern:t.prop(\"dashTexture\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),dashSize:t.prop(\"dashLength\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]},depth:t.prop(\"depth\")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:\"add\",alpha:\"add\"},func:{srcRGB:\"src alpha\",dstRGB:\"one minus src alpha\",srcAlpha:\"one minus dst alpha\",dstAlpha:\"one\"}},depth:{enable:function(t,e){return!e.overlay}},stencil:{enable:!1},scissor:{enable:!0,box:t.prop(\"viewport\")},viewport:t.prop(\"viewport\")},i=t(a({vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\\nattribute vec4 color;\\nattribute float lineEnd, lineTop;\\n\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float thickness, pixelRatio, id, depth;\\nuniform vec4 viewport;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\n\\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\\n\\t// the order is important\\n\\treturn position * scale + translate\\n       + positionFract * scale + translateFract\\n       + position * scaleFract\\n       + positionFract * scaleFract;\\n}\\n\\nvoid main() {\\n\\tfloat lineStart = 1. - lineEnd;\\n\\tfloat lineOffset = lineTop * 2. - 1.;\\n\\n\\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\\n\\ttangent = normalize(diff * scale * viewport.zw);\\n\\tvec2 normal = vec2(-tangent.y, tangent.x);\\n\\n\\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\\n\\t\\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\\n\\n\\t\\t+ thickness * normal * .5 * lineOffset / viewport.zw;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D dashPattern;\\n\\nuniform float dashSize, pixelRatio, thickness, opacity, id;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\n\\nvoid main() {\\n\\tfloat alpha = 1.;\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\\n\\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:16,divisor:1},color:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1}}},n));try{e=t(a({cull:{enable:!0,face:\"back\"},vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\\nattribute vec4 aColor, bColor;\\nattribute float lineEnd, lineTop;\\n\\nuniform vec2 scale, translate;\\nuniform float thickness, pixelRatio, id, depth;\\nuniform vec4 viewport;\\nuniform float miterLimit, miterMode;\\n\\nvarying vec4 fragColor;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 tangent;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nconst float REVERSE_THRESHOLD = -.875;\\nconst float MIN_DIFF = 1e-6;\\n\\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\\n// TODO: precalculate dot products, normalize things beforehead etc.\\n// TODO: refactor to rectangular algorithm\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nbool isNaN( float val ){\\n  return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\\n}\\n\\nvoid main() {\\n\\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\\n\\n  vec2 adjustedScale;\\n  adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\\n  adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\\n\\n  vec2 scaleRatio = adjustedScale * viewport.zw;\\n\\tvec2 normalWidth = thickness / scaleRatio;\\n\\n\\tfloat lineStart = 1. - lineEnd;\\n\\tfloat lineBot = 1. - lineTop;\\n\\n\\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\\n\\n\\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\\n\\n\\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\\n\\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\\n\\n\\tvec2 prevDiff = aCoord - prevCoord;\\n\\tvec2 currDiff = bCoord - aCoord;\\n\\tvec2 nextDiff = nextCoord - bCoord;\\n\\n\\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\\n\\tvec2 currTangent = normalize(currDiff * scaleRatio);\\n\\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\\n\\n\\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\\n\\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\\n\\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\\n\\n\\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\\n\\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\\n\\n\\t// collapsed/unidirectional segment cases\\n\\t// FIXME: there should be more elegant solution\\n\\tvec2 prevTanDiff = abs(prevTangent - currTangent);\\n\\tvec2 nextTanDiff = abs(nextTangent - currTangent);\\n\\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\\n\\t\\tstartJoinDirection = currNormal;\\n\\t}\\n\\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\\n\\t\\tendJoinDirection = currNormal;\\n\\t}\\n\\tif (aCoord == bCoord) {\\n\\t\\tendJoinDirection = startJoinDirection;\\n\\t\\tcurrNormal = prevNormal;\\n\\t\\tcurrTangent = prevTangent;\\n\\t}\\n\\n\\ttangent = currTangent;\\n\\n\\t//calculate join shifts relative to normals\\n\\tfloat startJoinShift = dot(currNormal, startJoinDirection);\\n\\tfloat endJoinShift = dot(currNormal, endJoinDirection);\\n\\n\\tfloat startMiterRatio = abs(1. / startJoinShift);\\n\\tfloat endMiterRatio = abs(1. / endJoinShift);\\n\\n\\tvec2 startJoin = startJoinDirection * startMiterRatio;\\n\\tvec2 endJoin = endJoinDirection * endMiterRatio;\\n\\n\\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\\n\\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\\n\\tstartBotJoin = -startTopJoin;\\n\\n\\tendTopJoin = sign(endJoinShift) * endJoin * .5;\\n\\tendBotJoin = -endTopJoin;\\n\\n\\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\\n\\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\\n\\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\\n\\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\\n\\n\\t//miter anti-clipping\\n\\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\\n\\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\\n\\n\\t//prevent close to reverse direction switch\\n\\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) <  length(normalWidth * currNormal);\\n\\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) <  length(normalWidth * currNormal);\\n\\n\\tif (prevReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\\n\\t\\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position  * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D dashPattern;\\nuniform float dashSize, pixelRatio, thickness, opacity, id, miterMode;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\\n\\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n       + positionFract * scale + translateFract\\n       + position * scaleFract\\n       + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach(function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold?t.shaders.rect(e):\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))}),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach(function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f<v.maxLines&&(d.depth=2*(v.maxLines-1-f%v.maxLines)/v.maxLines-1)),null!=t.join&&(d.join=t.join),null!=t.hole&&(d.hole=t.hole),null!=t.fill&&(d.fill=t.fill?n(t.fill,\"uint8\"):null),null!=t.viewport&&(d.viewport=g(t.viewport)),d.viewport||(d.viewport=g([o.drawingBufferWidth,o.drawingBufferHeight])),null!=t.close&&(d.close=t.close),null===t.positions&&(t.positions=[]),t.positions){var m,y;if(t.positions.x&&t.positions.y){var x=t.positions.x,b=t.positions.y;y=d.count=Math.max(x.length,b.length),m=new Float64Array(2*y);for(var _=0;_<y;_++)m[2*_]=x[_],m[2*_+1]=b[_]}else m=l(t.positions,\"float64\"),y=d.count=Math.floor(m.length/2);var w=d.bounds=i(m,2);if(d.fill){for(var k=[],A={},M=0,T=0,S=0,C=d.count;T<C;T++){var E=m[2*T],L=m[2*T+1];isNaN(E)||isNaN(L)||null==E||null==L?(E=m[2*M],L=m[2*M+1],A[T]=M):M=T,k[S++]=E,k[S++]=L}for(var z=c(k,d.hole||[]),O=0,I=z.length;O<I;O++)null!=A[z[O]]&&(z[O]=A[z[O]]);d.triangles=z}var D=new Float64Array(m);u(D,2,w);var P=new Float64Array(2*y+6);d.close?m[0]===m[2*y-2]&&m[1]===m[2*y-1]?(P[0]=D[2*y-4],P[1]=D[2*y-3]):(P[0]=D[2*y-2],P[1]=D[2*y-1]):(P[0]=D[0],P[1]=D[1]),P.set(D,2),d.close?m[0]===m[2*y-2]&&m[1]===m[2*y-1]?(P[2*y+2]=D[2],P[2*y+3]=D[3],d.count-=1):(P[2*y+2]=D[0],P[2*y+3]=D[1],P[2*y+4]=D[2],P[2*y+5]=D[3]):(P[2*y+2]=D[2*y-2],P[2*y+3]=D[2*y-1],P[2*y+4]=D[2*y-2],P[2*y+5]=D[2*y-1]),d.positionBuffer(h(P)),d.positionFractBuffer(p(P))}if(t.range?d.range=t.range:d.range||(d.range=d.bounds),(t.range||t.positions)&&d.count){var R=d.bounds,F=R[2]-R[0],B=R[3]-R[1],N=d.range[2]-d.range[0],j=d.range[3]-d.range[1];d.scale=[F/N,B/j],d.translate=[-d.range[0]/N+R[0]/N||0,-d.range[1]/j+R[1]/j||0],d.scaleFract=p(d.scale),d.translateFract=p(d.translate)}if(t.dashes){var V,U=0;if(!t.dashes||t.dashes.length<2)U=1,V=new Uint8Array([255,255,255,255,255,255,255,255]);else{U=0;for(var q=0;q<t.dashes.length;++q)U+=t.dashes[q];V=new Uint8Array(U*v.dashMult);for(var H=0,G=255,W=0;W<2;W++)for(var Y=0;Y<t.dashes.length;++Y){for(var X=0,Z=t.dashes[Y]*v.dashMult*.5;X<Z;++X)V[H++]=G;G^=255}}d.dashLength=U,d.dashTexture({channels:1,data:V,width:V.length,height:1,mag:\"linear\",min:\"linear\"},0,0)}if(t.color){var $=d.count,J=t.color;J||(J=\"transparent\");var K=new Uint8Array(4*$+4);if(Array.isArray(J)&&\"number\"!=typeof J[0]){for(var Q=0;Q<$;Q++){var tt=n(J[Q],\"uint8\");K.set(tt,4*Q)}K.set(n(J[0],\"uint8\"),4*$)}else for(var et=n(J,\"uint8\"),rt=0;rt<$+1;rt++)K.set(et,4*rt);d.colorBuffer({usage:\"dynamic\",type:\"uint8\",data:K})}}else e.passes[f]=null}),t.length<this.passes.length){for(var f=t.length;f<this.passes.length;f++){var d=e.passes[f];d&&(d.colorBuffer.destroy(),d.positionBuffer.destroy(),d.dashTexture.destroy())}this.passes.length=t.length}for(var m=[],y=0;y<this.passes.length;y++)null!==e.passes[y]&&m.push(e.passes[y]);return this.passes=m,this}},v.prototype.destroy=function(){return this.passes.forEach(function(t){t.colorBuffer.destroy(),t.positionBuffer.destroy(),t.dashTexture.destroy()}),this.passes.length=0,this}},{\"array-bounds\":54,\"array-normalize\":55,\"color-normalize\":109,earcut:157,\"es6-weak-map\":210,\"flatten-vertex-data\":217,glslify:395,\"object-assign\":440,\"parse-rect\":445,\"pick-by-alias\":451,\"to-float32\":516}],478:[function(t,e,r){\"use strict\";function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function i(t){return function(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e<t.length;e++)r[e]=t[e];return r}}(t)||function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}var a=t(\"color-normalize\"),o=t(\"array-bounds\"),s=t(\"color-id\"),l=t(\"point-cluster\"),c=t(\"object-assign\"),u=t(\"glslify\"),f=t(\"pick-by-alias\"),h=t(\"update-diff\"),p=t(\"flatten-vertex-data\"),d=t(\"is-iexplorer\"),g=t(\"to-float32\"),v=t(\"parse-rect\"),m=y;function y(t,e){var r=this;if(!(this instanceof y))return new y(t,e);\"function\"==typeof t?(e||(e={}),e.regl=t):(e=t,t=null),e&&e.length&&(e.positions=e);var n,i=(t=e.regl)._gl,a=[];this.tooManyColors=d,n=t.texture({data:new Uint8Array(1020),width:255,height:1,type:\"uint8\",format:\"rgba\",wrapS:\"clamp\",wrapT:\"clamp\",mag:\"nearest\",min:\"nearest\"}),c(this,{regl:t,gl:i,groups:[],markerCache:[null],markerTextures:[null],palette:a,paletteIds:{},paletteTexture:n,maxColors:255,maxSize:100,canvas:i.canvas}),this.update(e);var o={uniforms:{pixelRatio:t.context(\"pixelRatio\"),palette:n,paletteSize:function(t,e){return[r.tooManyColors?0:255,n.height]},scale:t.prop(\"scale\"),scaleFract:t.prop(\"scaleFract\"),translate:t.prop(\"translate\"),translateFract:t.prop(\"translateFract\"),opacity:t.prop(\"opacity\"),marker:t.prop(\"markerTexture\")},attributes:{x:function(t,e){return e.xAttr||{buffer:e.positionBuffer,stride:8,offset:0}},y:function(t,e){return e.yAttr||{buffer:e.positionBuffer,stride:8,offset:4}},xFract:function(t,e){return e.xAttr?{constant:[0,0]}:{buffer:e.positionFractBuffer,stride:8,offset:0}},yFract:function(t,e){return e.yAttr?{constant:[0,0]}:{buffer:e.positionFractBuffer,stride:8,offset:4}},size:function(t,e){return e.size.length?{buffer:e.sizeBuffer,stride:2,offset:0}:{constant:[Math.round(255*e.size/r.maxSize)]}},borderSize:function(t,e){return e.borderSize.length?{buffer:e.sizeBuffer,stride:2,offset:1}:{constant:[Math.round(255*e.borderSize/r.maxSize)]}},colorId:function(t,e){return e.color.length?{buffer:e.colorBuffer,stride:r.tooManyColors?8:4,offset:0}:{constant:r.tooManyColors?a.slice(4*e.color,4*e.color+4):[e.color]}},borderColorId:function(t,e){return e.borderColor.length?{buffer:e.colorBuffer,stride:r.tooManyColors?8:4,offset:r.tooManyColors?4:2}:{constant:r.tooManyColors?a.slice(4*e.borderColor,4*e.borderColor+4):[e.borderColor]}},isActive:function(t,e){return!0===e.activation?{constant:[1]}:e.activation?e.activation:{constant:[0]}}},blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:\"src alpha\",dstRGB:\"one minus src alpha\",srcAlpha:\"one minus dst alpha\",dstAlpha:\"one\"}},scissor:{enable:!0,box:t.prop(\"viewport\")},viewport:t.prop(\"viewport\"),stencil:{enable:!1},depth:{enable:!1},elements:t.prop(\"elements\"),count:t.prop(\"count\"),offset:t.prop(\"offset\"),primitive:\"points\"},s=c({},o);s.frag=u([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nuniform sampler2D marker;\\nuniform float pixelRatio, opacity;\\n\\nfloat smoothStep(float x, float y) {\\n  return 1.0 / (1.0 + exp(50.0*(x - y)));\\n}\\n\\nvoid main() {\\n  float dist = texture2D(marker, gl_PointCoord).r, delta = fragWidth;\\n\\n  // max-distance alpha\\n  if (dist < 0.003) discard;\\n\\n  // null-border case\\n  if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {\\n    float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);\\n    gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a * opacity);\\n  }\\n  else {\\n    float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);\\n    float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);\\n\\n    vec4 color = fragBorderColor;\\n    color.a *= borderColorAmt;\\n    color = mix(color, fragColor, colorAmt);\\n    color.a *= opacity;\\n\\n    gl_FragColor = color;\\n  }\\n\\n}\\n\"]),s.vert=u([\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform vec2 scale, scaleFract, translate, translateFract, paletteSize;\\nuniform float pixelRatio;\\nuniform sampler2D palette;\\n\\nconst float maxSize = 100.;\\nconst float borderLevel = .5;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragPointSize, fragBorderRadius, fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n  return isDirect ? id / 255. : texture2D(palette,\\n    vec2(\\n      (id.x + .5) / paletteSize.x,\\n      (id.y + .5) / paletteSize.y\\n    )\\n  );\\n}\\n\\nvoid main() {\\n  if (isActive == 0.) return;\\n\\n  vec2 position = vec2(x, y);\\n  vec2 positionFract = vec2(xFract, yFract);\\n\\n  vec4 color = getColor(colorId);\\n  vec4 borderColor = getColor(borderColorId);\\n\\n  float size = size * maxSize / 255.;\\n  float borderSize = borderSize * maxSize / 255.;\\n\\n  gl_PointSize = 2. * size * pixelRatio;\\n  fragPointSize = size * pixelRatio;\\n\\n  vec2 pos = (position + translate) * scale\\n      + (positionFract + translateFract) * scale\\n      + (position + translate) * scaleFract\\n      + (positionFract + translateFract) * scaleFract;\\n\\n  gl_Position = vec4(pos * 2. - 1., 0, 1);\\n\\n  fragColor = color;\\n  fragBorderColor = borderColor;\\n  fragWidth = 1. / gl_PointSize;\\n\\n  fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);\\n  fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);\\n}\"]),this.drawMarker=t(s);var l=c({},o);l.frag=u([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor, fragBorderColor;\\n\\nuniform float opacity;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat smoothStep(float edge0, float edge1, float x) {\\n\\tfloat t;\\n\\tt = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\\n\\treturn t * t * (3.0 - 2.0 * t);\\n}\\n\\nvoid main() {\\n\\tfloat radius, alpha = 1.0, delta = fragWidth;\\n\\n\\tradius = length(2.0 * gl_PointCoord.xy - 1.0);\\n\\n\\tif (radius > 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=u([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio;\\nuniform sampler2D palette;\\nuniform vec2 paletteSize;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n  return isDirect ? id / 255. : texture2D(palette,\\n    vec2(\\n      (id.x + .5) / paletteSize.x,\\n      (id.y + .5) / paletteSize.y\\n    )\\n  );\\n}\\n\\nvoid main() {\\n  // ignore inactive points\\n  if (isActive == 0.) return;\\n\\n  vec2 position = vec2(x, y);\\n  vec2 positionFract = vec2(xFract, yFract);\\n\\n  vec4 color = getColor(colorId);\\n  vec4 borderColor = getColor(borderColorId);\\n\\n  float size = size * maxSize / 255.;\\n  float borderSize = borderSize * maxSize / 255.;\\n\\n  gl_PointSize = (size + borderSize) * pixelRatio;\\n\\n  vec2 pos = (position + translate) * scale\\n      + (positionFract + translateFract) * scale\\n      + (position + translate) * scaleFract\\n      + (positionFract + translateFract) * scaleFract;\\n\\n  gl_Position = vec4(pos * 2. - 1., 0, 1);\\n\\n  fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n  fragColor = color;\\n  fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n  fragWidth = 1. / gl_PointSize;\\n}\\n\"]),d&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}y.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},y.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},y.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];var i=this.groups;if(1===r.length&&Array.isArray(r[0])&&(null===r[0][0]||Array.isArray(r[0][0]))&&(r=r[0]),this.regl._refresh(),r.length)for(var a=0;a<r.length;a++)this.drawItem(a,r[a]);else i.forEach(function(e,r){t.drawItem(r)});return this},y.prototype.drawItem=function(t,e){var r=this.groups,n=r[t];if(\"number\"==typeof e&&(t=e,n=r[e],e=null),n&&n.count&&n.opacity){n.activation[0]&&this.drawCircle(this.getMarkerDrawOptions(0,n,e));for(var a=[],o=1;o<n.activation.length;o++)n.activation[o]&&(!0===n.activation[o]||n.activation[o].data.length)&&a.push.apply(a,i(this.getMarkerDrawOptions(o,n,e)));a.length&&this.drawMarker(a)}},y.prototype.getMarkerDrawOptions=function(t,e,r){var i=e.range,a=e.tree,o=e.viewport,s=e.activation,l=e.selectionBuffer,u=e.count;this.regl;if(!a)return r?[c({},e,{markerTexture:this.markerTextures[t],activation:s[t],count:r.length,elements:r,offset:0})]:[c({},e,{markerTexture:this.markerTextures[t],activation:s[t],offset:0})];var f=[],h=a.range(i,{lod:!0,px:[(i[2]-i[0])/o.width,(i[3]-i[1])/o.height]});if(r){for(var p=s[t].data,d=new Uint8Array(u),g=0;g<r.length;g++){var v=r[g];d[v]=p?p[v]:1}l.subdata(d)}for(var m=h.length;m--;){var y=n(h[m],2),x=y[0],b=y[1];f.push(c({},e,{markerTexture:this.markerTextures[t],activation:r?l:s[t],offset:x,count:b-x}))}return f},y.prototype.update=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];if(r.length){1===r.length&&Array.isArray(r[0])&&(r=r[0]);var i=this.groups,a=this.gl,s=this.regl,u=this.maxSize,d=this.maxColors,m=this.palette;this.groups=i=r.map(function(e,r){var n=i[r];if(void 0===e)return n;null===e?e={positions:null}:\"function\"==typeof e?e={ondraw:e}:\"number\"==typeof e[0]&&(e={positions:e}),null===(e=f(e,{positions:\"positions data points\",snap:\"snap cluster lod tree\",size:\"sizes size radius\",borderSize:\"borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline\",color:\"colors color fill fill-color fillColor\",borderColor:\"borderColors borderColor stroke stroke-color strokeColor\",marker:\"markers marker shape\",range:\"range dataBox databox\",viewport:\"viewport viewPort viewBox viewbox\",opacity:\"opacity alpha transparency\",bounds:\"bound bounds boundaries limits\",tooManyColors:\"tooManyColors palette paletteMode optimizePalette enablePalette\"})).positions&&(e.positions=[]),null!=e.tooManyColors&&(t.tooManyColors=e.tooManyColors),n||(i[r]=n={id:r,scale:null,translate:null,scaleFract:null,translateFract:null,activation:[],selectionBuffer:s.buffer({data:new Uint8Array(0),usage:\"stream\",type:\"uint8\"}),sizeBuffer:s.buffer({data:new Uint8Array(0),usage:\"dynamic\",type:\"uint8\"}),colorBuffer:s.buffer({data:new Uint8Array(0),usage:\"dynamic\",type:\"uint8\"}),positionBuffer:s.buffer({data:new Uint8Array(0),usage:\"dynamic\",type:\"float\"}),positionFractBuffer:s.buffer({data:new Uint8Array(0),usage:\"dynamic\",type:\"float\"})},e=c({},y.defaults,e)),!e.positions||\"marker\"in e||(e.marker=n.marker,delete n.marker),!e.marker||\"positions\"in e||(e.positions=n.positions,delete n.positions);var x=0,b=0;if(h(n,e,[{snap:!0,size:function(t,e){return null==t&&(t=y.defaults.size),x+=t&&t.length?1:0,t},borderSize:function(t,e){return null==t&&(t=y.defaults.borderSize),x+=t&&t.length?1:0,t},opacity:parseFloat,color:function(e,r){return null==e&&(e=y.defaults.color),e=t.updateColor(e),b++,e},borderColor:function(e,r){return null==e&&(e=y.defaults.borderColor),e=t.updateColor(e),b++,e},bounds:function(t,e,r){return\"range\"in r||(r.range=null),t},positions:function(t,e,r){var n=e.snap,i=e.positionBuffer,a=e.positionFractBuffer,c=e.selectionBuffer;if(t.x||t.y)return t.x.length?e.xAttr={buffer:s.buffer(t.x),offset:0,stride:4,count:t.x.length}:e.xAttr={buffer:t.x.buffer,offset:4*t.x.offset||0,stride:4*(t.x.stride||1),count:t.x.count},t.y.length?e.yAttr={buffer:s.buffer(t.y),offset:0,stride:4,count:t.y.length}:e.yAttr={buffer:t.y.buffer,offset:4*t.y.offset||0,stride:4*(t.y.stride||1),count:t.y.count},e.count=Math.max(e.xAttr.count,e.yAttr.count),t;t=p(t,\"float64\");var u=e.count=Math.floor(t.length/2),f=e.bounds=u?o(t,2):null;if(r.range||e.range||(delete e.range,r.range=f),r.marker||e.marker||(delete e.marker,r.marker=null),n&&(!0===n||u>n)?e.tree=l(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=s.elements(h)}return i({data:g.float(t),usage:\"dynamic\"}),a({data:g.fract(t),usage:\"dynamic\"}),c({data:new Uint8Array(u),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach(function(t){return t&&t.destroy&&t.destroy()}),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],o=0,l=Math.min(e.length,r.count);o<l;o++){var c=t.addMarker(e[o]);a[c]||(a[c]=new Uint8Array(r.count)),a[c][o]=1}for(var u=0;u<a.length;u++)if(a[u]){var f={data:a[u],type:\"uint8\",usage:\"static\"};i[u]?i[u](f):i[u]=s.buffer(f),i[u].data=a[u]}}else{i[t.addMarker(e)]=!0}return e},range:function(t,e,r){var n=e.bounds;if(n)return t||(t=n),e.scale=[1/(t[2]-t[0]),1/(t[3]-t[1])],e.translate=[-t[0],-t[1]],e.scaleFract=g.fract(e.scale),e.translateFract=g.fract(e.translate),t},viewport:function(t){return v(t||[a.drawingBufferWidth,a.drawingBufferHeight])}}]),x){var _=n,w=_.count,k=_.size,A=_.borderSize,M=_.sizeBuffer,T=new Uint8Array(2*w);if(k.length||A.length)for(var S=0;S<w;S++)T[2*S]=Math.round(255*(null==k[S]?k:k[S])/u),T[2*S+1]=Math.round(255*(null==A[S]?A:A[S])/u);M({data:T,usage:\"dynamic\"})}if(b){var C,E=n,L=E.count,z=E.color,O=E.borderColor,I=E.colorBuffer;if(t.tooManyColors){if(z.length||O.length){C=new Uint8Array(8*L);for(var D=0;D<L;D++){var P=z[D];C[8*D]=m[4*P],C[8*D+1]=m[4*P+1],C[8*D+2]=m[4*P+2],C[8*D+3]=m[4*P+3];var R=O[D];C[8*D+4]=m[4*R],C[8*D+5]=m[4*R+1],C[8*D+6]=m[4*R+2],C[8*D+7]=m[4*R+3]}}}else if(z.length||O.length){C=new Uint8Array(4*L+2);for(var F=0;F<L;F++)null!=z[F]&&(C[4*F]=z[F]%d,C[4*F+1]=Math.floor(z[F]/d)),null!=O[F]&&(C[4*F+2]=O[F]%d,C[4*F+3]=Math.floor(O[F]/d))}I({data:C||new Uint8Array(0),type:\"uint8\",usage:\"dynamic\"})}return n})}},y.prototype.addMarker=function(t){var e,r=this.markerTextures,n=this.regl,i=this.markerCache,a=null==t?0:i.indexOf(t);if(a>=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o<s;o++)e[o]=255*t[o]}var l=Math.floor(Math.sqrt(e.length));return a=r.length,i.push(t),r.push(n.texture({channels:1,data:e,radius:l,mag:\"linear\",min:\"linear\"})),a},y.prototype.updateColor=function(t){var e=this.paletteIds,r=this.palette,n=this.maxColors;Array.isArray(t)||(t=[t]);var i=[];if(\"number\"==typeof t[0]){var o=[];if(Array.isArray(t))for(var l=0;l<t.length;l+=4)o.push(t.slice(l,l+4));else for(var c=0;c<t.length;c+=4)o.push(t.subarray(c,c+4));t=o}for(var u=0;u<t.length;u++){var f=t[u];f=a(f,\"uint8\");var h=s(f,!1);if(null==e[h]){var p=r.length;e[h]=Math.floor(p/4),r[p]=f[0],r[p+1]=f[1],r[p+2]=f[2],r[p+3]=f[3]}i[u]=e[h]}return!this.tooManyColors&&r.length>4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},y.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i<n*e;i++)t.push(0,0,0,0);r.height<n&&r.resize(e,n),r.subimage({width:Math.min(.25*t.length,e),height:n,data:t},0,0)}},y.prototype.destroy=function(){return this.groups.forEach(function(t){t.sizeBuffer.destroy(),t.positionBuffer.destroy(),t.positionFractBuffer.destroy(),t.colorBuffer.destroy(),t.activation.forEach(function(t){return t&&t.destroy&&t.destroy()}),t.selectionBuffer.destroy(),t.elements&&t.elements.destroy()}),this.groups.length=0,this.paletteTexture.destroy(),this.markerTextures.forEach(function(t){return t&&t.destroy&&t.destroy()}),this};var x=t(\"object-assign\");e.exports=function(t,e){var r=new m(t,e),n=r.render.bind(r);return x(n,{render:n,update:r.update.bind(r),draw:r.draw.bind(r),destroy:r.destroy.bind(r),regl:r.regl,gl:r.gl,canvas:r.gl.canvas,groups:r.groups,markers:r.markerCache,palette:r.palette}),n}},{\"array-bounds\":54,\"color-id\":107,\"color-normalize\":109,\"flatten-vertex-data\":217,glslify:395,\"is-iexplorer\":405,\"object-assign\":440,\"parse-rect\":445,\"pick-by-alias\":451,\"point-cluster\":455,\"to-float32\":516,\"update-diff\":527}],479:[function(t,e,r){\"use strict\";var n=t(\"regl-scatter2d\"),i=t(\"pick-by-alias\"),a=t(\"array-bounds\"),o=t(\"raf\"),s=t(\"array-range\"),l=t(\"parse-rect\"),c=t(\"flatten-vertex-data\");function u(t,e){if(!(this instanceof u))return new u(t,e);this.traces=[],this.passes={},this.regl=t,this.scatter=n(t),this.canvas=this.scatter.canvas}function f(t,e,r){return(null!=t.id?t.id:t)<<16|(255&e)<<8|255&r}function h(t,e,r){var n,i,a,o,s=t[e],l=t[r];return s.length>2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o(function(){e.draw(),e.dirty=!0,e.planned=null})):(this.draw(),this.dirty=!0,o(function(){e.dirty=!1})),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;n<e.length;n++)this.updateItem(n,e[n]);this.traces=this.traces.filter(Boolean);for(var i=[],a=0,o=0;o<this.traces.length;o++){for(var s=this.traces[o],l=this.traces[o].passes,c=0;c<l.length;c++)i.push(this.passes[l[c]]);s.passOffset=a,a+=s.passes.length}return(t=this.scatter).update.apply(t,i),this}},u.prototype.updateItem=function(t,e){var r=this.regl;if(null===e)return this.traces[t]=null,this;if(!e)return this;var n,o=i(e,{data:\"data items columns rows values dimensions samples x\",snap:\"snap cluster\",size:\"sizes size radius\",color:\"colors color fill fill-color fillColor\",opacity:\"opacity alpha transparency opaque\",borderSize:\"borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline\",borderColor:\"borderColors borderColor bordercolor stroke stroke-color strokeColor\",marker:\"markers marker shape\",range:\"range ranges databox dataBox\",viewport:\"viewport viewBox viewbox\",domain:\"domain domains area areas\",padding:\"pad padding paddings pads margin margins\",transpose:\"transpose transposed\",diagonal:\"diagonal diag showDiagonal\",upper:\"upper up top upperhalf upperHalf showupperhalf showUpper showUpperHalf\",lower:\"lower low bottom lowerhalf lowerHalf showlowerhalf showLowerHalf showLower\"}),s=this.traces[t]||(this.traces[t]={id:t,buffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),color:\"black\",marker:null,size:12,borderColor:\"transparent\",borderSize:1,viewport:l([r._gl.drawingBufferWidth,r._gl.drawingBufferHeight]),padding:[0,0,0,0],opacity:1,diagonal:!0,upper:!0,lower:!0});if(null!=o.color&&(s.color=o.color),null!=o.size&&(s.size=o.size),null!=o.marker&&(s.marker=o.marker),null!=o.borderColor&&(s.borderColor=o.borderColor),null!=o.borderSize&&(s.borderSize=o.borderSize),null!=o.opacity&&(s.opacity=o.opacity),o.viewport&&(s.viewport=l(o.viewport)),null!=o.diagonal&&(s.diagonal=o.diagonal),null!=o.upper&&(s.upper=o.upper),null!=o.lower&&(s.lower=o.lower),o.data){s.buffer(c(o.data)),s.columns=o.data.length,s.count=o.data[0].length,s.bounds=[];for(var u=0;u<s.columns;u++)s.bounds[u]=a(o.data[u],1)}o.range&&(s.range=o.range,n=s.range&&\"number\"!=typeof s.range[0]),o.domain&&(s.domain=o.domain);var d=!1;null!=o.padding&&(Array.isArray(o.padding)&&o.padding.length===s.columns&&\"number\"==typeof o.padding[o.padding.length-1]?(s.padding=o.padding.map(p),d=!0):s.padding=p(o.padding));var g=s.columns,v=s.count,m=s.viewport.width,y=s.viewport.height,x=s.viewport.x,b=s.viewport.y,_=m/g,w=y/g;s.passes=[];for(var k=0;k<g;k++)for(var A=0;A<g;A++)if((s.diagonal||A!==k)&&(s.upper||!(k>A))&&(s.lower||!(k<A))){var M=f(s.id,k,A),T=this.passes[M]||(this.passes[M]={});if(o.data&&(o.transpose?T.positions={x:{buffer:s.buffer,offset:A,count:v,stride:g},y:{buffer:s.buffer,offset:k,count:v,stride:g}}:T.positions={x:{buffer:s.buffer,offset:A*v,count:v},y:{buffer:s.buffer,offset:k*v,count:v}},T.bounds=h(s.bounds,k,A)),o.domain||o.viewport||o.data){var S=d?h(s.padding,k,A):s.padding;if(s.domain){var C=h(s.domain,k,A),E=C[0],L=C[1],z=C[2],O=C[3];T.viewport=[x+E*m+S[0],b+L*y+S[1],x+z*m-S[2],b+O*y-S[3]]}else T.viewport=[x+A*_+_*S[0],b+k*w+w*S[1],x+(A+1)*_-_*S[2],b+(k+1)*w-w*S[3]]}o.color&&(T.color=s.color),o.size&&(T.size=s.size),o.marker&&(T.marker=s.marker),o.borderSize&&(T.borderSize=s.borderSize),o.borderColor&&(T.borderColor=s.borderColor),o.opacity&&(T.opacity=s.opacity),o.range&&(T.range=n?h(s.range,k,A):s.range||T.bounds),s.passes.push(M)}return this},u.prototype.draw=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=[],i=0;i<e.length;i++)if(\"number\"==typeof e[i]){var a=this.traces[e[i]],o=a.passes,l=a.passOffset;n.push.apply(n,s(l,l+o.length))}else if(e[i].length){var c=e[i],u=this.traces[i],f=u.passes,h=u.passOffset;f=f.map(function(t,e){n[h+e]=c})}(t=this.scatter).draw.apply(t,n)}else this.scatter.draw();return this},u.prototype.destroy=function(){return this.traces.forEach(function(t){t.buffer&&t.buffer.destroy&&t.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this}},{\"array-bounds\":54,\"array-range\":56,\"flatten-vertex-data\":217,\"parse-rect\":445,\"pick-by-alias\":451,raf:470,\"regl-scatter2d\":478}],480:[function(t,e,r){var n,i;n=this,i=function(){function t(t,e){this.id=V++,this.type=t,this.data=e}function e(t){return\"[\"+function t(e){if(0===e.length)return[];var r=e.charAt(0),n=e.charAt(e.length-1);if(1<e.length&&r===n&&('\"'===r||\"'\"===r))return['\"'+e.substr(1,e.length-2).replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'];if(r=/\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(e))return t(e.substr(0,r.index)).concat(t(r[1])).concat(t(e.substr(r.index+r[0].length)));if(1===(r=e.split(\".\")).length)return['\"'+e.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'];for(e=[],n=0;n<r.length;++n)e=e.concat(t(r[n]));return e}(t).join(\"][\")+\"]\"}function r(t){return\"string\"==typeof t?t.split():t}function n(t){return\"string\"==typeof t?document.querySelector(t):t}function i(t){var e,i,a,o,s=t||{};t={};var l=[],c=[],u=\"undefined\"==typeof window?1:window.devicePixelRatio,f=!1,h=function(t){},p=function(){};if(\"string\"==typeof s?e=document.querySelector(s):\"object\"==typeof s&&(\"string\"==typeof s.nodeName&&\"function\"==typeof s.appendChild&&\"function\"==typeof s.getBoundingClientRect?e=s:\"function\"==typeof s.drawArrays||\"function\"==typeof s.drawElements?a=(o=s).canvas:(\"gl\"in s?o=s.gl:\"canvas\"in s?a=n(s.canvas):\"container\"in s&&(i=n(s.container)),\"attributes\"in s&&(t=s.attributes),\"extensions\"in s&&(l=r(s.extensions)),\"optionalExtensions\"in s&&(c=r(s.optionalExtensions)),\"onDone\"in s&&(h=s.onDone),\"profile\"in s&&(f=!!s.profile),\"pixelRatio\"in s&&(u=+s.pixelRatio))),e&&(\"canvas\"===e.nodeName.toLowerCase()?a=e:i=e),!o){if(!a){if(!(e=function(t,e,r){function n(){var e=window.innerWidth,n=window.innerHeight;t!==document.body&&(e=(n=t.getBoundingClientRect()).right-n.left,n=n.bottom-n.top),i.width=r*e,i.height=r*n,j(i.style,{width:e+\"px\",height:n+\"px\"})}var i=document.createElement(\"canvas\");return j(i.style,{border:0,margin:0,padding:0,top:0,left:0}),t.appendChild(i),t===document.body&&(i.style.position=\"absolute\",j(t.style,{margin:0,padding:0})),window.addEventListener(\"resize\",n,!1),n(),{canvas:i,onDestroy:function(){window.removeEventListener(\"resize\",n),t.removeChild(i)}}}(i||document.body,0,u)))return null;a=e.canvas,p=e.onDestroy}o=function(t,e){function r(r){try{return t.getContext(r,e)}catch(t){return null}}return r(\"webgl\")||r(\"experimental-webgl\")||r(\"webgl-experimental\")}(a,t)}return o?{gl:o,canvas:a,container:i,extensions:l,optionalExtensions:c,pixelRatio:u,profile:f,onDone:h,onDestroy:p}:(p(),h(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\"),null)}function a(t,e){for(var r=Array(t),n=0;n<t;++n)r[n]=e(n);return r}function o(t){var e,r;return e=(65535<t)<<4,e|=r=(255<(t>>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,function(){return[]});return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||Y(t.data))}function c(t,e,r,n,i,a){for(var o=0;o<e;++o)for(var s=t[o],l=0;l<r;++l)for(var c=s[l],u=0;u<n;++u)i[a++]=c[u]}function u(t){return 0|$[Object.prototype.toString.call(t)]}function f(t,e){for(var r=0;r<e.length;++r)t[r]=e[r]}function h(t,e,r,n,i,a,o){for(var s=0,l=0;l<r;++l)for(var c=0;c<n;++c)t[s++]=e[i*l+a*c+o]}function p(t,e,r,n){function i(e){this.id=c++,this.buffer=t.createBuffer(),this.type=e,this.usage=35044,this.byteLength=0,this.dimension=1,this.dtype=5121,this.persistentData=null,r.profile&&(this.stats={size:0})}function a(e,r,n){e.byteLength=r.byteLength,t.bufferData(e.type,r,n)}function o(t,e,r,n,i,o){if(t.usage=r,Array.isArray(e)){if(t.dtype=n||5126,0<e.length)if(Array.isArray(e[0])){i=tt(e);for(var s=n=1;s<i.length;++s)n*=i[s];t.dimension=n,a(t,e=Q(e,i,t.dtype),r),o?t.persistentData=e:G.freeType(e)}else\"number\"==typeof e[0]?(t.dimension=i,f(i=G.allocType(t.dtype,e.length),e),a(t,i,r),o?t.persistentData=i:G.freeType(i)):Y(e[0])&&(t.dimension=e[0].length,t.dtype=n||u(e[0])||5126,a(t,e=Q(e,[e.length,e[0].length],t.dtype),r),o?t.persistentData=e:G.freeType(e))}else if(Y(e))t.dtype=n||u(e),t.dimension=i,a(t,e,r),o&&(t.persistentData=new Uint8Array(new Uint8Array(e.buffer)));else if(l(e)){i=e.shape;var c=e.stride,p=(s=e.offset,0),d=0,g=0,v=0;1===i.length?(p=i[0],d=1,g=c[0],v=0):2===i.length&&(p=i[0],d=i[1],g=c[0],v=c[1]),t.dtype=n||u(e.data)||5126,t.dimension=d,h(i=G.allocType(t.dtype,p*d),e.data,p,d,g,v,s),a(t,i,r),o?t.persistentData=i:G.freeType(i)}}function s(r){e.bufferCount--;for(var i=0;i<n.state.length;++i){var a=n.state[i];a.buffer===r&&(t.disableVertexAttribArray(i),a.buffer=null)}t.deleteBuffer(r.buffer),r.buffer=null,delete p[r.id]}var c=0,p={};i.prototype.bind=function(){t.bindBuffer(this.type,this.buffer)},i.prototype.destroy=function(){s(this)};var d=[];return r.profile&&(e.getTotalBufferSize=function(){var t=0;return Object.keys(p).forEach(function(e){t+=p[e].stats.size}),t}),{create:function(n,a,c,d){function g(e){var n=35044,i=null,a=0,s=0,c=1;return Array.isArray(e)||Y(e)||l(e)?i=e:\"number\"==typeof e?a=0|e:e&&(\"data\"in e&&(i=e.data),\"usage\"in e&&(n=K[e.usage]),\"type\"in e&&(s=J[e.type]),\"dimension\"in e&&(c=0|e.dimension),\"length\"in e&&(a=0|e.length)),v.bind(),i?o(v,i,n,s,c,d):(a&&t.bufferData(v.type,a,n),v.dtype=s||5121,v.usage=n,v.dimension=c,v.byteLength=a),r.profile&&(v.stats.size=v.byteLength*et[v.dtype]),g}e.bufferCount++;var v=new i(a);return p[v.id]=v,c||g(n),g._reglType=\"buffer\",g._buffer=v,g.subdata=function(e,r){var n,i=0|(r||0);if(v.bind(),Y(e))t.bufferSubData(v.type,i,e);else if(Array.isArray(e)){if(0<e.length)if(\"number\"==typeof e[0]){var a=G.allocType(v.dtype,e.length);f(a,e),t.bufferSubData(v.type,i,a),G.freeType(a)}else(Array.isArray(e[0])||Y(e[0]))&&(n=tt(e),a=Q(e,n,v.dtype),t.bufferSubData(v.type,i,a),G.freeType(a))}else if(l(e)){n=e.shape;var o=e.stride,s=a=0,c=0,p=0;1===n.length?(a=n[0],s=1,c=o[0],p=0):2===n.length&&(a=n[0],s=n[1],c=o[0],p=o[1]),n=Array.isArray(e.data)?v.dtype:u(e.data),h(n=G.allocType(n,a*s),e.data,a,s,c,p,e.offset),t.bufferSubData(v.type,i,n),G.freeType(n)}return g},r.profile&&(g.stats=v.stats),g.destroy=function(){s(v)},g},createStream:function(t,e){var r=d.pop();return r||(r=new i(t)),r.bind(),o(r,e,35040,0,1,!1),r},destroyStream:function(t){d.push(t)},clear:function(){X(p).forEach(s),d.forEach(s)},getBuffer:function(t){return t&&t._buffer instanceof i?t._buffer:null},restore:function(){X(p).forEach(function(e){e.buffer=t.createBuffer(),t.bindBuffer(e.type,e.buffer),t.bufferData(e.type,e.persistentData||e.byteLength,e.usage)})},_initBuffer:o}}function d(t,e,r,n){function i(t){this.id=c++,s[this.id]=this,this.buffer=t,this.primType=4,this.type=this.vertCount=0}function a(n,i,a,o,s,c,u){if(n.buffer.bind(),i){var f=u;u||Y(i)&&(!l(i)||Y(i.data))||(f=e.oes_element_index_uint?5125:5123),r._initBuffer(n.buffer,i,a,f,3)}else t.bufferData(34963,c,a),n.buffer.dtype=f||5121,n.buffer.usage=a,n.buffer.dimension=3,n.buffer.byteLength=c;if(f=u,!u){switch(n.buffer.dtype){case 5121:case 5120:f=5121;break;case 5123:case 5122:f=5123;break;case 5125:case 5124:f=5125}n.buffer.dtype=f}n.type=f,0>(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||Y(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=K[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r<t.length;++r)if(isNaN(t[r]))e[r]=65535;else if(1/0===t[r])e[r]=31744;else if(-1/0===t[r])e[r]=64512;else{nt[0]=t[r];var n=(a=it[0])>>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15<i?n+31744:n+(i+15<<10)+a}return e}function v(t){return Array.isArray(t)||Y(t)}function m(t){return\"[object \"+t+\"]\"}function y(t){return Array.isArray(t)&&(0===t.length||\"number\"==typeof t[0])}function x(t){return!(!Array.isArray(t)||0===t.length||!v(t[0]))}function b(t){return Object.prototype.toString.call(t)}function _(t){if(!t)return!1;var e=b(t);return 0<=pt.indexOf(e)||(y(t)||x(t)||l(t))}function w(t,e){36193===t.type?(t.data=g(e),G.freeType(e)):t.data=e}function k(t,e,r,n,i,a){if(t=\"undefined\"!=typeof gt[t]?gt[t]:st[t]*dt[e],a&&(t*=6),i){for(n=0;1<=r;)n+=t*r*r,r/=2;return n}return t*r*n}function A(t,e,r,n,i,a,o){function s(){this.format=this.internalformat=6408,this.type=5121,this.flipY=this.premultiplyAlpha=this.compressed=!1,this.unpackAlignment=1,this.colorSpace=37444,this.channels=this.height=this.width=0}function c(t,e){t.internalformat=e.internalformat,t.format=e.format,t.type=e.type,t.compressed=e.compressed,t.premultiplyAlpha=e.premultiplyAlpha,t.flipY=e.flipY,t.unpackAlignment=e.unpackAlignment,t.colorSpace=e.colorSpace,t.width=e.width,t.height=e.height,t.channels=e.channels}function u(t,e){if(\"object\"==typeof e&&e){\"premultiplyAlpha\"in e&&(t.premultiplyAlpha=e.premultiplyAlpha),\"flipY\"in e&&(t.flipY=e.flipY),\"alignment\"in e&&(t.unpackAlignment=e.alignment),\"colorSpace\"in e&&(t.colorSpace=q[e.colorSpace]),\"type\"in e&&(t.type=H[e.type]);var r=t.width,n=t.height,i=t.channels,a=!1;\"shape\"in e?(r=e.shape[0],n=e.shape[1],3===e.shape.length&&(i=e.shape[2],a=!0)):(\"radius\"in e&&(r=n=e.radius),\"width\"in e&&(r=e.width),\"height\"in e&&(n=e.height),\"channels\"in e&&(i=e.channels,a=!0)),t.width=0|r,t.height=0|n,t.channels=0|i,r=!1,\"format\"in e&&(r=e.format,n=t.internalformat=W[r],t.format=pt[n],r in H&&!(\"type\"in e)&&(t.type=H[r]),r in J&&(t.compressed=!0),r=!0),!a&&r?t.channels=st[t.format]:a&&!r&&t.channels!==ot[t.format]&&(t.format=t.internalformat=ot[t.channels])}}function f(e){t.pixelStorei(37440,e.flipY),t.pixelStorei(37441,e.premultiplyAlpha),t.pixelStorei(37443,e.colorSpace),t.pixelStorei(3317,e.unpackAlignment)}function h(){s.call(this),this.yOffset=this.xOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function p(t,e){var r=null;if(_(e)?r=e:e&&(u(t,e),\"x\"in e&&(t.xOffset=0|e.x),\"y\"in e&&(t.yOffset=0|e.y),_(e.data)&&(r=e.data)),e.copy){var n=i.viewportWidth,a=i.viewportHeight;t.width=t.width||n-t.xOffset,t.height=t.height||a-t.yOffset,t.needsCopy=!0}else if(r){if(Y(r))t.channels=t.channels||4,t.data=r,\"type\"in e||5121!==t.type||(t.type=0|$[Object.prototype.toString.call(r)]);else if(y(r)){switch(t.channels=t.channels||4,a=(n=r).length,t.type){case 5121:case 5123:case 5125:case 5126:(a=G.allocType(t.type,a)).set(n),t.data=a;break;case 36193:t.data=g(n)}t.alignment=1,t.needsFree=!0}else if(l(r)){n=r.data,Array.isArray(n)||5121!==t.type||(t.type=0|$[Object.prototype.toString.call(n)]);a=r.shape;var o,s,c,f,h=r.stride;3===a.length?(c=a[2],f=h[2]):f=c=1,o=a[0],s=a[1],a=h[0],h=h[1],t.alignment=1,t.width=o,t.height=s,t.channels=c,t.format=t.internalformat=ot[c],t.needsFree=!0,o=f,r=r.offset,c=t.width,f=t.height,s=t.channels;for(var p=G.allocType(36193===t.type?5126:t.type,c*f*s),d=0,m=0;m<f;++m)for(var k=0;k<c;++k)for(var A=0;A<s;++A)p[d++]=n[a*k+h*m+o*A+r];w(t,p)}else if(b(r)===lt||b(r)===ct)b(r)===lt?t.element=r:t.element=r.canvas,t.width=t.element.width,t.height=t.element.height,t.channels=4;else if(b(r)===ut)t.element=r,t.width=r.width,t.height=r.height,t.channels=4;else if(b(r)===ft)t.element=r,t.width=r.naturalWidth,t.height=r.naturalHeight,t.channels=4;else if(b(r)===ht)t.element=r,t.width=r.videoWidth,t.height=r.videoHeight,t.channels=4;else if(x(r)){for(n=t.width||r[0].length,a=t.height||r.length,h=t.channels,h=v(r[0][0])?h||r[0][0].length:h||1,o=Z.shape(r),c=1,f=0;f<o.length;++f)c*=o[f];c=G.allocType(36193===t.type?5126:t.type,c),Z.flatten(r,o,\"\",c),w(t,c),t.alignment=1,t.width=n,t.height=a,t.channels=h,t.format=t.internalformat=ot[h],t.needsFree=!0}}else t.width=t.width||1,t.height=t.height||1,t.channels=t.channels||4}function d(e,r,i,a,o){var s=e.element,l=e.data,c=e.internalformat,u=e.format,h=e.type,p=e.width,d=e.height;f(e),s?t.texSubImage2D(r,o,i,a,u,h,s):e.compressed?t.compressedTexSubImage2D(r,o,i,a,c,p,d,l):e.needsCopy?(n(),t.copyTexSubImage2D(r,o,i,a,e.xOffset,e.yOffset,p,d)):t.texSubImage2D(r,o,i,a,p,d,u,h,l)}function m(){return dt.pop()||new h}function A(t){t.needsFree&&G.freeType(t.data),h.call(t),dt.push(t)}function M(){s.call(this),this.genMipmaps=!1,this.mipmapHint=4352,this.mipmask=0,this.images=Array(16)}function T(t,e,r){var n=t.images[0]=m();t.mipmask=1,n.width=t.width=e,n.height=t.height=r,n.channels=t.channels=4}function S(t,e){var r=null;if(_(e))c(r=t.images[0]=m(),t),p(r,e),t.mipmask=1;else if(u(t,e),Array.isArray(e.mipmap))for(var n=e.mipmap,i=0;i<n.length;++i)c(r=t.images[i]=m(),t),r.width>>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<<i;else c(r=t.images[0]=m(),t),p(r,e),t.mipmask=1;c(t,t.images[0])}function C(e,r){for(var i=e.images,a=0;a<i.length&&i[a];++a){var o=i[a],s=r,l=a,c=o.element,u=o.data,h=o.internalformat,p=o.format,d=o.type,g=o.width,v=o.height,m=o.channels;f(o),c?t.texImage2D(s,l,p,p,d,c):o.compressed?t.compressedTexImage2D(s,l,h,g,v,0,u):o.needsCopy?(n(),t.copyTexImage2D(s,l,p,o.xOffset,o.yOffset,g,v,0)):((o=!u)&&(u=G.zero.allocType(d,g*v*m)),t.texImage2D(s,l,p,g,v,0,p,d,u),o&&u&&G.zero.freeType(u))}}function E(){var t=gt.pop()||new M;s.call(t);for(var e=t.mipmask=0;16>e;++e)t.images[e]=null;return t}function L(t){for(var e=t.images,r=0;r<e.length;++r)e[r]&&A(e[r]),e[r]=null;gt.push(t)}function z(){this.magFilter=this.minFilter=9728,this.wrapT=this.wrapS=33071,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=4352}function O(t,e){\"min\"in e&&(t.minFilter=U[e.min],0<=at.indexOf(t.minFilter)&&!(\"faces\"in e)&&(t.genMipmaps=!0)),\"mag\"in e&&(t.magFilter=V[e.mag]);var r=t.wrapS,n=t.wrapT;if(\"wrap\"in e){var i=e.wrap;\"string\"==typeof i?r=n=N[i]:Array.isArray(i)&&(r=N[i[0]],n=N[i[1]])}else\"wrapS\"in e&&(r=N[e.wrapS]),\"wrapT\"in e&&(n=N[e.wrapT]);if(t.wrapS=r,t.wrapT=n,\"anisotropic\"in e&&(t.anisotropic=e.anisotropic),\"mipmap\"in e){switch(r=!1,typeof e.mipmap){case\"string\":t.mipmapHint=B[e.mipmap],r=t.genMipmaps=!0;break;case\"boolean\":r=t.genMipmaps=e.mipmap;break;case\"object\":t.genMipmaps=!1,r=!0}!r||\"min\"in e||(t.minFilter=9984)}}function I(r,n){t.texParameteri(n,10241,r.minFilter),t.texParameteri(n,10240,r.magFilter),t.texParameteri(n,10242,r.wrapS),t.texParameteri(n,10243,r.wrapT),e.ext_texture_filter_anisotropic&&t.texParameteri(n,34046,r.anisotropic),r.genMipmaps&&(t.hint(33170,r.mipmapHint),t.generateMipmap(n))}function D(e){s.call(this),this.mipmask=0,this.internalformat=6408,this.id=vt++,this.refCount=1,this.target=e,this.texture=t.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new z,o.profile&&(this.stats={size:0})}function P(e){t.activeTexture(33984),t.bindTexture(e.target,e.texture)}function R(){var e=xt[0];e?t.bindTexture(e.target,e.texture):t.bindTexture(3553,null)}function F(e){var r=e.texture,n=e.unit,i=e.target;0<=n&&(t.activeTexture(33984+n),t.bindTexture(i,null),xt[n]=null),t.deleteTexture(r),e.texture=null,e.params=null,e.pixels=null,e.refCount=0,delete mt[e.id],a.textureCount--}var B={\"don't care\":4352,\"dont care\":4352,nice:4354,fast:4353},N={repeat:10497,clamp:33071,mirror:33648},V={nearest:9728,linear:9729},U=j({mipmap:9987,\"nearest mipmap nearest\":9984,\"linear mipmap nearest\":9985,\"nearest mipmap linear\":9986,\"linear mipmap linear\":9987},V),q={none:0,browser:37444},H={uint8:5121,rgba4:32819,rgb565:33635,\"rgb5 a1\":32820},W={alpha:6406,luminance:6409,\"luminance alpha\":6410,rgb:6407,rgba:6408,rgba4:32854,\"rgb5 a1\":32855,rgb565:36194},J={};e.ext_srgb&&(W.srgb=35904,W.srgba=35906),e.oes_texture_float&&(H.float32=H.float=5126),e.oes_texture_half_float&&(H.float16=H[\"half float\"]=36193),e.webgl_depth_texture&&(j(W,{depth:6402,\"depth stencil\":34041}),j(H,{uint16:5123,uint32:5125,\"depth stencil\":34042})),e.webgl_compressed_texture_s3tc&&j(J,{\"rgb s3tc dxt1\":33776,\"rgba s3tc dxt1\":33777,\"rgba s3tc dxt3\":33778,\"rgba s3tc dxt5\":33779}),e.webgl_compressed_texture_atc&&j(J,{\"rgb atc\":35986,\"rgba atc explicit alpha\":35987,\"rgba atc interpolated alpha\":34798}),e.webgl_compressed_texture_pvrtc&&j(J,{\"rgb pvrtc 4bppv1\":35840,\"rgb pvrtc 2bppv1\":35841,\"rgba pvrtc 4bppv1\":35842,\"rgba pvrtc 2bppv1\":35843}),e.webgl_compressed_texture_etc1&&(J[\"rgb etc1\"]=36196);var K=Array.prototype.slice.call(t.getParameter(34467));Object.keys(J).forEach(function(t){var e=J[t];0<=K.indexOf(e)&&(W[t]=e)});var Q=Object.keys(W);r.textureFormats=Q;var tt=[];Object.keys(W).forEach(function(t){tt[W[t]]=t});var et=[];Object.keys(H).forEach(function(t){et[H[t]]=t});var rt=[];Object.keys(V).forEach(function(t){rt[V[t]]=t});var nt=[];Object.keys(U).forEach(function(t){nt[U[t]]=t});var it=[];Object.keys(N).forEach(function(t){it[N[t]]=t});var pt=Q.reduce(function(t,e){var r=W[e];return 6409===r||6406===r||6409===r||6410===r||6402===r||34041===r?t[r]=r:32855===r||0<=e.indexOf(\"rgba\")?t[r]=6408:t[r]=6407,t},{}),dt=[],gt=[],vt=0,mt={},yt=r.maxTextureUnits,xt=Array(yt).map(function(){return null});return j(D.prototype,{bind:function(){this.bindCount+=1;var e=this.unit;if(0>e){for(var r=0;r<yt;++r){var n=xt[r];if(n){if(0<n.bindCount)continue;n.unit=-1}xt[r]=this,e=r;break}o.profile&&a.maxTextureUnits<e+1&&(a.maxTextureUnits=e+1),this.unit=e,t.activeTexture(33984+e),t.bindTexture(this.target,this.texture)}return e},unbind:function(){--this.bindCount},decRef:function(){0>=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(mt).forEach(function(e){t+=mt[e].stats.size}),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;z.call(r);var a=E();return\"number\"==typeof t?T(a,0|t,\"number\"==typeof e?0|e:0|t):t?(O(r,t),S(a,t)):T(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,P(i),C(a,3553),I(r,3553),R(),L(a),o.profile&&(i.stats.size=k(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new D(3553);return mt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=m();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,P(i),d(o,3553,e,r,a),R(),A(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,P(i);for(var l,c=i.channels,u=i.type,f=0;i.mipmask>>f;++f){var h=a>>f,p=s>>f;if(!h||!p)break;l=G.zero.allocType(u,h*p*c),t.texImage2D(3553,f,i.format,h,p,0,i.format,i.type,l),l&&G.zero.freeType(l)}return R(),o.profile&&(i.stats.size=k(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(z.call(l),s=0;6>s;++s)g[s]=E();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(O(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)T(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,P(h),s=0;6>s;++s)C(g[s],34069+s);for(I(l,34067),R(),o.profile&&(h.stats.size=k(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)L(g[s]);return f}var h=new D(34067);mt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=m();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,P(h),d(a,34069+t,r,n,i),R(),A(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,P(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=k(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;e<yt;++e)t.activeTexture(33984+e),t.bindTexture(3553,null),xt[e]=null;X(mt).forEach(F),a.cubeCount=0,a.textureCount=0},getTexture:function(t){return null},restore:function(){for(var e=0;e<yt;++e){var r=xt[e];r&&(r.bindCount=0,r.unit=-1,xt[e]=null)}X(mt).forEach(function(e){e.texture=t.createTexture(),t.bindTexture(e.target,e.texture);for(var r=0;32>r;++r)if(0!=(e.mipmask&1<<r))if(3553===e.target)t.texImage2D(3553,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);I(e.texInfo,e.target)})}}}function M(t,e,r,n,i,a){function o(t,e,r){this.target=t,this.texture=e,this.renderbuffer=r;var n=t=0;e?(t=e.width,n=e.height):r&&(t=r.width,n=r.height),this.width=t,this.height=n}function s(t){t&&(t.texture&&t.texture._texture.decRef(),t.renderbuffer&&t.renderbuffer._renderbuffer.decRef())}function l(t,e,r){t&&(t.texture?t.texture._texture.refCount+=1:t.renderbuffer._renderbuffer.refCount+=1)}function c(e,r){r&&(r.texture?t.framebufferTexture2D(36160,e,r.target,r.texture._texture.texture,0):t.framebufferRenderbuffer(36160,e,36161,r.renderbuffer._renderbuffer.renderbuffer))}function u(t){var e=3553,r=null,n=null,i=t;return\"object\"==typeof t&&(i=t.data,\"target\"in t&&(e=0|t.target)),\"texture2d\"===(t=i._reglType)?r=i:\"textureCube\"===t?r=i:\"renderbuffer\"===t&&(n=i,e=36161),new o(e,r,n)}function f(t,e,r,a,s){return r?((t=n.create2D({width:t,height:e,format:a,type:s}))._texture.refCount=0,new o(3553,t,null)):((t=i.create({width:t,height:e,format:a}))._renderbuffer.refCount=0,new o(36161,null,t))}function h(t){return t&&(t.texture||t.renderbuffer)}function p(t,e,r){t&&(t.texture?t.texture.resize(e,r):t.renderbuffer&&t.renderbuffer.resize(e,r),t.width=e,t.height=r)}function d(){this.id=k++,A[this.id]=this,this.framebuffer=t.createFramebuffer(),this.height=this.width=0,this.colorAttachments=[],this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function g(t){t.colorAttachments.forEach(s),s(t.depthAttachment),s(t.stencilAttachment),s(t.depthStencilAttachment)}function v(e){t.deleteFramebuffer(e.framebuffer),e.framebuffer=null,a.framebufferCount--,delete A[e.id]}function m(e){var n;t.bindFramebuffer(36160,e.framebuffer);var i=e.colorAttachments;for(n=0;n<i.length;++n)c(36064+n,i[n]);for(n=i.length;n<r.maxColorAttachments;++n)t.framebufferTexture2D(36160,36064+n,3553,null,0);t.framebufferTexture2D(36160,33306,3553,null,0),t.framebufferTexture2D(36160,36096,3553,null,0),t.framebufferTexture2D(36160,36128,3553,null,0),c(36096,e.depthAttachment),c(36128,e.stencilAttachment),c(33306,e.depthStencilAttachment),t.checkFramebufferStatus(36160),t.isContextLost(),t.bindFramebuffer(36160,x.next?x.next.framebuffer:null),x.cur=x.next,t.getError()}function y(t,e){function r(t,e){var i,a=0,o=0,s=!0,c=!0;i=null;var p=!0,d=\"rgba\",v=\"uint8\",y=1,x=null,w=null,k=null,A=!1;\"number\"==typeof t?(a=0|t,o=0|e||a):t?(\"shape\"in t?(a=(o=t.shape)[0],o=o[1]):(\"radius\"in t&&(a=o=t.radius),\"width\"in t&&(a=t.width),\"height\"in t&&(o=t.height)),(\"color\"in t||\"colors\"in t)&&(i=t.color||t.colors,Array.isArray(i)),i||(\"colorCount\"in t&&(y=0|t.colorCount),\"colorTexture\"in t&&(p=!!t.colorTexture,d=\"rgba4\"),\"colorType\"in t&&(v=t.colorType,!p)&&(\"half float\"===v||\"float16\"===v?d=\"rgba16f\":\"float\"!==v&&\"float32\"!==v||(d=\"rgba32f\")),\"colorFormat\"in t&&(d=t.colorFormat,0<=b.indexOf(d)?p=!0:0<=_.indexOf(d)&&(p=!1))),(\"depthTexture\"in t||\"depthStencilTexture\"in t)&&(A=!(!t.depthTexture&&!t.depthStencilTexture)),\"depth\"in t&&(\"boolean\"==typeof t.depth?s=t.depth:(x=t.depth,c=!1)),\"stencil\"in t&&(\"boolean\"==typeof t.stencil?c=t.stencil:(w=t.stencil,s=!1)),\"depthStencil\"in t&&(\"boolean\"==typeof t.depthStencil?s=c=t.depthStencil:(k=t.depthStencil,c=s=!1))):a=o=1;var M=null,T=null,S=null,C=null;if(Array.isArray(i))M=i.map(u);else if(i)M=[u(i)];else for(M=Array(y),i=0;i<y;++i)M[i]=f(a,o,p,d,v);for(a=a||M[0].width,o=o||M[0].height,x?T=u(x):s&&!c&&(T=f(a,o,A,\"depth\",\"uint32\")),w?S=u(w):c&&!s&&(S=f(a,o,!1,\"stencil\",\"uint8\")),k?C=u(k):!x&&!w&&c&&s&&(C=f(a,o,A,\"depth stencil\",\"depth stencil\")),s=null,i=0;i<M.length;++i)l(M[i]),M[i]&&M[i].texture&&(c=yt[M[i].texture._texture.format]*xt[M[i].texture._texture.type],null===s&&(s=c));return l(T),l(S),l(C),g(n),n.width=a,n.height=o,n.colorAttachments=M,n.depthAttachment=T,n.stencilAttachment=S,n.depthStencilAttachment=C,r.color=M.map(h),r.depth=h(T),r.stencil=h(S),r.depthStencil=h(C),r.width=n.width,r.height=n.height,m(n),r}var n=new d;return a.framebufferCount++,r(t,e),j(r,{resize:function(t,e){var i=Math.max(0|t,1),a=Math.max(0|e||i,1);if(i===n.width&&a===n.height)return r;for(var o=n.colorAttachments,s=0;s<o.length;++s)p(o[s],i,a);return p(n.depthAttachment,i,a),p(n.stencilAttachment,i,a),p(n.depthStencilAttachment,i,a),n.width=r.width=i,n.height=r.height=a,m(n),r},_reglType:\"framebuffer\",_framebuffer:n,destroy:function(){v(n),g(n)},use:function(t){x.setFBO({framebuffer:r},t)}})}var x={cur:null,next:null,dirty:!1,setFBO:null},b=[\"rgba\"],_=[\"rgba4\",\"rgb565\",\"rgb5 a1\"];e.ext_srgb&&_.push(\"srgba\"),e.ext_color_buffer_half_float&&_.push(\"rgba16f\",\"rgb16f\"),e.webgl_color_buffer_float&&_.push(\"rgba32f\");var w=[\"uint8\"];e.oes_texture_half_float&&w.push(\"half float\",\"float16\"),e.oes_texture_float&&w.push(\"float\",\"float32\");var k=0,A={};return j(x,{getFramebuffer:function(t){return\"function\"==typeof t&&\"framebuffer\"===t._reglType&&(t=t._framebuffer)instanceof d?t:null},create:y,createCube:function(t){function e(t){var i,a={color:null},o=0,s=null;i=\"rgba\";var l=\"uint8\",c=1;if(\"number\"==typeof t?o=0|t:t?(\"shape\"in t?o=t.shape[0]:(\"radius\"in t&&(o=0|t.radius),\"width\"in t?o=0|t.width:\"height\"in t&&(o=0|t.height)),(\"color\"in t||\"colors\"in t)&&(s=t.color||t.colors,Array.isArray(s)),s||(\"colorCount\"in t&&(c=0|t.colorCount),\"colorType\"in t&&(l=t.colorType),\"colorFormat\"in t&&(i=t.colorFormat)),\"depth\"in t&&(a.depth=t.depth),\"stencil\"in t&&(a.stencil=t.stencil),\"depthStencil\"in t&&(a.depthStencil=t.depthStencil)):o=1,s)if(Array.isArray(s))for(t=[],i=0;i<s.length;++i)t[i]=s[i];else t=[s];else for(t=Array(c),s={radius:o,format:i,type:l},i=0;i<c;++i)t[i]=n.createCube(s);for(a.color=Array(t.length),i=0;i<t.length;++i)c=t[i],o=o||c.width,a.color[i]={target:34069,data:t[i]};for(i=0;6>i;++i){for(c=0;c<t.length;++c)a.color[c].target=34069+i;0<i&&(a.depth=r[0].depth,a.stencil=r[0].stencil,a.depthStencil=r[0].depthStencil),r[i]?r[i](a):r[i]=y(a)}return j(e,{width:o,height:o,color:t})}var r=Array(6);return e(t),j(e,{faces:r,resize:function(t){var n=0|t;if(n===e.width)return e;var i=e.color;for(t=0;t<i.length;++t)i[t].resize(n);for(t=0;6>t;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach(function(t){t.destroy()})}})},clear:function(){X(A).forEach(v)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(A).forEach(function(e){e.framebuffer=t.createFramebuffer(),m(e)})}})}function T(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n){function i(t,e,r,n){this.name=t,this.id=e,this.location=r,this.info=n}function a(t,e){for(var r=0;r<t.length;++r)if(t[r].id===e.id)return void(t[r].location=e.location);t.push(e)}function o(r,n,i){if(!(o=(i=35632===r?c:u)[n])){var a=e.str(n),o=t.createShader(r);t.shaderSource(o,a),t.compileShader(o),i[n]=o}return o}function s(t,e){this.id=p++,this.fragId=t,this.vertId=e,this.program=null,this.uniforms=[],this.attributes=[],n.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function l(r,s){var l,c;l=o(35632,r.fragId),c=o(35633,r.vertId);var u=r.program=t.createProgram();t.attachShader(u,l),t.attachShader(u,c),t.linkProgram(u);var f=t.getProgramParameter(u,35718);n.profile&&(r.stats.uniformsCount=f);var h=r.uniforms;for(l=0;l<f;++l)if(c=t.getActiveUniform(u,l))if(1<c.size)for(var p=0;p<c.size;++p){var d=c.name.replace(\"[0]\",\"[\"+p+\"]\");a(h,new i(d,e.id(d),t.getUniformLocation(u,d),c))}else a(h,new i(c.name,e.id(c.name),t.getUniformLocation(u,c.name),c));for(f=t.getProgramParameter(u,35721),n.profile&&(r.stats.attributesCount=f),h=r.attributes,l=0;l<f;++l)(c=t.getActiveAttrib(u,l))&&a(h,new i(c.name,e.id(c.name),t.getAttribLocation(u,c.name),c))}var c={},u={},f={},h=[],p=0;return n.profile&&(r.getMaxUniformsCount=function(){var t=0;return h.forEach(function(e){e.stats.uniformsCount>t&&(t=e.stats.uniformsCount)}),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach(function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)}),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach(function(e){t.deleteProgram(e.program)}),h.length=0,f={},r.shaderCount=0},program:function(t,e,n){var i=f[e];i||(i=f[e]={});var a=i[t];return a||(a=new s(e,t),r.shaderCount++,l(a),i[t]=a,h.push(a)),a},restore:function(){c={},u={};for(var t=0;t<h.length;++t)l(h[t])},shader:o,frag:-1,vert:-1}}function C(t,e,r,n,i,a,o){function s(i){var a;a=null===e.next?5121:e.next.colorAttachments[0].texture._texture.type;var o=0,s=0,l=n.framebufferWidth,c=n.framebufferHeight,u=null;return Y(i)?u=i:i&&(o=0|i.x,s=0|i.y,l=0|(i.width||n.framebufferWidth-o),c=0|(i.height||n.framebufferHeight-s),u=i.data||null),r(),i=l*c*4,u||(5121===a?u=new Uint8Array(i):5126===a&&(u=u||new Float32Array(i))),t.pixelStorei(3333,4),t.readPixels(o,s,l,c,6408,a,u),u}return function(t){return t&&\"framebuffer\"in t?function(t){var r;return e.setFBO({framebuffer:t.framebuffer},function(){r=s(t)}),r}(t):s(t)}}function E(t){return Array.prototype.slice.call(t)}function L(t){return E(t).join(\"\")}function z(){function t(){var t=[],e=[];return j(function(){t.push.apply(t,E(arguments))},{def:function(){var n=\"v\"+r++;return e.push(n),0<arguments.length&&(t.push(n,\"=\"),t.push.apply(t,E(arguments)),t.push(\";\")),n},toString:function(){return L([0<e.length?\"var \"+e+\";\":\"\",L(t)])}})}function e(){function e(t,e){n(t,e,\"=\",r.def(t,e),\";\")}var r=t(),n=t(),i=r.toString,a=n.toString;return j(function(){r.apply(r,E(arguments))},{def:r.def,entry:r,exit:n,save:e,set:function(t,n,i){e(t,n),r(t,n,\"=\",i,\";\")},toString:function(){return i()+a()}})}var r=0,n=[],i=[],a=t(),o={};return{global:a,link:function(t){for(var e=0;e<i.length;++e)if(i[e]===t)return n[e];return e=\"g\"+r++,n.push(e),i.push(t),e},block:t,proc:function(t,r){function n(){var t=\"a\"+i.length;return i.push(t),t}var i=[];r=r||0;for(var a=0;a<r;++a)n();var s=(a=e()).toString;return o[t]=j(a,{arg:n,toString:function(){return L([\"function(\",i.join(),\"){\",s(),\"}\"])}})},scope:e,cond:function(){var t=L(arguments),r=e(),n=e(),i=r.toString,a=n.toString;return j(r,{then:function(){return r.apply(r,E(arguments)),this},else:function(){return n.apply(n,E(arguments)),this},toString:function(){var e=a();return e&&(e=\"else{\"+e+\"}\"),L([\"if(\",t,\"){\",i(),\"}\",e])}})},compile:function(){var t=['\"use strict\";',a,\"return {\"];Object.keys(o).forEach(function(e){t.push('\"',e,'\":',o[e].toString(),\",\")}),t.push(\"}\");var e=L(t).replace(/;/g,\";\\n\").replace(/}/g,\"}\\n\").replace(/{/g,\"{\\n\");return Function.apply(null,n.concat(e)).apply(null,i)}}}function O(t){return Array.isArray(t)||Y(t)||l(t)}function I(t){return t.sort(function(t,e){return\"viewport\"===t?-1:\"viewport\"===e?1:t<e?-1:1})}function D(t,e,r,n){this.thisDep=t,this.contextDep=e,this.propDep=r,this.append=n}function P(t){return t&&!(t.thisDep||t.contextDep||t.propDep)}function R(t){return new D(!1,!1,!1,t)}function F(t,e){var r=t.type;return 0===r?new D(!0,1<=(r=t.data.length),2<=r,e):4===r?new D((r=t.data).thisDep,r.contextDep,r.propDep,e):new D(3===r,2===r,1===r,e)}function B(t,e,r,n,i,o,s,l,c,u,f,h,p,d,g){function m(t){return t.replace(\".\",\"_\")}function y(t,e,r){var n=m(t);nt.push(t),et[n]=tt[n]=!!r,it[n]=e}function x(t,e,r){var n=m(t);nt.push(t),Array.isArray(r)?(tt[n]=r.slice(),et[n]=r.slice()):tt[n]=et[n]=r,at[n]=e}function b(){var t=z(),r=t.link,n=t.global;t.id=lt++,t.batchId=\"0\";var i=r(ot),a=t.shared={props:\"a0\"};Object.keys(ot).forEach(function(t){a[t]=n.def(i,\".\",t)});var o=t.next={},s=t.current={};Object.keys(at).forEach(function(t){Array.isArray(tt[t])&&(o[t]=n.def(a.next,\".\",t),s[t]=n.def(a.current,\".\",t))});var l=t.constants={};Object.keys(st).forEach(function(t){l[t]=n.def(JSON.stringify(st[t]))}),t.invoke=function(e,n){switch(n.type){case 0:var i=[\"this\",a.context,a.props,t.batchId];return e.def(r(n.data),\".call(\",i.slice(0,Math.max(n.data.length+1,4)),\")\");case 1:return e.def(a.props,n.data);case 2:return e.def(a.context,n.data);case 3:return e.def(\"this\",n.data);case 4:return n.data.append(t,e),n.data.ref}},t.attribCache={};var c={};return t.scopeAttrib=function(t){if((t=e.id(t))in c)return c[t];var n=u.scope[t];return n||(n=u.scope[t]=new Z),c[t]=r(n)},t}function _(t,e){var r=t.static,n=t.dynamic;if(\"framebuffer\"in r){var i=r.framebuffer;return i?(i=l.getFramebuffer(i),R(function(t,e){var r=t.link(i),n=t.shared;return e.set(n.framebuffer,\".next\",r),n=n.context,e.set(n,\".framebufferWidth\",r+\".width\"),e.set(n,\".framebufferHeight\",r+\".height\"),r})):R(function(t,e){var r=t.shared;return e.set(r.framebuffer,\".next\",\"null\"),r=r.context,e.set(r,\".framebufferWidth\",r+\".drawingBufferWidth\"),e.set(r,\".framebufferHeight\",r+\".drawingBufferHeight\"),\"null\"})}if(\"framebuffer\"in n){var a=n.framebuffer;return F(a,function(t,e){var r=t.invoke(e,a),n=t.shared,i=n.framebuffer;r=e.def(i,\".getFramebuffer(\",r,\")\");return e.set(i,\".next\",r),n=n.context,e.set(n,\".framebufferWidth\",r+\"?\"+r+\".width:\"+n+\".drawingBufferWidth\"),e.set(n,\".framebufferHeight\",r+\"?\"+r+\".height:\"+n+\".drawingBufferHeight\"),r})}return null}function w(t){function r(t){if(t in n){var r=e.id(n[t]);return(t=R(function(){return r})).id=r,t}if(t in i){var a=i[t];return F(a,function(t,e){var r=t.invoke(e,a);return e.def(t.shared.strings,\".id(\",r,\")\")})}return null}var n=t.static,i=t.dynamic,a=r(\"frag\"),o=r(\"vert\"),s=null;return P(a)&&P(o)?(s=f.program(o.id,a.id),t=R(function(t,e){return t.link(s)})):t=new D(a&&a.thisDep||o&&o.thisDep,a&&a.contextDep||o&&o.contextDep,a&&a.propDep||o&&o.propDep,function(t,e){var r,n,i=t.shared.shader;return r=a?a.append(t,e):e.def(i,\".\",\"frag\"),n=o?o.append(t,e):e.def(i,\".\",\"vert\"),e.def(i+\".program(\"+n+\",\"+r+\")\")}),{frag:a,vert:o,progVar:t,program:s}}function k(t,e){function r(t,e){if(t in n){var r=0|n[t];return R(function(t,n){return e&&(t.OFFSET=r),r})}if(t in i){var o=i[t];return F(o,function(t,r){var n=t.invoke(r,o);return e&&(t.OFFSET=n),n})}return e&&a?R(function(t,e){return t.OFFSET=\"0\",0}):null}var n=t.static,i=t.dynamic,a=function(){if(\"elements\"in n){var t=n.elements;O(t)?t=o.getElements(o.create(t,!0)):t&&(t=o.getElements(t));var e=R(function(e,r){if(t){var n=e.link(t);return e.ELEMENTS=n}return e.ELEMENTS=null});return e.value=t,e}if(\"elements\"in i){var r=i.elements;return F(r,function(t,e){var n=(i=t.shared).isBufferArgs,i=i.elements,a=t.invoke(e,r),o=e.def(\"null\");n=e.def(n,\"(\",a,\")\"),a=t.cond(n).then(o,\"=\",i,\".createStream(\",a,\");\").else(o,\"=\",i,\".getElements(\",a,\");\");return e.entry(a),e.exit(t.cond(n).then(i,\".destroyStream(\",o,\");\")),t.ELEMENTS=o})}return null}(),s=r(\"offset\",!0);return{elements:a,primitive:function(){if(\"primitive\"in n){var t=n.primitive;return R(function(e,r){return rt[t]})}if(\"primitive\"in i){var e=i.primitive;return F(e,function(t,r){var n=t.constants.primTypes,i=t.invoke(r,e);return r.def(n,\"[\",i,\"]\")})}return a?P(a)?a.value?R(function(t,e){return e.def(t.ELEMENTS,\".primType\")}):R(function(){return 4}):new D(a.thisDep,a.contextDep,a.propDep,function(t,e){var r=t.ELEMENTS;return e.def(r,\"?\",r,\".primType:\",4)}):null}(),count:function(){if(\"count\"in n){var t=0|n.count;return R(function(){return t})}if(\"count\"in i){var e=i.count;return F(e,function(t,r){return t.invoke(r,e)})}return a?P(a)?a?s?new D(s.thisDep,s.contextDep,s.propDep,function(t,e){return e.def(t.ELEMENTS,\".vertCount-\",t.OFFSET)}):R(function(t,e){return e.def(t.ELEMENTS,\".vertCount\")}):R(function(){return-1}):new D(a.thisDep||s.thisDep,a.contextDep||s.contextDep,a.propDep||s.propDep,function(t,e){var r=t.ELEMENTS;return t.OFFSET?e.def(r,\"?\",r,\".vertCount-\",t.OFFSET,\":-1\"):e.def(r,\"?\",r,\".vertCount:-1\")}):null}(),instances:r(\"instances\",!1),offset:s}}function A(t,r){var n=t.static,a=t.dynamic,o={};return Object.keys(n).forEach(function(t){var r=n[t],a=e.id(t),s=new Z;if(O(r))s.state=1,s.buffer=i.getBuffer(i.create(r,34962,!1,!0)),s.type=0;else if(c=i.getBuffer(r))s.state=1,s.buffer=c,s.type=0;else if(\"constant\"in r){var l=r.constant;s.buffer=\"null\",s.state=2,\"number\"==typeof l?s.x=l:bt.forEach(function(t,e){e<l.length&&(s[t]=l[e])})}else{var c=O(r.buffer)?i.getBuffer(i.create(r.buffer,34962,!1,!0)):i.getBuffer(r.buffer),u=0|r.offset,f=0|r.stride,h=0|r.size,p=!!r.normalized,d=0;\"type\"in r&&(d=J[r.type]),r=0|r.divisor,s.buffer=c,s.state=1,s.size=h,s.normalized=p,s.type=d||c.dtype,s.offset=u,s.stride=f,s.divisor=r}o[t]=R(function(t,e){var r=t.attribCache;if(a in r)return r[a];var n={isStream:!1};return Object.keys(s).forEach(function(t){n[t]=s[t]}),s.buffer&&(n.buffer=t.link(s.buffer),n.type=n.type||n.buffer+\".dtype\"),r[a]=n})}),Object.keys(a).forEach(function(t){var e=a[t];o[t]=F(e,function(t,r){function n(t){r(l[t],\"=\",i,\".\",t,\"|0;\")}var i=t.invoke(r,e),a=t.shared,o=a.isBufferArgs,s=a.buffer,l={isStream:r.def(!1)},c=new Z;c.state=1,Object.keys(c).forEach(function(t){l[t]=r.def(\"\"+c[t])});var u=l.buffer,f=l.type;return r(\"if(\",o,\"(\",i,\")){\",l.isStream,\"=true;\",u,\"=\",s,\".createStream(\",34962,\",\",i,\");\",f,\"=\",u,\".dtype;\",\"}else{\",u,\"=\",s,\".getBuffer(\",i,\");\",\"if(\",u,\"){\",f,\"=\",u,\".dtype;\",'}else if(\"constant\" in ',i,\"){\",l.state,\"=\",2,\";\",\"if(typeof \"+i+'.constant === \"number\"){',l[bt[0]],\"=\",i,\".constant;\",bt.slice(1).map(function(t){return l[t]}).join(\"=\"),\"=0;\",\"}else{\",bt.map(function(t,e){return l[t]+\"=\"+i+\".constant.length>\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"}).join(\"\"),\"}}else{\",\"if(\",o,\"(\",i,\".buffer)){\",u,\"=\",s,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",s,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",a.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",s,\".destroyStream(\",u,\");\",\"}\"),l})}),o}function M(t,e,r,n,i){var o=_(t),s=function(t,e,r){function n(t){if(t in i){var r=i[t];t=!0;var n,o,s=0|r.x,l=0|r.y;return\"width\"in r?n=0|r.width:t=!1,\"height\"in r?o=0|r.height:t=!1,new D(!t&&e&&e.thisDep,!t&&e&&e.contextDep,!t&&e&&e.propDep,function(t,e){var i=t.shared.context,a=n;\"width\"in r||(a=e.def(i,\".\",\"framebufferWidth\",\"-\",s));var c=o;return\"height\"in r||(c=e.def(i,\".\",\"framebufferHeight\",\"-\",l)),[s,l,a,c]})}if(t in a){var c=a[t];return t=F(c,function(t,e){var r=t.invoke(e,c),n=t.shared.context,i=e.def(r,\".x|0\"),a=e.def(r,\".y|0\");return[i,a,e.def('\"width\" in ',r,\"?\",r,\".width|0:\",\"(\",n,\".\",\"framebufferWidth\",\"-\",i,\")\"),r=e.def('\"height\" in ',r,\"?\",r,\".height|0:\",\"(\",n,\".\",\"framebufferHeight\",\"-\",a,\")\")]}),e&&(t.thisDep=t.thisDep||e.thisDep,t.contextDep=t.contextDep||e.contextDep,t.propDep=t.propDep||e.propDep),t}return e?new D(e.thisDep,e.contextDep,e.propDep,function(t,e){var r=t.shared.context;return[0,0,e.def(r,\".\",\"framebufferWidth\"),e.def(r,\".\",\"framebufferHeight\")]}):null}var i=t.static,a=t.dynamic;if(t=n(\"viewport\")){var o=t;t=new D(t.thisDep,t.contextDep,t.propDep,function(t,e){var r=o.append(t,e),n=t.shared.context;return e.set(n,\".viewportWidth\",r[2]),e.set(n,\".viewportHeight\",r[3]),r})}return{viewport:t,scissor_box:n(\"scissor.box\")}}(t,o),l=k(t),c=function(t,e){var r=t.static,n=t.dynamic,i={};return nt.forEach(function(t){function e(e,a){if(t in r){var s=e(r[t]);i[o]=R(function(){return s})}else if(t in n){var l=n[t];i[o]=F(l,function(t,e){return a(t,e,t.invoke(e,l))})}}var o=m(t);switch(t){case\"cull.enable\":case\"blend.enable\":case\"dither\":case\"stencil.enable\":case\"depth.enable\":case\"scissor.enable\":case\"polygonOffset.enable\":case\"sample.alpha\":case\"sample.enable\":case\"depth.mask\":return e(function(t){return t},function(t,e,r){return r});case\"depth.func\":return e(function(t){return kt[t]},function(t,e,r){return e.def(t.constants.compareFuncs,\"[\",r,\"]\")});case\"depth.range\":return e(function(t){return t},function(t,e,r){return[e.def(\"+\",r,\"[0]\"),e=e.def(\"+\",r,\"[1]\")]});case\"blend.func\":return e(function(t){return[wt[\"srcRGB\"in t?t.srcRGB:t.src],wt[\"dstRGB\"in t?t.dstRGB:t.dst],wt[\"srcAlpha\"in t?t.srcAlpha:t.src],wt[\"dstAlpha\"in t?t.dstAlpha:t.dst]]},function(t,e,r){function n(t,n){return e.def('\"',t,n,'\" in ',r,\"?\",r,\".\",t,n,\":\",r,\".\",t)}t=t.constants.blendFuncs;var i=n(\"src\",\"RGB\"),a=n(\"dst\",\"RGB\"),o=(i=e.def(t,\"[\",i,\"]\"),e.def(t,\"[\",n(\"src\",\"Alpha\"),\"]\"));return[i,a=e.def(t,\"[\",a,\"]\"),o,t=e.def(t,\"[\",n(\"dst\",\"Alpha\"),\"]\")]});case\"blend.equation\":return e(function(t){return\"string\"==typeof t?[$[t],$[t]]:\"object\"==typeof t?[$[t.rgb],$[t.alpha]]:void 0},function(t,e,r){var n=t.constants.blendEquations,i=e.def(),a=e.def();return(t=t.cond(\"typeof \",r,'===\"string\"')).then(i,\"=\",a,\"=\",n,\"[\",r,\"];\"),t.else(i,\"=\",n,\"[\",r,\".rgb];\",a,\"=\",n,\"[\",r,\".alpha];\"),e(t),[i,a]});case\"blend.color\":return e(function(t){return a(4,function(e){return+t[e]})},function(t,e,r){return a(4,function(t){return e.def(\"+\",r,\"[\",t,\"]\")})});case\"stencil.mask\":return e(function(t){return 0|t},function(t,e,r){return e.def(r,\"|0\")});case\"stencil.func\":return e(function(t){return[kt[t.cmp||\"keep\"],t.ref||0,\"mask\"in t?t.mask:-1]},function(t,e,r){return[t=e.def('\"cmp\" in ',r,\"?\",t.constants.compareFuncs,\"[\",r,\".cmp]\",\":\",7680),e.def(r,\".ref|0\"),e=e.def('\"mask\" in ',r,\"?\",r,\".mask|0:-1\")]});case\"stencil.opFront\":case\"stencil.opBack\":return e(function(e){return[\"stencil.opBack\"===t?1029:1028,At[e.fail||\"keep\"],At[e.zfail||\"keep\"],At[e.zpass||\"keep\"]]},function(e,r,n){function i(t){return r.def('\"',t,'\" in ',n,\"?\",a,\"[\",n,\".\",t,\"]:\",7680)}var a=e.constants.stencilOps;return[\"stencil.opBack\"===t?1029:1028,i(\"fail\"),i(\"zfail\"),i(\"zpass\")]});case\"polygonOffset.offset\":return e(function(t){return[0|t.factor,0|t.units]},function(t,e,r){return[e.def(r,\".factor|0\"),e=e.def(r,\".units|0\")]});case\"cull.face\":return e(function(t){var e=0;return\"front\"===t?e=1028:\"back\"===t&&(e=1029),e},function(t,e,r){return e.def(r,'===\"front\"?',1028,\":\",1029)});case\"lineWidth\":return e(function(t){return t},function(t,e,r){return r});case\"frontFace\":return e(function(t){return Mt[t]},function(t,e,r){return e.def(r+'===\"cw\"?2304:2305')});case\"colorMask\":return e(function(t){return t.map(function(t){return!!t})},function(t,e,r){return a(4,function(t){return\"!!\"+r+\"[\"+t+\"]\"})});case\"sample.coverage\":return e(function(t){return[\"value\"in t?t.value:1,!!t.invert]},function(t,e,r){return[e.def('\"value\" in ',r,\"?+\",r,\".value:1\"),e=e.def(\"!!\",r,\".invert\")]})}}),i}(t),u=w(t),f=s.viewport;return f&&(c.viewport=f),(s=s[f=m(\"scissor.box\")])&&(c[f]=s),(o={framebuffer:o,draw:l,shader:u,state:c,dirty:s=0<Object.keys(c).length}).profile=function(t){var e,r=t.static;if(t=t.dynamic,\"profile\"in r){var n=!!r.profile;(e=R(function(t,e){return n})).enable=n}else if(\"profile\"in t){var i=t.profile;e=F(i,function(t,e){return t.invoke(e,i)})}return e}(t),o.uniforms=function(t,e){var r=t.static,n=t.dynamic,i={};return Object.keys(r).forEach(function(t){var e,n=r[t];if(\"number\"==typeof n||\"boolean\"==typeof n)e=R(function(){return n});else if(\"function\"==typeof n){var o=n._reglType;\"texture2d\"===o||\"textureCube\"===o?e=R(function(t){return t.link(n)}):\"framebuffer\"!==o&&\"framebufferCube\"!==o||(e=R(function(t){return t.link(n.color[0])}))}else v(n)&&(e=R(function(t){return t.global.def(\"[\",a(n.length,function(t){return n[t]}),\"]\")}));e.value=n,i[t]=e}),Object.keys(n).forEach(function(t){var e=n[t];i[t]=F(e,function(t,r){return t.invoke(r,e)})}),i}(r),o.attributes=A(e),o.context=function(t){var e=t.static,r=t.dynamic,n={};return Object.keys(e).forEach(function(t){var r=e[t];n[t]=R(function(t,e){return\"number\"==typeof r||\"boolean\"==typeof r?\"\"+r:t.link(r)})}),Object.keys(r).forEach(function(t){var e=r[t];n[t]=F(e,function(t,r){return t.invoke(r,e)})}),n}(n),o}function T(t,e,r){var n=t.shared.context,i=t.scope();Object.keys(r).forEach(function(a){e.save(n,\".\"+a),i(n,\".\",a,\"=\",r[a].append(t,e),\";\")}),e(i)}function S(t,e,r,n){var i,a=(s=t.shared).gl,o=s.framebuffer;Q&&(i=e.def(s.extensions,\".webgl_draw_buffers\"));var s=(l=t.constants).drawBuffer,l=l.backBuffer;t=r?r.append(t,e):e.def(o,\".next\"),n||e(\"if(\",t,\"!==\",o,\".cur){\"),e(\"if(\",t,\"){\",a,\".bindFramebuffer(\",36160,\",\",t,\".framebuffer);\"),Q&&e(i,\".drawBuffersWEBGL(\",s,\"[\",t,\".colorAttachments.length]);\"),e(\"}else{\",a,\".bindFramebuffer(\",36160,\",null);\"),Q&&e(i,\".drawBuffersWEBGL(\",l,\");\"),e(\"}\",o,\".cur=\",t,\";\"),n||e(\"}\")}function C(t,e,r){var n=t.shared,i=n.gl,o=t.current,s=t.next,l=n.current,c=n.next,u=t.cond(l,\".dirty\");nt.forEach(function(e){var n,f;if(!((e=m(e))in r.state))if(e in s){n=s[e],f=o[e];var h=a(tt[e].length,function(t){return u.def(n,\"[\",t,\"]\")});u(t.cond(h.map(function(t,e){return t+\"!==\"+f+\"[\"+e+\"]\"}).join(\"||\")).then(i,\".\",at[e],\"(\",h,\");\",h.map(function(t,e){return f+\"[\"+e+\"]=\"+t}).join(\";\"),\";\"))}else n=u.def(c,\".\",e),h=t.cond(n,\"!==\",l,\".\",e),u(h),e in it?h(t.cond(n).then(i,\".enable(\",it[e],\");\").else(i,\".disable(\",it[e],\");\"),l,\".\",e,\"=\",n,\";\"):h(i,\".\",at[e],\"(\",n,\");\",l,\".\",e,\"=\",n,\";\")}),0===Object.keys(r.state).length&&u(l,\".dirty=false;\"),e(u)}function E(t,e,r,n){var i=t.shared,a=t.current,o=i.current,s=i.gl;I(Object.keys(r)).forEach(function(i){var l=r[i];if(!n||n(l)){var c=l.append(t,e);if(it[i]){var u=it[i];P(l)?e(s,c?\".enable(\":\".disable(\",u,\");\"):e(t.cond(c).then(s,\".enable(\",u,\");\").else(s,\".disable(\",u,\");\")),e(o,\".\",i,\"=\",c,\";\")}else if(v(c)){var f=a[i];e(s,\".\",at[i],\"(\",c,\");\",c.map(function(t,e){return f+\"[\"+e+\"]=\"+t}).join(\";\"),\";\")}else e(s,\".\",at[i],\"(\",c,\");\",o,\".\",i,\"=\",c,\";\")}})}function L(t,e){K&&(t.instancing=e.def(t.shared.extensions,\".angle_instanced_arrays\"))}function B(t,e,r,n,i){function a(){return\"undefined\"==typeof performance?\"Date.now()\":\"performance.now()\"}function o(t){t(c=e.def(),\"=\",a(),\";\"),\"string\"==typeof i?t(h,\".count+=\",i,\";\"):t(h,\".count++;\"),d&&(n?t(u=e.def(),\"=\",g,\".getNumPendingQueries();\"):t(g,\".beginQuery(\",h,\");\"))}function s(t){t(h,\".cpuTime+=\",a(),\"-\",c,\";\"),d&&(n?t(g,\".pushScopeStats(\",u,\",\",g,\".getNumPendingQueries(),\",h,\");\"):t(g,\".endQuery();\"))}function l(t){var r=e.def(p,\".profile\");e(p,\".profile=\",t,\";\"),e.exit(p,\".profile=\",r,\";\")}var c,u,f=t.shared,h=t.stats,p=f.current,g=f.timer;if(r=r.profile){if(P(r))return void(r.enable?(o(e),s(e.exit),l(\"true\")):l(\"false\"));l(r=r.append(t,e))}else r=e.def(p,\".profile\");o(f=t.block()),e(\"if(\",r,\"){\",f,\"}\"),s(t=t.block()),e.exit(\"if(\",r,\"){\",t,\"}\")}function N(t,e,r,n,i){function a(r,n,i){function a(){e(\"if(!\",u,\".buffer){\",l,\".enableVertexAttribArray(\",c,\");}\");var r,a=i.type;r=i.size?e.def(i.size,\"||\",n):n,e(\"if(\",u,\".type!==\",a,\"||\",u,\".size!==\",r,\"||\",p.map(function(t){return u+\".\"+t+\"!==\"+i[t]}).join(\"||\"),\"){\",l,\".bindBuffer(\",34962,\",\",f,\".buffer);\",l,\".vertexAttribPointer(\",[c,r,a,i.normalized,i.stride,i.offset],\");\",u,\".type=\",a,\";\",u,\".size=\",r,\";\",p.map(function(t){return u+\".\"+t+\"=\"+i[t]+\";\"}).join(\"\"),\"}\"),K&&(a=i.divisor,e(\"if(\",u,\".divisor!==\",a,\"){\",t.instancing,\".vertexAttribDivisorANGLE(\",[c,a],\");\",u,\".divisor=\",a,\";}\"))}function s(){e(\"if(\",u,\".buffer){\",l,\".disableVertexAttribArray(\",c,\");\",\"}if(\",bt.map(function(t,e){return u+\".\"+t+\"!==\"+h[e]}).join(\"||\"),\"){\",l,\".vertexAttrib4f(\",c,\",\",h,\");\",bt.map(function(t,e){return u+\".\"+t+\"=\"+h[e]+\";\"}).join(\"\"),\"}\")}var l=o.gl,c=e.def(r,\".location\"),u=e.def(o.attributes,\"[\",c,\"]\");r=i.state;var f=i.buffer,h=[i.x,i.y,i.z,i.w],p=[\"buffer\",\"normalized\",\"offset\",\"stride\"];1===r?a():2===r?s():(e(\"if(\",r,\"===\",1,\"){\"),a(),e(\"}else{\"),s(),e(\"}\"))}var o=t.shared;n.forEach(function(n){var o,s=n.name,l=r.attributes[s];if(l){if(!i(l))return;o=l.append(t,e)}else{if(!i(Tt))return;var c=t.scopeAttrib(s);o={},Object.keys(new Z).forEach(function(t){o[t]=e.def(c,\".\",t)})}a(t.link(n),function(t){switch(t){case 35664:case 35667:case 35671:return 2;case 35665:case 35668:case 35672:return 3;case 35666:case 35669:case 35673:return 4;default:return 1}}(n.info.type),o)})}function j(t,r,n,i,o){for(var s,l=t.shared,c=l.gl,u=0;u<i.length;++u){var f,h=(g=i[u]).name,p=g.info.type,d=n.uniforms[h],g=t.link(g)+\".location\";if(d){if(!o(d))continue;if(P(d)){if(h=d.value,35678===p||35680===p)r(c,\".uniform1i(\",g,\",\",(p=t.link(h._texture||h.color[0]._texture))+\".bind());\"),r.exit(p,\".unbind();\");else if(35674===p||35675===p||35676===p)d=2,35675===p?d=3:35676===p&&(d=4),r(c,\".uniformMatrix\",d,\"fv(\",g,\",false,\",h=t.global.def(\"new Float32Array([\"+Array.prototype.slice.call(h)+\"])\"),\");\");else{switch(p){case 5126:s=\"1f\";break;case 35664:s=\"2f\";break;case 35665:s=\"3f\";break;case 35666:s=\"4f\";break;case 35670:case 5124:s=\"1i\";break;case 35671:case 35667:s=\"2i\";break;case 35672:case 35668:s=\"3i\";break;case 35673:s=\"4i\";break;case 35669:s=\"4i\"}r(c,\".uniform\",s,\"(\",g,\",\",v(h)?Array.prototype.slice.call(h):h,\");\")}continue}f=d.append(t,r)}else{if(!o(Tt))continue;f=r.def(l.uniforms,\"[\",e.id(h),\"]\")}switch(35678===p?r(\"if(\",f,\"&&\",f,'._reglType===\"framebuffer\"){',f,\"=\",f,\".color[0];\",\"}\"):35680===p&&r(\"if(\",f,\"&&\",f,'._reglType===\"framebufferCube\"){',f,\"=\",f,\".color[0];\",\"}\"),h=1,p){case 35678:case 35680:p=r.def(f,\"._texture\"),r(c,\".uniform1i(\",g,\",\",p,\".bind());\"),r.exit(p,\".unbind();\");continue;case 5124:case 35670:s=\"1i\";break;case 35667:case 35671:s=\"2i\",h=2;break;case 35668:case 35672:s=\"3i\",h=3;break;case 35669:case 35673:s=\"4i\",h=4;break;case 5126:s=\"1f\";break;case 35664:s=\"2f\",h=2;break;case 35665:s=\"3f\",h=3;break;case 35666:s=\"4f\",h=4;break;case 35674:s=\"Matrix2fv\";break;case 35675:s=\"Matrix3fv\";break;case 35676:s=\"Matrix4fv\"}if(r(c,\".uniform\",s,\"(\",g,\",\"),\"M\"===s.charAt(0)){g=Math.pow(p-35674+2,2);var m=t.global.def(\"new Float32Array(\",g,\")\");r(\"false,(Array.isArray(\",f,\")||\",f,\" instanceof Float32Array)?\",f,\":(\",a(g,function(t){return m+\"[\"+t+\"]=\"+f+\"[\"+t+\"]\"}),\",\",m,\")\")}else r(1<h?a(h,function(t){return f+\"[\"+t+\"]\"}):f);r(\");\")}}function V(t,e,r,n){function i(i){var a=h[i];return a?a.contextDep&&n.contextDynamic||a.propDep?a.append(t,r):a.append(t,e):e.def(f,\".\",i)}function a(){function t(){r(l,\".drawElementsInstancedANGLE(\",[d,v,m,g+\"<<((\"+m+\"-5121)>>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,v,s],\");\")}p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,v,m,g+\"<<((\"+m+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,v]+\");\")}p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"elements\"),i&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\"),i}(),d=i(\"primitive\"),g=i(\"offset\"),v=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof v){if(0===v)return}else r(\"if(\",v,\"){\"),r.exit(\"}\");K&&(s=i(\"instances\"),l=t.instancing);var m=p+\".type\",y=h.elements&&P(h.elements);K&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function q(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),K&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function H(t,e,r,n){L(t,e),N(t,e,r,n.attributes,function(){return!0}),j(t,e,r,n.uniforms,function(){return!0}),V(t,e,e,r)}function G(t,e,r,n){function i(){return!0}t.batchId=\"a1\",L(t,e),N(t,e,r,n.attributes,i),j(t,e,r,n.uniforms,i),V(t,e,e,r)}function W(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}L(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&T(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),E(t,u,r.state,i),r.profile&&i(r.profile)&&B(t,u,r,!1,!0),n?(N(t,c,r,n.attributes,a),N(t,u,r,n.attributes,i),j(t,c,r,n.uniforms,a),j(t,u,r,n.uniforms,i),V(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link(function(e){return q(G,t,r,e,2)}),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Y(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;T(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),I(Object.keys(r.state)).forEach(function(e){var n=r.state[e].append(t,i);v(n)?n.forEach(function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)}):i.set(a.next,\".\"+e,n)}),B(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach(function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))}),Object.keys(r.uniforms).forEach(function(n){i.set(a.uniforms,\"[\"+e.id(n)+\"]\",r.uniforms[n].append(t,i))}),Object.keys(r.attributes).forEach(function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Z).forEach(function(t){i.set(a,\".\"+t,n[t])})}),n(\"vert\"),n(\"frag\"),0<Object.keys(r.state).length&&(i(o,\".dirty=true;\"),i.exit(o,\".dirty=true;\")),i(\"a1(\",t.shared.context,\",a0,\",t.batchId,\");\")}function X(t,e,r){var n=e.static[r];if(n&&function(t){if(\"object\"==typeof t&&!v(t)){for(var e=Object.keys(t),r=0;r<e.length;++r)if(U.isDynamic(t[e[r]]))return!0;return!1}}(n)){var i=t.global,a=Object.keys(n),o=!1,s=!1,l=!1,c=t.global.def(\"{}\");a.forEach(function(e){var r=n[e];if(U.isDynamic(r))\"function\"==typeof r&&(r=n[e]=U.unbox(r)),e=F(r,null),o=o||e.thisDep,l=l||e.propDep,s=s||e.contextDep;else{switch(i(c,\".\",e,\"=\"),typeof r){case\"number\":i(r);break;case\"string\":i('\"',r,'\"');break;case\"object\":Array.isArray(r)&&i(\"[\",r.join(),\"]\");break;default:i(t.link(r))}i(\";\")}}),e.dynamic[r]=new U.DynamicVariable(4,{thisDep:o,contextDep:s,propDep:l,ref:c,append:function(t,e){a.forEach(function(r){var i=n[r];U.isDynamic(i)&&(i=t.invoke(e,i),e(c,\".\",r,\"=\",i,\";\"))})}}),delete e.static[r]}}var Z=u.Record,$={add:32774,subtract:32778,\"reverse subtract\":32779};r.ext_blend_minmax&&($.min=32775,$.max=32776);var K=r.angle_instanced_arrays,Q=r.webgl_draw_buffers,tt={dirty:!0,profile:g.profile},et={},nt=[],it={},at={};y(\"dither\",3024),y(\"blend.enable\",3042),x(\"blend.color\",\"blendColor\",[0,0,0,0]),x(\"blend.equation\",\"blendEquationSeparate\",[32774,32774]),x(\"blend.func\",\"blendFuncSeparate\",[1,0,1,0]),y(\"depth.enable\",2929,!0),x(\"depth.func\",\"depthFunc\",513),x(\"depth.range\",\"depthRange\",[0,1]),x(\"depth.mask\",\"depthMask\",!0),x(\"colorMask\",\"colorMask\",[!0,!0,!0,!0]),y(\"cull.enable\",2884),x(\"cull.face\",\"cullFace\",1029),x(\"frontFace\",\"frontFace\",2305),x(\"lineWidth\",\"lineWidth\",1),y(\"polygonOffset.enable\",32823),x(\"polygonOffset.offset\",\"polygonOffset\",[0,0]),y(\"sample.alpha\",32926),y(\"sample.enable\",32928),x(\"sample.coverage\",\"sampleCoverage\",[1,!1]),y(\"stencil.enable\",2960),x(\"stencil.mask\",\"stencilMask\",-1),x(\"stencil.func\",\"stencilFunc\",[519,0,-1]),x(\"stencil.opFront\",\"stencilOpSeparate\",[1028,7680,7680,7680]),x(\"stencil.opBack\",\"stencilOpSeparate\",[1029,7680,7680,7680]),y(\"scissor.enable\",3089),x(\"scissor.box\",\"scissor\",[0,0,t.drawingBufferWidth,t.drawingBufferHeight]),x(\"viewport\",\"viewport\",[0,0,t.drawingBufferWidth,t.drawingBufferHeight]);var ot={gl:t,context:p,strings:e,next:et,current:tt,draw:h,elements:o,buffer:i,shader:f,attributes:u.state,uniforms:c,framebuffer:l,extensions:r,timer:d,isBufferArgs:O},st={primTypes:rt,compareFuncs:kt,blendFuncs:wt,blendEquations:$,stencilOps:At,glTypes:J,orientationType:Mt};Q&&(st.backBuffer=[1029],st.drawBuffer=a(n.maxDrawbuffers,function(t){return 0===t?[0]:a(t,function(t){return 36064+t})}));var lt=0;return{next:et,current:tt,procs:function(){var t=b(),e=t.proc(\"poll\"),r=t.proc(\"refresh\"),i=t.block();e(i),r(i);var o,s=t.shared,l=s.gl,c=s.next,u=s.current;i(u,\".dirty=false;\"),S(t,e),S(t,r,null,!0),K&&(o=t.link(K));for(var f=0;f<n.maxAttributes;++f){var h=r.def(s.attributes,\"[\",f,\"]\"),p=t.cond(h,\".buffer\");p.then(l,\".enableVertexAttribArray(\",f,\");\",l,\".bindBuffer(\",34962,\",\",h,\".buffer.buffer);\",l,\".vertexAttribPointer(\",f,\",\",h,\".size,\",h,\".type,\",h,\".normalized,\",h,\".stride,\",h,\".offset);\").else(l,\".disableVertexAttribArray(\",f,\");\",l,\".vertexAttrib4f(\",f,\",\",h,\".x,\",h,\".y,\",h,\".z,\",h,\".w);\",h,\".buffer=null;\"),r(p),K&&r(o,\".vertexAttribDivisorANGLE(\",f,\",\",h,\".divisor);\")}return Object.keys(it).forEach(function(n){var a=it[n],o=i.def(c,\".\",n),s=t.block();s(\"if(\",o,\"){\",l,\".enable(\",a,\")}else{\",l,\".disable(\",a,\")}\",u,\".\",n,\"=\",o,\";\"),r(s),e(\"if(\",o,\"!==\",u,\".\",n,\"){\",s,\"}\")}),Object.keys(at).forEach(function(n){var o,s,f=at[n],h=tt[n],p=t.block();p(l,\".\",f,\"(\"),v(h)?(f=h.length,o=t.global.def(c,\".\",n),s=t.global.def(u,\".\",n),p(a(f,function(t){return o+\"[\"+t+\"]\"}),\");\",a(f,function(t){return s+\"[\"+t+\"]=\"+o+\"[\"+t+\"];\"}).join(\"\")),e(\"if(\",a(f,function(t){return o+\"[\"+t+\"]!==\"+s+\"[\"+t+\"]\"}).join(\"||\"),\"){\",p,\"}\")):(o=i.def(c,\".\",n),s=i.def(u,\".\",n),p(o,\");\",u,\".\",n,\"=\",o,\";\"),e(\"if(\",o,\"!==\",s,\"){\",p,\"}\")),r(p)}),t.compile()}(),compile:function(t,e,r,n,i){var a=b();return a.stats=a.link(i),Object.keys(e.static).forEach(function(t){X(a,e,t)}),_t.forEach(function(e){X(a,t,e)}),r=M(t,e,r,n),function(t,e){var r=t.proc(\"draw\",1);L(t,r),T(t,r,e.context),S(t,r,e.framebuffer),C(t,r,e),E(t,r,e.state),B(t,r,e,!1,!0);var n=e.shader.progVar.append(t,r);if(r(t.shared.gl,\".useProgram(\",n,\".program);\"),e.shader.program)H(t,r,e,e.shader.program);else{var i=t.global.def(\"{}\"),a=r.def(n,\".id\"),o=r.def(i,\"[\",a,\"]\");r(t.cond(o).then(o,\".call(this,a0);\").else(o,\"=\",i,\"[\",a,\"]=\",t.link(function(r){return q(H,t,e,r,1)}),\"(\",n,\");\",o,\".call(this,a0);\"))}0<Object.keys(e.state).length&&r(t.shared.current,\".dirty=true;\")}(a,r),Y(a,r),function(t,e){function r(t){return t.contextDep&&i||t.propDep}var n=t.proc(\"batch\",2);t.batchId=\"0\",L(t,n);var i=!1,a=!0;Object.keys(e.context).forEach(function(t){i=i||e.context[t].propDep}),i||(T(t,n,e.context),a=!1);var o=!1;if((s=e.framebuffer)?(s.propDep?i=o=!0:s.contextDep&&i&&(o=!0),o||S(t,n,s)):S(t,n,null),e.state.viewport&&e.state.viewport.propDep&&(i=!0),C(t,n,e),E(t,n,e.state,function(t){return!r(t)}),e.profile&&r(e.profile)||B(t,n,e,!1,\"a1\"),e.contextDep=i,e.needsContext=a,e.needsFramebuffer=o,(a=e.shader.progVar).contextDep&&i||a.propDep)W(t,n,e,null);else if(a=a.append(t,n),n(t.shared.gl,\".useProgram(\",a,\".program);\"),e.shader.program)W(t,n,e,e.shader.program);else{var s=t.global.def(\"{}\"),l=(o=n.def(a,\".id\"),n.def(s,\"[\",o,\"]\"));n(t.cond(l).then(l,\".call(this,a0,a1);\").else(l,\"=\",s,\"[\",o,\"]=\",t.link(function(r){return q(W,t,e,r,2)}),\"(\",a,\");\",l,\".call(this,a0,a1);\"))}0<Object.keys(e.state).length&&n(t.shared.current,\".dirty=true;\")}(a,r),a.compile()}}}function N(t,e){for(var r=0;r<t.length;++r)if(t[r]===e)return r;return-1}var j=function(t,e){for(var r=Object.keys(e),n=0;n<r.length;++n)t[r[n]]=e[r[n]];return t},V=0,U={DynamicVariable:t,define:function(r,n){return new t(r,e(n+\"\"))},isDynamic:function(e){return\"function\"==typeof e&&!e._reglType||e instanceof t},unbox:function(e,r){return\"function\"==typeof e?new t(0,e):e},accessor:e},q={next:\"function\"==typeof requestAnimationFrame?function(t){return requestAnimationFrame(t)}:function(t){return setTimeout(t,16)},cancel:\"function\"==typeof cancelAnimationFrame?function(t){return cancelAnimationFrame(t)}:clearTimeout},H=\"undefined\"!=typeof performance&&performance.now?function(){return performance.now()}:function(){return+new Date},G=s();G.zero=s();var W=function(t,e){var r=1;e.ext_texture_filter_anisotropic&&(r=t.getParameter(34047));var n=1,i=1;e.webgl_draw_buffers&&(n=t.getParameter(34852),i=t.getParameter(36063));var a=!!e.oes_texture_float;if(a){a=t.createTexture(),t.bindTexture(3553,a),t.texImage2D(3553,0,6408,1,1,0,6408,5126,null);var o=t.createFramebuffer();if(t.bindFramebuffer(36160,o),t.framebufferTexture2D(36160,36064,3553,a,0),t.bindTexture(3553,null),36053!==t.checkFramebufferStatus(36160))a=!1;else{t.viewport(0,0,1,1),t.clearColor(1,0,0,1),t.clear(16384);var s=G.allocType(5126,4);t.readPixels(0,0,1,1,6408,5126,s),t.getError()?a=!1:(t.deleteFramebuffer(o),t.deleteTexture(a),a=1===s[0]),G.freeType(s)}}return s=!0,\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent))||(s=t.createTexture(),o=G.allocType(5121,36),t.activeTexture(33984),t.bindTexture(34067,s),t.texImage2D(34069,0,6408,3,3,0,6408,5121,o),G.freeType(o),t.bindTexture(34067,null),t.deleteTexture(s),s=!t.getError()),{colorBits:[t.getParameter(3410),t.getParameter(3411),t.getParameter(3412),t.getParameter(3413)],depthBits:t.getParameter(3414),stencilBits:t.getParameter(3415),subpixelBits:t.getParameter(3408),extensions:Object.keys(e).filter(function(t){return!!e[t]}),maxAnisotropic:r,maxDrawbuffers:n,maxColorAttachments:i,pointSizeDims:t.getParameter(33901),lineWidthDims:t.getParameter(33902),maxViewportDims:t.getParameter(3386),maxCombinedTextureUnits:t.getParameter(35661),maxCubeMapSize:t.getParameter(34076),maxRenderbufferSize:t.getParameter(34024),maxTextureUnits:t.getParameter(34930),maxTextureSize:t.getParameter(3379),maxAttributes:t.getParameter(34921),maxVertexUniforms:t.getParameter(36347),maxVertexTextureUnits:t.getParameter(35660),maxVaryingVectors:t.getParameter(36348),maxFragmentUniforms:t.getParameter(36349),glsl:t.getParameter(35724),renderer:t.getParameter(7937),vendor:t.getParameter(7936),version:t.getParameter(7938),readFloat:a,npotTextureCube:s}},Y=function(t){return t instanceof Uint8Array||t instanceof Uint16Array||t instanceof Uint32Array||t instanceof Int8Array||t instanceof Int16Array||t instanceof Int32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof Uint8ClampedArray},X=function(t){return Object.keys(t).map(function(e){return t[e]})},Z={shape:function(t){for(var e=[];t.length;t=t[0])e.push(t.length);return e},flatten:function(t,e,r,n){var i=1;if(e.length)for(var a=0;a<e.length;++a)i*=e[a];else i=0;switch(r=n||G.allocType(r,i),e.length){case 0:break;case 1:for(n=e[0],e=0;e<n;++e)r[e]=t[e];break;case 2:for(n=e[0],e=e[1],a=i=0;a<n;++a)for(var o=t[a],s=0;s<e;++s)r[i++]=o[s];break;case 3:c(t,e[0],e[1],e[2],r,0);break;default:!function t(e,r,n,i,a){for(var o=1,s=n+1;s<r.length;++s)o*=r[s];var l=r[n];if(4==r.length-n){var u=r[n+1],f=r[n+2];for(r=r[n+3],s=0;s<l;++s)c(e[s],u,f,r,i,a),a+=o}else for(s=0;s<l;++s)t(e[s],r,n+1,i,a),a+=o}(t,e,0,r,0)}return r}},$={\"[object Int8Array]\":5120,\"[object Int16Array]\":5122,\"[object Int32Array]\":5124,\"[object Uint8Array]\":5121,\"[object Uint8ClampedArray]\":5121,\"[object Uint16Array]\":5123,\"[object Uint32Array]\":5125,\"[object Float32Array]\":5126,\"[object Float64Array]\":5121,\"[object ArrayBuffer]\":5121},J={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,float:5126,float32:5126},K={dynamic:35048,stream:35040,static:35044},Q=Z.flatten,tt=Z.shape,et=[];et[5120]=1,et[5122]=2,et[5124]=4,et[5121]=1,et[5123]=2,et[5125]=4,et[5126]=4;var rt={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,\"line loop\":2,\"line strip\":3,\"triangle strip\":5,\"triangle fan\":6},nt=new Float32Array(1),it=new Uint32Array(nt.buffer),at=[9984,9986,9985,9987],ot=[0,6409,6410,6407,6408],st={};st[6409]=st[6406]=st[6402]=1,st[34041]=st[6410]=2,st[6407]=st[35904]=3,st[6408]=st[35906]=4;var lt=m(\"HTMLCanvasElement\"),ct=m(\"CanvasRenderingContext2D\"),ut=m(\"ImageBitmap\"),ft=m(\"HTMLImageElement\"),ht=m(\"HTMLVideoElement\"),pt=Object.keys($).concat([lt,ct,ut,ft,ht]),dt=[];dt[5121]=1,dt[5126]=4,dt[36193]=2,dt[5123]=2,dt[5125]=4;var gt=[];gt[32854]=2,gt[32855]=2,gt[36194]=2,gt[34041]=4,gt[33776]=.5,gt[33777]=.5,gt[33778]=1,gt[33779]=1,gt[35986]=.5,gt[35987]=1,gt[34798]=1,gt[35840]=.5,gt[35841]=.25,gt[35842]=.5,gt[35843]=.25,gt[36196]=.5;var vt=[];vt[32854]=2,vt[32855]=2,vt[36194]=2,vt[33189]=2,vt[36168]=1,vt[34041]=4,vt[35907]=4,vt[34836]=16,vt[34842]=8,vt[34843]=6;var mt=function(t,e,r,n,i){function a(t){this.id=c++,this.refCount=1,this.renderbuffer=t,this.format=32854,this.height=this.width=0,i.profile&&(this.stats={size:0})}function o(e){var r=e.renderbuffer;t.bindRenderbuffer(36161,null),t.deleteRenderbuffer(r),e.renderbuffer=null,e.refCount=0,delete u[e.id],n.renderbufferCount--}var s={rgba4:32854,rgb565:36194,\"rgb5 a1\":32855,depth:33189,stencil:36168,\"depth stencil\":34041};e.ext_srgb&&(s.srgba=35907),e.ext_color_buffer_half_float&&(s.rgba16f=34842,s.rgb16f=34843),e.webgl_color_buffer_float&&(s.rgba32f=34836);var l=[];Object.keys(s).forEach(function(t){l[s[t]]=t});var c=0,u={};return a.prototype.decRef=function(){0>=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach(function(e){t+=u[e].stats.size}),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height?o:(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o)},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach(function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)}),t.bindRenderbuffer(36161,null)}}},yt=[];yt[6408]=4,yt[6407]=3;var xt=[];xt[5121]=1,xt[5126]=4,xt[36193]=2;var bt=[\"x\",\"y\",\"z\",\"w\"],_t=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),wt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},Tt=new D(!1,!1,!1,function(){});return function(t){function e(){if(0===Z.length)w&&w.update(),Q=null;else{Q=q.next(e),f();for(var t=Z.length-1;0<=t;--t){var r=Z[t];r&&r(z,null,0)}v.flush(),w&&w.update()}}function r(){!Q&&0<Z.length&&(Q=q.next(e))}function n(){Q&&(q.cancel(e),Q=null)}function a(t){t.preventDefault(),n(),$.forEach(function(t){t()})}function o(t){v.getError(),y.restore(),P.restore(),I.restore(),R.restore(),F.restore(),V.restore(),w&&w.restore(),G.procs.refresh(),r(),J.forEach(function(t){t()})}function s(t){function e(t){var e={},r={};return Object.keys(t).forEach(function(n){var i=t[n];U.isDynamic(i)?r[n]=U.unbox(i,n):e[n]=i}),{dynamic:r,static:e}}var r=e(t.context||{}),n=e(t.uniforms||{}),i=e(t.attributes||{}),a=e(function(t){function e(t){if(t in r){var e=r[t];delete r[t],Object.keys(e).forEach(function(n){r[t+\".\"+n]=e[n]})}}var r=j({},t);return delete r.uniforms,delete r.attributes,delete r.context,\"stencil\"in r&&r.stencil.op&&(r.stencil.opBack=r.stencil.opFront=r.stencil.op,delete r.stencil.op),e(\"blend\"),e(\"depth\"),e(\"cull\"),e(\"stencil\"),e(\"polygonOffset\"),e(\"scissor\"),e(\"sample\"),r}(t));t={gpuTime:0,cpuTime:0,count:0};var o=(r=G.compile(a,i,n,r,t)).draw,s=r.batch,l=r.scope,c=[];return j(function(t,e){var r;if(\"function\"==typeof t)return l.call(this,null,t,0);if(\"function\"==typeof e)if(\"number\"==typeof t)for(r=0;r<t;++r)l.call(this,null,e,r);else{if(!Array.isArray(t))return l.call(this,t,e,0);for(r=0;r<t.length;++r)l.call(this,t[r],e,r)}else if(\"number\"==typeof t){if(0<t)return s.call(this,function(t){for(;c.length<t;)c.push(null);return c}(0|t),0|t)}else{if(!Array.isArray(t))return o.call(this,t);if(t.length)return s.call(this,t,t.length)}},{stats:t})}function l(t,e){var r=0;G.procs.poll();var n=e.color;n&&(v.clearColor(+n[0]||0,+n[1]||0,+n[2]||0,+n[3]||0),r|=16384),\"depth\"in e&&(v.clearDepth(+e.depth),r|=256),\"stencil\"in e&&(v.clearStencil(0|e.stencil),r|=1024),v.clear(r)}function c(t){return Z.push(t),r(),{cancel:function(){var e=N(Z,t);Z[e]=function t(){var e=N(Z,t);Z[e]=Z[Z.length-1],--Z.length,0>=Z.length&&n()}}}}function u(){var t=Y.viewport,e=Y.scissor_box;t[0]=t[1]=e[0]=e[1]=0,z.viewportWidth=z.framebufferWidth=z.drawingBufferWidth=t[2]=e[2]=v.drawingBufferWidth,z.viewportHeight=z.framebufferHeight=z.drawingBufferHeight=t[3]=e[3]=v.drawingBufferHeight}function f(){z.tick+=1,z.time=g(),u(),G.procs.poll()}function h(){u(),G.procs.refresh(),w&&w.update()}function g(){return(H()-k)/1e3}if(!(t=i(t)))return null;var v=t.gl,m=v.getContextAttributes();v.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;i<e.extensions.length;++i){var a=e.extensions[i];if(!r(a))return e.onDestroy(),e.onDone('\"'+a+'\" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return e.optionalExtensions.forEach(r),{extensions:n,restore:function(){Object.keys(n).forEach(function(t){if(n[t]&&!r(t))throw Error(\"(regl): error restoring extension \"+t)})}}}(v,t);if(!y)return null;var x=function(){var t={\"\":0},e=[\"\"];return{id:function(r){var n=t[r];return n||(n=t[r]=e.length,e.push(r),n)},str:function(t){return e[t]}}}(),b={bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0},_=y.extensions,w=function(t,e){function r(){this.endQueryIndex=this.startQueryIndex=-1,this.sum=0,this.stats=null}function n(t,e,n){var i=o.pop()||new r;i.startQueryIndex=t,i.endQueryIndex=e,i.sum=0,i.stats=n,s.push(i)}if(!e.ext_disjoint_timer_query)return null;var i=[],a=[],o=[],s=[],l=[],c=[];return{beginQuery:function(t){var r=i.pop()||e.ext_disjoint_timer_query.createQueryEXT();e.ext_disjoint_timer_query.beginQueryEXT(35007,r),a.push(r),n(a.length-1,a.length,t)},endQuery:function(){e.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:n,update:function(){var t,r;if(0!==(t=a.length)){c.length=Math.max(c.length,t+1),l.length=Math.max(l.length,t+1),l[0]=0;var n=c[0]=0;for(r=t=0;r<a.length;++r){var u=a[r];e.ext_disjoint_timer_query.getQueryObjectEXT(u,34919)?(n+=e.ext_disjoint_timer_query.getQueryObjectEXT(u,34918),i.push(u)):a[t++]=u,l[r+1]=n,c[r+1]=t}for(a.length=t,r=t=0;r<s.length;++r){var f=(n=s[r]).startQueryIndex;u=n.endQueryIndex,n.sum+=l[u]-l[f],f=c[f],(u=c[u])===f?(n.stats.gpuTime+=n.sum/1e6,o.push(n)):(n.startQueryIndex=f,n.endQueryIndex=u,s[t++]=n)}s.length=t}},getNumPendingQueries:function(){return a.length},clear:function(){i.push.apply(i,a);for(var t=0;t<i.length;t++)e.ext_disjoint_timer_query.deleteQueryEXT(i[t]);a.length=0,i.length=0},restore:function(){a.length=0,i.length=0}}}(0,_),k=H(),E=v.drawingBufferWidth,L=v.drawingBufferHeight,z={tick:0,time:0,viewportWidth:E,viewportHeight:L,framebufferWidth:E,framebufferHeight:L,drawingBufferWidth:E,drawingBufferHeight:L,pixelRatio:t.pixelRatio},O=W(v,_),I=(E=function(t,e,r,n){for(t=r.maxAttributes,e=Array(t),r=0;r<t;++r)e[r]=new T;return{Record:T,scope:{},state:e}}(v,_,O),p(v,b,t,E)),D=d(v,_,I,b),P=S(v,x,b,t),R=A(v,_,O,function(){G.procs.poll()},z,b,t),F=mt(v,_,0,b,t),V=M(v,_,O,R,F,b),G=B(v,x,_,O,I,D,0,V,{},E,P,{elements:null,primitive:4,count:-1,offset:0,instances:-1},z,w,t),Y=(x=C(v,V,G.procs.poll,z),G.next),X=v.canvas,Z=[],$=[],J=[],K=[t.onDestroy],Q=null;X&&(X.addEventListener(\"webglcontextlost\",a,!1),X.addEventListener(\"webglcontextrestored\",o,!1));var tt=V.setFBO=s({framebuffer:U.define.call(null,1,\"framebuffer\")});return h(),m=j(s,{clear:function(t){if(\"framebuffer\"in t)if(t.framebuffer&&\"framebufferCube\"===t.framebuffer_reglType)for(var e=0;6>e;++e)tt(j({framebuffer:t.framebuffer.faces[e]},t),l);else tt(t,l);else l(0,t)},prop:U.define.bind(null,1),context:U.define.bind(null,2),this:U.define.bind(null,3),draw:s({}),buffer:function(t){return I.create(t,34962,!1,!1)},elements:function(t){return D.create(t,!1)},texture:R.create2D,cube:R.createCube,renderbuffer:F.create,framebuffer:V.create,framebufferCube:V.createCube,attributes:m,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=$;break;case\"restore\":r=J;break;case\"destroy\":r=K}return r.push(e),{cancel:function(){for(var t=0;t<r.length;++t)if(r[t]===e){r[t]=r[r.length-1],r.pop();break}}}},limits:O,hasExtension:function(t){return 0<=O.extensions.indexOf(t.toLowerCase())},read:x,destroy:function(){Z.length=0,n(),X&&(X.removeEventListener(\"webglcontextlost\",a),X.removeEventListener(\"webglcontextrestored\",o)),P.clear(),V.clear(),F.clear(),R.clear(),D.clear(),I.clear(),w&&w.clear(),K.forEach(function(t){t()})},_gl:v,_refresh:h,poll:function(){f(),w&&w.update()},now:g,stats:b}),t.onDone(null,m),m}},\"object\"==typeof r&&\"undefined\"!=typeof e?e.exports=i():n.createREGL=i()},{}],481:[function(t,e,r){\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||\"undefined\"==typeof n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],482:[function(t,e,r){(function(t){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],483:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i],s=(r=a+o)-a,l=o-s;l&&(t[--n]=r,r=l)}for(var c=0,i=n;i<e;++i){var a=t[i],o=r,s=(r=a+o)-a,l=o-s;l&&(t[c++]=l)}return t[c++]=r,t.length=c,t}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"two-product\"),i=t(\"robust-sum\"),a=t(\"robust-scale\"),o=t(\"robust-compress\"),s=6;function l(t,e){for(var r=new Array(t.length-1),n=1;n<t.length;++n)for(var i=r[n-1]=new Array(t.length-1),a=0,o=0;a<t.length;++a)a!==e&&(i[o++]=t[n][a]);return r}function c(t){if(2===t.length)return[\"sum(prod(\",t[0][0],\",\",t[1][1],\"),prod(-\",t[0][1],\",\",t[1][0],\"))\"].join(\"\");for(var e=[],r=0;r<t.length;++r)e.push([\"scale(\",c(l(t,r)),\",\",(n=r,1&n?\"-\":\"\"),t[0][r],\")\"].join(\"\"));return function t(e){if(1===e.length)return e[0];if(2===e.length)return[\"sum(\",e[0],\",\",e[1],\")\"].join(\"\");var r=e.length>>1;return[\"sum(\",t(e.slice(0,r)),\",\",t(e.slice(r)),\")\"].join(\"\")}(e);var n}function u(t){return new Function(\"sum\",\"scale\",\"prod\",\"compress\",[\"function robustDeterminant\",t,\"(m){return compress(\",c(function(t){for(var e=new Array(t),r=0;r<t;++r){e[r]=new Array(t);for(var n=0;n<t;++n)e[r][n]=[\"m[\",r,\"][\",n,\"]\"].join(\"\")}return e}(t)),\")};return robustDeterminant\",t].join(\"\"))(i,a,n,o)}var f=[function(){return[0]},function(t){return[t[0][0]]}];!function(){for(;f.length<s;)f.push(u(f.length));for(var t=[],r=[\"function robustDeterminant(m){switch(m.length){\"],n=0;n<s;++n)t.push(\"det\"+n),r.push(\"case \",n,\":return det\",n,\"(m);\");r.push(\"}var det=CACHE[m.length];if(!det)det=CACHE[m.length]=gen(m.length);return det(m);}return robustDeterminant\"),t.push(\"CACHE\",\"gen\",r.join(\"\"));var i=Function.apply(void 0,t);for(e.exports=i.apply(void 0,f.concat([f,u])),n=0;n<f.length;++n)e.exports[n]=f[n]}()},{\"robust-compress\":483,\"robust-scale\":490,\"robust-sum\":493,\"two-product\":521}],485:[function(t,e,r){\"use strict\";var n=t(\"two-product\"),i=t(\"robust-sum\");e.exports=function(t,e){for(var r=n(t[0],e[0]),a=1;a<t.length;++a)r=i(r,n(t[a],e[a]));return r}},{\"robust-sum\":493,\"two-product\":521}],486:[function(t,e,r){\"use strict\";var n=t(\"two-product\"),i=t(\"robust-sum\"),a=t(\"robust-subtract\"),o=t(\"robust-scale\"),s=6;function l(t,e){for(var r=new Array(t.length-1),n=1;n<t.length;++n)for(var i=r[n-1]=new Array(t.length-1),a=0,o=0;a<t.length;++a)a!==e&&(i[o++]=t[n][a]);return r}function c(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var e=t.length>>1;return[\"sum(\",c(t.slice(0,e)),\",\",c(t.slice(e)),\")\"].join(\"\")}function u(t,e){if(\"m\"===t.charAt(0)){if(\"w\"===e.charAt(0)){var r=t.split(\"[\");return[\"w\",e.substr(1),\"m\",r[0].substr(1)].join(\"\")}return[\"prod(\",t,\",\",e,\")\"].join(\"\")}return u(e,t)}function f(t){if(2===t.length)return[[\"diff(\",u(t[0][0],t[1][1]),\",\",u(t[1][0],t[0][1]),\")\"].join(\"\")];for(var e=[],r=0;r<t.length;++r)e.push([\"scale(\",c(f(l(t,r))),\",\",(n=r,!0&n?\"-\":\"\"),t[0][r],\")\"].join(\"\"));return e;var n}function h(t,e){for(var r=[],n=0;n<e-2;++n)r.push([\"prod(m\",t,\"[\",n,\"],m\",t,\"[\",n,\"])\"].join(\"\"));return c(r)}function p(t){for(var e=[],r=[],s=function(t){for(var e=new Array(t),r=0;r<t;++r){e[r]=new Array(t);for(var n=0;n<t;++n)e[r][n]=[\"m\",n,\"[\",t-r-2,\"]\"].join(\"\")}return e}(t),u=0;u<t;++u)s[0][u]=\"1\",s[t-1][u]=\"w\"+u;for(u=0;u<t;++u)0==(1&u)?e.push.apply(e,f(l(s,u))):r.push.apply(r,f(l(s,u)));var p=c(e),d=c(r),g=\"exactInSphere\"+t,v=[];for(u=0;u<t;++u)v.push(\"m\"+u);var m=[\"function \",g,\"(\",v.join(),\"){\"];for(u=0;u<t;++u){m.push(\"var w\",u,\"=\",h(u,t),\";\");for(var y=0;y<t;++y)y!==u&&m.push(\"var w\",u,\"m\",y,\"=scale(w\",u,\",m\",y,\"[0]);\")}return m.push(\"var p=\",p,\",n=\",d,\",d=diff(p,n);return d[d.length-1];}return \",g),new Function(\"sum\",\"diff\",\"prod\",\"scale\",m.join(\"\"))(i,a,n,o)}var d=[function(){return 0},function(){return 0},function(){return 0}];!function(){for(;d.length<=s;)d.push(p(d.length));for(var t=[],r=[\"slow\"],n=0;n<=s;++n)t.push(\"a\"+n),r.push(\"o\"+n);var i=[\"function testInSphere(\",t.join(),\"){switch(arguments.length){case 0:case 1:return 0;\"];for(n=2;n<=s;++n)i.push(\"case \",n,\":return o\",n,\"(\",t.slice(0,n).join(),\");\");i.push(\"}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return testInSphere\"),r.push(i.join(\"\"));var a=Function.apply(void 0,r);for(e.exports=a.apply(void 0,[function(t){var e=d[t.length];return e||(e=d[t.length]=p(t.length)),e.apply(void 0,t)}].concat(d)),n=0;n<=s;++n)e.exports[n]=d[n]}()},{\"robust-scale\":490,\"robust-subtract\":492,\"robust-sum\":493,\"two-product\":521}],487:[function(t,e,r){\"use strict\";var n=t(\"robust-determinant\"),i=6;function a(t){for(var e=\"robustLinearSolve\"+t+\"d\",r=[\"function \",e,\"(A,b){return [\"],i=0;i<t;++i){r.push(\"det([\");for(var a=0;a<t;++a){a>0&&r.push(\",\"),r.push(\"[\");for(var o=0;o<t;++o)o>0&&r.push(\",\"),o===i?r.push(\"+b[\",a,\"]\"):r.push(\"+A[\",a,\"][\",o,\"]\");r.push(\"]\")}r.push(\"]),\")}r.push(\"det(A)]}return \",e);var s=new Function(\"det\",r.join(\"\"));return s(t<6?n[t]:n)}var o=[function(){return[0]},function(t,e){return[[e[0]],[t[0][0]]]}];!function(){for(;o.length<i;)o.push(a(o.length));for(var t=[],r=[\"function dispatchLinearSolve(A,b){switch(A.length){\"],n=0;n<i;++n)t.push(\"s\"+n),r.push(\"case \",n,\":return s\",n,\"(A,b);\");r.push(\"}var s=CACHE[A.length];if(!s)s=CACHE[A.length]=g(A.length);return s(A,b)}return dispatchLinearSolve\"),t.push(\"CACHE\",\"g\",r.join(\"\"));var s=Function.apply(void 0,t);for(e.exports=s.apply(void 0,o.concat([o,a])),n=0;n<i;++n)e.exports[n]=o[n]}()},{\"robust-determinant\":484}],488:[function(t,e,r){\"use strict\";var n=t(\"two-product\"),i=t(\"robust-sum\"),a=t(\"robust-scale\"),o=t(\"robust-subtract\"),s=5;function l(t,e){for(var r=new Array(t.length-1),n=1;n<t.length;++n)for(var i=r[n-1]=new Array(t.length-1),a=0,o=0;a<t.length;++a)a!==e&&(i[o++]=t[n][a]);return r}function c(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var e=t.length>>1;return[\"sum(\",c(t.slice(0,e)),\",\",c(t.slice(e)),\")\"].join(\"\")}function u(t){if(2===t.length)return[[\"sum(prod(\",t[0][0],\",\",t[1][1],\"),prod(-\",t[0][1],\",\",t[1][0],\"))\"].join(\"\")];for(var e=[],r=0;r<t.length;++r)e.push([\"scale(\",c(u(l(t,r))),\",\",(n=r,1&n?\"-\":\"\"),t[0][r],\")\"].join(\"\"));return e;var n}function f(t){for(var e=[],r=[],s=function(t){for(var e=new Array(t),r=0;r<t;++r){e[r]=new Array(t);for(var n=0;n<t;++n)e[r][n]=[\"m\",n,\"[\",t-r-1,\"]\"].join(\"\")}return e}(t),f=[],h=0;h<t;++h)0==(1&h)?e.push.apply(e,u(l(s,h))):r.push.apply(r,u(l(s,h))),f.push(\"m\"+h);var p=c(e),d=c(r),g=\"orientation\"+t+\"Exact\",v=[\"function \",g,\"(\",f.join(),\"){var p=\",p,\",n=\",d,\",d=sub(p,n);return d[d.length-1];};return \",g].join(\"\");return new Function(\"sum\",\"prod\",\"scale\",\"sub\",v)(i,n,a,o)}var h=f(3),p=f(4),d=[function(){return 0},function(){return 0},function(t,e){return e[0]-t[0]},function(t,e,r){var n,i=(t[1]-r[1])*(e[0]-r[0]),a=(t[0]-r[0])*(e[1]-r[1]),o=i-a;if(i>0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=3.3306690738754716e-16*n;return o>=s||o<=-s?o:h(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],h=r[2]-n[2],d=a*c,g=o*l,v=o*s,m=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(v-m)+h*(y-x),_=7.771561172376103e-16*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(v)+Math.abs(m))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(h));return b>_||-b>_?b:p(t,e,r,n)}];!function(){for(;d.length<=s;)d.push(f(d.length));for(var t=[],r=[\"slow\"],n=0;n<=s;++n)t.push(\"a\"+n),r.push(\"o\"+n);var i=[\"function getOrientation(\",t.join(),\"){switch(arguments.length){case 0:case 1:return 0;\"];for(n=2;n<=s;++n)i.push(\"case \",n,\":return o\",n,\"(\",t.slice(0,n).join(),\");\");i.push(\"}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return getOrientation\"),r.push(i.join(\"\"));var a=Function.apply(void 0,r);for(e.exports=a.apply(void 0,[function(t){var e=d[t.length];return e||(e=d[t.length]=f(t.length)),e.apply(void 0,t)}].concat(d)),n=0;n<=s;++n)e.exports[n]=d[n]}()},{\"robust-scale\":490,\"robust-subtract\":492,\"robust-sum\":493,\"two-product\":521}],489:[function(t,e,r){\"use strict\";var n=t(\"robust-sum\"),i=t(\"robust-scale\");e.exports=function(t,e){if(1===t.length)return i(e,t[0]);if(1===e.length)return i(t,e[0]);if(0===t.length||0===e.length)return[0];var r=[0];if(t.length<e.length)for(var a=0;a<t.length;++a)r=n(r,i(e,t[a]));else for(var a=0;a<e.length;++a)r=n(r,i(t,e[a]));return r}},{\"robust-scale\":490,\"robust-sum\":493}],490:[function(t,e,r){\"use strict\";var n=t(\"two-product\"),i=t(\"two-sum\");e.exports=function(t,e){var r=t.length;if(1===r){var a=n(t[0],e);return a[0]?a:[a[1]]}var o=new Array(2*r),s=[.1,.1],l=[.1,.1],c=0;n(t[0],e,s),s[0]&&(o[c++]=s[0]);for(var u=1;u<r;++u){n(t[u],e,l);var f=s[1];i(f,l[0],s),s[0]&&(o[c++]=s[0]);var h=l[1],p=s[1],d=h+p,g=d-h,v=p-g;s[1]=d,v&&(o[c++]=v)}s[1]&&(o[c++]=s[1]);0===c&&(o[c++]=0);return o.length=c,o}},{\"two-product\":521,\"two-sum\":522}],491:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){var a=n(t,r,i),o=n(e,r,i);if(a>0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u),h=Math.max(c,u);if(h<s||l<f)return!1}return!0}(t,e,r,i);return!0};var n=t(\"robust-orientation\")[3]},{\"robust-orientation\":488}],492:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=0|t.length,n=0|e.length;if(1===r&&1===n)return function(t,e){var r=t+e,n=r-t,i=t-(r-n)+(e-n);if(i)return[i,r];return[r]}(t[0],-e[0]);var i,a,o=new Array(r+n),s=0,l=0,c=0,u=Math.abs,f=t[l],h=u(f),p=-e[c],d=u(p);h<d?(a=f,(l+=1)<r&&(f=t[l],h=u(f))):(a=p,(c+=1)<n&&(p=-e[c],d=u(p)));l<r&&h<d||c>=n?(i=f,(l+=1)<r&&(f=t[l],h=u(f))):(i=p,(c+=1)<n&&(p=-e[c],d=u(p)));var g,v,m=i+a,y=m-i,x=a-y,b=x,_=m;for(;l<r&&c<n;)h<d?(i=f,(l+=1)<r&&(f=t[l],h=u(f))):(i=p,(c+=1)<n&&(p=-e[c],d=u(p))),(x=(a=b)-(y=(m=i+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g;for(;l<r;)(x=(a=b)-(y=(m=(i=f)+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g,(l+=1)<r&&(f=t[l]);for(;c<n;)(x=(a=b)-(y=(m=(i=p)+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g,(c+=1)<n&&(p=-e[c]);b&&(o[s++]=b);_&&(o[s++]=_);s||(o[s++]=0);return o.length=s,o}},{}],493:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=0|t.length,n=0|e.length;if(1===r&&1===n)return function(t,e){var r=t+e,n=r-t,i=t-(r-n)+(e-n);if(i)return[i,r];return[r]}(t[0],e[0]);var i,a,o=new Array(r+n),s=0,l=0,c=0,u=Math.abs,f=t[l],h=u(f),p=e[c],d=u(p);h<d?(a=f,(l+=1)<r&&(f=t[l],h=u(f))):(a=p,(c+=1)<n&&(p=e[c],d=u(p)));l<r&&h<d||c>=n?(i=f,(l+=1)<r&&(f=t[l],h=u(f))):(i=p,(c+=1)<n&&(p=e[c],d=u(p)));var g,v,m=i+a,y=m-i,x=a-y,b=x,_=m;for(;l<r&&c<n;)h<d?(i=f,(l+=1)<r&&(f=t[l],h=u(f))):(i=p,(c+=1)<n&&(p=e[c],d=u(p))),(x=(a=b)-(y=(m=i+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g;for(;l<r;)(x=(a=b)-(y=(m=(i=f)+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g,(l+=1)<r&&(f=t[l]);for(;c<n;)(x=(a=b)-(y=(m=(i=p)+a)-i))&&(o[s++]=x),b=_-((g=_+m)-(v=g-_))+(m-v),_=g,(c+=1)<n&&(p=e[c]);b&&(o[s++]=b);_&&(o[s++]=_);s||(o[s++]=0);return o.length=s,o}},{}],494:[function(t,e,r){\"use strict\";e.exports=function(t){return t<0?-1:t>0?1:0}},{}],495:[function(t,e,r){\"use strict\";e.exports=function(t){return i(n(t))};var n=t(\"boundary-cells\"),i=t(\"reduce-simplicial-complex\")},{\"boundary-cells\":84,\"reduce-simplicial-complex\":475}],496:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,s){r=r||0,\"undefined\"==typeof s&&(s=function(t){for(var e=t.length,r=0,n=0;n<e;++n)r=0|Math.max(r,t[n].length);return r-1}(t));if(0===t.length||s<1)return{cells:[],vertexIds:[],vertexWeights:[]};var l=function(t,e){for(var r=t.length,n=i.mallocUint8(r),a=0;a<r;++a)n[a]=t[a]<e|0;return n}(e,+r),c=function(t,e){for(var r=t.length,o=e*(e+1)/2*r|0,s=i.mallocUint32(2*o),l=0,c=0;c<r;++c)for(var u=t[c],e=u.length,f=0;f<e;++f)for(var h=0;h<f;++h){var p=u[h],d=u[f];s[l++]=0|Math.min(p,d),s[l++]=0|Math.max(p,d)}a(n(s,[l/2|0,2]));for(var g=2,c=2;c<l;c+=2)s[c-2]===s[c]&&s[c-1]===s[c+1]||(s[g++]=s[c],s[g++]=s[c+1]);return n(s,[g/2|0,2])}(t,s),u=function(t,e,r,a){for(var o=t.data,s=t.shape[0],l=i.mallocDouble(s),c=0,u=0;u<s;++u){var f=o[2*u],h=o[2*u+1];if(r[f]!==r[h]){var p=e[f],d=e[h];o[2*c]=f,o[2*c+1]=h,l[c++]=(d-a)/(d-p)}}return t.shape[0]=c,n(l,[c])}(c,e,l,+r),f=function(t,e){var r=i.mallocInt32(2*e),n=t.shape[0],a=t.data;r[0]=0;for(var o=0,s=0;s<n;++s){var l=a[2*s];if(l!==o){for(r[2*o+1]=s;++o<l;)r[2*o]=s,r[2*o+1]=s;r[2*o]=s}}r[2*o+1]=n;for(;++o<e;)r[2*o]=r[2*o+1]=n;return r}(c,0|e.length),h=o(s)(t,c.data,f,l),p=function(t){for(var e=0|t.shape[0],r=t.data,n=new Array(e),i=0;i<e;++i)n[i]=[r[2*i],r[2*i+1]];return n}(c),d=[].slice.call(u.data,0,u.shape[0]);return i.free(l),i.free(c.data),i.free(u.data),i.free(f),{cells:h,vertexIds:p,vertexWeights:d}};var n=t(\"ndarray\"),i=t(\"typedarray-pool\"),a=t(\"ndarray-sort\"),o=t(\"./lib/codegen\")},{\"./lib/codegen\":497,ndarray:436,\"ndarray-sort\":434,\"typedarray-pool\":523}],497:[function(t,e,r){\"use strict\";e.exports=function(t){var e=a[t];e||(e=a[t]=function(t){var e=0,r=new Array(t+1);r[0]=[[]];for(var a=1;a<=t;++a)for(var o=r[a]=i(a),s=0;s<o.length;++s)e=Math.max(e,o[a].length);var l=[\"function B(C,E,i,j){\",\"var a=Math.min(i,j)|0,b=Math.max(i,j)|0,l=C[2*a],h=C[2*a+1];\",\"while(l<h){\",\"var m=(l+h)>>1,v=E[2*m+1];\",\"if(v===b){return m}\",\"if(b<v){h=m}else{l=m+1}\",\"}\",\"return l;\",\"};\",\"function getContour\",t,\"d(F,E,C,S){\",\"var n=F.length,R=[];\",\"for(var i=0;i<n;++i){var c=F[i],l=c.length;\"];function c(t){if(!(t.length<=0)){l.push(\"R.push(\");for(var e=0;e<t.length;++e){var r=t[e];e>0&&l.push(\",\"),l.push(\"[\");for(var n=0;n<r.length;++n){var i=r[n];n>0&&l.push(\",\"),l.push(\"B(C,E,c[\",i[0],\"],c[\",i[1],\"])\")}l.push(\"]\")}l.push(\");\")}}for(var a=t+1;a>1;--a){a<t+1&&l.push(\"else \"),l.push(\"if(l===\",a,\"){\");for(var u=[],s=0;s<a;++s)u.push(\"(S[c[\"+s+\"]]<<\"+s+\")\");l.push(\"var M=\",u.join(\"+\"),\";if(M===0||M===\",(1<<a)-1,\"){continue}switch(M){\");for(var o=r[a-1],s=0;s<o.length;++s)l.push(\"case \",s,\":\"),c(o[s]),l.push(\"break;\");l.push(\"}}\")}return l.push(\"}return R;};return getContour\",t,\"d\"),new Function(\"pool\",l.join(\"\"))(n)}(t));return e};var n=t(\"typedarray-pool\"),i=t(\"marching-simplex-table\"),a={}},{\"marching-simplex-table\":413,\"typedarray-pool\":523}],498:[function(t,e,r){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"union-find\");function a(t,e){var r=t.length,n=t.length-e.length,i=Math.min;if(n)return n;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:return(s=t[0]+t[1]-e[0]-e[1])||i(t[0],t[1])-i(e[0],e[1]);case 3:var a=t[0]+t[1],o=e[0]+e[1];if(s=a+t[2]-(o+e[2]))return s;var s,l=i(t[0],t[1]),c=i(e[0],e[1]);return(s=i(l,t[2])-i(c,e[2]))||i(l+t[2],a)-i(c+e[2],o);default:var u=t.slice(0);u.sort();var f=e.slice(0);f.sort();for(var h=0;h<r;++h)if(n=u[h]-f[h])return n;return 0}}function o(t,e){return a(t[0],e[0])}function s(t,e){if(e){for(var r=t.length,n=new Array(r),i=0;i<r;++i)n[i]=[t[i],e[i]];n.sort(o);for(i=0;i<r;++i)t[i]=n[i][0],e[i]=n[i][1];return t}return t.sort(a),t}function l(t){if(0===t.length)return[];for(var e=1,r=t.length,n=1;n<r;++n){var i=t[n];if(a(i,t[n-1])){if(n===e){e++;continue}t[e++]=i}}return t.length=e,t}function c(t,e){for(var r=0,n=t.length-1,i=-1;r<=n;){var o=r+n>>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i<o;++i)r[i]=[];for(var s=[],l=(i=0,e.length);i<l;++i)for(var u=e[i],f=u.length,h=1,p=1<<f;h<p;++h){s.length=n.popCount(h);for(var d=0,g=0;g<f;++g)h&1<<g&&(s[d++]=u[g]);var v=c(t,s);if(!(v<0))for(;r[v++].push(i),!(v>=t.length||0!==a(t[v],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<<e+1)-1,a=0;a<t.length;++a)for(var o=t[a],l=i;l<1<<o.length;l=n.nextCombination(l)){for(var c=new Array(e+1),u=0,f=0;f<o.length;++f)l&1<<f&&(c[u++]=o[f]);r.push(c)}return s(r)}r.dimension=function(t){for(var e=0,r=Math.max,n=0,i=t.length;n<i;++n)e=r(e,t[n].length);return e-1},r.countVertices=function(t){for(var e=-1,r=Math.max,n=0,i=t.length;n<i;++n)for(var a=t[n],o=0,s=a.length;o<s;++o)e=r(e,a[o]);return e+1},r.cloneCells=function(t){for(var e=new Array(t.length),r=0,n=t.length;r<n;++r)e[r]=t[r].slice(0);return e},r.compareCells=a,r.normalize=s,r.unique=l,r.findCell=c,r.incidence=u,r.dual=function(t,e){if(!e)return u(l(f(t,0)),t);for(var r=new Array(e),n=0;n<e;++n)r[n]=[];n=0;for(var i=t.length;n<i;++n)for(var a=t[n],o=0,s=a.length;o<s;++o)r[a[o]].push(n);return r},r.explode=function(t){for(var e=[],r=0,n=t.length;r<n;++r)for(var i=t[r],a=0|i.length,o=1,l=1<<a;o<l;++o){for(var c=[],u=0;u<a;++u)o>>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r<n;++r)for(var i=t[r],a=0,o=i.length;a<o;++a){for(var l=new Array(i.length-1),c=0,u=0;c<o;++c)c!==a&&(l[u++]=i[c]);e.push(l)}return s(e)},r.connectedComponents=function(t,e){return e?function(t,e){for(var r=new i(e),n=0;n<t.length;++n)for(var a=t[n],o=0;o<a.length;++o)for(var s=o+1;s<a.length;++s)r.link(a[o],a[s]);var l=[],c=r.ranks;for(n=0;n<c.length;++n)c[n]=-1;for(n=0;n<t.length;++n){var u=r.find(t[n][0]);c[u]<0?(c[u]=l.length,l.push([t[n].slice(0)])):l[c[u]].push(t[n].slice(0))}return l}(t,e):function(t){for(var e=l(s(f(t,0))),r=new i(e.length),n=0;n<t.length;++n)for(var a=t[n],o=0;o<a.length;++o)for(var u=c(e,[a[o]]),h=o+1;h<a.length;++h)r.link(u,c(e,[a[h]]));var p=[],d=r.ranks;for(n=0;n<d.length;++n)d[n]=-1;for(n=0;n<t.length;++n){var g=r.find(c(e,[t[n][0]]));d[g]<0?(d[g]=p.length,p.push([t[n].slice(0)])):p[d[g]].push(t[n].slice(0))}return p}(t)}},{\"bit-twiddle\":81,\"union-find\":524}],499:[function(t,e,r){arguments[4][81][0].apply(r,arguments)},{dup:81}],500:[function(t,e,r){arguments[4][498][0].apply(r,arguments)},{\"bit-twiddle\":499,dup:498,\"union-find\":501}],501:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e<t;++e)this.roots[e]=e,this.ranks[e]=0}e.exports=n,n.prototype.length=function(){return this.roots.length},n.prototype.makeSet=function(){var t=this.roots.length;return this.roots.push(t),this.ranks.push(0),t},n.prototype.find=function(t){for(var e=this.roots;e[t]!==t;){var r=e[t];e[t]=e[r],t=r}return t},n.prototype.link=function(t,e){var r=this.find(t),n=this.find(e);if(r!==n){var i=this.ranks,a=this.roots,o=i[r],s=i[n];o<s?a[r]=n:s<o?a[n]=r:(a[n]=r,++i[r])}}},{}],502:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){for(var a=e.length,o=t.length,s=new Array(a),l=new Array(a),c=new Array(a),u=new Array(a),f=0;f<a;++f)s[f]=l[f]=-1,c[f]=1/0,u[f]=!1;for(var f=0;f<o;++f){var h=t[f];if(2!==h.length)throw new Error(\"Input must be a graph\");var p=h[1],d=h[0];-1!==l[d]?l[d]=-2:l[d]=p,-1!==s[p]?s[p]=-2:s[p]=d}function g(t){if(u[t])return 1/0;var r,i,a,o,c,f=s[t],h=l[t];return f<0||h<0?1/0:(r=e[t],i=e[f],a=e[h],o=Math.abs(n(r,i,a)),c=Math.sqrt(Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)),o/c)}function v(t,e){var r=A[t],n=A[e];A[t]=n,A[e]=r,M[r]=e,M[n]=t}function m(t){return c[A[t]]}function y(t){return 1&t?t-1>>1:(t>>1)-1}function x(t){for(var e=m(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n<S){var o=m(n);o<r&&(a=n,r=o)}if(i<S){var s=m(i);s<r&&(a=i)}if(a===t)return t;v(t,a),t=a}}function b(t){for(var e=m(t);t>0;){var r=y(t);if(r>=0){var n=m(r);if(e<n){v(t,r),t=r;continue}}return t}}function _(){if(S>0){var t=A[0];return v(0,S-1),S-=1,x(0),t}return-1}function w(t,e){var r=A[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((S+=1)-1))}function k(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),M[e]>=0&&w(M[e],g(e)),M[r]>=0&&w(M[r],g(r))}}for(var A=[],M=new Array(a),f=0;f<a;++f){var T=c[f]=g(f);T<1/0?(M[f]=A.length,A.push(f)):M[f]=-1}for(var S=A.length,f=S>>1;f>=0;--f)x(f);for(;;){var C=_();if(C<0||c[C]>r)break;k(C)}for(var E=[],f=0;f<a;++f)u[f]||(M[f]=E.length,E.push(e[f].slice()));E.length;function L(t,e){if(t[e]<0)return e;var r=e,n=e;do{var i=t[n];if(!u[n]||i<0||i===n)break;if(i=t[n=i],!u[n]||i<0||i===n)break;n=i,r=t[r]}while(r!==n);for(var a=e;a!==n;a=t[a])t[a]=n;return n}var z=[];return t.forEach(function(t){var e=L(s,t[0]),r=L(l,t[1]);if(e>=0&&r>=0&&e!==r){var n=M[e],i=M[r];n!==i&&z.push([n,i])}}),i.unique(i.normalize(z)),{positions:E,edges:z}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":488,\"simplicial-complex\":500}],503:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]<e[1][0])r=e[0],a=e[1];else{if(!(e[0][0]>e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]<t[1][0])o=t[0],s=t[1];else{if(!(t[0][0]>t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]<e[1][0])r=e[0],i=e[1];else{if(!(e[0][0]>e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return l<c?l-c:s>u?s-u:l-u}r=e[1],i=e[0]}t[0][1]<t[1][1]?(a=t[0],o=t[1]):(a=t[1],o=t[0]);var f=n(i,r,a);return f||((f=n(i,r,o))||o-i)}},{\"robust-orientation\":488}],504:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=2*e,n=new Array(r),a=0;a<e;++a){var l=t[a],c=l[0][0]<l[1][0];n[2*a]=new f(l[0][0],l,c,a),n[2*a+1]=new f(l[1][0],l,!c,a)}n.sort(function(t,e){var r=t.x-e.x;return r||((r=t.create-e.create)||Math.min(t.segment[0][1],t.segment[1][1])-Math.min(e.segment[0][1],e.segment[1][1]))});for(var h=i(o),p=[],d=[],g=[],a=0;a<r;){for(var v=n[a].x,m=[];a<r;){var y=n[a];if(y.x!==v)break;a+=1,y.segment[0][0]===y.x&&y.segment[1][0]===y.x?y.create&&(y.segment[0][1]<y.segment[1][1]?(m.push(new u(y.segment[0][1],y.index,!0,!0)),m.push(new u(y.segment[1][1],y.index,!1,!1))):(m.push(new u(y.segment[1][1],y.index,!0,!1)),m.push(new u(y.segment[0][1],y.index,!1,!0)))):h=y.create?h.insert(y.segment,y.index):h.remove(y.segment)}p.push(h.root),d.push(v),g.push(m)}return new s(p,d,g)};var n=t(\"binary-search-bounds\"),i=t(\"functional-red-black-tree\"),a=t(\"robust-orientation\"),o=t(\"./lib/order-segments\");function s(t,e,r){this.slabs=t,this.coordinates=e,this.horizontal=r}function l(t,e){return t.y-e}function c(t,e){for(var r=null;t;){var n,i,o=t.key;o[0][0]<o[1][0]?(n=o[0],i=o[1]):(n=o[1],i=o[0]);var s=a(n,i,e);if(s<0)t=t.left;else if(s>0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h<f.length){var p=f[h];if(t[1]===p.y){if(p.closed)return p.index;for(;h<f.length-1&&f[h+1].y===t[1];)if((p=f[h+=1]).closed)return p.index;if(p.y===t[1]&&!p.start){if((h+=1)>=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":503,\"binary-search-bounds\":80,\"functional-red-black-tree\":220,\"robust-orientation\":488}],505:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l<o;++l)s[l]=i*t[l]+a*r[l];return s}e.exports=function(t,e){for(var r=[],n=[],i=a(t[t.length-1],e),s=t[t.length-1],l=t[0],c=0;c<t.length;++c,s=l){var u=a(l=t[c],e);if(i<0&&u>0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l<t.length;++l,i=s){var c=a(s=t[l],e);(n<0&&c>0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l<t.length;++l,i=s){var c=a(s=t[l],e);(n<0&&c>0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":485,\"robust-sum\":493}],506:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(r){return function(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a<d;a++)if(\"string\"==typeof r[a])g+=r[a];else if(\"object\"==typeof r[a]){if((s=r[a]).keys)for(i=n[p],o=0;o<s.keys.length;o++){if(null==i)throw new Error(e('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"',s.keys[o],s.keys[o-1]));i=i[s.keys[o]]}else i=s.param_no?n[s.param_no]:n[p++];if(t.not_type.test(s.type)&&t.not_primitive.test(s.type)&&i instanceof Function&&(i=i()),t.numeric_arg.test(s.type)&&\"number\"!=typeof i&&isNaN(i))throw new TypeError(e(\"[sprintf] expecting number but found %T\",i));switch(t.number.test(s.type)&&(f=i>=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}(function(e){if(i[e])return i[e];var r,n=e,a=[],o=0;for(;n;){if(null!==(r=t.text.exec(n)))a.push(r[0]);else if(null!==(r=t.modulo.exec(n)))a.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");a.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return i[e]=a}(r),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}var i=Object.create(null);\"undefined\"!=typeof r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],507:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map(function(t){return 1===t.length&&(t+=t),t}));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s<a.length;s++){var l=a[s],c=a[s+1];\"\\\\\"===l[l.length-1]&&\"\\\\\"!==l[l.length-2]?(o.push(l+e+c),s++):o.push(l)}a=o}for(s=0;s<a.length;s++)i[0]=a[s],a[s]=n.stringify(i,{flat:!0});return a}},{parenthesis:444}],508:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=new Array(e),n=new Array(e),i=new Array(e),a=new Array(e),o=new Array(e),s=new Array(e),l=0;l<e;++l)r[l]=-1,n[l]=0,i[l]=!1,a[l]=0,o[l]=-1,s[l]=[];var c,u=0,f=[],h=[];function p(e){var l=[e],c=[e];for(r[e]=n[e]=u,i[e]=!0,u+=1;c.length>0;){e=c[c.length-1];var p=t[e];if(a[e]<p.length){for(var d=a[e];d<p.length;++d){var g=p[d];if(r[g]<0){r[g]=n[g]=u,i[g]=!0,u+=1,l.push(g),c.push(g);break}i[g]&&(n[e]=0|Math.min(n[e],n[g])),o[g]>=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){for(var v=[],m=[],y=0,d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,v.push(x),m.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(v);for(var b=new Array(y),d=0;d<m.length;d++)for(var _=0;_<m[d].length;_++)b[--y]=m[d][_];h.push(b)}c.pop()}}}for(var l=0;l<e;++l)r[l]<0&&p(l);for(var l=0;l<h.length;l++){var d=h[l];if(0!==d.length){d.sort(function(t,e){return t-e}),c=[d[0]];for(var g=1;g<d.length;g++)d[g]!==d[g-1]&&c.push(d[g]);h[l]=c}}return{components:f,adjacencyList:h}}},{}],509:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=a(t,e),n=r.length,i=new Array(n),o=new Array(n),s=0;s<n;++s)i[s]=[r[s]],o[s]=[s];return{positions:i,cells:o}}(t,e);var r=t.order.join()+\"-\"+t.dtype,s=o[r],e=+e||0;s||(s=o[r]=function(t,e){var r=t.length,a=[\"'use strict';\"],o=\"surfaceNets\"+t.join(\"_\")+\"d\"+e;a.push(\"var contour=genContour({\",\"order:[\",t.join(),\"],\",\"scalarArguments: 3,\",\"phase:function phaseFunc(p,a,b,c) { return (p > c)|0 },\"),\"generic\"===e&&a.push(\"getters:[0],\");for(var s=[],l=[],c=0;c<r;++c)s.push(\"d\"+c),l.push(\"d\"+c);for(var c=0;c<1<<r;++c)s.push(\"v\"+c),l.push(\"v\"+c);for(var c=0;c<1<<r;++c)s.push(\"p\"+c),l.push(\"p\"+c);s.push(\"a\",\"b\",\"c\"),l.push(\"a\",\"c\"),a.push(\"vertex:function vertexFunc(\",s.join(),\"){\");for(var u=[],c=0;c<1<<r;++c)u.push(\"(p\"+c+\"<<\"+c+\")\");a.push(\"var m=(\",u.join(\"+\"),\")|0;if(m===0||m===\",(1<<(1<<r))-1,\"){return}\");var f=[],h=[];1<<(1<<r)<=128?(a.push(\"switch(m){\"),h=a):a.push(\"switch(m>>>7){\");for(var c=0;c<1<<(1<<r);++c){if(1<<(1<<r)>128&&c%128==0){f.length>0&&h.push(\"}}\");var p=\"vExtra\"+f.length;a.push(\"case \",c>>>7,\":\",p,\"(m&0x7f,\",l.join(),\");break;\"),h=[\"function \",p,\"(m,\",l.join(),\"){switch(m){\"],f.push(h)}h.push(\"case \",127&c,\":\");for(var d=new Array(r),g=new Array(r),v=new Array(r),m=new Array(r),y=0,x=0;x<r;++x)d[x]=[],g[x]=[],v[x]=0,m[x]=0;for(var x=0;x<1<<r;++x)for(var b=0;b<r;++b){var _=x^1<<b;if(!(_>x)&&!(c&1<<_)!=!(c&1<<x)){var w=1;c&1<<_?g[b].push(\"v\"+_+\"-v\"+x):(g[b].push(\"v\"+x+\"-v\"+_),w=-w),w<0?(d[b].push(\"-v\"+x+\"-v\"+_),v[b]+=2):(d[b].push(\"v\"+x+\"+v\"+_),v[b]-=2),y+=1;for(var k=0;k<r;++k)k!==b&&(_&1<<k?m[k]+=1:m[k]-=1)}}for(var A=[],b=0;b<r;++b)if(0===d[b].length)A.push(\"d\"+b+\"-0.5\");else{var M=\"\";v[b]<0?M=v[b]+\"*c\":v[b]>0&&(M=\"+\"+v[b]+\"*c\");var T=d[b].length/y*.5,S=.5+m[b]/y*.5;A.push(\"d\"+b+\"-\"+S+\"-\"+T+\"*(\"+d[b].join(\"+\")+M+\")/(\"+g[b].join(\"+\")+\")\")}h.push(\"a.push([\",A.join(),\"]);\",\"break;\")}a.push(\"}},\"),f.length>0&&h.push(\"}}\");for(var C=[],c=0;c<1<<r-1;++c)C.push(\"v\"+c);C.push(\"c0\",\"c1\",\"p0\",\"p1\",\"a\",\"b\",\"c\"),a.push(\"cell:function cellFunc(\",C.join(),\"){\");var E=i(r-1);a.push(\"if(p0){b.push(\",E.map(function(t){return\"[\"+t.map(function(t){return\"v\"+t})+\"]\"}).join(),\")}else{b.push(\",E.map(function(t){var e=t.slice();return e.reverse(),\"[\"+e.map(function(t){return\"v\"+t})+\"]\"}).join(),\")}}});function \",o,\"(array,level){var verts=[],cells=[];contour(array,verts,cells,level);return {positions:verts,cells:cells};} return \",o,\";\");for(var c=0;c<f.length;++c)a.push(f[c].join(\"\"));return new Function(\"genContour\",a.join(\"\"))(n)}(t.order,t.dtype));return s(t,e)};var n=t(\"ndarray-extract-contour\"),i=t(\"triangulate-hypercube\"),a=t(\"zero-crossings\");var o={}},{\"ndarray-extract-contour\":425,\"triangulate-hypercube\":519,\"zero-crossings\":552}],510:[function(t,e,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0});var n=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}return r}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),i=2*Math.PI,a=function(t,e,r,n,i,a,o){var s=t.x,l=t.y;return{x:n*(s*=e)-i*(l*=r)+a,y:i*s+n*l+o}},o=function(t,e){var r=.551915024494,n=Math.cos(t),i=Math.sin(t),a=Math.cos(t+e),o=Math.sin(t+e);return[{x:n-i*r,y:i+n*r},{x:a+o*r,y:o-a*r},{x:a,y:o}]},s=function(t,e,r,n){var i=t*n-e*r<0?-1:1,a=(t*r+e*n)/(Math.sqrt(t*t+e*e)*Math.sqrt(t*t+e*e));return a>1&&(a=1),a<-1&&(a=-1),i*Math.acos(a)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,v=t.sweepFlag,m=void 0===v?0:v,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var k=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);k>1&&(u*=Math.sqrt(k),f*=Math.sqrt(k));var A=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),v=Math.pow(h,2),m=Math.pow(p,2),y=d*g-d*m-g*v;y<0&&(y=0),y/=d*m+g*v;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,k=(h-x)/a,A=(p-b)/o,M=(-h-x)/a,T=(-p-b)/o,S=s(1,0,k,A),C=s(k,A,M,T);return 0===c&&C>0&&(C-=i),1===c&&C<0&&(C+=i),[_,w,S,C]}(e,r,l,c,u,f,g,m,x,b,_,w),M=n(A,4),T=M[0],S=M[1],C=M[2],E=M[3],L=Math.abs(E)/(i/4);Math.abs(1-L)<1e-7&&(L=1);var z=Math.max(Math.ceil(L),1);E/=z;for(var O=0;O<z;O++)y.push(o(C,E)),C+=E;return y.map(function(t){var e=a(t[0],u,f,b,x,T,S),r=e.x,n=e.y,i=a(t[1],u,f,b,x,T,S),o=i.x,s=i.y,l=a(t[2],u,f,b,x,T,S);return{x1:r,y1:n,x2:o,y2:s,x:l.x,y:l.y}})},e.exports=r.default},{}],511:[function(t,e,r){\"use strict\";var n=t(\"parse-svg-path\"),i=t(\"abs-svg-path\"),a=t(\"normalize-svg-path\"),o=t(\"is-svg-path\"),s=t(\"assert\");e.exports=function(t){Array.isArray(t)&&1===t.length&&\"string\"==typeof t[0]&&(t=t[0]);\"string\"==typeof t&&(s(o(t),\"String is not an SVG path.\"),t=n(t));if(s(Array.isArray(t),\"Argument should be a string or an array of path segments.\"),t=i(t),!(t=a(t)).length)return[0,0,0,0];for(var e=[1/0,1/0,-1/0,-1/0],r=0,l=t.length;r<l;r++)for(var c=t[r].slice(1),u=0;u<c.length;u+=2)c[u+0]<e[0]&&(e[0]=c[u+0]),c[u+1]<e[1]&&(e[1]=c[u+1]),c[u+0]>e[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":49,assert:57,\"is-svg-path\":410,\"normalize-svg-path\":512,\"parse-svg-path\":446}],512:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d<g;d++){var v=t[d],m=v[0];switch(m){case\"M\":l=v[1],c=v[2];break;case\"A\":var y=n({px:h,py:p,cx:v[6],cy:v[7],rx:v[1],ry:v[2],xAxisRotation:v[3],largeArcFlag:v[4],sweepFlag:v[5]});if(!y.length)continue;for(var x,b=0;b<y.length;b++)x=y[b],v=[\"C\",x.x1,x.y1,x.x2,x.y2,x.x,x.y],b<y.length-1&&r.push(v);break;case\"S\":var _=h,w=p;\"C\"!=e&&\"S\"!=e||(_+=_-o,w+=w-s),v=[\"C\",_,w,v[1],v[2],v[3],v[4]];break;case\"T\":\"Q\"==e||\"T\"==e?(u=2*h-u,f=2*p-f):(u=h,f=p),v=a(h,p,u,f,v[1],v[2]);break;case\"Q\":u=v[1],f=v[2],v=a(h,p,v[1],v[2],v[3],v[4]);break;case\"L\":v=i(h,p,v[1],v[2]);break;case\"H\":v=i(h,p,v[1],p);break;case\"V\":v=i(h,p,h,v[1]);break;case\"Z\":v=i(h,p,l,c)}e=m,h=v[v.length-2],p=v[v.length-1],v.length>4?(o=v[v.length-4],s=v[v.length-3]):(o=h,s=p),r.push(v)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":510}],513:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],v=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(v,v),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var m=new Path2D(t);u.fill(m),p&&u.stroke(m)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":154,\"is-svg-path\":410,\"parse-svg-path\":446,\"svg-path-bounds\":511}],514:[function(t,e,r){(function(r){\"use strict\";e.exports=function t(e,r,i){var i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o<e.length;++o)for(var s=e[o],l=0;l<3;++l){var c=r[s[l]];n[i++]=c[0],n[i++]=c[1]+1.4,a=Math.max(c[0],a)}return{data:n,shape:a}}(n(r,{triangles:!0,font:e,textAlign:i.textAlign||\"left\",textBaseline:\"alphabetic\",styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}}));else{for(var l=r.split(/(\\d|\\s)/),c=new Array(l.length),u=0,f=0,h=0;h<l.length;++h)c[h]=t(e,l[h]),u+=c[h].data.length,f+=c[h].shape,h>0&&(f+=.02);for(var p=new Float32Array(u),d=0,g=-.5*f,h=0;h<c.length;++h){for(var v=c[h].data,m=0;m<v.length;m+=2)p[d++]=v[m]+g,p[d++]=v[m+1];g+=c[h].shape+.02}s=o[r]={data:p,shape:f}}return s};var n=t(\"vectorize-text\"),i=window||r.global||{},a=i.__TEXT_CACHE||{};i.__TEXT_CACHE={}}).call(this,t(\"_process\"))},{_process:468,\"vectorize-text\":528}],515:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:O(e[1]),g:O(e[2]),b:O(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:O(e[1]),g:O(e[2]),b:O(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:O(e[1]+\"\"+e[1]),g:O(e[2]+\"\"+e[2]),b:O(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:O(e[1]+\"\"+e[1]),g:O(e[2]+\"\"+e[2]),b:O(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(V(e.r)&&V(e.g)&&V(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*L(p,255),g:255*L(d,255),b:255*L(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):V(e.h)&&V(e.s)&&V(e.v)?(l=D(e.s),c=D(e.v),i=function(e,r,n){e=6*L(e,360),r=L(r,100),n=L(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):V(e.h)&&V(e.s)&&V(e.l)&&(l=D(e.s),u=D(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=L(t,360),e=L(e,100),r=L(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=E(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=L(t,255),e=L(e,255),r=L(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e<r?6:0);break;case e:n=(r-t)/u+2;break;case r:n=(t-e)/u+4}n/=6}return{h:n,s:i,l:c}}function f(t,e,r){t=L(t,255),e=L(e,255),r=L(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=a,u=a-l;if(i=0===a?0:u/a,a==l)n=0;else{switch(a){case t:n=(e-r)/u+(e<r?6:0);break;case e:n=(r-t)/u+2;break;case r:n=(t-e)/u+4}n/=6}return{h:n,s:i,v:c}}function h(t,e,r,n){var i=[I(a(t).toString(16)),I(a(e).toString(16)),I(a(r).toString(16))];return n&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(\"\")}function p(t,e,r,n){return[I(P(n)),I(a(t).toString(16)),I(a(e).toString(16)),I(a(r).toString(16))].join(\"\")}function d(t,e){e=0===e?0:e||10;var r=c(t).toHsl();return r.s-=e/100,r.s=z(r.s),c(r)}function g(t,e){e=0===e?0:e||10;var r=c(t).toHsl();return r.s+=e/100,r.s=z(r.s),c(r)}function v(t){return c(t).desaturate(100)}function m(t,e){e=0===e?0:e||10;var r=c(t).toHsl();return r.l+=e/100,r.l=z(r.l),c(r)}function y(t,e){e=0===e?0:e||10;var r=c(t).toRgb();return r.r=s(0,o(255,r.r-a(-e/100*255))),r.g=s(0,o(255,r.g-a(-e/100*255))),r.b=s(0,o(255,r.b-a(-e/100*255))),c(r)}function x(t,e){e=0===e?0:e||10;var r=c(t).toHsl();return r.l-=e/100,r.l=z(r.l),c(r)}function b(t,e){var r=c(t).toHsl(),n=(r.h+e)%360;return r.h=n<0?360+n:n,c(r)}function _(t){var e=c(t).toHsl();return e.h=(e.h+180)%360,c(e)}function w(t){var e=c(t).toHsl(),r=e.h;return[c(t),c({h:(r+120)%360,s:e.s,l:e.l}),c({h:(r+240)%360,s:e.s,l:e.l})]}function k(t){var e=c(t).toHsl(),r=e.h;return[c(t),c({h:(r+90)%360,s:e.s,l:e.l}),c({h:(r+180)%360,s:e.s,l:e.l}),c({h:(r+270)%360,s:e.s,l:e.l})]}function A(t){var e=c(t).toHsl(),r=e.h;return[c(t),c({h:(r+72)%360,s:e.s,l:e.l}),c({h:(r+216)%360,s:e.s,l:e.l})]}function M(t,e,r){e=e||6,r=r||30;var n=c(t).toHsl(),i=360/r,a=[c(t)];for(n.h=(n.h-(i*e>>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function T(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=E(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[I(a(t).toString(16)),I(a(e).toString(16)),I(a(r).toString(16)),I(P(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*L(this._r,255))+\"%\",g:a(100*L(this._g,255))+\"%\",b:a(100*L(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*L(this._r,255))+\"%, \"+a(100*L(this._g,255))+\"%, \"+a(100*L(this._b,255))+\"%)\":\"rgba(\"+a(100*L(this._r,255))+\"%, \"+a(100*L(this._g,255))+\"%, \"+a(100*L(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(C[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(m,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(v,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(M,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(T,arguments)},splitcomplement:function(){return this._applyCombination(A,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(k,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:D(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;u<e.length;u++)(n=c.readability(t,e[u]))>l&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},C=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function E(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function L(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function z(t){return o(1,s(0,t))}function O(t){return parseInt(t,16)}function I(t){return 1==t.length?\"0\"+t:\"\"+t}function D(t){return t<=1&&(t=100*t+\"%\"),t}function P(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return O(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function V(t){return!!j.CSS_UNIT.exec(t)}\"undefined\"!=typeof e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],516:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t){if(t.length){for(var e=i(t),r=0,n=e.length;r<n;r++)e[r]=t[r]-e[r];return e}return i(t-i(t))};var n=new Float32Array(1);function i(t){if(t.length){if(t instanceof Float32Array)return t;var e=new Float32Array(t);return e.set(t),e}return n[0]=t,n[0]}},{}],517:[function(t,e,r){\"use strict\";var n=t(\"parse-unit\");e.exports=o;var i=96;function a(t,e){var r=n(getComputedStyle(t).getPropertyValue(e));return r[0]*o(r[1],t)}function o(t,e){switch(e=e||document.body,t=(t||\"px\").trim().toLowerCase(),e!==window&&e!==document||(e=document.body),t){case\"%\":return e.clientHeight/100;case\"ch\":case\"ex\":return function(t,e){var r=document.createElement(\"div\");r.style[\"font-size\"]=\"128\"+t,e.appendChild(r);var n=a(r,\"font-size\")/128;return e.removeChild(r),n}(t,e);case\"em\":return a(e,\"font-size\");case\"rem\":return a(document.body,\"font-size\");case\"vw\":return window.innerWidth/100;case\"vh\":return window.innerHeight/100;case\"vmin\":return Math.min(window.innerWidth,window.innerHeight)/100;case\"vmax\":return Math.max(window.innerWidth,window.innerHeight)/100;case\"in\":return i;case\"cm\":return i/2.54;case\"mm\":return i/25.4;case\"pt\":return i/72;case\"pc\":return i/6}return 1}},{\"parse-unit\":447}],518:[function(t,e,r){var n;n=this,function(t){\"use strict\";var e=function(t){return t},r=function(t){if(null==(r=t.transform))return e;var r,n,i,a=r.scale[0],o=r.scale[1],s=r.translate[0],l=r.translate[1];return function(t,e){return e||(n=i=0),t[0]=(n+=t[0])*a+s,t[1]=(i+=t[1])*o+l,t}},n=function(t){var e=t.bbox;function n(t){l[0]=t[0],l[1]=t[1],s(l),l[0]<c&&(c=l[0]),l[0]>f&&(f=l[0]),l[1]<u&&(u=l[1]),l[1]>h&&(h=l[1])}function i(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(i);break;case\"Point\":n(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(n)}}if(!e){var a,o,s=r(t),l=new Array(2),c=1/0,u=c,f=-c,h=-c;for(o in t.arcs.forEach(function(t){for(var e=-1,r=t.length;++e<r;)a=t[e],l[0]=a[0],l[1]=a[1],s(l,e),l[0]<c&&(c=l[0]),l[0]>f&&(f=l[0]),l[1]<u&&(u=l[1]),l[1]>h&&(h=l[1])}),t.objects)i(t.objects[o]);e=t.bbox=[c,u,f,h]}return e},i=function(t,e){for(var r,n=t.length,i=n-e;i<--n;)r=t[i],t[i++]=t[n],t[n]=r};function a(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,a=o(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:a}:null==n?{type:\"Feature\",id:r,properties:i,geometry:a}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:a}}function o(t,e){var n=r(t),a=t.arcs;function o(t,e){e.length&&e.pop();for(var r=a[t<0?~t:t],o=0,s=r.length;o<s;++o)e.push(n(r[o].slice(),o));t<0&&i(e,s)}function s(t){return n(t.slice())}function l(t){for(var e=[],r=0,n=t.length;r<n;++r)o(t[r],e);return e.length<2&&e.push(e[0].slice()),e}function c(t){for(var e=l(t);e.length<4;)e.push(e[0].slice());return e}function u(t){return t.map(c)}return function t(e){var r,n=e.type;switch(n){case\"GeometryCollection\":return{type:n,geometries:e.geometries.map(t)};case\"Point\":r=s(e.coordinates);break;case\"MultiPoint\":r=e.coordinates.map(s);break;case\"LineString\":r=l(e.arcs);break;case\"MultiLineString\":r=e.arcs.map(l);break;case\"Polygon\":r=u(e.arcs);break;case\"MultiPolygon\":r=e.arcs.map(u);break;default:return null}return{type:n,coordinates:r}}(e)}var s=function(t,e){var r={},n={},i={},a=[],o=-1;function s(t,e){for(var n in t){var i=t[n];delete e[i.start],delete i.start,delete i.end,i.forEach(function(t){r[t<0?~t:t]=1}),a.push(i)}}return e.forEach(function(r,n){var i,a=t.arcs[r<0?~r:r];a.length<3&&!a[1][0]&&!a[1][1]&&(i=e[++o],e[o]=r,e[n]=i)}),e.forEach(function(e){var r,a,o=function(e){var r,n=t.arcs[e<0?~e:e],i=n[0];t.transform?(r=[0,0],n.forEach(function(t){r[0]+=t[0],r[1]+=t[1]})):r=n[n.length-1];return e<0?[r,i]:[i,r]}(e),s=o[0],l=o[1];if(r=i[s])if(delete i[r.end],r.push(e),r.end=l,a=n[l]){delete n[a.start];var c=a===r?r:r.concat(a);n[c.start=r.start]=i[c.end=a.end]=c}else n[r.start]=i[r.end]=r;else if(r=n[l])if(delete n[r.start],r.unshift(e),r.start=s,a=i[s]){delete i[a.end];var u=a===r?r:a.concat(r);n[u.start=a.start]=i[u.end=r.end]=u}else n[r.start]=i[r.end]=r;else n[(r=[e]).start=s]=i[r.end=l]=r}),s(i,n),s(n,i),e.forEach(function(t){r[t<0?~t:t]||a.push([t])}),a};function l(t,e,r){var n,i,a;if(arguments.length>1)n=function(t,e,r){var n,i=[],a=[];function o(t){var e=t<0?~t:t;(a[e]||(a[e]=[])).push({i:t,g:n})}function s(t){t.forEach(o)}function l(t){t.forEach(s)}return function t(e){switch(n=e,e.type){case\"GeometryCollection\":e.geometries.forEach(t);break;case\"LineString\":s(e.arcs);break;case\"MultiLineString\":case\"Polygon\":l(e.arcs);break;case\"MultiPolygon\":e.arcs.forEach(l)}}(e),a.forEach(null==r?function(t){i.push(t[0].i)}:function(t){r(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,r);else for(i=0,n=new Array(a=t.arcs.length);i<a;++i)n[i]=i;return{type:\"MultiLineString\",arcs:s(t,n)}}function c(t,e){var r={},n=[],i=[];function a(t){t.forEach(function(e){e.forEach(function(e){(r[e=e<0?~e:e]||(r[e]=[])).push(t)})}),n.push(t)}function l(e){return function(t){for(var e,r=-1,n=t.length,i=t[n-1],a=0;++r<n;)e=i,i=t[r],a+=e[0]*i[1]-e[1]*i[0];return Math.abs(a)}(o(t,{type:\"Polygon\",arcs:[e]}).coordinates[0])}return e.forEach(function t(e){switch(e.type){case\"GeometryCollection\":e.geometries.forEach(t);break;case\"Polygon\":a(e.arcs);break;case\"MultiPolygon\":e.arcs.forEach(a)}}),n.forEach(function(t){if(!t._){var e=[],n=[t];for(t._=1,i.push(e);t=n.pop();)e.push(t),t.forEach(function(t){t.forEach(function(t){r[t<0?~t:t].forEach(function(t){t._||(t._=1,n.push(t))})})})}}),n.forEach(function(t){delete t._}),{type:\"MultiPolygon\",arcs:i.map(function(e){var n,i=[];if(e.forEach(function(t){t.forEach(function(t){t.forEach(function(t){r[t<0?~t:t].length<2&&i.push(t)})})}),(n=(i=s(t,i)).length)>1)for(var a,o,c=1,u=l(i[0]);c<n;++c)(a=l(i[c]))>u&&(o=i[0],i[0]=i[c],i[c]=o,u=a);return i})}}var u=function(t,e){for(var r=0,n=t.length;r<n;){var i=r+n>>>1;t[i]<e?r=i+1:n=i}return r};t.bbox=n,t.feature=function(t,e){return\"GeometryCollection\"===e.type?{type:\"FeatureCollection\",features:e.geometries.map(function(e){return a(t,e)})}:a(t,e)},t.mesh=function(t){return o(t,l.apply(this,arguments))},t.meshArcs=l,t.merge=function(t){return o(t,c.apply(this,arguments))},t.mergeArcs=c,t.neighbors=function(t){var e={},r=t.map(function(){return[]});function n(t,r){t.forEach(function(t){t<0&&(t=~t);var n=e[t];n?n.push(r):e[t]=[r]})}function i(t,e){t.forEach(function(t){n(t,e)})}var a={LineString:n,MultiLineString:i,Polygon:i,MultiPolygon:function(t,e){t.forEach(function(t){i(t,e)})}};for(var o in t.forEach(function t(e,r){\"GeometryCollection\"===e.type?e.geometries.forEach(function(e){t(e,r)}):e.type in a&&a[e.type](e.arcs,r)}),e)for(var s=e[o],l=s.length,c=0;c<l;++c)for(var f=c+1;f<l;++f){var h,p=s[c],d=s[f];(h=r[p])[o=u(h,d)]!==d&&h.splice(o,0,d),(h=r[d])[o=u(h,p)]!==p&&h.splice(o,0,p)}return r},t.quantize=function(t,e){if(!((e=Math.floor(e))>=2))throw new Error(\"n must be \\u22652\");if(t.transform)throw new Error(\"already quantized\");var r,i=n(t),a=i[0],o=(i[2]-a)/(e-1)||1,s=i[1],l=(i[3]-s)/(e-1)||1;function c(t){t[0]=Math.round((t[0]-a)/o),t[1]=Math.round((t[1]-s)/l)}function u(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(u);break;case\"Point\":c(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(c)}}for(r in t.arcs.forEach(function(t){for(var e,r,n,i=1,c=1,u=t.length,f=t[0],h=f[0]=Math.round((f[0]-a)/o),p=f[1]=Math.round((f[1]-s)/l);i<u;++i)f=t[i],r=Math.round((f[0]-a)/o),n=Math.round((f[1]-s)/l),r===h&&n===p||((e=t[c++])[0]=r-h,h=r,e[1]=n-p,p=n);c<2&&((e=t[c++])[0]=0,e[1]=0),t.length=c}),t.objects)u(t.objects[r]);return t.transform={scale:[o,l],translate:[a,s]},t},t.transform=r,t.untransform=function(t){if(null==(r=t.transform))return e;var r,n,i,a=r.scale[0],o=r.scale[1],s=r.translate[0],l=r.translate[1];return function(t,e){e||(n=i=0);var r=Math.round((t[0]-s)/a),c=Math.round((t[1]-l)/o);return t[0]=r-n,n=r,t[1]=c-i,i=c,t}},Object.defineProperty(t,\"__esModule\",{value:!0})}(\"object\"==typeof r&&\"undefined\"!=typeof e?r:n.topojson=n.topojson||{})},{}],519:[function(t,e,r){\"use strict\";e.exports=function(t){if(t<0)return[];if(0===t)return[[0]];for(var e=0|Math.round(a(t+1)),r=[],o=0;o<e;++o){for(var s=n.unrank(t,o),l=[0],c=0,u=0;u<s.length;++u)c+=1<<s[u],l.push(c);i(s)<1&&(l[0]=c,l[t]=0),r.push(l)}return r};var n=t(\"permutation-rank\"),i=t(\"permutation-parity\"),a=t(\"gamma\")},{gamma:221,\"permutation-parity\":449,\"permutation-rank\":450}],520:[function(t,e,r){\"use strict\";e.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.up||[0,1,0],n=t.right||f(r),i=t.radius||1,a=t.theta||0,u=t.phi||0;if(e=[].slice.call(e,0,3),r=[].slice.call(r,0,3),s(r,r),n=[].slice.call(n,0,3),s(n,n),\"eye\"in t){var p=t.eye,d=[p[0]-e[0],p[1]-e[1],p[2]-e[2]];o(n,d,r),c(n[0],n[1],n[2])<1e-6?n=f(r):s(n,n),i=c(d[0],d[1],d[2]);var g=l(r,d)/i,v=l(n,d)/i;u=Math.acos(g),a=Math.acos(v)}return i=Math.log(i),new h(t.zoomMin,t.zoomMax,e,r,n,i,a,u)};var n=t(\"filtered-vector\"),i=t(\"gl-mat4/invert\"),a=t(\"gl-mat4/rotate\"),o=t(\"gl-vec3/cross\"),s=t(\"gl-vec3/normalize\"),l=t(\"gl-vec3/dot\");function c(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function u(t){return Math.min(1,Math.max(-1,t))}function f(t){var e=Math.abs(t[0]),r=Math.abs(t[1]),n=Math.abs(t[2]),i=[0,0,0];e>Math.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],v=Math.cos(d),m=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=v*y,w=m*y,k=x,A=-v*x,M=-m*x,T=y,S=this.computedEye,C=this.computedMatrix;for(a=0;a<3;++a){var E=_*r[a]+w*h[a]+k*e[a];C[4*a+1]=A*r[a]+M*h[a]+T*e[a],C[4*a+2]=E,C[4*a+3]=0}var L=C[1],z=C[5],O=C[9],I=C[2],D=C[6],P=C[10],R=z*P-O*D,F=O*I-L*P,B=L*D-z*I,N=c(R,F,B);R/=N,F/=N,B/=N,C[0]=R,C[4]=F,C[8]=B;for(a=0;a<3;++a)S[a]=b[a]+C[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=C[a+4*j]*S[j];C[12+a]=-u}C[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,v=(f/=d)*e+o*r,m=(h/=d)*e+s*r;this.center.move(t,g,v,m);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var v=c(s,l,f);s/=v,l/=v,f/=v}var m,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,k=c(x-=s*w,b-=l*w,_-=f*w),A=l*(_/=k)-f*(b/=k),M=f*(x/=k)-s*_,T=s*b-l*x,S=c(A,M,T);if(A/=S,M/=S,T/=S,this.center.jump(t,H,G,W),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var C=e[1],E=e[5],L=e[9],z=C*x+E*b+L*_,O=C*A+E*M+L*T;m=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(O,z)}else{var I=e[2],D=e[6],P=e[10],R=I*s+D*l+P*f,F=I*x+D*b+P*_,B=I*A+D*M+P*T;m=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,m),this.recalcMatrix(t);var N=e[2],j=e[6],V=e[10],U=this.computedMatrix;i(U,e);var q=U[15],H=U[12]/q,G=U[13]/q,W=U[14]/q,Y=Math.exp(this.computedRadius[0]);this.center.jump(t,H-N*Y,G-j*Y,W-V*Y)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],v=d[1],m=d[2],y=i*g+a*v+o*m,x=c(g-=y*i,v-=y*a,m-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,v=o*l-i*h,m=i*f-a*l))<1e-6)){g/=x,v/=x,m/=x,this.up.set(t,i,a,o),this.right.set(t,g,v,m),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*m-o*v,_=o*g-i*m,w=i*v-a*g,k=c(b,_,w),A=i*l+a*f+o*h,M=g*l+v*f+m*h,T=(b/=k)*l+(_/=k)*f+(w/=k)*h,S=Math.asin(u(A)),C=Math.atan2(T,M),E=this.angle._state,L=E[E.length-1],z=E[E.length-2];L%=2*Math.PI;var O=Math.abs(L+2*Math.PI-C),I=Math.abs(L-C),D=Math.abs(L-2*Math.PI-C);O<I&&(L+=2*Math.PI),D<I&&(L-=2*Math.PI),this.angle.jump(this.angle.lastT(),L,z),this.angle.set(t,C,S)}}}}},{\"filtered-vector\":216,\"gl-mat4/invert\":256,\"gl-mat4/rotate\":260,\"gl-vec3/cross\":320,\"gl-vec3/dot\":325,\"gl-vec3/normalize\":342}],521:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var i=t*e,a=n*t,o=a-(a-t),s=t-o,l=n*e,c=l-(l-e),u=e-c,f=s*u-(i-o*c-s*c-o*u);if(r)return r[0]=f,r[1]=i,r;return[f,i]};var n=+(Math.pow(2,27)+1)},{}],522:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n=t+e,i=n-t,a=e-i,o=t-(n-i);if(r)return r[0]=o+a,r[1]=n,r;return[o+a,n]}},{}],523:[function(t,e,r){(function(e,n){\"use strict\";var i=t(\"bit-twiddle\"),a=t(\"dup\");e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:a([32,0]),UINT16:a([32,0]),UINT32:a([32,0]),INT8:a([32,0]),INT16:a([32,0]),INT32:a([32,0]),FLOAT:a([32,0]),DOUBLE:a([32,0]),DATA:a([32,0]),UINT8C:a([32,0]),BUFFER:a([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=e.__TYPEDARRAY_POOL;s.UINT8C||(s.UINT8C=a([32,0])),s.BUFFER||(s.BUFFER=a([32,0]));var l=s.DATA,c=s.BUFFER;function u(t){if(t){var e=t.length||t.byteLength,r=i.log2(e);l[r].push(t)}}function f(t){t=i.nextPow2(t);var e=i.log2(t),r=l[e];return r.length>0?r.pop():new ArrayBuffer(t)}function h(t){return new Uint8Array(f(t),0,t)}function p(t){return new Uint16Array(f(2*t),0,t)}function d(t){return new Uint32Array(f(4*t),0,t)}function g(t){return new Int8Array(f(t),0,t)}function v(t){return new Int16Array(f(2*t),0,t)}function m(t){return new Int32Array(f(4*t),0,t)}function y(t){return new Float32Array(f(4*t),0,t)}function x(t){return new Float64Array(f(8*t),0,t)}function b(t){return o?new Uint8ClampedArray(f(t),0,t):h(t)}function _(t){return new DataView(f(t),0,t)}function w(t){t=i.nextPow2(t);var e=i.log2(t),r=c[e];return r.length>0?r.pop():new n(t)}r.free=function(t){if(n.isBuffer(t))c[i.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|i.log2(e);l[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeInt8=r.freeInt16=r.freeInt32=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){u(t.buffer)},r.freeArrayBuffer=u,r.freeBuffer=function(t){c[i.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return f(t);switch(e){case\"uint8\":return h(t);case\"uint16\":return p(t);case\"uint32\":return d(t);case\"int8\":return g(t);case\"int16\":return v(t);case\"int32\":return m(t);case\"float\":case\"float32\":return y(t);case\"double\":case\"float64\":return x(t);case\"uint8_clamped\":return b(t);case\"buffer\":return w(t);case\"data\":case\"dataview\":return _(t);default:return null}return null},r.mallocArrayBuffer=f,r.mallocUint8=h,r.mallocUint16=p,r.mallocUint32=d,r.mallocInt8=g,r.mallocInt16=v,r.mallocInt32=m,r.mallocFloat32=r.mallocFloat=y,r.mallocFloat64=r.mallocDouble=x,r.mallocUint8Clamped=b,r.mallocDataView=_,r.mallocBuffer=w,r.clearCache=function(){for(var t=0;t<32;++t)s.UINT8[t].length=0,s.UINT16[t].length=0,s.UINT32[t].length=0,s.INT8[t].length=0,s.INT16[t].length=0,s.INT32[t].length=0,s.FLOAT[t].length=0,s.DOUBLE[t].length=0,s.UINT8C[t].length=0,l[t].length=0,c[t].length=0}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},t(\"buffer\").Buffer)},{\"bit-twiddle\":81,buffer:94,dup:156}],524:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e<t;++e)this.roots[e]=e,this.ranks[e]=0}e.exports=n;var i=n.prototype;Object.defineProperty(i,\"length\",{get:function(){return this.roots.length}}),i.makeSet=function(){var t=this.roots.length;return this.roots.push(t),this.ranks.push(0),t},i.find=function(t){for(var e=t,r=this.roots;r[t]!==t;)t=r[t];for(;r[e]!==t;){var n=r[e];r[e]=t,e=n}return t},i.link=function(t,e){var r=this.find(t),n=this.find(e);if(r!==n){var i=this.ranks,a=this.roots,o=i[r],s=i[n];o<s?a[r]=n:s<o?a[n]=r:(a[n]=r,++i[r])}}},{}],525:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){return 0===t.length?t:e?(r||t.sort(e),function(t,e){for(var r=1,n=t.length,i=t[0],a=t[0],o=1;o<n;++o)if(a=i,e(i=t[o],a)){if(o===r){r++;continue}t[r++]=i}return t.length=r,t}(t,e)):(r||t.sort(),function(t){for(var e=1,r=t.length,n=t[0],i=t[0],a=1;a<r;++a,i=n)if(i=n,(n=t[a])!==i){if(a===e){e++;continue}t[e++]=n}return t.length=e,t}(t))}},{}],526:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],527:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n<i;n++){var a=r[n];for(var o in a)if((void 0===e[o]||Array.isArray(e[o])||t[o]!==e[o])&&o in e){var s;if(!0===a[o])s=e[o];else{if(!1===a[o])continue;if(\"function\"==typeof a[o]&&void 0===(s=a[o](e[o],t,e)))continue}t[o]=s}}return t}},{}],528:[function(t,e,r){\"use strict\";e.exports=function(t,e){\"object\"==typeof e&&null!==e||(e={});return n(t,e.canvas||i,e.context||a,e)};var n=t(\"./lib/vtext\"),i=null,a=null;\"undefined\"!=typeof document&&((i=document.createElement(\"canvas\")).width=8192,i.height=1024,a=i.getContext(\"2d\"))},{\"./lib/vtext\":529}],529:[function(t,e,r){e.exports=function(t,e,r,n){var a=64,o=1.25,s={breaklines:!1,bolds:!1,italics:!1,subscripts:!1,superscripts:!1};n&&(n.size&&n.size>0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter(function(t){return t}).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",w(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\<br\\>/g,\"\\n\"):r.replace(/\\<br\\>/g,\" \");var s=\"\",l=[];for(k=0;k<r.length;++k)l[k]=s;!0===o.bolds&&(l=x(c,u,r,l)),!0===o.italics&&(l=x(f,h,r,l)),!0===o.superscripts&&(l=x(p,g,r,l)),!0===o.subscripts&&(l=x(v,y,r,l));var b=[],_=\"\";for(k=0;k<r.length;++k)null!==l[k]&&(_+=r[k],b.push(l[k]));var w,k,A,M,T,S=_.split(\"\\n\"),C=S.length,E=Math.round(a*n),L=n,z=2*n,O=0,I=C*E+z;t.height<I&&(t.height=I),e.fillStyle=\"#000\",e.fillRect(0,0,t.width,t.height),e.fillStyle=\"#fff\";var D=0,P=\"\";function R(){if(\"\"!==P){var t=e.measureText(P).width;e.fillText(P,L+A,z+M),A+=t}}function F(){return Math.round(T)+\"px \"}function B(t,r){var n=\"\"+e.font;if(!0===o.subscripts){var i=t.indexOf(m),a=r.indexOf(m),s=i>-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(F(),\"?px \"),T*=Math.pow(.75,l-s),n=n.replace(\"?px \",F())),M+=.25*E*(l-s)}if(!0===o.superscripts){var c=t.indexOf(d),f=r.indexOf(d),p=c>-1?parseInt(t[1+c]):0,g=f>-1?parseInt(r[1+f]):0;p!==g&&(n=n.replace(F(),\"?px \"),T*=Math.pow(.75,g-p),n=n.replace(\"?px \",F())),M-=.25*E*(g-p)}if(!0===o.bolds){var v=t.indexOf(u)>-1,y=r.indexOf(u)>-1;!v&&y&&(n=x?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),v&&!y&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var x=t.indexOf(h)>-1,b=r.indexOf(h)>-1;!x&&b&&(n=\"italic \"+n),x&&!b&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(w=0;w<C;++w){var N=S[w]+\"\\n\";for(A=0,M=w*E,T=n,P=\"\",k=0;k<N.length;++k){var j=k+D<b.length?b[k+D]:b[b.length-1];s===j?P+=N[k]:(R(),P=N[k],void 0!==j&&(B(s,j),s=j))}R(),D+=N.length;var V=0|Math.round(A+2*L);O<V&&(O=V)}var U=O,q=z+E*C;return i(e.getImageData(0,0,U,q).data,[q,U,4]).pick(-1,-1,0).transpose(1,0)}(e,r,t,a,o,s),n,a)},e.exports.processPixels=w;var n=t(\"surface-nets\"),i=t(\"ndarray\"),a=t(\"simplify-planar-graph\"),o=t(\"clean-pslg\"),s=t(\"cdt2d\"),l=t(\"planar-graph-to-polyline\"),c=\"b\",u=\"b|\",f=\"i\",h=\"i|\",p=\"sup\",d=\"+\",g=\"+1\",v=\"sub\",m=\"-\",y=\"-1\";function x(t,e,r,n){for(var i=\"<\"+t+\">\",a=\"</\"+t+\">\",o=i.length,s=a.length,l=e[0]===d||e[0]===m,c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f<u+s;++f)if(f<c+o||f>=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,g=r.substr(p,u-p).indexOf(i);c=-1!==g?g:u+s}return n}function b(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function _(t,e,r,n){var i=b(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l<s;++l)for(var c=t[l],u=0;u<2;++u)a[u]=0|Math.min(a[u],c[u]),o[u]=0|Math.max(o[u],c[u]);var f=0;switch(n){case\"center\":f=-.5*(a[0]+o[0]);break;case\"right\":case\"end\":f=-o[0];break;case\"left\":case\"start\":f=-a[0];break;default:throw new Error(\"vectorize-text: Unrecognized textAlign: '\"+n+\"'\")}var h=0;switch(i){case\"hanging\":case\"top\":h=-a[1];break;case\"middle\":h=-.5*(a[1]+o[1]);break;case\"alphabetic\":case\"ideographic\":h=-3*r;break;case\"bottom\":h=-o[1];break;default:throw new Error(\"vectorize-text: Unrecoginized textBaseline: '\"+i+\"'\")}var p=1/r;return\"lineHeight\"in e?p*=+e.lineHeight:\"width\"in e?p=e.width/(o[0]-a[0]):\"height\"in e&&(p=e.height/(o[1]-a[1])),t.map(function(t){return[p*(t[0]+f),p*(t[1]+h)]})}(i.positions,e,r),c=i.edges,u=\"ccw\"===e.orientation;if(o(a,c),e.polygons||e.polygon||e.polyline){for(var f=l(c,a),h=new Array(f.length),p=0;p<f.length;++p){for(var d=f[p],g=new Array(d.length),v=0;v<d.length;++v){for(var m=d[v],y=new Array(m.length),x=0;x<m.length;++x)y[x]=a[m[x]].slice();u&&y.reverse(),g[v]=y}h[p]=g}return h}return e.triangles||e.triangulate||e.triangle?{cells:s(a,c,{delaunay:!1,exterior:!1,interior:!0}),positions:a}:{edges:c,positions:a}}function w(t,e,r){try{return _(t,e,r,!0)}catch(t){}try{return _(t,e,r,!1)}catch(t){}return e.polygons||e.polyline||e.polygon?[]:e.triangles||e.triangulate||e.triangle?{cells:[],positions:[]}:{edges:[],positions:[]}}},{cdt2d:95,\"clean-pslg\":105,ndarray:436,\"planar-graph-to-polyline\":454,\"simplify-planar-graph\":502,\"surface-nets\":509}],530:[function(t,e,r){!function(){\"use strict\";if(\"undefined\"==typeof ses||!ses.ok||ses.ok()){\"undefined\"!=typeof ses&&(ses.weakMapPermitHostObjects=v);var t=!1;if(\"function\"==typeof WeakMap){var r=WeakMap;if(\"undefined\"!=typeof navigator&&/Firefox/.test(navigator.userAgent));else{var n=new r,i=Object.freeze({});if(n.set(i,1),1===n.get(i))return void(e.exports=WeakMap);t=!0}}Object.prototype.hasOwnProperty;var a=Object.getOwnPropertyNames,o=Object.defineProperty,s=Object.isExtensible,l=\"weakmap:\",c=l+\"ident:\"+Math.random()+\"___\";if(\"undefined\"!=typeof crypto&&\"function\"==typeof crypto.getRandomValues&&\"function\"==typeof ArrayBuffer&&\"function\"==typeof Uint8Array){var u=new ArrayBuffer(25),f=new Uint8Array(u);crypto.getRandomValues(f),c=l+\"rand:\"+Array.prototype.map.call(f,function(t){return(t%36).toString(36)}).join(\"\")+\"___\"}if(o(Object,\"getOwnPropertyNames\",{value:function(t){return a(t).filter(m)}}),\"getPropertyNames\"in Object){var h=Object.getPropertyNames;o(Object,\"getPropertyNames\",{value:function(t){return h(t).filter(m)}})}!function(){var t=Object.freeze;o(Object,\"freeze\",{value:function(e){return y(e),t(e)}});var e=Object.seal;o(Object,\"seal\",{value:function(t){return y(t),e(t)}});var r=Object.preventExtensions;o(Object,\"preventExtensions\",{value:function(t){return y(t),r(t)}})}();var p=!1,d=0,g=function(){this instanceof g||b();var t=[],e=[],r=d++;return Object.create(g.prototype,{get___:{value:x(function(n,i){var a,o=y(n);return o?r in o?o[r]:i:(a=t.indexOf(n))>=0?e[a]:i})},has___:{value:x(function(e){var n=y(e);return n?r in n:t.indexOf(e)>=0})},set___:{value:x(function(n,i){var a,o=y(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this})},delete___:{value:x(function(n){var i,a,o=y(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0||(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,0))})}})};g.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof g||b();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new g),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new g),i.set___(t,e)}else n.set(t,e);return this},Object.create(g.prototype,{get___:{value:x(function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)})},has___:{value:x(function(t){return n.has(t)||!!i&&i.has___(t)})},set___:{value:x(e)},delete___:{value:x(function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e})},permitHostObjects___:{value:x(function(t){if(t!==v)throw new Error(\"bogus call to permitHostObjects___\");a=!0})}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=g.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=g)}function v(t){t.permitHostObjects___&&t.permitHostObjects___(v)}function m(t){return!(t.substr(0,l.length)==l&&\"___\"===t.substr(t.length-3))}function y(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[c];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,c,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function x(t){return t.prototype=null,Object.freeze(t)}function b(){p||\"undefined\"==typeof console||(p=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],531:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":532}],532:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],533:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":531}],534:[function(t,e,r){var n=t(\"get-canvas-context\");e.exports=function(t){return n(\"webgl\",t)}},{\"get-canvas-context\":222}],535:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Chinese\",jdEpoch:1721425.5,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{\"\":{name:\"Chinese\",epochs:[\"BEC\",\"EC\"],monthNumbers:function(t,e){if(\"string\"==typeof t){var r=t.match(l);return r?r[0]:\"\"}var n=this._validateYear(t),i=t.month(),a=\"\"+this.toChineseMonth(n,i);return e&&a.length<2&&(a=\"0\"+a),this.isIntercalaryMonth(n,i)&&(a+=\"i\"),a},monthNames:function(t){if(\"string\"==typeof t){var e=t.match(c);return e?e[0]:\"\"}var r=this._validateYear(t),n=t.month(),i=[\"\\u4e00\\u6708\",\"\\u4e8c\\u6708\",\"\\u4e09\\u6708\",\"\\u56db\\u6708\",\"\\u4e94\\u6708\",\"\\u516d\\u6708\",\"\\u4e03\\u6708\",\"\\u516b\\u6708\",\"\\u4e5d\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4e00\\u6708\",\"\\u5341\\u4e8c\\u6708\"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i=\"\\u95f0\"+i),i},monthNamesShort:function(t){if(\"string\"==typeof t){var e=t.match(u);return e?e[0]:\"\"}var r=this._validateYear(t),n=t.month(),i=[\"\\u4e00\",\"\\u4e8c\",\"\\u4e09\",\"\\u56db\",\"\\u4e94\",\"\\u516d\",\"\\u4e03\",\"\\u516b\",\"\\u4e5d\",\"\\u5341\",\"\\u5341\\u4e00\",\"\\u5341\\u4e8c\"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i=\"\\u95f0\"+i),i},parseMonth:function(t,e){t=this._validateYear(t);var r,n=parseInt(e);if(isNaN(n))\"\\u95f0\"===e[0]&&(r=!0,e=e.substring(1)),\"\\u6708\"===e[e.length-1]&&(e=e.substring(0,e.length-1)),n=1+[\"\\u4e00\",\"\\u4e8c\",\"\\u4e09\",\"\\u56db\",\"\\u4e94\",\"\\u516d\",\"\\u4e03\",\"\\u516b\",\"\\u4e5d\",\"\\u5341\",\"\\u5341\\u4e00\",\"\\u5341\\u4e8c\"].indexOf(e);else{var i=e[e.length-1];r=\"i\"===i||\"I\"===i}return this.toMonthIndex(t,n,r)},dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},_validateYear:function(t,e){if(t.year&&(t=t.year()),\"number\"!=typeof t||t<1888||t>2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e<r?e+1:e:e+1},intercalaryMonth:function(t){return t=this._validateYear(t),f[t-f[0]]>>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l=\"number\"==typeof t&&t>=1888&&t<=2111;if(!l)throw new Error(\"Lunar year outside range 1888-2111\");var c=\"number\"==typeof e&&e>=1&&e<=12;if(!c)throw new Error(\"Lunar month outside range 1 - 12\");var u,p=\"number\"==typeof r&&r>=1&&r<=30;if(!p)throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(u=!1,a=n):(u=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:u}}s=o.day-1;var d,g=f[o.year-f[0]],v=g>>13;d=v?o.month>v?o.month:o.isIntercalary?o.month:o.month-1:o.month-1;for(var m=0;m<d;m++){var y=g&1<<12-m?30:29;s+=y}var x=h[o.year-h[0]],b=new Date(x>>9&4095,(x>>5&15)-1,(31&x)+s);return a.year=b.getFullYear(),a.month=1+b.getMonth(),a.day=b.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{var o=\"number\"==typeof t&&t>=1888&&t<=2111;if(!o)throw new Error(\"Solar year outside range 1888-2111\");var s=\"number\"==typeof e&&e>=1&&e<=12;if(!s)throw new Error(\"Solar month outside range 1 - 12\");var l=\"number\"==typeof r&&r>=1&&r<=31;if(!l)throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var c=h[i.year-h[0]],u=i.year<<9|i.month<<5|i.day;a.year=u>=c?i.year:i.year-1,c=h[a.year-h[0]];var p,d=new Date(c>>9&4095,(c>>5&15)-1,31&c),g=new Date(i.year,i.month-1,i.day);p=Math.round((g-d)/864e5);var v,m=f[a.year-f[0]];for(v=0;v<13;v++){var y=m&1<<12-v?30:29;if(p<y)break;p-=y}var x=m>>13;!x||v<x?(a.isIntercalary=!1,a.month=1+v):v===x?(a.isIntercalary=!0,a.month=v):(a.isIntercalary=!1,a.month=v);return a.day=1+p,a}(e.year(),e.month(),e.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(t){var e=t.match(s),r=this._validateYear(+e[1]),n=+e[2],i=!!e[3],a=this.toMonthIndex(r,n,i),o=+e[4];return this.newDate(r,a,o)},add:function(t,e,r){var n=t.year(),i=t.month(),a=this.isIntercalaryMonth(n,i),s=this.toChineseMonth(n,i),l=Object.getPrototypeOf(o.prototype).add.call(this,t,e,r);if(\"y\"===r){var c=l.year(),u=l.month(),f=this.isIntercalaryMonth(c,s),h=a&&f?this.toMonthIndex(c,s,!0):this.toMonthIndex(c,s,!1);h!==u&&l.month(h)}return l}});var s=/^\\s*(-?\\d\\d\\d\\d|\\d\\d)[-\\/](\\d?\\d)([iI]?)[-\\/](\\d?\\d)/m,l=/^\\d?\\d[iI]?/m,c=/^\\u95f0?\\u5341?[\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d]?\\u6708/m,u=/^\\u95f0?\\u5341?[\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d]?/m;n.calendars.chinese=o;var f=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],h=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904]},{\"../main\":549,\"object-assign\":440}],536:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Coptic\",jdEpoch:1825029.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Coptic\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Thout\",\"Paopi\",\"Hathor\",\"Koiak\",\"Tobi\",\"Meshir\",\"Paremhat\",\"Paremoude\",\"Pashons\",\"Paoni\",\"Epip\",\"Mesori\",\"Pi Kogi Enavot\"],monthNamesShort:[\"Tho\",\"Pao\",\"Hath\",\"Koi\",\"Tob\",\"Mesh\",\"Pat\",\"Pad\",\"Pash\",\"Pao\",\"Epi\",\"Meso\",\"PiK\"],dayNames:[\"Tkyriaka\",\"Pesnau\",\"Pshoment\",\"Peftoou\",\"Ptiou\",\"Psoou\",\"Psabbaton\"],dayNamesShort:[\"Tky\",\"Pes\",\"Psh\",\"Pef\",\"Pti\",\"Pso\",\"Psa\"],dayNamesMin:[\"Tk\",\"Pes\",\"Psh\",\"Pef\",\"Pt\",\"Pso\",\"Psa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.coptic=a},{\"../main\":549,\"object-assign\":440}],537:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Discworld\",jdEpoch:1721425.5,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Discworld\",epochs:[\"BUC\",\"UC\"],monthNames:[\"Ick\",\"Offle\",\"February\",\"March\",\"April\",\"May\",\"June\",\"Grune\",\"August\",\"Spune\",\"Sektober\",\"Ember\",\"December\"],monthNamesShort:[\"Ick\",\"Off\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Gru\",\"Aug\",\"Spu\",\"Sek\",\"Emb\",\"Dec\"],dayNames:[\"Sunday\",\"Octeday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Oct\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Oc\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:2,isRTL:!1}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),13},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),400},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(t,e,r){return(this._validate(t,e,r,n.local.invalidDate).day()+1)%8},weekDay:function(t,e,r){var n=this.dayOfWeek(t,e,r);return n>=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":549,\"object-assign\":440}],538:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":549,\"object-assign\":440}],539:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)?30:8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s<e;s++)o+=this.daysInMonth(t,s)}else for(s=7;s<e;s++)o+=this.daysInMonth(t,s);return o},_delay1:function(t){var e=Math.floor((235*t-234)/19),r=12084+13753*e,n=29*e+Math.floor(r/25920);return o(3*(n+1),7)<3&&n++,n},_delay2:function(t){var e=this._delay1(t-1),r=this._delay1(t);return this._delay1(t+1)-r==356?2:r-e==382?1:0},fromJD:function(t){t=Math.floor(t)+.5;for(var e=Math.floor(98496*(t-this.jdEpoch)/35975351)-1;t>=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=t<this.toJD(e,1,1)?7:1;t>this.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":549,\"object-assign\":440}],540:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":549,\"object-assign\":440}],541:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":549,\"object-assign\":440}],542:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r<t.length;r++){var n=parseInt(t[r],10);if(Math.abs(n)>19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":549,\"object-assign\":440}],543:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Som\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s<i.month();s++)a+=this.daysPerMonth[s-1];return a+o.toJD(t+1468,3,13)},fromJD:function(t){t=Math.floor(t+.5);for(var e=Math.floor((t-(this.jdEpoch-1))/366);t>=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":549,\"object-assign\":440}],544:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Som\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),\"undefined\"==typeof this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),\"undefined\"==typeof this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r<t+2;r++)\"undefined\"==typeof this.NEPALI_CALENDAR_DATA[r]&&(this.NEPALI_CALENDAR_DATA[r]=e)},NEPALI_CALENDAR_DATA:{1970:[18,31,31,32,31,31,31,30,29,30,29,30,30],1971:[18,31,31,32,31,32,30,30,29,30,29,30,30],1972:[17,31,32,31,32,31,30,30,30,29,29,30,30],1973:[19,30,32,31,32,31,30,30,30,29,30,29,31],1974:[19,31,31,32,30,31,31,30,29,30,29,30,30],1975:[18,31,31,32,32,30,31,30,29,30,29,30,30],1976:[17,31,32,31,32,31,30,30,30,29,29,30,31],1977:[18,31,32,31,32,31,31,29,30,29,30,29,31],1978:[18,31,31,32,31,31,31,30,29,30,29,30,30],1979:[18,31,31,32,32,31,30,30,29,30,29,30,30],1980:[17,31,32,31,32,31,30,30,30,29,29,30,31],1981:[18,31,31,31,32,31,31,29,30,30,29,30,30],1982:[18,31,31,32,31,31,31,30,29,30,29,30,30],1983:[18,31,31,32,32,31,30,30,29,30,29,30,30],1984:[17,31,32,31,32,31,30,30,30,29,29,30,31],1985:[18,31,31,31,32,31,31,29,30,30,29,30,30],1986:[18,31,31,32,31,31,31,30,29,30,29,30,30],1987:[18,31,32,31,32,31,30,30,29,30,29,30,30],1988:[17,31,32,31,32,31,30,30,30,29,29,30,31],1989:[18,31,31,31,32,31,31,30,29,30,29,30,30],1990:[18,31,31,32,31,31,31,30,29,30,29,30,30],1991:[18,31,32,31,32,31,30,30,29,30,29,30,30],1992:[17,31,32,31,32,31,30,30,30,29,30,29,31],1993:[18,31,31,31,32,31,31,30,29,30,29,30,30],1994:[18,31,31,32,31,31,31,30,29,30,29,30,30],1995:[17,31,32,31,32,31,30,30,30,29,29,30,30],1996:[17,31,32,31,32,31,30,30,30,29,30,29,31],1997:[18,31,31,32,31,31,31,30,29,30,29,30,30],1998:[18,31,31,32,31,31,31,30,29,30,29,30,30],1999:[17,31,32,31,32,31,30,30,30,29,29,30,31],2000:[17,30,32,31,32,31,30,30,30,29,30,29,31],2001:[18,31,31,32,31,31,31,30,29,30,29,30,30],2002:[18,31,31,32,32,31,30,30,29,30,29,30,30],2003:[17,31,32,31,32,31,30,30,30,29,29,30,31],2004:[17,30,32,31,32,31,30,30,30,29,30,29,31],2005:[18,31,31,32,31,31,31,30,29,30,29,30,30],2006:[18,31,31,32,32,31,30,30,29,30,29,30,30],2007:[17,31,32,31,32,31,30,30,30,29,29,30,31],2008:[17,31,31,31,32,31,31,29,30,30,29,29,31],2009:[18,31,31,32,31,31,31,30,29,30,29,30,30],2010:[18,31,31,32,32,31,30,30,29,30,29,30,30],2011:[17,31,32,31,32,31,30,30,30,29,29,30,31],2012:[17,31,31,31,32,31,31,29,30,30,29,30,30],2013:[18,31,31,32,31,31,31,30,29,30,29,30,30],2014:[18,31,31,32,32,31,30,30,29,30,29,30,30],2015:[17,31,32,31,32,31,30,30,30,29,29,30,31],2016:[17,31,31,31,32,31,31,29,30,30,29,30,30],2017:[18,31,31,32,31,31,31,30,29,30,29,30,30],2018:[18,31,32,31,32,31,30,30,29,30,29,30,30],2019:[17,31,32,31,32,31,30,30,30,29,30,29,31],2020:[17,31,31,31,32,31,31,30,29,30,29,30,30],2021:[18,31,31,32,31,31,31,30,29,30,29,30,30],2022:[17,31,32,31,32,31,30,30,30,29,29,30,30],2023:[17,31,32,31,32,31,30,30,30,29,30,29,31],2024:[17,31,31,31,32,31,31,30,29,30,29,30,30],2025:[18,31,31,32,31,31,31,30,29,30,29,30,30],2026:[17,31,32,31,32,31,30,30,30,29,29,30,31],2027:[17,30,32,31,32,31,30,30,30,29,30,29,31],2028:[17,31,31,32,31,31,31,30,29,30,29,30,30],2029:[18,31,31,32,31,32,30,30,29,30,29,30,30],2030:[17,31,32,31,32,31,30,30,30,30,30,30,31],2031:[17,31,32,31,32,31,31,31,31,31,31,31,31],2032:[17,32,32,32,32,32,32,32,32,32,32,32,32],2033:[18,31,31,32,32,31,30,30,29,30,29,30,30],2034:[17,31,32,31,32,31,30,30,30,29,29,30,31],2035:[17,30,32,31,32,31,31,29,30,30,29,29,31],2036:[17,31,31,32,31,31,31,30,29,30,29,30,30],2037:[18,31,31,32,32,31,30,30,29,30,29,30,30],2038:[17,31,32,31,32,31,30,30,30,29,29,30,31],2039:[17,31,31,31,32,31,31,29,30,30,29,30,30],2040:[17,31,31,32,31,31,31,30,29,30,29,30,30],2041:[18,31,31,32,32,31,30,30,29,30,29,30,30],2042:[17,31,32,31,32,31,30,30,30,29,29,30,31],2043:[17,31,31,31,32,31,31,29,30,30,29,30,30],2044:[17,31,31,32,31,31,31,30,29,30,29,30,30],2045:[18,31,32,31,32,31,30,30,29,30,29,30,30],2046:[17,31,32,31,32,31,30,30,30,29,29,30,31],2047:[17,31,31,31,32,31,31,30,29,30,29,30,30],2048:[17,31,31,32,31,31,31,30,29,30,29,30,30],2049:[17,31,32,31,32,31,30,30,30,29,29,30,30],2050:[17,31,32,31,32,31,30,30,30,29,30,29,31],2051:[17,31,31,31,32,31,31,30,29,30,29,30,30],2052:[17,31,31,32,31,31,31,30,29,30,29,30,30],2053:[17,31,32,31,32,31,30,30,30,29,29,30,30],2054:[17,31,32,31,32,31,30,30,30,29,30,29,31],2055:[17,31,31,32,31,31,31,30,29,30,30,29,30],2056:[17,31,31,32,31,32,30,30,29,30,29,30,30],2057:[17,31,32,31,32,31,30,30,30,29,29,30,31],2058:[17,30,32,31,32,31,30,30,30,29,30,29,31],2059:[17,31,31,32,31,31,31,30,29,30,29,30,30],2060:[17,31,31,32,32,31,30,30,29,30,29,30,30],2061:[17,31,32,31,32,31,30,30,30,29,29,30,31],2062:[17,30,32,31,32,31,31,29,30,29,30,29,31],2063:[17,31,31,32,31,31,31,30,29,30,29,30,30],2064:[17,31,31,32,32,31,30,30,29,30,29,30,30],2065:[17,31,32,31,32,31,30,30,30,29,29,30,31],2066:[17,31,31,31,32,31,31,29,30,30,29,29,31],2067:[17,31,31,32,31,31,31,30,29,30,29,30,30],2068:[17,31,31,32,32,31,30,30,29,30,29,30,30],2069:[17,31,32,31,32,31,30,30,30,29,29,30,31],2070:[17,31,31,31,32,31,31,29,30,30,29,30,30],2071:[17,31,31,32,31,31,31,30,29,30,29,30,30],2072:[17,31,32,31,32,31,30,30,29,30,29,30,30],2073:[17,31,32,31,32,31,30,30,30,29,29,30,31],2074:[17,31,31,31,32,31,31,30,29,30,29,30,30],2075:[17,31,31,32,31,31,31,30,29,30,29,30,30],2076:[16,31,32,31,32,31,30,30,30,29,29,30,30],2077:[17,31,32,31,32,31,30,30,30,29,30,29,31],2078:[17,31,31,31,32,31,31,30,29,30,29,30,30],2079:[17,31,31,32,31,31,31,30,29,30,29,30,30],2080:[16,31,32,31,32,31,30,30,30,29,29,30,30],2081:[17,31,31,32,32,31,30,30,30,29,30,30,30],2082:[17,31,32,31,32,31,30,30,30,29,30,30,30],2083:[17,31,31,32,31,31,30,30,30,29,30,30,30],2084:[17,31,31,32,31,31,30,30,30,29,30,30,30],2085:[17,31,32,31,32,31,31,30,30,29,30,30,30],2086:[17,31,32,31,32,31,30,30,30,29,30,30,30],2087:[16,31,31,32,31,31,31,30,30,29,30,30,30],2088:[16,30,31,32,32,30,31,30,30,29,30,30,30],2089:[17,31,32,31,32,31,30,30,30,29,30,30,30],2090:[17,31,32,31,32,31,30,30,30,29,30,30,30],2091:[16,31,31,32,31,31,31,30,30,29,30,30,30],2092:[16,31,31,32,32,31,30,30,30,29,30,30,30],2093:[17,31,32,31,32,31,30,30,30,29,30,30,30],2094:[17,31,31,32,31,31,30,30,30,29,30,30,30],2095:[17,31,31,32,31,31,31,30,29,30,30,30,30],2096:[17,30,31,32,32,31,30,30,29,30,29,30,30],2097:[17,31,32,31,32,31,30,30,30,29,30,30,30],2098:[17,31,31,32,31,31,31,29,30,29,30,30,31],2099:[17,31,31,32,31,31,31,30,29,29,30,30,30],2100:[17,31,32,31,32,30,31,30,29,30,29,30,30]}}),n.calendars.nepali=a},{\"../main\":549,\"object-assign\":440}],545:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Persian\",jdEpoch:1948320.5,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Persian\",epochs:[\"BP\",\"AP\"],monthNames:[\"Farvardin\",\"Ordibehesht\",\"Khordad\",\"Tir\",\"Mordad\",\"Shahrivar\",\"Mehr\",\"Aban\",\"Azar\",\"Day\",\"Bahman\",\"Esfand\"],monthNamesShort:[\"Far\",\"Ord\",\"Kho\",\"Tir\",\"Mor\",\"Sha\",\"Meh\",\"Aba\",\"Aza\",\"Day\",\"Bah\",\"Esf\"],dayNames:[\"Yekshambe\",\"Doshambe\",\"Seshambe\",\"Ch\\xe6harshambe\",\"Panjshambe\",\"Jom'e\",\"Shambe\"],dayNamesShort:[\"Yek\",\"Do\",\"Se\",\"Ch\\xe6\",\"Panj\",\"Jom\",\"Sha\"],dayNamesMin:[\"Ye\",\"Do\",\"Se\",\"Ch\",\"Pa\",\"Jo\",\"Sh\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 682*((e.year()-(e.year()>0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":549,\"object-assign\":440}],546:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":549,\"object-assign\":440}],547:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":549,\"object-assign\":440}],548:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;a<o.length;a++){if(o[a]>r)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;n<o.length&&!(o[n]>e);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":549,\"object-assign\":440}],549:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,function(e){return t[e]})}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;o<t.minMonth;)a--,o+=t.monthsInYear(a);for(var e=t.monthsInYear(a);o>e-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth<this.monthsInYear(i)&&r>=this.minDay&&r-this.minDay<this.daysInMonth(i)}return this._validateLevel--,n},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return c.instance().fromJD(this.toJD(n)).toJSDate()},fromJSDate:function(t){return this.fromJD(c.instance().fromJSDate(t).toJD())},_validate:function(t,e,r,n){if(t.year){if(0===this._validateLevel&&this.name!==t.calendar().name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this.local.name).replace(/\\{1\\}/,t.calendar().local.name);return t}try{if(this._validateLevel++,1===this._validateLevel&&!this.isValid(t,e,r))throw n.replace(/\\{0\\}/,this.local.name);var i=this.newDate(t,e,r);return this._validateLevel--,i}catch(t){throw this._validateLevel--,t}}}),l.prototype=new s,n(l.prototype,{name:\"Gregorian\",jdEpoch:1721425.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Gregorian\",epochs:[\"BCE\",\"CE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==0&&(t%100!=0||t%400==0)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);t=n.year(),e=n.month(),r=n.day(),t<0&&t++,e<3&&(e+=12,t--);var i=Math.floor(t/100),a=2-i+Math.floor(i/4);return Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r+a-1524.5},fromJD:function(t){var e=Math.floor(t+.5),r=Math.floor((e-1867216.25)/36524.25),n=(r=e+1+r-Math.floor(r/4))+1524,i=Math.floor((n-122.1)/365.25),a=Math.floor(365.25*i),o=Math.floor((n-a)/30.6001),s=n-a-Math.floor(30.6001*o),l=o-(o>13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":440}],550:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n<t.length&&t.charAt(w+n)===e;)n++;return w+=n-1,Math.floor(n/(r||1))>1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length<r;)i=\"0\"+i;return i},g=this,v=function(t){return\"function\"==typeof u?u.call(g,t,p(\"m\")):x(d(\"m\",t.month(),2))},m=function(t,e){return e?\"function\"==typeof h?h.call(g,t):h[t.month()-g.minMonth]:\"function\"==typeof f?f.call(g,t):f[t.month()-g.minMonth]},y=this.local.digits,x=function(t){return r.localNumbers&&y?y(t):t},b=\"\",_=!1,w=0;w<t.length;w++)if(_)\"'\"!==t.charAt(w)||p(\"'\")?b+=t.charAt(w):_=!1;else switch(t.charAt(w)){case\"d\":b+=x(d(\"d\",e.day(),2));break;case\"D\":b+=(n=\"D\",a=e.dayOfWeek(),o=l,s=c,p(n)?s[a]:o[a]);break;case\"o\":b+=d(\"o\",e.dayOfYear(),3);break;case\"w\":b+=d(\"w\",e.weekOfYear(),2);break;case\"m\":b+=v(e);break;case\"M\":b+=m(e,p(\"M\"));break;case\"y\":b+=p(\"y\",2)?e.year():(e.year()%100<10?\"0\":\"\")+e.year()%100;break;case\"Y\":p(\"Y\",2),b+=e.formatYear();break;case\"J\":b+=e.toJD();break;case\"@\":b+=(e.toJD()-this.UNIX_EPOCH)*this.SECS_PER_DAY;break;case\"!\":b+=(e.toJD()-this.TICKS_EPOCH)*this.TICKS_PER_DAY;break;case\"'\":p(\"'\")?b+=\"'\":_=!0;break;default:b+=t.charAt(w)}return b},parseDate:function(t,e,r){if(null==e)throw i.local.invalidArguments||i.regionalOptions[\"\"].invalidArguments;if(\"\"===(e=\"object\"==typeof e?e.toString():e+\"\"))return null;t=t||this.local.dateFormat;var n=(r=r||{}).shortYearCutoff||this.shortYearCutoff;n=\"string\"!=typeof n?n:this.today().year()%100+parseInt(n,10);for(var a=r.dayNamesShort||this.local.dayNamesShort,o=r.dayNames||this.local.dayNames,s=r.parseMonth||this.local.parseMonth,l=r.monthNumbers||this.local.monthNumbers,c=r.monthNamesShort||this.local.monthNamesShort,u=r.monthNames||this.local.monthNames,f=-1,h=-1,p=-1,d=-1,g=-1,v=!1,m=!1,y=function(e,r){for(var n=1;T+n<t.length&&t.charAt(T+n)===e;)n++;return T+=n-1,Math.floor(n/(r||1))>1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(M).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,M);return M+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(M));return M+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s<o.length;s++)if(e.substr(M,o[s].length).toLowerCase()===o[s].toLowerCase())return M+=o[s].length,s+b.minMonth;throw(i.local.unknownNameAt||i.regionalOptions[\"\"].unknownNameAt).replace(/\\{0\\}/,M)},k=function(){if(\"function\"==typeof u){var t=y(\"M\")?u.call(b,e.substring(M)):c.call(b,e.substring(M));return M+=t.length,t}return w(\"M\",c,u)},A=function(){if(e.charAt(M)!==t.charAt(T))throw(i.local.unexpectedLiteralAt||i.regionalOptions[\"\"].unexpectedLiteralAt).replace(/\\{0\\}/,M);M++},M=0,T=0;T<t.length;T++)if(m)\"'\"!==t.charAt(T)||y(\"'\")?A():m=!1;else switch(t.charAt(T)){case\"d\":d=x(\"d\");break;case\"D\":w(\"D\",a,o);break;case\"o\":g=x(\"o\");break;case\"w\":x(\"w\");break;case\"m\":p=_();break;case\"M\":p=k();break;case\"y\":var S=T;v=!y(\"y\",2),T=S,h=x(\"y\",2);break;case\"Y\":h=x(\"Y\",2);break;case\"J\":f=x(\"J\")+.5,\".\"===e.charAt(M)&&(M++,x(\"J\"));break;case\"@\":f=x(\"@\")/this.SECS_PER_DAY+this.UNIX_EPOCH;break;case\"!\":f=x(\"!\")/this.TICKS_PER_DAY+this.TICKS_EPOCH;break;case\"*\":M=e.length;break;case\"'\":y(\"'\")?A():m=!0;break;default:A()}if(M<e.length)throw i.local.unexpectedText||i.regionalOptions[\"\"].unexpectedText;if(-1===h?h=this.today().year():h<100&&v&&(h+=-1===n?1900:this.today().year()-this.today().year()%100-(h<=n?0:100)),\"string\"==typeof p&&(p=s.call(this,h,p)),g>-1){p=1,d=g;for(var C=this.daysInMonth(h,p);d>C;C=this.daysInMonth(h,p))p++,d-=C}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":549,\"object-assign\":440}],551:[function(t,e,r){e.exports=t(\"cwise-compiler\")({args:[\"array\",{offset:[1],array:0},\"scalar\",\"scalar\",\"index\"],pre:{body:\"{}\",args:[],thisVars:[],localVars:[]},post:{body:\"{}\",args:[],thisVars:[],localVars:[]},body:{body:\"{\\n        var _inline_1_da = _inline_1_arg0_ - _inline_1_arg3_\\n        var _inline_1_db = _inline_1_arg1_ - _inline_1_arg3_\\n        if((_inline_1_da >= 0) !== (_inline_1_db >= 0)) {\\n          _inline_1_arg2_.push(_inline_1_arg4_[0] + 0.5 + 0.5 * (_inline_1_da + _inline_1_db) / (_inline_1_da - _inline_1_db))\\n        }\\n      }\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg3_\",lvalue:!1,rvalue:!0,count:2},{name:\"_inline_1_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[],localVars:[\"_inline_1_da\",\"_inline_1_db\"]},funcName:\"zeroCrossings\"})},{\"cwise-compiler\":135}],552:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":551}],553:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],554:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../plot_api/plot_template\":732,\"../../plots/cartesian/constants\":748,\"../../plots/font_attributes\":769,\"./arrow_paths\":553}],555:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach(function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref);e._extremes={},r&&s(e,r),n&&s(e,n)})}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,v=3*t.startarrowsize*t.arrowwidth||0,m=v+h,y=v-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,m),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else m=s?m+s:m,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,m),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"./draw\":560}],556:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r<u.length;r++)if(a=(i=u[r]).clicktoshow){for(n=0;n<d;n++)if(l=(o=e[n]).xaxis,c=o.yaxis,l._id===i.xref&&c._id===i.yref&&l.d2r(o.x)===s(i._xclick,l)&&c.d2r(o.y)===s(i._yclick,c)){(i.visible?\"onout\"===a?h:p:f).push(r);break}n===d&&i.visible&&\"onout\"===a&&h.push(r)}return{on:f,off:h,explicitOff:p}}function s(t,e){return\"log\"===e.type?e.l2r(t):e.d2r(t)}e.exports={hasClickToShow:function(t,e){var r=o(t,e);return r.on.length>0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r<c.length;r++)(s=a(t.layout,\"annotations\",h[c[r]])).modifyItem(\"visible\",!0),n.extendFlat(f,s.getUpdateObj());for(r=0;r<u.length;r++)(s=a(t.layout,\"annotations\",h[u[r]])).modifyItem(\"visible\",!1),n.extendFlat(f,s.getUpdateObj());return i.call(\"update\",t,{},f)}}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../registry\":825}],557:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\");e.exports=function(t,e,r,a){a(\"opacity\");var o=a(\"bgcolor\"),s=a(\"bordercolor\"),l=i.opacity(s);a(\"borderpad\");var c=a(\"borderwidth\"),u=a(\"showarrow\");if(a(\"text\",u?\" \":r._dfltTitle.annotation),a(\"textangle\"),n.coerceFont(a,\"font\",r.font),a(\"width\"),a(\"align\"),a(\"height\")&&a(\"valign\"),u){var f,h,p=a(\"arrowside\");-1!==p.indexOf(\"end\")&&(f=a(\"arrowhead\"),h=a(\"arrowsize\")),-1!==p.indexOf(\"start\")&&(a(\"startarrowhead\",f),a(\"startarrowsize\",h)),a(\"arrowcolor\",l?e.bordercolor:i.defaultLine),a(\"arrowwidth\",2*(l&&c||1)),a(\"standoff\"),a(\"startstandoff\")}var d=a(\"hovertext\"),g=r.hoverlabel||{};if(d){var v=a(\"hoverlabel.bgcolor\",g.bgcolor||(i.opacity(o)?i.rgb(o):i.defaultLine)),m=a(\"hoverlabel.bordercolor\",g.bordercolor||i.contrast(v));n.coerceFont(a,\"hoverlabel.font\",{family:g.font.family,size:g.font.size,color:g.font.color||m})}a(\"captureevents\",!!d)}},{\"../../lib\":694,\"../color\":571}],558:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib/to_log_range\");e.exports=function(t,e,r,a){e=e||{};var o=\"log\"===r&&\"linear\"===e.type,s=\"linear\"===r&&\"log\"===e.type;if(o||s)for(var l,c,u=t._fullLayout.annotations,f=e._id.charAt(0),h=0;h<u.length;h++)l=u[h],c=\"annotations[\"+h+\"].\",l[f+\"ref\"]===e._id&&p(f),l[\"a\"+f+\"ref\"]===e._id&&p(\"a\"+f);function p(t){var r=l[t],s=null;s=o?i(r,e.range):Math.pow(10,r),n(s)||(s=null),a(c+t,s)}}},{\"../../lib/to_log_range\":720,\"fast-isnumeric\":215}],559:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/array_container_defaults\"),o=t(\"./common_defaults\"),s=t(\"./attributes\");function l(t,e,r){function a(r,i){return n.coerce(t,e,s,r,i)}var l=a(\"visible\"),c=a(\"clicktoshow\");if(l||c){o(t,e,r,a);for(var u=e.showarrow,f=[\"x\",\"y\"],h=[-10,-30],p={_fullLayout:r},d=0;d<2;d++){var g=f[d],v=i.coerceRef(t,e,p,g,\"\",\"paper\");if(\"paper\"!==v)i.getFromId(p,v)._annIndices.push(e._index);if(i.coercePosition(e,p,a,v,g,.5),u){var m=\"a\"+g,y=i.coerceRef(t,e,p,m,\"pixel\");\"pixel\"!==y&&y!==v&&(y=e[m]=\"pixel\");var x=\"pixel\"===y?h[d]:.4;i.coercePosition(e,p,a,y,m,x)}a(g+\"anchor\"),a(g+\"shift\")}if(n.noneOrAll(t,e,[\"x\",\"y\"]),u&&n.noneOrAll(t,e,[\"ax\",\"ay\"]),c){var b=a(\"xclick\"),_=a(\"yclick\");e._xclick=void 0===b?e.x:i.cleanPosition(b,p,e.xref),e._yclick=void 0===_?e.y:i.cleanPosition(_,p,e.yref)}}}e.exports=function(t,e){a(t,e,{name:\"annotations\",handleItemDefaults:l})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/cartesian/axes\":742,\"./attributes\":554,\"./common_defaults\":557}],560:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../plots/plots\"),o=t(\"../../lib\"),s=t(\"../../plots/cartesian/axes\"),l=t(\"../color\"),c=t(\"../drawing\"),u=t(\"../fx\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"../../lib/setcursor\"),p=t(\"../dragelement\"),d=t(\"../../plot_api/plot_template\").arrayEditor,g=t(\"./draw_arrow_head\");function v(t,e){var r=t._fullLayout.annotations[e]||{};m(t,r,e,!1,s.getFromId(t,r.xref),s.getFromId(t,r.yref))}function m(t,e,r,a,s,v){var m,y,x=t._fullLayout,b=t._fullLayout._size,_=t._context.edits;a?(m=\"annotation-\"+a,y=a+\".annotations\"):(m=\"annotation\",y=\"annotations\");var w=d(t.layout,y,e),k=w.modifyBase,A=w.modifyItem,M=w.getUpdateObj;x._infolayer.selectAll(\".\"+m+'[data-index=\"'+r+'\"]').remove();var T=\"clip\"+x._uid+\"_ann\"+r;if(e._input&&!1!==e.visible){var S={x:{},y:{}},C=+e.textangle||0,E=x._infolayer.append(\"g\").classed(m,!0).attr(\"data-index\",String(r)).style(\"opacity\",e.opacity),L=E.append(\"g\").classed(\"annotation-text-g\",!0),z=_[e.showarrow?\"annotationTail\":\"annotationPosition\"],O=e.captureevents||_.annotationText||z,I=L.append(\"g\").style(\"pointer-events\",O?\"all\":null).call(h,\"pointer\").on(\"click\",function(){t._dragging=!1;var i={index:r,annotation:e._input,fullAnnotation:e,event:n.event};a&&(i.subplotId=a),t.emit(\"plotly_clickannotation\",i)});e.hovertext&&I.on(\"mouseover\",function(){var r=e.hoverlabel,n=r.font,i=this.getBoundingClientRect(),a=t.getBoundingClientRect();u.loneHover({x0:i.left-a.left,x1:i.right-a.left,y:(i.top+i.bottom)/2-a.top,text:e.hovertext,color:r.bgcolor,borderColor:r.bordercolor,fontFamily:n.family,fontSize:n.size,fontColor:n.color},{container:x._hoverlayer.node(),outerContainer:x._paper.node(),gd:t})}).on(\"mouseout\",function(){u.loneUnhover(x._hoverlayer.node())});var D=e.borderwidth,P=e.borderpad,R=D+P,F=I.append(\"rect\").attr(\"class\",\"bg\").style(\"stroke-width\",D+\"px\").call(l.stroke,e.bordercolor).call(l.fill,e.bgcolor),B=e.width||e.height,N=x._topclips.selectAll(\"#\"+T).data(B?[0]:[]);N.enter().append(\"clipPath\").classed(\"annclip\",!0).attr(\"id\",T).append(\"rect\"),N.exit().remove();var j=e.font,V=x.meta?o.templateString(e.text,{meta:x.meta}):e.text,U=I.append(\"text\").classed(\"annotation-text\",!0).text(V);_.annotationText?U.call(f.makeEditable,{delegate:I,gd:t}).call(q).on(\"edit\",function(r){e.text=r,this.call(q),A(\"text\",r),s&&s.autorange&&k(s._name+\".autorange\",!0),v&&v.autorange&&k(v._name+\".autorange\",!0),i.call(\"_guiRelayout\",t,M())}):U.call(q)}else n.selectAll(\"#\"+T).remove();function q(r){return r.call(c.font,j).attr({\"text-anchor\":{left:\"start\",right:\"end\"}[e.align]||\"middle\"}),f.convertToTspans(r,t,H),r}function H(){var r=U.selectAll(\"a\");1===r.size()&&r.text()===U.text()&&I.insert(\"a\",\":first-child\").attr({\"xlink:xlink:href\":r.attr(\"xlink:href\"),\"xlink:xlink:show\":r.attr(\"xlink:show\")}).style({cursor:\"pointer\"}).node().appendChild(F.node());var n=I.select(\".annotation-text-math-group\"),u=!n.empty(),d=c.bBox((u?n:U).node()),m=d.width,y=d.height,w=e.width||m,O=e.height||y,P=Math.round(w+2*R),j=Math.round(O+2*R);function V(t,e){return\"auto\"===e&&(e=t<1/3?\"left\":t>2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var q=!1,H=[\"x\",\"y\"],G=0;G<H.length;G++){var W,Y,X,Z,$,J=H[G],K=e[J+\"ref\"]||J,Q=e[\"a\"+J+\"ref\"],tt={x:s,y:v}[J],et=(C+(\"x\"===J?0:-90))*Math.PI/180,rt=P*Math.cos(et),nt=j*Math.sin(et),it=Math.abs(rt)+Math.abs(nt),at=e[J+\"anchor\"],ot=e[J+\"shift\"]*(\"x\"===J?1:-1),st=S[J];if(tt){var lt=tt.r2fraction(e[J]);(lt<0||lt>1)&&(Q===K?((lt=tt.r2fraction(e[\"a\"+J]))<0||lt>1)&&(q=!0):q=!0),W=tt._offset+tt.r2p(e[J]),Z=.5}else\"x\"===J?(X=e[J],W=b.l+b.w*X):(X=1-e[J],W=b.t+b.h*X),Z=e.showarrow?.5:X;if(e.showarrow){st.head=W;var ct=e[\"a\"+J];$=rt*V(.5,e.xanchor)-nt*V(.5,e.yanchor),Q===K?(st.tail=tt._offset+tt.r2p(ct),Y=$):(st.tail=W+ct,Y=$+ct),st.text=st.tail+$;var ut=x[\"x\"===J?\"width\":\"height\"];if(\"paper\"===K&&(st.head=o.constrain(st.head,1,ut-1)),\"pixel\"===Q){var ft=-Math.max(st.tail-3,st.text),ht=Math.min(st.tail+3,st.text)-ut;ft>0?(st.tail+=ft,st.text+=ft):ht>0&&(st.tail-=ht,st.text-=ht)}st.tail+=ot,st.head+=ot}else Y=$=it*V(Z,at),st.text=W+$;st.text+=ot,$+=ot,Y+=ot,e[\"_\"+J+\"padplus\"]=it/2+Y,e[\"_\"+J+\"padminus\"]=it/2-Y,e[\"_\"+J+\"size\"]=it,e[\"_\"+J+\"shift\"]=$}if(t._dragging||!q){var pt=0,dt=0;if(\"left\"!==e.align&&(pt=(w-m)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(dt=(O-y)*(\"middle\"===e.valign?.5:1)),u)n.select(\"svg\").attr({x:R+pt-1,y:R+dt}).call(c.setClipUrl,B?T:null,t);else{var gt=R+dt-d.top,vt=R+pt-d.left;U.call(f.positionText,vt,gt).call(c.setClipUrl,B?T:null,t)}N.select(\"rect\").call(c.setRect,R,R,w,O),F.call(c.setRect,D/2,D/2,P-D,j-D),I.call(c.setTranslate,Math.round(S.x.text-P/2),Math.round(S.y.text-j/2)),L.attr({transform:\"rotate(\"+C+\",\"+S.x.text+\",\"+S.y.text+\")\"});var mt,yt=function(r,n){E.selectAll(\".annotation-arrow-g\").remove();var u=S.x.head,f=S.y.head,h=S.x.tail+r,d=S.y.tail+n,m=S.x.text+r,y=S.y.text+n,x=o.rotationXYMatrix(C,m,y),w=o.apply2DTransform(x),T=o.apply2DTransform2(x),z=+F.attr(\"width\"),O=+F.attr(\"height\"),D=m-.5*z,P=D+z,R=y-.5*O,B=R+O,N=[[D,R,D,B],[D,B,P,B],[P,B,P,R],[P,R,D,R]].map(T);if(!N.reduce(function(t,e){return t^!!o.segmentsIntersect(u,f,u+1e6,f+1e6,e[0],e[1],e[2],e[3])},!1)){N.forEach(function(t){var e=o.segmentsIntersect(h,d,u,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,d=e.y)});var j=e.arrowwidth,V=e.arrowcolor,U=e.arrowside,q=E.append(\"g\").style({opacity:l.opacity(V)}).classed(\"annotation-arrow-g\",!0),H=q.append(\"path\").attr(\"d\",\"M\"+h+\",\"+d+\"L\"+u+\",\"+f).style(\"stroke-width\",j+\"px\").call(l.stroke,l.rgb(V));if(g(H,U,e),_.annotationPosition&&H.node().parentNode&&!a){var G=u,W=f;if(e.standoff){var Y=Math.sqrt(Math.pow(u-h,2)+Math.pow(f-d,2));G+=e.standoff*(h-u)/Y,W+=e.standoff*(d-f)/Y}var X,Z,$=q.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-G)+\",\"+(d-W),transform:\"translate(\"+G+\",\"+W+\")\"}).style(\"stroke-width\",j+6+\"px\").call(l.stroke,\"rgba(0,0,0,0)\").call(l.fill,\"rgba(0,0,0,0)\");p.init({element:$.node(),gd:t,prepFn:function(){var t=c.getTranslate(I);X=t.x,Z=t.y,s&&s.autorange&&k(s._name+\".autorange\",!0),v&&v.autorange&&k(v._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(X,Z),i=n[0]+t,a=n[1]+r;I.call(c.setTranslate,i,a),A(\"x\",s?s.p2r(s.r2p(e.x)+t):e.x+t/b.w),A(\"y\",v?v.p2r(v.r2p(e.y)+r):e.y-r/b.h),e.axref===e.xref&&A(\"ax\",s.p2r(s.r2p(e.ax)+t)),e.ayref===e.yref&&A(\"ay\",v.p2r(v.r2p(e.ay)+r)),q.attr(\"transform\",\"translate(\"+t+\",\"+r+\")\"),L.attr({transform:\"rotate(\"+C+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,M());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&yt(0,0),z)p.init({element:I.node(),gd:t,prepFn:function(){mt=L.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?A(\"ax\",s.p2r(s.r2p(e.ax)+t)):A(\"ax\",e.ax+t),e.ayref===e.yref?A(\"ay\",v.p2r(v.r2p(e.ay)+r)):A(\"ay\",e.ay+r),yt(t,r);else{if(a)return;var i,o;if(s)i=s.p2r(s.r2p(e.x)+t);else{var l=e._xsize/b.w,c=e.x+(e._xshift-e.xshift)/b.w-l/2;i=p.align(c+t/b.w,l,0,1,e.xanchor)}if(v)o=v.p2r(v.r2p(e.y)+r);else{var u=e._ysize/b.h,f=e.y-(e._yshift+e.yshift)/b.h-u/2;o=p.align(f-r/b.h,u,0,1,e.yanchor)}A(\"x\",i),A(\"y\",o),s&&v||(n=p.getCursor(s?.5:i,v?.5:o,e.xanchor,e.yanchor))}L.attr({transform:\"translate(\"+t+\",\"+r+\")\"+mt}),h(I,n)},doneFn:function(){h(I),i.call(\"_guiRelayout\",t,M());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}else I.remove()}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r<e.annotations.length;r++)e.annotations[r].visible&&v(t,r);return a.previousPromises(t)},drawOne:v,drawRaw:m}},{\"../../lib\":694,\"../../lib/setcursor\":714,\"../../lib/svg_text_utils\":718,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/axes\":742,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"../fx\":610,\"./draw_arrow_head\":561,d3:149}],561:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../color\"),a=t(\"./arrow_paths\");e.exports=function(t,e,r){var o,s,l,c,u=t.node(),f=a[r.arrowhead||0],h=a[r.startarrowhead||0],p=(r.arrowwidth||1)*(r.arrowsize||1),d=(r.arrowwidth||1)*(r.startarrowsize||1),g=e.indexOf(\"start\")>=0,v=e.indexOf(\"end\")>=0,m=f.backoff*p+r.standoff,y=h.backoff*d+r.startstandoff;if(\"line\"===u.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},s={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var x=o.x-s.x,b=o.y-s.y;if(c=(l=Math.atan2(b,x))+Math.PI,m&&y&&m+y>Math.sqrt(x*x+b*b))return void z();if(m){if(m*m>x*x+b*b)return void z();var _=m*Math.cos(l),w=m*Math.sin(l);s.x+=_,s.y+=w,t.attr({x2:s.x,y2:s.y})}if(y){if(y*y>x*x+b*b)return void z();var k=y*Math.cos(l),A=y*Math.sin(l);o.x-=k,o.y-=A,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===u.nodeName){var M=u.getTotalLength(),T=\"\";if(M<m+y)return void z();var S=u.getPointAtLength(0),C=u.getPointAtLength(.1);l=Math.atan2(S.y-C.y,S.x-C.x),o=u.getPointAtLength(Math.min(y,M)),T=\"0px,\"+y+\"px,\";var E=u.getPointAtLength(M),L=u.getPointAtLength(M-.1);c=Math.atan2(E.y-L.y,E.x-L.x),s=u.getPointAtLength(Math.max(0,M-m)),T+=M-(T?y+m:m)+\"px,\"+M+\"px\",t.style(\"stroke-dasharray\",T)}function z(){t.style(\"stroke-dasharray\",\"0px,100px\")}function O(e,a,o,s){e.path&&(e.noRotate&&(o=0),n.select(u.parentNode).append(\"path\").attr({class:t.attr(\"class\"),d:e.path,transform:\"translate(\"+a.x+\",\"+a.y+\")\"+(o?\"rotate(\"+180*o/Math.PI+\")\":\"\")+\"scale(\"+s+\")\"}).style({fill:i.rgb(r.arrowcolor),\"stroke-width\":0}))}g&&O(h,o,l,d),v&&O(f,s,c,p)}},{\"../color\":571,\"./arrow_paths\":553,d3:149}],562:[function(t,e,r){\"use strict\";var n=t(\"./draw\"),i=t(\"./click\");e.exports={moduleType:\"component\",name:\"annotations\",layoutAttributes:t(\"./attributes\"),supplyLayoutDefaults:t(\"./defaults\"),includeBasePlot:t(\"../../plots/cartesian/include_components\")(\"annotations\"),calcAutorange:t(\"./calc_autorange\"),draw:n.draw,drawOne:n.drawOne,drawRaw:n.drawRaw,hasClickToShow:i.hasClickToShow,onClick:i.onClick,convertCoords:t(\"./convert_coords\")}},{\"../../plots/cartesian/include_components\":753,\"./attributes\":554,\"./calc_autorange\":555,\"./click\":556,\"./convert_coords\":558,\"./defaults\":559,\"./draw\":560}],563:[function(t,e,r){\"use strict\";var n=t(\"../annotations/attributes\"),i=t(\"../../plot_api/edit_types\").overrideAll,a=t(\"../../plot_api/plot_template\").templatedArray;e.exports=i(a(\"annotation\",{visible:n.visible,x:{valType:\"any\"},y:{valType:\"any\"},z:{valType:\"any\"},ax:{valType:\"number\"},ay:{valType:\"number\"},xanchor:n.xanchor,xshift:n.xshift,yanchor:n.yanchor,yshift:n.yshift,text:n.text,textangle:n.textangle,font:n.font,width:n.width,height:n.height,opacity:n.opacity,align:n.align,valign:n.valign,bgcolor:n.bgcolor,bordercolor:n.bordercolor,borderpad:n.borderpad,borderwidth:n.borderwidth,showarrow:n.showarrow,arrowcolor:n.arrowcolor,arrowhead:n.arrowhead,startarrowhead:n.startarrowhead,arrowside:n.arrowside,arrowsize:n.arrowsize,startarrowsize:n.startarrowsize,arrowwidth:n.arrowwidth,standoff:n.standoff,startstandoff:n.startstandoff,hovertext:n.hovertext,hoverlabel:n.hoverlabel,captureevents:n.captureevents}),\"calc\",\"from-root\")},{\"../../plot_api/edit_types\":725,\"../../plot_api/plot_template\":732,\"../annotations/attributes\":554}],564:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\");function a(t,e){var r=e.fullSceneLayout.domain,a=e.fullLayout._size,o={pdata:null,type:\"linear\",autorange:!1,range:[-1/0,1/0]};t._xa={},n.extendFlat(t._xa,o),i.setConvert(t._xa),t._xa._offset=a.l+r.x[0]*a.w,t._xa.l2p=function(){return.5*(1+t._pdata[0]/t._pdata[3])*a.w*(r.x[1]-r.x[0])},t._ya={},n.extendFlat(t._ya,o),i.setConvert(t._ya),t._ya._offset=a.t+(1-r.y[1])*a.h,t._ya.l2p=function(){return.5*(1-t._pdata[1]/t._pdata[3])*a.h*(r.y[1]-r.y[0])}}e.exports=function(t){for(var e=t.fullSceneLayout.annotations,r=0;r<e.length;r++)a(e[r],t);t.fullLayout._infolayer.selectAll(\".annotation-\"+t.id).remove()}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742}],565:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/array_container_defaults\"),o=t(\"../annotations/common_defaults\"),s=t(\"./attributes\");function l(t,e,r,a){function l(r,i){return n.coerce(t,e,s,r,i)}function c(t){var n=t+\"axis\",a={_fullLayout:{}};return a._fullLayout[n]=r[n],i.coercePosition(e,a,l,t,t,.5)}l(\"visible\")&&(o(t,e,a.fullLayout,l),c(\"x\"),c(\"y\"),c(\"z\"),n.noneOrAll(t,e,[\"x\",\"y\",\"z\"]),e.xref=\"x\",e.yref=\"y\",e.zref=\"z\",l(\"xanchor\"),l(\"yanchor\"),l(\"xshift\"),l(\"yshift\"),e.showarrow&&(e.axref=\"pixel\",e.ayref=\"pixel\",l(\"ax\",-10),l(\"ay\",-30),n.noneOrAll(t,e,[\"ax\",\"ay\"])))}e.exports=function(t,e,r){a(t,e,{name:\"annotations\",handleItemDefaults:l,fullLayout:r.fullLayout})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/cartesian/axes\":742,\"../annotations/common_defaults\":557,\"./attributes\":563}],566:[function(t,e,r){\"use strict\";var n=t(\"../annotations/draw\").drawRaw,i=t(\"../../plots/gl3d/project\"),a=[\"x\",\"y\",\"z\"];e.exports=function(t){for(var e=t.fullSceneLayout,r=t.dataScale,o=e.annotations,s=0;s<o.length;s++){for(var l=o[s],c=!1,u=0;u<3;u++){var f=a[u],h=l[f],p=e[f+\"axis\"].r2fraction(h);if(p<0||p>1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":794,\"../annotations/draw\":560}],567:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s<o.length;s++){var l=o[s];a.test(l)&&(t[l].annotations||[]).length&&(i.pushUnique(e._basePlotModules,r),i.pushUnique(e._subplots.gl3d,l))}},convert:t(\"./convert\"),draw:t(\"./draw\")}},{\"../../lib\":694,\"../../registry\":825,\"./attributes\":563,\"./convert\":564,\"./defaults\":565,\"./draw\":566}],568:[function(t,e,r){\"use strict\";e.exports=t(\"world-calendars/dist/main\"),t(\"world-calendars/dist/plus\"),t(\"world-calendars/dist/calendars/chinese\"),t(\"world-calendars/dist/calendars/coptic\"),t(\"world-calendars/dist/calendars/discworld\"),t(\"world-calendars/dist/calendars/ethiopian\"),t(\"world-calendars/dist/calendars/hebrew\"),t(\"world-calendars/dist/calendars/islamic\"),t(\"world-calendars/dist/calendars/julian\"),t(\"world-calendars/dist/calendars/mayan\"),t(\"world-calendars/dist/calendars/nanakshahi\"),t(\"world-calendars/dist/calendars/nepali\"),t(\"world-calendars/dist/calendars/persian\"),t(\"world-calendars/dist/calendars/taiwan\"),t(\"world-calendars/dist/calendars/thai\"),t(\"world-calendars/dist/calendars/ummalqura\")},{\"world-calendars/dist/calendars/chinese\":535,\"world-calendars/dist/calendars/coptic\":536,\"world-calendars/dist/calendars/discworld\":537,\"world-calendars/dist/calendars/ethiopian\":538,\"world-calendars/dist/calendars/hebrew\":539,\"world-calendars/dist/calendars/islamic\":540,\"world-calendars/dist/calendars/julian\":541,\"world-calendars/dist/calendars/mayan\":542,\"world-calendars/dist/calendars/nanakshahi\":543,\"world-calendars/dist/calendars/nepali\":544,\"world-calendars/dist/calendars/persian\":545,\"world-calendars/dist/calendars/taiwan\":546,\"world-calendars/dist/calendars/thai\":547,\"world-calendars/dist/calendars/ummalqura\":548,\"world-calendars/dist/main\":549,\"world-calendars/dist/plus\":550}],569:[function(t,e,r){\"use strict\";var n=t(\"./calendars\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\"),o=a.EPOCHJD,s=a.ONEDAY,l={valType:\"enumerated\",values:Object.keys(n.calendars),editType:\"calc\",dflt:\"gregorian\"},c=function(t,e,r,n){var a={};return a[r]=l,i.coerce(t,e,a,r,n)},u=\"##\",f={d:{0:\"dd\",\"-\":\"d\"},e:{0:\"d\",\"-\":\"d\"},a:{0:\"D\",\"-\":\"D\"},A:{0:\"DD\",\"-\":\"DD\"},j:{0:\"oo\",\"-\":\"o\"},W:{0:\"ww\",\"-\":\"w\"},m:{0:\"mm\",\"-\":\"m\"},b:{0:\"M\",\"-\":\"M\"},B:{0:\"MM\",\"-\":\"MM\"},y:{0:\"yy\",\"-\":\"yy\"},Y:{0:\"yyyy\",\"-\":\"yyyy\"},U:u,w:u,c:{0:\"D M d %X yyyy\",\"-\":\"D M d %X yyyy\"},x:{0:\"mm/dd/yyyy\",\"-\":\"mm/dd/yyyy\"}};var h={};function p(t){var e=h[t];return e||(e=h[t]=n.instance(t))}function d(t){return i.extendFlat({},l,{description:t})}function g(t){return\"Sets the calendar system to use with `\"+t+\"` date data.\"}var v={xcalendar:d(g(\"x\"))},m=i.extendFlat({},v,{ycalendar:d(g(\"y\"))}),y=i.extendFlat({},m,{zcalendar:d(g(\"z\"))}),x=d([\"Sets the calendar system to use for `range` and `tick0`\",\"if this is a date axis. This does not set the calendar for\",\"interpreting data on this axis, that's specified in the trace\",\"or via the global `layout.calendar`\"].join(\" \"));e.exports={moduleType:\"component\",name:\"calendars\",schema:{traces:{scatter:m,bar:m,box:m,heatmap:m,contour:m,histogram:m,histogram2d:m,histogram2dcontour:m,scatter3d:y,surface:y,mesh3d:y,scattergl:m,ohlc:v,candlestick:v},layout:{calendar:d([\"Sets the default calendar system to use for interpreting and\",\"displaying dates throughout the plot.\"].join(\" \"))},subplots:{xaxis:{calendar:x},yaxis:{calendar:x},scene:{xaxis:{calendar:x},yaxis:{calendar:x},zaxis:{calendar:x}},polar:{radialaxis:{calendar:x}}},transforms:{filter:{valuecalendar:d([\"Sets the calendar system to use for `value`, if it is a date.\"].join(\" \")),targetcalendar:d([\"Sets the calendar system to use for `target`, if it is an\",\"array of dates. If `target` is a string (eg *x*) we use the\",\"corresponding trace attribute (eg `xcalendar`) if it exists,\",\"even if `targetcalendar` is provided.\"].join(\" \"))}}},layoutAttributes:l,handleDefaults:c,handleTraceDefaults:function(t,e,r,n){for(var i=0;i<r.length;i++)c(t,e,r[i]+\"calendar\",n.calendar)},CANONICAL_SUNDAY:{chinese:\"2000-01-02\",coptic:\"2000-01-03\",discworld:\"2000-01-03\",ethiopian:\"2000-01-05\",hebrew:\"5000-01-01\",islamic:\"1000-01-02\",julian:\"2000-01-03\",mayan:\"5000-01-01\",nanakshahi:\"1000-01-05\",nepali:\"2000-01-05\",persian:\"1000-01-01\",jalali:\"1000-01-01\",taiwan:\"1000-01-04\",thai:\"2000-01-04\",ummalqura:\"1400-01-06\"},CANONICAL_TICK:{chinese:\"2000-01-01\",coptic:\"2000-01-01\",discworld:\"2000-01-01\",ethiopian:\"2000-01-01\",hebrew:\"5000-01-01\",islamic:\"1000-01-01\",julian:\"2000-01-01\",mayan:\"5000-01-01\",nanakshahi:\"1000-01-01\",nepali:\"2000-01-01\",persian:\"1000-01-01\",jalali:\"1000-01-01\",taiwan:\"1000-01-01\",thai:\"2000-01-01\",ummalqura:\"1400-01-01\"},DFLTRANGE:{chinese:[\"2000-01-01\",\"2001-01-01\"],coptic:[\"1700-01-01\",\"1701-01-01\"],discworld:[\"1800-01-01\",\"1801-01-01\"],ethiopian:[\"2000-01-01\",\"2001-01-01\"],hebrew:[\"5700-01-01\",\"5701-01-01\"],islamic:[\"1400-01-01\",\"1401-01-01\"],julian:[\"2000-01-01\",\"2001-01-01\"],mayan:[\"5200-01-01\",\"5201-01-01\"],nanakshahi:[\"0500-01-01\",\"0501-01-01\"],nepali:[\"2000-01-01\",\"2001-01-01\"],persian:[\"1400-01-01\",\"1401-01-01\"],jalali:[\"1400-01-01\",\"1401-01-01\"],taiwan:[\"0100-01-01\",\"0101-01-01\"],thai:[\"2500-01-01\",\"2501-01-01\"],ummalqura:[\"1400-01-01\",\"1401-01-01\"]},getCal:p,worldCalFmt:function(t,e,r){for(var n,i,a,l,c,h=Math.floor((e+.05)/s)+o,d=p(r).fromJD(h),g=0;-1!==(g=t.indexOf(\"%\",g));)\"0\"===(n=t.charAt(g+1))||\"-\"===n||\"_\"===n?(a=3,i=t.charAt(g+2),\"_\"===n&&(n=\"-\")):(i=n,n=\"0\",a=2),(l=f[i])?(c=l===u?u:d.formatDate(l[n]),t=t.substr(0,g)+c+t.substr(g+a),g+=c.length):g+=a;return t}}},{\"../../constants/numerical\":671,\"../../lib\":694,\"./calendars\":568}],570:[function(t,e,r){\"use strict\";r.defaults=[\"#1f77b4\",\"#ff7f0e\",\"#2ca02c\",\"#d62728\",\"#9467bd\",\"#8c564b\",\"#e377c2\",\"#7f7f7f\",\"#bcbd22\",\"#17becf\"],r.defaultLine=\"#444\",r.lightLine=\"#eee\",r.background=\"#fff\",r.borderLine=\"#BEC8D9\",r.lightFraction=1e3/11},{}],571:[function(t,e,r){\"use strict\";var n=t(\"tinycolor2\"),i=t(\"fast-isnumeric\"),a=e.exports={},o=t(\"./attributes\");a.defaults=o.defaults;var s=a.defaultLine=o.defaultLine;a.lightLine=o.lightLine;var l=a.background=o.background;function c(t){if(i(t)||\"string\"!=typeof t)return t;var e=t.trim();if(\"rgb\"!==e.substr(0,3))return t;var r=e.match(/^rgba?\\s*\\(([^()]*)\\)$/);if(!r)return t;var n=r[1].trim().split(/\\s*[\\s,]\\s*/),a=\"a\"===e.charAt(3)&&4===n.length;if(!a&&3!==n.length)return t;for(var o=0;o<n.length;o++){if(!n[o].length)return t;if(n[o]=Number(n[o]),!(n[o]>=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}a.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},a.rgb=function(t){return a.tinyRGB(n(t))},a.opacity=function(t){return t?n(t).getAlpha():0},a.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},a.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||l).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},a.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(a.combine(t,l))),(i.isDark()?e?i.lighten(e):l:r?i.darken(r):s).toString()},a.stroke=function(t,e){var r=n(e);t.style({stroke:a.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},a.fill=function(t,e){var r=n(e);t.style({fill:a.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},a.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,o=Object.keys(t);for(e=0;e<o.length;e++)if(i=t[n=o[e]],\"color\"===n.substr(n.length-5))if(Array.isArray(i))for(r=0;r<i.length;r++)i[r]=c(i[r]);else t[n]=c(i);else if(\"colorscale\"===n.substr(n.length-10)&&Array.isArray(i))for(r=0;r<i.length;r++)Array.isArray(i[r])&&(i[r][1]=c(i[r][1]));else if(Array.isArray(i)){var s=i[0];if(!Array.isArray(s)&&s&&\"object\"==typeof s)for(r=0;r<i.length;r++)a.clean(i[r])}else i&&\"object\"==typeof i&&a.clean(i)}}},{\"./attributes\":570,\"fast-isnumeric\":215,tinycolor2:515}],572:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/layout_attributes\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll;e.exports=o({thicknessmode:{valType:\"enumerated\",values:[\"fraction\",\"pixels\"],dflt:\"pixels\"},thickness:{valType:\"number\",min:0,dflt:30},lenmode:{valType:\"enumerated\",values:[\"fraction\",\"pixels\"],dflt:\"fraction\"},len:{valType:\"number\",min:0,dflt:1},x:{valType:\"number\",dflt:1.02,min:-2,max:3},xanchor:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"left\"},xpad:{valType:\"number\",min:0,dflt:10},y:{valType:\"number\",dflt:.5,min:-2,max:3},yanchor:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\"},ypad:{valType:\"number\",min:0,dflt:10},outlinecolor:n.linecolor,outlinewidth:n.linewidth,bordercolor:n.linecolor,borderwidth:{valType:\"number\",min:0,dflt:0},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\"},tickmode:n.tickmode,nticks:n.nticks,tick0:n.tick0,dtick:n.dtick,tickvals:n.tickvals,ticktext:n.ticktext,ticks:a({},n.ticks,{dflt:\"\"}),ticklen:n.ticklen,tickwidth:n.tickwidth,tickcolor:n.tickcolor,showticklabels:n.showticklabels,tickfont:i({}),tickangle:n.tickangle,tickformat:n.tickformat,tickformatstops:n.tickformatstops,tickprefix:n.tickprefix,showtickprefix:n.showtickprefix,ticksuffix:n.ticksuffix,showticksuffix:n.showticksuffix,separatethousands:n.separatethousands,exponentformat:n.exponentformat,showexponent:n.showexponent,title:{text:{valType:\"string\"},font:i({}),side:{valType:\"enumerated\",values:[\"right\",\"top\",\"bottom\"],dflt:\"top\"}},_deprecated:{title:{valType:\"string\"},titlefont:i({}),titleside:{valType:\"enumerated\",values:[\"right\",\"top\",\"bottom\"],dflt:\"top\"}}},\"colorbars\",\"from-root\")},{\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/cartesian/layout_attributes\":755,\"../../plots/font_attributes\":769}],573:[function(t,e,r){\"use strict\";var n=t(\"./draw\"),i=t(\"../colorscale/helpers\").flipScale;e.exports=function(t,e,r){if(\"function\"==typeof r)return r(t,e);var a=e[0].trace,o=\"cb\"+a.uid;r=Array.isArray(r)?r:[r];for(var s=0;s<r.length;s++){var l=r[s].container,c=l?a[l]:a;if(t._fullLayout._infolayer.selectAll(\".\"+o).remove(),c&&c.showscale){var u=e[0].t.cb=n(t,o),f=c.reversescale?i(c.colorscale):c.colorscale;return void u.fillgradient(f).zrange([c[r[s].min],c[r[s].max]]).options(c.colorbar)()}}}},{\"../colorscale/helpers\":582,\"./draw\":576}],574:[function(t,e,r){\"use strict\";e.exports={cn:{colorbar:\"colorbar\",cbbg:\"cbbg\",cbfill:\"cbfill\",cbfills:\"cbfills\",cbline:\"cbline\",cblines:\"cblines\",cbaxis:\"cbaxis\",cbtitleunshift:\"cbtitleunshift\",cbtitle:\"cbtitle\",cboutline:\"cboutline\",crisp:\"crisp\",jsPlaceholder:\"js-placeholder\"}}},{}],575:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plot_api/plot_template\"),a=t(\"../../plots/cartesian/tick_value_defaults\"),o=t(\"../../plots/cartesian/tick_mark_defaults\"),s=t(\"../../plots/cartesian/tick_label_defaults\"),l=t(\"./attributes\");e.exports=function(t,e,r){var c=i.newContainer(e,\"colorbar\"),u=t.colorbar||{};function f(t,e){return n.coerce(u,c,l,t,e)}var h=f(\"thicknessmode\");f(\"thickness\",\"fraction\"===h?30/(r.width-r.margin.l-r.margin.r):30);var p=f(\"lenmode\");f(\"len\",\"fraction\"===p?1:r.height-r.margin.t-r.margin.b),f(\"x\"),f(\"xanchor\"),f(\"xpad\"),f(\"y\"),f(\"yanchor\"),f(\"ypad\"),n.noneOrAll(u,c,[\"x\",\"y\"]),f(\"outlinecolor\"),f(\"outlinewidth\"),f(\"bordercolor\"),f(\"borderwidth\"),f(\"bgcolor\"),a(u,c,f,\"linear\");var d={outerTicks:!1,font:r.font};s(u,c,f,\"linear\",d),o(u,c,f,\"linear\",d),f(\"title.text\",r._dfltTitle.colorbar),n.coerceFont(f,\"title.font\",r.font),f(\"title.side\")}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/tick_label_defaults\":762,\"../../plots/cartesian/tick_mark_defaults\":763,\"../../plots/cartesian/tick_value_defaults\":764,\"./attributes\":572}],576:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../plots/cartesian/axes\"),l=t(\"../dragelement\"),c=t(\"../../lib\"),u=t(\"../../lib/extend\").extendFlat,f=t(\"../../lib/setcursor\"),h=t(\"../drawing\"),p=t(\"../color\"),d=t(\"../titles\"),g=t(\"../../lib/svg_text_utils\"),v=t(\"../../constants/alignment\"),m=v.LINE_SPACING,y=v.FROM_TL,x=v.FROM_BR,b=t(\"../../plots/cartesian/axis_defaults\"),_=t(\"../../plots/cartesian/position_defaults\"),w=t(\"../../plots/cartesian/layout_attributes\"),k=t(\"./attributes\"),A=t(\"./constants\").cn;e.exports=function(t,e){var r={};for(var v in k)r[v]=null;function M(){var v=t._fullLayout,k=v._size;if(\"function\"==typeof r.fillcolor||\"function\"==typeof r.line.color||r.fillgradient){var C,E,L=r.zrange||n.extent((\"function\"==typeof r.fillcolor?r.fillcolor:r.line.color).domain()),z=[],O=[],I=\"function\"==typeof r.line.color?r.line.color:function(){return r.line.color},D=\"function\"==typeof r.fillcolor?r.fillcolor:function(){return r.fillcolor},P=r.levels.end+r.levels.size/100,R=r.levels.size,F=1.001*L[0]-.001*L[1],B=1.001*L[1]-.001*L[0];for(E=0;E<1e5&&(C=r.levels.start+E*R,!(R>0?C>=P:C<=P));E++)C>F&&C<B&&z.push(C);if(r.fillgradient)O=[0];else if(\"function\"==typeof r.fillcolor)if(r.filllevels)for(P=r.filllevels.end+r.filllevels.size/100,R=r.filllevels.size,E=0;E<1e5&&(C=r.filllevels.start+E*R,!(R>0?C>=P:C<=P));E++)C>L[0]&&C<L[1]&&O.push(C);else(O=z.map(function(t){return t-r.levels.size/2})).push(O[O.length-1]+r.levels.size);else r.fillcolor&&\"string\"==typeof r.fillcolor&&(O=[0]);r.levels.size<0&&(z.reverse(),O.reverse());var N,j=k.h,V=k.w,U=Math.round(r.thickness*(\"fraction\"===r.thicknessmode?V:1)),q=U/k.w,H=Math.round(r.len*(\"fraction\"===r.lenmode?j:1)),G=H/k.h,W=r.xpad/k.w,Y=(r.borderwidth+r.outlinewidth)/2,X=r.ypad/k.h,Z=Math.round(r.x*k.w+r.xpad),$=r.x-q*({middle:.5,right:1}[r.xanchor]||0),J=r.y+G*(({top:-.5,bottom:.5}[r.yanchor]||0)-.5),K=Math.round(k.h*(1-J)),Q=K-H,tt={type:\"linear\",range:L,tickmode:r.tickmode,nticks:r.nticks,tick0:r.tick0,dtick:r.dtick,tickvals:r.tickvals,ticktext:r.ticktext,ticks:r.ticks,ticklen:r.ticklen,tickwidth:r.tickwidth,tickcolor:r.tickcolor,showticklabels:r.showticklabels,tickfont:r.tickfont,tickangle:r.tickangle,tickformat:r.tickformat,exponentformat:r.exponentformat,separatethousands:r.separatethousands,showexponent:r.showexponent,showtickprefix:r.showtickprefix,tickprefix:r.tickprefix,showticksuffix:r.showticksuffix,ticksuffix:r.ticksuffix,title:r.title,showline:!0,anchor:\"free\",side:\"right\",position:1},et={type:\"linear\",_id:\"y\"+e},rt={letter:\"y\",font:v.font,noHover:!0,noTickson:!0,calendar:v.calendar};if(b(tt,et,yt,rt,v),_(tt,et,yt,rt),et.position=r.x+W+q,M.axis=et,-1!==[\"top\",\"bottom\"].indexOf(r.title.side)&&(et.title.side=r.title.side,et.titlex=r.x+W,et.titley=J+(\"top\"===r.title.side?G-X:X)),r.line.color&&\"auto\"===r.tickmode){et.tickmode=\"linear\",et.tick0=r.levels.start;var nt=r.levels.size,it=c.constrain((K-Q)/50,4,15)+1,at=(L[1]-L[0])/((r.nticks||it)*nt);if(at>1){var ot=Math.pow(10,Math.floor(Math.log(at)/Math.LN10));nt*=ot*c.roundUp(at/ot,[2,5,10]),(Math.abs(r.levels.start)/r.levels.size+1e-6)%1<2e-6&&(et.tick0=0)}et.dtick=nt}et.domain=[J+X,J+G-X],et.setScale();var st=c.ensureSingle(v._infolayer,\"g\",e,function(t){t.classed(A.colorbar,!0).each(function(){var t=n.select(this);t.append(\"rect\").classed(A.cbbg,!0),t.append(\"g\").classed(A.cbfills,!0),t.append(\"g\").classed(A.cblines,!0),t.append(\"g\").classed(A.cbaxis,!0).classed(A.crisp,!0),t.append(\"g\").classed(A.cbtitleunshift,!0).append(\"g\").classed(A.cbtitle,!0),t.append(\"rect\").classed(A.cboutline,!0),t.select(\".cbtitle\").datum(0)})});st.attr(\"transform\",\"translate(\"+Math.round(k.l)+\",\"+Math.round(k.t)+\")\");var lt=st.select(\".cbtitleunshift\").attr(\"transform\",\"translate(-\"+Math.round(k.l)+\",-\"+Math.round(k.t)+\")\"),ct=st.select(\".cbaxis\"),ut=0;if(-1!==[\"top\",\"bottom\"].indexOf(r.title.side)){var ft,ht=k.l+(r.x+W)*k.w,pt=et.title.font.size;ft=\"top\"===r.title.side?(1-(J+G-X))*k.h+k.t+3+.75*pt:(1-(J+X))*k.h+k.t-3-.25*pt,xt(et._id+\"title\",{attributes:{x:ht,y:ft,\"text-anchor\":\"start\"}})}var dt,gt,vt,mt=c.syncOrAsync([a.previousPromises,function(){if(-1!==[\"top\",\"bottom\"].indexOf(r.title.side)){var a=st.select(\".cbtitle\"),o=a.select(\"text\"),l=[-r.outlinewidth/2,r.outlinewidth/2],u=a.select(\".h\"+et._id+\"title-math-group\").node(),f=15.6;if(o.node()&&(f=parseInt(o.node().style.fontSize,10)*m),u?(ut=h.bBox(u).height)>f&&(l[1]-=(ut-f)/2):o.node()&&!o.classed(A.jsPlaceholder)&&(ut=h.bBox(o.node()).height),ut){if(ut+=5,\"top\"===r.title.side)et.domain[1]-=ut/k.h,l[1]*=-1;else{et.domain[0]+=ut/k.h;var p=g.lineCount(o);l[1]+=(1-p)*f}a.attr(\"transform\",\"translate(\"+l+\")\"),et.setScale()}}st.selectAll(\".cbfills,.cblines\").attr(\"transform\",\"translate(0,\"+Math.round(k.h*(1-et.domain[1]))+\")\"),ct.attr(\"transform\",\"translate(0,\"+Math.round(-k.t)+\")\");var d=st.select(\".cbfills\").selectAll(\"rect.cbfill\").data(O);d.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),d.exit().remove();var y=L.map(et.c2p).map(Math.round).sort(function(t,e){return t-e});d.each(function(a,o){var s=[0===o?L[0]:(O[o]+O[o-1])/2,o===O.length-1?L[1]:(O[o]+O[o+1])/2].map(et.c2p).map(Math.round);s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,y[0],y[1]);var l=n.select(this).attr({x:Z,width:Math.max(U,2),y:n.min(s),height:Math.max(n.max(s)-n.min(s),2)});if(r.fillgradient)h.gradient(l,t,e,\"vertical\",r.fillgradient,\"fill\");else{var u=D(a).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}});var x=st.select(\".cblines\").selectAll(\"path.cbline\").data(r.line.color&&r.line.width?z:[]);return x.enter().append(\"path\").classed(A.cbline,!0),x.exit().remove(),x.each(function(t){n.select(this).attr(\"d\",\"M\"+Z+\",\"+(Math.round(et.c2p(t))+r.line.width/2%1)+\"h\"+U).call(h.lineGroupStyle,r.line.width,I(t),r.line.dash)}),ct.selectAll(\"g.\"+et._id+\"tick,path\").remove(),c.syncOrAsync([function(){var e=Z+U+(r.outlinewidth||0)/2-(\"outside\"===r.ticks?1:0),n=s.calcTicks(et),i=s.makeTransFn(et),a=s.makeLabelFns(et,e),o=s.getTickSigns(et)[2];return s.drawTicks(t,et,{vals:\"inside\"===et.ticks?s.clipEnds(et,n):n,layer:ct,path:s.makeTickPath(et,e,o),transFn:i}),s.drawLabels(t,et,{vals:n,layer:ct,transFn:i,labelXFn:a.labelXFn,labelYFn:a.labelYFn,labelAnchorFn:a.labelAnchorFn})},function(){if(-1===[\"top\",\"bottom\"].indexOf(r.title.side)){var e=et.title.font.size,i=et._offset+et._length/2,a=k.l+(et.position||0)*k.w+(\"right\"===et.side?10+e*(et.showticklabels?1:.5):-10-e*(et.showticklabels?.5:0));xt(\"h\"+et._id+\"title\",{avoid:{selection:n.select(t).selectAll(\"g.\"+et._id+\"tick\"),side:r.title.side,offsetLeft:k.l,offsetTop:0,maxShift:v.width},attributes:{x:a,y:i,\"text-anchor\":\"middle\"},transform:{rotate:\"-90\",offset:0}})}}])},a.previousPromises,function(){var n=U+r.outlinewidth/2+h.bBox(ct.node()).width;if((N=lt.select(\"text\")).node()&&!N.classed(A.jsPlaceholder)){var i,o=lt.select(\".h\"+et._id+\"title-math-group\").node();i=o&&-1!==[\"top\",\"bottom\"].indexOf(r.title.side)?h.bBox(o).width:h.bBox(lt.node()).right-Z-k.l,n=Math.max(n,i)}var s=2*r.xpad+n+r.borderwidth+r.outlinewidth/2,l=K-Q;st.select(\".cbbg\").attr({x:Z-r.xpad-(r.borderwidth+r.outlinewidth)/2,y:Q-Y,width:Math.max(s,2),height:Math.max(l+2*Y,2)}).call(p.fill,r.bgcolor).call(p.stroke,r.bordercolor).style({\"stroke-width\":r.borderwidth}),st.selectAll(\".cboutline\").attr({x:Z,y:Q+r.ypad+(\"top\"===r.title.side?ut:0),width:Math.max(U,2),height:Math.max(l-2*r.ypad-ut,2)}).call(p.stroke,r.outlinecolor).style({fill:\"None\",\"stroke-width\":r.outlinewidth});var c=({center:.5,right:1}[r.xanchor]||0)*s;st.attr(\"transform\",\"translate(\"+(k.l-c)+\",\"+k.t+\")\");var u={},f=y[r.yanchor],d=x[r.yanchor];\"pixels\"===r.lenmode?(u.y=r.y,u.t=l*f,u.b=l*d):(u.t=u.b=0,u.yt=r.y+r.len*f,u.yb=r.y-r.len*d);var g=y[r.xanchor],v=x[r.xanchor];if(\"pixels\"===r.thicknessmode)u.x=r.x,u.l=s*g,u.r=s*v;else{var m=s-U;u.l=m*g,u.r=m*v,u.xl=r.x-r.thickness*g,u.xr=r.x+r.thickness*v}a.autoMargin(t,e,u)}],t);if(mt&&mt.then&&(t._promises||[]).push(mt),t._context.edits.colorbarPosition)l.init({element:st.node(),gd:t,prepFn:function(){dt=st.attr(\"transform\"),f(st)},moveFn:function(t,e){st.attr(\"transform\",dt+\" translate(\"+t+\",\"+e+\")\"),gt=l.align($+t/k.w,q,0,1,r.xanchor),vt=l.align(J-e/k.h,G,0,1,r.yanchor);var n=l.getCursor(gt,vt,r.xanchor,r.yanchor);f(st,n)},doneFn:function(){if(f(st),void 0!==gt&&void 0!==vt){var e={};e[S(\"x\")]=gt,e[S(\"y\")]=vt,o.call(\"_guiRestyle\",t,e,T().index)}}});return mt}function yt(t,e){return c.coerce(tt,et,w,t,e)}function xt(e,r){var n={propContainer:et,propName:S(\"title\"),traceIndex:T().index,placeholder:v._dfltTitle.colorbar,containerGroup:st.select(\".cbtitle\")},i=\"h\"===e.charAt(0)?e.substr(1):\"h\"+e;st.selectAll(\".\"+i+\",.\"+i+\"-math-group\").remove(),d.draw(t,e,u(n,r||{}))}v._infolayer.selectAll(\"g.\"+e).remove()}function T(){for(var r=e.substr(2),n=0;n<t._fullData.length;n++){var i=t._fullData[n];if(i.uid===r)return i}}function S(t){var e=\"colorbar.\",r=T()._module.colorbar.container;return r&&(e=r+\".\"+e),e+t}return r.fillcolor=null,r.line={color:null,width:null,dash:null},r.levels={start:null,end:null,size:null},r.filllevels=null,r.fillgradient=null,r.zrange=null,Object.keys(r).forEach(function(t){M[t]=function(e){return arguments.length?(r[t]=c.isPlainObject(r[t])?c.extendFlat(r[t],e):e,M):r[t]}}),M.options=function(t){for(var e in t)\"function\"==typeof M[e]&&M[e](t[e]);return M},M._opts=r,M}},{\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/extend\":684,\"../../lib/setcursor\":714,\"../../lib/svg_text_utils\":718,\"../../plots/cartesian/axes\":742,\"../../plots/cartesian/axis_defaults\":744,\"../../plots/cartesian/layout_attributes\":755,\"../../plots/cartesian/position_defaults\":758,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"../titles\":659,\"./attributes\":572,\"./constants\":574,d3:149,tinycolor2:515}],577:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":694}],578:[function(t,e,r){\"use strict\";var n=t(\"./scales.js\").scales;Object.keys(n);function i(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",o=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),s=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,l=\"string\"==typeof e.colorscaleDflt?n[e.colorscaleDflt]:null,c=e.editTypeOverride||\"\",u=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):i(u+(r={z:\"z\",c:\"color\"}[a]));var f=a+\"auto\",h=a+\"min\",p=a+\"max\",d=(i(u+h),i(u+p),{});d[h]=d[p]=void 0;var g={};g[f]=!1;var v={};return\"color\"===r&&(v.color={valType:\"color\",arrayOk:!0,editType:c||\"style\"},e.anim&&(v.color.anim=!0)),v[f]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:d},v[h]={valType:\"number\",dflt:null,editType:c||\"plot\",impliedEdits:g},v[p]={valType:\"number\",dflt:null,editType:c||\"plot\",impliedEdits:g},v.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:l,impliedEdits:{autocolorscale:!1}},v.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},v.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},o||(v.showscale={valType:\"boolean\",dflt:s,editType:\"calc\"}),v}},{\"./scales.js\":586}],579:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i=t._fullLayout,a=r.vals,o=r.containerStr,s=r.cLetter,l=o?n.nestedProperty(e,o).get():e,c=s+\"min\",u=s+\"max\",f=l[s+\"auto\"],h=l[c],p=l[u],d=l.colorscale;!1===f&&void 0!==h||(h=n.aggNums(Math.min,null,a)),!1===f&&void 0!==p||(p=n.aggNums(Math.max,null,a)),h===p&&(h-=.5,p+=.5),l[\"_\"+c]=l[c]=h,l[\"_\"+u]=l[u]=p,l.autocolorscale&&(d=h*p<0?i.colorscale.diverging:h>=0?i.colorscale.sequential:i.colorscale.sequentialminus,l._colorscale=l.colorscale=d)}},{\"../../lib\":694}],580:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale;e.exports=function(t){function e(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function r(t,r){var i=r.container?n.nestedProperty(t,r.container).get():t;if(i){var a=i.zauto||i.cauto,o=r.min,s=r.max;(a||void 0===i[o])&&e(i,o),(a||void 0===i[s])&&e(i,s),i.autocolorscale&&e(i,\"colorscale\")}}for(var a=0;a<t.length;a++){var o=t[a],s=o._module;s.colorbar&&r(o,s.colorbar),i(o,\"marker.line\")&&r(o,{container:\"marker.line\",min:\"cmin\",max:\"cmax\"}),i(o,\"line\")&&r(o,{container:\"line\",min:\"cmin\",max:\"cmax\"})}}},{\"../../lib\":694,\"./helpers\":582}],581:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../colorbar/has_colorbar\"),o=t(\"../colorbar/defaults\"),s=t(\"./scales\").isValid;function l(t,e){var r=e.slice(0,e.length-1);return e?i.nestedProperty(t,r).get()||{}:t}e.exports=function(t,e,r,i,c){var u=c.prefix,f=c.cLetter,h=l(t,u),p=l(e,u),d=l(e._template||{},u)||{},g=h[f+\"min\"],v=h[f+\"max\"];i(u+f+\"auto\",!(n(g)&&n(v)&&g<v)),i(u+f+\"min\"),i(u+f+\"max\");var m,y,x=h.colorscale,b=d.colorscale;(void 0!==x&&(m=!s(x)),void 0!==b&&(m=!s(b)),i(u+\"autocolorscale\",m),i(u+\"colorscale\"),i(u+\"reversescale\"),c.noScale||\"marker.line.\"===u)||(u&&(y=a(h)),i(u+\"showscale\",y)&&o(h,p,r))}},{\"../../lib\":694,\"../colorbar/defaults\":575,\"../colorbar/has_colorbar\":577,\"./scales\":586,\"fast-isnumeric\":215}],582:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"fast-isnumeric\"),o=t(\"../../lib\"),s=t(\"../color\"),l=t(\"./scales\").isValid;function c(t){for(var e=t.length,r=new Array(e),n=e-1,i=0;n>=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function u(t){var e={r:t[0],g:t[1],b:t[2],a:t[3]};return i(e).toRgbString()}e.exports={hasColorscale:function(t,e){var r=e?o.nestedProperty(t,e).get()||{}:t,n=r.color,i=!1;if(o.isArrayOrTypedArray(n))for(var s=0;s<n.length;s++)if(a(n[s])){i=!0;break}return o.isPlainObject(r)&&(i||!0===r.showscale||a(r.cmin)&&a(r.cmax)||l(r.colorscale)||o.isPlainObject(r.colorbar))},extractScale:function(t,e){for(var r=e.cLetter,n=t.reversescale?c(t.colorscale):t.colorscale,i=t[r+\"min\"],a=t[r+\"max\"],o=n.length,s=new Array(o),l=new Array(o),u=0;u<o;u++){var f=n[u];s[u]=i+f[0]*(a-i),l[u]=f[1]}return{domain:s,range:l}},flipScale:c,makeColorScaleFunc:function(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),f=0;f<l;f++){var h=i(o[f]).toRgb();c[f]=[h.r,h.g,h.b,h.a]}var p,d=n.scale.linear().domain(r).range(c).clamp(!0),g=e.noNumericCheck,v=e.returnArray;return(p=g&&v?d:g?function(t){return u(d(t))}:v?function(t){return a(t)?d(t):i(t).isValid()?t:s.defaultLine}:function(t){return a(t)?u(d(t)):i(t).isValid()?t:s.defaultLine}).domain=d.domain,p.range=function(){return o},p}}},{\"../../lib\":694,\"../color\":571,\"./scales\":586,d3:149,\"fast-isnumeric\":215,tinycolor2:515}],583:[function(t,e,r){\"use strict\";var n=t(\"./scales\"),i=t(\"./helpers\");e.exports={moduleType:\"component\",name:\"colorscale\",attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),handleDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\"),scales:n.scales,defaultScale:n.defaultScale,getScale:n.get,isValidScale:n.isValid,hasColorscale:i.hasColorscale,flipScale:i.flipScale,extractScale:i.extractScale,makeColorScaleFunc:i.makeColorScaleFunc}},{\"./attributes\":578,\"./calc\":579,\"./cross_trace_defaults\":580,\"./defaults\":581,\"./helpers\":582,\"./layout_attributes\":584,\"./layout_defaults\":585,\"./scales\":586}],584:[function(t,e,r){\"use strict\";var n=t(\"./scales\").scales;e.exports={editType:\"calc\",sequential:{valType:\"colorscale\",dflt:n.Reds,editType:\"calc\"},sequentialminus:{valType:\"colorscale\",dflt:n.Blues,editType:\"calc\"},diverging:{valType:\"colorscale\",dflt:n.RdBu,editType:\"calc\"}}},{\"./scales\":586}],585:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../../plot_api/plot_template\");e.exports=function(t,e){var r=t.colorscale,o=a.newContainer(e,\"colorscale\");function s(t,e){return n.coerce(r,o,i,t,e)}s(\"sequential\"),s(\"sequentialminus\"),s(\"diverging\")}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"./layout_attributes\":584}],586:[function(t,e,r){\"use strict\";var n=t(\"tinycolor2\"),i={Greys:[[0,\"rgb(0,0,0)\"],[1,\"rgb(255,255,255)\"]],YlGnBu:[[0,\"rgb(8,29,88)\"],[.125,\"rgb(37,52,148)\"],[.25,\"rgb(34,94,168)\"],[.375,\"rgb(29,145,192)\"],[.5,\"rgb(65,182,196)\"],[.625,\"rgb(127,205,187)\"],[.75,\"rgb(199,233,180)\"],[.875,\"rgb(237,248,217)\"],[1,\"rgb(255,255,217)\"]],Greens:[[0,\"rgb(0,68,27)\"],[.125,\"rgb(0,109,44)\"],[.25,\"rgb(35,139,69)\"],[.375,\"rgb(65,171,93)\"],[.5,\"rgb(116,196,118)\"],[.625,\"rgb(161,217,155)\"],[.75,\"rgb(199,233,192)\"],[.875,\"rgb(229,245,224)\"],[1,\"rgb(247,252,245)\"]],YlOrRd:[[0,\"rgb(128,0,38)\"],[.125,\"rgb(189,0,38)\"],[.25,\"rgb(227,26,28)\"],[.375,\"rgb(252,78,42)\"],[.5,\"rgb(253,141,60)\"],[.625,\"rgb(254,178,76)\"],[.75,\"rgb(254,217,118)\"],[.875,\"rgb(255,237,160)\"],[1,\"rgb(255,255,204)\"]],Bluered:[[0,\"rgb(0,0,255)\"],[1,\"rgb(255,0,0)\"]],RdBu:[[0,\"rgb(5,10,172)\"],[.35,\"rgb(106,137,247)\"],[.5,\"rgb(190,190,190)\"],[.6,\"rgb(220,170,132)\"],[.7,\"rgb(230,145,90)\"],[1,\"rgb(178,10,28)\"]],Reds:[[0,\"rgb(220,220,220)\"],[.2,\"rgb(245,195,157)\"],[.4,\"rgb(245,160,105)\"],[1,\"rgb(178,10,28)\"]],Blues:[[0,\"rgb(5,10,172)\"],[.35,\"rgb(40,60,190)\"],[.5,\"rgb(70,100,245)\"],[.6,\"rgb(90,120,245)\"],[.7,\"rgb(106,137,247)\"],[1,\"rgb(220,220,220)\"]],Picnic:[[0,\"rgb(0,0,255)\"],[.1,\"rgb(51,153,255)\"],[.2,\"rgb(102,204,255)\"],[.3,\"rgb(153,204,255)\"],[.4,\"rgb(204,204,255)\"],[.5,\"rgb(255,255,255)\"],[.6,\"rgb(255,204,255)\"],[.7,\"rgb(255,153,255)\"],[.8,\"rgb(255,102,204)\"],[.9,\"rgb(255,102,102)\"],[1,\"rgb(255,0,0)\"]],Rainbow:[[0,\"rgb(150,0,90)\"],[.125,\"rgb(0,0,200)\"],[.25,\"rgb(0,25,255)\"],[.375,\"rgb(0,152,255)\"],[.5,\"rgb(44,255,150)\"],[.625,\"rgb(151,255,0)\"],[.75,\"rgb(255,234,0)\"],[.875,\"rgb(255,111,0)\"],[1,\"rgb(255,0,0)\"]],Portland:[[0,\"rgb(12,51,131)\"],[.25,\"rgb(10,136,186)\"],[.5,\"rgb(242,211,56)\"],[.75,\"rgb(242,143,56)\"],[1,\"rgb(217,30,30)\"]],Jet:[[0,\"rgb(0,0,131)\"],[.125,\"rgb(0,60,170)\"],[.375,\"rgb(5,255,255)\"],[.625,\"rgb(255,255,0)\"],[.875,\"rgb(250,0,0)\"],[1,\"rgb(128,0,0)\"]],Hot:[[0,\"rgb(0,0,0)\"],[.3,\"rgb(230,0,0)\"],[.6,\"rgb(255,210,0)\"],[1,\"rgb(255,255,255)\"]],Blackbody:[[0,\"rgb(0,0,0)\"],[.2,\"rgb(230,0,0)\"],[.4,\"rgb(230,210,0)\"],[.7,\"rgb(255,255,255)\"],[1,\"rgb(160,200,255)\"]],Earth:[[0,\"rgb(0,0,130)\"],[.1,\"rgb(0,180,180)\"],[.2,\"rgb(40,210,40)\"],[.4,\"rgb(230,230,50)\"],[.6,\"rgb(120,70,20)\"],[1,\"rgb(255,255,255)\"]],Electric:[[0,\"rgb(0,0,0)\"],[.15,\"rgb(30,0,100)\"],[.4,\"rgb(120,0,100)\"],[.6,\"rgb(160,90,0)\"],[.8,\"rgb(230,200,0)\"],[1,\"rgb(255,250,220)\"]],Viridis:[[0,\"#440154\"],[.06274509803921569,\"#48186a\"],[.12549019607843137,\"#472d7b\"],[.18823529411764706,\"#424086\"],[.25098039215686274,\"#3b528b\"],[.3137254901960784,\"#33638d\"],[.3764705882352941,\"#2c728e\"],[.4392156862745098,\"#26828e\"],[.5019607843137255,\"#21918c\"],[.5647058823529412,\"#1fa088\"],[.6274509803921569,\"#28ae80\"],[.6901960784313725,\"#3fbc73\"],[.7529411764705882,\"#5ec962\"],[.8156862745098039,\"#84d44b\"],[.8784313725490196,\"#addc30\"],[.9411764705882353,\"#d8e219\"],[1,\"#fde725\"]],Cividis:[[0,\"rgb(0,32,76)\"],[.058824,\"rgb(0,42,102)\"],[.117647,\"rgb(0,52,110)\"],[.176471,\"rgb(39,63,108)\"],[.235294,\"rgb(60,74,107)\"],[.294118,\"rgb(76,85,107)\"],[.352941,\"rgb(91,95,109)\"],[.411765,\"rgb(104,106,112)\"],[.470588,\"rgb(117,117,117)\"],[.529412,\"rgb(131,129,120)\"],[.588235,\"rgb(146,140,120)\"],[.647059,\"rgb(161,152,118)\"],[.705882,\"rgb(176,165,114)\"],[.764706,\"rgb(192,177,109)\"],[.823529,\"rgb(209,191,102)\"],[.882353,\"rgb(225,204,92)\"],[.941176,\"rgb(243,219,79)\"],[1,\"rgb(255,233,69)\"]]},a=i.RdBu;function o(t){var e=0;if(!Array.isArray(t)||t.length<2)return!1;if(!t[0]||!t[t.length-1])return!1;if(0!=+t[0][0]||1!=+t[t.length-1][0])return!1;for(var r=0;r<t.length;r++){var i=t[r];if(2!==i.length||+i[0]<e||!n(i[1]).isValid())return!1;e=+i[0]}return!0}e.exports={scales:i,defaultScale:a,get:function(t,e){if(e||(e=a),!t)return e;function r(){try{t=i[t]||JSON.parse(t)}catch(r){t=e}}return\"string\"==typeof t&&(r(),\"string\"==typeof t&&r()),o(t)?t:e},isValid:function(t){return void 0!==i[t]||o(t)}}},{tinycolor2:515}],587:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){var a=(t-r)/(n-r),o=a+e/(n-r),s=(a+o)/2;return\"left\"===i||\"bottom\"===i?a:\"center\"===i||\"middle\"===i?s:\"right\"===i||\"top\"===i?o:a<2/3-s?a:o>4/3-s?o:s}},{}],588:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":694}],589:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../plots/cartesian/constants\"),c=t(\"../../constants/interactions\"),u=e.exports={};u.align=t(\"./align\"),u.getCursor=t(\"./cursor\");var f=t(\"./unhover\");function h(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function p(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}u.unhover=f.wrapped,u.unhoverRaw=f.raw,u.init=function(t){var e,r,n,f,d,g,v,m,y=t.gd,x=1,b=c.DBLCLICKDELAY,_=t.element;y._mouseDownTime||(y._mouseDownTime=0),_.style.pointerEvents=\"all\",_.onmousedown=k,a?(_._ontouchstart&&_.removeEventListener(\"touchstart\",_._ontouchstart),_._ontouchstart=k,_.addEventListener(\"touchstart\",k,{passive:!1})):_.ontouchstart=k;var w=t.clampFn||function(t,e,r){return Math.abs(t)<r&&(t=0),Math.abs(e)<r&&(e=0),[t,e]};function k(a){y._dragged=!1,y._dragging=!0;var o=p(a);e=o[0],r=o[1],v=a.target,g=a,m=2===a.buttons||a.ctrlKey,\"undefined\"==typeof a.clientX&&\"undefined\"==typeof a.clientY&&(a.clientX=e,a.clientY=r),(n=(new Date).getTime())-y._mouseDownTime<b?x+=1:(x=1,y._mouseDownTime=n),t.prepFn&&t.prepFn(a,e,r),i&&!m?(d=h()).style.cursor=window.getComputedStyle(_).cursor:i||(d=document,f=window.getComputedStyle(document.documentElement).cursor,document.documentElement.style.cursor=window.getComputedStyle(_).cursor),document.addEventListener(\"mouseup\",M),document.addEventListener(\"touchend\",M),!1!==t.dragmode&&(a.preventDefault(),document.addEventListener(\"mousemove\",A),document.addEventListener(\"touchmove\",A))}function A(n){n.preventDefault();var i=p(n),a=t.minDrag||l.MINDRAG,o=w(i[0]-e,i[1]-r,a),s=o[0],c=o[1];(s||c)&&(y._dragged=!0,u.unhover(y)),y._dragged&&t.moveFn&&!m&&t.moveFn(s,c)}function M(e){if(!1!==t.dragmode&&(e.preventDefault(),document.removeEventListener(\"mousemove\",A),document.removeEventListener(\"touchmove\",A)),document.removeEventListener(\"mouseup\",M),document.removeEventListener(\"touchend\",M),i?s.removeElement(d):f&&(d.documentElement.style.cursor=f,f=null),y._dragging){if(y._dragging=!1,(new Date).getTime()-y._mouseDownTime>b&&(x=Math.max(x-1,1)),y._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(x,g),!m){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=p(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}v.dispatchEvent(r)}!function(t){t._dragging=!1,t._replotPending&&o.call(\"plot\",t)}(y),y._dragged=!1}else y._dragged=!1}},u.coverSlip=h},{\"../../constants/interactions\":670,\"../../lib\":694,\"../../plots/cartesian/constants\":748,\"../../registry\":825,\"./align\":587,\"./cursor\":588,\"./unhover\":590,\"has-hover\":396,\"has-passive-events\":397,\"mouse-event-offset\":422}],590:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/get_graph_div\"),o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/events\":683,\"../../lib/get_graph_div\":690,\"../../lib/throttle\":719,\"../fx/constants\":604}],591:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"}},{}],592:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"tinycolor2\"),o=t(\"../../registry\"),s=t(\"../color\"),l=t(\"../colorscale\"),c=t(\"../../lib\"),u=t(\"../../lib/svg_text_utils\"),f=t(\"../../constants/xmlns_namespaces\"),h=t(\"../../constants/alignment\").LINE_SPACING,p=t(\"../../constants/interactions\").DESELECTDIM,d=t(\"../../traces/scatter/subtypes\"),g=t(\"../../traces/scatter/make_bubble_size_func\"),v=e.exports={};v.font=function(t,e,r,n){c.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(s.fill,n)},v.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},v.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},v.setRect=function(t,e,r,n,i){t.call(v.setPosition,e,r).call(v.setSize,n,i)},v.translatePoint=function(t,e,r,n){var a=r.c2p(t.x),o=n.c2p(t.y);return!!(i(a)&&i(o)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",a).attr(\"y\",o):e.attr(\"transform\",\"translate(\"+a+\",\"+o+\")\"),!0)},v.translatePoints=function(t,e,r){t.each(function(t){var i=n.select(this);v.translatePoint(t,i,e,r)})},v.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},v.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each(function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,l=\"bar\"===a.type?\".bartext\":\".point,.textpoint\";t.selectAll(l).each(function(t){v.hideOutsideRangePoint(t,n.select(this),r,i,o,s)})})}},v.crispRound=function(t,e,r){return e&&i(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},v.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,l=i||a.dash||\"\";s.stroke(e,n||a.color),v.dashLine(e,l,o)},v.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each(function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,l=i||a.dash||\"\";n.select(this).call(s.stroke,r||a.color).call(v.dashLine,l,o)})},v.dashLine=function(t,e,r){r=+r||0,e=v.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},v.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},v.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(s.fill,e)},v.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each(function(t){var e=n.select(this);t[0].trace&&e.call(s.fill,t[0].trace.fillcolor)})};var m=t(\"./symbol_defs\");v.symbolNames=[],v.symbolFuncs=[],v.symbolNeedLines={},v.symbolNoDot={},v.symbolNoFill={},v.symbolList=[],Object.keys(m).forEach(function(t){var e=m[t];v.symbolList=v.symbolList.concat([e.n,t,e.n+100,t+\"-open\"]),v.symbolNames[e.n]=t,v.symbolFuncs[e.n]=e.f,e.needLine&&(v.symbolNeedLines[e.n]=!0),e.noDot?v.symbolNoDot[e.n]=!0:v.symbolList=v.symbolList.concat([e.n+200,t+\"-dot\",e.n+300,t+\"-open-dot\"]),e.noFill&&(v.symbolNoFill[e.n]=!0)});var y=v.symbolNames.length,x=\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\";function b(t,e){var r=t%100;return v.symbolFuncs[r](e)+(t>=200?x:\"\")}v.symbolNumber=function(t){if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=v.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=y||t>=400?0:Math.floor(Math.max(t,0))};var _={x1:1,x2:0,y1:0,y2:0},w={x1:0,x2:0,y1:1,y2:0},k=n.format(\"~.1f\"),A={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:_},horizontalreversed:{node:\"linearGradient\",attrs:_,reversed:!0},vertical:{node:\"linearGradient\",attrs:w},verticalreversed:{node:\"linearGradient\",attrs:w,reversed:!0}};v.gradient=function(t,e,r,i,o,l){for(var u=o.length,f=A[i],h=new Array(u),p=0;p<u;p++)f.reversed?h[u-1-p]=[k(100*(1-o[p][0])),o[p][1]]:h[p]=[k(100*o[p][0]),o[p][1]];var d=\"g\"+e._fullLayout._uid+\"-\"+r,g=e._fullLayout._defs.select(\".gradients\").selectAll(\"#\"+d).data([i+h.join(\";\")],c.identity);g.exit().remove(),g.enter().append(f.node).each(function(){var t=n.select(this);f.attrs&&t.attr(f.attrs),t.attr(\"id\",d);var e=t.selectAll(\"stop\").data(h);e.exit().remove(),e.enter().append(\"stop\"),e.each(function(t){var e=a(t[1]);n.select(this).attr({offset:t[0]+\"%\",\"stop-color\":s.tinyRGB(e),\"stop-opacity\":e.getAlpha()})})}),t.style(l,\"url(#\"+d+\")\").style(l+\"-opacity\",null)},v.initGradients=function(t){c.ensureSingle(t._fullLayout._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove()},v.pointStyle=function(t,e,r){if(t.size()){var i=v.makePointStyleFns(e);t.each(function(t){v.singlePointStyle(t,n.select(this),e,i,r)})}},v.singlePointStyle=function(t,e,r,n,i){var a=r.marker,o=a.line;if(e.style(\"opacity\",n.selectedOpacityFn?n.selectedOpacityFn(t):void 0===t.mo?a.opacity:t.mo),n.ms2mrc){var l;l=\"various\"===t.ms||\"various\"===a.size?3:n.ms2mrc(t.ms),t.mrc=l,n.selectedSizeFn&&(l=t.mrc=n.selectedSizeFn(t));var u=v.symbolNumber(t.mx||a.symbol)||0;t.om=u%200>=100,e.attr(\"d\",b(u,l))}var f,h,p,d=!1;if(t.so)p=o.outlierwidth,h=o.outliercolor,f=a.outliercolor;else{var g=(o||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):c.isArrayOrTypedArray(o.color)?s.defaultLine:o.color,c.isArrayOrTypedArray(a.color)&&(f=s.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):a.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(s.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",p+\"px\");var m=a.gradient,y=t.mgt;if(y?d=!0:y=m&&m.type,Array.isArray(y)&&(y=y[0],A[y]||(y=0)),y&&\"none\"!==y){var x=t.mgc;x?d=!0:x=m.color;var _=r.uid;d&&(_+=\"-\"+t.i),v.gradient(e,i,_,y,[[0,x],[1,f]],\"fill\")}else s.fill(e,f);p&&s.stroke(e,h)}},v.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=v.tryColorscale(r,\"\"),e.lineScale=v.tryColorscale(r,\"line\"),o.traceIs(t,\"symbols\")&&(e.ms2mrc=d.isBubble(t)?g(t):function(){return(r.size||6)/2}),t.selectedpoints&&c.extendFlat(e,v.makeSelectedPointStyleFns(t)),e},v.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.marker||{},a=r.marker||{},s=n.marker||{},l=i.opacity,u=a.opacity,f=s.opacity,h=void 0!==u,d=void 0!==f;(c.isArrayOrTypedArray(l)||h||d)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?i.opacity:t.mo;return t.selected?h?u:e:d?f:p*e});var g=i.color,v=a.color,m=s.color;(v||m)&&(e.selectedColorFn=function(t){var e=t.mcc||g;return t.selected?v||e:m||e});var y=i.size,x=a.size,b=s.size,_=void 0!==x,w=void 0!==b;return o.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},v.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},l=i.color,c=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||l;return t.selected?c||e:u||(c?e:s.addOpacity(e,p))},e},v.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=v.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push(function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))}),r.selectedColorFn&&a.push(function(t,e){s.fill(t,r.selectedColorFn(e))}),r.selectedSizeFn&&a.push(function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",b(v.symbolNumber(n),a)),e.mrc2=a}),a.length&&t.each(function(t){for(var e=n.select(this),r=0;r<a.length;r++)a[r](e,t)})}},v.tryColorscale=function(t,e){var r=e?c.nestedProperty(t,e).get():t;if(r){var n=r.colorscale,i=r.color;if(n&&c.isArrayOrTypedArray(i))return l.makeColorScaleFunc(l.extractScale(r,{cLetter:\"c\"}))}return c.identity};var M={start:1,end:-1,middle:0,bottom:1,top:-1};function T(t,e,r,i){var a=n.select(t.node().parentNode),o=-1!==e.indexOf(\"top\")?\"top\":-1!==e.indexOf(\"bottom\")?\"bottom\":\"middle\",s=-1!==e.indexOf(\"left\")?\"end\":-1!==e.indexOf(\"right\")?\"start\":\"middle\",l=i?i/.8+1:0,c=(u.lineCount(t)-1)*h+1,f=M[s]*l,p=.75*r+M[o]*l+(M[o]-1)*c*r/2;t.attr(\"text-anchor\",s),a.attr(\"transform\",\"translate(\"+f+\",\"+p+\")\")}function S(t,e){var r=t.ts||e.textfont.size;return i(r)&&r>0?r:0}v.textPointStyle=function(t,e,r){if(t.size()){var i;if(e.selectedpoints){var a=v.makeSelectedTextStyleFns(e);i=a.selectedTextColorFn}t.each(function(t){var a=n.select(this),o=c.extractOption(t,e,\"tx\",\"text\");if(o||0===o){var s=t.tp||e.textposition,l=S(t,e),f=i?i(t):t.tc||e.textfont.color;a.call(v.font,t.tf||e.textfont.family,l,f).text(o).call(u.convertToTspans,r).call(T,s,l,t.mrc)}else a.remove()})}},v.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=v.makeSelectedTextStyleFns(e);t.each(function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,l=S(t,e);s.fill(i,a),T(i,o,l,t.mrc2||t.mrc)})}};var C=.5;function E(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,C/2),u=Math.pow(s*s+l*l,C/2),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}v.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r<t.length-1;r++)i.push(E(t[r-1],t[r],t[r+1],e));for(n+=\"Q\"+i[0][0]+\" \"+t[1],r=2;r<t.length-1;r++)n+=\"C\"+i[r-2][1]+\" \"+i[r-1][0]+\" \"+t[r];return n+=\"Q\"+i[t.length-3][1]+\" \"+t[t.length-1]},v.smoothclosed=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\")+\"Z\";var r,n=\"M\"+t[0],i=t.length-1,a=[E(t[i],t[0],t[1],e)];for(r=1;r<i;r++)a.push(E(t[r-1],t[r],t[r+1],e));for(a.push(E(t[i-1],t[i],t[0],e)),r=1;r<=i;r++)n+=\"C\"+a[r-1][1]+\" \"+a[r][0]+\" \"+t[r];return n+=\"C\"+a[i][1]+\" \"+a[0][0]+\" \"+t[0]+\"Z\"};var L={hv:function(t,e){return\"H\"+n.round(e[0],2)+\"V\"+n.round(e[1],2)},vh:function(t,e){return\"V\"+n.round(e[1],2)+\"H\"+n.round(e[0],2)},hvh:function(t,e){return\"H\"+n.round((t[0]+e[0])/2,2)+\"V\"+n.round(e[1],2)+\"H\"+n.round(e[0],2)},vhv:function(t,e){return\"V\"+n.round((t[1]+e[1])/2,2)+\"H\"+n.round(e[0],2)+\"V\"+n.round(e[1],2)}},z=function(t,e){return\"L\"+n.round(e[0],2)+\",\"+n.round(e[1],2)};v.steps=function(t){var e=L[t]||z;return function(t){for(var r=\"M\"+n.round(t[0][0],2)+\",\"+n.round(t[0][1],2),i=1;i<t.length;i++)r+=e(t[i-1],t[i]);return r}},v.makeTester=function(){var t=c.ensureSingleById(n.select(\"body\"),\"svg\",\"js-plotly-tester\",function(t){t.attr(f.svgAttrs).style({position:\"absolute\",left:\"-10000px\",top:\"-10000px\",width:\"9000px\",height:\"9000px\",\"z-index\":\"1\"})}),e=c.ensureSingle(t,\"path\",\"js-reference-point\",function(t){t.attr(\"d\",\"M0,0H1V1H0Z\").style({\"stroke-width\":0,fill:\"black\"})});v.tester=t,v.testref=e},v.savedBBoxes={};var O=0;function I(t){var e=t.getAttribute(\"data-unformatted\");if(null!==e)return e+t.getAttribute(\"data-math\")+t.getAttribute(\"text-anchor\")+t.getAttribute(\"style\")}v.bBox=function(t,e,r){var i,a,o;if(r||(r=I(t)),r){if(i=v.savedBBoxes[r])return c.extendFlat({},i)}else if(1===t.childNodes.length){var s=t.childNodes[0];if(r=I(s)){var l=+s.getAttribute(\"x\")||0,f=+s.getAttribute(\"y\")||0,h=s.getAttribute(\"transform\");if(!h){var p=v.bBox(s,!1,r);return l&&(p.left+=l,p.right+=l),f&&(p.top+=f,p.bottom+=f),p}if(r+=\"~\"+l+\"~\"+f+\"~\"+h,i=v.savedBBoxes[r])return c.extendFlat({},i)}}e?a=t:(o=v.tester.node(),a=t.cloneNode(!0),o.appendChild(a)),n.select(a).attr(\"transform\",null).call(u.positionText,0,0);var d=a.getBoundingClientRect(),g=v.testref.node().getBoundingClientRect();e||o.removeChild(a);var m={height:d.height,width:d.width,left:d.left-g.left,top:d.top-g.top,right:d.right-g.left,bottom:d.bottom-g.top};return O>=1e4&&(v.savedBBoxes={},O=0),r&&(v.savedBBoxes[r]=m),O++,c.extendFlat({},m)},v.setClipUrl=function(t,e,r){if(e){var n=r._context,i=n._exportedPlot?\"\":n._baseUrl||\"\";t.attr(\"clip-path\",\"url(\"+i+\"#\"+e+\")\")}else t.attr(\"clip-path\",null)},v.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,function(t,e,r){return[e,r].join(\" \")}).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},v.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=\" translate(\"+e+\", \"+r+\")\").trim(),t[i](\"transform\",a),a},v.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,function(t,e,r){return[e,r].join(\" \")}).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},v.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\" scale(\"+e+\", \"+r+\")\").trim(),t[i](\"transform\",a),a};var D=/\\s*sc.*/;v.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\" scale(\"+e+\",\"+r+\")\";t.each(function(){var t=(this.getAttribute(\"transform\")||\"\").replace(D,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)})}};var P=/translate\\([^)]*\\)\\s*$/;v.setTextPointsScale=function(t,e,r){t&&t.each(function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(P);t=1===e&&1===r?[]:[\"translate(\"+o+\",\"+s+\")\",\"scale(\"+e+\",\"+r+\")\",\"translate(\"+-o+\",\"+-s+\")\"],l&&t.push(l),i.attr(\"transform\",t.join(\" \"))}})}},{\"../../constants/alignment\":666,\"../../constants/interactions\":670,\"../../constants/xmlns_namespaces\":672,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../registry\":825,\"../../traces/scatter/make_bubble_size_func\":1064,\"../../traces/scatter/subtypes\":1071,\"../color\":571,\"../colorscale\":583,\"./symbol_defs\":593,d3:149,\"fast-isnumeric\":215,tinycolor2:515}],593:[function(t,e,r){\"use strict\";var n=t(\"d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0}}},{d3:149}],594:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],595:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f<t.length;f++){var h=t[f],p=h.i;if(void 0===p)p=f;else if(null===p)continue;var d=h[i];if(n(r.c2l(d))){var g=u(d,p);if(n(g[0])&&n(g[1])){var v=h[i+\"s\"]=d-g[0],m=h[i+\"h\"]=d+g[1];c.push(v,m)}}}var y=r._id,x=e._extremes[y],b=a.findExtremes(r,c,o.extendFlat({tozero:x.opts.tozero},{padded:!0}));x.min=x.min.concat(b.min),x.max=x.max.concat(b.max)}}e.exports=function(t){for(var e=t.calcdata,r=0;r<e.length;r++){var n=e[r],o=n[0].trace;if(!0===o.visible&&i.traceIs(o,\"errorBarsOK\")){var s=a.getFromId(t,o.xaxis),c=a.getFromId(t,o.yaxis);l(n,o,s,\"x\"),l(n,o,c,\"y\")}}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"./compute_error\":596,\"fast-isnumeric\":215}],596:[function(t,e,r){\"use strict\";function n(t,e){return\"percent\"===t?function(t){return Math.abs(t*e/100)}:\"constant\"===t?function(){return Math.abs(e)}:\"sqrt\"===t?function(t){return Math.sqrt(Math.abs(t))}:void 0}e.exports=function(t){var e=t.type,r=t.symmetric;if(\"data\"===e){var i=t.array||[];if(r)return function(t,e){var r=+i[e];return[r,r]};var a=t.arrayminus||[];return function(t,e){var r=+i[e],n=+a[e];return isNaN(r)&&isNaN(n)?[NaN,NaN]:[n||0,r||0]}}var o=n(e,t.value),s=n(e,t.valueminus);return r||void 0===t.valueminus?function(t){var e=o(t);return[e,e]}:function(t){return[s(t),o(t)]}}},{}],597:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=t(\"../../plot_api/plot_template\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){var c=\"error_\"+l.axis,u=o.newContainer(e,c),f=t[c]||{};function h(t,e){return a.coerce(f,u,s,t,e)}if(!1!==h(\"visible\",void 0!==f.array||void 0!==f.value||\"sqrt\"===f.type)){var p=h(\"type\",\"array\"in f?\"data\":\"percent\"),d=!0;\"sqrt\"!==p&&(d=h(\"symmetric\",!((\"data\"===p?\"arrayminus\":\"valueminus\")in f))),\"data\"===p?(h(\"array\"),h(\"traceref\"),d||(h(\"arrayminus\"),h(\"tracerefminus\"))):\"percent\"!==p&&\"constant\"!==p||(h(\"value\"),d||h(\"valueminus\"));var g=\"copy_\"+l.inherit+\"style\";if(l.inherit)(e[\"error_\"+l.inherit]||{}).visible&&h(g,!(f.color||n(f.thickness)||n(f.width)));l.inherit&&u[g]||(h(\"color\",r),h(\"thickness\"),h(\"width\",i.traceIs(e,\"gl3d\")?0:4))}}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../registry\":825,\"./attributes\":594,\"fast-isnumeric\":215}],598:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plot_api/edit_types\").overrideAll,a=t(\"./attributes\"),o={error_x:n.extendFlat({},a),error_y:n.extendFlat({},a)};delete o.error_x.copy_zstyle,delete o.error_y.copy_zstyle,delete o.error_y.copy_ystyle;var s={error_x:n.extendFlat({},a),error_y:n.extendFlat({},a),error_z:n.extendFlat({},a)};delete s.error_x.copy_ystyle,delete s.error_y.copy_ystyle,delete s.error_z.copy_ystyle,delete s.error_z.copy_zstyle,e.exports={moduleType:\"component\",name:\"errorbars\",schema:{traces:{scatter:o,bar:o,histogram:o,scatter3d:i(s,\"calc\",\"nested\"),scattergl:i(o,\"calc\",\"nested\")}},supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),makeComputeError:t(\"./compute_error\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverInfo:function(t,e,r){(e.error_y||{}).visible&&(r.yerr=t.yh-t.y,e.error_y.symmetric||(r.yerrneg=t.y-t.ys));(e.error_x||{}).visible&&(r.xerr=t.xh-t.x,e.error_x.symmetric||(r.xerrneg=t.x-t.xs))}}},{\"../../lib\":694,\"../../plot_api/edit_types\":725,\"./attributes\":594,\"./calc\":595,\"./compute_error\":596,\"./defaults\":597,\"./plot\":599,\"./style\":600}],599:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../drawing\"),o=t(\"../../traces/scatter/subtypes\");e.exports=function(t,e,r,s){var l=r.xaxis,c=r.yaxis,u=s&&s.duration>0;e.each(function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var v=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(v.exit().remove(),e.length){p.visible||v.selectAll(\"path.xerror\").remove(),d.visible||v.selectAll(\"path.yerror\").remove(),v.style(\"opacity\",1);var m=v.enter().append(\"g\").classed(\"errorbar\",!0);u&&m.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(v,r.layerClipId,t),v.each(function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var v=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-v)+\"v\"+2*v+\"m0,-\"+v+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+v+\"v\"+2*v),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}})}})}},{\"../../traces/scatter/subtypes\":1071,\"../drawing\":592,d3:149,\"fast-isnumeric\":215}],600:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../color\");e.exports=function(t){t.each(function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)})}},{\"../color\":571,d3:149}],601:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\");e.exports={hoverlabel:{bgcolor:{valType:\"color\",arrayOk:!0,editType:\"none\"},bordercolor:{valType:\"color\",arrayOk:!0,editType:\"none\"},font:n({arrayOk:!0,editType:\"none\"}),namelength:{valType:\"integer\",min:-1,arrayOk:!0,editType:\"none\"},editType:\"calc\"}}},{\"../../plots/font_attributes\":769}],602:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s<e.length;s++){var l=e[s],c=l[0].trace;if(!i.traceIs(c,\"pie\")){var u=i.traceIs(c,\"2dMap\")?a:n.fillArray;u(c.hoverinfo,l,\"hi\",o(c)),c.hovertemplate&&u(c.hovertemplate,l,\"ht\"),c.hoverlabel&&(u(c.hoverlabel.bgcolor,l,\"hbg\"),u(c.hoverlabel.bordercolor,l,\"hbc\"),u(c.hoverlabel.font.size,l,\"hts\"),u(c.hoverlabel.font.color,l,\"htc\"),u(c.hoverlabel.font.family,l,\"htf\"),u(c.hoverlabel.namelength,l,\"hnl\"))}}}},{\"../../lib\":694,\"../../registry\":825}],603:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./hover\").hover;e.exports=function(t,e,r){var a=n.getComponentMethod(\"annotations\",\"onClick\")(t,t._hoverdata);function o(){t.emit(\"plotly_click\",{points:t._hoverdata,event:e})}void 0!==r&&i(t,e,r,!0),t._hoverdata&&e&&e.target&&(a&&a.then?a.then(o):o(),e.stopImmediatePropagation&&e.stopImmediatePropagation())}},{\"../../registry\":825,\"./hover\":607}],604:[function(t,e,r){\"use strict\";e.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:\"Arial, sans-serif\",HOVERMINTIME:50,HOVERID:\"-hover\"}},{}],605:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"./hoverlabel_defaults\");e.exports=function(t,e,r,o){a(t,e,function(r,a){return n.coerce(t,e,i,r,a)},o.hoverlabel)}},{\"../../lib\":694,\"./attributes\":601,\"./hoverlabel_defaults\":608}],606:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");r.getSubplot=function(t){return t.subplot||t.xaxis+t.yaxis||t.geo},r.isTraceInSubplots=function(t,e){if(\"splom\"===t.type){for(var n=t.xaxes||[],i=t.yaxes||[],a=0;a<n.length;a++)for(var o=0;o<i.length;o++)if(-1!==e.indexOf(n[a]+i[o]))return!0;return!1}return-1!==e.indexOf(r.getSubplot(t))},r.flat=function(t,e){for(var r=new Array(t.length),n=0;n<t.length;n++)r[n]=e;return r},r.p2c=function(t,e){for(var r=new Array(t.length),n=0;n<t.length;n++)r[n]=t[n].p2c(e);return r},r.getDistanceFunction=function(t,e,n,i){return\"closest\"===t?i||r.quadrature(e,n):\"x\"===t?e:n},r.getClosest=function(t,e,r){if(!1!==r.index)r.index>=0&&r.index<t.length?r.distance=0:r.index=!1;else for(var n=0;n<t.length;n++){var i=e(t[n]);i<=r.distance&&(r.index=n,r.distance=i)}return r},r.inbox=function(t,e,r){return t*e<0||0===t?r:1/0},r.quadrature=function(t,e){return function(r){var n=t(r),i=e(r);return Math.sqrt(n*n+i*i)}},r.makeEventData=function(t,e,n){var i=\"index\"in t?t.index:t.pointNumber,a={data:e._input,fullData:e,curveNumber:e.index,pointNumber:i};if(e._indexToPoints){var o=e._indexToPoints[i];1===o.length?a.pointIndex=o[0]:a.pointIndices=o}else a.pointIndex=i;return e._module.eventData?a=e._module.eventData(a,t,e,n,i):(\"xVal\"in t?a.x=t.xVal:\"x\"in t&&(a.x=t.x),\"yVal\"in t?a.y=t.yVal:\"y\"in t&&(a.y=t.y),t.xa&&(a.xaxis=t.xa),t.ya&&(a.yaxis=t.ya),void 0!==t.zLabelVal&&(a.z=t.zLabelVal)),r.appendArrayPointValue(a,e,i),a},r.appendArrayPointValue=function(t,e,r){var i=e._arrayAttrs;if(i)for(var s=0;s<i.length;s++){var l=i[s],c=a(l);if(void 0===t[c]){var u=o(n.nestedProperty(e,l).get(),r);void 0!==u&&(t[c]=u)}}},r.appendArrayMultiPointValues=function(t,e,r){var i=e._arrayAttrs;if(i)for(var s=0;s<i.length;s++){var l=i[s],c=a(l);if(void 0===t[c]){for(var u=n.nestedProperty(e,l).get(),f=new Array(r.length),h=0;h<r.length;h++)f[h]=o(u,r[h]);t[c]=f}}};var i={ids:\"id\",locations:\"location\",labels:\"label\",values:\"value\",\"marker.colors\":\"color\"};function a(t){return i[t]||t}function o(t,e){return Array.isArray(e)?Array.isArray(t)&&Array.isArray(t[e[0]])?t[e[0]][e[1]]:void 0:t[e]}},{\"../../lib\":694}],607:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"tinycolor2\"),o=t(\"../../lib\"),s=t(\"../../lib/events\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib/override_cursor\"),u=t(\"../drawing\"),f=t(\"../color\"),h=t(\"../dragelement\"),p=t(\"../../plots/cartesian/axes\"),d=t(\"../../registry\"),g=t(\"./helpers\"),v=t(\"./constants\"),m=v.YANGLE,y=Math.PI*m/180,x=1/Math.sin(y),b=Math.cos(y),_=Math.sin(y),w=v.HOVERARROWSIZE,k=v.HOVERTEXTPAD;r.hover=function(t,e,r,a){t=o.getGraphDiv(t),o.throttle(t._fullLayout._uid+v.HOVERID,v.HOVERMINTIME,function(){!function(t,e,r,a){r||(r=\"xy\");var l=Array.isArray(r)?r:[r],u=t._fullLayout,v=u._plots||[],m=v[r],y=u._has(\"cartesian\");if(m){var b=m.overlays.map(function(t){return t.id});l=l.concat(b)}for(var _=l.length,w=new Array(_),k=new Array(_),A=!1,L=0;L<_;L++){var z=l[L],O=v[z];if(O)A=!0,w[L]=p.getFromId(t,O.xaxis._id),k[L]=p.getFromId(t,O.yaxis._id);else{var I=u[z]._subplot;w[L]=I.xaxis,k[L]=I.yaxis}}var D=e.hovermode||u.hovermode;D&&!A&&(D=\"closest\");if(-1===[\"x\",\"y\",\"closest\"].indexOf(D)||!t.calcdata||t.querySelector(\".zoombox\")||t._dragging)return h.unhoverRaw(t,e);var P,R,F,B,N,j,V,U,q,H,G,W,Y,X=-1===u.hoverdistance?1/0:u.hoverdistance,Z=-1===u.spikedistance?1/0:u.spikedistance,$=[],J=[],K={hLinePoint:null,vLinePoint:null},Q=!1;if(Array.isArray(e))for(D=\"array\",F=0;F<e.length;F++)(N=t.calcdata[e[F].curveNumber||0])&&(j=N[0].trace,\"skip\"!==N[0].trace.hoverinfo&&(J.push(N),\"h\"===j.orientation&&(Q=!0)));else{for(B=0;B<t.calcdata.length;B++)N=t.calcdata[B],\"skip\"!==(j=N[0].trace).hoverinfo&&g.isTraceInSubplots(j,l)&&(J.push(N),\"h\"===j.orientation&&(Q=!0));var tt,et,rt=!e.target;if(rt)tt=\"xpx\"in e?e.xpx:w[0]._length/2,et=\"ypx\"in e?e.ypx:k[0]._length/2;else{if(!1===s.triggerHandler(t,\"plotly_beforehover\",e))return;var nt=e.target.getBoundingClientRect();if(tt=e.clientX-nt.left,et=e.clientY-nt.top,tt<0||tt>w[0]._length||et<0||et>k[0]._length)return h.unhoverRaw(t,e)}if(e.pointerX=tt+w[0]._offset,e.pointerY=et+k[0]._offset,P=\"xval\"in e?g.flat(l,e.xval):g.p2c(w,tt),R=\"yval\"in e?g.flat(l,e.yval):g.p2c(k,et),!i(P[0])||!i(R[0]))return o.warn(\"Fx.hover failed\",e,t),h.unhoverRaw(t,e)}var it=1/0;for(B=0;B<J.length;B++)if((N=J[B])&&N[0]&&N[0].trace&&!0===N[0].trace.visible&&(j=N[0].trace,-1===[\"carpet\",\"contourcarpet\"].indexOf(j._module.name))){if(\"splom\"===j.type?V=l[U=0]:(V=g.getSubplot(j),U=l.indexOf(V)),q=D,W={cd:N,trace:j,xa:w[U],ya:k[U],maxHoverDistance:X,maxSpikeDistance:Z,index:!1,distance:Math.min(it,X),spikeDistance:1/0,xSpike:void 0,ySpike:void 0,color:f.defaultLine,name:j.name,x0:void 0,x1:void 0,y0:void 0,y1:void 0,xLabelVal:void 0,yLabelVal:void 0,zLabelVal:void 0,text:void 0},u[V]&&(W.subplot=u[V]._subplot),u._splomScenes&&u._splomScenes[j.uid]&&(W.scene=u._splomScenes[j.uid]),Y=$.length,\"array\"===q){var at=e[B];\"pointNumber\"in at?(W.index=at.pointNumber,q=\"closest\"):(q=\"\",\"xval\"in at&&(H=at.xval,q=\"x\"),\"yval\"in at&&(G=at.yval,q=q?\"closest\":\"y\"))}else H=P[U],G=R[U];if(0!==X)if(j._module&&j._module.hoverPoints){var ot=j._module.hoverPoints(W,H,G,q,u._hoverlayer);if(ot)for(var st,lt=0;lt<ot.length;lt++)st=ot[lt],i(st.x0)&&i(st.y0)&&$.push(S(st,D))}else o.log(\"Unrecognized trace type in hover:\",j);if(\"closest\"===D&&$.length>Y&&($.splice(0,Y),it=$[0].distance),y&&0!==Z&&0===$.length){W.distance=Z,W.index=!1;var ct=j._module.hoverPoints(W,H,G,\"closest\",u._hoverlayer);if(ct&&(ct=ct.filter(function(t){return t.spikeDistance<=Z})),ct&&ct.length){var ut,ft=ct.filter(function(t){return t.xa.showspikes});if(ft.length){var ht=ft[0];i(ht.x0)&&i(ht.y0)&&(ut=vt(ht),(!K.vLinePoint||K.vLinePoint.spikeDistance>ut.spikeDistance)&&(K.vLinePoint=ut))}var pt=ct.filter(function(t){return t.ya.showspikes});if(pt.length){var dt=pt[0];i(dt.x0)&&i(dt.y0)&&(ut=vt(dt),(!K.hLinePoint||K.hLinePoint.spikeDistance>ut.spikeDistance)&&(K.hLinePoint=ut))}}}}function gt(t,e){for(var r,n=null,i=1/0,a=0;a<t.length;a++)(r=t[a].spikeDistance)<i&&r<=e&&(n=t[a],i=r);return n}function vt(t){return t?{xa:t.xa,ya:t.ya,x:void 0!==t.xSpike?t.xSpike:(t.x0+t.x1)/2,y:void 0!==t.ySpike?t.ySpike:(t.y0+t.y1)/2,distance:t.distance,spikeDistance:t.spikeDistance,curveNumber:t.trace.index,color:t.color,pointNumber:t.index}:null}var mt={fullLayout:u,container:u._hoverlayer,outerContainer:u._paperdiv,event:e},yt=t._spikepoints,xt={vLinePoint:K.vLinePoint,hLinePoint:K.hLinePoint};if(t._spikepoints=xt,y&&0!==Z&&0!==$.length){var bt=$.filter(function(t){return t.ya.showspikes}),_t=gt(bt,Z);K.hLinePoint=vt(_t);var wt=$.filter(function(t){return t.xa.showspikes}),kt=gt(wt,Z);K.vLinePoint=vt(kt)}if(0===$.length){var At=h.unhoverRaw(t,e);return!y||null===K.hLinePoint&&null===K.vLinePoint||E(yt)&&C(K,mt),At}y&&E(yt)&&C(K,mt);$.sort(function(t,e){return t.distance-e.distance});var Mt=t._hoverdata,Tt=[];for(F=0;F<$.length;F++){var St=$[F],Ct=g.makeEventData(St,St.trace,St.cd),Et=!1;St.cd[St.index]&&St.cd[St.index].ht&&(Et=St.cd[St.index].ht),$[F].hovertemplate=Et||St.trace.hovertemplate||!1,$[F].eventData=[Ct],Tt.push(Ct)}t._hoverdata=Tt;var Lt=\"y\"===D&&(J.length>1||$.length>1)||\"closest\"===D&&Q&&$.length>1,zt=f.combine(u.plot_bgcolor||f.background,u.paper_bgcolor),Ot={hovermode:D,rotateLabels:Lt,bgColor:zt,container:u._hoverlayer,outerContainer:u._paperdiv,commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance},It=M($,Ot,t);if(function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.map(function(t,n){var i=t[e],a=\"x\"===i._id.charAt(0),o=i.range;return!n&&o&&o[0]>o[1]!==a&&(f=-1),[{i:n,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(a?x:1)/2,pmin:0,pmax:a?r.width:r.height}]}).sort(function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)});function p(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;o<t.length;o++)(l=t[o]).pos+l.dp+l.size>e.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o<t.length&&!(c<=0);o++)if((l=t[o]).pos<e.pmin+1)for(l.del=!0,c--,a=2*l.size,s=t.length-1;s>=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}for(;!n&&u<=t.length;){for(u++,n=!0,o=0;o<h.length-1;){var d=h[o],g=h[o+1],v=d[d.length-1],m=g[0];if((i=v.pos+v.dp+v.size-m.pos-m.dp+m.size)>.01&&v.pmin===m.pmin&&v.pmax===m.pmax){for(s=g.length-1;s>=0;s--)g[s].dp+=i;for(d.push.apply(d,g),h.splice(o+1,1),c=0,s=d.length-1;s>=0;s--)c+=d[s].dp;for(a=c/d.length,s=d.length-1;s>=0;s--)d[s].dp-=a;n=!1}else o++}h.forEach(p)}for(o=h.length-1;o>=0;o--){var y=h[o];for(s=y.length-1;s>=0;s--){var b=y[s],_=t[b.i];_.offset=b.dp,_.del=b.del}}}($,Lt?\"xa\":\"ya\",u),T(It,Lt),e.target&&e.target.tagName){var Dt=d.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,Tt);c(n.select(e.target),Dt?\"pointer\":\"\")}if(!e.target||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Mt))return;Mt&&t.emit(\"plotly_unhover\",{event:e,points:Mt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:w,yaxes:k,xvals:P,yvals:R})}(t,e,r,a)})},r.loneHover=function(t,e){var r={color:t.color||f.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,eventData:t.eventData||!1,hovertemplateLabels:t.hovertemplateLabels||!1},i=n.select(e.container),a=e.outerContainer?n.select(e.outerContainer):i,o={hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||f.background,container:i,outerContainer:a},s=M([r],o,e.gd);return T(s,o.rotateLabels),s.node()},r.multiHovers=function(t,e){Array.isArray(t)||(t=[t]);var r=t.map(function(t){return{color:t.color||f.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,eventData:t.eventData||!1,hovertemplateLabels:t.hovertemplateLabels||!1}}),i=n.select(e.container),a=e.outerContainer?n.select(e.outerContainer):i,o={hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||f.background,container:i,outerContainer:a},s=M(r,o,e.gd),l=0;return s.sort(function(t,e){return t.y0-e.y0}).each(function(t){var e=t.y0-t.by/2;t.offset=e-5<l?l-e+5:0,l=e+t.by+t.offset}),T(s,o.rotateLabels),s.node()};var A=/<extra>([\\s\\S]*)<\\/extra>/;function M(t,e,r){var i=e.hovermode,a=e.rotateLabels,s=e.bgColor,c=e.container,h=e.outerContainer,p=e.commonLabelOpts||{},d=e.fontFamily||v.HOVERFONT,g=e.fontSize||v.HOVERFONTSIZE,y=t[0],x=y.xa,b=y.ya,_=\"y\"===i?\"yLabel\":\"xLabel\",M=y[_],T=(String(M)||\"\").split(\" \")[0],S=h.node().getBoundingClientRect(),C=S.top,E=S.width,L=S.height,z=void 0!==M&&y.distance<=e.hoverdistance&&(\"x\"===i||\"y\"===i);if(z){var O,I,D=!0;for(O=0;O<t.length;O++)if(D&&void 0===t[O].zLabel&&(D=!1),I=t[O].hoverinfo||t[O].trace.hoverinfo){var P=Array.isArray(I)?I:I.split(\"+\");if(-1===P.indexOf(\"all\")&&-1===P.indexOf(i)){z=!1;break}}D&&(z=!1)}var R=c.selectAll(\"g.axistext\").data(z?[0]:[]);R.enter().append(\"g\").classed(\"axistext\",!0),R.exit().remove(),R.each(function(){var e=n.select(this),a=o.ensureSingle(e,\"path\",\"\",function(t){t.style({\"stroke-width\":\"1px\"})}),s=o.ensureSingle(e,\"text\",\"\",function(t){t.attr(\"data-notex\",1)}),c=p.bgcolor||f.defaultLine,h=p.bordercolor||f.contrast(c),v=f.contrast(c);a.style({fill:c,stroke:h}),s.text(M).call(u.font,p.font.family||d,p.font.size||g,p.font.color||v).call(l.positionText,0,0).call(l.convertToTspans,r),e.attr(\"transform\",\"\");var m=s.node().getBoundingClientRect();if(\"x\"===i){s.attr(\"text-anchor\",\"middle\").call(l.positionText,0,\"top\"===x.side?C-m.bottom-w-k:C-m.top+w+k);var A=\"top\"===x.side?\"-\":\"\";a.attr(\"d\",\"M0,0L\"+w+\",\"+A+w+\"H\"+(k+m.width/2)+\"v\"+A+(2*k+m.height)+\"H-\"+(k+m.width/2)+\"V\"+A+w+\"H-\"+w+\"Z\"),e.attr(\"transform\",\"translate(\"+(x._offset+(y.x0+y.x1)/2)+\",\"+(b._offset+(\"top\"===x.side?0:b._length))+\")\")}else{s.attr(\"text-anchor\",\"right\"===b.side?\"start\":\"end\").call(l.positionText,(\"right\"===b.side?1:-1)*(k+w),C-m.top-m.height/2);var S=\"right\"===b.side?\"\":\"-\";a.attr(\"d\",\"M0,0L\"+S+w+\",\"+w+\"V\"+(k+m.height/2)+\"h\"+S+(2*k+m.width)+\"V-\"+(k+m.height/2)+\"H\"+S+w+\"V-\"+w+\"Z\"),e.attr(\"transform\",\"translate(\"+(x._offset+(\"right\"===b.side?x._length:0))+\",\"+(b._offset+(y.y0+y.y1)/2)+\")\")}t=t.filter(function(t){return void 0!==t.zLabelVal||(t[_]||\"\").split(\" \")[0]===T})});var F=c.selectAll(\"g.hovertext\").data(t,function(t){return[t.trace.index,t.index,t.x0,t.y0,t.name,t.attr,t.xa,t.ya||\"\"].join(\",\")});return F.enter().append(\"g\").classed(\"hovertext\",!0).each(function(){var t=n.select(this);t.append(\"rect\").call(f.fill,f.addOpacity(s,.8)),t.append(\"text\").classed(\"name\",!0),t.append(\"path\").style(\"stroke-width\",\"1px\"),t.append(\"text\").classed(\"nums\",!0).call(u.font,d,g)}),F.exit().remove(),F.each(function(t){var e=n.select(this).attr(\"transform\",\"\"),c=\"\",h=\"\",p=t.bgcolor||t.color,v=f.combine(f.opacity(p)?p:f.defaultLine,s),y=f.combine(f.opacity(t.color)?t.color:f.defaultLine,s),x=t.borderColor||f.contrast(v);void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(c=l.plainText(t.name||\"\",{len:t.nameLength,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})),void 0!==t.zLabel?(void 0!==t.xLabel&&(h+=\"x: \"+t.xLabel+\"<br>\"),void 0!==t.yLabel&&(h+=\"y: \"+t.yLabel+\"<br>\"),h+=(h?\"z: \":\"\")+t.zLabel):z&&t[i+\"Label\"]===M?h=t[(\"x\"===i?\"y\":\"x\")+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&(h=t.yLabel):h=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(h+=(h?\"<br>\":\"\")+t.text),void 0!==t.extraText&&(h+=(h?\"<br>\":\"\")+t.extraText),\"\"!==h||t.hovertemplate||(\"\"===c&&e.remove(),h=c);var b=t.hovertemplate||!1,_=t.hovertemplateLabels||t,T=t.eventData[0]||{};b&&(h=(h=o.hovertemplateString(b,_,T)).replace(A,function(t,e){return c=e,\"\"}));var S=e.select(\"text.nums\").call(u.font,t.fontFamily||d,t.fontSize||g,t.fontColor||x).text(h).attr(\"data-notex\",1).call(l.positionText,0,0).call(l.convertToTspans,r),O=e.select(\"text.name\"),I=0,D=0;if(c&&c!==h){O.call(u.font,t.fontFamily||d,t.fontSize||g,y).text(c).attr(\"data-notex\",1).call(l.positionText,0,0).call(l.convertToTspans,r);var P=O.node().getBoundingClientRect();I=P.width+2*k,D=P.height+2*k}else O.remove(),e.select(\"rect\").remove();e.select(\"path\").style({fill:v,stroke:x});var R,F,B=S.node().getBoundingClientRect(),N=t.xa._offset+(t.x0+t.x1)/2,j=t.ya._offset+(t.y0+t.y1)/2,V=Math.abs(t.x1-t.x0),U=Math.abs(t.y1-t.y0),q=B.width+w+k+I;t.ty0=C-B.top,t.bx=B.width+2*k,t.by=Math.max(B.height+2*k,D),t.anchor=\"start\",t.txwidth=B.width,t.tx2width=I,t.offset=0,a?(t.pos=N,R=j+U/2+q<=L,F=j-U/2-q>=0,\"top\"!==t.idealAlign&&R||!F?R?(j+=U/2,t.anchor=\"start\"):t.anchor=\"middle\":(j-=U/2,t.anchor=\"end\")):(t.pos=j,R=N+V/2+q<=E,F=N-V/2-q>=0,\"left\"!==t.idealAlign&&R||!F?R?(N+=V/2,t.anchor=\"start\"):t.anchor=\"middle\":(N-=V/2,t.anchor=\"end\")),S.attr(\"text-anchor\",t.anchor),I&&O.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",\"translate(\"+N+\",\"+j+\")\"+(a?\"rotate(\"+m+\")\":\"\"))}),F}function T(t,e){t.each(function(t){var r=n.select(this);if(t.del)r.remove();else{var i=\"end\"===t.anchor?-1:1,a=r.select(\"text.nums\"),o={start:1,end:-1,middle:0}[t.anchor],s=o*(w+k),c=s+o*(t.txwidth+k),f=0,h=t.offset;\"middle\"===t.anchor&&(s-=t.tx2width/2,c+=t.txwidth/2+k),e&&(h*=-_,f=t.offset*b),r.select(\"path\").attr(\"d\",\"middle\"===t.anchor?\"M-\"+(t.bx/2+t.tx2width/2)+\",\"+(h-t.by/2)+\"h\"+t.bx+\"v\"+t.by+\"h-\"+t.bx+\"Z\":\"M0,0L\"+(i*w+f)+\",\"+(w+h)+\"v\"+(t.by/2-w)+\"h\"+i*t.bx+\"v-\"+t.by+\"H\"+(i*w+f)+\"V\"+(h-w)+\"Z\"),a.call(l.positionText,s+f,h+t.ty0-t.by/2+k),t.tx2width&&(r.select(\"text.name\").call(l.positionText,c+o*k+f,h+t.ty0-t.by/2+k),r.select(\"rect\").call(u.setRect,c+(o-1)*t.tx2width/2+f,h-t.by/2-1,t.tx2width,t.by+2))}})}function S(t,e){var r=t.index,n=t.trace||{},i=t.cd[0],a=t.cd[r]||{},s=Array.isArray(r)?function(t,e){return o.castOption(i,r,t)||o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(a,n,t,e)};function l(e,r,n){var i=s(r,n);i&&(t[e]=i)}if(l(\"hoverinfo\",\"hi\",\"hoverinfo\"),l(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),l(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),l(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),l(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),l(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),l(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:p.hoverLabelText(t.xa,t.xLabelVal),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:p.hoverLabelText(t.ya,t.yLabelVal),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var c=p.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+c+\" / -\"+p.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+c,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var u=p.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+u+\" / -\"+p.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+u,\"y\"===e&&(t.distance+=1)}var f=t.hoverinfo||t.trace.hoverinfo;return f&&\"all\"!==f&&(-1===(f=Array.isArray(f)?f:f.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===f.indexOf(\"y\")&&(t.yLabel=void 0),-1===f.indexOf(\"z\")&&(t.zLabel=void 0),-1===f.indexOf(\"text\")&&(t.text=void 0),-1===f.indexOf(\"name\")&&(t.name=void 0)),t}function C(t,e){var r,n,i=e.container,o=e.fullLayout,s=e.event,l=!!t.hLinePoint,c=!!t.vLinePoint;if(i.selectAll(\".spikeline\").remove(),c||l){var h=f.combine(o.plot_bgcolor,o.paper_bgcolor);if(l){var p,d,g=t.hLinePoint;r=g&&g.xa,\"cursor\"===(n=g&&g.ya).spikesnap?(p=s.pointerX,d=s.pointerY):(p=r._offset+g.x,d=n._offset+g.y);var v,m,y=a.readability(g.color,h)<1.5?f.contrast(h):g.color,x=n.spikemode,b=n.spikethickness,_=n.spikecolor||y,w=n._boundingBox,k=(w.left+w.right)/2<p?w.right:w.left;-1===x.indexOf(\"toaxis\")&&-1===x.indexOf(\"across\")||(-1!==x.indexOf(\"toaxis\")&&(v=k,m=p),-1!==x.indexOf(\"across\")&&(v=n._counterSpan[0],m=n._counterSpan[1]),i.insert(\"line\",\":first-child\").attr({x1:v,x2:m,y1:d,y2:d,\"stroke-width\":b,stroke:_,\"stroke-dasharray\":u.dashStyle(n.spikedash,b)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),i.insert(\"line\",\":first-child\").attr({x1:v,x2:m,y1:d,y2:d,\"stroke-width\":b+2,stroke:h}).classed(\"spikeline\",!0).classed(\"crisp\",!0)),-1!==x.indexOf(\"marker\")&&i.insert(\"circle\",\":first-child\").attr({cx:k+(\"right\"!==n.side?b:-b),cy:d,r:b,fill:_}).classed(\"spikeline\",!0)}if(c){var A,M,T=t.vLinePoint;r=T&&T.xa,n=T&&T.ya,\"cursor\"===r.spikesnap?(A=s.pointerX,M=s.pointerY):(A=r._offset+T.x,M=n._offset+T.y);var S,C,E=a.readability(T.color,h)<1.5?f.contrast(h):T.color,L=r.spikemode,z=r.spikethickness,O=r.spikecolor||E,I=r._boundingBox,D=(I.top+I.bottom)/2<M?I.bottom:I.top;-1===L.indexOf(\"toaxis\")&&-1===L.indexOf(\"across\")||(-1!==L.indexOf(\"toaxis\")&&(S=D,C=M),-1!==L.indexOf(\"across\")&&(S=r._counterSpan[0],C=r._counterSpan[1]),i.insert(\"line\",\":first-child\").attr({x1:A,x2:A,y1:S,y2:C,\"stroke-width\":z,stroke:O,\"stroke-dasharray\":u.dashStyle(r.spikedash,z)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),i.insert(\"line\",\":first-child\").attr({x1:A,x2:A,y1:S,y2:C,\"stroke-width\":z+2,stroke:h}).classed(\"spikeline\",!0).classed(\"crisp\",!0)),-1!==L.indexOf(\"marker\")&&i.insert(\"circle\",\":first-child\").attr({cx:A,cy:D-(\"top\"!==r.side?z:-z),r:z,fill:O}).classed(\"spikeline\",!0)}}}function E(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}},{\"../../lib\":694,\"../../lib/events\":683,\"../../lib/override_cursor\":705,\"../../lib/svg_text_utils\":718,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"./constants\":604,\"./helpers\":606,d3:149,\"fast-isnumeric\":215,tinycolor2:515}],608:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r,i){r(\"hoverlabel.bgcolor\",(i=i||{}).bgcolor),r(\"hoverlabel.bordercolor\",i.bordercolor),r(\"hoverlabel.namelength\",i.namelength),n.coerceFont(r,\"hoverlabel.font\",i.font)}},{\"../../lib\":694}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e){t=t||{};(e=e||{}).description&&e.description;var r=e.keys||[];if(r.length>0){for(var n=[],i=0;i<r.length;i++)n[i]=\"`\"+r[i]+\"`\";\"Finally, the template string has access to \",1===r.length?\"variable \"+n[0]:\"variables \"+n.slice(0,-1).join(\", \")+\" and \"+n.slice(-1)+\".\"}return{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"none\"}}},{}],610:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)})},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,multiHovers:l.multiHovers,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":694,\"../dragelement\":589,\"./attributes\":601,\"./calc\":602,\"./click\":603,\"./constants\":604,\"./defaults\":605,\"./helpers\":606,\"./hover\":607,\"./layout_attributes\":611,\"./layout_defaults\":612,\"./layout_global_defaults\":613,d3:149}],611:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\")({editType:\"none\"});i.family.dflt=n.HOVERFONT,i.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1],editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:i,namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":769,\"./constants\":604}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}var o,s=a(\"clickmode\");\"select\"===a(\"dragmode\")&&a(\"selectdirection\"),e._has(\"cartesian\")?s.indexOf(\"select\")>-1?o=\"closest\":(e._isHoriz=function(t){for(var e=!0,r=0;r<t.length;r++){var n=t[r];if(\"h\"!==n.orientation){e=!1;break}}return e}(r),o=e._isHoriz?\"y\":\"x\"):o=\"closest\",a(\"hovermode\",o)&&(a(\"hoverdistance\"),a(\"spikedistance\"));var l=e._has(\"mapbox\"),c=e._has(\"geo\"),u=e._basePlotModules.length;\"zoom\"===e.dragmode&&((l||c)&&1===u||l&&c&&2===u)&&(e.dragmode=\"pan\")}},{\"../../lib\":694,\"./layout_attributes\":611}],613:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,function(r,i){return n.coerce(t,e,a,r,i)})}},{\"../../lib\":694,\"./hoverlabel_defaults\":608,\"./layout_attributes\":611}],614:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h<i;h++){var p=c+u*h;l[a?i-1-h:h]=[p,p+f]}return l}function f(t,e,r,n,i){var a,o=new Array(r);function s(t,r){-1!==e.indexOf(r)&&void 0===n[r]?(o[t]=r,n[r]=t):o[t]=\"\"}if(Array.isArray(t))for(a=0;a<r;a++)s(a,t[a]);else for(s(0,i),a=1;a<r;a++)s(a,i+(a+1));return o}e.exports={moduleType:\"component\",name:\"grid\",schema:{layout:{grid:l}},layoutAttributes:l,sizeDefaults:function(t,e){var r=t.grid||{},i=c(e,r,\"x\"),a=c(e,r,\"y\");if(t.grid||i||a){var o,f,h=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),p=Array.isArray(i),d=Array.isArray(a),g=p&&i!==r.xaxes&&d&&a!==r.yaxes;h?(o=r.subplots.length,f=r.subplots[0].length):(d&&(o=a.length),p&&(f=i.length));var v=s.newContainer(e,\"grid\"),m=A(\"rows\",o),y=A(\"columns\",f);if(m*y>1){h||p||d||\"independent\"===A(\"pattern\")&&(h=!0),v._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===A(\"roworder\"),w=h?.2:.1,k=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),v._domains={x:u(\"x\",A,w,x,y),y:u(\"y\",A,k,b,m,_)}}else delete e.grid}function A(t,e){return n.coerce(r,v,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,v=r.columns,m=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n<g;n++){var _=l[n]=new Array(v),w=x[n]||[];for(i=0;i<v;i++)if(m?(s=1===b?\"xy\":\"x\"+b+\"y\"+b,b++):s=w[i],_[i]=\"\",-1!==p.cartesian.indexOf(s)){if(u=s.indexOf(\"y\"),a=s.slice(0,u),o=s.slice(u),void 0!==y[a]&&y[a]!==i||void 0!==y[o]&&y[o]!==n)continue;_[i]=s,y[a]=i,y[o]=n}}}else{var k=c(e,h,\"x\"),A=c(e,h,\"y\");r.xaxes=f(k,p.xaxis,v,y,\"x\"),r.yaxes=f(A,p.yaxis,g,y,\"y\")}var M=r._anchors={},T=\"top to bottom\"===r.roworder;for(var S in y){var C,E,L,z=S.charAt(0),O=r[z+\"side\"];if(O.length<8)M[S]=\"free\";else if(\"x\"===z){if(\"t\"===O.charAt(0)===T?(C=0,E=1,L=g):(C=g-1,E=-1,L=-1),d){var I=y[S];for(n=C;n!==L;n+=E)if((s=l[n][I])&&(u=s.indexOf(\"y\"),s.slice(0,u)===S)){M[S]=s.slice(u);break}}else for(n=C;n!==L;n+=E)if(o=r.yaxes[n],-1!==p.cartesian.indexOf(S+o)){M[S]=o;break}}else if(\"l\"===O.charAt(0)?(C=0,E=1,L=v):(C=v-1,E=-1,L=-1),d){var D=y[S];for(n=C;n!==L;n+=E)if((s=l[D][n])&&(u=s.indexOf(\"y\"),s.slice(u)===S)){M[S]=s.slice(0,u);break}}else for(n=C;n!==L;n+=E)if(a=r.xaxes[n],-1!==p.cartesian.indexOf(a+S)){M[S]=a;break}}}}}},{\"../../lib\":694,\"../../lib/regex\":710,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/constants\":748,\"../../plots/domain\":768}],615:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/constants\"),i=t(\"../../plot_api/plot_template\").templatedArray;e.exports=i(\"image\",{visible:{valType:\"boolean\",dflt:!0,editType:\"arraydraw\"},source:{valType:\"string\",editType:\"arraydraw\"},layer:{valType:\"enumerated\",values:[\"below\",\"above\"],dflt:\"above\",editType:\"arraydraw\"},sizex:{valType:\"number\",dflt:0,editType:\"arraydraw\"},sizey:{valType:\"number\",dflt:0,editType:\"arraydraw\"},sizing:{valType:\"enumerated\",values:[\"fill\",\"contain\",\"stretch\"],dflt:\"contain\",editType:\"arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},x:{valType:\"any\",dflt:0,editType:\"arraydraw\"},y:{valType:\"any\",dflt:0,editType:\"arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"left\",editType:\"arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"top\",editType:\"arraydraw\"},xref:{valType:\"enumerated\",values:[\"paper\",n.idRegex.x.toString()],dflt:\"paper\",editType:\"arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",n.idRegex.y.toString()],dflt:\"paper\",editType:\"arraydraw\"},editType:\"arraydraw\"})},{\"../../plot_api/plot_template\":732,\"../../plots/cartesian/constants\":748}],616:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib/to_log_range\");e.exports=function(t,e,r,a){e=e||{};var o=\"log\"===r&&\"linear\"===e.type,s=\"linear\"===r&&\"log\"===e.type;if(o||s)for(var l,c,u=t._fullLayout.images,f=e._id.charAt(0),h=0;h<u.length;h++)if(c=\"images[\"+h+\"].\",(l=u[h])[f+\"ref\"]===e._id){var p=l[f],d=l[\"size\"+f],g=null,v=null;if(o){g=i(p,e.range);var m=d/Math.pow(10,g)/2;v=2*Math.log(m+Math.sqrt(1+m*m))/Math.LN10}else v=(g=Math.pow(10,p))*(Math.pow(10,d/2)-Math.pow(10,-d/2));n(g)?n(v)||(v=null):(g=null,v=null),a(c+f,g),a(c+\"size\"+f,v)}}},{\"../../lib/to_log_range\":720,\"fast-isnumeric\":215}],617:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/array_container_defaults\"),o=t(\"./attributes\");function s(t,e,r){function a(r,i){return n.coerce(t,e,o,r,i)}var s=a(\"source\");if(!a(\"visible\",!!s))return e;a(\"layer\"),a(\"xanchor\"),a(\"yanchor\"),a(\"sizex\"),a(\"sizey\"),a(\"sizing\"),a(\"opacity\");for(var l={_fullLayout:r},c=[\"x\",\"y\"],u=0;u<2;u++){var f=c[u],h=i.coerceRef(t,e,l,f,\"paper\");if(\"paper\"!==h)i.getFromId(l,h)._imgIndices.push(e._index);i.coercePosition(e,l,a,h,f,0)}return e}e.exports=function(t,e){a(t,e,{name:\"images\",handleItemDefaults:s})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/cartesian/axes\":742,\"./attributes\":615}],618:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../drawing\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../constants/xmlns_namespaces\");e.exports=function(t){var e,r,s=t._fullLayout,l=[],c={},u=[];for(r=0;r<s.images.length;r++){var f=s.images[r];if(f.visible)if(\"below\"===f.layer&&\"paper\"!==f.xref&&\"paper\"!==f.yref){e=f.xref+f.yref;var h=s._plots[e];if(!h){u.push(f);continue}h.mainplot&&(e=h.mainplot.id),c[e]||(c[e]=[]),c[e].push(f)}else\"above\"===f.layer?l.push(f):u.push(f)}var p={x:{left:{sizing:\"xMin\",offset:0},center:{sizing:\"xMid\",offset:-.5},right:{sizing:\"xMax\",offset:-1}},y:{top:{sizing:\"YMin\",offset:0},middle:{sizing:\"YMid\",offset:-.5},bottom:{sizing:\"YMax\",offset:-1}}};function d(e){var r=n.select(this);if(!this.img||this.img.src!==e.source){r.attr(\"xmlns\",o.svg);var i=new Promise(function(t){var n=new Image;function i(){r.remove(),t()}this.img=n,n.setAttribute(\"crossOrigin\",\"anonymous\"),n.onerror=i,n.onload=function(){var e=document.createElement(\"canvas\");e.width=this.width,e.height=this.height,e.getContext(\"2d\").drawImage(this,0,0);var n=e.toDataURL(\"image/png\");r.attr(\"xlink:href\",n),t()},r.on(\"error\",i),n.src=e.source}.bind(this));t._promises.push(i)}}function g(e){var r=n.select(this),o=a.getFromId(t,e.xref),l=a.getFromId(t,e.yref),c=s._size,u=o?Math.abs(o.l2p(e.sizex)-o.l2p(0)):e.sizex*c.w,f=l?Math.abs(l.l2p(e.sizey)-l.l2p(0)):e.sizey*c.h,h=u*p.x[e.xanchor].offset,d=f*p.y[e.yanchor].offset,g=p.x[e.xanchor].sizing+p.y[e.yanchor].sizing,v=(o?o.r2p(e.x)+o._offset:e.x*c.w+c.l)+h,m=(l?l.r2p(e.y)+l._offset:c.h-e.y*c.h+c.t)+d;switch(e.sizing){case\"fill\":g+=\" slice\";break;case\"stretch\":g=\"none\"}r.attr({x:v,y:m,width:u,height:f,preserveAspectRatio:g,opacity:e.opacity});var y=(o?o._id:\"\")+(l?l._id:\"\");i.setClipUrl(r,y?\"clip\"+s._uid+y:null,t)}var v=s._imageLowerLayer.selectAll(\"image\").data(u),m=s._imageUpperLayer.selectAll(\"image\").data(l);v.enter().append(\"image\"),m.enter().append(\"image\"),v.exit().remove(),m.exit().remove(),v.each(function(t){d.bind(this)(t),g.bind(this)(t)}),m.each(function(t){d.bind(this)(t),g.bind(this)(t)});var y=Object.keys(s._plots);for(r=0;r<y.length;r++){e=y[r];var x=s._plots[e];if(x.imagelayer){var b=x.imagelayer.selectAll(\"image\").data(c[e]||[]);b.enter().append(\"image\"),b.exit().remove(),b.each(function(t){d.bind(this)(t),g.bind(this)(t)})}}}},{\"../../constants/xmlns_namespaces\":672,\"../../plots/cartesian/axes\":742,\"../drawing\":592,d3:149}],619:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"images\",layoutAttributes:t(\"./attributes\"),supplyLayoutDefaults:t(\"./defaults\"),includeBasePlot:t(\"../../plots/cartesian/include_components\")(\"images\"),draw:t(\"./draw\"),convertCoords:t(\"./convert_coords\")}},{\"../../plots/cartesian/include_components\":753,\"./attributes\":615,\"./convert_coords\":616,\"./defaults\":617,\"./draw\":618}],620:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\");e.exports={bgcolor:{valType:\"color\",editType:\"legend\"},bordercolor:{valType:\"color\",dflt:i.defaultLine,editType:\"legend\"},borderwidth:{valType:\"number\",min:0,dflt:0,editType:\"legend\"},font:n({editType:\"legend\"}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"v\",editType:\"legend\"},traceorder:{valType:\"flaglist\",flags:[\"reversed\",\"grouped\"],extras:[\"normal\"],editType:\"legend\"},tracegroupgap:{valType:\"number\",min:0,dflt:10,editType:\"legend\"},x:{valType:\"number\",min:-2,max:3,dflt:1.02,editType:\"legend\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"left\",editType:\"legend\"},y:{valType:\"number\",min:-2,max:3,dflt:1,editType:\"legend\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"legend\"},uirevision:{valType:\"any\",editType:\"none\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"legend\"},editType:\"legend\"}},{\"../../plots/font_attributes\":769,\"../color/attributes\":570}],621:[function(t,e,r){\"use strict\";e.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:\"#808BA4\",scrollBarMargin:4,textOffsetX:40}},{}],622:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plot_api/plot_template\"),o=t(\"./attributes\"),s=t(\"../../plots/layout_attributes\"),l=t(\"./helpers\");e.exports=function(t,e,r){for(var c,u,f,h,p=t.legend||{},d=0,g=!1,v=\"normal\",m=0;m<r.length;m++){var y=r[m];y.visible&&((y.showlegend||y._dfltShowLegend)&&(d++,y.showlegend&&(g=!0,(n.traceIs(y,\"pie\")||!0===y._input.showlegend)&&d++)),(n.traceIs(y,\"bar\")&&\"stack\"===e.barmode||-1!==[\"tonextx\",\"tonexty\"].indexOf(y.fill))&&(v=l.isGrouped({traceorder:v})?\"grouped+reversed\":\"reversed\"),void 0!==y.legendgroup&&\"\"!==y.legendgroup&&(v=l.isReversed({traceorder:v})?\"reversed+grouped\":\"grouped\"))}var x=i.coerce(t,e,s,\"showlegend\",g&&d>1);if(!1!==x||p.uirevision){var b=a.newContainer(e,\"legend\");if(w(\"uirevision\",e.uirevision),!1!==x){if(w(\"bgcolor\",e.paper_bgcolor),w(\"bordercolor\"),w(\"borderwidth\"),i.coerceFont(w,\"font\",e.font),w(\"orientation\"),\"h\"===b.orientation){var _=t.xaxis;n.getComponentMethod(\"rangeslider\",\"isVisible\")(_)?(c=0,f=\"left\",u=1.1,h=\"bottom\"):(c=0,f=\"left\",u=-.1,h=\"top\")}w(\"traceorder\",v),l.isGrouped(e.legend)&&w(\"tracegroupgap\"),w(\"x\",c),w(\"xanchor\",f),w(\"y\",u),w(\"yanchor\",h),w(\"valign\"),i.noneOrAll(p,b,[\"x\",\"y\"])}}function w(t,e){return i.coerce(p,b,o,t,e)}}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../plots/layout_attributes\":797,\"../../registry\":825,\"./attributes\":620,\"./helpers\":626}],623:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/interactions\"),g=t(\"../../constants/alignment\"),v=g.LINE_SPACING,m=g.FROM_TL,y=g.FROM_BR,x=t(\"./get_legend_data\"),b=t(\"./style\"),_=t(\"./helpers\"),w=d.DBLCLICKDELAY;function k(t,e,r,n,i){var a=r.data()[0][0].trace,o={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(o.group=a._group),\"pie\"===a.type&&(o.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",o))if(1===n)e._clickTimeout=setTimeout(function(){h(r,t,n)},w);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",o)&&h(r,t,n)}}function A(t,e,r){var n=t.data()[0][0],a=e._fullLayout,s=n.trace,l=o.traceIs(s,\"pie\"),u=s.index,h=l?n.label:s.name,d=e._context.edits.legendText&&!l,g=i.ensureSingle(t,\"text\",\"legendtext\");function m(r){f.convertToTspans(r,e,function(){!function(t,e){var r=t.data()[0][0];if(!r.trace.showlegend)return void t.remove();var n,i,a=t.select(\"g[class*=math-group]\"),o=a.node(),s=e._fullLayout.legend.font.size*v;if(o){var l=c.bBox(o);n=l.height,i=l.width,c.setTranslate(a,0,n/4)}else{var u=t.select(\".legendtext\"),h=f.lineCount(u),d=u.node();n=s*h,i=d?c.bBox(d).width:0;var g=s*(.3+(1-h)/2);f.positionText(u,p.textOffsetX,g)}r.lineHeight=s,r.height=Math.max(n,16)+3,r.width=i}(t,e)})}g.attr(\"text-anchor\",\"start\").classed(\"user-select-none\",!0).call(c.font,a.legend.font).text(d?M(h,r):h),f.positionText(g,p.textOffsetX,0),d?g.call(f.makeEditable,{gd:e,text:h}).call(m).on(\"edit\",function(t){this.text(M(t,r)).call(m);var a=n.trace._fullInput||{},s={};if(o.hasTransform(a,\"groupby\")){var l=o.getTransformIndices(a,\"groupby\"),c=l[l.length-1],f=i.keyedContainer(a,\"transforms[\"+c+\"].styles\",\"target\",\"value.name\");f.set(n.trace._group,t),s=f.constructUpdate()}else s.name=t;return o.call(\"_guiRestyle\",e,s,u)}):m(g)}function M(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function T(t,e){var r,a=1,o=i.ensureSingle(t,\"rect\",\"legendtoggle\",function(t){t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\").call(u.fill,\"rgba(0,0,0,0)\")});o.on(\"mousedown\",function(){(r=(new Date).getTime())-e._legendMouseDownTime<w?a+=1:(a=1,e._legendMouseDownTime=r)}),o.on(\"mouseup\",function(){if(!e._dragged&&!e._editing){var r=e._fullLayout.legend;(new Date).getTime()-e._legendMouseDownTime>w&&(a=Math.max(a-1,1)),k(e,r,t,a,n.event)}})}function S(t,e,r){var i=t._fullLayout,a=i.legend,o=a.borderwidth,s=_.isGrouped(a),l=0;if(a._width=0,a._height=0,_.isVertical(a))s&&e.each(function(t,e){c.setTranslate(this,0,e*a.tracegroupgap)}),r.each(function(t){var e=t[0],r=e.height,n=e.width;c.setTranslate(this,o,5+o+a._height+r/2),a._height+=r,a._width=Math.max(a._width,n)}),a._width+=45+2*o,a._height+=10+2*o,s&&(a._height+=(a._lgroupsLength-1)*a.tracegroupgap),l=40;else if(s){for(var u=[a._width],f=e.data(),h=0,p=f.length;h<p;h++){var d=f[h].map(function(t){return t[0].width}),g=40+Math.max.apply(null,d);a._width+=a.tracegroupgap+g,u.push(a._width)}e.each(function(t,e){c.setTranslate(this,u[e],0)}),e.each(function(){var t=n.select(this).selectAll(\"g.traces\"),e=0;t.each(function(t){var r=t[0].height;c.setTranslate(this,0,5+o+e+r/2),e+=r}),a._height=Math.max(a._height,e)}),a._height+=10+2*o,a._width+=2*o}else{var v=0,m=0,y=0,x=0,b=0,w=a.tracegroupgap||5;r.each(function(t){y=Math.max(40+t[0].width,y),b+=40+t[0].width+w});var k=i._size.w>o+b-w;r.each(function(t){var e=t[0],r=k?40+t[0].width:y;o+x+w+r>i._size.w&&(x=0,v+=m,a._height+=m,m=0),c.setTranslate(this,o+x,5+o+e.height/2+v),a._width+=w+r,x+=w+r,m=Math.max(e.height,m)}),k?a._height=m:a._height+=m,a._width+=2*o,a._height+=10+2*o}a._width=Math.ceil(a._width),a._height=Math.ceil(a._height);var A=t._context.edits.legendText||t._context.edits.legendPosition;r.each(function(t){var e=t[0],r=n.select(this).select(\".legendtoggle\");c.setRect(r,0,-e.height/2,(A?0:a._width)+l,e.height)})}function C(t){var e=t._fullLayout.legend,r=\"left\";i.isRightAnchor(e)?r=\"right\":i.isCenterAnchor(e)&&(r=\"center\");var n=\"top\";i.isBottomAnchor(e)?n=\"bottom\":i.isMiddleAnchor(e)&&(n=\"middle\"),a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*y[r],b:e._height*y[n],t:e._height*m[n]})}e.exports=function(t){var e=t._fullLayout,r=\"legend\"+e._uid;if(e._infolayer&&t.calcdata){t._legendMouseDownTime||(t._legendMouseDownTime=0);var s=e.legend,f=e.showlegend&&x(t.calcdata,s),h=e.hiddenlabels||[];if(!e.showlegend||!f.length)return e._infolayer.selectAll(\".legend\").remove(),e._topdefs.select(\"#\"+r).remove(),void a.autoMargin(t,\"legend\");for(var d=0,g=0;g<f.length;g++)for(var v=0;v<f[g].length;v++){var _=f[g][v][0],w=_.trace,M=o.traceIs(w,\"pie\")?_.label:w.name;d=Math.max(d,M&&M.length||0)}var E=!1,L=i.ensureSingle(e._infolayer,\"g\",\"legend\",function(t){t.attr(\"pointer-events\",\"all\"),E=!0}),z=i.ensureSingleById(e._topdefs,\"clipPath\",r,function(t){t.append(\"rect\")}),O=i.ensureSingle(L,\"rect\",\"bg\",function(t){t.attr(\"shape-rendering\",\"crispEdges\")});O.call(u.stroke,s.bordercolor).call(u.fill,s.bgcolor).style(\"stroke-width\",s.borderwidth+\"px\");var I=i.ensureSingle(L,\"g\",\"scrollbox\"),D=i.ensureSingle(L,\"rect\",\"scrollbar\",function(t){t.attr({rx:20,ry:3,width:0,height:0}).call(u.fill,\"#808BA4\")}),P=I.selectAll(\"g.groups\").data(f);P.enter().append(\"g\").attr(\"class\",\"groups\"),P.exit().remove();var R=P.selectAll(\"g.traces\").data(i.identity);R.enter().append(\"g\").attr(\"class\",\"traces\"),R.exit().remove(),R.style(\"opacity\",function(t){var e=t[0].trace;return o.traceIs(e,\"pie\")?-1!==h.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1}).each(function(){n.select(this).call(A,t,d).call(T,t)}).call(b,t),i.syncOrAsync([a.previousPromises,function(){E&&(S(t,P,R),C(t));var u=e.width,f=e.height;S(t,P,R),s._height>f?function(t){var e=t._fullLayout.legend,r=\"left\";i.isRightAnchor(e)?r=\"right\":i.isCenterAnchor(e)&&(r=\"center\");a.autoMargin(t,\"legend\",{x:e.x,y:.5,l:e._width*m[r],r:e._width*y[r],b:0,t:0})}(t):C(t);var h=e._size,d=h.l+h.w*s.x,g=h.t+h.h*(1-s.y);i.isRightAnchor(s)?d-=s._width:i.isCenterAnchor(s)&&(d-=s._width/2),i.isBottomAnchor(s)?g-=s._height:i.isMiddleAnchor(s)&&(g-=s._height/2);var v=s._width,x=h.w;v>x?(d=h.l,v=x):(d+v>u&&(d=u-v),d<0&&(d=0),v=Math.min(u-d,s._width));var b,_,w,A,M=s._height,T=h.h;if(M>T?(g=h.t,M=T):(g+M>f&&(g=f-M),g<0&&(g=0),M=Math.min(f-g,s._height)),c.setTranslate(L,d,g),D.on(\".drag\",null),L.on(\"wheel\",null),s._height<=M||t._context.staticPlot)O.attr({width:v-s.borderwidth,height:M-s.borderwidth,x:s.borderwidth/2,y:s.borderwidth/2}),c.setTranslate(I,0,0),z.select(\"rect\").attr({width:v-2*s.borderwidth,height:M-2*s.borderwidth,x:s.borderwidth,y:s.borderwidth}),c.setClipUrl(I,r,t),c.setRect(D,0,0,0,0),delete s._scrollY;else{var F,B,N=Math.max(p.scrollBarMinHeight,M*M/s._height),j=M-N-2*p.scrollBarMargin,V=s._height-M,U=j/V,q=Math.min(s._scrollY||0,V);O.attr({width:v-2*s.borderwidth+p.scrollBarWidth+p.scrollBarMargin,height:M-s.borderwidth,x:s.borderwidth/2,y:s.borderwidth/2}),z.select(\"rect\").attr({width:v-2*s.borderwidth+p.scrollBarWidth+p.scrollBarMargin,height:M-2*s.borderwidth,x:s.borderwidth,y:s.borderwidth+q}),c.setClipUrl(I,r,t),G(q,N,U),L.on(\"wheel\",function(){G(q=i.constrain(s._scrollY+n.event.deltaY/j*V,0,V),N,U),0!==q&&q!==V&&n.event.preventDefault()});var H=n.behavior.drag().on(\"dragstart\",function(){F=n.event.sourceEvent.clientY,B=q}).on(\"drag\",function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||G(q=i.constrain((t.clientY-F)/U+B,0,V),N,U)});D.call(H)}function G(e,r,n){s._scrollY=t._fullLayout.legend._scrollY=e,c.setTranslate(I,0,-e),c.setRect(D,v,p.scrollBarMargin+e*n,p.scrollBarWidth,r),z.select(\"rect\").attr({y:s.borderwidth+e})}t._context.edits.legendPosition&&(L.classed(\"cursor-move\",!0),l.init({element:L.node(),gd:t,prepFn:function(){var t=c.getTranslate(L);w=t.x,A=t.y},moveFn:function(t,e){var r=w+t,n=A+e;c.setTranslate(L,r,n),b=l.align(r,0,h.l,h.l+h.w,s.xanchor),_=l.align(n,0,h.t+h.h,h.t,s.yanchor)},doneFn:function(){void 0!==b&&void 0!==_&&o.call(\"_guiRelayout\",t,{\"legend.x\":b,\"legend.y\":_})},clickFn:function(r,n){var i=e._infolayer.selectAll(\"g.traces\").filter(function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom});i.size()>0&&k(t,L,i,r,n)}}))}],t)}}},{\"../../constants/alignment\":666,\"../../constants/interactions\":670,\"../../lib\":694,\"../../lib/events\":683,\"../../lib/svg_text_utils\":718,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"./constants\":621,\"./get_legend_data\":624,\"./handle_click\":625,\"./helpers\":626,\"./style\":628,d3:149}],624:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o={},s=[],l=!1,c={},u=0;function f(t,r){if(\"\"!==t&&i.isGrouped(e))-1===s.indexOf(t)?(s.push(t),l=!0,o[t]=[[r]]):o[t].push([r]);else{var n=\"~~i\"+u;s.push(n),o[n]=[[r]],u++}}for(r=0;r<t.length;r++){var h=t[r],p=h[0],d=p.trace,g=d.legendgroup;if(d.visible&&d.showlegend)if(n.traceIs(d,\"pie\"))for(c[g]||(c[g]={}),a=0;a<h.length;a++){var v=h[a].label;c[g][v]||(f(g,{label:v,color:h[a].color,i:h[a].i,trace:d,pts:h[a].pts}),c[g][v]=!0)}else f(g,p)}if(!s.length)return[];var m,y,x=s.length;if(l&&i.isGrouped(e))for(y=new Array(x),r=0;r<x;r++)m=o[s[r]],y[r]=i.isReversed(e)?m.reverse():m;else{for(y=[new Array(x)],r=0;r<x;r++)m=o[s[r]][0],y[0][i.isReversed(e)?x-r-1:r]=m;x=1}return e._lgroupsLength=x,y}},{\"../../registry\":825,\"./helpers\":626}],625:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=!0;e.exports=function(t,e,r){if(!e._dragged&&!e._editing){var o,s,l,c,u,f=e._fullLayout.hiddenlabels?e._fullLayout.hiddenlabels.slice():[],h=t.data()[0][0],p=e._fullData,d=h.trace,g=d.legendgroup,v={},m=[],y=[],x=[];if(1===r&&a&&e.data&&e._context.showTips?(n.notifier(n._(e,\"Double-click on legend to isolate one trace\"),\"long\"),a=!1):a=!1,i.traceIs(d,\"pie\")){var b=h.label,_=f.indexOf(b);1===r?-1===_?f.push(b):f.splice(_,1):2===r&&(f=[],e.calcdata[0].forEach(function(t){b!==t.label&&f.push(t.label)}),e._fullLayout.hiddenlabels&&e._fullLayout.hiddenlabels.length===f.length&&-1===_&&(f=[])),i.call(\"_guiRelayout\",e,\"hiddenlabels\",f)}else{var w,k=g&&g.length,A=[];if(k)for(o=0;o<p.length;o++)(w=p[o]).visible&&w.legendgroup===g&&A.push(o);if(1===r){var M;switch(d.visible){case!0:M=\"legendonly\";break;case!1:M=!1;break;case\"legendonly\":M=!0}if(k)for(o=0;o<p.length;o++)!1!==p[o].visible&&p[o].legendgroup===g&&O(p[o],M);else O(d,M)}else if(2===r){var T,S,C=!0;for(o=0;o<p.length;o++)if(!(p[o]===d)&&!(T=k&&p[o].legendgroup===g)&&!0===p[o].visible&&!i.traceIs(p[o],\"notLegendIsolatable\")){C=!1;break}for(o=0;o<p.length;o++)if(!1!==p[o].visible&&!i.traceIs(p[o],\"notLegendIsolatable\"))switch(d.visible){case\"legendonly\":O(p[o],!0);break;case!0:S=!!C||\"legendonly\",T=p[o]===d||k&&p[o].legendgroup===g,O(p[o],!!T||S)}}for(o=0;o<y.length;o++)if(l=y[o]){var E=l.constructUpdate(),L=Object.keys(E);for(s=0;s<L.length;s++)c=L[s],(v[c]=v[c]||[])[x[o]]=E[c]}for(u=Object.keys(v),o=0;o<u.length;o++)for(c=u[o],s=0;s<m.length;s++)v[c].hasOwnProperty(s)||(v[c][s]=void 0);i.call(\"_guiRestyle\",e,v,m)}}function z(t,e,r){var n=m.indexOf(t),i=v[e];return i||(i=v[e]=[]),-1===m.indexOf(t)&&(m.push(t),n=m.length-1),i[n]=r,n}function O(t,e){var r=t._fullInput;if(i.hasTransform(r,\"groupby\")){var a=y[r.index];if(!a){var o=i.getTransformIndices(r,\"groupby\"),s=o[o.length-1];a=n.keyedContainer(r,\"transforms[\"+s+\"].styles\",\"target\",\"value.visible\"),y[r.index]=a}var l=a.get(t._group);void 0===l&&(l=!0),!1!==l&&a.set(t._group,e),x[r.index]=z(r.index,\"visible\",!1!==r.visible)}else{var c=!1!==r.visible&&e;z(r.index,\"visible\",c)}}}},{\"../../lib\":694,\"../../registry\":825}],626:[function(t,e,r){\"use strict\";r.isGrouped=function(t){return-1!==(t.traceorder||\"\").indexOf(\"grouped\")},r.isVertical=function(t){return\"h\"!==t.orientation},r.isReversed=function(t){return-1!==(t.traceorder||\"\").indexOf(\"reversed\")}},{}],627:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"legend\",layoutAttributes:t(\"./attributes\"),supplyLayoutDefaults:t(\"./defaults\"),draw:t(\"./draw\"),style:t(\"./style\")}},{\"./attributes\":620,\"./defaults\":622,\"./draw\":623,\"./style\":628}],628:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=t(\"../drawing\"),s=t(\"../color\"),l=t(\"../../traces/scatter/subtypes\"),c=t(\"../../traces/pie/style_one\");e.exports=function(t,e){t.each(function(t){var r=n.select(this),i=a.ensureSingle(r,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var o=e._fullLayout.legend.valign,s=t[0].lineHeight,l=t[0].height;if(\"middle\"!==o&&s&&l){var c={top:1,bottom:-1}[o]*(.5*(s-l+3));i.attr(\"transform\",\"translate(0,\"+c+\")\")}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var u=i.selectAll(\"g.legendsymbols\").data([t]);u.enter().append(\"g\").classed(\"legendsymbols\",!0),u.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)}).each(function(t){var e=t[0].trace,r=e.marker||{},a=r.line||{},o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbar\").data(i.traceIs(e,\"bar\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbar\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),o.exit().remove(),o.each(function(t){var e=n.select(this),i=t[0],o=(i.mlw+1||a.width+1)-1;e.style(\"stroke-width\",o+\"px\").call(s.fill,i.mc||r.color),o&&e.call(s.stroke,i.mlc||a.color)})}).each(function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(i.traceIs(e,\"box-violin\")&&e.visible?[t]:[]);r.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),r.exit().remove(),r.each(function(){var t=e.line.width,r=n.select(this);r.style(\"stroke-width\",t+\"px\").call(s.fill,e.fillcolor),t&&s.stroke(r,e.line.color)})}).each(function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendpie\").data(i.traceIs(e,\"pie\")&&e.visible?[t]:[]);r.enter().append(\"path\").classed(\"legendpie\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),r.exit().remove(),r.size()&&r.call(c,t[0],e)}).each(function(t){var r=t[0].trace,i=r.visible&&r.fill&&\"none\"!==r.fill,a=l.hasLines(r),s=r.contours,c=!1,u=!1;if(s){var f=s.coloring;\"lines\"===f?c=!0:a=\"none\"===f||\"heatmap\"===f||s.showlines,\"constraint\"===s.type?i=\"=\"!==s._operation:\"fill\"!==f&&\"heatmap\"!==f||(u=!0)}var h=l.hasMarkers(r)||l.hasText(r),p=i||u,d=a||c,g=h||!p?\"M5,0\":d?\"M5,-2\":\"M5,-3\",v=n.select(this),m=v.select(\".legendfill\").selectAll(\"path\").data(i||u?[t]:[]);m.enter().append(\"path\").classed(\"js-fill\",!0),m.exit().remove(),m.attr(\"d\",g+\"h30v6h-30z\").call(i?o.fillGroupStyle:function(t){if(t.size()){var n=\"legendfill-\"+r.uid;o.gradient(t,e,n,\"horizontalreversed\",r.colorscale,\"fill\")}});var y=v.select(\".legendlines\").selectAll(\"path\").data(a||c?[t]:[]);y.enter().append(\"path\").classed(\"js-line\",!0),y.exit().remove(),y.attr(\"d\",g+(c?\"l30,0.0001\":\"h30\")).call(a?o.lineGroupStyle:function(t){if(t.size()){var n=\"legendline-\"+r.uid;o.lineGroupStyle(t),o.gradient(t,e,n,\"horizontalreversed\",r.colorscale,\"stroke\")}})}).each(function(t){var r,i,s=t[0],c=s.trace,u=l.hasMarkers(c),f=l.hasText(c),h=l.hasLines(c);function p(t,e,r){var n=a.nestedProperty(c,t).get(),i=a.isArrayOrTypedArray(n)&&e?e(n):n;if(r){if(i<r[0])return r[0];if(i>r[1])return r[1]}return i}function d(t){return t[0]}if(u||f||h){var g={},v={};if(u){g.mc=p(\"marker.color\",d),g.mx=p(\"marker.symbol\",d),g.mo=p(\"marker.opacity\",a.mean,[.2,1]),g.mlc=p(\"marker.line.color\",d),g.mlw=p(\"marker.line.width\",a.mean,[0,5]),v.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var m=p(\"marker.size\",a.mean,[2,16]);g.ms=m,v.marker.size=m}h&&(v.line={width:p(\"line.width\",d,[0,10])}),f&&(g.tx=\"Aa\",g.tp=p(\"textposition\",d),g.ts=10,g.tc=p(\"textfont.color\",d),g.tf=p(\"textfont.family\",d)),r=[a.minExtend(s,g)],(i=a.minExtend(c,v)).selectedpoints=null}var y=n.select(this).select(\"g.legendpoints\"),x=y.selectAll(\"path.scatterpts\").data(u?r:[]);x.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",\"translate(20,0)\"),x.exit().remove(),x.call(o.pointStyle,i,e),u&&(r[0].mrc=3);var b=y.selectAll(\"g.pointtext\").data(f?r:[]);b.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",\"translate(20,0)\"),b.exit().remove(),b.selectAll(\"text\").call(o.textPointStyle,i,e)}).each(function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(\"candlestick\"===e.type&&e.visible?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"}).attr(\"transform\",\"translate(20,0)\").style(\"stroke-miterlimit\",1),r.exit().remove(),r.each(function(t,r){var i=e[r?\"increasing\":\"decreasing\"],a=i.line.width,o=n.select(this);o.style(\"stroke-width\",a+\"px\").call(s.fill,i.fillcolor),a&&s.stroke(o,i.line.color)})}).each(function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(\"ohlc\"===e.type&&e.visible?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"}).attr(\"transform\",\"translate(20,0)\").style(\"stroke-miterlimit\",1),r.exit().remove(),r.each(function(t,r){var i=e[r?\"increasing\":\"decreasing\"],a=i.line.width,l=n.select(this);l.style(\"fill\",\"none\").call(o.dashLine,i.line.dash,a),a&&s.stroke(l,i.line.color)})})}},{\"../../lib\":694,\"../../registry\":825,\"../../traces/pie/style_one\":1033,\"../../traces/scatter/subtypes\":1071,\"../color\":571,\"../drawing\":592,d3:149}],629:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../lib\"),s=t(\"../../../build/ploticon\"),l=o._,c=e.exports={};function u(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=\"on\";if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,v=(1-d)/2;for(i=0;i<f.length;i++)if(!(r=f[i]).fixedrange)if(p=r._name,\"auto\"===l)u[p+\".autorange\"]=!0;else if(\"reset\"===l){if(void 0===r._rangeInitial)u[p+\".autorange\"]=!0;else{var m=r._rangeInitial.slice();u[p+\".range[0]\"]=m[0],u[p+\".range[1]\"]=m[1]}void 0!==r._showSpikeInitial&&(u[p+\".showspikes\"]=r._showSpikeInitial,\"on\"!==h||r._showSpikeInitial||(h=\"off\"))}else{var y=[r.r2l(r.range[0]),r.r2l(r.range[1])],x=[g*y[0]+v*y[1],g*y[1]+v*y[0]];u[p+\".range[0]\"]=r.l2r(x[0]),u[p+\".range[1]\"]=r.l2r(x[1])}c._cartesianSpikesEnabled=h}else{if(\"hovermode\"!==s||\"x\"!==l&&\"y\"!==l){if(\"hovermode\"===s&&\"closest\"===l){for(i=0;i<f.length;i++)r=f[i],\"on\"!==h||r.showspikes||(h=\"off\");c._cartesianSpikesEnabled=h}}else l=c._isHoriz?\"y\":\"x\",o.setAttribute(\"data-val\",l);u[s]=l}n.call(\"_guiRelayout\",t,u)}function f(t,e){for(var r=e.currentTarget,i=r.getAttribute(\"data-attr\"),a=r.getAttribute(\"data-val\")||!0,o=t._fullLayout._subplots.gl3d,s={},l=i.split(\".\"),c=0;c<o.length;c++)s[o[c]+\".\"+l[1]]=a;var u=\"pan\"===a?a:\"zoom\";s.dragmode=u,n.call(\"_guiRelayout\",t,s)}function h(t,e){for(var r=e.currentTarget.getAttribute(\"data-attr\"),i=t._fullLayout,a=i._subplots.gl3d,s={},l=0;l<a.length;l++){var c=a[l],u=c+\".camera\",f=i[c]._scene;\"resetDefault\"===r?s[u]=null:\"resetLastSave\"===r&&(s[u]=o.extendDeep({},f.cameraInitial))}n.call(\"_guiRelayout\",t,s)}function p(t,e){var r=e.currentTarget,n=r._previousVal,i=t._fullLayout,a=i._subplots.gl3d,o=[\"xaxis\",\"yaxis\",\"zaxis\"],s={},l={};if(n)l=n,r._previousVal=null;else{for(var c=0;c<a.length;c++){var u=a[c],f=i[u],h=u+\".hovermode\";s[h]=f.hovermode,l[h]=!1;for(var p=0;p<3;p++){var d=o[p],g=u+\".\"+d+\".showspikes\";l[g]=!1,s[g]=f[d].showspikes}}r._previousVal=s}return l}function d(t,e){for(var r=e.currentTarget,i=r.getAttribute(\"data-attr\"),a=r.getAttribute(\"data-val\")||!0,o=t._fullLayout,s=o._subplots.geo,l=0;l<s.length;l++){var c=s[l],u=o[c];if(\"zoom\"===i){var f=u.projection.scale,h=\"in\"===a?2*f:.5*f;n.call(\"_guiRelayout\",t,c+\".projection.scale\",h)}else\"reset\"===i&&m(t,\"geo\")}}function g(t){var e=t._fullLayout;return!e.hovermode&&(e._has(\"cartesian\")?e._isHoriz?\"y\":\"x\":\"closest\")}function v(t){var e=g(t);n.call(\"_guiRelayout\",t,\"hovermode\",e)}function m(t,e){for(var r=t._fullLayout,i=r._subplots[e],a={},o=0;o<i.length;o++)for(var s=i[o],l=r[s]._subplot.viewInitial,c=Object.keys(l),u=0;u<c.length;u++){var f=c[u];a[s+\".\"+f]=l[f]}n.call(\"_guiRelayout\",t,a)}c.toImage={name:\"toImage\",title:function(t){var e=(t._context.toImageButtonOptions||{}).format||\"png\";return l(t,\"png\"===e?\"Download plot as a png\":\"Download plot\")},icon:s.camera,click:function(t){var e=t._context.toImageButtonOptions,r={format:e.format||\"png\"};o.notifier(l(t,\"Taking snapshot - this may take a few seconds\"),\"long\"),\"svg\"!==r.format&&o.isIE()&&(o.notifier(l(t,\"IE only supports svg.  Changing format to svg.\"),\"long\"),r.format=\"svg\"),[\"filename\",\"width\",\"height\",\"scale\"].forEach(function(t){e[t]&&(r[t]=e[t])}),n.call(\"downloadImage\",t,r).then(function(e){o.notifier(l(t,\"Snapshot succeeded\")+\" - \"+e,\"long\")}).catch(function(){o.notifier(l(t,\"Sorry, there was a problem downloading your snapshot!\"),\"long\")})}},c.sendDataToCloud={name:\"sendDataToCloud\",title:function(t){return l(t,\"Edit in Chart Studio\")},icon:s.disk,click:function(t){i.sendDataToCloud(t)}},c.zoom2d={name:\"zoom2d\",title:function(t){return l(t,\"Zoom\")},attr:\"dragmode\",val:\"zoom\",icon:s.zoombox,click:u},c.pan2d={name:\"pan2d\",title:function(t){return l(t,\"Pan\")},attr:\"dragmode\",val:\"pan\",icon:s.pan,click:u},c.select2d={name:\"select2d\",title:function(t){return l(t,\"Box Select\")},attr:\"dragmode\",val:\"select\",icon:s.selectbox,click:u},c.lasso2d={name:\"lasso2d\",title:function(t){return l(t,\"Lasso Select\")},attr:\"dragmode\",val:\"lasso\",icon:s.lasso,click:u},c.zoomIn2d={name:\"zoomIn2d\",title:function(t){return l(t,\"Zoom in\")},attr:\"zoom\",val:\"in\",icon:s.zoom_plus,click:u},c.zoomOut2d={name:\"zoomOut2d\",title:function(t){return l(t,\"Zoom out\")},attr:\"zoom\",val:\"out\",icon:s.zoom_minus,click:u},c.autoScale2d={name:\"autoScale2d\",title:function(t){return l(t,\"Autoscale\")},attr:\"zoom\",val:\"auto\",icon:s.autoscale,click:u},c.resetScale2d={name:\"resetScale2d\",title:function(t){return l(t,\"Reset axes\")},attr:\"zoom\",val:\"reset\",icon:s.home,click:u},c.hoverClosestCartesian={name:\"hoverClosestCartesian\",title:function(t){return l(t,\"Show closest data on hover\")},attr:\"hovermode\",val:\"closest\",icon:s.tooltip_basic,gravity:\"ne\",click:u},c.hoverCompareCartesian={name:\"hoverCompareCartesian\",title:function(t){return l(t,\"Compare data on hover\")},attr:\"hovermode\",val:function(t){return t._fullLayout._isHoriz?\"y\":\"x\"},icon:s.tooltip_compare,gravity:\"ne\",click:u},c.zoom3d={name:\"zoom3d\",title:function(t){return l(t,\"Zoom\")},attr:\"scene.dragmode\",val:\"zoom\",icon:s.zoombox,click:f},c.pan3d={name:\"pan3d\",title:function(t){return l(t,\"Pan\")},attr:\"scene.dragmode\",val:\"pan\",icon:s.pan,click:f},c.orbitRotation={name:\"orbitRotation\",title:function(t){return l(t,\"Orbital rotation\")},attr:\"scene.dragmode\",val:\"orbit\",icon:s[\"3d_rotate\"],click:f},c.tableRotation={name:\"tableRotation\",title:function(t){return l(t,\"Turntable rotation\")},attr:\"scene.dragmode\",val:\"turntable\",icon:s[\"z-axis\"],click:f},c.resetCameraDefault3d={name:\"resetCameraDefault3d\",title:function(t){return l(t,\"Reset camera to default\")},attr:\"resetDefault\",icon:s.home,click:h},c.resetCameraLastSave3d={name:\"resetCameraLastSave3d\",title:function(t){return l(t,\"Reset camera to last save\")},attr:\"resetLastSave\",icon:s.movie,click:h},c.hoverClosest3d={name:\"hoverClosest3d\",title:function(t){return l(t,\"Toggle show closest data on hover\")},attr:\"hovermode\",val:null,toggle:!0,icon:s.tooltip_basic,gravity:\"ne\",click:function(t,e){var r=p(t,e);n.call(\"_guiRelayout\",t,r)}},c.zoomInGeo={name:\"zoomInGeo\",title:function(t){return l(t,\"Zoom in\")},attr:\"zoom\",val:\"in\",icon:s.zoom_plus,click:d},c.zoomOutGeo={name:\"zoomOutGeo\",title:function(t){return l(t,\"Zoom out\")},attr:\"zoom\",val:\"out\",icon:s.zoom_minus,click:d},c.resetGeo={name:\"resetGeo\",title:function(t){return l(t,\"Reset\")},attr:\"reset\",val:null,icon:s.autoscale,click:d},c.hoverClosestGeo={name:\"hoverClosestGeo\",title:function(t){return l(t,\"Toggle show closest data on hover\")},attr:\"hovermode\",val:null,toggle:!0,icon:s.tooltip_basic,gravity:\"ne\",click:v},c.hoverClosestGl2d={name:\"hoverClosestGl2d\",title:function(t){return l(t,\"Toggle show closest data on hover\")},attr:\"hovermode\",val:null,toggle:!0,icon:s.tooltip_basic,gravity:\"ne\",click:v},c.hoverClosestPie={name:\"hoverClosestPie\",title:function(t){return l(t,\"Toggle show closest data on hover\")},attr:\"hovermode\",val:\"closest\",icon:s.tooltip_basic,gravity:\"ne\",click:v},c.toggleHover={name:\"toggleHover\",title:function(t){return l(t,\"Toggle show closest data on hover\")},attr:\"hovermode\",val:null,toggle:!0,icon:s.tooltip_basic,gravity:\"ne\",click:function(t,e){var r=p(t,e);r.hovermode=g(t),n.call(\"_guiRelayout\",t,r)}},c.resetViews={name:\"resetViews\",title:function(t){return l(t,\"Reset views\")},icon:s.home,click:function(t,e){var r=e.currentTarget;r.setAttribute(\"data-attr\",\"zoom\"),r.setAttribute(\"data-val\",\"reset\"),u(t,e),r.setAttribute(\"data-attr\",\"resetLastSave\"),h(t,e),m(t,\"geo\"),m(t,\"mapbox\")}},c.toggleSpikelines={name:\"toggleSpikelines\",title:function(t){return l(t,\"Toggle Spike Lines\")},icon:s.spikeline,attr:\"_cartesianSpikesEnabled\",val:\"on\",click:function(t){var e=t._fullLayout;e._cartesianSpikesEnabled=\"on\"===e._cartesianSpikesEnabled?\"off\":\"on\";var r=function(t){for(var e,r,n=t._fullLayout,i=a.list(t,null,!0),o={},s=0;s<i.length;s++)e=i[s],r=e._name,o[r+\".showspikes\"]=\"on\"===n._cartesianSpikesEnabled||e._showSpikeInitial;return o}(t);n.call(\"_guiRelayout\",t,r)}},c.resetViewMapbox={name:\"resetViewMapbox\",title:function(t){return l(t,\"Reset view\")},attr:\"reset\",icon:s.home,click:function(t){m(t,\"mapbox\")}}},{\"../../../build/ploticon\":2,\"../../lib\":694,\"../../plots/cartesian/axis_ids\":745,\"../../plots/plots\":806,\"../../registry\":825}],630:[function(t,e,r){\"use strict\";r.manage=t(\"./manage\")},{\"./manage\":631}],631:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axis_ids\"),i=t(\"../../traces/scatter/subtypes\"),a=t(\"../../registry\"),o=t(\"./modebar\"),s=t(\"./buttons\");e.exports=function(t){var e=t._fullLayout,r=t._context,l=e._modeBar;if(r.displayModeBar||r.watermark){if(!Array.isArray(r.modeBarButtonsToRemove))throw new Error([\"*modeBarButtonsToRemove* configuration options\",\"must be an array.\"].join(\" \"));if(!Array.isArray(r.modeBarButtonsToAdd))throw new Error([\"*modeBarButtonsToAdd* configuration options\",\"must be an array.\"].join(\" \"));var c,u=r.modeBarButtons;c=Array.isArray(u)&&u.length?function(t){for(var e=0;e<t.length;e++)for(var r=t[e],n=0;n<r.length;n++){var i=r[n];if(\"string\"==typeof i){if(void 0===s[i])throw new Error([\"*modeBarButtons* configuration options\",\"invalid button name\"].join(\" \"));t[e][n]=s[i]}}return t}(u):!r.displayModeBar&&r.watermark?[]:function(t,e,r,o){var l=t._fullLayout,c=t._fullData,u=l._has(\"cartesian\"),f=l._has(\"gl3d\"),h=l._has(\"geo\"),p=l._has(\"pie\"),d=l._has(\"gl2d\"),g=l._has(\"ternary\"),v=l._has(\"mapbox\"),m=l._has(\"polar\"),y=function(t){for(var e=n.list({_fullLayout:t},null,!0),r=0;r<e.length;r++)if(!e[r].fixedrange)return!1;return!0}(l),x=[];function b(t){if(t.length){for(var r=[],n=0;n<t.length;n++){var i=t[n];-1===e.indexOf(i)&&r.push(s[i])}x.push(r)}}var _=[\"toImage\"];o&&_.push(\"sendDataToCloud\");b(_);var w=[],k=[],A=[],M=[];(u||d||p||g)+h+f+v+m>1?(k=[\"toggleHover\"],A=[\"resetViews\"]):h?(w=[\"zoomInGeo\",\"zoomOutGeo\"],k=[\"hoverClosestGeo\"],A=[\"resetGeo\"]):f?(k=[\"hoverClosest3d\"],A=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):v?(k=[\"toggleHover\"],A=[\"resetViewMapbox\"]):k=d?[\"hoverClosestGl2d\"]:p?[\"hoverClosestPie\"]:[\"toggleHover\"];u&&(k=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);!u&&!d||y||(w=[\"zoomIn2d\",\"zoomOut2d\",\"autoScale2d\"],\"resetViews\"!==A[0]&&(A=[\"resetScale2d\"]));f?M=[\"zoom3d\",\"pan3d\",\"orbitRotation\",\"tableRotation\"]:(u||d)&&!y||g?M=[\"zoom2d\",\"pan2d\"]:v||h?M=[\"pan2d\"]:m&&(M=[\"zoom2d\"]);(function(t){for(var e=!1,r=0;r<t.length&&!e;r++){var n=t[r];n._module&&n._module.selectPoints&&(a.traceIs(n,\"scatter-like\")?(i.hasMarkers(n)||i.hasText(n))&&(e=!0):a.traceIs(n,\"box-violin\")&&\"all\"!==n.boxpoints&&\"all\"!==n.points||(e=!0))}return e})(c)&&M.push(\"select2d\",\"lasso2d\");return b(M),b(w.concat(A)),b(k),function(t,e){if(e.length)if(Array.isArray(e[0]))for(var r=0;r<e.length;r++)t.push(e[r]);else t.push(e);return t}(x,r)}(t,r.modeBarButtonsToRemove,r.modeBarButtonsToAdd,r.showSendToCloud),l?l.update(t,c):e._modeBar=o(t,c)}else l&&(l.destroy(),delete e._modeBar)}},{\"../../plots/cartesian/axis_ids\":745,\"../../registry\":825,\"../../traces/scatter/subtypes\":1071,\"./buttons\":629,\"./modebar\":632}],632:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../../build/ploticon\"),s=new DOMParser;function l(t){this.container=t.container,this.element=document.createElement(\"div\"),this.update(t.graphInfo,t.buttons),this.container.appendChild(this.element)}var c=l.prototype;c.update=function(t,e){this.graphInfo=t;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i=\"modebar-\"+n._uid;this.element.setAttribute(\"id\",i),this._uid=i,this.element.className=\"modebar\",\"hover\"===r.displayModeBar&&(this.element.className+=\" modebar--hover ease-bg\"),\"v\"===n.modebar.orientation&&(this.element.className+=\" vertical\",e=e.reverse());var o=n.modebar,s=\"hover\"===r.displayModeBar?\".js-plotly-plot .plotly:hover \":\"\";a.deleteRelatedStyleRule(i),a.addRelatedStyleRule(i,s+\"#\"+i,\"background-color: \"+o.bgcolor),a.addRelatedStyleRule(i,\"#\"+i+\" .modebar-btn .icon path\",\"fill: \"+o.color),a.addRelatedStyleRule(i,\"#\"+i+\" .modebar-btn:hover .icon path\",\"fill: \"+o.activecolor),a.addRelatedStyleRule(i,\"#\"+i+\" .modebar-btn.active .icon path\",\"fill: \"+o.activecolor);var l=!this.hasButtons(e),c=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(l||c||u)&&(this.removeAllButtons(),this.updateButtons(e),r.watermark||r.displaylogo)){var f=this.getLogo();r.watermark&&(f.className=f.className+\" watermark\"),\"v\"===n.modebar.orientation?this.element.insertBefore(f,this.element.childNodes[0]):this.element.appendChild(f),this.hasLogo=!0}this.updateActiveButton()},c.updateButtons=function(t){var e=this;this.buttons=t,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(t){var r=e.createGroup();t.forEach(function(t){var n=t.name;if(!n)throw new Error(\"must provide button 'name' in button config\");if(-1!==e.buttonsNames.indexOf(n))throw new Error(\"button name '\"+n+\"' is taken\");e.buttonsNames.push(n);var i=e.createButton(t);e.buttonElements.push(i),r.appendChild(i)}),e.element.appendChild(r)})},c.createGroup=function(){var t=document.createElement(\"div\");return t.className=\"modebar-group\",t},c.createButton=function(t){var e=this,r=document.createElement(\"a\");r.setAttribute(\"rel\",\"tooltip\"),r.className=\"modebar-btn\";var i=t.title;void 0===i?i=t.name:\"function\"==typeof i&&(i=i(this.graphInfo)),(i||0===i)&&r.setAttribute(\"data-title\",i),void 0!==t.attr&&r.setAttribute(\"data-attr\",t.attr);var a=t.val;if(void 0!==a&&(\"function\"==typeof a&&(a=a(this.graphInfo)),r.setAttribute(\"data-val\",a)),\"function\"!=typeof t.click)throw new Error(\"must provide button 'click' function in button config\");r.addEventListener(\"click\",function(r){t.click(e.graphInfo,r),e.updateActiveButton(r.currentTarget)}),r.setAttribute(\"data-toggle\",t.toggle||!1),t.toggle&&n.select(r).classed(\"active\",!0);var s=t.icon;return\"function\"==typeof s?r.appendChild(s()):r.appendChild(this.createIcon(s||o.question)),r.setAttribute(\"data-gravity\",t.gravity||\"n\"),r},c.createIcon=function(t){var e,r=i(t.height)?Number(t.height):t.ascent-t.descent,n=\"http://www.w3.org/2000/svg\";if(t.path){(e=document.createElementNS(n,\"svg\")).setAttribute(\"viewBox\",[0,0,t.width,r].join(\" \")),e.setAttribute(\"class\",\"icon\");var a=document.createElementNS(n,\"path\");a.setAttribute(\"d\",t.path),t.transform?a.setAttribute(\"transform\",t.transform):void 0!==t.ascent&&a.setAttribute(\"transform\",\"matrix(1 0 0 -1 0 \"+t.ascent+\")\"),e.appendChild(a)}t.svg&&(e=s.parseFromString(t.svg,\"application/xml\").childNodes[0]);return e.setAttribute(\"height\",\"1em\"),e.setAttribute(\"width\",\"1em\"),e},c.updateActiveButton=function(t){var e=this.graphInfo._fullLayout,r=void 0!==t?t.getAttribute(\"data-attr\"):null;this.buttonElements.forEach(function(t){var i=t.getAttribute(\"data-val\")||!0,o=t.getAttribute(\"data-attr\"),s=\"true\"===t.getAttribute(\"data-toggle\"),l=n.select(t);if(s)o===r&&l.classed(\"active\",!l.classed(\"active\"));else{var c=null===o?o:a.nestedProperty(e,o).get();l.classed(\"active\",c===i)}})},c.hasButtons=function(t){var e=this.buttons;if(!e)return!1;if(t.length!==e.length)return!1;for(var r=0;r<t.length;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;n<t[r].length;n++)if(t[r][n].name!==e[r][n].name)return!1}return!0},c.getLogo=function(){var t=this.createGroup(),e=document.createElement(\"a\");return e.href=\"https://plot.ly/\",e.target=\"_blank\",e.setAttribute(\"data-title\",a._(this.graphInfo,\"Produced with Plotly\")),e.className=\"modebar-btn plotlyjsicon modebar-btn--logo\",e.appendChild(this.createIcon(o.newplotlylogo)),t.appendChild(e),t},c.removeAllButtons=function(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.hasLogo=!1},c.destroy=function(){a.removeElement(this.container.querySelector(\".modebar\")),a.deleteRelatedStyleRule(this._uid)},e.exports=function(t,e){var r=t._fullLayout,i=new l({graphInfo:t,container:r._paperdiv.node(),buttons:e});return r._privateplot&&n.select(i.element).append(\"span\").classed(\"badge-private float--left\",!0).text(\"PRIVATE\"),i}},{\"../../../build/ploticon\":2,\"../../lib\":694,d3:149,\"fast-isnumeric\":215}],633:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=(0,t(\"../../plot_api/plot_template\").templatedArray)(\"button\",{visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},step:{valType:\"enumerated\",values:[\"month\",\"year\",\"day\",\"hour\",\"minute\",\"second\",\"all\"],dflt:\"month\",editType:\"plot\"},stepmode:{valType:\"enumerated\",values:[\"backward\",\"todate\"],dflt:\"backward\",editType:\"plot\"},count:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},label:{valType:\"string\",editType:\"plot\"},editType:\"plot\"});e.exports={visible:{valType:\"boolean\",editType:\"plot\"},buttons:a,x:{valType:\"number\",min:-2,max:3,editType:\"plot\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"left\",editType:\"plot\"},y:{valType:\"number\",min:-2,max:3,editType:\"plot\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"bottom\",editType:\"plot\"},font:n({editType:\"plot\"}),bgcolor:{valType:\"color\",dflt:i.lightLine,editType:\"plot\"},activecolor:{valType:\"color\",editType:\"plot\"},bordercolor:{valType:\"color\",dflt:i.defaultLine,editType:\"plot\"},borderwidth:{valType:\"number\",min:0,dflt:0,editType:\"plot\"},editType:\"plot\"}},{\"../../plot_api/plot_template\":732,\"../../plots/font_attributes\":769,\"../color/attributes\":570}],634:[function(t,e,r){\"use strict\";e.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}},{}],635:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"../../plot_api/plot_template\"),o=t(\"../../plots/array_container_defaults\"),s=t(\"./attributes\"),l=t(\"./constants\");function c(t,e,r,i){var a=i.calendar;function o(r,i){return n.coerce(t,e,s.buttons,r,i)}if(o(\"visible\")){var l=o(\"step\");\"all\"!==l&&(!a||\"gregorian\"===a||\"month\"!==l&&\"year\"!==l?o(\"stepmode\"):e.stepmode=\"backward\",o(\"count\")),o(\"label\")}}e.exports=function(t,e,r,u,f){var h=t.rangeselector||{},p=a.newContainer(e,\"rangeselector\");function d(t,e){return n.coerce(h,p,s,t,e)}if(d(\"visible\",o(h,p,{name:\"buttons\",handleItemDefaults:c,calendar:f}).length>0)){var g=function(t,e,r){for(var n=r.filter(function(r){return e[r].anchor===t._id}),i=0,a=0;a<n.length;a++){var o=e[n[a]].domain;o&&(i=Math.max(o[1],i))}return[t.domain[0],i+l.yPad]}(e,r,u);d(\"x\",g[0]),d(\"y\",g[1]),n.noneOrAll(t,e,[\"x\",\"y\"]),d(\"xanchor\"),d(\"yanchor\"),n.coerceFont(d,\"font\",r.font);var v=d(\"bgcolor\");d(\"activecolor\",i.contrast(v,l.lightAmount,l.darkAmount)),d(\"bordercolor\"),d(\"borderwidth\")}}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../plots/array_container_defaults\":738,\"../color\":571,\"./attributes\":633,\"./constants\":634}],636:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../plots/plots\"),o=t(\"../color\"),s=t(\"../drawing\"),l=t(\"../../lib\"),c=t(\"../../lib/svg_text_utils\"),u=t(\"../../plots/cartesian/axis_ids\"),f=t(\"../../constants/alignment\"),h=f.LINE_SPACING,p=f.FROM_TL,d=f.FROM_BR,g=t(\"./constants\"),v=t(\"./get_update_object\");function m(t){return t._id}function y(t,e,r){var n=l.ensureSingle(t,\"rect\",\"selector-rect\",function(t){t.attr(\"shape-rendering\",\"crispEdges\")});n.attr({rx:g.rx,ry:g.ry}),n.call(o.stroke,e.bordercolor).call(o.fill,function(t,e){return e._isActive||e._isHovered?t.activecolor:t.bgcolor}(e,r)).style(\"stroke-width\",e.borderwidth+\"px\")}function x(t,e,r,n){var i;l.ensureSingle(t,\"text\",\"selector-text\",function(t){t.classed(\"user-select-none\",!0).attr(\"text-anchor\",\"middle\")}).call(s.font,e.font).text((i=r,i.label?i.label:\"all\"===i.step?\"all\":i.count+i.step.charAt(0))).call(function(t){c.convertToTspans(t,n)})}e.exports=function(t){var e=t._fullLayout._infolayer.selectAll(\".rangeselector\").data(function(t){for(var e=u.list(t,\"x\",!0),r=[],n=0;n<e.length;n++){var i=e[n];i.rangeselector&&i.rangeselector.visible&&r.push(i)}return r}(t),m);e.enter().append(\"g\").classed(\"rangeselector\",!0),e.exit().remove(),e.style({cursor:\"pointer\",\"pointer-events\":\"all\"}),e.each(function(e){var r=n.select(this),o=e,u=o.rangeselector,f=r.selectAll(\"g.button\").data(l.filterVisible(u.buttons));f.enter().append(\"g\").classed(\"button\",!0),f.exit().remove(),f.each(function(e){var r=n.select(this),a=v(o,e);e._isActive=function(t,e,r){if(\"all\"===e.step)return!0===t.autorange;var n=Object.keys(r);return t.range[0]===r[n[0]]&&t.range[1]===r[n[1]]}(o,e,a),r.call(y,u,e),r.call(x,u,e,t),r.on(\"click\",function(){t._dragged||i.call(\"_guiRelayout\",t,a)}),r.on(\"mouseover\",function(){e._isHovered=!0,r.call(y,u,e)}),r.on(\"mouseout\",function(){e._isHovered=!1,r.call(y,u,e)})}),function(t,e,r,i,o){var u=0,f=0,v=r.borderwidth;e.each(function(){var t=n.select(this),e=t.select(\".selector-text\"),i=r.font.size*h,a=Math.max(i*c.lineCount(e),16)+3;f=Math.max(f,a)}),e.each(function(){var t=n.select(this),e=t.select(\".selector-rect\"),i=t.select(\".selector-text\"),a=i.node()&&s.bBox(i.node()).width,o=r.font.size*h,l=c.lineCount(i),p=Math.max(a+10,g.minButtonWidth);t.attr(\"transform\",\"translate(\"+(v+u)+\",\"+v+\")\"),e.attr({x:0,y:0,width:p,height:f}),c.positionText(i,p/2,f/2-(l-1)*o/2+3),u+=p+5});var m=t._fullLayout._size,y=m.l+m.w*r.x,x=m.t+m.h*(1-r.y),b=\"left\";l.isRightAnchor(r)&&(y-=u,b=\"right\");l.isCenterAnchor(r)&&(y-=u/2,b=\"center\");var _=\"top\";l.isBottomAnchor(r)&&(x-=f,_=\"bottom\");l.isMiddleAnchor(r)&&(x-=f/2,_=\"middle\");u=Math.ceil(u),f=Math.ceil(f),y=Math.round(y),x=Math.round(x),a.autoMargin(t,i+\"-range-selector\",{x:r.x,y:r.y,l:u*p[b],r:u*d[b],b:f*d[_],t:f*p[_]}),o.attr(\"transform\",\"translate(\"+y+\",\"+x+\")\")}(t,f,u,o._name,r)})}},{\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plots/cartesian/axis_ids\":745,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../drawing\":592,\"./constants\":634,\"./get_update_object\":637,d3:149}],637:[function(t,e,r){\"use strict\";var n=t(\"d3\");e.exports=function(t,e){var r=t._name,i={};if(\"all\"===e.step)i[r+\".autorange\"]=!0;else{var a=function(t,e){var r,i=t.range,a=new Date(t.r2l(i[1])),o=e.step,s=e.count;switch(e.stepmode){case\"backward\":r=t.l2r(+n.time[o].utc.offset(a,-s));break;case\"todate\":var l=n.time[o].utc.offset(a,-s);r=t.l2r(+n.time[o].utc.ceil(l))}var c=i[1];return[r,c]}(t,e);i[r+\".range[0]\"]=a[0],i[r+\".range[1]\"]=a[1]}return i}},{d3:149}],638:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"rangeselector\",schema:{subplots:{xaxis:{rangeselector:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),draw:t(\"./draw\")}},{\"./attributes\":633,\"./defaults\":635,\"./draw\":636}],639:[function(t,e,r){\"use strict\";var n=t(\"../color/attributes\");e.exports={bgcolor:{valType:\"color\",dflt:n.background,editType:\"plot\"},bordercolor:{valType:\"color\",dflt:n.defaultLine,editType:\"plot\"},borderwidth:{valType:\"integer\",dflt:0,min:0,editType:\"plot\"},autorange:{valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:{\"range[0]\":void 0,\"range[1]\":void 0}},range:{valType:\"info_array\",items:[{valType:\"any\",editType:\"calc\",impliedEdits:{\"^autorange\":!1}},{valType:\"any\",editType:\"calc\",impliedEdits:{\"^autorange\":!1}}],editType:\"calc\",impliedEdits:{autorange:!1}},thickness:{valType:\"number\",dflt:.15,min:0,max:1,editType:\"plot\"},visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"}},{\"../color/attributes\":570}],640:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axis_ids\").list,i=t(\"../../plots/cartesian/autorange\").getAutoRange,a=t(\"./constants\");e.exports=function(t){for(var e=n(t,\"x\",!0),r=0;r<e.length;r++){var o=e[r],s=o[a.name];s&&s.visible&&s.autorange&&(s._input.autorange=!0,s._input.range=s.range=i(t,o))}}},{\"../../plots/cartesian/autorange\":741,\"../../plots/cartesian/axis_ids\":745,\"./constants\":641}],641:[function(t,e,r){\"use strict\";e.exports={name:\"rangeslider\",containerClassName:\"rangeslider-container\",bgClassName:\"rangeslider-bg\",rangePlotClassName:\"rangeslider-rangeplot\",maskMinClassName:\"rangeslider-mask-min\",maskMaxClassName:\"rangeslider-mask-max\",slideBoxClassName:\"rangeslider-slidebox\",grabberMinClassName:\"rangeslider-grabber-min\",grabAreaMinClassName:\"rangeslider-grabarea-min\",handleMinClassName:\"rangeslider-handle-min\",grabberMaxClassName:\"rangeslider-grabber-max\",grabAreaMaxClassName:\"rangeslider-grabarea-max\",handleMaxClassName:\"rangeslider-handle-max\",maskMinOppAxisClassName:\"rangeslider-mask-min-opp-axis\",maskMaxOppAxisClassName:\"rangeslider-mask-max-opp-axis\",maskColor:\"rgba(0,0,0,0.4)\",maskOppAxisColor:\"rgba(0,0,0,0.2)\",slideBoxFill:\"transparent\",slideBoxCursor:\"ew-resize\",grabAreaFill:\"transparent\",grabAreaCursor:\"col-resize\",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}},{}],642:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plot_api/plot_template\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"./attributes\"),s=t(\"./oppaxis_attributes\");e.exports=function(t,e,r){var l=t[r],c=e[r];if(l.rangeslider||e._requestRangeslider[c._id]){n.isPlainObject(l.rangeslider)||(l.rangeslider={});var u,f,h=l.rangeslider,p=i.newContainer(c,\"rangeslider\");if(_(\"visible\")){_(\"bgcolor\",e.plot_bgcolor),_(\"bordercolor\"),_(\"borderwidth\"),_(\"thickness\"),_(\"autorange\",!c.isValidRange(h.range)),_(\"range\");var d=e._subplots;if(d)for(var g=d.cartesian.filter(function(t){return t.substr(0,t.indexOf(\"y\"))===a.name2id(r)}).map(function(t){return t.substr(t.indexOf(\"y\"),t.length)}),v=n.simpleMap(g,a.id2name),m=0;m<v.length;m++){var y=v[m];u=h[y]||{},f=i.newContainer(p,y,\"yaxis\");var x,b=e[y];u.range&&b.isValidRange(u.range)&&(x=\"fixed\"),\"match\"!==w(\"rangemode\",x)&&w(\"range\",b.range.slice())}p._input=h}}function _(t,e){return n.coerce(h,p,o,t,e)}function w(t,e){return n.coerce(u,f,s,t,e)}}},{\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/axis_ids\":745,\"./attributes\":639,\"./oppaxis_attributes\":646}],643:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../plots/plots\"),o=t(\"../../lib\"),s=t(\"../drawing\"),l=t(\"../color\"),c=t(\"../titles\"),u=t(\"../../plots/cartesian\"),f=t(\"../../plots/cartesian/axis_ids\"),h=t(\"../dragelement\"),p=t(\"../../lib/setcursor\"),d=t(\"./constants\");function g(t,e,r,n){var i=o.ensureSingle(t,\"rect\",d.bgClassName,function(t){t.attr({x:0,y:0,\"shape-rendering\":\"crispEdges\"})}),a=n.borderwidth%2==0?n.borderwidth:n.borderwidth-1,l=-n._offsetShift,c=s.crispRound(e,n.borderwidth);i.attr({width:n._width+a,height:n._height+a,transform:\"translate(\"+l+\",\"+l+\")\",fill:n.bgcolor,stroke:n.bordercolor,\"stroke-width\":c})}function v(t,e,r,n){var i=e._fullLayout;o.ensureSingleById(i._topdefs,\"clipPath\",n._clipId,function(t){t.append(\"rect\").attr({x:0,y:0})}).select(\"rect\").attr({width:n._width,height:n._height})}function m(t,e,r,i){var l,c=e.calcdata,h=t.selectAll(\"g.\"+d.rangePlotClassName).data(r._subplotsWith,o.identity);h.enter().append(\"g\").attr(\"class\",function(t){return d.rangePlotClassName+\" \"+t}).call(s.setClipUrl,i._clipId,e),h.order(),h.exit().remove(),h.each(function(t,o){var s=n.select(this),h=0===o,p=f.getFromId(e,t,\"y\"),d=p._name,g=i[d],v={data:[],layout:{xaxis:{type:r.type,domain:[0,1],range:i.range.slice(),calendar:r.calendar},width:i._width,height:i._height,margin:{t:0,b:0,l:0,r:0}},_context:e._context};v.layout[d]={type:p.type,domain:[0,1],range:\"match\"!==g.rangemode?g.range.slice():p.range.slice(),calendar:p.calendar},a.supplyDefaults(v);var m=v._fullLayout.xaxis,y=v._fullLayout[d];m.clearCalc(),m.setScale(),y.clearCalc(),y.setScale();var x={id:t,plotgroup:s,xaxis:m,yaxis:y,isRangePlot:!0};h?l=x:(x.mainplot=\"xy\",x.mainplotinfo=l),u.rangePlot(e,x,function(t,e){for(var r=[],n=0;n<t.length;n++){var i=t[n],a=i[0].trace;a.xaxis+a.yaxis===e&&r.push(i)}return r}(c,t))})}function y(t,e,r,n,i){(o.ensureSingle(t,\"rect\",d.maskMinClassName,function(t){t.attr({x:0,y:0,\"shape-rendering\":\"crispEdges\"})}).attr(\"height\",n._height).call(l.fill,d.maskColor),o.ensureSingle(t,\"rect\",d.maskMaxClassName,function(t){t.attr({y:0,\"shape-rendering\":\"crispEdges\"})}).attr(\"height\",n._height).call(l.fill,d.maskColor),\"match\"!==i.rangemode)&&(o.ensureSingle(t,\"rect\",d.maskMinOppAxisClassName,function(t){t.attr({y:0,\"shape-rendering\":\"crispEdges\"})}).attr(\"width\",n._width).call(l.fill,d.maskOppAxisColor),o.ensureSingle(t,\"rect\",d.maskMaxOppAxisClassName,function(t){t.attr({y:0,\"shape-rendering\":\"crispEdges\"})}).attr(\"width\",n._width).style(\"border-top\",d.maskOppBorder).call(l.fill,d.maskOppAxisColor))}function x(t,e,r,n){e._context.staticPlot||o.ensureSingle(t,\"rect\",d.slideBoxClassName,function(t){t.attr({y:0,cursor:d.slideBoxCursor,\"shape-rendering\":\"crispEdges\"})}).attr({height:n._height,fill:d.slideBoxFill})}function b(t,e,r,n){var i=o.ensureSingle(t,\"g\",d.grabberMinClassName),a=o.ensureSingle(t,\"g\",d.grabberMaxClassName),s={x:0,width:d.handleWidth,rx:d.handleRadius,fill:l.background,stroke:l.defaultLine,\"stroke-width\":d.handleStrokeWidth,\"shape-rendering\":\"crispEdges\"},c={y:Math.round(n._height/4),height:Math.round(n._height/2)};if(o.ensureSingle(i,\"rect\",d.handleMinClassName,function(t){t.attr(s)}).attr(c),o.ensureSingle(a,\"rect\",d.handleMaxClassName,function(t){t.attr(s)}).attr(c),!e._context.staticPlot){var u={width:d.grabAreaWidth,x:0,y:0,fill:d.grabAreaFill,cursor:d.grabAreaCursor};o.ensureSingle(i,\"rect\",d.grabAreaMinClassName,function(t){t.attr(u)}).attr(\"height\",n._height),o.ensureSingle(a,\"rect\",d.grabAreaMaxClassName,function(t){t.attr(u)}).attr(\"height\",n._height)}}e.exports=function(t){for(var e=t._fullLayout,r=e._rangeSliderData,a=0;a<r.length;a++){var s=r[a][d.name];s._clipId=s._id+\"-\"+e._uid}var l=e._infolayer.selectAll(\"g.\"+d.containerClassName).data(r,function(t){return t._name});l.exit().each(function(t){var r=t[d.name];e._topdefs.select(\"#\"+r._clipId).remove()}).remove(),0!==r.length&&(l.enter().append(\"g\").classed(d.containerClassName,!0).attr(\"pointer-events\",\"all\"),l.each(function(r){var a=n.select(this),s=r[d.name],l=e[f.id2name(r.anchor)],u=s[f.id2name(r.anchor)];if(s.range){var _,w=o.simpleMap(s.range,r.r2l),k=o.simpleMap(r.range,r.r2l);_=k[0]<k[1]?[Math.min(w[0],k[0]),Math.max(w[1],k[1])]:[Math.max(w[0],k[0]),Math.min(w[1],k[1])],s.range=s._input.range=o.simpleMap(_,r.l2r)}r.cleanRange(\"rangeslider.range\");var A=e.margin,M=e._size,T=r.domain,S=s._tickHeight,C=s._oppBottom;s._width=M.w*(T[1]-T[0]);var E=Math.round(A.l+M.w*T[0]),L=Math.round(M.t+M.h*(1-C)+S+s._offsetShift+d.extraPad);a.attr(\"transform\",\"translate(\"+E+\",\"+L+\")\");var z=r.r2l(s.range[0]),O=r.r2l(s.range[1]),I=O-z;if(s.p2d=function(t){return t/s._width*I+z},s.d2p=function(t){return(t-z)/I*s._width},s._rl=[z,O],\"match\"!==u.rangemode){var D=l.r2l(u.range[0]),P=l.r2l(u.range[1])-D;s.d2pOppAxis=function(t){return(t-D)/P*s._height}}a.call(g,t,r,s).call(v,t,r,s).call(m,t,r,s).call(y,t,r,s,u).call(x,t,r,s).call(b,t,r,s),function(t,e,r,a){var s=t.select(\"rect.\"+d.slideBoxClassName).node(),l=t.select(\"rect.\"+d.grabAreaMinClassName).node(),c=t.select(\"rect.\"+d.grabAreaMaxClassName).node();t.on(\"mousedown\",function(){var u=n.event,f=u.target,d=u.clientX,g=d-t.node().getBoundingClientRect().left,v=a.d2p(r._rl[0]),m=a.d2p(r._rl[1]),y=h.coverSlip();function x(t){var u,h,x,b=+t.clientX-d;switch(f){case s:x=\"ew-resize\",u=v+b,h=m+b;break;case l:x=\"col-resize\",u=v+b,h=m;break;case c:x=\"col-resize\",u=v,h=m+b;break;default:x=\"ew-resize\",u=g,h=g+b}if(h<u){var _=h;h=u,u=_}a._pixelMin=u,a._pixelMax=h,p(n.select(y),x),function(t,e,r,n){function a(t){return r.l2r(o.constrain(t,n._rl[0],n._rl[1]))}var s=a(n.p2d(n._pixelMin)),l=a(n.p2d(n._pixelMax));window.requestAnimationFrame(function(){i.call(\"_guiRelayout\",e,r._name+\".range\",[s,l])})}(0,e,r,a)}y.addEventListener(\"mousemove\",x),y.addEventListener(\"mouseup\",function t(){y.removeEventListener(\"mousemove\",x);y.removeEventListener(\"mouseup\",t);o.removeElement(y)})})}(a,t,r,s),function(t,e,r,n,i,a){var s=d.handleWidth/2;function l(t){return o.constrain(t,0,n._width)}function c(t){return o.constrain(t,0,n._height)}function u(t){return o.constrain(t,-s,n._width+s)}var f=l(n.d2p(r._rl[0])),h=l(n.d2p(r._rl[1]));if(t.select(\"rect.\"+d.slideBoxClassName).attr(\"x\",f).attr(\"width\",h-f),t.select(\"rect.\"+d.maskMinClassName).attr(\"width\",f),t.select(\"rect.\"+d.maskMaxClassName).attr(\"x\",h).attr(\"width\",n._width-h),\"match\"!==a.rangemode){var p=n._height-c(n.d2pOppAxis(i._rl[1])),g=n._height-c(n.d2pOppAxis(i._rl[0]));t.select(\"rect.\"+d.maskMinOppAxisClassName).attr(\"x\",f).attr(\"height\",p).attr(\"width\",h-f),t.select(\"rect.\"+d.maskMaxOppAxisClassName).attr(\"x\",f).attr(\"y\",g).attr(\"height\",n._height-g).attr(\"width\",h-f),t.select(\"rect.\"+d.slideBoxClassName).attr(\"y\",p).attr(\"height\",g-p)}var v=Math.round(u(f-s))-.5,m=Math.round(u(h-s))+.5;t.select(\"g.\"+d.grabberMinClassName).attr(\"transform\",\"translate(\"+v+\",0.5)\"),t.select(\"g.\"+d.grabberMaxClassName).attr(\"transform\",\"translate(\"+m+\",0.5)\")}(a,0,r,s,l,u),\"bottom\"===r.side&&c.draw(t,r._id+\"title\",{propContainer:r,propName:r._name+\".title\",placeholder:e._dfltTitle.x,attributes:{x:r._offset+r._length/2,y:L+s._height+s._offsetShift+10+1.5*r.title.font.size,\"text-anchor\":\"middle\"}})}))}},{\"../../lib\":694,\"../../lib/setcursor\":714,\"../../plots/cartesian\":754,\"../../plots/cartesian/axis_ids\":745,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"../titles\":659,\"./constants\":641,d3:149}],644:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axis_ids\"),i=t(\"./constants\"),a=i.name;function o(t){var e=t&&t[a];return e&&e.visible}r.isVisible=o,r.makeData=function(t){var e=n.list({_fullLayout:t},\"x\",!0),r=t.margin,i=[];if(!t._has(\"gl2d\"))for(var s=0;s<e.length;s++){var l=e[s];if(o(l)){i.push(l);var c=l[a];c._id=a+l._id,c._height=(t.height-r.b-r.t)*c.thickness,c._offsetShift=Math.floor(c.borderwidth/2)}}t._rangeSliderData=i},r.autoMarginOpts=function(t,e){for(var r=e[a],o=1/0,s=e._counterAxes,l=0;l<s.length;l++){var c=s[l],u=n.getFromId(t,c);o=Math.min(o,u.domain[0])}r._oppBottom=o;var f=\"bottom\"===e.side&&e._boundingBox.height||0;return r._tickHeight=f,{x:0,y:o,l:0,r:0,t:0,b:r._height+t._fullLayout.margin.b+f,pad:i.extraPad+2*r._offsetShift}}},{\"../../plots/cartesian/axis_ids\":745,\"./constants\":641}],645:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"./oppaxis_attributes\"),o=t(\"./helpers\");e.exports={moduleType:\"component\",name:\"rangeslider\",schema:{subplots:{xaxis:{rangeslider:n.extendFlat({},i,{yaxis:a})}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),calcAutorange:t(\"./calc_autorange\"),draw:t(\"./draw\"),isVisible:o.isVisible,makeData:o.makeData,autoMarginOpts:o.autoMarginOpts}},{\"../../lib\":694,\"./attributes\":639,\"./calc_autorange\":640,\"./defaults\":642,\"./draw\":643,\"./helpers\":644,\"./oppaxis_attributes\":646}],646:[function(t,e,r){\"use strict\";e.exports={_isSubplotObj:!0,rangemode:{valType:\"enumerated\",values:[\"auto\",\"fixed\",\"match\"],dflt:\"match\",editType:\"calc\"},range:{valType:\"info_array\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},editType:\"calc\"}},{}],647:[function(t,e,r){\"use strict\";var n=t(\"../annotations/attributes\"),i=t(\"../../traces/scatter/attributes\").line,a=t(\"../drawing/attributes\").dash,o=t(\"../../lib/extend\").extendFlat,s=t(\"../../plot_api/plot_template\").templatedArray;e.exports=s(\"shape\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},type:{valType:\"enumerated\",values:[\"circle\",\"rect\",\"path\",\"line\"],editType:\"calc+arraydraw\"},layer:{valType:\"enumerated\",values:[\"below\",\"above\"],dflt:\"above\",editType:\"arraydraw\"},xref:o({},n.xref,{}),xsizemode:{valType:\"enumerated\",values:[\"scaled\",\"pixel\"],dflt:\"scaled\",editType:\"calc+arraydraw\"},xanchor:{valType:\"any\",editType:\"calc+arraydraw\"},x0:{valType:\"any\",editType:\"calc+arraydraw\"},x1:{valType:\"any\",editType:\"calc+arraydraw\"},yref:o({},n.yref,{}),ysizemode:{valType:\"enumerated\",values:[\"scaled\",\"pixel\"],dflt:\"scaled\",editType:\"calc+arraydraw\"},yanchor:{valType:\"any\",editType:\"calc+arraydraw\"},y0:{valType:\"any\",editType:\"calc+arraydraw\"},y1:{valType:\"any\",editType:\"calc+arraydraw\"},path:{valType:\"string\",editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},line:{color:o({},i.color,{editType:\"arraydraw\"}),width:o({},i.width,{editType:\"calc+arraydraw\"}),dash:o({},a,{editType:\"arraydraw\"}),editType:\"calc+arraydraw\"},fillcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},editType:\"arraydraw\"})},{\"../../lib/extend\":684,\"../../plot_api/plot_template\":732,\"../../traces/scatter/attributes\":1047,\"../annotations/attributes\":554,\"../drawing/attributes\":591}],648:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./constants\"),o=t(\"./helpers\");function s(t){return c(t.line.width,t.xsizemode,t.x0,t.x1,t.path,!1)}function l(t){return c(t.line.width,t.ysizemode,t.y0,t.y1,t.path,!0)}function c(t,e,r,i,s,l){var c=t/2,u=l;if(\"pixel\"===e){var f=s?o.extractPathCoords(s,l?a.paramIsY:a.paramIsX):[r,i],h=n.aggNums(Math.max,null,f),p=n.aggNums(Math.min,null,f),d=p<0?Math.abs(p)+c:c,g=h>0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;l<d.length;l++)void 0!==(c=i[d[l].charAt(0)].drawn)&&(!(u=d[l].substr(1).match(a.paramRE))||u.length<c||((f=s(u[c]))<h&&(h=f),f>p&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;o<r.length;o++){var c,f,h=r[o];if(h._extremes={},\"paper\"!==h.xref){var p=\"pixel\"===h.xsizemode?h.xanchor:h.x0,d=\"pixel\"===h.xsizemode?h.xanchor:h.x1;(f=u(c=i.getFromId(t,h.xref),p,d,h.path,a.paramIsX))&&(h._extremes[c._id]=i.findExtremes(c,f,s(h)))}if(\"paper\"!==h.yref){var g=\"pixel\"===h.ysizemode?h.yanchor:h.y0,v=\"pixel\"===h.ysizemode?h.yanchor:h.y1;(f=u(c=i.getFromId(t,h.yref),g,v,h.path,a.paramIsY))&&(h._extremes[c._id]=i.findExtremes(c,f,l(h)))}}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"./constants\":649,\"./helpers\":652}],649:[function(t,e,r){\"use strict\";e.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}},{}],650:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/array_container_defaults\"),o=t(\"./attributes\"),s=t(\"./helpers\");function l(t,e,r){function a(r,i){return n.coerce(t,e,o,r,i)}if(a(\"visible\")){a(\"layer\"),a(\"opacity\"),a(\"fillcolor\"),a(\"line.color\"),a(\"line.width\"),a(\"line.dash\");for(var l=a(\"type\",t.path?\"path\":\"rect\"),c=a(\"xsizemode\"),u=a(\"ysizemode\"),f=[\"x\",\"y\"],h=0;h<2;h++){var p,d,g,v=f[h],m=v+\"anchor\",y=\"x\"===v?c:u,x={_fullLayout:r},b=i.coerceRef(t,e,x,v,\"\",\"paper\");if(\"paper\"!==b?((p=i.getFromId(x,b))._shapeIndices.push(e._index),g=s.rangeToShapePosition(p),d=s.shapePositionToRange(p)):d=g=n.identity,\"path\"!==l){var _=v+\"0\",w=v+\"1\",k=t[_],A=t[w];t[_]=d(t[_],!0),t[w]=d(t[w],!0),\"pixel\"===y?(a(_,0),a(w,10)):(i.coercePosition(e,x,a,b,_,.25),i.coercePosition(e,x,a,b,w,.75)),e[_]=g(e[_]),e[w]=g(e[w]),t[_]=k,t[w]=A}if(\"pixel\"===y){var M=t[m];t[m]=d(t[m],!0),i.coercePosition(e,x,a,b,m,.25),e[m]=g(e[m]),t[m]=M}}\"path\"===l?a(\"path\"):n.noneOrAll(t,e,[\"x0\",\"x1\",\"y0\",\"y1\"])}}e.exports=function(t,e){a(t,e,{name:\"shapes\",handleItemDefaults:l})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/cartesian/axes\":742,\"./attributes\":647,\"./helpers\":652}],651:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../color\"),s=t(\"../drawing\"),l=t(\"../../plot_api/plot_template\").arrayEditor,c=t(\"../dragelement\"),u=t(\"../../lib/setcursor\"),f=t(\"./constants\"),h=t(\"./helpers\");function p(t,e){t._fullLayout._paperdiv.selectAll('.shapelayer [data-index=\"'+e+'\"]').remove();var r=t._fullLayout.shapes[e]||{};if(r._input&&!1!==r.visible)if(\"below\"!==r.layer)m(t._fullLayout._shapeUpperLayer);else if(\"paper\"===r.xref||\"paper\"===r.yref)m(t._fullLayout._shapeLowerLayer);else{var p=t._fullLayout._plots[r.xref+r.yref];if(p)m((p.mainplotinfo||p).shapelayer);else m(t._fullLayout._shapeLowerLayer)}function m(p){var m={\"data-index\":e,\"fill-rule\":\"evenodd\",d:g(t,r)},y=r.line.width?r.line.color:\"rgba(0,0,0,0)\",x=p.append(\"path\").attr(m).style(\"opacity\",r.opacity).call(o.stroke,y).call(o.fill,r.fillcolor).call(s.dashLine,r.line.dash,r.line.width);d(x,t,r),t._context.edits.shapePosition&&function(t,e,r,o,p){var m,y,x,b,_,w,k,A,M,T,S,C,E,L,z,O,I=10,D=10,P=\"pixel\"===r.xsizemode,R=\"pixel\"===r.ysizemode,F=\"line\"===r.type,B=\"path\"===r.type,N=l(t.layout,\"shapes\",r),j=N.modifyItem,V=a.getFromId(t,r.xref),U=a.getFromId(t,r.yref),q=h.getDataToPixel(t,V),H=h.getDataToPixel(t,U,!0),G=h.getPixelToData(t,V),W=h.getPixelToData(t,U,!0),Y=F?function(){var t=Math.max(r.line.width,10),n=p.append(\"g\").attr(\"data-index\",o);n.append(\"path\").attr(\"d\",e.attr(\"d\")).style({cursor:\"move\",\"stroke-width\":t,\"stroke-opacity\":\"0\"});var i={\"fill-opacity\":\"0\"},a=t/2>10?t/2:10;return n.append(\"circle\").attr({\"data-line-point\":\"start-point\",cx:P?q(r.xanchor)+r.x0:q(r.x0),cy:R?H(r.yanchor)-r.y0:H(r.y0),r:a}).style(i).classed(\"cursor-grab\",!0),n.append(\"circle\").attr({\"data-line-point\":\"end-point\",cx:P?q(r.xanchor)+r.x1:q(r.x1),cy:R?H(r.yanchor)-r.y1:H(r.y1),r:a}).style(i).classed(\"cursor-grab\",!0),n}():e,X={element:Y.node(),gd:t,prepFn:function(n){P&&(_=q(r.xanchor));R&&(w=H(r.yanchor));\"path\"===r.type?z=r.path:(m=P?r.x0:q(r.x0),y=R?r.y0:H(r.y0),x=P?r.x1:q(r.x1),b=R?r.y1:H(r.y1));m<x?(M=m,E=\"x0\",T=x,L=\"x1\"):(M=x,E=\"x1\",T=m,L=\"x0\");!R&&y<b||R&&y>b?(k=y,S=\"y0\",A=b,C=\"y1\"):(k=b,S=\"y1\",A=y,C=\"y0\");Z(n),K(p,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),l=a.getFromId(r,i),c=\"\";\"paper\"===n||o.autorange||(c+=n);\"paper\"===i||l.autorange||(c+=i);s.setClipUrl(t,c?\"clip\"+r._fullLayout._uid+c:null,r)}(e,r,t),X.moveFn=\"move\"===O?$:J},doneFn:function(){u(e),Q(p),d(e,t,r),n.call(\"_guiRelayout\",t,N.getUpdateObj())},clickFn:function(){Q(p)}};function Z(t){if(F)O=\"path\"===t.target.tagName?\"move\":\"start-point\"===t.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var r=X.element.getBoundingClientRect(),n=r.right-r.left,i=r.bottom-r.top,a=t.clientX-r.left,o=t.clientY-r.top,s=!B&&n>I&&i>D&&!t.shiftKey?c.getCursor(a/n,1-o/i):\"move\";u(e,s),O=s.split(\"-\")[0]}}function $(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,s=a;P?j(\"xanchor\",r.xanchor=G(_+n)):(o=function(t){return G(q(t)+n)},V&&\"date\"===V.type&&(o=h.encodeDate(o))),R?j(\"yanchor\",r.yanchor=W(w+i)):(s=function(t){return W(H(t)+i)},U&&\"date\"===U.type&&(s=h.encodeDate(s))),j(\"path\",r.path=v(z,o,s))}else P?j(\"xanchor\",r.xanchor=G(_+n)):(j(\"x0\",r.x0=G(m+n)),j(\"x1\",r.x1=G(x+n))),R?j(\"yanchor\",r.yanchor=W(w+i)):(j(\"y0\",r.y0=W(y+i)),j(\"y1\",r.y1=W(b+i)));e.attr(\"d\",g(t,r)),K(p,r)}function J(n,i){if(B){var a=function(t){return t},o=a,s=a;P?j(\"xanchor\",r.xanchor=G(_+n)):(o=function(t){return G(q(t)+n)},V&&\"date\"===V.type&&(o=h.encodeDate(o))),R?j(\"yanchor\",r.yanchor=W(w+i)):(s=function(t){return W(H(t)+i)},U&&\"date\"===U.type&&(s=h.encodeDate(s))),j(\"path\",r.path=v(z,o,s))}else if(F){if(\"resize-over-start-point\"===O){var l=m+n,c=R?y-i:y+i;j(\"x0\",r.x0=P?l:G(l)),j(\"y0\",r.y0=R?c:W(c))}else if(\"resize-over-end-point\"===O){var u=x+n,f=R?b-i:b+i;j(\"x1\",r.x1=P?u:G(u)),j(\"y1\",r.y1=R?f:W(f))}}else{var d=~O.indexOf(\"n\")?k+i:k,N=~O.indexOf(\"s\")?A+i:A,Y=~O.indexOf(\"w\")?M+n:M,X=~O.indexOf(\"e\")?T+n:T;~O.indexOf(\"n\")&&R&&(d=k-i),~O.indexOf(\"s\")&&R&&(N=A-i),(!R&&N-d>D||R&&d-N>D)&&(j(S,r[S]=R?d:W(d)),j(C,r[C]=R?N:W(N))),X-Y>I&&(j(E,r[E]=P?Y:G(Y)),j(L,r[L]=P?X:G(X)))}e.attr(\"d\",g(t,r)),K(p,r)}function K(t,e){(P||R)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=q(P?e.xanchor:i.midRange(r?[e.x0,e.x1]:h.extractPathCoords(e.path,f.paramIsX))),o=H(R?e.yanchor:i.midRange(r?[e.y0,e.y1]:h.extractPathCoords(e.path,f.paramIsY)));if(a=h.roundPositionForSharpStrokeRendering(a,1),o=h.roundPositionForSharpStrokeRendering(o,1),P&&R){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(P){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function Q(t){t.selectAll(\".visual-cue\").remove()}c.init(X),Y.node().onmousemove=Z}(t,x,r,e,p)}}function d(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\");s.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function g(t,e){var r,n,o,s,l,c,u,p,d=e.type,g=a.getFromId(t,e.xref),v=a.getFromId(t,e.yref),m=t._fullLayout._size;if(g?(r=h.shapePositionToRange(g),n=function(t){return g._offset+g.r2p(r(t,!0))}):n=function(t){return m.l+m.w*t},v?(o=h.shapePositionToRange(v),s=function(t){return v._offset+v.r2p(o(t,!0))}):s=function(t){return m.t+m.h*(1-t)},\"path\"===d)return g&&\"date\"===g.type&&(n=h.decodeDate(n)),v&&\"date\"===v.type&&(s=h.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(f.segmentRE,function(t){var n=0,c=t.charAt(0),u=f.paramIsX[c],h=f.paramIsY[c],p=f.numParams[c],d=t.substr(1).replace(f.paramRE,function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):h[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>p&&(t=\"X\"),t});return n>p&&(d=d.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+d})}(e,n,s);if(\"pixel\"===e.xsizemode){var y=n(e.xanchor);l=y+e.x0,c=y+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var x=s(e.yanchor);u=x-e.y0,p=x-e.y1}else u=s(e.y0),p=s(e.y1);if(\"line\"===d)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+p;if(\"rect\"===d)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+p+\"H\"+l+\"Z\";var b=(l+c)/2,_=(u+p)/2,w=Math.abs(b-l),k=Math.abs(_-u),A=\"A\"+w+\",\"+k,M=b+w+\",\"+_;return\"M\"+M+A+\" 0 1,1 \"+(b+\",\"+(_-k))+A+\" 0 0,1 \"+M+\"Z\"}function v(t,e,r){return t.replace(f.segmentRE,function(t){var n=0,i=t.charAt(0),a=f.paramIsX[i],o=f.paramIsY[i],s=f.numParams[i];return i+t.substr(1).replace(f.paramRE,function(t){return n>=s?t:(a[n]?t=e(t):o[n]&&(t=r(t)),n++,t)})})}e.exports={draw:function(t){var e=t._fullLayout;for(var r in e._shapeUpperLayer.selectAll(\"path\").remove(),e._shapeLowerLayer.selectAll(\"path\").remove(),e._plots){var n=e._plots[r].shapelayer;n&&n.selectAll(\"path\").remove()}for(var i=0;i<e.shapes.length;i++)e.shapes[i].visible&&p(t,i)},drawOne:p}},{\"../../lib\":694,\"../../lib/setcursor\":714,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"../color\":571,\"../dragelement\":589,\"../drawing\":592,\"./constants\":649,\"./helpers\":652}],652:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib\");r.rangeToShapePosition=function(t){return\"log\"===t.type?t.r2d:function(t){return t}},r.shapePositionToRange=function(t){return\"log\"===t.type?t.d2r:function(t){return t}},r.decodeDate=function(t){return function(e){return e.replace&&(e=e.replace(\"_\",\" \")),t(e)}},r.encodeDate=function(t){return function(e){return t(e).replace(\" \",\"_\")}},r.extractPathCoords=function(t,e){var r=[];return t.match(n.segmentRE).forEach(function(t){var a=e[t.charAt(0)].drawn;if(void 0!==a){var o=t.substr(1).match(n.paramRE);!o||o.length<a||r.push(i.cleanNumber(o[a]))}}),r},r.getDataToPixel=function(t,e,n){var i,a=t._fullLayout._size;if(e){var o=r.shapePositionToRange(e);i=function(t){return e._offset+e.r2p(o(t,!0))},\"date\"===e.type&&(i=r.decodeDate(i))}else i=n?function(t){return a.t+a.h*(1-t)}:function(t){return a.l+a.w*t};return i},r.getPixelToData=function(t,e,n){var i,a=t._fullLayout._size;if(e){var o=r.rangeToShapePosition(e);i=function(t){return o(e.p2r(t-e._offset))}}else i=n?function(t){return 1-(t-a.t)/a.h}:function(t){return(t-a.l)/a.w};return i},r.roundPositionForSharpStrokeRendering=function(t,e){var r=1===Math.round(e%2),n=Math.round(t);return r?n+.5:n}},{\"../../lib\":694,\"./constants\":649}],653:[function(t,e,r){\"use strict\";var n=t(\"./draw\");e.exports={moduleType:\"component\",name:\"shapes\",layoutAttributes:t(\"./attributes\"),supplyLayoutDefaults:t(\"./defaults\"),includeBasePlot:t(\"../../plots/cartesian/include_components\")(\"shapes\"),calcAutorange:t(\"./calc_autorange\"),draw:n.draw,drawOne:n.drawOne}},{\"../../plots/cartesian/include_components\":753,\"./attributes\":647,\"./calc_autorange\":648,\"./defaults\":650,\"./draw\":651}],654:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/pad_attributes\"),a=t(\"../../lib/extend\").extendDeepAll,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/animation_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=t(\"./constants\"),u=l(\"step\",{visible:{valType:\"boolean\",dflt:!0},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\"},value:{valType:\"string\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"slider\",{visible:{valType:\"boolean\",dflt:!0},active:{valType:\"number\",min:0,dflt:0},steps:u,lenmode:{valType:\"enumerated\",values:[\"fraction\",\"pixels\"],dflt:\"fraction\"},len:{valType:\"number\",min:0,dflt:1},x:{valType:\"number\",min:-2,max:3,dflt:0},pad:a(i({editType:\"arraydraw\"}),{},{t:{dflt:20}}),xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"left\"},y:{valType:\"number\",min:-2,max:3,dflt:0},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},transition:{duration:{valType:\"number\",min:0,dflt:150},easing:{valType:\"enumerated\",values:s.transition.easing.values,dflt:\"cubic-in-out\"}},currentvalue:{visible:{valType:\"boolean\",dflt:!0},xanchor:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"left\"},offset:{valType:\"number\",dflt:10},prefix:{valType:\"string\"},suffix:{valType:\"string\"},font:n({})},font:n({}),activebgcolor:{valType:\"color\",dflt:c.gripBgActiveColor},bgcolor:{valType:\"color\",dflt:c.railBgColor},bordercolor:{valType:\"color\",dflt:c.railBorderColor},borderwidth:{valType:\"number\",min:0,dflt:c.railBorderWidth},ticklen:{valType:\"number\",min:0,dflt:c.tickLength},tickcolor:{valType:\"color\",dflt:c.tickColor},tickwidth:{valType:\"number\",min:0,dflt:1},minorticklen:{valType:\"number\",min:0,dflt:c.minorTickLength}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plot_api/plot_template\":732,\"../../plots/animation_attributes\":737,\"../../plots/font_attributes\":769,\"../../plots/pad_attributes\":805,\"./constants\":655}],655:[function(t,e,r){\"use strict\";e.exports={name:\"sliders\",containerClassName:\"slider-container\",groupClassName:\"slider-group\",inputAreaClass:\"slider-input-area\",railRectClass:\"slider-rail-rect\",railTouchRectClass:\"slider-rail-touch-rect\",gripRectClass:\"slider-grip-rect\",tickRectClass:\"slider-tick-rect\",inputProxyClass:\"slider-input-proxy\",labelsClass:\"slider-labels\",labelGroupClass:\"slider-label-group\",labelClass:\"slider-label\",currentValueClass:\"slider-current-value\",railHeight:5,menuIndexAttrName:\"slider-active-index\",autoMarginIdRoot:\"slider-\",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:\"#bec8d9\",railBgColor:\"#f8fafc\",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:\"#bec8d9\",gripBgColor:\"#f6f8fa\",gripBgActiveColor:\"#dbdde0\",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:\"#333\",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:\"#333\",minorTickLength:4,currentValuePadding:8,currentValueInset:0}},{}],656:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.steps;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}for(var s=i(t,e,{name:\"steps\",handleItemDefaults:c}),l=0,u=0;u<s.length;u++)s[u].visible&&l++;if(l<2?e.visible=!1:o(\"visible\")){e._stepCount=l;var f=e._visibleSteps=n.filterVisible(s);(s[o(\"active\")]||{}).visible||(e.active=f[0]._index),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"len\"),o(\"lenmode\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"currentvalue.visible\")&&(o(\"currentvalue.xanchor\"),o(\"currentvalue.prefix\"),o(\"currentvalue.suffix\"),o(\"currentvalue.offset\"),n.coerceFont(o,\"currentvalue.font\",e.font)),o(\"transition.duration\"),o(\"transition.easing\"),o(\"bgcolor\"),o(\"activebgcolor\"),o(\"bordercolor\"),o(\"borderwidth\"),o(\"ticklen\"),o(\"tickwidth\"),o(\"tickcolor\"),o(\"minorticklen\")}}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}if(\"skip\"===t.method||Array.isArray(t.args)?r(\"visible\"):e.visible=!1){r(\"method\"),r(\"args\");var i=r(\"label\",\"step-\"+e._index);r(\"value\",i),r(\"execute\")}}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"./attributes\":654,\"./constants\":655}],657:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"./constants\"),f=t(\"../../constants/alignment\"),h=f.LINE_SPACING,p=f.FROM_TL,d=f.FROM_BR;function g(t){return u.autoMarginIdRoot+t._index}function v(t){return t._index}function m(t,e){var r=o.tester.selectAll(\"g.\"+u.labelGroupClass).data(e._visibleSteps);r.enter().append(\"g\").classed(u.labelGroupClass,!0);var a=0,c=0;r.each(function(t){var r=b(n.select(this),{step:t},e).node();if(r){var i=o.bBox(r);c=Math.max(c,i.height),a=Math.max(a,i.width)}}),r.remove();var f=e._dims={};f.inputAreaWidth=Math.max(u.railWidth,u.gripHeight);var h=t._fullLayout._size;f.lx=h.l+h.w*e.x,f.ly=h.t+h.h*(1-e.y),\"fraction\"===e.lenmode?f.outerLength=Math.round(h.w*e.len):f.outerLength=e.len,f.inputAreaStart=0,f.inputAreaLength=Math.round(f.outerLength-e.pad.l-e.pad.r);var v=(f.inputAreaLength-2*u.stepInset)/(e._stepCount-1),m=a+u.labelPadding;if(f.labelStride=Math.max(1,Math.ceil(m/v)),f.labelHeight=c,f.currentValueMaxWidth=0,f.currentValueHeight=0,f.currentValueTotalHeight=0,f.currentValueMaxLines=1,e.currentvalue.visible){var x=o.tester.append(\"g\");r.each(function(t){var r=y(x,e,t.label),n=r.node()&&o.bBox(r.node())||{width:0,height:0},i=l.lineCount(r);f.currentValueMaxWidth=Math.max(f.currentValueMaxWidth,Math.ceil(n.width)),f.currentValueHeight=Math.max(f.currentValueHeight,Math.ceil(n.height)),f.currentValueMaxLines=Math.max(f.currentValueMaxLines,i)}),f.currentValueTotalHeight=f.currentValueHeight+e.currentvalue.offset,x.remove()}f.height=f.currentValueTotalHeight+u.tickOffset+e.ticklen+u.labelOffset+f.labelHeight+e.pad.t+e.pad.b;var _=\"left\";s.isRightAnchor(e)&&(f.lx-=f.outerLength,_=\"right\"),s.isCenterAnchor(e)&&(f.lx-=f.outerLength/2,_=\"center\");var w=\"top\";s.isBottomAnchor(e)&&(f.ly-=f.height,w=\"bottom\"),s.isMiddleAnchor(e)&&(f.ly-=f.height/2,w=\"middle\"),f.outerLength=Math.ceil(f.outerLength),f.height=Math.ceil(f.height),f.lx=Math.round(f.lx),f.ly=Math.round(f.ly);var k={y:e.y,b:f.height*d[w],t:f.height*p[w]};\"fraction\"===e.lenmode?(k.l=0,k.xl=e.x-e.len*p[_],k.r=0,k.xr=e.x+e.len*d[_]):(k.x=e.x,k.l=f.outerLength*p[_],k.r=f.outerLength*d[_]),i.autoMargin(t,g(e),k)}function y(t,e,r){if(e.currentvalue.visible){var n,i,a=e._dims;switch(e.currentvalue.xanchor){case\"right\":n=a.inputAreaLength-u.currentValueInset-a.currentValueMaxWidth,i=\"left\";break;case\"center\":n=.5*a.inputAreaLength,i=\"middle\";break;default:n=u.currentValueInset,i=\"left\"}var c=s.ensureSingle(t,\"text\",u.labelClass,function(t){t.classed(\"user-select-none\",!0).attr({\"text-anchor\":i,\"data-notex\":1})}),f=e.currentvalue.prefix?e.currentvalue.prefix:\"\";if(\"string\"==typeof r)f+=r;else f+=e.steps[e.active].label;e.currentvalue.suffix&&(f+=e.currentvalue.suffix),c.call(o.font,e.currentvalue.font).text(f).call(l.convertToTspans,e._gd);var p=l.lineCount(c),d=(a.currentValueMaxLines+1-p)*e.currentvalue.font.size*h;return l.positionText(c,n,d),c}}function x(t,e,r){s.ensureSingle(t,\"rect\",u.gripRectClass,function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}).attr({width:u.gripWidth,height:u.gripHeight,rx:u.gripRadius,ry:u.gripRadius}).call(a.stroke,r.bordercolor).call(a.fill,r.bgcolor).style(\"stroke-width\",r.borderwidth+\"px\")}function b(t,e,r){var n=s.ensureSingle(t,\"text\",u.labelClass,function(t){t.classed(\"user-select-none\",!0).attr({\"text-anchor\":\"middle\",\"data-notex\":1})});return n.call(o.font,r.font).text(e.step.label).call(l.convertToTspans,r._gd),n}function _(t,e){var r=s.ensureSingle(t,\"g\",u.labelsClass),i=e._dims,a=r.selectAll(\"g.\"+u.labelGroupClass).data(i.labelSteps);a.enter().append(\"g\").classed(u.labelGroupClass,!0),a.exit().remove(),a.each(function(t){var r=n.select(this);r.call(b,t,e),o.setTranslate(r,S(e,t.fraction),u.tickOffset+e.ticklen+e.font.size*h+u.labelOffset+i.currentValueTotalHeight)})}function w(t,e,r,n,i){var a=Math.round(n*(r._stepCount-1)),o=r._visibleSteps[a]._index;o!==r.active&&k(t,e,r,o,!0,i)}function k(t,e,r,n,a,o){var s=r.active;r.active=n,c(t.layout,u.name,r).applyUpdate(\"active\",n);var l=r.steps[r.active];e.call(T,r,o),e.call(y,r),t.emit(\"plotly_sliderchange\",{slider:r,step:r.steps[r.active],interaction:a,previousActive:s}),l&&l.method&&a&&(e._nextMethod?(e._nextMethod.step=l,e._nextMethod.doCallback=a,e._nextMethod.doTransition=o):(e._nextMethod={step:l,doCallback:a,doTransition:o},e._nextMethodRaf=window.requestAnimationFrame(function(){var r=e._nextMethod.step;r.method&&(r.execute&&i.executeAPICommand(t,r.method,r.args),e._nextMethod=null,e._nextMethodRaf=null)})))}function A(t,e,r){var i=r.node(),o=n.select(e);function s(){return r.data()[0]}t.on(\"mousedown\",function(){var t=s();e.emit(\"plotly_sliderstart\",{slider:t});var l=r.select(\".\"+u.gripRectClass);n.event.stopPropagation(),n.event.preventDefault(),l.call(a.fill,t.activebgcolor);var c=C(t,n.mouse(i)[0]);w(e,r,t,c,!0),t._dragging=!0,o.on(\"mousemove\",function(){var t=s(),a=C(t,n.mouse(i)[0]);w(e,r,t,a,!1)}),o.on(\"mouseup\",function(){var t=s();t._dragging=!1,l.call(a.fill,t.bgcolor),o.on(\"mouseup\",null),o.on(\"mousemove\",null),e.emit(\"plotly_sliderend\",{slider:t,step:t.steps[t.active]})})})}function M(t,e){var r=t.selectAll(\"rect.\"+u.tickRectClass).data(e._visibleSteps),i=e._dims;r.enter().append(\"rect\").classed(u.tickRectClass,!0),r.exit().remove(),r.attr({width:e.tickwidth+\"px\",\"shape-rendering\":\"crispEdges\"}),r.each(function(t,r){var s=r%i.labelStride==0,l=n.select(this);l.attr({height:s?e.ticklen:e.minorticklen}).call(a.fill,e.tickcolor),o.setTranslate(l,S(e,r/(e._stepCount-1))-.5*e.tickwidth,(s?u.tickOffset:u.minorTickOffset)+i.currentValueTotalHeight)})}function T(t,e,r){for(var n=t.select(\"rect.\"+u.gripRectClass),i=0,a=0;a<e._stepCount;a++)if(e._visibleSteps[a]._index===e.active){i=a;break}var o=S(e,i/(e._stepCount-1));if(!e._invokingCommand){var s=n;r&&e.transition.duration>0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",\"translate(\"+(o-.5*u.gripWidth)+\",\"+e._dims.currentValueTotalHeight+\")\")}}function S(t,e){var r=t._dims;return r.inputAreaStart+u.stepInset+(r.inputAreaLength-2*u.stepInset)*Math.min(1,Math.max(0,e))}function C(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-u.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*u.stepInset-2*r.inputAreaStart)))}function E(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",u.railTouchRectClass,function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,u.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function L(t,e){var r=e._dims,n=r.inputAreaLength-2*u.railInset,i=s.ensureSingle(t,\"rect\",u.railRectClass);i.attr({width:n,height:u.railWidth,rx:u.railRadius,ry:u.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,u.railInset,.5*(r.inputAreaWidth-u.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[u.name],n=[],i=0;i<r.length;i++){var a=r[i];a.visible&&(a._gd=e,n.push(a))}return n}(e,t),a=e._infolayer.selectAll(\"g.\"+u.containerClassName).data(r.length>0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,g(e))}if(a.enter().append(\"g\").classed(u.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each(function(){n.select(this).selectAll(\"g.\"+u.groupClassName).each(s)}).remove(),0!==r.length){var l=a.selectAll(\"g.\"+u.groupClassName).data(r,v);l.enter().append(\"g\").classed(u.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c<r.length;c++){var f=r[c];m(t,f)}l.each(function(e){var r=n.select(this);!function(t){var e=t._dims;e.labelSteps=[];for(var r=t._stepCount,n=0;n<r;n+=e.labelStride)e.labelSteps.push({fraction:n/(r-1),step:t._visibleSteps[n]})}(e),i.manageCommandObserver(t,e,e._visibleSteps,function(e){var n=r.data()[0];n.active!==e.index&&(n._dragging||k(t,r,n,e.index,!1,!0))}),function(t,e,r){(r.steps[r.active]||{}).visible||(r.active=r._visibleSteps[0]._index);e.call(y,r).call(L,r).call(_,r).call(M,r).call(E,t,r).call(x,t,r);var n=r._dims;o.setTranslate(e,n.lx+r.pad.l,n.ly+r.pad.t),e.call(T,r,!1),e.call(y,r)}(t,n.select(this),e)})}}},{\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plot_api/plot_template\":732,\"../../plots/plots\":806,\"../color\":571,\"../drawing\":592,\"./constants\":655,d3:149}],658:[function(t,e,r){\"use strict\";var n=t(\"./constants\");e.exports={moduleType:\"component\",name:n.name,layoutAttributes:t(\"./attributes\"),supplyLayoutDefaults:t(\"./defaults\"),draw:t(\"./draw\")}},{\"./attributes\":654,\"./constants\":655,\"./defaults\":656,\"./draw\":657}],659:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../drawing\"),c=t(\"../color\"),u=t(\"../../lib/svg_text_utils\"),f=t(\"../../constants/interactions\");e.exports={draw:function(t,e,r){var p,d=r.propContainer,g=r.propName,v=r.placeholder,m=r.traceIndex,y=r.avoid||{},x=r.attributes,b=r.transform,_=r.containerGroup,w=t._fullLayout,k=1,A=!1,M=d.title,T=(M&&M.text?M.text:\"\").trim(),S=M&&M.font?M.font:{},C=S.family,E=S.size,L=S.color;\"title.text\"===g?p=\"titleText\":-1!==g.indexOf(\"axis\")?p=\"axisTitleText\":g.indexOf(!0)&&(p=\"colorbarTitleText\");var z=t._context.edits[p];\"\"===T?k=0:T.replace(h,\" % \")===v.replace(h,\" % \")&&(k=.2,A=!0,z||(T=\"\"));w.meta&&(T=s.templateString(T,{meta:w.meta}));var O=T||z;_||(_=s.ensureSingle(w._infolayer,\"g\",\"g-\"+e));var I=_.selectAll(\"text\").data(O?[0]:[]);if(I.enter().append(\"text\"),I.text(T).attr(\"class\",e),I.exit().remove(),!O)return _;function D(t){s.syncOrAsync([P,R],t)}function P(e){var r;return b?(r=\"\",b.rotate&&(r+=\"rotate(\"+[b.rotate,x.x,x.y]+\")\"),b.offset&&(r+=\"translate(0, \"+b.offset+\")\")):r=null,e.attr(\"transform\",r),e.style({\"font-family\":C,\"font-size\":n.round(E,2)+\"px\",fill:c.rgb(L),opacity:k*c.opacity(L),\"font-weight\":a.fontWeight}).attr(x).call(u.convertToTspans,t),a.previousPromises(t)}function R(t){var e=n.select(t.node().parentNode);if(y&&y.selection&&y.side&&T){e.attr(\"transform\",null);var r=0,a={left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}[y.side],o=-1!==[\"left\",\"top\"].indexOf(y.side)?-1:1,c=i(y.pad)?y.pad:2,u=l.bBox(e.node()),f={left:0,top:0,right:w.width,bottom:w.height},h=y.maxShift||(f[y.side]-u[y.side])*(\"left\"===y.side||\"top\"===y.side?-1:1);if(h<0)r=h;else{var p=y.offsetLeft||0,d=y.offsetTop||0;u.left-=p,u.right-=p,u.top-=d,u.bottom-=d,y.selection.each(function(){var t=l.bBox(this);s.bBoxIntersect(u,t,c)&&(r=Math.max(r,o*(t[y.side]-u[a])+c))}),r=Math.min(h,r)}if(r>0||h<0){var g={left:[-r,0],right:[r,0],top:[0,-r],bottom:[0,r]}[y.side];e.attr(\"transform\",\"translate(\"+g+\")\")}}}I.call(D),z&&(T?I.on(\".opacity\",null):(k=0,A=!0,I.text(v).on(\"mouseover.opacity\",function(){n.select(this).transition().duration(f.SHOW_PLACEHOLDER).style(\"opacity\",1)}).on(\"mouseout.opacity\",function(){n.select(this).transition().duration(f.HIDE_PLACEHOLDER).style(\"opacity\",0)})),I.call(u.makeEditable,{gd:t}).on(\"edit\",function(e){void 0!==m?o.call(\"_guiRestyle\",t,g,e,m):o.call(\"_guiRelayout\",t,g,e)}).on(\"cancel\",function(){this.text(this.attr(\"data-unformatted\")).call(D)}).on(\"input\",function(t){this.text(t||\" \").call(u.positionText,x.x,x.y)}));return I.classed(\"js-placeholder\",A),_}};var h=/ [XY][0-9]* /},{\"../../constants/interactions\":670,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plots/plots\":806,\"../../registry\":825,\"../color\":571,\"../drawing\":592,d3:149,\"fast-isnumeric\":215}],660:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plot_api/plot_template\":732,\"../../plots/font_attributes\":769,\"../../plots/pad_attributes\":805,\"../color/attributes\":570}],661:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\"  \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],662:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"./attributes\":660,\"./constants\":661}],663:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?m(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),v(t,n,i,a,e),s||m(t,n,i,a,e))}function v(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,function(t){t.style(\"pointer-events\",\"all\")}),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(T,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,function(t){t.classed(\"user-select-none\",!0).attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])}).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",function(){r.call(S,String(d(r,i)?-1:i._index)),m(t,e,r,n,i)}),a.on(\"mouseover\",function(){a.call(w)}),a.on(\"mouseout\",function(){a.call(k,i)}),o.setTranslate(e,l.lx,l.ly)}function m(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,v=0,m=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?v=m.headerHeight+f.gapButtonHeader:d=m.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(v=-f.gapButtonHeader+f.gapButton-m.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-m.openWidth);var b={x:m.lx+d+o.pad.l,y:m.ly+v+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},A={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each(function(s,l){var c=n.select(this);c.call(y,o,s,t).call(T,o,b),c.on(\"click\",function(){n.event.defaultPrevented||(g(t,o,0,e,r,a,l),s.execute&&i.executeAPICommand(t,s.method,s.args),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))}),c.on(\"mouseover\",function(){c.call(w)}),c.on(\"mouseout\",function(){c.call(k,o),u.call(_,o)})}),u.call(_,o),x?(A.w=Math.max(m.openWidth,m.headerWidth),A.h=b.y-A.t):(A.w=b.x-A.l,A.h=Math.max(m.openHeight,m.headerHeight)),A.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l<p;l++)s+=h.heights[l]+f.gapButton;else for(o=0,l=0;l<p;l++)o+=h.widths[l]+f.gapButton;n.enable(a,o,s),n.hbar&&n.hbar.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\");n.vbar&&n.vbar.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\")}(0,0,0,a,o,A):function(t){var e=!!t.hbar,r=!!t.vbar;e&&t.hbar.transition().attr(\"opacity\",\"0\").each(\"end\",function(){e=!1,r||t.disable()});r&&t.vbar.transition().attr(\"opacity\",\"0\").each(\"end\",function(){r=!1,e||t.disable()})}(a))}function y(t,e,r,n){t.call(x,e).call(b,e,r,n)}function x(t,e){s.ensureSingle(t,\"rect\",f.itemRectClassName,function(t){t.attr({rx:f.rx,ry:f.ry,\"shape-rendering\":\"crispEdges\"})}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\")}function b(t,e,r,n){s.ensureSingle(t,\"text\",f.itemTextClassName,function(t){t.classed(\"user-select-none\",!0).attr({\"text-anchor\":\"start\",\"data-notex\":1})}).call(o.font,e.font).text(r.label).call(l.convertToTspans,n)}function _(t,e){var r=e.active;t.each(function(t,i){var o=n.select(this);i===r&&e.showactive&&o.select(\"rect.\"+f.itemRectClassName).call(a.fill,f.activeColor)})}function w(t){t.select(\"rect.\"+f.itemRectClassName).call(a.fill,f.hoverColor)}function k(t,e){t.select(\"rect.\"+f.itemRectClassName).call(a.fill,e.bgcolor)}function A(t,e){var r=e._dims={width1:0,height1:0,heights:[],widths:[],totalWidth:0,totalHeight:0,openWidth:0,openHeight:0,lx:0,ly:0},a=o.tester.selectAll(\"g.\"+f.dropdownButtonClassName).data(s.filterVisible(e.buttons));a.enter().append(\"g\").classed(f.dropdownButtonClassName,!0);var c=-1!==[\"up\",\"down\"].indexOf(e.direction);a.each(function(i,a){var s=n.select(this);s.call(y,e,i,t);var h=s.select(\".\"+f.itemTextClassName),p=h.node()&&o.bBox(h.node()).width,d=Math.max(p+f.textPadX,f.minWidth),g=e.font.size*u,v=l.lineCount(h),m=Math.max(g*v,f.minHeight)+f.textOffsetY;m=Math.ceil(m),d=Math.ceil(d),r.widths[a]=d,r.heights[a]=m,r.height1=Math.max(r.height1,m),r.width1=Math.max(r.width1,d),c?(r.totalWidth=Math.max(r.totalWidth,d),r.openWidth=r.totalWidth,r.totalHeight+=m+f.gapButton,r.openHeight+=m+f.gapButton):(r.totalWidth+=d+f.gapButton,r.openWidth+=d+f.gapButton,r.totalHeight=Math.max(r.totalHeight,m),r.openHeight=r.totalHeight)}),c?r.totalHeight-=f.gapButton:r.totalWidth-=f.gapButton,r.headerWidth=r.width1+f.arrowPadX,r.headerHeight=r.height1,\"dropdown\"===e.type&&(c?(r.width1+=f.arrowPadX,r.totalHeight=r.height1):r.totalWidth=r.width1,r.totalWidth+=f.arrowPadX),a.remove();var h=r.totalWidth+e.pad.l+e.pad.r,p=r.totalHeight+e.pad.t+e.pad.b,d=t._fullLayout._size;r.lx=d.l+d.w*e.x,r.ly=d.t+d.h*(1-e.y);var g=\"left\";s.isRightAnchor(e)&&(r.lx-=h,g=\"right\"),s.isCenterAnchor(e)&&(r.lx-=h/2,g=\"center\");var v=\"top\";s.isBottomAnchor(e)&&(r.ly-=p,v=\"bottom\"),s.isMiddleAnchor(e)&&(r.ly-=p/2,v=\"middle\"),r.totalWidth=Math.ceil(r.totalWidth),r.totalHeight=Math.ceil(r.totalHeight),r.lx=Math.round(r.lx),r.ly=Math.round(r.ly),i.autoMargin(t,M(e),{x:e.x,y:e.y,l:h*({right:1,center:.5}[g]||0),r:h*({left:1,center:.5}[g]||0),b:p*({top:1,middle:.5}[v]||0),t:p*({bottom:1,middle:.5}[v]||0)})}function M(t){return f.autoMarginIdRoot+t._index}function T(t,e,r,n){n=n||{};var i=t.select(\".\"+f.itemRectClassName),a=t.select(\".\"+f.itemTextClassName),s=e.borderwidth,c=r.index,h=e._dims;o.setTranslate(t,s+r.x,s+r.y);var p=-1!==[\"up\",\"down\"].indexOf(e.direction),d=n.height||(p?h.heights[c]:h.height1);i.attr({x:0,y:0,width:n.width||(p?h.width1:h.widths[c]),height:d});var g=e.font.size*u,v=(l.lineCount(a)-1)*g/2;l.positionText(a,f.textOffsetX,d/2-v+f.textOffsetY),p?r.y+=h.heights[c]+r.yPad:r.x+=h.widths[c]+r.xPad,r.index++}function S(t,e){t.attr(f.menuIndexAttrName,e||\"-1\").selectAll(\"g.\"+f.dropdownButtonClassName).remove()}e.exports=function(t){var e=t._fullLayout,r=s.filterVisible(e[f.name]);function a(e){i.autoMargin(t,M(e))}var o=e._menulayer.selectAll(\"g.\"+f.containerClassName).data(r.length>0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each(function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)}).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,function(t){t.style(\"pointer-events\",\"all\")}),u=0;u<r.length;u++){var y=r[u];A(t,y)}var x=\"updatemenus\"+e._uid,b=new h(t,c,x);l.enter().size()&&(c.node().parentNode.appendChild(c.node()),c.call(S)),l.exit().each(function(t){c.call(S),a(t)}).remove(),l.each(function(e){var r=n.select(this),a=\"dropdown\"===e.type?c:null;i.manageCommandObserver(t,e,e.buttons,function(n){g(t,e,e.buttons[n.index],r,a,b,n.index,!0)}),\"dropdown\"===e.type?(v(t,r,c,b,e),d(c,e)&&m(t,r,c,b,e)):m(t,r,null,null,e)})}}},{\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plot_api/plot_template\":732,\"../../plots/plots\":806,\"../color\":571,\"../drawing\":592,\"./constants\":661,\"./scrollbox\":665,d3:149}],664:[function(t,e,r){arguments[4][658][0].apply(r,arguments)},{\"./attributes\":660,\"./constants\":661,\"./defaults\":662,\"./draw\":663,dup:658}],665:[function(t,e,r){\"use strict\";e.exports=s;var n=t(\"d3\"),i=t(\"../color\"),a=t(\"../drawing\"),o=t(\"../../lib\");function s(t,e,r){this.gd=t,this.container=e,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll(\"rect.scrollbox-bg\").data([0]),this.bg.exit().on(\".drag\",null).on(\"wheel\",null).remove(),this.bg.enter().append(\"rect\").classed(\"scrollbox-bg\",!0).style(\"pointer-events\",\"all\").attr({opacity:0,x:0,y:0,width:0,height:0})}s.barWidth=2,s.barLength=20,s.barRadius=2,s.barPad=1,s.barColor=\"#808BA4\",s.prototype.enable=function(t,e,r){var o=this.gd._fullLayout,l=o.width,c=o.height;this.position=t;var u,f,h,p,d=this.position.l,g=this.position.w,v=this.position.t,m=this.position.h,y=this.position.direction,x=\"down\"===y,b=\"left\"===y,_=\"up\"===y,w=g,k=m;x||b||\"right\"===y||_||(this.position.direction=\"down\",x=!0),x||_?(f=(u=d)+w,x?(h=v,k=(p=Math.min(h+k,c))-h):k=(p=v+k)-(h=Math.max(p-k,0))):(p=(h=v)+k,b?w=(f=d+w)-(u=Math.max(f-w,0)):(u=d,w=(f=Math.min(u+w,l))-u)),this._box={l:u,t:h,w:w,h:k};var A=g>w,M=s.barLength+2*s.barPad,T=s.barWidth+2*s.barPad,S=d,C=v+m;C+T>c&&(C=c-T);var E=this.container.selectAll(\"rect.scrollbar-horizontal\").data(A?[0]:[]);E.exit().on(\".drag\",null).remove(),E.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),A?(this.hbar=E.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:C,width:M,height:T}),this._hbarXMin=S+M/2,this._hbarTranslateMax=w-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var L=m>k,z=s.barWidth+2*s.barPad,O=s.barLength+2*s.barPad,I=d+g,D=v;I+z>l&&(I=l-z);var P=this.container.selectAll(\"rect.scrollbar-vertical\").data(L?[0]:[]);P.exit().on(\".drag\",null).remove(),P.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),L?(this.vbar=P.attr({rx:s.barRadius,ry:s.barRadius,x:I,y:D,width:z,height:O}),this._vbarYMin=D+O/2,this._vbarTranslateMax=k-O):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=L?f+z+.5:f+.5,N=h-.5,j=A?p+T+.5:p+.5,V=o._topdefs.selectAll(\"#\"+R).data(A||L?[0]:[]);if(V.exit().remove(),V.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),A||L?(this._clipRect=V.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:v,width:g,height:m})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),A||L){var U=n.behavior.drag().on(\"dragstart\",function(){n.event.sourceEvent.preventDefault()}).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(U);var q=n.behavior.drag().on(\"dragstart\",function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()}).on(\"drag\",this._onBarDrag.bind(this));A&&this.hbar.on(\".drag\",null).call(q),L&&this.vbar.on(\".drag\",null).call(q)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":694,\"../color\":571,\"../drawing\":592,d3:149}],666:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],667:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],668:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],669:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],670:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DBLCLICKDELAY:300,DESELECTDIM:.2}},{}],671:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE/1e4,ONEAVGYEAR:315576e5,ONEAVGMONTH:26298e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],672:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],673:[function(t,e,r){\"use strict\";r.version=\"1.44.3\",t(\"es6-promise\").polyfill(),t(\"../build/plotcss\"),t(\"./fonts/mathjax_config\")();for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;s<o.length;s++){var l=o[s];\"_\"!==l.charAt(0)&&(r[l]=a[l]),i({moduleType:\"apiMethod\",name:l,fn:a[l]})}i(t(\"./traces/scatter\")),i([t(\"./components/fx\"),t(\"./components/legend\"),t(\"./components/annotations\"),t(\"./components/annotations3d\"),t(\"./components/shapes\"),t(\"./components/images\"),t(\"./components/updatemenus\"),t(\"./components/sliders\"),t(\"./components/rangeslider\"),t(\"./components/rangeselector\"),t(\"./components/grid\"),t(\"./components/errorbars\"),t(\"./components/colorscale\")]),i([t(\"./locale-en\"),t(\"./locale-en-us\")]),r.Icons=t(\"../build/ploticon\"),r.Plots=t(\"./plots/plots\"),r.Fx=t(\"./components/fx\"),r.Snapshot=t(\"./snapshot\"),r.PlotSchema=t(\"./plot_api/plot_schema\"),r.Queue=t(\"./lib/queue\"),r.d3=t(\"d3\")},{\"../build/plotcss\":1,\"../build/ploticon\":2,\"./components/annotations\":562,\"./components/annotations3d\":567,\"./components/colorscale\":583,\"./components/errorbars\":598,\"./components/fx\":610,\"./components/grid\":614,\"./components/images\":619,\"./components/legend\":627,\"./components/rangeselector\":638,\"./components/rangeslider\":645,\"./components/shapes\":653,\"./components/sliders\":658,\"./components/updatemenus\":664,\"./fonts/mathjax_config\":674,\"./lib/queue\":709,\"./locale-en\":723,\"./locale-en-us\":722,\"./plot_api\":727,\"./plot_api/plot_schema\":731,\"./plots/plots\":806,\"./registry\":825,\"./snapshot\":830,\"./traces/scatter\":1059,d3:149,\"es6-promise\":204}],674:[function(t,e,r){\"use strict\";e.exports=function(){\"undefined\"!=typeof MathJax&&(\"local\"!==(window.PlotlyConfig||{}).MathJaxConfig&&(MathJax.Hub.Config({messageStyle:\"none\",skipStartupTypeset:!0,displayAlign:\"left\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]}}),MathJax.Hub.Configured()))}},{}],675:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],676:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-15}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0]<e[1]?(r=e[0],n=e[1]):(r=e[1],n=e[0]),(r=i(r,s))>(n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function v(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r<n?(u=r,h=n):(u=n,h=r),t<e?(p=t,d=e):(p=e,d=t);var m,y=Math.abs(h-u)<=o?0:1;function x(t,e,r){return\"A\"+[t,t]+\" \"+[0,y,r]+\" \"+v(t,e)}return g?m=null===p?\"M\"+v(d,u)+x(d,f,0)+x(d,h,0)+\"Z\":\"M\"+v(p,u)+x(p,f,0)+x(p,h,0)+\"ZM\"+v(d,u)+x(d,f,1)+x(d,h,1)+\"Z\":null===p?(m=\"M\"+v(d,u)+x(d,h,0),c&&(m+=\"L0,0Z\")):m=\"M\"+v(p,u)+\"L\"+v(d,u)+x(d,h,0)+\"L\"+v(p,h)+x(p,u,1)+\"Z\",m}e.exports={deg2rad:function(t){return t/180*o},rad2deg:function(t){return t/o*180},angleDelta:c,angleDist:function(t,e){return Math.abs(c(t,e))},isFullCircle:l,isAngleInsideSector:u,isPtInsideSector:function(t,e,r,n){return!!u(e,n)&&(r[0]<r[1]?(i=r[0],a=r[1]):(i=r[1],a=r[0]),t>=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":701}],677:[function(t,e,r){\"use strict\";var n=Array.isArray,i=\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer:{isView:function(){return!1}},a=\"undefined\"==typeof DataView?function(){}:DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;i<t.length;i++)n=e(n,t[i].length);return n}return t.length}return 0}r.isTypedArray=o,r.isArrayOrTypedArray=s,r.isArray1D=function(t){return!s(t[0])},r.ensureArray=function(t,e){return n(t)||(t=[]),t.length=e,t},r.concat=function(){var t,e,r,i,a,o,s,l,c=[],u=!0,f=0;for(r=0;r<arguments.length;r++)(o=(i=arguments[r]).length)&&(e?c.push(i):(e=i,a=o),n(i)?t=!1:(u=!1,f?t!==i.constructor&&(t=!1):t=i.constructor),f+=o);if(!f)return[];if(!c.length)return e;if(u)return e.concat.apply(e,c);if(t){for((s=new t(f)).set(e),r=0;r<c.length;r++)i=c[r],s.set(i,a),a+=i.length;return s}for(s=new Array(f),l=0;l<e.length;l++)s[l]=e[l];for(r=0;r<c.length;r++){for(i=c[r],l=0;l<i.length;l++)s[a+l]=i[l];a+=l}return s},r.maxRowLength=function(t){return l(t,Math.max,0)},r.minRowLength=function(t){return l(t,Math.min,1/0)}},{}],678:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../constants/numerical\").BADNUM,a=/^['\"%,$#\\s']+|[, ]|['\"%,$#\\s']+$/g;e.exports=function(t){return\"string\"==typeof t&&(t=t.replace(a,\"\")),n(t)?Number(t):i}},{\"../constants/numerical\":671,\"fast-isnumeric\":215}],679:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t._fullLayout;e._glcanvas&&e._glcanvas.size()&&e._glcanvas.each(function(t){t.regl&&t.regl.clear({color:!0,depth:!0})})}},{}],680:[function(t,e,r){\"use strict\";e.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener(\"resize\",t._responsiveChartHandler),delete t._responsiveChartHandler)}},{}],681:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../plots/attributes\"),o=t(\"../components/colorscale/scales\"),s=t(\"../constants/interactions\").DESELECTDIM,l=t(\"./nested_property\"),c=t(\"./regex\").counter,u=t(\"./mod\").modHalf,f=t(\"./array\").isArrayOrTypedArray;function h(t,e){var n=r.valObjectMeta[e.valType];if(e.arrayOk&&f(t))return!0;if(n.validateFunction)return n.validateFunction(t,e);var i={},a=i,o={set:function(t){a=t}};return n.coerceFunction(t,o,i,e),a!==i}r.valObjectMeta={data_array:{coerceFunction:function(t,e,r){f(t)?e.set(t):void 0!==r&&e.set(r)}},enumerated:{coerceFunction:function(t,e,r,n){n.coerceNumber&&(t=+t),-1===n.values.indexOf(t)?e.set(r):e.set(t)},validateFunction:function(t,e){e.coerceNumber&&(t=+t);for(var r=e.values,n=0;n<r.length;n++){var i=String(r[n]);if(\"/\"===i.charAt(0)&&\"/\"===i.charAt(i.length-1)){if(new RegExp(i.substr(1,i.length-2)).test(t))return!0}else if(t===r[n])return!0}return!1}},boolean:{coerceFunction:function(t,e,r){!0===t||!1===t?e.set(t):e.set(r)}},number:{coerceFunction:function(t,e,r,i){!n(t)||void 0!==i.min&&t<i.min||void 0!==i.max&&t>i.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&t<i.min||void 0!==i.max&&t>i.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every(function(t){return i(t).isValid()})?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(u(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||c(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!c(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a<i.length;){var o=i[a];-1===n.flags.indexOf(o)||i.indexOf(o)<a?i.splice(a,1):a++}i.length?e.set(i.join(\"+\")):e.set(r)}else e.set(t);else e.set(r)}},any:{coerceFunction:function(t,e,r){void 0===t?e.set(r):e.set(t)}},info_array:{coerceFunction:function(t,e,n,i){function a(t,e,n){var i,a={set:function(t){i=t}};return void 0===n&&(n=e.dflt),r.valObjectMeta[e.valType].coerceFunction(t,a,n,e),i}var o=2===i.dimensions||\"1-2\"===i.dimensions&&Array.isArray(t)&&Array.isArray(t[0]);if(Array.isArray(t)){var s,l,c,u,f,h,p=i.items,d=[],g=Array.isArray(p),v=g&&o&&Array.isArray(p[0]),m=o&&g&&!v,y=g&&!m?p.length:t.length;if(n=Array.isArray(n)?n:[],o)for(s=0;s<y;s++)for(d[s]=[],c=Array.isArray(t[s])?t[s]:[],f=m?p.length:g?p[s].length:c.length,l=0;l<f;l++)u=m?p[l]:g?p[s][l]:p,void 0!==(h=a(c[l],u,(n[s]||[])[l]))&&(d[s][l]=h);else for(s=0;s<y;s++)void 0!==(h=a(t[s],g?p[s]:p,n[s]))&&(d[s]=h);e.set(d)}else e.set(n)},validateFunction:function(t,e){if(!Array.isArray(t))return!1;var r=e.items,n=Array.isArray(r),i=2===e.dimensions;if(!e.freeLength&&t.length!==r.length)return!1;for(var a=0;a<t.length;a++)if(i){if(!Array.isArray(t[a])||!e.freeLength&&t[a].length!==r[a].length)return!1;for(var o=0;o<t[a].length;o++)if(!h(t[a][o],n?r[a][o]:r))return!1}else if(!h(t[a],n?r[a]:r))return!1;return!0}}},r.coerce=function(t,e,n,i,a){var o=l(n,i).get(),s=l(t,i),c=l(e,i),u=s.get(),p=e._template;if(void 0===u&&p&&(u=l(p,i).get(),p=0),void 0===a&&(a=o.dflt),o.arrayOk&&f(u))return c.set(u),u;var d=r.valObjectMeta[o.valType].coerceFunction;d(u,c,a,o);var g=c.get();return p&&g===a&&!h(u,o)&&(d(u=l(p,i).get(),c,a,o),g=c.get()),g},r.coerce2=function(t,e,n,i,a){var o=l(t,i),s=r.coerce(t,e,n,i,a),c=o.get();return null!=c&&s},r.coerceFont=function(t,e,r){var n={};return r=r||{},n.family=t(e+\".family\",r.family),n.size=t(e+\".size\",r.size),n.color=t(e+\".color\",r.color),n},r.coerceHoverinfo=function(t,e,n){var i,o=e._module.attributes,s=o.hoverinfo?o:a,l=s.hoverinfo;if(1===n._dataLength){var c=\"all\"===l.dflt?l.flags.slice():l.dflt.split(\"+\");c.splice(c.indexOf(\"name\"),1),i=c.join(\"+\")}return r.coerce(t,e,s,\"hoverinfo\",i)},r.coerceSelectionMarkerOpacity=function(t,e){if(t.marker){var r,n,i=t.marker.opacity;if(void 0!==i)f(i)||t.selected||t.unselected||(r=i,n=s*i),e(\"selected.marker.opacity\",r),e(\"unselected.marker.opacity\",n)}},r.validate=h},{\"../components/colorscale/scales\":586,\"../constants/interactions\":670,\"../plots/attributes\":739,\"./array\":677,\"./mod\":701,\"./nested_property\":702,\"./regex\":710,\"fast-isnumeric\":215,tinycolor2:515}],682:[function(t,e,r){\"use strict\";var n,i,a=t(\"d3\"),o=t(\"fast-isnumeric\"),s=t(\"./loggers\"),l=t(\"./mod\").mod,c=t(\"../constants/numerical\"),u=c.BADNUM,f=c.ONEDAY,h=c.ONEHOUR,p=c.ONEMIN,d=c.ONESEC,g=c.EPOCHJD,v=t(\"../registry\"),m=a.time.format.utc,y=/^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\d)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d:?\\d\\d)?)?)?)?)?\\s*$/m,x=/^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\di?)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d:?\\d\\d)?)?)?)?)?\\s*$/m,b=(new Date).getFullYear()-70;function _(t){return t&&v.componentsRegistry.calendars&&\"string\"==typeof t&&\"gregorian\"!==t}function w(t,e){return String(t+Math.pow(10,e)).substr(1)}r.dateTick0=function(t,e){return _(t)?e?v.getComponentMethod(\"calendars\",\"CANONICAL_SUNDAY\")[t]:v.getComponentMethod(\"calendars\",\"CANONICAL_TICK\")[t]:e?\"2000-01-02\":\"2000-01-01\"},r.dfltRange=function(t){return _(t)?v.getComponentMethod(\"calendars\",\"DFLTRANGE\")[t]:[\"2000-01-01\",\"2001-01-01\"]},r.isJSDate=function(t){return\"object\"==typeof t&&null!==t&&\"function\"==typeof t.getTime},r.dateTime2ms=function(t,e){if(r.isJSDate(t)){var a=t.getTimezoneOffset()*p,o=(t.getUTCMinutes()-t.getMinutes())*p+(t.getUTCSeconds()-t.getSeconds())*d+(t.getUTCMilliseconds()-t.getMilliseconds());if(o){var s=3*p;a=a-s/2+l(o-a+s/2,s)}return(t=Number(t)-a)>=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),m=t.charAt(0);!c||\"G\"!==m&&\"g\"!==m||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),k=t.match(w?x:y);if(!k)return u;var A=k[1],M=k[3]||\"1\",T=Number(k[5]||1),S=Number(k[7]||0),C=Number(k[9]||0),E=Number(k[11]||0);if(c){if(2===A.length)return u;var L;A=Number(A);try{var z=v.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var O=\"i\"===M.charAt(M.length-1);M=parseInt(M,10),L=z.newDate(A,z.toMonthIndex(A,M,O),T)}else L=z.newDate(A,Number(M),T)}catch(t){return u}return L?(L.toJD()-g)*f+S*h+C*p+E*d:u}A=2===A.length?(Number(A)+2e3-b)%100+b:Number(A),M-=1;var I=new Date(Date.UTC(2e3,M,T,S,C));return I.setUTCFullYear(A),I.getUTCMonth()!==M?u:I.getUTCDate()!==T?u:I.getTime()+E*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var k=90*f,A=3*h,M=5*p;function T(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,C=Math.floor(l(t,f));try{a=v.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=m(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e<k?Math.floor(C/h):0,s=e<k?Math.floor(C%h/p):0,c=e<A?Math.floor(C%p/d):0,y=e<M?C%d*10+b:0}else x=new Date(w),a=m(\"%Y-%m-%d\")(x),o=e<k?x.getUTCHours():0,s=e<k?x.getUTCMinutes():0,c=e<A?x.getUTCSeconds():0,y=e<M?10*x.getUTCMilliseconds()+b:0;return T(a,o,s,c,y)},r.ms2DateTimeLocal=function(t){if(!(t>=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return T(a.time.format(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g;function C(t,e,r,n){t=t.replace(S,function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"});var i=new Date(Math.floor(e+.05));if(_(n))try{t=v.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var E=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),E[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var L=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=v.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+L);return c.setUTCMonth(c.getUTCMonth()+e)+n-L},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&v.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u<t.length;u++)if(n=t[u],o(n)){if(!(n%f))if(c)try{1===(r=c.fromJD(n/f+g)).day()?1===r.month()?i++:a++:s++}catch(t){}else 1===(r=new Date(n)).getUTCDate()?0===r.getUTCMonth()?i++:a++:s++}else l++;s+=a+=i;var h=t.length-l;return{exactYears:i/h,exactMonths:a/h,exactDays:s/h}}},{\"../constants/numerical\":671,\"../registry\":825,\"./loggers\":698,\"./mod\":701,d3:149,\"fast-isnumeric\":215}],683:[function(t,e,r){\"use strict\";var n=t(\"events\").EventEmitter,i={init:function(t){if(t._ev instanceof n)return t;var e=new n,r=new n;return t._ev=e,t._internalEv=r,t.on=e.on.bind(e),t.once=e.once.bind(e),t.removeListener=e.removeListener.bind(e),t.removeAllListeners=e.removeAllListeners.bind(e),t._internalOn=r.on.bind(r),t._internalOnce=r.once.bind(r),t._removeInternalListener=r.removeListener.bind(r),t._removeAllInternalListeners=r.removeAllListeners.bind(r),t.emit=function(n,i){\"undefined\"!=typeof jQuery&&jQuery(t).trigger(n,i),e.emit(n,i),r.emit(n,i)},t},triggerHandler:function(t,e,r){var n,i;\"undefined\"!=typeof jQuery&&(n=jQuery(t).triggerHandler(e,r));var a=t._ev;if(!a)return n;var o,s=a._events[e];if(!s)return n;function l(t){return t.listener?(a.removeListener(e,t.listener),t.fired?void 0:(t.fired=!0,t.listener.apply(a,[r]))):t.apply(a,[r])}for(s=Array.isArray(s)?s:[s],o=0;o<s.length-1;o++)l(s[o]);return i=l(s[o]),void 0!==n?n:i},purge:function(t){return delete t._ev,delete t.on,delete t.once,delete t.removeListener,delete t.removeAllListeners,delete t.emit,delete t._ev,delete t._internalEv,delete t._internalOn,delete t._internalOnce,delete t._removeInternalListener,delete t._removeAllInternalListeners,t}};e.exports=i},{events:93}],684:[function(t,e,r){\"use strict\";var n=t(\"./is_plain_object.js\"),i=Array.isArray;function a(t,e,r,o){var s,l,c,u,f,h,p=t[0],d=t.length;if(2===d&&i(p)&&i(t[1])&&0===p.length){if(function(t,e){var r,n;for(r=0;r<t.length;r++){if(null!==(n=t[r])&&\"object\"==typeof n)return!1;void 0!==n&&(e[r]=n)}return!0}(t[1],p))return p;p.splice(0,p.length)}for(var g=1;g<d;g++)for(l in s=t[g])c=p[l],u=s[l],o&&i(u)?p[l]=u:e&&u&&(n(u)||(f=i(u)))?(f?(f=!1,h=c&&i(c)?c:[]):h=c&&n(c)?c:{},p[l]=a([h,u],e,r,o)):(\"undefined\"!=typeof u||r)&&(p[l]=u);return p}r.extendFlat=function(){return a(arguments,!1,!1,!1)},r.extendDeep=function(){return a(arguments,!0,!1,!1)},r.extendDeepAll=function(){return a(arguments,!0,!0,!1)},r.extendDeepNoArrays=function(){return a(arguments,!0,!1,!0)}},{\"./is_plain_object.js\":695}],685:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e={},r=[],n=0,i=0;i<t.length;i++){var a=t[i];1!==e[a]&&(e[a]=1,r[n++]=a)}return r}},{}],686:[function(t,e,r){\"use strict\";function n(t){return!0===t.visible}function i(t){return!0===t[0].trace.visible}e.exports=function(t){for(var e,r=(e=t,Array.isArray(e)&&Array.isArray(e[0])&&e[0][0]&&e[0][0].trace?i:n),a=[],o=0;o<t.length;o++){var s=t[o];r(s)&&a.push(s)}return a}},{}],687:[function(t,e,r){\"use strict\";var n=t(\"country-regex\"),i=t(\"../lib\"),a=Object.keys(n),o={\"ISO-3\":i.identity,\"USA-states\":i.identity,\"country names\":function(t){for(var e=0;e<a.length;e++){var r=a[e],o=new RegExp(n[r]);if(o.test(t.trim().toLowerCase()))return r}return i.log(\"Unrecognized country name: \"+t+\".\"),!1}};r.locationToFeature=function(t,e,r){if(!e||\"string\"!=typeof e)return!1;var n=function(t,e){return(0,o[t])(e)}(t,e);if(n){for(var a=0;a<r.length;a++){var s=r[a];if(s.id===n)return s}i.log([\"Location with id\",n,\"does not have a matching topojson feature at this resolution.\"].join(\" \"))}return!1}},{\"../lib\":694,\"country-regex\":123}],688:[function(t,e,r){\"use strict\";var n=t(\"../constants/numerical\").BADNUM;r.calcTraceToLineCoords=function(t){for(var e=t[0].trace.connectgaps,r=[],i=[],a=0;a<t.length;a++){var o=t[a].lonlat;o[0]!==n?i.push(o):!e&&i.length>0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r<t.length;r++)e[r]=[t[r]];return{type:\"MultiPolygon\",coordinates:e}},r.makeBlank=function(){return{type:\"Point\",coordinates:[]}}},{\"../constants/numerical\":671}],689:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"./mod\").mod;function s(t,e,r,n,i,a,o,s){var l=r-t,c=i-t,u=o-i,f=n-e,h=a-e,p=s-a,d=l*p-u*f;if(0===d)return null;var g=(c*p-u*h)/d,v=(c*f-l*h)/d;return v<0||v>1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,v=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(v)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.x<a?a-r.x:r.x>o?r.x-o:0,f=r.y<s?s-r.y:r.y>l?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f<c;){if(i=(h+p)/2,o=(a=t.getPointAtLength(i))[r]-e,Math.abs(o)<l)return a;u*o>0?p=i:h=i,f++}return a}},{\"./mod\":701}],690:[function(t,e,r){\"use strict\";e.exports=function(t){var e;if(\"string\"==typeof t){if(null===(e=document.getElementById(t)))throw new Error(\"No DOM element with id '\"+t+\"' exists on the page.\");return e}if(null==t)throw new Error(\"DOM element provided is null or undefined\");return t}},{}],691:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s),u=1;function f(t,e){var r=t;return r[3]*=e,r}function h(t){if(n(t))return c;var e=a(t);return e.length?e:c}function p(t){return n(t)?t:u}e.exports={formatColor:function(t,e,r){var n,i,s,d,g,v=t.color,m=l(v),y=l(e),x=[];if(n=void 0!==t.colorscale?o.makeColorScaleFunc(o.extractScale(t,{cLetter:\"c\"})):h,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:h,s=y?function(t,e){return void 0===t[e]?u:p(t[e])}:p,m||y)for(var b=0;b<r;b++)d=i(v,b),g=s(e,b),x[b]=f(d,g);else x=f(a(v),e);return x},parseColorScale:function(t,e){return void 0===e&&(e=1),(t.reversescale?o.flipScale(t.colorscale):t.colorscale).map(function(t){var r=t[0],n=i(t[1]).toRgb();return{index:r,rgb:[n.r,n.g,n.b,e]}})}}},{\"../components/color/attributes\":570,\"../components/colorscale\":583,\"./array\":677,\"color-normalize\":109,\"fast-isnumeric\":215,tinycolor2:515}],692:[function(t,e,r){\"use strict\";var n=t(\"./identity\");function i(t){return[t]}e.exports={keyFun:function(t){return t.key},repeat:i,descend:n,wrap:i,unwrap:function(t){return t[0]}}},{\"./identity\":693}],693:[function(t,e,r){\"use strict\";e.exports=function(t){return t}},{}],694:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../constants/numerical\"),o=a.FP_SAFE,s=a.BADNUM,l=e.exports={};l.nestedProperty=t(\"./nested_property\"),l.keyedContainer=t(\"./keyed_container\"),l.relativeAttr=t(\"./relative_attr\"),l.isPlainObject=t(\"./is_plain_object\"),l.toLogRange=t(\"./to_log_range\"),l.relinkPrivateKeys=t(\"./relink_private\");var c=t(\"./array\");l.isTypedArray=c.isTypedArray,l.isArrayOrTypedArray=c.isArrayOrTypedArray,l.isArray1D=c.isArray1D,l.ensureArray=c.ensureArray,l.concat=c.concat,l.maxRowLength=c.maxRowLength,l.minRowLength=c.minRowLength;var u=t(\"./mod\");l.mod=u.mod,l.modHalf=u.modHalf;var f=t(\"./coerce\");l.valObjectMeta=f.valObjectMeta,l.coerce=f.coerce,l.coerce2=f.coerce2,l.coerceFont=f.coerceFont,l.coerceHoverinfo=f.coerceHoverinfo,l.coerceSelectionMarkerOpacity=f.coerceSelectionMarkerOpacity,l.validate=f.validate;var h=t(\"./dates\");l.dateTime2ms=h.dateTime2ms,l.isDateTime=h.isDateTime,l.ms2DateTime=h.ms2DateTime,l.ms2DateTimeLocal=h.ms2DateTimeLocal,l.cleanDate=h.cleanDate,l.isJSDate=h.isJSDate,l.formatDate=h.formatDate,l.incrementMonth=h.incrementMonth,l.dateTick0=h.dateTick0,l.dfltRange=h.dfltRange,l.findExactDates=h.findExactDates,l.MIN_MS=h.MIN_MS,l.MAX_MS=h.MAX_MS;var p=t(\"./search\");l.findBin=p.findBin,l.sorterAsc=p.sorterAsc,l.sorterDes=p.sorterDes,l.distinctVals=p.distinctVals,l.roundUp=p.roundUp,l.sort=p.sort,l.findIndexOfMin=p.findIndexOfMin;var d=t(\"./stats\");l.aggNums=d.aggNums,l.len=d.len,l.mean=d.mean,l.midRange=d.midRange,l.variance=d.variance,l.stdev=d.stdev,l.interp=d.interp;var g=t(\"./matrix\");l.init2dArray=g.init2dArray,l.transposeRagged=g.transposeRagged,l.dot=g.dot,l.translationMatrix=g.translationMatrix,l.rotationMatrix=g.rotationMatrix,l.rotationXYMatrix=g.rotationXYMatrix,l.apply2DTransform=g.apply2DTransform,l.apply2DTransform2=g.apply2DTransform2;var v=t(\"./angles\");l.deg2rad=v.deg2rad,l.rad2deg=v.rad2deg,l.angleDelta=v.angleDelta,l.angleDist=v.angleDist,l.isFullCircle=v.isFullCircle,l.isAngleInsideSector=v.isAngleInsideSector,l.isPtInsideSector=v.isPtInsideSector,l.pathArc=v.pathArc,l.pathSector=v.pathSector,l.pathAnnulus=v.pathAnnulus;var m=t(\"./anchor_utils\");l.isLeftAnchor=m.isLeftAnchor,l.isCenterAnchor=m.isCenterAnchor,l.isRightAnchor=m.isRightAnchor,l.isTopAnchor=m.isTopAnchor,l.isMiddleAnchor=m.isMiddleAnchor,l.isBottomAnchor=m.isBottomAnchor;var y=t(\"./geometry2d\");l.segmentsIntersect=y.segmentsIntersect,l.segmentDistance=y.segmentDistance,l.getTextLocation=y.getTextLocation,l.clearLocationCache=y.clearLocationCache,l.getVisibleSegment=y.getVisibleSegment,l.findPointOnPath=y.findPointOnPath;var x=t(\"./extend\");l.extendFlat=x.extendFlat,l.extendDeep=x.extendDeep,l.extendDeepAll=x.extendDeepAll,l.extendDeepNoArrays=x.extendDeepNoArrays;var b=t(\"./loggers\");l.log=b.log,l.warn=b.warn,l.error=b.error;var _=t(\"./regex\");l.counterRegex=_.counter;var w=t(\"./throttle\");function k(t){var e={};for(var r in t)for(var n=t[r],i=0;i<n.length;i++)e[n[i]]=+r;return e}l.throttle=w.throttle,l.throttleDone=w.done,l.clearThrottle=w.clear,l.getGraphDiv=t(\"./get_graph_div\"),l.clearResponsive=t(\"./clear_responsive\"),l.makeTraceGroups=t(\"./make_trace_groups\"),l._=t(\"./localize\"),l.notifier=t(\"./notifier\"),l.filterUnique=t(\"./filter_unique\"),l.filterVisible=t(\"./filter_visible\"),l.pushUnique=t(\"./push_unique\"),l.cleanNumber=t(\"./clean_number\"),l.ensureNumber=function(t){return i(t)?(t=Number(t))<-o||t>o?s:i(t)?Number(t):s:s},l.isIndex=function(t,e){return!(void 0!==e&&t>=e)&&(i(t)&&t>=0&&t%1==0)},l.noop=t(\"./noop\"),l.identity=t(\"./identity\"),l.repeat=function(t,e){for(var r=new Array(e),n=0;n<e;n++)r[n]=t;return r},l.swapAttrs=function(t,e,r,n){r||(r=\"x\"),n||(n=\"y\");for(var i=0;i<e.length;i++){var a=e[i],o=l.nestedProperty(t,a.replace(\"?\",r)),s=l.nestedProperty(t,a.replace(\"?\",n)),c=o.get();o.set(s.get()),s.set(c)}},l.raiseToTop=function(t){t.parentNode.appendChild(t)},l.cancelTransition=function(t){return t.transition().duration(0)},l.constrain=function(t,e,r){return e>r?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},l.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},l.simpleMap=function(t,e,r,n){for(var i=t.length,a=new Array(i),o=0;o<i;o++)a[o]=e(t[o],r,n);return a},l.randstr=function t(e,r,n,i){if(n||(n=16),void 0===r&&(r=24),r<=0)return\"0\";var a,o,s=Math.log(Math.pow(2,r))/Math.log(n),c=\"\";for(a=2;s===1/0;a*=2)s=Math.log(Math.pow(2,r/a))/Math.log(n)*a;var u=s-Math.floor(s);for(a=0;a<Math.floor(s);a++)c=Math.floor(Math.random()*n).toString(n)+c;u&&(o=Math.pow(n,u),c=Math.floor(Math.random()*o).toString(n)+c);var f=parseInt(c,n);return e&&e[c]||f!==1/0&&f>=Math.pow(2,r)?i>10?(l.warn(\"randstr failed uniqueness\"),c):t(e,r,n,(i||0)+1):c},l.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},l.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r<l;r++)c[r]=(1-Math.cos(Math.PI*(r+1)/e))/(2*e);for(r=0;r<o;r++){for(a=0,n=0;n<l;n++)(i=r+n+1-e)<-o?i-=s*Math.round(i/s):i>=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},l.syncOrAsync=function(t,e,r){var n;function i(){return l.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i).then(void 0,l.promiseError);return r&&r(e)},l.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},l.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n<r.length;n++)null!=t[r[n]]?i=!0:a=!1;if(i&&!a)for(n=0;n<r.length;n++)t[r[n]]=e[r[n]]}},l.mergeArray=function(t,e,r){if(l.isArrayOrTypedArray(t))for(var n=Math.min(t.length,e.length),i=0;i<n;i++)e[i][r]=t[i]},l.fillArray=function(t,e,r,n){if(n=n||l.identity,l.isArrayOrTypedArray(t))for(var i=0;i<e.length;i++)e[i][r]=n(t[i])},l.castOption=function(t,e,r,n){n=n||l.identity;var i=l.nestedProperty(t,r).get();return l.isArrayOrTypedArray(i)?Array.isArray(e)&&l.isArrayOrTypedArray(i[e[0]])?n(i[e[0]][e[1]]):n(i[e]):i},l.extractOption=function(t,e,r,n){if(r in t)return t[r];var i=l.nestedProperty(e,n).get();return Array.isArray(i)?void 0:i},l.tagSelected=function(t,e,r){var n,i,a=e.selectedpoints,o=e._indexToPoints;o&&(n=k(o));for(var s=0;s<a.length;s++){var c=a[s];if(l.isIndex(c)){var u=n?n[c]:c,f=r?r[u]:u;void 0!==(i=f)&&i<t.length&&(t[f].selected=1)}}},l.selIndices2selPoints=function(t){var e=t.selectedpoints,r=t._indexToPoints;if(r){for(var n=k(r),i=[],a=0;a<e.length;a++){var o=e[a];if(l.isIndex(o)){var s=n[o];l.isIndex(s)&&i.push(s)}}return i}return e},l.getTargetArray=function(t,e){var r=e.target;if(\"string\"==typeof r&&r){var n=l.nestedProperty(t,r).get();return!!Array.isArray(n)&&n}return!!Array.isArray(r)&&r},l.minExtend=function(t,e){var r={};\"object\"!=typeof e&&(e={});var n,i,a,o=Object.keys(t);for(n=0;n<o.length;n++)a=t[i=o[n]],\"_\"!==i.charAt(0)&&\"function\"!=typeof a&&(\"module\"===i?r[i]=a:Array.isArray(a)?r[i]=\"colorscale\"===i?a.slice():a.slice(0,3):r[i]=a&&\"object\"==typeof a?l.minExtend(t[i],e[i]):a);for(o=Object.keys(e),n=0;n<o.length;n++)\"object\"==typeof(a=e[i=o[n]])&&i in r&&\"object\"==typeof r[i]||(r[i]=a);return r},l.titleCase=function(t){return t.charAt(0).toUpperCase()+t.substr(1)},l.containsAny=function(t,e){for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r]))return!0;return!1},l.isPlotDiv=function(t){var e=n.select(t);return e.node()instanceof HTMLElement&&e.size()&&e.classed(\"js-plotly-plot\")},l.removeElement=function(t){var e=t&&t.parentNode;e&&e.removeChild(t)},l.addStyleRule=function(t,e){l.addRelatedStyleRule(\"global\",t,e)},l.addRelatedStyleRule=function(t,e,r){var n=\"plotly.js-style-\"+t,i=document.getElementById(n);i||((i=document.createElement(\"style\")).setAttribute(\"id\",n),i.appendChild(document.createTextNode(\"\")),document.head.appendChild(i));var a=i.sheet;a.insertRule?a.insertRule(e+\"{\"+r+\"}\",0):a.addRule?a.addRule(e,r,0):l.warn(\"addStyleRule failed\")},l.deleteRelatedStyleRule=function(t){var e=\"plotly.js-style-\"+t,r=document.getElementById(e);r&&l.removeElement(r)},l.isIE=function(){return\"undefined\"!=typeof window.navigator.msSaveBlob},l.isD3Selection=function(t){return t&&\"function\"==typeof t.classed},l.ensureSingle=function(t,e,r,n){var i=t.select(e+(r?\".\"+r:\"\"));if(i.size())return i;var a=t.append(e);return r&&a.classed(r,!0),n&&a.call(n),a},l.ensureSingleById=function(t,e,r,n){var i=t.select(e+\"#\"+r);if(i.size())return i;var a=t.append(e).attr(\"id\",r);return n&&a.call(n),a},l.objectFromPath=function(t,e){for(var r,n=t.split(\".\"),i=r={},a=0;a<n.length;a++){var o=n[a],s=null,l=n[a].match(/(.*)\\[([0-9]+)\\]/);l?(o=l[1],s=l[2],r=r[o]=[],a===n.length-1?r[s]=e:r[s]={},r=r[s]):(a===n.length-1?r[o]=e:r[o]={},r=r[o])}return i};var A=/^([^\\[\\.]+)\\.(.+)?/,M=/^([^\\.]+)\\[([0-9]+)\\](\\.)?(.+)?/;l.expandObjectPaths=function(t){var e,r,n,i,a,o,s;if(\"object\"==typeof t&&!Array.isArray(t))for(r in t)t.hasOwnProperty(r)&&((e=r.match(A))?(i=t[r],n=e[1],delete t[r],t[n]=l.extendDeepNoArrays(t[n]||{},l.objectFromPath(r,l.expandObjectPaths(i))[n])):(e=r.match(M))?(i=t[r],n=e[1],a=parseInt(e[2]),delete t[r],t[n]=t[n]||[],\".\"===e[3]?(s=e[4],o=t[n][a]=t[n][a]||{},l.extendDeepNoArrays(o,l.objectFromPath(s,l.expandObjectPaths(i)))):t[n][a]=l.expandObjectPaths(i)):t[r]=l.expandObjectPaths(t[r]));return t},l.numSeparate=function(t,e,r){if(r||(r=!1),\"string\"!=typeof e||0===e.length)throw new Error(\"Separator string required for formatting!\");\"number\"==typeof t&&(t=String(t));var n=/(\\d+)(\\d{3})/,i=e.charAt(0),a=e.charAt(1),o=t.split(\".\"),s=o[0],l=o.length>1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l};var T=/%{([^\\s%{}:]*)(:[^}]*)?}/g,S=/^\\w*$/;l.templateString=function(t,e){var r={};return t.replace(T,function(t,n){return S.test(n)?e[n]||\"\":(r[n]=r[n]||l.nestedProperty(e,n).get,r[n]()||\"\")})};var C=/^:/,E=0;l.hovertemplateString=function(t,e){var r=arguments,i={};return t.replace(T,function(t,a,o){var s,c,u;for(u=2;u<r.length;u++){if((s=r[u]).hasOwnProperty(a)){c=s[a];break}if(S.test(a)||(c=i[a]||l.nestedProperty(s,a).get())&&(i[a]=c),void 0!==c)break}return void 0===c&&(E<10&&(l.warn(\"Variable '\"+a+\"' in hovertemplate could not be found!\"),c=t),10===E&&l.warn(\"Too many hovertemplate warnings - additional warnings will be suppressed\"),E++),o?c=n.format(o.replace(C,\"\"))(c):e.hasOwnProperty(a+\"Label\")&&(c=e[a+\"Label\"]),c})};l.subplotSort=function(t,e){for(var r=Math.min(t.length,e.length)+1,n=0,i=0,a=0;a<r;a++){var o=t.charCodeAt(a)||0,s=e.charCodeAt(a)||0,l=o>=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var L=2e9;l.seedPseudoRandom=function(){L=2e9},l.pseudoRandom=function(){var t=L;return L=(69069*L+1)%4294967296,Math.abs(L-t)<429496729?l.pseudoRandom():L/4294967296}},{\"../constants/numerical\":671,\"./anchor_utils\":675,\"./angles\":676,\"./array\":677,\"./clean_number\":678,\"./clear_responsive\":680,\"./coerce\":681,\"./dates\":682,\"./extend\":684,\"./filter_unique\":685,\"./filter_visible\":686,\"./geometry2d\":689,\"./get_graph_div\":690,\"./identity\":693,\"./is_plain_object\":695,\"./keyed_container\":696,\"./localize\":697,\"./loggers\":698,\"./make_trace_groups\":699,\"./matrix\":700,\"./mod\":701,\"./nested_property\":702,\"./noop\":703,\"./notifier\":704,\"./push_unique\":708,\"./regex\":710,\"./relative_attr\":711,\"./relink_private\":712,\"./search\":713,\"./stats\":716,\"./throttle\":719,\"./to_log_range\":720,d3:149,\"fast-isnumeric\":215}],695:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t)===Object.prototype}},{}],696:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o<s.length;o++)u[s[o][r]]=o;var f=i.test(a),h={set:function(t,e){var i=null===e?4:0;if(!s){if(!l||4===i)return;s=[],l.set(s)}var o=u[t];if(void 0===o){if(4===i)return;i|=3,o=s.length,u[t]=o}else e!==(f?s[o][a]:n(s[o],a).get())&&(i|=2);var p=s[o]=s[o]||{};return p[r]=t,f?p[a]=e:n(p,a).set(e),null!==e&&(i&=-5),c[o]=c[o]|i,h},get:function(t){if(s){var e=u[t];return void 0===e?void 0:f?s[e][a]:n(s[e],a).get()}},rename:function(t,e){var n=u[t];return void 0===n?h:(c[n]=1|c[n],u[e]=n,delete u[t],s[n][r]=e,h)},remove:function(t){var e=u[t];if(void 0===e)return h;var i=s[e];if(Object.keys(i).length>2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o<s.length;o++)c[o]=3|c[o];for(o=e;o<s.length;o++)u[s[o][r]]--;s.splice(e,1),delete u[t]}else n(i,a).set(null),c[e]=6|c[e];return h},constructUpdate:function(){for(var t,i,o={},l=Object.keys(c),u=0;u<l.length;u++)i=l[u],t=e+\"[\"+i+\"]\",s[i]?(1&c[i]&&(o[t+\".\"+r]=s[i][r]),2&c[i]&&(o[t+\".\"+a]=f?4&c[i]?null:s[i][a]:4&c[i]?null:n(s[i],a).get())):o[t]=null;return o}};return h}},{\"./nested_property\":702}],697:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t,e){for(var r=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[r]||{}).dictionary;if(s){var l=s[e];if(l)return l}a=n.localeRegistry}var c=r.split(\"-\")[0];if(c===r)break;r=c}return e}},{\"../registry\":825}],698:[function(t,e,r){\"use strict\";var n=t(\"../plot_api/plot_config\").dfltConfig,i=e.exports={};function a(t,e){if(t&&t.apply)try{return void t.apply(console,e)}catch(t){}for(var r=0;r<e.length;r++)try{t(e[r])}catch(t){console.log(e[r])}}i.log=function(){if(n.logging>1){for(var t=[\"LOG:\"],e=0;e<arguments.length;e++)t.push(arguments[e]);a(console.trace||console.log,t)}},i.warn=function(){if(n.logging>0){for(var t=[\"WARN:\"],e=0;e<arguments.length;e++)t.push(arguments[e]);a(console.trace||console.log,t)}},i.error=function(){if(n.logging>0){for(var t=[\"ERROR:\"],e=0;e<arguments.length;e++)t.push(arguments[e]);a(console.error,t)}}},{\"../plot_api/plot_config\":730}],699:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,function(t){return t[0].trace.uid});return n.exit().remove(),n.enter().append(\"g\").attr(\"class\",r),n.order(),n}},{}],700:[function(t,e,r){\"use strict\";r.init2dArray=function(t,e){for(var r=new Array(t),n=0;n<t;n++)r[n]=new Array(e);return r},r.transposeRagged=function(t){var e,r,n=0,i=t.length;for(e=0;e<i;e++)n=Math.max(n,t[e].length);var a=new Array(n);for(e=0;e<n;e++)for(a[e]=new Array(i),r=0;r<i;r++)a[e][r]=t[r][e];return a},r.dot=function(t,e){if(!t.length||!e.length||t.length!==e.length)return null;var n,i,a=t.length;if(t[0].length)for(n=new Array(a),i=0;i<a;i++)n[i]=r.dot(t[i],e);else if(e[0].length){var o=r.transposeRagged(e);for(n=new Array(o.length),i=0;i<o.length;i++)n[i]=r.dot(t,o[i])}else for(n=0,i=0;i<a;i++)n+=t[i]*e[i];return n},r.translationMatrix=function(t,e){return[[1,0,t],[0,1,e],[0,0,1]]},r.rotationMatrix=function(t){var e=t*Math.PI/180;return[[Math.cos(e),-Math.sin(e),0],[Math.sin(e),Math.cos(e),0],[0,0,1]]},r.rotationXYMatrix=function(t,e,n){return r.dot(r.dot(r.translationMatrix(e,n),r.rotationMatrix(t)),r.translationMatrix(-e,-n))},r.apply2DTransform=function(t){return function(){var e=arguments;3===e.length&&(e=e[0]);var n=1===arguments.length?e[0]:[e[0],e[1]];return r.dot(t,[n[0],n[1],1]).slice(0,2)}},r.apply2DTransform2=function(t){var e=r.apply2DTransform(t);return function(t){return e(t.slice(0,2)).concat(e(t.slice(2,4)))}}},{}],701:[function(t,e,r){\"use strict\";e.exports={mod:function(t,e){var r=t%e;return r<0?r+e:r},modHalf:function(t,e){return Math.abs(t)>e/2?t-Math.round(t/e)*e:t}}},{}],702:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;e.exports=function(t,e){if(n(e))e=String(e);else if(\"string\"!=typeof e||\"[-1]\"===e.substr(e.length-4))throw\"bad property string\";for(var r,a,o,l=0,c=e.split(\".\");l<c.length;){if(r=String(c[l]).match(/^([^\\[\\]]*)((\\[\\-?[0-9]*\\])+)$/)){if(r[1])c[l]=r[1];else{if(0!==l)throw\"bad property string\";c.splice(0,1)}for(a=r[2].substr(1,r[2].length-2).split(\"][\"),o=0;o<a.length;o++)l++,c.splice(l,0,Number(a[o]))}l++}return\"object\"!=typeof t?function(t,e,r){return{set:function(){throw\"bad container\"},get:function(){},astr:e,parts:r,obj:t}}(t,e,c):{set:s(t,c,e),get:function t(e,r){return function(){var n,a,o,s,l,c=e;for(s=0;s<r.length-1;s++){if(-1===(n=r[s])){for(a=!0,o=[],l=0;l<c.length;l++)o[l]=t(c[l],r.slice(s+1))(),o[l]!==o[0]&&(a=!1);return a?o[0]:o}if(\"number\"==typeof n&&!i(c))return;if(\"object\"!=typeof(c=c[n])||null===c)return}if(\"object\"==typeof c&&null!==c&&null!==(o=c[r[s]]))return o}}(t,c),astr:e,parts:c,obj:t}};var a=/(^|\\.)args\\[/;function o(t,e){return void 0===t||null===t&&!e.match(a)}function s(t,e,r){return function(n){var a,s,f=t,h=\"\",p=[[t,h]],d=o(n,r);for(s=0;s<e.length-1;s++){if(\"number\"==typeof(a=e[s])&&!i(f))throw\"array index but container is not an array\";if(-1===a){if(d=!c(f,e.slice(s+1),n,r))break;return}if(!u(f,a,e[s+1],d))break;if(\"object\"!=typeof(f=f[a])||null===f)throw\"container is not an object\";h=l(h,a),p.push([f,h])}if(d){if(s===e.length-1&&(delete f[e[s]],Array.isArray(f)&&+e[s]==f.length-1))for(;f.length&&void 0===f[f.length-1];)f.pop()}else f[e[s]]=n}}function l(t,e){var r=e;return n(e)?r=\"[\"+e+\"]\":t&&(r=\".\"+e),t+r}function c(t,e,r,n){var a,l=i(r),c=!0,f=r,h=n.replace(\"-1\",0),p=!l&&o(r,h),d=e[0];for(a=0;a<t.length;a++)h=n.replace(\"-1\",a),l&&(p=o(f=r[a%r.length],h)),p&&(c=!1),u(t,a,d,p)&&s(t[a],e,n.replace(\"-1\",a))(f);return c}function u(t,e,r,n){if(void 0===t[e]){if(n)return!1;t[e]=\"number\"==typeof r?[]:{}}return!0}},{\"./array\":677,\"fast-isnumeric\":215}],703:[function(t,e,r){\"use strict\";e.exports=function(){}},{}],704:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=[];e.exports=function(t,e){if(-1===a.indexOf(t)){a.push(t);var r=1e3;i(e)?r=e:\"long\"===e&&(r=3e3);var o=n.select(\"body\").selectAll(\".plotly-notifier\").data([0]);o.enter().append(\"div\").classed(\"plotly-notifier\",!0),o.selectAll(\".notifier-note\").data(a).enter().append(\"div\").classed(\"notifier-note\",!0).style(\"opacity\",0).each(function(t){var e=n.select(this);e.append(\"button\").classed(\"notifier-close\",!0).html(\"&times;\").on(\"click\",function(){e.transition().call(s)});for(var i=e.append(\"p\"),a=t.split(/<br\\s*\\/?>/g),o=0;o<a.length;o++)o&&i.append(\"br\"),i.append(\"span\").text(a[o]);e.transition().duration(700).style(\"opacity\",1).transition().delay(r).call(s)})}function s(t){t.duration(700).style(\"opacity\",0).each(\"end\",function(t){var e=a.indexOf(t);-1!==e&&a.splice(e,1),n.select(this).remove()})}}},{d3:149,\"fast-isnumeric\":215}],705:[function(t,e,r){\"use strict\";var n=t(\"./setcursor\"),i=\"data-savedcursor\";e.exports=function(t,e){var r=t.attr(i);if(e){if(!r){for(var a=(t.attr(\"class\")||\"\").split(\" \"),o=0;o<a.length;o++){var s=a[o];0===s.indexOf(\"cursor-\")&&t.attr(i,s.substr(7)).classed(s,!1)}t.attr(i)||t.attr(i,\"!!\")}n(t,e)}else r&&(t.attr(i,null),\"!!\"===r?n(t):n(t,r))}},{\"./setcursor\":714}],706:[function(t,e,r){\"use strict\";var n=t(\"./matrix\").dot,i=t(\"../constants/numerical\").BADNUM,a=e.exports={};a.tester=function(t){var e,r=t.slice(),n=r[0][0],a=n,o=r[0][1],s=o;for(r.push(r[0]),e=1;e<r.length;e++)n=Math.min(n,r[e][0]),a=Math.max(a,r[e][0]),o=Math.min(o,r[e][1]),s=Math.max(s,r[e][1]);var l,c=!1;5===r.length&&(r[0][0]===r[1][0]?r[2][0]===r[3][0]&&r[0][1]===r[3][1]&&r[1][1]===r[2][1]&&(c=!0,l=function(t){return t[0]===r[0][0]}):r[0][1]===r[1][1]&&r[2][1]===r[3][1]&&r[0][0]===r[3][0]&&r[1][0]===r[2][0]&&(c=!0,l=function(t){return t[1]===r[0][1]}));var u=!0,f=r[0];for(e=1;e<r.length;e++)if(f[0]!==r[e][0]||f[1]!==r[e][1]){u=!1;break}return{xmin:n,xmax:a,ymin:o,ymax:s,pts:r,contains:c?function(t,e){var r=t[0],c=t[1];return!(r===i||r<n||r>a||c===i||c<o||c>s||e&&l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||l<n||l>a||c===i||c<o||c>s)return!1;var u,f,h,p,d,g=r.length,v=r[0][0],m=r[0][1],y=0;for(u=1;u<g;u++)if(f=v,h=m,v=r[u][0],m=r[u][1],!(l<(p=Math.min(f,v))||l>Math.max(f,v)||c>Math.max(h,m)))if(c<Math.min(h,m))l!==p&&y++;else{if(c===(d=v===f?c:h+(l-f)*(m-h)/(v-f)))return 1!==u||!e;c<=d&&l!==p&&y++}return y%2==1},isRect:c,degenerate:u}};var o=a.isSegmentBent=function(t,e,r,i){var a,o,s,l=t[e],c=[t[r][0]-l[0],t[r][1]-l[1]],u=n(c,c),f=Math.sqrt(u),h=[-c[1]/f,c[0]/f];for(a=e+1;a<r;a++)if(o=[t[a][0]-l[0],t[a][1]-l[1]],(s=n(o,c))<0||s>u||Math.abs(n(o,h))>i)return!0;return!1};a.filter=function(t,e){var r=[t[0]],n=0,i=0;function a(a){t.push(a);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c<t.length;c++)(c===t.length-1||o(t,l,c+1,e))&&(r.push(t[c]),r.length<s-2&&(n=c,i=r.length-1),l=c)}t.length>1&&a(t.pop());return{addPt:a,raw:t,filtered:r}}},{\"../constants/numerical\":671,\"./matrix\":700}],707:[function(t,e,r){(function(r){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each(function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}o&&this.addEventListener(\"webglcontextlost\",function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})},!1)}}),o||n({container:a._glcontainer.node()}),o}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":715,regl:480}],708:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;n<t.length;n++)if(t[n]instanceof RegExp&&t[n].toString()===r)return t;t.push(e)}else!e&&0!==e||-1!==t.indexOf(e)||t.push(e);return t}},{}],709:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plot_api/plot_config\").dfltConfig;var a={add:function(t,e,r,n,a){var o,s;t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},s=t.undoQueue.index,t.autoplay?t.undoQueue.inSequence||(t.autoplay=!1):(!t.undoQueue.sequence||t.undoQueue.beginSequence?(o={undo:{calls:[],args:[]},redo:{calls:[],args:[]}},t.undoQueue.queue.splice(s,t.undoQueue.queue.length-s,o),t.undoQueue.index+=1):o=t.undoQueue.queue[s-1],t.undoQueue.beginSequence=!1,o&&(o.undo.calls.unshift(e),o.undo.args.unshift(r),o.redo.calls.push(n),o.redo.args.push(a)),t.undoQueue.queue.length>i.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(t.framework&&t.framework.isPolar)t.framework.undo();else if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r<e.undo.calls.length;r++)a.plotDo(t,e.undo.calls[r],e.undo.args[r]);t.undoQueue.inSequence=!1,t.autoplay=!1}},redo:function(t){var e,r;if(t.framework&&t.framework.isPolar)t.framework.redo();else if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index>=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r<e.redo.calls.length;r++)a.plotDo(t,e.redo.calls[r],e.redo.args[r]);t.undoQueue.inSequence=!1,t.autoplay=!1,t.undoQueue.index++}}};a.plotDo=function(t,e,r){t.autoplay=!0,r=function(t,e){for(var r,i=[],a=0;a<e.length;a++)r=e[a],i[a]=r===t?r:\"object\"==typeof r?Array.isArray(r)?n.extendDeep([],r):n.extendDeepAll({},r):r;return i}(t,r),e.apply(null,r)},e.exports=a},{\"../lib\":694,\"../plot_api/plot_config\":730}],710:[function(t,e,r){\"use strict\";r.counter=function(t,e,r,n){var i=(e||\"\")+(r?\"\":\"$\"),a=!1===n?\"\":\"^\";return\"xy\"===t?new RegExp(a+\"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?\"+i):new RegExp(a+t+\"([2-9]|[1-9][0-9]+)?\"+i)}},{}],711:[function(t,e,r){\"use strict\";var n=/^(.*)(\\.[^\\.\\[\\]]+|\\[\\d\\])$/,i=/^[^\\.\\[\\]]+$/;e.exports=function(t,e){for(;e;){var r=t.match(n);if(r)t=r[1];else{if(!t.match(i))throw new Error(\"bad relativeAttr call:\"+[t,e]);t=\"\"}if(\"^\"!==e.charAt(0))break;e=e.slice(1)}return t&&\"[\"!==e.charAt(0)?t+\".\"+e:t+e}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"./array\").isArrayOrTypedArray,i=t(\"./is_plain_object\");e.exports=function t(e,r){for(var a in r){var o=r[a],s=e[a];if(s!==o)if(\"_\"===a.charAt(0)||\"function\"==typeof o){if(a in e)continue;e[a]=o}else if(n(o)&&n(s)&&i(o[0])){if(\"customdata\"===a||\"ids\"===a)continue;for(var l=Math.min(o.length,s.length),c=0;c<l;c++)s[c]!==o[c]&&i(o[c])&&i(s[c])&&t(s[c],o[c])}else i(o)&&i(s)&&(t(s,o),Object.keys(s).length||delete e[a])}}},{\"./array\":677,\"./is_plain_object\":695}],713:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./loggers\"),a=t(\"./identity\");function o(t,e){return t<e}function s(t,e){return t<=e}function l(t,e){return t>e}function c(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,u,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(u=d>=0?r?o:s:r?c:l,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f<h&&p++<100;)u(e[a=Math.floor((f+h)/2)],t)?f=a+1:h=a;return p>90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e=t.slice();e.sort(r.sorterAsc);for(var n=e.length-1,i=e[n]-e[0]||1,a=i/(n||1)/1e4,o=[e[0]],s=0;s<n;s++)e[s+1]>e[s]+a&&(i=Math.min(i,e[s+1]-e[s]),o.push(e[s+1]));return{vals:o,minDiff:i}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i<a&&o++<100;)e[n=c((i+a)/2)]<=t?i=n+s:a=n-l;return e[i]},r.sort=function(t,e){for(var r=0,n=0,i=1;i<t.length;i++){var a=e(t[i],t[i-1]);if(a<0?r=1:a>0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;i<t.length;i++){var o=e(t[i]);o<n&&(n=o,r=i)}return r}},{\"./identity\":693,\"./loggers\":698,\"fast-isnumeric\":215}],714:[function(t,e,r){\"use strict\";e.exports=function(t,e){(t.attr(\"class\")||\"\").split(\" \").forEach(function(e){0===e.indexOf(\"cursor-\")&&t.classed(e,!1)}),e&&t.classed(\"cursor-\"+e,!0)}},{}],715:[function(t,e,r){\"use strict\";var n=t(\"../components/color\"),i=function(){};e.exports=function(t){for(var e in t)\"function\"==typeof t[e]&&(t[e]=i);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var r=document.createElement(\"div\");r.className=\"no-webgl\",r.style.cursor=\"pointer\",r.style.fontSize=\"24px\",r.style.color=n.defaults[0],r.style.position=\"absolute\",r.style.left=r.style.top=\"0px\",r.style.width=r.style.height=\"100%\",r.style[\"background-color\"]=n.lightLine,r.style[\"z-index\"]=30;var a=document.createElement(\"p\");return a.textContent=\"WebGL is not supported by your browser - visit https://get.webgl.org for more info\",a.style.position=\"relative\",a.style.top=\"50%\",a.style.left=\"50%\",a.style.height=\"30%\",a.style.width=\"50%\",a.style.margin=\"-15% 0 0 -25%\",r.appendChild(a),t.container.appendChild(r),t.container.style.background=\"#FFFFFF\",t.container.onclick=function(){window.open(\"https://get.webgl.org\")},!1}},{\"../components/color\":571}],716:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;r.aggNums=function(t,e,a,o){var s,l;if((!o||o>a.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;s<o;s++)l[s]=r.aggNums(t,e,a[s]);a=l}for(s=0;s<o;s++)n(e)?n(a[s])&&(e=t(+e,+a[s])):e=a[s];return e},r.len=function(t){return r.aggNums(function(t){return t+1},0,t)},r.mean=function(t,e){return e||(e=r.len(t)),r.aggNums(function(t,e){return t+e},0,t)/e},r.midRange=function(t){if(void 0!==t&&0!==t.length)return(r.aggNums(Math.max,null,t)+r.aggNums(Math.min,null,t))/2},r.variance=function(t,e,i){return e||(e=r.len(t)),n(i)||(i=r.mean(t,e)),r.aggNums(function(t,e){return t+Math.pow(e-i,2)},0,t)/e},r.stdev=function(t,e,n){return Math.sqrt(r.variance(t,e,n))},r.interp=function(t,e){if(!n(e))throw\"n should be a finite number\";if((e=e*t.length-.5)<0)return t[0];if(e>t.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":677,\"fast-isnumeric\":215}],717:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":109}],718:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../lib\"),a=t(\"../constants/xmlns_namespaces\"),o=t(\"../constants/alignment\").LINE_SPACING;function s(t,e){return t.node().getBoundingClientRect()[e]}var l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,T){var S=t.text(),E=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&S.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var z=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return z+=\"-math\",L.selectAll(\"svg.\"+z).remove(),L.selectAll(\"g.\"+z+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":S,\"data-math\":\"N\"}),E?(e&&e._promises||[]).push(new Promise(function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),a={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue(function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})},function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")},function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())},function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)},function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)})}(E[2],a,function(n,i,a){L.selectAll(\"svg.\"+z).remove(),L.selectAll(\"g.\"+z+\"-group\").remove();var o=n&&n.select(\"svg\");if(!o||!o.node())return O(),void e();var l=L.append(\"g\").classed(z+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":S,\"data-math\":\"Y\"});l.node().appendChild(o.node()),i&&i.node()&&o.node().insertBefore(i.node().cloneNode(!0),o.node().firstChild),o.attr({class:z,height:a.height,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var c=t.node().style.fill||\"black\";o.select(\"g\").attr({fill:c,stroke:c});var u=s(o,\"width\"),f=s(o,\"height\"),h=+t.attr(\"x\")-u*{start:0,middle:.5,end:1}[t.attr(\"text-anchor\")||\"start\"],p=-(r||s(t,\"height\"))/4;\"y\"===z[0]?(l.attr({transform:\"rotate(\"+[-90,+t.attr(\"x\"),+t.attr(\"y\")]+\") translate(\"+[-u/2,p-f/2]+\")\"}),o.attr({x:+t.attr(\"x\"),y:+t.attr(\"y\")})):\"l\"===z[0]?o.attr({x:t.attr(\"x\"),y:p-f/2}):\"a\"===z[0]&&0!==z.indexOf(\"atitle\")?o.attr({x:0,y:p}):o.attr({x:h,y:+t.attr(\"y\")+p-f/2}),T&&T.call(t,l),e(l)})})):O(),t}function O(){L.empty()||(z=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+z).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(v,\" \");var r,s=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(a.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*o+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var s=1;s<i.length;s++)T(i[s])}function T(t){var e,i=t.type,o={};if(\"a\"===i){e=\"a\";var s=t.target,c=t.href,u=t.popup;c&&(o={\"xlink:xlink:show\":\"_blank\"===s||\"_\"!==s.charAt(0)?\"new\":\"replace\",target:s,\"xlink:xlink:href\":c},u&&(o.onclick='window.open(this.href.baseVal,this.target.baseVal,\"'+u+'\");return false;'))}else e=\"tspan\";t.style&&(o.style=t.style);var f=document.createElementNS(a.svg,e);if(\"sup\"===i||\"sub\"===i){S(r,d),r.appendChild(f);var g=document.createElementNS(a.svg,\"tspan\");S(g,d),n.select(g).attr(\"dy\",p[i]),o.dy=h[i],r.appendChild(f),r.appendChild(g)}else r.appendChild(f);n.select(f).attr(o),r=t.node=f,l.push(t)}function S(t,e){t.appendChild(document.createTextNode(e))}function E(t){if(1!==l.length){var n=l.pop();t!==n.type&&i.log(\"Start tag <\"+n.type+\"> doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag </\"+t+\">.\",e)}x.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),z=0;z<L.length;z++){var O=L[z],I=O.match(y),D=I&&I[2].toLowerCase(),P=f[D];if(\"br\"===D)u();else if(void 0===P)S(r,C(O));else if(I[1])E(D);else{var R=I[4],F={type:D},B=A(R,b);if(B?(B=B.replace(M,\"$1 fill:\"),P&&(B+=\";\"+P)):P&&(B=P),B&&(F.style=B),\"a\"===D){s=!0;var N=A(R,_);if(N){var j=document.createElement(\"a\");j.href=N,-1!==g.indexOf(j.protocol)&&(F.href=encodeURI(decodeURI(N)),F.target=A(R,w)||\"_blank\",F.popup=A(R,k))}}T(F)}}return s}(t.node(),S)&&t.style(\"pointer-events\",\"all\"),r.positionText(t),T&&T.call(t)}};var c=/(<|&lt;|&#60;)/g,u=/(>|&gt;|&#62;)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=\"\\u200b\",g=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],v=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,y=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,x=/<br(\\s+.*)?>/i,b=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,_=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,w=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,k=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function A(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&C(n)}var M=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;c<a.length;c++){var u=a[c],f=u.match(y),h=f&&f[2].toLowerCase();if(h)-1!==n.indexOf(h)&&(o.push(u),s=h);else{var p=u.length;if(l+p<r)o.push(u),l+=p;else if(l<r){var d=r-l;s&&(\"br\"!==s||d<=i||p<=i)&&o.pop(),r>i?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var T={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},S=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function C(t){return t.replace(S,function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):T[e])||t})}function E(t,e,r){var n,i,a,o=r.horizontalAlign,s=r.verticalAlign||\"top\",l=t.node().getBoundingClientRect(),c=e.node().getBoundingClientRect();return i=\"bottom\"===s?function(){return l.bottom-n.height}:\"middle\"===s?function(){return l.top+(l.height-n.height)/2}:function(){return l.top},a=\"right\"===o?function(){return l.right-n.width}:\"center\"===o?function(){return l.left+(l.width-n.width)/2}:function(){return l.left},function(){return n=this.node().getBoundingClientRect(),this.style({top:i()-c.top+\"px\",left:a()-c.left+\"px\",\"z-index\":1e3}),this}}r.convertEntities=C,r.lineCount=function(t){return t.selectAll(\"tspan.line\").size()||1},r.positionText=function(t,e,r){return t.each(function(){var t=n.select(this);function i(e,r){return void 0===r?null===(r=t.attr(e))&&(t.attr(e,0),r=0):t.attr(e,r),r}var a=i(\"x\",e),o=i(\"y\",r);\"text\"===this.nodeName&&t.selectAll(\"tspan.line\").attr({x:a,y:o})})},r.makeEditable=function(t,e){var r=e.gd,i=e.delegate,a=n.dispatch(\"edit\",\"input\",\"cancel\"),o=i||t;if(t.style({\"pointer-events\":i?\"none\":\"all\"}),1!==t.size())throw new Error(\"boo\");function s(){!function(){var i=n.select(r).select(\".svg-container\"),o=i.append(\"div\"),s=t.node().style,c=parseFloat(s.fontSize||12),u=e.text;void 0===u&&(u=t.attr(\"data-unformatted\"));o.classed(\"plugin-editable editable\",!0).style({position:\"absolute\",\"font-family\":s.fontFamily||\"Arial\",\"font-size\":c,color:e.fill||s.fill||\"black\",opacity:1,\"background-color\":e.background||\"transparent\",outline:\"#ffffff33 1px solid\",margin:[-c/8+1,0,0,-1].join(\"px \")+\"px\",padding:\"0\",\"box-sizing\":\"border-box\"}).attr({contenteditable:!0}).text(u).call(E(t,i,e)).on(\"blur\",function(){r._editing=!1,t.text(this.textContent).style({opacity:1});var e,i=n.select(this).attr(\"class\");(e=i?\".\"+i.split(\" \")[0]+\"-math-group\":\"[class*=-math-group]\")&&n.select(t.node().parentNode).select(e).style({opacity:0});var o=this.textContent;n.select(this).transition().duration(0).remove(),n.select(document).on(\"mouseup\",null),a.edit.call(t,o)}).on(\"focus\",function(){var t=this;r._editing=!0,n.select(document).on(\"mouseup\",function(){if(n.event.target===t)return!1;document.activeElement===o.node()&&o.node().blur()})}).on(\"keyup\",function(){27===n.event.which?(r._editing=!1,t.style({opacity:1}),n.select(this).style({opacity:0}).on(\"blur\",function(){return!1}).transition().remove(),a.cancel.call(t,this.textContent)):(a.input.call(t,this.textContent),n.select(this).call(E(t,i,e)))}).on(\"keydown\",function(){13===n.event.which&&this.blur()}).call(l)}(),t.style({opacity:0});var i,s=o.attr(\"class\");(i=s?\".\"+s.split(\" \")[0]+\"-math-group\":\"[class*=-math-group]\")&&n.select(t.node().parentNode).select(i).style({opacity:0})}function l(t){var e=t.node(),r=document.createRange();r.selectNodeContents(e);var n=window.getSelection();n.removeAllRanges(),n.addRange(r),e.focus()}return e.immediate?s():o.on(\"click\",s),n.rebind(t,a,\"on\")}},{\"../constants/alignment\":666,\"../constants/xmlns_namespaces\":672,\"../lib\":694,d3:149}],719:[function(t,e,r){\"use strict\";var n={};function i(t){t&&null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}r.throttle=function(t,e,r){var a=n[t],o=Date.now();if(!a){for(var s in n)n[s].ts<o-6e4&&delete n[s];a=n[t]={ts:0,timer:null}}function l(){r(),a.ts=Date.now(),a.onDone&&(a.onDone(),a.onDone=null)}i(a),o>a.ts+e?l():a.timer=setTimeout(function(){l(),a.timer=null},e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise(function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}}):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],720:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":215}],721:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":771,\"topojson-client\":518}],722:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],723:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],724:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s<a.length;s++)if((r=t.match(a[s]))&&0===r.index){e=r[0];break}if(e||(e=i[i.indexOf(o)]),!e)return!1;var l=t.substr(e.length);return l?!!(r=l.match(/^\\[(0|[1-9][0-9]*)\\](\\.(.+))?$/))&&{array:e,index:Number(r[1]),property:r[3]||\"\"}:{array:e,index:\"\",property:\"\"}}},{\"../registry\":825}],725:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=n.extendFlat,a=n.isPlainObject,o={valType:\"flaglist\",extras:[\"none\"],flags:[\"calc\",\"clearAxisTypes\",\"plot\",\"style\",\"markerSize\",\"colorbars\"]},s={valType:\"flaglist\",extras:[\"none\"],flags:[\"calc\",\"plot\",\"legend\",\"ticks\",\"axrange\",\"layoutstyle\",\"modebar\",\"camera\",\"arraydraw\"]},l=o.flags.slice().concat([\"fullReplot\"]),c=s.flags.slice().concat(\"layoutReplot\");function u(t){for(var e={},r=0;r<t.length;r++)e[t[r]]=!1;return e}function f(t,e,r){var n=i({},t);for(var o in n){var s=n[o];a(s)&&(n[o]=h(s,e,r,o))}return\"from-root\"===r&&(n.editType=e),n}function h(t,e,r,n){if(t.valType){var a=i({},t);if(a.editType=e,Array.isArray(t.items)){a.items=new Array(t.items.length);for(var o=0;o<t.items.length;o++)a.items[o]=h(t.items[o],e,\"from-root\")}return a}return f(t,e,\"_\"===n.charAt(0)?\"nested\":\"from-root\")}e.exports={traces:o,layout:s,traceFlags:function(){return u(l)},layoutFlags:function(){return u(c)},update:function(t,e){var r=e.editType;if(r&&\"none\"!==r)for(var n=r.split(\"+\"),i=0;i<n.length;i++)t[n[i]]=!0},overrideAll:f}},{\"../lib\":694}],726:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"gl-mat4/fromQuat\"),a=t(\"../registry\"),o=t(\"../lib\"),s=t(\"../plots/plots\"),l=t(\"../plots/cartesian/axis_ids\"),c=l.cleanId,u=l.getFromTrace,f=t(\"../components/color\");function h(t,e){var r=t[e],n=e.charAt(0);r&&\"paper\"!==r&&(t[e]=c(r,n))}function p(t){function e(e,r){var n=t[e],i=t.title&&t.title[r];n&&!i&&(t.title||(t.title={}),t.title[r]=t[e],delete t[e])}t&&(\"string\"!=typeof t.title&&\"number\"!=typeof t.title||(t.title={text:t.title}),e(\"titlefont\",\"font\"),e(\"titleposition\",\"position\"),e(\"titleside\",\"side\"),e(\"titleoffset\",\"offset\"))}function d(t){if(!o.isPlainObject(t))return!1;var e=t.name;return delete t.name,delete t.showlegend,(\"string\"==typeof e||\"number\"==typeof e)&&String(e)}function g(t,e,r,n){if(r&&!n)return t;if(n&&!r)return e;if(!t.trim())return e;if(!e.trim())return t;var i,a=Math.min(t.length,e.length);for(i=0;i<a&&t.charAt(i)===e.charAt(i);i++);return t.substr(0,i).trim()}function v(t){var e=\"middle\",r=\"center\";return\"string\"==typeof t&&(-1!==t.indexOf(\"top\")?e=\"top\":-1!==t.indexOf(\"bottom\")&&(e=\"bottom\"),-1!==t.indexOf(\"left\")?r=\"left\":-1!==t.indexOf(\"right\")&&(r=\"right\")),e+\" \"+r}function m(t,e){return e in t&&\"object\"==typeof t[e]&&0===Object.keys(t[e]).length}r.clearPromiseQueue=function(t){Array.isArray(t._promises)&&t._promises.length>0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,u=(s.subplotsRegistry.ternary||{}).attrRegex,d=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e<g.length;e++){var v=g[e];if(a&&a.test(v)){var y=t[v];y.anchor&&\"free\"!==y.anchor&&(y.anchor=c(y.anchor)),y.overlaying&&(y.overlaying=c(y.overlaying)),y.type||(y.isdate?y.type=\"date\":y.islog?y.type=\"log\":!1===y.isdate&&!1===y.islog&&(y.type=\"linear\")),\"withzero\"!==y.autorange&&\"tozero\"!==y.autorange||(y.autorange=!0,y.rangemode=\"tozero\"),delete y.islog,delete y.isdate,delete y.categories,m(y,\"domain\")&&delete y.domain,void 0!==y.autotick&&(void 0===y.tickmode&&(y.tickmode=y.autotick?\"auto\":\"linear\"),delete y.autotick),p(y)}else if(l&&l.test(v)){p(t[v].radialaxis)}else if(u&&u.test(v)){var x=t[v];p(x.aaxis),p(x.baxis),p(x.caxis)}else if(d&&d.test(v)){var b=t[v],_=b.cameraposition;if(Array.isArray(_)&&4===_[0].length){var w=_[0],k=_[1],A=_[2],M=i([],w),T=[];for(n=0;n<3;++n)T[n]=k[n]+A*M[2+4*n];b.camera={eye:{x:T[0],y:T[1],z:T[2]},center:{x:k[0],y:k[1],z:k[2]},up:{x:0,y:0,z:1}},delete b.cameraposition}p(b.xaxis),p(b.yaxis),p(b.zaxis)}}var S=Array.isArray(t.annotations)?t.annotations.length:0;for(e=0;e<S;e++){var C=t.annotations[e];o.isPlainObject(C)&&(C.ref&&(\"paper\"===C.ref?(C.xref=\"paper\",C.yref=\"paper\"):\"data\"===C.ref&&(C.xref=\"x\",C.yref=\"y\"),delete C.ref),h(C,\"xref\"),h(C,\"yref\"))}var E=Array.isArray(t.shapes)?t.shapes.length:0;for(e=0;e<E;e++){var L=t.shapes[e];o.isPlainObject(L)&&(h(L,\"xref\"),h(L,\"yref\"))}var z=t.legend;return z&&(z.x>3?(z.x=1.02,z.xanchor=\"left\"):z.x<-2&&(z.x=-.02,z.xanchor=\"right\"),z.y>3?(z.y=1.02,z.yanchor=\"bottom\"):z.y<-2&&(z.y=-.02,z.yanchor=\"top\")),p(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),f.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e<t.length;e++){var n,i=t[e];if(\"histogramy\"===i.type&&\"xbins\"in i&&!(\"ybins\"in i)&&(i.ybins=i.xbins,delete i.xbins),i.error_y&&\"opacity\"in i.error_y){var l=f.defaults,u=i.error_y.color||(a.traceIs(i,\"bar\")?f.defaultLine:l[e%l.length]);i.error_y.color=f.addOpacity(f.rgb(u),f.opacity(u)*i.error_y.opacity),delete i.error_y.opacity}if(\"bardir\"in i&&(\"h\"!==i.bardir||!a.traceIs(i,\"bar\")&&\"histogram\"!==i.type.substr(0,9)||(i.orientation=\"h\",r.swapXYData(i)),delete i.bardir),\"histogramy\"===i.type&&r.swapXYData(i),\"histogramx\"!==i.type&&\"histogramy\"!==i.type||(i.type=\"histogram\"),\"scl\"in i&&!(\"colorscale\"in i)&&(i.colorscale=i.scl,delete i.scl),\"reversescl\"in i&&!(\"reversescale\"in i)&&(i.reversescale=i.reversescl,delete i.reversescl),i.xaxis&&(i.xaxis=c(i.xaxis,\"x\")),i.yaxis&&(i.yaxis=c(i.yaxis,\"y\")),a.traceIs(i,\"gl3d\")&&i.scene&&(i.scene=s.subplotsRegistry.gl3d.cleanId(i.scene)),!a.traceIs(i,\"pie\")&&!a.traceIs(i,\"bar\"))if(Array.isArray(i.textposition))for(n=0;n<i.textposition.length;n++)i.textposition[n]=v(i.textposition[n]);else i.textposition&&(i.textposition=v(i.textposition));var h=a.getModule(i);if(h&&h.colorbar){var y=h.colorbar.container,x=y?i[y]:i;x&&x.colorscale&&(\"YIGnBu\"===x.colorscale&&(x.colorscale=\"YlGnBu\"),\"YIOrRd\"===x.colorscale&&(x.colorscale=\"YlOrRd\"))}if(\"surface\"===i.type&&o.isPlainObject(i.contours)){var b=[\"x\",\"y\",\"z\"];for(n=0;n<b.length;n++){var _=i.contours[b[n]];o.isPlainObject(_)&&(_.highlightColor&&(_.highlightcolor=_.highlightColor,delete _.highlightColor),_.highlightWidth&&(_.highlightwidth=_.highlightWidth,delete _.highlightWidth))}}if(\"candlestick\"===i.type||\"ohlc\"===i.type){var w=!1!==(i.increasing||{}).showlegend,k=!1!==(i.decreasing||{}).showlegend,A=d(i.increasing),M=d(i.decreasing);if(!1!==A&&!1!==M){var T=g(A,M,w,k);T&&(i.name=T)}else!A&&!M||i.name||(i.name=A||M)}if(Array.isArray(i.transforms)){var S=i.transforms;for(n=0;n<S.length;n++){var C=S[n];if(o.isPlainObject(C))switch(C.type){case\"filter\":C.filtersrc&&(C.target=C.filtersrc,delete C.filtersrc),C.calendar&&(C.valuecalendar||(C.valuecalendar=C.calendar),delete C.calendar);break;case\"groupby\":if(C.styles=C.styles||C.style,C.styles&&!Array.isArray(C.styles)){var E=C.styles,L=Object.keys(E);C.styles=[];for(var z=0;z<L.length;z++)C.styles.push({target:L[z],value:E[L[z]]})}}}}m(i,\"line\")&&delete i.line,\"marker\"in i&&(m(i.marker,\"line\")&&delete i.marker.line,m(i,\"marker\")&&delete i.marker),f.clean(i),i.autobinx&&(delete i.autobinx,delete i.xbins),i.autobiny&&(delete i.autobiny,delete i.ybins),p(i),i.colorbar&&p(i.colorbar),i.marker&&i.marker.colorbar&&p(i.marker.colorbar),i.line&&i.line.colorbar&&p(i.line.colorbar),i.aaxis&&p(i.aaxis),i.baxis&&p(i.baxis)}},r.swapXYData=function(t){var e;if(o.swapAttrs(t,[\"?\",\"?0\",\"d?\",\"?bins\",\"nbins?\",\"autobin?\",\"?src\",\"error_?\"]),Array.isArray(t.z)&&Array.isArray(t.z[0])&&(t.transpose?delete t.transpose:t.transpose=!0),t.error_x&&t.error_y){var r=t.error_y,n=\"copy_ystyle\"in r?r.copy_ystyle:!(r.color||r.thickness||r.width);o.swapAttrs(t,[\"error_?.copy_ystyle\"]),n&&o.swapAttrs(t,[\"error_?.color\",\"error_?.thickness\",\"error_?.width\"])}if(\"string\"==typeof t.hoverinfo){var i=t.hoverinfo.split(\"+\");for(e=0;e<i.length;e++)\"x\"===i[e]?i[e]=\"y\":\"y\"===i[e]&&(i[e]=\"x\");t.hoverinfo=i.join(\"+\")}},r.coerceTraceIndices=function(t,e){if(n(e))return[e];if(!Array.isArray(e)||!e.length)return t.data.map(function(t,e){return e});if(Array.isArray(e)){for(var r=[],i=0;i<e.length;i++)o.isIndex(e[i],t.data.length)?r.push(e[i]):o.warn(\"trace index (\",e[i],\") is not a number or is out of bounds\");return r}return e},r.manageArrayContainers=function(t,e,r){var i=t.obj,a=t.parts,s=a.length,l=a[s-1],c=n(l);if(c&&null===e){var u=a.slice(0,s-1).join(\".\");o.nestedProperty(i,u).get().splice(l,1)}else c&&void 0===t.get()?(void 0===t.get()&&(r[t.astr]=null),t.set(e)):t.set(e)};var y=/(\\.[^\\[\\]\\.]+|\\[[^\\[\\]\\.]+\\])$/;function x(t){var e=t.search(y);if(e>0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=x(e);r;){if(r in t)return!0;r=x(r)}return!1};var b=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n<e.length;n++)for(var i=t._fullData[n],a=0;a<3;a++){var s=u(t,i,b[a]);if(s&&\"log\"!==s.type){var l=s._name,c=s._id.substr(1);if(\"scene\"===c.substr(0,5)){if(void 0!==r[c])continue;l=c+\".\"+l}var f=l+\".type\";void 0===r[l]&&void 0===r[f]&&o.nestedProperty(t.layout,f).set(null)}}}},{\"../components/color\":571,\"../lib\":694,\"../plots/cartesian/axis_ids\":745,\"../plots/plots\":806,\"../registry\":825,\"fast-isnumeric\":215,\"gl-mat4/fromQuat\":253}],727:[function(t,e,r){\"use strict\";var n=t(\"./plot_api\");r.plot=n.plot,r.newPlot=n.newPlot,r.restyle=n.restyle,r.relayout=n.relayout,r.redraw=n.redraw,r.update=n.update,r._guiRestyle=n._guiRestyle,r._guiRelayout=n._guiRelayout,r._guiUpdate=n._guiUpdate,r._storeDirectGUIEdit=n._storeDirectGUIEdit,r.react=n.react,r.extendTraces=n.extendTraces,r.prependTraces=n.prependTraces,r.addTraces=n.addTraces,r.deleteTraces=n.deleteTraces,r.moveTraces=n.moveTraces,r.purge=n.purge,r.addFrames=n.addFrames,r.deleteFrames=n.deleteFrames,r.animate=n.animate,r.setPlotConfig=n.setPlotConfig,r.toImage=t(\"./to_image\"),r.validate=t(\"./validate\"),r.downloadImage=t(\"../snapshot/download\");var i=t(\"./template_api\");r.makeTemplate=i.makeTemplate,r.validateTemplate=i.validateTemplate},{\"../snapshot/download\":827,\"./plot_api\":729,\"./template_api\":734,\"./to_image\":735,\"./validate\":736}],728:[function(t,e,r){\"use strict\";var n=t(\"../lib/is_plain_object\"),i=t(\"../lib/noop\"),a=t(\"../lib/loggers\"),o=t(\"../lib/search\").sorterAsc,s=t(\"../registry\");r.containerArrayMatch=t(\"./container_array_match\");var l=r.isAddVal=function(t){return\"add\"===t||n(t)},c=r.isRemoveVal=function(t){return null===t||\"remove\"===t};r.applyContainerArrayChanges=function(t,e,r,n,u){var f=e.astr,h=s.getComponentMethod(f,\"supplyLayoutDefaults\"),p=s.getComponentMethod(f,\"draw\"),d=s.getComponentMethod(f,\"drawOne\"),g=n.replot||n.recalc||h===i||p===i,v=t.layout,m=t._fullLayout;if(r[\"\"]){Object.keys(r).length>1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(v,m),p(t),!0)}var x,b,_,w,k,A,M,T,S=Object.keys(r).map(Number).sort(o),C=e.get(),E=C||[],L=u(m,f).get(),z=[],O=-1,I=E.length;for(x=0;x<S.length;x++)if(w=r[_=S[x]],k=Object.keys(w),A=w[\"\"],M=l(A),_<0||_>E.length-(M?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==A)k.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(A)?z.push(_):M?(\"add\"===A&&(A={}),E.splice(_,0,A),L&&L.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,A),-1===O&&(O=_);else for(b=0;b<k.length;b++)T=f+\"[\"+_+\"].\",u(E[_],k[b],T).set(w[k[b]]);for(x=z.length-1;x>=0;x--)E.splice(z[x],1),L&&L.splice(z[x],1);if(E.length?C||e.set(E):e.set(null),g)return!1;if(h(v,m),d!==i){var D;if(-1===O)D=S;else{for(I=Math.max(E.length,I),D=[],x=0;x<S.length&&!((_=S[x])>=O);x++)D.push(_);for(x=O;x<I;x++)D.push(x)}for(x=0;x<D.length;x++)d(t,D[x])}else p(t);return!0}},{\"../lib/is_plain_object\":695,\"../lib/loggers\":698,\"../lib/noop\":703,\"../lib/search\":713,\"../registry\":825,\"./container_array_match\":724}],729:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"has-hover\"),o=t(\"../lib\"),s=o.nestedProperty,l=t(\"../lib/events\"),c=t(\"../lib/queue\"),u=t(\"../registry\"),f=t(\"./plot_schema\"),h=t(\"../plots/plots\"),p=t(\"../plots/polar/legacy\"),d=t(\"../plots/cartesian/axes\"),g=t(\"../components/drawing\"),v=t(\"../components/color\"),m=t(\"../components/colorbar/connect\"),y=t(\"../plots/cartesian/graph_interact\").initInteractions,x=t(\"../constants/xmlns_namespaces\"),b=t(\"../lib/svg_text_utils\"),_=t(\"./plot_config\").dfltConfig,w=t(\"./manage_arrays\"),k=t(\"./helpers\"),A=t(\"./subroutines\"),M=t(\"./edit_types\"),T=t(\"../plots/cartesian/constants\").AX_NAME_PATTERN,S=0;function C(t){var e=t._fullLayout;e._redrawFromAutoMarginCount?e._redrawFromAutoMarginCount--:t.emit(\"plotly_afterplot\")}function E(t,e){try{t._fullLayout._paper.style(\"background\",e)}catch(t){o.error(t)}}function L(t,e){E(t,v.combine(e,\"white\"))}function z(t,e){if(!t._context){t._context=o.extendDeep({},_);var r=n.select(\"base\");t._context._baseUrl=r.size()&&r.attr(\"href\")?window.location.href.split(\"#\")[0]:\"\"}var i,s,l,c=t._context;if(e){for(s=Object.keys(e),i=0;i<s.length;i++)\"editable\"!==(l=s[i])&&\"edits\"!==l&&l in c&&(\"setBackground\"===l&&\"opaque\"===e[l]?c[l]=L:c[l]=e[l]);e.plot3dPixelRatio&&!c.plotGlPixelRatio&&(c.plotGlPixelRatio=c.plot3dPixelRatio);var u=e.editable;if(void 0!==u)for(c.editable=u,s=Object.keys(c.edits),i=0;i<s.length;i++)c.edits[s[i]]=u;if(e.edits)for(s=Object.keys(e.edits),i=0;i<s.length;i++)(l=s[i])in c.edits&&(c.edits[l]=e.edits[l]);c._exportedPlot=e._exportedPlot}c.staticPlot&&(c.editable=!1,c.edits={},c.autosizable=!1,c.scrollZoom=!1,c.doubleClick=!1,c.showTips=!1,c.showLink=!1,c.displayModeBar=!1),\"hover\"!==c.displayModeBar||a||(c.displayModeBar=!0),\"transparent\"!==c.setBackground&&\"function\"==typeof c.setBackground||(c.setBackground=E),c._hasZeroHeight=c._hasZeroHeight||0===t.clientHeight,c._hasZeroWidth=c._hasZeroWidth||0===t.clientWidth;var f=c.scrollZoom,h=c._scrollZoom={};if(!0===f)h.cartesian=1,h.gl3d=1,h.geo=1,h.mapbox=1;else if(\"string\"==typeof f){var p=f.split(\"+\");for(i=0;i<p.length;i++)h[p[i]]=1}else!1!==f&&(h.gl3d=1,h.geo=1,h.mapbox=1)}function O(t,e){var r,n,i=e+1,a=[];for(r=0;r<t.length;r++)(n=t[r])<0?a.push(i+n):a.push(n);return a}function I(t,e,r){var n,i;for(n=0;n<e.length;n++){if((i=e[n])!==parseInt(i,10))throw new Error(\"all values in \"+r+\" must be integers\");if(i>=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function D(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(\"undefined\"==typeof e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),I(t,e,\"currentIndices\"),\"undefined\"==typeof r||Array.isArray(r)||(r=[r]),\"undefined\"!=typeof r&&I(t,r,\"newIndices\"),\"undefined\"!=typeof r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function P(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(\"undefined\"==typeof r)throw new Error(\"indices must be an integer or array of integers\");for(var a in I(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=O(r,t.data.length-1),e)for(var g=0;g<r.length;g++){if(a=t.data[r[g]],l=(c=s(a,d)).get(),u=e[d][g],!o.isArrayOrTypedArray(u))throw new Error(\"attribute: \"+d+\" index: \"+g+\" must be an array\");if(!o.isArrayOrTypedArray(l))throw new Error(\"cannot extend missing or non-array attribute: \"+d);if(l.constructor!==u.constructor)throw new Error(\"cannot extend array with an array of a different type: \"+d);f=h?n[d][g]:n,i(f)||(f=-1),p.push({prop:c,target:l,insert:u,maxp:Math.floor(f)})}return p}(t,e,r,n),c={},u={},f=0;f<l.length;f++){var h=l[f].prop,p=l[f].maxp,d=a(l[f].target,l[f].insert,p);h.set(d[0]),Array.isArray(c[h.astr])||(c[h.astr]=[]),c[h.astr].push(d[1]),Array.isArray(u[h.astr])||(u[h.astr]=[]),u[h.astr].push(l[f].target.length)}return{update:c,maxPoints:u}}function R(t,e){var r=new t.constructor(t.length+e.length);return r.set(t),r.set(e,t.length),r}function F(t,e,n,i){t=o.getGraphDiv(t),k.clearPromiseQueue(t);var a={};if(\"string\"==typeof e)a[e]=n;else{if(!o.isPlainObject(e))return o.warn(\"Restyle fail.\",e,n,i),Promise.reject();a=o.extendFlat({},e),void 0===i&&(i=n)}Object.keys(a).length&&(t.changed=!0);var s=k.coerceTraceIndices(t,i),l=V(t,a,s),u=l.flags;u.calc&&(t.calcdata=void 0),u.clearAxisTypes&&k.clearAxisTypes(t,s,{});var f=[];u.fullReplot?f.push(r.plot):(f.push(h.previousPromises),h.supplyDefaults(t),u.markerSize&&(h.doCalcdata(t),G(f)),u.style&&f.push(A.doTraceStyle),u.colorbars&&f.push(A.doColorBars),f.push(C)),f.push(h.rehover),c.add(t,F,[t,l.undoit,l.traces],F,[t,l.redoit,l.traces]);var p=o.syncOrAsync(f,t);return p&&p.then||(p=Promise.resolve()),p.then(function(){return t.emit(\"plotly_restyle\",l.eventData),t})}function B(t){return void 0===t?null:t}function N(t,e){return e?function(e,r,n){var i=s(e,r),a=i.set;return i.set=function(e){j((n||\"\")+r,i.get(),e,t),a(e)},i}:s}function j(t,e,r,n){if(Array.isArray(e)||Array.isArray(r))for(var i=Array.isArray(e)?e:[],a=Array.isArray(r)?r:[],s=Math.max(i.length,a.length),l=0;l<s;l++)j(t+\"[\"+l+\"]\",i[l],a[l],n);else if(o.isPlainObject(e)||o.isPlainObject(r)){var c=o.isPlainObject(e)?e:{},u=o.isPlainObject(r)?r:{},f=o.extendFlat({},c,u);for(var h in f)j(t+\".\"+h,c[h],u[h],n)}else void 0===n[t]&&(n[t]=B(e))}function V(t,e,r){var n,i=t._fullLayout,a=t._fullData,l=t.data,c=i._guiEditing,p=N(i._preGUI,c),g=o.extendDeepAll({},e);U(e);var v,m=M.traceFlags(),y={},x={};function b(){return r.map(function(){})}function _(t){var e=d.id2name(t);-1===v.indexOf(e)&&v.push(e)}function w(t){return\"LAYOUT\"+t+\".autorange\"}function A(t){return\"LAYOUT\"+t+\".range\"}function T(t){for(var e=t;e<a.length;e++)if(a[e]._input===l[t])return a[e]}function S(n,a,o){if(Array.isArray(n))n.forEach(function(t){S(t,a,o)});else if(!(n in e||k.hasParent(e,n))){var s;if(\"LAYOUT\"===n.substr(0,6))s=p(t.layout,n.replace(\"LAYOUT\",\"\"));else{var u=r[o];s=N(i._tracePreGUI[T(u)._fullInput.uid],c)(l[u],n)}n in x||(x[n]=b()),void 0===x[n][o]&&(x[n][o]=B(s.get())),void 0!==a&&s.set(a)}}function C(t){return function(e){return a[e][t]}}function E(t){return function(e,n){return!1===e?a[r[n]][t]:null}}for(var L in e){if(k.hasParent(e,L))throw new Error(\"cannot set \"+L+\"and a parent attribute simultaneously\");var z,O,I,D,P,R,F=e[L];if(\"autobinx\"!==L&&\"autobiny\"!==L||(L=L.charAt(L.length-1)+\"bins\",F=Array.isArray(F)?F.map(E(L)):!1===F?r.map(C(L)):null),y[L]=F,\"LAYOUT\"!==L.substr(0,6)){for(x[L]=b(),n=0;n<r.length;n++){if(z=l[r[n]],O=T(r[n]),D=(I=N(i._tracePreGUI[O._fullInput.uid],c)(z,L)).get(),void 0!==(P=Array.isArray(F)?F[n%F.length]:F)){var j=I.parts[I.parts.length-1],V=L.substr(0,L.length-j.length-1),q=V?V+\".\":\"\",H=V?s(O,V).get():O;if((R=f.getTraceValObject(O,I.parts))&&R.impliedEdits&&null!==P)for(var G in R.impliedEdits)S(o.relativeAttr(L,G),R.impliedEdits[G],n);else if(\"thicknessmode\"!==j&&\"lenmode\"!==j||D===P||\"fraction\"!==P&&\"pixels\"!==P||!H){if(\"type\"===L&&\"pie\"===P!=(\"pie\"===D)){var W=\"x\",Y=\"y\";\"bar\"!==P&&\"bar\"!==D||\"h\"!==z.orientation||(W=\"y\",Y=\"x\"),o.swapAttrs(z,[\"?\",\"?src\"],\"labels\",W),o.swapAttrs(z,[\"d?\",\"?0\"],\"label\",W),o.swapAttrs(z,[\"?\",\"?src\"],\"values\",Y),\"pie\"===D?(s(z,\"marker.color\").set(s(z,\"marker.colors\").get()),i._pielayer.selectAll(\"g.trace\").remove()):u.traceIs(z,\"cartesian\")&&s(z,\"marker.colors\").set(s(z,\"marker.color\").get())}}else{var X=i._size,Z=H.orient,$=\"top\"===Z||\"bottom\"===Z;if(\"thicknessmode\"===j){var J=$?X.h:X.w;S(q+\"thickness\",H.thickness*(\"fraction\"===P?1/J:J),n)}else{var K=$?X.w:X.h;S(q+\"len\",H.len*(\"fraction\"===P?1/K:K),n)}}x[L][n]=B(D);if(-1!==[\"swapxy\",\"swapxyaxes\",\"orientation\",\"orientationaxes\"].indexOf(L)){if(\"orientation\"===L){I.set(P);var Q=z.x&&!z.y?\"h\":\"v\";if((I.get()||Q)===O.orientation)continue}else\"orientationaxes\"===L&&(z.orientation={v:\"h\",h:\"v\"}[O.orientation]);k.swapXYData(z),m.calc=m.clearAxisTypes=!0}else-1!==h.dataArrayContainers.indexOf(I.parts[0])?(k.manageArrayContainers(I,P,x),m.calc=!0):(R?R.arrayOk&&!u.traceIs(O,\"regl\")&&(o.isArrayOrTypedArray(P)||o.isArrayOrTypedArray(D))?m.calc=!0:M.update(m,R):m.calc=!0,I.set(P))}}if(-1!==[\"swapxyaxes\",\"orientationaxes\"].indexOf(L)&&d.swap(t,r),\"orientationaxes\"===L){var tt=s(t.layout,\"hovermode\");\"x\"===tt.get()?tt.set(\"y\"):\"y\"===tt.get()&&tt.set(\"x\")}if(-1!==[\"orientation\",\"type\"].indexOf(L)){for(v=[],n=0;n<r.length;n++){var et=l[r[n]];u.traceIs(et,\"cartesian\")&&(_(et.xaxis||\"x\"),_(et.yaxis||\"y\"))}S(v.map(w),!0,0),S(v.map(A),[0,1],0)}}else I=p(t.layout,L.replace(\"LAYOUT\",\"\")),x[L]=[B(I.get())],I.set(Array.isArray(F)?F[0]:F),m.calc=!0}return(m.calc||m.plot)&&(m.fullReplot=!0),{flags:m,undoit:x,redoit:y,traces:r,eventData:o.extendDeepNoArrays([],[g,r])}}function U(t){var e,r,n,i=o.counterRegex(\"axis\",\".title\",!1,!1),a=/colorbar\\.title$/,s=Object.keys(t);for(e=0;e<s.length;e++)r=s[e],n=t[r],\"title\"!==r&&!i.test(r)&&!a.test(r)||\"string\"!=typeof n&&\"number\"!=typeof n?r.indexOf(\"titlefont\")>-1?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function q(t,e,r){if(t=o.getGraphDiv(t),k.clearPromiseQueue(t),t.framework&&t.framework.isPolar)return Promise.resolve(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=Z(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(A.layoutReplot):Object.keys(n).length&&(H(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(A.doLegend),a.layoutstyle&&s.push(A.layoutStyles),a.axrange&&G(s,i.rangesAltered),a.ticks&&s.push(A.doTicksRelayout),a.modebar&&s.push(A.doModeBar),a.camera&&s.push(A.doCamera),s.push(C)),s.push(h.rehover),c.add(t,q,[t,i.undoit],q,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then(function(){return t.emit(\"plotly_relayout\",i.eventData),t})}function H(t,e,r){var n;if(!e.axrange)return!1;for(n in e)if(\"axrange\"!==n&&e[n])return!1;for(n in r.rangesAltered){var i=d.id2name(n),a=t.layout[i],o=t._fullLayout[i];o.autorange=a.autorange,o.range=a.range.slice(),o.cleanRange()}return!0}function G(t,e){var r=e?function(t){var r={skipTitle:!0};for(var n in e)if(d.getFromId(t,n).automargin){r={};break}return d.draw(t,Object.keys(e),r)}:function(t){return d.draw(t,\"redraw\")};t.push(A.doAutoRangeAndConstraints,r,A.drawData,A.finalDraw)}r.plot=function(t,e,i,a){var s;if(t=o.getGraphDiv(t),l.init(t),o.isPlainObject(e)){var c=e;e=c.data,i=c.layout,a=c.config,s=c.frames}if(!1===l.triggerHandler(t,\"plotly_beforeplot\",[e,i,a]))return Promise.reject();e||i||o.isPlotDiv(t)||o.warn(\"Calling Plotly.plot as if redrawing but this container doesn't yet have a plot.\",t),z(t,a),i||(i={}),n.select(t).classed(\"js-plotly-plot\",!0),g.makeTester(),Array.isArray(t._promises)||(t._promises=[]);var f=0===(t.data||[]).length&&Array.isArray(e);if(Array.isArray(e)&&(k.cleanData(e),f?t.data=e:t.data.push.apply(t.data,e),t.empty=!1),t.layout&&!f||(t.layout=k.cleanLayout(i)),t._dragging&&!t._transitioning)return t._replotPending=!0,Promise.reject();t._replotPending=!1,h.supplyDefaults(t);var v=t._fullLayout,x=v._has(\"cartesian\");if(!v._has(\"polar\")&&e&&e[0]&&e[0].r)return o.log(\"Legacy polar charts are deprecated!\"),function(t,e,r){var i=n.select(t).selectAll(\".plot-container\").data([0]);i.enter().insert(\"div\",\":first-child\").classed(\"plot-container plotly\",!0);var a=i.selectAll(\".svg-container\").data([0]);a.enter().append(\"div\").classed(\"svg-container\",!0).style(\"position\",\"relative\"),a.html(\"\"),e&&(t.data=e);r&&(t.layout=r);p.manager.fillLayout(t),a.style({width:t._fullLayout.width+\"px\",height:t._fullLayout.height+\"px\"}),t.framework=p.manager.framework(t),t.framework({data:t.data,layout:t.layout},a.node()),t.framework.setUndoPoint();var s=t.framework.svg(),l=1,c=t._fullLayout.title?t._fullLayout.title.text:\"\";\"\"!==c&&c||(l=0);var u=function(){this.call(b.convertToTspans,t)},f=s.select(\".title-group text\").call(u);if(t._context.edits.titleText){var d=o._(t,\"Click to enter Plot title\");c&&c!==d||(l=.2,f.attr({\"data-unformatted\":d}).text(d).style({opacity:l}).on(\"mouseover.opacity\",function(){n.select(this).transition().duration(100).style(\"opacity\",1)}).on(\"mouseout.opacity\",function(){n.select(this).transition().duration(1e3).style(\"opacity\",0)}));var g=function(){this.call(b.makeEditable,{gd:t}).on(\"edit\",function(e){t.framework({layout:{title:{text:e}}}),this.text(e).call(u),this.call(g)}).on(\"cancel\",function(){var t=this.attr(\"data-unformatted\");this.text(t).call(u)})};f.call(g)}return t._context.setBackground(t,t._fullLayout.paper_bgcolor),h.addLinks(t),Promise.resolve()}(t,e,i);v._replotting=!0,f&&st(t),t.framework!==st&&(t.framework=st,st(t)),g.initGradients(t),f&&d.saveShowSpikeInitial(t);var _=!t.calcdata||t.calcdata.length!==(t._fullData||[]).length;_&&h.doCalcdata(t);for(var w=0;w<t.calcdata.length;w++)t.calcdata[w][0].trace=t._fullData[w];t._context.responsive?t._responsiveChartHandler||(t._responsiveChartHandler=function(){h.resize(t)},window.addEventListener(\"resize\",t._responsiveChartHandler)):o.clearResponsive(t);var M=JSON.stringify(v._size),T=0;function S(){var e,r,n,i=t.calcdata;for(h.clearAutoMarginIds(t),A.drawMarginPushers(t),d.allowAutoMargin(t),e=0;e<i.length;e++){var a=(n=(r=i[e])[0].trace)._module.colorbar;!0===n.visible&&a?m(t,r,a):h.autoMargin(t,\"cb\"+n.uid)}return h.doAutoMargin(t),h.previousPromises(t)}function E(){t._transitioning||(A.doAutoRangeAndConstraints(t),f&&d.saveRangeInitial(t),u.getComponentMethod(\"rangeslider\",\"calcAutorange\")(t))}var L=[h.previousPromises,function(){if(s)return r.addFrames(t,s)},function e(){for(var r=v._basePlotModules,n=0;n<r.length;n++)r[n].drawFramework&&r[n].drawFramework(t);if(!v._glcanvas&&v._has(\"gl\")&&(v._glcanvas=v._glcontainer.selectAll(\".gl-canvas\").data([{key:\"contextLayer\",context:!0,pick:!1},{key:\"focusLayer\",context:!1,pick:!1},{key:\"pickLayer\",context:!1,pick:!0}],function(t){return t.key}),v._glcanvas.enter().append(\"canvas\").attr(\"class\",function(t){return\"gl-canvas gl-canvas-\"+t.key.replace(\"Layer\",\"\")}).style({position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",overflow:\"visible\",\"pointer-events\":\"none\"})),v._glcanvas){v._glcanvas.attr(\"width\",v.width).attr(\"height\",v.height);var i=v._glcanvas.data()[0].regl;if(i&&(Math.floor(v.width)!==i._gl.drawingBufferWidth||Math.floor(v.height)!==i._gl.drawingBufferHeight)){var a=\"WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug.\";if(!T)return o.log(a+\" Clearing graph and plotting again.\"),h.cleanPlot([],{},t._fullData,v),h.supplyDefaults(t),v=t._fullLayout,h.doCalcdata(t),T++,e();o.error(a)}}return h.previousPromises(t)},S,function(){if(JSON.stringify(v._size)!==M)return o.syncOrAsync([S,A.layoutStyles],t)}];x&&L.push(function(){if(_)return o.syncOrAsync([u.getComponentMethod(\"shapes\",\"calcAutorange\"),u.getComponentMethod(\"annotations\",\"calcAutorange\"),E],t);E()}),L.push(A.layoutStyles),x&&L.push(function(){return d.draw(t,f?\"\":\"redraw\")}),L.push(A.drawData,A.finalDraw,y,h.addLinks,h.rehover,h.doAutoMargin,h.previousPromises);var O=o.syncOrAsync(L,t);return O&&O.then||(O=Promise.resolve()),O.then(function(){return C(t),t})},r.setPlotConfig=function(t){return o.extendFlat(_,t)},r.redraw=function(t){if(t=o.getGraphDiv(t),!o.isPlotDiv(t))throw new Error(\"This element is not a Plotly plot: \"+t);return k.cleanData(t.data),k.cleanLayout(t.layout),t.calcdata=void 0,r.plot(t).then(function(){return t.emit(\"plotly_redraw\"),t})},r.newPlot=function(t,e,n,i){return t=o.getGraphDiv(t),h.cleanPlot([],{},t._fullData||[],t._fullLayout||{}),h.purge(t),r.plot(t,e,n,i)},r.extendTraces=function t(e,n,i,a){var s=P(e=o.getGraphDiv(e),n,i,a,function(t,e,r){var n,i;if(o.isTypedArray(t))if(r<0){var a=new t.constructor(0),s=R(t,e);r<0?(n=s,i=a):(n=a,i=s)}else if(n=new t.constructor(r),i=new t.constructor(t.length+e.length-r),r===e.length)n.set(e),i.set(t);else if(r<e.length){var l=e.length-r;n.set(e.subarray(l)),i.set(t),i.set(e.subarray(0,l),t.length)}else{var c=r-e.length,u=t.length-c;n.set(t.subarray(u)),n.set(e,c),i.set(t.subarray(0,u))}else n=t.concat(e),i=r>=0&&r<n.length?n.splice(0,n.length-r):[];return[n,i]}),l=r.redraw(e),u=[e,s.update,i,s.maxPoints];return c.add(e,r.prependTraces,u,t,arguments),l},r.prependTraces=function t(e,n,i,a){var s=P(e=o.getGraphDiv(e),n,i,a,function(t,e,r){var n,i;if(o.isTypedArray(t))if(r<=0){var a=new t.constructor(0),s=R(e,t);r<0?(n=s,i=a):(n=a,i=s)}else if(n=new t.constructor(r),i=new t.constructor(t.length+e.length-r),r===e.length)n.set(e),i.set(t);else if(r<e.length){var l=e.length-r;n.set(e.subarray(0,l)),i.set(e.subarray(l)),i.set(t,l)}else{var c=r-e.length;n.set(e),n.set(t.subarray(0,c),e.length),i.set(t.subarray(c))}else n=e.concat(t),i=r>=0&&r<n.length?n.splice(r,n.length):[];return[n,i]}),l=r.redraw(e),u=[e,s.update,i,s.maxPoints];return c.add(e,r.extendTraces,u,t,arguments),l},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(\"undefined\"==typeof e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n<e.length;n++)if(\"object\"!=typeof(i=e[n])||Array.isArray(i)||null===i)throw new Error(\"all values in traces array must be non-array objects\");if(\"undefined\"==typeof r||Array.isArray(r)||(r=[r]),\"undefined\"!=typeof r&&r.length!==e.length)throw new Error(\"if indices is specified, traces.length must equal indices.length\")}(e,n,i),Array.isArray(n)||(n=[n]),n=n.map(function(t){return o.extendFlat({},t)}),k.cleanData(n),a=0;a<n.length;a++)e.data.push(n[a]);for(a=0;a<n.length;a++)l.push(-n.length+a);if(\"undefined\"==typeof i)return s=r.redraw(e),c.add(e,u,h,f,p),s;Array.isArray(i)||(i=[i]);try{D(e,l,i)}catch(t){throw e.data.splice(e.data.length-n.length,n.length),t}return c.startSequence(e),c.add(e,u,h,f,p),s=r.moveTraces(e,l,i),c.stopSequence(e),s},r.deleteTraces=function t(e,n){e=o.getGraphDiv(e);var i,a,s=[],l=r.addTraces,u=t,f=[e,s,n],h=[e,n];if(\"undefined\"==typeof n)throw new Error(\"indices must be an integer or array of integers.\");for(Array.isArray(n)||(n=[n]),I(e,n,\"indices\"),(n=O(n,e.data.length-1)).sort(o.sorterDes),i=0;i<n.length;i+=1)a=e.data.splice(n[i],1)[0],s.push(a);var p=r.redraw(e);return c.add(e,l,f,u,h),p},r.moveTraces=function t(e,n,i){var a,s=[],l=[],u=t,f=t,h=[e=o.getGraphDiv(e),i,n],p=[e,n,i];if(D(e,n,i),n=Array.isArray(n)?n:[n],\"undefined\"==typeof i)for(i=[],a=0;a<n.length;a++)i.push(-n.length+a);for(i=Array.isArray(i)?i:[i],n=O(n,e.data.length-1),i=O(i,e.data.length-1),a=0;a<e.data.length;a++)-1===n.indexOf(a)&&s.push(e.data[a]);for(a=0;a<n.length;a++)l.push({newIndex:i[a],trace:e.data[n[a]]});for(l.sort(function(t,e){return t.newIndex-e.newIndex}),a=0;a<l.length;a+=1)s.splice(l[a].newIndex,0,l[a].trace);e.data=s;var d=r.redraw(e);return c.add(e,u,h,f,p),d},r.restyle=F,r._storeDirectGUIEdit=function(t,e,r){for(var n in r){j(n,s(t,n).get(),r[n],e)}},r.relayout=q;var W=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,Y=/^[xyz]axis[0-9]*\\.autorange$/,X=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function Z(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=N(l._preGUI,c),p=Object.keys(e),g=d.list(t),v=o.extendDeepAll({},e),m={};for(U(e),p=Object.keys(e),n=0;n<p.length;n++)if(0===p[n].indexOf(\"allaxes\")){for(i=0;i<g.length;i++){var y=g[i]._id.substr(1),x=-1!==y.indexOf(\"scene\")?y+\".\":\"\",b=p[n].replace(\"allaxes\",x+g[i]._name);e[b]||(e[b]=e[p[n]])}delete e[p[n]]}var _=M.layoutFlags(),A={},S={};function C(t,r){if(Array.isArray(t))t.forEach(function(t){C(t,r)});else if(!(t in e||k.hasParent(e,t))){var n=h(a,t);t in S||(S[t]=B(n.get())),void 0!==r&&n.set(r)}}var E,L={};function z(t){var e=d.name2id(t.split(\".\")[0]);return L[e]=1,e}for(var O in e){if(k.hasParent(e,O))throw new Error(\"cannot set \"+O+\"and a parent attribute simultaneously\");for(var I=h(a,O),D=e[O],P=I.parts.length-1;P>0&&\"string\"!=typeof I.parts[P];)P--;var R=I.parts[P],F=I.parts[P-1]+\".\"+R,j=I.parts.slice(0,P).join(\".\"),V=s(t.layout,j).get(),q=s(l,j).get(),H=I.get();if(void 0!==D){A[O]=D,S[O]=\"reverse\"===R?D:B(H);var G=f.getLayoutValObject(l,I.parts);if(G&&G.impliedEdits&&null!==D)for(var Z in G.impliedEdits)C(o.relativeAttr(O,Z),G.impliedEdits[Z]);if(-1!==[\"width\",\"height\"].indexOf(O))if(D){C(\"autosize\",null);var J=\"height\"===O?\"width\":\"height\";C(J,l[J])}else l[O]=t._initialAutoSize[O];else if(\"autosize\"===O)C(\"width\",D?null:l.width),C(\"height\",D?null:l.height);else if(F.match(W))z(F),s(l,j+\"._inputRange\").set(null);else if(F.match(Y)){z(F),s(l,j+\"._inputRange\").set(null);var K=s(l,j).get();K._inputDomain&&(K._input.domain=K._inputDomain.slice())}else F.match(X)&&s(l,j+\"._inputDomain\").set(null);if(\"type\"===R){var Q=V,tt=\"linear\"===q.type&&\"log\"===D,et=\"log\"===q.type&&\"linear\"===D;if(tt||et){if(Q&&Q.range)if(q.autorange)tt&&(Q.range=Q.range[1]>Q.range[0]?[1,2]:[2,1]);else{var rt=Q.range[0],nt=Q.range[1];tt?(rt<=0&&nt<=0&&C(j+\".autorange\",!0),rt<=0?rt=nt/1e6:nt<=0&&(nt=rt/1e6),C(j+\".range[0]\",Math.log(rt)/Math.LN10),C(j+\".range[1]\",Math.log(nt)/Math.LN10)):(C(j+\".range[0]\",Math.pow(10,rt)),C(j+\".range[1]\",Math.pow(10,nt)))}else C(j+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[I.parts[0]]&&\"radialaxis\"===I.parts[1]&&delete l[I.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,q,D,C),u.getComponentMethod(\"images\",\"convertCoords\")(t,q,D,C)}else C(j+\".autorange\",!0),C(j+\".range\",null);s(l,j+\"._inputRange\").set(null)}else if(R.match(T)){var it=s(l,O).get(),at=(D||{}).type;at&&\"-\"!==at||(at=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,it,at,C),u.getComponentMethod(\"images\",\"convertCoords\")(t,it,at,C)}var ot=w.containerArrayMatch(O);if(ot){r=ot.array,n=ot.index;var st=ot.property,lt=G||{editType:\"calc\"};\"\"!==n&&\"\"===st&&(w.isAddVal(D)?S[O]=null:w.isRemoveVal(D)?S[O]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),M.update(_,lt),m[r]||(m[r]={});var ct=m[r][n];ct||(ct=m[r][n]={}),ct[st]=D,delete e[O]}else\"reverse\"===R?(V.range?V.range.reverse():(C(j+\".autorange\",!0),V.range=[1,0]),q.autorange?_.calc=!0:_.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===O&&(\"lasso\"===D||\"select\"===D)&&\"lasso\"!==H&&\"select\"!==H?_.plot=!0:G?M.update(_,G):_.calc=!0,I.set(D))}}for(r in m){w.applyContainerArrayChanges(t,h(a,r),m[r],_,h)||(_.plot=!0)}var ut=l._axisConstraintGroups||[];for(E in L)for(n=0;n<ut.length;n++){var ft=ut[n];if(ft[E])for(var ht in _.calc=!0,ft)L[ht]||(d.getFromId(t,ht)._constraintShrinkable=!0)}return($(t)||e.height||e.width)&&(_.plot=!0),(_.plot||_.calc)&&(_.layoutReplot=!0),{flags:_,rangesAltered:L,undoit:S,redoit:A,eventData:v}}function $(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function J(t,e,n,i){if(t=o.getGraphDiv(t),k.clearPromiseQueue(t),t.framework&&t.framework.isPolar)return Promise.resolve(t);o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=k.coerceTraceIndices(t,i),s=V(t,o.extendFlat({},e),a),l=s.flags,u=Z(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&k.clearAxisTypes(t,a,n);var p=[];if(l.fullReplot&&f.layoutReplot){var d=t.data,g=t.layout;t.data=void 0,t.layout=void 0,p.push(function(){return r.plot(t,d,g)})}else l.fullReplot?p.push(r.plot):f.layoutReplot?p.push(A.layoutReplot):(p.push(h.previousPromises),H(t,f,u)||h.supplyDefaults(t),l.style&&p.push(A.doTraceStyle),l.colorbars&&p.push(A.doColorBars),f.legend&&p.push(A.doLegend),f.layoutstyle&&p.push(A.layoutStyles),f.axrange&&G(p,u.rangesAltered),f.ticks&&p.push(A.doTicksRelayout),f.modebar&&p.push(A.doModeBar),f.camera&&p.push(A.doCamera),p.push(C));p.push(h.rehover),c.add(t,J,[t,s.undoit,u.undoit,s.traces],J,[t,s.redoit,u.redoit,s.traces]);var v=o.syncOrAsync(p,t);return v&&v.then||(v=Promise.resolve(t)),v.then(function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t})}function K(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}r.update=J,r._guiRestyle=K(F),r._guiRelayout=K(q),r._guiUpdate=K(J);var Q=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],tt=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function et(t,e){for(var r=0;r<e.length;r++){var n=e[r],i=t.match(n.pattern);if(i)return{head:i[1],attr:n.attr}}}function rt(t,e){var r=s(e,t).get();if(void 0!==r)return r;var n=t.split(\".\");for(n.pop();n.length>1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function nt(t,e){for(var r=0;r<e.length;r++)if(e[r]._fullInput.uid===t)return r;return-1}function it(t,e,r){for(var n=0;n<e.length;n++)if(e[n].uid===t)return n;return e[r].uid?-1:r}function at(t,e){var r=o.isPlainObject(t),n=Array.isArray(t);return r||n?(r&&o.isPlainObject(e)||n&&Array.isArray(e))&&JSON.stringify(t)===JSON.stringify(e):t===e}function ot(t,e,r,n){var i,a,l,c=n.getValObject,u=n.flags,f=n.immutable,h=n.inArray,p=n.arrayIndex;function d(){var t=i.editType;h&&-1!==t.indexOf(\"arraydraw\")?o.pushUnique(u.arrays[h],p):(M.update(u,i),\"none\"!==t&&u.nChanges++,n.transition&&i.anim&&u.nChangesAnim++,(W.test(l)||Y.test(l))&&(u.rangesAltered[r[0]]=1),X.test(l)&&s(e,\"_inputDomain\").set(null),\"datarevision\"===a&&(u.newDataRevision=1))}function g(t){return\"data_array\"===t.valType||t.arrayOk}for(a in t){if(u.calc&&!n.transition)return;var v=t[a],m=e[a],y=r.concat(a);if(l=y.join(\".\"),\"_\"!==a.charAt(0)&&\"function\"!=typeof v&&v!==m){if((\"tick0\"===a||\"dtick\"===a)&&\"geo\"!==r[0]){var x=e.tickmode;if(\"auto\"===x||\"array\"===x||!x)continue}if((\"range\"!==a||!e.autorange)&&(\"zmin\"!==a&&\"zmax\"!==a||\"contourcarpet\"!==e.type)&&(i=c(y))&&(!i._compareAsJSON||JSON.stringify(v)!==JSON.stringify(m))){var b,_=i.valType,w=g(i),k=Array.isArray(v),A=Array.isArray(m);if(k&&A){var T=\"_input_\"+a,S=t[T],C=e[T];if(Array.isArray(S)&&S===C)continue}if(void 0===m)w&&k?u.calc=!0:d();else if(i._isLinkedToArray){var E=[],L=!1;h||(u.arrays[a]=E);var z=Math.min(v.length,m.length),O=Math.max(v.length,m.length);if(z!==O){if(\"arraydraw\"!==i.editType){d();continue}L=!0}for(b=0;b<z;b++)ot(v[b],m[b],y.concat(b),o.extendFlat({inArray:a,arrayIndex:b},n));if(L)for(b=z;b<O;b++)E.push(b)}else!_&&o.isPlainObject(v)?ot(v,m,y,n):w?k&&A?(f&&(u.calc=!0),(f||n.newDataRevision)&&d()):k!==A?u.calc=!0:d():k&&A&&v.length===m.length&&String(v)===String(m)||d()}}}for(a in e)if(!(a in t||\"_\"===a.charAt(0)||\"function\"==typeof e[a])){if(g(i=c(r.concat(a)))&&Array.isArray(e[a]))return void(u.calc=!0);d()}}function st(t){var e=n.select(t),r=t._fullLayout;if(r._container=e.selectAll(\".plot-container\").data([0]),r._container.enter().insert(\"div\",\":first-child\").classed(\"plot-container\",!0).classed(\"plotly\",!0),r._paperdiv=r._container.selectAll(\".svg-container\").data([0]),r._paperdiv.enter().append(\"div\").classed(\"svg-container\",!0).style(\"position\",\"relative\"),r._glcontainer=r._paperdiv.selectAll(\".gl-container\").data([{}]),r._glcontainer.enter().append(\"div\").classed(\"gl-container\",!0),r._paperdiv.selectAll(\".main-svg\").remove(),r._paper=r._paperdiv.insert(\"svg\",\":first-child\").classed(\"main-svg\",!0),r._toppaper=r._paperdiv.append(\"svg\").classed(\"main-svg\",!0),!r._uid){var i={};n.selectAll(\"defs\").each(function(){this.id&&(i[this.id.split(\"-\")[1]]=1)}),r._uid=o.randstr(i)}r._paperdiv.selectAll(\".main-svg\").attr(x.svgAttrs),r._defs=r._paper.append(\"defs\").attr(\"id\",\"defs-\"+r._uid),r._clips=r._defs.append(\"g\").classed(\"clips\",!0),r._topdefs=r._toppaper.append(\"defs\").attr(\"id\",\"topdefs-\"+r._uid),r._topclips=r._topdefs.append(\"g\").classed(\"clips\",!0),r._bgLayer=r._paper.append(\"g\").classed(\"bglayer\",!0),r._draggers=r._paper.append(\"g\").classed(\"draglayer\",!0);var a=r._paper.append(\"g\").classed(\"layer-below\",!0);r._imageLowerLayer=a.append(\"g\").classed(\"imagelayer\",!0),r._shapeLowerLayer=a.append(\"g\").classed(\"shapelayer\",!0),r._cartesianlayer=r._paper.append(\"g\").classed(\"cartesianlayer\",!0),r._polarlayer=r._paper.append(\"g\").classed(\"polarlayer\",!0),r._ternarylayer=r._paper.append(\"g\").classed(\"ternarylayer\",!0),r._geolayer=r._paper.append(\"g\").classed(\"geolayer\",!0),r._pielayer=r._paper.append(\"g\").classed(\"pielayer\",!0),r._glimages=r._paper.append(\"g\").classed(\"glimages\",!0);var s=r._toppaper.append(\"g\").classed(\"layer-above\",!0);r._imageUpperLayer=s.append(\"g\").classed(\"imagelayer\",!0),r._shapeUpperLayer=s.append(\"g\").classed(\"shapelayer\",!0),r._infolayer=r._toppaper.append(\"g\").classed(\"infolayer\",!0),r._menulayer=r._toppaper.append(\"g\").classed(\"menulayer\",!0),r._zoomlayer=r._toppaper.append(\"g\").classed(\"zoomlayer\",!0),r._hoverlayer=r._toppaper.append(\"g\").classed(\"hoverlayer\",!0),t.emit(\"plotly_framework\")}r.react=function(t,e,n,i){var a,l;var c=(t=o.getGraphDiv(t))._fullData,p=t._fullLayout;if(o.isPlotDiv(t)&&c&&p){if(o.isPlainObject(e)){var d=e;e=d.data,n=d.layout,i=d.config,a=d.frames}var g=!1;if(i){var v=o.extendDeep({},t._context);t._context=void 0,z(t,i),g=function t(e,r){var n;for(n in e)if(\"_\"!==n.charAt(0)){var i=e[n],a=r[n];if(i!==a)if(o.isPlainObject(i)&&o.isPlainObject(a)){if(t(i,a))return!0}else{if(!Array.isArray(i)||!Array.isArray(a))return!0;if(i.length!==a.length)return!0;for(var s=0;s<i.length;s++)if(i[s]!==a[s]){if(!o.isPlainObject(i[s])||!o.isPlainObject(a[s]))return!0;if(t(i[s],a[s]))return!0}}}}(v,t._context)}t.data=e||[],k.cleanData(t.data),t.layout=n||{},k.cleanLayout(t.layout),function(t,e,r,n){var i,a,l,c,u,f,h,p,d=n._preGUI,g=[],v={};for(i in d){if(u=et(i,Q)){if(a=u.attr||u.head+\".uirevision\",(c=(l=s(n,a).get())&&rt(a,e))&&c===l&&(null===(f=d[i])&&(f=void 0),at(p=(h=s(e,i)).get(),f))){void 0===p&&\"autorange\"===i.substr(i.length-9)&&g.push(i.substr(0,i.length-10)),h.set(B(s(n,i).get()));continue}}else o.warn(\"unrecognized GUI edit: \"+i);delete d[i],\"range[\"===i.substr(i.length-8,6)&&(v[i.substr(0,i.length-9)]=1)}for(var m=0;m<g.length;m++){var y=g[m];if(v[y]){var x=s(e,y).get();x&&delete x.autorange}}var b=n._tracePreGUI;for(var _ in b){var w,k=b[_],A=null;for(i in k){if(!A){var M=nt(_,r);if(M<0){delete b[_];break}var T=it(_,t,(w=r[M]._fullInput).index);if(T<0){delete b[_];break}A=t[T]}if(u=et(i,tt)){if(u.attr?c=(l=s(n,u.attr).get())&&rt(u.attr,e):(l=w.uirevision,void 0===(c=A.uirevision)&&(c=e.uirevision)),c&&c===l&&(null===(f=k[i])&&(f=void 0),at(p=(h=s(A,i)).get(),f))){h.set(B(s(w,i).get()));continue}}else o.warn(\"unrecognized GUI edit: \"+i+\" in trace uid \"+_);delete k[i]}}}(t.data,t.layout,c,p),h.supplyDefaults(t,{skipUpdateCalc:!0});var m=t._fullData,y=t._fullLayout,x=void 0===y.datarevision,b=y.transition,_=function(t,e,r,n,i){var a=M.layoutFlags();a.arrays={},a.rangesAltered={},a.nChanges=0,a.nChangesAnim=0,ot(e,r,[],{getValObject:function(t){return f.getLayoutValObject(r,t)},flags:a,immutable:n,transition:i,gd:t}),(a.plot||a.calc)&&(a.layoutReplot=!0);i&&a.nChanges&&a.nChangesAnim&&(a.anim=a.nChanges===a.nChangesAnim?\"all\":\"some\");return a}(t,p,y,x,b),w=_.newDataRevision,T=function(t,e,r,n,i,a){var o=e.length===r.length;if(!i&&!o)return{fullReplot:!0,calc:!0};var s,l,c=M.traceFlags();c.arrays={},c.nChanges=0,c.nChangesAnim=0;var u={getValObject:function(t){return f.getTraceValObject(l,t)},flags:c,immutable:n,transition:i,newDataRevision:a,gd:t},p={};for(s=0;s<e.length;s++)if(r[s]){if(l=r[s]._fullInput,h.hasMakesDataTransform(l)&&(l=r[s]),p[l.uid])continue;p[l.uid]=1,ot(e[s]._fullInput,l,[],u)}(c.calc||c.plot)&&(c.fullReplot=!0);i&&c.nChanges&&c.nChangesAnim&&(c.anim=c.nChanges===c.nChangesAnim&&o?\"all\":\"some\");return c}(t,c,m,x,b,w);$(t)&&(_.layoutReplot=!0),T.calc||_.calc?t.calcdata=void 0:h.supplyDefaultsUpdateCalc(t.calcdata,m);var S=[];if(a&&(t._transitionData={},h.createTransitionData(t),S.push(function(){return r.addFrames(t,a)})),y.transition&&!g&&(T.anim||_.anim))h.doCalcdata(t),A.doAutoRangeAndConstraints(t),S.push(function(){return h.transitionFromReact(t,T,_,p)});else if(T.fullReplot||_.layoutReplot||g)t._fullLayout._skipDefaults=!0,S.push(r.plot);else{for(var E in _.arrays){var L=_.arrays[E];if(L.length){var O=u.getComponentMethod(E,\"drawOne\");if(O!==o.noop)for(var I=0;I<L.length;I++)O(t,L[I]);else{var D=u.getComponentMethod(E,\"draw\");if(D===o.noop)throw new Error(\"cannot draw components: \"+E);D(t)}}}S.push(h.previousPromises),T.style&&S.push(A.doTraceStyle),T.colorbars&&S.push(A.doColorBars),_.legend&&S.push(A.doLegend),_.layoutstyle&&S.push(A.layoutStyles),_.axrange&&G(S),_.ticks&&S.push(A.doTicksRelayout),_.modebar&&S.push(A.doModeBar),_.camera&&S.push(A.doCamera),S.push(C)}S.push(h.rehover),(l=o.syncOrAsync(S,t))&&l.then||(l=Promise.resolve(t))}else l=r.newPlot(t,e,n,i);return l.then(function(){return t.emit(\"plotly_react\",{data:e,layout:n}),t})},r.animate=function(t,e,r){if(t=o.getGraphDiv(t),!o.isPlotDiv(t))throw new Error(\"This element is not a Plotly plot: \"+t+\". It's likely that you've failed to create a plot before animating it. For more details, see https://plot.ly/javascript/animations/\");var n=t._transitionData;n._frameQueue||(n._frameQueue=[]);var i=(r=h.supplyAnimationDefaults(r)).transition,a=r.frame;function s(t){return Array.isArray(i)?t>=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise(function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,k.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then(function(){e.onComplete&&e.onComplete()}),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,v=0;function m(t){return Array.isArray(i)?v>=i.length?t.transitionOpts=i[v]:t.transitionOpts=i[0]:t.transitionOpts=i,v++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:m(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d<n._frames.length;d++)(g=n._frames[d])&&(x||String(g.group)===String(e))&&y.push({type:\"byname\",name:String(g.name),data:m({name:g.name})});else if(b)for(d=0;d<e.length;d++){var _=e[d];-1!==[\"number\",\"string\"].indexOf(typeof _)?(_=String(_),y.push({type:\"byname\",name:_,data:m({name:_})})):o.isPlainObject(_)&&y.push({type:\"object\",data:m(o.extendFlat({},_))})}for(d=0;d<y.length;d++)if(\"byname\"===(g=y[d]).type&&!n._frameHash[g.data.name])return o.warn('animate failure: frame not found: \"'+g.data.name+'\"'),void u();-1!==[\"next\",\"immediate\"].indexOf(r.mode)&&function(){if(0!==n._frameQueue.length){for(;n._frameQueue.length;){var e=n._frameQueue.pop();e.onInterrupt&&e.onInterrupt()}t.emit(\"plotly_animationinterrupted\",[])}}(),\"reverse\"===r.direction&&y.reverse();var w=t._fullLayout._currentFrame;if(w&&r.fromcurrent){var A=-1;for(d=0;d<y.length;d++)if(\"byname\"===(g=y[d]).type&&g.name===w){A=d;break}if(A>0&&A<y.length-1){var M=[];for(d=0;d<y.length;d++)g=y[d],(\"byname\"!==y[d].type||d>A)&&M.push(g);y=M}}y.length>0?function(e){if(0!==e.length){for(var i=0;i<e.length;i++){var o;o=\"byname\"===e[i].type?h.computeFrame(t,e[i].name):e[i].data;var f=l(i),d=s(i);d.duration=Math.min(d.duration,f.duration);var g={frame:o,name:e[i].name,frameOpts:f,transitionOpts:d};i===e.length-1&&(g.onComplete=c(a,2),g.onInterrupt=u),n._frameQueue.push(g)}\"immediate\"===r.mode&&(n._lastFrameAt=-1/0),n._animationRaf||p()}}(y):(t.emit(\"plotly_animated\"),a())})},r.addFrames=function(t,e,r){if(t=o.getGraphDiv(t),null==e)return Promise.resolve();if(!o.isPlotDiv(t))throw new Error(\"This element is not a Plotly plot: \"+t+\". It's likely that you've failed to create a plot before adding frames. For more details, see https://plot.ly/javascript/animations/\");var n,i,a,s,l=t._transitionData._frames,u=t._transitionData._frameHash;if(!Array.isArray(e))throw new Error(\"addFrames failure: frameList must be an Array of frame definitions\"+e);var f=l.length+2*e.length,p=[],d={};for(n=e.length-1;n>=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,v=(u[g]||d[g]||{}).name,m=e[n].name,y=u[v]||d[v];v&&m&&\"number\"==typeof m&&y&&S<5&&(S++,o.warn('addFrames: overwriting frame \"'+(u[v]||d[v]).name+'\" with a frame whose name of type \"number\" also equates to \"'+v+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===S&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort(function(t,e){return t.index>e.index?-1:t.index<e.index?1:0});var x=[],b=[],_=l.length;for(n=p.length-1;n>=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a<l.length&&(l[a]||{}).name!==i.name;a++);x.push({type:\"replace\",index:a,value:i}),b.unshift({type:\"replace\",index:a,value:l[a]})}else s=Math.max(0,Math.min(p[n].index,_)),x.push({type:\"insert\",index:s,value:i}),b.unshift({type:\"delete\",index:s}),_++}var w=h.modifyFrames,k=h.modifyFrames,A=[t,b],M=[t,x];return c&&c.add(t,w,A,k,M),h.modifyFrames(t,x)},r.deleteFrames=function(t,e){if(t=o.getGraphDiv(t),!o.isPlotDiv(t))throw new Error(\"This element is not a Plotly plot: \"+t);var r,n,i=t._transitionData._frames,a=[],s=[];if(!e)for(e=[],r=0;r<i.length;r++)e.push(r);for((e=e.slice(0)).sort(),r=e.length-1;r>=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.purge=function(t){var e=(t=o.getGraphDiv(t))._fullLayout||{},r=t._fullData||[];return h.cleanPlot([],{},r,e),h.purge(t),l.purge(t),e._container&&e._container.remove(),delete t._context,t}},{\"../components/color\":571,\"../components/colorbar/connect\":573,\"../components/drawing\":592,\"../constants/xmlns_namespaces\":672,\"../lib\":694,\"../lib/events\":683,\"../lib/queue\":709,\"../lib/svg_text_utils\":718,\"../plots/cartesian/axes\":742,\"../plots/cartesian/constants\":748,\"../plots/cartesian/graph_interact\":752,\"../plots/plots\":806,\"../plots/polar/legacy\":814,\"../registry\":825,\"./edit_types\":725,\"./helpers\":726,\"./manage_arrays\":728,\"./plot_config\":730,\"./plot_schema\":731,\"./subroutines\":733,d3:149,\"fast-isnumeric\":215,\"has-hover\":396}],730:[function(t,e,r){\"use strict\";var n={staticPlot:{valType:\"boolean\",dflt:!1},plotlyServerURL:{valType:\"string\",dflt:\"https://plot.ly\"},editable:{valType:\"boolean\",dflt:!1},edits:{annotationPosition:{valType:\"boolean\",dflt:!1},annotationTail:{valType:\"boolean\",dflt:!1},annotationText:{valType:\"boolean\",dflt:!1},axisTitleText:{valType:\"boolean\",dflt:!1},colorbarPosition:{valType:\"boolean\",dflt:!1},colorbarTitleText:{valType:\"boolean\",dflt:!1},legendPosition:{valType:\"boolean\",dflt:!1},legendText:{valType:\"boolean\",dflt:!1},shapePosition:{valType:\"boolean\",dflt:!1},titleText:{valType:\"boolean\",dflt:!1}},autosizable:{valType:\"boolean\",dflt:!1},responsive:{valType:\"boolean\",dflt:!1},fillFrame:{valType:\"boolean\",dflt:!1},frameMargins:{valType:\"number\",dflt:0,min:0,max:.5},scrollZoom:{valType:\"flaglist\",flags:[\"cartesian\",\"gl3d\",\"geo\",\"mapbox\"],extras:[!0,!1],dflt:\"gl3d+geo+mapbox\"},doubleClick:{valType:\"enumerated\",values:[!1,\"reset\",\"autosize\",\"reset+autosize\"],dflt:\"reset+autosize\"},showAxisDragHandles:{valType:\"boolean\",dflt:!0},showAxisRangeEntryBoxes:{valType:\"boolean\",dflt:!0},showTips:{valType:\"boolean\",dflt:!0},showLink:{valType:\"boolean\",dflt:!1},linkText:{valType:\"string\",dflt:\"Edit chart\",noBlank:!0},sendData:{valType:\"boolean\",dflt:!0},showSources:{valType:\"any\",dflt:!1},displayModeBar:{valType:\"enumerated\",values:[\"hover\",!0,!1],dflt:\"hover\"},showSendToCloud:{valType:\"boolean\",dflt:!1},modeBarButtonsToRemove:{valType:\"any\",dflt:[]},modeBarButtonsToAdd:{valType:\"any\",dflt:[]},modeBarButtons:{valType:\"any\",dflt:!1},toImageButtonOptions:{valType:\"any\",dflt:{}},displaylogo:{valType:\"boolean\",dflt:!0},watermark:{valType:\"boolean\",dflt:!1},plotGlPixelRatio:{valType:\"number\",dflt:2,min:1,max:4},setBackground:{valType:\"any\",dflt:\"transparent\"},topojsonURL:{valType:\"string\",noBlank:!0,dflt:\"https://cdn.plot.ly/\"},mapboxAccessToken:{valType:\"string\",dflt:null},logging:{valType:\"boolean\",dflt:1},queueLength:{valType:\"integer\",min:0,dflt:0},globalTransforms:{valType:\"any\",dflt:[]},locale:{valType:\"string\",dflt:\"en-US\"},locales:{valType:\"any\",dflt:{}}},i={};!function t(e,r){for(var n in e){var i=e[n];i.valType?r[n]=i.dflt:(r[n]||(r[n]={}),t(i,r[n]))}}(n,i),e.exports={configAttributes:n,dfltConfig:i}},{}],731:[function(t,e,r){\"use strict\";var n=t(\"../registry\"),i=t(\"../lib\"),a=t(\"../plots/attributes\"),o=t(\"../plots/layout_attributes\"),s=t(\"../plots/frame_attributes\"),l=t(\"../plots/animation_attributes\"),c=t(\"./plot_config\").configAttributes,u=t(\"../plots/polar/legacy/area_attributes\"),f=t(\"../plots/polar/legacy/axis_attributes\"),h=t(\"./edit_types\"),p=i.extendFlat,d=i.extendDeepAll,g=i.isPlainObject,v=\"_isSubplotObj\",m=\"_isLinkedToArray\",y=[v,m,\"_arrayAttrRegexps\",\"_deprecated\"];function x(t,e,r){if(!t)return!1;if(t._isLinkedToArray)if(b(e[r]))r++;else if(r<e.length)return!1;for(;r<e.length;r++){var n=t[e[r]];if(!g(n))break;if(t=n,r===e.length-1)break;if(t._isLinkedToArray){if(!b(e[++r]))return!1}else if(\"info_array\"===t.valType){var i=e[++r];if(!b(i))return!1;var a=t.items;if(Array.isArray(a)){if(i>=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!b(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function b(t){return t===Math.round(t)&&t>=0}function _(t){return function(t){r.crawl(t,function(t,e,n){r.isValObject(t)?\"data_array\"===t.valType?(t.role=\"data\",n[e+\"src\"]={valType:\"string\",editType:\"none\"}):!0===t.arrayOk&&(n[e+\"src\"]={valType:\"string\",editType:\"none\"}):g(t)&&(t.role=\"object\")})}(t),function(t){r.crawl(t,function(t,e,r){if(!t)return;var n=t[m];if(!n)return;delete t[m],r[e]={items:{}},r[e].items[n]=t,r[e].role=\"object\"})}(t),function(t){!function t(e){for(var r in e)if(g(e[r]))t(e[r]);else if(Array.isArray(e[r]))for(var n=0;n<e[r].length;n++)t(e[r][n]);else e[r]instanceof RegExp&&(e[r]=e[r].toString())}(t)}(t),t}function w(t,e,r){var n=i.nestedProperty(t,r),a=d({},e.layoutAttributes);a[v]=!0,n.set(a)}function k(t,e,r){var n=i.nestedProperty(t,r);n.set(d(n.get()||{},e))}r.IS_SUBPLOT_OBJ=v,r.IS_LINKED_TO_ARRAY=m,r.DEPRECATED=\"_deprecated\",r.UNDERSCORE_ATTRS=y,r.get=function(){var t={};n.allTypes.concat(\"area\").forEach(function(e){t[e]=function(t){var e,o;\"area\"===t?(e={attributes:u},o={}):(e=n.modules[t]._module,o=e.basePlotModule);var s={type:null},l=d({},a),c=d({},e.attributes);r.crawl(c,function(t,e,r,n,a){i.nestedProperty(l,a).set(void 0),void 0===t&&i.nestedProperty(c,a).set(void 0)}),d(s,l),d(s,c),o.attributes&&d(s,o.attributes);s.type=t;var f={meta:e.meta||{},attributes:_(s)};if(e.layoutAttributes){var h={};d(h,e.layoutAttributes),f.layoutAttributes=_(h)}return f}(e)});var e,g={};return Object.keys(n.transformsRegistry).forEach(function(t){g[t]=function(t){var e=n.transformsRegistry[t],r=d({},e.attributes);return Object.keys(n.componentsRegistry).forEach(function(e){var i=n.componentsRegistry[e];i.schema&&i.schema.transforms&&i.schema.transforms[t]&&Object.keys(i.schema.transforms[t]).forEach(function(e){k(r,i.schema.transforms[t][e],e)})}),{attributes:_(r)}}(t)}),{defs:{valObjects:i.valObjectMeta,metaKeys:y.concat([\"description\",\"role\",\"editType\",\"impliedEdits\"]),editType:{traces:h.traces,layout:h.layout},impliedEdits:{}},traces:t,layout:function(){var t,e,r={};for(t in d(r,o),n.subplotsRegistry)if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i<e.attr.length;i++)w(r,e,e.attr[i]);else{var a=\"subplot\"===e.attr?e.name:e.attr;w(r,e,a)}for(t in r=function(t){return p(t,{radialaxis:f.radialaxis,angularaxis:f.angularaxis}),p(t,f.layout),t}(r),n.componentsRegistry){var s=(e=n.componentsRegistry[t]).schema;if(s&&(s.subplots||s.layout)){var l=s.subplots;if(l&&l.xaxis&&!l.yaxis)for(var c in l.xaxis)delete r.yaxis[c]}else e.layoutAttributes&&k(r,e.layoutAttributes,e.name)}return{layoutAttributes:_(r)}}(),transforms:g,frames:(e={frames:i.extendDeepAll({},s)},_(e),e.frames),animation:_(l),config:_(c)}},r.crawl=function(t,e,n,i){var a=n||0;i=i||\"\",Object.keys(t).forEach(function(n){var o=t[n];if(-1===y.indexOf(n)){var s=(i?i+\".\":\"\")+n;e(o,n,t,a,s),r.isValObject(o)||g(o)&&\"impliedEdits\"!==n&&r.crawl(o,e,a+1,s)}})},r.isValObject=function(t){return t&&void 0!==t.valType},r.findArrayAttributes=function(t){var e,n,o=[],s=[],l=[];function c(t,r,a,c){s=s.slice(0,c).concat([r]),l=l.slice(0,c).concat([t&&t._isLinkedToArray]),t&&(\"data_array\"===t.valType||!0===t.arrayOk)&&!(\"colorbar\"===s[c-1]&&(\"ticktext\"===r||\"tickvals\"===r))&&function t(e,r,a){var c=e[s[r]];var u=a+s[r];if(r===s.length-1)i.isArrayOrTypedArray(c)&&o.push(n+u);else if(l[r]){if(Array.isArray(c))for(var f=0;f<c.length;f++)i.isPlainObject(c[f])&&t(c[f],r+1,u+\"[\"+f+\"].\")}else i.isPlainObject(c)&&t(c,r+1,u+\".\")}(e,0,\"\")}e=t,n=\"\",r.crawl(a,c),t._module&&t._module.attributes&&r.crawl(t._module.attributes,c);var u=t.transforms;if(u)for(var f=0;f<u.length;f++){var h=u[f],p=h._module;p&&(n=\"transforms[\"+f+\"].\",e=h,r.crawl(p.attributes,c))}return o},r.getTraceValObject=function(t,e){var r,i,o=e[0],s=1;if(\"transforms\"===o){if(1===e.length)return a.transforms;var l=t.transforms;if(!Array.isArray(l)||!l.length)return!1;var c=e[1];if(!b(c)||c>=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else if(\"area\"===t.type)i=u[o];else{var f=t._module;if(f||(f=(n.modules[t.type||a.type.dflt]||{})._module),!f)return!1;if(!(i=(r=f.attributes)&&r[o])){var h=f.basePlotModule;h&&h.attributes&&(i=h.attributes[o])}i||(i=a[o])}return x(i,e,s)},r.getLayoutValObject=function(t,e){return x(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r<l.length;r++){if((a=l[r]).attrRegex&&a.attrRegex.test(e)){if(a.layoutAttrOverrides)return a.layoutAttrOverrides;!c&&a.layoutAttributes&&(c=a.layoutAttributes)}var u=a.baseLayoutAttrOverrides;if(u&&e in u)return u[e]}if(c)return c}var h=t._modules;if(h)for(r=0;r<h.length;r++)if((s=h[r].layoutAttributes)&&e in s)return s[e];for(i in n.componentsRegistry)if(!(a=n.componentsRegistry[i]).schema&&e===a.name)return a.layoutAttributes;if(e in o)return o[e];if(\"radialaxis\"===e||\"angularaxis\"===e)return f[e];return f.layout[e]||!1}(t,e[0]),e,1)}},{\"../lib\":694,\"../plots/animation_attributes\":737,\"../plots/attributes\":739,\"../plots/frame_attributes\":770,\"../plots/layout_attributes\":797,\"../plots/polar/legacy/area_attributes\":812,\"../plots/polar/legacy/axis_attributes\":813,\"../registry\":825,\"./edit_types\":725,\"./plot_config\":730}],732:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/attributes\"),a=\"templateitemname\",o={name:{valType:\"string\",editType:\"none\"}};function s(t){return t&&\"string\"==typeof t}function l(t){var e=t.length-1;return\"s\"!==t.charAt(e)&&n.warn(\"bad argument to arrayDefaultKey: \"+t),t.substr(0,t.length-1)+\"defaults\"}o[a]={valType:\"string\",editType:\"calc\"},r.templatedArray=function(t,e){return e._isLinkedToArray=t,e.name=o.name,e[a]=o[a],e},r.traceTemplater=function(t){var e,r,a={};for(e in t)r=t[e],Array.isArray(r)&&r.length&&(a[e]=0);return{newTrace:function(o){var s={type:e=n.coerce(o,{},i,\"type\"),_template:null};if(e in a){r=t[e];var l=a[e]%r.length;a[e]++,s._template=r[l]}return s}}},r.newContainer=function(t,e,r){var i=t._template,a=i&&(i[e]||r&&i[r]);return n.isPlainObject(a)||(a=null),t[e]={_template:a}},r.arrayTemplater=function(t,e,r){var n=t._template,i=n&&n[l(e)],o=n&&n[e];Array.isArray(o)&&o.length||(o=[]);var c={};return{newItem:function(t){var e={name:t.name,_input:t},n=e[a]=t[a];if(!s(n))return e._template=i,e;for(var l=0;l<o.length;l++){var u=o[l];if(u.name===n)return c[n]=1,e._template=u,e}return e[r]=t[r]||!1,e._template=!1,e},defaultItems:function(){for(var t=[],e=0;e<o.length;e++){var r=o[e],n=r.name;if(s(n)&&!c[n]){var i={_template:r,name:n,_input:{_templateitemname:n}};i[a]=r[a],t.push(i),c[n]=1}}return t}}},r.arrayDefaultKey=l,r.arrayEditor=function(t,e,r){var i=(n.nestedProperty(t,e).get()||[]).length,o=r._index,s=o>=i&&(r._input||{})._templateitemname;s&&(o=i);var l,c=e+\"[\"+o+\"]\";function u(){l={},s&&(l[c]={},l[c][a]=s)}function f(t,e){s?n.nestedProperty(l[c],t).set(e):l[c+\".\"+t]=e}function h(){var t=l;return u(),t}return u(),{modifyBase:function(t,e){l[t]=e},modifyItem:f,getUpdateObj:h,applyUpdate:function(e,r){e&&f(e,r);var i=h();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":694,\"../plots/attributes\":739}],733:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,v=d.clean,m=t(\"../plots/cartesian/autorange\").doAutoRange,y=\"start\",x=\"middle\",b=\"end\";function _(t,e,r){for(var n=0;n<r.length;n++){var i=r[n][0],a=r[n][1];if(!(i[0]>=t[1]||i[1]<=t[0])&&(a[0]<e[1]&&a[1]>e[0]))return!0}return!1}function w(t){var e,i,a,s,u,d,g=t._fullLayout,v=g._size,m=v.p,y=h.list(t,\"\",!0);if(g._paperdiv.style({width:t._context.responsive&&g.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":g.width+\"px\",height:t._context.responsive&&g.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":g.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,g.width,g.height),t._context.setBackground(t,g.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!g._has(\"cartesian\"))return t._promises.length&&Promise.all(t._promises);function x(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-m-n:e._offset+e._length+m+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+m+n:e._offset-m-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<y.length;e++){var b=(s=y[e])._anchorAxis;s._linepositions={},s._lw=c.crispRound(t,s.linewidth,1),s._mainLinePosition=x(s,b,s.side),s._mainMirrorPosition=s.mirror&&b?x(s,b,p.OPPOSITE_SIDE[s.side]):null}var w=[],A=[],T=[],S=1===l.opacity(g.paper_bgcolor)&&1===l.opacity(g.plot_bgcolor)&&g.paper_bgcolor===g.plot_bgcolor;for(i in g._plots)if((a=g._plots[i]).mainplot)a.bg&&a.bg.remove(),a.bg=void 0;else{var C=a.xaxis.domain,E=a.yaxis.domain,L=a.plotgroup;if(_(C,E,T)){var z=L.node(),O=a.bg=o.ensureSingle(L,\"rect\",\"bg\");z.insertBefore(O.node(),z.childNodes[0]),A.push(i)}else L.select(\"rect.bg\").remove(),T.push([C,E]),S||(w.push(i),A.push(i))}var I,D,P,R,F,B,N,j,V,U,q,H,G,W=g._bgLayer.selectAll(\".bg\").data(w);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each(function(t){g._plots[t].bg=n.select(this)}),e=0;e<A.length;e++)a=g._plots[A[e]],u=a.xaxis,d=a.yaxis,a.bg&&a.bg.call(c.setRect,u._offset-m,d._offset-m,u._length+2*m,d._length+2*m).call(l.fill,g.plot_bgcolor).style(\"stroke-width\",0);if(!g._hasOnlyLargeSploms)for(i in g._plots){a=g._plots[i],u=a.xaxis,d=a.yaxis;var Y,X,Z=a.clipId=\"clip\"+g._uid+i+\"plot\",$=o.ensureSingleById(g._clips,\"clipPath\",Z,function(t){t.classed(\"plotclip\",!0).append(\"rect\")});a.clipRect=$.select(\"rect\").attr({width:u._length,height:d._length}),c.setTranslate(a.plot,u._offset,d._offset),a._hasClipOnAxisFalse?(Y=null,X=Z):(Y=Z,X=null),c.setClipUrl(a.plot,Y,t),a.layerClipId=X}function J(t){return\"M\"+I+\",\"+t+\"H\"+D}function K(t){return\"M\"+u._offset+\",\"+t+\"h\"+u._length}function Q(t){return\"M\"+t+\",\"+j+\"V\"+N}function tt(t){return\"M\"+t+\",\"+d._offset+\"v\"+d._length}function et(t,e,r){if(!t.showline||i!==t._mainSubplot)return\"\";if(!t._anchorAxis)return r(t._mainLinePosition);var n=e(t._mainLinePosition);return t.mirror&&(n+=e(t._mainMirrorPosition)),n}for(i in g._plots){a=g._plots[i],u=a.xaxis,d=a.yaxis;var rt=\"M0,0\";k(u,i)&&(F=M(u,\"left\",d,y),I=u._offset-(F?m+F:0),B=M(u,\"right\",d,y),D=u._offset+u._length+(B?m+B:0),P=x(u,d,\"bottom\"),R=x(u,d,\"top\"),!(G=!u._anchorAxis||i!==u._mainSubplot)||\"allticks\"!==u.mirror&&\"all\"!==u.mirror||(u._linepositions[i]=[P,R]),rt=et(u,J,K),G&&u.showline&&(\"all\"===u.mirror||\"allticks\"===u.mirror)&&(rt+=J(P)+J(R)),a.xlines.style(\"stroke-width\",u._lw+\"px\").call(l.stroke,u.showline?u.linecolor:\"rgba(0,0,0,0)\")),a.xlines.attr(\"d\",rt);var nt=\"M0,0\";k(d,i)&&(q=M(d,\"bottom\",u,y),N=d._offset+d._length+(q?m:0),H=M(d,\"top\",u,y),j=d._offset-(H?m:0),V=x(d,u,\"left\"),U=x(d,u,\"right\"),!(G=!d._anchorAxis||i!==d._mainSubplot)||\"allticks\"!==d.mirror&&\"all\"!==d.mirror||(d._linepositions[i]=[V,U]),nt=et(d,Q,tt),G&&d.showline&&(\"all\"===d.mirror||\"allticks\"===d.mirror)&&(nt+=Q(V)+Q(U)),a.ylines.style(\"stroke-width\",d._lw+\"px\").call(l.stroke,d.showline?d.linecolor:\"rgba(0,0,0,0)\")),a.ylines.attr(\"d\",nt)}return h.makeClipPaths(t),t._promises.length&&Promise.all(t._promises)}function k(t,e){return(t.ticks||t.showline)&&(e===t._mainSubplot||\"all\"===t.mirror||\"allticks\"===t.mirror)}function A(t,e,r){if(!r.showline||!r._lw)return!1;if(\"all\"===r.mirror||\"allticks\"===r.mirror)return!0;var n=r._anchorAxis;if(!n)return!1;var i=p.FROM_BL[e];return r.side===e?n.domain[i]===t.domain[i]:r.mirror&&n.domain[1-i]===t.domain[1-i]}function M(t,e,r,n){if(A(t,e,r))return r._lw;for(var i=0;i<n.length;i++){var a=n[i];if(a._mainAxis===r._mainAxis&&A(t,e,a))return a._lw}return 0}r.layoutStyles=function(t){return o.syncOrAsync([a.doAutoMargin,w],t)},r.drawMainTitle=function(t){var e=t._fullLayout,r=function(t){var e=t.title,r=x;o.isRightAnchor(e)?r=b:o.isLeftAnchor(e)&&(r=y);return r}(e),n=function(t){var e=t.title,r=\"0em\";o.isTopAnchor(e)?r=p.CAP_SHIFT+\"em\":o.isMiddleAnchor(e)&&(r=p.MID_SHIFT+\"em\");return r}(e);u.draw(t,\"gtitle\",{propContainer:e,propName:\"title.text\",placeholder:e._dfltTitle.plot,attributes:{x:function(t,e){var r=t.title,n=t._size,i=0;e===y?i=r.pad.l:e===b&&(i=-r.pad.r);switch(r.xref){case\"paper\":return n.l+n.w*r.x+i;case\"container\":default:return t.width*r.x+i}}(e,r),y:function(t,e){var r=t.title,n=t._size,i=0;\"0em\"!==e&&e?e===p.CAP_SHIFT+\"em\"&&(i=r.pad.t):i=-r.pad.b;if(\"auto\"===r.y)return n.t/2;switch(r.yref){case\"paper\":return n.t+n.h-n.h*r.y+i;case\"container\":default:return t.height-t.height*r.y+i}}(e,n),\"text-anchor\":r,dy:n}})},r.doTraceStyle=function(t){var e,n=t.calcdata,o=[];for(e=0;e<n.length;e++){var l=n[e],c=l[0]||{},u=c.trace||{},f=u._module||{},h=f.arraysToCalcdata;h&&h(l,u);var p=f.editStyle;p&&o.push({fn:p,cd0:c})}if(o.length){for(e=0;e<o.length;e++){var d=o[e];d.fn(t,d.cd0)}s(t),r.redrawReglTraces(t)}return a.style(t),i.getComponentMethod(\"legend\",\"draw\")(t),a.previousPromises(t)},r.doColorBars=function(t){for(var e=0;e<t.calcdata.length;e++){var r=t.calcdata[e][0];if((r.t||{}).cb){var n=r.trace,o=r.t.cb;i.traceIs(n,\"contour\")&&o.line({width:!1!==n.contours.showlines?n.line.width:0,dash:n.line.dash,color:\"line\"===n.contours.coloring?o._opts.line.color:n.line.color});var s=n._module.colorbar.container,l=(s?n[s]:n).colorbar;o.options(l)()}}return a.previousPromises(t)},r.layoutReplot=function(t){var e=t.layout;return t.layout=void 0,i.call(\"plot\",t,\"\",e)},r.doLegend=function(t){return i.getComponentMethod(\"legend\",\"draw\")(t),a.previousPromises(t)},r.doTicksRelayout=function(t){return h.draw(t,\"redraw\"),t._fullLayout._hasOnlyLargeSploms&&(i.subplotsRegistry.splom.updateGrid(t),s(t),r.redrawReglTraces(t)),r.drawMainTitle(t),a.previousPromises(t)},r.doModeBar=function(t){var e=t._fullLayout;f.manage(t);for(var r=0;r<e._basePlotModules.length;r++){var n=e._basePlotModules[r].updateFx;n&&n(t)}return a.previousPromises(t)},r.doCamera=function(t){for(var e=t._fullLayout,r=e._subplots.gl3d,n=0;n<r.length;n++){var i=e[r[n]];i._scene.setCamera(i.camera)}},r.drawData=function(t){var e,n=t._fullLayout,o=t.calcdata;for(e=0;e<o.length;e++){var l=o[e][0].trace;!0===l.visible&&l._module.colorbar||n._infolayer.select(\".cb\"+l.uid).remove()}s(t);var c=n._basePlotModules;for(e=0;e<c.length;e++)c[e].plot(t);return r.redrawReglTraces(t),a.style(t),i.getComponentMethod(\"shapes\",\"draw\")(t),i.getComponentMethod(\"annotations\",\"draw\")(t),n._replotting=!1,a.previousPromises(t)},r.redrawReglTraces=function(t){var e=t._fullLayout;if(e._has(\"regl\")){var r,n,i=t._fullData,a=[],s=[];for(e._hasOnlyLargeSploms&&e._splomGrid.draw(),r=0;r<i.length;r++){var l=i[r];!0===l.visible&&(\"splom\"===l.type?e._splomScenes[l.uid].draw():\"scattergl\"===l.type?o.pushUnique(a,l.xaxis+l.yaxis):\"scatterpolargl\"===l.type&&o.pushUnique(s,l.subplot))}for(r=0;r<a.length;r++)(n=e._plots[a[r]])._scene&&n._scene.draw();for(r=0;r<s.length;r++)(n=e[s[r]]._subplot)._scene&&n._scene.draw()}},r.doAutoRangeAndConstraints=function(t){for(var e=h.list(t,\"\",!0),r=0;r<e.length;r++){var n=e[r];v(t,n),n.setScale(),m(t,n)}g(t)},r.finalDraw=function(t){i.getComponentMethod(\"shapes\",\"draw\")(t),i.getComponentMethod(\"images\",\"draw\")(t),i.getComponentMethod(\"annotations\",\"draw\")(t),i.getComponentMethod(\"rangeslider\",\"draw\")(t),i.getComponentMethod(\"rangeselector\",\"draw\")(t)},r.drawMarginPushers=function(t){i.getComponentMethod(\"legend\",\"draw\")(t),i.getComponentMethod(\"rangeselector\",\"draw\")(t),i.getComponentMethod(\"sliders\",\"draw\")(t),i.getComponentMethod(\"updatemenus\",\"draw\")(t)}},{\"../components/color\":571,\"../components/drawing\":592,\"../components/modebar\":630,\"../components/titles\":659,\"../constants/alignment\":666,\"../lib\":694,\"../lib/clear_gl_canvases\":679,\"../plots/cartesian/autorange\":741,\"../plots/cartesian/axes\":742,\"../plots/cartesian/constraints\":750,\"../plots/plots\":806,\"../registry\":825,d3:149}],734:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=n.isPlainObject,a=t(\"./plot_schema\"),o=t(\"../plots/plots\"),s=t(\"../plots/attributes\"),l=t(\"./plot_template\"),c=t(\"./plot_config\").dfltConfig;function u(t,e){t=n.extendDeep({},t);var r,a,o=Object.keys(t).sort();function s(e,r,n){if(i(r)&&i(e))u(e,r);else if(Array.isArray(r)&&Array.isArray(e)){var o=l.arrayTemplater({_template:t},n);for(a=0;a<r.length;a++){var s=r[a],c=o.newItem(s)._template;c&&u(c,s)}var f=o.defaultItems();for(a=0;a<f.length;a++)r.push(f[a]._template);for(a=0;a<r.length;a++)delete r[a].templateitemname}}for(r=0;r<o.length;r++){var c=o[r],h=t[c];if(c in e?s(h,e[c],c):e[c]=h,f(c)===c)for(var p in e){var d=f(p);p===d||d!==c||p in t||s(h,e[p],c)}}}function f(t){return t.replace(/[0-9]+$/,\"\")}function h(t,e,r,a,o){var s=o&&r(o);for(var c in t){var u=t[c],d=p(t,c,a),g=p(t,c,o),v=r(g);if(!v){var m=f(c);m!==c&&(v=r(g=p(t,m,o)))}if((!s||s!==v)&&!(!v||v._noTemplating||\"data_array\"===v.valType||v.arrayOk&&Array.isArray(u)))if(!v.valType&&i(u))h(u,e,r,d,g);else if(v._isLinkedToArray&&Array.isArray(u))for(var y=!1,x=0,b={},_=0;_<u.length;_++){var w=u[_];if(i(w)){var k=w.name;if(k)b[k]||(h(w,e,r,p(u,x,d),p(u,x,g)),x++,b[k]=1);else if(!y){var A=p(t,l.arrayDefaultKey(c),a),M=p(u,x,d);h(w,e,r,M,p(u,x,g));var T=n.nestedProperty(e,M);n.nestedProperty(e,A).set(T.get()),T.set(null),y=!0}}}else{n.nestedProperty(e,d).set(u)}}}function p(t,e,r){return r?Array.isArray(t)?r+\"[\"+e+\"]\":r+\".\"+e:e}function d(t){for(var e=0;e<t.length;e++)if(i(t[e]))return!0}function g(t){var e;switch(t.code){case\"data\":e=\"The template has no key data.\";break;case\"layout\":e=\"The template has no key layout.\";break;case\"missing\":e=t.path?\"There are no templates for item \"+t.path+\" with name \"+t.templateitemname:\"There are no templates for trace \"+t.index+\", of type \"+t.traceType+\".\";break;case\"unused\":e=t.path?\"The template item at \"+t.path+\" was not used in constructing the plot.\":t.dataCount?\"Some of the templates of type \"+t.traceType+\" were not used. The template has \"+t.templateCount+\" traces, the data only has \"+t.dataCount+\" of this type.\":\"The template has \"+t.templateCount+\" traces of type \"+t.traceType+\" but there are none in the data.\";break;case\"reused\":e=\"Some of the templates of type \"+t.traceType+\" were used more than once. The template has \"+t.templateCount+\" traces, the data has \"+t.dataCount+\" of this type.\"}return t.msg=e,t}r.makeTemplate=function(t){t=n.isPlainObject(t)?t:n.getGraphDiv(t),t=n.extendDeep({_context:c},{data:t.data,layout:t.layout}),o.supplyDefaults(t);var e=t.data||[],r=t.layout||{};r._basePlotModules=t._fullLayout._basePlotModules,r._modules=t._fullLayout._modules;var l={data:{},layout:{}};e.forEach(function(t){var e={};h(t,e,function(t,e){return a.getTraceValObject(t,n.nestedProperty({},e).parts)}.bind(null,t));var r=n.coerce(t,{},s,\"type\"),i=l.data[r];i||(i=l.data[r]=[]),i.push(e)}),h(r,l.layout,function(t,e){return a.getLayoutValObject(t,n.nestedProperty({},e).parts)}.bind(null,r)),delete l.layout.template;var f=r.template;if(i(f)){var p,d,g,v,m,y,x=f.layout;i(x)&&u(x,l.layout);var b=f.data;if(i(b)){for(d in l.data)if(g=b[d],Array.isArray(g)){for(y=(m=l.data[d]).length,v=g.length,p=0;p<y;p++)u(g[p%v],m[p]);for(p=y;p<v;p++)m.push(n.extendDeep({},g[p]))}for(d in b)d in l.data||(l.data[d]=n.extendDeep([],b[d]))}}return l},r.validateTemplate=function(t,e){var r=n.extendDeep({},{_context:c,data:t.data,layout:t.layout}),a=r.layout||{};i(e)||(e=a.template||{});var s=e.layout,l=e.data,u=[];r.layout=a,r.layout.template=e,o.supplyDefaults(r);var h=r._fullLayout,v=r._fullData,m={};if(i(s)?(!function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)&&i(e[n])){var a,o=f(n),s=[];for(a=0;a<r.length;a++)s.push(p(e,n,r[a])),o!==n&&s.push(p(e,o,r[a]));for(a=0;a<s.length;a++)m[s[a]]=1;t(e[n],s)}}(h,[\"layout\"]),function t(e,r){for(var n in e)if(-1===n.indexOf(\"defaults\")&&i(e[n])){var a=p(e,n,r);m[a]?t(e[n],a):u.push({code:\"unused\",path:a})}}(s,\"layout\")):u.push({code:\"layout\"}),i(l)){for(var y,x={},b=0;b<v.length;b++){var _=v[b];x[y=_.type]=(x[y]||0)+1,_._fullInput._template||u.push({code:\"missing\",index:_._fullInput.index,traceType:y})}for(y in l){var w=l[y].length,k=x[y]||0;w>k?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:k}):k>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:k})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=p(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&d(a)&&t(a,o)}}({data:v,layout:h},\"\"),u.length)return u.map(g)}},{\"../lib\":694,\"../plots/attributes\":739,\"../plots/plots\":806,\"./plot_config\":730,\"./plot_schema\":731,\"./plot_template\":732}],735:[function(t,e,r){\"use strict\";var n=t(\"./plot_api\"),i=t(\"../lib\"),a=t(\"../snapshot/helpers\"),o=t(\"../snapshot/tosvg\"),s=t(\"../snapshot/svgtoimg\"),l={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}},c=/^data:image\\/\\w+;base64,/;e.exports=function(t,e){var r,u,f;function h(t){return!(t in e)||i.validate(e[t],l[t])}if(e=e||{},i.isPlainObject(t)?(r=t.data||[],u=t.layout||{},f=t.config||{}):(t=i.getGraphDiv(t),r=i.extendDeep([],t.data),u=i.extendDeep({},t.layout),f=t._context),!h(\"width\")||!h(\"height\"))throw new Error(\"Height and width should be pixel values.\");if(!h(\"format\"))throw new Error(\"Image format is not jpeg, png, svg or webp.\");var p={};function d(t,r){return i.coerce(e,p,l,t,r)}var g=d(\"format\"),v=d(\"width\"),m=d(\"height\"),y=d(\"scale\"),x=d(\"setBackground\"),b=d(\"imageDataOnly\"),_=document.createElement(\"div\");_.style.position=\"absolute\",_.style.left=\"-5000px\",document.body.appendChild(_);var w=i.extendFlat({},u);v&&(w.width=v),m&&(w.height=m);var k=i.extendFlat({},f,{_exportedPlot:!0,staticPlot:!0,setBackground:x}),A=a.getRedrawFunc(_);function M(){return new Promise(function(t){setTimeout(t,a.getDelay(_._fullLayout))})}function T(){return new Promise(function(t,e){var r=o(_,g,y),a=_._fullLayout.width,l=_._fullLayout.height;if(n.purge(_),document.body.removeChild(_),\"svg\"===g)return t(b?r:\"data:image/svg+xml,\"+encodeURIComponent(r));var c=document.createElement(\"canvas\");c.id=i.randstr(),s({format:g,width:a,height:l,scale:y,canvas:c,svg:r,promise:!0}).then(t).catch(e)})}return new Promise(function(t,e){n.plot(_,r,w,k).then(A).then(M).then(T).then(function(e){t(function(t){return b?t.replace(c,\"\"):t}(e))}).catch(function(t){e(t)})})}},{\"../lib\":694,\"../snapshot/helpers\":829,\"../snapshot/svgtoimg\":831,\"../snapshot/tosvg\":833,\"./plot_api\":729}],736:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;h<f.length;h++){var v=f[h];if(\"transforms\"!==v){var m=o.slice();m.push(v);var y=t[v],x=e[v],b=g(r,v),_=\"info_array\"===(b||{}).valType,w=\"colorscale\"===(b||{}).valType,k=(b||{}).items;if(d(r,v))if(s(y)&&s(x))u(y,x,b,i,a,m);else if(_&&l(y)){y.length>x.length&&i.push(p(\"unused\",a,m.concat(x.length)));var A,M,T,S,C,E=x.length,L=Array.isArray(k);if(L&&(E=Math.min(E,k.length)),2===b.dimensions)for(M=0;M<E;M++)if(l(y[M])){y[M].length>x[M].length&&i.push(p(\"unused\",a,m.concat(M,x[M].length)));var z=x[M].length;for(A=0;A<(L?Math.min(z,k[M].length):z);A++)T=L?k[M][A]:k,S=y[M][A],C=x[M][A],n.validate(S,T)?C!==S&&C!==+S&&i.push(p(\"dynamic\",a,m.concat(M,A),S,C)):i.push(p(\"value\",a,m.concat(M,A),S))}else i.push(p(\"array\",a,m.concat(M),y[M]));else for(M=0;M<E;M++)T=L?k[M]:k,S=y[M],C=x[M],n.validate(S,T)?C!==S&&C!==+S&&i.push(p(\"dynamic\",a,m.concat(M),S,C)):i.push(p(\"value\",a,m.concat(M),S))}else if(b.items&&!_&&l(y)){var O,I,D=k[Object.keys(k)[0]],P=[];for(O=0;O<x.length;O++){var R=x[O]._index||O;if((I=m.slice()).push(R),s(y[R])&&s(x[O])){P.push(R);var F=y[R],B=x[O];s(F)&&!1!==F.visible&&!1===B.visible?i.push(p(\"invisible\",a,I)):u(F,B,D,i,a,I)}}for(O=0;O<y.length;O++)(I=m.slice()).push(O),s(y[O])?-1===P.indexOf(O)&&i.push(p(\"unused\",a,I)):i.push(p(\"object\",a,I,y[O]))}else!s(y)&&s(x)?i.push(p(\"object\",a,m,y)):c(y)||!c(x)||_||w?v in e?n.validate(y,b)?\"enumerated\"===b.valType&&(b.coerceNumber&&y!==+x||y!==x)&&i.push(p(\"dynamic\",a,m,y,x)):i.push(p(\"value\",a,m,y)):i.push(p(\"unused\",a,m,y)):i.push(p(\"array\",a,m,y));else i.push(p(\"schema\",a,m))}}return i}e.exports=function(t,e){var r,c,f=a.get(),h=[],d={_context:n.extendFlat({},o)};l(t)?(d.data=n.extendDeep([],t),r=t):(d.data=[],r=[],h.push(p(\"array\",\"data\"))),s(e)?(d.layout=n.extendDeep({},e),c=e):(d.layout={},c={},arguments.length>1&&h.push(p(\"object\",\"layout\"))),i.supplyDefaults(d);for(var g=d._fullData,v=r.length,m=0;m<v;m++){var y=r[m],x=[\"data\",m];if(s(y)){var b=g[m],_=b.type,w=f.traces[_].attributes;w.type={valType:\"enumerated\",values:[_]},!1===b.visible&&!1!==y.visible&&h.push(p(\"invisible\",x)),u(y,b,w,h,x);var k=y.transforms,A=b.transforms;if(k){l(k)||h.push(p(\"array\",x,[\"transforms\"])),x.push(\"transforms\");for(var M=0;M<k.length;M++){var T=[\"transforms\",M],S=k[M].type;if(s(k[M])){var C=f.transforms[S]?f.transforms[S].attributes:{};C.type={valType:\"enumerated\",values:Object.keys(f.transforms)},u(k[M],A[M],C,h,x,T)}else h.push(p(\"object\",x,T))}}}else h.push(p(\"object\",x))}return u(c,d._fullLayout,function(t,e){for(var r=t.layout.layoutAttributes,i=0;i<e.length;i++){var a=e[i],o=t.traces[a.type],s=o.layoutAttributes;s&&(a.subplot?n.extendFlat(r[o.attributes.subplot.dflt],s):n.extendFlat(r,s))}return r}(f,g),h,\"layout\"),0===h.length?void 0:h};var f={object:function(t,e){return(\"layout\"===t&&\"\"===e?\"The layout argument\":\"data\"===t[0]&&\"\"===e?\"Trace \"+t[1]+\" in the data argument\":h(t)+\"key \"+e)+\" must be linked to an object container\"},array:function(t,e){return(\"data\"===t?\"The data argument\":h(t)+\"key \"+e)+\" must be linked to an array container\"},schema:function(t,e){return h(t)+\"key \"+e+\" is not part of the schema\"},unused:function(t,e,r){var n=s(r)?\"container\":\"key\";return h(t)+n+\" \"+e+\" did not get coerced\"},dynamic:function(t,e,r,n){return[h(t)+\"key\",e,\"(set to '\"+r+\"')\",\"got reset to\",\"'\"+n+\"'\",\"during defaults.\"].join(\" \")},invisible:function(t,e){return(e?h(t)+\"item \"+e:\"Trace \"+t[1])+\" got defaulted to be not visible\"},value:function(t,e,r){return[h(t)+\"key \"+e,\"is set to an invalid value (\"+r+\")\"].join(\" \")}};function h(t){return l(t)?\"In data trace \"+t[1]+\", \":\"In \"+t+\", \"}function p(t,e,r,i,a){var o,s;r=r||\"\",l(e)?(o=e[0],s=e[1]):(o=e,s=null);var c=function(t){if(!l(t))return String(t);for(var e=\"\",r=0;r<t.length;r++){var n=t[r];\"number\"==typeof n?e=e.substr(0,e.length-1)+\"[\"+n+\"]\":e+=n,r<t.length-1&&(e+=\".\")}return e}(r),u=f[t](e,c,i,a);return n.log(u),{code:t,container:o,trace:s,path:r,astr:c,msg:u}}function d(t,e){var r=m(e),n=r.keyMinusId,i=r.id;return!!(n in t&&t[n]._isSubplotObj&&i)||e in t}function g(t,e){return e in t?t[e]:t[m(e).keyMinusId]}var v=n.counterRegex(\"([a-z]+)\");function m(t){var e=t.match(v);return{keyMinusId:e&&e[1],id:e&&e[2]}}},{\"../lib\":694,\"../plots/plots\":806,\"./plot_config\":730,\"./plot_schema\":731}],737:[function(t,e,r){\"use strict\";e.exports={mode:{valType:\"enumerated\",dflt:\"afterall\",values:[\"immediate\",\"next\",\"afterall\"]},direction:{valType:\"enumerated\",values:[\"forward\",\"reverse\"],dflt:\"forward\"},fromcurrent:{valType:\"boolean\",dflt:!1},frame:{duration:{valType:\"number\",min:0,dflt:500},redraw:{valType:\"boolean\",dflt:!0}},transition:{duration:{valType:\"number\",min:0,dflt:500,editType:\"none\"},easing:{valType:\"enumerated\",dflt:\"cubic-in-out\",values:[\"linear\",\"quad\",\"cubic\",\"sin\",\"exp\",\"circle\",\"elastic\",\"back\",\"bounce\",\"linear-in\",\"quad-in\",\"cubic-in\",\"sin-in\",\"exp-in\",\"circle-in\",\"elastic-in\",\"back-in\",\"bounce-in\",\"linear-out\",\"quad-out\",\"cubic-out\",\"sin-out\",\"exp-out\",\"circle-out\",\"elastic-out\",\"back-out\",\"bounce-out\",\"linear-in-out\",\"quad-in-out\",\"cubic-in-out\",\"sin-in-out\",\"exp-in-out\",\"circle-in-out\",\"elastic-in-out\",\"back-in-out\",\"bounce-in-out\"],editType:\"none\"},ordering:{valType:\"enumerated\",values:[\"layout first\",\"traces first\"],dflt:\"layout first\",editType:\"none\"}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plot_api/plot_template\");e.exports=function(t,e,r){var a,o,s=r.name,l=r.inclusionAttr||\"visible\",c=e[s],u=n.isArrayOrTypedArray(t[s])?t[s]:[],f=e[s]=[],h=i.arrayTemplater(e,s,l);for(a=0;a<u.length;a++){var p=u[a];n.isPlainObject(p)?o=h.newItem(p):(o=h.newItem({}))[l]=!1,o._index=a,!1!==o[l]&&r.handleItemDefaults(p,o,e,r),f.push(o)}var d=h.defaultItems();for(a=0;a<d.length;a++)(o=d[a])._index=f.length,r.handleItemDefaults({},o,e,r,{}),f.push(o);if(n.isArrayOrTypedArray(c)){var g=Math.min(c.length,f.length);for(a=0;a<g;a++)n.relinkPrivateKeys(f[a],c[a])}return f}},{\"../lib\":694,\"../plot_api/plot_template\":732}],739:[function(t,e,r){\"use strict\";var n=t(\"../components/fx/attributes\");e.exports={type:{valType:\"enumerated\",values:[],dflt:\"scatter\",editType:\"calc+clearAxisTypes\",_noTemplating:!0},visible:{valType:\"enumerated\",values:[!0,!1,\"legendonly\"],dflt:!0,editType:\"calc\"},showlegend:{valType:\"boolean\",dflt:!0,editType:\"style\"},legendgroup:{valType:\"string\",dflt:\"\",editType:\"style\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"style\"},name:{valType:\"string\",editType:\"style\"},uid:{valType:\"string\",editType:\"plot\",anim:!0},ids:{valType:\"data_array\",editType:\"calc\",anim:!0},customdata:{valType:\"data_array\",editType:\"calc\"},selectedpoints:{valType:\"any\",editType:\"calc\"},hoverinfo:{valType:\"flaglist\",flags:[\"x\",\"y\",\"z\",\"text\",\"name\"],extras:[\"all\",\"none\",\"skip\"],arrayOk:!0,dflt:\"all\",editType:\"none\"},hoverlabel:n.hoverlabel,stream:{token:{valType:\"string\",noBlank:!0,strict:!0,editType:\"calc\"},maxpoints:{valType:\"number\",min:0,max:1e4,dflt:500,editType:\"calc\"},editType:\"calc\"},transforms:{_isLinkedToArray:\"transform\",editType:\"calc\"},uirevision:{valType:\"any\",editType:\"none\"}}},{\"../components/fx/attributes\":601}],740:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],741:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").FP_SAFE,o=t(\"../../registry\");function s(t,e){var r,n,a=[],o=l(e),s=c(t,e),u=s.min,f=s.max;if(0===u.length||0===f.length)return i.simpleMap(e.range,e.r2l);var h=u[0].val,p=f[0].val;for(r=1;r<u.length&&h===p;r++)h=Math.min(h,u[r].val);for(r=1;r<f.length&&h===p;r++)p=Math.max(p,f[r].val);var d=!1;if(e.range){var g=i.simpleMap(e.range,e.r2l);d=g[1]<g[0]}\"reversed\"===e.autorange&&(d=!0,e.autorange=!0);var v,m,y,x,b,_,w=e.rangemode,k=\"tozero\"===w,A=\"nonnegative\"===w,M=e._length,T=M/10,S=0;for(r=0;r<u.length;r++)for(v=u[r],n=0;n<f.length;n++)(_=(m=f[n]).val-v.val)>0&&((b=M-o(v)-o(m))>T?_/b>S&&(y=v,x=m,S=_/b):_/M>S&&(y={val:v.val,pad:0},x={val:m.val,pad:0},S=_/M));if(h===p){var C=h-1,E=h+1;if(k)if(0===h)a=[0,1];else{var L=(h>0?f:u).reduce(function(t,e){return Math.max(t,o(e))},0),z=h/(1-Math.min(.5,L/M));a=h>0?[0,z]:[z,0]}else a=A?[Math.max(0,C),Math.max(1,E)]:[C,E]}else k?(y.val>=0&&(y={val:0,pad:0}),x.val<=0&&(x={val:0,pad:0})):A&&(y.val-S*o(y)<0&&(y={val:0,pad:0}),x.val<=0&&(x={val:1,pad:0})),S=(x.val-y.val)/(M-o(y)-o(x)),a=[y.val-S*o(y),x.val+S*o(x)];return d&&a.reverse(),i.simpleMap(a,e.l2r||Number)}function l(t){var e=t._length/20;return\"domain\"===t.constrain&&t._inputDomain&&(e*=(t._inputDomain[1]-t._inputDomain[0])/(t.domain[1]-t.domain[0])),function(t){return t.pad+(t.extrapad?e:0)}}function c(t,e){var r,n,i,a=e._id,o=t._fullData,s=t._fullLayout,l=[],c=[];function h(t,e){for(r=0;r<e.length;r++){var o=t[e[r]],s=(o._extremes||{})[a];if(!0===o.visible&&s){for(n=0;n<s.min.length;n++)i=s.min[n],u(l,i.val,i.pad,{extrapad:i.extrapad});for(n=0;n<s.max.length;n++)i=s.max[n],f(c,i.val,i.pad,{extrapad:i.extrapad})}}}return h(o,e._traceIndices),h(s.annotations||[],e._annIndices||[]),h(s.shapes||[],e._shapeIndices||[]),{min:l,max:c}}function u(t,e,r,n){h(t,e,r,n,d)}function f(t,e,r,n){h(t,e,r,n,g)}function h(t,e,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l<t.length&&s;l++){var c=t[l];if(i(c.val,e)&&c.pad>=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function p(t){return n(t)&&Math.abs(t)<a}function d(t,e){return t<=e}function g(t,e){return t>=e}e.exports={getAutoRange:s,makePadFn:l,doAutoRange:function(t,e){if(e.autorange){e.range=s(t,e),e._r=e.range.slice(),e._rl=i.simpleMap(e._r,e.r2l);var r=e._input,n={};n[e._attr+\".range\"]=e.range,n[e._attr+\".autorange\"]=e.autorange,o.call(\"_storeDirectGUIEdit\",t.layout,t._fullLayout._preGUI,n),r.range=e.range.slice(),r.autorange=e.autorange}var a=e._anchorAxis;if(a&&a.rangeslider){var l=a.rangeslider[e._name];l&&\"auto\"===l.rangemode&&(l.range=s(t,e)),a._input.rangeslider[e._name]=i.extendFlat({},l)}},findExtremes:function(t,e,r){r||(r={});t._m||t.setScale();var i,o,s,l,c,h,d,g,v,m=[],y=[],x=e.length,b=r.padded||!1,_=r.tozero&&(\"linear\"===t.type||\"-\"===t.type),w=\"log\"===t.type,k=!1;function A(t){if(Array.isArray(t))return k=!0,function(e){return Math.max(Number(t[e]||0),0)};var e=Math.max(Number(t||0),0);return function(){return e}}var M=A((t._m>0?r.ppadplus:r.ppadminus)||r.ppad||0),T=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),S=A(r.vpadplus||r.vpad),C=A(r.vpadminus||r.vpad);if(!k){if(g=1/0,v=-1/0,w)for(i=0;i<x;i++)(o=e[i])<g&&o>0&&(g=o),o>v&&o<a&&(v=o);else for(i=0;i<x;i++)(o=e[i])<g&&o>-a&&(g=o),o>v&&o<a&&(v=o);e=[g,v],x=2}var E={tozero:_,extrapad:b};function L(r){s=e[r],n(s)&&(h=M(r),d=T(r),g=s-C(r),v=s+S(r),w&&g<v/10&&(g=v/10),l=t.c2l(g),c=t.c2l(v),_&&(l=Math.min(0,l),c=Math.max(0,c)),p(l)&&u(m,l,d,E),p(c)&&f(y,c,h,E))}var z=Math.min(6,x);for(i=0;i<z;i++)L(i);for(i=x-1;i>=z;i--)L(i);return{min:m,max:y,opts:r}},concatExtremes:c}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../registry\":825,\"fast-isnumeric\":215}],742:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../components/titles\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"./layout_attributes\"),p=t(\"./clean_ticks\"),d=t(\"../../constants/numerical\"),g=d.ONEAVGYEAR,v=d.ONEAVGMONTH,m=d.ONEDAY,y=d.ONEHOUR,x=d.ONEMIN,b=d.ONESEC,_=d.MINUS_SIGN,w=d.BADNUM,k=t(\"../../constants/alignment\").MID_SHIFT,A=t(\"../../constants/alignment\").LINE_SPACING,M=e.exports={};M.setConvert=t(\"./set_convert\");var T=t(\"./axis_autotype\"),S=t(\"./axis_ids\");M.id2name=S.id2name,M.name2id=S.name2id,M.cleanId=S.cleanId,M.list=S.list,M.listIds=S.listIds,M.getFromId=S.getFromId,M.getFromTrace=S.getFromTrace;var C=t(\"./autorange\");M.getAutoRange=C.getAutoRange,M.findExtremes=C.findExtremes,M.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||a),a||(a=i),u[c]={valType:\"enumerated\",values:l.concat(a?[a]:[]),dflt:i},s.coerce(t,e,u,c)},M.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"paper\"===n||\"pixel\"===n)o=s.ensureNumber,l=r(i,a);else{var c=M.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},M.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:M.getFromId(e,r).cleanPos)(t)},M.redrawComponents=function(t,e){e=e||M.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u<e.length;u++)for(var f=r[M.id2name(e[u])][a],h=0;h<f.length;h++){var p=f[h];if(!c[p]&&(l(t,p),c[p]=1,s))return}}n(\"annotations\",\"drawOne\",\"_annIndices\"),n(\"shapes\",\"drawOne\",\"_shapeIndices\"),n(\"images\",\"draw\",\"_imgIndices\",!0)};var E=M.getDataConversions=function(t,e,r,n){var i,a=\"x\"===r||\"y\"===r||\"z\"===r?r:n;if(Array.isArray(a)){if(i={type:T(n),_categories:[]},M.setConvert(i),\"category\"===i.type)for(var o=0;o<n.length;o++)i.d2c(n[o])}else i=M.getFromTrace(t,e,a);return i?{d2c:i.d2c,c2d:i.c2d}:\"ids\"===a?{d2c:z,c2d:z}:{d2c:L,c2d:L}};function L(t){return+t}function z(t){return String(t)}M.getDataToCoordFunc=function(t,e,r,n){return E(t,e,r,n).d2c},M.counterLetter=function(t){var e=t.charAt(0);return\"x\"===e?\"y\":\"y\"===e?\"x\":void 0},M.minDtick=function(t,e,r,n){-1===[\"log\",\"category\",\"multicategory\"].indexOf(t.type)&&n?void 0===t._minDtick?(t._minDtick=e,t._forceTick0=r):t._minDtick&&((t._minDtick/e+1e-6)%1<2e-6&&((r-t._forceTick0)/e%1+1.000001)%1<2e-6?(t._minDtick=e,t._forceTick0=r):((e/t._minDtick+1e-6)%1>2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},M.saveRangeInitial=function(t,e){for(var r=M.list(t,\"\",!0),n=!1,i=0;i<r.length;i++){var a=r[i],o=void 0===a._rangeInitial,s=o||!(a.range[0]===a._rangeInitial[0]&&a.range[1]===a._rangeInitial[1]);(o&&!1===a.autorange||e&&s)&&(a._rangeInitial=a.range.slice(),n=!0)}return n},M.saveShowSpikeInitial=function(t,e){for(var r=M.list(t,\"\",!0),n=!1,i=\"on\",a=0;a<r.length;a++){var o=r[a],s=void 0===o._showSpikeInitial,l=s||!(o.showspikes===o._showspikes);(s||e&&l)&&(o._showSpikeInitial=o.showspikes,n=!0),\"on\"!==i||o.showspikes||(i=\"off\")}return t._fullLayout._cartesianSpikesEnabled=i,n},M.autoBin=function(t,e,r,n,a,o){var l,c=s.aggNums(Math.min,null,t),u=s.aggNums(Math.max,null,t);if(\"category\"===e.type||\"multicategory\"===e.type)return{start:c-.5,end:u+.5,size:Math.max(1,Math.round(o)||1),_dataSpan:u-c};if(a||(a=e.calendar),l=\"log\"===e.type?{type:\"linear\",range:[c,u]}:{type:e.type,range:s.simpleMap([c,u],e.c2r,0,a),calendar:a},M.setConvert(l),o=o&&p.dtick(o,l.type))l.dtick=o,l.tick0=p.tick0(void 0,l.type,a);else{var f;if(r)f=(u-c)/r;else{var h=s.distinctVals(t),d=Math.pow(10,Math.floor(Math.log(h.minDiff)/Math.LN10)),g=d*s.roundUp(h.minDiff/d,[.9,1.9,4.9,9.9],!0);f=Math.max(g,2*s.stdev(t)/Math.pow(t.length,n?.25:.4)),i(f)||(f=1)}M.autoTicks(l,f)}var v,y=l.dtick,x=M.tickIncrement(M.tickFirst(l),y,\"reverse\",a);if(\"number\"==typeof y)v=(x=function(t,e,r,n,a){var o=0,s=0,l=0,c=0;function u(e){return(1+100*(e-t)/r.dtick)%100<2}for(var f=0;f<e.length;f++)e[f]%1==0?l++:i(e[f])||c++,u(e[f])&&o++,u(e[f]+r.dtick/2)&&s++;var h=e.length-c;if(l===h&&\"date\"!==r.type)r.dtick<1?t=n-.5*r.dtick:(t-=.5)+r.dtick<n&&(t+=r.dtick);else if(s<.1*h&&(o>.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p<n?p:-p}return t}(x,t,l,c,u))+(1+Math.floor((u-x)/y))*y;else for(\"M\"===l.dtick.charAt(0)&&(x=function(t,e,r,n,i){var a=s.findExactDates(e,i);if(a.exactDays>.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=M.tickIncrement(t,\"M6\",\"reverse\")+1.5*m:a.exactMonths>.8?t=M.tickIncrement(t,\"M1\",\"reverse\")+15.5*m:t-=m/2;var l=M.tickIncrement(t,r);if(l<=n)return l}return t}(x,t,y,c,a)),v=x,0;v<=u;)v=M.tickIncrement(v,y,!1,a),0;return{start:e.c2r(x,0,a),end:e.c2r(v,0,a),size:y,_dataSpan:u-c}},M.prepTicks=function(t){var e=s.simpleMap(t.range,t.r2l);if(\"auto\"===t.tickmode||!t.dtick){var r,n=t.nticks;n||(\"category\"===t.type||\"multicategory\"===t.type?(r=t.tickfont?1.2*(t.tickfont.size||12):15,n=t._length/r):(r=\"y\"===t._id.charAt(0)?40:80,n=s.constrain(t._length/r,4,9)+1),\"radialaxis\"===t._name&&(n*=2)),\"array\"===t.tickmode&&(n*=100),M.autoTicks(t,Math.abs(e[1]-e[0])/n),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}t.tick0||(t.tick0=\"date\"===t.type?\"2000-01-01\":0),\"date\"===t.type&&t.dtick<.1&&(t.dtick=.1),j(t)},M.calcTicks=function(t){M.prepTicks(t);var e=s.simpleMap(t.range,t.r2l);if(\"array\"===t.tickmode)return function(t){var e=t.tickvals,r=t.ticktext,n=new Array(e.length),i=s.simpleMap(t.range,t.r2l),a=1.0001*i[0]-1e-4*i[1],o=1.0001*i[1]-1e-4*i[0],l=Math.min(a,o),c=Math.max(a,o),u=0;Array.isArray(r)||(r=[]);var f=\"category\"===t.type?t.d2l_noadd:t.d2l;\"log\"===t.type&&\"L\"!==String(t.dtick).charAt(0)&&(t.dtick=\"L\"+Math.pow(10,Math.floor(Math.min(t.range[0],t.range[1]))-1));for(var h=0;h<e.length;h++){var p=f(e[h]);p>l&&p<c&&(void 0===r[h]?n[u]=M.tickText(t,p):n[u]=V(t,p,String(r[h])),u++)}u<e.length&&n.splice(u,e.length-u);return n}(t);t._tmin=M.tickFirst(t);var r=1.0001*e[0]-1e-4*e[1],n=1.0001*e[1]-1e-4*e[0],i=e[1]<e[0];if(t._tmin<r!==i)return[];var a=[];\"category\"!==t.type&&\"multicategory\"!==t.type||(n=i?Math.max(-.5,n):Math.min(t._categories.length-.5,n));for(var o=null,l=Math.max(1e3,t._length||0),c=t._tmin;(i?c>=n:c<=n)&&!(a.length>l||c===o);c=M.tickIncrement(c,t.dtick,i,t.calendar))o=c,a.push(c);et(t)&&360===Math.abs(e[1]-e[0])&&a.pop(),t._tmax=a[a.length-1],t._prevDateHead=\"\",t._inCalcTicks=!0;for(var u=new Array(a.length),f=0;f<a.length;f++)u[f]=M.tickText(t,a[f]);return t._inCalcTicks=!1,u};var O=[2,5,10],I=[1,2,3,6,12],D=[1,2,5,10,15,30],P=[1,2,3,7,14],R=[-.046,0,.301,.477,.602,.699,.778,.845,.903,.954,1],F=[-.301,0,.301,.699,1],B=[15,30,45,90,180];function N(t,e,r){return e*s.roundUp(t/e,r)}function j(t){var e=t.dtick;if(t._tickexponent=0,i(e)||\"string\"==typeof e||(e=1),\"category\"!==t.type&&\"multicategory\"!==t.type||(t._tickround=null),\"date\"===t.type){var r=t.r2l(t.tick0),n=t.l2r(r).replace(/(^-|i)/g,\"\"),a=n.length;if(\"M\"===String(e).charAt(0))a>10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=m&&a<=10||e>=15*m)t._tickround=\"d\";else if(e>=x&&a<=16||e>=y)t._tickround=\"M\";else if(e>=b&&a<=19||e>=x)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01);Math.abs(c)>3&&(q(t.exponentformat)&&!H(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function V(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}M.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar);var a=2*e;a>g?(e/=g,r=n(10),t.dtick=\"M\"+12*N(e,r,O)):a>v?(e/=v,t.dtick=\"M\"+N(e,1,I)):a>m?(t.dtick=N(e,m,P),t.tick0=s.dateTick0(t.calendar,!0)):a>y?t.dtick=N(e,y,I):a>x?t.dtick=N(e,x,D):a>b?t.dtick=N(e,b,D):(r=n(10),t.dtick=N(e,r,O))}else if(\"log\"===t.type){t.tick0=0;var o=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(o[1]-o[0])<1){var l=1.5*Math.abs((o[1]-o[0])/e);e=Math.abs(Math.pow(10,o[1])-Math.pow(10,o[0]))/l,r=n(10),t.dtick=\"L\"+N(e,r,O)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):et(t)?(t.tick0=0,r=1,t.dtick=N(e,r,B)):(t.tick0=0,r=n(10),t.dtick=N(e,r,O));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var c=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(c)}},M.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return t+o*e;var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?F:R,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},M.tickFirst=function(t){var e=t.r2l||Number,r=s.simpleMap(t.range,e),a=r[1]<r[0],o=a?Math.floor:Math.ceil,l=1.0001*r[0]-1e-4*r[1],c=t.dtick,u=e(t.tick0);if(i(c)){var f=o((l-u)/c)*c+u;return\"category\"!==t.type&&\"multicategory\"!==t.type||(f=s.constrain(f,0,t._categories.length-1)),f}var h=c.charAt(0),p=Number(c.substr(1));if(\"M\"===h){for(var d,g,v,m=0,y=u;m<10;){if(((d=M.tickIncrement(y,c,a,t.calendar))-l)*(y-l)<=0)return a?Math.min(y,d):Math.max(y,d);g=(l-(y+d)/2)/(d-y),v=h+(Math.abs(Math.round(g))||1)*p,y=M.tickIncrement(y,v,g<0?!a:a,t.calendar),m++}return s.error(\"tickFirst did not converge\",t),y}if(\"L\"===h)return Math.log(o((Math.pow(10,l)-u)/p)*p+u)/Math.LN10;if(\"D\"===h){var x=\"D2\"===c?F:R,b=s.roundUp(s.mod(l,1),x,a);return Math.floor(l)+Math.log(n.round(Math.pow(10,b),1))/Math.LN10}throw\"unrecognized dtick \"+String(c)},M.tickText=function(t,e,r){var n,a=V(t,e),o=\"array\"===t.tickmode,l=r||o,c=t.type,u=\"category\"===c?t.d2l_noadd:t.d2l;if(o&&Array.isArray(t.ticktext)){var f=s.simpleMap(t.range,t.r2l),h=Math.abs(f[1]-f[0])/1e4;for(n=0;n<t.ticktext.length&&!(Math.abs(e-u(t.tickvals[n]))<h);n++);if(n<t.ticktext.length)return a.text=String(t.ticktext[n]),a}function p(n){if(void 0===n)return!0;if(r)return\"none\"===n;var i={first:t._tmin,last:t._tmax}[n];return\"all\"!==n&&e!==i}var d=r?\"never\":\"none\"!==t.exponentformat&&p(t.showexponent)?\"hide\":\"\";if(\"date\"===c?function(t,e,r,n){var a=t._tickround,o=r&&t.hoverformat||M.getTickFormat(t);n&&(a=i(a)?4:{y:\"m\",m:\"d\",d:\"M\",M:\"S\",S:4}[a]);var l,c=s.formatDate(e.x,o,a,t._dateFormat,t.calendar,t._extraFormat),u=c.indexOf(\"\\n\");-1!==u&&(l=c.substr(u+1),c=c.substr(0,u));n&&(\"00:00:00\"===c||\"00:00\"===c?(c=l,l=\"\"):8===c.length&&(c=c.replace(/:00$/,\"\")));l&&(r?\"d\"===a?c+=\", \"+l:c=l+(c?\", \"+c:\"\"):t._inCalcTicks&&l===t._prevDateHead||(c+=\"<br>\"+l,t._prevDateHead=l));e.text=c}(t,a,r,l):\"log\"===c?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=G(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||q(p)&&H(f)?(e.text=0===f?1:1===f?\"10\":\"10<sup>\"+(f>1?\"\":_)+h+\"</sup>\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":_)+h:(e.text=G(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,a,0,l,d):\"category\"===c?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,a):\"multicategory\"===c?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,a,r):et(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=G(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){var r=1;for(;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=G(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"<sup>\",o[0],\"</sup>\",\"\\u2044\",\"<sub>\",o[1],\"</sub>\",\"\\u03c0\"].join(\"\"),l&&(e.text=_+e.text)}}}}(t,a,r,l,d):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=G(e.x,t,i,n)}(t,a,0,l,d),t.tickprefix&&!p(t.showtickprefix)&&(a.text=t.tickprefix+a.text),t.ticksuffix&&!p(t.showticksuffix)&&(a.text+=t.ticksuffix),\"boundaries\"===t.tickson||t.showdividers){var g=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};a.xbnd=[g(a.x-.5),g(a.x+t.dtick-.5)]}return a},M.hoverLabelText=function(t,e,r){if(r!==w&&r!==e)return M.hoverLabelText(t,e)+\" - \"+M.hoverLabelText(t,r);var n=\"log\"===t.type&&e<=0,i=M.tickText(t,t.c2l(n?-e:e),\"hover\").text;return n?0===e?\"0\":_+i:i};var U=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function q(t){return\"SI\"===t||\"B\"===t}function H(t){return t>14||t<-15}function G(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=M.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};j(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,_);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))<d)t=\"0\",a=!1;else{if(t+=d,c&&(t*=Math.pow(10,-c),o+=c),0===o)t=String(Math.floor(t));else if(o<0){t=(t=String(Math.round(t))).substr(0,t.length+o);for(var g=o;g<0;g++)t+=\"0\"}else{var v=(t=String(t)).indexOf(\".\")+1;v&&(t=t.substr(0,v+o).replace(/\\.?0+$/,\"\"))}t=s.numSeparate(t,e._separators,f)}c&&\"hide\"!==l&&(q(l)&&H(c)&&(l=\"power\"),p=c<0?_+-c:\"power\"!==l?\"+\"+c:String(c),\"e\"===l||\"E\"===l?t+=l+p:\"power\"===l?t+=\"\\xd710<sup>\"+p+\"</sup>\":\"B\"===l&&9===c?t+=\"B\":q(l)&&(t+=U[c/3+5]));return a?_+t:t}function W(t,e){var r=t._id.charAt(0),n=t._tickAngles[e]||0,i=s.deg2rad(n),a=Math.sin(i),o=Math.cos(i),l=0,c=0;return t._selections[e].each(function(){var t=Z(this),e=f.bBox(t.node()),r=e.width,n=e.height;l=Math.max(l,o*r,a*n),c=Math.max(c,a*r,o*n)}),{x:c,y:l}[r]}function Y(t){return[t.text,t.x,t.axInfo,t.font,t.fontSize,t.fontColor].join(\"_\")}function X(t,e){var r=t.l2p(e);return r>1&&r<t._length-1}function Z(t){var e=n.select(t),r=e.select(\".text-math-group\");return r.empty()?e.select(\"text\"):r}function $(t){return t._id+\".automargin\"}function J(t){return t._id+\".rangeslider\"}function K(t,e){for(var r=0;r<e.length;r++)-1===t.indexOf(e[r])&&t.push(e[r])}function Q(t,e,r){var n,i,a=[],o=[],l=t.layout;for(n=0;n<e.length;n++)a.push(M.getFromId(t,e[n]));for(n=0;n<r.length;n++)o.push(M.getFromId(t,r[n]));var c=Object.keys(h),u=[\"anchor\",\"domain\",\"overlaying\",\"position\",\"side\",\"tickangle\",\"editType\"],f=[\"linear\",\"log\"];for(n=0;n<c.length;n++){var p=c[n],d=a[0][p],g=o[0][p],v=!0,m=!1,y=!1;if(\"_\"!==p.charAt(0)&&\"function\"!=typeof d&&-1===u.indexOf(p)){for(i=1;i<a.length&&v;i++){var x=a[i][p];\"type\"===p&&-1!==f.indexOf(d)&&-1!==f.indexOf(x)&&d!==x?m=!0:x!==d&&(v=!1)}for(i=1;i<o.length&&v;i++){var b=o[i][p];\"type\"===p&&-1!==f.indexOf(g)&&-1!==f.indexOf(b)&&g!==b?y=!0:o[i][p]!==g&&(v=!1)}v&&(m&&(l[a[0]._name].type=\"linear\"),y&&(l[o[0]._name].type=\"linear\"),tt(l,p,a,o,t._fullLayout._dfltTitle))}}for(n=0;n<t._fullLayout.annotations.length;n++){var _=t._fullLayout.annotations[n];-1!==e.indexOf(_.xref)&&-1!==r.indexOf(_.yref)&&s.swapAttrs(l.annotations[n],[\"?\"])}}function tt(t,e,r,n,i){var a,o=s.nestedProperty,l=o(t[r[0]._name],e).get(),c=o(t[n[0]._name],e).get();for(\"title\"===e&&(l&&l.text===i.x&&(l.text=i.y),c&&c.text===i.y&&(c.text=i.x)),a=0;a<r.length;a++)o(t,r[a]._name+\".\"+e).set(c);for(a=0;a<n.length;a++)o(t,n[a]._name+\".\"+e).set(l)}function et(t){return\"angularaxis\"===t._id}M.getTickFormat=function(t){var e,r,n,i,a,o,s,l;function c(t){return\"string\"!=typeof t?t:Number(t.replace(\"M\",\"\"))*v}function u(t,e){var r=[\"L\",\"D\"];if(typeof t==typeof e){if(\"number\"==typeof t)return t-e;var n=r.indexOf(t.charAt(0)),i=r.indexOf(e.charAt(0));return n===i?Number(t.replace(/(L|D)/g,\"\"))-Number(e.replace(/(L|D)/g,\"\")):n-i}return\"number\"==typeof t?1:-1}function f(t,e){var r=null===e[0],n=null===e[1],i=u(t,e[0])>=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e<t.tickformatstops.length;e++)if((n=t.tickformatstops[e]).enabled&&(i=t.dtick,a=n.dtickrange,o=void 0,void 0,void 0,o=c||function(t){return t},s=a[0],l=a[1],(!s&&\"number\"!=typeof s||o(s)<=o(i))&&(!l&&\"number\"!=typeof l||o(l)>=o(i)))){r=n;break}break;case\"log\":for(e=0;e<t.tickformatstops.length;e++)if((n=t.tickformatstops[e]).enabled&&f(t.dtick,n.dtickrange)){r=n;break}}return r?r.value:t.tickformat},M.getSubplots=function(t,e){var r=t._fullLayout._subplots,n=r.cartesian.concat(r.gl2d||[]),i=e?M.findSubplotsWithAxis(n,e):n;return i.sort(function(t,e){var r=t.substr(1).split(\"y\"),n=e.substr(1).split(\"y\");return r[0]===n[0]?+r[1]-+n[1]:+r[0]-+n[0]}),i},M.findSubplotsWithAxis=function(t,e){for(var r=new RegExp(\"x\"===e._id.charAt(0)?\"^\"+e._id+\"y\":e._id+\"$\"),n=[],i=0;i<t.length;i++){var a=t[i];r.test(a)&&n.push(a)}return n},M.makeClipPaths=function(t){var e=t._fullLayout;if(!e._hasOnlyLargeSploms){var r,i,a={_offset:0,_length:e.width,_id:\"\"},o={_offset:0,_length:e.height,_id:\"\"},s=M.list(t,\"x\",!0),l=M.list(t,\"y\",!0),c=[];for(r=0;r<s.length;r++)for(c.push({x:s[r],y:o}),i=0;i<l.length;i++)0===r&&c.push({x:a,y:l[i]}),c.push({x:s[r],y:l[i]});var u=e._clips.selectAll(\".axesclip\").data(c,function(t){return t.x._id+t.y._id});u.enter().append(\"clipPath\").classed(\"axesclip\",!0).attr(\"id\",function(t){return\"clip\"+e._uid+t.x._id+t.y._id}).append(\"rect\"),u.exit().remove(),u.each(function(t){n.select(this).select(\"rect\").attr({x:t.x._offset||0,y:t.y._offset||0,width:t.x._length||1,height:t.y._length||1})})}},M.draw=function(t,e,r){var n=t._fullLayout;\"redraw\"===e&&n._paper.selectAll(\"g.subplot\").each(function(t){var e=t[0],r=n._plots[e],i=r.xaxis,a=r.yaxis;r.xaxislayer.selectAll(\".\"+i._id+\"tick\").remove(),r.yaxislayer.selectAll(\".\"+a._id+\"tick\").remove(),r.xaxislayer.selectAll(\".\"+i._id+\"tick2\").remove(),r.yaxislayer.selectAll(\".\"+a._id+\"tick2\").remove(),r.xaxislayer.selectAll(\".\"+i._id+\"divider\").remove(),r.yaxislayer.selectAll(\".\"+a._id+\"divider\").remove(),r.gridlayer&&r.gridlayer.selectAll(\"path\").remove(),r.zerolinelayer&&r.zerolinelayer.selectAll(\"path\").remove(),n._infolayer.select(\".g-\"+i._id+\"title\").remove(),n._infolayer.select(\".g-\"+a._id+\"title\").remove()});var i=e&&\"redraw\"!==e?e:M.listIds(t);return s.syncOrAsync(i.map(function(e){return function(){if(e){var n=M.getFromId(t,e),i=M.drawOne(t,n,r);return n._r=n.range.slice(),n._rl=s.simpleMap(n._r,n.r2l),i}}}))},M.drawOne=function(t,e,r){var n,i,l;r=r||{},e.setScale();var h=t._fullLayout,p=e._id,d=p.charAt(0),g=M.counterLetter(p),v=e._mainSubplot,m=e._mainLinePosition,y=e._mainMirrorPosition,x=h._plots[v],b=x[d+\"axislayer\"],_=e._subplotsWith,w=e._vals=M.calcTicks(e),k=[e.mirror,m,y].join(\"_\");for(n=0;n<w.length;n++)w[n].axInfo=k;if(e.visible){e._selections={},e._tickAngles={};var T,C,E=M.makeTransFn(e);if(\"boundaries\"===e.tickson){var L=function(t,e){var r,n=[],i=function(t,e){var r=t.xbnd[e];null!==r&&n.push(s.extendFlat({},t,{x:r}))};if(e.length){for(r=0;r<e.length;r++)i(e[r],0);i(e[r-1],1)}return n}(0,w);C=M.clipEnds(e,L),T=\"inside\"===e.ticks?C:L}else C=M.clipEnds(e,w),T=\"inside\"===e.ticks?C:w;var z=e._gridVals=C,O=function(t,e){var r,n,i=[],a=function(t,e){var r=t.xbnd[e];null!==r&&i.push(s.extendFlat({},t,{x:r}))};if(t.showdividers&&e.length){for(r=0;r<e.length;r++){var o=e[r];o.text2!==n&&a(o,0),n=o.text2}a(e[r-1],1)}return i}(e,w);if(!h._hasOnlyLargeSploms){var I={};for(n=0;n<_.length;n++){i=_[n];var D=(l=h._plots[i])[g+\"axis\"],P=D._mainAxis._id;if(!I[P]){I[P]=1;var R=\"x\"===d?\"M0,\"+D._offset+\"v\"+D._length:\"M\"+D._offset+\",0h\"+D._length;M.drawGrid(t,e,{vals:z,counterAxis:D,layer:l.gridlayer.select(\".\"+p),path:R,transFn:E}),M.drawZeroLine(t,e,{counterAxis:D,layer:l.zerolinelayer,path:R,transFn:E})}}}var F=M.getTickSigns(e),B=[];if(e.ticks){var N,j,U,q=M.makeTickPath(e,m,F[2]);if(e._anchorAxis&&e.mirror&&!0!==e.mirror?(N=M.makeTickPath(e,y,F[3]),j=q+N):(N=\"\",j=q),e.showdividers&&\"outside\"===e.ticks&&\"boundaries\"===e.tickson){var H={};for(n=0;n<O.length;n++)H[O[n].x]=1;U=function(t){return H[t.x]?N:j}}else U=j;M.drawTicks(t,e,{vals:T,layer:b,path:U,transFn:E}),B=Object.keys(e._linepositions||{})}for(n=0;n<B.length;n++){i=B[n],l=h._plots[i];var G=e._linepositions[i]||[],X=M.makeTickPath(e,G[0],F[0])+M.makeTickPath(e,G[1],F[1]);M.drawTicks(t,e,{vals:T,layer:l[d+\"axislayer\"],path:X,transFn:E})}var Z=[];if(Z.push(function(){var r=M.makeLabelFns(e,m);return M.drawLabels(t,e,{vals:w,layer:b,transFn:E,labelXFn:r.labelXFn,labelYFn:r.labelYFn,labelAnchorFn:r.labelAnchorFn})}),\"multicategory\"===e.type){var K=0,Q={x:2,y:10}[d],tt=F[2]*(\"inside\"===e.ticks?-1:1);Z.push(function(){K+=W(e,p+\"tick\")+Q,K+=e._tickAngles[p+\"tick\"]?e.tickfont.size*A:0;var r=m+K*tt,n=M.makeLabelFns(e,r);return M.drawLabels(t,e,{vals:function(t,e){for(var r=[],n={},i=0;i<e.length;i++){var a=e[i];n[a.text2]?n[a.text2].push(a.x):n[a.text2]=[a.x]}for(var o in n)r.push(V(t,s.interp(n[o],.5),o));return r}(e,w),layer:b,cls:p+\"tick2\",repositionOnUpdate:!0,secondary:!0,transFn:E,labelXFn:n.labelXFn,labelYFn:n.labelYFn,labelAnchorFn:n.labelAnchorFn})}),Z.push(function(){return K+=W(e,p+\"tick2\"),e._labelLength=K,function(t,e,r){var n=e._id+\"divider\",i=r.vals,a=r.layer.selectAll(\"path.\"+n).data(i,Y);a.exit().remove(),a.enter().insert(\"path\",\":first-child\").classed(n,1).classed(\"crisp\",1).call(u.stroke,e.dividercolor).style(\"stroke-width\",f.crispRound(t,e.dividerwidth,1)+\"px\"),a.attr(\"transform\",r.transFn).attr(\"d\",r.path)}(t,e,{vals:O,layer:b,path:M.makeTickPath(e,m,tt,K),transFn:E})})}var et=o.getComponentMethod(\"rangeslider\",\"isVisible\")(e);return Z.push(function(){if(e.showticklabels){var r=t.getBoundingClientRect(),n=b.node().getBoundingClientRect();e._boundingBox={width:n.width,height:n.height,left:n.left-r.left,right:n.right-r.left,top:n.top-r.top,bottom:n.bottom-r.top}}else{var i,a=h._size;\"x\"===d?(i=\"free\"===e.anchor?a.t+a.h*(1-e.position):a.t+a.h*(1-e._anchorAxis.domain[{bottom:0,top:1}[e.side]]),e._boundingBox={top:i,bottom:i,left:e._offset,right:e._offset+e._length,width:e._length,height:0}):(i=\"free\"===e.anchor?a.l+a.w*e.position:a.l+a.w*e._anchorAxis.domain[{left:0,right:1}[e.side]],e._boundingBox={left:i,right:i,bottom:e._offset+e._length,top:e._offset,height:e._length,width:0})}if(_){for(var o=e._counterSpan=[1/0,-1/0],s=0;s<_.length;s++){var l=h._plots[_[s]][\"x\"===d?\"yaxis\":\"xaxis\"];rt(o,[l._offset,l._offset+l._length])}\"free\"===e.anchor&&rt(o,\"x\"===d?[e._boundingBox.bottom,e._boundingBox.top]:[e._boundingBox.right,e._boundingBox.left])}},function(){var r,n,i=e.side.charAt(0);if(et&&(n=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,J(e),n),e.automargin&&(!et||\"b\"!==i)){r={x:0,y:0,r:0,l:0,t:0,b:0};var s,l,c=e._boundingBox,u=x[g+\"axis\"];switch(d+i){case\"xb\":s=0,l=c.top-u._length-u._offset,r[i]=c.height;break;case\"xt\":s=1,l=u._offset-c.bottom,r[i]=c.height;break;case\"yl\":s=0,l=u._offset-c.right,r[i]=c.width;break;case\"yr\":s=1,l=c.left-u._length-u._offset,r[i]=c.width}r[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[s],r[i]>0&&(r[i]+=l),e.title.text!==h._dfltTitle[d]&&(r[i]+=e.title.font.size)}a.autoMargin(t,$(e),r)}),r.skipTitle||et&&e._boundingBox&&\"bottom\"===e.side||Z.push(function(){return function(t,e){var r,n,i,a,o,s,l=t._fullLayout,u=e._id,h=u.charAt(0),p=l._size,d=e.title.font.size;if(\"multicategory\"===e.type)r=e._labelLength;else{r=10+1.5*d+(e.linewidth?e.linewidth-1:0)}\"x\"===h?(i=\"free\"===e.anchor?{_offset:p.t+(1-(e.position||0))*p.h,_length:0}:S.getFromId(t,e.anchor),a=e._offset+e._length/2,o=\"top\"===e.side?-r-d*(e.showticklabels?1:0):i._length+r+d*(e.showticklabels?1.5:.5),o+=i._offset):(i=\"free\"===e.anchor?{_offset:p.l+(e.position||0)*p.w,_length:0}:S.getFromId(t,e.anchor),o=e._offset+e._length/2,a=\"right\"===e.side?i._length+r+d*(e.showticklabels?1:.5):-r-d*(e.showticklabels?.5:0),a+=i._offset,n={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var g=e._selections[e._id+\"tick\"];if(s={selection:g,side:e.side},g&&g.node()&&g.node().parentNode){var v=f.getTranslate(g.node().parentNode);s.offsetLeft=v.x,s.offsetTop=v.y}}return c.draw(t,u+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:l._dfltTitle[h],avoid:s,transform:n,attributes:{x:a,y:o,\"text-anchor\":\"middle\"}})}(t,e)}),s.syncOrAsync(Z)}function rt(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.max(t[1],e[1])}},M.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map(function(t){return-t})),i},M.makeTransFn=function(t){var e=t._id.charAt(0),r=t._offset;return\"x\"===e?function(e){return\"translate(\"+(r+t.l2p(e.x))+\",0)\"}:function(e){return\"translate(0,\"+(r+t.l2p(e.x))+\")\"}},M.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},M.makeLabelFns=function(t,e,r){var n=t._id.charAt(0),a=(t.linewidth||1)/2,o=\"boundaries\"!==t.tickson&&\"outside\"===t.ticks,l=o?t.ticklen:0,c=0;if(r&&\"outside\"===t.ticks){var u=s.deg2rad(r);l=t.ticklen*Math.cos(u)+1,c=t.ticklen*Math.sin(u)}t.showticklabels&&(o||t.showline)&&(l+=.2*t.tickfont.size);var f,h,p,d,g={labelStandoff:l,labelShift:c};return\"x\"===n?(d=\"bottom\"===t.side?1:-1,f=c*d,h=e+(l+a)*d,p=\"bottom\"===t.side?1:-.2,g.labelXFn=function(t){return t.dx+f},g.labelYFn=function(t){return t.dy+h+t.fontSize*p},g.labelAnchorFn=function(t){return i(t)&&0!==t&&180!==t?t*d<0?\"end\":\"start\":\"middle\"}):\"y\"===n&&(d=\"right\"===t.side?1:-1,f=l+a,h=-c*d,p=90===Math.abs(t.tickangle)?.5:0,g.labelXFn=function(t){return t.dx+e+(f+t.fontSize*p)*d},g.labelYFn=function(t){return t.dy+h+t.fontSize*k},g.labelAnchorFn=function(e){return i(e)&&90===Math.abs(e)?\"middle\":\"right\"===t.side?\"start\":\"end\"}),g},M.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.layer.selectAll(\"path.\"+n).data(e.ticks?r.vals:[],Y);i.exit().remove(),i.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(u.stroke,e.tickcolor).style(\"stroke-width\",f.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path),i.attr(\"transform\",r.transFn)},M.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&M.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;s<i.length;s++){var l=i[s].x;if(o?!l:Math.abs(l)<e.dtick/100){if(i=i.slice(0,s).concat(i.slice(s+1)),!o)break;s--}}var c=r.layer.selectAll(\"path.\"+n).data(i,Y);c.exit().remove(),c.enter().append(\"path\").classed(n,1).classed(\"crisp\",!1!==r.crisp),e._gw=f.crispRound(t,e.gridwidth,1),c.attr(\"transform\",r.transFn).attr(\"d\",r.path).call(u.stroke,e.gridcolor||\"#ddd\").style(\"stroke-width\",e._gw+\"px\"),\"function\"==typeof r.path&&c.attr(\"d\",r.path)},M.drawZeroLine=function(t,e,r){r=r||r;var n=e._id+\"zl\",i=M.shouldShowZeroLine(t,e,r.counterAxis),a=r.layer.selectAll(\"path.\"+n).data(i?[{x:0,id:e._id}]:[]);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"zl\",1).classed(\"crisp\",!1!==r.crisp).each(function(){r.layer.selectAll(\"path\").sort(function(t,e){return S.idSort(t.id,e.id)})}),a.attr(\"transform\",r.transFn).attr(\"d\",r.path).call(u.stroke,e.zerolinecolor||u.defaultLine).style(\"stroke-width\",f.crispRound(t,e.zerolinewidth,e._gw||1)+\"px\")},M.drawLabels=function(t,e,r){r=r||{};var a=e._id,o=a.charAt(0),c=r.cls||a+\"tick\",u=r.vals,h=r.labelXFn,p=r.labelYFn,d=r.labelAnchorFn,g=r.secondary?0:e.tickangle,v=(e._tickAngles||{})[c],m=r.layer.selectAll(\"g.\"+c).data(e.showticklabels?u:[],Y),y=[];function x(t,a){t.each(function(t){var s=n.select(this),c=s.select(\".text-math-group\"),u=d(a,t),g=r.transFn.call(s.node(),t)+(i(a)&&0!=+a?\" rotate(\"+a+\",\"+h(t)+\",\"+(p(t)-t.fontSize/2)+\")\":\"\"),v=function(t,r,n){var i=(t-1)*r;if(\"x\"===o){if(n<-60||60<n)return-.5*i;if(\"top\"===e.side)return-i}else{if((n*=\"left\"===e.side?1:-1)<-30)return-i;if(n<30)return-.5*i}return 0}(l.lineCount(s),A*t.fontSize,i(a)?+a:0);if(v&&(g+=\" translate(0, \"+v+\")\"),c.empty())s.select(\"text\").attr({transform:g,\"text-anchor\":u});else{var m=f.bBox(c.node()).width*{end:-.5,start:.5}[u];c.attr(\"transform\",g+(m?\"translate(\"+m+\",0)\":\"\"))}})}m.enter().append(\"g\").classed(c,1).append(\"text\").attr(\"text-anchor\",\"middle\").each(function(e){var r=n.select(this),i=t._promises.length;r.call(l.positionText,h(e),p(e)).call(f.font,e.font,e.fontSize,e.fontColor).text(e.text).call(l.convertToTspans,t),t._promises[i]?y.push(t._promises.pop().then(function(){x(r,g)})):x(r,g)}),m.exit().remove(),r.repositionOnUpdate&&m.each(function(t){n.select(this).select(\"text\").call(l.positionText,h(t),p(t))}),x(m,v||g),e._selections&&(e._selections[c]=m);var b=s.syncOrAsync([function(){return y.length&&Promise.all(y)},function(){x(m,g);var t=null;if(u.length&&\"x\"===o&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){t=0;var n,a=0,l=[];if(m.each(function(t){a=Math.max(a,t.fontSize);var r=e.l2p(t.x),n=Z(this),i=f.bBox(n.node());l.push({top:0,bottom:10,height:10,left:r-i.width/2,right:r+i.width/2+2,width:i.width+2})}),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var h=u.length,p=Math.abs((u[h-1].x-u[0].x)*e._m)/(h-1)<2.5*a||\"multicategory\"===e.type;for(n=0;n<l.length-1;n++)if(s.bBoxIntersect(l[n],l[n+1])){t=p?90:30;break}}else{var d=2;for(e.ticks&&(d+=e.tickwidth/2),n=0;n<l.length;n++){var v=u[n].xbnd,y=l[n];if(null!==v[0]&&y.left-e.l2p(v[0])<d||null!==v[1]&&e.l2p(v[1])-y.right<d){t=90;break}}}t&&x(m,t)}e._tickAngles&&(e._tickAngles[c]=null===t?i(g)?g:0:t)}]);return b&&b.then&&t._promises.push(b),b},M.shouldShowZeroLine=function(t,e,r){var n=s.simpleMap(e.range,e.r2l);return n[0]*n[1]<=0&&e.zeroline&&(\"linear\"===e.type||\"-\"===e.type)&&e._gridVals.length&&(X(e,0)||!function(t,e,r,n){var i=r._mainAxis;if(!i)return;var a=t._fullLayout,o=e._id.charAt(0),s=M.counterLetter(e._id),l=e._offset+(Math.abs(n[0])<Math.abs(n[1])==(\"x\"===o)?0:e._length);function c(t){if(!t.showline||!t.linewidth)return!1;var r=Math.max((t.linewidth+e.zerolinewidth)/2,1);function n(t){return\"number\"==typeof t&&Math.abs(t-l)<r}if(n(t._mainLinePosition)||n(t._mainMirrorPosition))return!0;var i=t._linepositions||{};for(var a in i)if(n(i[a][0])||n(i[a][1]))return!0}var u=a._plots[r._mainSubplot];if(!(u.mainplotinfo||u).overlays.length)return c(r);for(var f=M.list(t,s),h=0;h<f.length;h++){var p=f[h];if(p._mainAxis===i&&c(p))return!0}}(t,e,r,n)||function(t,e){for(var r=t._fullData,n=e._mainSubplot,i=e._id.charAt(0),a=0;a<r.length;a++){var s=r[a];if(!0===s.visible&&s.xaxis+s.yaxis===n&&(o.traceIs(s,\"bar\")&&s.orientation==={x:\"h\",y:\"v\"}[i]||s.fill&&s.fill.charAt(s.fill.length-1)===i))return!0}return!1}(t,e))},M.clipEnds=function(t,e){return e.filter(function(e){return X(t,e.x)})},M.allowAutoMargin=function(t){for(var e=M.list(t,\"\",!0),r=0;r<e.length;r++){var n=e[r];n.automargin&&a.allowAutoMargin(t,$(n)),o.getComponentMethod(\"rangeslider\",\"isVisible\")(n)&&a.allowAutoMargin(t,J(n))}},M.swap=function(t,e){for(var r=function(t,e){var r,n,i=[];for(r=0;r<e.length;r++){var a=[],o=t._fullData[e[r]].xaxis,s=t._fullData[e[r]].yaxis;if(o&&s){for(n=0;n<i.length;n++)-1===i[n].x.indexOf(o)&&-1===i[n].y.indexOf(s)||a.push(n);if(a.length){var l,c=i[a[0]];if(a.length>1)for(n=1;n<a.length;n++)l=i[a[n]],K(c.x,l.x),K(c.y,l.y);K(c.x,[o]),K(c.y,[s])}else i.push({x:[o],y:[s]})}}return i}(t,e),n=0;n<r.length;n++)Q(t,r[n].x,r[n].y)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../components/titles\":659,\"../../constants/alignment\":666,\"../../constants/numerical\":671,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plots/plots\":806,\"../../registry\":825,\"./autorange\":741,\"./axis_autotype\":743,\"./axis_ids\":745,\"./clean_ticks\":747,\"./layout_attributes\":755,\"./set_convert\":761,d3:149,\"fast-isnumeric\":215}],743:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){return!(r=r||{}).noMultiCategory&&(o=t,i.isArrayOrTypedArray(o[0])&&i.isArrayOrTypedArray(o[1]))?\"multicategory\":function(t,e){for(var r=Math.max(1,(t.length-1)/1e3),a=0,o=0,s={},l=0;l<t.length;l+=r){var c=t[Math.round(l)],u=String(c);s[u]||(s[u]=1,i.isDateTime(c,e)&&(a+=1),n(c)&&(o+=1))}return a>2*o}(t,e)?\"date\":function(t){for(var e=Math.max(1,(t.length-1)/1e3),r=0,n=0,o={},s=0;s<t.length;s+=e){var l=t[Math.round(s)],c=String(l);o[c]||(o[c]=1,\"boolean\"==typeof l?n++:i.cleanNumber(l)!==a?r++:\"string\"==typeof l&&n++)}return n>2*r}(t)?\"category\":function(t){if(!t)return!1;for(var e=0;e<t.length;e++)if(n(t[e]))return!0;return!1}(t)?\"linear\":\"-\";var o}},{\"../../constants/numerical\":671,\"../../lib\":694,\"fast-isnumeric\":215}],744:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"./layout_attributes\"),o=t(\"./tick_value_defaults\"),s=t(\"./tick_mark_defaults\"),l=t(\"./tick_label_defaults\"),c=t(\"./category_order_defaults\"),u=t(\"./line_grid_defaults\"),f=t(\"./set_convert\");e.exports=function(t,e,r,h,p){var d=h.letter,g=h.font||{},v=h.splomStash||{},m=r(\"visible\",!h.cheateronly),y=e.type;\"date\"===y&&n.getComponentMethod(\"calendars\",\"handleDefaults\")(t,e,\"calendar\",h.calendar);if(f(e,p),!r(\"autorange\",!e.isValidRange(t.range))||\"linear\"!==y&&\"-\"!==y||r(\"rangemode\"),r(\"range\"),e.cleanRange(),c(t,e,r,h),\"category\"===y||h.noHover||r(\"hoverformat\"),!m)return e;var x=r(\"color\"),b=x!==a.color.dflt?x:g.color;r(\"title.text\",v.label||p._dfltTitle[d]),i.coerceFont(r,\"title.font\",{family:g.family,size:Math.round(1.2*g.size),color:b}),o(t,e,r,y),l(t,e,r,y,h),s(t,e,r,h),u(t,e,r,{dfltColor:x,bgColor:h.bgColor,showGrid:h.showGrid,attributes:a}),(e.showline||e.ticks)&&r(\"mirror\"),h.automargin&&r(\"automargin\");var _,w=\"multicategory\"===e.type;h.noTickson||\"category\"!==e.type&&!w||!e.ticks&&!e.showgrid||(w&&(_=\"boundaries\"),r(\"tickson\",_));w&&(r(\"showdividers\")&&(r(\"dividercolor\"),r(\"dividerwidth\")));return e}},{\"../../lib\":694,\"../../registry\":825,\"./category_order_defaults\":746,\"./layout_attributes\":755,\"./line_grid_defaults\":757,\"./set_convert\":761,\"./tick_label_defaults\":762,\"./tick_mark_defaults\":763,\"./tick_value_defaults\":764}],745:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./constants\");r.id2name=function(t){if(\"string\"==typeof t&&t.match(i.AX_ID_PATTERN)){var e=t.substr(1);return\"1\"===e&&(e=\"\"),t.charAt(0)+\"axis\"+e}},r.name2id=function(t){if(t.match(i.AX_NAME_PATTERN)){var e=t.substr(5);return\"1\"===e&&(e=\"\"),t.charAt(0)+e}},r.cleanId=function(t,e){if(t.match(i.AX_ID_PATTERN)&&(!e||t.charAt(0)===e)){var r=t.substr(1).replace(/^0+/,\"\");return\"1\"===r&&(r=\"\"),t.charAt(0)+r}},r.list=function(t,e,n){var i=t._fullLayout;if(!i)return[];var a,o=r.listIds(t,e),s=new Array(o.length);for(a=0;a<o.length;a++){var l=o[a];s[a]=i[l.charAt(0)+\"axis\"+l.substr(1)]}if(!n){var c=i._subplots.gl3d||[];for(a=0;a<c.length;a++){var u=i[c[a]];e?s.push(u[e+\"axis\"]):s.push(u.xaxis,u.yaxis,u.zaxis)}}return s},r.listIds=function(t,e){var r=t._fullLayout;if(!r)return[];var n=r._subplots;return e?n[e+\"axis\"]:n.xaxis.concat(n.yaxis)},r.getFromId=function(t,e,n){var i=t._fullLayout;return\"x\"===n?e=e.replace(/y[0-9]*/,\"\"):\"y\"===n&&(e=e.replace(/x[0-9]*/,\"\")),i[r.id2name(e)]},r.getFromTrace=function(t,e,i){var a=t._fullLayout,o=null;if(n.traceIs(e,\"gl3d\")){var s=e.scene;\"scene\"===s.substr(0,5)&&(o=a[s][i+\"axis\"])}else o=r.getFromId(t,e[i+\"axis\"]||i);return o},r.idSort=function(t,e){var r=t.charAt(0),n=e.charAt(0);return r!==n?r>n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)}},{\"../../registry\":825,\"./constants\":748}],746:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;n<e.data.length;n++){var s=e.data[n];s[a+\"axis\"]===t._id&&r.push(s)}for(n=0;n<r.length;n++){var l=r[n][a];for(i=0;i<l.length;i++){var c=l[i];null!=c&&(o[c]=1)}}return Object.keys(o)}(e,n).sort(),\"category ascending\"===l?e._initialCategories=s:\"category descending\"===l&&(e._initialCategories=s.reverse()))}}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").ONEDAY;r.dtick=function(t,e){var r=\"log\"===e,i=\"date\"===e,o=\"category\"===e,s=i?a:1;if(!t)return s;if(n(t))return(t=Number(t))<=0?s:o?Math.max(1,Math.round(t)):i?Math.max(.1,t):t;if(\"string\"!=typeof t||!i&&!r)return s;var l=t.charAt(0),c=t.substr(1);return(c=n(c)?Number(c):0)<=0||!(i&&\"M\"===l&&c===Math.round(c)||r&&\"L\"===l||r&&\"D\"===l&&(1===c||2===c))?s:t},r.tick0=function(t,e,r,a){return\"date\"===e?i.cleanDate(t,i.dateTick0(r)):\"D1\"!==a&&\"D2\"!==a?n(t)?Number(t):0:void 0}},{\"../../constants/numerical\":671,\"../../lib\":694,\"fast-isnumeric\":215}],748:[function(t,e,r){\"use strict\";var n=t(\"../../lib/regex\").counter;e.exports={idRegex:{x:n(\"x\"),y:n(\"y\")},attrRegex:n(\"[xy]axis\"),xAxisMatch:n(\"xaxis\"),yAxisMatch:n(\"yaxis\"),AX_ID_PATTERN:/^[xyz][0-9]*$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,MINDRAG:8,MINSELECT:12,MINZOOM:20,DRAGGERSIZE:20,BENDPX:1.5,REDRAWDELAY:50,SELECTDELAY:100,SELECTID:\"-select\",DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:[\"heatmaplayer\",\"contourcarpetlayer\",\"contourlayer\",\"barlayer\",\"carpetlayer\",\"violinlayer\",\"boxlayer\",\"ohlclayer\",\"scattercarpetlayer\",\"scatterlayer\"],layerValue2layerClass:{\"above traces\":\"above\",\"below traces\":\"below\"}}},{\"../../lib/regex\":710}],749:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./axis_ids\").id2name;e.exports=function(t,e,r,a,o){var s=o._axisConstraintGroups,l=e._id,c=l.charAt(0);if(!e.fixedrange&&(r(\"constrain\"),n.coerce(t,e,{constraintoward:{valType:\"enumerated\",values:\"x\"===c?[\"left\",\"center\",\"right\"]:[\"bottom\",\"middle\",\"top\"],dflt:\"x\"===c?\"center\":\"middle\"}},\"constraintoward\"),t.scaleanchor)){var u=function(t,e,r,n){var a,o,s,l,c=n[i(e)].type,u=[];for(o=0;o<r.length;o++)(s=r[o])!==e&&((l=n[i(s)]).type!==c||l.fixedrange||u.push(s));for(a=0;a<t.length;a++)if(t[a][e]){var f=t[a],h=[];for(o=0;o<u.length;o++)s=u[o],f[s]||h.push(s);return{linkableAxes:h,thisGroup:f}}return{linkableAxes:u,thisGroup:null}}(s,l,a,o),f=n.coerce(t,e,{scaleanchor:{valType:\"enumerated\",values:u.linkableAxes}},\"scaleanchor\");if(f){var h=r(\"scaleratio\");h||(h=e.scaleratio=1),function(t,e,r,n,i){var a,o,s,l,c;null===e?((e={})[r]=1,c=t.length,t.push(e)):c=t.indexOf(e);var u=Object.keys(e);for(a=0;a<t.length;a++)if(s=t[a],a!==c&&s[n]){var f=s[n];for(o=0;o<u.length;o++)l=u[o],s[l]=f*i*e[l];return void t.splice(c,1)}if(1!==i)for(o=0;o<u.length;o++)e[u[o]]*=i;e[n]=1}(s,u.thisGroup,l,f,h)}else-1!==a.indexOf(t.scaleanchor)&&n.warn(\"ignored \"+e._name+'.scaleanchor: \"'+t.scaleanchor+'\" to avoid either an infinite loop and possibly inconsistent scaleratios, or because the targetaxis has fixed range.')}}},{\"../../lib\":694,\"./axis_ids\":745}],750:[function(t,e,r){\"use strict\";var n=t(\"./axis_ids\").id2name,i=t(\"./scale_zoom\"),a=t(\"./autorange\").makePadFn,o=t(\"./autorange\").concatExtremes,s=t(\"../../constants/numerical\").ALMOST_EQUAL,l=t(\"../../constants/alignment\").FROM_BL;function c(t,e){var r=t._inputDomain,n=l[t.constraintoward],i=r[0]+(r[1]-r[0])*n;t.domain=t._input.domain=[i+(r[0]-i)/e,i+(r[1]-i)/e],t.setScale()}r.enforce=function(t){var e,r,l,u,f,h,p,d=t._fullLayout,g=d._axisConstraintGroups||[];for(e=0;e<g.length;e++){var v=g[e],m=Object.keys(v),y=1/0,x=0,b=1/0,_={},w={},k=!1;for(r=0;r<m.length;r++)w[l=m[r]]=u=d[n(l)],u._inputDomain?u.domain=u._inputDomain.slice():u._inputDomain=u.domain.slice(),u._inputRange||(u._inputRange=u.range.slice()),u.setScale(),_[l]=f=Math.abs(u._m)/v[l],y=Math.min(y,f),\"domain\"!==u.constrain&&u._constraintShrinkable||(b=Math.min(b,f)),delete u._constraintShrinkable,x=Math.max(x,f),\"domain\"===u.constrain&&(k=!0);if(!(y>s*x)||k)for(r=0;r<m.length;r++)if(f=_[l=m[r]],h=(u=w[l]).constrain,f!==b||\"domain\"===h)if(p=f/b,\"range\"===h)i(u,p);else{var A=u._inputDomain,M=(u.domain[1]-u.domain[0])/(A[1]-A[0]),T=(u.r2l(u.range[1])-u.r2l(u.range[0]))/(u.r2l(u._inputRange[1])-u.r2l(u._inputRange[0]));if((p/=M)*T<1){u.domain=u._input.domain=A.slice(),i(u,p);continue}if(T<1&&(u.range=u._input.range=u._inputRange.slice(),p*=T),u.autorange){var S=u.r2l(u.range[0]),C=u.r2l(u.range[1]),E=(S+C)/2,L=E,z=E,O=Math.abs(C-E),I=E-O*p*1.0001,D=E+O*p*1.0001,P=a(u);c(u,p);var R,F,B=Math.abs(u._m),N=o(t,u),j=N.min,V=N.max;for(F=0;F<j.length;F++)(R=j[F].val-P(j[F])/B)>I&&R<L&&(L=R);for(F=0;F<V.length;F++)(R=V[F].val+P(V[F])/B)<D&&R>z&&(z=R);p/=(z-L)/(2*O),L=u.l2r(L),z=u.l2r(z),u.range=u._input.range=S<C?[L,z]:[z,L]}c(u,p)}}},r.clean=function(t,e){if(e._inputDomain){for(var r=!1,n=e._id,i=t._fullLayout._axisConstraintGroups,a=0;a<i.length;a++)if(i[a][n]){r=!0;break}r&&\"domain\"===e.constrain||(e._input.domain=e.domain=e._inputDomain,delete e._inputDomain)}}},{\"../../constants/alignment\":666,\"../../constants/numerical\":671,\"./autorange\":741,\"./axis_ids\":745,\"./scale_zoom\":759}],751:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"has-passive-events\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../../components/fx\"),h=t(\"./axes\"),p=t(\"../../lib/setcursor\"),d=t(\"../../components/dragelement\"),g=t(\"../../constants/alignment\").FROM_TL,v=t(\"../../lib/clear_gl_canvases\"),m=t(\"../../plot_api/subroutines\").redrawReglTraces,y=t(\"../plots\"),x=t(\"./axis_ids\").getFromId,b=t(\"./select\").prepSelect,_=t(\"./select\").clearSelect,w=t(\"./select\").selectOnClick,k=t(\"./scale_zoom\"),A=t(\"./constants\"),M=A.MINDRAG,T=A.MINZOOM,S=!0;function C(t,e,r,n){var i=s.ensureSingle(t.draglayer,e,r,function(e){e.classed(\"drag\",!0).style({fill:\"transparent\",\"stroke-width\":0}).attr(\"data-subplot\",t.id)});return i.call(p,n),i.node()}function E(t,e,r,i,a,o,s){var l=C(t,\"rect\",e,r);return n.select(l).call(u.setRect,i,a,o,s),l}function L(t,e){for(var r=0;r<t.length;r++)if(!t[r].fixedrange)return e;return\"\"}function z(t,e,r,n,i){var a,o,s,l;for(a=0;a<t.length;a++)(o=t[a]).fixedrange||(s=o._rl[0],l=o._rl[1]-s,o.range=[o.l2r(s+l*e),o.l2r(s+l*r)],n[o._name+\".range[0]\"]=o.range[0],n[o._name+\".range[1]\"]=o.range[1]);if(i&&i.length){var c=(e+(1-r))/2;z(i,c,1-c,n)}}function O(t,e){for(var r=0;r<t.length;r++){var n=t[r];n.fixedrange||(n.range=[n.l2r(n._rl[0]-e/n._m),n.l2r(n._rl[1]-e/n._m)])}}function I(t){return 1-(t>=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function D(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",\"translate(\"+r+\", \"+n+\")\").attr(\"d\",i+\"Z\")}function P(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",\"translate(\"+e+\", \"+r+\")\").attr(\"d\",\"M0,0Z\")}function R(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),F(t,e,i,a)}function F(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function B(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function N(t){S&&t.data&&t._context.showTips&&(s.notifier(s._(t,\"Double-click to zoom back out\"),\"long\"),S=!1)}function j(t){return\"lasso\"===t||\"select\"===t}function V(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,T)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function U(t,e){if(a){var r=void 0!==t.onwheel?\"wheel\":\"mousewheel\";t._onwheel&&t.removeEventListener(r,t._onwheel),t._onwheel=e,t.addEventListener(r,e,{passive:!1})}else void 0!==t.onwheel?t.onwheel=e:void 0!==t.onmousewheel&&(t.onmousewheel=e)}function q(t){var e=[];for(var r in t)e.push(t[r]);return e}e.exports={makeDragBox:function(t,e,r,a,c,p,S,C){var F,H,G,W,Y,X,Z,$,J,K,Q,tt,et,rt,nt,it,at,ot,st,lt,ct,ut=t._fullLayout._zoomlayer,ft=S+C===\"nsew\",ht=1===(S+C).length;function pt(){if(F=e.xaxis,H=e.yaxis,J=F._length,K=H._length,Z=F._offset,$=H._offset,(G={})[F._id]=F,(W={})[H._id]=H,S&&C)for(var r=e.overlays,n=0;n<r.length;n++){var i=r[n].xaxis;G[i._id]=i;var a=r[n].yaxis;W[a._id]=a}Y=q(G),X=q(W),tt=L(Y,C),et=L(X,S),rt=!et&&!tt,Q=function(t,e,r){for(var n,i,a,o,l=t._fullLayout._axisConstraintGroups,c=!1,u={},f={},h=0;h<l.length;h++){var p=l[h];for(n in e)if(p[n]){for(a in p)(\"x\"===a.charAt(0)?e:r)[a]||(u[a]=1);for(i in r)p[i]&&(c=!0)}for(i in r)if(p[i])for(o in p)(\"x\"===o.charAt(0)?e:r)[o]||(f[o]=1)}c&&(s.extendFlat(u,f),f={});var d={},g=[];for(a in u){var v=x(t,a);g.push(v),d[v._id]=v}var m={},y=[];for(o in f){var b=x(t,o);y.push(b),m[b._id]=b}return{xaHash:d,yaHash:m,xaxes:g,yaxes:y,isSubplotConstrained:c}}(t,G,W),nt=Q.isSubplotConstrained,it=C||nt,at=S||nt;var o=t._fullLayout;ot=o._has(\"scattergl\"),st=o._has(\"splom\"),lt=o._has(\"svg\")}pt();var dt=function(t,e,r){return t?\"nsew\"===t?r?\"\":\"pan\"===e?\"move\":\"crosshair\":t.toLowerCase()+\"-resize\":\"pointer\"}(et+tt,t._fullLayout.dragmode,ft),gt=E(e,S+C+\"drag\",dt,r,a,c,p);if(rt&&!ft)return gt.onmousedown=null,gt.style.pointerEvents=\"none\",gt;var vt,mt,yt,xt,bt,_t,wt,kt,At,Mt,Tt={element:gt,gd:t,plotinfo:e};function St(){Tt.plotinfo.selection=!1,_(ut)}function Ct(r,i){var a=t._fullLayout.clickmode;if(B(t),2!==r||ht||function(){if(!t._transitioningWithDuration){var e,r,n,i=t._context.doubleClick,a=(tt?Y:[]).concat(et?X:[]),s={};if(\"reset+autosize\"===i)for(i=\"autosize\",r=0;r<a.length;r++)if((e=a[r])._rangeInitial&&(e.range[0]!==e._rangeInitial[0]||e.range[1]!==e._rangeInitial[1])||!e._rangeInitial&&!e.autorange){i=\"reset\";break}if(\"autosize\"===i)for(r=0;r<a.length;r++)(e=a[r]).fixedrange||(s[e._name+\".autorange\"]=!0);else if(\"reset\"===i)for((tt||nt)&&(a=a.concat(Q.xaxes)),et&&!nt&&(a=a.concat(Q.yaxes)),nt&&(tt?et||(a=a.concat(X)):a=a.concat(Y)),r=0;r<a.length;r++)(e=a[r]).fixedrange||(e._rangeInitial?(n=e._rangeInitial,s[e._name+\".range[0]\"]=n[0],s[e._name+\".range[1]\"]=n[1]):s[e._name+\".autorange\"]=!0);t.emit(\"plotly_doubleclick\",null),o.call(\"_guiRelayout\",t,s)}}(),ft)a.indexOf(\"select\")>-1&&w(i,t,Y,X,e.id,Tt),a.indexOf(\"event\")>-1&&f.click(t,i,e.id);else if(1===r&&ht){var s=S?H:F,c=\"s\"===S||\"w\"===C?0:1,u=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,i=t.range[e],a=Math.abs(i-t.range[1-e]);return\"date\"===t.type?i:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(a)/Math.LN10))+3,n.format(\".\"+r+\"g\")(Math.pow(10,i))):(r=Math.floor(Math.log(Math.abs(i))/Math.LN10)-Math.floor(Math.log(a)/Math.LN10)+4,n.format(\".\"+String(r)+\"g\")(i))}(s,c),p=\"left\",d=\"middle\";if(s.fixedrange)return;S?(d=\"n\"===S?\"top\":\"bottom\",\"right\"===s.side&&(p=\"right\")):\"e\"===C&&(p=\"right\"),t._context.showAxisRangeEntryBoxes&&n.select(gt).call(l.makeEditable,{gd:t,immediate:!0,background:t._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:p,verticalAlign:d}).on(\"edit\",function(e){var r=s.d2r(e);void 0!==r&&o.call(\"_guiRelayout\",t,u,r)})}}function Et(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(J,e+vt)),i=Math.max(0,Math.min(K,r+mt)),a=Math.abs(n-vt),o=Math.abs(i-mt);function s(){wt=\"\",yt.r=yt.l,yt.t=yt.b,At.attr(\"d\",\"M0,0Z\")}yt.l=Math.min(vt,n),yt.r=Math.max(vt,n),yt.t=Math.min(mt,i),yt.b=Math.max(mt,i),nt?a>T||o>T?(wt=\"xy\",a/J>o/K?(o=a*K/J,mt>i?yt.t=mt-o:yt.b=mt+o):(a=o*J/K,vt>n?yt.l=vt-a:yt.r=vt+a),At.attr(\"d\",V(yt))):s():!et||o<Math.min(Math.max(.6*a,M),T)?a<M||!tt?s():(yt.t=0,yt.b=K,wt=\"x\",At.attr(\"d\",function(t,e){return\"M\"+(t.l-.5)+\",\"+(e-T-.5)+\"h-3v\"+(2*T+1)+\"h3ZM\"+(t.r+.5)+\",\"+(e-T-.5)+\"h3v\"+(2*T+1)+\"h-3Z\"}(yt,mt))):!tt||a<Math.min(.6*o,T)?(yt.l=0,yt.r=J,wt=\"y\",At.attr(\"d\",function(t,e){return\"M\"+(e-T-.5)+\",\"+(t.t-.5)+\"v-3h\"+(2*T+1)+\"v3ZM\"+(e-T-.5)+\",\"+(t.b+.5)+\"v3h\"+(2*T+1)+\"v-3Z\"}(yt,vt))):(wt=\"xy\",At.attr(\"d\",V(yt))),yt.w=yt.r-yt.l,yt.h=yt.b-yt.t,wt&&(Mt=!0),t._dragged=Mt,R(kt,At,yt,bt,_t,xt),_t=!0}function Lt(){if(ct={},Math.min(yt.h,yt.w)<2*M)return B(t);\"xy\"!==wt&&\"x\"!==wt||z(Y,yt.l/J,yt.r/J,ct,Q.xaxes),\"xy\"!==wt&&\"y\"!==wt||z(X,(K-yt.b)/K,(K-yt.t)/K,ct,Q.yaxes),B(t),Nt(),N(t)}Tt.prepFn=function(e,r,n){var a=Tt.dragmode,o=t._fullLayout.dragmode;o!==a&&(Tt.dragmode=o),pt(),rt||(ft?e.shiftKey?\"pan\"===o?o=\"zoom\":j(o)||(o=\"pan\"):e.ctrlKey&&(o=\"pan\"):o=\"pan\"),Tt.minDrag=\"lasso\"===o?1:void 0,j(o)?(Tt.xaxes=Y,Tt.yaxes=X,b(e,r,n,Tt,o)):(Tt.clickFn=Ct,j(a)&&St(),rt||(\"zoom\"===o?(Tt.moveFn=Et,Tt.doneFn=Lt,Tt.minDrag=1,function(e,r,n){var a=gt.getBoundingClientRect();vt=r-a.left,mt=n-a.top,yt={l:vt,r:vt,w:0,t:mt,b:mt,h:0},xt=t._hmpixcount?t._hmlumcount/t._hmpixcount:i(t._fullLayout.plot_bgcolor).getLuminance(),_t=!1,wt=\"xy\",Mt=!1,kt=D(ut,xt,Z,$,bt=\"M0,0H\"+J+\"V\"+K+\"H0V0\"),At=P(ut,Z,$)}(0,r,n)):\"pan\"===o&&(Tt.moveFn=Ft,Tt.doneFn=Nt)))},d.init(Tt);var zt,Ot,It=[0,0,J,K],Dt=null,Pt=A.REDRAWDELAY,Rt=e.mainplot?t._fullLayout._plots[e.mainplot]:e;function Ft(e,r){if(!t._transitioningWithDuration){if(t._fullLayout._replotting=!0,\"ew\"===tt||\"ns\"===et)return tt&&O(Y,e),et&&O(X,r),jt([tt?-e:0,et?-r:0,J,K]),void Bt();if(nt&&tt&&et){var n=\"w\"===tt==(\"n\"===et)?1:-1,i=(e/J+n*r/K)/2;e=i*J,r=n*i*K}\"w\"===tt?e=l(Y,0,e):\"e\"===tt?e=l(Y,1,-e):tt||(e=0),\"n\"===et?r=l(X,1,r):\"s\"===et?r=l(X,0,-r):et||(r=0);var a=\"w\"===tt?e:0,o=\"n\"===et?r:0;if(nt){var s;if(!tt&&1===et.length){for(s=0;s<Y.length;s++)Y[s].range=Y[s]._r.slice(),k(Y[s],1-r/K);a=(e=r*J/K)/2}if(!et&&1===tt.length){for(s=0;s<X.length;s++)X[s].range=X[s]._r.slice(),k(X[s],1-e/J);o=(r=e*K/J)/2}}jt([a,o,J-e,K-r]),Bt()}function l(t,e,r){for(var n,i,a=1-e,o=0;o<t.length;o++){var s=t[o];if(!s.fixedrange){n=s,i=s._rl[a]+(s._rl[e]-s._rl[a])/I(r/s._length);var l=s.l2r(i);!1!==l&&void 0!==l&&(s.range[e]=l)}}return n._length*(n._rl[e]-i)/(n._rl[e]-n._rl[a])}}function Bt(){var e,r=[];function n(t){for(e=0;e<t.length;e++)t[e].fixedrange||r.push(t[e]._id)}for(it&&(n(Y),n(Q.xaxes)),at&&(n(X),n(Q.yaxes)),ct={},e=0;e<r.length;e++){var i=r[e],a=x(t,i);h.drawOne(t,a,{skipTitle:!0}),ct[a._name+\".range[0]\"]=a.range[0],ct[a._name+\".range[1]\"]=a.range[1]}h.redrawComponents(t,r)}function Nt(){jt([0,0,J,K]),s.syncOrAsync([y.previousPromises,function(){t._fullLayout._replotting=!1,o.call(\"_guiRelayout\",t,ct)}],t)}function jt(e){var r,n,i,a,l=t._fullLayout,c=l._plots,f=l._subplots.cartesian;if(st&&o.subplotsRegistry.splom.drag(t),ot)for(r=0;r<f.length;r++)if(i=(n=c[f[r]]).xaxis,a=n.yaxis,n._scene){var h=s.simpleMap(i.range,i.r2l),p=s.simpleMap(a.range,a.r2l);n._scene.update({range:[h[0],p[0],h[1],p[1]]})}if((st||ot)&&(v(t),m(t)),lt){var d=e[2]/F._length,g=e[3]/H._length;for(r=0;r<f.length;r++){i=(n=c[f[r]]).xaxis,a=n.yaxis;var y,x,b,_,w=it&&!i.fixedrange&&G[i._id],k=at&&!a.fixedrange&&W[a._id];if(w?(y=d,b=C?e[0]:qt(i,y)):b=Ut(i,y=Vt(i,d,g)),k?(x=g,_=S?e[1]:qt(a,x)):_=Ut(a,x=Vt(a,d,g)),y||x){y||(y=1),x||(x=1);var A=i._offset-b/y,M=a._offset-_/x;n.clipRect.call(u.setTranslate,b,_).call(u.setScale,y,x),n.plot.call(u.setTranslate,A,M).call(u.setScale,1/y,1/x),y===zt&&x===Ot||(u.setPointGroupScale(n.zoomScalePts,y,x),u.setTextPointsScale(n.zoomScaleTxt,y,x)),u.hideOutsideRangePoints(n.clipOnAxisFalseTraces,n),zt=y,Ot=x}}}}function Vt(t,e,r){return t.fixedrange?0:it&&Q.xaHash[t._id]?e:at&&(nt?Q.xaHash:Q.yaHash)[t._id]?r:0}function Ut(t,e){return e?(t.range=t._r.slice(),k(t,e),qt(t,e)):0}function qt(t,e){return t._length*(1-e)*g[t.constraintoward||\"middle\"]}return S.length*C.length!=1&&U(gt,function(e){if(t._context._scrollZoom.cartesian||t._fullLayout._enablescrollzoom){if(St(),t._transitioningWithDuration)return e.preventDefault(),void e.stopPropagation();pt(),clearTimeout(Dt);var r=-e.deltaY;if(isFinite(r)||(r=e.wheelDelta/10),isFinite(r)){var n,i=Math.exp(-Math.min(Math.max(r,-20),20)/200),a=Rt.draglayer.select(\".nsewdrag\").node().getBoundingClientRect(),o=(e.clientX-a.left)/a.width,l=(a.bottom-e.clientY)/a.height;if(it){for(C||(o=.5),n=0;n<Y.length;n++)c(Y[n],o,i);It[2]*=i,It[0]+=It[2]*o*(1/i-1)}if(at){for(S||(l=.5),n=0;n<X.length;n++)c(X[n],l,i);It[3]*=i,It[1]+=It[3]*(1-l)*(1/i-1)}jt(It),Bt(),Dt=setTimeout(function(){It=[0,0,J,K],Nt()},Pt),e.preventDefault()}else s.log(\"Did not find wheel motion attributes: \",e)}function c(t,e,r){if(!t.fixedrange){var n=s.simpleMap(t.range,t.r2l),i=n[0]+(n[1]-n[0])*e;t.range=n.map(function(e){return t.l2r(i+(e-i)*r)})}}}),gt},makeDragger:C,makeRectDragger:E,makeZoombox:D,makeCorners:P,updateZoombox:R,xyCorners:V,transitionZoombox:F,removeZoombox:B,showDoubleClickNotifier:N,attachWheelEventHandler:U}},{\"../../components/color\":571,\"../../components/dragelement\":589,\"../../components/drawing\":592,\"../../components/fx\":610,\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/clear_gl_canvases\":679,\"../../lib/setcursor\":714,\"../../lib/svg_text_utils\":718,\"../../plot_api/subroutines\":733,\"../../registry\":825,\"../plots\":806,\"./axes\":742,\"./axis_ids\":745,\"./constants\":748,\"./scale_zoom\":759,\"./select\":760,d3:149,\"has-passive-events\":397,tinycolor2:515}],752:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/fx\"),a=t(\"../../components/dragelement\"),o=t(\"../../lib/setcursor\"),s=t(\"./dragbox\").makeDragBox,l=t(\"./constants\").DRAGGERSIZE;r.initInteractions=function(t){var e=t._fullLayout;if(t._context.staticPlot)n.select(t).selectAll(\".drag\").remove();else if(e._has(\"cartesian\")||e._has(\"splom\")){Object.keys(e._plots||{}).sort(function(t,r){if((e._plots[t].mainplot&&!0)===(e._plots[r].mainplot&&!0)){var n=t.split(\"y\"),i=r.split(\"y\");return n[0]===i[0]?Number(n[1]||1)-Number(i[1]||1):Number(n[0]||1)-Number(i[0]||1)}return e._plots[t].mainplot?1:-1}).forEach(function(r){var n=e._plots[r],o=n.xaxis,c=n.yaxis;if(!n.mainplot){var u=s(t,n,o._offset,c._offset,o._length,c._length,\"ns\",\"ew\");u.onmousemove=function(e){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===r&&i.hover(t,e,r)},i.hover(t,e,r),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=r},u.onmouseout=function(e){t._dragging||(t._fullLayout._hoversubplot=null,a.unhover(t,e))},t._context.showAxisDragHandles&&(s(t,n,o._offset-l,c._offset-l,l,l,\"n\",\"w\"),s(t,n,o._offset+o._length,c._offset-l,l,l,\"n\",\"e\"),s(t,n,o._offset-l,c._offset+c._length,l,l,\"s\",\"w\"),s(t,n,o._offset+o._length,c._offset+c._length,l,l,\"s\",\"e\"))}if(t._context.showAxisDragHandles){if(r===o._mainSubplot){var f=o._mainLinePosition;\"top\"===o.side&&(f-=l),s(t,n,o._offset+.1*o._length,f,.8*o._length,l,\"\",\"ew\"),s(t,n,o._offset,f,.1*o._length,l,\"\",\"w\"),s(t,n,o._offset+.9*o._length,f,.1*o._length,l,\"\",\"e\")}if(r===c._mainSubplot){var h=c._mainLinePosition;\"right\"!==c.side&&(h-=l),s(t,n,h,c._offset+.1*c._length,l,.8*c._length,\"ns\",\"\"),s(t,n,h,c._offset+.9*c._length,l,.1*c._length,\"s\",\"\"),s(t,n,h,c._offset,l,.1*c._length,\"n\",\"\")}}});var o=e._hoverlayer.node();o.onmousemove=function(r){r.target=t._fullLayout._lasthover,i.hover(t,r,e._hoversubplot)},o.onclick=function(e){e.target=t._fullLayout._lasthover,i.click(t,e)},o.onmousedown=function(e){t._fullLayout._lasthover.onmousedown(e)},r.updateFx(t)}},r.updateFx=function(t){var e=t._fullLayout,r=\"pan\"===e.dragmode?\"move\":\"crosshair\";o(e._draggers,r)}},{\"../../components/dragelement\":589,\"../../components/fx\":610,\"../../lib/setcursor\":714,\"./constants\":748,\"./dragbox\":751,d3:149}],753:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t){return function(e,r){var a=e[t];if(Array.isArray(a))for(var o=n.subplotsRegistry.cartesian,s=o.idRegex,l=r._subplots,c=l.xaxis,u=l.yaxis,f=l.cartesian,h=r._has(\"cartesian\")||r._has(\"gl2d\"),p=0;p<a.length;p++){var d=a[p];if(i.isPlainObject(d)){var g=d.xref,v=d.yref,m=s.x.test(g),y=s.y.test(v);if(m||y){h||i.pushUnique(r._basePlotModules,o);var x=!1;m&&-1===c.indexOf(g)&&(c.push(g),x=!0),y&&-1===u.indexOf(v)&&(u.push(v),x=!0),x&&m&&y&&f.push(g+v)}}}}}},{\"../../lib\":694,\"../../registry\":825}],754:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=t(\"../plots\"),s=t(\"../../components/drawing\"),l=t(\"../get_data\").getModuleCalcData,c=t(\"./axis_ids\"),u=t(\"./constants\"),f=t(\"../../constants/xmlns_namespaces\"),h=a.ensureSingle;function p(t,e,r){return a.ensureSingle(t,e,r,function(t){t.datum(r)})}function d(t,e,r,a,o){for(var c,f,h,p=u.traceLayerClasses,d=t._fullLayout,g=d._modules,v=[],m=[],y=0;y<g.length;y++){var x=(c=g[y]).name,b=i.modules[x].categories;if(b.svg){var _=c.layerName||x+\"layer\",w=c.plot;h=(f=l(r,w))[0],r=f[1],h.length&&v.push({i:p.indexOf(_),className:_,plotMethod:w,cdModule:h}),b.zoomScale&&m.push(\".\"+_)}}v.sort(function(t,e){return t.i-e.i});var k=e.plot.selectAll(\"g.mlayer\").data(v,function(t){return t.className});if(k.enter().append(\"g\").attr(\"class\",function(t){return t.className}).classed(\"mlayer\",!0),k.exit().remove(),k.order(),k.each(function(r){var i=n.select(this),l=r.className;r.plotMethod(t,e,r.cdModule,i,a,o),\"scatterlayer\"!==l&&\"barlayer\"!==l&&s.setClipUrl(i,e.layerClipId,t)}),d._has(\"scattergl\")&&(c=i.getModule(\"scattergl\"),h=l(r,c)[0],c.plot(t,e,h)),!t._context.staticPlot&&(e._hasClipOnAxisFalse&&(e.clipOnAxisFalseTraces=e.plot.selectAll(\".scatterlayer, .barlayer\").selectAll(\".trace\")),m.length)){var A=e.plot.selectAll(m.join(\",\")).selectAll(\".trace\");e.zoomScalePts=A.selectAll(\"path.point\"),e.zoomScaleTxt=A.selectAll(\".textpoint\")}}function g(t,e){var r=e.plotgroup,n=e.id,i=u.layerValue2layerClass[e.xaxis.layer],a=u.layerValue2layerClass[e.yaxis.layer],o=t._fullLayout._hasOnlyLargeSploms;if(e.mainplot){var s=e.mainplotinfo,l=s.plotgroup,f=n+\"-x\",d=n+\"-y\";e.gridlayer=s.gridlayer,e.zerolinelayer=s.zerolinelayer,h(s.overlinesBelow,\"path\",f),h(s.overlinesBelow,\"path\",d),h(s.overaxesBelow,\"g\",f),h(s.overaxesBelow,\"g\",d),e.plot=h(s.overplot,\"g\",n),h(s.overlinesAbove,\"path\",f),h(s.overlinesAbove,\"path\",d),h(s.overaxesAbove,\"g\",f),h(s.overaxesAbove,\"g\",d),e.xlines=l.select(\".overlines-\"+i).select(\".\"+f),e.ylines=l.select(\".overlines-\"+a).select(\".\"+d),e.xaxislayer=l.select(\".overaxes-\"+i).select(\".\"+f),e.yaxislayer=l.select(\".overaxes-\"+a).select(\".\"+d)}else if(o)e.xlines=h(r,\"path\",\"xlines-above\"),e.ylines=h(r,\"path\",\"ylines-above\"),e.xaxislayer=h(r,\"g\",\"xaxislayer-above\"),e.yaxislayer=h(r,\"g\",\"yaxislayer-above\");else{var g=h(r,\"g\",\"layer-subplot\");e.shapelayer=h(g,\"g\",\"shapelayer\"),e.imagelayer=h(g,\"g\",\"imagelayer\"),e.gridlayer=h(r,\"g\",\"gridlayer\"),e.zerolinelayer=h(r,\"g\",\"zerolinelayer\"),h(r,\"path\",\"xlines-below\"),h(r,\"path\",\"ylines-below\"),e.overlinesBelow=h(r,\"g\",\"overlines-below\"),h(r,\"g\",\"xaxislayer-below\"),h(r,\"g\",\"yaxislayer-below\"),e.overaxesBelow=h(r,\"g\",\"overaxes-below\"),e.plot=h(r,\"g\",\"plot\"),e.overplot=h(r,\"g\",\"overplot\"),e.xlines=h(r,\"path\",\"xlines-above\"),e.ylines=h(r,\"path\",\"ylines-above\"),e.overlinesAbove=h(r,\"g\",\"overlines-above\"),h(r,\"g\",\"xaxislayer-above\"),h(r,\"g\",\"yaxislayer-above\"),e.overaxesAbove=h(r,\"g\",\"overaxes-above\"),e.xlines=r.select(\".xlines-\"+i),e.ylines=r.select(\".ylines-\"+a),e.xaxislayer=r.select(\".xaxislayer-\"+i),e.yaxislayer=r.select(\".yaxislayer-\"+a)}o||(p(e.gridlayer,\"g\",e.xaxis._id),p(e.gridlayer,\"g\",e.yaxis._id),e.gridlayer.selectAll(\"g\").map(function(t){return t[0]}).sort(c.idSort)),e.xlines.style(\"fill\",\"none\").classed(\"crisp\",!0),e.ylines.style(\"fill\",\"none\").classed(\"crisp\",!0)}function v(t,e){if(t){var r={};for(var i in t.each(function(t){var i=t[0];n.select(this).remove(),m(i,e),r[i]=!0}),e._plots)for(var a=e._plots[i].overlays||[],o=0;o<a.length;o++){var s=a[o];r[s.id]&&s.plot.selectAll(\".trace\").remove()}}}function m(t,e){e._draggers.selectAll(\"g.\"+t).remove(),e._defs.select(\"#clip\"+e._uid+t+\"plot\").remove()}r.name=\"cartesian\",r.attr=[\"xaxis\",\"yaxis\"],r.idRoot=[\"x\",\"y\"],r.idRegex=u.idRegex,r.attrRegex=u.attrRegex,r.attributes=t(\"./attributes\"),r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.transitionAxes=t(\"./transition_axes\"),r.finalizeSubplots=function(t,e){var r,n,i,o=e._subplots,s=o.xaxis,l=o.yaxis,f=o.cartesian,h=f.concat(o.gl2d||[]),p={},d={};for(r=0;r<h.length;r++){var g=h[r].split(\"y\");p[g[0]]=1,d[\"y\"+g[1]]=1}for(r=0;r<s.length;r++)p[n=s[r]]||(i=(t[c.id2name(n)]||{}).anchor,u.idRegex.y.test(i)||(i=\"y\"),f.push(n+i),h.push(n+i),d[i]||(d[i]=1,a.pushUnique(l,i)));for(r=0;r<l.length;r++)d[i=l[r]]||(n=(t[c.id2name(i)]||{}).anchor,u.idRegex.x.test(n)||(n=\"x\"),f.push(n+i),h.push(n+i),p[n]||(p[n]=1,a.pushUnique(s,n)));if(!h.length){for(var v in n=\"\",i=\"\",t){if(u.attrRegex.test(v))\"x\"===v.charAt(0)?(!n||+v.substr(5)<+n.substr(5))&&(n=v):(!i||+v.substr(5)<+i.substr(5))&&(i=v)}n=n?c.name2id(n):\"x\",i=i?c.name2id(i):\"y\",s.push(n),l.push(i),f.push(n+i)}},r.plot=function(t,e,r,n){var i,a=t._fullLayout,o=a._subplots.cartesian,s=t.calcdata;if(null!==e){if(!Array.isArray(e))for(e=[],i=0;i<s.length;i++)e.push(i);for(i=0;i<o.length;i++){for(var l,c=o[i],u=a._plots[c],f=[],h=0;h<s.length;h++){var p=s[h],g=p[0].trace;g.xaxis+g.yaxis===c&&((-1!==e.indexOf(g.index)||g.carpet)&&(l&&l[0].trace.xaxis+l[0].trace.yaxis===c&&-1!==[\"tonextx\",\"tonexty\",\"tonext\"].indexOf(g.fill)&&-1===f.indexOf(l)&&f.push(l),f.push(p)),l=p)}d(t,u,f,r,n)}}},r.clean=function(t,e,r,n){var i,a,o,s=n._plots||{},l=e._plots||{},u=n._subplots||{};if(n._hasOnlyLargeSploms&&!e._hasOnlyLargeSploms)for(o in s)(i=s[o]).plotgroup&&i.plotgroup.remove();var f=n._has&&n._has(\"gl\"),h=e._has&&e._has(\"gl\");if(f&&!h)for(o in s)(i=s[o])._scene&&i._scene.destroy();if(u.xaxis&&u.yaxis){var p=c.listIds({_fullLayout:n});for(a=0;a<p.length;a++){var d=p[a];e[c.id2name(d)]||n._infolayer.selectAll(\".g-\"+d+\"title\").remove()}}var g=n._has&&n._has(\"cartesian\"),y=e._has&&e._has(\"cartesian\");if(g&&!y)v(n._cartesianlayer.selectAll(\".subplot\"),n),n._defs.selectAll(\".axesclip\").remove(),delete n._axisConstraintGroups;else if(u.cartesian)for(a=0;a<u.cartesian.length;a++){var x=u.cartesian[a];if(!l[x]){var b=\".\"+x+\",.\"+x+\"-x,.\"+x+\"-y\";n._cartesianlayer.selectAll(b).remove(),m(x,n)}}},r.drawFramework=function(t){var e=t._fullLayout,r=function(t){var e,r,n,i,a,o,s=t._fullLayout,l=s._subplots.cartesian,c=l.length,u=[],f=[];for(e=0;e<c;e++){n=l[e],i=s._plots[n],a=i.xaxis,o=i.yaxis;var h=a._mainAxis,p=o._mainAxis,d=h._id+p._id,g=s._plots[d];i.overlays=[],d!==n&&g?(i.mainplot=d,i.mainplotinfo=g,f.push(n)):(i.mainplot=void 0,i.mainPlotinfo=void 0,u.push(n))}for(e=0;e<f.length;e++)n=f[e],(i=s._plots[n]).mainplotinfo.overlays.push(i);var v=u.concat(f),m=new Array(c);for(e=0;e<c;e++){n=v[e],i=s._plots[n],a=i.xaxis,o=i.yaxis;var y=[n,a.layer,o.layer,a.overlaying||\"\",o.overlaying||\"\"];for(r=0;r<i.overlays.length;r++)y.push(i.overlays[r].id);m[e]=y}return m}(t),i=e._cartesianlayer.selectAll(\".subplot\").data(r,String);i.enter().append(\"g\").attr(\"class\",function(t){return\"subplot \"+t[0]}),i.order(),i.exit().call(v,e),i.each(function(r){var i=r[0],a=e._plots[i];a.plotgroup=n.select(this),g(t,a),a.draglayer=h(e._draggers,\"g\",i)})},r.rangePlot=function(t,e,r){g(t,e),d(t,e,r),o.style(t)},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter(function(t,e){return e===r.size()-1}).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each(function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:f.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.width,height:this.height})})},r.updateFx=t(\"./graph_interact\").updateFx},{\"../../components/drawing\":592,\"../../constants/xmlns_namespaces\":672,\"../../lib\":694,\"../../registry\":825,\"../get_data\":779,\"../plots\":806,\"./attributes\":740,\"./axis_ids\":745,\"./constants\":748,\"./graph_interact\":752,\"./layout_attributes\":755,\"./layout_defaults\":756,\"./transition_axes\":765,d3:149}],755:[function(t,e,r){\"use strict\";var n=t(\"../font_attributes\"),i=t(\"../../components/color/attributes\"),a=t(\"../../components/drawing/attributes\").dash,o=t(\"../../lib/extend\").extendFlat,s=t(\"../../plot_api/plot_template\").templatedArray,l=t(\"./constants\");e.exports={visible:{valType:\"boolean\",editType:\"plot\"},color:{valType:\"color\",dflt:i.defaultLine,editType:\"ticks\"},title:{text:{valType:\"string\",editType:\"ticks\"},font:n({editType:\"ticks\"}),editType:\"ticks\"},type:{valType:\"enumerated\",values:[\"-\",\"linear\",\"log\",\"date\",\"category\",\"multicategory\"],dflt:\"-\",editType:\"calc\",_noTemplating:!0},autorange:{valType:\"enumerated\",values:[!0,!1,\"reversed\"],dflt:!0,editType:\"axrange\",impliedEdits:{\"range[0]\":void 0,\"range[1]\":void 0}},rangemode:{valType:\"enumerated\",values:[\"normal\",\"tozero\",\"nonnegative\"],dflt:\"normal\",editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"any\",editType:\"axrange\",impliedEdits:{\"^autorange\":!1},anim:!0},{valType:\"any\",editType:\"axrange\",impliedEdits:{\"^autorange\":!1},anim:!0}],editType:\"axrange\",impliedEdits:{autorange:!1},anim:!0},fixedrange:{valType:\"boolean\",dflt:!1,editType:\"calc\"},scaleanchor:{valType:\"enumerated\",values:[l.idRegex.x.toString(),l.idRegex.y.toString()],editType:\"plot\"},scaleratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},constrain:{valType:\"enumerated\",values:[\"range\",\"domain\"],dflt:\"range\",editType:\"plot\"},constraintoward:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\",\"top\",\"middle\",\"bottom\"],editType:\"plot\"},tickmode:{valType:\"enumerated\",values:[\"auto\",\"linear\",\"array\"],editType:\"ticks\",impliedEdits:{tick0:void 0,dtick:void 0}},nticks:{valType:\"integer\",min:0,dflt:0,editType:\"ticks\"},tick0:{valType:\"any\",editType:\"ticks\",impliedEdits:{tickmode:\"linear\"}},dtick:{valType:\"any\",editType:\"ticks\",impliedEdits:{tickmode:\"linear\"}},tickvals:{valType:\"data_array\",editType:\"ticks\"},ticktext:{valType:\"data_array\",editType:\"ticks\"},ticks:{valType:\"enumerated\",values:[\"outside\",\"inside\",\"\"],editType:\"ticks\"},tickson:{valType:\"enumerated\",values:[\"labels\",\"boundaries\"],dflt:\"labels\",editType:\"ticks\"},mirror:{valType:\"enumerated\",values:[!0,\"ticks\",!1,\"all\",\"allticks\"],dflt:!1,editType:\"ticks+layoutstyle\"},ticklen:{valType:\"number\",min:0,dflt:5,editType:\"ticks\"},tickwidth:{valType:\"number\",min:0,dflt:1,editType:\"ticks\"},tickcolor:{valType:\"color\",dflt:i.defaultLine,editType:\"ticks\"},showticklabels:{valType:\"boolean\",dflt:!0,editType:\"ticks\"},automargin:{valType:\"boolean\",dflt:!1,editType:\"ticks\"},showspikes:{valType:\"boolean\",dflt:!1,editType:\"modebar\"},spikecolor:{valType:\"color\",dflt:null,editType:\"none\"},spikethickness:{valType:\"number\",dflt:3,editType:\"none\"},spikedash:o({},a,{dflt:\"dash\",editType:\"none\"}),spikemode:{valType:\"flaglist\",flags:[\"toaxis\",\"across\",\"marker\"],dflt:\"toaxis\",editType:\"none\"},spikesnap:{valType:\"enumerated\",values:[\"data\",\"cursor\"],dflt:\"data\",editType:\"none\"},tickfont:n({editType:\"ticks\"}),tickangle:{valType:\"angle\",dflt:\"auto\",editType:\"ticks\"},tickprefix:{valType:\"string\",dflt:\"\",editType:\"ticks\"},showtickprefix:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"ticks\"},ticksuffix:{valType:\"string\",dflt:\"\",editType:\"ticks\"},showticksuffix:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"ticks\"},showexponent:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"ticks\"},exponentformat:{valType:\"enumerated\",values:[\"none\",\"e\",\"E\",\"power\",\"SI\",\"B\"],dflt:\"B\",editType:\"ticks\"},separatethousands:{valType:\"boolean\",dflt:!1,editType:\"ticks\"},tickformat:{valType:\"string\",dflt:\"\",editType:\"ticks\"},tickformatstops:s(\"tickformatstop\",{enabled:{valType:\"boolean\",dflt:!0,editType:\"ticks\"},dtickrange:{valType:\"info_array\",items:[{valType:\"any\",editType:\"ticks\"},{valType:\"any\",editType:\"ticks\"}],editType:\"ticks\"},value:{valType:\"string\",dflt:\"\",editType:\"ticks\"},editType:\"ticks\"}),hoverformat:{valType:\"string\",dflt:\"\",editType:\"none\"},showline:{valType:\"boolean\",dflt:!1,editType:\"ticks+layoutstyle\"},linecolor:{valType:\"color\",dflt:i.defaultLine,editType:\"layoutstyle\"},linewidth:{valType:\"number\",min:0,dflt:1,editType:\"ticks+layoutstyle\"},showgrid:{valType:\"boolean\",editType:\"ticks\"},gridcolor:{valType:\"color\",dflt:i.lightLine,editType:\"ticks\"},gridwidth:{valType:\"number\",min:0,dflt:1,editType:\"ticks\"},zeroline:{valType:\"boolean\",editType:\"ticks\"},zerolinecolor:{valType:\"color\",dflt:i.defaultLine,editType:\"ticks\"},zerolinewidth:{valType:\"number\",dflt:1,editType:\"ticks\"},showdividers:{valType:\"boolean\",dflt:!0,editType:\"ticks\"},dividercolor:{valType:\"color\",dflt:i.defaultLine,editType:\"ticks\"},dividerwidth:{valType:\"number\",dflt:1,editType:\"ticks\"},anchor:{valType:\"enumerated\",values:[\"free\",l.idRegex.x.toString(),l.idRegex.y.toString()],editType:\"plot\"},side:{valType:\"enumerated\",values:[\"top\",\"bottom\",\"left\",\"right\"],editType:\"plot\"},overlaying:{valType:\"enumerated\",values:[\"free\",l.idRegex.x.toString(),l.idRegex.y.toString()],editType:\"plot\"},layer:{valType:\"enumerated\",values:[\"above traces\",\"below traces\"],dflt:\"above traces\",editType:\"plot\"},domain:{valType:\"info_array\",items:[{valType:\"number\",min:0,max:1,editType:\"plot\"},{valType:\"number\",min:0,max:1,editType:\"plot\"}],dflt:[0,1],editType:\"plot\"},position:{valType:\"number\",min:0,max:1,dflt:0,editType:\"plot\"},categoryorder:{valType:\"enumerated\",values:[\"trace\",\"category ascending\",\"category descending\",\"array\"],dflt:\"trace\",editType:\"calc\"},categoryarray:{valType:\"data_array\",editType:\"calc\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"calc\",_deprecated:{autotick:{valType:\"boolean\",editType:\"ticks\"},title:{valType:\"string\",editType:\"ticks\"},titlefont:n({editType:\"ticks\"})}}},{\"../../components/color/attributes\":570,\"../../components/drawing/attributes\":591,\"../../lib/extend\":684,\"../../plot_api/plot_template\":732,\"../font_attributes\":769,\"./constants\":748}],756:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../plot_api/plot_template\"),o=t(\"../layout_attributes\"),s=t(\"./layout_attributes\"),l=t(\"./type_defaults\"),c=t(\"./axis_defaults\"),u=t(\"./constraint_defaults\"),f=t(\"./position_defaults\"),h=t(\"./axis_ids\"),p=h.id2name,d=h.name2id,g=t(\"../../registry\"),v=g.traceIs,m=g.getComponentMethod;function y(t,e,r){Array.isArray(t[e])?t[e].push(r):t[e]=[r]}e.exports=function(t,e,r){var h,g,x={},b={},_={},w={},k={};for(h=0;h<r.length;h++){var A=r[h];if(v(A,\"cartesian\")||v(A,\"gl2d\")){var M,T;if(A.xaxis)y(x,M=p(A.xaxis),A);else if(A.xaxes)for(g=0;g<A.xaxes.length;g++)y(x,p(A.xaxes[g]),A);if(A.yaxis)y(x,T=p(A.yaxis),A);else if(A.yaxes)for(g=0;g<A.yaxes.length;g++)y(x,p(A.yaxes[g]),A);if(v(A,\"carpet\")&&(\"carpet\"!==A.type||A._cheater)||M&&(_[M]=1),\"carpet\"===A.type&&A._cheater&&M&&(b[M]=1),v(A,\"2dMap\")&&(w[M]=1,w[T]=1),v(A,\"oriented\"))k[\"h\"===A.orientation?T:M]=1}}var S=e._subplots,C=S.xaxis,E=S.yaxis,L=n.simpleMap(C,p),z=n.simpleMap(E,p),O=L.concat(z),I=i.background;C.length&&E.length&&(I=n.coerce(t,e,o,\"plot_bgcolor\"));var D,P,R,F,B=i.combine(I,e.paper_bgcolor);function N(t,e){return n.coerce(R,F,s,t,e)}function j(t,e){return n.coerce2(R,F,s,t,e)}function V(t){return\"x\"===t?E:C}var U={x:V(\"x\"),y:V(\"y\")};function q(e,r){for(var n=\"x\"===e?L:z,i=[],a=0;a<n.length;a++){var o=n[a];o===r||(t[o]||{}).overlaying||i.push(d(o))}return i}for(h=0;h<O.length;h++){P=(D=O[h]).charAt(0),n.isPlainObject(t[D])||(t[D]={}),R=t[D],F=a.newContainer(e,D,P+\"axis\");var H=x[D]||[];F._traceIndices=H.map(function(t){return t._expandedIndex}),F._annIndices=[],F._shapeIndices=[],F._imgIndices=[],F._subplotsWith=[],F._counterAxes=[],F._name=F._attr=D;var G=F._id=d(D),W=q(P,D),Y={letter:P,font:e.font,outerTicks:w[D],showGrid:!k[D],data:H,bgColor:B,calendar:e.calendar,automargin:!0,cheateronly:\"x\"===P&&b[D]&&!_[D],splomStash:((e._splomAxes||{})[P]||{})[G]};N(\"uirevision\",e.uirevision),l(R,F,N,Y),c(R,F,N,Y,e);var X=j(\"spikecolor\"),Z=j(\"spikethickness\"),$=j(\"spikedash\"),J=j(\"spikemode\"),K=j(\"spikesnap\");N(\"showspikes\",!!(X||Z||$||J||K))||(delete F.spikecolor,delete F.spikethickness,delete F.spikedash,delete F.spikemode,delete F.spikesnap);var Q={letter:P,counterAxes:U[P],overlayableAxes:W,grid:e.grid};f(R,F,N,Q),F._input=R}var tt=m(\"rangeslider\",\"handleDefaults\"),et=m(\"rangeselector\",\"handleDefaults\");for(h=0;h<L.length;h++)D=L[h],R=t[D],F=e[D],tt(t,e,D),\"date\"===F.type&&et(R,F,e,z,F.calendar),N(\"fixedrange\");for(h=0;h<z.length;h++){D=z[h],R=t[D],F=e[D];var rt=e[p(F.anchor)];N(\"fixedrange\",m(\"rangeslider\",\"isVisible\")(rt))}e._axisConstraintGroups=[];var nt=U.x.concat(U.y);for(h=0;h<O.length;h++)P=(D=O[h]).charAt(0),R=t[D],F=e[D],u(R,F,N,nt,e)}},{\"../../components/color\":571,\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../registry\":825,\"../layout_attributes\":797,\"./axis_defaults\":744,\"./axis_ids\":745,\"./constraint_defaults\":749,\"./layout_attributes\":755,\"./position_defaults\":758,\"./type_defaults\":766}],757:[function(t,e,r){\"use strict\";var n=t(\"tinycolor2\").mix,i=t(\"../../components/color/attributes\").lightFraction,a=t(\"../../lib\");e.exports=function(t,e,r,o){var s=(o=o||{}).dfltColor;function l(r,n){return a.coerce2(t,e,o.attributes,r,n)}var c=l(\"linecolor\",s),u=l(\"linewidth\");r(\"showline\",o.showLine||!!c||!!u)||(delete e.linecolor,delete e.linewidth);var f=l(\"gridcolor\",n(s,o.bgColor,o.blend||i).toRgbString()),h=l(\"gridwidth\");if(r(\"showgrid\",o.showGrid||!!f||!!h)||(delete e.gridcolor,delete e.gridwidth),!o.noZeroLine){var p=l(\"zerolinecolor\",s),d=l(\"zerolinewidth\");r(\"zeroline\",o.showGrid||!!p||!!d)||(delete e.zerolinecolor,delete e.zerolinewidth)}}},{\"../../components/color/attributes\":570,\"../../lib\":694,tinycolor2:515}],758:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o,s,l,c,u=a.counterAxes||[],f=a.overlayableAxes||[],h=a.letter,p=a.grid;p&&(s=p._domains[h][p._axisMap[e._id]],o=p._anchors[e._id],s&&(l=p[h+\"side\"].split(\" \")[0],c=p.domain[h][\"right\"===l||\"top\"===l?1:0])),s=s||[0,1],o=o||(n(t.position)?\"free\":u[0]||\"free\"),l=l||(\"x\"===h?\"bottom\":\"left\"),c=c||0,\"free\"===i.coerce(t,e,{anchor:{valType:\"enumerated\",values:[\"free\"].concat(u),dflt:o}},\"anchor\")&&r(\"position\",c),i.coerce(t,e,{side:{valType:\"enumerated\",values:\"x\"===h?[\"bottom\",\"top\"]:[\"left\",\"right\"],dflt:l}},\"side\");var d=!1;if(f.length&&(d=i.coerce(t,e,{overlaying:{valType:\"enumerated\",values:[!1].concat(f),dflt:!1}},\"overlaying\")),!d){var g=r(\"domain\",s);g[0]>g[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":694,\"fast-isnumeric\":215}],759:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)]}},{\"../../constants/alignment\":666}],760:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/color\"),o=t(\"../../components/fx\"),s=t(\"../../lib/polygon\"),l=t(\"../../lib/throttle\"),c=t(\"../../components/fx/helpers\").makeEventData,u=t(\"./axis_ids\").getFromId,f=t(\"../../lib/clear_gl_canvases\"),h=t(\"../../plot_api/subroutines\").redrawReglTraces,p=t(\"./constants\"),d=p.MINSELECT,g=s.filter,v=s.tester;function m(t){return t._id}function y(t,e,r,n,i,a,o){var s,l,c,u,f,h,p,d,g,v=e._hoverdata,m=e._fullLayout.clickmode.indexOf(\"event\")>-1,y=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(v)){w(t,e,a);var x=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n<e.length;n++)if(r=e[n],i.fullData._expandedIndex===r.cd[0].trace._expandedIndex){if(!0===i.hoverOnBox)break;void 0!==i.pointNumber?a=i.pointNumber:void 0!==i.binNumber&&(a=i.binNumber,o=i.pointNumbers);break}return{pointNumber:a,pointNumbers:o,searchInfo:r}}(v,s=A(e,r,n,i));if(x.pointNumbers.length>0?function(t,e){var r,n,i,a=[];for(i=0;i<t.length;i++)(r=t[i]).cd[0].trace.selectedpoints&&r.cd[0].trace.selectedpoints.length>0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i<e.pointNumbers.length;i++)if(n.selectedpoints.indexOf(e.pointNumbers[i])<0)return!1;return!0}return!1}(s,x):function(t){var e,r,n,i=0;for(n=0;n<t.length;n++)if(e=t[n],(r=e.cd[0].trace).selectedpoints){if(r.selectedpoints.length>1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=T(x))){for(o&&o.remove(),g=0;g<s.length;g++)(l=s[g])._module.selectPoints(l,!1);S(e,s),k(a),m&&e.emit(\"plotly_deselect\",null)}else{for(p=t.shiftKey&&(void 0!==h?h:T(x)),c=function(t,e,r){return{pointNumber:t,searchInfo:e,subtract:r}}(x.pointNumber,x.searchInfo,p),u=_(a.selectionDefs.concat([c])),g=0;g<s.length;g++)if(f=C(s[g]._module.selectPoints(s[g],u),s[g]),y.length)for(var b=0;b<f.length;b++)y.push(f[b]);else y=f;S(e,s,d={points:y}),c&&a&&a.selectionDefs.push(c),o&&M(a.mergedPolygons,o),m&&e.emit(\"plotly_selected\",d)}}}function x(t){return\"pointNumber\"in t&&\"searchInfo\"in t}function b(t){return{xmin:0,xmax:0,ymin:0,ymax:0,pts:[],contains:function(e,r,n,i){var a=t.searchInfo.cd[0].trace._expandedIndex;return i.cd[0].trace._expandedIndex===a&&n===t.pointNumber},isRect:!1,degenerate:!1,subtract:t.subtract}}function _(t){for(var e=[],r=x(t[0])?0:t[0][0][0],n=r,i=x(t[0])?0:t[0][0][1],a=i,o=0;o<t.length;o++)if(x(t[o]))e.push(b(t[o]));else{var l=s.tester(t[o]);l.subtract=t[o].subtract,e.push(l),r=Math.min(r,l.xmin),n=Math.max(n,l.xmax),i=Math.min(i,l.ymin),a=Math.max(a,l.ymax)}return{xmin:r,xmax:n,ymin:i,ymax:a,pts:[],contains:function(t,r,n,i){for(var a=!1,o=0;o<e.length;o++)e[o].contains(t,r,n,i)&&(a=!1===e[o].subtract);return a},isRect:!1,degenerate:!1}}function w(t,e,r){var n=e._fullLayout,i=n._zoomlayer,a=r.plotinfo,o=n._lastSelectedSubplot&&n._lastSelectedSubplot===a.id,s=t.shiftKey||t.altKey;o&&s&&a.selection&&a.selection.selectionDefs&&!r.selectionDefs?(r.selectionDefs=a.selection.selectionDefs,r.mergedPolygons=a.selection.mergedPolygons):s&&a.selection||k(r),o||(E(i),n._lastSelectedSubplot=a.id)}function k(t){var e=t.plotinfo;e.selection={},e.selection.selectionDefs=t.selectionDefs=[],e.selection.mergedPolygons=t.mergedPolygons=[]}function A(t,e,r,n){var i,a,o,s=[],l=e.map(m),c=r.map(m);for(o=0;o<t.calcdata.length;o++)if(!0===(a=(i=t.calcdata[o])[0].trace).visible&&a._module&&a._module.selectPoints)if(!n||a.subplot!==n&&a.geo!==n)if(\"splom\"===a.type&&a._xaxes[l[0]]&&a._yaxes[c[0]]){var f=h(a._module,i,e[0],r[0]);f.scene=t._fullLayout._splomScenes[a.uid],s.push(f)}else{if(-1===l.indexOf(a.xaxis))continue;if(-1===c.indexOf(a.yaxis))continue;s.push(h(a._module,i,u(t,a.xaxis),u(t,a.yaxis)))}else s.push(h(a._module,i,e[0],r[0]));return s;function h(t,e,r,n){return{_module:t,cd:e,xaxis:r,yaxis:n}}}function M(t,e){var r,n,i=[];for(r=0;r<t.length;r++){var a=t[r];i.push(a.join(\"L\")+\"L\"+a[0])}n=t.length>0?\"M\"+i.join(\"M\")+\"Z\":\"M0,0Z\",e.attr(\"d\",n)}function T(t){var e=t.searchInfo.cd[0].trace,r=t.pointNumber,n=t.pointNumbers,i=n.length>0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function S(t,e,r){var n,a,o,s;for(n=0;n<e.length;n++){var l=e[n].cd[0].trace._fullInput,c=t._fullLayout._tracePreGUI[l.uid];void 0===c.selectedpoints&&(c.selectedpoints=l._input.selectedpoints||null)}if(r){var u=r.points||[];for(n=0;n<e.length;n++)(s=e[n].cd[0].trace)._input.selectedpoints=s._fullInput.selectedpoints=[],s._fullInput!==s&&(s.selectedpoints=[]);for(n=0;n<u.length;n++){var p=u[n],d=p.data,g=p.fullData;p.pointIndices?([].push.apply(d.selectedpoints,p.pointIndices),s._fullInput!==s&&[].push.apply(g.selectedpoints,p.pointIndices)):(d.selectedpoints.push(p.pointIndex),s._fullInput!==s&&g.selectedpoints.push(p.pointIndex))}}else for(n=0;n<e.length;n++)delete(s=e[n].cd[0].trace).selectedpoints,delete s._input.selectedpoints,s._fullInput!==s&&delete s._fullInput.selectedpoints;var v=!1;for(n=0;n<e.length;n++){s=(o=(a=e[n]).cd)[0].trace,i.traceIs(s,\"regl\")&&(v=!0);var m=a._module,y=m.styleOnSelect||m.style;y&&y(t,o)}v&&(f(t),h(t))}function C(t,e){if(Array.isArray(t))for(var r=e.cd,n=e.cd[0].trace,i=0;i<t.length;i++)t[i]=c(t[i],n,r);return t}function E(t){t.selectAll(\".select-outline\").remove()}e.exports={prepSelect:function(t,e,r,i,s){var c,u,f,h,m,x,b,T=i.gd,E=T._fullLayout,L=E._zoomlayer,z=i.element.getBoundingClientRect(),O=i.plotinfo,I=O.xaxis._offset,D=O.yaxis._offset,P=e-z.left,R=r-z.top,F=P,B=R,N=\"M\"+P+\",\"+R,j=i.xaxes[0]._length,V=i.yaxes[0]._length,U=i.xaxes.concat(i.yaxes),q=t.altKey;w(t,T,i),\"lasso\"===s&&(c=g([[P,R]],p.BENDPX));var H=L.selectAll(\"path.select-outline-\"+O.id).data([1,2]);H.enter().append(\"path\").attr(\"class\",function(t){return\"select-outline select-outline-\"+t+\" select-outline-\"+O.id}).attr(\"transform\",\"translate(\"+I+\", \"+D+\")\").attr(\"d\",N+\"Z\");var G,W=L.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:a.background,stroke:a.defaultLine,\"stroke-width\":1}).attr(\"transform\",\"translate(\"+I+\", \"+D+\")\").attr(\"d\",\"M0,0Z\"),Y=E._uid+p.SELECTID,X=[],Z=A(T,i.xaxes,i.yaxes,i.subplot);function $(t){var e=\"y\"===t._id.charAt(0)?1:0;return function(r){return t.p2d(r[e])}}function J(t,e){return t-e}G=O.fillRangeItems?O.fillRangeItems:\"select\"===s?function(t,e){var r=t.range={};for(m=0;m<U.length;m++){var n=U[m],i=n._id.charAt(0);r[n._id]=[n.p2d(e[i+\"min\"]),n.p2d(e[i+\"max\"])].sort(J)}}:function(t,e,r){var n=t.lassoPoints={};for(m=0;m<U.length;m++){var i=U[m];n[i._id]=r.filtered.map($(i))}},i.moveFn=function(t,e){F=Math.max(0,Math.min(j,t+P)),B=Math.max(0,Math.min(V,e+R));var r=Math.abs(F-P),a=Math.abs(B-R);if(\"select\"===s){var o=E.selectdirection;\"h\"===(o=\"any\"===E.selectdirection?a<Math.min(.6*r,d)?\"h\":r<Math.min(.6*a,d)?\"v\":\"d\":E.selectdirection)?((h=[[P,0],[P,V],[F,V],[F,0]]).xmin=Math.min(P,F),h.xmax=Math.max(P,F),h.ymin=Math.min(0,V),h.ymax=Math.max(0,V),W.attr(\"d\",\"M\"+h.xmin+\",\"+(R-d)+\"h-4v\"+2*d+\"h4ZM\"+(h.xmax-1)+\",\"+(R-d)+\"h4v\"+2*d+\"h-4Z\")):\"v\"===o?((h=[[0,R],[0,B],[j,B],[j,R]]).xmin=Math.min(0,j),h.xmax=Math.max(0,j),h.ymin=Math.min(R,B),h.ymax=Math.max(R,B),W.attr(\"d\",\"M\"+(P-d)+\",\"+h.ymin+\"v-4h\"+2*d+\"v4ZM\"+(P-d)+\",\"+(h.ymax-1)+\"v4h\"+2*d+\"v-4Z\")):\"d\"===o&&((h=[[P,R],[P,B],[F,B],[F,R]]).xmin=Math.min(P,F),h.xmax=Math.max(P,F),h.ymin=Math.min(R,B),h.ymax=Math.max(R,B),W.attr(\"d\",\"M0,0Z\"))}else\"lasso\"===s&&(c.addPt([F,B]),h=c.filtered);i.selectionDefs&&i.selectionDefs.length?(f=function(t,e,r){return r?n.difference({regions:t,inverted:!1},{regions:[e],inverted:!1}).regions:n.union({regions:t,inverted:!1},{regions:[e],inverted:!1}).regions}(i.mergedPolygons,h,q),h.subtract=q,u=_(i.selectionDefs.concat([h]))):(f=[h],u=v(h)),M(f,H),l.throttle(Y,p.SELECTDELAY,function(){var t;X=[];var e,r=[];for(m=0;m<Z.length;m++)if(e=(x=Z[m])._module.selectPoints(x,u),r.push(e),t=C(e,x),X.length)for(var n=0;n<t.length;n++)X.push(t[n]);else X=t;S(T,Z,b={points:X}),G(b,h,c),i.gd.emit(\"plotly_selecting\",b)})},i.clickFn=function(t,e){var r=E.clickmode;W.remove(),l.done(Y).then(function(){if(l.clear(Y),2===t){for(H.remove(),m=0;m<Z.length;m++)(x=Z[m])._module.selectPoints(x,!1);S(T,Z),k(i),T.emit(\"plotly_deselect\",null)}else r.indexOf(\"select\")>-1&&y(e,T,i.xaxes,i.yaxes,i.subplot,i,H),\"event\"===r&&T.emit(\"plotly_selected\",void 0);o.click(T,e)})},i.doneFn=function(){W.remove(),l.done(Y).then(function(){l.clear(Y),i.gd.emit(\"plotly_selected\",b),h&&i.selectionDefs&&(h.subtract=q,i.selectionDefs.push(h),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,f))})}},clearSelect:E,selectOnClick:y}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../components/fx/helpers\":606,\"../../lib/clear_gl_canvases\":679,\"../../lib/polygon\":706,\"../../lib/throttle\":719,\"../../plot_api/subroutines\":733,\"../../registry\":825,\"./axis_ids\":745,\"./constants\":748,polybooljs:459}],761:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=a.cleanNumber,s=a.ms2DateTime,l=a.dateTime2ms,c=a.ensureNumber,u=a.isArrayOrTypedArray,f=t(\"../../constants/numerical\"),h=f.FP_SAFE,p=f.BADNUM,d=f.LOG_CLIP,g=t(\"./constants\"),v=t(\"./axis_ids\");function m(t){return Math.pow(10,t)}function y(t){return null!=t}e.exports=function(t,e){e=e||{};var r=(t._id||\"x\").charAt(0);function f(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*d*Math.abs(n-i))}return p}function x(e,r,n){var o=l(e,n||t.calendar);if(o===p){if(!i(e))return p;e=+e;var s=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-s/10);o=l(new Date(c))+s/10}return o}function b(e,r,n){return s(e,r,n||t.calendar)}function _(e){return t._categories[Math.round(e)]}function w(e){if(y(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return p}function k(e){if(t._categoriesMap)return t._categoriesMap[e]}function A(t){var e=k(t);return void 0!==e?e:i(t)?+t:void 0}function M(e){return i(e)?n.round(t._b+t._m*e,2):p}function T(e){return(e-t._b)/t._m}t.c2l=\"log\"===t.type?f:c,t.l2c=\"log\"===t.type?m:c,t.l2p=M,t.p2l=T,t.c2p=\"log\"===t.type?function(t,e){return M(f(t,e))}:M,t.p2c=\"log\"===t.type?function(t){return m(T(t))}:T,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=c,t.d2p=t.r2p=function(e){return t.l2p(o(e))},t.p2d=t.p2r=T,t.cleanPos=c):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return f(o(t),e)},t.r2d=t.r2c=function(t){return m(o(t))},t.d2c=t.r2l=o,t.c2d=t.l2r=c,t.c2r=f,t.l2d=m,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return m(T(t))},t.r2p=function(e){return t.l2p(o(e))},t.p2r=T,t.cleanPos=c):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=x,t.c2d=t.c2r=t.l2d=t.l2r=b,t.d2p=t.r2p=function(e,r,n){return t.l2p(x(e,0,n))},t.p2d=t.p2r=function(t,e,r){return b(T(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,p,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=w,t.r2d=t.c2d=t.l2d=_,t.d2r=t.d2l_noadd=A,t.r2c=function(e){var r=A(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=c,t.r2l=A,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return _(T(t))},t.r2p=t.d2p,t.p2r=T,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:c(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=_,t.d2r=t.d2l_noadd=A,t.r2c=function(e){var r=A(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=k,t.l2r=t.c2r=c,t.r2l=A,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return _(T(t))},t.r2p=t.d2p,t.p2r=T,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:c(t)},t.setupMultiCategory=function(e){var n,i,o=t._traceIndices,s=t._multicatSeen=[[0,{}],[0,{}]],l=t._multicatList=[];for(n=0;n<o.length;n++){var c=e[o[n]];if(r in c){var f=c[r],h=c._length||a.minRowLength(f);if(u(f[0])&&u(f[1]))for(i=0;i<h;i++){var p=f[0][i],d=f[1][i];y(p)&&y(d)&&(l.push([p,d]),p in s[0][1]||(s[0][1][p]=s[0][0]++),d in s[1][1]||(s[1][1][d]=s[1][0]++))}}}for(l.sort(function(t,e){var r=s[0][1],n=r[t[0]]-r[e[0]];if(n)return n;var i=s[1][1];return i[t[1]]-i[e[1]]}),n=0;n<l.length;n++)w(l[n])}),t.fraction2r=function(e){var r=t.r2l(t.range[0]),n=t.r2l(t.range[1]);return t.l2r(r+e*(n-r))},t.r2fraction=function(e){var r=t.r2l(t.range[0]),n=t.r2l(t.range[1]);return(t.r2l(e)-r)/(n-r)},t.cleanRange=function(e,n){n||(n={}),e||(e=\"range\");var o,s,l=a.nestedProperty(t,e).get();if(s=(s=\"date\"===t.type?a.dfltRange(t.calendar):\"y\"===r?g.DFLTRANGEY:n.dfltRange||g.DFLTRANGEX).slice(),l&&2===l.length)for(\"date\"===t.type&&(l[0]=a.cleanDate(l[0],p,t.calendar),l[1]=a.cleanDate(l[1],p,t.calendar)),o=0;o<2;o++)if(\"date\"===t.type){if(!a.isDateTime(l[o],t.calendar)){t[e]=s;break}if(t.r2l(l[0])===t.r2l(l[1])){var c=a.constrain(t.r2l(l[0]),a.MIN_MS+1e3,a.MAX_MS-1e3);l[0]=t.l2r(c-1e3),l[1]=t.l2r(c+1e3);break}}else{if(!i(l[o])){if(!i(l[1-o])){t[e]=s;break}l[o]=l[1-o]*(o?10:.1)}if(l[o]<-h?l[o]=-h:l[o]>h&&(l[o]=h),l[0]===l[1]){var u=Math.max(1,Math.abs(1e-6*l[0]));l[0]-=u,l[1]+=u}}else a.nestedProperty(t,e).set(s)},t.setScale=function(n){var i=e._size;if(t.overlaying){var a=v.getFromId({_fullLayout:e},t.overlaying);t.domain=a.domain}var o=n&&t._r?\"_r\":\"range\",s=t.calendar;t.cleanRange(o);var l=t.r2l(t[o][0],s),c=t.r2l(t[o][1],s);if(\"y\"===r?(t._offset=i.t+(1-t.domain[1])*i.h,t._length=i.h*(t.domain[1]-t.domain[0]),t._m=t._length/(l-c),t._b=-t._m*c):(t._offset=i.l+t.domain[0]*i.w,t._length=i.w*(t.domain[1]-t.domain[0]),t._m=t._length/(c-l),t._b=-t._m*l),!isFinite(t._m)||!isFinite(t._b))throw e._replotting=!1,new Error(\"Something went wrong with axis scaling\")},t.makeCalcdata=function(e,r){var n,i,o,s,l=t.type,c=\"date\"===l&&e[r+\"calendar\"];if(r in e){if(n=e[r],s=e._length||a.minRowLength(n),a.isTypedArray(n)&&(\"linear\"===l||\"log\"===l)){if(s===n.length)return n;if(n.subarray)return n.subarray(0,s)}if(\"multicategory\"===l)return function(t,e){for(var r=new Array(e),n=0;n<e;n++){var i=(t[0]||[])[n],a=(t[1]||[])[n];r[n]=k([i,a])}return r}(n,s);for(i=new Array(s),o=0;o<s;o++)i[o]=t.d2c(n[o],0,c)}else{var u=r+\"0\"in e?t.d2c(e[r+\"0\"],0,c):0,f=e[\"d\"+r]?Number(e[\"d\"+r]):1;for(n=e[{x:\"y\",y:\"x\"}[r]],s=e._length||n.length,i=new Array(s),o=0;o<s;o++)i[o]=u+o*f}return i},t.isValidRange=function(e){return Array.isArray(e)&&2===e.length&&i(t.r2l(e[0]))&&i(t.r2l(e[1]))},t.isPtWithinRange=function(e,n){var i=t.c2l(e[r],null,n),a=t.r2l(t.range[0]),o=t.r2l(t.range[1]);return a<o?a<=i&&i<=o:o<=i&&i<=a},t.clearCalc=function(){t._categories=(t._initialCategories||[]).slice(),t._categoriesMap={};for(var e=0;e<t._categories.length;e++)t._categoriesMap[t._categories[e]]=e};var S=e._d3locale;\"date\"===t.type&&(t._dateFormat=S?S.timeFormat.utc:n.time.format.utc,t._extraFormat=e._extraFormat),t._separators=e.separators,t._numFormat=S?S.numberFormat:n.format,delete t._minDtick,delete t._forceTick0}},{\"../../constants/numerical\":671,\"../../lib\":694,\"./axis_ids\":745,\"./constants\":748,d3:149,\"fast-isnumeric\":215}],762:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../array_container_defaults\");function o(t,e){function r(r,a){return n.coerce(t,e,i.tickformatstops,r,a)}r(\"enabled\")&&(r(\"dtickrange\"),r(\"value\"))}e.exports=function(t,e,r,s,l){var c=function(t){var e=[\"showexponent\",\"showtickprefix\",\"showticksuffix\"].filter(function(e){return void 0!==t[e]});if(e.every(function(r){return t[r]===t[e[0]]})||1===e.length)return t[e[0]]}(t);if(r(\"tickprefix\")&&r(\"showtickprefix\",c),r(\"ticksuffix\",l.tickSuffixDflt)&&r(\"showticksuffix\",c),r(\"showticklabels\")){var u=l.font||{},f=e.color,h=f&&f!==i.color.dflt?f:u.color;if(n.coerceFont(r,\"tickfont\",{family:u.family,size:u.size,color:h}),r(\"tickangle\"),\"category\"!==s){var p=r(\"tickformat\"),d=t.tickformatstops;Array.isArray(d)&&d.length&&a(t,e,{name:\"tickformatstops\",inclusionAttr:\"enabled\",handleItemDefaults:o}),p||\"date\"===s||(r(\"showexponent\",c),r(\"exponentformat\"),r(\"separatethousands\"))}}}},{\"../../lib\":694,\"../array_container_defaults\":738,\"./layout_attributes\":755}],763:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r,a){var o=n.coerce2(t,e,i,\"ticklen\"),s=n.coerce2(t,e,i,\"tickwidth\"),l=n.coerce2(t,e,i,\"tickcolor\",e.color);r(\"ticks\",a.outerTicks||o||s||l?\"outside\":\"\")||(delete e.ticklen,delete e.tickwidth,delete e.tickcolor)}},{\"../../lib\":694,\"./layout_attributes\":755}],764:[function(t,e,r){\"use strict\";var n=t(\"./clean_ticks\");e.exports=function(t,e,r,i){var a;\"array\"!==t.tickmode||\"log\"!==i&&\"date\"!==i?a=r(\"tickmode\",Array.isArray(t.tickvals)?\"array\":t.dtick?\"linear\":\"auto\"):a=e.tickmode=\"auto\";if(\"auto\"===a)r(\"nticks\");else if(\"linear\"===a){var o=e.dtick=n.dtick(t.dtick,i);e.tick0=n.tick0(t.tick0,i,e.calendar,o)}else if(\"multicategory\"!==i){void 0===r(\"tickvals\")?e.tickmode=\"auto\":r(\"ticktext\")}}},{\"./clean_ticks\":747}],765:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\"),o=t(\"./axes\");e.exports=function(t,e,r,s){var l=t._fullLayout;if(0!==e.length){var c,u,f,h;s&&(c=s());var p=n.ease(r.easing);return t._transitionData._interruptCallbacks.push(function(){return window.cancelAnimationFrame(h),h=null,function(){for(var r={},n=0;n<e.length;n++){var a=e[n];a.xr0&&(r[a.plotinfo.xaxis._name+\".range\"]=a.xr0.slice()),a.yr0&&(r[a.plotinfo.yaxis._name+\".range\"]=a.yr0.slice())}return i.call(\"relayout\",t,r).then(function(){for(var t=0;t<e.length;t++)d(e[t].plotinfo)})}()}),u=Date.now(),h=window.requestAnimationFrame(function n(){f=Date.now();for(var a=Math.min(1,(f-u)/r.duration),o=p(a),s=0;s<e.length;s++)g(e[s],o);f-u>r.duration?(function(){for(var r={},n=0;n<e.length;n++){var a=e[n];a.xr1&&(r[a.plotinfo.xaxis._name+\".range\"]=a.xr1.slice()),a.yr1&&(r[a.plotinfo.yaxis._name+\".range\"]=a.yr1.slice())}c&&c(),i.call(\"relayout\",t,r).then(function(){for(var t=0;t<e.length;t++)d(e[t].plotinfo)})}(),h=window.cancelAnimationFrame(n)):h=window.requestAnimationFrame(n)}),Promise.resolve()}function d(t){var e=t.xaxis,r=t.yaxis;l._defs.select(\"#\"+t.clipId+\"> rect\").call(a.setTranslate,0,0).call(a.setScale,1,1),t.plot.call(a.setTranslate,e._offset,r._offset).call(a.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(a.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(a.setTextPointsScale,1,1),n.call(a.hideOutsideRangePoints,t)}function g(e,r){var n=e.plotinfo,i=n.xaxis,s=n.yaxis,l=e.xr0,c=e.xr1,u=i._length,f=e.yr0,h=e.yr1,p=s._length,d=!!c,g=!!h,v=[];if(d){var m=l[1]-l[0],y=c[1]-c[0];v[0]=(l[0]*(1-r)+r*c[0]-l[0])/(l[1]-l[0])*u,v[2]=u*(1-r+r*y/m),i.range[0]=l[0]*(1-r)+r*c[0],i.range[1]=l[1]*(1-r)+r*c[1]}else v[0]=0,v[2]=u;if(g){var x=f[1]-f[0],b=h[1]-h[0];v[1]=(f[1]*(1-r)+r*h[1]-f[1])/(f[0]-f[1])*p,v[3]=p*(1-r+r*b/x),s.range[0]=f[0]*(1-r)+r*h[0],s.range[1]=f[1]*(1-r)+r*h[1]}else v[1]=0,v[3]=p;o.drawOne(t,i,{skipTitle:!0}),o.drawOne(t,s,{skipTitle:!0}),o.redrawComponents(t,[i._id,s._id]);var _=d?u/v[2]:1,w=g?p/v[3]:1,k=d?v[0]:0,A=g?v[1]:0,M=d?v[0]/v[2]*u:0,T=g?v[1]/v[3]*p:0,S=i._offset-M,C=s._offset-T;n.clipRect.call(a.setTranslate,k,A).call(a.setScale,1/_,1/w),n.plot.call(a.setTranslate,S,C).call(a.setScale,_,w),a.setPointGroupScale(n.zoomScalePts,1/_,1/w),a.setTextPointsScale(n.zoomScaleTxt,1/_,1/w)}o.redrawComponents(t)}},{\"../../components/drawing\":592,\"../../registry\":825,\"./axes\":742,d3:149}],766:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r=t._id,s=r.charAt(0);-1!==r.indexOf(\"scene\")&&(r=s);var l=function(t,e,r){for(var n=0;n<t.length;n++){var i=t[n];if(\"splom\"===i.type&&i._length>0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,r,s);if(!l)return;if(\"histogram\"===l.type&&s==={v:\"y\",h:\"x\"}[l.orientation||\"v\"])return void(t.type=\"linear\");var c,u=s+\"calendar\",f=l[u],h={noMultiCategory:!n(l,\"cartesian\")||n(l,\"noMultiCategory\")};if(o(l,s)){var p=a(l),d=[];for(c=0;c<e.length;c++){var g=e[c];n(g,\"box-violin\")&&(g[s+\"axis\"]||s)===r&&(void 0!==g[p]?d.push(g[p][0]):void 0!==g.name?d.push(g.name):d.push(\"text\"),g[u]!==f&&(f=void 0))}t.type=i(d,f,h)}else if(\"splom\"===l.type){var v=l.dimensions,m=l._diag;for(c=0;c<v.length;c++){var y=v[c];if(y.visible&&(m[c][0]===r||m[c][1]===r)){t.type=i(y.values,f,h);break}}}else t.type=i(l[s]||[l[s+\"0\"]],f,h)}(e,s.data),\"-\"===e.type?e.type=\"linear\":t.type=e.type)}},{\"../../registry\":825,\"./axis_autotype\":743}],767:[function(t,e,r){\"use strict\";var n=t(\"../registry\"),i=t(\"../lib\");function a(t,e,r){var n,a,o,s=!1;if(\"data\"===e.type)n=t._fullData[null!==e.traces?e.traces[0]:0];else{if(\"layout\"!==e.type)return!1;n=t._fullLayout}return a=i.nestedProperty(n,e.prop).get(),(o=r[e.type]=r[e.type]||{}).hasOwnProperty(e.prop)&&o[e.prop]!==a&&(s=!0),o[e.prop]=a,{changed:s,value:a}}function o(t,e){var r=[],n=e[0],a={};if(\"string\"==typeof n)a[n]=e[1];else{if(!i.isPlainObject(n))return r;a=n}return l(a,function(t,e,n){r.push({type:\"layout\",prop:t,value:n})},\"\",0),r}function s(t,e){var r,n,a,o,s=[];if(n=e[0],a=e[1],r=e[2],o={},\"string\"==typeof n)o[n]=a;else{if(!i.isPlainObject(n))return s;o=n,void 0===r&&(r=a)}return void 0===r&&(r=null),l(o,function(e,n,i){var a;if(Array.isArray(i)){var o=Math.min(i.length,t.data.length);r&&(o=Math.min(o,r.length)),a=[];for(var l=0;l<o;l++)a[l]=r?r[l]:l}else a=r?r.slice(0):null;if(null===a)Array.isArray(i)&&(i=i[0]);else if(Array.isArray(a)){if(!Array.isArray(i)){var c=i;i=[];for(var u=0;u<a.length;u++)i[u]=c}i.length=Math.min(a.length,i.length)}s.push({type:\"data\",prop:e,traces:a,value:i})},\"\",0),s}function l(t,e,r,n){Object.keys(t).forEach(function(a){var o=t[a];if(\"_\"!==a[0]){var s=r+(n>0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}})}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f<u.length;f++)t._internalOn(u[f],s.check);s.remove=function(){for(var e=0;e<u.length;e++)t._removeInternalListener(u[e],s.check)}}else i.log(\"Unable to automatically bind plot updates to API command\"),s.lookupTable={},s.remove=function(){};return s.disable=function(){l=!1},s.enable=function(){l=!0},e&&(e._commandObserver=s),s},r.hasSimpleAPICommandBindings=function(t,e,n){var i,a,o=e.length;for(i=0;i<o;i++){var s,l=e[i],c=l.method,u=l.args;if(Array.isArray(u)||(u=[]),!c)return!1;var f=r.computeAPICommandBindings(t,c,u);if(1!==f.length)return!1;if(a){if((s=f[0]).type!==a.type)return!1;if(s.prop!==a.prop)return!1;if(Array.isArray(a.traces)){if(!Array.isArray(s.traces))return!1;s.traces.sort();for(var h=0;h<a.traces.length;h++)if(a.traces[h]!==s.traces[h])return!1}else if(s.prop!==a.prop)return!1}else a=f[0],Array.isArray(a.traces)&&a.traces.sort();var p=(s=f[0]).value;if(Array.isArray(p)){if(1!==p.length)return!1;p=p[0]}n&&(n[p]=i)}return a},r.executeAPICommand=function(t,e,r){if(\"skip\"===e)return Promise.resolve();var a=n.apiMethodRegistry[e],o=[t];Array.isArray(r)||(r=[]);for(var s=0;s<r.length;s++)o.push(r[s]);return a.apply(null,o).catch(function(t){return i.warn(\"API call to Plotly.\"+e+\" rejected.\",t),Promise.reject(t)})},r.computeAPICommandBindings=function(t,e,r){var n;switch(Array.isArray(r)||(r=[]),e){case\"restyle\":n=s(t,r);break;case\"relayout\":n=o(t,r);break;case\"update\":n=s(t,[r[0],r[2]]).concat(o(t,[r[1]]));break;case\"animate\":n=function(t,e){return Array.isArray(e[0])&&1===e[0].length&&-1!==[\"string\",\"number\"].indexOf(typeof e[0][0])?[{type:\"layout\",prop:\"_currentFrame\",value:e[0][0].toString()}]:[]}(0,r);break;default:n=[]}return n}},{\"../lib\":694,\"../registry\":825}],768:[function(t,e,r){\"use strict\";var n=t(\"../lib/extend\").extendFlat;r.attributes=function(t,e){e=e||{};var r={valType:\"info_array\",editType:(t=t||{}).editType,items:[{valType:\"number\",min:0,max:1,editType:t.editType},{valType:\"number\",min:0,max:1,editType:t.editType}],dflt:[0,1]},i=(t.name&&t.name,t.trace,e.description&&e.description,{x:n({},r,{}),y:n({},r,{}),editType:t.editType});return t.noGridCell||(i.row={valType:\"integer\",min:0,dflt:0,editType:t.editType},i.column={valType:\"integer\",min:0,dflt:0,editType:t.editType}),i},r.defaults=function(t,e,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=e.grid;if(o){var s=r(\"domain.column\");void 0!==s&&(s<o.columns?i=o._domains.x[s]:delete t.domain.column);var l=r(\"domain.row\");void 0!==l&&(l<o.rows?a=o._domains.y[l]:delete t.domain.row)}r(\"domain.x\",i),r(\"domain.y\",a)}},{\"../lib/extend\":684}],769:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.editType,r=t.colorEditType;void 0===r&&(r=e);var n={family:{valType:\"string\",noBlank:!0,strict:!0,editType:e},size:{valType:\"number\",min:1,editType:e},color:{valType:\"color\",editType:r},editType:e};return t.arrayOk&&(n.family.arrayOk=!0,n.size.arrayOk=!0,n.color.arrayOk=!0),n}},{}],770:[function(t,e,r){\"use strict\";e.exports={_isLinkedToArray:\"frames_entry\",group:{valType:\"string\"},name:{valType:\"string\"},traces:{valType:\"any\"},baseframe:{valType:\"string\"},data:{valType:\"any\"},layout:{valType:\"any\"}}},{}],771:[function(t,e,r){\"use strict\";r.projNames={equirectangular:\"equirectangular\",mercator:\"mercator\",orthographic:\"orthographic\",\"natural earth\":\"naturalEarth\",kavrayskiy7:\"kavrayskiy7\",miller:\"miller\",robinson:\"robinson\",eckert4:\"eckert4\",\"azimuthal equal area\":\"azimuthalEqualArea\",\"azimuthal equidistant\":\"azimuthalEquidistant\",\"conic equal area\":\"conicEqualArea\",\"conic conformal\":\"conicConformal\",\"conic equidistant\":\"conicEquidistant\",gnomonic:\"gnomonic\",stereographic:\"stereographic\",mollweide:\"mollweide\",hammer:\"hammer\",\"transverse mercator\":\"transverseMercator\",\"albers usa\":\"albersUsa\",\"winkel tripel\":\"winkel3\",aitoff:\"aitoff\",sinusoidal:\"sinusoidal\"},r.axesNames=[\"lonaxis\",\"lataxis\"],r.lonaxisSpan={orthographic:180,\"azimuthal equal area\":360,\"azimuthal equidistant\":360,\"conic conformal\":180,gnomonic:160,stereographic:180,\"transverse mercator\":180,\"*\":360},r.lataxisSpan={\"conic conformal\":150,stereographic:179.5,\"*\":180},r.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:\"equirectangular\",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:\"albers usa\"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:\"conic conformal\",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:\"mercator\",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:\"mercator\",projRotate:[0,0,0]},\"north america\":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:\"conic conformal\",projRotate:[-100,0,0],projParallels:[29.5,45.5]},\"south america\":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:\"mercator\",projRotate:[0,0,0]}},r.clipPad=.001,r.precision=.1,r.landColor=\"#F0DC82\",r.waterColor=\"#3399FF\",r.locationmodeToLayer={\"ISO-3\":\"countries\",\"USA-states\":\"subunits\",\"country names\":\"countries\"},r.sphereSVG={type:\"Sphere\"},r.fillLayers={ocean:1,land:1,lakes:1},r.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1},r.layers=[\"bg\",\"ocean\",\"land\",\"lakes\",\"subunits\",\"countries\",\"coastlines\",\"rivers\",\"lataxis\",\"lonaxis\",\"frame\",\"backplot\",\"frontplot\"],r.layersForChoropleth=[\"bg\",\"ocean\",\"land\",\"subunits\",\"countries\",\"coastlines\",\"lataxis\",\"lonaxis\",\"frame\",\"backplot\",\"rivers\",\"lakes\",\"frontplot\"],r.layerNameToAdjective={ocean:\"ocean\",land:\"land\",lakes:\"lake\",subunits:\"subunit\",countries:\"country\",coastlines:\"coastline\",rivers:\"river\",frame:\"frame\"}},{}],772:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=t(\"../../components/color\"),s=t(\"../../components/drawing\"),l=t(\"../../components/fx\"),c=t(\"../plots\"),u=t(\"../cartesian/axes\"),f=t(\"../../components/dragelement\"),h=t(\"../cartesian/select\").prepSelect,p=t(\"../cartesian/select\").selectOnClick,d=t(\"./zoom\"),g=t(\"./constants\"),v=t(\"../../lib/topojson_utils\"),m=t(\"topojson-client\").feature;function y(t){this.id=t.id,this.graphDiv=t.graphDiv,this.container=t.container,this.topojsonURL=t.topojsonURL,this.isStatic=t.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}t(\"./projections\")(n);var x=y.prototype;e.exports=function(t){return new y(t)},x.plot=function(t,e,r){var n=this,i=e[this.id],a=v.getTopojsonName(i);null===n.topojson||a!==n.topojsonName?(n.topojsonName=a,void 0===PlotlyGeoAssets.topojson[n.topojsonName]?r.push(n.fetchTopojson().then(function(r){PlotlyGeoAssets.topojson[n.topojsonName]=r,n.topojson=r,n.update(t,e)})):(n.topojson=PlotlyGeoAssets.topojson[n.topojsonName],n.update(t,e))):n.update(t,e)},x.fetchTopojson=function(){var t=v.getTopojsonPath(this.topojsonURL,this.topojsonName);return new Promise(function(e,r){n.json(t,function(n,i){if(n)return 404===n.status?r(new Error([\"plotly.js could not find topojson file at\",t,\".\",\"Make sure the *topojsonURL* plot config option\",\"is set properly.\"].join(\" \"))):r(new Error([\"unexpected error while fetching topojson file at\",t].join(\" \")));e(i)})})},x.update=function(t,e){var r=e[this.id];if(!this.updateProjection(e,r)){this.hasChoropleth=!1;for(var n=0;n<t.length;n++)if(\"choropleth\"===t[n][0].trace.type){this.hasChoropleth=!0;break}this.viewInitial||this.saveViewInitial(r),this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),c.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var i=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=i.selectAll(\".point\"),this.dataPoints.text=i.selectAll(\"text\"),this.dataPaths.line=i.selectAll(\".js-line\");var a=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=a.selectAll(\"path\"),this.render()}},x.updateProjection=function(t,e){var r=t._size,o=e.domain,s=e.projection,l=s.rotation||{},c=e.center||{},u=this.projection=function(t){for(var e=t.projection.type,r=n.geo[g.projNames[e]](),i=t._isClipped?g.lonaxisSpan[e]/2:null,a=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],o=function(t){return t?r:[]},s=0;s<a.length;s++){var l=a[s];\"function\"!=typeof r[l]&&(r[l]=o)}r.isLonLatOverEdges=function(t){if(null===r(t))return!0;if(i){var e=r.rotate();return n.geo.distance(t,[-e[0],-e[1]])>i*Math.PI/180}return!1},r.getPath=function(){return n.geo.path().projection(r)},r.getBounds=function(t){return r.getPath().bounds(t)},r.fitExtent=function(t,e){var n=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=r.clipExtent&&r.clipExtent();r.scale(150).translate([0,0]),a&&r.clipExtent(null);var o=r.getBounds(e),s=Math.min(n/(o[1][0]-o[0][0]),i/(o[1][1]-o[0][1])),l=+t[0][0]+(n-s*(o[1][0]+o[0][0]))/2,c=+t[0][1]+(i-s*(o[1][1]+o[0][1]))/2;return a&&r.clipExtent(a),r.scale(150*s).translate([l,c])},r.precision(g.precision),i&&r.clipAngle(i-g.clipPad);return r}(e);u.center([c.lon-l.lon,c.lat-l.lat]).rotate([-l.lon,-l.lat,l.roll]).parallels(s.parallels);var f=[[r.l+r.w*o.x[0],r.t+r.h*(1-o.y[1])],[r.l+r.w*o.x[1],r.t+r.h*(1-o.y[0])]],h=e.lonaxis,p=e.lataxis,d=function(t,e){var r=g.clipPad,n=t[0]+r,i=t[1]-r,a=e[0]+r,o=e[1]-r;n>0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}(h.range,p.range);u.fitExtent(f,d);var v=this.bounds=u.getBounds(d),m=this.fitScale=u.scale(),y=u.translate();if(!isFinite(v[0][0])||!isFinite(v[0][1])||!isFinite(v[1][0])||!isFinite(v[1][1])||isNaN(y[0])||isNaN(y[0])){for(var x=this.graphDiv,b=[\"projection.rotation\",\"center\",\"lonaxis.range\",\"lataxis.range\"],_=\"Invalid geo settings, relayout'ing to default view.\",w={},k=0;k<b.length;k++)w[this.id+\".\"+b[k]]=null;return this.viewInitial=null,a.warn(_),x._promises.push(i.call(\"relayout\",x,w)),_}var A=this.midPt=[(v[0][0]+v[1][0])/2,(v[0][1]+v[1][1])/2];if(u.scale(s.scale*m).translate([y[0]+(A[0]-y[0]),y[1]+(A[1]-y[1])]).clipExtent(v),e._isAlbersUsa){var M=u([c.lon,c.lat]),T=u.translate();u.translate([T[0]-(M[0]-T[0]),T[1]-(M[1]-T[1])])}},x.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,l=r.basePaths;function c(t){return\"lonaxis\"===t||\"lataxis\"===t}function u(t){return Boolean(g.lineLayers[t])}function f(t){return Boolean(g.fillLayers[t])}var h=(this.hasChoropleth?g.layersForChoropleth:g.layers).filter(function(t){return u(t)||f(t)?e[\"show\"+t]:!c(t)||e[t].showgrid}),p=r.framework.selectAll(\".layer\").data(h,String);p.exit().each(function(t){delete a[t],delete l[t],n.select(this).remove()}),p.enter().append(\"g\").attr(\"class\",function(t){return\"layer \"+t}).each(function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):c(t)?l[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):u(t)?l[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):f(t)&&(l[t]=e.append(\"path\").style(\"stroke\",\"none\"))}),p.order(),p.each(function(t){var r=l[t],a=g.layerNameToAdjective[t];\"frame\"===t?r.datum(g.sphereSVG):u(t)||f(t)?r.datum(m(i,i.objects[t])):c(t)&&r.datum(function(t,e){var r=e[t].dtick,i=g.scopeDefaults[e.scope],a=i.lonaxisRange,o=i.lataxisRange,s=\"lonaxis\"===t?[r]:[0,r];return n.geo.graticule().extent([[a[0],o[0]],[a[1],o[1]]]).step(s)}(t,e)).call(o.stroke,e[t].gridcolor).call(s.dashLine,\"\",e[t].gridwidth),u(t)?r.call(o.stroke,e[a+\"color\"]).call(s.dashLine,\"\",e[a+\"width\"]):f(t)&&r.call(o.fill,e[a+\"color\"])})},x.updateDims=function(t,e){var r=this.bounds,n=(e.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,l=r[1][0]-i+n,c=r[1][1]-a+n;s.setRect(this.clipRect,i,a,l,c),this.bgRect.call(s.setRect,i,a,l,c).call(o.fill,e.bgcolor),this.xaxis._offset=i,this.xaxis._length=l,this.yaxis._offset=a,this.yaxis._length=c},x.updateFx=function(t,e){var r=this,a=r.graphDiv,o=r.bgRect,s=t.dragmode,c=t.clickmode;if(!r.isStatic){var u;\"select\"===s?u=function(t,e){(t.range={})[r.id]=[v([e.xmin,e.ymin]),v([e.xmax,e.ymax])]}:\"lasso\"===s&&(u=function(t,e,n){(t.lassoPoints={})[r.id]=n.filtered.map(v)});var g={element:r.bgRect.node(),gd:a,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(e){2===e&&t._zoomlayer.selectAll(\".select-outline\").remove()}};\"pan\"===s?(o.node().onmousedown=null,o.call(d(r,e)),o.on(\"dblclick.zoom\",function(){var t=r.viewInitial,e={};for(var n in t)e[r.id+\".\"+n]=t[n];i.call(\"_guiRelayout\",a,e),a.emit(\"plotly_doubleclick\",null)}),a._context._scrollZoom.geo||o.on(\"wheel.zoom\",null)):\"select\"!==s&&\"lasso\"!==s||(o.on(\".zoom\",null),g.prepFn=function(t,e,r){h(t,e,r,g,s)},f.init(g)),o.on(\"mousemove\",function(){var t=r.projection.invert(n.mouse(this));if(!t||isNaN(t[0])||isNaN(t[1]))return f.unhover(a,n.event);r.xaxis.p2c=function(){return t[0]},r.yaxis.p2c=function(){return t[1]},l.hover(a,n.event,r.id)}),o.on(\"mouseout\",function(){a._dragging||f.unhover(a,n.event)}),o.on(\"click\",function(){\"select\"!==s&&\"lasso\"!==s&&(c.indexOf(\"select\")>-1&&p(n.event,a,[r.xaxis],[r.yaxis],r.id,g),c.indexOf(\"event\")>-1&&l.click(a,n.event))})}function v(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},x.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(s.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},u.setConvert(t.mockAxis,r)},x.saveViewInitial=function(t){var e=t.center||{},r=t.projection,n=r.rotation||{};t._isScoped?this.viewInitial={\"center.lon\":e.lon,\"center.lat\":e.lat,\"projection.scale\":r.scale}:t._isClipped?this.viewInitial={\"projection.scale\":r.scale,\"projection.rotation.lon\":n.lon,\"projection.rotation.lat\":n.lat}:this.viewInitial={\"center.lon\":e.lon,\"center.lat\":e.lat,\"projection.scale\":r.scale,\"projection.rotation.lon\":n.lon}},x.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?\"translate(\"+r[0]+\",\"+r[1]+\")\":null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",function(t){return r(t.geojson)});for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":571,\"../../components/dragelement\":589,\"../../components/drawing\":592,\"../../components/fx\":610,\"../../lib\":694,\"../../lib/topojson_utils\":721,\"../../registry\":825,\"../cartesian/axes\":742,\"../cartesian/select\":760,\"../plots\":806,\"./constants\":771,\"./projections\":777,\"./zoom\":778,d3:149,\"topojson-client\":518}],773:[function(t,e,r){\"use strict\";var n=t(\"./geo\"),i=t(\"../../plots/get_data\").getSubplotCalcData,a=t(\"../../lib\").counterRegex,o=\"geo\";r.name=o,r.attr=o,r.idRoot=o,r.idRegex=r.attrRegex=a(o),r.attributes=t(\"./layout/attributes\"),r.layoutAttributes=t(\"./layout/layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout/defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.geo;void 0===window.PlotlyGeoAssets&&(window.PlotlyGeoAssets={topojson:{}});for(var s=0;s<a.length;s++){var l=a[s],c=i(r,o,l),u=e[l]._subplot;u||(u=n({id:l,graphDiv:t,container:e._geolayer.node(),topojsonURL:t._context.topojsonURL,staticPlot:t._context.staticPlot}),e[l]._subplot=u),u.plot(c,e,t._promises)}},r.clean=function(t,e,r,n){for(var i=n._subplots.geo||[],a=0;a<i.length;a++){var o=i[a],s=n[o]._subplot;!e[o]&&s&&(s.framework.remove(),s.clipDef.remove())}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.geo,n=0;n<r.length;n++){var i=e[r[n]];i._subplot.updateFx(e,i)}}},{\"../../lib\":694,\"../../plots/get_data\":779,\"./geo\":772,\"./layout/attributes\":774,\"./layout/defaults\":775,\"./layout/layout_attributes\":776}],774:[function(t,e,r){\"use strict\";e.exports={geo:{valType:\"subplotid\",dflt:\"geo\",editType:\"calc\"}}},{}],775:[function(t,e,r){\"use strict\";var n=t(\"../../subplot_defaults\"),i=t(\"../constants\"),a=t(\"./layout_attributes\"),o=i.axesNames;function s(t,e,r){var n=r(\"resolution\"),a=r(\"scope\"),s=i.scopeDefaults[a],l=r(\"projection.type\",s.projType),c=e._isAlbersUsa=\"albers usa\"===l;c&&(a=e.scope=\"usa\");var u=e._isScoped=\"world\"!==a,f=e._isConic=-1!==l.indexOf(\"conic\");e._isClipped=!!i.lonaxisSpan[l];for(var h=0;h<o.length;h++){var p,d=o[h],g=[30,10][h];if(u)p=s[d+\"Range\"];else{var v=i[d+\"Span\"],m=(v[l]||v[\"*\"])/2,y=r(\"projection.rotation.\"+d.substr(0,3),s.projRotate[h]);p=[y-m,y+m]}var x=r(d+\".range\",p);r(d+\".tick0\",x[0]),r(d+\".dtick\",g),r(d+\".showgrid\")&&(r(d+\".gridcolor\"),r(d+\".gridwidth\"))}var b=e.lonaxis.range,_=e.lataxis.range,w=b[0],k=b[1];w>0&&k<0&&(k+=360);var A,M,T,S=(w+k)/2;if(!c){var C=u?s.projRotate:[S,0,0];A=r(\"projection.rotation.lon\",C[0]),r(\"projection.rotation.lat\",C[1]),r(\"projection.rotation.roll\",C[2]),r(\"showcoastlines\",!u)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\")&&r(\"oceancolor\")}(c?(M=-96.6,T=38.7):(M=u?S:A,T=(_[0]+_[1])/2),r(\"center.lon\",M),r(\"center.lat\",T),f)&&r(\"projection.parallels\",s.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\")&&r(\"landcolor\"),r(\"showlakes\")&&r(\"lakecolor\"),r(\"showrivers\")&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",u&&\"usa\"!==a)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===a||\"north america\"===a&&50===n)&&(r(\"showsubunits\",!0),r(\"subunitcolor\"),r(\"subunitwidth\")),u||r(\"showframe\",!0)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\")}e.exports=function(t,e,r){n(t,e,r,{type:\"geo\",attributes:a,handleDefaults:s,partition:\"y\"})}},{\"../../subplot_defaults\":820,\"../constants\":771,\"./layout_attributes\":776}],776:[function(t,e,r){\"use strict\";var n=t(\"../../../components/color/attributes\"),i=t(\"../../domain\").attributes,a=t(\"../constants\"),o=t(\"../../../plot_api/edit_types\").overrideAll,s={range:{valType:\"info_array\",items:[{valType:\"number\"},{valType:\"number\"}]},showgrid:{valType:\"boolean\",dflt:!1},tick0:{valType:\"number\"},dtick:{valType:\"number\"},gridcolor:{valType:\"color\",dflt:n.lightLine},gridwidth:{valType:\"number\",min:0,dflt:1}};(e.exports=o({domain:i({name:\"geo\"},{}),resolution:{valType:\"enumerated\",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:\"enumerated\",values:Object.keys(a.scopeDefaults),dflt:\"world\"},projection:{type:{valType:\"enumerated\",values:Object.keys(a.projNames)},rotation:{lon:{valType:\"number\"},lat:{valType:\"number\"},roll:{valType:\"number\"}},parallels:{valType:\"info_array\",items:[{valType:\"number\"},{valType:\"number\"}]},scale:{valType:\"number\",min:0,dflt:1}},center:{lon:{valType:\"number\"},lat:{valType:\"number\"}},showcoastlines:{valType:\"boolean\"},coastlinecolor:{valType:\"color\",dflt:n.defaultLine},coastlinewidth:{valType:\"number\",min:0,dflt:1},showland:{valType:\"boolean\",dflt:!1},landcolor:{valType:\"color\",dflt:a.landColor},showocean:{valType:\"boolean\",dflt:!1},oceancolor:{valType:\"color\",dflt:a.waterColor},showlakes:{valType:\"boolean\",dflt:!1},lakecolor:{valType:\"color\",dflt:a.waterColor},showrivers:{valType:\"boolean\",dflt:!1},rivercolor:{valType:\"color\",dflt:a.waterColor},riverwidth:{valType:\"number\",min:0,dflt:1},showcountries:{valType:\"boolean\"},countrycolor:{valType:\"color\",dflt:n.defaultLine},countrywidth:{valType:\"number\",min:0,dflt:1},showsubunits:{valType:\"boolean\"},subunitcolor:{valType:\"color\",dflt:n.defaultLine},subunitwidth:{valType:\"number\",min:0,dflt:1},showframe:{valType:\"boolean\"},framecolor:{valType:\"color\",dflt:n.defaultLine},framewidth:{valType:\"number\",min:0,dflt:1},bgcolor:{valType:\"color\",dflt:n.background},lonaxis:s,lataxis:s},\"plot\",\"from-root\")).uirevision={valType:\"any\",editType:\"none\"}},{\"../../../components/color/attributes\":570,\"../../../plot_api/edit_types\":725,\"../../domain\":768,\"../constants\":771}],777:[function(t,e,r){\"use strict\";e.exports=function(t){function e(t,e){return{type:\"Feature\",id:t.id,properties:t.properties,geometry:r(t.geometry,e)}}function r(e,n){if(!e)return null;if(\"GeometryCollection\"===e.type)return{type:\"GeometryCollection\",geometries:object.geometries.map(function(t){return r(t,n)})};if(!c.hasOwnProperty(e.type))return null;var i=c[e.type];return t.geo.stream(e,n(i)),i.result()}t.geo.project=function(t,e){var i=e.stream;if(!i)throw new Error(\"not yet supported\");return(t&&n.hasOwnProperty(t.type)?n[t.type]:r)(t,i)};var n={Feature:e,FeatureCollection:function(t,r){return{type:\"FeatureCollection\",features:t.features.map(function(t){return e(t,r)})}}},i=[],a=[],o={point:function(t,e){i.push([t,e])},result:function(){var t=i.length?i.length<2?{type:\"Point\",coordinates:i[0]}:{type:\"MultiPoint\",coordinates:i}:null;return i=[],t}},s={lineStart:u,point:function(t,e){i.push([t,e])},lineEnd:function(){i.length&&(a.push(i),i=[])},result:function(){var t=a.length?a.length<2?{type:\"LineString\",coordinates:a[0]}:{type:\"MultiLineString\",coordinates:a}:null;return a=[],t}},l={polygonStart:u,lineStart:u,point:function(t,e){i.push([t,e])},lineEnd:function(){var t=i.length;if(t){do{i.push(i[0].slice())}while(++t<4);a.push(i),i=[]}},polygonEnd:u,result:function(){if(!a.length)return null;var t=[],e=[];return a.forEach(function(r){!function(t){if((e=t.length)<4)return!1;for(var e,r=0,n=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++r<e;)n+=t[r-1][1]*t[r][0]-t[r-1][0]*t[r][1];return n<=0}(r)?e.push(r):t.push([r])}),e.forEach(function(e){var r=e[0];t.some(function(t){if(function(t,e){for(var r=e[0],n=e[1],i=!1,a=0,o=t.length,s=o-1;a<o;s=a++){var l=t[a],c=l[0],u=l[1],f=t[s],h=f[0],p=f[1];u>n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0})||t.push([e])}),a=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}},c={Point:o,MultiPoint:o,LineString:s,MultiLineString:s,Polygon:l,MultiPolygon:l,Sphere:l};function u(){}var f=1e-6,h=f*f,p=Math.PI,d=p/2,g=(Math.sqrt(p),p/180),v=180/p;function m(t){return t>1?d:t<-1?-d:Math.asin(t)}function y(t){return t>1?0:t<-1?p:Math.acos(t)}var x=t.geo.projection,b=t.geo.projectionMutator;function _(t,e){var r=(2+d)*Math.sin(e);e/=2;for(var n=0,i=1/0;n<10&&Math.abs(i)>f;n++){var a=Math.cos(e);e-=i=(e+Math.sin(e)*(a+2)-r)/(2*a*(1+a))}return[2/Math.sqrt(p*(4+p))*t*(1+Math.cos(e)),2*Math.sqrt(p/(4+p))*Math.sin(e)]}t.geo.interrupt=function(e){var r,n=[[[[-p,0],[0,d],[p,0]]],[[[-p,0],[0,-d],[p,0]]]];function i(t,r){for(var i=r<0?-1:1,a=n[+(r<0)],o=0,s=a.length-1;o<s&&t>a[o][2][0];++o);var l=e(t-a[o][1][0],r);return l[0]+=e(a[o][1][0],i*r>i*a[o][0][1]?a[o][0][1]:r)[0],l}e.invert&&(i.invert=function(t,a){for(var o=r[+(a<0)],s=n[+(a<0)],c=0,u=o.length;c<u;++c){var f=o[c];if(f[0][0]<=t&&t<f[1][0]&&f[0][1]<=a&&a<f[1][1]){var h=e.invert(t-e(s[c][1][0],0)[0],a);return h[0]+=s[c][1][0],l(i(h[0],h[1]),[t,a])?h:null}}});var a=t.geo.projection(i),o=a.stream;function s(t,e){for(var r,n,i,a=-1,o=t.length,s=t[0],l=[];++a<o;){n=((r=t[a])[0]-s[0])/e,i=(r[1]-s[1])/e;for(var c=0;c<e;++c)l.push([s[0]+c*n,s[1]+c*i]);s=r}return l.push(r),l}function l(t,e){return Math.abs(t[0]-e[0])<f&&Math.abs(t[1]-e[1])<f}return a.stream=function(e){var r=a.rotate(),i=o(e),l=(a.rotate([0,0]),o(e));return a.rotate(r),i.sphere=function(){t.geo.stream(function(){for(var e=1e-6,r=[],i=0,a=n[0].length;i<a;++i){var o=n[0][i],l=180*o[0][0]/p,c=180*o[0][1]/p,u=180*o[1][1]/p,f=180*o[2][0]/p,h=180*o[2][1]/p;r.push(s([[l+e,c+e],[l+e,u-e],[f-e,u-e],[f-e,h+e]],30))}for(var i=n[1].length-1;i>=0;--i){var o=n[1][i],l=180*o[0][0]/p,c=180*o[0][1]/p,u=180*o[1][1]/p,f=180*o[2][0]/p,h=180*o[2][1]/p;r.push(s([[f-e,h-e],[f-e,u+e],[l+e,u+e],[l+e,c-e]],30))}return{type:\"Polygon\",coordinates:[t.merge(r)]}}(),l)},i},a.lobes=function(t){return arguments.length?(n=t.map(function(t){return t.map(function(t){return[[t[0][0]*p/180,t[0][1]*p/180],[t[1][0]*p/180,t[1][1]*p/180],[t[2][0]*p/180,t[2][1]*p/180]]})}),r=n.map(function(t){return t.map(function(t){var r,n=e(t[0][0],t[0][1])[0],i=e(t[2][0],t[2][1])[0],a=e(t[1][0],t[0][1])[1],o=e(t[1][0],t[1][1])[1];return a>o&&(r=a,a=o,o=r),[[n,a],[i,o]]})}),a):n.map(function(t){return t.map(function(t){return[[180*t[0][0]/p,180*t[0][1]/p],[180*t[1][0]/p,180*t[1][1]/p],[180*t[2][0]/p,180*t[2][1]/p]]})})},a},_.invert=function(t,e){var r=.5*e*Math.sqrt((4+p)/p),n=m(r),i=Math.cos(n);return[t/(2/Math.sqrt(p*(4+p))*(1+i)),m((n+r*(i+2))/(2+d))]},(t.geo.eckert4=function(){return x(_)}).raw=_;var w=t.geo.azimuthalEqualArea.raw;function k(t,e){if(arguments.length<2&&(e=t),1===e)return w;if(e===1/0)return A;function r(r,n){var i=w(r/e,n);return i[0]*=t,i}return r.invert=function(r,n){var i=w.invert(r/t,n);return i[0]*=e,i},r}function A(t,e){return[t*Math.cos(e)/Math.cos(e/=2),2*Math.sin(e)]}function M(t,e){return[3*t/(2*p)*Math.sqrt(p*p/3-e*e),e]}function T(t,e){return[t,1.25*Math.log(Math.tan(p/4+.4*e))]}function S(t){return function(e){var r,n=t*Math.sin(e),i=30;do{e-=r=(e+Math.sin(e)-n)/(1+Math.cos(e))}while(Math.abs(r)>f&&--i>0);return e/2}}A.invert=function(t,e){var r=2*m(e/2);return[t*Math.cos(r/2)/Math.cos(r),r]},(t.geo.hammer=function(){var t=2,e=b(k),r=e(t);return r.coefficient=function(r){return arguments.length?e(t=+r):t},r}).raw=k,M.invert=function(t,e){return[2/3*p*t/Math.sqrt(p*p/3-e*e),e]},(t.geo.kavrayskiy7=function(){return x(M)}).raw=M,T.invert=function(t,e){return[t,2.5*Math.atan(Math.exp(.8*e))-.625*p]},(t.geo.miller=function(){return x(T)}).raw=T,S(p);var C=function(t,e,r){var n=S(r);function i(r,i){return[t*r*Math.cos(i=n(i)),e*Math.sin(i)]}return i.invert=function(n,i){var a=m(i/e);return[n/(t*Math.cos(a)),m((2*a+Math.sin(2*a))/r)]},i}(Math.SQRT2/d,Math.SQRT2,p);function E(t,e){var r=e*e,n=r*r;return[t*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791)),e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))]}(t.geo.mollweide=function(){return x(C)}).raw=C,E.invert=function(t,e){var r,n=e,i=25;do{var a=n*n,o=a*a;n-=r=(n*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(Math.abs(r)>f&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},(t.geo.naturalEarth=function(){return x(E)}).raw=E;var L=[[.9986,-.062],[1,0],[.9986,.062],[.9954,.124],[.99,.186],[.9822,.248],[.973,.31],[.96,.372],[.9427,.434],[.9216,.4958],[.8962,.5571],[.8679,.6176],[.835,.6769],[.7986,.7346],[.7597,.7903],[.7186,.8435],[.6732,.8936],[.6213,.9394],[.5722,.9761],[.5322,1]];function z(t,e){var r,n=Math.min(18,36*Math.abs(e)/p),i=Math.floor(n),a=n-i,o=(r=L[i])[0],s=r[1],l=(r=L[++i])[0],c=r[1],u=(r=L[Math.min(19,++i)])[0],f=r[1];return[t*(l+a*(u-o)/2+a*a*(u-2*l+o)/2),(e>0?d:-d)*(c+a*(f-s)/2+a*a*(f-2*c+s)/2)]}function O(t,e){return[t*Math.cos(e),e]}function I(t,e){var r,n=Math.cos(e),i=(r=y(n*Math.cos(t/=2)))?r/Math.sin(r):1;return[2*n*Math.sin(t)*i,Math.sin(e)*i]}function D(t,e){var r=I(t,e);return[(r[0]+t/d)/2,(r[1]+e)/2]}L.forEach(function(t){t[1]*=1.0144}),z.invert=function(t,e){var r=e/d,n=90*r,i=Math.min(18,Math.abs(n/5)),a=Math.max(0,Math.floor(i));do{var o=L[a][1],s=L[a+1][1],l=L[Math.min(19,a+2)][1],c=l-o,u=l-2*s+o,f=2*(Math.abs(r)-s)/c,p=u/c,m=f*(1-p*f*(1-2*p*f));if(m>=0||1===a){n=(e>=0?5:-5)*(m+i);var y,x=50;do{m=(i=Math.min(18,Math.abs(n)/5))-(a=Math.floor(i)),o=L[a][1],s=L[a+1][1],l=L[Math.min(19,a+2)][1],n-=(y=(e>=0?d:-d)*(s+m*(l-o)/2+m*m*(l-2*s+o)/2)-e)*v}while(Math.abs(y)>h&&--x>0);break}}while(--a>=0);var b=L[a][0],_=L[a+1][0],w=L[Math.min(19,a+2)][0];return[t/(_+m*(w-b)/2+m*m*(w-2*_+b)/2),n*g]},(t.geo.robinson=function(){return x(z)}).raw=z,O.invert=function(t,e){return[t/Math.cos(e),e]},(t.geo.sinusoidal=function(){return x(O)}).raw=O,I.invert=function(t,e){if(!(t*t+4*e*e>p*p+f)){var r=t,n=e,i=25;do{var a,o=Math.sin(r),s=Math.sin(r/2),l=Math.cos(r/2),c=Math.sin(n),u=Math.cos(n),h=Math.sin(2*n),d=c*c,g=u*u,v=s*s,m=1-g*l*l,x=m?y(u*l)*Math.sqrt(a=1/m):a=0,b=2*x*u*s-t,_=x*c-e,w=a*(g*v+x*u*l*d),k=a*(.5*o*h-2*x*c*s),A=.25*a*(h*s-x*c*g*o),M=a*(d*l+x*v*u),T=k*A-M*w;if(!T)break;var S=(_*k-b*M)/T,C=(b*A-_*w)/T;r-=S,n-=C}while((Math.abs(S)>f||Math.abs(C)>f)&&--i>0);return[r,n]}},(t.geo.aitoff=function(){return x(I)}).raw=I,D.invert=function(t,e){var r=t,n=e,i=25;do{var a,o=Math.cos(n),s=Math.sin(n),l=Math.sin(2*n),c=s*s,u=o*o,h=Math.sin(r),p=Math.cos(r/2),g=Math.sin(r/2),v=g*g,m=1-u*p*p,x=m?y(o*p)*Math.sqrt(a=1/m):a=0,b=.5*(2*x*o*g+r/d)-t,_=.5*(x*s+n)-e,w=.5*a*(u*v+x*o*p*c)+.5/d,k=a*(h*l/4-x*s*g),A=.125*a*(l*g-x*s*u*h),M=.5*a*(c*p+x*v*o)+.5,T=k*A-M*w,S=(_*k-b*M)/T,C=(b*A-_*w)/T;r-=S,n-=C}while((Math.abs(S)>f||Math.abs(C)>f)&&--i>0);return[r,n]},(t.geo.winkel3=function(){return x(D)}).raw=D}},{}],778:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",function(){n.select(this).style(l)}).on(\"zoom\",function(){e.scale(n.event.scale).translate(n.event.translate),t.render()}).on(\"zoomend\",function(){n.select(this).style(c),f(t,e,i)}),r}function p(t,e){var r,i,a,o,s,h,p,d,g,v=u(0,e),m=2;function y(t){return e.invert(t)}function x(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return v.on(\"zoomstart\",function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=y(r)}).on(\"zoom\",function(){if(h=n.mouse(this),function(t){var r=y(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>m||Math.abs(n[1]-t[1])>m}(r))return v.scale(e.scale()),void v.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?y(h)&&(d=y(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=y(r=h),g=!0,t.render()}).on(\"zoomend\",function(){n.select(this).style(c),g&&f(t,e,x)}),v}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),h=function(t){var e=0,r=arguments.length,i=[];for(;++e<r;)i.push(arguments[e]);var a=n.dispatch.apply(null,i);return a.of=function(e,r){return function(i){var o;try{o=i.sourceEvent=n.event,i.target=t,n.event=i,a[i.type].apply(e,r)}finally{n.event=o}}},a}(a,\"zoomstart\",\"zoom\",\"zoomend\"),p=0,d=a.on;function m(t){var r=e.rotate();t(\"projection.rotation.lon\",-r[0]),t(\"projection.rotation.lat\",-r[1])}return a.on(\"zoomstart\",function(){n.select(this).style(l);var t,c,u,f,m,b,_,w,k,A,M,T=n.mouse(this),S=e.rotate(),C=S,E=e.translate(),L=(c=.5*(t=S)[0]*o,u=.5*t[1]*o,f=.5*t[2]*o,m=Math.sin(c),b=Math.cos(c),_=Math.sin(u),w=Math.cos(u),k=Math.sin(f),A=Math.cos(f),[b*w*A+m*_*k,m*w*A-b*_*k,b*_*A+m*w*k,b*w*k-m*_*A]);r=g(e,T),d.call(a,\"zoom\",function(){var t,a,o,l,c,u,f,p,d,m,b=n.mouse(this);if(e.scale(i.k=n.event.scale),r){if(g(e,b)){e.rotate(S).translate(E);var _=g(e,b),w=function(t,e){if(!t||!e)return;var r=function(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}(t,e),n=Math.sqrt(x(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,x(t,e)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}(r,_),k=function(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}((a=w,o=(t=L)[0],l=t[1],c=t[2],u=t[3],f=a[0],p=a[1],d=a[2],m=a[3],[o*f-l*p-c*d-u*m,o*p+l*f+c*m-u*d,o*d-l*m+c*f+u*p,o*m+l*d-c*p+u*f])),A=i.r=function(t,e,r){var n=y(e,2,t[0]);n=y(n,1,t[1]),n=y(n,0,t[2]-r[2]);var i,a,o=e[0],l=e[1],c=e[2],u=n[0],f=n[1],h=n[2],p=Math.atan2(l,o)*s,d=Math.sqrt(o*o+l*l);Math.abs(f)>d?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,x=(Math.atan2(h,u)-Math.atan2(c,-i))*s,b=v(r[0],r[1],a,m),_=v(r[0],r[1],g,x);return b<=_?[a,m,r[2]]:[g,x,r[2]]}(k,r,C);isFinite(A[0])&&isFinite(A[1])&&isFinite(A[2])||(A=C),e.rotate(A),C=A}}else r=g(e,T=b);h.of(this,arguments)({type:\"zoom\"})}),M=h.of(this,arguments),p++||M({type:\"zoomstart\"})}).on(\"zoomend\",function(){var r;n.select(this).style(c),d.call(a,\"zoom\",null),r=h.of(this,arguments),--p||r({type:\"zoomend\"}),f(t,e,m)}).on(\"zoom.redraw\",function(){t.render()}),n.rebind(a,h,\"on\")}function g(t,e){var r=t.invert(e);return r&&isFinite(r[0])&&isFinite(r[1])&&function(t){var e=t[0]*o,r=t[1]*o,n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}(r)}function v(t,e,r,n){var i=m(r-t),a=m(n-e);return Math.sqrt(i*i+a*a)}function m(t){return(t%360+540)%360-180}function y(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function x(t,e){for(var r=0,n=0,i=t.length;n<i;++n)r+=t[n]*e[n];return r}e.exports=function(t,e){var r=t.projection;return(e._isScoped?h:e._isClipped?d:p)(t,r)}},{\"../../lib\":694,\"../../registry\":825,d3:149}],779:[function(t,e,r){\"use strict\";var n=t(\"../registry\"),i=t(\"./cartesian/constants\").SUBPLOT_PATTERN;r.getSubplotCalcData=function(t,e,r){var i=n.subplotsRegistry[e];if(!i)return[];for(var a=i.attr,o=[],s=0;s<t.length;s++){var l=t[s];l[0].trace[a]===r&&o.push(l)}return o},r.getModuleCalcData=function(t,e){var r,i=[],a=[];if(!(r=\"string\"==typeof e?n.getModule(e).plot:\"function\"==typeof e?e:e.plot))return[i,t];for(var o=0;o<t.length;o++){var s=t[o],l=s[0].trace;!0===l.visible&&(l._module.plot===r?i.push(s):a.push(s))}return[i,a]},r.getSubplotData=function(t,e,r){if(!n.subplotsRegistry[e])return[];var a,o,s,l=n.subplotsRegistry[e].attr,c=[];if(\"gl2d\"===e){var u=r.match(i);o=\"x\"+u[1],s=\"y\"+u[2]}for(var f=0;f<t.length;f++)a=t[f],\"gl2d\"===e&&n.traceIs(a,\"gl2d\")?a[l[0]]===o&&a[l[1]]===s&&c.push(a):a[l]===r&&c.push(a);return c}},{\"../registry\":825,\"./cartesian/constants\":748}],780:[function(t,e,r){\"use strict\";var n=t(\"mouse-change\"),i=t(\"mouse-wheel\"),a=t(\"mouse-event-offset\"),o=t(\"../cartesian/constants\"),s=t(\"has-passive-events\");function l(t,e){this.element=t,this.plot=e,this.mouseListener=null,this.wheelListener=null,this.lastInputTime=Date.now(),this.lastPos=[0,0],this.boxEnabled=!1,this.boxInited=!1,this.boxStart=[0,0],this.boxEnd=[0,0],this.dragStart=[0,0]}e.exports=function(t){var e=t.mouseContainer,r=t.glplot,c=new l(e,r);function u(){t.xaxis.autorange=!1,t.yaxis.autorange=!1}function f(e,n,i){var a,s,l=t.calcDataBox(),f=r.viewBox,h=c.lastPos[0],p=c.lastPos[1],d=o.MINDRAG*r.pixelRatio,g=o.MINZOOM*r.pixelRatio;function v(e,r,n){var i=Math.min(r,n),a=Math.max(r,n);i!==a?(l[e]=i,l[e+2]=a,c.dataBox=l,t.setRanges(l)):(t.selectBox.selectBox=[0,0,1,1],t.glplot.setDirty())}switch(n*=r.pixelRatio,i*=r.pixelRatio,i=f[3]-f[1]-i,t.fullLayout.dragmode){case\"zoom\":if(e){var m=n/(f[2]-f[0])*(l[2]-l[0])+l[0],y=i/(f[3]-f[1])*(l[3]-l[1])+l[1];c.boxInited||(c.boxStart[0]=m,c.boxStart[1]=y,c.dragStart[0]=n,c.dragStart[1]=i),c.boxEnd[0]=m,c.boxEnd[1]=y,c.boxInited=!0,c.boxEnabled||c.boxStart[0]===c.boxEnd[0]&&c.boxStart[1]===c.boxEnd[1]||(c.boxEnabled=!0);var x=Math.abs(c.dragStart[0]-n)<g,b=Math.abs(c.dragStart[1]-i)<g;if(!function(){for(var e=t.graphDiv._fullLayout._axisConstraintGroups,r=t.xaxis._id,n=t.yaxis._id,i=0;i<e.length;i++)if(-1!==e[i][r]){if(-1!==e[i][n])return!0;break}return!1}()||x&&b)x&&(c.boxEnd[0]=c.boxStart[0]),b&&(c.boxEnd[1]=c.boxStart[1]);else{a=c.boxEnd[0]-c.boxStart[0],s=c.boxEnd[1]-c.boxStart[1];var _=(l[3]-l[1])/(l[2]-l[0]);Math.abs(a*_)>Math.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]<l[1]?(c.boxEnd[1]=l[1],c.boxEnd[0]=c.boxStart[0]+(l[1]-c.boxStart[1])/Math.abs(_)):c.boxEnd[1]>l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]<l[0]?(c.boxEnd[0]=l[0],c.boxEnd[1]=c.boxStart[1]+(l[0]-c.boxStart[0])*Math.abs(_)):c.boxEnd[0]>l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(v(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(v(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n)<d&&(n=c.dragStart[0]),Math.abs(c.dragStart[1]-i)<d&&(i=c.dragStart[1]),a=(h-n)*(l[2]-l[0])/(r.viewBox[2]-r.viewBox[0]),s=(p-i)*(l[3]-l[1])/(r.viewBox[3]-r.viewBox[1]),l[0]+=a,l[2]+=a,l[1]+=s,l[3]+=s,t.setRanges(l),c.panning=!0,c.lastInputTime=Date.now(),u(),t.cameraChanged(),t.handleAnnotations()):c.panning&&(c.panning=!1,t.relayoutCallback())}c.lastPos[0]=n,c.lastPos[1]=i}return c.mouseListener=n(e,f),e.addEventListener(\"touchstart\",function(t){var r=a(t.changedTouches[0],e);f(0,r[0],r[1]),f(1,r[0],r[1]),t.preventDefault()},!!s&&{passive:!1}),e.addEventListener(\"touchmove\",function(t){t.preventDefault();var r=a(t.changedTouches[0],e);f(1,r[0],r[1]),t.preventDefault()},!!s&&{passive:!1}),e.addEventListener(\"touchend\",function(t){f(0,c.lastPos[0],c.lastPos[1]),t.preventDefault()},!!s&&{passive:!1}),c.wheelListener=i(e,function(e,n){if(!t.scrollZoom)return!1;var i=t.calcDataBox(),a=r.viewBox,o=c.lastPos[0],s=c.lastPos[1],l=Math.exp(5*n/(a[3]-a[1])),f=o/(a[2]-a[0])*(i[2]-i[0])+i[0],h=s/(a[3]-a[1])*(i[3]-i[1])+i[1];return i[0]=(i[0]-f)*l+f,i[2]=(i[2]-f)*l+f,i[1]=(i[1]-h)*l+h,i[3]=(i[3]-h)*l+h,t.setRanges(i),c.lastInputTime=Date.now(),u(),t.cameraChanged(),t.handleAnnotations(),t.relayoutCallback(),!0},!0),c}},{\"../cartesian/constants\":748,\"has-passive-events\":397,\"mouse-change\":421,\"mouse-event-offset\":422,\"mouse-wheel\":424}],781:[function(t,e,r){\"use strict\";var n=t(\"../cartesian/axes\"),i=t(\"../../lib/str2rgbarray\");function a(t){this.scene=t,this.gl=t.gl,this.pixelRatio=t.pixelRatio,this.screenBox=[0,0,1,1],this.viewBox=[0,0,1,1],this.dataBox=[-1,-1,1,1],this.borderLineEnable=[!1,!1,!1,!1],this.borderLineWidth=[1,1,1,1],this.borderLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.ticks=[[],[]],this.tickEnable=[!0,!0,!1,!1],this.tickPad=[15,15,15,15],this.tickAngle=[0,0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickMarkLength=[0,0,0,0],this.tickMarkWidth=[0,0,0,0],this.tickMarkColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labels=[\"x\",\"y\"],this.labelEnable=[!0,!0,!1,!1],this.labelAngle=[0,Math.PI/2,0,3*Math.PI/2],this.labelPad=[15,15,15,15],this.labelSize=[12,12],this.labelFont=[\"sans-serif\",\"sans-serif\"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.title=\"\",this.titleEnable=!0,this.titleCenter=[0,0,0,0],this.titleAngle=0,this.titleColor=[0,0,0,1],this.titleFont=\"sans-serif\",this.titleSize=18,this.gridLineEnable=[!0,!0],this.gridLineColor=[[0,0,0,.5],[0,0,0,.5]],this.gridLineWidth=[1,1],this.zeroLineEnable=[!0,!0],this.zeroLineWidth=[1,1],this.zeroLineColor=[[0,0,0,1],[0,0,0,1]],this.borderColor=!1,this.backgroundColor=[0,0,0,0],this.static=this.scene.staticPlot}var o=a.prototype,s=[\"xaxis\",\"yaxis\"];o.merge=function(t){var e,r,n,a,o,l,c,u,f,h,p;for(this.titleEnable=!1,this.backgroundColor=i(t.plot_bgcolor),h=0;h<2;++h){var d=(e=s[h]).charAt(0);for(n=(r=t[this.scene[e]._name]).title.text===this.scene.fullLayout._dfltTitle[d]?\"\":r.title.text,p=0;p<=2;p+=2)this.labelEnable[h+p]=!1,this.labels[h+p]=n,this.labelColor[h+p]=i(r.title.font.color),this.labelFont[h+p]=r.title.font.family,this.labelSize[h+p]=r.title.font.size,this.labelPad[h+p]=this.getLabelPad(e,r),this.tickEnable[h+p]=!1,this.tickColor[h+p]=i((r.tickfont||{}).color),this.tickAngle[h+p]=\"auto\"===r.tickangle?0:Math.PI*-r.tickangle/180,this.tickPad[h+p]=this.getTickPad(r),this.tickMarkLength[h+p]=0,this.tickMarkWidth[h+p]=r.tickwidth||0,this.tickMarkColor[h+p]=i(r.tickcolor),this.borderLineEnable[h+p]=!1,this.borderLineColor[h+p]=i(r.linecolor),this.borderLineWidth[h+p]=r.linewidth||0;c=this.hasSharedAxis(r),o=this.hasAxisInDfltPos(e,r)&&!c,l=this.hasAxisInAltrPos(e,r)&&!c,a=r.mirror||!1,u=c?-1!==String(a).indexOf(\"all\"):!!a,f=c?\"allticks\"===a:-1!==String(a).indexOf(\"ticks\"),o?this.labelEnable[h]=!0:l&&(this.labelEnable[h+2]=!0),o?this.tickEnable[h]=r.showticklabels:l&&(this.tickEnable[h+2]=r.showticklabels),(o||u)&&(this.borderLineEnable[h]=r.showline),(l||u)&&(this.borderLineEnable[h+2]=r.showline),(o||f)&&(this.tickMarkLength[h]=this.getTickMarkLength(r)),(l||f)&&(this.tickMarkLength[h+2]=this.getTickMarkLength(r)),this.gridLineEnable[h]=r.showgrid,this.gridLineColor[h]=i(r.gridcolor),this.gridLineWidth[h]=r.gridwidth,this.zeroLineEnable[h]=r.zeroline,this.zeroLineColor[h]=i(r.zerolinecolor),this.zeroLineWidth[h]=r.zerolinewidth}},o.hasSharedAxis=function(t){var e=this.scene,r=e.fullLayout._subplots.gl2d;return 0!==n.findSubplotsWithAxis(r,t).indexOf(e.id)},o.hasAxisInDfltPos=function(t,e){var r=e.side;return\"xaxis\"===t?\"bottom\"===r:\"yaxis\"===t?\"left\"===r:void 0},o.hasAxisInAltrPos=function(t,e){var r=e.side;return\"xaxis\"===t?\"top\"===r:\"yaxis\"===t?\"right\"===r:void 0},o.getLabelPad=function(t,e){var r=e.title.font.size,n=e.showticklabels;return\"xaxis\"===t?\"top\"===e.side?r*(1.5+(n?1:0))-10:r*(1.5+(n?.5:0))-10:\"yaxis\"===t?\"right\"===e.side?10+r*(1.5+(n?1:.5)):10+r*(1.5+(n?.5:0)):void 0},o.getTickPad=function(t){return\"outside\"===t.ticks?10+t.ticklen:15},o.getTickMarkLength=function(t){if(!t.ticks)return 0;var e=t.ticklen;return\"inside\"===t.ticks?-e:e},e.exports=function(t){return new a(t)}},{\"../../lib/str2rgbarray\":717,\"../cartesian/axes\":742}],782:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"./scene2d\"),a=t(\"../layout_attributes\"),o=t(\"../../constants/xmlns_namespaces\"),s=t(\"../cartesian/constants\"),l=t(\"../cartesian\"),c=t(\"../../components/fx/layout_attributes\"),u=t(\"../get_data\").getSubplotData;r.name=\"gl2d\",r.attr=[\"xaxis\",\"yaxis\"],r.idRoot=[\"x\",\"y\"],r.idRegex=s.idRegex,r.attrRegex=s.attrRegex,r.attributes=t(\"../cartesian/attributes\"),r.supplyLayoutDefaults=function(t,e,r){e._has(\"cartesian\")||l.supplyLayoutDefaults(t,e,r)},r.layoutAttrOverrides=n(l.layoutAttributes,\"plot\",\"from-root\"),r.baseLayoutAttrOverrides=n({plot_bgcolor:a.plot_bgcolor,hoverlabel:c.hoverlabel},\"plot\",\"nested\"),r.plot=function(t){for(var e=t._fullLayout,r=t._fullData,n=e._subplots.gl2d,a=0;a<n.length;a++){var o=n[a],s=e._plots[o],l=u(r,\"gl2d\",o),c=s._scene2d;void 0===c&&(c=new i({id:o,graphDiv:t,container:t.querySelector(\".gl-container\"),staticPlot:t._context.staticPlot,plotGlPixelRatio:t._context.plotGlPixelRatio},e),s._scene2d=c),c.plot(l,t.calcdata,e,t.layout)}},r.clean=function(t,e,r,n){for(var i=n._subplots.gl2d||[],a=0;a<i.length;a++){var o=i[a],s=n._plots[o];if(s._scene2d)0===u(t,\"gl2d\",o).length&&(s._scene2d.destroy(),delete n._plots[o])}l.clean.apply(this,arguments)},r.drawFramework=function(t){t._context.staticPlot||l.drawFramework(t)},r.toSVG=function(t){for(var e=t._fullLayout,r=e._subplots.gl2d,n=0;n<r.length;n++){var i=e._plots[r[n]]._scene2d,a=i.toImage(\"png\");e._glimages.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":a,x:0,y:0,width:\"100%\",height:\"100%\",preserveAspectRatio:\"none\"}),i.destroy()}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.gl2d,n=0;n<r.length;n++){e._plots[r[n]]._scene2d.updateFx(e.dragmode)}}},{\"../../components/fx/layout_attributes\":611,\"../../constants/xmlns_namespaces\":672,\"../../plot_api/edit_types\":725,\"../cartesian\":754,\"../cartesian/attributes\":740,\"../cartesian/constants\":748,\"../get_data\":779,\"../layout_attributes\":797,\"./scene2d\":783}],783:[function(t,e,r){\"use strict\";var n,i,a=t(\"../../registry\"),o=t(\"../../plots/cartesian/axes\"),s=t(\"../../components/fx\"),l=t(\"gl-plot2d\"),c=t(\"gl-spikes2d\"),u=t(\"gl-select-box\"),f=t(\"webgl-context\"),h=t(\"./convert\"),p=t(\"./camera\"),d=t(\"../../lib/show_no_webgl_msg\"),g=t(\"../cartesian/constraints\"),v=g.enforce,m=g.clean,y=t(\"../cartesian/autorange\").doAutoRange,x=[\"xaxis\",\"yaxis\"],b=t(\"../cartesian/constants\").SUBPLOT_PATTERN;function _(t,e){this.container=t.container,this.graphDiv=t.graphDiv,this.pixelRatio=t.plotGlPixelRatio||window.devicePixelRatio,this.id=t.id,this.staticPlot=!!t.staticPlot,this.scrollZoom=this.graphDiv._context._scrollZoom.cartesian,this.fullData=null,this.updateRefs(e),this.makeFramework(),this.stopped||(this.glplotOptions=h(this),this.glplotOptions.merge(e),this.glplot=l(this.glplotOptions),this.camera=p(this),this.traces={},this.spikes=c(this.glplot),this.selectBox=u(this.glplot,{innerFill:!1,outerFill:!0}),this.lastButtonState=0,this.pickResult=null,this.isMouseOver=!0,this.stopped=!1,this.redraw=this.draw.bind(this),this.redraw())}e.exports=_;var w=_.prototype;w.makeFramework=function(){if(this.staticPlot){if(!(i||(n=document.createElement(\"canvas\"),i=f({canvas:n,preserveDrawingBuffer:!1,premultipliedAlpha:!0,antialias:!0}))))throw new Error(\"Error creating static canvas/context for image server\");this.canvas=n,this.gl=i}else{var t=this.container.querySelector(\".gl-canvas-focus\"),e=f({canvas:t,preserveDrawingBuffer:!0,premultipliedAlpha:!0});if(!e)return d(this),void(this.stopped=!0);this.canvas=t,this.gl=e}var r=this.canvas;r.style.width=\"100%\",r.style.height=\"100%\",r.style.position=\"absolute\",r.style.top=\"0px\",r.style.left=\"0px\",r.style[\"pointer-events\"]=\"none\",this.updateSize(r),r.className+=\" user-select-none\";var a=this.svgContainer=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");a.style.position=\"absolute\",a.style.top=a.style.left=\"0px\",a.style.width=a.style.height=\"100%\",a.style[\"z-index\"]=20,a.style[\"pointer-events\"]=\"none\";var o=this.mouseContainer=document.createElement(\"div\");o.style.position=\"absolute\",o.style[\"pointer-events\"]=\"auto\",this.pickCanvas=this.container.querySelector(\".gl-canvas-pick\");var s=this.container;s.appendChild(a),s.appendChild(o);var l=this;o.addEventListener(\"mouseout\",function(){l.isMouseOver=!1,l.unhover()}),o.addEventListener(\"mouseover\",function(){l.isMouseOver=!0})},w.toImage=function(t){t||(t=\"png\"),this.stopped=!0,this.staticPlot&&this.container.appendChild(n),this.updateSize(this.canvas);var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.clearColor(1,1,1,0),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),this.glplot.setDirty(),this.glplot.draw(),e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a);for(var o=0,s=i-1;o<s;++o,--s)for(var l=0;l<r;++l)for(var c=0;c<4;++c){var u=a[4*(r*o+l)+c];a[4*(r*o+l)+c]=a[4*(r*s+l)+c],a[4*(r*s+l)+c]=u}var f=document.createElement(\"canvas\");f.width=r,f.height=i;var h,p=f.getContext(\"2d\"),d=p.createImageData(r,i);switch(d.data.set(a),p.putImageData(d,0,0),t){case\"jpeg\":h=f.toDataURL(\"image/jpeg\");break;case\"webp\":h=f.toDataURL(\"image/webp\");break;default:h=f.toDataURL(\"image/png\")}return this.staticPlot&&this.container.removeChild(n),h},w.updateSize=function(t){t||(t=this.canvas);var e=this.pixelRatio,r=this.fullLayout,n=r.width,i=r.height,a=0|Math.ceil(e*n),o=0|Math.ceil(e*i);return t.width===a&&t.height===o||(t.width=a,t.height=o),t},w.computeTickMarks=function(){this.xaxis.setScale(),this.yaxis.setScale();for(var t=[o.calcTicks(this.xaxis),o.calcTicks(this.yaxis)],e=0;e<2;++e)for(var r=0;r<t[e].length;++r)t[e][r].text=t[e][r].text+\"\";return t},w.updateRefs=function(t){this.fullLayout=t;var e=this.id.match(b),r=\"xaxis\"+e[1],n=\"yaxis\"+e[2];this.xaxis=this.fullLayout[r],this.yaxis=this.fullLayout[n]},w.relayoutCallback=function(){var t=this.graphDiv,e=this.xaxis,r=this.yaxis,n=t.layout,i={},o=i[e._name+\".range\"]=e.range.slice(),s=i[r._name+\".range\"]=r.range.slice();i[e._name+\".autorange\"]=e.autorange,i[r._name+\".autorange\"]=r.autorange,a.call(\"_storeDirectGUIEdit\",t.layout,t._fullLayout._preGUI,i);var l=n[e._name];l.range=o,l.autorange=e.autorange;var c=n[r._name];c.range=s,c.autorange=r.autorange,i.lastInputTime=this.camera.lastInputTime,t.emit(\"plotly_relayout\",i)},w.cameraChanged=function(){var t=this.camera;this.glplot.setDataBox(this.calcDataBox());var e=this.computeTickMarks();(function(t,e){for(var r=0;r<2;++r){var n=t[r],i=e[r];if(n.length!==i.length)return!0;for(var a=0;a<n.length;++a)if(n[a].x!==i[a].x)return!0}return!1})(e,this.glplotOptions.ticks)&&(this.glplotOptions.ticks=e,this.glplotOptions.dataBox=t.dataBox,this.glplot.update(this.glplotOptions),this.handleAnnotations())},w.handleAnnotations=function(){for(var t=this.graphDiv,e=this.fullLayout.annotations,r=0;r<e.length;r++){var n=e[r];n.xref===this.xaxis._id&&n.yref===this.yaxis._id&&a.getComponentMethod(\"annotations\",\"drawOne\")(t,r)}},w.destroy=function(){if(this.glplot){var t=this.traces;t&&Object.keys(t).map(function(e){t[e].dispose(),delete t[e]}),this.glplot.dispose(),this.container.removeChild(this.svgContainer),this.container.removeChild(this.mouseContainer),this.fullData=null,this.glplot=null,this.stopped=!0,this.camera.mouseListener.enabled=!1,this.mouseContainer.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null}},w.plot=function(t,e,r){var n=this.glplot;this.updateRefs(r),this.xaxis.clearCalc(),this.yaxis.clearCalc(),this.updateTraces(t,e),this.updateFx(r.dragmode);var i=r.width,a=r.height;this.updateSize(this.canvas);var o=this.glplotOptions;o.merge(r),o.screenBox=[0,0,i,a];var s={_fullLayout:{_axisConstraintGroups:this.graphDiv._fullLayout._axisConstraintGroups,xaxis:this.xaxis,yaxis:this.yaxis}};m(s,this.xaxis),m(s,this.yaxis);var l,c,u=r._size,f=this.xaxis.domain,h=this.yaxis.domain;for(o.viewBox=[u.l+f[0]*u.w,u.b+h[0]*u.h,i-u.r-(1-f[1])*u.w,a-u.t-(1-h[1])*u.h],this.mouseContainer.style.width=u.w*(f[1]-f[0])+\"px\",this.mouseContainer.style.height=u.h*(h[1]-h[0])+\"px\",this.mouseContainer.height=u.h*(h[1]-h[0]),this.mouseContainer.style.left=u.l+f[0]*u.w+\"px\",this.mouseContainer.style.top=u.t+(1-h[1])*u.h+\"px\",c=0;c<2;++c)(l=this[x[c]])._length=o.viewBox[c+2]-o.viewBox[c],y(this.graphDiv,l),l.setScale();v(s),o.ticks=this.computeTickMarks(),o.dataBox=this.calcDataBox(),o.merge(r),n.update(o),this.glplot.draw()},w.calcDataBox=function(){var t=this.xaxis,e=this.yaxis,r=t.range,n=e.range,i=t.r2l,a=e.r2l;return[i(r[0]),a(n[0]),i(r[1]),a(n[1])]},w.setRanges=function(t){var e=this.xaxis,r=this.yaxis,n=e.l2r,i=r.l2r;e.range=[n(t[0]),n(t[2])],r.range=[i(t[1]),i(t[3])]},w.updateTraces=function(t,e){var r,n,i,a=Object.keys(this.traces);this.fullData=t;t:for(r=0;r<a.length;r++){var o=a[r],s=this.traces[o];for(n=0;n<t.length;n++)if((i=t[n]).uid===o&&i.type===s.type)continue t;s.dispose(),delete this.traces[o]}for(r=0;r<t.length;r++){i=t[r];var l=e[r],c=this.traces[i.uid];c?c.update(i,l):(c=i._module.plot(this,i,l),this.traces[i.uid]=c)}this.glplot.objects.sort(function(t,e){return t._trace.index-e._trace.index})},w.updateFx=function(t){\"lasso\"===t||\"select\"===t?(this.pickCanvas.style[\"pointer-events\"]=\"none\",this.mouseContainer.style[\"pointer-events\"]=\"none\"):(this.pickCanvas.style[\"pointer-events\"]=\"auto\",this.mouseContainer.style[\"pointer-events\"]=\"auto\"),this.mouseContainer.style.cursor=\"pan\"===t?\"move\":\"zoom\"===t?\"crosshair\":null},w.emitPointAction=function(t,e){for(var r,n=t.trace.uid,i=t.pointIndex,a=0;a<this.fullData.length;a++)this.fullData[a].uid===n&&(r=this.fullData[a]);var o={x:t.traceCoord[0],y:t.traceCoord[1],curveNumber:r.index,pointNumber:i,data:r._input,fullData:this.fullData,xaxis:this.xaxis,yaxis:this.yaxis};s.appendArrayPointValue(o,r,i),this.graphDiv.emit(e,{points:[o]})},w.draw=function(){if(!this.stopped){requestAnimationFrame(this.redraw);var t=this.glplot,e=this.camera,r=e.mouseListener,n=1===this.lastButtonState&&0===r.buttons,i=this.fullLayout;this.lastButtonState=r.buttons,this.cameraChanged();var a,o=r.x*t.pixelRatio,l=this.canvas.height-t.pixelRatio*r.y;if(e.boxEnabled&&\"zoom\"===i.dragmode){this.selectBox.enabled=!0;for(var c=this.selectBox.selectBox=[Math.min(e.boxStart[0],e.boxEnd[0]),Math.min(e.boxStart[1],e.boxEnd[1]),Math.max(e.boxStart[0],e.boxEnd[0]),Math.max(e.boxStart[1],e.boxEnd[1])],u=0;u<2;u++)e.boxStart[u]===e.boxEnd[u]&&(c[u]=t.dataBox[u],c[u+2]=t.dataBox[u+2]);t.setDirty()}else if(!e.panning&&this.isMouseOver){this.selectBox.enabled=!1;var f=i._size,h=this.xaxis.domain,p=this.yaxis.domain,d=(a=t.pick(o/t.pixelRatio+f.l+h[0]*f.w,l/t.pixelRatio-(f.t+(1-p[1])*f.h)))&&a.object._trace.handlePick(a);if(d&&n&&this.emitPointAction(d,\"plotly_click\"),a&&\"skip\"!==a.object._trace.hoverinfo&&i.hovermode&&d&&(!this.lastPickResult||this.lastPickResult.traceUid!==d.trace.uid||this.lastPickResult.dataCoord[0]!==d.dataCoord[0]||this.lastPickResult.dataCoord[1]!==d.dataCoord[1])){var g=d;this.lastPickResult={traceUid:d.trace?d.trace.uid:null,dataCoord:d.dataCoord.slice()},this.spikes.update({center:a.dataCoord}),g.screenCoord=[((t.viewBox[2]-t.viewBox[0])*(a.dataCoord[0]-t.dataBox[0])/(t.dataBox[2]-t.dataBox[0])+t.viewBox[0])/t.pixelRatio,(this.canvas.height-(t.viewBox[3]-t.viewBox[1])*(a.dataCoord[1]-t.dataBox[1])/(t.dataBox[3]-t.dataBox[1])-t.viewBox[1])/t.pixelRatio],this.emitPointAction(d,\"plotly_hover\");var v=this.fullData[g.trace.index]||{},m=g.pointIndex,y=s.castHoverinfo(v,i,m);if(y&&\"all\"!==y){var x=y.split(\"+\");-1===x.indexOf(\"x\")&&(g.traceCoord[0]=void 0),-1===x.indexOf(\"y\")&&(g.traceCoord[1]=void 0),-1===x.indexOf(\"z\")&&(g.traceCoord[2]=void 0),-1===x.indexOf(\"text\")&&(g.textLabel=void 0),-1===x.indexOf(\"name\")&&(g.name=void 0)}s.loneHover({x:g.screenCoord[0],y:g.screenCoord[1],xLabel:this.hoverFormatter(\"xaxis\",g.traceCoord[0]),yLabel:this.hoverFormatter(\"yaxis\",g.traceCoord[1]),zLabel:g.traceCoord[2],text:g.textLabel,name:g.name,color:s.castHoverOption(v,m,\"bgcolor\")||g.color,borderColor:s.castHoverOption(v,m,\"bordercolor\"),fontFamily:s.castHoverOption(v,m,\"font.family\"),fontSize:s.castHoverOption(v,m,\"font.size\"),fontColor:s.castHoverOption(v,m,\"font.color\")},{container:this.svgContainer,gd:this.graphDiv})}}a||this.unhover(),t.draw()}},w.unhover=function(){this.lastPickResult&&(this.spikes.update({}),this.lastPickResult=null,this.graphDiv.emit(\"plotly_unhover\"),s.loneUnhover(this.svgContainer))},w.hoverFormatter=function(t,e){if(void 0!==e){var r=this[t];return o.tickText(r,r.c2l(e),\"hover\").text}}},{\"../../components/fx\":610,\"../../lib/show_no_webgl_msg\":715,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"../cartesian/autorange\":741,\"../cartesian/constants\":748,\"../cartesian/constraints\":750,\"./camera\":780,\"./convert\":781,\"gl-plot2d\":277,\"gl-select-box\":288,\"gl-spikes2d\":297,\"webgl-context\":534}],784:[function(t,e,r){\"use strict\";e.exports=function(t,e){t=t||document.body,e=e||{};var r=[.01,1/0];\"distanceLimits\"in e&&(r[0]=e.distanceLimits[0],r[1]=e.distanceLimits[1]);\"zoomMin\"in e&&(r[0]=e.zoomMin);\"zoomMax\"in e&&(r[1]=e.zoomMax);var c=i({center:e.center||[0,0,0],up:e.up||[0,1,0],eye:e.eye||[0,0,10],mode:e.mode||\"orbit\",distanceLimits:r}),u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=0,h=t.clientWidth,p=t.clientHeight,d={keyBindingMode:\"rotate\",enableWheel:!0,view:c,element:t,delay:e.delay||16,rotateSpeed:e.rotateSpeed||1,zoomSpeed:e.zoomSpeed||1,translateSpeed:e.translateSpeed||1,flipX:!!e.flipX,flipY:!!e.flipY,modes:c.modes,tick:function(){var e=n(),r=this.delay,i=e-2*r;c.idle(e-r),c.recalcMatrix(i),c.flush(e-(100+2*r));for(var a=!0,o=c.computedMatrix,s=0;s<16;++s)a=a&&u[s]===o[s],u[s]=o[s];var l=t.clientWidth===h&&t.clientHeight===p;return h=t.clientWidth,p=t.clientHeight,a?!l:(f=Math.exp(c.computedRadius[0]),!0)},lookAt:function(t,e,r){c.lookAt(c.lastT(),t,e,r)},rotate:function(t,e,r){c.rotate(c.lastT(),t,e,r)},pan:function(t,e,r){c.pan(c.lastT(),t,e,r)},translate:function(t,e,r){c.translate(c.lastT(),t,e,r)}};Object.defineProperties(d,{matrix:{get:function(){return c.computedMatrix},set:function(t){return c.setMatrix(c.lastT(),t),c.computedMatrix},enumerable:!0},mode:{get:function(){return c.getMode()},set:function(t){var e=c.computedUp.slice(),r=c.computedEye.slice(),i=c.computedCenter.slice();if(c.setMode(t),\"turntable\"===t){var a=n();c._active.lookAt(a,r,i,e),c._active.lookAt(a+500,r,i,[0,0,1]),c._active.flush(a)}return c.getMode()},enumerable:!0},center:{get:function(){return c.computedCenter},set:function(t){return c.lookAt(c.lastT(),null,t),c.computedCenter},enumerable:!0},eye:{get:function(){return c.computedEye},set:function(t){return c.lookAt(c.lastT(),t),c.computedEye},enumerable:!0},up:{get:function(){return c.computedUp},set:function(t){return c.lookAt(c.lastT(),null,null,t),c.computedUp},enumerable:!0},distance:{get:function(){return f},set:function(t){return c.setDistance(c.lastT(),t),t},enumerable:!0},distanceLimits:{get:function(){return c.getDistanceLimits(r)},set:function(t){return c.setDistanceLimits(t),t},enumerable:!0}}),t.addEventListener(\"contextmenu\",function(t){return t.preventDefault(),!1});var g=0,v=0,m={shift:!1,control:!1,alt:!1,meta:!1};function y(e,r,i,a){var o=d.keyBindingMode;if(!1!==o){var s=\"rotate\"===o,l=\"pan\"===o,u=\"zoom\"===o,h=!!a.control,p=!!a.alt,y=!!a.shift,x=!!(1&e),b=!!(2&e),_=!!(4&e),w=1/t.clientHeight,k=w*(r-g),A=w*(i-v),M=d.flipX?1:-1,T=d.flipY?1:-1,S=n(),C=Math.PI*d.rotateSpeed;if((s&&x&&!h&&!p&&!y||x&&!h&&!p&&y)&&c.rotate(S,M*C*k,-T*C*A,0),(l&&x&&!h&&!p&&!y||b||x&&h&&!p&&!y)&&c.pan(S,-d.translateSpeed*k*f,d.translateSpeed*A*f,0),u&&x&&!h&&!p&&!y||_||x&&!h&&p&&!y){var E=-d.zoomSpeed*A/window.innerHeight*(S-c.lastT())*100;c.pan(S,0,0,f*(Math.exp(E)-1))}return g=r,v=i,m=a,!0}}return d.mouseListener=a(t,y),t.addEventListener(\"touchstart\",function(e){var r=s(e.changedTouches[0],t);y(0,r[0],r[1],m),y(1,r[0],r[1],m),e.preventDefault()},!!l&&{passive:!1}),t.addEventListener(\"touchmove\",function(e){var r=s(e.changedTouches[0],t);y(1,r[0],r[1],m),e.preventDefault()},!!l&&{passive:!1}),t.addEventListener(\"touchend\",function(t){y(0,g,v,m),t.preventDefault()},!!l&&{passive:!1}),d.wheelListener=o(t,function(t,e){if(!1!==d.keyBindingMode&&d.enableWheel){var r=d.flipX?1:-1,i=d.flipY?1:-1,a=n();if(Math.abs(t)>Math.abs(e))c.rotate(a,0,0,-t*r*Math.PI*d.rotateSpeed/window.innerWidth);else{var o=-d.zoomSpeed*i*e/window.innerHeight*(a-c.lastT())/20;c.pan(a,0,0,f*(Math.exp(o)-1))}}},!0),d};var n=t(\"right-now\"),i=t(\"3d-view\"),a=t(\"mouse-change\"),o=t(\"mouse-wheel\"),s=t(\"mouse-event-offset\"),l=t(\"has-passive-events\")},{\"3d-view\":46,\"has-passive-events\":397,\"mouse-change\":421,\"mouse-event-offset\":422,\"mouse-wheel\":424,\"right-now\":482}],785:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../components/fx/layout_attributes\"),a=t(\"./scene\"),o=t(\"../get_data\").getSubplotData,s=t(\"../../lib\"),l=t(\"../../constants/xmlns_namespaces\");r.name=\"gl3d\",r.attr=\"scene\",r.idRoot=\"scene\",r.idRegex=r.attrRegex=s.counterRegex(\"scene\"),r.attributes=t(\"./layout/attributes\"),r.layoutAttributes=t(\"./layout/layout_attributes\"),r.baseLayoutAttrOverrides=n({hoverlabel:i.hoverlabel},\"plot\",\"nested\"),r.supplyLayoutDefaults=t(\"./layout/defaults\"),r.plot=function(t){for(var e=t._fullLayout,r=t._fullData,n=e._subplots.gl3d,i=0;i<n.length;i++){var l=n[i],c=o(r,\"gl3d\",l),u=e[l],f=u._scene;f||(f=new a({id:l,graphDiv:t,container:t.querySelector(\".gl-container\"),staticPlot:t._context.staticPlot,plotGlPixelRatio:t._context.plotGlPixelRatio},e),u._scene=f),f.cameraInitial||(f.cameraInitial=s.extendDeep({},u.camera)),f.plot(c,e,t.layout)}},r.clean=function(t,e,r,n){for(var i=n._subplots.gl3d||[],a=0;a<i.length;a++){var o=i[a];!e[o]&&n[o]._scene&&(n[o]._scene.destroy(),n._infolayer&&n._infolayer.selectAll(\".annotation-\"+o).remove())}},r.toSVG=function(t){for(var e=t._fullLayout,r=e._subplots.gl3d,n=e._size,i=0;i<r.length;i++){var a=e[r[i]],o=a.domain,s=a._scene,c=s.toImage(\"png\");e._glimages.append(\"svg:image\").attr({xmlns:l.svg,\"xlink:href\":c,x:n.l+n.w*o.x[0],y:n.t+n.h*(1-o.y[1]),width:n.w*(o.x[1]-o.x[0]),height:n.h*(o.y[1]-o.y[0]),preserveAspectRatio:\"none\"}),s.destroy()}},r.cleanId=function(t){if(t.match(/^scene[0-9]*$/)){var e=t.substr(5);return\"1\"===e&&(e=\"\"),\"scene\"+e}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.gl3d,n=0;n<r.length;n++){e[r[n]]._scene.updateFx(e.dragmode,e.hovermode)}}},{\"../../components/fx/layout_attributes\":611,\"../../constants/xmlns_namespaces\":672,\"../../lib\":694,\"../../plot_api/edit_types\":725,\"../get_data\":779,\"./layout/attributes\":786,\"./layout/defaults\":790,\"./layout/layout_attributes\":791,\"./scene\":795}],786:[function(t,e,r){\"use strict\";e.exports={scene:{valType:\"subplotid\",dflt:\"scene\",editType:\"calc+clearAxisTypes\"}}},{}],787:[function(t,e,r){\"use strict\";var n=t(\"../../../components/color\"),i=t(\"../../cartesian/layout_attributes\"),a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../plot_api/edit_types\").overrideAll;e.exports=o({visible:i.visible,showspikes:{valType:\"boolean\",dflt:!0},spikesides:{valType:\"boolean\",dflt:!0},spikethickness:{valType:\"number\",min:0,dflt:2},spikecolor:{valType:\"color\",dflt:n.defaultLine},showbackground:{valType:\"boolean\",dflt:!1},backgroundcolor:{valType:\"color\",dflt:\"rgba(204, 204, 204, 0.5)\"},showaxeslabels:{valType:\"boolean\",dflt:!0},color:i.color,categoryorder:i.categoryorder,categoryarray:i.categoryarray,title:i.title,type:a({},i.type,{values:[\"-\",\"linear\",\"log\",\"date\",\"category\"]}),autorange:i.autorange,rangemode:i.rangemode,range:a({},i.range,{items:[{valType:\"any\",editType:\"plot\",impliedEdits:{\"^autorange\":!1}},{valType:\"any\",editType:\"plot\",impliedEdits:{\"^autorange\":!1}}],anim:!1}),tickmode:i.tickmode,nticks:i.nticks,tick0:i.tick0,dtick:i.dtick,tickvals:i.tickvals,ticktext:i.ticktext,ticks:i.ticks,mirror:i.mirror,ticklen:i.ticklen,tickwidth:i.tickwidth,tickcolor:i.tickcolor,showticklabels:i.showticklabels,tickfont:i.tickfont,tickangle:i.tickangle,tickprefix:i.tickprefix,showtickprefix:i.showtickprefix,ticksuffix:i.ticksuffix,showticksuffix:i.showticksuffix,showexponent:i.showexponent,exponentformat:i.exponentformat,separatethousands:i.separatethousands,tickformat:i.tickformat,tickformatstops:i.tickformatstops,hoverformat:i.hoverformat,showline:i.showline,linecolor:i.linecolor,linewidth:i.linewidth,showgrid:i.showgrid,gridcolor:a({},i.gridcolor,{dflt:\"rgb(204, 204, 204)\"}),gridwidth:i.gridwidth,zeroline:i.zeroline,zerolinecolor:i.zerolinecolor,zerolinewidth:i.zerolinewidth,_deprecated:{title:i._deprecated.title,titlefont:i._deprecated.titlefont}},\"plot\",\"from-root\")},{\"../../../components/color\":571,\"../../../lib/extend\":684,\"../../../plot_api/edit_types\":725,\"../../cartesian/layout_attributes\":755}],788:[function(t,e,r){\"use strict\";var n=t(\"tinycolor2\").mix,i=t(\"../../../lib\"),a=t(\"../../../plot_api/plot_template\"),o=t(\"./axis_attributes\"),s=t(\"../../cartesian/type_defaults\"),l=t(\"../../cartesian/axis_defaults\"),c=[\"xaxis\",\"yaxis\",\"zaxis\"];e.exports=function(t,e,r){var u,f;function h(t,e){return i.coerce(u,f,o,t,e)}for(var p=0;p<c.length;p++){var d=c[p];u=t[d]||{},(f=a.newContainer(e,d))._id=d[0]+r.scene,f._name=d,s(u,f,h,r),l(u,f,h,{font:r.font,letter:d[0],data:r.data,showGrid:!0,noTickson:!0,bgColor:r.bgColor,calendar:r.calendar},r.fullLayout),h(\"gridcolor\",n(f.color,r.bgColor,13600/187).toRgbString()),h(\"title.text\",d[0]),f.setScale=i.noop,h(\"showspikes\")&&(h(\"spikesides\"),h(\"spikethickness\"),h(\"spikecolor\",f.color)),h(\"showaxeslabels\"),h(\"showbackground\")&&h(\"backgroundcolor\")}}},{\"../../../lib\":694,\"../../../plot_api/plot_template\":732,\"../../cartesian/axis_defaults\":744,\"../../cartesian/type_defaults\":766,\"./axis_attributes\":787,tinycolor2:515}],789:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=t(\"../../../lib\"),a=[\"xaxis\",\"yaxis\",\"zaxis\"];function o(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=[\"sans-serif\",\"sans-serif\",\"sans-serif\"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=[\"x\",\"y\",\"z\"],this.labelEnable=[!0,!0,!0],this.labelFont=[\"Open Sans\",\"Open Sans\",\"Open Sans\"],this.labelSize=[20,20,20],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}o.prototype.merge=function(t,e){for(var r=0;r<3;++r){var o=e[a[r]];o.visible?(this.labels[r]=t.meta?i.templateString(o.title.text,{meta:t.meta}):o.title.text,\"font\"in o.title&&(o.title.font.color&&(this.labelColor[r]=n(o.title.font.color)),o.title.font.family&&(this.labelFont[r]=o.title.font.family),o.title.font.size&&(this.labelSize[r]=o.title.font.size)),\"showline\"in o&&(this.lineEnable[r]=o.showline),\"linecolor\"in o&&(this.lineColor[r]=n(o.linecolor)),\"linewidth\"in o&&(this.lineWidth[r]=o.linewidth),\"showgrid\"in o&&(this.gridEnable[r]=o.showgrid),\"gridcolor\"in o&&(this.gridColor[r]=n(o.gridcolor)),\"gridwidth\"in o&&(this.gridWidth[r]=o.gridwidth),\"log\"===o.type?this.zeroEnable[r]=!1:\"zeroline\"in o&&(this.zeroEnable[r]=o.zeroline),\"zerolinecolor\"in o&&(this.zeroLineColor[r]=n(o.zerolinecolor)),\"zerolinewidth\"in o&&(this.zeroLineWidth[r]=o.zerolinewidth),\"ticks\"in o&&o.ticks?this.lineTickEnable[r]=!0:this.lineTickEnable[r]=!1,\"ticklen\"in o&&(this.lineTickLength[r]=this._defaultLineTickLength[r]=o.ticklen),\"tickcolor\"in o&&(this.lineTickColor[r]=n(o.tickcolor)),\"tickwidth\"in o&&(this.lineTickWidth[r]=o.tickwidth),\"tickangle\"in o&&(this.tickAngle[r]=\"auto\"===o.tickangle?-3600:Math.PI*-o.tickangle/180),\"showticklabels\"in o&&(this.tickEnable[r]=o.showticklabels),\"tickfont\"in o&&(o.tickfont.color&&(this.tickColor[r]=n(o.tickfont.color)),o.tickfont.family&&(this.tickFont[r]=o.tickfont.family),o.tickfont.size&&(this.tickSize[r]=o.tickfont.size)),\"mirror\"in o?-1!==[\"ticks\",\"all\",\"allticks\"].indexOf(o.mirror)?(this.lineTickMirror[r]=!0,this.lineMirror[r]=!0):!0===o.mirror?(this.lineTickMirror[r]=!1,this.lineMirror[r]=!0):(this.lineTickMirror[r]=!1,this.lineMirror[r]=!1):this.lineMirror[r]=!1,\"showbackground\"in o&&!1!==o.showbackground?(this.backgroundEnable[r]=!0,this.backgroundColor[r]=n(o.backgroundcolor)):this.backgroundEnable[r]=!1):(this.tickEnable[r]=!1,this.labelEnable[r]=!1,this.lineEnable[r]=!1,this.lineTickEnable[r]=!1,this.gridEnable[r]=!1,this.zeroEnable[r]=!1,this.backgroundEnable[r]=!1)}},e.exports=function(t,e){var r=new o;return r.merge(t,e),r}},{\"../../../lib\":694,\"../../../lib/str2rgbarray\":717}],790:[function(t,e,r){\"use strict\";var n=t(\"../../../lib\"),i=t(\"../../../components/color\"),a=t(\"../../../registry\"),o=t(\"../../subplot_defaults\"),s=t(\"./axis_defaults\"),l=t(\"./layout_attributes\"),c=t(\"../../get_data\").getSubplotData,u=\"gl3d\";function f(t,e,r,n){for(var o=r(\"bgcolor\"),l=i.combine(o,n.paper_bgcolor),f=[\"up\",\"center\",\"eye\"],h=0;h<f.length;h++)r(\"camera.\"+f[h]+\".x\"),r(\"camera.\"+f[h]+\".y\"),r(\"camera.\"+f[h]+\".z\");var p=!!r(\"aspectratio.x\")&&!!r(\"aspectratio.y\")&&!!r(\"aspectratio.z\"),d=r(\"aspectmode\",p?\"manual\":\"auto\");p||(t.aspectratio=e.aspectratio={x:1,y:1,z:1},\"manual\"===d&&(e.aspectmode=\"auto\"),t.aspectmode=e.aspectmode);var g=c(n.fullData,u,n.id);s(t,e,{font:n.font,scene:n.id,data:g,bgColor:l,calendar:n.calendar,fullLayout:n.fullLayout}),a.getComponentMethod(\"annotations3d\",\"handleDefaults\")(t,e,n);var v=n.getDfltFromLayout(\"dragmode\");if(!1!==v&&!v)if(v=\"orbit\",t.camera&&t.camera.up){var m=t.camera.up.x,y=t.camera.up.y,x=t.camera.up.z;0!==x&&(m&&y&&x?x/Math.sqrt(m*m+y*y+x*x)>.999&&(v=\"turntable\"):v=\"turntable\")}else v=\"turntable\";r(\"dragmode\",v),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:u,attributes:l,handleDefaults:f,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":571,\"../../../lib\":694,\"../../../registry\":825,\"../../get_data\":779,\"../../subplot_defaults\":820,\"./axis_defaults\":788,\"./layout_attributes\":791}],791:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":694,\"../../../lib/extend\":684,\"../../domain\":768,\"./axis_attributes\":787}],792:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":717}],793:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u),d=0;d<p.length;++d)p[d].x=p[d].x*t.dataScale[c],\"date\"===u.type&&(p[d].text=p[d].text.replace(/\\<br\\>/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(var c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(var d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;a<n.length;++a)i[a]=n[a].x;e[r]=i}return e}(l)};var n=t(\"../../cartesian/axes\"),i=t(\"../../../lib\"),a=[\"xaxis\",\"yaxis\",\"zaxis\"],o=[0,0,0]},{\"../../../lib\":694,\"../../cartesian/axes\":742}],794:[function(t,e,r){\"use strict\";function n(t,e){var r,n,i=[0,0,0,0];for(r=0;r<4;++r)for(n=0;n<4;++n)i[n]+=t[4*r+n]*e[r];return i}e.exports=function(t,e){return n(t.projection,n(t.view,n(t.model,[e[0],e[1],e[2],1])))}},{}],795:[function(t,e,r){\"use strict\";var n,i,a=t(\"gl-plot3d\"),o=t(\"webgl-context\"),s=t(\"has-passive-events\"),l=t(\"../../registry\"),c=t(\"../../lib\"),u=t(\"../../plots/cartesian/axes\"),f=t(\"../../components/fx\"),h=t(\"../../lib/str2rgbarray\"),p=t(\"../../lib/show_no_webgl_msg\"),d=t(\"./camera\"),g=t(\"./project\"),v=t(\"./layout/convert\"),m=t(\"./layout/spikes\"),y=t(\"./layout/tick_marks\");function x(t,e,r){var l=t.graphDiv,c={canvas:e,gl:r,container:t.container,axes:t.axesOptions,spikes:t.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1};if(t.staticMode){if(!(i||(n=document.createElement(\"canvas\"),i=o({canvas:n,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}))))throw new Error(\"error creating static canvas/context for image server\");c.pixelRatio=t.pixelRatio,c.gl=i,c.canvas=n}try{t.glplot=a(c)}catch(e){return p(t)}var h=function(t){if(!1!==t.fullSceneLayout.dragmode){var e={};e[t.id+\".camera\"]=A(t.camera),t.saveCamera(l.layout),t.graphDiv.emit(\"plotly_relayout\",e)}};if(t.glplot.canvas.addEventListener(\"mouseup\",function(){h(t)}),t.glplot.canvas.addEventListener(\"wheel\",function(){l._context._scrollZoom.gl3d&&h(t)},!!s&&{passive:!1}),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",function(e){l&&l.emit&&l.emit(\"plotly_webglcontextlost\",{event:e,layer:t.id})},!1),!t.camera){var v=t.fullSceneLayout.camera;t.camera=d(t.container,{center:[v.center.x,v.center.y,v.center.z],eye:[v.eye.x,v.eye.y,v.eye.z],up:[v.up.x,v.up.y,v.up.z],zoomMin:.1,zoomMax:100,mode:\"orbit\"})}return t.glplot.camera=t.camera,t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(t){var e,r=t.svgContainer,n=t.container.getBoundingClientRect(),i=n.width,a=n.height;r.setAttributeNS(null,\"viewBox\",\"0 0 \"+i+\" \"+a),r.setAttributeNS(null,\"width\",i),r.setAttributeNS(null,\"height\",a),y(t),t.glplot.axes.update(t.axesOptions);for(var o,s=Object.keys(t.traces),l=null,c=t.glplot.selection,h=0;h<s.length;++h)\"skip\"!==(e=t.traces[s[h]]).data.hoverinfo&&e.handlePick(c)&&(l=e),e.setContourLevels&&e.setContourLevels();function p(e,r){var n=t.fullSceneLayout[e];return u.tickText(n,n.d2l(r),\"hover\").text}if(null!==l){var d=g(t.glplot.cameraParams,c.dataCoordinate);e=l.data;var v,m=c.index,x=f.castHoverinfo(e,t.fullLayout,m),b=x.split(\"+\"),_=\"all\"===x,w=p(\"xaxis\",c.traceCoordinate[0]),k=p(\"yaxis\",c.traceCoordinate[1]),A=p(\"zaxis\",c.traceCoordinate[2]);_||(-1===b.indexOf(\"x\")&&(w=void 0),-1===b.indexOf(\"y\")&&(k=void 0),-1===b.indexOf(\"z\")&&(A=void 0),-1===b.indexOf(\"text\")&&(c.textLabel=void 0),-1===b.indexOf(\"name\")&&(l.name=void 0));var M=[];\"cone\"===e.type||\"streamtube\"===e.type?((_||-1!==b.indexOf(\"u\"))&&M.push(\"u: \"+p(\"xaxis\",c.traceCoordinate[3])),(_||-1!==b.indexOf(\"v\"))&&M.push(\"v: \"+p(\"yaxis\",c.traceCoordinate[4])),(_||-1!==b.indexOf(\"w\"))&&M.push(\"w: \"+p(\"zaxis\",c.traceCoordinate[5])),(_||-1!==b.indexOf(\"norm\"))&&M.push(\"norm: \"+c.traceCoordinate[6].toPrecision(3)),\"streamtube\"!==e.type||!_&&-1===b.indexOf(\"divergence\")||M.push(\"divergence: \"+c.traceCoordinate[7].toPrecision(3)),c.textLabel&&M.push(c.textLabel),v=M.join(\"<br>\")):\"isosurface\"===e.type?(M.push(\"value: \"+u.tickText(t.mockAxis,t.mockAxis.d2l(c.traceCoordinate[3]),\"hover\").text),c.textLabel&&M.push(c.textLabel),v=M.join(\"<br>\")):v=c.textLabel,t.fullSceneLayout.hovermode&&f.loneHover({x:(.5+.5*d[0]/d[3])*i,y:(.5-.5*d[1]/d[3])*a,xLabel:w,yLabel:k,zLabel:A,text:v,name:l.name,color:f.castHoverOption(e,m,\"bgcolor\")||l.color,borderColor:f.castHoverOption(e,m,\"bordercolor\"),fontFamily:f.castHoverOption(e,m,\"font.family\"),fontSize:f.castHoverOption(e,m,\"font.size\"),fontColor:f.castHoverOption(e,m,\"font.color\")},{container:r,gd:t.graphDiv});var T={x:c.traceCoordinate[0],y:c.traceCoordinate[1],z:c.traceCoordinate[2],data:e._input,fullData:e,curveNumber:e.index,pointNumber:m};e._module.eventData&&(T=e._module.eventData(T,c,e,{},m)),f.appendArrayPointValue(T,e,m);var S={points:[T]};c.buttons&&c.distance<5?t.graphDiv.emit(\"plotly_click\",S):t.graphDiv.emit(\"plotly_hover\",S),o=S}else f.loneUnhover(r),t.graphDiv.emit(\"plotly_unhover\",o);t.drawAnnotations(t)}.bind(null,t),t.traces={},t.make4thDimension(),!0}function b(t,e){var r=document.createElement(\"div\"),n=t.container;this.graphDiv=t.graphDiv;var i=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");i.style.position=\"absolute\",i.style.top=i.style.left=\"0px\",i.style.width=i.style.height=\"100%\",i.style[\"z-index\"]=20,i.style[\"pointer-events\"]=\"none\",r.appendChild(i),this.svgContainer=i,r.id=t.id,r.style.position=\"absolute\",r.style.top=r.style.left=\"0px\",r.style.width=r.style.height=\"100%\",n.appendChild(r),this.fullLayout=e,this.id=t.id||\"scene\",this.fullSceneLayout=e[this.id],this.plotArgs=[[],{},{}],this.axesOptions=v(e,e[this.id]),this.spikeOptions=m(e[this.id]),this.container=r,this.staticMode=!!t.staticPlot,this.pixelRatio=t.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=l.getComponentMethod(\"annotations3d\",\"convert\"),this.drawAnnotations=l.getComponentMethod(\"annotations3d\",\"draw\"),x(this)}var _=b.prototype;_.recoverContext=function(){var t=this,e=this.glplot.gl,r=this.glplot.canvas;this.glplot.dispose(),requestAnimationFrame(function n(){e.isContextLost()?requestAnimationFrame(n):x(t,r,e)?t.plot.apply(t,t.plotArgs):c.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")})};var w=[\"xaxis\",\"yaxis\",\"zaxis\"];function k(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=w[i],o=a.charAt(0),s=n[a],l=e[o],u=e[o+\"calendar\"],f=e[\"_\"+o+\"length\"];if(c.isArrayOrTypedArray(l))for(var h,p=0;p<(f||l.length);p++)if(c.isArrayOrTypedArray(l[p]))for(var d=0;d<l[p].length;++d)h=s.d2l(l[p][d],0,u),!isNaN(h)&&isFinite(h)&&(r[0][i]=Math.min(r[0][i],h),r[1][i]=Math.max(r[1][i],h));else h=s.d2l(l[p],0,u),!isNaN(h)&&isFinite(h)&&(r[0][i]=Math.min(r[0][i],h),r[1][i]=Math.max(r[1][i],h));else r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],f-1)}}function A(t){return{up:{x:t.up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]}}}_.plot=function(t,e,r){if(this.plotArgs=[t,e,r],!this.glplot.contextLost){var n,i,a,o,s,l,c=e[this.id],u=r[this.id];c.bgcolor?this.glplot.clearColor=h(c.bgcolor):this.glplot.clearColor=[0,0,0,0],this.glplot.snapToData=!0,this.fullLayout=e,this.fullSceneLayout=c,this.glplotLayout=c,this.axesOptions.merge(e,c),this.spikeOptions.merge(c),this.setCamera(c.camera),this.updateFx(c.dragmode,c.hovermode),this.camera.enableWheel=this.graphDiv._context._scrollZoom.gl3d,this.glplot.update({}),this.setConvert(s),t?Array.isArray(t)||(t=[t]):t=[];var f=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];for(a=0;a<t.length;++a)!0===(n=t[a]).visible&&k(this,n,f);var p=[1,1,1];for(o=0;o<3;++o)f[1][o]===f[0][o]?p[o]=1:p[o]=1/(f[1][o]-f[0][o]);for(this.dataScale=p,this.convertAnnotations(this),a=0;a<t.length;++a)!0===(n=t[a]).visible&&((i=this.traces[n.uid])?i.data.type===n.type?i.update(n):(i.dispose(),i=n._module.plot(this,n),this.traces[n.uid]=i):(i=n._module.plot(this,n),this.traces[n.uid]=i),i.name=n.name);var d=Object.keys(this.traces);t:for(a=0;a<d.length;++a){for(o=0;o<t.length;++o)if(t[o].uid===d[a]&&!0===t[o].visible)continue t;(i=this.traces[d[a]]).dispose(),delete this.traces[d[a]]}this.glplot.objects.sort(function(t,e){return t._trace.data.index-e._trace.data.index});var g=[[0,0,0],[0,0,0]],v=[],m={};for(a=0;a<3;++a){if((l=(s=c[w[a]]).type)in m?(m[l].acc*=p[a],m[l].count+=1):m[l]={acc:p[a],count:1},s.autorange){g[0][a]=1/0,g[1][a]=-1/0;var y=this.glplot.objects,x=this.fullSceneLayout.annotations||[],b=s._name.charAt(0);for(o=0;o<y.length;o++){var _=y[o],A=_.bounds,M=_._trace.data._pad||0;\"ErrorBars\"===_.constructor.name&&s._lowerLogErrorBound?g[0][a]=Math.min(g[0][a],s._lowerLogErrorBound):g[0][a]=Math.min(g[0][a],A[0][a]/p[a]-M),g[1][a]=Math.max(g[1][a],A[1][a]/p[a]+M)}for(o=0;o<x.length;o++){var T=x[o];if(T.visible){var S=s.r2l(T[b]);g[0][a]=Math.min(g[0][a],S),g[1][a]=Math.max(g[1][a],S)}}if(\"rangemode\"in s&&\"tozero\"===s.rangemode&&(g[0][a]=Math.min(g[0][a],0),g[1][a]=Math.max(g[1][a],0)),g[0][a]>g[1][a])g[0][a]=-1,g[1][a]=1;else{var C=g[1][a]-g[0][a];g[0][a]-=C/32,g[1][a]+=C/32}if(\"reversed\"===s.autorange){var E=g[0][a];g[0][a]=g[1][a],g[1][a]=E}}else{var L=s.range;g[0][a]=s.r2l(L[0]),g[1][a]=s.r2l(L[1])}g[0][a]===g[1][a]&&(g[0][a]-=1,g[1][a]+=1),v[a]=g[1][a]-g[0][a],this.glplot.bounds[0][a]=g[0][a]*p[a],this.glplot.bounds[1][a]=g[1][a]*p[a]}var z=[1,1,1];for(a=0;a<3;++a){var O=m[l=(s=c[w[a]]).type];z[a]=Math.pow(O.acc,1/O.count)/p[a]}var I;if(\"auto\"===c.aspectmode)I=Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1];else if(\"cube\"===c.aspectmode)I=[1,1,1];else if(\"data\"===c.aspectmode)I=z;else{if(\"manual\"!==c.aspectmode)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var D=c.aspectratio;I=[D.x,D.y,D.z]}c.aspectratio.x=u.aspectratio.x=I[0],c.aspectratio.y=u.aspectratio.y=I[1],c.aspectratio.z=u.aspectratio.z=I[2],this.glplot.aspect=I;var P=c.domain||null,R=e._size||null;if(P&&R){var F=this.container.style;F.position=\"absolute\",F.left=R.l+P.x[0]*R.w+\"px\",F.top=R.t+(1-P.y[1])*R.h+\"px\",F.width=R.w*(P.x[1]-P.x[0])+\"px\",F.height=R.h*(P.y[1]-P.y[0])+\"px\"}this.glplot.redraw()}},_.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=this.glplot.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},_.getCamera=function(){return this.glplot.camera.view.recalcMatrix(this.camera.view.lastT()),A(this.glplot.camera)},_.setCamera=function(t){var e;this.glplot.camera.lookAt.apply(this,[[(e=t).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]])},_.saveCamera=function(t){var e=this.fullLayout,r=this.getCamera(),n=c.nestedProperty(t,this.id+\".camera\"),i=n.get(),a=!1;function o(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}if(void 0===i)a=!0;else for(var s=0;s<3;s++)for(var u=0;u<3;u++)if(!o(r,i,s,u)){a=!0;break}if(a){var f={};f[this.id+\".camera\"]=i,l.call(\"_storeDirectGUIEdit\",t,e._preGUI,f),n.set(r),c.nestedProperty(e,this.id+\".camera\").set(r)}return a},_.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,u=a.up.z;if(u/Math.sqrt(o*o+s*s+u*u)>.999)return;var f=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[f]=h;var d=n.layout;l.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,c.nestedProperty(d,f).set(h)}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},_.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a);for(var o=0,s=i-1;o<s;++o,--s)for(var l=0;l<r;++l)for(var c=0;c<4;++c){var u=a[4*(r*o+l)+c];a[4*(r*o+l)+c]=a[4*(r*s+l)+c],a[4*(r*s+l)+c]=u}var f=document.createElement(\"canvas\");f.width=r,f.height=i;var h,p=f.getContext(\"2d\"),d=p.createImageData(r,i);switch(d.data.set(a),p.putImageData(d,0,0),t){case\"jpeg\":h=f.toDataURL(\"image/jpeg\");break;case\"webp\":h=f.toDataURL(\"image/webp\");break;default:h=f.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),h},_.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[w[t]];u.setConvert(e,this.fullLayout),e.setScale=c.noop}},_.make4thDimension=function(){var t=this.graphDiv._fullLayout;this.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},u.setConvert(this.mockAxis,t)},e.exports=b},{\"../../components/fx\":610,\"../../lib\":694,\"../../lib/show_no_webgl_msg\":715,\"../../lib/str2rgbarray\":717,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"./camera\":784,\"./layout/convert\":789,\"./layout/spikes\":792,\"./layout/tick_marks\":793,\"./project\":794,\"gl-plot3d\":279,\"has-passive-events\":397,\"webgl-context\":534}],796:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;a<n;a++)i[a]=[t[a],e[a],r[a]];return i}},{}],797:[function(t,e,r){\"use strict\";var n=t(\"./font_attributes\"),i=t(\"./animation_attributes\"),a=t(\"../components/color/attributes\"),o=t(\"../components/colorscale/layout_attributes\"),s=t(\"./pad_attributes\"),l=t(\"../lib/extend\").extendFlat,c=n({editType:\"calc\"});c.family.dflt='\"Open Sans\", verdana, arial, sans-serif',c.size.dflt=12,c.color.dflt=a.defaultLine,e.exports={font:c,title:{text:{valType:\"string\",editType:\"layoutstyle\"},font:n({editType:\"layoutstyle\"}),xref:{valType:\"enumerated\",dflt:\"container\",values:[\"container\",\"paper\"],editType:\"layoutstyle\"},yref:{valType:\"enumerated\",dflt:\"container\",values:[\"container\",\"paper\"],editType:\"layoutstyle\"},x:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"layoutstyle\"},y:{valType:\"number\",min:0,max:1,dflt:\"auto\",editType:\"layoutstyle\"},xanchor:{valType:\"enumerated\",dflt:\"auto\",values:[\"auto\",\"left\",\"center\",\"right\"],editType:\"layoutstyle\"},yanchor:{valType:\"enumerated\",dflt:\"auto\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],editType:\"layoutstyle\"},pad:l(s({editType:\"layoutstyle\"}),{}),editType:\"layoutstyle\"},autosize:{valType:\"boolean\",dflt:!1,editType:\"none\"},width:{valType:\"number\",min:10,dflt:700,editType:\"plot\"},height:{valType:\"number\",min:10,dflt:450,editType:\"plot\"},margin:{l:{valType:\"number\",min:0,dflt:80,editType:\"plot\"},r:{valType:\"number\",min:0,dflt:80,editType:\"plot\"},t:{valType:\"number\",min:0,dflt:100,editType:\"plot\"},b:{valType:\"number\",min:0,dflt:80,editType:\"plot\"},pad:{valType:\"number\",min:0,dflt:0,editType:\"plot\"},autoexpand:{valType:\"boolean\",dflt:!0,editType:\"plot\"},editType:\"plot\"},paper_bgcolor:{valType:\"color\",dflt:a.background,editType:\"plot\"},plot_bgcolor:{valType:\"color\",dflt:a.background,editType:\"layoutstyle\"},separators:{valType:\"string\",editType:\"plot\"},hidesources:{valType:\"boolean\",dflt:!1,editType:\"plot\"},showlegend:{valType:\"boolean\",editType:\"legend\"},colorway:{valType:\"colorlist\",dflt:a.defaults,editType:\"calc\"},colorscale:o,datarevision:{valType:\"any\",editType:\"calc\"},uirevision:{valType:\"any\",editType:\"none\"},editrevision:{valType:\"any\",editType:\"none\"},selectionrevision:{valType:\"any\",editType:\"none\"},template:{valType:\"any\",editType:\"calc\"},modebar:{orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"modebar\"},meta:{valType:\"data_array\",editType:\"plot\"},transition:l({},i.transition,{editType:\"none\"}),_deprecated:{title:{valType:\"string\",editType:\"layoutstyle\"},titlefont:n({editType:\"layoutstyle\"})}}},{\"../components/color/attributes\":570,\"../components/colorscale/layout_attributes\":584,\"../lib/extend\":684,\"./animation_attributes\":737,\"./font_attributes\":769,\"./pad_attributes\":805}],798:[function(t,e,r){\"use strict\";e.exports={requiredVersion:\"0.45.0\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",controlContainerClassName:\"mapboxgl-control-container\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@0.45.0.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\"  Plotly.plot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none\"}}},{}],799:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":694}],800:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl\"),i=t(\"../../lib\"),a=t(\"../../plots/get_data\").getSubplotCalcData,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./mapbox\"),l=t(\"./constants\");for(var c in l.styleRules)i.addStyleRule(\".mapboxgl-\"+c,l.styleRules[c]);r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,o=e._subplots.mapbox;if(n.version!==l.requiredVersion)throw new Error(l.wrongVersionErrorMsg);var c=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=0;n<e.length;n++){var i=r[e[n]];if(i.accesstoken)return i.accesstoken}throw new Error(l.noAccessTokenErrorMsg)}(t,o);n.accessToken=c;for(var u=0;u<o.length;u++){var f=o[u],h=a(r,\"mapbox\",f),p=e[f],d=p._subplot;d||(d=s({gd:t,container:e._glcontainer.node(),id:f,fullLayout:e,staticPlot:t._context.staticPlot}),e[f]._subplot=d),d.viewInitial||(d.viewInitial={center:i.extendFlat({},p.center),zoom:p.zoom,bearing:p.bearing,pitch:p.pitch}),d.plot(h,e,t._promises)}},r.clean=function(t,e,r,n){for(var i=n._subplots.mapbox||[],a=0;a<i.length;a++){var o=i[a];!e[o]&&n[o]._subplot&&n[o]._subplot.destroy()}},r.toSVG=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=e._size,i=0;i<r.length;i++){var a=e[r[i]],s=a.domain,l=a._subplot,c=l.toImage(\"png\");e._glimages.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":c,x:n.l+n.w*s.x[0],y:n.t+n.h*(1-s.y[1]),width:n.w*(s.x[1]-s.x[0]),height:n.h*(s.y[1]-s.y[0]),preserveAspectRatio:\"none\"}),l.destroy()}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n<r.length;n++){e[r[n]]._subplot.updateFx(e)}}},{\"../../constants/xmlns_namespaces\":672,\"../../lib\":694,\"../../plots/get_data\":779,\"./constants\":798,\"./layout_attributes\":802,\"./layout_defaults\":803,\"./mapbox\":804,\"mapbox-gl\":412}],801:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./convert_text_opts\");function a(t,e){this.mapbox=t,this.map=t.map,this.uid=t.uid+\"-layer\"+e,this.idSource=this.uid+\"-source\",this.idLayer=this.uid+\"-layer\",this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var o=a.prototype;function s(t){var e=t.source;return t.visible&&(n.isPlainObject(e)||\"string\"==typeof e&&e.length>0)}function l(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var a=t.symbol,o=i(a.textposition,a.iconsize);n.extendFlat(e,{\"icon-image\":a.icon+\"-15\",\"icon-size\":a.iconsize/10,\"text-field\":a.text,\"text-size\":a.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":a.textfont.color,\"text-opacity\":t.opacity})}return{layout:e,paint:r}}o.update=function(t){this.visible?this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=s(t)},o.needsNewSource=function(t){return this.sourceType!==t.sourcetype||this.source!==t.source||this.layerType!==t.type},o.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==t.below},o.updateSource=function(t){var e=this.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,s(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,i={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r&&(e=\"string\"==typeof n?\"url\":\"tiles\");return i[e]=n,i}(t);e.addSource(this.idSource,r)}},o.updateLayer=function(t){var e=this.map,r=l(t);this.removeLayer(),this.layerType=t.type,s(t)&&e.addLayer({id:this.idLayer,source:this.idSource,\"source-layer\":t.sourcelayer||\"\",type:t.type,layout:r.layout,paint:r.paint},t.below)},o.updateStyle=function(t){if(s(t)){var e=l(t);this.mapbox.setOptions(this.idLayer,\"setLayoutProperty\",e.layout),this.mapbox.setOptions(this.idLayer,\"setPaintProperty\",e.paint)}},o.removeLayer=function(){var t=this.map;t.getLayer(this.idLayer)&&t.removeLayer(this.idLayer)},o.dispose=function(){var t=this.map;t.removeLayer(this.idLayer),t.removeSource(this.idSource)},e.exports=function(t,e,r){var n=new a(t,e);return n.update(r),n}},{\"../../lib\":694,\"./convert_text_opts\":799}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\").defaultLine,a=t(\"../domain\").attributes,o=t(\"../font_attributes\"),s=t(\"../../traces/scatter/attributes\").textposition,l=t(\"../../plot_api/edit_types\").overrideAll,c=t(\"../../plot_api/plot_template\").templatedArray,u=o({});u.family.dflt=\"Open Sans Regular, Arial Unicode MS Regular\",(e.exports=l({_arrayAttrRegexps:[n.counterRegex(\"mapbox\",\".layers\",!0)],domain:a({name:\"mapbox\"}),accesstoken:{valType:\"string\",noBlank:!0,strict:!0},style:{valType:\"any\",values:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],dflt:\"basic\"},center:{lon:{valType:\"number\",dflt:0},lat:{valType:\"number\",dflt:0}},zoom:{valType:\"number\",dflt:1},bearing:{valType:\"number\",dflt:0},pitch:{valType:\"number\",dflt:0},layers:c(\"layer\",{visible:{valType:\"boolean\",dflt:!0},sourcetype:{valType:\"enumerated\",values:[\"geojson\",\"vector\"],dflt:\"geojson\"},source:{valType:\"any\"},sourcelayer:{valType:\"string\",dflt:\"\"},type:{valType:\"enumerated\",values:[\"circle\",\"line\",\"fill\",\"symbol\"],dflt:\"circle\"},below:{valType:\"string\",dflt:\"\"},color:{valType:\"color\",dflt:i},opacity:{valType:\"number\",min:0,max:1,dflt:1},circle:{radius:{valType:\"number\",dflt:15}},line:{width:{valType:\"number\",dflt:2}},fill:{outlinecolor:{valType:\"color\",dflt:i}},symbol:{icon:{valType:\"string\",dflt:\"marker\"},iconsize:{valType:\"number\",dflt:10},text:{valType:\"string\",dflt:\"\"},textfont:u,textposition:n.extendFlat({},s,{arrayOk:!1})}})},\"plot\",\"from-root\")).uirevision={valType:\"any\",editType:\"none\"}},{\"../../components/color\":571,\"../../lib\":694,\"../../plot_api/edit_types\":725,\"../../plot_api/plot_template\":732,\"../../traces/scatter/attributes\":1047,\"../domain\":768,\"../font_attributes\":769}],803:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../subplot_defaults\"),a=t(\"../array_container_defaults\"),o=t(\"./layout_attributes\");function s(t,e,r,n){r(\"accesstoken\",n.accessToken),r(\"style\"),r(\"center.lon\"),r(\"center.lat\"),r(\"zoom\"),r(\"bearing\"),r(\"pitch\"),a(t,e,{name:\"layers\",handleItemDefaults:l}),e._input=t}function l(t,e){function r(r,i){return n.coerce(t,e,o.layers,r,i)}if(r(\"visible\")){var i=r(\"sourcetype\");r(\"source\"),\"vector\"===i&&r(\"sourcelayer\");var a=r(\"type\");r(\"below\"),r(\"color\"),r(\"opacity\"),\"circle\"===a&&r(\"circle.radius\"),\"line\"===a&&r(\"line.width\"),\"fill\"===a&&r(\"fill.outlinecolor\"),\"symbol\"===a&&(r(\"symbol.icon\"),r(\"symbol.iconsize\"),r(\"symbol.text\"),n.coerceFont(r,\"symbol.textfont\"),r(\"symbol.textposition\"))}}e.exports=function(t,e,r){i(t,e,r,{type:\"mapbox\",attributes:o,handleDefaults:s,partition:\"y\",accessToken:e._mapboxAccessToken})}},{\"../../lib\":694,\"../array_container_defaults\":738,\"../subplot_defaults\":820,\"./layout_attributes\":802}],804:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl\"),i=t(\"../../components/fx\"),a=t(\"../../lib\"),o=t(\"../../registry\"),s=t(\"../../components/dragelement\"),l=t(\"../cartesian/select\").prepSelect,c=t(\"../cartesian/select\").selectOnClick,u=t(\"./constants\"),f=t(\"./layout_attributes\"),h=t(\"./layers\");function p(t){this.id=t.id,this.gd=t.gd,this.container=t.container,this.isStatic=t.staticPlot;var e=t.fullLayout;this.uid=e._uid+\"-\"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(e),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[]}var d=p.prototype;function g(t){var e=f.style.values,r=f.style.dflt,n={};return a.isPlainObject(t)?(n.id=t.id,n.style=t):\"string\"==typeof t?(n.id=t,n.style=-1!==e.indexOf(t)?v(t):t):(n.id=r,n.style=v(r)),n.transition={duration:0,delay:0},n}function v(t){return u.styleUrlPrefix+t+\"-\"+u.styleUrlSuffix}function m(t){return[t.lon,t.lat]}e.exports=function(t){return new p(t)},d.plot=function(t,e,r){var n,i=this,a=e[i.id];i.map&&a.accesstoken!==i.accessToken&&(i.map.remove(),i.map=null,i.styleObj=null,i.traceHash=[],i.layerList={}),n=i.map?new Promise(function(r,n){i.updateMap(t,e,r,n)}):new Promise(function(r,n){i.createMap(t,e,r,n)}),r.push(n)},d.createMap=function(t,e,r,a){var s=this,l=s.gd,f=e[s.id],h=s.styleObj=g(f.style);s.accessToken=f.accesstoken;var p=s.map=new n.Map({container:s.div,style:h.style,center:m(f.center),zoom:f.zoom,bearing:f.bearing,pitch:f.pitch,interactive:!s.isStatic,preserveDrawingBuffer:s.isStatic,doubleClickZoom:!1,boxZoom:!1}),d=u.controlContainerClassName,v=s.div.getElementsByClassName(d)[0];if(s.div.removeChild(v),p._canvas.style.left=\"0px\",p._canvas.style.top=\"0px\",s.rejectOnError(a),p.once(\"load\",function(){s.updateData(t),s.updateLayout(e),s.resolveOnRender(r)}),!s.isStatic){var y=!1;p.on(\"moveend\",function(t){if(s.map){if(t.originalEvent||y){var e=l._fullLayout[s.id];o.call(\"_storeDirectGUIEdit\",l.layout,l._fullLayout._preGUI,s.getViewEdits(e));var r=s.getView();e._input.center=e.center=r.center,e._input.zoom=e.zoom=r.zoom,e._input.bearing=e.bearing=r.bearing,e._input.pitch=e.pitch=r.pitch,l.emit(\"plotly_relayout\",s.getViewEdits(r))}y=!1}}),p.on(\"wheel\",function(){y=!0}),p.on(\"mousemove\",function(t){var e=s.div.getBoundingClientRect();t.clientX=t.point.x+e.left,t.clientY=t.point.y+e.top,t.target.getBoundingClientRect=function(){return e},s.xaxis.p2c=function(){return t.lngLat.lng},s.yaxis.p2c=function(){return t.lngLat.lat},i.hover(l,t,s.id)}),p.on(\"dragstart\",x),p.on(\"zoomstart\",x),p.on(\"dblclick\",function(){var t=l._fullLayout[s.id];o.call(\"_storeDirectGUIEdit\",l.layout,l._fullLayout._preGUI,s.getViewEdits(t));var e=s.viewInitial;p.setCenter(m(e.center)),p.setZoom(e.zoom),p.setBearing(e.bearing),p.setPitch(e.pitch);var r=s.getView();t._input.center=t.center=r.center,t._input.zoom=t.zoom=r.zoom,t._input.bearing=t.bearing=r.bearing,t._input.pitch=t.pitch=r.pitch,l.emit(\"plotly_doubleclick\",null),l.emit(\"plotly_relayout\",s.getViewEdits(r))}),s.clearSelect=function(){l._fullLayout._zoomlayer.selectAll(\".select-outline\").remove()},s.onClickInPanFn=function(t){return function(e){var r=l._fullLayout.clickmode;r.indexOf(\"select\")>-1&&c(e.originalEvent,l,[s.xaxis],[s.yaxis],s.id,t),r.indexOf(\"event\")>-1&&i.click(l,e.originalEvent)}}}function x(){i.loneUnhover(e._toppaper)}},d.updateMap=function(t,e,r,n){var i=this,a=i.map,o=e[this.id];i.rejectOnError(n);var s=g(o.style);i.styleObj.id!==s.id?(i.styleObj=s,a.setStyle(s.style),a.once(\"styledata\",function(){i.traceHash={},i.updateData(t),i.updateLayout(e),i.resolveOnRender(r)})):(i.updateData(t),i.updateLayout(e),i.resolveOnRender(r)),this.gd._context._scrollZoom.mapbox?a.scrollZoom.enable():a.scrollZoom.disable()},d.updateData=function(t){var e,r,n,i,a=this.traceHash;for(n=0;n<t.length;n++){var o=t[n];(e=a[(r=o[0].trace).uid])?e.update(o):r._module&&(a[r.uid]=r._module.plot(this,o))}var s=Object.keys(a);t:for(n=0;n<s.length;n++){var l=s[n];for(i=0;i<t.length;i++)if(l===(r=t[i][0].trace).uid)continue t;(e=a[l]).dispose(),delete a[l]}},d.updateLayout=function(t){var e=this.map,r=t[this.id];e.setCenter(m(r.center)),e.setZoom(r.zoom),e.setBearing(r.bearing),e.setPitch(r.pitch),this.updateLayers(t),this.updateFramework(t),this.updateFx(t),this.map.resize()},d.resolveOnRender=function(t){var e=this.map;e.on(\"render\",function r(){e.loaded()&&(e.off(\"render\",r),setTimeout(t,0))})},d.rejectOnError=function(t){var e=this.map;function r(){t(new Error(u.mapOnErrorMsg))}e.once(\"error\",r),e.once(\"style.error\",r),e.once(\"source.error\",r),e.once(\"tile.error\",r),e.once(\"layer.error\",r)},d.createFramework=function(t){var e=this,r=e.div=document.createElement(\"div\");r.id=e.uid,r.style.position=\"absolute\",e.container.appendChild(r),e.xaxis={_id:\"x\",c2p:function(t){return e.project(t).x}},e.yaxis={_id:\"y\",c2p:function(t){return e.project(t).y}},e.updateFramework(t)},d.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var i,o=t.dragmode;i=\"select\"===o?function(t,r){(t.range={})[e.id]=[u([r.xmin,r.ymin]),u([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(u)};var c=e.dragOptions;e.dragOptions=a.extendDeep(c||{},{element:e.div,gd:n,plotinfo:{id:e.id,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:i},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),\"select\"===o||\"lasso\"===o?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){l(t,r,n,e.dragOptions,o)},s.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function u(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},d.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},d.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e<n.length;e++)n[e].dispose();for(n=this.layerList=[],e=0;e<r.length;e++)n.push(h(this,e,r[e]))}else for(e=0;e<r.length;e++)n[e].update(r[e])},d.destroy=function(){this.map&&(this.map.remove(),this.map=null,this.container.removeChild(this.div))},d.toImage=function(){return this.map.stop(),this.map.getCanvas().toDataURL()},d.setOptions=function(t,e,r){for(var n in r)this.map[e](t,n,r[n])},d.project=function(t){return this.map.project(new n.LngLat(t[0],t[1]))},d.getView=function(){var t=this.map,e=t.getCenter();return{center:{lon:e.lng,lat:e.lat},zoom:t.getZoom(),bearing:t.getBearing(),pitch:t.getPitch()}},d.getViewEdits=function(t){for(var e=this.id,r=[\"center\",\"zoom\",\"bearing\",\"pitch\"],n={},i=0;i<r.length;i++){var a=r[i];n[e+\".\"+a]=t[a]}return n}},{\"../../components/dragelement\":589,\"../../components/fx\":610,\"../../lib\":694,\"../../registry\":825,\"../cartesian/select\":760,\"./constants\":798,\"./layers\":801,\"./layout_attributes\":802,\"mapbox-gl\":412}],805:[function(t,e,r){\"use strict\";e.exports=function(t){var e=t.editType;return{t:{valType:\"number\",dflt:0,editType:e},r:{valType:\"number\",dflt:0,editType:e},b:{valType:\"number\",dflt:0,editType:e},l:{valType:\"number\",dflt:0,editType:e},editType:e}}},{}],806:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../registry\"),o=t(\"../plot_api/plot_schema\"),s=t(\"../plot_api/plot_template\"),l=t(\"../lib\"),c=t(\"../components/color\"),u=t(\"../constants/numerical\").BADNUM,f=t(\"../plots/cartesian/axis_ids\"),h=t(\"./animation_attributes\"),p=t(\"./frame_attributes\"),d=l.relinkPrivateKeys,g=l._,v=e.exports={};l.extendFlat(v,a),v.attributes=t(\"./attributes\"),v.attributes.type.values=v.allTypes,v.fontAttrs=t(\"./font_attributes\"),v.layoutAttributes=t(\"./layout_attributes\"),v.fontWeight=\"normal\";var m=v.transformsRegistry,y=t(\"./command\");v.executeAPICommand=y.executeAPICommand,v.computeAPICommandBindings=y.computeAPICommandBindings,v.manageCommandObserver=y.manageCommandObserver,v.hasSimpleAPICommandBindings=y.hasSimpleAPICommandBindings,v.redrawText=function(t){if(!((t=l.getGraphDiv(t)).data&&t.data[0]&&t.data[0].r))return new Promise(function(e){setTimeout(function(){a.getComponentMethod(\"annotations\",\"draw\")(t),a.getComponentMethod(\"legend\",\"draw\")(t),(t.calcdata||[]).forEach(function(t){t[0]&&t[0].t&&t[0].t.cb&&t[0].t.cb()}),e(v.previousPromises(t))},300)})},v.resize=function(t){return t=l.getGraphDiv(t),new Promise(function(e,r){function n(t){var e=window.getComputedStyle(t).display;return!e||\"none\"===e}t&&!n(t)||r(new Error(\"Resize must be passed a displayed plot div element.\")),t._redrawTimer&&clearTimeout(t._redrawTimer),t._redrawTimer=setTimeout(function(){if(!t.layout||t.layout.width&&t.layout.height||n(t))e(t);else{delete t.layout.width,delete t.layout.height;var r=t.changed;t.autoplay=!0,a.call(\"relayout\",t,{autosize:!0}).then(function(){t.changed=r,e(t)})}},100)})},v.previousPromises=function(t){if((t._promises||[]).length)return Promise.all(t._promises).then(function(){t._promises=[]})},v.addLinks=function(t){if(t._context.showLink||t._context.showSources){var e=t._fullLayout,r=l.ensureSingle(e._paper,\"text\",\"js-plot-link-container\",function(t){t.style({\"font-family\":'\"Open Sans\", Arial, sans-serif',\"font-size\":\"12px\",fill:c.defaultLine,\"pointer-events\":\"all\"}).each(function(){var t=n.select(this);t.append(\"tspan\").classed(\"js-link-to-tool\",!0),t.append(\"tspan\").classed(\"js-link-spacer\",!0),t.append(\"tspan\").classed(\"js-sourcelinks\",!0)})}),i=r.node(),a={y:e._paper.attr(\"height\")-9};document.body.contains(i)&&i.getComputedTextLength()>=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),u=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",function(){v.sendDataToCloud(t)});else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&u.text()?\" - \":\"\")}},v.sendDataToCloud=function(t){t.emit(\"plotly_beforeexport\");var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL,r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=v.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1};var x=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],b=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function _(t,e){var r=t._context.locale,n=!1,i={};function o(t){for(var r=!0,a=0;a<e.length;a++){var o=e[a];i[o]||(t[o]?i[o]=t[o]:r=!1)}r&&(n=!0)}for(var s=0;s<2;s++){for(var l=t._context.locales,c=0;c<2;c++){var u=(l[r]||{}).format;if(u&&(o(u),n))break;l=a.localeRegistry}var f=r.split(\"-\")[0];if(n||f===r)break;r=f}return n||o(a.localeRegistry.en.format),i}function w(t,e){var r={_fullLayout:e},n=\"x\"===t._id.charAt(0),i=t._mainAxis._anchorAxis,a=\"\",o=\"\",s=\"\";if(i&&(s=i._mainAxis._id,a=n?t._id+s:s+t._id),!a||!e._plots[a]){a=\"\";for(var l=t._counterAxes,c=0;c<l.length;c++){var u=l[c],h=n?t._id+u:u+t._id;o||(o=h);var p=f.getFromId(r,u);if(s&&p.overlaying===s){a=h;break}}}return a||o}function k(t){var e=t.transforms;if(Array.isArray(e)&&e.length)for(var r=0;r<e.length;r++){var n=e[r],i=n._module||m[n.type];if(i&&i.makesData)return!0}return!1}function A(t,e,r,n){for(var i=t.transforms,a=[t],o=0;o<i.length;o++){var s=i[o],l=m[s.type];l&&l.transform&&(a=l.transform(a,{transform:s,fullTrace:t,fullData:e,layout:r,fullLayout:n,transformIndex:o}))}return a}function M(t){var e=t.margin;if(!t._size){var r=t._size={l:Math.round(e.l),r:Math.round(e.r),t:Math.round(e.t),b:Math.round(e.b),p:Math.round(e.pad)};r.w=Math.round(t.width)-r.l-r.r,r.h=Math.round(t.height)-r.t-r.b}t._pushmargin||(t._pushmargin={}),t._pushmarginIds||(t._pushmarginIds={})}function T(t,e,r){var n=!1;var i=[v.previousPromises,function(){if(t._transitionData)return t._transitioning=!1,function(t){var e=Promise.resolve();if(!t)return e;for(;t.length;)e=e.then(t.shift());return e}(t._transitionData._interruptCallbacks)},r.prepareFn,v.rehover,function(){return t.emit(\"plotly_transitioning\",[]),new Promise(function(i){t._transitioning=!0,e.duration>0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&t._transitionData._interruptCallbacks.push(function(){return a.call(\"redraw\",t)}),t._transitionData._interruptCallbacks.push(function(){t.emit(\"plotly_transitioninterrupted\",[])});var o=0,s=0;function l(){return o++,function(){var e;s++,n||s!==o||(e=i,t._transitionData&&(function(t){if(t)for(;t.length;)t.shift()}(t._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return a.call(\"redraw\",t)}).then(function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])}).then(e)))}}r.runFn(l),setTimeout(l())})}],o=l.syncOrAsync(i,t);return o&&o.then||(o=Promise.resolve()),o.then(function(){return t})}function S(t,e){for(var r=0;r<t.length;r++){var n=t[r];n.clearCalc(),\"multicategory\"===n.type&&n.setupMultiCategory(e)}}v.supplyDefaults=function(t,e){var r=e&&e.skipUpdateCalc,i=t._fullLayout||{};if(i._skipDefaults)delete i._skipDefaults;else{var o,s=t._fullLayout={},c=t.layout||{},u=t._fullData||[],f=t._fullData=[],h=t.data||[],p=t.calcdata||[],m=t._context||{};t._transitionData||v.createTransitionData(t),s._dfltTitle={plot:g(t,\"Click to enter Plot title\"),x:g(t,\"Click to enter X axis title\"),y:g(t,\"Click to enter Y axis title\"),colorbar:g(t,\"Click to enter Colorscale title\"),annotation:g(t,\"new text\")},s._traceWord=g(t,\"trace\");var y=_(t,x);if(s._mapboxAccessToken=m.mapboxAccessToken,i._initialAutoSizeIsDone){var w=i.width,k=i.height;v.supplyLayoutGlobalDefaults(c,s,y),c.width||(s.width=w),c.height||(s.height=k),v.sanitizeMargins(s)}else{v.supplyLayoutGlobalDefaults(c,s,y);var A=!c.width||!c.height,T=s.autosize,S=m.autosizable;A&&(T||S)?v.plotAutoSize(t,c,s):A&&v.sanitizeMargins(s),!T&&A&&(c.width=s.width,c.height=s.height)}s._d3locale=function(t,e){return t.decimal=e.charAt(0),t.thousands=e.charAt(1),n.locale(t)}(y,s.separators),s._extraFormat=_(t,b),s._initialAutoSizeIsDone=!0,s._dataLength=h.length,s._modules=[],s._visibleModules=[],s._basePlotModules=[];var C=s._subplots=function(){var t,e,r=a.collectableSubplotTypes,n={};if(!r){r=[];var i=a.subplotsRegistry;for(var o in i){var s=i[o],c=s.attr;if(c&&(r.push(o),Array.isArray(c)))for(e=0;e<c.length;e++)l.pushUnique(r,c[e])}}for(t=0;t<r.length;t++)n[r[t]]=[];return n}(),E=s._splomAxes={x:{},y:{}},L=s._splomSubplots={};s._splomGridDflt={},s._scatterStackOpts={},s._firstScatter={},s._requestRangeslider={},s._traceUids=function(t,e){var r,n,i=e.length,a=[];for(r=0;r<t.length;r++){var o=t[r]._fullInput;o!==n&&a.push(o),n=o}var s=a.length,c=new Array(i),u={};function f(t,e){c[e]=t,u[t]=1}function h(t,e){if(t&&\"string\"==typeof t&&!u[t])return f(t,e),!0}for(r=0;r<i;r++){var p=e[r].uid;\"number\"==typeof p&&(p=String(p)),h(p,r)||(r<s&&h(a[r].uid,r)||f(l.randstr(u),r))}return c}(u,h),s._globalTransforms=(t._context||{}).globalTransforms,v.supplyDataDefaults(h,f,c,s);var z=Object.keys(E.x),O=Object.keys(E.y);if(z.length>1&&O.length>1){for(a.getComponentMethod(\"grid\",\"sizeDefaults\")(c,s),o=0;o<z.length;o++)l.pushUnique(C.xaxis,z[o]);for(o=0;o<O.length;o++)l.pushUnique(C.yaxis,O[o]);for(var I in L)l.pushUnique(C.cartesian,I)}if(s._has=v._hasPlotType.bind(s),u.length===f.length)for(o=0;o<f.length;o++)d(f[o],u[o]);v.supplyLayoutModuleDefaults(c,s,f,t._transitionData);var D=s._visibleModules,P=[];for(o=0;o<D.length;o++){var R=D[o].crossTraceDefaults;R&&l.pushUnique(P,R)}for(o=0;o<P.length;o++)P[o](f,s);a.getComponentMethod(\"colorscale\",\"crossTraceDefaults\")(f,s),s._hasOnlyLargeSploms=1===s._basePlotModules.length&&\"splom\"===s._basePlotModules[0].name&&z.length>15&&O.length>15&&0===s.shapes.length&&0===s.images.length,s._hasCartesian=s._has(\"cartesian\"),s._hasGeo=s._has(\"geo\"),s._hasGL3D=s._has(\"gl3d\"),s._hasGL2D=s._has(\"gl2d\"),s._hasTernary=s._has(\"ternary\"),s._hasPie=s._has(\"pie\"),v.linkSubplots(f,s,u,i),v.cleanPlot(f,s,u,i),d(s,i),s._preGUI||(s._preGUI={}),s._tracePreGUI||(s._tracePreGUI={});var F,B=s._tracePreGUI,N={};for(F in B)N[F]=\"old\";for(o=0;o<f.length;o++)N[F=f[o]._fullInput.uid]||(B[F]={}),N[F]=\"new\";for(F in N)\"old\"===N[F]&&delete B[F];M(s),a.getComponentMethod(\"rangeslider\",\"makeData\")(s),r||p.length!==f.length||v.supplyDefaultsUpdateCalc(p,f)}},v.supplyDefaultsUpdateCalc=function(t,e){for(var r=0;r<e.length;r++){var n=e[r],i=(t[r]||[])[0];if(i&&i.trace){var a=i.trace;if(a._hasCalcTransform){var o,s,c,u=a._arrayAttrs;for(o=0;o<u.length;o++)s=u[o],c=l.nestedProperty(a,s).get().slice(),l.nestedProperty(n,s).set(c)}i.trace=n}}},v.createTransitionData=function(t){t._transitionData||(t._transitionData={}),t._transitionData._frames||(t._transitionData._frames=[]),t._transitionData._frameHash||(t._transitionData._frameHash={}),t._transitionData._counter||(t._transitionData._counter=0),t._transitionData._interruptCallbacks||(t._transitionData._interruptCallbacks=[])},v._hasPlotType=function(t){var e,r=this._basePlotModules||[];for(e=0;e<r.length;e++)if(r[e].name===t)return!0;var n=this._modules||[];for(e=0;e<n.length;e++){var i=n[e].name;if(i===t)return!0;var o=a.modules[i];if(o&&o.categories[t])return!0}return!1},v.cleanPlot=function(t,e,r,n){var i,a,o=n._basePlotModules||[];for(i=0;i<o.length;i++){var s=o[i];s.clean&&s.clean(t,e,r,n)}var l=n._has&&n._has(\"gl\"),c=e._has&&e._has(\"gl\");l&&!c&&void 0!==n._glcontainer&&(n._glcontainer.selectAll(\".gl-canvas\").remove(),n._glcontainer.selectAll(\".no-webgl\").remove(),n._glcanvas=null);var u=!!n._infolayer;t:for(i=0;i<r.length;i++){var f=r[i].uid;for(a=0;a<t.length;a++){if(f===t[a].uid)continue t}u&&n._infolayer.select(\".cb\"+f).remove()}n._zoomlayer&&n._zoomlayer.selectAll(\".select-outline\").remove()},v.linkSubplots=function(t,e,r,n){var i,a,o=n._plots||{},s=e._plots={},c=e._subplots,u={_fullData:t,_fullLayout:e},h=c.cartesian.concat(c.gl2d||[]);for(i=0;i<h.length;i++){var p,d=h[i],g=o[d],v=f.getFromId(u,d,\"x\"),m=f.getFromId(u,d,\"y\");for(g?p=s[d]=g:(p=s[d]={}).id=d,v._counterAxes.push(m._id),m._counterAxes.push(v._id),v._subplotsWith.push(d),m._subplotsWith.push(d),p.xaxis=v,p.yaxis=m,p._hasClipOnAxisFalse=!1,a=0;a<t.length;a++){var y=t[a];if(y.xaxis===p.xaxis._id&&y.yaxis===p.yaxis._id&&!1===y.cliponaxis){p._hasClipOnAxisFalse=!0;break}}}var x,b=f.list(u,null,!0);for(i=0;i<b.length;i++){var _=null;(x=b[i]).overlaying&&(_=f.getFromId(u,x.overlaying))&&_.overlaying&&(x.overlaying=!1,_=null),x._mainAxis=_||x,_&&(x.domain=_.domain.slice()),x._anchorAxis=\"free\"===x.anchor?null:f.getFromId(u,x.anchor)}for(i=0;i<b.length;i++)(x=b[i])._counterAxes.sort(f.idSort),x._subplotsWith.sort(l.subplotSort),x._mainSubplot=w(x,e)},v.clearExpandedTraceDefaultColors=function(t){var e,r,n;for(r=[],(e=t._module._colorAttrs)||(t._module._colorAttrs=e=[],o.crawl(t._module.attributes,function(t,n,i,a){r[a]=n,r.length=a+1,\"color\"===t.valType&&void 0===t.dflt&&e.push(r.join(\".\"))})),n=0;n<e.length;n++){l.nestedProperty(t,\"_input.\"+e[n]).get()||l.nestedProperty(t,e[n]).set(null)}},v.supplyDataDefaults=function(t,e,r,n){var i,o,c,u=n._modules,f=n._visibleModules,h=n._basePlotModules,p=0,g=0;function m(t){e.push(t);var r=t._module;r&&(l.pushUnique(u,r),!0===t.visible&&l.pushUnique(f,r),l.pushUnique(h,t._module.basePlotModule),p++,!1!==t._input.visible&&g++)}n._transformModules=[];var y={},x=[],b=(r.template||{}).data||{},_=s.traceTemplater(b);for(i=0;i<t.length;i++){if(c=t[i],(o=_.newTrace(c)).uid=n._traceUids[i],v.supplyTraceDefaults(c,o,g,n,i),o.index=i,o._input=c,o._expandedIndex=p,o.transforms&&o.transforms.length)for(var w=!1!==c.visible&&!1===o.visible,k=A(o,e,r,n),M=0;M<k.length;M++){var T=k[M],S={_template:o._template,type:o.type,uid:o.uid+M};w&&!1===T.visible&&delete T.visible,v.supplyTraceDefaults(T,S,p,n,i),d(S,T),S.index=i,S._input=c,S._fullInput=o,S._expandedIndex=p,S._expandedInput=T,m(S)}else o._fullInput=o,o._expandedInput=o,m(o);a.traceIs(o,\"carpetAxis\")&&(y[o.carpet]=o),a.traceIs(o,\"carpetDependent\")&&x.push(i)}for(i=0;i<x.length;i++)if((o=e[x[i]]).visible){var C=y[o.carpet];o._carpet=C,C&&C.visible?(o.xaxis=C.xaxis,o.yaxis=C.yaxis):o.visible=!1}},v.supplyAnimationDefaults=function(t){var e;t=t||{};var r={};function n(e,n){return l.coerce(t||{},r,h,e,n)}if(n(\"mode\"),n(\"direction\"),n(\"fromcurrent\"),Array.isArray(t.frame))for(r.frame=[],e=0;e<t.frame.length;e++)r.frame[e]=v.supplyAnimationFrameDefaults(t.frame[e]||{});else r.frame=v.supplyAnimationFrameDefaults(t.frame||{});if(Array.isArray(t.transition))for(r.transition=[],e=0;e<t.transition.length;e++)r.transition[e]=v.supplyAnimationTransitionDefaults(t.transition[e]||{});else r.transition=v.supplyAnimationTransitionDefaults(t.transition||{});return r},v.supplyAnimationFrameDefaults=function(t){var e={};function r(r,n){return l.coerce(t||{},e,h.frame,r,n)}return r(\"duration\"),r(\"redraw\"),e},v.supplyAnimationTransitionDefaults=function(t){var e={};function r(r,n){return l.coerce(t||{},e,h.transition,r,n)}return r(\"duration\"),r(\"easing\"),e},v.supplyFrameDefaults=function(t){var e={};function r(r,n){return l.coerce(t,e,p,r,n)}return r(\"group\"),r(\"name\"),r(\"traces\"),r(\"baseframe\"),r(\"data\"),r(\"layout\"),e},v.supplyTraceDefaults=function(t,e,r,n,i){var o,s=n.colorway||c.defaults,u=s[r%s.length];function f(r,n){return l.coerce(t,e,v.attributes,r,n)}var h=f(\"visible\");f(\"type\"),f(\"name\",n._traceWord+\" \"+i),f(\"uirevision\",n.uirevision);var p,d,g,m=v.getModule(e);if(e._module=m,m){var y=m.basePlotModule,x=y.attr,b=y.attributes;if(x&&b){var _=n._subplots,w=\"\";if(\"gl2d\"!==y.name||h){if(Array.isArray(x))for(o=0;o<x.length;o++){var k=x[o],A=l.coerce(t,e,b,k);_[k]&&l.pushUnique(_[k],A),w+=A}else w=l.coerce(t,e,b,x);_[y.name]&&l.pushUnique(_[y.name],w)}}}return h&&(f(\"customdata\"),f(\"ids\"),a.traceIs(e,\"showLegend\")?(e._dfltShowLegend=!0,f(\"showlegend\"),f(\"legendgroup\")):e._dfltShowLegend=!1,p=\"hoverlabel\",d=\"\",g=function(){a.getComponentMethod(\"fx\",\"supplyDefaults\")(t,e,u,n)},m&&p in m.attributes&&void 0===m.attributes[p]||(g&&\"function\"==typeof g?g():f(p,d)),m&&(m.supplyDefaults(t,e,u,n),e.hovertemplate||l.coerceHoverinfo(t,e,n)),a.traceIs(e,\"noOpacity\")||f(\"opacity\"),a.traceIs(e,\"notLegendIsolatable\")&&(e.visible=!!e.visible),m&&m.selectPoints&&f(\"selectedpoints\"),v.supplyTransformDefaults(t,e,n)),e},v.hasMakesDataTransform=k,v.supplyTransformDefaults=function(t,e,r){if(e._length||k(t)){var n=r._globalTransforms||[],i=r._transformModules||[];if(Array.isArray(t.transforms)||0!==n.length)for(var a=t.transforms||[],o=n.concat(a),s=e.transforms=[],c=0;c<o.length;c++){var u,f=o[c],h=f.type,p=m[h],d=!(f._module&&f._module===p),g=p&&\"function\"==typeof p.transform;p||l.warn(\"Unrecognized transform type \"+h+\".\"),p&&p.supplyDefaults&&(d||g)?((u=p.supplyDefaults(f,e,r,t)).type=h,u._module=p,l.pushUnique(i,p)):u=l.extendFlat({},f),s.push(u)}}},v.supplyLayoutGlobalDefaults=function(t,e,r){function n(r,n){return l.coerce(t,e,v.layoutAttributes,r,n)}var i=t.template;l.isPlainObject(i)&&(e.template=i,e._template=i.layout,e._dataTemplate=i.data);var o=l.coerceFont(n,\"font\");n(\"title.text\",e._dfltTitle.plot),l.coerceFont(n,\"title.font\",{family:o.family,size:Math.round(1.4*o.size),color:o.color}),n(\"title.xref\"),n(\"title.yref\"),n(\"title.x\"),n(\"title.y\"),n(\"title.xanchor\"),n(\"title.yanchor\"),n(\"title.pad.t\"),n(\"title.pad.r\"),n(\"title.pad.b\"),n(\"title.pad.l\"),n(\"autosize\",!(t.width&&t.height)),n(\"width\"),n(\"height\"),n(\"margin.l\"),n(\"margin.r\"),n(\"margin.t\"),n(\"margin.b\"),n(\"margin.pad\"),n(\"margin.autoexpand\"),t.width&&t.height&&v.sanitizeMargins(e),a.getComponentMethod(\"grid\",\"sizeDefaults\")(t,e),n(\"paper_bgcolor\"),n(\"separators\",r.decimal+r.thousands),n(\"hidesources\"),n(\"colorway\"),n(\"datarevision\");var s=n(\"uirevision\");n(\"editrevision\",s),n(\"selectionrevision\",s),n(\"modebar.orientation\"),n(\"modebar.bgcolor\",c.addOpacity(e.paper_bgcolor,.5));var u=c.contrast(c.rgb(e.modebar.bgcolor));n(\"modebar.color\",c.addOpacity(u,.3)),n(\"modebar.activecolor\",c.addOpacity(u,.7)),n(\"modebar.uirevision\",s),n(\"meta\"),l.isPlainObject(t.transition)&&(n(\"transition.duration\"),n(\"transition.easing\"),n(\"transition.ordering\")),a.getComponentMethod(\"calendars\",\"handleDefaults\")(t,e,\"calendar\"),a.getComponentMethod(\"fx\",\"supplyLayoutGlobalDefaults\")(t,e,n)},v.plotAutoSize=function(t,e,r){var n,a,o=t._context||{},s=o.frameMargins,c=l.isPlotDiv(t);if(c&&t.emit(\"plotly_autosize\"),o.fillFrame)n=window.innerWidth,a=window.innerHeight,document.body.style.overflow=\"hidden\";else{var u=c?window.getComputedStyle(t):{};if(n=parseFloat(u.width)||parseFloat(u.maxWidth)||r.width,a=parseFloat(u.height)||parseFloat(u.maxHeight)||r.height,i(s)&&s>0){var f=1-2*s;n=Math.round(f*n),a=Math.round(f*a)}}var h=v.layoutAttributes.width.min,p=v.layoutAttributes.height.min;n<h&&(n=h),a<p&&(a=p);var d=!e.width&&Math.abs(r.width-n)>1,g=!e.height&&Math.abs(r.height-a)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=a)),t._initialAutoSize||(t._initialAutoSize={width:n,height:a}),v.sanitizeMargins(r)},v.supplyLayoutModuleDefaults=function(t,e,r,n){var i,o,s,c=a.componentsRegistry,u=e._basePlotModules,f=a.subplotsRegistry.cartesian;for(i in c)(s=c[i]).includeBasePlot&&s.includeBasePlot(t,e);for(var h in u.length||u.push(f),e._has(\"cartesian\")&&(a.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(l.subplotSort);for(o=0;o<u.length;o++)(s=u[o]).supplyLayoutDefaults&&s.supplyLayoutDefaults(t,e,r);var p=e._modules;for(o=0;o<p.length;o++)(s=p[o]).supplyLayoutDefaults&&s.supplyLayoutDefaults(t,e,r);var d=e._transformModules;for(o=0;o<d.length;o++)(s=d[o]).supplyLayoutDefaults&&s.supplyLayoutDefaults(t,e,r,n);for(i in c)(s=c[i]).supplyLayoutDefaults&&s.supplyLayoutDefaults(t,e,r)},v.purge=function(t){var e=t._fullLayout||{};void 0!==e._glcontainer&&(e._glcontainer.selectAll(\".gl-canvas\").remove(),e._glcontainer.remove(),e._glcanvas=null),void 0!==e._geocontainer&&e._geocontainer.remove(),e._modeBar&&e._modeBar.destroy(),t._transitionData&&(t._transitionData._interruptCallbacks&&(t._transitionData._interruptCallbacks.length=0),t._transitionData._animationRaf&&window.cancelAnimationFrame(t._transitionData._animationRaf)),l.clearThrottle(),l.clearResponsive(t),delete t.data,delete t.layout,delete t._fullData,delete t._fullLayout,delete t.calcdata,delete t.framework,delete t.empty,delete t.fid,delete t.undoqueue,delete t.undonum,delete t.autoplay,delete t.changed,delete t._promises,delete t._redrawTimer,delete t._hmlumcount,delete t._hmpixcount,delete t._transitionData,delete t._transitioning,delete t._initialAutoSize,delete t._transitioningWithDuration,delete t._dragging,delete t._dragged,delete t._hoverdata,delete t._snapshotInProgress,delete t._editing,delete t._replotPending,delete t._mouseDownTime,delete t._legendMouseDownTime,t.removeAllListeners&&t.removeAllListeners()},v.style=function(t){var e,r=t._fullLayout._visibleModules,n=[];for(e=0;e<r.length;e++){var i=r[e];i.style&&l.pushUnique(n,i.style)}for(e=0;e<n.length;e++)n[e](t)},v.sanitizeMargins=function(t){if(t&&t.margin){var e,r=t.width,n=t.height,i=t.margin,a=r-(i.l+i.r),o=n-(i.t+i.b);a<0&&(e=(r-1)/(i.l+i.r),i.l=Math.floor(e*i.l),i.r=Math.floor(e*i.r)),o<0&&(e=(n-1)/(i.t+i.b),i.t=Math.floor(e*i.t),i.b=Math.floor(e*i.b))}},v.clearAutoMarginIds=function(t){t._fullLayout._pushmarginIds={}},v.allowAutoMargin=function(t,e){t._fullLayout._pushmarginIds[e]=1},v.autoMargin=function(t,e,r){var n=t._fullLayout,i=n._pushmargin,a=n._pushmarginIds;if(!1!==n.margin.autoexpand){if(r){var o=r.pad;if(void 0===o){var s=n.margin;o=Math.min(12,s.l,s.r,s.t,s.b)}r.l+r.r>.5*n.width&&(r.l=r.r=0),r.b+r.t>.5*n.height&&(r.b=r.t=0);var l=void 0!==r.xl?r.xl:r.x,c=void 0!==r.xr?r.xr:r.x,u=void 0!==r.yt?r.yt:r.y,f=void 0!==r.yb?r.yb:r.y;i[e]={l:{val:l,size:r.l+o},r:{val:c,size:r.r+o},b:{val:f,size:r.b+o},t:{val:u,size:r.t+o}},a[e]=1}else delete i[e],delete a[e];n._replotting||v.doAutoMargin(t)}},v.doAutoMargin=function(t){var e=t._fullLayout;e._size||(e._size={}),M(e);var r=e._size,n=JSON.stringify(r),o=e.margin,s=o.l,l=o.r,c=o.t,u=o.b,f=e._pushmargin,h=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var p in f)h[p]||delete f[p];for(var d in f.base={l:{val:0,size:s},r:{val:1,size:l},t:{val:1,size:c},b:{val:0,size:u}},f){var g=f[d].l||{},v=f[d].b||{},m=g.val,y=g.size,x=v.val,b=v.size;for(var _ in f){if(i(y)&&f[_].r){var w=f[_].r.val,k=f[_].r.size;if(w>m){var A=(y*w+(k-e.width)*m)/(w-m),T=(k*(1-m)+(y-e.width)*(1-w))/(w-m);A>=0&&T>=0&&A+T>s+l&&(s=A,l=T)}}if(i(b)&&f[_].t){var S=f[_].t.val,C=f[_].t.size;if(S>x){var E=(b*S+(C-e.height)*x)/(S-x),L=(C*(1-x)+(b-e.height)*(1-S))/(S-x);E>=0&&L>=0&&E+L>u+c&&(u=E,c=L)}}}}}if(r.l=Math.round(s),r.r=Math.round(l),r.t=Math.round(c),r.b=Math.round(u),r.p=Math.round(o.pad),r.w=Math.round(e.width)-r.l-r.r,r.h=Math.round(e.height)-r.t-r.b,!e._replotting&&\"{}\"!==n&&n!==JSON.stringify(e._size))return\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1,a.call(\"plot\",t)},v.graphJson=function(t,e,r,n,i){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&v.supplyDefaults(t);var a=i?t._fullData:t.data,o=i?t._fullLayout:t.layout,s=(t._transitionData||{})._frames;function c(t){if(\"function\"==typeof t)return null;if(l.isPlainObject(t)){var e,n,i={};for(e in t)if(\"function\"!=typeof t[e]&&-1===[\"_\",\"[\"].indexOf(e.charAt(0))){if(\"keepdata\"===r){if(\"src\"===e.substr(e.length-3))continue}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[e+\"src\"])&&n.indexOf(\":\")>0&&!l.isPlainObject(t.stream))continue}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[e+\"src\"])&&n.indexOf(\":\")>0)continue;i[e]=c(t[e])}return i}return Array.isArray(t)?t.map(c):l.isTypedArray(t)?l.simpleMap(t,l.identity):l.isJSDate(t)?l.ms2DateTimeLocal(+t):t}var u={data:(a||[]).map(function(t){var r=c(t);return e&&delete r.fit,r})};return e||(u.layout=c(o)),t.framework&&t.framework.isPolar&&(u=t.framework.getConfig()),s&&(u.frames=c(s)),\"object\"===n?u:JSON.stringify(u)},v.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r<e.length;r++)switch((n=e[r]).type){case\"replace\":i=n.value;var s=(a[n.index]||{}).name,l=i.name;a[n.index]=o[l]=i,l!==s&&(delete o[s],o[l]=i);break;case\"insert\":o[(i=n.value).name]=i,a.splice(n.index,0,i);break;case\"delete\":delete o[(i=a[n.index]).name],a.splice(n.index,1)}return Promise.resolve()},v.computeFrame=function(t,e){var r,n,i,a,o=t._transitionData._frameHash;if(!e)throw new Error(\"computeFrame must be given a string frame name\");var s=o[e.toString()];if(!s)return!1;for(var l=[s],c=[s.name];s.baseframe&&(s=o[s.baseframe.toString()])&&-1===c.indexOf(s.name);)l.push(s),c.push(s.name);for(var u={};s=l.pop();)if(s.layout&&(u.layout=v.extendLayout(u.layout,s.layout)),s.data){if(u.data||(u.data=[]),!(n=s.traces))for(n=[],r=0;r<s.data.length;r++)n[r]=r;for(u.traces||(u.traces=[]),r=0;r<s.data.length;r++)null!=(i=n[r])&&(-1===(a=u.traces.indexOf(i))&&(a=u.data.length,u.traces[a]=i),u.data[a]=v.extendTrace(u.data[a],s.data[r]))}return u},v.recomputeFrameHash=function(t){for(var e=t._transitionData._frameHash={},r=t._transitionData._frames,n=0;n<r.length;n++){var i=r[n];i&&i.name&&(e[i.name]=i)}},v.extendObjectWithContainers=function(t,e,r){var n,i,a,o,s,c,u,f=l.extendDeepNoArrays({},e||{}),h=l.expandObjectPaths(f),p={};if(r&&r.length)for(a=0;a<r.length;a++)void 0===(i=(n=l.nestedProperty(h,r[a])).get())?l.nestedProperty(p,r[a]).set(null):(n.set(null),l.nestedProperty(p,r[a]).set(i));if(t=l.extendDeepNoArrays(t||{},h),r&&r.length)for(a=0;a<r.length;a++)if(c=l.nestedProperty(p,r[a]).get()){for(u=(s=l.nestedProperty(t,r[a])).get(),Array.isArray(u)||(u=[],s.set(u)),o=0;o<c.length;o++){var d=c[o];u[o]=null===d?null:v.extendObjectWithContainers(u[o],d)}s.set(u)}return t},v.dataArrayContainers=[\"transforms\",\"dimensions\"],v.layoutArrayContainers=a.layoutArrayContainers,v.extendTrace=function(t,e){return v.extendObjectWithContainers(t,e,v.dataArrayContainers)},v.extendLayout=function(t,e){return v.extendObjectWithContainers(t,e,v.layoutArrayContainers)},v.transition=function(t,e,r,n,i,a){var o={redraw:i.redraw},s=[],c=[];return o.prepareFn=function(){for(var i=Array.isArray(e)?e.length:0,a=n.slice(0,i),o=0;o<a.length;o++){var u=a[o],f=t._fullData[u]._module;f&&(f.animatable&&s.push(u),t.data[a[o]]=v.extendTrace(t.data[a[o]],e[o]))}var h=l.expandObjectPaths(l.extendDeepNoArrays({},r)),p=/^[xy]axis[0-9]*$/;for(var d in h)p.test(d)&&delete h[d].range;v.extendLayout(t.layout,h),delete t.calcdata,v.supplyDefaults(t),v.doCalcdata(t);var g=l.expandObjectPaths(r);if(g){var m=t._fullLayout._plots;for(var y in m){var x,b,_,w,k=m[y],A=k.xaxis,M=k.yaxis,T=A.range.slice(),S=M.range.slice();Array.isArray(g[A._name+\".range\"])?x=g[A._name+\".range\"].slice():Array.isArray((g[A._name]||{}).range)&&(x=g[A._name].range.slice()),Array.isArray(g[M._name+\".range\"])?b=g[M._name+\".range\"].slice():Array.isArray((g[M._name]||{}).range)&&(b=g[M._name].range.slice()),T&&x&&(T[0]!==x[0]||T[1]!==x[1])&&(_={xr0:T,xr1:x}),S&&b&&(S[0]!==b[0]||S[1]!==b[1])&&(w={yr0:S,yr1:b}),(_||w)&&c.push(l.extendFlat({plotinfo:k},_,w))}}return Promise.resolve()},o.runFn=function(e){var n,i,o=t._fullLayout._basePlotModules,u=c.length;if(r)for(i=0;i<o.length;i++)o[i].transitionAxes&&o[i].transitionAxes(t,c,a,e);for(u?((n=l.extendFlat({},a)).duration=0,s=null):n=a,i=0;i<o.length;i++)o[i].plot(t,s,n,e)},T(t,a,o)},v.transitionFromReact=function(t,e,r,n){var i=t._fullLayout,a=i.transition,o={},s=[];return o.prepareFn=function(){var t=i._plots;for(var a in o.redraw=!1,\"some\"===e.anim&&(o.redraw=!0),\"some\"===r.anim&&(o.redraw=!0),t){var c,u,f=t[a],h=f.xaxis,p=f.yaxis,d=n[h._name].range.slice(),g=n[p._name].range.slice(),v=h.range.slice(),m=p.range.slice();h.setScale(),p.setScale(),d[0]===v[0]&&d[1]===v[1]||(c={xr0:d,xr1:v}),g[0]===m[0]&&g[1]===m[1]||(u={yr0:g,yr1:m}),(c||u)&&s.push(l.extendFlat({plotinfo:f},c,u))}return Promise.resolve()},o.runFn=function(r){for(var n,i,o,c=t._fullData,u=t._fullLayout._basePlotModules,f=[],h=0;h<c.length;h++)f.push(h);function p(){for(var e=0;e<u.length;e++)u[e].transitionAxes&&u[e].transitionAxes(t,s,n,r)}function d(){for(var e=0;e<u.length;e++)u[e].plot(t,o,i,r)}s.length&&e.anim?\"traces first\"===a.ordering?(n=l.extendFlat({},a,{duration:0}),o=f,i=a,d(),setTimeout(p,a.duration)):(n=a,o=null,i=l.extendFlat({},a,{duration:0}),p(),d()):s.length?(n=a,p()):e.anim&&(o=f,i=a,d())},T(t,a,o)},v.doCalcdata=function(t,e){var r,n,i,s,c=f.list(t),h=t._fullData,p=t._fullLayout,d=new Array(h.length),g=(t.calcdata||[]).slice(0);for(t.calcdata=d,p._numBoxes=0,p._numViolins=0,p._violinScaleGroupStats={},t._hmpixcount=0,t._hmlumcount=0,p._piecolormap={},i=0;i<h.length;i++)Array.isArray(e)&&-1===e.indexOf(i)&&(d[i]=g[i]);for(i=0;i<h.length;i++)(r=h[i])._arrayAttrs=o.findArrayAttributes(r),r._extremes={};var v=p._subplots.polar||[];for(i=0;i<v.length;i++)c.push(p[v[i]].radialaxis,p[v[i]].angularaxis);S(c,h);var y=!1;for(i=0;i<h.length;i++)if(!0===(r=h[i]).visible&&r.transforms){if((n=r._module)&&n.calc){var x=n.calc(t,r);x[0]&&x[0].t&&x[0].t._scene&&delete x[0].t._scene.dirty}for(s=0;s<r.transforms.length;s++){var b=r.transforms[s];(n=m[b.type])&&n.calcTransform&&(r._hasCalcTransform=!0,y=!0,n.calcTransform(t,r,b))}}function _(e,i){if(r=h[e],!!(n=r._module).isContainer===i){var a=[];if(!0===r.visible){delete r._indexToPoints;var o=r.transforms||[];for(s=o.length-1;s>=0;s--)if(o[s].enabled){r._indexToPoints=o[s]._indexToPoints;break}n&&n.calc&&(a=n.calc(t,r))}Array.isArray(a)&&a[0]||(a=[{x:u,y:u}]),a[0].t||(a[0].t={}),a[0].trace=r,d[e]=a}}for(y&&S(c,h),i=0;i<h.length;i++)_(i,!0);for(i=0;i<h.length;i++)_(i,!1);!function(t){var e,r,n,i=t._fullLayout,a=i._visibleModules,o={};for(r=0;r<a.length;r++){var s=a[r],c=s.crossTraceCalc;if(c){var u=s.basePlotModule.name;o[u]?l.pushUnique(o[u],c):o[u]=[c]}}for(n in o){var f=o[n],h=i._subplots[n];if(Array.isArray(h))for(e=0;e<h.length;e++){var p=h[e],d=\"cartesian\"===n?i._plots[p]:i[p];for(r=0;r<f.length;r++)f[r](t,d,p)}else for(r=0;r<f.length;r++)f[r](t)}}(t),a.getComponentMethod(\"fx\",\"calc\")(t),a.getComponentMethod(\"errorbars\",\"calc\")(t)},v.rehover=function(t){t._fullLayout._rehover&&t._fullLayout._rehover()},v.generalUpdatePerTraceModule=function(t,e,r,n){var i,a=e.traceHash,o={};for(i=0;i<r.length;i++){var s=r[i],c=s[0].trace;c.visible&&(o[c.type]=o[c.type]||[],o[c.type].push(s))}for(var u in a)if(!o[u]){var f=a[u][0];f[0].trace.visible=!1,o[u]=[f]}for(var h in o){var p=o[h];p[0][0].trace._module.plot(t,e,l.filterVisible(p),n)}e.traceHash=o}},{\"../components/color\":571,\"../constants/numerical\":671,\"../lib\":694,\"../plot_api/plot_schema\":731,\"../plot_api/plot_template\":732,\"../plots/cartesian/axis_ids\":745,\"../registry\":825,\"./animation_attributes\":737,\"./attributes\":739,\"./command\":767,\"./font_attributes\":769,\"./frame_attributes\":770,\"./layout_attributes\":797,d3:149,\"fast-isnumeric\":215}],807:[function(t,e,r){\"use strict\";e.exports={attr:\"subplot\",name:\"polar\",axisNames:[\"angularaxis\",\"radialaxis\"],axisName2dataArray:{angularaxis:\"theta\",radialaxis:\"r\"},layerNames:[\"draglayer\",\"plotbg\",\"backplot\",\"angular-grid\",\"radial-grid\",\"frontplot\",\"angular-line\",\"radial-line\",\"angular-axis\",\"radial-axis\"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}},{}],808:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/polygon\").tester,a=n.findIndexOfMin,o=n.isAngleInsideSector,s=n.angleDelta,l=n.angleDist;function c(t,e,r,n){var i,a,o=n[0],s=n[1],l=f(Math.sin(e)-Math.sin(t)),c=f(Math.cos(e)-Math.cos(t)),u=Math.tan(r),h=f(1/u),p=l/c,d=s-p*o;return h?l&&c?a=u*(i=d/(u-p)):c?(i=s*h,a=s):(i=o,a=o*u):l&&c?(i=0,a=d):c?(i=0,a=s):i=a=NaN,[i,a]}function u(t,e,r,i){return n.isFullCircle([e,r])?function(t,e){var r,n=e.length,i=new Array(n+1);for(r=0;r<n;r++){var a=e[r];i[r]=[t*Math.cos(a),t*Math.sin(a)]}return i[r]=i[0].slice(),i}(t,i):function(t,e,r,i){var s,u,f=i.length,h=[];function p(e){return[t*Math.cos(e),t*Math.sin(e)]}function d(t,e,r){return c(t,e,r,p(t))}function g(t){return n.mod(t,f)}function v(t){return o(t,[e,r])}var m=a(i,function(t){return v(t)?l(t,e):1/0}),y=d(i[m],i[g(m-1)],e);for(h.push(y),s=m,u=0;u<f;s++,u++){var x=i[g(s)];if(!v(x))break;h.push(p(x))}var b=a(i,function(t){return v(t)?l(t,r):1/0}),_=d(i[b],i[g(b+1)],r);return h.push(_),h.push([0,0]),h.push(h[0].slice()),h}(t,e,r,i)}function f(t){return Math.abs(t)>1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a<n;a++){var o=t[a];i[a]=[e+o[0],r-o[1]]}return i}e.exports={isPtInsidePolygon:function(t,e,r,n,a){if(!o(e,n))return!1;var s,l;r[0]<r[1]?(s=r[0],l=r[1]):(s=r[1],l=r[0]);var c=i(u(s,n[0],n[1],a)),f=i(u(l,n[0],n[1],a)),h=[t*Math.cos(e),t*Math.sin(e)];return f.contains(h)&&!c.contains(h)},findPolygonOffset:function(t,e,r,n){for(var i=1/0,a=1/0,o=u(t,e,r,n),s=0;s<o.length;s++){var l=o[s];i=Math.min(i,l[0]),a=Math.min(a,-l[1])}return[i,a]},findEnclosingVertexAngles:function(t,e){var r=a(e,function(e){var r=s(e,t);return r>0?r:1/0}),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t<e?(s=t,l=e):(s=e,l=t);var c=h(u(s,r,n,i),a,o);return\"M\"+h(u(l,r,n,i),a,o).reverse().join(\"L\")+\"M\"+c.join(\"L\")}}},{\"../../lib\":694,\"../../lib/polygon\":706}],809:[function(t,e,r){\"use strict\";var n=t(\"../get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./polar\"),o=t(\"./constants\"),s=o.attr,l=o.name,c=i(l),u={};u[s]={valType:\"subplotid\",dflt:l,editType:\"calc\"},e.exports={attr:s,name:l,idRoot:l,idRegex:c,attrRegex:c,attributes:u,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots[l],o=0;o<i.length;o++){var s=i[o],c=n(r,l,s),u=e[s]._subplot;u||(u=a(t,s),e[s]._subplot=u),u.plot(c,e,t._promises)}},clean:function(t,e,r,n){for(var i=n._subplots[l]||[],a=n._has&&n._has(\"gl\"),o=e._has&&e._has(\"gl\"),s=a&&!o,c=0;c<i.length;c++){var u=i[c],f=n[u]._subplot;if(!e[u]&&f)for(var h in f.framework.remove(),f.layers[\"radial-axis-title\"].remove(),f.clipPaths)f.clipPaths[h].remove();s&&f._scene&&(f._scene.destroy(),f._scene=null)}},toSVG:t(\"../cartesian\").toSVG}},{\"../../lib\":694,\"../cartesian\":754,\"../get_data\":779,\"./constants\":807,\"./layout_attributes\":810,\"./layout_defaults\":811,\"./polar\":818}],810:[function(t,e,r){\"use strict\";var n=t(\"../../components/color/attributes\"),i=t(\"../cartesian/layout_attributes\"),a=t(\"../domain\").attributes,o=t(\"../../lib\").extendFlat,s=t(\"../../plot_api/edit_types\").overrideAll,l=s({color:i.color,showline:o({},i.showline,{dflt:!0}),linecolor:i.linecolor,linewidth:i.linewidth,showgrid:o({},i.showgrid,{dflt:!0}),gridcolor:i.gridcolor,gridwidth:i.gridwidth},\"plot\",\"from-root\"),c=s({tickmode:i.tickmode,nticks:i.nticks,tick0:i.tick0,dtick:i.dtick,tickvals:i.tickvals,ticktext:i.ticktext,ticks:i.ticks,ticklen:i.ticklen,tickwidth:i.tickwidth,tickcolor:i.tickcolor,showticklabels:i.showticklabels,showtickprefix:i.showtickprefix,tickprefix:i.tickprefix,showticksuffix:i.showticksuffix,ticksuffix:i.ticksuffix,showexponent:i.showexponent,exponentformat:i.exponentformat,separatethousands:i.separatethousands,tickfont:i.tickfont,tickangle:i.tickangle,tickformat:i.tickformat,tickformatstops:i.tickformatstops,layer:i.layer},\"plot\",\"from-root\"),u={visible:o({},i.visible,{dflt:!0}),type:o({},i.type,{values:[\"-\",\"linear\",\"log\",\"date\",\"category\"]}),autorange:o({},i.autorange,{editType:\"plot\"}),rangemode:{valType:\"enumerated\",values:[\"tozero\",\"nonnegative\",\"normal\"],dflt:\"tozero\",editType:\"calc\"},range:o({},i.range,{items:[{valType:\"any\",editType:\"plot\",impliedEdits:{\"^autorange\":!1}},{valType:\"any\",editType:\"plot\",impliedEdits:{\"^autorange\":!1}}],editType:\"plot\"}),categoryorder:i.categoryorder,categoryarray:i.categoryarray,angle:{valType:\"angle\",editType:\"plot\"},side:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"clockwise\",editType:\"plot\"},title:s(i.title,\"plot\",\"from-root\"),hoverformat:i.hoverformat,uirevision:{valType:\"any\",editType:\"none\"},editType:\"calc\",_deprecated:{title:i._deprecated.title,titlefont:i._deprecated.titlefont}};u.title.text.dflt=\"\",o(u,l,c);var f={visible:o({},i.visible,{dflt:!0}),type:{valType:\"enumerated\",values:[\"-\",\"linear\",\"category\"],dflt:\"-\",editType:\"calc\",_noTemplating:!0},categoryorder:i.categoryorder,categoryarray:i.categoryarray,thetaunit:{valType:\"enumerated\",values:[\"radians\",\"degrees\"],dflt:\"degrees\",editType:\"calc\"},period:{valType:\"number\",editType:\"calc\",min:0},direction:{valType:\"enumerated\",values:[\"counterclockwise\",\"clockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"angle\",editType:\"calc\"},hoverformat:i.hoverformat,uirevision:{valType:\"any\",editType:\"none\"},editType:\"calc\"};o(f,l,c),e.exports={domain:a({name:\"polar\",editType:\"plot\"}),sector:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],dflt:[0,360],editType:\"plot\"},hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"plot\"},bgcolor:{valType:\"color\",editType:\"plot\",dflt:n.background},radialaxis:u,angularaxis:f,gridshape:{valType:\"enumerated\",values:[\"circular\",\"linear\"],dflt:\"circular\",editType:\"plot\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"calc\"}},{\"../../components/color/attributes\":570,\"../../lib\":694,\"../../plot_api/edit_types\":725,\"../cartesian/layout_attributes\":755,\"../domain\":768}],811:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../plot_api/plot_template\"),o=t(\"../subplot_defaults\"),s=t(\"../get_data\").getSubplotData,l=t(\"../cartesian/tick_value_defaults\"),c=t(\"../cartesian/tick_mark_defaults\"),u=t(\"../cartesian/tick_label_defaults\"),f=t(\"../cartesian/category_order_defaults\"),h=t(\"../cartesian/line_grid_defaults\"),p=t(\"../cartesian/axis_autotype\"),d=t(\"./layout_attributes\"),g=t(\"./set_convert\"),v=t(\"./constants\"),m=v.axisNames;function y(t,e,r,o){var p=r(\"bgcolor\");o.bgColor=i.combine(p,o.paper_bgcolor);var y=r(\"sector\");r(\"hole\");var b,_=s(o.fullData,v.name,o.id),w=o.layoutOut;function k(t,e){return r(b+\".\"+t,e)}for(var A=0;A<m.length;A++){b=m[A],n.isPlainObject(t[b])||(t[b]={});var M=t[b],T=a.newContainer(e,b);T._id=T._name=b,T._attr=o.id+\".\"+b,T._traceIndices=_.map(function(t){return t._expandedIndex});var S=v.axisName2dataArray[b],C=x(M,T,k,_,S);f(M,T,k,{axData:_,dataAttr:S});var E,L,z=k(\"visible\");switch(g(T,e,w),k(\"uirevision\",e.uirevision),z&&(L=(E=k(\"color\"))===M.color?E:o.font.color),T._m=1,b){case\"radialaxis\":var O=k(\"autorange\",!T.isValidRange(M.range));M.autorange=O,!O||\"linear\"!==C&&\"-\"!==C||k(\"rangemode\"),\"reversed\"===O&&(T._m=-1),k(\"range\"),T.cleanRange(\"range\",{dfltRange:[0,1]}),z&&(k(\"side\"),k(\"angle\",y[0]),k(\"title.text\"),n.coerceFont(k,\"title.font\",{family:o.font.family,size:Math.round(1.2*o.font.size),color:L}));break;case\"angularaxis\":if(\"date\"===C){n.log(\"Polar plots do not support date angular axes yet.\");for(var I=0;I<_.length;I++)_[I].visible=!1;C=M.type=T.type=\"linear\"}k(\"linear\"===C?\"thetaunit\":\"period\");var D=k(\"direction\");k(\"rotation\",{counterclockwise:0,clockwise:90}[D])}if(z)l(M,T,k,T.type),u(M,T,k,T.type,{tickSuffixDflt:\"degrees\"===T.thetaunit?\"\\xb0\":void 0}),c(M,T,k,{outerTicks:!0}),k(\"showticklabels\")&&(n.coerceFont(k,\"tickfont\",{family:o.font.family,size:o.font.size,color:L}),k(\"tickangle\"),k(\"tickformat\")),h(M,T,k,{dfltColor:E,bgColor:o.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:d[b]}),k(\"layer\");\"category\"!==C&&k(\"hoverformat\"),T._input=M}\"category\"===e.angularaxis.type&&r(\"gridshape\")}function x(t,e,r,n,i){if(\"-\"===r(\"type\")){for(var a,o=0;o<n.length;o++)if(n[o].visible){a=n[o];break}a&&a[i]&&(e.type=p(a[i],\"gregorian\")),\"-\"===e.type?e.type=\"linear\":t.type=e.type}return e.type}e.exports=function(t,e,r){o(t,e,r,{type:v.name,attributes:d,handleDefaults:y,font:e.font,paper_bgcolor:e.paper_bgcolor,fullData:r,layoutOut:e})}},{\"../../components/color\":571,\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../cartesian/axis_autotype\":743,\"../cartesian/category_order_defaults\":746,\"../cartesian/line_grid_defaults\":757,\"../cartesian/tick_label_defaults\":762,\"../cartesian/tick_mark_defaults\":763,\"../cartesian/tick_value_defaults\":764,\"../get_data\":779,\"../subplot_defaults\":820,\"./constants\":807,\"./layout_attributes\":810,\"./set_convert\":819}],812:[function(t,e,r){\"use strict\";var n=t(\"../../../traces/scatter/attributes\"),i=n.marker,a=t(\"../../../lib/extend\").extendFlat;[\"Area traces are deprecated!\",\"Please switch to the *barpolar* trace type.\"].join(\" \");e.exports={r:a({},n.r,{}),t:a({},n.t,{}),marker:{color:a({},i.color,{}),size:a({},i.size,{}),symbol:a({},i.symbol,{}),opacity:a({},i.opacity,{}),editType:\"calc\"}}},{\"../../../lib/extend\":684,\"../../../traces/scatter/attributes\":1047}],813:[function(t,e,r){\"use strict\";var n=t(\"../../cartesian/layout_attributes\"),i=t(\"../../../lib/extend\").extendFlat,a=t(\"../../../plot_api/edit_types\").overrideAll,o=[\"Legacy polar charts are deprecated!\",\"Please switch to *polar* subplots.\"].join(\" \"),s=i({},n.domain,{});function l(t,e){return i({},e,{showline:{valType:\"boolean\"},showticklabels:{valType:\"boolean\"},tickorientation:{valType:\"enumerated\",values:[\"horizontal\",\"vertical\"]},ticklen:{valType:\"number\",min:0},tickcolor:{valType:\"color\"},ticksuffix:{valType:\"string\"},endpadding:{valType:\"number\",description:o},visible:{valType:\"boolean\"}})}e.exports=a({radialaxis:l(0,{range:{valType:\"info_array\",items:[{valType:\"number\"},{valType:\"number\"}]},domain:s,orientation:{valType:\"number\"}}),angularaxis:l(0,{range:{valType:\"info_array\",items:[{valType:\"number\",dflt:0},{valType:\"number\",dflt:360}]},domain:s}),layout:{direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"]},orientation:{valType:\"angle\"}}},\"plot\",\"nested\")},{\"../../../lib/extend\":684,\"../../../plot_api/edit_types\":725,\"../../cartesian/layout_attributes\":755}],814:[function(t,e,r){\"use strict\";(e.exports=t(\"./micropolar\")).manager=t(\"./micropolar_manager\")},{\"./micropolar\":815,\"./micropolar_manager\":816}],815:[function(t,e,r){var n=t(\"d3\"),i=t(\"../../../lib\").extendDeepAll,a=t(\"../../../constants/alignment\").MID_SHIFT,o=e.exports={version:\"0.2.2\"};o.Axis=function(){var t,e,r,s,l={data:[],layout:{}},c={},u={},f=n.dispatch(\"hover\"),h={};return h.render=function(c){return function(c){e=c||e;var f=l.data,h=l.layout;(\"string\"==typeof e||e.nodeName)&&(e=n.select(e)),e.datum(f).each(function(e,l){var c=e.slice();u={data:o.util.cloneJson(c),layout:o.util.cloneJson(h)};var f=0;c.forEach(function(t,e){t.color||(t.color=h.defaultColorRange[f],f=(f+1)%h.defaultColorRange.length),t.strokeColor||(t.strokeColor=\"LinePlot\"===t.geometry?t.color:n.rgb(t.color).darker().toString()),u.data[e].color=t.color,u.data[e].strokeColor=t.strokeColor,u.data[e].strokeDash=t.strokeDash,u.data[e].strokeSize=t.strokeSize});var p=c.filter(function(t,e){var r=t.visible;return\"undefined\"==typeof r||!0===r}),d=!1,g=p.map(function(t,e){return d=d||\"undefined\"!=typeof t.groupId,t});if(d){var v=n.nest().key(function(t,e){return\"undefined\"!=typeof t.groupId?t.groupId:\"unstacked\"}).entries(g),m=[],y=v.map(function(t,e){if(\"unstacked\"===t.key)return t.values;var r=t.values[0].r.map(function(t,e){return 0});return t.values.forEach(function(t,e,n){t.yStack=[r],m.push(r),r=o.util.sumArrays(t.r,r)}),t.values});p=n.merge(y)}p.forEach(function(t,e){t.t=Array.isArray(t.t[0])?t.t:[t.t],t.r=Array.isArray(t.r[0])?t.r:[t.r]});var x=Math.min(h.width-h.margin.left-h.margin.right,h.height-h.margin.top-h.margin.bottom)/2;x=Math.max(10,x);var b,_=[h.margin.left+x,h.margin.top+x];b=d?[0,n.max(o.util.sumArrays(o.util.arrayLast(p).r[0],o.util.arrayLast(m)))]:n.extent(o.util.flattenArray(p.map(function(t,e){return t.r}))),h.radialAxis.domain!=o.DATAEXTENT&&(b[0]=0),r=n.scale.linear().domain(h.radialAxis.domain!=o.DATAEXTENT&&h.radialAxis.domain?h.radialAxis.domain:b).range([0,x]),u.layout.radialAxis.domain=r.domain();var w,k=o.util.flattenArray(p.map(function(t,e){return t.t})),A=\"string\"==typeof k[0];A&&(k=o.util.deduplicate(k),w=k.slice(),k=n.range(k.length),p=p.map(function(t,e){var r=t;return t.t=[k],d&&(r.yStack=t.yStack),r}));var M=p.filter(function(t,e){return\"LinePlot\"===t.geometry||\"DotPlot\"===t.geometry}).length===p.length,T=null===h.needsEndSpacing?A||!M:h.needsEndSpacing,S=h.angularAxis.domain&&h.angularAxis.domain!=o.DATAEXTENT&&!A&&h.angularAxis.domain[0]>=0?h.angularAxis.domain:n.extent(k),C=Math.abs(k[1]-k[0]);M&&!A&&(C=0);var E=S.slice();T&&A&&(E[1]+=C);var L=h.angularAxis.ticksCount||4;L>8&&(L=L/(L/8)+L%8),h.angularAxis.ticksStep&&(L=(E[1]-E[0])/L);var z=h.angularAxis.ticksStep||(E[1]-E[0])/(L*(h.minorTicks+1));w&&(z=Math.max(Math.round(z),1)),E[2]||(E[2]=z);var O=n.range.apply(this,E);if(O=O.map(function(t,e){return parseFloat(t.toPrecision(12))}),s=n.scale.linear().domain(E.slice(0,2)).range(\"clockwise\"===h.direction?[0,360]:[360,0]),u.layout.angularAxis.domain=s.domain(),u.layout.angularAxis.endPadding=T?C:0,\"undefined\"==typeof(t=n.select(this).select(\"svg.chart-root\"))||t.empty()){var I=(new DOMParser).parseFromString(\"<svg xmlns='http://www.w3.org/2000/svg' class='chart-root'>' + '<g class='outer-group'>' + '<g class='chart-group'>' + '<circle class='background-circle'></circle>' + '<g class='geometry-group'></g>' + '<g class='radial axis-group'>' + '<circle class='outside-circle'></circle>' + '</g>' + '<g class='angular axis-group'></g>' + '<g class='guides-group'><line></line><circle r='0'></circle></g>' + '</g>' + '<g class='legend-group'></g>' + '<g class='tooltips-group'></g>' + '<g class='title-group'><text></text></g>' + '</g>' + '</svg>\",\"application/xml\"),D=this.appendChild(this.ownerDocument.importNode(I.documentElement,!0));t=n.select(D)}t.select(\".guides-group\").style({\"pointer-events\":\"none\"}),t.select(\".angular.axis-group\").style({\"pointer-events\":\"none\"}),t.select(\".radial.axis-group\").style({\"pointer-events\":\"none\"});var P,R=t.select(\".chart-group\"),F={fill:\"none\",stroke:h.tickColor},B={\"font-size\":h.font.size,\"font-family\":h.font.family,fill:h.font.color,\"text-shadow\":[\"-1px 0px\",\"1px -1px\",\"-1px 1px\",\"1px 1px\"].map(function(t,e){return\" \"+t+\" 0 \"+h.font.outlineColor}).join(\",\")};if(h.showLegend){P=t.select(\".legend-group\").attr({transform:\"translate(\"+[x,h.margin.top]+\")\"}).style({display:\"block\"});var N=p.map(function(t,e){var r=o.util.cloneJson(t);return r.symbol=\"DotPlot\"===t.geometry?t.dotType||\"circle\":\"LinePlot\"!=t.geometry?\"square\":\"line\",r.visibleInLegend=\"undefined\"==typeof t.visibleInLegend||t.visibleInLegend,r.color=\"LinePlot\"===t.geometry?t.strokeColor:t.color,r});o.Legend().config({data:p.map(function(t,e){return t.name||\"Element\"+e}),legendConfig:i({},o.Legend.defaultConfig().legendConfig,{container:P,elements:N,reverseOrder:h.legend.reverseOrder})})();var j=P.node().getBBox();x=Math.min(h.width-j.width-h.margin.left-h.margin.right,h.height-h.margin.top-h.margin.bottom)/2,x=Math.max(10,x),_=[h.margin.left+x,h.margin.top+x],r.range([0,x]),u.layout.radialAxis.domain=r.domain(),P.attr(\"transform\",\"translate(\"+[_[0]+x,_[1]-x]+\")\")}else P=t.select(\".legend-group\").style({display:\"none\"});t.attr({width:h.width,height:h.height}).style({opacity:h.opacity}),R.attr(\"transform\",\"translate(\"+_+\")\").style({cursor:\"crosshair\"});var V=[(h.width-(h.margin.left+h.margin.right+2*x+(j?j.width:0)))/2,(h.height-(h.margin.top+h.margin.bottom+2*x))/2];if(V[0]=Math.max(0,V[0]),V[1]=Math.max(0,V[1]),t.select(\".outer-group\").attr(\"transform\",\"translate(\"+V+\")\"),h.title&&h.title.text){var U=t.select(\"g.title-group text\").style(B).text(h.title.text),q=U.node().getBBox();U.attr({x:_[0]-q.width/2,y:_[1]-x-20})}var H=t.select(\".radial.axis-group\");if(h.radialAxis.gridLinesVisible){var G=H.selectAll(\"circle.grid-circle\").data(r.ticks(5));G.enter().append(\"circle\").attr({class:\"grid-circle\"}).style(F),G.attr(\"r\",r),G.exit().remove()}H.select(\"circle.outside-circle\").attr({r:x}).style(F);var W=t.select(\"circle.background-circle\").attr({r:x}).style({fill:h.backgroundColor,stroke:h.stroke});function Y(t,e){return s(t)%360+h.orientation}if(h.radialAxis.visible){var X=n.svg.axis().scale(r).ticks(5).tickSize(5);H.call(X).attr({transform:\"rotate(\"+h.radialAxis.orientation+\")\"}),H.selectAll(\".domain\").style(F),H.selectAll(\"g>text\").text(function(t,e){return this.textContent+h.radialAxis.ticksSuffix}).style(B).style({\"text-anchor\":\"start\"}).attr({x:0,y:0,dx:0,dy:0,transform:function(t,e){return\"horizontal\"===h.radialAxis.tickOrientation?\"rotate(\"+-h.radialAxis.orientation+\") translate(\"+[0,B[\"font-size\"]]+\")\":\"translate(\"+[0,B[\"font-size\"]]+\")\"}}),H.selectAll(\"g>line\").style({stroke:\"black\"})}var Z=t.select(\".angular.axis-group\").selectAll(\"g.angular-tick\").data(O),$=Z.enter().append(\"g\").classed(\"angular-tick\",!0);Z.attr({transform:function(t,e){return\"rotate(\"+Y(t)+\")\"}}).style({display:h.angularAxis.visible?\"block\":\"none\"}),Z.exit().remove(),$.append(\"line\").classed(\"grid-line\",!0).classed(\"major\",function(t,e){return e%(h.minorTicks+1)==0}).classed(\"minor\",function(t,e){return!(e%(h.minorTicks+1)==0)}).style(F),$.selectAll(\".minor\").style({stroke:h.minorTickColor}),Z.select(\"line.grid-line\").attr({x1:h.tickLength?x-h.tickLength:0,x2:x}).style({display:h.angularAxis.gridLinesVisible?\"block\":\"none\"}),$.append(\"text\").classed(\"axis-text\",!0).style(B);var J=Z.select(\"text.axis-text\").attr({x:x+h.labelOffset,dy:a+\"em\",transform:function(t,e){var r=Y(t),n=x+h.labelOffset,i=h.angularAxis.tickOrientation;return\"horizontal\"==i?\"rotate(\"+-r+\" \"+n+\" 0)\":\"radial\"==i?r<270&&r>90?\"rotate(180 \"+n+\" 0)\":null:\"rotate(\"+(r<=180&&r>0?-90:90)+\" \"+n+\" 0)\"}}).style({\"text-anchor\":\"middle\",display:h.angularAxis.labelsVisible?\"block\":\"none\"}).text(function(t,e){return e%(h.minorTicks+1)!=0?\"\":w?w[t]+h.angularAxis.ticksSuffix:t+h.angularAxis.ticksSuffix}).style(B);h.angularAxis.rewriteTicks&&J.text(function(t,e){return e%(h.minorTicks+1)!=0?\"\":h.angularAxis.rewriteTicks(this.textContent,e)});var K=n.max(R.selectAll(\".angular-tick text\")[0].map(function(t,e){return t.getCTM().e+t.getBBox().width}));P.attr({transform:\"translate(\"+[x+K,h.margin.top]+\")\"});var Q=t.select(\"g.geometry-group\").selectAll(\"g\").size()>0,tt=t.select(\"g.geometry-group\").selectAll(\"g.geometry\").data(p);if(tt.enter().append(\"g\").attr({class:function(t,e){return\"geometry geometry\"+e}}),tt.exit().remove(),p[0]||Q){var et=[];p.forEach(function(t,e){var n={};n.radialScale=r,n.angularScale=s,n.container=tt.filter(function(t,r){return r==e}),n.geometry=t.geometry,n.orientation=h.orientation,n.direction=h.direction,n.index=e,et.push({data:t,geometryConfig:n})});var rt=n.nest().key(function(t,e){return\"undefined\"!=typeof t.data.groupId||\"unstacked\"}).entries(et),nt=[];rt.forEach(function(t,e){\"unstacked\"===t.key?nt=nt.concat(t.values.map(function(t,e){return[t]})):nt.push(t.values)}),nt.forEach(function(t,e){var r;r=Array.isArray(t)?t[0].geometryConfig.geometry:t.geometryConfig.geometry;var n=t.map(function(t,e){return i(o[r].defaultConfig(),t)});o[r]().config(n)()})}var it,at,ot=t.select(\".guides-group\"),st=t.select(\".tooltips-group\"),lt=o.tooltipPanel().config({container:st,fontSize:8})(),ct=o.tooltipPanel().config({container:st,fontSize:8})(),ut=o.tooltipPanel().config({container:st,hasTick:!0})();if(!A){var ft=ot.select(\"line\").attr({x1:0,y1:0,y2:0}).style({stroke:\"grey\",\"pointer-events\":\"none\"});R.on(\"mousemove.angular-guide\",function(t,e){var r=o.util.getMousePos(W).angle;ft.attr({x2:-x,transform:\"rotate(\"+r+\")\"}).style({opacity:.5});var n=(r+180+360-h.orientation)%360;it=s.invert(n);var i=o.util.convertToCartesian(x+12,r+180);lt.text(o.util.round(it)).move([i[0]+_[0],i[1]+_[1]])}).on(\"mouseout.angular-guide\",function(t,e){ot.select(\"line\").style({opacity:0})})}var ht=ot.select(\"circle\").style({stroke:\"grey\",fill:\"none\"});R.on(\"mousemove.radial-guide\",function(t,e){var n=o.util.getMousePos(W).radius;ht.attr({r:n}).style({opacity:.5}),at=r.invert(o.util.getMousePos(W).radius);var i=o.util.convertToCartesian(n,h.radialAxis.orientation);ct.text(o.util.round(at)).move([i[0]+_[0],i[1]+_[1]])}).on(\"mouseout.radial-guide\",function(t,e){ht.style({opacity:0}),ut.hide(),lt.hide(),ct.hide()}),t.selectAll(\".geometry-group .mark\").on(\"mouseover.tooltip\",function(e,r){var i=n.select(this),a=this.style.fill,s=\"black\",l=this.style.opacity||1;if(i.attr({\"data-opacity\":l}),a&&\"none\"!==a){i.attr({\"data-fill\":a}),s=n.hsl(a).darker().toString(),i.style({fill:s,opacity:1});var c={t:o.util.round(e[0]),r:o.util.round(e[1])};A&&(c.t=w[e[0]]);var u=\"t: \"+c.t+\", r: \"+c.r,f=this.getBoundingClientRect(),h=t.node().getBoundingClientRect(),p=[f.left+f.width/2-V[0]-h.left,f.top+f.height/2-V[1]-h.top];ut.config({color:s}).text(u),ut.move(p)}else a=this.style.stroke||\"black\",i.attr({\"data-stroke\":a}),s=n.hsl(a).darker().toString(),i.style({stroke:s,opacity:1})}).on(\"mousemove.tooltip\",function(t,e){if(0!=n.event.which)return!1;n.select(this).attr(\"data-fill\")&&ut.show()}).on(\"mouseout.tooltip\",function(t,e){ut.hide();var r=n.select(this),i=r.attr(\"data-fill\");i?r.style({fill:i,opacity:r.attr(\"data-opacity\")}):r.style({stroke:r.attr(\"data-stroke\"),opacity:r.attr(\"data-opacity\")})})})}(c),this},h.config=function(t){if(!arguments.length)return l;var e=o.util.cloneJson(t);return e.data.forEach(function(t,e){l.data[e]||(l.data[e]={}),i(l.data[e],o.Axis.defaultConfig().data[0]),i(l.data[e],t)}),i(l.layout,o.Axis.defaultConfig().layout),i(l.layout,e.layout),this},h.getLiveConfig=function(){return u},h.getinputConfig=function(){return c},h.radialScale=function(t){return r},h.angularScale=function(t){return s},h.svg=function(){return t},n.rebind(h,f,\"on\"),h},o.Axis.defaultConfig=function(t,e){return{data:[{t:[1,2,3,4],r:[10,11,12,13],name:\"Line1\",geometry:\"LinePlot\",color:null,strokeDash:\"solid\",strokeColor:null,strokeSize:\"1\",visibleInLegend:!0,opacity:1}],layout:{defaultColorRange:n.scale.category10().range(),title:null,height:450,width:500,margin:{top:40,right:40,bottom:40,left:40},font:{size:12,color:\"gray\",outlineColor:\"white\",family:\"Tahoma, sans-serif\"},direction:\"clockwise\",orientation:0,labelOffset:10,radialAxis:{domain:null,orientation:-45,ticksSuffix:\"\",visible:!0,gridLinesVisible:!0,tickOrientation:\"horizontal\",rewriteTicks:null},angularAxis:{domain:[0,360],ticksSuffix:\"\",visible:!0,gridLinesVisible:!0,labelsVisible:!0,tickOrientation:\"horizontal\",rewriteTicks:null,ticksCount:null,ticksStep:null},minorTicks:0,tickLength:null,tickColor:\"silver\",minorTickColor:\"#eee\",backgroundColor:\"none\",needsEndSpacing:null,showLegend:!0,legend:{reverseOrder:!1},opacity:1}}},o.util={},o.DATAEXTENT=\"dataExtent\",o.AREA=\"AreaChart\",o.LINE=\"LinePlot\",o.DOT=\"DotPlot\",o.BAR=\"BarChart\",o.util._override=function(t,e){for(var r in t)r in e&&(e[r]=t[r])},o.util._extend=function(t,e){for(var r in t)e[r]=t[r]},o.util._rndSnd=function(){return 2*Math.random()-1+(2*Math.random()-1)+(2*Math.random()-1)},o.util.dataFromEquation2=function(t,e){var r=e||6;return n.range(0,360+r,r).map(function(e,r){var n=e*Math.PI/180;return[e,t(n)]})},o.util.dataFromEquation=function(t,e,r){var i=e||6,a=[],o=[];n.range(0,360+i,i).forEach(function(e,r){var n=e*Math.PI/180,i=t(n);a.push(e),o.push(i)});var s={t:a,r:o};return r&&(s.name=r),s},o.util.ensureArray=function(t,e){if(\"undefined\"==typeof t)return null;var r=[].concat(t);return n.range(e).map(function(t,e){return r[e]||r[0]})},o.util.fillArrays=function(t,e,r){return e.forEach(function(e,n){t[e]=o.util.ensureArray(t[e],r)}),t},o.util.cloneJson=function(t){return JSON.parse(JSON.stringify(t))},o.util.validateKeys=function(t,e){\"string\"==typeof e&&(e=e.split(\".\"));var r=e.shift();return t[r]&&(!e.length||objHasKeys(t[r],e))},o.util.sumArrays=function(t,e){return n.zip(t,e).map(function(t,e){return n.sum(t)})},o.util.arrayLast=function(t){return t[t.length-1]},o.util.arrayEqual=function(t,e){for(var r=Math.max(t.length,e.length,1);r-- >=0&&t[r]===e[r];);return-2===r},o.util.flattenArray=function(t){for(var e=[];!o.util.arrayEqual(e,t);)e=t,t=[].concat.apply([],t);return t},o.util.deduplicate=function(t){return t.filter(function(t,e,r){return r.indexOf(t)==e})},o.util.convertToCartesian=function(t,e){var r=e*Math.PI/180;return[t*Math.cos(r),t*Math.sin(r)]},o.util.round=function(t,e){var r=e||2,n=Math.pow(10,r);return Math.round(t*n)/n},o.util.getMousePos=function(t){var e=n.mouse(t.node()),r=e[0],i=e[1],a={};return a.x=r,a.y=i,a.pos=e,a.angle=180*(Math.atan2(i,r)+Math.PI)/Math.PI,a.radius=Math.sqrt(r*r+i*i),a},o.util.duplicatesCount=function(t){for(var e,r={},n={},i=0,a=t.length;i<a;i++)(e=t[i])in r?(r[e]++,n[e]=r[e]):r[e]=1;return n},o.util.duplicates=function(t){return Object.keys(o.util.duplicatesCount(t))},o.util.translator=function(t,e,r,n){if(n){var i=r.slice();r=e,e=i}var a=e.reduce(function(t,e){if(\"undefined\"!=typeof t)return t[e]},t);\"undefined\"!=typeof a&&(e.reduce(function(t,r,n){if(\"undefined\"!=typeof t)return n===e.length-1&&delete t[r],t[r]},t),r.reduce(function(t,e,n){return\"undefined\"==typeof t[e]&&(t[e]={}),n===r.length-1&&(t[e]=a),t[e]},t))},o.PolyChart=function(){var t=[o.PolyChart.defaultConfig()],e=n.dispatch(\"hover\"),r={solid:\"none\",dash:[5,2],dot:[2,5]};function a(){var e=t[0].geometryConfig,i=e.container;\"string\"==typeof i&&(i=n.select(i)),i.datum(t).each(function(t,i){var a=!!t[0].data.yStack,o=t.map(function(t,e){return a?n.zip(t.data.t[0],t.data.r[0],t.data.yStack[0]):n.zip(t.data.t[0],t.data.r[0])}),s=e.angularScale,l=e.radialScale.domain()[0],c={bar:function(r,i,a){var o=t[a].data,l=e.radialScale(r[1])-e.radialScale(0),c=e.radialScale(r[2]||0),u=o.barWidth;n.select(this).attr({class:\"mark bar\",d:\"M\"+[[l+c,-u/2],[l+c,u/2],[c,u/2],[c,-u/2]].join(\"L\")+\"Z\",transform:function(t,r){return\"rotate(\"+(e.orientation+s(t[0]))+\")\"}})}};c.dot=function(r,i,a){var o=r[2]?[r[0],r[1]+r[2]]:r,s=n.svg.symbol().size(t[a].data.dotSize).type(t[a].data.dotType)(r,i);n.select(this).attr({class:\"mark dot\",d:s,transform:function(t,r){var n,i,a,s=(n=function(t,r){var n=e.radialScale(t[1]),i=(e.angularScale(t[0])+e.orientation)*Math.PI/180;return{r:n,t:i}}(o),i=n.r*Math.cos(n.t),a=n.r*Math.sin(n.t),{x:i,y:a});return\"translate(\"+[s.x,s.y]+\")\"}})};var u=n.svg.line.radial().interpolate(t[0].data.lineInterpolation).radius(function(t){return e.radialScale(t[1])}).angle(function(t){return e.angularScale(t[0])*Math.PI/180});c.line=function(r,i,a){var s=r[2]?o[a].map(function(t,e){return[t[0],t[1]+t[2]]}):o[a];if(n.select(this).each(c.dot).style({opacity:function(e,r){return+t[a].data.dotVisible},fill:d.stroke(r,i,a)}).attr({class:\"mark dot\"}),!(i>0)){var l=n.select(this.parentNode).selectAll(\"path.line\").data([0]);l.enter().insert(\"path\"),l.attr({class:\"line\",d:u(s),transform:function(t,r){return\"rotate(\"+(e.orientation+90)+\")\"},\"pointer-events\":\"none\"}).style({fill:function(t,e){return d.fill(r,i,a)},\"fill-opacity\":0,stroke:function(t,e){return d.stroke(r,i,a)},\"stroke-width\":function(t,e){return d[\"stroke-width\"](r,i,a)},\"stroke-dasharray\":function(t,e){return d[\"stroke-dasharray\"](r,i,a)},opacity:function(t,e){return d.opacity(r,i,a)},display:function(t,e){return d.display(r,i,a)}})}};var f=e.angularScale.range(),h=Math.abs(f[1]-f[0])/o[0].length*Math.PI/180,p=n.svg.arc().startAngle(function(t){return-h/2}).endAngle(function(t){return h/2}).innerRadius(function(t){return e.radialScale(l+(t[2]||0))}).outerRadius(function(t){return e.radialScale(l+(t[2]||0))+e.radialScale(t[1])});c.arc=function(t,r,i){n.select(this).attr({class:\"mark arc\",d:p,transform:function(t,r){return\"rotate(\"+(e.orientation+s(t[0])+90)+\")\"}})};var d={fill:function(e,r,n){return t[n].data.color},stroke:function(e,r,n){return t[n].data.strokeColor},\"stroke-width\":function(e,r,n){return t[n].data.strokeSize+\"px\"},\"stroke-dasharray\":function(e,n,i){return r[t[i].data.strokeDash]},opacity:function(e,r,n){return t[n].data.opacity},display:function(e,r,n){return\"undefined\"==typeof t[n].data.visible||t[n].data.visible?\"block\":\"none\"}},g=n.select(this).selectAll(\"g.layer\").data(o);g.enter().append(\"g\").attr({class:\"layer\"});var v=g.selectAll(\"path.mark\").data(function(t,e){return t});v.enter().append(\"path\").attr({class:\"mark\"}),v.style(d).each(c[e.geometryType]),v.exit().remove(),g.exit().remove()})}return a.config=function(e){return arguments.length?(e.forEach(function(e,r){t[r]||(t[r]={}),i(t[r],o.PolyChart.defaultConfig()),i(t[r],e)}),this):t},a.getColorScale=function(){},n.rebind(a,e,\"on\"),a},o.PolyChart.defaultConfig=function(){return{data:{name:\"geom1\",t:[[1,2,3,4]],r:[[1,2,3,4]],dotType:\"circle\",dotSize:64,dotVisible:!1,barWidth:20,color:\"#ffa500\",strokeSize:1,strokeColor:\"silver\",strokeDash:\"solid\",opacity:1,index:0,visible:!0,visibleInLegend:!0},geometryConfig:{geometry:\"LinePlot\",geometryType:\"arc\",direction:\"clockwise\",orientation:0,container:\"body\",radialScale:null,angularScale:null,colorScale:n.scale.category20()}}},o.BarChart=function(){return o.PolyChart()},o.BarChart.defaultConfig=function(){return{geometryConfig:{geometryType:\"bar\"}}},o.AreaChart=function(){return o.PolyChart()},o.AreaChart.defaultConfig=function(){return{geometryConfig:{geometryType:\"arc\"}}},o.DotPlot=function(){return o.PolyChart()},o.DotPlot.defaultConfig=function(){return{geometryConfig:{geometryType:\"dot\",dotType:\"circle\"}}},o.LinePlot=function(){return o.PolyChart()},o.LinePlot.defaultConfig=function(){return{geometryConfig:{geometryType:\"line\"}}},o.Legend=function(){var t=o.Legend.defaultConfig(),e=n.dispatch(\"hover\");function r(){var e=t.legendConfig,a=t.data.map(function(t,r){return[].concat(t).map(function(t,n){var a=i({},e.elements[r]);return a.name=t,a.color=[].concat(e.elements[r].color)[n],a})}),o=n.merge(a);o=o.filter(function(t,r){return e.elements[r]&&(e.elements[r].visibleInLegend||\"undefined\"==typeof e.elements[r].visibleInLegend)}),e.reverseOrder&&(o=o.reverse());var s=e.container;(\"string\"==typeof s||s.nodeName)&&(s=n.select(s));var l=o.map(function(t,e){return t.color}),c=e.fontSize,u=null==e.isContinuous?\"number\"==typeof o[0]:e.isContinuous,f=u?e.height:c*o.length,h=s.classed(\"legend-group\",!0).selectAll(\"svg\").data([0]),p=h.enter().append(\"svg\").attr({width:300,height:f+c,xmlns:\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",version:\"1.1\"});p.append(\"g\").classed(\"legend-axis\",!0),p.append(\"g\").classed(\"legend-marks\",!0);var d=n.range(o.length),g=n.scale[u?\"linear\":\"ordinal\"]().domain(d).range(l),v=n.scale[u?\"linear\":\"ordinal\"]().domain(d)[u?\"range\":\"rangePoints\"]([0,f]);if(u){var m=h.select(\".legend-marks\").append(\"defs\").append(\"linearGradient\").attr({id:\"grad1\",x1:\"0%\",y1:\"0%\",x2:\"0%\",y2:\"100%\"}).selectAll(\"stop\").data(l);m.enter().append(\"stop\"),m.attr({offset:function(t,e){return e/(l.length-1)*100+\"%\"}}).style({\"stop-color\":function(t,e){return t}}),h.append(\"rect\").classed(\"legend-mark\",!0).attr({height:e.height,width:e.colorBandWidth,fill:\"url(#grad1)\"})}else{var y=h.select(\".legend-marks\").selectAll(\"path.legend-mark\").data(o);y.enter().append(\"path\").classed(\"legend-mark\",!0),y.attr({transform:function(t,e){return\"translate(\"+[c/2,v(e)+c/2]+\")\"},d:function(t,e){var r,i,a,o=t.symbol;return a=3*(i=c),\"line\"===(r=o)?\"M\"+[[-i/2,-i/12],[i/2,-i/12],[i/2,i/12],[-i/2,i/12]]+\"Z\":-1!=n.svg.symbolTypes.indexOf(r)?n.svg.symbol().type(r).size(a)():n.svg.symbol().type(\"square\").size(a)()},fill:function(t,e){return g(e)}}),y.exit().remove()}var x=n.svg.axis().scale(v).orient(\"right\"),b=h.select(\"g.legend-axis\").attr({transform:\"translate(\"+[u?e.colorBandWidth:c,c/2]+\")\"}).call(x);return b.selectAll(\".domain\").style({fill:\"none\",stroke:\"none\"}),b.selectAll(\"line\").style({fill:\"none\",stroke:u?e.textColor:\"none\"}),b.selectAll(\"text\").style({fill:e.textColor,\"font-size\":e.fontSize}).text(function(t,e){return o[e].name}),r}return r.config=function(e){return arguments.length?(i(t,e),this):t},n.rebind(r,e,\"on\"),r},o.Legend.defaultConfig=function(t,e){return{data:[\"a\",\"b\",\"c\"],legendConfig:{elements:[{symbol:\"line\",color:\"red\"},{symbol:\"square\",color:\"yellow\"},{symbol:\"diamond\",color:\"limegreen\"}],height:150,colorBandWidth:30,fontSize:12,container:\"body\",isContinuous:null,textColor:\"grey\",reverseOrder:!1}}},o.tooltipPanel=function(){var t,e,r,a={container:null,hasTick:!1,fontSize:12,color:\"white\",padding:5},s=\"tooltip-\"+o.tooltipPanel.uid++,l=10,c=function(){var n=(t=a.container.selectAll(\"g.\"+s).data([0])).enter().append(\"g\").classed(s,!0).style({\"pointer-events\":\"none\",display:\"none\"});return r=n.append(\"path\").style({fill:\"white\",\"fill-opacity\":.9}).attr({d:\"M0 0\"}),e=n.append(\"text\").attr({dx:a.padding+l,dy:.3*+a.fontSize}),c};return c.text=function(i){var o=n.hsl(a.color).l,s=o>=.5?\"#aaa\":\"white\",u=o>=.5?\"black\":\"white\",f=i||\"\";e.style({fill:u,\"font-size\":a.fontSize+\"px\"}).text(f);var h=a.padding,p=e.node().getBBox(),d={fill:a.color,stroke:s,\"stroke-width\":\"2px\"},g=p.width+2*h+l,v=p.height+2*h;return r.attr({d:\"M\"+[[l,-v/2],[l,-v/4],[a.hasTick?0:l,0],[l,v/4],[l,v/2],[g,v/2],[g,-v/2]].join(\"L\")+\"Z\"}).style(d),t.attr({transform:\"translate(\"+[l,-v/2+2*h]+\")\"}),t.style({display:\"block\"}),c},c.move=function(e){if(t)return t.attr({transform:\"translate(\"+[e[0],e[1]]+\")\"}).style({display:\"block\"}),c},c.hide=function(){if(t)return t.style({display:\"none\"}),c},c.show=function(){if(t)return t.style({display:\"block\"}),c},c.config=function(t){return i(a,t),c},c},o.tooltipPanel.uid=1,o.adapter={},o.adapter.plotly=function(){var t={convert:function(t,e){var r={};if(t.data&&(r.data=t.data.map(function(t,r){var n=i({},t);return[[n,[\"marker\",\"color\"],[\"color\"]],[n,[\"marker\",\"opacity\"],[\"opacity\"]],[n,[\"marker\",\"line\",\"color\"],[\"strokeColor\"]],[n,[\"marker\",\"line\",\"dash\"],[\"strokeDash\"]],[n,[\"marker\",\"line\",\"width\"],[\"strokeSize\"]],[n,[\"marker\",\"symbol\"],[\"dotType\"]],[n,[\"marker\",\"size\"],[\"dotSize\"]],[n,[\"marker\",\"barWidth\"],[\"barWidth\"]],[n,[\"line\",\"interpolation\"],[\"lineInterpolation\"]],[n,[\"showlegend\"],[\"visibleInLegend\"]]].forEach(function(t,r){o.util.translator.apply(null,t.concat(e))}),e||delete n.marker,e&&delete n.groupId,e?(\"LinePlot\"===n.geometry?(n.type=\"scatter\",!0===n.dotVisible?(delete n.dotVisible,n.mode=\"lines+markers\"):n.mode=\"lines\"):\"DotPlot\"===n.geometry?(n.type=\"scatter\",n.mode=\"markers\"):\"AreaChart\"===n.geometry?n.type=\"area\":\"BarChart\"===n.geometry&&(n.type=\"bar\"),delete n.geometry):(\"scatter\"===n.type?\"lines\"===n.mode?n.geometry=\"LinePlot\":\"markers\"===n.mode?n.geometry=\"DotPlot\":\"lines+markers\"===n.mode&&(n.geometry=\"LinePlot\",n.dotVisible=!0):\"area\"===n.type?n.geometry=\"AreaChart\":\"bar\"===n.type&&(n.geometry=\"BarChart\"),delete n.mode,delete n.type),n}),!e&&t.layout&&\"stack\"===t.layout.barmode)){var a=o.util.duplicates(r.data.map(function(t,e){return t.geometry}));r.data.forEach(function(t,e){var n=a.indexOf(t.geometry);-1!=n&&(r.data[e].groupId=n)})}if(t.layout){var s=i({},t.layout);if([[s,[\"plot_bgcolor\"],[\"backgroundColor\"]],[s,[\"showlegend\"],[\"showLegend\"]],[s,[\"radialaxis\"],[\"radialAxis\"]],[s,[\"angularaxis\"],[\"angularAxis\"]],[s.angularaxis,[\"showline\"],[\"gridLinesVisible\"]],[s.angularaxis,[\"showticklabels\"],[\"labelsVisible\"]],[s.angularaxis,[\"nticks\"],[\"ticksCount\"]],[s.angularaxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.angularaxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.angularaxis,[\"range\"],[\"domain\"]],[s.angularaxis,[\"endpadding\"],[\"endPadding\"]],[s.radialaxis,[\"showline\"],[\"gridLinesVisible\"]],[s.radialaxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.radialaxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.radialaxis,[\"range\"],[\"domain\"]],[s.angularAxis,[\"showline\"],[\"gridLinesVisible\"]],[s.angularAxis,[\"showticklabels\"],[\"labelsVisible\"]],[s.angularAxis,[\"nticks\"],[\"ticksCount\"]],[s.angularAxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.angularAxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.angularAxis,[\"range\"],[\"domain\"]],[s.angularAxis,[\"endpadding\"],[\"endPadding\"]],[s.radialAxis,[\"showline\"],[\"gridLinesVisible\"]],[s.radialAxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.radialAxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.radialAxis,[\"range\"],[\"domain\"]],[s.font,[\"outlinecolor\"],[\"outlineColor\"]],[s.legend,[\"traceorder\"],[\"reverseOrder\"]],[s,[\"labeloffset\"],[\"labelOffset\"]],[s,[\"defaultcolorrange\"],[\"defaultColorRange\"]]].forEach(function(t,r){o.util.translator.apply(null,t.concat(e))}),e?(\"undefined\"!=typeof s.tickLength&&(s.angularaxis.ticklen=s.tickLength,delete s.tickLength),s.tickColor&&(s.angularaxis.tickcolor=s.tickColor,delete s.tickColor)):(s.angularAxis&&\"undefined\"!=typeof s.angularAxis.ticklen&&(s.tickLength=s.angularAxis.ticklen),s.angularAxis&&\"undefined\"!=typeof s.angularAxis.tickcolor&&(s.tickColor=s.angularAxis.tickcolor)),s.legend&&\"boolean\"!=typeof s.legend.reverseOrder&&(s.legend.reverseOrder=\"normal\"!=s.legend.reverseOrder),s.legend&&\"boolean\"==typeof s.legend.traceorder&&(s.legend.traceorder=s.legend.traceorder?\"reversed\":\"normal\",delete s.legend.reverseOrder),s.margin&&\"undefined\"!=typeof s.margin.t){var l=[\"t\",\"r\",\"b\",\"l\",\"pad\"],c=[\"top\",\"right\",\"bottom\",\"left\",\"pad\"],u={};n.entries(s.margin).forEach(function(t,e){u[c[l.indexOf(t.key)]]=t.value}),s.margin=u}e&&(delete s.needsEndSpacing,delete s.minorTickColor,delete s.minorTicks,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksStep,delete s.angularaxis.rewriteTicks,delete s.angularaxis.nticks,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksStep,delete s.radialaxis.rewriteTicks,delete s.radialaxis.nticks),r.layout=s}return r}};return t}},{\"../../../constants/alignment\":666,\"../../../lib\":694,d3:149}],816:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../../lib\"),a=t(\"../../../components/color\"),o=t(\"./micropolar\"),s=t(\"./undo_manager\"),l=i.extendDeepAll,c=e.exports={};c.framework=function(t){var e,r,i,a,u,f=new s;function h(r,s){return s&&(u=s),n.select(n.select(u).node().parentNode).selectAll(\".svg-container>*:not(.chart-root)\").remove(),e=e?l(e,r):r,i||(i=o.Axis()),a=o.adapter.plotly().convert(e),i.config(a).render(u),t.data=e.data,t.layout=e.layout,c.fillLayout(t),e}return h.isPolar=!0,h.svg=function(){return i.svg()},h.getConfig=function(){return e},h.getLiveConfig=function(){return o.adapter.plotly().convert(i.getLiveConfig(),!0)},h.getLiveScales=function(){return{t:i.angularScale(),r:i.radialScale()}},h.setUndoPoint=function(){var t,n,i=this,a=o.util.cloneJson(e);t=a,n=r,f.add({undo:function(){n&&i(n)},redo:function(){i(t)}}),r=o.util.cloneJson(a)},h.undo=function(){f.undo()},h.redo=function(){f.redo()},h},c.fillLayout=function(t){var e=n.select(t).selectAll(\".plot-container\"),r=e.selectAll(\".svg-container\"),i=t.framework&&t.framework.svg&&t.framework.svg(),o={width:800,height:600,paper_bgcolor:a.background,_container:e,_paperdiv:r,_paper:i};t._fullLayout=l(o,t.layout)}},{\"../../../components/color\":571,\"../../../lib\":694,\"./micropolar\":815,\"./undo_manager\":817,d3:149}],817:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=[],r=-1,n=!1;function i(t,e){return t?(n=!0,t[e](),n=!1,this):this}return{add:function(t){return n?this:(e.splice(r+1,e.length-r),e.push(t),r=e.length-1,this)},setCallback:function(e){t=e},undo:function(){var n=e[r];return n?(i(n,\"undo\"),r-=1,t&&t(n.undo),this):this},redo:function(){var n=e[r+1];return n?(i(n,\"redo\"),r+=1,t&&t(n.redo),this):this},clear:function(){e=[],r=-1},hasUndo:function(){return-1!==r},hasRedo:function(){return r<e.length-1},getCommands:function(){return e},getPreviousCommand:function(){return e[r-1]},getIndex:function(){return r}}}},{}],818:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=t(\"../../components/color\"),l=t(\"../../components/drawing\"),c=t(\"../plots\"),u=t(\"../../plots/cartesian/axes\"),f=t(\"../cartesian/set_convert\"),h=t(\"./set_convert\"),p=t(\"../cartesian/autorange\").doAutoRange,d=t(\"../cartesian/dragbox\"),g=t(\"../../components/dragelement\"),v=t(\"../../components/fx\"),m=t(\"../../components/titles\"),y=t(\"../cartesian/select\").prepSelect,x=t(\"../cartesian/select\").selectOnClick,b=t(\"../cartesian/select\").clearSelect,_=t(\"../../lib/setcursor\"),w=t(\"../../lib/clear_gl_canvases\"),k=t(\"../../plot_api/subroutines\").redrawReglTraces,A=t(\"../../constants/alignment\").MID_SHIFT,M=t(\"./constants\"),T=t(\"./helpers\"),S=o._,C=o.mod,E=o.deg2rad,L=o.rad2deg;function z(t,e){this.id=e,this.gd=t,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var r=t._fullLayout,n=\"clip\"+r._uid+e;this.clipIds.forTraces=n+\"-for-traces\",this.clipPaths.forTraces=r._clips.append(\"clipPath\").attr(\"id\",this.clipIds.forTraces),this.clipPaths.forTraces.append(\"path\"),this.framework=r._polarlayer.append(\"g\").attr(\"class\",e),this.radialTickLayout=null,this.angularTickLayout=null}var O=z.prototype;function I(t){var e=t.ticks+String(t.ticklen)+String(t.showticklabels);return\"side\"in t&&(e+=t.side),e}function D(t,e){return e[o.findIndexOfMin(e,function(e){return o.angleDist(t,e)})]}function P(t,e,r){return e?(t.attr(\"display\",null),t.attr(r)):t&&t.attr(\"display\",\"none\"),t}function R(t,e){return\"translate(\"+t+\",\"+e+\")\"}function F(t){return\"rotate(\"+t+\")\"}function B(t){return Math.abs(t)<1e-10?0:t>0?1:-1}function N(t){return B(Math.cos(t))}function j(t){return B(Math.sin(t))}e.exports=function(t,e){return new z(t,e)},O.plot=function(t,e){var r=e[this.id];this._hasClipOnAxisFalse=!1;for(var n=0;n<t.length;n++){if(!1===t[n][0].trace.cliponaxis){this._hasClipOnAxisFalse=!0;break}}this.updateLayers(e,r),this.updateLayout(e,r),c.generalUpdatePerTraceModule(this.gd,this,t,r),this.updateFx(e,r)},O.updateLayers=function(t,e){var r=this.layers,i=e.radialaxis,a=e.angularaxis,o=M.layerNames,s=o.indexOf(\"frontplot\"),l=o.slice(0,s),c=\"below traces\"===a.layer,u=\"below traces\"===i.layer;c&&l.push(\"angular-line\"),u&&l.push(\"radial-line\"),c&&l.push(\"angular-axis\"),u&&l.push(\"radial-axis\"),l.push(\"frontplot\"),c||l.push(\"angular-line\"),u||l.push(\"radial-line\"),c||l.push(\"angular-axis\"),u||l.push(\"radial-axis\");var f=this.framework.selectAll(\".polarsublayer\").data(l,String);f.enter().append(\"g\").attr(\"class\",function(t){return\"polarsublayer \"+t}).each(function(t){var e=r[t]=n.select(this);switch(t){case\"frontplot\":e.append(\"g\").classed(\"barlayer\",!0),e.append(\"g\").classed(\"scatterlayer\",!0);break;case\"backplot\":e.append(\"g\").classed(\"maplayer\",!0);break;case\"plotbg\":r.bg=e.append(\"path\");break;case\"radial-grid\":case\"angular-grid\":e.style(\"fill\",\"none\");break;case\"radial-line\":e.append(\"line\").style(\"fill\",\"none\");break;case\"angular-line\":e.append(\"path\").style(\"fill\",\"none\")}}),f.order()},O.updateLayout=function(t,e){var r=this.layers,n=t._size,i=e.radialaxis,a=e.angularaxis,o=e.domain.x,c=e.domain.y;this.xOffset=n.l+n.w*o[0],this.yOffset=n.t+n.h*(1-c[1]);var u=this.xLength=n.w*(o[1]-o[0]),f=this.yLength=n.h*(c[1]-c[0]),h=e.sector;this.sectorInRad=h.map(E);var p,d,g,v,m,y=this.sectorBBox=function(t){var e,r,n,i,a=t[0],o=t[1]-a,s=C(a,360),l=s+o,c=Math.cos(E(s)),u=Math.sin(E(s)),f=Math.cos(E(l)),h=Math.sin(E(l));i=s<=90&&l>=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(h),x=y[2]-y[0],b=y[3]-y[1],_=f/u,w=Math.abs(b/x);_>w?(p=u,m=(f-(d=u*w))/n.h/2,g=[o[0],o[1]],v=[c[0]+m,c[1]-m]):(d=f,m=(u-(p=f/w))/n.w/2,g=[o[0]+m,o[1]-m],v=[c[0],c[1]]),this.xLength2=p,this.yLength2=d,this.xDomain2=g,this.yDomain2=v;var k=this.xOffset2=n.l+n.w*g[0],A=this.yOffset2=n.t+n.h*(1-v[1]),M=this.radius=p/x,T=this.innerRadius=e.hole*M,S=this.cx=k-M*y[0],L=this.cy=A+M*y[3],z=this.cxx=S-k,O=this.cyy=L-A;this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:{counterclockwise:\"top\",clockwise:\"bottom\"}[i.side],domain:[T/n.w,M/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:g}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var I=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",I).attr(\"transform\",R(z,O)),r.frontplot.attr(\"transform\",R(k,A)).call(l.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",I).attr(\"transform\",R(S,L)).call(s.fill,e.bgcolor)},O.mockAxis=function(t,e,r,n){var i=o.extendFlat({anchor:\"free\",position:0},r,n);return h(i,e,t),i},O.mockCartesianAxis=function(t,e,r){var n=this,i=r._id,a=o.extendFlat({type:\"linear\"},r);f(a,t);var s={x:[0,2],y:[1,3]};return a.setRange=function(){var t=n.sectorBBox,r=s[i],o=n.radialAxis._rl,l=(o[1]-o[0])/(1-e.hole);a.range=[t[r[0]]*l,t[r[1]]*l]},a.isPtWithinRange=\"x\"===i?function(t){return n.isPtInside(t)}:function(){return!0},a.setRange(),a.setScale(),a},O.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=e.radialaxis;n.setScale(),p(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},O.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,l=r.innerRadius,c=r.cx,f=r.cy,h=e.radialaxis,p=C(e.sector[0],360),d=r.radialAxis,g=l<a;r.fillViewInitialKey(\"radialaxis.angle\",h.angle),r.fillViewInitialKey(\"radialaxis.range\",d.range.slice()),d.setGeometry(),\"auto\"===d.tickangle&&p>90&&p<=270&&(d.tickangle=180);var v=function(t){return\"translate(\"+(d.l2p(t.x)+l)+\",0)\"},m=I(h);if(r.radialTickLayout!==m&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=m),g){d.setScale();var y=u.calcTicks(d),x=u.clipEnds(d,y),b=u.makeLabelFns(d,0),_=u.getTickSigns(d)[2];u.drawTicks(n,d,{vals:y,layer:i[\"radial-axis\"],path:u.makeTickPath(d,0,_),transFn:v,crisp:!1}),u.drawGrid(n,d,{vals:x,layer:i[\"radial-grid\"],path:function(t){return r.pathArc(d.r2p(t.x)+l)},transFn:o.noop,crisp:!1}),u.drawLabels(n,d,{vals:y,layer:i[\"radial-axis\"],transFn:v,labelXFn:b.labelXFn,labelYFn:b.labelYFn,labelAnchorFn:b.labelAnchorFn})}var w=r.radialAxisAngle=r.vangles?L(D(E(h.angle),r.vangles)):h.angle,k=R(c,f),A=k+F(-w);P(i[\"radial-axis\"],g&&(h.showticklabels||h.ticks),{transform:A}),P(i[\"radial-grid\"],g&&h.showgrid,{transform:k}),P(i[\"radial-line\"].select(\"line\"),g&&h.showline,{x1:l,y1:0,x2:a,y2:0,transform:A}).attr(\"stroke-width\",h.linewidth).call(s.stroke,h.linecolor)},O.updateRadialAxisTitle=function(t,e,r){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=e.radialaxis,c=this.id+\"title\",u=void 0!==r?r:this.radialAxisAngle,f=E(u),h=Math.cos(f),p=Math.sin(f),d=0;if(s.title){var g=l.bBox(this.layers[\"radial-axis\"].node()).height,v=s.title.font.size;d=\"counterclockwise\"===s.side?-g-.4*v:g+.8*v}this.layers[\"radial-axis-title\"]=m.draw(n,c,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:S(n,\"Click to enter radial axis title\"),attributes:{x:a+i/2*h+d*p,y:o-i/2*p+d*h,\"text-anchor\":\"middle\"},transform:{rotate:-u}})},O.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,l=r.innerRadius,c=r.cx,f=r.cy,h=e.angularaxis,p=r.angularAxis;r.fillViewInitialKey(\"angularaxis.rotation\",h.rotation),p.setGeometry(),p.setScale();var d=function(t){return p.t2g(t.x)};\"linear\"===p.type&&\"radians\"===p.thetaunit&&(p.tick0=L(p.tick0),p.dtick=L(p.dtick));var g=function(t){return R(c+a*Math.cos(t),f-a*Math.sin(t))},v=u.makeLabelFns(p,0),m=v.labelStandoff,y=v.labelShift,x=\"outside\"!==h.ticks?.7:.5,b=(p.linewidth||1)/2,_=I(h);r.angularTickLayout!==_&&(i[\"angular-axis\"].selectAll(\".\"+p._id+\"tick\").remove(),r.angularTickLayout=_);var w,k=u.calcTicks(p);if(\"linear\"===e.gridshape?(w=k.map(d),o.angleDelta(w[0],w[1])<0&&(w=w.slice().reverse())):w=null,r.vangles=w,\"category\"===p.type&&(k=k.filter(function(t){return o.isAngleInsideSector(d(t),r.sectorInRad)})),p.visible){var M=\"inside\"===p.ticks?-1:1;u.drawTicks(n,p,{vals:k,layer:i[\"angular-axis\"],path:\"M\"+M*b+\",0h\"+M*p.ticklen,transFn:function(t){var e=d(t);return g(e)+F(-L(e))},crisp:!1}),u.drawGrid(n,p,{vals:k,layer:i[\"angular-grid\"],path:function(t){var e=d(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[c+l*r,f-l*n]+\"L\"+[c+a*r,f-a*n]},transFn:o.noop,crisp:!1}),u.drawLabels(n,p,{vals:k,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:function(t){return g(d(t))},labelXFn:function(t){var e=d(t);return(0===j(e)?0:Math.cos(e)*(m+b+x*t.fontSize))+N(e)*(t.dx+m+b)},labelYFn:function(t){var e=d(t);return t.dy+t.fontSize*A-y+-Math.sin(e)*(m+b+x*t.fontSize)},labelAnchorFn:function(t,e){var r=d(e);return 0===j(r)?N(r)>0?\"start\":\"end\":\"middle\"}})}P(i[\"angular-line\"].select(\"path\"),h.showline,{d:r.pathSubplot(),transform:R(c,f)}).attr(\"stroke-width\",h.linewidth).call(s.stroke,h.linecolor)},O.updateFx=function(t,e){this.gd._context.staticPlot||(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1),this.updateMainDrag(t))},O.updateMainDrag=function(t){var e=this,r=e.gd,o=e.layers,s=t._zoomlayer,l=M.MINZOOM,c=M.OFFEDGE,u=e.radius,f=e.innerRadius,h=e.cx,p=e.cy,m=e.cxx,_=e.cyy,w=e.sectorInRad,k=e.vangles,A=e.radialAxis,S=T.clampTiny,C=T.findXYatLength,E=T.findEnclosingVertexAngles,L=M.cornerHalfWidth,z=M.cornerLen/2,O=d.makeDragger(o,\"path\",\"maindrag\",\"crosshair\");n.select(O).attr(\"d\",e.pathSubplot()).attr(\"transform\",R(h,p));var I,D,P,F,B,N,j,V,U,q={element:O,gd:r,subplot:e.id,plotinfo:{id:e.id,xaxis:e.xaxis,yaxis:e.yaxis},xaxes:[e.xaxis],yaxes:[e.yaxis]};function H(t,e){return Math.sqrt(t*t+e*e)}function G(t,e){return H(t-m,e-_)}function W(t,e){return Math.atan2(_-e,t-m)}function Y(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function X(t,r){if(0===t)return e.pathSector(2*L);var n=z/t,i=r-n,a=r+n,o=Math.max(0,Math.min(t,u)),s=o-L,l=o+L;return\"M\"+Y(s,i)+\"A\"+[s,s]+\" 0,0,0 \"+Y(s,a)+\"L\"+Y(l,a)+\"A\"+[l,l]+\" 0,0,1 \"+Y(l,i)+\"Z\"}function Z(t,r,n){if(0===t)return e.pathSector(2*L);var i,a,o=Y(t,r),s=Y(t,n),l=S((o[0]+s[0])/2),c=S((o[1]+s[1])/2);if(l&&c){var u=c/l,f=-1/u,h=C(L,u,l,c);i=C(z,f,h[0][0],h[0][1]),a=C(z,f,h[1][0],h[1][1])}else{var p,d;c?(p=z,d=L):(p=L,d=z),i=[[l-p,c-d],[l+p,c-d]],a=[[l-p,c+d],[l+p,c+d]]}return\"M\"+i.join(\"L\")+\"L\"+a.reverse().join(\"L\")+\"Z\"}function $(t,e){return e=Math.max(Math.min(e,u),f),t<c?t=0:u-t<c?t=u:e<c?e=0:u-e<c&&(e=u),Math.abs(e-t)>l?(t<e?(P=t,F=e):(P=e,F=t),!0):(P=null,F=null,!1)}function J(t,e){t=t||B,e=e||\"M0,0Z\",V.attr(\"d\",t),U.attr(\"d\",e),d.transitionZoombox(V,U,N,j),N=!0}function K(t,r){var n,i,a=I+t,o=D+r,s=G(I,D),l=Math.min(G(a,o),u),c=W(I,D);$(s,l)&&(n=B+e.pathSector(F),P&&(n+=e.pathSector(P)),i=X(P,c)+X(F,c)),J(n,i)}function Q(t,e,r,n){var i=T.findIntersectionXY(r,n,r,[t-m,_-e]);return H(i[0],i[1])}function tt(t,r){var n,i,a=I+t,o=D+r,s=W(I,D),l=W(a,o),c=E(s,k),f=E(l,k);$(Q(I,D,c[0],c[1]),Math.min(Q(a,o,f[0],f[1]),u))&&(n=B+e.pathSector(F),P&&(n+=e.pathSector(P)),i=[Z(P,c[0],c[1]),Z(F,c[0],c[1])].join(\" \")),J(n,i)}function et(){if(d.removeZoombox(r),null!==P&&null!==F){d.showDoubleClickNotifier(r);var t=A._rl,n=(t[1]-t[0])/(1-f/u)/u,i=[t[0]+(P-f)*n,t[0]+(F-f)*n];a.call(\"_guiRelayout\",r,e.id+\".radialaxis.range\",i)}}function rt(t,n){var i=r._fullLayout.clickmode;if(d.removeZoombox(r),2===t){var o={};for(var s in e.viewInitial)o[e.id+\".\"+s]=e.viewInitial[s];r.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",r,o)}i.indexOf(\"select\")>-1&&1===t&&x(n,r,[e.xaxis],[e.yaxis],e.id,q),i.indexOf(\"event\")>-1&&v.click(r,n,e.id)}q.prepFn=function(t,n,a){var o=r._fullLayout.dragmode,l=O.getBoundingClientRect();if(I=n-l.left,D=a-l.top,k){var c=T.findPolygonOffset(u,w[0],w[1],k);I+=m+c[0],D+=_+c[1]}switch(o){case\"zoom\":q.moveFn=k?tt:K,q.clickFn=rt,q.doneFn=et,function(){P=null,F=null,B=e.pathSubplot(),N=!1;var t=r._fullLayout[e.id];j=i(t.bgcolor).getLuminance(),(V=d.makeZoombox(s,j,h,p,B)).attr(\"fill-rule\",\"evenodd\"),U=d.makeCorners(s,h,p),b(s)}();break;case\"select\":case\"lasso\":y(t,n,a,q,o)}},O.onmousemove=function(t){v.hover(r,t,e.id),r._fullLayout._lasthover=O,r._fullLayout._hoversubplot=e.id},O.onmouseout=function(t){r._dragging||g.unhover(r,t)},g.init(q)},O.updateRadialDrag=function(t,e,r){var i=this,s=i.gd,l=i.layers,c=i.radius,u=i.innerRadius,f=i.cx,h=i.cy,p=i.radialAxis,v=M.radialDragBoxSize,m=v/2;if(p.visible){var y,x,_,A=E(i.radialAxisAngle),T=p._rl,S=T[0],C=T[1],z=T[r],O=.75*(T[1]-T[0])/(1-e.hole)/c;r?(y=f+(c+m)*Math.cos(A),x=h-(c+m)*Math.sin(A),_=\"radialdrag\"):(y=f+(u-m)*Math.cos(A),x=h-(u-m)*Math.sin(A),_=\"radialdrag-inner\");var I,B,N,j=d.makeRectDragger(l,_,\"crosshair\",-m,-m,v,v),V={element:j,gd:s};P(n.select(j),p.visible&&u<c,{transform:R(y,x)}),V.prepFn=function(){I=null,B=null,N=null,V.moveFn=U,V.doneFn=q,b(t._zoomlayer)},V.clampFn=function(t,e){return Math.sqrt(t*t+e*e)<M.MINDRAG&&(t=0,e=0),[t,e]},g.init(V)}function U(t,e){if(I)I(t,e);else{var r=[t,-e],n=[Math.cos(A),Math.sin(A)],i=Math.abs(o.dot(r,n)/Math.sqrt(o.dot(r,r)));isNaN(i)||(I=i<.5?H:G)}}function q(){null!==B?a.call(\"_guiRelayout\",s,i.id+\".radialaxis.angle\",B):null!==N&&a.call(\"_guiRelayout\",s,i.id+\".radialaxis.range[\"+r+\"]\",N)}function H(t,e){if(0!==r){var n=y+t,a=x+e;B=Math.atan2(h-a,n-f),i.vangles&&(B=D(B,i.vangles)),B=L(B);var o=R(f,h)+F(-B);l[\"radial-axis\"].attr(\"transform\",o),l[\"radial-line\"].select(\"line\").attr(\"transform\",o);var s=i.gd._fullLayout,c=s[i.id];i.updateRadialAxisTitle(s,c,B)}}function G(t,e){var n=o.dot([t,-e],[Math.cos(A),Math.sin(A)]);if(N=z-O*n,O>0==(r?N>S:N<C)){var l=s._fullLayout,c=l[i.id];p.range[r]=N,p._rl[r]=N,i.updateRadialAxis(l,c),i.xaxis.setRange(),i.xaxis.setScale(),i.yaxis.setRange(),i.yaxis.setScale();var u=!1;for(var f in i.traceHash){var h=i.traceHash[f],d=o.filterVisible(h);h[0][0].trace._module.plot(s,i,d,c),a.traceIs(f,\"gl\")&&d.length&&(u=!0)}u&&(w(s),k(s))}else N=null}},O.updateAngularDrag=function(t){var e=this,r=e.gd,i=e.layers,s=e.radius,c=e.angularAxis,u=e.cx,f=e.cy,h=e.cxx,p=e.cyy,v=M.angularDragBoxSize,m=d.makeDragger(i,\"path\",\"angulardrag\",\"move\"),y={element:m,gd:r};function x(t,e){return Math.atan2(p+v-e,t-h-v)}n.select(m).attr(\"d\",e.pathAnnulus(s,s+v)).attr(\"transform\",R(u,f)).call(_,\"move\");var A,T,S,C,E,z,O=i.frontplot.select(\".scatterlayer\").selectAll(\".trace\"),I=O.selectAll(\".point\"),D=O.selectAll(\".textpoint\");function P(t,s){var d=e.gd._fullLayout,g=d[e.id],v=x(A+t,T+s),m=L(v-z);if(C=S+m,i.frontplot.attr(\"transform\",R(e.xOffset2,e.yOffset2)+F([-m,h,p])),e.vangles){E=e.radialAxisAngle+m;var y=R(u,f)+F(-m),b=R(u,f)+F(-E);i.bg.attr(\"transform\",y),i[\"radial-grid\"].attr(\"transform\",y),i[\"radial-axis\"].attr(\"transform\",b),i[\"radial-line\"].select(\"line\").attr(\"transform\",b),e.updateRadialAxisTitle(d,g,E)}else e.clipPaths.forTraces.select(\"path\").attr(\"transform\",R(h,p)+F(m));I.each(function(){var t=n.select(this),e=l.getTranslate(t);t.attr(\"transform\",R(e.x,e.y)+F([m]))}),D.each(function(){var t=n.select(this),e=t.select(\"text\"),r=l.getTranslate(t);t.attr(\"transform\",F([m,e.attr(\"x\"),e.attr(\"y\")])+R(r.x,r.y))}),c.rotation=o.modHalf(C,360),e.updateAngularAxis(d,g),e._hasClipOnAxisFalse&&!o.isFullCircle(e.sectorInRad)&&O.call(l.hideOutsideRangePoints,e);var _=!1;for(var M in e.traceHash)if(a.traceIs(M,\"gl\")){var P=e.traceHash[M],B=o.filterVisible(P);P[0][0].trace._module.plot(r,e,B,g),B.length&&(_=!0)}_&&(w(r),k(r))}function B(){D.select(\"text\").attr(\"transform\",null);var t={};t[e.id+\".angularaxis.rotation\"]=C,e.vangles&&(t[e.id+\".radialaxis.angle\"]=E),a.call(\"_guiRelayout\",r,t)}y.prepFn=function(r,n,i){var a=t[e.id];S=a.angularaxis.rotation;var o=m.getBoundingClientRect();A=n-o.left,T=i-o.top,z=x(A,T),y.moveFn=P,y.doneFn=B,b(t._zoomlayer)},e.vangles&&!o.isFullCircle(e.sectorInRad)&&(y.prepFn=o.noop,_(n.select(m),null)),g.init(y)},O.isPtInside=function(t){var e=this.sectorInRad,r=this.vangles,n=this.angularAxis.c2g(t.theta),i=this.radialAxis,a=i.c2l(t.r),s=i._rl;return(r?T.isPtInsidePolygon:o.isPtInsideSector)(a,n,s,e,r)},O.pathArc=function(t){var e=this.sectorInRad,r=this.vangles;return(r?T.pathPolygon:o.pathArc)(t,e[0],e[1],r)},O.pathSector=function(t){var e=this.sectorInRad,r=this.vangles;return(r?T.pathPolygon:o.pathSector)(t,e[0],e[1],r)},O.pathAnnulus=function(t,e){var r=this.sectorInRad,n=this.vangles;return(n?T.pathPolygonAnnulus:o.pathAnnulus)(t,e,r[0],r[1],n)},O.pathSubplot=function(){var t=this.innerRadius,e=this.radius;return t?this.pathAnnulus(t,e):this.pathSector(e)},O.fillViewInitialKey=function(t,e){t in this.viewInitial||(this.viewInitial[t]=e)}},{\"../../components/color\":571,\"../../components/dragelement\":589,\"../../components/drawing\":592,\"../../components/fx\":610,\"../../components/titles\":659,\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/clear_gl_canvases\":679,\"../../lib/setcursor\":714,\"../../plot_api/subroutines\":733,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"../cartesian/autorange\":741,\"../cartesian/dragbox\":751,\"../cartesian/select\":760,\"../cartesian/set_convert\":761,\"../plots\":806,\"./constants\":807,\"./helpers\":808,\"./set_convert\":819,d3:149,tinycolor2:515}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../cartesian/set_convert\"),a=n.deg2rad,o=n.rad2deg;e.exports=function(t,e,r){switch(i(t,r),t._id){case\"x\":case\"radialaxis\":!function(t,e){var r=e._subplot;t.setGeometry=function(){var e=t._rl[0],n=t._rl[1],i=r.innerRadius,a=(r.radius-i)/(n-e),o=i/a,s=e>n?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o<l;o++)a[o]=c(s[o])}else{var u=i+\"0\",f=\"d\"+i,h=u in e?c(e[u]):0,p=e[f]?c(e[f]):(t.period||2*Math.PI)/l;for(a=new Array(l),o=0;o<l;o++)a[o]=h+o*p}return a},t.setGeometry=function(){var i,s,l,c,u=e.sector,f=u.map(a),h={clockwise:-1,counterclockwise:1}[t.direction],p=a(t.rotation),d=function(t){return h*t+p},g=function(t){return(t-p)/h};switch(r){case\"linear\":s=i=n.identity,c=a,l=o,t.range=n.isFullCircle(f)?[u[0],u[0]+360]:f.map(g).map(o);break;case\"category\":var v=t._categories.length,m=t.period?Math.max(t.period,v):v;s=c=function(t){return 2*t*Math.PI/m},i=l=function(t){return t*m/Math.PI/2},t.range=[0,m]}t.c2g=function(t){return d(s(t))},t.g2c=function(t){return i(g(t))},t.t2g=function(t){return d(c(t))},t.g2t=function(t){return l(g(t))}}}(t,e)}}},{\"../../lib\":694,\"../cartesian/set_convert\":761}],820:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plot_api/plot_template\"),a=t(\"./domain\").defaults;e.exports=function(t,e,r,o){var s,l,c=o.type,u=o.attributes,f=o.handleDefaults,h=o.partition||\"x\",p=e._subplots[c],d=p.length,g=d&&p[0].replace(/\\d+$/,\"\");function v(t,e){return n.coerce(s,l,u,t,e)}for(var m=0;m<d;m++){var y=p[m];s=t[y]?t[y]:t[y]={},l=i.newContainer(e,y,g),v(\"uirevision\",e.uirevision);var x={};x[h]=[m/d,(m+1)/d],a(l,e,v,x),o.id=y,f(s,l,v,o)}}},{\"../lib\":694,\"../plot_api/plot_template\":732,\"./domain\":768}],821:[function(t,e,r){\"use strict\";var n=t(\"./ternary\"),i=t(\"../../plots/get_data\").getSubplotCalcData,a=t(\"../../lib\").counterRegex;r.name=\"ternary\";var o=r.attr=\"subplot\";r.idRoot=\"ternary\",r.idRegex=r.attrRegex=a(\"ternary\"),(r.attributes={})[o]={valType:\"subplotid\",dflt:\"ternary\",editType:\"calc\"},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){for(var e=t._fullLayout,r=t.calcdata,a=e._subplots.ternary,o=0;o<a.length;o++){var s=a[o],l=i(r,\"ternary\",s),c=e[s]._subplot;c||(c=new n({id:s,graphDiv:t,container:e._ternarylayer.node()},e),e[s]._subplot=c),c.plot(l,e,t._promises)}},r.clean=function(t,e,r,n){for(var i=n._subplots.ternary||[],a=0;a<i.length;a++){var o=i[a],s=n[o]._subplot;!e[o]&&s&&(s.plotContainer.remove(),s.clipDef.remove(),s.clipDefRelative.remove(),s.layers[\"a-title\"].remove(),s.layers[\"b-title\"].remove(),s.layers[\"c-title\"].remove())}}},{\"../../lib\":694,\"../../plots/get_data\":779,\"./layout_attributes\":822,\"./layout_defaults\":823,\"./ternary\":824}],822:[function(t,e,r){\"use strict\";var n=t(\"../../components/color/attributes\"),i=t(\"../domain\").attributes,a=t(\"../cartesian/layout_attributes\"),o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../lib/extend\").extendFlat,l={title:a.title,color:a.color,tickmode:a.tickmode,nticks:s({},a.nticks,{dflt:6,min:1}),tick0:a.tick0,dtick:a.dtick,tickvals:a.tickvals,ticktext:a.ticktext,ticks:a.ticks,ticklen:a.ticklen,tickwidth:a.tickwidth,tickcolor:a.tickcolor,showticklabels:a.showticklabels,showtickprefix:a.showtickprefix,tickprefix:a.tickprefix,showticksuffix:a.showticksuffix,ticksuffix:a.ticksuffix,showexponent:a.showexponent,exponentformat:a.exponentformat,separatethousands:a.separatethousands,tickfont:a.tickfont,tickangle:a.tickangle,tickformat:a.tickformat,tickformatstops:a.tickformatstops,hoverformat:a.hoverformat,showline:s({},a.showline,{dflt:!0}),linecolor:a.linecolor,linewidth:a.linewidth,showgrid:s({},a.showgrid,{dflt:!0}),gridcolor:a.gridcolor,gridwidth:a.gridwidth,layer:a.layer,min:{valType:\"number\",dflt:0,min:0},_deprecated:{title:a._deprecated.title,titlefont:a._deprecated.titlefont}},c=e.exports=o({domain:i({name:\"ternary\"}),bgcolor:{valType:\"color\",dflt:n.background},sum:{valType:\"number\",dflt:1,min:0},aaxis:l,baxis:l,caxis:l},\"plot\",\"from-root\");c.uirevision={valType:\"any\",editType:\"none\"},c.aaxis.uirevision=c.baxis.uirevision=c.caxis.uirevision={valType:\"any\",editType:\"none\"}},{\"../../components/color/attributes\":570,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../cartesian/layout_attributes\":755,\"../domain\":768}],823:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../plot_api/plot_template\"),a=t(\"../../lib\"),o=t(\"../subplot_defaults\"),s=t(\"../cartesian/tick_label_defaults\"),l=t(\"../cartesian/tick_mark_defaults\"),c=t(\"../cartesian/tick_value_defaults\"),u=t(\"../cartesian/line_grid_defaults\"),f=t(\"./layout_attributes\"),h=[\"aaxis\",\"baxis\",\"caxis\"];function p(t,e,r,a){var o,s,l,c=r(\"bgcolor\"),u=r(\"sum\");a.bgColor=n.combine(c,a.paper_bgcolor);for(var f=0;f<h.length;f++)s=t[o=h[f]]||{},(l=i.newContainer(e,o))._name=o,d(s,l,a,e);var p=e.aaxis,g=e.baxis,v=e.caxis;p.min+g.min+v.min>=u&&(p.min=0,g.min=0,v.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function d(t,e,r,n){var i=f[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var h=o(\"color\"),p=h!==i.color.dflt?h:r.font.color,d=e._name.charAt(0).toUpperCase(),g=\"Component \"+d,v=o(\"title.text\",g);e._hovertitle=v===g?v:d,a.coerceFont(o,\"title.font\",{family:r.font.family,size:Math.round(1.2*r.font.size),color:p}),o(\"min\"),c(t,e,o,\"linear\"),s(t,e,o,\"linear\",{}),l(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:p}),o(\"tickangle\"),o(\"tickformat\")),u(t,e,o,{dfltColor:h,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:f,handleDefaults:p,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":571,\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../cartesian/line_grid_defaults\":757,\"../cartesian/tick_label_defaults\":762,\"../cartesian/tick_mark_defaults\":763,\"../cartesian/tick_value_defaults\":764,\"../subplot_defaults\":820,\"./layout_attributes\":822}],824:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o._,l=t(\"../../components/color\"),c=t(\"../../components/drawing\"),u=t(\"../cartesian/set_convert\"),f=t(\"../../lib/extend\").extendFlat,h=t(\"../plots\"),p=t(\"../cartesian/axes\"),d=t(\"../../components/dragelement\"),g=t(\"../../components/fx\"),v=t(\"../../components/titles\"),m=t(\"../cartesian/select\").prepSelect,y=t(\"../cartesian/select\").selectOnClick,x=t(\"../cartesian/select\").clearSelect,b=t(\"../cartesian/constants\");function _(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=_;var w=_.prototype;w.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},w.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;i<t.length;i++){if(!1===t[i][0].trace.cliponaxis){this._hasClipOnAxisFalse=!0;break}}this.updateLayers(r),this.adjustLayout(r,n),h.generalUpdatePerTraceModule(this.graphDiv,this,t,r),this.layers.plotbg.select(\"path\").call(l.fill,r.bgcolor)},w.makeFramework=function(t){var e=this.graphDiv,r=t[this.id],n=this.clipId=\"clip\"+this.layoutId+this.id,i=this.clipIdRelative=\"clip-relative\"+this.layoutId+this.id;this.clipDef=o.ensureSingleById(t._clips,\"clipPath\",n,function(t){t.append(\"path\").attr(\"d\",\"M0,0Z\")}),this.clipDefRelative=o.ensureSingleById(t._clips,\"clipPath\",i,function(t){t.append(\"path\").attr(\"d\",\"M0,0Z\")}),this.plotContainer=o.ensureSingle(this.container,\"g\",this.id),this.updateLayers(r),c.setClipUrl(this.layers.backplot,n,e),c.setClipUrl(this.layers.grids,n,e)},w.updateLayers=function(t){var e=this.layers,r=[\"draglayer\",\"plotbg\",\"backplot\",\"grids\"];\"below traces\"===t.aaxis.layer&&r.push(\"aaxis\",\"aline\"),\"below traces\"===t.baxis.layer&&r.push(\"baxis\",\"bline\"),\"below traces\"===t.caxis.layer&&r.push(\"caxis\",\"cline\"),r.push(\"frontplot\"),\"above traces\"===t.aaxis.layer&&r.push(\"aaxis\",\"aline\"),\"above traces\"===t.baxis.layer&&r.push(\"baxis\",\"bline\"),\"above traces\"===t.caxis.layer&&r.push(\"caxis\",\"cline\");var i=this.plotContainer.selectAll(\"g.toplevel\").data(r,String),a=[\"agrid\",\"bgrid\",\"cgrid\"];i.enter().append(\"g\").attr(\"class\",function(t){return\"toplevel \"+t}).each(function(t){var r=n.select(this);e[t]=r,\"frontplot\"===t?r.append(\"g\").classed(\"scatterlayer\",!0):\"backplot\"===t?r.append(\"g\").classed(\"maplayer\",!0):\"plotbg\"===t?r.append(\"path\").attr(\"d\",\"M0,0Z\"):\"aline\"===t||\"bline\"===t||\"cline\"===t?r.append(\"path\"):\"grids\"===t&&a.forEach(function(t){e[t]=r.append(\"g\").classed(\"grid \"+t,!0)})}),i.order()};var k=Math.sqrt(4/3);w.adjustLayout=function(t,e){var r,n,i,a,o,s,h=this,p=t.domain,d=(p.x[0]+p.x[1])/2,g=(p.y[0]+p.y[1])/2,v=p.x[1]-p.x[0],m=p.y[1]-p.y[0],y=v*e.w,x=m*e.h,b=t.sum,_=t.aaxis.min,w=t.baxis.min,A=t.caxis.min;y>k*x?i=(a=x)*k:a=(i=y)/k,o=v*i/y,s=m*a/x,r=e.l+e.w*d-i/2,n=e.t+e.h*(1-g)-a/2,h.x0=r,h.y0=n,h.w=i,h.h=a,h.sum=b,h.xaxis={type:\"linear\",range:[_+2*A-b,b-_-2*w],domain:[d-o/2,d+o/2],_id:\"x\"},u(h.xaxis,h.graphDiv._fullLayout),h.xaxis.setScale(),h.xaxis.isPtWithinRange=function(t){return t.a>=h.aaxis.range[0]&&t.a<=h.aaxis.range[1]&&t.b>=h.baxis.range[1]&&t.b<=h.baxis.range[0]&&t.c>=h.caxis.range[1]&&t.c<=h.caxis.range[0]},h.yaxis={type:\"linear\",range:[_,b-w-A],domain:[g-s/2,g+s/2],_id:\"y\"},u(h.yaxis,h.graphDiv._fullLayout),h.yaxis.setScale(),h.yaxis.isPtWithinRange=function(){return!0};var M=h.yaxis.domain[0],T=h.aaxis=f({},t.aaxis,{range:[_,b-w-A],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[M,M+s*k],anchor:\"free\",position:0,_id:\"y\",_length:i});u(T,h.graphDiv._fullLayout),T.setScale();var S=h.baxis=f({},t.baxis,{range:[b-_-A,w],side:\"bottom\",domain:h.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});u(S,h.graphDiv._fullLayout),S.setScale();var C=h.caxis=f({},t.caxis,{range:[b-_-w,A],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[M,M+s*k],anchor:\"free\",position:0,_id:\"y\",_length:i});u(C,h.graphDiv._fullLayout),C.setScale();var E=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";h.clipDef.select(\"path\").attr(\"d\",E),h.layers.plotbg.select(\"path\").attr(\"d\",E);var L=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";h.clipDefRelative.select(\"path\").attr(\"d\",L);var z=\"translate(\"+r+\",\"+n+\")\";h.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",z),h.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=\"translate(\"+(r-S._offset)+\",\"+(n+a)+\")\";h.layers.baxis.attr(\"transform\",O),h.layers.bgrid.attr(\"transform\",O);var I=\"translate(\"+(r+i/2)+\",\"+n+\")rotate(30)translate(0,\"+-T._offset+\")\";h.layers.aaxis.attr(\"transform\",I),h.layers.agrid.attr(\"transform\",I);var D=\"translate(\"+(r+i/2)+\",\"+n+\")rotate(-30)translate(0,\"+-C._offset+\")\";h.layers.caxis.attr(\"transform\",D),h.layers.cgrid.attr(\"transform\",D),h.drawAxes(!0),h.layers.aline.select(\"path\").attr(\"d\",T.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(l.stroke,T.linecolor||\"#000\").style(\"stroke-width\",(T.linewidth||0)+\"px\"),h.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(l.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),h.layers.cline.select(\"path\").attr(\"d\",C.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(l.stroke,C.linecolor||\"#000\").style(\"stroke-width\",(C.linewidth||0)+\"px\"),h.graphDiv._context.staticPlot||h.initInteractions(),c.setClipUrl(h.layers.frontplot,h._hasClipOnAxisFalse?null:h.clipId,h.graphDiv)},w.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var l=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=v.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:s(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-l,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=v.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:s(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=v.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:s(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},w.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=p.calcTicks(t),f=p.clipEnds(t,u),h=p.makeTransFn(t),d=p.getTickSigns(t)[2],g=o.deg2rad(30),v=d*(t.linewidth||1)/2,m=d*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+v+\"l\"+Math.sin(g)*m+\",\"+Math.cos(g)*m:\"M\"+v+\",0l\"+Math.cos(g)*m+\",\"+-Math.sin(g)*m,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];p.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),p.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1});var w=p.makeLabelFns(t,0,30);p.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelXFn:w.labelXFn,labelYFn:w.labelYFn,labelAnchorFn:w.labelAnchorFn})};var A=b.MINZOOM/2+.87,M=\"m-0.87,.5h\"+A+\"v3h-\"+(A+5.2)+\"l\"+(A/2+2.6)+\",-\"+(.87*A+4.5)+\"l2.6,1.5l-\"+A/2+\",\"+.87*A+\"Z\",T=\"m0.87,.5h-\"+A+\"v3h\"+(A+5.2)+\"l-\"+(A/2+2.6)+\",-\"+(.87*A+4.5)+\"l-2.6,1.5l\"+A/2+\",\"+.87*A+\"Z\",S=\"m0,1l\"+A/2+\",\"+.87*A+\"l2.6,-1.5l-\"+(A/2+2.6)+\",-\"+(.87*A+4.5)+\"l-\"+(A/2+2.6)+\",\"+(.87*A+4.5)+\"l2.6,1.5l\"+A/2+\",-\"+.87*A+\"Z\",C=\"m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z\",E=!0;function L(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}w.initInteractions=function(){var t,e,r,n,u,f,h,p,v,_,w=this,A=w.layers.plotbg.select(\"path\").node(),z=w.graphDiv,O=z._fullLayout._zoomlayer,I={element:A,gd:z,plotinfo:{id:w.id,xaxis:w.xaxis,yaxis:w.yaxis},subplot:w.id,prepFn:function(a,o,s){I.xaxes=[w.xaxis],I.yaxes=[w.yaxis];var c=z._fullLayout.dragmode;I.minDrag=\"lasso\"===c?1:void 0,\"zoom\"===c?(I.moveFn=N,I.clickFn=P,I.doneFn=j,function(a,o,s){var c=A.getBoundingClientRect();t=o-c.left,e=s-c.top,r={a:w.aaxis.range[0],b:w.baxis.range[1],c:w.caxis.range[1]},u=r,n=w.aaxis.range[1]-r.a,f=i(w.graphDiv._fullLayout[w.id].bgcolor).getLuminance(),h=\"M0,\"+w.h+\"L\"+w.w/2+\", 0L\"+w.w+\",\"+w.h+\"Z\",p=!1,v=O.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",\"translate(\"+w.x0+\", \"+w.y0+\")\").style({fill:f>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",h),_=O.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",\"translate(\"+w.x0+\", \"+w.y0+\")\").style({fill:l.background,stroke:l.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),x(O)}(0,o,s)):\"pan\"===c?(I.moveFn=V,I.clickFn=P,I.doneFn=U,r={a:w.aaxis.range[0],b:w.baxis.range[1],c:w.caxis.range[1]},u=r,x(O)):\"select\"!==c&&\"lasso\"!==c||m(a,o,s,I,c)}};function D(t){var e={};return e[w.id+\".aaxis.min\"]=t.a,e[w.id+\".baxis.min\"]=t.b,e[w.id+\".caxis.min\"]=t.c,e}function P(t,e){var r=z._fullLayout.clickmode;L(z),2===t&&(z.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",z,D({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&y(e,z,[w.xaxis],[w.yaxis],w.id,I),r.indexOf(\"event\")>-1&&g.click(z,e,w.id)}function R(t,e){return 1-e/w.h}function F(t,e){return 1-(t+(w.h-e)/Math.sqrt(3))/w.w}function B(t,e){return(t-(w.h-e)/Math.sqrt(3))/w.w}function N(i,a){var o=t+i,s=e+a,l=Math.max(0,Math.min(1,R(0,e),R(0,s))),c=Math.max(0,Math.min(1,F(t,e),F(o,s))),d=Math.max(0,Math.min(1,B(t,e),B(o,s))),g=(l/2+d)*w.w,m=(1-l/2-c)*w.w,y=(g+m)/2,x=m-g,A=(1-l)*w.h,E=A-x/k;x<b.MINZOOM?(u=r,v.attr(\"d\",h),_.attr(\"d\",\"M0,0Z\")):(u={a:r.a+l*n,b:r.b+c*n,c:r.c+d*n},v.attr(\"d\",h+\"M\"+g+\",\"+A+\"H\"+m+\"L\"+y+\",\"+E+\"L\"+g+\",\"+A+\"Z\"),_.attr(\"d\",\"M\"+t+\",\"+e+C+\"M\"+g+\",\"+A+M+\"M\"+m+\",\"+A+T+\"M\"+y+\",\"+E+S)),p||(v.transition().style(\"fill\",f>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),_.transition().style(\"opacity\",1).duration(200),p=!0)}function j(){L(z),u!==r&&(a.call(\"_guiRelayout\",z,D(u)),E&&z.data&&z._context.showTips&&(o.notifier(s(z,\"Double-click to zoom back out\"),\"long\"),E=!1))}function V(t,e){var n=t/w.xaxis._m,i=e/w.yaxis._m,a=[(u={a:r.a-i,b:r.b+(n+i)/2,c:r.c-(n-i)/2}).a,u.b,u.c].sort(),o=a.indexOf(u.a),s=a.indexOf(u.b),l=a.indexOf(u.c);a[0]<0&&(a[1]+a[0]/2<0?(a[2]+=a[0]+a[1],a[0]=a[1]=0):(a[2]+=a[0]/2,a[1]+=a[0]/2,a[0]=0),u={a:a[o],b:a[s],c:a[l]},e=(r.a-u.a)*w.yaxis._m,t=(r.c-u.c-r.b+u.b)*w.xaxis._m);var f=\"translate(\"+(w.x0+t)+\",\"+(w.y0+e)+\")\";w.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",f);var h=\"translate(\"+-t+\",\"+-e+\")\";w.clipDefRelative.select(\"path\").attr(\"transform\",h),w.aaxis.range=[u.a,w.sum-u.b-u.c],w.baxis.range=[w.sum-u.a-u.c,u.b],w.caxis.range=[w.sum-u.a-u.b,u.c],w.drawAxes(!1),w._hasClipOnAxisFalse&&w.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(c.hideOutsideRangePoints,w)}function U(){a.call(\"_guiRelayout\",z,D(u))}A.onmousemove=function(t){g.hover(z,t,w.id),z._fullLayout._lasthover=A,z._fullLayout._hoversubplot=w.id},A.onmouseout=function(t){z._dragging||d.unhover(z,t)},d.init(I)}},{\"../../components/color\":571,\"../../components/dragelement\":589,\"../../components/drawing\":592,\"../../components/fx\":610,\"../../components/titles\":659,\"../../lib\":694,\"../../lib/extend\":684,\"../../registry\":825,\"../cartesian/axes\":742,\"../cartesian/constants\":748,\"../cartesian/select\":760,\"../cartesian/set_convert\":761,\"../plots\":806,d3:149,tinycolor2:515}],825:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/extend\"),l=t(\"./plots/attributes\"),c=t(\"./plots/layout_attributes\"),u=s.extendFlat,f=s.extendDeepAll;function h(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)x(i,t.name)}(t.basePlotModule);for(var o={},s=0;s<i.length;s++)o[i[s]]=!0,r.allCategories[i[s]]=!0;for(var l in r.modules[e]={_module:t,categories:o},a&&Object.keys(a).length&&(r.modules[e].meta=a),r.allTypes.push(e),r.componentsRegistry)m(l,e);t.layoutAttributes&&u(r.traceLayoutAttributes,t.layoutAttributes)}}function p(t){if(\"string\"!=typeof t.name)throw new Error(\"Component module *name* must be a string.\");var e=t.name;for(var n in r.componentsRegistry[e]=t,t.layoutAttributes&&(t.layoutAttributes._isLinkedToArray&&a(r.layoutArrayContainers,e),v(t)),r.modules)m(e,n);for(var i in r.subplotsRegistry)x(e,i);for(var o in r.transformsRegistry)y(e,o);t.schema&&t.schema.layout&&f(c,t.schema.layout)}function d(t){if(\"string\"!=typeof t.name)throw new Error(\"Transform module *name* must be a string.\");var e=\"Transform module \"+t.name,i=\"function\"==typeof t.transform,a=\"function\"==typeof t.calcTransform;if(!i&&!a)throw new Error(e+\" is missing a *transform* or *calcTransform* method.\");for(var s in i&&a&&n.log([e+\" has both a *transform* and *calcTransform* methods.\",\"Please note that all *transform* methods are executed\",\"before all *calcTransform* methods.\"].join(\" \")),o(t.attributes)||n.log(e+\" registered without an *attributes* object.\"),\"function\"!=typeof t.supplyDefaults&&n.log(e+\" registered without a *supplyDefaults* method.\"),r.transformsRegistry[t.name]=t,r.componentsRegistry)y(s,t.name)}function g(t){var e=t.name,n=e.split(\"-\")[0],i=t.dictionary,a=t.format,o=i&&Object.keys(i).length,s=a&&Object.keys(a).length,l=r.localeRegistry,c=l[e];if(c||(l[e]=c={}),n!==e){var u=l[n];u||(l[n]=u={}),o&&u.dictionary===c.dictionary&&(u.dictionary=i),s&&u.format===c.format&&(u.format=a)}o&&(c.dictionary=i),s&&(c.format=a)}function v(t){if(t.layoutAttributes){var e=t.layoutAttributes._arrayAttrRegexps;if(e)for(var n=0;n<e.length;n++)a(r.layoutArrayRegexes,e[n])}}function m(t,e){var n=r.componentsRegistry[t].schema;if(n&&n.traces){var i=n.traces[e];i&&f(r.modules[e]._module.attributes,i)}}function y(t,e){var n=r.componentsRegistry[t].schema;if(n&&n.transforms){var i=n.transforms[e];i&&f(r.transformsRegistry[e].attributes,i)}}function x(t,e){var n=r.componentsRegistry[t].schema;if(n&&n.subplots){var i=r.subplotsRegistry[e],a=i.layoutAttributes,o=\"subplot\"===i.attr?i.name:i.attr;Array.isArray(o)&&(o=o[0]);var s=n.subplots[o];a&&s&&f(a,s)}}function b(t){return\"object\"==typeof t&&(t=t.type),t}r.modules={},r.allCategories={},r.allTypes=[],r.subplotsRegistry={},r.transformsRegistry={},r.componentsRegistry={},r.layoutArrayContainers=[],r.layoutArrayRegexes=[],r.traceLayoutAttributes={},r.localeRegistry={},r.apiMethodRegistry={},r.collectableSubplotTypes=null,r.register=function(t){if(r.collectableSubplotTypes=null,!t)throw new Error(\"No argument passed to Plotly.register.\");t&&!Array.isArray(t)&&(t=[t]);for(var e=0;e<t.length;e++){var n=t[e];if(!n)throw new Error(\"Invalid module was attempted to be registered!\");switch(n.moduleType){case\"trace\":h(n);break;case\"transform\":d(n);break;case\"component\":p(n);break;case\"locale\":g(n);break;case\"apiMethod\":var i=n.name;r.apiMethodRegistry[i]=n.fn;break;default:throw new Error(\"Invalid module was attempted to be registered!\")}}},r.getModule=function(t){var e=r.modules[b(t)];return!!e&&e._module},r.traceIs=function(t,e){if(\"various\"===(t=b(t)))return!1;var i=r.modules[t];return i||(t&&\"area\"!==t&&n.log(\"Unrecognized trace type \"+t+\".\"),i=r.modules[l.type.dflt]),!!i.categories[e]},r.getTransformIndices=function(t,e){for(var r=[],n=t.transforms||[],i=0;i<n.length;i++)n[i].type===e&&r.push(i);return r},r.hasTransform=function(t,e){for(var r=t.transforms||[],n=0;n<r.length;n++)if(r[n].type===e)return!0;return!1},r.getComponentMethod=function(t,e){var n=r.componentsRegistry[t];return n&&n[e]||i},r.call=function(){var t=arguments[0],e=[].slice.call(arguments,1);return r.apiMethodRegistry[t].apply(null,e)}},{\"./lib/extend\":684,\"./lib/is_plain_object\":695,\"./lib/loggers\":698,\"./lib/noop\":703,\"./lib/push_unique\":708,\"./plots/attributes\":739,\"./plots/layout_attributes\":797}],826:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=n.extendFlat,a=n.extendDeep;function o(t){var e;switch(t){case\"themes__thumb\":e={autosize:!0,width:150,height:150,title:{text:\"\"},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case\"thumbnail\":e={title:{text:\"\"},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:\"\",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:e={}}return e}e.exports=function(t,e){var r;t.framework&&t.framework.isPolar&&(t=t.framework.getConfig());var n,s=t.data,l=t.layout,c=a([],s),u=a({},l,o(e.tileClass)),f=t._context||{};if(e.width&&(u.width=e.width),e.height&&(u.height=e.height),\"thumbnail\"===e.tileClass||\"themes__thumb\"===e.tileClass){u.annotations=[];var h=Object.keys(u);for(r=0;r<h.length;r++)n=h[r],[\"xaxis\",\"yaxis\",\"zaxis\"].indexOf(n.slice(0,5))>-1&&(u[h[r]].title={text:\"\"});for(r=0;r<c.length;r++){var p=c[r];p.showscale=!1,p.marker&&(p.marker.showscale=!1),\"pie\"===p.type&&(p.textposition=\"none\")}}if(Array.isArray(e.annotations))for(r=0;r<e.annotations.length;r++)u.annotations.push(e.annotations[r]);var d=Object.keys(u).filter(function(t){return t.match(/^scene\\d*$/)});if(d.length){var g={};for(\"thumbnail\"===e.tileClass&&(g={title:{text:\"\"},showaxeslabels:!1,showticklabels:!1,linetickenable:!1}),r=0;r<d.length;r++){var v=u[d[r]];v.xaxis||(v.xaxis={}),v.yaxis||(v.yaxis={}),v.zaxis||(v.zaxis={}),i(v.xaxis,g),i(v.yaxis,g),i(v.zaxis,g),v._scene=null}}var m=document.createElement(\"div\");e.tileClass&&(m.className=e.tileClass);var y={gd:m,td:m,layout:u,data:c,config:{staticPlot:void 0===e.staticPlot||e.staticPlot,plotGlPixelRatio:void 0===e.plotGlPixelRatio?2:e.plotGlPixelRatio,displaylogo:e.displaylogo||!1,showLink:e.showLink||!1,showTips:e.showTips||!1,mapboxAccessToken:f.mapboxAccessToken}};return\"transparent\"!==e.setBackground&&(y.config.setBackground=e.setBackground||\"opaque\"),y.gd.defaultLayout=o(e.tileClass),y}},{\"../lib\":694}],827:[function(t,e,r){\"use strict\";var n=t(\"../plot_api/to_image\"),i=t(\"../lib\"),a=t(\"./filesaver\");e.exports=function(t,e){var r;return i.isPlainObject(t)||(r=i.getGraphDiv(t)),(e=e||{}).format=e.format||\"png\",new Promise(function(o,s){r&&r._snapshotInProgress&&s(new Error(\"Snapshotting already in progress.\")),i.isIE()&&\"svg\"!==e.format&&s(new Error(\"Sorry IE does not support downloading from canvas. Try {format:'svg'} instead.\")),r&&(r._snapshotInProgress=!0);var l=n(t,e),c=e.filename||t.fn||\"newplot\";c+=\".\"+e.format,l.then(function(t){return r&&(r._snapshotInProgress=!1),a(t,c)}).then(function(t){o(t)}).catch(function(t){r&&(r._snapshotInProgress=!1),s(t)})})}},{\"../lib\":694,\"../plot_api/to_image\":735,\"./filesaver\":828}],828:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=document.createElement(\"a\"),n=\"download\"in r,i=/Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);return new Promise(function(a,o){if(\"undefined\"!=typeof navigator&&/MSIE [1-9]\\./.test(navigator.userAgent)&&o(new Error(\"IE < 10 unsupported\")),i&&(document.location.href=\"data:application/octet-stream\"+t.slice(t.search(/[,;]/)),a(e)),e||(e=\"download\"),n&&(r.href=t,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),a(e)),\"undefined\"!=typeof navigator&&navigator.msSaveBlob){var s=t.split(/^data:image\\/svg\\+xml,/)[1],l=decodeURIComponent(s);navigator.msSaveBlob(new Blob([l]),e),a(e)}o(new Error(\"download error\"))})}},{}],829:[function(t,e,r){\"use strict\";r.getDelay=function(t){return t._has&&(t._has(\"gl3d\")||t._has(\"gl2d\")||t._has(\"mapbox\"))?500:0},r.getRedrawFunc=function(t){var e=t._fullLayout||{};if(!(!(e._has&&e._has(\"polar\"))&&t.data&&t.data[0]&&t.data[0].r))return function(){(t.calcdata||[]).forEach(function(t){t[0]&&t[0].t&&t[0].t.cb&&t[0].t.cb()})}}},{}],830:[function(t,e,r){\"use strict\";var n=t(\"./helpers\"),i={getDelay:n.getDelay,getRedrawFunc:n.getRedrawFunc,clone:t(\"./cloneplot\"),toSVG:t(\"./tosvg\"),svgToImg:t(\"./svgtoimg\"),toImage:t(\"./toimage\"),downloadImage:t(\"./download\")};e.exports=i},{\"./cloneplot\":826,\"./download\":827,\"./helpers\":829,\"./svgtoimg\":831,\"./toimage\":832,\"./tosvg\":833}],831:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"events\").EventEmitter;e.exports=function(t){var e=t.emitter||new i,r=new Promise(function(i,a){var o=window.Image,s=t.svg,l=t.format||\"png\";if(n.isIE()&&\"svg\"!==l){var c=new Error(\"Sorry IE does not support downloading from canvas. Try {format:'svg'} instead.\");return a(c),t.promise?r:e.emit(\"error\",c)}var u=t.canvas,f=t.scale||1,h=t.width||300,p=t.height||150,d=f*h,g=f*p,v=u.getContext(\"2d\"),m=new o,y=\"data:image/svg+xml,\"+encodeURIComponent(s);u.width=d,u.height=g,m.onload=function(){var r;switch(\"svg\"!==l&&v.drawImage(m,0,0,d,g),l){case\"jpeg\":r=u.toDataURL(\"image/jpeg\");break;case\"png\":r=u.toDataURL(\"image/png\");break;case\"webp\":r=u.toDataURL(\"image/webp\");break;case\"svg\":r=y;break;default:var n=\"Image format is not jpeg, png, svg or webp.\";if(a(new Error(n)),!t.promise)return e.emit(\"error\",n)}i(r),t.promise||e.emit(\"success\",r)},m.onerror=function(r){if(a(r),!t.promise)return e.emit(\"error\",r)},m.src=y});return t.promise?r:e}},{\"../lib\":694,events:93}],832:[function(t,e,r){\"use strict\";var n=t(\"events\").EventEmitter,i=t(\"../registry\"),a=t(\"../lib\"),o=t(\"./helpers\"),s=t(\"./cloneplot\"),l=t(\"./tosvg\"),c=t(\"./svgtoimg\");e.exports=function(t,e){var r=new n,u=s(t,{format:\"png\"}),f=u.gd;f.style.position=\"absolute\",f.style.left=\"-5000px\",document.body.appendChild(f);var h=o.getRedrawFunc(f);return i.call(\"plot\",f,u.data,u.layout,u.config).then(h).then(function(){var t=o.getDelay(f._fullLayout);setTimeout(function(){var t=l(f),n=document.createElement(\"canvas\");n.id=a.randstr(),(r=c({format:e.format,width:f._fullLayout.width,height:f._fullLayout.height,canvas:n,emitter:r,svg:t})).clean=function(){f&&document.body.removeChild(f)}},t)}).catch(function(t){r.emit(\"error\",t)}),r}},{\"../lib\":694,\"../registry\":825,\"./cloneplot\":826,\"./helpers\":829,\"./svgtoimg\":831,\"./tosvg\":833,events:93}],833:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../lib\"),a=t(\"../components/drawing\"),o=t(\"../components/color\"),s=t(\"../constants/xmlns_namespaces\"),l=/\"/g,c=new RegExp('(\"TOBESTRIPPED)|(TOBESTRIPPED\")',\"g\");e.exports=function(t,e,r){var u,f=t._fullLayout,h=f._paper,p=f._toppaper,d=f.width,g=f.height;h.insert(\"rect\",\":first-child\").call(a.setRect,0,0,d,g).call(o.fill,f.paper_bgcolor);var v=f._basePlotModules||[];for(u=0;u<v.length;u++){var m=v[u];m.toSVG&&m.toSVG(t)}if(p){var y=p.node().childNodes,x=Array.prototype.slice.call(y);for(u=0;u<x.length;u++){var b=x[u];b.childNodes.length&&h.node().appendChild(b)}}f._draggers&&f._draggers.remove(),h.node().style.background=\"\",h.selectAll(\"text\").attr({\"data-unformatted\":null,\"data-math\":null}).each(function(){var t=n.select(this);if(\"hidden\"!==this.style.visibility&&\"none\"!==this.style.display){t.style({visibility:null,display:null});var e=this.style.fontFamily;e&&-1!==e.indexOf('\"')&&t.style(\"font-family\",e.replace(l,\"TOBESTRIPPED\"))}else t.remove()}),h.selectAll(\".point, .scatterpts, .legendfill>path, .legendlines>path, .cbfill\").each(function(){var t=n.select(this),e=this.style.fill;e&&-1!==e.indexOf(\"url(\")&&t.style(\"fill\",e.replace(l,\"TOBESTRIPPED\"));var r=this.style.stroke;r&&-1!==r.indexOf(\"url(\")&&t.style(\"stroke\",r.replace(l,\"TOBESTRIPPED\"))}),\"pdf\"!==e&&\"eps\"!==e||h.selectAll(\"#MathJax_SVG_glyphs path\").attr(\"stroke-width\",0),h.node().setAttributeNS(s.xmlns,\"xmlns\",s.svg),h.node().setAttributeNS(s.xmlns,\"xmlns:xlink\",s.xlink),\"svg\"===e&&r&&(h.attr(\"width\",r*d),h.attr(\"height\",r*g),h.attr(\"viewBox\",\"0 0 \"+d+\" \"+g));var _=(new window.XMLSerializer).serializeToString(h.node());return _=function(t){var e=n.select(\"body\").append(\"div\").style({display:\"none\"}).html(\"\"),r=t.replace(/(&[^;]*;)/gi,function(t){return\"&lt;\"===t?\"&#60;\":\"&rt;\"===t?\"&#62;\":-1!==t.indexOf(\"<\")||-1!==t.indexOf(\">\")?\"\":e.html(t).text()});return e.remove(),r}(_),_=(_=_.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&amp;\")).replace(c,\"'\"),i.isIE()&&(_=(_=(_=_.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),_}},{\"../components/color\":571,\"../components/drawing\":592,\"../constants/xmlns_namespaces\":672,\"../lib\":694,d3:149}],834:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").mergeArray;e.exports=function(t,e){for(var r=0;r<t.length;r++)t[r].i=r;n(e.text,t,\"tx\"),n(e.hovertext,t,\"htx\");var i=e.marker;if(i){n(i.opacity,t,\"mo\"),n(i.color,t,\"mc\");var a=i.line;a&&(n(a.color,t,\"mlc\"),n(a.width,t,\"mlw\"))}}},{\"../../lib\":694}],835:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/fx/hovertemplate_attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../components/colorbar/attributes\"),s=t(\"../../plots/font_attributes\"),l=t(\"./constants.js\"),c=t(\"../../lib/extend\").extendFlat,u=s({editType:\"calc\",arrayOk:!0,colorEditType:\"style\"}),f=c({},n.marker.line.width,{dflt:0}),h=c({width:f,editType:\"calc\"},a(\"marker.line\")),p=c({line:h,editType:\"calc\"},a(\"marker\"),{colorbar:o,opacity:{valType:\"number\",arrayOk:!0,dflt:1,min:0,max:1,editType:\"style\"}});e.exports={x:n.x,x0:n.x0,dx:n.dx,y:n.y,y0:n.y0,dy:n.dy,text:n.text,hovertext:n.hovertext,hovertemplate:i({},{keys:l.eventDataKeys}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"none\",arrayOk:!0,editType:\"calc\"},textfont:c({},u,{}),insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),constraintext:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"both\",\"none\"],dflt:\"both\",editType:\"calc\"},cliponaxis:c({},n.cliponaxis,{}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},base:{valType:\"any\",dflt:null,arrayOk:!0,editType:\"calc\"},offset:{valType:\"number\",dflt:null,arrayOk:!0,editType:\"calc\"},width:{valType:\"number\",dflt:null,min:0,arrayOk:!0,editType:\"calc\"},marker:p,selected:{marker:{opacity:n.selected.marker.opacity,color:n.selected.marker.color,editType:\"style\"},textfont:n.selected.textfont,editType:\"style\"},unselected:{marker:{opacity:n.unselected.marker.opacity,color:n.unselected.marker.color,editType:\"style\"},textfont:n.unselected.textfont,editType:\"style\"},r:n.r,t:n.t,_deprecated:{bardir:{valType:\"enumerated\",editType:\"calc\",values:[\"v\",\"h\"]}}}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/font_attributes\":769,\"../scatter/attributes\":1047,\"./constants.js\":837}],836:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/calc\"),o=t(\"./arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");e.exports=function(t,e){var r,l,c=n.getFromId(t,e.xaxis||\"x\"),u=n.getFromId(t,e.yaxis||\"y\");\"h\"===e.orientation?(r=c.makeCalcdata(e,\"x\"),l=u.makeCalcdata(e,\"y\")):(r=u.makeCalcdata(e,\"y\"),l=c.makeCalcdata(e,\"x\"));for(var f=Math.min(l.length,r.length),h=new Array(f),p=0;p<f;p++)h[p]={p:l[p],s:r[p]},e.ids&&(h[p].id=String(e.ids[p]));return i(e,\"marker\")&&a(t,e,{vals:e.marker.color,containerStr:\"marker\",cLetter:\"c\"}),i(e,\"marker.line\")&&a(t,e,{vals:e.marker.line.color,containerStr:\"marker.line\",cLetter:\"c\"}),o(h,e),s(h,e),h}},{\"../../components/colorscale/calc\":579,\"../../components/colorscale/helpers\":582,\"../../plots/cartesian/axes\":742,\"../scatter/calc_selection\":1049,\"./arrays_to_calcdata\":834}],837:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[]}},{}],838:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\").isArrayOrTypedArray,a=t(\"../../constants/numerical\").BADNUM,o=t(\"../../registry\"),s=t(\"../../plots/cartesian/axes\"),l=t(\"./sieve.js\");function c(t,e,r,o){if(o.length){var c,x,b,_,w=t._fullLayout.barmode,k=\"overlay\"===w,A=\"group\"===w;if(function(t,e,r,a){var o,s;for(o=0;o<a.length;o++){var l,c=a[o],u=c[0].trace,f=u.base,h=\"h\"===u.orientation?u.xcalendar:u.ycalendar,p=\"category\"===r.type||\"multicategory\"===r.type?function(){return null}:r.d2c;if(i(f)){for(s=0;s<Math.min(f.length,c.length);s++)l=p(f[s],0,h),n(l)?(c[s].b=+l,c[s].hasB=1):c[s].b=0;for(;s<c.length;s++)c[s].b=0}else{l=p(f,0,h);var d=n(l);for(l=d?l:0,s=0;s<c.length;s++)c[s].b=l,d&&(c[s].hasB=1)}}}(0,0,r,o),k)u(t,e,r,o);else if(A){for(c=[],x=[],b=0;b<o.length;b++)void 0===(_=o[b])[0].trace.offset?x.push(_):c.push(_);x.length&&function(t,e,r,n){var i=t._fullLayout.barnorm,a=new l(n,!1,!i);(function(t,e,r){for(var n=t._fullLayout,i=n.bargap,a=n.bargroupgap||0,o=r.positions,s=r.distinctPositions,l=r.minDiff,c=r.traces,u=o.length!==s.length,f=c.length,g=l*(1-i),v=u?g/f:g,m=v*(1-a),y=0;y<f;y++){var x=c[y],b=x[0].t,_=u?((2*y+1-f)*v-m)/2:-m/2;b.barwidth=m,b.poffset=_,b.bargroupwidth=g,b.bardelta=l}r.binWidth=c[0][0].t.barwidth/100,h(r),p(t,e,r),d(t,e,r,u)})(t,e,a),i?(v(t,r,a),m(t,r,a)):g(t,r,a)}(t,e,r,x),c.length&&u(t,e,r,c)}else{for(c=[],x=[],b=0;b<o.length;b++)void 0===(_=o[b])[0].trace.base?x.push(_):c.push(_);x.length&&function(t,e,r,n){var i=t._fullLayout,o=i.barmode,c=\"stack\"===o,u=\"relative\"===o,h=i.barnorm,p=new l(n,u,!(h||c||u));f(t,e,p),function(t,e,r){for(var n=t._fullLayout.barnorm,i=y(e),o=r.traces,l=0;l<o.length;l++){for(var c=o[l],u=c[0].trace,f=[],h=0;h<c.length;h++){var p=c[h];if(p.s!==a){var d=r.put(p.p,p.b+p.s),g=d+p.b+p.s;p.b=d,p[i]=g,n||(f.push(g),p.hasB&&f.push(d))}}n||(u._extremes[e._id]=s.findExtremes(e,f,{tozero:!0,padded:!0}))}}(t,r,p);for(var d=0;d<n.length;d++)for(var g=n[d],v=0;v<g.length;v++){var x=g[v];if(x.s!==a){var b=x.b+x.s===p.get(x.p,x.s);b&&(x._outmost=!0)}}h&&m(t,r,p)}(t,e,r,x),c.length&&u(t,e,r,c)}!function(t,e){var r,i,a,o=y(e),s={},l=1/0,c=-1/0;for(r=0;r<t.length;r++)for(a=t[r],i=0;i<a.length;i++){var u=a[i].p;n(u)&&(l=Math.min(l,u),c=Math.max(c,u))}var f=1e4/(c-l),h=s.round=function(t){return String(Math.round(f*(t-l)))};for(r=0;r<t.length;r++){(a=t[r])[0].t.extents=s;var p=a[0].t.poffset,d=Array.isArray(p);for(i=0;i<a.length;i++){var g=a[i],v=g[o]-g.w/2;if(n(v)){var m=g[o]+g.w/2,x=h(g.p);s[x]?s[x]=[Math.min(v,s[x][0]),Math.max(m,s[x][1])]:s[x]=[v,m]}g.p0=g.p+(d?p[i]:p),g.p1=g.p0+g.w,g.s0=g.b,g.s1=g.s0+g.s}}}(o,e)}}function u(t,e,r,n){for(var i=t._fullLayout.barnorm,a=!i,o=0;o<n.length;o++){var s=n[o],c=new l([s],!1,a);f(t,e,c),i?(v(t,r,c),m(t,r,c)):g(t,r,c)}}function f(t,e,r){for(var n=t._fullLayout,i=n.bargap,a=n.bargroupgap||0,o=r.minDiff,s=r.traces,l=o*(1-i),c=l*(1-a),u=-c/2,f=0;f<s.length;f++){var g=s[f][0].t;g.barwidth=c,g.poffset=u,g.bargroupwidth=l,g.bardelta=o}r.binWidth=s[0][0].t.barwidth/100,h(r),p(t,e,r),d(t,e,r)}function h(t){var e,r,a=t.traces;for(e=0;e<a.length;e++){var o,s=a[e],l=s[0],c=l.trace,u=l.t,f=c._offset||c.offset,h=u.poffset;if(i(f)){for(o=Array.prototype.slice.call(f,0,s.length),r=0;r<o.length;r++)n(o[r])||(o[r]=h);for(r=o.length;r<s.length;r++)o.push(h);u.poffset=o}else void 0!==f&&(u.poffset=f);var p=c._width||c.width,d=u.barwidth;if(i(p)){var g=Array.prototype.slice.call(p,0,s.length);for(r=0;r<g.length;r++)n(g[r])||(g[r]=d);for(r=g.length;r<s.length;r++)g.push(d);if(u.barwidth=g,void 0===f){for(o=[],r=0;r<s.length;r++)o.push(h+(d-g[r])/2);u.poffset=o}}else void 0!==p&&(u.barwidth=p,void 0===f&&(u.poffset=h+(d-p)/2))}}function p(t,e,r){for(var n=r.traces,i=y(e),a=0;a<n.length;a++)for(var o=n[a],s=o[0].t,l=s.poffset,c=Array.isArray(l),u=s.barwidth,f=Array.isArray(u),h=0;h<o.length;h++){var p=o[h],d=p.w=f?u[h]:u;p[i]=p.p+(c?l[h]:l)+d/2}}function d(t,e,r,n){var i=r.traces,a=r.minDiff/2;s.minDtick(e,r.minDiff,r.distinctPositions[0],n);for(var o=0;o<i.length;o++){var l,c,u,f,h=i[o],p=h[0],d=p.trace,g=[];for(f=0;f<h.length;f++)c=(l=h[f]).p-a,u=l.p+a,g.push(c,u);if(d.width||d.offset){var v=p.t,m=v.poffset,y=v.barwidth,x=Array.isArray(m),b=Array.isArray(y);for(f=0;f<h.length;f++){l=h[f];var _=x?m[f]:m,w=b?y[f]:y;u=(c=l.p+_)+w,g.push(c,u)}}d._extremes[e._id]=s.findExtremes(e,g,{padded:!1})}}function g(t,e,r){for(var n=r.traces,i=y(e),a=0;a<n.length;a++){for(var o=n[a],l=o[0].trace,c=[],u=!0,f=0;f<o.length;f++){var h=o[f],p=h.b,d=p+h.s;h[i]=d,c.push(d),h.hasB&&c.push(p),h.hasB&&h.b>0&&h.s>0||(u=!1)}l._extremes[e._id]=s.findExtremes(e,c,{tozero:!u,padded:!0})}}function v(t,e,r){for(var n=r.traces,i=0;i<n.length;i++)for(var o=n[i],s=0;s<o.length;s++){var l=o[s];l.s!==a&&r.put(l.p,l.b+l.s)}}function m(t,e,r){var i=t._fullLayout,o=r.traces,l=y(e),c=\"fraction\"===i.barnorm?1:100,u=c/1e9,f=e.l2c(e.c2l(0)),h=\"stack\"===i.barmode?c:f;function p(t){return n(e.c2l(t))&&(t<f-u||t>h+u||!n(f))}for(var d=0;d<o.length;d++){for(var g=o[d],v=g[0].trace,m=[],x=!0,b=!1,_=0;_<g.length;_++){var w=g[_];if(w.s!==a){var k=Math.abs(c/r.get(w.p,w.s));w.b*=k,w.s*=k;var A=w.b,M=A+w.s;w[l]=M,m.push(M),b=b||p(M),w.hasB&&(m.push(A),b=b||p(A)),w.hasB&&w.b>0&&w.s>0||(x=!1)}}v._extremes[e._id]=s.findExtremes(e,m,{tozero:!x,padded:b})}}function y(t){return t._id.charAt(0)}e.exports={crossTraceCalc:function(t,e){for(var r=e.xaxis,n=e.yaxis,i=t._fullData,a=t.calcdata,s=[],l=[],u=0;u<i.length;u++){var f=i[u];!0===f.visible&&o.traceIs(f,\"bar\")&&f.xaxis===r._id&&f.yaxis===n._id&&(\"h\"===f.orientation?s.push(a[u]):l.push(a[u]))}c(t,r,n,l),c(t,n,r,s)},setGroupPositions:c}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"./sieve.js\":847,\"fast-isnumeric\":215}],839:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../registry\"),o=t(\"../scatter/xy_defaults\"),s=t(\"../bar/style_defaults\"),l=t(\"./attributes\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,l,r,i)}var f=n.coerceFont;if(o(t,e,c,u)){u(\"orientation\",e.x&&!e.y?\"h\":\"v\"),u(\"base\"),u(\"offset\"),u(\"width\"),u(\"text\"),u(\"hovertext\"),u(\"hovertemplate\");var h=u(\"textposition\"),p=Array.isArray(h)||\"auto\"===h,d=p||\"outside\"===h;if(p||\"inside\"===h||d){var g=f(u,\"textfont\",c.font),v=n.extendFlat({},g);!(t.textfont&&t.textfont.color)&&delete v.color,f(u,\"insidetextfont\",v),d&&f(u,\"outsidetextfont\",g),u(\"constraintext\"),u(\"selected.textfont.color\"),u(\"unselected.textfont.color\"),u(\"cliponaxis\")}s(t,e,u,r,c);var m=(e.marker.line||{}).color,y=a.getComponentMethod(\"errorbars\",\"supplyDefaults\");y(t,e,m||i.defaultLine,{axis:\"y\"}),y(t,e,m||i.defaultLine,{axis:\"x\",inherit:\"y\"}),n.coerceSelectionMarkerOpacity(e,u)}else e.visible=!1}},{\"../../components/color\":571,\"../../lib\":694,\"../../registry\":825,\"../bar/style_defaults\":849,\"../scatter/xy_defaults\":1073,\"./attributes\":835}],840:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\");r.coerceString=function(t,e,r){if(\"string\"==typeof e){if(e||!t.noBlank)return e}else if(\"number\"==typeof e&&!t.strict)return String(e);return void 0!==r?r:t.dflt},r.coerceNumber=function(t,e,r){if(n(e)){e=+e;var i=t.min,a=t.max;if(!(void 0!==i&&e<i||void 0!==a&&e>a))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e<t.length&&(r=t[e]):r=t,r}},{\"fast-isnumeric\":215,tinycolor2:515}],841:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../registry\"),a=t(\"../../components/color\"),o=t(\"../scatter/fill_hover_text\");function s(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=e.mlw||t.marker.line.width;return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,a){var l,c,u,f,h,p,d,g=t.cd,v=g[0].trace,m=g[0].t,y=\"closest\"===a,x=t.maxHoverDistance,b=t.maxSpikeDistance;function _(t){return t[u]-t.w/2}function w(t){return t[u]+t.w/2}var k=y?_:function(t){return Math.min(_(t),t.p-m.bardelta/2)},A=y?w:function(t){return Math.max(w(t),t.p+m.bardelta/2)};function M(t,e){return n.inbox(t-l,e-l,x+Math.min(1,Math.abs(e-t)/d)-1)}function T(t){return M(k(t),A(t))}function S(t){return n.inbox(t.b-c,t[f]-c,x+(t[f]-c)/(t[f]-t.b)-1)}\"h\"===v.orientation?(l=r,c=e,u=\"y\",f=\"x\",h=S,p=T):(l=e,c=r,u=\"x\",f=\"y\",p=S,h=T);var C=t[u+\"a\"],E=t[f+\"a\"];d=Math.abs(C.r2c(C.range[1])-C.r2c(C.range[0]));var L=n.getDistanceFunction(a,h,p,function(t){return(h(t)+p(t))/2});if(n.getClosest(g,L,t),!1!==t.index){y||(k=function(t){return Math.min(_(t),t.p-m.bargroupwidth/2)},A=function(t){return Math.max(w(t),t.p+m.bargroupwidth/2)});var z=g[t.index],O=v.base?z.b+z.s:z.s;t[f+\"0\"]=t[f+\"1\"]=E.c2p(z[f],!0),t[f+\"LabelVal\"]=O;var I=m.extents[m.extents.round(z.p)];return t[u+\"0\"]=C.c2p(y?k(z):I[0],!0),t[u+\"1\"]=C.c2p(y?A(z):I[1],!0),t[u+\"LabelVal\"]=z.p,t.spikeDistance=(S(z)+function(t){return M(_(t),w(t))}(z))/2+b-x,t[u+\"Spike\"]=C.c2p(z.p,!0),t.color=s(v,z),o(z,v,t),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(z,v,t),t.hovertemplate=v.hovertemplate,[t]}},getTraceColor:s}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../registry\":825,\"../scatter/fill_hover_text\":1055}],842:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.layoutAttributes=t(\"./layout_attributes\"),n.supplyDefaults=t(\"./defaults\"),n.supplyLayoutDefaults=t(\"./layout_defaults\"),n.calc=t(\"./calc\"),n.crossTraceCalc=t(\"./cross_trace_calc\").crossTraceCalc,n.colorbar=t(\"../scatter/marker_colorbar\"),n.arraysToCalcdata=t(\"./arrays_to_calcdata\"),n.plot=t(\"./plot\"),n.style=t(\"./style\").style,n.styleOnSelect=t(\"./style\").styleOnSelect,n.hoverPoints=t(\"./hover\").hoverPoints,n.selectPoints=t(\"./select\"),n.moduleType=\"trace\",n.name=\"bar\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../scatter/marker_colorbar\":1065,\"./arrays_to_calcdata\":834,\"./attributes\":835,\"./calc\":836,\"./cross_trace_calc\":838,\"./defaults\":839,\"./hover\":841,\"./layout_attributes\":843,\"./layout_defaults\":844,\"./plot\":845,\"./select\":846,\"./style\":848}],843:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],844:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=0;h<r.length;h++){var p=r[h];if(n.traceIs(p,\"bar\")&&p.visible){if(l=!0,\"overlay\"!==t.barmode&&\"stack\"!==t.barmode){var d=p.xaxis+p.yaxis;f[d]&&(u=!0),f[d]=!0}if(p.visible&&\"histogram\"===p.type)\"category\"!==i.getFromId({_fullLayout:e},p[\"v\"===p.orientation?\"xaxis\":\"yaxis\"]).type&&(c=!0)}}l&&(\"overlay\"!==s(\"barmode\")&&s(\"barnorm\"),s(\"bargap\",c&&!u?0:.2),s(\"bargroupgap\"))}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"./layout_attributes\":843}],845:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"../../components/color\"),l=t(\"../../components/drawing\"),c=t(\"../../registry\"),u=t(\"./attributes\"),f=u.text,h=u.textposition,p=t(\"./helpers\"),d=t(\"./style\"),g=3;function v(t,e,r,n,i,a){var o;return i<1?o=\"scale(\"+i+\") \":(i=1,o=\"\"),\"translate(\"+(r-i*t)+\" \"+(n-i*e)+\")\"+o+(a?\"rotate(\"+a+\" \"+t+\" \"+e+\") \":\"\")}e.exports=function(t,e,r,u){var m=e.xaxis,y=e.yaxis,x=t._fullLayout,b=a.makeTraceGroups(u,r,\"trace bars\").each(function(r){var c=n.select(this),u=r[0],b=u.trace;e.isRangePlot||(u.node3=c);var _=a.ensureSingle(c,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);_.enter().append(\"g\").classed(\"point\",!0),_.exit().remove(),_.each(function(c,u){var _,w,k,A,M=n.select(this);if(\"h\"===b.orientation?(k=y.c2p(c.p0,!0),A=y.c2p(c.p1,!0),_=m.c2p(c.s0,!0),w=m.c2p(c.s1,!0),c.ct=[w,(k+A)/2]):(_=m.c2p(c.p0,!0),w=m.c2p(c.p1,!0),k=y.c2p(c.s0,!0),A=y.c2p(c.s1,!0),c.ct=[(_+w)/2,A]),i(_)&&i(w)&&i(k)&&i(A)&&_!==w&&k!==A){var T=(c.mlw+1||b.marker.line.width+1||(c.trace?c.trace.marker.line.width:0)+1)-1,S=n.round(T/2%1,2);if(!t._context.staticPlot){var C=s.opacity(c.mc||b.marker.color)<1||T>.01?E:function(t,e){return Math.abs(t-e)>=2?E(t):t>e?Math.ceil(t):Math.floor(t)};_=C(_,w),w=C(w,_),k=C(k,A),A=C(A,k)}a.ensureSingle(M,\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",\"M\"+_+\",\"+k+\"V\"+A+\"H\"+w+\"V\"+k+\"Z\").call(l.setClipUrl,e.layerClipId,t),function(t,e,r,n,i,s,c,u){var m;function y(e,r,n){var i=a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+m,transform:\"\",\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t);return i}var x=r[0].trace,b=x.orientation,_=function(t,e){var r=p.getValue(t.text,e);return p.coerceString(f,r)}(x,n);if(m=function(t,e){var r=p.getValue(t.textposition,e);return p.coerceEnumerated(h,r)}(x,n),!_||\"none\"===m)return void e.select(\"text\").remove();var w,k,A,M,T,S,C=t._fullLayout.font,E=d.getBarColor(r[n],x),L=d.getInsideTextFont(x,n,C,E),z=d.getOutsideTextFont(x,n,C),O=t._fullLayout.barmode,I=\"relative\"===O,D=\"stack\"===O||I,P=r[n],R=!D||P._outmost,F=Math.abs(s-i)-2*g,B=Math.abs(u-c)-2*g;\"outside\"===m&&(R||P.hasB||(m=\"inside\"));if(\"auto\"===m)if(R){m=\"inside\",w=y(e,_,L),k=l.bBox(w.node()),A=k.width,M=k.height;var N=A>0&&M>0,j=A<=F&&M<=B,V=A<=B&&M<=F,U=\"h\"===b?F>=A*(B/M):B>=M*(F/A);N&&(j||V||U)?m=\"inside\":(m=\"outside\",w.remove(),w=null)}else m=\"inside\";if(!w&&(w=y(e,_,\"outside\"===m?z:L),k=l.bBox(w.node()),A=k.width,M=k.height,A<=0||M<=0))return void w.remove();\"outside\"===m?(S=\"both\"===x.constraintext||\"outside\"===x.constraintext,T=function(t,e,r,n,i,a,o){var s,l=\"h\"===a?Math.abs(n-r):Math.abs(e-t);l>2*g&&(s=g);var c=1;o&&(c=\"h\"===a?Math.min(1,l/i.height):Math.min(1,l/i.width));var u,f,h,p,d=(i.left+i.right)/2,m=(i.top+i.bottom)/2;u=c*i.width,f=c*i.height,\"h\"===a?e<t?(h=e-s-u/2,p=(r+n)/2):(h=e+s+u/2,p=(r+n)/2):n>r?(h=(t+e)/2,p=n+s+f/2):(h=(t+e)/2,p=n-s-f/2);return v(d,m,h,p,c,!1)}(i,s,c,u,k,b,S)):(S=\"both\"===x.constraintext||\"inside\"===x.constraintext,T=function(t,e,r,n,i,a,o){var s,l,c,u,f,h,p,d=i.width,m=i.height,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=Math.abs(e-t),_=Math.abs(n-r);b>2*g&&_>2*g?(b-=2*(f=g),_-=2*f):f=0;d<=b&&m<=_?(h=!1,p=1):d<=_&&m<=b?(h=!0,p=1):d<m==b<_?(h=!1,p=o?Math.min(b/d,_/m):1):(h=!0,p=o?Math.min(_/d,b/m):1);h&&(h=90);h?(s=p*m,l=p*d):(s=p*d,l=p*m);\"h\"===a?e<t?(c=e+f+s/2,u=(r+n)/2):(c=e-f-s/2,u=(r+n)/2):n>r?(c=(t+e)/2,u=n-f-l/2):(c=(t+e)/2,u=n+f+l/2);return v(y,x,c,u,p,h)}(i,s,c,u,k,b,S));w.attr(\"transform\",T)}(t,M,r,u,_,w,k,A),e.layerClipId&&l.hideOutsideRangePoint(c,M.select(\"text\"),m,y,b.xcalendar,b.ycalendar)}else M.remove();function E(t){return 0===x.bargap&&0===x.bargroupgap?n.round(Math.round(t)-S,2):t}});var w=!1===u.trace.cliponaxis;l.setClipUrl(c,w?null:e.layerClipId,t)});c.getComponentMethod(\"errorbars\",\"plot\")(t,b,e)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../registry\":825,\"./attributes\":835,\"./helpers\":840,\"./style\":848,d3:149,\"fast-isnumeric\":215}],846:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[];if(!1===e)for(r=0;r<n.length;r++)n[r].selected=0;else for(r=0;r<n.length;r++){var s=n[r];e.contains(s.ct,!1,r,t)?(o.push({pointNumber:r,x:i.c2d(s.x),y:a.c2d(s.y)}),s.selected=1):s.selected=0}return o}},{}],847:[function(t,e,r){\"use strict\";e.exports=a;var n=t(\"../../lib\"),i=t(\"../../constants/numerical\").BADNUM;function a(t,e,r){this.traces=t,this.separateNegativeValues=e,this.dontMergeOverlappingData=r;for(var a=1/0,o=[],s=0;s<t.length;s++){for(var l=t[s],c=0;c<l.length;c++){var u=l[c];u.p!==i&&o.push(u.p)}l[0]&&l[0].width1&&(a=Math.min(l[0].width1,a))}this.positions=o;var f=n.distinctVals(o);this.distinctPositions=f.vals,1===f.vals.length&&a!==1/0?this.minDiff=a:this.minDiff=Math.min(f.minDiff,a),this.binWidth=this.minDiff,this.bins={}}a.prototype.put=function(t,e){var r=this.getLabel(t,e),n=this.bins[r]||0;return this.bins[r]=n+e,n},a.prototype.get=function(t,e){var r=this.getLabel(t,e);return this.bins[r]||0},a.prototype.getLabel=function(t,e){return(e<0&&this.separateNegativeValues?\"v\":\"^\")+(this.dontMergeOverlappingData?t:Math.round(t/this.binWidth))}},{\"../../constants/numerical\":671,\"../../lib\":694}],848:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/color\"),a=t(\"../../components/drawing\"),o=t(\"../../lib\"),s=t(\"../../registry\"),l=t(\"./attributes\"),c=l.textfont,u=l.insidetextfont,f=l.outsidetextfont,h=t(\"./helpers\");function p(t,e,r){var i=t.selectAll(\"path\"),o=t.selectAll(\"text\");a.pointStyle(i,e,r),o.each(function(t){var i=n.select(this),o=d(i,t,e,r);a.font(i,o)})}function d(t,e,r,n){var i=n._fullLayout.font,a=r.textfont;if(t.classed(\"bartext-inside\")){var o=x(e,r);a=v(r,e.i,i,o)}else t.classed(\"bartext-outside\")&&(a=m(r,e.i,i));return a}function g(t,e,r){return y(c,t.textfont,e,r)}function v(t,e,r,n){var a=g(t,e,r);return(void 0===t._input.textfont||void 0===t._input.textfont.color||Array.isArray(t.textfont.color)&&void 0===t.textfont.color[e])&&(a={color:i.contrast(n),family:a.family,size:a.size}),y(u,t.insidetextfont,e,a)}function m(t,e,r){var n=g(t,e,r);return y(f,t.outsidetextfont,e,n)}function y(t,e,r,n){e=e||{};var i=h.getValue(e.family,r),a=h.getValue(e.size,r),o=h.getValue(e.color,r);return{family:h.coerceString(t.family,i,n.family),size:h.coerceNumber(t.size,a,n.size),color:h.coerceColor(t.color,o,n.color)}}function x(t,e){return t.mc||e.marker.color}e.exports={style:function(t,e){var r=e?e[0].node3:n.select(t).selectAll(\"g.trace.bars\"),i=r.size(),a=t._fullLayout;r.style(\"opacity\",function(t){return t[0].trace.opacity}).each(function(t){(\"stack\"===a.barmode&&i>1||0===a.bargap&&0===a.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")}),r.selectAll(\"g.points\").each(function(e){p(n.select(this),e[0].trace,t)}),s.getComponentMethod(\"errorbars\",\"style\")(r)},styleOnSelect:function(t,e){var r=e[0].node3,i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each(function(t){var i,s=n.select(this);if(t.selected){i=o.extendFlat({},d(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)})}(t.selectAll(\"text\"),e,r)}(r,i,t):p(r,i,t)},getInsideTextFont:v,getOutsideTextFont:m,getBarColor:x}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../lib\":694,\"../../registry\":825,\"./attributes\":835,\"./helpers\":840,d3:149}],849:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s){r(\"marker.color\",o),i(t,\"marker\")&&a(t,e,s,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":571,\"../../components/colorscale/defaults\":581,\"../../components/colorscale/helpers\":582}],850:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../bar/attributes\":835,\"../scatterpolar/attributes\":1109}],851:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,v=0;v<h;v++)p[v]={p:g[v],s:d[v]};function m(t){var r=e[t];void 0!==r&&(e[\"_\"+t]=Array.isArray(r)?c.makeCalcdata(e,t):c.d2c(r,e.thetaunit))}return\"linear\"===c.type&&(m(\"width\"),m(\"offset\")),n(e,\"marker\")&&i(t,e,{vals:e.marker.color,containerStr:\"marker\",cLetter:\"c\"}),n(e,\"marker.line\")&&i(t,e,{vals:e.marker.line.color,containerStr:\"marker.line\",cLetter:\"c\"}),a(p,e),s(p,e),p},crossTraceCalc:function(t,e,r){for(var n=t.calcdata,i=[],a=0;a<n.length;a++){var s=n[a],u=s[0].trace;!0===u.visible&&l(u,\"bar\")&&u.subplot===r&&i.push(s)}var f=c({},e.radialaxis,{_id:\"x\"}),h=e.angularaxis;o({_fullLayout:e},h,f,i)}}},{\"../../components/colorscale/calc\":579,\"../../components/colorscale/helpers\":582,\"../../lib\":694,\"../../registry\":825,\"../bar/arrays_to_calcdata\":834,\"../bar/cross_trace_calc\":838,\"../scatter/calc_selection\":1049}],852:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatterpolar/defaults\").handleRThetaDefaults,a=t(\"../bar/style_defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,o,r,i)}i(t,e,s,l)?(l(\"thetaunit\"),l(\"base\"),l(\"offset\"),l(\"width\"),l(\"text\"),l(\"hovertemplate\"),a(t,e,l,r,s),n.coerceSelectionMarkerOpacity(e,l)):e.visible=!1}},{\"../../lib\":694,\"../bar/style_defaults\":849,\"../scatterpolar/defaults\":1111,\"./attributes\":850}],853:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../bar/hover\").getTraceColor,o=t(\"../scatter/fill_hover_text\"),s=t(\"../scatterpolar/hover\").makeHoverPointText,l=t(\"../../plots/polar/helpers\").isPtInsidePolygon;e.exports=function(t,e,r){var c=t.cd,u=c[0].trace,f=t.subplot,h=f.radialAxis,p=f.angularAxis,d=f.vangles,g=d?l:i.isPtInsideSector,v=t.maxHoverDistance,m=p._period||2*Math.PI,y=Math.abs(h.g2p(Math.sqrt(e*e+r*r))),x=Math.atan2(r,e);h.range[0]>h.range[1]&&(x+=Math.PI);if(n.getClosest(c,function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?v+Math.min(1,Math.abs(t.thetag1-t.thetag0)/m)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0},t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":610,\"../../lib\":694,\"../../plots/polar/helpers\":808,\"../bar/hover\":841,\"../scatter/fill_hover_text\":1055,\"../scatterpolar/hover\":1112}],854:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),style:t(\"../bar/style\").style,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":809,\"../bar/select\":846,\"../bar/style\":848,\"../scatter/marker_colorbar\":1065,\"./attributes\":850,\"./calc\":851,\"./defaults\":852,\"./hover\":853,\"./layout_attributes\":855,\"./layout_defaults\":856,\"./plot\":857}],855:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],856:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l<r.length;l++){var c=r[l];\"barpolar\"===c.type&&!0===c.visible&&(o[a=c.subplot]||(s(\"barmode\"),s(\"bargap\"),o[a]=1))}}},{\"../../lib\":694,\"./layout_attributes\":855}],857:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../components/drawing\"),s=t(\"../../plots/polar/helpers\");e.exports=function(t,e,r){var l=e.xaxis,c=e.yaxis,u=e.radialAxis,f=e.angularAxis,h=function(t){var e=t.cxx,r=t.cyy;if(t.vangles)return function(n,i,o,l){var c,u;a.angleDelta(o,l)>0?(c=o,u=l):(c=l,u=o);var f=s.findEnclosingVertexAngles(c,t.vangles)[0],h=s.findEnclosingVertexAngles(u,t.vangles)[1],p=[f,(c+u)/2,h];return s.pathPolygonAnnulus(n,i,c,u,p,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each(function(r){var s=r[0].node3=n.select(this),p=a.ensureSingle(s,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);p.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),p.exit().remove(),p.each(function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),v=(p+d)/2;t.ct=[l.c2p(g*Math.cos(v)),c.c2p(g*Math.sin(v))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)}),o.setClipUrl(s,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)})}},{\"../../components/drawing\":592,\"../../lib\":694,\"../../plots/polar/helpers\":808,d3:149,\"fast-isnumeric\":215}],858:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=n.marker,s=o.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},text:a({},n.text,{}),whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],dflt:\"outliers\",editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],dflt:!1,editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:a({},o.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:a({},o.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:a({},o.size,{arrayOk:!1,editType:\"calc\"}),color:a({},o.color,{arrayOk:!1,editType:\"style\"}),line:{color:a({},s.color,{arrayOk:!1,dflt:i.defaultLine,editType:\"style\"}),width:a({},s.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":570,\"../../lib/extend\":684,\"../scatter/attributes\":1047}],859:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=i._,o=t(\"../../plots/cartesian/axes\");function s(t,e,r){var n={text:\"tx\"};for(var i in n)Array.isArray(e[i])&&(t[n[i]]=e[i][r])}function l(t,e){return t.v-e.v}function c(t){return t.v}e.exports=function(t,e){var r,u,f,h,p,d=t._fullLayout,g=o.getFromId(t,e.xaxis||\"x\"),v=o.getFromId(t,e.yaxis||\"y\"),m=[],y=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(u=g,f=\"x\",h=v,p=\"y\"):(u=v,f=\"y\",h=g,p=\"x\");var x,b=u.makeCalcdata(e,f),_=function(t,e,r,a,o){if(e in t)return r.makeCalcdata(t,e);var s;s=e+\"0\"in t?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||i.isDateTime(t.name)&&\"date\"===r.type)?t.name:o;var l=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]);return a.map(function(){return l})}(e,p,h,b,d[y]),w=i.distinctVals(_),k=w.vals,A=w.minDiff/2,M=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i<r;i++)n[i]=t[i]-e;return n[r]=t[r-1]+e,n}(k,A),T=k.length,S=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=[];return e}(T);for(r=0;r<e._length;r++){var C=b[r];if(n(C)){var E=i.findBin(_[r],M);if(E>=0&&E<T){var L={v:C,i:r};s(L,e,r),S[E].push(L)}}}var z=\"all\"===(e.boxpoints||e.points)?i.identity:function(t){return t.v<x.lf||t.v>x.uf};for(r=0;r<T;r++)if(S[r].length>0){var O=S[r].sort(l),I=O.map(c),D=I.length;(x={}).pos=k[r],x.pts=O,x.min=I[0],x.max=I[D-1],x.mean=i.mean(I,D),x.sd=i.stdev(I,D,x.mean),x.q1=i.interp(I,.25),x.med=i.interp(I,.5),x.q3=i.interp(I,.75),x.lf=Math.min(x.q1,I[Math.min(i.findBin(2.5*x.q1-1.5*x.q3,I,!0)+1,D-1)]),x.uf=Math.max(x.q3,I[Math.max(i.findBin(2.5*x.q3-1.5*x.q1,I),0)]),x.lo=4*x.q1-3*x.q3,x.uo=4*x.q3-3*x.q1;var P=1.57*(x.q3-x.q1)/Math.sqrt(D);x.ln=x.med-P,x.un=x.med+P,x.pts2=O.filter(z),m.push(x)}!function(t,e){if(i.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r<t.length;r++){for(var n=t[r].pts||[],a={},o=0;o<n.length;o++)a[n[o].i]=o;i.tagSelected(n,e,a)}}(m,e);var R=o.findExtremes(u,b,{padded:!0});return e._extremes[u._id]=R,m.length>0?(m[0].t={num:d[y],dPos:A,posLetter:p,valLetter:f,labels:{med:a(t,\"median:\"),min:a(t,\"min:\"),q1:a(t,\"q1:\"),q3:a(t,\"q3:\"),max:a(t,\"max:\"),mean:\"sd\"===e.boxmean?a(t,\"mean \\xb1 \\u03c3:\"):a(t,\"mean:\"),lf:a(t,\"lower fence:\"),uf:a(t,\"upper fence:\")}},d[y]++,m):[{t:{empty:!0}}]}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"fast-isnumeric\":215}],860:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=[\"v\",\"h\"];function o(t,e,r,a){var o,s,l,c=e.calcdata,u=e._fullLayout,f=a._id,h=f.charAt(0),p=\"violin\"===t?\"_numViolins\":\"_numBoxes\",d=[],g=0;for(o=0;o<r.length;o++)for(l=c[r[o]],s=0;s<l.length;s++)d.push(l[s].pos),g+=(l[s].pts2||[]).length;if(d.length){var v=i.distinctVals(d),m=v.minDiff/2;n.minDtick(a,v.minDiff,v.vals[0],!0);var y=u[p],x=\"group\"===u[t+\"mode\"]&&y>1,b=1-u[t+\"gap\"],_=1-u[t+\"groupgap\"];for(o=0;o<r.length;o++){var w,k,A,M,T,S,C=(l=c[r[o]])[0].trace,E=l[0].t,L=C.width,z=C.side;L?(w=k=M=L/2,A=0):(k=(w=m)*b*_/(x?y:1),A=x?2*w*((E.num+.5)/y-.5)*b:0,M=w*(x?b/y:1)),E.dPos=w,E.bPos=A,E.bdPos=k,E.wHover=M;var O,I,D,P,R,F,B=A+k;\"positive\"===z?(T=w*(L?1:.5),O=B,S=O=A):\"negative\"===z?(T=O=A,S=w*(L?1:.5),I=B):(T=S=w,O=I=B);var N=!1;if((C.boxpoints||C.points)&&g>0){var j=C.pointpos,V=C.jitter,U=C.marker.size/2,q=0;j+V>=0&&((q=B*(j+V))>T?(N=!0,R=U,D=q):q>O&&(R=U,D=T)),q<=T&&(D=T);var H=0;j-V<=0&&((H=-B*(j-V))>S?(N=!0,F=U,P=H):H>I&&(F=U,P=S)),H<=S&&(P=S)}else D=T,P=S;var G=l[0].pos,W=l[l.length-1].pos;C._extremes[f]=n.findExtremes(a,[G,W],{padded:N,vpadminus:P,vpadplus:D,ppadminus:{x:F,y:R}[h],ppadplus:{x:R,y:F}[h]})}}}e.exports={crossTraceCalc:function(t,e){for(var r=t.calcdata,n=e.xaxis,i=e.yaxis,s=0;s<a.length;s++){for(var l=a[s],c=\"h\"===l?i:n,u=[],f=0;f<r.length;f++){var h=r[f],p=h[0].t,d=h[0].trace;!0!==d.visible||\"box\"!==d.type&&\"candlestick\"!==d.type||p.empty||(d.orientation||\"v\")!==l||d.xaxis!==n._id||d.yaxis!==i._id||u.push(f)}o(\"box\",t,u,c)}},setPositionOffset:o}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742}],861:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../components/color\"),o=t(\"./attributes\");function s(t,e,r,a){var o,s,l=r(\"y\"),c=r(\"x\"),u=c&&c.length;if(l&&l.length)o=\"v\",u?s=Math.min(n.minRowLength(c),n.minRowLength(l)):(r(\"x0\"),s=n.minRowLength(l));else{if(!u)return void(e.visible=!1);o=\"h\",r(\"y0\"),s=n.minRowLength(c)}e._length=s,i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a),r(\"orientation\",o)}function l(t,e,r,i){var a=i.prefix,s=n.coerce2(t,e,o,\"marker.outliercolor\"),l=r(\"marker.line.outliercolor\"),c=r(a+\"points\",s||l?\"suspectedoutliers\":void 0);c?(r(\"jitter\",\"all\"===c?.3:0),r(\"pointpos\",\"all\"===c?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===c&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\")):delete e.marker,r(\"hoveron\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function c(r,i){return n.coerce(t,e,o,r,i)}s(t,e,c,i),!1!==e.visible&&(c(\"line.color\",(t.marker||{}).color||r),c(\"line.width\"),c(\"fillcolor\",a.addOpacity(e.line.color,.5)),c(\"whiskerwidth\"),c(\"boxmean\"),c(\"width\"),c(\"notched\",void 0!==t.notchwidth)&&c(\"notchwidth\"),l(t,e,c,{prefix:\"box\"}))},handleSampleDefaults:s,handlePointsDefaults:l}},{\"../../components/color\":571,\"../../lib\":694,\"../../registry\":825,\"./attributes\":858}],862:[function(t,e,r){\"use strict\";e.exports=function(t,e){return e.hoverOnBox&&(t.hoverOnBox=e.hoverOnBox),\"xVal\"in e&&(t.x=e.xVal),\"yVal\"in e&&(t.y=e.yVal),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t}},{}],863:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../components/fx\"),o=t(\"../../components/color\"),s=t(\"../scatter/fill_hover_text\");function l(t,e,r,s){var l,c,u,f,h,p,d,g,v,m,y,x,b=t.cd,_=t.xa,w=t.ya,k=b[0].trace,A=b[0].t,M=\"violin\"===k.type,T=[],S=A.bdPos,C=A.wHover,E=function(t){return t.pos+A.bPos-p};M&&\"both\"!==k.side?(\"positive\"===k.side&&(v=function(t){var e=E(t);return a.inbox(e,e+C,m)}),\"negative\"===k.side&&(v=function(t){var e=E(t);return a.inbox(e-C,e,m)})):v=function(t){var e=E(t);return a.inbox(e-C,e+C,m)},x=M?function(t){return a.inbox(t.span[0]-h,t.span[1]-h,m)}:function(t){return a.inbox(t.min-h,t.max-h,m)},\"h\"===k.orientation?(h=e,p=r,d=x,g=v,l=\"y\",u=w,c=\"x\",f=_):(h=r,p=e,d=v,g=x,l=\"x\",u=_,c=\"y\",f=w);var L=Math.min(1,S/Math.abs(u.r2c(u.range[1])-u.r2c(u.range[0])));function z(t){return(d(t)+g(t))/2}m=t.maxHoverDistance-L,y=t.maxSpikeDistance-L;var O=a.getDistanceFunction(s,d,g,z);if(a.getClosest(b,O,t),!1===t.index)return[];var I=b[t.index],D=k.line.color,P=(k.marker||{}).color;o.opacity(D)&&k.line.width?t.color=D:o.opacity(P)&&k.boxpoints?t.color=P:t.color=k.fillcolor,t[l+\"0\"]=u.c2p(I.pos+A.bPos-S,!0),t[l+\"1\"]=u.c2p(I.pos+A.bPos+S,!0),t[l+\"LabelVal\"]=I.pos;var R=l+\"Spike\";t.spikeDistance=z(I)*y/m,t[R]=u.c2p(I.pos,!0);var F={},B=[\"med\",\"min\",\"q1\",\"q3\",\"max\"];(k.boxmean||(k.meanline||{}).visible)&&B.push(\"mean\"),(k.boxpoints||k.points)&&B.push(\"lf\",\"uf\");for(var N=0;N<B.length;N++){var j=B[N];if(j in I&&!(I[j]in F)){F[I[j]]=!0;var V=I[j],U=f.c2p(V,!0),q=i.extendFlat({},t);q[c+\"0\"]=q[c+\"1\"]=U,q[c+\"LabelVal\"]=V,q[c+\"Label\"]=(A.labels?A.labels[j]+\" \":\"\")+n.hoverLabelText(f,V),q.hoverOnBox=!0,\"mean\"===j&&\"sd\"in I&&\"sd\"===k.boxmean&&(q[c+\"err\"]=I.sd),t.name=\"\",t.spikeDistance=void 0,t[R]=void 0,T.push(q)}}return T}function c(t,e,r){for(var n,o,l,c=t.cd,u=t.xa,f=t.ya,h=c[0].trace,p=u.c2p(e),d=f.c2p(r),g=a.quadrature(function(t){var e=Math.max(3,t.mrc||0);return Math.max(Math.abs(u.c2p(t.x)-p)-e,1-3/e)},function(t){var e=Math.max(3,t.mrc||0);return Math.max(Math.abs(f.c2p(t.y)-d)-e,1-3/e)}),v=!1,m=0;m<c.length;m++){o=c[m];for(var y=0;y<(o.pts||[]).length;y++){var x=g(l=o.pts[y]);x<=t.distance&&(t.distance=x,v=[m,y])}}if(!v)return!1;l=(o=c[v[0]]).pts[v[1]];var b,_=u.c2p(l.x,!0),w=f.c2p(l.y,!0),k=l.mrc||1;return n=i.extendFlat({},t,{index:l.i,color:(h.marker||{}).color,name:h.name,x0:_-k,x1:_+k,y0:w-k,y1:w+k,spikeDistance:t.distance}),\"h\"===h.orientation?(b=f,n.xLabelVal=l.x,n.yLabelVal=o.pos):(b=u,n.xLabelVal=o.pos,n.yLabelVal=l.y),n[b._id.charAt(0)+\"Spike\"]=b.c2p(o.pos,!0),s(l,h,n),n}e.exports={hoverPoints:function(t,e,r,n){var i,a=t.cd[0].trace.hoveron,o=[];return-1!==a.indexOf(\"boxes\")&&(o=o.concat(l(t,e,r,n))),-1!==a.indexOf(\"points\")&&(i=c(t,e,r)),\"closest\"===n?i?[i]:o:i?(o.push(i),o):o},hoverOnBoxes:l,hoverOnPoints:c}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../scatter/fill_hover_text\":1055}],864:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.layoutAttributes=t(\"./layout_attributes\"),n.supplyDefaults=t(\"./defaults\").supplyDefaults,n.supplyLayoutDefaults=t(\"./layout_defaults\").supplyLayoutDefaults,n.calc=t(\"./calc\"),n.crossTraceCalc=t(\"./cross_trace_calc\").crossTraceCalc,n.plot=t(\"./plot\").plot,n.style=t(\"./style\").style,n.styleOnSelect=t(\"./style\").styleOnSelect,n.hoverPoints=t(\"./hover\").hoverPoints,n.eventData=t(\"./event_data\"),n.selectPoints=t(\"./select\"),n.moduleType=\"trace\",n.name=\"box\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"boxLayout\",\"zoomScale\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"./attributes\":858,\"./calc\":859,\"./cross_trace_calc\":860,\"./defaults\":861,\"./event_data\":862,\"./hover\":863,\"./layout_attributes\":865,\"./layout_defaults\":866,\"./plot\":867,\"./select\":868,\"./style\":869}],865:[function(t,e,r){\"use strict\";e.exports={boxmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"overlay\",editType:\"calc\"},boxgap:{valType:\"number\",min:0,max:1,dflt:.3,editType:\"calc\"},boxgroupgap:{valType:\"number\",min:0,max:1,dflt:.3,editType:\"calc\"}}},{}],866:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"./layout_attributes\");function o(t,e,r,i,a){for(var o,s=a+\"Layout\",l=0;l<r.length;l++)if(n.traceIs(r[l],s)){o=!0;break}o&&(i(a+\"mode\"),i(a+\"gap\"),i(a+\"groupgap\"))}e.exports={supplyLayoutDefaults:function(t,e,r){o(0,0,r,function(r,n){return i.coerce(t,e,a,r,n)},\"box\")},_supply:o}},{\"../../lib\":694,\"../../registry\":825,\"./layout_attributes\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=5,s=.01;function l(t,e,r,a){var o,s,l=e.pos,c=e.val,u=a.bPos,f=a.wdPos||0,h=a.bPosPxOffset||0,p=r.whiskerwidth||0,d=r.notched||!1,g=d?1-2*r.notchwidth:1;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var v=t.selectAll(\"path.box\").data(\"violin\"!==r.type||r.box.visible?i.identity:[]);v.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"box\"),v.exit().remove(),v.each(function(t){if(t.empty)return\"M0,0Z\";var e=t.pos,a=l.c2p(e+u,!0)+h,v=l.c2p(e+u-o,!0)+h,m=l.c2p(e+u+s,!0)+h,y=l.c2p(e+u-f,!0)+h,x=l.c2p(e+u+f,!0)+h,b=l.c2p(e+u-o*g,!0)+h,_=l.c2p(e+u+s*g,!0)+h,w=c.c2p(t.q1,!0),k=c.c2p(t.q3,!0),A=i.constrain(c.c2p(t.med,!0),Math.min(w,k)+1,Math.max(w,k)-1),M=void 0===t.lf||!1===r.boxpoints,T=c.c2p(M?t.min:t.lf,!0),S=c.c2p(M?t.max:t.uf,!0),C=c.c2p(t.ln,!0),E=c.c2p(t.un,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+A+\",\"+b+\"V\"+_+\"M\"+w+\",\"+v+\"V\"+m+(d?\"H\"+C+\"L\"+A+\",\"+_+\"L\"+E+\",\"+m:\"\")+\"H\"+k+\"V\"+v+(d?\"H\"+E+\"L\"+A+\",\"+b+\"L\"+C+\",\"+v:\"\")+\"ZM\"+w+\",\"+a+\"H\"+T+\"M\"+k+\",\"+a+\"H\"+S+(0===p?\"\":\"M\"+T+\",\"+y+\"V\"+x+\"M\"+S+\",\"+y+\"V\"+x)):n.select(this).attr(\"d\",\"M\"+b+\",\"+A+\"H\"+_+\"M\"+v+\",\"+w+\"H\"+m+(d?\"V\"+C+\"L\"+_+\",\"+A+\"L\"+m+\",\"+E:\"\")+\"V\"+k+\"H\"+v+(d?\"V\"+E+\"L\"+b+\",\"+A+\"L\"+v+\",\"+C:\"\")+\"ZM\"+a+\",\"+w+\"V\"+T+\"M\"+a+\",\"+k+\"V\"+S+(0===p?\"\":\"M\"+y+\",\"+T+\"H\"+x+\"M\"+y+\",\"+S+\"H\"+x))})}function c(t,e,r,n){var l=e.x,c=e.y,u=n.bdPos,f=n.bPos,h=r.boxpoints||r.points;i.seedPseudoRandom();var p=t.selectAll(\"g.points\").data(h?function(t){return t.forEach(function(t){t.t=n,t.trace=r}),t}:[]);p.enter().append(\"g\").attr(\"class\",\"points\"),p.exit().remove();var d=p.selectAll(\"path\").data(function(t){var e,n,a=t.pts2,l=Math.max((t.max-t.min)/10,t.q3-t.q1),c=1e-9*l,p=l*s,d=[],g=0;if(r.jitter){if(0===l)for(g=1,d=new Array(a.length),e=0;e<a.length;e++)d[e]=1;else for(e=0;e<a.length;e++){var v=Math.max(0,e-o),m=a[v].v,y=Math.min(a.length-1,e+o),x=a[y].v;\"all\"!==h&&(a[e].v<t.lf?x=Math.min(x,t.lf):m=Math.max(m,t.uf));var b=Math.sqrt(p*(y-v)/(x-m+c))||0;b=i.constrain(Math.abs(b),0,1),d.push(b),g=Math.max(b,g)}n=2*r.jitter/(g||1)}for(e=0;e<a.length;e++){var _=a[e],w=_.v,k=r.jitter?n*d[e]*(i.pseudoRandom()-.5):0,A=t.pos+f+u*(r.pointpos+k);\"h\"===r.orientation?(_.y=A,_.x=w):(_.x=A,_.y=w),\"suspectedoutliers\"===h&&w<t.uo&&w>t.lo&&(_.so=!0)}return a});d.enter().append(\"path\").classed(\"point\",!0),d.exit().remove(),d.call(a.translatePoints,l,c)}function u(t,e,r,a){var o,s,l=e.pos,c=e.val,u=a.bPos,f=a.bPosPxOffset||0,h=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var p=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);p.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),p.exit().remove(),p.each(function(t){var e=l.c2p(t.pos+u,!0)+f,i=l.c2p(t.pos+u-o,!0)+f,a=l.c2p(t.pos+u+s,!0)+f,p=c.c2p(t.mean,!0),d=c.c2p(t.mean-t.sd,!0),g=c.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+p+\",\"+i+\"V\"+a+(\"sd\"===h?\"m0,0L\"+d+\",\"+e+\"L\"+p+\",\"+i+\"L\"+g+\",\"+e+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+p+\"H\"+a+(\"sd\"===h?\"m0,0L\"+e+\",\"+d+\"L\"+i+\",\"+p+\"L\"+e+\",\"+g+\"Z\":\"\"))})}e.exports={plot:function(t,e,r,a){var o=e.xaxis,s=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each(function(t){var r,i,a=n.select(this),f=t[0],h=f.t,p=f.trace;e.isRangePlot||(f.node3=a),h.wdPos=h.bdPos*p.whiskerwidth,!0!==p.visible||h.empty?a.remove():(\"h\"===p.orientation?(r=s,i=o):(r=o,i=s),l(a,{pos:r,val:i},p,h),c(a,{x:o,y:s},p,h),u(a,{pos:r,val:i},p,h))})},plotBoxAndWhiskers:l,plotPoints:c,plotBoxMean:u}},{\"../../components/drawing\":592,\"../../lib\":694,d3:149}],868:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r<i.length;r++)for(n=0;n<(i[r].pts||[]).length;n++)i[r].pts[n].selected=0;else for(r=0;r<i.length;r++)for(n=0;n<(i[r].pts||[]).length;n++){var l=i[r].pts[n],c=a.c2p(l.x),u=o.c2p(l.y);e.contains([c,u],null,l.i,t)?(s.push({pointNumber:l.i,x:a.c2d(l.x),y:o.c2d(l.y)}),l.selected=1):l.selected=0}return s}},{}],869:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/color\"),a=t(\"../../components/drawing\");e.exports={style:function(t,e){var r=e?e[0].node3:n.select(t).selectAll(\"g.trace.boxes\");r.style(\"opacity\",function(t){return t[0].trace.opacity}),r.each(function(e){var r=n.select(this),o=e[0].trace,s=o.line.width;function l(t,e,r,n){t.style(\"stroke-width\",e+\"px\").call(i.stroke,r).call(i.fill,n)}var c=r.selectAll(\"path.box\");if(\"candlestick\"===o.type)c.each(function(t){if(!t.empty){var e=n.select(this),r=o[t.dir];l(e,r.line.width,r.line.color,r.fillcolor),e.style(\"opacity\",o.selectedpoints&&!t.selected?.3:1)}});else{l(c,s,o.line.color,o.fillcolor),r.selectAll(\"path.mean\").style({\"stroke-width\":s,\"stroke-dasharray\":2*s+\"px,\"+s+\"px\"}).call(i.stroke,o.line.color);var u=r.selectAll(\"path.point\");a.pointStyle(u,o,t)}})},styleOnSelect:function(t,e){var r=e[0].node3,n=e[0].trace,i=r.selectAll(\"path.point\");n.selectedpoints?a.selectedPointStyle(i,n):a.pointStyle(i,n,t)}}},{\"../../components/color\":571,\"../../components/drawing\":592,d3:149}],870:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").extendFlat,i=t(\"../ohlc/attributes\"),a=t(\"../box/attributes\");function o(t){return{line:{color:n({},a.line.color,{dflt:t}),width:a.line.width,editType:\"style\"},fillcolor:a.fillcolor,editType:\"style\"}}e.exports={x:i.x,open:i.open,high:i.high,low:i.low,close:i.close,line:{width:n({},a.line.width,{}),editType:\"style\"},increasing:o(i.increasing.line.color.dflt),decreasing:o(i.decreasing.line.color.dflt),text:i.text,whiskerwidth:n({},a.whiskerwidth,{dflt:0}),hoverlabel:i.hoverlabel}},{\"../../lib\":694,\"../box/attributes\":858,\"../ohlc/attributes\":995}],871:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../ohlc/calc\").calcCommon;function o(t,e,r,n){return{min:r,q1:Math.min(t,n),med:n,q3:Math.max(t,n),max:e}}e.exports=function(t,e){var r=t._fullLayout,s=i.getFromId(t,e.xaxis),l=i.getFromId(t,e.yaxis),c=s.makeCalcdata(e,\"x\"),u=a(t,e,c,l,o);return u.length?(n.extendFlat(u[0].t,{num:r._numBoxes,dPos:n.distinctVals(c).minDiff/2,posLetter:\"x\",valLetter:\"y\"}),r._numBoxes++,u):[{t:{empty:!0}}]}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../ohlc/calc\":996}],872:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../ohlc/ohlc_defaults\"),o=t(\"./attributes\");function s(t,e,r,n){var a=r(n+\".line.color\");r(n+\".line.width\",e.line.width),r(n+\".fillcolor\",i.addOpacity(a,.5))}e.exports=function(t,e,r,i){function l(r,i){return n.coerce(t,e,o,r,i)}a(t,e,l,i)?(l(\"line.width\"),s(t,e,l,\"increasing\"),s(t,e,l,\"decreasing\"),l(\"text\"),l(\"whiskerwidth\"),i._requestRangeslider[e.xaxis]=!0):e.visible=!1}},{\"../../components/color\":571,\"../../lib\":694,\"../ohlc/ohlc_defaults\":1e3,\"./attributes\":870}],873:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"candlestick\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\",\"candlestick\",\"boxLayout\"],meta:{},attributes:t(\"./attributes\"),layoutAttributes:t(\"../box/layout_attributes\"),supplyLayoutDefaults:t(\"../box/layout_defaults\").supplyLayoutDefaults,crossTraceCalc:t(\"../box/cross_trace_calc\").crossTraceCalc,supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"../box/plot\").plot,layerName:\"boxlayer\",style:t(\"../box/style\").style,hoverPoints:t(\"../ohlc/hover\").hoverPoints,selectPoints:t(\"../ohlc/select\")}},{\"../../plots/cartesian\":754,\"../box/cross_trace_calc\":860,\"../box/layout_attributes\":865,\"../box/layout_defaults\":866,\"../box/plot\":867,\"../box/style\":869,\"../ohlc/hover\":998,\"../ohlc/select\":1002,\"./attributes\":870,\"./calc\":871,\"./defaults\":872}],874:[function(t,e,r){\"use strict\";var n=t(\"./axis_defaults\"),i=t(\"../../plot_api/plot_template\");e.exports=function(t,e,r,a,o){a(\"a\")||(a(\"da\"),a(\"a0\")),a(\"b\")||(a(\"db\"),a(\"b0\")),function(t,e,r,a){[\"aaxis\",\"baxis\"].forEach(function(o){var s=o.charAt(0),l=t[o]||{},c=i.newContainer(e,o),u={tickfont:\"x\",id:s+\"axis\",letter:s,font:e.font,name:o,data:t[s],calendar:e.calendar,dfltColor:a,bgColor:r.paper_bgcolor,fullLayout:r};n(l,c,u),c._categories=c._categories||[],t[o]||\"-\"===l.type||(t[o]={type:l.type})})}(t,e,r,o)}},{\"../../plot_api/plot_template\":732,\"./axis_defaults\":879}],875:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t){return function t(e,r){if(!n(e)||r>=10)return null;var i=1/0;var a=-1/0;var o=e.length;for(var s=0;s<o;s++){var l=e[s];if(n(l)){var c=t(l,r+1);c&&(i=Math.min(c[0],i),a=Math.max(c[1],a))}else i=Math.min(l,i),a=Math.max(l,a)}return[i,a]}(t,0)}},{\"../../lib\":694}],876:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./axis_attributes\"),a=t(\"../../components/color/attributes\"),o=n({editType:\"calc\"});o.family.dflt='\"Open Sans\", verdana, arial, sans-serif',o.size.dflt=12,o.color.dflt=a.defaultLine,e.exports={carpet:{valType:\"string\",editType:\"calc\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},a:{valType:\"data_array\",editType:\"calc\"},a0:{valType:\"number\",dflt:0,editType:\"calc\"},da:{valType:\"number\",dflt:1,editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},b0:{valType:\"number\",dflt:0,editType:\"calc\"},db:{valType:\"number\",dflt:1,editType:\"calc\"},cheaterslope:{valType:\"number\",dflt:1,editType:\"calc\"},aaxis:i,baxis:i,font:o,color:{valType:\"color\",dflt:a.defaultLine,editType:\"plot\"},transforms:void 0}},{\"../../components/color/attributes\":570,\"../../plots/font_attributes\":769,\"./axis_attributes\":878}],877:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,i){var a,o,s,l,c,u,f,h,p,d,g,v,m,y=n(r)?\"a\":\"b\",x=(\"a\"===y?t.aaxis:t.baxis).smoothing,b=\"a\"===y?t.a2i:t.b2j,_=\"a\"===y?r:i,w=\"a\"===y?i:r,k=\"a\"===y?e.a.length:e.b.length,A=\"a\"===y?e.b.length:e.a.length,M=Math.floor(\"a\"===y?t.b2j(w):t.a2i(w)),T=\"a\"===y?function(e){return t.evalxy([],e,M)}:function(e){return t.evalxy([],M,e)};x&&(s=Math.max(0,Math.min(A-2,M)),l=M-s,o=\"a\"===y?function(e,r){return t.dxydi([],e,s,r,l)}:function(e,r){return t.dxydj([],s,e,l,r)});var S=b(_[0]),C=b(_[1]),E=S<C?1:-1,L=1e-8*(C-S),z=E>0?Math.floor:Math.ceil,O=E>0?Math.ceil:Math.floor,I=E>0?Math.min:Math.max,D=E>0?Math.max:Math.min,P=z(S+L),R=O(C-L),F=[[f=T(S)]];for(a=P;a*E<R*E;a+=E)c=[],g=D(S,a),m=(v=I(C,a+E))-g,u=Math.max(0,Math.min(k-2,Math.floor(.5*(g+v)))),h=T(v),x&&(p=o(u,g-u),d=o(u,v-u),c.push([f[0]+p[0]/3*m,f[1]+p[1]/3*m]),c.push([h[0]-d[0]/3*m,h[1]-d[1]/3*m])),c.push(h),F.push(c),f=h;return F}},{\"../../lib\":694}],878:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../components/color/attributes\"),a=t(\"../../plots/cartesian/layout_attributes\"),o=t(\"../../plot_api/edit_types\").overrideAll;e.exports={color:{valType:\"color\",editType:\"calc\"},smoothing:{valType:\"number\",dflt:1,min:0,max:1.3,editType:\"calc\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"calc\"},font:n({editType:\"calc\"}),offset:{valType:\"number\",dflt:10,editType:\"calc\"},editType:\"calc\"},type:{valType:\"enumerated\",values:[\"-\",\"linear\",\"date\",\"category\"],dflt:\"-\",editType:\"calc\"},autorange:{valType:\"enumerated\",values:[!0,!1,\"reversed\"],dflt:!0,editType:\"calc\"},rangemode:{valType:\"enumerated\",values:[\"normal\",\"tozero\",\"nonnegative\"],dflt:\"normal\",editType:\"calc\"},range:{valType:\"info_array\",editType:\"calc\",items:[{valType:\"any\",editType:\"calc\"},{valType:\"any\",editType:\"calc\"}]},fixedrange:{valType:\"boolean\",dflt:!1,editType:\"calc\"},cheatertype:{valType:\"enumerated\",values:[\"index\",\"value\"],dflt:\"value\",editType:\"calc\"},tickmode:{valType:\"enumerated\",values:[\"linear\",\"array\"],dflt:\"array\",editType:\"calc\"},nticks:{valType:\"integer\",min:0,dflt:0,editType:\"calc\"},tickvals:{valType:\"data_array\",editType:\"calc\"},ticktext:{valType:\"data_array\",editType:\"calc\"},showticklabels:{valType:\"enumerated\",values:[\"start\",\"end\",\"both\",\"none\"],dflt:\"start\",editType:\"calc\"},tickfont:n({editType:\"calc\"}),tickangle:{valType:\"angle\",dflt:\"auto\",editType:\"calc\"},tickprefix:{valType:\"string\",dflt:\"\",editType:\"calc\"},showtickprefix:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"calc\"},ticksuffix:{valType:\"string\",dflt:\"\",editType:\"calc\"},showticksuffix:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"calc\"},showexponent:{valType:\"enumerated\",values:[\"all\",\"first\",\"last\",\"none\"],dflt:\"all\",editType:\"calc\"},exponentformat:{valType:\"enumerated\",values:[\"none\",\"e\",\"E\",\"power\",\"SI\",\"B\"],dflt:\"B\",editType:\"calc\"},separatethousands:{valType:\"boolean\",dflt:!1,editType:\"calc\"},tickformat:{valType:\"string\",dflt:\"\",editType:\"calc\"},tickformatstops:o(a.tickformatstops,\"calc\",\"from-root\"),categoryorder:{valType:\"enumerated\",values:[\"trace\",\"category ascending\",\"category descending\",\"array\"],dflt:\"trace\",editType:\"calc\"},categoryarray:{valType:\"data_array\",editType:\"calc\"},labelpadding:{valType:\"integer\",dflt:10,editType:\"calc\"},labelprefix:{valType:\"string\",editType:\"calc\"},labelsuffix:{valType:\"string\",dflt:\"\",editType:\"calc\"},showline:{valType:\"boolean\",dflt:!1,editType:\"calc\"},linecolor:{valType:\"color\",dflt:i.defaultLine,editType:\"calc\"},linewidth:{valType:\"number\",min:0,dflt:1,editType:\"calc\"},gridcolor:{valType:\"color\",editType:\"calc\"},gridwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc\"},showgrid:{valType:\"boolean\",dflt:!0,editType:\"calc\"},minorgridcount:{valType:\"integer\",min:0,dflt:0,editType:\"calc\"},minorgridwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc\"},minorgridcolor:{valType:\"color\",dflt:i.lightLine,editType:\"calc\"},startline:{valType:\"boolean\",editType:\"calc\"},startlinecolor:{valType:\"color\",editType:\"calc\"},startlinewidth:{valType:\"number\",dflt:1,editType:\"calc\"},endline:{valType:\"boolean\",editType:\"calc\"},endlinewidth:{valType:\"number\",dflt:1,editType:\"calc\"},endlinecolor:{valType:\"color\",editType:\"calc\"},tick0:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},dtick:{valType:\"number\",min:0,dflt:1,editType:\"calc\"},arraytick0:{valType:\"integer\",min:0,dflt:0,editType:\"calc\"},arraydtick:{valType:\"integer\",min:1,dflt:1,editType:\"calc\"},_deprecated:{title:{valType:\"string\",editType:\"calc\"},titlefont:n({editType:\"calc\"}),titleoffset:{valType:\"number\",dflt:10,editType:\"calc\"}},editType:\"calc\"}},{\"../../components/color/attributes\":570,\"../../plot_api/edit_types\":725,\"../../plots/cartesian/layout_attributes\":755,\"../../plots/font_attributes\":769}],879:[function(t,e,r){\"use strict\";var n=t(\"./attributes\"),i=t(\"../../components/color\").addOpacity,a=t(\"../../registry\"),o=t(\"../../lib\"),s=t(\"../../plots/cartesian/tick_value_defaults\"),l=t(\"../../plots/cartesian/tick_label_defaults\"),c=t(\"../../plots/cartesian/category_order_defaults\"),u=t(\"../../plots/cartesian/set_convert\"),f=t(\"../../plots/cartesian/axis_autotype\");e.exports=function(t,e,r){var h=r.letter,p=r.font||{},d=n[h+\"axis\"];function g(r,n){return o.coerce(t,e,d,r,n)}function v(r,n){return o.coerce2(t,e,d,r,n)}r.name&&(e._name=r.name,e._id=r.name);var m=g(\"type\");(\"-\"===m&&(r.data&&function(t,e){if(\"-\"!==t.type)return;var r=t._id.charAt(0),n=t[r+\"calendar\"];t.type=f(e,n)}(e,r.data),\"-\"===e.type?e.type=\"linear\":m=t.type=e.type),g(\"smoothing\"),g(\"cheatertype\"),g(\"showticklabels\"),g(\"labelprefix\",h+\" = \"),g(\"labelsuffix\"),g(\"showtickprefix\"),g(\"showticksuffix\"),g(\"separatethousands\"),g(\"tickformat\"),g(\"exponentformat\"),g(\"showexponent\"),g(\"categoryorder\"),g(\"tickmode\"),g(\"tickvals\"),g(\"ticktext\"),g(\"tick0\"),g(\"dtick\"),\"array\"===e.tickmode&&(g(\"arraytick0\"),g(\"arraydtick\")),g(\"labelpadding\"),e._hovertitle=h,\"date\"===m)&&a.getComponentMethod(\"calendars\",\"handleDefaults\")(t,e,\"calendar\",r.calendar);u(e,r.fullLayout),e.c2p=o.identity;var y=g(\"color\",r.dfltColor),x=y===t.color?y:p.color;g(\"title.text\")&&(o.coerceFont(g,\"title.font\",{family:p.family,size:Math.round(1.2*p.size),color:x}),g(\"title.offset\")),g(\"tickangle\"),g(\"autorange\",!e.isValidRange(t.range))&&g(\"rangemode\"),g(\"range\"),e.cleanRange(),g(\"fixedrange\"),s(t,e,g,m),l(t,e,g,m,r),c(t,e,g,{data:r.data,dataAttr:h});var b=v(\"gridcolor\",i(y,.3)),_=v(\"gridwidth\"),w=g(\"showgrid\");w||(delete e.gridcolor,delete e.gridwidth);var k=v(\"startlinecolor\",y),A=v(\"startlinewidth\",_);g(\"startline\",e.showgrid||!!k||!!A)||(delete e.startlinecolor,delete e.startlinewidth);var M=v(\"endlinecolor\",y),T=v(\"endlinewidth\",_);return g(\"endline\",e.showgrid||!!M||!!T)||(delete e.endlinecolor,delete e.endlinewidth),w?(g(\"minorgridcount\"),g(\"minorgridwidth\",_),g(\"minorgridcolor\",i(b,.06)),e.minorgridcount||(delete e.minorgridwidth,delete e.minorgridcolor)):(delete e.gridcolor,delete e.gridWidth),\"none\"===e.showticklabels&&(delete e.tickfont,delete e.tickangle,delete e.showexponent,delete e.exponentformat,delete e.tickformat,delete e.showticksuffix,delete e.showtickprefix),e.showticksuffix||delete e.ticksuffix,e.showtickprefix||delete e.tickprefix,g(\"tickmode\"),e}},{\"../../components/color\":571,\"../../lib\":694,\"../../plots/cartesian/axis_autotype\":743,\"../../plots/cartesian/category_order_defaults\":746,\"../../plots/cartesian/set_convert\":761,\"../../plots/cartesian/tick_label_defaults\":762,\"../../plots/cartesian/tick_value_defaults\":764,\"../../registry\":825,\"./attributes\":876}],880:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\").isArray1D,a=t(\"./cheater_basis\"),o=t(\"./array_minmax\"),s=t(\"./calc_gridlines\"),l=t(\"./calc_labels\"),c=t(\"./calc_clippath\"),u=t(\"../heatmap/clean_2d_array\"),f=t(\"./smooth_fill_2d_array\"),h=t(\"../heatmap/convert_column_xyz\"),p=t(\"./set_convert\");e.exports=function(t,e){var r=n.getFromId(t,e.xaxis),d=n.getFromId(t,e.yaxis),g=e.aaxis,v=e.baxis,m=e.x,y=e.y,x=[];m&&i(m)&&x.push(\"x\"),y&&i(y)&&x.push(\"y\"),x.length&&h(e,g,v,\"a\",\"b\",x);var b=e._a=e._a||e.a,_=e._b=e._b||e.b;m=e._x||e.x,y=e._y||e.y;var w={};if(e._cheater){var k=\"index\"===g.cheatertype?b.length:b,A=\"index\"===v.cheatertype?_.length:_;m=a(k,A,e.cheaterslope)}e._x=m=u(m),e._y=y=u(y),f(m,b,_),f(y,b,_),p(e),e.setScale();var M=o(m),T=o(y),S=.5*(M[1]-M[0]),C=.5*(M[1]+M[0]),E=.5*(T[1]-T[0]),L=.5*(T[1]+T[0]);return M=[C-1.3*S,C+1.3*S],T=[L-1.3*E,L+1.3*E],e._extremes[r._id]=n.findExtremes(r,M,{padded:!0}),e._extremes[d._id]=n.findExtremes(d,T,{padded:!0}),s(e,\"a\",\"b\"),s(e,\"b\",\"a\"),l(e,g),l(e,v),w.clipsegments=c(e._xctrl,e._yctrl,g,v),w.x=m,w.y=y,w.a=b,w.b=_,[w]}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../heatmap/clean_2d_array\":946,\"../heatmap/convert_column_xyz\":948,\"./array_minmax\":875,\"./calc_clippath\":881,\"./calc_gridlines\":882,\"./calc_labels\":883,\"./cheater_basis\":885,\"./set_convert\":898,\"./smooth_fill_2d_array\":899}],881:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i,a,o,s=[],l=!!r.smoothing,c=!!n.smoothing,u=t[0].length-1,f=t.length-1;for(i=0,a=[],o=[];i<=u;i++)a[i]=t[0][i],o[i]=e[0][i];for(s.push({x:a,y:o,bicubic:l}),i=0,a=[],o=[];i<=f;i++)a[i]=t[i][u],o[i]=e[i][u];for(s.push({x:a,y:o,bicubic:c}),i=u,a=[],o=[];i>=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],882:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,v,m,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],k=b._boundarylines=[],A=t[\"_\"+r],M=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var T=t._xctrl,S=t._yctrl,C=T[0].length,E=T.length,L=t._a.length,z=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var O=b.smoothing?3:1;function I(n){var i,a,o,s,l,c,u,f,p,d,g,v,m=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(z-2,a))),s=a-o,x.length=z,x.crossLength=L,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i<L;i++)c=Math.min(L-2,i),u=i-c,f=t.evalxy([],i,a),M.smoothing&&i>0&&(p=t.dxydi([],i-1,o,0,s),m.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),m.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),m.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(L-2,i))),u=i-c,x.length=L,x.crossLength=z,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a<z;a++)o=Math.min(z-2,a),s=a-o,f=t.evalxy([],i,a),M.smoothing&&a>0&&(g=t.dxydj([],c,a-1,u,0),m.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),v=t.dxydj([],c,a-1,u,1),m.push(f[0]-v[0]/3),y.push(f[1]-v[1]/3)),m.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=M,x.value=n,x.constvar=r,x.index=h,x.x=m,x.y=y,x.smoothing=M.smoothing,x}function D(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=A.length,\"b\"===e)for(o=Math.max(0,Math.min(z-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;i<C;i++)c[i]=T[n*O][i],u[i]=S[n*O][i];else for(a=Math.max(0,Math.min(L-2,n)),s=Math.min(1,Math.max(0,n-a)),f.xy=function(e){return t.evalxy([],n,e)},f.dxy=function(e,r){return t.dxydj([],a,e,s,r)},i=0;i<E;i++)c[i]=T[i][n*O],u[i]=S[i][n*O];return f.axisLetter=e,f.axis=b,f.crossAxis=M,f.value=x[n],f.constvar=r,f.index=n,f.x=c,f.y=u,f.smoothing=M.smoothing,f}if(\"array\"===b.tickmode){for(l=5e-15,u=(c=[Math.floor((x.length-1-b.arraytick0)/b.arraydtick*(1+l)),Math.ceil(-b.arraytick0/b.arraydtick/(1+l))].sort(function(t,e){return t-e}))[0]-1,f=c[1]+1,h=u;h<f;h++)(o=b.arraytick0+b.arraydtick*h)<0||o>x.length-1||_.push(i(D(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;h<f;h++)if(s=b.arraytick0+b.arraydtick*h,g=Math.min(s+b.arraydtick,x.length-1),!(s<0||s>x.length-1||g<0||g>x.length-1))for(v=x[s],m=x[g],a=0;a<b.minorgridcount;a++)(y=g-s)<=0||(d=v+(m-v)*(a+1)/(b.minorgridcount+1)*(b.arraydtick/y))<x[0]||d>x[x.length-1]||w.push(i(I(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&k.push(i(D(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&k.push(i(D(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort(function(t,e){return t-e}))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(I(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;h<f+1;h++)for(p=b.tick0+b.dtick*h,a=0;a<b.minorgridcount;a++)(d=p+b.dtick*(a+1)/(b.minorgridcount+1))<x[0]||d>x[x.length-1]||w.push(i(I(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&k.push(i(I(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&k.push(i(I(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":684,\"../../plots/cartesian/axes\":742}],883:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;r<l.length;r++)o=l[r],-1!==[\"start\",\"both\"].indexOf(e.showticklabels)&&(a=n.tickText(e,o.value),i(a,{prefix:void 0,suffix:void 0,endAnchor:!0,xy:o.xy(0),dxy:o.dxy(0,0),axis:o.axis,length:o.crossAxis.length,font:o.axis.tickfont,isFirst:0===r,isLast:r===l.length-1}),s.push(a)),-1!==[\"end\",\"both\"].indexOf(e.showticklabels)&&(a=n.tickText(e,o.value),i(a,{endAnchor:!1,xy:o.xy(o.crossLength-1),dxy:o.dxy(o.crossLength-2,1),axis:o.axis,length:o.crossAxis.length,font:o.axis.tickfont,isFirst:0===r,isLast:r===l.length-1}),s.push(a))}},{\"../../lib/extend\":684,\"../../plots/cartesian/axes\":742}],884:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=t[0]-e[0],a=t[1]-e[1],o=r[0]-e[0],s=r[1]-e[1],l=Math.pow(i*i+a*a,.25),c=Math.pow(o*o+s*s,.25),u=(c*c*i-l*l*o)*n,f=(c*c*a-l*l*s)*n,h=c*(l+c)*3,p=l*(l+c)*3;return[[e[0]+(h&&u/h),e[1]+(h&&f/h)],[e[0]-(p&&u/p),e[1]-(p&&f/p)]]}},{}],885:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r){var i,a,o,s,l,c,u=[],f=n(t)?t.length:t,h=n(e)?e.length:e,p=n(t)?t:null,d=n(e)?e:null;p&&(o=(p.length-1)/(p[p.length-1]-p[0])/(f-1)),d&&(s=(d.length-1)/(d[d.length-1]-d[0])/(h-1));var g=1/0,v=-1/0;for(a=0;a<h;a++)for(u[a]=[],l=d?(d[a]-d[0])*s:a/(h-1),i=0;i<f;i++)c=(p?(p[i]-p[0])*o:i/(f-1))-l*r,g=Math.min(c,g),v=Math.max(c,v),u[a][i]=c;var m=1/(v-g),y=-g*m;for(a=0;a<h;a++)for(i=0;i<f;i++)u[a][i]=m*u[a][i]+y;return u}},{\"../../lib\":694}],886:[function(t,e,r){\"use strict\";var n=t(\"./catmull_rom\"),i=t(\"../../lib\").ensureArray;function a(t,e,r){var n=-.5*r[0]+1.5*e[0],i=-.5*r[1]+1.5*e[1];return[(2*n+t[0])/3,(2*i+t[1])/3]}e.exports=function(t,e,r,o,s,l){var c,u,f,h,p,d,g,v,m,y,x=r[0].length,b=r.length,_=s?3*x-2:x,w=l?3*b-2:b;for(t=i(t,w),e=i(e,w),f=0;f<w;f++)t[f]=i(t[f],_),e[f]=i(e[f],_);for(u=0,h=0;u<b;u++,h+=l?3:1)for(p=t[h],d=e[h],g=r[u],v=o[u],c=0,f=0;c<x;c++,f+=s?3:1)p[f]=g[c],d[f]=v[c];if(s)for(u=0,h=0;u<b;u++,h+=l?3:1){for(c=1,f=3;c<x-1;c++,f+=3)m=n([r[u][c-1],o[u][c-1]],[r[u][c],o[u][c]],[r[u][c+1],o[u][c+1]],s),t[h][f-1]=m[0][0],e[h][f-1]=m[0][1],t[h][f+1]=m[1][0],e[h][f+1]=m[1][1];y=a([t[h][0],e[h][0]],[t[h][2],e[h][2]],[t[h][3],e[h][3]]),t[h][1]=y[0],e[h][1]=y[1],y=a([t[h][_-1],e[h][_-1]],[t[h][_-3],e[h][_-3]],[t[h][_-4],e[h][_-4]]),t[h][_-2]=y[0],e[h][_-2]=y[1]}if(l)for(f=0;f<_;f++){for(h=3;h<w-3;h+=3)m=n([t[h-3][f],e[h-3][f]],[t[h][f],e[h][f]],[t[h+3][f],e[h+3][f]],l),t[h-1][f]=m[0][0],e[h-1][f]=m[0][1],t[h+1][f]=m[1][0],e[h+1][f]=m[1][1];y=a([t[0][f],e[0][f]],[t[2][f],e[2][f]],[t[3][f],e[3][f]]),t[1][f]=y[0],e[1][f]=y[1],y=a([t[w-1][f],e[w-1][f]],[t[w-3][f],e[w-3][f]],[t[w-4][f],e[w-4][f]]),t[w-2][f]=y[0],e[w-2][f]=y[1]}if(s&&l)for(h=1;h<w;h+=(h+1)%3==0?2:1){for(f=3;f<_-3;f+=3)m=n([t[h][f-3],e[h][f-3]],[t[h][f],e[h][f]],[t[h][f+3],e[h][f+3]],s),t[h][f-1]=.5*(t[h][f-1]+m[0][0]),e[h][f-1]=.5*(e[h][f-1]+m[0][1]),t[h][f+1]=.5*(t[h][f+1]+m[1][0]),e[h][f+1]=.5*(e[h][f+1]+m[1][1]);y=a([t[h][0],e[h][0]],[t[h][2],e[h][2]],[t[h][3],e[h][3]]),t[h][1]=.5*(t[h][1]+y[0]),e[h][1]=.5*(e[h][1]+y[1]),y=a([t[h][_-1],e[h][_-1]],[t[h][_-3],e[h][_-3]],[t[h][_-4],e[h][_-4]]),t[h][_-2]=.5*(t[h][_-2]+y[0]),e[h][_-2]=.5*(e[h][_-2]+y[1])}return[t,e]}},{\"../../lib\":694,\"./catmull_rom\":884}],887:[function(t,e,r){\"use strict\";e.exports={RELATIVE_CULL_TOLERANCE:1e-6}},{}],888:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){return e&&r?function(e,r,n,i,a){var o,s,l,c,u,f;e||(e=[]),r*=3,n*=3;var h=i*i,p=1-i,d=p*p,g=p*i*2,v=-3*d,m=3*(d-g),y=3*(g-h),x=3*h,b=a*a,_=b*a,w=1-a,k=w*w,A=k*w;for(f=0;f<t.length;f++)o=v*(u=t[f])[n][r]+m*u[n][r+1]+y*u[n][r+2]+x*u[n][r+3],s=v*u[n+1][r]+m*u[n+1][r+1]+y*u[n+1][r+2]+x*u[n+1][r+3],l=v*u[n+2][r]+m*u[n+2][r+1]+y*u[n+2][r+2]+x*u[n+2][r+3],c=v*u[n+3][r]+m*u[n+3][r+1]+y*u[n+3][r+2]+x*u[n+3][r+3],e[f]=A*o+3*(k*a*s+w*b*l)+_*c;return e}:e?function(e,r,n,i,a){var o,s,l,c;e||(e=[]),r*=3;var u=i*i,f=1-i,h=f*f,p=f*i*2,d=-3*h,g=3*(h-p),v=3*(p-u),m=3*u,y=1-a;for(l=0;l<t.length;l++)o=d*(c=t[l])[n][r]+g*c[n][r+1]+v*c[n][r+2]+m*c[n][r+3],s=d*c[n+1][r]+g*c[n+1][r+1]+v*c[n+1][r+2]+m*c[n+1][r+3],e[l]=y*o+a*s;return e}:r?function(e,r,n,i,a){var o,s,l,c,u,f;e||(e=[]),n*=3;var h=a*a,p=h*a,d=1-a,g=d*d,v=g*d;for(u=0;u<t.length;u++)o=(f=t[u])[n][r+1]-f[n][r],s=f[n+1][r+1]-f[n+1][r],l=f[n+2][r+1]-f[n+2][r],c=f[n+3][r+1]-f[n+3][r],e[u]=v*o+3*(g*a*s+d*h*l)+p*c;return e}:function(e,r,n,i,a){var o,s,l,c;e||(e=[]);var u=1-a;for(l=0;l<t.length;l++)o=(c=t[l])[n][r+1]-c[n][r],s=c[n+1][r+1]-c[n+1][r],e[l]=u*o+a*s;return e}}},{}],889:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){return e&&r?function(e,r,n,i,a){var o,s,l,c,u,f;e||(e=[]),r*=3,n*=3;var h=i*i,p=h*i,d=1-i,g=d*d,v=g*d,m=a*a,y=1-a,x=y*y,b=y*a*2,_=-3*x,w=3*(x-b),k=3*(b-m),A=3*m;for(f=0;f<t.length;f++)o=_*(u=t[f])[n][r]+w*u[n+1][r]+k*u[n+2][r]+A*u[n+3][r],s=_*u[n][r+1]+w*u[n+1][r+1]+k*u[n+2][r+1]+A*u[n+3][r+1],l=_*u[n][r+2]+w*u[n+1][r+2]+k*u[n+2][r+2]+A*u[n+3][r+2],c=_*u[n][r+3]+w*u[n+1][r+3]+k*u[n+2][r+3]+A*u[n+3][r+3],e[f]=v*o+3*(g*i*s+d*h*l)+p*c;return e}:e?function(e,r,n,i,a){var o,s,l,c,u,f;e||(e=[]),r*=3;var h=a*a,p=h*a,d=1-a,g=d*d,v=g*d;for(u=0;u<t.length;u++)o=(f=t[u])[n+1][r]-f[n][r],s=f[n+1][r+1]-f[n][r+1],l=f[n+1][r+2]-f[n][r+2],c=f[n+1][r+3]-f[n][r+3],e[u]=v*o+3*(g*a*s+d*h*l)+p*c;return e}:r?function(e,r,n,i,a){var o,s,l,c;e||(e=[]),n*=3;var u=1-i,f=a*a,h=1-a,p=h*h,d=h*a*2,g=-3*p,v=3*(p-d),m=3*(d-f),y=3*f;for(l=0;l<t.length;l++)o=g*(c=t[l])[n][r]+v*c[n+1][r]+m*c[n+2][r]+y*c[n+3][r],s=g*c[n][r+1]+v*c[n+1][r+1]+m*c[n+2][r+1]+y*c[n+3][r+1],e[l]=u*o+i*s;return e}:function(e,r,n,i,a){var o,s,l,c;e||(e=[]);var u=1-i;for(l=0;l<t.length;l++)o=(c=t[l])[n+1][r]-c[n][r],s=c[n+1][r+1]-c[n][r+1],e[l]=u*o+i*s;return e}}},{}],890:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){var a=e-2,o=r-2;return n&&i?function(e,r,n){var i,s,l,c,u,f;e||(e=[]);var h=Math.max(0,Math.min(Math.floor(r),a)),p=Math.max(0,Math.min(Math.floor(n),o)),d=Math.max(0,Math.min(1,r-h)),g=Math.max(0,Math.min(1,n-p));h*=3,p*=3;var v=d*d,m=v*d,y=1-d,x=y*y,b=x*y,_=g*g,w=_*g,k=1-g,A=k*k,M=A*k;for(f=0;f<t.length;f++)i=b*(u=t[f])[p][h]+3*(x*d*u[p][h+1]+y*v*u[p][h+2])+m*u[p][h+3],s=b*u[p+1][h]+3*(x*d*u[p+1][h+1]+y*v*u[p+1][h+2])+m*u[p+1][h+3],l=b*u[p+2][h]+3*(x*d*u[p+2][h+1]+y*v*u[p+2][h+2])+m*u[p+2][h+3],c=b*u[p+3][h]+3*(x*d*u[p+3][h+1]+y*v*u[p+3][h+2])+m*u[p+3][h+3],e[f]=M*i+3*(A*g*s+k*_*l)+w*c;return e}:n?function(e,r,n){e||(e=[]);var i,s,l,c,u,f,h=Math.max(0,Math.min(Math.floor(r),a)),p=Math.max(0,Math.min(Math.floor(n),o)),d=Math.max(0,Math.min(1,r-h)),g=Math.max(0,Math.min(1,n-p));h*=3;var v=d*d,m=v*d,y=1-d,x=y*y,b=x*y,_=1-g;for(u=0;u<t.length;u++)i=_*(f=t[u])[p][h]+g*f[p+1][h],s=_*f[p][h+1]+g*f[p+1][h+1],l=_*f[p][h+2]+g*f[p+1][h+1],c=_*f[p][h+3]+g*f[p+1][h+1],e[u]=b*i+3*(x*d*s+y*v*l)+m*c;return e}:i?function(e,r,n){e||(e=[]);var i,s,l,c,u,f,h=Math.max(0,Math.min(Math.floor(r),a)),p=Math.max(0,Math.min(Math.floor(n),o)),d=Math.max(0,Math.min(1,r-h)),g=Math.max(0,Math.min(1,n-p));p*=3;var v=g*g,m=v*g,y=1-g,x=y*y,b=x*y,_=1-d;for(u=0;u<t.length;u++)i=_*(f=t[u])[p][h]+d*f[p][h+1],s=_*f[p+1][h]+d*f[p+1][h+1],l=_*f[p+2][h]+d*f[p+2][h+1],c=_*f[p+3][h]+d*f[p+3][h+1],e[u]=b*i+3*(x*g*s+y*v*l)+m*c;return e}:function(e,r,n){e||(e=[]);var i,s,l,c,u=Math.max(0,Math.min(Math.floor(r),a)),f=Math.max(0,Math.min(Math.floor(n),o)),h=Math.max(0,Math.min(1,r-u)),p=Math.max(0,Math.min(1,n-f)),d=1-p,g=1-h;for(l=0;l<t.length;l++)i=g*(c=t[l])[f][u]+h*c[f][u+1],s=g*c[f+1][u]+h*c[f+1][u+1],e[l]=d*i+p*s;return e}}},{}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./xy_defaults\"),a=t(\"./ab_defaults\"),o=t(\"./attributes\"),s=t(\"../../components/color/attributes\");e.exports=function(t,e,r,l){function c(r,i){return n.coerce(t,e,o,r,i)}e._clipPathId=\"clip\"+e.uid+\"carpet\";var u=c(\"color\",s.defaultLine);(n.coerceFont(c,\"font\"),c(\"carpet\"),a(t,e,l,c,u),e.a&&e.b)?(e.a.length<3&&(e.aaxis.smoothing=0),e.b.length<3&&(e.baxis.smoothing=0),i(t,e,c)||(e.visible=!1),e._cheater&&c(\"cheaterslope\")):e.visible=!1}},{\"../../components/color/attributes\":570,\"../../lib\":694,\"./ab_defaults\":874,\"./attributes\":876,\"./xy_defaults\":900}],892:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.plot=t(\"./plot\"),n.calc=t(\"./calc\"),n.animatable=!0,n.isContainer=!0,n.moduleType=\"trace\",n.name=\"carpet\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"carpet\",\"carpetAxis\",\"notLegendIsolatable\",\"noMultiCategory\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"./attributes\":876,\"./calc\":880,\"./defaults\":891,\"./plot\":897}],893:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r,n=t._fullData.length,i=0;i<n;i++){var a=t._fullData[i];if(a.index!==e.index&&(\"carpet\"===a.type&&(r||(r=a),a.carpet===e.carpet)))return a}return r}},{}],894:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){if(0===t.length)return\"\";var n,i=[],a=r?3:1;for(n=0;n<t.length;n+=a)i.push(t[n]+\",\"+e[n]),r&&n<t.length-a&&(i.push(\"C\"),i.push([t[n+1]+\",\"+e[n+1],t[n+2]+\",\"+e[n+2]+\" \"].join(\" \")));return i.join(r?\"\":\"L\")}},{}],895:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r){var i;for(n(t)?t.length>e.length&&(t=t.slice(0,e.length)):t=[],i=0;i<e.length;i++)t[i]=r(e[i]);return t}},{\"../../lib\":694}],896:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i,a){var o=i[0]*t.dpdx(e),s=i[1]*t.dpdy(r),l=1,c=1;if(a){var u=Math.sqrt(i[0]*i[0]+i[1]*i[1]),f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=(i[0]*a[0]+i[1]*a[1])/u/f;c=Math.max(0,h)}var p=180*Math.atan2(s,o)/Math.PI;return p<-90?(p+=180,l=-l):p>90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],897:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=t(\"../../constants/alignment\");function f(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each(function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")}),u.exit().remove()}function h(t,e,r,a,o,c,u,f){var h=c.selectAll(\"text.\"+f).data(u);h.enter().append(\"text\").classed(f,!0);var p=0,d={};return h.each(function(o,c){var u;if(\"auto\"===o.axis.tickangle)u=s(a,e,r,o.xy,o.dxy);else{var f=(o.axis.tickangle+180)*Math.PI/180;u=s(a,e,r,o.xy,[Math.cos(f),Math.sin(f)])}c||(d={angle:u.angle,flip:u.flip});var h=(o.endAnchor?-1:1)*u.flip,g=n.select(this).attr({\"text-anchor\":h>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),v=i.bBox(this);g.attr(\"transform\",\"translate(\"+u.p[0]+\",\"+u.p[1]+\") rotate(\"+u.angle+\")translate(\"+o.axis.labelpadding*h+\",\"+.3*v.height+\")\"),p=Math.max(p,v.width+o.axis.labelpadding)}),h.exit().remove(),d.maxExtent=p,d}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,p=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each(function(e){var r=n.select(this),i=e[0],d=i.trace,v=d.aaxis,m=d.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",d.opacity),f(l,u,x,v,\"a\",v._gridlines),f(l,u,x,m,\"b\",m._gridlines),f(l,u,y,v,\"a\",v._minorgridlines),f(l,u,y,m,\"b\",m._minorgridlines),f(l,u,b,v,\"a-boundary\",v._boundarylines),f(l,u,b,m,\"b-boundary\",m._boundarylines);var w=h(t,l,u,d,i,_,v._labels,\"a-label\"),k=h(t,l,u,d,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p;u=.5*(r.a[0]+r.a[r.a.length-1]),f=r.b[0],h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));g(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=r.a[0],f=.5*(r.b[0]+r.b[r.b.length-1]),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));g(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,d,i,l,u,w,k),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f<d.length;f++)s=d[f],l=a([],s.x,n.c2p),u=a([],s.y,i.c2p),g.push(o(l,u,s.bicubic));var v=\"M\"+g.join(\"L\")+\"Z\";h.attr(\"id\",t._clipPathId),p.attr(\"d\",v)}(d,i,p,l,u)})};var p=u.LINE_SPACING,d=(1-u.MID_SHIFT)/p+1;function g(t,e,r,a,o,c,u,f,h,g,v){var m=[];u.title.text&&m.push(u.title.text);var y=e.selectAll(\"text.\"+v).data(m),x=g.maxExtent;y.enter().append(\"text\").classed(v,!0),y.each(function(){var e=s(r,f,h,o,c);-1===[\"start\",\"both\"].indexOf(u.showticklabels)&&(x=0);var a=u.title.font.size;x+=a+u.title.offset;var v=(g.angle+(g.flip<0?180:0)-e.angle+450)%360,m=v>90&&v<270,y=n.select(this);y.text(u.title.text).call(l.convertToTspans,t),m&&(x=(-l.lineCount(y)+d)*p*a-x),y.attr(\"transform\",\"translate(\"+e.p[0]+\",\"+e.p[1]+\") rotate(\"+e.angle+\") translate(0,\"+x+\")\").classed(\"user-select-none\",!0).attr(\"text-anchor\",\"middle\").call(i.font,u.title.font)}),y.exit().remove()}},{\"../../components/drawing\":592,\"../../constants/alignment\":666,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"./makepath\":894,\"./map_1d_array\":895,\"./orient_text\":896,d3:149}],898:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],v=r[u-1],m=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=m*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,v+=b,t.isVisible=function(t,e){return t>p&&t<d&&e>g&&e<v},t.isOccluded=function(t,e){return t<p||t>d||e<g||e>v},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(n<e[0]||n>e[c-1]|i<r[0]||i>r[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,v=0,m=[];n<e[0]?(f=0,h=0,g=(n-e[0])/(e[1]-e[0])):n>e[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),i<r[0]?(p=0,d=0,v=(i-r[0])/(r[1]-r[0])):i>r[u-1]?(p=u-2,d=1,v=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(m,f,p,h,d),l[0]+=m[0]*g,l[1]+=m[1]*g),v&&(t.dxydj(m,f,p,h,d),l[0]+=m[0]*v,l[1]+=m[1]*v)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=m*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":713,\"./compute_control_points\":886,\"./constants\":887,\"./create_i_derivative_evaluator\":888,\"./create_j_derivative_evaluator\":889,\"./create_spline_evaluator\":890}],899:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e<c-1&&void 0!==(n=t[r][e+1])&&(a++,i+=n),r>0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r<u-1&&void 0!==(n=t[r+1][e])&&(a++,i+=n),i/Math.max(1,a)}var h,p,d,g,v,m,y,x,b,_,w,k=0;for(i=0;i<c;i++)for(a=0;a<u;a++)void 0===t[a][i]&&(s.push(i),l.push(a),t[a][i]=f(i,a)),k=Math.max(k,Math.abs(t[a][i]));if(!s.length)return t;var A=0,M=0,T=s.length;do{for(A=0,o=0;o<T;o++){i=s[o],a=l[o];var S,C,E,L,z,O,I=0,D=0;0===i?(E=e[z=Math.min(c-1,2)],L=e[1],S=t[a][z],D+=(C=t[a][1])+(C-S)*(e[0]-L)/(L-E),I++):i===c-1&&(E=e[z=Math.max(0,c-3)],L=e[c-2],S=t[a][z],D+=(C=t[a][c-2])+(C-S)*(e[c-1]-L)/(L-E),I++),(0===i||i===c-1)&&a>0&&a<u-1&&(h=r[a+1]-r[a],D+=((p=r[a]-r[a-1])*t[a+1][i]+h*t[a-1][i])/(p+h),I++),0===a?(E=r[O=Math.min(u-1,2)],L=r[1],S=t[O][i],D+=(C=t[1][i])+(C-S)*(r[0]-L)/(L-E),I++):a===u-1&&(E=r[O=Math.max(0,u-3)],L=r[u-2],S=t[O][i],D+=(C=t[u-2][i])+(C-S)*(r[u-1]-L)/(L-E),I++),(0===a||a===u-1)&&i>0&&i<c-1&&(h=e[i+1]-e[i],D+=((p=e[i]-e[i-1])*t[a][i+1]+h*t[a][i-1])/(p+h),I++),I?D/=I:(d=e[i+1]-e[i],g=e[i]-e[i-1],x=(v=r[a+1]-r[a])*(m=r[a]-r[a-1])*(v+m),D=((y=d*g*(d+g))*(m*t[a+1][i]+v*t[a-1][i])+x*(g*t[a][i+1]+d*t[a][i-1]))/(x*(g+d)+y*(m+v))),A+=(_=(b=D-t[a][i])/k)*_,w=I?0:.85,t[a][i]+=b*(1+w)}A=Math.sqrt(A)}while(M++<100&&A>1e-5);return n.log(\"Smoother converged to\",A,\"after\",M,\"iterations\"),t}},{\"../../lib\":694}],900:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":694}],901:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../components/colorbar/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},text:l({},i.text,{}),marker:{line:{color:c.color,width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},s.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n()},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}),{colorbar:o})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../scattergeo/attributes\":1087}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");e.exports=function(t,e){for(var r=e._length,l=new Array(r),c=0;c<r;c++){var u=l[c]={},f=e.locations[c],h=e.z[c];u.loc=\"string\"==typeof f?f:null,u.z=n(h)?h:i}return o(l,e),a(t,e,{vals:e.z,containerStr:\"\",cLetter:\"z\"}),s(l,e),l}},{\"../../components/colorscale/calc\":579,\"../../constants/numerical\":671,\"../scatter/arrays_to_calcdata\":1046,\"../scatter/calc_selection\":1049,\"fast-isnumeric\":215}],903:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"locations\"),c=s(\"z\");l&&l.length&&n.isArrayOrTypedArray(c)&&c.length?(e._length=Math.min(l.length,c.length),s(\"locationmode\"),s(\"text\"),s(\"hovertemplate\"),s(\"marker.line.color\"),s(\"marker.line.width\"),s(\"marker.opacity\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"}),n.coerceSelectionMarkerOpacity(e,s)):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"./attributes\":901}],904:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.location=e.location,t.z=e.z,t}},{}],905:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"./attributes\"),a=t(\"../scatter/fill_hover_text\");e.exports=function(t,e,r){var o,s,l,c,u=t.cd,f=u[0].trace,h=t.subplot;for(s=0;s<u.length;s++)if(c=!1,(o=u[s])._polygons){for(l=0;l<o._polygons.length;l++)o._polygons[l].contains([e,r])&&(c=!c),o._polygons[l].contains([e+360,r])&&(c=!c);if(c)break}if(c&&o)return t.x0=t.x1=t.xa.c2p(o.ct),t.y0=t.y1=t.ya.c2p(o.ct),t.index=o.index,t.location=o.loc,t.z=o.z,t.hovertemplate=o.hovertemplate,function(t,e,r,o){if(e.hovertemplate)return;var s=r.hi||e.hoverinfo,l=\"all\"===s?i.hoverinfo.flags:s.split(\"+\"),c=-1!==l.indexOf(\"name\"),u=-1!==l.indexOf(\"location\"),f=-1!==l.indexOf(\"z\"),h=-1!==l.indexOf(\"text\"),p=[];!c&&u?t.nameOverride=r.loc:(c&&(t.nameOverride=e.name),u&&p.push(r.loc));f&&p.push((d=r.z,n.tickText(o,o.c2l(d),\"hover\").text));var d;h&&a(r,e,p);t.extraText=p.join(\"<br>\")}(t,f,o,h.mockAxis),[t]}},{\"../../plots/cartesian/axes\":742,\"../scatter/fill_hover_text\":1055,\"./attributes\":901}],906:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../heatmap/colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"./style\").style,n.styleOnSelect=t(\"./style\").styleOnSelect,n.hoverPoints=t(\"./hover\"),n.eventData=t(\"./event_data\"),n.selectPoints=t(\"./select\"),n.moduleType=\"trace\",n.name=\"choropleth\",n.basePlotModule=t(\"../../plots/geo\"),n.categories=[\"geo\",\"noOpacity\"],n.meta={},e.exports=n},{\"../../plots/geo\":773,\"../heatmap/colorbar\":947,\"./attributes\":901,\"./calc\":902,\"./defaults\":903,\"./event_data\":904,\"./hover\":905,\"./plot\":907,\"./select\":908,\"./style\":909}],907:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../lib/polygon\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../lib/geo_location_utils\").locationToFeature,l=t(\"./style\").style;function c(t,e){for(var r=t[0].trace,n=t.length,i=o(r,e),a=0;a<n;a++){var l=t[a],c=s(r.locationmode,l.loc,i);c?(l.geojson=c,l.ct=c.properties.ct,l.index=a,l._polygons=u(c)):l.geojson=null}}function u(t){var e,r,n,i,o=t.geometry,s=o.coordinates,l=t.id,c=[];function u(t){for(var e=0;e<t.length-1;e++)if(t[e][0]>0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===l||\"FJI\"===l?function(t){var e;if(null===u(t))e=t;else for(e=new Array(t.length),i=0;i<t.length;i++)e[i]=[t[i][0]<0?t[i][0]+360:t[i][0],t[i][1]];c.push(a.tester(e))}:\"ATA\"===l?function(t){var e=u(t);if(null===e)return c.push(a.tester(t));var r=new Array(t.length+1),n=0;for(i=0;i<t.length;i++)i>e?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var o=a.tester(r);o.pts.pop(),c.push(o)}:function(t){c.push(a.tester(t))},o.type){case\"MultiPolygon\":for(r=0;r<s.length;r++)for(n=0;n<s[r].length;n++)e(s[r][n]);break;case\"Polygon\":for(r=0;r<s.length;r++)e(s[r])}return c}e.exports=function(t,e,r){for(var a=0;a<r.length;a++)c(r[a],e.topojson);var o=e.layers.backplot.select(\".choroplethlayer\");i.makeTraceGroups(o,r,\"trace choropleth\").each(function(e){var r=(e[0].node3=n.select(this)).selectAll(\"path.choroplethlocation\").data(i.identity);r.enter().append(\"path\").classed(\"choroplethlocation\",!0),r.exit().remove(),l(t,e)})}},{\"../../lib\":694,\"../../lib/geo_location_utils\":687,\"../../lib/polygon\":706,\"../../lib/topojson_utils\":721,\"./style\":909,d3:149}],908:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[];if(!1===e)for(r=0;r<s.length;r++)s[r].selected=0;else for(r=0;r<s.length;r++)(i=(n=s[r]).ct)&&(a=l.c2p(i),o=c.c2p(i),e.contains([a,o],null,r,t)?(u.push({pointNumber:r,lon:i[0],lat:i[1]}),n.selected=1):n.selected=0);return u}},{}],909:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/color\"),a=t(\"../../components/drawing\"),o=t(\"../../components/colorscale\");function s(t,e){var r=e[0].trace,s=e[0].node3.selectAll(\".choroplethlocation\"),l=r.marker||{},c=l.line||{},u=o.makeColorScaleFunc(o.extractScale(r,{cLetter:\"z\"}));s.each(function(t){n.select(this).attr(\"fill\",u(t.z)).call(i.stroke,t.mlc||c.color).call(a.dashLine,\"\",t.mlw||c.width||0).style(\"opacity\",l.opacity)}),a.selectedPointStyle(s,r,t)}e.exports={style:function(t,e){e&&s(t,e)},styleOnSelect:function(t,e){var r=e[0].node3,n=e[0].trace;n.selectedpoints?a.selectedPointStyle(r.selectAll(\".choroplethlocation\"),n,t):s(t,e)}}},{\"../../components/color\":571,\"../../components/colorscale\":583,\"../../components/drawing\":592,d3:149}],910:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../components/colorbar/attributes\"),a=t(\"../mesh3d/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../lib/extend\").extendFlat,l={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"}};s(l,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{colorbar:i});[\"opacity\",\"lightposition\",\"lighting\"].forEach(function(t){l[t]=a[t]}),l.hoverinfo=s({},o.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),l.transforms=void 0,e.exports=l},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../mesh3d/attributes\":990}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;c<o;c++){var u=r[c],f=i[c],h=a[c],p=Math.sqrt(u*u+f*f+h*h);s=Math.max(s,p),l=Math.min(l,p)}e._len=o,e._normMax=s,n(t,e,{vals:[l,s],containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":579}],912:[function(t,e,r){\"use strict\";var n=t(\"gl-cone3d\"),i=t(\"gl-cone3d\").createConeMesh,a=t(\"../../lib\").simpleMap,o=t(\"../../lib/gl_format_color\").parseColorScale,s=t(\"../../plots/gl3d/zip3\");function l(t,e){this.scene=t,this.uid=e,this.mesh=null,this.data=null}var c=l.prototype;c.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index,r=this.data.x[e],n=this.data.y[e],i=this.data.z[e],a=this.data.u[e],o=this.data.v[e],s=this.data.w[e];t.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.text;return Array.isArray(l)&&void 0!==l[e]?t.textLabel=l[e]:l&&(t.textLabel=l),!0}};var u={xaxis:0,yaxis:1,zaxis:2},f={tip:1,tail:0,cm:.25,center:.5},h={tip:1,tail:1,cm:.75,center:.5};function p(t,e){var r=t.fullSceneLayout,i=t.dataScale,l={};function c(t,e){var n=r[e],o=i[u[e]];return a(t,function(t){return n.d2l(t)*o})}l.vectors=s(c(e.u,\"xaxis\"),c(e.v,\"yaxis\"),c(e.w,\"zaxis\"),e._len),l.positions=s(c(e.x,\"xaxis\"),c(e.y,\"yaxis\"),c(e.z,\"zaxis\"),e._len),l.colormap=o(e),l.vertexIntensityBounds=[e.cmin/e._normMax,e.cmax/e._normMax],l.coneOffset=f[e.anchor],\"scaled\"===e.sizemode?l.coneSize=e.sizeref||.5:l.coneSize=e.sizeref&&e._normMax?e.sizeref/e._normMax:.5;var p=n(l),d=e.lightposition;return p.lightPosition=[d.x,d.y,d.z],p.ambient=e.lighting.ambient,p.diffuse=e.lighting.diffuse,p.specular=e.lighting.specular,p.roughness=e.lighting.roughness,p.fresnel=e.lighting.fresnel,p.opacity=e.opacity,e._pad=h[e.anchor]*p.vectorScale*p.coneScale*e._normMax,p}c.update=function(t){this.data=t;var e=p(this.scene,t);this.mesh.update(e)},c.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var r=t.glplot.gl,n=p(t,e),a=i(r,n),o=new l(t,e.uid);return o.mesh=a,o.data=e,a._trace=o,t.glplot.add(a),o}},{\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../plots/gl3d/zip3\":796,\"gl-cone3d\":232}],913:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"u\"),c=s(\"v\"),u=s(\"w\"),f=s(\"x\"),h=s(\"y\"),p=s(\"z\");l&&l.length&&c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length&&p&&p.length?(s(\"sizeref\"),s(\"sizemode\"),s(\"anchor\"),s(\"lighting.ambient\"),s(\"lighting.diffuse\"),s(\"lighting.specular\"),s(\"lighting.roughness\"),s(\"lighting.fresnel\"),s(\"lightposition.x\"),s(\"lightposition.y\"),s(\"lightposition.z\"),i(t,e,o,s,{prefix:\"\",cLetter:\"c\"}),s(\"text\"),e._length=null):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"./attributes\":910}],914:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"cone\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:{min:\"cmin\",max:\"cmax\"},calc:t(\"./calc\"),plot:t(\"./convert\"),meta:{}}},{\"../../plots/gl3d\":785,\"./attributes\":910,\"./calc\":911,\"./convert\":912,\"./defaults\":913}],915:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../scatter/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../components/colorbar/attributes\"),s=t(\"../../components/drawing/attributes\").dash,l=t(\"../../plots/font_attributes\"),c=t(\"../../lib/extend\").extendFlat,u=t(\"../../constants/filter_ops\"),f=u.COMPARISON_OPS2,h=u.INTERVAL_OPS,p=i.line;e.exports=c({z:n.z,x:n.x,x0:n.x0,dx:n.dx,y:n.y,y0:n.y0,dy:n.dy,text:n.text,transpose:n.transpose,xtype:n.xtype,ytype:n.ytype,zhoverformat:n.zhoverformat,connectgaps:n.connectgaps,fillcolor:{valType:\"color\",editType:\"calc\"},autocontour:{valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:{\"contours.start\":void 0,\"contours.end\":void 0,\"contours.size\":void 0}},ncontours:{valType:\"integer\",dflt:15,min:1,editType:\"calc\"},contours:{type:{valType:\"enumerated\",values:[\"levels\",\"constraint\"],dflt:\"levels\",editType:\"calc\"},start:{valType:\"number\",dflt:null,editType:\"plot\",impliedEdits:{\"^autocontour\":!1}},end:{valType:\"number\",dflt:null,editType:\"plot\",impliedEdits:{\"^autocontour\":!1}},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\",impliedEdits:{\"^autocontour\":!1}},coloring:{valType:\"enumerated\",values:[\"fill\",\"heatmap\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:{valType:\"boolean\",dflt:!0,editType:\"plot\"},showlabels:{valType:\"boolean\",dflt:!1,editType:\"plot\"},labelfont:l({editType:\"plot\",colorEditType:\"style\"}),labelformat:{valType:\"string\",dflt:\"\",editType:\"plot\"},operation:{valType:\"enumerated\",values:[].concat(f).concat(h),dflt:\"=\",editType:\"calc\"},value:{valType:\"any\",dflt:0,editType:\"calc\"},editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:c({},p.color,{editType:\"style+colorbars\"}),width:c({},p.width,{editType:\"style+colorbars\"}),dash:s,smoothing:c({},p.smoothing,{}),editType:\"plot\"}},a(\"\",{cLetter:\"z\",autoColorDflt:!1,editTypeOverride:\"calc\"}),{colorbar:o})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../components/drawing/attributes\":591,\"../../constants/filter_ops\":667,\"../../lib/extend\":684,\"../../plots/font_attributes\":769,\"../heatmap/attributes\":944,\"../scatter/attributes\":1047}],916:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/calc\"),i=t(\"./set_contours\");e.exports=function(t,e){var r=n(t,e);return i(e),r}},{\"../heatmap/calc\":945,\"./set_contours\":934}],917:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i,a,o,s=t[0],l=s.x.length,c=s.y.length,u=s.z,f=n.contours,h=-1/0,p=1/0;for(i=0;i<c;i++)p=Math.min(p,u[i][0]),p=Math.min(p,u[i][l-1]),h=Math.max(h,u[i][0]),h=Math.max(h,u[i][l-1]);for(i=1;i<l-1;i++)p=Math.min(p,u[0][i]),p=Math.min(p,u[c-1][i]),h=Math.max(h,u[0][i]),h=Math.max(h,u[c-1][i]);switch(s.prefixBoundary=!1,e){case\">\":f.value>h&&(s.prefixBoundary=!0);break;case\"<\":f.value<p&&(s.prefixBoundary=!0);break;case\"[]\":a=Math.min.apply(null,f.value),((o=Math.max.apply(null,f.value))<p||a>h)&&(s.prefixBoundary=!0);break;case\"][\":a=Math.min.apply(null,f.value),o=Math.max.apply(null,f.value),a<p&&o>h&&(s.prefixBoundary=!0)}}},{}],918:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorbar/draw\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports=function(t,e){var r=e[0].trace,o=\"cb\"+r.uid;if(t._fullLayout._infolayer.selectAll(\".\"+o).remove(),r.showscale){var s=e[0].t.cb=n(t,o),l=r.contours,c=r.line,u=l.size||1,f=l.coloring,h=i(r,{isColorbar:!0});s.fillgradient(\"heatmap\"===f?r.colorscale:\"\").zrange(\"heatmap\"===f?[r.zmin,r.zmax]:\"\").fillcolor(\"fill\"===f?h:\"\").line({color:\"lines\"===f?h:c.color,width:!1!==l.showlines?c.width:0,dash:c.dash}).levels({start:l.start,end:a(l),size:u}).options(r.colorbar)()}}},{\"../../components/colorbar/draw\":576,\"./end_plus\":926,\"./make_color_map\":931}],919:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,v=r(\"contours.operation\");(g._operation=c[v],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===v?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":571,\"../../constants/filter_ops\":667,\"./label_defaults\":930,\"fast-isnumeric\":215}],921:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":667,\"fast-isnumeric\":215}],922:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],923:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r<a.edgepaths.length;r++)a.edgepaths[r]=s(a.edgepaths[r]);for(r=0;r<a.paths.length;r++)a.paths[r]=s(a.paths[r]);return t;case\"][\":var c=s;s=l,l=c;case\"[]\":for(2!==t.length&&n.warn(\"Contour data invalid for the specified inequality range operation.\"),a=i(t[0]),o=i(t[1]),r=0;r<a.edgepaths.length;r++)a.edgepaths[r]=s(a.edgepaths[r]);for(r=0;r<a.paths.length;r++)a.paths[r]=s(a.paths[r]);for(;o.edgepaths.length;)a.edgepaths.push(l(o.edgepaths.shift()));for(;o.paths.length;)a.paths.push(l(o.paths.shift()));return[a]}}},{\"../../lib\":694}],924:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./constraint_defaults\"),o=t(\"./contours_defaults\"),s=t(\"./style_defaults\"),l=t(\"./attributes\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,l,r,i)}if(i(t,e,u,c)){u(\"text\");var f=\"constraint\"===u(\"contours.type\");u(\"connectgaps\",n.isArray1D(e.z)),f?a(t,e,u,c,r):(o(t,e,u,function(r){return n.coerce2(t,e,l,r)}),s(t,e,u,c))}else e.visible=!1}},{\"../../lib\":694,\"../heatmap/xyz_defaults\":958,\"./attributes\":915,\"./constraint_defaults\":920,\"./contours_defaults\":922,\"./style_defaults\":936}],925:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constraint_mapping\"),a=t(\"./end_plus\");e.exports=function(t,e,r){for(var o=\"constraint\"===t.type?i[t._operation](t.value):t,s=o.size,l=[],c=a(o),u=r.trace._carpetTrace,f=u?{xaxis:u.aaxis,yaxis:u.baxis,x:r.a,y:r.b}:{xaxis:e.xaxis,yaxis:e.yaxis,x:r.x,y:r.y},h=o.start;h<c;h+=s)if(l.push(n.extendFlat({level:h,crossings:{},starts:[],edgepaths:[],paths:[],z:r.z,smoothing:r.trace.line.smoothing},f)),l.length>1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":694,\"./constraint_mapping\":921,\"./end_plus\":926}],926:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],927:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])<r&&Math.abs(t[1]-e[1])<n}function o(t,e,r,o,l){var c,u=e.join(\",\"),f=u,h=t.crossings[f],p=function(t,e,r){var n=0,a=0;t>20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(h,r,e),d=[s(t,e,[-p[0],-p[1]])],g=p.join(\",\"),v=t.z.length,m=t.z[0].length;for(c=0;c<1e4;c++){if(h>20?(h=i.CHOOSESADDLE[h][(p[0]||p[1])<0?0:1],t.crossings[f]=i.SADDLEREMAINDER[h]):delete t.crossings[f],!(p=i.NEWDELTA[h])){n.log(\"Found bad marching index:\",h,e,t.level);break}d.push(s(t,e,p)),e[0]+=p[0],e[1]+=p[1],a(d[d.length-1],d[d.length-2],o,l)&&d.pop(),f=e.join(\",\");var y=p[0]&&(e[0]<0||e[0]>m-2)||p[1]&&(e[1]<0||e[1]>v-2);if(f===u&&p.join(\",\")===g||r&&y)break;h=t.crossings[f]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,k,A,M,T,S,C,E,L,z,O,I,D=a(d[0],d[d.length-1],o,l),P=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c<d.length;c++)L=d[c],z=d[c-1],void 0,void 0,O=L[2]-z[2],I=L[3]-z[3],P+=M=Math.sqrt(O*O+I*I),F.push(M);var N=P/F.length*R;function j(t){return d[t%d.length]}for(c=d.length-2;c>=B;c--)if((x=F[c])<N){for(_=0,b=c-1;b>=B&&x+F[b]<N;b--)x+=F[b];if(D&&c===d.length-2)for(_=0;_<b&&x+F[_]<N;_++)x+=F[_];k=c-b+_+1,A=Math.floor((c+b+_+2)/2),w=D||c!==d.length-2?D||-1!==b?k%2?j(A):[(j(A)[0]+j(A+1)[0])/2,(j(A)[1]+j(A+1)[1])/2]:d[0]:d[d.length-1],d.splice(b+1,c-b+1,w),c=b+1,_&&(B=_),D&&(c===d.length-2?d[_]=d[d.length-1]:0===c&&(d[d.length-1]=d[0]))}for(d.splice(0,B),c=0;c<d.length;c++)d[c].length=2;if(!(d.length<2))if(D)d.pop(),t.paths.push(d);else{r||n.log(\"Unclosed interior contour?\",t.level,u,d.join(\"L\"));var V=!1;for(T=0;T<t.edgepaths.length;T++)if(C=t.edgepaths[T],!V&&a(C[0],d[d.length-1],o,l)){d.pop(),V=!0;var U=!1;for(S=0;S<t.edgepaths.length;S++)if(a((E=t.edgepaths[S])[E.length-1],d[0],o,l)){U=!0,d.shift(),t.edgepaths.splice(T,1),S===T?t.paths.push(d.concat(E)):(S>T&&S--,t.edgepaths[S]=E.concat(d,C));break}U||(t.edgepaths[T]=d.concat(C))}for(T=0;T<t.edgepaths.length&&!V;T++)a((C=t.edgepaths[T])[C.length-1],d[0],o,l)&&(d.shift(),t.edgepaths[T]=C.concat(d),V=!0);V||t.edgepaths.push(d)}}function s(t,e,r){var n=e[0]+Math.max(r[0],0),i=e[1]+Math.max(r[1],0),a=t.z[i][n],o=t.xaxis,s=t.yaxis;if(r[1]){var l=(t.level-a)/(t.z[i][n+1]-a);return[o.c2p((1-l)*t.x[n]+l*t.x[n+1],!0),s.c2p(t.y[i],!0),n+l,i]}var c=(t.level-a)/(t.z[i+1][n]-a);return[o.c2p(t.x[n],!0),s.c2p((1-c)*t.y[i]+c*t.y[i+1],!0),n,i+c]}e.exports=function(t,e,r){var i,a,s,l;for(e=e||.01,r=r||.01,a=0;a<t.length;a++){for(s=t[a],l=0;l<s.starts.length;l++)o(s,s.starts[l],\"edge\",e,r);for(i=0;Object.keys(s.crossings).length&&i<1e4;)i++,o(s,Object.keys(s.crossings)[0].split(\",\").map(Number),void 0,e,r);1e4===i&&n.log(\"Infinite loop in contour?\")}}},{\"../../lib\":694,\"./constants\":919}],928:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../heatmap/hover\");e.exports=function(t,e,r,a,o){var s=i(t,e,r,a,o,!0);return s&&s.forEach(function(t){var e=t.trace;\"constraint\"===e.contours.type&&(e.fillcolor&&n.opacity(e.fillcolor)?t.color=n.addOpacity(e.fillcolor,1):e.contours.showlines&&n.opacity(e.line.color)&&(t.color=n.addOpacity(e.line.color,1)))}),s}},{\"../../components/color\":571,\"../heatmap/hover\":951}],929:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\").plot,n.style=t(\"./style\"),n.colorbar=t(\"./colorbar\"),n.hoverPoints=t(\"./hover\"),n.moduleType=\"trace\",n.name=\"contour\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"2dMap\",\"contour\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"./attributes\":915,\"./calc\":916,\"./colorbar\":918,\"./defaults\":924,\"./hover\":928,\"./plot\":933,\"./style\":935}],930:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r,i){if(i||(i={}),t(\"contours.showlabels\")){var a=e.font;n.coerceFont(t,\"contours.labelfont\",{family:a.family,size:a.size,color:r}),t(\"contours.labelformat\")}!1!==i.hasHover&&t(\"zhoverformat\")}},{\"../../lib\":694}],931:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/colorscale\"),a=t(\"./end_plus\");e.exports=function(t){var e=t.contours,r=e.start,o=a(e),s=e.size||1,l=Math.floor((o-r)/s)+1,c=\"lines\"===e.coloring?0:1;isFinite(s)||(s=1,l=1);var u,f,h=t.reversescale?i.flipScale(t.colorscale):t.colorscale,p=h.length,d=new Array(p),g=new Array(p);if(\"heatmap\"===e.coloring){for(t.zauto&&!1===t.autocontour&&(t.zmin=r-s/2,t.zmax=t.zmin+l*s),f=0;f<p;f++)u=h[f],d[f]=u[0]*(t.zmax-t.zmin)+t.zmin,g[f]=u[1];var v=n.extent([t.zmin,t.zmax,e.start,e.start+s*(l-1)]),m=v[t.zmin<t.zmax?0:1],y=v[t.zmin<t.zmax?1:0];m!==t.zmin&&(d.splice(0,0,m),g.splice(0,0,Range[0])),y!==t.zmax&&(d.push(y),g.push(g[g.length-1]))}else for(f=0;f<p;f++)u=h[f],d[f]=(u[0]*(l+c-1)-c/2)*s+r,g[f]=u[1];return i.makeColorScaleFunc({domain:d,range:g},{noNumericCheck:!0})}},{\"../../components/colorscale\":583,\"./end_plus\":926,d3:149}],932:[function(t,e,r){\"use strict\";var n=t(\"./constants\");function i(t,e){var r=(e[0][0]>t?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r<p-1;r++)for(o=[],0===r&&(o=o.concat(n.BOTTOMSTART)),r===p-2&&(o=o.concat(n.TOPSTART)),e=0;e<d-1;e++)for(a=o.slice(),0===e&&(a=a.concat(n.LEFTSTART)),e===d-2&&(a=a.concat(n.RIGHTSTART)),s=e+\",\"+r,l=[[h[r][e],h[r][e+1]],[h[r+1][e],h[r+1][e+1]]],f=0;f<t.length;f++)(c=i((u=t[f]).level,l))&&(u.crossings[s]=c,-1!==a.indexOf(c)&&(u.starts.push([e,r]),g&&-1!==a.indexOf(c,a.indexOf(c)+1)&&u.starts.push([e,r])))}},{\"./constants\":919}],933:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"../../plots/cartesian/axes\"),l=t(\"../../plots/cartesian/set_convert\"),c=t(\"../heatmap/plot\"),u=t(\"./make_crossings\"),f=t(\"./find_all_paths\"),h=t(\"./empty_pathinfo\"),p=t(\"./convert_to_constraints\"),d=t(\"./close_boundaries\"),g=t(\"./constants\"),v=g.LABELOPTIMIZER;function m(t,e){var r,n,o,s,l,c,u,f=function(t,e){var r=t.prefixBoundary;if(void 0===r){var n=Math.min(t.z[0][0],t.z[0][1]);r=!t.edgepaths.length&&n>t.level}return r?\"M\"+e.join(\"L\")+\"Z\":\"\"}(t,e),h=0,p=t.edgepaths.map(function(t,e){return e}),d=!0;function g(t){return Math.abs(t[1]-e[2][1])<.01}function v(t){return Math.abs(t[0]-e[0][0])<.01}function m(t){return Math.abs(t[0]-e[2][0])<.01}for(;p.length;){for(c=a.smoothopen(t.edgepaths[h],t.smoothing),f+=d?c:c.replace(/^M/,\"L\"),p.splice(p.indexOf(h),1),r=t.edgepaths[h][t.edgepaths[h].length-1],s=-1,o=0;o<4;o++){if(!r){i.log(\"Missing end?\",h,t);break}for(u=r,Math.abs(u[1]-e[0][1])<.01&&!m(r)?n=e[1]:v(r)?n=e[0]:g(r)?n=e[3]:m(r)&&(n=e[2]),l=0;l<t.edgepaths.length;l++){var y=t.edgepaths[l][0];Math.abs(r[0]-n[0])<.01?Math.abs(r[0]-y[0])<.01&&(y[1]-r[1])*(n[1]-y[1])>=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;h<t.paths.length;h++)f+=a.smoothclosed(t.paths[h],t.smoothing);return f}function y(t,e,r,n){var a=e.width/2,o=e.height/2,s=t.x,l=t.y,c=t.theta,u=Math.cos(c)*a,f=Math.sin(c)*a,h=(s>n.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b<r.length;b++){var _=r[b],w=Math.cos(_.theta)*_.width/2,k=Math.sin(_.theta)*_.width/2,A=2*i.segmentDistance(g,m,y,x,_.x-w,_.y-k,_.x+w,_.y+k)/(e.height+_.height),M=_.level===e.level,T=M?v.SAMELEVELDISTANCE:1;if(A<=T)return 1/0;d+=v.NEIGHBORCOST*(M?v.SAMELEVELFACTOR:1)/(A-T)}return d}r.plot=function(t,e,o,s){var l=e.xaxis,v=e.yaxis;i.makeTraceGroups(s,o,\"contour\").each(function(o){var s=n.select(this),y=o[0],x=y.trace,b=y.x,_=y.y,w=x.contours,k=h(w,e,y),A=i.ensureSingle(s,\"g\",\"heatmapcoloring\"),M=[];\"heatmap\"===w.coloring&&(x.zauto&&!1===x.autocontour&&(x._input.zmin=x.zmin=w.start-w.size/2,x._input.zmax=x.zmax=x.zmin+k.length*w.size),M=[o]),c(t,e,M,A),u(k),f(k);var T=l.c2p(b[0],!0),S=l.c2p(b[b.length-1],!0),C=v.c2p(_[0],!0),E=v.c2p(_[_.length-1],!0),L=[[T,E],[S,E],[S,C],[T,C]],z=k;\"constraint\"===w.type&&(z=p(k,w._operation),d(z,w._operation,L,x)),function(t,e,r){var n=i.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"===r.coloring?[0]:[]);n.enter().append(\"path\"),n.exit().remove(),n.attr(\"d\",\"M\"+e.join(\"L\")+\"Z\").style(\"stroke\",\"none\")}(s,L,w),function(t,e,r,a){var o=i.ensureSingle(t,\"g\",\"contourfill\").selectAll(\"path\").data(\"fill\"===a.coloring||\"constraint\"===a.type&&\"=\"!==a._operation?e:[]);o.enter().append(\"path\"),o.exit().remove(),o.each(function(t){var e=m(t,r);e?n.select(this).attr(\"d\",e).style(\"stroke\",\"none\"):n.select(this).remove()})}(s,z,L,w),function(t,e,o,s,l,c){var u=i.ensureSingle(t,\"g\",\"contourlines\"),f=!1!==l.showlines,h=l.showlabels,p=f&&h,d=r.createLines(u,f||h,e),v=r.createLineClip(u,p,o,s.trace.uid),m=t.selectAll(\"g.contourlabels\").data(h?[0]:[]);if(m.exit().remove(),m.enter().append(\"g\").classed(\"contourlabels\",!0),h){var y=[],x=[];i.clearLocationCache();var b=r.labelFormatter(l,s.t.cb,o._fullLayout),_=a.tester.append(\"text\").attr(\"data-notex\",1).call(a.font,l.labelfont),w=e[0].xaxis,k=e[0].yaxis,A=w._length,M=k._length,T=w.range,S=k.range,C=Math.max(c[0][0],0),E=Math.min(c[2][0],A),L=Math.max(c[0][1],0),z=Math.min(c[2][1],M),O={};T[0]<T[1]?(O.left=C,O.right=E):(O.left=E,O.right=C),S[0]<S[1]?(O.top=L,O.bottom=z):(O.top=z,O.bottom=L),O.middle=(O.top+O.bottom)/2,O.center=(O.left+O.right)/2,y.push([[O.left,O.top],[O.right,O.top],[O.right,O.bottom],[O.left,O.bottom]]);var I=Math.sqrt(A*A+M*M),D=g.LABELDISTANCE*I/Math.max(1,e.length/g.LABELINCREASE);d.each(function(t){var e=r.calcTextOpts(t.level,b,_,o);n.select(this).selectAll(\"path\").each(function(){var t=i.getVisibleSegment(this,O,e.height/2);if(t&&!(t.len<(e.width+e.height)*g.LABELMIN))for(var n=Math.min(Math.ceil(t.len/D),g.LABELMAX),a=0;a<n;a++){var o=r.findBestTextLocation(this,t,e,x,O);if(!o)break;r.addLabelData(o,e,x,y)}})}),_.remove(),r.drawLabels(m,x,o,v,p?y:null)}h&&!f&&d.remove()}(s,k,t,y,w,L),function(t,e,r,n,o){var s=r._fullLayout._clips,l=\"clip\"+n.trace.uid,c=s.selectAll(\"#\"+l).data(n.trace.connectgaps?[]:[0]);if(c.enter().append(\"clipPath\").classed(\"contourclip\",!0).attr(\"id\",l),c.exit().remove(),!1===n.trace.connectgaps){var h={level:.9,crossings:{},starts:[],edgepaths:[],paths:[],xaxis:e.xaxis,yaxis:e.yaxis,x:n.x,y:n.y,z:function(t){var e,r,n=t.trace._emptypoints,i=[],a=t.z.length,o=t.z[0].length,s=[];for(e=0;e<o;e++)s.push(1);for(e=0;e<a;e++)i.push(s.slice());for(e=0;e<n.length;e++)r=n[e],i[r[0]][r[1]]=0;return t.zmask=i,i}(n),smoothing:0};u([h]),f([h]);var p=m(h,o),d=i.ensureSingle(c,\"path\",\"\");d.attr(\"d\",p)}else l=null;a.setClipUrl(t,l,r)}(s,e,t,y,L)})},r.createLines=function(t,e,r){var n=r[0].smoothing,i=t.selectAll(\"g.contourlevel\").data(e?r:[]);if(i.exit().remove(),i.enter().append(\"g\").classed(\"contourlevel\",!0),e){var o=i.selectAll(\"path.openline\").data(function(t){return t.pedgepaths||t.edgepaths});o.exit().remove(),o.enter().append(\"path\").classed(\"openline\",!0),o.attr(\"d\",function(t){return a.smoothopen(t,n)}).style(\"stroke-miterlimit\",1).style(\"vector-effect\",\"non-scaling-stroke\");var s=i.selectAll(\"path.closedline\").data(function(t){return t.ppaths||t.paths});s.exit().remove(),s.enter().append(\"path\").classed(\"closedline\",!0),s.attr(\"d\",function(t){return a.smoothclosed(t,n)}).style(\"stroke-miterlimit\",1).style(\"vector-effect\",\"non-scaling-stroke\")}return i},r.createLineClip=function(t,e,r,n){var i=e?\"clipline\"+n:null,o=r._fullLayout._clips.selectAll(\"#\"+i).data(e?[0]:[]);return o.exit().remove(),o.enter().append(\"clipPath\").classed(\"contourlineclip\",!0).attr(\"id\",i),a.setClipUrl(t,i,r),o},r.labelFormatter=function(t,e,r){if(t.labelformat)return r._d3locale.numberFormat(t.labelformat);var n;if(e)n=e.axis;else{if(n={type:\"linear\",_id:\"ycontour\",showexponent:\"all\",exponentformat:\"B\"},\"constraint\"===t.type){var i=t.value;Array.isArray(i)?n.range=[i[0],i[i.length-1]]:n.range=[i,i]}else n.range=[t.start,t.end],n.nticks=(t.end-t.start)/t.size;n.range[0]===n.range[1]&&(n.range[1]+=n.range[0]||1),n.nticks||(n.nticks=1e3),l(n,r),s.prepTicks(n),n._tmin=null,n._tmax=null}return function(t){return s.tickText(n,t).text}},r.calcTextOpts=function(t,e,r,n){var i=e(t);r.text(i).call(o.convertToTspans,n);var s=a.bBox(r.node(),!0);return{text:i,width:s.width,height:s.height,level:t,dy:(s.top+s.bottom)/2}},r.findBestTextLocation=function(t,e,r,n,a){var o,s,l,c,u,f=r.width;e.isClosed?(s=e.len/v.INITIALSEARCHPOINTS,o=e.min+s/2,l=e.max):(s=(e.len-f)/(v.INITIALSEARCHPOINTS+1),o=e.min+s+f/2,l=e.max-(s+f)/2);for(var h=1/0,p=0;p<v.ITERATIONS;p++){for(var d=o;d<l;d+=s){var g=i.getTextLocation(t,e.total,d,f),m=y(g,r,n,a);m<h&&(h=m,u=g,c=d)}if(h>2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.width/2,a=e.height/2,o=t.x,s=t.y,l=t.theta,c=Math.sin(l),u=Math.cos(l),f=i*u,h=a*c,p=i*c,d=-a*u,g=[[o-f-h,s-p-d],[o+f-h,s+p-d],[o+f+h,s+p+d],[o-f+h,s-p+d]];r.push({text:e.text,x:o,y:s,dy:e.dy,theta:l,level:e.level,width:e.width,height:e.height}),n.push(g)},r.drawLabels=function(t,e,r,a,s){var l=t.selectAll(\"text\").data(e,function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta});if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each(function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(o.convertToTspans,r)}),s){for(var c=\"\",u=0;u<s.length;u++)c+=\"M\"+s[u].join(\"L\")+\"Z\";i.ensureSingle(a,\"path\",\"\").attr(\"d\",c)}}},{\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plots/cartesian/axes\":742,\"../../plots/cartesian/set_convert\":761,\"../heatmap/plot\":955,\"./close_boundaries\":917,\"./constants\":919,\"./convert_to_constraints\":923,\"./empty_pathinfo\":925,\"./find_all_paths\":927,\"./make_crossings\":932,d3:149}],934:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\");function a(t,e,r){var i={type:\"linear\",range:[t,e]};return n.autoTicks(i,(e-t)/(r||15)),i}e.exports=function(t){var e=t.contours;if(t.autocontour){var r=t.zmin,o=t.zmax;void 0!==r&&void 0!==o||(r=i.aggNums(Math.min,null,t._z),o=i.aggNums(Math.max,null,t._z));var s=a(r,o,t.ncontours);e.size=s.dtick,e.start=n.tickFirst(s),s.range.reverse(),e.end=n.tickFirst(s),e.start===r&&(e.start+=e.size),e.end===o&&(e.end-=e.size),e.start>e.end&&(e.start=e.end=(e.start+e.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:e.start,end:e.end,size:e.size}),t._input.autocontour=!0}else if(\"constraint\"!==e.type){var l,c=e.start,u=e.end,f=t._input.contours;if(c>u&&(e.start=f.start=u,u=e.end=f.end=c,c=e.start),!(e.size>0))l=c===u?1:a(c,u,t.ncontours).dtick,f.size=e.size=l}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742}],935:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",function(t){return t[0].trace.opacity}),e.each(function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each(function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)});var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each(function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})}),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)}),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}}),a(t)}},{\"../../components/drawing\":592,\"../heatmap/style\":956,\"./make_color_map\":931,d3:149}],936:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":581,\"./label_defaults\":930}],937:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=i.contours,o=t(\"../scatter/attributes\"),s=t(\"../../components/colorscale/attributes\"),l=t(\"../../components/colorbar/attributes\"),c=t(\"../../lib/extend\").extendFlat,u=o.line;e.exports=c({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:a.type,start:a.start,end:a.end,size:a.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:a.showlines,showlabels:a.showlabels,labelfont:a.labelfont,labelformat:a.labelformat,operation:a.operation,value:a.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:c({},u.color,{}),width:u.width,dash:u.dash,smoothing:c({},u.smoothing,{}),editType:\"plot\"},transforms:void 0},s(\"\",{cLetter:\"z\",autoColorDflt:!1}),{colorbar:l})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../contour/attributes\":915,\"../heatmap/attributes\":944,\"../scatter/attributes\":1047}],938:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,v=e._carpetTrace,m=v.aaxis,y=v.baxis;m._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,m,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?m.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,m),w=\"scaled\"===e.ytype?\"\":h,k=c(e,w,p,d,g.length,y),A={a:_,b:k,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[A]}(t,e);return h(e),g}}},{\"../../components/colorscale/calc\":579,\"../../lib\":694,\"../carpet/lookup_carpetid\":893,\"../contour/set_contours\":934,\"../heatmap/clean_2d_array\":946,\"../heatmap/convert_column_xyz\":948,\"../heatmap/find_empties\":950,\"../heatmap/interp2d\":953,\"../heatmap/make_bound_array\":954,\"./defaults\":939}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,function(r){return n.coerce2(t,e,a,r)}),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":694,\"../contour/constraint_defaults\":920,\"../contour/contours_defaults\":922,\"../contour/style_defaults\":936,\"../heatmap/xyz_defaults\":958,\"./attributes\":937}],940:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../contour/colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"../contour/style\"),n.moduleType=\"trace\",n.name=\"contourcarpet\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../contour/colorbar\":918,\"../contour/style\":935,\"./attributes\":937,\"./calc\":938,\"./defaults\":939,\"./plot\":943}],941:[function(t,e,r){\"use strict\";var n=t(\"../../components/drawing\"),i=t(\"../carpet/axis_aligned_line\"),a=t(\"../../lib\");e.exports=function(t,e,r,o,s,l,c,u){var f,h,p,d,g,v,m,y=\"\",x=e.edgepaths.map(function(t,e){return e}),b=!0,_=1e-4*Math.abs(r[0][0]-r[2][0]),w=1e-4*Math.abs(r[0][1]-r[2][1]);function k(t){return Math.abs(t[1]-r[0][1])<w}function A(t){return Math.abs(t[1]-r[2][1])<w}function M(t){return Math.abs(t[0]-r[0][0])<_}function T(t){return Math.abs(t[0]-r[2][0])<_}function S(t,e){var r,n,a,o,f=\"\";for(k(t)&&!T(t)||A(t)&&!M(t)?(o=s.aaxis,a=i(s,l,[t[0],e[0]],.5*(t[1]+e[1]))):(o=s.baxis,a=i(s,l,.5*(t[0]+e[0]),[t[1],e[1]])),r=1;r<a.length;r++)for(f+=o.smoothing?\"C\":\"L\",n=0;n<a[r].length;n++){var h=a[r][n];f+=[c.c2p(h[0]),u.c2p(h[1])]+\" \"}return f}for(f=0,h=null;x.length;){var C=e.edgepaths[f][0];for(h&&(y+=S(h,C)),m=n.smoothopen(e.edgepaths[f].map(o),e.smoothing),y+=b?m:m.replace(/^M/,\"L\"),x.splice(x.indexOf(f),1),h=e.edgepaths[f][e.edgepaths[f].length-1],g=-1,d=0;d<4;d++){if(!h){a.log(\"Missing end?\",f,e);break}for(k(h)&&!T(h)?p=r[1]:M(h)?p=r[0]:A(h)?p=r[3]:T(h)&&(p=r[2]),v=0;v<e.edgepaths.length;v++){var E=e.edgepaths[v][0];Math.abs(h[0]-p[0])<_?Math.abs(h[0]-E[0])<_&&(E[1]-h[1])*(p[1]-E[1])>=0&&(p=E,g=v):Math.abs(h[1]-p[1])<w?Math.abs(h[1]-E[1])<w&&(E[0]-h[0])*(p[0]-E[0])>=0&&(p=E,g=v):a.log(\"endpt to newendpt is not vert. or horz.\",h,p,E)}if(g>=0)break;y+=S(h,p),h=p}if(g===e.edgepaths.length){a.log(\"unclosed perimeter path\");break}f=g,(b=-1===x.indexOf(f))&&(f=x[0],y+=S(h,p)+\"Z\",h=null)}for(f=0;f<e.paths.length;f++)y+=n.smoothclosed(e.paths[f].map(o),e.smoothing);return y}},{\"../../components/drawing\":592,\"../../lib\":694,\"../carpet/axis_aligned_line\":877}],942:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r<t.length;r++){for(o=(a=t[r]).pedgepaths=[],s=a.ppaths=[],n=0;n<a.edgepaths.length;n++){for(u=a.edgepaths[n],l=[],i=0;i<u.length;i++)l[i]=e(u[i]);o.push(l)}for(n=0;n<a.paths.length;n++){for(u=a.paths[n],c=[],i=0;i<u.length;i++)c[i]=e(u[i]);s.push(c)}}}},{}],943:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"./join_all_paths\"),d=t(\"../contour/empty_pathinfo\"),g=t(\"./map_pathinfo\"),v=t(\"../carpet/lookup_carpetid\"),m=t(\"../contour/close_boundaries\");function y(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function x(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function b(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,_){var w=e.xaxis,k=e.yaxis;s.makeTraceGroups(_,r,\"contour\").each(function(r){var _=n.select(this),A=r[0],M=A.trace,T=M._carpetTrace=v(t,M),S=t.calcdata[T.index][0];if(T.visible&&\"legendonly\"!==T.visible){var C=A.a,E=A.b,L=M.contours,z=d(L,e,A),O=\"constraint\"===L.type,I=L._operation,D=O?\"=\"===I?\"lines\":\"fill\":L.coloring,P=[[C[0],E[E.length-1]],[C[C.length-1],E[E.length-1]],[C[C.length-1],E[0]],[C[0],E[0]]];l(z);var R=1e-8*(C[C.length-1]-C[0]),F=1e-8*(E[E.length-1]-E[0]);c(z,R,F);var B,N,j,V,U=z;\"constraint\"===L.type&&(U=h(z,I),m(U,I,P,M)),g(z,G);var q=[];for(V=S.clipsegments.length-1;V>=0;V--)B=S.clipsegments[V],N=i([],B.x,w.c2p),j=i([],B.y,k.c2p),N.reverse(),j.reverse(),q.push(a(N,j,B.bicubic));var H=\"M\"+q.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h<e.length;h++)c=e[h],u=i([],c.x,r.c2p),f=i([],c.y,n.c2p),d.push(a(u,f,c.bicubic));p.attr(\"d\",\"M\"+d.join(\"L\")+\"Z\").style(\"stroke\",\"none\")}(_,S.clipsegments,w,k,O,D),function(t,e,r,i,a,o,l,c,u,f,h){var d=s.ensureSingle(e,\"g\",\"contourfill\").selectAll(\"path\").data(\"fill\"===f?a:[]);d.enter().append(\"path\"),d.exit().remove(),d.each(function(e){var a=p(t,e,o,l,c,u,r,i);e.prefixBoundary&&(a=h+a),a?n.select(this).attr(\"d\",a).style(\"stroke\",\"none\"):n.select(this).remove()})}(M,_,w,k,U,P,G,T,S,D,H),function(t,e,r,i,a,l,c){var h=s.ensureSingle(t,\"g\",\"contourlines\"),p=!1!==a.showlines,d=a.showlabels,g=p&&d,v=u.createLines(h,p||d,e),m=u.createLineClip(h,g,r,i.trace.uid),_=t.selectAll(\"g.contourlabels\").data(d?[0]:[]);if(_.exit().remove(),_.enter().append(\"g\").classed(\"contourlabels\",!0),d){var w=l.xaxis,k=l.yaxis,A=w._length,M=k._length,T=[[[0,0],[A,0],[A,M],[0,M]]],S=[];s.clearLocationCache();var C=u.labelFormatter(a,i.t.cb,r._fullLayout),E=o.tester.append(\"text\").attr(\"data-notex\",1).call(o.font,a.labelfont),L={left:0,right:A,center:A/2,top:0,bottom:M,middle:M/2},z=Math.sqrt(A*A+M*M),O=f.LABELDISTANCE*z/Math.max(1,e.length/f.LABELINCREASE);v.each(function(t){var e=u.calcTextOpts(t.level,C,E,r);n.select(this).selectAll(\"path\").each(function(r){var n=s.getVisibleSegment(this,L,e.height/2);if(n&&(function(t,e,r,n,i,a){for(var o,s=0;s<r.pedgepaths.length;s++)e===r.pedgepaths[s]&&(o=r.edgepaths[s]);if(!o)return;var l=i.a[0],c=i.a[i.a.length-1],u=i.b[0],f=i.b[i.b.length-1];function h(t,e){var r,n=0;return(Math.abs(t[0]-l)<.1||Math.abs(t[0]-c)<.1)&&(r=x(i.dxydb_rough(t[0],t[1],.1)),n=Math.max(n,a*b(e,r)/2)),(Math.abs(t[1]-u)<.1||Math.abs(t[1]-f)<.1)&&(r=x(i.dxyda_rough(t[0],t[1],.1)),n=Math.max(n,a*b(e,r)/2)),n}var p=y(t,0,1),d=y(t,n.total,n.total-1),g=h(o[0],p),v=n.total-h(o[o.length-1],d);n.min<g&&(n.min=g);n.max>v&&(n.max=v);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/O),f.LABELMAX),a=0;a<i;a++){var o=u.findBestTextLocation(this,n,e,S,L);if(!o)break;u.addLabelData(o,e,S,T)}})}),E.remove(),u.drawLabels(_,S,r,m,g?T:null)}d&&!p&&v.remove()}(_,z,t,A,L,e,T),o.setClipUrl(_,T._clipPathId,t)}function G(t){var e=T.ab2xy(t[0],t[1],!0);return[w.c2p(e[0]),k.c2p(e[1])]}})}},{\"../../components/drawing\":592,\"../../lib\":694,\"../carpet/lookup_carpetid\":893,\"../carpet/makepath\":894,\"../carpet/map_1d_array\":895,\"../contour/close_boundaries\":917,\"../contour/constants\":919,\"../contour/convert_to_constraints\":923,\"../contour/empty_pathinfo\":925,\"../contour/find_all_paths\":927,\"../contour/make_crossings\":932,\"../contour/plot\":933,\"./join_all_paths\":941,\"./map_pathinfo\":942,d3:149}],944:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../components/colorbar/attributes\"),o=t(\"../../lib/extend\").extendFlat;e.exports=o({z:{valType:\"data_array\",editType:\"calc\"},x:o({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:o({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:o({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:o({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:o({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:o({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},zhoverformat:{valType:\"string\",dflt:\"\",editType:\"none\"},transforms:void 0},i(\"\",{cLetter:\"z\",autoColorDflt:!1}),{colorbar:a})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../scatter/attributes\":1047}],945:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../histogram2d/calc\"),s=t(\"../../components/colorscale/calc\"),l=t(\"./convert_column_xyz\"),c=t(\"./clean_2d_array\"),u=t(\"./interp2d\"),f=t(\"./find_empties\"),h=t(\"./make_bound_array\");e.exports=function(t,e){var r,p,d,g,v,m,y,x,b,_=a.getFromId(t,e.xaxis||\"x\"),w=a.getFromId(t,e.yaxis||\"y\"),k=n.traceIs(e,\"contour\"),A=n.traceIs(e,\"histogram\"),M=n.traceIs(e,\"gl2d\"),T=k?\"best\":e.zsmooth;if(_._minDtick=0,w._minDtick=0,A)r=(b=o(t,e)).x,p=b.x0,d=b.dx,g=b.y,v=b.y0,m=b.dy,y=b.z;else{var S=e.z;i.isArray1D(S)?(l(e,_,w,\"x\",\"y\",[\"z\"]),r=e._x,g=e._y,S=e._z):(r=e.x?_.makeCalcdata(e,\"x\"):[],g=e.y?w.makeCalcdata(e,\"y\"):[]),p=e.x0||0,d=e.dx||1,v=e.y0||0,m=e.dy||1,y=c(S,e.transpose),(k||e.connectgaps)&&(e._emptypoints=f(y),u(y,e._emptypoints))}function C(t){T=e._input.zsmooth=e.zsmooth=!1,i.warn('cannot use zsmooth: \"fast\": '+t)}if(\"fast\"===T)if(\"log\"===_.type||\"log\"===w.type)C(\"log axis found\");else if(!A){if(r.length){var E=(r[r.length-1]-r[0])/(r.length-1),L=Math.abs(E/100);for(x=0;x<r.length-1;x++)if(Math.abs(r[x+1]-r[x]-E)>L){C(\"x scale is not linear\");break}}if(g.length&&\"fast\"===T){var z=(g[g.length-1]-g[0])/(g.length-1),O=Math.abs(z/100);for(x=0;x<g.length-1;x++)if(Math.abs(g[x+1]-g[x]-z)>O){C(\"y scale is not linear\");break}}}var I=i.maxRowLength(y),D=\"scaled\"===e.xtype?\"\":r,P=h(e,D,p,d,I,_),R=\"scaled\"===e.ytype?\"\":g,F=h(e,R,v,m,y.length,w);M||(e._extremes[_._id]=a.findExtremes(_,P),e._extremes[w._id]=a.findExtremes(w,F));var B={x:P,y:F,z:y,text:e._text||e.text};if(D&&D.length===P.length-1&&(B.xCenter=D),R&&R.length===F.length-1&&(B.yCenter=R),A&&(B.xRanges=b.xRanges,B.yRanges=b.yRanges,B.pts=b.pts),k&&\"constraint\"===e.contours.type||s(t,e,{vals:y,containerStr:\"\",cLetter:\"z\"}),k&&e.contours&&\"heatmap\"===e.contours.coloring){var N={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};B.xfill=h(N,D,p,d,I,_),B.yfill=h(N,R,v,m,y.length,w)}return[B]}},{\"../../components/colorscale/calc\":579,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../../registry\":825,\"../histogram2d/calc\":976,\"./clean_2d_array\":946,\"./convert_column_xyz\":948,\"./find_empties\":950,\"./interp2d\":953,\"./make_bound_array\":954}],946:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){var r,i,a,o,s,l;function c(t){if(n(t))return+t}if(e){for(r=0,s=0;s<t.length;s++)r=Math.max(r,t[s].length);if(0===r)return!1;a=function(t){return t.length},o=function(t,e,r){return t[r][e]}}else r=t.length,a=function(t,e){return t[e].length},o=function(t,e,r){return t[e][r]};var u=new Array(r);for(s=0;s<r;s++)for(i=a(t,s),u[s]=new Array(i),l=0;l<i;l++)u[s][l]=c(o(t,s,l));return u}},{\"fast-isnumeric\":215}],947:[function(t,e,r){\"use strict\";e.exports={min:\"zmin\",max:\"zmax\"}},{}],948:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,a,o,s){var l,c,u,f=t._length,h=e.makeCalcdata(t,a),p=r.makeCalcdata(t,o),d=t.text,g=void 0!==d&&n.isArray1D(d),v=n.distinctVals(h),m=v.vals,y=n.distinctVals(p),x=y.vals,b=[];for(l=0;l<s.length;l++)b[l]=n.init2dArray(x.length,m.length);for(g&&(u=n.init2dArray(x.length,m.length)),l=0;l<f;l++)if(h[l]!==i&&p[l]!==i){var _=n.findBin(h[l]+v.minDiff/2,m),w=n.findBin(p[l]+y.minDiff/2,x);for(c=0;c<s.length;c++){var k=t[s[c]];b[c][w][_]=k[l]}g&&(u[w][_]=d[l])}for(t[\"_\"+a]=m,t[\"_\"+o]=x,c=0;c<s.length;c++)t[\"_\"+s[c]]=b[c];g&&(t._text=u)}},{\"../../constants/numerical\":671,\"../../lib\":694}],949:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./xyz_defaults\"),a=t(\"./style_defaults\"),o=t(\"../../components/colorscale/defaults\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){function c(r,i){return n.coerce(t,e,s,r,i)}i(t,e,c,l)?(c(\"text\"),a(t,e,c,l),c(\"connectgaps\",n.isArray1D(e.z)&&!1!==e.zsmooth),o(t,e,l,c,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"./attributes\":944,\"./style_defaults\":957,\"./xyz_defaults\":958}],950:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").maxRowLength;e.exports=function(t){var e,r,i,a,o,s,l,c,u=[],f={},h=[],p=t[0],d=[],g=[0,0,0],v=n(t);for(r=0;r<t.length;r++)for(e=d,d=p,p=t[r+1]||[],i=0;i<v;i++)void 0===d[i]&&((s=(void 0!==d[i-1]?1:0)+(void 0!==d[i+1]?1:0)+(void 0!==e[i]?1:0)+(void 0!==p[i]?1:0))?(0===r&&s++,0===i&&s++,r===t.length-1&&s++,i===d.length-1&&s++,s<4&&(f[[r,i]]=[r,i,s]),u.push([r,i,s])):h.push([r,i]));for(;h.length;){for(l={},c=!1,o=h.length-1;o>=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort(function(t,e){return e[2]-t[2]})}},{\"../../lib\":694}],951:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\");e.exports=function(t,e,r,o,s,l){var c,u,f,h,p=t.cd[0],d=p.trace,g=t.xa,v=t.ya,m=p.x,y=p.y,x=p.z,b=p.xCenter,_=p.yCenter,w=p.zmask,k=[d.zmin,d.zmax],A=d.zhoverformat,M=m,T=y;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=x[0].length||h<0||h>x.length)return}else{if(n.inbox(e-m[0],e-m[m.length-1],0)>0||n.inbox(r-y[0],r-y[y.length-1],0)>0)return;if(l){var S;for(M=[2*m[0]-m[1]],S=1;S<m.length;S++)M.push((m[S]+m[S-1])/2);for(M.push([2*m[m.length-1]-m[m.length-2]]),T=[2*y[0]-y[1]],S=1;S<y.length;S++)T.push((y[S]+y[S-1])/2);T.push([2*y[y.length-1]-y[y.length-2]])}f=Math.max(0,Math.min(M.length-2,i.findBin(e,M))),h=Math.max(0,Math.min(T.length-2,i.findBin(r,T)))}var C=g.c2p(m[f]),E=g.c2p(m[f+1]),L=v.c2p(y[h]),z=v.c2p(y[h+1]);l?(E=C,c=m[f],z=L,u=y[h]):(c=b?b[f]:(m[f]+m[f+1])/2,u=_?_[h]:(y[h]+y[h+1])/2,d.zsmooth&&(C=E=g.c2p(c),L=z=v.c2p(u)));var O,I,D=x[h][f];w&&!w[h][f]&&(D=void 0),Array.isArray(p.text)&&Array.isArray(p.text[h])&&(O=p.text[h][f]);var P={type:\"linear\",range:k,hoverformat:A,_separators:g._separators,_numFormat:g._numFormat};return I=a.tickText(P,D,\"hover\").text,[i.extendFlat(t,{index:[h,f],distance:t.maxHoverDistance,spikeDistance:t.maxSpikeDistance,x0:C,x1:E,y0:L,y1:z,xLabelVal:c,yLabelVal:u,zLabelVal:D,zLabel:I,text:O})]}},{\"../../components/fx\":610,\"../../lib\":694,\"../../plots/cartesian/axes\":742}],952:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.colorbar=t(\"./colorbar\"),n.style=t(\"./style\"),n.hoverPoints=t(\"./hover\"),n.moduleType=\"trace\",n.name=\"heatmap\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"2dMap\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"./attributes\":944,\"./calc\":945,\"./colorbar\":947,\"./defaults\":949,\"./hover\":951,\"./plot\":955,\"./style\":956}],953:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[-1,0],[1,0],[0,-1],[0,1]];function a(t){return.5-.25*Math.min(1,.5*t)}function o(t,e,r){var n,a,o,s,l,c,u,f,h,p,d,g,v,m=0;for(s=0;s<e.length;s++){for(a=(n=e[s])[0],o=n[1],d=t[a][o],p=0,h=0,l=0;l<4;l++)(u=t[a+(c=i[l])[0]])&&void 0!==(f=u[o+c[1]])&&(0===p?g=v=f:(g=Math.min(g,f),v=Math.max(v,f)),h++,p+=f);if(0===h)throw\"iterateInterp2d order is wrong: no defined neighbors\";t[a][o]=p/h,void 0===d?h<4&&(m=1):(t[a][o]=(1+r)*t[a][o]-r*d,v>g&&(m=Math.max(m,Math.abs(t[a][o]-d)/(v-g))))}return m}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r<e.length&&!(e[r][2]<4);r++);for(e=e.slice(r),r=0;r<100&&i>.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":694}],954:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u<g;u++)f.push(.5*(e[u-1]+e[u]));f.push(1.5*e[g-1]-.5*e[g-2])}if(g<o){var v=f[f.length-1],m=v-f[f.length-2];for(u=g;u<o;u++)v+=m,f.push(v)}}else{c=a||1;var y=t[s._id.charAt(0)+\"calendar\"];for(l=p||\"category\"===s.type||\"multicategory\"===s.type?s.r2c(r,0,y)||0:i(e)&&1===e.length?e[0]:void 0===r?0:s.d2c(r,0,y),u=h||d?0:-.5;u<o;u++)f.push(l+c*u)}return f}},{\"../../lib\":694,\"../../registry\":825}],955:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=t(\"../../components/colorscale\"),l=t(\"../../constants/xmlns_namespaces\");function c(t,e){var r=e.length-2,n=o.constrain(o.findBin(t,e),0,r),i=e[n],a=e[n+1],s=o.constrain(n+(t-i)/(a-i)-.5,0,r),l=Math.round(s),c=Math.abs(s-l);return s&&s!==r&&c?{bin0:l,frac:c,bin1:Math.round(l+c/(s-l))}:{bin0:l,bin1:l,frac:0}}function u(t,e){var r=e.length-1,n=o.constrain(o.findBin(t,e),0,r),i=e[n],a=(t-i)/(e[n+1]-i)||0;return a<=0?{bin0:n,bin1:n,frac:0}:a<.5?{bin0:n,bin1:n+1,frac:a}:{bin0:n+1,bin1:n,frac:1-a}}function f(t,e,r){t[e]=r[0],t[e+1]=r[1],t[e+2]=r[2],t[e+3]=Math.round(255*r[3])}e.exports=function(t,e,r,h){var p=e.xaxis,d=e.yaxis;o.makeTraceGroups(h,r,\"hm\").each(function(e){var r,h,g,v,m,y,x=n.select(this),b=e[0],_=b.trace,w=b.z,k=b.x,A=b.y,M=b.xCenter,T=b.yCenter,S=a.traceIs(_,\"contour\"),C=S?\"best\":_.zsmooth,E=w.length,L=o.maxRowLength(w),z=!1,O=!1;for(y=0;void 0===r&&y<k.length-1;)r=p.c2p(k[y]),y++;for(y=k.length-1;void 0===h&&y>0;)h=p.c2p(k[y]),y--;for(h<r&&(g=h,h=r,r=g,z=!0),y=0;void 0===v&&y<A.length-1;)v=d.c2p(A[y]),y++;for(y=A.length-1;void 0===m&&y>0;)m=d.c2p(A[y]),y--;if(m<v&&(g=v,v=m,m=g,O=!0),S&&(M=k,T=A,k=b.xfill,A=b.yfill),\"fast\"!==C){var I=\"best\"===C?0:.5;r=Math.max(-I*p._length,r),h=Math.min((1+I)*p._length,h),v=Math.max(-I*d._length,v),m=Math.min((1+I)*d._length,m)}var D=Math.round(h-r),P=Math.round(m-v);if(D<=0||P<=0){x.selectAll(\"image\").data([]).exit().remove()}else{var R,F;\"fast\"===C?(R=L,F=E):(R=D,F=P);var B=document.createElement(\"canvas\");B.width=R,B.height=F;var N,j,V=B.getContext(\"2d\"),U=s.makeColorScaleFunc(s.extractScale(_,{cLetter:\"z\"}),{noNumericCheck:!0,returnArray:!0});\"fast\"===C?(N=z?function(t){return L-1-t}:o.identity,j=O?function(t){return E-1-t}:o.identity):(N=function(t){return o.constrain(Math.round(p.c2p(k[t])-r),0,D)},j=function(t){return o.constrain(Math.round(d.c2p(A[t])-v),0,P)});var q,H,G,W,Y,X=j(0),Z=[X,X],$=z?0:1,J=O?0:1,K=0,Q=0,tt=0,et=0;if(C){var rt,nt=0;try{rt=new Uint8Array(D*P*4)}catch(t){rt=new Array(D*P*4)}if(\"best\"===C){var it,at,ot,st=M||k,lt=T||A,ct=new Array(st.length),ut=new Array(lt.length),ft=new Array(D),ht=M?u:c,pt=T?u:c;for(y=0;y<st.length;y++)ct[y]=Math.round(p.c2p(st[y])-r);for(y=0;y<lt.length;y++)ut[y]=Math.round(d.c2p(lt[y])-v);for(y=0;y<D;y++)ft[y]=ht(y,ct);for(H=0;H<P;H++)for(at=w[(it=pt(H,ut)).bin0],ot=w[it.bin1],y=0;y<D;y++,nt+=4)f(rt,nt,Y=At(at,ot,ft[y],it))}else for(H=0;H<E;H++)for(W=w[H],Z=j(H),y=0;y<D;y++)Y=kt(W[y],1),f(rt,nt=4*(Z*D+N(y)),Y);var dt=V.createImageData(D,P);try{dt.data.set(rt)}catch(t){var gt=dt.data,vt=gt.length;for(H=0;H<vt;H++)gt[H]=rt[H]}V.putImageData(dt,0,0)}else{var mt=_.xgap,yt=_.ygap,xt=Math.floor(mt/2),bt=Math.floor(yt/2);for(H=0;H<E;H++)if(W=w[H],Z.reverse(),Z[J]=j(H+1),Z[0]!==Z[1]&&void 0!==Z[0]&&void 0!==Z[1])for(q=[G=N(0),G],y=0;y<L;y++)q.reverse(),q[$]=N(y+1),q[0]!==q[1]&&void 0!==q[0]&&void 0!==q[1]&&(Y=kt(W[y],(q[1]-q[0])*(Z[1]-Z[0])),V.fillStyle=\"rgba(\"+Y.join(\",\")+\")\",V.fillRect(q[0]+xt,Z[0]+bt,q[1]-q[0]-mt,Z[1]-Z[0]-yt))}Q=Math.round(Q/K),tt=Math.round(tt/K),et=Math.round(et/K);var _t=i(\"rgb(\"+Q+\",\"+tt+\",\"+et+\")\");t._hmpixcount=(t._hmpixcount||0)+K,t._hmlumcount=(t._hmlumcount||0)+K*_t.getLuminance();var wt=x.selectAll(\"image\").data(e);wt.enter().append(\"svg:image\").attr({xmlns:l.svg,preserveAspectRatio:\"none\"}),wt.attr({height:P,width:D,x:r,y:v,\"xlink:href\":B.toDataURL(\"image/png\")})}function kt(t,e){if(void 0!==t){var r=U(t);return r[0]=Math.round(r[0]),r[1]=Math.round(r[1]),r[2]=Math.round(r[2]),K+=e,Q+=r[0]*e,tt+=r[1]*e,et+=r[2]*e,r}return[0,0,0,0]}function At(t,e,r,n){var i=t[r.bin0];if(void 0===i)return kt(void 0,1);var a,o=t[r.bin1],s=e[r.bin0],l=e[r.bin1],c=o-i||0,u=s-i||0;return a=void 0===o?void 0===l?0:void 0===s?2*(l-i):2*(2*l-s-i)/3:void 0===l?void 0===s?0:2*(2*i-o-s)/3:void 0===s?2*(2*l-o-i)/3:l+i-o-s,kt(i+r.frac*c+n.frac*(u+r.frac*a))}})}},{\"../../components/colorscale\":583,\"../../constants/xmlns_namespaces\":672,\"../../lib\":694,\"../../registry\":825,d3:149,tinycolor2:515}],956:[function(t,e,r){\"use strict\";var n=t(\"d3\");e.exports=function(t){n.select(t).selectAll(\".hm image\").style(\"opacity\",function(t){return t.trace.opacity})}},{d3:149}],957:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){!1===r(\"zsmooth\")&&(r(\"xgap\"),r(\"ygap\")),r(\"zhoverformat\")}},{}],958:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../registry\");function o(t,e){var r=e(t);return\"scaled\"===(r?e(t+\"type\",\"array\"):\"scaled\")&&(e(t+\"0\"),e(\"d\"+t)),r}e.exports=function(t,e,r,s,l,c){var u,f,h=r(\"z\");if(l=l||\"x\",c=c||\"y\",void 0===h||!h.length)return 0;if(i.isArray1D(t.z)){u=r(l),f=r(c);var p=i.minRowLength(u),d=i.minRowLength(f);if(0===p||0===d)return 0;e._length=Math.min(p,d,h.length)}else{if(u=o(l,r),f=o(c,r),!function(t){for(var e,r=!0,a=!1,o=!1,s=0;s<t.length;s++){if(e=t[s],!i.isArrayOrTypedArray(e)){r=!1;break}e.length>0&&(a=!0);for(var l=0;l<e.length;l++)if(n(e[l])){o=!0;break}}return r&&a&&o}(h))return 0;r(\"transpose\"),e._length=null}return a.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[l,c],s),!0}},{\"../../lib\":694,\"../../registry\":825,\"fast-isnumeric\":215}],959:[function(t,e,r){\"use strict\";for(var n=t(\"../heatmap/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../components/colorbar/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=t(\"../../plot_api/edit_types\").overrideAll,l=[\"z\",\"x\",\"x0\",\"dx\",\"y\",\"y0\",\"dy\",\"text\",\"transpose\",\"xtype\",\"ytype\"],c={},u=0;u<l.length;u++){var f=l[u];c[f]=n[f]}o(c,i(\"\",{cLetter:\"z\",autoColorDflt:!1}),{colorbar:a}),e.exports=s(c,\"calc\",\"nested\")},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../heatmap/attributes\":944}],960:[function(t,e,r){\"use strict\";var n=t(\"gl-heatmap2d\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib/str2rgbarray\");function o(t,e){this.scene=t,this.uid=e,this.type=\"heatmapgl\",this.name=\"\",this.hoverinfo=\"all\",this.xData=[],this.yData=[],this.zData=[],this.textLabels=[],this.idToIndex=[],this.bounds=[0,0,0,0],this.options={z:[],x:[],y:[],shape:[0,0],colorLevels:[0],colorValues:[0,0,0,1]},this.heatmap=n(t.glplot,this.options),this.heatmap._trace=this}var s=o.prototype;s.handlePick=function(t){var e=this.options,r=e.shape,n=t.pointId,i=n%r[0],a=Math.floor(n/r[0]),o=n;return{trace:this,dataCoord:t.dataCoord,traceCoord:[e.x[i],e.y[a],e.z[o]],textLabel:this.textLabels[n],name:this.name,pointIndex:[a,i],hoverinfo:this.hoverinfo}},s.update=function(t,e){var r=e[0];this.index=t.index,this.name=t.name,this.hoverinfo=t.hoverinfo;var n=r.z;this.options.z=[].concat.apply([],n);var o=n[0].length,s=n.length;this.options.shape=[o,s],this.options.x=r.x,this.options.y=r.y;var l=function(t){for(var e=t.colorscale,r=t.zmin,n=t.zmax,i=e.length,o=new Array(i),s=new Array(4*i),l=0;l<i;l++){var c=e[l],u=a(c[1]);o[l]=r+c[0]*(n-r);for(var f=0;f<4;f++)s[4*l+f]=u[f]}return{colorLevels:o,colorValues:s}}(t);this.options.colorLevels=l.colorLevels,this.options.colorValues=l.colorValues,this.textLabels=[].concat.apply([],t.text),this.heatmap.update(this.options);var c=this.scene.xaxis,u=this.scene.yaxis;t._extremes[c._id]=i.findExtremes(c,r.x),t._extremes[u._id]=i.findExtremes(u,r.y)},s.dispose=function(){this.heatmap.dispose()},e.exports=function(t,e,r){var n=new o(t,e.uid);return n.update(e,r),n}},{\"../../lib/str2rgbarray\":717,\"../../plots/cartesian/axes\":742,\"gl-heatmap2d\":242}],961:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"../heatmap/defaults\"),n.colorbar=t(\"../heatmap/colorbar\"),n.calc=t(\"../heatmap/calc\"),n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"heatmapgl\",n.basePlotModule=t(\"../../plots/gl2d\"),n.categories=[\"gl\",\"gl2d\",\"2dMap\"],n.meta={},e.exports=n},{\"../../plots/gl2d\":782,\"../heatmap/calc\":945,\"../heatmap/colorbar\":947,\"../heatmap/defaults\":949,\"./attributes\":959,\"./convert\":960}],962:[function(t,e,r){\"use strict\";var n=t(\"../bar/attributes\"),i=t(\"../../components/fx/hovertemplate_attributes\"),a=t(\"./bin_attributes\"),o=t(\"./constants\");e.exports={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:n.text,orientation:n.orientation,histfunc:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"min\",\"max\"],dflt:\"count\",editType:\"calc\"},histnorm:{valType:\"enumerated\",values:[\"\",\"percent\",\"probability\",\"density\",\"probability density\"],dflt:\"\",editType:\"calc\"},cumulative:{enabled:{valType:\"boolean\",dflt:!1,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"increasing\",\"decreasing\"],dflt:\"increasing\",editType:\"calc\"},currentbin:{valType:\"enumerated\",values:[\"include\",\"exclude\",\"half\"],dflt:\"include\",editType:\"calc\"},editType:\"calc\"},nbinsx:{valType:\"integer\",min:0,dflt:0,editType:\"calc\"},xbins:a(\"x\",!0),nbinsy:{valType:\"integer\",min:0,dflt:0,editType:\"calc\"},ybins:a(\"y\",!0),autobinx:{valType:\"boolean\",dflt:null,editType:\"calc\"},autobiny:{valType:\"boolean\",dflt:null,editType:\"calc\"},hovertemplate:i({},{keys:o.eventDataKeys}),marker:n.marker,selected:n.selected,unselected:n.unselected,_deprecated:{bardir:n._deprecated.bardir}}},{\"../../components/fx/hovertemplate_attributes\":609,\"../bar/attributes\":835,\"./bin_attributes\":964,\"./constants\":968}],963:[function(t,e,r){\"use strict\";e.exports=function(t,e){for(var r=t.length,n=0,i=0;i<r;i++)e[i]?(t[i]/=e[i],n+=t[i]):t[i]=null;return n}},{}],964:[function(t,e,r){\"use strict\";e.exports=function(t,e){return{start:{valType:\"any\",editType:\"calc\"},end:{valType:\"any\",editType:\"calc\"},size:{valType:\"any\",editType:\"calc\"},editType:\"calc\"}}},{}],965:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports={count:function(t,e,r){return r[t]++,1},sum:function(t,e,r,i){var a=i[e];return n(a)?(a=Number(a),r[t]+=a,a):0},avg:function(t,e,r,i,a){var o=i[e];return n(o)&&(o=Number(o),r[t]+=o,a[t]++),0},min:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]>a){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]<a){var o=a-r[t];return r[t]=a,o}}return 0}}},{\"fast-isnumeric\":215}],966:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.ONEAVGYEAR,a=n.ONEAVGMONTH,o=n.ONEDAY,s=n.ONEHOUR,l=n.ONEMIN,c=n.ONESEC,u=t(\"../../plots/cartesian/axes\").tickIncrement;function f(t,e,r,n){if(t*e<=0)return 1/0;for(var i=Math.abs(e-t),a=\"date\"===r.type,o=h(i,a),s=0;s<10;s++){var l=h(80*o,a);if(o===l)break;if(!p(l,t,e,a,r,n))break;o=l}return o}function h(t,e){return e&&t>c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],v=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),m=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(v>m&&m<Math.abs(g-d)/4e3?(s=v,l=!1):(s=Math.min(v,m),l=!0),\"date\"===n.type&&s>o){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(c<e){var f=u(c,x,!1,a);(c+f)/2<e+t&&(c=f)}return r&&l?u(c,x,!0,a):c}}return function(e,r){var n=s*Math.round(e/s);return n+s/10<e&&n+.9*s<e+t&&(n+=s),r&&l&&(n-=s),n}}},{\"../../constants/numerical\":671,\"../../plots/cartesian/axes\":742}],967:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../bar/arrays_to_calcdata\"),s=t(\"./bin_functions\"),l=t(\"./norm_functions\"),c=t(\"./average\"),u=t(\"./bin_label_vals\");function f(t,e,r,o,s){var l,c,u,h,p,d,g,v=o+\"bins\",m=t._fullLayout,y=\"overlay\"===m.barmode,x=\"date\"===r.type?function(t){return t||0===t?i.cleanDate(t,null,r.calendar):null}:function(t){return n(t)?Number(t):null};function b(t,e,r){e[t+\"Found\"]?(e[t]=x(e[t]),null===e[t]&&(e[t]=r[t])):(d[t]=e[t]=r[t],i.nestedProperty(c[0],v+\".\"+t).set(r[t]))}var _=m._histogramBinOpts[e._groupName];if(e._autoBinFinished)delete e._autoBinFinished;else{c=_.traces;var w=_.sizeFound,k=[];d=c[0]._autoBin={};var A=!0;for(l=0;l<c.length;l++)(u=c[l]).visible&&(p=u._pos0=r.makeCalcdata(u,o),k=i.concat(k,p),delete u._autoBinFinished,!0===e.visible&&(A?A=!1:(delete u._autoBin,u._autoBinFinished=1)));h=c[0][o+\"calendar\"];var M=a.autoBin(k,r,_.nbins,!1,h,w&&_.size);if(y&&0===M._dataSpan&&\"category\"!==r.type&&\"multicategory\"!==r.type){if(s)return[M,p,!0];M=function(t,e,r,n,a){var o,s,l=function(t,e){for(var r=e.xaxis,n=e.yaxis,i=e.orientation,a=[],o=t._fullData,s=0;s<o.length;s++){var l=o[s];\"histogram\"===l.type&&!0===l.visible&&l.orientation===i&&l.xaxis===r&&l.yaxis===n&&a.push(l)}return a}(t,e),c=!1,u=1/0,h=[e];for(o=0;o<l.length;o++)if((s=l[o])===e)c=!0;else if(c){var p=f(t,s,r,n,!0),d=p[0],g=p[2];s._autoBinFinished=1,s._pos0=p[1],g?h.push(s):u=Math.min(u,d.size)}else u=Math.min(u,s[a].size);var v=new Array(h.length);for(o=0;o<h.length;o++)for(var m=h[o]._pos0,y=0;y<m.length;y++)if(void 0!==m[y]){v[o]=m[y];break}isFinite(u)||(u=i.distinctVals(v).minDiff);for(o=0;o<h.length;o++){var x=(s=h[o])[n+\"calendar\"];s._input[a]=s[a]={start:r.c2r(v[o]-u/2,0,x),end:r.c2r(v[o]+u/2,0,x),size:u}}return e[a]}(t,e,r,o,v)}(g=u.cumulative).enabled&&\"include\"!==g.currentbin&&(\"decreasing\"===g.direction?M.start=r.c2r(a.tickIncrement(r.r2c(M.start,0,h),M.size,!0,h)):M.end=r.c2r(a.tickIncrement(r.r2c(M.end,0,h),M.size,!1,h))),_.size=M.size,w||(d.size=M.size,i.nestedProperty(c[0],v+\".size\").set(M.size)),b(\"start\",_,M),b(\"end\",_,M)}p=e._pos0,delete e._pos0;var T=e._input[v]||{},S=i.extendFlat({},_),C=_.start,E=r.r2l(T.start),L=void 0!==E;if((_.startFound||L)&&E!==r.r2l(C)){var z=L?E:i.aggNums(Math.min,null,p),O={type:\"category\"===r.type||\"multicategory\"===r.type?\"linear\":r.type,r2l:r.r2l,dtick:_.size,tick0:C,calendar:h,range:[z,a.tickIncrement(z,_.size,!1,h)].map(r.l2r)},I=a.tickFirst(O);I>r.r2l(z)&&(I=a.tickIncrement(I,_.size,!0,h)),S.start=r.l2r(I),L||i.nestedProperty(e,v+\".start\").set(S.start)}var D=_.end,P=r.r2l(T.end),R=void 0!==P;if((_.endFound||R)&&P!==r.r2l(D)){var F=R?P:i.aggNums(Math.max,null,p);S.end=r.l2r(F),R||i.nestedProperty(e,v+\".start\").set(S.end)}var B=\"autobin\"+o;return!1===e._input[B]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[B],delete e[B]),[S,p]}e.exports=function(t,e){if(!0===e.visible){var r,h,p,d,g=[],v=[],m=a.getFromId(t,\"h\"===e.orientation?e.yaxis||\"y\":e.xaxis||\"x\"),y=\"h\"===e.orientation?\"y\":\"x\",x={x:\"y\",y:\"x\"}[y],b=e[y+\"calendar\"],_=e.cumulative,w=f(t,e,m,y),k=w[0],A=w[1],M=\"string\"==typeof k.size,T=[],S=M?T:k,C=[],E=[],L=[],z=0,O=e.histnorm,I=e.histfunc,D=-1!==O.indexOf(\"density\");_.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var P,R=\"max\"===I||\"min\"===I?null:0,F=s.count,B=l[O],N=!1,j=function(t){return m.r2c(t,0,b)};for(i.isArrayOrTypedArray(e[x])&&\"count\"!==I&&(P=e[x],N=\"avg\"===I,F=s[I]),r=j(k.start),p=j(k.end)+(r-a.tickIncrement(r,k.size,!1,b))/1e6;r<p&&g.length<1e6&&(h=a.tickIncrement(r,k.size,!1,b),g.push((r+h)/2),v.push(R),L.push([]),T.push(r),D&&C.push(1/(h-r)),N&&E.push(0),!(h<=r));)r=h;T.push(r),M||\"date\"!==m.type||(S={start:j(S.start),end:j(S.end),size:S.size});var V,U=v.length,q=!0,H=1/0,G=1/0,W={};for(r=0;r<A.length;r++){var Y=A[r];(d=i.findBin(Y,S))>=0&&d<U&&(z+=F(d,r,v,P,E),q&&L[d].length&&Y!==A[L[d][0]]&&(q=!1),L[d].push(r),W[r]=d,H=Math.min(H,Y-T[d]),G=Math.min(G,T[d+1]-Y))}q||(V=u(H,G,T,m,b)),N&&(z=c(v,E)),B&&B(v,z,C),_.enabled&&function(t,e,r){var n,i,a;function o(e){a=t[e],t[e]/=2}function s(e){i=t[e],t[e]=a+i/2,a+=i}if(\"half\"===r)if(\"increasing\"===e)for(o(0),n=1;n<t.length;n++)s(n);else for(o(t.length-1),n=t.length-2;n>=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n<t.length;n++)t[n]+=t[n-1];\"exclude\"===r&&(t.unshift(0),t.pop())}else{for(n=t.length-2;n>=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(v,_.direction,_.currentbin);var X=Math.min(g.length,v.length),Z=[],$=0,J=X-1;for(r=0;r<X;r++)if(v[r]){$=r;break}for(r=X-1;r>=$;r--)if(v[r]){J=r;break}for(r=$;r<=J;r++)if(n(g[r])&&n(v[r])){var K={p:g[r],s:v[r],b:0};_.enabled||(K.pts=L[r],q?K.ph0=K.ph1=L[r].length?A[L[r][0]]:g[r]:(K.ph0=V(T[r]),K.ph1=V(T[r+1],!0))),Z.push(K)}return 1===Z.length&&(Z[0].width1=a.tickIncrement(Z[0].p,k.size,!1,b)-Z[0].p),o(Z,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Z,e,W),Z}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../bar/arrays_to_calcdata\":834,\"./average\":963,\"./bin_functions\":965,\"./bin_label_vals\":966,\"./norm_functions\":974,\"fast-isnumeric\":215}],968:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],969:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=n.nestedProperty,a=t(\"./attributes\"),o={x:[{aStr:\"xbins.start\",name:\"start\"},{aStr:\"xbins.end\",name:\"end\"},{aStr:\"xbins.size\",name:\"size\"},{aStr:\"nbinsx\",name:\"nbins\"}],y:[{aStr:\"ybins.start\",name:\"start\"},{aStr:\"ybins.end\",name:\"end\"},{aStr:\"ybins.size\",name:\"size\"},{aStr:\"nbinsy\",name:\"nbins\"}]};e.exports=function(t,e){var r,s,l,c,u,f,h,p=e._histogramBinOpts={},d=\"overlay\"===e.barmode;function g(t){return n.coerce(l._input,l,a,t)}for(r=0;r<t.length;r++)\"histogram\"===(l=t[r]).type&&(delete l._autoBinFinished,u=\"v\"===l.orientation?\"x\":\"y\",f=d?l.uid:l.xaxis+l.yaxis+u,l._groupName=f,(h=p[f])?h.traces.push(l):h=p[f]={traces:[l],direction:u});for(f in p){u=(h=p[f]).direction;var v=o[u];for(s=0;s<v.length;s++){var m=v[s],y=m.name;if(\"nbins\"!==y||!h.sizeFound){var x=m.aStr;for(r=0;r<h.traces.length;r++){if(c=(l=h.traces[r])._input,void 0!==i(c,x).get()){h[y]=g(x),h[y+\"Found\"]=!0;break}var b=l._autoBin;b&&b[y]&&i(l,x).set(b[y])}if(\"start\"===y||\"end\"===y)for(;r<h.traces.length;r++)g(x,((l=h.traces[r])._autoBin||{})[y]);\"nbins\"!==y||h.sizeFound||h.nbinsFound||(l=h.traces[0],h[y]=g(x))}}}}},{\"../../lib\":694,\"./attributes\":962}],970:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../components/color\"),o=t(\"../bar/style_defaults\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){function c(r,n){return i.coerce(t,e,s,r,n)}var u=c(\"x\"),f=c(\"y\");c(\"cumulative.enabled\")&&(c(\"cumulative.direction\"),c(\"cumulative.currentbin\")),c(\"text\");var h=c(\"orientation\",f&&!u?\"h\":\"v\"),p=\"v\"===h?\"x\":\"y\",d=\"v\"===h?\"y\":\"x\",g=u&&f?Math.min(i.minRowLength(u)&&i.minRowLength(f)):i.minRowLength(e[p]||[]);if(g){e._length=g,n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],l),e[d]&&c(\"histfunc\"),c(\"histnorm\"),c(\"autobin\"+p),c(\"hovertemplate\"),o(t,e,c,r,l),i.coerceSelectionMarkerOpacity(e,c);var v=(e.marker.line||{}).color,m=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");m(t,e,v||a.defaultLine,{axis:\"y\"}),m(t,e,v||a.defaultLine,{axis:\"x\",inherit:\"y\"})}else e.visible=!1}},{\"../../components/color\":571,\"../../lib\":694,\"../../registry\":825,\"../bar/style_defaults\":849,\"./attributes\":962}],971:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){if(t.x=\"xVal\"in e?e.xVal:e.x,t.y=\"yVal\"in e?e.yVal:e.y,e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),!(r.cumulative||{}).enabled){var a,o=Array.isArray(i)?n[0].pts[i[0]][i[1]]:n[i].pts;if(t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex,r._indexToPoints){a=[];for(var s=0;s<o.length;s++)a=a.concat(r._indexToPoints[o[s]])}else a=o;t.pointIndices=a}return t}},{}],972:[function(t,e,r){\"use strict\";var n=t(\"../bar/hover\").hoverPoints,i=t(\"../../plots/cartesian/axes\").hoverLabelText;e.exports=function(t,e,r,a){var o=n(t,e,r,a);if(o){var s=(t=o[0]).cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var c=\"h\"===l.orientation?\"y\":\"x\";t[c+\"Label\"]=i(t[c+\"a\"],s.ph0,s.ph1)}return l.hovermplate&&(t.hovertemplate=l.hovertemplate),o}}},{\"../../plots/cartesian/axes\":742,\"../bar/hover\":841}],973:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.layoutAttributes=t(\"../bar/layout_attributes\"),n.supplyDefaults=t(\"./defaults\"),n.crossTraceDefaults=t(\"./cross_trace_defaults\"),n.supplyLayoutDefaults=t(\"../bar/layout_defaults\"),n.calc=t(\"./calc\"),n.crossTraceCalc=t(\"../bar/cross_trace_calc\").crossTraceCalc,n.plot=t(\"../bar/plot\"),n.layerName=\"barlayer\",n.style=t(\"../bar/style\").style,n.styleOnSelect=t(\"../bar/style\").styleOnSelect,n.colorbar=t(\"../scatter/marker_colorbar\"),n.hoverPoints=t(\"./hover\"),n.selectPoints=t(\"../bar/select\"),n.eventData=t(\"./event_data\"),n.moduleType=\"trace\",n.name=\"histogram\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"bar\",\"histogram\",\"oriented\",\"errorBarsOK\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../bar/cross_trace_calc\":838,\"../bar/layout_attributes\":843,\"../bar/layout_defaults\":844,\"../bar/plot\":845,\"../bar/select\":846,\"../bar/style\":848,\"../scatter/marker_colorbar\":1065,\"./attributes\":962,\"./calc\":967,\"./cross_trace_defaults\":969,\"./defaults\":970,\"./event_data\":971,\"./hover\":972}],974:[function(t,e,r){\"use strict\";e.exports={percent:function(t,e){for(var r=t.length,n=100/e,i=0;i<r;i++)t[i]*=n},probability:function(t,e){for(var r=t.length,n=0;n<r;n++)t[n]/=e},density:function(t,e,r,n){var i=t.length;n=n||1;for(var a=0;a<i;a++)t[a]*=r[a]*n},\"probability density\":function(t,e,r,n){var i=t.length;n&&(e/=n);for(var a=0;a<i;a++)t[a]*=r[a]/e}}},{}],975:[function(t,e,r){\"use strict\";var n=t(\"../histogram/attributes\"),i=t(\"../histogram/bin_attributes\"),a=t(\"../heatmap/attributes\"),o=t(\"../../components/colorscale/attributes\"),s=t(\"../../components/colorbar/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:n.x,y:n.y,z:{valType:\"data_array\",editType:\"calc\"},marker:{color:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"},histnorm:n.histnorm,histfunc:n.histfunc,nbinsx:n.nbinsx,xbins:i(\"x\"),nbinsy:n.nbinsy,ybins:i(\"y\"),autobinx:n.autobinx,autobiny:n.autobiny,xgap:a.xgap,ygap:a.ygap,zsmooth:a.zsmooth,zhoverformat:a.zhoverformat},o(\"\",{cLetter:\"z\",autoColorDflt:!1}),{colorbar:s})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../heatmap/attributes\":944,\"../histogram/attributes\":962,\"../histogram/bin_attributes\":964}],976:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../histogram/bin_functions\"),o=t(\"../histogram/norm_functions\"),s=t(\"../histogram/average\"),l=t(\"../histogram/bin_label_vals\");function c(t,e,r,a,o,s,l){var c=e+\"bins\",u=t[c];u||(u=t[c]={});var f=t._input[c]||{},h=t._autoBin={};f.size||delete u.size,void 0===f.start&&delete u.start,void 0===f.end&&delete u.end;var p=!u.size,d=void 0===u.start,g=void 0===u.end;if(p||d||g){var v=i.autoBin(r,a,t[\"nbins\"+e],\"2d\",l,u.size);\"histogram2dcontour\"===t.type&&(d&&(v.start=s(i.tickIncrement(o(v.start),v.size,!0,l))),g&&(v.end=s(i.tickIncrement(o(v.end),v.size,!1,l)))),p&&(u.size=h.size=v.size),d&&(u.start=h.start=v.start),g&&(u.end=h.end=v.end)}var m=\"autobin\"+e;!1===t._input[m]&&(t._input[c]=n.extendFlat({},u),delete t._input[m],delete t[m])}function u(t,e,r,n){var i,a=new Array(t);if(n)for(i=0;i<t;i++)a[i]=1/(e[i+1]-e[i]);else{var o=1/r;for(i=0;i<t;i++)a[i]=o}return a}function f(t,e){return{start:t(e.start),end:t(e.end),size:e.size}}function h(t,e,r,n,i,a){var o,s=t.length-1,c=new Array(s);if(e)for(o=0;o<s;o++)c[o]=[e[o],e[o]];else{var u=l(r,n,t,i,a);for(o=0;o<s;o++)c[o]=[u(t[o]),u(t[o+1],!0)]}return c}e.exports=function(t,e){var r,l,p,d,g=i.getFromId(t,e.xaxis||\"x\"),v=e.x?g.makeCalcdata(e,\"x\"):[],m=i.getFromId(t,e.yaxis||\"y\"),y=e.y?m.makeCalcdata(e,\"y\"):[],x=e.xcalendar,b=e.ycalendar,_=function(t){return g.r2c(t,0,x)},w=function(t){return m.r2c(t,0,b)},k=function(t){return g.c2r(t,0,x)},A=function(t){return m.c2r(t,0,b)},M=e._length;v.length>M&&v.splice(M,v.length-M),y.length>M&&y.splice(M,y.length-M),c(e,\"x\",v,g,_,k,x),c(e,\"y\",y,m,w,A,b);var T=[],S=[],C=[],E=\"string\"==typeof e.xbins.size,L=\"string\"==typeof e.ybins.size,z=[],O=[],I=E?z:e.xbins,D=L?O:e.ybins,P=0,R=[],F=[],B=e.histnorm,N=e.histfunc,j=-1!==B.indexOf(\"density\"),V=\"max\"===N||\"min\"===N?null:0,U=a.count,q=o[B],H=!1,G=[],W=[],Y=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Y&&\"count\"!==N&&(H=\"avg\"===N,U=a[N]);var X=e.xbins,Z=_(X.start),$=_(X.end)+(Z-i.tickIncrement(Z,X.size,!1,x))/1e6;for(r=Z;r<$;r=i.tickIncrement(r,X.size,!1,x))S.push(V),z.push(r),H&&C.push(0);z.push(r);var J=S.length,K=_(e.xbins.start),Q=(r-K)/J,tt=k(K+Q/2);for(Z=w((X=e.ybins).start),$=w(X.end)+(Z-i.tickIncrement(Z,X.size,!1,b))/1e6,r=Z;r<$;r=i.tickIncrement(r,X.size,!1,b)){T.push(S.slice()),O.push(r);var et=new Array(J);for(l=0;l<J;l++)et[l]=[];F.push(et),H&&R.push(C.slice())}O.push(r);var rt=T.length,nt=w(e.ybins.start),it=(r-nt)/rt,at=A(nt+it/2);j&&(G=u(S.length,I,Q,E),W=u(T.length,D,it,L)),E||\"date\"!==g.type||(I=f(_,I)),L||\"date\"!==m.type||(D=f(w,D));var ot=!0,st=!0,lt=new Array(J),ct=new Array(rt),ut=1/0,ft=1/0,ht=1/0,pt=1/0;for(r=0;r<M;r++){var dt=v[r],gt=y[r];p=n.findBin(dt,I),d=n.findBin(gt,D),p>=0&&p<J&&d>=0&&d<rt&&(P+=U(p,r,T[d],Y,R[d]),F[d][p].push(r),ot&&(void 0===lt[p]?lt[p]=dt:lt[p]!==dt&&(ot=!1)),st&&(void 0===ct[p]?ct[p]=gt:ct[p]!==gt&&(st=!1)),ut=Math.min(ut,dt-z[p]),ft=Math.min(ft,z[p+1]-dt),ht=Math.min(ht,gt-O[d]),pt=Math.min(pt,O[d+1]-gt))}if(H)for(d=0;d<rt;d++)P+=s(T[d],R[d]);if(q)for(d=0;d<rt;d++)q(T[d],P,G,W[d]);return{x:v,xRanges:h(z,ot&&lt,ut,ft,g,x),x0:tt,dx:Q,y:y,yRanges:h(O,st&&ct,ht,pt,m,b),y0:at,dy:it,z:T,pts:F}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../histogram/average\":963,\"../histogram/bin_functions\":965,\"../histogram/bin_label_vals\":966,\"../histogram/norm_functions\":974}],977:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../lib\"),s=t(\"./attributes\"),l=[\"x\",\"y\"];function c(t,e,r,s){var l=r[a.id2name(t[e+\"axis\"])].type,c=e+\"bins\",u=t[c],f=t[e+\"calendar\"];u||(u=t[c]={});var h=\"date\"===l?function(t,e){return t||0===t?o.cleanDate(t,i,f):e}:function(t,e){return n(t)?Number(t):e};u.start=h(u.start,s.start),u.end=h(u.end,s.end);var p=s.size,d=u.size;if(n(d))u.size=d>0?Number(d):p;else if(\"string\"!=typeof d)u.size=p;else{var g=d.charAt(0),v=d.substr(1);((v=n(v)?Number(v):0)<=0||\"date\"!==l||\"M\"!==g||v!==Math.round(v))&&(u.size=p)}}e.exports=function(t,e){var r,n,i,a;function u(t){return o.coerce(i._input,i,s,t)}for(r=0;r<t.length;r++){var f=(i=t[r]).type;if(\"histogram2d\"===f||\"histogram2dcontour\"===f)for(n=0;n<l.length;n++){var h=(a=l[n])+\"bins\",p=(i._autoBin||{})[a]||{};u(h+\".start\",p.start),u(h+\".end\",p.end),u(h+\".size\",p.size),c(i,a,e,p),(i[h]||{}).size||u(\"nbins\"+a)}}}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axis_ids\":745,\"./attributes\":975,\"fast-isnumeric\":215}],978:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./sample_defaults\"),a=t(\"../heatmap/style_defaults\"),o=t(\"../../components/colorscale/defaults\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){function c(r,i){return n.coerce(t,e,s,r,i)}i(t,e,c,l),!1!==e.visible&&(a(t,e,c,l),o(t,e,l,c,{prefix:\"\",cLetter:\"z\"}))}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"../heatmap/style_defaults\":957,\"./attributes\":975,\"./sample_defaults\":981}],979:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/hover\"),i=t(\"../../plots/cartesian/axes\").hoverLabelText;e.exports=function(t,e,r,a,o,s){var l=n(t,e,r,a,o,s);if(l){var c=(t=l[0]).index,u=c[0],f=c[1],h=t.cd[0],p=h.xRanges[f],d=h.yRanges[u];return t.xLabel=i(t.xa,p[0],p[1]),t.yLabel=i(t.ya,d[0],d[1]),l}}},{\"../../plots/cartesian/axes\":742,\"../heatmap/hover\":951}],980:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.crossTraceDefaults=t(\"./cross_trace_defaults\"),n.calc=t(\"../heatmap/calc\"),n.plot=t(\"../heatmap/plot\"),n.layerName=\"heatmaplayer\",n.colorbar=t(\"../heatmap/colorbar\"),n.style=t(\"../heatmap/style\"),n.hoverPoints=t(\"./hover\"),n.eventData=t(\"../histogram/event_data\"),n.moduleType=\"trace\",n.name=\"histogram2d\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"2dMap\",\"histogram\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../heatmap/calc\":945,\"../heatmap/colorbar\":947,\"../heatmap/plot\":955,\"../heatmap/style\":956,\"../histogram/event_data\":971,\"./attributes\":975,\"./cross_trace_defaults\":977,\"./defaults\":978,\"./hover\":979}],981:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"y\"),l=i.minRowLength(o),c=i.minRowLength(s);l&&c?(e._length=Math.min(l,c),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a),(r(\"z\")||r(\"marker.color\"))&&r(\"histfunc\"),r(\"histnorm\"),r(\"autobinx\"),r(\"autobiny\")):e.visible=!1}},{\"../../lib\":694,\"../../registry\":825}],982:[function(t,e,r){\"use strict\";var n=t(\"../histogram2d/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../components/colorbar/attributes\"),s=t(\"../../lib/extend\").extendFlat;e.exports=s({x:n.x,y:n.y,z:n.z,marker:n.marker,histnorm:n.histnorm,histfunc:n.histfunc,nbinsx:n.nbinsx,xbins:n.xbins,nbinsy:n.nbinsy,ybins:n.ybins,autobinx:n.autobinx,autobiny:n.autobiny,autocontour:i.autocontour,ncontours:i.ncontours,contours:i.contours,line:i.line,zhoverformat:n.zhoverformat},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}),{colorbar:o})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../contour/attributes\":915,\"../histogram2d/attributes\":975}],983:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../histogram2d/sample_defaults\"),a=t(\"../contour/contours_defaults\"),o=t(\"../contour/style_defaults\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){function c(r,i){return n.coerce(t,e,s,r,i)}i(t,e,c,l),!1!==e.visible&&(a(t,e,c,function(r){return n.coerce2(t,e,s,r)}),o(t,e,c,l))}},{\"../../lib\":694,\"../contour/contours_defaults\":922,\"../contour/style_defaults\":936,\"../histogram2d/sample_defaults\":981,\"./attributes\":982}],984:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.crossTraceDefaults=t(\"../histogram2d/cross_trace_defaults\"),n.calc=t(\"../contour/calc\"),n.plot=t(\"../contour/plot\").plot,n.layerName=\"contourlayer\",n.style=t(\"../contour/style\"),n.colorbar=t(\"../contour/colorbar\"),n.hoverPoints=t(\"../contour/hover\"),n.moduleType=\"trace\",n.name=\"histogram2dcontour\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"2dMap\",\"contour\",\"histogram\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../contour/calc\":916,\"../contour/colorbar\":918,\"../contour/hover\":928,\"../contour/plot\":933,\"../contour/style\":935,\"../histogram2d/cross_trace_defaults\":977,\"./attributes\":982,\"./defaults\":983}],985:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../components/colorbar/attributes\"),a=t(\"../surface/attributes\"),o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0}},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{colorbar:i,flatshading:{valType:\"boolean\",dflt:!1},contour:{show:l({},a.contours.x.show,{}),color:a.contours.x.color,width:a.contours.x.width},lightposition:{x:l({},a.lightposition.x,{dflt:1e5}),y:l({},a.lightposition.y,{dflt:1e5}),z:l({},a.lightposition.z,{dflt:0})},lighting:o.lighting,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../mesh3d/attributes\":990,\"../surface/attributes\":1134}],986:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length);for(var r=1/0,i=-1/0,a=e.value.length,o=0;o<a;o++){var s=e.value[o];r=Math.min(r,s),i=Math.max(i,s)}e._minValues=r,e._maxValues=i,e._vMin=void 0===e.isomin||null===e.isomin?r:e.isomin,e._vMax=void 0===e.isomax||null===e.isomin?i:e.isomax,n(t,e,{vals:[e._vMin,e._vMax],containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":579}],987:[function(t,e,r){\"use strict\";var n=t(\"gl-mesh3d\"),i=t(\"../../lib/gl_format_color\").parseColorScale,a=t(\"../../lib/str2rgbarray\"),o=t(\"../../plots/gl3d/zip3\"),s=t(\"../../lib\");function l(t){return s.distinctVals(t).vals}function c(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.data=null,this.showContour=!1}var u=c.prototype;function f(t,e){for(var r=e.length-1;r>0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n<t&&t<=i)return{id:r,distRatio:(i-t)/(i-n)}}return{id:0,distRatio:0}}u.handlePick=function(t){if(t.object===this.mesh){var e=t.data.index,r=this.data._x[e],n=this.data._y[e],i=this.data._z[e],a=this.data._Ys.length,o=this.data._Zs.length,s=f(r,this.data._Xs).id,l=f(n,this.data._Ys).id,c=f(i,this.data._Zs).id,u=t.index=c+o*l+o*a*s;t.traceCoordinate=[this.data._x[u],this.data._y[u],this.data._z[u],this.data.value[u]];var h=this.data.text;return Array.isArray(h)&&void 0!==h[u]?t.textLabel=h[u]:h&&(t.textLabel=h),!0}},u.update=function(t){var e=this.scene,r=e.fullSceneLayout;function n(t,e,r,n){return e.map(function(e){return t.d2l(e,0,n)*r})}this.data=function(t){t._i=[],t._j=[],t._k=[];var e,r,n=t.surface.show,i=t.spaceframe.show,a=t.surface.fill,o=t.spaceframe.fill,s=!1,c=!1,u=!1,h=0,p=l(t.x.slice(0,t._len)),d=l(t.y.slice(0,t._len)),g=l(t.z.slice(0,t._len)),v=p.length,m=d.length,y=g.length;function x(t,e,r){return r+y*e+y*m*t}var b,_,w,k,A,M=t._minValues,T=t._maxValues,S=t._vMin,C=t._vMax;function E(t,e,n){for(var i=k.length,a=r;a<i;a++)if(t===b[a]&&e===_[a]&&n===w[a])return a;return-1}function L(){r=e}function z(){b=[],_=[],w=[],k=[],e=0,L()}function O(t,r,n,i){return b.push(t),_.push(r),w.push(n),k.push(i),++e-1}function I(e,r,n){return t._i.push(e),t._j.push(r),t._k.push(n),++h-1}function D(t,e,r){for(var n=[],i=0;i<t.length;i++)n[i]=t[i]*(1-r)+r*e[i];return n}function P(t){A=t}function R(t,e){return\"all\"===t||null===t||t.indexOf(e)>-1}function F(t,e){return null===t?e:t}function B(t,e,r){L();var n=[e],i=[r];if(A>=1)n=[e],i=[r];else if(A>0){var a=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i<t.length;i++)n[i]=(t[i]+e[i]+r[i])/3;return n}(r,n,i),o=Math.sqrt(1-A),s=D(a,r,o),l=D(a,n,o),c=D(a,i,o),u=e[0],f=e[1],h=e[2];return{xyzv:[[r,n,l],[l,s,r],[n,i,c],[c,l,n],[i,r,s],[s,c,i]],abc:[[u,f,-1],[-1,-1,u],[f,h,-1],[-1,-1,f],[h,u,-1],[-1,-1,h]]}}(e,r);n=a.xyzv,i=a.abc}for(var o=0;o<n.length;o++){e=n[o],r=i[o];for(var s=[],l=0;l<3;l++){var c=e[l][0],u=e[l][1],f=e[l][2],h=e[l][3],p=r[l]>-1?r[l]:E(c,u,f);s[l]=p>-1?p:O(c,u,f,F(t,h))}I(s[0],s[1],s[2])}}function N(t,e,r,n){var i=t[3];i<r&&(i=r),i>n&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function j(t,e,r){return t>=e&&t<=r}function V(t){var e=.01*(C-S);return t>=S-e&&t<=C+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t.x[i],t.y[i],t.z[i],t.value[i]])}return r}function q(t,e,r,n,i,a){r=[-1,-1,-1];var o=function(t,e,r){V(e[0][3])&&V(e[1][3])&&V(e[2][3])?B(t,e,r):a||q(t,e,r,S,C,!0)},s=[j(e[0][3],n,i),j(e[1][3],n,i),j(e[2][3],n,i)],l=!1;return s[0]||s[1]||s[2]?s[0]&&s[1]&&s[2]?(u||o(t,e,r),l):([[0,1,2],[2,0,1],[1,2,0]].forEach(function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var c=e[a[0]],u=e[a[1]],f=e[a[2]],h=N(f,c,n,i),p=N(f,u,n,i);o(t,[p,h,c],[-1,-1,r[a[0]]]),o(t,[c,u,p],[r[a[0]],r[a[1]],-1]),l=!0}}),l||([[0,1,2],[1,2,0],[2,0,1]].forEach(function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var c=e[a[0]],u=e[a[1]],f=e[a[2]],h=N(u,c,n,i),p=N(f,c,n,i);o(t,[p,h,c],[-1,-1,r[a[0]]]),l=!0}}),l)):l}function H(t,e,r,n){var i=U(e),a=[j(i[0][3],r,n),j(i[1][3],r,n),j(i[2][3],r,n),j(i[3][3],r,n)],o=!1;return a[0]||a[1]||a[2]||a[3]?a[0]&&a[1]&&a[2]&&a[3]?(c&&function(t,e,r){var n=function(n,i,a){B(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,i,e),o):([[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach(function(s){if(a[s[0]]&&a[s[1]]&&a[s[2]]&&!a[s[3]]){var l=i[s[0]],u=i[s[1]],f=i[s[2]],h=i[s[3]];if(c)B(t,[l,u,f],[e[s[0]],e[s[1]],e[s[2]]]);else{var p=N(h,l,r,n),d=N(h,u,r,n),g=N(h,f,r,n);B(null,[p,d,g],[-1,-1,-1])}o=!0}}),o||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach(function(s){if(a[s[0]]&&a[s[1]]&&!a[s[2]]&&!a[s[3]]){var l=i[s[0]],u=i[s[1]],f=i[s[2]],h=i[s[3]],p=N(f,l,r,n),d=N(f,u,r,n),g=N(h,u,r,n),v=N(h,l,r,n);c?(B(t,[l,v,p],[e[s[0]],-1,-1]),B(t,[u,d,g],[e[s[1]],-1,-1])):function(t,e,r){var n=function(n,i,a){B(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,g,v],[-1,-1,-1,-1]),o=!0}}),o||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach(function(s){if(a[s[0]]&&!a[s[1]]&&!a[s[2]]&&!a[s[3]]){var l=i[s[0]],u=i[s[1]],f=i[s[2]],h=i[s[3]],p=N(u,l,r,n),d=N(f,l,r,n),g=N(h,l,r,n);c?(B(t,[l,p,d],[e[s[0]],-1,-1]),B(t,[l,d,g],[e[s[0]],-1,-1]),B(t,[l,g,p],[e[s[0]],-1,-1])):B(null,[p,d,g],[-1,-1,-1]),o=!0}}),o))):o}function G(t,e,r,n,i,a,o,l,u,f,h){s&&(R(t,\"A\")&&H(null,[e,r,n,a],f,h),R(t,\"B\")&&H(null,[r,n,i,u],f,h),R(t,\"C\")&&H(null,[r,a,o,u],f,h),R(t,\"D\")&&H(null,[n,a,l,u],f,h),R(t,\"E\")&&H(null,[r,n,a,u],f,h)),c&&H(t,[r,n,a,u],f,h)}function W(t,e,r,n,i,a,o){q(t,U([e,r,n]),[e,r,n],a,o),q(t,U([n,i,e]),[n,i,e],a,o)}function Y(t,e,r,n,i,a,o,s){s?W(t,e,r,i,n,a,o):W(t,r,i,n,e,a,o)}function X(t,e,r,n,i,a,o){var s,l,c,u,f=function(){q(t,[s,l,c],[-1,-1,-1],i,a),q(t,[c,u,s],[-1,-1,-1],i,a)},h=o[0],p=o[1],d=o[2];h&&(s=D(U([x(e,r-0,n-0)])[0],U([x(e-1,r-0,n-0)])[0],h),l=D(U([x(e,r-0,n-1)])[0],U([x(e-1,r-0,n-1)])[0],h),c=D(U([x(e,r-1,n-1)])[0],U([x(e-1,r-1,n-1)])[0],h),u=D(U([x(e,r-1,n-0)])[0],U([x(e-1,r-1,n-0)])[0],h),f()),p&&(s=D(U([x(e-0,r,n-0)])[0],U([x(e-0,r-1,n-0)])[0],p),l=D(U([x(e-0,r,n-1)])[0],U([x(e-0,r-1,n-1)])[0],p),c=D(U([x(e-1,r,n-1)])[0],U([x(e-1,r-1,n-1)])[0],p),u=D(U([x(e-1,r,n-0)])[0],U([x(e-1,r-1,n-0)])[0],p),f()),d&&(s=D(U([x(e-0,r-0,n)])[0],U([x(e-0,r-0,n-1)])[0],d),l=D(U([x(e-0,r-1,n)])[0],U([x(e-0,r-1,n-1)])[0],d),c=D(U([x(e-1,r-1,n)])[0],U([x(e-1,r-1,n-1)])[0],d),u=D(U([x(e-1,r-0,n)])[0],U([x(e-1,r-0,n-1)])[0],d),f())}function Z(t,e,r,n,i,a,o,l,c,u,f,h){var p=t;h?(s&&\"even\"===t&&(p=null),G(p,e,r,n,i,a,o,l,c,u,f)):(s&&\"odd\"===t&&(p=null),G(p,c,l,o,a,i,n,r,e,u,f))}function $(t,e,r,n){for(var i=0;i<e.length;i++)for(var a=e[i],o=1;o<y;o++)for(var s=1;s<m;s++)Y(t,x(a,s-1,o-1),x(a,s-1,o),x(a,s,o-1),x(a,s,o),r,n,(a+s+o)%2)}function J(t,e,r,n){for(var i=0;i<e.length;i++)for(var a=e[i],o=1;o<v;o++)for(var s=1;s<y;s++)Y(t,x(o-1,a,s-1),x(o,a,s-1),x(o-1,a,s),x(o,a,s),r,n,(o+a+s)%2)}function K(t,e,r,n){for(var i=0;i<e.length;i++)for(var a=e[i],o=1;o<m;o++)for(var s=1;s<v;s++)Y(t,x(s-1,o-1,a),x(s-1,o,a),x(s,o-1,a),x(s,o,a),r,n,(s+o+a)%2)}function Q(t,e,r){for(var n=1;n<y;n++)for(var i=1;i<m;i++)for(var a=1;a<v;a++)Z(t,x(a-1,i-1,n-1),x(a-1,i-1,n),x(a-1,i,n-1),x(a-1,i,n),x(a,i-1,n-1),x(a,i-1,n),x(a,i,n-1),x(a,i,n),e,r,(a+i+n)%2)}function tt(t,e,r){s=!0,Q(t,e,r),s=!1}function et(t,e,r,n,i){for(var a=0;a<e.length;a++)for(var o=e[a],s=1;s<y;s++)for(var l=1;l<m;l++)X(t,o,l,s,r,n,i[a])}function rt(t,e,r,n,i){for(var a=0;a<e.length;a++)for(var o=e[a],s=1;s<v;s++)for(var l=1;l<y;l++)X(t,s,o,l,r,n,i[a])}function nt(t,e,r,n,i){for(var a=0;a<e.length;a++)for(var o=e[a],s=1;s<m;s++)for(var l=1;l<v;l++)X(t,l,s,o,r,n,i[a])}function it(t,e){for(var r=[],n=t;n<e;n++)r.push(n);return r}return function(){if(z(),function(){for(var e=0;e<v;e++)for(var r=0;r<m;r++)for(var n=0;n<y;n++){var i=x(e,r,n);O(t.x[i],t.y[i],t.z[i],t.value[i])}}(),i&&o&&(P(o),c=!0,Q(null,S,C),c=!1),n&&a){P(a);for(var e=t.surface.pattern,r=t.surface.count,s=0;s<r;s++){var l=1===r?.5:s/(r-1),A=(1-l)*S+l*C,E=Math.abs(A-M),L=Math.abs(A-T),I=E>L?[M,A]:[A,T];tt(e,I[0],I[1])}}var D=[[Math.min(S,T),Math.max(S,T)],[Math.min(M,C),Math.max(M,C)]];[\"x\",\"y\",\"z\"].forEach(function(e){for(var r=0;r<D.length;r++){u=0!==r;var n=D[r][0],i=D[r][1],a=t.slices[e];if(a.show&&a.fill){P(a.fill);var o=[],s=[],l=[];if(a.locations.length)for(var c=0;c<a.locations.length;c++){var h=f(a.locations[c],\"x\"===e?p:\"y\"===e?d:g);0===h.distRatio?o.push(h.id):h.id>0&&(s.push(h.id),\"x\"===e?l.push([h.distRatio,0,0]):\"y\"===e?l.push([0,h.distRatio,0]):l.push([0,0,h.distRatio]))}else o=it(1,\"x\"===e?v-1:\"y\"===e?m-1:y-1);s.length>0&&(\"x\"===e?et(null,s,n,i,l):\"y\"===e?rt(null,s,n,i,l):nt(null,s,n,i,l)),o.length>0&&(\"x\"===e?$(null,o,n,i):\"y\"===e?J(null,o,n,i):K(null,o,n,i))}var x=t.caps[e];x.show&&x.fill&&(P(x.fill),\"x\"===e?$(null,[0,v-1],n,i):\"y\"===e?J(null,[0,m-1],n,i):K(null,[0,y-1],n,i))}}),0===h&&z(),t._x=b,t._y=_,t._z=w,t._intensity=k,t._Xs=p,t._Ys=d,t._Zs=g}(),t}(t);var s={positions:o(n(r.xaxis,t._x,e.dataScale[0],t.xcalendar),n(r.yaxis,t._y,e.dataScale[1],t.ycalendar),n(r.zaxis,t._z,e.dataScale[2],t.zcalendar)),cells:o(t._i,t._j,t._k),lightPosition:[t.lightposition.x,t.lightposition.y,t.lightposition.z],ambient:t.lighting.ambient,diffuse:t.lighting.diffuse,specular:t.lighting.specular,roughness:t.lighting.roughness,fresnel:t.lighting.fresnel,vertexNormalsEpsilon:t.lighting.vertexnormalsepsilon,faceNormalsEpsilon:t.lighting.facenormalsepsilon,opacity:1,contourEnable:t.contour.show,contourColor:a(t.contour.color).slice(0,3),contourWidth:t.contour.width,useFacetNormals:t.flatshading};s.vertexIntensity=t._intensity,s.vertexIntensityBounds=[t.cmin,t.cmax],s.colormap=i(t),this.mesh.update(s)},u.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}},{\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../lib/str2rgbarray\":717,\"../../plots/gl3d/zip3\":796,\"gl-mesh3d\":270}],988:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,n){return i.coerce(t,e,o,r,n)}var c=l(\"isomin\"),u=l(\"isomax\");null!=u&&null!=c&&c>u&&(e.isomin=null,e.isomax=null);var f=l(\"x\"),h=l(\"y\"),p=l(\"z\"),d=l(\"value\");f&&f.length&&h&&h.length&&p&&p.length&&d&&d.length?(n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],s),[\"x\",\"y\",\"z\"].forEach(function(t){var e=\"caps.\"+t;l(e+\".show\")&&l(e+\".fill\");var r=\"slices.\"+t;l(r+\".show\")&&(l(r+\".fill\"),l(r+\".locations\"))}),l(\"spaceframe.show\")&&l(\"spaceframe.fill\"),l(\"surface.show\")&&(l(\"surface.count\"),l(\"surface.fill\"),l(\"surface.pattern\")),l(\"contour.show\")&&(l(\"contour.color\"),l(\"contour.width\")),[\"text\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\"].forEach(function(t){l(t)}),a(t,e,s,l,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"../../registry\":825,\"./attributes\":985}],989:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.colorbar={min:\"cmin\",max:\"cmax\"},n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"isosurface\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\"],n.meta={},e.exports=n},{\"../../plots/gl3d\":785,\"./attributes\":985,\"./calc\":986,\"./convert\":987,\"./defaults\":988}],990:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../components/colorbar/attributes\"),a=t(\"../surface/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../lib/extend\").extendFlat;e.exports=s({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{colorbar:i,opacity:a.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:s({},a.contours.x.show,{}),color:a.contours.x.color,width:a.contours.x.width,editType:\"calc\"},lightposition:{x:s({},a.lightposition.x,{dflt:1e5}),y:s({},a.lightposition.y,{dflt:1e5}),z:s({},a.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:s({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},a.lighting),hoverinfo:s({},o.hoverinfo,{editType:\"calc\"})})},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../surface/attributes\":1134}],991:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":579}],992:[function(t,e,r){\"use strict\";var n=t(\"gl-mesh3d\"),i=t(\"delaunay-triangulate\"),a=t(\"alpha-shape\"),o=t(\"convex-hull\"),s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../plots/gl3d/zip3\");function u(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var f=u.prototype;function h(t){for(var e=[],r=t.length,n=0;n<r;n++)e[n]=l(t[n]);return e}function p(t,e,r,n){for(var i=[],a=e.length,o=0;o<a;o++)i[o]=t.d2l(e[o],0,n)*r;return i}function d(t){for(var e=[],r=t.length,n=0;n<r;n++)e[n]=Math.round(t[n]);return e}function g(t,e){for(var r=t.length,n=0;n<r;n++)if(t[n]<=-.5||t[n]>=e-.5)return!1;return!0}f.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},f.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,u=t.x.length,f=c(p(r.xaxis,t.x,e.dataScale[0],t.xcalendar),p(r.yaxis,t.y,e.dataScale[1],t.ycalendar),p(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!g(t.i,u)||!g(t.j,u)||!g(t.k,u))return;n=c(d(t.i),d(t.j),d(t.k))}else n=0===t.alphahull?o(f):t.alphahull>0?a(t.alphahull,f):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;o<a;o++)n[o]=[e[o][(r+1)%3],e[o][(r+2)%3]];return i(n)}(t.delaunayaxis,f);var v={positions:f,cells:n,lightPosition:[t.lightposition.x,t.lightposition.y,t.lightposition.z],ambient:t.lighting.ambient,diffuse:t.lighting.diffuse,specular:t.lighting.specular,roughness:t.lighting.roughness,fresnel:t.lighting.fresnel,vertexNormalsEpsilon:t.lighting.vertexnormalsepsilon,faceNormalsEpsilon:t.lighting.facenormalsepsilon,opacity:t.opacity,contourEnable:t.contour.show,contourColor:l(t.contour.color).slice(0,3),contourWidth:t.contour.width,useFacetNormals:t.flatshading};t.intensity?(this.color=\"#fff\",v.vertexIntensity=t.intensity,v.vertexIntensityBounds=[t.cmin,t.cmax],v.colormap=s(t)):t.vertexcolor?(this.color=t.vertexcolor[0],v.vertexColors=h(t.vertexcolor)):t.facecolor?(this.color=t.facecolor[0],v.cellColors=h(t.facecolor)):(this.color=t.color,v.meshColor=l(t.color)),this.mesh.update(v)},f.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new u(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}},{\"../../lib/gl_format_color\":691,\"../../lib/str2rgbarray\":717,\"../../plots/gl3d/zip3\":796,\"alpha-shape\":53,\"convex-hull\":119,\"delaunay-triangulate\":151,\"gl-mesh3d\":270}],993:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,n){return i.coerce(t,e,o,r,n)}function c(t){var e=t.map(function(t){var e=l(t);return e&&i.isArrayOrTypedArray(e)?e:null});return e.every(function(t){return t&&t.length===e[0].length})&&e}c([\"x\",\"y\",\"z\"])?(c([\"i\",\"j\",\"k\"]),(!e.i||e.j&&e.k)&&(!e.j||e.k&&e.i)&&(!e.k||e.i&&e.j)?(n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],s),[\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"contour.show\",\"contour.color\",\"contour.width\",\"colorscale\",\"reversescale\",\"flatshading\",\"alphahull\",\"delaunayaxis\",\"opacity\"].forEach(function(t){l(t)}),\"intensity\"in t?(l(\"intensity\"),a(t,e,s,l,{prefix:\"\",cLetter:\"c\"})):(e.showscale=!1,\"facecolor\"in t?l(\"facecolor\"):\"vertexcolor\"in t?l(\"vertexcolor\"):l(\"color\",r)),l(\"text\"),e._length=null):e.visible=!1):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"../../registry\":825,\"./attributes\":990}],994:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.colorbar={min:\"cmin\",max:\"cmax\"},n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"mesh3d\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\"],n.meta={},e.exports=n},{\"../../plots/gl3d\":785,\"./attributes\":990,\"./calc\":991,\"./convert\":992,\"./defaults\":993}],995:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").extendFlat,i=t(\"../scatter/attributes\"),a=t(\"../../components/drawing/attributes\").dash,o=t(\"../../components/fx/attributes\"),s=i.line;function l(t){return{line:{color:n({},s.color,{dflt:t}),width:s.width,dash:a,editType:\"style\"},editType:\"style\"}}e.exports={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},open:{valType:\"data_array\",editType:\"calc\"},high:{valType:\"data_array\",editType:\"calc\"},low:{valType:\"data_array\",editType:\"calc\"},close:{valType:\"data_array\",editType:\"calc\"},line:{width:n({},s.width,{}),dash:n({},a,{}),editType:\"style\"},increasing:l(\"#3D9970\"),decreasing:l(\"#FF4136\"),text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},tickwidth:{valType:\"number\",min:0,max:.5,dflt:.3,editType:\"calc\"},hoverlabel:n({},o.hoverlabel,{split:{valType:\"boolean\",dflt:!1,editType:\"style\"}})}},{\"../../components/drawing/attributes\":591,\"../../components/fx/attributes\":601,\"../../lib\":694,\"../scatter/attributes\":1047}],996:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=n._,a=t(\"../../plots/cartesian/axes\"),o=t(\"../../constants/numerical\").BADNUM;function s(t,e,r,n){return{o:t,h:e,l:r,c:n}}function l(t,e,r,s,l){for(var c=s.makeCalcdata(e,\"open\"),u=s.makeCalcdata(e,\"high\"),f=s.makeCalcdata(e,\"low\"),h=s.makeCalcdata(e,\"close\"),p=Array.isArray(e.text),d=!0,g=null,v=[],m=0;m<r.length;m++){var y=r[m],x=c[m],b=u[m],_=f[m],w=h[m];if(y!==o&&x!==o&&b!==o&&_!==o&&w!==o){w===x?null!==g&&w!==g&&(d=w>g):d=w>x,g=w;var k=l(x,b,_,w);k.pos=y,k.yc=(x+w)/2,k.i=m,k.dir=d?\"increasing\":\"decreasing\",p&&(k.tx=e.text[m]),v.push(k)}else v.push({empty:!0})}return e._extremes[s._id]=a.findExtremes(s,n.concat(f,u),{padded:!0}),v.length&&(v[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),v}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),o=function(t,e,r){var i=r._minDiff;if(!i){var a,o=t._fullData,s=[];for(i=1/0,a=0;a<o.length;a++){var l=o[a];if(\"ohlc\"===l.type&&!0===l.visible&&l.xaxis===e._id){s.push(l);var c=e.makeCalcdata(l,\"x\");l._xcalc=c;var u=n.distinctVals(c).minDiff;u&&isFinite(u)&&(i=Math.min(i,u))}}for(i===1/0&&(i=1),a=0;a<s.length;a++)s[a]._minDiff=i}return i*r.tickwidth}(t,r,e),c=e._minDiff;e._minDiff=null;var u=e._xcalc;e._xcalc=null;var f=l(t,e,u,i,s);return e._extremes[r._id]=a.findExtremes(r,u,{vpad:c/2}),f.length?(n.extendFlat(f[0].t,{wHover:c/2,tickLen:o}),f):[{t:{empty:!0}}]},calcCommon:l}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axes\":742}],997:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./ohlc_defaults\"),a=t(\"./attributes\");function o(t,e,r,n){r(n+\".line.color\"),r(n+\".line.width\",e.line.width),r(n+\".line.dash\",e.line.dash)}e.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,a,r,i)}i(t,e,l,s)?(l(\"line.width\"),l(\"line.dash\"),o(t,e,l,\"increasing\"),o(t,e,l,\"decreasing\"),l(\"text\"),l(\"tickwidth\"),s._requestRangeslider[e.xaxis]=!0):e.visible=!1}},{\"../../lib\":694,\"./attributes\":995,\"./ohlc_defaults\":1e3}],998:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../components/fx\"),o=t(\"../../components/color\"),s=t(\"../scatter/fill_hover_text\"),l={increasing:\"\\u25b2\",decreasing:\"\\u25bc\"};function c(t,e,r,n){var i,s,l=t.cd,c=t.xa,u=l[0].trace,f=l[0].t,h=u.type,p=\"ohlc\"===h?\"l\":\"min\",d=\"ohlc\"===h?\"h\":\"max\",g=f.bPos||0,v=function(t){return t.pos+g-e},m=f.bdPos||f.tickLen,y=f.wHover,x=Math.min(1,m/Math.abs(c.r2c(c.range[1])-c.r2c(c.range[0])));function b(t){var e=v(t);return a.inbox(e-y,e+y,i)}function _(t){var e=t[p],n=t[d];return e===n||a.inbox(e-r,n-r,i)}function w(t){return(b(t)+_(t))/2}i=t.maxHoverDistance-x,s=t.maxSpikeDistance-x;var k=a.getDistanceFunction(n,b,_,w);if(a.getClosest(l,k,t),!1===t.index)return null;var A=l[t.index],M=u[A.dir],T=M.line.color;return o.opacity(T)&&M.line.width?t.color=T:t.color=M.fillcolor,t.x0=c.c2p(A.pos+g-m,!0),t.x1=c.c2p(A.pos+g+m,!0),t.xLabelVal=A.pos,t.spikeDistance=w(A)*s/i,t.xSpike=c.c2p(A.pos,!0),t}function u(t,e,r,a){var o=t.cd,s=t.ya,l=o[0].trace,u=o[0].t,f=[],h=c(t,e,r,a);if(!h)return[];var p=o[h.index].hi||l.hoverinfo,d=p.split(\"+\");if(!(\"all\"===p||-1!==d.indexOf(\"y\")))return[];for(var g=[\"high\",\"open\",\"close\",\"low\"],v={},m=0;m<g.length;m++){var y,x=g[m],b=l[x][h.index],_=s.c2p(b,!0);b in v?(y=v[b]).yLabel+=\"<br>\"+u.labels[x]+n.hoverLabelText(s,b):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=u.labels[x]+n.hoverLabelText(s,b),y.name=\"\",f.push(y),v[b]=y)}return f}function f(t,e,r,i){var a=t.cd,o=t.ya,u=a[0].trace,f=a[0].t,h=c(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function v(t){return f.labels[t]+n.hoverLabelText(o,u[t][d])}var m=p.hi||u.hoverinfo,y=m.split(\"+\"),x=\"all\"===m,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[v(\"open\"),v(\"high\"),v(\"low\"),v(\"close\")+\"  \"+l[g]]:[];return _&&s(p,u,w),h.extraText=w.join(\"<br>\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?u(t,e,r,n):f(t,e,r,n)},hoverSplit:u,hoverOnPoints:f}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../scatter/fill_hover_text\":1055}],999:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":754,\"./attributes\":995,\"./calc\":996,\"./defaults\":997,\"./hover\":998,\"./plot\":1001,\"./select\":1002,\"./style\":1003}],1000:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":694,\"../../registry\":825}],1001:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.xaxis,s=e.yaxis;i.makeTraceGroups(a,r,\"trace ohlc\").each(function(t){var r=n.select(this),a=t[0],l=a.t,c=a.trace;if(e.isRangePlot||(a.node3=r),!0!==c.visible||l.empty)r.remove();else{var u=l.tickLen,f=r.selectAll(\"path\").data(i.identity);f.enter().append(\"path\"),f.exit().remove(),f.attr(\"d\",function(t){if(t.empty)return\"M0,0Z\";var e=o.c2p(t.pos,!0),r=o.c2p(t.pos-u,!0),n=o.c2p(t.pos+u,!0);return\"M\"+r+\",\"+s.c2p(t.o,!0)+\"H\"+e+\"M\"+e+\",\"+s.c2p(t.h,!0)+\"V\"+s.c2p(t.l,!0)+\"M\"+n+\",\"+s.c2p(t.c,!0)+\"H\"+e})}})}},{\"../../lib\":694,d3:149}],1002:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r<n.length;r++)n[r].selected=0;else for(r=0;r<n.length;r++){var l=n[r];e.contains([i.c2p(l.pos+s),a.c2p(l.yc)],null,l.i,t)?(o.push({pointNumber:l.i,x:i.c2d(l.pos),y:a.c2d(l.yc)}),l.selected=1):l.selected=0}return o}},{}],1003:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/drawing\"),a=t(\"../../components/color\");e.exports=function(t,e){var r=e?e[0].node3:n.select(t).selectAll(\"g.ohlclayer\").selectAll(\"g.trace\");r.style(\"opacity\",function(t){return t[0].trace.opacity}),r.each(function(t){var e=t[0].trace;n.select(this).selectAll(\"path\").each(function(t){if(!t.empty){var r=e[t.dir].line;n.select(this).style(\"fill\",\"none\").call(a.stroke,r.color).call(i.dashLine,r.dash,r.width).style(\"opacity\",e.selectedpoints&&!t.selected?.3:1)}})})}},{\"../../components/color\":571,\"../../components/drawing\":592,d3:149}],1004:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat,i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../components/colorscale/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../scatter/attributes\").line,c=t(\"../../components/colorbar/attributes\"),u=n({editType:\"calc\"},o(\"line\",{editType:\"calc\"}),{showscale:l.showscale,colorbar:c,shape:{valType:\"enumerated\",values:[\"linear\",\"hspline\"],dflt:\"linear\",editType:\"plot\"}});e.exports={domain:s({name:\"parcats\",trace:!0,editType:\"calc\"}),hoverinfo:n({},i.hoverinfo,{flags:[\"count\",\"probability\"],editType:\"plot\",arrayOk:!1}),hoveron:{valType:\"enumerated\",values:[\"category\",\"color\",\"dimension\"],dflt:\"category\",editType:\"plot\"},arrangement:{valType:\"enumerated\",values:[\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"perpendicular\",editType:\"plot\"},bundlecolors:{valType:\"boolean\",dflt:!0,editType:\"plot\"},sortpaths:{valType:\"enumerated\",values:[\"forward\",\"backward\"],dflt:\"forward\",editType:\"plot\"},labelfont:a({editType:\"calc\"}),tickfont:a({editType:\"calc\"}),dimensions:{_isLinkedToArray:\"dimension\",label:{valType:\"string\",editType:\"calc\"},categoryorder:{valType:\"enumerated\",values:[\"trace\",\"category ascending\",\"category descending\",\"array\"],dflt:\"trace\",editType:\"calc\"},categoryarray:{valType:\"data_array\",editType:\"calc\"},ticktext:{valType:\"data_array\",editType:\"calc\"},values:{valType:\"data_array\",dflt:[],editType:\"calc\"},displayindex:{valType:\"integer\",editType:\"calc\"},editType:\"calc\",visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"}},line:u,counts:{valType:\"number\",min:0,dflt:1,arrayOk:!0,editType:\"calc\"},customdata:void 0,hoverlabel:void 0,ids:void 0,legendgroup:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../../plots/domain\":768,\"../../plots/font_attributes\":769,\"../scatter/attributes\":1047}],1005:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getModuleCalcData,i=t(\"./plot\");r.name=\"parcats\",r.plot=function(t,e,r,a){var o=n(t.calcdata,\"parcats\");if(o.length){var s=o[0];i(t,s,r,a)}},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcats\"),a=e._has&&e._has(\"parcats\");i&&!a&&n._paperdiv.selectAll(\".parcats\").remove()}},{\"../../plots/get_data\":779,\"./plot\":1010}],1006:[function(t,e,r){\"use strict\";var n=t(\"../../lib/gup\").wrap,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/calc\"),o=t(\"../../lib/filter_unique.js\"),s=t(\"../../components/drawing\"),l=t(\"../../lib\");function c(t,e,r){t.valueInds.push(e),t.count+=r}function u(t,e,r){t.valueInds.push(e),t.count+=r}e.exports=function(t,e){var r=l.filterVisible(e.dimensions);if(0===r.length)return[];var f,h,p,d=r.map(function(t){var e;return\"trace\"===t.categoryorder?e=null:\"array\"===t.categoryorder?e=t.categoryarray:(e=o(t.values).sort(),\"category descending\"===t.categoryorder&&(e=e.reverse())),function(t,e){e=null==e?[]:e.map(function(t){return t});var r={},n={},i=[];e.forEach(function(t,e){r[t]=0,n[t]=e});for(var a=0;a<t.length;a++){var o,s=t[a];void 0===r[s]?(r[s]=1,o=e.push(s)-1,n[s]=o):(r[s]++,o=n[s]),i.push(o)}var l=e.map(function(t){return r[t]});return{uniqueValues:e,uniqueCounts:l,inds:i}}(t.values,e)});f=l.isArrayOrTypedArray(e.counts)?e.counts:[e.counts],function(t){var e;if(function(t){for(var e=new Array(t.length),r=0;r<t.length;r++){if(t[r]<0||t[r]>=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map(function(t){return t.displayindex})))for(e=0;e<t.length;e++)t[e]._displayindex=t[e].displayindex;else for(e=0;e<t.length;e++)t[e]._displayindex=e}(r),r.forEach(function(t,e){!function(t,e){t._categoryarray=e.uniqueValues,null===t.ticktext||void 0===t.ticktext?t._ticktext=[]:t._ticktext=t.ticktext.slice();for(var r=t._ticktext.length;r<e.uniqueValues.length;r++)t._ticktext.push(e.uniqueValues[r])}(t,d[e])});var g,v=e.line;v?(i(e,\"line\")&&a(t,e,{vals:e.line.color,containerStr:\"line\",cLetter:\"c\"}),g=s.tryColorscale(v)):g=l.identity;var m,y,x,b,_=r[0].values.length,w={},k=d.map(function(t){return t.inds});for(p=0,m=0;m<_;m++){var A=[];for(y=0;y<k.length;y++)A.push(k[y][m]);h=f[m%f.length],p+=h;var M=(x=m,b=void 0,b=l.isArrayOrTypedArray(v.color)?v.color[x%v.color.length]:v.color,{color:g(b),rawColor:b}),T=A+\"-\"+M.rawColor;void 0===w[T]&&(w[T]={categoryInds:A,color:M.color,rawColor:M.rawColor,valueInds:[],count:0}),u(w[T],m,h)}var S,C=r.map(function(t,e){return r=e,n=t._index,i=t._displayindex,a=t.label,{dimensionInd:r,containerInd:n,displayInd:i,dimensionLabel:a,count:p,categories:[],dragX:null};var r,n,i,a});for(m=0;m<_;m++)for(h=f[m%f.length],y=0;y<C.length;y++){var E=C[y].containerInd,L=d[y].inds[m],z=C[y].categories;if(void 0===z[L]){var O=e.dimensions[E]._categoryarray[L],I=e.dimensions[E]._ticktext[L];z[L]={dimensionInd:y,categoryInd:S=L,categoryValue:O,displayInd:S,categoryLabel:I,valueInds:[],count:0,dragY:null}}c(z[L],m,h)}return n(function(t,e,r){var n=t.map(function(t){return t.categories.length}).reduce(function(t,e){return Math.max(t,e)});return{dimensions:t,paths:e,trace:void 0,maxCats:n,count:r}}(C,w,p))}},{\"../../components/colorscale/calc\":579,\"../../components/colorscale/helpers\":582,\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/filter_unique.js\":685,\"../../lib/gup\":692}],1007:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../plots/domain\").defaults,s=t(\"../../plots/array_container_defaults\"),l=t(\"./attributes\"),c=t(\"../parcoords/merge_length\");function u(t,e){function r(r,i){return n.coerce(t,e,l.dimensions,r,i)}var i=r(\"values\"),a=r(\"visible\");if(i&&i.length||(a=e.visible=!1),a){r(\"label\"),r(\"displayindex\",e._index);var o,s=t.categoryarray,c=Array.isArray(s)&&s.length>0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var v={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",v)}},{\"../../components/colorscale/defaults\":581,\"../../components/colorscale/helpers\":582,\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/domain\":768,\"../parcoords/merge_length\":1019,\"./attributes\":1004}],1008:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.colorbar={container:\"line\",min:\"cmin\",max:\"cmax\"},n.moduleType=\"trace\",n.name=\"parcats\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"noOpacity\"],n.meta={},e.exports=n},{\"./attributes\":1004,\"./base_plot\":1005,\"./calc\":1006,\"./defaults\":1007,\"./plot\":1010}],1009:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../plot_api/plot_api\"),a=t(\"../../components/fx\"),o=t(\"../../lib\"),s=t(\"../../components/drawing\"),l=t(\"tinycolor2\"),c=t(\"../../lib/svg_text_utils\");function u(t,e,r,i){var a=t.map(function(t,e,r){var n,i=r[0],a=e.margin||{l:80,r:80,t:100,b:80},o=i.trace,s=o.domain,l=e.width,c=e.height,u=Math.floor(l*(s.x[1]-s.x[0])),f=Math.floor(c*(s.y[1]-s.y[0])),h=s.x[0]*l+a.l,p=e.height-s.y[1]*e.height+a.t,d=o.line.shape;n=\"all\"===o.hoverinfo?[\"count\",\"probability\"]:o.hoverinfo.split(\"+\");var g={key:o.uid,model:i,x:h,y:p,width:u,height:f,hoveron:o.hoveron,hoverinfoItems:n,arrangement:o.arrangement,bundlecolors:o.bundlecolors,sortpaths:o.sortpaths,labelfont:o.labelfont,categorylabelfont:o.tickfont,pathShape:d,dragDimension:null,margin:a,paths:[],dimensions:[],graphDiv:t,traceSelection:null,pathSelection:null,dimensionSelection:null};i.dimensions&&(R(g),P(g));return g}.bind(0,e,r)),l=i.selectAll(\"g.parcatslayer\").data([null]);l.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=l.selectAll(\"g.trace.parcats\").data(a,f),v=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",function(t){return\"translate(\"+t.x+\", \"+t.y+\")\"}),v.append(\"g\").attr(\"class\",\"paths\");var x=u.select(\"g.paths\").selectAll(\"path.path\").data(function(t){return t.paths},f);x.attr(\"fill\",function(t){return t.model.color});var w=x.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",function(t){return t.model.color}).attr(\"fill-opacity\",0);y(w),x.attr(\"d\",function(t){return t.svgD}),w.empty()||x.sort(p),x.exit().remove(),x.on(\"mouseover\",d).on(\"mouseout\",g).on(\"click\",m),v.append(\"g\").attr(\"class\",\"dimensions\");var k=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data(function(t){return t.dimensions},f);k.enter().append(\"g\").attr(\"class\",\"dimension\"),k.attr(\"transform\",function(t){return\"translate(\"+t.x+\", 0)\"}),k.exit().remove();var A=k.selectAll(\"g.category\").data(function(t){return t.categories},f),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",function(t){return\"translate(0, \"+t.y+\")\"}),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",function(t){return t.width}).attr(\"height\",function(t){return t.height}),b(M);var z=A.selectAll(\"rect.bandrect\").data(function(t){return t.bands},f);z.each(function(){o.raiseToTop(this)}),z.attr(\"fill\",function(t){return t.color});var O=z.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",function(t){return t.color}).attr(\"fill-opacity\",0);z.attr(\"fill\",function(t){return t.color}).attr(\"width\",function(t){return t.width}).attr(\"height\",function(t){return t.height}).attr(\"y\",function(t){return t.y}).attr(\"cursor\",function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"}),_(O),z.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var I=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",function(t){return h(t)?\"start\":\"end\"}).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",I+\" -1px  1px 2px, \"+I+\" 1px  1px 2px, \"+I+\"  1px -1px 2px, \"+I+\" -1px -1px 2px\").style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",function(t){return h(t)?t.width+5:-5}).attr(\"y\",function(t){return t.height/2}).text(function(t){return t.model.categoryLabel}).each(function(t){s.font(n.select(this),t.parcatsViewModel.categorylabelfont),c.convertToTspans(n.select(this),e)}),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"}).attr(\"x\",function(t){return t.width/2}).attr(\"y\",-5).text(function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null}).each(function(t){s.font(n.select(this),t.parcatsViewModel.labelfont)}),A.selectAll(\"rect.bandrect\").on(\"mouseover\",T).on(\"mouseout\",S),A.exit().remove(),k.call(n.behavior.drag().origin(function(t){return{x:t.x,y:0}}).on(\"dragstart\",C).on(\"drag\",E).on(\"dragend\",L)),u.each(function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")}),u.exit().remove()}function f(t){return t.key}function h(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function p(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor<e.model.rawColor?-1:0}function d(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){o.raiseToTop(this),x(n.select(this));var e=v(t);if(t.parcatsViewModel.graphDiv.emit(\"plotly_hover\",{points:e,event:n.event}),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\")){var r,i,s,c=n.mouse(this)[0],u=t.parcatsViewModel.graphDiv,f=u._fullLayout,h=f._paperdiv.node().getBoundingClientRect(),p=t.parcatsViewModel.graphDiv.getBoundingClientRect();for(s=0;s<t.leftXs.length-1;s++)if(t.leftXs[s]+t.dimWidths[s]-2<=c&&c<=t.leftXs[s+1]+2){var d=t.parcatsViewModel.dimensions[s],g=t.parcatsViewModel.dimensions[s+1];r=(d.x+d.width+g.x)/2,i=(t.topYs[s]+t.topYs[s+1]+t.height)/2;break}var m=t.parcatsViewModel.x+r,y=t.parcatsViewModel.y+i,b=l.mostReadable(t.model.color,[\"black\",\"white\"]),_=[];-1!==t.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&_.push([\"Count:\",t.model.count].join(\" \")),-1!==t.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&_.push([\"P:\",(t.model.count/t.parcatsViewModel.model.count).toFixed(3)].join(\" \"));var w=_.join(\"<br>\"),k=n.mouse(u)[0];a.loneHover({x:m-h.left+p.left,y:y-h.top+p.top,text:w,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:b,idealAlign:k<m?\"right\":\"left\"},{container:f._hoverlayer.node(),outerContainer:f._paper.node(),gd:u})}}}function g(t){if(!t.parcatsViewModel.dragDimension&&(y(n.select(this)),a.loneUnhover(t.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node()),t.parcatsViewModel.pathSelection.sort(p),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\"))){var e=v(t);t.parcatsViewModel.graphDiv.emit(\"plotly_unhover\",{points:e,event:n.event})}}function v(t){for(var e=[],r=z(t.parcatsViewModel),n=0;n<t.model.valueInds.length;n++){var i=t.model.valueInds[n];e.push({curveNumber:r,pointNumber:i})}return e}function m(t){if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){var e=v(t);t.parcatsViewModel.graphDiv.emit(\"plotly_click\",{points:e,event:n.event})}}function y(t){t.attr(\"fill\",function(t){return t.model.color}).attr(\"fill-opacity\",.6).attr(\"stroke\",\"lightgray\").attr(\"stroke-width\",.2).attr(\"stroke-opacity\",1)}function x(t){t.attr(\"fill-opacity\",.8).attr(\"stroke\",function(t){return l.mostReadable(t.model.color,[\"black\",\"white\"])}).attr(\"stroke-width\",.3)}function b(t){t.select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",1).attr(\"stroke-opacity\",1)}function _(t){t.attr(\"stroke\",\"black\").attr(\"stroke-width\",.2).attr(\"stroke-opacity\",1).attr(\"fill-opacity\",1)}function w(t){var e=t.parcatsViewModel.pathSelection,r=t.categoryViewModel.model.dimensionInd,n=t.categoryViewModel.model.categoryInd;return e.filter(function(e){return e.model.categoryInds[r]===n&&e.model.color===t.color})}function k(t,e,r){var i=n.select(t).datum().parcatsViewModel.graphDiv,a=n.select(t.parentNode).selectAll(\"rect.bandrect\"),o=[];a.each(function(t){w(t).each(function(t){Array.prototype.push.apply(o,v(t))})}),i.emit(e,{points:o,event:r})}function A(t,e,r){var i=n.select(t).datum(),a=i.parcatsViewModel.graphDiv,o=w(i),s=[];o.each(function(t){Array.prototype.push.apply(s,v(t))}),a.emit(e,{points:s,event:r})}function M(t,e){var r,i,a=n.select(e.parentNode).select(\"rect.catrect\"),o=a.node().getBoundingClientRect(),s=a.datum(),l=s.parcatsViewModel,c=l.model.dimensions[s.model.dimensionInd],u=o.top+o.height/2;l.dimensions.length>1&&c.displayInd===l.dimensions.length-1?(r=o.left,i=\"left\"):(r=o.left+o.width,i=\"right\");var f=[];-1!==s.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&f.push([\"Count:\",s.model.count].join(\" \")),-1!==s.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&f.push([\"P(\"+s.model.categoryLabel+\"):\",(s.model.count/s.parcatsViewModel.model.count).toFixed(3)].join(\" \"));var h=f.join(\"<br>\");return{x:r-t.left,y:u-t.top,text:h,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:i}}function T(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,s=i._paperdiv.node().getBoundingClientRect(),c=t.parcatsViewModel.hoveron;if(\"color\"===c?(!function(t){var e=n.select(t).datum(),r=w(e);x(r),r.each(function(){o.raiseToTop(this)}),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter(function(t){return t.color===e.color}).each(function(){o.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)})}(this),A(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each(function(t){var e=w(t);x(e),e.each(function(){o.raiseToTop(this)})}),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),k(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===c?e=M(s,this):\"color\"===c?e=function(t,e){var r,i,a=e.getBoundingClientRect(),o=n.select(e).datum(),s=o.categoryViewModel,c=s.parcatsViewModel,u=c.model.dimensions[s.model.dimensionInd],f=a.y+a.height/2;c.dimensions.length>1&&u.displayInd===c.dimensions.length-1?(r=a.left,i=\"left\"):(r=a.left+a.width,i=\"right\");var h=s.model.categoryLabel,p=o.parcatsViewModel.model.count,d=0;o.categoryViewModel.bands.forEach(function(t){t.color===o.color&&(d+=t.count)});var g=s.model.count,v=0;c.pathSelection.each(function(t){t.model.color===o.color&&(v+=t.model.count)});var m=[];if(-1!==s.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&m.push([\"Count:\",d].join(\" \")),-1!==s.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")){var y=\"P(color \\u2229 \"+h+\"): \"+(d/p).toFixed(3);m.push(y);var x=\"P(\"+h+\" | color): \"+(d/v).toFixed(3);m.push(x);var b=\"P(color | \"+h+\"): \"+(d/g).toFixed(3);m.push(b)}var _=m.join(\"<br>\"),w=l.mostReadable(o.color,[\"black\",\"white\"]);return{x:r-t.left,y:f-t.top,text:_,color:o.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:w,fontSize:10,idealAlign:i}}(s,this):\"dimension\"===c&&(e=function(t,e){var r=[];return n.select(e.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each(function(){r.push(M(t,this))}),r}(s,this)),e&&a.multiHovers(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function S(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(y(e.pathSelection),b(e.dimensionSelection.selectAll(\"g.category\")),_(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),a.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(p),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?A(this,\"plotly_unhover\",n.event):k(this,\"plotly_unhover\",n.event)}}function C(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each(function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map(function(t){return t.displayInd}),e.model.dragY=e.y,o.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each(function(e){e.y<i&&i<=e.y+e.height&&(t.potentialClickBand=this)}))}),t.parcatsViewModel.dragDimension=t,a.loneUnhover(t.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node()))}function E(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragHasMoved=!0,null!==t.dragDimensionDisplayInd)){var e=t.dragDimensionDisplayInd,r=e-1,i=e+1,a=t.parcatsViewModel.dimensions[e];if(null!==t.dragCategoryDisplayInd){var o=a.categories[t.dragCategoryDisplayInd];o.model.dragY+=n.event.dy;var s=o.model.dragY,l=o.model.displayInd,c=a.categories,u=c[l-1],f=c[l+1];void 0!==u&&s<u.y+u.height/2&&(o.model.displayInd=u.model.displayInd,u.model.displayInd=l),void 0!==f&&s+o.height>f.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragX<h.x+h.width&&(a.model.displayInd=h.model.displayInd,h.model.displayInd=e),void 0!==p&&a.model.dragX+a.width>p.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}R(t.parcatsViewModel),P(t.parcatsViewModel),I(t.parcatsViewModel),O(t.parcatsViewModel)}}function L(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),a=t.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),o=t.initialDragDimensionDisplayInds.some(function(t,e){return t!==a[e]});o&&a.forEach(function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r});var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map(function(t){return t.displayInd});if(s=t.initialDragCategoryDisplayInds.some(function(t,e){return t!==l[e]})){var c=t.model.categories.slice().sort(function(t,e){return t.displayInd-e.displayInd}),u=c.map(function(t){return t.categoryValue}),f=c.map(function(t){return t.categoryLabel});e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?A(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):k(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,R(t.parcatsViewModel),P(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each(function(){I(t.parcatsViewModel,!0),O(t.parcatsViewModel,!0)}).each(\"end\",function(){(o||s)&&i.restyle(t.parcatsViewModel.graphDiv,e,[r])})}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n<r.length;n++)if(t.key===r[n].uid){e=n;break}return e}function O(t,e){var r;void 0===e&&(e=!1),t.pathSelection.data(function(t){return t.paths},f),(r=t.pathSelection,e?r.transition():r).attr(\"d\",function(t){return t.svgD})}function I(t,e){function r(t){return e?t.transition():t}void 0===e&&(e=!1),t.dimensionSelection.data(function(t){return t.dimensions},f);var i=t.dimensionSelection.selectAll(\"g.category\").data(function(t){return t.categories},f);r(t.dimensionSelection).attr(\"transform\",function(t){return\"translate(\"+t.x+\", 0)\"}),r(i).attr(\"transform\",function(t){return\"translate(0, \"+t.y+\")\"}),i.select(\".dimlabel\").text(function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null}),i.select(\".catlabel\").attr(\"text-anchor\",function(t){return h(t)?\"start\":\"end\"}).attr(\"x\",function(t){return h(t)?t.width+5:-5}).each(function(t){var e,r;h(t)?(e=t.width+5,r=\"start\"):(e=-5,r=\"end\"),n.select(this).selectAll(\"tspan\").attr(\"x\",e).attr(\"text-anchor\",r)});var a=i.selectAll(\"rect.bandrect\").data(function(t){return t.bands},f),s=a.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"cursor\",\"move\").attr(\"stroke-opacity\",0).attr(\"fill\",function(t){return t.color}).attr(\"fill-opacity\",0);a.attr(\"fill\",function(t){return t.color}).attr(\"width\",function(t){return t.width}).attr(\"height\",function(t){return t.height}).attr(\"y\",function(t){return t.y}),_(s),a.each(function(){o.raiseToTop(this)}),a.exit().remove()}function D(t,e,r,i,a){var o,s,l=[],c=[];for(s=0;s<r.length-1;s++)o=n.interpolateNumber(r[s]+t[s],t[s+1]),l.push(o(a)),c.push(o(1-a));var u=\"M \"+t[0]+\",\"+e[0];for(u+=\"l\"+r[0]+\",0 \",s=1;s<r.length;s++)u+=\"C\"+l[s-1]+\",\"+e[s-1]+\" \"+c[s-1]+\",\"+e[s]+\" \"+t[s]+\",\"+e[s],u+=\"l\"+r[s]+\",0 \";for(u+=\"l0,\"+i+\" \",u+=\"l -\"+r[r.length-1]+\",0 \",s=r.length-2;s>=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+i)+\" \"+l[s]+\",\"+(e[s]+i)+\" \"+(t[s]+r[s])+\",\"+(e[s]+i),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function P(t){var e=t.dimensions,r=t.model,n=e.map(function(t){return t.categories.map(function(t){return t.y})}),i=t.model.dimensions.map(function(t){return t.categories.map(function(t){return t.displayInd})}),a=t.model.dimensions.map(function(t){return t.displayInd}),o=t.dimensions.map(function(t){return t.model.dimensionInd}),s=e.map(function(t){return t.x}),l=e.map(function(t){return t.width}),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map(function(t,e){return i[e][t]});return o.map(function(t){return e[t]})}c.sort(function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),n<i?-1:n>i?1:0});for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map(function(t){return t.height}).reduce(function(t,e){return t+e}),g=0;g<c.length;g++){var v,m=c[g];v=p>0?d*(m.count/p):0;for(var y,x=new Array(n.length),b=0;b<m.categoryInds.length;b++){var _=m.categoryInds[b],w=i[b][_],k=a[b];x[k]=n[k][w],n[k][w]+=v;var A=t.dimensions[k].categories[w],M=A.bands.length,T=A.bands[M-1];if(void 0===T||m.rawColor!==T.rawColor){var S=void 0===T?0:T.y+T.height;A.bands.push({key:S,color:m.color,rawColor:m.rawColor,height:v,width:A.width,count:m.count,y:S,categoryViewModel:A,parcatsViewModel:t})}else{var C=A.bands[M-1];C.height+=v,C.count+=m.count}}y=\"hspline\"===t.pathShape?D(s,x,l,v,.5):D(s,x,l,v,0),h[g]={key:m.valueInds[0],model:m,height:v,leftXs:s,topYs:x,dimWidths:l,svgD:y,parcatsViewModel:t}}t.paths=h}function R(t){var e=t.model.dimensions.map(function(t){return{displayInd:t.displayInd,dimensionInd:t.dimensionInd}});e.sort(function(t,e){return t.displayInd-e.displayInd});var r=[];for(var n in e){var i=e[n].dimensionInd,a=t.model.dimensions[i];r.push(F(t,a))}t.dimensions=r}function F(t,e){var r,n=t.model.dimensions.length,i=e.displayInd;r=40+(n>1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,v=e.categories.map(function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}});for(v.sort(function(t,e){return t.displayInd-e.displayInd}),c=0;c<h;c++)l=v[c].categoryInd,o=e.categories[l],a=p>0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){u(r,t,n,e)}},{\"../../components/drawing\":592,\"../../components/fx\":610,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"../../plot_api/plot_api\":729,d3:149,tinycolor2:515}],1010:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":1009}],1011:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../components/colorbar/attributes\"),a=t(\"../../plots/cartesian/layout_attributes\"),o=t(\"../../plots/font_attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:s({name:\"parcoords\",trace:!0,editType:\"calc\"}),hoverlabel:void 0,labelfont:o({editType:\"calc\"}),tickfont:o({editType:\"calc\"}),rangefont:o({editType:\"calc\"}),dimensions:c(\"dimension\",{label:{valType:\"string\",editType:\"calc\"},tickvals:l({},a.tickvals,{editType:\"calc\"}),ticktext:l({},a.ticktext,{editType:\"calc\"}),tickformat:{valType:\"string\",dflt:\"3s\",editType:\"calc\"},visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"calc\"},{valType:\"number\",editType:\"calc\"}],editType:\"calc\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"number\",editType:\"calc\"},{valType:\"number\",editType:\"calc\"}],editType:\"calc\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:l(n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}),{colorbar:i,editType:\"calc\"})}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/layout_attributes\":755,\"../../plots/domain\":768,\"../../plots/font_attributes\":769}],1012:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=n.bar.snapRatio;function c(t,e){return t*(1-l)+e*l}var u=n.bar.snapClose;function f(t,e){return t*(1-u)+e*u}function h(t,e,r){if(d(e,r))return e;for(var n=t[0],i=n,a=1;a<t.length;a++){var o=t[a];if(e<f(n,o))return c(n,i);if(e<o||a===t.length-1)return c(o,n);i=n,n=o}}function p(t,e,r){if(d(e,r))return e;for(var n=t[t.length-1],i=n,a=t.length-2;a>=0;a--){var o=t[a];if(e>f(n,o))return c(n,i);if(e>o||a===t.length-1)return c(o,n);i=n,n=o}}function d(t,e){for(var r=0;r<e.length;r++)if(t>=e[r][0]&&t<=e[r][1])return!0;return!1}function g(t){t.attr(\"x\",-n.bar.captureWidth/2).attr(\"width\",n.bar.captureWidth)}function v(t){t.attr(\"visibility\",\"visible\").style(\"visibility\",\"visible\").attr(\"fill\",\"yellow\").attr(\"opacity\",0)}function m(t){if(!t.brush.filterSpecified)return\"0,\"+t.height;for(var e,r,n,i=y(t.brush.filter.getConsolidated(),t.height),a=[0],o=i.length?i[0][0]:null,s=0;s<i.length;s++)r=(e=i[s])[1]-e[0],a.push(o),a.push(r),(n=s+1)<i.length&&(o=i[n][0]-e[1]);return a.push(t.height),a}function y(t,e){return t.map(function(t){return t.map(function(t){return t*e}).sort(s)})}function x(){i.select(document.body).style(\"cursor\",null)}function b(t){t.attr(\"stroke-dasharray\",m)}function _(t,e){var r=i.select(t).selectAll(\".highlight, .highlight-shadow\");b(e?r.transition().duration(n.bar.snapDuration).each(\"end\",e):r)}function w(t,e){var r,i=t.brush,a=NaN,o={};if(i.filterSpecified){var s=t.height,l=i.filter.getConsolidated(),c=y(l,s),u=NaN,f=NaN,h=NaN;for(r=0;r<=c.length;r++){var p=c[r];if(p&&p[0]<=e&&e<=p[1]){u=r;break}if(f=r?r-1:NaN,p&&p[0]>e){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]<c[h][0]-e?f:h),!isNaN(a)){var d=c[a],g=function(t,e){var r=n.bar.handleHeight;if(!(e>t[1]+r||e<t[0]-r))return e>=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var v=t.unitTickvals,m=t.unitToPaddedPx.invert(e);for(r=0;r<v.length;r++){var x=[.25*v[Math.max(r-1,0)]+.75*v[r],.25*v[Math.min(r+1,v.length-1)]+.75*v[r]];if(m>=x[0]&&m<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function k(t){t.on(\"mousemove\",function(t){if(i.event.preventDefault(),!t.parent.inBrushDrag){var e=w(t,t.height-i.mouse(this)[1]-2*n.verticalPadding),r=\"crosshair\";e.clickableOrdinalRange?r=\"pointer\":e.region&&(r=e.region+\"-resize\"),i.select(document.body).style(\"cursor\",r)}}).on(\"mouseleave\",function(t){t.parent.inBrushDrag||x()}).call(i.behavior.drag().on(\"dragstart\",function(t){i.event.sourceEvent.stopPropagation();var e=t.height-i.mouse(this)[1]-2*n.verticalPadding,r=t.unitToPaddedPx.invert(e),a=t.brush,o=w(t,e),s=o.interval,l=a.svgBrush;if(l.wasDragged=!1,l.grabbingBar=\"ns\"===o.region,l.grabbingBar){var c=s.map(t.unitToPaddedPx);l.grabPoint=e-c[0]-n.verticalPadding,l.barLength=c[1]-c[0]}l.clickableOrdinalRange=o.clickableOrdinalRange,l.stayingIntervals=t.multiselect&&a.filterSpecified?a.filter.getConsolidated():[],s&&(l.stayingIntervals=l.stayingIntervals.filter(function(t){return t[0]!==s[0]&&t[1]!==s[1]})),l.startExtent=o.region?s[\"s\"===o.region?1:0]:r,t.parent.inBrushDrag=!0,l.brushStartCallback()}).on(\"drag\",function(t){i.event.sourceEvent.stopPropagation();var e=t.height-i.mouse(this)[1]-2*n.verticalPadding,r=t.brush.svgBrush;r.wasDragged=!0,r.grabbingBar?r.newExtent=[e-r.grabPoint,e+r.barLength-r.grabPoint].map(t.unitToPaddedPx.invert):r.newExtent=[r.startExtent,t.unitToPaddedPx.invert(e)].sort(s);var a=Math.max(0,-r.newExtent[0]),o=Math.max(0,r.newExtent[1]-1);r.newExtent[0]+=a,r.newExtent[1]-=o,r.grabbingBar&&(r.newExtent[1]+=a,r.newExtent[0]-=o),t.brush.filterSpecified=!0,r.extent=r.stayingIntervals.concat([r.newExtent]),r.brushCallback(t),_(this.parentNode)}).on(\"dragend\",function(t){i.event.sourceEvent.stopPropagation();var e=t.brush,r=e.filter,n=e.svgBrush,a=n.grabbingBar;if(n.grabbingBar=!1,n.grabLocation=void 0,t.parent.inBrushDrag=!1,x(),!n.wasDragged)return n.wasDragged=void 0,n.clickableOrdinalRange?e.filterSpecified&&t.multiselect?n.extent.push(n.clickableOrdinalRange):(n.extent=[n.clickableOrdinalRange],e.filterSpecified=!0):a?(n.extent=n.stayingIntervals,0===n.extent.length&&M(e)):M(e),n.brushCallback(t),_(this.parentNode),void n.brushEndCallback(e.filterSpecified?r.getConsolidated():[]);var o=function(){r.set(r.getConsolidated())};if(t.ordinal){var s=t.unitTickvals;s[s.length-1]<s[0]&&s.reverse(),n.newExtent=[h(s,n.newExtent[0],n.stayingIntervals),p(s,n.newExtent[1],n.stayingIntervals)];var l=n.newExtent[1]>n.newExtent[0];n.extent=n.stayingIntervals.concat(l?[n.newExtent]:[]),n.extent.length||M(e),n.brushCallback(t),l?_(this.parentNode,o):(o(),_(this.parentNode))}else o();n.brushEndCallback(e.filterSpecified?r.getConsolidated():[])}))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[0,1]]}function T(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){r=n.map(function(t){return t.slice().sort(s)}).sort(A),t=T(r),e=r.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map(function(t){return t.slice()})}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t){var e=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);e.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t){var e=t.selectAll(\".background\").data(o);e.enter().append(\"rect\").classed(\"background\",!0).call(g).call(v).style(\"pointer-events\",\"auto\").attr(\"transform\",\"translate(0 \"+n.verticalPadding+\")\"),e.call(k).attr(\"height\",function(t){return t.height-n.verticalPadding});var r=t.selectAll(\".highlight-shadow\").data(o);r.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",n.bar.strokeColor).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),r.attr(\"y1\",function(t){return t.height}).call(b);var i=t.selectAll(\".highlight\").data(o);i.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",function(t){return t.height}).call(b)}(e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map(function(t){return t.sort(s)}),t=e.multiselect?T(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map(function(t){var e=[h(r,t[0],[]),p(r,t[1],[])];if(e[1]>e[0])return e}).filter(function(t){return t})).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":694,\"../../lib/gup\":692,\"./constants\":1015,d3:149}],1013:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter(function(t,e){return e===r.size()-1}).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each(function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.width,height:this.height})}),window.setTimeout(function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")},60)}},{\"../../constants/xmlns_namespaces\":672,\"../../plots/get_data\":779,\"./plot\":1021,d3:149}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../../lib\"),o=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r=!!e.line.colorscale&&a.isArrayOrTypedArray(e.line.color),s=r?e.line.color:function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=.5;return e}(e._length),l=r?e.line.colorscale:[[0,e.line.color],[1,e.line.color]];return n(e,\"line\")&&i(t,e,{vals:s,containerStr:\"line\",cLetter:\"c\"}),o({lineColor:s,cscale:l})}},{\"../../components/colorscale/calc\":579,\"../../components/colorscale/helpers\":582,\"../../lib\":694,\"../../lib/gup\":692}],1015:[function(t,e,r){\"use strict\";e.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:[\"contextLineLayer\",\"focusLineLayer\",\"pickLineLayer\"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:\"magenta\",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeColor:\"white\",strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:\"axis-extent-text\",parcoordsLineLayers:\"parcoords-line-layers\",parcoordsLineLayer:\"parcoords-lines\",parcoords:\"parcoords\",parcoordsControlView:\"parcoords-control-view\",yAxis:\"y-axis\",axisOverlays:\"axis-overlays\",axis:\"axis\",axisHeading:\"axis-heading\",axisTitle:\"axis-title\",axisExtent:\"axis-extent\",axisExtentTop:\"axis-extent-top\",axisExtentTopText:\"axis-extent-top-text\",axisExtentBottom:\"axis-extent-bottom\",axisExtentBottomText:\"axis-extent-bottom-text\",axisBrush:\"axis-brush\"},id:{filterBarPattern:\"filter-bar-pattern\"}}},{}],1016:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../plots/domain\").defaults,s=t(\"../../plots/array_container_defaults\"),l=t(\"./attributes\"),c=t(\"./axisbrush\"),u=t(\"./constants\").maxDimensionCount,f=t(\"./merge_length\");function h(t,e){function r(r,i){return n.coerce(t,e,l.dimensions,r,i)}var i=r(\"values\"),a=r(\"visible\");if(i&&i.length||(a=e.visible=!1),a){r(\"label\"),r(\"tickvals\"),r(\"ticktext\"),r(\"tickformat\"),r(\"range\"),r(\"multiselect\");var o=r(\"constraintrange\");o&&(e.constraintrange=c.cleanRanges(o,e))}}e.exports=function(t,e,r,c){function p(r,i){return n.coerce(t,e,l,r,i)}var d=t.dimensions;Array.isArray(d)&&d.length>u&&(n.log(\"parcoords traces support up to \"+u+\" dimensions at the moment\"),d.splice(u));var g=s(t,e,{name:\"dimensions\",handleItemDefaults:h}),v=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,c,p);o(e,c,p),Array.isArray(g)&&g.length||(e.visible=!1),f(e,g,\"values\",v);var m={family:c.font.family,size:Math.round(c.font.size/1.2),color:c.font.color};n.coerceFont(p,\"labelfont\",m),n.coerceFont(p,\"tickfont\",m),n.coerceFont(p,\"rangefont\",m)}},{\"../../components/colorscale/defaults\":581,\"../../components/colorscale/helpers\":582,\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../../plots/domain\":768,\"./attributes\":1011,\"./axisbrush\":1012,\"./constants\":1015,\"./merge_length\":1019}],1017:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.colorbar={container:\"line\",min:\"cmin\",max:\"cmax\"},n.moduleType=\"trace\",n.name=\"parcoords\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"gl\",\"regl\",\"noOpacity\"],n.meta={},e.exports=n},{\"./attributes\":1011,\"./base_plot\":1013,\"./calc\":1014,\"./defaults\":1016,\"./plot\":1021}],1018:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec4 p0, p1, p2, p3,\\n               p4, p5, p6, p7,\\n               p8, p9, pa, pb,\\n               pc, pd, pe;\\n\\nattribute vec4 pf;\\n\\nuniform mat4 dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\\n             loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution,\\n             viewBoxPosition,\\n             viewBoxSize;\\n\\nuniform sampler2D palette;\\nuniform sampler2D mask;\\nuniform float maskHeight;\\n\\nuniform vec2 colorClamp;\\n\\nvarying vec4 fragColor;\\n\\nvec4 unit_1 = vec4(1, 1, 1, 1);\\n\\nfloat val(mat4 p, mat4 v) {\\n    return dot(matrixCompMult(p, v) * unit_1, unit_1);\\n}\\n\\nfloat axisY(\\n        float x,\\n        mat4 d[4],\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D\\n    ) {\\n\\n    float y1 = val(d[0], dim1A) + val(d[1], dim1B) + val(d[2], dim1C) + val(d[3], dim1D);\\n    float y2 = val(d[0], dim2A) + val(d[1], dim2B) + val(d[2], dim2C) + val(d[3], dim2D);\\n    return y1 * (1.0 - x) + y2 * x;\\n}\\n\\nconst int bitsPerByte = 8;\\n\\nint mod2(int a) {\\n    return a - 2 * (a / 2);\\n}\\n\\nint mod8(int a) {\\n    return a - 8 * (a / 8);\\n}\\n\\nvec4 zero = vec4(0, 0, 0, 0);\\nvec4 unit_0 = vec4(1, 1, 1, 1);\\nvec2 xyProjection = vec2(1, 1);\\n\\nmat4 mclamp(mat4 m, mat4 lo, mat4 hi) {\\n    return mat4(clamp(m[0], lo[0], hi[0]),\\n                clamp(m[1], lo[1], hi[1]),\\n                clamp(m[2], lo[2], hi[2]),\\n                clamp(m[3], lo[3], hi[3]));\\n}\\n\\nbool mshow(mat4 p, mat4 lo, mat4 hi) {\\n    return mclamp(p, lo, hi) == p;\\n}\\n\\nbool withinBoundingBox(\\n        mat4 d[4],\\n        mat4 loA, mat4 hiA, mat4 loB, mat4 hiB, mat4 loC, mat4 hiC, mat4 loD, mat4 hiD\\n    ) {\\n\\n    return mshow(d[0], loA, hiA) &&\\n           mshow(d[1], loB, hiB) &&\\n           mshow(d[2], loC, hiC) &&\\n           mshow(d[3], loD, hiD);\\n}\\n\\nbool withinRasterMask(mat4 d[4], sampler2D mask, float height) {\\n    bool result = true;\\n    int bitInByteStepper;\\n    float valY, valueY, scaleX;\\n    int hit, bitmask, valX;\\n    for(int i = 0; i < 4; i++) {\\n        for(int j = 0; j < 4; j++) {\\n            for(int k = 0; k < 4; k++) {\\n                bitInByteStepper = mod8(j * 4 + k);\\n                valX = i * 2 + j / 2;\\n                valY = d[i][j][k];\\n                valueY = valY * (height - 1.0) + 0.5;\\n                scaleX = (float(valX) + 0.5) / 8.0;\\n                hit = int(texture2D(mask, vec2(scaleX, (valueY + 0.5) / height))[3] * 255.0) / int(pow(2.0, float(bitInByteStepper)));\\n                result = result && mod2(hit) == 1;\\n            }\\n        }\\n    }\\n    return result;\\n}\\n\\nvec4 position(\\n        float depth,\\n        vec2 resolution, vec2 viewBoxPosition, vec2 viewBoxSize,\\n        mat4 dims[4],\\n        float signum,\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D,\\n        mat4 loA, mat4 hiA, mat4 loB, mat4 hiB, mat4 loC, mat4 hiC, mat4 loD, mat4 hiD,\\n        sampler2D mask, float maskHeight\\n    ) {\\n\\n    float x = 0.5 * signum + 0.5;\\n    float y = axisY(x, dims, dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D);\\n\\n    float show = float(\\n                            withinBoundingBox(dims, loA, hiA, loB, hiB, loC, hiC, loD, hiD)\\n                         && withinRasterMask(dims, mask, maskHeight)\\n                      );\\n\\n    vec2 viewBoxXY = viewBoxPosition + viewBoxSize * vec2(x, y);\\n    float depthOrHide = depth + 2.0 * (1.0 - show);\\n\\n    return vec4(\\n        xyProjection * (2.0 * viewBoxXY / resolution - 1.0),\\n        depthOrHide,\\n        1.0\\n    );\\n}\\n\\nvoid main() {\\n\\n    float prominence = abs(pf[3]);\\n\\n    mat4 p[4];\\n    p[0] = mat4(p0, p1, p2, p3);\\n    p[1] = mat4(p4, p5, p6, p7);\\n    p[2] = mat4(p8, p9, pa, pb);\\n    p[3] = mat4(pc, pd, pe, abs(pf));\\n\\n    gl_Position = position(\\n        1.0 - prominence,\\n        resolution, viewBoxPosition, viewBoxSize,\\n        p,\\n        sign(pf[3]),\\n        dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\\n        loA, hiA, loB, hiB, loC, hiC, loD, hiD,\\n        mask, maskHeight\\n    );\\n\\n    float clampedColorIndex = clamp((prominence - colorClamp[0]) / (colorClamp[1] - colorClamp[0]), 0.0, 1.0);\\n    fragColor = texture2D(palette, vec2((clampedColorIndex * 255.0 + 0.5) / 256.0, 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec4 p0, p1, p2, p3,\\n               p4, p5, p6, p7,\\n               p8, p9, pa, pb,\\n               pc, pd, pe;\\n\\nattribute vec4 pf;\\n\\nuniform mat4 dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D;\\n\\nuniform vec2 resolution,\\n             viewBoxPosition,\\n             viewBoxSize;\\n\\nuniform sampler2D palette;\\n\\nuniform vec2 colorClamp;\\n\\nvarying vec4 fragColor;\\n\\nvec2 xyProjection = vec2(1, 1);\\n\\nvec4 unit = vec4(1, 1, 1, 1);\\n\\nfloat val(mat4 p, mat4 v) {\\n    return dot(matrixCompMult(p, v) * unit, unit);\\n}\\n\\nfloat axisY(\\n        float x,\\n        mat4 d[4],\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D\\n    ) {\\n\\n    float y1 = val(d[0], dim1A) + val(d[1], dim1B) + val(d[2], dim1C) + val(d[3], dim1D);\\n    float y2 = val(d[0], dim2A) + val(d[1], dim2B) + val(d[2], dim2C) + val(d[3], dim2D);\\n    return y1 * (1.0 - x) + y2 * x;\\n}\\n\\nvec4 position(\\n        float depth,\\n        vec2 resolution, vec2 viewBoxPosition, vec2 viewBoxSize,\\n        mat4 dims[4],\\n        float signum,\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D\\n    ) {\\n\\n    float x = 0.5 * signum + 0.5;\\n    float y = axisY(x, dims, dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D);\\n\\n    vec2 viewBoxXY = viewBoxPosition + viewBoxSize * vec2(x, y);\\n\\n    return vec4(\\n        xyProjection * (2.0 * viewBoxXY / resolution - 1.0),\\n        depth,\\n        1.0\\n    );\\n}\\n\\nvoid main() {\\n\\n    float prominence = abs(pf[3]);\\n\\n    mat4 p[4];\\n    p[0] = mat4(p0, p1, p2, p3);\\n    p[1] = mat4(p4, p5, p6, p7);\\n    p[2] = mat4(p8, p9, pa, pb);\\n    p[3] = mat4(pc, pd, pe, abs(pf));\\n\\n    gl_Position = position(\\n        1.0 - prominence,\\n        resolution, viewBoxPosition, viewBoxSize,\\n        p,\\n        sign(pf[3]),\\n        dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D\\n    );\\n\\n    float clampedColorIndex = clamp((prominence - colorClamp[0]) / (colorClamp[1] - colorClamp[0]), 0.0, 1.0);\\n    fragColor = texture2D(palette, vec2((clampedColorIndex * 255.0 + 0.5) / 256.0, 0.5));\\n}\\n\"]),o=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec4 p0, p1, p2, p3,\\n               p4, p5, p6, p7,\\n               p8, p9, pa, pb,\\n               pc, pd, pe;\\n\\nattribute vec4 pf;\\n\\nuniform mat4 dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\\n             loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution,\\n             viewBoxPosition,\\n             viewBoxSize;\\n\\nuniform sampler2D mask;\\nuniform float maskHeight;\\n\\nuniform vec2 colorClamp;\\n\\nvarying vec4 fragColor;\\n\\nvec4 unit_1 = vec4(1, 1, 1, 1);\\n\\nfloat val(mat4 p, mat4 v) {\\n    return dot(matrixCompMult(p, v) * unit_1, unit_1);\\n}\\n\\nfloat axisY(\\n        float x,\\n        mat4 d[4],\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D\\n    ) {\\n\\n    float y1 = val(d[0], dim1A) + val(d[1], dim1B) + val(d[2], dim1C) + val(d[3], dim1D);\\n    float y2 = val(d[0], dim2A) + val(d[1], dim2B) + val(d[2], dim2C) + val(d[3], dim2D);\\n    return y1 * (1.0 - x) + y2 * x;\\n}\\n\\nconst int bitsPerByte = 8;\\n\\nint mod2(int a) {\\n    return a - 2 * (a / 2);\\n}\\n\\nint mod8(int a) {\\n    return a - 8 * (a / 8);\\n}\\n\\nvec4 zero = vec4(0, 0, 0, 0);\\nvec4 unit_0 = vec4(1, 1, 1, 1);\\nvec2 xyProjection = vec2(1, 1);\\n\\nmat4 mclamp(mat4 m, mat4 lo, mat4 hi) {\\n    return mat4(clamp(m[0], lo[0], hi[0]),\\n                clamp(m[1], lo[1], hi[1]),\\n                clamp(m[2], lo[2], hi[2]),\\n                clamp(m[3], lo[3], hi[3]));\\n}\\n\\nbool mshow(mat4 p, mat4 lo, mat4 hi) {\\n    return mclamp(p, lo, hi) == p;\\n}\\n\\nbool withinBoundingBox(\\n        mat4 d[4],\\n        mat4 loA, mat4 hiA, mat4 loB, mat4 hiB, mat4 loC, mat4 hiC, mat4 loD, mat4 hiD\\n    ) {\\n\\n    return mshow(d[0], loA, hiA) &&\\n           mshow(d[1], loB, hiB) &&\\n           mshow(d[2], loC, hiC) &&\\n           mshow(d[3], loD, hiD);\\n}\\n\\nbool withinRasterMask(mat4 d[4], sampler2D mask, float height) {\\n    bool result = true;\\n    int bitInByteStepper;\\n    float valY, valueY, scaleX;\\n    int hit, bitmask, valX;\\n    for(int i = 0; i < 4; i++) {\\n        for(int j = 0; j < 4; j++) {\\n            for(int k = 0; k < 4; k++) {\\n                bitInByteStepper = mod8(j * 4 + k);\\n                valX = i * 2 + j / 2;\\n                valY = d[i][j][k];\\n                valueY = valY * (height - 1.0) + 0.5;\\n                scaleX = (float(valX) + 0.5) / 8.0;\\n                hit = int(texture2D(mask, vec2(scaleX, (valueY + 0.5) / height))[3] * 255.0) / int(pow(2.0, float(bitInByteStepper)));\\n                result = result && mod2(hit) == 1;\\n            }\\n        }\\n    }\\n    return result;\\n}\\n\\nvec4 position(\\n        float depth,\\n        vec2 resolution, vec2 viewBoxPosition, vec2 viewBoxSize,\\n        mat4 dims[4],\\n        float signum,\\n        mat4 dim1A, mat4 dim2A, mat4 dim1B, mat4 dim2B, mat4 dim1C, mat4 dim2C, mat4 dim1D, mat4 dim2D,\\n        mat4 loA, mat4 hiA, mat4 loB, mat4 hiB, mat4 loC, mat4 hiC, mat4 loD, mat4 hiD,\\n        sampler2D mask, float maskHeight\\n    ) {\\n\\n    float x = 0.5 * signum + 0.5;\\n    float y = axisY(x, dims, dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D);\\n\\n    float show = float(\\n                            withinBoundingBox(dims, loA, hiA, loB, hiB, loC, hiC, loD, hiD)\\n                         && withinRasterMask(dims, mask, maskHeight)\\n                      );\\n\\n    vec2 viewBoxXY = viewBoxPosition + viewBoxSize * vec2(x, y);\\n    float depthOrHide = depth + 2.0 * (1.0 - show);\\n\\n    return vec4(\\n        xyProjection * (2.0 * viewBoxXY / resolution - 1.0),\\n        depthOrHide,\\n        1.0\\n    );\\n}\\n\\nvoid main() {\\n\\n    float prominence = abs(pf[3]);\\n\\n    mat4 p[4];\\n    p[0] = mat4(p0, p1, p2, p3);\\n    p[1] = mat4(p4, p5, p6, p7);\\n    p[2] = mat4(p8, p9, pa, pb);\\n    p[3] = mat4(pc, pd, pe, abs(pf));\\n\\n    gl_Position = position(\\n        1.0 - prominence,\\n        resolution, viewBoxPosition, viewBoxSize,\\n        p,\\n        sign(pf[3]),\\n        dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\\n        loA, hiA, loB, hiB, loC, hiC, loD, hiD,\\n        mask, maskHeight\\n    );\\n\\n    fragColor = vec4(pf.rgb, 1.0);\\n}\\n\"]),s=n([\"precision lowp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n    gl_FragColor = fragColor;\\n}\\n\"]),l=t(\"../../lib\"),c=1e-6,u=1e-7,f=2048,h=64,p=2,d=4,g=8,v=h/g,m=[119,119,119],y=new Uint8Array(4),x=new Uint8Array(4),b={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function _(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function w(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:y})}(t),r.drawCompleted=!0),function s(l){var c;c=Math.min(n,i-l*n),a.offset=p*l*n,a.count=p*c,0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],_(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(e(a),l*n+c<i&&(r.currentRafs[o]=window.requestAnimationFrame(function(){s(l+1)})),r.drawCompleted=!1)}(0)}function k(t,e){return(t>>>8*e)%256/255}function A(t,e,r){var n,i,a,o=[];for(i=0;i<t;i++)for(a=0;a<p;a++)for(n=0;n<d;n++)o.push(e[i*h+r*d+n]),r*d+n===h-1&&a%2==0&&(o[o.length-1]*=-1);return o}e.exports=function(t,e){var r,n,p,d,y,M=e.context,T=e.pick,S=e.regl,C={currentRafs:{},drawCompleted:!0,clearOnly:!1},E=function(t){for(var e={},r=0;r<16;r++)e[\"p\"+r.toString(16)]=t.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array(0)});return e}(S),L=S.texture(b);O(e);var z=S({profile:!1,blend:{enable:M,func:{srcRGB:\"src alpha\",dstRGB:\"one minus src alpha\",srcAlpha:1,dstAlpha:1},equation:{rgb:\"add\",alpha:\"add\"},color:[0,0,0,0]},depth:{enable:!M,mask:!0,func:\"less\",range:[0,1]},cull:{enable:!0,face:\"back\"},scissor:{enable:!0,box:{x:S.prop(\"scissorX\"),y:S.prop(\"scissorY\"),width:S.prop(\"scissorWidth\"),height:S.prop(\"scissorHeight\")}},viewport:{x:S.prop(\"viewportX\"),y:S.prop(\"viewportY\"),width:S.prop(\"viewportWidth\"),height:S.prop(\"viewportHeight\")},dither:!1,vert:T?o:M?a:i,frag:s,primitive:\"lines\",lineWidth:1,attributes:E,uniforms:{resolution:S.prop(\"resolution\"),viewBoxPosition:S.prop(\"viewBoxPosition\"),viewBoxSize:S.prop(\"viewBoxSize\"),dim1A:S.prop(\"dim1A\"),dim2A:S.prop(\"dim2A\"),dim1B:S.prop(\"dim1B\"),dim2B:S.prop(\"dim2B\"),dim1C:S.prop(\"dim1C\"),dim2C:S.prop(\"dim2C\"),dim1D:S.prop(\"dim1D\"),dim2D:S.prop(\"dim2D\"),loA:S.prop(\"loA\"),hiA:S.prop(\"hiA\"),loB:S.prop(\"loB\"),hiB:S.prop(\"hiB\"),loC:S.prop(\"loC\"),hiC:S.prop(\"hiC\"),loD:S.prop(\"loD\"),hiD:S.prop(\"hiD\"),palette:L,mask:S.prop(\"maskTexture\"),maskHeight:S.prop(\"maskHeight\"),colorClamp:S.prop(\"colorClamp\")},offset:S.prop(\"offset\"),count:S.prop(\"count\")});function O(t){r=t.model,n=t.viewModel,p=n.dimensions.slice(),d=p[0]?p[0].values.length:0;var e=r.lines,i=T?e.color.map(function(t,r){return r/e.color.length}):e.color,a=Math.max(1/255,Math.pow(1/i.length,1/3)),o=function(t,e,r){for(var n,i=e.length,a=[],o=0;o<t;o++)for(var s=0;s<h;s++)a.push(s<i?e[s].paddedUnitValues[o]:s===h-1?(n=r[o],Math.max(c,Math.min(1-c,n))):s>=h-4?k(o,h-2-s):.5);return a}(d,p,i);!function(t,e,r){for(var n=0;n<16;n++)t[\"p\"+n.toString(16)](A(e,r,n))}(E,d,o),L=S.texture(l.extendFlat({data:function(t,e,r){for(var n=[],i=0;i<256;i++){var a=t(i/255);n.push((e?m:a).concat(r))}return n}(r.unitToColor,M,Math.round(255*(M?a:1)))},b))}var I=[0,1];var D=[];function P(t,e,n,i,a,o,s,c,u,f,h){var p,d,g,v,m=[t,e],y=[0,1].map(function(){return[0,1,2,3].map(function(){return new Float32Array(16)})});for(p=0;p<2;p++)for(v=m[p],d=0;d<4;d++)for(g=0;g<16;g++)y[p][d][g]=g+16*d===v?1:0;var x=r.lines.canvasOverdrag,b=r.domain,_=r.canvasWidth,w=r.canvasHeight;return l.extendFlat({key:s,resolution:[_,w],viewBoxPosition:[n+x,i],viewBoxSize:[a,o],i:t,ii:e,dim1A:y[0][0],dim1B:y[0][1],dim1C:y[0][2],dim1D:y[0][3],dim2A:y[1][0],dim2B:y[1][1],dim2C:y[1][2],dim2D:y[1][3],colorClamp:I,scissorX:(c===u?0:n+x)+(r.pad.l-x)+r.layoutWidth*b.x[0],scissorWidth:(c===f?_-n+x:a+.5)+(c===u?n+x:0),scissorY:i+r.pad.b+r.layoutHeight*b.y[0],scissorHeight:o,viewportX:r.pad.l-x+r.layoutWidth*b.x[0],viewportY:r.pad.b+r.layoutHeight*b.y[0],viewportWidth:_,viewportHeight:w},h)}return{setColorDomain:function(t){I[0]=t[0],I[1]=t[1]},render:function(t,e,n){var i,a,o,s=t.length,l=1/0,c=-1/0;for(i=0;i<s;i++)t[i].dim2.canvasX>c&&(c=t[i].dim2.canvasX,o=i),t[i].dim1.canvasX<l&&(l=t[i].dim1.canvasX,a=i);0===s&&_(S,0,0,r.canvasWidth,r.canvasHeight);var h=M?{}:function(){var t,e,r,n=[0,1].map(function(){return[0,1,2,3].map(function(){return new Float32Array(16)})});for(t=0;t<2;t++)for(e=0;e<4;e++)for(r=0;r<16;r++){var i,a=r+16*e;i=a<p.length?p[a].brush.filter.getBounds()[t]:t,n[t][e][r]=i+(2*t-1)*u}function o(t,e){var r=f-1;return[Math.max(0,Math.floor(e[0]*r)),Math.min(r,Math.ceil(e[1]*r))]}for(var s=Array.apply(null,new Array(f*v)).map(function(){return 255}),l=0;l<p.length;l++){var c=l%g,h=(l-c)/g,d=Math.pow(2,c),m=p[l],x=m.brush.filter.get();if(!(x.length<2))for(var b=o(0,x[0])[1],_=1;_<x.length;_++){for(var w=o(0,x[_]),k=b+1;k<w[0];k++)s[k*v+h]&=~d;b=Math.max(b,w[1])}}var A={shape:[v,f],format:\"alpha\",type:\"uint8\",mag:\"nearest\",min:\"nearest\",data:s};return y?y(A):y=S.texture(A),{maskTexture:y,maskHeight:f,loA:n[0][0],loB:n[0][1],loC:n[0][2],loD:n[0][3],hiA:n[1][0],hiB:n[1][1],hiC:n[1][2],hiD:n[1][3]}}();for(i=0;i<s;i++){var m=t[i],x=m.dim1,b=x.crossfilterDimensionIndex,k=m.canvasX,A=m.canvasY,T=m.dim2.crossfilterDimensionIndex,E=m.panelSizeX,L=m.panelSizeY,O=k+E;if(e||!D[b]||D[b][0]!==k||D[b][1]!==O){D[b]=[k,O];var I=P(b,T,k,A,E,L,x.crossfilterDimensionIndex,i,a,o,h);C.clearOnly=n,w(S,z,C,e?r.lines.blockLineCount:d,d,I)}}},readPixel:function(t,e){return S.read({x:t,y:e,width:1,height:1,data:x}),x},readPixels:function(t,e,r,n){var i=new Uint8Array(4*r*n);return S.read({x:t,y:e,width:r,height:n,data:i}),i},destroy:function(){for(var e in t.style[\"pointer-events\"]=\"none\",L.destroy(),y&&y.destroy(),E)E[e].destroy()},update:O}}},{\"../../lib\":694,glslify:395}],1019:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i,a;for(n||(n=1/0),i=0;i<e.length;i++)(a=e[i]).visible&&(n=Math.min(n,a[r].length));for(n===1/0&&(n=0),t._length=n,i=0;i<e.length;i++)(a=e[i]).visible&&(a._length=n);return n}},{}],1020:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../components/colorscale\"),s=t(\"../../lib/gup\"),l=s.keyFun,c=s.repeat,u=s.unwrap,f=t(\"./constants\"),h=t(\"./axisbrush\"),p=t(\"./lines\");function d(t){return!(\"visible\"in t)||t.visible}function g(t){var e=t.range?t.range[0]:i.aggNums(Math.min,null,t.values,t._length),r=t.range?t.range[1]:i.aggNums(Math.max,null,t.values,t._length);return!isNaN(e)&&isFinite(e)||(e=0),!isNaN(r)&&isFinite(r)||(r=0),e===r&&(0===e?(e-=1,r+=1):(e*=.9,r*=1.1)),[e,r]}function v(t){return t.dimensions.some(function(t){return t.brush.filterSpecified})}function m(t,e,r){var a=u(e),s=a.trace,l=a.lineColor,c=s.line,h=c.reversescale?o.flipScale(a.cscale):a.cscale,p=s.domain,v=s.dimensions,m=t.width,y=s.labelfont,x=s.tickfont,b=s.rangefont,_=i.extendDeepNoArrays({},c,{color:l.map(n.scale.linear().domain(g({values:l,range:[c.cmin,c.cmax],_length:s._length}))),blockLineCount:f.blockLineCount,canvasOverdrag:f.overdrag*f.canvasPixelRatio}),w=Math.floor(m*(p.x[1]-p.x[0])),k=Math.floor(t.height*(p.y[1]-p.y[0])),A=t.margin||{l:80,r:80,t:100,b:80},M=w,T=k;return{key:r,colCount:v.filter(d).length,dimensions:v,tickDistance:f.tickDistance,unitToColor:function(t){var e=t.map(function(t){return t[0]}),r=t.map(function(t){return n.rgb(t[1])}),i=\"rgb\".split(\"\").map(function(t){return n.scale.linear().clamp(!0).domain(e).range(r.map((i=t,function(t){return t[i]})));var i});return function(t){return i.map(function(e){return e(t)})}}(h),lines:_,labelFont:y,tickFont:x,rangeFont:b,layoutWidth:m,layoutHeight:t.height,domain:p,translateX:p.x[0]*m,translateY:t.height-p.y[1]*t.height,pad:A,canvasWidth:M*f.canvasPixelRatio+2*_.canvasOverdrag,canvasHeight:T*f.canvasPixelRatio,width:M,height:T,canvasPixelRatio:f.canvasPixelRatio}}function y(t,e,r){var a=r.width,o=r.height,s=r.dimensions,l=r.canvasPixelRatio,c=function(t){return a*t/Math.max(1,r.colCount-1)},u=f.verticalPadding/o,p=function(t,e){return n.scale.linear().range([e,t-e])}(o,f.verticalPadding),m={key:r.key,xScale:c,model:r,inBrushDrag:!1},y={};return m.dimensions=s.filter(d).map(function(a,s){var d=function(t,e){return n.scale.linear().domain(g(t)).range([e,1-e])}(a,u),x=y[a.label];y[a.label]=(x||0)+1;var b=a.label+(x?\"__\"+x:\"\"),_=a.constraintrange,w=_&&_.length;w&&!Array.isArray(_[0])&&(_=[_]);var k=w?_.map(function(t){return t.map(d)}):[[0,1]],A=a.values;A.length>a._length&&(A=A.slice(0,a._length));var M,T=a.tickvals;function S(t,e){return{val:t,text:M[e]}}function C(t,e){return t.val-e.val}if(Array.isArray(T)&&T.length){M=a.ticktext,Array.isArray(M)&&M.length?M.length>T.length?M=M.slice(0,T.length):T.length>M.length&&(T=T.slice(0,M.length)):M=T.map(n.format(a.tickformat));for(var E=1;E<T.length;E++)if(T[E]<T[E-1]){for(var L=T.map(S).sort(C),z=0;z<T.length;z++)T[z]=L[z].val,M[z]=L[z].text;break}}else T=void 0;return{key:b,label:a.label,tickFormat:a.tickformat,tickvals:T,ticktext:M,ordinal:!!T,multiselect:a.multiselect,xIndex:s,crossfilterDimensionIndex:s,visibleIndex:a._index,height:o,values:A,paddedUnitValues:A.map(d),unitTickvals:T&&T.map(d),xScale:c,x:c(s),canvasX:c(s)*l,unitToPaddedPx:p,domainScale:function(t,e,r,i,a){var o,s,l=g(r);return i?n.scale.ordinal().domain(i.map((o=n.format(r.tickformat),s=a,s?function(t,e){var r=s[e];return null==r?o(t):r}:o))).range(i.map(function(r){var n=(r-l[0])/(l[1]-l[0]);return t-e+n*(2*e-t)})):n.scale.linear().domain(l).range([t-e,e])}(o,f.verticalPadding,a,T,M),ordinalScale:function(t){if(t.tickvals){var e=g(t);return n.scale.ordinal().domain(t.tickvals).range(t.tickvals.map(function(t){return(t-e[0])/(e[1]-e[0])}))}}(a),parent:m,model:r,brush:h.makeBrush(t,w,k,function(){t.linePickActive(!1)},function(){var e=m;e.focusLayer&&e.focusLayer.render(e.panels,!0);var r=v(e);!t.contextShown()&&r?(e.contextLayer&&e.contextLayer.render(e.panels,!0),t.contextShown(!0)):t.contextShown()&&!r&&(e.contextLayer&&e.contextLayer.render(e.panels,!0,!0),t.contextShown(!1))},function(r){var n=m;if(n.focusLayer.render(n.panels,!0),n.pickLayer&&n.pickLayer.render(n.panels,!0),t.linePickActive(!0),e&&e.filterChanged){var o=d.invert,s=r.map(function(t){return t.map(o).sort(i.sorterAsc)}).sort(function(t,e){return t[0]-e[0]});e.filterChanged(n.key,a._index,s)}})}}),m}function x(t){t.classed(f.cn.axisExtentText,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"default\").style(\"user-select\",\"none\")}e.exports=function(t,e,r,o,s,d){var g,b,_=(g=!0,b=!1,{linePickActive:function(t){return arguments.length?g=!!t:g},contextShown:function(t){return arguments.length?b=!!t:b}}),w=o.filter(function(t){return u(t).trace.visible}).map(m.bind(0,s)).map(y.bind(0,_,d));r.each(function(t,e){return i.extendFlat(t,w[e])});var k=r.selectAll(\".gl-canvas\").each(function(t){t.viewModel=w[0],t.model=t.viewModel?t.viewModel.model:null}),A=null;k.filter(function(t){return t.pick}).style(\"pointer-events\",\"auto\").on(\"mousemove\",function(t){if(_.linePickActive()&&t.lineLayer&&d&&d.hover){var e=n.event,r=this.width,i=this.height,a=n.mouse(this),o=a[0],s=a[1];if(o<0||s<0||o>=r||s>=i)return;var l=t.lineLayer.readPixel(o,i-1-s),c=0!==l[3],u=c?l[2]+256*(l[1]+256*l[0]):null,f={x:o,y:s,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:u};u!==A&&(c?d.hover(f):d.unhover&&d.unhover(f),A=u)}}),k.style(\"opacity\",function(t){return t.pick?.01:1}),e.style(\"background\",\"rgba(255, 255, 255, 0)\");var M=e.selectAll(\".\"+f.cn.parcoords).data(w,l);M.exit().remove(),M.enter().append(\"g\").classed(f.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),M.attr(\"transform\",function(t){return\"translate(\"+t.model.translateX+\",\"+t.model.translateY+\")\"});var T=M.selectAll(\".\"+f.cn.parcoordsControlView).data(c,l);T.enter().append(\"g\").classed(f.cn.parcoordsControlView,!0),T.attr(\"transform\",function(t){return\"translate(\"+t.model.pad.l+\",\"+t.model.pad.t+\")\"});var S=T.selectAll(\".\"+f.cn.yAxis).data(function(t){return t.dimensions},l);function C(t,e){for(var r=e.panels||(e.panels=[]),n=t.data(),i=n.length-1,a=0;a<i;a++){var o=r[a]||(r[a]={}),s=n[a],l=n[a+1];o.dim1=s,o.dim2=l,o.canvasX=s.canvasX,o.panelSizeX=l.canvasX-s.canvasX,o.panelSizeY=e.model.canvasHeight,o.y=0,o.canvasY=0}}S.enter().append(\"g\").classed(f.cn.yAxis,!0),T.each(function(t){C(S,t)}),k.each(function(t){if(t.viewModel){!t.lineLayer||d?t.lineLayer=p(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||d;t.lineLayer.render(t.viewModel.panels,e)}}),S.attr(\"transform\",function(t){return\"translate(\"+t.xScale(t.xIndex)+\", 0)\"}),S.call(n.behavior.drag().origin(function(t){return t}).on(\"drag\",function(t){var e=t.parent;_.linePickActive(!1),t.x=Math.max(-f.overdrag,Math.min(t.model.width+f.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,S.sort(function(t,e){return t.x-e.x}).each(function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio}),C(S,e),S.filter(function(e){return 0!==Math.abs(t.xIndex-e.xIndex)}).attr(\"transform\",function(t){return\"translate(\"+t.xScale(t.xIndex)+\", 0)\"}),n.select(this).attr(\"transform\",\"translate(\"+t.x+\", 0)\"),S.each(function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)}),e.contextLayer&&e.contextLayer.render(e.panels,!1,!v(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)}).on(\"dragend\",function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,C(S,e),n.select(this).attr(\"transform\",function(t){return\"translate(\"+t.x+\", 0)\"}),e.contextLayer&&e.contextLayer.render(e.panels,!1,!v(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),_.linePickActive(!0),d&&d.axesMoved&&d.axesMoved(e.key,e.dimensions.map(function(t){return t.crossfilterDimensionIndex}))})),S.exit().remove();var E=S.selectAll(\".\"+f.cn.axisOverlays).data(c,l);E.enter().append(\"g\").classed(f.cn.axisOverlays,!0),E.selectAll(\".\"+f.cn.axis).remove();var L=E.selectAll(\".\"+f.cn.axis).data(c,l);L.enter().append(\"g\").classed(f.cn.axis,!0),L.each(function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat(t.ordinal?function(t){return t}:null).scale(r)),a.font(L.selectAll(\"text\"),t.model.tickFont)}),L.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),L.selectAll(\"text\").style(\"text-shadow\",\"1px 1px 1px #fff, -1px -1px 1px #fff, 1px -1px 1px #fff, -1px 1px 1px #fff\").style(\"cursor\",\"default\").style(\"user-select\",\"none\");var z=E.selectAll(\".\"+f.cn.axisHeading).data(c,l);z.enter().append(\"g\").classed(f.cn.axisHeading,!0);var O=z.selectAll(\".\"+f.cn.axisTitle).data(c,l);O.enter().append(\"text\").classed(f.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"user-select\",\"none\").style(\"pointer-events\",\"auto\"),O.attr(\"transform\",\"translate(0,\"+-f.axisTitleOffset+\")\").text(function(t){return t.label}).each(function(t){a.font(n.select(this),t.model.labelFont)});var I=E.selectAll(\".\"+f.cn.axisExtent).data(c,l);I.enter().append(\"g\").classed(f.cn.axisExtent,!0);var D=I.selectAll(\".\"+f.cn.axisExtentTop).data(c,l);D.enter().append(\"g\").classed(f.cn.axisExtentTop,!0),D.attr(\"transform\",\"translate(0,\"+-f.axisExtentOffset+\")\");var P=D.selectAll(\".\"+f.cn.axisExtentTopText).data(c,l);function R(t,e){if(t.ordinal)return\"\";var r=t.domainScale.domain();return n.format(t.tickFormat)(r[e?r.length-1:0])}P.enter().append(\"text\").classed(f.cn.axisExtentTopText,!0).call(x),P.text(function(t){return R(t,!0)}).each(function(t){a.font(n.select(this),t.model.rangeFont)});var F=I.selectAll(\".\"+f.cn.axisExtentBottom).data(c,l);F.enter().append(\"g\").classed(f.cn.axisExtentBottom,!0),F.attr(\"transform\",function(t){return\"translate(0,\"+(t.model.height+f.axisExtentOffset)+\")\"});var B=F.selectAll(\".\"+f.cn.axisExtentBottomText).data(c,l);B.enter().append(\"text\").classed(f.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(x),B.text(function(t){return R(t)}).each(function(t){a.font(n.select(this),t.model.rangeFont)}),h.ensureAxisBrush(E)}},{\"../../components/colorscale\":583,\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/gup\":692,\"./axisbrush\":1012,\"./constants\":1015,\"./lines\":1018,d3:149}],1021:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\");e.exports=function(t,e){var r=t._fullLayout,a=r._toppaper,o=r._paperdiv,s=r._glcontainer;if(i(t)){var l={},c={},u={},f={},h=r._size;e.forEach(function(e,r){var n=e[0].trace;u[r]=n.index;var i=f[r]=n._fullInput.index;l[r]=t.data[i].dimensions,c[r]=t.data[i].dimensions.slice()});n(o,a,s,e,{width:h.w,height:h.h,margin:{t:h.t,r:h.r,b:h.b,l:h.l}},{filterChanged:function(e,n,i){var a=c[e][n],o=i.map(function(t){return t.slice()}),s=\"dimensions[\"+n+\"].constraintrange\",l=r._tracePreGUI[t._fullData[u[e]]._fullInput.uid];if(void 0===l[s]){var h=a.constraintrange;l[s]=h||null}var p=t._fullData[u[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[f[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){function n(t){return!(\"visible\"in t)||t.visible}function i(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}var a=function(t){return function(e,n){return i(r,t,e)-i(r,t,n)}}(c[e].filter(n));l[e].sort(a),c[e].filter(function(t){return!n(t)}).sort(function(t){return c[e].indexOf(t)}).forEach(function(t){l[e].splice(l[e].indexOf(t),1),l[e].splice(c[e].indexOf(t),0,t)}),t.emit(\"plotly_restyle\",[{dimensions:[l[e]]},[f[e]]])}})}}},{\"../../lib/prepare_regl\":707,\"./parcoords\":1020}],1022:[function(t,e,r){\"use strict\";var n=t(\"../../components/color/attributes\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/attributes\"),o=t(\"../../components/fx/hovertemplate_attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../lib/extend\").extendFlat,c=i({editType:\"calc\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:n.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:l({},a.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"calc\"},textfont:l({},c,{}),insidetextfont:l({},c,{}),outsidetextfont:l({},c,{}),title:{text:{valType:\"string\",dflt:\"\",editType:\"calc\"},font:l({},c,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"},editType:\"calc\"},domain:s({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:l({},c,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":570,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../../plots/domain\":768,\"../../plots/font_attributes\":769}],1023:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/get_data\").getModuleCalcData;r.name=\"pie\",r.plot=function(t){var e=n.getModule(\"pie\"),r=i(t.calcdata,e)[0];r.length&&e.plot(t,r)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"pie\"),a=e._has&&e._has(\"pie\");i&&!a&&n._pielayer.selectAll(\"g.trace\").remove()}},{\"../../plots/get_data\":779,\"../../registry\":825}],1024:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\").isArrayOrTypedArray,a=t(\"tinycolor2\"),o=t(\"../../components/color\"),s=t(\"./helpers\");r.calc=function(t,e){var r,l,c,u,f,h=e.values,p=i(h)&&h.length,d=e.labels,g=e.marker.colors||[],v=[],m=t._fullLayout,y=m._piecolormap,x={},b=0,_=m.hiddenlabels||[];if(e.dlabel)for(d=new Array(h.length),r=0;r<h.length;r++)d[r]=String(e.label0+r*e.dlabel);function w(t,e){return!!t&&(!!(t=a(t)).isValid()&&(t=o.addOpacity(t,t.getAlpha()),y[e]||(y[e]=t),t))}var k=(p?h:d).length;for(r=0;r<k;r++){if(p){if(l=h[r],!n(l))continue;if((l=+l)<0)continue}else l=1;void 0!==(c=d[r])&&\"\"!==c||(c=r);var A=x[c=String(c)];void 0===A?(x[c]=v.length,(u=-1!==_.indexOf(c))||(b+=l),v.push({v:l,label:c,color:w(g[r],c),i:r,pts:[r],hidden:u})):((f=v[A]).v+=l,f.pts.push(r),f.hidden||(b+=l),!1===f.color&&g[r]&&(f.color=w(g[r],c)))}if(e.sort&&v.sort(function(t,e){return e.v-t.v}),v[0]&&(v[0].vTotal=b),e.textinfo&&\"none\"!==e.textinfo){var M,T=-1!==e.textinfo.indexOf(\"label\"),S=-1!==e.textinfo.indexOf(\"text\"),C=-1!==e.textinfo.indexOf(\"value\"),E=-1!==e.textinfo.indexOf(\"percent\"),L=m.separators;for(r=0;r<v.length;r++){if(f=v[r],M=T?[f.label]:[],S){var z=s.getFirstFilled(e.text,f.pts);z&&M.push(z)}C&&M.push(s.formatPieValue(f.v,L)),E&&M.push(s.formatPiePercent(f.v/b,L)),f.text=M.join(\"<br>\")}}return v},r.crossTraceCalc=function(t){var e=t._fullLayout,r=t.calcdata,n=e.piecolorway,i=e._piecolormap;e.extendpiecolors&&(n=function(t){var e,r=JSON.stringify(t),n=l[r];if(!n){for(n=t.slice(),e=0;e<t.length;e++)n.push(a(t[e]).lighten(20).toHexString());for(e=0;e<t.length;e++)n.push(a(t[e]).darken(20).toHexString());l[r]=n}return n}(n));var o,s,c,u,f=0;for(o=0;o<r.length;o++)if(\"pie\"===(c=r[o])[0].trace.type)for(s=0;s<c.length;s++)!1===(u=c[s]).color&&(i[u.label]?u.color=i[u.label]:(i[u.label]=u.color=n[f%n.length],f++))};var l={}},{\"../../components/color\":571,\"../../lib\":694,\"./helpers\":1027,\"fast-isnumeric\":215,tinycolor2:515}],1025:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}var l,c=n.coerceFont,u=s(\"values\"),f=n.isArrayOrTypedArray(u),h=s(\"labels\");if(Array.isArray(h)?(l=h.length,f&&(l=Math.min(l,u.length))):f&&(l=u.length,s(\"label0\"),s(\"dlabel\")),l){e._length=l,s(\"marker.line.width\")&&s(\"marker.line.color\"),s(\"marker.colors\"),s(\"scalegroup\");var p=s(\"text\"),d=s(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\");if(s(\"hovertext\"),s(\"hovertemplate\"),d&&\"none\"!==d){var g=s(\"textposition\"),v=Array.isArray(g)||\"auto\"===g,m=v||\"inside\"===g,y=v||\"outside\"===g;if(m||y){var x=c(s,\"textfont\",o.font);if(m){var b=n.extendFlat({},x);!(t.textfont&&t.textfont.color)&&delete b.color,c(s,\"insidetextfont\",b)}y&&c(s,\"outsidetextfont\",x)}}a(e,o,s);var _=s(\"hole\");if(s(\"title.text\")){var w=s(\"title.position\",_?\"middle center\":\"top center\");_||\"middle center\"!==w||(e.title.position=\"top center\"),c(s,\"title.font\",o.font)}s(\"sort\"),s(\"direction\"),s(\"rotation\"),s(\"pull\")}else e.visible=!1}},{\"../../lib\":694,\"../../plots/domain\":768,\"./attributes\":1022}],1026:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),r}},{\"../../components/fx/helpers\":606}],1027:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");r.formatPiePercent=function(t,e){var r=(100*t).toPrecision(3);return-1!==r.lastIndexOf(\".\")&&(r=r.replace(/[.]?0+$/,\"\")),n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=t.toPrecision(10);return-1!==r.lastIndexOf(\".\")&&(r=r.replace(/[.]?0+$/,\"\")),n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r<e.length;r++){var n=t[e[r]];if(n||0===n)return n}},r.castOption=function(t,e){return Array.isArray(t)?r.getFirstFilled(t,e):t||void 0}},{\"../../lib\":694}],1028:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.supplyLayoutDefaults=t(\"./layout_defaults\"),n.layoutAttributes=t(\"./layout_attributes\");var i=t(\"./calc\");n.calc=i.calc,n.crossTraceCalc=i.crossTraceCalc,n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.styleOne=t(\"./style_one\"),n.moduleType=\"trace\",n.name=\"pie\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"pie\",\"showLegend\"],n.meta={},e.exports=n},{\"./attributes\":1022,\"./base_plot\":1023,\"./calc\":1024,\"./defaults\":1025,\"./layout_attributes\":1029,\"./layout_defaults\":1030,\"./plot\":1031,\"./style\":1032,\"./style_one\":1033}],1029:[function(t,e,r){\"use strict\";e.exports={hiddenlabels:{valType:\"data_array\",editType:\"calc\"},piecolorway:{valType:\"colorlist\",editType:\"calc\"},extendpiecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1030:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"piecolorway\",e.colorway),r(\"extendpiecolors\")}},{\"../../lib\":694,\"./layout_attributes\":1029}],1031:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/fx\"),a=t(\"../../components/color\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"./helpers\"),u=t(\"./event_data\");function f(t,e){if(t.v===e.vTotal&&!e.trace.hole)return 1;var r=Math.PI*Math.min(t.v/e.vTotal,.5);return Math.min(1/(1+1/Math.sin(r)),(1-e.trace.hole)/2)}function h(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function p(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function d(t){var e,r=t.pull;if(Array.isArray(r))for(r=0,e=0;e<t.pull.length;e++)t.pull[e]>r&&(r=t.pull[e]);return r}e.exports=function(t,e){var r=t._fullLayout;!function(t,e){for(var r,n,i=e._fullLayout,a=0;a<t.length;a++)if(r=t[a][0],(n=r.trace).title.text){var c=i.meta?s.templateString(n.title.text,{meta:i.meta}):n.title.text,u=o.tester.append(\"text\").attr(\"data-notex\",1).text(c).call(o.font,n.title.font).call(l.convertToTspans,e),f=o.bBox(u.node(),!0);r.titleBox={width:f.width,height:f.height},u.remove()}}(e,t),function(t,e){var r,n,i,a,o,s,l,c,u,f=[];for(i=0;i<t.length;i++)o=t[i][0],s=o.trace,r=e.w*(s.domain.x[1]-s.domain.x[0]),n=e.h*(s.domain.y[1]-s.domain.y[0]),s.title.text&&\"middle center\"!==s.title.position&&(n-=p(o,e)),l=d(s),o.r=Math.min(r,n)/(2+2*l),o.cx=e.l+e.w*(s.domain.x[1]+s.domain.x[0])/2,o.cy=e.t+e.h*(1-s.domain.y[0])-n/2,s.title.text&&-1!==s.title.position.indexOf(\"bottom\")&&(o.cy-=p(o,e)),s.scalegroup&&-1===f.indexOf(s.scalegroup)&&f.push(s.scalegroup);for(a=0;a<f.length;a++){for(u=1/0,c=f[a],i=0;i<t.length;i++)(o=t[i][0]).trace.scalegroup===c&&(u=Math.min(u,o.r*o.r/o.vTotal));for(i=0;i<t.length;i++)(o=t[i][0]).trace.scalegroup===c&&(o.r=Math.sqrt(u*o.vTotal))}}(e,r._size);var g=s.makeTraceGroups(r._pielayer,e,\"trace\").each(function(e){var g=n.select(this),v=e[0],m=v.trace;!function(t){var e,r,n,i=t[0],a=i.trace,o=a.rotation*Math.PI/180,s=2*Math.PI/i.vTotal,l=\"px0\",c=\"px1\";if(\"counterclockwise\"===a.direction){for(e=0;e<t.length&&t[e].hidden;e++);if(e===t.length)return;o+=s*t[e].v,s*=-1,l=\"px1\",c=\"px0\"}function u(t){return[i.r*Math.sin(t),-i.r*Math.cos(t)]}for(n=u(o),e=0;e<t.length;e++)(r=t[e]).hidden||(r[l]=n,o+=s*r.v/2,r.pxmid=u(o),r.midangle=o,o+=s*r.v/2,n=u(o),r[c]=n,r.largeArc=r.v>i.vTotal/2?1:0)}(e),g.attr(\"stroke-linejoin\",\"round\"),g.each(function(){var g=n.select(this).selectAll(\"g.slice\").data(e);g.enter().append(\"g\").classed(\"slice\",!0),g.exit().remove();var y=[[[],[]],[[],[]]],x=!1;g.each(function(e){if(e.hidden)n.select(this).selectAll(\"path,g\").remove();else{e.pointNumber=e.i,e.curveNumber=m.index,y[e.pxmid[1]<0?0:1][e.pxmid[0]<0?0:1].push(e);var p=v.cx,d=v.cy,g=n.select(this),b=g.selectAll(\"path.surface\").data([e]),_=!1,w=!1;if(b.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),g.select(\"path.textline\").remove(),g.on(\"mouseover\",function(){var a=t._fullLayout,o=t._fullData[m.index];if(!t._dragging&&!1!==a.hovermode){var s=o.hoverinfo;if(Array.isArray(s)&&(s=i.castHoverinfo({hoverinfo:[c.castOption(s,e.pts)],_module:m._module},a,0)),\"all\"===s&&(s=\"label+text+value+percent+name\"),o.hovertemplate||\"none\"!==s&&\"skip\"!==s&&s){var l=f(e,v),h=p+e.pxmid[0]*(1-l),g=d+e.pxmid[1]*(1-l),y=r.separators,x=[];if(s&&-1!==s.indexOf(\"label\")&&x.push(e.label),e.text=c.castOption(o.hovertext||o.text,e.pts),s&&-1!==s.indexOf(\"text\")){var b=e.text;b&&x.push(b)}e.value=e.v,e.valueLabel=c.formatPieValue(e.v,y),s&&-1!==s.indexOf(\"value\")&&x.push(e.valueLabel),e.percent=e.v/v.vTotal,e.percentLabel=c.formatPiePercent(e.percent,y),s&&-1!==s.indexOf(\"percent\")&&x.push(e.percentLabel);var k=m.hoverlabel,A=k.font;i.loneHover({x0:h-l*v.r,x1:h+l*v.r,y:g,text:x.join(\"<br>\"),name:o.hovertemplate||-1!==s.indexOf(\"name\")?o.name:void 0,idealAlign:e.pxmid[0]<0?\"left\":\"right\",color:c.castOption(k.bgcolor,e.pts)||e.color,borderColor:c.castOption(k.bordercolor,e.pts),fontFamily:c.castOption(A.family,e.pts),fontSize:c.castOption(A.size,e.pts),fontColor:c.castOption(A.color,e.pts),trace:o,hovertemplate:c.castOption(o.hovertemplate,e.pts),hovertemplateLabels:e,eventData:[u(e,o)]},{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:t}),_=!0}t.emit(\"plotly_hover\",{points:[u(e,o)],event:n.event}),w=!0}}).on(\"mouseout\",function(r){var a=t._fullLayout,o=t._fullData[m.index];w&&(r.originalEvent=n.event,t.emit(\"plotly_unhover\",{points:[u(e,o)],event:n.event}),w=!1),_&&(i.loneUnhover(a._hoverlayer.node()),_=!1)}).on(\"click\",function(){var r=t._fullLayout,a=t._fullData[m.index];t._dragging||!1===r.hovermode||(t._hoverdata=[u(e,a)],i.click(t,n.event))}),m.pull){var k=+c.castOption(m.pull,e.pts)||0;k>0&&(p+=k*e.pxmid[0],d+=k*e.pxmid[1])}e.cxFinal=p,e.cyFinal=d;var A=m.hole;if(e.v===v.vTotal){var M=\"M\"+(p+e.px0[0])+\",\"+(d+e.px0[1])+L(e.px0,e.pxmid,!0,1)+L(e.pxmid,e.px0,!0,1)+\"Z\";A?b.attr(\"d\",\"M\"+(p+A*e.px0[0])+\",\"+(d+A*e.px0[1])+L(e.px0,e.pxmid,!1,A)+L(e.pxmid,e.px0,!1,A)+\"Z\"+M):b.attr(\"d\",M)}else{var T=L(e.px0,e.px1,!0,1);if(A){var S=1-A;b.attr(\"d\",\"M\"+(p+A*e.px1[0])+\",\"+(d+A*e.px1[1])+L(e.px1,e.px0,!1,A)+\"l\"+S*e.px0[0]+\",\"+S*e.px0[1]+T+\"Z\")}else b.attr(\"d\",\"M\"+p+\",\"+d+\"l\"+e.px0[0]+\",\"+e.px0[1]+T+\"Z\")}var C=c.castOption(m.textposition,e.pts),E=g.selectAll(\"g.slicetext\").data(e.text&&\"none\"!==C?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each(function(){var r=s.ensureSingle(n.select(this),\"text\",\"\",function(t){t.attr(\"data-notex\",1)});r.text(e.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(o.font,\"outside\"===C?function(t,e,r){var n=c.castOption(t.outsidetextfont.color,e.pts)||c.castOption(t.textfont.color,e.pts)||r.color,i=c.castOption(t.outsidetextfont.family,e.pts)||c.castOption(t.textfont.family,e.pts)||r.family,a=c.castOption(t.outsidetextfont.size,e.pts)||c.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(m,e,t._fullLayout.font):function(t,e,r){var n=c.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=c.castOption(t._input.textfont.color,e.pts));var i=c.castOption(t.insidetextfont.family,e.pts)||c.castOption(t.textfont.family,e.pts)||r.family,o=c.castOption(t.insidetextfont.size,e.pts)||c.castOption(t.textfont.size,e.pts)||r.size;return{color:n||a.contrast(e.color),family:i,size:o}}(m,e,t._fullLayout.font)).call(l.convertToTspans,t);var i,u=o.bBox(r.node());\"outside\"===C?i=h(u,e):(i=function(t,e,r){var n=Math.sqrt(t.width*t.width+t.height*t.height),i=t.width/t.height,a=Math.PI*Math.min(e.v/r.vTotal,.5),o=1-r.trace.hole,s=f(e,r),l={scale:s*r.r*2/n,rCenter:1-s,rotate:0};if(l.scale>=1)return l;var c=i+1/(2*Math.tan(a)),u=r.r*Math.min(1/(Math.sqrt(c*c+.5)+c),o/(Math.sqrt(i*i+o/2)+i)),h={scale:2*u/t.height,rCenter:Math.cos(u/r.r)-u*i/r.r,rotate:(180/Math.PI*e.midangle+720)%180-90},p=1/i,d=p+1/(2*Math.tan(a)),g=r.r*Math.min(1/(Math.sqrt(d*d+.5)+d),o/(Math.sqrt(p*p+o/2)+p)),v={scale:2*g/t.width,rCenter:Math.cos(g/r.r)-g/i/r.r,rotate:(180/Math.PI*e.midangle+810)%180-90},m=v.scale>h.scale?v:h;return l.scale<1&&m.scale>l.scale?m:l}(u,e,v),\"auto\"===C&&i.scale<1&&(r.call(o.font,m.outsidetextfont),m.outsidetextfont.family===m.insidetextfont.family&&m.outsidetextfont.size===m.insidetextfont.size||(u=o.bBox(r.node())),i=h(u,e)));var g=p+e.pxmid[0]*i.rCenter+(i.x||0),y=d+e.pxmid[1]*i.rCenter+(i.y||0);i.outside&&(e.yLabelMin=y-u.height/2,e.yLabelMid=y,e.yLabelMax=y+u.height/2,e.labelExtraX=0,e.labelExtraY=0,x=!0),r.attr(\"transform\",\"translate(\"+g+\",\"+y+\")\"+(i.scale<1?\"scale(\"+i.scale+\")\":\"\")+(i.rotate?\"rotate(\"+i.rotate+\")\":\"\")+\"translate(\"+-(u.left+u.right)/2+\",\"+-(u.top+u.bottom)/2+\")\")})}function L(t,r,n,i){return\"a\"+i*v.r+\",\"+i*v.r+\" 0 \"+e.largeArc+(n?\" 1 \":\" 0 \")+i*(r[0]-t[0])+\",\"+i*(r[1]-t[1])}});var b=n.select(this).selectAll(\"g.titletext\").data(m.title.text?[0]:[]);b.enter().append(\"g\").classed(\"titletext\",!0),b.exit().remove(),b.each(function(){var e,i=s.ensureSingle(n.select(this),\"text\",\"\",function(t){t.attr(\"data-notex\",1)}),a=r.meta?s.templateString(m.title.text,{meta:r.meta}):m.title.text;i.text(a).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(o.font,m.title.font).call(l.convertToTspans,t),e=\"middle center\"===m.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(v):function(t,e){var r,n,i=1,a=1,o=t.trace,s={x:t.cx,y:t.cy},l={tx:0,ty:0};l.ty+=o.title.font.size,n=d(o),-1!==o.title.position.indexOf(\"top\")?(s.y-=(1+n)*t.r,l.ty-=t.titleBox.height):-1!==o.title.position.indexOf(\"bottom\")&&(s.y+=(1+n)*t.r);-1!==o.title.position.indexOf(\"left\")?(r=e.w*(o.domain.x[1]-o.domain.x[0])/2+t.r,s.x-=(1+n)*t.r,l.tx+=t.titleBox.width/2):-1!==o.title.position.indexOf(\"center\")?r=e.w*(o.domain.x[1]-o.domain.x[0]):-1!==o.title.position.indexOf(\"right\")&&(r=e.w*(o.domain.x[1]-o.domain.x[0])/2+t.r,s.x+=(1+n)*t.r,l.tx-=t.titleBox.width/2);return i=r/t.titleBox.width,a=p(t,e)/t.titleBox.height,{x:s.x,y:s.y,scale:Math.min(i,a),tx:l.tx,ty:l.ty}}(v,r._size),i.attr(\"transform\",\"translate(\"+e.x+\",\"+e.y+\")\"+(e.scale<1?\"scale(\"+e.scale+\")\":\"\")+\"translate(\"+e.tx+\",\"+e.ty+\")\")}),x&&function(t,e){var r,n,i,a,o,s,l,u,f,h,p,d,g;function v(t,e){return t.pxmid[1]-e.pxmid[1]}function m(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,u,f,p,d,g,v=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),m=n?t.yLabelMin:t.yLabelMax,y=n?t.yLabelMax:t.yLabelMin,x=t.cyFinal+o(t.px0[1],t.px1[1]),b=v-m;if(b*l>0&&(t.labelExtraY=b),Array.isArray(e.pull))for(u=0;u<h.length;u++)(f=h[u])===t||(c.castOption(e.pull,t.pts)||0)>=(c.castOption(e.pull,f.pts)||0)||((t.pxmid[1]-f.pxmid[1])*l>0?(p=f.cyFinal+o(f.px0[1],f.px1[1]),(b=p-m-t.labelExtraY)*l>0&&(t.labelExtraY+=b)):(y+t.labelExtraY-x)*l>0&&(i=3*s*Math.abs(u-h.indexOf(t)),d=f.cxFinal+a(f.px0[0],f.px1[0]),(g=d+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=g)))}for(n=0;n<2;n++)for(i=n?v:m,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(u=t[n][r]).sort(i),f=t[1-n][r],h=f.concat(u),d=[],p=0;p<u.length;p++)void 0!==u[p].yLabelMid&&d.push(u[p]);for(g=!1,p=0;n&&p<f.length;p++)if(void 0!==f[p].yLabelMid){g=f[p];break}for(p=0;p<d.length;p++){var x=p&&d[p-1];g&&!p&&(x=g),y(d[p],x)}}}(y,m),g.each(function(t){if(t.labelExtraX||t.labelExtraY){var e=n.select(this),r=e.select(\"g.slicetext text\");r.attr(\"transform\",\"translate(\"+t.labelExtraX+\",\"+t.labelExtraY+\")\"+r.attr(\"transform\"));var i=t.cxFinal+t.pxmid[0],o=\"M\"+i+\",\"+(t.cyFinal+t.pxmid[1]),s=(t.yLabelMax-t.yLabelMin)*(t.pxmid[0]<0?-1:1)/4;if(t.labelExtraX){var l=t.labelExtraX*t.pxmid[1]/t.pxmid[0],c=t.yLabelMid+t.labelExtraY-(t.cyFinal+t.pxmid[1]);Math.abs(l)>Math.abs(c)?o+=\"l\"+c*t.pxmid[0]/t.pxmid[1]+\",\"+c+\"H\"+(i+t.labelExtraX+s):o+=\"l\"+t.labelExtraX+\",\"+l+\"v\"+(c-l)+\"h\"+s}else o+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+s;e.append(\"path\").classed(\"textline\",!0).call(a.stroke,m.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,m.outsidetextfont.size/8),d:o,fill:\"none\"})}})})});setTimeout(function(){g.selectAll(\"tspan\").each(function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))})},0)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../components/fx\":610,\"../../lib\":694,\"../../lib/svg_text_utils\":718,\"./event_data\":1026,\"./helpers\":1027,d3:149}],1032:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"./style_one\");e.exports=function(t){t._fullLayout._pielayer.selectAll(\".trace\").each(function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each(function(t){n.select(this).call(i,t,e)})})}},{\"./style_one\":1033,d3:149}],1033:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style({\"stroke-width\":s}).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":571,\"./helpers\":1027}],1034:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":1047}],1035:[function(t,e,r){\"use strict\";var n=t(\"gl-pointcloud2d\"),i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;l<e;l++)o=n[2*l],s=n[2*l+1],o<d[0]&&(d[0]=o),o>d[2]&&(d[2]=o),s<d[1]&&(d[1]=s),s>d[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;l<e;l++)r[l]=l}else for(e=c.length,n=new Float32Array(2*e),r=new Int32Array(e),l=0;l<e;l++)o=c[l],s=u[l],r[l]=l,n[2*l]=o,n[2*l+1]=s,o<d[0]&&(d[0]=o),o>d[2]&&(d[2]=o),s<d[1]&&(d[1]=s),s>d[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),v=i(t.marker.border.color),m=t.opacity*t.marker.opacity;g[3]*=m,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,v[3]*=m,this.pointcloudOptions.borderColor=v;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,k=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:k}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:k})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../lib/str2rgbarray\":717,\"../../plots/cartesian/autorange\":741,\"../scatter/get_trace_color\":1057,\"gl-pointcloud2d\":281}],1036:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":694,\"./attributes\":1034}],1037:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"../scatter3d/calc\"),n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"pointcloud\",n.basePlotModule=t(\"../../plots/gl2d\"),n.categories=[\"gl\",\"gl2d\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/gl2d\":782,\"../scatter3d/calc\":1075,\"./attributes\":1034,\"./convert\":1035,\"./defaults\":1036}],1038:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../components/fx/hovertemplate_attributes\"),c=t(\"../../lib/extend\").extendFlat,u=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=u({hoverinfo:c({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\"},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),node:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":570,\"../../components/fx/attributes\":601,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../../plots/domain\":768,\"../../plots/font_attributes\":769}],1039:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\");r.name=\"sankey\",r.baseLayoutAttrOverrides=n({hoverlabel:o.hoverlabel},\"plot\",\"nested\"),r.plot=function(t){var e=i(t.calcdata,\"sankey\")[0];a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"sankey\"),a=e._has&&e._has(\"sankey\");i&&!a&&n._paperdiv.selectAll(\".sankey\").remove()}},{\"../../components/fx/layout_attributes\":611,\"../../plot_api/edit_types\":725,\"../../plots/get_data\":779,\"./plot\":1044}],1040:[function(t,e,r){\"use strict\";var n=t(\"strongly-connected-components\"),i=t(\"../../lib\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){return function(t,e,r){for(var a=t.length,o=i.init2dArray(a,0),s=0;s<Math.min(e.length,r.length);s++)if(i.isIndex(e[s],a)&&i.isIndex(r[s],a)){if(e[s]===r[s])return!0;o[e[s]].push(r[s])}return n(o).components.some(function(t){return t.length>1})}(e.node.label,e.link.source,e.link.target)&&(i.error(\"Circularity is present in the Sankey data. Removing all nodes and links.\"),e.link.label=[],e.link.source=[],e.link.target=[],e.link.value=[],e.link.color=[],e.node.label=[],e.node.color=[]),a({link:e.link,node:e.node})}},{\"../../lib\":694,\"../../lib/gup\":692,\"strongly-connected-components\":508}],1041:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"cubic-in-out\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeCapture:\"node-capture\",nodeCentered:\"node-entered\",nodeLabelGuide:\"node-label-guide\",nodeLabel:\"node-label\",nodeLabelTextPath:\"node-label-text-path\"}}},{}],1042:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\");e.exports=function(t,e,r,u){function f(r,a){return n.coerce(t,e,i,r,a)}var h=n.extendDeep(u.hoverlabel,t.hoverlabel),p=t.node,d=c.newContainer(e,\"node\");function g(t,e){return n.coerce(p,d,i.node,t,e)}g(\"label\"),g(\"pad\"),g(\"thickness\"),g(\"line.color\"),g(\"line.width\"),g(\"hoverinfo\",t.hoverinfo),l(p,d,g,h),g(\"hovertemplate\");var v=u.colorway;g(\"color\",d.label.map(function(t,e){return a.addOpacity(function(t){return v[t%v.length]}(e),.8)}));var m=t.link,y=c.newContainer(e,\"link\");function x(t,e){return n.coerce(m,y,i.link,t,e)}x(\"label\"),x(\"source\"),x(\"target\"),x(\"value\"),x(\"line.color\"),x(\"line.width\"),x(\"hoverinfo\",t.hoverinfo),l(m,y,x,h),x(\"hovertemplate\");var b=o(u.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";x(\"color\",n.repeat(b,y.value.length)),s(e,u,f),f(\"orientation\"),f(\"valueformat\"),f(\"valuesuffix\"),f(\"arrangement\"),n.coerceFont(f,\"textfont\",n.extendFlat({},u.font)),e._length=null}},{\"../../components/color\":571,\"../../components/fx/hoverlabel_defaults\":608,\"../../lib\":694,\"../../plot_api/plot_template\":732,\"../../plots/domain\":768,\"./attributes\":1038,tinycolor2:515}],1043:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.moduleType=\"trace\",n.name=\"sankey\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"noOpacity\"],n.meta={},e.exports=n},{\"./attributes\":1038,\"./base_plot\":1039,\"./calc\":1040,\"./defaults\":1042,\"./plot\":1044}],1044:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"./render\"),a=t(\"../../components/fx\"),o=t(\"../../components/color\"),s=t(\"../../lib\"),l=t(\"./constants\").cn,c=s._;function u(t){return\"\"!==t}function f(t,e){return t.filter(function(t){return t.key===e.traceId})}function h(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function p(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function d(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function g(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&f(r,e).selectAll(\".\"+l.sankeyLink).filter(d(e)).call(y.bind(0,e,r,!1))}function m(t,e,r){e&&r&&f(r,e).selectAll(\".\"+l.sankeyLink).filter(d(e)).call(x.bind(0,e,r,!1))}function y(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",.4),i&&f(e,t).selectAll(\".\"+l.sankeyLink).filter(function(t){return t.link.label===i}).style(\"fill-opacity\",.4),r&&f(e,t).selectAll(\".\"+l.sankeyNode).filter(g(t)).call(v)}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",function(t){return t.tinyColorAlpha}),i&&f(e,t).selectAll(\".\"+l.sankeyLink).filter(function(t){return t.link.label===i}).style(\"fill-opacity\",function(t){return t.tinyColorAlpha}),r&&f(e,t).selectAll(l.sankeyNode).filter(g(t)).call(m)}function b(t,e){var r=t.hoverlabel||{},n=s.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){var r=t._fullLayout,s=r._paper,f=r._size,d=c(t,\"source:\")+\" \",g=c(t,\"target:\")+\" \",_=c(t,\"incoming flow count:\")+\" \",w=c(t,\"outgoing flow count:\")+\" \";i(s,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{linkEvents:{hover:function(e,r,i){!1!==t._fullLayout.hovermode&&(n.select(e).call(y.bind(0,r,i,!0)),\"skip\"!==r.link.trace.link.hoverinfo&&(r.link.fullData=r.link.trace,t.emit(\"plotly_hover\",{event:n.event,points:[r.link]})))},follow:function(e,i){if(!1!==t._fullLayout.hovermode){var s=i.link.trace.link;if(\"none\"!==s.hoverinfo&&\"skip\"!==s.hoverinfo){var l=t._fullLayout._paperdiv.node().getBoundingClientRect(),c=e.getBoundingClientRect(),f=c.left+c.width/2,v=c.top+c.height/2,m={valueLabel:n.format(i.valueFormat)(i.link.value)+i.valueSuffix};i.link.fullData=i.link.trace;var y=a.loneHover({x:f-l.left,y:v-l.top,name:m.valueLabel,text:[i.link.label||\"\",d+i.link.source.label,g+i.link.target.label].filter(u).join(\"<br>\"),color:b(s,\"bgcolor\")||o.addOpacity(i.tinyColorHue,1),borderColor:b(s,\"bordercolor\"),fontFamily:b(s,\"font.family\"),fontSize:b(s,\"font.size\"),fontColor:b(s,\"font.color\"),idealAlign:n.event.x<f?\"right\":\"left\",hovertemplate:s.hovertemplate,hovertemplateLabels:m,eventData:[i.link]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});h(y,.65),p(y)}}},unhover:function(e,i,o){!1!==t._fullLayout.hovermode&&(n.select(e).call(x.bind(0,i,o,!0)),\"skip\"!==i.link.trace.link.hoverinfo&&(i.link.fullData=i.link.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.link]})),a.loneUnhover(r._hoverlayer.node()))},select:function(e,r){var i=r.link;i.originalEvent=n.event,t._hoverdata=[i],a.click(t,{target:!0})}},nodeEvents:{hover:function(e,r,i){!1!==t._fullLayout.hovermode&&(n.select(e).call(v,r,i),\"skip\"!==r.node.trace.node.hoverinfo&&(r.node.fullData=r.node.trace,t.emit(\"plotly_hover\",{event:n.event,points:[r.node]})))},follow:function(e,i){if(!1!==t._fullLayout.hovermode){var o=i.node.trace.node;if(\"none\"!==o.hoverinfo&&\"skip\"!==o.hoverinfo){var s=n.select(e).select(\".\"+l.nodeRect),c=t._fullLayout._paperdiv.node().getBoundingClientRect(),f=s.node().getBoundingClientRect(),d=f.left-2-c.left,g=f.right+2-c.left,v=f.top+f.height/4-c.top,m={valueLabel:n.format(i.valueFormat)(i.node.value)+i.valueSuffix};i.node.fullData=i.node.trace;var y=a.loneHover({x0:d,x1:g,y:v,name:n.format(i.valueFormat)(i.node.value)+i.valueSuffix,text:[i.node.label,_+i.node.targetLinks.length,w+i.node.sourceLinks.length].filter(u).join(\"<br>\"),color:b(o,\"bgcolor\")||i.tinyColorHue,borderColor:b(o,\"bordercolor\"),fontFamily:b(o,\"font.family\"),fontSize:b(o,\"font.size\"),fontColor:b(o,\"font.color\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:m,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});h(y,.85),p(y)}}},unhover:function(e,i,o){!1!==t._fullLayout.hovermode&&(n.select(e).call(m,i,o),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),a.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var o=r.node;o.originalEvent=n.event,t._hoverdata=[o],n.select(e).call(m,r,i),a.click(t,{target:!0})}}})}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../lib\":694,\"./constants\":1041,\"./render\":1045,d3:149}],1045:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"d3\"),a=t(\"tinycolor2\"),o=t(\"../../components/color\"),s=t(\"../../components/drawing\"),l=t(\"@plotly/d3-sankey\").sankey,c=t(\"d3-force\"),u=t(\"../../lib\"),f=u.isArrayOrTypedArray,h=u.isIndex,p=t(\"../../lib/gup\"),d=p.keyFun,g=p.repeat,v=p.unwrap;function m(t){t.lastDraggedX=t.x,t.lastDraggedY=t.y}function y(t){return function(e){return e.node.originalX===t.node.originalX}}function x(t){for(var e=0;e<t.length;e++)t[e].y=t[e].y+t[e].dy/2}function b(t){t.attr(\"transform\",function(t){return\"translate(\"+t.node.x.toFixed(3)+\", \"+(t.node.y-t.node.dy/2).toFixed(3)+\")\"})}function _(t){var e=t.sankey.nodes();!function(t){for(var e=0;e<t.length;e++)t[e].y=t[e].y-t[e].dy/2}(e);var r=t.sankey.link()(t.link);return x(e),r}function w(t){t.call(b)}function k(t,e){t.call(w),e.attr(\"d\",_)}function A(t){t.attr(\"width\",function(t){return t.visibleWidth}).attr(\"height\",function(t){return t.visibleHeight})}function M(t){return t.link.dy>1||t.linkLineWidth>0}function T(t){return\"translate(\"+t.translateX+\",\"+t.translateY+\")\"+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function S(t){return\"translate(\"+(t.horizontal?0:t.labelY)+\" \"+(t.horizontal?t.labelY:0)+\")\"}function C(t){return i.svg.line()([[t.horizontal?t.left?-t.sizeAcross:t.visibleWidth+n.nodeTextOffsetHorizontal:n.nodeTextOffsetHorizontal,0],[t.horizontal?t.left?-n.nodeTextOffsetHorizontal:t.sizeAcross:t.visibleHeight-n.nodeTextOffsetHorizontal,0]])}function E(t){return t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\"}function L(t){return t.horizontal?\"scale(1 1)\":\"scale(-1 1)\"}function z(t){return t.darkBackground&&!t.horizontal?\"rgb(255,255,255)\":\"rgb(0,0,0)\"}function O(t){return t.horizontal&&t.left?\"100%\":\"0%\"}function I(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",function(t){t.interactionState.dragInProgress||(r.hover(this,t,e),t.interactionState.hovered=[this,t])}).on(\"mousemove.basic\",function(t){t.interactionState.dragInProgress||(r.follow(this,t),t.interactionState.hovered=[this,t])}).on(\"mouseout.basic\",function(t){t.interactionState.dragInProgress||(r.unhover(this,t,e),t.interactionState.hovered=!1)}).on(\"click.basic\",function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||r.select(this,t,e)})}function D(t,e,r){var a=i.behavior.drag().origin(function(t){return t.node}).on(\"dragstart\",function(i){if(\"fixed\"!==i.arrangement&&(u.raiseToTop(this),i.interactionState.dragInProgress=i.node,m(i.node),i.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,i.interactionState.hovered),i.interactionState.hovered=!1),\"snap\"===i.arrangement)){var a=i.traceId+\"|\"+Math.floor(i.node.originalX);i.forceLayouts[a]?i.forceLayouts[a].alpha(1):function(t,e,r){var i=r.sankey.nodes().filter(function(t){return t.originalX===r.node.originalX});r.forceLayouts[e]=c.forceSimulation(i).alphaDecay(0).force(\"collide\",c.forceCollide().radius(function(t){return t.dy/2+r.nodePad/2}).strength(1).iterations(n.forceIterations)).force(\"constrain\",function(t,e,r,i){return function(){for(var t=0,a=0;a<r.length;a++){var o=r[a];o===i.interactionState.dragInProgress?(o.x=o.lastDraggedX,o.y=o.lastDraggedY):(o.vx=(o.originalX-o.x)/n.forceTicksPerFrame,o.y=Math.min(i.size-o.dy/2,Math.max(o.dy/2,o.y))),t=Math.max(t,Math.abs(o.vx),Math.abs(o.vy))}!i.interactionState.dragInProgress&&t<.1&&i.forceLayouts[e].alpha()>0&&i.forceLayouts[e].alpha(0)}}(0,e,i,r)).stop()}(0,a,i),function(t,e,r,i){window.requestAnimationFrame(function a(){for(var o=0;o<n.forceTicksPerFrame;o++)r.forceLayouts[i].tick();r.sankey.relayout(),k(t.filter(y(r)),e),r.forceLayouts[i].alpha()>0&&window.requestAnimationFrame(a)})}(t,e,i,a)}}).on(\"drag\",function(r){if(\"fixed\"!==r.arrangement){var n=i.event.x,a=i.event.y;\"snap\"===r.arrangement?(r.node.x=n,r.node.y=a):(\"freeform\"===r.arrangement&&(r.node.x=n),r.node.y=Math.max(r.node.dy/2,Math.min(r.size-r.node.dy/2,a))),m(r.node),\"snap\"!==r.arrangement&&(r.sankey.relayout(),k(t.filter(y(r)),e))}}).on(\"dragend\",function(t){t.interactionState.dragInProgress=!1});t.on(\".drag\",null).call(a)}e.exports=function(t,e,r,i){var c=t.selectAll(\".\"+n.cn.sankey).data(e.filter(function(t){return v(t).trace.visible}).map(function(t,e,r){var i,a=v(e).trace,o=a.domain,s=a.node,c=a.link,p=a.arrangement,d=\"h\"===a.orientation,g=a.node.pad,m=a.node.thickness,y=a.node.line.color,b=a.node.line.width,_=a.link.line.color,w=a.link.line.width,k=a.valueformat,A=a.valuesuffix,M=a.textfont,T=t.width*(o.x[1]-o.x[0]),S=t.height*(o.y[1]-o.y[0]),C=[],E=f(c.color),L={},z=s.label.length;for(i=0;i<c.value.length;i++){var O=c.value[i],I=c.source[i],D=c.target[i];O>0&&h(I,z)&&h(D,z)&&(D=+D,L[I=+I]=L[D]=!0,C.push({pointNumber:i,label:c.label[i],color:E?c.color[i]:c.color,source:I,target:D,value:+O}))}var P=f(s.color),R=[],F=!1,B={};for(i=0;i<z;i++)if(L[i]){var N=s.label[i];B[i]=R.length,R.push({pointNumber:i,label:N,color:P?s.color[i]:s.color})}else F=!0;if(F)for(i=0;i<C.length;i++)C[i].source=B[C[i].source],C[i].target=B[C[i].target];var j,V=l().size(d?[T,S]:[S,T]).nodeWidth(m).nodePadding(g).nodes(R).links(C).layout(n.sankeyIterations);V.nodePadding()<g&&u.warn(\"node.pad was reduced to \",V.nodePadding(),\" to fit within the figure.\");for(var U=V.nodes(),q=0;q<U.length;q++)(j=U[q]).width=T,j.height=S;return x(R),{key:r,trace:a,guid:Math.floor(1e12*(1+Math.random())),horizontal:d,width:T,height:S,nodePad:g,nodeLineColor:y,nodeLineWidth:b,linkLineColor:_,linkLineWidth:w,valueFormat:k,valueSuffix:A,textFont:M,translateX:o.x[0]*t.width+t.margin.l,translateY:t.height-o.y[1]*t.height+t.margin.t,dragParallel:d?S:T,dragPerpendicular:d?T:S,nodes:R,links:C,arrangement:p,sankey:V,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}.bind(null,r)),d);c.exit().remove(),c.enter().append(\"g\").classed(n.cn.sankey,!0).style(\"box-sizing\",\"content-box\").style(\"position\",\"absolute\").style(\"left\",0).style(\"shape-rendering\",\"geometricPrecision\").style(\"pointer-events\",\"auto\").attr(\"transform\",T),c.transition().ease(n.ease).duration(n.duration).attr(\"transform\",T);var p=c.selectAll(\".\"+n.cn.sankeyLinks).data(g,d);p.enter().append(\"g\").classed(n.cn.sankeyLinks,!0).style(\"fill\",\"none\");var m=p.selectAll(\".\"+n.cn.sankeyLink).data(function(t){return t.sankey.links().filter(function(t){return t.value}).map(function(t,e,r){var n=a(r.color),i=r.source.label+\"|\"+r.target.label,s=t[i];t[i]=(s||0)+1;var l=i+\"__\"+t[i];return r.trace=e.trace,r.curveNumber=e.trace.index,{key:l,traceId:e.key,link:r,tinyColorHue:o.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkLineColor:e.linkLineColor,linkLineWidth:e.linkLineWidth,valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,interactionState:e.interactionState}}.bind(null,{},t))},d);m.enter().append(\"path\").classed(n.cn.sankeyLink,!0).attr(\"d\",_).call(I,c,i.linkEvents),m.style(\"stroke\",function(t){return M(t)?o.tinyRGB(a(t.linkLineColor)):t.tinyColorHue}).style(\"stroke-opacity\",function(t){return M(t)?o.opacity(t.linkLineColor):t.tinyColorAlpha}).style(\"stroke-width\",function(t){return M(t)?t.linkLineWidth:1}).style(\"fill\",function(t){return t.tinyColorHue}).style(\"fill-opacity\",function(t){return t.tinyColorAlpha}),m.transition().ease(n.ease).duration(n.duration).attr(\"d\",_),m.exit().transition().ease(n.ease).duration(n.duration).style(\"opacity\",0).remove();var y=c.selectAll(\".\"+n.cn.sankeyNodeSet).data(g,d);y.enter().append(\"g\").classed(n.cn.sankeyNodeSet,!0),y.style(\"cursor\",function(t){switch(t.arrangement){case\"fixed\":return\"default\";case\"perpendicular\":return\"ns-resize\";default:return\"move\"}});var w=y.selectAll(\".\"+n.cn.sankeyNode).data(function(t){var e=t.sankey.nodes();return function(t){var e,r=[];for(e=0;e<t.length;e++)t[e].originalX=t[e].x,t[e].originalY=t[e].y,-1===r.indexOf(t[e].x)&&r.push(t[e].x);for(r.sort(function(t,e){return t-e}),e=0;e<t.length;e++)t[e].originalLayerIndex=r.indexOf(t[e].originalX),t[e].originalLayer=t[e].originalLayerIndex/(r.length-1)}(e),e.filter(function(t){return t.value}).map(function(t,e,r){var i=a(r.color),s=n.nodePadAcross,l=e.nodePad/2,c=r.dx,u=Math.max(.5,r.dy),f=r.label,h=t[f];t[f]=(h||0)+1;var p=f+\"__\"+t[f];return r.trace=e.trace,r.curveNumber=e.trace.index,{key:p,traceId:e.key,node:r,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(c),visibleHeight:u,zoneX:-s,zoneY:-l,zoneWidth:c+2*s,zoneHeight:u+2*l,labelY:e.horizontal?r.dy/2+1:r.dx/2+1,left:1===r.originalLayer,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:i.getBrightness()<=128,tinyColorHue:o.tinyRGB(i),tinyColorAlpha:i.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,p].join(\" \"),interactionState:e.interactionState}}.bind(null,{},t))},d);w.enter().append(\"g\").classed(n.cn.sankeyNode,!0).call(b).call(I,c,i.nodeEvents),w.call(D,m,i),w.transition().ease(n.ease).duration(n.duration).call(b),w.exit().transition().ease(n.ease).duration(n.duration).style(\"opacity\",0).remove();var k=w.selectAll(\".\"+n.cn.nodeRect).data(g);k.enter().append(\"rect\").classed(n.cn.nodeRect,!0).call(A),k.style(\"stroke-width\",function(t){return t.nodeLineWidth}).style(\"stroke\",function(t){return o.tinyRGB(a(t.nodeLineColor))}).style(\"stroke-opacity\",function(t){return o.opacity(t.nodeLineColor)}).style(\"fill\",function(t){return t.tinyColorHue}).style(\"fill-opacity\",function(t){return t.tinyColorAlpha}),k.transition().ease(n.ease).duration(n.duration).call(A);var P=w.selectAll(\".\"+n.cn.nodeCapture).data(g);P.enter().append(\"rect\").classed(n.cn.nodeCapture,!0).style(\"fill-opacity\",0),P.attr(\"x\",function(t){return t.zoneX}).attr(\"y\",function(t){return t.zoneY}).attr(\"width\",function(t){return t.zoneWidth}).attr(\"height\",function(t){return t.zoneHeight});var R=w.selectAll(\".\"+n.cn.nodeCentered).data(g);R.enter().append(\"g\").classed(n.cn.nodeCentered,!0).attr(\"transform\",S),R.transition().ease(n.ease).duration(n.duration).attr(\"transform\",S);var F=R.selectAll(\".\"+n.cn.nodeLabelGuide).data(g);F.enter().append(\"path\").classed(n.cn.nodeLabelGuide,!0).attr(\"id\",function(t){return t.uniqueNodeLabelPathId}).attr(\"d\",C).attr(\"transform\",E),F.transition().ease(n.ease).duration(n.duration).attr(\"d\",C).attr(\"transform\",E);var B=R.selectAll(\".\"+n.cn.nodeLabel).data(g);B.enter().append(\"text\").classed(n.cn.nodeLabel,!0).attr(\"transform\",L).style(\"user-select\",\"none\").style(\"cursor\",\"default\").style(\"fill\",\"black\"),B.style(\"text-shadow\",function(t){return t.horizontal?\"-1px 1px 1px #fff, 1px 1px 1px #fff, 1px -1px 1px #fff, -1px -1px 1px #fff\":\"none\"}).each(function(t){s.font(B,t.textFont)}),B.transition().ease(n.ease).duration(n.duration).attr(\"transform\",L);var N=B.selectAll(\".\"+n.cn.nodeLabelTextPath).data(g);N.enter().append(\"textPath\").classed(n.cn.nodeLabelTextPath,!0).attr(\"alignment-baseline\",\"middle\").attr(\"xlink:href\",function(t){return\"#\"+t.uniqueNodeLabelPathId}).attr(\"startOffset\",O).style(\"fill\",z),N.text(function(t){return t.horizontal||t.node.dy>5?t.node.label:\"\"}).attr(\"text-anchor\",function(t){return t.horizontal&&t.left?\"end\":\"start\"}),N.transition().ease(n.ease).duration(n.duration).attr(\"startOffset\",O).style(\"fill\",z)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/gup\":692,\"./constants\":1041,\"@plotly/d3-sankey\":47,d3:149,\"d3-force\":145,tinycolor2:515}],1046:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r<t.length;r++)t[r].i=r;n.mergeArray(e.text,t,\"tx\"),n.mergeArray(e.hovertext,t,\"htx\"),n.mergeArray(e.customdata,t,\"data\"),n.mergeArray(e.textposition,t,\"tp\"),e.textfont&&(n.mergeArray(e.textfont.size,t,\"ts\"),n.mergeArray(e.textfont.color,t,\"tc\"),n.mergeArray(e.textfont.family,t,\"tf\"));var i=e.marker;if(i){n.mergeArray(i.size,t,\"ms\"),n.mergeArray(i.opacity,t,\"mo\"),n.mergeArray(i.symbol,t,\"mx\"),n.mergeArray(i.color,t,\"mc\");var a=i.line;i.line&&(n.mergeArray(a.color,t,\"mlc\"),n.mergeArray(a.width,t,\"mlw\"));var o=i.gradient;o&&\"none\"!==o.type&&(n.mergeArray(o.type,t,\"mgt\"),n.mergeArray(o.color,t,\"mgc\"))}}},{\"../../lib\":694}],1047:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../components/colorbar/attributes\"),o=t(\"../../plots/font_attributes\"),s=t(\"../../components/drawing/attributes\").dash,l=t(\"../../components/drawing\"),c=t(\"./constants\"),u=t(\"../../lib/extend\").extendFlat;e.exports={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\",anim:!0},x0:{valType:\"any\",dflt:0,editType:\"calc+clearAxisTypes\",anim:!0},dx:{valType:\"number\",dflt:1,editType:\"calc\",anim:!0},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\",anim:!0},y0:{valType:\"any\",dflt:0,editType:\"calc+clearAxisTypes\",anim:!0},dy:{valType:\"number\",dflt:1,editType:\"calc\",anim:!0},stackgroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc\"},groupnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},stackgaps:{valType:\"enumerated\",values:[\"infer zero\",\"interpolate\"],dflt:\"infer zero\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},mode:{valType:\"flaglist\",flags:[\"lines\",\"markers\",\"text\"],extras:[\"none\"],editType:\"calc\"},hoveron:{valType:\"flaglist\",flags:[\"points\",\"fills\"],editType:\"style\"},hovertemplate:n({},{keys:c.eventDataKeys}),line:{color:{valType:\"color\",editType:\"style\",anim:!0},width:{valType:\"number\",min:0,dflt:2,editType:\"style\",anim:!0},shape:{valType:\"enumerated\",values:[\"linear\",\"spline\",\"hv\",\"vh\",\"hvh\",\"vhv\"],dflt:\"linear\",editType:\"plot\"},smoothing:{valType:\"number\",min:0,max:1.3,dflt:1,editType:\"plot\"},dash:u({},s,{editType:\"style\"}),simplify:{valType:\"boolean\",dflt:!0,editType:\"plot\"},editType:\"plot\"},connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},cliponaxis:{valType:\"boolean\",dflt:!0,editType:\"plot\"},fill:{valType:\"enumerated\",values:[\"none\",\"tozeroy\",\"tozerox\",\"tonexty\",\"tonextx\",\"toself\",\"tonext\"],editType:\"calc\"},fillcolor:{valType:\"color\",editType:\"style\",anim:!0},marker:u({symbol:{valType:\"enumerated\",values:l.symbolList,dflt:\"circle\",arrayOk:!0,editType:\"style\"},opacity:{valType:\"number\",min:0,max:1,arrayOk:!0,editType:\"style\",anim:!0},size:{valType:\"number\",min:0,dflt:6,arrayOk:!0,editType:\"calc\",anim:!0},maxdisplayed:{valType:\"number\",min:0,dflt:0,editType:\"plot\"},sizeref:{valType:\"number\",dflt:1,editType:\"calc\"},sizemin:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"diameter\",\"area\"],dflt:\"diameter\",editType:\"calc\"},colorbar:a,line:u({width:{valType:\"number\",min:0,arrayOk:!0,editType:\"style\",anim:!0},editType:\"calc\"},i(\"marker.line\",{anim:!0})),gradient:{type:{valType:\"enumerated\",values:[\"radial\",\"horizontal\",\"vertical\",\"none\"],arrayOk:!0,dflt:\"none\",editType:\"calc\"},color:{valType:\"color\",arrayOk:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},i(\"marker\",{anim:!0})),selected:{marker:{opacity:{valType:\"number\",min:0,max:1,editType:\"style\"},color:{valType:\"color\",editType:\"style\"},size:{valType:\"number\",min:0,editType:\"style\"},editType:\"style\"},textfont:{color:{valType:\"color\",editType:\"style\"},editType:\"style\"},editType:\"style\"},unselected:{marker:{opacity:{valType:\"number\",min:0,max:1,editType:\"style\"},color:{valType:\"color\",editType:\"style\"},size:{valType:\"number\",min:0,editType:\"style\"},editType:\"style\"},textfont:{color:{valType:\"color\",editType:\"style\"},editType:\"style\"},editType:\"style\"},textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"middle center\",arrayOk:!0,editType:\"calc\"},textfont:o({editType:\"calc\",colorEditType:\"style\",arrayOk:!0}),r:{valType:\"data_array\",editType:\"calc\"},t:{valType:\"data_array\",editType:\"calc\"}}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../components/drawing\":592,\"../../components/drawing/attributes\":591,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/font_attributes\":769,\"./constants\":1051}],1048:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../constants/numerical\").BADNUM,s=t(\"./subtypes\"),l=t(\"./colorscale_calc\"),c=t(\"./arrays_to_calcdata\"),u=t(\"./calc_selection\");function f(t,e,r,n,i,o,l){var c=e._length,u=t._fullLayout,f=r._id,h=n._id,p=u._firstScatter[d(e)]===e.uid,v=(g(e,u,r,n)||{}).orientation,m=e.fill;r._minDtick=0,n._minDtick=0;var y={padded:!0},x={padded:!0};l&&(y.ppad=x.ppad=l);var b=c<2||i[0]!==i[c-1]||o[0]!==o[c-1];b&&(\"tozerox\"===m||\"tonextx\"===m&&(p||\"h\"===v))?y.tozero=!0:(e.error_y||{}).visible||\"tonexty\"!==m&&\"tozeroy\"!==m&&(s.hasMarkers(e)||s.hasText(e))||(y.padded=!1,y.ppad=0),b&&(\"tozeroy\"===m||\"tonexty\"===m&&(p||\"v\"===v))?x.tozero=!0:\"tonextx\"!==m&&\"tozerox\"!==m||(x.padded=!1),f&&(e._extremes[f]=a.findExtremes(r,i,y)),h&&(e._extremes[h]=a.findExtremes(n,o,x))}function h(t,e){if(s.hasMarkers(t)){var r,n=t.marker,o=1.6*(t.marker.sizeref||1);if(r=\"area\"===t.marker.sizemode?function(t){return Math.max(Math.sqrt((t||0)/o),3)}:function(t){return Math.max((t||0)/o,3)},i.isArrayOrTypedArray(n.size)){var l={type:\"linear\"};a.setConvert(l);for(var c=l.makeCalcdata(t.marker,\"size\"),u=new Array(e),f=0;f<e;f++)u[f]=r(c[f]);return u}return r(n.size)}}function p(t,e){var r=d(e),n=t._firstScatter;n[r]||(n[r]=e.uid)}function d(t){var e=t.stackgroup;return t.xaxis+t.yaxis+t.type+(e?\"-\"+e:\"\")}function g(t,e,r,n){var i=t.stackgroup;if(i){var a=e._scatterStackOpts[r._id+n._id][i],o=\"v\"===a.orientation?n:r;return\"linear\"===o.type||\"log\"===o.type?a:void 0}}e.exports={calc:function(t,e){var r,s,d,v,m,y,x=t._fullLayout,b=a.getFromId(t,e.xaxis||\"x\"),_=a.getFromId(t,e.yaxis||\"y\"),w=b.makeCalcdata(e,\"x\"),k=_.makeCalcdata(e,\"y\"),A=e._length,M=new Array(A),T=e.ids,S=g(e,x,b,_),C=!1;p(x,e);var E,L=\"x\",z=\"y\";for(S?(S.traceIndices.push(e.index),(r=\"v\"===S.orientation)?(z=\"s\",E=\"x\"):(L=\"s\",E=\"y\"),m=\"interpolate\"===S.stackgaps):f(t,e,b,_,w,k,h(e,A)),s=0;s<A;s++){var O=M[s]={},I=n(w[s]),D=n(k[s]);I&&D?(O[L]=w[s],O[z]=k[s]):S&&(r?I:D)?(O[E]=r?w[s]:k[s],O.gap=!0,m?(O.s=o,C=!0):O.s=0):O[L]=O[z]=o,T&&(O.id=String(T[s]))}if(c(M,e),l(t,e),u(M,e),S){for(s=0;s<M.length;)M[s][E]===o?M.splice(s,1):s++;if(i.sort(M,function(t,e){return t[E]-e[E]||t.i-e.i}),C){for(s=0;s<M.length-1&&M[s].gap;)s++;for((y=M[s].s)||(y=M[s].s=0),d=0;d<s;d++)M[d].s=y;for(v=M.length-1;v>s&&M[v].gap;)v--;for(y=M[v].s,d=M.length-1;d>v;d--)M[d].s=y;for(;s<v;)if(M[++s].gap){for(d=s+1;M[d].gap;)d++;for(var P=M[s-1][E],R=M[s-1].s,F=(M[d].s-R)/(M[d][E]-P);s<d;)M[s].s=R+(M[s][E]-P)*F,s++}}}return M},calcMarkerSize:h,calcAxisExpansion:f,setFirstScatter:p,getStackOpts:g}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"./arrays_to_calcdata\":1046,\"./calc_selection\":1049,\"./colorscale_calc\":1050,\"./subtypes\":1071,\"fast-isnumeric\":215}],1049:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){n.isArrayOrTypedArray(e.selectedpoints)&&n.tagSelected(t,e)}},{\"../../lib\":694}],1050:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"./subtypes\");e.exports=function(t,e){a.hasLines(e)&&n(e,\"line\")&&i(t,e,{vals:e.line.color,containerStr:\"line\",cLetter:\"c\"}),a.hasMarkers(e)&&(n(e,\"marker\")&&i(t,e,{vals:e.marker.color,containerStr:\"marker\",cLetter:\"c\"}),n(e,\"marker.line\")&&i(t,e,{vals:e.marker.line.color,containerStr:\"marker.line\",cLetter:\"c\"}))}},{\"../../components/colorscale/calc\":579,\"../../components/colorscale/helpers\":582,\"./subtypes\":1071}],1051:[function(t,e,r){\"use strict\";e.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}},{}],1052:[function(t,e,r){\"use strict\";var n=t(\"./calc\");function i(t,e,r,n,i,a,o){i[n]=!0;var s={i:null,gap:!0,s:0};if(s[o]=r,t.splice(e,0,s),e&&r===t[e-1][o]){var l=t[e-1];s.s=l.s,s.i=l.i,s.gap=l.gap}else a&&(s.s=function(t,e,r,n){var i=t[e-1],a=t[e+1];return a?i?i.s+(a.s-i.s)*(r-i[n])/(a[n]-i[n]):a.s:i.s}(t,e,r,o));e||(t[0].t=t[1].t,t[0].trace=t[1].trace,delete t[1].t,delete t[1].trace)}e.exports=function(t,e){var r=e.xaxis,a=e.yaxis,o=r._id+a._id,s=t._fullLayout._scatterStackOpts[o];if(s){var l,c,u,f,h,p,d,g,v,m,y,x,b,_,w,k=t.calcdata;for(var A in s){var M=(m=s[A]).traceIndices;if(M.length){for(y=\"interpolate\"===m.stackgaps,x=m.groupnorm,\"v\"===m.orientation?(b=\"x\",_=\"y\"):(b=\"y\",_=\"x\"),w=new Array(M.length),l=0;l<w.length;l++)w[l]=!1;p=k[M[0]];var T=new Array(p.length);for(l=0;l<p.length;l++)T[l]=p[l][b];for(l=1;l<M.length;l++){for(h=k[M[l]],c=u=0;c<h.length;c++){for(d=h[c][b];d>T[u]&&u<T.length;u++)i(h,c,T[u],l,w,y,b),c++;if(d!==T[u]){for(f=0;f<l;f++)i(k[M[f]],u,d,f,w,y,b);T.splice(u,0,d)}u++}for(;u<T.length;u++)i(h,c,T[u],l,w,y,b),c++}var S=T.length;for(c=0;c<p.length;c++){for(g=p[c][_]=p[c].s,l=1;l<M.length;l++)(h=k[M[l]])[0].trace._rawLength=h[0].trace._length,h[0].trace._length=S,g+=h[c].s,h[c][_]=g;if(x)for(v=(\"fraction\"===x?g:g/100)||1,l=0;l<M.length;l++){var C=k[M[l]][c];C[_]/=v,C.sNorm=C.s/v}}for(l=0;l<M.length;l++){var E=(h=k[M[l]])[0].trace,L=n.calcMarkerSize(E,E._rawLength),z=Array.isArray(L);if(L&&w[l]||z){var O=L;for(L=new Array(S),c=0;c<S;c++)L[c]=h[c].gap?0:z?O[h[c].i]:O}var I=new Array(S),D=new Array(S);for(c=0;c<S;c++)I[c]=h[c].x,D[c]=h[c].y;n.calcAxisExpansion(t,E,r,a,I,D,L),h[0].t.orientation=m.orientation}}}}}},{\"./calc\":1048}],1053:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=0;e<t.length;e++){var r=t[e];if(\"scatter\"===r.type){var n=r.fill;if(\"none\"!==n&&\"toself\"!==n&&(r.opacity=void 0,\"tonexty\"===n||\"tonextx\"===n))for(var i=e-1;i>=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./stack_defaults\"),u=t(\"./marker_defaults\"),f=t(\"./line_defaults\"),h=t(\"./line_shape_defaults\"),p=t(\"./text_defaults\"),d=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,g){function v(r,i){return n.coerce(t,e,a,r,i)}var m=l(t,e,g,v);if(m||(e.visible=!1),e.visible){var y=c(t,e,g,v),x=!y&&m<o.PTS_LINESONLY?\"lines+markers\":\"lines\";v(\"text\"),v(\"hovertext\"),v(\"mode\",x),s.hasLines(e)&&(f(t,e,r,g,v),h(t,e,v),v(\"connectgaps\"),v(\"line.simplify\")),s.hasMarkers(e)&&u(t,e,r,g,v,{gradient:!0}),s.hasText(e)&&p(t,e,g,v);var b=[];(s.hasMarkers(e)||s.hasText(e))&&(v(\"cliponaxis\"),v(\"marker.maxdisplayed\"),b.push(\"points\")),v(\"fill\",y?y.fillDflt:\"none\"),\"none\"!==e.fill&&(d(t,e,r,v),s.hasLines(e)||h(t,e,v));var _=(e.line||{}).color,w=(e.marker||{}).color;\"tonext\"!==e.fill&&\"toself\"!==e.fill||b.push(\"fills\"),v(\"hoveron\",b.join(\"+\")||\"points\"),\"fills\"!==e.hoveron&&v(\"hovertemplate\");var k=i.getComponentMethod(\"errorbars\",\"supplyDefaults\");k(t,e,_||w||r,{axis:\"y\"}),k(t,e,_||w||r,{axis:\"x\",inherit:\"y\"}),n.coerceSelectionMarkerOpacity(e,v)}}},{\"../../lib\":694,\"../../registry\":825,\"./attributes\":1047,\"./constants\":1051,\"./fillcolor_defaults\":1056,\"./line_defaults\":1060,\"./line_shape_defaults\":1062,\"./marker_defaults\":1066,\"./stack_defaults\":1069,\"./subtypes\":1071,\"./text_defaults\":1072,\"./xy_defaults\":1073}],1055:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return t||0===t}e.exports=function(t,e,r){var a=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},o=n.extractOption(t,e,\"htx\",\"hovertext\");if(i(o))return a(o);var s=n.extractOption(t,e,\"tx\",\"text\");return i(s)?a(s):void 0}},{\"../../lib\":694}],1056:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a){var o=!1;if(e.marker){var s=e.marker.color,l=(e.marker.line||{}).color;s&&!i(s)?o=s:l&&!i(l)&&(o=l)}a(\"fillcolor\",n.addOpacity((e.line||{}).color||o||r,.5))}},{\"../../components/color\":571,\"../../lib\":694}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./subtypes\");e.exports=function(t,e){var r,a;if(\"lines\"===t.mode)return(r=t.line.color)&&n.opacity(r)?r:t.fillcolor;if(\"none\"===t.mode)return t.fill?t.fillcolor:\"\";var o=e.mcc||(t.marker||{}).color,s=e.mlcc||((t.marker||{}).line||{}).color;return(a=o&&n.opacity(o)?o:s&&n.opacity(s)&&(e.mlw||((t.marker||{}).line||{}).width)?s:\"\")?n.opacity(a)<.3?n.addOpacity(a,.3):a:(r=(t.line||{}).color)&&n.opacity(r)&&i.hasLines(t)&&t.line.width?r:t.fillcolor}},{\"../../components/color\":571,\"./subtypes\":1071}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/fx\"),a=t(\"../../registry\"),o=t(\"./get_trace_color\"),s=t(\"../../components/color\"),l=t(\"./fill_hover_text\");e.exports=function(t,e,r,c){var u=t.cd,f=u[0].trace,h=t.xa,p=t.ya,d=h.c2p(e),g=p.c2p(r),v=[d,g],m=f.hoveron||\"\",y=-1!==f.mode.indexOf(\"markers\")?3:.5;if(-1!==m.indexOf(\"points\")){var x=function(t){var e=Math.max(y,t.mrc||0),r=h.c2p(t.x)-d,n=p.c2p(t.y)-g;return Math.max(Math.sqrt(r*r+n*n)-e,1-y/e)},b=i.getDistanceFunction(c,function(t){var e=Math.max(3,t.mrc||0),r=1-1/e,n=Math.abs(h.c2p(t.x)-d);return n<e?r*n/e:n-e+r},function(t){var e=Math.max(3,t.mrc||0),r=1-1/e,n=Math.abs(p.c2p(t.y)-g);return n<e?r*n/e:n-e+r},x);if(i.getClosest(u,b,t),!1!==t.index){var _=u[t.index],w=h.c2p(_.x,!0),k=p.c2p(_.y,!0),A=_.mrc||1;t.index=_.i;var M=u[0].t.orientation,T=M&&(_.sNorm||_.s),S=\"h\"===M?T:_.x,C=\"v\"===M?T:_.y;return n.extendFlat(t,{color:o(f,_),x0:w-A,x1:w+A,xLabelVal:S,y0:k-A,y1:k+A,yLabelVal:C,spikeDistance:x(_),hovertemplate:f.hovertemplate}),l(_,f,t),a.getComponentMethod(\"errorbars\",\"hoverInfo\")(_,f,t),[t]}}if(-1!==m.indexOf(\"fills\")&&f._polygons){var E,L,z,O,I,D,P,R,F,B=f._polygons,N=[],j=!1,V=1/0,U=-1/0,q=1/0,H=-1/0;for(E=0;E<B.length;E++)(z=B[E]).contains(v)&&(j=!j,N.push(z),q=Math.min(q,z.ymin),H=Math.max(H,z.ymax));if(j){var G=((q=Math.max(q,0))+(H=Math.min(H,p._length)))/2;for(E=0;E<N.length;E++)for(O=N[E].pts,L=1;L<O.length;L++)(R=O[L-1][1])>G!=(F=O[L][1])>=G&&(D=O[L-1][0],P=O[L][0],F-R&&(I=D+(P-D)*(G-R)/(F-R),V=Math.min(V,I),U=Math.max(U,I)));V=Math.max(V,0),U=Math.min(U,h._length);var W=s.defaultLine;return s.opacity(f.fillcolor)?W=f.fillcolor:s.opacity((f.line||{}).color)&&(W=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:V,x1:U,y0:G,y1:G,color:W,hovertemplate:\"%{name}\"}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":571,\"../../components/fx\":610,\"../../lib\":694,\"../../registry\":825,\"./fill_hover_text\":1055,\"./get_trace_color\":1057}],1059:[function(t,e,r){\"use strict\";var n={},i=t(\"./subtypes\");n.hasLines=i.hasLines,n.hasMarkers=i.hasMarkers,n.hasText=i.hasText,n.isBubble=i.isBubble,n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.crossTraceDefaults=t(\"./cross_trace_defaults\"),n.calc=t(\"./calc\").calc,n.crossTraceCalc=t(\"./cross_trace_calc\"),n.arraysToCalcdata=t(\"./arrays_to_calcdata\"),n.plot=t(\"./plot\"),n.colorbar=t(\"./marker_colorbar\"),n.style=t(\"./style\").style,n.styleOnSelect=t(\"./style\").styleOnSelect,n.hoverPoints=t(\"./hover\"),n.selectPoints=t(\"./select\"),n.animatable=!0,n.moduleType=\"trace\",n.name=\"scatter\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"./arrays_to_calcdata\":1046,\"./attributes\":1047,\"./calc\":1048,\"./cross_trace_calc\":1052,\"./cross_trace_defaults\":1053,\"./defaults\":1054,\"./hover\":1058,\"./marker_colorbar\":1065,\"./plot\":1067,\"./select\":1068,\"./style\":1070,\"./subtypes\":1071}],1060:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":581,\"../../components/colorscale/helpers\":582,\"../../lib\":694}],1061:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,v,m,y,x,b,_,w,k,A,M,T,S=e.xaxis,C=e.yaxis,E=\"log\"===S.type,L=\"log\"===C.type,z=S._length,O=C._length,I=e.connectGaps,D=e.baseTolerance,P=e.shape,R=\"linear\"===P,F=[],B=f.minTolerance,N=new Array(t.length),j=0;function V(e){var r=t[e];if(!r)return!1;var n=S.c2p(r.x),a=C.c2p(r.y);if(n===i){if(E&&(n=S.c2p(r.x,!0)),n===i)return!1;L&&a===i&&(n*=Math.abs(S._m*O*(S._m>0?o:s)/(C._m*z*(C._m>0?o:s)))),n*=1e3}if(a===i){if(L&&(a=C.c2p(r.y,!0)),a===i)return!1;a*=1e3}return[n,a]}function U(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&c<l){var u=o*a-s*i;if(u*u<l)return!0}}function q(t,e){var r=t[0]/z,n=t[1]/O,i=Math.max(0,-r,r-1,-n,n-1);return i&&void 0!==M&&U(r,n,M,T)&&(i=0),i&&e&&U(r,n,e[0]/z,e[1]/O)&&(i=0),(1+f.toleranceGrowth*i)*D}function H(t,e){var r=t[0]-e[0],n=t[1]-e[1];return Math.sqrt(r*r+n*n)}var G,W,Y,X,Z,$,J,K=f.maxScreensAway,Q=-z*K,tt=z*(1+K),et=-O*K,rt=O*(1+K),nt=[[Q,et,tt,et],[tt,et,tt,rt],[tt,rt,Q,rt],[Q,rt,Q,et]];function it(t){if(t[0]<Q||t[0]>tt||t[1]<et||t[1]>rt)return[u(t[0],Q,tt),u(t[1],et,rt)]}function at(t,e){return t[0]===e[0]&&(t[0]===Q||t[0]===tt)||(t[1]===e[1]&&(t[1]===et||t[1]===rt)||void 0)}function ot(t,e,r){return function(n,i){var a=it(n),o=it(i),s=[];if(a&&o&&at(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function st(t){var e=t[0],r=t[1],n=e===N[j-1][0],i=r===N[j-1][1];if(!n||!i)if(j>1){var a=e===N[j-2][0],o=r===N[j-2][1];n&&(e===Q||e===tt)&&a?o?j--:N[j-1]=t:i&&(r===et||r===rt)&&o?a?j--:N[j-1]=t:N[j++]=t}else N[j++]=t}function lt(t){N[j-1][0]!==t[0]&&N[j-1][1]!==t[1]&&st([Y,X]),st(t),Z=null,Y=X=0}function ct(t){if(M=t[0]/z,T=t[1]/O,G=t[0]<Q?Q:t[0]>tt?tt:0,W=t[1]<et?et:t[1]>rt?rt:0,G||W){if(j)if(Z){var e=J(Z,t);e.length>1&&(lt(e[0]),N[j++]=e[1])}else $=J(N[j-1],t)[0],N[j++]=$;else N[j++]=[G||t[0],W||t[1]];var r=N[j-1];G&&W&&(r[0]!==G||r[1]!==W)?(Z&&(Y!==G&&X!==W?st(Y&&X?(n=Z,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?Q:tt,rt]:[o>0?tt:Q,et]):[Y||G,X||W]):Y&&X&&st([Y,X])),st([G,W])):Y-G&&X-W&&st([G||Y,W||X]),Z=t,Y=G,X=W}else Z&&lt(J(Z,t)[0]),N[j++]=t;var n,i,a,o}for(\"linear\"===P||\"spline\"===P?J=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=nt[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&H(o,t)<H(r[0],t)?r.unshift(o):r.push(o),n++)}return r}:\"hv\"===P||\"vh\"===P?J=function(t,e){var r=[],n=it(t),i=it(e);return n&&i&&at(n,i)?r:(n&&r.push(n),i&&r.push(i),r)}:\"hvh\"===P?J=ot(0,Q,tt):\"vhv\"===P&&(J=ot(1,et,rt)),r=0;r<t.length;r++)if(n=V(r)){for(j=0,Z=null,ct(n),r++;r<t.length;r++){if(!(h=V(r))){if(I)continue;break}if(R&&e.simplify){var ut=V(r+1);if(!((y=H(h,n))<q(h,ut)*B)){for(v=[(h[0]-n[0])/y,(h[1]-n[1])/y],p=n,x=y,b=w=k=0,g=!1,a=h,r++;r<t.length;r++){if(d=ut,ut=V(r+1),!d){if(I)continue;break}if(A=(m=[d[0]-n[0],d[1]-n[1]])[0]*v[1]-m[1]*v[0],w=Math.min(w,A),(k=Math.max(k,A))-w>q(d,ut))break;a=d,(_=m[0]*v[0]+m[1]*v[1])>x?(x=_,h=d,g=!1):_<b&&(b=_,p=d,g=!0)}if(g?(ct(h),a!==p&&ct(p)):(p!==n&&ct(p),a!==h&&ct(h)),ct(a),r>=t.length||!d)break;ct(d),n=d}}else ct(h)}Z&&st([Y||Z[0],X||Z[1]]),F.push(N.slice(0,j))}return F}},{\"../../constants/numerical\":671,\"../../lib\":694,\"./constants\":1051}],1062:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],1063:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a<r.length;a++)(o=(i=r[a][0].trace).stackgroup||\"\")?o in c?l=c[o]:(l=c[o]=h,h++):i.fill in n&&p>=0?l=p:(l=p=h,h++),l<f&&(u=!0),i._groupIndex=f=l;var d=r.slice();u&&d.sort(function(t,e){var r=t[0].trace,n=e[0].trace;return r._groupIndex-n._groupIndex||r.index-n.index});var g={};for(a=0;a<d.length;a++)o=(i=d[a][0].trace).stackgroup||\"\",!0===i.visible?(i._nexttrace=null,i.fill in n&&(s=g[o],i._prevtrace=s||null,s&&(s._nexttrace=i)),i._ownfill=i.fill&&(\"tozero\"===i.fill.substr(0,6)||\"toself\"===i.fill||\"to\"===i.fill.substr(0,2)&&!i._prevtrace),g[o]=i):i._prevtrace=i._nexttrace=i._ownfill=null;return d}},{}],1064:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t){var e=t.marker,r=e.sizeref||1,i=e.sizemin||0,a=\"area\"===e.sizemode?function(t){return Math.sqrt(t/r)}:function(t){return t/r};return function(t){var e=a(t/2);return n(e)&&e>0?Math.max(e,i):0}}},{\"fast-isnumeric\":215}],1065:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":571,\"../../components/colorscale/defaults\":581,\"../../components/colorscale/helpers\":582,\"./subtypes\":1071}],1067:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var v;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter(function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]}),g=Math.ceil(d.length/p),v=0;o.forEach(function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r<e&&v++});var m=Math.round(v*g/3+Math.floor(v/3)*g/7.1);i.forEach(function(t){delete t.vis}),d.forEach(function(t,e){0===Math.round((e+m)%g)&&(t.vis=!0)})}(0,e,r,f,p);var m=!!g&&g.duration>0;function y(t){return m?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,k=n.select(d),A=o(k,\"g\",\"errorbars\"),M=o(k,\"g\",\"lines\"),T=o(k,\"g\",\"points\"),S=o(k,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,A,r,g),!0===_.visible){var C,E;y(k).style(\"opacity\",_.opacity);var L=_.fill.charAt(_.fill.length-1);\"x\"!==L&&\"y\"!==L&&(L=\"\"),r.isRangePlot||(f[0].node3=k);var z,O,I=\"\",D=[],P=_._prevtrace;P&&(I=P._prevRevpath||\"\",E=P._nextFill,D=P._polygons);var R,F,B,N,j,V,U,q=\"\",H=\"\",G=[],W=a.noop;if(C=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(E&&E.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify}),U=_._polygons=new Array(G.length),v=0;v<G.length;v++)_._polygons[v]=h(G[v]);G.length&&(N=G[0][0],V=(j=G[G.length-1])[j.length-1]),W=function(t){return function(e){if(z=R(e),O=B(e),q?L?(q+=\"L\"+z.substr(1),H=O+\"L\"+H.substr(1)):(q+=\"Z\"+z,H=O+\"Z\"+H):(q=z,H=O),c.hasLines(_)&&e.length>1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",z).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",z),l.singleLineStyle(f,i)}}}}}var Y=M.selectAll(\".js-line\").data(G);y(Y.exit()).style(\"opacity\",0).remove(),Y.each(W(!1)),Y.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(W(!0)),l.setClipUrl(Y,r.layerClipId,t),G.length?(C?(C.datum(f),N&&V&&(L?(\"y\"===L?N[1]=V[1]=b.c2p(0,!0):\"x\"===L&&(N[0]=V[0]=x.c2p(0,!0)),y(C).attr(\"d\",\"M\"+V+\"L\"+N+\"L\"+q.substr(1)).call(l.singleFillStyle)):y(C).attr(\"d\",q+\"Z\").call(l.singleFillStyle))):E&&(\"tonext\"===_.fill.substr(0,6)&&q&&I?(\"tonext\"===_.fill?y(E).attr(\"d\",q+\"Z\"+I+\"Z\").call(l.singleFillStyle):y(E).attr(\"d\",q+\"L\"+I.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(D)):(Z(E),_._polygons=null)),_._prevRevpath=H,_._prevPolygons=U):(C?Z(C):E&&Z(E),_._polygons=_._prevRevpath=_._prevPolygons=null),T.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var v=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?v=w?J:$:_&&!w&&(v=K),f&&(d=v),h&&(g=v)}var k,A=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);m&&A.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(k=l.makePointStyleFns(u)),o.each(function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,k,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()}),m?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each(function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()}),o.selectAll(\"text\").call(l.textPointStyle,u,t).each(function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each(function(){y(n.select(this)).attr({x:e,y:r})})}),o.exit().remove()}(T,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(T,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function $(t){return t.filter(function(t){return!t.gap&&t.vis})}function J(t){return t.filter(function(t){return t.vis})}function K(t){return t.filter(function(t){return!t.gap})}function Q(t){return t.id}function tt(t){if(t.ids)return Q}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,v=f(t,e,r);((u=i.selectAll(\"g.trace\").data(v,function(t){return t[0].trace.uid})).enter().append(\"g\").attr(\"class\",function(t){return\"trace scatter trace\"+t[0].trace.uid}).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each(function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each(function(t){a[t]=null}).remove(),u.order().each(function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")})})}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",function(){h&&h()}).each(\"interrupt\",function(){h&&h()}).each(function(){i.selectAll(\"g.trace\").each(function(r,n){p(t,n,e,r,v,this,a)})})):u.each(function(r,n){p(t,n,e,r,v,this,a)});d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/polygon\":706,\"../../registry\":825,\"./line_points\":1061,\"./link_traces\":1063,\"./subtypes\":1071,d3:149}],1068:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r<s.length;r++)s[r].selected=0;else for(r=0;r<s.length;r++)i=s[r],a=l.c2p(i.x),o=c.c2p(i.y),null!==i.i&&e.contains([a,o],!1,r,t)?(u.push({pointNumber:i.i,x:l.c2d(i.x),y:c.c2d(i.y)}),i.selected=1):i.selected=0;return u}},{\"./subtypes\":1071}],1069:[function(t,e,r){\"use strict\";var n=[\"orientation\",\"groupnorm\",\"stackgaps\"];e.exports=function(t,e,r,i){var a=r._scatterStackOpts,o=i(\"stackgroup\");if(o){var s=e.xaxis+e.yaxis,l=a[s];l||(l=a[s]={});var c=l[o],u=!1;c?c.traces.push(e):(c=l[o]={traceIndices:[],traces:[e]},u=!0);for(var f={orientation:e.x&&!e.y?\"h\":\"v\"},h=0;h<n.length;h++){var p=n[h],d=p+\"Found\";if(!c[d]){var g=void 0!==t[p],v=\"orientation\"===p;if((g||u)&&(c[p]=i(p,f[p]),v&&(c.fillDflt=\"h\"===c[p]?\"tonextx\":\"tonexty\"),g&&(c[d]=!0,!u&&(delete c.traces[0][p],v))))for(var m=0;m<c.traces.length-1;m++){var y=c.traces[m];y._input.fill!==y.fill&&(y.fill=c.fillDflt)}}}return c}}},{}],1070:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/drawing\"),a=t(\"../../registry\");function o(t,e,r){i.pointStyle(t.selectAll(\"path.point\"),e,r)}function s(t,e,r){i.textPointStyle(t.selectAll(\"text\"),e,r)}e.exports={style:function(t,e){var r=e?e[0].node3:n.select(t).selectAll(\"g.trace.scatter\");r.style(\"opacity\",function(t){return t[0].trace.opacity}),r.selectAll(\"g.points\").each(function(e){o(n.select(this),e.trace||e[0].trace,t)}),r.selectAll(\"g.text\").each(function(e){s(n.select(this),e.trace||e[0].trace,t)}),r.selectAll(\"g.trace path.js-line\").call(i.lineGroupStyle),r.selectAll(\"g.trace path.js-fill\").call(i.fillGroupStyle),a.getComponentMethod(\"errorbars\",\"style\")(r)},stylePoints:o,styleText:s,styleOnSelect:function(t,e){var r=e[0].node3,n=e[0].trace;n.selectedpoints?(i.selectedPointStyle(r.selectAll(\"path.point\"),n),i.selectedTextStyle(r.selectAll(\"text\"),n)):(o(r,n,t),s(r,n,t))}}},{\"../../components/drawing\":592,\"../../registry\":825,d3:149}],1071:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports={hasLines:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf(\"lines\")},hasMarkers:function(t){return t.visible&&(t.mode&&-1!==t.mode.indexOf(\"markers\")||\"splom\"===t.type)},hasText:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf(\"text\")},isBubble:function(t){return n.isPlainObject(t.marker)&&n.isArrayOrTypedArray(t.marker.size)}}},{\"../../lib\":694}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r,i,a){a=a||{},i(\"textposition\"),n.coerceFont(i,\"textfont\",r.font),a.noSelect||(i(\"selected.textfont.color\"),i(\"unselected.textfont.color\"))}},{\"../../lib\":694}],1073:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");e.exports=function(t,e,r,a){var o,s=a(\"x\"),l=a(\"y\");if(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],r),s){var c=n.minRowLength(s);l?o=Math.min(c,n.minRowLength(l)):(o=c,a(\"y0\"),a(\"dy\"))}else{if(!l)return 0;o=n.minRowLength(l),a(\"x0\"),a(\"dx\")}return e._length=o,o}},{\"../../lib\":694,\"../../registry\":825}],1074:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/attributes\"),o=t(\"../../constants/gl3d_dashes\"),s=t(\"../../constants/gl3d_markers\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll,u=n.line,f=n.marker,h=f.line,p=l({width:u.width,dash:{valType:\"enumerated\",values:Object.keys(o),dflt:\"solid\"}},i(\"line\"));var d=e.exports=c({x:n.x,y:n.y,z:{valType:\"data_array\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),mode:l({},n.mode,{dflt:\"lines+markers\"}),surfaceaxis:{valType:\"enumerated\",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:\"color\"},projection:{x:{show:{valType:\"boolean\",dflt:!1},opacity:{valType:\"number\",min:0,max:1,dflt:1},scale:{valType:\"number\",min:0,max:10,dflt:2/3}},y:{show:{valType:\"boolean\",dflt:!1},opacity:{valType:\"number\",min:0,max:1,dflt:1},scale:{valType:\"number\",min:0,max:10,dflt:2/3}},z:{show:{valType:\"boolean\",dflt:!1},opacity:{valType:\"number\",min:0,max:1,dflt:1},scale:{valType:\"number\",min:0,max:10,dflt:2/3}}},connectgaps:n.connectgaps,line:p,marker:l({symbol:{valType:\"enumerated\",values:Object.keys(s),dflt:\"circle\",arrayOk:!0},size:l({},f.size,{dflt:8}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:l({},f.opacity,{arrayOk:!1}),colorbar:f.colorbar,line:l({width:l({},h.width,{arrayOk:!1})},i(\"marker.line\"))},i(\"marker\")),textposition:l({},n.textposition,{dflt:\"top center\"}),textfont:{color:n.textfont.color,size:n.textfont.size,family:l({},n.textfont.family,{arrayOk:!1})},hoverinfo:l({},a.hoverinfo)},\"calc\",\"nested\");d.x.editType=d.y.editType=d.z.editType=\"calc+clearAxisTypes\"},{\"../../components/colorscale/attributes\":578,\"../../constants/gl3d_dashes\":668,\"../../constants/gl3d_markers\":669,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../scatter/attributes\":1047}],1075:[function(t,e,r){\"use strict\";var n=t(\"../scatter/arrays_to_calcdata\"),i=t(\"../scatter/colorscale_calc\");e.exports=function(t,e){var r=[{x:!1,y:!1,trace:e,t:{}}];return n(r,e),i(t,e),r}},{\"../scatter/arrays_to_calcdata\":1046,\"../scatter/colorscale_calc\":1050}],1076:[function(t,e,r){\"use strict\";var n=t(\"../../registry\");function i(t,e,r,i){if(!e||!e.visible)return null;for(var a=n.getComponentMethod(\"errorbars\",\"makeComputeError\")(e),o=new Array(t.length),s=0;s<t.length;s++){var l=a(+t[s],s);if(\"log\"===i.type){var c=i.c2l(t[s]),u=t[s]-l[0],f=t[s]+l[1];if(o[s]=[(i.c2l(u,!0)-c)*r,(i.c2l(f,!0)-c)*r],u>0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e<t.length;e++)if(t[e])return t[e].length;return 0}(n);if(0===a)return null;for(var o=new Array(a),s=0;s<a;s++){for(var l=[[0,0,0],[0,0,0]],c=0;c<3;c++)if(n[c])for(var u=0;u<2;u++)l[u][c]=n[c][s][u];o[s]=l}return o}},{\"../../registry\":825}],1077:[function(t,e,r){\"use strict\";var n=t(\"gl-line3d\"),i=t(\"gl-scatter3d\"),a=t(\"gl-error3d\"),o=t(\"gl-mesh3d\"),s=t(\"delaunay-triangulate\"),l=t(\"../../lib\"),c=t(\"../../lib/str2rgbarray\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/make_bubble_size_func\"),h=t(\"../../constants/gl3d_dashes\"),p=t(\"../../constants/gl3d_markers\"),d=t(\"./calc_errors\");function g(t,e){this.scene=t,this.uid=e,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode=\"\",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var v=g.prototype;function m(t){return null==t?0:t.indexOf(\"left\")>-1?-1:t.indexOf(\"right\")>-1?1:0}function y(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function x(t,e){return e(4*t)}function b(t){return p[t]}function _(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o<e;o++)void 0===t[o]?a[o]=n:a[o]=r(t[o],i)}else a=r(t,l.identity);return a}function w(t,e){var r,n,i,a,o,s,h=[],p=t.fullSceneLayout,g=t.dataScale,v=p.xaxis,w=p.yaxis,k=p.zaxis,A=e.marker,M=e.line,T=e.x||[],S=e.y||[],C=e.z||[],E=T.length,L=e.xcalendar,z=e.ycalendar,O=e.zcalendar;for(o=0;o<E;o++)r=v.d2l(T[o],0,L)*g[0],n=w.d2l(S[o],0,z)*g[1],i=k.d2l(C[o],0,O)*g[2],h[o]=[r,n,i];if(Array.isArray(e.text))s=e.text;else if(void 0!==e.text)for(s=new Array(E),o=0;o<E;o++)s[o]=e.text;if(a={position:h,mode:e.mode,text:s},\"line\"in e&&(a.lineColor=u(M,1,E),a.lineWidth=M.width,a.lineDashes=M.dash),\"marker\"in e){var I=f(e);a.scatterColor=u(A,1,E),a.scatterSize=_(A.size,E,x,20,I),a.scatterMarker=_(A.symbol,E,b,\"\\u25cf\"),a.scatterLineWidth=A.line.width,a.scatterLineColor=u(A.line,1,E),a.scatterAngle=0}\"textposition\"in e&&(a.textOffset=function(t){var e=[0,0];if(Array.isArray(t))for(var r=0;r<t.length;r++)e[r]=[0,0],t[r]&&(e[r][0]=m(t[r]),e[r][1]=y(t[r]));else e[0]=m(t),e[1]=y(t);return e}(e.textposition),a.textColor=u(e.textfont,1,E),a.textSize=_(e.textfont.size,E,l.identity,12),a.textFont=e.textfont.family,a.textAngle=0);var D=[\"x\",\"y\",\"z\"];for(a.project=[!1,!1,!1],a.projectScale=[1,1,1],a.projectOpacity=[1,1,1],o=0;o<3;++o){var P=e.projection[D[o]];(a.project[o]=P.show)&&(a.projectOpacity[o]=P.opacity,a.projectScale[o]=P.scale)}a.errorBounds=d(e,g,p);var R=function(t){for(var e=[0,0,0],r=[[0,0,0],[0,0,0],[0,0,0]],n=[1,1,1],i=0;i<3;i++){var a=t[i];a&&!1!==a.copy_zstyle&&!1!==t[2].visible&&(a=t[2]),a&&a.visible&&(e[i]=a.width/2,r[i]=c(a.color),n[i]=a.thickness)}return{capSize:e,color:r,lineWidth:n}}([e.error_x,e.error_y,e.error_z]);return a.errorColor=R.color,a.errorLineWidth=R.lineWidth,a.errorCapSize=R.capSize,a.delaunayAxis=e.surfaceaxis,a.delaunayColor=c(e.surfacecolor),a}function k(t){if(Array.isArray(t)){var e=t[0];return Array.isArray(e)&&(t=e),\"rgb(\"+t.slice(0,3).map(function(t){return Math.round(255*t)})+\")\"}return null}v.handlePick=function(t){if(t.object&&(t.object===this.linePlot||t.object===this.delaunayMesh||t.object===this.textMarkers||t.object===this.scatterPlot)){var e=t.index=t.data.index;return t.object.highlight&&t.object.highlight(null),this.scatterPlot&&(t.object=this.scatterPlot,this.scatterPlot.highlight(t.data)),t.textLabel=\"\",this.textLabels&&(Array.isArray(this.textLabels)?(this.textLabels[e]||0===this.textLabels[e])&&(t.textLabel=this.textLabels[e]):t.textLabel=this.textLabels),t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]],!0}},v.update=function(t){var e,r,l,c,u=this.scene.glplot.gl,f=h.solid;this.data=t;var p=w(this.scene,t);\"mode\"in p&&(this.mode=p.mode),\"lineDashes\"in p&&p.lineDashes in h&&(f=h[p.lineDashes]),this.color=k(p.scatterColor)||k(p.lineColor),this.dataPoints=p.position,e={gl:u,position:p.position,color:p.lineColor,lineWidth:p.lineWidth||1,dashes:f[0],dashScale:f[1],opacity:t.opacity,connectGaps:t.connectgaps},-1!==this.mode.indexOf(\"lines\")?this.linePlot?this.linePlot.update(e):(this.linePlot=n(e),this.linePlot._trace=this,this.scene.glplot.add(this.linePlot)):this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose(),this.linePlot=null);var d=t.opacity;if(t.marker&&t.marker.opacity&&(d*=t.marker.opacity),r={gl:u,position:p.position,color:p.scatterColor,size:p.scatterSize,glyph:p.scatterMarker,opacity:d,orthographic:!0,lineWidth:p.scatterLineWidth,lineColor:p.scatterLineColor,project:p.project,projectScale:p.projectScale,projectOpacity:p.projectOpacity},-1!==this.mode.indexOf(\"markers\")?this.scatterPlot?this.scatterPlot.update(r):(this.scatterPlot=i(r),this.scatterPlot._trace=this,this.scatterPlot.highlightScale=1,this.scene.glplot.add(this.scatterPlot)):this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose(),this.scatterPlot=null),c={gl:u,position:p.position,glyph:p.text,color:p.textColor,size:p.textSize,angle:p.textAngle,alignment:p.textOffset,font:p.textFont,orthographic:!0,lineWidth:0,project:!1,opacity:t.opacity},this.textLabels=t.hovertext||t.text,-1!==this.mode.indexOf(\"text\")?this.textMarkers?this.textMarkers.update(c):(this.textMarkers=i(c),this.textMarkers._trace=this,this.textMarkers.highlightScale=1,this.scene.glplot.add(this.textMarkers)):this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose(),this.textMarkers=null),l={gl:u,position:p.position,color:p.errorColor,error:p.errorBounds,lineWidth:p.errorLineWidth,capSize:p.errorCapSize,opacity:t.opacity},this.errorBars?p.errorBounds?this.errorBars.update(l):(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose(),this.errorBars=null):p.errorBounds&&(this.errorBars=a(l),this.errorBars._trace=this,this.scene.glplot.add(this.errorBars)),p.delaunayAxis>=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n<t.length;++n){var c=t[n];!isNaN(c[i])&&isFinite(c[i])&&!isNaN(c[a])&&isFinite(c[a])&&(o.push([c[i],c[a]]),l.push(n))}var u=s(o);for(n=0;n<u.length;++n)for(var f=u[n],h=0;h<f.length;++h)f[h]=l[f[h]];return{positions:t,cells:u,meshColor:e}}(p.position,p.delaunayColor,p.delaunayAxis);g.opacity=t.opacity,this.delaunayMesh?this.delaunayMesh.update(g):(g.gl=u,this.delaunayMesh=o(g),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)},v.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())},e.exports=function(t,e){var r=new g(t,e.uid);return r.update(e),r}},{\"../../constants/gl3d_dashes\":668,\"../../constants/gl3d_markers\":669,\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../lib/str2rgbarray\":717,\"../scatter/make_bubble_size_func\":1064,\"./calc_errors\":1076,\"delaunay-triangulate\":151,\"gl-error3d\":238,\"gl-line3d\":246,\"gl-mesh3d\":270,\"gl-scatter3d\":286}],1078:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/subtypes\"),o=t(\"../scatter/marker_defaults\"),s=t(\"../scatter/line_defaults\"),l=t(\"../scatter/text_defaults\"),c=t(\"./attributes\");e.exports=function(t,e,r,u){function f(r,n){return i.coerce(t,e,c,r,n)}if(function(t,e,r,i){var a=0,o=r(\"x\"),s=r(\"y\"),l=r(\"z\");n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],i),o&&s&&l&&(a=Math.min(o.length,s.length,l.length),e._length=e._xlength=e._ylength=e._zlength=a);return a}(t,e,f,u)){f(\"text\"),f(\"hovertext\"),f(\"mode\"),a.hasLines(e)&&(f(\"connectgaps\"),s(t,e,r,u,f)),a.hasMarkers(e)&&o(t,e,r,u,f,{noSelect:!0}),a.hasText(e)&&l(t,e,u,f,{noSelect:!0});var h=(e.line||{}).color,p=(e.marker||{}).color;f(\"surfaceaxis\")>=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var v=\"projection.\"+d[g];f(v+\".show\")&&(f(v+\".opacity\"),f(v+\".scale\"))}var m=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");m(t,e,h||p||r,{axis:\"z\"}),m(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),m(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":694,\"../../registry\":825,\"../scatter/line_defaults\":1060,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1074}],1079:[function(t,e,r){\"use strict\";var n={};n.plot=t(\"./convert\"),n.attributes=t(\"./attributes\"),n.markerSymbols=t(\"../../constants/gl3d_markers\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],n.calc=t(\"./calc\"),n.moduleType=\"trace\",n.name=\"scatter3d\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\",\"symbols\",\"showLegend\"],n.meta={},e.exports=n},{\"../../constants/gl3d_markers\":669,\"../../plots/gl3d\":785,\"./attributes\":1074,\"./calc\":1075,\"./convert\":1077,\"./defaults\":1078}],1080:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../components/colorbar/attributes\"),s=t(\"../../lib/extend\").extendFlat,l=n.marker,c=n.line,u=l.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:s({},n.mode,{dflt:\"markers\"}),text:s({},n.text,{}),line:{color:c.color,width:c.width,dash:c.dash,shape:s({},c.shape,{values:[\"linear\",\"spline\"]}),smoothing:c.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:s({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:s({symbol:l.symbol,opacity:l.opacity,maxdisplayed:l.maxdisplayed,size:l.size,sizeref:l.sizeref,sizemin:l.sizemin,sizemode:l.sizemode,line:s({width:u.width,editType:\"calc\"},a(\"marker.line\")),gradient:l.gradient,editType:\"calc\"},a(\"marker\"),{colorbar:o}),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:s({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../scatter/attributes\":1047}],1081:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c<h;c++)if(u=e.a[c],f=e.b[c],n(u)&&n(f)){var g=r.ab2xy(+u,+f,!0),v=r.isVisible(+u,+f);v||(d=!0),p[c]={x:g[0],y:g[1],a:u,b:f,vis:v}}else p[c]={x:!1,y:!1};return e._needsCull=d,p[0].carpet=r,p[0].trace=e,s(e,h),i(t,e),a(p,e),o(p,e),p}}},{\"../carpet/lookup_carpetid\":893,\"../scatter/arrays_to_calcdata\":1046,\"../scatter/calc\":1048,\"../scatter/calc_selection\":1049,\"../scatter/colorscale_calc\":1050,\"fast-isnumeric\":215}],1082:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/constants\"),a=t(\"../scatter/subtypes\"),o=t(\"../scatter/marker_defaults\"),s=t(\"../scatter/line_defaults\"),l=t(\"../scatter/line_shape_defaults\"),c=t(\"../scatter/text_defaults\"),u=t(\"../scatter/fillcolor_defaults\"),f=t(\"./attributes\");e.exports=function(t,e,r,h){function p(r,i){return n.coerce(t,e,f,r,i)}p(\"carpet\"),e.xaxis=\"x\",e.yaxis=\"y\";var d=p(\"a\"),g=p(\"b\"),v=Math.min(d.length,g.length);if(v){e._length=v,p(\"text\"),p(\"mode\",v<i.PTS_LINESONLY?\"lines+markers\":\"lines\"),a.hasLines(e)&&(s(t,e,r,h,p),l(t,e,p),p(\"connectgaps\")),a.hasMarkers(e)&&o(t,e,r,h,p,{gradient:!0}),a.hasText(e)&&c(t,e,h,p);var m=[];(a.hasMarkers(e)||a.hasText(e))&&(p(\"marker.maxdisplayed\"),m.push(\"points\")),p(\"fill\"),\"none\"!==e.fill&&(u(t,e,r,p),a.hasLines(e)||l(t,e,p)),\"tonext\"!==e.fill&&\"toself\"!==e.fill||m.push(\"fills\"),p(\"hoveron\",m.join(\"+\")||\"points\"),n.coerceSelectionMarkerOpacity(e,p)}else e.visible=!1}},{\"../../lib\":694,\"../scatter/constants\":1051,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/line_shape_defaults\":1062,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1080}],1083:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){var a=n[i];return t.a=a.a,t.b=a.b,t}},{}],1084:[function(t,e,r){\"use strict\";var n=t(\"../scatter/hover\");e.exports=function(t,e,r,i){var a=n(t,e,r,i);if(a&&!1!==a[0].index){var o=a[0];if(void 0===o.index){var s=1-o.y0/t.ya._length,l=t.xa._length,c=l*s/2,u=l-c;return o.x0=Math.max(Math.min(o.x0,u),c),o.x1=Math.max(Math.min(o.x1,u),c),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,p=h._carpet,d=(f.hi||h.hoverinfo).split(\"+\"),g=[];-1!==d.indexOf(\"all\")&&(d=[\"a\",\"b\"]),-1!==d.indexOf(\"a\")&&w(p.aaxis,f.a),-1!==d.indexOf(\"b\")&&w(p.baxis,f.b);var v=p.ab2ij([f.a,f.b]),m=Math.floor(v[0]),y=v[0]-m,x=Math.floor(v[1]),b=v[1]-x,_=p.evalxy([],m,x,y,b);return g.push(\"y: \"+_[1].toFixed(3)),o.extraText=g.join(\"<br>\"),a}function w(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,g.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../scatter/hover\":1058}],1085:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/marker_colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"../scatter/style\").style,n.styleOnSelect=t(\"../scatter/style\").styleOnSelect,n.hoverPoints=t(\"./hover\"),n.selectPoints=t(\"../scatter/select\"),n.eventData=t(\"./event_data\"),n.moduleType=\"trace\",n.name=\"scattercarpet\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":754,\"../scatter/marker_colorbar\":1065,\"../scatter/select\":1068,\"../scatter/style\":1070,\"./attributes\":1080,\"./calc\":1081,\"./defaults\":1082,\"./event_data\":1083,\"./hover\":1084,\"./plot\":1086}],1086:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s<r.length;s++)l=r[s][0].trace,c=o.selectAll(\"g.trace\"+l.uid+\" .js-line\"),a.setClipUrl(c,r[s][0].carpet._clipPathId,t)}},{\"../../components/drawing\":592,\"../../plots/cartesian/axes\":742,\"../scatter/plot\":1067}],1087:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../scatter/attributes\"),a=t(\"../../plots/attributes\"),o=t(\"../../components/colorscale/attributes\"),s=t(\"../../components/drawing/attributes\").dash,l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll,u=i.marker,f=i.line,h=u.line;e.exports=c({lon:{valType:\"data_array\"},lat:{valType:\"data_array\"},locations:{valType:\"data_array\"},locationmode:{valType:\"enumerated\",values:[\"ISO-3\",\"USA-states\",\"country names\"],dflt:\"ISO-3\"},mode:l({},i.mode,{dflt:\"markers\"}),text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),textfont:i.textfont,textposition:i.textposition,line:{color:f.color,width:f.width,dash:s},connectgaps:i.connectgaps,marker:l({symbol:u.symbol,opacity:u.opacity,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,colorbar:u.colorbar,line:l({width:h.width},o(\"marker.line\")),gradient:u.gradient},o(\"marker\")),fill:{valType:\"enumerated\",values:[\"none\",\"toself\"],dflt:\"none\"},fillcolor:i.fillcolor,selected:i.selected,unselected:i.unselected,hoverinfo:l({},a.hoverinfo,{flags:[\"lon\",\"lat\",\"location\",\"text\",\"name\"]}),hovertemplate:n()},\"calc\",\"nested\")},{\"../../components/colorscale/attributes\":578,\"../../components/drawing/attributes\":591,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../scatter/attributes\":1047}],1088:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../../lib\")._;e.exports=function(t,e){for(var r=Array.isArray(e.locations),c=r?e.locations.length:e._length,u=new Array(c),f=0;f<c;f++){var h=u[f]={};if(r){var p=e.locations[f];h.loc=\"string\"==typeof p?p:null}else{var d=e.lon[f],g=e.lat[f];n(d)&&n(g)?h.lonlat=[+d,+g]:h.lonlat=[i,i]}}return o(u,e),a(t,e),s(u,e),c&&(u[0].t={labels:{lat:l(t,\"lat:\")+\" \",lon:l(t,\"lon:\")+\" \"}}),u}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../scatter/arrays_to_calcdata\":1046,\"../scatter/calc_selection\":1049,\"../scatter/colorscale_calc\":1050,\"fast-isnumeric\":215}],1089:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/subtypes\"),a=t(\"../scatter/marker_defaults\"),o=t(\"../scatter/line_defaults\"),s=t(\"../scatter/text_defaults\"),l=t(\"../scatter/fillcolor_defaults\"),c=t(\"./attributes\");e.exports=function(t,e,r,u){function f(r,i){return n.coerce(t,e,c,r,i)}!function(t,e,r){var n,i,a=0,o=r(\"locations\");if(o)return r(\"locationmode\"),a=o.length;return n=r(\"lon\")||[],i=r(\"lat\")||[],a=Math.min(n.length,i.length),e._length=a,a}(0,e,f)?e.visible=!1:(f(\"text\"),f(\"hovertext\"),f(\"hovertemplate\"),f(\"mode\"),i.hasLines(e)&&(o(t,e,r,u,f),f(\"connectgaps\")),i.hasMarkers(e)&&a(t,e,r,u,f,{gradient:!0}),i.hasText(e)&&s(t,e,u,f),f(\"fill\"),\"none\"!==e.fill&&l(t,e,r,f),n.coerceSelectionMarkerOpacity(e,f))}},{\"../../lib\":694,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1087}],1090:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.location=e.loc?e.loc:null,t}},{}],1091:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../constants/numerical\").BADNUM,o=t(\"../scatter/get_trace_color\"),s=t(\"../scatter/fill_hover_text\"),l=t(\"./attributes\");e.exports=function(t,e,r){var c=t.cd,u=c[0].trace,f=t.xa,h=t.ya,p=t.subplot,d=p.projection.isLonLatOverEdges,g=p.project;if(n.getClosest(c,function(t){var n=t.lonlat;if(n[0]===a)return 1/0;if(d(n))return 1/0;var i=g(n),o=g([e,r]),s=Math.abs(i[0]-o[0]),l=Math.abs(i[1]-o[1]),c=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(s*s+l*l)-c,1-3/c)},t),!1!==t.index){var v=c[t.index],m=v.lonlat,y=[f.c2p(m),h.c2p(m)],x=v.mrc||1;return t.x0=y[0]-x,t.x1=y[0]+x,t.y0=y[1]-x,t.y1=y[1]+x,t.loc=v.loc,t.lon=m[0],t.lat=m[1],t.color=o(u,v),t.extraText=function(t,e,r,n){if(t.hovertemplate)return;var a=e.hi||t.hoverinfo,o=\"all\"===a?l.hoverinfo.flags:a.split(\"+\"),c=-1!==o.indexOf(\"location\")&&Array.isArray(t.locations),u=-1!==o.indexOf(\"lon\"),f=-1!==o.indexOf(\"lat\"),h=-1!==o.indexOf(\"text\"),p=[];function d(t){return i.tickText(r,r.c2l(t),\"hover\").text+\"\\xb0\"}c?p.push(e.loc):u&&f?p.push(\"(\"+d(e.lonlat[0])+\", \"+d(e.lonlat[1])+\")\"):u?p.push(n.lon+d(e.lonlat[0])):f&&p.push(n.lat+d(e.lonlat[1]));h&&s(e,t,p);return p.join(\"<br>\")}(u,v,p.mockAxis,c[0].t.labels),t.hovertemplate=u.hovertemplate,[t]}}},{\"../../components/fx\":610,\"../../constants/numerical\":671,\"../../plots/cartesian/axes\":742,\"../scatter/fill_hover_text\":1055,\"../scatter/get_trace_color\":1057,\"./attributes\":1087}],1092:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/marker_colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.styleOnSelect=t(\"../scatter/style\").styleOnSelect,n.hoverPoints=t(\"./hover\"),n.eventData=t(\"./event_data\"),n.selectPoints=t(\"./select\"),n.moduleType=\"trace\",n.name=\"scattergeo\",n.basePlotModule=t(\"../../plots/geo\"),n.categories=[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],n.meta={},e.exports=n},{\"../../plots/geo\":773,\"../scatter/marker_colorbar\":1065,\"../scatter/style\":1070,\"./attributes\":1087,\"./calc\":1088,\"./defaults\":1089,\"./event_data\":1090,\"./hover\":1091,\"./plot\":1093,\"./select\":1094,\"./style\":1095}],1093:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM,o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../lib/geo_location_utils\").locationToFeature,l=t(\"../../lib/geojson_utils\"),c=t(\"../scatter/subtypes\"),u=t(\"./style\");function f(t,e){var r=t[0].trace;if(Array.isArray(r.locations))for(var n=o(r,e),i=r.locationmode,l=0;l<t.length;l++){var c=t[l],u=s(i,c.loc,n);c.lonlat=u?u.properties.ct:[a,a]}}e.exports=function(t,e,r){for(var o=0;o<r.length;o++)f(r[o],e.topojson);function s(t,e){t.lonlat[0]===a&&n.select(e).remove()}var h=e.layers.frontplot.select(\".scatterlayer\"),p=i.makeTraceGroups(h,r,\"trace scattergeo\");p.selectAll(\"*\").remove(),p.each(function(e){var r=e[0].node3=n.select(this),a=e[0].trace;if(c.hasLines(a)||\"none\"!==a.fill){var o=l.calcTraceToLineCoords(e),f=\"none\"!==a.fill?l.makePolygon(o):l.makeLine(o);r.selectAll(\"path.js-line\").data([{geojson:f,trace:a}]).enter().append(\"path\").classed(\"js-line\",!0).style(\"stroke-miterlimit\",2)}c.hasMarkers(a)&&r.selectAll(\"path.point\").data(i.identity).enter().append(\"path\").classed(\"point\",!0).each(function(t){s(t,this)}),c.hasText(a)&&r.selectAll(\"g\").data(i.identity).enter().append(\"g\").append(\"text\").each(function(t){s(t,this)}),u(t,e)})}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../lib/geo_location_utils\":687,\"../../lib/geojson_utils\":688,\"../../lib/topojson_utils\":721,\"../scatter/subtypes\":1071,\"./style\":1095,d3:149}],1094:[function(t,e,r){\"use strict\";var n=t(\"../scatter/subtypes\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e){var r,a,o,s,l,c=t.cd,u=t.xaxis,f=t.yaxis,h=[],p=c[0].trace;if(!n.hasMarkers(p)&&!n.hasText(p))return[];if(!1===e)for(l=0;l<c.length;l++)c[l].selected=0;else for(l=0;l<c.length;l++)(a=(r=c[l]).lonlat)[0]!==i&&(o=u.c2p(a),s=f.c2p(a),e.contains([o,s],null,l,t)?(h.push({pointNumber:l,lon:a[0],lat:a[1]}),r.selected=1):r.selected=0);return h}},{\"../../constants/numerical\":671,\"../scatter/subtypes\":1071}],1095:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/drawing\"),a=t(\"../../components/color\"),o=t(\"../scatter/style\"),s=o.stylePoints,l=o.styleText;e.exports=function(t,e){e&&function(t,e){var r=e[0].trace,o=e[0].node3;o.style(\"opacity\",e[0].trace.opacity),s(o,r,t),l(o,r,t),o.selectAll(\"path.js-line\").style(\"fill\",\"none\").each(function(t){var e=n.select(this),r=t.trace,o=r.line||{};e.call(a.stroke,o.color).call(i.dashLine,o.dash||\"\",o.width||0),\"none\"!==r.fill&&e.call(a.fill,r.fillcolor)})}(t,e)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../scatter/style\":1070,d3:149}],1096:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../scatter/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=t(\"../../plot_api/edit_types\").overrideAll,l=t(\"./constants\").DASHES,c=i.line,u=i.marker,f=u.line,h=e.exports=s({x:i.x,x0:i.x0,dx:i.dx,y:i.y,y0:i.y0,dy:i.dy,text:i.text,hovertext:i.hovertext,textposition:i.textposition,textfont:i.textfont,mode:{valType:\"flaglist\",flags:[\"lines\",\"markers\",\"text\"],extras:[\"none\"]},line:{color:c.color,width:c.width,shape:{valType:\"enumerated\",values:[\"linear\",\"hv\",\"vh\",\"hvh\",\"vhv\"],dflt:\"linear\",editType:\"plot\"},dash:{valType:\"enumerated\",values:Object.keys(l),dflt:\"solid\"}},marker:o({},a(\"marker\"),{symbol:u.symbol,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,opacity:u.opacity,colorbar:u.colorbar,line:o({},a(\"marker.line\"),{width:f.width})}),connectgaps:i.connectgaps,fill:o({},i.fill,{dflt:\"none\"}),fillcolor:i.fillcolor,selected:{marker:i.selected.marker,textfont:i.selected.textfont},unselected:{marker:i.unselected.marker,textfont:i.unselected.textfont},opacity:n.opacity},\"calc\",\"nested\");h.x.editType=h.y.editType=h.x0.editType=h.y0.editType=\"calc+clearAxisTypes\",h.hovertemplate=i.hovertemplate},{\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../scatter/attributes\":1047,\"./constants\":1097}],1097:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],1098:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./constants\"),d=t(\"../../constants/interactions\").DESELECTDIM,g={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1};function v(t){var e,r=t._length,i=t.textfont,a=t.textposition,o=Array.isArray(a)?a:[a],s=i.color,l=i.size,c=i.family,u={};for(u.text=t.text,u.opacity=t.opacity,u.font={},u.align=[],u.baseline=[],e=0;e<o.length;e++){var f=o[e].split(/\\s+/);switch(f[1]){case\"left\":u.align.push(\"right\");break;case\"right\":u.align.push(\"left\");break;default:u.align.push(f[1])}switch(f[0]){case\"top\":u.baseline.push(\"bottom\");break;case\"bottom\":u.baseline.push(\"top\");break;default:u.baseline.push(f[0])}}if(Array.isArray(s))for(u.color=new Array(r),e=0;e<r;e++)u.color[e]=s[e];else u.color=s;if(Array.isArray(l)||Array.isArray(c))for(u.font=new Array(r),e=0;e<r;e++){var h=u.font[e]={};h.size=Array.isArray(l)?n(l[e])?l[e]:0:l,h.family=Array.isArray(c)?c[e]:c}else u.font={size:l,family:c};return u}function m(t){var e,r,n=t._length,i=t.marker,o={},l=Array.isArray(i.symbol),c=s.isArrayOrTypedArray(i.color),f=s.isArrayOrTypedArray(i.line.color),d=s.isArrayOrTypedArray(i.opacity),g=s.isArrayOrTypedArray(i.size),v=s.isArrayOrTypedArray(i.line.width);if(l||(r=p.OPEN_RE.test(i.symbol)),l||c||f||d){o.colors=new Array(n),o.borderColors=new Array(n);var m=u(i,i.opacity,n),y=u(i.line,i.opacity,n);if(!Array.isArray(y[0])){var x=y;for(y=Array(n),e=0;e<n;e++)y[e]=x}if(!Array.isArray(m[0])){var b=m;for(m=Array(n),e=0;e<n;e++)m[e]=b}for(o.colors=m,o.borderColors=y,e=0;e<n;e++){if(l){var _=i.symbol[e];r=p.OPEN_RE.test(_)}r&&(y[e]=m[e].slice(),m[e]=m[e].slice(),m[e][3]=0)}o.opacity=t.opacity}else r?(o.color=a(i.color,\"uint8\"),o.color[3]=0,o.borderColor=a(i.color,\"uint8\")):(o.color=a(i.color,\"uint8\"),o.borderColor=a(i.line.color,\"uint8\")),o.opacity=t.opacity*i.opacity;if(l)for(o.markers=new Array(n),e=0;e<n;e++)o.markers[e]=T(i.symbol[e]);else o.marker=T(i.symbol);var w,k=h(t);if(g||v){var A,M=o.sizes=new Array(n),S=o.borderSizes=new Array(n),C=0;if(g){for(e=0;e<n;e++)M[e]=k(i.size[e]),C+=M[e];A=C/n}else for(w=k(i.size),e=0;e<n;e++)M[e]=w;if(v)for(e=0;e<n;e++)S[e]=i.line.width[e]/2;else for(w=i.line.width/2,e=0;e<n;e++)S[e]=w;o.sizeAvg=A}else o.size=k(i&&i.size||10),o.borderSizes=k(i.line.width);return o}function y(t,e){var r=t.marker,n={};return e?(e.marker&&e.marker.symbol?n=m(s.extendFlat({},r,e.marker)):e.marker&&(e.marker.size&&(n.size=e.marker.size/2),e.marker.color&&(n.colors=e.marker.color),void 0!==e.marker.opacity&&(n.opacity=e.marker.opacity)),n):n}function x(t,e){var r={};if(!e)return r;if(e.textfont){var n={opacity:1,text:t.text,textposition:t.textposition,textfont:s.extendFlat({},t.textfont)};e.textfont&&s.extendFlat(n.textfont,e.textfont),r=v(n)}return r}function b(t,e){var r={capSize:2*e.width,lineWidth:e.thickness,color:e.color};return e.copy_ystyle&&(r=t.error_y),r}var _=p.SYMBOL_SDF_SIZE,w=p.SYMBOL_SIZE,k=p.SYMBOL_STROKE,A={},M=l.symbolFuncs[0](.05*w);function T(t){if(\"circle\"===t)return null;var e,r,n=l.symbolNumber(t),a=l.symbolFuncs[n%100],o=!!l.symbolNoDot[n%100],s=!!l.symbolNoFill[n%100],c=p.DOT_RE.test(t);return A[t]?A[t]:(e=c&&!o?a(1.1*w)+M:a(w),r=i(e,{w:_,h:_,viewBox:[-w,-w,w,w],stroke:s?k:-k}),A[t]=r,r||null)}e.exports={style:function(t,e){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0};if(!0!==e.visible)return n;if(f.hasText(e)&&(n.text=v(e),n.textSel=x(e,e.selected),n.textUnsel=x(e,e.unselected)),f.hasMarkers(e)&&(n.marker=m(e),n.markerSel=y(e,e.selected),n.markerUnsel=y(e,e.unselected),!e.unselected&&Array.isArray(e.marker.opacity))){var i=e.marker.opacity;for(n.markerUnsel.opacity=new Array(i.length),r=0;r<i.length;r++)n.markerUnsel.opacity[r]=d*i[r]}if(f.hasLines(e)){n.line={overlay:!0,thickness:e.line.width,color:e.line.color,opacity:e.opacity};var a=(p.DASHES[e.line.dash]||[1]).slice();for(r=0;r<a.length;++r)a[r]*=e.line.width;n.line.dashes=a}return e.error_x&&e.error_x.visible&&(n.errorX=b(e,e.error_x)),e.error_y&&e.error_y.visible&&(n.errorY=b(e,e.error_y)),e.fill&&\"none\"!==e.fill&&(n.fill={closed:!0,fill:e.fillcolor,thickness:0}),n},markerStyle:m,markerSelection:y,linePositions:function(t,e,r){var n,i,a=r.length,o=a/2;if(f.hasLines(e)&&o)if(\"hv\"===e.line.shape){for(n=[],i=0;i<o-1;i++)isNaN(r[2*i])||isNaN(r[2*i+1])?n.push(NaN,NaN,NaN,NaN):(n.push(r[2*i],r[2*i+1]),isNaN(r[2*i+2])||isNaN(r[2*i+3])?n.push(NaN,NaN):n.push(r[2*i+2],r[2*i+1]));n.push(r[a-2],r[a-1])}else if(\"hvh\"===e.line.shape){for(n=[],i=0;i<o-1;i++)if(isNaN(r[2*i])||isNaN(r[2*i+1])||isNaN(r[2*i+2])||isNaN(r[2*i+3]))isNaN(r[2*i])||isNaN(r[2*i+1])?n.push(NaN,NaN):n.push(r[2*i],r[2*i+1]),n.push(NaN,NaN);else{var s=(r[2*i]+r[2*i+2])/2;n.push(r[2*i],r[2*i+1],s,r[2*i+1],s,r[2*i+3])}n.push(r[a-2],r[a-1])}else if(\"vhv\"===e.line.shape){for(n=[],i=0;i<o-1;i++)if(isNaN(r[2*i])||isNaN(r[2*i+1])||isNaN(r[2*i+2])||isNaN(r[2*i+3]))isNaN(r[2*i])||isNaN(r[2*i+1])?n.push(NaN,NaN):n.push(r[2*i],r[2*i+1]),n.push(NaN,NaN);else{var l=(r[2*i+1]+r[2*i+3])/2;n.push(r[2*i],r[2*i+1],r[2*i],l,r[2*i+2],l)}n.push(r[a-2],r[a-1])}else if(\"vh\"===e.line.shape){for(n=[],i=0;i<o-1;i++)isNaN(r[2*i])||isNaN(r[2*i+1])?n.push(NaN,NaN,NaN,NaN):(n.push(r[2*i],r[2*i+1]),isNaN(r[2*i+2])||isNaN(r[2*i+3])?n.push(NaN,NaN):n.push(r[2*i],r[2*i+3]));n.push(r[a-2],r[a-1])}else n=r;var c=!1;for(i=0;i<n.length;i++)if(isNaN(n[i])){c=!0;break}var u=c||n.length>p.TOO_MANY_POINTS?\"rect\":f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],d=n[1];for(i=0;i<n.length;i+=2)isNaN(n[i])||isNaN(n[i+1])?(n[i]=h,n[i+1]=d):(h=n[i],d=n[i+1])}return{join:u,positions:n}},errorBarPositions:function(t,e,r,i,a){var s=o.getComponentMethod(\"errorbars\",\"makeComputeError\"),l=c.getFromId(t,e.xaxis),u=c.getFromId(t,e.yaxis),f=r.length/2,h={};function p(t,i){var a=i._id.charAt(0),o=e[\"error_\"+a];if(o&&o.visible&&(\"linear\"===i.type||\"log\"===i.type)){for(var l=s(o),c={x:0,y:1}[a],u={x:[0,1,2,3],y:[2,3,0,1]}[a],p=new Float64Array(4*f),d=1/0,g=-1/0,v=0,m=0;v<f;v++,m+=4){var y=t[v];if(n(y)){var x=r[2*v+c],b=l(y,v),_=b[0],w=b[1];if(n(_)&&n(w)){var k=y-_,A=y+w;p[m+u[0]]=x-i.c2l(k),p[m+u[1]]=i.c2l(A)-x,p[m+u[2]]=0,p[m+u[3]]=0,d=Math.min(d,y-_),g=Math.max(g,y+w)}}}h[a]={positions:r,errors:p,_bnds:[d,g]}}}return p(i,l),p(a,u),h},textPosition:function(t,e,r,n){var i,a=e._length,o={};if(f.hasMarkers(e)){var s=r.font,l=r.align,c=r.baseline;for(o.offset=new Array(a),i=0;i<a;i++){var u=n.sizes?n.sizes[i]:n.size,h=Array.isArray(s)?s[i].size:s.size,p=Array.isArray(l)?l.length>1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,v=g[p],m=g[d],y=u?u/.8+1:0,x=-m*y-.5*m;o.offset[i]=[v*y/h,x/h]}}return o}}},{\"../../components/drawing\":592,\"../../constants/interactions\":670,\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../plots/cartesian/axis_ids\":745,\"../../registry\":825,\"../scatter/make_bubble_size_func\":1064,\"../scatter/subtypes\":1071,\"./constants\":1097,\"color-normalize\":109,\"fast-isnumeric\":215,\"svg-path-sdf\":513}],1099:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../scatter/constants\"),s=t(\"../scatter/subtypes\"),l=t(\"../scatter/xy_defaults\"),c=t(\"../scatter/marker_defaults\"),u=t(\"../scatter/line_defaults\"),f=t(\"../scatter/fillcolor_defaults\"),h=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,p){function d(r,i){return n.coerce(t,e,a,r,i)}var g=!!t.marker&&/-open/.test(t.marker.symbol),v=s.isBubble(t),m=l(t,e,p,d);if(m){var y=m<o.PTS_LINESONLY?\"lines+markers\":\"lines\";d(\"text\"),d(\"hovertext\"),d(\"hovertemplate\"),d(\"mode\",y),s.hasLines(e)&&(d(\"connectgaps\"),u(t,e,r,p,d),d(\"line.shape\")),s.hasMarkers(e)&&(c(t,e,r,p,d),d(\"marker.line.width\",g||v?1:0)),s.hasText(e)&&h(t,e,p,d);var x=(e.line||{}).color,b=(e.marker||{}).color;d(\"fill\"),\"none\"!==e.fill&&f(t,e,r,d);var _=i.getComponentMethod(\"errorbars\",\"supplyDefaults\");_(t,e,x||b||r,{axis:\"y\"}),_(t,e,x||b||r,{axis:\"x\",inherit:\"y\"}),n.coerceSelectionMarkerOpacity(e,d)}else e.visible=!1}},{\"../../lib\":694,\"../../registry\":825,\"../scatter/constants\":1051,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"../scatter/xy_defaults\":1073,\"./attributes\":1096}],1100:[function(t,e,r){\"use strict\";var n=t(\"regl-scatter2d\"),i=t(\"regl-line2d\"),a=t(\"regl-error2d\"),o=t(\"point-cluster\"),s=t(\"array-range\"),l=t(\"gl-text\"),c=t(\"../../registry\"),u=t(\"../../lib\"),f=t(\"../../lib/prepare_regl\"),h=t(\"../../plots/cartesian/axis_ids\"),p=t(\"../../plots/cartesian/autorange\").findExtremes,d=t(\"../../components/color\"),g=t(\"../scatter/subtypes\"),v=t(\"../scatter/calc\"),m=v.calcMarkerSize,y=v.calcAxisExpansion,x=v.setFirstScatter,b=t(\"../scatter/colorscale_calc\"),_=t(\"../scatter/link_traces\"),w=t(\"../scatter/get_trace_color\"),k=t(\"../scatter/fill_hover_text\"),A=t(\"./convert\"),M=t(\"../../constants/numerical\").BADNUM,T=t(\"./constants\").TOO_MANY_POINTS,S=t(\"../../constants/interactions\").DESELECTDIM;function C(t,e,r){var n=t._extremes[e._id],i=p(e,r._bnds,{padded:!0});n.min=n.min.concat(i.min),n.max=n.max.concat(i.max)}function E(t,e){var r=e._scene,n={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[]},i={selectBatch:null,unselectBatch:null,fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:null};return e._scene||((r=e._scene={}).init=function(){u.extendFlat(r,i,n)},r.init(),r.update=function(t){var e=u.repeat(t,r.count);if(r.fill2d&&r.fill2d.update(e),r.scatter2d&&r.scatter2d.update(e),r.line2d&&r.line2d.update(e),r.error2d&&r.error2d.update(e.concat(e)),r.select2d&&r.select2d.update(e),r.glText)for(var n=0;n<r.count;n++)r.glText[n].update(t)},r.draw=function(){for(var t=r.count,e=r.fill2d,n=r.error2d,i=r.line2d,a=r.scatter2d,o=r.glText,s=r.select2d,l=r.selectBatch,c=r.unselectBatch,u=0;u<t;u++)e&&r.fillOrder[u]&&e.draw(r.fillOrder[u]),i&&r.lineOptions[u]&&i.draw(u),n&&(r.errorXOptions[u]&&n.draw(u),r.errorYOptions[u]&&n.draw(u+t)),!a||!r.markerOptions[u]||l&&l[u]||a.draw(u),o[u]&&r.textOptions[u]&&o[u].render();a&&s&&l&&(s.draw(l),a.draw(c)),r.dirty=!1},r.destroy=function(){r.fill2d&&r.fill2d.destroy&&r.fill2d.destroy(),r.scatter2d&&r.scatter2d.destroy&&r.scatter2d.destroy(),r.error2d&&r.error2d.destroy&&r.error2d.destroy(),r.line2d&&r.line2d.destroy&&r.line2d.destroy(),r.select2d&&r.select2d.destroy&&r.select2d.destroy(),r.glText&&r.glText.forEach(function(t){t.destroy&&t.destroy()}),r.lineOptions=null,r.fillOptions=null,r.markerOptions=null,r.markerSelectedOptions=null,r.markerUnselectedOptions=null,r.errorXOptions=null,r.errorYOptions=null,r.textOptions=null,r.textSelectedOptions=null,r.textUnselectedOptions=null,r.selectBatch=null,r.unselectBatch=null,e._scene=null}),r.dirty||u.extendFlat(r,n),r}function L(t,e,r,n){var i=t.xa,a=t.ya,o=t.distance,s=t.dxy,l=t.index,f={pointNumber:l,x:e[l],y:r[l]};f.tx=Array.isArray(n.text)?n.text[l]:n.text,f.htx=Array.isArray(n.hovertext)?n.hovertext[l]:n.hovertext,f.data=Array.isArray(n.customdata)?n.customdata[l]:n.customdata,f.tp=Array.isArray(n.textposition)?n.textposition[l]:n.textposition;var h=n.textfont;h&&(f.ts=Array.isArray(h.size)?h.size[l]:h.size,f.tc=Array.isArray(h.color)?h.color[l]:h.color,f.tf=Array.isArray(h.family)?h.family[l]:h.family);var p=n.marker;p&&(f.ms=u.isArrayOrTypedArray(p.size)?p.size[l]:p.size,f.mo=u.isArrayOrTypedArray(p.opacity)?p.opacity[l]:p.opacity,f.mx=Array.isArray(p.symbol)?p.symbol[l]:p.symbol,f.mc=u.isArrayOrTypedArray(p.color)?p.color[l]:p.color);var d=p&&p.line;d&&(f.mlc=Array.isArray(d.color)?d.color[l]:d.color,f.mlw=u.isArrayOrTypedArray(d.width)?d.width[l]:d.width);var g=p&&p.gradient;g&&\"none\"!==g.type&&(f.mgt=Array.isArray(g.type)?g.type[l]:g.type,f.mgc=Array.isArray(g.color)?g.color[l]:g.color);var v=i.c2p(f.x,!0),m=a.c2p(f.y,!0),y=f.mrc||1,x=n.hoverlabel;x&&(f.hbg=Array.isArray(x.bgcolor)?x.bgcolor[l]:x.bgcolor,f.hbc=Array.isArray(x.bordercolor)?x.bordercolor[l]:x.bordercolor,f.hts=Array.isArray(x.font.size)?x.font.size[l]:x.font.size,f.htc=Array.isArray(x.font.color)?x.font.color[l]:x.font.color,f.htf=Array.isArray(x.font.family)?x.font.family[l]:x.font.family,f.hnl=Array.isArray(x.namelength)?x.namelength[l]:x.namelength);var b=n.hoverinfo;b&&(f.hi=Array.isArray(b)?b[l]:b);var _=n.hovertemplate;_&&(f.ht=Array.isArray(_)?_[l]:_);var A={};return A[t.index]=f,u.extendFlat(t,{color:w(n,f),x0:v-y,x1:v+y,xLabelVal:f.x,y0:m-y,y1:m+y,yLabelVal:f.y,cd:A,distance:o,spikeDistance:s,hovertemplate:f.ht}),f.htx?t.text=f.htx:f.tx?t.text=f.tx:n.text&&(t.text=n.text),k(f,n,t),c.getComponentMethod(\"errorbars\",\"hoverInfo\")(f,n,t),t}function z(t){var e,r,n=t[0],i=n.trace,a=n.t,o=a._scene,s=a.index,l=o.selectBatch[s],c=o.unselectBatch[s],f=o.textOptions[s],h=o.textSelectedOptions[s]||{},p=o.textUnselectedOptions[s]||{},g=u.extendFlat({},f);if(l&&c){var v=h.color,m=p.color,y=f.color,x=Array.isArray(y);for(g.color=new Array(i._length),e=0;e<l.length;e++)r=l[e],g.color[r]=v||(x?y[r]:y);for(e=0;e<c.length;e++){r=c[e];var b=x?y[r]:y;g.color[r]=m||(v?b:d.addOpacity(b,S))}}o.glText[s].update(g)}e.exports={moduleType:\"trace\",name:\"scattergl\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"gl\",\"regl\",\"cartesian\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../scatter/cross_trace_defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),calc:function(t,e){var r,n,i,a=t._fullLayout,s=h.getFromId(t,e.xaxis),l=h.getFromId(t,e.yaxis),c=a._plots[e.xaxis+e.yaxis],f=e._length,p=2*f,d={},g=s.makeCalcdata(e,\"x\"),v=l.makeCalcdata(e,\"y\"),_=new Array(p);for(r=0;r<f;r++)n=g[r],i=v[r],_[2*r]=n===M?NaN:n,_[2*r+1]=i===M?NaN:i;if(\"log\"===s.type)for(r=0;r<p;r+=2)_[r]=s.c2l(_[r]);if(\"log\"===l.type)for(r=1;r<p;r+=2)_[r]=l.c2l(_[r]);if(\"log\"!==s.type&&\"log\"!==l.type)d.tree=o(_);else{var w=d.ids=new Array(f);for(r=0;r<f;r++)w[r]=r}b(t,e);var k,S=function(t,e,r,n,i,a){var o=A.style(t,r);if(o.marker&&(o.marker.positions=n),o.line&&n.length>1&&u.extendFlat(o.line,A.linePositions(t,r,n)),o.errorX||o.errorY){var s=A.errorBarPositions(t,r,n,i,a);o.errorX&&u.extendFlat(o.errorX,s.x),o.errorY&&u.extendFlat(o.errorY,s.y)}return o.text&&(u.extendFlat(o.text,{positions:n},A.textPosition(t,r,o.text,o.marker)),u.extendFlat(o.textSel,{positions:n},A.textPosition(t,r,o.text,o.markerSel)),u.extendFlat(o.textUnsel,{positions:n},A.textPosition(t,r,o.text,o.markerUnsel))),o}(t,0,e,_,g,v),L=E(0,c);return x(a,e),f<T?k=m(e,f):S.marker&&(k=2*(S.marker.sizeAvg||Math.max(S.marker.size,3))),y(t,e,s,l,g,v,k),S.errorX&&C(e,s,S.errorX),S.errorY&&C(e,l,S.errorY),S.fill&&!L.fill2d&&(L.fill2d=!0),S.marker&&!L.scatter2d&&(L.scatter2d=!0),S.line&&!L.line2d&&(L.line2d=!0),!S.errorX&&!S.errorY||L.error2d||(L.error2d=!0),S.text&&!L.glText&&(L.glText=!0),S.marker&&f>=T&&(S.marker.cluster=d.tree),L.lineOptions.push(S.line),L.errorXOptions.push(S.errorX),L.errorYOptions.push(S.errorY),L.fillOptions.push(S.fill),L.markerOptions.push(S.marker),L.markerSelectedOptions.push(S.markerSel),L.markerUnselectedOptions.push(S.markerUnsel),L.textOptions.push(S.text),L.textSelectedOptions.push(S.textSel),L.textUnselectedOptions.push(S.textUnsel),d._scene=L,d.index=L.count,d.x=g,d.y=v,d.positions=_,L.count++,[{x:!1,y:!1,t:d,trace:e}]},plot:function(t,e,r){if(r.length){var o,s,c=t._fullLayout,h=e._scene,p=e.xaxis,d=e.yaxis;if(h)if(f(t,[\"ANGLE_instanced_arrays\",\"OES_element_index_uint\"])){var g=c._glcanvas.data()[0].regl;if(_(t,e,r),h.dirty){if(!0===h.error2d&&(h.error2d=a(g)),!0===h.line2d&&(h.line2d=i(g)),!0===h.scatter2d&&(h.scatter2d=n(g)),!0===h.fill2d&&(h.fill2d=i(g)),!0===h.glText)for(h.glText=new Array(h.count),o=0;o<h.count;o++)h.glText[o]=new l(g);if(h.glText)for(o=0;o<h.count;o++)h.glText[o].update(h.textOptions[o]);if(h.line2d&&(h.line2d.update(h.lineOptions),h.lineOptions=h.lineOptions.map(function(t){if(t&&t.positions){for(var e=t.positions,r=0;r<e.length&&(isNaN(e[r])||isNaN(e[r+1]));)r+=2;for(var n=e.length-2;n>r&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t}),h.line2d.update(h.lineOptions)),h.error2d){var v=(h.errorXOptions||[]).concat(h.errorYOptions||[]);h.error2d.update(v)}h.scatter2d&&h.scatter2d.update(h.markerOptions),h.fillOrder=u.repeat(null,h.count),h.fill2d&&(h.fillOptions=h.fillOptions.map(function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=h.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(h.fillOrder[e]=u);var f,p,d=[],g=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;f<g.length&&isNaN(g[f+1]);)f+=2;for(p=g.length-2;p>f&&isNaN(g[p+1]);)p-=2;0!==g[f+1]&&(d=[g[f],0]),d=d.concat(g.slice(f,p+2)),0!==g[p+1]&&(d=d.concat([g[p],0]))}else if(\"tozerox\"===s.fill){for(f=0;f<g.length&&isNaN(g[f]);)f+=2;for(p=g.length-2;p>f&&isNaN(g[p]);)p-=2;0!==g[f]&&(d=[0,g[f+1]]),d=d.concat(g.slice(f,p+2)),0!==g[p]&&(d=d.concat([0,g[p+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(d=[],i=0,a=0;a<g.length;a+=2)(isNaN(g[a])||isNaN(g[a+1]))&&((d=d.concat(g.slice(i,a))).push(g[i],g[i+1]),i=a+2);d=d.concat(g.slice(i)),i&&d.push(g[i],g[i+1])}else{var v=s._nexttrace;if(v){var m=h.lineOptions[e+1];if(m){var y=m.positions;if(\"tonexty\"===s.fill){for(d=g.slice(),e=Math.floor(y.length/2);e--;){var x=y[2*e],b=y[2*e+1];isNaN(x)||isNaN(b)||d.push(x,b)}t.fill=v.fillcolor}}}}if(s._prevtrace&&\"tonext\"===s._prevtrace.fill){var _=h.lineOptions[e-1].positions,w=d.length/2,k=[i=w];for(a=0;a<_.length;a+=2)(isNaN(_[a])||isNaN(_[a+1]))&&(k.push(a/2+w+1),i=a+2);d=d.concat(_),t.hole=k}return t.fillmode=s.fill,t.opacity=s.opacity,t.positions=d,t}}),h.fill2d.update(h.fillOptions))}h.selectBatch=null,h.unselectBatch=null;var m=c.dragmode,y=\"lasso\"===m||\"select\"===m,x=c.clickmode.indexOf(\"select\")>-1;for(o=0;o<r.length;o++){var b=r[o][0],w=b.trace,k=b.t,A=k.index,M=w._length,T=k.x,S=k.y;if(w.selectedpoints||y||x){if(y||(y=!0),h.selectBatch||(h.selectBatch=[],h.unselectBatch=[]),w.selectedpoints){var C=h.selectBatch[A]=u.selIndices2selPoints(w),E={};for(s=0;s<C.length;s++)E[C[s]]=1;var L=[];for(s=0;s<M;s++)E[s]||L.push(s);h.unselectBatch[A]=L}var O=k.xpx=new Array(M),I=k.ypx=new Array(M);for(s=0;s<M;s++)O[s]=p.c2p(T[s]),I[s]=d.c2p(S[s])}else k.xpx=k.ypx=null}y?(h.select2d||(h.select2d=n(c._glcanvas.data()[1].regl)),h.scatter2d&&h.selectBatch&&h.selectBatch.length&&h.scatter2d.update(h.markerUnselectedOptions.map(function(t,e){return h.selectBatch[e]?t:null})),h.select2d&&(h.select2d.update(h.markerOptions),h.select2d.update(h.markerSelectedOptions)),h.glText&&r.forEach(function(t){t&&t[0]&&t[0].trace&&z(t)})):h.scatter2d&&h.scatter2d.update(h.markerOptions);var D={viewport:function(t,e,r){var n=t._size,i=t.width,a=t.height;return[n.l+e.domain[0]*n.w,n.b+r.domain[0]*n.h,i-n.r-(1-e.domain[1])*n.w,a-n.t-(1-r.domain[1])*n.h]}(c,p,d),range:[(p._rl||p.range)[0],(d._rl||d.range)[0],(p._rl||p.range)[1],(d._rl||d.range)[1]]},P=u.repeat(D,h.count);h.fill2d&&h.fill2d.update(P),h.line2d&&h.line2d.update(P),h.error2d&&h.error2d.update(P.concat(P)),h.scatter2d&&h.scatter2d.update(P),h.select2d&&h.select2d.update(P),h.glText&&h.glText.forEach(function(t){t.update(D)})}else h.init()}},hoverPoints:function(t,e,r,n){var i,a,o,s,l,c,u,f,h,p=t.cd,d=p[0].t,g=p[0].trace,v=t.xa,m=t.ya,y=d.x,x=d.y,b=v.c2p(e),_=m.c2p(r),w=t.distance;if(d.tree){var k=v.p2c(b-w),A=v.p2c(b+w),M=m.p2c(_-w),T=m.p2c(_+w);i=\"x\"===n?d.tree.range(Math.min(k,A),Math.min(m._rl[0],m._rl[1]),Math.max(k,A),Math.max(m._rl[0],m._rl[1])):d.tree.range(Math.min(k,A),Math.min(M,T),Math.max(k,A),Math.max(M,T))}else{if(!d.ids)return[t];i=d.ids}var S=w;if(\"x\"===n)for(l=0;l<i.length;l++)o=y[i[l]],(c=Math.abs(v.c2p(o)-b))<S&&(S=c,u=m.c2p(x[i[l]])-_,h=Math.sqrt(c*c+u*u),a=i[l]);else for(l=0;l<i.length;l++)o=y[i[l]],s=x[i[l]],c=v.c2p(o)-b,u=m.c2p(s)-_,(f=Math.sqrt(c*c+u*u))<S&&(S=h=f,a=i[l]);return t.index=a,t.distance=S,t.dxy=h,void 0===a?[t]:(L(t,y,x,g),[t])},selectPoints:function(t,e){var r=t.cd,n=[],i=r[0].trace,a=r[0].t,o=i._length,l=a.x,c=a.y,u=a._scene;if(!u)return n;var f=g.hasText(i),h=g.hasMarkers(i),p=!h&&!f;if(!0!==i.visible||p)return n;var d,v=null,m=null;if(!1===e||e.degenerate)m=s(o);else for(v=[],m=[],d=0;d<o;d++)e.contains([a.xpx[d],a.ypx[d]],!1,d,t)?(v.push(d),n.push({pointNumber:d,x:l[d],y:c[d]})):m.push(d);if(u.selectBatch||(u.selectBatch=[],u.unselectBatch=[]),!u.selectBatch[a.index]){for(d=0;d<u.count;d++)u.selectBatch[d]=[],u.unselectBatch[d]=[];h&&u.scatter2d.update(u.markerUnselectedOptions)}return u.selectBatch[a.index]=v,u.unselectBatch[a.index]=m,f&&z(r),n},sceneUpdate:E,calcHover:L,meta:{}}},{\"../../components/color\":571,\"../../constants/interactions\":670,\"../../constants/numerical\":671,\"../../lib\":694,\"../../lib/prepare_regl\":707,\"../../plots/cartesian\":754,\"../../plots/cartesian/autorange\":741,\"../../plots/cartesian/axis_ids\":745,\"../../registry\":825,\"../scatter/calc\":1048,\"../scatter/colorscale_calc\":1050,\"../scatter/cross_trace_defaults\":1053,\"../scatter/fill_hover_text\":1055,\"../scatter/get_trace_color\":1057,\"../scatter/link_traces\":1063,\"../scatter/marker_colorbar\":1065,\"../scatter/subtypes\":1071,\"./attributes\":1096,\"./constants\":1097,\"./convert\":1098,\"./defaults\":1099,\"array-range\":56,\"gl-text\":307,\"point-cluster\":455,\"regl-error2d\":476,\"regl-line2d\":477,\"regl-scatter2d\":478}],1101:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../scattergeo/attributes\"),a=t(\"../scatter/attributes\"),o=t(\"../../plots/mapbox/layout_attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../components/colorbar/attributes\"),c=t(\"../../lib/extend\").extendFlat,u=t(\"../../plot_api/edit_types\").overrideAll,f=i.line,h=i.marker;e.exports=u({lon:i.lon,lat:i.lat,mode:c({},a.mode,{dflt:\"markers\"}),text:c({},a.text,{}),hovertext:c({},a.hovertext,{}),line:{color:f.color,width:f.width},connectgaps:a.connectgaps,marker:{symbol:{valType:\"string\",dflt:\"circle\",arrayOk:!0},opacity:h.opacity,size:h.size,sizeref:h.sizeref,sizemin:h.sizemin,sizemode:h.sizemode,color:h.color,colorscale:h.colorscale,cauto:h.cauto,cmax:h.cmax,cmin:h.cmin,autocolorscale:h.autocolorscale,reversescale:h.reversescale,showscale:h.showscale,colorbar:l},fill:i.fill,fillcolor:a.fillcolor,textfont:o.layers.symbol.textfont,textposition:o.layers.symbol.textposition,selected:{marker:a.selected.marker},unselected:{marker:a.unselected.marker},hoverinfo:c({},s.hoverinfo,{flags:[\"lon\",\"lat\",\"text\",\"name\"]}),hovertemplate:n()},\"calc\",\"nested\")},{\"../../components/colorbar/attributes\":572,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739,\"../../plots/mapbox/layout_attributes\":802,\"../scatter/attributes\":1047,\"../scattergeo/attributes\":1087}],1102:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM,o=t(\"../../lib/geojson_utils\"),s=t(\"../../components/colorscale\"),l=t(\"../../components/drawing\"),c=t(\"../scatter/make_bubble_size_func\"),u=t(\"../scatter/subtypes\"),f=t(\"../../plots/mapbox/convert_text_opts\");function h(){return{geojson:o.makeBlank(),layout:{visibility:\"none\"},paint:{}}}function p(t){return i.isArrayOrTypedArray(t)?function(t){return t}:t?function(){return t}:d}function d(){return\"\"}function g(t){return t[0]===a}e.exports=function(t){var e,r=t[0].trace,a=!0===r.visible,v=\"none\"!==r.fill,m=u.hasLines(r),y=u.hasMarkers(r),x=u.hasText(r),b=y&&\"circle\"===r.marker.symbol,_=y&&\"circle\"!==r.marker.symbol,w=h(),k=h(),A=h(),M=h(),T={fill:w,line:k,circle:A,symbol:M};if(!a)return T;if((v||m)&&(e=o.calcTraceToLineCoords(t)),v&&(w.geojson=o.makePolygon(e),w.layout.visibility=\"visible\",i.extendFlat(w.paint,{\"fill-color\":r.fillcolor})),m&&(k.geojson=o.makeLine(e),k.layout.visibility=\"visible\",i.extendFlat(k.paint,{\"line-width\":r.line.width,\"line-color\":r.line.color,\"line-opacity\":r.opacity})),b){var S=function(t){var e,r,a,o,u=t[0].trace,f=u.marker,h=u.selectedpoints,p=i.isArrayOrTypedArray(f.color),d=i.isArrayOrTypedArray(f.size),v=i.isArrayOrTypedArray(f.opacity);function m(t){return u.opacity*t}p&&(r=s.hasColorscale(u,\"marker\")?s.makeColorScaleFunc(s.extractScale(f,{cLetter:\"c\"})):i.identity);d&&(a=c(u));v&&(o=function(t){var e=n(t)?+i.constrain(t,0,1):0;return m(e)});var y,x=[];for(e=0;e<t.length;e++){var b=t[e],_=b.lonlat;if(!g(_)){var w={};r&&(w.mcc=b.mcc=r(b.mc)),a&&(w.mrc=b.mrc=a(b.ms)),o&&(w.mo=o(b.mo)),h&&(w.selected=b.selected||0),x.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:_},properties:w})}}if(h)for(y=l.makeSelectedPointStyleFns(u),e=0;e<x.length;e++){var k=x[e].properties;y.selectedOpacityFn&&(k.mo=m(y.selectedOpacityFn(k))),y.selectedColorFn&&(k.mcc=y.selectedColorFn(k)),y.selectedSizeFn&&(k.mrc=y.selectedSizeFn(k))}return{geojson:{type:\"FeatureCollection\",features:x},mcc:p||y&&y.selectedColorFn?{type:\"identity\",property:\"mcc\"}:f.color,mrc:d||y&&y.selectedSizeFn?{type:\"identity\",property:\"mrc\"}:(A=f.size,A/2),mo:v||y&&y.selectedOpacityFn?{type:\"identity\",property:\"mo\"}:m(f.opacity)};var A}(t);A.geojson=S.geojson,A.layout.visibility=\"visible\",i.extendFlat(A.paint,{\"circle-color\":S.mcc,\"circle-radius\":S.mrc,\"circle-opacity\":S.mo})}if((_||x)&&(M.geojson=function(t){for(var e=t[0].trace,r=(e.marker||{}).symbol,n=e.text,i=\"circle\"!==r?p(r):d,a=u.hasText(e)?p(n):d,o=[],s=0;s<t.length;s++){var l=t[s];g(l.lonlat)||o.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:l.lonlat},properties:{symbol:i(l.mx),text:a(l.tx)}})}return{type:\"FeatureCollection\",features:o}}(t),i.extendFlat(M.layout,{visibility:\"visible\",\"icon-image\":\"{symbol}-15\",\"text-field\":\"{text}\"}),_&&(i.extendFlat(M.layout,{\"icon-size\":r.marker.size/10}),i.extendFlat(M.paint,{\"icon-opacity\":r.opacity*r.marker.opacity,\"icon-color\":r.marker.color})),x)){var C=(r.marker||{}).size,E=f(r.textposition,C);i.extendFlat(M.layout,{\"text-size\":r.textfont.size,\"text-anchor\":E.anchor,\"text-offset\":E.offset}),i.extendFlat(M.paint,{\"text-color\":r.textfont.color,\"text-opacity\":r.opacity})}return T}},{\"../../components/colorscale\":583,\"../../components/drawing\":592,\"../../constants/numerical\":671,\"../../lib\":694,\"../../lib/geojson_utils\":688,\"../../plots/mapbox/convert_text_opts\":799,\"../scatter/make_bubble_size_func\":1064,\"../scatter/subtypes\":1071,\"fast-isnumeric\":215}],1103:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/subtypes\"),a=t(\"../scatter/marker_defaults\"),o=t(\"../scatter/line_defaults\"),s=t(\"../scatter/text_defaults\"),l=t(\"../scatter/fillcolor_defaults\"),c=t(\"./attributes\");e.exports=function(t,e,r,u){function f(r,i){return n.coerce(t,e,c,r,i)}if(function(t,e,r){var n=r(\"lon\")||[],i=r(\"lat\")||[],a=Math.min(n.length,i.length);return e._length=a,a}(0,e,f)){if(f(\"text\"),f(\"hovertext\"),f(\"hovertemplate\"),f(\"mode\"),i.hasLines(e)&&(o(t,e,r,u,f,{noDash:!0}),f(\"connectgaps\")),i.hasMarkers(e)){a(t,e,r,u,f,{noLine:!0});var h=e.marker;\"circle\"!==h.symbol&&(n.isArrayOrTypedArray(h.size)&&(h.size=h.size[0]),n.isArrayOrTypedArray(h.color)&&(h.color=h.color[0]))}i.hasText(e)&&s(t,e,u,f,{noSelect:!0}),f(\"fill\"),\"none\"!==e.fill&&l(t,e,r,f),n.coerceSelectionMarkerOpacity(e,f)}else e.visible=!1}},{\"../../lib\":694,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1101}],1104:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t}},{}],1105:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\"),o=t(\"../scatter/fill_hover_text\"),s=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){var l=t.cd,c=l[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(l,function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)},t),!1!==t.index){var g=l[t.index],v=g.lonlat,m=[i.modHalf(v[0],360)+p,v[1]],y=u.c2p(m),x=f.c2p(m),b=g.mrc||1;return t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b,t.color=a(c,g),t.extraText=function(t,e,r){if(t.hovertemplate)return;var n=(e.hi||t.hoverinfo).split(\"+\"),i=-1!==n.indexOf(\"all\"),a=-1!==n.indexOf(\"lon\"),s=-1!==n.indexOf(\"lat\"),l=e.lonlat,c=[];function u(t){return t+\"\\xb0\"}i||a&&s?c.push(\"(\"+u(l[0])+\", \"+u(l[1])+\")\"):a?c.push(r.lon+u(l[0])):s&&c.push(r.lat+u(l[1]));(i||-1!==n.indexOf(\"text\"))&&o(e,t,c);return c.join(\"<br>\")}(c,g,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":610,\"../../constants/numerical\":671,\"../../lib\":694,\"../scatter/fill_hover_text\":1055,\"../scatter/get_trace_color\":1057}],1106:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/marker_colorbar\"),n.calc=t(\"../scattergeo/calc\"),n.plot=t(\"./plot\"),n.hoverPoints=t(\"./hover\"),n.eventData=t(\"./event_data\"),n.selectPoints=t(\"./select\"),n.style=function(t,e){e&&e[0].trace._glTrace.update(e)},n.moduleType=\"trace\",n.name=\"scattermapbox\",n.basePlotModule=t(\"../../plots/mapbox\"),n.categories=[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatterlike\"],n.meta={},e.exports=n},{\"../../plots/mapbox\":800,\"../scatter/marker_colorbar\":1065,\"../scattergeo/calc\":1088,\"./attributes\":1101,\"./defaults\":1103,\"./event_data\":1104,\"./hover\":1105,\"./plot\":1107,\"./select\":1108}],1107:[function(t,e,r){\"use strict\";var n=t(\"./convert\");function i(t,e){this.subplot=t,this.uid=e,this.sourceIds={fill:e+\"-source-fill\",line:e+\"-source-line\",circle:e+\"-source-circle\",symbol:e+\"-source-symbol\"},this.layerIds={fill:e+\"-layer-fill\",line:e+\"-layer-line\",circle:e+\"-layer-circle\",symbol:e+\"-layer-symbol\"},this.order=[\"fill\",\"line\",\"circle\",\"symbol\"]}var a=i.prototype;a.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},a.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},a.addLayer=function(t,e){this.subplot.map.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint})},a.update=function(t){for(var e=this.subplot,r=n(t),i=0;i<this.order.length;i++){var a=this.order[i],o=r[a];e.setOptions(this.layerIds[a],\"setLayoutProperty\",o.layout),\"visible\"===o.layout.visibility&&(this.setSourceData(a,o),e.setOptions(this.layerIds[a],\"setPaintProperty\",o.paint))}t[0].trace._glTrace=this},a.dispose=function(){for(var t=this.subplot.map,e=0;e<this.order.length;e++){var r=this.order[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=new i(t,e[0].trace.uid),a=n(e),o=0;o<r.order.length;o++){var s=r.order[o],l=a[s];r.addSource(s,l),r.addLayer(s,l)}return e[0].trace._glTrace=r,r}},{\"./convert\":1102}],1108:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/subtypes\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e){var r,o=t.cd,s=t.xaxis,l=t.yaxis,c=[],u=o[0].trace;if(!i.hasMarkers(u))return[];if(!1===e)for(r=0;r<o.length;r++)o[r].selected=0;else for(r=0;r<o.length;r++){var f=o[r],h=f.lonlat;if(h[0]!==a){var p=[n.modHalf(h[0],360),h[1]],d=[s.c2p(p),l.c2p(p)];e.contains(d,null,r,t)?(c.push({pointNumber:r,lon:h[0],lat:h[1]}),f.selected=1):f.selected=0}}return c}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../scatter/subtypes\":1071}],1109:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatter/attributes\"),o=t(\"../../plots/attributes\"),s=a.line;e.exports={mode:a.mode,r:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},theta:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},r0:{valType:\"any\",dflt:0,editType:\"calc+clearAxisTypes\"},dr:{valType:\"number\",dflt:1,editType:\"calc\"},theta0:{valType:\"any\",dflt:0,editType:\"calc+clearAxisTypes\"},dtheta:{valType:\"number\",editType:\"calc\"},thetaunit:{valType:\"enumerated\",values:[\"radians\",\"degrees\",\"gradians\"],dflt:\"degrees\",editType:\"calc+clearAxisTypes\"},text:a.text,hovertext:a.hovertext,line:{color:s.color,width:s.width,dash:s.dash,shape:i({},s.shape,{values:[\"linear\",\"spline\"]}),smoothing:s.smoothing,editType:\"calc\"},connectgaps:a.connectgaps,marker:a.marker,cliponaxis:i({},a.cliponaxis,{dflt:!1}),textposition:a.textposition,textfont:a.textfont,fill:i({},a.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:a.fillcolor,hoverinfo:i({},o.hoverinfo,{flags:[\"r\",\"theta\",\"text\",\"name\"]}),hoveron:a.hoveron,hovertemplate:n(),selected:a.selected,unselected:a.unselected}},{\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../scatter/attributes\":1047}],1110:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/cartesian/axes\"),o=t(\"../scatter/colorscale_calc\"),s=t(\"../scatter/arrays_to_calcdata\"),l=t(\"../scatter/calc_selection\"),c=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,u=e.subplot,f=r[u].radialaxis,h=r[u].angularaxis,p=f.makeCalcdata(e,\"r\"),d=h.makeCalcdata(e,\"theta\"),g=e._length,v=new Array(g),m=0;m<g;m++){var y=p[m],x=d[m],b=v[m]={};n(y)&&n(x)?(b.r=y,b.theta=x):b.r=i}var _=c(e,g);return e._extremes.x=a.findExtremes(f,p,{ppad:_}),o(t,e),s(v,e),l(v,e),v}},{\"../../constants/numerical\":671,\"../../plots/cartesian/axes\":742,\"../scatter/arrays_to_calcdata\":1046,\"../scatter/calc\":1048,\"../scatter/calc_selection\":1049,\"../scatter/colorscale_calc\":1050,\"fast-isnumeric\":215}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/subtypes\"),a=t(\"../scatter/marker_defaults\"),o=t(\"../scatter/line_defaults\"),s=t(\"../scatter/line_shape_defaults\"),l=t(\"../scatter/text_defaults\"),c=t(\"../scatter/fillcolor_defaults\"),u=t(\"../scatter/constants\").PTS_LINESONLY,f=t(\"./attributes\");function h(t,e,r,n){var i,a=n(\"r\"),o=n(\"theta\");if(a)o?i=Math.min(a.length,o.length):(i=a.length,n(\"theta0\"),n(\"dtheta\"));else{if(!o)return 0;i=e.theta.length,n(\"r0\"),n(\"dr\")}return e._length=i,i}e.exports={handleRThetaDefaults:h,supplyDefaults:function(t,e,r,p){function d(r,i){return n.coerce(t,e,f,r,i)}var g=h(0,e,0,d);if(g){d(\"thetaunit\"),d(\"mode\",g<u?\"lines+markers\":\"lines\"),d(\"text\"),d(\"hovertext\"),\"fills\"!==e.hoveron&&d(\"hovertemplate\"),i.hasLines(e)&&(o(t,e,r,p,d),s(t,e,d),d(\"connectgaps\")),i.hasMarkers(e)&&a(t,e,r,p,d,{gradient:!0}),i.hasText(e)&&l(t,e,p,d);var v=[];(i.hasMarkers(e)||i.hasText(e))&&(d(\"cliponaxis\"),d(\"marker.maxdisplayed\"),v.push(\"points\")),d(\"fill\"),\"none\"!==e.fill&&(c(t,e,r,d),i.hasLines(e)||s(t,e,d)),\"tonext\"!==e.fill&&\"toself\"!==e.fill||v.push(\"fills\"),d(\"hoveron\",v.join(\"+\")||\"points\"),n.coerceSelectionMarkerOpacity(e,d)}else e.visible=!1}}},{\"../../lib\":694,\"../scatter/constants\":1051,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/line_shape_defaults\":1062,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1109}],1112:[function(t,e,r){\"use strict\";var n=t(\"../scatter/hover\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\");function o(t,e,r,n){var o=r.radialAxis,s=r.angularAxis;o._hovertitle=\"r\",s._hovertitle=\"\\u03b8\";var l=t.hi||e.hoverinfo,c=[];function u(t,e){c.push(t._hovertitle+\": \"+i.tickText(t,e,\"hover\").text)}if(!e.hovertemplate){var f=l.split(\"+\");if(-1!==f.indexOf(\"all\")&&(f=[\"r\",\"theta\",\"text\"]),-1!==f.indexOf(\"r\")&&u(o,o.c2l(t.r)),-1!==f.indexOf(\"theta\")){var h=t.theta;u(s,\"degrees\"===s.thetaunit?a.rad2deg(h):h)}-1!==f.indexOf(\"text\")&&n.text&&(c.push(n.text),delete n.text),n.extraText=c.join(\"<br>\")}}e.exports={hoverPoints:function(t,e,r,i){var a=n(t,e,r,i);if(a&&!1!==a[0].index){var s=a[0];if(void 0===s.index)return a;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,o(c,u,l,s),s.hovertemplate=u.hovertemplate,a}},makeHoverPointText:o}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../scatter/hover\":1058}],1113:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":809,\"../scatter/marker_colorbar\":1065,\"../scatter/select\":1068,\"../scatter/style\":1070,\"./attributes\":1109,\"./calc\":1110,\"./defaults\":1111,\"./hover\":1112,\"./plot\":1114}],1114:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c<r.length;c++)for(var u=r[c],f=0;f<u.length;f++){var h=u[f],p=h.r;if(p===i)h.x=h.y=i;else{var d=s.c2g(p),g=l.c2g(h.theta);h.x=d*Math.cos(g),h.y=d*Math.sin(g)}}n(t,o,r,a)}},{\"../../constants/numerical\":671,\"../scatter/plot\":1067}],1115:[function(t,e,r){\"use strict\";var n=t(\"../scatterpolar/attributes\"),i=t(\"../scattergl/attributes\");e.exports={mode:n.mode,r:n.r,theta:n.theta,r0:n.r0,dr:n.dr,theta0:n.theta0,dtheta:n.dtheta,thetaunit:n.thetaunit,text:n.text,hovertext:n.hovertext,hovertemplate:n.hovertemplate,line:i.line,connectgaps:i.connectgaps,marker:i.marker,fill:i.fill,fillcolor:i.fillcolor,textposition:i.textposition,textfont:i.textfont,hoverinfo:n.hoverinfo,selected:n.selected,unselected:n.unselected}},{\"../scattergl/attributes\":1096,\"../scatterpolar/attributes\":1109}],1116:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/subtypes\"),a=t(\"../scatterpolar/defaults\").handleRThetaDefaults,o=t(\"../scatter/marker_defaults\"),s=t(\"../scatter/line_defaults\"),l=t(\"../scatter/text_defaults\"),c=t(\"../scatter/fillcolor_defaults\"),u=t(\"../scatter/constants\").PTS_LINESONLY,f=t(\"./attributes\");e.exports=function(t,e,r,h){function p(r,i){return n.coerce(t,e,f,r,i)}var d=a(t,e,h,p);d?(p(\"thetaunit\"),p(\"mode\",d<u?\"lines+markers\":\"lines\"),p(\"text\"),p(\"hovertext\"),\"fills\"!==e.hoveron&&p(\"hovertemplate\"),i.hasLines(e)&&(s(t,e,r,h,p),p(\"connectgaps\")),i.hasMarkers(e)&&o(t,e,r,h,p),i.hasText(e)&&l(t,e,h,p),p(\"fill\"),\"none\"!==e.fill&&c(t,e,r,p),n.coerceSelectionMarkerOpacity(e,p)):e.visible=!1}},{\"../../lib\":694,\"../scatter/constants\":1051,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"../scatterpolar/defaults\":1111,\"./attributes\":1115}],1117:[function(t,e,r){\"use strict\";var n=t(\"point-cluster\"),i=t(\"fast-isnumeric\"),a=t(\"../scattergl\"),o=t(\"../scatter/colorscale_calc\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../scattergl/convert\"),c=t(\"../../lib\"),u=t(\"../../plots/cartesian/axes\"),f=t(\"../scatterpolar/hover\").makeHoverPointText,h=t(\"../scattergl/constants\").TOO_MANY_POINTS;e.exports={moduleType:\"trace\",name:\"scatterpolargl\",basePlotModule:t(\"../../plots/polar\"),categories:[\"gl\",\"regl\",\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),calc:function(t,e){var r=t._fullLayout,n=e.subplot,i=r[n].radialaxis,a=r[n].angularaxis,c=i.makeCalcdata(e,\"r\"),f=a.makeCalcdata(e,\"theta\"),p=e._length,d={};p<c.length&&(c=c.slice(0,p)),p<f.length&&(f=f.slice(0,p)),d.r=c,d.theta=f,o(t,e);var g,v=d.opts=l.style(t,e);return p<h?g=s(e,p):v.marker&&(g=2*(v.marker.sizeAvg||Math.max(v.marker.size,3))),e._extremes.x=u.findExtremes(i,c,{ppad:g}),[{x:!1,y:!1,t:d,trace:e}]},plot:function(t,e,r){if(r.length){var o=e.radialAxis,s=e.angularAxis,u=a.sceneUpdate(t,e);return r.forEach(function(r){if(r&&r[0]&&r[0].trace){var a,f=r[0],p=f.trace,d=f.t,g=p._length,v=d.r,m=d.theta,y=d.opts,x=v.slice(),b=m.slice();for(a=0;a<v.length;a++)e.isPtInside({r:v[a],theta:m[a]})||(x[a]=NaN,b[a]=NaN);var _=new Array(2*g),w=Array(g),k=Array(g);for(a=0;a<g;a++){var A,M,T=x[a];if(i(T)){var S=o.c2g(T),C=s.c2g(b[a],p.thetaunit);A=S*Math.cos(C),M=S*Math.sin(C)}else A=M=NaN;w[a]=_[2*a]=A,k[a]=_[2*a+1]=M}d.tree=n(_),y.marker&&g>=h&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&c.extendFlat(y.line,l.linePositions(t,p,_)),y.text&&(c.extendFlat(y.text,{positions:_},l.textPosition(t,p,y.text,y.marker)),c.extendFlat(y.textSel,{positions:_},l.textPosition(t,p,y.text,y.markerSel)),c.extendFlat(y.textUnsel,{positions:_},l.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!u.fill2d&&(u.fill2d=!0),y.marker&&!u.scatter2d&&(u.scatter2d=!0),y.line&&!u.line2d&&(u.line2d=!0),y.text&&!u.glText&&(u.glText=!0),u.lineOptions.push(y.line),u.fillOptions.push(y.fill),u.markerOptions.push(y.marker),u.markerSelectedOptions.push(y.markerSel),u.markerUnselectedOptions.push(y.markerUnsel),u.textOptions.push(y.text),u.textSelectedOptions.push(y.textSel),u.textUnselectedOptions.push(y.textUnsel),d.x=w,d.y=k,d.rawx=w,d.rawy=k,d.r=v,d.theta=m,d.positions=_,d._scene=u,d.index=u.count,u.count++}}),a.plot(t,e,r)}},hoverPoints:function(t,e,r,n){var i=t.cd[0].t,o=i.r,s=i.theta,l=a.hoverPoints(t,e,r,n);if(l&&!1!==l[0].index){var c=l[0];if(void 0===c.index)return l;var u=t.subplot,h=c.cd[c.index],p=c.trace;if(h.r=o[c.index],h.theta=s[c.index],u.isPtInside(h))return c.xLabelVal=void 0,c.yLabelVal=void 0,f(h,p,u,c),l}},selectPoints:a.selectPoints,meta:{}}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../../plots/polar\":809,\"../scatter/calc\":1048,\"../scatter/colorscale_calc\":1050,\"../scatter/marker_colorbar\":1065,\"../scattergl\":1100,\"../scattergl/constants\":1097,\"../scattergl/convert\":1098,\"../scatterpolar/hover\":1112,\"./attributes\":1115,\"./defaults\":1116,\"fast-isnumeric\":215,\"point-cluster\":455}],1118:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/hovertemplate_attributes\"),i=t(\"../scatter/attributes\"),a=t(\"../../plots/attributes\"),o=t(\"../../components/colorscale/attributes\"),s=t(\"../../components/colorbar/attributes\"),l=t(\"../../components/drawing/attributes\").dash,c=t(\"../../lib/extend\").extendFlat,u=i.marker,f=i.line,h=u.line;e.exports={a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},c:{valType:\"data_array\",editType:\"calc\"},sum:{valType:\"number\",dflt:0,min:0,editType:\"calc\"},mode:c({},i.mode,{dflt:\"markers\"}),text:c({},i.text,{}),hovertext:c({},i.hovertext,{}),line:{color:f.color,width:f.width,dash:l,shape:c({},f.shape,{values:[\"linear\",\"spline\"]}),smoothing:f.smoothing,editType:\"calc\"},connectgaps:i.connectgaps,cliponaxis:i.cliponaxis,fill:c({},i.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:i.fillcolor,marker:c({symbol:u.symbol,opacity:u.opacity,maxdisplayed:u.maxdisplayed,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,line:c({width:h.width,editType:\"calc\"},o(\"marker.line\")),gradient:u.gradient,editType:\"calc\"},o(\"marker\"),{colorbar:s}),textfont:i.textfont,textposition:i.textposition,selected:i.selected,unselected:i.unselected,hoverinfo:c({},a.hoverinfo,{flags:[\"a\",\"b\",\"c\",\"text\",\"name\"]}),hoveron:i.hoveron,hovertemplate:n()}},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../components/drawing/attributes\":591,\"../../components/fx/hovertemplate_attributes\":609,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../scatter/attributes\":1047}],1119:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=[\"a\",\"b\",\"c\"],c={a:[\"b\",\"c\"],b:[\"a\",\"c\"],c:[\"a\",\"b\"]};e.exports=function(t,e){var r,u,f,h,p,d,g=t._fullLayout[e.subplot].sum,v=e.sum||g,m={a:e.a,b:e.b,c:e.c};for(r=0;r<l.length;r++)if(!m[f=l[r]]){for(p=m[c[f][0]],d=m[c[f][1]],h=new Array(p.length),u=0;u<p.length;u++)h[u]=v-p[u]-d[u];m[f]=h}var y,x,b,_,w,k,A=e._length,M=new Array(A);for(r=0;r<A;r++)y=m.a[r],x=m.b[r],b=m.c[r],n(y)&&n(x)&&n(b)?(1!==(_=g/((y=+y)+(x=+x)+(b=+b)))&&(y*=_,x*=_,b*=_),k=y,w=b-x,M[r]={x:w,y:k,a:y,b:x,c:b}):M[r]={x:!1,y:!1};return s(e,A),i(t,e),a(M,e),o(M,e),M}},{\"../scatter/arrays_to_calcdata\":1046,\"../scatter/calc\":1048,\"../scatter/calc_selection\":1049,\"../scatter/colorscale_calc\":1050,\"fast-isnumeric\":215}],1120:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/constants\"),a=t(\"../scatter/subtypes\"),o=t(\"../scatter/marker_defaults\"),s=t(\"../scatter/line_defaults\"),l=t(\"../scatter/line_shape_defaults\"),c=t(\"../scatter/text_defaults\"),u=t(\"../scatter/fillcolor_defaults\"),f=t(\"./attributes\");e.exports=function(t,e,r,h){function p(r,i){return n.coerce(t,e,f,r,i)}var d,g=p(\"a\"),v=p(\"b\"),m=p(\"c\");if(g?(d=g.length,v?(d=Math.min(d,v.length),m&&(d=Math.min(d,m.length))):d=m?Math.min(d,m.length):0):v&&m&&(d=Math.min(v.length,m.length)),d){e._length=d,p(\"sum\"),p(\"text\"),p(\"hovertext\"),\"fills\"!==e.hoveron&&p(\"hovertemplate\"),p(\"mode\",d<i.PTS_LINESONLY?\"lines+markers\":\"lines\"),a.hasLines(e)&&(s(t,e,r,h,p),l(t,e,p),p(\"connectgaps\")),a.hasMarkers(e)&&o(t,e,r,h,p,{gradient:!0}),a.hasText(e)&&c(t,e,h,p);var y=[];(a.hasMarkers(e)||a.hasText(e))&&(p(\"cliponaxis\"),p(\"marker.maxdisplayed\"),y.push(\"points\")),p(\"fill\"),\"none\"!==e.fill&&(u(t,e,r,p),a.hasLines(e)||l(t,e,p)),\"tonext\"!==e.fill&&\"toself\"!==e.fill||y.push(\"fills\"),p(\"hoveron\",y.join(\"+\")||\"points\"),n.coerceSelectionMarkerOpacity(e,p)}else e.visible=!1}},{\"../../lib\":694,\"../scatter/constants\":1051,\"../scatter/fillcolor_defaults\":1056,\"../scatter/line_defaults\":1060,\"../scatter/line_shape_defaults\":1062,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"../scatter/text_defaults\":1072,\"./attributes\":1118}],1121:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){if(e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),n[i]){var a=n[i];t.a=a.a,t.b=a.b,t.c=a.c}else t.a=e.a,t.b=e.b,t.c=e.c;return t}},{}],1122:[function(t,e,r){\"use strict\";var n=t(\"../scatter/hover\"),i=t(\"../../plots/cartesian/axes\");e.exports=function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index){var l=1-s.y0/t.ya._length,c=t.xa._length,u=c*l/2,f=c-u;return s.x0=Math.max(Math.min(s.x0,f),u),s.x1=Math.max(Math.min(s.x1,f),u),o}var h=s.cd[s.index];s.a=h.a,s.b=h.b,s.c=h.c,s.xLabelVal=void 0,s.yLabelVal=void 0;var p=s.trace,d=s.subplot,g=h.hi||p.hoverinfo,v=[];if(!p.hovertemplate){var m=g.split(\"+\");-1!==m.indexOf(\"all\")&&(m=[\"a\",\"b\",\"c\"]),-1!==m.indexOf(\"a\")&&y(d.aaxis,h.a),-1!==m.indexOf(\"b\")&&y(d.baxis,h.b),-1!==m.indexOf(\"c\")&&y(d.caxis,h.c)}return s.extraText=v.join(\"<br>\"),s.hovertemplate=p.hovertemplate,o}function y(t,e){v.push(t._hovertitle+\": \"+i.tickText(t,e,\"hover\").text)}}},{\"../../plots/cartesian/axes\":742,\"../scatter/hover\":1058}],1123:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/marker_colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"../scatter/style\").style,n.styleOnSelect=t(\"../scatter/style\").styleOnSelect,n.hoverPoints=t(\"./hover\"),n.selectPoints=t(\"../scatter/select\"),n.eventData=t(\"./event_data\"),n.moduleType=\"trace\",n.name=\"scatterternary\",n.basePlotModule=t(\"../../plots/ternary\"),n.categories=[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],n.meta={},e.exports=n},{\"../../plots/ternary\":821,\"../scatter/marker_colorbar\":1065,\"../scatter/select\":1068,\"../scatter/style\":1070,\"./attributes\":1118,\"./calc\":1119,\"./defaults\":1120,\"./event_data\":1121,\"./hover\":1122,\"./plot\":1124}],1124:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":1067}],1125:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../scattergl/attributes\"),o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\").templatedArray,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line,f=l(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:l({},u.width,{editType:\"calc\"}),editType:\"calc\"}),h=l(i(\"marker\"),{symbol:c.symbol,size:l({},c.size,{editType:\"markerSize\"}),sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,opacity:c.opacity,colorbar:c.colorbar,line:f,editType:\"calc\"});function p(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:o[t],editType:\"plot\"}}}h.color.editType=h.cmin.editType=h.cmax.editType=\"style\",e.exports={dimensions:s(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:l({},a.text,{}),marker:h,xaxes:p(\"x\"),yaxes:p(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:a.selected.marker,editType:\"calc\"},unselected:{marker:a.unselected.marker,editType:\"calc\"},opacity:a.opacity}},{\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/plot_template\":732,\"../../plots/cartesian/constants\":748,\"../scatter/attributes\":1047,\"../scattergl/attributes\":1096}],1126:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine,u=\"splom\";function f(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;o<i.length;o++){var s=i[o],c=a[o]=new Array(4),u=l(t,e._diag[s][0]);u&&(c[0]=u.r2l(u.range[0]),c[2]=u.r2l(u.range[1]));var f=l(t,e._diag[s][1]);f&&(c[1]=f.r2l(f.range[0]),c[3]=f.r2l(f.range[1]))}r.selectBatch?r.matrix.update({ranges:a},{ranges:a}):r.matrix.update({ranges:a})}function h(t){var e=t._fullLayout,r=e._glcanvas.data()[0].regl,i=e._splomGrid;i||(i=e._splomGrid=n(r)),i.update(function(t){var e,r=t._fullLayout,n=r._size,i=[0,0,r.width,r.height],a={};function o(t,e,r,n,o,s){var l=e[t+\"color\"],c=e[t+\"width\"],u=String(l+c);u in a?a[u].data.push(NaN,NaN,r,n,o,s):a[u]={data:[r,n,o,s],join:\"rect\",thickness:c,color:l,viewport:i,range:i,overlay:!1}}for(e in r._splomSubplots){var s,l,u=r._plots[e],f=u.xaxis,h=u.yaxis,p=f._vals,d=h._vals,g=n.b+h.domain[0]*n.h,v=-h._m,m=-v*h.r2l(h.range[0],h.calendar);if(f.showgrid)for(e=0;e<p.length;e++)s=f._offset+f.l2p(p[e].x),o(\"grid\",f,s,g,s,g+h._length);if(h.showgrid)for(e=0;e<d.length;e++)l=g+m+v*d[e].x,o(\"grid\",h,f._offset,l,f._offset+f._length,l);c(t,f,h)&&(s=f._offset+f.l2p(0),o(\"zeroline\",f,s,g,s,g+h._length)),c(t,h,f)&&(l=g+m+0,o(\"zeroline\",h,f._offset,l,f._offset+f._length,l))}var y=[];for(e in a)y.push(a[e]);return y}(t))}e.exports={name:u,attr:s.attr,attrRegex:s.attrRegex,layoutAttributes:s.layoutAttributes,supplyLayoutDefaults:s.supplyLayoutDefaults,drawFramework:s.drawFramework,plot:function(t){var e=t._fullLayout,r=i.getModule(u),n=o(t.calcdata,r)[0];a(t,[\"ANGLE_instanced_arrays\",\"OES_element_index_uint\"])&&(e._hasOnlyLargeSploms&&h(t),r.plot(t,{},n))},drag:function(t){var e=t.calcdata,r=t._fullLayout;r._hasOnlyLargeSploms&&h(t);for(var n=0;n<e.length;n++){var i=e[n][0].trace,a=r._splomScenes[i.uid];\"splom\"===i.type&&a&&a.matrix&&f(t,i,a)}},updateGrid:h,clean:function(t,e,r,n){var i,a={};if(n._splomScenes){for(i=0;i<t.length;i++){var o=t[i];\"splom\"===o.type&&(a[o.uid]=1)}for(i=0;i<r.length;i++){var l=r[i];if(!a[l.uid]){var c=n._splomScenes[l.uid];c&&c.destroy&&c.destroy(),n._splomScenes[l.uid]=null,delete n._splomScenes[l.uid]}}}0===Object.keys(n._splomScenes||{}).length&&delete n._splomScenes,n._splomGrid&&!e._hasOnlyLargeSploms&&n._hasOnlyLargeSploms&&(n._splomGrid.destroy(),n._splomGrid=null,delete n._splomGrid),s.clean(t,e,r,n)},updateFx:function(t){s.updateFx(t);var e=t._fullLayout,r=e.dragmode;if(\"zoom\"===r||\"pan\"===r)for(var n=t.calcdata,i=0;i<n.length;i++){var a=n[i][0].trace;if(\"splom\"===a.type){var o=e._splomScenes[a.uid];null===o.selectBatch&&o.matrix.update(o.matrixOptions,null)}}},toSVG:s.toSVG}},{\"../../lib/prepare_regl\":707,\"../../plots/cartesian\":754,\"../../plots/cartesian/axes\":742,\"../../plots/cartesian/axis_ids\":745,\"../../plots/get_data\":779,\"../../registry\":825,\"regl-line2d\":477}],1127:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"../scatter/subtypes\"),s=t(\"../scatter/marker_defaults\"),l=t(\"../parcoords/merge_length\"),c=/-open/;function u(t,e){function r(r,i){return n.coerce(t,e,a.dimensions,r,i)}r(\"label\");var i=r(\"values\");i&&i.length?r(\"visible\"):e.visible=!1,r(\"axis.type\")}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,a,r,i)}var p=i(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=h(\"diagonal.visible\"),g=h(\"showupperhalf\"),v=h(\"showlowerhalf\");if(l(e,p,\"values\")&&(d||g||v)){h(\"text\"),s(t,e,r,f,h);var m=c.test(e.marker.symbol),y=o.isBubble(e);h(\"marker.line.width\",m||y?1:0),function(t,e,r,n){var i,a,o=e.dimensions,s=o.length,l=e.showupperhalf,c=e.showlowerhalf,u=e.diagonal.visible,f=new Array(s),h=new Array(s);for(i=0;i<s;i++){var p=i?i+1:\"\";f[i]=\"x\"+p,h[i]=\"y\"+p}var d=n(\"xaxes\",f),g=n(\"yaxes\",h),v=e._diag=new Array(s);e._xaxes={},e._yaxes={};var m=[],y=[];function x(t,n,i){if(t){var a=t.charAt(0),o=r._splomAxes[a];if(e[\"_\"+a+\"axes\"][t]=1,i.push(t),!(t in o)){var s=o[t]={};n&&(s.label=n.label||\"\",n.visible&&n.axis&&(s.type=n.axis.type))}}}var b=!u&&!c,_=!u&&!l;for(i=0;i<s;i++){var w=o[i],k=0===i,A=i===s-1,M=k&&b||A&&_?void 0:d[i],T=k&&_||A&&b?void 0:g[i];x(M,w,m),x(T,w,y),v[i]=[M,T]}for(i=0;i<m.length;i++)for(a=0;a<y.length;a++){var S=m[i]+y[a];i>a&&l?r._splomSubplots[S]=1:i<a&&c?r._splomSubplots[S]=1:i!==a||!u&&c&&l||(r._splomSubplots[S]=1)}(!c||!u&&l&&c)&&(r._splomGridDflt.xside=\"bottom\",r._splomGridDflt.yside=\"left\")}(0,e,f,h),n.coerceSelectionMarkerOpacity(e,h)}else e.visible=!1}},{\"../../lib\":694,\"../../plots/array_container_defaults\":738,\"../parcoords/merge_length\":1019,\"../scatter/marker_defaults\":1066,\"../scatter/subtypes\":1071,\"./attributes\":1125}],1128:[function(t,e,r){\"use strict\";var n=t(\"regl-splom\"),i=t(\"array-range\"),a=t(\"../../registry\"),o=t(\"../../components/grid\"),s=t(\"../../lib\"),l=t(\"../../plots/cartesian/axis_ids\"),c=t(\"../scatter/subtypes\"),u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/calc\").calcAxisExpansion,h=t(\"../scatter/colorscale_calc\"),p=t(\"../scattergl/convert\").markerSelection,d=t(\"../scattergl/convert\").markerStyle,g=t(\"../scattergl\").calcHover,v=t(\"../../constants/numerical\").BADNUM,m=t(\"../scattergl/constants\").TOO_MANY_POINTS;function y(t,e){var r,i,a,o,c,u=t._fullLayout,f=u._size,h=e.trace,p=e.t,d=u._splomScenes[h.uid],g=d.matrixOptions,v=g.cdata,m=u._glcanvas.data()[0].regl,y=u.dragmode;if(0!==v.length){g.lower=h.showupperhalf,g.upper=h.showlowerhalf,g.diagonal=h.diagonal.visible;var x=h._visibleDims,b=v.length,_=d.viewOpts={};for(_.ranges=new Array(b),_.domains=new Array(b),c=0;c<x.length;c++){a=x[c];var w=_.ranges[c]=new Array(4),k=_.domains[c]=new Array(4);(r=l.getFromId(t,h._diag[a][0]))&&(w[0]=r._rl[0],w[2]=r._rl[1],k[0]=r.domain[0],k[2]=r.domain[1]),(i=l.getFromId(t,h._diag[a][1]))&&(w[1]=i._rl[0],w[3]=i._rl[1],k[1]=i.domain[0],k[3]=i.domain[1])}_.viewport=[f.l,f.b,f.w+f.l,f.h+f.b],!0===d.matrix&&(d.matrix=n(m));var A=u.clickmode.indexOf(\"select\")>-1,M=\"lasso\"===y||\"select\"===y||!!h.selectedpoints||A;if(d.selectBatch=null,d.unselectBatch=null,M){var T=h._length;if(d.selectBatch||(d.selectBatch=[],d.unselectBatch=[]),h.selectedpoints){d.selectBatch=h.selectedpoints;var S=h.selectedpoints,C={};for(a=0;a<S.length;a++)C[S[a]]=!0;var E=[];for(a=0;a<T;a++)C[a]||E.push(a);d.unselectBatch=E}var L=p.xpx=new Array(b),z=p.ypx=new Array(b);for(c=0;c<x.length;c++){if(a=x[c],r=l.getFromId(t,h._diag[a][0]))for(L[c]=new Array(T),o=0;o<T;o++)L[c][o]=r.c2p(v[c][o]);if(i=l.getFromId(t,h._diag[a][1]))for(z[c]=new Array(T),o=0;o<T;o++)z[c][o]=i.c2p(v[c][o])}d.selectBatch?(d.matrix.update(g,g),d.matrix.update(d.unselectedOptions,d.selectedOptions),d.matrix.update(_,_)):d.matrix.update(_,null)}else{var O=s.extendFlat({},g,_);d.matrix.update(O,null),p.xpx=p.ypx=null}}}function x(t,e){for(var r=e._id,n={x:0,y:1}[r.charAt(0)],i=t._visibleDims,a=0;a<i.length;a++){var o=i[a];if(t._diag[o][n]===r)return a}return!1}e.exports={moduleType:\"trace\",name:\"splom\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"cartesian\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),calc:function(t,e){var r,n,i,a,o,c,g=e.dimensions,y=e._length,x={},b=x.cdata=[],_=x.data=[],w=e._visibleDims=[];function k(t,r){for(var n=t.makeCalcdata({v:r.values,vcalendar:e.calendar},\"v\"),i=0;i<n.length;i++)n[i]=n[i]===v?NaN:n[i];b.push(n),_.push(\"log\"===t.type?s.simpleMap(n,t.c2l):n)}for(r=0;r<g.length;r++)if((i=g[r]).visible){if(a=l.getFromId(t,e._diag[r][0]),o=l.getFromId(t,e._diag[r][1]),a&&o&&a.type!==o.type){s.log(\"Skipping splom dimension \"+r+\" with conflicting axis types\");continue}a?(k(a,i),o&&\"category\"===o.type&&(o._categories=a._categories.slice())):k(o,i),w.push(r)}for(h(t,e),s.extendFlat(x,d(e)),c=b.length*y>m?2*(x.sizeAvg||Math.max(x.size,3)):u(e,y),n=0;n<w.length;n++)i=g[r=w[n]],a=l.getFromId(t,e._diag[r][0])||{},o=l.getFromId(t,e._diag[r][1])||{},f(t,e,a,o,b[n],b[n],c);var A=function(t,e){var r=t._fullLayout,n=e.uid,i=r._splomScenes;i||(i=r._splomScenes={});var a={dirty:!0},o=i[e.uid];return o||((o=i[n]=s.extendFlat({},a,{selectBatch:null,unselectBatch:null,matrix:!1,select:null})).draw=function(){o.matrix&&o.matrix.draw&&(o.selectBatch?o.matrix.draw(o.unselectBatch,o.selectBatch):o.matrix.draw()),o.dirty=!1},o.destroy=function(){o.matrix&&o.matrix.destroy&&o.matrix.destroy(),o.matrixOptions=null,o.selectBatch=null,o.unselectBatch=null,o=null}),o.dirty||s.extendFlat(o,a),o}(t,e);return A.matrix||(A.matrix=!0),A.matrixOptions=x,A.selectedOptions=p(e,e.selected),A.unselectedOptions=p(e,e.unselected),[{x:!1,y:!1,t:{},trace:e}]},plot:function(t,e,r){if(r.length)for(var n=0;n<r.length;n++)y(t,r[n][0])},hoverPoints:function(t,e,r){var n=t.cd[0].trace,i=t.scene.matrixOptions.cdata,a=t.xa,o=t.ya,s=a.c2p(e),l=o.c2p(r),c=t.distance,u=x(n,a),f=x(n,o);if(!1===u||!1===f)return[t];for(var h,p,d=i[u],v=i[f],m=c,y=0;y<d.length;y++){var b=d[y],_=v[y],w=a.c2p(b)-s,k=o.c2p(_)-l,A=Math.sqrt(w*w+k*k);A<m&&(m=p=A,h=y)}return t.index=h,t.distance=m,t.dxy=p,void 0===h?[t]:(g(t,d,v,n),[t])},selectPoints:function(t,e){var r,n=t.cd,a=n[0].trace,o=n[0].t,s=t.scene,l=s.matrixOptions.cdata,u=t.xaxis,f=t.yaxis,h=[];if(!s)return h;var p=!c.hasMarkers(a)&&!c.hasText(a);if(!0!==a.visible||p)return h;var d=x(a,u),g=x(a,f);if(!1===d||!1===g)return h;var v=o.xpx[d],m=o.ypx[g],y=l[d],b=l[g],_=null,w=null;if(!1===e||e.degenerate)w=i(o.count);else for(_=[],w=[],r=0;r<y.length;r++)e.contains([v[r],m[r]],null,r,t)?(_.push(r),h.push({pointNumber:r,x:y[r],y:b[r]})):w.push(r);if(s.selectBatch||(s.selectBatch=[],s.unselectBatch=[]),!s.selectBatch){for(r=0;r<s.count;r++)s.selectBatch=[],s.unselectBatch=[];s.matrix.update(s.unselectedOptions,s.selectedOptions)}return s.selectBatch=_,s.unselectBatch=w,h},editStyle:function(t,e){var r=e.trace,n=t._fullLayout._splomScenes[r.uid];if(n){h(t,r),s.extendFlat(n.matrixOptions,d(r));var i=s.extendFlat({},n.matrixOptions,n.viewOpts);n.matrix.update(i,null)}},meta:{}},a.register(o)},{\"../../components/grid\":614,\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axis_ids\":745,\"../../registry\":825,\"../scatter/calc\":1048,\"../scatter/colorscale_calc\":1050,\"../scatter/marker_colorbar\":1065,\"../scatter/subtypes\":1071,\"../scattergl\":1100,\"../scattergl/constants\":1097,\"../scattergl/convert\":1098,\"./attributes\":1125,\"./base_plot\":1126,\"./defaults\":1127,\"array-range\":56,\"regl-splom\":479}],1129:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../components/colorbar/attributes\"),a=t(\"../mesh3d/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../lib/extend\").extendFlat,l={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},starts:{x:{valType:\"data_array\",editType:\"calc\"},y:{valType:\"data_array\",editType:\"calc\"},z:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"},maxdisplayed:{valType:\"integer\",min:0,dflt:1e3,editType:\"calc\"},sizeref:{valType:\"number\",editType:\"calc\",min:0,dflt:1},text:{valType:\"string\",dflt:\"\",editType:\"calc\"}};s(l,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{colorbar:i});[\"opacity\",\"lightposition\",\"lighting\"].forEach(function(t){l[t]=a[t]}),l.hoverinfo=s({},o.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"divergence\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),l.transforms=void 0,e.exports=l},{\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plots/attributes\":739,\"../mesh3d/attributes\":990}],1130:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){var r,i,a,o,s=e.u,l=e.v,c=e.w,u=e.x,f=e.y,h=e.z,p=Math.min(u.length,f.length,h.length,s.length,l.length,c.length),d=0;e.starts&&(i=e.starts.x||[],a=e.starts.y||[],o=e.starts.z||[],d=Math.min(i.length,a.length,o.length));var g=0,v=1/0;for(r=0;r<p;r++){var m=s[r],y=l[r],x=c[r],b=Math.sqrt(m*m+y*y+x*x);g=Math.max(g,b),v=Math.min(v,b)}n(t,e,{vals:[v,g],containerStr:\"\",cLetter:\"c\"});var _=-1/0,w=1/0,k=-1/0,A=1/0,M=-1/0,T=1/0;for(r=0;r<p;r++){var S=u[r];_=Math.max(_,S),w=Math.min(w,S);var C=f[r];k=Math.max(k,C),A=Math.min(A,C);var E=h[r];M=Math.max(M,E),T=Math.min(T,E)}for(r=0;r<d;r++){var L=i[r];_=Math.max(_,L),w=Math.min(w,L);var z=a[r];k=Math.max(k,z),A=Math.min(A,z);var O=o[r];M=Math.max(M,O),T=Math.min(T,O)}e._len=p,e._slen=d,e._normMax=g,e._xbnds=[w,_],e._ybnds=[A,k],e._zbnds=[T,M]}},{\"../../components/colorscale/calc\":579}],1131:[function(t,e,r){\"use strict\";var n=t(\"gl-streamtube3d\"),i=n.createTubeMesh,a=t(\"../../lib\"),o=t(\"../../lib/gl_format_color\").parseColorScale,s=t(\"../../plots/gl3d/zip3\"),l={xaxis:0,yaxis:1,zaxis:2};function c(t,e){this.scene=t,this.uid=e,this.mesh=null,this.data=null}var u=c.prototype;function f(t){return a.distinctVals(t).vals}function h(t){var e=t.length;return e>2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,c=e._len,u={};function d(t,e){var n=r[e],o=i[l[e]];return a.simpleMap(t,function(t){return n.d2l(t)*o})}u.vectors=s(d(e.u,\"xaxis\"),d(e.v,\"yaxis\"),d(e.w,\"zaxis\"),c);var g=f(e.x.slice(0,c)),v=f(e.y.slice(0,c)),m=f(e.z.slice(0,c));if(g.length*v.length*m.length>c)return{positions:[],cells:[]};var y=d(g,\"xaxis\"),x=d(v,\"yaxis\"),b=d(m,\"zaxis\");if(u.meshgrid=[y,x,b],e.starts){var _=e._slen;u.startingPositions=s(d(e.starts.x.slice(0,_),\"xaxis\"),d(e.starts.y.slice(0,_),\"yaxis\"),d(e.starts.z.slice(0,_),\"zaxis\"))}else{for(var w=x[0],k=h(y),A=h(b),M=new Array(k.length*A.length),T=0,S=0;S<k.length;S++)for(var C=0;C<A.length;C++)M[T++]=[k[S],w,A[C]];u.startingPositions=M}u.colormap=o(e),u.tubeSize=e.sizeref,u.maxLength=e.maxdisplayed;var E=d(e._xbnds,\"xaxis\"),L=d(e._ybnds,\"yaxis\"),z=d(e._zbnds,\"zaxis\"),O=p(y),I=p(x),D=p(b),P=[[E[0]-O[0],L[0]-I[0],z[0]-D[0]],[E[1]+O[1],L[1]+I[1],z[1]+D[1]]],R=n(u,P);R.vertexIntensityBounds=[e.cmin/e._normMax,e.cmax/e._normMax];var F=e.lightposition;return R.lightPosition=[F.x,F.y,F.z],R.ambient=e.lighting.ambient,R.diffuse=e.lighting.diffuse,R.specular=e.lighting.specular,R.roughness=e.lighting.roughness,R.fresnel=e.lighting.fresnel,R.opacity=e.opacity,e._pad=R.tubeScale*e.sizeref*2,R}u.handlePick=function(t){var e=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(t,n){var i=e[n],a=r[l[n]];return i.l2c(t)/a}if(t.object===this.mesh){var i=t.data.position,a=t.data.velocity;return t.traceCoordinate=[n(i[0],\"xaxis\"),n(i[1],\"yaxis\"),n(i[2],\"zaxis\"),n(a[0],\"xaxis\"),n(a[1],\"yaxis\"),n(a[2],\"zaxis\"),t.data.intensity*this.data._normMax,t.data.divergence],t.textLabel=this.data.text,!0}},u.update=function(t){this.data=t;var e=d(this.scene,t);this.mesh.update(e)},u.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var r=t.glplot.gl,n=d(t,e),a=i(r,n),o=new c(t,e.uid);return o.mesh=a,o.data=e,a._trace=o,t.glplot.add(a),o}},{\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../plots/gl3d/zip3\":796,\"gl-streamtube3d\":303}],1132:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"u\"),c=s(\"v\"),u=s(\"w\"),f=s(\"x\"),h=s(\"y\"),p=s(\"z\");l&&l.length&&c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length&&p&&p.length?(s(\"starts.x\"),s(\"starts.y\"),s(\"starts.z\"),s(\"maxdisplayed\"),s(\"sizeref\"),s(\"lighting.ambient\"),s(\"lighting.diffuse\"),s(\"lighting.specular\"),s(\"lighting.roughness\"),s(\"lighting.fresnel\"),s(\"lightposition.x\"),s(\"lightposition.y\"),s(\"lightposition.z\"),i(t,e,o,s,{prefix:\"\",cLetter:\"c\"}),s(\"text\"),e._length=null):e.visible=!1}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"./attributes\":1129}],1133:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"streamtube\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:{min:\"cmin\",max:\"cmax\"},calc:t(\"./calc\"),plot:t(\"./convert\"),eventData:function(t,e){return t.tubex=t.x,t.tubey=t.y,t.tubez=t.z,t.tubeu=e.traceCoordinate[3],t.tubev=e.traceCoordinate[4],t.tubew=e.traceCoordinate[5],t.norm=e.traceCoordinate[6],t.divergence=e.traceCoordinate[7],delete t.x,delete t.y,delete t.z,t},meta:{}}},{\"../../plots/gl3d\":785,\"./attributes\":1129,\"./calc\":1130,\"./convert\":1131,\"./defaults\":1132}],1134:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../components/colorbar/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/edit_types\").overrideAll;function c(t){return{show:{valType:\"boolean\",dflt:!1},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var u=e.exports=l(s({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{colorbar:a,contours:{x:c(),y:c(),z:c()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},_deprecated:{zauto:s({},i.zauto,{}),zmin:s({},i.zmin,{}),zmax:s({},i.zmax,{})},hoverinfo:s({},o.hoverinfo)}),\"calc\",\"nested\");u.x.editType=u.y.editType=u.z.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/color\":571,\"../../components/colorbar/attributes\":572,\"../../components/colorscale/attributes\":578,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/attributes\":739}],1135:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":579}],1136:[function(t,e,r){\"use strict\";var n=t(\"gl-surface3d\"),i=t(\"ndarray\"),a=t(\"ndarray-homography\"),o=t(\"ndarray-fill\"),s=t(\"../../lib\").isArrayOrTypedArray,l=t(\"../../lib/gl_format_color\").parseColorScale,c=t(\"../../lib/str2rgbarray\");function u(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0}var f=u.prototype;f.getXat=function(t,e,r,n){var i=s(this.data.x)?s(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},f.getYat=function(t,e,r,n){var i=s(this.data.y)?s(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},f.getZat=function(t,e,r,n){var i=this.data.z[e][t];return void 0===r?i:n.d2l(i,0,r)},f.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var h=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function p(t,e){if(t<e)return 0;for(var r=0;0===Math.floor(t%e);)t/=e,r++;return r}function d(t){for(var e=[],r=0;r<h.length;r++){var n=h[r];e.push(p(t,n))}return e}function g(t){for(var e=d(t),r=t,n=0;n<h.length;n++)if(e[n]>0){r=h[n];break}return r}function v(t,e){if(!(t<1||e<1)){for(var r=d(t),n=d(e),i=1,a=0;a<h.length;a++)i*=Math.pow(h[a],Math.max(r[a],n[a]));return i}}f.calcXnums=function(t){var e,r=[];for(e=1;e<t;e++){var n=this.getXat(e-1,0),i=this.getXat(e,0);r[e-1]=i!==n&&null!=n&&null!=i?Math.abs(i-n):0}var a=0;for(e=1;e<t;e++)a+=r[e-1];for(e=1;e<t;e++)0===r[e-1]?r[e-1]=1:r[e-1]=Math.round(a/r[e-1]);return r},f.calcYnums=function(t){var e,r=[];for(e=1;e<t;e++){var n=this.getYat(0,e-1),i=this.getYat(0,e);r[e-1]=i!==n&&null!=n&&null!=i?Math.abs(i-n):0}var a=0;for(e=1;e<t;e++)a+=r[e-1];for(e=1;e<t;e++)0===r[e-1]?r[e-1]=1:r[e-1]=Math.round(a/r[e-1]);return r};var m=[1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260],y=m[9],x=m[13];f.estimateScale=function(t,e){for(var r=1+function(t){if(0!==t.length){for(var e=1,r=0;r<t.length;r++)e=v(e,t[r]);return e}}(0===e?this.calcXnums(t):this.calcYnums(t));r<y;)r*=2;for(;r>x;)r--,r/=g(r),++r<y&&(r=x);var n=Math.round(r/t);return n>1?n:1},f.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],o=t[0].shape[1],s=0|Math.floor(t[0].shape[0]*e+1),l=0|Math.floor(t[0].shape[1]*r+1),c=1+n+1,u=1+o+1,f=i(new Float32Array(c*u),[c,u]),h=0;h<t.length;++h){this.surface.padField(f,t[h]);var p=i(new Float32Array(s*l),[s,l]);a(p,f,[e,0,0,0,r,0,0,0,1]),t[h]=p}},f.setContourLevels=function(){for(var t=[[],[],[]],e=!1,r=0;r<3;++r)this.showContour[r]&&(e=!0,t[r]=this.scene.contourLevels[r]);e&&this.surface.update({levels:t})},f.update=function(t){var e,r,n,a,s=this.scene,u=s.fullSceneLayout,f=this.surface,h=t.opacity,p=l(t,h),d=s.dataScale,g=t.z[0].length,v=t._ylength,m=s.contourLevels;this.data=t;var y=[];for(e=0;e<3;e++)for(y[e]=[],r=0;r<g;r++)y[e][r]=[];for(r=0;r<g;r++)for(n=0;n<v;n++)y[0][r][n]=this.getXat(r,n,t.xcalendar,u.xaxis),y[1][r][n]=this.getYat(r,n,t.ycalendar,u.yaxis),y[2][r][n]=this.getZat(r,n,t.zcalendar,u.zaxis);for(e=0;e<3;e++)for(r=0;r<g;r++)for(n=0;n<v;n++)null==(a=y[e][r][n])?y[e][r][n]=NaN:a=y[e][r][n]*=d[e];for(e=0;e<3;e++)for(r=0;r<g;r++)for(n=0;n<v;n++)null!=(a=y[e][r][n])&&(this.minValues[e]>a&&(this.minValues[e]=a),this.maxValues[e]<a&&(this.maxValues[e]=a));for(e=0;e<3;e++)t._objectOffset[e]=.5*(this.minValues[e]+this.maxValues[e]);for(e=0;e<3;e++)for(r=0;r<g;r++)for(n=0;n<v;n++)null!=(a=y[e][r][n])&&(y[e][r][n]-=t._objectOffset[e]);var b=[i(new Float32Array(g*v),[g,v]),i(new Float32Array(g*v),[g,v]),i(new Float32Array(g*v),[g,v])];o(b[0],function(t,e){return y[0][t][e]}),o(b[1],function(t,e){return y[1][t][e]}),o(b[2],function(t,e){return y[2][t][e]}),y=[];var _={colormap:p,levels:[[],[],[]],showContour:[!0,!0,!0],showSurface:!t.hidesurface,contourProject:[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],contourWidth:[1,1,1],contourColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],contourTint:[1,1,1],dynamicColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],dynamicWidth:[1,1,1],dynamicTint:[1,1,1],opacity:t.opacity};if(_.intensityBounds=[t.cmin,t.cmax],t.surfacecolor){var w=i(new Float32Array(g*v),[g,v]);o(w,function(e,r){return t.surfacecolor[r][e]}),b.push(w)}else _.intensityBounds[0]*=d[2],_.intensityBounds[1]*=d[2];(x<b[0].shape[0]||x<b[0].shape[1])&&(this.refineData=!1),!0===this.refineData&&(this.dataScaleX=this.estimateScale(b[0].shape[0],0),this.dataScaleY=this.estimateScale(b[0].shape[1],1),1===this.dataScaleX&&1===this.dataScaleY||this.refineCoords(b)),t.surfacecolor&&(_.intensity=b.pop());var k=[!0,!0,!0],A=[\"x\",\"y\",\"z\"];for(e=0;e<3;++e){var M=t.contours[A[e]];k[e]=M.highlight,_.showContour[e]=M.show||M.highlight,_.showContour[e]&&(_.contourProject[e]=[M.project.x,M.project.y,M.project.z],M.show?(this.showContour[e]=!0,_.levels[e]=m[e],f.highlightColor[e]=_.contourColor[e]=c(M.color),M.usecolormap?f.highlightTint[e]=_.contourTint[e]=0:f.highlightTint[e]=_.contourTint[e]=1,_.contourWidth[e]=M.width):this.showContour[e]=!1,M.highlight&&(_.dynamicColor[e]=c(M.highlightcolor),_.dynamicWidth[e]=M.highlightwidth))}(function(t){var e=t[0].rgb,r=t[t.length-1].rgb;return e[0]===r[0]&&e[1]===r[1]&&e[2]===r[2]&&e[3]===r[3]})(p)&&(_.vertexColor=!0),_.objectOffset=[t._objectOffset[0],t._objectOffset[1],t._objectOffset[2]],_.coords=b,f.update(_),f.visible=t.visible,f.enableDynamic=k,f.enableHighlight=k,f.snapToData=!0,\"lighting\"in t&&(f.ambientLight=t.lighting.ambient,f.diffuseLight=t.lighting.diffuse,f.specularLight=t.lighting.specular,f.roughness=t.lighting.roughness,f.fresnel=t.lighting.fresnel),\"lightposition\"in t&&(f.lightPosition=[t.lightposition.x,t.lightposition.y,t.lightposition.z]),h&&h<1&&(f.supportsTransparency=!0)},f.dispose=function(){this.scene.glplot.remove(this.surface),this.surface.dispose()},e.exports=function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new u(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}},{\"../../lib\":694,\"../../lib/gl_format_color\":691,\"../../lib/str2rgbarray\":717,\"gl-surface3d\":306,ndarray:436,\"ndarray-fill\":426,\"ndarray-homography\":428}],1137:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./attributes\");function s(t,e,r){e in t&&!(r in t)&&(t[r]=t[e])}e.exports=function(t,e,r,l){var c,u;function f(r,n){return i.coerce(t,e,o,r,n)}var h=f(\"x\"),p=f(\"y\"),d=f(\"z\");if(!d||!d.length||h&&h.length<1||p&&p.length<1)e.visible=!1;else{e._xlength=Array.isArray(h)&&i.isArrayOrTypedArray(h[0])?d.length:d[0].length,e._ylength=d.length,e._objectOffset=[0,0,0],n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],l),f(\"text\"),[\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"hidesurface\",\"opacity\"].forEach(function(t){f(t)});var g=f(\"surfacecolor\"),v=[\"x\",\"y\",\"z\"];for(c=0;c<3;++c){var m=\"contours.\"+v[c],y=f(m+\".show\"),x=f(m+\".highlight\");if(y||x)for(u=0;u<3;++u)f(m+\".project.\"+v[u]);y&&(f(m+\".color\"),f(m+\".width\"),f(m+\".usecolormap\")),x&&(f(m+\".highlightcolor\"),f(m+\".highlightwidth\"))}g||(s(t,\"zmin\",\"cmin\"),s(t,\"zmax\",\"cmax\"),s(t,\"zauto\",\"cauto\")),a(t,e,l,f,{prefix:\"\",cLetter:\"c\"}),e._length=null}}},{\"../../components/colorscale/defaults\":581,\"../../lib\":694,\"../../registry\":825,\"./attributes\":1134}],1138:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar={min:\"cmin\",max:\"cmax\"},n.calc=t(\"./calc\"),n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"surface\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\",\"2dMap\",\"noOpacity\"],n.meta={},e.exports=n},{\"../../plots/gl3d\":785,\"./attributes\":1134,\"./calc\":1135,\"./convert\":1136,\"./defaults\":1137}],1139:[function(t,e,r){\"use strict\";var n=t(\"../../components/annotations/attributes\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"../../plot_api/edit_types\").overrideAll,o=t(\"../../plots/font_attributes\"),s=t(\"../../plots/domain\").attributes;(e.exports=a({domain:s({name:\"table\",trace:!0}),columnwidth:{valType:\"number\",arrayOk:!0,dflt:null},columnorder:{valType:\"data_array\"},header:{values:{valType:\"data_array\",dflt:[]},format:{valType:\"data_array\",dflt:[]},prefix:{valType:\"string\",arrayOk:!0,dflt:null},suffix:{valType:\"string\",arrayOk:!0,dflt:null},height:{valType:\"number\",dflt:28},align:i({},n.align,{arrayOk:!0}),line:{width:{valType:\"number\",arrayOk:!0,dflt:1},color:{valType:\"color\",arrayOk:!0,dflt:\"grey\"}},fill:{color:{valType:\"color\",arrayOk:!0,dflt:\"white\"}},font:i({},o({arrayOk:!0}))},cells:{values:{valType:\"data_array\",dflt:[]},format:{valType:\"data_array\",dflt:[]},prefix:{valType:\"string\",arrayOk:!0,dflt:null},suffix:{valType:\"string\",arrayOk:!0,dflt:null},height:{valType:\"number\",dflt:20},align:i({},n.align,{arrayOk:!0}),line:{width:{valType:\"number\",arrayOk:!0,dflt:1},color:{valType:\"color\",arrayOk:!0,dflt:\"grey\"}},fill:{color:{valType:\"color\",arrayOk:!0,dflt:\"white\"}},font:i({},o({arrayOk:!0}))}},\"calc\",\"from-root\")).transforms=void 0},{\"../../components/annotations/attributes\":554,\"../../lib/extend\":684,\"../../plot_api/edit_types\":725,\"../../plots/domain\":768,\"../../plots/font_attributes\":769}],1140:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getModuleCalcData,i=t(\"./plot\");r.name=\"table\",r.plot=function(t){var e=n(t.calcdata,\"table\")[0];e.length&&i(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"table\"),a=e._has&&e._has(\"table\");i&&!a&&n._paperdiv.selectAll(\".table\").remove()}},{\"../../plots/get_data\":779,\"./plot\":1147}],1141:[function(t,e,r){\"use strict\";var n=t(\"../../lib/gup\").wrap;e.exports=function(){return n({})}},{\"../../lib/gup\":692}],1142:[function(t,e,r){\"use strict\";e.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\\$.*\\$$/,goldenRatio:1.618,lineBreaker:\"<br>\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1143:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r<t.length;r++)e=Math.max(e,o(t[r]));return e}return t}function s(t,e){return t+e}function l(t){var e,r=t.slice(),n=1/0,i=0;for(e=0;e<r.length;e++)Array.isArray(r[e])||(r[e]=[r[e]]),n=Math.min(n,r[e].length),i=Math.max(i,r[e].length);if(n!==i)for(e=0;e<r.length;e++){var a=i-r[e].length;a&&(r[e]=r[e].concat(c(a)))}return r}function c(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=\"\";return e}function u(t){return t.calcdata.columns.reduce(function(e,r){return r.xIndex<t.xIndex?e+r.columnWidth:e},0)}function f(t,e){return Object.keys(t).map(function(r){return i({},t[r],{auxiliaryBlocks:e})})}function h(t,e){for(var r,n={},i=0,a=0,o={firstRowIndex:null,lastRowIndex:null,rows:[]},s=0,l=0,c=0;c<t.length;c++)r=t[c],o.rows.push({rowIndex:c,rowHeight:r}),((a+=r)>=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map(function(){return c((d[0]||[\"\"]).length)})),v=e.domain,m=Math.floor(t._fullLayout._size.w*(v.x[1]-v.x[0])),y=Math.floor(t._fullLayout._size.h*(v.y[1]-v.y[0])),x=e.header.values.length?g[0].map(function(){return e.header.height}):[n.emptyHeaderHeight],b=r.length?r[0].map(function(){return e.cells.height}):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),k=f(h(x,_),[]),A=f(w,k),M={},T=e._fullInput.columnorder.concat(p(r.map(function(t,e){return e}))),S=g.map(function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1}),C=S.reduce(s,0);S=S.map(function(t){return t/C*m});var E=Math.max(o(e.header.line.width),o(e.cells.line.width)),L={key:e.uid+t._context.staticPlot,translateX:v.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-v.y[1]),size:t._fullLayout._size,width:m,maxLineWidth:E,height:y,columnOrder:T,groupHeight:y,rowBlocks:A,headerRowBlocks:k,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map(function(t){return t[0]}),gdColumnsOriginalOrder:g.map(function(t){return t[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map(function(t,e){var r=M[t];return M[t]=(r||0)+1,{key:t+\"__\"+M[t],label:t,specIndex:e,xIndex:T[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}})};return L.columns.forEach(function(t){t.calcdata=L,t.x=u(t)}),L}},{\"../../lib/extend\":684,\"./constants\":1142,\"fast-isnumeric\":215}],1144:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map(function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}})}},{\"../../lib/extend\":684}],1145:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(t,e){return t-e}),o=i.map(function(t){return a.indexOf(t)}),s=o.length;s<n;s++)o.push(s);e(\"columnorder\",o)}(e,s),s(\"cells.values\"),s(\"cells.format\"),s(\"cells.align\"),s(\"cells.prefix\"),s(\"cells.suffix\"),s(\"cells.height\"),s(\"cells.line.width\"),s(\"cells.line.color\"),s(\"cells.fill.color\"),n.coerceFont(s,\"cells.font\",n.extendFlat({},o.font)),e._length=null}},{\"../../lib\":694,\"../../plots/domain\":768,\"./attributes\":1139}],1146:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.moduleType=\"trace\",n.name=\"table\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"noOpacity\"],n.meta={},e.exports=n},{\"./attributes\":1139,\"./base_plot\":1140,\"./calc\":1141,\"./defaults\":1145,\"./plot\":1147}],1147:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"d3\"),a=t(\"../../lib/gup\"),o=t(\"../../components/drawing\"),s=t(\"../../lib/svg_text_utils\"),l=t(\"../../lib\").raiseToTop,c=t(\"../../lib\").cancelTransition,u=t(\"./data_preparation_helper\"),f=t(\"./data_split_helpers\"),h=t(\"../../components/color\");function p(t){return Math.ceil(t.calcdata.maxLineWidth/2)}function d(t,e){return\"clip\"+t._fullLayout._uid+\"_scrollAreaBottomClip_\"+e.key}function g(t,e){return\"clip\"+t._fullLayout._uid+\"_columnBoundaryClippath_\"+e.calcdata.key+\"_\"+e.specIndex}function v(t){return[].concat.apply([],t.map(function(t){return t})).map(function(t){return t.__data__})}function m(t,e,r){var o=t.selectAll(\".\"+n.cn.scrollbarKit).data(a.repeat,a.keyFun);o.enter().append(\"g\").classed(n.cn.scrollbarKit,!0).style(\"shape-rendering\",\"geometricPrecision\"),o.each(function(t){var e=t.scrollbarState;e.totalHeight=function(t){var e=t.rowBlocks;return I(e,e.length-1)+(e.length?D(e[e.length-1],1/0):1)}(t),e.scrollableAreaHeight=t.groupHeight-M(t),e.currentlyVisibleHeight=Math.min(e.totalHeight,e.scrollableAreaHeight),e.ratio=e.currentlyVisibleHeight/e.totalHeight,e.barLength=Math.max(e.ratio*e.currentlyVisibleHeight,n.goldenRatio*n.scrollbarWidth),e.barWiggleRoom=e.currentlyVisibleHeight-e.barLength,e.wiggleRoom=Math.max(0,e.totalHeight-e.scrollableAreaHeight),e.topY=0===e.barWiggleRoom?0:t.scrollY/e.wiggleRoom*e.barWiggleRoom,e.bottomY=e.topY+e.barLength,e.dragMultiplier=e.wiggleRoom/e.barWiggleRoom}).attr(\"transform\",function(t){return\"translate(\"+(t.width+n.scrollbarWidth/2+n.scrollbarOffset)+\" \"+M(t)+\")\"});var s=o.selectAll(\".\"+n.cn.scrollbar).data(a.repeat,a.keyFun);s.enter().append(\"g\").classed(n.cn.scrollbar,!0);var l=s.selectAll(\".\"+n.cn.scrollbarSlider).data(a.repeat,a.keyFun);l.enter().append(\"g\").classed(n.cn.scrollbarSlider,!0),l.attr(\"transform\",function(t){return\"translate(0 \"+(t.scrollbarState.topY||0)+\")\"});var c=l.selectAll(\".\"+n.cn.scrollbarGlyph).data(a.repeat,a.keyFun);c.enter().append(\"line\").classed(n.cn.scrollbarGlyph,!0).attr(\"stroke\",\"black\").attr(\"stroke-width\",n.scrollbarWidth).attr(\"stroke-linecap\",\"round\").attr(\"y1\",n.scrollbarWidth/2),c.attr(\"y2\",function(t){return t.scrollbarState.barLength-n.scrollbarWidth/2}).attr(\"stroke-opacity\",function(t){return t.columnDragInProgress||!t.scrollbarState.barWiggleRoom||r?0:.4}),c.transition().delay(0).duration(0),c.transition().delay(n.scrollbarHideDelay).duration(n.scrollbarHideDuration).attr(\"stroke-opacity\",0);var u=s.selectAll(\".\"+n.cn.scrollbarCaptureZone).data(a.repeat,a.keyFun);u.enter().append(\"line\").classed(n.cn.scrollbarCaptureZone,!0).attr(\"stroke\",\"white\").attr(\"stroke-opacity\",.01).attr(\"stroke-width\",n.scrollbarCaptureWidth).attr(\"stroke-linecap\",\"butt\").attr(\"y1\",0).on(\"mousedown\",function(r){var n=i.event.y,a=this.getBoundingClientRect(),o=r.scrollbarState,s=n-a.top,l=i.scale.linear().domain([0,o.scrollableAreaHeight]).range([0,o.totalHeight]).clamp(!0);o.topY<=s&&s<=o.bottomY||S(e,t,null,l(s-o.barLength/2))(r)}).call(i.behavior.drag().origin(function(t){return i.event.stopPropagation(),t.scrollbarState.scrollbarScrollInProgress=!0,t}).on(\"drag\",S(e,t)).on(\"dragend\",function(){})),u.attr(\"y2\",function(t){return t.scrollbarState.scrollableAreaHeight}),e._context.staticPlot&&(c.remove(),u.remove())}function y(t,e,r,s){var l=function(t){var e=t.selectAll(\".\"+n.cn.columnCell).data(f.splitToCells,function(t){return t.keyWithinBlock});return e.enter().append(\"g\").classed(n.cn.columnCell,!0),e.exit().remove(),e}(function(t){var e=t.selectAll(\".\"+n.cn.columnCells).data(a.repeat,a.keyFun);return e.enter().append(\"g\").classed(n.cn.columnCells,!0),e.exit().remove(),e}(r));!function(t){t.each(function(t,e){var r=t.calcdata.cells.font,n=t.column.specIndex,i={size:_(r.size,n,e),color:_(r.color,n,e),family:_(r.family,n,e)};t.rowNumber=t.key,t.align=_(t.calcdata.cells.align,n,e),t.cellBorderWidth=_(t.calcdata.cells.line.width,n,e),t.font=i})}(l),function(t){t.attr(\"width\",function(t){return t.column.columnWidth}).attr(\"stroke-width\",function(t){return t.cellBorderWidth}).each(function(t){var e=i.select(this);h.stroke(e,_(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),h.fill(e,_(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}(function(t){var e=t.selectAll(\".\"+n.cn.cellRect).data(a.repeat,function(t){return t.keyWithinBlock});return e.enter().append(\"rect\").classed(n.cn.cellRect,!0),e}(l));var c=function(t){var e=t.selectAll(\".\"+n.cn.cellText).data(a.repeat,function(t){return t.keyWithinBlock});return e.enter().append(\"text\").classed(n.cn.cellText,!0).style(\"cursor\",function(){return\"auto\"}).on(\"mousedown\",function(){i.event.stopPropagation()}),e}(function(t){var e=t.selectAll(\".\"+n.cn.cellTextHolder).data(a.repeat,function(t){return t.keyWithinBlock});return e.enter().append(\"g\").classed(n.cn.cellTextHolder,!0).style(\"shape-rendering\",\"geometricPrecision\"),e}(l));!function(t){t.each(function(t){o.font(i.select(this),t.font)})}(c),x(c,e,s,t),O(l)}function x(t,e,r,a){t.text(function(t){var e=t.column.specIndex,r=t.rowNumber,a=t.value,o=\"string\"==typeof a,s=o&&a.match(/<br>/i),l=!o||s;t.mayHaveMarkup=o&&a.match(/[<&>]/);var c,u=\"string\"==typeof(c=a)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":_(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":_(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:_(t.calcdata.cells.format,e,r)||null,v=p+(g?i.format(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=b(v)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?b(v):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var m=(\" \"===n.wrapSplitCharacter?v.replace(/<a href=/gi,\"<a_href=\"):v).split(n.wrapSplitCharacter),y=\" \"===n.wrapSplitCharacter?m.map(function(t){return t.replace(/<a_href=/gi,\"<a href=\")}):m;t.fragments=y.map(function(t){return{text:t,width:null}}),t.fragments.push({fragment:n.wrapSpacer,width:null}),h=y.join(n.lineBreaker)+n.lineBreaker+n.wrapSpacer}else delete t.fragments,h=v;return h}).attr(\"dy\",function(t){return t.needsConvertToTspans?0:\"0.75em\"}).each(function(t){var o=i.select(this),l=t.wrappingNeeded?E:L;t.needsConvertToTspans?s.convertToTspans(o,a,l(r,this,e,a,t)):i.select(this.parentNode).attr(\"transform\",function(t){return\"translate(\"+z(t)+\" \"+n.cellPad+\")\"}).attr(\"text-anchor\",function(t){return{left:\"start\",center:\"middle\",right:\"end\"}[t.align]})})}function b(t){return-1!==t.indexOf(n.wrapSplitCharacter)}function _(t,e,r){if(Array.isArray(t)){var n=t[Math.min(e,t.length-1)];return Array.isArray(n)?n[Math.min(r,n.length-1)]:n}return t}function w(t,e,r){t.transition().ease(n.releaseTransitionEase).duration(n.releaseTransitionDuration).attr(\"transform\",\"translate(\"+e.x+\" \"+r+\")\")}function k(t){return\"cells\"===t.type}function A(t){return\"header\"===t.type}function M(t){return(t.rowBlocks.length?t.rowBlocks[0].auxiliaryBlocks:[]).reduce(function(t,e){return t+D(e,1/0)},0)}function T(t,e,r){var n=v(e)[0];if(void 0!==n){var i=n.rowBlocks,a=n.calcdata,o=I(i,i.length),s=n.calcdata.groupHeight-M(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),c=function(t,e,r){for(var n=[],i=0,a=0;a<t.length;a++){for(var o=t[a],s=o.rows,l=0,c=0;c<s.length;c++)l+=s[c].rowHeight;o.allRowsHeight=l,e<i+l&&e+r>i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each(function(t,e){t.page=c[e],t.scrollY=l}),e.attr(\"transform\",function(t){return\"translate(0 \"+(I(t.rowBlocks,t.page)-t.scrollY)+\")\"}),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),m(r,t))}}function S(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter(function(t){return s.key===t.key}),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(k);return T(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var a=r.filter(function(t,e){return e===o&&n[e]!==i[e]});y(t,e,a,r),i[o]=n[o]}))}function E(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each(function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each(function(t,r){e[r].width=this.getComputedTextLength()});var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0}),o.selectAll(\"tspan.line\").remove(),x(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(O)}}function L(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=R(o),c=o.key-l.firstRowIndex,u=l.rows[c].rowHeight,f=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:u,h=Math.max(f,u);h-l.rows[c].rowHeight&&(l.rows[c].rowHeight=h,t.selectAll(\".\"+n.cn.columnCell).call(O),T(null,t.filter(k),0),m(r,a,!0)),s.attr(\"transform\",function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return\"translate(\"+z(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width)+\" \"+a+\")\"}),o.settledY=!0}}}function z(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function O(t){t.attr(\"transform\",function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce(function(t,e){return t+D(e,1/0)},0);return\"translate(0 \"+(D(R(t),t.key)+e)+\")\"}).selectAll(\".\"+n.cn.cellRect).attr(\"height\",function(t){return(e=R(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r})}function I(t,e){for(var r=0,n=e-1;n>=0;n--)r+=P(t[n]);return r}function D(t,e){for(var r=0,n=0;n<t.rows.length&&t.rows[n].rowIndex<e;n++)r+=t.rows[n].rowHeight;return r}function P(t){var e=t.allRowsHeight;if(void 0!==e)return e;for(var r=0,n=0;n<t.rows.length;n++)r+=t.rows[n].rowHeight;return t.allRowsHeight=r,r}function R(t){return t.rowBlocks[t.page]}e.exports=function(t,e){var r=!t._context.staticPlot,s=t._fullLayout._paper.selectAll(\".\"+n.cn.table).data(e.map(function(e){var r=a.unwrap(e).trace;return u(t,r)}),a.keyFun);s.exit().remove(),s.enter().append(\"g\").classed(n.cn.table,!0).attr(\"overflow\",\"visible\").style(\"box-sizing\",\"content-box\").style(\"position\",\"absolute\").style(\"left\",0).style(\"overflow\",\"visible\").style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"all\"),s.attr(\"width\",function(t){return t.width+t.size.l+t.size.r}).attr(\"height\",function(t){return t.height+t.size.t+t.size.b}).attr(\"transform\",function(t){return\"translate(\"+t.translateX+\",\"+t.translateY+\")\"});var h=s.selectAll(\".\"+n.cn.tableControlView).data(a.repeat,a.keyFun),x=h.enter().append(\"g\").classed(n.cn.tableControlView,!0).style(\"box-sizing\",\"content-box\");r&&x.on(\"mousemove\",function(e){h.filter(function(t){return e===t}).call(m,t)}).on(\"mousewheel\",function(e){if(!e.scrollbarState.wheeling){e.scrollbarState.wheeling=!0;var r=e.scrollY+i.event.deltaY;S(t,h,null,r)(e)||(i.event.stopPropagation(),i.event.preventDefault()),e.scrollbarState.wheeling=!1}}).call(m,t,!0),h.attr(\"transform\",function(t){return\"translate(\"+t.size.l+\" \"+t.size.t+\")\"});var b=h.selectAll(\".\"+n.cn.scrollBackground).data(a.repeat,a.keyFun);b.enter().append(\"rect\").classed(n.cn.scrollBackground,!0).attr(\"fill\",\"none\"),b.attr(\"width\",function(t){return t.width}).attr(\"height\",function(t){return t.height}),h.each(function(e){o.setClipUrl(i.select(this),d(t,e),t)});var _=h.selectAll(\".\"+n.cn.yColumn).data(function(t){return t.columns},a.keyFun);_.enter().append(\"g\").classed(n.cn.yColumn,!0),_.exit().remove(),_.attr(\"transform\",function(t){return\"translate(\"+t.x+\" 0)\"}),r&&_.call(i.behavior.drag().origin(function(e){return w(i.select(this),e,-n.uplift),l(this),e.calcdata.columnDragInProgress=!0,m(h.filter(function(t){return e.calcdata.key===t.key}),t),e}).on(\"drag\",function(t){var e=i.select(this),r=function(e){return(t===e?i.event.x:e.x)+e.columnWidth/2};t.x=Math.max(-n.overdrag,Math.min(t.calcdata.width+n.overdrag-t.columnWidth,i.event.x)),v(_).filter(function(e){return e.calcdata.key===t.calcdata.key}).sort(function(t,e){return r(t)-r(e)}).forEach(function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e)}),_.filter(function(e){return t!==e}).transition().ease(n.transitionEase).duration(n.transitionDuration).attr(\"transform\",function(t){return\"translate(\"+t.x+\" 0)\"}),e.call(c).attr(\"transform\",\"translate(\"+t.x+\" -\"+n.uplift+\" )\")}).on(\"dragend\",function(e){var r=i.select(this),n=e.calcdata;e.x=e.xScale(e),e.calcdata.columnDragInProgress=!1,w(r,e,0),function(t,e,r){var n=e.gdColumnsOriginalOrder;e.gdColumns.sort(function(t,e){return r[n.indexOf(t)]-r[n.indexOf(e)]}),e.columnorder=r,t.emit(\"plotly_restyle\")}(t,n,n.columns.map(function(t){return t.xIndex}))})),_.each(function(e){o.setClipUrl(i.select(this),g(t,e),t)});var M=_.selectAll(\".\"+n.cn.columnBlock).data(f.splitToPanels,a.keyFun);M.enter().append(\"g\").classed(n.cn.columnBlock,!0).attr(\"id\",function(t){return t.key}),M.style(\"cursor\",function(t){return t.dragHandle?\"ew-resize\":t.calcdata.scrollbarState.barWiggleRoom?\"ns-resize\":\"default\"});var C=M.filter(A),E=M.filter(k);r&&E.call(i.behavior.drag().origin(function(t){return i.event.stopPropagation(),t}).on(\"drag\",S(t,h,-1)).on(\"dragend\",function(){})),y(t,h,C,M),y(t,h,E,M);var L=h.selectAll(\".\"+n.cn.scrollAreaClip).data(a.repeat,a.keyFun);L.enter().append(\"clipPath\").classed(n.cn.scrollAreaClip,!0).attr(\"id\",function(e){return d(t,e)});var z=L.selectAll(\".\"+n.cn.scrollAreaClipRect).data(a.repeat,a.keyFun);z.enter().append(\"rect\").classed(n.cn.scrollAreaClipRect,!0).attr(\"x\",-n.overdrag).attr(\"y\",-n.uplift).attr(\"fill\",\"none\"),z.attr(\"width\",function(t){return t.width+2*n.overdrag}).attr(\"height\",function(t){return t.height+n.uplift}),_.selectAll(\".\"+n.cn.columnBoundary).data(a.repeat,a.keyFun).enter().append(\"g\").classed(n.cn.columnBoundary,!0);var O=_.selectAll(\".\"+n.cn.columnBoundaryClippath).data(a.repeat,a.keyFun);O.enter().append(\"clipPath\").classed(n.cn.columnBoundaryClippath,!0),O.attr(\"id\",function(e){return g(t,e)});var I=O.selectAll(\".\"+n.cn.columnBoundaryRect).data(a.repeat,a.keyFun);I.enter().append(\"rect\").classed(n.cn.columnBoundaryRect,!0).attr(\"fill\",\"none\"),I.attr(\"width\",function(t){return t.columnWidth+2*p(t)}).attr(\"height\",function(t){return t.calcdata.height+2*p(t)+n.uplift}).attr(\"x\",function(t){return-p(t)}).attr(\"y\",function(t){return-p(t)}),T(null,E,h)}},{\"../../components/color\":571,\"../../components/drawing\":592,\"../../lib\":694,\"../../lib/gup\":692,\"../../lib/svg_text_utils\":718,\"./constants\":1142,\"./data_preparation_helper\":1143,\"./data_split_helpers\":1144,d3:149}],1148:[function(t,e,r){\"use strict\";var n=t(\"../box/attributes\"),i=t(\"../../lib/extend\").extendFlat;e.exports={y:n.y,x:n.x,x0:n.x0,y0:n.y0,name:n.name,orientation:i({},n.orientation,{}),bandwidth:{valType:\"number\",min:0,editType:\"calc\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},scalemode:{valType:\"enumerated\",values:[\"width\",\"count\"],dflt:\"width\",editType:\"calc\"},spanmode:{valType:\"enumerated\",values:[\"soft\",\"hard\",\"manual\"],dflt:\"soft\",editType:\"calc\"},span:{valType:\"info_array\",items:[{valType:\"any\",editType:\"calc\"},{valType:\"any\",editType:\"calc\"}],editType:\"calc\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,points:i({},n.boxpoints,{}),jitter:i({},n.jitter,{}),pointpos:i({},n.pointpos,{}),width:i({},n.width,{}),marker:n.marker,text:n.text,box:{visible:{valType:\"boolean\",dflt:!1,editType:\"plot\"},width:{valType:\"number\",min:0,max:1,dflt:.25,editType:\"plot\"},fillcolor:{valType:\"color\",editType:\"style\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,editType:\"style\"},editType:\"style\"},editType:\"plot\"},meanline:{visible:{valType:\"boolean\",dflt:!1,editType:\"plot\"},color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,editType:\"style\"},editType:\"plot\"},side:{valType:\"enumerated\",values:[\"both\",\"positive\",\"negative\"],dflt:\"both\",editType:\"calc\"},selected:n.selected,unselected:n.unselected,hoveron:{valType:\"flaglist\",flags:[\"violins\",\"points\",\"kde\"],dflt:\"violins+points+kde\",extras:[\"all\"],editType:\"style\"}}},{\"../../lib/extend\":684,\"../box/attributes\":858}],1149:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../box/calc\"),o=t(\"./helpers\"),s=t(\"../../constants/numerical\").BADNUM;function l(t,e,r){var i=e.max-e.min;if(!i)return 1;if(t.bandwidth)return Math.max(t.bandwidth,i/1e4);var a=r.length,o=n.stdev(r,a-1,e.mean);return Math.max(function(t,e,r){return 1.059*Math.min(e,r/1.349)*Math.pow(t,-.2)}(a,o,e.q3-e.q1),i/100)}function c(t,e,r,n){var a,o=t.spanmode,l=t.span||[],c=[e.min,e.max],u=[e.min-2*n,e.max+2*n];function f(n){var i=l[n],a=\"multicategory\"===r.type?r.r2c(i):r.d2c(i,0,t[e.valLetter+\"calendar\"]);return a===s?u[n]:a}var h={type:\"linear\",range:a=\"soft\"===o?u:\"hard\"===o?c:[f(0),f(1)]};return i.setConvert(h),h.cleanRange(),a}e.exports=function(t,e){var r=a(t,e);if(r[0].t.empty)return r;for(var s=t._fullLayout,u=i.getFromId(t,e[\"h\"===e.orientation?\"xaxis\":\"yaxis\"]),f=1/0,h=-1/0,p=0,d=0,g=0;g<r.length;g++){var v=r[g],m=v.pts.map(o.extractVal),y=v.bandwidth=l(e,v,m),x=v.span=c(e,v,u,y),b=x[1]-x[0],_=Math.ceil(b/(y/3)),w=b/_;if(!isFinite(w)||!isFinite(_))return n.error(\"Something went wrong with computing the violin span\"),r[0].t.empty=!0,r;var k=o.makeKDE(v,e,m);v.density=new Array(_);for(var A=0,M=x[0];M<x[1]+w/2;A++,M+=w){var T=k(M);v.density[A]={v:T,t:M},p=Math.max(p,T)}d=Math.max(d,m.length),f=Math.min(f,x[0]),h=Math.max(h,x[1])}var S=i.findExtremes(u,[f,h],{padded:!0});if(e._extremes[u._id]=S,e.width)r[0].t.maxKDE=p;else{var C=s._violinScaleGroupStats,E=e.scalegroup,L=C[E];L?(L.maxKDE=Math.max(L.maxKDE,p),L.maxCount=Math.max(L.maxCount,d)):C[E]={maxKDE:p,maxCount:d}}return r[0].t.labels.kde=n._(t,\"kde:\"),r}},{\"../../constants/numerical\":671,\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../box/calc\":859,\"./helpers\":1152}],1150:[function(t,e,r){\"use strict\";var n=t(\"../box/cross_trace_calc\").setPositionOffset,i=[\"v\",\"h\"];e.exports=function(t,e){for(var r=t.calcdata,a=e.xaxis,o=e.yaxis,s=0;s<i.length;s++){for(var l=i[s],c=\"h\"===l?o:a,u=[],f=0;f<r.length;f++){var h=r[f],p=h[0].t,d=h[0].trace;!0!==d.visible||\"violin\"!==d.type||p.empty||d.orientation!==l||d.xaxis!==a._id||d.yaxis!==o._id||u.push(f)}n(\"violin\",t,u,c)}}},{\"../box/cross_trace_calc\":860}],1151:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../box/defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,o,r,i)}function c(r,i){return n.coerce2(t,e,o,r,i)}if(a.handleSampleDefaults(t,e,l,s),!1!==e.visible){l(\"bandwidth\"),l(\"side\"),l(\"width\")||(l(\"scalegroup\",e.name),l(\"scalemode\"));var u,f=l(\"span\");Array.isArray(f)&&(u=\"manual\"),l(\"spanmode\",u);var h=l(\"line.color\",(t.marker||{}).color||r),p=l(\"line.width\"),d=l(\"fillcolor\",i.addOpacity(e.line.color,.5));a.handlePointsDefaults(t,e,l,{prefix:\"\"});var g=c(\"box.width\"),v=c(\"box.fillcolor\",d),m=c(\"box.line.color\",h),y=c(\"box.line.width\",p);l(\"box.visible\",Boolean(g||v||m||y))||(e.box={visible:!1});var x=c(\"meanline.color\",h),b=c(\"meanline.width\",p);l(\"meanline.visible\",Boolean(x||b))||(e.meanline={visible:!1})}}},{\"../../components/color\":571,\"../../lib\":694,\"../box/defaults\":861,\"./attributes\":1148}],1152:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=function(t){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*t*t)};r.makeKDE=function(t,e,r){var n=r.length,a=i,o=t.bandwidth,s=1/(n*o);return function(t){for(var e=0,i=0;i<n;i++)e+=a((t-r[i])/o);return s*e}},r.getPositionOnKdePath=function(t,e,r){var i,a;\"h\"===e.orientation?(i=\"y\",a=\"x\"):(i=\"x\",a=\"y\");var o=n.findPointOnPath(t.path,r,a,{pathLength:t.pathLength}),s=t.posCenterPx,l=o[i];return[l,\"both\"===e.side?2*s-l:s]},r.getKdeValue=function(t,e,n){var i=t.pts.map(r.extractVal);return r.makeKDE(t,e,i)(n)/t.posDensityScale},r.extractVal=function(t){return t.v}},{\"../../lib\":694}],1153:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../box/hover\"),o=t(\"./helpers\");e.exports=function(t,e,r,s,l){var c,u,f=t.cd,h=f[0].trace,p=h.hoveron,d=-1!==p.indexOf(\"violins\"),g=-1!==p.indexOf(\"kde\"),v=[];if(d||g){var m=a.hoverOnBoxes(t,e,r,s);if(d&&(v=v.concat(m)),g&&m.length>0){var y,x,b,_,w,k=t.xa,A=t.ya;\"h\"===h.orientation?(w=e,y=\"y\",b=A,x=\"x\",_=k):(w=r,y=\"x\",b=k,x=\"y\",_=A);var M=f[t.index];if(w>=M.span[0]&&w<=M.span[1]){var T=n.extendFlat({},t),S=_.c2p(w,!0),C=o.getKdeValue(M,h,w),E=o.getPositionOnKdePath(M,h,S),L=b._offset,z=b._length;T[y+\"0\"]=E[0],T[y+\"1\"]=E[1],T[x+\"0\"]=T[x+\"1\"]=S,T[x+\"Label\"]=x+\": \"+i.hoverLabelText(_,w)+\", \"+f[0].t.labels.kde+\" \"+C.toFixed(3),T.spikeDistance=m[0].spikeDistance;var O=y+\"Spike\";T[O]=m[0][O],m[0].spikeDistance=void 0,m[0][O]=void 0,v.push(T),(u={stroke:t.color})[y+\"1\"]=n.constrain(L+E[0],L,L+z),u[y+\"2\"]=n.constrain(L+E[1],L,L+z),u[x+\"1\"]=u[x+\"2\"]=_._offset+S}}}-1!==p.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var I=l.selectAll(\".violinline-\"+h.uid).data(u?[0]:[]);return I.enter().append(\"line\").classed(\"violinline-\"+h.uid,!0).attr(\"stroke-width\",1.5),I.exit().remove(),I.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":694,\"../../plots/cartesian/axes\":742,\"../box/hover\":863,\"./helpers\":1152}],1154:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":754,\"../box/select\":868,\"../scatter/style\":1070,\"./attributes\":1148,\"./calc\":1149,\"./cross_trace_calc\":1150,\"./defaults\":1151,\"./hover\":1153,\"./layout_attributes\":1155,\"./layout_defaults\":1156,\"./plot\":1157,\"./style\":1158}],1155:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":694,\"../box/layout_attributes\":865}],1156:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,function(r,a){return n.coerce(t,e,i,r,a)},\"violin\")}},{\"../../lib\":694,\"../box/layout_defaults\":866,\"./layout_attributes\":1155}],1157:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each(function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(e.isRangePlot||(a.node3=r),!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,v=e[s.valLetter+\"axis\"],m=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each(function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,k=w.length,A=t.pos+d,M=m.c2p(A);if(c.width)e=s.maxKDE/g;else{var T=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?T.maxKDE/g*(T.maxCount/t.pts.length):T.maxKDE/g}if(x){for(f=new Array(k),o=0;o<k;o++)(h=f[o]={})[s.posLetter]=A+w[o].v/e,h[s.valLetter]=w[o].t;r=p(f)}if(b){for(f=new Array(k),l=0,o=k-1;l<k;l++,o--)(h=f[l]={})[s.posLetter]=A-w[o].v/e,h[s.valLetter]=w[o].t;i=p(f)}if(y)a=r+\"L\"+i.substr(1)+\"Z\";else{var S=[M,v.c2p(w[0].t)],C=[M,v.c2p(w[k-1].t)];\"h\"===c.orientation&&(S.reverse(),C.reverse()),a=x?\"M\"+S+\"L\"+r.substr(1)+\"L\"+C:\"M\"+C+\"L\"+i.substr(1)+\"L\"+S}_.attr(\"d\",a),t.posCenterPx=M,t.posDensityScale=e*g,t.path=_.node(),t.pathLength=t.path.getTotalLength()/(y?2:1)});var w,k,A,M=c.box,T=M.width,S=(M.line||{}).width;y?(w=g*T,k=0):x?(w=[0,g*T/2],k=-S):(w=[g*T/2,0],k=S),o.plotBoxAndWhiskers(r,{pos:m,val:v},c,{bPos:d,bdPos:w,bPosPxOffset:k}),o.plotBoxMean(r,{pos:m,val:v},c,{bPos:d,bdPos:w,bPosPxOffset:k}),!c.box.visible&&c.meanline.visible&&(A=i.identity);var C=r.selectAll(\"path.meanline\").data(A||[]);C.enter().append(\"path\").attr(\"class\",\"meanline\").style(\"fill\",\"none\").style(\"vector-effect\",\"non-scaling-stroke\"),C.exit().remove(),C.each(function(t){var e=v.c2p(t.mean,!0),r=l.getPositionOnKdePath(t,c,e);n.select(this).attr(\"d\",\"h\"===c.orientation?\"M\"+e+\",\"+r[0]+\"V\"+r[1]:\"M\"+r[0]+\",\"+e+\"H\"+r[1])}),o.plotPoints(r,{x:f,y:h},c,s)}})}},{\"../../components/drawing\":592,\"../../lib\":694,\"../box/plot\":867,\"../scatter/line_points\":1061,\"./helpers\":1152,d3:149}],1158:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../../components/color\"),a=t(\"../scatter/style\").stylePoints;e.exports=function(t,e){var r=e?e[0].node3:n.select(t).selectAll(\"g.trace.violins\");r.style(\"opacity\",function(t){return t[0].trace.opacity}),r.each(function(e){var r=e[0].trace,o=n.select(this),s=r.box||{},l=s.line||{},c=r.meanline||{},u=c.width;o.selectAll(\"path.violin\").style(\"stroke-width\",r.line.width+\"px\").call(i.stroke,r.line.color).call(i.fill,r.fillcolor),o.selectAll(\"path.box\").style(\"stroke-width\",l.width+\"px\").call(i.stroke,l.color).call(i.fill,s.fillcolor);var f={\"stroke-width\":u+\"px\",\"stroke-dasharray\":2*u+\"px,\"+u+\"px\"};o.selectAll(\"path.mean\").style(f).call(i.stroke,c.color),o.selectAll(\"path.meanline\").style(f).call(i.stroke,c.color),a(o,r,t)})}},{\"../../components/color\":571,\"../scatter/style\":1070,d3:149}],1159:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,i=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,a=0;a<e.length;a++){var o=n(t[e[a]]);o!==s&&(r+=o)}return i(r)};case\"avg\":return function(t,e){for(var r=0,a=0,o=0;o<e.length;o++){var l=n(t[e[o]]);l!==s&&(r+=l,a++)}return a?i(r/a):s};case\"min\":return function(t,e){for(var r=1/0,a=0;a<e.length;a++){var o=n(t[e[a]]);o!==s&&(r=Math.min(r,o))}return r===1/0?s:i(r)};case\"max\":return function(t,e){for(var r=-1/0,a=0;a<e.length;a++){var o=n(t[e[a]]);o!==s&&(r=Math.max(r,o))}return r===-1/0?s:i(r)};case\"range\":return function(t,e){for(var r=1/0,a=-1/0,o=0;o<e.length;o++){var l=n(t[e[o]]);l!==s&&(r=Math.min(r,l),a=Math.max(a,l))}return a===-1/0||r===1/0?s:i(a-r)};case\"change\":return function(t,e){var r=n(t[e[0]]),a=n(t[e[e.length-1]]);return r===s||a===s?s:i(a-r)};case\"median\":return function(t,e){for(var r=[],a=0;a<e.length;a++){var o=n(t[e[a]]);o!==s&&r.push(o)}if(!r.length)return s;r.sort();var l=(r.length-1)/2;return i((r[Math.floor(l)]+r[Math.ceil(l)])/2)};case\"mode\":return function(t,e){for(var r={},a=0,o=s,l=0;l<e.length;l++){var c=n(t[e[l]]);if(c!==s){var u=r[c]=(r[c]||0)+1;u>a&&(a=u,o=c)}}return a?i(o):s};case\"rms\":return function(t,e){for(var r=0,a=0,o=0;o<e.length;o++){var l=n(t[e[o]]);l!==s&&(r+=l*l,a++)}return a?i(Math.sqrt(r/a)):s};case\"stddev\":return function(e,r){var i,a=0,o=0,l=1,c=s;for(i=0;i<r.length&&c===s;i++)c=n(e[r[i]]);if(c===s)return s;for(;i<r.length;i++){var u=n(e[r[i]]);if(u!==s){var f=u-c;a+=f,o+=f*f,l++}}var h=\"sample\"===t.funcmode?l-1:l;return h?Math.sqrt((o-a*a/l)/h):0}}}(a,n.getDataConversions(t,e,o,c)),d=new Array(r.length),g=0;g<r.length;g++)d[g]=u(c,r[g]);l.set(d),\"count\"===a.func&&i.pushUnique(e._arrayAttrs,o)}}function f(t,e){return e.length}function h(t,e){return t[e[0]]}function p(t,e){return t[e[e.length-1]]}r.supplyDefaults=function(t,e){var r,n={};function o(e,r){return i.coerce(t,n,l,e,r)}if(!o(\"enabled\"))return n;var s=a.findArrayAttributes(e),u={};for(r=0;r<s.length;r++)u[s[r]]=1;var f=o(\"groups\");if(!Array.isArray(f)){if(!u[f])return n.enabled=!1,n;u[f]=0}var h,p=t.aggregations||[],d=n.aggregations=new Array(p.length);function g(t,e){return i.coerce(p[r],h,c,t,e)}for(r=0;r<p.length;r++){h={_index:r};var v=g(\"target\"),m=g(\"func\");g(\"enabled\")&&v&&(u[v]||\"count\"===m&&void 0===u[v])?(\"stddev\"===m&&g(\"funcmode\"),u[v]=0,d[r]=h):d[r]={enabled:!1,_index:r}}for(r=0;r<s.length;r++)u[s[r]]&&d.push({target:s[r],func:c.func.dflt,enabled:!0,_index:-1});return n},r.calcTransform=function(t,e,r){if(r.enabled){var n=r.groups,a=i.getTargetArray(e,{target:n});if(a){var s,l,c,f,h={},p={},d=[],g=o(e.transforms,r),v=a.length;for(e._length&&(v=Math.min(v,e._length)),s=0;s<v;s++)void 0===(c=h[l=a[s]])?(h[l]=d.length,f=[s],d.push(f),p[h[l]]=g(s)):(d[c].push(s),p[h[l]]=(p[h[l]]||[]).concat(g(s)));r._indexToPoints=p;var m=r.aggregations;for(s=0;s<m.length;s++)u(t,e,d,m[s]);\"string\"==typeof n&&u(t,e,d,{target:n,func:\"first\",enabled:!0}),e._length=d.length}}}},{\"../constants/numerical\":671,\"../lib\":694,\"../plot_api/plot_schema\":731,\"../plots/cartesian/axes\":742,\"./helpers\":1162}],1160:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../registry\"),a=t(\"../plots/cartesian/axes\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/filter_ops\"),l=s.COMPARISON_OPS,c=s.INTERVAL_OPS,u=s.SET_OPS;r.moduleType=\"transform\",r.name=\"filter\",r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},target:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},operation:{valType:\"enumerated\",values:[].concat(l).concat(c).concat(u),dflt:\"=\",editType:\"calc\"},value:{valType:\"any\",dflt:0,editType:\"calc\"},preservegaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc\"},r.supplyDefaults=function(t){var e={};function a(i,a){return n.coerce(t,e,r.attributes,i,a)}if(a(\"enabled\")){a(\"preservegaps\"),a(\"operation\"),a(\"value\"),a(\"target\");var o=i.getComponentMethod(\"calendars\",\"handleDefaults\");o(t,e,\"valuecalendar\",null),o(t,e,\"targetcalendar\",null)}return e},r.calcTransform=function(t,e,r){if(r.enabled){var i=n.getTargetArray(e,r);if(i){var s=r.target,f=i.length;e._length&&(f=Math.min(f,e._length));var h=r.targetcalendar,p=e._arrayAttrs,d=r.preservegaps;if(\"string\"==typeof s){var g=n.nestedProperty(e,s+\"calendar\").get();g&&(h=g)}var v,m,y=function(t,e,r){var n=t.operation,i=t.value,a=Array.isArray(i);function o(t){return-1!==t.indexOf(n)}var s,f=function(r){return e(r,0,t.valuecalendar)},h=function(t){return e(t,0,r)};o(l)?s=f(a?i[0]:i):o(c)?s=a?[f(i[0]),f(i[1])]:[f(i),f(i)]:o(u)&&(s=a?i.map(f):[f(i)]);switch(n){case\"=\":return function(t){return h(t)===s};case\"!=\":return function(t){return h(t)!==s};case\"<\":return function(t){return h(t)<s};case\"<=\":return function(t){return h(t)<=s};case\">\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e<s[1]};case\"[)\":return function(t){var e=h(t);return e>=s[0]&&e<s[1]};case\"(]\":return function(t){var e=h(t);return e>s[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return e<s[0]||e>s[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e<s[0]||e>=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(v=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},m=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(v=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},m=function(t,e){var r=x[t.astr][e];t.get().push(r)}),A(v);for(var w=o(e.transforms,r),k=0;k<f;k++){y(i[k])?(A(m,k),b[_++]=w(k)):d&&_++}r._indexToPoints=b,e._length=_}}function A(t,r){for(var i=0;i<p.length;i++){t(n.nestedProperty(e,p[i]),r)}}}},{\"../constants/filter_ops\":667,\"../lib\":694,\"../plots/cartesian/axes\":742,\"../registry\":825,\"./helpers\":1162}],1161:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plot_api/plot_schema\"),a=t(\"../plots/plots\"),o=t(\"./helpers\").pointsAccessorFunction;function s(t,e){var r,s,l,c,u,f,h,p,d,g,v=e.transform,m=e.transformIndex,y=t.transforms[m].groups,x=o(t.transforms,v);if(!Array.isArray(y)||0===y.length)return[t];var b=n.filterUnique(y),_=new Array(b.length),w=y.length,k=i.findArrayAttributes(t),A=v.styles||[],M={};for(r=0;r<A.length;r++)M[A[r].target]=A[r].value;v.styles&&(g=n.keyedContainer(v,\"styles\",\"target\",\"value.name\"));var T={},S={};for(r=0;r<b.length;r++){T[f=b[r]]=r,S[f]=0,(h=_[r]=n.extendDeepNoArrays({},t))._group=f,h.transforms[m]._indexToPoints={};var C=null;for(g&&(C=g.get(f)),h.name=C||\"\"===C?C:n.templateString(v.nameformat,{trace:t.name,group:f}),p=h.transforms,h.transforms=[],s=0;s<p.length;s++)h.transforms[s]=n.extendDeepNoArrays({},p[s]);for(s=0;s<k.length;s++)n.nestedProperty(h,k[s]).set([])}for(l=0;l<k.length;l++){for(c=k[l],s=0,d=[];s<b.length;s++)d[s]=n.nestedProperty(_[s],c).get();for(u=n.nestedProperty(t,c).get(),s=0;s<w;s++)d[T[y[s]]].push(u[s])}for(s=0;s<w;s++){(h=_[T[y[s]]]).transforms[m]._indexToPoints[S[y[s]]]=x(s),S[y[s]]++}for(r=0;r<b.length;r++)f=b[r],h=_[r],a.clearExpandedTraceDefaultColors(h),h=n.extendDeepNoArrays(h,M[f]||{});return _}r.moduleType=\"transform\",r.name=\"groupby\",r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"data_array\",dflt:[],editType:\"calc\"},nameformat:{valType:\"string\",editType:\"calc\"},styles:{_isLinkedToArray:\"style\",target:{valType:\"string\",editType:\"calc\"},value:{valType:\"any\",dflt:{},editType:\"calc\",_compareAsJSON:!0},editType:\"calc\"},editType:\"calc\"},r.supplyDefaults=function(t,e,i){var a,o={};function s(e,i){return n.coerce(t,o,r.attributes,e,i)}if(!s(\"enabled\"))return o;s(\"groups\"),s(\"nameformat\",i._dataLength>1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a<l.length;a++){var u=c[a]={};n.coerce(l[a],c[a],r.attributes.styles,\"target\");var f=n.coerce(l[a],c[a],r.attributes.styles,\"value\");n.isPlainObject(f)?u.value=n.extendDeep({},f):f&&delete u.value}return o},r.transform=function(t,e){var r,n,i,a=[];for(n=0;n<t.length;n++)for(r=s(t[n],e),i=0;i<r.length;i++)a.push(r[i]);return a}},{\"../lib\":694,\"../plot_api/plot_schema\":731,\"../plots/plots\":806,\"./helpers\":1162}],1162:[function(t,e,r){\"use strict\";r.pointsAccessorFunction=function(t,e){for(var r,n,i=0;i<t.length&&(r=t[i])!==e;i++)r._indexToPoints&&!1!==r.enabled&&(n=r._indexToPoints);return n?function(t){return n[t]}:function(t){return[t]}}},{}],1163:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/cartesian/axes\"),a=t(\"./helpers\").pointsAccessorFunction;r.moduleType=\"transform\",r.name=\"sort\",r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},target:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},order:{valType:\"enumerated\",values:[\"ascending\",\"descending\"],dflt:\"ascending\",editType:\"calc\"},editType:\"calc\"},r.supplyDefaults=function(t){var e={};function i(i,a){return n.coerce(t,e,r.attributes,i,a)}return i(\"enabled\")&&(i(\"target\"),i(\"order\")),e},r.calcTransform=function(t,e,r){if(r.enabled){var o=n.getTargetArray(e,r);if(o){var s=r.target,l=o.length;e._length&&(l=Math.min(l,e._length));var c,u,f=e._arrayAttrs,h=function(t,e,r,n){var i,a=new Array(n),o=new Array(n);for(i=0;i<n;i++)a[i]={v:e[i],i:i};for(a.sort(function(t,e){switch(t.order){case\"ascending\":return function(t,r){return e(t.v)-e(r.v)};case\"descending\":return function(t,r){return e(r.v)-e(t.v)}}}(t,r)),i=0;i<n;i++)o[i]=a[i].i;return o}(r,o,i.getDataToCoordFunc(t,e,s,o),l),p=a(e.transforms,r),d={};for(c=0;c<f.length;c++){var g=n.nestedProperty(e,f[c]),v=g.get(),m=new Array(l);for(u=0;u<l;u++)m[u]=v[h[u]];g.set(m)}for(u=0;u<l;u++)d[u]=p(h[u]);r._indexToPoints=d,e._length=l}}}},{\"../lib\":694,\"../plots/cartesian/axes\":742,\"./helpers\":1162}]},{},[22])(22)});</script><div id=\"72973a80-5140-4a04-afba-6a9d1c75bd98\" style=\"height: 100%; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"72973a80-5140-4a04-afba-6a9d1c75bd98\", [{\"marker\": {\"color\": [52, 191, 178, 208, 269, 83, 302, 130, 234, 167, 179, 111, 44, 265, 8, 32, 68, 54, 146, 134, 94, 61, 206, 91, 331, 141, 170, 107, 131, 119, 72, 161, 263, 271, 110, 198, 157, 162, 229, 73, 149, 125, 315, 179, 115, 185, 232, 212, 194, 207, 78, 199, 104, 84, 301, 182, 108, 197, 182, 164, 206, 221, 129, 89, 513, 214, 103, 273, 618, 78, 79, 214, 258, 97, 186, 207, 81, 194, 135, 111, 147, 199, 218, 87, 97, 57, 179, 106, 218, 164, 248, 73, 141, 202, 170, 267, 141, 83, 133, 140, 322, 70, 64, 211, 140, 234, 141, 119, 233, 209, 130, 153, 166, 70, 37, 14, 118, 147, 114, 72, 76, 136, 139, 83, 139, 148, 195, 68, 193, 102, 124, 182, 122, 130, 14, 99, 96, 36, 104, 92, 133, 146, 124, 143, 95, 59, 95, 202, 217, 39, 57, 103, 186, 173, 50, 188, 250, 24, 127, 73, 200, 73, 87, 80, 168, 65, 92, 142, 38, 173, 147, 74, 102, 140, 118, 120, 143, 79, 80, 159, 154, 84, 13, 87, 50, 136, 146, 105, 86, 155, 10, 125, 37, 49, 52, 151, 40, 166, 131, 209, 110, 160, 94, 135, 115, 148, 74, 98, 152, 112, 123, 75, 151, 141, 132, 87, 78, 127, 137, 149, 72, 37, 146, 96, 91, 112, 202, 232, 126, 169, 135, 66, 124, 248, 251, 263, 220, 283, 185, 155, 357, 11, 45, 145, 139, 115, 263, 154, 281, 113, 132, 164, 192, 166, 188, 286, 183, 93, 173, 192, 121, 248, 69, 147, 120, 166, 312, 149, 132, 217, 121, 132, 152, 182, 205, 129, 63, 123, 45, 46, 145, 178, 185, 111, 100, 144, 243, 131, 26, 181, 151, 242, 225, 111, 170, 183, 112, 135, 133, 380, 102, 110, 153, 197, 154, 98, 232, 126, 285, 117, 103, 144, 30, 303, 206, 237, 247, 100, 94, 65, 138, 118, 114, 209, 149, 107, 133, 140, 123, 127, 154, 127, 172, 147, 46, 75, 115, 230, 163, 247, 176, 157, 181, 357, 134, 411, 93, 114, 74, 108, 94, 202, 98, 39, 86, 126, 188, 401, 134, 188, 141, 258, 152, 118, 122, 70, 362, 82, 112, 211, 155, 25, 22, 59, 176, 142, 195, 143, 151, 176, 272, 148, 224, 208, 189, 178, 192, 237, 184], \"colorscale\": \"Viridis\", \"opacity\": 0.8, \"showscale\": false, \"size\": 16}, \"mode\": \"markers\", \"text\": [\"modern slavery statement september 2016 - march 2018\", \"facts & figures - 31 august 2017 slavery, servitude, forced labour, bonded labour, and human trafficking are issues of increasing global concern, affecting all sectors, regions and economies.\", \"modern slavery is fundamentally unacceptable within our business and supply chain, and combatting it is an important element of our overall approach to business and human rights.\", \"asos is committed to respecting, protecting and championing the human rights of all those who come into contact with our operations, including employees, supply chain workers, customers and local communities.\", \"we accept our responsibility to support transparency; to find and resolve problems, to regularly review our business practices, and to collaborate with others to protect the rights of workers, particularly those who are most vulnerable to abuses such as modern slavery.\", \"this statement has been published in accordance with the modern slavery act (2015).\", \"it provides an update on our activities and commitments detailed in our modern slavery statement 2015/16 to prevent modern slavery in our business operations and supply chains, and sets out the steps taken by asos plc during financial year ending 31 august 2017 and the intervening time to publication.\", \"it also outlines our commitments towards mitigating the risk of modern slavery in our supply chains for the next year and to 2020.\", \"asos is a multi-platform online shopping destination selling womenswear, menswear, footwear, accessories, gifts and beauty products via our website to millions of young, fashion-loving \\u201920-somethings\\u2019 in 240 countries and territories.\", \"about asos business structure asos is based in the uk, with a head office in london, a smaller technology office in birmingham and a customer care centre in leavesden.\", \"asos fulfilment centres are located in barnsley (uk) and berlin (germany), with additional third-party run returns and reprocessing sites in australia, the usa, poland and the uk.\", \"as our business continues to grow, we will expand our supply chain with a fulfilment centre in the usa in 2018.\", \"1 products on our website third-party brands\", \"asos employees asos brands manufacturing workers asos brands suppliers asos brands factories tiers 1-3 of asos supplier factories are located in bulgaria, china, india, romania, turkey, mauritius and uk over asos modern slavery statement september 2016 - march 2018\", \"1,923.6m\", \"revenue 3,722 173 624 85,000 86%\", \"120,000850 asos modern slavery statement september 2016 - march 2018\", \"we divide our supply chain into two separate areas: 1.\", \"products for re-sale on our website, including asos brands products (\\u2018asos brands\\u2019) and other third-party brands\\u2019 products (\\u2018third-party brands\\u2019).\", \"2. non-stock items and services, including outsourced customer deliveries, logistics, technology, cleaning and catering (\\u2018non-stock\\u2019).\", \"asos brands products are designed in-house and manufactured by third-party supplier factories.\", \"the sourcing department manages the asos brands supply chain.\", \"the ethical trade and sustainable sourcing teams are located within this department to ensure product and raw material suppliers are selected based on ethical and sustainable as well as commercial criteria.\", \"product supply chains are complex, involving a number of different manufacturing processes.\", \"asos maps and describes them as follows: term definition example status tier 1 main production sites factory which cuts, sews, finishes asos brands product and ships to asos fully mapped tier 2 process integral to production provider of one or more processes e.g. stitching, cutting, packing, quality control, warehouses 90% mapped\", \"* \\u2013 completion 2017/18 tier 3 enhancements to product provider of one or more processes e.g. printing, dyeing, laundry, embroidery 90% mapped\", \"* \\u2013 completion 2017/18 tier 4 fabric and components fabric mills, tanneries, hardware and trims partially mapped - completion 2018/19 tier 5 raw materials textile fibres,\", \"natural and manmade materials key commodities mapped 2020 supply chain transparency is a priority for asos.\", \"we recognise the importance of supply chain mapping and due diligence to uphold human rights and prevent undeclared subcontracting.\", \"we are always striving to develop ways to ensure the transparency of our supply chain and traceability of our products.\", \"supply chain table 1: tier structure of asos brands supplier factories 2\", \"* this data is based on the number of suppliers who have accepted our subcontracting policy, requiring them to disclose their lower tier factories if applicable.\", \"in 2017, we published our factory list and an interactive sourcing map, covering all our tier one to tier three sites \\u2013 this is updated every two months and shared with industriall global union, as part of the global framework agreement we signed in october 2017.\", \"we have also developed and disseminated an unapproved subcontracting policy, which strengthens our long-held requirement for suppliers to declare all factories involved in the manufacture of asos brands products and work with us to make sure only approved units are used.\", \"the policy stresses the requirement for suppliers to have full visibility and oversight of their supply chain.\", \"they are also required to keep detailed records relating to every manufacturing unit and ensure that all products supplied to asos are manufactured in accordance with the asos supplier ethical code.\", \"since we implemented the policy in september 2017, we have found 18 instances of unapproved subcontracting across a range of garment manufacturing processes.\", \"we fully investigate and manage each incident as it arises, and work closely with our lead suppliers to drive transparency improvements and mitigate future risks.\", \"transparency asos sells over 850 third-party brands and this year we have developed a new programme with dedicated resource to work with these brands on ethical trade and sustainability, promoting good practice and collaboration.\", \"this increases our joint capacity to drive improvements on common issues.\", \"asos non-stock products and services are managed through a central procurement team, supported by asos corporate responsibility and asos legal teams.\", \"in 2018, we will recruit an ethical trade non-stock manager to work closely with these functions and our non-stock suppliers.\", \"https://www.asosplc.com/~/media/files/a/asos-v2/documents/january-2018-factory-list.pdf https://www.asosplc.com/corporate-responsibility/our-products/sourcing-map https://www.asosplc.com/corporate-responsibility/our-products/sourcing-map https://www.asosplc.com/~/media/files/a/asos-v2/global-news/pr-03-10-2017.pdf\", \"https://www.asosplc.com/~/media/files/a/asos-v2/documents/corporate-responsiblity/asos-ethical-code-of-conduct-2017.pdf asos modern slavery statement september 2016 - march 2018 3\", \"we continuously develop our fashion with integrity corporate responsibility strategy based on the un global compact\", \"\\u2019s four pillars of human rights, labour standards, environmental and anti-corruption principles and with reference to the united nations guiding principles on business and human rights.\", \"in recognition of the human rights risks inherent in global sourcing, asos developed a new, board-approved ethical trade strategy in january 2017 to protect workers against human rights abuses, including forced or compulsory labour.\", \"our ethical trade standards supporting action on modern slavery are set out in these policies: \\u2022 asos supplier ethical code: based on the ethical trading initiative base code and international labour organisation\", \"\\u2019s fundamental conventions, and defines the minimum standards we require from all our suppliers, including a separate section with greater detail on what constitutes forced or compulsory labour.\", \"asos child labour, remediation and young worker policy: sets out the steps suppliers need to take to protect young workers and to make sure no children are involved in the manufacture of any of our products.\", \"also prohibits the recruitment of young migrant workers through labour agents.\", \"asos migrant and contract worker policy: sets out supplier requirements to safeguard the rights and welfare of migrant and contract workers - two groups vulnerable to exploitation and modern slavery.\", \"asos brands and non-stock suppliers are contractually required to comply with the policies stated above.\", \"third-party brands are required to comply with our minimum requirement (see page 7).\", \"other documents relevant to preventing modern slavery in asos\\u2019 operations include: do the right thing - asos code of integrity, people handbook, diversity and inclusion statement, whistle-blowing policy, grievance procedure, appeals policy, anti-bribery statement and unapproved subcontracting policy.\", \"policies and contractual controls due diligence governance the chief executive and asos executive committee are responsible for ensuring asos meets its human rights responsibilities.\", \"they are supported by the director of corporate responsibility, sourcing director and head of ethical trade.\", \"our fashion with integrity strategy has the full sign off and commitment of the executive and plc board and we report to the boards on our progress against our strategic goals on a quarterly basis.\", \"human rights and modern slavery are key elements of an annual corporate risk assessment process overseen by the general counsel and company secretary on behalf of the asos plc board.\", \"the assessment is developed with the participation of 45 senior leaders within the organisation and we report on risks identified in our annual report to investors.\", \"in addition, diagram 1 demonstrates our established corporate governance structure with seven business committees responsible for overseeing the delivery of our fashion with integrity strategic commitments.\", \"the governance groups meet monthly to discuss progress against strategy, review risks and seek opportunities for senior managers from across the business to further embed human rights principles into their business areas.\", \"each group is chaired by an executive board member and comprises of senior management representatives and subject-matter experts.\", \"they report on their activities to the ceo and the board of directors on a monthly basis.\", \"the following departments are responsible for carrying out day-to- day implementation of policies and procedures that support asos in meeting its human rights responsibilities: people experience team (asos employees), company secretariat (whistleblowing), corporate responsibility (fashion with integrity strategy), procurement (non-stock suppliers), sourcing (fashion with integrity strategy within product supply chain) and supply chain (outsourced logistics partners), legal (contractual terms and conditions).\", \"we believe that close collaboration with our buying, merchandising, design and garment technology teams is essential to ensure management decisions and purchasing practices are aligned with our ethical trade goals.\", \"to this end, our ethical trade team have regular meetings with both menswear and womenswear management.\", \"asos executive committee 20-something confidence diversity and inclusion sustainable business non-stock supplier integrity product recall decision groups ethical trade business integrity sustainable products diagram 1: seven business committees of asos governance structure\", \"https://www.asosplc.com/~/media/files/a/asos-v2/documents/corporate-responsiblity/asos-ethical-code-of-conduct-2017.pdf https://www.asosplc.com/~/media/files/a/asos-v2/documents/corporate-responsiblity/asos-young-worker-and-child-labour-policy.pdf https://www.asosplc.com/~/media/files/a/asos-v2/documents/corporate-responsiblity/asos-migrant-worker-guidelines-2017.pdf https://www.asosplc.com/~/media/files/a/asos-v2/reports-and-presentations/27-10-2017-ar.pdf asos recognises that there is a risk of modern slavery in any area of our business where there is: \\u2022 migrant labour (country to country or within a country)\", \"high presence of vulnerable populations (such as refugees/ethnic minorities) \\u2022\", \"young workers and risk of child labour \\u2022 contract, agency and temporary workers\", \"\\u2022 women workers \\u2022 outsourced human resources function asos\\u2019 approach to risk assessment comprises of desk-based research, supply chain mapping and audit, as well as focused due diligence and stakeholder engagement.\", \"in particular, we have partnered with anti-slavery international, which act as our \\u2018critical friend\\u2019, helping to ensure that our human rights due diligence process is robust and that we are continuously reviewing and mitigating new risks in our supply chain.\", \"table 2 identifies sourcing regions we assess as highest risk for specific modern slavery issues.\", \"each area of the business is continuously reviewed to set priorities and actions: high priority: asos brands product manufacture, labelling and packaging, offices and fulfilment centres.\", \"medium priority: third-party brands and non-stock suppliers with a high risk of forced or compulsory labour as determined by the presence of migrant workers or labour providers in the low skilled job sector.\", \"low priority: non-stock suppliers with a low risk of forced or compulsory labour.\", \"we have articulated strategic goals on: supply chain transparency, purchasing practices, freedom of association, living wage, gender equality, health and safety, modern slavery and child labour.\", \"asos employs a team of ethical trade specialists through a third-party (\\u2018the regional team\\u2019) based in our key product sourcing regions.\", \"we are expanding our regional resource by directly recruiting local ethical trade managers and team assistance.\", \"this year we employed two ethical trade managers in turkey and china and will be recruiting managers in eastern europe (romania) and india in 2018.\", \"these managers are responsible for implementing our strategy, managing day to day factory audit programmes, and providing the key liaison between the asos head office in london and the regional team.\", \"this also ensures that those responsible for supporting our supply partners to improve their ethical standards understand country-specific risks and can build relationships with local stakeholders to help address them.\", \"the regional team is supported by the ethical trade team at asos head office in london.\", \"the entire international team meets annually for strategy development, training and conferencing.\", \"see here for full details on our ethical trade programme.\", \"asos has developed its own detailed ethical risk assessment ethical trade programme fast forward programme to flag risks of modern slavery in all our uk sites, tiers one to three.\", \"commercial actions have a direct impact on suppliers and factories\\u2019 ability to meet our ethical standards.\", \"we regularly review our own purchasing practices in order to identify ways to strengthen supplier relationships, and ultimately improve working conditions to try and prevent incidences of modern slavery from occurring.\", \"this year, we commissioned surveys with suppliers and our retail teams to highlight gaps in our practices and agree actions for improving our purchasing mechanisms.\", \"we are one of 17 brands participating in the action, collaboration, transformation (act) initiative in partnership with industriall global union, which holds a commitment to ensure brand purchasing practices facilitate the payment of a living wage.\", \"we are also active members of the act purchasing practices working group.\", \"with action, collaboration, transformation, we conducted a purchasing practices self-assessment to review and benchmark our buying practices.\", \"this tool looked at issues as broad as strategic planning, sourcing, development, buying, and the underlying behaviours, values and principles within our business, all of which can impact a living wage.\", \"the outcome highlighted a significant opportunity for asos to refine and improve our approach, drive commercial benefit and fulfil our commitment to minimum/living wages.\", \"whilst we acknowledge that modern slavery can be found in all economies, countries, industries and areas of operation, our initial analysis has identified that the areas at highest risk of modern slavery within asos operations are garment manufacturing supply chains.\", \"over the past nine years, asos has developed ethical trading policies and programmes with the aim of discovering and addressing these issues.\", \"this gives us a strong platform from which to investigate issues of modern slavery.\", \"trade audit methodology which is designed to support and encourage transparency as well as compliance with our supplier ethical code.\", \"whilst we are mindful of the limitations of audits, our programme provides valuable input into our wider risk assessment and programme work.\", \"as we are also aware that perpetrators will work to conceal these issues from auditors, all asos factory audits are unannounced. semi-announced pre-assessments are carried out for potential new factories in the u.k, turkey and india by our regional teams as we have concluded that these regions are particularly high-risk.\", \"for our other sourcing regions we utilise third-party pre-assessments.\", \"we conduct annual audits at all tier 1 factories in all regions.\", \"further to this we audit all tier 2-3 factories in turkey and the u.k, as we recognise that complex outsourcing supply chains increase the risk of illegal, informal labour or in the case of turkey, child labour.\", \"our audit programme also includes specific modern slavery indicators which are used to assess the risk of modern slavery during site audits.\", \"these include document retention, deceptive recruitment practices, recruitment fees, withheld wages, restricted movement or isolation, violence or threats, poor working and/or living conditions, and the presence of vulnerable workers.\", \"should any indicators be discovered, our regional team immediately alerts head office ethical trade managers to agree on appropriate actions.\", \"in the uk, we follow a specific audit methodology through the asos modern slavery statement september 2016 - march 2018\", \"our board approved a new \\u2018three-year\\u2019 ethical trade strategy in jan \\u201817, setting out our long-term vision for increasing respect for workers\\u2019 rights across our supply chain and mitigating the risk of modern slavery in our operations.\", \"this strategy focusses on improving our business practices to protect human rights in our supply chain from the top down, whilst empowering workers to realise their fundamental human rights from the bottom up.\", \"http://www.asosplc.com/corporate-responsibility/our-products/ethical-trade/ethical-trade-programme.aspx risk and steps taken asos\\u2019\", \"due diligence processes have identified a number of potential modern slavery risks that could be present within our business operations and supply chain.\", \"these risks have been summarised in the table below, along with preventative steps taken and a set of commitments based on gaps apparent in asos\\u2019 existing programmes.\", \"we have worked with anti-slavery international throughout the process.\", \"these are our particular focus areas.\", \"migrant labour\", \"migrant workers paying recruitment fees may be trapped in bonded labour and be subjected to inferior employment terms.\", \"labour recruiters create an additional layer between employers and workers, leaving workers exposed to deceptive or coercive recruitment practices.\", \"migrant workers often do not understand their rights in the destination country and the terms of their employment.\", \"\\u2022 countries of highest risk: mauritius, china, india, poland and turkey.\", \"\\u2022 carried out migrant labour risk assessments for top 10 sourcing countries.\", \"\\u2022 supported suppliers in implementing the \\u2018employer pays principle\\u2019 according to which no worker should pay for the cost of recruitment.\", \"\\u2022 monitored worker recruitment in bangladesh in partnership with local migrant workers\\u2019 organisation ovibashi karmi unnayam program (okup).\", \"\\u2022 partnered with mauritian export association to train suppliers on modern slavery.\", \"\\u2022 lobbied mauritian and bangladeshi governments to address migrant worker protection within forthcoming government-to-government agreement.\", \"\\u2022 partnered with british high commission in mauritius to host multi-stakeholder event to agree on framework for improving migrant worker protection.\", \"\\u2022 conducted assessment of labour practices at polish returm centre with anti-slavery international and identified areas of concern in relation to staffing agency\\u2019s treatment of ukrainain workers.\", \"implemented remediation plan in collaboration with business partner.\", \"\\u2022 revise asos migrant and contract worker policy to include further detail on ethical recruitment, remediation, and guidance for implementation across high risk regions and business operations.\", \"\\u2022 pursue brand engagement to drive wider application of the \\u2018employer pays principle\\u2019 in the industry.\", \"\\u2022 continue to lobby the bangladeshi and mauritian governments regarding a fair migration corridor between the two countries.\", \"\\u2022 pursue collaboration with ngo partners and other stakeholders to monitor workers\\u2019 recruitment process and drive improvements in working conditions for migrant workers in mauritius.\", \"\\u2022 continue engagement with eti mauritius working group to deliver roadmap of activities agreed at multi-stakeholder event.\", \"\\u2022 work with our business partner in poland to improve oversight of labour providers and ensure migrant workers are treated fairly.\", \"refugee labour\", \"refugees are particularly vulnerable to human trafficking and forced, bonded and compulsory labour.\", \"\\u2022 refugees may not have access to legal means of employment, therefore increasing vulnerability.\", \"\\u2022 countries of highest risk: turkey.\", \"\\u2022 participated in eti working group on business and human rights and eti turkey platform steering group.\", \"\\u2022 convened two supplier conferences in istanbul to raise awareness of our ethical standards.\", \"\\u2022 signed the fair labour association\\u2019s letter to turkish president, calling for greater access to work for syrian refugees in turkey.\", \"asos suppliers participated in conference on work permits for syrian refugees organised by ethical trade initiative and un refugee agency (unhcr).\", \"\\u2022 established links between factories and local ngo\\u2019s to facilitate the recruitment of syrian workers into our supply chain.\", \"\\u2022 supported syrian refugees in our turkish supply chain to obtain work permits, with 58% of applications successful at the time of publication.\", \"\\u2022 continue to support suppliers to provide decent employment opportunities for syrian refugees.\", \"\\u2022 establish worker hotline in partnership with industriall.\", \"the hotline will operate in turkish and arabic to provide access to remedy for refugee workers.\", \"\\u2022 provide workers with access to information about their rights through information cards, handbooks and a smartphone app due to launch under our global framework agreement with industriall in mid-2018.\", \"\\u2022 participate in project run by fair labour association and turkish ministry of labour to develop tools for syrian refugees to raise awareness of their rights and explain the work permit application process in turkey.\", \"5 modern slavery risk what\\u2019s the issue?\", \"steps taken september 2016-march 2018 commitments 2018-19\", \"asos modern slavery statement september 2016 - march 2018 6asos modern slavery statement september 2016\", \"- march 2018 child labour and young workers \\u2022 children and young workers are more vulnerable to forms of modern slavery such as forced and compulsory labour as well as human trafficking.\", \"inadequate hr processes mean that young workers may be employed and enter the work place without sufficient checks to ensure their age, ability and safety in the work place.\", \"\\u2022 countries of highest risk: china, india, turkey.\", \"\\u2022 worked with ngo partner and unicef to research root causes of child labour within syrian refugee community in turkey and gain better understanding of working conditions of child workers.\", \"\\u2022 discovered 10 instances of child labour in our turkish supply chain and enforced our remediation policy that covers schooling of children, the payment of a living wage to the family, and close monitoring of the children by local ngo partner, kadav.\", \"\\u2022 started a \\u201clife skills\", \"\\u201d programme with kadav in turkey, aiming to support syrian children to overcome experience of conflict and help them integrate.\", \"to-date, 40 children aged eight to 16 have participated in the programme.\", \"\\u2022 conducted risk assessment of recruitment processes and child labour in cotton farms through fair labour association and ipud joint project on improving employment practices in turkish cotton sector.\", \"\\u2022 identified partner ngo in china to support on child labour remediation.\", \"\\u2022 ensure there are no un-remediated cases of child labour anywhere in our supply chain.\", \"\\u2022 continue supporting the \\u201clife skills\\u201d programme for syrian children in turkey.\", \"\\u2022 support syrian mothers\\u2019 employment in our supply chain where possible and cover work permit costs to enable families to send their children to school instead of work.\", \"if necessary, support transition of children from work to school.\", \"\\u2022 continue to build our regional capacity in high risk countries, including india and china.\", \"\\u2022 build local ngo partnerships in other high risk countries in order to address root causes of child labour and deliver remediation programme.\", \"contract, agency and temporary workers\", \"\\u2022 contract, agency and temporary workers are often less secure in their employment, may have fewer rights in the workplace and are therefore more vulnerable to exploitation.\", \"labour recruiters create an additional layer between employers and workers, leaving workers exposed to deceptive or coercive recruitment practices.\", \"\\u2022 countries of highest risk: india, poland, romania, bulgaria, and the uk.\", \"\\u2022 conducted contract, agency and temporary worker risk assessment across our top ten sourcing regions.\", \"\\u2022 began project in india in partnership with local organisation kaarak to improve hiring and employment of contract workers in 15 factories.\", \"\\u2022 convened independent group of industry experts to strengthen data collection methods and provide insight into issue.\", \"\\u2022 worked with association of labour providers and fast-forward to monitor agencies providing labour to our uk suppliers.\", \"\\u2022 identified labour providers within our supply chain that do not meet association of labour providers criteria and discontinued relationships.\", \"\\u2022 roll out fair hiring toolkit for india suppliers recruiting contract workers.\", \"\\u2022 conduct interviews with workers in india to triangulate data collected onsite.\", \"\\u2022 review findings and recommendations relating to recruitment and payment of contract workers to feed into a practical action plan for improvement in may 2018.\", \"\\u2022 ensure that all uk suppliers using agencies commission a specialist labour provider audit with the association of labour providers as standard practice.\", \"\\u2022 develop risk mitigation strategy for contract and agency labour in eastern europe.\", \"women workers\", \"women are particularly vulnerable to exploitation, human trafficking and bonded labour.\", \"\\u2022 countries of highest risk: all source countries.\", \"piloted training programme for women workers on gender equality, discrimination, harassment and violence against women in two factories.\", \"\\u2022 commissioned independent impact assessment of training by the human rights law research and implementation centre of bilgi university in turkey.\", \"\\u2022 collaborate with our ngo partner to support the employment of syrian refugee women in our supply chain.\", \"\\u2022 continue to assess and remediate instances of gender inequality in our supply chain.\", \"\\u2022 deliver women\\u2019s empowerment training programme and freedom of association training programme in partnership with industriall in five factories in turkey.\", \"\\u2022 roll out\", \"women\\u2019s empowerment programme within our other key sourcing countries in partnership with local women\\u2019s rights organisations.\", \"modern slavery risk what\\u2019s the issue?\", \"steps taken september 2016-march 2018 commitments\", \"2018-19 risk and steps taken outsourced hr functions\", \"asos\\u2019 responsibility to prevent risks of modern slavery extends beyond our direct operations and to those we outsource or that our suppliers outsource.\", \"\\u2022 countries of highest risk: uk, poland.\", \"\\u2022 amended ethical trade policies to extend scope of application to all suppliers of goods and services not for resale (\\u2018non-stock\\u2019) and incorporated within contracts.\", \"\\u2022 carried out risk assessment of asos top 250 non-stock suppliers and started direct engagement with top 50 highest risk suppliers.\", \"\\u2022 conducted assessment of labour practices at polish fulfilment centre with anti-slavery international and identified areas of concern in relation to labour providers\\u2019 treatment of agency workers from ukraine.\", \"developed roadmap and worked with asos supply chain team to support supplier in remediating issues identified.\", \"\\u2022 started reviewing our purchasing practices and procurement processes to ensure they do not negatively impact the human rights of workers in our supply chains.\", \"trained procurement team and representatives of other non-stock departments on modern slavery.\", \"recruit role within ethical trade department for overseeing the application of asos ethical policies across our non-stock supply chain.\", \"\\u2022 hold workshop for a selection of non-stock suppliers to communicate our ethical policies and align on next steps.\", \"\\u2022 assess risk within outsourced hr functions across all warehouses and fulfilment centres and work with partners to remediate any issues identified.\", \"\\u2022 roll out online training on modern slavery across non-stock departments.\", \"\\u2022 roll-out training across retail to integrate ethical considerations within purchasing practices.\", \"third-party brands \\u2022 asos\\u2019 responsibility to prevent risks of modern slavery extends beyond our own brands and to the efforts of our third-party brands.\", \"\\u2022 lack of visibility of third-party brands ethical trade standards and performance, with risk of modern slavery.\", \"\\u2022 held fashion with integrity conference in london to encourage brands to start implementing change in their supply chains.\", \"\\u2022 recruited dedicated senior manager to develop third-party brand strategy.\", \"\\u2022 rolled out strategy for third-party brands that outlines five minimum requirements for them to meet, and identifies a path to continuous improvement.\", \"\\u2022 commenced delivery of training programme (in-person workshops) for third-party brands to build their capacity to meet minimum requirements.\", \"\\u2022 began one-to-one engagement with third-party brands we consider to be at a high risk of non-compliance, for example top 40 brands.\", \"\\u2022 support and guide all third-party brands to meet minimum requirements by august 2019.\", \"\\u2022 expand ethical trade branded team to cover all third-party brand categories.\", \"\\u2022 build on in-person training programme through developing a comprehensive calendar of events e.g. issue or geography specific.\", \"\\u2022 create online training programme (in addition to in-person workshops) to support third-party brands in building their ethical capacity.\", \"\\u2022 continue one-to-one engagement with additional third-party brands we consider to be at a high risk of non-compliance (jewellery, beauty, homeware).\", \"\\u2022 hold annual fashion with integrity conference with third-party brands.\", \"modern slavery risk what\\u2019s the issue?\", \"steps taken september 2016-march 2018 commitments 2018-19 table 2: risks and steps taken to prevent modern slavery in asos supply chains september\", \"2016-march 2018 7 risk and steps taken asos modern slavery statement september 2016 - march 2018\", \"the ethical trade team carried out 487 factory assessments during financial year 2016/2017.\", \"we continue to raise awareness of modern slavery and provide guidance on remediation to our manufacturing sites.\", \"where modern slavery risks are regional or industry-wide, we are working in collaboration with our suppliers, industry colleagues, and other key stakeholders on programmes to address and remediate them.\", \"examples of particular areas of focus for this reporting period and ongoing: focus on unauthorised subcontracting in turkey for the past year, we have been working to address issues with migrant labour in our mauritian supply chain.\", \"these include the recruitment of migrant workers and the payment of excessive recruitment fees, often leading to debt bondage.\", \"we adopted a two-pronged approach by working closely with suppliers to improve their practices, and engaging with other stakeholders to drive change at a systemic level.\", \"we have successfully rolled out the \\u2018employer pays principle\\u2019 in our supply chain and supported our suppliers to implement this policy.\", \"bangladesh is the largest provider of migrant labour to mauritius.\", \"in january 2018, we visited two of our suppliers\\u2019 recruitment agents in bangladesh with okup to monitor ongoing recruitment.\", \"we conducted interviews with workers prior to their departure for mauritius to ensure that their recruitment process had been fair and transparent, that they had received adequate pre-departure training, and that they had not been charged any fees.\", \"in recognition that these issues are endemic, we have continued to work with other brands, government, industry associations, ngo\\u2019s and local trade unions to develop interventions that address the root causes leading to exploitation of migrant labour.\", \"in collaboration with other brands, we lobbied the bangladeshi and mauritian government to include language on the protection of migrant workers in the memorandum of understanding on labour migration which is currently under negotiation between the two countries.\", \"we have also sought to raise awareness within the export sector in partnership with anti-slavery international and the mauritian export association, as part of a workshop for local manufacturers, including our suppliers.\", \"in february 2018, asos and the british high commission to mauritius hosted an event, bringing together local and international stakeholders to dis- cuss the challenges in managing labour migration, and agree a common framework for improving worker protection in mauritius and beyond.\", \"speak- ers included representatives from the mauritian and bangladeshi governments, the ilo, iom, industriall union, the ethical trading initiative (eti) and anti-slavery international.\", \"attendees also included executives from fashion brands manufacturing on the island, including adidas, zlabels, puma, woolworths and whistles, among others.\", \"a core output from the event was the development of an eti working group to oversee the implementation of a roadmap that will focus on driving further application of the \\u2018employer pays principle\\u2019 and improve protection for migrant workers from the moment they are recruited, through their employment in mauritius, to their safe return to their home country.\", \"asos brands\", \"8asos modern slavery statement september 2016\", \"- march 2018 transparency in our supply chain is crucial for minimising the risk of unauthorised subcontracting and protecting vulnerable people.\", \"in the past year, we have increased the visibility of our supply base in turkey and will map100% of tiers two and three by the end of 2018.\", \"we conduct regular checks to ensure that production takes place in authorised units and monitor working conditions.\", \"we have developed and published an unapproved subcontracting policy, which strengthens our long-held requirement for suppliers to declare all factories involved in the manufacture of asos brands products and work with us to make sure only approved units are used.\", \"in turkey, we have identified 5 suppliers using unapproved subcontracting and 14 sub-contractors manufacturing asos brands products without asos approval.\", \"we identified a requirement for local management of these issues to better understand country specific risks and maintain close proximity to potential risk, and subsequently recruited a local ethical trade manager and an associate, with a view to also recruit an assistant in 2018.\", \"we continue to uncover instances of unauthorised subcontracting and child labour which remain ongoing challenges.\", \"in this reporting period, we idenitifed and remediated 10 instances of child labour within unapproved subcontracted units in turkey.\", \"we are committed to ensuring there are no un-remediated cases of child labour anywhere in our supply chain and have crafted a robust remediation policy and process.\", \"our child labour remediation policy covers schooling of children and providing a living wage, which is more than the legal minimum wage, to the family to be able to keep children in education.\", \"we have established a close partnership with women\\u2019s solidarity foundation kadav to assist with efforts for eliminating child labour and closely monitor the children.\", \"we treat the cases with maximum confidentiality to prevent any potential adverse human rights impacts on these children, their families, or other workers employed by these sub-contractors.\", \"focus on recruitment practices and treatment of workers in poland we conducted an assessment of labour practices with anti-slavery international in one of our returns centres in poland, which is managed by a third-party logistics firm, and receives and reprocesses our european returns.\", \"the site had been identified as potentially high risk in relation to modern slavery, as it employs a significant number of agency workers (61%), the majority of whom are from ukraine.\", \"the assessment identified a number of issues in relation to the treatment of migrant workers.\", \"many of the migrant workers we interviewed had used informal agents to secure employment in poland, and paid fees for recruitment and transportation in the region of eur300.\", \"they also reported that they had little or no contact with their employer prior to their departure from ukraine, and received no contracts or offer letters detailing their terms of employment.\", \"in a few cases, workers were misinformed about their terms of employment, or were sold fake invitation letters to poland.\", \"the assessment also highlighted that one labour agency was subjecting workers to harsh treatment - requiring them to perform additional unpaid work by way of serving food to other workers in their accommodation as a form of disciplinary punishment.\", \"in addition, we found evidence of delayed payments of workers\\u2019 wages.\", \"we immediately instructed the agency to cease its harsh treatment of workers, and worked with our business partner to implement a remediation plan.\", \"we are looking at transferring existing workers employed at this agency into full-time employment at the returns centre.\", \"in addition, we are supporting our business partner to improve their agency tender criteria and process to ensure that they only work with reputable labour providers.\", \"the new tender document includes clear contractual clauses to ensure that migrant workers go through a fair and transparent recruitment process, are not charged for the cost of recruitment, and are provided with clear and reliable information about their future employment before leaving their country of origin.\", \"all agency contracts are due for renewal and renegotiation in 2018, and any existing agency that do not meet the above criteria will be disqualified.\", \"focus on migrant labour in mauritius third party brand suppliers asos stocks over 850 third-party brands, representing 56% of sales.\", \"we created new positions within our sourcing team responsible for a more in depth look at our third-party brand partners, including a senior manager dedicated to designing and rolling out a third-party brand strategy.\", \"at the start of 2018, we rolled out this strategy, which establishes minimum requirements for all our third-party brands.\", \"we expect all new brands joining asos to meet these requirements, and are working with all our existing brands to get there by 2020.\", \"we continue to believe in the power of \\u2018transformation through collaboration\\u2019 and this is the premise on which our third-party brands strategy is based.\", \"rather than a box-ticking approach, our theory of changes means supporting brands on the journey to being gold standard and lifting the industry baseline for how workers are treated.\", \"we establish compliance level through the completion of a brand self-assessment questionnaire and run a programme of training workshops to ensure brands have the support they need to meet the requirements.\", \"in 2018 we will introduce online training modules for those 9 brands who are not able to attend our training workshops in person.\", \"minimum requirements for third-party brands at asos include: 1.\", \"an ethical trade policy or an ethical code of conduct for suppliers 2. evidence of supply chain transparency to tier one 3.\", \"a modern slavery statement (where applicable)\", \"4. compliance with the asos chemical policy 5.\", \"animal welfare statement (where applica- ble) data gathered from the self-assessment questionnaires will form the baseline for brand performance.\", \"over time, as brands comply with minimum requirements, we intend to push for the higher standards demonstrated by our brand partners with existing robust human rights programmes.\", \"by championing mandatory minimum requirements and continuous improvement in all areas, asos aims to deliver a systemic shift in the way brands approach ethical trade and sustainability.\", \"in september 2017, we held an inaugural third-party brand focussed fashion with integrity conference in london.\", \"the conference brought together 80 of our third-party brands, as well as a number of guest speakers.\", \"the various sessions covered use of sustainable materials, chemical compliance, circular economy and the challenge of preventing modern slavery.\", \"key speakers included baroness lola young, chair of the all-party parliamentary group on ethics and sustainability in fashion, and klara skrivankova from anti-slavery international who were present to engage with brands in networking sessions.\", \"the objective of the conference was to inspire and encourage brands to start implementing change in their respective supply chains.\", \"it is now an annual event.\", \"in addition, we are engaging directly with brands we consider to be at a high risk of non-compliance, and also with more experienced brands with established good practice standards.\", \"in 2018 we will continue to grow the team to cover more recently introduced branded products such as face and body (cosmetics), jewellery and homeware.\", \"asos modern slavery statement september 2016 - march 2018 reporting mechanisms asos has a number of formal and informal feedback mechanisms across its operations and works hard to create a culture where employees can share concerns and ideas.\", \"for those who wish to give anonymous feedback, asos has an independently operated 24/7 helpline for employees called \\u201cwe\\u2019re listening\\u201d, through which they can raise any concerns, including human rights and working conditions.\", \"in 2016-17 the helpline covered asos employees and contractors in asos premises, as well as uk factory workers.\", \"this helpline has now been rolled out to workers in our eight largest sourcing regions, including china, india, mauritius, romania, bulgaria, vietnam, cambodia and italy.\", \"reports are received by asos\\u2019 general counsel and company secretary for investigation and passed to the appropriate team for remediation, remaining strictly confidential at all times.\", \"the operation of the helpline and remediation processes are overseen by the business integrity governance group.\", \"in turkey, we will be piloting a separate hotline in partnership with industriall global union, as part our global framework agreement.\", \"the hotline will operate in turkish and arabic, providing information to workers about their rights and giving them access to remedy.\", \"a monitoring committee, composed of industriall local affiliates and asos, will be established to monitor the implementation of our global framework agreement and workers\\u2019 access to remedy through the hotline. non-stock procurement asos recognises that it has a responsibility, and an opportunity, to embed ethical purchasing practices within both stock and non-stock procurement.\", \"until 2015, the focus of our ethical trade programmes was on asos brands\\u2019 product manufacturing sites.\", \"however, since 2015 we have extended our ethical trade programme to non-stock providers of goods and services.\", \"we have set-up a non-stock governance group to guide the implementation of our fashion with integrity strategy across the non-stock area of our business.\", \"the group is chaired by our supply chain director and includes senior representatives from procurement, technology, facilities, supply chain, logistics, corporate responsibility, and ethical trade.\", \"since starting this programme, we have conducted a risk assessment of our top 250 suppliers, which represent 95% of our total non-stock procurement spend.\", \"examples of these include freight handling, distribution, order fulfilment and returns processing.\", \"we have amended our ethical trade policies, including the asos supplier ethical code, asos child and young worker policy and asos migrant and contract worker policy to extend their scope of application to our non-stock supply chain.\", \"we have also included these in our contracts with non-stock suppliers and reserved the right to audit against those standards.\", \"following our initial risk assessment, we prioritised the top 50 highest risk suppliers according to spend, industry, geography and known ethical risks and sent them a self-assessment questionnaire to help gather further information on their employment practices and ethical standards.\", \"we are now in the process of engaging with individual suppliers to discuss any gaps identified against our standards.\", \"we have also developed a roadmap to ensure that our highest risk sites are monitored on a yearly basis.\", \"we will hire additional resource to oversee the implementation of our fashion with integrity strategy across our non-stock supply chain in 2018.\", \"training and awareness raising\", \"we continue to use the modern slavery act as an opportunity to embed greater understanding of human rights within our product manufacturing supply chains, and importantly, to extend this awareness to other business areas and thus improve the approach towards third-party brands and non-stock purchasing.\", \"for asos, this means continuing to develop targeted training for those employees most directly involved in making purchasing decisions which impact the risk of modern slavery across our business operations.\", \"it also means recognising the complex nature of modern slavery and developing informative and accessible training for all employees to increase their awareness of the risk of modern slavery in our business and the wider fashion industry.\", \"asos ceo and executive directors are regularly briefed and engaged in discussions on human rights and modern slavery, and our fashion with integrity governance structure ensures that key issues are disseminated throughout the asos leadership team.\", \"this year we have offered several modern slavery training opportunities for employees and suppliers:\", \"\\u2022 we partnered with anti-slavery international to develop internal training on modern slavery.\", \"we have piloted two modern slavery workshops within the business.\", \"the first group targeted our buying, merchandising, design and garment technology teams, and the second targeted non-stock business areas.\", \"we will roll out an informative and accessible modern slavery training programme to the entire business in april 2018.\", \"we sponsored an eti training course for our auditors in china to enable them to spot indicators of modern slavery.\", \"we partnered with mauritian export association and anti-slavery international to deliver a two-day intensive training on modern slavery to four mauritian suppliers (10 factories) and other local manufacturers.\", \"we piloted a training programme for women workers on gender equality, discrimination, harassment and violence against women in two turkish factories.\", \"we developed internal training for third-party brand buyers on the risk of modern slavery in supply chains.\", \"we hosted a multi-stakeholder roundtable on modern slavery in mauritius in partnership with the british high commission in mauritius.\", \"we continue to run supplier workshops for asos brands suppliers in uk, turkey, china, india, mauritius and eastern europe on a yearly basis.\", \"we have developed a series of supply chain mapping and subcontracting awareness workshops to be delivered to in march 2018.\", \"buying and merchandising teams will be trained on the importance of supply chain mapping and the risks of lack of transparency.\", \"the training will also equip them with the tools to effectively address any questions from suppliers about tackling modern slavery in their supply chains.\", \"we are developing a comprehensive training programme for buying and merchandising designed to improve our purchasing practices.\", \"the training will cover cost prices, models and negotiation, production lead times and man- ufacturing processes, forecasting process, and ethical and sustainable policies.\", \"we will also be developing a programme of factory visits for all buyers and merchandisers to enable them to better understand production processes.\", \"10asos modern slavery statement september 2016\", \"- march 2018 stakeholder engagement and partnerships stakeholder engagement\", \"we understand that success in preventing modern slavery is unlikely to be achieved by brands working independently.\", \"as long term members of the ethical trading initiative and a number of multi stakeholder programmes, we believe that the key to real progress is collaboration \\u2013 across industries, and with ngo, government and trade union partners.\", \"we have actively lobbied governments in recognition that the risks we face may be larger than asos and require government engagement to achieve sustainable change.\", \"in mauritius, we have engaged with stakeholders to end debt bondage, including lobbying the mauritian government to sign a bilateral agreement with bangladesh that includes specific language relating to safe labour migration between two countries.\", \"in turkey, we are a signatory of the fair labour association\\u2019s letter to turkish president sent in april 2017, calling for greater access to work for syrian refugees in turkey.\", \"we also support the fair labour association\\u2019s project with turkish ministry of labour to develop and share workers\\u2019 rights and permit applications handbooks.\", \"we were also approached directly by the australian government to lodge a submission to support the development of legislation on modern slavery similar to the uk modern slavery act.\", \"the opportunity was welcomed by asos and we submitted a letter of support detailing certain legislative recommendations, for example a mandatory reporting requirement, legislation that covers both the public and private sector, enforcing penalties for failure to report, full supply chain coverage and a published list of those companies required to report.\", \"this has contributed to a recent report setting out final recommendations for modern slavery legislation to the australian government.\", \"https://www.asosplc.com/~/media/files/a/asos-v2/documents/corporate-responsiblity/letter-to-the-mauritian-labour-minister.pdf http://parlinfo.aph.gov.au/parlinfo/download/committees/reportjnt/024102/toc_pdf/hiddeninplainsight.pdf;filetype=application%2fpdf progress report on commitments 2016-2017 n ot started behind in progress com pleted publish our factory list on asos corporate website by 31st march 2017.\", \"establish a formal corporate responsibility governance structure reporting to asos plc board.\", \"review employee and non-stock supplier policies to ensure they provide adequate protection against modern slavery.\", \"launch an ethical trade support programme for third party brand suppliers.\", \"improve stakeholder engagement by working directly with a human rights ngo in the role of \\u2018critical friend\\u2019.\", \"significant increase in number of asos ethical trade team and regional team members worldwide.\", \"extend uk living wage (as defined by the living wage foundation) to all uk outsourced workers, including third party distribution, fulfilment and customer care centre workers and their agency employees.\", \"extend uk whistleblowing helpline to cover all asos brands sourcing regions in relevant languages.\", \"progress report and further commitments\", \"11asos modern slavery statement september 2016 - march 2018 anti-slavery international\", \": we established a partnership with anti-slavery international, a world-leading ngo working to eliminate all forms of slavery.\", \"acting as a \\u2018critical friend\\u2019, anti-slavery international is assisting us in reviewing our practices to ensure they are in line with the un guiding principles on business and human rights.\", \"we are also working together to provide a sustainable solution to the issues faced by migrant workers in our supply chain in mauritius, assess key risks faced by workers employed in our non-stock supply chain, and develop modern slavery training for asos staff and our suppliers. anti-slavery international also attended our uk supplier conferences and carried out training sessions on modern slavery.\", \"global framework agreement with industriall: asos is the first e-commerce brand to sign a global framework agreement with industriall.\", \"it represents a strong framework for implementing freedom of association and other labour rights in our supply chain, partnerships regardless of existing standards of a particular country.\", \"industriall represents 50 million workers in 140 countries campaigning for trade union rights and better working conditions around the world.\", \"together, we are developing methodologies to assess the impact of purchasing practices on workers; implement confidential worker hotlines to ensure workers have access to remedy; and roll out a training programme for workers, factory managers, and suppliers.\", \"ethical trading initiative: asos has been a member of an alliance of companies, ngo\\u2019s and trade unions called the ethical trading initiative since 2009.\", \"asos regularly attends meetings and participates in a number of working groups set up to address labour rights issues.\", \"the mauritius working group, formed in 2015, is supporting the development of a roadmap of sustainable and lasting change.\", \"partnerships are integral for asos in addressing modern slavery risks.\", \"we have been actively involved with the following organisations and initiatives: further commitments to 2020 n ot started behind in progress com pleted collaborate further with industry peers, ngo\\u2019s and trade unions to address systemic issues which are at the root of labour abuses and therefore create opportunity for actions against modern slavery to flourish.\", \"extend supplier compliance and ethical standards training to all sourcing regions.\", \"review how reward and progression strategy can be used internally to drive improvements in purchasing practices.\", \"implement workers\\u2019 rights, freedom of association and right to collective bargaining training in turkey in collaboration with industriall to all our tier 1 factories and at least 50% of our lower tier factories.\", \"support and guide third-party brands in meeting the minimum requirements through a comprehensive training programmes that includes online training modules.\", \"signed nick beighton ceo,\", \"asos plc 29 march 2018\", \"12asos modern slavery statement september 2016 - march 2018\", \"assessment of effectiveness in preventing modern slavery modern slavery is a complex, multi-faceted issue, which is often hidden and therefore difficult to address effectively.\", \"issues such as debt bondage and child labour are driven by a variety of factors that are beyond the direct control of any individual business.\", \"our responsibility as a brand is to ensure that our due diligence systems are sufficiently robust to avoid complicity with such abuses and remediate any instances we identify in our supply chain.\", \"we also need to work with other actors, including government, civil society and trade unions on systemic interventions with a long-term impact.\", \"supply chain mapping, and sharing of information within our industry and beyond, increase the probability that issues will be identified and addressed.\", \"increasing supply chain transparency is therefore a fundamental aspect of our approach to eliminating modern slavery in our operations, and something we continue to prioritise.\", \"we understand that as we continue to map further down our supply chains, we will expose further risks of modern slavery, and we recognise that we will need to continually renew our efforts to minimise negative human rights impacts on vulnerable people in our supply chain.\", \"equally, we recognise that we must continue to be pro-active, and try to address the root causes of these issues before they occur in our factories.\", \"we place an emphasis on providing decent employment opportunities for workers in our supply chain, and work to create an enabling environment for them to be able to freely associate and bargain collectively for their rights.\", \"as part of our global framework agreement with industriall, we will deliver training to workers in our supply chain about their rights, with the aim of empowering them to be agents of change in the workplace.\", \"in addition, we work collaboratively with others to resolve issues that occur often before workers reach the factory gates, such as fraudulent recruitment practices leading to debt bondage.\", \"we focus on driving sustainable long-lasting change through government lobbying and ngo partnerships, and developing our approach to third-party brands and non-stock procurement.\", \"as a fast growing and changing organisation, we need to be particularly aware of emerging risks and be alert to the dynamic nature of both modern slavery and the impacts of our own operations.\", \"we will therefore continue to reflect on, develop and extend our approach to modern slavery, both in the breadth of approach across non-stock and third-party brands\\u2019 supply chains and in the depth of work within product sourcing regions.\", \"asos\\u2019 modern slavery statement september 2016 \\u2013 march 2018 was prepared by the asos modern slavery working group and approved on behalf of the asos board of directors on 29 march 2018.\"], \"x\": [-20.247364044189453, 2.525459051132202, 14.545246124267578, 7.141420841217041, 7.175866603851318, -3.653256893157959, 12.646783828735352, 13.06825065612793, -0.829326868057251, 3.6474742889404297, 2.601700782775879, 18.68385887145996, -14.012444496154785, 1.860294222831726, -21.186717987060547, -16.408798217773438, -21.189926147460938, -8.773762702941895, -0.8227571845054626, 0.7534264922142029, 1.7840464115142822, -6.590996265411377, 16.22677230834961, 1.2094907760620117, 18.93157196044922, 19.69086265563965, 19.668407440185547, 12.682662010192871, 10.439800262451172, 9.99238109588623, -0.23705348372459412, 2.598810911178589, 13.230374336242676, 7.576933860778809, 9.979252815246582, 7.813390254974365, -0.5552499890327454, 9.053040504455566, 13.834569931030273, -11.400444984436035, 5.378644943237305, 2.7296390533447266, -18.380006790161133, -20.490524291992188, 15.99804973602295, 10.03909683227539, 8.556955337524414, 11.58470344543457, 10.171157836914062, -1.7771629095077515, -14.897196769714355, -8.017812728881836, 4.074349403381348, 4.0949883460998535, 11.427325248718262, 17.90825080871582, 5.461743354797363, 16.799203872680664, 19.16929054260254, 18.51630401611328, 15.84593391418457, 9.572112083435059, 6.753744602203369, 18.227935791015625, 14.9016695022583, 13.385994911193848, -0.380730539560318, 12.769953727722168, 1.5697050094604492, -13.416274070739746, -6.377020359039307, 15.566661834716797, 10.488259315490723, 11.275734901428223, 16.415374755859375, 0.23427937924861908, -5.882498741149902, 9.830606460571289, 2.179827928543091, 2.140594244003296, -4.259214401245117, 5.335788249969482, 8.763886451721191, -5.866065502166748, -1.5814294815063477, -11.157466888427734, 11.551761627197266, 8.425704002380371, 6.835549354553223, 5.732378005981445, 13.89046859741211, -2.880256414413452, 5.930179595947266, 10.89756965637207, 8.080978393554688, 3.1184678077697754, 8.490466117858887, -11.246623992919922, 9.37716293334961, 11.726141929626465, 4.028816223144531, -9.710289001464844, -3.4293501377105713, 3.057952880859375, 12.236883163452148, -1.2073923349380493, 5.662685871124268, -17.110361099243164, 11.661577224731445, 8.95155143737793, -16.179588317871094, 11.3765287399292, 12.205978393554688, -10.540282249450684, -16.128864288330078, -21.683279037475586, -6.678822994232178, -5.90825891494751, -5.957329750061035, -11.305343627929688, -8.44448184967041, 1.4313850402832031, -12.9463472366333, -9.955883979797363, -12.12053394317627, -10.90943717956543, 11.474472045898438, -11.159469604492188, 14.945721626281738, 2.8419272899627686, -12.24237060546875, -6.707875728607178, -10.535078048706055, -5.32301664352417, -21.689712524414062, -7.089676380157471, -15.587230682373047, -13.462590217590332, -11.745795249938965, -8.529705047607422, -10.528572082519531, -11.468761444091797, -6.623289585113525, -5.952024936676025, -12.582082748413086, -11.518377304077148, -3.90382719039917, -1.7575064897537231, -8.383613586425781, -18.050695419311523, -15.166474342346191, -21.408710479736328, -7.793960094451904, -3.2883849143981934, -12.297779083251953, -7.507757663726807, -3.4876534938812256, -19.081043243408203, -9.016008377075195, -14.934818267822266, 12.088266372680664, -11.435413360595703, -14.759634971618652, -12.252542495727539, -5.153555393218994, -13.36927318572998, -12.595232963562012, -8.06040096282959, -17.566308975219727, -4.952962875366211, -5.90864896774292, -11.19672679901123, -4.531818389892578, -7.053597450256348, 4.865187168121338, -5.874324321746826, -0.38037383556365967, -9.599235534667969, -7.9834089279174805, -0.05846061557531357, -0.42814475297927856, -10.757061004638672, -21.091127395629883, -7.138694763183594, -12.6588773727417, -11.697195053100586, -13.608148574829102, -6.614659786224365, -14.4910888671875, -8.41118049621582, -20.381460189819336, -8.7312593460083, -17.901662826538086, -15.384950637817383, -14.745976448059082, 1.1029179096221924, -12.92970085144043, 13.765799522399902, -4.239100933074951, 11.495894432067871, 4.788660049438477, 7.49198579788208, -7.939420700073242, 2.8406810760498047, 4.053476333618164, -0.46340352296829224, -9.683941841125488, -6.305905818939209, 7.376470565795898, 10.40667724609375, 2.039217472076416, -6.796000003814697, 4.04856538772583, 3.340254545211792, 2.9278182983398438, 3.419276475906372, -5.649654388427734, -3.2060673236846924, -3.372539758682251, 2.917585611343384, -9.09873104095459, -17.901662826538086, -18.77582359313965, -21.121206283569336, -3.1217267513275146, 10.093666076660156, 6.484423637390137, 4.705986499786377, -7.390397071838379, 9.907355308532715, 5.686458587646484, -13.968424797058105, -3.053361654281616, -3.2742185592651367, 6.504129409790039, -10.718183517456055, -6.774654388427734, -9.74497127532959, -12.631884574890137, -0.81751549243927, 6.591545581817627, -20.913864135742188, -19.822208404541016, 11.960607528686523, 19.4002685546875, 2.41347336769104, 7.591057300567627, -1.928726315498352, 7.768367767333984, -15.150859832763672, -0.6895092725753784, 0.6837602853775024, -4.450057506561279, -5.838988780975342, 0.8596341609954834, 5.278249740600586, 2.4770500659942627, -14.00381088256836, -5.444003582000732, -3.8369271755218506, -4.7871198654174805, -2.4390580654144287, -12.164273262023926, 1.078979730606079, 8.220877647399902, 6.207346439361572, -2.699680805206299, 19.141855239868164, -3.0331177711486816, 14.5931396484375, 5.211962699890137, 20.18934440612793, 8.084611892700195, 10.643092155456543, 5.16698694229126, -1.2029168605804443, -13.119592666625977, 8.723654747009277, -18.753019332885742, -12.603419303894043, 7.401074409484863, 7.103734016418457, 11.953278541564941, -5.703491687774658, 0.37143996357917786, 11.524515151977539, -8.541885375976562, 2.6533634662628174, -16.577917098999023, 3.4035375118255615, -0.07062921673059464, 13.141312599182129, -2.4124553203582764, -3.1216583251953125, 2.306368589401245, 19.490629196166992, 6.042078495025635, -9.434446334838867, -3.262098550796509, 14.301162719726562, -1.3676059246063232, -1.5492982864379883, 16.045772552490234, 5.723185062408447, 4.821678161621094, 0.45147114992141724, 13.129011154174805, 3.08646821975708, 8.38694953918457, 3.8348701000213623, 3.804697275161743, 17.450450897216797, -18.94838523864746, 12.417475700378418, 8.612154006958008, 13.898924827575684, 13.408441543579102, -1.8446381092071533, -9.931356430053711, -10.074663162231445, 0.3346012532711029, -0.32449373602867126, -2.2604176998138428, -6.553168773651123, -11.671148300170898, 10.173768043518066, -10.498032569885254, 2.3408892154693604, 0.5171030759811401, 11.60401725769043, 6.887336730957031, 1.7385960817337036, 16.699670791625977, 0.9002107381820679, -19.763551712036133, -10.294697761535645, 14.662312507629395, 7.212835788726807, 4.026297092437744, -10.50091552734375, -10.553825378417969, -7.951617240905762, -11.505078315734863, 9.789484024047852, -12.119115829467773, -16.775196075439453, -3.0574686527252197, 9.32630729675293, -5.486561298370361, 4.2893900871276855, -0.4032897651195526, -4.965259552001953, -5.328242778778076, -17.957246780395508, -20.983440399169922, -10.396685600280762, 8.784575462341309, 5.676350116729736, 1.345248818397522, 10.157739639282227, 4.501477241516113, 5.46868371963501, 3.0725560188293457, 1.9366143941879272, -9.94873046875, -12.163118362426758, 6.120384216308594, -0.9490480422973633, 6.347222805023193, 10.5568208694458, 3.5086510181427, -20.091835021972656, -20.033615112304688, -20.512470245361328, 14.944931983947754, 5.342281818389893, 9.676301956176758, 3.202693462371826, 11.929938316345215, 14.175582885742188, 4.2511138916015625, 3.982539176940918, 8.176224708557129, 8.862141609191895, 5.73197603225708, 11.475234985351562, 13.930870056152344, 12.596161842346191, 21.960988998413086], \"y\": [16.26456069946289, -14.897501945495605, -1.1223076581954956, -8.99887466430664, -7.123081207275391, 17.480009078979492, -8.981101036071777, -0.28858354687690735, 5.096524238586426, -21.940814971923828, -21.941387176513672, -5.03204345703125, 17.18914794921875, -21.90745735168457, 25.560245513916016, 21.847835540771484, 15.39731502532959, 13.959088325500488, 6.161991596221924, 13.646904945373535, 16.011926651000977, 14.688379287719727, -9.880321502685547, 16.03700065612793, -12.907925605773926, -13.359659194946289, -13.37080192565918, 3.8991692066192627, 1.5574878454208374, -1.521241307258606, 16.72989273071289, -4.4774298667907715, -9.998489379882812, -16.56231117248535, 2.203976631164551, -17.432016372680664, -7.788628101348877, -4.4089789390563965, -6.97440242767334, 12.538954734802246, -21.26178550720215, 8.868141174316406, 22.758577346801758, 14.607747077941895, -3.7712624073028564, -13.296418190002441, -11.316312789916992, -13.784506797790527, -16.72905921936035, -10.815350532531738, 9.130232810974121, -11.381927490234375, 14.416193962097168, 14.32650375366211, -14.680943489074707, -8.803443908691406, 10.310837745666504, -6.544506072998047, -1.9521323442459106, -0.7820206880569458, -5.923403263092041, -6.324489116668701, 11.136878967285156, 0.14262548089027405, -9.999246597290039, -5.787914752960205, 9.502127647399902, -18.9904842376709, -13.380888938903809, 12.692360877990723, 17.515804290771484, -13.72296142578125, -3.90889573097229, 6.351572513580322, -10.380330085754395, -15.62610912322998, 5.078831672668457, -11.899026870727539, 8.04439640045166, 9.878199577331543, -7.521362781524658, -21.33580780029297, -5.555968284606934, 1.8474336862564087, 11.60275650024414, 14.74754524230957, -12.072632789611816, 3.264143943786621, -6.718817234039307, -2.6977181434631348, -7.771842956542969, 11.90514087677002, 2.8539085388183594, -6.745428085327148, -1.2585792541503906, -14.359891891479492, -2.2634668350219727, 11.547904014587402, 1.3035537004470825, -1.1679669618606567, -13.302312850952148, 14.75356674194336, 12.19178295135498, -12.990683555603027, 6.01040506362915, -16.648155212402344, 5.187069892883301, -0.4703335762023926, -8.664244651794434, -7.945969581604004, 19.250091552734375, -2.9299299716949463, -2.142829656600952, 13.54018783569336, 17.427419662475586, 24.047401428222656, -15.74338150024414, -18.704923629760742, -15.200249671936035, 23.48525047302246, 8.88995361328125, -4.752629280090332, -4.487740993499756, 7.123387813568115, -0.8962287902832031, -1.5713064670562744, 10.70803451538086, 16.757640838623047, -14.125304222106934, 6.099038124084473, -0.7645841836929321, -4.298111915588379, -1.9434611797332764, -4.367681980133057, 24.254501342773438, 19.57366180419922, 7.136057376861572, 22.471567153930664, -3.261667013168335, 4.963945388793945, -5.830511569976807, -4.978063583374023, -2.0478897094726562, -11.919439315795898, 8.093384742736816, 17.3907527923584, -1.8776222467422485, -1.4870020151138306, -6.547332286834717, 18.049697875976562, 20.31269073486328, 14.158392906188965, -14.876200675964355, -16.365196228027344, 22.98406219482422, -5.481096267700195, -10.740979194641113, 20.31102180480957, -4.2600555419921875, 11.425591468811035, 11.213321685791016, 9.111505508422852, 5.200694561004639, 9.622355461120605, -11.031498908996582, 11.224515914916992, 6.078725337982178, -4.621779918670654, 20.327775955200195, -16.544923782348633, -18.704952239990234, 23.53451156616211, 7.465324401855469, -3.4800713062286377, 5.535436630249023, 0.3980465531349182, -4.483707427978516, 9.382604598999023, 10.391501426696777, -2.3444573879241943, -4.918146133422852, 8.773107528686523, 23.928176879882812, 19.497047424316406, 22.1920108795166, -12.599998474121094, -3.6755166053771973, -1.9121081829071045, 5.270581245422363, -2.5824930667877197, 22.464235305786133, 0.8013914823532104, 18.708847045898438, 20.34685516357422, 18.856367111206055, -12.283689498901367, 22.88465118408203, -16.74791145324707, 7.03727388381958, 10.724185943603516, 7.095016956329346, -4.551456928253174, 6.84746789932251, 7.75242805480957, 4.826035976409912, -3.630776882171631, 10.027063369750977, 9.267383575439453, -0.1659308671951294, 4.242501735687256, 4.50308084487915, 12.101066589355469, 3.399226188659668, 2.944239854812622, 0.12338968366384506, 12.684595108032227, 12.516050338745117, 3.9726786613464355, 4.062512397766113, 0.1572864055633545, 16.537353515625, 18.708847045898438, -0.8448260426521301, 13.557558059692383, 9.348934173583984, -0.21688228845596313, -9.411579132080078, -13.08694839477539, -16.132089614868164, -5.272461891174316, -0.081062451004982, 9.427971839904785, 0.9529150724411011, -14.803028106689453, -10.454136848449707, -8.484965324401855, -7.856767177581787, -7.901571273803711, -5.433063983917236, 4.14980936050415, -13.025423049926758, 24.29079246520996, 18.090003967285156, 0.9135403633117676, -5.398191928863525, -2.5049729347229004, -16.557069778442383, -6.878329753875732, -13.675390243530273, 4.403495788574219, -7.6788411140441895, -9.794656753540039, -11.039270401000977, -5.404989242553711, -11.164532661437988, -13.483291625976562, -13.242639541625977, 3.460944175720215, -13.108155250549316, -14.649988174438477, -14.675671577453613, -15.052051544189453, 14.041122436523438, -9.163865089416504, 8.214359283447266, -3.8470373153686523, -15.86550235748291, 3.447288990020752, -6.503057479858398, -6.654131889343262, 0.43698278069496155, -5.5164594650268555, -0.9630139470100403, -7.617491722106934, -4.462763786315918, 1.5663387775421143, 16.208786010742188, 1.5391560792922974, 18.70498275756836, 17.14676284790039, 5.907206058502197, -2.7179152965545654, -6.621179580688477, 2.409837245941162, 9.664643287658691, 4.4208903312683105, -8.682012557983398, 4.646289825439453, 17.639848709106445, -0.42041969299316406, 3.5294291973114014, -12.368647575378418, -2.032933235168457, -4.695863723754883, -20.61931610107422, 0.6608152985572815, 7.956863880157471, -0.16732920706272125, -2.0379397869110107, -9.42989730834961, 8.805458068847656, 8.466465950012207, -5.415772914886475, 10.36038875579834, -1.5881162881851196, 13.71998405456543, -14.85428524017334, -3.9059083461761475, -14.301196098327637, -3.0726478099823, -2.247922897338867, -5.070828914642334, 21.485980987548828, -4.736241340637207, -6.749113082885742, -3.4732110500335693, -12.039567947387695, 10.398685455322266, 6.932392597198486, 13.343687057495117, 7.829251766204834, 0.6361457109451294, 1.5287195444107056, -7.697068214416504, -12.590191841125488, 5.216215133666992, 0.3686101734638214, -20.550413131713867, 1.4370418787002563, 2.7124698162078857, -5.65678071975708, 2.034691572189331, -11.335153579711914, 1.980810284614563, 18.280488967895508, 17.88909149169922, 1.4847992658615112, -10.755881309509277, -9.311482429504395, -8.176786422729492, -6.149124622344971, -6.695061683654785, 2.0732245445251465, -15.612876892089844, 2.3369944095611572, -0.6241506934165955, 14.456597328186035, 4.040205001831055, 13.046527862548828, 8.645559310913086, 10.619824409484863, -9.811381340026855, 10.906970024108887, 20.707901000976562, 14.748563766479492, 3.003699779510498, -9.1661376953125, -12.650260925292969, 5.81676721572876, -9.5381441116333, -16.883193969726562, -5.579464435577393, -6.641305446624756, -6.938150882720947, -0.797663688659668, 12.47252082824707, -11.381111145019531, 13.407703399658203, 3.504775285720825, -10.2819242477417, 2.366811990737915, 21.196245193481445, 19.753459930419922, 15.650405883789062, 0.44125235080718994, -7.949545860290527, -3.693448543548584, -8.418534278869629, 2.5511879920959473, -0.9837271571159363, -10.74923038482666, -9.558463096618652, -7.826419353485107, -8.366731643676758, -6.781473159790039, -5.370623588562012, -2.18013334274292, -4.681003570556641, -2.0836400985717773], \"type\": \"scatter\", \"uid\": \"b8ca77c6-8a36-419a-a473-4d608096b3d5\"}], {\"xaxis\": {\"zeroline\": false}, \"yaxis\": {\"zeroline\": false}}, {\"showLink\": false, \"linkText\": \"Export to plot.ly\", \"plotlyServerURL\": \"https://plot.ly\"})</script><script type=\"text/javascript\">window.addEventListener(\"resize\", function(){Plotly.Plots.resize(document.getElementById(\"72973a80-5140-4a04-afba-6a9d1c75bd98\"));});</script></body></html>"
  },
  {
    "path": "DEEP LEARNING/NLP/text analyses/Logistic regression with words and char n-grams.py",
    "content": "import numpy as np\nimport pandas as pd\n\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.model_selection import cross_val_score\nfrom scipy.sparse import hstack\n\nclass_names = [\"toxic\", \"severe_toxic\", \"obscene\", \"threat\", \"insult\", \"identity_hate\"]\n\ntrain = pd.read_csv(\"../input/train.csv\").fillna(\" \")\ntest = pd.read_csv(\"../input/test.csv\").fillna(\" \")\n\ntrain_text = train[\"comment_text\"]\ntest_text = test[\"comment_text\"]\nall_text = pd.concat([train_text, test_text])\n\nword_vectorizer = TfidfVectorizer(\n    sublinear_tf=True,\n    strip_accents=\"unicode\",\n    analyzer=\"word\",\n    token_pattern=r\"\\w{1,}\",\n    stop_words=\"english\",\n    ngram_range=(1, 1),\n    max_features=10000,\n)\nword_vectorizer.fit(all_text)\ntrain_word_features = word_vectorizer.transform(train_text)\ntest_word_features = word_vectorizer.transform(test_text)\n\nchar_vectorizer = TfidfVectorizer(\n    sublinear_tf=True,\n    strip_accents=\"unicode\",\n    analyzer=\"char\",\n    stop_words=\"english\",\n    ngram_range=(2, 6),\n    max_features=50000,\n)\nchar_vectorizer.fit(all_text)\ntrain_char_features = char_vectorizer.transform(train_text)\ntest_char_features = char_vectorizer.transform(test_text)\n\ntrain_features = hstack([train_char_features, train_word_features])\ntest_features = hstack([test_char_features, test_word_features])\n\nscores = []\nsubmission = pd.DataFrame.from_dict({\"id\": test[\"id\"]})\nfor class_name in class_names:\n    train_target = train[class_name]\n    classifier = LogisticRegression(C=0.1, solver=\"sag\")\n\n    cv_score = np.mean(\n        cross_val_score(\n            classifier, train_features, train_target, cv=3, scoring=\"roc_auc\"\n        )\n    )\n    scores.append(cv_score)\n    print(\"CV score for class {} is {}\".format(class_name, cv_score))\n\n    classifier.fit(train_features, train_target)\n    submission[class_name] = classifier.predict_proba(test_features)[:, 1]\n\nprint(\"Total CV score is {}\".format(np.mean(scores)))\n\nsubmission.to_csv(\"submission.csv\", index=False)\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/.gitignore",
    "content": "*.hdf5\n*.h5\n*.ipynb_checkpoints\n*.HDF5\n__pycache__"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/README.md",
    "content": "# [Gentle guide on how YOLO Object Localization works with Keras](https://heartbeat.fritz.ai/gentle-guide-on-how-yolo-object-localization-works-with-keras-part-2-65fe59ac12d)\n\nComplementary source code for the post.\nKeras+TensorFlow YOLO object Localization implementation guided walk through.\n\n## How to Run\nRequire [Python 3.5+](https://www.python.org/ftp/python/3.6.4/python-3.6.4.exe) and [Jupyter notebook](https://jupyter.readthedocs.io/en/latest/install.html) installed\n### Clone or download this repo\n```\ngit clone https://github.com/Tony607/YOLO_Object_Localization\n```\n### Install required libraries\n`pip3 install -r requirements.txt`\n### Download the Pre-trained YOLO model\nDownload the trained model weight from the releases, [yolo.h5](https://github.com/Tony607/YOLO_Object_Localization/releases/download/V0.1/yolo.h5).\nPut it to `model_data` folder in the project directory.\n\n### Start the notebook\nIn the project directory start a command line, then run\n```\njupyter notebook\n```\nIn the opened browser window open\n```\nGentle guide on how YOLO Object Localization works with Keras.ipynb\n```\n\nSide note, if the model doesn't load correctly try to follow the instruction on YAD2K\n*  Clone/Download [YAD2K](https://github.com/allanzelener/YAD2K).\n*   Download Darknet model cfg and weights from the [official YOLO website](http://pjreddie.com/darknet/yolo/).\n*   Convert the Darknet YOLO_v2 model to a Keras model.\n*   Test the converted model on the small test set in `images/`.\n\n```source-shell\ngit clone https://github.com/allanzelener/YAD2K\nwget http://pjreddie.com/media/files/yolo.weights\nwget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolo.cfg\n./yad2k.py yolo.cfg yolo.weights model_data/yolo.h5\n./test_yolo.py model_data/yolo.h5  # output in images/out/\n```\n\nSee `./yad2k.py --help` and `./test_yolo.py --help` for more options.\n\nHappy coding! Leave a comment if you have any question."
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/font/SIL Open Font License.txt",
    "content": "Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ with Reserved Font Name Fira Mono.\n\nCopyright (c) 2014, Telefonica S.A.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the copyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as distributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.\n\n5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are not met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/model_data/coco_classes.txt",
    "content": "person\nbicycle\ncar\nmotorbike\naeroplane\nbus\ntrain\ntruck\nboat\ntraffic light\nfire hydrant\nstop sign\nparking meter\nbench\nbird\ncat\ndog\nhorse\nsheep\ncow\nelephant\nbear\nzebra\ngiraffe\nbackpack\numbrella\nhandbag\ntie\nsuitcase\nfrisbee\nskis\nsnowboard\nsports ball\nkite\nbaseball bat\nbaseball glove\nskateboard\nsurfboard\ntennis racket\nbottle\nwine glass\ncup\nfork\nknife\nspoon\nbowl\nbanana\napple\nsandwich\norange\nbroccoli\ncarrot\nhot dog\npizza\ndonut\ncake\nchair\nsofa\npottedplant\nbed\ndiningtable\ntoilet\ntvmonitor\nlaptop\nmouse\nremote\nkeyboard\ncell phone\nmicrowave\noven\ntoaster\nsink\nrefrigerator\nbook\nclock\nvase\nscissors\nteddy bear\nhair drier\ntoothbrush\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/model_data/object_classes.txt",
    "content": "car"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/model_data/yolo_anchors.txt",
    "content": "0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/requirements.txt",
    "content": "scipy\nnumpy\nkeras\npandas\nh5py\nmatplotlib\npillow"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/yad2k/utils/__init__.py",
    "content": "from .utils import *\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/yad2k/utils/utils.py",
    "content": "\"\"\"Miscellaneous utility functions.\"\"\"\n\nfrom functools import reduce\n\n\ndef compose(*funcs):\n    \"\"\"Compose arbitrarily many functions, evaluated left to right.\n\n    Reference: https://mathieularose.com/function-composition-in-python/\n    \"\"\"\n    # return lambda x: reduce(lambda v, f: f(v), funcs, x)\n    if funcs:\n        return reduce(lambda f, g: lambda *a, **kw: g(f(*a, **kw)), funcs)\n    else:\n        raise ValueError(\"Composition of empty sequence not supported.\")\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/yolo_run.py",
    "content": "import argparse\nimport os\nimport matplotlib.pyplot as plt\nfrom matplotlib.pyplot import imshow\nimport scipy.io\nimport scipy.misc\nimport numpy as np\nimport pandas as pd\nimport PIL\nimport tensorflow as tf\nfrom keras import backend as K\nfrom keras.layers import Input, Lambda, Conv2D\nfrom keras.models import load_model, Model\nfrom yolo_utils import (\n    read_classes,\n    read_anchors,\n    generate_colors,\n    preprocess_image,\n    draw_boxes,\n    scale_boxes,\n)\nfrom yad2k.models.keras_yolo import (\n    yolo_head,\n    yolo_boxes_to_corners,\n    preprocess_true_boxes,\n    yolo_loss,\n    yolo_body,\n)\n\n\nsess = K.get_session()\n\nclass_names = read_classes(\"model_data/coco_classes.txt\")\nanchors = read_anchors(\"model_data/yolo_anchors.txt\")\nimage_shape = (720.0, 1280.0)\nyolo_model = load_model(\"model_data/yolo.h5\")\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/YOLO Object Localization Keras/yolo_utils.py",
    "content": "import colorsys\nimport imghdr\nimport os\nimport random\nfrom keras import backend as K\n\nimport numpy as np\nfrom PIL import Image, ImageDraw, ImageFont\n\n\ndef read_classes(classes_path):\n    with open(classes_path) as f:\n        class_names = f.readlines()\n    class_names = [c.strip() for c in class_names]\n    return class_names\n\n\ndef read_anchors(anchors_path):\n    with open(anchors_path) as f:\n        anchors = f.readline()\n        anchors = [float(x) for x in anchors.split(\",\")]\n        anchors = np.array(anchors).reshape(-1, 2)\n    return anchors\n\n\ndef generate_colors(class_names):\n    hsv_tuples = [(x / len(class_names), 1.0, 1.0) for x in range(len(class_names))]\n    colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))\n    colors = list(\n        map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), colors)\n    )\n    random.seed(10101)  # Fixed seed for consistent colors across runs.\n    random.shuffle(colors)  # Shuffle colors to decorrelate adjacent classes.\n    random.seed(None)  # Reset seed to default.\n    return colors\n\n\ndef scale_boxes(boxes, image_shape):\n    \"\"\" Scales the predicted boxes in order to be drawable on the image\"\"\"\n    height = image_shape[0]\n    width = image_shape[1]\n    image_dims = K.stack([height, width, height, width])\n    image_dims = K.reshape(image_dims, [1, 4])\n    boxes = boxes * image_dims\n    return boxes\n\n\ndef preprocess_image(img_path, model_image_size):\n    image_type = imghdr.what(img_path)\n    image = Image.open(img_path)\n    resized_image = image.resize(tuple(reversed(model_image_size)), Image.BICUBIC)\n    image_data = np.array(resized_image, dtype=\"float32\")\n    image_data /= 255.0\n    image_data = np.expand_dims(image_data, 0)  # Add batch dimension.\n    return image, image_data\n\n\ndef draw_boxes(image, out_scores, out_boxes, out_classes, class_names, colors):\n\n    font = ImageFont.truetype(\n        font=\"font/FiraMono-Medium.otf\",\n        size=np.floor(3e-2 * image.size[1] + 0.5).astype(\"int32\"),\n    )\n    thickness = (image.size[0] + image.size[1]) // 300\n\n    for i, c in reversed(list(enumerate(out_classes))):\n        predicted_class = class_names[c]\n        box = out_boxes[i]\n        score = out_scores[i]\n\n        label = \"{} {:.2f}\".format(predicted_class, score)\n\n        draw = ImageDraw.Draw(image)\n        label_size = draw.textsize(label, font)\n\n        top, left, bottom, right = box\n        top = max(0, np.floor(top + 0.5).astype(\"int32\"))\n        left = max(0, np.floor(left + 0.5).astype(\"int32\"))\n        bottom = min(image.size[1], np.floor(bottom + 0.5).astype(\"int32\"))\n        right = min(image.size[0], np.floor(right + 0.5).astype(\"int32\"))\n        print(label, (left, top), (right, bottom))\n\n        if top - label_size[1] >= 0:\n            text_origin = np.array([left, top - label_size[1]])\n        else:\n            text_origin = np.array([left, top + 1])\n\n        for i in range(thickness):\n            draw.rectangle(\n                [left + i, top + i, right - i, bottom - i], outline=colors[c]\n            )\n        draw.rectangle(\n            [tuple(text_origin), tuple(text_origin + label_size)], fill=colors[c]\n        )\n        draw.text(text_origin, label, fill=(0, 0, 0), font=font)\n        del draw\n"
  },
  {
    "path": "DEEP LEARNING/Object detection/keras retinanet/train.py",
    "content": "#!/usr/bin/env python\n\n\"\"\"\nCopyright 2017-2018 Fizyr (https://fizyr.com)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\"\"\"\n\nimport argparse\nimport os\nimport sys\nimport warnings\n\nimport keras\nimport keras.preprocessing.image\nimport tensorflow as tf\n\n# Allow relative imports when being executed as script.\nif __name__ == \"__main__\" and __package__ is None:\n    sys.path.insert(0, os.path.join(os.path.dirname(__file__), \"..\", \"..\"))\n    import keras_retinanet.bin  # noqa: F401\n\n    __package__ = \"keras_retinanet.bin\"\n\n# Change these to absolute imports if you copy this script outside the keras_retinanet package.\nfrom keras_retinanet import layers  # noqa: F401\nfrom keras_retinanet import losses\nfrom keras_retinanet import models\nfrom keras_retinanet.callbacks import RedirectModel\nfrom keras_retinanet.callbacks.eval import Evaluate\nfrom keras_retinanet.models.retinanet import retinanet_bbox\nfrom keras_retinanet.preprocessing.csv_generator import CSVGenerator\nfrom keras_retinanet.preprocessing.kitti import KittiGenerator\nfrom keras_retinanet.preprocessing.open_images import OpenImagesGenerator\nfrom keras_retinanet.preprocessing.pascal_voc import PascalVocGenerator\nfrom keras_retinanet.utils.anchors import make_shapes_callback\nfrom keras_retinanet.utils.config import read_config_file, parse_anchor_parameters\nfrom keras_retinanet.utils.keras_version import check_keras_version\nfrom keras_retinanet.utils.model import freeze as freeze_model\nfrom keras_retinanet.utils.transform import random_transform_generator\n\n\ndef makedirs(path):\n    # Intended behavior: try to create the directory,\n    # pass if the directory exists already, fails otherwise.\n    # Meant for Python 2.7/3.n compatibility.\n    try:\n        os.makedirs(path)\n    except OSError:\n        if not os.path.isdir(path):\n            raise\n\n\ndef get_session():\n    \"\"\" Construct a modified tf session.\n    \"\"\"\n    config = tf.ConfigProto()\n    config.gpu_options.allow_growth = True\n    return tf.Session(config=config)\n\n\ndef model_with_weights(model, weights, skip_mismatch):\n    \"\"\" Load weights for model.\n\n    Args\n        model         : The model to load weights for.\n        weights       : The weights to load.\n        skip_mismatch : If True, skips layers whose shape of weights doesn't match with the model.\n    \"\"\"\n    if weights is not None:\n        model.load_weights(weights, by_name=True, skip_mismatch=skip_mismatch)\n    return model\n\n\ndef create_models(\n    backbone_retinanet,\n    num_classes,\n    weights,\n    multi_gpu=0,\n    freeze_backbone=False,\n    lr=1e-5,\n    config=None,\n):\n    \"\"\" Creates three models (model, training_model, prediction_model).\n\n    Args\n        backbone_retinanet : A function to call to create a retinanet model with a given backbone.\n        num_classes        : The number of classes to train.\n        weights            : The weights to load into the model.\n        multi_gpu          : The number of GPUs to use for training.\n        freeze_backbone    : If True, disables learning for the backbone.\n        config             : Config parameters, None indicates the default configuration.\n\n    Returns\n        model            : The base model. This is also the model that is saved in snapshots.\n        training_model   : The training model. If multi_gpu=0, this is identical to model.\n        prediction_model : The model wrapped with utility functions to perform object detection (applies regression values and performs NMS).\n    \"\"\"\n\n    modifier = freeze_model if freeze_backbone else None\n\n    # load anchor parameters, or pass None (so that defaults will be used)\n    anchor_params = None\n    num_anchors = None\n    if config and \"anchor_parameters\" in config:\n        anchor_params = parse_anchor_parameters(config)\n        num_anchors = anchor_params.num_anchors()\n\n    # Keras recommends initialising a multi-gpu model on the CPU to ease weight sharing, and to prevent OOM errors.\n    # optionally wrap in a parallel model\n    if multi_gpu > 1:\n        from keras.utils import multi_gpu_model\n\n        with tf.device(\"/cpu:0\"):\n            model = model_with_weights(\n                backbone_retinanet(\n                    num_classes, num_anchors=num_anchors, modifier=modifier\n                ),\n                weights=weights,\n                skip_mismatch=True,\n            )\n        training_model = multi_gpu_model(model, gpus=multi_gpu)\n    else:\n        model = model_with_weights(\n            backbone_retinanet(num_classes, num_anchors=num_anchors, modifier=modifier),\n            weights=weights,\n            skip_mismatch=True,\n        )\n        training_model = model\n\n    # make prediction model\n    prediction_model = retinanet_bbox(model=model, anchor_params=anchor_params)\n\n    # compile model\n    training_model.compile(\n        loss={\"regression\": losses.smooth_l1(), \"classification\": losses.focal()},\n        optimizer=keras.optimizers.adam(lr=lr, clipnorm=0.001),\n    )\n\n    return model, training_model, prediction_model\n\n\ndef create_callbacks(\n    model, training_model, prediction_model, validation_generator, args\n):\n    \"\"\" Creates the callbacks to use during training.\n\n    Args\n        model: The base model.\n        training_model: The model that is used for training.\n        prediction_model: The model that should be used for validation.\n        validation_generator: The generator for creating validation data.\n        args: parseargs args object.\n\n    Returns:\n        A list of callbacks used for training.\n    \"\"\"\n    callbacks = []\n\n    tensorboard_callback = None\n\n    if args.tensorboard_dir:\n        tensorboard_callback = keras.callbacks.TensorBoard(\n            log_dir=args.tensorboard_dir,\n            histogram_freq=0,\n            batch_size=args.batch_size,\n            write_graph=True,\n            write_grads=False,\n            write_images=False,\n            embeddings_freq=0,\n            embeddings_layer_names=None,\n            embeddings_metadata=None,\n        )\n        callbacks.append(tensorboard_callback)\n\n    if args.evaluation and validation_generator:\n        if args.dataset_type == \"coco\":\n            from keras_retinanet.callbacks.coco import CocoEval\n\n            # use prediction model for evaluation\n            evaluation = CocoEval(\n                validation_generator, tensorboard=tensorboard_callback\n            )\n        else:\n            evaluation = Evaluate(\n                validation_generator,\n                tensorboard=tensorboard_callback,\n                weighted_average=args.weighted_average,\n            )\n        evaluation = RedirectModel(evaluation, prediction_model)\n        callbacks.append(evaluation)\n\n    # save the model\n    if args.snapshots:\n        # ensure directory created first; otherwise h5py will error after epoch.\n        makedirs(args.snapshot_path)\n        checkpoint = keras.callbacks.ModelCheckpoint(\n            os.path.join(\n                args.snapshot_path,\n                \"{backbone}_{dataset_type}_{{epoch:02d}}.h5\".format(\n                    backbone=args.backbone, dataset_type=args.dataset_type\n                ),\n            ),\n            verbose=1,\n            # save_best_only=True,\n            # monitor=\"mAP\",\n            # mode='max'\n        )\n        checkpoint = RedirectModel(checkpoint, model)\n        callbacks.append(checkpoint)\n\n    callbacks.append(\n        keras.callbacks.ReduceLROnPlateau(\n            monitor=\"loss\",\n            factor=0.1,\n            patience=2,\n            verbose=1,\n            mode=\"auto\",\n            min_delta=0.0001,\n            cooldown=0,\n            min_lr=0,\n        )\n    )\n\n    return callbacks\n\n\ndef create_generators(args, preprocess_image):\n    \"\"\" Create generators for training and validation.\n\n    Args\n        args             : parseargs object containing configuration for generators.\n        preprocess_image : Function that preprocesses an image for the network.\n    \"\"\"\n    common_args = {\n        \"batch_size\": args.batch_size,\n        \"config\": args.config,\n        \"image_min_side\": args.image_min_side,\n        \"image_max_side\": args.image_max_side,\n        \"preprocess_image\": preprocess_image,\n    }\n\n    # create random transform generator for augmenting training data\n    if args.random_transform:\n        transform_generator = random_transform_generator(\n            min_rotation=-0.1,\n            max_rotation=0.1,\n            min_translation=(-0.1, -0.1),\n            max_translation=(0.1, 0.1),\n            min_shear=-0.1,\n            max_shear=0.1,\n            min_scaling=(0.9, 0.9),\n            max_scaling=(1.1, 1.1),\n            flip_x_chance=0.5,\n            flip_y_chance=0.5,\n        )\n    else:\n        transform_generator = random_transform_generator(flip_x_chance=0.5)\n\n    if args.dataset_type == \"coco\":\n        # import here to prevent unnecessary dependency on cocoapi\n        from keras_retinanet.preprocessing.coco import CocoGenerator\n\n        train_generator = CocoGenerator(\n            args.coco_path,\n            \"train2017\",\n            transform_generator=transform_generator,\n            **common_args\n        )\n\n        validation_generator = CocoGenerator(\n            args.coco_path, \"val2017\", shuffle_groups=False, **common_args\n        )\n    elif args.dataset_type == \"pascal\":\n        train_generator = PascalVocGenerator(\n            args.pascal_path,\n            \"trainval\",\n            transform_generator=transform_generator,\n            **common_args\n        )\n\n        validation_generator = PascalVocGenerator(\n            args.pascal_path, \"test\", shuffle_groups=False, **common_args\n        )\n    elif args.dataset_type == \"csv\":\n        train_generator = CSVGenerator(\n            args.annotations,\n            args.classes,\n            transform_generator=transform_generator,\n            **common_args\n        )\n\n        if args.val_annotations:\n            validation_generator = CSVGenerator(\n                args.val_annotations, args.classes, shuffle_groups=False, **common_args\n            )\n        else:\n            validation_generator = None\n    elif args.dataset_type == \"oid\":\n        train_generator = OpenImagesGenerator(\n            args.main_dir,\n            subset=\"train\",\n            version=args.version,\n            labels_filter=args.labels_filter,\n            annotation_cache_dir=args.annotation_cache_dir,\n            parent_label=args.parent_label,\n            transform_generator=transform_generator,\n            **common_args\n        )\n\n        validation_generator = OpenImagesGenerator(\n            args.main_dir,\n            subset=\"validation\",\n            version=args.version,\n            labels_filter=args.labels_filter,\n            annotation_cache_dir=args.annotation_cache_dir,\n            parent_label=args.parent_label,\n            shuffle_groups=False,\n            **common_args\n        )\n    elif args.dataset_type == \"kitti\":\n        train_generator = KittiGenerator(\n            args.kitti_path,\n            subset=\"train\",\n            transform_generator=transform_generator,\n            **common_args\n        )\n\n        validation_generator = KittiGenerator(\n            args.kitti_path, subset=\"val\", shuffle_groups=False, **common_args\n        )\n    else:\n        raise ValueError(\"Invalid data type received: {}\".format(args.dataset_type))\n\n    return train_generator, validation_generator\n\n\ndef check_args(parsed_args):\n    \"\"\" Function to check for inherent contradictions within parsed arguments.\n    For example, batch_size < num_gpus\n    Intended to raise errors prior to backend initialisation.\n\n    Args\n        parsed_args: parser.parse_args()\n\n    Returns\n        parsed_args\n    \"\"\"\n\n    if parsed_args.multi_gpu > 1 and parsed_args.batch_size < parsed_args.multi_gpu:\n        raise ValueError(\n            \"Batch size ({}) must be equal to or higher than the number of GPUs ({})\".format(\n                parsed_args.batch_size, parsed_args.multi_gpu\n            )\n        )\n\n    if parsed_args.multi_gpu > 1 and parsed_args.snapshot:\n        raise ValueError(\n            \"Multi GPU training ({}) and resuming from snapshots ({}) is not supported.\".format(\n                parsed_args.multi_gpu, parsed_args.snapshot\n            )\n        )\n\n    if parsed_args.multi_gpu > 1 and not parsed_args.multi_gpu_force:\n        raise ValueError(\n            \"Multi-GPU support is experimental, use at own risk! Run with --multi-gpu-force if you wish to continue.\"\n        )\n\n    if \"resnet\" not in parsed_args.backbone:\n        warnings.warn(\n            \"Using experimental backbone {}. Only resnet50 has been properly tested.\".format(\n                parsed_args.backbone\n            )\n        )\n\n    return parsed_args\n\n\ndef parse_args(args):\n    \"\"\" Parse the arguments.\n    \"\"\"\n    parser = argparse.ArgumentParser(\n        description=\"Simple training script for training a RetinaNet network.\"\n    )\n    subparsers = parser.add_subparsers(\n        help=\"Arguments for specific dataset types.\", dest=\"dataset_type\"\n    )\n    subparsers.required = True\n\n    coco_parser = subparsers.add_parser(\"coco\")\n    coco_parser.add_argument(\n        \"coco_path\", help=\"Path to dataset directory (ie. /tmp/COCO).\"\n    )\n\n    pascal_parser = subparsers.add_parser(\"pascal\")\n    pascal_parser.add_argument(\n        \"pascal_path\", help=\"Path to dataset directory (ie. /tmp/VOCdevkit).\"\n    )\n\n    kitti_parser = subparsers.add_parser(\"kitti\")\n    kitti_parser.add_argument(\n        \"kitti_path\", help=\"Path to dataset directory (ie. /tmp/kitti).\"\n    )\n\n    def csv_list(string):\n        return string.split(\",\")\n\n    oid_parser = subparsers.add_parser(\"oid\")\n    oid_parser.add_argument(\"main_dir\", help=\"Path to dataset directory.\")\n    oid_parser.add_argument(\n        \"--version\", help=\"The current dataset version is v4.\", default=\"v4\"\n    )\n    oid_parser.add_argument(\n        \"--labels-filter\",\n        help=\"A list of labels to filter.\",\n        type=csv_list,\n        default=None,\n    )\n    oid_parser.add_argument(\n        \"--annotation-cache-dir\", help=\"Path to store annotation cache.\", default=\".\"\n    )\n    oid_parser.add_argument(\n        \"--parent-label\", help=\"Use the hierarchy children of this label.\", default=None\n    )\n\n    csv_parser = subparsers.add_parser(\"csv\")\n    csv_parser.add_argument(\n        \"annotations\", help=\"Path to CSV file containing annotations for training.\"\n    )\n    csv_parser.add_argument(\n        \"classes\", help=\"Path to a CSV file containing class label mapping.\"\n    )\n    csv_parser.add_argument(\n        \"--val-annotations\",\n        help=\"Path to CSV file containing annotations for validation (optional).\",\n    )\n\n    group = parser.add_mutually_exclusive_group()\n    group.add_argument(\"--snapshot\", help=\"Resume training from a snapshot.\")\n    group.add_argument(\n        \"--imagenet-weights\",\n        help=\"Initialize the model with pretrained imagenet weights. This is the default behaviour.\",\n        action=\"store_const\",\n        const=True,\n        default=True,\n    )\n    group.add_argument(\n        \"--weights\", help=\"Initialize the model with weights from a file.\"\n    )\n    group.add_argument(\n        \"--no-weights\",\n        help=\"Don't initialize the model with any weights.\",\n        dest=\"imagenet_weights\",\n        action=\"store_const\",\n        const=False,\n    )\n\n    parser.add_argument(\n        \"--backbone\",\n        help=\"Backbone model used by retinanet.\",\n        default=\"resnet152\",\n        type=str,\n    )\n    parser.add_argument(\n        \"--batch-size\", help=\"Size of the batches.\", default=1, type=int\n    )\n    parser.add_argument(\n        \"--gpu\", help=\"Id of the GPU to use (as reported by nvidia-smi).\"\n    )\n    parser.add_argument(\n        \"--multi-gpu\",\n        help=\"Number of GPUs to use for parallel processing.\",\n        type=int,\n        default=0,\n    )\n    parser.add_argument(\n        \"--multi-gpu-force\",\n        help=\"Extra flag needed to enable (experimental) multi-gpu support.\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\n        \"--epochs\", help=\"Number of epochs to train.\", type=int, default=50\n    )\n    parser.add_argument(\n        \"--steps\", help=\"Number of steps per epoch.\", type=int, default=10000\n    )\n    parser.add_argument(\"--lr\", help=\"Learning rate.\", type=float, default=1e-5)\n    parser.add_argument(\n        \"--snapshot-path\",\n        help=\"Path to store snapshots of models during training (defaults to './snapshots')\",\n        default=\"./snapshots\",\n    )\n    parser.add_argument(\n        \"--tensorboard-dir\",\n        help=\"Log directory for Tensorboard output\",\n        default=\"./logs\",\n    )\n    parser.add_argument(\n        \"--no-snapshots\",\n        help=\"Disable saving snapshots.\",\n        dest=\"snapshots\",\n        action=\"store_false\",\n    )\n    parser.add_argument(\n        \"--no-evaluation\",\n        help=\"Disable per epoch evaluation.\",\n        dest=\"evaluation\",\n        action=\"store_false\",\n    )\n    parser.add_argument(\n        \"--freeze-backbone\",\n        help=\"Freeze training of backbone layers.\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\n        \"--random-transform\",\n        help=\"Randomly transform image and annotations.\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\n        \"--image-min-side\",\n        help=\"Rescale the image so the smallest side is min_side.\",\n        type=int,\n        default=800,\n    )\n    parser.add_argument(\n        \"--image-max-side\",\n        help=\"Rescale the image if the largest side is larger than max_side.\",\n        type=int,\n        default=1333,\n    )\n    parser.add_argument(\n        \"--config\", help=\"Path to a configuration parameters .ini file.\"\n    )\n    parser.add_argument(\n        \"--weighted-average\",\n        help=\"Compute the mAP using the weighted average of precisions among classes.\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\n        \"--compute-val-loss\",\n        help=\"Compute validation loss during training\",\n        dest=\"compute_val_loss\",\n        action=\"store_true\",\n    )\n\n    # Fit generator arguments\n    parser.add_argument(\n        \"--multiprocessing\",\n        help=\"Use multiprocessing in fit_generator.\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\n        \"--workers\", help=\"Number of generator workers.\", type=int, default=1\n    )\n    parser.add_argument(\n        \"--max-queue-size\",\n        help=\"Queue length for multiprocessing workers in fit_generator.\",\n        type=int,\n        default=10,\n    )\n\n    return check_args(parser.parse_args(args))\n\n\ndef main(args=None):\n    # parse arguments\n    if args is None:\n        args = sys.argv[1:]\n    args = parse_args(args)\n\n    # create object that stores backbone information\n    backbone = models.backbone(args.backbone)\n\n    # make sure keras is the minimum required version\n    check_keras_version()\n\n    # optionally choose specific GPU\n    if args.gpu:\n        os.environ[\"CUDA_VISIBLE_DEVICES\"] = args.gpu\n    keras.backend.tensorflow_backend.set_session(get_session())\n\n    # optionally load config parameters\n    if args.config:\n        args.config = read_config_file(args.config)\n\n    # create the generators\n    train_generator, validation_generator = create_generators(\n        args, backbone.preprocess_image\n    )\n\n    # create the model\n    if args.snapshot is not None:\n        print(\"Loading model, this may take a second...\")\n        model = models.load_model(args.snapshot, backbone_name=args.backbone)\n        training_model = model\n        anchor_params = None\n        if args.config and \"anchor_parameters\" in args.config:\n            anchor_params = parse_anchor_parameters(args.config)\n        prediction_model = retinanet_bbox(model=model, anchor_params=anchor_params)\n    else:\n        weights = args.weights\n        # default to imagenet if nothing else is specified\n        if weights is None and args.imagenet_weights:\n            weights = backbone.download_imagenet()\n\n        print(\"Creating model, this may take a second...\")\n        model, training_model, prediction_model = create_models(\n            backbone_retinanet=backbone.retinanet,\n            num_classes=train_generator.num_classes(),\n            weights=weights,\n            multi_gpu=args.multi_gpu,\n            freeze_backbone=args.freeze_backbone,\n            lr=args.lr,\n            config=args.config,\n        )\n\n    # this lets the generator compute backbone layer shapes using the actual backbone model\n    if \"vgg\" in args.backbone or \"densenet\" in args.backbone:\n        train_generator.compute_shapes = make_shapes_callback(model)\n        if validation_generator:\n            validation_generator.compute_shapes = train_generator.compute_shapes\n\n    # create the callbacks\n    callbacks = create_callbacks(\n        model, training_model, prediction_model, validation_generator, args\n    )\n\n    if not args.compute_val_loss:\n        validation_generator = None\n\n    # start training\n    return training_model.fit_generator(\n        generator=train_generator,\n        steps_per_epoch=args.steps,\n        epochs=args.epochs,\n        verbose=1,\n        callbacks=callbacks,\n        workers=args.workers,\n        use_multiprocessing=args.multiprocessing,\n        max_queue_size=args.max_queue_size,\n        validation_data=validation_generator,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/CNN/project-dog-classification/README.md",
    "content": "[//]: # (Image References)\n\n[image1]: ./images/sample_dog_output.png \"Sample Output\"\n[image2]: ./images/vgg16_model.png \"VGG-16 Model Layers\"\n[image3]: ./images/vgg16_model_draw.png \"VGG16 Model Figure\"\n\n\n## Project Overview\n\nWelcome to the Convolutional Neural Networks (CNN) project in the AI Nanodegree! In this project, you will learn how to build a pipeline that can be used within a web or mobile app to process real-world, user-supplied images.  Given an image of a dog, your algorithm will identify an estimate of the canine’s breed.  If supplied an image of a human, the code will identify the resembling dog breed.  \n\n![Sample Output][image1]\n\nAlong with exploring state-of-the-art CNN models for classification and localization, you will make important design decisions about the user experience for your app.  Our goal is that by completing this lab, you understand the challenges involved in piecing together a series of models designed to perform various tasks in a data processing pipeline.  Each model has its strengths and weaknesses, and engineering a real-world application often involves solving many problems without a perfect answer.  Your imperfect solution will nonetheless create a fun user experience!\n\n\n## Project Instructions\n\n### Instructions\n\n1. Clone the repository and navigate to the downloaded folder.\n\t\n\t```\t\n\t\tgit clone https://github.com/udacity/deep-learning-v2-pytorch.git\n\t\tcd deep-learning-v2-pytorch/project-dog-classification\n\t```\n3. Download the [dog dataset](https://s3-us-west-1.amazonaws.com/udacity-aind/dog-project/dogImages.zip).  Unzip the folder and place it in the repo, at location `path/to/dog-project/dogImages`.  The `dogImages/` folder should contain 133 folders, each corresponding to a different dog breed.\n4. Download the [human dataset](http://vis-www.cs.umass.edu/lfw/lfw.tgz).  Unzip the folder and place it in the repo, at location `path/to/dog-project/lfw`.  If you are using a Windows machine, you are encouraged to use [7zip](http://www.7-zip.org/) to extract the folder. \n5. Make sure you have already installed the necessary Python packages according to the README in the program repository.\n6. Open a terminal window and navigate to the project folder. Open the notebook and follow the instructions.\n\t\n\t```\n\t\tjupyter notebook dog_app.ipynb\n\t```\n\n__NOTE:__ While some code has already been implemented to get you started, you will need to implement additional functionality to successfully answer all of the questions included in the notebook. __Unless requested, do not modify code that has already been included.__\n\n__NOTE:__ In the notebook, you will need to train CNNs in PyTorch.  If your CNN is taking too long to train, feel free to pursue one of the options under the section __Accelerating the Training Process__ below.\n\n\n\n## (Optionally) Accelerating the Training Process \n\nIf your code is taking too long to run, you will need to either reduce the complexity of your chosen CNN architecture or switch to running your code on a GPU.  If you'd like to use a GPU, you can spin up an instance of your own:\n\n#### Amazon Web Services\n\nYou can use Amazon Web Services to launch an EC2 GPU instance. (This costs money, but enrolled students should see a coupon code in their student `resources`.)\n\n## Evaluation\n\nYour project will be reviewed by a Udacity reviewer against the CNN project rubric.  Review this rubric thoroughly and self-evaluate your project before submission.  All criteria found in the rubric must meet specifications for you to pass.\n\n\n## Project Submission\n\nYour submission should consist of the github link to your repository.  Your repository should contain:\n- The `dog_app.ipynb` file with fully functional code, all code cells executed and displaying output, and all questions answered.\n- An HTML or PDF export of the project notebook with the name `report.html` or `report.pdf`.\n\nPlease do __NOT__ include any of the project data sets provided in the `dogImages/` or `lfw/` folders.\n\n### Ready to submit your project?\n\nClick on the \"Submit Project\" button in the classroom and follow the instructions to submit!\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/CNN/project-dog-classification/haarcascades/haarcascade_frontalface_alt.xml",
    "content": "<?xml version=\"1.0\"?>\n<!--\n    Stump-based 20x20 gentle adaboost frontal face detector.\n    Created by Rainer Lienhart.\n\n////////////////////////////////////////////////////////////////////////////////////////\n\n  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.\n\n  By downloading, copying, installing or using the software you agree to this license.\n  If you do not agree to this license, do not download, install,\n  copy or use the software.\n\n\n                        Intel License Agreement\n                For Open Source Computer Vision Library\n\n Copyright (C) 2000, Intel Corporation, all rights reserved.\n Third party copyrights are property of their respective owners.\n\n Redistribution and use in source and binary forms, with or without modification,\n are permitted provided that the following conditions are met:\n\n   * Redistribution's of source code must retain the above copyright notice,\n     this list of conditions and the following disclaimer.\n\n   * Redistribution's in binary form must reproduce the above copyright notice,\n     this list of conditions and the following disclaimer in the documentation\n     and/or other materials provided with the distribution.\n\n   * The name of Intel Corporation may not be used to endorse or promote products\n     derived from this software without specific prior written permission.\n\n This software is provided by the copyright holders and contributors \"as is\" and\n any express or implied warranties, including, but not limited to, the implied\n warranties of merchantability and fitness for a particular purpose are disclaimed.\n In no event shall the Intel Corporation or contributors be liable for any direct,\n indirect, incidental, special, exemplary, or consequential damages\n (including, but not limited to, procurement of substitute goods or services;\n loss of use, data, or profits; or business interruption) however caused\n and on any theory of liability, whether in contract, strict liability,\n or tort (including negligence or otherwise) arising in any way out of\n the use of this software, even if advised of the possibility of such damage.\n-->\n<opencv_storage>\n<cascade type_id=\"opencv-cascade-classifier\"><stageType>BOOST</stageType>\n  <featureType>HAAR</featureType>\n  <height>20</height>\n  <width>20</width>\n  <stageParams>\n    <maxWeakCount>213</maxWeakCount></stageParams>\n  <featureParams>\n    <maxCatCount>0</maxCatCount></featureParams>\n  <stageNum>22</stageNum>\n  <stages>\n    <_>\n      <maxWeakCount>3</maxWeakCount>\n      <stageThreshold>8.2268941402435303e-01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 0 4.0141958743333817e-03</internalNodes>\n          <leafValues>\n            3.3794190734624863e-02 8.3781069517135620e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1 1.5151339583098888e-02</internalNodes>\n          <leafValues>\n            1.5141320228576660e-01 7.4888122081756592e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2 4.2109931819140911e-03</internalNodes>\n          <leafValues>\n            9.0049281716346741e-02 6.3748198747634888e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>16</maxWeakCount>\n      <stageThreshold>6.9566087722778320e+00</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 3 1.6227109590545297e-03</internalNodes>\n          <leafValues>\n            6.9308586418628693e-02 7.1109461784362793e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 4 2.2906649392098188e-03</internalNodes>\n          <leafValues>\n            1.7958030104637146e-01 6.6686922311782837e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 5 5.0025708042085171e-03</internalNodes>\n          <leafValues>\n            1.6936729848384857e-01 6.5540069341659546e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 6 7.9659894108772278e-03</internalNodes>\n          <leafValues>\n            5.8663320541381836e-01 9.1414518654346466e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 7 -3.5227010957896709e-03</internalNodes>\n          <leafValues>\n            1.4131669700145721e-01 6.0318958759307861e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 8 3.6667689681053162e-02</internalNodes>\n          <leafValues>\n            3.6756721138954163e-01 7.9203182458877563e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 9 9.3361474573612213e-03</internalNodes>\n          <leafValues>\n            6.1613857746124268e-01 2.0885099470615387e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 10 8.6961314082145691e-03</internalNodes>\n          <leafValues>\n            2.8362309932708740e-01 6.3602739572525024e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 11 1.1488880263641477e-03</internalNodes>\n          <leafValues>\n            2.2235809266567230e-01 5.8007007837295532e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 12 -2.1484689787030220e-03</internalNodes>\n          <leafValues>\n            2.4064640700817108e-01 5.7870548963546753e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 13 2.1219060290604830e-03</internalNodes>\n          <leafValues>\n            5.5596548318862915e-01 1.3622370362281799e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 14 -9.3949146568775177e-02</internalNodes>\n          <leafValues>\n            8.5027372837066650e-01 4.7177401185035706e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 15 1.3777789426967502e-03</internalNodes>\n          <leafValues>\n            5.9936738014221191e-01 2.8345298767089844e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 16 7.3063157498836517e-02</internalNodes>\n          <leafValues>\n            4.3418860435485840e-01 7.0600342750549316e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 17 3.6767389974556863e-04</internalNodes>\n          <leafValues>\n            3.0278879404067993e-01 6.0515749454498291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 18 -6.0479710809886456e-03</internalNodes>\n          <leafValues>\n            1.7984339594841003e-01 5.6752568483352661e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>21</maxWeakCount>\n      <stageThreshold>9.4985427856445312e+00</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 19 -1.6510689631104469e-02</internalNodes>\n          <leafValues>\n            6.6442251205444336e-01 1.4248579740524292e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 20 2.7052499353885651e-03</internalNodes>\n          <leafValues>\n            6.3253521919250488e-01 1.2884770333766937e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 21 2.8069869149476290e-03</internalNodes>\n          <leafValues>\n            1.2402880191802979e-01 6.1931931972503662e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 22 -1.5402400167658925e-03</internalNodes>\n          <leafValues>\n            1.4321430027484894e-01 5.6700158119201660e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 23 -5.6386279175058007e-04</internalNodes>\n          <leafValues>\n            1.6574330627918243e-01 5.9052079916000366e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 24 1.9253729842603207e-03</internalNodes>\n          <leafValues>\n            2.6955071091651917e-01 5.7388240098953247e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 25 -5.0214841030538082e-03</internalNodes>\n          <leafValues>\n            1.8935389816761017e-01 5.7827740907669067e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 26 2.6365420781075954e-03</internalNodes>\n          <leafValues>\n            2.3093290627002716e-01 5.6954258680343628e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 27 -1.5127769438549876e-03</internalNodes>\n          <leafValues>\n            2.7596020698547363e-01 5.9566420316696167e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 28 -1.0157439857721329e-02</internalNodes>\n          <leafValues>\n            1.7325380444526672e-01 5.5220472812652588e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 29 -1.1953660286962986e-02</internalNodes>\n          <leafValues>\n            1.3394099473953247e-01 5.5590140819549561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 30 4.8859491944313049e-03</internalNodes>\n          <leafValues>\n            3.6287039518356323e-01 6.1888492107391357e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 31 -8.0132916569709778e-02</internalNodes>\n          <leafValues>\n            9.1211050748825073e-02 5.4759448766708374e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 32 1.0643280111253262e-03</internalNodes>\n          <leafValues>\n            3.7151429057121277e-01 5.7113999128341675e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 33 -1.3419450260698795e-03</internalNodes>\n          <leafValues>\n            5.9533137083053589e-01 3.3180978894233704e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 34 -5.4601140320301056e-02</internalNodes>\n          <leafValues>\n            1.8440659344196320e-01 5.6028461456298828e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 35 2.9071690514683723e-03</internalNodes>\n          <leafValues>\n            3.5942441225051880e-01 6.1317151784896851e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 36 7.4718717951327562e-04</internalNodes>\n          <leafValues>\n            5.9943532943725586e-01 3.4595629572868347e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 37 4.3013808317482471e-03</internalNodes>\n          <leafValues>\n            4.1726520657539368e-01 6.9908452033996582e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 38 4.5017572119832039e-03</internalNodes>\n          <leafValues>\n            4.5097151398658752e-01 7.8014570474624634e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 39 2.4138500913977623e-02</internalNodes>\n          <leafValues>\n            5.4382127523422241e-01 1.3198269903659821e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>39</maxWeakCount>\n      <stageThreshold>1.8412969589233398e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 40 1.9212230108678341e-03</internalNodes>\n          <leafValues>\n            1.4152669906616211e-01 6.1998707056045532e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 41 -1.2748669541906565e-04</internalNodes>\n          <leafValues>\n            6.1910742521286011e-01 1.8849289417266846e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 42 5.1409931620582938e-04</internalNodes>\n          <leafValues>\n            1.4873969554901123e-01 5.8579277992248535e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 43 4.1878609918057919e-03</internalNodes>\n          <leafValues>\n            2.7469098567962646e-01 6.3592398166656494e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 44 5.1015717908740044e-03</internalNodes>\n          <leafValues>\n            5.8708512783050537e-01 2.1756289899349213e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 45 -2.1448440384119749e-03</internalNodes>\n          <leafValues>\n            5.8809447288513184e-01 2.9795908927917480e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 46 -2.8977119363844395e-03</internalNodes>\n          <leafValues>\n            2.3733270168304443e-01 5.8766472339630127e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 47 -2.1610679104924202e-02</internalNodes>\n          <leafValues>\n            1.2206549942493439e-01 5.1942020654678345e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 48 -4.6299318782985210e-03</internalNodes>\n          <leafValues>\n            2.6312309503555298e-01 5.8174091577529907e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 49 5.9393711853772402e-04</internalNodes>\n          <leafValues>\n            3.6386200785636902e-01 5.6985449790954590e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 50 5.3878661245107651e-02</internalNodes>\n          <leafValues>\n            4.3035310506820679e-01 7.5593662261962891e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 51 1.8887349870055914e-03</internalNodes>\n          <leafValues>\n            2.1226030588150024e-01 5.6134271621704102e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 52 -2.3635339457541704e-03</internalNodes>\n          <leafValues>\n            5.6318491697311401e-01 2.6427671313285828e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 53 2.4017799645662308e-02</internalNodes>\n          <leafValues>\n            5.7971078157424927e-01 2.7517059445381165e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 54 2.0543030404951423e-04</internalNodes>\n          <leafValues>\n            2.7052420377731323e-01 5.7525688409805298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 55 8.4790197433903813e-04</internalNodes>\n          <leafValues>\n            5.4356247186660767e-01 2.3348769545555115e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 56 1.4091329649090767e-03</internalNodes>\n          <leafValues>\n            5.3194248676300049e-01 2.0631550252437592e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 57 1.4642629539594054e-03</internalNodes>\n          <leafValues>\n            5.4189807176589966e-01 3.0688610672950745e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 58 1.6352549428120255e-03</internalNodes>\n          <leafValues>\n            3.6953729391098022e-01 6.1128681898117065e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 59 8.3172752056270838e-04</internalNodes>\n          <leafValues>\n            3.5650369524955750e-01 6.0252362489700317e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 60 -2.0998890977352858e-03</internalNodes>\n          <leafValues>\n            1.9139820337295532e-01 5.3628271818161011e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 61 -7.4213981861248612e-04</internalNodes>\n          <leafValues>\n            3.8355550169944763e-01 5.5293101072311401e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 62 3.2655049581080675e-03</internalNodes>\n          <leafValues>\n            4.3128961324691772e-01 7.1018958091735840e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 63 8.9134991867467761e-04</internalNodes>\n          <leafValues>\n            3.9848309755325317e-01 6.3919639587402344e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 64 -1.5284179709851742e-02</internalNodes>\n          <leafValues>\n            2.3667329549789429e-01 5.4337137937545776e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 65 4.8381411470472813e-03</internalNodes>\n          <leafValues>\n            5.8175009489059448e-01 3.2391890883445740e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 66 -9.1093179071322083e-04</internalNodes>\n          <leafValues>\n            5.5405938625335693e-01 2.9118689894676208e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 67 -6.1275060288608074e-03</internalNodes>\n          <leafValues>\n            1.7752550542354584e-01 5.1966291666030884e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 68 -4.4576259097084403e-04</internalNodes>\n          <leafValues>\n            3.0241701006889343e-01 5.5335938930511475e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 69 2.2646540775895119e-02</internalNodes>\n          <leafValues>\n            4.4149309396743774e-01 6.9753772020339966e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 70 -1.8804960418492556e-03</internalNodes>\n          <leafValues>\n            2.7913948893547058e-01 5.4979521036148071e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 71 7.0889107882976532e-03</internalNodes>\n          <leafValues>\n            5.2631992101669312e-01 2.3855470120906830e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 72 1.7318050377070904e-03</internalNodes>\n          <leafValues>\n            4.3193790316581726e-01 6.9836008548736572e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 73 -6.8482700735330582e-03</internalNodes>\n          <leafValues>\n            3.0820429325103760e-01 5.3909200429916382e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 74 -1.5062530110299122e-05</internalNodes>\n          <leafValues>\n            5.5219221115112305e-01 3.1203660368919373e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 75 2.9475569725036621e-02</internalNodes>\n          <leafValues>\n            5.4013228416442871e-01 1.7706030607223511e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 76 8.1387329846620560e-03</internalNodes>\n          <leafValues>\n            5.1786178350448608e-01 1.2110190093517303e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 77 2.0942950621247292e-02</internalNodes>\n          <leafValues>\n            5.2902942895889282e-01 3.3112218976020813e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 78 -9.5665529370307922e-03</internalNodes>\n          <leafValues>\n            7.4719941616058350e-01 4.4519689679145813e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>33</maxWeakCount>\n      <stageThreshold>1.5324139595031738e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 79 -2.8206960996612906e-04</internalNodes>\n          <leafValues>\n            2.0640860497951508e-01 6.0767322778701782e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 80 1.6790600493550301e-03</internalNodes>\n          <leafValues>\n            5.8519971370697021e-01 1.2553839385509491e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 81 6.9827912375330925e-04</internalNodes>\n          <leafValues>\n            9.4018429517745972e-02 5.7289612293243408e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 82 7.8959012171253562e-04</internalNodes>\n          <leafValues>\n            1.7819879949092865e-01 5.6943088769912720e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 83 -2.8560499195009470e-03</internalNodes>\n          <leafValues>\n            1.6383990645408630e-01 5.7886648178100586e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 84 -3.8122469559311867e-03</internalNodes>\n          <leafValues>\n            2.0854400098323822e-01 5.5085647106170654e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 85 1.5896620461717248e-03</internalNodes>\n          <leafValues>\n            5.7027608156204224e-01 1.8572150170803070e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 86 1.0078339837491512e-02</internalNodes>\n          <leafValues>\n            5.1169431209564209e-01 2.1897700428962708e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 87 -6.3526302576065063e-02</internalNodes>\n          <leafValues>\n            7.1313798427581787e-01 4.0438130497932434e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 88 -9.1031491756439209e-03</internalNodes>\n          <leafValues>\n            2.5671818852424622e-01 5.4639732837677002e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 89 -2.4035000242292881e-03</internalNodes>\n          <leafValues>\n            1.7006659507751465e-01 5.5909740924835205e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 90 1.5226360410451889e-03</internalNodes>\n          <leafValues>\n            5.4105567932128906e-01 2.6190540194511414e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 91 1.7997439950704575e-02</internalNodes>\n          <leafValues>\n            3.7324368953704834e-01 6.5352207422256470e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 92 -6.4538191072642803e-03</internalNodes>\n          <leafValues>\n            2.6264819502830505e-01 5.5374461412429810e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 93 -1.1880760081112385e-02</internalNodes>\n          <leafValues>\n            2.0037539303302765e-01 5.5447459220886230e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 94 1.2713660253211856e-03</internalNodes>\n          <leafValues>\n            5.5919027328491211e-01 3.0319759249687195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 95 1.1376109905540943e-03</internalNodes>\n          <leafValues>\n            2.7304071187973022e-01 5.6465089321136475e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 96 -4.2651998810470104e-03</internalNodes>\n          <leafValues>\n            1.4059090614318848e-01 5.4618209600448608e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 97 -2.9602861031889915e-03</internalNodes>\n          <leafValues>\n            1.7950350046157837e-01 5.4592901468276978e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 98 -8.8448226451873779e-03</internalNodes>\n          <leafValues>\n            5.7367831468582153e-01 2.8092199563980103e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 99 -6.6430689767003059e-03</internalNodes>\n          <leafValues>\n            2.3706759512424469e-01 5.5038261413574219e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 100 3.9997808635234833e-03</internalNodes>\n          <leafValues>\n            5.6081998348236084e-01 3.3042821288108826e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 101 -4.1221720166504383e-03</internalNodes>\n          <leafValues>\n            1.6401059925556183e-01 5.3789931535720825e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 102 1.5624909661710262e-02</internalNodes>\n          <leafValues>\n            5.2276492118835449e-01 2.2886039316654205e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 103 -1.0356419719755650e-02</internalNodes>\n          <leafValues>\n            7.0161938667297363e-01 4.2529278993606567e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 104 -8.7960809469223022e-03</internalNodes>\n          <leafValues>\n            2.7673470973968506e-01 5.3558301925659180e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 105 1.6226939857006073e-01</internalNodes>\n          <leafValues>\n            4.3422400951385498e-01 7.4425792694091797e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 106 4.5542530715465546e-03</internalNodes>\n          <leafValues>\n            5.7264858484268188e-01 2.5821250677108765e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 107 -2.1309209987521172e-03</internalNodes>\n          <leafValues>\n            2.1068480610847473e-01 5.3610187768936157e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 108 -1.3208420015871525e-02</internalNodes>\n          <leafValues>\n            7.5937908887863159e-01 4.5524680614471436e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 109 -6.5996676683425903e-02</internalNodes>\n          <leafValues>\n            1.2524759769439697e-01 5.3440397977828979e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 110 7.9142656177282333e-03</internalNodes>\n          <leafValues>\n            3.3153840899467468e-01 5.6010431051254272e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 111 2.0894279703497887e-02</internalNodes>\n          <leafValues>\n            5.5060499906539917e-01 2.7688381075859070e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>44</maxWeakCount>\n      <stageThreshold>2.1010639190673828e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 112 1.1961159761995077e-03</internalNodes>\n          <leafValues>\n            1.7626909911632538e-01 6.1562412977218628e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 113 -1.8679830245673656e-03</internalNodes>\n          <leafValues>\n            6.1181068420410156e-01 1.8323999643325806e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 114 -1.9579799845814705e-04</internalNodes>\n          <leafValues>\n            9.9044263362884521e-02 5.7238161563873291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 115 -8.0255657667294145e-04</internalNodes>\n          <leafValues>\n            5.5798798799514771e-01 2.3772829771041870e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 116 -2.4510810617357492e-03</internalNodes>\n          <leafValues>\n            2.2314579784870148e-01 5.8589351177215576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 117 5.0361850298941135e-04</internalNodes>\n          <leafValues>\n            2.6539939641952515e-01 5.7941037416458130e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 118 4.0293349884450436e-03</internalNodes>\n          <leafValues>\n            5.8038270473480225e-01 2.4848650395870209e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 119 -1.4451709575951099e-02</internalNodes>\n          <leafValues>\n            1.8303519487380981e-01 5.4842048883438110e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 120 2.0380979403853416e-03</internalNodes>\n          <leafValues>\n            3.3635589480400085e-01 6.0510927438735962e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 121 -1.6155190533027053e-03</internalNodes>\n          <leafValues>\n            2.2866420447826385e-01 5.4412460327148438e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 122 3.3458340913057327e-03</internalNodes>\n          <leafValues>\n            5.6259131431579590e-01 2.3923380672931671e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 123 1.6379579901695251e-03</internalNodes>\n          <leafValues>\n            3.9069938659667969e-01 5.9646219015121460e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 124 3.0251210555434227e-02</internalNodes>\n          <leafValues>\n            5.2484822273254395e-01 1.5757469832897186e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 125 3.7251990288496017e-02</internalNodes>\n          <leafValues>\n            4.1943109035491943e-01 6.7484188079833984e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 126 -2.5109790265560150e-02</internalNodes>\n          <leafValues>\n            1.8825499713420868e-01 5.4734510183334351e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 127 -5.3099058568477631e-03</internalNodes>\n          <leafValues>\n            1.3399730622768402e-01 5.2271109819412231e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 128 1.2086479691788554e-03</internalNodes>\n          <leafValues>\n            3.7620881199836731e-01 6.1096358299255371e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 129 -2.1907679736614227e-02</internalNodes>\n          <leafValues>\n            2.6631429791450500e-01 5.4040068387985229e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 130 5.4116579703986645e-03</internalNodes>\n          <leafValues>\n            5.3635787963867188e-01 2.2322730720043182e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 131 6.9946326315402985e-02</internalNodes>\n          <leafValues>\n            5.3582328557968140e-01 2.4536980688571930e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 132 3.4520021290518343e-04</internalNodes>\n          <leafValues>\n            2.4096719920635223e-01 5.3769302368164062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 133 1.2627709656953812e-03</internalNodes>\n          <leafValues>\n            5.4258567094802856e-01 3.1556931138038635e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 134 2.2719509899616241e-02</internalNodes>\n          <leafValues>\n            4.1584059596061707e-01 6.5978652238845825e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 135 -1.8111000536009669e-03</internalNodes>\n          <leafValues>\n            2.8112530708312988e-01 5.5052447319030762e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 136 3.3469670452177525e-03</internalNodes>\n          <leafValues>\n            5.2600282430648804e-01 1.8914650380611420e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 137 4.0791751234792173e-04</internalNodes>\n          <leafValues>\n            5.6735092401504517e-01 3.3442100882530212e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 138 1.2734799645841122e-02</internalNodes>\n          <leafValues>\n            5.3435921669006348e-01 2.3956120014190674e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 139 -7.3119727894663811e-03</internalNodes>\n          <leafValues>\n            6.0108900070190430e-01 4.0222078561782837e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 140 -5.6948751211166382e-02</internalNodes>\n          <leafValues>\n            8.1991511583328247e-01 4.5431908965110779e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 141 -5.0116591155529022e-03</internalNodes>\n          <leafValues>\n            2.2002810239791870e-01 5.3577107191085815e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 142 6.0334368608891964e-03</internalNodes>\n          <leafValues>\n            4.4130811095237732e-01 7.1817511320114136e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 143 3.9437441155314445e-03</internalNodes>\n          <leafValues>\n            5.4788607358932495e-01 2.7917331457138062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 144 -3.6591119132936001e-03</internalNodes>\n          <leafValues>\n            6.3578677177429199e-01 3.9897239208221436e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 145 -3.8456181064248085e-03</internalNodes>\n          <leafValues>\n            3.4936860203742981e-01 5.3006649017333984e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 146 -7.1926261298358440e-03</internalNodes>\n          <leafValues>\n            1.1196149885654449e-01 5.2296727895736694e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 147 -5.2798941731452942e-02</internalNodes>\n          <leafValues>\n            2.3871029913425446e-01 5.4534512758255005e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 148 -7.9537667334079742e-03</internalNodes>\n          <leafValues>\n            7.5869178771972656e-01 4.4393768906593323e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 149 -2.7344180271029472e-03</internalNodes>\n          <leafValues>\n            2.5654768943786621e-01 5.4893219470977783e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 150 -1.8507939530536532e-03</internalNodes>\n          <leafValues>\n            6.7343479394912720e-01 4.2524749040603638e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 151 1.5918919816613197e-02</internalNodes>\n          <leafValues>\n            5.4883527755737305e-01 2.2926619648933411e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 152 -1.2687679845839739e-03</internalNodes>\n          <leafValues>\n            6.1043310165405273e-01 4.0223899483680725e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 153 6.2883910723030567e-03</internalNodes>\n          <leafValues>\n            5.3108531236648560e-01 1.5361930429935455e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 154 -6.2259892001748085e-03</internalNodes>\n          <leafValues>\n            1.7291119694709778e-01 5.2416062355041504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 155 -1.2132599949836731e-02</internalNodes>\n          <leafValues>\n            6.5977597236633301e-01 4.3251821398735046e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>50</maxWeakCount>\n      <stageThreshold>2.3918790817260742e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 156 -3.9184908382594585e-03</internalNodes>\n          <leafValues>\n            6.1034351587295532e-01 1.4693309366703033e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 157 1.5971299726516008e-03</internalNodes>\n          <leafValues>\n            2.6323631405830383e-01 5.8964669704437256e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 158 1.7780110239982605e-02</internalNodes>\n          <leafValues>\n            5.8728742599487305e-01 1.7603619396686554e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 159 6.5334769897162914e-04</internalNodes>\n          <leafValues>\n            1.5678019821643829e-01 5.5960661172866821e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 160 -2.8353091329336166e-04</internalNodes>\n          <leafValues>\n            1.9131539762020111e-01 5.7320362329483032e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 161 1.6104689566418529e-03</internalNodes>\n          <leafValues>\n            2.9149138927459717e-01 5.6230807304382324e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 162 -9.7750619053840637e-02</internalNodes>\n          <leafValues>\n            1.9434769451618195e-01 5.6482332944869995e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 163 5.5182358482852578e-04</internalNodes>\n          <leafValues>\n            3.1346169114112854e-01 5.5046397447586060e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 164 -1.2858220376074314e-02</internalNodes>\n          <leafValues>\n            2.5364819169044495e-01 5.7601428031921387e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 165 4.1530239395797253e-03</internalNodes>\n          <leafValues>\n            5.7677221298217773e-01 3.6597740650177002e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 166 1.7092459602281451e-03</internalNodes>\n          <leafValues>\n            2.8431910276412964e-01 5.9189391136169434e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 167 7.5217359699308872e-03</internalNodes>\n          <leafValues>\n            4.0524271130561829e-01 6.1831092834472656e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 168 2.2479810286313295e-03</internalNodes>\n          <leafValues>\n            5.7837551832199097e-01 3.1354010105133057e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 169 5.2006211131811142e-02</internalNodes>\n          <leafValues>\n            5.5413120985031128e-01 1.9166369736194611e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 170 1.2085529975593090e-02</internalNodes>\n          <leafValues>\n            4.0326559543609619e-01 6.6445910930633545e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 171 1.4687820112158079e-05</internalNodes>\n          <leafValues>\n            3.5359779000282288e-01 5.7093828916549683e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 172 7.1395188570022583e-06</internalNodes>\n          <leafValues>\n            3.0374449491500854e-01 5.6102699041366577e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 173 -4.6001640148460865e-03</internalNodes>\n          <leafValues>\n            7.1810871362686157e-01 4.5803260803222656e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 174 2.0058949012309313e-03</internalNodes>\n          <leafValues>\n            5.6219518184661865e-01 2.9536840319633484e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 175 4.5050270855426788e-03</internalNodes>\n          <leafValues>\n            4.6153879165649414e-01 7.6190179586410522e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 176 1.1746830306947231e-02</internalNodes>\n          <leafValues>\n            5.3438371419906616e-01 1.7725290358066559e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 177 -5.8316338807344437e-02</internalNodes>\n          <leafValues>\n            1.6862459480762482e-01 5.3407722711563110e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 178 2.3629379575140774e-04</internalNodes>\n          <leafValues>\n            3.7920561432838440e-01 6.0268038511276245e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 179 -7.8156180679798126e-03</internalNodes>\n          <leafValues>\n            1.5128670632839203e-01 5.3243237733840942e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 180 -1.0876160115003586e-02</internalNodes>\n          <leafValues>\n            2.0818220078945160e-01 5.3199452161788940e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 181 -2.7745519764721394e-03</internalNodes>\n          <leafValues>\n            4.0982469916343689e-01 5.2103281021118164e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 182 -7.8276381827890873e-04</internalNodes>\n          <leafValues>\n            5.6932741403579712e-01 3.4788420796394348e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 183 1.3870409689843655e-02</internalNodes>\n          <leafValues>\n            5.3267508745193481e-01 2.2576980292797089e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 184 -2.3674910888075829e-02</internalNodes>\n          <leafValues>\n            1.5513050556182861e-01 5.2007079124450684e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 185 -1.4879409718560055e-05</internalNodes>\n          <leafValues>\n            5.5005669593811035e-01 3.8201761245727539e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 186 3.6190641112625599e-03</internalNodes>\n          <leafValues>\n            4.2386838793754578e-01 6.6397482156753540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 187 -1.9817110151052475e-02</internalNodes>\n          <leafValues>\n            2.1500380337238312e-01 5.3823578357696533e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 188 -3.8154039066284895e-03</internalNodes>\n          <leafValues>\n            6.6757112741470337e-01 4.2152971029281616e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 189 -4.9775829538702965e-03</internalNodes>\n          <leafValues>\n            2.2672890126705170e-01 5.3863281011581421e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 190 2.2441020701080561e-03</internalNodes>\n          <leafValues>\n            4.3086910247802734e-01 6.8557357788085938e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 191 1.2282459996640682e-02</internalNodes>\n          <leafValues>\n            5.8366149663925171e-01 3.4674790501594543e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 192 -2.8548699337989092e-03</internalNodes>\n          <leafValues>\n            7.0169448852539062e-01 4.3114539980888367e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 193 -3.7875669077038765e-03</internalNodes>\n          <leafValues>\n            2.8953450918197632e-01 5.2249461412429810e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 194 -1.2201230274513364e-03</internalNodes>\n          <leafValues>\n            2.9755708575248718e-01 5.4816448688507080e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 195 1.0160599835216999e-02</internalNodes>\n          <leafValues>\n            4.8888179659843445e-01 8.1826978921890259e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 196 -1.6174569725990295e-02</internalNodes>\n          <leafValues>\n            1.4814929664134979e-01 5.2399927377700806e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 197 1.9292460754513741e-02</internalNodes>\n          <leafValues>\n            4.7863098978996277e-01 7.3781907558441162e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 198 -3.2479539513587952e-03</internalNodes>\n          <leafValues>\n            7.3742228746414185e-01 4.4706439971923828e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 199 -9.3803480267524719e-03</internalNodes>\n          <leafValues>\n            3.4891548752784729e-01 5.5379962921142578e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 200 -1.2606129981577396e-02</internalNodes>\n          <leafValues>\n            2.3796869814395905e-01 5.3154432773590088e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 201 -2.5621930137276649e-02</internalNodes>\n          <leafValues>\n            1.9646880030632019e-01 5.1387697458267212e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 202 -7.5741496402770281e-05</internalNodes>\n          <leafValues>\n            5.5905228853225708e-01 3.3658531308174133e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 203 -8.9210882782936096e-02</internalNodes>\n          <leafValues>\n            6.3404656946659088e-02 5.1626348495483398e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 204 -2.7670480776578188e-03</internalNodes>\n          <leafValues>\n            7.3234677314758301e-01 4.4907060265541077e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 205 2.7152578695677221e-04</internalNodes>\n          <leafValues>\n            4.1148349642753601e-01 5.9855180978775024e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>51</maxWeakCount>\n      <stageThreshold>2.4527879714965820e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 206 1.4786219689995050e-03</internalNodes>\n          <leafValues>\n            2.6635450124740601e-01 6.6433167457580566e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 207 -1.8741659587249160e-03</internalNodes>\n          <leafValues>\n            6.1438488960266113e-01 2.5185129046440125e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 208 -1.7151009524241090e-03</internalNodes>\n          <leafValues>\n            5.7663410902023315e-01 2.3974630236625671e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 209 -1.8939269939437509e-03</internalNodes>\n          <leafValues>\n            5.6820458173751831e-01 2.5291448831558228e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 210 -5.3006052039563656e-03</internalNodes>\n          <leafValues>\n            1.6406759619712830e-01 5.5560797452926636e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 211 -4.6662531793117523e-02</internalNodes>\n          <leafValues>\n            6.1231541633605957e-01 4.7628301382064819e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 212 -7.9431332414969802e-04</internalNodes>\n          <leafValues>\n            5.7078588008880615e-01 2.8394040465354919e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 213 1.4891670085489750e-02</internalNodes>\n          <leafValues>\n            4.0896728634834290e-01 6.0063672065734863e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 214 -1.2046529445797205e-03</internalNodes>\n          <leafValues>\n            5.7124507427215576e-01 2.7052891254425049e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 215 6.0619381256401539e-03</internalNodes>\n          <leafValues>\n            5.2625042200088501e-01 3.2622259855270386e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 216 -2.5286648888140917e-03</internalNodes>\n          <leafValues>\n            6.8538308143615723e-01 4.1992568969726562e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 217 -5.9010218828916550e-03</internalNodes>\n          <leafValues>\n            3.2662820816040039e-01 5.4348129034042358e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 218 5.6702760048210621e-03</internalNodes>\n          <leafValues>\n            5.4684108495712280e-01 2.3190039396286011e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 219 -3.0304100364446640e-03</internalNodes>\n          <leafValues>\n            5.5706679821014404e-01 2.7082380652427673e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 220 2.9803649522364140e-03</internalNodes>\n          <leafValues>\n            3.7005689740180969e-01 5.8906257152557373e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 221 -7.5840510427951813e-02</internalNodes>\n          <leafValues>\n            2.1400700509548187e-01 5.4199481010437012e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 222 1.9262539222836494e-02</internalNodes>\n          <leafValues>\n            5.5267721414566040e-01 2.7265900373458862e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 223 1.8888259364757687e-04</internalNodes>\n          <leafValues>\n            3.9580118656158447e-01 6.0172098875045776e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 224 2.9369549825787544e-02</internalNodes>\n          <leafValues>\n            5.2413737773895264e-01 1.4357580244541168e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 225 1.0417619487270713e-03</internalNodes>\n          <leafValues>\n            3.3854091167449951e-01 5.9299832582473755e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 226 2.6125640142709017e-03</internalNodes>\n          <leafValues>\n            5.4853779077529907e-01 3.0215978622436523e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 227 9.6977467183023691e-04</internalNodes>\n          <leafValues>\n            3.3752760291099548e-01 5.5320328474044800e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 228 5.9512659208849072e-04</internalNodes>\n          <leafValues>\n            5.6317430734634399e-01 3.3593991398811340e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 229 -1.0156559944152832e-01</internalNodes>\n          <leafValues>\n            6.3735038042068481e-02 5.2304250001907349e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 230 3.6156699061393738e-02</internalNodes>\n          <leafValues>\n            5.1369631290435791e-01 1.0295289754867554e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 231 3.4624140243977308e-03</internalNodes>\n          <leafValues>\n            3.8793200254440308e-01 5.5582892894744873e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 232 1.9554980099201202e-02</internalNodes>\n          <leafValues>\n            5.2500867843627930e-01 1.8758599460124969e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 233 -2.3121440317481756e-03</internalNodes>\n          <leafValues>\n            6.6720288991928101e-01 4.6796411275863647e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 234 -1.8605289515107870e-03</internalNodes>\n          <leafValues>\n            7.1633791923522949e-01 4.3346709012985229e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 235 -9.4026362057775259e-04</internalNodes>\n          <leafValues>\n            3.0213609337806702e-01 5.6502032279968262e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 236 -5.2418331615626812e-03</internalNodes>\n          <leafValues>\n            1.8200090527534485e-01 5.2502560615539551e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 237 1.1729019752237946e-04</internalNodes>\n          <leafValues>\n            3.3891880512237549e-01 5.4459732770919800e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 238 1.1878840159624815e-03</internalNodes>\n          <leafValues>\n            4.0853491425514221e-01 6.2535631656646729e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 239 -1.0881359688937664e-02</internalNodes>\n          <leafValues>\n            3.3783990144729614e-01 5.7000827789306641e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 240 1.7354859737679362e-03</internalNodes>\n          <leafValues>\n            4.2046359181404114e-01 6.5230387449264526e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 241 -6.5119052305817604e-03</internalNodes>\n          <leafValues>\n            2.5952160358428955e-01 5.4281437397003174e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 242 -1.2136430013924837e-03</internalNodes>\n          <leafValues>\n            6.1651438474655151e-01 3.9778938889503479e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 243 -1.0354240424931049e-02</internalNodes>\n          <leafValues>\n            1.6280280053615570e-01 5.2195048332214355e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 244 5.5858830455690622e-04</internalNodes>\n          <leafValues>\n            3.1996509432792664e-01 5.5035740137100220e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 245 1.5299649909138680e-02</internalNodes>\n          <leafValues>\n            4.1039940714836121e-01 6.1223882436752319e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 246 -2.1588210016489029e-02</internalNodes>\n          <leafValues>\n            1.0349129885435104e-01 5.1973849534988403e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 247 -1.2834629416465759e-01</internalNodes>\n          <leafValues>\n            8.4938651323318481e-01 4.8931029438972473e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 248 -2.2927189711481333e-03</internalNodes>\n          <leafValues>\n            3.1301578879356384e-01 5.4715752601623535e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 249 7.9915106296539307e-02</internalNodes>\n          <leafValues>\n            4.8563209176063538e-01 6.0739892721176147e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 250 -7.9441092908382416e-02</internalNodes>\n          <leafValues>\n            8.3946740627288818e-01 4.6245330572128296e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 251 -5.2800010889768600e-03</internalNodes>\n          <leafValues>\n            1.8816959857940674e-01 5.3066980838775635e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 252 1.0463109938427806e-03</internalNodes>\n          <leafValues>\n            5.2712291479110718e-01 2.5830659270286560e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 253 2.6317298761568964e-04</internalNodes>\n          <leafValues>\n            4.2353048920631409e-01 5.7354408502578735e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 254 -3.6173160187900066e-03</internalNodes>\n          <leafValues>\n            6.9343960285186768e-01 4.4954448938369751e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 255 1.1421879753470421e-02</internalNodes>\n          <leafValues>\n            5.9009212255477905e-01 4.1381931304931641e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 256 -1.9963278900831938e-03</internalNodes>\n          <leafValues>\n            6.4663827419281006e-01 4.3272399902343750e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>56</maxWeakCount>\n      <stageThreshold>2.7153350830078125e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 257 -9.9691245704889297e-03</internalNodes>\n          <leafValues>\n            6.1423242092132568e-01 2.4822120368480682e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 258 7.3073059320449829e-04</internalNodes>\n          <leafValues>\n            5.7049518823623657e-01 2.3219659924507141e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 259 6.4045301405712962e-04</internalNodes>\n          <leafValues>\n            2.1122519671916962e-01 5.8149331808090210e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 260 4.5424019917845726e-03</internalNodes>\n          <leafValues>\n            2.9504820704460144e-01 5.8663117885589600e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 261 9.2477443104144186e-05</internalNodes>\n          <leafValues>\n            2.9909908771514893e-01 5.7913267612457275e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 262 -8.6603146046400070e-03</internalNodes>\n          <leafValues>\n            2.8130298852920532e-01 5.6355422735214233e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 263 8.0515816807746887e-03</internalNodes>\n          <leafValues>\n            3.5353690385818481e-01 6.0547572374343872e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 264 4.3835240649059415e-04</internalNodes>\n          <leafValues>\n            5.5965322256088257e-01 2.7315109968185425e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 265 -9.8168973636347800e-05</internalNodes>\n          <leafValues>\n            5.9780317544937134e-01 3.6385610699653625e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 266 -1.1298790341243148e-03</internalNodes>\n          <leafValues>\n            2.7552521228790283e-01 5.4327291250228882e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 267 6.4356150105595589e-03</internalNodes>\n          <leafValues>\n            4.3056419491767883e-01 7.0698332786560059e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 268 -5.6829329580068588e-02</internalNodes>\n          <leafValues>\n            2.4952429533004761e-01 5.2949970960617065e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 269 4.0668169967830181e-03</internalNodes>\n          <leafValues>\n            5.4785531759262085e-01 2.4977239966392517e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 270 4.8164798499783501e-05</internalNodes>\n          <leafValues>\n            3.9386010169982910e-01 5.7063561677932739e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 271 6.1795017682015896e-03</internalNodes>\n          <leafValues>\n            4.4076061248779297e-01 7.3947668075561523e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 272 6.4985752105712891e-03</internalNodes>\n          <leafValues>\n            5.4452431201934814e-01 2.4791529774665833e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 273 -1.0211090557277203e-03</internalNodes>\n          <leafValues>\n            2.5447669625282288e-01 5.3389710187911987e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 274 -5.4247528314590454e-03</internalNodes>\n          <leafValues>\n            2.7188581228256226e-01 5.3240692615509033e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 275 -1.0559899965301156e-03</internalNodes>\n          <leafValues>\n            3.1782880425453186e-01 5.5345088243484497e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 276 6.6465808777138591e-04</internalNodes>\n          <leafValues>\n            4.2842191457748413e-01 6.5581941604614258e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 277 -2.7524109464138746e-04</internalNodes>\n          <leafValues>\n            5.9028607606887817e-01 3.8102629780769348e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 278 4.2293202131986618e-03</internalNodes>\n          <leafValues>\n            3.8164898753166199e-01 5.7093858718872070e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 279 -3.2868210691958666e-03</internalNodes>\n          <leafValues>\n            1.7477439343929291e-01 5.2595442533493042e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 280 1.5611879643984139e-04</internalNodes>\n          <leafValues>\n            3.6017221212387085e-01 5.7256120443344116e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 281 -7.3621381488919724e-06</internalNodes>\n          <leafValues>\n            5.4018580913543701e-01 3.0444970726966858e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 282 -1.4767250046133995e-02</internalNodes>\n          <leafValues>\n            3.2207700610160828e-01 5.5734348297119141e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 283 2.4489590898156166e-02</internalNodes>\n          <leafValues>\n            4.3015280365943909e-01 6.5188127756118774e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 284 -3.7652091123163700e-04</internalNodes>\n          <leafValues>\n            3.5645830631256104e-01 5.5982369184494019e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 285 7.3657688517414499e-06</internalNodes>\n          <leafValues>\n            3.4907829761505127e-01 5.5618977546691895e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 286 -1.5099939890205860e-02</internalNodes>\n          <leafValues>\n            1.7762720584869385e-01 5.3352999687194824e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 287 -3.8316650316119194e-03</internalNodes>\n          <leafValues>\n            6.1496877670288086e-01 4.2213940620422363e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 288 1.6925400123000145e-02</internalNodes>\n          <leafValues>\n            5.4130148887634277e-01 2.1665850281715393e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 289 -3.0477850232273340e-03</internalNodes>\n          <leafValues>\n            6.4494907855987549e-01 4.3546178936958313e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 290 3.2140589319169521e-03</internalNodes>\n          <leafValues>\n            5.4001551866531372e-01 3.5232171416282654e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 291 -4.0023201145231724e-03</internalNodes>\n          <leafValues>\n            2.7745240926742554e-01 5.3384172916412354e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 292 7.4182129465043545e-03</internalNodes>\n          <leafValues>\n            5.6767392158508301e-01 3.7028178572654724e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 293 -8.8764587417244911e-03</internalNodes>\n          <leafValues>\n            7.7492219209671021e-01 4.5836889743804932e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 294 2.7311739977449179e-03</internalNodes>\n          <leafValues>\n            5.3387218713760376e-01 3.9966610074043274e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 295 -2.5082379579544067e-03</internalNodes>\n          <leafValues>\n            5.6119632720947266e-01 3.7774989008903503e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 296 -8.0541074275970459e-03</internalNodes>\n          <leafValues>\n            2.9152289032936096e-01 5.1791828870773315e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 297 -9.7938813269138336e-04</internalNodes>\n          <leafValues>\n            5.5364328622817993e-01 3.7001928687095642e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 298 -5.8745909482240677e-03</internalNodes>\n          <leafValues>\n            3.7543910741806030e-01 5.6793761253356934e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 299 -4.4936719350516796e-03</internalNodes>\n          <leafValues>\n            7.0196992158889771e-01 4.4809499382972717e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 300 -5.4389229044318199e-03</internalNodes>\n          <leafValues>\n            2.3103649914264679e-01 5.3133869171142578e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 301 -7.5094640487805009e-04</internalNodes>\n          <leafValues>\n            5.8648687601089478e-01 4.1293430328369141e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 302 1.4528800420521293e-05</internalNodes>\n          <leafValues>\n            3.7324070930480957e-01 5.6196212768554688e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 303 4.0758069604635239e-02</internalNodes>\n          <leafValues>\n            5.3120911121368408e-01 2.7205219864845276e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 304 6.6505931317806244e-03</internalNodes>\n          <leafValues>\n            4.7100159525871277e-01 6.6934937238693237e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 305 4.5759351924061775e-03</internalNodes>\n          <leafValues>\n            5.1678192615509033e-01 1.6372759640216827e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 306 6.5269311890006065e-03</internalNodes>\n          <leafValues>\n            5.3976088762283325e-01 2.9385319352149963e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 307 -1.3660379685461521e-02</internalNodes>\n          <leafValues>\n            7.0864880084991455e-01 4.5322000980377197e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 308 2.7358869090676308e-02</internalNodes>\n          <leafValues>\n            5.2064812183380127e-01 3.5892319679260254e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 309 6.2197551596909761e-04</internalNodes>\n          <leafValues>\n            3.5070759057998657e-01 5.4411232471466064e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 310 -3.3077080734074116e-03</internalNodes>\n          <leafValues>\n            5.8595228195190430e-01 4.0248918533325195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 311 -1.0631109587848186e-02</internalNodes>\n          <leafValues>\n            6.7432671785354614e-01 4.4226029515266418e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 312 1.9441649317741394e-02</internalNodes>\n          <leafValues>\n            5.2827161550521851e-01 1.7979049682617188e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>71</maxWeakCount>\n      <stageThreshold>3.4554111480712891e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 313 -5.5052167735993862e-03</internalNodes>\n          <leafValues>\n            5.9147310256958008e-01 2.6265591382980347e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 314 1.9562279339879751e-03</internalNodes>\n          <leafValues>\n            2.3125819861888885e-01 5.7416272163391113e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 315 -8.8924784213304520e-03</internalNodes>\n          <leafValues>\n            1.6565300524234772e-01 5.6266540288925171e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 316 8.3638377487659454e-02</internalNodes>\n          <leafValues>\n            5.4234498739242554e-01 1.9572949409484863e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 317 1.2282270472496748e-03</internalNodes>\n          <leafValues>\n            3.4179040789604187e-01 5.9925037622451782e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 318 5.7629169896245003e-03</internalNodes>\n          <leafValues>\n            3.7195819616317749e-01 6.0799038410186768e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 319 -1.6417410224676132e-03</internalNodes>\n          <leafValues>\n            2.5774860382080078e-01 5.5769157409667969e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 320 3.4113149158656597e-03</internalNodes>\n          <leafValues>\n            2.9507490992546082e-01 5.5141717195510864e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 321 -1.1069320142269135e-02</internalNodes>\n          <leafValues>\n            7.5693589448928833e-01 4.4770789146423340e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 322 3.4865971654653549e-02</internalNodes>\n          <leafValues>\n            5.5837088823318481e-01 2.6696211099624634e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 323 6.5701099811121821e-04</internalNodes>\n          <leafValues>\n            5.6273132562637329e-01 2.9888901114463806e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 324 -2.4339130148291588e-02</internalNodes>\n          <leafValues>\n            2.7711850404739380e-01 5.1088631153106689e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 325 5.9435202274471521e-04</internalNodes>\n          <leafValues>\n            5.5806517601013184e-01 3.1203418970108032e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 326 2.2971509024500847e-03</internalNodes>\n          <leafValues>\n            3.3302500844001770e-01 5.6790757179260254e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 327 -3.7801829166710377e-03</internalNodes>\n          <leafValues>\n            2.9905349016189575e-01 5.3448081016540527e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 328 -1.3420669734477997e-01</internalNodes>\n          <leafValues>\n            1.4638589322566986e-01 5.3925681114196777e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 329 7.5224548345431685e-04</internalNodes>\n          <leafValues>\n            3.7469539046287537e-01 5.6927347183227539e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 330 -4.0545541793107986e-02</internalNodes>\n          <leafValues>\n            2.7547478675842285e-01 5.4842978715896606e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 331 1.2572970008477569e-03</internalNodes>\n          <leafValues>\n            3.7445840239524841e-01 5.7560759782791138e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 332 -7.4249948374927044e-03</internalNodes>\n          <leafValues>\n            7.5138592720031738e-01 4.7282311320304871e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 333 5.0908129196614027e-04</internalNodes>\n          <leafValues>\n            5.4048967361450195e-01 2.9323211312294006e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 334 -1.2808450264856219e-03</internalNodes>\n          <leafValues>\n            6.1697798967361450e-01 4.2733490467071533e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 335 -1.8348860321566463e-03</internalNodes>\n          <leafValues>\n            2.0484960079193115e-01 5.2064722776412964e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 336 2.7484869584441185e-02</internalNodes>\n          <leafValues>\n            5.2529847621917725e-01 1.6755220293998718e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 337 2.2372419480234385e-03</internalNodes>\n          <leafValues>\n            5.2677828073501587e-01 2.7776581048965454e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 338 -8.8635291904211044e-03</internalNodes>\n          <leafValues>\n            6.9545578956604004e-01 4.8120489716529846e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 339 4.1753971017897129e-03</internalNodes>\n          <leafValues>\n            4.2918878793716431e-01 6.3491958379745483e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 340 -1.7098189564421773e-03</internalNodes>\n          <leafValues>\n            2.9305368661880493e-01 5.3612488508224487e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 341 6.5328548662364483e-03</internalNodes>\n          <leafValues>\n            4.4953250885009766e-01 7.4096941947937012e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 342 -9.5372907817363739e-03</internalNodes>\n          <leafValues>\n            3.1491199135780334e-01 5.4165017604827881e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 343 2.5310989469289780e-02</internalNodes>\n          <leafValues>\n            5.1218920946121216e-01 1.3117079436779022e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 344 3.6460969597101212e-02</internalNodes>\n          <leafValues>\n            5.1759117841720581e-01 2.5913399457931519e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 345 2.0854329690337181e-02</internalNodes>\n          <leafValues>\n            5.1371401548385620e-01 1.5823160111904144e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 346 -8.7207747856155038e-04</internalNodes>\n          <leafValues>\n            5.5743098258972168e-01 4.3989789485931396e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 347 -1.5227000403683633e-05</internalNodes>\n          <leafValues>\n            5.5489408969879150e-01 3.7080699205398560e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 348 -8.4316509310156107e-04</internalNodes>\n          <leafValues>\n            3.3874198794364929e-01 5.5542111396789551e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 349 3.6037859972566366e-03</internalNodes>\n          <leafValues>\n            5.3580617904663086e-01 3.4111711382865906e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 350 -6.8057891912758350e-03</internalNodes>\n          <leafValues>\n            6.1252027750015259e-01 4.3458628654479980e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 351 -4.7021660953760147e-02</internalNodes>\n          <leafValues>\n            2.3581659793853760e-01 5.1937389373779297e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 352 -3.6954108625650406e-02</internalNodes>\n          <leafValues>\n            7.3231112957000732e-01 4.7609439492225647e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 353 1.0439479956403375e-03</internalNodes>\n          <leafValues>\n            5.4194551706314087e-01 3.4113308787345886e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 354 -2.1050689974799752e-04</internalNodes>\n          <leafValues>\n            2.8216940164566040e-01 5.5549472570419312e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 355 -8.0831587314605713e-02</internalNodes>\n          <leafValues>\n            9.1299301385879517e-01 4.6974349021911621e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 356 -3.6579059087671340e-04</internalNodes>\n          <leafValues>\n            6.0226702690124512e-01 3.9782929420471191e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 357 -1.2545920617412776e-04</internalNodes>\n          <leafValues>\n            5.6132131814956665e-01 3.8455399870872498e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 358 -6.8786486983299255e-02</internalNodes>\n          <leafValues>\n            2.2616119682788849e-01 5.3004968166351318e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 359 1.2415789999067783e-02</internalNodes>\n          <leafValues>\n            4.0756919980049133e-01 5.8288121223449707e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 360 -4.7174817882478237e-03</internalNodes>\n          <leafValues>\n            2.8272539377212524e-01 5.2677577733993530e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 361 3.8136858493089676e-02</internalNodes>\n          <leafValues>\n            5.0747412443161011e-01 1.0236159712076187e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 362 -2.8168049175292253e-03</internalNodes>\n          <leafValues>\n            6.1690068244934082e-01 4.3596929311752319e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 363 8.1303603947162628e-03</internalNodes>\n          <leafValues>\n            4.5244330167770386e-01 7.6060950756072998e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 364 6.0056019574403763e-03</internalNodes>\n          <leafValues>\n            5.2404087781906128e-01 1.8597120046615601e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 365 1.9139319658279419e-02</internalNodes>\n          <leafValues>\n            5.2093791961669922e-01 2.3320719599723816e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 366 1.6445759683847427e-02</internalNodes>\n          <leafValues>\n            5.4507029056549072e-01 3.2642349600791931e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 367 -3.7356890738010406e-02</internalNodes>\n          <leafValues>\n            6.9990468025207520e-01 4.5332419872283936e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 368 -1.9727900624275208e-02</internalNodes>\n          <leafValues>\n            2.6536649465560913e-01 5.4128098487854004e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 369 6.6972579807043076e-03</internalNodes>\n          <leafValues>\n            4.4805660843849182e-01 7.1386522054672241e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 370 7.4457528535276651e-04</internalNodes>\n          <leafValues>\n            4.2313501238822937e-01 5.4713201522827148e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 371 1.1790640419349074e-03</internalNodes>\n          <leafValues>\n            5.3417021036148071e-01 3.1304550170898438e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 372 3.4980610013008118e-02</internalNodes>\n          <leafValues>\n            5.1186597347259521e-01 3.4305301308631897e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 373 5.6859792675822973e-04</internalNodes>\n          <leafValues>\n            3.5321870446205139e-01 5.4686397314071655e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 374 -1.1340649798512459e-02</internalNodes>\n          <leafValues>\n            2.8423538804054260e-01 5.3487008810043335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 375 -6.6228108480572701e-03</internalNodes>\n          <leafValues>\n            6.8836402893066406e-01 4.4926649332046509e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 376 -8.0160330981016159e-03</internalNodes>\n          <leafValues>\n            1.7098939418792725e-01 5.2243089675903320e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 377 1.4206819469109178e-03</internalNodes>\n          <leafValues>\n            5.2908462285995483e-01 2.9933831095695496e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 378 -2.7801711112260818e-03</internalNodes>\n          <leafValues>\n            6.4988541603088379e-01 4.4604998826980591e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 379 -1.4747589593753219e-03</internalNodes>\n          <leafValues>\n            3.2604381442070007e-01 5.3881132602691650e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 380 -2.3830339312553406e-02</internalNodes>\n          <leafValues>\n            7.5289410352706909e-01 4.8012199997901917e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 381 6.9369790144264698e-03</internalNodes>\n          <leafValues>\n            5.3351658582687378e-01 3.2614278793334961e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 382 8.2806255668401718e-03</internalNodes>\n          <leafValues>\n            4.5803940296173096e-01 5.7378298044204712e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 383 -1.0439500212669373e-02</internalNodes>\n          <leafValues>\n            2.5923201441764832e-01 5.2338278293609619e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>80</maxWeakCount>\n      <stageThreshold>3.9107288360595703e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 384 7.2006587870419025e-03</internalNodes>\n          <leafValues>\n            3.2588860392570496e-01 6.8498080968856812e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 385 -2.8593589086085558e-03</internalNodes>\n          <leafValues>\n            5.8388811349868774e-01 2.5378298759460449e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 386 6.8580528022721410e-04</internalNodes>\n          <leafValues>\n            5.7080817222595215e-01 2.8124240040779114e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 387 7.9580191522836685e-03</internalNodes>\n          <leafValues>\n            2.5010511279106140e-01 5.5442607402801514e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 388 -1.2124150525778532e-03</internalNodes>\n          <leafValues>\n            2.3853680491447449e-01 5.4333502054214478e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 389 7.9426132142543793e-03</internalNodes>\n          <leafValues>\n            3.9550709724426270e-01 6.2207579612731934e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 390 2.4630590341985226e-03</internalNodes>\n          <leafValues>\n            5.6397080421447754e-01 2.9923579096794128e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 391 -6.0396599583327770e-03</internalNodes>\n          <leafValues>\n            2.1865129470825195e-01 5.4116767644882202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 392 -1.2988339876756072e-03</internalNodes>\n          <leafValues>\n            2.3507060110569000e-01 5.3645849227905273e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 393 2.2299369447864592e-04</internalNodes>\n          <leafValues>\n            3.8041129708290100e-01 5.7296061515808105e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 394 1.4654280385002494e-03</internalNodes>\n          <leafValues>\n            2.5101679563522339e-01 5.2582687139511108e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 395 -8.1210042117163539e-04</internalNodes>\n          <leafValues>\n            5.9928238391876221e-01 3.8511589169502258e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 396 -1.3836020370945334e-03</internalNodes>\n          <leafValues>\n            5.6813961267471313e-01 3.6365869641304016e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 397 -2.7936449274420738e-02</internalNodes>\n          <leafValues>\n            1.4913170039653778e-01 5.3775602579116821e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 398 -4.6919551095925272e-04</internalNodes>\n          <leafValues>\n            3.6924299597740173e-01 5.5724847316741943e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 399 -4.9829659983515739e-03</internalNodes>\n          <leafValues>\n            6.7585092782974243e-01 4.5325040817260742e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 400 1.8815309740602970e-03</internalNodes>\n          <leafValues>\n            5.3680229187011719e-01 2.9325398802757263e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 401 -1.9067550078034401e-02</internalNodes>\n          <leafValues>\n            1.6493770480155945e-01 5.3300672769546509e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 402 -4.6906559728085995e-03</internalNodes>\n          <leafValues>\n            1.9639259576797485e-01 5.1193618774414062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 403 5.9777139686048031e-03</internalNodes>\n          <leafValues>\n            4.6711719036102295e-01 7.0083981752395630e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 404 -3.3303130418062210e-02</internalNodes>\n          <leafValues>\n            1.1554169654846191e-01 5.1041620969772339e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 405 9.0744107961654663e-02</internalNodes>\n          <leafValues>\n            5.1496601104736328e-01 1.3061730563640594e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 406 9.3555898638442159e-04</internalNodes>\n          <leafValues>\n            3.6054810881614685e-01 5.4398590326309204e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 407 1.4901650138199329e-02</internalNodes>\n          <leafValues>\n            4.8862120509147644e-01 7.6875698566436768e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 408 6.1594118596985936e-04</internalNodes>\n          <leafValues>\n            5.3568130731582642e-01 3.2409390807151794e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 409 -5.0670988857746124e-02</internalNodes>\n          <leafValues>\n            1.8486219644546509e-01 5.2304041385650635e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 410 6.8665749859064817e-04</internalNodes>\n          <leafValues>\n            3.8405799865722656e-01 5.5179458856582642e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 411 8.3712432533502579e-03</internalNodes>\n          <leafValues>\n            4.2885640263557434e-01 6.1317539215087891e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 412 -1.2953069526702166e-03</internalNodes>\n          <leafValues>\n            2.9136741161346436e-01 5.2807378768920898e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 413 -4.1941680014133453e-02</internalNodes>\n          <leafValues>\n            7.5547999143600464e-01 4.8560309410095215e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 414 -2.3529380559921265e-02</internalNodes>\n          <leafValues>\n            2.8382799029350281e-01 5.2560812234878540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 415 4.0857449173927307e-02</internalNodes>\n          <leafValues>\n            4.8709350824356079e-01 6.2772971391677856e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 416 -2.5406869128346443e-02</internalNodes>\n          <leafValues>\n            7.0997077226638794e-01 4.5750290155410767e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 417 -4.1415440500713885e-04</internalNodes>\n          <leafValues>\n            4.0308868885040283e-01 5.4694122076034546e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 418 2.1824119612574577e-02</internalNodes>\n          <leafValues>\n            4.5020240545272827e-01 6.7687010765075684e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 419 1.4114039950072765e-02</internalNodes>\n          <leafValues>\n            5.4428607225418091e-01 3.7917000055313110e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 420 6.7214590671937913e-05</internalNodes>\n          <leafValues>\n            4.2004638910293579e-01 5.8734762668609619e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 421 -7.9417638480663300e-03</internalNodes>\n          <leafValues>\n            3.7925618886947632e-01 5.5852657556533813e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 422 -7.2144409641623497e-03</internalNodes>\n          <leafValues>\n            7.2531038522720337e-01 4.6035489439964294e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 423 2.5817339774221182e-03</internalNodes>\n          <leafValues>\n            4.6933019161224365e-01 5.9002387523651123e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 424 1.3409319519996643e-01</internalNodes>\n          <leafValues>\n            5.1492130756378174e-01 1.8088449537754059e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 425 2.2962710354477167e-03</internalNodes>\n          <leafValues>\n            5.3997439146041870e-01 3.7178671360015869e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 426 -2.1575849968940020e-03</internalNodes>\n          <leafValues>\n            2.4084959924221039e-01 5.1488637924194336e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 427 -4.9196188338100910e-03</internalNodes>\n          <leafValues>\n            6.5735882520675659e-01 4.7387400269508362e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 428 1.6267469618469477e-03</internalNodes>\n          <leafValues>\n            4.1928219795227051e-01 6.3031142950057983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 429 3.3413388882763684e-04</internalNodes>\n          <leafValues>\n            5.5402982234954834e-01 3.7021011114120483e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 430 -2.6698080822825432e-02</internalNodes>\n          <leafValues>\n            1.7109179496765137e-01 5.1014107465744019e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 431 -3.0561879277229309e-02</internalNodes>\n          <leafValues>\n            1.9042180478572845e-01 5.1687937974929810e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 432 2.8511548880487680e-03</internalNodes>\n          <leafValues>\n            4.4475069642066956e-01 6.3138538599014282e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 433 -3.6211479455232620e-02</internalNodes>\n          <leafValues>\n            2.4907270073890686e-01 5.3773492574691772e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 434 -2.4115189444273710e-03</internalNodes>\n          <leafValues>\n            5.3812432289123535e-01 3.6642369627952576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 435 -7.7253201743587852e-04</internalNodes>\n          <leafValues>\n            5.5302321910858154e-01 3.5415500402450562e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 436 2.9481729143299162e-04</internalNodes>\n          <leafValues>\n            4.1326990723609924e-01 5.6672430038452148e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 437 -6.2334560789167881e-03</internalNodes>\n          <leafValues>\n            9.8787233233451843e-02 5.1986688375473022e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 438 -2.6274729520082474e-02</internalNodes>\n          <leafValues>\n            9.1127492487430573e-02 5.0281071662902832e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 439 5.3212260827422142e-03</internalNodes>\n          <leafValues>\n            4.7266489267349243e-01 6.2227207422256470e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 440 -4.1129058226943016e-03</internalNodes>\n          <leafValues>\n            2.1574570238590240e-01 5.1378047466278076e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 441 3.2457809429615736e-03</internalNodes>\n          <leafValues>\n            5.4107707738876343e-01 3.7217769026756287e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 442 -1.6359709203243256e-02</internalNodes>\n          <leafValues>\n            7.7878749370574951e-01 4.6852919459342957e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 443 3.2166109303943813e-04</internalNodes>\n          <leafValues>\n            5.4789870977401733e-01 4.2403739690780640e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 444 6.4452440710738301e-04</internalNodes>\n          <leafValues>\n            5.3305608034133911e-01 3.5013249516487122e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 445 -7.8909732401371002e-03</internalNodes>\n          <leafValues>\n            6.9235211610794067e-01 4.7265690565109253e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 446 4.8336211591959000e-02</internalNodes>\n          <leafValues>\n            5.0559002161026001e-01 7.5749203562736511e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 447 -7.5178127735853195e-04</internalNodes>\n          <leafValues>\n            3.7837418913841248e-01 5.5385738611221313e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 448 -2.4953910615295172e-03</internalNodes>\n          <leafValues>\n            3.0816510319709778e-01 5.3596121072769165e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 449 -2.2385010961443186e-03</internalNodes>\n          <leafValues>\n            6.6339588165283203e-01 4.6493428945541382e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 450 -1.7988430336117744e-03</internalNodes>\n          <leafValues>\n            6.5968447923660278e-01 4.3471878767013550e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 451 8.7860915809869766e-03</internalNodes>\n          <leafValues>\n            5.2318328619003296e-01 2.3155799508094788e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 452 3.6715380847454071e-03</internalNodes>\n          <leafValues>\n            5.2042502164840698e-01 2.9773768782615662e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 453 -3.5336449742317200e-02</internalNodes>\n          <leafValues>\n            7.2388780117034912e-01 4.8615050315856934e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 454 -6.9189240457490087e-04</internalNodes>\n          <leafValues>\n            3.1050220131874084e-01 5.2298247814178467e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 455 -3.3946109469980001e-03</internalNodes>\n          <leafValues>\n            3.1389680504798889e-01 5.2101737260818481e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 456 9.8569283727556467e-04</internalNodes>\n          <leafValues>\n            4.5365801453590393e-01 6.5850979089736938e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 457 -5.0163101404905319e-02</internalNodes>\n          <leafValues>\n            1.8044540286064148e-01 5.1989167928695679e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 458 -2.2367259953171015e-03</internalNodes>\n          <leafValues>\n            7.2557020187377930e-01 4.6513590216636658e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 459 7.4326287722215056e-04</internalNodes>\n          <leafValues>\n            4.4129210710525513e-01 5.8985459804534912e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 460 -9.3485182151198387e-04</internalNodes>\n          <leafValues>\n            3.5000529885292053e-01 5.3660178184509277e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 461 1.7497939988970757e-02</internalNodes>\n          <leafValues>\n            4.9121949076652527e-01 8.3152848482131958e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 462 -1.5200000489130616e-03</internalNodes>\n          <leafValues>\n            3.5702759027481079e-01 5.3705602884292603e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 463 7.8003940870985389e-04</internalNodes>\n          <leafValues>\n            4.3537721037864685e-01 5.9673351049423218e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>103</maxWeakCount>\n      <stageThreshold>5.0610481262207031e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 464 -9.9945552647113800e-03</internalNodes>\n          <leafValues>\n            6.1625832319259644e-01 3.0545330047607422e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 465 -1.1085229925811291e-03</internalNodes>\n          <leafValues>\n            5.8182948827743530e-01 3.1555780768394470e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 466 1.0364380432292819e-03</internalNodes>\n          <leafValues>\n            2.5520521402359009e-01 5.6929117441177368e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 467 6.8211311008781195e-04</internalNodes>\n          <leafValues>\n            3.6850899457931519e-01 5.9349310398101807e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 468 -6.8057340104132891e-04</internalNodes>\n          <leafValues>\n            2.3323920369148254e-01 5.4747921228408813e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 469 2.6068789884448051e-04</internalNodes>\n          <leafValues>\n            3.2574570178985596e-01 5.6675457954406738e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 470 5.1607372006401420e-04</internalNodes>\n          <leafValues>\n            3.7447169423103333e-01 5.8454728126525879e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 471 8.5007521556690335e-04</internalNodes>\n          <leafValues>\n            3.4203711152076721e-01 5.5228072404861450e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 472 -1.8607829697430134e-03</internalNodes>\n          <leafValues>\n            2.8044199943542480e-01 5.3754240274429321e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 473 -1.5033970121294260e-03</internalNodes>\n          <leafValues>\n            2.5790509581565857e-01 5.4989522695541382e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 474 2.3478909861296415e-03</internalNodes>\n          <leafValues>\n            4.1751560568809509e-01 6.3137108087539673e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 475 -2.8880240279249847e-04</internalNodes>\n          <leafValues>\n            5.8651697635650635e-01 4.0526661276817322e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 476 8.9405477046966553e-03</internalNodes>\n          <leafValues>\n            5.2111411094665527e-01 2.3186540603637695e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 477 -1.9327739253640175e-02</internalNodes>\n          <leafValues>\n            2.7534329891204834e-01 5.2415257692337036e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 478 -2.0202060113660991e-04</internalNodes>\n          <leafValues>\n            5.7229787111282349e-01 3.6771959066390991e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 479 2.1179069299250841e-03</internalNodes>\n          <leafValues>\n            4.4661080837249756e-01 5.5424308776855469e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 480 -1.7743760254234076e-03</internalNodes>\n          <leafValues>\n            2.8132531046867371e-01 5.3009599447250366e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 481 4.2234458960592747e-03</internalNodes>\n          <leafValues>\n            4.3997099995613098e-01 5.7954281568527222e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 482 -1.4375220052897930e-02</internalNodes>\n          <leafValues>\n            2.9811179637908936e-01 5.2920591831207275e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 483 -1.5349180437624454e-02</internalNodes>\n          <leafValues>\n            7.7052152156829834e-01 4.7481718659400940e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 484 1.5152279956964776e-05</internalNodes>\n          <leafValues>\n            3.7188440561294556e-01 5.5768972635269165e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 485 -9.1293919831514359e-03</internalNodes>\n          <leafValues>\n            3.6151960492134094e-01 5.2867668867111206e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 486 2.2512159775942564e-03</internalNodes>\n          <leafValues>\n            5.3647047281265259e-01 3.4862980246543884e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 487 -4.9696918576955795e-03</internalNodes>\n          <leafValues>\n            6.9276517629623413e-01 4.6768361330032349e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 488 -1.2829010374844074e-02</internalNodes>\n          <leafValues>\n            7.7121537923812866e-01 4.6607351303100586e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 489 -9.3660065904259682e-03</internalNodes>\n          <leafValues>\n            3.3749839663505554e-01 5.3512877225875854e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 490 3.2452319283038378e-03</internalNodes>\n          <leafValues>\n            5.3251898288726807e-01 3.2896101474761963e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 491 -1.1723560281097889e-02</internalNodes>\n          <leafValues>\n            6.8376529216766357e-01 4.7543001174926758e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 492 2.9257940695970319e-05</internalNodes>\n          <leafValues>\n            3.5720878839492798e-01 5.3605020046234131e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 493 -2.2244219508138485e-05</internalNodes>\n          <leafValues>\n            5.5414271354675293e-01 3.5520640015602112e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 494 5.0881509669125080e-03</internalNodes>\n          <leafValues>\n            5.0708442926406860e-01 1.2564620375633240e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 495 2.7429679408669472e-02</internalNodes>\n          <leafValues>\n            5.2695602178573608e-01 1.6258180141448975e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 496 -6.4142867922782898e-03</internalNodes>\n          <leafValues>\n            7.1455889940261841e-01 4.5841971039772034e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 497 3.3479959238320589e-03</internalNodes>\n          <leafValues>\n            5.3986120223999023e-01 3.4946969151496887e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 498 -8.2635492086410522e-02</internalNodes>\n          <leafValues>\n            2.4391929805278778e-01 5.1602262258529663e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 499 1.0261740535497665e-03</internalNodes>\n          <leafValues>\n            3.8868919014930725e-01 5.7679080963134766e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 500 -1.6307090409100056e-03</internalNodes>\n          <leafValues>\n            3.3894580602645874e-01 5.3477007150650024e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 501 2.4546680506318808e-03</internalNodes>\n          <leafValues>\n            4.6014139056205750e-01 6.3872468471527100e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 502 -9.9476519972085953e-04</internalNodes>\n          <leafValues>\n            5.7698792219161987e-01 4.1203960776329041e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 503 1.5409190207719803e-02</internalNodes>\n          <leafValues>\n            4.8787090182304382e-01 7.0898222923278809e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 504 1.1784400558099151e-03</internalNodes>\n          <leafValues>\n            5.2635532617568970e-01 2.8952449560165405e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 505 -2.7701919898390770e-02</internalNodes>\n          <leafValues>\n            1.4988289773464203e-01 5.2196067571640015e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 506 -2.9505399987101555e-02</internalNodes>\n          <leafValues>\n            2.4893319234251976e-02 4.9998161196708679e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 507 4.5159430010244250e-04</internalNodes>\n          <leafValues>\n            5.4646229743957520e-01 4.0296629071235657e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 508 7.1772639639675617e-03</internalNodes>\n          <leafValues>\n            4.2710569500923157e-01 5.8662968873977661e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 509 -7.4182048439979553e-02</internalNodes>\n          <leafValues>\n            6.8741792440414429e-01 4.9190279841423035e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 510 -1.7254160717129707e-02</internalNodes>\n          <leafValues>\n            3.3706760406494141e-01 5.3487390279769897e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 511 1.4851559884846210e-02</internalNodes>\n          <leafValues>\n            4.6267929673194885e-01 6.1299049854278564e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 512 1.0002000257372856e-02</internalNodes>\n          <leafValues>\n            5.3461229801177979e-01 3.4234538674354553e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 513 2.0138120744377375e-03</internalNodes>\n          <leafValues>\n            4.6438300609588623e-01 5.8243042230606079e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 514 1.5135470312088728e-03</internalNodes>\n          <leafValues>\n            5.1963961124420166e-01 2.8561499714851379e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 515 3.1381431035697460e-03</internalNodes>\n          <leafValues>\n            4.8381629586219788e-01 5.9585297107696533e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 516 -5.1450440660119057e-03</internalNodes>\n          <leafValues>\n            8.9203029870986938e-01 4.7414121031761169e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 517 -4.4736708514392376e-03</internalNodes>\n          <leafValues>\n            2.0339429378509521e-01 5.3372788429260254e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 518 1.9628470763564110e-03</internalNodes>\n          <leafValues>\n            4.5716339349746704e-01 6.7258632183074951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 519 5.4260450415313244e-03</internalNodes>\n          <leafValues>\n            5.2711081504821777e-01 2.8456708788871765e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 520 4.9611460417509079e-04</internalNodes>\n          <leafValues>\n            4.1383129358291626e-01 5.7185977697372437e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 521 9.3728788197040558e-03</internalNodes>\n          <leafValues>\n            5.2251511812210083e-01 2.8048470616340637e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 522 6.0500897234305739e-04</internalNodes>\n          <leafValues>\n            5.2367687225341797e-01 3.3145239949226379e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 523 5.6792551185935736e-04</internalNodes>\n          <leafValues>\n            4.5310598611831665e-01 6.2769711017608643e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 524 2.4644339457154274e-02</internalNodes>\n          <leafValues>\n            5.1308518648147583e-01 2.0171439647674561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 525 -1.0290450416505337e-02</internalNodes>\n          <leafValues>\n            7.7865952253341675e-01 4.8766410350799561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 526 2.0629419013857841e-03</internalNodes>\n          <leafValues>\n            4.2885988950729370e-01 5.8812642097473145e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 527 -5.0519481301307678e-03</internalNodes>\n          <leafValues>\n            3.5239779949188232e-01 5.2860087156295776e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 528 -5.7692620903253555e-03</internalNodes>\n          <leafValues>\n            6.8410861492156982e-01 4.5880940556526184e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 529 -4.5789941214025021e-04</internalNodes>\n          <leafValues>\n            3.5655200481414795e-01 5.4859781265258789e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 530 -7.5918837683275342e-04</internalNodes>\n          <leafValues>\n            3.3687931299209595e-01 5.2541971206665039e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 531 -1.7737259622663260e-03</internalNodes>\n          <leafValues>\n            3.4221610426902771e-01 5.4540151357650757e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 532 -8.5610467940568924e-03</internalNodes>\n          <leafValues>\n            6.5336120128631592e-01 4.4858568906784058e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 533 1.7277270089834929e-03</internalNodes>\n          <leafValues>\n            5.3075802326202393e-01 3.9253529906272888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 534 -2.8199609369039536e-02</internalNodes>\n          <leafValues>\n            6.8574589490890503e-01 4.5885840058326721e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 535 -1.7781109781935811e-03</internalNodes>\n          <leafValues>\n            4.0378510951995850e-01 5.3698569536209106e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 536 3.3177141449414194e-04</internalNodes>\n          <leafValues>\n            5.3997987508773804e-01 3.7057501077651978e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 537 2.6385399978607893e-03</internalNodes>\n          <leafValues>\n            4.6654370427131653e-01 6.4527308940887451e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 538 -2.1183069329708815e-03</internalNodes>\n          <leafValues>\n            5.9147810935974121e-01 4.0646770596504211e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 539 -1.4773289673030376e-02</internalNodes>\n          <leafValues>\n            3.6420381069183350e-01 5.2947628498077393e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 540 -1.6815440729260445e-02</internalNodes>\n          <leafValues>\n            2.6642319560050964e-01 5.1449728012084961e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 541 -6.3370140269398689e-03</internalNodes>\n          <leafValues>\n            6.7795312404632568e-01 4.8520979285240173e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 542 -4.4560048991115764e-05</internalNodes>\n          <leafValues>\n            5.6139647960662842e-01 4.1530540585517883e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 543 -1.0240620467811823e-03</internalNodes>\n          <leafValues>\n            5.9644782543182373e-01 4.5663040876388550e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 544 -2.3161689750850201e-03</internalNodes>\n          <leafValues>\n            2.9761150479316711e-01 5.1881599426269531e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 545 5.3217571973800659e-01</internalNodes>\n          <leafValues>\n            5.1878392696380615e-01 2.2026319801807404e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 546 -1.6643050312995911e-01</internalNodes>\n          <leafValues>\n            1.8660229444503784e-01 5.0603431463241577e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 547 1.1253529787063599e-01</internalNodes>\n          <leafValues>\n            5.2121251821517944e-01 1.1850229650735855e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 548 9.3046864494681358e-03</internalNodes>\n          <leafValues>\n            4.5899370312690735e-01 6.8261492252349854e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 549 -4.6255099587142467e-03</internalNodes>\n          <leafValues>\n            3.0799409747123718e-01 5.2250087261199951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 550 -1.1116469651460648e-01</internalNodes>\n          <leafValues>\n            2.1010440587997437e-01 5.0808018445968628e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 551 -1.0888439603149891e-02</internalNodes>\n          <leafValues>\n            5.7653552293777466e-01 4.7904640436172485e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 552 5.8564301580190659e-03</internalNodes>\n          <leafValues>\n            5.0651001930236816e-01 1.5635989606380463e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 553 5.4854389280080795e-02</internalNodes>\n          <leafValues>\n            4.9669149518013000e-01 7.2305107116699219e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 554 -1.1197339743375778e-02</internalNodes>\n          <leafValues>\n            2.1949790418148041e-01 5.0987982749938965e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 555 4.4069071300327778e-03</internalNodes>\n          <leafValues>\n            4.7784018516540527e-01 6.7709028720855713e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 556 -6.3665293157100677e-02</internalNodes>\n          <leafValues>\n            1.9363629817962646e-01 5.0810241699218750e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 557 -9.8081491887569427e-03</internalNodes>\n          <leafValues>\n            5.9990632534027100e-01 4.8103410005569458e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 558 -2.1717099007219076e-03</internalNodes>\n          <leafValues>\n            3.3383339643478394e-01 5.2354729175567627e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 559 -1.3315520249307156e-02</internalNodes>\n          <leafValues>\n            6.6170698404312134e-01 4.9192130565643311e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 560 2.5442079640924931e-03</internalNodes>\n          <leafValues>\n            4.4887441396713257e-01 6.0821849107742310e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 561 1.2037839740514755e-02</internalNodes>\n          <leafValues>\n            5.4093921184539795e-01 3.2924321293830872e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 562 -2.0701050758361816e-02</internalNodes>\n          <leafValues>\n            6.8191200494766235e-01 4.5949959754943848e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 563 2.7608279138803482e-02</internalNodes>\n          <leafValues>\n            4.6307921409606934e-01 5.7672828435897827e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 564 1.2370620388537645e-03</internalNodes>\n          <leafValues>\n            5.1653790473937988e-01 2.6350161433219910e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 565 -3.7669338285923004e-02</internalNodes>\n          <leafValues>\n            2.5363931059837341e-01 5.2789801359176636e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 566 -1.8057259730994701e-03</internalNodes>\n          <leafValues>\n            3.9851561188697815e-01 5.5175000429153442e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>111</maxWeakCount>\n      <stageThreshold>5.4620071411132812e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 567 4.4299028813838959e-03</internalNodes>\n          <leafValues>\n            2.8910180926322937e-01 6.3352262973785400e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 568 -2.3813319858163595e-03</internalNodes>\n          <leafValues>\n            6.2117892503738403e-01 3.4774878621101379e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 569 2.2915711160749197e-03</internalNodes>\n          <leafValues>\n            2.2544120252132416e-01 5.5821180343627930e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 570 9.9457940086722374e-04</internalNodes>\n          <leafValues>\n            3.7117108702659607e-01 5.9300708770751953e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 571 7.7164667891338468e-04</internalNodes>\n          <leafValues>\n            5.6517201662063599e-01 3.3479958772659302e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 572 -1.1386410333216190e-03</internalNodes>\n          <leafValues>\n            3.0691260099411011e-01 5.5086308717727661e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 573 -1.6403039626311511e-04</internalNodes>\n          <leafValues>\n            5.7628279924392700e-01 3.6990478634834290e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 574 2.9793529392918572e-05</internalNodes>\n          <leafValues>\n            2.6442441344261169e-01 5.4379111528396606e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 575 8.5774902254343033e-03</internalNodes>\n          <leafValues>\n            5.0511389970779419e-01 1.7957249283790588e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 576 -2.6032689493149519e-04</internalNodes>\n          <leafValues>\n            5.8269691467285156e-01 4.4468268752098083e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 577 -6.1404630541801453e-03</internalNodes>\n          <leafValues>\n            3.1138521432876587e-01 5.3469717502593994e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 578 -2.3086950182914734e-02</internalNodes>\n          <leafValues>\n            3.2779461145401001e-01 5.3311979770660400e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 579 -1.4243650250136852e-02</internalNodes>\n          <leafValues>\n            7.3817098140716553e-01 4.5880630612373352e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 580 1.9487129524350166e-02</internalNodes>\n          <leafValues>\n            5.2566307783126831e-01 2.2744719684123993e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 581 -9.6681108698248863e-04</internalNodes>\n          <leafValues>\n            5.5112308263778687e-01 3.8150069117546082e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 582 3.1474709976464510e-03</internalNodes>\n          <leafValues>\n            5.4256367683410645e-01 2.5437268614768982e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 583 -1.8026070029009134e-04</internalNodes>\n          <leafValues>\n            5.3801918029785156e-01 3.4063041210174561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 584 -6.0266260989010334e-03</internalNodes>\n          <leafValues>\n            3.0358019471168518e-01 5.4205721616744995e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 585 4.4462960795499384e-04</internalNodes>\n          <leafValues>\n            3.9909970760345459e-01 5.6601101160049438e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 586 2.2609760053455830e-03</internalNodes>\n          <leafValues>\n            5.5628067255020142e-01 3.9406880736351013e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 587 5.1133058965206146e-02</internalNodes>\n          <leafValues>\n            4.6096539497375488e-01 7.1185618638992310e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 588 -1.7786309123039246e-02</internalNodes>\n          <leafValues>\n            2.3161660134792328e-01 5.3221440315246582e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 589 -4.9679628573358059e-03</internalNodes>\n          <leafValues>\n            2.3307719826698303e-01 5.1220291852951050e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 590 2.0667689386755228e-03</internalNodes>\n          <leafValues>\n            4.6574440598487854e-01 6.4554882049560547e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 591 7.4413768015801907e-03</internalNodes>\n          <leafValues>\n            5.1543921232223511e-01 2.3616339266300201e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 592 -3.6277279723435640e-03</internalNodes>\n          <leafValues>\n            6.2197732925415039e-01 4.4766610860824585e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 593 -5.3530759178102016e-03</internalNodes>\n          <leafValues>\n            1.8373550474643707e-01 5.1022082567214966e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 594 1.4530919492244720e-01</internalNodes>\n          <leafValues>\n            5.1459872722625732e-01 1.5359309315681458e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 595 2.4394490756094456e-03</internalNodes>\n          <leafValues>\n            5.3436601161956787e-01 3.6246618628501892e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 596 -3.1283390708267689e-03</internalNodes>\n          <leafValues>\n            6.2150079011917114e-01 4.8455920815467834e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 597 1.7940260004252195e-03</internalNodes>\n          <leafValues>\n            4.2992618680000305e-01 5.8241981267929077e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 598 3.6253821104764938e-02</internalNodes>\n          <leafValues>\n            5.2603340148925781e-01 1.4394679665565491e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 599 -5.1746722310781479e-03</internalNodes>\n          <leafValues>\n            3.5065388679504395e-01 5.2870452404022217e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 600 6.5383297624066472e-04</internalNodes>\n          <leafValues>\n            4.8096409440040588e-01 6.1220401525497437e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 601 -2.6480229571461678e-02</internalNodes>\n          <leafValues>\n            1.1393620073795319e-01 5.0455862283706665e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 602 -3.0440660193562508e-03</internalNodes>\n          <leafValues>\n            6.3520950078964233e-01 4.7947341203689575e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 603 3.6993520334362984e-03</internalNodes>\n          <leafValues>\n            5.1311182975769043e-01 2.4985109269618988e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 604 -3.6762931267730892e-04</internalNodes>\n          <leafValues>\n            5.4213947057723999e-01 3.7095320224761963e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 605 -4.1382260620594025e-02</internalNodes>\n          <leafValues>\n            1.8949599564075470e-01 5.0816917419433594e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 606 -1.0532729793339968e-03</internalNodes>\n          <leafValues>\n            6.4543670415878296e-01 4.7836089134216309e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 607 -2.1648600231856108e-03</internalNodes>\n          <leafValues>\n            6.2150311470031738e-01 4.4998261332511902e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 608 -5.6747748749330640e-04</internalNodes>\n          <leafValues>\n            3.7126109004020691e-01 5.4193347692489624e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 609 1.7375840246677399e-01</internalNodes>\n          <leafValues>\n            5.0236439704895020e-01 1.2157420068979263e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 610 -2.9049699660390615e-03</internalNodes>\n          <leafValues>\n            3.2402679324150085e-01 5.3818839788436890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 611 1.2299539521336555e-03</internalNodes>\n          <leafValues>\n            4.1655078530311584e-01 5.7034862041473389e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 612 -5.4329237900674343e-04</internalNodes>\n          <leafValues>\n            3.8540428876876831e-01 5.5475491285324097e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 613 -8.3297258242964745e-03</internalNodes>\n          <leafValues>\n            2.2044940292835236e-01 5.0970828533172607e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 614 -1.0417630255687982e-04</internalNodes>\n          <leafValues>\n            5.6070661544799805e-01 4.3030360341072083e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 615 3.1204700469970703e-02</internalNodes>\n          <leafValues>\n            4.6216571331024170e-01 6.9820040464401245e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 616 7.8943502157926559e-03</internalNodes>\n          <leafValues>\n            5.2695941925048828e-01 2.2690680623054504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 617 -4.3645310215651989e-03</internalNodes>\n          <leafValues>\n            6.3592231273651123e-01 4.5379561185836792e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 618 7.6793059706687927e-03</internalNodes>\n          <leafValues>\n            5.2747678756713867e-01 2.7404838800430298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 619 -2.5431139394640923e-02</internalNodes>\n          <leafValues>\n            2.0385199785232544e-01 5.0717329978942871e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 620 8.2000601105391979e-04</internalNodes>\n          <leafValues>\n            4.5874550938606262e-01 6.1198681592941284e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 621 2.9284600168466568e-03</internalNodes>\n          <leafValues>\n            5.0712740421295166e-01 2.0282049477100372e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 622 4.5256470912136137e-05</internalNodes>\n          <leafValues>\n            4.8121041059494019e-01 5.4308217763900757e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 623 1.3158309739083052e-03</internalNodes>\n          <leafValues>\n            4.6258139610290527e-01 6.7793232202529907e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 624 1.5870389761403203e-03</internalNodes>\n          <leafValues>\n            5.3862917423248291e-01 3.4314650297164917e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 625 -2.1539660170674324e-02</internalNodes>\n          <leafValues>\n            2.5942500680685043e-02 5.0032228231430054e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 626 1.4334480278193951e-02</internalNodes>\n          <leafValues>\n            5.2028447389602661e-01 1.5906329452991486e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 627 -8.3881383761763573e-03</internalNodes>\n          <leafValues>\n            7.2824811935424805e-01 4.6480441093444824e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 628 9.1906841844320297e-03</internalNodes>\n          <leafValues>\n            5.5623567104339600e-01 3.9231911301612854e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 629 -5.8453059755265713e-03</internalNodes>\n          <leafValues>\n            6.8033927679061890e-01 4.6291279792785645e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 630 -5.4707799106836319e-02</internalNodes>\n          <leafValues>\n            2.5616711378097534e-01 5.2061259746551514e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 631 9.1142775490880013e-03</internalNodes>\n          <leafValues>\n            5.1896202564239502e-01 3.0538770556449890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 632 -1.5575000084936619e-02</internalNodes>\n          <leafValues>\n            1.2950749695301056e-01 5.1690948009490967e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 633 -1.2050600344082341e-04</internalNodes>\n          <leafValues>\n            5.7350981235504150e-01 4.2308250069618225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 634 1.2273970060050488e-03</internalNodes>\n          <leafValues>\n            5.2898782491683960e-01 4.0797919034957886e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 635 -1.2186600361019373e-03</internalNodes>\n          <leafValues>\n            6.5756398439407349e-01 4.5744091272354126e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 636 -3.3256649039685726e-03</internalNodes>\n          <leafValues>\n            3.6280471086502075e-01 5.1950198411941528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 637 -1.3288309797644615e-02</internalNodes>\n          <leafValues>\n            1.2842659652233124e-01 5.0434887409210205e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 638 -3.3839771058410406e-03</internalNodes>\n          <leafValues>\n            6.2922400236129761e-01 4.7575059533119202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 639 -2.1954220533370972e-01</internalNodes>\n          <leafValues>\n            1.4877319335937500e-01 5.0650137662887573e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 640 4.9111708067357540e-03</internalNodes>\n          <leafValues>\n            4.2561021447181702e-01 5.6658387184143066e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 641 -1.8744950648397207e-04</internalNodes>\n          <leafValues>\n            4.0041440725326538e-01 5.5868571996688843e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 642 -5.2178641781210899e-03</internalNodes>\n          <leafValues>\n            6.0091161727905273e-01 4.8127061128616333e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 643 -1.1111519997939467e-03</internalNodes>\n          <leafValues>\n            3.5149338841438293e-01 5.2870899438858032e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 644 4.4036400504410267e-03</internalNodes>\n          <leafValues>\n            4.6422758698463440e-01 5.9240859746932983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 645 1.2299499660730362e-01</internalNodes>\n          <leafValues>\n            5.0255292654037476e-01 6.9152481853961945e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 646 -1.2313510291278362e-02</internalNodes>\n          <leafValues>\n            5.8845919370651245e-01 4.9340128898620605e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 647 4.1471039876341820e-03</internalNodes>\n          <leafValues>\n            4.3722391128540039e-01 5.8934777975082397e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 648 -3.5502649843692780e-03</internalNodes>\n          <leafValues>\n            4.3275511264801025e-01 5.3962701559066772e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 649 -1.9224269315600395e-02</internalNodes>\n          <leafValues>\n            1.9131340086460114e-01 5.0683307647705078e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 650 1.4395059552043676e-03</internalNodes>\n          <leafValues>\n            5.3081780672073364e-01 4.2435330152511597e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 651 -6.7751999013125896e-03</internalNodes>\n          <leafValues>\n            6.3653957843780518e-01 4.5400860905647278e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 652 7.0119630545377731e-03</internalNodes>\n          <leafValues>\n            5.1898342370986938e-01 3.0261999368667603e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 653 5.4014651104807854e-03</internalNodes>\n          <leafValues>\n            5.1050621271133423e-01 2.5576829910278320e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 654 9.0274988906458020e-04</internalNodes>\n          <leafValues>\n            4.6969148516654968e-01 5.8618277311325073e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 655 1.1474450118839741e-02</internalNodes>\n          <leafValues>\n            5.0536459684371948e-01 1.5271779894828796e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 656 -6.7023430019617081e-03</internalNodes>\n          <leafValues>\n            6.5089809894561768e-01 4.8906040191650391e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 657 -2.0462959073483944e-03</internalNodes>\n          <leafValues>\n            6.2418168783187866e-01 4.5146000385284424e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 658 -9.9951568990945816e-03</internalNodes>\n          <leafValues>\n            3.4327811002731323e-01 5.4009538888931274e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 659 -3.5700708627700806e-02</internalNodes>\n          <leafValues>\n            1.8780590593814850e-01 5.0740778446197510e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 660 4.5584561303257942e-04</internalNodes>\n          <leafValues>\n            3.8052770495414734e-01 5.4025697708129883e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 661 -5.4260600358247757e-02</internalNodes>\n          <leafValues>\n            6.8437147140502930e-01 4.5950970053672791e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 662 6.0600461438298225e-03</internalNodes>\n          <leafValues>\n            5.5029052495956421e-01 4.5005279779434204e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 663 -6.4791832119226456e-03</internalNodes>\n          <leafValues>\n            3.3688580989837646e-01 5.3107571601867676e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 664 -1.4939469983801246e-03</internalNodes>\n          <leafValues>\n            6.4876401424407959e-01 4.7561758756637573e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 665 1.4610530342906713e-05</internalNodes>\n          <leafValues>\n            4.0345790982246399e-01 5.4510641098022461e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 666 -7.2321938350796700e-03</internalNodes>\n          <leafValues>\n            6.3868737220764160e-01 4.8247399926185608e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 667 -4.0645818226039410e-03</internalNodes>\n          <leafValues>\n            2.9864218831062317e-01 5.1573359966278076e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 668 3.0463080853223801e-02</internalNodes>\n          <leafValues>\n            5.0221997499465942e-01 7.1599560976028442e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 669 -8.0544911324977875e-03</internalNodes>\n          <leafValues>\n            6.4924520254135132e-01 4.6192750334739685e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 670 3.9505138993263245e-02</internalNodes>\n          <leafValues>\n            5.1505708694458008e-01 2.4506139755249023e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 671 8.4530208259820938e-03</internalNodes>\n          <leafValues>\n            4.5736691355705261e-01 6.3940370082855225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 672 -1.1688120430335402e-03</internalNodes>\n          <leafValues>\n            3.8655120134353638e-01 5.4836612939834595e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 673 2.8070670086890459e-03</internalNodes>\n          <leafValues>\n            5.1285791397094727e-01 2.7014800906181335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 674 4.7365209320560098e-04</internalNodes>\n          <leafValues>\n            4.0515819191932678e-01 5.3874611854553223e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 675 1.1741080321371555e-02</internalNodes>\n          <leafValues>\n            5.2959501743316650e-01 3.7194138765335083e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 676 3.1833238899707794e-03</internalNodes>\n          <leafValues>\n            4.7894069552421570e-01 6.8951261043548584e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 677 7.0241501089185476e-04</internalNodes>\n          <leafValues>\n            5.3844892978668213e-01 3.9180809259414673e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>102</maxWeakCount>\n      <stageThreshold>5.0169731140136719e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 678 1.7059929668903351e-02</internalNodes>\n          <leafValues>\n            3.9485278725624084e-01 7.1425348520278931e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 679 2.1840840578079224e-02</internalNodes>\n          <leafValues>\n            3.3703160285949707e-01 6.0900169610977173e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 680 2.4520049919374287e-04</internalNodes>\n          <leafValues>\n            3.5005760192871094e-01 5.9879022836685181e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 681 8.3272606134414673e-03</internalNodes>\n          <leafValues>\n            3.2675281167030334e-01 5.6972408294677734e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 682 5.7148298947140574e-04</internalNodes>\n          <leafValues>\n            3.0445998907089233e-01 5.5316567420959473e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 683 6.7373987985774875e-04</internalNodes>\n          <leafValues>\n            3.6500120162963867e-01 5.6726312637329102e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 684 3.4681590477703139e-05</internalNodes>\n          <leafValues>\n            3.3135411143302917e-01 5.3887271881103516e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 685 -5.8563398197293282e-03</internalNodes>\n          <leafValues>\n            2.6979428529739380e-01 5.4987788200378418e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 686 8.5102273151278496e-03</internalNodes>\n          <leafValues>\n            5.2693581581115723e-01 2.7628791332244873e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 687 -6.9817207753658295e-02</internalNodes>\n          <leafValues>\n            2.9096031188964844e-01 5.2592468261718750e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 688 -8.6113670840859413e-04</internalNodes>\n          <leafValues>\n            5.8925771713256836e-01 4.0736979246139526e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 689 9.7149249631911516e-04</internalNodes>\n          <leafValues>\n            3.5235640406608582e-01 5.4158622026443481e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 690 -1.4727490452060010e-05</internalNodes>\n          <leafValues>\n            5.4230177402496338e-01 3.5031560063362122e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 691 4.8420291393995285e-02</internalNodes>\n          <leafValues>\n            5.1939457654953003e-01 3.4111958742141724e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 692 1.3257140526548028e-03</internalNodes>\n          <leafValues>\n            3.1577691435813904e-01 5.3353762626647949e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 693 1.4922149603080470e-05</internalNodes>\n          <leafValues>\n            4.4512999057769775e-01 5.5365538597106934e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 694 -2.7173398993909359e-03</internalNodes>\n          <leafValues>\n            3.0317419767379761e-01 5.2480888366699219e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 695 2.9219500720500946e-03</internalNodes>\n          <leafValues>\n            4.7814530134201050e-01 6.6060417890548706e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 696 -1.9804988987743855e-03</internalNodes>\n          <leafValues>\n            3.1863081455230713e-01 5.2876251935958862e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 697 -4.0012109093368053e-03</internalNodes>\n          <leafValues>\n            6.4135968685150146e-01 4.7499281167984009e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 698 -4.3491991236805916e-03</internalNodes>\n          <leafValues>\n            1.5074980258941650e-01 5.0989967584609985e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 699 1.3490889687091112e-03</internalNodes>\n          <leafValues>\n            4.3161588907241821e-01 5.8811670541763306e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 700 1.8597070127725601e-02</internalNodes>\n          <leafValues>\n            4.7355538606643677e-01 9.0897941589355469e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 701 -1.8562379991635680e-03</internalNodes>\n          <leafValues>\n            3.5531890392303467e-01 5.5778372287750244e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 702 2.2940430790185928e-03</internalNodes>\n          <leafValues>\n            4.5000949501991272e-01 6.5808779001235962e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 703 2.9982850537635386e-04</internalNodes>\n          <leafValues>\n            5.6292420625686646e-01 3.9758789539337158e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 704 3.5455459728837013e-03</internalNodes>\n          <leafValues>\n            5.3815472126007080e-01 3.6054858565330505e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 705 9.6104722470045090e-03</internalNodes>\n          <leafValues>\n            5.2559971809387207e-01 1.7967459559440613e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 706 -6.2783220782876015e-03</internalNodes>\n          <leafValues>\n            2.2728569805622101e-01 5.1140302419662476e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 707 3.4598479978740215e-03</internalNodes>\n          <leafValues>\n            4.6263080835342407e-01 6.6082191467285156e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 708 -1.3112019514665008e-03</internalNodes>\n          <leafValues>\n            6.3175398111343384e-01 4.4368579983711243e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 709 2.6876179035753012e-03</internalNodes>\n          <leafValues>\n            5.4211097955703735e-01 4.0540221333503723e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 710 3.9118169806897640e-03</internalNodes>\n          <leafValues>\n            5.3584778308868408e-01 3.2734549045562744e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 711 -1.4206450432538986e-02</internalNodes>\n          <leafValues>\n            7.7935767173767090e-01 4.9757811427116394e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 712 7.1705528534948826e-04</internalNodes>\n          <leafValues>\n            5.2973198890686035e-01 3.5609039664268494e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 713 1.6635019565001130e-03</internalNodes>\n          <leafValues>\n            4.6780940890312195e-01 5.8164817094802856e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 714 3.3686188980937004e-03</internalNodes>\n          <leafValues>\n            5.2767342329025269e-01 3.4464201331138611e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 715 1.2799530290067196e-02</internalNodes>\n          <leafValues>\n            4.8346799612045288e-01 7.4721592664718628e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 716 3.3901201095432043e-03</internalNodes>\n          <leafValues>\n            4.5118591189384460e-01 6.4017212390899658e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 717 4.7070779837667942e-03</internalNodes>\n          <leafValues>\n            5.3356587886810303e-01 3.5552209615707397e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 718 1.4819339849054813e-03</internalNodes>\n          <leafValues>\n            4.2507070302963257e-01 5.7727241516113281e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 719 -6.9995759986341000e-03</internalNodes>\n          <leafValues>\n            3.0033200979232788e-01 5.2929002046585083e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 720 1.5939010307192802e-02</internalNodes>\n          <leafValues>\n            5.0673192739486694e-01 1.6755819320678711e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 721 7.6377349905669689e-03</internalNodes>\n          <leafValues>\n            4.7950699925422668e-01 7.0856010913848877e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 722 6.7334040068089962e-03</internalNodes>\n          <leafValues>\n            5.1331132650375366e-01 2.1624700725078583e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 723 -1.2858809903264046e-02</internalNodes>\n          <leafValues>\n            1.9388419389724731e-01 5.2513718605041504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 724 -6.2270800117403269e-04</internalNodes>\n          <leafValues>\n            5.6865382194519043e-01 4.1978681087493896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 725 -5.2651681471616030e-04</internalNodes>\n          <leafValues>\n            4.2241689562797546e-01 5.4296958446502686e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 726 1.1075099930167198e-02</internalNodes>\n          <leafValues>\n            5.1137751340866089e-01 2.5145179033279419e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 727 -3.6728251725435257e-02</internalNodes>\n          <leafValues>\n            7.1946620941162109e-01 4.8496189713478088e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 728 -2.8207109426148236e-04</internalNodes>\n          <leafValues>\n            3.8402619957923889e-01 5.3944462537765503e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 729 -2.7489690110087395e-03</internalNodes>\n          <leafValues>\n            5.9370887279510498e-01 4.5691820979118347e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 730 1.0047519579529762e-02</internalNodes>\n          <leafValues>\n            5.1385760307312012e-01 2.8022980690002441e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 731 -8.1497840583324432e-03</internalNodes>\n          <leafValues>\n            6.0900372266769409e-01 4.6361210942268372e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 732 -6.8833888508379459e-03</internalNodes>\n          <leafValues>\n            3.4586110711097717e-01 5.2546602487564087e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 733 -1.4039360394235700e-05</internalNodes>\n          <leafValues>\n            5.6931042671203613e-01 4.0820831060409546e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 734 1.5498419525101781e-03</internalNodes>\n          <leafValues>\n            4.3505370616912842e-01 5.8065170049667358e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 735 -6.7841499112546444e-03</internalNodes>\n          <leafValues>\n            1.4688730239868164e-01 5.1827752590179443e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 736 2.1705629478674382e-04</internalNodes>\n          <leafValues>\n            5.2935242652893066e-01 3.4561741352081299e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 737 3.1198898795992136e-04</internalNodes>\n          <leafValues>\n            4.6524509787559509e-01 5.9424138069152832e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 738 5.4507530294358730e-03</internalNodes>\n          <leafValues>\n            4.6535089612007141e-01 7.0248460769653320e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 739 -2.5818689027801156e-04</internalNodes>\n          <leafValues>\n            5.4972952604293823e-01 3.7689670920372009e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 740 -1.7442539334297180e-02</internalNodes>\n          <leafValues>\n            3.9190879464149475e-01 5.4574978351593018e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 741 -4.5343529433012009e-02</internalNodes>\n          <leafValues>\n            1.6313570737838745e-01 5.1549088954925537e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 742 1.9190689781680703e-03</internalNodes>\n          <leafValues>\n            5.1458978652954102e-01 2.7918958663940430e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 743 -6.0177869163453579e-03</internalNodes>\n          <leafValues>\n            6.5176361799240112e-01 4.7563329339027405e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 744 -4.0720738470554352e-03</internalNodes>\n          <leafValues>\n            5.5146527290344238e-01 4.0926858782768250e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 745 3.9855059003457427e-04</internalNodes>\n          <leafValues>\n            3.1652408838272095e-01 5.2855509519577026e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 746 -6.5418570302426815e-03</internalNodes>\n          <leafValues>\n            6.8533778190612793e-01 4.6528089046478271e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 747 3.4845089539885521e-03</internalNodes>\n          <leafValues>\n            5.4845881462097168e-01 4.5027598738670349e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 748 -1.3696780428290367e-02</internalNodes>\n          <leafValues>\n            6.3957798480987549e-01 4.5725551247596741e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 749 -1.7347140237689018e-02</internalNodes>\n          <leafValues>\n            2.7510729432106018e-01 5.1816147565841675e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 750 -4.0885428898036480e-03</internalNodes>\n          <leafValues>\n            3.3256360888481140e-01 5.1949840784072876e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 751 -9.4687901437282562e-03</internalNodes>\n          <leafValues>\n            5.9422808885574341e-01 4.8518198728561401e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 752 1.7084840219467878e-03</internalNodes>\n          <leafValues>\n            4.1671109199523926e-01 5.5198061466217041e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 753 9.4809094443917274e-03</internalNodes>\n          <leafValues>\n            5.4338949918746948e-01 4.2085149884223938e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 754 -4.7389650717377663e-03</internalNodes>\n          <leafValues>\n            6.4071899652481079e-01 4.5606550574302673e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 755 6.5761050209403038e-03</internalNodes>\n          <leafValues>\n            5.2145552635192871e-01 2.2582270205020905e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 756 -2.1690549328923225e-03</internalNodes>\n          <leafValues>\n            3.1515279412269592e-01 5.1567047834396362e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 757 1.4660170301795006e-02</internalNodes>\n          <leafValues>\n            4.8708370327949524e-01 6.6899412870407104e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 758 1.7231999663636088e-04</internalNodes>\n          <leafValues>\n            3.5697489976882935e-01 5.2510780096054077e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 759 -2.1803760901093483e-02</internalNodes>\n          <leafValues>\n            8.8259208202362061e-01 4.9663299322128296e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 760 -9.4736106693744659e-02</internalNodes>\n          <leafValues>\n            1.4461620151996613e-01 5.0611138343811035e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 761 5.5825551971793175e-03</internalNodes>\n          <leafValues>\n            5.3964787721633911e-01 4.2380660772323608e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 762 1.9517090404406190e-03</internalNodes>\n          <leafValues>\n            4.1704109311103821e-01 5.4977869987487793e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 763 1.2149900197982788e-02</internalNodes>\n          <leafValues>\n            4.6983671188354492e-01 5.6642740964889526e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 764 -7.5169620104134083e-03</internalNodes>\n          <leafValues>\n            6.2677729129791260e-01 4.4631358981132507e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 765 -7.1667909622192383e-02</internalNodes>\n          <leafValues>\n            3.0970111489295959e-01 5.2210032939910889e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 766 -8.8292419910430908e-02</internalNodes>\n          <leafValues>\n            8.1123888492584229e-02 5.0063651800155640e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 767 3.1063079833984375e-02</internalNodes>\n          <leafValues>\n            5.1555037498474121e-01 1.2822559475898743e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 768 4.6621840447187424e-02</internalNodes>\n          <leafValues>\n            4.6997779607772827e-01 7.3639607429504395e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 769 -1.2189489789307117e-02</internalNodes>\n          <leafValues>\n            3.9205300807952881e-01 5.5189967155456543e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 770 1.3016110286116600e-02</internalNodes>\n          <leafValues>\n            5.2606582641601562e-01 3.6851361393928528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 771 -3.4952899441123009e-03</internalNodes>\n          <leafValues>\n            6.3392949104309082e-01 4.7162809967994690e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 772 -4.4015039748046547e-05</internalNodes>\n          <leafValues>\n            5.3330272436141968e-01 3.7761849164962769e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 773 -1.0966490209102631e-01</internalNodes>\n          <leafValues>\n            1.7653420567512512e-01 5.1983469724655151e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 774 -9.0279558207839727e-04</internalNodes>\n          <leafValues>\n            5.3241598606109619e-01 3.8389080762863159e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 775 7.1126641705632210e-04</internalNodes>\n          <leafValues>\n            4.6479299664497375e-01 5.7552242279052734e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 776 -3.1250279862433672e-03</internalNodes>\n          <leafValues>\n            3.2367089390754700e-01 5.1667708158493042e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 777 2.4144679773598909e-03</internalNodes>\n          <leafValues>\n            4.7874391078948975e-01 6.4597177505493164e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 778 4.4391240226104856e-04</internalNodes>\n          <leafValues>\n            4.4093081355094910e-01 6.0102558135986328e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 779 -2.2611189342569560e-04</internalNodes>\n          <leafValues>\n            4.0381139516830444e-01 5.4932558536529541e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>135</maxWeakCount>\n      <stageThreshold>6.6669120788574219e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 780 -4.6901289373636246e-02</internalNodes>\n          <leafValues>\n            6.6001719236373901e-01 3.7438011169433594e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 781 -1.4568349579349160e-03</internalNodes>\n          <leafValues>\n            5.7839912176132202e-01 3.4377971291542053e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 782 5.5598369799554348e-03</internalNodes>\n          <leafValues>\n            3.6222669482231140e-01 5.9082162380218506e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 783 7.3170487303286791e-04</internalNodes>\n          <leafValues>\n            5.5004191398620605e-01 2.8735581040382385e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 784 1.3318009441718459e-03</internalNodes>\n          <leafValues>\n            2.6731699705123901e-01 5.4310190677642822e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 785 2.4347059661522508e-04</internalNodes>\n          <leafValues>\n            3.8550278544425964e-01 5.7413887977600098e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 786 -3.0512469820678234e-03</internalNodes>\n          <leafValues>\n            5.5032098293304443e-01 3.4628450870513916e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 787 -6.8657199153676629e-04</internalNodes>\n          <leafValues>\n            3.2912218570709229e-01 5.4295092821121216e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 788 1.4668200165033340e-03</internalNodes>\n          <leafValues>\n            3.5883820056915283e-01 5.3518110513687134e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 789 3.2021870720200241e-04</internalNodes>\n          <leafValues>\n            4.2968419194221497e-01 5.7002341747283936e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 790 7.4122188379988074e-04</internalNodes>\n          <leafValues>\n            5.2821648120880127e-01 3.3668708801269531e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 791 3.8330298848450184e-03</internalNodes>\n          <leafValues>\n            4.5595678687095642e-01 6.2573361396789551e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 792 -1.5456439927220345e-02</internalNodes>\n          <leafValues>\n            2.3501169681549072e-01 5.1294529438018799e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 793 2.6796779129654169e-03</internalNodes>\n          <leafValues>\n            5.3294152021408081e-01 4.1550621390342712e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 794 2.8296569362282753e-03</internalNodes>\n          <leafValues>\n            4.2730879783630371e-01 5.8045381307601929e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 795 -3.9444249123334885e-03</internalNodes>\n          <leafValues>\n            2.9126119613647461e-01 5.2026861906051636e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 796 2.7179559692740440e-03</internalNodes>\n          <leafValues>\n            5.3076881170272827e-01 3.5856771469116211e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 797 5.9077627956867218e-03</internalNodes>\n          <leafValues>\n            4.7037750482559204e-01 5.9415858983993530e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 798 -4.2240349575877190e-03</internalNodes>\n          <leafValues>\n            2.1415670216083527e-01 5.0887960195541382e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 799 4.0725888684391975e-03</internalNodes>\n          <leafValues>\n            4.7664138674736023e-01 6.8410611152648926e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 800 1.0149530135095119e-02</internalNodes>\n          <leafValues>\n            5.3607988357543945e-01 3.7484970688819885e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 801 -1.8864999583456665e-04</internalNodes>\n          <leafValues>\n            5.7201302051544189e-01 3.8538050651550293e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 802 -4.8864358104765415e-03</internalNodes>\n          <leafValues>\n            3.6931228637695312e-01 5.3409588336944580e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 803 2.6158479973673820e-02</internalNodes>\n          <leafValues>\n            4.9623748660087585e-01 6.0599899291992188e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 804 4.8560759751126170e-04</internalNodes>\n          <leafValues>\n            4.4389459490776062e-01 6.0124689340591431e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 805 1.1268709786236286e-02</internalNodes>\n          <leafValues>\n            5.2442502975463867e-01 1.8403880298137665e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 806 -2.8114619199186563e-03</internalNodes>\n          <leafValues>\n            6.0602837800979614e-01 4.4098970293998718e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 807 -5.6112729944288731e-03</internalNodes>\n          <leafValues>\n            3.8911709189414978e-01 5.5892372131347656e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 808 8.5680093616247177e-03</internalNodes>\n          <leafValues>\n            5.0693458318710327e-01 2.0626190304756165e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 809 -3.8172779022715986e-04</internalNodes>\n          <leafValues>\n            5.8822017908096313e-01 4.1926109790802002e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 810 -1.7680290329735726e-04</internalNodes>\n          <leafValues>\n            5.5336058139801025e-01 4.0033689141273499e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 811 6.5112537704408169e-03</internalNodes>\n          <leafValues>\n            3.3101469278335571e-01 5.4441910982131958e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 812 -6.5948683186434209e-05</internalNodes>\n          <leafValues>\n            5.4338318109512329e-01 3.9449059963226318e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 813 6.9939051754772663e-03</internalNodes>\n          <leafValues>\n            5.6003582477569580e-01 4.1927140951156616e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 814 -4.6744439750909805e-03</internalNodes>\n          <leafValues>\n            6.6854667663574219e-01 4.6049609780311584e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 815 1.1589850299060345e-02</internalNodes>\n          <leafValues>\n            5.3571212291717529e-01 2.9268300533294678e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 816 1.3007840141654015e-02</internalNodes>\n          <leafValues>\n            4.6798178553581238e-01 7.3074632883071899e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 817 -1.1008579749614000e-03</internalNodes>\n          <leafValues>\n            3.9375010132789612e-01 5.4150652885437012e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 818 6.0472649056464434e-04</internalNodes>\n          <leafValues>\n            4.2423760890960693e-01 5.6040412187576294e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 819 -1.4494840055704117e-02</internalNodes>\n          <leafValues>\n            3.6312100291252136e-01 5.2931827306747437e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 820 -5.3056948818266392e-03</internalNodes>\n          <leafValues>\n            6.8604522943496704e-01 4.6218210458755493e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 821 -8.1829127157106996e-04</internalNodes>\n          <leafValues>\n            3.9440968632698059e-01 5.4204392433166504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 822 -1.9077520817518234e-02</internalNodes>\n          <leafValues>\n            1.9626219570636749e-01 5.0378918647766113e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 823 3.5549470339901745e-04</internalNodes>\n          <leafValues>\n            4.0862590074539185e-01 5.6139731407165527e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 824 1.9679730758070946e-03</internalNodes>\n          <leafValues>\n            4.4891211390495300e-01 5.9261232614517212e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 825 6.9189141504466534e-03</internalNodes>\n          <leafValues>\n            5.3359258174896240e-01 3.7283858656883240e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 826 2.9872779268771410e-03</internalNodes>\n          <leafValues>\n            5.1113212108612061e-01 2.9756438732147217e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 827 -6.2264618463814259e-03</internalNodes>\n          <leafValues>\n            5.5414897203445435e-01 4.8245379328727722e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 828 1.3353300280869007e-02</internalNodes>\n          <leafValues>\n            4.5864239335060120e-01 6.4147979021072388e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 829 3.3505238592624664e-02</internalNodes>\n          <leafValues>\n            5.3924250602722168e-01 3.4299948811531067e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 830 -2.5294460356235504e-03</internalNodes>\n          <leafValues>\n            1.7037139832973480e-01 5.0133150815963745e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 831 -1.2801629491150379e-03</internalNodes>\n          <leafValues>\n            5.3054618835449219e-01 4.6974050998687744e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 832 7.0687388069927692e-03</internalNodes>\n          <leafValues>\n            4.6155458688735962e-01 6.4365047216415405e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 833 9.6880499040707946e-04</internalNodes>\n          <leafValues>\n            4.8335990309715271e-01 6.0438942909240723e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 834 3.9647659286856651e-03</internalNodes>\n          <leafValues>\n            5.1876372098922729e-01 3.2318168878555298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 835 -2.2057730704545975e-02</internalNodes>\n          <leafValues>\n            4.0792569518089294e-01 5.2009809017181396e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 836 -6.6906312713399529e-04</internalNodes>\n          <leafValues>\n            5.3316092491149902e-01 3.8156008720397949e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 837 -6.7009328631684184e-04</internalNodes>\n          <leafValues>\n            5.6554222106933594e-01 4.6889019012451172e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 838 7.4284552829340100e-04</internalNodes>\n          <leafValues>\n            4.5343810319900513e-01 6.2874001264572144e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 839 2.2227810695767403e-03</internalNodes>\n          <leafValues>\n            5.3506332635879517e-01 3.3036559820175171e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 840 -5.4130521602928638e-03</internalNodes>\n          <leafValues>\n            1.1136870086193085e-01 5.0054347515106201e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 841 -1.4520040167553816e-05</internalNodes>\n          <leafValues>\n            5.6287378072738647e-01 4.3251338601112366e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 842 2.3369169502984732e-04</internalNodes>\n          <leafValues>\n            4.1658350825309753e-01 5.4477912187576294e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 843 4.2894547805190086e-03</internalNodes>\n          <leafValues>\n            4.8603910207748413e-01 6.7786490917205811e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 844 5.9103150852024555e-03</internalNodes>\n          <leafValues>\n            5.2623051404953003e-01 3.6121138930320740e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 845 1.2900539673864841e-02</internalNodes>\n          <leafValues>\n            5.3193771839141846e-01 3.2502880692481995e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 846 4.6982979401946068e-03</internalNodes>\n          <leafValues>\n            4.6182450652122498e-01 6.6659259796142578e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 847 1.0439859703183174e-02</internalNodes>\n          <leafValues>\n            5.5056709051132202e-01 3.8836041092872620e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 848 3.0443191062659025e-03</internalNodes>\n          <leafValues>\n            4.6978530287742615e-01 7.3018449544906616e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 849 -6.1593751888722181e-04</internalNodes>\n          <leafValues>\n            3.8308390974998474e-01 5.4649841785430908e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 850 -3.4247159492224455e-03</internalNodes>\n          <leafValues>\n            2.5663000345230103e-01 5.0895309448242188e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 851 -9.3538565561175346e-03</internalNodes>\n          <leafValues>\n            6.4699661731719971e-01 4.9407958984375000e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 852 5.2338998764753342e-02</internalNodes>\n          <leafValues>\n            4.7459828853607178e-01 7.8787708282470703e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 853 3.5765620414167643e-03</internalNodes>\n          <leafValues>\n            5.3066647052764893e-01 2.7484980225563049e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 854 7.1555317845195532e-04</internalNodes>\n          <leafValues>\n            5.4131257534027100e-01 4.0419089794158936e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 855 -1.0516679845750332e-02</internalNodes>\n          <leafValues>\n            6.1585122346878052e-01 4.8152831196784973e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 856 7.7347927726805210e-03</internalNodes>\n          <leafValues>\n            4.6958059072494507e-01 7.0289808511734009e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 857 -4.3226778507232666e-03</internalNodes>\n          <leafValues>\n            2.8495660424232483e-01 5.3046840429306030e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 858 -2.5534399319440126e-03</internalNodes>\n          <leafValues>\n            7.0569849014282227e-01 4.6888920664787292e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 859 1.0268510231981054e-04</internalNodes>\n          <leafValues>\n            3.9029321074485779e-01 5.5734640359878540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 860 7.1395188570022583e-06</internalNodes>\n          <leafValues>\n            3.6842319369316101e-01 5.2639877796173096e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 861 -1.6711989883333445e-03</internalNodes>\n          <leafValues>\n            3.8491758704185486e-01 5.3872710466384888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 862 4.9260449595749378e-03</internalNodes>\n          <leafValues>\n            4.7297719120979309e-01 7.4472510814666748e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 863 4.3908702209591866e-03</internalNodes>\n          <leafValues>\n            4.8091810941696167e-01 5.5919218063354492e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 864 -1.7793629318475723e-02</internalNodes>\n          <leafValues>\n            6.9036781787872314e-01 4.6769270300865173e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 865 2.0469669252634048e-03</internalNodes>\n          <leafValues>\n            5.3706902265548706e-01 3.3081620931625366e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 866 2.9891489073634148e-02</internalNodes>\n          <leafValues>\n            5.1398652791976929e-01 3.3090591430664062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 867 1.5494900289922953e-03</internalNodes>\n          <leafValues>\n            4.6602371335029602e-01 6.0783427953720093e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 868 1.4956969534978271e-03</internalNodes>\n          <leafValues>\n            4.4048359990119934e-01 5.8639198541641235e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 869 9.5885928021743894e-04</internalNodes>\n          <leafValues>\n            5.4359710216522217e-01 4.2085230350494385e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 870 4.9643701640889049e-04</internalNodes>\n          <leafValues>\n            5.3705781698226929e-01 4.0006220340728760e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 871 -2.7280810754746199e-03</internalNodes>\n          <leafValues>\n            5.6594127416610718e-01 4.2596429586410522e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 872 2.3026480339467525e-03</internalNodes>\n          <leafValues>\n            5.1616579294204712e-01 3.3508691191673279e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 873 2.5151631236076355e-01</internalNodes>\n          <leafValues>\n            4.8696619272232056e-01 7.1473097801208496e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 874 -4.6328022144734859e-03</internalNodes>\n          <leafValues>\n            2.7274489402770996e-01 5.0837898254394531e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 875 -4.0434490889310837e-02</internalNodes>\n          <leafValues>\n            6.8514388799667358e-01 5.0217670202255249e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 876 1.4972220014897175e-05</internalNodes>\n          <leafValues>\n            4.2844650149345398e-01 5.5225551128387451e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 877 -2.4050309730228037e-04</internalNodes>\n          <leafValues>\n            4.2261189222335815e-01 5.3900748491287231e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 878 2.3657839745283127e-02</internalNodes>\n          <leafValues>\n            4.7446319460868835e-01 7.5043660402297974e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 879 -8.1449104472994804e-03</internalNodes>\n          <leafValues>\n            4.2450588941574097e-01 5.5383628606796265e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 880 -3.6992130335420370e-03</internalNodes>\n          <leafValues>\n            5.9523570537567139e-01 4.5297130942344666e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 881 -6.7718601785600185e-03</internalNodes>\n          <leafValues>\n            4.1377940773963928e-01 5.4733997583389282e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 882 4.2669530957937241e-03</internalNodes>\n          <leafValues>\n            4.4841149449348450e-01 5.7979941368103027e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 883 1.7791989957913756e-03</internalNodes>\n          <leafValues>\n            5.6248587369918823e-01 4.4324448704719543e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 884 1.6774770338088274e-03</internalNodes>\n          <leafValues>\n            4.6377518773078918e-01 6.3642418384552002e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 885 1.1732629500329494e-03</internalNodes>\n          <leafValues>\n            4.5445030927658081e-01 5.9144157171249390e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 886 8.6998171173036098e-04</internalNodes>\n          <leafValues>\n            5.3347527980804443e-01 3.8859179615974426e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 887 7.6378340600058436e-04</internalNodes>\n          <leafValues>\n            5.3985852003097534e-01 3.7449419498443604e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 888 1.5684569370932877e-04</internalNodes>\n          <leafValues>\n            4.3178731203079224e-01 5.6146162748336792e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 889 -2.1511370316147804e-02</internalNodes>\n          <leafValues>\n            1.7859250307083130e-01 5.1855427026748657e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 890 1.3081369979772717e-04</internalNodes>\n          <leafValues>\n            4.3424990773200989e-01 5.6828498840332031e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 891 2.1992040798068047e-02</internalNodes>\n          <leafValues>\n            5.1617169380187988e-01 2.3793940246105194e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 892 -8.0136500764638186e-04</internalNodes>\n          <leafValues>\n            5.9867632389068604e-01 4.4664269685745239e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 893 -8.2736099138855934e-03</internalNodes>\n          <leafValues>\n            4.1082179546356201e-01 5.2510571479797363e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 894 3.6831789184361696e-03</internalNodes>\n          <leafValues>\n            5.1738142967224121e-01 3.3975180983543396e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 895 -7.9525681212544441e-03</internalNodes>\n          <leafValues>\n            6.8889832496643066e-01 4.8459240794181824e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 896 1.5382299898192286e-03</internalNodes>\n          <leafValues>\n            5.1785671710968018e-01 3.4541139006614685e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 897 -1.4043530449271202e-02</internalNodes>\n          <leafValues>\n            1.6784210503101349e-01 5.1886677742004395e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 898 1.4315890148282051e-03</internalNodes>\n          <leafValues>\n            4.3682569265365601e-01 5.6557738780975342e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 899 -3.4014228731393814e-02</internalNodes>\n          <leafValues>\n            7.8022962808609009e-01 4.9592170119285583e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 900 -1.2027299962937832e-02</internalNodes>\n          <leafValues>\n            1.5851010382175446e-01 5.0322318077087402e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 901 1.3316619396209717e-01</internalNodes>\n          <leafValues>\n            5.1633048057556152e-01 2.7551281452178955e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 902 -1.5221949433907866e-03</internalNodes>\n          <leafValues>\n            3.7283179163932800e-01 5.2145522832870483e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 903 -9.3929271679371595e-04</internalNodes>\n          <leafValues>\n            5.8383792638778687e-01 4.5111650228500366e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 904 2.7719739824533463e-02</internalNodes>\n          <leafValues>\n            4.7282868623733521e-01 7.3315447568893433e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 905 3.1030150130391121e-03</internalNodes>\n          <leafValues>\n            5.3022021055221558e-01 4.1015630960464478e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 906 7.7861219644546509e-02</internalNodes>\n          <leafValues>\n            4.9983340501785278e-01 1.2729619443416595e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 907 -1.5854939818382263e-02</internalNodes>\n          <leafValues>\n            5.0833359360694885e-02 5.1656562089920044e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 908 -4.9725300632417202e-03</internalNodes>\n          <leafValues>\n            6.7981338500976562e-01 4.6842318773269653e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 909 -9.7676506265997887e-04</internalNodes>\n          <leafValues>\n            6.0107719898223877e-01 4.7889319062232971e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 910 -2.4647710379213095e-03</internalNodes>\n          <leafValues>\n            3.3933979272842407e-01 5.2205038070678711e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 911 -6.7937700077891350e-03</internalNodes>\n          <leafValues>\n            4.3651369214057922e-01 5.2396631240844727e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 912 3.2608021050691605e-02</internalNodes>\n          <leafValues>\n            5.0527238845825195e-01 2.4252149462699890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 913 -5.8514421107247472e-04</internalNodes>\n          <leafValues>\n            5.7339739799499512e-01 4.7585740685462952e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 914 -2.9632600024342537e-02</internalNodes>\n          <leafValues>\n            3.8922891020774841e-01 5.2635979652404785e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>137</maxWeakCount>\n      <stageThreshold>6.7698921203613281e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 915 4.6550851315259933e-02</internalNodes>\n          <leafValues>\n            3.2769501209259033e-01 6.2405228614807129e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 916 7.9537127166986465e-03</internalNodes>\n          <leafValues>\n            4.2564851045608521e-01 6.9429391622543335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 917 6.8221561377868056e-04</internalNodes>\n          <leafValues>\n            3.7114870548248291e-01 5.9007328748703003e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 918 -1.9348249770700932e-04</internalNodes>\n          <leafValues>\n            2.0411339402198792e-01 5.3005450963973999e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 919 -2.6710508973337710e-04</internalNodes>\n          <leafValues>\n            5.4161262512207031e-01 3.1031790375709534e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 920 2.7818060480058193e-03</internalNodes>\n          <leafValues>\n            5.2778327465057373e-01 3.4670698642730713e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 921 -4.6779078547842801e-04</internalNodes>\n          <leafValues>\n            5.3082311153411865e-01 3.2944920659065247e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 922 -3.0335160772665404e-05</internalNodes>\n          <leafValues>\n            5.7738727331161499e-01 3.8520970940589905e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 923 7.8038009814918041e-04</internalNodes>\n          <leafValues>\n            4.3174389004707336e-01 6.1500579118728638e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 924 -4.2553851380944252e-03</internalNodes>\n          <leafValues>\n            2.9339039325714111e-01 5.3242927789688110e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 925 -2.4735610350035131e-04</internalNodes>\n          <leafValues>\n            5.4688447713851929e-01 3.8430300354957581e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 926 -1.4724259381182492e-04</internalNodes>\n          <leafValues>\n            4.2815428972244263e-01 5.7555872201919556e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 927 1.1864770203828812e-03</internalNodes>\n          <leafValues>\n            3.7473011016845703e-01 5.4714661836624146e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 928 2.3936580400913954e-03</internalNodes>\n          <leafValues>\n            4.5377838611602783e-01 6.1115288734436035e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 929 -1.5390539774671197e-03</internalNodes>\n          <leafValues>\n            2.9713419079780579e-01 5.1895380020141602e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 930 -7.1968790143728256e-03</internalNodes>\n          <leafValues>\n            6.6990667581558228e-01 4.7264769673347473e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 931 -4.1499789222143590e-04</internalNodes>\n          <leafValues>\n            3.3849540352821350e-01 5.2603179216384888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 932 4.4359830208122730e-03</internalNodes>\n          <leafValues>\n            5.3991222381591797e-01 3.9201408624649048e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 933 2.6606200262904167e-03</internalNodes>\n          <leafValues>\n            4.4825780391693115e-01 6.1196178197860718e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 934 -1.5287200221791863e-03</internalNodes>\n          <leafValues>\n            3.7112379074096680e-01 5.3402662277221680e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 935 -4.7397250309586525e-03</internalNodes>\n          <leafValues>\n            6.0310882329940796e-01 4.4551450014114380e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 936 -1.4829129911959171e-02</internalNodes>\n          <leafValues>\n            2.8387540578842163e-01 5.3418618440628052e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 937 9.2275557108223438e-04</internalNodes>\n          <leafValues>\n            5.2095472812652588e-01 3.3616539835929871e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 938 8.3529807627201080e-02</internalNodes>\n          <leafValues>\n            5.1199698448181152e-01 8.1164449453353882e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 939 -7.5633148662745953e-04</internalNodes>\n          <leafValues>\n            3.3171200752258301e-01 5.1898312568664551e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 940 9.8403859883546829e-03</internalNodes>\n          <leafValues>\n            5.2475982904434204e-01 2.3349590599536896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 941 -1.5953830443322659e-03</internalNodes>\n          <leafValues>\n            5.7500940561294556e-01 4.2956221103668213e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 942 3.4766020689858124e-05</internalNodes>\n          <leafValues>\n            4.3424451351165771e-01 5.5640292167663574e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 943 2.9862910509109497e-02</internalNodes>\n          <leafValues>\n            4.5791471004486084e-01 6.5791881084442139e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 944 1.1325590312480927e-02</internalNodes>\n          <leafValues>\n            5.2743119001388550e-01 3.6738881468772888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 945 -8.7828645482659340e-03</internalNodes>\n          <leafValues>\n            7.1003687381744385e-01 4.6421670913696289e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 946 4.3639959767460823e-03</internalNodes>\n          <leafValues>\n            5.2792161703109741e-01 2.7058771252632141e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 947 4.1804728098213673e-03</internalNodes>\n          <leafValues>\n            5.0725251436233521e-01 2.4490830302238464e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 948 -4.5668511302210391e-04</internalNodes>\n          <leafValues>\n            4.2831051349639893e-01 5.5486911535263062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 949 -3.7140368949621916e-03</internalNodes>\n          <leafValues>\n            5.5193877220153809e-01 4.1036531329154968e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 950 -2.5304289534687996e-02</internalNodes>\n          <leafValues>\n            6.8670022487640381e-01 4.8698890209197998e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 951 -3.4454080741852522e-04</internalNodes>\n          <leafValues>\n            3.7288740277290344e-01 5.2876931428909302e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 952 -8.3935231668874621e-04</internalNodes>\n          <leafValues>\n            6.0601520538330078e-01 4.6160620450973511e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 953 1.7280049622058868e-02</internalNodes>\n          <leafValues>\n            5.0496357679367065e-01 1.8198239803314209e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 954 -6.3595077954232693e-03</internalNodes>\n          <leafValues>\n            1.6312399506568909e-01 5.2327787876129150e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 955 1.0298109846189618e-03</internalNodes>\n          <leafValues>\n            4.4632780551910400e-01 6.1765491962432861e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 956 1.0117109632119536e-03</internalNodes>\n          <leafValues>\n            5.4733848571777344e-01 4.3006989359855652e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 957 -1.0308800265192986e-02</internalNodes>\n          <leafValues>\n            1.1669850349426270e-01 5.0008672475814819e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 958 5.4682018235325813e-03</internalNodes>\n          <leafValues>\n            4.7692871093750000e-01 6.7192137241363525e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 959 -9.1696460731327534e-04</internalNodes>\n          <leafValues>\n            3.4710898995399475e-01 5.1781648397445679e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 960 2.3922820109874010e-03</internalNodes>\n          <leafValues>\n            4.7852361202239990e-01 6.2163108587265015e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 961 -7.5573818758130074e-03</internalNodes>\n          <leafValues>\n            5.8147960901260376e-01 4.4100850820541382e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 962 -7.7024032361805439e-04</internalNodes>\n          <leafValues>\n            3.8780000805854797e-01 5.4657220840454102e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 963 -8.7125990539789200e-03</internalNodes>\n          <leafValues>\n            1.6600510478019714e-01 4.9958360195159912e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 964 -1.0306320153176785e-02</internalNodes>\n          <leafValues>\n            4.0933910012245178e-01 5.2742338180541992e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 965 -2.0940979011356831e-03</internalNodes>\n          <leafValues>\n            6.2061947584152222e-01 4.5722800493240356e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 966 6.8099051713943481e-03</internalNodes>\n          <leafValues>\n            5.5677592754364014e-01 4.1556000709533691e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 967 -1.0746059706434608e-03</internalNodes>\n          <leafValues>\n            5.6389278173446655e-01 4.3530249595642090e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 968 2.1550289820879698e-03</internalNodes>\n          <leafValues>\n            4.8262658715248108e-01 6.7497581243515015e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 969 3.1742319464683533e-02</internalNodes>\n          <leafValues>\n            5.0483798980712891e-01 1.8832489848136902e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 970 -7.8382723033428192e-02</internalNodes>\n          <leafValues>\n            2.3695489764213562e-01 5.2601581811904907e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 971 5.7415119372308254e-03</internalNodes>\n          <leafValues>\n            5.0488287210464478e-01 2.7764698863029480e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 972 -2.9014600440859795e-03</internalNodes>\n          <leafValues>\n            6.2386047840118408e-01 4.6933171153068542e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 973 -2.6427931152284145e-03</internalNodes>\n          <leafValues>\n            3.3141419291496277e-01 5.1697772741317749e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 974 -1.0949660092592239e-01</internalNodes>\n          <leafValues>\n            2.3800450563430786e-01 5.1834410429000854e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 975 7.4075913289561868e-05</internalNodes>\n          <leafValues>\n            4.0696358680725098e-01 5.3621500730514526e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 976 -5.0593802006915212e-04</internalNodes>\n          <leafValues>\n            5.5067062377929688e-01 4.3745940923690796e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 977 -8.2131777890026569e-04</internalNodes>\n          <leafValues>\n            5.5257099866867065e-01 4.2093759775161743e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 978 -6.0276539443293586e-05</internalNodes>\n          <leafValues>\n            5.4554748535156250e-01 4.7482660412788391e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 979 6.8065142259001732e-03</internalNodes>\n          <leafValues>\n            5.1579958200454712e-01 3.4245771169662476e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 980 1.7202789895236492e-03</internalNodes>\n          <leafValues>\n            5.0132077932357788e-01 6.3312637805938721e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 981 -1.3016929733566940e-04</internalNodes>\n          <leafValues>\n            5.5397182703018188e-01 4.2268699407577515e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 982 -4.8016388900578022e-03</internalNodes>\n          <leafValues>\n            4.4250950217247009e-01 5.4307800531387329e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 983 -2.5399310979992151e-03</internalNodes>\n          <leafValues>\n            7.1457821130752563e-01 4.6976050734519958e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 984 -1.4278929447755218e-03</internalNodes>\n          <leafValues>\n            4.0704450011253357e-01 5.3996050357818604e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 985 -2.5142550468444824e-02</internalNodes>\n          <leafValues>\n            7.8846907615661621e-01 4.7473520040512085e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 986 -3.8899609353393316e-03</internalNodes>\n          <leafValues>\n            4.2961919307708740e-01 5.5771100521087646e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 987 4.3947459198534489e-03</internalNodes>\n          <leafValues>\n            4.6931621432304382e-01 7.0239442586898804e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 988 2.4678420275449753e-02</internalNodes>\n          <leafValues>\n            5.2423220872879028e-01 3.8125100731849670e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 989 3.8047678768634796e-02</internalNodes>\n          <leafValues>\n            5.0117397308349609e-01 1.6878280043601990e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 990 7.9424865543842316e-03</internalNodes>\n          <leafValues>\n            4.8285821080207825e-01 6.3695681095123291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 991 -1.5110049862414598e-03</internalNodes>\n          <leafValues>\n            5.9064859151840210e-01 4.4876679778099060e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 992 6.4201741479337215e-03</internalNodes>\n          <leafValues>\n            5.2410978078842163e-01 2.9905700683593750e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 993 -2.9802159406244755e-03</internalNodes>\n          <leafValues>\n            3.0414658784866333e-01 5.0784897804260254e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 994 -7.4580078944563866e-04</internalNodes>\n          <leafValues>\n            4.1281390190124512e-01 5.2568262815475464e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 995 -1.0470950044691563e-02</internalNodes>\n          <leafValues>\n            5.8083951473236084e-01 4.4942960143089294e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 996 9.3369204550981522e-03</internalNodes>\n          <leafValues>\n            5.2465528249740601e-01 2.6589488983154297e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 997 2.7936900034546852e-02</internalNodes>\n          <leafValues>\n            4.6749550104141235e-01 7.0872569084167480e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 998 7.4277678504586220e-03</internalNodes>\n          <leafValues>\n            5.4094868898391724e-01 3.7585180997848511e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 999 -2.3584509268403053e-02</internalNodes>\n          <leafValues>\n            3.7586399912834167e-01 5.2385509014129639e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1000 1.1452640173956752e-03</internalNodes>\n          <leafValues>\n            4.3295788764953613e-01 5.8042472600936890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1001 -4.3468660442158580e-04</internalNodes>\n          <leafValues>\n            5.2806180715560913e-01 3.8730698823928833e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1002 1.0648540221154690e-02</internalNodes>\n          <leafValues>\n            4.9021130800247192e-01 5.6812518835067749e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1003 -3.9418050437234342e-04</internalNodes>\n          <leafValues>\n            5.5708801746368408e-01 4.3182510137557983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1004 -1.3270479394122958e-04</internalNodes>\n          <leafValues>\n            5.6584399938583374e-01 4.3435549736022949e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1005 -2.0125510636717081e-03</internalNodes>\n          <leafValues>\n            6.0567390918731689e-01 4.5375239849090576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1006 2.4854319635778666e-03</internalNodes>\n          <leafValues>\n            5.3904771804809570e-01 4.1380101442337036e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1007 1.8237880431115627e-03</internalNodes>\n          <leafValues>\n            4.3548288941383362e-01 5.7171887159347534e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1008 -1.6656659543514252e-02</internalNodes>\n          <leafValues>\n            3.0109131336212158e-01 5.2161228656768799e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1009 8.0349558265879750e-04</internalNodes>\n          <leafValues>\n            5.3001511096954346e-01 3.8183969259262085e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1010 3.4170378930866718e-03</internalNodes>\n          <leafValues>\n            5.3280287981033325e-01 4.2414000630378723e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1011 -3.6222729249857366e-04</internalNodes>\n          <leafValues>\n            5.4917281866073608e-01 4.1869771480560303e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1012 -1.1630020290613174e-01</internalNodes>\n          <leafValues>\n            1.4407220482826233e-01 5.2264511585235596e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1013 -1.4695010147988796e-02</internalNodes>\n          <leafValues>\n            7.7477252483367920e-01 4.7157171368598938e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1014 2.1972130052745342e-03</internalNodes>\n          <leafValues>\n            5.3554338216781616e-01 3.3156448602676392e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1015 -4.6965209185145795e-04</internalNodes>\n          <leafValues>\n            5.7672351598739624e-01 4.4581368565559387e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1016 6.5144998952746391e-03</internalNodes>\n          <leafValues>\n            5.2156740427017212e-01 3.6478888988494873e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1017 2.1300060674548149e-02</internalNodes>\n          <leafValues>\n            4.9942049384117126e-01 1.5679509937763214e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1018 3.1881409231573343e-03</internalNodes>\n          <leafValues>\n            4.7422000765800476e-01 6.2872701883316040e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1019 9.0019777417182922e-04</internalNodes>\n          <leafValues>\n            5.3479540348052979e-01 3.9437520503997803e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1020 -5.1772277802228928e-03</internalNodes>\n          <leafValues>\n            6.7271918058395386e-01 5.0131380558013916e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1021 -4.3764649890363216e-03</internalNodes>\n          <leafValues>\n            3.1066751480102539e-01 5.1287931203842163e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1022 2.6299960445612669e-03</internalNodes>\n          <leafValues>\n            4.8863101005554199e-01 5.7552158832550049e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1023 -2.0458688959479332e-03</internalNodes>\n          <leafValues>\n            6.0257941484451294e-01 4.5580768585205078e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1024 6.9482706487178802e-02</internalNodes>\n          <leafValues>\n            5.2407479286193848e-01 2.1852590143680573e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1025 2.4048939347267151e-02</internalNodes>\n          <leafValues>\n            5.0118672847747803e-01 2.0906220376491547e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1026 3.1095340382307768e-03</internalNodes>\n          <leafValues>\n            4.8667120933532715e-01 7.1085482835769653e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1027 -1.2503260513767600e-03</internalNodes>\n          <leafValues>\n            3.4078910946846008e-01 5.1561951637268066e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1028 -1.0281190043315291e-03</internalNodes>\n          <leafValues>\n            5.5755722522735596e-01 4.4394320249557495e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1029 -8.8893622159957886e-03</internalNodes>\n          <leafValues>\n            6.4020007848739624e-01 4.6204420924186707e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1030 -6.1094801640138030e-04</internalNodes>\n          <leafValues>\n            3.7664419412612915e-01 5.4488998651504517e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1031 -5.7686357758939266e-03</internalNodes>\n          <leafValues>\n            3.3186489343643188e-01 5.1336771249771118e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1032 1.8506490159779787e-03</internalNodes>\n          <leafValues>\n            4.9035701155662537e-01 6.4069348573684692e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1033 -9.9799469113349915e-02</internalNodes>\n          <leafValues>\n            1.5360510349273682e-01 5.0155621767044067e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1034 -3.5128349065780640e-01</internalNodes>\n          <leafValues>\n            5.8823131024837494e-02 5.1743787527084351e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1035 -4.5244570821523666e-02</internalNodes>\n          <leafValues>\n            6.9614887237548828e-01 4.6778729557991028e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1036 7.1481578052043915e-02</internalNodes>\n          <leafValues>\n            5.1679861545562744e-01 1.0380929708480835e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1037 2.1895780228078365e-03</internalNodes>\n          <leafValues>\n            4.2730781435966492e-01 5.5320608615875244e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1038 -5.9242651332169771e-04</internalNodes>\n          <leafValues>\n            4.6389439702033997e-01 5.2763891220092773e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1039 1.6788389766588807e-03</internalNodes>\n          <leafValues>\n            5.3016489744186401e-01 3.9320349693298340e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1040 -2.2163488902151585e-03</internalNodes>\n          <leafValues>\n            5.6306940317153931e-01 4.7570338845252991e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1041 1.1568699846975505e-04</internalNodes>\n          <leafValues>\n            4.3075358867645264e-01 5.5357027053833008e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1042 -7.2017288766801357e-03</internalNodes>\n          <leafValues>\n            1.4448820054531097e-01 5.1930642127990723e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1043 8.9081272017210722e-04</internalNodes>\n          <leafValues>\n            4.3844321370124817e-01 5.5936211347579956e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1044 1.9605009583756328e-04</internalNodes>\n          <leafValues>\n            5.3404158353805542e-01 4.7059568762779236e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1045 5.2022142335772514e-04</internalNodes>\n          <leafValues>\n            5.2138561010360718e-01 3.8100790977478027e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1046 9.4588572392240167e-04</internalNodes>\n          <leafValues>\n            4.7694149613380432e-01 6.1307388544082642e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1047 9.1698471806012094e-05</internalNodes>\n          <leafValues>\n            4.2450091242790222e-01 5.4293632507324219e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1048 2.1833200007677078e-03</internalNodes>\n          <leafValues>\n            5.4577308893203735e-01 4.1910758614540100e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1049 -8.6039671441540122e-04</internalNodes>\n          <leafValues>\n            5.7645887136459351e-01 4.4716599583625793e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1050 -1.3236239552497864e-02</internalNodes>\n          <leafValues>\n            6.3728231191635132e-01 4.6950098872184753e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1051 4.3376701069064438e-04</internalNodes>\n          <leafValues>\n            5.3178739547729492e-01 3.9458298683166504e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>140</maxWeakCount>\n      <stageThreshold>6.9229873657226562e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1052 -2.4847149848937988e-02</internalNodes>\n          <leafValues>\n            6.5555167198181152e-01 3.8733118772506714e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1053 6.1348611488938332e-03</internalNodes>\n          <leafValues>\n            3.7480720877647400e-01 5.9739977121353149e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1054 6.4498498104512691e-03</internalNodes>\n          <leafValues>\n            5.4254919290542603e-01 2.5488111376762390e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1055 6.3491211039945483e-04</internalNodes>\n          <leafValues>\n            2.4624420702457428e-01 5.3872537612915039e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1056 1.4023890253156424e-03</internalNodes>\n          <leafValues>\n            5.5943220853805542e-01 3.5286578536033630e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1057 3.0044000595808029e-04</internalNodes>\n          <leafValues>\n            3.9585039019584656e-01 5.7659381628036499e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1058 1.0042409849120304e-04</internalNodes>\n          <leafValues>\n            3.6989969015121460e-01 5.5349981784820557e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1059 -5.0841490738093853e-03</internalNodes>\n          <leafValues>\n            3.7110909819602966e-01 5.5478000640869141e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1060 -1.9537260755896568e-02</internalNodes>\n          <leafValues>\n            7.4927550554275513e-01 4.5792970061302185e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1061 -7.4532740654831287e-06</internalNodes>\n          <leafValues>\n            5.6497871875762939e-01 3.9040699601173401e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1062 -3.6079459823668003e-03</internalNodes>\n          <leafValues>\n            3.3810880780220032e-01 5.2678012847900391e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1063 2.0697501022368670e-03</internalNodes>\n          <leafValues>\n            5.5192911624908447e-01 3.7143889069557190e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1064 -4.6463840408250690e-04</internalNodes>\n          <leafValues>\n            5.6082147359848022e-01 4.1135668754577637e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1065 7.5490452582016587e-04</internalNodes>\n          <leafValues>\n            3.5592061281204224e-01 5.3293561935424805e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1066 -9.8322238773107529e-04</internalNodes>\n          <leafValues>\n            5.4147958755493164e-01 3.7632051110267639e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1067 -1.9940640777349472e-02</internalNodes>\n          <leafValues>\n            6.3479030132293701e-01 4.7052991390228271e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1068 3.7680300883948803e-03</internalNodes>\n          <leafValues>\n            3.9134898781776428e-01 5.5637162923812866e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1069 -9.4528505578637123e-03</internalNodes>\n          <leafValues>\n            2.5548928976058960e-01 5.2151167392730713e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1070 2.9560849070549011e-03</internalNodes>\n          <leafValues>\n            5.1746791601181030e-01 3.0639201402664185e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1071 9.1078737750649452e-03</internalNodes>\n          <leafValues>\n            5.3884482383728027e-01 2.8859630227088928e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1072 1.8219229532405734e-03</internalNodes>\n          <leafValues>\n            4.3360430002212524e-01 5.8521968126296997e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1073 1.4688739553093910e-02</internalNodes>\n          <leafValues>\n            5.2873617410659790e-01 2.8700059652328491e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1074 -1.4387990348041058e-02</internalNodes>\n          <leafValues>\n            7.0194488763809204e-01 4.6473708748817444e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1075 -1.8986649811267853e-02</internalNodes>\n          <leafValues>\n            2.9865521192550659e-01 5.2470117807388306e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1076 1.1527639580890536e-03</internalNodes>\n          <leafValues>\n            4.3234738707542419e-01 5.9316617250442505e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1077 1.0933670215308666e-02</internalNodes>\n          <leafValues>\n            5.2868640422821045e-01 3.1303191184997559e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1078 -1.4932730235159397e-02</internalNodes>\n          <leafValues>\n            2.6584190130233765e-01 5.0840771198272705e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1079 -2.9970539617352188e-04</internalNodes>\n          <leafValues>\n            5.4635268449783325e-01 3.7407240271568298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1080 4.1677621193230152e-03</internalNodes>\n          <leafValues>\n            4.7034969925880432e-01 7.4357217550277710e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1081 -6.3905320130288601e-03</internalNodes>\n          <leafValues>\n            2.0692589879035950e-01 5.2805382013320923e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1082 4.5029609464108944e-03</internalNodes>\n          <leafValues>\n            5.1826488971710205e-01 3.4835430979728699e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1083 -9.2040365561842918e-03</internalNodes>\n          <leafValues>\n            6.8037772178649902e-01 4.9323600530624390e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1084 8.1327259540557861e-02</internalNodes>\n          <leafValues>\n            5.0583988428115845e-01 2.2530519962310791e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1085 -1.5079280734062195e-01</internalNodes>\n          <leafValues>\n            2.9634249210357666e-01 5.2646797895431519e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1086 3.3179009333252907e-03</internalNodes>\n          <leafValues>\n            4.6554958820343018e-01 7.0729321241378784e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1087 7.7402801252901554e-04</internalNodes>\n          <leafValues>\n            4.7803479433059692e-01 5.6682378053665161e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1088 6.8199541419744492e-04</internalNodes>\n          <leafValues>\n            4.2869961261749268e-01 5.7221567630767822e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1089 5.3671570494771004e-03</internalNodes>\n          <leafValues>\n            5.2993071079254150e-01 3.1146219372749329e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1090 9.7018666565418243e-05</internalNodes>\n          <leafValues>\n            3.6746388673782349e-01 5.2694618701934814e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1091 -1.2534089386463165e-01</internalNodes>\n          <leafValues>\n            2.3514920473098755e-01 5.2457910776138306e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1092 -5.2516269497573376e-03</internalNodes>\n          <leafValues>\n            7.1159368753433228e-01 4.6937671303749084e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1093 -7.8342109918594360e-03</internalNodes>\n          <leafValues>\n            4.4626510143280029e-01 5.4090857505798340e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1094 -1.1310069821774960e-03</internalNodes>\n          <leafValues>\n            5.9456187486648560e-01 4.4176620244979858e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1095 1.7601120052859187e-03</internalNodes>\n          <leafValues>\n            5.3532499074935913e-01 3.9734530448913574e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1096 -8.1581249833106995e-04</internalNodes>\n          <leafValues>\n            3.7602680921554565e-01 5.2647268772125244e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1097 -3.8687589112669230e-03</internalNodes>\n          <leafValues>\n            6.3099128007888794e-01 4.7498199343681335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1098 1.5207129763439298e-03</internalNodes>\n          <leafValues>\n            5.2301818132400513e-01 3.3612239360809326e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1099 5.4586738348007202e-01</internalNodes>\n          <leafValues>\n            5.1671397686004639e-01 1.1726350337266922e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1100 1.5650190412998199e-02</internalNodes>\n          <leafValues>\n            4.9794390797615051e-01 1.3932949304580688e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1101 -1.1731860227882862e-02</internalNodes>\n          <leafValues>\n            7.1296507120132446e-01 4.9211961030960083e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1102 -6.1765122227370739e-03</internalNodes>\n          <leafValues>\n            2.2881029546260834e-01 5.0497019290924072e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1103 2.2457661107182503e-03</internalNodes>\n          <leafValues>\n            4.6324339509010315e-01 6.0487258434295654e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1104 -5.1915869116783142e-03</internalNodes>\n          <leafValues>\n            6.4674210548400879e-01 4.6021929383277893e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1105 -2.3827880620956421e-02</internalNodes>\n          <leafValues>\n            1.4820009469985962e-01 5.2260792255401611e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1106 1.0284580057486892e-03</internalNodes>\n          <leafValues>\n            5.1354891061782837e-01 3.3759570121765137e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1107 -1.0078850202262402e-02</internalNodes>\n          <leafValues>\n            2.7405610680580139e-01 5.3035670518875122e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1108 2.6168930344283581e-03</internalNodes>\n          <leafValues>\n            5.3326708078384399e-01 3.9724540710449219e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1109 5.4385367548093200e-04</internalNodes>\n          <leafValues>\n            5.3656041622161865e-01 4.0634119510650635e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1110 5.3510512225329876e-03</internalNodes>\n          <leafValues>\n            4.6537590026855469e-01 6.8890458345413208e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1111 -1.5274790348485112e-03</internalNodes>\n          <leafValues>\n            5.4495012760162354e-01 3.6247238516807556e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1112 -8.0624416470527649e-02</internalNodes>\n          <leafValues>\n            1.6560870409011841e-01 5.0002872943878174e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1113 2.2192029282450676e-02</internalNodes>\n          <leafValues>\n            5.1327311992645264e-01 2.0028080046176910e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1114 7.3100631125271320e-03</internalNodes>\n          <leafValues>\n            4.6179479360580444e-01 6.3665360212326050e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1115 -6.4063072204589844e-03</internalNodes>\n          <leafValues>\n            5.9162509441375732e-01 4.8678609728813171e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1116 -7.6415040530264378e-04</internalNodes>\n          <leafValues>\n            3.8884091377258301e-01 5.3157979249954224e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1117 7.6734489994123578e-04</internalNodes>\n          <leafValues>\n            4.1590648889541626e-01 5.6052798032760620e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1118 6.1474501853808761e-04</internalNodes>\n          <leafValues>\n            3.0890220403671265e-01 5.1201480627059937e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1119 -5.0105270929634571e-03</internalNodes>\n          <leafValues>\n            3.9721998572349548e-01 5.2073061466217041e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1120 -8.6909132078289986e-03</internalNodes>\n          <leafValues>\n            6.2574082612991333e-01 4.6085759997367859e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1121 -1.6391459852457047e-02</internalNodes>\n          <leafValues>\n            2.0852099359035492e-01 5.2422660589218140e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1122 4.0973909199237823e-04</internalNodes>\n          <leafValues>\n            5.2224272489547729e-01 3.7803208827972412e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1123 -2.5242289993911982e-03</internalNodes>\n          <leafValues>\n            5.8039271831512451e-01 4.6118900179862976e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1124 5.0945312250405550e-04</internalNodes>\n          <leafValues>\n            4.4012719392776489e-01 5.8460158109664917e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1125 1.9656419754028320e-03</internalNodes>\n          <leafValues>\n            5.3223252296447754e-01 4.1845908761024475e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1126 5.6298897834494710e-04</internalNodes>\n          <leafValues>\n            3.7418448925018311e-01 5.2345657348632812e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1127 -6.7946797935292125e-04</internalNodes>\n          <leafValues>\n            4.6310418844223022e-01 5.3564780950546265e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1128 7.2856349870562553e-03</internalNodes>\n          <leafValues>\n            5.0446701049804688e-01 2.3775640130043030e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1129 -1.7459489405155182e-02</internalNodes>\n          <leafValues>\n            7.2891211509704590e-01 5.0504350662231445e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1130 -2.5421749800443649e-02</internalNodes>\n          <leafValues>\n            6.6671347618103027e-01 4.6781000494956970e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1131 -1.5647639520466328e-03</internalNodes>\n          <leafValues>\n            4.3917590379714966e-01 5.3236269950866699e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1132 1.1444360017776489e-02</internalNodes>\n          <leafValues>\n            4.3464401364326477e-01 5.6800121068954468e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1133 -6.7352550104260445e-04</internalNodes>\n          <leafValues>\n            4.4771409034729004e-01 5.2968120574951172e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1134 9.3194209039211273e-03</internalNodes>\n          <leafValues>\n            4.7402000427246094e-01 7.4626070261001587e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1135 1.3328490604180843e-04</internalNodes>\n          <leafValues>\n            5.3650617599487305e-01 4.7521349787712097e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1136 -7.8815799206495285e-03</internalNodes>\n          <leafValues>\n            1.7522190511226654e-01 5.0152552127838135e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1137 -5.7985680177807808e-03</internalNodes>\n          <leafValues>\n            7.2712367773056030e-01 4.8962008953094482e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1138 -3.8922499516047537e-04</internalNodes>\n          <leafValues>\n            4.0039089322090149e-01 5.3449410200119019e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1139 -1.9288610201328993e-03</internalNodes>\n          <leafValues>\n            5.6056129932403564e-01 4.8039558529853821e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1140 8.4214154630899429e-03</internalNodes>\n          <leafValues>\n            4.7532469034194946e-01 7.6236087083816528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1141 8.1655876711010933e-03</internalNodes>\n          <leafValues>\n            5.3932619094848633e-01 4.1916438937187195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1142 4.8280550981871784e-04</internalNodes>\n          <leafValues>\n            4.2408001422882080e-01 5.3998219966888428e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1143 -2.7186630759388208e-03</internalNodes>\n          <leafValues>\n            4.2445999383926392e-01 5.4249238967895508e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1144 -1.2507230043411255e-02</internalNodes>\n          <leafValues>\n            5.8958417177200317e-01 4.5504111051559448e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1145 -2.4286519736051559e-02</internalNodes>\n          <leafValues>\n            2.6471349596977234e-01 5.1891797780990601e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1146 -2.9676330741494894e-03</internalNodes>\n          <leafValues>\n            7.3476827144622803e-01 4.7497498989105225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1147 -1.2528999708592892e-02</internalNodes>\n          <leafValues>\n            2.7560499310493469e-01 5.1775997877120972e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1148 -1.0104000102728605e-03</internalNodes>\n          <leafValues>\n            3.5105609893798828e-01 5.1447242498397827e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1149 -2.1348530426621437e-03</internalNodes>\n          <leafValues>\n            5.6379258632659912e-01 4.6673199534416199e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1150 1.9564259797334671e-02</internalNodes>\n          <leafValues>\n            4.6145731210708618e-01 6.1376398801803589e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1151 -9.7146347165107727e-02</internalNodes>\n          <leafValues>\n            2.9983788728713989e-01 5.1935559511184692e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1152 4.5014568604528904e-03</internalNodes>\n          <leafValues>\n            5.0778847932815552e-01 3.0457559227943420e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1153 6.3706971704959869e-03</internalNodes>\n          <leafValues>\n            4.8610189557075500e-01 6.8875008821487427e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1154 -9.0721528977155685e-03</internalNodes>\n          <leafValues>\n            1.6733959317207336e-01 5.0175631046295166e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1155 -5.3537208586931229e-03</internalNodes>\n          <leafValues>\n            2.6927569508552551e-01 5.2426332235336304e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1156 -1.0932840406894684e-02</internalNodes>\n          <leafValues>\n            7.1838641166687012e-01 4.7360289096832275e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1157 8.2356072962284088e-03</internalNodes>\n          <leafValues>\n            5.2239668369293213e-01 2.3898629844188690e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1158 -1.0038160253316164e-03</internalNodes>\n          <leafValues>\n            5.7193559408187866e-01 4.4339430332183838e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1159 4.0859128348529339e-03</internalNodes>\n          <leafValues>\n            5.4728418588638306e-01 4.1488361358642578e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1160 1.5485419332981110e-01</internalNodes>\n          <leafValues>\n            4.9738121032714844e-01 6.1061598360538483e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1161 2.0897459762636572e-04</internalNodes>\n          <leafValues>\n            4.7091740369796753e-01 5.4238891601562500e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1162 3.3316991175524890e-04</internalNodes>\n          <leafValues>\n            4.0896269679069519e-01 5.3009921312332153e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1163 -1.0813400149345398e-02</internalNodes>\n          <leafValues>\n            6.1043697595596313e-01 4.9573341012001038e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1164 4.5656010508537292e-02</internalNodes>\n          <leafValues>\n            5.0696891546249390e-01 2.8666600584983826e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1165 1.2569549726322293e-03</internalNodes>\n          <leafValues>\n            4.8469170928001404e-01 6.3181710243225098e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1166 -1.2015070021152496e-01</internalNodes>\n          <leafValues>\n            6.0526140034198761e-02 4.9809598922729492e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1167 -1.0533799650147557e-04</internalNodes>\n          <leafValues>\n            5.3631097078323364e-01 4.7080421447753906e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1168 -2.0703190565109253e-01</internalNodes>\n          <leafValues>\n            5.9660330414772034e-02 4.9790981411933899e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1169 1.2909180077258497e-04</internalNodes>\n          <leafValues>\n            4.7129771113395691e-01 5.3779977560043335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1170 3.8818528992123902e-04</internalNodes>\n          <leafValues>\n            4.3635380268096924e-01 5.5341911315917969e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1171 -2.9243610333651304e-03</internalNodes>\n          <leafValues>\n            5.8111858367919922e-01 4.8252159357070923e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1172 8.3882332546636462e-04</internalNodes>\n          <leafValues>\n            5.3117001056671143e-01 4.0381389856338501e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1173 -1.9061550265178084e-03</internalNodes>\n          <leafValues>\n            3.7707018852233887e-01 5.2600151300430298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1174 8.9514348655939102e-03</internalNodes>\n          <leafValues>\n            4.7661679983139038e-01 7.6821839809417725e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1175 1.3083459809422493e-02</internalNodes>\n          <leafValues>\n            5.2644628286361694e-01 3.0622220039367676e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1176 -2.1159330010414124e-01</internalNodes>\n          <leafValues>\n            6.7371982336044312e-01 4.6958100795745850e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1177 3.1493250280618668e-03</internalNodes>\n          <leafValues>\n            5.6448352336883545e-01 4.3869531154632568e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1178 3.9754100725986063e-04</internalNodes>\n          <leafValues>\n            4.5260611176490784e-01 5.8956301212310791e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1179 -1.3814480043947697e-03</internalNodes>\n          <leafValues>\n            6.0705822706222534e-01 4.9424138665199280e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1180 -5.8122188784182072e-04</internalNodes>\n          <leafValues>\n            5.9982132911682129e-01 4.5082521438598633e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1181 -2.3905329871922731e-03</internalNodes>\n          <leafValues>\n            4.2055889964103699e-01 5.2238482236862183e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1182 2.7268929407000542e-02</internalNodes>\n          <leafValues>\n            5.2064472436904907e-01 3.5633018612861633e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1183 -3.7658358924090862e-03</internalNodes>\n          <leafValues>\n            3.1447041034698486e-01 5.2188140153884888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1184 -1.4903489500284195e-03</internalNodes>\n          <leafValues>\n            3.3801960945129395e-01 5.1244372129440308e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1185 -1.7428230494260788e-02</internalNodes>\n          <leafValues>\n            5.8299607038497925e-01 4.9197259545326233e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1186 -1.5278030186891556e-02</internalNodes>\n          <leafValues>\n            6.1631447076797485e-01 4.6178871393203735e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1187 3.1995609402656555e-02</internalNodes>\n          <leafValues>\n            5.1663571596145630e-01 1.7127640545368195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1188 -3.8256710395216942e-03</internalNodes>\n          <leafValues>\n            3.4080120921134949e-01 5.1313877105712891e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1189 -8.5186436772346497e-03</internalNodes>\n          <leafValues>\n            6.1055189371109009e-01 4.9979418516159058e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1190 9.0641621500253677e-04</internalNodes>\n          <leafValues>\n            4.3272709846496582e-01 5.5823111534118652e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1191 1.0344849899411201e-02</internalNodes>\n          <leafValues>\n            4.8556530475616455e-01 5.4524201154708862e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>160</maxWeakCount>\n      <stageThreshold>7.9249076843261719e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1192 7.8981826081871986e-03</internalNodes>\n          <leafValues>\n            3.3325248956680298e-01 5.9464621543884277e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1193 1.6170160379260778e-03</internalNodes>\n          <leafValues>\n            3.4906411170959473e-01 5.5778688192367554e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1194 -5.5449741194024682e-04</internalNodes>\n          <leafValues>\n            5.5425661802291870e-01 3.2915300130844116e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1195 1.5428980113938451e-03</internalNodes>\n          <leafValues>\n            3.6125791072845459e-01 5.5459791421890259e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1196 -1.0329450014978647e-03</internalNodes>\n          <leafValues>\n            3.5301390290260315e-01 5.5761402845382690e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1197 7.7698158565908670e-04</internalNodes>\n          <leafValues>\n            3.9167788624763489e-01 5.6453210115432739e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1198 1.4320300519466400e-01</internalNodes>\n          <leafValues>\n            4.6674820780754089e-01 7.0236331224441528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1199 -7.3866490274667740e-03</internalNodes>\n          <leafValues>\n            3.0736848711967468e-01 5.2892577648162842e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1200 -6.2936742324382067e-04</internalNodes>\n          <leafValues>\n            5.6221181154251099e-01 4.0370491147041321e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1201 7.8893528552725911e-04</internalNodes>\n          <leafValues>\n            5.2676612138748169e-01 3.5578748583793640e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1202 -1.2228050269186497e-02</internalNodes>\n          <leafValues>\n            6.6683208942413330e-01 4.6255499124526978e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1203 3.5420239437371492e-03</internalNodes>\n          <leafValues>\n            5.5214381217956543e-01 3.8696730136871338e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1204 -1.0585320414975286e-03</internalNodes>\n          <leafValues>\n            3.6286780238151550e-01 5.3209269046783447e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1205 1.4935660146875307e-05</internalNodes>\n          <leafValues>\n            4.6324449777603149e-01 5.3633230924606323e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1206 5.2537708543241024e-03</internalNodes>\n          <leafValues>\n            5.1322317123413086e-01 3.2657089829444885e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1207 -8.2338023930788040e-03</internalNodes>\n          <leafValues>\n            6.6936898231506348e-01 4.7741401195526123e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1208 2.1866810129722580e-05</internalNodes>\n          <leafValues>\n            4.0538620948791504e-01 5.4579311609268188e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1209 -3.8150229956954718e-03</internalNodes>\n          <leafValues>\n            6.4549958705902100e-01 4.7931781411170959e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1210 1.1105879675596952e-03</internalNodes>\n          <leafValues>\n            5.2704071998596191e-01 3.5296788811683655e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1211 -5.7707689702510834e-03</internalNodes>\n          <leafValues>\n            3.8035470247268677e-01 5.3529578447341919e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1212 -3.0158339068293571e-03</internalNodes>\n          <leafValues>\n            5.3394031524658203e-01 3.8871330022811890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1213 -8.5453689098358154e-04</internalNodes>\n          <leafValues>\n            3.5646161437034607e-01 5.2736037969589233e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1214 1.1050510220229626e-02</internalNodes>\n          <leafValues>\n            4.6719071269035339e-01 6.8497377634048462e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1215 4.2605839669704437e-02</internalNodes>\n          <leafValues>\n            5.1514732837677002e-01 7.0220090448856354e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1216 -3.0781750101596117e-03</internalNodes>\n          <leafValues>\n            3.0416610836982727e-01 5.1526021957397461e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1217 -5.4815728217363358e-03</internalNodes>\n          <leafValues>\n            6.4302957057952881e-01 4.8972299695014954e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1218 3.1881860923022032e-03</internalNodes>\n          <leafValues>\n            5.3074932098388672e-01 3.8262099027633667e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1219 3.5947180003859103e-04</internalNodes>\n          <leafValues>\n            4.6500471234321594e-01 5.4219049215316772e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1220 -4.0705031715333462e-03</internalNodes>\n          <leafValues>\n            2.8496798872947693e-01 5.0791162252426147e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1221 -1.4594170264899731e-02</internalNodes>\n          <leafValues>\n            2.9716458916664124e-01 5.1284617185592651e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1222 -1.1947689927183092e-04</internalNodes>\n          <leafValues>\n            5.6310981512069702e-01 4.3430820107460022e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1223 -6.9344649091362953e-04</internalNodes>\n          <leafValues>\n            4.4035780429840088e-01 5.3599590063095093e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1224 1.4834799912932795e-05</internalNodes>\n          <leafValues>\n            3.4210088849067688e-01 5.1646977663040161e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1225 9.0296985581517220e-03</internalNodes>\n          <leafValues>\n            4.6393430233001709e-01 6.1140751838684082e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1226 -8.0640818923711777e-03</internalNodes>\n          <leafValues>\n            2.8201588988304138e-01 5.0754940509796143e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1227 2.6062119752168655e-02</internalNodes>\n          <leafValues>\n            5.2089059352874756e-01 2.6887780427932739e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1228 1.7314659431576729e-02</internalNodes>\n          <leafValues>\n            4.6637138724327087e-01 6.7385399341583252e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1229 2.2666640579700470e-02</internalNodes>\n          <leafValues>\n            5.2093499898910522e-01 2.2127239406108856e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1230 -2.1965929772704840e-03</internalNodes>\n          <leafValues>\n            6.0631012916564941e-01 4.5381900668144226e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1231 -9.5282476395368576e-03</internalNodes>\n          <leafValues>\n            4.6352049708366394e-01 5.2474308013916016e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1232 8.0943619832396507e-03</internalNodes>\n          <leafValues>\n            5.2894401550292969e-01 3.9138820767402649e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1233 -7.2877332568168640e-02</internalNodes>\n          <leafValues>\n            7.7520018815994263e-01 4.9902349710464478e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1234 -6.9009521976113319e-03</internalNodes>\n          <leafValues>\n            2.4280390143394470e-01 5.0480902194976807e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1235 -1.1308239772915840e-02</internalNodes>\n          <leafValues>\n            5.7343649864196777e-01 4.8423761129379272e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1236 5.9613201767206192e-02</internalNodes>\n          <leafValues>\n            5.0298362970352173e-01 2.5249770283699036e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1237 -2.8624620754271746e-03</internalNodes>\n          <leafValues>\n            6.0730451345443726e-01 4.8984599113464355e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1238 4.4781449250876904e-03</internalNodes>\n          <leafValues>\n            5.0152891874313354e-01 2.2203169763088226e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1239 -1.7513240454718471e-03</internalNodes>\n          <leafValues>\n            6.6144287586212158e-01 4.9338689446449280e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1240 4.0163420140743256e-02</internalNodes>\n          <leafValues>\n            5.1808780431747437e-01 3.7410449981689453e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1241 3.4768949262797832e-04</internalNodes>\n          <leafValues>\n            4.7204169631004333e-01 5.8180320262908936e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1242 2.6551650371402502e-03</internalNodes>\n          <leafValues>\n            3.8050109148025513e-01 5.2213358879089355e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1243 -8.7706279009580612e-03</internalNodes>\n          <leafValues>\n            2.9441660642623901e-01 5.2312952280044556e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1244 -5.5122091434895992e-03</internalNodes>\n          <leafValues>\n            7.3461771011352539e-01 4.7228169441223145e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1245 6.8672042107209563e-04</internalNodes>\n          <leafValues>\n            5.4528760910034180e-01 4.2424130439758301e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1246 5.6019669864326715e-04</internalNodes>\n          <leafValues>\n            4.3988621234893799e-01 5.6012850999832153e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1247 2.4143769405782223e-03</internalNodes>\n          <leafValues>\n            4.7416868805885315e-01 6.1366218328475952e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1248 -1.5680900542065501e-03</internalNodes>\n          <leafValues>\n            6.0445529222488403e-01 4.5164099335670471e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1249 -3.6827491130679846e-03</internalNodes>\n          <leafValues>\n            2.4524590373039246e-01 5.2949821949005127e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1250 -2.9409190756268799e-04</internalNodes>\n          <leafValues>\n            3.7328380346298218e-01 5.2514511346817017e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1251 4.2847759323194623e-04</internalNodes>\n          <leafValues>\n            5.4988098144531250e-01 4.0655350685119629e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1252 -4.8817070201039314e-03</internalNodes>\n          <leafValues>\n            2.1399089694023132e-01 4.9999570846557617e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1253 2.7272020815871656e-04</internalNodes>\n          <leafValues>\n            4.6502870321273804e-01 5.8134287595748901e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1254 2.0947199664078653e-04</internalNodes>\n          <leafValues>\n            4.3874868750572205e-01 5.5727928876876831e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1255 4.8501189798116684e-02</internalNodes>\n          <leafValues>\n            5.2449727058410645e-01 3.2128891348838806e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1256 -4.5166411437094212e-03</internalNodes>\n          <leafValues>\n            6.0568130016326904e-01 4.5458820462226868e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1257 -1.2291680090129375e-02</internalNodes>\n          <leafValues>\n            2.0409290492534637e-01 5.1522141695022583e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1258 4.8549679922871292e-04</internalNodes>\n          <leafValues>\n            5.2376049757003784e-01 3.7395030260086060e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1259 3.0556049197912216e-02</internalNodes>\n          <leafValues>\n            4.9605339765548706e-01 5.9382462501525879e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1260 -1.5105320198927075e-04</internalNodes>\n          <leafValues>\n            5.3513038158416748e-01 4.1452041268348694e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1261 2.4937440175563097e-03</internalNodes>\n          <leafValues>\n            4.6933668851852417e-01 5.5149412155151367e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1262 -1.2382130138576031e-02</internalNodes>\n          <leafValues>\n            6.7913967370986938e-01 4.6816679835319519e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1263 -5.1333461888134480e-03</internalNodes>\n          <leafValues>\n            3.6087390780448914e-01 5.2291601896286011e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1264 5.1919277757406235e-04</internalNodes>\n          <leafValues>\n            5.3000730276107788e-01 3.6336138844490051e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1265 1.5060420334339142e-01</internalNodes>\n          <leafValues>\n            5.1573169231414795e-01 2.2117820382118225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1266 7.7144149690866470e-03</internalNodes>\n          <leafValues>\n            4.4104969501495361e-01 5.7766091823577881e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1267 9.4443522393703461e-03</internalNodes>\n          <leafValues>\n            5.4018551111221313e-01 3.7566500902175903e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1268 2.5006249779835343e-04</internalNodes>\n          <leafValues>\n            4.3682709336280823e-01 5.6073749065399170e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1269 -3.3077150583267212e-03</internalNodes>\n          <leafValues>\n            4.2447990179061890e-01 5.5182307958602905e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1270 7.4048910755664110e-04</internalNodes>\n          <leafValues>\n            4.4969621300697327e-01 5.9005767107009888e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1271 4.4092051684856415e-02</internalNodes>\n          <leafValues>\n            5.2934932708740234e-01 3.1563550233840942e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1272 3.3639909233897924e-03</internalNodes>\n          <leafValues>\n            4.4832968711853027e-01 5.8486622571945190e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1273 -3.9760079234838486e-03</internalNodes>\n          <leafValues>\n            4.5595070719718933e-01 5.4836392402648926e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1274 2.7716930489987135e-03</internalNodes>\n          <leafValues>\n            5.3417861461639404e-01 3.7924841046333313e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1275 -2.4123019829858094e-04</internalNodes>\n          <leafValues>\n            5.6671887636184692e-01 4.5769730210304260e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1276 4.9425667384639382e-04</internalNodes>\n          <leafValues>\n            4.4212448596954346e-01 5.6287872791290283e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1277 -3.8876468897797167e-04</internalNodes>\n          <leafValues>\n            4.2883709073066711e-01 5.3910630941390991e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1278 -5.0048898905515671e-02</internalNodes>\n          <leafValues>\n            6.8995130062103271e-01 4.7037428617477417e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1279 -3.6635480821132660e-02</internalNodes>\n          <leafValues>\n            2.2177790105342865e-01 5.1918262243270874e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1280 2.4273579474538565e-03</internalNodes>\n          <leafValues>\n            5.1362240314483643e-01 3.4973978996276855e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1281 1.9558030180633068e-03</internalNodes>\n          <leafValues>\n            4.8261928558349609e-01 6.4083808660507202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1282 -1.7494610510766506e-03</internalNodes>\n          <leafValues>\n            3.9228358864784241e-01 5.2726852893829346e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1283 1.3955079950392246e-02</internalNodes>\n          <leafValues>\n            5.0782018899917603e-01 8.4165048599243164e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1284 -2.1896739781368524e-04</internalNodes>\n          <leafValues>\n            5.5204898118972778e-01 4.3142348527908325e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1285 -1.5131309628486633e-03</internalNodes>\n          <leafValues>\n            3.9346051216125488e-01 5.3825712203979492e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1286 -4.3622800149023533e-03</internalNodes>\n          <leafValues>\n            7.3706287145614624e-01 4.7364759445190430e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1287 6.5160587430000305e-02</internalNodes>\n          <leafValues>\n            5.1592797040939331e-01 3.2815951108932495e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1288 -2.3567399475723505e-03</internalNodes>\n          <leafValues>\n            3.6728268861770630e-01 5.1728862524032593e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1289 1.5146659687161446e-02</internalNodes>\n          <leafValues>\n            5.0314939022064209e-01 6.6876041889190674e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1290 -2.2850960493087769e-02</internalNodes>\n          <leafValues>\n            6.7675197124481201e-01 4.7095969319343567e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1291 4.8867650330066681e-03</internalNodes>\n          <leafValues>\n            5.2579981088638306e-01 4.0598788857460022e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1292 1.7619599821045995e-03</internalNodes>\n          <leafValues>\n            4.6962729096412659e-01 6.6882789134979248e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1293 -1.2942519970238209e-03</internalNodes>\n          <leafValues>\n            4.3207129836082458e-01 5.3442817926406860e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1294 1.0929949581623077e-02</internalNodes>\n          <leafValues>\n            4.9977061152458191e-01 1.6374860703945160e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1295 2.9958489903947338e-05</internalNodes>\n          <leafValues>\n            4.2824178934097290e-01 5.6332242488861084e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1296 -6.5884361974895000e-03</internalNodes>\n          <leafValues>\n            6.7721211910247803e-01 4.7005268931388855e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1297 3.2527779694646597e-03</internalNodes>\n          <leafValues>\n            5.3133970499038696e-01 4.5361489057540894e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1298 -4.0435739792883396e-03</internalNodes>\n          <leafValues>\n            5.6600618362426758e-01 4.4133889675140381e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1299 -1.2523540062829852e-03</internalNodes>\n          <leafValues>\n            3.7319138646125793e-01 5.3564518690109253e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1300 1.9246719602961093e-04</internalNodes>\n          <leafValues>\n            5.1899862289428711e-01 3.7388110160827637e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1301 -3.8589671254158020e-02</internalNodes>\n          <leafValues>\n            2.9563739895820618e-01 5.1888108253479004e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1302 1.5489870565943420e-04</internalNodes>\n          <leafValues>\n            4.3471351265907288e-01 5.5095332860946655e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1303 -3.3763848245143890e-02</internalNodes>\n          <leafValues>\n            3.2303300499916077e-01 5.1954758167266846e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1304 -8.2657067105174065e-03</internalNodes>\n          <leafValues>\n            5.9754890203475952e-01 4.5521140098571777e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1305 1.4481440302915871e-05</internalNodes>\n          <leafValues>\n            4.7456780076026917e-01 5.4974269866943359e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1306 1.4951299817766994e-05</internalNodes>\n          <leafValues>\n            4.3244731426239014e-01 5.4806441068649292e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1307 -1.8741799518465996e-02</internalNodes>\n          <leafValues>\n            1.5800529718399048e-01 5.1785331964492798e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1308 1.7572239739820361e-03</internalNodes>\n          <leafValues>\n            4.5176368951797485e-01 5.7737642526626587e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1309 -3.1391119118779898e-03</internalNodes>\n          <leafValues>\n            4.1496479511260986e-01 5.4608422517776489e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1310 6.6656779381446540e-05</internalNodes>\n          <leafValues>\n            4.0390908718109131e-01 5.2930849790573120e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1311 6.7743421532213688e-03</internalNodes>\n          <leafValues>\n            4.7676518559455872e-01 6.1219561100006104e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1312 -7.3868161998689175e-03</internalNodes>\n          <leafValues>\n            3.5862588882446289e-01 5.1872807741165161e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1313 1.4040930196642876e-02</internalNodes>\n          <leafValues>\n            4.7121399641036987e-01 5.5761557817459106e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1314 -5.5258329957723618e-03</internalNodes>\n          <leafValues>\n            2.6610270142555237e-01 5.0392812490463257e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1315 3.8684239983558655e-01</internalNodes>\n          <leafValues>\n            5.1443397998809814e-01 2.5258991122245789e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1316 1.1459240340627730e-04</internalNodes>\n          <leafValues>\n            4.2849949002265930e-01 5.4233711957931519e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1317 -1.8467569723725319e-02</internalNodes>\n          <leafValues>\n            3.8858351111412048e-01 5.2130621671676636e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1318 -4.5907011372037232e-04</internalNodes>\n          <leafValues>\n            5.4125630855560303e-01 4.2359098792076111e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1319 1.2527540093287826e-03</internalNodes>\n          <leafValues>\n            4.8993051052093506e-01 6.6240912675857544e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1320 1.4910609461367130e-03</internalNodes>\n          <leafValues>\n            5.2867782115936279e-01 4.0400519967079163e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1321 -7.5435562757775187e-04</internalNodes>\n          <leafValues>\n            6.0329902172088623e-01 4.7951200604438782e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1322 -6.9478838704526424e-03</internalNodes>\n          <leafValues>\n            4.0844011306762695e-01 5.3735041618347168e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1323 2.8092920547351241e-04</internalNodes>\n          <leafValues>\n            4.8460629582405090e-01 5.7593822479248047e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1324 9.6073717577382922e-04</internalNodes>\n          <leafValues>\n            5.1647412776947021e-01 3.5549798607826233e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1325 -2.6883929967880249e-04</internalNodes>\n          <leafValues>\n            5.6775820255279541e-01 4.7317659854888916e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1326 2.1599370520561934e-03</internalNodes>\n          <leafValues>\n            4.7314870357513428e-01 7.0705670118331909e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1327 5.6235301308333874e-03</internalNodes>\n          <leafValues>\n            5.2402430772781372e-01 2.7817919850349426e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1328 -5.0243991427123547e-03</internalNodes>\n          <leafValues>\n            2.8370139002799988e-01 5.0623041391372681e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1329 -9.7611639648675919e-03</internalNodes>\n          <leafValues>\n            7.4007177352905273e-01 4.9345690011978149e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1330 4.1515100747346878e-03</internalNodes>\n          <leafValues>\n            5.1191312074661255e-01 3.4070080518722534e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1331 6.2465080991387367e-03</internalNodes>\n          <leafValues>\n            4.9237880110740662e-01 6.5790587663650513e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1332 -7.0597478188574314e-03</internalNodes>\n          <leafValues>\n            2.4347110092639923e-01 5.0328421592712402e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1333 -2.0587709732353687e-03</internalNodes>\n          <leafValues>\n            5.9003108739852905e-01 4.6950870752334595e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1334 -2.4146060459315777e-03</internalNodes>\n          <leafValues>\n            3.6473178863525391e-01 5.1892018318176270e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1335 -1.4817609917372465e-03</internalNodes>\n          <leafValues>\n            6.0349482297897339e-01 4.9401280283927917e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1336 -6.3016400672495365e-03</internalNodes>\n          <leafValues>\n            5.8189898729324341e-01 4.5604279637336731e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1337 3.4763428848236799e-03</internalNodes>\n          <leafValues>\n            5.2174758911132812e-01 3.4839931130409241e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1338 -2.2250870242714882e-02</internalNodes>\n          <leafValues>\n            2.3607000708580017e-01 5.0320827960968018e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1339 -3.0612550675868988e-02</internalNodes>\n          <leafValues>\n            6.4991867542266846e-01 4.9149191379547119e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1340 1.3057479634881020e-02</internalNodes>\n          <leafValues>\n            4.4133231043815613e-01 5.6837642192840576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1341 -6.0095742810517550e-04</internalNodes>\n          <leafValues>\n            4.3597310781478882e-01 5.3334832191467285e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1342 -4.1514250915497541e-04</internalNodes>\n          <leafValues>\n            5.5040627717971802e-01 4.3260601162910461e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1343 -1.3776290230453014e-02</internalNodes>\n          <leafValues>\n            4.0641129016876221e-01 5.2015489339828491e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1344 -3.2296508550643921e-02</internalNodes>\n          <leafValues>\n            4.7351971268653870e-02 4.9771949648857117e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1345 5.3556978702545166e-02</internalNodes>\n          <leafValues>\n            4.8817330598831177e-01 6.6669392585754395e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1346 8.1889545544981956e-03</internalNodes>\n          <leafValues>\n            5.4000371694564819e-01 4.2408201098442078e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1347 2.1055320394225419e-04</internalNodes>\n          <leafValues>\n            4.8020479083061218e-01 5.5638527870178223e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1348 -2.4382730480283499e-03</internalNodes>\n          <leafValues>\n            7.3877930641174316e-01 4.7736850380897522e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1349 3.2835570164024830e-03</internalNodes>\n          <leafValues>\n            5.2885460853576660e-01 3.1712919473648071e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1350 2.3729570675641298e-03</internalNodes>\n          <leafValues>\n            4.7508129477500916e-01 7.0601707696914673e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1351 -1.4541699783876538e-03</internalNodes>\n          <leafValues>\n            3.8117301464080811e-01 5.3307390213012695e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>177</maxWeakCount>\n      <stageThreshold>8.7696029663085938e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1352 5.5755238980054855e-02</internalNodes>\n          <leafValues>\n            4.0191569924354553e-01 6.8060368299484253e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1353 2.4730248842388391e-03</internalNodes>\n          <leafValues>\n            3.3511489629745483e-01 5.9657198190689087e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1354 -3.5031698644161224e-04</internalNodes>\n          <leafValues>\n            5.5577081441879272e-01 3.4822869300842285e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1355 5.4167630150914192e-04</internalNodes>\n          <leafValues>\n            4.2608588933944702e-01 5.6933808326721191e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1356 7.7193678589537740e-04</internalNodes>\n          <leafValues>\n            3.4942400455474854e-01 5.4336887598037720e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1357 -1.5999219613149762e-03</internalNodes>\n          <leafValues>\n            4.0284991264343262e-01 5.4843592643737793e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1358 -1.1832080053864047e-04</internalNodes>\n          <leafValues>\n            3.8069018721580505e-01 5.4254651069641113e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1359 3.2909031142480671e-04</internalNodes>\n          <leafValues>\n            2.6201000809669495e-01 5.4295217990875244e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1360 2.9518108931370080e-04</internalNodes>\n          <leafValues>\n            3.7997689843177795e-01 5.3992640972137451e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1361 9.0466710389591753e-05</internalNodes>\n          <leafValues>\n            4.4336450099945068e-01 5.4402261972427368e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1362 1.5007190086180344e-05</internalNodes>\n          <leafValues>\n            3.7196549773216248e-01 5.4091197252273560e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1363 1.3935610651969910e-01</internalNodes>\n          <leafValues>\n            5.5253958702087402e-01 4.4790428876876831e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1364 1.6461990308016539e-03</internalNodes>\n          <leafValues>\n            4.2645010352134705e-01 5.7721698284149170e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1365 4.9984431825578213e-04</internalNodes>\n          <leafValues>\n            4.3595260381698608e-01 5.6858712434768677e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1366 -1.0971280280500650e-03</internalNodes>\n          <leafValues>\n            3.3901369571685791e-01 5.2054089307785034e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1367 6.6919892560690641e-04</internalNodes>\n          <leafValues>\n            4.5574560761451721e-01 5.9806597232818604e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1368 8.6471042595803738e-04</internalNodes>\n          <leafValues>\n            5.1348412036895752e-01 2.9440331459045410e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1369 -2.7182599296793342e-04</internalNodes>\n          <leafValues>\n            3.9065781235694885e-01 5.3771811723709106e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1370 3.0249499104684219e-05</internalNodes>\n          <leafValues>\n            3.6796098947525024e-01 5.2256888151168823e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1371 -8.5225896909832954e-03</internalNodes>\n          <leafValues>\n            7.2931021451950073e-01 4.8923650383949280e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1372 1.6705560265108943e-03</internalNodes>\n          <leafValues>\n            4.3453249335289001e-01 5.6961381435394287e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1373 -7.1433838456869125e-03</internalNodes>\n          <leafValues>\n            2.5912800431251526e-01 5.2256238460540771e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1374 -1.6319369897246361e-02</internalNodes>\n          <leafValues>\n            6.9222790002822876e-01 4.6515759825706482e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1375 4.8034260980784893e-03</internalNodes>\n          <leafValues>\n            5.3522628545761108e-01 3.2863029837608337e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1376 -7.5421929359436035e-03</internalNodes>\n          <leafValues>\n            2.0405440032482147e-01 5.0345462560653687e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1377 -1.4363110065460205e-02</internalNodes>\n          <leafValues>\n            6.8048888444900513e-01 4.8890590667724609e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1378 8.9063588529825211e-04</internalNodes>\n          <leafValues>\n            5.3106957674026489e-01 3.8954809308052063e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1379 -4.4060191139578819e-03</internalNodes>\n          <leafValues>\n            5.7415628433227539e-01 4.3724268674850464e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1380 -1.8862540309783071e-04</internalNodes>\n          <leafValues>\n            2.8317859768867493e-01 5.0982052087783813e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1381 -3.7979281041771173e-03</internalNodes>\n          <leafValues>\n            3.3725079894065857e-01 5.2465802431106567e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1382 1.4627049677073956e-04</internalNodes>\n          <leafValues>\n            5.3066742420196533e-01 3.9117100834846497e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1383 -4.9164638767251745e-05</internalNodes>\n          <leafValues>\n            5.4624962806701660e-01 3.9427208900451660e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1384 -3.3582501113414764e-02</internalNodes>\n          <leafValues>\n            2.1578240394592285e-01 5.0482118129730225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1385 -3.5339309833943844e-03</internalNodes>\n          <leafValues>\n            6.4653122425079346e-01 4.8726969957351685e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1386 5.0144111737608910e-03</internalNodes>\n          <leafValues>\n            4.6176680922508240e-01 6.2480747699737549e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1387 1.8817370757460594e-02</internalNodes>\n          <leafValues>\n            5.2206891775131226e-01 2.0000520348548889e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1388 -1.3434339780360460e-03</internalNodes>\n          <leafValues>\n            4.0145379304885864e-01 5.3016197681427002e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1389 1.7557960236445069e-03</internalNodes>\n          <leafValues>\n            4.7940391302108765e-01 5.6531697511672974e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1390 -9.5637463033199310e-02</internalNodes>\n          <leafValues>\n            2.0341950654983521e-01 5.0067067146301270e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1391 -2.2241229191422462e-02</internalNodes>\n          <leafValues>\n            7.6724731922149658e-01 5.0463402271270752e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1392 -1.5575819648802280e-02</internalNodes>\n          <leafValues>\n            7.4903422594070435e-01 4.7558510303497314e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1393 5.3599118255078793e-03</internalNodes>\n          <leafValues>\n            5.3653037548065186e-01 4.0046709775924683e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1394 -2.1763499826192856e-02</internalNodes>\n          <leafValues>\n            7.4015498161315918e-02 4.9641749262809753e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1395 -1.6561590135097504e-01</internalNodes>\n          <leafValues>\n            2.8591030836105347e-01 5.2180862426757812e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1396 1.6461320046801120e-04</internalNodes>\n          <leafValues>\n            4.1916158795356750e-01 5.3807932138442993e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1397 -8.9077502489089966e-03</internalNodes>\n          <leafValues>\n            6.2731927633285522e-01 4.8774048686027527e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1398 8.6346449097618461e-04</internalNodes>\n          <leafValues>\n            5.1599407196044922e-01 3.6710259318351746e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1399 -1.3751760125160217e-03</internalNodes>\n          <leafValues>\n            5.8843767642974854e-01 4.5790839195251465e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1400 -1.4081239933148026e-03</internalNodes>\n          <leafValues>\n            3.5605099797248840e-01 5.1399451494216919e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1401 -3.9342888630926609e-03</internalNodes>\n          <leafValues>\n            5.9942889213562012e-01 4.6642720699310303e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1402 -3.1966928392648697e-02</internalNodes>\n          <leafValues>\n            3.3454620838165283e-01 5.1441830396652222e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1403 -1.5089280168467667e-05</internalNodes>\n          <leafValues>\n            5.5826562643051147e-01 4.4140571355819702e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1404 5.1994470413774252e-04</internalNodes>\n          <leafValues>\n            4.6236801147460938e-01 6.1689937114715576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1405 -3.4220460802316666e-03</internalNodes>\n          <leafValues>\n            6.5570747852325439e-01 4.9748051166534424e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1406 1.7723299970384687e-04</internalNodes>\n          <leafValues>\n            5.2695018053054810e-01 3.9019080996513367e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1407 1.5716759953647852e-03</internalNodes>\n          <leafValues>\n            4.6333730220794678e-01 5.7904577255249023e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1408 -8.9041329920291901e-03</internalNodes>\n          <leafValues>\n            2.6896080374717712e-01 5.0535911321640015e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1409 4.0677518700249493e-04</internalNodes>\n          <leafValues>\n            5.4566031694412231e-01 4.3298989534378052e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1410 6.7604780197143555e-03</internalNodes>\n          <leafValues>\n            4.6489939093589783e-01 6.6897618770599365e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1411 2.9100088868290186e-03</internalNodes>\n          <leafValues>\n            5.3097039461135864e-01 3.3778399229049683e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1412 1.3885459629818797e-03</internalNodes>\n          <leafValues>\n            4.0747389197349548e-01 5.3491330146789551e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1413 -7.6764263212680817e-02</internalNodes>\n          <leafValues>\n            1.9921760261058807e-01 5.2282422780990601e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1414 -2.2688310127705336e-04</internalNodes>\n          <leafValues>\n            5.4385018348693848e-01 4.2530721426010132e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1415 -6.3094152137637138e-03</internalNodes>\n          <leafValues>\n            4.2591789364814758e-01 5.3789097070693970e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1416 -1.1007279902696609e-01</internalNodes>\n          <leafValues>\n            6.9041568040847778e-01 4.7217491269111633e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1417 2.8619659133255482e-04</internalNodes>\n          <leafValues>\n            4.5249149203300476e-01 5.5483061075210571e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1418 2.9425329557852820e-05</internalNodes>\n          <leafValues>\n            5.3703737258911133e-01 4.2364639043807983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1419 -2.4886570870876312e-02</internalNodes>\n          <leafValues>\n            6.4235579967498779e-01 4.9693039059638977e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1420 3.3148851245641708e-02</internalNodes>\n          <leafValues>\n            4.9884751439094543e-01 1.6138119995594025e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1421 7.8491691965609789e-04</internalNodes>\n          <leafValues>\n            5.4160261154174805e-01 4.2230090498924255e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1422 4.7087189741432667e-03</internalNodes>\n          <leafValues>\n            4.5763289928436279e-01 6.0275578498840332e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1423 2.4144479539245367e-03</internalNodes>\n          <leafValues>\n            5.3089731931686401e-01 4.4224989414215088e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1424 1.9523180089890957e-03</internalNodes>\n          <leafValues>\n            4.7056341171264648e-01 6.6633248329162598e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1425 1.3031980488449335e-03</internalNodes>\n          <leafValues>\n            4.4061261415481567e-01 5.5269622802734375e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1426 4.4735497795045376e-03</internalNodes>\n          <leafValues>\n            5.1290237903594971e-01 3.3014988899230957e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1427 -2.6652868837118149e-03</internalNodes>\n          <leafValues>\n            3.1354710459709167e-01 5.1750361919403076e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1428 1.3666770246345550e-04</internalNodes>\n          <leafValues>\n            4.1193708777427673e-01 5.3068768978118896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1429 -1.7126450315117836e-02</internalNodes>\n          <leafValues>\n            6.1778062582015991e-01 4.8365789651870728e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1430 -2.6601430727168918e-04</internalNodes>\n          <leafValues>\n            3.6543309688568115e-01 5.1697367429733276e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1431 -2.2932380437850952e-02</internalNodes>\n          <leafValues>\n            3.4909150004386902e-01 5.1639920473098755e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1432 2.3316550068557262e-03</internalNodes>\n          <leafValues>\n            5.1662999391555786e-01 3.7093898653984070e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1433 1.6925660893321037e-02</internalNodes>\n          <leafValues>\n            5.0147360563278198e-01 8.0539882183074951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1434 -8.9858826249837875e-03</internalNodes>\n          <leafValues>\n            6.4707887172698975e-01 4.6570208668708801e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1435 -1.1874699965119362e-02</internalNodes>\n          <leafValues>\n            3.2463788986206055e-01 5.2587550878524780e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1436 1.9350569345988333e-04</internalNodes>\n          <leafValues>\n            5.1919418573379517e-01 3.8396438956260681e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1437 5.8713490143418312e-03</internalNodes>\n          <leafValues>\n            4.9181339144706726e-01 6.1870431900024414e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1438 -2.4838790297508240e-01</internalNodes>\n          <leafValues>\n            1.8368029594421387e-01 4.9881500005722046e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1439 1.2256000190973282e-02</internalNodes>\n          <leafValues>\n            5.2270537614822388e-01 3.6320298910140991e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1440 8.3990179700776935e-04</internalNodes>\n          <leafValues>\n            4.4902500510215759e-01 5.7741481065750122e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1441 2.5407369248569012e-03</internalNodes>\n          <leafValues>\n            4.8047870397567749e-01 5.8582991361618042e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1442 -1.4822429977357388e-02</internalNodes>\n          <leafValues>\n            2.5210499763488770e-01 5.0235372781753540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1443 -5.7973959483206272e-03</internalNodes>\n          <leafValues>\n            5.9966957569122314e-01 4.8537150025367737e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1444 7.2662148158997297e-04</internalNodes>\n          <leafValues>\n            5.1537168025970459e-01 3.6717799305915833e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1445 -1.7232580110430717e-02</internalNodes>\n          <leafValues>\n            6.6217190027236938e-01 4.9946561455726624e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1446 7.8624086454510689e-03</internalNodes>\n          <leafValues>\n            4.6333950757980347e-01 6.2561017274856567e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1447 -4.7343620099127293e-03</internalNodes>\n          <leafValues>\n            3.6155730485916138e-01 5.2818852663040161e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1448 8.3048478700220585e-04</internalNodes>\n          <leafValues>\n            4.4428890943527222e-01 5.5509579181671143e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1449 7.6602199114859104e-03</internalNodes>\n          <leafValues>\n            5.1629352569580078e-01 2.6133549213409424e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1450 -4.1048377752304077e-03</internalNodes>\n          <leafValues>\n            2.7896320819854736e-01 5.0190317630767822e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1451 4.8512578941881657e-03</internalNodes>\n          <leafValues>\n            4.9689841270446777e-01 5.6616681814193726e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1452 9.9896453320980072e-04</internalNodes>\n          <leafValues>\n            4.4456079602241516e-01 5.5518132448196411e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1453 -2.7023631334304810e-01</internalNodes>\n          <leafValues>\n            2.9388209804892540e-02 5.1513141393661499e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1454 -1.3090680353343487e-02</internalNodes>\n          <leafValues>\n            5.6993997097015381e-01 4.4474598765373230e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1455 -9.4342790544033051e-03</internalNodes>\n          <leafValues>\n            4.3054661154747009e-01 5.4878950119018555e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1456 -1.5482039889320731e-03</internalNodes>\n          <leafValues>\n            3.6803171038627625e-01 5.1280808448791504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1457 5.3746132180094719e-03</internalNodes>\n          <leafValues>\n            4.8389169573783875e-01 6.1015558242797852e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1458 1.5786769799888134e-03</internalNodes>\n          <leafValues>\n            5.3252232074737549e-01 4.1185480356216431e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1459 3.6856050137430429e-03</internalNodes>\n          <leafValues>\n            4.8109480738639832e-01 6.2523031234741211e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1460 9.3887019902467728e-03</internalNodes>\n          <leafValues>\n            5.2002298831939697e-01 3.6294108629226685e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1461 1.2792630121111870e-02</internalNodes>\n          <leafValues>\n            4.9617099761962891e-01 6.7380160093307495e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1462 -3.3661040943115950e-03</internalNodes>\n          <leafValues>\n            4.0602791309356689e-01 5.2835988998413086e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1463 3.9771420415490866e-04</internalNodes>\n          <leafValues>\n            4.6741139888763428e-01 5.9007751941680908e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1464 1.4868030557408929e-03</internalNodes>\n          <leafValues>\n            4.5191168785095215e-01 6.0820537805557251e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1465 -8.8686749339103699e-02</internalNodes>\n          <leafValues>\n            2.8078991174697876e-01 5.1809918880462646e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1466 -7.4296112870797515e-05</internalNodes>\n          <leafValues>\n            5.2955842018127441e-01 4.0876251459121704e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1467 -1.4932939848222304e-05</internalNodes>\n          <leafValues>\n            5.4614001512527466e-01 4.5385429263114929e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1468 5.9162238612771034e-03</internalNodes>\n          <leafValues>\n            5.3291612863540649e-01 4.1921341419219971e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1469 1.1141640134155750e-03</internalNodes>\n          <leafValues>\n            4.5120179653167725e-01 5.7062172889709473e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1470 8.9249362645205110e-05</internalNodes>\n          <leafValues>\n            4.5778059959411621e-01 5.8976382017135620e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1471 2.5319510605186224e-03</internalNodes>\n          <leafValues>\n            5.2996039390563965e-01 3.3576390147209167e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1472 1.2426200322806835e-02</internalNodes>\n          <leafValues>\n            4.9590590596199036e-01 1.3466019928455353e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1473 2.8335750102996826e-02</internalNodes>\n          <leafValues>\n            5.1170790195465088e-01 6.1043637106195092e-04</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1474 6.6165882162749767e-03</internalNodes>\n          <leafValues>\n            4.7363498806953430e-01 7.0116281509399414e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1475 8.0468766391277313e-03</internalNodes>\n          <leafValues>\n            5.2164179086685181e-01 3.2828199863433838e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1476 -1.1193980462849140e-03</internalNodes>\n          <leafValues>\n            5.8098608255386353e-01 4.5637390017509460e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1477 1.3277590274810791e-02</internalNodes>\n          <leafValues>\n            5.3983622789382935e-01 4.1039010882377625e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1478 4.8794739996083081e-04</internalNodes>\n          <leafValues>\n            4.2492860555648804e-01 5.4105907678604126e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1479 1.1243170127272606e-02</internalNodes>\n          <leafValues>\n            5.2699637413024902e-01 3.4382158517837524e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1480 -8.9896668214350939e-04</internalNodes>\n          <leafValues>\n            5.6330758333206177e-01 4.4566130638122559e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1481 6.6677159629762173e-03</internalNodes>\n          <leafValues>\n            5.3128892183303833e-01 4.3626791238784790e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1482 2.8947299346327782e-02</internalNodes>\n          <leafValues>\n            4.7017949819564819e-01 6.5757977962493896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1483 -2.3400049656629562e-02</internalNodes>\n          <leafValues>\n            0. 5.1373988389968872e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1484 -8.9117050170898438e-02</internalNodes>\n          <leafValues>\n            2.3745279759168625e-02 4.9424308538436890e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1485 -1.4054600149393082e-02</internalNodes>\n          <leafValues>\n            3.1273230910301208e-01 5.1175111532211304e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1486 8.1239398568868637e-03</internalNodes>\n          <leafValues>\n            5.0090491771697998e-01 2.5200259685516357e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1487 -4.9964650534093380e-03</internalNodes>\n          <leafValues>\n            6.3871437311172485e-01 4.9278119206428528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1488 3.1253970228135586e-03</internalNodes>\n          <leafValues>\n            5.1368498802185059e-01 3.6804521083831787e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1489 6.7669642157852650e-03</internalNodes>\n          <leafValues>\n            5.5098438262939453e-01 4.3636319041252136e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1490 -2.3711440153419971e-03</internalNodes>\n          <leafValues>\n            6.1623352766036987e-01 4.5869469642639160e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1491 -5.3522791713476181e-03</internalNodes>\n          <leafValues>\n            6.1854577064514160e-01 4.9204909801483154e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1492 -1.5968859195709229e-02</internalNodes>\n          <leafValues>\n            1.3826179504394531e-01 4.9832528829574585e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1493 4.7676060348749161e-03</internalNodes>\n          <leafValues>\n            4.6880578994750977e-01 5.4900461435317993e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1494 -2.4714691098779440e-03</internalNodes>\n          <leafValues>\n            2.3685149848461151e-01 5.0039529800415039e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1495 -7.1033788844943047e-04</internalNodes>\n          <leafValues>\n            5.8563941717147827e-01 4.7215330600738525e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1496 -1.4117559790611267e-01</internalNodes>\n          <leafValues>\n            8.6900062859058380e-02 4.9615910649299622e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1497 1.0651809722185135e-01</internalNodes>\n          <leafValues>\n            5.1388370990753174e-01 1.7410050332546234e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1498 -5.2744749933481216e-02</internalNodes>\n          <leafValues>\n            7.3536360263824463e-01 4.7728818655014038e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1499 -4.7431760467588902e-03</internalNodes>\n          <leafValues>\n            3.8844060897827148e-01 5.2927017211914062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1500 9.9676765967160463e-04</internalNodes>\n          <leafValues>\n            5.2234929800033569e-01 4.0034240484237671e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1501 8.0284131690859795e-03</internalNodes>\n          <leafValues>\n            4.9591061472892761e-01 7.2129642963409424e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1502 8.6025858763605356e-04</internalNodes>\n          <leafValues>\n            4.4448840618133545e-01 5.5384761095046997e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1503 9.3191501218825579e-04</internalNodes>\n          <leafValues>\n            5.3983712196350098e-01 4.1632440686225891e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1504 -2.5082060601562262e-03</internalNodes>\n          <leafValues>\n            5.8542650938034058e-01 4.5625001192092896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1505 -2.1378761157393456e-03</internalNodes>\n          <leafValues>\n            4.6080690622329712e-01 5.2802592515945435e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1506 -2.1546049974858761e-03</internalNodes>\n          <leafValues>\n            3.7911269068717957e-01 5.2559971809387207e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1507 -7.6214009895920753e-03</internalNodes>\n          <leafValues>\n            5.9986090660095215e-01 4.9520739912986755e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1508 2.2055360022932291e-03</internalNodes>\n          <leafValues>\n            4.4842061400413513e-01 5.5885308980941772e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1509 1.2586950324475765e-03</internalNodes>\n          <leafValues>\n            5.4507470130920410e-01 4.4238409399986267e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1510 -5.0926720723509789e-03</internalNodes>\n          <leafValues>\n            4.1182750463485718e-01 5.2630358934402466e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1511 -2.5095739401876926e-03</internalNodes>\n          <leafValues>\n            5.7879078388214111e-01 4.9984949827194214e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1512 -7.7327556908130646e-02</internalNodes>\n          <leafValues>\n            8.3978658914566040e-01 4.8111200332641602e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1513 -4.1485819965600967e-02</internalNodes>\n          <leafValues>\n            2.4086110293865204e-01 5.1769930124282837e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1514 1.0355669655837119e-04</internalNodes>\n          <leafValues>\n            4.3553608655929565e-01 5.4170542955398560e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1515 1.3255809899419546e-03</internalNodes>\n          <leafValues>\n            5.4539710283279419e-01 4.8940950632095337e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1516 -8.0598732456564903e-03</internalNodes>\n          <leafValues>\n            5.7710242271423340e-01 4.5779189467430115e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1517 1.9058620557188988e-02</internalNodes>\n          <leafValues>\n            5.1698678731918335e-01 3.4004750847816467e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1518 -3.5057891160249710e-02</internalNodes>\n          <leafValues>\n            2.2032439708709717e-01 5.0005030632019043e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1519 5.7296059094369411e-03</internalNodes>\n          <leafValues>\n            5.0434082746505737e-01 6.5975707769393921e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1520 -1.1648329906165600e-02</internalNodes>\n          <leafValues>\n            2.1862849593162537e-01 4.9966529011726379e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1521 1.4544479781761765e-03</internalNodes>\n          <leafValues>\n            5.0076818466186523e-01 5.5037277936935425e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1522 -2.5030909455381334e-04</internalNodes>\n          <leafValues>\n            4.1298410296440125e-01 5.2416700124740601e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1523 -8.2907272735610604e-04</internalNodes>\n          <leafValues>\n            5.4128682613372803e-01 4.9744960665702820e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1524 1.0862209601327777e-03</internalNodes>\n          <leafValues>\n            4.6055299043655396e-01 5.8792287111282349e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1525 2.0000500080641359e-04</internalNodes>\n          <leafValues>\n            5.2788549661636353e-01 4.7052091360092163e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1526 2.9212920926511288e-03</internalNodes>\n          <leafValues>\n            5.1296097040176392e-01 3.7555369734764099e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1527 2.5387400761246681e-02</internalNodes>\n          <leafValues>\n            4.8226919770240784e-01 5.7907682657241821e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1528 -3.1968469265848398e-03</internalNodes>\n          <leafValues>\n            5.2483952045440674e-01 3.9628401398658752e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>182</maxWeakCount>\n      <stageThreshold>9.0253349304199219e+01</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1529 5.8031738735735416e-03</internalNodes>\n          <leafValues>\n            3.4989839792251587e-01 5.9619832038879395e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1530 -9.0003069490194321e-03</internalNodes>\n          <leafValues>\n            6.8166369199752808e-01 4.4785520434379578e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1531 -1.1549659539014101e-03</internalNodes>\n          <leafValues>\n            5.5857062339782715e-01 3.5782510042190552e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1532 -1.1069850297644734e-03</internalNodes>\n          <leafValues>\n            5.3650361299514771e-01 3.0504280328750610e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1533 1.0308309720130637e-04</internalNodes>\n          <leafValues>\n            3.6390951275825500e-01 5.3446358442306519e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1534 -5.0984839908778667e-03</internalNodes>\n          <leafValues>\n            2.8591570258140564e-01 5.5042648315429688e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1535 8.2572200335562229e-04</internalNodes>\n          <leafValues>\n            5.2365237474441528e-01 3.4760418534278870e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1536 9.9783325567841530e-03</internalNodes>\n          <leafValues>\n            4.7503221035003662e-01 6.2196469306945801e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1537 -3.7402529269456863e-02</internalNodes>\n          <leafValues>\n            3.3433759212493896e-01 5.2780628204345703e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1538 4.8548257909715176e-03</internalNodes>\n          <leafValues>\n            5.1921808719635010e-01 3.7004441022872925e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1539 -1.8664470408111811e-03</internalNodes>\n          <leafValues>\n            2.9298439621925354e-01 5.0919449329376221e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1540 1.6888890415430069e-02</internalNodes>\n          <leafValues>\n            3.6868458986282349e-01 5.4312258958816528e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1541 -5.8372621424496174e-03</internalNodes>\n          <leafValues>\n            3.6321839690208435e-01 5.2213358879089355e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1542 -1.4713739510625601e-03</internalNodes>\n          <leafValues>\n            5.8706837892532349e-01 4.7006508708000183e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1543 -1.1522950371727347e-03</internalNodes>\n          <leafValues>\n            3.1958949565887451e-01 5.1409542560577393e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1544 -4.2560300789773464e-03</internalNodes>\n          <leafValues>\n            6.3018590211868286e-01 4.8149210214614868e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1545 -6.7378291860222816e-03</internalNodes>\n          <leafValues>\n            1.9770480692386627e-01 5.0258082151412964e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1546 1.1382670141756535e-02</internalNodes>\n          <leafValues>\n            4.9541321396827698e-01 6.8670457601547241e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1547 5.1794708706438541e-03</internalNodes>\n          <leafValues>\n            5.1644277572631836e-01 3.3506479859352112e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1548 -1.1743789911270142e-01</internalNodes>\n          <leafValues>\n            2.3152460157871246e-01 5.2344137430191040e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1549 2.8703449293971062e-02</internalNodes>\n          <leafValues>\n            4.6642971038818359e-01 6.7225211858749390e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1550 4.8231030814349651e-03</internalNodes>\n          <leafValues>\n            5.2208751440048218e-01 2.7235329151153564e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1551 2.6798530016094446e-03</internalNodes>\n          <leafValues>\n            5.0792771577835083e-01 2.9069489240646362e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1552 8.0504082143306732e-03</internalNodes>\n          <leafValues>\n            4.8859509825706482e-01 6.3950210809707642e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1553 4.8054959625005722e-03</internalNodes>\n          <leafValues>\n            5.1972568035125732e-01 3.6566638946533203e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1554 -2.2420159075409174e-03</internalNodes>\n          <leafValues>\n            6.1534678936004639e-01 4.7637018561363220e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1555 -1.3757710345089436e-02</internalNodes>\n          <leafValues>\n            2.6373448967933655e-01 5.0309032201766968e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1556 -1.0338299721479416e-01</internalNodes>\n          <leafValues>\n            2.2875219583511353e-01 5.1824611425399780e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1557 -9.4432085752487183e-03</internalNodes>\n          <leafValues>\n            6.9533038139343262e-01 4.6949490904808044e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1558 8.0271181650459766e-04</internalNodes>\n          <leafValues>\n            5.4506552219390869e-01 4.2687839269638062e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1559 -4.1945669800043106e-03</internalNodes>\n          <leafValues>\n            6.0913878679275513e-01 4.5716428756713867e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1560 1.0942210443317890e-02</internalNodes>\n          <leafValues>\n            5.2410632371902466e-01 3.2845470309257507e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1561 -5.7841069065034389e-04</internalNodes>\n          <leafValues>\n            5.3879290819168091e-01 4.1793689131736755e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1562 -2.0888620056211948e-03</internalNodes>\n          <leafValues>\n            4.2926910519599915e-01 5.3017157316207886e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1563 3.2383969519287348e-03</internalNodes>\n          <leafValues>\n            3.7923479080200195e-01 5.2207440137863159e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1564 4.9075027927756310e-03</internalNodes>\n          <leafValues>\n            5.2372831106185913e-01 4.1267579793930054e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1565 -3.2277941703796387e-02</internalNodes>\n          <leafValues>\n            1.9476559758186340e-01 4.9945020675659180e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1566 -8.9711230248212814e-03</internalNodes>\n          <leafValues>\n            6.0112851858139038e-01 4.9290320277214050e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1567 1.5321089886128902e-02</internalNodes>\n          <leafValues>\n            5.0097537040710449e-01 2.0398220419883728e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1568 2.0855569746345282e-03</internalNodes>\n          <leafValues>\n            4.8621898889541626e-01 5.7216948270797729e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1569 5.0615021027624607e-03</internalNodes>\n          <leafValues>\n            5.0002187490463257e-01 1.8018059432506561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1570 -3.7174751050770283e-03</internalNodes>\n          <leafValues>\n            5.5301171541213989e-01 4.8975929617881775e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1571 -1.2170500122010708e-02</internalNodes>\n          <leafValues>\n            4.1786059737205505e-01 5.3837239742279053e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1572 4.6248398721218109e-03</internalNodes>\n          <leafValues>\n            4.9971699714660645e-01 5.7613271474838257e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1573 -2.1040429419372231e-04</internalNodes>\n          <leafValues>\n            5.3318071365356445e-01 4.0976810455322266e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1574 -1.4641780406236649e-02</internalNodes>\n          <leafValues>\n            5.7559251785278320e-01 5.0517761707305908e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1575 3.3199489116668701e-03</internalNodes>\n          <leafValues>\n            4.5769768953323364e-01 6.0318058729171753e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1576 3.7236879579722881e-03</internalNodes>\n          <leafValues>\n            4.3803969025611877e-01 5.4158830642700195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1577 8.2951161311939359e-04</internalNodes>\n          <leafValues>\n            5.1630318164825439e-01 3.7022191286087036e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1578 -1.1408490128815174e-02</internalNodes>\n          <leafValues>\n            6.0729467868804932e-01 4.8625651001930237e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1579 -4.5320121571421623e-03</internalNodes>\n          <leafValues>\n            3.2924759387969971e-01 5.0889629125595093e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1580 5.1276017911732197e-03</internalNodes>\n          <leafValues>\n            4.8297679424285889e-01 6.1227089166641235e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1581 9.8583158105611801e-03</internalNodes>\n          <leafValues>\n            4.6606799960136414e-01 6.5561771392822266e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1582 3.6985918879508972e-02</internalNodes>\n          <leafValues>\n            5.2048492431640625e-01 1.6904720664024353e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1583 4.6491161920130253e-03</internalNodes>\n          <leafValues>\n            5.1673221588134766e-01 3.7252250313758850e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1584 -4.2664702050387859e-03</internalNodes>\n          <leafValues>\n            6.4064931869506836e-01 4.9873429536819458e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1585 -4.7956590424291790e-04</internalNodes>\n          <leafValues>\n            5.8972930908203125e-01 4.4648739695549011e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1586 3.6827160511165857e-03</internalNodes>\n          <leafValues>\n            5.4415607452392578e-01 3.4726628661155701e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1587 -1.0059880092740059e-02</internalNodes>\n          <leafValues>\n            2.1431629359722137e-01 5.0048297643661499e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1588 -3.0361840617842972e-04</internalNodes>\n          <leafValues>\n            5.3864240646362305e-01 4.5903238654136658e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1589 -1.4545479789376259e-03</internalNodes>\n          <leafValues>\n            5.7511842250823975e-01 4.4970950484275818e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1590 1.6515209572389722e-03</internalNodes>\n          <leafValues>\n            5.4219377040863037e-01 4.2385208606719971e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1591 -7.8468639403581619e-03</internalNodes>\n          <leafValues>\n            4.0779209136962891e-01 5.2581572532653809e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1592 -5.1259850151836872e-03</internalNodes>\n          <leafValues>\n            4.2292758822441101e-01 5.4794532060623169e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1593 -3.6890961229801178e-02</internalNodes>\n          <leafValues>\n            6.5963757038116455e-01 4.6746781468391418e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1594 2.4035639944486320e-04</internalNodes>\n          <leafValues>\n            4.2511358857154846e-01 5.5732029676437378e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1595 -1.5150169929256663e-05</internalNodes>\n          <leafValues>\n            5.2592468261718750e-01 4.0741148591041565e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1596 2.2108471021056175e-03</internalNodes>\n          <leafValues>\n            4.6717229485511780e-01 5.8863520622253418e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1597 -1.1568620102480054e-03</internalNodes>\n          <leafValues>\n            5.7110661268234253e-01 4.4871619343757629e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1598 4.9996292218565941e-03</internalNodes>\n          <leafValues>\n            5.2641981840133667e-01 2.8983271121978760e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1599 -1.4656189596280456e-03</internalNodes>\n          <leafValues>\n            3.8917380571365356e-01 5.1978719234466553e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1600 -1.1975039960816503e-03</internalNodes>\n          <leafValues>\n            5.7958728075027466e-01 4.9279558658599854e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1601 -4.4954330660402775e-03</internalNodes>\n          <leafValues>\n            2.3776030540466309e-01 5.0125551223754883e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1602 1.4997160178609192e-04</internalNodes>\n          <leafValues>\n            4.8766261339187622e-01 5.6176078319549561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1603 2.6391509454697371e-03</internalNodes>\n          <leafValues>\n            5.1680880784988403e-01 3.7655091285705566e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1604 -2.9368131072260439e-04</internalNodes>\n          <leafValues>\n            5.4466491937637329e-01 4.8746308684349060e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1605 1.4211760135367513e-03</internalNodes>\n          <leafValues>\n            4.6878978610038757e-01 6.6913318634033203e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1606 7.9427637159824371e-02</internalNodes>\n          <leafValues>\n            5.1934438943862915e-01 2.7329459786415100e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1607 7.9937502741813660e-02</internalNodes>\n          <leafValues>\n            4.9717310070991516e-01 1.7820839583873749e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1608 1.1089259758591652e-02</internalNodes>\n          <leafValues>\n            5.1659947633743286e-01 3.2094758749008179e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1609 1.6560709627810866e-04</internalNodes>\n          <leafValues>\n            4.0584719181060791e-01 5.3072762489318848e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1610 -5.3354292176663876e-03</internalNodes>\n          <leafValues>\n            3.4450569748878479e-01 5.1581299304962158e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1611 1.1287260567769408e-03</internalNodes>\n          <leafValues>\n            4.5948630571365356e-01 6.0755330324172974e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1612 -2.1969219669699669e-02</internalNodes>\n          <leafValues>\n            1.6804009675979614e-01 5.2285957336425781e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1613 -2.1775320055894554e-04</internalNodes>\n          <leafValues>\n            3.8615968823432922e-01 5.2156728506088257e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1614 2.0200149447191507e-04</internalNodes>\n          <leafValues>\n            5.5179792642593384e-01 4.3630391359329224e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1615 -2.1733149886131287e-02</internalNodes>\n          <leafValues>\n            7.9994601011276245e-01 4.7898510098457336e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1616 -8.4399932529777288e-04</internalNodes>\n          <leafValues>\n            4.0859758853912354e-01 5.3747731447219849e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1617 -4.3895249837078154e-04</internalNodes>\n          <leafValues>\n            5.4704052209854126e-01 4.3661430478096008e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1618 1.5092400135472417e-03</internalNodes>\n          <leafValues>\n            4.9889969825744629e-01 5.8421492576599121e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1619 -3.5547839943319559e-03</internalNodes>\n          <leafValues>\n            6.7536902427673340e-01 4.7210058569908142e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1620 4.8191400128416717e-04</internalNodes>\n          <leafValues>\n            5.4158538579940796e-01 4.3571090698242188e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1621 -6.0264398343861103e-03</internalNodes>\n          <leafValues>\n            2.2585099935531616e-01 4.9918809533119202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1622 -1.1668140068650246e-02</internalNodes>\n          <leafValues>\n            6.2565547227859497e-01 4.9274989962577820e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1623 -2.8718370012938976e-03</internalNodes>\n          <leafValues>\n            3.9477849006652832e-01 5.2458018064498901e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1624 1.7051169648766518e-02</internalNodes>\n          <leafValues>\n            4.7525110840797424e-01 5.7942241430282593e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1625 -1.3352080248296261e-02</internalNodes>\n          <leafValues>\n            6.0411047935485840e-01 4.5445358753204346e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1626 -3.9301801007241011e-04</internalNodes>\n          <leafValues>\n            4.2582759261131287e-01 5.5449050664901733e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1627 3.0483349692076445e-03</internalNodes>\n          <leafValues>\n            5.2334201335906982e-01 3.7802729010581970e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1628 -4.3579288758337498e-03</internalNodes>\n          <leafValues>\n            6.3718891143798828e-01 4.8386740684509277e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1629 5.6661018170416355e-03</internalNodes>\n          <leafValues>\n            5.3747057914733887e-01 4.1636660695075989e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1630 6.0677339206449687e-05</internalNodes>\n          <leafValues>\n            4.6387958526611328e-01 5.3116250038146973e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1631 3.6738160997629166e-02</internalNodes>\n          <leafValues>\n            4.6886560320854187e-01 6.4665240049362183e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1632 8.6528137326240540e-03</internalNodes>\n          <leafValues>\n            5.2043187618255615e-01 2.1886579692363739e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1633 -1.5371359884738922e-01</internalNodes>\n          <leafValues>\n            1.6303719580173492e-01 4.9588400125503540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1634 -4.1560421232134104e-04</internalNodes>\n          <leafValues>\n            5.7744592428207397e-01 4.6964588761329651e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1635 -1.2640169588848948e-03</internalNodes>\n          <leafValues>\n            3.9771759510040283e-01 5.2171981334686279e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1636 -3.5473341122269630e-03</internalNodes>\n          <leafValues>\n            6.0465282201766968e-01 4.8083150386810303e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1637 3.0019069527043030e-05</internalNodes>\n          <leafValues>\n            3.9967238903045654e-01 5.2282011508941650e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1638 1.3113019522279501e-03</internalNodes>\n          <leafValues>\n            4.7121581435203552e-01 5.7659977674484253e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1639 -1.3374709524214268e-03</internalNodes>\n          <leafValues>\n            4.1095849871635437e-01 5.2531701326370239e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1640 2.0876709371805191e-02</internalNodes>\n          <leafValues>\n            5.2029937505722046e-01 1.7579819262027740e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1641 -7.5497948564589024e-03</internalNodes>\n          <leafValues>\n            6.5666097402572632e-01 4.6949750185012817e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1642 2.4188550189137459e-02</internalNodes>\n          <leafValues>\n            5.1286739110946655e-01 3.3702209591865540e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1643 -2.9358828905969858e-03</internalNodes>\n          <leafValues>\n            6.5807867050170898e-01 4.6945410966873169e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1644 5.7557929307222366e-02</internalNodes>\n          <leafValues>\n            5.1464450359344482e-01 2.7752599120140076e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1645 -1.1343370424583554e-03</internalNodes>\n          <leafValues>\n            3.8366019725799561e-01 5.1926672458648682e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1646 1.6816999763250351e-02</internalNodes>\n          <leafValues>\n            5.0855928659439087e-01 6.1772608757019043e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1647 5.0535178743302822e-03</internalNodes>\n          <leafValues>\n            5.1387631893157959e-01 3.6847919225692749e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1648 -4.5874710194766521e-03</internalNodes>\n          <leafValues>\n            5.9896552562713623e-01 4.8352020978927612e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1649 1.6882460331544280e-03</internalNodes>\n          <leafValues>\n            4.5094868540763855e-01 5.7230567932128906e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1650 -1.6554000321775675e-03</internalNodes>\n          <leafValues>\n            3.4967708587646484e-01 5.2433192729949951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1651 -1.9373800605535507e-02</internalNodes>\n          <leafValues>\n            1.1205369979143143e-01 4.9687129259109497e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1652 1.0374450124800205e-02</internalNodes>\n          <leafValues>\n            5.1481968164443970e-01 4.3952131271362305e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1653 1.4973050565458834e-04</internalNodes>\n          <leafValues>\n            4.0849998593330383e-01 5.2698868513107300e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1654 -4.2981930077075958e-02</internalNodes>\n          <leafValues>\n            6.3941049575805664e-01 5.0185042619705200e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1655 8.3065936341881752e-03</internalNodes>\n          <leafValues>\n            4.7075539827346802e-01 6.6983532905578613e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1656 -4.1285790503025055e-03</internalNodes>\n          <leafValues>\n            4.5413690805435181e-01 5.3236472606658936e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1657 1.7399420030415058e-03</internalNodes>\n          <leafValues>\n            4.3339619040489197e-01 5.4398661851882935e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1658 1.1739750334527344e-04</internalNodes>\n          <leafValues>\n            4.5796871185302734e-01 5.5434262752532959e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1659 1.8585780344437808e-04</internalNodes>\n          <leafValues>\n            4.3246439099311829e-01 5.4267549514770508e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1660 5.5587692186236382e-03</internalNodes>\n          <leafValues>\n            5.2572208642959595e-01 3.5506111383438110e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1661 -7.9851560294628143e-03</internalNodes>\n          <leafValues>\n            6.0430181026458740e-01 4.6306359767913818e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1662 6.0594122624024749e-04</internalNodes>\n          <leafValues>\n            4.5982548594474792e-01 5.5331951379776001e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1663 -2.2983040253166109e-04</internalNodes>\n          <leafValues>\n            4.1307520866394043e-01 5.3224611282348633e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1664 4.3740210821852088e-04</internalNodes>\n          <leafValues>\n            4.0430399775505066e-01 5.4092890024185181e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1665 2.9482020181603730e-04</internalNodes>\n          <leafValues>\n            4.4949638843536377e-01 5.6288522481918335e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1666 1.0312659665942192e-02</internalNodes>\n          <leafValues>\n            5.1775109767913818e-01 2.7043169736862183e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1667 -7.7241109684109688e-03</internalNodes>\n          <leafValues>\n            1.9880190491676331e-01 4.9805539846420288e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1668 -4.6797208487987518e-03</internalNodes>\n          <leafValues>\n            6.6447502374649048e-01 5.0182962417602539e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1669 -5.0755459815263748e-03</internalNodes>\n          <leafValues>\n            3.8983049988746643e-01 5.1852691173553467e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1670 2.2479740437120199e-03</internalNodes>\n          <leafValues>\n            4.8018088936805725e-01 5.6603360176086426e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1671 8.3327008178457618e-04</internalNodes>\n          <leafValues>\n            5.2109199762344360e-01 3.9571881294250488e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1672 -4.1279330849647522e-02</internalNodes>\n          <leafValues>\n            6.1545419692993164e-01 5.0070542097091675e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1673 -5.0930189900100231e-04</internalNodes>\n          <leafValues>\n            3.9759421348571777e-01 5.2284038066864014e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1674 1.2568780221045017e-03</internalNodes>\n          <leafValues>\n            4.9791380763053894e-01 5.9391832351684570e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1675 8.0048497766256332e-03</internalNodes>\n          <leafValues>\n            4.9844971299171448e-01 1.6333660483360291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1676 -1.1879300000146031e-03</internalNodes>\n          <leafValues>\n            5.9049648046493530e-01 4.9426248669624329e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1677 6.1948952497914433e-04</internalNodes>\n          <leafValues>\n            4.1995579004287720e-01 5.3287261724472046e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1678 6.6829859279096127e-03</internalNodes>\n          <leafValues>\n            5.4186028242111206e-01 4.9058890342712402e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1679 -3.7062340416014194e-03</internalNodes>\n          <leafValues>\n            3.7259390950202942e-01 5.1380002498626709e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1680 -3.9739411324262619e-02</internalNodes>\n          <leafValues>\n            6.4789611101150513e-01 5.0503468513488770e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1681 1.4085009461268783e-03</internalNodes>\n          <leafValues>\n            4.6823391318321228e-01 6.3778841495513916e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1682 3.9322688826359808e-04</internalNodes>\n          <leafValues>\n            5.4585301876068115e-01 4.1504821181297302e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1683 -1.8979819724336267e-03</internalNodes>\n          <leafValues>\n            3.6901599168777466e-01 5.1497042179107666e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1684 -1.3970440253615379e-02</internalNodes>\n          <leafValues>\n            6.0505628585815430e-01 4.8113578557968140e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1685 -1.0100819915533066e-01</internalNodes>\n          <leafValues>\n            2.0170800387859344e-01 4.9923619627952576e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1686 -1.7346920445561409e-02</internalNodes>\n          <leafValues>\n            5.7131487131118774e-01 4.8994860053062439e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1687 1.5619759506080300e-04</internalNodes>\n          <leafValues>\n            4.2153888940811157e-01 5.3926420211791992e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1688 1.3438929617404938e-01</internalNodes>\n          <leafValues>\n            5.1361519098281860e-01 3.7676128745079041e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1689 -2.4582240730524063e-02</internalNodes>\n          <leafValues>\n            7.0273578166961670e-01 4.7479069232940674e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1690 -3.8553720805794001e-03</internalNodes>\n          <leafValues>\n            4.3174090981483459e-01 5.4277169704437256e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1691 -2.3165249731391668e-03</internalNodes>\n          <leafValues>\n            5.9426987171173096e-01 4.6186479926109314e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1692 -4.8518120311200619e-03</internalNodes>\n          <leafValues>\n            6.1915689706802368e-01 4.8848950862884521e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1693 2.4699938949197531e-03</internalNodes>\n          <leafValues>\n            5.2566647529602051e-01 4.0171998739242554e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1694 4.5496959239244461e-02</internalNodes>\n          <leafValues>\n            5.2378678321838379e-01 2.6857739686965942e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1695 -2.0319599658250809e-02</internalNodes>\n          <leafValues>\n            2.1304459869861603e-01 4.9797388911247253e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1696 2.6994998916052282e-04</internalNodes>\n          <leafValues>\n            4.8140418529510498e-01 5.5431222915649414e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1697 -1.8232699949294329e-03</internalNodes>\n          <leafValues>\n            6.4825797080993652e-01 4.7099891304969788e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1698 -6.3015790656208992e-03</internalNodes>\n          <leafValues>\n            4.5819279551506042e-01 5.3062361478805542e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1699 -2.4139499873854220e-04</internalNodes>\n          <leafValues>\n            5.2320867776870728e-01 4.0517631173133850e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1700 -1.0330369696021080e-03</internalNodes>\n          <leafValues>\n            5.5562019348144531e-01 4.7891938686370850e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1701 1.8041160365100950e-04</internalNodes>\n          <leafValues>\n            5.2294427156448364e-01 4.0118101239204407e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1702 -6.1407860368490219e-02</internalNodes>\n          <leafValues>\n            6.2986820936203003e-01 5.0107032060623169e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1703 -6.9543913006782532e-02</internalNodes>\n          <leafValues>\n            7.2282809019088745e-01 4.7731840610504150e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1704 -7.0542663335800171e-02</internalNodes>\n          <leafValues>\n            2.2695130109786987e-01 5.1825290918350220e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1705 2.4423799477517605e-03</internalNodes>\n          <leafValues>\n            5.2370971441268921e-01 4.0981510281562805e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1706 1.5494349645450711e-03</internalNodes>\n          <leafValues>\n            4.7737509012222290e-01 5.4680430889129639e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1707 -2.3914219811558723e-02</internalNodes>\n          <leafValues>\n            7.1469759941101074e-01 4.7838249802589417e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1708 -1.2453690171241760e-02</internalNodes>\n          <leafValues>\n            2.6352968811988831e-01 5.2411228418350220e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1709 -2.0760179904755205e-04</internalNodes>\n          <leafValues>\n            3.6237570643424988e-01 5.1136088371276855e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1710 2.9781080229440704e-05</internalNodes>\n          <leafValues>\n            4.7059321403503418e-01 5.4328018426895142e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>211</maxWeakCount>\n      <stageThreshold>1.0474919891357422e+02</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1711 1.1772749945521355e-02</internalNodes>\n          <leafValues>\n            3.8605189323425293e-01 6.4211672544479370e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1712 2.7037570253014565e-02</internalNodes>\n          <leafValues>\n            4.3856549263000488e-01 6.7540389299392700e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1713 -3.6419500247575343e-05</internalNodes>\n          <leafValues>\n            5.4871010780334473e-01 3.4233158826828003e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1714 1.9995409529656172e-03</internalNodes>\n          <leafValues>\n            3.2305321097373962e-01 5.4003179073333740e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1715 4.5278300531208515e-03</internalNodes>\n          <leafValues>\n            5.0916397571563721e-01 2.9350438714027405e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1716 4.7890920541249216e-04</internalNodes>\n          <leafValues>\n            4.1781538724899292e-01 5.3440642356872559e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1717 1.1720920447260141e-03</internalNodes>\n          <leafValues>\n            2.8991821408271790e-01 5.1320707798004150e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1718 9.5305702416226268e-04</internalNodes>\n          <leafValues>\n            4.2801249027252197e-01 5.5608451366424561e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1719 1.5099150004971307e-05</internalNodes>\n          <leafValues>\n            4.0448719263076782e-01 5.4047602415084839e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1720 -6.0817901976406574e-04</internalNodes>\n          <leafValues>\n            4.2717689275741577e-01 5.5034661293029785e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1721 3.3224520739167929e-03</internalNodes>\n          <leafValues>\n            3.9627239108085632e-01 5.3697347640991211e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1722 -1.1037490330636501e-03</internalNodes>\n          <leafValues>\n            4.7271779179573059e-01 5.2377498149871826e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1723 -1.4350269921123981e-03</internalNodes>\n          <leafValues>\n            5.6030082702636719e-01 4.2235091328620911e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1724 2.0767399109899998e-03</internalNodes>\n          <leafValues>\n            5.2259171009063721e-01 4.7327259182929993e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1725 -1.6412809782195836e-04</internalNodes>\n          <leafValues>\n            3.9990758895874023e-01 5.4327398538589478e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1726 8.8302437216043472e-03</internalNodes>\n          <leafValues>\n            4.6783858537673950e-01 6.0273271799087524e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1727 -1.0552070103585720e-02</internalNodes>\n          <leafValues>\n            3.4939670562744141e-01 5.2139747142791748e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1728 -2.2731600329279900e-03</internalNodes>\n          <leafValues>\n            6.1858189105987549e-01 4.7490629553794861e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1729 -8.4786332445219159e-04</internalNodes>\n          <leafValues>\n            5.2853411436080933e-01 3.8434821367263794e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1730 1.2081359745934606e-03</internalNodes>\n          <leafValues>\n            5.3606408834457397e-01 3.4473359584808350e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1731 2.6512730401009321e-03</internalNodes>\n          <leafValues>\n            4.5582920312881470e-01 6.1939620971679688e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1732 -1.1012479662895203e-03</internalNodes>\n          <leafValues>\n            3.6802300810813904e-01 5.3276282548904419e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1733 4.9561518244445324e-04</internalNodes>\n          <leafValues>\n            3.9605951309204102e-01 5.2749407291412354e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1734 -4.3901771306991577e-02</internalNodes>\n          <leafValues>\n            7.0204448699951172e-01 4.9928390979766846e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1735 3.4690350294113159e-02</internalNodes>\n          <leafValues>\n            5.0491642951965332e-01 2.7666029334068298e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1736 -2.7442190330475569e-03</internalNodes>\n          <leafValues>\n            2.6726329326629639e-01 5.2749711275100708e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1737 3.3316588960587978e-03</internalNodes>\n          <leafValues>\n            4.5794829726219177e-01 6.0011017322540283e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1738 -2.0044570788741112e-02</internalNodes>\n          <leafValues>\n            3.1715941429138184e-01 5.2357178926467896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1739 1.3492030557245016e-03</internalNodes>\n          <leafValues>\n            5.2653628587722778e-01 4.0343248844146729e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1740 2.9702018946409225e-03</internalNodes>\n          <leafValues>\n            5.3324568271636963e-01 4.5719841122627258e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1741 6.3039981760084629e-03</internalNodes>\n          <leafValues>\n            4.5933109521865845e-01 6.0346359014511108e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1742 -1.2936590239405632e-02</internalNodes>\n          <leafValues>\n            4.4379639625549316e-01 5.3729712963104248e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1743 4.0148729458451271e-03</internalNodes>\n          <leafValues>\n            4.6803238987922668e-01 6.4378339052200317e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1744 -2.6401679497212172e-03</internalNodes>\n          <leafValues>\n            3.7096318602561951e-01 5.3143328428268433e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1745 1.3918439857661724e-02</internalNodes>\n          <leafValues>\n            4.7235551476478577e-01 7.1308088302612305e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1746 -4.5087869511917233e-04</internalNodes>\n          <leafValues>\n            4.4923940300941467e-01 5.3704041242599487e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1747 2.5384349282830954e-04</internalNodes>\n          <leafValues>\n            4.4068640470504761e-01 5.5144029855728149e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1748 2.2710000630468130e-03</internalNodes>\n          <leafValues>\n            4.6824169158935547e-01 5.9679841995239258e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1749 2.4120779708027840e-03</internalNodes>\n          <leafValues>\n            5.0793921947479248e-01 3.0185988545417786e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1750 -3.6025670851813629e-05</internalNodes>\n          <leafValues>\n            5.6010371446609497e-01 4.4710969924926758e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1751 -7.4905529618263245e-03</internalNodes>\n          <leafValues>\n            2.2075350582599640e-01 4.9899441003799438e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1752 -1.7513120546936989e-02</internalNodes>\n          <leafValues>\n            6.5312159061431885e-01 5.0176489353179932e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1753 1.4281630516052246e-01</internalNodes>\n          <leafValues>\n            4.9679630994796753e-01 1.4820620417594910e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1754 5.5345268920063972e-03</internalNodes>\n          <leafValues>\n            4.8989468812942505e-01 5.9542238712310791e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1755 -9.6323591424152255e-04</internalNodes>\n          <leafValues>\n            3.9271169900894165e-01 5.1960742473602295e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1756 -2.0370010752230883e-03</internalNodes>\n          <leafValues>\n            5.6133252382278442e-01 4.8848581314086914e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1757 1.6614829655736685e-03</internalNodes>\n          <leafValues>\n            4.4728800654411316e-01 5.5788809061050415e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1758 -3.1188090797513723e-03</internalNodes>\n          <leafValues>\n            3.8405328989028931e-01 5.3974777460098267e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1759 -6.4000617712736130e-03</internalNodes>\n          <leafValues>\n            5.8439838886260986e-01 4.5332181453704834e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1760 3.1319601112045348e-04</internalNodes>\n          <leafValues>\n            5.4392218589782715e-01 4.2347279191017151e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1761 -1.8222099170088768e-02</internalNodes>\n          <leafValues>\n            1.2884649634361267e-01 4.9584048986434937e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1762 8.7969247251749039e-03</internalNodes>\n          <leafValues>\n            4.9512979388237000e-01 7.1534800529479980e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1763 -4.2395070195198059e-03</internalNodes>\n          <leafValues>\n            3.9465999603271484e-01 5.1949369907379150e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1764 9.7086271271109581e-03</internalNodes>\n          <leafValues>\n            4.8975038528442383e-01 6.0649001598358154e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1765 -3.9934171363711357e-03</internalNodes>\n          <leafValues>\n            3.2454401254653931e-01 5.0608289241790771e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1766 -1.6785059124231339e-02</internalNodes>\n          <leafValues>\n            1.5819530189037323e-01 5.2037787437438965e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1767 1.8272090703248978e-02</internalNodes>\n          <leafValues>\n            4.6809351444244385e-01 6.6269791126251221e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1768 5.6872838176786900e-03</internalNodes>\n          <leafValues>\n            5.2116978168487549e-01 3.5121849179267883e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1769 -1.0739039862528443e-03</internalNodes>\n          <leafValues>\n            5.7683861255645752e-01 4.5298451185226440e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1770 -3.7093870341777802e-03</internalNodes>\n          <leafValues>\n            4.5077630877494812e-01 5.3135812282562256e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1771 -2.1110709349159151e-04</internalNodes>\n          <leafValues>\n            5.4608201980590820e-01 4.3333768844604492e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1772 1.0670139454305172e-03</internalNodes>\n          <leafValues>\n            5.3718560934066772e-01 4.0783908963203430e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1773 3.5943021066486835e-03</internalNodes>\n          <leafValues>\n            4.4712871313095093e-01 5.6438362598419189e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1774 -5.1776031032204628e-03</internalNodes>\n          <leafValues>\n            4.4993931055068970e-01 5.2803301811218262e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1775 -2.5414369883947074e-04</internalNodes>\n          <leafValues>\n            5.5161732435226440e-01 4.4077080488204956e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1776 6.3522560521960258e-03</internalNodes>\n          <leafValues>\n            5.1941901445388794e-01 2.4652279913425446e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1777 -4.4205080484971404e-04</internalNodes>\n          <leafValues>\n            3.8307058811187744e-01 5.1396822929382324e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1778 7.4488727841526270e-04</internalNodes>\n          <leafValues>\n            4.8910909891128540e-01 5.9747868776321411e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1779 -3.5116379149258137e-03</internalNodes>\n          <leafValues>\n            7.4136817455291748e-01 4.7687649726867676e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1780 -1.2540910392999649e-02</internalNodes>\n          <leafValues>\n            3.6488190293312073e-01 5.2528268098831177e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1781 9.4931852072477341e-03</internalNodes>\n          <leafValues>\n            5.1004928350448608e-01 3.6295869946479797e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1782 1.2961150147020817e-02</internalNodes>\n          <leafValues>\n            5.2324420213699341e-01 4.3335610628128052e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1783 4.7209449112415314e-03</internalNodes>\n          <leafValues>\n            4.6481490135192871e-01 6.3310527801513672e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1784 -2.3119079414755106e-03</internalNodes>\n          <leafValues>\n            5.9303098917007446e-01 4.5310580730438232e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1785 -2.8262299019843340e-03</internalNodes>\n          <leafValues>\n            3.8704779744148254e-01 5.2571010589599609e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1786 -1.4311339473351836e-03</internalNodes>\n          <leafValues>\n            5.5225032567977905e-01 4.5618548989295959e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1787 1.9378310535103083e-03</internalNodes>\n          <leafValues>\n            4.5462208986282349e-01 5.7369667291641235e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1788 2.6343559147790074e-04</internalNodes>\n          <leafValues>\n            5.3457391262054443e-01 4.5718750357627869e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1789 7.8257522545754910e-04</internalNodes>\n          <leafValues>\n            3.9678159356117249e-01 5.2201879024505615e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1790 -1.9550440832972527e-02</internalNodes>\n          <leafValues>\n            2.8296428918838501e-01 5.2435082197189331e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1791 4.3914958951063454e-04</internalNodes>\n          <leafValues>\n            4.5900669693946838e-01 5.8990901708602905e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1792 2.1452000364661217e-02</internalNodes>\n          <leafValues>\n            5.2314108610153198e-01 2.8553789854049683e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1793 5.8973580598831177e-04</internalNodes>\n          <leafValues>\n            4.3972569704055786e-01 5.5064219236373901e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1794 -2.6157610118389130e-02</internalNodes>\n          <leafValues>\n            3.1350791454315186e-01 5.1891750097274780e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1795 -1.3959860429167747e-02</internalNodes>\n          <leafValues>\n            3.2132729887962341e-01 5.0407177209854126e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1796 -6.3699018210172653e-03</internalNodes>\n          <leafValues>\n            6.3875448703765869e-01 4.8495069146156311e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1797 -8.5613820701837540e-03</internalNodes>\n          <leafValues>\n            2.7591320872306824e-01 5.0320190191268921e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1798 9.6622901037335396e-04</internalNodes>\n          <leafValues>\n            4.6856409311294556e-01 5.8348792791366577e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1799 7.6550268568098545e-04</internalNodes>\n          <leafValues>\n            5.1752072572708130e-01 3.8964220881462097e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1800 -8.1833340227603912e-03</internalNodes>\n          <leafValues>\n            2.0691369473934174e-01 5.2081221342086792e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1801 -9.3976939097046852e-03</internalNodes>\n          <leafValues>\n            6.1340910196304321e-01 4.6412229537963867e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1802 4.8028980381786823e-03</internalNodes>\n          <leafValues>\n            5.4541081190109253e-01 4.3952199816703796e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1803 -3.5680569708347321e-03</internalNodes>\n          <leafValues>\n            6.3444852828979492e-01 4.6810939908027649e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1804 4.0733120404183865e-03</internalNodes>\n          <leafValues>\n            5.2926832437515259e-01 4.0156200528144836e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1805 1.2568129459396005e-03</internalNodes>\n          <leafValues>\n            4.3929880857467651e-01 5.4528248310089111e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1806 -2.9065010603517294e-03</internalNodes>\n          <leafValues>\n            5.8988320827484131e-01 4.8633798956871033e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1807 -2.4409340694546700e-03</internalNodes>\n          <leafValues>\n            4.0693649649620056e-01 5.2474218606948853e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1808 2.4830700829625130e-02</internalNodes>\n          <leafValues>\n            5.1827257871627808e-01 3.6825248599052429e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1809 -4.8854008316993713e-02</internalNodes>\n          <leafValues>\n            1.3075779378414154e-01 4.9612811207771301e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1810 -1.6110379947349429e-03</internalNodes>\n          <leafValues>\n            6.4210057258605957e-01 4.8726621270179749e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1811 -9.7009479999542236e-02</internalNodes>\n          <leafValues>\n            4.7769349068403244e-02 4.9509888887405396e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1812 1.1209240183234215e-03</internalNodes>\n          <leafValues>\n            4.6162670850753784e-01 5.3547459840774536e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1813 -1.3064090162515640e-03</internalNodes>\n          <leafValues>\n            6.2618541717529297e-01 4.6388059854507446e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1814 4.5771620352752507e-04</internalNodes>\n          <leafValues>\n            5.3844177722930908e-01 4.6466401219367981e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1815 -6.3149951165542006e-04</internalNodes>\n          <leafValues>\n            3.8040471076965332e-01 5.1302570104598999e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1816 1.4505970466416329e-04</internalNodes>\n          <leafValues>\n            4.5543101429939270e-01 5.6644618511199951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1817 -1.6474550589919090e-02</internalNodes>\n          <leafValues>\n            6.5969580411911011e-01 4.7158598899841309e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1818 1.3369579799473286e-02</internalNodes>\n          <leafValues>\n            5.1954662799835205e-01 3.0359649658203125e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1819 1.0271780047332868e-04</internalNodes>\n          <leafValues>\n            5.2291762828826904e-01 4.1070660948753357e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1820 -5.5311559699475765e-03</internalNodes>\n          <leafValues>\n            6.3528877496719360e-01 4.9609071016311646e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1821 -2.6187049224972725e-03</internalNodes>\n          <leafValues>\n            3.8245460391044617e-01 5.1409840583801270e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1822 5.0834268331527710e-03</internalNodes>\n          <leafValues>\n            4.9504399299621582e-01 6.2208187580108643e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1823 7.9818159341812134e-02</internalNodes>\n          <leafValues>\n            4.9523359537124634e-01 1.3224759697914124e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1824 -9.9226586520671844e-02</internalNodes>\n          <leafValues>\n            7.5427287817001343e-01 5.0084167718887329e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1825 -6.5174017800018191e-04</internalNodes>\n          <leafValues>\n            3.6993029713630676e-01 5.1301211118698120e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1826 -1.8996849656105042e-02</internalNodes>\n          <leafValues>\n            6.6891789436340332e-01 4.9212029576301575e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1827 1.7346899956464767e-02</internalNodes>\n          <leafValues>\n            4.9833008646965027e-01 1.8591980636119843e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1828 5.5082101607695222e-04</internalNodes>\n          <leafValues>\n            4.5744240283966064e-01 5.5221217870712280e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1829 2.0056050270795822e-03</internalNodes>\n          <leafValues>\n            5.1317447423934937e-01 3.8564699888229370e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1830 -7.7688191086053848e-03</internalNodes>\n          <leafValues>\n            4.3617001175880432e-01 5.4343092441558838e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1831 5.0878278911113739e-02</internalNodes>\n          <leafValues>\n            4.6827208995819092e-01 6.8406397104263306e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1832 -2.2901780903339386e-03</internalNodes>\n          <leafValues>\n            4.3292450904846191e-01 5.3060990571975708e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1833 -1.5715380141045898e-04</internalNodes>\n          <leafValues>\n            5.3700572252273560e-01 4.3781641125679016e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1834 1.0519240051507950e-01</internalNodes>\n          <leafValues>\n            5.1372742652893066e-01 6.7361466586589813e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1835 2.7198919560760260e-03</internalNodes>\n          <leafValues>\n            4.1120609641075134e-01 5.2556651830673218e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1836 4.8337779939174652e-02</internalNodes>\n          <leafValues>\n            5.4046237468719482e-01 4.4389671087265015e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1837 9.5703761326149106e-04</internalNodes>\n          <leafValues>\n            4.3559691309928894e-01 5.3995108604431152e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1838 -2.5371259078383446e-02</internalNodes>\n          <leafValues>\n            5.9951752424240112e-01 5.0310248136520386e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1839 5.2457951009273529e-02</internalNodes>\n          <leafValues>\n            4.9502879381179810e-01 1.3983510434627533e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1840 -1.2365629896521568e-02</internalNodes>\n          <leafValues>\n            6.3972991704940796e-01 4.9641060829162598e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1841 -1.4589719474315643e-01</internalNodes>\n          <leafValues>\n            1.0016699880361557e-01 4.9463221430778503e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1842 -1.5908600762486458e-02</internalNodes>\n          <leafValues>\n            3.3123299479484558e-01 5.2083408832550049e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1843 3.9486068999394774e-04</internalNodes>\n          <leafValues>\n            4.4063639640808105e-01 5.4261028766632080e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1844 -5.2454001270234585e-03</internalNodes>\n          <leafValues>\n            2.7995899319648743e-01 5.1899671554565430e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1845 -5.0421799533069134e-03</internalNodes>\n          <leafValues>\n            6.9875800609588623e-01 4.7521421313285828e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1846 2.9812189750373363e-03</internalNodes>\n          <leafValues>\n            4.9832889437675476e-01 6.3074797391891479e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1847 -7.2884308174252510e-03</internalNodes>\n          <leafValues>\n            2.9823330044746399e-01 5.0268697738647461e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1848 1.5094350092113018e-03</internalNodes>\n          <leafValues>\n            5.3084421157836914e-01 3.8329708576202393e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1849 -9.3340799212455750e-03</internalNodes>\n          <leafValues>\n            2.0379640161991119e-01 4.9698171019554138e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1850 2.8667140752077103e-02</internalNodes>\n          <leafValues>\n            5.0256967544555664e-01 6.9280272722244263e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1851 1.7019680142402649e-01</internalNodes>\n          <leafValues>\n            4.9600529670715332e-01 1.4764429628849030e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1852 -3.2614478841423988e-03</internalNodes>\n          <leafValues>\n            5.6030637025833130e-01 4.8260560631752014e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1853 5.5769277969375253e-04</internalNodes>\n          <leafValues>\n            5.2055621147155762e-01 4.1296330094337463e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1854 3.6258339881896973e-01</internalNodes>\n          <leafValues>\n            5.2216529846191406e-01 3.7686121463775635e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1855 -1.1615130119025707e-02</internalNodes>\n          <leafValues>\n            6.0226827859878540e-01 4.6374899148941040e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1856 -4.0795197710394859e-03</internalNodes>\n          <leafValues>\n            4.0704470872879028e-01 5.3374791145324707e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1857 5.7204300537705421e-04</internalNodes>\n          <leafValues>\n            4.6018350124359131e-01 5.9003931283950806e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1858 6.7543348995968699e-04</internalNodes>\n          <leafValues>\n            5.3982520103454590e-01 4.3454289436340332e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1859 6.3295697327703238e-04</internalNodes>\n          <leafValues>\n            5.2015632390975952e-01 4.0513589978218079e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1860 1.2435320531949401e-03</internalNodes>\n          <leafValues>\n            4.6423879265785217e-01 5.5474412441253662e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1861 -4.7363857738673687e-03</internalNodes>\n          <leafValues>\n            6.1985671520233154e-01 4.6725520491600037e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1862 -6.4658462069928646e-03</internalNodes>\n          <leafValues>\n            6.8373328447341919e-01 5.0190007686614990e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1863 3.5017321351915598e-04</internalNodes>\n          <leafValues>\n            4.3448030948638916e-01 5.3636229038238525e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1864 1.5754920605104417e-04</internalNodes>\n          <leafValues>\n            4.7600790858268738e-01 5.7320207357406616e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1865 9.9774366244673729e-03</internalNodes>\n          <leafValues>\n            5.0909858942031860e-01 3.6350399255752563e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1866 -4.1464529931545258e-04</internalNodes>\n          <leafValues>\n            5.5700647830963135e-01 4.5938020944595337e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1867 -3.5888899583369493e-04</internalNodes>\n          <leafValues>\n            5.3568458557128906e-01 4.3391349911689758e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1868 4.0463250479660928e-04</internalNodes>\n          <leafValues>\n            4.4398030638694763e-01 5.4367768764495850e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1869 -8.2184787606820464e-04</internalNodes>\n          <leafValues>\n            4.0422949194908142e-01 5.1762992143630981e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1870 5.9467419050633907e-03</internalNodes>\n          <leafValues>\n            4.9276518821716309e-01 5.6337797641754150e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1871 -2.1753389388322830e-02</internalNodes>\n          <leafValues>\n            8.0062937736511230e-01 4.8008409142494202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1872 -1.4540379866957664e-02</internalNodes>\n          <leafValues>\n            3.9460548758506775e-01 5.1822227239608765e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1873 -4.0510769933462143e-02</internalNodes>\n          <leafValues>\n            2.1324990317225456e-02 4.9357929825782776e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1874 -5.8458268176764250e-04</internalNodes>\n          <leafValues>\n            4.0127959847450256e-01 5.3140252828598022e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1875 5.5151800625026226e-03</internalNodes>\n          <leafValues>\n            4.6424189209938049e-01 5.8962607383728027e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1876 -6.0626221820712090e-03</internalNodes>\n          <leafValues>\n            6.5021592378616333e-01 5.0164777040481567e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1877 9.4535842537879944e-02</internalNodes>\n          <leafValues>\n            5.2647089958190918e-01 4.1268271207809448e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1878 4.7315051779150963e-03</internalNodes>\n          <leafValues>\n            4.8791998624801636e-01 5.8924478292465210e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1879 -5.2571471314877272e-04</internalNodes>\n          <leafValues>\n            3.9172801375389099e-01 5.1894128322601318e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1880 -2.5464049540460110e-03</internalNodes>\n          <leafValues>\n            5.8375990390777588e-01 4.9857059121131897e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1881 -2.6075689122080803e-02</internalNodes>\n          <leafValues>\n            1.2619839608669281e-01 4.9558219313621521e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1882 -5.4779709316790104e-03</internalNodes>\n          <leafValues>\n            5.7225137948989868e-01 5.0102657079696655e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1883 5.1337741315364838e-03</internalNodes>\n          <leafValues>\n            5.2732622623443604e-01 4.2263761162757874e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1884 4.7944980906322598e-04</internalNodes>\n          <leafValues>\n            4.4500669836997986e-01 5.8195871114730835e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1885 -2.1114079281687737e-03</internalNodes>\n          <leafValues>\n            5.7576531171798706e-01 4.5117148756980896e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1886 -1.3179990462958813e-02</internalNodes>\n          <leafValues>\n            1.8843810260295868e-01 5.1607340574264526e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1887 -4.7968099825084209e-03</internalNodes>\n          <leafValues>\n            6.5897899866104126e-01 4.7361189126968384e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1888 6.7483168095350266e-03</internalNodes>\n          <leafValues>\n            5.2594298124313354e-01 3.3563950657844543e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1889 1.4623369788751006e-03</internalNodes>\n          <leafValues>\n            5.3552711009979248e-01 4.2640921473503113e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1890 4.7645159065723419e-03</internalNodes>\n          <leafValues>\n            5.0344067811965942e-01 5.7868278026580811e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1891 6.8066660314798355e-03</internalNodes>\n          <leafValues>\n            4.7566050291061401e-01 6.6778290271759033e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1892 3.6608621012419462e-03</internalNodes>\n          <leafValues>\n            5.3696119785308838e-01 4.3115469813346863e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1893 2.1449640393257141e-02</internalNodes>\n          <leafValues>\n            4.9686419963836670e-01 1.8888160586357117e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1894 4.1678901761770248e-03</internalNodes>\n          <leafValues>\n            4.9307331442832947e-01 5.8153688907623291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1895 8.6467564105987549e-03</internalNodes>\n          <leafValues>\n            5.2052050828933716e-01 4.1325950622558594e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1896 -3.6114078829996288e-04</internalNodes>\n          <leafValues>\n            5.4835551977157593e-01 4.8009279370307922e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1897 1.0808729566633701e-03</internalNodes>\n          <leafValues>\n            4.6899020671844482e-01 6.0414212942123413e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1898 5.7719959877431393e-03</internalNodes>\n          <leafValues>\n            5.1711422204971313e-01 3.0532771348953247e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1899 1.5720770461484790e-03</internalNodes>\n          <leafValues>\n            5.2199780941009521e-01 4.1788038611412048e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1900 -1.9307859474793077e-03</internalNodes>\n          <leafValues>\n            5.8603698015213013e-01 4.8129200935363770e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1901 -7.8926272690296173e-03</internalNodes>\n          <leafValues>\n            1.7492769658565521e-01 4.9717339873313904e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1902 -2.2224679123610258e-03</internalNodes>\n          <leafValues>\n            4.3425890803337097e-01 5.2128481864929199e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1903 1.9011989934369922e-03</internalNodes>\n          <leafValues>\n            4.7651869058609009e-01 6.8920552730560303e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1904 2.7576119173318148e-03</internalNodes>\n          <leafValues>\n            5.2621912956237793e-01 4.3374860286712646e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1905 5.1787449046969414e-03</internalNodes>\n          <leafValues>\n            4.8040691018104553e-01 7.8437292575836182e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1906 -9.0273341629654169e-04</internalNodes>\n          <leafValues>\n            4.1208469867706299e-01 5.3534239530563354e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1907 5.1797959022223949e-03</internalNodes>\n          <leafValues>\n            4.7403728961944580e-01 6.4259600639343262e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1908 -1.0114000178873539e-02</internalNodes>\n          <leafValues>\n            2.4687920510768890e-01 5.1750177145004272e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1909 -1.8617060035467148e-02</internalNodes>\n          <leafValues>\n            5.7562941312789917e-01 4.6289789676666260e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1910 5.9225959703326225e-03</internalNodes>\n          <leafValues>\n            5.1696258783340454e-01 3.2142710685729980e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1911 -6.2945079989731312e-03</internalNodes>\n          <leafValues>\n            3.8720148801803589e-01 5.1416367292404175e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1912 6.5353019163012505e-03</internalNodes>\n          <leafValues>\n            4.8530489206314087e-01 6.3104897737503052e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1913 1.0878399480134249e-03</internalNodes>\n          <leafValues>\n            5.1173150539398193e-01 3.7232589721679688e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1914 -2.2542240098118782e-02</internalNodes>\n          <leafValues>\n            5.6927400827407837e-01 4.8871129751205444e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1915 -3.0065660830587149e-03</internalNodes>\n          <leafValues>\n            2.5560128688812256e-01 5.0039929151535034e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1916 7.4741272255778313e-03</internalNodes>\n          <leafValues>\n            4.8108729720115662e-01 5.6759268045425415e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1917 2.6162320747971535e-02</internalNodes>\n          <leafValues>\n            4.9711948633193970e-01 1.7772370576858521e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1918 9.4352738233283162e-04</internalNodes>\n          <leafValues>\n            4.9400109052658081e-01 5.4912507534027100e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1919 3.3363241702318192e-02</internalNodes>\n          <leafValues>\n            5.0076121091842651e-01 2.7907240390777588e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1920 -1.5118650160729885e-02</internalNodes>\n          <leafValues>\n            7.0595788955688477e-01 4.9730318784713745e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1921 9.8648946732282639e-04</internalNodes>\n          <leafValues>\n            5.1286202669143677e-01 3.7767618894577026e-01</leafValues></_></weakClassifiers></_>\n    <_>\n      <maxWeakCount>213</maxWeakCount>\n      <stageThreshold>1.0576110076904297e+02</stageThreshold>\n      <weakClassifiers>\n        <_>\n          <internalNodes>\n            0 -1 1922 -9.5150798559188843e-02</internalNodes>\n          <leafValues>\n            6.4707571268081665e-01 4.0172868967056274e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1923 6.2702340073883533e-03</internalNodes>\n          <leafValues>\n            3.9998221397399902e-01 5.7464492321014404e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1924 3.0018089455552399e-04</internalNodes>\n          <leafValues>\n            3.5587701201438904e-01 5.5388098955154419e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1925 1.1757409665733576e-03</internalNodes>\n          <leafValues>\n            4.2565348744392395e-01 5.3826177120208740e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1926 4.4235268433112651e-05</internalNodes>\n          <leafValues>\n            3.6829081177711487e-01 5.5899268388748169e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1927 -2.9936920327600092e-05</internalNodes>\n          <leafValues>\n            5.4524701833724976e-01 4.0203678607940674e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1928 3.0073199886828661e-03</internalNodes>\n          <leafValues>\n            5.2390581369400024e-01 3.3178439736366272e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1929 -1.0513889603316784e-02</internalNodes>\n          <leafValues>\n            4.3206891417503357e-01 5.3079837560653687e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1930 8.3476826548576355e-03</internalNodes>\n          <leafValues>\n            4.5046371221542358e-01 6.4532989263534546e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1931 -3.1492270063608885e-03</internalNodes>\n          <leafValues>\n            4.3134251236915588e-01 5.3705251216888428e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1932 -1.4435649973165710e-05</internalNodes>\n          <leafValues>\n            5.3266030550003052e-01 3.8179719448089600e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1933 -4.2855090578086674e-04</internalNodes>\n          <leafValues>\n            4.3051639199256897e-01 5.3820097446441650e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1934 1.5062429883982986e-04</internalNodes>\n          <leafValues>\n            4.2359709739685059e-01 5.5449652671813965e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1935 7.1559831500053406e-02</internalNodes>\n          <leafValues>\n            5.3030598163604736e-01 2.6788029074668884e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1936 8.4095180500298738e-04</internalNodes>\n          <leafValues>\n            3.5571089386940002e-01 5.2054339647293091e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1937 6.2986500561237335e-02</internalNodes>\n          <leafValues>\n            5.2253627777099609e-01 2.8613761067390442e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1938 -3.3798629883676767e-03</internalNodes>\n          <leafValues>\n            3.6241859197616577e-01 5.2016979455947876e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1939 -1.1810739670181647e-04</internalNodes>\n          <leafValues>\n            5.4744768142700195e-01 3.9598938822746277e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1940 -5.4505601292476058e-04</internalNodes>\n          <leafValues>\n            3.7404221296310425e-01 5.2157157659530640e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1941 -1.8454910023137927e-03</internalNodes>\n          <leafValues>\n            5.8930522203445435e-01 4.5844489336013794e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1942 -4.3832371011376381e-04</internalNodes>\n          <leafValues>\n            4.0845820307731628e-01 5.3853511810302734e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1943 -2.4000830017030239e-03</internalNodes>\n          <leafValues>\n            3.7774550914764404e-01 5.2935802936553955e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1944 -9.8795741796493530e-02</internalNodes>\n          <leafValues>\n            2.9636120796203613e-01 5.0700891017913818e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1945 3.1798239797353745e-03</internalNodes>\n          <leafValues>\n            4.8776328563690186e-01 6.7264437675476074e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1946 3.2406419632025063e-04</internalNodes>\n          <leafValues>\n            4.3669110536575317e-01 5.5611097812652588e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1947 -3.2547250390052795e-02</internalNodes>\n          <leafValues>\n            3.1281578540802002e-01 5.3086161613464355e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1948 -7.7561130747199059e-03</internalNodes>\n          <leafValues>\n            6.5602248907089233e-01 4.6398720145225525e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1949 1.6027249395847321e-02</internalNodes>\n          <leafValues>\n            5.1726800203323364e-01 3.1418979167938232e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1950 7.1002350523485802e-06</internalNodes>\n          <leafValues>\n            4.0844461321830750e-01 5.3362947702407837e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1951 7.3422808200120926e-03</internalNodes>\n          <leafValues>\n            4.9669221043586731e-01 6.6034650802612305e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1952 -1.6970280557870865e-03</internalNodes>\n          <leafValues>\n            5.9082370996475220e-01 4.5001828670501709e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1953 2.4118260480463505e-03</internalNodes>\n          <leafValues>\n            5.3151607513427734e-01 3.5997208952903748e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1954 -5.5300937965512276e-03</internalNodes>\n          <leafValues>\n            2.3340409994125366e-01 4.9968141317367554e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1955 -2.6478730142116547e-03</internalNodes>\n          <leafValues>\n            5.8809357881546021e-01 4.6847340464591980e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1956 1.1295629665255547e-02</internalNodes>\n          <leafValues>\n            4.9837771058082581e-01 1.8845909833908081e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1957 -6.6952878842130303e-04</internalNodes>\n          <leafValues>\n            5.8721381425857544e-01 4.7990199923515320e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1958 1.4410680159926414e-03</internalNodes>\n          <leafValues>\n            5.1311892271041870e-01 3.5010111331939697e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1959 2.4637870956212282e-03</internalNodes>\n          <leafValues>\n            5.3393721580505371e-01 4.1176390647888184e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1960 3.3114518737420440e-04</internalNodes>\n          <leafValues>\n            4.3133831024169922e-01 5.3982460498809814e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1961 -3.3557269722223282e-02</internalNodes>\n          <leafValues>\n            2.6753368973731995e-01 5.1791548728942871e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1962 1.8539419397711754e-02</internalNodes>\n          <leafValues>\n            4.9738699197769165e-01 2.3171770572662354e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1963 -2.9698139405809343e-04</internalNodes>\n          <leafValues>\n            5.5297082662582397e-01 4.6436640620231628e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1964 -4.5577259152196348e-04</internalNodes>\n          <leafValues>\n            5.6295841932296753e-01 4.4691911339759827e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1965 -1.0158980265259743e-02</internalNodes>\n          <leafValues>\n            6.7062127590179443e-01 4.9259188771247864e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1966 -2.2413829356082715e-05</internalNodes>\n          <leafValues>\n            5.2394217252731323e-01 3.9129018783569336e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1967 7.2034963523037732e-05</internalNodes>\n          <leafValues>\n            4.7994381189346313e-01 5.5017888545989990e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1968 -6.9267209619283676e-03</internalNodes>\n          <leafValues>\n            6.9300097227096558e-01 4.6980848908424377e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1969 -7.6997838914394379e-03</internalNodes>\n          <leafValues>\n            4.0996238589286804e-01 5.4808831214904785e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1970 -7.3130549862980843e-03</internalNodes>\n          <leafValues>\n            3.2834759354591370e-01 5.0578862428665161e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1971 1.9650589674711227e-03</internalNodes>\n          <leafValues>\n            4.9780470132827759e-01 6.3982498645782471e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1972 7.1647600270807743e-03</internalNodes>\n          <leafValues>\n            4.6611601114273071e-01 6.2221372127532959e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1973 -2.4078639224171638e-02</internalNodes>\n          <leafValues>\n            2.3346449434757233e-01 5.2221620082855225e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1974 -2.1027969196438789e-02</internalNodes>\n          <leafValues>\n            1.1836539953947067e-01 4.9382260441780090e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1975 3.6017020465806127e-04</internalNodes>\n          <leafValues>\n            5.3250199556350708e-01 4.1167110204696655e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1976 -1.7219729721546173e-02</internalNodes>\n          <leafValues>\n            6.2787622213363647e-01 4.6642690896987915e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1977 -7.8672142699360847e-03</internalNodes>\n          <leafValues>\n            3.4034150838851929e-01 5.2497369050979614e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1978 -4.4777389848604798e-04</internalNodes>\n          <leafValues>\n            3.6104118824005127e-01 5.0862592458724976e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1979 5.5486010387539864e-03</internalNodes>\n          <leafValues>\n            4.8842659592628479e-01 6.2034982442855835e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1980 -6.9461148232221603e-03</internalNodes>\n          <leafValues>\n            2.6259300112724304e-01 5.0110971927642822e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1981 1.3569870498031378e-04</internalNodes>\n          <leafValues>\n            4.3407949805259705e-01 5.6283122301101685e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1982 -4.5880250632762909e-02</internalNodes>\n          <leafValues>\n            6.5079987049102783e-01 4.6962749958038330e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1983 -2.1582560613751411e-02</internalNodes>\n          <leafValues>\n            3.8265028595924377e-01 5.2876168489456177e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1984 -2.0209539681673050e-02</internalNodes>\n          <leafValues>\n            3.2333680987358093e-01 5.0744771957397461e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1985 5.8496710844337940e-03</internalNodes>\n          <leafValues>\n            5.1776039600372314e-01 4.4896709918975830e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1986 -5.7476379879517481e-05</internalNodes>\n          <leafValues>\n            4.0208509564399719e-01 5.2463638782501221e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1987 -1.1513100471347570e-03</internalNodes>\n          <leafValues>\n            6.3150721788406372e-01 4.9051541090011597e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1988 1.9862831104546785e-03</internalNodes>\n          <leafValues>\n            4.7024598717689514e-01 6.4971512556076050e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1989 -5.2719512023031712e-03</internalNodes>\n          <leafValues>\n            3.6503839492797852e-01 5.2276527881622314e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1990 1.2662699446082115e-03</internalNodes>\n          <leafValues>\n            5.1661008596420288e-01 3.8776180148124695e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1991 -6.2919440679252148e-03</internalNodes>\n          <leafValues>\n            7.3758941888809204e-01 5.0238478183746338e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1992 6.7360111279413104e-04</internalNodes>\n          <leafValues>\n            4.4232261180877686e-01 5.4955857992172241e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1993 -1.0523450328037143e-03</internalNodes>\n          <leafValues>\n            5.9763962030410767e-01 4.8595830798149109e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1994 -4.4216238893568516e-04</internalNodes>\n          <leafValues>\n            5.9559392929077148e-01 4.3989309668540955e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1995 1.1747940443456173e-03</internalNodes>\n          <leafValues>\n            5.3498882055282593e-01 4.6050581336021423e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1996 5.2457437850534916e-03</internalNodes>\n          <leafValues>\n            5.0491911172866821e-01 2.9415771365165710e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1997 -2.4539720267057419e-02</internalNodes>\n          <leafValues>\n            2.5501778721809387e-01 5.2185869216918945e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1998 7.3793041519820690e-04</internalNodes>\n          <leafValues>\n            4.4248610734939575e-01 5.4908162355422974e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 1999 1.4233799884095788e-03</internalNodes>\n          <leafValues>\n            5.3195142745971680e-01 4.0813559293746948e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2000 -2.4149110540747643e-03</internalNodes>\n          <leafValues>\n            4.0876591205596924e-01 5.2389502525329590e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2001 -1.2165299849584699e-03</internalNodes>\n          <leafValues>\n            5.6745791435241699e-01 4.9080529808998108e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2002 -1.2438809499144554e-03</internalNodes>\n          <leafValues>\n            4.1294258832931519e-01 5.2561181783676147e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2003 6.1942739412188530e-03</internalNodes>\n          <leafValues>\n            5.0601941347122192e-01 7.3136532306671143e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2004 -1.6607169527560472e-03</internalNodes>\n          <leafValues>\n            5.9796321392059326e-01 4.5963698625564575e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2005 -2.7316259220242500e-02</internalNodes>\n          <leafValues>\n            4.1743651032447815e-01 5.3088420629501343e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2006 -1.5845570014789701e-03</internalNodes>\n          <leafValues>\n            5.6158047914505005e-01 4.5194861292839050e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2007 -1.5514739789068699e-03</internalNodes>\n          <leafValues>\n            4.0761870145797729e-01 5.3607851266860962e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2008 3.8446558755822480e-04</internalNodes>\n          <leafValues>\n            4.3472939729690552e-01 5.4304420948028564e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2009 -1.4672259800136089e-02</internalNodes>\n          <leafValues>\n            1.6593049466609955e-01 5.1460939645767212e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2010 8.1608882173895836e-03</internalNodes>\n          <leafValues>\n            4.9618190526962280e-01 1.8847459554672241e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2011 1.1121659772470593e-03</internalNodes>\n          <leafValues>\n            4.8682639002799988e-01 6.0938161611557007e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2012 -7.2603770531713963e-03</internalNodes>\n          <leafValues>\n            6.2843251228332520e-01 4.6903759241104126e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2013 -2.4046430189628154e-04</internalNodes>\n          <leafValues>\n            5.5750000476837158e-01 4.0460440516471863e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2014 -2.3348190006799996e-04</internalNodes>\n          <leafValues>\n            4.1157621145248413e-01 5.2528482675552368e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2015 5.5736480280756950e-03</internalNodes>\n          <leafValues>\n            4.7300729155540466e-01 5.6901007890701294e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2016 3.0623769387602806e-02</internalNodes>\n          <leafValues>\n            4.9718868732452393e-01 1.7400950193405151e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2017 9.2074798885732889e-04</internalNodes>\n          <leafValues>\n            5.3721177577972412e-01 4.3548721075057983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2018 -4.3550739064812660e-05</internalNodes>\n          <leafValues>\n            5.3668838739395142e-01 4.3473169207572937e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2019 -6.6452710889279842e-03</internalNodes>\n          <leafValues>\n            3.4355181455612183e-01 5.1605331897735596e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2020 4.3221998959779739e-02</internalNodes>\n          <leafValues>\n            4.7667920589447021e-01 7.2936528921127319e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2021 2.2331769578158855e-03</internalNodes>\n          <leafValues>\n            5.0293159484863281e-01 5.6331712007522583e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2022 3.1829739455133677e-03</internalNodes>\n          <leafValues>\n            4.0160921216011047e-01 5.1921367645263672e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2023 -1.8027749320026487e-04</internalNodes>\n          <leafValues>\n            4.0883159637451172e-01 5.4179197549819946e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2024 -5.2934689447283745e-03</internalNodes>\n          <leafValues>\n            4.0756770968437195e-01 5.2435618638992310e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2025 1.2750959722325206e-03</internalNodes>\n          <leafValues>\n            4.9132829904556274e-01 6.3870108127593994e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2026 4.3385322205722332e-03</internalNodes>\n          <leafValues>\n            5.0316721200942993e-01 2.9473468661308289e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2027 8.5250744596123695e-03</internalNodes>\n          <leafValues>\n            4.9497890472412109e-01 6.3088691234588623e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2028 -9.4266352243721485e-04</internalNodes>\n          <leafValues>\n            5.3283667564392090e-01 4.2856499552726746e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2029 1.3609660090878606e-03</internalNodes>\n          <leafValues>\n            4.9915251135826111e-01 5.9415012598037720e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2030 4.4782509212382138e-04</internalNodes>\n          <leafValues>\n            4.5735040307044983e-01 5.8544808626174927e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2031 1.3360050506889820e-03</internalNodes>\n          <leafValues>\n            4.6043589711189270e-01 5.8490520715713501e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2032 -6.0967548051849008e-04</internalNodes>\n          <leafValues>\n            3.9693889021873474e-01 5.2294230461120605e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2033 -2.3656780831515789e-03</internalNodes>\n          <leafValues>\n            5.8083200454711914e-01 4.8983570933341980e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2034 1.0734340175986290e-03</internalNodes>\n          <leafValues>\n            4.3512108922004700e-01 5.4700392484664917e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2035 2.1923359017819166e-03</internalNodes>\n          <leafValues>\n            5.3550601005554199e-01 3.8429039716720581e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2036 5.4968618787825108e-03</internalNodes>\n          <leafValues>\n            5.0181388854980469e-01 2.8271919488906860e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2037 -7.5368821620941162e-02</internalNodes>\n          <leafValues>\n            1.2250760197639465e-01 5.1488268375396729e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2038 2.5134470313787460e-02</internalNodes>\n          <leafValues>\n            4.7317668795585632e-01 7.0254462957382202e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2039 -2.9358599931583740e-05</internalNodes>\n          <leafValues>\n            5.4305320978164673e-01 4.6560868620872498e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2040 -5.8355910005047917e-04</internalNodes>\n          <leafValues>\n            4.0310400724411011e-01 5.1901197433471680e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2041 -2.6639450807124376e-03</internalNodes>\n          <leafValues>\n            4.3081268668174744e-01 5.1617711782455444e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2042 -1.3804089976474643e-03</internalNodes>\n          <leafValues>\n            6.2198299169540405e-01 4.6955159306526184e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2043 1.2313219485804439e-03</internalNodes>\n          <leafValues>\n            5.3793638944625854e-01 4.4258311390876770e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2044 -1.4644179827882908e-05</internalNodes>\n          <leafValues>\n            5.2816402912139893e-01 4.2225030064582825e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2045 -1.2818809598684311e-02</internalNodes>\n          <leafValues>\n            2.5820928812026978e-01 5.1799327135086060e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2046 2.2852189838886261e-02</internalNodes>\n          <leafValues>\n            4.7786930203437805e-01 7.6092642545700073e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2047 8.2305970136076212e-04</internalNodes>\n          <leafValues>\n            5.3409922122955322e-01 4.6717241406440735e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2048 1.2770120054483414e-02</internalNodes>\n          <leafValues>\n            4.9657610058784485e-01 1.4723660051822662e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2049 -5.0051510334014893e-02</internalNodes>\n          <leafValues>\n            6.4149940013885498e-01 5.0165921449661255e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2050 1.5775270760059357e-02</internalNodes>\n          <leafValues>\n            4.5223200321197510e-01 5.6853622198104858e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2051 -1.8501620739698410e-02</internalNodes>\n          <leafValues>\n            2.7647489309310913e-01 5.1379591226577759e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2052 2.4626250378787518e-03</internalNodes>\n          <leafValues>\n            5.1419419050216675e-01 3.7954080104827881e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2053 6.2916167080402374e-02</internalNodes>\n          <leafValues>\n            5.0606489181518555e-01 6.5804338455200195e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2054 -2.1648500478477217e-05</internalNodes>\n          <leafValues>\n            5.1953881978988647e-01 4.0198868513107300e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2055 2.1180990152060986e-03</internalNodes>\n          <leafValues>\n            4.9623650312423706e-01 5.9544587135314941e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2056 -1.6634890809655190e-02</internalNodes>\n          <leafValues>\n            3.7579330801963806e-01 5.1754468679428101e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2057 -2.8899470344185829e-03</internalNodes>\n          <leafValues>\n            6.6240137815475464e-01 5.0571787357330322e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2058 7.6783262193202972e-02</internalNodes>\n          <leafValues>\n            4.7957968711853027e-01 8.0477148294448853e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2059 3.9170677773654461e-03</internalNodes>\n          <leafValues>\n            4.9378821253776550e-01 5.7199418544769287e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2060 -7.2670601308345795e-02</internalNodes>\n          <leafValues>\n            5.3894560784101486e-02 4.9439039826393127e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2061 5.4039502143859863e-01</internalNodes>\n          <leafValues>\n            5.1297742128372192e-01 1.1433389782905579e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2062 2.9510019812732935e-03</internalNodes>\n          <leafValues>\n            4.5283439755439758e-01 5.6985741853713989e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2063 3.4508369863033295e-03</internalNodes>\n          <leafValues>\n            5.3577268123626709e-01 4.2187309265136719e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2064 -4.2077939724549651e-04</internalNodes>\n          <leafValues>\n            5.9161728620529175e-01 4.6379259228706360e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2065 3.3051050268113613e-03</internalNodes>\n          <leafValues>\n            5.2733850479125977e-01 4.3820428848266602e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2066 4.7735060798004270e-04</internalNodes>\n          <leafValues>\n            4.0465280413627625e-01 5.1818847656250000e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2067 -2.5928510352969170e-02</internalNodes>\n          <leafValues>\n            7.4522358179092407e-01 5.0893861055374146e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2068 -2.9729790985584259e-03</internalNodes>\n          <leafValues>\n            3.2954359054565430e-01 5.0587952136993408e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2069 5.8508329093456268e-03</internalNodes>\n          <leafValues>\n            4.8571440577507019e-01 5.7930248975753784e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2070 -4.5967519283294678e-02</internalNodes>\n          <leafValues>\n            4.3127310276031494e-01 5.3806531429290771e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2071 1.5585960447788239e-01</internalNodes>\n          <leafValues>\n            5.1961702108383179e-01 1.6847139596939087e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2072 1.5164829790592194e-02</internalNodes>\n          <leafValues>\n            4.7357571125030518e-01 6.7350268363952637e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2073 -1.0604249546304345e-03</internalNodes>\n          <leafValues>\n            5.8229267597198486e-01 4.7757029533386230e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2074 6.6476291976869106e-03</internalNodes>\n          <leafValues>\n            4.9991989135742188e-01 2.3195350170135498e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2075 -1.2231130152940750e-02</internalNodes>\n          <leafValues>\n            4.7508931159973145e-01 5.2629822492599487e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2076 5.6528882123529911e-03</internalNodes>\n          <leafValues>\n            5.0697678327560425e-01 3.5618188977241516e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2077 1.2977829901501536e-03</internalNodes>\n          <leafValues>\n            4.8756939172744751e-01 5.6190627813339233e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2078 1.0781589895486832e-02</internalNodes>\n          <leafValues>\n            4.7507700324058533e-01 6.7823082208633423e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2079 2.8654779307544231e-03</internalNodes>\n          <leafValues>\n            5.3054618835449219e-01 4.2907360196113586e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2080 2.8663428965955973e-03</internalNodes>\n          <leafValues>\n            4.5184791088104248e-01 5.5393511056900024e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2081 -5.1983320154249668e-03</internalNodes>\n          <leafValues>\n            4.1491198539733887e-01 5.4341888427734375e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2082 5.3739990107715130e-03</internalNodes>\n          <leafValues>\n            4.7178968787193298e-01 6.5076571702957153e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2083 -1.4641529880464077e-02</internalNodes>\n          <leafValues>\n            2.1721640229225159e-01 5.1617771387100220e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2084 -1.5042580344015732e-05</internalNodes>\n          <leafValues>\n            5.3373837471008301e-01 4.2988368868827820e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2085 -1.1875660129589960e-04</internalNodes>\n          <leafValues>\n            4.6045941114425659e-01 5.5824470520019531e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2086 1.6995530575513840e-02</internalNodes>\n          <leafValues>\n            4.9458950757980347e-01 7.3880076408386230e-02</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2087 -3.5095941275358200e-02</internalNodes>\n          <leafValues>\n            7.0055091381072998e-01 4.9775910377502441e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2088 2.4217350874096155e-03</internalNodes>\n          <leafValues>\n            4.4662651419639587e-01 5.4776942729949951e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2089 -9.6340337768197060e-04</internalNodes>\n          <leafValues>\n            4.7140988707542419e-01 5.3133380413055420e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2090 1.6391130338888615e-04</internalNodes>\n          <leafValues>\n            4.3315461277961731e-01 5.3422421216964722e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2091 -2.1141460165381432e-02</internalNodes>\n          <leafValues>\n            2.6447001099586487e-01 5.2044987678527832e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2092 8.7775202700868249e-04</internalNodes>\n          <leafValues>\n            5.2083498239517212e-01 4.1527429223060608e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2093 -2.7943920344114304e-02</internalNodes>\n          <leafValues>\n            6.3441252708435059e-01 5.0188118219375610e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2094 6.7297378554940224e-03</internalNodes>\n          <leafValues>\n            5.0504380464553833e-01 3.5008639097213745e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2095 2.3281039670109749e-02</internalNodes>\n          <leafValues>\n            4.9663180112838745e-01 6.9686770439147949e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2096 -1.1644979938864708e-02</internalNodes>\n          <leafValues>\n            3.3002600073814392e-01 5.0496298074722290e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2097 1.5764309093356133e-02</internalNodes>\n          <leafValues>\n            4.9915981292724609e-01 7.3211538791656494e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2098 -1.3611479662358761e-03</internalNodes>\n          <leafValues>\n            3.9117351174354553e-01 5.1606708765029907e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2099 -8.1522337859496474e-04</internalNodes>\n          <leafValues>\n            5.6289112567901611e-01 4.9497190117835999e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2100 -6.0066272271797061e-04</internalNodes>\n          <leafValues>\n            5.8535951375961304e-01 4.5505958795547485e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2101 4.9715518252924085e-04</internalNodes>\n          <leafValues>\n            4.2714700102806091e-01 5.4435992240905762e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2102 2.3475370835512877e-03</internalNodes>\n          <leafValues>\n            5.1431107521057129e-01 3.8876569271087646e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2103 -8.9261569082736969e-03</internalNodes>\n          <leafValues>\n            6.0445022583007812e-01 4.9717208743095398e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2104 -1.3919910416007042e-02</internalNodes>\n          <leafValues>\n            2.5831609964370728e-01 5.0003677606582642e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2105 1.0209949687123299e-03</internalNodes>\n          <leafValues>\n            4.8573741316795349e-01 5.5603581666946411e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2106 -2.7441629208624363e-03</internalNodes>\n          <leafValues>\n            5.9368848800659180e-01 4.6457770466804504e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2107 -1.6200130805373192e-02</internalNodes>\n          <leafValues>\n            3.1630149483680725e-01 5.1934951543807983e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2108 4.3331980705261230e-03</internalNodes>\n          <leafValues>\n            5.0612241029739380e-01 3.4588789939880371e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2109 5.8497930876910686e-04</internalNodes>\n          <leafValues>\n            4.7790178656578064e-01 5.8701777458190918e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2110 -2.2466450463980436e-03</internalNodes>\n          <leafValues>\n            4.2978510260581970e-01 5.3747731447219849e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2111 2.3146099410951138e-03</internalNodes>\n          <leafValues>\n            5.4386717081069946e-01 4.6409699320793152e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2112 8.7679121643304825e-03</internalNodes>\n          <leafValues>\n            4.7268930077552795e-01 6.7717897891998291e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2113 -2.2448020172305405e-04</internalNodes>\n          <leafValues>\n            4.2291730642318726e-01 5.4280489683151245e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2114 -7.4336021207273006e-03</internalNodes>\n          <leafValues>\n            6.0988807678222656e-01 4.6836739778518677e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2115 -2.3189240600913763e-03</internalNodes>\n          <leafValues>\n            5.6894367933273315e-01 4.4242420792579651e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2116 -2.1042178850620985e-03</internalNodes>\n          <leafValues>\n            3.7622210383415222e-01 5.1870870590209961e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2117 4.6034841216169298e-04</internalNodes>\n          <leafValues>\n            4.6994051337242126e-01 5.7712072134017944e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2118 1.0547629790380597e-03</internalNodes>\n          <leafValues>\n            4.4652169942855835e-01 5.6017017364501953e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2119 8.7148818420246243e-04</internalNodes>\n          <leafValues>\n            5.4498052597045898e-01 3.9147090911865234e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2120 3.3364820410497487e-04</internalNodes>\n          <leafValues>\n            4.5640090107917786e-01 5.6457388401031494e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2121 -1.4853250468149781e-03</internalNodes>\n          <leafValues>\n            5.7473778724670410e-01 4.6927788853645325e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2122 3.0251620337367058e-03</internalNodes>\n          <leafValues>\n            5.1661968231201172e-01 3.7628141045570374e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2123 5.0280741415917873e-03</internalNodes>\n          <leafValues>\n            5.0021117925643921e-01 6.1515271663665771e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2124 -5.8164511574432254e-04</internalNodes>\n          <leafValues>\n            5.3945982456207275e-01 4.3907511234283447e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2125 4.5141529291868210e-02</internalNodes>\n          <leafValues>\n            5.1883268356323242e-01 2.0630359649658203e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2126 -1.0795620037242770e-03</internalNodes>\n          <leafValues>\n            3.9046850800514221e-01 5.1379072666168213e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2127 1.5995999274309725e-04</internalNodes>\n          <leafValues>\n            4.8953229188919067e-01 5.4275041818618774e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2128 -1.9359270110726357e-02</internalNodes>\n          <leafValues>\n            6.9752287864685059e-01 4.7735071182250977e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2129 2.0725509524345398e-01</internalNodes>\n          <leafValues>\n            5.2336359024047852e-01 3.0349919199943542e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2130 -4.1953290929086506e-04</internalNodes>\n          <leafValues>\n            5.4193967580795288e-01 4.4601860642433167e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2131 2.2582069505006075e-03</internalNodes>\n          <leafValues>\n            4.8157641291618347e-01 6.0274088382720947e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2132 -6.7811207845807076e-03</internalNodes>\n          <leafValues>\n            3.9802789688110352e-01 5.1833057403564453e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2133 1.1154309846460819e-02</internalNodes>\n          <leafValues>\n            5.4312318563461304e-01 4.1887599229812622e-01</leafValues></_>\n        <_>\n          <internalNodes>\n            0 -1 2134 4.3162431567907333e-02</internalNodes>\n          <leafValues>\n            4.7382280230522156e-01 6.5229612588882446e-01</leafValues></_></weakClassifiers></_></stages>\n  <features>\n    <_>\n      <rects>\n        <_>\n          3 7 14 4 -1.</_>\n        <_>\n          3 9 14 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 18 4 -1.</_>\n        <_>\n          7 2 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 15 9 -1.</_>\n        <_>\n          1 10 15 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 2 6 -1.</_>\n        <_>\n          5 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 3 -1.</_>\n        <_>\n          9 5 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 12 9 -1.</_>\n        <_>\n          4 3 12 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 10 8 -1.</_>\n        <_>\n          6 13 10 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 14 8 -1.</_>\n        <_>\n          3 10 14 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 1 6 10 -1.</_>\n        <_>\n          14 1 3 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 5 12 -1.</_>\n        <_>\n          7 12 5 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 18 3 -1.</_>\n        <_>\n          7 1 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 17 2 -1.</_>\n        <_>\n          1 9 17 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 6 4 2 -1.</_>\n        <_>\n          16 7 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 17 2 2 -1.</_>\n        <_>\n          5 18 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 12 -1.</_>\n        <_>\n          14 2 3 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 4 12 -1.</_>\n        <_>\n          4 0 2 6 2.</_>\n        <_>\n          6 6 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 18 8 -1.</_>\n        <_>\n          8 11 6 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 2 -1.</_>\n        <_>\n          5 8 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 5 3 -1.</_>\n        <_>\n          15 12 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 10 9 -1.</_>\n        <_>\n          5 6 10 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 14 -1.</_>\n        <_>\n          9 11 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 5 4 12 -1.</_>\n        <_>\n          3 9 4 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 5 -1.</_>\n        <_>\n          8 5 4 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 10 8 -1.</_>\n        <_>\n          5 10 10 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 6 9 -1.</_>\n        <_>\n          8 3 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 1 8 -1.</_>\n        <_>\n          9 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 20 6 -1.</_>\n        <_>\n          0 9 20 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 17 -1.</_>\n        <_>\n          9 0 2 17 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 6 4 -1.</_>\n        <_>\n          11 0 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 6 4 -1.</_>\n        <_>\n          7 1 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 1 6 16 -1.</_>\n        <_>\n          14 1 2 16 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 18 8 -1.</_>\n        <_>\n          0 5 9 4 2.</_>\n        <_>\n          9 9 9 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 10 4 -1.</_>\n        <_>\n          13 15 5 2 2.</_>\n        <_>\n          8 17 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 4 8 -1.</_>\n        <_>\n          3 1 2 4 2.</_>\n        <_>\n          5 5 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 14 10 -1.</_>\n        <_>\n          10 6 7 5 2.</_>\n        <_>\n          3 11 7 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 6 16 -1.</_>\n        <_>\n          4 1 2 16 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 18 20 2 -1.</_>\n        <_>\n          0 19 20 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 3 -1.</_>\n        <_>\n          8 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 12 9 6 -1.</_>\n        <_>\n          0 14 9 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 3 4 -1.</_>\n        <_>\n          5 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 2 16 -1.</_>\n        <_>\n          9 11 2 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 13 8 -1.</_>\n        <_>\n          3 10 13 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 8 2 -1.</_>\n        <_>\n          12 3 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 4 12 -1.</_>\n        <_>\n          8 12 4 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 8 6 -1.</_>\n        <_>\n          15 3 4 3 2.</_>\n        <_>\n          11 6 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 19 -1.</_>\n        <_>\n          9 1 2 19 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 6 4 -1.</_>\n        <_>\n          11 0 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 9 3 -1.</_>\n        <_>\n          6 1 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 10 4 -1.</_>\n        <_>\n          13 15 5 2 2.</_>\n        <_>\n          8 17 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 6 10 -1.</_>\n        <_>\n          3 3 3 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 15 15 -1.</_>\n        <_>\n          3 9 15 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 8 6 -1.</_>\n        <_>\n          6 7 8 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 12 10 -1.</_>\n        <_>\n          10 4 6 5 2.</_>\n        <_>\n          4 9 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 4 4 -1.</_>\n        <_>\n          8 4 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 1 2 -1.</_>\n        <_>\n          15 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 2 2 -1.</_>\n        <_>\n          3 12 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 11 1 3 -1.</_>\n        <_>\n          16 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 15 6 4 -1.</_>\n        <_>\n          3 15 3 2 2.</_>\n        <_>\n          6 17 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 8 2 -1.</_>\n        <_>\n          6 8 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 1 3 -1.</_>\n        <_>\n          3 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 12 2 -1.</_>\n        <_>\n          6 1 12 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 6 2 -1.</_>\n        <_>\n          7 16 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 4 6 -1.</_>\n        <_>\n          0 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 12 2 -1.</_>\n        <_>\n          8 12 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 1 9 -1.</_>\n        <_>\n          6 6 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 17 3 2 -1.</_>\n        <_>\n          11 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 4 -1.</_>\n        <_>\n          9 6 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 17 3 2 -1.</_>\n        <_>\n          8 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 17 3 3 -1.</_>\n        <_>\n          11 17 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 3 2 -1.</_>\n        <_>\n          8 13 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 6 2 -1.</_>\n        <_>\n          11 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 14 4 -1.</_>\n        <_>\n          3 13 14 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 18 4 -1.</_>\n        <_>\n          10 10 9 2 2.</_>\n        <_>\n          1 12 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 3 3 -1.</_>\n        <_>\n          0 11 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 1 6 6 -1.</_>\n        <_>\n          11 1 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 6 -1.</_>\n        <_>\n          9 7 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 9 -1.</_>\n        <_>\n          1 3 18 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 10 2 6 -1.</_>\n        <_>\n          12 13 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 19 8 -1.</_>\n        <_>\n          0 9 19 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 9 -1.</_>\n        <_>\n          9 0 2 9 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 6 1 -1.</_>\n        <_>\n          7 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 6 1 -1.</_>\n        <_>\n          13 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 4 6 -1.</_>\n        <_>\n          5 13 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 6 1 -1.</_>\n        <_>\n          13 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 12 6 -1.</_>\n        <_>\n          4 6 12 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 12 2 6 -1.</_>\n        <_>\n          15 14 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 2 2 -1.</_>\n        <_>\n          10 3 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 3 1 -1.</_>\n        <_>\n          10 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 4 14 -1.</_>\n        <_>\n          3 1 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 4 4 -1.</_>\n        <_>\n          11 0 2 2 2.</_>\n        <_>\n          9 2 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 1 14 -1.</_>\n        <_>\n          7 12 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 0 1 4 -1.</_>\n        <_>\n          19 2 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 6 4 -1.</_>\n        <_>\n          8 5 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 18 3 2 -1.</_>\n        <_>\n          10 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 18 3 2 -1.</_>\n        <_>\n          9 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 6 -1.</_>\n        <_>\n          4 7 12 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 2 6 -1.</_>\n        <_>\n          3 14 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 2 12 -1.</_>\n        <_>\n          10 12 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 18 3 2 -1.</_>\n        <_>\n          8 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 6 2 -1.</_>\n        <_>\n          11 0 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 9 3 -1.</_>\n        <_>\n          5 12 9 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 6 2 -1.</_>\n        <_>\n          11 0 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 18 5 -1.</_>\n        <_>\n          7 1 6 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 4 4 -1.</_>\n        <_>\n          10 0 2 2 2.</_>\n        <_>\n          8 2 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 1 3 -1.</_>\n        <_>\n          3 13 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 5 3 -1.</_>\n        <_>\n          8 15 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 10 12 -1.</_>\n        <_>\n          5 4 5 6 2.</_>\n        <_>\n          10 10 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 9 12 -1.</_>\n        <_>\n          9 10 9 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 12 14 -1.</_>\n        <_>\n          2 2 6 7 2.</_>\n        <_>\n          8 9 6 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 12 2 -1.</_>\n        <_>\n          8 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 6 4 -1.</_>\n        <_>\n          7 6 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 11 8 -1.</_>\n        <_>\n          4 9 11 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 10 16 4 -1.</_>\n        <_>\n          3 12 16 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 16 2 -1.</_>\n        <_>\n          0 1 16 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 2 -1.</_>\n        <_>\n          9 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 6 10 -1.</_>\n        <_>\n          3 2 3 5 2.</_>\n        <_>\n          6 7 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 5 8 15 -1.</_>\n        <_>\n          10 10 8 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 8 6 -1.</_>\n        <_>\n          3 14 4 3 2.</_>\n        <_>\n          7 17 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 2 2 -1.</_>\n        <_>\n          14 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 7 6 -1.</_>\n        <_>\n          1 13 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 4 4 3 -1.</_>\n        <_>\n          15 4 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 9 14 6 -1.</_>\n        <_>\n          2 9 7 3 2.</_>\n        <_>\n          9 12 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 4 -1.</_>\n        <_>\n          5 9 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 8 8 -1.</_>\n        <_>\n          6 9 4 4 2.</_>\n        <_>\n          10 13 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 1 3 2 -1.</_>\n        <_>\n          14 2 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 4 2 -1.</_>\n        <_>\n          3 4 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 2 8 -1.</_>\n        <_>\n          11 14 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 5 3 -1.</_>\n        <_>\n          0 1 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 5 18 8 -1.</_>\n        <_>\n          11 5 9 4 2.</_>\n        <_>\n          2 9 9 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 1 6 -1.</_>\n        <_>\n          6 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 1 1 3 -1.</_>\n        <_>\n          19 2 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 6 -1.</_>\n        <_>\n          9 6 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 1 1 3 -1.</_>\n        <_>\n          19 2 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 2 3 -1.</_>\n        <_>\n          3 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 4 8 12 -1.</_>\n        <_>\n          12 4 4 6 2.</_>\n        <_>\n          8 10 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 6 3 -1.</_>\n        <_>\n          7 2 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 9 10 -1.</_>\n        <_>\n          6 6 9 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 6 12 -1.</_>\n        <_>\n          2 4 2 12 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 3 -1.</_>\n        <_>\n          15 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 5 3 -1.</_>\n        <_>\n          7 15 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 3 3 -1.</_>\n        <_>\n          15 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 14 8 3 -1.</_>\n        <_>\n          6 15 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 3 3 -1.</_>\n        <_>\n          15 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 13 3 3 -1.</_>\n        <_>\n          2 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 12 12 -1.</_>\n        <_>\n          10 7 6 6 2.</_>\n        <_>\n          4 13 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 6 -1.</_>\n        <_>\n          10 7 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 5 2 -1.</_>\n        <_>\n          8 10 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 3 4 -1.</_>\n        <_>\n          9 6 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 8 -1.</_>\n        <_>\n          9 10 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 3 6 -1.</_>\n        <_>\n          8 7 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 3 3 -1.</_>\n        <_>\n          12 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 6 1 -1.</_>\n        <_>\n          7 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 10 3 -1.</_>\n        <_>\n          5 7 10 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 6 9 -1.</_>\n        <_>\n          7 6 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 9 1 -1.</_>\n        <_>\n          9 7 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 16 8 -1.</_>\n        <_>\n          2 12 16 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 2 6 -1.</_>\n        <_>\n          14 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 5 6 15 -1.</_>\n        <_>\n          1 10 6 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 6 9 -1.</_>\n        <_>\n          10 3 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 7 14 -1.</_>\n        <_>\n          6 13 7 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 3 6 -1.</_>\n        <_>\n          13 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 15 4 -1.</_>\n        <_>\n          6 8 5 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 3 10 -1.</_>\n        <_>\n          11 7 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 4 6 -1.</_>\n        <_>\n          3 9 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 3 6 10 -1.</_>\n        <_>\n          15 3 2 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 8 10 -1.</_>\n        <_>\n          5 7 4 5 2.</_>\n        <_>\n          9 12 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 12 12 -1.</_>\n        <_>\n          10 4 6 6 2.</_>\n        <_>\n          4 10 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 6 9 -1.</_>\n        <_>\n          3 4 2 9 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 2 5 -1.</_>\n        <_>\n          11 3 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 2 5 -1.</_>\n        <_>\n          8 3 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 2 3 -1.</_>\n        <_>\n          10 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 6 2 -1.</_>\n        <_>\n          8 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 12 6 -1.</_>\n        <_>\n          4 14 12 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 5 9 -1.</_>\n        <_>\n          11 14 5 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 15 3 2 -1.</_>\n        <_>\n          6 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 5 -1.</_>\n        <_>\n          12 0 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 6 7 -1.</_>\n        <_>\n          8 5 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 1 9 -1.</_>\n        <_>\n          13 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 4 8 -1.</_>\n        <_>\n          3 2 2 4 2.</_>\n        <_>\n          5 6 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 12 4 6 -1.</_>\n        <_>\n          13 14 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 4 6 -1.</_>\n        <_>\n          3 14 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 3 4 -1.</_>\n        <_>\n          13 13 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 4 3 -1.</_>\n        <_>\n          4 5 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 11 8 -1.</_>\n        <_>\n          7 9 11 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 3 4 -1.</_>\n        <_>\n          8 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 1 6 1 -1.</_>\n        <_>\n          11 1 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 3 3 -1.</_>\n        <_>\n          5 6 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 20 6 -1.</_>\n        <_>\n          10 9 10 3 2.</_>\n        <_>\n          0 12 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 3 5 -1.</_>\n        <_>\n          9 6 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 1 3 -1.</_>\n        <_>\n          11 1 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 4 2 -1.</_>\n        <_>\n          4 3 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 6 4 3 -1.</_>\n        <_>\n          12 7 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 6 4 -1.</_>\n        <_>\n          7 0 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 8 -1.</_>\n        <_>\n          10 7 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 2 -1.</_>\n        <_>\n          10 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 14 4 -1.</_>\n        <_>\n          13 7 7 2 2.</_>\n        <_>\n          6 9 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 3 6 -1.</_>\n        <_>\n          0 7 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 3 4 -1.</_>\n        <_>\n          13 13 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 3 4 -1.</_>\n        <_>\n          4 13 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 12 8 -1.</_>\n        <_>\n          11 9 6 4 2.</_>\n        <_>\n          5 13 6 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 1 3 -1.</_>\n        <_>\n          9 13 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 15 2 4 -1.</_>\n        <_>\n          10 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 1 -1.</_>\n        <_>\n          9 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 6 6 -1.</_>\n        <_>\n          15 3 3 3 2.</_>\n        <_>\n          12 6 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 10 6 -1.</_>\n        <_>\n          0 6 10 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 3 8 14 -1.</_>\n        <_>\n          12 3 4 7 2.</_>\n        <_>\n          8 10 4 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 7 15 -1.</_>\n        <_>\n          4 9 7 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 6 8 -1.</_>\n        <_>\n          15 2 3 4 2.</_>\n        <_>\n          12 6 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 6 8 -1.</_>\n        <_>\n          2 2 3 4 2.</_>\n        <_>\n          5 6 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 13 18 7 -1.</_>\n        <_>\n          8 13 6 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 8 14 -1.</_>\n        <_>\n          4 3 4 7 2.</_>\n        <_>\n          8 10 4 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 6 -1.</_>\n        <_>\n          18 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 6 -1.</_>\n        <_>\n          18 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 2 6 -1.</_>\n        <_>\n          0 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 5 18 6 -1.</_>\n        <_>\n          1 7 18 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 6 7 -1.</_>\n        <_>\n          3 2 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 6 14 -1.</_>\n        <_>\n          7 10 6 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 13 10 -1.</_>\n        <_>\n          3 12 13 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 15 2 2 -1.</_>\n        <_>\n          11 16 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 16 4 -1.</_>\n        <_>\n          2 11 8 2 2.</_>\n        <_>\n          10 13 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 6 4 -1.</_>\n        <_>\n          16 7 3 2 2.</_>\n        <_>\n          13 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 3 9 -1.</_>\n        <_>\n          6 13 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 1 6 -1.</_>\n        <_>\n          14 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 4 1 -1.</_>\n        <_>\n          7 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 8 15 5 -1.</_>\n        <_>\n          8 8 5 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 6 5 4 -1.</_>\n        <_>\n          1 8 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 17 6 -1.</_>\n        <_>\n          3 3 17 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 8 2 -1.</_>\n        <_>\n          10 7 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 2 -1.</_>\n        <_>\n          10 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 2 -1.</_>\n        <_>\n          9 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 4 2 -1.</_>\n        <_>\n          8 10 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 4 3 -1.</_>\n        <_>\n          8 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 4 -1.</_>\n        <_>\n          9 5 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 3 -1.</_>\n        <_>\n          8 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 12 6 -1.</_>\n        <_>\n          10 7 6 3 2.</_>\n        <_>\n          4 10 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          9 8 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 3 8 -1.</_>\n        <_>\n          8 4 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 3 6 -1.</_>\n        <_>\n          11 0 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 4 8 -1.</_>\n        <_>\n          8 3 2 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 6 13 -1.</_>\n        <_>\n          14 3 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 3 6 -1.</_>\n        <_>\n          8 16 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 6 13 -1.</_>\n        <_>\n          14 3 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 10 4 -1.</_>\n        <_>\n          0 7 5 2 2.</_>\n        <_>\n          5 9 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 6 13 -1.</_>\n        <_>\n          14 3 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 6 13 -1.</_>\n        <_>\n          3 3 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 1 4 1 -1.</_>\n        <_>\n          9 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 2 1 -1.</_>\n        <_>\n          9 0 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 4 4 -1.</_>\n        <_>\n          12 16 2 2 2.</_>\n        <_>\n          10 18 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 3 -1.</_>\n        <_>\n          10 6 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 2 -1.</_>\n        <_>\n          8 5 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 5 -1.</_>\n        <_>\n          9 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 8 6 -1.</_>\n        <_>\n          6 6 8 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 12 -1.</_>\n        <_>\n          9 11 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 6 6 8 -1.</_>\n        <_>\n          4 10 6 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 8 5 -1.</_>\n        <_>\n          12 2 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 18 3 -1.</_>\n        <_>\n          0 9 18 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 8 -1.</_>\n        <_>\n          8 16 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 8 5 -1.</_>\n        <_>\n          4 2 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 3 4 -1.</_>\n        <_>\n          13 13 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 6 1 -1.</_>\n        <_>\n          7 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 3 1 -1.</_>\n        <_>\n          12 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 5 3 -1.</_>\n        <_>\n          7 14 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 7 6 -1.</_>\n        <_>\n          11 14 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 7 6 -1.</_>\n        <_>\n          2 14 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 14 2 6 -1.</_>\n        <_>\n          12 16 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 3 3 -1.</_>\n        <_>\n          8 15 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 5 -1.</_>\n        <_>\n          12 0 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 4 9 -1.</_>\n        <_>\n          8 1 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 6 1 -1.</_>\n        <_>\n          12 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 3 4 -1.</_>\n        <_>\n          8 10 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          8 13 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 18 4 2 -1.</_>\n        <_>\n          5 19 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 18 6 -1.</_>\n        <_>\n          2 3 18 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 2 -1.</_>\n        <_>\n          7 0 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 8 6 2 -1.</_>\n        <_>\n          16 8 3 1 2.</_>\n        <_>\n          13 9 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 3 6 -1.</_>\n        <_>\n          6 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 20 4 -1.</_>\n        <_>\n          10 13 10 2 2.</_>\n        <_>\n          0 15 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 5 -1.</_>\n        <_>\n          9 7 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 2 2 -1.</_>\n        <_>\n          11 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 6 2 -1.</_>\n        <_>\n          1 8 3 1 2.</_>\n        <_>\n          4 9 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 20 2 -1.</_>\n        <_>\n          10 2 10 1 2.</_>\n        <_>\n          0 3 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 5 3 -1.</_>\n        <_>\n          7 15 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 6 -1.</_>\n        <_>\n          10 13 3 3 2.</_>\n        <_>\n          7 16 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 3 -1.</_>\n        <_>\n          9 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 11 1 6 -1.</_>\n        <_>\n          16 13 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 1 6 -1.</_>\n        <_>\n          3 13 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 14 12 -1.</_>\n        <_>\n          11 4 7 6 2.</_>\n        <_>\n          4 10 7 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 3 3 -1.</_>\n        <_>\n          13 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 8 3 -1.</_>\n        <_>\n          6 7 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 3 3 -1.</_>\n        <_>\n          13 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 4 10 -1.</_>\n        <_>\n          3 1 2 5 2.</_>\n        <_>\n          5 6 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 2 -1.</_>\n        <_>\n          5 7 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          9 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 12 2 3 -1.</_>\n        <_>\n          15 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 3 4 -1.</_>\n        <_>\n          8 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 1 12 -1.</_>\n        <_>\n          13 10 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 12 -1.</_>\n        <_>\n          4 5 6 6 2.</_>\n        <_>\n          10 11 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 7 3 -1.</_>\n        <_>\n          7 15 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 2 3 -1.</_>\n        <_>\n          3 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 14 2 -1.</_>\n        <_>\n          10 2 7 1 2.</_>\n        <_>\n          3 3 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 3 10 -1.</_>\n        <_>\n          1 1 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 6 5 -1.</_>\n        <_>\n          11 0 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 6 2 -1.</_>\n        <_>\n          8 7 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 10 -1.</_>\n        <_>\n          7 6 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 18 3 -1.</_>\n        <_>\n          7 1 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 6 -1.</_>\n        <_>\n          16 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 7 6 -1.</_>\n        <_>\n          6 6 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 12 2 -1.</_>\n        <_>\n          8 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 17 10 -1.</_>\n        <_>\n          0 9 17 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 15 16 -1.</_>\n        <_>\n          3 12 15 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 6 4 -1.</_>\n        <_>\n          7 17 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 2 4 9 -1.</_>\n        <_>\n          15 2 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 3 2 -1.</_>\n        <_>\n          2 4 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 6 7 9 -1.</_>\n        <_>\n          13 9 7 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 3 -1.</_>\n        <_>\n          8 12 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 20 6 -1.</_>\n        <_>\n          10 2 10 3 2.</_>\n        <_>\n          0 5 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 6 10 -1.</_>\n        <_>\n          3 2 3 5 2.</_>\n        <_>\n          6 7 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 10 3 4 -1.</_>\n        <_>\n          13 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 10 3 4 -1.</_>\n        <_>\n          4 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 3 -1.</_>\n        <_>\n          9 5 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 8 -1.</_>\n        <_>\n          7 10 6 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 11 20 6 -1.</_>\n        <_>\n          0 14 20 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 13 4 6 -1.</_>\n        <_>\n          4 13 2 3 2.</_>\n        <_>\n          6 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 12 -1.</_>\n        <_>\n          10 0 4 6 2.</_>\n        <_>\n          6 6 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 15 2 -1.</_>\n        <_>\n          2 1 15 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 3 -1.</_>\n        <_>\n          9 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 1 2 -1.</_>\n        <_>\n          3 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 3 1 -1.</_>\n        <_>\n          8 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 7 3 6 -1.</_>\n        <_>\n          17 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 3 2 -1.</_>\n        <_>\n          8 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 5 3 -1.</_>\n        <_>\n          11 5 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 5 3 -1.</_>\n        <_>\n          4 5 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 3 1 2 -1.</_>\n        <_>\n          19 4 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 4 3 -1.</_>\n        <_>\n          5 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 7 3 6 -1.</_>\n        <_>\n          17 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 3 6 -1.</_>\n        <_>\n          0 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 9 -1.</_>\n        <_>\n          14 5 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 5 6 -1.</_>\n        <_>\n          0 6 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 5 6 2 -1.</_>\n        <_>\n          12 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 6 2 -1.</_>\n        <_>\n          6 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 4 6 -1.</_>\n        <_>\n          8 3 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 6 -1.</_>\n        <_>\n          0 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 8 3 -1.</_>\n        <_>\n          6 7 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 5 9 -1.</_>\n        <_>\n          0 4 5 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 15 -1.</_>\n        <_>\n          16 0 2 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 3 2 -1.</_>\n        <_>\n          1 11 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 4 1 10 -1.</_>\n        <_>\n          14 9 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 4 12 -1.</_>\n        <_>\n          2 1 2 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 4 2 -1.</_>\n        <_>\n          11 11 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 4 2 -1.</_>\n        <_>\n          7 11 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 8 15 5 -1.</_>\n        <_>\n          8 8 5 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 6 10 -1.</_>\n        <_>\n          3 0 3 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 3 2 -1.</_>\n        <_>\n          12 4 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 3 8 -1.</_>\n        <_>\n          8 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 5 3 -1.</_>\n        <_>\n          8 15 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 4 3 -1.</_>\n        <_>\n          7 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 3 2 -1.</_>\n        <_>\n          12 4 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 15 14 4 -1.</_>\n        <_>\n          3 15 7 2 2.</_>\n        <_>\n          10 17 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 16 4 -1.</_>\n        <_>\n          10 2 8 2 2.</_>\n        <_>\n          2 4 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 6 12 -1.</_>\n        <_>\n          3 8 3 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 2 -1.</_>\n        <_>\n          5 7 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 5 -1.</_>\n        <_>\n          10 7 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 6 4 -1.</_>\n        <_>\n          16 7 3 2 2.</_>\n        <_>\n          13 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 8 2 -1.</_>\n        <_>\n          0 14 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 6 4 -1.</_>\n        <_>\n          16 7 3 2 2.</_>\n        <_>\n          13 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 6 4 -1.</_>\n        <_>\n          1 7 3 2 2.</_>\n        <_>\n          4 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 6 1 12 -1.</_>\n        <_>\n          12 12 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 6 -1.</_>\n        <_>\n          10 5 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 2 3 -1.</_>\n        <_>\n          14 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 3 -1.</_>\n        <_>\n          4 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 3 -1.</_>\n        <_>\n          8 13 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 2 4 -1.</_>\n        <_>\n          5 2 1 2 2.</_>\n        <_>\n          6 4 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 11 3 -1.</_>\n        <_>\n          5 6 11 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 4 12 -1.</_>\n        <_>\n          7 12 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 13 8 5 -1.</_>\n        <_>\n          12 13 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 1 12 -1.</_>\n        <_>\n          7 12 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 6 3 -1.</_>\n        <_>\n          4 2 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 10 -1.</_>\n        <_>\n          12 5 3 5 2.</_>\n        <_>\n          9 10 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 8 12 -1.</_>\n        <_>\n          5 5 4 6 2.</_>\n        <_>\n          9 11 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 20 6 -1.</_>\n        <_>\n          0 9 20 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 2 2 -1.</_>\n        <_>\n          4 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 18 12 2 -1.</_>\n        <_>\n          8 18 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 4 16 -1.</_>\n        <_>\n          7 12 4 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 7 8 -1.</_>\n        <_>\n          7 10 7 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 3 1 -1.</_>\n        <_>\n          7 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 15 2 4 -1.</_>\n        <_>\n          11 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 5 4 8 -1.</_>\n        <_>\n          3 9 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 12 -1.</_>\n        <_>\n          7 7 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 6 6 2 -1.</_>\n        <_>\n          6 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 4 4 6 -1.</_>\n        <_>\n          16 6 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 3 5 2 -1.</_>\n        <_>\n          3 4 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 4 2 -1.</_>\n        <_>\n          2 17 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 6 -1.</_>\n        <_>\n          10 13 3 3 2.</_>\n        <_>\n          7 16 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 3 4 -1.</_>\n        <_>\n          8 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 4 6 -1.</_>\n        <_>\n          0 6 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 12 3 -1.</_>\n        <_>\n          9 6 4 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 14 -1.</_>\n        <_>\n          9 6 2 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          10 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 2 4 -1.</_>\n        <_>\n          6 14 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 7 6 -1.</_>\n        <_>\n          10 14 7 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 15 2 -1.</_>\n        <_>\n          1 1 15 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 6 -1.</_>\n        <_>\n          14 0 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 3 1 -1.</_>\n        <_>\n          6 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 6 -1.</_>\n        <_>\n          14 0 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 20 10 -1.</_>\n        <_>\n          0 8 20 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 6 -1.</_>\n        <_>\n          14 0 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 6 6 -1.</_>\n        <_>\n          3 0 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 15 1 2 -1.</_>\n        <_>\n          19 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 4 8 -1.</_>\n        <_>\n          2 2 2 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 18 4 -1.</_>\n        <_>\n          11 1 9 2 2.</_>\n        <_>\n          2 3 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 1 2 -1.</_>\n        <_>\n          8 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 10 6 -1.</_>\n        <_>\n          10 2 5 3 2.</_>\n        <_>\n          5 5 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 4 -1.</_>\n        <_>\n          10 7 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          10 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 8 -1.</_>\n        <_>\n          8 5 4 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 15 4 3 -1.</_>\n        <_>\n          15 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 18 3 1 -1.</_>\n        <_>\n          9 18 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 4 3 -1.</_>\n        <_>\n          9 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 4 3 -1.</_>\n        <_>\n          7 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 15 1 2 -1.</_>\n        <_>\n          19 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 8 4 -1.</_>\n        <_>\n          0 17 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 6 4 -1.</_>\n        <_>\n          11 3 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 14 6 -1.</_>\n        <_>\n          3 16 14 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 6 6 -1.</_>\n        <_>\n          6 6 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 10 6 -1.</_>\n        <_>\n          5 14 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 10 3 4 -1.</_>\n        <_>\n          4 10 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 9 2 2 -1.</_>\n        <_>\n          13 9 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 6 4 -1.</_>\n        <_>\n          7 3 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          10 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 2 3 -1.</_>\n        <_>\n          2 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 3 12 -1.</_>\n        <_>\n          9 12 3 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 4 6 -1.</_>\n        <_>\n          3 14 2 3 2.</_>\n        <_>\n          5 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 15 2 2 -1.</_>\n        <_>\n          16 16 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 15 2 2 -1.</_>\n        <_>\n          2 16 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 3 -1.</_>\n        <_>\n          8 13 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 20 1 -1.</_>\n        <_>\n          10 7 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 8 3 -1.</_>\n        <_>\n          7 6 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 8 2 -1.</_>\n        <_>\n          9 7 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 5 -1.</_>\n        <_>\n          10 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 5 -1.</_>\n        <_>\n          9 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 1 3 5 -1.</_>\n        <_>\n          12 1 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 2 3 6 -1.</_>\n        <_>\n          7 2 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 14 6 5 -1.</_>\n        <_>\n          14 14 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 2 -1.</_>\n        <_>\n          9 9 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 1 3 -1.</_>\n        <_>\n          10 8 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 2 2 -1.</_>\n        <_>\n          6 6 1 1 2.</_>\n        <_>\n          7 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 18 4 -1.</_>\n        <_>\n          11 11 9 2 2.</_>\n        <_>\n          2 13 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 2 2 -1.</_>\n        <_>\n          6 6 1 1 2.</_>\n        <_>\n          7 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 20 2 -1.</_>\n        <_>\n          0 16 20 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 2 3 -1.</_>\n        <_>\n          4 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 2 3 -1.</_>\n        <_>\n          8 8 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 10 2 3 -1.</_>\n        <_>\n          9 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 10 4 -1.</_>\n        <_>\n          5 6 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 6 4 -1.</_>\n        <_>\n          12 7 3 2 2.</_>\n        <_>\n          9 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 3 6 -1.</_>\n        <_>\n          4 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 15 4 4 -1.</_>\n        <_>\n          13 15 2 2 2.</_>\n        <_>\n          11 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 4 2 -1.</_>\n        <_>\n          7 9 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 1 4 3 -1.</_>\n        <_>\n          13 1 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 15 4 4 -1.</_>\n        <_>\n          5 15 2 2 2.</_>\n        <_>\n          7 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 4 7 -1.</_>\n        <_>\n          9 5 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 8 3 -1.</_>\n        <_>\n          9 6 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 5 3 -1.</_>\n        <_>\n          7 16 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 4 3 -1.</_>\n        <_>\n          11 10 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 8 10 -1.</_>\n        <_>\n          6 14 8 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 6 2 -1.</_>\n        <_>\n          10 11 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 6 2 -1.</_>\n        <_>\n          7 11 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 8 1 -1.</_>\n        <_>\n          11 3 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 3 2 -1.</_>\n        <_>\n          7 3 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 5 6 5 -1.</_>\n        <_>\n          14 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 2 12 -1.</_>\n        <_>\n          7 11 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 3 -1.</_>\n        <_>\n          8 12 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 1 2 3 -1.</_>\n        <_>\n          5 1 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 3 2 6 -1.</_>\n        <_>\n          18 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 2 6 -1.</_>\n        <_>\n          0 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 3 -1.</_>\n        <_>\n          9 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 4 3 -1.</_>\n        <_>\n          7 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 0 2 6 -1.</_>\n        <_>\n          18 2 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 2 6 -1.</_>\n        <_>\n          0 2 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 6 3 -1.</_>\n        <_>\n          8 15 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 2 4 -1.</_>\n        <_>\n          8 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 5 4 6 -1.</_>\n        <_>\n          8 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 2 2 -1.</_>\n        <_>\n          7 4 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 14 4 -1.</_>\n        <_>\n          10 14 7 2 2.</_>\n        <_>\n          3 16 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 15 6 2 -1.</_>\n        <_>\n          6 15 3 1 2.</_>\n        <_>\n          9 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 15 6 2 -1.</_>\n        <_>\n          14 16 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 12 8 -1.</_>\n        <_>\n          2 16 12 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 7 2 -1.</_>\n        <_>\n          7 8 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 18 2 -1.</_>\n        <_>\n          0 3 18 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 5 -1.</_>\n        <_>\n          9 6 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 3 8 -1.</_>\n        <_>\n          8 5 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 3 4 -1.</_>\n        <_>\n          10 6 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 13 3 2 -1.</_>\n        <_>\n          4 14 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 6 3 -1.</_>\n        <_>\n          11 4 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 6 3 -1.</_>\n        <_>\n          7 4 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 11 5 2 -1.</_>\n        <_>\n          14 12 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 6 9 -1.</_>\n        <_>\n          3 2 2 9 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 6 13 -1.</_>\n        <_>\n          14 6 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 14 8 -1.</_>\n        <_>\n          3 6 7 4 2.</_>\n        <_>\n          10 10 7 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 11 -1.</_>\n        <_>\n          16 0 2 11 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 12 12 -1.</_>\n        <_>\n          3 4 6 6 2.</_>\n        <_>\n          9 10 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 5 3 -1.</_>\n        <_>\n          11 5 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 4 2 -1.</_>\n        <_>\n          4 12 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 2 2 -1.</_>\n        <_>\n          10 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 2 2 -1.</_>\n        <_>\n          9 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 2 -1.</_>\n        <_>\n          10 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 3 3 -1.</_>\n        <_>\n          5 7 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 3 3 -1.</_>\n        <_>\n          11 0 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 6 2 -1.</_>\n        <_>\n          5 6 3 1 2.</_>\n        <_>\n          8 7 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 16 4 3 -1.</_>\n        <_>\n          12 17 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 3 2 -1.</_>\n        <_>\n          3 13 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 3 2 -1.</_>\n        <_>\n          9 13 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 16 4 -1.</_>\n        <_>\n          1 11 8 2 2.</_>\n        <_>\n          9 13 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 5 3 -1.</_>\n        <_>\n          4 5 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 16 4 3 -1.</_>\n        <_>\n          12 17 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 2 2 -1.</_>\n        <_>\n          9 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 4 2 -1.</_>\n        <_>\n          8 10 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 4 3 -1.</_>\n        <_>\n          8 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 6 3 -1.</_>\n        <_>\n          2 13 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 14 3 2 -1.</_>\n        <_>\n          16 15 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 18 18 2 -1.</_>\n        <_>\n          7 18 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 14 3 2 -1.</_>\n        <_>\n          16 15 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 3 2 -1.</_>\n        <_>\n          1 15 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 6 3 -1.</_>\n        <_>\n          7 15 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 14 8 3 -1.</_>\n        <_>\n          5 15 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 4 14 -1.</_>\n        <_>\n          10 6 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 4 14 -1.</_>\n        <_>\n          8 6 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 3 -1.</_>\n        <_>\n          13 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 16 6 1 -1.</_>\n        <_>\n          9 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 3 3 -1.</_>\n        <_>\n          9 13 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 3 3 -1.</_>\n        <_>\n          8 0 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 16 18 -1.</_>\n        <_>\n          4 9 16 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 16 14 -1.</_>\n        <_>\n          1 8 16 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 9 15 4 -1.</_>\n        <_>\n          8 9 5 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 7 3 -1.</_>\n        <_>\n          6 13 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 15 2 3 -1.</_>\n        <_>\n          14 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 16 14 -1.</_>\n        <_>\n          2 3 8 7 2.</_>\n        <_>\n          10 10 8 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 2 4 18 -1.</_>\n        <_>\n          18 2 2 9 2.</_>\n        <_>\n          16 11 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 15 2 3 -1.</_>\n        <_>\n          4 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 2 4 18 -1.</_>\n        <_>\n          18 2 2 9 2.</_>\n        <_>\n          16 11 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 8 3 -1.</_>\n        <_>\n          1 2 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 3 -1.</_>\n        <_>\n          8 12 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 5 9 -1.</_>\n        <_>\n          5 14 5 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 11 -1.</_>\n        <_>\n          16 0 2 11 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 1 -1.</_>\n        <_>\n          9 0 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 7 -1.</_>\n        <_>\n          17 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 3 3 7 -1.</_>\n        <_>\n          2 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 6 12 -1.</_>\n        <_>\n          7 12 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 4 11 -1.</_>\n        <_>\n          2 0 2 11 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 20 -1.</_>\n        <_>\n          14 0 3 20 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 1 2 -1.</_>\n        <_>\n          0 4 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 10 8 -1.</_>\n        <_>\n          10 5 5 4 2.</_>\n        <_>\n          5 9 5 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 12 4 -1.</_>\n        <_>\n          4 7 6 2 2.</_>\n        <_>\n          10 9 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 6 4 -1.</_>\n        <_>\n          5 1 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 6 4 -1.</_>\n        <_>\n          12 7 3 2 2.</_>\n        <_>\n          9 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 2 6 -1.</_>\n        <_>\n          5 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 6 4 -1.</_>\n        <_>\n          12 16 3 2 2.</_>\n        <_>\n          9 18 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 12 -1.</_>\n        <_>\n          9 10 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 18 -1.</_>\n        <_>\n          9 1 2 18 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 12 2 -1.</_>\n        <_>\n          8 12 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 6 2 -1.</_>\n        <_>\n          8 9 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 3 6 -1.</_>\n        <_>\n          9 0 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 18 3 2 -1.</_>\n        <_>\n          11 19 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 17 4 -1.</_>\n        <_>\n          1 3 17 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 8 4 12 -1.</_>\n        <_>\n          11 8 2 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 2 17 -1.</_>\n        <_>\n          12 3 1 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 6 1 -1.</_>\n        <_>\n          6 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 3 2 3 -1.</_>\n        <_>\n          18 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 4 3 4 -1.</_>\n        <_>\n          8 6 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 10 -1.</_>\n        <_>\n          4 10 12 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 18 4 2 -1.</_>\n        <_>\n          7 18 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 2 3 6 -1.</_>\n        <_>\n          17 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 6 -1.</_>\n        <_>\n          9 7 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 2 3 6 -1.</_>\n        <_>\n          17 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 3 4 -1.</_>\n        <_>\n          9 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 12 6 3 -1.</_>\n        <_>\n          0 13 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 2 3 -1.</_>\n        <_>\n          3 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 12 7 -1.</_>\n        <_>\n          9 6 4 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 6 -1.</_>\n        <_>\n          0 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 1 3 -1.</_>\n        <_>\n          14 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 3 14 -1.</_>\n        <_>\n          3 0 1 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 14 5 6 -1.</_>\n        <_>\n          12 16 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 5 6 -1.</_>\n        <_>\n          4 16 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 2 2 -1.</_>\n        <_>\n          12 10 1 1 2.</_>\n        <_>\n          11 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 3 14 -1.</_>\n        <_>\n          6 0 1 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 15 2 3 -1.</_>\n        <_>\n          10 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 2 3 -1.</_>\n        <_>\n          0 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 12 6 -1.</_>\n        <_>\n          5 14 12 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 3 9 -1.</_>\n        <_>\n          6 14 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 2 2 -1.</_>\n        <_>\n          12 10 1 1 2.</_>\n        <_>\n          11 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 1 3 -1.</_>\n        <_>\n          5 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 13 3 -1.</_>\n        <_>\n          4 10 13 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 15 6 -1.</_>\n        <_>\n          6 7 5 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 6 -1.</_>\n        <_>\n          8 5 4 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 4 3 -1.</_>\n        <_>\n          8 11 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 14 1 3 -1.</_>\n        <_>\n          15 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 5 3 -1.</_>\n        <_>\n          1 12 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 7 12 -1.</_>\n        <_>\n          7 7 7 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 6 10 -1.</_>\n        <_>\n          0 1 3 5 2.</_>\n        <_>\n          3 6 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 1 4 3 -1.</_>\n        <_>\n          16 2 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 3 -1.</_>\n        <_>\n          5 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 3 5 -1.</_>\n        <_>\n          13 2 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 4 6 -1.</_>\n        <_>\n          0 5 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          8 13 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 18 3 1 -1.</_>\n        <_>\n          9 18 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 2 2 -1.</_>\n        <_>\n          12 10 1 1 2.</_>\n        <_>\n          11 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 10 2 2 -1.</_>\n        <_>\n          7 10 1 1 2.</_>\n        <_>\n          8 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 4 4 -1.</_>\n        <_>\n          11 13 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 3 8 -1.</_>\n        <_>\n          9 12 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 6 3 -1.</_>\n        <_>\n          13 1 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 3 4 -1.</_>\n        <_>\n          9 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 10 -1.</_>\n        <_>\n          10 7 5 5 2.</_>\n        <_>\n          5 12 5 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 18 8 2 -1.</_>\n        <_>\n          3 18 4 1 2.</_>\n        <_>\n          7 19 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 2 6 8 -1.</_>\n        <_>\n          12 2 2 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 6 8 -1.</_>\n        <_>\n          6 2 2 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 7 -1.</_>\n        <_>\n          12 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 2 1 -1.</_>\n        <_>\n          8 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 14 1 3 -1.</_>\n        <_>\n          15 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 2 2 -1.</_>\n        <_>\n          7 15 1 1 2.</_>\n        <_>\n          8 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 14 1 3 -1.</_>\n        <_>\n          15 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 7 -1.</_>\n        <_>\n          7 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 7 -1.</_>\n        <_>\n          18 1 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 8 20 -1.</_>\n        <_>\n          2 10 8 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 15 6 -1.</_>\n        <_>\n          3 2 15 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 12 2 -1.</_>\n        <_>\n          4 4 12 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 5 -1.</_>\n        <_>\n          16 0 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 3 4 -1.</_>\n        <_>\n          8 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 5 -1.</_>\n        <_>\n          16 0 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 6 13 -1.</_>\n        <_>\n          3 7 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 5 -1.</_>\n        <_>\n          16 0 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 4 5 -1.</_>\n        <_>\n          2 0 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 3 6 -1.</_>\n        <_>\n          14 14 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 3 6 -1.</_>\n        <_>\n          3 14 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 1 4 3 -1.</_>\n        <_>\n          16 2 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 2 10 -1.</_>\n        <_>\n          8 7 1 5 2.</_>\n        <_>\n          9 12 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 4 4 -1.</_>\n        <_>\n          11 13 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 4 3 -1.</_>\n        <_>\n          0 2 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 1 3 -1.</_>\n        <_>\n          13 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 3 5 -1.</_>\n        <_>\n          8 15 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 5 -1.</_>\n        <_>\n          10 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 5 -1.</_>\n        <_>\n          9 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 4 14 -1.</_>\n        <_>\n          10 6 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 5 6 -1.</_>\n        <_>\n          0 7 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 4 -1.</_>\n        <_>\n          9 5 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 18 10 -1.</_>\n        <_>\n          6 0 6 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 4 14 -1.</_>\n        <_>\n          10 6 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 4 14 -1.</_>\n        <_>\n          8 6 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 1 3 -1.</_>\n        <_>\n          13 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 2 3 -1.</_>\n        <_>\n          6 1 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 18 -1.</_>\n        <_>\n          19 1 1 9 2.</_>\n        <_>\n          18 10 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 4 3 -1.</_>\n        <_>\n          2 2 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 18 -1.</_>\n        <_>\n          19 1 1 9 2.</_>\n        <_>\n          18 10 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 4 6 -1.</_>\n        <_>\n          1 14 2 3 2.</_>\n        <_>\n          3 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 7 6 -1.</_>\n        <_>\n          10 13 7 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 6 10 -1.</_>\n        <_>\n          0 10 3 5 2.</_>\n        <_>\n          3 15 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 4 -1.</_>\n        <_>\n          12 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 5 6 -1.</_>\n        <_>\n          5 13 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 1 8 -1.</_>\n        <_>\n          14 10 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 18 6 -1.</_>\n        <_>\n          1 7 9 3 2.</_>\n        <_>\n          10 10 9 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 2 -1.</_>\n        <_>\n          9 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 4 5 -1.</_>\n        <_>\n          7 9 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 3 -1.</_>\n        <_>\n          9 6 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 4 -1.</_>\n        <_>\n          7 0 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 2 4 -1.</_>\n        <_>\n          7 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 19 9 -1.</_>\n        <_>\n          1 3 19 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 3 6 -1.</_>\n        <_>\n          3 9 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 4 4 -1.</_>\n        <_>\n          15 7 2 2 2.</_>\n        <_>\n          13 9 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 4 4 -1.</_>\n        <_>\n          3 7 2 2 2.</_>\n        <_>\n          5 9 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 10 8 -1.</_>\n        <_>\n          9 10 10 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 8 14 12 -1.</_>\n        <_>\n          3 14 14 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 10 12 -1.</_>\n        <_>\n          11 5 5 6 2.</_>\n        <_>\n          6 11 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 5 -1.</_>\n        <_>\n          9 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 4 -1.</_>\n        <_>\n          9 6 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 5 -1.</_>\n        <_>\n          9 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 6 5 -1.</_>\n        <_>\n          8 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 6 1 -1.</_>\n        <_>\n          13 2 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 6 1 -1.</_>\n        <_>\n          5 2 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 3 -1.</_>\n        <_>\n          13 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 1 4 -1.</_>\n        <_>\n          0 12 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 3 -1.</_>\n        <_>\n          13 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 18 3 2 -1.</_>\n        <_>\n          9 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 15 9 2 -1.</_>\n        <_>\n          6 16 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 4 -1.</_>\n        <_>\n          18 6 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 3 -1.</_>\n        <_>\n          5 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 16 3 2 -1.</_>\n        <_>\n          15 17 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 3 9 -1.</_>\n        <_>\n          0 3 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          9 8 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          8 8 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 6 -1.</_>\n        <_>\n          9 5 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 3 4 -1.</_>\n        <_>\n          9 6 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 8 12 -1.</_>\n        <_>\n          11 6 4 6 2.</_>\n        <_>\n          7 12 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 8 12 -1.</_>\n        <_>\n          5 6 4 6 2.</_>\n        <_>\n          9 12 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 3 2 -1.</_>\n        <_>\n          2 17 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 6 6 -1.</_>\n        <_>\n          2 14 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 3 -1.</_>\n        <_>\n          7 14 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 14 6 3 -1.</_>\n        <_>\n          6 15 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 15 5 3 -1.</_>\n        <_>\n          14 16 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 15 5 3 -1.</_>\n        <_>\n          14 16 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 6 2 -1.</_>\n        <_>\n          7 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 15 5 3 -1.</_>\n        <_>\n          1 16 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 6 -1.</_>\n        <_>\n          10 13 2 3 2.</_>\n        <_>\n          8 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 3 3 -1.</_>\n        <_>\n          8 8 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 5 4 -1.</_>\n        <_>\n          12 2 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 20 2 -1.</_>\n        <_>\n          0 2 10 1 2.</_>\n        <_>\n          10 3 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 4 -1.</_>\n        <_>\n          7 0 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 6 1 -1.</_>\n        <_>\n          6 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 18 13 2 -1.</_>\n        <_>\n          4 19 13 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 10 3 6 -1.</_>\n        <_>\n          2 12 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 6 8 -1.</_>\n        <_>\n          17 12 3 4 2.</_>\n        <_>\n          14 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 13 10 6 -1.</_>\n        <_>\n          4 13 5 3 2.</_>\n        <_>\n          9 16 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 1 2 -1.</_>\n        <_>\n          14 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 3 -1.</_>\n        <_>\n          8 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 2 2 -1.</_>\n        <_>\n          14 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 2 -1.</_>\n        <_>\n          4 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 9 2 -1.</_>\n        <_>\n          8 13 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 3 6 -1.</_>\n        <_>\n          11 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 9 12 -1.</_>\n        <_>\n          5 12 9 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 3 6 -1.</_>\n        <_>\n          11 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 3 6 -1.</_>\n        <_>\n          6 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 11 3 -1.</_>\n        <_>\n          5 5 11 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 5 10 -1.</_>\n        <_>\n          7 6 5 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 18 2 -1.</_>\n        <_>\n          2 9 18 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 17 5 3 -1.</_>\n        <_>\n          7 18 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 12 1 -1.</_>\n        <_>\n          9 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 6 6 -1.</_>\n        <_>\n          0 14 3 3 2.</_>\n        <_>\n          3 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 12 1 -1.</_>\n        <_>\n          9 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 9 12 1 -1.</_>\n        <_>\n          7 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 10 6 7 -1.</_>\n        <_>\n          14 10 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 16 2 -1.</_>\n        <_>\n          1 1 16 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 9 10 9 -1.</_>\n        <_>\n          10 12 10 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 10 2 -1.</_>\n        <_>\n          5 1 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 3 2 3 -1.</_>\n        <_>\n          17 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 3 2 3 -1.</_>\n        <_>\n          1 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 6 -1.</_>\n        <_>\n          10 7 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 4 3 -1.</_>\n        <_>\n          8 5 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 6 -1.</_>\n        <_>\n          9 5 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 12 12 -1.</_>\n        <_>\n          3 4 6 6 2.</_>\n        <_>\n          9 10 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 2 6 15 -1.</_>\n        <_>\n          11 2 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 6 17 -1.</_>\n        <_>\n          4 2 2 17 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 10 6 7 -1.</_>\n        <_>\n          14 10 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 6 7 -1.</_>\n        <_>\n          3 10 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 2 6 15 -1.</_>\n        <_>\n          11 2 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 6 15 -1.</_>\n        <_>\n          7 2 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 9 3 6 -1.</_>\n        <_>\n          17 11 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 6 6 -1.</_>\n        <_>\n          8 7 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 18 6 -1.</_>\n        <_>\n          10 10 9 3 2.</_>\n        <_>\n          1 13 9 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 10 9 -1.</_>\n        <_>\n          0 12 10 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 3 4 -1.</_>\n        <_>\n          5 14 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 3 16 12 -1.</_>\n        <_>\n          3 9 16 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 12 12 -1.</_>\n        <_>\n          1 1 6 6 2.</_>\n        <_>\n          7 7 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 4 2 4 -1.</_>\n        <_>\n          11 4 1 2 2.</_>\n        <_>\n          10 6 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 10 2 -1.</_>\n        <_>\n          0 9 5 1 2.</_>\n        <_>\n          5 10 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 3 3 -1.</_>\n        <_>\n          9 12 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 9 2 -1.</_>\n        <_>\n          3 13 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 13 6 -1.</_>\n        <_>\n          3 6 13 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 6 4 -1.</_>\n        <_>\n          12 7 3 2 2.</_>\n        <_>\n          9 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 6 8 -1.</_>\n        <_>\n          4 0 3 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 12 -1.</_>\n        <_>\n          9 11 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 3 10 -1.</_>\n        <_>\n          4 9 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 17 8 3 -1.</_>\n        <_>\n          6 18 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 10 6 -1.</_>\n        <_>\n          0 7 10 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 3 2 -1.</_>\n        <_>\n          13 3 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 4 5 -1.</_>\n        <_>\n          9 5 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 14 3 6 -1.</_>\n        <_>\n          12 16 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 8 2 -1.</_>\n        <_>\n          1 12 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 3 -1.</_>\n        <_>\n          7 14 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 3 6 -1.</_>\n        <_>\n          0 7 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 3 2 -1.</_>\n        <_>\n          13 3 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 4 6 -1.</_>\n        <_>\n          4 14 2 3 2.</_>\n        <_>\n          6 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 3 2 -1.</_>\n        <_>\n          13 3 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 4 12 -1.</_>\n        <_>\n          8 6 4 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 8 -1.</_>\n        <_>\n          17 0 3 4 2.</_>\n        <_>\n          14 4 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 17 3 2 -1.</_>\n        <_>\n          8 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          8 13 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 12 -1.</_>\n        <_>\n          6 0 4 6 2.</_>\n        <_>\n          10 6 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 2 10 -1.</_>\n        <_>\n          15 0 1 5 2.</_>\n        <_>\n          14 5 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 8 6 -1.</_>\n        <_>\n          5 3 4 3 2.</_>\n        <_>\n          9 6 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 10 -1.</_>\n        <_>\n          17 0 3 5 2.</_>\n        <_>\n          14 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 1 2 -1.</_>\n        <_>\n          9 15 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 10 4 3 -1.</_>\n        <_>\n          15 11 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 2 3 -1.</_>\n        <_>\n          8 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 14 4 -1.</_>\n        <_>\n          10 13 7 2 2.</_>\n        <_>\n          3 15 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 4 3 -1.</_>\n        <_>\n          1 11 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 6 1 -1.</_>\n        <_>\n          11 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 6 1 -1.</_>\n        <_>\n          7 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 5 16 15 -1.</_>\n        <_>\n          3 10 16 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 4 2 -1.</_>\n        <_>\n          8 12 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 12 10 -1.</_>\n        <_>\n          10 4 6 5 2.</_>\n        <_>\n          4 9 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 3 4 -1.</_>\n        <_>\n          9 6 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 8 -1.</_>\n        <_>\n          10 12 2 4 2.</_>\n        <_>\n          8 16 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 3 2 -1.</_>\n        <_>\n          13 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 3 2 -1.</_>\n        <_>\n          8 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 9 14 -1.</_>\n        <_>\n          9 0 3 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 3 -1.</_>\n        <_>\n          10 6 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 2 3 -1.</_>\n        <_>\n          10 9 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 4 6 -1.</_>\n        <_>\n          0 11 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 2 -1.</_>\n        <_>\n          6 1 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 14 7 3 -1.</_>\n        <_>\n          6 15 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 8 9 -1.</_>\n        <_>\n          8 13 8 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 3 2 -1.</_>\n        <_>\n          6 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 1 6 8 -1.</_>\n        <_>\n          17 1 3 4 2.</_>\n        <_>\n          14 5 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 6 8 -1.</_>\n        <_>\n          0 1 3 4 2.</_>\n        <_>\n          3 5 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 18 6 -1.</_>\n        <_>\n          10 2 9 3 2.</_>\n        <_>\n          1 5 9 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 2 1 -1.</_>\n        <_>\n          10 3 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 4 6 -1.</_>\n        <_>\n          15 2 2 3 2.</_>\n        <_>\n          13 5 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 1 3 -1.</_>\n        <_>\n          13 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 5 3 -1.</_>\n        <_>\n          2 17 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 4 6 -1.</_>\n        <_>\n          15 2 2 3 2.</_>\n        <_>\n          13 5 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 4 6 -1.</_>\n        <_>\n          3 2 2 3 2.</_>\n        <_>\n          5 5 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 1 2 -1.</_>\n        <_>\n          13 6 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 2 -1.</_>\n        <_>\n          5 6 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 9 2 2 -1.</_>\n        <_>\n          13 9 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 2 2 -1.</_>\n        <_>\n          6 9 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 17 3 2 -1.</_>\n        <_>\n          13 18 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 16 4 4 -1.</_>\n        <_>\n          6 16 2 2 2.</_>\n        <_>\n          8 18 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 2 3 -1.</_>\n        <_>\n          9 17 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 9 6 -1.</_>\n        <_>\n          0 15 9 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 6 -1.</_>\n        <_>\n          9 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 2 3 -1.</_>\n        <_>\n          9 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 18 6 -1.</_>\n        <_>\n          1 12 18 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 2 -1.</_>\n        <_>\n          8 12 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 9 6 2 -1.</_>\n        <_>\n          7 10 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 2 3 -1.</_>\n        <_>\n          8 9 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 5 3 4 -1.</_>\n        <_>\n          18 5 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 19 18 1 -1.</_>\n        <_>\n          7 19 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 3 2 -1.</_>\n        <_>\n          10 0 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 1 6 -1.</_>\n        <_>\n          1 10 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 17 8 3 -1.</_>\n        <_>\n          12 17 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 3 4 -1.</_>\n        <_>\n          1 5 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 3 -1.</_>\n        <_>\n          9 8 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 2 2 -1.</_>\n        <_>\n          7 11 1 1 2.</_>\n        <_>\n          8 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 2 5 -1.</_>\n        <_>\n          11 3 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 2 5 -1.</_>\n        <_>\n          8 3 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 3 -1.</_>\n        <_>\n          15 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 2 3 -1.</_>\n        <_>\n          5 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 19 15 1 -1.</_>\n        <_>\n          9 19 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 19 15 1 -1.</_>\n        <_>\n          6 19 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 3 -1.</_>\n        <_>\n          15 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 4 15 -1.</_>\n        <_>\n          7 0 2 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 5 -1.</_>\n        <_>\n          9 6 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 7 -1.</_>\n        <_>\n          10 5 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 11 3 3 -1.</_>\n        <_>\n          16 12 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 3 3 -1.</_>\n        <_>\n          1 12 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 8 3 -1.</_>\n        <_>\n          6 7 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 6 2 -1.</_>\n        <_>\n          0 16 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 6 -1.</_>\n        <_>\n          7 0 6 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 4 -1.</_>\n        <_>\n          7 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 10 4 10 -1.</_>\n        <_>\n          16 10 2 5 2.</_>\n        <_>\n          14 15 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 3 2 -1.</_>\n        <_>\n          4 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 2 2 -1.</_>\n        <_>\n          11 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 10 4 10 -1.</_>\n        <_>\n          2 10 2 5 2.</_>\n        <_>\n          4 15 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 20 6 -1.</_>\n        <_>\n          10 13 10 3 2.</_>\n        <_>\n          0 16 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 2 15 -1.</_>\n        <_>\n          1 5 1 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 18 4 -1.</_>\n        <_>\n          10 7 9 2 2.</_>\n        <_>\n          1 9 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 2 17 -1.</_>\n        <_>\n          1 0 1 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 6 16 6 -1.</_>\n        <_>\n          10 6 8 3 2.</_>\n        <_>\n          2 9 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 1 3 -1.</_>\n        <_>\n          8 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 2 -1.</_>\n        <_>\n          8 16 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 8 2 -1.</_>\n        <_>\n          5 2 4 1 2.</_>\n        <_>\n          9 3 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 8 6 -1.</_>\n        <_>\n          6 14 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 2 2 -1.</_>\n        <_>\n          9 14 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 6 -1.</_>\n        <_>\n          18 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 2 -1.</_>\n        <_>\n          9 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 6 -1.</_>\n        <_>\n          18 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 1 3 -1.</_>\n        <_>\n          9 14 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 6 -1.</_>\n        <_>\n          18 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 2 6 -1.</_>\n        <_>\n          0 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 3 3 -1.</_>\n        <_>\n          9 13 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 2 3 -1.</_>\n        <_>\n          3 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 13 4 3 -1.</_>\n        <_>\n          13 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 10 6 -1.</_>\n        <_>\n          5 4 10 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 4 3 -1.</_>\n        <_>\n          3 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 15 5 -1.</_>\n        <_>\n          8 7 5 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 12 2 -1.</_>\n        <_>\n          7 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 3 9 -1.</_>\n        <_>\n          11 3 1 9 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 4 6 -1.</_>\n        <_>\n          10 6 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 4 3 -1.</_>\n        <_>\n          9 8 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 4 9 -1.</_>\n        <_>\n          2 9 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 3 5 -1.</_>\n        <_>\n          10 13 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 3 -1.</_>\n        <_>\n          9 7 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 5 -1.</_>\n        <_>\n          10 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 8 2 -1.</_>\n        <_>\n          9 7 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 12 2 -1.</_>\n        <_>\n          9 9 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 10 3 -1.</_>\n        <_>\n          10 6 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 3 1 -1.</_>\n        <_>\n          11 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 11 15 -1.</_>\n        <_>\n          0 6 11 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 6 -1.</_>\n        <_>\n          7 0 6 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 1 -1.</_>\n        <_>\n          9 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 16 6 4 -1.</_>\n        <_>\n          5 16 3 2 2.</_>\n        <_>\n          8 18 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 9 8 -1.</_>\n        <_>\n          6 9 9 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 2 6 -1.</_>\n        <_>\n          5 13 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 8 10 -1.</_>\n        <_>\n          11 6 4 5 2.</_>\n        <_>\n          7 11 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 8 10 -1.</_>\n        <_>\n          5 6 4 5 2.</_>\n        <_>\n          9 11 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 2 -1.</_>\n        <_>\n          9 6 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 8 2 -1.</_>\n        <_>\n          5 13 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 2 8 2 -1.</_>\n        <_>\n          10 3 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 2 10 -1.</_>\n        <_>\n          4 0 1 5 2.</_>\n        <_>\n          5 5 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 10 2 2 -1.</_>\n        <_>\n          9 11 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 15 3 -1.</_>\n        <_>\n          2 9 15 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 3 -1.</_>\n        <_>\n          8 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 3 2 -1.</_>\n        <_>\n          8 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 3 -1.</_>\n        <_>\n          7 14 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 2 3 6 -1.</_>\n        <_>\n          17 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 5 3 4 -1.</_>\n        <_>\n          2 5 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 8 4 6 -1.</_>\n        <_>\n          14 10 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 3 8 -1.</_>\n        <_>\n          2 4 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 6 -1.</_>\n        <_>\n          8 16 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 2 2 -1.</_>\n        <_>\n          3 15 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 8 4 6 -1.</_>\n        <_>\n          14 10 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 4 6 -1.</_>\n        <_>\n          2 10 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 1 6 -1.</_>\n        <_>\n          10 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 3 6 -1.</_>\n        <_>\n          8 5 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 2 6 -1.</_>\n        <_>\n          12 2 1 3 2.</_>\n        <_>\n          11 5 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 6 5 -1.</_>\n        <_>\n          8 6 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 1 3 6 -1.</_>\n        <_>\n          17 3 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 5 -1.</_>\n        <_>\n          9 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 18 3 2 -1.</_>\n        <_>\n          10 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 18 3 2 -1.</_>\n        <_>\n          9 18 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 5 2 -1.</_>\n        <_>\n          12 4 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 5 12 -1.</_>\n        <_>\n          7 7 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 4 -1.</_>\n        <_>\n          7 0 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 2 2 -1.</_>\n        <_>\n          4 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 14 4 2 -1.</_>\n        <_>\n          13 14 2 1 2.</_>\n        <_>\n          11 15 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 6 -1.</_>\n        <_>\n          0 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 3 -1.</_>\n        <_>\n          9 8 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 1 3 -1.</_>\n        <_>\n          5 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 10 6 1 -1.</_>\n        <_>\n          10 10 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 10 6 1 -1.</_>\n        <_>\n          7 10 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 3 -1.</_>\n        <_>\n          9 18 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 1 3 -1.</_>\n        <_>\n          4 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 3 3 -1.</_>\n        <_>\n          12 6 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 3 -1.</_>\n        <_>\n          4 6 12 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 3 -1.</_>\n        <_>\n          9 9 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 3 3 -1.</_>\n        <_>\n          5 9 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 9 17 -1.</_>\n        <_>\n          9 0 3 17 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 1 3 -1.</_>\n        <_>\n          9 13 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 15 -1.</_>\n        <_>\n          9 10 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 2 3 -1.</_>\n        <_>\n          8 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 1 3 -1.</_>\n        <_>\n          10 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 5 -1.</_>\n        <_>\n          9 1 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 20 2 -1.</_>\n        <_>\n          0 0 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 13 5 3 -1.</_>\n        <_>\n          2 14 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 5 9 15 -1.</_>\n        <_>\n          2 10 9 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 12 10 -1.</_>\n        <_>\n          11 0 6 5 2.</_>\n        <_>\n          5 5 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 2 3 -1.</_>\n        <_>\n          6 1 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 6 1 -1.</_>\n        <_>\n          12 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 2 10 -1.</_>\n        <_>\n          3 1 1 5 2.</_>\n        <_>\n          4 6 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 2 1 -1.</_>\n        <_>\n          13 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 13 4 6 -1.</_>\n        <_>\n          4 15 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 2 1 -1.</_>\n        <_>\n          13 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 2 1 -1.</_>\n        <_>\n          6 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 18 4 -1.</_>\n        <_>\n          11 12 9 2 2.</_>\n        <_>\n          2 14 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 2 2 -1.</_>\n        <_>\n          5 7 1 1 2.</_>\n        <_>\n          6 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 4 2 -1.</_>\n        <_>\n          16 4 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 2 18 -1.</_>\n        <_>\n          0 2 1 9 2.</_>\n        <_>\n          1 11 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 18 4 -1.</_>\n        <_>\n          10 2 9 2 2.</_>\n        <_>\n          1 4 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 1 3 -1.</_>\n        <_>\n          9 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 18 4 -1.</_>\n        <_>\n          11 12 9 2 2.</_>\n        <_>\n          2 14 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 12 18 4 -1.</_>\n        <_>\n          0 12 9 2 2.</_>\n        <_>\n          9 14 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 5 3 -1.</_>\n        <_>\n          11 5 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 7 3 -1.</_>\n        <_>\n          6 5 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 17 3 3 -1.</_>\n        <_>\n          13 18 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 3 4 -1.</_>\n        <_>\n          9 1 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 2 4 -1.</_>\n        <_>\n          11 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 17 9 3 -1.</_>\n        <_>\n          3 17 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 2 8 -1.</_>\n        <_>\n          12 0 1 4 2.</_>\n        <_>\n          11 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 6 12 -1.</_>\n        <_>\n          0 8 3 6 2.</_>\n        <_>\n          3 14 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 4 12 -1.</_>\n        <_>\n          10 13 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 8 14 -1.</_>\n        <_>\n          5 10 8 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 10 6 1 -1.</_>\n        <_>\n          14 10 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 10 4 -1.</_>\n        <_>\n          0 6 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 5 8 -1.</_>\n        <_>\n          10 4 5 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 4 8 -1.</_>\n        <_>\n          8 1 2 4 2.</_>\n        <_>\n          10 5 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 6 1 -1.</_>\n        <_>\n          11 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 3 4 -1.</_>\n        <_>\n          9 9 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 6 -1.</_>\n        <_>\n          18 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 3 4 -1.</_>\n        <_>\n          9 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 13 3 -1.</_>\n        <_>\n          7 2 13 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 1 -1.</_>\n        <_>\n          9 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 11 3 6 -1.</_>\n        <_>\n          12 13 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 6 1 -1.</_>\n        <_>\n          7 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 18 10 -1.</_>\n        <_>\n          10 4 9 5 2.</_>\n        <_>\n          1 9 9 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 4 9 -1.</_>\n        <_>\n          8 9 4 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 4 3 -1.</_>\n        <_>\n          8 7 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          9 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 15 4 3 -1.</_>\n        <_>\n          14 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 3 10 -1.</_>\n        <_>\n          6 10 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 1 6 -1.</_>\n        <_>\n          0 10 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 15 1 3 -1.</_>\n        <_>\n          10 16 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 15 4 3 -1.</_>\n        <_>\n          2 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 3 2 8 -1.</_>\n        <_>\n          19 3 1 4 2.</_>\n        <_>\n          18 7 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 2 8 -1.</_>\n        <_>\n          0 3 1 4 2.</_>\n        <_>\n          1 7 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 14 10 -1.</_>\n        <_>\n          10 7 7 5 2.</_>\n        <_>\n          3 12 7 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 19 3 -1.</_>\n        <_>\n          0 8 19 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 6 3 3 -1.</_>\n        <_>\n          12 7 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 1 3 -1.</_>\n        <_>\n          0 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 6 3 3 -1.</_>\n        <_>\n          12 7 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 3 3 -1.</_>\n        <_>\n          5 7 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 4 2 -1.</_>\n        <_>\n          8 3 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 4 12 -1.</_>\n        <_>\n          8 3 2 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 6 2 3 -1.</_>\n        <_>\n          13 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 20 4 -1.</_>\n        <_>\n          0 12 20 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 17 14 -1.</_>\n        <_>\n          2 7 17 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 6 10 -1.</_>\n        <_>\n          0 0 3 5 2.</_>\n        <_>\n          3 5 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 6 4 -1.</_>\n        <_>\n          14 6 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 6 4 -1.</_>\n        <_>\n          3 6 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 7 2 -1.</_>\n        <_>\n          13 3 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 7 2 -1.</_>\n        <_>\n          0 3 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 14 2 -1.</_>\n        <_>\n          13 11 7 1 2.</_>\n        <_>\n          6 12 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 5 2 2 -1.</_>\n        <_>\n          8 5 1 1 2.</_>\n        <_>\n          9 6 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 9 2 3 -1.</_>\n        <_>\n          13 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 3 12 -1.</_>\n        <_>\n          2 1 1 12 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 4 1 3 -1.</_>\n        <_>\n          17 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 4 1 3 -1.</_>\n        <_>\n          2 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 5 1 3 -1.</_>\n        <_>\n          14 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 16 2 3 -1.</_>\n        <_>\n          7 17 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 6 -1.</_>\n        <_>\n          10 13 2 3 2.</_>\n        <_>\n          8 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 1 3 -1.</_>\n        <_>\n          5 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 20 -1.</_>\n        <_>\n          16 0 2 20 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 2 6 -1.</_>\n        <_>\n          5 1 1 3 2.</_>\n        <_>\n          6 4 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 10 4 -1.</_>\n        <_>\n          5 6 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 2 4 12 -1.</_>\n        <_>\n          15 2 2 12 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 4 12 -1.</_>\n        <_>\n          7 12 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 5 1 8 -1.</_>\n        <_>\n          14 9 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 14 10 -1.</_>\n        <_>\n          1 4 7 5 2.</_>\n        <_>\n          8 9 7 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 6 6 14 -1.</_>\n        <_>\n          14 6 3 7 2.</_>\n        <_>\n          11 13 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 6 14 -1.</_>\n        <_>\n          3 6 3 7 2.</_>\n        <_>\n          6 13 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 15 2 -1.</_>\n        <_>\n          9 9 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 6 3 -1.</_>\n        <_>\n          7 15 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 3 14 4 -1.</_>\n        <_>\n          13 3 7 2 2.</_>\n        <_>\n          6 5 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 15 2 -1.</_>\n        <_>\n          6 9 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 8 9 -1.</_>\n        <_>\n          6 14 8 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 3 8 -1.</_>\n        <_>\n          8 4 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 2 6 -1.</_>\n        <_>\n          14 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 6 4 -1.</_>\n        <_>\n          5 7 3 2 2.</_>\n        <_>\n          8 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 18 19 -1.</_>\n        <_>\n          7 1 6 19 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 6 5 -1.</_>\n        <_>\n          4 2 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 17 6 2 -1.</_>\n        <_>\n          12 18 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 17 6 2 -1.</_>\n        <_>\n          2 18 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 3 3 6 -1.</_>\n        <_>\n          17 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 3 3 -1.</_>\n        <_>\n          8 18 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 13 2 6 -1.</_>\n        <_>\n          10 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 6 3 -1.</_>\n        <_>\n          7 14 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 3 3 6 -1.</_>\n        <_>\n          17 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 2 3 -1.</_>\n        <_>\n          8 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 6 2 -1.</_>\n        <_>\n          11 3 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 3 6 -1.</_>\n        <_>\n          0 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 5 4 6 -1.</_>\n        <_>\n          8 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 3 2 -1.</_>\n        <_>\n          5 6 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 1 3 4 -1.</_>\n        <_>\n          11 1 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 5 9 -1.</_>\n        <_>\n          1 5 5 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 6 2 3 -1.</_>\n        <_>\n          13 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 14 3 -1.</_>\n        <_>\n          7 6 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 18 8 -1.</_>\n        <_>\n          2 15 18 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 2 3 -1.</_>\n        <_>\n          5 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 4 2 -1.</_>\n        <_>\n          12 6 2 1 2.</_>\n        <_>\n          10 7 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 4 2 -1.</_>\n        <_>\n          6 6 2 1 2.</_>\n        <_>\n          8 7 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 1 3 4 -1.</_>\n        <_>\n          11 1 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 2 7 -1.</_>\n        <_>\n          8 1 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 15 14 -1.</_>\n        <_>\n          4 9 15 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 2 -1.</_>\n        <_>\n          9 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 18 4 -1.</_>\n        <_>\n          11 3 9 2 2.</_>\n        <_>\n          2 5 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 2 -1.</_>\n        <_>\n          10 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 9 2 3 -1.</_>\n        <_>\n          13 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 6 2 -1.</_>\n        <_>\n          7 2 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 7 -1.</_>\n        <_>\n          9 5 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 2 3 -1.</_>\n        <_>\n          6 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 14 18 -1.</_>\n        <_>\n          6 9 14 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 6 3 -1.</_>\n        <_>\n          2 17 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 6 -1.</_>\n        <_>\n          10 7 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 4 3 -1.</_>\n        <_>\n          7 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 6 3 -1.</_>\n        <_>\n          7 13 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 3 -1.</_>\n        <_>\n          9 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 6 2 -1.</_>\n        <_>\n          9 12 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 4 6 -1.</_>\n        <_>\n          5 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 12 7 2 -1.</_>\n        <_>\n          11 13 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 8 6 -1.</_>\n        <_>\n          6 10 4 3 2.</_>\n        <_>\n          10 13 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 3 4 -1.</_>\n        <_>\n          11 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 2 3 -1.</_>\n        <_>\n          9 17 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 3 1 9 -1.</_>\n        <_>\n          13 6 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 13 14 6 -1.</_>\n        <_>\n          1 15 14 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 6 1 6 -1.</_>\n        <_>\n          13 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 3 8 -1.</_>\n        <_>\n          1 4 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 0 2 18 -1.</_>\n        <_>\n          18 0 1 18 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 6 2 -1.</_>\n        <_>\n          2 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 8 6 -1.</_>\n        <_>\n          9 2 8 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 1 6 -1.</_>\n        <_>\n          6 9 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 8 6 3 -1.</_>\n        <_>\n          14 9 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 2 18 -1.</_>\n        <_>\n          1 0 1 18 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 18 18 2 -1.</_>\n        <_>\n          10 18 9 1 2.</_>\n        <_>\n          1 19 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 15 2 2 -1.</_>\n        <_>\n          3 16 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 5 3 -1.</_>\n        <_>\n          8 15 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 2 3 -1.</_>\n        <_>\n          8 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 3 3 -1.</_>\n        <_>\n          13 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 2 -1.</_>\n        <_>\n          9 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 5 5 2 -1.</_>\n        <_>\n          15 6 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 5 2 -1.</_>\n        <_>\n          0 6 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 14 1 6 -1.</_>\n        <_>\n          17 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 9 9 3 -1.</_>\n        <_>\n          5 9 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 3 3 -1.</_>\n        <_>\n          13 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 4 18 -1.</_>\n        <_>\n          2 0 2 18 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 6 1 3 -1.</_>\n        <_>\n          17 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 14 1 6 -1.</_>\n        <_>\n          2 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          19 8 1 2 -1.</_>\n        <_>\n          19 9 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 3 3 -1.</_>\n        <_>\n          6 3 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 2 3 -1.</_>\n        <_>\n          9 17 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 6 1 3 -1.</_>\n        <_>\n          2 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 8 2 -1.</_>\n        <_>\n          16 4 4 1 2.</_>\n        <_>\n          12 5 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 8 2 -1.</_>\n        <_>\n          0 4 4 1 2.</_>\n        <_>\n          4 5 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 18 4 -1.</_>\n        <_>\n          2 18 18 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 2 4 -1.</_>\n        <_>\n          7 17 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 14 3 -1.</_>\n        <_>\n          4 1 14 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 4 20 -1.</_>\n        <_>\n          2 0 2 20 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 4 8 -1.</_>\n        <_>\n          14 4 2 4 2.</_>\n        <_>\n          12 8 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 2 2 -1.</_>\n        <_>\n          6 7 1 1 2.</_>\n        <_>\n          7 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 2 3 -1.</_>\n        <_>\n          10 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 2 -1.</_>\n        <_>\n          8 8 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 6 12 -1.</_>\n        <_>\n          8 8 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 11 12 -1.</_>\n        <_>\n          4 4 11 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 9 6 11 -1.</_>\n        <_>\n          16 9 2 11 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 4 3 -1.</_>\n        <_>\n          0 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 10 2 3 -1.</_>\n        <_>\n          9 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 3 2 -1.</_>\n        <_>\n          5 12 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 3 3 -1.</_>\n        <_>\n          10 15 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 3 4 -1.</_>\n        <_>\n          9 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 3 3 -1.</_>\n        <_>\n          10 15 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 3 2 -1.</_>\n        <_>\n          8 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 10 16 4 -1.</_>\n        <_>\n          10 10 8 2 2.</_>\n        <_>\n          2 12 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 4 17 -1.</_>\n        <_>\n          4 3 2 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 7 -1.</_>\n        <_>\n          15 13 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 6 1 -1.</_>\n        <_>\n          5 2 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 12 4 -1.</_>\n        <_>\n          9 2 4 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 12 -1.</_>\n        <_>\n          6 0 4 6 2.</_>\n        <_>\n          10 6 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 2 2 -1.</_>\n        <_>\n          14 7 1 1 2.</_>\n        <_>\n          13 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 12 20 6 -1.</_>\n        <_>\n          0 14 20 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 7 2 3 -1.</_>\n        <_>\n          14 7 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 9 12 -1.</_>\n        <_>\n          3 8 3 12 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 16 2 -1.</_>\n        <_>\n          3 0 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 15 3 3 -1.</_>\n        <_>\n          6 16 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 6 3 -1.</_>\n        <_>\n          8 16 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 1 6 -1.</_>\n        <_>\n          0 12 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 9 4 3 -1.</_>\n        <_>\n          10 10 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 2 3 -1.</_>\n        <_>\n          9 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 1 -1.</_>\n        <_>\n          5 7 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 12 19 -1.</_>\n        <_>\n          10 0 6 19 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 20 6 -1.</_>\n        <_>\n          10 6 10 3 2.</_>\n        <_>\n          0 9 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 2 2 -1.</_>\n        <_>\n          3 6 1 1 2.</_>\n        <_>\n          4 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 6 2 2 -1.</_>\n        <_>\n          16 6 1 1 2.</_>\n        <_>\n          15 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 2 2 -1.</_>\n        <_>\n          3 6 1 1 2.</_>\n        <_>\n          4 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 4 1 12 -1.</_>\n        <_>\n          14 10 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 5 16 10 -1.</_>\n        <_>\n          2 5 8 5 2.</_>\n        <_>\n          10 10 8 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 2 -1.</_>\n        <_>\n          10 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 2 2 -1.</_>\n        <_>\n          1 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 15 5 -1.</_>\n        <_>\n          10 0 5 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 15 5 -1.</_>\n        <_>\n          5 0 5 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 2 17 -1.</_>\n        <_>\n          11 2 1 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 2 17 -1.</_>\n        <_>\n          8 2 1 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 2 9 -1.</_>\n        <_>\n          15 11 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 2 9 -1.</_>\n        <_>\n          4 11 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 16 14 4 -1.</_>\n        <_>\n          5 16 7 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 18 1 -1.</_>\n        <_>\n          7 4 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 7 6 4 -1.</_>\n        <_>\n          16 7 3 2 2.</_>\n        <_>\n          13 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 12 -1.</_>\n        <_>\n          9 12 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 1 6 6 -1.</_>\n        <_>\n          12 3 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 6 6 -1.</_>\n        <_>\n          5 2 3 3 2.</_>\n        <_>\n          8 5 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 6 4 -1.</_>\n        <_>\n          12 16 3 2 2.</_>\n        <_>\n          9 18 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 18 3 -1.</_>\n        <_>\n          7 2 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 9 10 -1.</_>\n        <_>\n          7 9 9 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 4 4 -1.</_>\n        <_>\n          7 9 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 3 6 -1.</_>\n        <_>\n          11 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 5 3 -1.</_>\n        <_>\n          7 12 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 6 6 -1.</_>\n        <_>\n          10 11 3 3 2.</_>\n        <_>\n          7 14 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 10 9 -1.</_>\n        <_>\n          0 3 10 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 1 6 -1.</_>\n        <_>\n          13 16 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 6 -1.</_>\n        <_>\n          0 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 14 1 6 -1.</_>\n        <_>\n          6 16 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 2 3 -1.</_>\n        <_>\n          9 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 3 3 -1.</_>\n        <_>\n          7 4 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 11 3 -1.</_>\n        <_>\n          9 1 11 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 20 3 -1.</_>\n        <_>\n          0 7 20 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 1 1 2 -1.</_>\n        <_>\n          10 2 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 6 -1.</_>\n        <_>\n          10 6 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 8 12 1 -1.</_>\n        <_>\n          9 8 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 8 12 1 -1.</_>\n        <_>\n          7 8 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 5 -1.</_>\n        <_>\n          10 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 9 6 2 -1.</_>\n        <_>\n          6 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 1 -1.</_>\n        <_>\n          9 0 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 10 2 1 -1.</_>\n        <_>\n          8 10 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 9 13 -1.</_>\n        <_>\n          9 4 3 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 8 4 2 -1.</_>\n        <_>\n          6 9 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 2 4 6 -1.</_>\n        <_>\n          16 2 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 17 6 3 -1.</_>\n        <_>\n          0 18 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 10 3 10 -1.</_>\n        <_>\n          10 15 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 5 -1.</_>\n        <_>\n          9 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 4 4 3 -1.</_>\n        <_>\n          10 4 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 4 3 8 -1.</_>\n        <_>\n          9 4 1 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 9 13 -1.</_>\n        <_>\n          9 6 3 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 12 -1.</_>\n        <_>\n          6 0 4 6 2.</_>\n        <_>\n          10 6 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 8 -1.</_>\n        <_>\n          16 2 2 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 6 -1.</_>\n        <_>\n          7 0 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 8 -1.</_>\n        <_>\n          16 2 2 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 6 6 -1.</_>\n        <_>\n          0 8 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 6 2 -1.</_>\n        <_>\n          12 12 3 1 2.</_>\n        <_>\n          9 13 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 3 2 -1.</_>\n        <_>\n          9 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 6 2 2 -1.</_>\n        <_>\n          12 6 1 1 2.</_>\n        <_>\n          11 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 18 2 -1.</_>\n        <_>\n          7 9 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 6 2 2 -1.</_>\n        <_>\n          12 6 1 1 2.</_>\n        <_>\n          11 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 12 8 -1.</_>\n        <_>\n          7 4 4 8 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 5 3 -1.</_>\n        <_>\n          13 12 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 10 2 3 -1.</_>\n        <_>\n          9 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 7 2 3 -1.</_>\n        <_>\n          14 7 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 1 3 -1.</_>\n        <_>\n          5 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 2 3 -1.</_>\n        <_>\n          13 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 2 3 -1.</_>\n        <_>\n          5 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 3 -1.</_>\n        <_>\n          9 9 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 2 2 -1.</_>\n        <_>\n          8 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 14 1 4 -1.</_>\n        <_>\n          15 16 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 2 2 -1.</_>\n        <_>\n          3 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 15 2 2 -1.</_>\n        <_>\n          13 15 1 1 2.</_>\n        <_>\n          12 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 2 2 -1.</_>\n        <_>\n          9 14 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 14 9 -1.</_>\n        <_>\n          4 14 14 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 4 3 -1.</_>\n        <_>\n          7 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 14 1 4 -1.</_>\n        <_>\n          15 16 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 1 4 -1.</_>\n        <_>\n          4 16 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 13 -1.</_>\n        <_>\n          16 0 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 1 2 12 -1.</_>\n        <_>\n          4 1 1 6 2.</_>\n        <_>\n          5 7 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 14 6 6 -1.</_>\n        <_>\n          14 14 3 3 2.</_>\n        <_>\n          11 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 6 6 -1.</_>\n        <_>\n          3 14 3 3 2.</_>\n        <_>\n          6 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 17 3 2 -1.</_>\n        <_>\n          14 18 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 17 3 2 -1.</_>\n        <_>\n          3 18 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 13 -1.</_>\n        <_>\n          16 0 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 6 13 -1.</_>\n        <_>\n          2 0 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 10 7 6 -1.</_>\n        <_>\n          10 12 7 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 15 2 2 -1.</_>\n        <_>\n          6 15 1 1 2.</_>\n        <_>\n          7 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 8 6 -1.</_>\n        <_>\n          10 11 4 3 2.</_>\n        <_>\n          6 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 2 2 -1.</_>\n        <_>\n          7 6 1 1 2.</_>\n        <_>\n          8 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 16 6 -1.</_>\n        <_>\n          10 2 8 3 2.</_>\n        <_>\n          2 5 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 7 3 10 -1.</_>\n        <_>\n          11 12 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 3 10 -1.</_>\n        <_>\n          6 12 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 3 2 -1.</_>\n        <_>\n          11 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          8 13 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 1 1 3 -1.</_>\n        <_>\n          10 2 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 4 18 -1.</_>\n        <_>\n          1 2 2 9 2.</_>\n        <_>\n          3 11 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 4 12 -1.</_>\n        <_>\n          12 10 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 1 6 -1.</_>\n        <_>\n          0 2 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 4 3 -1.</_>\n        <_>\n          8 8 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 3 2 -1.</_>\n        <_>\n          11 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 3 2 -1.</_>\n        <_>\n          8 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 6 1 -1.</_>\n        <_>\n          11 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 2 3 -1.</_>\n        <_>\n          9 7 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 8 6 -1.</_>\n        <_>\n          16 7 4 3 2.</_>\n        <_>\n          12 10 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 8 6 -1.</_>\n        <_>\n          0 7 4 3 2.</_>\n        <_>\n          4 10 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 2 2 10 -1.</_>\n        <_>\n          19 2 1 5 2.</_>\n        <_>\n          18 7 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 6 4 -1.</_>\n        <_>\n          3 2 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 6 1 -1.</_>\n        <_>\n          11 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 15 2 2 -1.</_>\n        <_>\n          7 15 1 1 2.</_>\n        <_>\n          8 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 13 1 6 -1.</_>\n        <_>\n          11 16 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 1 6 -1.</_>\n        <_>\n          8 16 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 2 1 -1.</_>\n        <_>\n          14 3 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 2 3 -1.</_>\n        <_>\n          8 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 15 7 4 -1.</_>\n        <_>\n          12 17 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 12 3 -1.</_>\n        <_>\n          4 15 12 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 3 2 -1.</_>\n        <_>\n          11 3 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 2 -1.</_>\n        <_>\n          4 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 4 6 -1.</_>\n        <_>\n          10 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 2 2 -1.</_>\n        <_>\n          7 13 1 1 2.</_>\n        <_>\n          8 14 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 14 4 -1.</_>\n        <_>\n          11 11 7 2 2.</_>\n        <_>\n          4 13 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 18 18 2 -1.</_>\n        <_>\n          7 18 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 18 2 2 -1.</_>\n        <_>\n          12 18 1 1 2.</_>\n        <_>\n          11 19 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 18 2 2 -1.</_>\n        <_>\n          7 18 1 1 2.</_>\n        <_>\n          8 19 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 18 8 2 -1.</_>\n        <_>\n          12 19 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 6 2 -1.</_>\n        <_>\n          7 15 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 8 -1.</_>\n        <_>\n          10 12 2 4 2.</_>\n        <_>\n          8 16 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 3 3 -1.</_>\n        <_>\n          4 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 10 6 2 -1.</_>\n        <_>\n          9 10 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 4 15 -1.</_>\n        <_>\n          7 0 2 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 12 14 -1.</_>\n        <_>\n          12 6 4 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 16 3 3 -1.</_>\n        <_>\n          5 17 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 12 19 -1.</_>\n        <_>\n          12 1 4 19 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 3 2 -1.</_>\n        <_>\n          3 1 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 4 5 -1.</_>\n        <_>\n          10 12 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 4 5 -1.</_>\n        <_>\n          8 12 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 2 2 -1.</_>\n        <_>\n          12 11 1 1 2.</_>\n        <_>\n          11 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 6 -1.</_>\n        <_>\n          0 4 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 2 2 -1.</_>\n        <_>\n          12 11 1 1 2.</_>\n        <_>\n          11 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 4 10 -1.</_>\n        <_>\n          7 11 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 2 2 -1.</_>\n        <_>\n          12 11 1 1 2.</_>\n        <_>\n          11 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 13 5 2 -1.</_>\n        <_>\n          2 14 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 2 2 -1.</_>\n        <_>\n          12 11 1 1 2.</_>\n        <_>\n          11 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 2 2 -1.</_>\n        <_>\n          7 11 1 1 2.</_>\n        <_>\n          8 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 13 3 3 -1.</_>\n        <_>\n          14 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 3 3 -1.</_>\n        <_>\n          3 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          8 8 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 3 3 -1.</_>\n        <_>\n          13 6 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 5 3 -1.</_>\n        <_>\n          0 10 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 3 3 -1.</_>\n        <_>\n          13 6 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 8 -1.</_>\n        <_>\n          9 12 1 4 2.</_>\n        <_>\n          10 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 7 2 2 -1.</_>\n        <_>\n          12 7 1 1 2.</_>\n        <_>\n          11 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 16 6 4 -1.</_>\n        <_>\n          3 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 2 3 -1.</_>\n        <_>\n          10 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 6 -1.</_>\n        <_>\n          9 7 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 15 8 4 -1.</_>\n        <_>\n          12 15 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 8 6 -1.</_>\n        <_>\n          4 14 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 0 3 2 -1.</_>\n        <_>\n          10 0 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 15 4 2 -1.</_>\n        <_>\n          6 15 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 3 13 -1.</_>\n        <_>\n          13 7 1 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 3 13 -1.</_>\n        <_>\n          6 7 1 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 3 9 -1.</_>\n        <_>\n          9 9 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 7 12 -1.</_>\n        <_>\n          4 10 7 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 12 2 2 -1.</_>\n        <_>\n          13 12 1 1 2.</_>\n        <_>\n          12 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 2 2 -1.</_>\n        <_>\n          6 12 1 1 2.</_>\n        <_>\n          7 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 4 2 -1.</_>\n        <_>\n          10 9 2 1 2.</_>\n        <_>\n          8 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 2 2 -1.</_>\n        <_>\n          3 6 1 1 2.</_>\n        <_>\n          4 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 6 3 2 -1.</_>\n        <_>\n          16 7 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 19 4 -1.</_>\n        <_>\n          0 9 19 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 2 10 1 -1.</_>\n        <_>\n          10 2 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 12 -1.</_>\n        <_>\n          9 10 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 18 4 1 -1.</_>\n        <_>\n          12 18 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 6 4 -1.</_>\n        <_>\n          1 7 3 2 2.</_>\n        <_>\n          4 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 6 13 -1.</_>\n        <_>\n          14 0 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 6 13 -1.</_>\n        <_>\n          4 0 2 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 5 8 8 -1.</_>\n        <_>\n          10 9 8 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 3 2 5 -1.</_>\n        <_>\n          9 3 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 4 9 1 -1.</_>\n        <_>\n          11 4 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 9 1 -1.</_>\n        <_>\n          6 4 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 10 -1.</_>\n        <_>\n          7 0 6 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 17 5 3 -1.</_>\n        <_>\n          7 18 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 6 1 -1.</_>\n        <_>\n          9 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 3 2 -1.</_>\n        <_>\n          2 3 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          8 13 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 3 6 -1.</_>\n        <_>\n          6 13 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 2 4 -1.</_>\n        <_>\n          11 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 2 4 -1.</_>\n        <_>\n          8 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 4 -1.</_>\n        <_>\n          9 6 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 13 8 3 -1.</_>\n        <_>\n          6 14 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 3 4 -1.</_>\n        <_>\n          10 15 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 2 2 17 -1.</_>\n        <_>\n          10 2 1 17 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 1 -1.</_>\n        <_>\n          9 0 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 3 4 -1.</_>\n        <_>\n          9 15 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 7 3 -1.</_>\n        <_>\n          7 14 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 16 3 3 -1.</_>\n        <_>\n          9 16 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 2 8 10 -1.</_>\n        <_>\n          6 7 8 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 5 8 8 -1.</_>\n        <_>\n          2 9 8 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 16 2 2 -1.</_>\n        <_>\n          14 17 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 16 2 2 -1.</_>\n        <_>\n          4 17 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 4 6 -1.</_>\n        <_>\n          10 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 4 6 -1.</_>\n        <_>\n          6 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 1 3 -1.</_>\n        <_>\n          10 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 4 6 -1.</_>\n        <_>\n          12 0 2 3 2.</_>\n        <_>\n          10 3 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 20 2 -1.</_>\n        <_>\n          0 4 20 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 8 2 -1.</_>\n        <_>\n          16 0 4 1 2.</_>\n        <_>\n          12 1 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 10 8 -1.</_>\n        <_>\n          2 16 10 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 7 2 10 -1.</_>\n        <_>\n          18 7 1 5 2.</_>\n        <_>\n          17 12 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 2 10 -1.</_>\n        <_>\n          1 7 1 5 2.</_>\n        <_>\n          2 12 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 10 3 6 -1.</_>\n        <_>\n          15 12 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 4 6 2 -1.</_>\n        <_>\n          6 4 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 20 6 -1.</_>\n        <_>\n          0 7 20 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 8 2 -1.</_>\n        <_>\n          0 0 4 1 2.</_>\n        <_>\n          4 1 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 4 -1.</_>\n        <_>\n          7 0 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 13 6 2 -1.</_>\n        <_>\n          1 14 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 3 4 -1.</_>\n        <_>\n          11 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 6 1 -1.</_>\n        <_>\n          8 1 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 6 18 2 -1.</_>\n        <_>\n          10 6 9 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 1 2 -1.</_>\n        <_>\n          15 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 1 2 -1.</_>\n        <_>\n          6 6 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 1 3 -1.</_>\n        <_>\n          13 5 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 15 1 2 -1.</_>\n        <_>\n          2 16 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 4 3 -1.</_>\n        <_>\n          12 5 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 7 3 -1.</_>\n        <_>\n          0 1 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 6 2 -1.</_>\n        <_>\n          9 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 2 3 -1.</_>\n        <_>\n          5 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 4 2 3 -1.</_>\n        <_>\n          18 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 8 6 -1.</_>\n        <_>\n          3 2 8 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 20 6 -1.</_>\n        <_>\n          10 2 10 3 2.</_>\n        <_>\n          0 5 10 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 2 4 -1.</_>\n        <_>\n          5 7 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 10 15 2 -1.</_>\n        <_>\n          8 10 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 12 11 -1.</_>\n        <_>\n          9 0 6 11 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 2 6 -1.</_>\n        <_>\n          13 0 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 19 2 1 -1.</_>\n        <_>\n          1 19 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 10 4 10 -1.</_>\n        <_>\n          18 10 2 5 2.</_>\n        <_>\n          16 15 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 8 10 3 -1.</_>\n        <_>\n          4 9 10 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 3 3 -1.</_>\n        <_>\n          14 13 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 4 10 -1.</_>\n        <_>\n          0 10 2 5 2.</_>\n        <_>\n          2 15 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 3 2 6 -1.</_>\n        <_>\n          18 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 1 3 -1.</_>\n        <_>\n          6 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 7 2 -1.</_>\n        <_>\n          7 8 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 2 6 -1.</_>\n        <_>\n          0 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 1 3 1 -1.</_>\n        <_>\n          12 1 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 2 6 -1.</_>\n        <_>\n          6 0 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 1 18 14 -1.</_>\n        <_>\n          7 1 6 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 6 8 3 -1.</_>\n        <_>\n          8 6 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 6 2 -1.</_>\n        <_>\n          9 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 6 2 -1.</_>\n        <_>\n          8 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 3 5 -1.</_>\n        <_>\n          11 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 3 5 -1.</_>\n        <_>\n          8 7 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 3 10 -1.</_>\n        <_>\n          14 0 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 3 2 -1.</_>\n        <_>\n          4 12 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 3 3 6 -1.</_>\n        <_>\n          18 3 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 18 10 -1.</_>\n        <_>\n          1 13 18 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 3 10 -1.</_>\n        <_>\n          14 0 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 7 -1.</_>\n        <_>\n          17 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 3 10 -1.</_>\n        <_>\n          5 0 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 7 -1.</_>\n        <_>\n          17 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 1 2 -1.</_>\n        <_>\n          0 10 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 1 2 10 -1.</_>\n        <_>\n          18 1 1 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 2 10 -1.</_>\n        <_>\n          1 1 1 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 3 4 -1.</_>\n        <_>\n          11 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 3 3 -1.</_>\n        <_>\n          3 8 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 2 6 -1.</_>\n        <_>\n          12 0 1 3 2.</_>\n        <_>\n          11 3 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 2 6 -1.</_>\n        <_>\n          7 0 1 3 2.</_>\n        <_>\n          8 3 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 7 -1.</_>\n        <_>\n          17 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 3 3 7 -1.</_>\n        <_>\n          2 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 1 6 16 -1.</_>\n        <_>\n          16 1 2 16 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 6 16 -1.</_>\n        <_>\n          2 1 2 16 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 16 8 -1.</_>\n        <_>\n          10 0 8 4 2.</_>\n        <_>\n          2 4 8 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 8 5 3 -1.</_>\n        <_>\n          6 9 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 3 -1.</_>\n        <_>\n          10 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 4 3 -1.</_>\n        <_>\n          8 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 4 -1.</_>\n        <_>\n          9 6 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 15 1 -1.</_>\n        <_>\n          5 7 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 7 9 -1.</_>\n        <_>\n          8 5 7 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 16 4 -1.</_>\n        <_>\n          1 7 8 2 2.</_>\n        <_>\n          9 9 8 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 12 8 2 -1.</_>\n        <_>\n          6 13 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 3 3 -1.</_>\n        <_>\n          8 12 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 14 10 -1.</_>\n        <_>\n          11 5 7 5 2.</_>\n        <_>\n          4 10 7 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 3 2 -1.</_>\n        <_>\n          4 13 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 6 1 -1.</_>\n        <_>\n          11 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 7 6 -1.</_>\n        <_>\n          4 11 7 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 10 6 3 -1.</_>\n        <_>\n          7 11 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 2 -1.</_>\n        <_>\n          9 12 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 20 6 -1.</_>\n        <_>\n          0 7 20 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 6 1 -1.</_>\n        <_>\n          8 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 6 1 -1.</_>\n        <_>\n          11 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 6 1 -1.</_>\n        <_>\n          7 11 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 3 4 -1.</_>\n        <_>\n          11 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          9 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 12 16 8 -1.</_>\n        <_>\n          2 16 16 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 15 2 -1.</_>\n        <_>\n          0 16 15 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 4 5 6 -1.</_>\n        <_>\n          15 6 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 4 -1.</_>\n        <_>\n          10 5 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 9 6 -1.</_>\n        <_>\n          8 12 9 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 19 15 1 -1.</_>\n        <_>\n          7 19 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 3 4 -1.</_>\n        <_>\n          11 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 20 4 -1.</_>\n        <_>\n          0 17 20 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 3 4 -1.</_>\n        <_>\n          11 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 16 3 4 -1.</_>\n        <_>\n          8 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 3 3 -1.</_>\n        <_>\n          9 17 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 6 -1.</_>\n        <_>\n          8 14 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 12 -1.</_>\n        <_>\n          9 10 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 4 3 -1.</_>\n        <_>\n          8 18 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 18 8 2 -1.</_>\n        <_>\n          13 18 4 1 2.</_>\n        <_>\n          9 19 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 18 8 2 -1.</_>\n        <_>\n          1 19 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 6 15 -1.</_>\n        <_>\n          15 5 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 2 -1.</_>\n        <_>\n          9 9 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 3 -1.</_>\n        <_>\n          9 5 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 5 6 15 -1.</_>\n        <_>\n          3 5 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 1 14 8 -1.</_>\n        <_>\n          11 1 7 4 2.</_>\n        <_>\n          4 5 7 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 4 4 16 -1.</_>\n        <_>\n          2 4 2 8 2.</_>\n        <_>\n          4 12 2 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 12 -1.</_>\n        <_>\n          12 10 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 10 12 -1.</_>\n        <_>\n          4 5 5 6 2.</_>\n        <_>\n          9 11 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 2 3 -1.</_>\n        <_>\n          5 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 4 10 -1.</_>\n        <_>\n          14 2 2 5 2.</_>\n        <_>\n          12 7 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 7 3 -1.</_>\n        <_>\n          6 5 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 18 2 -1.</_>\n        <_>\n          11 0 9 1 2.</_>\n        <_>\n          2 1 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 18 2 -1.</_>\n        <_>\n          0 0 9 1 2.</_>\n        <_>\n          9 1 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 13 4 6 -1.</_>\n        <_>\n          15 13 2 3 2.</_>\n        <_>\n          13 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 4 6 -1.</_>\n        <_>\n          3 13 2 3 2.</_>\n        <_>\n          5 16 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 2 6 -1.</_>\n        <_>\n          10 15 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 10 10 -1.</_>\n        <_>\n          5 9 5 5 2.</_>\n        <_>\n          10 14 5 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 4 2 -1.</_>\n        <_>\n          13 4 2 1 2.</_>\n        <_>\n          11 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 6 8 -1.</_>\n        <_>\n          10 12 3 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 4 10 -1.</_>\n        <_>\n          14 2 2 5 2.</_>\n        <_>\n          12 7 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 2 1 -1.</_>\n        <_>\n          9 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 5 1 12 -1.</_>\n        <_>\n          10 9 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 11 6 9 -1.</_>\n        <_>\n          3 11 3 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 4 10 -1.</_>\n        <_>\n          14 2 2 5 2.</_>\n        <_>\n          12 7 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 4 10 -1.</_>\n        <_>\n          4 2 2 5 2.</_>\n        <_>\n          6 7 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 4 2 -1.</_>\n        <_>\n          13 4 2 1 2.</_>\n        <_>\n          11 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 6 3 -1.</_>\n        <_>\n          0 15 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 4 2 -1.</_>\n        <_>\n          13 4 2 1 2.</_>\n        <_>\n          11 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 3 2 -1.</_>\n        <_>\n          7 1 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 4 2 -1.</_>\n        <_>\n          13 4 2 1 2.</_>\n        <_>\n          11 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 4 2 -1.</_>\n        <_>\n          5 4 2 1 2.</_>\n        <_>\n          7 5 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 2 12 -1.</_>\n        <_>\n          14 0 1 6 2.</_>\n        <_>\n          13 6 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 10 -1.</_>\n        <_>\n          7 0 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 17 8 -1.</_>\n        <_>\n          3 4 17 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 20 4 -1.</_>\n        <_>\n          0 6 20 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 8 2 -1.</_>\n        <_>\n          4 3 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 3 -1.</_>\n        <_>\n          8 12 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 6 4 -1.</_>\n        <_>\n          5 7 3 2 2.</_>\n        <_>\n          8 9 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 3 4 9 -1.</_>\n        <_>\n          8 6 4 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 1 4 -1.</_>\n        <_>\n          8 17 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 7 -1.</_>\n        <_>\n          8 5 4 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 4 10 -1.</_>\n        <_>\n          4 2 2 5 2.</_>\n        <_>\n          6 7 2 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 0 17 2 -1.</_>\n        <_>\n          3 1 17 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 16 15 -1.</_>\n        <_>\n          2 7 16 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 2 5 2 -1.</_>\n        <_>\n          15 3 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 2 2 -1.</_>\n        <_>\n          10 3 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 16 15 -1.</_>\n        <_>\n          4 10 16 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 5 6 -1.</_>\n        <_>\n          7 16 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 3 2 -1.</_>\n        <_>\n          11 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 3 3 1 -1.</_>\n        <_>\n          9 3 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 3 3 -1.</_>\n        <_>\n          9 17 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 5 2 -1.</_>\n        <_>\n          0 3 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 12 1 -1.</_>\n        <_>\n          5 7 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 14 -1.</_>\n        <_>\n          7 12 6 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 8 10 -1.</_>\n        <_>\n          0 0 4 5 2.</_>\n        <_>\n          4 5 4 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 1 3 2 -1.</_>\n        <_>\n          10 1 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 3 2 -1.</_>\n        <_>\n          9 1 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 6 16 -1.</_>\n        <_>\n          7 12 6 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 3 2 6 -1.</_>\n        <_>\n          2 5 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 9 -1.</_>\n        <_>\n          14 5 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 2 -1.</_>\n        <_>\n          10 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 3 -1.</_>\n        <_>\n          5 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 3 6 -1.</_>\n        <_>\n          13 13 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 2 6 -1.</_>\n        <_>\n          3 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 6 2 -1.</_>\n        <_>\n          14 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 16 2 -1.</_>\n        <_>\n          0 9 16 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 6 2 -1.</_>\n        <_>\n          14 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 5 6 -1.</_>\n        <_>\n          0 2 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 3 6 -1.</_>\n        <_>\n          4 13 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 1 3 -1.</_>\n        <_>\n          9 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 8 12 -1.</_>\n        <_>\n          6 12 8 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 9 2 -1.</_>\n        <_>\n          8 12 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 4 3 -1.</_>\n        <_>\n          4 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 9 2 -1.</_>\n        <_>\n          9 6 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 1 3 -1.</_>\n        <_>\n          4 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 6 6 -1.</_>\n        <_>\n          14 12 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 3 7 -1.</_>\n        <_>\n          8 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 3 3 -1.</_>\n        <_>\n          10 8 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 3 3 -1.</_>\n        <_>\n          9 8 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 10 11 3 -1.</_>\n        <_>\n          5 11 11 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 10 1 -1.</_>\n        <_>\n          10 7 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 2 -1.</_>\n        <_>\n          10 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 2 -1.</_>\n        <_>\n          9 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 9 4 2 -1.</_>\n        <_>\n          11 9 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 4 2 -1.</_>\n        <_>\n          7 9 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 10 2 4 -1.</_>\n        <_>\n          14 12 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 3 2 -1.</_>\n        <_>\n          8 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 17 6 3 -1.</_>\n        <_>\n          14 18 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 12 12 -1.</_>\n        <_>\n          4 5 6 6 2.</_>\n        <_>\n          10 11 6 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 8 8 -1.</_>\n        <_>\n          10 9 4 4 2.</_>\n        <_>\n          6 13 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 15 4 -1.</_>\n        <_>\n          5 4 5 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 4 1 -1.</_>\n        <_>\n          13 2 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 2 -1.</_>\n        <_>\n          4 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 3 -1.</_>\n        <_>\n          8 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 2 3 -1.</_>\n        <_>\n          9 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 2 3 -1.</_>\n        <_>\n          13 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 4 4 -1.</_>\n        <_>\n          7 12 2 2 2.</_>\n        <_>\n          9 14 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 2 2 -1.</_>\n        <_>\n          11 11 1 1 2.</_>\n        <_>\n          10 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 3 2 -1.</_>\n        <_>\n          9 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 2 2 -1.</_>\n        <_>\n          11 11 1 1 2.</_>\n        <_>\n          10 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 17 6 3 -1.</_>\n        <_>\n          0 18 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 2 2 -1.</_>\n        <_>\n          11 11 1 1 2.</_>\n        <_>\n          10 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 2 2 -1.</_>\n        <_>\n          8 11 1 1 2.</_>\n        <_>\n          9 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 8 4 -1.</_>\n        <_>\n          12 5 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 5 8 4 -1.</_>\n        <_>\n          4 5 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 2 4 1 -1.</_>\n        <_>\n          13 2 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 4 1 -1.</_>\n        <_>\n          5 2 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 4 2 -1.</_>\n        <_>\n          12 0 2 1 2.</_>\n        <_>\n          10 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 3 1 -1.</_>\n        <_>\n          8 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 11 4 8 -1.</_>\n        <_>\n          10 11 2 4 2.</_>\n        <_>\n          8 15 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 18 15 2 -1.</_>\n        <_>\n          3 19 15 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 6 2 12 -1.</_>\n        <_>\n          2 6 1 6 2.</_>\n        <_>\n          3 12 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 3 -1.</_>\n        <_>\n          9 9 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 10 3 2 -1.</_>\n        <_>\n          8 10 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 11 3 1 -1.</_>\n        <_>\n          12 11 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 3 1 -1.</_>\n        <_>\n          7 11 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 2 4 2 -1.</_>\n        <_>\n          11 2 2 1 2.</_>\n        <_>\n          9 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 3 -1.</_>\n        <_>\n          4 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 18 3 -1.</_>\n        <_>\n          8 1 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 4 14 -1.</_>\n        <_>\n          7 1 2 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 16 12 3 -1.</_>\n        <_>\n          8 16 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 17 18 3 -1.</_>\n        <_>\n          7 17 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 6 -1.</_>\n        <_>\n          9 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 1 8 -1.</_>\n        <_>\n          9 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 12 -1.</_>\n        <_>\n          9 10 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 4 8 -1.</_>\n        <_>\n          2 1 2 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 1 6 2 -1.</_>\n        <_>\n          12 1 3 1 2.</_>\n        <_>\n          9 2 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 3 12 14 -1.</_>\n        <_>\n          1 10 12 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 2 -1.</_>\n        <_>\n          10 12 2 1 2.</_>\n        <_>\n          8 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 10 2 -1.</_>\n        <_>\n          1 9 5 1 2.</_>\n        <_>\n          6 10 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 8 8 3 -1.</_>\n        <_>\n          6 9 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 15 5 3 -1.</_>\n        <_>\n          9 16 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 4 3 -1.</_>\n        <_>\n          8 8 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 2 -1.</_>\n        <_>\n          7 8 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 8 2 -1.</_>\n        <_>\n          5 7 4 1 2.</_>\n        <_>\n          9 8 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 7 4 2 -1.</_>\n        <_>\n          4 8 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 9 -1.</_>\n        <_>\n          14 5 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 3 3 -1.</_>\n        <_>\n          5 9 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 6 9 -1.</_>\n        <_>\n          0 5 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 3 3 6 -1.</_>\n        <_>\n          18 3 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 3 6 -1.</_>\n        <_>\n          1 3 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 14 1 2 -1.</_>\n        <_>\n          17 15 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 4 3 -1.</_>\n        <_>\n          6 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 9 3 3 -1.</_>\n        <_>\n          12 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 9 3 3 -1.</_>\n        <_>\n          5 10 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 8 -1.</_>\n        <_>\n          12 5 3 4 2.</_>\n        <_>\n          9 9 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 6 8 -1.</_>\n        <_>\n          5 5 3 4 2.</_>\n        <_>\n          8 9 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 1 4 6 -1.</_>\n        <_>\n          16 4 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 6 20 -1.</_>\n        <_>\n          3 0 2 20 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 11 3 2 -1.</_>\n        <_>\n          13 11 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 3 2 -1.</_>\n        <_>\n          6 11 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 6 1 -1.</_>\n        <_>\n          11 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 8 3 -1.</_>\n        <_>\n          4 0 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 0 2 5 -1.</_>\n        <_>\n          15 0 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 1 3 2 -1.</_>\n        <_>\n          5 1 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 15 -1.</_>\n        <_>\n          9 0 2 15 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 3 1 -1.</_>\n        <_>\n          7 11 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 3 4 -1.</_>\n        <_>\n          13 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 6 1 -1.</_>\n        <_>\n          7 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 3 2 -1.</_>\n        <_>\n          12 8 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 4 6 -1.</_>\n        <_>\n          0 4 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 3 2 -1.</_>\n        <_>\n          12 8 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 3 3 -1.</_>\n        <_>\n          2 17 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 8 6 10 -1.</_>\n        <_>\n          16 8 3 5 2.</_>\n        <_>\n          13 13 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 5 2 -1.</_>\n        <_>\n          0 10 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 11 2 2 -1.</_>\n        <_>\n          13 11 1 1 2.</_>\n        <_>\n          12 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 15 3 3 -1.</_>\n        <_>\n          3 16 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 3 2 -1.</_>\n        <_>\n          12 8 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 3 2 -1.</_>\n        <_>\n          5 8 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 9 9 -1.</_>\n        <_>\n          9 8 9 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 3 7 -1.</_>\n        <_>\n          6 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 12 5 -1.</_>\n        <_>\n          9 2 4 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 2 2 -1.</_>\n        <_>\n          6 11 1 1 2.</_>\n        <_>\n          7 12 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 15 3 2 -1.</_>\n        <_>\n          15 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 15 3 2 -1.</_>\n        <_>\n          2 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 6 8 -1.</_>\n        <_>\n          17 12 3 4 2.</_>\n        <_>\n          14 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 8 15 6 -1.</_>\n        <_>\n          7 8 5 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 18 17 -1.</_>\n        <_>\n          8 2 6 17 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 4 1 -1.</_>\n        <_>\n          7 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 12 5 -1.</_>\n        <_>\n          9 2 4 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 12 5 -1.</_>\n        <_>\n          7 2 4 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 12 4 -1.</_>\n        <_>\n          10 9 6 2 2.</_>\n        <_>\n          4 11 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 15 6 2 -1.</_>\n        <_>\n          5 15 3 1 2.</_>\n        <_>\n          8 16 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 2 3 -1.</_>\n        <_>\n          10 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 20 2 -1.</_>\n        <_>\n          0 13 10 1 2.</_>\n        <_>\n          10 14 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 12 8 -1.</_>\n        <_>\n          10 9 6 4 2.</_>\n        <_>\n          4 13 6 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 3 6 -1.</_>\n        <_>\n          8 16 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 2 2 -1.</_>\n        <_>\n          10 13 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 2 2 -1.</_>\n        <_>\n          9 12 1 1 2.</_>\n        <_>\n          10 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 14 4 -1.</_>\n        <_>\n          11 11 7 2 2.</_>\n        <_>\n          4 13 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 5 4 2 -1.</_>\n        <_>\n          8 6 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 10 6 3 -1.</_>\n        <_>\n          12 10 2 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 14 1 2 -1.</_>\n        <_>\n          2 15 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 8 6 12 -1.</_>\n        <_>\n          16 8 3 6 2.</_>\n        <_>\n          13 14 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 6 12 -1.</_>\n        <_>\n          1 8 3 6 2.</_>\n        <_>\n          4 14 3 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 0 6 10 -1.</_>\n        <_>\n          12 0 2 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 8 4 -1.</_>\n        <_>\n          5 11 4 2 2.</_>\n        <_>\n          9 13 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 16 8 4 -1.</_>\n        <_>\n          14 16 4 2 2.</_>\n        <_>\n          10 18 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 6 -1.</_>\n        <_>\n          9 7 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 2 4 10 -1.</_>\n        <_>\n          10 2 2 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 4 9 -1.</_>\n        <_>\n          8 1 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 19 2 1 -1.</_>\n        <_>\n          12 19 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 4 9 -1.</_>\n        <_>\n          3 2 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 5 6 4 -1.</_>\n        <_>\n          9 5 2 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 4 -1.</_>\n        <_>\n          9 6 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 5 2 8 -1.</_>\n        <_>\n          14 9 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 5 12 -1.</_>\n        <_>\n          7 12 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 2 6 -1.</_>\n        <_>\n          14 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 6 2 6 -1.</_>\n        <_>\n          4 9 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 10 4 -1.</_>\n        <_>\n          13 15 5 2 2.</_>\n        <_>\n          8 17 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 18 2 2 -1.</_>\n        <_>\n          7 18 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 6 2 -1.</_>\n        <_>\n          11 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 16 6 -1.</_>\n        <_>\n          2 2 16 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 6 2 -1.</_>\n        <_>\n          11 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 10 3 -1.</_>\n        <_>\n          4 12 10 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 6 2 -1.</_>\n        <_>\n          11 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 3 6 2 -1.</_>\n        <_>\n          3 4 6 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 7 -1.</_>\n        <_>\n          16 0 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 9 6 -1.</_>\n        <_>\n          0 16 9 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 3 3 -1.</_>\n        <_>\n          9 17 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 6 6 2 -1.</_>\n        <_>\n          6 6 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 1 3 -1.</_>\n        <_>\n          15 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 3 -1.</_>\n        <_>\n          5 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 9 2 2 -1.</_>\n        <_>\n          10 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 4 3 -1.</_>\n        <_>\n          5 1 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 4 7 -1.</_>\n        <_>\n          16 0 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 20 1 -1.</_>\n        <_>\n          10 0 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 1 3 -1.</_>\n        <_>\n          15 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 3 4 -1.</_>\n        <_>\n          1 4 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 3 3 6 -1.</_>\n        <_>\n          16 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 3 3 6 -1.</_>\n        <_>\n          1 5 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 2 12 6 -1.</_>\n        <_>\n          12 2 6 3 2.</_>\n        <_>\n          6 5 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 4 3 -1.</_>\n        <_>\n          8 11 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 14 6 -1.</_>\n        <_>\n          11 2 7 3 2.</_>\n        <_>\n          4 5 7 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 3 -1.</_>\n        <_>\n          15 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 3 -1.</_>\n        <_>\n          8 13 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 11 1 3 -1.</_>\n        <_>\n          15 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 5 2 -1.</_>\n        <_>\n          7 14 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 6 3 -1.</_>\n        <_>\n          7 13 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 11 4 4 -1.</_>\n        <_>\n          5 13 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 3 3 -1.</_>\n        <_>\n          12 4 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 4 3 3 -1.</_>\n        <_>\n          7 4 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 5 3 6 -1.</_>\n        <_>\n          17 5 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 6 12 7 -1.</_>\n        <_>\n          7 6 4 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 5 3 6 -1.</_>\n        <_>\n          17 5 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 2 3 -1.</_>\n        <_>\n          3 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 5 3 6 -1.</_>\n        <_>\n          17 5 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 5 3 6 -1.</_>\n        <_>\n          2 5 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 18 1 -1.</_>\n        <_>\n          7 9 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 9 8 7 -1.</_>\n        <_>\n          4 9 4 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 11 8 2 -1.</_>\n        <_>\n          12 12 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 11 8 2 -1.</_>\n        <_>\n          0 12 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 2 3 -1.</_>\n        <_>\n          9 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 10 12 4 -1.</_>\n        <_>\n          4 10 6 2 2.</_>\n        <_>\n          10 12 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 3 7 -1.</_>\n        <_>\n          10 3 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 3 5 -1.</_>\n        <_>\n          8 2 1 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 4 6 -1.</_>\n        <_>\n          11 12 2 3 2.</_>\n        <_>\n          9 15 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 6 -1.</_>\n        <_>\n          9 7 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 4 4 2 -1.</_>\n        <_>\n          15 5 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          9 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 2 6 4 -1.</_>\n        <_>\n          14 4 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 16 6 1 -1.</_>\n        <_>\n          9 16 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 13 2 3 -1.</_>\n        <_>\n          15 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 10 -1.</_>\n        <_>\n          9 7 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 10 2 6 -1.</_>\n        <_>\n          11 12 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 4 1 -1.</_>\n        <_>\n          8 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 9 2 2 -1.</_>\n        <_>\n          10 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 2 2 -1.</_>\n        <_>\n          8 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 2 2 -1.</_>\n        <_>\n          13 7 1 1 2.</_>\n        <_>\n          12 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 2 2 -1.</_>\n        <_>\n          5 7 1 1 2.</_>\n        <_>\n          6 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 3 14 -1.</_>\n        <_>\n          14 0 1 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 3 14 -1.</_>\n        <_>\n          5 0 1 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 4 3 14 -1.</_>\n        <_>\n          14 4 1 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 3 -1.</_>\n        <_>\n          9 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 2 3 16 -1.</_>\n        <_>\n          5 2 1 16 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 8 10 -1.</_>\n        <_>\n          7 7 8 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 14 7 3 -1.</_>\n        <_>\n          6 15 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 2 10 12 -1.</_>\n        <_>\n          14 2 5 6 2.</_>\n        <_>\n          9 8 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 7 8 2 -1.</_>\n        <_>\n          6 8 8 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 4 6 -1.</_>\n        <_>\n          8 16 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 1 3 -1.</_>\n        <_>\n          6 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 2 4 6 -1.</_>\n        <_>\n          16 4 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 4 2 -1.</_>\n        <_>\n          6 6 2 1 2.</_>\n        <_>\n          8 7 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 2 4 6 -1.</_>\n        <_>\n          16 4 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 4 6 -1.</_>\n        <_>\n          0 4 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 6 2 6 -1.</_>\n        <_>\n          9 6 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 6 10 -1.</_>\n        <_>\n          3 9 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 6 -1.</_>\n        <_>\n          9 5 1 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 2 3 -1.</_>\n        <_>\n          3 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 13 3 2 -1.</_>\n        <_>\n          13 14 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 16 10 4 -1.</_>\n        <_>\n          2 16 5 2 2.</_>\n        <_>\n          7 18 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 10 6 -1.</_>\n        <_>\n          10 6 5 3 2.</_>\n        <_>\n          5 9 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 1 3 -1.</_>\n        <_>\n          7 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 16 6 3 -1.</_>\n        <_>\n          14 17 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 10 3 -1.</_>\n        <_>\n          7 5 10 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 5 4 -1.</_>\n        <_>\n          0 6 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 11 3 9 -1.</_>\n        <_>\n          13 14 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 3 9 -1.</_>\n        <_>\n          4 14 3 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 1 -1.</_>\n        <_>\n          9 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 6 17 -1.</_>\n        <_>\n          7 0 2 17 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 6 3 -1.</_>\n        <_>\n          10 3 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 2 15 4 -1.</_>\n        <_>\n          7 2 5 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 8 2 -1.</_>\n        <_>\n          12 2 4 1 2.</_>\n        <_>\n          8 3 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 3 6 -1.</_>\n        <_>\n          8 3 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 2 2 -1.</_>\n        <_>\n          9 18 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 2 14 -1.</_>\n        <_>\n          1 0 1 14 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 7 3 -1.</_>\n        <_>\n          12 1 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 1 2 -1.</_>\n        <_>\n          1 15 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 2 8 -1.</_>\n        <_>\n          15 12 1 4 2.</_>\n        <_>\n          14 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 7 3 -1.</_>\n        <_>\n          1 1 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 2 8 -1.</_>\n        <_>\n          15 12 1 4 2.</_>\n        <_>\n          14 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 12 -1.</_>\n        <_>\n          6 0 4 6 2.</_>\n        <_>\n          10 6 4 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 8 9 -1.</_>\n        <_>\n          6 4 8 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 2 2 -1.</_>\n        <_>\n          5 3 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 6 6 -1.</_>\n        <_>\n          16 14 3 3 2.</_>\n        <_>\n          13 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 17 20 2 -1.</_>\n        <_>\n          0 17 10 1 2.</_>\n        <_>\n          10 18 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 2 6 -1.</_>\n        <_>\n          11 3 1 3 2.</_>\n        <_>\n          10 6 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 6 2 -1.</_>\n        <_>\n          8 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 6 13 -1.</_>\n        <_>\n          10 7 3 13 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 15 10 5 -1.</_>\n        <_>\n          10 15 5 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 4 4 10 -1.</_>\n        <_>\n          10 4 2 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 2 1 -1.</_>\n        <_>\n          6 7 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 6 7 -1.</_>\n        <_>\n          10 3 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 6 7 -1.</_>\n        <_>\n          7 3 3 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 7 18 5 -1.</_>\n        <_>\n          7 7 6 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 17 4 3 -1.</_>\n        <_>\n          5 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 12 6 -1.</_>\n        <_>\n          14 14 6 3 2.</_>\n        <_>\n          8 17 6 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 13 20 4 -1.</_>\n        <_>\n          0 13 10 2 2.</_>\n        <_>\n          10 15 10 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 14 2 -1.</_>\n        <_>\n          11 5 7 1 2.</_>\n        <_>\n          4 6 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 10 12 -1.</_>\n        <_>\n          1 2 5 6 2.</_>\n        <_>\n          6 8 5 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 14 3 -1.</_>\n        <_>\n          6 2 14 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 16 2 3 -1.</_>\n        <_>\n          8 17 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 2 -1.</_>\n        <_>\n          10 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 15 4 2 -1.</_>\n        <_>\n          5 15 2 1 2.</_>\n        <_>\n          7 16 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 15 1 3 -1.</_>\n        <_>\n          10 16 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 16 4 4 -1.</_>\n        <_>\n          8 16 2 2 2.</_>\n        <_>\n          10 18 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 11 8 6 -1.</_>\n        <_>\n          6 14 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 13 5 2 -1.</_>\n        <_>\n          2 14 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 6 6 -1.</_>\n        <_>\n          16 14 3 3 2.</_>\n        <_>\n          13 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 18 4 -1.</_>\n        <_>\n          7 9 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 6 6 -1.</_>\n        <_>\n          16 14 3 3 2.</_>\n        <_>\n          13 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 1 6 -1.</_>\n        <_>\n          0 4 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 15 20 -1.</_>\n        <_>\n          5 10 15 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 6 6 -1.</_>\n        <_>\n          1 14 3 3 2.</_>\n        <_>\n          4 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 6 -1.</_>\n        <_>\n          10 14 2 3 2.</_>\n        <_>\n          8 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 2 1 -1.</_>\n        <_>\n          8 11 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 17 3 2 -1.</_>\n        <_>\n          10 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 3 2 -1.</_>\n        <_>\n          9 17 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 14 4 6 -1.</_>\n        <_>\n          14 14 2 3 2.</_>\n        <_>\n          12 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 4 6 -1.</_>\n        <_>\n          4 14 2 3 2.</_>\n        <_>\n          6 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 2 6 -1.</_>\n        <_>\n          14 14 1 3 2.</_>\n        <_>\n          13 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 14 2 6 -1.</_>\n        <_>\n          5 14 1 3 2.</_>\n        <_>\n          6 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 0 6 12 -1.</_>\n        <_>\n          7 4 6 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 7 12 2 -1.</_>\n        <_>\n          4 7 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 3 3 13 -1.</_>\n        <_>\n          11 3 1 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 3 3 13 -1.</_>\n        <_>\n          8 3 1 13 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 6 3 -1.</_>\n        <_>\n          10 9 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 3 2 -1.</_>\n        <_>\n          4 11 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 12 6 8 -1.</_>\n        <_>\n          16 12 3 4 2.</_>\n        <_>\n          13 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 5 -1.</_>\n        <_>\n          9 6 2 5 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 11 2 7 -1.</_>\n        <_>\n          17 11 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 8 2 -1.</_>\n        <_>\n          7 13 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 8 3 -1.</_>\n        <_>\n          6 10 8 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 4 3 -1.</_>\n        <_>\n          4 4 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 4 3 -1.</_>\n        <_>\n          11 4 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 4 17 12 -1.</_>\n        <_>\n          1 8 17 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 4 3 -1.</_>\n        <_>\n          11 4 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 8 6 3 -1.</_>\n        <_>\n          4 9 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 3 5 3 -1.</_>\n        <_>\n          12 4 5 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 2 7 -1.</_>\n        <_>\n          2 11 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 12 2 8 -1.</_>\n        <_>\n          16 12 1 4 2.</_>\n        <_>\n          15 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 8 11 3 -1.</_>\n        <_>\n          4 9 11 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 6 2 -1.</_>\n        <_>\n          12 13 3 1 2.</_>\n        <_>\n          9 14 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 13 4 3 -1.</_>\n        <_>\n          6 14 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 3 3 -1.</_>\n        <_>\n          10 12 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 3 3 -1.</_>\n        <_>\n          5 4 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 4 2 3 -1.</_>\n        <_>\n          9 5 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 16 3 -1.</_>\n        <_>\n          0 3 16 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 12 2 8 -1.</_>\n        <_>\n          16 12 1 4 2.</_>\n        <_>\n          15 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 12 2 8 -1.</_>\n        <_>\n          3 12 1 4 2.</_>\n        <_>\n          4 16 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 13 3 6 -1.</_>\n        <_>\n          14 15 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 13 3 6 -1.</_>\n        <_>\n          3 15 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 10 2 -1.</_>\n        <_>\n          11 5 5 1 2.</_>\n        <_>\n          6 6 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 14 14 6 -1.</_>\n        <_>\n          2 17 14 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 1 3 -1.</_>\n        <_>\n          10 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 16 2 2 -1.</_>\n        <_>\n          4 16 1 1 2.</_>\n        <_>\n          5 17 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 6 2 3 -1.</_>\n        <_>\n          10 7 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 17 20 2 -1.</_>\n        <_>\n          0 17 10 1 2.</_>\n        <_>\n          10 18 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 6 1 3 -1.</_>\n        <_>\n          13 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 3 2 -1.</_>\n        <_>\n          9 13 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 2 3 3 -1.</_>\n        <_>\n          13 2 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 18 2 2 -1.</_>\n        <_>\n          3 18 1 1 2.</_>\n        <_>\n          4 19 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 3 4 -1.</_>\n        <_>\n          10 16 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 1 3 -1.</_>\n        <_>\n          6 7 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 1 5 2 -1.</_>\n        <_>\n          13 2 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 6 2 -1.</_>\n        <_>\n          7 14 3 1 2.</_>\n        <_>\n          10 15 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 3 3 4 -1.</_>\n        <_>\n          12 3 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 13 12 6 -1.</_>\n        <_>\n          5 13 4 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 11 5 2 -1.</_>\n        <_>\n          14 12 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 15 14 4 -1.</_>\n        <_>\n          2 15 7 2 2.</_>\n        <_>\n          9 17 7 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 7 14 2 -1.</_>\n        <_>\n          10 7 7 1 2.</_>\n        <_>\n          3 8 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 11 4 2 -1.</_>\n        <_>\n          1 12 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 14 -1.</_>\n        <_>\n          16 0 2 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 1 3 -1.</_>\n        <_>\n          4 12 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 6 14 -1.</_>\n        <_>\n          16 0 2 14 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 10 3 7 -1.</_>\n        <_>\n          2 10 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 9 2 -1.</_>\n        <_>\n          8 13 9 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 20 1 -1.</_>\n        <_>\n          10 6 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 4 4 4 -1.</_>\n        <_>\n          8 4 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 2 2 -1.</_>\n        <_>\n          0 1 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 3 10 9 -1.</_>\n        <_>\n          5 6 10 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 2 4 10 -1.</_>\n        <_>\n          15 2 2 10 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 2 2 7 -1.</_>\n        <_>\n          9 2 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 4 12 1 -1.</_>\n        <_>\n          11 4 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 4 9 1 -1.</_>\n        <_>\n          6 4 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 10 1 4 -1.</_>\n        <_>\n          15 12 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 10 6 4 -1.</_>\n        <_>\n          7 10 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          15 9 1 6 -1.</_>\n        <_>\n          15 12 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 17 6 3 -1.</_>\n        <_>\n          7 18 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 3 2 16 -1.</_>\n        <_>\n          15 3 1 8 2.</_>\n        <_>\n          14 11 1 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 1 6 -1.</_>\n        <_>\n          4 12 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 1 5 2 -1.</_>\n        <_>\n          12 2 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 18 4 2 -1.</_>\n        <_>\n          6 18 2 1 2.</_>\n        <_>\n          8 19 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 4 16 10 -1.</_>\n        <_>\n          10 4 8 5 2.</_>\n        <_>\n          2 9 8 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 1 10 -1.</_>\n        <_>\n          6 10 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 8 15 2 -1.</_>\n        <_>\n          9 8 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 8 15 2 -1.</_>\n        <_>\n          6 8 5 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 3 6 -1.</_>\n        <_>\n          9 7 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 8 2 -1.</_>\n        <_>\n          9 7 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 11 2 3 -1.</_>\n        <_>\n          9 12 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 16 3 -1.</_>\n        <_>\n          1 1 16 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 2 7 2 -1.</_>\n        <_>\n          11 3 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 10 18 -1.</_>\n        <_>\n          5 7 10 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 4 3 2 -1.</_>\n        <_>\n          18 4 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 1 3 -1.</_>\n        <_>\n          8 14 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 14 6 -1.</_>\n        <_>\n          3 16 14 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 3 4 -1.</_>\n        <_>\n          1 2 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 1 5 2 -1.</_>\n        <_>\n          12 2 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 1 5 2 -1.</_>\n        <_>\n          3 2 5 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 13 2 3 -1.</_>\n        <_>\n          10 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 2 3 -1.</_>\n        <_>\n          8 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 12 2 3 -1.</_>\n        <_>\n          14 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 2 2 3 -1.</_>\n        <_>\n          7 3 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 10 4 -1.</_>\n        <_>\n          10 6 5 2 2.</_>\n        <_>\n          5 8 5 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 13 1 6 -1.</_>\n        <_>\n          9 16 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 12 2 2 -1.</_>\n        <_>\n          11 12 1 1 2.</_>\n        <_>\n          10 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 12 2 3 -1.</_>\n        <_>\n          4 13 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 4 6 6 -1.</_>\n        <_>\n          14 6 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 17 2 3 -1.</_>\n        <_>\n          8 18 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 4 4 6 -1.</_>\n        <_>\n          16 6 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 4 6 -1.</_>\n        <_>\n          0 6 4 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 6 2 3 -1.</_>\n        <_>\n          14 6 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 9 8 1 -1.</_>\n        <_>\n          8 9 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 12 4 3 -1.</_>\n        <_>\n          8 13 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 12 10 6 -1.</_>\n        <_>\n          5 14 10 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 12 1 2 -1.</_>\n        <_>\n          11 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 2 -1.</_>\n        <_>\n          8 16 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 9 8 8 -1.</_>\n        <_>\n          10 9 4 4 2.</_>\n        <_>\n          6 13 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 4 6 -1.</_>\n        <_>\n          7 12 2 3 2.</_>\n        <_>\n          9 15 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 11 3 1 -1.</_>\n        <_>\n          11 11 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 10 -1.</_>\n        <_>\n          9 7 1 5 2.</_>\n        <_>\n          10 12 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 6 6 -1.</_>\n        <_>\n          10 0 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 11 2 6 -1.</_>\n        <_>\n          3 13 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 12 1 2 -1.</_>\n        <_>\n          16 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 6 6 -1.</_>\n        <_>\n          1 14 3 3 2.</_>\n        <_>\n          4 17 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 1 3 6 -1.</_>\n        <_>\n          14 1 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 8 2 2 -1.</_>\n        <_>\n          8 9 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 3 3 -1.</_>\n        <_>\n          10 9 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 7 3 3 -1.</_>\n        <_>\n          8 8 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 2 3 -1.</_>\n        <_>\n          14 0 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 18 9 -1.</_>\n        <_>\n          7 0 6 9 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 5 4 15 -1.</_>\n        <_>\n          11 5 2 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 4 15 -1.</_>\n        <_>\n          7 5 2 15 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 0 2 3 -1.</_>\n        <_>\n          14 0 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 2 3 -1.</_>\n        <_>\n          5 0 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 12 2 2 -1.</_>\n        <_>\n          12 12 1 1 2.</_>\n        <_>\n          11 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 12 2 2 -1.</_>\n        <_>\n          7 12 1 1 2.</_>\n        <_>\n          8 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 3 4 -1.</_>\n        <_>\n          13 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 11 3 3 -1.</_>\n        <_>\n          4 12 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 4 2 -1.</_>\n        <_>\n          12 8 4 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 3 2 -1.</_>\n        <_>\n          9 10 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 3 2 -1.</_>\n        <_>\n          10 9 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 9 3 2 -1.</_>\n        <_>\n          9 9 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 0 3 4 -1.</_>\n        <_>\n          13 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 0 3 4 -1.</_>\n        <_>\n          6 0 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 12 4 -1.</_>\n        <_>\n          10 14 6 2 2.</_>\n        <_>\n          4 16 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 13 2 3 -1.</_>\n        <_>\n          8 14 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 10 3 8 -1.</_>\n        <_>\n          10 14 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 10 4 8 -1.</_>\n        <_>\n          8 10 2 4 2.</_>\n        <_>\n          10 14 2 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 3 1 -1.</_>\n        <_>\n          11 8 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 12 1 6 -1.</_>\n        <_>\n          9 15 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 3 1 -1.</_>\n        <_>\n          11 8 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 3 1 -1.</_>\n        <_>\n          8 8 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 2 15 14 -1.</_>\n        <_>\n          5 9 15 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 1 2 10 -1.</_>\n        <_>\n          2 1 1 5 2.</_>\n        <_>\n          3 6 1 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 14 2 3 -1.</_>\n        <_>\n          14 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 7 3 3 -1.</_>\n        <_>\n          3 7 1 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 4 3 3 -1.</_>\n        <_>\n          17 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 3 3 -1.</_>\n        <_>\n          0 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 6 2 -1.</_>\n        <_>\n          16 5 3 1 2.</_>\n        <_>\n          13 6 3 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 19 12 1 -1.</_>\n        <_>\n          8 19 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 12 2 4 -1.</_>\n        <_>\n          12 14 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 15 1 3 -1.</_>\n        <_>\n          3 16 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 16 6 4 -1.</_>\n        <_>\n          11 16 3 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 10 3 10 -1.</_>\n        <_>\n          3 10 1 10 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 8 2 4 -1.</_>\n        <_>\n          12 8 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 8 2 4 -1.</_>\n        <_>\n          7 8 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 2 3 -1.</_>\n        <_>\n          10 14 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 10 3 -1.</_>\n        <_>\n          10 1 5 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 7 3 2 -1.</_>\n        <_>\n          11 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 6 9 2 -1.</_>\n        <_>\n          8 6 3 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 8 2 2 -1.</_>\n        <_>\n          9 9 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 11 16 6 -1.</_>\n        <_>\n          2 11 8 3 2.</_>\n        <_>\n          10 14 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 7 2 2 -1.</_>\n        <_>\n          13 7 1 1 2.</_>\n        <_>\n          12 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 2 3 -1.</_>\n        <_>\n          9 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 2 -1.</_>\n        <_>\n          10 7 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 1 8 12 -1.</_>\n        <_>\n          5 7 8 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 2 -1.</_>\n        <_>\n          13 6 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 2 -1.</_>\n        <_>\n          5 6 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 14 2 3 -1.</_>\n        <_>\n          4 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 4 3 3 -1.</_>\n        <_>\n          12 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 3 3 -1.</_>\n        <_>\n          5 5 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 6 -1.</_>\n        <_>\n          10 14 1 3 2.</_>\n        <_>\n          9 17 1 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 3 2 -1.</_>\n        <_>\n          9 14 1 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 6 6 -1.</_>\n        <_>\n          11 5 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 6 6 -1.</_>\n        <_>\n          7 5 2 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 13 1 2 -1.</_>\n        <_>\n          13 14 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 10 2 -1.</_>\n        <_>\n          0 3 10 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 13 1 2 -1.</_>\n        <_>\n          13 14 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 2 2 -1.</_>\n        <_>\n          5 7 1 1 2.</_>\n        <_>\n          6 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 7 -1.</_>\n        <_>\n          13 5 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 13 1 2 -1.</_>\n        <_>\n          6 14 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 7 -1.</_>\n        <_>\n          12 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 3 2 16 -1.</_>\n        <_>\n          0 3 1 8 2.</_>\n        <_>\n          1 11 1 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 0 3 7 -1.</_>\n        <_>\n          12 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 3 7 -1.</_>\n        <_>\n          7 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 16 8 4 -1.</_>\n        <_>\n          11 16 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 16 8 4 -1.</_>\n        <_>\n          5 16 4 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 5 2 7 -1.</_>\n        <_>\n          13 5 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 5 2 7 -1.</_>\n        <_>\n          6 5 1 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 6 2 14 -1.</_>\n        <_>\n          18 13 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 10 3 4 -1.</_>\n        <_>\n          6 12 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 7 1 2 -1.</_>\n        <_>\n          14 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 18 6 -1.</_>\n        <_>\n          0 1 9 3 2.</_>\n        <_>\n          9 4 9 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 7 1 2 -1.</_>\n        <_>\n          14 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 2 14 -1.</_>\n        <_>\n          0 13 2 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          17 0 3 12 -1.</_>\n        <_>\n          18 0 1 12 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 6 18 3 -1.</_>\n        <_>\n          0 7 18 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 14 16 -1.</_>\n        <_>\n          6 8 14 8 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 3 12 -1.</_>\n        <_>\n          1 0 1 12 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 3 7 -1.</_>\n        <_>\n          14 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 1 2 -1.</_>\n        <_>\n          5 8 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 4 6 6 -1.</_>\n        <_>\n          14 6 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 7 7 2 -1.</_>\n        <_>\n          5 8 7 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 6 9 -1.</_>\n        <_>\n          8 9 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 4 6 1 -1.</_>\n        <_>\n          7 4 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 6 4 -1.</_>\n        <_>\n          16 0 3 2 2.</_>\n        <_>\n          13 2 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 2 18 12 -1.</_>\n        <_>\n          1 6 18 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 2 17 12 -1.</_>\n        <_>\n          3 6 17 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          5 14 7 3 -1.</_>\n        <_>\n          5 15 7 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 14 1 3 -1.</_>\n        <_>\n          10 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          3 14 3 3 -1.</_>\n        <_>\n          3 15 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          14 4 6 6 -1.</_>\n        <_>\n          14 6 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 6 6 -1.</_>\n        <_>\n          0 6 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          12 5 4 3 -1.</_>\n        <_>\n          12 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 5 4 3 -1.</_>\n        <_>\n          4 6 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 0 2 6 -1.</_>\n        <_>\n          18 2 2 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 1 4 9 -1.</_>\n        <_>\n          10 1 2 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 6 8 2 -1.</_>\n        <_>\n          6 6 4 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 5 4 2 -1.</_>\n        <_>\n          6 5 2 1 2.</_>\n        <_>\n          8 6 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 5 2 3 -1.</_>\n        <_>\n          10 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 1 3 -1.</_>\n        <_>\n          9 6 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 10 2 2 -1.</_>\n        <_>\n          9 11 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 8 4 3 -1.</_>\n        <_>\n          0 9 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 0 8 6 -1.</_>\n        <_>\n          6 3 8 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 0 6 4 -1.</_>\n        <_>\n          1 0 3 2 2.</_>\n        <_>\n          4 2 3 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 0 3 7 -1.</_>\n        <_>\n          14 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 16 2 2 -1.</_>\n        <_>\n          9 17 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 4 6 10 -1.</_>\n        <_>\n          11 9 6 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 10 19 2 -1.</_>\n        <_>\n          0 11 19 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 8 9 -1.</_>\n        <_>\n          9 8 8 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 0 3 7 -1.</_>\n        <_>\n          5 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 6 4 12 -1.</_>\n        <_>\n          10 6 2 6 2.</_>\n        <_>\n          8 12 2 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 2 6 4 -1.</_>\n        <_>\n          0 4 6 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 15 4 3 -1.</_>\n        <_>\n          8 16 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 0 3 7 -1.</_>\n        <_>\n          9 0 1 7 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 5 3 4 -1.</_>\n        <_>\n          10 5 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 5 3 4 -1.</_>\n        <_>\n          9 5 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 6 6 1 -1.</_>\n        <_>\n          9 6 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 4 4 -1.</_>\n        <_>\n          7 14 2 2 2.</_>\n        <_>\n          9 16 2 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          13 14 4 6 -1.</_>\n        <_>\n          15 14 2 3 2.</_>\n        <_>\n          13 17 2 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 1 8 -1.</_>\n        <_>\n          7 12 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          16 0 2 8 -1.</_>\n        <_>\n          17 0 1 4 2.</_>\n        <_>\n          16 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          2 0 2 8 -1.</_>\n        <_>\n          2 0 1 4 2.</_>\n        <_>\n          3 4 1 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          6 1 14 3 -1.</_>\n        <_>\n          6 2 14 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 9 3 10 -1.</_>\n        <_>\n          7 14 3 5 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 2 2 -1.</_>\n        <_>\n          9 15 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 7 6 8 -1.</_>\n        <_>\n          7 11 6 4 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 3 6 -1.</_>\n        <_>\n          9 10 3 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 13 3 3 -1.</_>\n        <_>\n          7 14 3 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 9 2 2 -1.</_>\n        <_>\n          9 10 2 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 1 18 2 -1.</_>\n        <_>\n          6 1 6 2 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 1 6 14 -1.</_>\n        <_>\n          7 8 6 7 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 9 18 1 -1.</_>\n        <_>\n          7 9 6 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 7 2 2 -1.</_>\n        <_>\n          9 7 1 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 3 2 9 -1.</_>\n        <_>\n          10 3 1 9 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          18 14 2 3 -1.</_>\n        <_>\n          18 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 11 3 1 -1.</_>\n        <_>\n          8 11 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 3 4 -1.</_>\n        <_>\n          11 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 14 3 6 -1.</_>\n        <_>\n          8 14 1 6 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          10 8 3 4 -1.</_>\n        <_>\n          11 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 8 3 4 -1.</_>\n        <_>\n          8 8 1 4 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          7 9 6 9 -1.</_>\n        <_>\n          7 12 6 3 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 14 2 3 -1.</_>\n        <_>\n          0 15 2 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          11 12 1 2 -1.</_>\n        <_>\n          11 13 1 1 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          4 3 8 3 -1.</_>\n        <_>\n          8 3 4 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 4 20 6 -1.</_>\n        <_>\n          0 4 10 6 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          9 14 1 3 -1.</_>\n        <_>\n          9 15 1 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          8 14 4 3 -1.</_>\n        <_>\n          8 15 4 1 3.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 15 14 4 -1.</_>\n        <_>\n          0 17 14 2 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          1 14 18 6 -1.</_>\n        <_>\n          1 17 18 3 2.</_></rects></_>\n    <_>\n      <rects>\n        <_>\n          0 0 10 6 -1.</_>\n        <_>\n          0 0 5 3 2.</_>\n        <_>\n          5 3 5 3 2.</_></rects></_></features></cascade>\n</opencv_storage>\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/MLP/fc_model.py",
    "content": "import torch\nfrom torch import nn\nimport torch.nn.functional as F\n\n\nclass Network(nn.Module):\n    def __init__(self, input_size, output_size, hidden_layers, drop_p=0.5):\n        \"\"\" Builds a feedforward network with arbitrary hidden layers.\n        \n            Arguments\n            ---------\n            input_size: integer, size of the input layer\n            output_size: integer, size of the output layer\n            hidden_layers: list of integers, the sizes of the hidden layers\n        \n        \"\"\"\n        super().__init__()\n        # Input to a hidden layer\n        self.hidden_layers = nn.ModuleList([nn.Linear(input_size, hidden_layers[0])])\n\n        # Add a variable number of more hidden layers\n        layer_sizes = zip(hidden_layers[:-1], hidden_layers[1:])\n        self.hidden_layers.extend([nn.Linear(h1, h2) for h1, h2 in layer_sizes])\n\n        self.output = nn.Linear(hidden_layers[-1], output_size)\n\n        self.dropout = nn.Dropout(p=drop_p)\n\n    def forward(self, x):\n        \"\"\" Forward pass through the network, returns the output logits \"\"\"\n\n        for each in self.hidden_layers:\n            x = F.relu(each(x))\n            x = self.dropout(x)\n        x = self.output(x)\n\n        return F.log_softmax(x, dim=1)\n\n\ndef validation(model, testloader, criterion):\n    accuracy = 0\n    test_loss = 0\n    for images, labels in testloader:\n\n        images = images.resize_(images.size()[0], 784)\n\n        output = model.forward(images)\n        test_loss += criterion(output, labels).item()\n\n        ## Calculating the accuracy\n        # Model's output is log-softmax, take exponential to get the probabilities\n        ps = torch.exp(output)\n        # Class with highest probability is our predicted class, compare with true label\n        equality = labels.data == ps.max(1)[1]\n        # Accuracy is number of correct predictions divided by all predictions, just take the mean\n        accuracy += equality.type_as(torch.FloatTensor()).mean()\n\n    return test_loss, accuracy\n\n\ndef train(\n    model, trainloader, testloader, criterion, optimizer, epochs=5, print_every=40\n):\n\n    steps = 0\n    running_loss = 0\n    for e in range(epochs):\n        # Model in training mode, dropout is on\n        model.train()\n        for images, labels in trainloader:\n            steps += 1\n\n            # Flatten images into a 784 long vector\n            images.resize_(images.size()[0], 784)\n\n            optimizer.zero_grad()\n\n            output = model.forward(images)\n            loss = criterion(output, labels)\n            loss.backward()\n            optimizer.step()\n\n            running_loss += loss.item()\n\n            if steps % print_every == 0:\n                # Model in inference mode, dropout is off\n                model.eval()\n\n                # Turn off gradients for validation, will speed up inference\n                with torch.no_grad():\n                    test_loss, accuracy = validation(model, testloader, criterion)\n\n                print(\n                    \"Epoch: {}/{}.. \".format(e + 1, epochs),\n                    \"Training Loss: {:.3f}.. \".format(running_loss / print_every),\n                    \"Test Loss: {:.3f}.. \".format(test_loss / len(testloader)),\n                    \"Test Accuracy: {:.3f}\".format(accuracy / len(testloader)),\n                )\n\n                running_loss = 0\n\n                # Make sure dropout and grads are on for training\n                model.train()\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/MLP/helper.py",
    "content": "import matplotlib.pyplot as plt\nimport numpy as np\nfrom torch import nn, optim\nfrom torch.autograd import Variable\n\n\ndef test_network(net, trainloader):\n\n    criterion = nn.MSELoss()\n    optimizer = optim.Adam(net.parameters(), lr=0.001)\n\n    dataiter = iter(trainloader)\n    images, labels = dataiter.next()\n\n    # Create Variables for the inputs and targets\n    inputs = Variable(images)\n    targets = Variable(images)\n\n    # Clear the gradients from all Variables\n    optimizer.zero_grad()\n\n    # Forward pass, then backward pass, then update weights\n    output = net.forward(inputs)\n    loss = criterion(output, targets)\n    loss.backward()\n    optimizer.step()\n\n    return True\n\n\ndef imshow(image, ax=None, title=None, normalize=True):\n    \"\"\"Imshow for Tensor.\"\"\"\n    if ax is None:\n        fig, ax = plt.subplots()\n    image = image.numpy().transpose((1, 2, 0))\n\n    if normalize:\n        mean = np.array([0.485, 0.456, 0.406])\n        std = np.array([0.229, 0.224, 0.225])\n        image = std * image + mean\n        image = np.clip(image, 0, 1)\n\n    ax.imshow(image)\n    ax.spines[\"top\"].set_visible(False)\n    ax.spines[\"right\"].set_visible(False)\n    ax.spines[\"left\"].set_visible(False)\n    ax.spines[\"bottom\"].set_visible(False)\n    ax.tick_params(axis=\"both\", length=0)\n    ax.set_xticklabels(\"\")\n    ax.set_yticklabels(\"\")\n\n    return ax\n\n\ndef view_recon(img, recon):\n    \"\"\" Function for displaying an image (as a PyTorch Tensor) and its\n        reconstruction also a PyTorch Tensor\n    \"\"\"\n\n    fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True)\n    axes[0].imshow(img.numpy().squeeze())\n    axes[1].imshow(recon.data.numpy().squeeze())\n    for ax in axes:\n        ax.axis(\"off\")\n        ax.set_adjustable(\"box-forced\")\n\n\ndef view_classify(img, ps, version=\"MNIST\"):\n    \"\"\" Function for viewing an image and it's predicted classes.\n    \"\"\"\n    ps = ps.data.numpy().squeeze()\n\n    fig, (ax1, ax2) = plt.subplots(figsize=(6, 9), ncols=2)\n    ax1.imshow(img.resize_(1, 28, 28).numpy().squeeze())\n    ax1.axis(\"off\")\n    ax2.barh(np.arange(10), ps)\n    ax2.set_aspect(0.1)\n    ax2.set_yticks(np.arange(10))\n    if version == \"MNIST\":\n        ax2.set_yticklabels(np.arange(10))\n    elif version == \"Fashion\":\n        ax2.set_yticklabels(\n            [\n                \"T-shirt/top\",\n                \"Trouser\",\n                \"Pullover\",\n                \"Dress\",\n                \"Coat\",\n                \"Sandal\",\n                \"Shirt\",\n                \"Sneaker\",\n                \"Bag\",\n                \"Ankle Boot\",\n            ],\n            size=\"small\",\n        )\n    ax2.set_title(\"Class Probability\")\n    ax2.set_xlim(0, 1.1)\n\n    plt.tight_layout()\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/TODO/GAN/cycle-gan/helpers.py",
    "content": "# helper functions for saving sample data and models\n\n# import data loading libraries\nimport os\nimport pdb\nimport pickle\nimport argparse\n\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")\n\n# import torch\nimport torch\n\n\n# numpy & scipy imports\nimport numpy as np\nimport scipy\nimport scipy.misc\n\n\ndef checkpoint(\n    iteration, G_XtoY, G_YtoX, D_X, D_Y, checkpoint_dir=\"checkpoints_cyclegan\"\n):\n    \"\"\"Saves the parameters of both generators G_YtoX, G_XtoY and discriminators D_X, D_Y.\n        \"\"\"\n    G_XtoY_path = os.path.join(checkpoint_dir, \"G_XtoY.pkl\")\n    G_YtoX_path = os.path.join(checkpoint_dir, \"G_YtoX.pkl\")\n    D_X_path = os.path.join(checkpoint_dir, \"D_X.pkl\")\n    D_Y_path = os.path.join(checkpoint_dir, \"D_Y.pkl\")\n    torch.save(G_XtoY.state_dict(), G_XtoY_path)\n    torch.save(G_YtoX.state_dict(), G_YtoX_path)\n    torch.save(D_X.state_dict(), D_X_path)\n    torch.save(D_Y.state_dict(), D_Y_path)\n\n\ndef merge_images(sources, targets, batch_size=16):\n    \"\"\"Creates a grid consisting of pairs of columns, where the first column in\n        each pair contains images source images and the second column in each pair\n        contains images generated by the CycleGAN from the corresponding images in\n        the first column.\n        \"\"\"\n    _, _, h, w = sources.shape\n    row = int(np.sqrt(batch_size))\n    merged = np.zeros([3, row * h, row * w * 2])\n    for idx, (s, t) in enumerate(zip(sources, targets)):\n        i = idx // row\n        j = idx % row\n        merged[:, i * h : (i + 1) * h, (j * 2) * h : (j * 2 + 1) * h] = s\n        merged[:, i * h : (i + 1) * h, (j * 2 + 1) * h : (j * 2 + 2) * h] = t\n    merged = merged.transpose(1, 2, 0)\n    return merged\n\n\ndef to_data(x):\n    \"\"\"Converts variable to numpy.\"\"\"\n    if torch.cuda.is_available():\n        x = x.cpu()\n    x = x.data.numpy()\n    x = ((x + 1) * 255 / (2)).astype(np.uint8)  # rescale to 0-255\n    return x\n\n\ndef save_samples(\n    iteration,\n    fixed_Y,\n    fixed_X,\n    G_YtoX,\n    G_XtoY,\n    batch_size=16,\n    sample_dir=\"samples_cyclegan\",\n):\n    \"\"\"Saves samples from both generators X->Y and Y->X.\n        \"\"\"\n    # move input data to correct device\n    device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n    fake_X = G_YtoX(fixed_Y.to(device))\n    fake_Y = G_XtoY(fixed_X.to(device))\n\n    X, fake_X = to_data(fixed_X), to_data(fake_X)\n    Y, fake_Y = to_data(fixed_Y), to_data(fake_Y)\n\n    merged = merge_images(X, fake_Y, batch_size)\n    path = os.path.join(sample_dir, \"sample-{:06d}-X-Y.png\".format(iteration))\n    scipy.misc.imsave(path, merged)\n    print(\"Saved {}\".format(path))\n\n    merged = merge_images(Y, fake_X, batch_size)\n    path = os.path.join(sample_dir, \"sample-{:06d}-Y-X.png\".format(iteration))\n    scipy.misc.imsave(path, merged)\n    print(\"Saved {}\".format(path))\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/TODO/GAN/cycle-gan/samples_cyclegan/samples_dir.txt",
    "content": "An empty samples directory for saving generated samples during training.\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/TODO/GAN/project-face-generation/problem_unittests.py",
    "content": "from unittest.mock import MagicMock, patch\nimport numpy as np\nimport torch\n\n\ndef _print_success_message():\n    print(\"Tests Passed\")\n\n\nclass AssertTest(object):\n    def __init__(self, params):\n        self.assert_param_message = \"\\n\".join(\n            [str(k) + \": \" + str(v) + \"\" for k, v in params.items()]\n        )\n\n    def test(self, assert_condition, assert_message):\n        assert assert_condition, (\n            assert_message\n            + \"\\n\\nUnit Test Function Parameters\\n\"\n            + self.assert_param_message\n        )\n\n\ndef test_discriminator(Discriminator):\n    batch_size = 50\n    conv_dim = 10\n    D = Discriminator(conv_dim)\n\n    # create random image input\n    x = torch.from_numpy(\n        np.random.randint(1, size=(batch_size, 3, 32, 32)) * 2 - 1\n    ).float()\n\n    train_on_gpu = torch.cuda.is_available()\n    if train_on_gpu:\n        x.cuda()\n\n    output = D(x)\n    assert_test = AssertTest(\n        {\"Conv Dim\": conv_dim, \"Batch Size\": batch_size, \"Input\": x}\n    )\n\n    correct_output_size = (batch_size, 1)\n    assert_condition = output.size() == correct_output_size\n    assert_message = \"Wrong output size. Expected type {}. Got type {}\".format(\n        correct_output_size, output.size()\n    )\n    assert_test.test(assert_condition, assert_message)\n\n    _print_success_message()\n\n\ndef test_generator(Generator):\n    batch_size = 50\n    z_size = 25\n    conv_dim = 10\n    G = Generator(z_size, conv_dim)\n\n    # create random input\n    z = np.random.uniform(-1, 1, size=(batch_size, z_size))\n    z = torch.from_numpy(z).float()\n\n    train_on_gpu = torch.cuda.is_available()\n    if train_on_gpu:\n        z.cuda()\n    # b = torch.LongTensor(a)\n    # nn_input = torch.autograd.Variable(b)\n\n    output = G(z)\n    assert_test = AssertTest(\n        {\"Z size\": z_size, \"Conv Dim\": conv_dim, \"Batch Size\": batch_size, \"Input\": z}\n    )\n\n    correct_output_size = (batch_size, 3, 32, 32)\n    assert_condition = output.size() == correct_output_size\n    assert_message = \"Wrong output size. Expected type {}. Got type {}\".format(\n        correct_output_size, output.size()\n    )\n    assert_test.test(assert_condition, assert_message)\n\n    _print_success_message()\n"
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/word2vec-embeddings/data/download_data.txt",
    "content": "Download the text8.zip file as per the instructions in the exercise notebooks. Extract that data in this directory so that you get data/text8."
  },
  {
    "path": "DEEP LEARNING/Pytorch from scratch/word2vec-embeddings/utils.py",
    "content": "import re\nfrom collections import Counter\n\n\ndef preprocess(text):\n\n    # Replace punctuation with tokens so we can use them in our model\n    text = text.lower()\n    text = text.replace(\".\", \" <PERIOD> \")\n    text = text.replace(\",\", \" <COMMA> \")\n    text = text.replace('\"', \" <QUOTATION_MARK> \")\n    text = text.replace(\";\", \" <SEMICOLON> \")\n    text = text.replace(\"!\", \" <EXCLAMATION_MARK> \")\n    text = text.replace(\"?\", \" <QUESTION_MARK> \")\n    text = text.replace(\"(\", \" <LEFT_PAREN> \")\n    text = text.replace(\")\", \" <RIGHT_PAREN> \")\n    text = text.replace(\"--\", \" <HYPHENS> \")\n    text = text.replace(\"?\", \" <QUESTION_MARK> \")\n    # text = text.replace('\\n', ' <NEW_LINE> ')\n    text = text.replace(\":\", \" <COLON> \")\n    words = text.split()\n\n    # Remove all words with  5 or fewer occurences\n    word_counts = Counter(words)\n    trimmed_words = [word for word in words if word_counts[word] > 5]\n\n    return trimmed_words\n\n\ndef create_lookup_tables(words):\n    \"\"\"\n    Create lookup tables for vocabulary\n    :param words: Input list of words\n    :return: Two dictionaries, vocab_to_int, int_to_vocab\n    \"\"\"\n    word_counts = Counter(words)\n    # sorting the words from most to least frequent in text occurrence\n    sorted_vocab = sorted(word_counts, key=word_counts.get, reverse=True)\n    # create int_to_vocab dictionaries\n    int_to_vocab = {ii: word for ii, word in enumerate(sorted_vocab)}\n    vocab_to_int = {word: ii for ii, word in int_to_vocab.items()}\n\n    return vocab_to_int, int_to_vocab\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/README.MD",
    "content": "## Solution to TGS Salt Identification Challenge 2018\n\nLink: https://www.kaggle.com/c/tgs-salt-identification-challenge\n\nDetailed solution explanation: https://medium.com/@insafashrapov/kaggle-salt-identification-challenge-7fc502d1c3c3\n\nSeveral areas of Earth with large accumulations of oil and gas also have huge deposits of salt below the surface.\n\nBut unfortunately, knowing where large salt deposits are precisely is very difficult. Professional seismic imaging still requires expert human interpretation of salt bodies. This leads to very subjective, highly variable renderings. More alarmingly, it leads to potentially dangerous situations for oil and gas company drillers.\n\nTo create the most accurate seismic images and 3D renderings, TGS (the world’s leading geoscience data company) is hoping Kaggle’s machine learning community will be able to build an algorithm that automatically and accurately identifies if a subsurface target is salt or not.\n\nI with my team ranked 27th (TOP 1%) in the TGS Salt Identification Challenge on Kaggle platform\n\n\n\nTeammates:\n\n* Mikhail Karchevskiy\n* Leonid Kozinkin \n\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/data_loader.py",
    "content": "import torch\nfrom torch.utils.data import Dataset\nfrom torch.utils.data import DataLoader\nfrom data_process.transform import *\nimport random\nimport pandas as pd\n\n\ndef read_txt(txt):\n    f = open(txt, \"r\")\n    lines = f.readlines()\n    f.close()\n    return [tmp.strip() for tmp in lines]\n\n\nclass SaltDataset(Dataset):\n    def __init__(self, transform, mode, image_size, fold_index, aug_list):\n\n        self.transform = transform\n        self.mode = mode\n        self.image_size = image_size\n        self.aug_list = aug_list\n\n        print(\"AugList: \")\n        print(self.aug_list)\n\n        # change to your path\n        self.train_image_path = r\"/data1/dex/DATA/Kaggle/Salt/Kaggle_salt/train/images\"\n        self.train_mask_path = r\"/data1/dex/DATA/Kaggle/Salt/Kaggle_salt/train/masks\"\n        self.test_image_path = r\"/data1/dex/DATA/Kaggle/Salt/Kaggle_salt/test/images\"\n\n        self.fold_index = None\n        self.set_mode(mode, fold_index)\n\n    def set_mode(self, mode, fold_index):\n        self.mode = mode\n        self.fold_index = fold_index\n        print(\"fold index set: \" + str(fold_index))\n\n        if self.mode == \"train\":\n            data = pd.read_csv(\n                \"./data_process/10fold/fold\" + str(fold_index) + \"_train.csv\"\n            )\n            self.train_list = data[\"fold\"]\n            self.train_list = [tmp + \".png\" for tmp in self.train_list]\n            self.num_data = len(self.train_list)\n\n        elif self.mode == \"val\":\n            data = pd.read_csv(\n                \"./data_process/10fold/fold\" + str(fold_index) + \"_valid.csv\"\n            )\n            self.val_list = data[\"fold\"]\n            self.val_list = [tmp + \".png\" for tmp in self.val_list]\n            self.num_data = len(self.val_list)\n\n        elif self.mode == \"test\":\n            self.test_list = read_txt(\"./data_process/10fold/test.txt\")\n            self.num_data = len(self.test_list)\n            print(\"set dataset mode: test\")\n\n    def __getitem__(self, index):\n        if self.fold_index is None:\n            print(\"WRONG!!!!!!! fold index is NONE!!!!!!!!!!!!!!!!!\")\n            return\n\n        if self.mode == \"train\":\n            image = cv2.imread(\n                os.path.join(self.train_image_path, self.train_list[index]), 1\n            )\n            label = cv2.imread(\n                os.path.join(self.train_mask_path, self.train_list[index]), 0\n            )\n\n        if self.mode == \"val\":\n            image = cv2.imread(\n                os.path.join(self.train_image_path, self.val_list[index]), 1\n            )\n            label = cv2.imread(\n                os.path.join(self.train_mask_path, self.val_list[index]), 0\n            )\n\n        if self.mode == \"test\":\n            image = cv2.imread(\n                os.path.join(self.test_image_path, self.test_list[index]), 1\n            )\n            image_id = self.test_list[index].replace(\".png\", \"\")\n\n            if self.image_size == 128:\n                image = resize_and_pad(image, resize_size=101, factor=64)\n\n            image = image.reshape([self.image_size, self.image_size, 3])\n            image = np.transpose(image, (2, 0, 1))\n            image = image.astype(np.float32)\n            image = image.reshape([3, self.image_size, self.image_size])\n            image = (image.astype(np.float32) - 127.5) / 127.5\n            return image_id, torch.FloatTensor(image)\n\n        is_empty = False\n        if np.sum(label) == 0:\n            is_empty = True\n\n        if self.mode == \"train\":\n            image, label = resize_and_random_pad(\n                image, label, resize_size=101, factor=128, limit=(-13, 13)\n            )\n        else:\n            image = resize_and_pad(image, resize_size=101, factor=128)\n            label = resize_and_pad(label, resize_size=101, factor=128)\n\n        image = cv2.resize(image, (self.image_size, self.image_size))\n        label = cv2.resize(label, (self.image_size, self.image_size))\n\n        if self.mode == \"train\":\n            if \"flip_lr\" in self.aug_list:\n                if random.randint(0, 1) == 0:\n                    image = cv2.flip(image, 1)\n                    label = cv2.flip(label, 1)\n\n        image = image.reshape([self.image_size, self.image_size, 3])\n        label = label.reshape([self.image_size, self.image_size, 1])\n        image = np.transpose(image, (2, 0, 1)).astype(np.float32)\n        image = (image.astype(np.float32) - 127.5) / 127.5\n\n        label = label.reshape([1, self.image_size, self.image_size])\n        label = np.asarray(label).astype(np.float32) / 255.0\n        label[label >= 0.5] = 1.0\n        label[label < 0.5] = 0.0\n\n        return torch.FloatTensor(image), torch.FloatTensor(label), is_empty\n\n    def __len__(self):\n        return self.num_data\n\n\ndef get_foldloader(image_size, batch_size, fold_index, aug_list=None, mode=\"train\"):\n\n    \"\"\"Build and return data loader.\"\"\"\n    dataset = SaltDataset(None, mode, image_size, fold_index, aug_list)\n\n    shuffle = False\n    if mode == \"train\":\n        shuffle = True\n\n    data_loader = DataLoader(\n        dataset=dataset, batch_size=batch_size, num_workers=4, shuffle=shuffle\n    )\n    return data_loader\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/data_process/10fold/test.txt",
    "content": "943df308b6.png\n00cdefa5d6.png\n648d1ae4be.png\n3c7d16efb4.png\nb59bb4f42b.png\n60b26ed15e.png\n5f6eb0452b.png\nb57b8d5c7e.png\n266496989f.png\n833a450da1.png\nf0256c5c19.png\nd09f670a22.png\na15ac41235.png\na4763177ef.png\n555397b192.png\nd22a045c82.png\nd01e3d8f7c.png\n3d9c671ce1.png\n78d973e057.png\na7fad8af86.png\na37e566b4b.png\na1ad0767f1.png\ndcf7859b19.png\nab9a9e48dc.png\neba07f1ec1.png\n915ad56faf.png\n40c2c80414.png\n25a273a16a.png\n624b6a6c3b.png\n8ab2e33896.png\n34a38ef34a.png\n3018711518.png\n4280f083c5.png\nd395e56a46.png\ne483ed9136.png\n00f6108ccb.png\n2637e17579.png\nc4291c0396.png\n22c642d3eb.png\n51adcb4fd1.png\n9dd492d6e6.png\n57f80fed27.png\n68ca6d4b5d.png\n28b5ab7b37.png\nbf6482f963.png\n2efa022d01.png\n99d1164d5f.png\n970bd44389.png\n55cf1d31dc.png\nfd038e782c.png\nc4b84025e1.png\ncf8ed7e7b4.png\nff65941484.png\n6f97112511.png\neb18014173.png\na01dfd5b11.png\n6592d5e7fe.png\n6f931611f7.png\nb698fce464.png\ncd8c487734.png\nb46cdbca5d.png\ned00daf087.png\n0fca192950.png\n72fed38a43.png\n21beba74c7.png\n6c21a33935.png\nc4f24495e3.png\n4698cc32f9.png\n612e3372ce.png\n711c505cf4.png\ndc898d55ca.png\n9fed64924e.png\n36df9ee508.png\n14826063c7.png\n8a9ddaff1d.png\nca176eaab9.png\n4ab1ae3516.png\ne3ee715d4e.png\n9f2cc46573.png\n2b23c2e75a.png\n67e59dec89.png\n388099f75d.png\n34fc4627ff.png\n31e17c9459.png\n07e99af922.png\n489df63e85.png\n9a808f321d.png\n6086dd952b.png\nb9b8727ba8.png\n6432584b53.png\n5f9879a8bc.png\nc63683e0af.png\n0ab9e80e8c.png\n9002e4bbcb.png\n4450426d55.png\n830509e296.png\n1d3b12f176.png\na9bf8069ba.png\nbbf3b633d7.png\nca9ebdb0e6.png\nb9f34d3039.png\nd9c57ba98b.png\na6d97826dd.png\n3138263206.png\n386b1e501f.png\n33d638b9bd.png\ne4ce609688.png\nb5a206a00d.png\n665912cade.png\n6fcf6097f2.png\nd61b459e61.png\n9f2ca5078b.png\n3ad3fd1b91.png\n3c77cbb39a.png\n3c44e011af.png\n3dff831f3c.png\n6208c7711e.png\nbe48e1e064.png\n1cf33ec55a.png\n5503a13b3b.png\nb71f8ae21f.png\n4553f776f0.png\nc2be737b81.png\ne510198a84.png\n92af56fd8a.png\n948b2bed44.png\ndf7daf15b5.png\n091b46d588.png\nfefe2eb684.png\nbe147b0ef2.png\nf67e8204ca.png\nbc7471a6c2.png\n587c839aba.png\n0d5d3cadd5.png\n12f06e8373.png\nb664b27025.png\n3a40695e2d.png\ne0ac392d8f.png\n4b354208b1.png\n4a85d2fb19.png\n18046df8e3.png\ne8c835e104.png\n3f404c5022.png\n3cf7c01481.png\n73e231af37.png\n2c0dca7cbd.png\n79fbf50ca3.png\n4ca1a99fcf.png\n52a63b329c.png\n78b42298ab.png\n539666654e.png\ne71e4852db.png\n8ff5e93573.png\n15b7f06ba0.png\n11737bd271.png\n91297fe545.png\n54e0223472.png\ne468f76d96.png\n316d5719d5.png\n3b85447c61.png\ned5ffdd2a8.png\n89452791fd.png\n3078a52105.png\n78f7d46b55.png\n6e4fe449ce.png\n4510ce8fef.png\n8c6b8aac6d.png\n6f9e3bb2f7.png\n147ec91542.png\n041f48019f.png\n5f6cf01dd6.png\nb690245d77.png\n40fceff327.png\nea189558a2.png\neca39b106e.png\ne83c7943f9.png\n5002e0163a.png\nc32590b06f.png\neaf44cece7.png\nf762ed84a5.png\nafd984cece.png\n3081fa09b8.png\na5ae14f500.png\n89a57acfbb.png\n02564072c0.png\ndd631e6569.png\n782a4a89f1.png\n8e99199e35.png\n760e92cf87.png\n13e2856613.png\nb00c0fdd0e.png\n3fea5ef77d.png\n0c59027602.png\n40a1a3ddcf.png\n6cf620a2f0.png\n15f3e1a0df.png\nf7c685315e.png\na67fe36ac3.png\n6e37ae1fde.png\nbb09d123bc.png\n8ef46c404f.png\nb6c481b604.png\na5a9e48a1b.png\n2b0ff86c1b.png\n41fbcb79d9.png\n968c87dbe9.png\n31c8f92fa9.png\nfb6ef1a753.png\n1f27336ad7.png\n547bfceee8.png\ne7ceb8a1f0.png\naab16917e6.png\n0fac240905.png\n821f0bcb1d.png\nab9683d790.png\n2ac0b5c25c.png\ncd5d4d603c.png\nf82f19a681.png\n6ca74c085b.png\n85f763a9b4.png\n0aa92c32d3.png\n1aec922970.png\nf84783b31a.png\n65474585cb.png\n426bdcb658.png\n62c2287cc4.png\n7ee401ed76.png\n4bea09bfd4.png\n87114ddd92.png\n7a4dad7bb4.png\n2726b3fba5.png\n142209dcbf.png\nc1f6155789.png\neac74e0d63.png\ncb68284b4e.png\n1b97d2054b.png\n8b58bed470.png\n3a41611201.png\nc176666556.png\n58d550a35d.png\n6d75fcd108.png\n970e117246.png\n85c075014c.png\n9eb7f34982.png\nfbb9e8c041.png\ne426261c0a.png\n3fefb4fa2d.png\n2a44b1aa4c.png\n5e29776755.png\n37949f5dd0.png\n7efc8f9954.png\n60668ceb17.png\ncdd5f9eb0c.png\n1afb27f632.png\ne8a4f0dd80.png\n3fe1578a95.png\n094511c4a5.png\nf3f127c01a.png\n64752b5954.png\n6031814bd6.png\n2bd492e362.png\n3ed16c7933.png\ncc52462e9d.png\n8c27396a23.png\n5f6a9df8e3.png\nc687189501.png\n056d7bd8cd.png\n04a60b7e45.png\n4a2b003ce2.png\n0230002b65.png\n4b15cebb3c.png\nd480770008.png\n1ac1e18079.png\nc1de072b83.png\n15a5fc9a44.png\nd063e9625c.png\n6402f3af25.png\n00a738b887.png\nf3ab43b528.png\n208d90dde3.png\n5454e63aaf.png\nc18ed6f057.png\nafeced8b5f.png\nddbdc80b55.png\n20b0f116bf.png\n20821458c9.png\n3110e75d41.png\n7f59a43fb8.png\n8e544dd9be.png\n74c86f24cb.png\n2a44c7f603.png\n1300ce55c4.png\n101aef99e5.png\n6425106fd4.png\n4c2c29b221.png\n3cbad9e965.png\nc23175cb53.png\n7bc114d737.png\n3d08ee7fe7.png\n49ce7de30b.png\n8a4a6988f2.png\na88d46d451.png\nab21a116de.png\n6f4fce059a.png\n24ab9aa878.png\n2aa3aed6f0.png\n6f2a1691c4.png\n2f611aa593.png\nefe1db1329.png\n4d83ad1538.png\n0ccee86f32.png\nf3ab5cd2c9.png\n83aaa6313e.png\neecee83e14.png\n16ad47a452.png\nbc5697eebb.png\n5cdaefe6c0.png\nc6a07c1bf0.png\n31767a6b6a.png\n2f4efcb073.png\nb1a2903d1c.png\n406ba2a864.png\n1b01a457d9.png\n30a31f4de8.png\nc4a1a78146.png\n12069cc8fe.png\n706bee4c9c.png\n8caa006f70.png\nf1af965f8f.png\n62db2c0479.png\n213ac06da3.png\nd095994640.png\n64b5679468.png\n5b780293cd.png\n859d0acc6d.png\nf2ff5cdf47.png\ne643e16a33.png\n70cc45bc3a.png\n143238e252.png\n63a371159d.png\n3535fe3ff5.png\n68c24f3d46.png\ndd07581d02.png\ndbc641e275.png\n8f06e655a4.png\nc9fc576387.png\n96882dd4fa.png\nd484fbb030.png\na5964e0dac.png\n0712ea6aab.png\n214bb6c663.png\n5e2a86e209.png\n2980d1bf07.png\nf81b02f6ee.png\nc437d4a4cd.png\n333dd21431.png\n7a4f1e86bf.png\n9ae931f21a.png\nf3e67c0d77.png\nc38c3f0a49.png\n5a416af8db.png\n54a7882e73.png\n74a3b69852.png\nee98738f1f.png\n939fbf65d8.png\n69da7346f5.png\n1bbf1cdaba.png\ne94023f24e.png\n1a4411bd5c.png\ndddf779b5a.png\n1093e4f138.png\ndd792321e8.png\n5f6d235f00.png\nea0d2f8ff1.png\n23e0be0175.png\nd37250bba7.png\n9d0b07cd6d.png\n8687badf0a.png\n985c03d8c8.png\nfb0a643ce3.png\n30aef2acea.png\ne113a8b7e2.png\n9613762743.png\nf16842c2d3.png\n95eb72bdc1.png\n818de0feb2.png\nec8a34b478.png\n648ac9c05a.png\nf486d3c0e5.png\n29d32c7561.png\n80bef8d68f.png\n0ea282db13.png\n37880e817f.png\n5fb0953e0b.png\n761fb17dc0.png\n2d1846ae12.png\nc5749817aa.png\nc895702d04.png\n1fac01003f.png\n30451ed875.png\nce6a32fc51.png\nc7383e9a87.png\n88489834ac.png\neab2d3c8af.png\nbba5226192.png\n29a3dc18b0.png\n7910314114.png\nb468a3a0f5.png\ncc5b03f643.png\n0373bd8d6c.png\nbc78319696.png\na0e9cd5453.png\nd5fbaeab9c.png\n060d966da4.png\nffedecc19c.png\n900eb82c33.png\n40f7669f65.png\n4a74c0873d.png\n309a8f9f4b.png\n8f03ee383d.png\n1594446b53.png\nc77bf07d42.png\n761b0fef99.png\n48da4541cc.png\nec49e2aba8.png\n967f41605c.png\n5c2ee31bad.png\n9d0f0a2488.png\ne0e23af636.png\n65ec8a8f69.png\n4b6bc93e6c.png\nc77cf11ee3.png\n1af8728ece.png\n1f7147deda.png\n38471001af.png\nc5c0d14356.png\n68206e6536.png\n41a8ca9668.png\n49fafe3b60.png\ncb658e0c88.png\n61541269c2.png\nde672581da.png\nc9c7cd6fa4.png\n2008ffe345.png\n47bab26c30.png\n16e0dd1047.png\na3e067edd8.png\n19c666a371.png\nee4cabf39a.png\nbb834c3d6e.png\nacdbb294e4.png\nbef04f7b6e.png\ndf3d72a2d0.png\n0b8ec6ac7a.png\n1e7c85e567.png\nf7d7577dff.png\n33a1b10a37.png\nc02e3de473.png\n9c53811ac1.png\nc34a4aa5b3.png\n11236835b9.png\nbf44061c39.png\n5bf538ffa6.png\n87f1da602e.png\n67b499db6a.png\nbabe7b8be7.png\n5bc134fb2d.png\n35aa9f76ff.png\n91bfb63ca7.png\nda23d83a71.png\n625ba0be4e.png\n1ec85530b6.png\n8e7f953305.png\n529cd39ad9.png\n35e7acda04.png\na85d0a35b4.png\na1a0480cd9.png\n12a7ca7096.png\n767574627a.png\n8d8fc0c5e9.png\n7faefd69a8.png\n39aeeceb53.png\n57b4df87a9.png\n4f43acf03a.png\nc5f335d44c.png\n35d158258c.png\nd67b2eaa3c.png\n9782b39532.png\nafc76fb439.png\nb3a5061e67.png\n0035c56490.png\nb1ec2f27e4.png\n9e9d2d23b9.png\n22f4027b5b.png\n42eb2264d8.png\ne18636b104.png\n8544771e1d.png\n383c73a408.png\n3a76e22552.png\n319fc55710.png\ndc2a31bc27.png\n1034497357.png\n975ae481a2.png\n80bc5a57a3.png\n6730d663de.png\n7a60a99114.png\n663990c75e.png\n226b8347aa.png\n02dd21181c.png\n99f5360246.png\n761e6c392a.png\nc24e12d0cf.png\nb6a88be280.png\na9cb7bf304.png\n7f23ba4e4a.png\n9938699a58.png\n0c842f5207.png\n8a945b50bd.png\ne258f2a7f1.png\ne095c82f73.png\ncb58d64264.png\n598008dcfa.png\nd792df5590.png\n012ee0802b.png\nb680631ed5.png\n3fa0352e1a.png\nde38a99f09.png\naf86467c71.png\n0d808a8f68.png\n9cb9185a70.png\n316b113b65.png\nb318dfdca7.png\nc645f9fb9d.png\nb4089e711c.png\n1b7304112e.png\nc6ac3cb5f1.png\n9661a4546f.png\n12c412993e.png\n11e04924b2.png\n89dd28d442.png\n4b43990c7b.png\n18654f824e.png\n8147d3558c.png\ne006ec6c95.png\nca70f9caf9.png\nea79ad612f.png\n41d06c2c33.png\n9d7482beb6.png\necf703b922.png\ne536d6ff17.png\n9d1516b5b9.png\nb3ad85e8a9.png\nf3638e69a3.png\nfff99a4584.png\n266653cd84.png\n1c21b0e9bb.png\nc230ea7815.png\n57d0d7a5d0.png\n3e59ba039c.png\n81b5783353.png\n94dcc2ee9a.png\nf650532780.png\n9c8e69221c.png\neaf3b0ec78.png\n19fbc4280d.png\nb0732b724a.png\ncd3b363bfa.png\n955a22dab3.png\n42dcb5e761.png\ncfbc5030dd.png\n34586dbe50.png\nb711135cfd.png\n3d254d5311.png\nf2292656d5.png\n459275ed4f.png\nc9ba1867cc.png\n1ce1580804.png\ne3e70129bc.png\n73e81d4093.png\ncd93859edc.png\n4325dc8108.png\nb268ce180e.png\nd4e723b4c7.png\n73cb3fb57b.png\n6768e73c8b.png\ne65d1f0012.png\n196638fe77.png\n281050471b.png\n067f82832a.png\ne68d553bdf.png\n6a7d046783.png\n2380869b24.png\nfbf8f58b71.png\n748078728d.png\n0fe0913aa8.png\n41c76eef27.png\n2447b1e3fa.png\nba2e7143e9.png\na29480d00e.png\n9868dcfa42.png\nf417d9657c.png\n285d6a6e97.png\n8f5d3d5cec.png\n265e948e47.png\n2d7ff66d35.png\nc646a94e06.png\n80de9489b2.png\nf38473c1dd.png\nf8ea0667b8.png\n7eba79439a.png\n72862eb350.png\n984c93703e.png\n783ee7dc03.png\n38b5d46689.png\n5e9c32ead8.png\ne18e04a6ff.png\n94baa78d86.png\n8eb9fca4f3.png\nb72e542ea7.png\nbcfddc1da8.png\n5e3ac6f983.png\n76c9b61a93.png\n693689526d.png\n40d7f084ce.png\ndd5c9e2550.png\n8d0e4f5ceb.png\n61493ca044.png\n155111e72b.png\n1a4cd0fd59.png\nd7fef0da4f.png\n2fd6740e77.png\nfe7152e183.png\n7c72ae0a51.png\n1f07460c78.png\nbb689a3c35.png\n642bd295f9.png\n313cf7f11a.png\n98a998d784.png\n7756280610.png\n0470c449ca.png\nde7a0dc03b.png\n663c095075.png\nf858319382.png\ndfe93fbc63.png\ne286e6d0fc.png\nb09aaa94c1.png\n20c82f0e9c.png\n6abab2e4a1.png\n744a2fab2c.png\nb001a5381c.png\n6ce16dbcd4.png\nbec7c0ff21.png\n074a4a918a.png\n8c2dfc1e05.png\n5fe661243a.png\nb27dcf087e.png\n8720f13ca5.png\nf371086cfb.png\n64f93bb656.png\na0cfcb6546.png\n64f11799ae.png\n1c4d649995.png\n07424fb781.png\n9281a1fa33.png\nc9efd977d4.png\n6955cae168.png\n71510358a2.png\n6a5d2c2738.png\n54571ba221.png\n71b381b1bb.png\ned218a87e5.png\n61438a146a.png\na763650a19.png\n4a0490244b.png\n699c07648b.png\nb7ebdaa8bb.png\ncda5087210.png\n32a40874f0.png\nf760baa181.png\n4628d07e17.png\nbbf1d1b243.png\n84044adfe4.png\n7b7e1a542f.png\nbf5cf3c536.png\ncfb0294fdf.png\n4d8c1e0580.png\n71311cdce9.png\n97f8cb9fac.png\n6301fc6be7.png\n43a137a06b.png\na9054ffba1.png\na4d9822ec8.png\ne0fce64c8c.png\n0475626c02.png\nf0d68a2c3a.png\nac2468e7b2.png\ndddf6d20bc.png\ndfbf9cdc06.png\nd443579521.png\nea4c1436c7.png\n0e102a8da9.png\n258838cb73.png\na1df99dffd.png\nbef02db904.png\nb7112227fa.png\n8a396e306d.png\n990468763b.png\ne15d008a21.png\n1bae2bef94.png\n7bfeb0809c.png\nb2f220fad7.png\n9f9f947775.png\nf2a062e477.png\nbe02cfe5da.png\ne0ceaa659b.png\n52c4d1d8fa.png\na8c5ce8f72.png\n3e8f4f7c8f.png\n353bca9171.png\n8e919b610c.png\n8181166ca9.png\na3cc6ecf52.png\nda5a43625d.png\n05cdc83902.png\n9175e7d74c.png\nd3ff38ba9b.png\ne8e0ac9215.png\nd64b16435d.png\n0981026c4f.png\n7a0a1152e2.png\n798e0e80ba.png\nd547702609.png\n29ceeed519.png\n227dd380e7.png\nadc42b057d.png\nb83fe9c9a8.png\n5237e5d016.png\n317f5e5458.png\nb1430fc9bf.png\na42a45b613.png\nfa976875f7.png\nbd3f5f6d56.png\nfd1a957827.png\n2d5933d5f6.png\n7404408177.png\n63051e4428.png\n2897b099fe.png\n922f4b1692.png\n66c484c763.png\nd827064439.png\nfa2e0ec852.png\n4be90bdeff.png\n399315184c.png\n88a58de38a.png\nb7e6b68ca5.png\n6f917328a7.png\n16d12d560d.png\nef0ca9f5ed.png\nfca9339160.png\n9926e8e837.png\n2f37f301c0.png\n97205f3eed.png\ne196ca33b3.png\n774ae6c2eb.png\n78377df955.png\n289e85588f.png\n929f4f4c47.png\nb873f6dad9.png\n5f171def5f.png\ne40a6b75af.png\ncda1d37159.png\n3ee9a8ddb1.png\n8e58618fe6.png\n885bc954e8.png\n06403b80fa.png\nf981f39d37.png\n8068909c83.png\n37260c432f.png\nf27415aed0.png\nbc2ae414f8.png\n0fcf26daaf.png\nb0955cb6a5.png\n09a7af5a1b.png\na71ecaecb1.png\n773e6fba21.png\n2ee235848e.png\n283aea40d1.png\nbe604488fd.png\n40452bd035.png\n9dada384f3.png\n82904b406b.png\n8346af8d52.png\n8032860ce9.png\n7c0fa011cc.png\nf0b36fc8b3.png\n10ca4a5d66.png\n21e2078fca.png\n6f533a271d.png\n662c5c3fea.png\n665301fedb.png\nd0b188118f.png\n49d2d5a232.png\n25e682fe85.png\nc0b31ebf26.png\n825aa65d80.png\nb21810165a.png\n05e30ce8af.png\n558a5e1dfe.png\n09ff9f2dc2.png\nb6702e727f.png\n3d7e68aca2.png\n09ef36d784.png\n4127db527f.png\nf221c63b76.png\n78b32781d1.png\n44ae5edaad.png\n845267074c.png\n1631293bba.png\ncf5d5915c1.png\n978ae7ff61.png\na919766328.png\n43012fb793.png\nb0f7f890c8.png\nb3a1353d0e.png\n80cb3e7f7d.png\nfb7a9f15a5.png\n4502ae73a4.png\n1432fcc191.png\nf819844efd.png\n4b473f0e4a.png\n63a6efdc11.png\nf2d096af76.png\n52d6cae7a0.png\n15103f6ef7.png\n513685023c.png\n09e83b7ec9.png\n7e8201578d.png\n75c4c73270.png\na81fe70c11.png\ndd20094c03.png\n3307dd0179.png\neee30457a2.png\n16d444da1d.png\nb9c8fa4ea1.png\n0c7631165a.png\n181be07ca5.png\n45b3edccac.png\n65edaad9c9.png\nb7be8c30e0.png\n525e2bed36.png\n22668e2420.png\nd167981f98.png\n290adb76ea.png\nda4a6183cb.png\n4eacd42b51.png\n216d7c5437.png\n99b09414cf.png\n31f29ada31.png\n542f26c6ee.png\n51d19a3eb3.png\n6e23b5482f.png\n916c472945.png\n146dfd93ac.png\n20418b6cf2.png\n38bb5d43f4.png\n2d9b4d01d0.png\n6f582d4023.png\nfc01432146.png\n8758e2ddb4.png\nf3fd36d099.png\na3adfce43e.png\n5ec431887a.png\n14d5d41e14.png\nf52e44f960.png\n269bd08c22.png\ne17126744e.png\n7cf980df36.png\n9ed9a2feed.png\n117bd13f22.png\na60d8f7fbe.png\ne1f32ca8c1.png\n68ce559aca.png\n56445dca2b.png\nfe14b9e031.png\n352e661350.png\n8931ce5d9d.png\n70596c3dd2.png\n78d5dd593b.png\n0b449cb641.png\ncc6dc526c6.png\nc7c733b053.png\naae6ca24a9.png\n7aa8677b5a.png\n5b3a40bffb.png\na656c1edc0.png\n4d5306ecf9.png\n495a45df4c.png\ncbd649b1ee.png\nb48a0af1f1.png\nb00fd9fcb9.png\n614cd43381.png\n7b32cb2861.png\n4bf4b35f56.png\nb95c797bb5.png\nf97372fd50.png\nf8121521b6.png\n72fe314276.png\ne853c3322a.png\n8a54304ab0.png\ne4715f9546.png\n678e0aa3ad.png\nade2a658ee.png\ndff67697cb.png\ndf4d3306f0.png\nd6273a678a.png\nd247469515.png\n2d55a5841b.png\na081425976.png\n44d28db2dc.png\n61023e1d99.png\ncc2fc654f5.png\n6781b6e297.png\n1cd0858d58.png\n8135ca6dde.png\nc0f8ef8904.png\na62f9b6494.png\n9935d5f9e9.png\n77953e3230.png\n5bb56c179a.png\n0be5323c3b.png\ndd6c3f08d9.png\nf006fb4fc6.png\n141fe4baa1.png\n3385dcccfc.png\na4876c155d.png\naf9b763988.png\n174bd4ed02.png\n4e206da365.png\n39f345dee2.png\n1172c56c13.png\n73152cd72f.png\nb47f514539.png\ne895c207eb.png\n0c8d55a780.png\n2d6b59a83b.png\na4a1e89b8e.png\nef22ccf533.png\n8be34cb1dc.png\nd1c5e7f75b.png\n068f7a5267.png\n44e905e599.png\nbf3fc8ff12.png\ned35c9c0d8.png\n88b8522325.png\na63468651c.png\n598c719aa7.png\n9351220cec.png\n9b622b10f4.png\n649b95fde3.png\nd9475049de.png\n7bb4e8e6d7.png\nbe2d77edfc.png\n7b91d38f81.png\n566b4e0770.png\nb0ef4ce251.png\nafc4844f6a.png\n7b680e68ce.png\na049e7255e.png\n01166ff99c.png\n333c47577b.png\n0b20585c5a.png\nb7bedf816c.png\n41d0f0703c.png\nc0581f8747.png\n48fa508d87.png\na5bdac93d1.png\n6a8890377a.png\nd60db2ca4a.png\n13cde8654c.png\n170791a419.png\n9d98ce444e.png\n707361a693.png\n2386a0869a.png\nc765869d59.png\ne288ff18e2.png\n2f1e684ac7.png\n9aea81d01d.png\n14d1b7816a.png\ndb16c4c2ae.png\n6f4612137e.png\n7f60438768.png\n2c0820cfb4.png\nc4d1e821d1.png\n7c640919a2.png\n8aca22cb3e.png\n14ad692232.png\n341e90a036.png\n85c813bc7b.png\n65cb9ccd83.png\n4151efcf29.png\n04893c47bb.png\nf85632cd95.png\nbf352f5c5c.png\nd13105c407.png\na9a4f7162f.png\n897d7e821c.png\nb4eb3ee501.png\n02ff065ed6.png\n1e4bc50928.png\n870e83dd9d.png\nc190d5a96a.png\n31632725b3.png\n802b3e6be9.png\n326a51c36b.png\na8fe8b9306.png\n044d6800ff.png\n56dc8e416f.png\n6bc1b58b5d.png\n0bd08d4d2d.png\n670eb245f5.png\n51dd15dd1e.png\nf93f231ea4.png\n413353cd7d.png\n4a11afb357.png\ne5e9e5fcff.png\nda1081e0ab.png\n46a88e46a1.png\n49f7d795cc.png\ndef865335d.png\n034f55162e.png\n5fce13f8e1.png\n0c10b00c44.png\n63fa6eda16.png\n857293f3fe.png\n75aa6457a4.png\n82dc840568.png\ne964212470.png\n5adb4649bf.png\ndbecae2cc0.png\nca339e5289.png\n0ec5a99768.png\n013e4e716a.png\n99f86c993d.png\n830b0c4dc7.png\n0d1aaab6b8.png\na3e5e1d301.png\na70be225dc.png\n71416f3e05.png\n42e58ae641.png\n263cd3f9b1.png\na8ae93258c.png\n446ddc96b2.png\na680be5220.png\n74ce107a84.png\n9435647390.png\ndcaecdf831.png\n6a7e072e7a.png\n5513e388a6.png\nc982bcdf9e.png\n552f7a9f14.png\n2456901c98.png\n5d9a434f6f.png\n960d395a3f.png\n7c4605002a.png\n8de69c8b40.png\n94759a6603.png\n4cde340a69.png\n83dddb0ca6.png\n5893a87a04.png\ne8e897a8ae.png\n20c2ec94c6.png\nde5264d7e9.png\n8aa1e2dddf.png\nd09c8b55e8.png\nbc7512e68b.png\n3e44639703.png\n2d2f28610a.png\nfabb5223dc.png\nfb03170eac.png\n407798f0de.png\n957100fe7a.png\n435cd5f003.png\n055f01a5c9.png\n8bcd5f745b.png\nceaa808817.png\n502bb755af.png\n989980f611.png\n62e58689c3.png\n8beff4b809.png\nf3fdd9e147.png\nc8a962d7d1.png\n0c476ba662.png\nb0bfdd3d3c.png\n87af61df90.png\na9eeedce67.png\n1180277e3f.png\n072bfb6a9c.png\nb94b6a4992.png\nf744325ef1.png\n12516190e9.png\n122e7dface.png\n1126f78dd3.png\nb5821bfa07.png\n19a46e881a.png\n981bc36e6e.png\n6e339205f1.png\n832dd54aed.png\n4a23ca32fa.png\nd2c3155dc4.png\n8f0abdabcc.png\n9739e07b5c.png\n3a0168afba.png\n2dd318a0c7.png\n50fa8bbc7e.png\n7c337d9e42.png\n3ed46948ce.png\n3856d9cc21.png\nd3d5626477.png\n0470d6aba4.png\na41122dbd8.png\ne138084a56.png\nbbb3054bf3.png\n3bc23c3ac7.png\n31f2c66fc9.png\ne86524fcbc.png\nf34715c722.png\n01abaa26e8.png\ne85a720f91.png\n8b5bb309bc.png\na9914bdbf5.png\nd5fdf520e1.png\n7262d7ac24.png\ncc6f3913b0.png\nde96056281.png\n1965c20ff5.png\n0c25be1d66.png\n3e821f8642.png\ned4cce1fbe.png\n142b9c8d88.png\ne9c1c14939.png\n5832fa2b13.png\ne220abe8b0.png\n91ba84f784.png\n8ea492a7ee.png\nb586705391.png\nc5e9aa26af.png\n59605645c0.png\ne739fe4fbf.png\na5c02f60cd.png\n8881e6fb14.png\n3dac65a9fd.png\nba494943d8.png\n935bd57df6.png\n3731205282.png\nfa461678e9.png\n2cf988af12.png\n23012be6b7.png\n6bc69c62e6.png\n575d4ae82a.png\n205097cbe4.png\n67217aafd8.png\nc4a43ba621.png\n13218ed167.png\n0c2f4cf57b.png\n7f38341dd9.png\n3f57a66451.png\nc304ef9ecb.png\n36b83e5530.png\n23fb59b591.png\n4db03fc647.png\n6f5865ccfb.png\n913f5c6470.png\nae7ba85ff3.png\n0d059aeae3.png\n94f2fa673f.png\nef04597f79.png\nca0cf3d157.png\n89ace8809a.png\n79b6c430de.png\n6a92fa6b2e.png\n313be8227c.png\n477df6be1d.png\n9b11d67e37.png\n1d8cfc6954.png\ne30535a390.png\n5084c38739.png\nefec59e86f.png\nc05245c247.png\n7931eb93b6.png\n34acb105f7.png\nc47f69debb.png\n37b5123c8f.png\n367099de12.png\n01f32c502c.png\nbffb67fc14.png\n070047d518.png\n080577b945.png\nf24c930c5c.png\n56d39ded7f.png\ne849a8a057.png\n2855669f79.png\n4a08f295c0.png\nc575484a95.png\n443f9cadc3.png\ne0257b4c20.png\nc741343ed8.png\n84b9c5016d.png\n2f6668d7df.png\n8c9f7cd590.png\n98bc73660f.png\n4a1c037d5f.png\n60bf7c5fbd.png\nfa6da5cb9d.png\n4ee4b387e1.png\n3153603b3e.png\nd6dcd4da21.png\ne1dbf1ca37.png\n3d329cdce2.png\nf62d2298d6.png\n228dc87bdf.png\n6d710ec327.png\nf72d64ecdb.png\nc4f8acef95.png\n7c6b453f71.png\nb144a72dc9.png\nb4ed4a112b.png\n69dcaf2ada.png\n28b600699e.png\n2886fdf93f.png\n428255da91.png\n2626cc9b47.png\n8795906a9d.png\n15c00d00c4.png\nef85dc4cf0.png\nebd0f05fc1.png\ncc2b6a1eb2.png\na2ce75daaa.png\n08f2e9fcc4.png\nef0f2d97df.png\nd187151bc2.png\nfe5625c304.png\n5098537745.png\ne58c0adca4.png\n4ca00f3f9b.png\n077074bba9.png\n9f024839e6.png\n4031850bb9.png\nd20d6f41dd.png\n6bb88deab5.png\n53065eaa33.png\n279f39950a.png\nb935f60197.png\n77a38f1df1.png\n36f9549e06.png\nb0a3baf70e.png\n928ba68f99.png\n26346acb80.png\n6cf6befa6a.png\n9b61c3ff73.png\ne1e2b3b3ea.png\n0b70d67563.png\n6f124c4dd2.png\n4c8bc90762.png\n00690a4185.png\n2fd895df3d.png\na8921964e8.png\nf580cbbe8c.png\nee9a5d2cf8.png\n0f19797af1.png\nd8b8dacc7e.png\n02f19130c1.png\n9609c8185b.png\n34d898e6d9.png\nbf22319310.png\n099342689f.png\ncf8f782c1a.png\n60d9423890.png\n079e05a311.png\nd3c27f59da.png\n7b3a5f3d95.png\n62c998cc72.png\n0970725471.png\n2575b53c1d.png\neca8fc0255.png\n98595cad73.png\na79de081cf.png\nca86bc43a0.png\n871f2a1e45.png\n25b5fa95b7.png\n0f240d4463.png\n10f1d4a32c.png\nfe5fdd7979.png\n5e96338a97.png\n512e5b5681.png\nb497566ac3.png\nef6083f48e.png\n4621e4cf32.png\ncaac24dbe3.png\n7b0773f310.png\nba59579920.png\n1ee8d337ab.png\n67e0d71e9f.png\ne2e1a8c419.png\n2c0e79d94a.png\n5281d67da6.png\na7323247ef.png\n2c4d015b90.png\nd7d3ead58e.png\n04d92b5a13.png\n55737efbfe.png\n96a9252b0c.png\nd4d825fe95.png\n5f15a9ec4c.png\nc771336efb.png\nc08283e078.png\n594af4bcde.png\n28fbed93e4.png\n750d00b2f9.png\nb836a898b4.png\n66e4cf0269.png\ne1f349d34d.png\n0e4572a9ae.png\n60c70d9d2b.png\nad1eae1fe9.png\n087075f0f2.png\n0534b9c761.png\nbb8e3d24d2.png\nfc4f24e7f2.png\n34003990cc.png\nbadc0a6c23.png\n4e1c46b1ed.png\na4b3dbc634.png\nb7cbfe92cf.png\n1819f215f7.png\nbef8500370.png\n161704122f.png\n2b11f08d45.png\naa0ef6b439.png\ne55ce10074.png\na9e44990f9.png\n82c3cfff3d.png\n76949f552a.png\n66c5e69234.png\nec3f4f6f6d.png\nde28f19d4c.png\n48477e7884.png\naf7e0cdd0d.png\n48abb60ba0.png\n669d158701.png\ne86690dd2b.png\n435f2841d7.png\n00323f1910.png\n661059d0a5.png\n5ca3ff4be9.png\n915ead8b25.png\n4169f0feaf.png\nb7aa650710.png\nd69fe4565f.png\n3c80de29aa.png\nce5fd7f840.png\n1f4d1bd6fc.png\n3c3dedc0cc.png\n7afcc15c87.png\n8ffb4376c0.png\n5be0000be2.png\n4a525c21b4.png\neda23a9a24.png\n661adc7b9c.png\n6b7945d817.png\na01134fa8e.png\n6fb1cab30a.png\n89074926b9.png\nc07a44eb90.png\n213b23af27.png\n0dffbb13f1.png\n27a79442e2.png\n8c5a6a2aed.png\n748fda4538.png\nbe663f4ad7.png\n7fb1a8a0c5.png\ndd1779a6e8.png\nb01e1cd19c.png\n59f388376a.png\n90a5cd7288.png\n5607cc4f40.png\ncfce7a0920.png\n2c501a8b77.png\nd4069da6d3.png\n3eb9c63046.png\na1e1b90a18.png\nc1d8ab2c28.png\ne20e33ab7c.png\na3bbf5c708.png\n0fd4f71b7d.png\n8ee672b4e6.png\n7cd2918c27.png\n0915403c23.png\n114fd22f5c.png\nd1dff8de14.png\nb1fd612a60.png\n8f9be04cd4.png\n4e23fc92f3.png\n1dec8a70c7.png\n3e8651d250.png\necf1d1a666.png\n67e4fdc167.png\n57880c7526.png\n598797da90.png\n0813911355.png\n3140fdaec8.png\naac707eaa7.png\n7798aa0c5f.png\n73bd1ade5a.png\nf011521ef0.png\nbcfeacb8b3.png\ne26029b910.png\nc4a7680264.png\nd3e51484a2.png\n3be52b19e1.png\nc04c9a4bba.png\n0ab8b23845.png\n97fe862edb.png\n4f77eb811c.png\n67142f744f.png\n57ffcba066.png\nc9867c4064.png\n837c793261.png\nbe8b72467d.png\na7c93f1649.png\n5adcc5ba11.png\n9694305ae1.png\n23acdd12a8.png\naa0dfcf8af.png\n68915bcc5a.png\n7ebbf0b3dc.png\ne49090fa59.png\n110664c412.png\n450da2ddcd.png\na1bd9ad852.png\n69357d53fb.png\n3b7fac390a.png\nd2ee323c45.png\n9a99e91fa3.png\nc60f31657e.png\n62cb5b8d84.png\n90b8109bc7.png\nbe6ef0be10.png\n0cbebcad99.png\n6a2862b831.png\nc6013519e9.png\ne767158a8e.png\nc54a1a835a.png\nd3841e6c80.png\nff76657860.png\na6c84e89f1.png\nf5613d5371.png\nc996dc19a1.png\n6c4b8e468b.png\n34aa18cb4f.png\n91ffedcfd5.png\n32a571418e.png\n4713dcdfe7.png\n13496d77cf.png\n45ea31b9da.png\n643005b5af.png\n8fde701098.png\n2338283d0d.png\n7633d58974.png\n1ee8e51093.png\nbbd7e0885f.png\nf8fb47e8e1.png\na543591b0c.png\ne82a9be847.png\ne7f271e490.png\n629388a831.png\n792b31cf9b.png\nac059f8997.png\n707c0b494f.png\na23192d1eb.png\n76fccbfd67.png\n5c5ecbc728.png\na595c6296e.png\na8876c27ca.png\nc784560371.png\n339e2d762e.png\n04b529dd46.png\n9a4d1749d4.png\n57a953bb1d.png\n5122692cce.png\n89aedf2162.png\n7327c7cad1.png\nd6d62e9b41.png\nb1ba756a79.png\n68af6c5f57.png\nddb0fdbd54.png\n1ba6ec8c09.png\n474c60acf4.png\nd4dcc3fb31.png\n7aa7d78d30.png\n71ce444528.png\n754d4e98a5.png\nf959ffc6d9.png\ne6f2179d84.png\n5f53c9d252.png\n6eb24b0585.png\na44270ae5e.png\n6c88ce3622.png\n3666f04356.png\na82ea3864e.png\n9da56ef334.png\naf85d6429d.png\neefc0c11f7.png\ne739540fa2.png\n6b26e7364e.png\n8d71bd7891.png\n0bbbd7b589.png\n5a3ab68a97.png\n2ecfb10439.png\n3ccf256507.png\ned2dac5160.png\na6d02564cc.png\nf1e3ed1c10.png\n1301514d67.png\n7aa0fe93c5.png\n1477d3e710.png\nd3e4630469.png\n8595d53217.png\nc0de45a4d5.png\na66a21e4c9.png\nbc1c545371.png\na39c858e2c.png\nec19326bbe.png\nb35a524585.png\nd064049a0b.png\nc8be125295.png\n0839306166.png\n31982ce029.png\n1df8119d15.png\n352749994a.png\neb28ac55ab.png\nd694c84b1f.png\n6e67571b91.png\n1e7e6a7b31.png\nbc09c0039c.png\nb4dd1f458f.png\n4b173d8f06.png\n82f50352d2.png\nd514b10317.png\n7801fdbd16.png\n4afc4b57ad.png\n96b71a38e9.png\n27e33cfeed.png\n2b4dbfc252.png\n3c84d40142.png\nc7b9c59554.png\ncc09190dfb.png\n9c14cb5581.png\nbf18502d61.png\na056040228.png\na994a04fd8.png\nbd9b727231.png\ne076188a6c.png\n49b0ee21be.png\nbea5fee80f.png\nbcca498c87.png\n198daefb7f.png\n24a18f95ed.png\n3929965e55.png\n052c50e4e6.png\n9afa3dea27.png\n0af60a2408.png\n15332d7c18.png\nc8cee4f4b3.png\n9b901e92e4.png\n273aded7a4.png\ne4e893bc98.png\n0cbf2fdd4b.png\ndc71cdae70.png\n18c219ecb7.png\n76bd88df66.png\nd9d7c77e13.png\n8706bdd5f4.png\n7489fb76ec.png\nb9bbfd8128.png\nbe331c9969.png\n1ffeda69ba.png\n1f3a28fbbd.png\n2357cc8231.png\nc8f3d1b9c6.png\n4eb102cd2e.png\n17ff51e78c.png\nec7058e510.png\nd92da71c3e.png\ncad296a394.png\nb8fcc32f11.png\ne402f53276.png\nbcf57add57.png\n11f82be11e.png\na515cb395b.png\nc43ad110ce.png\n5d4ae4af66.png\nfe79b09a4a.png\na498e414e9.png\n166b46c4ff.png\nd3d6ced0d3.png\n68d047de80.png\ne1d4493539.png\nfd98fc3bac.png\n0d52ed9aad.png\nbedc7812fe.png\n2c321af2dd.png\n825db130f4.png\n13268e9b59.png\n2b5388e7b9.png\nda575a0444.png\n31de8d8b34.png\n4037f4ba93.png\nb49fe5308d.png\na612bf83d3.png\n6503a5e606.png\nd621c19bb8.png\nc3fba1c34e.png\nc793818b13.png\n2c9058bc9e.png\n6813cd8a9a.png\nf26293e80c.png\n76302d297d.png\n290a374cd4.png\na08f3a707f.png\n08eb8cc9e5.png\n89ac484988.png\nfdbafdd468.png\nc6239930ec.png\n6b5f72af67.png\n3200c1b26e.png\n1750f60b23.png\n93cb37cdd3.png\ne2684fca5d.png\nf90ae4ac62.png\n2437b08bc0.png\n79e870db52.png\n81d87e9c69.png\n1f038bf35a.png\n7ab963815b.png\n97c0a37e6f.png\n2462065207.png\n4869d25c05.png\n10c6b84f52.png\ncf671605eb.png\nd4f2ed2ce2.png\ncdab88a890.png\nc0a045726d.png\nd06d2ba008.png\n8982354add.png\n14b445d27e.png\n7049da9998.png\n3466c68b0a.png\n1c093fde09.png\n15338f4b95.png\nc08e29a1dd.png\n55c0f6f4a9.png\n3da8005edf.png\nb332da5919.png\na31d85fa70.png\nd86dc56bdc.png\na9e646fc8e.png\nec96a1760a.png\n646325e5bb.png\n203e7683dd.png\nb05514e5fe.png\n90b83d9260.png\n8b18165c97.png\ncf19041b8e.png\n8dd3e8622c.png\nd1adf6a8d8.png\n5420263191.png\n4d762be5e6.png\nf4394e72c5.png\n921f62423d.png\n8b056ea93a.png\ndbe559c0ed.png\nc773d84225.png\nb538ad97f7.png\n3dd0afef2c.png\n24df9ce7f3.png\n69db2d04da.png\n40e83640df.png\na30307864e.png\n128f4ccb18.png\n77d383dd97.png\n99c504fd40.png\n85fe6c5bde.png\n30feec0e78.png\n06a79609c9.png\naa60ebe3d4.png\n2c9e776fd0.png\n65f00f9982.png\nb2789223d4.png\n9c1a87e7fa.png\na594d86f88.png\n2ccf5a4fcb.png\n9244c80d9b.png\n26d8e9c763.png\nb50f5e59ba.png\n3ebce107cb.png\na2460b1e74.png\n97d2c11f37.png\n617fff6c35.png\n22e315d55c.png\n14407c3233.png\n4b4d404c82.png\nb3244169d5.png\n4b8f0dd391.png\n9cba387403.png\n894420be25.png\n6bc1d1227c.png\n80d16f5eb3.png\n2446290064.png\nf433483dba.png\na6481131c7.png\n094cf586ca.png\nac525e4467.png\n0d61c54a7f.png\necb398b5e9.png\nb8c7283298.png\n056d1b3b59.png\n4da67126ce.png\nf450f9c067.png\n84dadcf34c.png\nee54465e3d.png\n90c3e5604e.png\nfb8b050b64.png\n592fccad94.png\n68ff47165b.png\n8b99bc5f09.png\nce04be18c5.png\nc3b1a8efa1.png\n27b4cbac34.png\nad68e3b559.png\n6b090a7068.png\n40186e2c64.png\ncb9c3597e8.png\nec20edb5e5.png\n164de10f56.png\na9619e916f.png\nea7cd41d83.png\ncacc0e3239.png\n48fa734394.png\neb7196935a.png\ndbd5499147.png\n841103a83d.png\nf1d244a5ca.png\nae75c77ff8.png\nd9299579aa.png\nad7abb5e49.png\nf4ff08a9ff.png\nd6547548a1.png\n1ac220b834.png\n9e2432ac74.png\n90a3f2a030.png\n969e0a4804.png\n3d9cc215e5.png\n6e79a01f0b.png\n82d8b50c5d.png\nef96de0550.png\n7bd606b890.png\n0443387784.png\ne1719ec329.png\n303a74f801.png\n307f22698c.png\n31a78326c8.png\n3d21e1dc58.png\n72abaed3bd.png\n2a6209adae.png\nd31407ea3b.png\nfdc2de2c84.png\n90ac7f0cc8.png\nffdef44e2a.png\n60a686709b.png\nf70a411f05.png\n63c153b577.png\n54f848a336.png\n20f4920dd6.png\n88e2efec9e.png\n3394b3e57b.png\ncd134bd0dd.png\nc59e29f167.png\nda324cbdde.png\n3724c63ddd.png\n74d9a8ec01.png\nf13375e660.png\n6869e641ab.png\n02a4f7c7de.png\nb212dd2177.png\n4d8007c75e.png\n6c5b6e5733.png\n099bce60e0.png\nf1b84b858e.png\na7354b2f3e.png\nb0b6a38e0b.png\n0c348fdf9d.png\n541ad9b41a.png\n5473d1590d.png\n0f8905287c.png\na69839ffc6.png\n4df40162f4.png\ne8ce5691ef.png\n810dacccc3.png\ne01c232637.png\n20061dbc16.png\n755b1d4def.png\nf1e8fccdc3.png\naab3d007d1.png\n88a7c71302.png\nbcc80b17b1.png\n7276a4aa1b.png\n221248dd0a.png\n6b0f472ce3.png\n6eef02f2b2.png\ncef5623670.png\n2b65712f62.png\n285d4eed14.png\n302d49efc1.png\n0fbbf1548f.png\nb467416ab9.png\nd0c4763c9b.png\n4024a7e03d.png\n9b095d1144.png\ndd566cf41e.png\nbdd42e95bb.png\nda7076f6d4.png\n69d62b2f52.png\n2baa4cda28.png\n18da13aaaf.png\n46c21d7d4b.png\n706b40bddc.png\nabaf233b39.png\nebae2cdcc7.png\n97efe48f6e.png\nd156089f4a.png\nec277da743.png\n82b7a32ad4.png\n2dc58e4bd0.png\n84cee5c038.png\n65c87893a0.png\n8e48845dd4.png\n48726415f8.png\nea6dfe38ae.png\n57aef5c6c3.png\nf1e1cbd5b8.png\n68724d8662.png\ncb507d53f7.png\n082ea078ea.png\nb9a6b4b21f.png\ne66b194457.png\n1c45ad9906.png\ne925b2a8ff.png\na9c9b93505.png\ndb2552b1e8.png\n06df6aa4bb.png\n2d777bcac5.png\nb68b21f128.png\n0e4ed69b55.png\n6659f1e7e1.png\ne3ce4247d8.png\na583b90630.png\n8a59924259.png\ne07cd49e84.png\na2bca0bbcf.png\na470f0c83a.png\nbb5a0a2be6.png\n5a5dea7240.png\n54a86e0c5a.png\n9051d9037e.png\n2937fed09f.png\nd795565f86.png\n99fb331dc9.png\nd1a34003b1.png\n00e6e260a2.png\n859c673a95.png\n4a822016ff.png\n320fb9c41a.png\na7ea4ad918.png\nbf23bdb543.png\nd7702122e6.png\na88b9fb912.png\n568e610c43.png\n15117177f0.png\n6a050e000f.png\ndfdb8d4571.png\n485f0d30ff.png\ned4d01e60b.png\nb8058b581c.png\nc85d6353df.png\n53071b0839.png\n2116631809.png\n659b1e0690.png\n0cc152d572.png\na90d339e39.png\na17a67f57e.png\n585de1481a.png\n70cf807d0e.png\n4d468ea464.png\nb54c20b864.png\n39fe9cb4e4.png\ned898877d1.png\neab12b6c0b.png\nc0a6b5b312.png\n6923e04956.png\nc37134e5b8.png\ne4ecc82bb4.png\n94bcae761a.png\n7b10d2ad6a.png\n80bded4d93.png\n708dcf36f9.png\n1bb7369c68.png\na1b071d24f.png\n959b1ff073.png\n47e49cf02a.png\n04be99d480.png\nc5d65cc917.png\n964820913b.png\nf4341b924b.png\n5f723327ef.png\n637a5ec28d.png\n4d1f5bd37e.png\n95e69499a8.png\n0c5ea2df41.png\n16d09f6351.png\n0c75a9cbad.png\nec18ca6314.png\nd23d16fa85.png\nd6ec32a8b3.png\n1effba6499.png\n659b17c4bd.png\n5aeabfc312.png\nbdf243fb52.png\ndfb780956c.png\n579fb9fac7.png\n9930673328.png\n0c14b0fe28.png\n07c3553ef7.png\ncbc52ce985.png\n31d4b415e4.png\n45b8f0ec13.png\n2a3db7bdf8.png\ne4b9664ba5.png\nb6923d46ee.png\nae46eaaee3.png\n95d7c67f1a.png\n5f80ba82d5.png\n13da82c8ae.png\nfaa833d1e6.png\n851fcdc053.png\na710b672de.png\n22aba9c257.png\nd648667e46.png\nec2a46ed6d.png\n4be61a973e.png\n2097e63334.png\nce6e39406d.png\n390b6e7e7b.png\n17234b98a7.png\n3a39bd2a91.png\n3c1abef969.png\n3bba888579.png\n96961227f1.png\n5e4f66c987.png\n5c06d96310.png\nbd38ae781d.png\na521c311e0.png\n61ab0aa78b.png\n72328599e2.png\nbc51796258.png\nf19734e3a8.png\nf738309aed.png\n490fcd92db.png\n86d4be69d2.png\nc5e3415a42.png\nb607345314.png\nd3aba83506.png\n85523172e6.png\n1fcb42b90e.png\n42aa153d94.png\n1cfc959ec2.png\n77f0e3eadb.png\n19b25d6700.png\n1db9722702.png\n31d640b9b2.png\n35f8e59694.png\n76784fa72d.png\n39438a4c45.png\n66b8883dd0.png\ne066f5d49c.png\n5ae1291c95.png\n3cea2b2f8b.png\n711ef6f24e.png\na12f7f7f94.png\neb342b28ff.png\nd5342efd47.png\n37c25c3268.png\n1b61453b52.png\n31221e6d5b.png\n976150fcd7.png\n3e34b5b49b.png\n821c36cd97.png\n6172891da4.png\n29e9c79a7e.png\n7d19a1bc43.png\nf000d583f9.png\ne5fd31d394.png\n256573c99f.png\n7999a4c07a.png\n95e790317b.png\n5a00950b21.png\n0115319420.png\n257b9aaf33.png\n4b27a19834.png\nf3c02959b3.png\n04710d36cf.png\n90c830116a.png\n04b029690c.png\n4b4b441e64.png\n57b2f0c86e.png\n700614dfbb.png\nf38cdb799e.png\n1c16231286.png\n1d8c40e024.png\nd69cf8151e.png\nf928d746c3.png\ncc636fcb13.png\ne8bc4c8384.png\nff642cbc55.png\ndc3f33d2ea.png\n90e9b53a63.png\ne2c6d37f9f.png\nde475737fb.png\n44fcf2ebf9.png\nd8ea97b26c.png\nc52f664819.png\n25386ddea1.png\nf01d94ac3a.png\n2bd82f8fd4.png\ne9deeee398.png\n818ccc0ca7.png\n92d1de717f.png\n09e6cfad6b.png\n4d774cb2a4.png\nf214e16a78.png\n512d8d9997.png\n809d3a2b71.png\n94c9bffdc4.png\ne171e6162c.png\n55f19d6b76.png\nde0d58d7b5.png\n3e503f55a8.png\n6ae09ed91b.png\nf9fd089684.png\n0c7fe0c644.png\ne6c62abf69.png\ne48c970217.png\n92c77ff4df.png\nb2d9c9184b.png\nc2c78b53d6.png\n8949175e6f.png\nff234af44a.png\nf7a341bb7a.png\n79c7b8ff29.png\n5ef842ff3e.png\ndf71d80bdf.png\n0e69714d68.png\n51c4fbfe63.png\n2d3e3db6b9.png\n273f74fadf.png\n04a5bb16d7.png\n88dc124b7f.png\nc6339fc9f8.png\n2374487e5c.png\nb915b8aa25.png\nf3e2d515f5.png\n7b7ce987a9.png\na97cd1d7ab.png\nfde097daa0.png\n2ecd04a9f8.png\nd14da73251.png\nbccfd45fab.png\ne8fda6896b.png\n374a1dbf0c.png\nc80cc9e84e.png\n06d9c22d31.png\na0fefcdca0.png\n0736a1aa17.png\n3c3a01dc7a.png\ne62b69e2d6.png\n7e21858e69.png\na6c63420b2.png\nc05c593480.png\n9ad6e2b35a.png\ne775f485b6.png\n29d8817f97.png\n9427ca3902.png\n834a9e2087.png\nd01a30c77a.png\n84480cf944.png\n7cf6272d08.png\ne3a53f0510.png\nfa14635802.png\nf004fcafc7.png\n42f5dde8ec.png\n356a6e85dd.png\na2b82c3cf3.png\nfb5b4462d9.png\n305f5d7900.png\n19edb31599.png\n6e8334b5ce.png\n94fd51a14f.png\n5377827ce2.png\ncb9d510ceb.png\ne907b958e2.png\nfffd909d0f.png\n8b62c26211.png\n5d6b433645.png\ned53b8fcad.png\n903f9f033c.png\n8cb2bbf1a8.png\n97b7351da7.png\n12395f07bf.png\n9583b7d310.png\n9c76cd7a3b.png\n47a6238a64.png\na7e5a56e0f.png\n45cca8e973.png\nb55a1e3033.png\n58f49bb2a6.png\n24c2ef0b97.png\n04384ff2b9.png\n78c843da8a.png\n6db1a21e46.png\nba98e2df34.png\n536d9ac15f.png\n3a76eda882.png\n4963db2e0b.png\n09ff67448c.png\neee314138e.png\nd4711d9cd4.png\n52449a1c2a.png\nf6f32bb5f5.png\na45a69e464.png\n05163a6e41.png\n221e96f96c.png\n471e146748.png\n6acd730f72.png\nf2f5f3d673.png\nf64b762060.png\n423a435241.png\n492256412c.png\n3476cc2c7c.png\n617e3ea776.png\na0cc288f83.png\n5aec15741f.png\n280a7b7630.png\n294d7c8fa9.png\n7f09587094.png\n5fefd5edd1.png\nb41a0ef572.png\neb004aea14.png\n7a82502124.png\n1261de8951.png\nca04c19c0b.png\na57f92a611.png\nb0beff63b4.png\nb3609791f5.png\n8c0d2616e5.png\n58bc8d6ba0.png\n677e132321.png\n8debc4ebc6.png\n47e91d98fc.png\n9047a592c9.png\n2807129884.png\n40009f61ce.png\n769f0a09b7.png\nea79dbd86d.png\n29603f9405.png\n3d960d5148.png\n3496c1d5b3.png\ndf599e40e4.png\naa2ab180cd.png\n367b744d2d.png\nb9092f13c7.png\nf0384deeb7.png\n196e901a92.png\n130820c014.png\n3d18153e16.png\n92290c13f0.png\nceab85e43a.png\n2b8903d2db.png\n7b97559200.png\n2d05b0403b.png\n7b0932f7f9.png\n96c83b6822.png\ne0650ed8bf.png\n96030d7569.png\n49de37c5b8.png\n1d6f51de05.png\nfe6487ceb1.png\nb259d12150.png\n1744bd61ef.png\nab8f26de28.png\n43a8e00245.png\n6b4bdc9134.png\n38bda63402.png\n5057536c73.png\n4992de1835.png\n4389cc59a0.png\n3bf1419151.png\nb2f2f933b7.png\n8b80908f1e.png\n2c8148ce76.png\nc87253dfae.png\n3297a9816f.png\n574c07082c.png\n01914d82ca.png\nee39078723.png\n03dee840bf.png\nf990b164fd.png\nde5f1f1e62.png\n3a6bc1e413.png\n04e5ecfbde.png\n8dd3227410.png\nd98faddff6.png\n1af88d781e.png\ndc59a10de0.png\nbe3696598a.png\n1a6ae27d2b.png\ne6b5506c1f.png\n4440f7d174.png\ndb6b84e832.png\nf5b747d45b.png\n3e9fee1df1.png\n4a96727bdf.png\nfbed21a091.png\nae9ec40b18.png\n6e65695d49.png\n651d78e249.png\n93d0068f10.png\naf3015e30b.png\nce6760a4f3.png\n55cd432cfe.png\n8bc33608b6.png\na6acbda593.png\n594fb5e201.png\n00cbbf2293.png\n7e37c5b66e.png\n9b86b8a5fe.png\n9d64f7778a.png\n321abb9aa6.png\n8bd8257cea.png\na1eca69525.png\n0dba013816.png\n53805fe33b.png\ne11479e2ef.png\n3f58e8ba5a.png\n7dea0df8c7.png\n6a79ccb43e.png\n9a1d9405c1.png\n3dc2ae7514.png\nd11ee7fec1.png\nd2557e5d59.png\n5eef0d1f4d.png\n653a53866e.png\nbfd8b4e975.png\n7d35569f4b.png\nb04510ede2.png\n2a18b725e4.png\n3924307553.png\nc165af8d0d.png\n7dc633c2c9.png\n62a3c1e005.png\n7b3f1eaaa6.png\n76de859005.png\n2964d1edb5.png\n038c4d7a3d.png\nff82b105a2.png\nad38358679.png\n72ff77dcdc.png\n55283447d6.png\n34dba0581e.png\n0d8a25ca65.png\n4f21ee4e02.png\n7c819c29a1.png\n7e009749e7.png\n6e3d814fd3.png\n495424a64b.png\nc9094061c7.png\n1e10c8b214.png\ndf49be5433.png\n74477df7f1.png\n434551feb4.png\n2e4a592cac.png\n36bd172c8d.png\ndab9d0e3e6.png\n84cf0b50cf.png\nde27bef2bf.png\n29f66371c7.png\n08f5aef292.png\nfbac994408.png\n3198f42cfb.png\n5f112087b7.png\n09923f804b.png\nded4d6422a.png\n6efc5fc61d.png\nb8a9cb770e.png\n85d7f53793.png\n3a3e8fd696.png\ne585ec8541.png\ndab1938acb.png\n68a1443ac6.png\n6d4ae7243e.png\n717270753b.png\n5fbff21973.png\ne6d58ad89b.png\nc90ad27000.png\ndd3e93b539.png\n930939bcaa.png\n461176ae03.png\n0d2f16deee.png\n6d40520212.png\nbbae9c3dcc.png\n5241080fcb.png\nd9ab5529da.png\n672bb9b070.png\nfa69566591.png\n5d83036e50.png\n427e472cf8.png\nb8ecae8f7f.png\n7d65bb33ed.png\nc8fabb275a.png\n58fcc8cbc4.png\na4e5bfb182.png\nfbdd5e45a4.png\ncd68b00149.png\n431012008f.png\n61c1a0a4ee.png\n05b824cf58.png\nd8993ae908.png\n80bdc2584b.png\nbb3ef9de05.png\nd27dc449a5.png\n784440cf32.png\nb13437be49.png\n2fe75ba3f9.png\nfc71babfdf.png\ne4d6a54b19.png\n5b1a3faaa8.png\nc26cee2f37.png\n715dd853a3.png\na71cadc1ab.png\n73da5d6722.png\n60b574ccdd.png\n70cf57ee68.png\nda1b14541c.png\nb9f6826cda.png\na52470ae8e.png\ned3d64a782.png\ncaab8d8513.png\nbbf13ffcbb.png\n71890f2e7c.png\n227476b140.png\n30a5a8d3c5.png\n71de4aefac.png\n50bf94a59a.png\n6de14923ed.png\n45bccca47c.png\nb8aac87d86.png\n804c7d7108.png\n269dca6e32.png\n7e9b6a1687.png\nf3b0c5b57a.png\n6419e5b53f.png\n3eff6468cc.png\n01495a638f.png\nb8182ee541.png\n6c676d1605.png\n0b835fe552.png\n538fa5596e.png\n091aaece26.png\ncd42b00c6c.png\n4e0acb57df.png\ne5f5d12e89.png\n5ed25d35df.png\n983fc78511.png\n398a4d0c7f.png\n3dbd807584.png\n271b6d1519.png\n509634d9d9.png\n057b1c6840.png\n17c6a6e9b8.png\nab273f19ff.png\n82e87e1ab6.png\n9b952b1af0.png\n8c1cdc6be2.png\n7767f3239d.png\n2b125e9fc8.png\nd20516eb19.png\n32f4de545c.png\ndf90d30bf6.png\n51a554c73d.png\n9f0249442a.png\nf13198288e.png\n70147d1d9d.png\ne9d149a452.png\nd7652e36f2.png\n6576741772.png\nda38b07bb1.png\nab89a9e4e5.png\nf6011fc398.png\n8851d57f9b.png\nbf35b1cd7c.png\n21c312cfa1.png\nc6d17f5835.png\n8295d7b1ed.png\nfbea9383e2.png\n5e06154276.png\n9092dfb9de.png\n6e03492fe6.png\n8aea6cba17.png\n320bf85482.png\ne9531eada5.png\n738671724b.png\n157cd8b518.png\n961789705f.png\n2233e6936c.png\n143196b1e8.png\nd7757dc339.png\nae708e6579.png\n353e34b6a9.png\n1513b19605.png\nd55dcb72ec.png\n67804854cd.png\n2a701aa3e7.png\n61eb7aa298.png\nf2d6c1a719.png\n158ac29820.png\nc72ddedc0c.png\n2d44cabf72.png\nce54f2defa.png\n4c429ee782.png\ne0d61ed3cb.png\n41376c4fbe.png\n6ad87d8a2d.png\n1aef19ae12.png\na93e3cdc1d.png\n91eca562cd.png\nb0fa04add4.png\n565c15d6b2.png\n7e6d80e407.png\n4303cf97d3.png\n185444ffcf.png\n12c17cee12.png\n45314d6084.png\n9d8178a4cb.png\n5bb5684d12.png\nc25cf4d8e9.png\n0d2e0095df.png\n038e53260b.png\n446509eb39.png\n3c0ae755c9.png\n783f585c78.png\n31c40c5c2a.png\nf0491dfb86.png\nfcd907558f.png\n88997e61d0.png\n5202cbe424.png\n6ceb5f2342.png\ncb992ed293.png\n5ab7c36d9b.png\n45406c9a5a.png\nc41bf71d37.png\nea97efa26f.png\n3f26d3ea52.png\na7c9f89610.png\n0167d67b9e.png\nb7fc96f5d6.png\neaaa014bcd.png\nec4a9e5599.png\nda679a7f9b.png\n8807748bf5.png\ne01fa7e070.png\n0a69d50363.png\n9b40ed4c71.png\n065dae68d5.png\n5e721cd3d9.png\ncb210acc22.png\n14ecb5e60b.png\nd5f877964c.png\n6ca0287c4a.png\nd5c8c3579c.png\n8ee1bbbff2.png\nc229e55bfa.png\nd0380e138d.png\n20dd18d8cb.png\n2e3c7838bb.png\nce6314ca42.png\n02a73b97e5.png\ned30208abd.png\n667de59b1a.png\n31975a3fc1.png\nb3e1c43576.png\n6591c2f6c8.png\n64864b7738.png\nf5b281f27c.png\n71f7ef5864.png\n6149ec3408.png\n13148c27f8.png\n2fcb45c44c.png\nc009838721.png\n937d435c0c.png\ncebd6f3ebb.png\n87ff4a488f.png\nd0ffb5b3f6.png\nd56dbda1b5.png\nf375ddc5a6.png\n76d317386a.png\ne1b169bec4.png\n9fffec824a.png\nb0a5d211a8.png\na4f642c2d7.png\nada4a5903d.png\ne6ddf7d21f.png\n0f83ae8508.png\n80dc850f25.png\n859f69af1a.png\n528bb36b3b.png\n3a63fec26c.png\na5dbf312b9.png\n9716120e4b.png\n97603fdda8.png\nc999ea6eb4.png\n4ce9c87fee.png\n03cf2a80bc.png\n7208f75841.png\nfdceac3f62.png\n6c29463345.png\n87906e4144.png\nc7fbf93ee8.png\n31888f3b13.png\nb570655083.png\n10b99a2679.png\nfda99f622d.png\n0f1bf1af9a.png\ncf8108a1fc.png\n2585d38f47.png\n799b58948d.png\n104cbe173f.png\n29345e1a87.png\nc2a16e2360.png\n47f07fc396.png\nc0cc9532c4.png\n3336643b56.png\n4bbf7cc4b9.png\n182eb84479.png\n2133d8d39f.png\n3ab3158a27.png\ncd7b5459c9.png\n188f970073.png\n52e6756789.png\n4fd13dd205.png\n4bc99aed9e.png\n034aaba5a3.png\n247d730764.png\n603069d579.png\nffac152437.png\n99c1cc31ca.png\n718d3ec452.png\n6d975190d4.png\nc3b0fd8a6d.png\n15c2b6e55e.png\n28c9b3239f.png\nb39b153e93.png\n656973c43c.png\n1b6db79ff5.png\n0b83548c34.png\n4b20e32091.png\nfa04dab924.png\n5445c943f8.png\n14b50d2c26.png\nef441205b5.png\n394070b0b0.png\n09bf956831.png\n4555a21318.png\n6b3f024cad.png\n37c8167b81.png\n9010e76e79.png\n7b54f602e5.png\n71737fb196.png\n4f34b06dc8.png\n06cf6a9e15.png\n681612cea3.png\n98688a6c7f.png\n16531b343c.png\n1ce78adad6.png\nc3825792c5.png\n1025f1f9f7.png\na9287d0e2d.png\na8aa1d5b64.png\n082cb33f51.png\naf3340c64a.png\n5d5a0c70a2.png\n4098e4f4ef.png\n78e09d764b.png\nfe5227d488.png\n4811bce9be.png\n6d2b421f7a.png\n8869cb02d9.png\nf5fa8299bc.png\n4cfcacd4f9.png\n41bf1f313d.png\na4f7eb0929.png\nb3c74119ae.png\n73f951b30c.png\nbce1766212.png\naf77e1d769.png\nbaa0114aaf.png\n82a6a0e66d.png\n71150da04b.png\n540b08ca10.png\n933b9adba0.png\n8b00c9309c.png\ne1aaf1b487.png\n60bb53f935.png\n51a98a8f3a.png\n7d785d5296.png\n6aa39d32e5.png\n937b4cd8e7.png\n6627a74e9c.png\n1511f1de49.png\n8500564b08.png\n408b37703b.png\n84f4a771f3.png\n21c2d4e863.png\n2de086d292.png\n35714fa202.png\n2f4cdfb568.png\n53d9ed7ddc.png\n5cf4d33d4f.png\n41891c30fa.png\n81989809aa.png\nb82cd81273.png\ndbcb10c638.png\n31cee2e8f0.png\n6f9541ff15.png\n142c7c5408.png\nb7af4a57fd.png\n37afd06dfa.png\n0413ae3f5c.png\n6e3a815b3e.png\n4edb0938ab.png\n33273c4d81.png\n2afe092e2c.png\n52889bff06.png\n11dbf86bab.png\n891398cf90.png\nd88eaf77d3.png\n7163dee1f4.png\nff5d55d4b6.png\n79718d0ce6.png\n05572c229f.png\nb887b3f5dc.png\nf9d5bb76c5.png\n24d4817190.png\nffa592312b.png\n083ffe7f02.png\n20fcf160f4.png\n4ec803a4a1.png\n6c95a61d2c.png\n875052bf6a.png\n45aa2ccbfe.png\n4bd8042755.png\n3540080bfe.png\n9b1403e161.png\n85d1d6b2cd.png\n06decb795c.png\n3ce95c74d5.png\n9886bf8a44.png\nc31a3c9ae4.png\nf6cb4b93e6.png\n60135a8a90.png\nd1aedb7466.png\ncd52989e69.png\n45dc0d5d93.png\n835a573b7d.png\nd9f21e185f.png\n1626a286be.png\n1fa25802cc.png\n8413d342a9.png\n6cc3e319bf.png\n29f2d6e111.png\n70b96ce692.png\n3ae6793cf7.png\n6456991eb0.png\n86f858f81a.png\n33b84dc57b.png\nb6cb1fda08.png\n17aabc4f34.png\n3b9d95d5df.png\nb2d2951f0e.png\n5cfc14855c.png\n0a050d38ca.png\n7ee0e76934.png\n68a8521c79.png\n10cda1078b.png\n740f33db4b.png\n4e89a48b43.png\n29a27c9903.png\n4dd47d353e.png\n4d0d7b3b8c.png\ne37a266061.png\n32f6748b0a.png\n2216d2a75b.png\ndb1c258e8f.png\n328183c949.png\n6420ece709.png\n9bc988c8b7.png\n476cd53e02.png\naf8d5de7eb.png\nb32be89c4a.png\n5064f20af7.png\n67686e8e07.png\n6d8b46c501.png\n3c91c4805d.png\n778f031703.png\n75dda858fd.png\n2f2b8bc0c1.png\n8cb3edc93c.png\n6e91f1eba3.png\n3325f8af22.png\n3eeb599831.png\n86f1f06094.png\nf5f9636464.png\nb774b632f8.png\nf85d300376.png\n9946b858fc.png\n2c5fd36516.png\n398177485c.png\nb941c8a655.png\nd529ba7f74.png\nedf2445671.png\n40278e32e2.png\n0e2808a025.png\n1822127483.png\nbbf28ad8f4.png\nca4e3b12aa.png\n646dc6b247.png\nb4aff6e970.png\ne9f338cd6e.png\nc6b0fcca43.png\n013974bce2.png\nc66e8dcd88.png\na76adbbd52.png\n4b4bb5ca9a.png\n9b303e8370.png\n6d0b7e8c5e.png\n426cec9dd2.png\n73623061fa.png\n96798b90f9.png\na8f6cd5b49.png\ne938a48293.png\nadc6e14121.png\nd1c8242b80.png\n02910e3652.png\n3b5774226e.png\nd649ce6484.png\n55bc498d65.png\n17c1981f7d.png\nb72181a9d5.png\ne162d8e24f.png\n7b785380e9.png\n71468b522d.png\n1963a9e03a.png\n80693d458f.png\nf8d083fbd9.png\ne3c14583d7.png\n7500f695e6.png\n85738bfeb5.png\n804def1efb.png\ndfc563f793.png\n64dba827d6.png\n210c6bf5d2.png\n03b8f5bfa7.png\n17bfcdb967.png\n6f07ae886b.png\n499db8dbc2.png\na589985aa4.png\n4497395e80.png\n940eb1bbe4.png\n9e2e88c82b.png\n3e2d048107.png\nc2e6f57d03.png\n1630eeba83.png\nbb40ad5b70.png\n85c5595dc3.png\n6eeddeeb29.png\n8fb16c02e4.png\ne0e56bd515.png\n228e88f048.png\n821bab3386.png\n196e75547a.png\n9a5f20c2b6.png\n9163f15e89.png\n6e262f320f.png\n3ae4bfa0de.png\n8e45622c55.png\n7a86bccee8.png\n63f93a4213.png\n03a92bda0e.png\n3ab1c71dba.png\nb5e32a1b6f.png\nc78e071138.png\n8016056c46.png\n0926af3a6c.png\nab85ed0835.png\n02c1fb48e4.png\nc9f84c908b.png\ncc4153a0ba.png\n27c28dd8be.png\n3ea3db144d.png\n3f358013ac.png\n0ffbef2a57.png\nb24947c8d3.png\n58a87efcca.png\n7db35be44e.png\n6843ce1763.png\nacaae4b72f.png\n5db18c66d8.png\ne9c2184f8b.png\n64a2a50ee8.png\ncc132b53ec.png\n31461f0f03.png\ndbcc1619f5.png\ndb07e691de.png\nd625028eb4.png\n16fb21800b.png\na1d305862c.png\na11b83ca27.png\naef24f508a.png\nfa4c444dd5.png\nfb09c214ae.png\n589548425b.png\ne451d2193d.png\nf9cc9a649d.png\n65839ceeb2.png\nb2eec54a46.png\n58ad3d9083.png\n321fd72edc.png\na0a978309f.png\n0c6874fde9.png\n81ede1ca77.png\n1a7b40b40e.png\n23119af289.png\n0dc05f65a2.png\n61427e5f8b.png\nf0b9ed069c.png\nb16c004483.png\ndb4ad3e61e.png\nf478171003.png\n64f1d0878c.png\n30315fb6e8.png\nc8f08b5891.png\n598d720228.png\n7551ee0210.png\n54463c0f84.png\nf31f30db2d.png\n747924ff6c.png\n394956fd49.png\n24eb0dbec4.png\nd81f668af4.png\n47285b6e1f.png\nd006b6ef23.png\n3d64b5afb9.png\n4540ae2a91.png\n162b99d5b6.png\nb9412c61eb.png\n9a354f8017.png\n838f5e53b9.png\n1e76a9cede.png\nbc3c918cd4.png\nae2db518f3.png\n13351e9bc6.png\nfdec2622ca.png\nf193ecaa85.png\n009bfb3a78.png\neeeb536d56.png\na79de3a9cd.png\ne5d4791389.png\n66e0cd3d9b.png\n793ba9f7d2.png\nd48134038d.png\n30e5c4d227.png\n27b98d2fb7.png\n79c7997f05.png\n0c6e42492c.png\n792181c3f1.png\necfb64b43e.png\n32968918d9.png\nc46ec7a3a5.png\n7b0f7847a8.png\n523c5d756a.png\n4a9ca949fa.png\n6b74af57ef.png\nb1144d629d.png\nd30597f09f.png\na447f49818.png\naf18915f0b.png\n5601022a4d.png\n6d5ad4ab9e.png\nb2f93873c6.png\n915238dbf7.png\n792467eff9.png\need2eb2cd1.png\n45b6634d07.png\n9a0fef6e76.png\n663377db96.png\nd84d285b26.png\nd7a43dab4a.png\n6a1beb1f77.png\n7dd17aac9d.png\n4f373d4a73.png\n64692bc1de.png\nf04996aba1.png\n3118e18c79.png\n0b59f5ec03.png\n0c53156b05.png\ncfd2c7ab97.png\n1a8af411c3.png\n23b3bd473f.png\n3f99903e74.png\n752368df10.png\n772858e71a.png\nad65f9f2c8.png\n06fe4d8223.png\nda75372c30.png\n3032b4f8fd.png\n3b92f96f2f.png\n60969ee8a0.png\n390285454f.png\nd9377ce4f8.png\n8e429ed84f.png\n99de133bc7.png\n4f84cfd807.png\nac42154416.png\n371bf59030.png\n1ef7e65f42.png\n7733aab28c.png\n761fdaf070.png\n31c97009c1.png\n5910d039bc.png\n88847c22a0.png\n6d68b91615.png\n3b8c8f0a19.png\nc3b31898df.png\nfcb75e949a.png\nb7eb34da94.png\n4b4b7e4655.png\ncf7ab56ccc.png\nf905b4ed4a.png\n551f9c1379.png\n70afc514d2.png\n92cef4936f.png\nb64cdc425f.png\nc0cda22d64.png\n7dd01cb655.png\n18ac7a5b88.png\n05fb522022.png\nd377b39581.png\n212782d522.png\ndf999cbe7d.png\n319872df0a.png\nb0c68deb98.png\nfc1b10ee80.png\ndec41374ce.png\ncb66ce2ae0.png\n190ac23ab2.png\n0e9d78f14f.png\n67b4e6e068.png\n0d1bf337ce.png\na8d437f870.png\n5602644562.png\n1a80491edd.png\n6c39cad9de.png\n6a4c68f4bc.png\n9950526250.png\nc6b59300c7.png\nbb4f2ca417.png\nac5cd0c053.png\n4a4573191e.png\nb6711aa65b.png\n8ed7bbe728.png\n2cfa33fde4.png\ne50a5a077a.png\n9ab6cfe256.png\n6e00792276.png\nd0bb00f25e.png\nbf98f3e3a7.png\n641daad2d2.png\nee3f606619.png\n73788e166d.png\n82cf8b58e3.png\n0091fb2dab.png\n80bdf2dfe0.png\n5f37e756a1.png\n3e4ea2e9b8.png\nf33c2ce025.png\nf6abb2285e.png\n76e70c38f6.png\n61c5b61567.png\nac7e275644.png\n14b1c33a62.png\n2bd6da4508.png\nb3a6ed3046.png\n1ffaab4396.png\n1ac21f6704.png\n12e44aaf72.png\n32ffc55b56.png\n6821a0013a.png\nef0bb96dcd.png\nae7203cd0d.png\n5876dcc00f.png\n040e8b3eb6.png\nad7d11a9ce.png\n041bda3b04.png\nc30dc2fb88.png\n04fe99f3e4.png\n0f73683331.png\n646bead850.png\n950b416f78.png\nbc19c541c0.png\n7a9b7e9d5b.png\ne61d98500a.png\nf4297d5e4d.png\n20d394d00f.png\n270dd2b8e6.png\ndefb3d4896.png\n952c9f8a43.png\n6b4b989279.png\nf40ce50235.png\n61eddad5ff.png\n617af65d86.png\nf0f1362f19.png\n31629cce42.png\nf1a3d6352e.png\n746abb2c3a.png\n43fba1a9a4.png\n722155ef59.png\n7b9bdbea3c.png\n3df34446db.png\nfb0b7686a2.png\nfb7987693e.png\n98c4538e70.png\nb0a1399f41.png\nce5710c27b.png\n7d42cc767d.png\n62d063baf2.png\nfe2e88b36d.png\n6bd9f7f4c9.png\n5848af3f89.png\n2a0ae73183.png\naf03b50e82.png\nfe87689920.png\n91f6bcd7a7.png\n24328f0ad1.png\na6a674ec87.png\nea6937a76e.png\n35c527afd0.png\n90fd7812ed.png\n5349da2c2d.png\n804aeabe78.png\nc86ec557ad.png\n54e1508240.png\ne5a61707cf.png\n5628d8d57d.png\na4db94dace.png\nb3b9fd43cc.png\n5663471396.png\n1be10e344a.png\nf1ba1f62f3.png\nc8b32316bd.png\nf7a539ee62.png\n550b360c16.png\nb61cb2c555.png\n0d3eb7681c.png\n18f3cb6bd1.png\ndd535d0e0a.png\n162f738a03.png\nc2b183bdc0.png\na524090258.png\nddd80e9d54.png\naf29e02e15.png\n96cd0e4cc7.png\n01258c92e7.png\n89a201b5ff.png\n635c1e9055.png\nf7a9edb985.png\nf145cf3eb1.png\n4bfdc5e5b3.png\n4f6c2e18f6.png\n7a8d800e83.png\n201a189503.png\n98be6fe916.png\na58b03118a.png\n123870a546.png\n79f4872925.png\n05bfa6624d.png\n614dd9f857.png\n2e10e5fdf0.png\n4b366ad75d.png\n15f7a047c7.png\n0ba253bf47.png\n0afffbf3a7.png\n7785879425.png\nf64705a472.png\nc9012b5df3.png\n743ccf6d5a.png\n8cafc8c3f5.png\nd669ab34d4.png\nb619b88818.png\n2ae74e9ece.png\n4db23d2bc3.png\nbffa15aaa5.png\n20128efc40.png\n4686d84198.png\n210f887ce1.png\n175c9c9e62.png\n788720abf3.png\nece2c5440d.png\nf3ae873adc.png\n320e7851cc.png\nd054be6e3d.png\n8ac7c26b28.png\n4fce657ed6.png\n0b40a9afe5.png\n875170148c.png\nce5b9c1de1.png\nd0f922c629.png\n6f334750e4.png\nddd6c17de3.png\n1b2a33253f.png\n5432daa68e.png\nff14a3baeb.png\n010082e36a.png\naadc43bce3.png\n69ac72804f.png\n5d9d0112ad.png\n5a160497a2.png\nc86cede787.png\n2454a76962.png\n2999c30683.png\n8a394a5c38.png\n09ee30a08d.png\n5f7859c06f.png\n88ff802bf0.png\nafb3847686.png\nce59600cfa.png\n736628f96a.png\n6959af3cc3.png\n6a4a8f9166.png\neda924e7dd.png\nabeec5ed35.png\n93506ed6e7.png\n495faf2c57.png\n59ba060353.png\n6e3d4665bd.png\n0c16d79223.png\nf6838859d7.png\nc638c588fe.png\n0d6a468b92.png\ne7527c0183.png\n6e470db51c.png\n1ea255084b.png\nc9454c6638.png\n28dc7e6de7.png\ne9147272b4.png\nca06942a59.png\n1a12d639de.png\n1e4a6b81a3.png\n9cea9923bf.png\nab40e136cd.png\ne764cac378.png\n0bc80a2050.png\n354780e9fb.png\nf32a360c8b.png\n9833bfe671.png\nfeca2858c6.png\n6538555893.png\n0a66231f08.png\n49c0988c19.png\n4d6ef1a9bb.png\n9e9f0266ea.png\nf5ab6d0102.png\n489b8e8389.png\n80666396cb.png\n9611bdd831.png\n43dc4c8c28.png\n0005bb9630.png\n871e2a367b.png\n20a283cf78.png\n7c3a952cf2.png\nf5e331a0f0.png\n5186f6e1b4.png\nd254cf287c.png\n1d8b53d9df.png\n138cdd8247.png\ne619160edb.png\n164cf9c566.png\n970723f88d.png\n3a9c63e8f4.png\n781b5a8baf.png\n498219f37e.png\nea39579316.png\nbf4ded5e3a.png\nad7e806892.png\n6032385d55.png\n8c55a43029.png\n409f102f88.png\na58470d2e0.png\n50d3daf954.png\ndfc0a7b323.png\n2445bf85b8.png\n43d9c911d1.png\n42faca9621.png\n0f9ef8df38.png\n61a0a17dcd.png\nf7f8a24612.png\nec228a0784.png\n8942571467.png\n369f8a6f01.png\n72826bcbb3.png\n4e434e64a5.png\ne760d65679.png\n5c9745bcd2.png\n88fbee1a2f.png\n014df49b3c.png\n953761165d.png\n027f49e160.png\nbe9f7dc881.png\n613bde123c.png\na8336f8463.png\n3027326497.png\na57d19240f.png\n4930028223.png\nb8851182cb.png\n3b00ad8dae.png\n1513083378.png\nc79d168bdc.png\nad761e92d0.png\n8ad6fce1d6.png\n35a48ea5cf.png\n7c8b940bba.png\n90c214f1e5.png\ncd3dd039a7.png\n04697a9083.png\nb542d75a78.png\n237a9c7f4f.png\n631a3498d7.png\nb404ffdbf7.png\nf306181b5d.png\n05e47b3be5.png\ncb8a681027.png\n98765fddfa.png\ne1f1f79326.png\na393f5609b.png\n3c246c464d.png\n95577ef8f3.png\na65fa99532.png\n15db56acd5.png\nd024745342.png\na43568e310.png\ne764404579.png\n6937514d1c.png\nd975321865.png\na6ffc65eef.png\n491c5dbdf2.png\n40db8da030.png\nae8be09ef8.png\nd0a0a50b27.png\n97aa1042ad.png\n4e0f9ba44c.png\n9399b45f19.png\n19bd16cc80.png\n71f4235df5.png\nc0b11fc61f.png\n8723f2b53b.png\n37ab36b8b8.png\n5655a238b7.png\necac326167.png\n315df3b3ef.png\n993edf78fa.png\n25055c35c2.png\ne2cff6312d.png\nee13d500a2.png\n282f1c2a78.png\nab2e576462.png\n58160d4f6c.png\n19a6580aed.png\n0129200dc4.png\n6f0d7bdd29.png\nbafcaf7088.png\n3b956837ed.png\nf413f0ea19.png\n8a3932d6f7.png\n718f18f71e.png\n07143897b2.png\n74d5a5c926.png\na19987ca28.png\ne9edc8ee67.png\n60baa3002f.png\n3a58ed89fe.png\n875085ea47.png\n29ddc2a2aa.png\ncb04c4c5a1.png\n8582e20d75.png\nf413fd0931.png\nee86e0845f.png\n2d65eed666.png\n79e00af543.png\nc9bf1b4bc6.png\nbcfb588cfb.png\n3b77ba573d.png\nde06dcb997.png\n5258e72b4f.png\nabbfbfc591.png\n4030fcfc51.png\n6a05025151.png\n52551f7a80.png\nfab01bfcae.png\n9f436ce32f.png\ne9fafd9af3.png\n537c57487c.png\n13bd6b4cb5.png\nfb2f5485c7.png\n357e13bb04.png\nf91af813d6.png\n0d7993b61d.png\n3d0eb2ac5b.png\n13f1fec759.png\n10947d16b1.png\n6becbd1796.png\n5dbeace688.png\n14d7924ddd.png\n64c0dcc319.png\n6b45297549.png\nb7a0e18aa1.png\nfbc5acbff9.png\na7c7cbca6d.png\nad14d2413e.png\n133c2477d6.png\n93f3cf7644.png\n63c62f219c.png\n9d518b6b65.png\n97b71c8c6b.png\nfedc8a385f.png\ne002cd7798.png\n81e673345b.png\n5bc5e4df88.png\n1f158e8d68.png\n47d9ae7016.png\ned249ea79b.png\n800d311316.png\n98a4f24dcb.png\ncf14982a21.png\nb7fdc36c9b.png\n71080dbb80.png\n6eb2d4d1e3.png\na2976c4ec4.png\n258e23c0be.png\n1917722d17.png\ncf023db098.png\nddb1a59147.png\n4a09589ec2.png\n8cbe7d29e1.png\n7317846e74.png\nbd8614d181.png\nd86ca1254a.png\n805e8f004a.png\nc843f11c8a.png\n95e0b5a613.png\n3a23c0ad1f.png\n41da1ab679.png\nc5a37a86fb.png\n71d1424c5e.png\n32510ca887.png\n7aebf2b39b.png\nfe2daeb3c0.png\n6c41e98267.png\n70cb03f04c.png\na13ede84dd.png\n56441c3a16.png\nb2bb8b1c2c.png\n5caec95eb3.png\n4dc26b1265.png\n07dafc9877.png\nb302fbe079.png\n041d8acbf6.png\n47f405dbf5.png\nb24c0b91a3.png\n90519d19c7.png\n0f41fb1404.png\nd879349c6e.png\n146931dd43.png\nee8721cc58.png\n0881e78cac.png\ncc924f5758.png\n855e5569a9.png\nb5f1babe63.png\nbef0bdcde3.png\n0c4aea0dc8.png\nde2758051c.png\nb9863f5b64.png\nc7c0ded4b5.png\n96065da756.png\nf8ff7058b6.png\ncde7db0718.png\n35ff3457e7.png\n6be54e99b0.png\n3474172578.png\nf90d686e01.png\na25158dec8.png\na7667efaea.png\n29cfb788f9.png\nba3441ceef.png\n76cc8212dd.png\nb4d509de34.png\nc5098d265e.png\n7df490b209.png\n153fed17c4.png\ncabc7e9643.png\nec3faa8248.png\nbf9963c402.png\nc3ef1a2a7a.png\n500267ba02.png\n195420ac11.png\na371ec6aee.png\nfee1806de8.png\nfa74fdc04c.png\n2570a7d454.png\n9619b76e6f.png\n1c34dafbcc.png\n535eb2e821.png\n129f66cf0b.png\n8f6b83329f.png\n4995af5fe3.png\n1649955714.png\nb74fcab200.png\nd8eefce4ca.png\n09f5a0410c.png\n3746667eb4.png\n8ad317659a.png\nfe34a95b4d.png\ncb8ed909f8.png\nab3db522bd.png\nde2a295cb6.png\n95e3027425.png\n3b5d5dd52b.png\n5395ef1290.png\nb69229dd1a.png\ncdb1d2185f.png\n3d84ed9c15.png\ncf8acde8a6.png\nee113db06a.png\n7a90f87b2f.png\n24157bdeeb.png\n8526b93268.png\nb1fcf57156.png\na28b050491.png\n34009c8c2e.png\n6b67b187e3.png\n444d0d46d3.png\nbc8ee4cf71.png\n7b72683a91.png\n75b33b09d0.png\n61772569c7.png\nf73e93ed41.png\n5d98069797.png\na265577181.png\n3f37d8bfd6.png\nc864432114.png\n7d2561517f.png\n59dde43449.png\n9b9c2086f4.png\n0e90fb8fc6.png\n6c6f886709.png\nc4a70f7cba.png\nfd35db589d.png\n3371fb06cb.png\na0d21fb232.png\nc58b431079.png\n09821df016.png\na62e6bb195.png\n7fbc88375b.png\n79bb9dc447.png\n37377158c5.png\nb7bdbc58cd.png\nf18d49b870.png\nf4c8e27cbb.png\n1d614f22d8.png\ne58d16b268.png\nde6e1b4095.png\n215eaca54a.png\ne5121874bb.png\n916e95dae3.png\nae807d587a.png\nfcf64355cc.png\ne19a8ccce6.png\n72bb7e268d.png\n95b0e08307.png\ne59cd0d10e.png\ne36cafd036.png\n9931dd3141.png\n239a80d29f.png\nd6b9a9ab7e.png\n2ebc20ce2a.png\n3bbbe5e44d.png\n154079ce60.png\nee63fc4ac8.png\n1afb60e200.png\n1064076633.png\n9deb934708.png\ncc4a7f0884.png\n80ec035d24.png\ne733c8e845.png\neba212cf18.png\nf7e09f79e1.png\nefc114a3d1.png\n9e31e1c64f.png\nadae2748c1.png\n4c5937c9e2.png\n69bc7087d5.png\ne0bd8e545c.png\n5394610aed.png\n48a18e2b84.png\na5822773db.png\n16a231bd69.png\n15a4e9864c.png\nfe1ab48d73.png\n827360080a.png\nb31ed95288.png\n7a88625b83.png\na97deaf198.png\n7651ea8aa4.png\n09fbbb4b20.png\nfec5331bb4.png\nca509cfd78.png\n8599321bef.png\n64a02779cc.png\n18cd26bc05.png\n10af7026ff.png\necf1ba6ab9.png\n03c0db5f66.png\nc5843a2b20.png\nf27a3ca60e.png\n39ae6fcec8.png\na369e4ece1.png\n3a10265232.png\nf784443dc3.png\n1c674cc105.png\nb5cb0a5337.png\n2dc9e78155.png\n2ebc0fb07c.png\n930e785c7d.png\n4db87ce39b.png\nd4c351a04c.png\n292ea3b61f.png\n6663d5f688.png\n050f3600c1.png\nfcaa76df64.png\n27c2b373be.png\n5f41db0529.png\ne12c5719e9.png\na7b5999db2.png\n143ef299ab.png\n2a7b5e1f16.png\n09a2862301.png\nc5592544a0.png\n6ded3d4b61.png\n9de7ed8672.png\n81ad4fed2b.png\nc0be35aea2.png\n78a8a60bde.png\nccd4f37dae.png\n9d7815c64e.png\n5171c905da.png\n94cb90a273.png\n169ef6df9c.png\nf5648f98db.png\nbf0c510431.png\ncf38172321.png\nbcb40fa449.png\nd07cc055fa.png\n93d3950d7b.png\nab90b80524.png\n4ebe8a59b6.png\ndca68fd494.png\n24025d965a.png\ne0eb2e95c3.png\n24e327c455.png\n65e9989c7b.png\ne35d17412e.png\nc17e3409af.png\n26e7c4a304.png\nb2afc5f0b4.png\n2a6d18ab5d.png\nc1335a0107.png\neb4d13433b.png\naedd098370.png\n2862c77d0c.png\n377b6c18d5.png\n3c50ddbc65.png\n7bab31366e.png\n4cf7f2cbc9.png\na3a8190a03.png\n7e3f31ef05.png\n3791842a6d.png\nff08bceaf5.png\n0f19e90f78.png\nb96b1971eb.png\n3d2bc98c66.png\n38a5cc707d.png\nbab4e6842d.png\n0c4b3b3838.png\n7e84c340bd.png\n4a2c93f934.png\n3e9e8b4fc3.png\n9a32f8d94c.png\n826bb24d25.png\n723124abad.png\ndbdc2b5730.png\n364c09b563.png\nd8f465c713.png\nbd8c036b93.png\n937ac0c55c.png\n9010a05d5e.png\ne9d8c832f0.png\nd7778398ed.png\nc8ea9fc5cb.png\nd5a82ebebf.png\n25cc21facb.png\nc4e6a80118.png\n08aa284d8a.png\na6a0885ac9.png\nb54c9cc80b.png\ne6d88fe842.png\ndcaa2f7dec.png\ne141a12073.png\nae4feae4ac.png\n8d9905f7d5.png\n5fe816a330.png\n6c16057cd7.png\nbecb8900ea.png\n3be7193c50.png\n90912de036.png\n3403f634c5.png\nb398085048.png\n740caf5038.png\n3542a81a70.png\n1f83bc94df.png\naf1d47494c.png\n4c48b962ff.png\n50e3e10afc.png\n196b082463.png\nd782a6ea7d.png\nc8861d0d75.png\nc73ac8fd67.png\n3c4eb3116f.png\n3a45a51f21.png\neddd90bd4a.png\n2822fd3839.png\nbdbe57a505.png\nbcadb2743b.png\n580a66f59a.png\ne7688312ec.png\nab6a1be5d9.png\n9a6aec2179.png\n26fa565501.png\n307d14d721.png\n7f9e61c079.png\n4ad00e8b5b.png\nb696d70c72.png\nae36f17301.png\nc279e2e81b.png\n8d0c065461.png\nf62cb9db70.png\nb3e666b13e.png\n6654fbf093.png\nec244d46b5.png\na0d9eb23e1.png\na4928cc0c4.png\ne69c6b5d79.png\n7ba5fb76a8.png\ndceb326aee.png\nc4b9e32030.png\n97c5934455.png\n63c0eff552.png\ned8fe4f4e0.png\n3b6e0e45c7.png\n0d01cacbc9.png\nc55f5b7931.png\n699169e3a1.png\na5f0c8b6f8.png\n51a41b9281.png\n7ca96e0c9f.png\n069b571f97.png\n91115cfc77.png\nbee9d5af54.png\ne3ccf38664.png\naa82830b4f.png\ne7c396bf28.png\n72aea0aaef.png\n231262842e.png\n2071f9850b.png\na0891f7e3e.png\n38a53b6b7c.png\n156be6765a.png\nbdfae19bec.png\n5fbcb45ed1.png\nffa75fd526.png\n196976ff21.png\n3d897625dd.png\n0aa3bfe21d.png\n32368fa1a5.png\nc5f6d81074.png\n5c8f7b5ec8.png\n8bd6e290b2.png\n758c74c39e.png\nd3acb2d561.png\n55461699f5.png\n58ef954a94.png\nbb3686fb3d.png\n4ba3207c38.png\n2cb5045cba.png\n34eff695a2.png\n2d5846820b.png\nf597d72b6d.png\nfcac5cb6d1.png\n871aacfc7f.png\n06e0ccbc02.png\nef6a3bd80c.png\n99b6682fcc.png\n04d2ead1b4.png\ne8bec3476b.png\n0794c37f5a.png\nd27ceec04a.png\ne7d582936b.png\n5f5445bcd8.png\ne9b058f0f0.png\n0573ed7a7b.png\n357ce270a6.png\n854e676f6d.png\n3bacefecc1.png\n3c4df17a32.png\n016a8b9b9a.png\n9e7a9ccc6f.png\n070da35501.png\ne5333c6911.png\n76ac440877.png\n0a9fc67f17.png\n97cef77fa4.png\nbaf857f245.png\n419e419f89.png\n2ce0ef6162.png\n7f9bb4a93a.png\n2001dfd850.png\nad883213d2.png\n7f22aad9b8.png\nb5a15d7bf1.png\nb1d7dde27b.png\nde87d19851.png\n2017a57511.png\n76079d0bf1.png\n9c276c8606.png\n6a2a9f1e1d.png\ne46324b167.png\n30e154843b.png\ndec7f76698.png\nefec662dc1.png\nd4a60589bb.png\n31a30113b3.png\n0d0a173bfe.png\n59f0bb402e.png\ned81af7f86.png\n0b16ac0482.png\n53289da645.png\n9654d1a56c.png\n3b2e64b4bb.png\n17ac6c1165.png\n165c8b1f14.png\n69a3b60b11.png\n0a13effcb6.png\n1356069815.png\nc4d777c228.png\ncd570d2764.png\n6c705b0da4.png\nb1cb5be1ce.png\nee468f7195.png\n4152525251.png\n0d265e3a4c.png\ned6bee376d.png\n448427097b.png\n7c18c8575c.png\n38ea88abd7.png\nb5af74d77f.png\n614270933e.png\n1ecbdbe10f.png\ne556a7c183.png\n533383b680.png\nbad4625e76.png\n8ddf87b5bd.png\n853d9832a2.png\n2c2e72caf5.png\nc6ed46bb39.png\n3ec16830a7.png\n186ab92516.png\n0b1f1059ca.png\nbbb568fb20.png\n0adb8d3c2c.png\n95e0620119.png\na6c55fe3af.png\nb5c4939835.png\nadeb60c15b.png\n0113339745.png\na7a4bdce55.png\n94ca0e01a0.png\n99525132fd.png\n18914f0797.png\n1aed9a9daa.png\n9f081a61d7.png\n8449ff9997.png\n3a0e15d4bc.png\n0cfa7b3b64.png\n141495f4b1.png\nbe9c6e9b7f.png\n1e95bad8bb.png\nbfd3a072a8.png\n9bd1fdb232.png\nc866a1e2e0.png\nc91958a03b.png\n3138069557.png\n633b6d6ec4.png\n76e19598b4.png\n2fafa3db1a.png\nb7ed416e3c.png\nef4254154d.png\n9edcfbe543.png\nd168218bac.png\n0d2238f294.png\n94cf1a511f.png\n25567a3210.png\n95037a00f7.png\n1c23bcab44.png\n751248efa5.png\ne38299f1fc.png\n9537c49d89.png\n781c32484c.png\n265f09083e.png\nace1b850fd.png\n92cb8028e8.png\n86f33178d1.png\nd84b3632d2.png\ncb707b00e6.png\n1e4fcfb2f9.png\n13d89f8afb.png\ne2ca341f4d.png\na40e944791.png\n2a7d747db0.png\n6a5070c07d.png\n4478a2a1e0.png\n014cc353bd.png\n99b014b973.png\nd1cfe0c1f6.png\na65ba359fa.png\nf9becf46d4.png\n9da3f4e2ff.png\n34b8d44aef.png\n2e0ae8fa98.png\n5cee7efb7a.png\n31762a217d.png\n7310863c7b.png\n3e34c60f5f.png\n929322a227.png\n7e42729efd.png\n285c426094.png\n50bc1a2eb4.png\na1efe19ede.png\n03b4f1dc2a.png\nacdec8b46c.png\nf4fee61024.png\n71d34fc906.png\na37df3d8bc.png\n2c9cb402d7.png\ne8d4c1d49b.png\nc0240a49cb.png\n51df82c979.png\nda3e6f8513.png\n9b10a74575.png\nc52faa0d3a.png\ne2b86b766e.png\n4d137bd91d.png\n538144a394.png\ndf8f7ad6a1.png\n7dad1b3905.png\n2c47d41861.png\n372df8e65c.png\nce3d0fa3fa.png\ncc1b695b2c.png\ne155c42993.png\n03f4b4a6ce.png\n54dc8e1099.png\ne855b705bc.png\n355952537c.png\n44940466b6.png\n2e21ca5ebe.png\n22fe529e57.png\n9c58e81c46.png\ne9497af3d7.png\n01926f809a.png\n861442da79.png\n94500b7464.png\n20dd6bc2ff.png\n3c04beaa5b.png\n185ff08d47.png\n5a2f0ee267.png\n6c39c17251.png\n649d547157.png\ndb8b480f5f.png\n8cc037cd28.png\n7e777df9d5.png\nb6d738b57b.png\n5ae05ab401.png\na1323b0391.png\nc8eba9e456.png\n6868649862.png\n6798e841e7.png\n45a197485c.png\n0aedf52acf.png\n3627e1a769.png\ne90e55d803.png\n91a92088b4.png\n291464ee6d.png\n6f8f441aaa.png\nccd5f44474.png\nc6aaba4d7e.png\n0d9250fea0.png\n9461c11c60.png\n642c2750e3.png\n7fe5c45bd7.png\n30cfe8210b.png\n83711cf4a8.png\n07a70fdbf3.png\nbd5c8feb85.png\nbef690a9ee.png\n41dca1ffb2.png\nb1ba475d8d.png\n4572bc04b2.png\n6a8f9bd70a.png\n5ad24ea101.png\n6fb29028b3.png\nb814b1151c.png\n73d6a58df1.png\n7f43266580.png\n3fe3373b67.png\n754f34301c.png\n7234856751.png\n717bd5d6b1.png\nd4db8ada5e.png\n8cf16aa0f5.png\nfc98189a79.png\n87c2c8d1bb.png\n5804b2ef80.png\n3c95ea6205.png\n348b3df20a.png\nf3fb50e182.png\n07e48a0c94.png\n610a3254fc.png\nfa233440c7.png\n3c9c8cdc54.png\naac2d24fd7.png\na971d2ae53.png\nb0e3178d6f.png\n0703c49856.png\na25e0da562.png\n9465348644.png\n9e45ead18b.png\ndb99ed23d2.png\n2ecfd04874.png\n40d925130f.png\n29878a94ca.png\nc65a9fa7e1.png\n84634ba306.png\n782dced32d.png\nab61a1c6b8.png\nd1ab12608e.png\n0570579cc9.png\nbfbe6491cb.png\n6edecbefa0.png\n79a4692349.png\n5e41dd0388.png\n7eab4d8284.png\n31609e30ad.png\n7712c705f8.png\n804580b1af.png\n70958cacd4.png\nf0e3f4c0ad.png\nd8b68009d5.png\n7fff116e01.png\n424d862bcc.png\nf0ffa23ff8.png\n1b70c24eb0.png\n6131d2d8b3.png\n17e8052ff2.png\n6c81929afd.png\n7e02747598.png\n263c4fdbda.png\n2bca466c25.png\nda65890bbb.png\n70b3951b2f.png\n8a2904c3aa.png\n1d660098ac.png\nf7c8709aad.png\n55f39afbe2.png\n36e1354d65.png\ne8799c2322.png\nf716197b94.png\na93060eb0d.png\ne6f52ddb72.png\n8534d4dfec.png\nf12a8f2716.png\n9cccb3141e.png\na922b44416.png\nee5113e6a0.png\n37f1f5388e.png\n1adcc5d526.png\naf45265429.png\nb9fbc53c1e.png\n92497ac74d.png\n3e70579f6a.png\nd7ca0bfe02.png\n175ad73f3a.png\nfb90ccc9c1.png\ne62cc3f52d.png\n30b8d8ed35.png\nec7745d84b.png\n59c6b08391.png\ned73eb3bbb.png\nf6b8b2edef.png\nc5eb095a74.png\n515b9e1052.png\n9bc0027019.png\n14566568d9.png\nedc16adc35.png\n466a5efde6.png\nee9f7913a1.png\n4a3f525526.png\n048b6423d4.png\n061ff2990f.png\n33225bdb83.png\nc84e06f60f.png\n3d414f6b50.png\nf61edc2659.png\n4228ad4f1a.png\n7d0c3ea808.png\ncb6e524a1a.png\n92deb56177.png\n92ad1bf3e3.png\ne3e09fce08.png\ne3131891f8.png\n6c9c69cf63.png\n97363b2f20.png\na54bf46d21.png\n4153eb92e6.png\nde693bd53a.png\n23d79ceec4.png\n6ea0a105e6.png\ne32a58e85d.png\n74d53376f9.png\nbc15e4ac18.png\n1a73abcf3e.png\n6f7396cb07.png\n535920edd3.png\n082041a8eb.png\n486377874d.png\n342e683405.png\nb013de1e71.png\n510097c524.png\nb20787e2e7.png\n0291e643ee.png\n89a0972631.png\n12536382c6.png\n92cfea3778.png\n4d5b2c8fe7.png\nece4d1d4bc.png\ncf4daafaff.png\n211fab5111.png\nda4e06f9b5.png\n873df4c341.png\ncf8042ccb0.png\nfea53bcb0c.png\n4881a4f71f.png\n3c8cf08665.png\n2ababa7cf5.png\n288c260e08.png\nb74e810872.png\n6d0a23599d.png\na8afc6de39.png\n6b13e87edf.png\nb180ac0113.png\nf42f9a65c3.png\n050bf9ca30.png\nf01741e3fb.png\n4f18b39baa.png\nf11db4f38a.png\n805a279a36.png\nd8c4b4d618.png\n7e9501ad1c.png\na7fdcba6e8.png\n75277c554d.png\nff47f2a6f2.png\n23f27e6704.png\nbb73a9de10.png\nb49666ccc4.png\ne99311dcb3.png\n81545f724c.png\n2c55aedecd.png\nbb8a7805be.png\ne109e2dc76.png\naacf648c4b.png\n676b7b2d48.png\nfce095c11b.png\nc5f83feb7d.png\n72d5769c67.png\n8d5787b7f0.png\n4235358bc3.png\n39579da136.png\nad6a8ffd03.png\n0b4d1f5071.png\nc7f37af819.png\n25ecdbf1e2.png\n773d6d6367.png\n24554f2d85.png\n22ef99e229.png\n6a2dd17071.png\n8db0766923.png\n7482e0c304.png\n5deab3e059.png\n4d4db48d0d.png\n9911b2b904.png\n49301c781c.png\nfa56b04a29.png\n9e6b377ea4.png\nbfecadcc92.png\n391aa43e9d.png\nff07b183f1.png\n4f28c879e1.png\nc11adadc15.png\n2cc1211c36.png\n495b31555e.png\n37ddf7de3c.png\nab1de6f41d.png\n866cbcc009.png\n2b34eb8436.png\n44a268d228.png\n2eaf33b9f0.png\nea69f29606.png\ne50212245b.png\ndcbfe835ec.png\nd56b977756.png\n7eff5ec2dd.png\nac4368e97d.png\n3d05dc9c29.png\n5fafc03e52.png\ndb9008cc91.png\na78aa61c59.png\na5c44e49ba.png\n25fcee37d1.png\nb6bef2058c.png\n86d8cd13ac.png\n9c36db226b.png\nd1fb1a76f2.png\n78f3b18d4f.png\n04306197e8.png\n9337b5e168.png\n56d842da83.png\nbb77421973.png\n38e744be5e.png\nfa1edfd24c.png\n2794d6bb71.png\nd107a8e18e.png\n2cd6db6fcd.png\n025f694e91.png\n29bc65465e.png\ndc079bad31.png\ncbc13d1a01.png\ndd475f0405.png\n2fc2b3f3d8.png\n69f188eb44.png\nbb6a94ef1a.png\n5534b178f4.png\n3f88795b50.png\n3ab7b7d831.png\n722e556818.png\n64c875c36e.png\n7bee8e1e41.png\nf8d3fb6b13.png\n267e4768a6.png\n0b9fbd9b42.png\n01ea536900.png\nf7234bb47d.png\n71a8710bfe.png\naa3289dd48.png\n0b2a0711a2.png\n64ee4cf22b.png\n3d796eaf07.png\n2f50fdcd27.png\n226c8cb7ea.png\n45b943d358.png\nbc606fc1ec.png\n6134054093.png\ne7489b0c3c.png\nf385ab1b8a.png\n558cad1501.png\nefd8613b2d.png\n2c8a53b559.png\n47e2eda9d4.png\n8ef9856c81.png\na442c472c5.png\n9595247472.png\n0f9ca6c340.png\nb8a065e744.png\n36886c22c7.png\n3a828fd486.png\n7dc2f2afb6.png\n2a0c638678.png\nfecda8c43c.png\n59a20a914e.png\n67efef3228.png\n32b4371321.png\n6445eace2c.png\nd298918b62.png\n8ba86dc9c6.png\na41685b927.png\n6f5eebb896.png\n5ef61f604d.png\n124a6c6989.png\n760173ca87.png\n7d420cc2d4.png\n6047a56db1.png\nd6cfbda4bf.png\nb3cbe4ea5d.png\nc34d5dfb1d.png\nee0839ebf5.png\n7cdd7df705.png\n2163aa947a.png\na609f4096e.png\n20676ad11f.png\n5338d62f75.png\nd3247e8f62.png\na4db311648.png\nc2ff5a5721.png\n8816f6d638.png\n74361fb662.png\n1f17c6232a.png\nbe38c07458.png\n5a503228eb.png\na7a29c02d9.png\n2c1eaa1a47.png\n39d6fbba1b.png\n2dcae23744.png\nb244d7991e.png\ndcdb96f81a.png\n817a69e036.png\n63987c709a.png\n1b279deb93.png\n280150526a.png\n3aad1de5ac.png\n61d395dbd4.png\n941c82187f.png\n80bc3aa015.png\n760c2b68cf.png\na5291b23f1.png\nc19963fb19.png\n8be32a53af.png\n961da31e2d.png\n33be55293b.png\n1c298a2807.png\nbaca1f1596.png\n6fcb932d11.png\n3548f9bbca.png\n8511455765.png\n790e72ed9f.png\n3a7868e7e4.png\n4ffb50da29.png\n92caf3281a.png\nad2736fbd3.png\n4c43b24562.png\nccd33818b2.png\n7fa12eba13.png\nb397172c0c.png\nde1d3a9266.png\ne45d4eb76a.png\n0823602363.png\n715df66304.png\n545b319e46.png\n966bf8fd8b.png\nd2c8d1b1d3.png\n8688b0a79c.png\n63c8f10d71.png\n48a0396892.png\nf14ba9dae4.png\nc8b6b2c92e.png\n20792970f8.png\n14af3853d2.png\nf96854d4b7.png\n456019cf5f.png\na4b5244207.png\n9cf74c6432.png\n6519dfb0ad.png\n6f5da258a5.png\n76695059e8.png\nf4ba0ceaa9.png\n90b140c01e.png\n785a5c800f.png\n25da96a64b.png\nf55a5f089d.png\n22e67f017d.png\nf330cc6dac.png\nd446b467a4.png\n52b4fe7246.png\n50563e717b.png\nb1e6235974.png\nb5469f2eb9.png\n8b2a9f576a.png\n986d0353be.png\n91cae16c03.png\n8920afbcd2.png\n3f277a3bb2.png\na4bf75108b.png\n38e9ea8346.png\n271b964887.png\n2abbb11546.png\nfea15039a7.png\n90eef5ba6a.png\n1053f64ac9.png\n048763f628.png\nbbcd7567ee.png\na7434c600a.png\n5f487741b7.png\n19dc3b6402.png\n715e37b25b.png\nb805aaf6ed.png\n14ab406aff.png\n9a9afab314.png\n60a54aae83.png\n826805973e.png\ne15d1d1c7d.png\naed7e87d02.png\n615b89367a.png\n609d7d1c49.png\n2df90133e5.png\n6c2c6de49a.png\nd6ad336745.png\n45e6edb850.png\n44ac304502.png\n2e10314df1.png\nb19db02e8e.png\nfced196fe6.png\ne563ae7e9c.png\n9d567894cb.png\ncbd2213768.png\n1190a333a3.png\n7b9fe6b1b3.png\n3011a7f48d.png\n810e964fb7.png\ne06234311a.png\n5d1be3b238.png\n56e6b6e780.png\nad0bb529b5.png\n9791e4eea4.png\nafca9aebdb.png\n0267db6d11.png\na77029244a.png\n60738ba31e.png\nd588077d84.png\n42a7f9ac30.png\nc9023ac460.png\n1d6a8f9dcc.png\nb46c37a0a2.png\ncb956d972a.png\n3c58a45fc6.png\n960a4b6a0e.png\nfdb2660fd9.png\n0094822667.png\neb46e70089.png\n9ddf722913.png\n4899b0b50f.png\ncd260624b5.png\na05dea8cff.png\n9d31575469.png\n2319827c36.png\n1b1bf5bd6b.png\n23606093d7.png\na964a0f499.png\n03672c1b75.png\n6c5770c91c.png\n51f091af03.png\nac9cb56c91.png\n89ad7bca6d.png\n4fcfcdafb4.png\nc2d0892947.png\n3d64a3515d.png\n2ed7843982.png\n6d42396edf.png\ne1d6f165cc.png\n4e502a4a1f.png\n0a194d3828.png\n58cb646a9b.png\n0ce2690857.png\na2d7f0563a.png\n6ca8842553.png\n5b6aa79adc.png\n0e37560ba9.png\n5e583467a8.png\nc9005cebc8.png\nc06acdcf08.png\n4a07a46b1d.png\n2849772dd6.png\nd830c44d12.png\n065c07cc06.png\nf9193e9a6d.png\n58627a9dba.png\naf7cdf8534.png\n6997ae1756.png\nd22f0a172a.png\ne48aff427f.png\n0c44f43875.png\nd8da34b265.png\nfb5c32dad7.png\n68aa2f3bf4.png\nba3441fabe.png\n7ca695f191.png\naa649ae84e.png\nc80354dce7.png\n0d0a5591c7.png\ncb79c2c1e3.png\n4d3a5d287e.png\nff7e13c3c5.png\nce13104347.png\nfa899a655b.png\na670e833a4.png\n77e92f7157.png\nca8b323d7d.png\n189dcac15c.png\n1c9a942d22.png\n092c6bc422.png\n632d03fc18.png\n8865bb8294.png\n2b2cafa2f0.png\ndd65f1856b.png\n66120fc984.png\n93ae9f8df9.png\n7643966f2f.png\n9641c4ccf1.png\nfadacca720.png\n4e6fd7ab9c.png\n930666ce82.png\n4dc47d5ffd.png\n4b07eed60b.png\nd308b0b2aa.png\n91f656f295.png\na1cf9fdfb9.png\n72606ea7e2.png\n9b97dee78e.png\nfb56c30236.png\n9617049802.png\n5acfbf7ae1.png\nc09b502837.png\n4c0f207a50.png\n77b07e34fc.png\nef00c008bc.png\nbe4a1be61e.png\n043bcccc79.png\n2d0eaa0a25.png\n4e5a439e1c.png\n878d489fa1.png\nac90614072.png\nae4c9f8061.png\nf025797d80.png\nfac01da8d0.png\n677149a1a7.png\n6dc54e0021.png\n38daf12dba.png\n728b34e175.png\n5bb0dceac1.png\ndc690b4c89.png\nbf92688cf3.png\n9d4c306750.png\nf8ae2a094d.png\na9066a933d.png\n07fc2c8e9a.png\n6b8b1e7ad6.png\n3c89b5b635.png\n4f136093cb.png\ne64b6d27bf.png\nc0ca73758a.png\n5ef14acc13.png\nd6275b7ae5.png\n6677cfe3c6.png\n608e51e49b.png\neba8908805.png\nf83ecd0d61.png\n10bb0dfced.png\n10fe79fb2e.png\n721b6d7dda.png\n990d808b85.png\n60b08464de.png\ncd48ef3def.png\nb4602ed79f.png\na6192703d8.png\n6754a6fdac.png\n364b6ecf01.png\nfa87eb3962.png\nbd9e699850.png\nf069ae9d86.png\neb4bc6e2d6.png\ne671d3f744.png\n3c0b4f4c0e.png\n6aa0d8db82.png\n53fb6926f1.png\nb148e3561f.png\n51ad23de04.png\ne37551bed6.png\nf756a811de.png\nbb7ff4c697.png\nda4016987e.png\nd76292283c.png\n399f7b1816.png\n6e86ef999f.png\n2fdc5ea9d3.png\n37db34423c.png\na35cab481b.png\ne2623063bb.png\n5157fb22d8.png\nba0b91bf45.png\nd6cae22fc0.png\n8782cc7732.png\n508213f8ca.png\n05e8012e5e.png\n6a484cdfa8.png\nc003af5c7d.png\ndbec4fe1c5.png\n689a03ea18.png\n4bef5a7d3a.png\n0be104dd37.png\n21120f34d4.png\n989a91d6ab.png\n403b12a81f.png\nda0338c297.png\n80f65d6da6.png\n066c01d461.png\n3d653d9577.png\ne162057e32.png\n97e2dc7222.png\ne93981eb89.png\n8d5cca7374.png\n7bf748aa2b.png\n567df9b888.png\n3e72a48ef4.png\n5cfcd47740.png\n61991ac001.png\n9ba1866dfa.png\n2ed02fc499.png\n7f8df64318.png\ncff4eaf93f.png\nedc0dc3a4f.png\n0c6036a506.png\ne53f18894a.png\n436aaf7e67.png\n973fa28ef3.png\n00c6225718.png\n24caedea87.png\n2d6d0b8ed3.png\n3dff1a7114.png\n2c76837632.png\nfa0beb5007.png\nf3df114520.png\n15a7e201ca.png\n0e57d9d4c9.png\n7529b6d062.png\n6d3a5ecdab.png\n075c30e2f5.png\ncb8d49e61d.png\nf89138fa75.png\n173073f1c8.png\n59f63d1a95.png\n02208cc8e1.png\n03933bbd6d.png\n510e8c243a.png\n4025c0ac8e.png\ne05b637f1c.png\nbf18760706.png\naebf30c3c7.png\na527fe6bd1.png\n7cb65cc6ea.png\n8f7ad537ab.png\nc0cf5a03ea.png\n988251c854.png\n862eb1262d.png\n11fe4dca71.png\n4b3f1d969f.png\n22ca08b636.png\nd18868570d.png\n0cb8a3d070.png\nd3a7f52f0a.png\n3245d14eee.png\nf1c3f0c377.png\nf6c03c0af4.png\n426e71086b.png\ncf5dcf33f2.png\naf3bc2fb94.png\n1f7f415bed.png\n75dda4f3d6.png\ncb271e243d.png\n4cded6760d.png\n982eb40781.png\nd33ac09d91.png\n42bafd5bec.png\n010452a624.png\ncf3c075df1.png\n6c33bebba4.png\n0fd7ee2ea9.png\ne4b6946a28.png\nf2597ddd76.png\n60affd7e45.png\n7d9b2f9402.png\n8bc62bdef7.png\ned2151b47c.png\n86d3b7c932.png\n32c6df82a7.png\n35155f4bb1.png\n4358e27e18.png\n351d8ccfd9.png\nd2164759b2.png\n20d90748b2.png\nfe9ef2e02d.png\nae13bcc892.png\n4b643eb181.png\n8f29c5d348.png\n707ae290b6.png\nc551ed5fad.png\n75f421cca0.png\n509e612741.png\ne67ad4fc61.png\n4e80e2cc2c.png\nbabddbeedb.png\nf29d14411d.png\n184a687046.png\nffc8978fd2.png\n050da9c564.png\naad709fe6f.png\ndf72029e4e.png\nfa3575af98.png\na1bd5af287.png\na1465a9036.png\nc8f06b6aa5.png\n2efd3776d7.png\nc195df04f5.png\n1559e04eec.png\n059ae59b4f.png\n72f5a4b1f0.png\n562f848c07.png\n6efd749560.png\nf43882a92c.png\n8fc3eccd37.png\n3108f0bfec.png\nd17759d2d1.png\n651873c256.png\n62ab055b81.png\nbe9cbe601e.png\n41e672b66d.png\n2fd67fc61d.png\nffc7accfe2.png\nb46364e795.png\na5fc503220.png\na84bb18e9f.png\nfa93747e87.png\n3fd3788e31.png\n3255c8a764.png\n14353ee720.png\ncabcae01fa.png\nf6c2cf9470.png\na2ad71b576.png\n71cd2e2d3d.png\n616ef89f45.png\n6fe5709361.png\n8f1649cfba.png\n5a1f5d188d.png\n97381917c6.png\nff7a7f0d93.png\nb465487b3e.png\n34a2e84c01.png\n9fb88ef17c.png\n035922489b.png\ncae5f3c6fa.png\n7cdc7ed0b9.png\n2b65f74905.png\n2b4c4aeecc.png\nbc2160ec16.png\n9ef54fa6eb.png\nc47b1ac061.png\n3ed7b7577b.png\n25b466a5dd.png\n065d95e8dc.png\nfdcf50e18a.png\n3de4ee4e0c.png\n71c0f47b6c.png\n5436f8e94e.png\ncaeaa21d24.png\nca9f801c0a.png\n25fd997ffa.png\n87ded295b9.png\n10dc83d62f.png\n4ea67ddd37.png\na6b21886fa.png\nfc244e24dd.png\ne735f7b212.png\na05a91dc20.png\nbd7f4cb2c4.png\n768b7a5955.png\n13df1a9d29.png\na81b4d2453.png\n73547e4381.png\n40c65da2ad.png\n3a174d4c0b.png\necd4c52bd7.png\n50fbd415fe.png\nd9f9f7ba0d.png\ndf8ebf4571.png\n083c487e4a.png\n893f6e0f7f.png\n69dde91f51.png\n49adbea04a.png\n3eefb6f02d.png\n343a049d60.png\n36dcec0996.png\n784d0bfad7.png\na4fec99d30.png\nb7b72a69d1.png\n22f1fcd47e.png\na1abc4d779.png\n97ab9d8f26.png\n5e5447c74c.png\n48b79d6237.png\n3c937cd300.png\n538bfcfbef.png\n5f55c759cc.png\n0ad7dd5b44.png\n581430fbf1.png\nc752672e83.png\nd106946488.png\nc593c4a497.png\nbc6c1c7006.png\n838e2cfbb1.png\n6902873ebf.png\n22b3c34606.png\nffa51f1bc4.png\n277bd3a647.png\n0ace75e142.png\n5320f9f579.png\n60e40140e7.png\n50e4b38d46.png\n38599bb2b5.png\n4031759c78.png\nbb62954978.png\na43ca4f01d.png\n56babd544c.png\n7bf9ae630f.png\n472d0bfdce.png\n821c0444b3.png\n2c38be5eea.png\n9029480222.png\n781ea1465f.png\nf0e2b7c039.png\n1b44199942.png\nd89411d9d1.png\n4f718f6704.png\n8e6a55c1e7.png\n4a0a6965fa.png\n356f233d08.png\n82385cd8e9.png\ndc1ec1396e.png\n947bd72542.png\nef449747d5.png\nc96eb8eee8.png\n7551f356ce.png\n540c76e5bc.png\nc2879bc657.png\n24af93594a.png\n4d808c34c8.png\n1602c8b05b.png\n558c857cd1.png\n88362ab4e5.png\n6a9c9598eb.png\n76990c9738.png\ndd01adda98.png\n01f91c6197.png\n0bbaa6d56a.png\nc4d31c5319.png\n384a44c635.png\n862ad92176.png\n0b4b5e2bb1.png\n174bc625a0.png\nfb8cd151ce.png\nf01ab39d6f.png\n15cc715515.png\n17cc9250e9.png\nab2670448a.png\n26943026b5.png\n221f271d8a.png\nc5dbddb17e.png\n45b110b2d7.png\ne4b76c6f69.png\n0d3dd984a6.png\n66fca3e5c6.png\n4bd819a267.png\n0854a2336d.png\ncf8ad2b1eb.png\n50acc0ee96.png\ncbe5d89ffc.png\n573dad0ffb.png\n85f4838aec.png\na056a19d45.png\ned6c8fc9be.png\na7ec866668.png\n84c15cdca0.png\n70c40f648b.png\n5eafa5297b.png\n5ef4baab15.png\n686437c2cb.png\n57e8104bca.png\n54964f9bb6.png\ncc45eeeafb.png\n6bcf6c19bb.png\nc3c25408ae.png\n98af17c0ff.png\n0460ed00e4.png\n9e28ecb2b1.png\nf04de5e206.png\n46ce54f66d.png\n60bdccece7.png\n76ff83530d.png\n0623c74e99.png\n6d0ea586a4.png\nd87eca88a6.png\na2e625f222.png\n92357f8a9c.png\nc6650767c2.png\ncecf808839.png\n3484c36b51.png\nda1577ebcd.png\nbcae4cc8d2.png\ndb79147c92.png\n604dafb545.png\nab647410b9.png\n9e4e6733bc.png\nadc797b5b9.png\n35f233e10a.png\n30b166ac76.png\n6ed4e5215a.png\nde54a0fc4e.png\nb13910ee1b.png\n4bbeaf32f1.png\n89e3fc01e4.png\nb50aa287f2.png\nfaa76d8a7c.png\n103811d8af.png\n9c2cab0be5.png\n901cf47850.png\ne7a09512ea.png\nc7dbcf550d.png\nfc6750f468.png\n4edca0711e.png\n48ca300f39.png\n580172eb67.png\nb08170c5f3.png\n76df3b1845.png\nda07ac2a52.png\ncde189305a.png\n35856d2bdf.png\n5ea1fe5010.png\nb7275ec255.png\n9ce70fe066.png\n03f991ef8f.png\n7fa74fdeba.png\ne599fabb46.png\n153558a258.png\naa88fc4124.png\n6a06625d6a.png\ndc7da3a2cc.png\nc5a4dbdd1a.png\na611a75229.png\n1a14ae3468.png\n73a1614bea.png\n0e9c3b837b.png\nb6100c2809.png\nba82685b51.png\n81563b7b32.png\n8054361dfd.png\n92eaa4c1c5.png\n7cdba71b29.png\nba1ce90692.png\ndf6e53387b.png\n1ef0b973fd.png\n98e18540a2.png\n4998016777.png\n60bc283617.png\n452e3918f7.png\n3ca18312a0.png\n985b25f2b1.png\n524adc6537.png\n882fe73d29.png\n593421be30.png\nbbb8eb87db.png\ncbd6daf292.png\nb64a39eb97.png\n9321025f07.png\nc8479fe755.png\nfd82a91d3b.png\n2aa5771b5e.png\nabbed11be4.png\nf3103f4418.png\ne196178f53.png\ne2313f87de.png\ne4eb890966.png\n3f0e97ff77.png\n9e48a469e8.png\ned415f29eb.png\n54b1cff49b.png\n788cb5df86.png\n241f9702a2.png\n11b18944fe.png\n6389a7688d.png\n3653f28f67.png\n330e786de1.png\n8f57714896.png\nd94be52713.png\nd5dec361aa.png\n1e3881f1e0.png\n4efbd07c56.png\n8884856272.png\n628d220a0f.png\n8fc42d8cc9.png\n892cdf8eb5.png\na139ee59f1.png\nc14e1cad20.png\n64431a59f4.png\n3f43f2850f.png\n926a4a511c.png\na66dd1f283.png\nf7677ef77c.png\n7c3081a812.png\n141f29d8b3.png\n92eb4aa6e4.png\n0f3af50fdb.png\na984e630ab.png\n2aa72c7903.png\ndf7c813622.png\na4ee1a0e9d.png\n7ff1d00b47.png\n791ca7c91f.png\nd02a7dc593.png\ncc46103f98.png\na8e3f97611.png\n6b28e2f3f5.png\n8590af360e.png\nf1716e0716.png\n0852944481.png\nbce80dc1da.png\nf9bb50511b.png\n3983d723b8.png\na8ee53877f.png\n5fea3149b3.png\nc96f52ba7a.png\n973038e1c1.png\n01572cfbc2.png\n0cf56f5ff9.png\n521675c678.png\n1bf3d27d55.png\n14241c27ef.png\nb20a70b6b7.png\nfeb0134117.png\n693ed8cd99.png\n15a7893aaa.png\n8cb504a3fa.png\nb97fc0a32a.png\n2890995b32.png\n5d91db33fd.png\nd03df054cf.png\n71ba21f967.png\na35dded5b4.png\nf50c1f8bce.png\nb4836d1c53.png\ne3bf961b41.png\n5c7e257630.png\n1173fe4941.png\n0b925d4e8d.png\n925d995276.png\n4ea94e932a.png\n301595fcd8.png\nc9bf362410.png\n923aca4789.png\n7ad42439bc.png\nf0d7632959.png\n5bf6104412.png\n639dbc4799.png\nf355185623.png\n32a4fb558d.png\n8d641d2e8d.png\n4519bf6347.png\nb789820d77.png\n50b21b7971.png\n86e7716f79.png\n2c6e23e219.png\n35f1574879.png\n989c646373.png\n69253f7efc.png\ndc0eba53d6.png\n4ce2883ba3.png\n4983760174.png\nc8598ec93b.png\ncc32da1b7d.png\nbc2bb48583.png\n9b024c5953.png\ndb373ab7b6.png\nd9764a65ae.png\nff763fc36c.png\na16cf0126e.png\n0d31971e2f.png\n7a67a57455.png\n2822b81a5a.png\nf0bc803eec.png\ne6a986f6c8.png\n71d5d55932.png\n5850ff1f52.png\n883dcbd352.png\n3c565576bb.png\n6a436d7460.png\ncb5926b32e.png\n20b02228c7.png\n14e3d2f19d.png\nb249b1f476.png\nbab9a78e8e.png\n241f5d63c5.png\na48ffd1f27.png\nb3f377a7e4.png\nd84e84d367.png\n64dc981415.png\n1d6266dfe6.png\n7f6ad34bcf.png\nf199e2628a.png\n534591738b.png\ne439ae5e8c.png\n91458415ab.png\nc427e869c9.png\nc97a78e54d.png\n43f9b2d59b.png\nb67b1a4db4.png\n133e16f211.png\n7bcb61c3bf.png\n56eecd7fc0.png\ncf63fbd55d.png\n437f1c2894.png\n791d8e2d30.png\n918e6952a0.png\nf0345fbe7e.png\n8d9e8acc95.png\n1557139238.png\n86f8e8b9b0.png\nc877496b7a.png\ne50d3d420d.png\ne32b064308.png\n33d921c28e.png\na92c322fcd.png\na8e3c96ae3.png\n9b2ad9f14a.png\n4bb7ebf911.png\nc7f9a5ab36.png\na388900be9.png\n38285ef00d.png\nae1849dbec.png\nb178921d26.png\ne133ac97fd.png\nb4b9723956.png\nbd73a889d6.png\ne196a48c94.png\n209c3eaa70.png\nbf8d1fb21d.png\nd49547ef96.png\n1bb3688821.png\n66276f7cf4.png\n41ae01a47b.png\nbb364faea2.png\n72d5c2e914.png\n4071fae726.png\n27f1c2b267.png\n2afe87d240.png\n625d4d8487.png\n256f6c133a.png\n60a06c3078.png\n400f822d93.png\n3a8da5dd51.png\n4ba8d5d08b.png\nc771f34634.png\n775be16cd8.png\n21f1e10952.png\n0ad15731c4.png\ndb00870dcd.png\n2c07634387.png\n523ddc787f.png\nbb6179387e.png\n5ea341abf2.png\nd5b2dbbbf6.png\n7161efbf0a.png\nbb8a9f2aa7.png\n18184347cf.png\ne1c2f954a0.png\nfa1c58a6c2.png\nbfeb7b1e93.png\nd1d7ed06cf.png\n6b9fb67be5.png\nb0308268a8.png\ned5515c950.png\n65c5edcfa3.png\neb942a7ad0.png\nc88d7d3c76.png\n088f1c6ae1.png\na9aaafc24b.png\nf70f6a5336.png\n069c7fbb03.png\n5403a9d43a.png\nf734abe528.png\n914945be12.png\ne8c919c8ec.png\n1cfb3a3092.png\n3fb7ca35c9.png\nde99730157.png\n1c900e9782.png\n6102cfaeb3.png\n966b96f8b2.png\n50d689da2c.png\n9913721ee5.png\n86e3475645.png\n4703aadcb4.png\nb4a88043be.png\nc50a04f278.png\ne5b07450e3.png\n2287d5cbbf.png\n395b3fdd18.png\n9f0ccd7979.png\n8655a31d30.png\n4a91733da3.png\nc54981fe30.png\n9f54b45a74.png\n9a4d43460c.png\n401310594d.png\n475e27d13c.png\nfa17bef99a.png\nc3789dbed6.png\n1f4067e73f.png\n216a741f7e.png\n7f6d43202d.png\na71b76545d.png\n30f1ed8caf.png\nbcc816b619.png\n4d2778b117.png\n3e85318809.png\n94b1dd298b.png\n696d91b37e.png\nb427cb176e.png\n8b88631559.png\n0493bb7894.png\nbd125b1dbc.png\na9ff5638a1.png\n7a1f58855d.png\n1bde429ee9.png\nac1c1262a0.png\n076c17198a.png\n737f39881c.png\n174789f4b8.png\n3b474dfed2.png\n0be517d0e6.png\nac4331b411.png\n8567ff7170.png\nfd66ad582d.png\n93c8f958ce.png\na310519345.png\na58f7bf642.png\nf08c404497.png\nc97455657d.png\na3d7e18515.png\n541f392605.png\n7f1c1802d4.png\n9d22a9e14a.png\nb5768c5204.png\nd9d75842cb.png\n0b37e26016.png\n88291780d6.png\n76de89d0eb.png\n4f9748f56b.png\nd1bc239adf.png\n9bcf7863cd.png\n9290c42ee0.png\nb65d1b12f9.png\n8c9df5d510.png\n642057611a.png\n55714a25e7.png\n5dc3703d30.png\n186ec3704a.png\n8597ba8dc8.png\n8f7fd55a76.png\n1e37c0eae8.png\n348232af8d.png\ndd8bdd9081.png\n2c6dbbc57c.png\nf460ceb65d.png\n43f87dfde2.png\n00565e793d.png\na52cf1d9ea.png\n2a59f72960.png\n097031e22e.png\naad8794a12.png\nf6143e3cf8.png\n0208be7868.png\nb2d2042049.png\n0ceb9ed723.png\ne4bcdceb27.png\n3a7f0d0bc1.png\n6d0e37599c.png\na53f55e67b.png\n1e62978cc9.png\nec712f4129.png\nad513e2b36.png\nef60d10f12.png\n214bee1aa1.png\n4273671d5d.png\nce00ad751e.png\n3ecb0db5bf.png\n8bf21420ad.png\n8c666c6eca.png\nac562c9a1b.png\n151a1098b1.png\na07b40cd8a.png\na2116f6ae2.png\n4d92d49210.png\n8ba1b78c2a.png\n9388190e1d.png\nc60bdbbcae.png\ne49ab753ed.png\nba4c45d323.png\n3c4352ff4f.png\na4066d42fc.png\nd5e7b5a6a4.png\n7ccedd8742.png\nb5dd684e36.png\nb9789d9734.png\n4878809292.png\n39e91d3247.png\naa794b2756.png\n2ba7fd429b.png\n7b238266de.png\ne04d9a0afe.png\nd8bf9761f8.png\n7296069bfc.png\n4ef659421f.png\n76dbac3910.png\nff608418c1.png\n28f031b89e.png\n70b7e1c459.png\n9a1a93a217.png\n9cd8e831c6.png\na945ecdcc9.png\n300c287220.png\n61934728ec.png\n846caee6e0.png\nbc77c9515b.png\n11985f826d.png\nab99fc85b6.png\neb61ff3bd3.png\n7815ce431a.png\na588bcb650.png\n10968dea34.png\n3ccbc353af.png\n6fea77b2a6.png\nb8116cd3ac.png\nf5ffdccdcd.png\n01fd9581f6.png\n2a3b0dba1c.png\n238a3c6d9d.png\n41bbbc3c6a.png\n964f6dab2f.png\n49f33f1832.png\n73eb0134c9.png\nd97e6ffda3.png\n6ba0ff2b77.png\ndb658c5ade.png\ncb0d2bd803.png\n64d8cbc1ab.png\ndd606ae1f3.png\n811fb98143.png\nd96c4efcda.png\n7b85a10a19.png\nbd48b27bd3.png\n102a7ad32b.png\n208be81c7c.png\nc5e7ec3c34.png\n5fdd07c869.png\n244d2a8082.png\nc9cbf72057.png\n4a26fdca60.png\n0a90963914.png\n7e4af53bfd.png\ndcdfb81371.png\n0227b5b765.png\n012b7b5cd0.png\n44730f65b0.png\n256c00d426.png\n4d1d5d9d62.png\nac7300662b.png\n01a48b1544.png\n12ab19091a.png\n5113517acf.png\n71432420ed.png\nbd21c7615b.png\n3768877c25.png\n8995f21618.png\nf3b3d14146.png\naeed80472d.png\n74ef894c55.png\n3d6452e27a.png\nda5b430ecd.png\n9b3112b0b6.png\n3e6a6c3c9b.png\n2d05dbfff2.png\n89daaf02d5.png\n873f6cdf33.png\nb12bc217f6.png\ne6285f497c.png\nd832b3d757.png\nd43e2382c9.png\n74a717ddcb.png\naef4309602.png\n971ff26c0d.png\nef532b1d90.png\nf97e33f4a0.png\ne88de6b8fc.png\na7fbaa2e3a.png\n6952ef1a14.png\nb5f5cb0885.png\nfdda40625e.png\n568d051da0.png\n16fe0e5148.png\n8620edf732.png\n751796a6b2.png\n6bd3e38587.png\n5e3ddc6340.png\n26afdd76b5.png\n9accde1974.png\n35c5c1e757.png\n301bb33659.png\nbedeb394ba.png\n8f22918dcf.png\nba3558504f.png\n278c81f164.png\na490a68472.png\nd7de9e7fd6.png\ne49b5c4be8.png\n0bb14b8c19.png\n2b80686da1.png\n90cd0edbf4.png\nd1368abea3.png\n4ca0c2e20f.png\naf773ea8ed.png\n9d9b6f17b7.png\n1a2b9fc0ef.png\n8b6939fa74.png\n707da802b9.png\nc09b5e92cb.png\n42e7632c3c.png\nd4ce2a2530.png\n0cc25fed1c.png\nc23a260780.png\n8b9135cb6e.png\n543e8ef480.png\n3f20bbb54d.png\nd81b53a8c1.png\n35d30e4e6d.png\n041bdffed0.png\n773533b10e.png\n4a51c8b3bc.png\n240b3b3de9.png\n0a6b2cea49.png\n5f0b4e4389.png\n201b6ac1e0.png\n866fb53024.png\ne423a30632.png\n7ea0fd3c88.png\n2114e8d6b9.png\nb20f6fc0eb.png\n4200355d17.png\nc316ff21b8.png\nb3c8b426fb.png\n71abe009c6.png\n08ea9862c9.png\n59a07f8b50.png\n232a5c4634.png\n290082cd0a.png\nfb7cc4bd6c.png\n10fb725cfb.png\nfeaae39fc4.png\nff2cfb99cd.png\n398808ab1f.png\n23a74b714e.png\n4409f74613.png\nb6ef3d7ed7.png\n6e9164c1f3.png\n6849022dab.png\n0599374285.png\n4cf9a64333.png\n475986aa57.png\n72b009939a.png\n53a81ace9f.png\nbd572bed64.png\nd2db3c72fe.png\n7caf9364fd.png\n6182e7e891.png\n3ca7a95c42.png\n6b9716ffbd.png\ncb7a4519ac.png\nf28310a865.png\nf0c9aa2b32.png\n8e632c2239.png\n172d24f19c.png\nc8cf8823a0.png\n9a5e7fb405.png\n11ee5f9682.png\nf0c3cf012a.png\n40ab4aa81b.png\n2c4e9612cc.png\n44970cdc57.png\naf02eda909.png\n8c09cba826.png\n81a05f393f.png\n6f48dd2861.png\nbcd6012819.png\nba36fddbc0.png\n5a7566a915.png\n9cb3e373b5.png\n7d6e95d2d5.png\na94a59fc55.png\n53f7dc0824.png\n1533770ecc.png\n674653f58a.png\n4ebf1a7500.png\nfbb223dbe7.png\n2d6c9ecb08.png\nbb5d74ece7.png\n49c3f16b62.png\ne0cfbb4d1e.png\n27f63c56a0.png\n33f4067402.png\nba22bcb515.png\nec7e0e98e1.png\nd6f318bd6f.png\nc11c6a374c.png\nb7b9702887.png\nb019443c23.png\n64d1275e94.png\n305e3dc5c7.png\nb6b2115f33.png\nbab8c99a60.png\na8a86d7d11.png\n53558f2db4.png\nd520e24c96.png\na7221c24e4.png\n4957366c55.png\n9c462097d0.png\n6c53696981.png\n287457855d.png\n25adecfb8a.png\ndaa59da19e.png\nf889a20f30.png\n1b4c67f0cc.png\nc37b8373f3.png\n703cc2cdc7.png\n939e2fceef.png\n55cd46afec.png\n1cf2b64739.png\nd9076d4917.png\n1eaf09c1bd.png\ndb68ab6d70.png\ne388ed5fb9.png\n20ce0bb46b.png\nfd2f09d544.png\n5a48d9f7c9.png\nbb5953d161.png\n533f1cfb17.png\n942b755ac6.png\n3b71213533.png\na8da16b97c.png\nfc0cec9297.png\n80bea8ddbe.png\nb95049835c.png\n75ba3f1b99.png\n55bb514332.png\n483294d654.png\n6d9baf0d42.png\n64ad05c7f2.png\nfdfaab1f5c.png\ndf64563d9e.png\n6b5f03996d.png\n48a9647ade.png\nba16f363d7.png\nf12d23aac8.png\n5220b448bc.png\nadea138b16.png\n810309305f.png\n64423dd98b.png\ndc501d2cb5.png\n06e2664df1.png\n27e4bd625d.png\n5398848bf1.png\n0d2bff49ea.png\n1c376a8287.png\n70ca23bd65.png\nffa64b0acf.png\n79115207b8.png\n9431677217.png\nab01feb861.png\nd53feca9be.png\nbd90397780.png\n034210b100.png\n27882d27ff.png\n4dae5d1e28.png\n42f3ec73d6.png\nce4a1c6a57.png\n5411bfa79c.png\n0b5da62449.png\ne83222698a.png\n6e416c1a91.png\nd61a3ab831.png\n3825b66859.png\nee4094ce85.png\n18c28327b4.png\ncf52335730.png\n1dd78bd5d5.png\n7f954be7ab.png\n115623101a.png\n3417ef817c.png\n7f14677274.png\na4c5fdf614.png\nf4c0be9dbe.png\ncb4e3c72e3.png\n9e3ed814dc.png\ne97a3e5acc.png\n9011eda704.png\n53d3cf1ae4.png\n3bfe771dc8.png\n9a21f73ad4.png\nfde46e4a24.png\nf22304afd9.png\n6521203218.png\nb614e76921.png\ndbdfc912ac.png\nfe3d670457.png\n7266925b66.png\nd2bc78e5ce.png\n85d4a097a1.png\n43311d0da8.png\n1c2ad559cc.png\n4775e574dd.png\n34c4081c9b.png\n3175807e68.png\n824e666e6f.png\n1a8b38f45f.png\n2b068f2f40.png\n841ebfb96f.png\n68efd1662e.png\n464b563944.png\nb1fd7719e3.png\n702315d0b7.png\n359e6a043b.png\nade714ba38.png\n0860568fe5.png\ncd0ce1b45b.png\nd4952a2854.png\n8bbcef76bc.png\ne4afc92300.png\ndc86b26706.png\n00c153007b.png\n6945362fd4.png\nf2a038cbd1.png\n3a37009a34.png\nac11aab43a.png\nf80f1932f1.png\n380bf23f4b.png\n91c3046e29.png\n5f5b77cc1b.png\n19809089fd.png\nfde6627282.png\ndfafd0bad1.png\n7ca4629653.png\nc221839b8f.png\n308bdf2973.png\n9b29c91d73.png\n189f543aa7.png\n1069817f2b.png\nc9f2c6ab45.png\n429f9cc0c7.png\nbb66632dea.png\n658219f5b4.png\n1a0a056dbd.png\n2aa4bae403.png\nbf21540fd5.png\n2bfe87d488.png\n398c285d13.png\nca3d34d73e.png\n04300886c1.png\n61a61114b9.png\naec95a704d.png\n45ad1de292.png\n04d05430ab.png\n395b9609f3.png\n7a49ff1a46.png\n497626af88.png\n6adfb31724.png\n6bce96251f.png\n0706b7541a.png\n8a6ed0439b.png\n7704608969.png\nac0dfa8b51.png\nbf1bd5c21a.png\n2d2b303e07.png\n0be00ec340.png\n061a8ca0db.png\nf81a4dd023.png\n36eb8d9d53.png\n800b9f8b72.png\n71930621da.png\n9a954c3db7.png\n4bd87bd3da.png\n5466ce802a.png\n26fa7eb03e.png\neb2313684f.png\n25ec60d1fb.png\n9652e27bdc.png\n5954dc3bbb.png\n7eb6261dcd.png\n955155dcfc.png\n176e1cf804.png\n63ee7113ff.png\n0bab031d59.png\n7b5fda3922.png\nd04d504efe.png\n68e3ae2fd2.png\nf518cd6d26.png\n85460cb29e.png\n88ee6e1988.png\na23b79953c.png\n55dc884bd8.png\nb4cc869bd0.png\ndb8f57831b.png\n42707233b9.png\n606f5503e8.png\ne1b367d535.png\n704de84fa8.png\n60e7b5d738.png\n7a7cac58b1.png\ncc28f19bce.png\na00b575195.png\nc50affbe08.png\n002af5d1e8.png\n1b8d23755b.png\n1817464894.png\n9e897a76ea.png\n9a74757d79.png\n17df5aa486.png\n0da877df19.png\n44e630bf50.png\n6de89340a5.png\ne938c76532.png\n18bbbabadd.png\nad870f48bc.png\ne2b680135b.png\nf8e39bd61f.png\n00f342f248.png\n4d5bd7f272.png\nb5137b993b.png\n5d9c2a8469.png\nbbf8b15a50.png\ne2b83ec618.png\neebb71c6e1.png\ne3bb9c881a.png\na3a6c8f3af.png\nf66f46d2bc.png\n4a624a202b.png\nb783c69710.png\n85296701e6.png\nf1633d5b80.png\n85703ee290.png\n4bfa0bfa8b.png\n4392b160a6.png\n0b0b0362be.png\ne3bd0d2365.png\n8f1145f250.png\n4c1c8b3774.png\n6c237adaba.png\nde3b4d9046.png\ncd90c05864.png\n37ae46fab5.png\n0d5b43b41a.png\n3f0d544cae.png\n4a723a302f.png\n6f75868949.png\n31729627d2.png\n1290e11543.png\n06f467360f.png\n03733663ac.png\n0692b505d2.png\nd5bcc73a21.png\nbdf438ab78.png\na94a0b7780.png\n14411bfb9c.png\n035d178826.png\n590ba9d838.png\n1548834d01.png\ndeb1b058f8.png\nbdbf180bb4.png\n6c05e03941.png\nb4916183a5.png\n1436c973af.png\nf731d8930f.png\n17bfb214ad.png\n84cce35d7e.png\n28a5f65cc2.png\ne4f2783759.png\n764d1a6614.png\nf6a757cbf6.png\na5079cb93c.png\nd238d7beab.png\n420ed132b9.png\n2582af5390.png\n53f97a1a88.png\n0c096431ce.png\nc19973511d.png\n1374727444.png\nab827ecd91.png\ne469859cd3.png\n6908a36e6a.png\ne953b8fb9d.png\n23416531ec.png\na453819463.png\n3c16374ea3.png\n79e2069243.png\n3e7fa000c7.png\n7c1728d80b.png\n7e9c4e3932.png\n84f510947a.png\nc6466c2752.png\naa7589fa21.png\n6ce2fbd852.png\nec80a4212e.png\n44c903a754.png\nf37a2afb5b.png\ne246e54bdd.png\n539c2225d3.png\nc8e691b7ba.png\n4ef8c0897a.png\ne50041b85d.png\n1c920e3604.png\n6ee6f38517.png\n4ff25e6999.png\n77cd801900.png\n45f9b71a91.png\n2087cc2916.png\na2acd2c458.png\n6afae09aa9.png\nf86c86466c.png\n3a489c31f9.png\nafd4f54ea5.png\n354c3a5d44.png\ncc63e9b444.png\n7c8c827799.png\nd800b91a5f.png\n0e4123fff1.png\nbe5f65573c.png\n7cb7fb97d6.png\n9ea14bcead.png\n7285733d96.png\n184cf35640.png\n2a4ceb76ae.png\nf0f3922d30.png\nea301ffabd.png\n227987aa07.png\nc51176fe44.png\ne4872a93ba.png\n7889812661.png\nffb3be0fa8.png\nd923825e05.png\nfe4930a905.png\n88957d4b3f.png\nee6357ee64.png\na067c4ea5b.png\ned4711ab1d.png\n155eb0affb.png\n83fdc47ff0.png\n55ce36ea90.png\n202b601141.png\n67fce30109.png\n06d4212fca.png\nb06aa2ee78.png\n47abe23212.png\na64ebcbf08.png\n46a94d4190.png\n8a588ad1c0.png\n398c678c04.png\na0d7c5dcbb.png\n2bcae75a7b.png\nf76ac8de40.png\ne325b6388c.png\n5d62a981e7.png\n9aad618687.png\ne13bcd6e22.png\n1717c31a33.png\nccace37b00.png\n67066b5871.png\nc82b27b742.png\nc268afb4a1.png\n3bceaa0303.png\n500e912121.png\nabd3256917.png\n92fb5b47ac.png\nc2ff775372.png\n8edcb8b48c.png\n376b6b7e94.png\n0e0edd09c7.png\n0dfe2971d0.png\nf6ea999684.png\n896c89d21c.png\n40b72f14c4.png\na401ccdd89.png\n6fa955a605.png\ne91679e234.png\n0b9686de0e.png\n17050aa15e.png\nc6acc6edb0.png\n8399158374.png\ncdf00572fe.png\nd51ef97f33.png\nd1fa6d0e0a.png\n1276bc341c.png\n6a50b924bd.png\n8acfda99c5.png\n2864cd871f.png\n444e6e251c.png\n8cc3d09d76.png\ne3d9ffaacc.png\nb53e07d18a.png\n24da167d30.png\n2dad6bef5f.png\ne8f06500ea.png\nac083c126f.png\nb855245294.png\nf6e56e8246.png\n5aece0449d.png\n371ee426c2.png\nc7a0370b35.png\n54ca91e49f.png\n78884dad01.png\nd3ccdbe2be.png\n033bf5105e.png\n65bb27f932.png\nb337d81063.png\n25d31baad9.png\n08539d8fd6.png\n95338a2cc9.png\n7aeebea3bc.png\n2cc9e8a198.png\n86bb8ddfe4.png\na13e062836.png\n587e768d3a.png\n44e41ce44f.png\n8fb8e7784c.png\n36951bc157.png\n30265b3659.png\n8280dbed52.png\nff2ebb3e79.png\n88a0258400.png\n5a13a495f6.png\nf2e6753aad.png\n00c6536758.png\n668879ae3f.png\nee256d408a.png\na64ade1730.png\n34d49de018.png\n4df85f0d5a.png\n11b987732e.png\n8ecdb4163c.png\n872fd7fcde.png\n63ea7ee5d6.png\n7628d4d391.png\n579b201f56.png\n6dc67726cb.png\nb1221bb8d2.png\ne947cf77db.png\ned93c39d1c.png\nbc6f7dbf38.png\n1e5ae9d2a9.png\nd69b835df1.png\nf98e740c98.png\n337d3152d1.png\n20b3b504bb.png\n0bdf279a26.png\n909a223b2a.png\n656213f488.png\n8fcf8fd268.png\n49a553c65e.png\nc0ac5c2522.png\n54c4df56c6.png\n42903ae768.png\nd928dc5068.png\n8b217536f4.png\nea9ad92591.png\n2cc9698c4c.png\n7949b8c74d.png\nadccaabc57.png\n7977b3e4d0.png\nd2a6a4e67c.png\n88f577fd2a.png\n12ef0f8019.png\n36aac13e58.png\nfab4191314.png\n4cb8474e4b.png\n661ee2a9b9.png\n4e596a41b0.png\nd12d3125e7.png\n753761db4b.png\n03b2e0b652.png\n7fbb12b1ac.png\n188ec986d9.png\n6832de9b9c.png\n92b1a7eec7.png\n5dcb83b69e.png\n3b4f30c92e.png\nfeace2a064.png\n6b8be32bca.png\n687093f687.png\nf8c1b2b3b1.png\n2d1a6bb739.png\n0b9424abbb.png\ne4c74c0573.png\n4f5a6f8c74.png\n00f053ec96.png\n00d26ea627.png\nb969a65d69.png\nad898df954.png\n94548cba37.png\n239870f218.png\nb796ee40b0.png\n91b10fffe2.png\n0352ae7ea3.png\nf74f620d68.png\n4f26bde95e.png\nbdb72006f7.png\ne616634db7.png\ned0e7d188e.png\nc5dc55c970.png\n2d6f3c5ea4.png\nbbbee75b08.png\nd19c8929dd.png\n6158817b25.png\n3603aae294.png\na3f984c72f.png\nb4b1840b53.png\n5791c70c05.png\n465cdee46c.png\n447aefae2b.png\n36c3c517ad.png\n5bf4cc95a7.png\n20345ad292.png\n4b4dd814e7.png\nd1ac97d3ec.png\n7c374bd2cc.png\n51cf810935.png\n28bfbb1894.png\n0c91260657.png\nee5cddeb0c.png\n4f37c11814.png\nabfc365c4b.png\n36667d3e96.png\n7a8ef143fe.png\n56bed3512e.png\n8ec847ca45.png\n21f1d4055a.png\nc58269ccfe.png\n04495e40e6.png\n33bbf6ca95.png\nb7d6aadf83.png\nf01f1a62fd.png\n175f61a717.png\nf653451c51.png\n372fbddaf4.png\n92ceaa55e4.png\n39f1a4f12f.png\nfdc2f74523.png\n7ff5700a23.png\n93bcc1b466.png\n8f135ade8b.png\n1d1447a1b6.png\n6b97b024aa.png\n472d8fb7f7.png\n644ab5c5da.png\na17be3fe58.png\n65a150de53.png\n14a00a63d3.png\n4d00f5b453.png\n72fb8a9d26.png\nea0df883d2.png\ne263adecde.png\n009d3365bc.png\nc29736e475.png\nfcf64ff2d1.png\n9ec2ecb34b.png\n854fc2c0df.png\n7161ad1940.png\n2b9fc720f8.png\n0794347c0c.png\n10ad5189a3.png\n1957bd75f5.png\n964ba742b6.png\nc0390b37bf.png\n56aee0ab08.png\nf83ff82a40.png\n71d46b2a4b.png\nb6af3ba0e1.png\n62697e02cc.png\ne16fb83895.png\na4b1b30e7b.png\nee2bfe0240.png\n6dcf25329a.png\n01d6be9b57.png\nf8777febea.png\n9c4fb66a3b.png\n0b1b207e5e.png\nf761f7c273.png\n628e8fc49b.png\n659ecabddb.png\n76e214f5ed.png\nc59e59474e.png\n7c3c772835.png\n158d0a4ec2.png\nda322f4911.png\nf7d6830beb.png\nf154d2eb14.png\n34cfc626af.png\n3a5d046537.png\n3a272cabc2.png\n6b22f89f38.png\nbcf6935d08.png\n9e80f1de5b.png\n3174c61ab2.png\n0455d56bca.png\n90c067de3d.png\n23087ece3d.png\n963e4a56bc.png\nb985fb0dfe.png\nfeb066e638.png\n526fe8e7ca.png\n67efda4b14.png\n1d2bbee88b.png\n1120f58e5f.png\n2a0d1a296e.png\nef4b3908f1.png\n9048ab9f44.png\n42f76c7c21.png\n3b58fbbf7b.png\nd1a903690d.png\n9951ffaa5a.png\n980acb2f1d.png\nb40512ff28.png\nb50dbf7dc1.png\n558f33e591.png\nc76cbc2fe9.png\ned01a305c2.png\nd910edd2e7.png\n5ee3fbc1d2.png\n4e44708d4b.png\n3df9f3edc2.png\n503f08307e.png\nb2d7eb0937.png\nec1a509f08.png\n39fcc00d01.png\n21ba72ed47.png\nf7500b963a.png\n934a1de79c.png\n2efa48cd11.png\ne323635585.png\n133b5ee507.png\nd2fbaaeae5.png\n86f7134adf.png\nc2849b2261.png\nbb97216331.png\n0b11c85eb7.png\nc4687713db.png\nf70b438480.png\n1a8026456f.png\n1196a14840.png\ne161ceb5a7.png\n6a72b1d26d.png\n20ff112fb3.png\n92e3428d1e.png\nc81174f057.png\n0b0e4210b3.png\n1ad16d5693.png\nd24b00781f.png\n769c87aa71.png\n2340ad8cfb.png\n5a005e1b95.png\nef79b3b912.png\ncbae673566.png\n575fca4e10.png\n32b1cd7652.png\n8f91b34e5b.png\ne0f166a352.png\n346b4c38aa.png\n70ae581728.png\n4c5f25ed11.png\n8a4c33185f.png\n8b1337f50a.png\n3f73575f28.png\n63a347b03a.png\n8a6090c9ec.png\n1ac6523c3a.png\n81babf8586.png\n6abfffdd6d.png\na350bf9ce2.png\n686113cc67.png\n1cc76fe868.png\n0f1c46ba13.png\ne6b6755d97.png\n9d64ebd0cc.png\n86e484ac94.png\n583a3ba83c.png\nd859e715d4.png\ne45c6ac356.png\nab1ff4ba98.png\n4829eb37ab.png\nbb9b6086fd.png\n624b6d899f.png\n567ddfb264.png\nf8e3b0b7c6.png\ne0aabc9212.png\nc4e9c0dda0.png\neb8d9a0d4a.png\n694e451a45.png\ncad8e1ccac.png\n7d7656d684.png\n10e16dd975.png\n69d9cb1c48.png\n5eca033d76.png\n6a272dacd8.png\n50c5efed92.png\ndef68d1495.png\n3ce8a8bdf4.png\n1336b989ff.png\ncb3f0be080.png\n5b3e049596.png\n7432950176.png\n24a902540b.png\n5b979e06c1.png\nab276f9fd2.png\ne18238535d.png\nafd7bcd985.png\n82de84fe54.png\ne480079ae6.png\nfeecb89064.png\n23ae01f9de.png\n743097891a.png\n67ae021997.png\nf7e58da74f.png\nad34383074.png\nab7fcad758.png\ne8b694951f.png\n94edc8c496.png\na5050ea371.png\n1b2bc9e64c.png\n16099fb731.png\n934fcb3879.png\n7b5cb1b93e.png\nc9a6cf85ca.png\n1008a41c55.png\n5b2a625adb.png\nfd0d1264e5.png\na553f6ecec.png\n8b62cdd144.png\nad294a082c.png\n18150f9ca6.png\nffef5dd845.png\n8229c8feac.png\n34ab125f26.png\n0de7c509cc.png\nfb91f7bd64.png\nd81f6c3432.png\n9d156a0efa.png\nb70825020e.png\n900a53ca3e.png\ne15f74cf8c.png\naee94e6892.png\n9f06b4bbd9.png\n4e50b795b0.png\n0aada349b6.png\nb8a8ff838f.png\n76f2e81fea.png\n2ecd05d83c.png\nf73561cee2.png\n1357b08d8e.png\n291c5dc477.png\nc8b7b52f7f.png\n722806521a.png\n20bda6e6d0.png\nafde39c848.png\n9844d1cd98.png\nca32b9178d.png\n78534871be.png\n1e66c09f24.png\n0b633fad17.png\nf5bd321e00.png\n42de63318a.png\n89b6496f57.png\n52158a3b36.png\n4bb0fd9591.png\nd3fbedf392.png\nd4be3d7e50.png\n87807623b6.png\nac6f1aba22.png\n1516960973.png\n43addb85a4.png\nf3037afbee.png\n8c8450cba6.png\naa0846111a.png\n43c29e757d.png\n1b46f6af5c.png\n0da4b0731e.png\n1dfcbf4bca.png\n636456b360.png\n3ce13de7cb.png\nbc22c76e09.png\n64c76ea7a3.png\n41ca396fae.png\n26cd314b1c.png\ncd7e41ca62.png\naf34547bf2.png\nd98ef8bb13.png\n7b33b2ca6c.png\nd95ad63bb9.png\n098194923a.png\nc22ccd5186.png\nfe2fafb64f.png\n34882b481e.png\n381ef9a1af.png\n51806f45ce.png\nd8e9f9d7e4.png\n80552d0e8f.png\n82fae7d0cd.png\n55df1f35af.png\naaf148d8c3.png\n5726b12101.png\ncb559bbed4.png\n8f86c7b6f9.png\n886335d982.png\n1a4a10e974.png\n3575b15285.png\ne4096090e6.png\n9b3d407035.png\n9cacb628db.png\nf8621065c1.png\ncd01f01ac2.png\n085ef8448c.png\n5e07f381cc.png\ndb5856eb69.png\nbb939d39e0.png\n5ee5607228.png\n6d0ab73c29.png\n508f77d60d.png\n709c9537c9.png\nb5934d2a3b.png\n63c49b24d0.png\nf6442fd9c6.png\n765321cd6b.png\n6cf8fec79a.png\ne327e9714d.png\n9a4222ba49.png\n572870ed39.png\n81fc619c7f.png\n3fc444f3c1.png\n7054f9226c.png\n095b44b0ce.png\ne2bb21efd1.png\n1b4836f485.png\nd16c0e2f8b.png\n55937bc991.png\n1f28807881.png\n5b8bb095d3.png\ndeade70419.png\n37bfa26044.png\n9f2ffd1c09.png\nb278cc6326.png\n24fa97853b.png\nb22bf3694c.png\n3cd84afe62.png\n5662818526.png\n2f64ffd99a.png\n2649a5ea52.png\nc4e956d952.png\n95a184c026.png\n796f2819a3.png\n0bd264d1a0.png\n2dd21f355b.png\nb42453f94b.png\n468067c08b.png\n6f26c4be9e.png\nef4b910323.png\n635fda5299.png\n81ab5dc2d6.png\n14c7a48dad.png\n792b1ff712.png\n6a2d493fb8.png\nbee920335c.png\n217e7acba4.png\nf73d73ec75.png\ned80cf7830.png\n9795561cd9.png\n439cecc232.png\nc2fbac0e66.png\nfd1085d949.png\n37335631a0.png\nf78391fcd1.png\nde67466121.png\n94eb08b688.png\n5cbb8cb416.png\nd4ec7810c4.png\na0d3c0da28.png\nbe53c64363.png\n8fb4c44b8b.png\n2f8693379e.png\n05b9a246c6.png\nc516803d41.png\n9d2a8ea7d1.png\n8b300cc9c3.png\n9ae5ecca79.png\nd600ee1df1.png\n59e5a2f843.png\ndb246349d8.png\nffb3e66bbe.png\nc8592c745c.png\n22922eb6bf.png\n40709ec6d8.png\n2add3264c5.png\n1d49878a48.png\nd7c4d4e1b2.png\n42074c0725.png\n336474d36f.png\n76d6ec9bb0.png\nac38d44d7d.png\n90746d35da.png\n7c01d02935.png\nb0ac47bf6d.png\ne6c0408a1f.png\n6b5dc56ee8.png\n919fdc4e34.png\n5a689622e2.png\ne89784ccbf.png\nde52bfb104.png\n8440daea2c.png\n516ae893fc.png\nd9bce92614.png\nb70271bba2.png\ne69e307dfd.png\nad2114bd71.png\ne38510a800.png\n9aa82de10d.png\neb9d14df6f.png\nbd292a1690.png\nb833a115ee.png\ne1a0800dc7.png\n4e7930ac09.png\ncc90212371.png\na4bab2ef2d.png\n01d782ab9a.png\nd93241186b.png\ne135f81c66.png\n45c17e9144.png\n92a88f5641.png\n2e55225481.png\n894f6a1da6.png\nd31cbc0033.png\n6a86f75986.png\n193f8f285e.png\nb7699d334f.png\n6dfd2f101f.png\n20bde697e6.png\n94a4ec0276.png\n038617ab0d.png\n20d9a105c2.png\n8f8458c343.png\n4eec9d2907.png\n4303a5ae52.png\ncfddb8231f.png\n4c9d8d500c.png\n1c5e4acb6d.png\n9dde6c3755.png\n7f012d3661.png\ncebc1b3f7d.png\n58c00da563.png\n25a1f27254.png\nb788ebfa2c.png\nc75903d2a9.png\n79ec88ff29.png\n133d7c26cd.png\n6c25956bc4.png\neb95aae3a3.png\n6c8e7ad4c0.png\n9b9bddfb54.png\n96d2ddd94f.png\n515ed7b6de.png\n513a7fde16.png\n2a9805a861.png\n0c26ab8168.png\n157401d95e.png\nf43de2bb2a.png\n989e8cfb6a.png\nf6065d0142.png\na749ecef14.png\n280c59adc5.png\n95a7b73906.png\n24554214ed.png\nf0d6a1cc66.png\ne698b4859b.png\nd8200d88b1.png\ne16c36b008.png\n9c75c05f12.png\na1e931d1da.png\n66a1ce8398.png\n56e8cf35d1.png\n0568930a95.png\n5fb9409afd.png\nde54842e48.png\nfcf8a26d93.png\n2907c5cca5.png\n128d07c753.png\ne634f95937.png\na333c87428.png\n4cca1e8763.png\nc8a3cf31fe.png\n5198929758.png\n2a75f20754.png\n40a7b6b08b.png\n71644debd8.png\n555653d188.png\n67320e41a5.png\n8b3148b744.png\ne435eabb31.png\n4bf2e5b78e.png\n365c346528.png\n3dcc2fdb76.png\ne8ad4c4398.png\nfe7c0c392e.png\nf2ce04bcea.png\n3b282ca9fb.png\nacb6f14934.png\n1ad3ccd797.png\n3b8d185300.png\n54b5c16ea9.png\n0c58be00dc.png\n29cd49e08e.png\naeea7d0ea2.png\n54961d841d.png\n5caecaa345.png\nb53cd73f5e.png\n215970a6ec.png\n23563da1f7.png\ne4a49040ed.png\n6738994f95.png\n6343d8b189.png\n2db3730f05.png\n1d1e3f95d3.png\ne7cd8cdcb8.png\nec18a789ec.png\ne5265b3f94.png\nff28f29ea4.png\n4ab596b394.png\nc173b95448.png\n0e04f3f709.png\n9bba9f0981.png\ncbf3dbfb4c.png\ndf14c1e0c5.png\n9b4ae543b5.png\n71991595fa.png\n4bc7c8cca1.png\n43a180e051.png\n388385f4be.png\n6ba5e65f26.png\n4a5769fbe8.png\nb211bcbb47.png\n6eb4b1e1b0.png\n91f0dc8f97.png\n139b327245.png\nee3e2a6b0b.png\n7f3a6d74ed.png\nb994f9a4fa.png\nde25ccc39e.png\nca210d235f.png\nf79b4370a0.png\n396c918307.png\n03c247c74b.png\n14fecd67d2.png\nee8419c13f.png\n472ca04a17.png\nd548a1b2e9.png\n0eb1cadc73.png\n8a0eb38750.png\nab97a25f56.png\n9c2e45bf79.png\nbfc9ef388f.png\n1230d07385.png\n5fc4559c16.png\n249cc02d2f.png\n89ac736eca.png\nc1fc605426.png\ne2c5c7991c.png\nb76637a5b1.png\n1fdf187ca2.png\nf0b88c1c94.png\n9ec8ddce2e.png\n6318ebf3fb.png\n1ee12ee903.png\nf05f01139e.png\nb7b64e2e3c.png\n051c0a2ddb.png\n6bdd15f74a.png\n5482075056.png\n2a2b51e873.png\ndd56be4d81.png\n5afce5bd51.png\n9d39009d77.png\n2309b6b116.png\n7e893b59b5.png\n34ee4db3e9.png\ne72ec9aa6a.png\n0daf208ba4.png\ne25d11adc9.png\nb132d4111e.png\nefea140c8a.png\n4184479788.png\n13d6e87328.png\n3cee398114.png\nbdb1c1fcbf.png\n69c5f6be60.png\n688e20fd00.png\n2f3b480bb3.png\nfa2269d3e6.png\n343443992e.png\n4f359f7110.png\nb38ee97247.png\n2984673259.png\nf844ef3537.png\n1edc6ca8a7.png\na3debd62c6.png\n297646fb99.png\n6c48112d73.png\n7616ef548b.png\n52193e1f20.png\n3fb8c2ce8a.png\n6377b2a077.png\n4aa24fbabb.png\n37dd11b8cb.png\naac410c5d3.png\nd0257d7254.png\n13b4cdb701.png\n9b1efe2798.png\nfa0ae3c3f9.png\n79fd4a6e1e.png\n0717a21efc.png\n1409ddabbf.png\ne5b8905fea.png\n61138805e1.png\n55894e899a.png\nad553cf52f.png\n5fbeb50b5a.png\n9d65420fcc.png\ne0e1e28aaa.png\ne85ba9f671.png\n1b741079c5.png\n5f64a4011b.png\ned7bea5840.png\ncc6f8b821b.png\n2d450d63a8.png\n9952099fd0.png\n54538419f5.png\n98d374c1f6.png\n8373567bb1.png\n0decef2ce3.png\na1f55a188e.png\n8687efe0d4.png\nd14be11409.png\n4d27ef11d6.png\ned5f2675bf.png\nc6bc5851f4.png\n33f7a451b3.png\n566eb41f6a.png\nfa2d86387e.png\n3c24e4dc89.png\na9bc82e277.png\n0e760c1317.png\n449edd9569.png\na754e003ca.png\n74a066b134.png\nd14105ad2e.png\n9267408c45.png\n0988338304.png\nc3dc03f42e.png\nb94052b389.png\n8efaac0550.png\nee4d7cfcea.png\n79f7bf317e.png\na30967eb65.png\n1ed64d38cd.png\n45228f9dab.png\nfae8a1af69.png\nb38fa501ed.png\n020a0335b5.png\n9478fcc031.png\n96f60d42bd.png\ndd4b9d33ab.png\n40e37ab6d3.png\n39b8cfa930.png\n21d8a7f563.png\na3945cc9c8.png\n52f369a734.png\nf24baff2ee.png\n05d175bd91.png\nab230639bd.png\n1d2bf3cc94.png\na80973d210.png\na433189cb9.png\nb3be6d0b23.png\ne9c73652a5.png\ncd21f9a20e.png\n14ec9b67c3.png\n2297e39a1e.png\na97394e47e.png\nee230082be.png\nde2fe332eb.png\nd54615afef.png\nfb9a1efb51.png\nb41beccab3.png\na9b099b251.png\nc0593f7735.png\n0795655fb6.png\n1ccd0edac4.png\n796a06dd45.png\nc0b0e1782b.png\ne719377b14.png\n7c96230fcc.png\n18606906bc.png\n2ac25d2e83.png\na539c08702.png\n6bc43978cd.png\ndd80b7cd67.png\n113f9e005e.png\necb7e859fe.png\n64b8ca4d93.png\n93c3bd5f5c.png\n2b562b2ea8.png\n9ae739a3ad.png\ne8957ff25d.png\nf74833dc1c.png\n2659e2d532.png\nbdf72c90ad.png\nd927c15fb4.png\n94dc7202b0.png\n49d1d110b5.png\n8ca0f37825.png\ne5463f2c0f.png\n76f2458ae9.png\ne50303e172.png\n863eddc9a4.png\nea5c092532.png\nd24e24eea9.png\n0702b8700f.png\n80c275e4ad.png\ne5db78c10b.png\n550555bcd0.png\ncaf77a8651.png\n86eccfe44a.png\n0bcfadfd28.png\ne62622675a.png\nbd1131dcdc.png\n2d744191c8.png\n86096bd26d.png\ncc4dd6c823.png\n2ab5284049.png\n544caee232.png\n135bbbeafe.png\nf19171329c.png\nfc3293661a.png\n4f7b28dcba.png\n5d89e1ab89.png\n495962d062.png\n4c26629cdf.png\nb8016fff86.png\n0e18f949cc.png\n0bda89116e.png\n7938b71fe5.png\ne8e330c390.png\ne17703fdd5.png\nc5c7f765d9.png\n12a7d7f2e9.png\n38f374d26f.png\nc0200e7c89.png\n8c4f0af661.png\nbc9ee00ac3.png\n15a52de24a.png\n14eddd75d3.png\ne1f4bd4876.png\n4fc4759294.png\nf5ddab9cab.png\nc218b0d187.png\ncfeaf79010.png\n4fe184616a.png\nda7c1dfeca.png\nf34cd4146d.png\ndb5547a121.png\nf85a321be3.png\n503c47f8ce.png\n8c19c5829d.png\n5f69ff419b.png\n3521b38d49.png\ne563323c18.png\n8ee70d5955.png\n12e11ab92c.png\n27d080fb1c.png\ncb18628039.png\n875d5cbd51.png\n9478850fcc.png\n6464ec6140.png\n40876f27d4.png\n48088c96a6.png\nc2af313f48.png\nc83f1f448b.png\ncd3841173f.png\nf3b62e9e0a.png\nc07ed81d25.png\n5187928643.png\n85d82d8218.png\n5af5682dcc.png\n423e66795d.png\n88177cb642.png\n74b8b1e820.png\nbfd7a73deb.png\n86ef32c658.png\n7c3e872cbc.png\n39fc7213e1.png\n041b1900de.png\n9484a42649.png\ndfea8c08b8.png\n61fbd7bcd9.png\n205bc22cbe.png\n6fabf8d88a.png\nd29a58d133.png\ne02281aad7.png\n92f0273998.png\n061f2729bd.png\n577964b6ce.png\n24c59f0e00.png\nd3c6689f39.png\n34fcc75290.png\n118c8410fb.png\ndec2ad9eb2.png\n5b3cecb9af.png\n742dce37c4.png\n1d72c26633.png\n5e52f098d9.png\nd2776b82d5.png\nd1e5eeedf1.png\nc2916143c9.png\n514a1c19da.png\n9e86e03bec.png\n7054ae209d.png\n1cd35a5d9d.png\n514b6302ee.png\n2abe2d917b.png\n9f88bc6651.png\n0daa48f5a1.png\n937f1253a0.png\nc5d1c2b8dc.png\nbfe7e5c004.png\n8996600f77.png\n74a524c6f6.png\n91062f1f24.png\nc01b9a4db8.png\nabb6ca967b.png\naf9230b78b.png\nd5e72925d7.png\nfe86a6f843.png\nb894d4c3b0.png\nd123f81e7d.png\nab8c023b14.png\nc66fd86269.png\nef3d8acb5d.png\nf7adc6c4a8.png\n78ffefb944.png\nc927012921.png\nff69f8d84e.png\n12a50502da.png\n294dd884ff.png\nba9a540bc1.png\n728a6d743c.png\nfabf77ade7.png\n45a04b7102.png\n6f2bded59b.png\ne2562cf41b.png\n650b1ef686.png\n8a21cff6cc.png\n1fd49d28d8.png\nb13be19418.png\n2480b2ea50.png\n526fec1e2d.png\n4c76db3834.png\nc7b2190636.png\na848047508.png\n4caad13660.png\nc3feb6b712.png\n7d048ae83d.png\n19611e0df2.png\nd5f32fb9d8.png\nca9f072002.png\neab159c085.png\n1751413556.png\n5425b9b864.png\n32c2343233.png\nd978006aae.png\n5f1e22d81c.png\n87172d491e.png\n8fb2ab4e8b.png\n81a2b120a6.png\n59d34c582c.png\n510f0a1180.png\n590c7895df.png\n310efcec18.png\nb54da3837d.png\n8888ff440d.png\n175420a7ac.png\nbe92239eb4.png\n6817506a91.png\n169f0aa462.png\na4457eaa05.png\ncbaabe0368.png\n8841a25b64.png\n879ed76a41.png\n9a28814a64.png\nc6a614c6fb.png\n449b778c01.png\n0fdfde6a55.png\nf37f2eb2f8.png\n00aa6a3958.png\ne4fa7c6a7d.png\nc6d5346205.png\n75e8f7f24e.png\nb91bb6305a.png\ne61e9bcb65.png\n79d37aa089.png\n595023dd24.png\ncaf0757af5.png\nd542d8517b.png\n8c9846ac4b.png\n934ac92102.png\ncafce53ad7.png\nc9272c542f.png\n3d3359afd8.png\n60ce9113f9.png\ndcadc4c820.png\nf6d6caf753.png\nf094ebc7d3.png\n000d0a5f6c.png\n4a03a65d79.png\n32b2140185.png\n807262dbb7.png\nf34886e220.png\nfc721787b5.png\ne84aa09005.png\nea20808a7e.png\nb74675b268.png\na38ec5925e.png\n034a84a1a9.png\n1f01fe0512.png\nfe8ee42b93.png\n7ec7eda82f.png\n1e933dc6cb.png\n1e0b9a424b.png\ncd5ebe51b6.png\n22b0398a5d.png\ndf8800857f.png\n482c05de33.png\ndd4af2ee73.png\n900da4d5f2.png\n6c45c3cae0.png\n739a2484b4.png\n2adf56faa5.png\nd6e3f898b0.png\nf4de1207a1.png\n54153773d3.png\n5c97dd7b21.png\nd7eb8b4a95.png\nf9e8baab8d.png\nff0a4f1109.png\na6a568e5de.png\n08b4743736.png\nc6f717f69b.png\ne16cf1ced5.png\nc1c62f32e5.png\n2f8b6beb17.png\neaa6ff2cc3.png\n2e19b36968.png\n8267c5f862.png\nec1db9fe21.png\n2acc6caa30.png\nfe6a637d8d.png\n3a8fcdba16.png\n5001f015a4.png\nf9d5a850cf.png\n60a5591917.png\n0828fed727.png\nec0266ad71.png\n0c43ec36f9.png\nc9ea133098.png\naa74dbc398.png\n040cf0d9ed.png\n348f475161.png\nfca1016aa7.png\na3c332fe5a.png\n8a0f543772.png\ne65cb587e2.png\n486273b149.png\n7aca719607.png\nb035452c45.png\naa34fea223.png\n02337f94a9.png\nf4e1756bea.png\n763128cef3.png\nf3bcec6b35.png\n1161352da6.png\nf9f6588f79.png\n54fbd50faa.png\ncf5be83765.png\nda0b7ec78b.png\n0762de37c3.png\ne040d91fe9.png\nb61e97ca9a.png\n03422321bb.png\n0310766b6c.png\n7887dc1b63.png\n524f01dd79.png\nf7ed9b7ab7.png\n318cd6739c.png\n8cbcad0831.png\ncf063b6a84.png\n3ea50ff362.png\n1496c1470f.png\ne4c7895444.png\n78fb4e57da.png\nd1a15c65a2.png\n35ae3107a6.png\n03faead0bb.png\n4cb9bdf555.png\n541687068c.png\na325af7cd6.png\na55c6c1d0b.png\n8fbd93c9b8.png\neaceba067e.png\n1db40838ce.png\nad9f0a2927.png\n0366c64dd9.png\n04d7031258.png\ne71eb5dbaa.png\n7c1b8a17cc.png\n6c217077e5.png\n4548b5fe8a.png\n1668e61448.png\n4183f90c66.png\n8b5578c2d4.png\n59c92db054.png\ne7f3808bd0.png\n4c075a6454.png\n0f1831de13.png\n58d03e7c89.png\nd58addc3c9.png\n65fd376d9f.png\nedc0e28c09.png\nb1b9ce9b86.png\n8e546f0a9e.png\n8fa238ffc7.png\n9f29dfa66d.png\ndcf6316d5a.png\n01fc11f637.png\n942f9aee0a.png\n4d163fda07.png\na9ea42fb81.png\n4022a53ed1.png\naf1140dc2f.png\nd0df1a121f.png\nc430c464eb.png\ncae4b0f0d4.png\n1bc1ec2325.png\na9b8ff1cc7.png\n67fa36c65c.png\n9a616b906b.png\n2acb8bbe84.png\nfae8a6874d.png\n89a4b40e09.png\ndc9b82b153.png\n647acd5865.png\n17b344c505.png\n87d94a1264.png\n074c92dc0e.png\n392b7bc50a.png\n0e437b51df.png\n101f683ee6.png\nc1494cafd8.png\n38a0a84353.png\need8fc6acc.png\n62683a84e4.png\nb8bde6d60f.png\nacd12248e4.png\n6417b5bc9c.png\n6c82a04337.png\n5ebb6bc370.png\na2a8d65144.png\nd1f53c0fa1.png\n7efd271bba.png\n207b8f1707.png\nc223b6cd87.png\n8fa22efd9b.png\n4885a860a1.png\n0ec3cfbcc5.png\nc8c86d269e.png\n56b0d83562.png\n1b3aa9a328.png\n315b1e0da7.png\n853e07e13e.png\n2077f4f5d8.png\n45e8c5d733.png\nae12e89a80.png\n417002075c.png\nfc3dcf852d.png\nfd50358e85.png\nd4bef9a35f.png\n51767ccd9d.png\nc5a4c4e6d1.png\n2b0d71a390.png\n18cedfd6ea.png\n04cbf52244.png\nada9f8c74d.png\nb8a1648734.png\nc66acd78a9.png\nfe9eb2c15c.png\n915be642cc.png\n33e98bf037.png\n9848ad8e46.png\nb542fd75b6.png\ndb9158c9ec.png\n90b8394c22.png\nc8316110ee.png\nc0d5f29125.png\n10442d17d2.png\n8d52127a38.png\n132df3fdef.png\n6b59edf680.png\ne578390adc.png\n62d9d1fc79.png\n11c70402fd.png\ncbdd38711c.png\n8ba0e5e058.png\n9b82ce06a2.png\n60dfd16b68.png\na836cef588.png\nf783725948.png\n0eeeca0531.png\n966f23aa7c.png\ndfacd912f5.png\n240798dc12.png\n1640610fd0.png\na7c1278674.png\n329563756f.png\n79ad96357c.png\n7308c64525.png\nbe8fb89ea9.png\n649224d545.png\nd7099eb334.png\n57eff70775.png\naf1826b80d.png\n5092434e2a.png\n7478744236.png\n31ae66e986.png\na4a209dc52.png\nd385c199a3.png\nf2d250342d.png\n31f6090f30.png\n7844cbedaf.png\nc8e5f52fa0.png\ne7551e9a26.png\n34ffa4722d.png\n3d1e2064c8.png\nb2ef982b4b.png\nc602d02313.png\na2322778e0.png\n97c11d9b04.png\n70a891a3b9.png\nbedf824aa0.png\nd8f44271c2.png\n89b77fc82a.png\n76aa28c0ef.png\n6bdcd9b280.png\ncd5168b2db.png\nacad5e495a.png\n906c1ff22e.png\nf89a479c21.png\n6d8e425cc3.png\nd2fe1189c4.png\nbb2c8d04b8.png\n8fc26c0caa.png\nf81413f017.png\n45456c0cf5.png\n3159a2100b.png\n195f997af2.png\nb800303800.png\n6139ed81ab.png\n701138cbde.png\n860f605575.png\n689de6e32e.png\n51308c8b03.png\n54a5842258.png\n0e371eac28.png\nbc8c4fb855.png\n9ef364d6de.png\n6817f42eba.png\nbeeceae804.png\ne9b05be83e.png\ne487752343.png\n3b3e29c628.png\nd0c9bf6f02.png\n18cd0215e3.png\n9e1719a077.png\nf694707d78.png\n789cf04c29.png\n4454da0dcd.png\ne2c1c771e9.png\n19cc12c7fe.png\nbb365e1786.png\n1870bc0ec0.png\n74a5ef33c0.png\nb6a256fb4f.png\nd502c7113a.png\n5819935dd4.png\n093e17ad49.png\nccec631d75.png\n609c37ba03.png\n54d675829b.png\nf72a9df651.png\nd2169330bb.png\n8e84576858.png\n9018e08735.png\n6ec1f0c03e.png\n50822696b4.png\ndf46b3c036.png\n0a3b7696cf.png\n4df5b725e4.png\nb8d01a893a.png\nc59cbc2c2c.png\n79b2e7fb3b.png\nd626773552.png\n92c6b79a7c.png\n513a596d8b.png\nf851b1959f.png\nca3bc1f093.png\n4bbd0a683c.png\n0971f6b351.png\nc4f2b6ed96.png\nb8e7212860.png\n9f0bf03c7e.png\nf34b7f5f31.png\n2e55ac15c6.png\n4fed31718b.png\n714a530736.png\n3bc80b1c12.png\n3e227bf413.png\nefa6548f84.png\n15d7c9beab.png\ncecb9a3bd3.png\n070a913f3e.png\n799453dcae.png\ned313a0458.png\n9840439edc.png\n330fac2779.png\n02b705b112.png\n7bbea56114.png\n3d49c23446.png\n9e97c676a0.png\nc4b802d1d1.png\ndea3ee05df.png\nbb875e35ab.png\n45d1bb9fb2.png\n4f1fe6ebef.png\n49e96a6bab.png\n678716dff8.png\n34dbf84916.png\n1d2d268bbc.png\nbe5468a599.png\n96f1a0e953.png\nf95cb64587.png\ncc9a95b13f.png\nc7dd6d539f.png\n78116fa2a8.png\n69cec1ddde.png\n4bc3530a30.png\n0488eb2f20.png\nefa70b51dd.png\n96e656eb8c.png\ne4a2ebc155.png\nd0107a1229.png\na0c27256fd.png\nbc6521fff4.png\n5572857e9f.png\ne0fd25b6c9.png\nf2df759bab.png\n37f78a8697.png\n2b420cf6f6.png\n448a080d3f.png\n8d8f9a7868.png\n9a7167039d.png\n82821aa473.png\nc8bc2ec5b9.png\n1c3a92013c.png\n48226b94d3.png\n5394f6a4e9.png\n581f8c2db5.png\nf74beabd47.png\na443a58ff2.png\n0fdf592515.png\na4af4ec79e.png\nfa65fcaf12.png\nc111da300a.png\na12ab05d74.png\n624c50077e.png\n41e4f4038a.png\n82301d3f95.png\n37c400489b.png\n724541cf3b.png\ne68e53a654.png\n83232c5c15.png\n7269030c21.png\n7a47875a7b.png\n7cc1022e2c.png\nfaced45569.png\n9acd310f25.png\n75420c460b.png\nc4117da764.png\n8851e4f0b2.png\n8fd80add2e.png\n15e99c4456.png\nd0aaadfad8.png\n5af7237d5c.png\naae2ea202c.png\n17a938e17d.png\n927218abd3.png\n18e4bdc8d4.png\n6c147e8265.png\nf23939f747.png\nf8594cc56f.png\n58ee6464fd.png\n2d57242565.png\n62d13e356a.png\ncc4d4d7351.png\nc333977b5c.png\n6909be8eb1.png\nfa03ff2472.png\nf29742cf45.png\n39f8da5892.png\n56985e82a0.png\nf15f1f9c2d.png\n9be8405130.png\ne7d963d69a.png\ndaa44f92ec.png\n24c5a49118.png\n31681e5258.png\n6c2e63198d.png\n43b82e6341.png\naa856fa950.png\ncf02a20d32.png\n8cd406ddbd.png\nab90867ff8.png\n55a5c88745.png\n19c0520d70.png\n6c292f738a.png\nc67d804ce4.png\n13c22c3cd8.png\n6bde41d5b5.png\n4d9caf0bed.png\n411c393de0.png\nd567492570.png\n59f453a2de.png\n24ccf23eed.png\n813593f7e0.png\nc3363afbc4.png\n74f1b30c08.png\n763de0e83d.png\n2b0e163a9d.png\n25e2f2418c.png\n3aecf1edfc.png\n2cf5e31383.png\nf803e91a54.png\n3b3647008a.png\nd3332b8273.png\ne3134028ed.png\naa2bcc866e.png\nf2bcc24bad.png\n3dc568193f.png\nacaf962142.png\n506313852a.png\n7eeebb8145.png\na7a66e306b.png\n0d247ee571.png\n22d990d9a6.png\n4dc10dd415.png\n8182bdb020.png\nd05176b53c.png\nf5c5ee96f3.png\ndf692412f1.png\n66e42629c1.png\nc37685f2ad.png\ncaeb60c6f8.png\nc0cc10dcaf.png\nfc7926f05e.png\n514f87c157.png\ne431838b7a.png\n56de180fa8.png\n38fee950c3.png\nc30f196026.png\ne265ee440b.png\n980d9ad971.png\nce47492e46.png\n7abfe45a2f.png\ne77611a140.png\n9360f588c1.png\na7b439c134.png\n0e9d22de45.png\n10b09b3d29.png\nb01ed5d099.png\n7300c9fdf1.png\n820b99b513.png\n4f0f086203.png\n5ce6499aa2.png\n260d5faf0e.png\n11096643c6.png\n1b1f719ff8.png\nc899bb9da4.png\n4f3c549609.png\n08e529fbea.png\n6778b7675a.png\n687a034e8b.png\ndcbc243dd1.png\n7edef17361.png\n875c61e40c.png\nc329b6d198.png\n09456ecccf.png\na7a3075a1c.png\nfa061fde8d.png\necc2ea758c.png\nd3ce9e576f.png\n56e61928d2.png\n84a93da64c.png\n0279a4db6e.png\n9aa679bd58.png\n3621dd35dc.png\n39bf2e6358.png\n8784d75f0e.png\n2ca82d707e.png\n9f0a0921e0.png\nb1ff4879c6.png\n4bacc96aa3.png\n3ac5dc16c1.png\n6805e1ed9f.png\nf41e46eedd.png\n2ce8354e3c.png\n64e526c39f.png\nc2bd5f07c3.png\nf8a1f29b78.png\n97a7516ca4.png\nbafaf5810e.png\ncca5d24d54.png\naa5f085ae7.png\n07d9da93c6.png\n0ab06437bc.png\n11c00399d6.png\ne969baeebd.png\necea555030.png\naf7d70119d.png\ncbaa2838cf.png\n63e4c28d41.png\nacf7bb62cc.png\n7f4ccadf3f.png\nff263bac3d.png\n0bbee760e3.png\nb223958781.png\ndb6202ef84.png\nf8853d0a66.png\nd5ec79a1d9.png\n7a5cb865a2.png\n83b062b608.png\nb538b5e2dc.png\n82612016ee.png\nd244dc0b1c.png\neecbb5b38e.png\nc144359991.png\n2ddb9d0b5e.png\n58c0ba9cff.png\nac26936da7.png\n6702002a59.png\n7a0d2b5d6d.png\n91791bd48c.png\n5f56aedf85.png\na1660f15a4.png\n380e59ba25.png\n6bf20054b6.png\nfea530ed89.png\nf2cafb648c.png\n640c607028.png\n2c51e2a97b.png\nf7b2fe49a6.png\n86cbc4e630.png\n38c805312f.png\na346964cc6.png\nd384ce1a9c.png\n563d6cd7eb.png\nc28f0753df.png\n3d74dea2f3.png\n842e153666.png\n09b712b3a2.png\n2063f2934b.png\n612eab5d71.png\nb1956b1703.png\n23895ff11f.png\n2efda9a6bd.png\nebbf3ea889.png\ne1d0fcd36a.png\n7ed44899db.png\n2fc2517c87.png\n099090a5ac.png\n54e1ae89d2.png\n81abf40136.png\n755ba63241.png\n95d14b6295.png\n9787ddd96b.png\ne372009e84.png\n7370b31cd0.png\nbaf79bc8b3.png\n005855cd72.png\n6239f9dccc.png\n47393e1828.png\n8cedd346cf.png\nbe7fd92858.png\n7b19f5eb71.png\ne7c38ef150.png\n60764d08d3.png\nc3214a300e.png\n4074911972.png\n3c7ce000d3.png\n02658f5ae3.png\n26de5a7d3e.png\na52298e252.png\nd2f6881bda.png\n193a5e4c04.png\n1bd9b1a1c8.png\n58c5cc6c34.png\n7b4ae4fdb5.png\n4a08951f0e.png\nd446acc411.png\na79f8ad5ea.png\n4e5eaec9e7.png\na43ae84282.png\ne17119b103.png\n8d673bd786.png\nfbd6989cc2.png\nf6d8b8393d.png\nd42e7ee9cd.png\nb2293c79c5.png\n242d332c46.png\n9938ffcf0f.png\nd96a45425b.png\nb0a7ac630a.png\nf6736eaab1.png\n25770e1dcf.png\na8dd12fde3.png\n3e11cc14db.png\n6107902d61.png\n0fcfbcf23f.png\n1b313539f1.png\n97f03b486d.png\nee12c800ac.png\n8ef3d8c73c.png\n377953344d.png\n7d596c01eb.png\n4588ecf11f.png\nb78cb3ec99.png\n68715e75f4.png\n98d2f64d03.png\n9269b8617c.png\n8291aa0945.png\nb618cae630.png\n9a3a802f4c.png\nb5ddc25ebf.png\ne033795108.png\n482e5face0.png\n610522a8ea.png\ndfecdb6231.png\nd3e042cc9f.png\n55ae3f3757.png\n1bb08d1d48.png\n8fef989622.png\nf10c0e5046.png\nd5b94e470f.png\n6061f711e6.png\n355de57e2c.png\n68c1093ddc.png\nb3c3f6847b.png\n2a3ae9f7a4.png\n539881f52c.png\n95d9e303bd.png\na40813ad63.png\n3457baa631.png\n349516c6c0.png\nea374127b1.png\n7f558ed116.png\nb1de48342b.png\n013f2c7bef.png\n34ef14a0f7.png\n9a30620053.png\n71319b35e8.png\n7ffccc46c5.png\na51e0ecc70.png\n61a526dba0.png\nca8621f9cb.png\n084cdc19f0.png\ne07886c9e1.png\nd2c9311644.png\n3c4c3153af.png\n1d1f8ae141.png\n8313bd80b5.png\n4ac6530567.png\ncfcd55d96c.png\n68d3e8314d.png\n96b5aa4543.png\n25ab18341a.png\n4604ba0a16.png\ndbaa50e4e8.png\nc820e89250.png\n1bde2dd64c.png\n9990d72d8d.png\nd4ed19a4d4.png\nbdde42d974.png\nf283b78236.png\n9f91c31994.png\n9765869d24.png\n70239a8c97.png\n678be9f387.png\n27dc4eed59.png\ndab3760ec2.png\n7d58c958b7.png\n555a28a94f.png\n6fd4ac5516.png\n393b86d929.png\n5dacdb1080.png\n396f334f22.png\n56d600b706.png\nff37c16424.png\n9599d70e00.png\n0599c13063.png\n237c1d424f.png\n5258922b55.png\nef44ece465.png\n4f4d5a2c20.png\n2e7e2de23f.png\n4026885307.png\ne0f43b5213.png\na9de4ea104.png\n3243944add.png\ncb8fbea20f.png\n8a23c93c1c.png\na6d618a651.png\n3b65804dd5.png\nab21118871.png\n635bf7e9d1.png\n10637d3b2d.png\n929063c568.png\n393941ea97.png\nd1e15abcbe.png\nfc05b19061.png\ne12852e1cf.png\ne2ea7ff45b.png\nb2aa9a8705.png\nc157e34751.png\n3a1e264383.png\n8e9df4c791.png\nd91cf89370.png\nf17c5539be.png\nda90bb6570.png\n2858abba07.png\nf8cd0940ab.png\n55d7c2ef8a.png\n92b7e5def2.png\n35277a6516.png\n4820132bfc.png\na619fde3ae.png\n3b36b4cfc7.png\na1f432ecc5.png\n02f62a671c.png\n6cce97a933.png\n4b02d1de2d.png\n97a19e7d37.png\n5d4578efd7.png\n7eb296821f.png\ne1e4f6186e.png\n6f6ed73e26.png\ne4ada88a55.png\n54668cfc5b.png\ne9fe017cf3.png\n5433c8a5aa.png\nec1e7c99c6.png\n0381cdf44e.png\nb69bf71d8a.png\nd9db7ad9d8.png\n9c90708fb3.png\n76b63181f0.png\nfbc13a5b47.png\n9da76dae32.png\n3648353086.png\nc5ce3b7c0f.png\n117ac75de0.png\nf41faf6e43.png\ncfc651fc58.png\n69840acbc6.png\n4ca0fd980f.png\n899172e5dd.png\nf836633c5d.png\nbab434d0ba.png\n931f8f7623.png\nc8a43265bc.png\n374b8c1563.png\ndd7f87e316.png\nbc056b97fc.png\n536def7060.png\n6840d101a6.png\n11bb6f999f.png\nb850c9ac3c.png\n9772fe6e9b.png\n19932718b7.png\n33c2d43d95.png\nc38f7daf18.png\nbdeb6fc911.png\nbbcfa77705.png\n291c027b3f.png\nb6274f23a3.png\n8ea497ed9d.png\n6af3f7f682.png\n71022f79b0.png\n67377e2624.png\ncca35c91c7.png\n3e01678748.png\nd76ab972db.png\nf420886e62.png\ndd8a561e4c.png\n3e47574443.png\n99e00a4567.png\n4f8a095e23.png\nf6d7d74093.png\n3ae98f57f6.png\nf2f31ca428.png\n97866aac0c.png\n4454298e57.png\nd78179dc1c.png\n4a30e84131.png\n8b6a124c7e.png\n9700b1dd12.png\n2f425d379e.png\n6a2861f265.png\n9559ab8b64.png\nb4f0255ba5.png\nf56e5373a1.png\n8f0a738345.png\n1283b9ee2f.png\n59519b78d2.png\nd5b11bbfe0.png\n31c01817bd.png\n1da9e3d14a.png\n71158cec61.png\n15a864a1d7.png\n8dd1373b0a.png\n73cb41b13d.png\n68d1cc2e33.png\n11a9828601.png\nad9cf3c2b9.png\n55b630dd3b.png\n362de7e871.png\n0c79f66275.png\nd53032aabd.png\n41fee23985.png\nb96e52844e.png\ne5a9192e3d.png\nad2be130fb.png\nbcbe49c82f.png\nc20578d4b6.png\na8bb069a39.png\nd36a3ca700.png\n799db836f6.png\na53cf7d9d9.png\n5ea1a7508e.png\n84dd68008f.png\n09ce1453ea.png\n744cda657f.png\n479f4e8b6f.png\nbab082fee3.png\n960f8991c8.png\n4711ddd4a2.png\nf78ea315ec.png\n8755799352.png\n952333ee99.png\ne0377b9bcd.png\na68923cc57.png\n7a3bff0c21.png\na157bacfbe.png\naea6c99c49.png\n5b4089af99.png\nc931414489.png\n57f9c7cc29.png\n6751604e2d.png\nc62768ea85.png\n46bcca523a.png\n3b408e43d0.png\nd2bb65bbd0.png\nab644f4608.png\n159ff83d6d.png\n51a67d4268.png\n9e545de5b0.png\n081bdb0060.png\n493521412a.png\ncca0ef0b2b.png\na14dfc9c23.png\n6b22fa7059.png\n0ff62b7139.png\n8a2afd812c.png\n4607195958.png\na889481fa2.png\nf5d9f8e9b0.png\n78d992d2c6.png\n6fd673ec85.png\nc52c863224.png\n3d40103812.png\ncdb440a4e1.png\neb3f2d1468.png\n5651ff20d6.png\n3ee7e5d5ec.png\n9991480992.png\n735aa737ea.png\n2872ffab1e.png\ne0c928ff5d.png\n502360ae46.png\nb49679bab9.png\nfd119c8d2f.png\n7aa9ed1476.png\na2437f978d.png\n751ccfabff.png\n267efbb1f8.png\nd8d1ff3d49.png\n7c46ee160d.png\n290f496ffd.png\n36ccc5a8f9.png\nc75a92a0fc.png\n373e714f3d.png\n8d71ff6d1f.png\n51d27e732b.png\n6d84c92dd5.png\n50d1ebb96f.png\n887c27bbe9.png\nfda5468e31.png\n19436cc9b9.png\n9525b60672.png\na00a1f5133.png\nfdc18ce87f.png\ncfd6f05061.png\n81da51a1b2.png\n167025be93.png\ncf39a7aef0.png\n221a787935.png\n892f66c867.png\nd59fe2fb62.png\n000a68e46c.png\nee1312ac0e.png\nc0c83b4e07.png\n26320df569.png\n031709c0fa.png\n7744768972.png\nb7ae0829e9.png\n09aa9bde24.png\ndd1b4b2f7d.png\n6b8ac65560.png\n5554fc278d.png\ndf9a4986d7.png\nb6ad668266.png\n62f191ada1.png\n09020d5904.png\naffc79d07d.png\n8f399c3cc6.png\nce269253a0.png\nd20de74c75.png\n9a171b49a9.png\nc96d3d7eba.png\nce6b910fe3.png\n5d2a7997d3.png\n9347eca0c8.png\n0fbf0f803f.png\n8346a9c748.png\nd0cf409725.png\n64d3566e09.png\n2fac24e793.png\n300ad77caa.png\n16322de21c.png\n13709c6a2d.png\ne428876d1a.png\n6385fbffc8.png\ncb33ac262f.png\nffca8b12cc.png\n20ef62f227.png\n4071dd4858.png\n773932c485.png\n42becaa75c.png\n79dc99b54d.png\n6b387438d4.png\n769620862d.png\na6935120c2.png\naf08b134ef.png\n5fa15f3d6e.png\n3efd2d1d03.png\n21caa62f95.png\ne361151ef3.png\nf5431c0d2c.png\ndcaec58c8b.png\n0fc11f3da1.png\n79f95432ba.png\n066803e978.png\neb4d9e16ad.png\nb67e8c0e8e.png\n35d3bc7c5e.png\n6250becb42.png\n73d7fd7daa.png\nff0a22953c.png\na713287800.png\n76fba60faa.png\nab7bb7a149.png\ne5af87d93c.png\ncc3cd53279.png\nac91198928.png\n0cbd2440cd.png\n7e23d561cd.png\n74fb9f65d1.png\n4e42f26a2f.png\na48358f1bc.png\na04d442538.png\ncb55032676.png\n165968e004.png\ndc3ff463f0.png\n1226755483.png\n96fbe949fa.png\n5c18909f08.png\ne54944e5bf.png\n787813e948.png\n355a7edcb8.png\n2794ebdad9.png\n65e6f00f4f.png\n8ceaf79e16.png\nfd84c2ff6c.png\n1a66074498.png\n7d561f388e.png\n83f67afabd.png\n08b63f1442.png\n04e5d3d26a.png\nc424ef2d35.png\n8d1856dc1b.png\nd83d9f26b8.png\n7d73751ac9.png\n7366dd0525.png\ne22e1ac585.png\n6856dc43a1.png\n634aab7a86.png\n4e583649f3.png\n4c3a64cb0c.png\n4f8c82df73.png\n34fee0c28d.png\n4ce77cc568.png\n67cb2d8463.png\nb9cff7bb67.png\nc36ea2b661.png\n6e4a4f8843.png\n17ca457cff.png\n4aa5b85fb1.png\ne61d5c8b3a.png\n77d71dd60c.png\n8518809291.png\nc470fd3fa4.png\n894f88afd4.png\n66ceca6202.png\n366dbb8cb4.png\nda6ddf9739.png\neb5fd4f394.png\naf8fe66d63.png\na3b4801717.png\nd24045efa2.png\nd4703bff2c.png\n7cb8401bb1.png\n4fb16587b5.png\n63b871232e.png\n57c0f3cf2c.png\n79e562058a.png\n65556f12d3.png\nedaf99ea34.png\n3c916033c2.png\n62debbe8ae.png\n33bb699ffe.png\n3b1004b99a.png\ne694b95fa4.png\nc2e472a205.png\n5f1bd25287.png\n5bc16d8dd1.png\n0e0efa0166.png\n90ebf56f6e.png\na4d44e2c7d.png\n80db571e2b.png\nfeb9ca88e3.png\n4a4e33c15e.png\nd35a7e87f5.png\nee308764e2.png\n070ab527b1.png\n5b281d742f.png\n57cdf8ac6b.png\n5a7d0e837a.png\na535f4e908.png\n2dea78df15.png\n95d55a10f2.png\n1bfba17615.png\n75ec408017.png\n213e942c77.png\na6f63524af.png\n31c6a2860f.png\n00aaa5b7f4.png\n6852ac83d6.png\ne2070fdf67.png\nac1854ccd3.png\n4b04101375.png\nb97ac031ff.png\n2cf50a51a0.png\n7e713574ed.png\nf4f94415aa.png\n4a021e9e3e.png\nd1b3ac82c3.png\n709f59e611.png\n4d7ff23978.png\n3606703e6b.png\na06546807e.png\n906cdb0f91.png\n837543dddb.png\n1351d43f41.png\n920d7f4c5a.png\n5bf185daf4.png\n92d0113e12.png\ndd3d4091c1.png\n688b56cd43.png\ncd09e4859e.png\n2959cf9916.png\n0a9712e8a5.png\nfbc0199119.png\nc491ef1f9f.png\nd2d362db2e.png\nba38c8759f.png\necd210735f.png\n42f9e766c4.png\nde2ce9bf28.png\n4c99a92c2b.png\nd71590e987.png\nd57917d8d8.png\n38edaacd98.png\n5f28c579a7.png\n51fd24701d.png\ndc47477270.png\n65ee9780bc.png\n7ce692067e.png\n4487941235.png\n683fb67c92.png\neb735d8274.png\n92564491d9.png\nfcaa836106.png\n5f384be473.png\n0f054c214c.png\nf26273bfeb.png\nf64e69ccfe.png\n08371860e0.png\nca1b6771a0.png\naa0e831f50.png\n99b27c5760.png\nea4ee37cea.png\nc2b6747f68.png\n8a9780932d.png\n6d545391d1.png\n1e889b5203.png\ndd92524ddf.png\nd05ad715e2.png\nf21b46a988.png\n943daf2fcb.png\n93facfbb35.png\nb44efbf44d.png\nb722380b7f.png\nf3b0873046.png\nac700035a2.png\n68220c08c2.png\n5a69e74675.png\nd50b6c3267.png\n65353fa69b.png\n44e0f2c9c7.png\n48e86df5c9.png\n96196151be.png\n28e55ba73b.png\n09fbd62e87.png\n1196deafb1.png\n41be9a5164.png\n953860af74.png\n4fbce04350.png\na336eeacdf.png\n267d02b0fd.png\nabaeb87b3f.png\n82d65941ec.png\nfc7fa22730.png\n4acda6877e.png\n651a594743.png\n7922ae6d9b.png\n86a1ed83c3.png\n5d318847b6.png\n2f673006e2.png\n1e94d3d832.png\nfd5cc36d93.png\n8bef77c6f4.png\n68c205d1e4.png\n7639365121.png\n5fee7724fc.png\n256c8caa20.png\n49c3835f0c.png\n45caeb65cd.png\n4782e66916.png\nb9463e78e6.png\n17f320bc00.png\n68dfacddd1.png\ne59003dfc4.png\n8f80ef62b2.png\ndfbdbcb4f7.png\ne8827bc832.png\n64266e4d4e.png\n8baac34c90.png\n12503e67bd.png\n2643c25e2a.png\n3974e9d32e.png\n2588e3481e.png\n4730f5a23c.png\n0c2778b69e.png\nfdc2d50f42.png\n375a8da879.png\nfb21ee1ab4.png\n566e168f8c.png\n552467d680.png\n40e3262fb1.png\n3e991d73fa.png\ne2fade489b.png\n933d90f822.png\nf3a13b06bd.png\n3287f756d4.png\n62f02d3e0e.png\nad7ac7b47f.png\n060e0dd7d4.png\n5bb5258677.png\n6c10ab3d93.png\n1001eb37e5.png\nb1b0090486.png\n4f1c44860a.png\nc137884306.png\n1144b8dfed.png\nd20e50b054.png\n178f33f196.png\n259c78b1f0.png\n7ab5edb803.png\ndbb637eebf.png\na03848e48d.png\n163dbc14cd.png\n96fce23186.png\nc539d447bf.png\n6331b430fe.png\n84123cd149.png\n38263b36df.png\nb9fd7d330a.png\ndc3c0c492d.png\n6237eac159.png\nd941b83446.png\n2d9abe1e25.png\n20d0d1f973.png\n66236629d2.png\ne8d5563783.png\n0416ba85bb.png\n22594a646a.png\n94dc4409ce.png\n734bcacca1.png\ne3699b796a.png\n4d19875184.png\n536b6405d9.png\na2c8d323cc.png\nc44a16349c.png\n899d1000fe.png\n1832ab22f3.png\n7238a260cf.png\na87c29bf6b.png\n3e56432fea.png\nc6e3a3feea.png\n0db6588bf9.png\n3011508959.png\necf74e005a.png\nf82cc7ffe3.png\n15691df1b1.png\n032177aab1.png\n00d51ae232.png\n564f4cc077.png\nd43149afb9.png\ne236f6035a.png\n22c42f88ab.png\n0bec31a789.png\n2bbba74c54.png\ne169daa2d7.png\n6284db1276.png\n2135dad339.png\n8bb4d98d6a.png\n73658121f9.png\n01eab004dd.png\nd4b9cb057f.png\n7b5e37063c.png\nde2d8f0fd6.png\n7d2a222b14.png\nb4a2b76dfe.png\nc5d8f51521.png\ndb714e7d68.png\n10c66588d5.png\n82c95a0ab4.png\nab301a4e93.png\n73a091665b.png\n01b134167c.png\n43b65acf38.png\na2c697968b.png\n76afc4b8e8.png\ndfe6acb4b9.png\n2777901446.png\ne2b7d2f1ca.png\nd0c9e7f9c6.png\n986f9cb702.png\n83e2b18761.png\n7dd235711d.png\nceedc60808.png\ne03be6ad65.png\nb12a52e09f.png\nec2fb1a42b.png\ndf3fa9de04.png\nead08fb62d.png\nce2c3ed5c1.png\nab1efdf03a.png\n4c89d6ba5c.png\n98919a128f.png\n1215d3d0e0.png\n3d158db770.png\n31d2ea0306.png\n2fb7fa40ee.png\n58b6687314.png\n79f1ed9ebd.png\n4ab227936f.png\n13be34d712.png\n6e634a6fd2.png\ncab90fda72.png\n56b581d1ca.png\n259262e35e.png\nc8505be4f8.png\n661a4a99df.png\n7f9f059f8e.png\n9b76ac365d.png\n03837c9b48.png\ned11bbda4f.png\nd9aff0b72f.png\n1410a2c9af.png\n0a6605d064.png\n0ca984e5b4.png\n2e1af0654d.png\n4dbd529a9a.png\ne9a1ccaee4.png\n3a479d449b.png\n100c1f042e.png\nc901e3db9d.png\n435935f0bf.png\nf1c78adac1.png\n59ac415c45.png\n2fb64df4f9.png\n9f7f3b3c88.png\n12eb26825d.png\n1f00c16021.png\n3e7f8f6b33.png\nd15e59193a.png\nf066ef45be.png\n21ee8615f0.png\n94f4c2e264.png\n94f94ed836.png\nb7838fa9a6.png\n29940401c6.png\n777a42ca36.png\n98b2dfadb6.png\nd96f1003cf.png\n21036cd656.png\n6206b55810.png\nf2ff5ef2b7.png\neaadfd33a5.png\nce69bd4ece.png\n79950869a4.png\nb4c5f0d153.png\ned22b7c4a2.png\n32b6780741.png\n4287d43823.png\nb380fcfa80.png\nd802b933e3.png\nb1d038b961.png\n1a2196365e.png\n4ae24ea066.png\n147a36429e.png\n9bc6f25a04.png\n4cdff73936.png\ne09e63b36c.png\n05e6941139.png\nf49f7aab7a.png\n5a3ddb7980.png\n6c9e7df548.png\nce062742bf.png\n4cc9c51c09.png\ncc3fa7233a.png\n4aec150e7b.png\n67b6a5a9de.png\na3c6ed959e.png\n6e5f8caed6.png\n75a285c615.png\n0e9bd4e164.png\na4cede6f59.png\na630afad97.png\n87dcac9eea.png\n677f4cbc88.png\n229a939c86.png\n14f01b8876.png\n05a54ab210.png\n3d57917af7.png\n3831b3ff1c.png\n28c4c062c6.png\n6b2d8a1c1e.png\n25094044ad.png\n0ce88ce9c7.png\nf2b0f2cc91.png\n961c64fe51.png\n8df7b2c99e.png\n4f684f7764.png\ne7e1dca0aa.png\n6aaddb7b41.png\n24f57fec17.png\n73cabef9bd.png\nd3b4bcf92a.png\n230b7b8d21.png\n70e6f8f3bc.png\nc0572f0f52.png\n4bd29d99f5.png\n0b10d5525d.png\n4df9af6dd8.png\n56877ea14c.png\n1d5ff29422.png\nedc9216897.png\n4150e85a49.png\nae9da06afe.png\n314b80176d.png\n1eb92902a4.png\na40e1112da.png\n9d9988ac9d.png\n84a42703ee.png\n78153bb977.png\nb788015db8.png\n9061243d58.png\nbac45161c9.png\nb804c702fe.png\nff29cd153f.png\n527c9dd65f.png\n2cd4095182.png\ne8f2ace48b.png\na11c4322e8.png\n17ef7c6253.png\n63f3762727.png\ne1721bfe62.png\n51902003d8.png\n9a76952b63.png\n1deb46ea81.png\n3825eb8722.png\n31aa522509.png\nd3757f9885.png\nf49380471e.png\n6350e7b9ea.png\n50580fb78e.png\n54296f679c.png\n85813f234e.png\n3c975c06cc.png\n5b7d9ed799.png\n7cb4bf1ca6.png\n39b07bf42a.png\nfd6cc6ecbb.png\nc00a5cdd62.png\n076670cc1c.png\n8b27b0910f.png\n7f45ef3c24.png\n2f91b6f34d.png\naec734e4db.png\n5d0410b2b2.png\nbfed194c18.png\n553d0ed5c3.png\n5a06c45958.png\n0d15b3011a.png\n88ba38dab2.png\n525fdefea3.png\nd376de0a55.png\nd7e63b028a.png\nc172f3ca08.png\n17d4b5e4e6.png\n5b0dc2a3ca.png\n619fa9083c.png\n2230bca035.png\n49aeb06689.png\nc2ec2c9de4.png\nd607fd7e0b.png\n033029547c.png\n5e95c5418c.png\n1ddf6944a7.png\nd56c4da533.png\nee4a501d81.png\ne2775a3b33.png\n7d2ad19738.png\nd934a53d9b.png\n1262067f6b.png\n06665f87d0.png\ne778f4c95f.png\na0447d64e2.png\n8a83f122c0.png\n1b7ac7bb31.png\n538befb2d5.png\nfed6020461.png\nb0e07dd157.png\n3c0012cf47.png\nf389e1ad02.png\n68f0a9f47d.png\n98e63a2729.png\n23dc46cef1.png\n8ac0fe0392.png\n8976fa79e7.png\n4801e6c341.png\n77b35c01c7.png\n875e1a2d73.png\n8126503a2e.png\n99d18ed201.png\n6f452a72e9.png\n5ed1c2294d.png\ne5c3b78df0.png\n447e2666f2.png\nfbbc4ef116.png\n175804ae16.png\n427387c25b.png\na7c9e07706.png\n9d9a5cfece.png\n4f34c7f252.png\nacdb7877fa.png\neb86b8c715.png\nd91a887ed2.png\nbda6b91790.png\na20f3d52d0.png\naa3f48ac07.png\nde69685b70.png\n86321af3bf.png\n82e0f71730.png\n14d9b671a4.png\n1d8a5c0fb1.png\na54d55c572.png\n14dbe534d0.png\n52fb476677.png\nfcdf222153.png\nca5226f983.png\n9d2eafece8.png\nb5b762cc9e.png\nd7826e339b.png\nb4e067c10e.png\n0910edcf69.png\n84d6b146a8.png\n1cb2fde971.png\n7194629d17.png\ndc9070258f.png\n1572629edf.png\nd037cfacb1.png\n512d7e9115.png\n86142b66cd.png\n356d5e4e49.png\n4af50b7c23.png\n46d4cce6b7.png\n343ea5c3b8.png\n29b42ba485.png\nfb8d42aeb5.png\n5fcb672d96.png\n8b3edddb86.png\n13e1e4670e.png\n935329585f.png\n87db3bb36f.png\ne04715a8e5.png\n59641cace0.png\n6aa4963e22.png\ncdbc142c7e.png\n42d68dbc86.png\n48c7477de8.png\n0c065a063b.png\n8f64d370c5.png\ne8f48a2038.png\n8280397ff7.png\na3bfc5a549.png\n145335fd03.png\n457b6caea7.png\n4dc913ff73.png\n50ac0f2474.png\nd65ad5c777.png\nbb173e1ef0.png\n0d9f17158f.png\n9877b263a6.png\nc36f7b3920.png\n9ca2242c33.png\nbe5478366a.png\n967958f50b.png\n4757068b17.png\n6193839fa8.png\n92cbec90ac.png\n681910e8fb.png\n24621be803.png\n533c11374e.png\nefc0369a2e.png\n9bb238c99f.png\n0a746dfb52.png\n6550e7b59a.png\n55d3fc0419.png\n63824b7412.png\n98872fcf4e.png\n2cdc2c12a3.png\n58c362e010.png\n63d0049fd4.png\n74575644bf.png\n6e1232c356.png\n91f07b5bb6.png\n4c4d0194fc.png\n36cb81c54e.png\n389ceae5ba.png\nbe088426cc.png\nda8c2994e7.png\nf8ff29eba9.png\n28da93197f.png\nfcf5a2aa19.png\n238dad4016.png\nf40b354125.png\n6b36c0a954.png\nff18770185.png\nc69942be7a.png\nc95b654fb9.png\n27c890d8b3.png\n43710ef977.png\n5a0e07149a.png\n8f4b5f835f.png\n2785d33497.png\n1ddcb58933.png\n24efbcb089.png\n57df29302d.png\n2d230a0550.png\nf4365363ef.png\n26c09fffa8.png\n3f8dab943f.png\n2832423eb9.png\n715faa9d3f.png\nbef04e89bc.png\nba47b8d963.png\n4d0a24c425.png\na7f6142fa0.png\n37742e5f10.png\naa0f87b252.png\n5ce76a572d.png\n9dfb81996b.png\naeff4535bc.png\n54af8e4d2e.png\n95d6538296.png\n85ef988548.png\n4431e6768e.png\n9991d31572.png\n7caf112c28.png\n9dc2a6667a.png\n49960a0373.png\n9a4c770131.png\nb0c2b9a9f2.png\nb09d843d5f.png\ne3fc4ea5e8.png\n53cc45fbcf.png\n3d12cf2051.png\n3ca09d9e5c.png\n37e459b035.png\nb6c3fc77ae.png\na227e7f1da.png\n5a3946f871.png\n2e80aec171.png\n136a686679.png\nfec37b496b.png\na95461312e.png\n36a2715c09.png\ncd34f93d5a.png\n4b264383e4.png\n83eb3d2cd4.png\ne4970114f2.png\na28e9a56a4.png\n690b29e4f5.png\nfcbda0c85b.png\nf0db14f93e.png\n910f26f2e7.png\n97ac7d5eee.png\na235adfab3.png\ne085780d3a.png\n772ebad9a4.png\n8c860c8b88.png\n2565d98748.png\n6169381013.png\na1dd97eff3.png\nf90accfd37.png\nc0b9277880.png\ne589937bda.png\nfbecb60564.png\n93bcc09673.png\n38d61f0fef.png\n1bff16cb1e.png\n3be5267c36.png\nbfc495e840.png\n536decbbed.png\na8718f10cc.png\nad972c7127.png\n834437456a.png\n11cf17a0ed.png\neb84ce7263.png\nb00430ef37.png\n0c1a420b5c.png\n20f0e2dfdd.png\ncb36e2e2ae.png\neaef4c3a5a.png\n84d1245b1c.png\n4555582431.png\nc1d9f5d8d1.png\n4fe35f1f53.png\n0c3cdc4486.png\n164530d3f0.png\nd89c8c4e3b.png\n92165511b1.png\nf4f0625dbf.png\nc63a278bac.png\ndf4275e6d3.png\na26ee36d15.png\n9de0eaded3.png\n12de44ce0c.png\n1184b70b09.png\n547b7e3237.png\n048ced84d2.png\nffb5a4a57c.png\ne3b8f5e02b.png\n220066ba05.png\neb0707f881.png\ne3519d5537.png\n7c0d3a28a1.png\n24bb32f0f8.png\n72e90f437c.png\n4e4fab3bf3.png\n38272bc266.png\n50e42267af.png\n68a5d5d7ce.png\n36c2188143.png\nba0260e3fb.png\nf777740f86.png\n4501df1f39.png\nc4a41f979d.png\nb5ed436d27.png\n649c70eab7.png\nb58742de47.png\n876dd03fbb.png\n8b1d451770.png\nfadefe071c.png\ne3fc3bd709.png\nf5abd9a08a.png\n2bfe79c7c6.png\ne3493e23f0.png\n2ad1ace6a6.png\naaffa385df.png\n10aa861f59.png\n3adea2aede.png\n495f652399.png\n4e8167fe05.png\n1d7bb8a0b3.png\n8507aeb1cb.png\n313a79ab24.png\n5375adb7dd.png\n5664870cd3.png\n368fff8ff3.png\n9f75213aa3.png\nc3ceb42632.png\n69d9edeccb.png\nd9cf5a971f.png\n10d142f54c.png\ne855773fbc.png\n2c7f7f93a7.png\n9896d6ac33.png\ncbd8199a3a.png\nd9fe7e4fce.png\nfc017371d0.png\n8ae4c4eaf8.png\nf273589439.png\nd728765746.png\naca781ea7d.png\n34adc69da6.png\ndbfc10558b.png\n4645308ab1.png\nd6e01e97bd.png\n38b090e4a3.png\n22a2288e0f.png\n15c043279f.png\n9666274ded.png\n17e9169813.png\naaa30aba1e.png\n17fb9d852c.png\n08017b8e25.png\nad04472e14.png\n9993baa4e5.png\n663821acb8.png\ncc21d3af94.png\nb6bed493ec.png\nea314f7c7f.png\n53d4c8a52c.png\na6fad0fb3d.png\n71e937b285.png\nafb4b98b8f.png\na468149f40.png\n5cc4cc40f5.png\ne5632bb2f1.png\n69af036eb7.png\n6868facb17.png\nd8ca3bb8c8.png\n34625fbc1c.png\ncda102a81b.png\n4789404953.png\n8c4f5c8935.png\n82ee3a1413.png\n6e2ca15d41.png\n00b6d3a31f.png\nc768d42da6.png\nae8823b009.png\n41d2667f7c.png\n4cf99abf91.png\nf7a8c1442e.png\n093e16bfdc.png\ne2f17cf732.png\n9ccba7ec23.png\nac1aefb611.png\n56dce16be5.png\n63a0fa5b43.png\nc9512a289b.png\n569214f149.png\n7ca0a71ed2.png\n598ec4a143.png\n0a8fbf4379.png\n71f0e0759f.png\n20b000b00b.png\n2f07cfbb01.png\nf369ff14ab.png\n84d61225fc.png\nf1c0279b35.png\nf66b4e58d5.png\n75ab739866.png\n5636457570.png\nb169f405fb.png\n2b157ab430.png\n690fab72e2.png\n80d7cdbbed.png\na2b3dffa6f.png\nafcddf4696.png\nf3c5b41f11.png\nd3d97e53d4.png\n7f7fcf0a7b.png\n328e232d2c.png\neb8720bb47.png\nf094e60180.png\n74cb9f9a6c.png\n3f57f5288e.png\n54b1c1d5bd.png\n0fb8a865dd.png\na6b5ba6921.png\n1a7497f2c6.png\n5d36a9659e.png\n007c7c7dcf.png\n4b50ad0e65.png\n22a4bbce52.png\n79e829b445.png\n27aad9dc3a.png\n0bfed731a5.png\nf44850f63d.png\n00a6bfc7a7.png\n15c58c3f7c.png\n1a5c58280d.png\necda478e37.png\nd528409626.png\ncae81d44d2.png\n02ad64d551.png\na8c3aafd2a.png\nb32c994c11.png\n52c9a7d0ea.png\nfe6361c582.png\na8a8e4949b.png\n3659fb63e1.png\n7aeffacb7a.png\n0c9ce1e818.png\n6a3da583b7.png\n8779738220.png\n97ea7698b8.png\naf1b38af1e.png\nc2eae5cd30.png\nf976134657.png\n76b6c9025b.png\ne2c081fd15.png\nf72edf3035.png\n78f7d2a79b.png\n591ea9bcdb.png\n6aee0e5621.png\nd7d6a4e742.png\n9106efa654.png\n7a00981494.png\n6bdcbd78dd.png\n2e6d2556b4.png\n9f5029183b.png\n0be16f65f8.png\nd2e5dc1a0b.png\ne891e8cdad.png\nccfd0dd652.png\ne224e91c50.png\n80d05ebf2c.png\nad212e6869.png\n727c1d5dbb.png\nfccebb487b.png\n566fce5ef6.png\nc42a96a61c.png\n9f2b973eef.png\nbb6a397bf9.png\nde20d35e16.png\na41339b815.png\ndacb8bebea.png\n622771eae9.png\n6bece6177e.png\n093433e9d7.png\n7de8a54df3.png\na6d2bf21fe.png\n239b0528cf.png\n80faacb8c6.png\nb4cdeee946.png\nb2aa9c7f1c.png\n002124aa19.png\nc51edbadc7.png\n9be67d911c.png\n716eb65725.png\nd034695ac3.png\nb43dba4531.png\n3da8ee4c09.png\n4bcd073e5e.png\n0c66d31a1c.png\nd0e95cbd2a.png\n79cdd2b60f.png\n5910423829.png\ne4dbcffde6.png\n6040f6b5af.png\nba951493dd.png\na39dc1c7d1.png\nbd388b139f.png\nc0b1d5f314.png\n3b5368ede9.png\nffecb03e46.png\n3c50c38749.png\n5fd8556f1b.png\n5593543b84.png\n2407342da4.png\n5bd4b0d116.png\n9327ed7fc3.png\n6288726a58.png\na08783f5fd.png\n9501e38344.png\nb2343c89d7.png\nda98867337.png\n103035b94b.png\n9f6d0b9e30.png\n0ea4e8145a.png\n22e0d4d976.png\n0f23861d30.png\n49c5661e21.png\n239f80dbf5.png\ncce73f7dd4.png\n3ff987c2e4.png\n3139acbbe9.png\n4230e4510d.png\n0bf3bff34d.png\nccae28c451.png\ne1cbce6620.png\n617f00b8de.png\n58bc52866e.png\n67840ed90a.png\ne4705d28d5.png\nada919169f.png\n3d882b8d41.png\n40fdadad5d.png\n2160b09db5.png\nc92ae135a1.png\n450715077f.png\necb3bcbe7c.png\naed722bd3b.png\nf63f03c926.png\n0be8956e00.png\n5a109d6ff4.png\n3f325903d7.png\n1ad9ccb904.png\n4f29c4cd04.png\n38416b901f.png\n8fa965a12c.png\nfc74f77bae.png\n2b4049f833.png\ndb0fe6fc41.png\n5a80185b1a.png\n51ed1f2aed.png\nb813b28cf2.png\nf92998b2d2.png\n32fc8d7cd8.png\n77d0c793f9.png\ne96dc1f42e.png\n6347c18183.png\n33c2c53893.png\n203bd03cd1.png\n4b59ccd023.png\n8ee22588c5.png\n77f958ff1b.png\n5cbaa0c09f.png\nc8254ec3b4.png\n9bde066865.png\nd129dd38da.png\n82b1901574.png\n8a48b37b4e.png\nbc5ee6b256.png\nbd2a2c0b16.png\nedb300a0c6.png\n550ffbb9f8.png\n7c55edb677.png\nb2a129276d.png\ndb5fa9a654.png\n701c8ddc8a.png\na5b0ce8395.png\n520c426a43.png\n420447e7a6.png\n328ac22108.png\nea1d553565.png\n8cb3525ca4.png\nef719ce0f9.png\n3d969bc3cb.png\nae14c389bf.png\n53560dfd35.png\n1f320a021a.png\na52f9258e6.png\ne432bbadaf.png\nc7f8839a1e.png\nb0869b33ce.png\n198b605afd.png\n7f196f6711.png\n7fa55c8e4f.png\n42c6942544.png\n747141df74.png\n96dd878ace.png\n3fd9c0ffed.png\nf8723f9dd2.png\n60cad4fd1e.png\n9b9c0f8eb2.png\n97c42503fb.png\n9c6b016819.png\n6dd12af82e.png\n5358961921.png\n4289f167b7.png\n03a2677daf.png\n9e46a3352e.png\nc0e834f392.png\n1a407db63b.png\nc2db0d0a66.png\n213d9163c6.png\n78211a2b74.png\n4045285603.png\n0ea4f97315.png\n04c4a4acdc.png\n59b5c4accc.png\n363cf09985.png\n74a6423226.png\n3f377767ea.png\n98d115e32d.png\nf81a3e3c9c.png\nb329875de2.png\ncb63ab8cde.png\n75d91acabd.png\na487cbafbd.png\n7e584d50b4.png\n75b273372e.png\n3e8b104f48.png\n4c4991aaa9.png\n91c4dc1e59.png\nc16f939a6f.png\n98e2d2aba5.png\n68cd77317d.png\n15921c04ea.png\n2c27610d37.png\n841fe8b503.png\nc4902fb3f1.png\n195b9ae705.png\nb368971dc7.png\n1637d12136.png\nce8add65b4.png\nf30eb09e9c.png\n25fdf34ca9.png\n9a81355819.png\nf66e94caad.png\n464e8483f0.png\n01dd84b7dd.png\nf7282eff57.png\naaf2dcbb36.png\n6614d038a7.png\nd5b845a346.png\nb16bea9a38.png\n3eef3e190f.png\n7ae288db6b.png\n7b7c7b6488.png\n52346bbc4c.png\ncad643a3b6.png\n403a7b5de7.png\nade356fe0a.png\n731bd710ad.png\n2a4a5d2b71.png\nd6a0d579f1.png\naa8b2d0fbb.png\nb20eb9e813.png\n48b61d9b9c.png\n75cae57c64.png\n82a15ecee7.png\nb2d7e9d9b0.png\n5febd850e1.png\n49a27aaaf0.png\n3606ccb4e2.png\n7401d2fbbb.png\n14f25502c5.png\ne32452b10d.png\nb7fcb32056.png\naa4cb435c6.png\n1240a6ce3b.png\n52b98a62e6.png\ndd15ac9493.png\n9017195c55.png\n5bc61454ef.png\n216f53089c.png\ne5d57c3fbd.png\nbc26da3339.png\n0aa90143db.png\n90fd5ae87d.png\n4d77975b6f.png\n6e4ac641d6.png\na4dffd26d3.png\nca7c651e29.png\ndfced982a4.png\n81fdac0b58.png\nd4afd342c1.png\n15586bd7ac.png\n2731a8327c.png\n446e131acf.png\n97fcdfcb2b.png\n6b5cc16048.png\n0e5156bf25.png\ne238748543.png\n5ca63e94e9.png\nb7c27ed70c.png\n81c9c9365f.png\nc24839469c.png\nccdf60d661.png\n6be85fecc3.png\n868a08ed2a.png\n6d7774165a.png\n39eeff5b3d.png\ne5d64a2aea.png\ncbc5bd4021.png\n173b15430f.png\n22546c69f1.png\n8f13f14cf0.png\n5bfd9e78d0.png\n875b8313fa.png\n9ea6ebf3d1.png\n7fa98fc471.png\n08b117294d.png\nf876ebe60b.png\n39377f4740.png\n8bde7fa6d3.png\naf26a47641.png\nfdee9fcb31.png\nd5b547eaf2.png\nb47ad209d4.png\n901c578a64.png\n7562462083.png\na35093b0f8.png\n3e47fdb169.png\n1a0975b0fa.png\n442fc1d9de.png\nfa230ac409.png\n9a836057bc.png\n917971eeb8.png\n29bf18e23c.png\nc8bd931f39.png\n511b704f00.png\nfc835386e7.png\ncd9d726e26.png\n8441ee9ffa.png\n31d9475776.png\n01f2b031ac.png\n370ef12310.png\nb2d4c41f68.png\n86c8fd7185.png\naafb84b530.png\nbf8525523a.png\nc17dd92387.png\nafc846e1e5.png\n540c5a8294.png\nb9711af26a.png\n5299cd2c33.png\nf9fb359f7d.png\nb9a3a4935d.png\nf6a63121f1.png\n6c65ab86f5.png\n577c96c270.png\nc2a2ad1fa0.png\n44c1acd6e2.png\n63a1777e28.png\n3dfef75f8e.png\n4961bb7a3b.png\nff55cc5361.png\nf6ece7409c.png\n076eb6998e.png\na00d39a13e.png\n235fce1c1e.png\nac872800c9.png\n3922843c4e.png\n6a73082b55.png\n24d42d4499.png\nd5992222c3.png\na99b61c527.png\ne040765722.png\nf614477668.png\ne5bd8ae238.png\n24cd295677.png\n0d41d039cc.png\n2a0c3c2aee.png\n639103c523.png\n30f085c4e3.png\n277be83e7e.png\n5b807c2235.png\n290b6aeb20.png\nc2568dbdcf.png\n79b39472b7.png\n43287380d3.png\n553c6f13ab.png\n578c9f94f3.png\n538b835716.png\ncbf0cdfe2a.png\nf1f5ef7e45.png\n2567b0c9de.png\n1363323721.png\n553655c199.png\n42ad1eb10b.png\n4bf7663d30.png\ndeb49604b1.png\n6b7f4a1a91.png\nbaca775a49.png\n6a49954583.png\n87c1310f25.png\n629d13dfeb.png\nb0c03d1040.png\nf68ae5fc4f.png\n86c49fac6f.png\ne00acaaec7.png\na4554beb3c.png\nb54c2fdf03.png\n3b2be010c4.png\n06446b9d8c.png\na4e2723074.png\n1fd17872d4.png\n05ef6e7154.png\n48fb4775d3.png\n569cb8bb6b.png\nac50e41f8a.png\n043ed7fe5e.png\ndcee7f62ac.png\n0f2381dc96.png\n04e1d8f7ca.png\ndcba17e654.png\n12ad6085b7.png\nc834d7e9df.png\n63ba14657e.png\n7808f030a0.png\n4555e5fcdf.png\n10cbd21919.png\n4fb0d65a85.png\n02446da877.png\nb6332b22a5.png\ndd10c894a7.png\nea8a0439fe.png\n75a7afca65.png\nfab534d1ce.png\n41ffbf9674.png\nbc6b14c9d3.png\nd9e2dab380.png\n44678207cb.png\n0259b01cfe.png\n5cd181b41f.png\nb5672d535a.png\n1c3df8172c.png\n720d581c59.png\n6f755aad25.png\n21fe3bdb52.png\n276c7ac1dc.png\n4eeb9a13a4.png\n6654150ac9.png\nf6b94122b4.png\n76bd3c0890.png\n38a89c763c.png\nda6d3b141e.png\n34bcfef7e6.png\n9656f8f7df.png\nb6fc486117.png\n00707c7864.png\na62d4765d2.png\nd0aeae2658.png\n36c0313b9e.png\n0690bc9579.png\n67500eb66d.png\n4a5681a563.png\n643a1fb9c4.png\na0fa989668.png\n62418f57e1.png\n372fc2e2ad.png\n8cd612c0cb.png\nea4522cf05.png\na34b03c4db.png\nf74a97c2ff.png\n068b75c080.png\na4dc4e0266.png\n32a0e5cde1.png\na45f297827.png\nea5c00cd7e.png\n6642c9d86f.png\nb6d3278d88.png\n0e6f54a44e.png\n4313120f5b.png\n26a5f0bd74.png\n6acd09c3a1.png\n88abaec3f3.png\n283563892f.png\n9b5538c283.png\ne9c131be99.png\n023b29090a.png\ne93e2f83d6.png\n90859e7e87.png\nfd0aafd8b7.png\n965b4cffcc.png\na1ebb51291.png\n0fcc664e40.png\n9decfafbf3.png\n3d348e6dc0.png\n4e86e06594.png\n81560cbf2b.png\n52af742153.png\nb192ef99f8.png\n805cb4d316.png\n60373566f9.png\n576fc986ce.png\n0feeb1040c.png\n76fa8ec9a1.png\n5fae53bf33.png\n92abe333f4.png\nea7b588e17.png\n1c165d61d6.png\nda720e8d17.png\nc3ea16ed8c.png\nf59ae94c33.png\n7bcb9044cf.png\n6d633872b5.png\nc8cc1a4dd3.png\n92c6e998bf.png\n02999b160b.png\n6f091c04b8.png\n904a5115ed.png\ne33d753279.png\nf9f779bc32.png\n31d4fdd297.png\n3b44dcf59b.png\n67dcb0ce6e.png\n6b83d97821.png\nfd31311ea1.png\n3b5aad6cdc.png\n82db07ac64.png\n93badd2207.png\nc0173ae190.png\nad61fd92b2.png\nfc81b3e307.png\n7a26e2ae43.png\n04fbced677.png\n67ba6c0b0f.png\n5c641d8b06.png\n81fd475861.png\n0b86387a02.png\n0a0cc52eca.png\n0de8ecce67.png\n0daed89bf4.png\nee6a9c3cd3.png\na66a01bd98.png\n8472683427.png\n5a93345d97.png\n810d63ce0c.png\n725c079100.png\n82991308ed.png\n44b4548573.png\n0958fdc7bf.png\nd2355eb92b.png\na11f564ac5.png\n21b690be65.png\n81be859449.png\na9593732f1.png\n3cd8674cb2.png\n9b933aea52.png\nb8e3c83fd3.png\n8cd826bc5b.png\n5a1e0d8d51.png\n8f8dcb2506.png\n747af0ae75.png\n47c58dfdae.png\n8c9f8d0790.png\nf5865bd6ff.png\n0e3a142be1.png\nfe1e39f435.png\n41b1e8e333.png\n17d27ccb9e.png\n2ac1aebb6d.png\n15d731142e.png\n7d60e50a98.png\n4f1c683f81.png\nfb4bfbfd88.png\nfa44a921f8.png\neae4111384.png\n4603c0743b.png\na560bed6e4.png\nead48d81ae.png\nc5779b8a86.png\n99e331e803.png\nb5a137afa4.png\nd9443b3376.png\n3bf345cd29.png\n78d559a80d.png\neeb676e37b.png\nb14736ed95.png\nd6b48fc0b9.png\n0fbf301a5e.png\ne3900fce68.png\nd92a3528f6.png\n9ea14f1617.png\neae2a8b2ef.png\n7d0ab4664f.png\n20c468c70c.png\nbf358cc90b.png\nb79b0318fa.png\n5e8440e745.png\nb46cb148e9.png\n09be9b3f94.png\n6ec4de436b.png\n87cf093046.png\nde14d598bc.png\n37062e1138.png\n93c17f9615.png\nb6d5ad81c3.png\n61291bc911.png\n92e4968815.png\n7c08e09f87.png\n563d40e991.png\n4b05f60263.png\nc9907b0008.png\nd39077b54d.png\nbaa4f4a656.png\nf10e03cecf.png\n41b11a12e6.png\na0f76db166.png\n35452780b5.png\nc42e2dbf2a.png\n61071d8a4c.png\n87ecbd03d6.png\n033c0ecfb6.png\n11e4c5d93b.png\n7de3a34407.png\n754297deed.png\ne110c5bf98.png\n40f2443ba3.png\nab7eb91a82.png\n759541acc7.png\n361efa9093.png\nf1f93ae87c.png\nc49addaf55.png\n80eae07846.png\nbc69ed9589.png\n5da5ddb2e2.png\n2c312d9f1f.png\n9e64d5f765.png\nd5dcc34739.png\nde682a1eb5.png\n61e325ac65.png\n74b54e1925.png\n938ad4fd40.png\nc5d0701e78.png\nb9e6350f6f.png\n445ee07efe.png\n871cdbe362.png\n2ce7a9e81b.png\n0b584a37c8.png\ncaf12d30ab.png\n0839b6cf1a.png\n1c1d062bca.png\nf0272d1ea0.png\n8fb440fbad.png\nc8a0a0c511.png\nf9ebff804b.png\nb4f8f7e136.png\n6230e29f51.png\nb01d2e5375.png\na54da7eb9e.png\ncd3b8db4a0.png\nc3edae73f9.png\n06050de815.png\n61ba42e450.png\n6e1e4abee9.png\nc0933729ea.png\n6eb7db0910.png\n3ba256ba46.png\na0fa330a03.png\nf06a2c2849.png\nb5b9b37a9b.png\n485e70caef.png\n0d3cdf8ada.png\nf9b563d232.png\nc376dbe602.png\n01aa774656.png\n53bb18ce06.png\n1bd88b6b5d.png\ne8bda05582.png\ne6714fd3e7.png\ne4cc57f730.png\nba5cd51d20.png\n1b818ee74a.png\ne4ff4bbfd3.png\n67ce646767.png\nea3a61e257.png\n32d3368584.png\n5c635d62ae.png\n21337b258f.png\n533cb21516.png\n3e6b6146a4.png\n9121e2f1dd.png\n92944e2aab.png\n6d4837b498.png\n02dae1c38d.png\ndbc99c3182.png\naaac9f9da2.png\ncab729cc02.png\n9c740fdea9.png\n5987f0b196.png\n3f1fe84513.png\nf3b6e11340.png\n939ec7a920.png\nf83888b84a.png\n07244009e3.png\n64691b048e.png\n5beb3977b4.png\nb7e9aeb1f1.png\naab9d19cd3.png\na01b8c4af5.png\n06c6968589.png\n021594d8ee.png\ne40a992524.png\n9c44868c96.png\na344f31c96.png\n115485e965.png\n988f29b4c1.png\na19a483998.png\na443637ddf.png\n38049a710d.png\n8f25e6d0d6.png\nfa68bdde45.png\ne414c58d11.png\n8ef841cae8.png\nf419aaa1b8.png\n5c2a235f47.png\nab0f420be5.png\n277678b119.png\nf5bae9cdc5.png\n9f60bf97a9.png\nd410a74e8c.png\n4ed1276470.png\n8d4644da68.png\n8f955e935c.png\n7ba36e3032.png\n20482a66e6.png\nb37ebb4c18.png\necd1737bb1.png\n9834bd4034.png\n6db8231d14.png\n26c403ce6d.png\n726c429e57.png\ne1d267dd49.png\n1ba354e42a.png\n0ed6516b91.png\n59bdabe3ff.png\n864ed26714.png\n311ee1dd72.png\n8c521772c8.png\nc955f688f3.png\n9f0d6b4bbe.png\n4c8dab3f1a.png\nb4f806f74e.png\neb2e928dba.png\n5fd6a2da0d.png\n441888f897.png\n90b82efe82.png\nd430cdaadc.png\nc49ef24cd2.png\nee609c01b5.png\n88bacbc4b9.png\n25a18d1cc8.png\n4bd2d2981c.png\na7f209b6d9.png\n6c74777cbf.png\n9edc9cd726.png\nd0a0d48334.png\na024514486.png\n23e7ebf95f.png\n7809e5b59d.png\nd6b36a5082.png\n96ecbfedff.png\nbd38e4dccf.png\n6ad29a5c0e.png\n5547127042.png\nfd0c0208cb.png\n45c637499c.png\nb6e77d3212.png\nb36d540a8d.png\ne53d96b2ce.png\nd2d97caad6.png\n4a7c0517d4.png\naa10246dda.png\n18a167d8a9.png\nd1154e5122.png\n221df8405b.png\n879937f791.png\n1e60f585fa.png\n599c69c278.png\n0d091ab909.png\nbdfa099910.png\nb129f24bcd.png\n7ac46c38d9.png\ndc35bbc9ee.png\n7f7b6a6a6c.png\nc9b35591b7.png\n148227be45.png\n43b367d7ee.png\nea3b072e78.png\n6caca4af05.png\n868bb336b9.png\nd3829ca10a.png\nb4759edcc7.png\n887ccd9e4f.png\ne93456f706.png\n7ed6de6ae9.png\n4caf753363.png\n4230b78a8e.png\nab2ff73087.png\ne0463d1c9a.png\n26ade8f8ce.png\nb4650d576e.png\nb0a33197f5.png\n833993f5c2.png\nac50daa8b6.png\n6626ba484f.png\n4f4f1baf90.png\n165ff6c3b8.png\n6d7f1db1d5.png\n12867cc74e.png\ne0b2222122.png\n4aee25ccf3.png\nb0d008f6df.png\na01ec79fb7.png\ne544c8249f.png\n85f12fb05d.png\n71fd51fbe8.png\n991f1104ec.png\nb75933e223.png\na3eff91b5e.png\n09393f1bb5.png\nc5959875cd.png\nd3c0ed351b.png\naefe24c5ae.png\neb8e6e0b8a.png\nbf56f7dd40.png\n7e5ffe9006.png\na1ef786b98.png\na50a98656c.png\n73d3d08aff.png\n499237cf6c.png\n0ffb6cd301.png\n13197aa534.png\ndce832adcc.png\nca51c2690c.png\ne34832b696.png\n96b7a3b42a.png\nae0582d77c.png\nbfbeb93dd8.png\naa78d862d6.png\n4ead0643ad.png\n0f7d72f024.png\ndcb4915c46.png\n3778554f16.png\n4fa49ff7f5.png\n82b5b3d64f.png\n6fc195d3de.png\nfba70b6e6f.png\n1f71a777ff.png\n531687f063.png\n7bb95ab2d1.png\n9f757eb55b.png\n848fcb838e.png\nad58a834a8.png\n85548b6982.png\n4598c65a74.png\n2aa30fc1d4.png\n15498a92ad.png\n8b7a361aaf.png\n447ddaf0dc.png\n22c6019157.png\n0e92422666.png\ned71454d03.png\naebc36c11a.png\n7959b9bd53.png\n9beb6c1184.png\n86aeea3b74.png\n3474bba21d.png\nc717a458f1.png\n85ff9eacfe.png\n742017e5d7.png\ne297179699.png\n4f64946e08.png\n80d529997b.png\nddd3e5ca3f.png\n46a8d5b47f.png\n5dc37f7b2a.png\n24228899d5.png\n20d433a6b7.png\nd5da2cf109.png\n494cc43525.png\nfe78577b21.png\n9b77f7802e.png\n4062ebb8f8.png\nd2d9c7f757.png\ne2aa5063cc.png\naacc6d9a4d.png\n3797fc31e1.png\nd488ebc31b.png\n28639f0d4e.png\n0892b7c9f6.png\n1db85dc47c.png\n38cc48d708.png\n83dbe763aa.png\n21c45388e8.png\n7e72764080.png\n83be87dae4.png\n28fb4363ea.png\n16ad51e2ed.png\n7e2f5c3a0b.png\ncb060ff8e7.png\n082908c425.png\n21cd732e68.png\n5edea5c7cd.png\na495e667ac.png\naa166b090d.png\ndbe5ab28a4.png\n10c40a8426.png\ne72efea1d1.png\n4d522a60c2.png\neccb63f909.png\n6f509c9790.png\na4a75dd824.png\n1d417cc926.png\ncdaa28bbd0.png\ne9a25067ba.png\n4c6c90518d.png\na070422df0.png\nfa2c779db2.png\n5a0ac0af98.png\n29605d469a.png\n7899c31f0a.png\n7056ecb2cc.png\nfa05e43818.png\nc6c65a92a2.png\nd2c4ef10c7.png\n72559e426b.png\nc6722496fc.png\n826b1b2ec1.png\n56fec9fc41.png\nfcbe9ea985.png\n8af8d5fadd.png\n9d9f348b03.png\ne755b8f086.png\n7e325e7a9d.png\ndfe7e1c7ac.png\nd0a54afbc5.png\nb0d0386a1c.png\n20110b03bf.png\n85fe1cb502.png\n5dff1ecb41.png\n4c5ba6aee9.png\nd2ae89c1a9.png\nd7d6cb4a8e.png\nc4f145aef7.png\nf7b409e684.png\n7a9729505b.png\n5af256bd64.png\n13c3fb3de1.png\n8d1c74ff65.png\nb88f677a39.png\n90efc61382.png\n0f482a81b3.png\na6f46b656e.png\ndafc37c9b5.png\nd99216cfbb.png\n17d4d42273.png\nc5fbc0612f.png\nfee2a9e791.png\n9c4d9fdb92.png\n81d51f7eaf.png\n7d185a151b.png\n9653eda8bb.png\n293636b7d5.png\n7b9b43e231.png\na3dfaa5fab.png\nc9fd06a1f9.png\naf7343b7e3.png\ne3f1cd2bb1.png\n521d437270.png\n3e75a0f7d4.png\ne0939d3faa.png\n277bfa9b8f.png\ne86a7ecaa5.png\n575fcf27fd.png\n35b730549d.png\n8f45dcab28.png\n83f98d2c24.png\nefb349eca6.png\n1b7497985f.png\n22f989d627.png\nda4679232d.png\n93a9e01734.png\n86eb3e77a3.png\nf21da6e691.png\nb184282a6a.png\nff4f821746.png\n859c40e162.png\nab5278f9b7.png\naf2901932b.png\n2587f44a00.png\n98aee6595f.png\ne7cbcd855e.png\n82b62ee3be.png\n06fa0b053b.png\n0f776d1a05.png\n0e1f6f4a9d.png\n4f34a8f76a.png\n4a800ed06e.png\n6661af933c.png\n7c530a9085.png\n38413a2fac.png\n1b818dd025.png\nf17a9a04de.png\ne4177132c1.png\n60ba38f87b.png\nbebc672259.png\n628dc60af6.png\n40512c6d02.png\nb0e7a894c3.png\n93ec7f697f.png\n1fd2701517.png\nf1681f27a6.png\nf2b63204c8.png\nf045946cb7.png\n431a019f05.png\n0fec368473.png\nf3ce9ff03e.png\n914f9a2e4e.png\ne3f1908c35.png\n2662f5581a.png\n8d9d768dfb.png\n9d302f4085.png\n106d450f14.png\n6cea60aa06.png\n3f35c6241a.png\nf3bf3050d0.png\n8d35b213a9.png\nc79df71fb3.png\nc45bc4c599.png\n5b01231632.png\n28c49076d1.png\n3d558ae0c2.png\n68b892b80c.png\nff3b80b82c.png\ne82fddb779.png\nb16b9fa3da.png\nbed4dce080.png\nb435f169a7.png\nf6bf2f264d.png\na8a109908e.png\n760ce79881.png\n7585d90354.png\nd55f9bcd21.png\n6338a2def5.png\nd4a1f3d6cd.png\nb6235dcbb4.png\n00329dc15c.png\n4c92645a67.png\n593ae73040.png\na562fff73f.png\n5b4cec17bf.png\na0cc846d2f.png\n842cd34527.png\na003c71571.png\n180e38fa4b.png\n7b2ad17f6c.png\n2458a5cd64.png\n89bb9341df.png\n76c44f5b8c.png\n0914ccfb51.png\nb7563a8f61.png\nd12e6ed617.png\nfed1be9dbc.png\nc76d853d5b.png\n1f31e73ac9.png\n24d5404d36.png\n7f76751c6b.png\nad8304e634.png\n867e8976fd.png\n8cbd5b61a5.png\n4c33b2dd89.png\n89381d5be6.png\n47dd1a37eb.png\n0279cf7419.png\n708da79f31.png\n21f003a1cd.png\n4f89afc1e5.png\n9af3b0c9ad.png\n090075ab14.png\n69cb0653e5.png\nc3682a463c.png\nf452c01d97.png\n624f67e5f0.png\n2bf2a9037f.png\ncf58cfcd0f.png\n4f3ebfa6fa.png\n2191c9ab21.png\n6d61d71a38.png\n765db22f0e.png\n140bb23a86.png\n4cf72e5ba6.png\n365b34260e.png\n3fb234589e.png\n099b96c480.png\nda73799b4c.png\n30f19c9e60.png\nfcfc987c61.png\ncfd9af336f.png\n6d5ed262e4.png\nb9e9505424.png\n2b8d74fcb3.png\n82197f0f0a.png\nc1b12c9cbe.png\n2b62bc74fd.png\n8f09a3c64f.png\nb6bb3d4986.png\ne97033b42c.png\n64ac969cac.png\n0902703ce8.png\nd3fb9d5fef.png\nc1bf512092.png\naee12c124d.png\n3aa0a9ed5b.png\nec807c98b8.png\n33c7f692a1.png\n979f77d312.png\n50bf331c09.png\nd665b7d9c2.png\ncc6723c303.png\na76d1d833a.png\n8fb4b30658.png\nd53df2727c.png\n0d55880203.png\n8c9a658868.png\n242beacac1.png\nc455f7be1b.png\nda33eff7ae.png\n7f0a6fb2f3.png\nbfe12bdf70.png\n2a9d434aa5.png\n6c00d07fe9.png\n39b6ef3f29.png\n390dfe1688.png\n3e0743ab02.png\n0929430755.png\nc65a7ae03a.png\nf7b9f874cb.png\n7c3c2d6b19.png\nb45b8b6a5f.png\n2901743d7d.png\n258e0261fe.png\n758d47a932.png\n6c0a68de6c.png\n4e8f536122.png\n052f53097b.png\n36841d78ba.png\n9b90e921ec.png\nd230bf4a24.png\nb9d10b62c9.png\n79cb3c11a6.png\ndd35be7c48.png\n32332fc441.png\n45c4464cf1.png\n29c6630f61.png\nde8577c69e.png\n753ac9f3ed.png\nfb9d1d06a6.png\na54115fadc.png\nc854388025.png\nfd6b09e668.png\n1811afb8fb.png\n923afac48b.png\n9981ad3aaf.png\nf31db080ea.png\nbcabfde62b.png\n8f3c9b3a6f.png\nd553d1a918.png\n0a1b6ae0d5.png\n4aaa140390.png\n421b69d6a4.png\n16358ba5b1.png\ne7be02fbab.png\nbba083d347.png\nefa4499cd9.png\nd853da3c22.png\n9411951a0d.png\nbb3b5f35c7.png\n0c426c1510.png\n6e030e29a9.png\nc120a8aeb0.png\n3df20bcdfb.png\n04d3cd2444.png\nd82ec932ab.png\n9c0b85b5b4.png\n956922a176.png\n9ce4cbaefa.png\nbde08b24f0.png\nfb4aaea758.png\n33f9dd99c6.png\ne888c2eb4d.png\n02c9416d86.png\n23bd6495e5.png\n12e7a48729.png\n0c94055b5b.png\n28194875d8.png\n2497cda279.png\ne3c11882be.png\n555ab38f47.png\ne0e9a7dcb8.png\n9772738ce2.png\nffc6f6f99d.png\n132cea196e.png\n2e4b5494c7.png\n238860d957.png\n345b80cd1d.png\n222bdb4aa9.png\nfa63971218.png\nec407c9578.png\n40a31f799b.png\n7f03a3995f.png\n32995c6b96.png\nec5f9c51f9.png\n4a91a7ed71.png\n4c2eb1cd66.png\n83d4aae732.png\n4ff0eb9512.png\n54b0600992.png\n5e008b90b6.png\n3b3e3a9a97.png\nf5efd88c24.png\nfb6ed9dcc9.png\n835fd78e54.png\ne267b50b06.png\nddbe6bbb4a.png\nd29316fd33.png\ne547ff9d88.png\n607728ac81.png\n3d477a4128.png\n3ba7e5581e.png\n87de3d4a1e.png\n2130994fbd.png\n30e8cdb401.png\n0eb03cccc1.png\nb39b67db8a.png\n0b42061620.png\nb983d50fa3.png\nd3b47c38e2.png\naf4a92584e.png\na8e26c8317.png\ned0a59bf6f.png\n9c4cf9f5f1.png\n545ff25feb.png\ned2d89f69b.png\n90cec09744.png\na425d50aac.png\n0593bd99d0.png\n7e1e743cdf.png\n4194504947.png\n538b6e9b98.png\n905082b7fb.png\n726c743e97.png\nce4ceaa5ed.png\nd5da791643.png\nfb99f1be84.png\n24c04f56a2.png\na1ae077026.png\n6df052d3ad.png\n1adad51ef8.png\nce32dfe7c3.png\nd57ab9cd68.png\n934cd199f2.png\n1d73d18a1f.png\n97c05f4628.png\n8776ffcaa4.png\n6e3a11fa65.png\nb303943f66.png\n6ad49a6e14.png\nd184edb816.png\n3312ba9934.png\n740cf53b4c.png\n6bedfa8083.png\n8412d2542a.png\nde5338e179.png\nc6b2feddd7.png\neca8b13122.png\n276be2d7ab.png\n6cabd17489.png\ne074d99484.png\n94fef33e39.png\nc64b87ba5a.png\n50cd98fea9.png\n160cf2c5d3.png\nf81f9cead3.png\n3b2ff53a06.png\nc7b4b3f494.png\nac14003b16.png\n57243fcad7.png\nfa420ff909.png\n3b73d2e8af.png\n3cae60b2e3.png\neb886df39d.png\nc5627d8c35.png\n0afbccca04.png\ndecd39afc3.png\nc115806ff8.png\n857c693eed.png\n019766b43c.png\n3f4d7ad434.png\ncbd1b23efc.png\n2be9a84d1b.png\n220bb859ee.png\nb5f2602f5b.png\n243c97ac4d.png\ndfdc5ca98a.png\n61d15e4861.png\n0e2266401d.png\nee942dcd44.png\n95fc6d05a6.png\n441e322b5a.png\n99b4599831.png\n291a923318.png\n7f7ced694f.png\nb2039444f4.png\n2958ce0087.png\n604c708fe5.png\n4424dfb42f.png\n91b90e946d.png\n5cc6b64727.png\n0d53163eb1.png\n5d2c7161fc.png\ne0294013db.png\nf0743b3eda.png\n75d8153a52.png\n0a64d578b5.png\n7c383cc256.png\n6c467ece12.png\n90113ed6bc.png\ndb923ca728.png\nb87452efb1.png\nda41e9ed21.png\n06b9cddeb5.png\nbae698239d.png\n49a5de33b3.png\n6bf32019f9.png\na5657750c8.png\n510579c24b.png\nbe68195daf.png\nf2fd5c81ac.png\n70c6682b69.png\n13ecf7e516.png\nfac66f7b11.png\nae16194c7a.png\n2b40a03d1d.png\n3d5f63e0be.png\n49ba3412bd.png\n1a8cbd3a80.png\n65fc772aeb.png\n8ac72dfeba.png\n7f9f7a2bbc.png\ne4b97067dc.png\n0ccce05a04.png\n383e701524.png\n564763543f.png\n11ad04f277.png\n9402477e2e.png\n53bc10a8c4.png\nb58913573a.png\nc3ff8a15a4.png\n6090b5c911.png\n9897c52667.png\ne764e3ede0.png\n55dbfb0fcd.png\na0b47461d9.png\n534da81275.png\n42c5683e28.png\n779c169816.png\n9556d5ea0a.png\n8899e6ddee.png\nfa467c163e.png\nc3d0ede216.png\nda90e6e56f.png\n4f633e2d63.png\n58877e2525.png\nebe877d429.png\n03d1a4e518.png\n739c26298f.png\neb78f23074.png\ncee1ebd36d.png\na438d5e984.png\nb2277ba07e.png\n9866f4d5dc.png\n883284c825.png\n9da5d14ca9.png\n2e482fb818.png\nf94f2ddfcd.png\nda8f12fb9e.png\ne1e2f5742a.png\na2350575a3.png\n260b956861.png\n2da79e62f9.png\n5c2c196072.png\n854b912e71.png\n33abaa62db.png\n3bc996d7b7.png\n45aa888721.png\n14c2834524.png\nfd36b0917a.png\n6d7b9dbbe5.png\n24cfa6ef47.png\n1bcab21a24.png\n4eba5550d9.png\nb3962e504c.png\n060cfb2d18.png\n08274e82fb.png\n811261bfe4.png\n1470cdc60c.png\nb9e8bd58f7.png\naa4f0df151.png\n1f161001b4.png\n58f295fd1c.png\n36c461dcb6.png\n2199f90646.png\n3280be0d66.png\ndb52b1a918.png\nc22f677a67.png\n71ce93a7b7.png\n275477cf56.png\nf9467f033a.png\nc82d0ed565.png\n536da22fe4.png\n1c8830d82b.png\n3175b43628.png\nd2066b2414.png\n6fb061814b.png\ne63a0991d5.png\n21be159d97.png\n572ab7045a.png\n89634f0c5e.png\n67e2ba4499.png\nbce346738c.png\nccc645a996.png\n01721bbf24.png\n1a0230832a.png\n3bb083c7b3.png\nce7b81ea3d.png\n48c0d1f283.png\neb7b4320f4.png\nb16f497480.png\n91b0697d86.png\nbf1a216ff9.png\n117503a0b0.png\n53ec68998b.png\nad8edbc8cc.png\n17df03088f.png\nd155b45b62.png\n175cf3b2e2.png\n1f782cbc43.png\ncf856ef539.png\n20f63efb12.png\n95ef69abc1.png\nd5c50fa71c.png\n313961f834.png\ne5416b5ff6.png\nf30c96de13.png\nde6a98fcbb.png\n16b198d233.png\nf78fcd6c45.png\nbbd1b4cc0b.png\n6489d78b57.png\n0d5957b64a.png\n2c157df08f.png\n4011974d7a.png\n2e1884a536.png\n51c67608e1.png\n90364abd01.png\n4c9a332e58.png\n140c7cc82c.png\n7c66d9c0fc.png\n4620695897.png\ne083d6d0f1.png\n6567f59d54.png\ndac0ee6141.png\nefe4a7c5fc.png\n7910783120.png\nd76b5e2a7f.png\n3056753c3a.png\nf33ac8fba7.png\nf0ba375ffe.png\n1b5991119e.png\n3e8cdc7e6a.png\n5accb79219.png\ndc2600ff63.png\n7dd73361c1.png\n9a0aa00799.png\ndf7b58d2e5.png\nee0c346a44.png\ne468cbe171.png\nfc4be42dc3.png\ne3ce840258.png\n5d47b1f360.png\n9dd88fbb40.png\n7adfa301a2.png\n96c6342357.png\n1eac578815.png\naa0059cf3f.png\n6cb2eca8e7.png\n0b41b59f85.png\n3f4a3d99ea.png\n5dc352fbfc.png\n6704437efa.png\n4ee453173a.png\nbd89b15cba.png\nc9d1f1d210.png\nc24b739128.png\n55810b23c4.png\nb97e5dc573.png\nb535380255.png\n5ba2224fff.png\ne1c77c92d5.png\n84db0ddb55.png\n5d6e5fe652.png\n4c1fa719dc.png\n50ac343646.png\n97246287a5.png\nd169f9f991.png\ndd4a11ab43.png\n3efcef3f21.png\n6ae3ffe059.png\n9e8723bca5.png\n787ceb54eb.png\n8e667cec9c.png\n3faab13d3e.png\na1db1ba4e9.png\n26831e1535.png\nd17e7b28c2.png\n3d7736db3e.png\n7195bd6223.png\n94bd962c6b.png\nab3200a666.png\nfbc8a6a4f9.png\n2c17660e01.png\nb59cadbfbe.png\nb8a90a08b3.png\nddeb7c04b2.png\n4652ed0274.png\nc90d708c52.png\n135fc76f91.png\ndffb6b3ae2.png\naba14b6a42.png\nebd833ff22.png\n86d22b5b83.png\n7587b8363e.png\n3136a81ab1.png\n2f0f0f38bb.png\n25320f34bb.png\nb39932655c.png\nc627f6c6c5.png\nd79d1a972c.png\naa9ba4a552.png\n7df398e4ba.png\nfe92cc02d9.png\n82c7ad300d.png\nf03011ec7e.png\ne4bfd07346.png\n1c1aa330aa.png\n3c1ee5b008.png\nd63778e374.png\n1d1ca0e373.png\nfd493dfefa.png\n4bcefa3819.png\n8c758e47a1.png\n1fdb7fe384.png\ncb2a2e89d3.png\n145c06c2d1.png\nd7579484b5.png\nbe053f21db.png\n6cad0fd382.png\nc1466f194c.png\n913fc84bb4.png\n7f24dfceef.png\ne86203f4f1.png\nb8a51aaee9.png\nb8dc5ec60e.png\n6fb1ecf627.png\n9866b8ffb5.png\n9ae81a029e.png\n4520e28929.png\nacba470146.png\n75907e6bb3.png\nff9dcbb5ba.png\n45068edcbe.png\nf70176789c.png\nfdf190fde9.png\n8fb449f918.png\n94b29f3064.png\nfc1292d85d.png\nc30d453614.png\n195450d08d.png\n80c17491af.png\n5520599432.png\ne5dd8bbfd7.png\n1a241a8926.png\nc9573d723f.png\n964f452e73.png\n5a945e734c.png\n327b7a01ea.png\n2705e93cf0.png\nc50d5ef081.png\nb9ffd8011c.png\n726f7e5450.png\n4f66cd03ef.png\n66a4f809c6.png\n1dfdd132ca.png\n6227359fbc.png\na36735c684.png\n49a438eeaf.png\n840f1a7eb1.png\nb325cf9099.png\n203a330c4a.png\nfb7ec23a4c.png\na1ac36929f.png\n1ddca41ffc.png\n562cf59500.png\nc515bc227f.png\nc7f3dbc608.png\nffd51ee9a3.png\nb26035f279.png\nf836b0746c.png\nac63c9fa7b.png\nbe2ca3ebce.png\ne2cc98b860.png\nac4eff5773.png\n69700e2869.png\n1d8164b941.png\nf4a0c6315d.png\n553d2398dd.png\n6080c9f07c.png\ne589972dfc.png\n74545c82ce.png\n54818230e7.png\n450203ec14.png\n6bdc887531.png\n8277c7e8eb.png\n6dc107059b.png\ncafccdcba5.png\n814b6d6ac1.png\nce66fda32b.png\nb65e79a4fb.png\n962598eac3.png\n149eec939e.png\n684187d7b8.png\n2eb9de549b.png\nf85c15d050.png\n18758d8f8f.png\n069780eb80.png\neeeb80810b.png\n4622cee4b9.png\n3a6caba2e9.png\ndffe0975ff.png\nc2b94268bc.png\n138d9c0a80.png\nf68ae19c90.png\n36a7c1effe.png\n21de5cb166.png\nb42b881141.png\naae3d06017.png\nc73cf17575.png\nd43d1a6f66.png\nc7a97902e7.png\n2af01517c2.png\n832ebfaa73.png\ne0dddf219b.png\n1f841a6f8b.png\n0fe88d720a.png\n85773f7a14.png\n60fb99942f.png\nf2f055154d.png\n89272f179a.png\n7b0f327bda.png\n0e54c8098a.png\n71e2382100.png\n1113401d3c.png\neff7ff1f67.png\nf097dfb619.png\nfdb24056fe.png\nea127c793e.png\n593f3e9254.png\n3f9678c6f9.png\n75ac803a11.png\n386d47cbe0.png\n75b8134623.png\n56f72ef356.png\neef671c610.png\n79949a4117.png\n1dcece25d7.png\nc2e34aa6b9.png\nc9ce569601.png\n51f1a24bbd.png\n65449ab1f3.png\nba9906abb1.png\ne9f4699c1e.png\nd3d8adb2c2.png\nee8d380c54.png\n7974573fe0.png\n390c158f57.png\n8e58dad54d.png\n5c78acfc62.png\nc9cfbe1161.png\nb365432652.png\n32160e4b75.png\n757775da15.png\n7ced00a298.png\n77388690e1.png\n0b9a1a7a83.png\n5d85874fbb.png\nc021826839.png\n9129261f99.png\nb9281b76e3.png\nb149724d80.png\ne8b83b2005.png\n1389c3bac1.png\n48822379cc.png\ncff9f980d7.png\ne082c17bfa.png\nfcf87c94e3.png\n7c5c9f8ba4.png\n0b410a0dc2.png\n16d83d1861.png\n0e899c2105.png\nef49e86b66.png\n2be52b518b.png\ncd4db8b133.png\n02d63087cc.png\nea378e6f88.png\nd1d46ef2de.png\nebe61e1427.png\nc25ec5b066.png\n5eb7ee9522.png\n22bc698c3f.png\n7172c509f6.png\n91c0886bbe.png\n7d6ec23f08.png\n3860513b01.png\n966b3bffe3.png\n387265cc0b.png\n613d4bb70f.png\n9665f7544e.png\n3bb5a46a23.png\n448df97735.png\na4b189748f.png\n9ea1b3c663.png\n41aae07818.png\nfe2c23d972.png\n47b9dd541a.png\n8329088275.png\n9f75a6366c.png\n48d705f189.png\nf1f4a8d2ee.png\n830f5d9628.png\n34b4cd1648.png\n7b23a72408.png\nacad22ecfe.png\n71a00195c6.png\n173abc7490.png\n7fde5cb281.png\n0ded804d83.png\n8adf3e546b.png\ne91f473198.png\n3cf20ce659.png\n240285633f.png\n2b3efd7d7f.png\n36febb2cf5.png\n4b0d23912d.png\nffeb06fdc6.png\n9293eee645.png\na2c1aaa15d.png\n1c4012bff4.png\nc1169d47ce.png\n8b6fe1fb5e.png\n67358e3002.png\nca4d59fef3.png\n7074999e14.png\nc1b9ea094d.png\n14d3d242ed.png\ne3ef53a7be.png\n85b57f0344.png\n26a380a4b8.png\n44c9b9a51b.png\na6debaf56e.png\nae7fdfd55e.png\n6cf84a4340.png\na1e16dc7d6.png\nf3e27d394c.png\n597fe20001.png\n422ce49bbf.png\nb0608ba635.png\n89d48aba49.png\n01b47afbf4.png\n3f39e6e1e1.png\nfa0daef792.png\n42c30e696c.png\n152a2d8bd6.png\n22ca26f94a.png\ne306f89a02.png\nccd8906fbf.png\ndd68a62c10.png\n7520edb0d6.png\n093f8b1d6e.png\n643180a49b.png\n5a74b2e160.png\n7bf6203cb1.png\ndfab2c098a.png\ne4a5a7227d.png\n06f311ebb5.png\n4c691b6847.png\na4d2a5df9f.png\ndf274ef7c6.png\n812a494ff0.png\n85a9687a4f.png\n2d1bc23321.png\n75dd47f9f2.png\n24ad74ca83.png\n894b6febb5.png\n3baa95e545.png\nff56914ac3.png\n39a599078a.png\n97d26bbb53.png\nbf5f0e482c.png\na9199bae3f.png\n2ffff5b00b.png\nc0dc514a7c.png\nb0e3dba964.png\n238f33b1ea.png\n88711d54c0.png\nb0a9170b6f.png\n866b8fb98f.png\n2ae328c427.png\n7cfcdfb76e.png\nf6d3bcf420.png\n35883e7b28.png\n4dae4a3072.png\nac1dd634a8.png\n8995059b83.png\nd1d882f7de.png\na0a1b2118c.png\nc5cc962173.png\n9cf75e089f.png\n012daf4256.png\nf93e29bff0.png\nbff8269656.png\nc4bc6757ce.png\n36aaae86d3.png\n3a6f7f1320.png\nae47fe8c01.png\nbe466f2fc3.png\n8c498416aa.png\nc147830d3d.png\nee4cf359a2.png\ndf0628f8b4.png\nf5e19b10bd.png\n1e99ecc4de.png\ne8f7ceaf00.png\n29994023fc.png\nfc7019ac3c.png\na743bf1c06.png\nb6f193a90d.png\ne0829f05ac.png\nf9e510b5d4.png\nee2cd8b38b.png\n2c8a7e025d.png\n3a25d72ad5.png\n6d9b5ae77a.png\n9238f8f461.png\nc68d428ccb.png\neb9ae11a93.png\n6fe5d74176.png\nc04fb6068a.png\ncc08ae7778.png\n944d2d6bb8.png\neec0d74159.png\n55501cc489.png\nef2ad4fbb3.png\n4fd3d56da4.png\n1f150266cf.png\n35741a470b.png\n1adf735507.png\n0abe6c137d.png\neee98f9511.png\n0910a5f8d6.png\n33f94114cc.png\n00bf25f9f9.png\n570c9d5a7a.png\n5b7ebdc259.png\n8232db2b76.png\n713faefb03.png\n2acc196bd1.png\nca6bc81fcd.png\n63db2a476a.png\n45ead8f8fd.png\nc18a60afdc.png\n3d19cc455e.png\n7d3b22a889.png\nddcd5701b2.png\ndd230b84a9.png\nced201b37c.png\n6724070ec9.png\n46244f8df6.png\n45dfe0640a.png\n4f06185ed0.png\na5902ff190.png\n74dc83a265.png\n1f086449b5.png\n2e16e6397a.png\nf147fc9161.png\nefea7102dd.png\n5d127af974.png\n8dbf4c5515.png\n36f364c4fb.png\nb344da6616.png\nd3ada660bd.png\n60d7d451e2.png\nba13dbaa29.png\necc84d1ead.png\nbdc98456ab.png\n69319596b6.png\n2b6f27a34d.png\n80d492f994.png\n90b7053440.png\n9f7e293e89.png\n11c70211b2.png\nec218a2c03.png\n155410d6fa.png\n4f069d6740.png\nc0936aa1c4.png\n510805c1d2.png\nb85341bcaa.png\na12c152cac.png\n01c5af2643.png\n7fb8b363c5.png\n2dbbe7bf53.png\n3cdbe07a1a.png\n3863eafbfa.png\nc09ff6deab.png\n6fb4c35e0e.png\nf85573609a.png\na444fdc56e.png\ned481a5484.png\n529758ae86.png\n2e1f0b7a74.png\n575160ad14.png\n756a0a16dd.png\n89d0caa7d1.png\n9416e65d9e.png\ncde797dd61.png\n0d215e9cc4.png\n9827ff0a2c.png\n8d08d5a68a.png\n1e7f747bb7.png\n567a050bf0.png\n82e4332ae3.png\n999ac34f4c.png\nbe78c05316.png\nee9dd14151.png\n919f72b795.png\n47808639c0.png\nadecc7ecaa.png\n3df2736429.png\nc5f5614e87.png\n66148a9c70.png\n120cef9fab.png\n36eaaa64e2.png\n373c27c20a.png\nc5f1688f84.png\n49b7be4ef2.png\n9197adb6f3.png\ne12b6c0b0a.png\n644d224e9c.png\n35cb0dbb51.png\n19112f71b9.png\n5ba8ea8437.png\n75d6c48a00.png\nd3174677ee.png\nc483125bdc.png\n4d493854a1.png\ne77514fa9d.png\n4a263eda40.png\n0c6f58357e.png\nd3124d74bd.png\n1b0ff56708.png\n0b1c21a106.png\n17470dd9fc.png\n4f79ec0ba8.png\n7968eec1f1.png\n2ea0b129a3.png\n2aeaa3a43e.png\nc858f7fb38.png\n342be6effb.png\n16af70da6d.png\n86d8081e4d.png\n6bc1aa8213.png\n21624c7947.png\n27d39dc44f.png\n36d9ea343f.png\nb01e16574a.png\ne609ac2104.png\n3c03ac9b56.png\n97fad1d33f.png\n53f0d7a5de.png\n362d82ca7b.png\n814bd19e43.png\n286f309694.png\nd710d1af61.png\n04f48c4646.png\n827bc20b7a.png\n611d13abcd.png\n6d5bf5fde0.png\nf9ac19b3e4.png\ne4955211ab.png\na282e85e8d.png\n57bf244688.png\n9e191d17e0.png\n4622823178.png\n526453de1e.png\n0507f8672e.png\n8e80f40570.png\n102afec92a.png\nc3cb500dfb.png\n5a9dfd23de.png\n410b6f1760.png\ned28175fe1.png\n62df6591d2.png\n7cfbd6059d.png\nfabad6b46a.png\n73c97fc400.png\n1a44c4e591.png\n934c53d70e.png\n185bf0a1fc.png\ne6a6cb08c5.png\nd76fdc0c66.png\n68a469ef7e.png\ne59526d6bf.png\n67e8e9f5a2.png\n96e09ff434.png\n69fe14835b.png\n6dca333081.png\n15b84c63ac.png\nab2d102ef6.png\n41314275bd.png\ncf36d61397.png\nd9d82b7c5a.png\n4c7ffb89ae.png\nbf9e800301.png\ndbabc23680.png\nc14ab2b105.png\n61e932cc71.png\n341da65aac.png\n01af0a6ee9.png\n7d933efecd.png\nbaa44e8d1f.png\n0ed75a8482.png\n649a81e118.png\n50e92f4a67.png\n3af482b98c.png\nac06468546.png\n73d82d003c.png\n9e45e84bac.png\n6d94eea16d.png\nc463a7bc45.png\nedb228a9b4.png\ne3cced6b6a.png\n36f3c069ac.png\nd011233664.png\nf2aa5877ad.png\n9b66bcf23c.png\na62afb364a.png\n69c7de5d26.png\n5febd30d82.png\nd2aac3d56d.png\n7616ccfb6a.png\n865a3c3462.png\n400714c26c.png\n182891f8a6.png\n4315656153.png\n41c64dc78f.png\n16d8e1d384.png\nc614988286.png\n02ff55da9e.png\n09799a998e.png\n89cb80c596.png\nb4a849594f.png\n1bb2b1fbf4.png\n8aa8ca5b75.png\na0bd7123fa.png\n97af1c4038.png\n57dfb12f1a.png\n34f944baa4.png\n984cf461df.png\n71fd607e6b.png\nc43159d789.png\n72181494e8.png\ncdca082980.png\nc51ad843f1.png\n828d543df2.png\ndf244aceeb.png\nab1210dadc.png\nf6fc4f5177.png\n7a14038cdc.png\n5f553d9bc2.png\nbed4e13a4b.png\n9eeb6f090f.png\n5637d965e3.png\n5d1934fb12.png\nb49894747f.png\ncc9fae6415.png\nb02ad730ec.png\n15e87c0c0e.png\n78bc946c0e.png\n92629f769b.png\n53e04029fc.png\n017d84a5a6.png\n35493007b0.png\n54075e899e.png\nf8ea96a1ed.png\n376e1a060f.png\n1b346bfba2.png\ndcaacc0402.png\n9ba53387b4.png\nc83f3cc8ac.png\n2056c97a10.png\nd14b77170a.png\n1f043f4fe8.png\n808c63ed8f.png\n9bfb38a26f.png\nb3fa13682c.png\n9fa6f8e4d7.png\n5b5b4e2805.png\nd72dedfa75.png\n10b41b221b.png\n463925cada.png\n7a6ef8886b.png\na9b4214b92.png\ndce5510be3.png\nfb377b3df7.png\nf8a05eac67.png\nab7074c50b.png\n5bef437307.png\n501b9807d2.png\ne6784c9c5b.png\n0c0610be6a.png\na2329d9497.png\n0043a01a19.png\n7d5345b3aa.png\n2c4b9599df.png\ndbd44add85.png\n9da19a126d.png\ndbc239fc29.png\n536106a930.png\nd2e494a718.png\n32dd0a323e.png\ne1bc4ce241.png\n9923de1c7f.png\n4c38a9702e.png\n0fa2535b77.png\n2ffcaf4c45.png\n36b2e8672d.png\neafa11cd72.png\n63098bee3b.png\n648b09f832.png\ndebfaadc1e.png\ndcd3b15b7f.png\nf9a787b1ec.png\n59caf44e3d.png\n7877c97e02.png\n3767362bcf.png\n676ea2ece0.png\n28029fa2e6.png\n6204577291.png\n2824065636.png\nb0fda65353.png\nf8b9fa402a.png\nfe5cefdc72.png\n29a734bae8.png\n676d53ad70.png\nee5fb13710.png\nb6dc397995.png\nfcb97ed460.png\n00f12566b9.png\n823ad213d9.png\n3dd350a6f2.png\n3abde75a97.png\naaa025af5f.png\n655bb63be8.png\n122b429ccd.png\n1d77187496.png\n9cb55834da.png\n24bb2d5239.png\n8a57f722c9.png\n51ff6322d5.png\n6417ae8563.png\n3a226d196a.png\nb0d08bde82.png\nb523c067be.png\nae6aacd57a.png\nc884a56bdd.png\nb14f73e81c.png\n3dc1fea85e.png\naceadac414.png\n20ada280f0.png\n720fde436b.png\n0eeccfa5d3.png\ned4f75e17e.png\nba53ab39fb.png\n01e136f700.png\n29372dcce7.png\nf3fb230499.png\n9f0d446457.png\n80c2769443.png\n0207954fdc.png\n4cc08d6a80.png\nb935b426a5.png\n7c5528d1ed.png\nea80fb83f5.png\n6f2f98381f.png\n1edcff8f55.png\nf21fb36d82.png\n1df8d91491.png\n389e82d252.png\nb30a514b50.png\nfbc34adf28.png\n28d365fb50.png\n2cd315fb22.png\n7a6b92a90d.png\n3a51d8fb4b.png\n7374d22ad8.png\n7570331dbb.png\n6205973a3e.png\nd05f21e2ad.png\n1eafbf57bf.png\n2261517560.png\n0d64aa7de2.png\n908b0475f4.png\n2e54db05a5.png\nb608bfc9f4.png\n4a6120cd63.png\n258b965292.png\ne7319918f8.png\n8b65866f57.png\n71a360306a.png\n19a19742ce.png\n20b784c31b.png\n973a14e68f.png\nd0190aaf62.png\n68da71599b.png\n4566beb8e0.png\ne5aefdd3da.png\nc98c4c3f09.png\n165ec2acbb.png\n248badfc5a.png\n95c2122344.png\n2aac273cdb.png\naa4be18d6a.png\n6736047f57.png\n1dde15c583.png\n0d6db8f166.png\nb77b60349e.png\n83b78b9386.png\nec4a9f09a6.png\n8656e9203b.png\n416a425526.png\nb398e877c2.png\n50c1a76871.png\nfd2421b895.png\nb18f11ea40.png\ncb3f9687bb.png\ndcc130871b.png\n73f53cd327.png\nb259e7fa97.png\ncdb4e3510f.png\n1d89f24721.png\nc7f4301086.png\n04614bf5ac.png\na62c94394a.png\n34990ac2e4.png\nd29c7b4b50.png\n8306f847a0.png\n5c9de2a022.png\n0893024db8.png\n7f34898162.png\ne2a8145eae.png\n212eeca2de.png\n0da24cf72a.png\n8d21f488a5.png\n68904129ca.png\ne20c37a47b.png\n0bf4710ee2.png\ndcc80c1df1.png\n10dbc1c592.png\na3f4d92597.png\n9e0f3ef394.png\n1052fcf702.png\n80b7b5c6f6.png\ne476971090.png\ndd65de3b70.png\n27737f71f6.png\n4b86ca5deb.png\nc5f3085b12.png\n16fb12f4ce.png\na66fd32f20.png\n419ef90290.png\n864ebfc491.png\na496d57c85.png\n97def6b173.png\nd20568b2d6.png\n9366fccb95.png\n7294001ccb.png\n9271befaa3.png\n102a73cb82.png\n97ff8aa3a0.png\naed83b81bb.png\ndbb3965aca.png\n6bd0e156a6.png\nb3a135bd66.png\n7387c46115.png\n1369ddd462.png\n776d73a00d.png\n18902bd56d.png\na1fcd43f33.png\n71e5181d4f.png\n6b3478573c.png\nebef3c7dad.png\n50d7c206cc.png\n0a45628c37.png\neb1b5278e7.png\n35b544e74b.png\ne034b7e250.png\ndfb9785064.png\n0905843ee0.png\n540fe7dc25.png\n7987e0e0c2.png\n2a48ce5e78.png\nd288995f93.png\ne697e2d9c7.png\n9cbca0af7a.png\n0711675899.png\n2e87e350af.png\n0d0762e2f1.png\n227d87ebc3.png\na765cd6aab.png\na754e9e91c.png\necf73f779f.png\n4dae9c390c.png\n567c36f67f.png\n3d033df4c0.png\n54b4d74cba.png\n9667fcc96d.png\n10c1560bed.png\n9699288c2f.png\n16e3b0564d.png\n0bcfcf34d7.png\n8cff7e0631.png\n09ce3f15ee.png\n97aab49e92.png\n7c4874f691.png\na0723cef81.png\n8869f3399c.png\n7f5737c5b3.png\n05e59f3c7e.png\ndfeefdc7e3.png\n1392afc522.png\n974300fa9a.png\n415d3e85b1.png\n228c4daacd.png\n4c09e631c1.png\n45b430d235.png\ne10417ab71.png\nc13a0c92d1.png\ne1e2a4a56d.png\naf85ba8c8c.png\ne6e478cbc6.png\n6225efbdfa.png\n91439aab61.png\n0283add18e.png\n76ed70b2e7.png\na059a8be41.png\n69ff232673.png\nd2e4b1e381.png\n6d88e3341d.png\n9211f9a1aa.png\nb65894db11.png\n667fa631f4.png\nbdcf0026d8.png\n3dfd1c311a.png\nb6a6479b03.png\n5de263d7ea.png\nfdbe0275bd.png\nec1d7d1ae1.png\nee044b4654.png\nf202b3b4ca.png\nd0a367e216.png\n41647172d6.png\na987ebe117.png\n45cf70cc74.png\nb3d612db82.png\n3203884be7.png\nf4809326f6.png\nceb58f3460.png\n16472639a6.png\nf7e384e255.png\n086c242b55.png\n6225c596c4.png\n9d96a157ca.png\n69ad43554c.png\n0d5ec46059.png\naab10e4cfb.png\na0716df5df.png\n9256e2b7ba.png\n97e335754c.png\n91d104a6b1.png\n2715531a3f.png\n2efb94dbfd.png\n3cced1ea46.png\n710fc67627.png\n165ffa1723.png\n03a9683c39.png\ne1978e83b1.png\n4a7ac48295.png\n75db955734.png\n2eb37ccc68.png\n4902b2ec40.png\nc91a6405a5.png\n9df2466f89.png\na035f3c359.png\n4b05075e91.png\n0adcdbf194.png\n4ed639c85f.png\nb83682118b.png\ne5fdeba224.png\n4a1df22a26.png\n4e98c975bd.png\n243ee3da2d.png\nd5cb770b8c.png\na0f5234b07.png\n2bec322251.png\nd81f87949c.png\n395bab08f4.png\n3d53b0ae57.png\nbf7fc1c772.png\n2714fcd59e.png\nff8afea074.png\n3666fea8c3.png\nb00e1265b6.png\nb3ad0f3dc0.png\nceadfc98bd.png\ne0df3ed0ad.png\nd5aaeec7b0.png\nde5a42a506.png\na8aa087faa.png\n6d91979be6.png\n324e1c12c4.png\n0f04ad5127.png\n1c427dd881.png\na1e640f0b7.png\n8a15905832.png\ncd0352c2f3.png\n39f9ba348e.png\n667ef29591.png\n720ed9c0e9.png\n240004d8fd.png\nee3aad7ba7.png\n4f02e56080.png\n9daed1e88d.png\na498311665.png\n7bc3bb0a20.png\n9e699c4bd5.png\nec82dc9c80.png\n1df0d002f5.png\n52812aaf65.png\nf47c7a0fd2.png\n3ccf3f7a15.png\n0775d2543e.png\n19d06934db.png\nf45fa444e5.png\n0ecc2e0065.png\nad292a8043.png\n66b56662df.png\n9ac1f214d8.png\n9f4d859a6d.png\ncd2567246d.png\n2165fa4ff9.png\n11100c5070.png\n55371c6ef2.png\n63e0650693.png\n3fa715098c.png\n938d4036a9.png\nfdd8e5ab91.png\nb1734f57e7.png\nfbb738d83f.png\nd13f2aa25a.png\n48055c205f.png\n9cd6d11627.png\nbc183053e8.png\n2517937482.png\n932d0af9a5.png\n5eb8ee3c04.png\nb5f8880d44.png\n6e55491120.png\n7fdd18017e.png\n52dbe09f4c.png\nf88f72e343.png\n701cfebd25.png\n2ddfdf7a00.png\n89e1d01fda.png\n0e27f19921.png\n25bc6fdc1d.png\nacb17142e1.png\nc1b28f261a.png\n2c34919bdf.png\n8875824a73.png\ne6ca6a00d4.png\n33228f3eaf.png\nc7d1e6fe7b.png\n6b21f429a8.png\n679833ddad.png\n30e2d59d62.png\ne3fc1a3e14.png\n151c5884d6.png\nfb1977dbf4.png\n6213dd23d6.png\n8fa6d81b29.png\n23e2ad6faa.png\n556d8c542e.png\nff35ac6658.png\n7cf7445350.png\nd72a290951.png\nc26df751cb.png\nf0bc578837.png\nafb0329994.png\na478665286.png\nabd466e64b.png\n745be77eed.png\n636df5b27a.png\ndecdf173a4.png\n2d177a217d.png\n00e900afb7.png\naf3e29f617.png\n8efd177b4b.png\n6569d102b6.png\ne846787720.png\n87347549f4.png\n4ef618552a.png\nb66151dbe5.png\n61db631085.png\n50006ac207.png\nbd745ad4e4.png\n03969a67e1.png\nbc002e42ab.png\n597cd882cb.png\n4c4dbdeaac.png\n4fa6ae9db4.png\nff0d9d4f75.png\n63b3217142.png\n787f824d70.png\n9ad3911361.png\nebc13ad1f1.png\n9d3ec04eac.png\n284f7dd9f9.png\n430c303755.png\nd4c0bfa755.png\ne1207841c3.png\n0b9874fd4f.png\nc51173f352.png\ne81bc8050f.png\n0a9992ce50.png\n50a91adce8.png\na5b81694e5.png\n382b3f0c24.png\ndc98370594.png\nab8f326e09.png\na7c88d0eb0.png\nf9aa42899b.png\n1760bece6d.png\n3dbf4d3e57.png\n0b5988d7b0.png\n11e9ac0aeb.png\ncdda3b1f5e.png\n4c82bc66c9.png\n5f54df3753.png\n6a98b95754.png\n4e3378fc69.png\n33cb556649.png\n7ddcf83303.png\nf4a2cfefb3.png\n29cf979b92.png\n5f3bc00104.png\n8e76bf194e.png\ncae26f3214.png\neb8a1f8c5d.png\n7e79bb71dc.png\n029dd6f51f.png\n4c02cb44d5.png\n6c1a8906dc.png\na0e0452f1c.png\n2bf60e2330.png\n853a1ba28f.png\n6e7e9b98a4.png\n5d126bd7d8.png\n90e92b9fce.png\n1f3038af73.png\ncc8e029e21.png\nf8f9e5ba3b.png\n08b3c441eb.png\n5c0acc3f31.png\n9b838f638a.png\nba72ecf0b5.png\nb2fc87dc4e.png\nc58cbe572d.png\n81bded8b9b.png\nf8afabcb4c.png\n6a1defeaa5.png\n07b06234e7.png\n6066dbfca9.png\nc0df1c6bc5.png\n00a052d822.png\n3885101128.png\nce53de2451.png\ne484ea9ad2.png\nab829d20a1.png\nb569096e82.png\nd5d599c225.png\n636b5fb5a2.png\n87ede84827.png\n9156a46309.png\n3568a238ab.png\nef0ccbe97b.png\n918d76601c.png\nb923daba0a.png\ne02453fa1f.png\n31cd04055c.png\n8bc939cc85.png\ne60a29d658.png\n8fd6d6de42.png\nbd02724c0d.png\n023350c4e2.png\n039b7c2b74.png\n5895535b14.png\n9dd4d99ab5.png\n824ef90b9b.png\nf8a2cb1d13.png\nc32c64b949.png\n48e6f06a5b.png\n617cee13bc.png\n3a8925ef48.png\nb413657974.png\ndd7f250e5a.png\nc555df6518.png\n9c5cd7cf24.png\nade7b6c1ea.png\n23823cad6c.png\nc2582be202.png\na62e962739.png\nfbb8303f81.png\nd36234ebd5.png\n85c5a1b5e8.png\n68d5a944e7.png\n3a61ff125e.png\n0d14aedcd5.png\n5f168cd2d5.png\n53726197dd.png\n582ec64662.png\nd69abbca50.png\n669bd87a83.png\nabb91e8148.png\n3a0922aeea.png\nca4d17a4f2.png\n311030c73a.png\n12b6c7311a.png\nf6f5806e2a.png\n0b03165d15.png\n91fbe9ad11.png\n1fdce40b42.png\n3d65204ea2.png\n75fec62ce4.png\nafe5e42216.png\n191bfc2fae.png\n2d37d558a3.png\n0759b4c0a6.png\n5512a556b3.png\n614afa7224.png\n4f1bb674c2.png\n48fc4044ff.png\n9bf7bee899.png\nf63b28a739.png\nfa9aec9e27.png\n1b203471b7.png\n01f2262bf6.png\n45ea134474.png\n4334a4df17.png\n457c69bcc8.png\n526418e256.png\n0224643e71.png\n39316d8a46.png\n9cc2bd46f2.png\ncf6e41f329.png\n05562883e7.png\nb1f47c5be7.png\n4ae16a3b40.png\n953316da2b.png\n1e95f2f6eb.png\nc98b273ac9.png\ndca0ca5ecd.png\nbdaf5d8f32.png\n7eb34773ab.png\n7463d7da9a.png\nac9f1608b0.png\n610f0279fa.png\n88ef84acb9.png\n3e3d120907.png\n5f86057ba1.png\na676b46c7e.png\n4b82adea21.png\nb00ae599a6.png\neb5778dd5b.png\n00eea9cc56.png\ne2112cdbb0.png\n770d038a86.png\nb7844c89e2.png\nfc697b13ac.png\n50f78681db.png\n2bfc5326d4.png\nc9663ee44e.png\n9b73299424.png\n11dce96954.png\n1e4a6db5c6.png\n2583a7cedf.png\n5f5badbc35.png\n60611407d3.png\nce36e2a0ae.png\nda723a31d3.png\n354d881033.png\n98ec81a8df.png\nff9e8760d8.png\n9da95ae912.png\n0c14b502e8.png\n462bfb1848.png\nd27e49b95a.png\naa63df78d9.png\nc7899986d3.png\n8c9638818d.png\n3a35c0728f.png\nd9443d6374.png\n69eabf5f29.png\na92d86be81.png\n42579e0bc6.png\ne0a6b46fd1.png\n7304dcacee.png\nb6e91e4bc9.png\n15ecb44c76.png\n8e914b81fe.png\n32ee738945.png\ndc6b08b866.png\n8e99928455.png\n8bb2eca74b.png\na089728353.png\n5aa5d4a616.png\n3bac4bd5af.png\n21e61a7540.png\n39b1d2294d.png\n66d29aed4c.png\na6ec2ce172.png\nea90052ad6.png\n5ed9ba604c.png\nc3f533acee.png\n34f0687bbc.png\n0616cb9c1f.png\nc8266973f7.png\n0189ff5265.png\nd223809084.png\n2806b89050.png\n353e010b7b.png\nf6322a46a2.png\n394f8072bb.png\na1593593f2.png\n967e6213ce.png\ne7ed227dda.png\nf44be3e2d7.png\n8fa7391a85.png\na6043f00ef.png\nd3ad12287c.png\n502d93b515.png\n9545264612.png\n76ea2b7366.png\n07707ab8b2.png\nef521e71b8.png\nd6063c665b.png\nb81ebd84cc.png\n43bce54542.png\n95016016d6.png\nffa51e8c7e.png\n66114b9764.png\n9091c7ef1d.png\n8a8ca7cdcc.png\n26233363f8.png\n2aa996939f.png\n435ae188ca.png\ne57d4e9c04.png\nf74f2c5dec.png\n210bf75217.png\n829451e2cf.png\n0a39c86312.png\nd1e2aed114.png\n5f1bec06fe.png\n001ef8fc87.png\n71f16b2619.png\nac26efe98e.png\n3a1e053394.png\n14a9d4876d.png\n5cc486a204.png\n4e84e470fe.png\ne7723f6276.png\n93d82c5591.png\nf80ccad902.png\nb43e1ad347.png\necde62fedf.png\nfe52d8e719.png\nc353f941ca.png\n93b58cb146.png\nfe14970ee7.png\n1cf783890d.png\n2620ab7aa2.png\n37941ad573.png\nc84a98b6d3.png\nb4538661b4.png\nf83931131f.png\n848c3fb0b7.png\nbcba6a2e84.png\n8ae428b77f.png\n5404974f3d.png\n9a59a4f4ae.png\nbf9664650b.png\nc320fb7641.png\n10eeeda559.png\n4f738a869e.png\nb5fd02b2f7.png\n5ba4a336bd.png\n112774ba35.png\nd98293b5d2.png\nf2827e1818.png\nf92e022f08.png\n00b68675b4.png\na3f8992e72.png\ncdbec42931.png\nc779a1e062.png\ne48ce37527.png\n13b1a7ad42.png\n1705ade299.png\n840edfd9b0.png\n10a0e97a05.png\nba797582a4.png\n7e8db86731.png\n7fadebf068.png\n56b06072e3.png\nc3c242a14d.png\n4d5860a0df.png\n5d6be3e74c.png\n850f48c5e3.png\n16db20b5e8.png\nd9140cdbc2.png\ne9a4c4ee10.png\n0b64e69d0e.png\n1a52f342a7.png\n0b118ea7b7.png\nb83a115365.png\nc5f64bb650.png\n8f3d13f940.png\n9d72658a31.png\n9ad15b2d25.png\n59681332a3.png\n4de659b0f5.png\naa6ca37586.png\ne6f8434e55.png\ndad62e6cd7.png\n0da4918f5a.png\nf2b5d8aa8a.png\n066f18a55c.png\nce4424106b.png\n12aaea5149.png\n2f28a9f9f8.png\n5cbdfef7b3.png\n86fb847889.png\n53a3147186.png\n7ff659b264.png\n490c2cc42e.png\n746f7f7f27.png\n28f383ba58.png\n76b5d31d85.png\nf4fb218df6.png\n582d92d3a0.png\ne699288e54.png\n1edcb6a250.png\n18ef5f86ab.png\n09f1675cfb.png\n4a21d26749.png\ncea291eedc.png\nc543bb359b.png\n8a60cc9e23.png\nff35f2a328.png\nb99433d2e0.png\n39d958da04.png\n88fa975478.png\nbfd73ece7a.png\n28532f0b9b.png\nc81e790680.png\nac7169bfb7.png\n524e500962.png\n9f56da8998.png\n4bcfc0f9bd.png\n07d631693c.png\ncaf762e1ab.png\n26a0a33c8c.png\na8c33b125c.png\n385580a2f7.png\ne51487b92e.png\n66a00fd33e.png\nd303e1774a.png\n97c63fd321.png\nd9ef8f6403.png\nc4fcfdce00.png\n0510482257.png\n51141fa392.png\n41bff02c51.png\n252aa6e031.png\n3e04a6cc24.png\n3c0f1d465a.png\ne45649bcc1.png\nd3c87f3e56.png\n7c34859167.png\n460c5f2ccd.png\n5256861a31.png\n63ed0faeb8.png\nce98269a83.png\ne60ec55223.png\n2d6a27493c.png\n677dbfd1c1.png\n01694e04e2.png\n33b3e958fb.png\ne001c9a868.png\n20b67a6c1d.png\n17759743db.png\n15da8f19c8.png\n61538a4a19.png\n745b73e846.png\n71ef3fc1c9.png\n59635629a7.png\n6fef9bc131.png\n88e2f52aad.png\n64dcad5c0e.png\neb5baeb627.png\nc43594084d.png\n375661a521.png\n4dd7ed43a0.png\n863aeec5eb.png\n06ef1122ec.png\n229e38ecab.png\n67550b39f3.png\ne47c5d83fc.png\nd2ee33bc03.png\nde56d56e3b.png\n149c2f22c9.png\ne0e40311d9.png\n861f283361.png\na4dd1d2900.png\nf5f5901c55.png\n6ccaafe665.png\n759128aca2.png\n084a5e8648.png\n1b0dc93eec.png\n9bc43ac1d9.png\ndf2ec73bd5.png\n8603855246.png\n3fdc35b832.png\nacdc75508d.png\n8e43b91b7a.png\nb65ac8a9b3.png\n2567aa74b6.png\nd5777e4789.png\n2103cc814b.png\nc3f52220da.png\nc3f7c12107.png\n76b121e7c6.png\n52285f7cbf.png\n923f8be483.png\n5f041131a1.png\n2e3b9098b8.png\ne0bec01df6.png\nce48548fa6.png\n9922cd597b.png\n2143b330fe.png\n5a970eae2c.png\nbfd6f21136.png\na97c8676be.png\n08ce8991f1.png\n3a06849378.png\ncede9158fa.png\n4234acef31.png\n1693eecf63.png\n4282adcba1.png\nd13ede5f14.png\nd6fdb80bae.png\n565f34a45e.png\ne36949a00d.png\n29f9ee1ab4.png\n9b525b08e7.png\n7f82fe9f71.png\n06f0b6ef91.png\n5537f478e1.png\n1695784a24.png\n5208af95c1.png\ne91e8917f7.png\n22895dc54a.png\n9c50f550c4.png\n1cb6d0d0ce.png\n8ab63d565b.png\n53383aa190.png\nc0ea282c4f.png\n3276b81273.png\n9ea1b4c239.png\ndaf22070f5.png\n0dd7241a30.png\nd93cea85bb.png\n8eedc347f2.png\n5ae9fe9e4a.png\n56bb598a33.png\n855363abfa.png\nacc61bd7af.png\n1acac10cfe.png\nabc1ec4bc3.png\n8ebdcba27d.png\n91f7d4e92f.png\n0ab8828eb5.png\nf4db6fadac.png\n23d0724e97.png\n0ee2f5120a.png\na7181efc6d.png\ne4ee492bd5.png\nf4c478c3c9.png\n90edc7fb0a.png\n7aedf0e386.png\n59b6b69cf1.png\n04ff5c14f7.png\nc453e5d3fb.png\n064b4962e9.png\n2fecaf1c54.png\n89c0f9dcab.png\n6ec4386cbb.png\ne77d46b5e7.png\nbf41d02c55.png\n7877bf3a49.png\nc8682f2387.png\n8afdbc2226.png\ne0a9c3c415.png\nb44168da26.png\n1cbfb9a597.png\n5439dbbddf.png\n85e89d3d33.png\n5f15393348.png\n6d08896012.png\n5fe8923649.png\nd1baafb170.png\nead4e4f3fe.png\n860ab1514f.png\nda85c5ae62.png\n27352bee07.png\n965ab1dc20.png\n031fc7e30d.png\n7c6e3e4d9d.png\n023a4a8fc1.png\n96f8bd1813.png\nf3e6109c05.png\na76f0622ec.png\n62bd7dc7d7.png\ncd85f4b39b.png\n9970a663e7.png\n75234e0190.png\n7d5f9abb1c.png\n2fbf1cd550.png\n149d907795.png\n90c0054bfe.png\nd8ad9966ba.png\n02446ab7b5.png\n22f416fba8.png\n7974419f1a.png\n318cdeff85.png\na0f7d1db58.png\n8688aa6acb.png\n0ca07a2b06.png\nfbbd320627.png\nd0ec6da193.png\n3116f272e3.png\n09c4201b4a.png\n1cdd74608b.png\n9830eb6971.png\n815d94120d.png\ndc5a650af7.png\n6337fc7a59.png\n6e5c564258.png\n0fe7bd88fb.png\n3db26cb791.png\n1471bc7b6d.png\n1117ef4324.png\n5e51d0070c.png\n539bbb05f8.png\n11d36f46e8.png\n3912a7c40b.png\n9a16cf829d.png\nfb9c58299e.png\nb2782e3901.png\nc2e24433d2.png\nd83fe9fa7a.png\n6015110caa.png\n878c50521d.png\n161febc96f.png\ncbd043c3b0.png\na03c96ed05.png\n837d92f194.png\n16c3e76481.png\ncc770c1a5e.png\ndfb3390016.png\na9710f6508.png\n1c098a50aa.png\ndba4475686.png\n98f28c0303.png\n9b6a41e977.png\n551cb1b843.png\nb3459251e5.png\n631cec82b9.png\n71ed7325d3.png\n8ea5a5cf57.png\n9c5406268d.png\n20e0444ffb.png\n87173ef16f.png\neb05ac38b0.png\nd3dc15fbc2.png\ne9ffc56d5d.png\nfb29635668.png\n8b754adb0c.png\n9d5617b842.png\nc0aa15a26a.png\nf3d457ccce.png\n19dfee3fcd.png\nfd0b168cf6.png\n014a31d53f.png\nf4ef003a58.png\n5e713bea12.png\n6dd1746fdf.png\na06f18de38.png\naf445bc114.png\n8a8eaf1df7.png\n014681457b.png\n23c6efd41e.png\n982cb1378d.png\n41b52c1438.png\na5a99f3913.png\na4546fe71f.png\n655d3e4d01.png\n0ed2fce6db.png\n99cfeaba69.png\n72c9b3ca5b.png\nde5361fe2c.png\n5bf8deec0f.png\nd44a4a62dd.png\nbde4f58ca3.png\nae6ffe812a.png\ne25d3a27b1.png\n97a26ea163.png\n526fb2a204.png\n1d05eff605.png\n812492066c.png\n49e215f84c.png\nb57a03686d.png\nc215d4d831.png\n439a2ebfbd.png\ne59a73943c.png\n6514081e49.png\ndfc4545499.png\n748b1244ca.png\n826dac705d.png\nf47fa89a52.png\na8bc163db6.png\n9f7155bd98.png\ne3e7a65574.png\n17394fc203.png\n8bab2b0c82.png\ne71380e985.png\n305e201b21.png\n68c0ec9724.png\n790251ad62.png\n5235fc6d22.png\n53e739bf11.png\n1155134b65.png\n1777e9be51.png\ne96b8f5e28.png\n365f78e91a.png\nb5c6caa273.png\nf6a8da7ffb.png\n920dd2feba.png\n0e471a54c7.png\ne2b655987d.png\n5313788acb.png\nc3c257491a.png\n15a54065ac.png\n2d76db6f66.png\n4d3eeda971.png\n1db00d7590.png\n7640216003.png\nc36bb4c231.png\n8d702c4aec.png\nee77baabf5.png\n100d433d0d.png\nc328588e36.png\n99f2dd50d8.png\n8963e13c49.png\n9ac4e6c7fc.png\n5dd42247a1.png\nc5f7b76607.png\n208db5271e.png\n99fddf686c.png\n67ba09a89e.png\n7aa84dac4c.png\nea77554368.png\n370746aa1b.png\n05e7f129ee.png\n745003b86f.png\na39f01e911.png\n629f639f2c.png\nf3bcfb2955.png\n2265a9bb97.png\n4cee41f355.png\n7ccccf5f30.png\nc2ad307cd2.png\nc8b9beec1c.png\n83dbe2a00f.png\n61f1a55dbf.png\nceda8750a4.png\n4166f7db11.png\n991f239daf.png\n998e781159.png\n78e836e9f4.png\n3f587ca621.png\na39866f50c.png\n0430d7ea49.png\nf31ab2f578.png\n79017b6cd1.png\n76c72dec1a.png\n121bc4deb7.png\n1ef24cd2f7.png\n3820797dab.png\n81f6c814e2.png\nebeeab3a36.png\n47cb876dde.png\nc563ab4d1f.png\n7e6815b7b2.png\nc04dbddedd.png\n1ac3babe57.png\n8b74a58326.png\n0e5e551d4c.png\n344395de65.png\na43ec97f2a.png\n0731f87679.png\n2a9f891518.png\nca430c5ad2.png\nc87da590ee.png\n2e7d8297e7.png\nf0405d15ce.png\nc8f4812ba1.png\naeadb630c5.png\nece2724f0a.png\n732fb7faf6.png\n874535525b.png\n51936b6118.png\ne30e29d767.png\n1f8d2fb264.png\nf2ba02ee9c.png\nf791482ed1.png\n9e91369659.png\n2dbaca14cf.png\n0da0088115.png\n07993dc1d4.png\nee9a8aa9be.png\nfaf72a780b.png\n83a2adae40.png\n0aa2cfd2e2.png\nb5f79edcc3.png\nda090efc50.png\nb34410a696.png\n4fb2778316.png\n59f5a1afc7.png\n51d523930b.png\nc2cf683cdc.png\ne1593c24b1.png\n90fbd7163f.png\n7a4bf67c4b.png\n3cbbc5ed1d.png\n6242efa63a.png\n588f6656aa.png\ne0e065b312.png\n4a5f65e1fe.png\ne3dcd28ec0.png\n387f07cf75.png\n0e37ae8b14.png\n4e13bb0edb.png\nc51572a089.png\n019342f169.png\n9fe3459bb2.png\ne12ea6b1c1.png\n2049282c72.png\n1eb9662cd1.png\nf74ff67ea7.png\nbabfe73af6.png\n7b0b71c55b.png\nde8a820637.png\nd6dc342f83.png\na53de091e0.png\n969951e384.png\n494f10f99b.png\n6fbf6c40cd.png\nd8b065d0eb.png\nd3444844ea.png\nb393cb32a7.png\n6db4d1afbe.png\nbe150e5652.png\n51c7e18ca7.png\n50fc16ff18.png\naef07da484.png\n68519b8d65.png\nf069247787.png\n4eff1c1469.png\nbb97471c13.png\nb720639d3d.png\n4179c83f47.png\n672b6c08a1.png\na712f50125.png\nbb895d5015.png\n183b58df29.png\nb18cb84bca.png\ndc8281c5ff.png\n3164ab09ed.png\n502a8b84ea.png\n2529342187.png\n92cdbbb3f5.png\n2eaecdf8b5.png\n69a8775edd.png\nbb5ec93158.png\nbf34f09365.png\nba5e46652e.png\nc0d95beb5f.png\na89c8b991c.png\n501da23c5b.png\nc1e2411006.png\nc6f29dc1a4.png\nbfb24092c3.png\n9b9d62b4f2.png\n4488974c52.png\n3e8ab52b8a.png\n9fb226174a.png\neaf39dda19.png\n67f35d28b4.png\ndaef07fd90.png\na3c895cf5e.png\n3e5eac5296.png\n020e6211ad.png\n63235ccaf6.png\n2db89bd54e.png\n5b8ccc9cb6.png\n6dcb56d4db.png\n5c665e8088.png\n5393cb5880.png\n7e0eddd4a7.png\n603549682a.png\n44df56fa12.png\n25f57cf4f4.png\n725f623fa0.png\nea12c68da6.png\n9b965db66d.png\n4c67f13454.png\nddaa8f2cc9.png\nee81585df9.png\n766c55d886.png\n69bf9df3a8.png\n36e1d2c441.png\nea89287cac.png\nb28b22e057.png\n396a5f2049.png\ne84940ac6a.png\nd3012444d9.png\na366e0eeae.png\n1774fc54d9.png\n37e8fbecdc.png\n5e0be40c1f.png\nb9145d4519.png\n1775baeb70.png\ncca8cdfe66.png\n138652f569.png\n3af0b6fef4.png\n6c35d8d95b.png\nad3a16eb53.png\ne2262f7275.png\n3dfdde9c1a.png\nec04a9c168.png\n86d92264a9.png\n6919c6895e.png\n2ef244e01a.png\n9e60534bef.png\n847550431e.png\n0a072e6c9b.png\n10a3b543d4.png\nb06dde0ed9.png\na6b263f3bc.png\n427212d90c.png\na1f51211b1.png\n1a948a1a2d.png\n0a4fd33486.png\n04c31e19f4.png\ndcb7468a65.png\ne099a1a8ad.png\na89e1ab744.png\nf64c261570.png\n25bb6c7720.png\nd145118221.png\n226a07a818.png\n77b202a9c6.png\nff2b792046.png\nef06e29142.png\nde3f38b5de.png\n3eb810a03f.png\na2e850fa2a.png\nf7b5458d2a.png\n83f8ae854e.png\n2fb819ab32.png\n92b23cfe90.png\n0680eb5e6e.png\n42a6d179ef.png\n54e5e78455.png\nbb633b3089.png\ne5699c01e6.png\ne18072f750.png\n75311de238.png\n9718a3fbb3.png\n92fa1137d9.png\n22f1f09e62.png\nd615842865.png\n1083eaa92a.png\nd76c91c5b2.png\nebd1c80849.png\ncb47a30879.png\n68350ac997.png\neb590942a1.png\ne67a038cf7.png\n65fd699136.png\ne91eaf191a.png\nd082aa9b68.png\nb9f2ed8a68.png\nf7b7615fb8.png\n0fbce89aa2.png\n8a78a43802.png\n3ffa242fa1.png\n4e70e4d96c.png\n39aa1f3a2b.png\nd4c235a41e.png\n1529529daa.png\n7aa312d8d5.png\n75b8d54e1c.png\nb69dd4ba7a.png\n3290d37891.png\nd82b7bc89b.png\n52b11a66b7.png\n98c055f418.png\n493a210d3a.png\n792cef86c2.png\nd61b895fcd.png\n3d42b00d47.png\n1780e96886.png\n10c7f0d246.png\n5870ec4884.png\ne451bbd1a8.png\nc75e33ad32.png\n9969eb6d37.png\nc91684784f.png\n3eff3c0e27.png\n104def81dc.png\n139650fe97.png\ne7d950f0b1.png\n6e98da23b9.png\n5cdb791f34.png\na9957cbaa0.png\n214dc3b533.png\nfd4d5819be.png\n2735b4d2b0.png\n6cc50bb10c.png\na843ccfbf7.png\nb9ea5eb4c5.png\n06aeec54bd.png\nec27ab38b8.png\n3527e03e5d.png\n5c82266b71.png\n1a157f9551.png\n367eac65c5.png\nd01b8993e1.png\nde83a67dd2.png\ncb2a21050e.png\n9e26c87dad.png\n132e1081a7.png\ne9cce9c914.png\n992d1a1434.png\nabbb0b44df.png\n51b91303cc.png\n854ee81355.png\n0960ae5218.png\n4720794315.png\n7833140676.png\ncca88b97da.png\n4304badb8f.png\n73d612a604.png\n80ddb7476e.png\n5f28207f7a.png\na0e6d8b0a7.png\nf68b35ebd2.png\n33a18815cb.png\n2b221fc0d7.png\n9b3614da4a.png\nd50c9d0919.png\n085484b27f.png\nd590a3a3ba.png\na4a5eca0c8.png\n514ece6215.png\nbc9a247d9a.png\n85ecabd362.png\n8eb9bd0e65.png\nd078c2ee8a.png\na022b9c3ac.png\nffca00e9d7.png\n8e900e1e4f.png\n68deafa4a7.png\n5cf7cc53bf.png\nb8be6ec1db.png\n9ef73b5eba.png\n4c5482697f.png\n794ee5fa8e.png\n8a7db2c1d1.png\n9a613530e7.png\n8f4e0ee37f.png\n23d8bf4955.png\n8e13cda6fb.png\n721e2e1811.png\n5ca5ec45da.png\nb695427db8.png\n359fa522b7.png\n6798d3af4a.png\n8bcdfdb737.png\neddf8b7e55.png\ne85ca402ee.png\nb4875b1537.png\n140572b0ce.png\n1cac4d17ac.png\na17c068d3a.png\n1c7acddca2.png\n8d8bfa55d5.png\nf99a792e1c.png\nda2f5777db.png\n3bb4585abc.png\n4b276b23ec.png\n80de565868.png\na36c68a4fa.png\nd8edb39aa3.png\na9ee986303.png\na8cf94648e.png\n9ea97ebc02.png\n84ee0bfc80.png\n963c696594.png\n56a8a4e1f3.png\nc040483242.png\n2b0de46b94.png\nd6344fd906.png\n836bb06e23.png\ne5fb8e1029.png\nfc623c5fc1.png\n1e78fe8a45.png\nf8af98960f.png\n0532a37194.png\ne594ef45fc.png\nd4c67575c4.png\n0433c39f5d.png\n2c0da8535c.png\na745ee2cf2.png\n5a8893ef09.png\n5dda6082c7.png\n3ddf2a9990.png\n6721c5356e.png\n4cfe70e0ef.png\n7fb929c05f.png\n47859b36c3.png\n04467827d1.png\n7f1c9e5f69.png\n44e625aad1.png\na4975f26d0.png\nbc54357991.png\n16dea35a1c.png\n45bd9c2a06.png\n67ccf95c75.png\nef606386ed.png\nade2aff16c.png\na8ab7eba73.png\nf38e999102.png\ndf3c0ca9ca.png\n26127d74ee.png\nac2af593c2.png\na9b361a48e.png\n3e71bbc1d5.png\n9883150c69.png\n4b64c96dbe.png\n04bcc0f6c4.png\n3cc902c1b4.png\n51b5d26a59.png\na9ad49f3a9.png\ndbaa639a96.png\n9d55e4ccc9.png\n012c3ed07e.png\nd711226cda.png\n667b3004a1.png\nfa503f3f93.png\nb484e89591.png\n14aec6bfbc.png\nbd853e7ecb.png\n924c0e9cef.png\n16924862c6.png\n1f1cfbdcb3.png\nf90d64d4bf.png\nb90c03ccdb.png\nc6ccbc78ff.png\n98faa20dde.png\n77cf676acc.png\nc89bda5c02.png\nc37a17f712.png\nc1bdf548c9.png\nc3bafa1d78.png\n4fd8abbdb5.png\n6b69a22bc3.png\n261df55c24.png\n006d9df08a.png\n94c4ad470b.png\n9ec5530e38.png\n74be878015.png\nea38e39ba5.png\n72e7f5a583.png\nb091620f53.png\nb9ec0ae950.png\n9110d9e4d0.png\n17f6adbfed.png\nff9c8270bd.png\naadea795b0.png\na84af7a220.png\n371fb700c0.png\ne72c42736a.png\n28c176bebe.png\n729f4f3a44.png\nd4762e96b3.png\n88e238caef.png\n343fd32150.png\n1d40181f56.png\ne8a0999879.png\n908bacfbae.png\nd4ff78ea8a.png\n389a9f7ad6.png\nfdad2f99d8.png\n2f71bcb486.png\nda7c022d60.png\n6c89234f73.png\n93be99ac1f.png\n000c8dfb2a.png\nc812d01650.png\n9a804d3e93.png\na9e6fa74bc.png\n3c7ee1e49e.png\n554af0ca10.png\n0dd4d9acf7.png\n9a7fc35eab.png\n6a8b6c77c4.png\n8020c6cc91.png\n7d594dd079.png\nf76af6728e.png\ne60e1201f5.png\ne3a437ca0d.png\nc123ed5f24.png\n6364ce708e.png\nb4043d90c5.png\nfcf843ab71.png\n186e591d03.png\n09eb37dca0.png\n2bbae68be2.png\n42bfae680f.png\n87e6e60636.png\n98fd6b23f0.png\n1ebd1031cd.png\n6c725b1b62.png\n6a936a6de9.png\n5fd24230c4.png\na3e85ba277.png\n8aea7aa3b5.png\n5d5bbffb59.png\n470fd746f1.png\n96383c7022.png\n06da5a2b39.png\n29422d4ed6.png\na2a2ec508b.png\n013b2d2dd1.png\nac8ecfa0f0.png\na24e316abb.png\nfc04d08cfe.png\n753f85d9de.png\ne265c37b89.png\ne35bb189f6.png\n2aa93d33e9.png\n152abce000.png\n86f2cf093f.png\n31fb079ea8.png\n21258b28bb.png\n5bdd3618c8.png\n5bfa612299.png\n9b55f81daa.png\ndcf1889cbb.png\nb1667e0603.png\n5c283e9cad.png\n13fd9a6ce9.png\n3fba8a6660.png\nd89124eac2.png\nddf2eb4eb2.png\n67a413f082.png\nd5e433e1bd.png\n1e7e77e274.png\nca2cc667dc.png\nf1d70317fd.png\n0f4c862220.png\n48e7a5676b.png\na0a13ec7de.png\n2afd8cbff7.png\n063d449cd2.png\n750ef7cde4.png\ncff78ba6f7.png\n6395bd6c7f.png\n1aaffdb790.png\nb42ae73708.png\n66eb719e38.png\n6d3bb1c3d6.png\n6747f7bb35.png\nf21090dacd.png\ncff690800f.png\nbb01433ae6.png\ne148bc72aa.png\nf18eb3b587.png\ndde86fece3.png\n37a866550e.png\na3c26d86cb.png\n1596ae1cdb.png\n253508042f.png\n095473ab35.png\n1aeaa85dae.png\nd21d09dd73.png\n2d50edd604.png\na04349cfc4.png\n57ff363100.png\nad3daf9ba7.png\nb440f01d8c.png\nf0d5d88809.png\n826120ef4e.png\nf1a0db4ac1.png\n9bc6bf1c23.png\n1e6c05169d.png\n7fa49d7624.png\n6bc1550a56.png\nd343f6974e.png\nc66ae04671.png\n70764e7a6d.png\n45911f71fb.png\n9594833b58.png\n46eccacdd4.png\n98b49ec0e6.png\n98a174a0d4.png\n3c01f5e5cf.png\n0a5eac8775.png\n0614cf0b6c.png\nf8088ca24a.png\ncffbb49dc1.png\n8e115cbec4.png\n716575974d.png\nc62b3e15f4.png\ncc4cb99e50.png\n72ccfcef34.png\naacc4fb565.png\nfeec666b6c.png\n80b2ea548c.png\n1cbb39d623.png\n2455c55b4e.png\ne1d26c8806.png\nda72305266.png\nd91fb67e81.png\nb3df47aa9f.png\n932ec40ab4.png\n447e0cd396.png\n700a2f62f1.png\n3f77083653.png\n432e819b15.png\nb3eb95cd5b.png\n606cf6645d.png\nbdb7d19e2f.png\n69e0c0ac2d.png\n60adaaeeef.png\n0e83c832a8.png\nd63e5779da.png\n3e1e8416e0.png\nb7c6762ad5.png\neb574eab0e.png\nbb319c8fcd.png\n20c314dc8b.png\n0942db4eed.png\n9e9f1a10c8.png\nf051e93f9f.png\n9ffb5d6034.png\n80edfca7d3.png\n658b78124a.png\nfaa5a454bc.png\n0e8ff74901.png\nada318e411.png\n10d990f91e.png\n4f42f2193a.png\n1d5095d325.png\n58b73c60c6.png\n2b3fa35f16.png\n974f07329c.png\n8a5739903e.png\nbe06a00a4d.png\ne9032dee29.png\nef77a03cae.png\n6e70299b98.png\nb479520ed1.png\n94f53802ae.png\n7173e8bb6c.png\n5f9c7e9503.png\n2c5ee8638a.png\n7b8700f0e1.png\nbe9f4dba24.png\n34b01f1639.png\ne6703f6191.png\n6aeee32e59.png\na046868003.png\nd390da215f.png\n16771e6d53.png\nb059eb7570.png\n44cf29d695.png\nce7addb51e.png\nf0c6966ef8.png\ne146c20d21.png\n68d8ee613f.png\nfc471580a2.png\nb3680c53d9.png\n22f1d9ba23.png\n1e4e74dd1e.png\n7b49a01666.png\n639e8ffbae.png\nd8807e8abf.png\n065c6cd6ff.png\ne09080ef49.png\nef491c01dc.png\n0f81ab5099.png\n3189466c83.png\n6a0282da60.png\nb5a52c35fc.png\nf737613072.png\ne78df7b2c3.png\ndb50e3d295.png\nb1ceebc1fa.png\n17f3075bd2.png\n9b7e9f8a91.png\n79201fb797.png\n54ac782d61.png\nde3db2a1c6.png\n9ff430c52b.png\nd84f620e57.png\n242f1fac62.png\n2c0cdab53e.png\n84ac54e5a8.png\n3a8641b598.png\n67c6eccc7d.png\n39c584b10a.png\n0a1ea2ce4f.png\n2093e5c98e.png\n9c57a7ab91.png\n30d3aa07d0.png\n4ccd4ad68a.png\n8de3dc60ac.png\nec76f13e84.png\nb02595bf3e.png\n3e70505ba4.png\nd53f293494.png\n96ed985fda.png\n6519483c74.png\ncc6a06550b.png\n3149b1eebc.png\n50b9046e67.png\nb5a76532d0.png\nd1b35d319f.png\n5b28bc540c.png\n2d3ff9e083.png\n969caf2c6c.png\nac6c4357a9.png\n82f8e5737e.png\ne04bf08dff.png\n8ceb500014.png\n646f093b5f.png\n4aa6feb688.png\n8ba0248e74.png\nfc8d512788.png\nb3b28f26eb.png\n97da46ad4a.png\n0d10332602.png\n9e346a910c.png\n3823ddd8cf.png\n0c7a052374.png\nff32fc77c7.png\n1fb19a252f.png\n7bd8bfb18e.png\n3fde792ba8.png\nc54ccd9f94.png\n48f237773a.png\n9b5b0e60a1.png\n7dd0a19b0a.png\n9cfa22e826.png\n85007ebd13.png\n05af913dbe.png\n3d65b48db5.png\n18619c2342.png\nb5544cfe5f.png\nc6ba202202.png\n668cf61ce0.png\nea122de9b3.png\n43be809ad3.png\nef73a37e31.png\n2b13786b5e.png\n3b7121a267.png\n3cbade83c1.png\nb475e5ad7a.png\nd29d1424ce.png\ne9feb4fcc4.png\n70c6e41609.png\n9aae327222.png\neccc82228f.png\naa81ca4f3b.png\n107abcbb72.png\n6df6139389.png\n7bcfd67b4a.png\n68b826491f.png\n70c273f62a.png\n35e9810619.png\n4ab53d1795.png\n8aaf885cd3.png\n34c5b8d814.png\n9a14689f82.png\nbe8310513c.png\n0172b71f58.png\n13d02b602b.png\n154e585cc4.png\n595c54b0ac.png\nd27db3dcc0.png\n834c1f2d71.png\n88c9d3f47d.png\n097989f097.png\ne01c32c8a9.png\n3bde8847ad.png\n530f6e4597.png\n11f4ed3a8a.png\n82670a1711.png\nc435b4f4f8.png\n52da078de7.png\nfbc680b74f.png\n63d4a471c8.png\nc9afe2f91e.png\n96e1a80391.png\n3b6ed42600.png\na21e1cf8d4.png\n89c5994dc6.png\nbceae870ce.png\nafa6b76f77.png\nc192a33608.png\nc6d577c616.png\n8f3ef2f080.png\n07d94f047a.png\n3bc1fe41fc.png\n6c34c04e12.png\n1c7c8f02c5.png\n0406d1fda9.png\n27fbb734ab.png\n01066c1de0.png\n6be77d7154.png\ne32ae6e436.png\n0a75bbbb74.png\nb455f3a725.png\n10c0624432.png\nd1dcbcfea6.png\n384050c4e5.png\n1e7b37c671.png\n6768f2c7cd.png\na27e70b9ad.png\n6dc362f696.png\n250a94739d.png\nff349094e4.png\nf5395fd3cd.png\nfd219f9cfc.png\n2c4ec05c50.png\n6e8d40dc65.png\n8f6454562a.png\ndbd3a5dc0a.png\nb4fc2ce0be.png\n0cd43eb1d8.png\nd63629d428.png\n79af45f6e5.png\nadc1ec2462.png\n4708fce9cb.png\n0ac4df785f.png\naa082095e7.png\nfe9ef87c45.png\n46af3a5b29.png\nbd67eeac0f.png\nb3961ddea6.png\n462ee323ab.png\n37676b8fa4.png\n577eac9bc5.png\n55b7d18492.png\ne1b5a636ba.png\n7177b9576f.png\n61ec0b181a.png\n2df8965962.png\neef6e1c58c.png\n69d4d52bb3.png\n4ce34a9fb5.png\nd07b5f804a.png\na4e04b5bc8.png\ndc066ad24e.png\n48d00777ce.png\n2afa754199.png\n7a4ef2cd6c.png\n70779a50f1.png\nb142db0966.png\n4504f9c398.png\nfd82a6b2f5.png\na19df661b7.png\n75623af4a3.png\n5d934f890d.png\n8c7a0d5a1a.png\nd0da4f7de7.png\n0670f16651.png\n7e35e90693.png\n2f7043caf5.png\na16b0e43e9.png\n1d6e08ee8d.png\n2c04e84b3d.png\n48e9086d51.png\n20e707e4e1.png\n7b9739c44f.png\n673d620dca.png\n3835ff55a0.png\nd4e2400b25.png\n0a7c09181a.png\ndc7d737c47.png\na6be9b9688.png\n2bc9bc7c1b.png\n0681b94208.png\naa4f987da1.png\nfcfac062ef.png\nad068f08d1.png\n5261804250.png\n9c726c07cc.png\na03090943e.png\n00a9b78f49.png\n8a6f94a69a.png\n6a0c145773.png\n0dc2288534.png\nd07279fb65.png\n86cda5f8ce.png\nd454f0d70c.png\n5cfa3dc715.png\nb19888b1d4.png\n3ecd9b4931.png\nc10a04cb9c.png\nbabf9dfe9a.png\nab4a9da299.png\nc216c094d3.png\n57e445c326.png\nff52c8f5f2.png\n4e10dfcd54.png\na16bbd70da.png\nb84a690f8f.png\n4c64716fa8.png\nea5cc18a2d.png\nce146a156c.png\n48db5fccee.png\n265e1752b4.png\n22b0703aa1.png\nc1b4f6c978.png\n4882d2a775.png\n7bb36cdb1a.png\nebfba68ec5.png\n4a82c89850.png\ndd05b799d5.png\nb930c21ff1.png\n569c62c7d0.png\n7b4e7cb0e1.png\n279999e213.png\nb54c04f07f.png\nb66dfdf6dd.png\n0bcf0f39d5.png\n58335ef080.png\n51caec18c7.png\n8561c63d20.png\n9e17d61db9.png\n7757d22ad4.png\n2d6fbe4e0e.png\n16541f595d.png\nfb820642eb.png\n1d085fd979.png\nca30359954.png\nee71a6c72b.png\n04aec42282.png\nee09643244.png\nf3d195ee69.png\n5202aa6a12.png\na747fc2b99.png\n43e7c593d2.png\nfb305a2062.png\nbaab5d127e.png\nd50e55dc71.png\n4d66fb9825.png\n55689d22ea.png\n355ce54530.png\n449a9e0c51.png\n2d36bc16c9.png\n2428fce568.png\ncbf2924b41.png\nb8b46ff67f.png\n6b6e268379.png\n69ab424098.png\n0d151d1bbe.png\nc9049a4fa8.png\n82dc91ec22.png\ne54d72e6b7.png\nc95e99e11f.png\n02607a1d6e.png\nae80852574.png\n9b1b4b7481.png\n5755998028.png\nce78d7d613.png\n76f8eb7530.png\n873c879e6c.png\n4a4c747233.png\n9e54e0ee92.png\n14c9bc2545.png\nb433dba580.png\n0cfc3f08a5.png\nf48701d932.png\nf741649c22.png\n1aac5dad59.png\nb8945d366f.png\n40e58a796f.png\n7cf4d3dacf.png\nf6964b62ae.png\nef252584ab.png\ndf19018cf2.png\n634088c2cb.png\nb9c7a3c680.png\n8be77224a0.png\nf2db786fef.png\n6b1a1e50c5.png\nc440ceda26.png\neac66ccf10.png\n40525a740e.png\n3a1c84fe7c.png\nfca4d42846.png\n27aa644839.png\n1c51a79860.png\n9ef7777145.png\nd17e8f536b.png\n1ffc2168ad.png\n66dec21f1d.png\nc60ff9fb7d.png\n56cfa0c19d.png\nd5e5df065d.png\n462a7f9805.png\n74c0bc5214.png\n556d61cbf4.png\nf2d3d06909.png\nc835712756.png\ne16235fa5b.png\na48b98d992.png\n494ce6d61d.png\ne72b32e044.png\n389eeae597.png\n82d226eb19.png\n787c79465f.png\n5cbf79259f.png\n76e5c5422e.png\n7d761f02c2.png\n3cc01963e1.png\n58c949a784.png\n04b90090f8.png\neb9af521d6.png\nd2edf62bfa.png\n0b2fbd6e26.png\n0f8497a7f9.png\n33e736f52e.png\nf00dc3b37e.png\n808fb3d46c.png\nc987a5763a.png\nae2f6f17be.png\n89f8881f19.png\ncb610f515a.png\nc616ac5178.png\n9f6bc7a549.png\n13d601c146.png\n368fc1bf25.png\n64ad650850.png\n6d34f414ed.png\ne47f1a1be8.png\n115d0054ef.png\n6fb522de93.png\nee8f46704d.png\n0e991e3624.png\na3cfc9ec3a.png\nca3bf7b634.png\n69dd4b8705.png\nb52ac8f64e.png\nbe234bafbf.png\n0fa1e2ec0d.png\nff540c7ca0.png\n47c62d446e.png\n3d80641a99.png\n43b527f949.png\ncb61601ea1.png\n8536003f03.png\n0f6aa9f5da.png\n4096a4741f.png\nbf42f85d68.png\ndbe0fe4dc1.png\n0e67c7794b.png\na16611557b.png\n6ecb722809.png\n3435b69c29.png\n201c30c2f3.png\n5d9d31868c.png\naa29e7876b.png\n198925c04a.png\ne367a6ca8b.png\n7f841928bb.png\n7e94eb71be.png\nb77ab07896.png\n67fefe864d.png\n8e132e492e.png\n98a9095250.png\n78ad1df4a1.png\naeb4aa148c.png\n49ee3373b3.png\nef36c47553.png\ne6b76e030e.png\n309400bf90.png\na4f86ae62b.png\nf38d7d303f.png\n9db87ffdaa.png\n7b8bada98a.png\n10321b58c3.png\n0969783d07.png\ne1a0cca60e.png\naec650e318.png\n4cfe2d4763.png\nf158599333.png\n445bfee824.png\n6e9484138d.png\nb349b57230.png\ndcff079eb2.png\nbc2c4e63bf.png\nbe8a6ccc8c.png\na099efaadf.png\n92d9119491.png\n8c14ce1882.png\n073eeb58c8.png\nfd6a32c9b6.png\n691a004407.png\n7f54fb7d0e.png\n8e131567d6.png\n4dee03c883.png\n3b57b1ef9d.png\nbfbe0808b1.png\n7e0d970af8.png\n8f3009b2cb.png\n66e610e586.png\n2d75d6bc0b.png\ne9a6d47f94.png\n518b6d0f17.png\nd33fce2c44.png\na77f740603.png\nf8f3fa162f.png\nebd7b4879f.png\n2542f94c1c.png\n0f77318a28.png\n32cbd61c99.png\n9ad7e627fa.png\n7ebfc0aee3.png\nc35a01102a.png\n462493f004.png\nd3b9892977.png\ne63b9c1cd4.png\nd3cdf99eba.png\nccceb23dda.png\nd1bc57f92d.png\n2e24b94e5d.png\n985bcaf46f.png\nd90e533ce3.png\n53b90f4e43.png\nbbc1ca699c.png\n3bb4884ac5.png\n4f3c55a643.png\n4b478173aa.png\na6903a84f2.png\n0f5164a7c9.png\n29309e32c6.png\n75190d4eb8.png\n899bef8b58.png\nc039fc26ad.png\n37e8e0a012.png\n742fb47f42.png\n26b509826c.png\n3dac7c4094.png\n4d630eb6ce.png\n64f1e00916.png\n2425fd4e27.png\n7bca7168b6.png\ncbab88c5c0.png\na9d067cf35.png\n09a53387aa.png\neaa481ae86.png\n4b1bf13b46.png\ndbec5c6e98.png\n0245364ec1.png\n108fe2c3d8.png\n4fda00e2d1.png\n3660856523.png\nc4f2c790fb.png\n6bfa33ab79.png\n495da9037d.png\n0e79df7ad2.png\n6ea89a9eaa.png\nb8173c3664.png\ndf34ce2d4c.png\ne7afd37c7f.png\n1fde67d42e.png\nb68729a56a.png\na6327775cd.png\n1045d28892.png\nf66b2e3432.png\nfa37b3bbb5.png\n751bb24ab9.png\n597a8f0a20.png\n10ccf7d9dc.png\ned063311a7.png\nc5141ec49f.png\n165ec50967.png\n5f240e936f.png\nac03d3aeb6.png\nc62fb52445.png\nf5199961a1.png\n62bce5724c.png\n95ba7bd510.png\n79eb884bd2.png\n770210adb4.png\nea35a95332.png\n28abb87539.png\n73acee452c.png\n073a59f653.png\nc60ef7505e.png\n20933fcee0.png\n557b56b7e9.png\n7e0279884d.png\n80b0fa63e4.png\n81b1d7ed17.png\n581a8a574c.png\nbd0ea3d8a5.png\n38bffa5fa7.png\n1cc2a7346e.png\n1d35fb9bb8.png\n3998ea2fb2.png\n75ea71b97e.png\nbc15d3d823.png\ncac3b6adf1.png\nb48d5d0a49.png\n097f02867c.png\n8d3552011c.png\n6adbbca343.png\ne133fc5d3d.png\nf4fd4f5ebe.png\n5a7e7cd37a.png\n2510191dbf.png\ndf3b956d5b.png\n0ec11733cd.png\n4ed082016b.png\nc32048ab2e.png\n45bc251e85.png\n95775a9362.png\ne5fc8cb081.png\n3e613b4906.png\n064a8eb3dd.png\nd566980876.png\n14525851f6.png\n8c139b7d3a.png\n93614d4b95.png\nf4a6b37b7c.png\n84450c580f.png\nba9328f577.png\n03138aebc4.png\n69a52adc65.png\n029612d30a.png\n23a760a05e.png\n5a8dce4386.png\n7f380f4095.png\n6c0f139b5b.png\n254689666f.png\nea68c33a0e.png\n3116974feb.png\n5a88500149.png\n25ebcec9c0.png\nf95b20e4b5.png\n20a3294af9.png\nb790c65f84.png\n2becc508a4.png\n4ad823e2d3.png\n4eb539b65b.png\naff52da041.png\nc7a2535ee6.png\n7e1b79b767.png\n789b0007eb.png\n3b680d50c9.png\nba6e0a1859.png\n817dc95214.png\nf89b63c425.png\nac30b3edde.png\n5edcec5115.png\n5962b44f3d.png\n03dcdf8b24.png\n1bf9e7785d.png\n0e91ebd824.png\n1fdf1ea64b.png\n58bc76194d.png\n41df6abd8b.png\n2c22f20699.png\nf91185cc34.png\n14862c2754.png\nebb5c4e58e.png\ncdb6298286.png\n62d11a72f3.png\n5005257da5.png\n26f2a18ee2.png\nfb663774b9.png\n7ee71ee874.png\n0bcfa63f88.png\n5137243b27.png\nfd22cb4311.png\nee5e67f77a.png\n04ecf2b040.png\n9001151a5c.png\ndb5ec02b2e.png\ne24efb21d8.png\n577e97ccbc.png\n3ffbcbfb40.png\n1f3f6c3791.png\nfa3e8609bb.png\n84c314d868.png\na778e85a05.png\nd2f25a78a6.png\n2b9d6bad0d.png\nc0e7b93c04.png\n604e99b0c6.png\n65aa0b8161.png\n9e2f4c7946.png\nff16cbe4bb.png\nd2f82ead6a.png\n14e3b9d607.png\n8b9528c3f2.png\n6cf706f764.png\n15474a9e79.png\n38d9fe1df5.png\n64060a574f.png\n4da725a703.png\nae87f367a8.png\n427c6caf1c.png\n598a044729.png\n84f807d2ad.png\na2393894ff.png\n8972857ec9.png\n665452e731.png\n07f00d6967.png\n7ffd320769.png\n5968a5ba44.png\n5f2b6a66d1.png\n7f8cc01860.png\n2b185ef472.png\nbeba956f7e.png\n402b2c241c.png\nce9b8cc11e.png\ncaee58b3ea.png\n750aa12137.png\nc689bc0cbb.png\n5bb0ca2e6b.png\nee200c15ac.png\nd2862ced4d.png\ne4a1869906.png\n85a9824616.png\n51caea4f7a.png\nc4f2855630.png\n624aa8ebdf.png\ndc888669ce.png\n77aaeef0a4.png\nac2404b452.png\nfa78260d1c.png\nd0fa5460a9.png\n80988b32b4.png\nb4382ccb5d.png\ncd81de3128.png\n0d2e3e9a4c.png\nd4602e9eb0.png\n570761aef4.png\ndd59e76729.png\n5a01200b40.png\ned764022ae.png\na7d56ddaf1.png\n42f38d930f.png\n26b001bc1f.png\n72db0c3a2f.png\ned793c1d33.png\nad8604aeac.png\nf31007fdcd.png\n77a154ebcb.png\n00e68bfb1b.png\nf707d4c4ba.png\n9771c21176.png\n561fa940ab.png\nfd284219fe.png\n11373f4cb8.png\nabb62290bd.png\n6315adc398.png\n1873c5eced.png\na38c6bd807.png\naaddd5cd19.png\naebf99da9e.png\na218c04841.png\n423749f702.png\nf37d00e098.png\n21c09f5272.png\n10a04f7dfd.png\n792351f140.png\n917a0e6868.png\n72317af9c6.png\n1056e892f6.png\n8e1a651214.png\n66ce83df1c.png\nc8a942dbf4.png\nd3696f45f9.png\na5f876a4b6.png\n62d367a908.png\ne6735cfd80.png\ne23d59c891.png\na1a950ce34.png\nc467bf46da.png\nb1b4b687f7.png\nc0188d737e.png\n6fc2b9d6fd.png\n416bbf1081.png\nf7cb3559f9.png\nde917fe153.png\n2a40c4adeb.png\n14027d7d54.png\n113ff7f87d.png\n6c654f0642.png\nfd2642606b.png\n832a05c627.png\nb173d500a9.png\n5aa379e81e.png\n0304e028d9.png\n6b030ae5e8.png\n1045448bac.png\na74573e55c.png\n63660a3693.png\n62b4377713.png\nd2353f04b3.png\nb773d9a181.png\na624d8dc64.png\n0df528c6f9.png\n3a81fa6cb5.png\n1de2a09cca.png\n9e5ca2e27f.png\n604e5bbf9b.png\n5dafe5bb61.png\na647ea2cad.png\n9aa744c0d6.png\n2a481972a1.png\n3821e89b66.png\naad74ec770.png\n342ec0cfc8.png\n4397a2b3fb.png\nd5f7d673f3.png\n41574b9d75.png\ndc048ecac2.png\nc5dded34ae.png\n4c822aca6a.png\nac18a9120d.png\n10f949e0c3.png\n147caf1892.png\ncad650215e.png\naaa9b6e252.png\n8f73820ee7.png\nc8899dc0bf.png\n54a36671be.png\ne145be89b2.png\n03e9a82817.png\n2ef75bf4d2.png\n34dcdfb4c8.png\n1a1383df07.png\nebe37a58d3.png\nc8eb320feb.png\nc3c41a510a.png\ned17b586e8.png\nd639f4c3ae.png\naafdda92d8.png\ne9c780ce9e.png\nb688bd015e.png\n97099ae7b2.png\n8db6e29dd8.png\n0fd4156470.png\na3b37496d0.png\nf51afa7501.png\n1442c59632.png\n44882c70fb.png\n7d9995c4cb.png\ne42e6250bd.png\n577e38c148.png\n65b8b45711.png\n0634142132.png\n2126d0dea6.png\n765964a84c.png\nb174e802d6.png\n5655bebf54.png\nd2511dfca8.png\n6b6aef9a45.png\nd0c287e257.png\n98ef92da51.png\n0d4c2ee69a.png\n2c755bf200.png\n5546a9b0a7.png\n122568b709.png\n7de77dc41f.png\nd1b2555927.png\n3d059ab2cf.png\n955a9274be.png\n62b7bc9a1b.png\n6ed76bb3fd.png\n4d3cdc8697.png\nfe051a426a.png\nf1d52a443e.png\n32163dcd2a.png\n2282d94f28.png\nff3267b613.png\n120ae382d4.png\n26b573dd27.png\n3f90de437f.png\n01ee06523b.png\n4eda5fee4a.png\nb3ee456eb5.png\n6424d3b6e1.png\nd18d6ca1b5.png\na0eca9a853.png\nea83727b30.png\nb97701125d.png\n293dccb805.png\n58bf5a0052.png\na1646cbb62.png\n6700ff86b9.png\naddbeb160c.png\n91002b54e4.png\n580cdf3c55.png\n3fa5b770f9.png\n794e763e6b.png\ne5aa4a03b4.png\n2eae67f243.png\n71408d1c56.png\n3bde973437.png\n1ac7f45711.png\n2b66c196d7.png\n84e866a2d3.png\ncab5dde4eb.png\n606ef9d9f3.png\n399ac12902.png\n22b1274df6.png\n8be34a849e.png\n3d0fec4a1e.png\ne3e55d9e16.png\n595b69ce11.png\n945b8261c9.png\n2d5ca11aae.png\n5df1adaa10.png\nd155d709dc.png\n69d62e153c.png\n817a1259a3.png\n2bf72b17e6.png\nef7b551c05.png\n0e9495f2fe.png\n308469f5cf.png\n3772d8349e.png\n6e166d6284.png\nb3777ff467.png\n17a5a58850.png\n59b6130fa0.png\nc9bd75f14e.png\n1cfaab36d8.png\n4680a45404.png\nbe6c27d3ab.png\n71aa85d5a4.png\n3b88cf99b3.png\n73eb023f31.png\nccd8af9426.png\n527f4c67b5.png\nc14978dca9.png\n568a6188ab.png\n32034f14af.png\n84c0fd3ce3.png\nc238f22e8a.png\n9a704ae142.png\n2a9ff688e3.png\n26e5094d40.png\na342e04707.png\n3b5653f6b3.png\naf1d588df1.png\ne21021cd36.png\n0203970177.png\n0fa88fc811.png\nfd07e58d73.png\n8894588d5d.png\ne08ad29c4d.png\n051bfc19fc.png\n2265b53f82.png\n48b3dccf26.png\n5cca94091b.png\nb1b8290b61.png\n949d41bcc8.png\nf4aae34a84.png\nf869349ffe.png\nc22fae7598.png\n5a25f90bd9.png\n511e4a0eb1.png\n593e0e741f.png\nf87ef87ca2.png\nc55beb0582.png\nc096fab229.png\n6bb333fe7b.png\nc5ef41f73e.png\n606efcc5ae.png\nc1dbd8af8d.png\n77ba57abdb.png\na707bacffb.png\nd8af997922.png\nb7c3012e31.png\nabd9ba8120.png\n255a44ea74.png\nd1b150a0d0.png\n4e22f17d32.png\n233b762d1a.png\n7f9e856b9a.png\n8311fce851.png\n60c4d1d597.png\n23a9b95318.png\n618bace044.png\na15415f3c9.png\n9f3cc74e77.png\na328d04452.png\n23ff5127ff.png\n3b403b3f01.png\n7dfe39d7ae.png\n119db9578b.png\nda0c1a83d9.png\nf2d5b21c5d.png\n2ccc636a08.png\n5df0d7bceb.png\n96a7ad5c07.png\n48c9c1c34f.png\n29a4296e74.png\n7f62bd4856.png\ndf22272d32.png\n295e52d03d.png\nd80d9c1445.png\nf33605c868.png\nc215f25359.png\n0cf4d64a89.png\n8e479eaedd.png\n922f50a838.png\n58c2fb4293.png\n76876c97cd.png\n563692395d.png\n506bc2ec20.png\nd8a4c11479.png\nbfbc7fe76d.png\n5b6501b1e0.png\n0ff0988d7e.png\n1b554577bf.png\n0a5f49ac6e.png\n5535f37211.png\nd45c69bd9d.png\n373b220a7b.png\n808c282801.png\n155de1fbf9.png\n25db63dca5.png\n0123eeda35.png\n206045cf26.png\nab72718c45.png\nb91cbd7a4a.png\n66abc632b7.png\n0f2540e5f7.png\nab5f39fa08.png\n26e47af0a2.png\n7b9a3b1da0.png\nee1bc8b7e4.png\nea1fe0df1d.png\n1f68e3a538.png\n139d31bbc4.png\n6c50e0b05e.png\n3ad1d37b83.png\ndb7bd98d2f.png\n9e866473b7.png\ne506b4b589.png\n15a76bc90c.png\nd05c1dc1ad.png\need2797518.png\naf6dd3433a.png\n7fb97671b4.png\n44257c5138.png\n7708c1a8fa.png\n254ad9e3c2.png\n3d4093dcdb.png\nea0c6893a5.png\n2eb194fca4.png\na089157e91.png\n4c7f5de583.png\n80590647c7.png\n54c30d55b3.png\n99a661efaf.png\ne0bbaec3b9.png\nb884ea365d.png\n8f02627082.png\n7884eaed47.png\nf5bf21ccc3.png\n1b64862494.png\n5637102f6f.png\n23d24d6b0b.png\nf6a9cdc607.png\n3a5bdd55ef.png\n3911bcfb02.png\n0c187c0ec0.png\nffdc97aa4f.png\n56b654a72a.png\nc818265a5d.png\ne3261dbace.png\n8279b390ec.png\n7680c9b7fe.png\n4411ace0b8.png\n0f5b2d9561.png\n075c99bcfc.png\ne49d683e92.png\na0c20610e2.png\n02f0e1dc32.png\na4b54abbf7.png\n629e31317c.png\n151099de84.png\n10d2e76fb5.png\n208e7fcf75.png\n956aa89d91.png\n111eb1d764.png\n99f14c4b3c.png\n6b1694099b.png\nb199772417.png\n86b02d1253.png\n43e345b8bd.png\n7e38f83eb1.png\ne3577b8d4d.png\na7ddfa3911.png\n505692120b.png\neb30d99426.png\nbb055480d4.png\nfea329e4ee.png\nde8e649f22.png\n12298a8e03.png\n1b2c24dfdb.png\n3159053d8f.png\n52c753e4da.png\n5f706cc210.png\n21789de742.png\nb2294d186b.png\nfbd452dfbf.png\nb6f6a93b17.png\nba6f30ad6f.png\n334f76e324.png\nd64b58516c.png\n90ede84c79.png\nf51a494b10.png\n88bd7bfca0.png\n9609f60e28.png\nb51c6afa98.png\na99d486d6f.png\n19d2303888.png\ncfa895be5c.png\n7ee3778aaa.png\nc7937f3713.png\n988ed36efc.png\nce23065eac.png\n4c4ccb59ed.png\nf6e2c5da67.png\n26c4ff2238.png\n98017bf556.png\n39c47a3f54.png\n053566ac5a.png\nd16f246753.png\nd734013742.png\n0176d2ace5.png\nf678d23811.png\n846d597c6b.png\n9a39b3caad.png\ndc330f6bfe.png\nf1ad140585.png\n8e0c252445.png\n5ba442f1cf.png\n181f0917b2.png\n35ff11761b.png\ne1213e9ace.png\n2c84e49a39.png\n19167725cd.png\nd4b07eba7b.png\n65b5805351.png\n096e56929a.png\n79d6d9e217.png\n51ad12b135.png\n23578edc04.png\n9c6d46eac1.png\nc86aa5e90a.png\n97a306a60a.png\nd074403298.png\n070394af17.png\n22323cb42b.png\n720b810ecc.png\n80a63d5fa6.png\nf124af3a8a.png\n609afffbe8.png\n5073b62291.png\n633a88f80a.png\na1ece99af1.png\n71e17c98ff.png\n1806e34f68.png\n533683b8e0.png\n0c4a4fe6ec.png\nadd26d48a4.png\nff9d2e11aa.png\n325fe8db2b.png\n101fab9667.png\n224b5191f1.png\nfaaf883ec2.png\n4a023354b9.png\n4f381902e8.png\n7233849a7a.png\n30e76b97d1.png\n8e2b00b033.png\n17170c3fb1.png\n94a1b56a13.png\ncc859576a3.png\nf346f5a7da.png\n11b4141a6a.png\n284894a681.png\n50cb6ae8b3.png\n9213d2bca3.png\nc925d8f9e1.png\n49830fa829.png\ncbef2e2128.png\nc87cebf728.png\n7c6e4834c9.png\n5c91f8d9c0.png\n46fdd04ed3.png\ndf6ab067bb.png\n991ec143b1.png\n23028f1d61.png\n89c9bd7ad4.png\n494a610bfa.png\n69b96fdadb.png\n752d0ede64.png\n6c91aa602d.png\n46bfd27b90.png\n18bcca2e96.png\n59f990f493.png\n0498d1fd98.png\nf24e1277be.png\n0505759310.png\nde59f281db.png\n3f94b6d38b.png\n88f479236b.png\nd2a65f4435.png\n144c958fa8.png\n3b32255caa.png\n226ba1773b.png\ncb9aedbfdb.png\nfb08e351bd.png\nfaabfd1272.png\nf560c14550.png\n43874376f4.png\ndbaa4c219a.png\n131fc7cbf2.png\nf63dc1e3be.png\n0a98fc89ab.png\nae3782511b.png\ndcb3f0a060.png\n164999db81.png\n5b808ba57b.png\nfb773b7c69.png\nd2e5b43517.png\nc6c66ccb3c.png\n736061632f.png\n695d72762c.png\n135e445ceb.png\nbe74bf2e59.png\n4a33e17f59.png\nc0434afd21.png\n4b1ad60300.png\n01a70b45ed.png\ne4cf54768b.png\n00c473f654.png\n81466d1890.png\nba75f507fa.png\ndbf7801ea6.png\n36d1b74131.png\n7896674088.png\n3003a4c4c8.png\n2c327a06e2.png\n7ee1b2f49b.png\nabace4b11f.png\nc9a3cb97e5.png\n7b20febd6c.png\nab5e7b990d.png\n0b1b18a835.png\nbfb385be9f.png\nd431312cb9.png\nfe8abf3496.png\na1c1dad851.png\n2c61e169be.png\n77e13dbb16.png\n7ed6ac2f41.png\nf5fbe0ec32.png\na30a23a310.png\n8eab008735.png\n00cde1fc96.png\n2224f6d2d3.png\n5db75dc1f1.png\n6a54c9a21f.png\n95ad98d2a6.png\n368b385f61.png\nb4fa92bf4a.png\n339db3eb53.png\n8d57bc47c1.png\n41cb99014d.png\n9eab4428db.png\nbe56c6732d.png\n55b1c3e797.png\n92e4cc072a.png\n53db37148d.png\n4b532df3df.png\n6429ce0a8d.png\ne902cfed5a.png\n61c2d72207.png\n349f4316aa.png\nc8bb808990.png\n14bdb1a4e0.png\na8a6d20d45.png\n2b05065d47.png\n1e62bfeb3d.png\ne612ab0326.png\nb054b1c29c.png\n80668fbcee.png\na6e3ee1039.png\n179de94b7e.png\n27e7cffaa9.png\n4a1afaf591.png\n3a5330c79d.png\n69f47cbc7b.png\nffd47b14e5.png\ncd8ed0c05d.png\n1298444dfa.png\n68d70623a8.png\n0e64ca0b80.png\n9c86b981a8.png\nd6e41f3c45.png\na78ec4f628.png\n60fa9f985c.png\n78d776d952.png\n750a9f8a03.png\n7fd682b979.png\n7eaa5900b9.png\n9c82805504.png\n9be54cd6a2.png\na4990e5d39.png\n743a985f94.png\n43fb770e34.png\n262dbffadf.png\n793dde2ab1.png\nb2eb29f6a6.png\nc96223d1d2.png\na026d16f0b.png\nfe0f94a2bc.png\n85720e2425.png\nf411b6b9c3.png\na340d1d4ab.png\n7110db12b9.png\nacb9762a12.png\n341fca7b7c.png\n3330b9ee6b.png\n695da8b59b.png\n57157b6f9d.png\ne60b73512b.png\n90436aed27.png\n46bf3f3bdf.png\nb8d543020b.png\n5fbbe16b53.png\n043cefa1b0.png\n0a7fa5c5e1.png\n690ad6b01a.png\ncb040c0f89.png\nf57a53da45.png\nd4e045055f.png\n61c79657d1.png\n079629bc48.png\ne115069b08.png\n1c85715bf7.png\nfbe41e2659.png\na0f1f0b1f8.png\n245daa2004.png\n40a6d01026.png\n32970c365a.png\nb50f98299f.png\n725e4a6ba0.png\nba18af259f.png\naa532a7c30.png\n0eda123a2a.png\n5777ae6eb1.png\n39fd17e017.png\na17c4dc16f.png\nc9adcab5f0.png\n32fe997af3.png\n6376c88ec3.png\nc9a8c9c5bf.png\n57b461407f.png\n487e2ad19c.png\n36c0d6063f.png\nf947b41164.png\na82d7959b3.png\n25544ba1a8.png\n24ab6d3ded.png\n60ed5847a1.png\ne94ed59b74.png\n356334a716.png\nc3b07f663a.png\nb3c901c03b.png\na63fd8e2a8.png\n82bc39d826.png\n81575289eb.png\n58b893053f.png\nfee853f244.png\n9e54251a89.png\n8b7b938922.png\nc573df4315.png\nf9d932e912.png\n7271cef48a.png\n903ed53422.png\n1c6f0527ae.png\n1c2931e548.png\n497ed6a760.png\n4ce0d52b0e.png\n139a4307a3.png\n1d10ae96f5.png\n254a7179a6.png\nf9eb5a18dd.png\n5a4f3cfa85.png\naf0c3f3591.png\n641dabe2c5.png\n23f5febd5d.png\nafce0bd7dc.png\n650e16bbf8.png\na5055b4e51.png\n32abaddce7.png\ne48c8294d2.png\nce900e9c54.png\n0066451ce3.png\n75842bc006.png\nc8c576b9db.png\n942bf47b58.png\n08d6cb7e93.png\n1c224a1b4d.png\n431ad89cf5.png\n0a29abfa13.png\ndffe50ca61.png\n39c3747602.png\n7b8b5a7bbc.png\n62157d438e.png\ne8c3aa3269.png\n5382fb0713.png\nd3a1329a49.png\n62546dadf6.png\n0ee6773a65.png\ne7ef2c54aa.png\n7f80ac6447.png\nf96265d40e.png\n4bdff7af87.png\nede06242fd.png\n1af68faa92.png\n45116205b9.png\na3b91acb96.png\n2675797f52.png\n4c9eef5a61.png\n01f43eb833.png\n4553bc6fda.png\n72a6095db8.png\nc8409479b3.png\nba5da40d8c.png\n675d0ed1c7.png\n2035cc5f5d.png\n152f9b96d5.png\n1393ef7cbb.png\n2c89a54ba5.png\nd9827c66d5.png\n403b47ec61.png\ndddfb6085f.png\nb4f68d9a41.png\neb3b019e86.png\nb15d57ba45.png\n0ef56f5ef6.png\nc8c7701dbd.png\n64d5d795ee.png\n97dc92d4e2.png\n6013c6b879.png\n3a00f81f99.png\na900d21f9e.png\n99ea7f1c07.png\n9ccbea0d6a.png\n8b71ac9863.png\n28b3d997ce.png\nd526a6bf6a.png\n7252a44a02.png\n4a56c90000.png\nd6b4003095.png\n8d5a7fe872.png\n547f6cc102.png\n4dd463ca9e.png\n81b6dacaba.png\nd236c0b381.png\n8cc2d23c57.png\n41b3376629.png\nc068228c1e.png\n34a3c779b2.png\n60e17a8944.png\nafaa14f2a2.png\n6d00a14fdf.png\n4d119162bf.png\nd9d49a1831.png\n92fa3084e7.png\nfaf8e27e42.png\n60b7f7060d.png\ne54b5f7985.png\n29b2a38316.png\n7b24cc5255.png\n3ee59e7485.png\nca6f8f16a1.png\n122edd47a9.png\n22f5dc03eb.png\nc4507c616a.png\nf0acdd0a7c.png\na5cef24195.png\nb3c8932dc8.png\n221a6117a2.png\n43eee3a16f.png\n8847a1fbf2.png\nc22d9b32b0.png\nc2228f38aa.png\nddf789f194.png\nd81265587a.png\n390a558cbb.png\neb62b76058.png\n309e1f0815.png\n03ab71b9d7.png\nf8e06d0345.png\n51e533cf03.png\n82a5a9bf4a.png\n22c08a8dba.png\n3a7981d706.png\n188598e41e.png\nedc3e08e48.png\n8ef8466217.png\n5406a61720.png\nbca07dbbec.png\n3b5ca1ae0a.png\n3b881cf889.png\n78728951e6.png\n1811721401.png\n73053e4d03.png\n9e2cb9d6cc.png\n138cdd198f.png\n3e1cfd2ccb.png\n69adeb575d.png\nbc41500ff5.png\n25a0f0fd27.png\n15d090dfcf.png\n9cead7930d.png\nef898b80ea.png\n80a253818f.png\n18cd36e491.png\naf92444d7f.png\n9e88bf3ab1.png\n7467212701.png\n706f5ea90f.png\nc6e884e38c.png\nc2eed8269f.png\n1a279da1f9.png\nb91af03eda.png\nd1917291dc.png\nf9829bf4d2.png\n8b29f94321.png\nbb5b1e34ba.png\n85cbf88c3a.png\n41b907baea.png\n23ee619fec.png\n4ce3eb12cd.png\n43bc135ba9.png\n20d957cd46.png\ndd8c8b143d.png\n06b664b866.png\n0462491d87.png\nb8933f437c.png\ne53934a7c9.png\n49c9c04ee7.png\nddaf8d7cf3.png\n3f3ac0573d.png\nce4047f646.png\n0bd1e720bc.png\n1d241376fb.png\n6de3a6d961.png\n16b6cd9bc0.png\n68dd1c44ae.png\n98056176af.png\ndc0047f648.png\n0cb2f8b29c.png\n4ccc7e2691.png\n8ba3b7b19b.png\ncf5e9f93ab.png\n6ade8abb39.png\n61ac649947.png\n01a9e8454c.png\neb61290af7.png\ndb6f54bb56.png\n08c5eccda6.png\n6bf6f7cd9d.png\n66b2d4a486.png\n62560a7420.png\n873e2f5d2c.png\n02b224b871.png\n85ff5b98a7.png\nc4f3cced43.png\n5c21830f2c.png\n7ce5d97648.png\n59ed0ad9fa.png\nd36e380a0b.png\nafad34be59.png\n5d049a35b3.png\n634be460d9.png\n5e2793aa94.png\nd26f77256f.png\n1fca9e9479.png\n1dcf541ad8.png\n5125a5c599.png\nca0030c4ed.png\nd3947fc006.png\nef12562fe2.png\n781694a6b1.png\n4671f0bf71.png\n32326636a3.png\nfb131f3cd5.png\n8a927a2c52.png\n7c4a4add03.png\n37ca434162.png\n8113b5279c.png\nc4b4370ea7.png\n7eae0b1bb1.png\n8e3a461a6a.png\n34f399a2e5.png\n517872435e.png\neccbf3f0c2.png\n5097350725.png\n1b6afd84fb.png\n8502b6d382.png\nc2171fde8a.png\nc5afb8174e.png\n7381f17bcc.png\n86a72bdce6.png\n8c659875e6.png\n992bf0d046.png\nde3f584f95.png\na44587b9ca.png\nb1935eef13.png\n9ff01fb94a.png\n6aad94af7d.png\n616e0b20ba.png\n0228455db0.png\ncb88a4e70a.png\ncde2cf1ae9.png\nfd5894772e.png\nca08075350.png\nf4259be373.png\nd4c21d0aa2.png\ne78041acf8.png\n10a1d480a5.png\nc032d1b936.png\n194ebc0b86.png\n90dfe4f673.png\n19a9d37c4c.png\n372483a22d.png\n00b3ad08c8.png\na8e62d2504.png\n42a8d2bcb5.png\n37260d998a.png\n94fc265d24.png\n4df895ff96.png\nb55aa09a18.png\n612c946296.png\n2a26a80b9a.png\n16769a3e8a.png\na9d6ff5d4c.png\n6c7b1a041d.png\n153a47924d.png\nf741becc08.png\n73efb5b23b.png\nc2a4700caf.png\n0b9829c5db.png\n0cc93c1754.png\n0c45122390.png\nd8448c2a06.png\n593519d51e.png\nf4e6470f2b.png\ncfe57ea3fa.png\ncd8765b15a.png\n4c445e5206.png\n93ff5d63de.png\ne64711cf41.png\nccd4db34f0.png\nfd141b8ffd.png\n9af260ba1f.png\n7819882e1a.png\n3aef003939.png\n0ab43360f6.png\ned47d19004.png\nfb5bb6be18.png\n389d9615ec.png\n65a338624e.png\n4171b6ca36.png\nf448297676.png\n3fa643b8fb.png\n6d428b7d07.png\n33b02dc92f.png\nd9692cf925.png\n4efc5efc79.png\n8bce9ebbfd.png\n738958ae5d.png\nc620332bc0.png\nd2b3f8b7da.png\n9744ed0e4a.png\n7c37fbeb5f.png\n6fe9bc9132.png\n5bf950d526.png\n8eaa59df0a.png\n569e920119.png\n68666e7f45.png\nb203e59c04.png\ncbad522960.png\n34a7b93098.png\n877343b661.png\nb2a0365c9d.png\n6926d43d4a.png\n149d9f1a60.png\n06aa4ac96d.png\n4cdf314bda.png\nc576a01a52.png\n48132be0ac.png\n15253b48f4.png\n13a93f9444.png\n476bde9dbf.png\n6c72d0dfd0.png\n63340cabf9.png\n02e3c926d1.png\n6b3c84dc5a.png\n29e9f52665.png\n59d6fd86f3.png\nbc24d33d57.png\nd067d519f9.png\n0bcde7fb0f.png\ncddd1a5805.png\n157500b95c.png\ne4186029c2.png\n616ebf67c3.png\n2bec33a46d.png\n3bb7347dab.png\nd4a84662ee.png\n7128b1506e.png\n78ac553fb7.png\n034034d17a.png\n639a529644.png\n111b01c533.png\n09a9bd4ffc.png\n09cf21afa7.png\n5b25607782.png\n9e83c04d5c.png\n914df9f8f8.png\nf0c7259583.png\naafb5e7b77.png\nf2d52f3fc0.png\nb2ce3e9581.png\n6df9a9d1f5.png\n8221d9b2b3.png\nc6d9c13cea.png\n8974f6558c.png\ncf4162011a.png\n3dacf22e6d.png\nb8b0fe94b0.png\n094a5b30fa.png\n11bc27b01c.png\n0939b133e1.png\n7481e20a4b.png\ndbf16358a4.png\n8e9a51812e.png\n52739de8a0.png\n7af335b97b.png\n78d7865bde.png\nc76c0acac6.png\nb6b9452a52.png\ncd179a8e54.png\nac1cf2cdcf.png\ne766c650a3.png\n8d738d136f.png\nb05d4e02d2.png\nb87803d6e0.png\nafc247387c.png\n0c61b75e90.png\nd8e7f62b4e.png\nf5ab2a12f3.png\nd4b3a58d5e.png\n572001f0b4.png\n225cbb9fef.png\n5244b40d0c.png\n141d9f2d64.png\nde193a4b3b.png\n280911f6fd.png\n0d4038338b.png\nbb9f42f7c8.png\nbca65f4faa.png\nd0f06eee13.png\n7964e62d1d.png\n1ee2156eb1.png\n9ac1664234.png\nf9f0be34b7.png\nbc0ea15b81.png\na2ca5eec91.png\n090f67b75d.png\n8b4302d784.png\n49d36f09b4.png\n936d863260.png\n33350197f3.png\n474cb70429.png\nfe6dca6363.png\nfccfe75923.png\nff182734dc.png\n5e5ee7f8c2.png\na787b2115a.png\n6d9bbf4c1e.png\n4b1c5e085d.png\n22263d7cdc.png\n0b293581b5.png\n62ac70c3e8.png\n2125e91ae1.png\n356dd015ba.png\naafaaa68d6.png\n97559e9fc0.png\n1e79d48a44.png\n5cac2dde69.png\n2a2dd02617.png\nfbcd0447ae.png\nc585215aef.png\ne5fdf421a1.png\n8e950278f2.png\nc236669b05.png\n71f7d85904.png\n6761377ad9.png\nada8a36dff.png\nf6b8bf64b4.png\na3328ab6d1.png\n14289fd124.png\n63e2318edd.png\n97d34ed343.png\n88b89e2654.png\n1e6c071a06.png\n781c76c9fb.png\n36e8817ef5.png\n0cf880cdf5.png\na911d4f326.png\n53b4719e8a.png\n294983be8c.png\n99cf856ff7.png\nfc26352edb.png\nbd2b47f556.png\n55017a37a3.png\n7bf1f7ff2c.png\n260720933e.png\nc79f40f0cd.png\n538ec1a18e.png\n6e1433766d.png\n8f17217adc.png\n3b6f36dc01.png\n23986c3a69.png\ne09572a521.png\n469b1c506c.png\nf8e7ee80bc.png\n169b928039.png\n6056e713c4.png\ne0c018cc57.png\n1f75d0bd30.png\nb952e9c869.png\n9853112f5e.png\necca6a828d.png\n4400c5bac8.png\n06d2cdd10b.png\n8f90213bc5.png\n2b641b5aee.png\n25402dcb0b.png\nee86a9485e.png\n468303ea76.png\n9a346d8216.png\n5ae916d52c.png\n58a4b8ec4a.png\n0af4a2ad0b.png\nfbf7b17153.png\n526179a9b1.png\n2d069cef1f.png\n6d5077d085.png\neb60c1763b.png\nec1bd0c46a.png\n2a82ebb062.png\n470d69965f.png\n3f9b5ad0e0.png\naa5bb9e3ef.png\nabc4c46db1.png\n1c82f67993.png\ne46d4284d5.png\nece547d5f4.png\n4ef8852462.png\n2c5df02c7f.png\n95fc7cf6a6.png\n2803a5cf55.png\n0414cc3198.png\nefce4de15c.png\nf60e495e7c.png\ne509b9c869.png\n92b5f47694.png\naca25559c4.png\nb8963d4754.png\n4578174915.png\ndaa98b9d98.png\nd0f903ce16.png\n9f350005b5.png\nf2f7bfb55a.png\n0aa49c1f5b.png\n83349a5042.png\nacb8f69957.png\nd7b2a04db3.png\n912fb85555.png\n90fb6f4825.png\ne47e42d98b.png\n2ce1812846.png\nb28dee166b.png\ne292577582.png\n401718a5ca.png\nd809054e30.png\nfb3ffe5424.png\n16da227a77.png\n27ed8e3d5f.png\nfdb49c8336.png\n2f9998ea8e.png\n7a0c21b0e4.png\nf0e0e3f933.png\n9091630666.png\n2e3ab718cd.png\n490fd4bfaf.png\na51b08d882.png\n69874e7963.png\n48dddfecdc.png\n03d9a31cd0.png\nc91038e023.png\nf20201155b.png\n3ca6956aac.png\n63e49edc70.png\n9f7f6d76db.png\nb08328c011.png\n3709acd3d8.png\n72bc5edd34.png\n93353de86c.png\nc9255da5a5.png\n5c122ecb96.png\n4b2294dfcc.png\n84b9da36fb.png\n1b7adc4406.png\n1f536c5e95.png\nb42eb8028b.png\nce4593cd3e.png\n34aec621f6.png\ndaa0c14bf8.png\n57f175f5ec.png\nc9e76be5dd.png\n71bdecc536.png\nb30982f994.png\nec098526f5.png\nec55911833.png\na579c775bb.png\n3d2b243494.png\n4892ce4f3f.png\nce7de72524.png\ne576adfb4f.png\n09493c684a.png\naed738c07f.png\ncc079af7c4.png\n4c9b3dc4c8.png\n3e741873b1.png\n21006cd47c.png\n4f9c0b8c34.png\nad642c2161.png\n60c1bb4390.png\n05c164b212.png\n8369ecd82d.png\na0e18ad460.png\n519955218e.png\n46a12ca49e.png\n4c7781ae43.png\n4a411c946b.png\n0b651bd775.png\nb15561ae18.png\nffbbadd3eb.png\nead7dd8e26.png\na0a349ec44.png\n42446ee0c8.png\n27144efbb1.png\nadffb35572.png\n62bead84dd.png\n28f2e72621.png\n540d271079.png\n3e95d4417b.png\n07e7427152.png\ndb275a11fb.png\n340216e59a.png\ne519d5dc25.png\nb9f002931e.png\nef18960bb3.png\nb116d83f00.png\n3cc03621b5.png\n94856b278e.png\n27838f7f46.png\n111f53e48f.png\n81574fb1cf.png\nc5af6a21e7.png\nb1cc24274f.png\n2fceacfd78.png\n1b1783a2a8.png\ne8325b54e1.png\na9e19c1e10.png\n5be7dbad99.png\n46fccdac75.png\nb56f9e78e6.png\neb5934bd67.png\n10c3458a28.png\n8aa2cf1ec9.png\n89cc61c040.png\n6539fda60c.png\n48e42488b0.png\n4e8235d649.png\n6e72e53dda.png\nda5209aa13.png\nf2c108fd0b.png\n4cec6bf0aa.png\n6e99d91e17.png\n1a6fd02308.png\n973872ad59.png\ndfee9e4bab.png\n24dfb5825f.png\n1ff564151f.png\nb239eb33f5.png\nf6663b4aad.png\nb8f80587f1.png\n711470dabc.png\nd4259417a6.png\n76131bdd5f.png\n5cca3a3213.png\n8b049ec23a.png\n971bab4c1e.png\n37940b652c.png\n04a21e7ce0.png\na14daf13a3.png\n556e28c244.png\n2ce903774a.png\n3cffb3227b.png\nca720c6ad8.png\n7d8e81e137.png\n5d4ebda29c.png\n3695558548.png\neaa326be94.png\nc9b54f28b2.png\n62135221f1.png\ne9dad4676f.png\nc5b4548ff2.png\n41f7617f91.png\n6c36352343.png\n2deae378ef.png\n182ef04220.png\n99f40c4b94.png\ne4883bfdf0.png\n98b6e72be0.png\n7cb042c4eb.png\n8a700d4031.png\na856815b31.png\nbd83eb2721.png\nbd76fc4213.png\n0100bf4bf9.png\n935e8e43fc.png\n0de9dd9520.png\n3f12023654.png\nf01ac1723f.png\n634572b017.png\n364e353a82.png\nb600f6e4fd.png\n131fe6a1fe.png\neaebee27aa.png\nd0ef5d91e0.png\n4d4769981f.png\n51c9bd64b2.png\n0727c8045d.png\n42ce7fe354.png\n010c27432a.png\nd248e4ccc2.png\ne9adb58e5f.png\n87804706f0.png\n5ae57cf40e.png\n0754ae5da8.png\n237782b1b2.png\n5383a3f1ff.png\n635c6f6b8f.png\n02b0a55486.png\nb365cdf41f.png\n40bfc63823.png\n0c36a4de54.png\n0827ac0e62.png\nff29a185b7.png\n2f44c71554.png\nf2974ab55b.png\nc1ab73f5b2.png\n1dab5be479.png\na792976d83.png\nd3618783eb.png\n0432c28b41.png\nf3efb5f509.png\n7865079bea.png\nca4dc840a9.png\nb43c8c37a1.png\n0b4093a820.png\n541e59b47e.png\n3de99572f3.png\n15d872393a.png\n3eb3e346ca.png\n9ab3a897e8.png\n0fdbfa2f0d.png\nea0ceb154d.png\ndeb1e0e23d.png\nce96a07785.png\n7baa1cf344.png\n7a3c8c0d2d.png\n994217fb87.png\ncc2c7789b8.png\n0d2789f1a0.png\n09ff0bf1b8.png\n08d4933465.png\ne70983bf79.png\nbe4b1274dd.png\n9ef9b40de2.png\nc894b9e4d2.png\n9511d7e887.png\n7ae7a91efc.png\n2ad5cb95c8.png\nc514a65854.png\n614e08f3f8.png\nfa5f0040ee.png\n188da27ff6.png\n4e5c620706.png\n6654e84002.png\n7fa5927702.png\n82238ffb93.png\n73e31d6ba2.png\n164e2dccd5.png\n82724f83ce.png\nd125d1f8f4.png\n0a4d368a58.png\n940fce5c20.png\n8b937b3dbc.png\n160adc1c40.png\n9ea7bef973.png\n5f3bc6338a.png\nda459db8b7.png\n1f96e75dd4.png\n5cafb50b66.png\nbb0c689bb9.png\n358c91b7ce.png\n244edb19cc.png\n4e1d253099.png\n8f384b5525.png\nfec9d967bd.png\n7b741f4f83.png\n929bb32e72.png\n58a33df533.png\n9abb77605e.png\nf9a438cdfd.png\n5e6a728cf3.png\n11a8397e82.png\ndd0b1012ca.png\n9f32747c28.png\nf5d0bc1b0d.png\ncbb74247a4.png\nd451f0645b.png\n0092c53387.png\n23affe3bde.png\nb7c0062406.png\n441adcda4d.png\n5a7235dd88.png\ne4a276f1cb.png\n3c9218e3d2.png\nccd02673de.png\n561c3ee6c6.png\n802fa1a9f6.png\n26de0d5588.png\n95abc7000c.png\nf94f8cce10.png\n751b4f4354.png\n1fdb251261.png\n005b02dd7c.png\n4388f8ed7f.png\n79f6734016.png\n66e5e6debd.png\nf91da5124f.png\n4cb49fd736.png\nf22fc5bff8.png\n68b94c24d5.png\n3790459cd0.png\nc3b42ca60c.png\n07e0ac7743.png\n11b8214fae.png\n0a4082a7d0.png\ned039de746.png\nc25acd1ab5.png\nbb71f5a675.png\n86fff4bd22.png\nd87bfe2c9a.png\n68186883f1.png\nb3861c9620.png\nbe542946f5.png\n8debc383b3.png\n423a10be0b.png\n9b0239d22c.png\n883163a438.png\n3a4a98aadd.png\n21f6c04e43.png\n2b80a1a753.png\nc352c269de.png\nf8d07a5ecf.png\n6f2071d2b5.png\naae740801a.png\nc9bbf41eb2.png\nec612d6e1f.png\n48b74ccd0e.png\n3755a4f1c8.png\n0d12341d7c.png\na53e9abcef.png\n47e634345e.png\n0a59145585.png\n6f90ec390c.png\n057b54820c.png\n0f61dd2edd.png\n699924356a.png\n1fbc472829.png\n843fe9dd2e.png\n7ac61d2369.png\n53677afabf.png\n4f9f89ee2a.png\n322815a679.png\nda28696786.png\n91c68481cd.png\n96e03e657f.png\nf4c228a2cb.png\n0642eb11c7.png\nd02bbb7461.png\nb404aafd56.png\n64c27a1dba.png\n6d25e0f3a7.png\n00a5318192.png\nfa6d82463a.png\n2b624269dd.png\n3feeed910d.png\nd8b5e842cf.png\nd1e97641e8.png\n5a8b4aeb28.png\n485e869caf.png\nfd66b58631.png\n43d4e67fed.png\n5505f08449.png\n971775bc8b.png\n939855018d.png\ne00f9885c4.png\n2eaa0e2925.png\nf439b7a428.png\n05454fe6a8.png\n82f686d860.png\n389139a9d0.png\nf51a3cd14b.png\ndd6e39ee85.png\n70b5a9919a.png\n1a05d9c2a2.png\n9175c41a74.png\nf86b6b05b6.png\nb452af04cd.png\nea233d4117.png\ncdff8ed1ca.png\n3567a5235d.png\nbfd167b98f.png\nf88e532e4a.png\n842579c2cb.png\nb447288bcf.png\n606ca6621d.png\n2985c57bb7.png\n7bed570cde.png\n1c3ef17382.png\n0192693ea2.png\n17ea34c5d9.png\n9234e203f8.png\n3de6277060.png\n1471b3bf7e.png\n16c2c3cbae.png\n1b99e91068.png\n009e9c5f22.png\nbd971c3d86.png\n261549d7ff.png\n582649f4c4.png\n522901656b.png\nb319973d58.png\nfd1f3e5caa.png\n7e5879117e.png\ne4dbb99aa2.png\n3e5e5bc3be.png\n680ec6e447.png\nbb68fcaaf1.png\n319f3240b9.png\nfdc16dcadf.png\n13dfe3b905.png\n9134be08ab.png\n270c61a3f4.png\nd7e72cfc7e.png\n4c407be403.png\n919f18579b.png\n616d7f08a8.png\ncfe755cfcd.png\n3022a2d122.png\n650dc752dc.png\n1368ade51e.png\ndd52fb7cb6.png\n07b344fbb5.png\n3db89d9c92.png\n5997066cbf.png\nd3302e82e5.png\n32cb09b74f.png\n39c765b268.png\n54afef2ccf.png\ne7eeb87ebe.png\nb22e02807a.png\nbbc3a70187.png\na5d6f86af7.png\na3eedc216e.png\ncf9c283f60.png\n3fd8443a93.png\n927ac50fa4.png\n30707d81d9.png\nb91e65bb04.png\ncf5d2ec0bd.png\n586a68e3d4.png\n53bbeae507.png\n979b3ab248.png\nf170d1105d.png\ndd063e8cd4.png\n086df8ab93.png\n56357ce74c.png\n16f4daba7d.png\n20cf8b7a66.png\n50fd2ca447.png\n70a4a1eb64.png\n49b0c9b785.png\nd376f8676a.png\n3589572823.png\n1299942387.png\nb959545cfc.png\nffc50b68bf.png\nbcb43f1fec.png\nfb1bed3120.png\nd25aa6c068.png\nc76df8e72f.png\n26027f6238.png\nc2a808b758.png\n80e1e37c49.png\n5b087e5813.png\n3b69920d03.png\n2379d514cd.png\n832c709b04.png\n040af02c81.png\n03b1288247.png\nfb8524cf3d.png\n3780e66035.png\n106b0f23eb.png\na2bac51579.png\n5270c3324f.png\nb7f523db92.png\n6dfcbdbade.png\n158372da81.png\n322816b277.png\n5aa1bc199b.png\naf795e857d.png\n3f05ca9eda.png\n7d2a057276.png\n79c3a9a0de.png\ne4fce4b587.png\ne0d104baea.png\nef0e0b570d.png\nbfc44d82f0.png\n77795c3885.png\n8b05478217.png\n70be68d0a1.png\neb69e96015.png\n3507dd1cf1.png\nc005e0beae.png\n567d785c85.png\n1873b8f6a8.png\neb8cc8640f.png\nc9fc80957f.png\n6dc1cff938.png\nd53dabc268.png\n46f947b8d8.png\n14db62dde9.png\n9fff138ea3.png\n1e1e0fb0e5.png\n09e2c7bfa3.png\n4eaf4060af.png\ndd75c9c653.png\n8370703e18.png\nbd4dd3ba3f.png\n9b7ade011b.png\n98d30fa576.png\nd69dc03388.png\n9f3d03c145.png\n0e5add3298.png\na0ae63c9bc.png\n642e79bdbc.png\n479ac4a280.png\n0b6bb5c85a.png\n6c9d4e4786.png\nf3c0c384d1.png\n0c39e78c19.png\n9b42e0bfb8.png\n76438dfb9d.png\nb3c53c57c0.png\n5b40470a20.png\nedb7317647.png\nfeaf8ae578.png\ndd9997f013.png\n247ecc1a63.png\n97dabec5eb.png\ncccb72adc0.png\n6d3209c6d5.png\nc5dad43641.png\n5248258f96.png\n32a414a0d8.png\nd0eaa2adbe.png\n43c323e221.png\n5f78fdc4fb.png\n8f4a26738e.png\n62bfc99b5d.png\n3f68cc0fcd.png\ne84a489d0e.png\n11dc566878.png\n93d95729b9.png\n8e38d229cc.png\nd1408f9935.png\nd2c53f4b7b.png\n4e176e4a6d.png\n4c0f3277e7.png\n5e16e537a2.png\n68e24bffc0.png\n66d52bc03a.png\n8b4306b0b7.png\nd80d8067d8.png\n47beea764b.png\nb6298c4af0.png\n884958bc2a.png\ne92155faf2.png\n08f3e1580b.png\nc71ec28470.png\n2ced1f6e8f.png\nd65f579350.png\n908ee82dde.png\nc9958b45d0.png\nfb85acf55a.png\n61d244b0e1.png\n1f028def4a.png\n764765d9b9.png\n655358d4c6.png\nbe464130da.png\nfbf6226410.png\n98c93a0d18.png\nc7272c27d4.png\n88efb73723.png\nf3de47863a.png\na1ee362660.png\n02677351df.png\n78d7c70b94.png\n35da47b3e6.png\n9714f42c6b.png\n3a1e404bbc.png\ne0f853692c.png\nd0ef6f681d.png\n096788e6c4.png\nf099f5fecf.png\nb1a9b71eb1.png\n78e417087a.png\nc8c82dcede.png\n838581e54e.png\n1aa56af36c.png\n14ff4740d0.png\n44b05c1bc5.png\na248b69897.png\n92eb99caa8.png\n949b1fbe67.png\n6f39c615f9.png\n86bb108198.png\nbc493a5136.png\n46d98e3296.png\neefde17753.png\n2c1d9a7284.png\nc104f63014.png\nb3ffb97bd0.png\nf22224cb9e.png\na6753a46ff.png\n06cdaef7b0.png\n1ec1f4b3ea.png\nf8fba159c0.png\n28e1de6f4e.png\n2dbcfec0b3.png\ncc31e0720c.png\n6c126643dc.png\n0c73d146b1.png\nb3b3e761fe.png\nc7b8fda693.png\n49c82e40f6.png\n137fe8a868.png\ndd691e392a.png\n3be3f006c8.png\nf40bfdeb45.png\n1a1c2eb4c7.png\n98943bbc82.png\n3a00144329.png\n88b36056f0.png\n2df17e4028.png\n739ba65f16.png\n2be0c0384d.png\nc19559637d.png\nc21acbb2b2.png\neff6f75116.png\n77f0e55398.png\n34b4732d20.png\n3ddc3ad0b5.png\ne325a27d31.png\nff7dc78a2c.png\n7c14a49942.png\na3df74dd31.png\n46a93d2bd4.png\n3d6e96149e.png\ne484db5a63.png\n5e3679f159.png\nb385f3a649.png\ne9fb2fa04f.png\nf6ba31fbf3.png\nc5e23e3c24.png\n1bc532153f.png\n2448f7f11e.png\n11d82f87fd.png\n20df40b631.png\n50094e6744.png\n6d49d84013.png\nd12faedcfc.png\nb2ba08c21b.png\n49174ccdd9.png\na9d13eb682.png\nba588ce106.png\n11994fcea5.png\ned607ec342.png\n0320c3c633.png\nd11b0da6cb.png\nad653a0343.png\nc8074c16dd.png\n062ff07243.png\nf3b9a8601b.png\n332dbd80a3.png\n7c7ea2a8db.png\nd8c00f1f19.png\n79b5c88862.png\nbbfc493cd1.png\neba7ead66c.png\n240835a198.png\n77468b048a.png\n760e3d1750.png\nc7df3e05ad.png\n4d3bff540d.png\n7299f61039.png\n4f7ba782e6.png\ne6757ac486.png\n22caaba7fa.png\n8a39b1ce9f.png\n175540fbbf.png\nb0f7c95ac9.png\nde9ecc8950.png\n4f05c105c6.png\ne8135a1a96.png\nddcbdb5447.png\n06f549734d.png\nee026cf4fd.png\nd1c6b43e5e.png\n58d7827e0f.png\ndeb84b430f.png\n81809318af.png\n0965a4cfdf.png\ne57b99c9b4.png\nb254feec1a.png\n8596457c74.png\n780bbb490f.png\nde8e673c5d.png\na4104dec88.png\n722574af9e.png\ne39ca54d2b.png\n81b84bb9c9.png\nb8a2f1a673.png\ned29f7fa16.png\n6b2ee6c253.png\n5f405e1970.png\nb6b97b2238.png\n6774a12a64.png\n024a6d0c47.png\n99ac198170.png\na49465e1af.png\n7eb352ecfe.png\nb985d07f6f.png\ne991f05a67.png\nc7b0d84043.png\n4b0e52eb9c.png\n2c67cc6d42.png\n4d8fc28f50.png\nfab9e5a46a.png\na53ce65d9f.png\n90c2ceb801.png\n5af890206e.png\nb387191390.png\nfdd6fb200a.png\nf2b1b2d180.png\n5a85ebb162.png\n2dd75dd10c.png\nef9151a6d1.png\n34d78a619f.png\nd953b0b60b.png\ne26935aff8.png\nf9c42b8d50.png\n36b2ed5c09.png\nea9a1c61a0.png\n1e048fd40e.png\nc6aaf86f7f.png\nba96be1a01.png\nb97a4c857d.png\n92b9a0c1a6.png\n07243dbcbf.png\n15f9aa8356.png\nbfad493b37.png\n6cff622a5e.png\nefcc088f95.png\n7cb2165703.png\n1e3b1e8c02.png\n7c1758ce19.png\n8f4e3c0d7c.png\n67913364b6.png\ne92024548a.png\n2168a05735.png\n69cd6cdd28.png\n9831a5a7fa.png\ne9d622dba7.png\n9521c81c4b.png\nf6ca628f38.png\n1dac95d5b7.png\naa37f37aa4.png\n1bcc5ea50a.png\n27ddc1e08c.png\n063c439dac.png\nedfa8cdc1c.png\nb0ce227ed6.png\ne9f2b199ef.png\n0350a9e3bd.png\n7818f0f4e6.png\n01ee4f83f9.png\n7246da723f.png\n950defdb1e.png\n572ffe9ec9.png\nf7c67e98e7.png\nefb7370889.png\n77dde5d3cb.png\n578cae22ea.png\n2ef21d2cb6.png\nb8a7031d3d.png\n7ec369d890.png\n75b4fe1c78.png\n9c4e59c725.png\nb208e23ba1.png\ne8f8ab82ce.png\n6048597c55.png\nb011b540e8.png\ne31364901d.png\ne7923bdabf.png\n96021baf01.png\nc0e06c8b5f.png\ne9afdf107c.png\n6f18215e39.png\n29669db85f.png\n34bcf08008.png\nc90712e934.png\n12b47dcb66.png\n80a60e50be.png\n8e20641658.png\n0db0d82d37.png\n2180e2610f.png\ndfde68c552.png\n46c8f4192e.png\n49fbbd45f5.png\nb5c096003d.png\n5497f42ab8.png\n66e94a50e2.png\nfca169873a.png\n9d48cf230c.png\nb3740228b0.png\nfb643d300a.png\n156589ec9c.png\n48d37635a0.png\n7d58fd7771.png\nc68b2ca953.png\nbac92dee00.png\n6e1c857c00.png\nd476a47369.png\ndaadda3a18.png\n973b5ff2f7.png\nb3bf74f77d.png\n26e7e22f60.png\n3ceec05d58.png\n1ccc46e36f.png\nd811dea143.png\n68cc289774.png\n6ba0601416.png\ne321020b2e.png\n0d6dcdd704.png\n2337388245.png\n98ddd20ff1.png\neae5302a1d.png\n0f074f459b.png\n337d9a4379.png\nfab48de08f.png\ndaa3d292d1.png\na7f7930f3c.png\n4ff2b5959b.png\n41809fc23d.png\n8077c06f68.png\n641806b79e.png\n97357fbd43.png\nee48355ed6.png\n02a3ec26b3.png\n57e242dd6d.png\ne53ca23b39.png\n0c06b7f8b4.png\n5fe905145d.png\nb0f23f7415.png\n1e6eea6c81.png\n3e53d236d3.png\n7cf4dcc68e.png\na54ae707dd.png\n020b586ddf.png\nad91e70d5c.png\n64310e0861.png\n8a6401e9d5.png\nade7b0d2aa.png\nd028ae45d9.png\n60235a3230.png\n5547124214.png\nd1f0237831.png\n2b41b80931.png\nea2206dd6f.png\n5c9ff6624c.png\n2ea086caa3.png\n8a481007c9.png\n69c4e1da35.png\nd72554e86a.png\n699e9c511c.png\n96ce99d109.png\n13723d4e2a.png\n01f5dedbf0.png\n4dfc862dff.png\n328ab38f76.png\n93d0ed6abd.png\nad4bfb8c00.png\n3dc343c503.png\n8043caee17.png\n679a0030aa.png\nee9bd5a04a.png\n9480d31795.png\naeb75ff00e.png\n2f85d3f736.png\nb3102e4e0d.png\n8661a2b464.png\nf6b8be7626.png\nac938e2761.png\n77e259c418.png\n088baa4c44.png\nee82c84aeb.png\neabb73d429.png\nb7abc2029c.png\n4f8b7cf7dd.png\n23a4cc9225.png\n88fbabb58b.png\n3f0debff7e.png\nd2bbf82139.png\n8e3cdc41e0.png\nb42c01d7fb.png\nda56ed9d56.png\nc0bcd07a7b.png\nc175c77179.png\n328d1497af.png\n86b82ac3fd.png\nbb7e7af84a.png\n836f781562.png\nd8b24dc645.png\n51519aaa77.png\nea0b716b6e.png\nb15b7eb177.png\n8a04ba71be.png\n3b80fffae9.png\n8e154a02a7.png\n54524393c7.png\nffe63102a0.png\n45de55ad3b.png\n9608c60728.png\ndbdb45277f.png\n4e54c259a0.png\ne21597846e.png\n63726c0bdd.png\naa5fbe402e.png\n8676b531a3.png\nad19d4e20c.png\n4856963531.png\n34a94a77bd.png\n1a47928acb.png\n453cd20948.png\n7d04e34530.png\n07adb8811b.png\n0514122b6e.png\nb081cf2ca0.png\n591a9a0aa6.png\nf0633e8b86.png\nbc814417aa.png\nd04b72eb09.png\n73af373fca.png\nd979a315ce.png\n2af94f9c4c.png\n2ba0764fe1.png\nebbd2ea275.png\n6a65fb7ddb.png\n7127a65f6f.png\nabbc5e8ba1.png\nda9d8425cf.png\na92c448553.png\n28604880bb.png\nbb9393397e.png\nd666f65d34.png\ndd07c35381.png\nd14060225a.png\n6e05b60c72.png\n310abcd735.png\nd101256aee.png\n855b3c7d30.png\nbf66dafb31.png\n032535bbd8.png\n0723cf2280.png\nad95b2baae.png\n1285d1dc37.png\na18b7d9b6e.png\na754990d1f.png\nbf185105cb.png\n80efbeb7e2.png\n791a14f34f.png\n4636496784.png\na614c44092.png\nda0af9cbf9.png\nfdfe7e5987.png\n55e2b8d4b6.png\n2e0bbaa822.png\n0e36eb125b.png\n205d9b714c.png\n896ab41b34.png\n87e08f180f.png\n233ef1fa32.png\nbf6faea4de.png\n528affbfce.png\n699c9334c5.png\nd029316467.png\n6719731541.png\n075e7d7937.png\nbc1868e3ce.png\n3e60aff57c.png\n7f8112b31e.png\n644dd2c53a.png\n7b2d30b095.png\n7dcd975aab.png\n6aee62c3eb.png\n32b6ac7ddf.png\n948eba1e86.png\n7b392bda72.png\n772d2aed6b.png\n0c19fd77ca.png\nf13eed34a1.png\nb7754e1aac.png\n2a5db8e4f7.png\n305861d7ab.png\ndcd9710d60.png\n01a40c3405.png\n11a0fc8072.png\n6a2de1c736.png\n5abac94653.png\n9ba360fe0d.png\nf6a71f87fd.png\na011acc5d9.png\nec4005618f.png\n2ab2a682bc.png\n09dbb503a8.png\n6d412459ba.png\n54319ceb3d.png\n7f03bfdbdf.png\ne835ac232b.png\n7671c2d961.png\n2d7e704551.png\n9ec9469778.png\n1aa5baa761.png\n79ce59706a.png\naf600f2a65.png\n3dfca0b816.png\nf448b518f6.png\ndd4e7dde38.png\nb7214417bc.png\n61fa3e07b2.png\n5764d3797f.png\nadbee50c8d.png\n41045d9a0f.png\n4dee25677d.png\n131332f84f.png\nad34bc33ed.png\nf0c9c19f47.png\n407aa4d1a3.png\n476b88ccd8.png\n286978d145.png\nc58edbac0a.png\n2b7baf7374.png\nc62a370303.png\n3cb4906b6e.png\nc207a2983d.png\n98f4e2f918.png\n84e1902710.png\nef8b8553f8.png\n53858001d1.png\n9e8fbecf82.png\n79f0ebae66.png\n90f086d17e.png\n560c9471f6.png\nd7470e757f.png\n3b7ceb9c90.png\n0a23a32d1a.png\n494393c725.png\n9aebdf433e.png\n1a505d91b8.png\nbdfc5dc085.png\nd8e549f16a.png\na6355cc103.png\nf14eb52a4d.png\n4090bd3129.png\n6599700d73.png\n706321cca9.png\n9bd349312c.png\n67d600cccc.png\ndc33e8d3a5.png\n6f96fea158.png\n80444c3dab.png\nfe18ea88b0.png\n3e1d9b88f7.png\nb3075bc7c0.png\n3e06571ef3.png\nd2531a4d49.png\n0402a7ba0c.png\n1ec750ee29.png\n875fa958c8.png\n957e09ce5b.png\n95747d4345.png\n764fc25e64.png\ndf23231a9d.png\n2645e45058.png\n20d753d385.png\nc92e16d3c0.png\nd1a7ba274d.png\nc5cae37fca.png\ne81dd36733.png\ndbfbead279.png\nf81e574205.png\nb9e2f1d49a.png\n2db8392cd9.png\n38447389af.png\nc35f12ef87.png\n046cba545c.png\n0eed90b7de.png\nf48b8dab45.png\n546e401ee0.png\n94eb6e5d40.png\n12c401001b.png\n4f856fc09d.png\nc6ccf15b4e.png\n14f73c6c74.png\nd65df3a8cf.png\nb54e6cba44.png\n79c8bd2854.png\n6c94e054e6.png\nb98e30c2fa.png\nf58804bcfc.png\ne2d4588c65.png\nb95433b42d.png\n0afc8c6d3f.png\nb544b666a4.png\nf1de314d5e.png\nb5fc6574cc.png\n3c90e0da69.png\n31333d1810.png\n1b611f81d9.png\nf6d5677450.png\n4da9fb1be9.png\n64d66aa587.png\n0d3e8f9868.png\n5e1656cfcb.png\n833ff7ed7e.png\nd0030ee6be.png\n51d5142fdd.png\n02d8b415fd.png\n7d2eec203e.png\n29f3b6dc8e.png\n17aa492868.png\n8d7b7baf47.png\n541d5341c0.png\n658f7c6b32.png\nd8d7a8ab4d.png\n47d97eaa56.png\ne6aa3a20b4.png\ndcdad231c0.png\n6fe6f537f0.png\n36f087bbb8.png\ne6b58b9a6e.png\ndfd1b4037a.png\n89eb8ef89f.png\n611103499c.png\n1f27634299.png\n54af2c195a.png\n01f537721e.png\nae55273079.png\nc78063e0a6.png\n5bbbade03d.png\n2aa42366f9.png\n3f4b677dec.png\nfacbcfa109.png\n8891f0ddcc.png\n937bf3bde5.png\n9714d5390c.png\nb07015747f.png\n0f785ea0ce.png\n8d71a7b436.png\n7fb0f3f722.png\ne10798585e.png\n8d1caa7424.png\n6d707a2713.png\ne69bb6ca73.png\ncc383f3d4d.png\nb38fc0bc4d.png\n38c852ce16.png\n0823abbc29.png\nef481ba313.png\n50e3fe9bc1.png\na63c9474ad.png\n214a3af065.png\n5c46f520d2.png\n8f7b79768c.png\nb258011964.png\n257d28374f.png\n828f7f524f.png\nee9df7a0d7.png\n1451f3a7ba.png\n087b30cbd3.png\n32851c6bff.png\n0c71c122bc.png\nc26c927bb8.png\n1bea5426f5.png\n972718a84f.png\nc304dcd3c7.png\ncc435c1f0b.png\n3e871346f4.png\nccf829551b.png\n493bee70cc.png\nc180f4858b.png\n5601dc4c6b.png\n288afaadba.png\n8200fffe39.png\n6e293e90b2.png\nd56d366f80.png\n3839b132a3.png\n3ee086e2ac.png\n8c6a8730ff.png\n15eebbf52a.png\n1c1c2983ca.png\nb4b45105cd.png\n8973a34ef9.png\n57a3af612c.png\n5c520f8046.png\n9324c530ca.png\n6b06770322.png\n914604b3ae.png\nc529870d8c.png\n58b63d6905.png\nfa3d9abeb9.png\ncdaa35be38.png\n4e04982929.png\n98a98ca9e8.png\n747c075dfb.png\n0dbed4dcf2.png\nea3000cc49.png\nee463d2892.png\n709fcc80e5.png\n83b28f856a.png\nbb3a8a42af.png\n9e457f2983.png\n331b11f8db.png\ne03d434fea.png\nbd6338e1f6.png\nabb222c430.png\n1d2e024c1f.png\ndf2ecb632f.png\ned2224ab77.png\n1ee20d41ce.png\nf53940cb48.png\n85306393b6.png\n94f3719cb1.png\nd8e57f29b6.png\nf35f60b7a3.png\n2731fa8693.png\nca384fdd2f.png\nb773b0a33d.png\n8d5e51efb4.png\n9da48c77c3.png\na12c9895f2.png\ned4cb9bcc6.png\ncc233193ba.png\nc6ed8a5ae5.png\ne2902bf2a3.png\ne4f1c5b15c.png\na3b2bb97ac.png\n008315cbd8.png\n51e6fa0574.png\nec935828fe.png\n497735ff9a.png\nd7ecb1e319.png\nf33e9641c7.png\ndcd5eaced7.png\ne2938f7370.png\n4beb590412.png\n6cfc72c21d.png\nc5172e6af4.png\n302e684a9c.png\n3614095a0e.png\nf970a44702.png\nf953e11b4c.png\n430bad3c88.png\ndd9af1f22f.png\n899f8650da.png\n2e0bd0472c.png\n0e6f485743.png\n9cc7c33d95.png\n187fa49f49.png\n3c77445aa6.png\naddf8411a1.png\nfcbf884d92.png\nfbcc1b2a37.png\n662b00c0fe.png\n7a8df90e4a.png\n53e356cf6d.png\n0e5eb2e19c.png\nf0c5925a80.png\n00f1af5e69.png\n6e58134639.png\n4d2c664efd.png\n93007a203b.png\nbf92b48ddf.png\n5e4cd3fb1c.png\n7304ffb567.png\n02be61df2b.png\nb3ef8aa64a.png\ncf93be642e.png\nde73a5a74c.png\n9dc4ce9178.png\n1fef5171bb.png\n90b385321a.png\n6973e71920.png\n71033f6fbd.png\ne5e6a428b6.png\n7ed2a9b1f5.png\n880f4c16af.png\n4301b1f7e3.png\nce573caad1.png\n17111dba6b.png\n6cf33a5e20.png\n06814a8ba4.png\n1a73f9ce89.png\n4be11bded3.png\n1190cfd81e.png\nd66e58294c.png\n2998f3f29b.png\n71efaabf89.png\n4927c651e0.png\n217ffd92fc.png\n8f10fd62fb.png\n7f5df12942.png\n48588f24a8.png\n44b7b7a750.png\n8850d1e9ef.png\na0637bbf74.png\nf8aac62301.png\n21fea9b8f7.png\n7af87e1aa6.png\nb9802f3539.png\ne3dca32ca5.png\na9f29dca64.png\nffc0ed590d.png\n113156b9e9.png\ndb087a15ac.png\n99b6ecc1c8.png\n4ca4737f4a.png\ncf4b289c17.png\n9bef2899b0.png\n91471464a2.png\nfe76b5e9e0.png\n4ead77ca14.png\n534dcc8cdf.png\naa94d14241.png\na5e1da850e.png\n549a707326.png\nc95594456f.png\n45cabd3ca3.png\n24f4a505b4.png\n0c9f8a7a42.png\n22ba69d8cd.png\nd3d258ee8f.png\n508062c055.png\n1918e72177.png\n008f8c8aaa.png\ndf4495253c.png\nec042b411f.png\n6f770862bf.png\ndce7811645.png\n88f3d7a1f6.png\n2cf9b202bb.png\n617f259ef0.png\n993950daeb.png\nf753515bb8.png\n0a3a8a5f37.png\n67fdaf03af.png\nb09456d59c.png\naa622a23c5.png\n0a797ef290.png\n88f4daafbb.png\n760eeda87b.png\n29b017cb20.png\n25ec24dcd6.png\n686e1f28fb.png\nd23419186e.png\n2a7336b189.png\n8965871960.png\n78c36a5e46.png\nbee4d7241e.png\n3e4bd3b6e5.png\n6c0ae2e809.png\nd8dcf9f0be.png\n967b146e20.png\n5977523480.png\n36488934b7.png\n92fe1d923f.png\n04fdd70962.png\n347d3a7801.png\n9b67bcf412.png\n8e1be11efb.png\n90090d08ae.png\n1186d4ca3c.png\n6a443ecf2a.png\nb9eafc377e.png\n48f502aaca.png\nda7da78656.png\n996c4dc2a9.png\n21bc477614.png\nacfa052ac8.png\nb45dd34dfb.png\n9d5aeb5104.png\n7aa0e4e924.png\n95862fc051.png\n90117af5fb.png\na16f6fa6f9.png\n179b18eb1b.png\n8c71fc1122.png\n8e5c3abaf7.png\n48a6b2914d.png\n5c93067d41.png\n826f5573b8.png\n3eea2cd3e4.png\nd78c366a0d.png\n4a16993559.png\n165cf32a37.png\n27f4d59295.png\nfeb1738f44.png\naf3d81a42d.png\n96cd72c1f6.png\na6ab750afe.png\n7712e09b9d.png\n632c5881af.png\n298246d0a2.png\n6f533e9f3e.png\n9cced7a09c.png\n735ff8c333.png\n3d8e486c58.png\n5cb1c7a644.png\n2057e966b9.png\n6ed63018b1.png\n13950a2184.png\n6b6a7b9756.png\n1cb68f59e7.png\nc20fd75377.png\n1b2fa5d4f5.png\nbb4b7133a6.png\nf4676634e5.png\n1702c5fa6e.png\n8f9027e401.png\n33cfb92423.png\n8fa4415858.png\n2c0fd3a542.png\nccfb9693c3.png\n153c26c3e9.png\n5f77a1ba95.png\n2cf5acb2c2.png\n7f9ec4856a.png\n9f9fd9cd6e.png\n4a830422cb.png\n9c37d6fe35.png\nc16e8ff6c3.png\nb78adef524.png\n60269a895b.png\nc086a756ec.png\n5fb39d0e7f.png\n3b5f671680.png\n346d259abd.png\n3091d07dd9.png\nad6283c993.png\n7bf5942c18.png\n0804088f79.png\n573b493456.png\n1c46fe53df.png\na0b00e7922.png\n4d640602cc.png\n7dd0a9a509.png\nb270ffbcd8.png\na0ef83e8f7.png\n505ceabce1.png\nced71f3641.png\nfccf003bed.png\nfa02cf34fd.png\nf06e589dca.png\n97712a8265.png\n4180504cd3.png\n059f99344f.png\ndb1b291802.png\n06e009a7a4.png\n46df24ee51.png\n07b92247d3.png\n1e674e5b6d.png\nb2a7f34fa1.png\n640c22038a.png\n69233da61a.png\nb1e7ed420a.png\n89aa92a709.png\na648490cf6.png\n97aed38b4d.png\n27d6ed1bb0.png\n91b12546b9.png\n02fedd0c79.png\n50b21b5dba.png\n24baee6e4b.png\n1f78b0cece.png\n0c59da2eea.png\na48d0b7d22.png\n3f01db328a.png\n91c3a0e8a8.png\n94e3ebf443.png\n19a0c4e9b5.png\n42e3dc40ba.png\n00efd96e2c.png\nac69290900.png\n31b22c447f.png\n36b0906d62.png\nd72f61a21b.png\n77b692d7ed.png\nd0bdfc3217.png\n3e34caf528.png\na173685785.png\n18b147861a.png\n927c12b972.png\n3d86cf245b.png\n2a25afc47f.png\na3f3157a83.png\nb0912218d7.png\n178c67d992.png\n95da7d8f73.png\naaad317b50.png\n1ddce7211e.png\n05bb19ebcd.png\n924c3d6a9c.png\na23223b144.png\n74b9b40ef0.png\nd185255316.png\nce96b58bee.png\ncf44d77ca0.png\nca0e0b463f.png\n365dec6186.png\n73d3411765.png\n09452c6408.png\n1efbd5996b.png\ne202f8d4df.png\n1f7d2d2769.png\n9a5d8e5f37.png\n580f8c86c1.png\n2f71546df6.png\n21a3da8bd4.png\n03aa815dd1.png\nfb8da7b005.png\nb699fe7dd1.png\n8d932981b5.png\na7fcafee63.png\nf3cd70744d.png\n827491498a.png\n2c436eb10f.png\n21753d8ef6.png\nd68a5abbe9.png\n35d93d979c.png\nce1ed41e9a.png\nac289a4281.png\nbc0ecdfd52.png\n5a40c4b4a0.png\n7aad507507.png\nab343c4976.png\n299c46c3d2.png\n30a9858fdd.png\nfbc0dcd4df.png\n1f3a94b447.png\n0611452742.png\n164a29c9f8.png\nbc067b8eff.png\naee24b7b6f.png\n8ffb761299.png\n515798b1cd.png\n5b841772e1.png\n9853f60114.png\nd3e581916e.png\nb93424039f.png\n9720e1e105.png\nd024b8d5d9.png\nd397b6d85a.png\n7f73304dca.png\n88a9870bbf.png\na0b4f9b664.png\n5f15a72005.png\n11005c0470.png\nd98ee3cef9.png\ncdb488ab27.png\n750bd2308b.png\n8a237e828a.png\n3a81cff745.png\n9881925fc5.png\n0a52e1bf02.png\n4f74d3b977.png\n2d29478050.png\n9241807175.png\na1196a546e.png\n763eecf967.png\n7cd4898363.png\nf6cba2e890.png\n189357775a.png\ne62ec0b893.png\na80109c813.png\neccdd0f368.png\n080b5e2407.png\na09eea259b.png\n4b3bee9051.png\nffb1b9d096.png\na971989911.png\n42bf7406bb.png\naa073980f7.png\nca2c7ceb97.png\n70618c36ee.png\n4a2c200514.png\n5f664c10a2.png\n1f9fe8640a.png\n2fa3affaf2.png\n80cb33ede2.png\n182a63515e.png\n20415fd0b8.png\n7e61b8c897.png\nc1be8dcffe.png\nd7c57f676e.png\nf4b56e86fa.png\ne31b6fc92f.png\n641142a960.png\n67998dfb60.png\n3e2400afbf.png\naeb2194389.png\n1e6cc68c5f.png\n2b31c73245.png\n31af711b5c.png\n8df9c84f20.png\n936fa8e3e4.png\n224c490664.png\n7a14066e7a.png\n58a1c44228.png\n5b72ebcad6.png\n84cc99f06b.png\nc06881f692.png\n408083de74.png\nea8da4b503.png\n5d1909b602.png\nbe72bfb0b2.png\n411f4ac9d3.png\n22ca553463.png\n63b98f9248.png\nb596f5428a.png\n20810a1279.png\ndcd83e940b.png\nd84ed53d33.png\n43de4bb238.png\nb5e9a12412.png\na557fd3376.png\n8c8b8b7d6d.png\n4fcbac3606.png\na100455c2c.png\n03948bcdc9.png\n6b464d56a4.png\n7784c83371.png\nb810ed2ed1.png\n522bfc0c1b.png\n1de9b66b64.png\ncf14a9e3d0.png\n953d0eb2ab.png\nbd1f81f0ad.png\nbf0a278c46.png\nd28614094e.png\n602cf815b4.png\n6842e3fc27.png\neb48070e3e.png\n8858cb4648.png\nc3a749a6a7.png\nc19e72fb1f.png\ne974741e66.png\n56f7cb9c52.png\nc829cbf315.png\n17312df29e.png\n0cd4ad5bae.png\n3680dada70.png\n95b1cfae2f.png\nb138330f9f.png\nde0c63338d.png\n87a140d745.png\n290510ddab.png\n6e1f24469c.png\n1d630e8527.png\n9d45516026.png\n7d51af6ef3.png\n2975e0a15e.png\n7c223a0665.png\n1915af8856.png\n9829094cb2.png\n989778f18c.png\n66d07dd062.png\n42241a4692.png\nb35ac76f29.png\n3a6f5a2675.png\n6177ff1ad4.png\n9c5567124a.png\n53ff9d218a.png\n5a5eee5cde.png\n495718a00c.png\n6f19a15faa.png\n461c4b2154.png\na23ce0105e.png\nfa9e8e851e.png\n03c7e68cbb.png\nb728ab6b4d.png\n47c89965f6.png\n3a8facd639.png\nc3205a8130.png\nb3aabe7b9a.png\nedae0cbbda.png\n616dc8b3e1.png\ncc827009db.png\n711d860055.png\nde6bc4b60f.png\naf226b2973.png\n1892c3d197.png\nfdf773357a.png\n70538e4c47.png\n02e1654bef.png\nceba75e611.png\n83b58112e7.png\n7cf3f7f133.png\n04c1375204.png\nb2b49923ea.png\n5cedcdb47a.png\n28574ad175.png\na8b1c4d814.png\n2b85abe20c.png\n6b42489773.png\ncf495190b9.png\nca14a9a381.png\n97b2dbc36f.png\n56b597f6a8.png\nd2dcce97b1.png\n3ae90bbf94.png\n5bcea69e9b.png\n5fbf274e64.png\nef223baeaf.png\n60cfe5b3e0.png\n3977f3e349.png\n0ba2681782.png\nfc5a8b5122.png\n18925b68f8.png\n2bbe5967d8.png\ne369caf81e.png\nc2f2f9fb78.png\nf070629919.png\n5f43ce7f89.png\naab9a109da.png\n02504aecbe.png\nfdd2dc5ce6.png\na99344890f.png\n736e3874c8.png\n2403b921b5.png\nc457249c34.png\n24294d88d3.png\nd905ab6a67.png\n9ffa8a1f08.png\n236e82dbdd.png\n0c85a86c36.png\nc2bcde700c.png\n46100c192b.png\n5cd89f2d4c.png\n6b2b54455e.png\ne0362d2205.png\n532012ac5a.png\nb9be2550e6.png\na83eb8c3c0.png\nb38d8d7402.png\nd946d589ff.png\n9437ba261e.png\na1d381f0fd.png\nfd8d57d81f.png\nc7c8e8ff63.png\nd367a6e845.png\nd93f654b79.png\n3d5d820fa4.png\n3cf05e05b7.png\n1bca27f98f.png\n03a98b53cc.png\n26d1c96d4b.png\na7c05c669a.png\n0614268874.png\n60e9913cf8.png\nc531c994cd.png\nad9427548d.png\n77321a127e.png\n881cc4a167.png\n7cdc6291db.png\ne0a303ec6b.png\n7bbc8e0a69.png\ncd12ccf73c.png\n842016c170.png\ne3ada5840a.png\na51ccd2f00.png\n5fe9fb5c4e.png\n39f87fe0c3.png\nf99a7a0250.png\n9f6abef1a7.png\nf18c5bf639.png\n351168f0b3.png\naac1902d4d.png\n092d7bc330.png\n77e273731e.png\n6b3dd7f999.png\n7fdbce1fca.png\nd3edd4d0d2.png\n5fbfc69a6c.png\ne364ebd859.png\n1f24885947.png\n00801127b0.png\nf13f682676.png\n7e3425f0f9.png\n9567a72dc5.png\nf0062a6a72.png\nb702f2456b.png\n34f546117e.png\n1926bbd7a9.png\n930ace946d.png\nd1835bf888.png\nbb394eef20.png\n3bf1dc1ffc.png\n2ef21a740f.png\n2fa10e0844.png\ndd2c8b294c.png\n3a003f211d.png\n428b47a70c.png\nc29d85de16.png\n0cb5f92f6c.png\n92a2165923.png\n5cb7627bee.png\nb482310066.png\n9ee2a96d6f.png\n4b2522e257.png\n5c18ce998b.png\nf290d2554b.png\nd3fec84000.png\nf5d2d4d974.png\n0a1b35bb54.png\n80ae0d1b54.png\nc13346444f.png\n5fadeae354.png\n436fead290.png\nf33577efee.png\n467f13c5c8.png\n64eb7a40ca.png\nc3507d4ac6.png\n7a1852f98b.png\n200f674793.png\n0786b42c85.png\ne962689604.png\n317a7a9f5e.png\n91d4f1574a.png\nfec8cb9677.png\na1dc7c8cab.png\na63763888b.png\n8f73748cda.png\nbd56cea895.png\ncc71a2479b.png\nc4505b8d57.png\nab9b2622b0.png\n1078ce67ed.png\na734025f26.png\neb58ef5910.png\nd7a9a97b4a.png\n4189112ea4.png\n61b8d3debd.png\na9494a9a5f.png\nd6ddf45bf5.png\n545a6ed959.png\neda8637a53.png\n9b24c1eb70.png\n8b1b7b6b9a.png\n2a6a13e3ed.png\n31a1e63e3b.png\nbcdf24526e.png\n56583846d9.png\na7c572c021.png\n68241a010a.png\n8499eba4d6.png\n32dacc5dae.png\na02d22da7b.png\n74169e1717.png\n35341c7a45.png\n5e01df0d66.png\nd62486399c.png\n7039307d0a.png\nabce81db29.png\nd342b98570.png\nf1eca3ffd2.png\ne5cd6bc55c.png\n641dd7bc32.png\n0b4b307e28.png\n1c7bd9200a.png\nbfcdcd2720.png\nf09d1d559c.png\n9a95d359d9.png\n1ff103fe54.png\nfff9bc7e09.png\nd835d3e6f3.png\n334ca525eb.png\nb49a70d0c3.png\n67da0e77b4.png\n7e1b387b7c.png\n7a710d3b24.png\n24af5751a5.png\n59224321e4.png\ndbe799dc2b.png\n9ff904c385.png\n4d4271753e.png\nf526e6c2dc.png\ne2de2ce77a.png\naf3bc56edb.png\n61c0129a58.png\nbfac5970fb.png\n5b6d177013.png\n304b53d8b1.png\ndf52f7c7dd.png\nd6e385a87e.png\n81fde400a8.png\ne1f1069116.png\nbcc6debfe7.png\n88017f8e99.png\n404db84e12.png\n9543901c15.png\n87e5ff8f08.png\n4d49c3bdc3.png\n4b950b6227.png\nb62081e0eb.png\n8c7293ab40.png\n05bf647e6d.png\nd4939a8bb6.png\n87c102e766.png\n4db1587bed.png\nc6cebf6829.png\n173b50b4e0.png\n111affce1a.png\nc425404682.png\n6959f9efff.png\n9afd54b9a1.png\nbb180f72d4.png\n7ba388a682.png\n5be84e4ce5.png\ne0ad4ecf12.png\n39f0728ddf.png\n1cc45d2a1f.png\nff85a49633.png\ne862c4a1dc.png\n97b67fe469.png\n9ca9eae6c7.png\n02a4e3a82e.png\n0fc3f9d9dc.png\nc56c59f691.png\ne499f3c6ee.png\n08caf9890f.png\n94d397294b.png\n405a1991a0.png\n843bf0269c.png\n1d23853728.png\n68eaa96a49.png\n22a9fdff9e.png\n7940a73429.png\nfc7e44c6e0.png\nd100338a78.png\nf1a0a38096.png\n2e749cfd59.png\n8830ed5259.png\n1ed0432125.png\n440908f39f.png\n3b23772288.png\n692207d70f.png\nba488e8c97.png\n78e58914a3.png\n1156737ae5.png\nf63a24c964.png\n82c95cdb56.png\nfdab05aef0.png\n673ec36187.png\na9443f266d.png\n6bd528bc92.png\n20f04ce268.png\n1c31c535a0.png\n74ace6d352.png\nc2419712de.png\n04013dfaae.png\nd914ed0736.png\n1d6d730817.png\n8d9ad80697.png\n16545fae06.png\nf54aaaacd9.png\n613ce5c75c.png\n0d9e65099f.png\n462a384a2b.png\n5954cb50c1.png\n9d7600e578.png\na3f894216b.png\n995c49297f.png\nb69cacf30a.png\n4ff2ff620d.png\n7d5409ff4b.png\n3b48cce005.png\n4705df4bbc.png\nd81b111a52.png\nc37ab09296.png\n203a0b212d.png\na5659fd2cc.png\n740a5406d8.png\ndf687410da.png\n4454cf34a8.png\n0155f4541f.png\ne6d955fffa.png\n69deef503a.png\n52f6267e3f.png\n432f07b09e.png\n1e178288ac.png\n454c09bd70.png\nce67c2e8dc.png\n1fce96e96c.png\ne6abda423b.png\n170a1cb9c7.png\n71cebdc720.png\na11da27e7b.png\n876a7537a1.png\n7c1348eb50.png\n976e6e223f.png\nda63fc9668.png\nc7bde3271c.png\n5246cf43ed.png\n8946dfe209.png\n02edcee8af.png\nfffa0542df.png\n5b59adc91c.png\nc7c8ffea4a.png\nc47a2bb9a3.png\n9d218888de.png\n0f5f146f1c.png\nfd2ef2374c.png\nfcf3215350.png\ne60cd100f1.png\n7e4fbf9bc2.png\n51302b1585.png\n9efa93ff14.png\n14863a785e.png\n943754ba03.png\nc6a9583845.png\n45c44595a1.png\nf0a7b2070d.png\n8997ca1a29.png\n951c8ea3fe.png\ne0bc3d5a16.png\nd2b9a9beea.png\n63d57d16de.png\n0291a0c49b.png\n1fdd703c81.png\n5365d85bbf.png\ndf4991a4c3.png\n458c78660e.png\nc32e8869bc.png\n0c89c4c0f7.png\n550ab3f639.png\n394d2280fc.png\nb05d265497.png\nfbcef17a13.png\ncf92834b28.png\nb0d14aeedc.png\n709b6f8868.png\nc0111d3fb6.png\n6ee68db123.png\n6b75879bf2.png\n72b3086d05.png\n6723526c1a.png\n62e4d6c471.png\nfd0d738abc.png\ndfd7cbea2e.png\ncf3c36117a.png\n10391aefa5.png\nc4f9fffbad.png\nb36f7e07bb.png\nc5d6fe7b88.png\nd462737ce8.png\n0db214c76b.png\nd31b7bca55.png\n0f13aea58f.png\nee41eb45b6.png\n2992bd33c2.png\nd884aa82ab.png\n644e2688b3.png\n24421f34d4.png\n78e2b8371a.png\nc4c0cb57f0.png\n61b6c452ad.png\n17a2b55a01.png\n259c209627.png\n092a81dc1c.png\n7270c3b9e3.png\n2d209b870d.png\n71a3a44fc8.png\n2ca6256249.png\nc0d50876eb.png\nfb1add496b.png\nc62cffd089.png\n8d85595c2f.png\nd97f7b6b18.png\n1d7eaa9036.png\n4bbe1afbc2.png\nbc86846749.png\n5086050a38.png\nfd0424be0f.png\n5ec71d2e6e.png\n86081eee45.png\nfbbed87ccd.png\ne8ebd88bb5.png\nca69c909a8.png\n9f95d4f2cd.png\n7ba89db3b5.png\n6fe3868d58.png\n92ec5cd1a3.png\n9a5cc7e8dc.png\n8d8b3c36cd.png\nff41dd8a8a.png\n52cfb25e88.png\n42f46dcb33.png\n65ac89d834.png\n34b54fdbba.png\n7b5261d44c.png\n1087f576d3.png\na71154d40a.png\n5edb47ab35.png\n8e224affa8.png\n1ffd2147e1.png\ne3cf4481ae.png\n921fe866ac.png\n165fb47f85.png\n1d9d2189a2.png\n56377d37d8.png\n2dcf7dc762.png\n28710277a9.png\na36673b867.png\n3893cc2455.png\ndfc37cbc5c.png\n73500d8f72.png\n36e6e20bd8.png\nd7f329deb1.png\nd11e86362a.png\nabcd697bda.png\n156e64df6b.png\n9ab1087c65.png\n8c75ac2447.png\n1e2ff4572f.png\n96ce456813.png\n8a578f1c6d.png\naa250d5464.png\n5eff7a6eb2.png\nb01ffa12f5.png\na77f69692a.png\n6daeaa31c7.png\n440927b8e0.png\ne0c79815d3.png\n134c694413.png\n6bb26e2bd5.png\n8a894561b6.png\nb3a4656e16.png\n293a7d72e7.png\n4401600a78.png\n8c4081751a.png\n7f107a23d4.png\n8d74e6f54a.png\n175cf79569.png\ne19efd1928.png\nff06e0f167.png\n19a274548c.png\ndce0abc347.png\nba281ddfb8.png\nb6b9bfd923.png\n79f188cbf5.png\n8d2785033d.png\nba37ff39c7.png\nb7900af09d.png\n155070a394.png\ne723bcb7ae.png\n0fb39bdd4f.png\n29db281c47.png\n35da3d536c.png\n119e974f72.png\ncc18f94210.png\na7ad37eda1.png\ndc4f08cf84.png\n3e635c129e.png\nc12eecef20.png\n9548bbf287.png\n8d0a03ad21.png\n63ec6fa3e4.png\nbdcde6c055.png\nb92dad3725.png\nbf8bf3d4fa.png\n3eaee773ac.png\ndbefc8222e.png\ne58a0083f9.png\nfa62872b1c.png\nee55c26bfb.png\n3a449e5df9.png\n31f3ed6cb1.png\n101926ea19.png\n1551bb254e.png\n66564cc507.png\n2675a2f9b6.png\n8753fe755b.png\n8936407edf.png\n993a7eca7a.png\nc1f15b6967.png\n1835fd08ce.png\n69768c0d00.png\n64dc4d38bf.png\ncfad7b2185.png\n9754145e61.png\n826698f6b8.png\nad298486ed.png\ne904dc08db.png\ndb04c2683d.png\ndb90c7db2c.png\n04c0c5f664.png\nf3a6fd21f7.png\n41e4b1a387.png\nf17a840281.png\ndc3239a567.png\n08b5985634.png\n0d875c5490.png\n9ac5fd325e.png\nb541e2c336.png\n1e51e9a592.png\n54978adcc6.png\nba85d911eb.png\n8db280a3b0.png\n59cb0eecde.png\n6d27f1faf7.png\n4db3811fbf.png\ndb92a00c3b.png\nec33956570.png\n7672a277e6.png\n8e149fe591.png\n488aa5caa0.png\nfae3d31a65.png\n9c4fed0493.png\nea65085167.png\n1f7fae2e19.png\n4a408fb14b.png\n950f33c5f9.png\ne0b26de691.png\n908d9627df.png\n448b2ab416.png\nb2776c7bf3.png\n814a711be4.png\nd7b84ee2cd.png\n28708ca79f.png\n2b3a5ae3ea.png\n858f84a797.png\nea86c1d9cf.png\n308ce73ab6.png\n72ed4033ee.png\nef0f75b1e1.png\ne1b3a4044b.png\n9e26b0563f.png\nefbcadb481.png\n2690474e7d.png\n376826eeb0.png\n755b31ff54.png\na6f453f543.png\nb9d7e04349.png\n0fa6d979c2.png\nce7bb8f52b.png\nde2733d9e2.png\n084cb5f737.png\na920e20f1c.png\n4b6931306e.png\n2533d14255.png\n5e10672652.png\n8f0cd99812.png\n631f8ac5aa.png\n8b45ba83a7.png\n3fbe62aa50.png\n10f59e0caf.png\na0c2b4a329.png\n380209106c.png\n73cf0baa15.png\n3538c8a7db.png\nb5970ee4d5.png\n31dbaea96c.png\n5d45c03e9d.png\n87ef963522.png\n75acea0c54.png\n979a06fdbf.png\n15966e1968.png\n452d4ea919.png\ndccc7bde70.png\nb31d571a94.png\n22479c66a9.png\n013259c337.png\n613da61fd8.png\nda3b6be1d5.png\n31dba1ef9a.png\ne4c862a4a5.png\naa0a7a440e.png\n9cdb3805a1.png\ne0f9a3a2d8.png\n27797053ff.png\nd34c539d4e.png\n684a14ff53.png\n536c71aba3.png\nd7cc4296b2.png\na1351b1979.png\n39538ce2b0.png\n0aebb572f8.png\n0f2b6a8586.png\n043c15a9af.png\nbc541b8369.png\n33dd8c2bd2.png\nac08414ac6.png\n45e3277f3f.png\n1702e1317f.png\naf73ae71b9.png\n464c9005e9.png\n6415017006.png\n94cb5df4f2.png\ne4d536fec6.png\n32071efa12.png\n9abcd70258.png\n2cf2b06f33.png\n670d6332be.png\n4f15ac8be7.png\nba0db3d025.png\na61b2d8fd3.png\n13cd1b2e50.png\n454964ab02.png\n62930388ba.png\n4eceea0d2a.png\nadf61b04b9.png\n0e292e0b79.png\ncee5f80b1c.png\nf33da3a50f.png\n1c23f6817c.png\nade51acc52.png\n197f03e18a.png\n3ec79673da.png\n6059cedbfb.png\n9fe9aa0449.png\n25dcf3cbfa.png\n6eef596fc8.png\nf5d30fbf24.png\n9e16b88203.png\n7867d98278.png\n5d15e26742.png\n34bf180903.png\n454a4e14a6.png\nbc4fc7c41e.png\n51417cc1ba.png\nb43c7545ec.png\nc1fbb3149c.png\n756fc7c806.png\n8011d054e7.png\n78fb3ab862.png\n182ab836ce.png\n88b412588a.png\n1a5d0c150d.png\na2728f5a2b.png\nc0c4b98415.png\n571e7f5a50.png\n3970b732a5.png\n5b89d0ef0b.png\n3f18e1afb2.png\n843530ad3c.png\n64663bc8c0.png\n0227a27435.png\nd51a4d6c04.png\naf4794de08.png\n6947dbc4f4.png\n91b88142fa.png\n30bb570ce5.png\n07faa3527e.png\n991d9bf376.png\n2539151aeb.png\n343382c0c8.png\nfe7ecb6b3b.png\n201c2f346a.png\ndbbbf02cb1.png\n81c4fb6418.png\n1813a61a7c.png\n00c06147b5.png\n08d073b404.png\nc07a6c2da6.png\n825b2f52f0.png\nc3327c163a.png\nc7407d87cb.png\n22dce42e16.png\n9d65b4b8c6.png\nb1c30ea1dc.png\n9c60208784.png\n2b2fdaaa9b.png\n0f7302ad43.png\n9c936ae7ff.png\n3448234dee.png\na024bd28fa.png\n8716fd9933.png\nc54217c477.png\nc8d429588d.png\nf0551d4405.png\n259b4c2009.png\n0441017e49.png\n763f6e03ce.png\n758a2d9b6d.png\n1d56be5402.png\n165df5edb1.png\ndec5c3fa93.png\nb0078f9be2.png\n902f970c1c.png\n03ae7e298c.png\n98994afc4f.png\n78181dbca5.png\n0c29a22fe5.png\n6dfbacf10b.png\n6febaa8dc2.png\n54beb44cac.png\n6e5e055e6f.png\nd7927f11dd.png\n83424cab00.png\nbf0f9e16e7.png\ndbffa35f38.png\n1a091013a6.png\n57063e912c.png\n6d3bd2f30b.png\n8299b97f38.png\nd39f51a99c.png\n9769ec0011.png\n9132b8b239.png\n86cd09d1e5.png\ne31144fbe3.png\n9aa58dfee8.png\nca2f360993.png\n241a32aab0.png\nf104068e09.png\n1ef4ad65ac.png\n176bd974e0.png\nf110d1c41f.png\n86900ef966.png\nd18e1a3ffe.png\nf9c9f273a1.png\naad0f3a281.png\nac691fa4e2.png\n23917c7f27.png\n42eaca028e.png\n604dc2c69c.png\n4be9ea64fe.png\n9f89caa7f3.png\n60e0902746.png\nd34c5a3e21.png\n30998d19cd.png\n39b10799fb.png\n7e7579b833.png\nc345789eb2.png\n679ee788d7.png\na7c5bb3d9a.png\nb31e7d63e4.png\n85f4a71954.png\n4e50c41f4e.png\ne8769e4043.png\n389d097af2.png\n72dbd4a9bc.png\n283a0f28ed.png\n999d21abf1.png\n8d5fa4ae69.png\n9ddc91e5bb.png\ned7d54e701.png\nc939e08a4b.png\n7f45830e33.png\n83a48671bd.png\n88d86cecb5.png\n980b56419d.png\n8a14fa3b33.png\n8ffef526e0.png\nbfb44314b2.png\n335586ece3.png\n2c3585a547.png\n0e8e9e9b41.png\nad56da0d75.png\nb0dbde2430.png\n356abb91d5.png\n9be3796b6c.png\ne06a3e3bfb.png\nbf64e8280e.png\ne97a3a3e47.png\n4b9c05eb80.png\n262de74669.png\n120bb13cfc.png\n49eb0d5d7b.png\n6ae646336d.png\n1874b0614a.png\nd8fa7027a9.png\n53c8faa2de.png\ncdd7ef59a9.png\nae0fb45c52.png\nce2f737ee1.png\n0360e6f681.png\nd84c0443ef.png\nde1b4b1e70.png\n86b69c8d0f.png\ndb4967025d.png\n6b677614ea.png\n76bc4e0cd6.png\n2de62031ee.png\n610d6fa9e0.png\nd69d9cf365.png\n4553c50290.png\n9571d16b40.png\n6491e7762a.png\n9f252722f5.png\n7a29766af2.png\n7824b680f1.png\n9159c5f8fe.png\na945daae40.png\n113655af27.png\n00bbed5966.png\na233a60deb.png\nc813181542.png\nd18dec87b4.png\ne0215d7e9c.png\ndff966dad4.png\n97bbb7e309.png\n87eff3371d.png\n733f591b93.png\n985507fc8a.png\n94f577f74c.png\n29bd0c2d25.png\n4d6522470e.png\n82f412d210.png\nfac33dff05.png\n26a59c7514.png\need2e1afbe.png\n4565c06028.png\nb538164346.png\n3a613d003a.png\n85a3114e20.png\neb9afa8deb.png\n0540ea22cd.png\n258a6cebd7.png\nc5ef2c8428.png\n47ccff39a8.png\n4bbc410ec5.png\n4ccccc2ff3.png\nb8999eaa8b.png\n58b7922c6d.png\na680da22d5.png\na009da75d1.png\na6a252e8a0.png\n596b9ee0eb.png\n4d1b2c230e.png\n679b9fbf54.png\n48c8b7dbfa.png\n1c458ae740.png\n1a013e5ca3.png\nc02940f66e.png\ndcd3c54405.png\na0a3f03553.png\n08af8b0df4.png\nb16b507725.png\nd607bab433.png\nd361e24d92.png\n34c0247f34.png\n97e8949284.png\n0f72426c72.png\na13bd1e1fa.png\nbd16b04193.png\n3ae2766077.png\n6b81fba94a.png\na4707da97f.png\nfb29b004e9.png\nac54591ef1.png\n84b1fda205.png\n134502bf0d.png\ndfbc399eca.png\n986f57256f.png\n9d57cce77c.png\n363a8a9701.png\na15dc1875a.png\n2789ca643e.png\n3b215fbf05.png\n4f47a5553c.png\n837342a089.png\nbb0cba14fa.png\n3a7a0b6a9d.png\n57ccc5cb82.png\n27dd841e7a.png\nbaa7d7ba42.png\ne8e42ebc71.png\n6a1703471f.png\nd926e006d0.png\n642d76749a.png\n7b10e08263.png\nff22eb863f.png\n7113090556.png\n90b7f38c5c.png\n52f8ed4b41.png\n0962d90501.png\n164e2232cf.png\nd2cb4356bb.png\n7ca8574a96.png\n57b062d234.png\nad364c186d.png\n035c07744f.png\n41edd70f4f.png\nfb45d8e754.png\n85f84d4960.png\n727bd3a3b7.png\n0f734266ca.png\nd43f845db5.png\naaf90619d3.png\n818c8334ad.png\n7ca30f5c04.png\ndfb450f27a.png\n3c5e3124c7.png\n864532d1e7.png\nd952078a85.png\nc921814978.png\n54943dc562.png\ned1581c2d9.png\nbac4bf9fdd.png\n3536b5d252.png\n4abf00b33b.png\na7e060fec7.png\nf963d0da02.png\nd1115a51da.png\n74f0afbfc5.png\n7bf025f29c.png\n9041bc2468.png\n0621ebf7b5.png\n1b29749de6.png\nbe56f5359f.png\nfecf98956c.png\n593c918ee5.png\ne1a51e48a1.png\n447b0d530d.png\n82eb6c93d3.png\n6119e97074.png\ncdac58c984.png\n9ffe9b70c4.png\n4c0efe9735.png\n0da270a98a.png\n0294ae08af.png\n7d187bf4bb.png\n4ef64308cf.png\nde63c230aa.png\nfeb2c6a00c.png\nc2c8c4bcfa.png\n3284441946.png\n8356ba4507.png\nff06094492.png\nf61358ecbf.png\n8fd7efc82d.png\n57314a2b58.png\n8245366dcf.png\nd943ef59b4.png\nd8d207d58f.png\n88e2f2736b.png\nf2148ddf93.png\n0e9624bf3c.png\n94c1d3a759.png\n20169726a4.png\n00e9cff0f2.png\n951cf62d3d.png\n8be9ac156b.png\nfd38950b2c.png\n1fe82aa458.png\nd4eaffbe2f.png\n6a19a8ccc3.png\nd699f66ea1.png\nd2c728aaf3.png\nf51f522f3c.png\n5925accb52.png\na0cd55b2f4.png\n016ec66cd4.png\n74ecf92a27.png\na6c17d483f.png\n76656d621e.png\n46163e4ad9.png\n4d3e7f3eb4.png\n1e45cb9411.png\nd15eeb222b.png\n462d3ca87e.png\nce7515118f.png\nc6c3e6a015.png\n5ba378eb07.png\nf83756c308.png\nabbcfad73b.png\n4545f4bad4.png\n4c249c63a1.png\n55d1e72d35.png\na87b3fe6b0.png\n2288a277e8.png\nabcc4c1aa9.png\nacd1a34650.png\nac1c575cd9.png\na4bf108f7b.png\ncb11801fc4.png\nbb78b0170e.png\n25fb2afebf.png\ne01867ca71.png\nbb2d46bbe0.png\ne3532bddf2.png\n9e4f9640fa.png\n18f73b05ae.png\nf43c6999ba.png\na27600b0b2.png\n51b006e1e8.png\n36118090a1.png\ndefb156cc1.png\n3e1b6580f5.png\n68de95fb39.png\n35832ed326.png\n7cbc8d92ab.png\n692f785564.png\nd6eb3700b1.png\n85c8d7f76c.png\n25fcf14778.png\n8df60c2b48.png\nb54ac21864.png\n35053e8edb.png\na25b549073.png\nea1390525e.png\n7a8eae16e1.png\nc03056f1aa.png\n2a091413ea.png\n94857fe622.png\ne3f6e4b032.png\nd72bc1190c.png\n9dab37614e.png\n1537754546.png\n9afd0533dd.png\n7b2d4b9295.png\n63e28795b7.png\nf7c45731d2.png\n6648f8d017.png\n3cca3f86b6.png\ncf22da8b0b.png\ncfb2babeb8.png\n761995bfd6.png\n4e516a255d.png\nbb038c78da.png\n76b26d2e39.png\n8bbb229784.png\n49b54df7bd.png\n145095689d.png\nb7f1e8c111.png\n6f40647181.png\n948e82d61e.png\n78de77e44b.png\nea1488cd35.png\n0d51b207aa.png\n1421a7b417.png\n8ab67a80a0.png\n47694d4de5.png\nc0660b7172.png\n0703a8437b.png\n9f5bb5383e.png\nb69705bcf7.png\n30ad603f80.png\nf313650e66.png\n749314518c.png\n78fbb95606.png\n564c7b3515.png\n96867a3897.png\n8925e85c08.png\nc88a511d91.png\n18078e8284.png\na703fc4911.png\nd3aaf303a1.png\n8a65df187c.png\n0b45162089.png\n5ce21107fa.png\nb12c491f2a.png\n3eb7ad3107.png\nadaa24accb.png\n7e453c8ed7.png\n0c9c49e734.png\ne2cec6cc04.png\n75363c138f.png\n23b75fe183.png\ndba440c1e1.png\n464317917c.png\ne55f192294.png\n5ef66a020f.png\n2e61d980c7.png\n9a79d93047.png\nde80c430e6.png\nbebb8af347.png\n4d7f9af393.png\n9b496d8233.png\n3b2362a168.png\n7a3c76d202.png\n2b1bc39770.png\nb5b511dc06.png\ncd433757bb.png\n79c7e5a9e9.png\n35371045fb.png\n8d7e882550.png\n84c1e715ca.png\n74312e8f3f.png\n97d23cea10.png\ndf7176eaa4.png\n5bbff609ed.png\n78ab68c3c8.png\n053e7d3043.png\n18729df07b.png\n98fd0a654c.png\n28b61cb50a.png\n9658b015f5.png\nd5b2e07776.png\n074535c849.png\nbe27934873.png\n4479bbc91e.png\n37aba9fcb3.png\n21720a05fa.png\n6e807dbef1.png\n69fbd42bce.png\n4a430a5d54.png\n9a51433e42.png\nbb3bd778b1.png\nbbf06a910a.png\nc25f0275e8.png\n75bd1e0652.png\nd9fc7d8aa6.png\nb2063e6bb6.png\n7fefadd513.png\nd2c08be257.png\nc02894016b.png\n6924dd75cb.png\nd57d30d6a1.png\n851d6c941b.png\n4969c6ece4.png\nf14987617d.png\n3223aabdaa.png\nb3e448572a.png\n1a05259ac0.png\n37ff6cca4f.png\n5cd2e24eb2.png\nfd45c51330.png\nbba06a7d49.png\n9e1d7b968e.png\n30a47ba346.png\n02caed72b7.png\n245c641ba5.png\nbe40a43921.png\ne9077013c8.png\n3b1a9d94cf.png\ncd573faeae.png\n6d23b68142.png\nf50ca50044.png\nc9526a0744.png\n3f26445878.png\n9ec6ead0e2.png\na0c81d2a79.png\n2cfae3f373.png\nf537c28b83.png\nfa45b2168b.png\ne800a212f6.png\n3c6ea4c16d.png\nfcf8c91350.png\ne5a158c743.png\n52110da0ac.png\n5ca5bc9009.png\na70ecc55dc.png\n78918ee676.png\n3a9fd030f2.png\naa55948a76.png\n43639ee6de.png\n8b258ca8e0.png\n90d9677c56.png\nf7aabef468.png\n7c1962afdc.png\n4b99b98243.png\n49578dea83.png\n0557701ace.png\n0175551830.png\n761204f143.png\n3c97c52d0f.png\n8a7395008e.png\nad72eda039.png\n45123cba3b.png\n07e73a3201.png\nc47f022330.png\n6c1ff4fc83.png\n1ea7d8528a.png\ne34eaa10e1.png\n71108e4178.png\n6f750b8a0d.png\n66e2ec7b55.png\n6aad1b361e.png\nbb326ec0a8.png\nc814546335.png\ne4ede1a7f3.png\n1ff696d59f.png\n1fe408de00.png\nbd29207bc3.png\n02f36ca5ec.png\nf6e8117887.png\n0d4d304c79.png\n34453e5f12.png\n494ce271f5.png\nd6bcecfcfe.png\n4d1825be4e.png\n63b5f1676d.png\n7864dc7883.png\nfa4f1b94b2.png\n145c7992e7.png\na1f8f97ec0.png\n6f5968f78b.png\ne4ab79406f.png\na28c2ff4e2.png\n03821e9586.png\n952563a97e.png\n93c58d5dd5.png\n67e00c705e.png\n9dba372ece.png\n5d079b66dc.png\n5415f36431.png\n1717b6750a.png\nf1f5e46fe0.png\nff377c193c.png\n2b761449ef.png\n8b30fb6d98.png\n9fe905c12d.png\nfbb14f2691.png\n30bdba0c6b.png\ndf0027e3ab.png\nf799c8d19f.png\n63d008746b.png\n8169a50aec.png\n97cb7b1d6a.png\n22986eba07.png\n5377347cf4.png\n7ea197b7df.png\n19c8c5aa98.png\n6267b99664.png\n0a5b5df54b.png\n82fd0dd4ae.png\nf38bc86fea.png\nd77eb315ac.png\nbd4aed9a86.png\n1ff6e2c33b.png\n6b2f49cad6.png\n18cf38b412.png\neb19a9744b.png\nbc97a09993.png\n84ee6c32bc.png\n9dcb6ffffa.png\n83d1c277dd.png\n895271788a.png\n3c4acab200.png\n303f985155.png\n677cf459d1.png\nf98a87f651.png\n8e4e5f12f2.png\ncdaa2d3f02.png\n9fa72ddc6a.png\n772abdb8df.png\nff16f2f584.png\n333262e665.png\n6e58a88e4d.png\n1a997b9106.png\n130904553c.png\n643c7c5672.png\n27ac879f52.png\nc621f020d9.png\n02e651b7bd.png\nc73fcb8a62.png\n8d3fa0ddbe.png\n987eb16144.png\n8d97feafe8.png\n7c9770ad2a.png\n2fb72cfd9e.png\nc5df6c89df.png\ne63ba604c4.png\neb0b46dd7e.png\n1f0907fbef.png\n68383a41a5.png\nde6e6ed26a.png\n748da1dda2.png\na05fe50177.png\n5f7e85ed97.png\nd5b1a635a9.png\nb95f1633e8.png\n7089f09d5b.png\nf213d4b318.png\nf13d52a40a.png\n1858148001.png\nb57ecf9e0e.png\n6a7bf9f1c6.png\n73621db013.png\n9b6cb72794.png\nea1bf77219.png\n51176b9d90.png\n28f5a828d0.png\ne659f781ee.png\n723ee6c018.png\n11d6b46aa7.png\n0b75c88e6c.png\n103c96d62c.png\ne4534b82b1.png\nefbf52e9b9.png\n5ca4a83636.png\nee0da7c735.png\n762b4b27c9.png\n917e80f94e.png\n0703b799a0.png\n9cf5dd8561.png\na7dbfe6a12.png\nea1ac2b2ce.png\n162f55f72b.png\n7a597c0b30.png\n34e956d7e8.png\n43dfa0e160.png\nd8fa1cbf13.png\nc47357ae6a.png\ndbd762aa71.png\nab0c6b03b0.png\n5995a07fc6.png\nb1a8e768af.png\n71b7cc2fdc.png\n7d0d470e33.png\n9fecf3b7b0.png\n50000fada5.png\ndd361d12f5.png\n71c5288092.png\n51f328cebc.png\n2cc9b18030.png\ne37147b293.png\n7d90c184ab.png\n696552712d.png\nb23429fadf.png\n55a217cba8.png\n3e8ca34142.png\nfbea8c7ae0.png\n312a39246f.png\n315b8f2266.png\ne57ef95bb2.png\n898fb59f6d.png\ne445d83dd1.png\nd778928df6.png\n5e400955f7.png\nb807539a5f.png\nce61662084.png\n777df11ca2.png\ne7feb2d438.png\n9dc508d95d.png\n18aea1f624.png\ne41b2925a7.png\ndceef5a0e1.png\n76c406c9bf.png\n20bdf88bee.png\nf2961eb2d7.png\n3b02981f8d.png\n961ed3ae33.png\n6e9aceff2f.png\ne67c706413.png\nbed2be7216.png\nda7658f446.png\n4739b252fe.png\n6cd1de8ef4.png\n80f930d541.png\n3ee3375dce.png\n53c5b16111.png\ne2351d6eff.png\nd9dca6cf43.png\n5106b883d7.png\n64c36c6a25.png\n5b31f5b38e.png\nf96f608c5a.png\n2a0583533f.png\n02b2e006c8.png\nab2ed24522.png\n77a67d6573.png\n9d9232634b.png\ne86bc3782c.png\ne0dc20e66a.png\n2937b14b90.png\n9375886364.png\n78e40a6459.png\n5155437a9d.png\ne19316acc4.png\n86c5a1fec1.png\na6a18e0dea.png\nb314d90af5.png\nfd3eb62762.png\n45c512050e.png\n18bd2e6277.png\n95ef42fec4.png\n8c25a010a8.png\n98ef8e3b13.png\nfda74a4257.png\nd7bf279db2.png\n2e5811bc80.png\n946fe1467b.png\nfea5f19d76.png\n22a109bb35.png\n42a5fda22e.png\nb642883836.png\n306bde4606.png\n9dba0d933d.png\n31b631d4c1.png\n819ac703be.png\n0e59057977.png\n497e15ff3a.png\nd5dd97abfb.png\n0f337683b4.png\nd0a8505343.png\n96f700aec5.png\ne8042ee36c.png\n0300ad09f3.png\n024332e85b.png\n39294d0534.png\nebbca91b35.png\nb7fbd93422.png\n6fad2e31a1.png\n53ac4dc8ba.png\n2ea5f9e7d9.png\n8d858a66d8.png\n529fe2bf20.png\n8e96420dca.png\n0611c441b8.png\nb8dc035a88.png\n9348c2319b.png\n825204d8a8.png\n132e7e2cd5.png\n44ab5b7be4.png\n50e1d5bf28.png\na5536ee0bb.png\nc95a673c42.png\n7d180ef5a2.png\neb6a10a157.png\n343705e8fe.png\n347686c1b9.png\n3d73f32e1e.png\ndabe63a77d.png\n901f697be4.png\ndc21186e6b.png\n694cf352f7.png\n6705b7299a.png\nbca55d7fa5.png\nc6e6e51ec1.png\n382c39da65.png\ne730c9c4e8.png\n1973a628b1.png\nd07b4cef46.png\n7cf26c9dea.png\n4be04e10aa.png\n52114dcb14.png\n6e9137c28d.png\nc9a87ab2ab.png\nbd9d82e3d8.png\n39d7ccca10.png\n945317d107.png\n70c7ead798.png\n0246257f2b.png\ncedb73a437.png\n4b4ce588a9.png\n78a68dece6.png\nece1494d81.png\nedb34c730b.png\n878338aa59.png\nc1c23f6048.png\nad459fb6b1.png\ndab9e1b94c.png\nafc56c2c28.png\n47822df035.png\n5ea247195e.png\nc1b3a9912c.png\n1f5849be95.png\n7010d3e8d9.png\nbe721a303b.png\n696a866b71.png\n5ab14e9d76.png\nf447853ad2.png\nbb62c0e164.png\n328929d96a.png\n738d7b7191.png\n3cdd50ddf0.png\na0018e4f71.png\n4f92b8d674.png\n99fcb67e17.png\n5344ef1b33.png\nbd6b9327ac.png\nba030fff5d.png\n785d976125.png\n2e40cf4b88.png\nd8e410e039.png\n2e9396a8df.png\nd72c5b3623.png\nba70cf68f2.png\n79410fa81a.png\nc84f0d4dd9.png\nbcb54a6510.png\n1274daf0ae.png\n94348a4334.png\nc8f0aaaaf7.png\n5b01ba4ec1.png\n4d21a8e11c.png\n99fb0ccafa.png\ne093696fc6.png\n19d0384e1f.png\nebb000af78.png\n161f7c184f.png\nb9962027c6.png\n7bfdfb3a12.png\n3b24607460.png\nb27c83519f.png\n98c97825f1.png\nd5d4ad6b25.png\nb81a8fc72e.png\n9fc4b3704c.png\ne02756640e.png\n22d360be43.png\nc6885a38e6.png\nbca0070a77.png\n52a8c847d0.png\n5119fdbfde.png\nbc99a6fff0.png\n205953b152.png\n49f8c016d2.png\nfbbdc5f6e2.png\n50c056c994.png\n8f60ff0312.png\n44c56a45b0.png\nf67ca9b0ff.png\nd0fa976e23.png\n7b1c5cf0c3.png\n04f7141ff7.png\na11a5bab72.png\nff0b6070b1.png\na3982b9d36.png\na715988e34.png\n2bd5791def.png\n96b2a2359b.png\ne79aa5ff58.png\nb2c26edd9c.png\nac3600bf24.png\nd27b85e7c0.png\n43de3f9c9a.png\n861e452121.png\n436d01f71f.png\n5f3f6d6ca6.png\nd5dbfe8494.png\n0c444101f4.png\n054c764e3a.png\na3a7f49081.png\n6d8817f092.png\n40b8ea6ae7.png\nc7dca52386.png\n4087d80276.png\ne2526a10e9.png\nb5995bbf96.png\ne08e7d5619.png\n47cd9710fd.png\nba987b336e.png\n990a672905.png\n36ddf39bf0.png\nf50030f52a.png\n40ca4c4ff2.png\n5f5c584d56.png\n734e92abd7.png\n973efa154b.png\nab222f9a41.png\n0d7157d748.png\n203c13a28b.png\n849845be66.png\n2b66898740.png\n73f4759351.png\n5718e81a4d.png\na2b2d4fe99.png\nfe53259bf6.png\naa8daddd49.png\n173a077701.png\n97a644bbf3.png\n8b63b67722.png\nbfc9276507.png\n4578fe28d8.png\n26370170b8.png\n41a93e2459.png\n188de9320e.png\nae2e378908.png\n7943b928ff.png\n8e8ddd8b7b.png\n37247922ec.png\ne981a42d6e.png\na7e191ebc4.png\n52eff24db9.png\n538dafe0c4.png\n507dbc9444.png\n2286d961f2.png\nece0d4b36c.png\n124f5f46f6.png\ned5d275ef1.png\n9f0685e8a2.png\nb51a512daf.png\ne3ecb649c6.png\n02782eb6f2.png\n2194de7683.png\nfbdea8f46c.png\n664dd976a9.png\ne127edb610.png\nf4199a74bf.png\n432a77d470.png\n22959357f8.png\n13bdb9a218.png\nffd071d826.png\nbcc8a4a8c8.png\ndebfff36ea.png\n0753d119b6.png\n94f2701ea6.png\ne46625376f.png\nc3ce830a05.png\n886e3df4ab.png\ne94b092cc1.png\n9e9200aab0.png\n2da8adf16a.png\n49ee9c5e00.png\n417fbc9aef.png\n057754e031.png\n316d0460b6.png\n1894f7c35a.png\n9c59b70ad0.png\n715295d6ab.png\n1cec04bb12.png\n593b21a623.png\n689edd4185.png\nb2a2fd2e0b.png\n2126473557.png\n51a170c2ea.png\n412e61e42f.png\n2596ef2a19.png\n2a7fcf7da7.png\n9003e2ecd0.png\n0c82e01a9f.png\nf12ef6c930.png\n04e021f699.png\n58360538fd.png\n8ec7e755e6.png\na45db71245.png\n52477a56f5.png\n5d43b6e684.png\n3ab326340b.png\n32405003b5.png\n5e8f17069e.png\nf161d8e4df.png\nf906c96b0b.png\nf1f051d549.png\n93577f1313.png\n37e819830e.png\nfd05d8188f.png\nc5d6528a35.png\n435e1f9e54.png\n7f996bc3ed.png\n32f2fed6c9.png\nb42d968164.png\n2d08095342.png\n1b0eec121b.png\n6b279fcb79.png\nfff4282d5f.png\n85841d174b.png\nbdb7d2e7c4.png\n5625127de7.png\n5d81dbf5ea.png\n1bc7d41154.png\nfd938a4752.png\n47fec2abbd.png\n42e97b4a5f.png\ne214be96e8.png\nae74081600.png\n1675d7da88.png\n7c73090754.png\n564b1ca301.png\ncd22ea7236.png\nad5d638041.png\ncc76384dfc.png\n5125c3b025.png\n3f44516dda.png\nb47f64fc94.png\ndb17867b19.png\n541e32b9ea.png\nace9b935fb.png\na20cced9fb.png\n3d6a897901.png\n7db83b64e3.png\n616afb7dc0.png\n46e374f8d3.png\n667a5015dd.png\n677d02e7f1.png\n1552d4e795.png\nc0106cb856.png\n0ef6a1a9d0.png\n9a9fa8ad20.png\ne5d26987a9.png\ne66b084eba.png\n62feb1eebf.png\nc23be3df99.png\n007176e42a.png\n25b1cfb30c.png\n9e9707e9ef.png\nd6066d27a9.png\n8fe9c92090.png\n039929151f.png\na282128493.png\n7661b7a843.png\n8118c2c6e0.png\nad73449af3.png\n23062a0de4.png\n89b5cc20e5.png\nae595b003e.png\nb7f5e6933e.png\nc7bfd8548e.png\nc9eb68517b.png\n9db4f0eb40.png\nf0ec895f3d.png\n9eb54c97be.png\nc7e88240be.png\n4e8f4b7b6e.png\n0aef3dff6a.png\nf61f590543.png\n684d0d84d4.png\n751e4a5bc0.png\n194e149187.png\n3392f9b1c5.png\n053293110f.png\n4997428512.png\nf33034c1ab.png\ncec3aace1e.png\n653f33a676.png\n965bf5c85e.png\n6e28a340f7.png\na25e9e12a7.png\nb28f64e243.png\n4359dac218.png\n476f1f618b.png\n8d5336acd7.png\n8635fa4f68.png\n342d17a869.png\n06c19e4c07.png\ne573b432c3.png\n454b28069a.png\nd512386a1b.png\n08a17ff7fb.png\n4ed65877ea.png\ndb102119c2.png\n0521e30a6c.png\nedcff16369.png\n405e04b9bc.png\n728b06f90b.png\n52956e1f53.png\ncc30dc52ee.png\n6bf65c3d06.png\nbb40a9a368.png\n6225d9ec9e.png\n3bd0ebda02.png\nffc6f7ddbf.png\n82300bf473.png\ndb1856cd5d.png\nc227dad701.png\nad7065c216.png\n9c26e28710.png\n0712535c2b.png\n869e15dfcf.png\nfe56b937f6.png\n5dd1246d5b.png\nbb4f51d2f7.png\n8dfcdb2b3c.png\na688df9574.png\nd623222fb0.png\n29b0235e9a.png\n1081dc0cb9.png\nb0a1a539d0.png\n9476c5ca8d.png\na4bdd53fb9.png\nb249094b5a.png\n91eccaa550.png\n8d2e7ffd4a.png\n67d21b9e92.png\nf1f3eaa428.png\n0fd22e2882.png\na69dbcad1b.png\n89381f766c.png\nba98ef6b0d.png\nb6c1ef1441.png\n5c964e5765.png\ne19d76920d.png\n6e7bef0170.png\n0041cb8c49.png\nd31eb8057d.png\ne995d7343b.png\naac2c54c69.png\n5f7a888a88.png\n6e409df907.png\nda116eb67e.png\n298bda8c6b.png\n75f992ad8c.png\nafc996abf3.png\nbb7596db38.png\n96d45b4e8e.png\n54f0a62c2c.png\na0372e4e59.png\n1202914cf2.png\n0ee3d20d51.png\n8011db07e4.png\n75f0269699.png\n75fb042981.png\ne84a4d5380.png\nd84535e5f6.png\n08de6285b8.png\nc17cc9f45c.png\n37617be9c2.png\nb9414d0f45.png\n973b0b920a.png\n639e4dac3e.png\ndc786d88fe.png\n8cb4641c0d.png\n9741bfeded.png\n17815a50e0.png\n8c14de9fb8.png\ncc718eada4.png\n0dd421c6db.png\neea3aa657e.png\nb5869ced23.png\n9a85353794.png\neb4b2816ca.png\nc4467ac3b7.png\nbbb43d70f4.png\nf3aae8d8d5.png\nd075ac58be.png\nb4863138c2.png\n7ceede7d55.png\n25a419e8c3.png\n1b6678d415.png\n1c60c13d20.png\ndf356bb303.png\n68709951de.png\nebe13dbb60.png\n8767e6755c.png\nb6a84556e1.png\ndf61ab2482.png\nf227baddb1.png\n7f5b4e0cd1.png\neb46ed5de8.png\nb455bee299.png\n473cbcdc24.png\n5f4c315e78.png\n5010a5cb65.png\n5b8c857ffc.png\ne9ca391fbe.png\n57cc268ef2.png\nbd8b6464b3.png\n6531d04894.png\ne56d476cf0.png\n95dc8f147e.png\n4a2dcbe387.png\n523834c0e0.png\n7898118d67.png\nefd13aa45b.png\n9ca858814a.png\na89f111730.png\nb0eb953a1d.png\n5df6f69b48.png\n81aa49a9fc.png\nfe3b576f13.png\na6e085d8e0.png\n06b111b02d.png\n592b9fc860.png\n0510fec103.png\n4767ae41d0.png\n29fdaa3c4e.png\n71bab9f311.png\n25c6dc51d9.png\n8016da014b.png\nc20570220b.png\na8c12329c4.png\nb1d1f35104.png\n4d7d9cad2d.png\ne48923a845.png\n919b7a9683.png\nd0712900eb.png\neec980e314.png\n2f248d982b.png\n1b9d714ef4.png\n3739ae2d77.png\nf411c146f2.png\nd3d7b32db0.png\nd864cf03a1.png\nb553dbb375.png\n6fd888afc5.png\nb0998be638.png\nf96ce17553.png\n1b51d7eb4c.png\n1c4d3b5dc2.png\n6f843d8fdd.png\n55b9cb8acd.png\n7b6a6f4f69.png\nc72e00ed55.png\nd8d5895a6f.png\nbc0b179b41.png\n1103eb72d3.png\n2e616e1cde.png\n88c55d296d.png\n6ee73fdc3e.png\n1b50bad7d1.png\n490e5d3e4f.png\n1423eb65ce.png\nfe6b152962.png\n8d9355e7d2.png\nb0d0d70817.png\nd79c094faf.png\n187ecc32d5.png\nbf6a587575.png\n16f514d1ee.png\n619a549372.png\nadd95e52cb.png\n453054d86c.png\n583b5ed773.png\n15823abda7.png\n68cd094920.png\n725fe78bcc.png\na9d0b5f2f3.png\n2ad4bf0d9c.png\n814d0b9a3e.png\nac3e753207.png\n104f908a3d.png\nf8d8c9be54.png\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/data_process/transform.py",
    "content": "# from include import *\n# from utility.draw import *\n# from utility.file import *\nimport cv2\nimport numpy as np\nimport os\n\n\ndef do_resize2(image, mask, H, W):\n    image = cv2.resize(image, dsize=(W, H))\n    mask = cv2.resize(mask, dsize=(W, H))\n    mask = (mask > 0.5).astype(np.float32)\n\n    return image, mask\n\n\n#################################################################\n\n\ndef compute_center_pad(H, W, factor=32):\n    if H % factor == 0:\n        dy0, dy1 = 0, 0\n    else:\n        dy = factor - H % factor\n        dy0 = dy // 2\n        dy1 = dy - dy0\n\n    if W % factor == 0:\n        dx0, dx1 = 0, 0\n    else:\n        dx = factor - W % factor\n        dx0 = dx // 2\n        dx1 = dx - dx0\n\n    return dy0, dy1, dx0, dx1\n\n\ndef do_center_pad_to_factor(image, factor=32):\n    H, W = image.shape[:2]\n    dy0, dy1, dx0, dx1 = compute_center_pad(H, W, factor)\n\n    image = cv2.copyMakeBorder(image, dy0, dy1, dx0, dx1, cv2.BORDER_REPLICATE)\n    return image\n\n\ndef do_center_pad_to_factor_edgeYreflectX(image, factor=32):\n    H, W = image.shape[:2]\n    dy0, dy1, dx0, dx1 = compute_center_pad(H, W, factor)\n\n    image = cv2.copyMakeBorder(image, 0, 0, dx0, dx1, cv2.BORDER_REFLECT101)\n    image = cv2.copyMakeBorder(image, dy0, dy1, 0, 0, cv2.BORDER_REPLICATE)\n    return image\n\n\ndef do_center_pad_to_factor2(image, mask, factor=32):\n    image = do_center_pad_to_factor(image, factor)\n    mask = do_center_pad_to_factor(mask, factor)\n    return image, mask\n\n\n# ---\ndef do_horizontal_flip(image):\n    # flip left-right\n    image = cv2.flip(image, 1)\n    return image\n\n\ndef do_horizontal_flip2(image, mask):\n    image = do_horizontal_flip(image)\n    mask = do_horizontal_flip(mask)\n    return image, mask\n\n\n# ---\n\n\ndef compute_random_pad(H, W, limit=(-4, 4), factor=32):\n    if H % factor == 0:\n        dy0, dy1 = 0, 0\n    else:\n        dy = factor - H % factor\n        dy0 = dy // 2 + np.random.randint(limit[0], limit[1])  # np.random.choice(dy)\n        dy1 = dy - dy0\n\n    if W % factor == 0:\n        dx0, dx1 = 0, 0\n    else:\n        dx = factor - W % factor\n        dx0 = dx // 2 + np.random.randint(limit[0], limit[1])  # np.random.choice(dx)\n        dx1 = dx - dx0\n\n    return dy0, dy1, dx0, dx1\n\n\ndef do_random_pad_to_factor2(image, mask, limit=(-4, 4), factor=32):\n    H, W = image.shape[:2]\n    dy0, dy1, dx0, dx1 = compute_random_pad(H, W, limit, factor)\n\n    image = cv2.copyMakeBorder(image, dy0, dy1, dx0, dx1, cv2.BORDER_REPLICATE)\n    mask = cv2.copyMakeBorder(mask, dy0, dy1, dx0, dx1, cv2.BORDER_REPLICATE)\n\n    return image, mask\n\n\ndef do_random_pad_to_factor2_edgeYreflectX(image, mask, limit=(-4, 4), factor=32):\n    H, W = image.shape[:2]\n    dy0, dy1, dx0, dx1 = compute_random_pad(H, W, limit, factor)\n\n    # image = cv2.copyMakeBorder(image, dy0, dy1, dx0, dx1, cv2.BORDER_REPLICATE)\n    image = cv2.copyMakeBorder(image, 0, 0, dx0, dx1, cv2.BORDER_REFLECT101)\n    image = cv2.copyMakeBorder(image, dy0, dy1, 0, 0, cv2.BORDER_REPLICATE)\n\n    # mask  = cv2.copyMakeBorder(mask,  dy0, dy1, dx0, dx1, cv2.BORDER_REPLICATE)\n    mask = cv2.copyMakeBorder(mask, 0, 0, dx0, dx1, cv2.BORDER_REFLECT101)\n    mask = cv2.copyMakeBorder(mask, dy0, dy1, 0, 0, cv2.BORDER_REPLICATE)\n\n    return image, mask\n\n\n# ----\ndef do_invert_intensity(image):\n    # flip left-right\n    image = np.clip(1 - image, 0, 1)\n    return image\n\n\ndef do_brightness_shift(image, alpha=0.125):\n    image = image + alpha\n    image = np.clip(image, 0, 1)\n    return image\n\n\ndef do_brightness_multiply(image, alpha=1):\n    image = alpha * image\n    image = np.clip(image, 0, 1)\n    return image\n\n\n# https://www.pyimagesearch.com/2015/10/05/opencv-gamma-correction/\ndef do_gamma(image, gamma=1.0):\n\n    image = image ** (1.0 / gamma)\n    image = np.clip(image, 0, 1)\n    return image\n\n\ndef do_flip_transpose2(image, mask, type=0):\n    # choose one of the 8 cases\n\n    if type == 1:  # rotate90\n        image = image.transpose(1, 0)\n        image = cv2.flip(image, 1)\n\n        mask = mask.transpose(1, 0)\n        mask = cv2.flip(mask, 1)\n\n    if type == 2:  # rotate180\n        image = cv2.flip(image, -1)\n        mask = cv2.flip(mask, -1)\n\n    if type == 3:  # rotate270\n        image = image.transpose(1, 0)\n        image = cv2.flip(image, 0)\n\n        mask = mask.transpose(1, 0)\n        mask = cv2.flip(mask, 0)\n\n    if type == 4:  # flip left-right\n        image = cv2.flip(image, 1)\n        mask = cv2.flip(mask, 1)\n\n    if type == 5:  # flip up-down\n        image = cv2.flip(image, 0)\n        mask = cv2.flip(mask, 0)\n\n    if type == 6:\n        image = cv2.flip(image, 1)\n        image = image.transpose(1, 0)\n        image = cv2.flip(image, 1)\n\n        mask = cv2.flip(mask, 1)\n        mask = mask.transpose(1, 0)\n        mask = cv2.flip(mask, 1)\n\n    if type == 7:\n        image = cv2.flip(image, 0)\n        image = image.transpose(1, 0)\n        image = cv2.flip(image, 1)\n\n        mask = cv2.flip(mask, 0)\n        mask = mask.transpose(1, 0)\n        mask = cv2.flip(mask, 1)\n\n    return image, mask\n\n\n##================================\ndef do_shift_scale_crop(image, mask, x0=0, y0=0, x1=1, y1=1):\n    # cv2.BORDER_REFLECT_101\n    # cv2.BORDER_CONSTANT\n    height, width = image.shape[:2]\n    image = image[y0:y1, x0:x1]\n    mask = mask[y0:y1, x0:x1]\n\n    image = cv2.resize(image, dsize=(width, height))\n    mask = cv2.resize(mask, dsize=(width, height))\n    mask = (mask > 0.5).astype(np.float32)\n    return image, mask\n\n\ndef do_random_shift_scale_crop_pad2(image, mask, limit=0.10):\n    H, W = image.shape[:2]\n\n    dy = int(H * limit)\n    y0 = np.random.randint(0, dy)\n    y1 = H - np.random.randint(0, dy)\n\n    dx = int(W * limit)\n    x0 = np.random.randint(0, dx)\n    x1 = W - np.random.randint(0, dx)\n\n    # y0, y1, x0, x1\n    image, mask = do_shift_scale_crop(image, mask, x0, y0, x1, y1)\n    return image, mask\n\n\n# ===========================================================================\ndef do_shift_scale_rotate2(image, mask, dx=0, dy=0, scale=1, angle=0):\n    borderMode = cv2.BORDER_REPLICATE\n    # cv2.BORDER_REFLECT_101  cv2.BORDER_CONSTANT\n\n    height, width = image.shape[:2]\n    sx = scale\n    sy = scale\n    cc = math.cos(angle / 180 * math.pi) * (sx)\n    ss = math.sin(angle / 180 * math.pi) * (sy)\n    rotate_matrix = np.array([[cc, -ss], [ss, cc]])\n\n    box0 = np.array([[0, 0], [width, 0], [width, height], [0, height]], np.float32)\n    box1 = box0 - np.array([width / 2, height / 2])\n    box1 = np.dot(box1, rotate_matrix.T) + np.array([width / 2 + dx, height / 2 + dy])\n\n    box0 = box0.astype(np.float32)\n    box1 = box1.astype(np.float32)\n    mat = cv2.getPerspectiveTransform(box0, box1)\n\n    image = cv2.warpPerspective(\n        image,\n        mat,\n        (width, height),\n        flags=cv2.INTER_LINEAR,\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )  # cv2.BORDER_CONSTANT, borderValue = (0, 0, 0))  #cv2.BORDER_REFLECT_101\n    mask = cv2.warpPerspective(\n        mask,\n        mat,\n        (width, height),\n        flags=cv2.INTER_NEAREST,  # cv2.INTER_LINEAR\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )  # cv2.BORDER_CONSTANT, borderValue = (0, 0, 0))  #cv2.BORDER_REFLECT_101\n    mask = (mask > 0.5).astype(np.float32)\n    return image, mask\n\n\n# https://www.kaggle.com/ori226/data-augmentation-with-elastic-deformations\n# https://github.com/letmaik/lensfunpy/blob/master/lensfunpy/util.py\ndef do_elastic_transform2(image, mask, grid=32, distort=0.2):\n    borderMode = cv2.BORDER_REPLICATE\n    height, width = image.shape[:2]\n\n    x_step = int(grid)\n    xx = np.zeros(width, np.float32)\n    prev = 0\n    for x in range(0, width, x_step):\n        start = x\n        end = x + x_step\n        if end > width:\n            end = width\n            cur = width\n        else:\n            cur = prev + x_step * (1 + random.uniform(-distort, distort))\n\n        xx[start:end] = np.linspace(prev, cur, end - start)\n        prev = cur\n\n    y_step = int(grid)\n    yy = np.zeros(height, np.float32)\n    prev = 0\n    for y in range(0, height, y_step):\n        start = y\n        end = y + y_step\n        if end > height:\n            end = height\n            cur = height\n        else:\n            cur = prev + y_step * (1 + random.uniform(-distort, distort))\n\n        yy[start:end] = np.linspace(prev, cur, end - start)\n        prev = cur\n\n    # grid\n    map_x, map_y = np.meshgrid(xx, yy)\n    map_x = map_x.astype(np.float32)\n    map_y = map_y.astype(np.float32)\n\n    # image = map_coordinates(image, coords, order=1, mode='reflect').reshape(shape)\n    image = cv2.remap(\n        image,\n        map_x,\n        map_y,\n        interpolation=cv2.INTER_LINEAR,\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )\n\n    mask = cv2.remap(\n        mask,\n        map_x,\n        map_y,\n        interpolation=cv2.INTER_NEAREST,\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )\n    mask = (mask > 0.5).astype(np.float32)\n    return image, mask\n\n\ndef do_horizontal_shear2(image, mask, dx=0):\n    borderMode = cv2.BORDER_REPLICATE\n    # cv2.BORDER_REFLECT_101  cv2.BORDER_CONSTANT\n\n    height, width = image.shape[:2]\n    dx = int(dx * width)\n\n    box0 = np.array([[0, 0], [width, 0], [width, height], [0, height]], np.float32)\n    box1 = np.array(\n        [[+dx, 0], [width + dx, 0], [width - dx, height], [-dx, height]], np.float32\n    )\n\n    box0 = box0.astype(np.float32)\n    box1 = box1.astype(np.float32)\n    mat = cv2.getPerspectiveTransform(box0, box1)\n\n    image = cv2.warpPerspective(\n        image,\n        mat,\n        (width, height),\n        flags=cv2.INTER_LINEAR,\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )  # cv2.BORDER_CONSTANT, borderValue = (0, 0, 0))  #cv2.BORDER_REFLECT_101\n    mask = cv2.warpPerspective(\n        mask,\n        mat,\n        (width, height),\n        flags=cv2.INTER_NEAREST,  # cv2.INTER_LINEAR\n        borderMode=borderMode,\n        borderValue=(0, 0, 0),\n    )  # cv2.BORDER_CONSTANT, borderValue = (0, 0, 0))  #cv2.BORDER_REFLECT_101\n    mask = (mask > 0.5).astype(np.float32)\n    return image, mask\n\n\ndef resize_and_pad(image, resize_size, factor):\n    image = cv2.resize(image, (resize_size, resize_size))\n    image = do_center_pad_to_factor(image, factor)\n    return image\n\n\ndef resize_and_pad_edgeYreflectX(image, resize_size, factor):\n    image = cv2.resize(image, (resize_size, resize_size))\n    image = do_center_pad_to_factor_edgeYreflectX(image, factor)\n    return image\n\n\ndef resize_and_random_pad(image, mask, resize_size, factor, limit=(-13, 13)):\n    image = cv2.resize(image, (resize_size, resize_size))\n    mask = cv2.resize(mask, (resize_size, resize_size))\n    image, mask = do_random_pad_to_factor2(image, mask, limit=limit, factor=factor)\n    return image, mask\n\n\ndef resize_and_random_pad_edgeYreflectX(image, mask, resize_size, factor):\n    image = cv2.resize(image, (resize_size, resize_size))\n    mask = cv2.resize(mask, (resize_size, resize_size))\n\n    image, mask = do_random_pad_to_factor2_edgeYreflectX(\n        image, mask, limit=(-13, 13), factor=factor\n    )\n    return image, mask\n\n\ndef center_corp(image, image_size, crop_size):\n    image = cv2.resize(image, (image_size, image_size))\n    radius = (image_size - crop_size) / 2\n    image = image[radius : radius + crop_size, radius : radius + crop_size]\n    return image\n\n\n# main #################################################################\nif __name__ == \"__main__\":\n    # print( '%s: calling main function ... ' % os.path.basename(__file__))\n    path = r\"/data1/dex/DATA/Kaggle/Salt/Kaggle_salt/train/images/0a0814464f.png\"\n    image = cv2.imread(path, 1)\n    # image = cv2.resize(image, (202,202))\n\n    image = resize_and_pad(image, 202, 64)\n    # cv2.imwrite('tmp_.png', image)\n    # image = do_center_pad_to_factor(image, factor=64)\n\n    # image,image = do_random_pad_to_factor2(image, image, limit=(-10, 10), factor=64)\n    cv2.imwrite(\"tmp.png\", image)\n    # image = center_corp(image, image_size=256, crop_size=202)\n    # cv2.imwrite('tmp_crop.png', image)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/evaluate.py",
    "content": "import numpy as np\n\n### metric #################################################################################\n# https://github.com/neptune-ml/open-solution-salt-detection/blob/master/src/metrics.py\n# https://www.kaggle.com/c/tgs-salt-identification-challenge/discussion/61550\nEPS = 0.00001\n\n\ndef do_kaggle_metric(predict, truth, threshold=0.5):\n    N = len(predict)\n    predict = predict.reshape(N, -1)\n    truth = truth.reshape(N, -1)\n\n    predict = predict > threshold\n    truth = truth > 0.5\n    intersection = truth & predict\n    union = truth | predict\n\n    iou = intersection.sum(1) / (union.sum(1) + EPS)\n    # -------------------------------------------\n    result = []\n    precision = []\n    is_empty_truth = truth.sum(1) == 0\n    is_empty_predict = predict.sum(1) == 0\n\n    threshold = np.array([0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95])\n    for t in threshold:\n        p = iou >= t\n\n        tp = (~is_empty_truth) & (~is_empty_predict) & (iou > t)\n        fp = (~is_empty_truth) & (~is_empty_predict) & (iou <= t)\n        fn = (~is_empty_truth) & (is_empty_predict)\n        fp_empty = (is_empty_truth) & (~is_empty_predict)\n        tn_empty = (is_empty_truth) & (is_empty_predict)\n\n        p = (tp + tn_empty) / (tp + tn_empty + fp + fp_empty + fn)\n\n        result.append(np.column_stack((tp, fp, fn, tn_empty, fp_empty)))\n        precision.append(p)\n\n    result = np.array(result).transpose(1, 2, 0)\n    precision = np.column_stack(precision)\n    precision = precision.mean(1)\n\n    return precision, result, threshold\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/loss/__init__.py",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/loss/bce_losses.py",
    "content": "import numpy as np\nimport torch\nimport torch.optim as optim\nfrom torch.autograd import Variable\nimport torch.nn as nn\nfrom functools import partial\n\n\nclass DiceLoss(nn.Module):\n    def __init__(self, smooth=0, eps=1e-7):\n        super(DiceLoss, self).__init__()\n        self.smooth = smooth\n        self.eps = eps\n\n    def forward(self, output, target):\n        return 1 - (2 * torch.sum(output * target) + self.smooth) / (\n            torch.sum(output) + torch.sum(target) + self.smooth + self.eps\n        )\n\n\ndef mixed_dice_bce_loss(\n    output,\n    target,\n    dice_weight=0.2,\n    dice_loss=None,\n    bce_weight=0.9,\n    bce_loss=None,\n    smooth=0,\n    dice_activation=\"sigmoid\",\n):\n\n    num_classes = output.size(1)\n    target = target[:, :num_classes, :, :].long()\n    if bce_loss is None:\n        bce_loss = nn.BCEWithLogitsLoss()\n    if dice_loss is None:\n        dice_loss = multiclass_dice_loss\n    return dice_weight * dice_loss(\n        output, target, smooth, dice_activation\n    ) + bce_weight * bce_loss(output, target)\n\n\ndef multiclass_dice_loss(output, target, smooth=0, activation=\"softmax\"):\n    \"\"\"Calculate Dice Loss for multiple class output.\n\n    Args:\n        output (torch.Tensor): Model output of shape (N x C x H x W).\n        target (torch.Tensor): Target of shape (N x H x W).\n        smooth (float, optional): Smoothing factor. Defaults to 0.\n        activation (string, optional): Name of the activation function, softmax or sigmoid. Defaults to 'softmax'.\n\n    Returns:\n        torch.Tensor: Loss value.\n\n    \"\"\"\n    if activation == \"softmax\":\n        activation_nn = torch.nn.Softmax2d()\n    elif activation == \"sigmoid\":\n        activation_nn = torch.nn.Sigmoid()\n    else:\n        raise NotImplementedError(\"only sigmoid and softmax are implemented\")\n\n    loss = 0\n    dice = DiceLoss(smooth=smooth)\n    output = activation_nn(output)\n    num_classes = output.size(1)\n    target.data = target.data.float()\n    for class_nr in range(num_classes):\n        loss += dice(output[:, class_nr, :, :], target[:, class_nr, :, :])\n    return loss / num_classes\n\n\ndef where(cond, x_1, x_2):\n    cond = cond.long()\n    return (cond * x_1) + ((1 - cond) * x_2)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/loss/cyclic_lr.py",
    "content": "import torch\nimport math\nfrom torch.optim.lr_scheduler import _LRScheduler\n\n\nclass CosineAnnealingLR_with_Restart(_LRScheduler):\n    \"\"\"Set the learning rate of each parameter group using a cosine annealing\n    schedule, where :math:`\\eta_{max}` is set to the initial lr and\n    :math:`T_{cur}` is the number of epochs since the last restart in SGDR:\n\n    .. math::\n\n        \\eta_t = \\eta_{min} + \\frac{1}{2}(\\eta_{max} - \\eta_{min})(1 +\n        \\cos(\\frac{T_{cur}}{T_{max}}\\pi))\n\n    When last_epoch=-1, sets initial lr as lr.\n\n    It has been proposed in\n    `SGDR: Stochastic Gradient Descent with Warm Restarts`_. The original pytorch\n    implementation only implements the cosine annealing part of SGDR,\n    I added my own implementation of the restarts part.\n\n    Args:\n        optimizer (Optimizer): Wrapped optimizer.\n        T_max (int): Maximum number of iterations.\n        T_mult (float): Increase T_max by a factor of T_mult\n        eta_min (float): Minimum learning rate. Default: 0.\n        last_epoch (int): The index of last epoch. Default: -1.\n        model (pytorch model): The model to save.\n        out_dir (str): Directory to save snapshots\n        take_snapshot (bool): Whether to save snapshots at every restart\n\n    .. _SGDR\\: Stochastic Gradient Descent with Warm Restarts:\n        https://arxiv.org/abs/1608.03983\n    \"\"\"\n\n    def __init__(\n        self,\n        optimizer,\n        T_max,\n        T_mult,\n        model,\n        out_dir,\n        take_snapshot,\n        eta_min=0,\n        last_epoch=-1,\n    ):\n        self.T_max = T_max\n        self.T_mult = T_mult\n        self.Te = self.T_max\n        self.eta_min = eta_min\n        self.current_epoch = last_epoch\n\n        self.model = model\n        self.out_dir = out_dir\n        self.take_snapshot = take_snapshot\n\n        self.lr_history = []\n\n        super(CosineAnnealingLR_with_Restart, self).__init__(optimizer, last_epoch)\n\n    def get_lr(self):\n        new_lrs = [\n            self.eta_min\n            + (base_lr - self.eta_min)\n            * (1 + math.cos(math.pi * self.current_epoch / self.Te))\n            / 2\n            for base_lr in self.base_lrs\n        ]\n\n        self.lr_history.append(new_lrs)\n        return new_lrs\n\n    def step(self, epoch=None):\n        if epoch is None:\n            epoch = self.last_epoch + 1\n        self.last_epoch = epoch\n        self.current_epoch += 1\n\n        for param_group, lr in zip(self.optimizer.param_groups, self.get_lr()):\n            param_group[\"lr\"] = lr\n\n        ## restart\n        if self.current_epoch == self.Te:\n            print(\"restart at epoch {:03d}\".format(self.last_epoch + 1))\n\n            if self.take_snapshot:\n                torch.save(\n                    {\"epoch\": self.T_max, \"state_dict\": self.model.state_dict()},\n                    self.out_dir\n                    + \"Weight/\"\n                    + \"snapshot_e_{:03d}.pth.tar\".format(self.T_max),\n                )\n\n            ## reset epochs since the last reset\n            self.current_epoch = 0\n\n            ## reset the next goal\n            self.Te = int(self.Te * self.T_mult)\n            self.T_max = self.T_max + self.Te\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/loss/lovasz_losses.py",
    "content": "\"\"\"\nLovasz-Softmax and Jaccard hinge loss in PyTorch\nMaxim Berman 2018 ESAT-PSI KU Leuven (MIT License)\n\"\"\"\n\nfrom __future__ import print_function, division\n\nimport torch\nfrom torch.autograd import Variable\nimport torch.nn.functional as F\nimport numpy as np\n\ntry:\n    from itertools import ifilterfalse\nexcept ImportError:  # py3k\n    from itertools import filterfalse\n\n\ndef lovasz_grad(gt_sorted):\n    \"\"\"\n    Computes gradient of the Lovasz extension w.r.t sorted errors\n    See Alg. 1 in paper\n    \"\"\"\n    p = len(gt_sorted)\n    gts = gt_sorted.sum()\n    intersection = gts - gt_sorted.float().cumsum(0)\n    union = gts + (1 - gt_sorted).float().cumsum(0)\n    jaccard = 1.0 - intersection / union\n    if p > 1:  # cover 1-pixel case\n        jaccard[1:p] = jaccard[1:p] - jaccard[0:-1]\n    return jaccard\n\n\ndef iou_binary(preds, labels, EMPTY=1.0, ignore=None, per_image=True):\n    \"\"\"\n    IoU for foreground class\n    binary: 1 foreground, 0 background\n    \"\"\"\n    if not per_image:\n        preds, labels = (preds,), (labels,)\n    ious = []\n    for pred, label in zip(preds, labels):\n        intersection = ((label == 1) & (pred == 1)).sum()\n        union = ((label == 1) | ((pred == 1) & (label != ignore))).sum()\n        if not union:\n            iou = EMPTY\n        else:\n            iou = float(intersection) / union\n        ious.append(iou)\n    iou = mean(ious)  # mean accross images if per_image\n    return 100 * iou\n\n\ndef iou(preds, labels, C, EMPTY=1.0, ignore=None, per_image=False):\n    \"\"\"\n    Array of IoU for each (non ignored) class\n    \"\"\"\n    if not per_image:\n        preds, labels = (preds,), (labels,)\n    ious = []\n    for pred, label in zip(preds, labels):\n        iou = []\n        for i in range(C):\n            if (\n                i != ignore\n            ):  # The ignored label is sometimes among predicted classes (ENet - CityScapes)\n                intersection = ((label == i) & (pred == i)).sum()\n                union = ((label == i) | ((pred == i) & (label != ignore))).sum()\n                if not union:\n                    iou.append(EMPTY)\n                else:\n                    iou.append(float(intersection) / union)\n        ious.append(iou)\n    ious = map(mean, zip(*ious))  # mean accross images if per_image\n    return 100 * np.array(ious)\n\n\n# --------------------------- BINARY LOSSES ---------------------------\n\n\ndef lovasz_hinge(logits, labels, per_image=True, ignore=None):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      per_image: compute the loss per image instead of per batch\n      ignore: void class id\n    \"\"\"\n    if per_image:\n        loss = mean(\n            lovasz_hinge_flat(\n                *flatten_binary_scores(log.unsqueeze(0), lab.unsqueeze(0), ignore)\n            )\n            for log, lab in zip(logits, labels)\n        )\n    else:\n        loss = lovasz_hinge_flat(*flatten_binary_scores(logits, labels, ignore))\n    return loss\n\n\ndef lovasz_hinge_flat(logits, labels):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [P] Variable, logits at each prediction (between -\\infty and +\\infty)\n      labels: [P] Tensor, binary ground truth labels (0 or 1)\n      ignore: label to ignore\n    \"\"\"\n    if len(labels) == 0:\n        # only void pixels, the gradients should be 0\n        return logits.sum() * 0.0\n    signs = 2.0 * labels.float() - 1.0\n    errors = 1.0 - logits * signs\n    errors_sorted, perm = torch.sort(errors, dim=0, descending=True)\n    perm = perm.data\n    gt_sorted = labels[perm]\n    grad = lovasz_grad(gt_sorted)\n    # loss = torch.dot(F.relu(errors_sorted), grad)\n    # print('elu!!!!!!')\n    loss = torch.dot(F.elu(errors_sorted) + 1, grad)\n    # loss = torch.dot(F.leaky_relu(errors_sorted)+1, grad)\n    return loss\n\n\ndef flatten_binary_scores(scores, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch (binary case)\n    Remove labels equal to 'ignore'\n    \"\"\"\n    scores = scores.view(-1)\n    labels = labels.view(-1)\n    if ignore is None:\n        return scores, labels\n    valid = labels != ignore\n    vscores = scores[valid]\n    vlabels = labels[valid]\n    return vscores, vlabels\n\n\nclass StableBCELoss(torch.nn.modules.Module):\n    def __init__(self):\n        super(StableBCELoss, self).__init__()\n\n    def forward(self, input, target):\n        neg_abs = -input.abs()\n        loss = input.clamp(min=0) - input * target + (1 + neg_abs.exp()).log()\n        return loss.mean()\n\n\ndef binary_xloss(logits, labels, ignore=None):\n    \"\"\"\n    Binary Cross entropy loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      ignore: void class id\n    \"\"\"\n    logits, labels = flatten_binary_scores(logits, labels, ignore)\n    loss = StableBCELoss()(logits, Variable(labels.float()))\n    return loss\n\n\n# --------------------------- MULTICLASS LOSSES ---------------------------\n\n\ndef lovasz_softmax(probas, labels, only_present=False, per_image=False, ignore=None):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [B, C, H, W] Variable, class probabilities at each prediction (between 0 and 1)\n      labels: [B, H, W] Tensor, ground truth labels (between 0 and C - 1)\n      only_present: average only on classes present in ground truth\n      per_image: compute the loss per image instead of per batch\n      ignore: void class labels\n    \"\"\"\n    if per_image:\n        loss = mean(\n            lovasz_softmax_flat(\n                *flatten_probas(prob.unsqueeze(0), lab.unsqueeze(0), ignore),\n                only_present=only_present\n            )\n            for prob, lab in zip(probas, labels)\n        )\n    else:\n        loss = lovasz_softmax_flat(\n            *flatten_probas(probas, labels, ignore), only_present=only_present\n        )\n    return loss\n\n\ndef lovasz_softmax_flat(probas, labels, only_present=False):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [P, C] Variable, class probabilities at each prediction (between 0 and 1)\n      labels: [P] Tensor, ground truth labels (between 0 and C - 1)\n      only_present: average only on classes present in ground truth\n    \"\"\"\n    C = probas.size(1)\n    losses = []\n    for c in range(C):\n        fg = (labels == c).float()  # foreground for class c\n        if only_present and fg.sum() == 0:\n            continue\n        errors = (Variable(fg) - probas[:, c]).abs()\n        errors_sorted, perm = torch.sort(errors, 0, descending=True)\n        perm = perm.data\n        fg_sorted = fg[perm]\n        losses.append(torch.dot(errors_sorted, Variable(lovasz_grad(fg_sorted))))\n    return mean(losses)\n\n\ndef flatten_probas(probas, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch\n    \"\"\"\n    B, C, H, W = probas.size()\n    probas = probas.permute(0, 2, 3, 1).contiguous().view(-1, C)  # B * H * W, C = P, C\n    labels = labels.view(-1)\n    if ignore is None:\n        return probas, labels\n    valid = labels != ignore\n    vprobas = probas[valid.nonzero().squeeze()]\n    vlabels = labels[valid]\n    return vprobas, vlabels\n\n\ndef xloss(logits, labels, ignore=None):\n    \"\"\"\n    Cross entropy loss\n    \"\"\"\n    return F.cross_entropy(logits, Variable(labels), ignore_index=255)\n\n\n# --------------------------- HELPER FUNCTIONS ---------------------------\n\n\ndef mean(l, ignore_nan=False, empty=0):\n    \"\"\"\n    nanmean compatible with generators.\n    \"\"\"\n    l = iter(l)\n    if ignore_nan:\n        l = ifilterfalse(np.isnan, l)\n    try:\n        n = 1\n        acc = next(l)\n    except StopIteration:\n        if empty == \"raise\":\n            raise ValueError(\"Empty mean\")\n        return empty\n    for n, v in enumerate(l, 2):\n        acc += v\n    if n == 1:\n        return acc\n    return acc / n\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/main.py",
    "content": "import argparse\nfrom data_loader import *\nfrom data_process.transform import *\nfrom loss.bce_losses import *\nfrom loss.cyclic_lr import *\nfrom loss.lovasz_losses import *\n\nfrom model.model import (\n    model34_DeepSupervion,\n    model50A_DeepSupervion,\n    model101A_DeepSupervion,\n)\n\nfrom utils import create_submission\nfrom evaluate import do_kaggle_metric\nimport time\nimport datetime\n\n\nclass SingleModelSolver(object):\n    def __init__(self, config):\n\n        self.model_name = config.model_name\n        self.model = config.model\n\n        self.dice_weight = config.dice_weight\n        self.bce_weight = config.bce_weight\n\n        # Model hyper-parameters\n        self.image_size = config.image_size\n\n        # Hyper-parameteres\n        self.g_lr = config.lr\n        self.cycle_num = config.cycle_num\n        self.cycle_inter = config.cycle_inter\n        self.dice_bce_pretrain_epochs = config.dice_bce_pretrain_epochs\n\n        self.batch_size = config.batch_size\n        self.pretrained_model = config.pretrained_model\n\n        # Path\n        self.log_path = os.path.join(\"./models\", self.model_name, config.log_path)\n        self.sample_path = os.path.join(\"./models\", self.model_name, config.sample_path)\n        self.model_save_path = os.path.join(\n            \"./models\", self.model_name, config.model_save_path\n        )\n        self.result_path = os.path.join(\"./models\", self.model_name, config.result_path)\n        # Create directories if not exist\n        if not os.path.exists(self.log_path):\n            os.makedirs(self.log_path)\n        if not os.path.exists(self.model_save_path):\n            os.makedirs(self.model_save_path)\n        if not os.path.exists(self.sample_path):\n            os.makedirs(self.sample_path)\n        if not os.path.exists(self.result_path):\n            os.makedirs(self.result_path)\n\n        # Step size\n        self.log_step = config.log_step\n        self.sample_step = config.sample_step\n        self.model_save_step = config.model_save_step\n\n        # Build tensorboard if use\n        self.build_model()\n        self.load_pretrained_model(config.train_fold_index)\n\n    def build_model(self):\n\n        if self.model == \"model_34\":\n            self.G = model34_DeepSupervion()\n\n        elif self.model == \"model_50A\":\n            self.G = model50A_DeepSupervion()\n\n        elif self.model == \"model_101A\":\n            self.G = model101A_DeepSupervion()\n\n        self.g_optimizer = torch.optim.SGD(\n            filter(lambda p: p.requires_grad, self.G.parameters()),\n            self.g_lr,\n            weight_decay=0.0002,\n            momentum=0.9,\n        )\n        self.print_network(self.G, \"G\")\n        if torch.cuda.is_available():\n            self.G = torch.nn.DataParallel(self.G)\n            self.G.cuda()\n\n    def print_network(self, model, name):\n        num_params = 0\n        for p in model.parameters():\n            num_params += p.numel()\n        print(name)\n        print(model)\n        print(\"The number of parameters: {}\".format(num_params))\n\n    def load_pretrained_model(self, fold_index, mode=None, Cycle=None):\n        if mode == None:\n            if os.path.exists(\n                os.path.join(\n                    self.model_save_path,\n                    \"fold_\" + str(fold_index),\n                    \"{}_G.pth\".format(self.pretrained_model),\n                )\n            ):\n                self.G.load_state_dict(\n                    torch.load(\n                        os.path.join(\n                            self.model_save_path,\n                            \"fold_\" + str(fold_index),\n                            \"{}_G.pth\".format(self.pretrained_model),\n                        )\n                    )\n                )\n                print(\n                    \"loaded trained G models fold: {} (step: {})..!\".format(\n                        fold_index, self.pretrained_model\n                    )\n                )\n\n        elif mode == \"max_map\":\n            if Cycle is None:\n                pth = os.path.join(\n                    self.model_save_path,\n                    \"fold_\" + str(fold_index),\n                    \"Lsoftmax_maxMap_G.pth\",\n                )\n            else:\n                pth = os.path.join(\n                    self.model_save_path,\n                    \"fold_\" + str(fold_index),\n                    \"Cycle_\" + str(Cycle) + \"_Lsoftmax_maxMap_G.pth\",\n                )\n\n            if os.path.exists(pth):\n                self.G.load_state_dict(torch.load(pth))\n                print(\n                    \"loaded trained G models fold: {} (step: {})..!\".format(\n                        fold_index, pth\n                    )\n                )\n\n        elif mode == \"min_loss\":\n            if Cycle is None:\n                pth = os.path.join(\n                    self.model_save_path,\n                    \"fold_\" + str(fold_index),\n                    \"Lsoftmax_minValidLoss_G.pth\",\n                )\n            else:\n                pth = os.path.join(\n                    self.model_save_path,\n                    \"fold_\" + str(fold_index),\n                    \"Cycle_\" + str(Cycle) + \"_Lsoftmax_minValidLoss_G.pth\",\n                )\n\n            if os.path.exists(pth):\n                self.G.load_state_dict(torch.load(pth))\n                print(\n                    \"loaded trained G models fold: {} (step: {})..!\".format(\n                        fold_index, pth\n                    )\n                )\n\n    def update_lr(self, g_lr):\n        for param_group in self.g_optimizer.param_groups:\n            param_group[\"lr\"] = g_lr\n\n    def to_var(self, x, volatile=False):\n        if torch.cuda.is_available():\n            x = x.cuda()\n        return Variable(x, volatile=volatile)\n\n    def criterion(self, logits, label):\n        logits = logits.squeeze(1)\n        label = label.squeeze(1)\n        loss = lovasz_hinge(logits, label, per_image=True, ignore=None)\n        return loss\n\n    def train_fold(self, fold_index, aug_list):\n        CE = torch.nn.CrossEntropyLoss()\n\n        if not os.path.exists(\n            os.path.join(self.model_save_path, \"fold_\" + str(fold_index))\n        ):\n            os.makedirs(os.path.join(self.model_save_path, \"fold_\" + str(fold_index)))\n\n        print(\"train loader!!!\")\n        data_loader = get_foldloader(\n            self.image_size, self.batch_size, fold_index, aug_list, mode=\"train\"\n        )\n        print(\"val loader!!!\")\n        val_loader = get_foldloader(self.image_size, 1, fold_index, mode=\"val\")\n\n        iters_per_epoch = len(data_loader)\n\n        for init_index in range(self.dice_bce_pretrain_epochs):\n            for i, (images, labels, is_empty) in enumerate(data_loader):\n                inputs = self.to_var(images)\n                labels = self.to_var(labels)\n                class_lbls = self.to_var(torch.LongTensor(is_empty))\n                binary_logits, no_empty_logits, final_logits = self.G(inputs)\n                bce_loss_final = mixed_dice_bce_loss(\n                    final_logits,\n                    labels,\n                    dice_weight=self.dice_weight,\n                    bce_weight=self.bce_weight,\n                )\n                class_loss = CE(binary_logits, class_lbls)\n\n                non_empty = []\n                for c in range(len(is_empty)):\n                    if is_empty[c] == 0:\n                        non_empty.append(c)\n\n                has_empty_nonempty = False\n                if len(non_empty) * len(is_empty) > 0:\n                    has_empty_nonempty = True\n\n                all_loss = bce_loss_final + 0.05 * class_loss\n\n                loss = {}\n                loss[\"loss_seg\"] = bce_loss_final.data[0]\n                loss[\"loss_classifier\"] = class_loss.data[0]\n\n                if has_empty_nonempty:\n                    indices = self.to_var(torch.LongTensor(non_empty))\n                    y_non_empty = torch.index_select(no_empty_logits, 0, indices)\n                    mask_non_empty = torch.index_select(labels, 0, indices)\n                    loss_no_empty = mixed_dice_bce_loss(\n                        y_non_empty,\n                        mask_non_empty,\n                        dice_weight=self.dice_weight,\n                        bce_weight=self.bce_weight,\n                    )\n                    all_loss += 0.50 * loss_no_empty\n                    loss[\"loss_seg_noempty\"] = loss_no_empty.data[0]\n\n                self.g_optimizer.zero_grad()\n                all_loss.backward()\n                self.g_optimizer.step()\n\n                # Print out log info\n                if (i + 1) % 10 == 0:\n                    lr = self.g_optimizer.param_groups[0][\"lr\"]\n                    log = \"{} FOLD: {}, BCE+DICE pretrain Epoch [{}/{}], lr {:.4f}\".format(\n                        self.model_name, fold_index, init_index, 10, lr\n                    )\n                    for tag, value in loss.items():\n                        log += \", {}: {:.4f}\".format(tag, value)\n                    print(log)\n\n        sgdr = CosineAnnealingLR_with_Restart(\n            self.g_optimizer,\n            T_max=self.cycle_inter,\n            T_mult=1,\n            model=self.G,\n            out_dir=\"../input/\",\n            take_snapshot=False,\n            eta_min=1e-3,\n        )\n\n        # Start training\n        start_time = time.time()\n        for cycle_index in range(self.cycle_num):\n            print(\"cycle index: \" + str(cycle_index))\n            valid_loss_plot = []\n            max_map_plot = []\n\n            for e in range(0, self.cycle_inter):\n                sgdr.step()\n                lr = self.g_optimizer.param_groups[0][\"lr\"]\n                print(\"change learning rate into: {:.4f}\".format(lr))\n\n                for i, (images, labels, is_empty) in enumerate(data_loader):\n                    # all images\n                    inputs = self.to_var(images)\n                    labels = self.to_var(labels)\n                    class_lbls = self.to_var(torch.LongTensor(is_empty))\n                    binary_logits, no_empty_logits, no_empty, final_logits, final = self.G(\n                        inputs\n                    )\n                    loss_final = self.criterion(final_logits, labels)\n                    class_loss = CE(binary_logits, class_lbls)\n\n                    non_empty = []\n                    for c in range(len(is_empty)):\n                        if is_empty[c] == 0:\n                            non_empty.append(c)\n\n                    has_empty_nonempty = False\n                    if len(non_empty) * len(is_empty) > 0:\n                        has_empty_nonempty = True\n\n                    all_loss = loss_final + 0.05 * class_loss\n\n                    loss = {}\n                    loss[\"loss_seg\"] = loss_final.data[0]\n                    loss[\"loss_classifier\"] = class_loss.data[0]\n\n                    if has_empty_nonempty:\n                        indices = self.to_var(torch.LongTensor(non_empty))\n                        y_non_empty = torch.index_select(no_empty_logits, 0, indices)\n                        mask_non_empty = torch.index_select(labels, 0, indices)\n                        loss_no_empty = self.criterion(y_non_empty, mask_non_empty)\n                        all_loss += 0.50 * loss_no_empty\n                        loss[\"loss_seg_noempty\"] = loss_no_empty.data[0]\n\n                    self.g_optimizer.zero_grad()\n                    all_loss.backward()\n                    self.g_optimizer.step()\n\n                    # Print out log info\n                    if (i + 1) % self.log_step == 0:\n                        elapsed = time.time() - start_time\n                        elapsed = str(datetime.timedelta(seconds=elapsed))\n                        lr = self.g_optimizer.param_groups[0][\"lr\"]\n                        log = \"{} FOLD: {}, Cycle: {}, Elapsed [{}], Epoch [{}/{}], Iter [{}/{}], lr {:.4f}\".format(\n                            self.model_name,\n                            fold_index,\n                            cycle_index,\n                            elapsed,\n                            e + 1,\n                            self.cycle_inter,\n                            i + 1,\n                            iters_per_epoch,\n                            lr,\n                        )\n                        for tag, value in loss.items():\n                            log += \", {}: {:.4f}\".format(tag, value)\n                        print(log)\n\n                if e + 1 >= 20 and (e + 1) % 5 == 0:\n                    valid_loss, max_map, max_thres = self.val_TTA(\n                        fold_index, val_loader, is_load=False\n                    )\n\n                    if len(valid_loss_plot) == 0 or valid_loss < min(valid_loss_plot):\n                        print(\"save min valid loss model\")\n                        torch.save(\n                            self.G.state_dict(),\n                            os.path.join(\n                                self.model_save_path,\n                                \"fold_\" + str(fold_index),\n                                \"Cycle_\"\n                                + str(cycle_index)\n                                + \"_Lsoftmax_minValidLoss_G.pth\",\n                            ),\n                        )\n\n                        f = open(\n                            os.path.join(\n                                self.model_save_path,\n                                \"fold_\" + str(fold_index),\n                                \"Cycle_\"\n                                + str(cycle_index)\n                                + \"_Lsoftmax_min_valid_loss.txt\",\n                            ),\n                            \"w\",\n                        )\n                        f.write(\n                            str(max_map)\n                            + \" \"\n                            + str(max_thres)\n                            + \" \"\n                            + str(valid_loss)\n                            + \" epoch: \"\n                            + str(e)\n                        )\n                        f.close()\n\n                    if len(valid_loss_plot) == 0 or max_map > max(max_map_plot):\n                        print(\"save max map model\")\n                        torch.save(\n                            self.G.state_dict(),\n                            os.path.join(\n                                self.model_save_path,\n                                \"fold_\" + str(fold_index),\n                                \"Cycle_\" + str(cycle_index) + \"_Lsoftmax_maxMap_G.pth\",\n                            ),\n                        )\n\n                        f = open(\n                            os.path.join(\n                                self.model_save_path,\n                                \"fold_\" + str(fold_index),\n                                \"Cycle_\" + str(cycle_index) + \"_Lsoftmax_max_map.txt\",\n                            ),\n                            \"w\",\n                        )\n                        f.write(\n                            str(max_map)\n                            + \" \"\n                            + str(max_thres)\n                            + \" \"\n                            + str(valid_loss)\n                            + \" epoch: \"\n                            + str(e)\n                        )\n                        f.close()\n\n                    valid_loss_plot.append(valid_loss)\n                    max_map_plot.append(max_map)\n\n    def val_TTA(self, fold_index, val_loader, is_load=False, mode=None, Cycle=None):\n        if fold_index < 0:\n            return\n\n        if is_load:\n            self.load_pretrained_model(fold_index, mode=mode, Cycle=Cycle)\n        self.G.eval()\n\n        loss = 0\n        t = 0\n\n        output_list = []\n        labels_list = []\n        for i, (images, labels, _) in enumerate(val_loader):\n            img1 = images.numpy()\n            img2 = img1[:, :, :, ::-1]\n            batch_size = img1.shape[0]\n            img_all = np.concatenate([img1, img2])\n            images = torch.FloatTensor(img_all)\n\n            inputs = self.to_var(images)\n            _, _, output = self.G(inputs)\n\n            output = output.data.cpu().numpy()\n            mask = output[0 : batch_size * 2]\n            output = (\n                mask[0:batch_size] + mask[batch_size : batch_size * 2][:, :, :, ::-1]\n            )\n\n            output = output / 2.0\n            labels = labels.numpy()\n\n            output = output.transpose(2, 3, 0, 1).reshape(\n                [self.image_size, self.image_size, -1]\n            )\n            labels = labels.transpose(2, 3, 0, 1).reshape(\n                [self.image_size, self.image_size, -1]\n            )\n\n            if self.image_size == 128:\n                output = center_corp(output, self.image_size, crop_size=101)\n                labels = center_corp(labels, self.image_size, crop_size=101)\n            elif self.image_size == 160:\n                output = center_corp(output, self.image_size, crop_size=101)\n                labels = center_corp(labels, self.image_size, crop_size=101)\n            elif self.image_size == 256:\n                output = center_corp(output, self.image_size, crop_size=202)\n                labels = center_corp(labels, self.image_size, crop_size=202)\n\n            output = cv2.resize(output, (101, 101)).reshape([101, 101, -1])\n            labels = cv2.resize(labels, (101, 101)).reshape([101, 101, -1])\n\n            output_list.append(output)\n            labels_list.append(labels)\n\n            output = output.transpose(2, 0, 1).reshape([batch_size, 1, 101, 101])\n            labels = labels.transpose(2, 0, 1).reshape([batch_size, 1, 101, 101])\n\n            output = torch.FloatTensor(output)\n            labels = torch.FloatTensor(labels)\n\n            labels = self.to_var(labels)\n            output = self.to_var(output)\n\n            bce_loss = self.criterion(output, labels)\n            loss += bce_loss.data[0]\n            t += 1.0\n\n        valid_loss = loss / t\n        output = np.concatenate(output_list, axis=2)\n        labels = np.concatenate(labels_list, axis=2)\n\n        output = output.transpose(2, 0, 1)\n        labels = labels.transpose(2, 0, 1)\n\n        threshold = np.arange(-0.5, 0.5, 0.0125)\n\n        def get_max_map(output_, labels_):\n            precision_list = []\n            for thres in threshold:\n                precision, result, _ = do_kaggle_metric(\n                    output_, labels_, threshold=thres\n                )\n                precision = precision.mean()\n                precision_list.append(precision)\n\n            max_map = max(precision_list)\n            max_index = np.argmax(np.asarray(precision_list))\n            print(\n                \"max map: {:.4f} at thres:{:.4f}\".format(max_map, threshold[max_index])\n            )\n            return max_map, max_index\n\n        max_map, max_index = get_max_map(output, labels)\n\n        log = \"{} FOLD: {} valid loss: {:.4f}\".format(\n            self.model_name, fold_index, valid_loss\n        )\n        print(log)\n\n        self.G.train()\n        return valid_loss, max_map, threshold[max_index]\n\n    def get_infer_TTA(self, fold_index, thres):\n        self.G.eval()\n        test_loader = get_foldloader(\n            self.image_size, self.batch_size / 2, 0, mode=\"test\"\n        )\n\n        out = []\n        for i, (id, images) in enumerate(test_loader):\n            img1 = images.numpy()\n            img2 = img1[:, :, :, ::-1]\n            batch_size = img1.shape[0]\n            img_all = np.concatenate([img1, img2])\n            images = torch.FloatTensor(img_all)\n\n            inputs = self.to_var(images)\n            _, _, output = self.G(inputs)\n\n            output = output.data.cpu().numpy()\n            mask = output[0 : batch_size * 2]\n            output = (\n                mask[0:batch_size] + mask[batch_size : batch_size * 2][:, :, :, ::-1]\n            )\n            output = output / 2.0\n\n            output = output.transpose(2, 3, 0, 1).reshape(\n                [self.image_size, self.image_size, batch_size]\n            )\n\n            if self.image_size == 128:\n                output = center_corp(output, self.image_size, crop_size=101)\n\n            output = cv2.resize(output, (101, 101), cv2.INTER_CUBIC)\n            output[output >= thres] = 1.0\n            output[output < thres] = 0.0\n\n            output = output.transpose(2, 0, 1)\n            output = output.reshape([batch_size, 101, 101]).astype(np.uint8)\n\n            for id_index in range(batch_size):\n                out.append([id[id_index], output[id_index].reshape([101, 101])])\n\n            if i % 1000 == 0 and i > 0:\n                print(\n                    self.model_name + \" fold index: \" + str(fold_index) + \" \" + str(i)\n                )\n\n        return out\n\n    def infer_fold_TTA(self, fold_index, mode=\"max_map\", Cycle=None):\n        print(mode)\n        val_loader = get_foldloader(\n            self.image_size, self.batch_size / 2, fold_index, mode=\"val\"\n        )\n        _, max_map, thres = self.val_TTA(\n            fold_index, val_loader, is_load=True, mode=mode, Cycle=Cycle\n        )\n        if fold_index < 0:\n            return\n\n        infer = self.get_infer_TTA(fold_index, thres)\n        if Cycle is None:\n            name_tmp = \"fold_{}_TTA_{}{:.3f}at{:.3f}.csv\".format(\n                fold_index, mode, max_map, thres\n            )\n        else:\n            name_tmp = \"fold_{}_Cycle_{}_TTA_{}{:.3f}at{:.3f}.csv\".format(\n                fold_index, Cycle, mode, max_map, thres\n            )\n        output_name = os.path.join(\n            self.model_save_path, \"fold_\" + str(fold_index), name_tmp\n        )\n        submission = create_submission(infer)\n        submission.to_csv(output_name, index=None)\n\n    def infer_fold_all_Cycle(self, fold_index, mode=\"max_map\"):\n        for i in range(self.cycle_num):\n            self.infer_fold_TTA(fold_index, mode, Cycle=i)\n\n\ndef main(config, aug_list):\n    # cudnn.benchmark = True\n    if config.mode == \"train\":\n        solver = SingleModelSolver(config)\n        solver.train_fold(config.train_fold_index, aug_list)\n    if config.mode == \"test\":\n        solver = SingleModelSolver(config)\n        solver.infer_fold_all_Cycle(config.train_fold_index)\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser()\n\n    parser.add_argument(\"--train_fold_index\", type=int, default=0)\n    parser.add_argument(\"--model\", type=str, default=\"model_34\")\n    parser.add_argument(\"--model_name\", type=str, default=\"model_34\")\n    parser.add_argument(\"--image_size\", type=int, default=128)\n    parser.add_argument(\"--batch_size\", type=int, default=16)\n\n    aug_list = [\"flip_lr\"]\n    parser.add_argument(\"--mode\", type=str, default=\"train\", choices=[\"train\", \"test\"])\n    parser.add_argument(\"--pretrained_model\", type=str, default=None)\n\n    parser.add_argument(\"--lr\", type=float, default=0.01)\n    parser.add_argument(\"--cycle_num\", type=int, default=7)\n    parser.add_argument(\"--cycle_inter\", type=int, default=50)\n\n    parser.add_argument(\"--dice_bce_pretrain_epochs\", type=int, default=10)\n    parser.add_argument(\"--dice_weight\", type=float, default=0.5)\n    parser.add_argument(\"--bce_weight\", type=float, default=0.9)\n    parser.add_argument(\"--num_workers\", type=int, default=16)\n\n    # Test settings\n    parser.add_argument(\"--log_path\", type=str, default=\"logs\")\n    parser.add_argument(\"--model_save_path\", type=str, default=\"models\")\n    parser.add_argument(\"--sample_path\", type=str, default=\"samples\")\n    parser.add_argument(\"--result_path\", type=str, default=\"results\")\n\n    # Step size\n    parser.add_argument(\"--log_step\", type=int, default=10)\n    parser.add_argument(\"--sample_step\", type=int, default=10)\n    parser.add_argument(\"--model_save_step\", type=int, default=20000)\n\n    config = parser.parse_args()\n    print(config)\n    main(config, aug_list)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/model/__init__.py",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/model/ibnnet.py",
    "content": "from __future__ import division\n\n\"\"\" \nCreates a ResNeXt Model as defined in:\nXie, S., Girshick, R., Dollar, P., Tu, Z., & He, K. (2016). \nAggregated residual transformations for deep neural networks. \narXiv preprint arXiv:1611.05431.\nimport from https://github.com/facebookresearch/ResNeXt/blob/master/models/resnext.lua\n\"\"\"\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch.nn import init\nimport torch\n\n__all__ = [\"resnext50_ibn_a\", \"resnext101_ibn_a\", \"resnext152_ibn_a\"]\n\n\nclass IBN(nn.Module):\n    def __init__(self, planes):\n        super(IBN, self).__init__()\n        half1 = int(planes / 2)\n        self.half = half1\n        half2 = planes - half1\n        self.IN = nn.InstanceNorm2d(half1, affine=True)\n        self.BN = nn.BatchNorm2d(half2)\n\n    def forward(self, x):\n        split = torch.split(x, self.half, 1)\n        out1 = self.IN(split[0].contiguous())\n        out2 = self.BN(split[1].contiguous())\n        out = torch.cat((out1, out2), 1)\n        return out\n\n\nclass Bottleneck(nn.Module):\n    \"\"\"\n    RexNeXt bottleneck type C\n    \"\"\"\n\n    expansion = 4\n\n    def __init__(\n        self,\n        inplanes,\n        planes,\n        baseWidth,\n        cardinality,\n        stride=1,\n        downsample=None,\n        ibn=False,\n    ):\n        \"\"\" Constructor\n        Args:\n            inplanes: input channel dimensionality\n            planes: output channel dimensionality\n            baseWidth: base width.\n            cardinality: num of convolution groups.\n            stride: conv stride. Replaces pooling layer.\n        \"\"\"\n        super(Bottleneck, self).__init__()\n\n        D = int(math.floor(planes * (baseWidth / 64)))\n        C = cardinality\n        self.conv1 = nn.Conv2d(\n            inplanes, D * C, kernel_size=1, stride=1, padding=0, bias=False\n        )\n        if ibn:\n            self.bn1 = IBN(D * C)\n        else:\n            self.bn1 = nn.BatchNorm2d(D * C)\n        self.conv2 = nn.Conv2d(\n            D * C, D * C, kernel_size=3, stride=stride, padding=1, groups=C, bias=False\n        )\n        self.bn2 = nn.BatchNorm2d(D * C)\n        self.conv3 = nn.Conv2d(\n            D * C, planes * 4, kernel_size=1, stride=1, padding=0, bias=False\n        )\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n\n        self.downsample = downsample\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\n\nclass ResNeXt(nn.Module):\n    \"\"\"\n    ResNext optimized for the ImageNet dataset, as specified in\n    https://arxiv.org/pdf/1611.05431.pdf\n    \"\"\"\n\n    def __init__(self, baseWidth, cardinality, layers, num_classes):\n        \"\"\" Constructor\n        Args:\n            baseWidth: baseWidth for ResNeXt.\n            cardinality: number of convolution groups.\n            layers: config of layers, e.g., [3, 4, 6, 3]\n            num_classes: number of classes\n        \"\"\"\n        super(ResNeXt, self).__init__()\n        block = Bottleneck\n\n        self.cardinality = cardinality\n        self.baseWidth = baseWidth\n        self.num_classes = num_classes\n        self.inplanes = 64\n        self.output_size = 64\n\n        self.conv1 = nn.Conv2d(3, 64, 7, 2, 3, bias=False)\n        self.bn1 = nn.BatchNorm2d(64)\n        self.relu = nn.ReLU(inplace=True)\n        self.maxpool1 = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n        self.layer1 = self._make_layer(block, 64, layers[0])\n        self.layer2 = self._make_layer(block, 128, layers[1], stride=2)\n        self.layer3 = self._make_layer(block, 256, layers[2], stride=2)\n        self.layer4 = self._make_layer(block, 512, layers[3], stride=2)\n        self.avgpool = nn.AvgPool2d(7)\n        self.fc = nn.Linear(512 * block.expansion, num_classes)\n\n        self.conv1.weight.data.normal_(0, math.sqrt(2.0 / (7 * 7 * 64)))\n        for m in self.modules():\n            if isinstance(m, nn.Conv2d):\n                n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels\n                m.weight.data.normal_(0, math.sqrt(2.0 / n))\n            elif isinstance(m, nn.BatchNorm2d):\n                m.weight.data.fill_(1)\n                m.bias.data.zero_()\n            elif isinstance(m, nn.InstanceNorm2d):\n                m.weight.data.fill_(1)\n                m.bias.data.zero_()\n\n    def _make_layer(self, block, planes, blocks, stride=1):\n        \"\"\" Stack n bottleneck modules where n is inferred from the depth of the network.\n        Args:\n            block: block type used to construct ResNext\n            planes: number of output channels (need to multiply by block.expansion)\n            blocks: number of blocks to be built\n            stride: factor to reduce the spatial dimensionality in the first bottleneck of the block.\n        Returns: a Module consisting of n sequential bottlenecks.\n        \"\"\"\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(\n                    self.inplanes,\n                    planes * block.expansion,\n                    kernel_size=1,\n                    stride=stride,\n                    bias=False,\n                ),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        ibn = True\n        if planes == 512:\n            ibn = False\n        layers.append(\n            block(\n                self.inplanes,\n                planes,\n                self.baseWidth,\n                self.cardinality,\n                stride,\n                downsample,\n                ibn,\n            )\n        )\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(\n                block(\n                    self.inplanes,\n                    planes,\n                    self.baseWidth,\n                    self.cardinality,\n                    1,\n                    None,\n                    ibn,\n                )\n            )\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = self.relu(x)\n        x = self.maxpool1(x)\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        x = self.avgpool(x)\n        x = x.view(x.size(0), -1)\n        x = self.fc(x)\n\n        return x\n\n\ndef resnext50_ibn_a(baseWidth, cardinality):\n    \"\"\"\n    Construct ResNeXt-50.\n    \"\"\"\n    model = ResNeXt(baseWidth, cardinality, [3, 4, 6, 3], 1000)\n    return model\n\n\nfrom utils import state_dict_remove_moudle\n\n\ndef resnext101_ibn_a(baseWidth, cardinality, pretrained=True):\n    \"\"\"\n    Construct ResNeXt-101.\n    \"\"\"\n    model = ResNeXt(baseWidth, cardinality, [3, 4, 23, 3], 1000)\n    if pretrained:\n        state_dict = torch.load(\n            r\"/data/shentao/Airbus/code/pretrained_model/resnext101_ibn_a.pth.tar\"\n        )[\"state_dict\"]\n        state_dict = state_dict_remove_moudle(state_dict, model)\n        model.load_state_dict(state_dict)\n\n    return model\n\n\ndef resnext152_ibn_a(baseWidth, cardinality):\n    \"\"\"\n    Construct ResNeXt-152.\n    \"\"\"\n    model = ResNeXt(baseWidth, cardinality, [3, 8, 36, 3], 1000)\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/model/model.py",
    "content": "import torch\nimport torch.nn as nn\nimport torchvision\nimport torch.nn.functional as F\nfrom ibnnet import resnext101_ibn_a, IBN\nfrom senet import se_resnext50_32x4d\n\n\ndef Stconv3x3(in_, out, bias=True):\n    return nn.Conv2d(in_, out, 3, padding=1, bias=bias)\n\n\ndef Stconv7x7(in_, out, bias=True):\n    return nn.Conv2d(in_, out, 7, padding=3, bias=bias)\n\n\ndef Stconv5x5(in_, out, bias=True):\n    return nn.Conv2d(in_, out, 5, padding=2, bias=bias)\n\n\ndef Stconv1x1(in_, out, bias=True):\n    return nn.Conv2d(in_, out, 1, padding=0, bias=bias)\n\n\nclass StConvRelu(nn.Module):\n    def __init__(self, in_, out, kernel_size, norm_type=None):\n        super(StConvRelu, self).__init__()\n\n        is_bias = True\n        self.norm_type = norm_type\n        if norm_type == \"batch_norm\":\n            self.norm = nn.BatchNorm2d(out)\n            is_bias = False\n\n        elif norm_type == \"instance_norm\":\n            self.norm = nn.InstanceNorm2d(out)\n            is_bias = True\n\n        if kernel_size == 3:\n            self.conv = Stconv3x3(in_, out, is_bias)\n        elif kernel_size == 7:\n            self.conv = Stconv7x7(in_, out, is_bias)\n        elif kernel_size == 5:\n            self.conv = Stconv5x5(in_, out, is_bias)\n        elif kernel_size == 1:\n            self.conv = Stconv1x1(in_, out, is_bias)\n\n        self.activation = nn.ReLU(inplace=True)\n\n    def forward(self, x):\n        if self.norm_type is not None:\n            x = self.conv(x)\n            x = self.norm(x)\n            x = self.activation(x)\n        else:\n            x = self.conv(x)\n            x = self.activation(x)\n        return x\n\n\nclass ImprovedIBNaDecoderBlock(nn.Module):\n    def __init__(self, in_channels, n_filters):\n        super(ImprovedIBNaDecoderBlock, self).__init__()\n\n        self.conv1 = nn.Conv2d(in_channels, in_channels // 4, 1)\n        self.norm1 = IBN(in_channels // 4)\n        self.relu = nn.ReLU(inplace=True)\n\n        self.deconv2 = nn.ConvTranspose2d(\n            in_channels // 4, in_channels // 4, 4, stride=2, padding=1\n        )\n        self.norm2 = nn.BatchNorm2d(in_channels // 4)\n\n        self.conv3 = nn.Conv2d(in_channels // 4, n_filters, 1)\n        self.norm3 = nn.BatchNorm2d(n_filters)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.norm1(x)\n        x = self.relu(x)\n        x = self.deconv2(x)\n        x = self.norm2(x)\n        x = self.relu(x)\n        x = self.conv3(x)\n        x = self.norm3(x)\n        x = self.relu(x)\n        return x\n\n\nclass SELayer(nn.Module):\n    def __init__(self, channel, reduction=16):\n        super(SELayer, self).__init__()\n        self.avg_pool = nn.AdaptiveAvgPool2d(1)\n        self.fc = nn.Sequential(\n            nn.Linear(channel, int(channel / reduction), bias=False),\n            nn.ReLU(inplace=True),\n            nn.Linear(int(channel / reduction), channel, bias=False),\n            nn.Sigmoid(),\n        )\n\n    def forward(self, x):\n        b, c, _, _ = x.size()\n        y = self.avg_pool(x).view(b, c)\n        y = self.fc(y).view(b, c, 1, 1)\n        return x * y.expand_as(x)\n\n\nclass SCSEBlock(nn.Module):\n    def __init__(self, channel, reduction=16):\n        super(SCSEBlock, self).__init__()\n        self.avg_pool = nn.AdaptiveAvgPool2d(1)\n\n        self.channel_excitation = nn.Sequential(\n            nn.Linear(channel, int(channel // reduction)),\n            nn.ReLU(inplace=True),\n            nn.Linear(int(channel // reduction), channel),\n            nn.Sigmoid(),\n        )\n\n        self.spatial_se = nn.Sequential(\n            nn.Conv2d(channel, 1, kernel_size=1, stride=1, padding=0, bias=False),\n            nn.Sigmoid(),\n        )\n\n    def forward(self, x):\n        bahs, chs, _, _ = x.size()\n\n        # Returns a new tensor with the same data as the self tensor but of a different size.\n        chn_se = self.avg_pool(x).view(bahs, chs)\n        chn_se = self.channel_excitation(chn_se).view(bahs, chs, 1, 1)\n        chn_se = torch.mul(x, chn_se)\n\n        spa_se = self.spatial_se(x)\n        spa_se = torch.mul(x, spa_se)\n        return torch.add(chn_se, 1, spa_se)\n\n\nclass Decoder(nn.Module):\n    def __init__(self, in_channels, channels, out_channels):\n        super(Decoder, self).__init__()\n        self.conv1 = nn.Sequential(\n            nn.Conv2d(in_channels, channels, kernel_size=3, padding=1),\n            nn.BatchNorm2d(channels),\n            nn.ReLU(inplace=True),\n        )\n        self.conv2 = nn.Sequential(\n            nn.Conv2d(channels, out_channels, kernel_size=3, padding=1),\n            nn.BatchNorm2d(out_channels),\n            nn.ReLU(inplace=True),\n        )\n        self.SCSE = SCSEBlock(out_channels)\n\n    def forward(self, x, e=None):\n        x = F.upsample(x, scale_factor=2, mode=\"bilinear\")\n        if e is not None:\n            x = torch.cat([x, e], 1)\n            x = F.dropout2d(x, p=0.50)\n\n        x = self.conv1(x)\n        x = self.conv2(x)\n        x = self.SCSE(x)\n        return x\n\n\nclass model34_DeepSupervion(nn.Module):\n    def __init__(self, num_classes=1, mask_class=2):\n        super(model34_DeepSupervion, self).__init__()\n\n        self.num_classes = num_classes\n\n        self.encoder = torchvision.models.resnet34(pretrained=True)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv1 = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu\n        )\n\n        self.conv2 = self.encoder.layer1\n        self.conv3 = self.encoder.layer2\n        self.conv4 = self.encoder.layer3\n        self.conv5 = self.encoder.layer4\n\n        self.center_global_pool = nn.AdaptiveAvgPool2d([1, 1])\n        self.center_conv1x1 = nn.Conv2d(512, 64, kernel_size=1)\n        self.center_fc = nn.Linear(64, mask_class)\n\n        self.center = nn.Sequential(\n            nn.Conv2d(512, 512, kernel_size=3, padding=1),\n            nn.BatchNorm2d(512),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(512, 256, kernel_size=3, padding=1),\n            nn.BatchNorm2d(256),\n            nn.ReLU(inplace=True),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n\n        self.decoder5 = Decoder(256 + 512, 512, 64)\n        self.decoder4 = Decoder(64 + 256, 256, 64)\n        self.decoder3 = Decoder(64 + 128, 128, 64)\n        self.decoder2 = Decoder(64 + 64, 64, 64)\n        self.decoder1 = Decoder(64, 32, 64)\n\n        self.logits_no_empty = nn.Sequential(\n            nn.Conv2d(320, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 1, kernel_size=1, padding=0),\n        )\n\n        self.logits_final = nn.Sequential(\n            nn.Conv2d(320 + 64, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 1, kernel_size=1, padding=0),\n        )\n\n    def forward(self, x):\n        conv1 = self.conv1(x)  # 1/4\n        conv2 = self.conv2(conv1)  # 1/4\n        conv3 = self.conv3(conv2)  # 1/8\n        conv4 = self.conv4(conv3)  # 1/16\n        conv5 = self.conv5(conv4)  # 1/32\n\n        center_512 = self.center_global_pool(conv5)\n        center_64 = self.center_conv1x1(center_512)\n        center_64_flatten = center_64.view(center_64.size(0), -1)\n        center_fc = self.center_fc(center_64_flatten)\n\n        f = self.center(conv5)\n        d5 = self.decoder5(f, conv5)\n        d4 = self.decoder4(d5, conv4)\n        d3 = self.decoder3(d4, conv3)\n        d2 = self.decoder2(d3, conv2)\n        d1 = self.decoder1(d2)\n\n        hypercol = torch.cat(\n            (\n                d1,\n                F.upsample(d2, scale_factor=2, mode=\"bilinear\"),\n                F.upsample(d3, scale_factor=4, mode=\"bilinear\"),\n                F.upsample(d4, scale_factor=8, mode=\"bilinear\"),\n                F.upsample(d5, scale_factor=16, mode=\"bilinear\"),\n            ),\n            1,\n        )\n        hypercol = F.dropout2d(hypercol, p=0.50)\n\n        x_no_empty = self.logits_no_empty(hypercol)\n        hypercol_add_center = torch.cat(\n            (hypercol, F.upsample(center_64, scale_factor=128, mode=\"bilinear\")), 1\n        )\n\n        x_final = self.logits_final(hypercol_add_center)\n        return center_fc, x_no_empty, x_final\n\n\nclass model50A_DeepSupervion(nn.Module):\n    def __init__(self, num_classes=1):\n        super(model50A_DeepSupervion, self).__init__()\n\n        self.num_classes = num_classes\n        self.encoder = se_resnext50_32x4d()\n\n        self.relu = nn.ReLU(inplace=True)\n        self.conv1 = nn.Sequential(\n            self.encoder.layer0.conv1,\n            self.encoder.layer0.bn1,\n            self.encoder.layer0.relu1,\n        )\n\n        self.conv2 = self.encoder.layer1\n        self.conv3 = self.encoder.layer2\n        self.conv4 = self.encoder.layer3\n        self.conv5 = self.encoder.layer4\n\n        self.center_global_pool = nn.AdaptiveAvgPool2d([1, 1])\n        self.center_conv1x1 = nn.Conv2d(512 * 4, 64, kernel_size=1)\n        self.center_fc = nn.Linear(64, 2)\n\n        self.center = nn.Sequential(\n            nn.Conv2d(512 * 4, 512, kernel_size=3, padding=1),\n            nn.BatchNorm2d(512),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(512, 256, kernel_size=3, padding=1),\n            nn.BatchNorm2d(256),\n            nn.ReLU(inplace=True),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n\n        self.decoder5 = Decoder(256 + 512 * 4, 512, 64)\n        self.decoder4 = Decoder(64 + 256 * 4, 256, 64)\n        self.decoder3 = Decoder(64 + 128 * 4, 128, 64)\n        self.decoder2 = Decoder(64 + 64 * 4, 64, 64)\n        self.decoder1 = Decoder(64, 32, 64)\n\n        self.logits_no_empty = nn.Sequential(\n            nn.Conv2d(320, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 1, kernel_size=1, padding=0),\n        )\n\n        self.logits_final = nn.Sequential(\n            nn.Conv2d(320 + 64, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 1, kernel_size=1, padding=0),\n        )\n\n    def forward(self, x):\n        conv1 = self.conv1(x)  # 1/4\n        conv2 = self.conv2(conv1)  # 1/4\n        conv3 = self.conv3(conv2)  # 1/8\n        conv4 = self.conv4(conv3)  # 1/16\n        conv5 = self.conv5(conv4)  # 1/32\n\n        center_512 = self.center_global_pool(conv5)\n        center_64 = self.center_conv1x1(center_512)\n        center_64_flatten = center_64.view(center_64.size(0), -1)\n        center_fc = self.center_fc(center_64_flatten)\n\n        f = self.center(conv5)\n        d5 = self.decoder5(f, conv5)\n        d4 = self.decoder4(d5, conv4)\n        d3 = self.decoder3(d4, conv3)\n        d2 = self.decoder2(d3, conv2)\n        d1 = self.decoder1(d2)\n\n        hypercol = torch.cat(\n            (\n                d1,\n                F.upsample(d2, scale_factor=2, mode=\"bilinear\"),\n                F.upsample(d3, scale_factor=4, mode=\"bilinear\"),\n                F.upsample(d4, scale_factor=8, mode=\"bilinear\"),\n                F.upsample(d5, scale_factor=16, mode=\"bilinear\"),\n            ),\n            1,\n        )\n        hypercol = F.dropout2d(hypercol, p=0.50)\n\n        x_no_empty = self.logits_no_empty(hypercol)\n        hypercol_add_center = torch.cat(\n            (hypercol, F.upsample(center_64, scale_factor=128, mode=\"bilinear\")), 1\n        )\n\n        x_final = self.logits_final(hypercol_add_center)\n        return center_fc, x_no_empty, x_final\n\n\nclass model101A_DeepSupervion(nn.Module):\n    def __init__(self, num_classes=1):\n        super(model101A_DeepSupervion, self).__init__()\n\n        self.num_classes = num_classes\n        num_filters = 32\n        baseWidth = 4\n        cardinality = 32\n        self.encoder = resnext101_ibn_a(baseWidth, cardinality, pretrained=True)\n\n        self.relu = nn.ReLU(inplace=True)\n        self.pool = nn.MaxPool2d(2, 2)\n        self.conv1 = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu\n        )\n\n        self.conv2 = self.encoder.layer1\n        self.conv3 = self.encoder.layer2\n        self.conv4 = self.encoder.layer3\n        self.conv5 = self.encoder.layer4\n\n        self.center_global_pool = nn.AdaptiveAvgPool2d([1, 1])\n        self.center_conv1x1 = nn.Conv2d(2048, 64, kernel_size=1)\n        self.center_fc = nn.Linear(64, 2)\n\n        self.center_se = SELayer(512 * 4)\n        self.center = ImprovedIBNaDecoderBlock(512 * 4, num_filters * 8)\n\n        self.dec5_se = SELayer(512 * 4 + num_filters * 8)\n        self.dec5 = ImprovedIBNaDecoderBlock(512 * 4 + num_filters * 8, num_filters * 8)\n\n        self.dec4_se = SELayer(256 * 4 + num_filters * 8)\n        self.dec4 = ImprovedIBNaDecoderBlock(256 * 4 + num_filters * 8, num_filters * 8)\n\n        self.dec3_se = SELayer(128 * 4 + num_filters * 8)\n        self.dec3 = ImprovedIBNaDecoderBlock(128 * 4 + num_filters * 8, num_filters * 4)\n\n        self.dec2_se = SELayer(64 * 4 + num_filters * 4)\n        self.dec2 = ImprovedIBNaDecoderBlock(64 * 4 + num_filters * 4, num_filters * 4)\n\n        self.logits_no_empty = nn.Sequential(\n            StConvRelu(num_filters * 4, num_filters, 3),\n            nn.Dropout2d(0.5),\n            nn.Conv2d(num_filters, 1, kernel_size=1, padding=0),\n        )\n\n        self.logits_final = nn.Sequential(\n            StConvRelu(num_filters * 4 + 64, num_filters, 3),\n            nn.Dropout2d(0.5),\n            nn.Conv2d(num_filters, 1, kernel_size=1, padding=0),\n        )\n\n    def forward(self, x):\n        conv1 = self.conv1(x)  # 1/2\n        conv2 = self.conv2(conv1)  # 1/2\n        conv3 = self.conv3(conv2)  # 1/4\n        conv4 = self.conv4(conv3)  # 1/8\n        conv5 = self.conv5(conv4)  # 1/16\n\n        center_2048 = self.center_global_pool(conv5)\n        center_64 = self.center_conv1x1(center_2048)\n        center_64_flatten = center_64.view(center_64.size(0), -1)\n        center_fc = self.center_fc(center_64_flatten)\n\n        center = self.center(self.center_se(self.pool(conv5)))  # 1/16\n\n        dec5 = self.dec5(self.dec5_se(torch.cat([center, conv5], 1)))  # 1/8\n        dec4 = self.dec4(self.dec4_se(torch.cat([dec5, conv4], 1)))  # 1/4\n        dec3 = self.dec3(self.dec3_se(torch.cat([dec4, conv3], 1)))  # 1/2\n        dec2 = self.dec2(self.dec2_se(torch.cat([dec3, conv2], 1)))  # 1\n\n        x_no_empty = self.logits_no_empty(dec2)\n        dec0_add_center = torch.cat(\n            (dec2, F.upsample(center_64, scale_factor=128, mode=\"bilinear\")), 1\n        )\n        x_final = self.logits_final(dec0_add_center)\n\n        return center_fc, x_no_empty, x_final\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/model/senet.py",
    "content": "\"\"\"\nResNet code gently borrowed from\nhttps://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py\n\"\"\"\nfrom __future__ import print_function, division, absolute_import\nfrom collections import OrderedDict\nimport math\n\nimport torch.nn as nn\nfrom torch.utils import model_zoo\n\n__all__ = [\n    \"SENet\",\n    \"senet154\",\n    \"se_resnet50\",\n    \"se_resnet101\",\n    \"se_resnet152\",\n    \"se_resnext50_32x4d\",\n    \"se_resnext101_32x4d\",\n]\n\npretrained_settings = {\n    \"senet154\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/senet154-c7b49a05.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n    \"se_resnet50\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/se_resnet50-ce0d4300.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n    \"se_resnet101\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/se_resnet101-7e38fcc6.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n    \"se_resnet152\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/se_resnet152-d17c99b7.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n    \"se_resnext50_32x4d\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/se_resnext50_32x4d-a260b3a4.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n    \"se_resnext101_32x4d\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/se_resnext101_32x4d-3b2fe3d8.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 224, 224],\n            \"input_range\": [0, 1],\n            \"mean\": [0.485, 0.456, 0.406],\n            \"std\": [0.229, 0.224, 0.225],\n            \"num_classes\": 1000,\n        }\n    },\n}\n\n\nclass SEModule(nn.Module):\n    def __init__(self, channels, reduction):\n        super(SEModule, self).__init__()\n        self.avg_pool = nn.AdaptiveAvgPool2d(1)\n        self.fc1 = nn.Conv2d(channels, channels // reduction, kernel_size=1, padding=0)\n        self.relu = nn.ReLU(inplace=True)\n        self.fc2 = nn.Conv2d(channels // reduction, channels, kernel_size=1, padding=0)\n        self.sigmoid = nn.Sigmoid()\n\n    def forward(self, x):\n        module_input = x\n        x = self.avg_pool(x)\n        x = self.fc1(x)\n        x = self.relu(x)\n        x = self.fc2(x)\n        x = self.sigmoid(x)\n        return module_input * x\n\n\nclass Bottleneck(nn.Module):\n    \"\"\"\n    Base class for bottlenecks that implements `forward()` method.\n    \"\"\"\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        out = self.se_module(out) + residual\n        out = self.relu(out)\n\n        return out\n\n\nclass SEBottleneck(Bottleneck):\n    \"\"\"\n    Bottleneck for SENet154.\n    \"\"\"\n\n    expansion = 4\n\n    def __init__(self, inplanes, planes, groups, reduction, stride=1, downsample=None):\n        super(SEBottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(inplanes, planes * 2, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes * 2)\n        self.conv2 = nn.Conv2d(\n            planes * 2,\n            planes * 4,\n            kernel_size=3,\n            stride=stride,\n            padding=1,\n            groups=groups,\n            bias=False,\n        )\n        self.bn2 = nn.BatchNorm2d(planes * 4)\n        self.conv3 = nn.Conv2d(planes * 4, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.se_module = SEModule(planes * 4, reduction=reduction)\n        self.downsample = downsample\n        self.stride = stride\n\n\nclass SEResNetBottleneck(Bottleneck):\n    \"\"\"\n    ResNet bottleneck with a Squeeze-and-Excitation module. It follows Caffe\n    implementation and uses `stride=stride` in `conv1` and not in `conv2`\n    (the latter is used in the torchvision implementation of ResNet).\n    \"\"\"\n\n    expansion = 4\n\n    def __init__(self, inplanes, planes, groups, reduction, stride=1, downsample=None):\n        super(SEResNetBottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(\n            inplanes, planes, kernel_size=1, bias=False, stride=stride\n        )\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(\n            planes, planes, kernel_size=3, padding=1, groups=groups, bias=False\n        )\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.se_module = SEModule(planes * 4, reduction=reduction)\n        self.downsample = downsample\n        self.stride = stride\n\n\nclass SEResNeXtBottleneck(Bottleneck):\n    \"\"\"\n    ResNeXt bottleneck type C with a Squeeze-and-Excitation module.\n    \"\"\"\n\n    expansion = 4\n\n    def __init__(\n        self,\n        inplanes,\n        planes,\n        groups,\n        reduction,\n        stride=1,\n        downsample=None,\n        base_width=4,\n    ):\n        super(SEResNeXtBottleneck, self).__init__()\n        width = int(math.floor(planes * (base_width / 64)) * groups)\n\n        self.conv1 = nn.Conv2d(inplanes, width, kernel_size=1, stride=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(width)\n        self.conv2 = nn.Conv2d(\n            width,\n            width,\n            kernel_size=3,\n            stride=stride,\n            padding=1,\n            groups=groups,\n            bias=False,\n        )\n        self.bn2 = nn.BatchNorm2d(width)\n        self.conv3 = nn.Conv2d(width, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.se_module = SEModule(planes * 4, reduction=reduction)\n        self.downsample = downsample\n        self.stride = stride\n\n\nclass SENet(nn.Module):\n    def __init__(\n        self,\n        block,\n        layers,\n        groups,\n        reduction,\n        dropout_p=0.2,\n        inplanes=128,\n        input_3x3=True,\n        downsample_kernel_size=3,\n        downsample_padding=1,\n        num_classes=1000,\n    ):\n        \"\"\"\n        Parameters\n        ----------\n        block (nn.Module): Bottleneck class.\n            - For SENet154: SEBottleneck\n            - For SE-ResNet models: SEResNetBottleneck\n            - For SE-ResNeXt models:  SEResNeXtBottleneck\n        layers (list of ints): Number of residual blocks for 4 layers of the\n            network (layer1...layer4).\n        groups (int): Number of groups for the 3x3 convolution in each\n            bottleneck block.\n            - For SENet154: 64\n            - For SE-ResNet models: 1\n            - For SE-ResNeXt models:  32\n        reduction (int): Reduction ratio for Squeeze-and-Excitation modules.\n            - For all models: 16\n        dropout_p (float or None): Drop probability for the Dropout layer.\n            If `None` the Dropout layer is not used.\n            - For SENet154: 0.2\n            - For SE-ResNet models: None\n            - For SE-ResNeXt models: None\n        inplanes (int):  Number of input channels for layer1.\n            - For SENet154: 128\n            - For SE-ResNet models: 64\n            - For SE-ResNeXt models: 64\n        input_3x3 (bool): If `True`, use three 3x3 convolutions instead of\n            a single 7x7 convolution in layer0.\n            - For SENet154: True\n            - For SE-ResNet models: False\n            - For SE-ResNeXt models: False\n        downsample_kernel_size (int): Kernel size for downsampling convolutions\n            in layer2, layer3 and layer4.\n            - For SENet154: 3\n            - For SE-ResNet models: 1\n            - For SE-ResNeXt models: 1\n        downsample_padding (int): Padding for downsampling convolutions in\n            layer2, layer3 and layer4.\n            - For SENet154: 1\n            - For SE-ResNet models: 0\n            - For SE-ResNeXt models: 0\n        num_classes (int): Number of outputs in `last_linear` layer.\n            - For all models: 1000\n        \"\"\"\n        super(SENet, self).__init__()\n        self.inplanes = inplanes\n        if input_3x3:\n            layer0_modules = [\n                (\"conv1\", nn.Conv2d(3, 64, 3, stride=2, padding=1, bias=False)),\n                (\"bn1\", nn.BatchNorm2d(64)),\n                (\"relu1\", nn.ReLU(inplace=True)),\n                (\"conv2\", nn.Conv2d(64, 64, 3, stride=1, padding=1, bias=False)),\n                (\"bn2\", nn.BatchNorm2d(64)),\n                (\"relu2\", nn.ReLU(inplace=True)),\n                (\"conv3\", nn.Conv2d(64, inplanes, 3, stride=1, padding=1, bias=False)),\n                (\"bn3\", nn.BatchNorm2d(inplanes)),\n                (\"relu3\", nn.ReLU(inplace=True)),\n            ]\n        else:\n            layer0_modules = [\n                (\n                    \"conv1\",\n                    nn.Conv2d(\n                        3, inplanes, kernel_size=7, stride=2, padding=3, bias=False\n                    ),\n                ),\n                (\"bn1\", nn.BatchNorm2d(inplanes)),\n                (\"relu1\", nn.ReLU(inplace=True)),\n            ]\n        # To preserve compatibility with Caffe weights `ceil_mode=True`\n        # is used instead of `padding=1`.\n        layer0_modules.append((\"pool\", nn.MaxPool2d(3, stride=2, ceil_mode=True)))\n        self.layer0 = nn.Sequential(OrderedDict(layer0_modules))\n        self.layer1 = self._make_layer(\n            block,\n            planes=64,\n            blocks=layers[0],\n            groups=groups,\n            reduction=reduction,\n            downsample_kernel_size=1,\n            downsample_padding=0,\n        )\n        self.layer2 = self._make_layer(\n            block,\n            planes=128,\n            blocks=layers[1],\n            stride=2,\n            groups=groups,\n            reduction=reduction,\n            downsample_kernel_size=downsample_kernel_size,\n            downsample_padding=downsample_padding,\n        )\n        self.layer3 = self._make_layer(\n            block,\n            planes=256,\n            blocks=layers[2],\n            stride=2,\n            groups=groups,\n            reduction=reduction,\n            downsample_kernel_size=downsample_kernel_size,\n            downsample_padding=downsample_padding,\n        )\n        self.layer4 = self._make_layer(\n            block,\n            planes=512,\n            blocks=layers[3],\n            stride=2,\n            groups=groups,\n            reduction=reduction,\n            downsample_kernel_size=downsample_kernel_size,\n            downsample_padding=downsample_padding,\n        )\n        self.avg_pool = nn.AvgPool2d(7, stride=1)\n        self.dropout = nn.Dropout(dropout_p) if dropout_p is not None else None\n        self.last_linear = nn.Linear(512 * block.expansion, num_classes)\n\n    def _make_layer(\n        self,\n        block,\n        planes,\n        blocks,\n        groups,\n        reduction,\n        stride=1,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n    ):\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(\n                    self.inplanes,\n                    planes * block.expansion,\n                    kernel_size=downsample_kernel_size,\n                    stride=stride,\n                    padding=downsample_padding,\n                    bias=False,\n                ),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        layers.append(\n            block(self.inplanes, planes, groups, reduction, stride, downsample)\n        )\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(block(self.inplanes, planes, groups, reduction))\n\n        return nn.Sequential(*layers)\n\n    def features(self, x):\n        x = self.layer0(x)\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        return x\n\n    def logits(self, x):\n        x = self.avg_pool(x)\n        if self.dropout is not None:\n            x = self.dropout(x)\n        x = x.view(x.size(0), -1)\n        x = self.last_linear(x)\n        return x\n\n    def forward(self, x):\n        x = self.features(x)\n        x = self.logits(x)\n        return x\n\n\ndef initialize_pretrained_model(model, num_classes, settings):\n    assert (\n        num_classes == settings[\"num_classes\"]\n    ), \"num_classes should be {}, but is {}\".format(\n        settings[\"num_classes\"], num_classes\n    )\n    model.load_state_dict(model_zoo.load_url(settings[\"url\"]))\n    model.input_space = settings[\"input_space\"]\n    model.input_size = settings[\"input_size\"]\n    model.input_range = settings[\"input_range\"]\n    model.mean = settings[\"mean\"]\n    model.std = settings[\"std\"]\n\n\ndef senet154(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEBottleneck,\n        [3, 8, 36, 3],\n        groups=64,\n        reduction=16,\n        dropout_p=0.2,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"senet154\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n\n\ndef se_resnet50(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEResNetBottleneck,\n        [3, 4, 6, 3],\n        groups=1,\n        reduction=16,\n        dropout_p=None,\n        inplanes=64,\n        input_3x3=False,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"se_resnet50\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n\n\ndef se_resnet101(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEResNetBottleneck,\n        [3, 4, 23, 3],\n        groups=1,\n        reduction=16,\n        dropout_p=None,\n        inplanes=64,\n        input_3x3=False,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"se_resnet101\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n\n\ndef se_resnet152(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEResNetBottleneck,\n        [3, 8, 36, 3],\n        groups=1,\n        reduction=16,\n        dropout_p=None,\n        inplanes=64,\n        input_3x3=False,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"se_resnet152\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n\n\ndef se_resnext50_32x4d(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEResNeXtBottleneck,\n        [3, 4, 6, 3],\n        groups=32,\n        reduction=16,\n        dropout_p=None,\n        inplanes=64,\n        input_3x3=False,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"se_resnext50_32x4d\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n\n\ndef se_resnext101_32x4d(num_classes=1000, pretrained=\"imagenet\"):\n    model = SENet(\n        SEResNeXtBottleneck,\n        [3, 4, 23, 3],\n        groups=32,\n        reduction=16,\n        dropout_p=None,\n        inplanes=64,\n        input_3x3=False,\n        downsample_kernel_size=1,\n        downsample_padding=0,\n        num_classes=num_classes,\n    )\n    if pretrained is not None:\n        settings = pretrained_settings[\"se_resnext101_32x4d\"][pretrained]\n        initialize_pretrained_model(model, num_classes, settings)\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v1/utils.py",
    "content": "import logging\nimport os\n\n# import pathlib\nimport random\nimport sys\nimport time\nfrom itertools import chain\nfrom collections import Iterable\n\n# from deepsense import neptune\nimport numpy as np\nimport pandas as pd\nimport torch\nfrom PIL import Image\nimport yaml\nfrom imgaug import augmenters as iaa\nimport imgaug as ia\n\n\ndef do_length_encode(x):\n    bs = np.where(x.T.flatten())[0]\n\n    rle = []\n    prev = -2\n    for b in bs:\n        if b > prev + 1:\n            rle.extend((b + 1, 0))\n        rle[-1] += 1\n        prev = b\n\n    # https://www.kaggle.com/c/data-science-bowl-2018/discussion/48561#\n    # if len(rle)!=0 and rle[-1]+rle[-2] == x.size:\n    #    rle[-2] = rle[-2] -1\n\n    rle = \" \".join([str(r) for r in rle])\n    return rle\n\n\nfrom math import isnan\n\n\ndef do_length_decode(rle, H, W, fill_value=255):\n    mask = np.zeros((H, W), np.uint8)\n    if type(rle).__name__ == \"float\":\n        return mask\n\n    mask = mask.reshape(-1)\n    rle = np.array([int(s) for s in rle.split(\" \")]).reshape(-1, 2)\n    for r in rle:\n        start = r[0] - 1\n        end = start + r[1]\n        mask[start:end] = fill_value\n    mask = mask.reshape(W, H).T  # H, W need to swap as transposing.\n    return mask\n\n\ndef decode_csv(csv_name):\n    import pandas as pd\n\n    data = pd.read_csv(csv_name)\n    id = data[\"id\"]\n    rle_mask = data[\"rle_mask\"]\n\n    dict = {}\n    for id, rle in zip(id, rle_mask):\n        tmp = do_length_decode(rle, 101, 101, fill_value=1)\n        dict[id] = tmp\n\n    return dict\n\n\ndef save_id_fea(predict_dict, save_dir):\n    for id in predict_dict:\n        output_mat = predict_dict[id].astype(np.float32)\n        np.save(os.path.join(save_dir, id), output_mat)\n\n\ndef state_dict_remove_moudle(moudle_state_dict, model):\n    state_dict = model.state_dict()\n    keys = list(moudle_state_dict.keys())\n    for key in keys:\n        print(key + \" loaded\")\n        new_key = key.replace(r\"module.\", r\"\")\n        print(new_key)\n        state_dict[new_key] = moudle_state_dict[key]\n\n    return state_dict\n\n\nfrom matplotlib import pyplot as plt\n\n\ndef write_and_plot(name, aver_num, logits, max_y=1.0, color=\"blue\"):\n    def moving_average(a, n=aver_num):\n        ret = np.cumsum(a, dtype=float)\n        ret[n:] = ret[n:] - ret[:-n]\n        return ret[n - 1 :] / n\n\n    # ===========================================================\n    moving_plot = moving_average(np.array(logits))\n    x = range(moving_plot.shape[0])\n    # plt.close()\n    plt.plot(x, moving_plot, color=color)\n    plt.ylim(0, max_y)\n    plt.savefig(name)\n\n\ndef decompose(labeled):\n    nr_true = labeled.max()\n    masks = []\n    for i in range(1, nr_true + 1):\n        msk = labeled.copy()\n        msk[msk != i] = 0.0\n        msk[msk == i] = 255.0\n        masks.append(msk)\n\n    if not masks:\n        return [labeled]\n    else:\n        return masks\n\n\ndef encode_rle(predictions):\n    return [run_length_encoding(mask) for mask in predictions]\n\n\ndef create_submission(predictions):\n    output = []\n    for image_id, mask in predictions:\n        # print(image_id)\n\n        rle_encoded = \" \".join(str(rle) for rle in run_length_encoding(mask))\n        output.append([image_id, rle_encoded])\n\n    submission = pd.DataFrame(output, columns=[\"id\", \"rle_mask\"]).astype(str)\n    return submission\n\n\ndef run_length_encoding(x):\n    # https://www.kaggle.com/c/data-science-bowl-2018/discussion/48561#\n    bs = np.where(x.T.flatten())[0]\n\n    rle = []\n    prev = -2\n    for b in bs:\n        if b > prev + 1:\n            rle.extend((b + 1, 0))\n        rle[-1] += 1\n        prev = b\n\n    if len(rle) != 0 and rle[-1] + rle[-2] > (x.size + 1):\n        rle[-2] = rle[-2] - 1\n\n    return rle\n\n\ndef run_length_decoding(mask_rle, shape):\n    \"\"\"\n    Based on https://www.kaggle.com/msl23518/visualize-the-stage1-test-solution and modified\n    Args:\n        mask_rle: run-length as string formatted (start length)\n        shape: (height, width) of array to return\n\n    Returns:\n        numpy array, 1 - mask, 0 - background\n\n    \"\"\"\n    s = mask_rle.split()\n    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]\n    starts -= 1\n    ends = starts + lengths\n    img = np.zeros(shape[1] * shape[0], dtype=np.uint8)\n    for lo, hi in zip(starts, ends):\n        img[lo:hi] = 1\n    return img.reshape((shape[1], shape[0])).T\n\n\ndef sigmoid(x):\n    return 1.0 / (1 + np.exp(-x))\n\n\ndef softmax(X, theta=1.0, axis=None):\n    \"\"\"\n    https://nolanbconaway.github.io/blog/2017/softmax-numpy\n    Compute the softmax of each element along an axis of X.\n\n    Parameters\n    ----------\n    X: ND-Array. Probably should be floats.\n    theta (optional): float parameter, used as a multiplier\n        prior to exponentiation. Default = 1.0\n    axis (optional): axis to compute values along. Default is the\n        first non-singleton axis.\n\n    Returns an array the same size as X. The result will sum to 1\n    along the specified axis.\n    \"\"\"\n\n    # make X at least 2d\n    y = np.atleast_2d(X)\n\n    # find axis\n    if axis is None:\n        axis = next(j[0] for j in enumerate(y.shape) if j[1] > 1)\n\n    # multiply y against the theta parameter,\n    y = y * float(theta)\n\n    # subtract the max for numerical stability\n    y = y - np.expand_dims(np.max(y, axis=axis), axis)\n\n    # exponentiate y\n    y = np.exp(y)\n\n    # take the sum along the specified axis\n    ax_sum = np.expand_dims(np.sum(y, axis=axis), axis)\n\n    # finally: divide elementwise\n    p = y / ax_sum\n\n    # flatten if X was 1D\n    if len(X.shape) == 1:\n        p = p.flatten()\n\n    return p\n\n\ndef from_pil(*images):\n    images = [np.array(image) for image in images]\n    if len(images) == 1:\n        return images[0]\n    else:\n        return images\n\n\ndef to_pil(*images):\n    images = [Image.fromarray((image).astype(np.uint8)) for image in images]\n    if len(images) == 1:\n        return images[0]\n    else:\n        return images\n\n\ndef binary_from_rle(rle):\n    return cocomask.decode(rle)\n\n\ndef get_crop_pad_sequence(vertical, horizontal):\n    top = int(vertical / 2)\n    bottom = vertical - top\n    right = int(horizontal / 2)\n    left = horizontal - right\n    return (top, right, bottom, left)\n\n\ndef get_list_of_image_predictions(batch_predictions):\n    image_predictions = []\n    for batch_pred in batch_predictions:\n        image_predictions.extend(list(batch_pred))\n    return image_predictions\n\n\ndef set_seed(seed):\n    random.seed(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    if torch.cuda.is_available():\n        torch.cuda.manual_seed_all(seed)\n\n\nclass ImgAug:\n    def __init__(self, augmenters):\n        if not isinstance(augmenters, list):\n            augmenters = [augmenters]\n        self.augmenters = augmenters\n        self.seq_det = None\n\n    def _pre_call_hook(self):\n        seq = iaa.Sequential(self.augmenters)\n        seq = reseed(seq, deterministic=True)\n        self.seq_det = seq\n\n    def transform(self, *images):\n        images = [self.seq_det.augment_image(image) for image in images]\n        if len(images) == 1:\n            return images[0]\n        else:\n            return images\n\n    def __call__(self, *args):\n        self._pre_call_hook()\n        return self.transform(*args)\n\n\ndef get_seed():\n    seed = int(time.time()) + int(os.getpid())\n    return seed\n\n\ndef reseed(augmenter, deterministic=True):\n    augmenter.random_state = ia.new_random_state(get_seed())\n    if deterministic:\n        augmenter.deterministic = True\n\n    for lists in augmenter.get_children_lists():\n        for aug in lists:\n            aug = reseed(aug, deterministic=True)\n    return augmenter\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/augmentation.py",
    "content": "import cv2\nimport numpy as np\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\nfrom .utils import get_crop_pad_sequence, reseed\n\n\ndef _perspective_transform_augment_images(self, images, random_state, parents, hooks):\n    result = images\n    if not self.keep_size:\n        result = list(result)\n\n    matrices, max_heights, max_widths = self._create_matrices(\n        [image.shape for image in images], random_state\n    )\n\n    for i, (M, max_height, max_width) in enumerate(\n        zip(matrices, max_heights, max_widths)\n    ):\n        warped = cv2.warpPerspective(images[i], M, (max_width, max_height))\n        if warped.ndim == 2 and images[i].ndim == 3:\n            warped = np.expand_dims(warped, 2)\n        if self.keep_size:\n            h, w = images[i].shape[0:2]\n            warped = ia.imresize_single_image(warped, (h, w))\n\n        result[i] = warped\n\n    return result\n\n\niaa.PerspectiveTransform._augment_images = _perspective_transform_augment_images\n\naffine_seq = iaa.Sequential(\n    [\n        # General\n        iaa.SomeOf(\n            (1, 2),\n            [\n                iaa.Fliplr(0.5),\n                iaa.Affine(\n                    rotate=(-2, 2), translate_percent={\"x\": (-0.04, 0.04)}, mode=\"edge\"\n                )  # symmetric  (-0.25, 0.25)\n                # iaa.CropAndPad(percent=((0.0, 0.10), (0.0, 0.05), (0.0, 0.10), (0.0, 0.05)), pad_mode='symmetric')\n            ],\n        ),\n        # >>> aug = iaa.CropAndPad(px=((0, 10), (0, 5), (0, 10), (0, 5)))\n        #   pads the top and bottom by a random value from the range 0px to 10px\n        #    and the left and right by a random value in the range 0px to 5px.\n        # Deformations\n        iaa.Sometimes(0.05, iaa.PiecewiseAffine(scale=(0.04, 0.08))),\n        iaa.Sometimes(0.05, iaa.PerspectiveTransform(scale=(0.05, 0.1))),\n    ],\n    random_order=True,\n)\nintensity_seq = iaa.Sequential([iaa.Noop()], random_order=False)\n\"\"\"\nintensity_seq = iaa.Sequential([\niaa.Invert(0.3),\niaa.Sometimes(0.3, iaa.ContrastNormalization((0.5, 1.5))),\niaa.OneOf([\n    iaa.Noop(),\n    iaa.Sequential([\n        iaa.OneOf([\n            iaa.Add((-10, 10)),\n            iaa.AddElementwise((-10, 10)),\n            iaa.Multiply((0.95, 1.05)),\n            iaa.MultiplyElementwise((0.95, 1.05)),\n        ]),\n    ]),\n    iaa.OneOf([\n        iaa.GaussianBlur(sigma=(0.0, 1.0)),\n        iaa.AverageBlur(k=(2, 5)),\n        iaa.MedianBlur(k=(3, 5))\n    ])\n])\n], random_order=False)\n\"\"\"\n\ntta_intensity_seq = iaa.Sequential([iaa.Noop()], random_order=False)\n\n\ndef resize_pad_seq(resize_target_size, pad_method, pad_size):\n    seq = iaa.Sequential(\n        [\n            iaa.Scale({\"height\": resize_target_size, \"width\": resize_target_size}),\n            PadFixed(pad=(pad_size, pad_size), pad_method=pad_method),\n            affine_seq,\n        ],\n        random_order=False,\n    )\n    return seq\n\n\ndef pad_to_fit_net(divisor, pad_mode, rest_of_augs=iaa.Noop()):\n    return iaa.Sequential(InferencePad(divisor, pad_mode), rest_of_augs)\n\n\nclass PadFixed(iaa.Augmenter):\n    PAD_FUNCTION = {\"reflect\": cv2.BORDER_REFLECT_101, \"edge\": cv2.BORDER_REPLICATE}\n\n    def __init__(\n        self,\n        pad=None,\n        pad_method=None,\n        name=None,\n        deterministic=False,\n        random_state=None,\n    ):\n        super().__init__(name, deterministic, random_state)\n        self.pad = pad\n        self.pad_method = pad_method\n\n    def _augment_images(self, images, random_state, parents, hooks):\n        result = []\n        for i, image in enumerate(images):\n            image_pad = self._pad(image)\n            result.append(image_pad)\n        return result\n\n    def _augment_keypoints(self, keypoints_on_images, random_state, parents, hooks):\n        result = []\n        return result\n\n    def _pad(self, img):\n        img_ = img.copy()\n\n        if self._is_expanded_grey_format(img):\n            img_ = np.squeeze(img_, axis=-1)\n\n        h_pad, w_pad = self.pad\n        img_ = cv2.copyMakeBorder(\n            img_.copy(),\n            h_pad,\n            h_pad,\n            w_pad,\n            w_pad,\n            PadFixed.PAD_FUNCTION[self.pad_method],\n        )\n\n        if self._is_expanded_grey_format(img):\n            img_ = np.expand_dims(img_, axis=-1)\n\n        return img_\n\n    def get_parameters(self):\n        return []\n\n    def _is_expanded_grey_format(self, img):\n        if len(img.shape) == 3 and img.shape[2] == 1:\n            return True\n        else:\n            return False\n\n\ndef test_time_augmentation_transform(image, tta_parameters):\n    if tta_parameters[\"ud_flip\"]:\n        image = np.flipud(image)\n    if tta_parameters[\"lr_flip\"]:\n        image = np.fliplr(image)\n    if tta_parameters[\"color_shift\"]:\n        random_color_shift = reseed(intensity_seq, deterministic=False)\n        image = random_color_shift.augment_image(image)\n    image = rotate(image, tta_parameters[\"rotation\"])\n    return image\n\n\ndef test_time_augmentation_inverse_transform(image, tta_parameters):\n    image = per_channel_rotation(image.copy(), -1 * tta_parameters[\"rotation\"])\n\n    if tta_parameters[\"lr_flip\"]:\n        image = per_channel_fliplr(image.copy())\n    if tta_parameters[\"ud_flip\"]:\n        image = per_channel_flipud(image.copy())\n    return image\n\n\ndef per_channel_flipud(x):\n    x_ = x.copy()\n    for i, channel in enumerate(x):\n        x_[i, :, :] = np.flipud(channel)\n    return x_\n\n\ndef per_channel_fliplr(x):\n    x_ = x.copy()\n    for i, channel in enumerate(x):\n        x_[i, :, :] = np.fliplr(channel)\n    return x_\n\n\ndef per_channel_rotation(x, angle):\n    return rotate(x, angle, axes=(1, 2))\n\n\ndef rotate(image, angle, axes=(0, 1)):\n    if angle % 90 != 0:\n        raise Exception(\"Angle must be a multiple of 90.\")\n    k = angle // 90\n    return np.rot90(image, k, axes=axes)\n\n\nclass RandomCropFixedSize(iaa.Augmenter):\n    def __init__(self, px=None, name=None, deterministic=False, random_state=None):\n        super(RandomCropFixedSize, self).__init__(\n            name=name, deterministic=deterministic, random_state=random_state\n        )\n        self.px = px\n        if isinstance(self.px, tuple):\n            self.px_h, self.px_w = self.px\n        elif isinstance(self.px, int):\n            self.px_h = self.px\n            self.px_w = self.px\n        else:\n            raise NotImplementedError\n\n    def _augment_images(self, images, random_state, parents, hooks):\n\n        result = []\n        seeds = random_state.randint(0, 10 ** 6, (len(images),))\n        for i, image in enumerate(images):\n            seed = seeds[i]\n            image_cr = self._random_crop(seed, image)\n            result.append(image_cr)\n        return result\n\n    def _augment_keypoints(self, keypoints_on_images, random_state, parents, hooks):\n        result = []\n        return result\n\n    def _random_crop(self, seed, image):\n        height, width = image.shape[:2]\n\n        np.random.seed(seed)\n        if height > self.px_h:\n            crop_top = np.random.randint(height - self.px_h)\n        elif height == self.px_h:\n            crop_top = 0\n        else:\n            raise ValueError(\"To big crop height\")\n        crop_bottom = crop_top + self.px_h\n\n        np.random.seed(seed + 1)\n        if width > self.px_w:\n            crop_left = np.random.randint(width - self.px_w)\n        elif width == self.px_w:\n            crop_left = 0\n        else:\n            raise ValueError(\"To big crop width\")\n        crop_right = crop_left + self.px_w\n\n        if len(image.shape) == 2:\n            image_cropped = image[crop_top:crop_bottom, crop_left:crop_right]\n        else:\n            image_cropped = image[crop_top:crop_bottom, crop_left:crop_right, :]\n        return image_cropped\n\n    def get_parameters(self):\n        return []\n\n\nclass InferencePad(iaa.Augmenter):\n    def __init__(\n        self,\n        divisor=2,\n        pad_mode=\"symmetric\",\n        name=None,\n        deterministic=False,\n        random_state=None,\n    ):\n        super(InferencePad, self).__init__(\n            name=name, deterministic=deterministic, random_state=random_state\n        )\n        self.divisor = divisor\n        self.pad_mode = pad_mode\n\n    def _augment_keypoints(self, keypoints_on_images, random_state, parents, hooks):\n        return keypoints_on_images\n\n    def _augment_images(self, images, random_state, parents, hooks):\n\n        result = []\n        for i, image in enumerate(images):\n            image_padded = self._pad_image(image)\n            result.append(image_padded)\n        return result\n\n    def _pad_image(self, image):\n        height = image.shape[0]\n        width = image.shape[1]\n\n        pad_sequence = self._get_pad_sequence(height, width)\n        augmenter = iaa.Pad(px=pad_sequence, keep_size=False, pad_mode=self.pad_mode)\n        return augmenter.augment_image(image)\n\n    def _get_pad_sequence(self, height, width):\n        pad_vertical = self._get_pad(height)\n        pad_horizontal = self._get_pad(width)\n        return get_crop_pad_sequence(pad_vertical, pad_horizontal)\n\n    def _get_pad(self, dim):\n        if dim % self.divisor == 0:\n            return 0\n        else:\n            return self.divisor - dim % self.divisor\n\n    def get_parameters(self):\n        return [self.divisor, self.pad_mode]\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/callbacks.py",
    "content": "from functools import partial\nimport os\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport torch\nimport neptune\nfrom torch.autograd import Variable\nfrom torch.optim.lr_scheduler import ExponentialLR\nfrom tempfile import TemporaryDirectory\n\nfrom steppy.base import Step, IdentityOperation\nfrom steppy.adapter import Adapter, E\nfrom toolkit.pytorch_transformers.utils import Averager, persist_torch_model\nfrom toolkit.pytorch_transformers.validation import score_model\n\nfrom .utils import (\n    get_logger,\n    sigmoid,\n    softmax,\n    make_apply_transformer,\n    read_masks,\n    get_list_of_image_predictions,\n)\nfrom .metrics import intersection_over_union, intersection_over_union_thresholds\nfrom .postprocessing import crop_image, resize_image, binarize\n\nlogger = get_logger()\n\nY_COLUMN = \"file_path_mask\"\nORIGINAL_SIZE = (101, 101)\nTHRESHOLD = 0.5\n\n\nclass Callback:\n    def __init__(self):\n        self.epoch_id = None\n        self.batch_id = None\n\n        self.model = None\n        self.optimizer = None\n        self.loss_function = None\n        self.output_names = None\n        self.validation_datagen = None\n        self.lr_scheduler = None\n\n    def set_params(self, transformer, validation_datagen, *args, **kwargs):\n        self.model = transformer.model\n        self.optimizer = transformer.optimizer\n        self.loss_function = transformer.loss_function\n        self.output_names = transformer.output_names\n        self.validation_datagen = validation_datagen\n        self.transformer = transformer\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_id = 0\n        self.batch_id = 0\n\n    def on_train_end(self, *args, **kwargs):\n        pass\n\n    def on_epoch_begin(self, *args, **kwargs):\n        pass\n\n    def on_epoch_end(self, *args, **kwargs):\n        self.epoch_id += 1\n\n    def training_break(self, *args, **kwargs):\n        return False\n\n    def on_batch_begin(self, *args, **kwargs):\n        pass\n\n    def on_batch_end(self, *args, **kwargs):\n        self.batch_id += 1\n\n    def get_validation_loss(self):\n        if self.epoch_id not in self.transformer.validation_loss.keys():\n            self.transformer.validation_loss[self.epoch_id] = score_model(\n                self.model, self.loss_function, self.validation_datagen\n            )\n        return self.transformer.validation_loss[self.epoch_id]\n\n\nclass CallbackList:\n    def __init__(self, callbacks=None):\n        if callbacks is None:\n            self.callbacks = []\n        elif isinstance(callbacks, Callback):\n            self.callbacks = [callbacks]\n        else:\n            self.callbacks = callbacks\n\n    def __len__(self):\n        return len(self.callbacks)\n\n    def set_params(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.set_params(*args, **kwargs)\n\n    def on_train_begin(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_train_begin(*args, **kwargs)\n\n    def on_train_end(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_train_end(*args, **kwargs)\n\n    def on_epoch_begin(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_epoch_begin(*args, **kwargs)\n\n    def on_epoch_end(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_epoch_end(*args, **kwargs)\n\n    def training_break(self, *args, **kwargs):\n        callback_out = [\n            callback.training_break(*args, **kwargs) for callback in self.callbacks\n        ]\n        return any(callback_out)\n\n    def on_batch_begin(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_batch_begin(*args, **kwargs)\n\n    def on_batch_end(self, *args, **kwargs):\n        for callback in self.callbacks:\n            callback.on_batch_end(*args, **kwargs)\n\n\nclass TrainingMonitor(Callback):\n    def __init__(self, epoch_every=None, batch_every=None):\n        super().__init__()\n        self.epoch_loss_averagers = {}\n        if epoch_every == 0:\n            self.epoch_every = False\n        else:\n            self.epoch_every = epoch_every\n        if batch_every == 0:\n            self.batch_every = False\n        else:\n            self.batch_every = batch_every\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_loss_averagers = {}\n        self.epoch_id = 0\n        self.batch_id = 0\n\n    def on_epoch_end(self, *args, **kwargs):\n        for name, averager in self.epoch_loss_averagers.items():\n            epoch_avg_loss = averager.value\n            averager.reset()\n            if self.epoch_every and ((self.epoch_id % self.epoch_every) == 0):\n                logger.info(\n                    \"epoch {0} {1}:     {2:.5f}\".format(\n                        self.epoch_id, name, epoch_avg_loss\n                    )\n                )\n        self.epoch_id += 1\n\n    def on_batch_end(self, metrics, *args, **kwargs):\n        for name, loss in metrics.items():\n            loss = loss.data.cpu().numpy()[0]\n            if name in self.epoch_loss_averagers.keys():\n                self.epoch_loss_averagers[name].send(loss)\n            else:\n                self.epoch_loss_averagers[name] = Averager()\n                self.epoch_loss_averagers[name].send(loss)\n\n            if self.batch_every and ((self.batch_id % self.batch_every) == 0):\n                logger.info(\n                    \"epoch {0} batch {1} {2}:     {3:.5f}\".format(\n                        self.epoch_id, self.batch_id, name, loss\n                    )\n                )\n        self.batch_id += 1\n\n\nclass ExponentialLRScheduler(Callback):\n    def __init__(self, gamma, epoch_every=1, batch_every=None):\n        super().__init__()\n        self.gamma = gamma\n        if epoch_every == 0:\n            self.epoch_every = False\n        else:\n            self.epoch_every = epoch_every\n        if batch_every == 0:\n            self.batch_every = False\n        else:\n            self.batch_every = batch_every\n\n    def set_params(self, transformer, validation_datagen, *args, **kwargs):\n        self.validation_datagen = validation_datagen\n        self.model = transformer.model\n        self.optimizer = transformer.optimizer\n        self.loss_function = transformer.loss_function\n        self.lr_scheduler = ExponentialLR(self.optimizer, self.gamma, last_epoch=-1)\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_id = 0\n        self.batch_id = 0\n        logger.info(\n            \"initial lr: {0}\".format(\n                self.optimizer.state_dict()[\"param_groups\"][0][\"initial_lr\"]\n            )\n        )\n\n    def on_epoch_end(self, *args, **kwargs):\n        if self.epoch_every and (((self.epoch_id + 1) % self.epoch_every) == 0):\n            self.lr_scheduler.step()\n            logger.info(\n                \"epoch {0} current lr: {1}\".format(\n                    self.epoch_id + 1,\n                    self.optimizer.state_dict()[\"param_groups\"][0][\"lr\"],\n                )\n            )\n        self.epoch_id += 1\n\n    def on_batch_end(self, *args, **kwargs):\n        if self.batch_every and ((self.batch_id % self.batch_every) == 0):\n            self.lr_scheduler.step()\n            logger.info(\n                \"epoch {0} batch {1} current lr: {2}\".format(\n                    self.epoch_id + 1,\n                    self.batch_id + 1,\n                    self.optimizer.state_dict()[\"param_groups\"][0][\"lr\"],\n                )\n            )\n        self.batch_id += 1\n\n\nclass ExperimentTiming(Callback):\n    def __init__(self, epoch_every=None, batch_every=None):\n        super().__init__()\n        if epoch_every == 0:\n            self.epoch_every = False\n        else:\n            self.epoch_every = epoch_every\n        if batch_every == 0:\n            self.batch_every = False\n        else:\n            self.batch_every = batch_every\n        self.batch_start = None\n        self.epoch_start = None\n        self.current_sum = None\n        self.current_mean = None\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_id = 0\n        self.batch_id = 0\n        logger.info(\"starting training...\")\n\n    def on_train_end(self, *args, **kwargs):\n        logger.info(\"training finished\")\n\n    def on_epoch_begin(self, *args, **kwargs):\n        if self.epoch_id > 0:\n            epoch_time = datetime.now() - self.epoch_start\n            if self.epoch_every:\n                if (self.epoch_id % self.epoch_every) == 0:\n                    logger.info(\n                        \"epoch {0} time {1}\".format(\n                            self.epoch_id - 1, str(epoch_time)[:-7]\n                        )\n                    )\n        self.epoch_start = datetime.now()\n        self.current_sum = timedelta()\n        self.current_mean = timedelta()\n        logger.info(\"epoch {0} ...\".format(self.epoch_id))\n\n    def on_batch_begin(self, *args, **kwargs):\n        if self.batch_id > 0:\n            current_delta = datetime.now() - self.batch_start\n            self.current_sum += current_delta\n            self.current_mean = self.current_sum / self.batch_id\n        if self.batch_every:\n            if self.batch_id > 0 and (((self.batch_id - 1) % self.batch_every) == 0):\n                logger.info(\n                    \"epoch {0} average batch time: {1}\".format(\n                        self.epoch_id, str(self.current_mean)[:-5]\n                    )\n                )\n        if self.batch_every:\n            if self.batch_id == 0 or self.batch_id % self.batch_every == 0:\n                logger.info(\n                    \"epoch {0} batch {1} ...\".format(self.epoch_id, self.batch_id)\n                )\n        self.batch_start = datetime.now()\n\n\nclass NeptuneMonitor(Callback):\n    def __init__(self, image_nr, image_resize, model_name):\n        super().__init__()\n        self.model_name = model_name\n        self.ctx = neptune.Context()\n        self.epoch_loss_averager = Averager()\n        self.image_nr = image_nr\n        self.image_resize = image_resize\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_loss_averagers = {}\n        self.epoch_id = 0\n        self.batch_id = 0\n\n    def on_batch_end(self, metrics, *args, **kwargs):\n        for name, loss in metrics.items():\n            loss = loss.data.cpu().numpy()[0]\n\n            if name in self.epoch_loss_averagers.keys():\n                self.epoch_loss_averagers[name].send(loss)\n            else:\n                self.epoch_loss_averagers[name] = Averager()\n                self.epoch_loss_averagers[name].send(loss)\n\n            self.ctx.channel_send(\n                \"{} batch {} loss\".format(self.model_name, name),\n                x=self.batch_id,\n                y=loss,\n            )\n\n        self.batch_id += 1\n\n    def on_epoch_end(self, *args, **kwargs):\n        self._send_numeric_channels()\n        self.epoch_id += 1\n\n    def _send_numeric_channels(self, *args, **kwargs):\n        for name, averager in self.epoch_loss_averagers.items():\n            epoch_avg_loss = averager.value\n            averager.reset()\n            self.ctx.channel_send(\n                \"{} epoch {} loss\".format(self.model_name, name),\n                x=self.epoch_id,\n                y=epoch_avg_loss,\n            )\n\n        self.model.eval()\n        val_loss = self.get_validation_loss()\n        self.model.train()\n        for name, loss in val_loss.items():\n            loss = loss.data.cpu().numpy()[0]\n            self.ctx.channel_send(\n                \"{} epoch_val {} loss\".format(self.model_name, name),\n                x=self.epoch_id,\n                y=loss,\n            )\n\n\nclass ValidationMonitor(Callback):\n    def __init__(self, data_dir, loader_mode, epoch_every=None, batch_every=None):\n        super().__init__()\n        if epoch_every == 0:\n            self.epoch_every = False\n        else:\n            self.epoch_every = epoch_every\n        if batch_every == 0:\n            self.batch_every = False\n        else:\n            self.batch_every = batch_every\n\n        self.data_dir = data_dir\n        self.validation_pipeline = postprocessing_pipeline_simplified\n        self.loader_mode = loader_mode\n        self.meta_valid = None\n        self.y_true = None\n        self.activation_func = None\n\n    def set_params(\n        self, transformer, validation_datagen, meta_valid=None, *args, **kwargs\n    ):\n        self.model = transformer.model\n        self.optimizer = transformer.optimizer\n        self.loss_function = transformer.loss_function\n        self.output_names = transformer.output_names\n        self.validation_datagen = validation_datagen\n        self.meta_valid = meta_valid\n        self.y_true = read_masks(self.meta_valid[Y_COLUMN].values)\n        self.activation_func = transformer.activation_func\n        self.transformer = transformer\n\n    def get_validation_loss(self):\n        return self._get_validation_loss()\n\n    def on_epoch_end(self, *args, **kwargs):\n        if self.epoch_every and ((self.epoch_id % self.epoch_every) == 0):\n            self.model.eval()\n            val_loss = self.get_validation_loss()\n            self.model.train()\n            for name, loss in val_loss.items():\n                loss = loss.data.cpu().numpy()[0]\n                logger.info(\n                    \"epoch {0} validation {1}:     {2:.5f}\".format(\n                        self.epoch_id, name, loss\n                    )\n                )\n        self.epoch_id += 1\n\n    def _get_validation_loss(self):\n        output, epoch_loss = self._transform()\n        y_pred = self._generate_prediction(output)\n\n        logger.info(\"Calculating IOU and IOUT Scores\")\n        iou_score = intersection_over_union(self.y_true, y_pred)\n        iout_score = intersection_over_union_thresholds(self.y_true, y_pred)\n        logger.info(\"IOU score on validation is {}\".format(iou_score))\n        logger.info(\"IOUT score on validation is {}\".format(iout_score))\n\n        if not self.transformer.validation_loss:\n            self.transformer.validation_loss = {}\n        self.transformer.validation_loss.setdefault(\n            self.epoch_id,\n            {\n                \"sum\": epoch_loss,\n                \"iou\": Variable(torch.Tensor([iou_score])),\n                \"iout\": Variable(torch.Tensor([iout_score])),\n            },\n        )\n        return self.transformer.validation_loss[self.epoch_id]\n\n    def _transform(self):\n        self.model.eval()\n        batch_gen, steps = self.validation_datagen\n        partial_batch_losses = []\n        outputs = {}\n        for batch_id, data in enumerate(batch_gen):\n            X = data[0]\n            targets_tensors = data[1:]\n\n            if torch.cuda.is_available():\n                X = Variable(X, volatile=True).cuda()\n                targets_var = []\n                for target_tensor in targets_tensors:\n                    targets_var.append(Variable(target_tensor, volatile=True).cuda())\n            else:\n                X = Variable(X, volatile=True)\n                targets_var = []\n                for target_tensor in targets_tensors:\n                    targets_var.append(Variable(target_tensor, volatile=True))\n\n            outputs_batch = self.model(X)\n            if len(self.output_names) == 1:\n                for (name, loss_function_one, weight), target in zip(\n                    self.loss_function, targets_var\n                ):\n                    loss_sum = loss_function_one(outputs_batch, target) * weight\n                outputs.setdefault(self.output_names[0], []).append(\n                    outputs_batch.data.cpu().numpy()\n                )\n            else:\n                batch_losses = []\n                for (name, loss_function_one, weight), output, target in zip(\n                    self.loss_function, outputs_batch, targets_var\n                ):\n                    loss = loss_function_one(output, target) * weight\n                    batch_losses.append(loss)\n                    partial_batch_losses.setdefault(name, []).append(loss)\n                    output_ = output.data.cpu().numpy()\n                    outputs.setdefault(name, []).append(output_)\n                loss_sum = sum(batch_losses)\n            partial_batch_losses.append(loss_sum)\n            if batch_id == steps:\n                break\n        self.model.train()\n        average_losses = sum(partial_batch_losses) / steps\n        outputs = {\n            \"{}_prediction\".format(name): get_list_of_image_predictions(outputs_)\n            for name, outputs_ in outputs.items()\n        }\n        for name, prediction in outputs.items():\n            if self.activation_func == \"softmax\":\n                outputs[name] = [\n                    softmax(single_prediction, axis=0)\n                    for single_prediction in prediction\n                ]\n            elif self.activation_func == \"sigmoid\":\n                outputs[name] = [sigmoid(np.squeeze(mask)) for mask in prediction]\n            else:\n                raise Exception(\"Only softmax and sigmoid activations are allowed\")\n\n        return outputs, average_losses\n\n    def _generate_prediction(self, outputs):\n        data = {\n            \"callback_input\": {\"meta\": self.meta_valid, \"meta_valid\": None},\n            \"unet_output\": {**outputs},\n        }\n        with TemporaryDirectory() as cache_dirpath:\n            pipeline = self.validation_pipeline(cache_dirpath, self.loader_mode)\n            output = pipeline.transform(data)\n        y_pred = output[\"y_pred\"]\n        return y_pred\n\n\nclass ModelCheckpoint(Callback):\n    def __init__(self, filepath, metric_name=\"sum\", epoch_every=1, minimize=True):\n        self.filepath = filepath\n        self.minimize = minimize\n        self.best_score = None\n\n        if epoch_every == 0:\n            self.epoch_every = False\n        else:\n            self.epoch_every = epoch_every\n\n        self.metric_name = metric_name\n\n    def on_train_begin(self, *args, **kwargs):\n        self.epoch_id = 0\n        self.batch_id = 0\n        os.makedirs(os.path.dirname(self.filepath), exist_ok=True)\n\n    def on_epoch_end(self, *args, **kwargs):\n        if self.epoch_every and ((self.epoch_id % self.epoch_every) == 0):\n            self.model.eval()\n            val_loss = self.get_validation_loss()\n            loss_sum = val_loss[self.metric_name]\n            loss_sum = loss_sum.data.cpu().numpy()[0]\n\n            self.model.train()\n\n            if self.best_score is None:\n                self.best_score = loss_sum\n\n            if (\n                (self.minimize and loss_sum < self.best_score)\n                or (not self.minimize and loss_sum > self.best_score)\n                or (self.epoch_id == 0)\n            ):\n                self.best_score = loss_sum\n                persist_torch_model(self.model, self.filepath)\n                logger.info(\n                    \"epoch {0} model saved to {1}\".format(self.epoch_id, self.filepath)\n                )\n\n        self.epoch_id += 1\n\n\nclass EarlyStopping(Callback):\n    def __init__(self, metric_name=\"sum\", patience=1000, minimize=True):\n        super().__init__()\n        self.patience = patience\n        self.minimize = minimize\n        self.best_score = None\n        self.epoch_since_best = 0\n        self._training_break = False\n        self.metric_name = metric_name\n\n    def training_break(self, *args, **kwargs):\n        return self._training_break\n\n    def on_epoch_end(self, *args, **kwargs):\n        self.model.eval()\n        val_loss = self.get_validation_loss()\n        loss_sum = val_loss[self.metric_name]\n        loss_sum = loss_sum.data.cpu().numpy()[0]\n\n        self.model.train()\n\n        if not self.best_score:\n            self.best_score = loss_sum\n\n        if (self.minimize and loss_sum < self.best_score) or (\n            not self.minimize and loss_sum > self.best_score\n        ):\n            self.best_score = loss_sum\n            self.epoch_since_best = 0\n        else:\n            self.epoch_since_best += 1\n\n        if self.epoch_since_best > self.patience:\n            self._training_break = True\n        self.epoch_id += 1\n\n\ndef postprocessing_pipeline_simplified(cache_dirpath, loader_mode):\n    if loader_mode == \"resize_and_pad\":\n        size_adjustment_function = partial(crop_image, target_size=ORIGINAL_SIZE)\n    elif loader_mode == \"resize\":\n        size_adjustment_function = partial(resize_image, target_size=ORIGINAL_SIZE)\n    else:\n        raise NotImplementedError\n\n    mask_resize = Step(\n        name=\"mask_resize\",\n        transformer=make_apply_transformer(\n            size_adjustment_function, output_name=\"resized_images\", apply_on=[\"images\"]\n        ),\n        input_data=[\"unet_output\"],\n        adapter=Adapter({\"images\": E(\"unet_output\", \"mask_prediction\")}),\n        experiment_directory=cache_dirpath,\n    )\n\n    binarizer = Step(\n        name=\"binarizer\",\n        transformer=make_apply_transformer(\n            partial(binarize, threshold=THRESHOLD),\n            output_name=\"binarized_images\",\n            apply_on=[\"images\"],\n        ),\n        input_steps=[mask_resize],\n        adapter=Adapter({\"images\": E(mask_resize.name, \"resized_images\")}),\n        experiment_directory=cache_dirpath,\n    )\n\n    output = Step(\n        name=\"output\",\n        transformer=IdentityOperation(),\n        input_steps=[binarizer],\n        adapter=Adapter({\"y_pred\": E(binarizer.name, \"binarized_images\")}),\n        experiment_directory=cache_dirpath,\n    )\n\n    return output\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/loaders.py",
    "content": "import numpy as np\nimport torch\nimport torchvision.transforms as transforms\nfrom PIL import Image\nfrom attrdict import AttrDict\nfrom sklearn.externals import joblib\nfrom torch.utils.data import Dataset, DataLoader\nfrom imgaug import augmenters as iaa\nfrom functools import partial\nfrom itertools import product\nimport multiprocessing as mp\nfrom scipy.stats import gmean\nfrom tqdm import tqdm\nimport json\nfrom steppy.base import BaseTransformer\n\nfrom .utils import from_pil, to_pil, binary_from_rle, ImgAug\n\n\nclass ImageReader(BaseTransformer):\n    def __init__(self, train_mode, x_columns, y_columns, target_format=\"png\"):\n        self.train_mode = train_mode\n        self.x_columns = x_columns\n        self.y_columns = y_columns\n        self.target_format = target_format\n\n    def transform(self, meta):\n        X_ = meta[self.x_columns].values\n\n        X = self.load_images(X_, filetype=\"png\", grayscale=False)\n        if self.train_mode:\n            y_ = meta[self.y_columns].values\n            y = self.load_images(y_, filetype=self.target_format, grayscale=True)\n        else:\n            y = None\n\n        return {\"X\": X, \"y\": y}\n\n    def load_images(self, filepaths, filetype, grayscale=False):\n        X = []\n        for i in range(filepaths.shape[1]):\n            column = filepaths[:, i]\n            X.append([])\n            for filepath in tqdm(column):\n                if filetype == \"png\":\n                    data = self.load_image(filepath, grayscale=grayscale)\n                elif filetype == \"json\":\n                    data = self.read_json(filepath)\n                else:\n                    raise Exception(\"files must be png or json\")\n                X[i].append(data)\n        return X\n\n    def load_image(self, img_filepath, grayscale):\n        image = Image.open(img_filepath, \"r\")\n        if not grayscale:\n            image = image.convert(\"RGB\")\n        else:\n            image = image.convert(\"L\").point(lambda x: 0 if x < 128 else 255, \"1\")\n        return image\n\n    def read_json(self, path):\n        with open(path, \"r\") as file:\n            data = json.load(file)\n        masks = [to_pil(binary_from_rle(rle)) for rle in data]\n        return masks\n\n\nclass XYSplit(BaseTransformer):\n    def __init__(self, train_mode, x_columns, y_columns):\n        self.train_mode = train_mode\n        super().__init__()\n        self.x_columns = x_columns\n        self.y_columns = y_columns\n        self.columns_to_get = None\n        self.target_columns = None\n\n    def transform(self, meta):\n        X = meta[self.x_columns[0]].values\n        if self.train_mode:\n            y = meta[self.y_columns[0]].values\n        else:\n            y = None\n\n        return {\"X\": X, \"y\": y}\n\n\nclass ImageSegmentationBaseDataset(Dataset):\n    def __init__(\n        self,\n        X,\n        y,\n        train_mode,\n        image_transform,\n        image_augment_with_target,\n        mask_transform,\n        image_augment,\n        image_source=\"memory\",\n    ):\n        super().__init__()\n        self.X = X\n        if y is not None:\n            self.y = y\n        else:\n            self.y = None\n\n        self.train_mode = train_mode\n        self.image_transform = image_transform\n        self.mask_transform = mask_transform\n        self.image_augment = (\n            image_augment if image_augment is not None else ImgAug(iaa.Noop())\n        )\n        self.image_augment_with_target = (\n            image_augment_with_target\n            if image_augment_with_target is not None\n            else ImgAug(iaa.Noop())\n        )\n\n        self.image_source = image_source\n\n    def __len__(self):\n        if self.image_source == \"memory\":\n            return len(self.X[0])\n        elif self.image_source == \"disk\":\n            return self.X.shape[0]\n\n    def __getitem__(self, index):\n        if self.image_source == \"memory\":\n            load_func = self.load_from_memory\n        elif self.image_source == \"disk\":\n            load_func = self.load_from_disk\n        else:\n            raise NotImplementedError(\"Possible loading options: 'memory' and 'disk'!\")\n\n        Xi = load_func(self.X, index, filetype=\"png\", grayscale=False)\n\n        if self.y is not None:\n            Mi = self.load_target(self.y, index, load_func)\n            Xi, *Mi = from_pil(Xi, *Mi)\n            Xi, *Mi = self.image_augment_with_target(Xi, *Mi)\n            Xi = self.image_augment(Xi)\n            Xi, *Mi = to_pil(Xi, *Mi)\n\n            if self.mask_transform is not None:\n                Mi = [self.mask_transform(m) for m in Mi]\n\n            if self.image_transform is not None:\n                Xi = self.image_transform(Xi)\n\n            Mi = torch.cat(Mi, dim=0)\n            return Xi, Mi\n        else:\n            Xi = from_pil(Xi)\n            Xi = self.image_augment(Xi)\n            Xi = to_pil(Xi)\n\n            if self.image_transform is not None:\n                Xi = self.image_transform(Xi)\n            return Xi\n\n    def load_from_memory(self, data_source, index, **kwargs):\n        return data_source[0][index]\n\n    def load_from_disk(self, data_source, index, *, filetype, grayscale=False):\n        if filetype == \"png\":\n            img_filepath = data_source[index]\n            return self.load_image(img_filepath, grayscale=grayscale)\n        elif filetype == \"json\":\n            json_filepath = data_source[index]\n            return self.read_json(json_filepath)\n        else:\n            raise Exception(\"files must be png or json\")\n\n    def load_image(self, img_filepath, grayscale):\n        image = Image.open(img_filepath, \"r\")\n        if not grayscale:\n            image = image.convert(\"RGB\")\n        else:\n            image = image.convert(\"L\").point(lambda x: 0 if x < 128 else 1)\n        return image\n\n    def read_json(self, path):\n        with open(path, \"r\") as file:\n            data = json.load(file)\n        masks = [to_pil(binary_from_rle(rle)) for rle in data]\n        return masks\n\n    def load_target(self, data_source, index, load_func):\n        raise NotImplementedError\n\n\nclass ImageSegmentationJsonDataset(ImageSegmentationBaseDataset):\n    def load_target(self, data_source, index, load_func):\n        Mi = load_func(data_source, index, filetype=\"json\")\n        return Mi\n\n\nclass ImageSegmentationPngDataset(ImageSegmentationBaseDataset):\n    def load_target(self, data_source, index, load_func):\n        Mi = load_func(data_source, index, filetype=\"png\", grayscale=True)\n        Mi = from_pil(Mi)\n        target = [to_pil(Mi == class_nr) for class_nr in [0, 1]]\n        return target\n\n\nclass ImageSegmentationTTADataset(ImageSegmentationBaseDataset):\n    def __init__(self, tta_params, tta_transform, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.tta_params = tta_params\n        self.tta_transform = tta_transform\n\n    def __getitem__(self, index):\n        if self.image_source == \"memory\":\n            load_func = self.load_from_memory\n        elif self.image_source == \"disk\":\n            load_func = self.load_from_disk\n        else:\n            raise NotImplementedError(\"Possible loading options: 'memory' and 'disk'!\")\n\n        Xi = load_func(self.X, index, filetype=\"png\", grayscale=False)\n        Xi = from_pil(Xi)\n\n        if self.image_augment is not None:\n            Xi = self.image_augment(Xi)\n\n        if self.tta_params is not None:\n            tta_transform_specs = self.tta_params[index]\n            Xi = self.tta_transform(Xi, tta_transform_specs)\n        Xi = to_pil(Xi)\n\n        if self.image_transform is not None:\n            Xi = self.image_transform(Xi)\n\n        return Xi\n\n\nclass ImageSegmentationLoaderBasic(BaseTransformer):\n    def __init__(self, train_mode, loader_params, dataset_params, augmentation_params):\n        super().__init__()\n        self.train_mode = train_mode\n        self.loader_params = AttrDict(loader_params)\n        self.dataset_params = AttrDict(dataset_params)\n        self.augmentation_params = AttrDict(augmentation_params)\n\n        self.mask_transform = None\n        self.image_transform = None\n\n        self.image_augment_train = None\n        self.image_augment_inference = None\n        self.image_augment_with_target_train = None\n        self.image_augment_with_target_inference = None\n\n        self.dataset = None\n\n    def transform(self, X, y, X_valid=None, y_valid=None, **kwargs):\n        if self.train_mode and y is not None:\n            flow, steps = self.get_datagen(X, y, True, self.loader_params.training)\n        else:\n            flow, steps = self.get_datagen(X, None, False, self.loader_params.inference)\n\n        if X_valid is not None and y_valid is not None:\n            valid_flow, valid_steps = self.get_datagen(\n                X_valid, y_valid, False, self.loader_params.inference\n            )\n        else:\n            valid_flow = None\n            valid_steps = None\n\n        return {\n            \"datagen\": (flow, steps),\n            \"validation_datagen\": (valid_flow, valid_steps),\n        }\n\n    def get_datagen(self, X, y, train_mode, loader_params):\n        if train_mode:\n            dataset = self.dataset(\n                X,\n                y,\n                train_mode=True,\n                image_augment=self.image_augment_train,\n                image_augment_with_target=self.image_augment_with_target_train,\n                mask_transform=self.mask_transform,\n                image_transform=self.image_transform,\n                image_source=self.dataset_params.image_source,\n            )\n        else:\n            dataset = self.dataset(\n                X,\n                y,\n                train_mode=False,\n                image_augment=self.image_augment_inference,\n                image_augment_with_target=self.image_augment_with_target_inference,\n                mask_transform=self.mask_transform,\n                image_transform=self.image_transform,\n                image_source=self.dataset_params.image_source,\n            )\n\n        datagen = DataLoader(dataset, **loader_params)\n        steps = len(datagen)\n        return datagen, steps\n\n    def load(self, filepath):\n        params = joblib.load(filepath)\n        self.loader_params = params[\"loader_params\"]\n        return self\n\n    def save(self, filepath):\n        params = {\"loader_params\": self.loader_params}\n        joblib.dump(params, filepath)\n\n\nclass ImageSegmentationLoaderBasicTTA(ImageSegmentationLoaderBasic):\n    def __init__(self, loader_params, dataset_params, augmentation_params):\n        self.loader_params = AttrDict(loader_params)\n        self.dataset_params = AttrDict(dataset_params)\n        self.augmentation_params = AttrDict(augmentation_params)\n\n        self.mask_transform = None\n        self.image_transform = None\n\n        self.image_augment_train = None\n        self.image_augment_inference = None\n        self.image_augment_with_target_train = None\n        self.image_augment_with_target_inference = None\n\n        self.dataset = None\n\n    def transform(self, X, tta_params, **kwargs):\n        flow, steps = self.get_datagen(X, tta_params, self.loader_params.inference)\n        valid_flow = None\n        valid_steps = None\n        return {\n            \"datagen\": (flow, steps),\n            \"validation_datagen\": (valid_flow, valid_steps),\n        }\n\n    def get_datagen(self, X, tta_params, loader_params):\n        dataset = self.dataset(\n            tta_params=tta_params,\n            tta_transform=self.augmentation_params.tta_transform,\n            X=X,\n            y=None,\n            train_mode=False,\n            image_augment=self.image_augment_inference,\n            image_augment_with_target=self.image_augment_with_target_inference,\n            mask_transform=self.mask_transform,\n            image_transform=self.image_transform,\n            image_source=self.dataset_params.image_source,\n        )\n\n        datagen = DataLoader(dataset, **loader_params)\n        steps = len(datagen)\n        return datagen, steps\n\n\nclass ImageSegmentationLoaderResizePad(ImageSegmentationLoaderBasic):\n    def __init__(self, train_mode, loader_params, dataset_params, augmentation_params):\n        super().__init__(train_mode, loader_params, dataset_params, augmentation_params)\n\n        self.image_transform = transforms.Compose(\n            [\n                transforms.Grayscale(num_output_channels=3),\n                transforms.ToTensor(),\n                transforms.Normalize(\n                    mean=self.dataset_params.MEAN, std=self.dataset_params.STD\n                ),\n            ]\n        )\n        self.mask_transform = transforms.Compose(\n            [transforms.Lambda(to_array), transforms.Lambda(to_tensor)]\n        )\n\n        self.image_augment_train = ImgAug(\n            self.augmentation_params[\"image_augment_train\"]\n        )\n        self.image_augment_with_target_train = ImgAug(\n            self.augmentation_params[\"image_augment_with_target_train\"]\n        )\n        self.image_augment_inference = ImgAug(\n            self.augmentation_params[\"image_augment_inference\"]\n        )\n        self.image_augment_with_target_inference = ImgAug(\n            self.augmentation_params[\"image_augment_with_target_inference\"]\n        )\n\n        if self.dataset_params.target_format == \"png\":\n            self.dataset = ImageSegmentationPngDataset\n        elif self.dataset_params.target_format == \"json\":\n            self.dataset = ImageSegmentationJsonDataset\n        else:\n            raise Exception(\"files must be png or json\")\n\n\nclass ImageSegmentationLoaderPadTTA(ImageSegmentationLoaderBasicTTA):\n    def __init__(self, loader_params, dataset_params, augmentation_params):\n        super().__init__(loader_params, dataset_params, augmentation_params)\n\n        self.image_transform = transforms.Compose(\n            [\n                transforms.Grayscale(num_output_channels=3),\n                transforms.ToTensor(),\n                transforms.Normalize(\n                    mean=self.dataset_params.MEAN, std=self.dataset_params.STD\n                ),\n            ]\n        )\n        self.mask_transform = transforms.Compose(\n            [transforms.Lambda(to_array), transforms.Lambda(to_tensor)]\n        )\n\n        self.image_augment_inference = ImgAug(\n            self.augmentation_params[\"image_augment_inference\"]\n        )\n        self.image_augment_with_target_inference = ImgAug(\n            self.augmentation_params[\"image_augment_with_target_inference\"]\n        )\n        self.dataset = ImageSegmentationTTADataset\n\n\nclass ImageSegmentationLoaderResize(ImageSegmentationLoaderBasic):\n    def __init__(self, train_mode, loader_params, dataset_params, augmentation_params):\n        super().__init__(train_mode, loader_params, dataset_params, augmentation_params)\n\n        self.image_transform = transforms.Compose(\n            [\n                transforms.Resize((self.dataset_params.h, self.dataset_params.w)),\n                transforms.Grayscale(num_output_channels=3),\n                transforms.ToTensor(),\n                transforms.Normalize(\n                    mean=self.dataset_params.MEAN, std=self.dataset_params.STD\n                ),\n            ]\n        )\n        self.mask_transform = transforms.Compose(\n            [\n                transforms.Resize(\n                    (self.dataset_params.h, self.dataset_params.w), interpolation=0\n                ),\n                transforms.Lambda(to_array),\n                transforms.Lambda(to_tensor),\n            ]\n        )\n\n        self.image_augment_train = ImgAug(\n            self.augmentation_params[\"image_augment_train\"]\n        )\n        self.image_augment_with_target_train = ImgAug(\n            self.augmentation_params[\"image_augment_with_target_train\"]\n        )\n\n        if self.dataset_params.target_format == \"png\":\n            self.dataset = ImageSegmentationPngDataset\n        elif self.dataset_params.target_format == \"json\":\n            self.dataset = ImageSegmentationJsonDataset\n        else:\n            raise Exception(\"files must be png or json\")\n\n\nclass ImageSegmentationLoaderResizeTTA(ImageSegmentationLoaderBasicTTA):\n    def __init__(self, loader_params, dataset_params, augmentation_params):\n        super().__init__(loader_params, dataset_params, augmentation_params)\n\n        self.image_transform = transforms.Compose(\n            [\n                transforms.Resize((self.dataset_params.h, self.dataset_params.w)),\n                transforms.Grayscale(num_output_channels=3),\n                transforms.ToTensor(),\n                transforms.Normalize(\n                    mean=self.dataset_params.MEAN, std=self.dataset_params.STD\n                ),\n            ]\n        )\n        self.mask_transform = transforms.Compose(\n            [\n                transforms.Resize(\n                    (self.dataset_params.h, self.dataset_params.w), interpolation=0\n                ),\n                transforms.Lambda(to_array),\n                transforms.Lambda(to_tensor),\n            ]\n        )\n\n        self.dataset = ImageSegmentationTTADataset\n\n\nclass MetaTestTimeAugmentationGenerator(BaseTransformer):\n    def __init__(self, **kwargs):\n        self.tta_transformations = AttrDict(kwargs)\n\n    def transform(self, X, **kwargs):\n        X_tta_rows, tta_params, img_ids = [], [], []\n        for i in range(len(X)):\n            rows, params, ids = self._get_tta_data(i, X[i])\n            tta_params.extend(params)\n            img_ids.extend(ids)\n            X_tta_rows.extend(rows)\n        X_tta = np.array(X_tta_rows)\n        return {\"X_tta\": X_tta, \"tta_params\": tta_params, \"img_ids\": img_ids}\n\n    def _get_tta_data(self, i, row):\n        original_specs = {\n            \"ud_flip\": False,\n            \"lr_flip\": False,\n            \"rotation\": 0,\n            \"color_shift\": False,\n        }\n        tta_specs = [original_specs]\n\n        ud_options = [True, False] if self.tta_transformations.flip_ud else [False]\n        lr_options = [True, False] if self.tta_transformations.flip_lr else [False]\n        rot_options = [0, 90, 180, 270] if self.tta_transformations.rotation else [0]\n        if self.tta_transformations.color_shift_runs:\n            color_shift_options = list(\n                range(1, self.tta_transformations.color_shift_runs + 1, 1)\n            )\n        else:\n            color_shift_options = [False]\n\n        for ud, lr, rot, color in product(\n            ud_options, lr_options, rot_options, color_shift_options\n        ):\n            if ud is False and lr is False and rot == 0 and color is False:\n                continue\n            else:\n                tta_specs.append(\n                    {\n                        \"ud_flip\": ud,\n                        \"lr_flip\": lr,\n                        \"rotation\": rot,\n                        \"color_shift\": color,\n                    }\n                )\n\n        img_ids = [i] * len(tta_specs)\n        X_rows = [row] * len(tta_specs)\n        return X_rows, tta_specs, img_ids\n\n\nclass TestTimeAugmentationGenerator(BaseTransformer):\n    def __init__(self, **kwargs):\n        self.tta_transformations = AttrDict(kwargs)\n\n    def transform(self, X, **kwargs):\n        X_tta, tta_params, img_ids = [], [], []\n        X = X[0]\n        for i in range(len(X)):\n            images, params, ids = self._get_tta_data(i, X[i])\n            tta_params.extend(params)\n            img_ids.extend(ids)\n            X_tta.extend(images)\n        return {\"X_tta\": [X_tta], \"tta_params\": tta_params, \"img_ids\": img_ids}\n\n    def _get_tta_data(self, i, row):\n        original_specs = {\n            \"ud_flip\": False,\n            \"lr_flip\": False,\n            \"rotation\": 0,\n            \"color_shift\": False,\n        }\n        tta_specs = [original_specs]\n\n        ud_options = [True, False] if self.tta_transformations.flip_ud else [False]\n        lr_options = [True, False] if self.tta_transformations.flip_lr else [False]\n        rot_options = [0, 90, 180, 270] if self.tta_transformations.rotation else [0]\n        if self.tta_transformations.color_shift_runs:\n            color_shift_options = list(\n                range(1, self.tta_transformations.color_shift_runs + 1, 1)\n            )\n        else:\n            color_shift_options = [False]\n\n        for ud, lr, rot, color in product(\n            ud_options, lr_options, rot_options, color_shift_options\n        ):\n            if ud is False and lr is False and rot == 0 and color is False:\n                continue\n            else:\n                tta_specs.append(\n                    {\n                        \"ud_flip\": ud,\n                        \"lr_flip\": lr,\n                        \"rotation\": rot,\n                        \"color_shift\": color,\n                    }\n                )\n\n        img_ids = [i] * len(tta_specs)\n        X_rows = [row] * len(tta_specs)\n        return X_rows, tta_specs, img_ids\n\n\nclass TestTimeAugmentationAggregator(BaseTransformer):\n    def __init__(self, tta_inverse_transform, method, nthreads):\n        self.tta_inverse_transform = tta_inverse_transform\n        self.method = method\n        self.nthreads = nthreads\n\n    @property\n    def agg_method(self):\n        methods = {\"mean\": np.mean, \"max\": np.max, \"min\": np.min, \"gmean\": gmean}\n        return partial(methods[self.method], axis=-1)\n\n    def transform(self, images, tta_params, img_ids, **kwargs):\n        _aggregate_augmentations = partial(\n            aggregate_augmentations,\n            images=images,\n            tta_params=tta_params,\n            tta_inverse_transform=self.tta_inverse_transform,\n            img_ids=img_ids,\n            agg_method=self.agg_method,\n        )\n        unique_img_ids = set(img_ids)\n        threads = min(self.nthreads, len(unique_img_ids))\n        with mp.pool.ThreadPool(threads) as executor:\n            averages_images = executor.map(_aggregate_augmentations, unique_img_ids)\n        return {\"aggregated_prediction\": averages_images}\n\n\ndef aggregate_augmentations(\n    img_id, images, tta_params, tta_inverse_transform, img_ids, agg_method\n):\n    tta_predictions_for_id = []\n    for image, tta_param, ids in zip(images, tta_params, img_ids):\n        if ids == img_id:\n            tta_prediction = tta_inverse_transform(image, tta_param)\n            tta_predictions_for_id.append(tta_prediction)\n        else:\n            continue\n    tta_averaged = agg_method(np.stack(tta_predictions_for_id, axis=-1))\n    return tta_averaged\n\n\ndef to_array(x):\n    x_ = x.convert(\"L\")  # convert image to monochrome\n    x_ = np.array(x_)\n    x_ = x_.astype(np.float32)\n    return x_\n\n\ndef to_tensor(x):\n    x_ = np.expand_dims(x, axis=0)\n    x_ = torch.from_numpy(x_)\n    return x_\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/metrics.py",
    "content": "import numpy as np\nfrom tqdm import tqdm\nfrom pycocotools import mask as cocomask\n\nfrom .utils import get_segmentations\n\n\ndef iou(gt, pred):\n    gt[gt > 0] = 1.0\n    pred[pred > 0] = 1.0\n    intersection = gt * pred\n    union = gt + pred\n    union[union > 0] = 1.0\n    intersection = np.sum(intersection)\n    union = np.sum(union)\n    if union == 0:\n        union = 1e-09\n    return intersection / union\n\n\ndef compute_ious(gt, predictions):\n    gt_ = get_segmentations(gt)\n    predictions_ = get_segmentations(predictions)\n\n    if len(gt_) == 0 and len(predictions_) == 0:\n        return np.ones((1, 1))\n    elif len(gt_) != 0 and len(predictions_) == 0:\n        return np.zeros((1, 1))\n    else:\n        iscrowd = [0 for _ in predictions_]\n        ious = cocomask.iou(gt_, predictions_, iscrowd)\n        if not np.array(ious).size:\n            ious = np.zeros((1, 1))\n        return ious\n\n\ndef compute_precision_at(ious, threshold):\n    mx1 = np.max(ious, axis=0)\n    mx2 = np.max(ious, axis=1)\n    tp = np.sum(mx2 >= threshold)\n    fp = np.sum(mx2 < threshold)\n    fn = np.sum(mx1 < threshold)\n    return float(tp) / (tp + fp + fn)\n\n\ndef compute_eval_metric(gt, predictions):\n    thresholds = [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95]\n    ious = compute_ious(gt, predictions)\n    precisions = [compute_precision_at(ious, th) for th in thresholds]\n    return sum(precisions) / len(precisions)\n\n\ndef intersection_over_union(y_true, y_pred):\n    ious = []\n    for y_t, y_p in tqdm(list(zip(y_true, y_pred))):\n        iou = compute_ious(y_t, y_p)\n        iou_mean = 1.0 * np.sum(iou) / len(iou)\n        ious.append(iou_mean)\n    return np.mean(ious)\n\n\ndef intersection_over_union_thresholds(y_true, y_pred):\n    iouts = []\n    for y_t, y_p in tqdm(list(zip(y_true, y_pred))):\n        iouts.append(compute_eval_metric(y_t, y_p))\n    return np.mean(iouts)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/models.py",
    "content": "import numpy as np\nimport torch\nimport torch.optim as optim\nfrom torch.autograd import Variable\nimport torch.nn as nn\nfrom functools import partial\nfrom toolkit.pytorch_transformers.models import Model\nimport torch.nn.functional as F\n\nfrom .utils import sigmoid, softmax, get_list_of_image_predictions\nfrom . import callbacks as cbk\nfrom .unet_models import (\n    AlbuNet,\n    UNet11,\n    UNetVGG16,\n    UNetResNet,\n    UNetPNASNet,\n    UNetResNext,\n    UNetResNet_wo_pool,\n    UNetResNext_wo_pool,\n    UNetResNext_wo_pool_hyper,\n    UNetResNext50,\n    UNetResNetAttention,\n)  # , TernausNetV2\n\nPRETRAINED_NETWORKS = {\n    \"VGG11\": {\n        \"model\": UNet11,\n        \"model_config\": {\"pretrained\": True},\n        \"init_weights\": False,\n    },\n    \"VGG16\": {\n        \"model\": UNetVGG16,\n        \"model_config\": {\"pretrained\": True, \"dropout_2d\": 0.0, \"is_deconv\": True},\n        \"init_weights\": False,\n    },\n    \"AlbuNet\": {\n        \"model\": AlbuNet,\n        \"model_config\": {\"pretrained\": True, \"is_deconv\": True},\n        \"init_weights\": False,\n    },\n    \"ResNet34\": {\n        \"model\": UNetResNet,\n        \"model_config\": {\n            \"encoder_depth\": 34,\n            \"num_filters\": 32,\n            \"dropout_2d\": 0.0,\n            \"pretrained\": True,\n            \"is_deconv\": True,\n        },\n        \"init_weights\": False,\n    },\n    \"ResNet101\": {\n        \"model\": UNetResNet,\n        \"model_config\": {\n            \"encoder_depth\": 101,\n            \"num_filters\": 32,\n            \"dropout_2d\": 0.0,\n            \"pretrained\": True,\n            \"is_deconv\": True,\n        },\n        \"init_weights\": False,\n    },\n    \"ResNet152\": {\n        \"model\": UNetResNetAttention,\n        \"model_config\": {\n            \"encoder_depth\": 152,\n            \"num_filters\": 32,\n            \"dropout_2d\": 0.0,\n            \"pretrained\": True,\n            \"is_deconv\": True,\n        },\n        \"init_weights\": False,\n    },\n    \"UNetPNASNet\": {\n        \"model\": UNetPNASNet,\n        \"model_config\": {\n            \"encoder_depth\": 152,\n            \"num_filters\": 32,\n            \"dropout_2d\": 0.2,\n            \"pretrained\": True,\n            \"is_deconv\": True,\n        },\n        \"init_weights\": False,\n    },\n}\n\n\nclass PyTorchUNet(Model):\n    def __init__(self, architecture_config, training_config, callbacks_config):\n        super().__init__(architecture_config, training_config, callbacks_config)\n        self.activation_func = self.architecture_config[\"model_params\"][\"activation\"]\n        self.set_model()\n        self.set_loss()\n        self.weight_regularization = weight_regularization\n        self.optimizer = optim.Adam(\n            self.weight_regularization(\n                self.model, **architecture_config[\"regularizer_params\"]\n            ),\n            **architecture_config[\"optimizer_params\"]\n        )\n        self.callbacks = callbacks_unet(self.callbacks_config)\n\n    def fit(self, datagen, validation_datagen=None, meta_valid=None):\n        self._initialize_model_weights()\n\n        if not isinstance(self.model, nn.DataParallel):\n            self.model = nn.DataParallel(self.model)\n\n        if torch.cuda.is_available():\n            self.model = self.model.cuda()\n\n        self.callbacks.set_params(\n            self, validation_datagen=validation_datagen, meta_valid=meta_valid\n        )\n        self.callbacks.on_train_begin()\n\n        batch_gen, steps = datagen\n        for epoch_id in range(self.training_config[\"epochs\"]):\n            self.callbacks.on_epoch_begin()\n            for batch_id, data in enumerate(batch_gen):\n                self.callbacks.on_batch_begin()\n                metrics = self._fit_loop(data)\n                self.callbacks.on_batch_end(metrics=metrics)\n                if batch_id == steps:\n                    break\n            self.callbacks.on_epoch_end()\n            if self.callbacks.training_break():\n                break\n        self.callbacks.on_train_end()\n        return self\n\n    def _fit_loop(self, data):\n        X = data[0]\n        targets_tensors = data[1:]\n\n        if torch.cuda.is_available():\n            X = Variable(X).cuda()\n            targets_var = []\n            for target_tensor in targets_tensors:\n                targets_var.append(Variable(target_tensor).cuda())\n        else:\n            X = Variable(X)\n            targets_var = []\n            for target_tensor in targets_tensors:\n                targets_var.append(Variable(target_tensor))\n\n        self.optimizer.zero_grad()\n        outputs_batch = self.model(X)\n        partial_batch_losses = {}\n\n        if len(self.output_names) == 1:\n            for (name, loss_function, weight), target in zip(\n                self.loss_function, targets_var\n            ):\n                batch_loss = loss_function(outputs_batch, target) * weight\n        else:\n            for (name, loss_function, weight), output, target in zip(\n                self.loss_function, outputs_batch, targets_var\n            ):\n                partial_batch_losses[name] = loss_function(output, target) * weight\n            batch_loss = sum(partial_batch_losses.values())\n        partial_batch_losses[\"sum\"] = batch_loss\n        batch_loss.backward()\n        self.optimizer.step()\n\n        return partial_batch_losses\n\n    def transform(self, datagen, validation_datagen=None, *args, **kwargs):\n        outputs = self._transform(datagen, validation_datagen)\n        for name, prediction in outputs.items():\n            if self.activation_func == \"softmax\":\n                outputs[name] = [\n                    softmax(single_prediction, axis=0)\n                    for single_prediction in prediction\n                ]\n            elif self.activation_func == \"sigmoid\":\n                outputs[name] = [sigmoid(np.squeeze(mask)) for mask in prediction]\n            else:\n                raise Exception(\"Only softmax and sigmoid activations are allowed\")\n        return outputs\n\n    def _transform(self, datagen, validation_datagen=None, **kwargs):\n        self.model.eval()\n\n        batch_gen, steps = datagen\n        outputs = {}\n        for batch_id, data in enumerate(batch_gen):\n            if isinstance(data, list):\n                X = data[0]\n            else:\n                X = data\n\n            if torch.cuda.is_available():\n                X = Variable(X, volatile=True).cuda()\n            else:\n                X = Variable(X, volatile=True)\n            outputs_batch = self.model(X)\n            if len(self.output_names) == 1:\n                outputs.setdefault(self.output_names[0], []).append(\n                    outputs_batch.data.cpu().numpy()\n                )\n            else:\n                for name, output in zip(self.output_names, outputs_batch):\n                    output_ = output.data.cpu().numpy()\n                    outputs.setdefault(name, []).append(output_)\n            if batch_id == steps:\n                break\n        self.model.train()\n        outputs = {\n            \"{}_prediction\".format(name): get_list_of_image_predictions(outputs_)\n            for name, outputs_ in outputs.items()\n        }\n        return outputs\n\n    def set_model(self):\n        encoder = self.architecture_config[\"model_params\"][\"encoder\"]\n        config = PRETRAINED_NETWORKS[encoder]\n        self.model = config[\"model\"](\n            num_classes=self.architecture_config[\"model_params\"][\"out_channels\"],\n            **config[\"model_config\"]\n        )\n        self._initialize_model_weights = lambda: None\n\n    def set_loss(self):\n        if self.activation_func == \"softmax\":\n            loss_function = partial(\n                mixed_dice_cross_entropy_loss,\n                dice_loss=multiclass_dice_loss,\n                cross_entropy_loss=nn.CrossEntropyLoss(),\n                dice_activation=\"softmax\",\n                dice_weight=self.architecture_config[\"model_params\"][\"dice_weight\"],\n                cross_entropy_weight=self.architecture_config[\"model_params\"][\n                    \"bce_weight\"\n                ],\n            )\n        elif self.activation_func == \"sigmoid\":\n            \"\"\"\n            loss_function = partial(mixed_dice_bce_loss,\n                                    dice_loss=multiclass_dice_loss,\n                                    bce_loss=nn.BCEWithLogitsLoss(),\n                                    dice_activation='sigmoid',\n                                    dice_weight=self.architecture_config['model_params']['dice_weight'],\n                                    bce_weight=self.architecture_config['model_params']['bce_weight']\n                                    )\n\t    \"\"\"\n            loss_function = designed_loss\n\n        else:\n            raise Exception(\"Only softmax and sigmoid activations are allowed\")\n        self.loss_function = [(\"mask\", loss_function, 1.0)]\n\n    def load(self, filepath):\n        self.model.eval()\n\n        if not isinstance(self.model, nn.DataParallel):\n            self.model = nn.DataParallel(self.model)\n\n        if torch.cuda.is_available():\n            self.model.cpu()\n            self.model.load_state_dict(torch.load(filepath))\n            self.model = self.model.cuda()\n        else:\n            self.model.load_state_dict(\n                torch.load(filepath, map_location=lambda storage, loc: storage)\n            )\n        return self\n\n\ndef designed_loss(output, target):\n    target = target.data\n    return lovasz_hinge(output, target)\n    # return mixed_dice_bce_loss(output, target)\n\n\ndef mean(l, ignore_nan=False, empty=0):\n    \"\"\"\n    nanmean compatible with generators.\n    \"\"\"\n    l = iter(l)\n    if ignore_nan:\n        l = ifilterfalse(np.isnan, l)\n    try:\n        n = 1\n        acc = next(l)\n    except StopIteration:\n        if empty == \"raise\":\n            raise ValueError(\"Empty mean\")\n        return empty\n    for n, v in enumerate(l, 2):\n        acc += v\n    if n == 1:\n        return acc\n    return acc / n\n\n\ndef lovasz_grad(gt_sorted):\n    \"\"\"\n    Computes gradient of the Lovasz extension w.r.t sorted errors\n    See Alg. 1 in paper\n    \"\"\"\n    p = len(gt_sorted)\n    gts = gt_sorted.sum()\n    intersection = gts - gt_sorted.float().cumsum(0)\n    union = gts + (1 - gt_sorted).float().cumsum(0)\n    jaccard = 1.0 - intersection / union\n    if p > 1:  # cover 1-pixel case\n        jaccard[1:p] = jaccard[1:p] - jaccard[0:-1]\n    return jaccard\n\n\ndef lovasz_hinge(logits, labels, per_image=True, ignore=None):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      per_image: compute the loss per image instead of per batch\n      ignore: void class id\n    \"\"\"\n    if per_image:\n        loss = mean(\n            lovasz_hinge_flat(\n                *flatten_binary_scores(log.unsqueeze(0), lab.unsqueeze(0), ignore)\n            )\n            for log, lab in zip(logits, labels)\n        )\n    else:\n        loss = lovasz_hinge_flat(*flatten_binary_scores(logits, labels, ignore))\n    return loss\n\n\ndef lovasz_hinge_flat(logits, labels):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [P] Variable, logits at each prediction (between -\\infty and +\\infty)\n      labels: [P] Tensor, binary ground truth labels (0 or 1)\n      ignore: label to ignore\n    \"\"\"\n    if len(labels) == 0:\n        # only void pixels, the gradients should be 0\n        return logits.sum() * 0.0\n    signs = 2.0 * labels.float() - 1.0\n    # print('signs \\n', signs)\n    # print('\\n logits', logits)\n    errors = 1.0 - logits * Variable(signs)\n    errors_sorted, perm = torch.sort(errors, dim=0, descending=True)\n    perm = perm.data\n    gt_sorted = labels[perm]\n    grad = lovasz_grad(gt_sorted)\n    loss = torch.dot(F.elu(errors_sorted), Variable(grad))\n    return loss\n\n\ndef flatten_binary_scores(scores, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch (binary case)\n    Remove labels equal to 'ignore'\n    \"\"\"\n    scores = scores.view(-1)\n    labels = labels.view(-1)\n    if ignore is None:\n        return scores, labels\n    valid = labels != ignore\n    vscores = scores[valid]\n    vlabels = labels[valid]\n    return vscores, vlabels\n\n\ndef weight_regularization(model, regularize, weight_decay_conv2d):\n    if regularize:\n        parameter_list = [\n            {\n                \"params\": filter(lambda p: p.requires_grad, model.parameters()),\n                \"weight_decay\": weight_decay_conv2d,\n            }\n        ]\n    else:\n        parameter_list = [filter(lambda p: p.requires_grad, model.parameters())]\n    return parameter_list\n\n\ndef callbacks_unet(callbacks_config):\n    experiment_timing = cbk.ExperimentTiming(**callbacks_config[\"experiment_timing\"])\n    model_checkpoints = cbk.ModelCheckpoint(**callbacks_config[\"model_checkpoint\"])\n    lr_scheduler = cbk.ExponentialLRScheduler(**callbacks_config[\"lr_scheduler\"])\n    training_monitor = cbk.TrainingMonitor(**callbacks_config[\"training_monitor\"])\n    validation_monitor = cbk.ValidationMonitor(**callbacks_config[\"validation_monitor\"])\n    neptune_monitor = cbk.NeptuneMonitor(**callbacks_config[\"neptune_monitor\"])\n    early_stopping = cbk.EarlyStopping(**callbacks_config[\"early_stopping\"])\n\n    return cbk.CallbackList(\n        callbacks=[\n            experiment_timing,\n            training_monitor,\n            validation_monitor,\n            model_checkpoints,\n            lr_scheduler,\n            neptune_monitor,\n            early_stopping,\n        ]\n    )\n\n\nclass DiceLoss(nn.Module):\n    def __init__(self, smooth=0, eps=1e-7):\n        super(DiceLoss, self).__init__()\n        self.smooth = smooth\n        self.eps = eps\n\n    def forward(self, output, target):\n        return 1 - (2 * torch.sum(output * target) + self.smooth) / (\n            torch.sum(output) + torch.sum(target) + self.smooth + self.eps\n        )\n\n\ndef mixed_dice_bce_loss(\n    output,\n    target,\n    dice_weight=0.2,\n    dice_loss=None,\n    bce_weight=0.9,\n    bce_loss=None,\n    smooth=0,\n    dice_activation=\"sigmoid\",\n):\n    num_classes = output.size(1)\n    target = target[:, :num_classes, :, :].long()\n    if bce_loss is None:\n        bce_loss = nn.BCEWithLogitsLoss()\n    if dice_loss is None:\n        dice_loss = multiclass_dice_loss\n    return dice_weight * dice_loss(\n        output, target, smooth, dice_activation\n    ) + bce_weight * bce_loss(output, target)\n\n\ndef mixed_dice_cross_entropy_loss(\n    output,\n    target,\n    dice_weight=0.5,\n    dice_loss=None,\n    cross_entropy_weight=0.5,\n    cross_entropy_loss=None,\n    smooth=0,\n    dice_activation=\"softmax\",\n):\n    num_classes_without_background = output.size(1) - 1\n    dice_output = output[:, 1:, :, :]\n    dice_target = target[:, :num_classes_without_background, :, :].long()\n    cross_entropy_target = torch.zeros_like(target[:, 0, :, :]).long()\n    for class_nr in range(num_classes_without_background):\n        cross_entropy_target = where(\n            target[:, class_nr, :, :], class_nr + 1, cross_entropy_target\n        )\n    if cross_entropy_loss is None:\n        cross_entropy_loss = nn.CrossEntropyLoss()\n    if dice_loss is None:\n        dice_loss = multiclass_dice_loss\n    return dice_weight * dice_loss(\n        dice_output, dice_target, smooth, dice_activation\n    ) + cross_entropy_weight * cross_entropy_loss(output, cross_entropy_target)\n\n\ndef multiclass_dice_loss(output, target, smooth=0, activation=\"softmax\"):\n    \"\"\"Calculate Dice Loss for multiple class output.\n\n    Args:\n        output (torch.Tensor): Model output of shape (N x C x H x W).\n        target (torch.Tensor): Target of shape (N x H x W).\n        smooth (float, optional): Smoothing factor. Defaults to 0.\n        activation (string, optional): Name of the activation function, softmax or sigmoid. Defaults to 'softmax'.\n\n    Returns:\n        torch.Tensor: Loss value.\n\n    \"\"\"\n    if activation == \"softmax\":\n        activation_nn = torch.nn.Softmax2d()\n    elif activation == \"sigmoid\":\n        activation_nn = torch.nn.Sigmoid()\n    else:\n        raise NotImplementedError(\"only sigmoid and softmax are implemented\")\n\n    loss = 0\n    dice = DiceLoss(smooth=smooth)\n    output = activation_nn(output)\n    num_classes = output.size(1)\n    target.data = target.data.float()\n    for class_nr in range(num_classes):\n        loss += dice(output[:, class_nr, :, :], target[:, class_nr, :, :])\n    return loss / num_classes\n\n\ndef where(cond, x_1, x_2):\n    cond = cond.long()\n    return (cond * x_1) + ((1 - cond) * x_2)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/pipelines.py",
    "content": "from functools import partial\n\nfrom steppy.base import Step, IdentityOperation\nfrom steppy.adapter import Adapter, E\n\nfrom . import loaders\nfrom .utils import make_apply_transformer\nfrom .postprocessing import binarize\n\n\ndef preprocessing_train(config, model_name=\"unet\", suffix=\"\"):\n    if config.general.loader_mode == \"resize_and_pad\":\n        Loader = loaders.ImageSegmentationLoaderResizePad\n        loader_config = config.loaders.resize_and_pad\n    elif config.general.loader_mode == \"resize\":\n        Loader = loaders.ImageSegmentationLoaderResize\n        loader_config = config.loaders.resize\n    else:\n        raise NotImplementedError\n\n    if loader_config.dataset_params.image_source == \"memory\":\n        reader_train = Step(\n            name=\"reader_train{}\".format(suffix),\n            transformer=loaders.ImageReader(\n                train_mode=True, **config.reader[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n        reader_inference = Step(\n            name=\"reader_inference{}\".format(suffix),\n            transformer=loaders.ImageReader(\n                train_mode=True, **config.reader[model_name]\n            ),\n            input_data=[\"callback_input\"],\n            adapter=Adapter({\"meta\": E(\"callback_input\", \"meta_valid\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n    elif loader_config.dataset_params.image_source == \"disk\":\n        reader_train = Step(\n            name=\"xy_train{}\".format(suffix),\n            transformer=loaders.XYSplit(\n                train_mode=True, **config.xy_splitter[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n        reader_inference = Step(\n            name=\"xy_inference{}\".format(suffix),\n            transformer=loaders.XYSplit(\n                train_mode=True, **config.xy_splitter[model_name]\n            ),\n            input_data=[\"callback_input\"],\n            adapter=Adapter({\"meta\": E(\"callback_input\", \"meta_valid\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n    else:\n        raise NotImplementedError\n\n    loader = Step(\n        name=\"loader{}\".format(suffix),\n        transformer=Loader(train_mode=True, **loader_config),\n        input_steps=[reader_train, reader_inference],\n        adapter=Adapter(\n            {\n                \"X\": E(reader_train.name, \"X\"),\n                \"y\": E(reader_train.name, \"y\"),\n                \"X_valid\": E(reader_inference.name, \"X\"),\n                \"y_valid\": E(reader_inference.name, \"y\"),\n            }\n        ),\n        experiment_directory=config.execution.experiment_dir,\n    )\n    return loader\n\n\ndef preprocessing_inference(config, model_name=\"unet\", suffix=\"\"):\n    if config.general.loader_mode == \"resize_and_pad\":\n        Loader = loaders.ImageSegmentationLoaderResizePad\n        loader_config = config.loaders.resize_and_pad\n    elif config.general.loader_mode == \"resize\":\n        Loader = loaders.ImageSegmentationLoaderResize\n        loader_config = config.loaders.resize\n    else:\n        raise NotImplementedError\n\n    if loader_config.dataset_params.image_source == \"memory\":\n        reader_inference = Step(\n            name=\"reader_inference{}\".format(suffix),\n            transformer=loaders.ImageReader(\n                train_mode=False, **config.reader[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n    elif loader_config.dataset_params.image_source == \"disk\":\n        reader_inference = Step(\n            name=\"xy_inference{}\".format(suffix),\n            transformer=loaders.XYSplit(\n                train_mode=False, **config.xy_splitter[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n    else:\n        raise NotImplementedError\n\n    loader = Step(\n        name=\"loader{}\".format(suffix),\n        transformer=Loader(train_mode=False, **loader_config),\n        input_steps=[reader_inference],\n        adapter=Adapter(\n            {\"X\": E(reader_inference.name, \"X\"), \"y\": E(reader_inference.name, \"y\")}\n        ),\n        experiment_directory=config.execution.experiment_dir,\n        cache_output=True,\n    )\n    return loader\n\n\ndef preprocessing_inference_tta(config, model_name=\"unet\", suffix=\"\"):\n    if config.general.loader_mode == \"resize_and_pad\":\n        Loader = loaders.ImageSegmentationLoaderResizePad\n        loader_config = config.loaders.resize_and_pad\n    elif config.general.loader_mode == \"resize\":\n        Loader = loaders.ImageSegmentationLoaderResize\n        loader_config = config.loaders.resize\n    else:\n        raise NotImplementedError\n\n    if loader_config.dataset_params.image_source == \"memory\":\n        reader_inference = Step(\n            name=\"reader_inference{}\".format(suffix),\n            transformer=loaders.ImageReader(\n                train_mode=False, **config.reader[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n        tta_generator = Step(\n            name=\"tta_generator{}\".format(suffix),\n            transformer=loaders.TestTimeAugmentationGenerator(**config.tta_generator),\n            input_steps=[reader_inference],\n            adapter=Adapter({\"X\": E(\"reader_inference\", \"X\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n    elif loader_config.dataset_params.image_source == \"disk\":\n        reader_inference = Step(\n            name=\"reader_inference{}\".format(suffix),\n            transformer=loaders.XYSplit(\n                train_mode=False, **config.xy_splitter[model_name]\n            ),\n            input_data=[\"input\"],\n            adapter=Adapter({\"meta\": E(\"input\", \"meta\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n\n        tta_generator = Step(\n            name=\"tta_generator{}\".format(suffix),\n            transformer=loaders.MetaTestTimeAugmentationGenerator(\n                **config.tta_generator\n            ),\n            input_steps=[reader_inference],\n            adapter=Adapter({\"X\": E(\"reader_inference\", \"X\")}),\n            experiment_directory=config.execution.experiment_dir,\n        )\n    else:\n        raise NotImplementedError\n\n    loader = Step(\n        name=\"loader{}\".format(suffix),\n        transformer=Loader(**loader_config),\n        input_steps=[tta_generator],\n        adapter=Adapter(\n            {\n                \"X\": E(tta_generator.name, \"X_tta\"),\n                \"tta_params\": E(tta_generator.name, \"tta_params\"),\n            }\n        ),\n        experiment_directory=config.execution.experiment_dir,\n        cache_output=True,\n    )\n    return loader, tta_generator\n\n\ndef aggregator(name, model, tta_generator, experiment_directory, config):\n    tta_aggregator = Step(\n        name=name,\n        transformer=loaders.TestTimeAugmentationAggregator(**config),\n        input_steps=[model, tta_generator],\n        adapter=Adapter(\n            {\n                \"images\": E(model.name, \"mask_prediction\"),\n                \"tta_params\": E(tta_generator.name, \"tta_params\"),\n                \"img_ids\": E(tta_generator.name, \"img_ids\"),\n            }\n        ),\n        experiment_directory=experiment_directory,\n    )\n    return tta_aggregator\n\n\ndef mask_postprocessing(config, suffix=\"\"):\n    binarizer = Step(\n        name=\"binarizer{}\".format(suffix),\n        transformer=make_apply_transformer(\n            partial(binarize, threshold=config.thresholder.threshold_masks),\n            output_name=\"binarized_images\",\n            apply_on=[\"images\"],\n        ),\n        input_data=[\"input_masks\"],\n        adapter=Adapter({\"images\": E(\"input_masks\", \"resized_images\")}),\n        experiment_directory=config.execution.experiment_dir,\n    )\n    return binarizer\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/pnasnet.py",
    "content": "from collections import OrderedDict\n\n# link to the github repository https://github.com/Cadene/pretrained-models.pytorch/blob/master/pretrainedmodels/models/pnasnet.py\nimport torch\nimport torch.nn as nn\nimport torch.utils.model_zoo as model_zoo\n\n\npretrained_settings = {\n    \"pnasnet5large\": {\n        \"imagenet\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/pnasnet5large-bf079911.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 331, 331],\n            \"input_range\": [0, 1],\n            \"mean\": [0.5, 0.5, 0.5],\n            \"std\": [0.5, 0.5, 0.5],\n            \"num_classes\": 1000,\n        },\n        \"imagenet+background\": {\n            \"url\": \"http://data.lip6.fr/cadene/pretrainedmodels/pnasnet5large-bf079911.pth\",\n            \"input_space\": \"RGB\",\n            \"input_size\": [3, 331, 331],\n            \"input_range\": [0, 1],\n            \"mean\": [0.5, 0.5, 0.5],\n            \"std\": [0.5, 0.5, 0.5],\n            \"num_classes\": 1001,\n        },\n    }\n}\n\n\nclass MaxPool(nn.Module):\n    def __init__(self, kernel_size, stride=1, padding=1, zero_pad=False):\n        super(MaxPool, self).__init__()\n        self.zero_pad = nn.ZeroPad2d((1, 0, 1, 0)) if zero_pad else None\n        self.pool = nn.MaxPool2d(kernel_size, stride=stride, padding=padding)\n\n    def forward(self, x):\n        if self.zero_pad:\n            x = self.zero_pad(x)\n        x = self.pool(x)\n        if self.zero_pad:\n            x = x[:, :, 1:, 1:]\n        return x\n\n\nclass SeparableConv2d(nn.Module):\n    def __init__(\n        self, in_channels, out_channels, dw_kernel_size, dw_stride, dw_padding\n    ):\n        super(SeparableConv2d, self).__init__()\n        self.depthwise_conv2d = nn.Conv2d(\n            in_channels,\n            in_channels,\n            kernel_size=dw_kernel_size,\n            stride=dw_stride,\n            padding=dw_padding,\n            groups=in_channels,\n            bias=False,\n        )\n        self.pointwise_conv2d = nn.Conv2d(\n            in_channels, out_channels, kernel_size=1, bias=False\n        )\n\n    def forward(self, x):\n        x = self.depthwise_conv2d(x)\n        x = self.pointwise_conv2d(x)\n        return x\n\n\nclass BranchSeparables(nn.Module):\n    def __init__(\n        self,\n        in_channels,\n        out_channels,\n        kernel_size,\n        stride=1,\n        stem_cell=False,\n        zero_pad=False,\n    ):\n        super(BranchSeparables, self).__init__()\n        padding = kernel_size // 2\n        middle_channels = out_channels if stem_cell else in_channels\n        self.zero_pad = nn.ZeroPad2d((1, 0, 1, 0)) if zero_pad else None\n        self.relu_1 = nn.ReLU()\n        self.separable_1 = SeparableConv2d(\n            in_channels,\n            middle_channels,\n            kernel_size,\n            dw_stride=stride,\n            dw_padding=padding,\n        )\n        self.bn_sep_1 = nn.BatchNorm2d(middle_channels, eps=0.001)\n        self.relu_2 = nn.ReLU()\n        self.separable_2 = SeparableConv2d(\n            middle_channels, out_channels, kernel_size, dw_stride=1, dw_padding=padding\n        )\n        self.bn_sep_2 = nn.BatchNorm2d(out_channels, eps=0.001)\n\n    def forward(self, x):\n        x = self.relu_1(x)\n        if self.zero_pad:\n            x = self.zero_pad(x)\n        x = self.separable_1(x)\n        if self.zero_pad:\n            x = x[:, :, 1:, 1:].contiguous()\n        x = self.bn_sep_1(x)\n        x = self.relu_2(x)\n        x = self.separable_2(x)\n        x = self.bn_sep_2(x)\n        return x\n\n\nclass ReluConvBn(nn.Module):\n    def __init__(self, in_channels, out_channels, kernel_size, stride=1):\n        super(ReluConvBn, self).__init__()\n        self.relu = nn.ReLU()\n        self.conv = nn.Conv2d(\n            in_channels,\n            out_channels,\n            kernel_size=kernel_size,\n            stride=stride,\n            bias=False,\n        )\n        self.bn = nn.BatchNorm2d(out_channels, eps=0.001)\n\n    def forward(self, x):\n        x = self.relu(x)\n        x = self.conv(x)\n        x = self.bn(x)\n        return x\n\n\nclass FactorizedReduction(nn.Module):\n    def __init__(self, in_channels, out_channels):\n        super(FactorizedReduction, self).__init__()\n        self.relu = nn.ReLU()\n        self.path_1 = nn.Sequential(\n            OrderedDict(\n                [\n                    (\"avgpool\", nn.AvgPool2d(1, stride=2, count_include_pad=False)),\n                    (\n                        \"conv\",\n                        nn.Conv2d(\n                            in_channels, out_channels // 2, kernel_size=1, bias=False\n                        ),\n                    ),\n                ]\n            )\n        )\n        self.path_2 = nn.Sequential(\n            OrderedDict(\n                [\n                    (\"pad\", nn.ZeroPad2d((0, 1, 0, 1))),\n                    (\"avgpool\", nn.AvgPool2d(1, stride=2, count_include_pad=False)),\n                    (\n                        \"conv\",\n                        nn.Conv2d(\n                            in_channels, out_channels // 2, kernel_size=1, bias=False\n                        ),\n                    ),\n                ]\n            )\n        )\n        self.final_path_bn = nn.BatchNorm2d(out_channels, eps=0.001)\n\n    def forward(self, x):\n        x = self.relu(x)\n\n        x_path1 = self.path_1(x)\n\n        x_path2 = self.path_2.pad(x)\n        x_path2 = x_path2[:, :, 1:, 1:]\n        x_path2 = self.path_2.avgpool(x_path2)\n        x_path2 = self.path_2.conv(x_path2)\n\n        out = self.final_path_bn(torch.cat([x_path1, x_path2], 1))\n        return out\n\n\nclass CellBase(nn.Module):\n    def cell_forward(self, x_left, x_right):\n        x_comb_iter_0_left = self.comb_iter_0_left(x_left)\n        x_comb_iter_0_right = self.comb_iter_0_right(x_left)\n        x_comb_iter_0 = x_comb_iter_0_left + x_comb_iter_0_right\n\n        x_comb_iter_1_left = self.comb_iter_1_left(x_right)\n        x_comb_iter_1_right = self.comb_iter_1_right(x_right)\n        x_comb_iter_1 = x_comb_iter_1_left + x_comb_iter_1_right\n\n        x_comb_iter_2_left = self.comb_iter_2_left(x_right)\n        x_comb_iter_2_right = self.comb_iter_2_right(x_right)\n        x_comb_iter_2 = x_comb_iter_2_left + x_comb_iter_2_right\n\n        x_comb_iter_3_left = self.comb_iter_3_left(x_comb_iter_2)\n        x_comb_iter_3_right = self.comb_iter_3_right(x_right)\n        x_comb_iter_3 = x_comb_iter_3_left + x_comb_iter_3_right\n\n        x_comb_iter_4_left = self.comb_iter_4_left(x_left)\n        if self.comb_iter_4_right:\n            x_comb_iter_4_right = self.comb_iter_4_right(x_right)\n        else:\n            x_comb_iter_4_right = x_right\n        x_comb_iter_4 = x_comb_iter_4_left + x_comb_iter_4_right\n\n        x_out = torch.cat(\n            [x_comb_iter_0, x_comb_iter_1, x_comb_iter_2, x_comb_iter_3, x_comb_iter_4],\n            1,\n        )\n        return x_out\n\n\nclass CellStem0(CellBase):\n    def __init__(\n        self, in_channels_left, out_channels_left, in_channels_right, out_channels_right\n    ):\n        super(CellStem0, self).__init__()\n        self.conv_1x1 = ReluConvBn(in_channels_right, out_channels_right, kernel_size=1)\n        self.comb_iter_0_left = BranchSeparables(\n            in_channels_left, out_channels_left, kernel_size=5, stride=2, stem_cell=True\n        )\n        self.comb_iter_0_right = nn.Sequential(\n            OrderedDict(\n                [\n                    (\"max_pool\", MaxPool(3, stride=2)),\n                    (\n                        \"conv\",\n                        nn.Conv2d(\n                            in_channels_left,\n                            out_channels_left,\n                            kernel_size=1,\n                            bias=False,\n                        ),\n                    ),\n                    (\"bn\", nn.BatchNorm2d(out_channels_left, eps=0.001)),\n                ]\n            )\n        )\n        self.comb_iter_1_left = BranchSeparables(\n            out_channels_right, out_channels_right, kernel_size=7, stride=2\n        )\n        self.comb_iter_1_right = MaxPool(3, stride=2)\n        self.comb_iter_2_left = BranchSeparables(\n            out_channels_right, out_channels_right, kernel_size=5, stride=2\n        )\n        self.comb_iter_2_right = BranchSeparables(\n            out_channels_right, out_channels_right, kernel_size=3, stride=2\n        )\n        self.comb_iter_3_left = BranchSeparables(\n            out_channels_right, out_channels_right, kernel_size=3\n        )\n        self.comb_iter_3_right = MaxPool(3, stride=2)\n        self.comb_iter_4_left = BranchSeparables(\n            in_channels_right,\n            out_channels_right,\n            kernel_size=3,\n            stride=2,\n            stem_cell=True,\n        )\n        self.comb_iter_4_right = ReluConvBn(\n            out_channels_right, out_channels_right, kernel_size=1, stride=2\n        )\n\n    def forward(self, x_left):\n        x_right = self.conv_1x1(x_left)\n        x_out = self.cell_forward(x_left, x_right)\n        return x_out\n\n\nclass Cell(CellBase):\n    def __init__(\n        self,\n        in_channels_left,\n        out_channels_left,\n        in_channels_right,\n        out_channels_right,\n        is_reduction=False,\n        zero_pad=False,\n        match_prev_layer_dimensions=False,\n    ):\n        super(Cell, self).__init__()\n\n        # If `is_reduction` is set to `True` stride 2 is used for\n        # convolutional and pooling layers to reduce the spatial size of\n        # the output of a cell approximately by a factor of 2.\n        stride = 2 if is_reduction else 1\n\n        # If `match_prev_layer_dimensions` is set to `True`\n        # `FactorizedReduction` is used to reduce the spatial size\n        # of the left input of a cell approximately by a factor of 2.\n        self.match_prev_layer_dimensions = match_prev_layer_dimensions\n        if match_prev_layer_dimensions:\n            self.conv_prev_1x1 = FactorizedReduction(\n                in_channels_left, out_channels_left\n            )\n        else:\n            self.conv_prev_1x1 = ReluConvBn(\n                in_channels_left, out_channels_left, kernel_size=1\n            )\n\n        self.conv_1x1 = ReluConvBn(in_channels_right, out_channels_right, kernel_size=1)\n        self.comb_iter_0_left = BranchSeparables(\n            out_channels_left,\n            out_channels_left,\n            kernel_size=5,\n            stride=stride,\n            zero_pad=zero_pad,\n        )\n        self.comb_iter_0_right = MaxPool(3, stride=stride, zero_pad=zero_pad)\n        self.comb_iter_1_left = BranchSeparables(\n            out_channels_right,\n            out_channels_right,\n            kernel_size=7,\n            stride=stride,\n            zero_pad=zero_pad,\n        )\n        self.comb_iter_1_right = MaxPool(3, stride=stride, zero_pad=zero_pad)\n        self.comb_iter_2_left = BranchSeparables(\n            out_channels_right,\n            out_channels_right,\n            kernel_size=5,\n            stride=stride,\n            zero_pad=zero_pad,\n        )\n        self.comb_iter_2_right = BranchSeparables(\n            out_channels_right,\n            out_channels_right,\n            kernel_size=3,\n            stride=stride,\n            zero_pad=zero_pad,\n        )\n        self.comb_iter_3_left = BranchSeparables(\n            out_channels_right, out_channels_right, kernel_size=3\n        )\n        self.comb_iter_3_right = MaxPool(3, stride=stride, zero_pad=zero_pad)\n        self.comb_iter_4_left = BranchSeparables(\n            out_channels_left,\n            out_channels_left,\n            kernel_size=3,\n            stride=stride,\n            zero_pad=zero_pad,\n        )\n        if is_reduction:\n            self.comb_iter_4_right = ReluConvBn(\n                out_channels_right, out_channels_right, kernel_size=1, stride=stride\n            )\n        else:\n            self.comb_iter_4_right = None\n\n    def forward(self, x_left, x_right):\n        x_left = self.conv_prev_1x1(x_left)\n        x_right = self.conv_1x1(x_right)\n        x_out = self.cell_forward(x_left, x_right)\n        return x_out\n\n\nclass PNASNet5Large(nn.Module):\n    def __init__(self, num_classes=1001):\n        super().__init__()\n        self.num_classes = num_classes\n        self.conv_0 = nn.Sequential(\n            OrderedDict(\n                [\n                    (\"conv\", nn.Conv2d(3, 96, kernel_size=3, stride=2, bias=False)),\n                    (\"bn\", nn.BatchNorm2d(96, eps=0.001)),\n                ]\n            )\n        )\n        self.cell_stem_0 = CellStem0(\n            in_channels_left=96,\n            out_channels_left=54,\n            in_channels_right=96,\n            out_channels_right=54,\n        )\n        self.cell_stem_1 = Cell(\n            in_channels_left=96,\n            out_channels_left=108,\n            in_channels_right=270,\n            out_channels_right=108,\n            match_prev_layer_dimensions=True,\n            is_reduction=True,\n        )\n        self.cell_0 = Cell(\n            in_channels_left=270,\n            out_channels_left=216,\n            in_channels_right=540,\n            out_channels_right=216,\n            match_prev_layer_dimensions=True,\n        )\n        self.cell_1 = Cell(\n            in_channels_left=540,\n            out_channels_left=216,\n            in_channels_right=1080,\n            out_channels_right=216,\n        )\n        self.cell_2 = Cell(\n            in_channels_left=1080,\n            out_channels_left=216,\n            in_channels_right=1080,\n            out_channels_right=216,\n        )\n        self.cell_3 = Cell(\n            in_channels_left=1080,\n            out_channels_left=216,\n            in_channels_right=1080,\n            out_channels_right=216,\n        )\n        self.cell_4 = Cell(\n            in_channels_left=1080,\n            out_channels_left=432,\n            in_channels_right=1080,\n            out_channels_right=432,\n            is_reduction=True,\n            zero_pad=True,\n        )\n        self.cell_5 = Cell(\n            in_channels_left=1080,\n            out_channels_left=432,\n            in_channels_right=2160,\n            out_channels_right=432,\n            match_prev_layer_dimensions=True,\n        )\n        self.cell_6 = Cell(\n            in_channels_left=2160,\n            out_channels_left=432,\n            in_channels_right=2160,\n            out_channels_right=432,\n        )\n        self.cell_7 = Cell(\n            in_channels_left=2160,\n            out_channels_left=432,\n            in_channels_right=2160,\n            out_channels_right=432,\n        )\n        self.cell_8 = Cell(\n            in_channels_left=2160,\n            out_channels_left=864,\n            in_channels_right=2160,\n            out_channels_right=864,\n            is_reduction=True,\n        )\n        self.cell_9 = Cell(\n            in_channels_left=2160,\n            out_channels_left=864,\n            in_channels_right=4320,\n            out_channels_right=864,\n            match_prev_layer_dimensions=True,\n        )\n        self.cell_10 = Cell(\n            in_channels_left=4320,\n            out_channels_left=864,\n            in_channels_right=4320,\n            out_channels_right=864,\n        )\n        self.cell_11 = Cell(\n            in_channels_left=4320,\n            out_channels_left=864,\n            in_channels_right=4320,\n            out_channels_right=864,\n        )\n        self.relu = nn.ReLU()\n        self.avg_pool = nn.AvgPool2d(11, stride=1, padding=0)\n        self.dropout = nn.Dropout(0.5)\n        self.last_linear = nn.Linear(4320, num_classes)\n\n    def features(self, x):\n        x_conv_0 = self.conv_0(x)\n        x_stem_0 = self.cell_stem_0(x_conv_0)\n        x_stem_1 = self.cell_stem_1(x_conv_0, x_stem_0)\n        x_cell_0 = self.cell_0(x_stem_0, x_stem_1)\n        x_cell_1 = self.cell_1(x_stem_1, x_cell_0)\n        x_cell_2 = self.cell_2(x_cell_0, x_cell_1)\n        x_cell_3 = self.cell_3(x_cell_1, x_cell_2)\n        x_cell_4 = self.cell_4(x_cell_2, x_cell_3)\n        x_cell_5 = self.cell_5(x_cell_3, x_cell_4)\n        x_cell_6 = self.cell_6(x_cell_4, x_cell_5)\n        x_cell_7 = self.cell_7(x_cell_5, x_cell_6)\n        x_cell_8 = self.cell_8(x_cell_6, x_cell_7)\n        x_cell_9 = self.cell_9(x_cell_7, x_cell_8)\n        x_cell_10 = self.cell_10(x_cell_8, x_cell_9)\n        x_cell_11 = self.cell_11(x_cell_9, x_cell_10)\n        return x_cell_11\n\n    def logits(self, features):\n        x = self.relu(features)\n        x = self.avg_pool(x)\n        x = x.view(x.size(0), -1)\n        x = self.dropout(x)\n        x = self.last_linear(x)\n        return x\n\n    def forward(self, input):\n        x = self.features(input)\n        x = self.logits(x)\n        return x\n\n\ndef pnasnet5large(num_classes=1001, pretrained=\"imagenet\"):\n    r\"\"\"PNASNet-5 model architecture from the\n    `\"Progressive Neural Architecture Search\"\n    <https://arxiv.org/abs/1712.00559>`_ paper.\n    \"\"\"\n    if pretrained:\n        settings = pretrained_settings[\"pnasnet5large\"][pretrained]\n        assert (\n            num_classes == settings[\"num_classes\"]\n        ), \"num_classes should be {}, but is {}\".format(\n            settings[\"num_classes\"], num_classes\n        )\n\n        # both 'imagenet'&'imagenet+background' are loaded from same parameters\n        model = PNASNet5Large(num_classes=1001)\n        model.load_state_dict(model_zoo.load_url(settings[\"url\"]))\n\n        if pretrained == \"imagenet\":\n            new_last_linear = nn.Linear(model.last_linear.in_features, 1000)\n            new_last_linear.weight.data = model.last_linear.weight.data[1:]\n            new_last_linear.bias.data = model.last_linear.bias.data[1:]\n            model.last_linear = new_last_linear\n\n        model.input_space = settings[\"input_space\"]\n        model.input_size = settings[\"input_size\"]\n        model.input_range = settings[\"input_range\"]\n\n        model.mean = settings[\"mean\"]\n        model.std = settings[\"std\"]\n    else:\n        model = PNASNet5Large(num_classes=num_classes)\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/postprocessing.py",
    "content": "import numpy as np\nfrom scipy import ndimage as ndi\nfrom skimage.transform import resize\n\nfrom .utils import get_crop_pad_sequence\n\n\ndef resize_image(image, target_size):\n    \"\"\"Resize image to target size\n\n    Args:\n        image (numpy.ndarray): Image of shape (C x H x W).\n        target_size (tuple): Target size (H, W).\n\n    Returns:\n        numpy.ndarray: Resized image of shape (C x H x W).\n\n    \"\"\"\n    n_channels = image.shape[0]\n    resized_image = resize(\n        image, (n_channels, target_size[0], target_size[1]), mode=\"constant\"\n    )\n    return resized_image\n\n\ndef crop_image(image, target_size):\n    \"\"\"Crop image to target size. Image cropped symmetrically.\n\n    Args:\n        image (numpy.ndarray): Image of shape (C x H x W).\n        target_size (tuple): Target size (H, W).\n\n    Returns:\n        numpy.ndarray: Cropped image of shape (C x H x W).\n\n    \"\"\"\n    top_crop, right_crop, bottom_crop, left_crop = get_crop_pad_sequence(\n        image.shape[1] - target_size[0], image.shape[2] - target_size[1]\n    )\n    cropped_image = image[\n        :,\n        top_crop : image.shape[1] - bottom_crop,\n        left_crop : image.shape[2] - right_crop,\n    ]\n    return cropped_image\n\n\ndef binarize(image, threshold):\n    image_binarized = (image[1, :, :] > threshold).astype(np.uint8)\n    return image_binarized\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/preprocessing.py",
    "content": "import numpy as np\n\n\ndef img_cumsum(img):\n    return (np.float32(img) - img.mean()).cumsum(axis=0)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/resnext.py",
    "content": "\"\"\"\nNew for ResNeXt:\n1. Wider bottleneck\n2. Add group for conv2\n\"\"\"\n\nimport torch.nn as nn\nimport math\n\n__all__ = [\"ResNeXt\", \"resnext18\", \"resnext34\", \"resnext50\", \"resnext101\", \"resnext152\"]\n\n\ndef conv3x3(in_planes, out_planes, stride=1):\n    \"\"\"3x3 convolution with padding\"\"\"\n    return nn.Conv2d(\n        in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False\n    )\n\n\nclass BasicBlock(nn.Module):\n    expansion = 1\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, num_group=32):\n        super(BasicBlock, self).__init__()\n        self.conv1 = conv3x3(inplanes, planes * 2, stride)\n        self.bn1 = nn.BatchNorm2d(planes * 2)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv2 = conv3x3(planes * 2, planes * 2, groups=num_group)\n        self.bn2 = nn.BatchNorm2d(planes * 2)\n        self.downsample = downsample\n        self.stride = stride\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, num_group=32):\n        super(Bottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(inplanes, planes * 2, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes * 2)\n        self.conv2 = nn.Conv2d(\n            planes * 2,\n            planes * 2,\n            kernel_size=3,\n            stride=stride,\n            padding=1,\n            bias=False,\n            groups=num_group,\n        )\n        self.bn2 = nn.BatchNorm2d(planes * 2)\n        self.conv3 = nn.Conv2d(planes * 2, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.downsample = downsample\n        self.stride = stride\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\n\nclass ResNeXt(nn.Module):\n    def __init__(self, block, layers, num_classes=1000, num_group=32):\n        self.inplanes = 64\n        super(ResNeXt, self).__init__()\n        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)\n        self.bn1 = nn.BatchNorm2d(64)\n        self.relu = nn.ReLU(inplace=True)\n        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n        self.layer1 = self._make_layer(block, 64, layers[0], num_group)\n        self.layer2 = self._make_layer(block, 128, layers[1], num_group, stride=2)\n        self.layer3 = self._make_layer(block, 256, layers[2], num_group, stride=2)\n        self.layer4 = self._make_layer(block, 512, layers[3], num_group, stride=2)\n        self.avgpool = nn.AvgPool2d(7, stride=1)\n        self.fc = nn.Linear(512 * block.expansion, num_classes)\n\n        for m in self.modules():\n            if isinstance(m, nn.Conv2d):\n                n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels\n                m.weight.data.normal_(0, math.sqrt(2.0 / n))\n            elif isinstance(m, nn.BatchNorm2d):\n                m.weight.data.fill_(1)\n                m.bias.data.zero_()\n\n    def _make_layer(self, block, planes, blocks, num_group, stride=1):\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(\n                    self.inplanes,\n                    planes * block.expansion,\n                    kernel_size=1,\n                    stride=stride,\n                    bias=False,\n                ),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        layers.append(\n            block(self.inplanes, planes, stride, downsample, num_group=num_group)\n        )\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(block(self.inplanes, planes, num_group=num_group))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = self.relu(x)\n        x = self.maxpool(x)\n\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n\n        x = self.avgpool(x)\n        x = x.view(x.size(0), -1)\n        x = self.fc(x)\n\n        return x\n\n\ndef resnext18(**kwargs):\n    \"\"\"Constructs a ResNeXt-18 model.\n    \"\"\"\n    model = ResNeXt(BasicBlock, [2, 2, 2, 2], **kwargs)\n    return model\n\n\ndef resnext34(**kwargs):\n    \"\"\"Constructs a ResNeXt-34 model.\n    \"\"\"\n    model = ResNeXt(BasicBlock, [3, 4, 6, 3], **kwargs)\n    return model\n\n\ndef resnext50(**kwargs):\n    \"\"\"Constructs a ResNeXt-50 model.\n    \"\"\"\n    model = ResNeXt(Bottleneck, [3, 4, 6, 3], **kwargs)\n    return model\n\n\ndef resnext101(**kwargs):\n    \"\"\"Constructs a ResNeXt-101 model.\n    \"\"\"\n    model = ResNeXt(Bottleneck, [3, 4, 23, 3], **kwargs)\n    return model\n\n\ndef resnext152(**kwargs):\n    \"\"\"Constructs a ResNeXt-152 model.\n    \"\"\"\n    model = ResNeXt(Bottleneck, [3, 8, 36, 3], **kwargs)\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/unet_models.py",
    "content": "from torch import nn\n\n# from torch.nn import functional as F\nimport torch\nfrom torchvision import models\nimport torchvision\nfrom collections import OrderedDict\nimport torch.nn.parallel\nimport torch.optim\nimport torch.utils.data\nimport torch.utils.data.distributed\nimport torch.utils.model_zoo as model_zoo\nfrom .pnasnet import PNASNet5Large\nimport pretrainedmodels\nimport torch.nn.functional as F\n\n# from modules.wider_resnet import WiderResNet\nfrom .resnext import *\n\n\"\"\"\nThis script has been taken (and modified) from :\nhttps://github.com/ternaus/TernausNet\n\n@ARTICLE{arXiv:1801.05746,\n         author = {V. Iglovikov and A. Shvets},\n          title = {TernausNet: U-Net with VGG11 Encoder Pre-Trained on ImageNet for Image Segmentation},\n        journal = {ArXiv e-prints},\n         eprint = {1801.05746}, \n           year = 2018\n        }\n\"\"\"\n\n\ndef conv3x3(in_, out):\n    return nn.Conv2d(in_, out, 3, padding=1)\n\n\nclass ConvRelu(nn.Module):\n    def __init__(self, in_, out):\n        super().__init__()\n        self.conv = conv3x3(in_, out)\n        self.activation = nn.ReLU(inplace=True)\n\n    def forward(self, x):\n        x = self.conv(x)\n        x = self.activation(x)\n        return x\n\n\nclass NoOperation(nn.Module):\n    def forward(self, x):\n        return x\n\n\nclass DecoderBlock_old(nn.Module):\n    def __init__(self, in_channels, middle_channels, out_channels):\n        super().__init__()\n\n        self.block = nn.Sequential(\n            ConvRelu(in_channels, middle_channels),\n            nn.ConvTranspose2d(\n                middle_channels,\n                out_channels,\n                kernel_size=3,\n                stride=2,\n                padding=1,\n                output_padding=1,\n            ),\n            nn.BatchNorm2d(out_channels),  ##me added\n            nn.ReLU(inplace=True),\n        )\n\n    def forward(self, x):\n        return self.block(x)\n\n\nclass DecoderBlock(nn.Module):\n    def __init__(self, in_channels, middle_channels, out_channels):\n        super(DecoderBlock, self).__init__()\n        self.conv1 = ConvBn2d(in_channels, middle_channels)\n        self.conv2 = ConvBn2d(middle_channels, out_channels)\n        # self.deconv = nn.ConvTranspose2d(middle_channels, out_channels, kernel_size=4, stride=2, padding=1)\n        # self.bn = nn.BatchNorm2d(out_channels)\n        self.spatial_gate = SpatialAttentionGate(out_channels)\n        self.channel_gate = ChannelAttentionGate(out_channels)\n\n    def forward(self, x, e=None):\n        x = F.upsample(x, scale_factor=2, mode=\"bilinear\")\n        if e is not None:\n            x = torch.cat([x, e], 1)\n\n        x = F.relu(self.conv1(x), inplace=True)\n        x = F.relu(self.conv2(x), inplace=True)\n\n        g1 = self.spatial_gate(x)\n        g2 = self.channel_gate(x)\n        x = x * g1 + x * g2\n        return x\n\n\nclass UNet11(nn.Module):\n    def __init__(self, num_classes=1, num_filters=32, pretrained=False):\n        \"\"\"\n        :param num_classes:\n        :param num_filters:\n        :param pretrained:\n            False - no pre-trained network is used\n            True  - encoder is pre-trained with VGG11\n        \"\"\"\n        super().__init__()\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.encoder = models.vgg11(pretrained=pretrained).features\n\n        self.relu = self.encoder[1]\n        self.conv1 = self.encoder[0]\n        self.conv2 = self.encoder[3]\n        self.conv3s = self.encoder[6]\n        self.conv3 = self.encoder[8]\n        self.conv4s = self.encoder[11]\n        self.conv4 = self.encoder[13]\n        self.conv5s = self.encoder[16]\n        self.conv5 = self.encoder[18]\n\n        self.center = DecoderBlock(\n            num_filters * 8 * 2, num_filters * 8 * 2, num_filters * 8\n        )\n        self.dec5 = DecoderBlock(\n            num_filters * (16 + 8), num_filters * 8 * 2, num_filters * 8\n        )\n        self.dec4 = DecoderBlock(\n            num_filters * (16 + 8), num_filters * 8 * 2, num_filters * 4\n        )\n        self.dec3 = DecoderBlock(\n            num_filters * (8 + 4), num_filters * 4 * 2, num_filters * 2\n        )\n        self.dec2 = DecoderBlock(\n            num_filters * (4 + 2), num_filters * 2 * 2, num_filters\n        )\n        self.dec1 = ConvRelu(num_filters * (2 + 1), num_filters)\n\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.relu(self.conv1(x))\n        conv2 = self.relu(self.conv2(self.pool(conv1)))\n        conv3s = self.relu(self.conv3s(self.pool(conv2)))\n        conv3 = self.relu(self.conv3(conv3s))\n        conv4s = self.relu(self.conv4s(self.pool(conv3)))\n        conv4 = self.relu(self.conv4(conv4s))\n        conv5s = self.relu(self.conv5s(self.pool(conv4)))\n        conv5 = self.relu(self.conv5(conv5s))\n\n        center = self.center(self.pool(conv5))\n\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(torch.cat([dec2, conv1], 1))\n        return self.final(dec1)\n\n\ndef unet11(pretrained=False, **kwargs):\n    \"\"\"\n    pretrained:\n            False - no pre-trained network is used\n            True  - encoder is pre-trained with VGG11\n            carvana - all weights are pre-trained on\n                Kaggle: Carvana dataset https://www.kaggle.com/c/carvana-image-masking-challenge\n    \"\"\"\n    model = UNet11(pretrained=pretrained, **kwargs)\n\n    if pretrained == \"carvana\":\n        state = torch.load(\"TernausNet.pt\")\n        model.load_state_dict(state[\"model\"])\n    return model\n\n\nclass DecoderBlockV2(nn.Module):\n    def __init__(self, in_channels, middle_channels, out_channels, is_deconv=True):\n        super(DecoderBlockV2, self).__init__()\n        self.in_channels = in_channels\n\n        if is_deconv:\n            \"\"\"\n                Paramaters for Deconvolution were chosen to avoid artifacts, following\n                link https://distill.pub/2016/deconv-checkerboard/\n            \"\"\"\n\n            self.block = nn.Sequential(\n                ConvRelu(in_channels, middle_channels),\n                nn.ConvTranspose2d(\n                    middle_channels, out_channels, kernel_size=4, stride=2, padding=1\n                ),\n                # nn.BatchNorm2d(out_channels), ##me added\n                nn.ReLU(inplace=True),\n            )\n        else:\n            self.block = nn.Sequential(\n                nn.Upsample(scale_factor=2, mode=\"bilinear\"),\n                ConvRelu(in_channels, middle_channels),\n                ConvRelu(middle_channels, out_channels),\n            )\n\n    def forward(self, x):\n        return self.block(x)\n\n\nclass DecoderCenter(nn.Module):\n    def __init__(self, in_channels, middle_channels, out_channels, is_deconv=True):\n        super(DecoderCenter, self).__init__()\n        self.in_channels = in_channels\n\n        if is_deconv:\n            \"\"\"\n                Paramaters for Deconvolution were chosen to avoid artifacts, following\n                link https://distill.pub/2016/deconv-checkerboard/\n            \"\"\"\n\n            self.block = nn.Sequential(\n                ConvRelu(in_channels, middle_channels),\n                nn.ConvTranspose2d(\n                    middle_channels, out_channels, kernel_size=4, stride=2, padding=1\n                ),\n                nn.BatchNorm2d(out_channels),  ##me added\n                nn.ReLU(inplace=True),\n            )\n        else:\n            self.block = nn.Sequential(\n                ConvRelu(in_channels, middle_channels),\n                ConvRelu(middle_channels, out_channels),\n                # nn.BatchNorm2d(out_channels), ##me added\n                # nn.ReLU(inplace=True) ##me added\n            )\n\n    def forward(self, x):\n        return self.block(x)\n\n\nclass AlbuNet(nn.Module):\n    \"\"\"\n        UNet (https://arxiv.org/abs/1505.04597) with Resnet34(https://arxiv.org/abs/1512.03385) encoder\n\n        Proposed by Alexander Buslaev: https://www.linkedin.com/in/al-buslaev/\n\n        \"\"\"\n\n    def __init__(\n        self, num_classes=1, num_filters=32, pretrained=False, is_deconv=False\n    ):\n        \"\"\"\n        :param num_classes:\n        :param num_filters:\n        :param pretrained:\n            False - no pre-trained network is used\n            True  - encoder is pre-trained with resnet34\n        :is_deconv:\n            False: bilinear interpolation is used in decoder\n            True: deconvolution is used in decoder\n        \"\"\"\n        super().__init__()\n        self.num_classes = num_classes\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.encoder = torchvision.models.resnet34(pretrained=pretrained)\n\n        self.relu = nn.ReLU(inplace=True)\n\n        self.conv1 = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu, self.pool\n        )\n\n        self.conv2 = self.encoder.layer1\n\n        self.conv3 = self.encoder.layer2\n\n        self.conv4 = self.encoder.layer3\n\n        self.conv5 = self.encoder.layer4\n\n        self.center = DecoderBlockV2(\n            512, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n\n        self.dec5 = DecoderBlockV2(\n            512 + num_filters * 8, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec4 = DecoderBlockV2(\n            256 + num_filters * 8, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec3 = DecoderBlockV2(\n            128 + num_filters * 8, num_filters * 4 * 2, num_filters * 2, is_deconv\n        )\n        self.dec2 = DecoderBlockV2(\n            64 + num_filters * 2, num_filters * 2 * 2, num_filters * 2 * 2, is_deconv\n        )\n        self.dec1 = DecoderBlockV2(\n            num_filters * 2 * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec0 = ConvRelu(num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.conv1(x)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        conv4 = self.conv4(conv3)\n        conv5 = self.conv5(conv4)\n\n        center = self.center(self.pool(conv5))\n\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(dec2)\n        dec0 = self.dec0(dec1)\n\n        return self.final(dec0)\n\n\nclass UNetVGG16(nn.Module):\n    def __init__(\n        self,\n        num_classes=1,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.encoder = torchvision.models.vgg16(pretrained=pretrained).features\n\n        self.relu = nn.ReLU(inplace=True)\n\n        self.conv1 = nn.Sequential(\n            self.encoder[0], self.relu, self.encoder[2], self.relu\n        )\n\n        self.conv2 = nn.Sequential(\n            self.encoder[5], self.relu, self.encoder[7], self.relu\n        )\n\n        self.conv3 = nn.Sequential(\n            self.encoder[10],\n            self.relu,\n            self.encoder[12],\n            self.relu,\n            self.encoder[14],\n            self.relu,\n        )\n\n        self.conv4 = nn.Sequential(\n            self.encoder[17],\n            self.relu,\n            self.encoder[19],\n            self.relu,\n            self.encoder[21],\n            self.relu,\n        )\n\n        self.conv5 = nn.Sequential(\n            self.encoder[24],\n            self.relu,\n            self.encoder[26],\n            self.relu,\n            self.encoder[28],\n            self.relu,\n        )\n\n        self.center = DecoderBlockV2(\n            512, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n\n        self.dec5 = DecoderBlockV2(\n            512 + num_filters * 8, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec4 = DecoderBlockV2(\n            512 + num_filters * 8, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec3 = DecoderBlockV2(\n            256 + num_filters * 8, num_filters * 4 * 2, num_filters * 2, is_deconv\n        )\n        self.dec2 = DecoderBlockV2(\n            128 + num_filters * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec1 = ConvRelu(64 + num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.conv1(x)\n        conv2 = self.conv2(self.pool(conv1))\n        conv3 = self.conv3(self.pool(conv2))\n        conv4 = self.conv4(self.pool(conv3))\n        conv5 = self.conv5(self.pool(conv4))\n\n        center = self.center(self.pool(conv5))\n\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(torch.cat([dec2, conv1], 1))\n\n        return self.final(F.dropout2d(dec1, p=self.dropout_2d))\n\n\nclass UNetResNet(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        if encoder_depth == 34:\n            self.encoder = torchvision.models.resnet34(pretrained=pretrained)\n            bottom_channel_nr = 512\n        elif encoder_depth == 101:\n            self.encoder = torchvision.models.resnet101(pretrained=pretrained)\n            bottom_channel_nr = 2048\n        elif encoder_depth == 152:\n            self.encoder = torchvision.models.resnet152(pretrained=pretrained)\n            bottom_channel_nr = 2048\n\n        else:\n            raise NotImplementedError(\n                \"only 34, 101, 152 version of Resnet are implemented\"\n            )\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.relu = nn.ReLU(inplace=True)\n\n        self.conv1 = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu, self.pool\n        )\n\n        self.conv2 = self.encoder.layer1\n        self.conv3 = self.encoder.layer2\n        self.conv4 = self.encoder.layer3\n        self.conv5 = self.encoder.layer4\n        self.center = DecoderCenter(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, False\n        )\n\n        self.dec5 = DecoderBlockV2(\n            bottom_channel_nr + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            num_filters * 2 * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec0 = ConvRelu(num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.conv1(x)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        conv4 = self.conv4(conv3)\n        conv5 = self.conv5(conv4)\n        # pool = self.pool(conv5) # deleted pooling\n        # center = self.center(pool)\n        center = self.center(conv5)\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(dec2)\n        dec0 = self.dec0(dec1)\n\n        return self.final(F.dropout2d(dec0, p=self.dropout_2d))\n\n\nclass UNetResNet_wo_pool(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        if encoder_depth == 34:\n            self.encoder = torchvision.models.resnet34(pretrained=pretrained)\n            bottom_channel_nr = 512\n        elif encoder_depth == 101:\n            self.encoder = torchvision.models.resnet101(pretrained=pretrained)\n            bottom_channel_nr = 2048\n        elif encoder_depth == 152:\n            self.encoder = torchvision.models.resnet152(pretrained=pretrained)\n            bottom_channel_nr = 2048\n        else:\n            raise NotImplementedError(\n                \"only 34, 101, 152 version of Resnet are implemented\"\n            )\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.relu = nn.ReLU(inplace=True)\n\n        self.input_adjust = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu\n        )\n\n        self.conv1 = self.encoder.layer1\n        self.conv2 = self.encoder.layer2\n        self.conv3 = self.encoder.layer3\n        self.conv4 = self.encoder.layer4\n\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n        self.final = nn.Conv2d(num_filters * 2 * 2, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        input_adjust = self.input_adjust(x)\n        conv1 = self.conv1(input_adjust)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        center = self.conv4(conv3)\n        dec4 = self.dec4(center)\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = F.dropout2d(self.dec1(torch.cat([dec2, conv1], 1)), p=self.dropout_2d)\n        # print('input_adjust ', input_adjust.shape, '\\ncenter ' , center.shape, '\\ndec1: ', dec1.shape)\n        return self.final(dec1)\n\n\nclass UNetResNext_wo_pool(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.encoder = (\n            pretrainedmodels.se_resnext50_32x4d()\n        )  # torchvision.models.resnet152(pretrained=pretrained)\n\n        self.pool = nn.MaxPool2d(2, 2)\n        bottom_channel_nr = 512 * 4\n\n        self.input_adjust = nn.Sequential(\n            self.encoder.layer0.conv1,\n            self.encoder.layer0.bn1,\n            self.encoder.layer0.relu1,\n        )\n\n        self.conv1 = self.encoder.layer1\n        self.conv2 = self.encoder.layer2\n        self.conv3 = self.encoder.layer3\n        self.conv4 = self.encoder.layer4\n\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n        self.final = nn.Conv2d(num_filters * 2 * 2, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        input_adjust = self.input_adjust(x)\n        conv1 = self.conv1(input_adjust)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        center = self.conv4(conv3)\n        dec4 = self.dec4(center)\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = F.dropout2d(self.dec1(torch.cat([dec2, conv1], 1)), p=self.dropout_2d)\n        print(\n            \"input_adjust \",\n            input_adjust.shape,\n            \"\\ncenter \",\n            center.shape,\n            \"\\ndec1: \",\n            dec1.shape,\n            self.final(dec1).shape,\n        )\n        return self.final(dec1)\n\n\nclass UNetResNetAttentionv2(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes=1,\n        num_filters=32,\n        dropout_2d=0.4,\n        pretrained=True,\n        is_deconv=True,\n    ):\n        super(UNetResNetAttention, self).__init__()\n\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.resnet = pretrainedmodels.se_resnext50_32x4d()\n        bottom_channel_nr = 2048\n        self.encoder1 = EncoderBlock(\n            nn.Sequential(\n                self.resnet.layer0.conv1,\n                self.resnet.layer0.bn1,\n                self.resnet.layer0.relu1,\n            ),\n            num_filters * 2,\n        )\n        self.encoder2 = EncoderBlock(self.resnet.layer1, bottom_channel_nr // 8)\n        self.encoder3 = EncoderBlock(self.resnet.layer2, bottom_channel_nr // 4)\n        self.encoder4 = EncoderBlock(self.resnet.layer3, bottom_channel_nr // 2)\n        self.encoder5 = EncoderBlock(self.resnet.layer4, bottom_channel_nr)\n\n        center_block = nn.Sequential(\n            ConvBn2d(bottom_channel_nr, bottom_channel_nr, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            ConvBn2d(\n                bottom_channel_nr, bottom_channel_nr // 2, kernel_size=3, padding=1\n            ),\n            nn.ReLU(inplace=True),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n        self.center = EncoderBlock(center_block, bottom_channel_nr // 2)\n\n        self.decoder5 = DecoderBlock(\n            bottom_channel_nr + bottom_channel_nr // 2, num_filters * 16, 64\n        )\n        self.decoder4 = DecoderBlock(64 + bottom_channel_nr // 2, num_filters * 8, 64)\n        self.decoder3 = DecoderBlock(64 + bottom_channel_nr // 4, num_filters * 4, 64)\n        self.decoder2 = DecoderBlock(64 + bottom_channel_nr // 8, num_filters * 2, 64)\n        self.decoder1 = DecoderBlock(64, num_filters, 64)\n\n        self.final = nn.Conv2d(64, 2, kernel_size=1)\n\n        self.logit = nn.Sequential(\n            nn.Conv2d(320, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 2, kernel_size=1, padding=0),\n        )\n\n    def forward(self, x):\n        x = self.encoder1(x)  # ; print('x:', x.size())\n        e2 = self.encoder2(x)  # ; print('e2:', e2.size())\n        e3 = self.encoder3(e2)  # ; print('e3:', e3.size())\n        e4 = self.encoder4(e3)  # ; print('e4:', e4.size())\n        e5 = self.encoder5(e4)  # ; print('e5:', e5.size())\n\n        center = self.center(e5)  # ; print('center:', center.size())\n\n        d5 = self.decoder5(center, e5)  # ; print('d5:', d5.size())\n        d4 = self.decoder4(d5, e4)  # ; print('d4:', d4.size())\n        d3 = self.decoder3(d4, e3)  # ; print('d3:', d3.size())\n        d2 = self.decoder2(d3, e2)  # ; print('d2:', d2.size())\n        d1 = self.decoder1(d2)\n        # print('d1:', d1.size())\n\n        f = torch.cat(\n            [\n                d1,\n                F.upsample(d2, scale_factor=2, mode=\"bilinear\"),\n                F.upsample(d3, scale_factor=4, mode=\"bilinear\"),\n                F.upsample(d4, scale_factor=8, mode=\"bilinear\"),\n                F.upsample(d5, scale_factor=16, mode=\"bilinear\"),\n            ],\n            dim=1,\n        )\n\n        # f = F.dropout2d(f, p=self.dropout_2d)\n        # print (self.logit(d1).shape)\n        return self.logit(f)\n\n\nclass UNetResNetAttention(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes=1,\n        num_filters=32,\n        dropout_2d=0.4,\n        pretrained=True,\n        is_deconv=True,\n    ):\n        super(UNetResNetAttention, self).__init__()\n\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.resnet = pretrainedmodels.se_resnext50_32x4d()\n        bottom_channel_nr = 2048\n\n        conv1 = nn.Conv2d(\n            3, 64, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False\n        )\n        conv1.weight = self.resnet.layer0.conv1.weight\n        \"\"\"\n        self.encoder1 = nn.Sequential(conv1,\n                                          self.resnet.layer0.bn1,\n                                          self.resnet.layer0.relu1\n                                          ,self.pool\n                                          )\n        \"\"\"\n        self.encoder1 = EncoderBlock(\n            nn.Sequential(\n                conv1, self.resnet.layer0.bn1, self.resnet.layer0.relu1, self.pool\n            ),\n            num_filters * 2,\n        )\n        self.encoder2 = EncoderBlock(self.resnet.layer1, bottom_channel_nr // 8)\n        self.encoder3 = EncoderBlock(self.resnet.layer2, bottom_channel_nr // 4)\n        self.encoder4 = EncoderBlock(self.resnet.layer3, bottom_channel_nr // 2)\n        self.encoder5 = EncoderBlock(self.resnet.layer4, bottom_channel_nr)\n\n        center_block = nn.Sequential(\n            ConvBn2d(bottom_channel_nr, bottom_channel_nr, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            ConvBn2d(\n                bottom_channel_nr, bottom_channel_nr // 2, kernel_size=3, padding=1\n            ),\n            nn.ReLU(inplace=True),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n        self.center = EncoderBlock(center_block, bottom_channel_nr // 2)\n\n        self.decoder5 = DecoderBlock(\n            bottom_channel_nr + bottom_channel_nr // 2, num_filters * 16, 64\n        )\n        self.decoder4 = DecoderBlock(64 + bottom_channel_nr // 2, num_filters * 8, 64)\n        self.decoder3 = DecoderBlock(64 + bottom_channel_nr // 4, num_filters * 4, 64)\n        self.decoder2 = DecoderBlock(64 + bottom_channel_nr // 8, num_filters * 2, 64)\n        self.decoder1 = DecoderBlock(64, num_filters, 64)\n\n        self.final = nn.Conv2d(64, 2, kernel_size=1)\n\n        self.logit = nn.Sequential(\n            nn.Conv2d(64, 64, kernel_size=3, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 2, kernel_size=1, padding=0),\n        )\n\n    def forward(self, x):\n        x = self.encoder1(x)  # ; print('x:', x.size())\n        e2 = self.encoder2(x)  # ; print('e2:', e2.size())\n        e3 = self.encoder3(e2)  # ; print('e3:', e3.size())\n        e4 = self.encoder4(e3)  # ; print('e4:', e4.size())\n        e5 = self.encoder5(e4)  # ; print('e5:', e5.size())\n\n        center = self.center(e5)  # ; print('center:', center.size())\n\n        d5 = self.decoder5(center, e5)  # ; print('d5:', d5.size())\n        d4 = self.decoder4(d5, e4)  # ; print('d4:', d4.size())\n        d3 = self.decoder3(d4, e3)  # ; print('d3:', d3.size())\n        d2 = self.decoder2(d3, e2)  # ; print('d2:', d2.size())\n        d1 = self.decoder1(d2)\n        # print('d1:', d1.size())\n\n        \"\"\"\n        f = torch.cat([\n            d1,\n            F.upsample(d2, scale_factor=2, mode='bilinear'),\n            F.upsample(d3, scale_factor=4, mode='bilinear'),\n            F.upsample(d4, scale_factor=8, mode='bilinear'),\n            F.upsample(d5, scale_factor=16, mode='bilinear'),\n        ],   dim=1) \n        \"\"\"\n\n        # f = F.dropout2d(f, p=self.dropout_2d)\n        # print (self.logit(d1).shape)\n        return self.final(d1)\n\n\nclass EncoderBlock(nn.Module):\n    def __init__(self, block, out_channels):\n        super(EncoderBlock, self).__init__()\n        self.block = block\n        self.out_channels = out_channels\n        self.spatial_gate = SpatialAttentionGate(out_channels)\n        self.channel_gate = ChannelAttentionGate(out_channels)\n\n    def forward(self, x):\n        x = self.block(x)\n        g1 = self.spatial_gate(x)\n        g2 = self.channel_gate(x)\n\n        return x * g1 + x * g2\n\n\nclass ChannelAttentionGate(nn.Module):\n    def __init__(self, channel, reduction=16):\n        super(ChannelAttentionGate, self).__init__()\n        self.avg_pool = nn.AdaptiveAvgPool2d(1)\n        self.fc = nn.Sequential(\n            nn.Linear(channel, channel // reduction),\n            nn.ReLU(inplace=True),\n            nn.Linear(channel // reduction, channel),\n            nn.Sigmoid(),\n        )\n\n    def forward(self, x):\n        b, c, _, _ = x.size()\n        y = self.avg_pool(x).view(b, c)\n        y = self.fc(y).view(b, c, 1, 1)\n        return y\n\n\ndef conv3x3(in_, out):\n    return nn.Conv2d(in_, out, 3, padding=1)\n\n\nclass ConvRelu(nn.Module):\n    def __init__(self, in_, out):\n        super().__init__()\n        self.conv = conv3x3(in_, out)\n        self.activation = nn.ReLU(inplace=True)\n\n    def forward(self, x):\n        x = self.conv(x)\n        x = self.activation(x)\n        return x\n\n\nclass ConvBn2d(nn.Module):\n    def __init__(\n        self,\n        in_channels,\n        out_channels,\n        kernel_size=(3, 3),\n        stride=(1, 1),\n        padding=(1, 1),\n    ):\n        super(ConvBn2d, self).__init__()\n        self.conv = nn.Conv2d(\n            in_channels,\n            out_channels,\n            kernel_size=kernel_size,\n            stride=stride,\n            padding=padding,\n            bias=False,\n        )\n        self.bn = nn.BatchNorm2d(out_channels)\n\n    def forward(self, x):\n        x = self.conv(x)\n        x = self.bn(x)\n        return x\n\n\nclass SpatialAttentionGate(nn.Module):\n    def __init__(self, channel, reduction=16):\n        super(SpatialAttentionGate, self).__init__()\n        self.fc1 = nn.Conv2d(channel, reduction, kernel_size=1, padding=0)\n        self.fc2 = nn.Conv2d(reduction, 1, kernel_size=1, padding=0)\n\n    def forward(self, x):\n        x = self.fc1(x)\n        x = F.relu(x, inplace=True)\n        x = self.fc2(x)\n        x = torch.sigmoid(x)\n        # print(x.size())\n        return x\n\n\nclass UNetResNext_wo_pool_hyper(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.encoder = (\n            pretrainedmodels.se_resnext50_32x4d()\n        )  # torchvision.models.resnet152(pretrained=pretrained)\n\n        self.pool = nn.MaxPool2d(2, 2)\n        bottom_channel_nr = 512 * 4\n\n        self.input_adjust = nn.Sequential(\n            self.encoder.layer0.conv1,\n            self.encoder.layer0.bn1,\n            self.encoder.layer0.relu1,\n        )\n\n        self.conv1 = self.encoder.layer1\n        self.conv2 = self.encoder.layer2\n        self.conv3 = self.encoder.layer3\n        self.conv4 = self.encoder.layer4\n\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, is_deconv\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n\n        self.final = nn.Conv2d(num_filters * 2 * 2, num_classes, kernel_size=1)\n        self._mask_out = nn.Sequential(\n            nn.Conv2d(704, 64, kernel_size=3, stride=1, padding=1),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(64, 2, kernel_size=1, stride=1, padding=0),\n        )\n\n    def forward(self, x):\n        input_adjust = self.input_adjust(x)\n        conv1 = self.conv1(input_adjust)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n\n        center = self.conv4(conv3)\n\n        dec4 = self.dec4(center)\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(torch.cat([dec2, conv1], 1))\n\n        hcol = torch.cat(\n            [\n                dec1,\n                F.upsample(\n                    dec2, scale_factor=2, mode=\"bilinear\"\n                ),  # ,align_corners=False\n                F.upsample(\n                    dec3, scale_factor=4, mode=\"bilinear\"\n                ),  # ,align_corners=False\n                F.upsample(dec4, scale_factor=8, mode=\"bilinear\"),\n            ],\n            dim=1,\n        )  # ,align_corners=False\n        # hcol = F.dropout2d(hcol, p = 0.5)\n        # print('input_adjust ', input_adjust.shape, '\\ncenter ' , center.shape, '\\ndec1: ', dec1.shape)\n        # print('hcol ', hcol.shape,   '\\nout ', self._mask_out(hcol).shape)\n        return self._mask_out(hcol)\n\n\nclass UNetResNext50(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        self.encoder = (\n            pretrainedmodels.se_resnext50_32x4d()\n        )  # torchvision.models.resnet152(pretrained=pretrained)\n        bottom_channel_nr = 512 * 4\n\n        self.relu = nn.ReLU(inplace=True)\n        self.pool = nn.MaxPool2d(2, 2)\n        # self.input_adjust =  nn.Sequential(self.encoder.layer0, self.pool)\n\n        self.input_adjust = self.encoder.layer0\n        self.conv1 = self.encoder.layer1\n        self.conv2 = self.encoder.layer2\n        self.conv3 = self.encoder.layer3\n        self.conv4 = self.encoder.layer4\n\n        self.center = DecoderCenter(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, False\n        )\n\n        self.dec5 = DecoderBlockV2(\n            bottom_channel_nr + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            num_filters * 2 * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec0 = ConvRelu(num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        input_adjust = self.input_adjust(x)\n        conv1 = self.conv1(input_adjust)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        conv4 = self.conv4(conv3)\n        center = self.center(conv4)\n        dec5 = self.dec5(torch.cat([center, conv4], 1))\n        dec4 = self.dec4(torch.cat([dec5, conv3], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv2], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv1], 1))\n        dec1 = self.dec1(dec2)\n        dec0 = self.dec0(dec1)\n        # print('input_adjust ', input_adjust.shape, '\\ncenter ' , center.shape, '\\ndec1: ', dec1.shape, self.final(F.dropout2d(dec0, p=self.dropout_2d).shape))\n        return self.final(F.dropout2d(dec0, p=self.dropout_2d))\n\n\n\"\"\"\n        center = self.conv4(conv3)\n        dec4 = self.dec4(center)\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = F.dropout2d(self.dec1(torch.cat([dec2, conv1], 1)), p=self.dropout_2d)\n        return self.final(dec1)\n        \n\"\"\"\n\n\nclass UNetResNext(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n\n        if encoder_depth == 34:\n            self.encoder = resnext34()\n            bottom_channel_nr = 512\n        elif encoder_depth == 101:\n            self.encoder = resnext101()\n            bottom_channel_nr = 2048\n        elif encoder_depth == 152:\n            self.encoder = resnext152()\n            bottom_channel_nr = 2048\n\n        else:\n            raise NotImplementedError(\n                \"only 34, 101, 152 version of Resnext are implemented\"\n            )\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        self.relu = nn.ReLU(inplace=True)\n\n        self.conv1 = nn.Sequential(\n            self.encoder.conv1, self.encoder.bn1, self.encoder.relu, self.pool\n        )  ## this pool to delete\n\n        self.conv2 = self.encoder.layer1\n        self.conv3 = self.encoder.layer2\n        self.conv4 = self.encoder.layer3\n        self.conv5 = self.encoder.layer4\n        self.center = DecoderCenter(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, False\n        )\n\n        self.dec5 = DecoderBlockV2(\n            bottom_channel_nr + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            bottom_channel_nr // 8 + num_filters * 2,\n            num_filters * 2 * 2,\n            num_filters * 2 * 2,\n            is_deconv,\n        )\n        self.dec1 = DecoderBlockV2(\n            num_filters * 2 * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec0 = ConvRelu(num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.conv1(x)\n        conv2 = self.conv2(conv1)\n        conv3 = self.conv3(conv2)\n        conv4 = self.conv4(conv3)\n        conv5 = self.conv5(conv4)\n        # pool = self.pool(conv5) # deleted pooling\n        # center = self.center(pool)\n        center = self.center(conv5)\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(dec2)\n        dec0 = self.dec0(dec1)\n\n        return self.final(F.dropout2d(dec0, p=self.dropout_2d))\n\n\nclass UNetPNASNet(nn.Module):\n    def __init__(\n        self,\n        encoder_depth,\n        num_classes,\n        num_filters=32,\n        dropout_2d=0.2,\n        pretrained=False,\n        is_deconv=False,\n    ):\n        super().__init__()\n        self.num_classes = num_classes\n        self.dropout_2d = dropout_2d\n        self.encoder = PNASNet5Large()\n        bottom_channel_nr = 4320\n        self.center = DecoderCenter(\n            bottom_channel_nr, num_filters * 8 * 2, num_filters * 8, False\n        )\n\n        self.dec5 = DecoderBlockV2(\n            bottom_channel_nr + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec4 = DecoderBlockV2(\n            bottom_channel_nr // 2 + num_filters * 8,\n            num_filters * 8 * 2,\n            num_filters * 8,\n            is_deconv,\n        )\n        self.dec3 = DecoderBlockV2(\n            bottom_channel_nr // 4 + num_filters * 8,\n            num_filters * 4 * 2,\n            num_filters * 2,\n            is_deconv,\n        )\n        self.dec2 = DecoderBlockV2(\n            num_filters * 4 * 4, num_filters * 4 * 4, num_filters, is_deconv\n        )\n        self.dec1 = DecoderBlockV2(\n            num_filters * 2 * 2, num_filters * 2 * 2, num_filters, is_deconv\n        )\n        self.dec0 = ConvRelu(num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        features = self.encoder.features(x)\n        relued_features = self.encoder.relu(features)\n        avg_pooled_features = self.encoder.avg_pool(relued_features)\n        center = self.center(avg_pooled_features)\n        dec5 = self.dec5(torch.cat([center, avg_pooled_features], 1))\n        dec4 = self.dec4(torch.cat([dec5, relued_features], 1))\n        dec3 = self.dec3(torch.cat([dec4, features], 1))\n        dec2 = self.dec2(dec3)\n        dec1 = self.dec1(dec2)\n        dec0 = self.dec0(dec1)\n        return self.final(F.dropout2d(dec0, p=self.dropout_2d))\n\n\nclass TernausNetV2(nn.Module):\n    \"\"\"Variation of the UNet architecture with InplaceABN encoder.\"\"\"\n\n    \"https://github.com/ternaus/TernausNetV2 by Ternaus 2018\"\n\n    def __init__(\n        self, num_classes=1, num_filters=32, is_deconv=False, num_input_channels=3\n    ):\n        \"\"\"\n        Args:\n            num_classes: Number of output classes.\n            num_filters:\n            is_deconv:\n                True: Deconvolution layer is used in the Decoder block.\n                False: Upsampling layer is used in the Decoder block.\n            num_input_channels: Number of channels in the input images.\n        \"\"\"\n        super(TernausNetV2, self).__init__()\n\n        self.pool = nn.MaxPool2d(2, 2)\n\n        encoder = WiderResNet(structure=[3, 3, 6, 3, 1, 1], classes=0)\n        state_dict = torch.load(\"./modules/wide_resnet38_ipabn_lr_256.pth.tar\")[\n            \"state_dict\"\n        ]\n        state_dict = {\".\".join(k.split(\".\")[1:]): v for k, v in state_dict.items()}\n        encoder.load_state_dict(state_dict, strict=False)\n\n        self.conv1 = Sequential(\n            OrderedDict(\n                [(\"conv1\", nn.Conv2d(num_input_channels, 64, 3, padding=1, bias=False))]\n            )\n        )\n        self.conv2 = encoder.mod2\n        self.conv3 = encoder.mod3\n        self.conv4 = encoder.mod4\n        self.conv5 = encoder.mod5\n\n        self.center = DecoderBlockTernaus(\n            1024, num_filters * 8, num_filters * 8, is_deconv=is_deconv\n        )\n        self.dec5 = DecoderBlockTernaus(\n            1024 + num_filters * 8,\n            num_filters * 8,\n            num_filters * 8,\n            is_deconv=is_deconv,\n        )\n        self.dec4 = DecoderBlockTernaus(\n            512 + num_filters * 8, num_filters * 8, num_filters * 8, is_deconv=is_deconv\n        )\n        self.dec3 = DecoderBlockTernaus(\n            256 + num_filters * 8, num_filters * 2, num_filters * 2, is_deconv=is_deconv\n        )\n        self.dec2 = DecoderBlockTernaus(\n            128 + num_filters * 2, num_filters * 2, num_filters, is_deconv=is_deconv\n        )\n        self.dec1 = ConvRelu(64 + num_filters, num_filters)\n        self.final = nn.Conv2d(num_filters, num_classes, kernel_size=1)\n\n    def forward(self, x):\n        conv1 = self.conv1(x)\n        conv2 = self.conv2(self.pool(conv1))\n        conv3 = self.conv3(self.pool(conv2))\n        conv4 = self.conv4(self.pool(conv3))\n        conv5 = self.conv5(self.pool(conv4))\n\n        center = self.center(self.pool(conv5))\n\n        dec5 = self.dec5(torch.cat([center, conv5], 1))\n\n        dec4 = self.dec4(torch.cat([dec5, conv4], 1))\n        dec3 = self.dec3(torch.cat([dec4, conv3], 1))\n        dec2 = self.dec2(torch.cat([dec3, conv2], 1))\n        dec1 = self.dec1(torch.cat([dec2, conv1], 1))\n        return self.final(dec1)\n\n\nclass DecoderBlockTernaus(nn.Module):\n    \"\"\"Paramaters for Deconvolution were chosen to avoid artifacts, following\n    link https://distill.pub/2016/deconv-checkerboard/\n    \"\"\"\n\n    def __init__(self, in_channels, middle_channels, out_channels, is_deconv=False):\n        super(DecoderBlock, self).__init__()\n        self.in_channels = in_channels\n\n        if is_deconv:\n            self.block = nn.Sequential(\n                ConvRelu(in_channels, middle_channels),\n                nn.ConvTranspose2d(\n                    middle_channels, out_channels, kernel_size=4, stride=2, padding=1\n                ),\n                nn.ReLU(inplace=True),\n            )\n        else:\n            self.block = nn.Sequential(\n                nn.Upsample(scale_factor=2, mode=\"nearest\"),\n                ConvRelu(in_channels, middle_channels),\n                ConvRelu(middle_channels, out_channels),\n            )\n\n    def forward(self, x):\n        return self.block(x)\n\n\n\"\"\"\ndef AttentionBlock(x,shortcut,i_filters):\n    g1 = Conv2D(i_filters,kernel_size = 1)(shortcut) \n    g1 = BatchNormalization()(g1)\n    x1 = Conv2D(i_filters,kernel_size = 1)(x) \n    x1 = BatchNormalization()(x1)\n\n    g1_x1 = Add()([g1,x1])\n    psi = Activation('relu')(g1_x1)\n    psi = Conv2D(1,kernel_size = 1)(psi) \n    psi = BatchNormalization()(psi)\n    psi = Activation('sigmoid'))(psi)\n    x = Multiply()([x,psi])\n    return x\n\"\"\"\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/common_blocks/utils.py",
    "content": "import logging\nimport os\nimport pathlib\nimport random\nimport sys\nimport time\nfrom itertools import chain\nfrom collections import Iterable\nimport gc\n\nimport numpy as np\nimport pandas as pd\nimport torch\nfrom PIL import Image\nimport matplotlib.pyplot as plt\nfrom attrdict import AttrDict\nfrom tqdm import tqdm\nfrom pycocotools import mask as cocomask\nfrom sklearn.model_selection import BaseCrossValidator\nfrom steppy.base import BaseTransformer, Step\nfrom steppy.utils import get_logger\nimport yaml\nfrom imgaug import augmenters as iaa\nimport imgaug as ia\nimport torch\n\nNEPTUNE_CONFIG_PATH = str(\n    pathlib.Path(__file__).resolve().parents[1] / \"configs\" / \"neptune.yaml\"\n)\nlogger = get_logger()\n\n\ndef read_yaml(fallback_file=NEPTUNE_CONFIG_PATH):\n    with open(fallback_file) as f:\n        config = yaml.load(f)\n    return AttrDict(config)\n\n\ndef init_logger():\n    logger = logging.getLogger(\"salt-detection\")\n    logger.setLevel(logging.INFO)\n    message_format = logging.Formatter(\n        fmt=\"%(asctime)s %(name)s >>> %(message)s\", datefmt=\"%Y-%m-%d %H-%M-%S\"\n    )\n\n    # console handler for validation info\n    ch_va = logging.StreamHandler(sys.stdout)\n    ch_va.setLevel(logging.INFO)\n\n    ch_va.setFormatter(fmt=message_format)\n\n    # add the handlers to the logger\n    logger.addHandler(ch_va)\n\n    return logger\n\n\ndef get_logger():\n    return logging.getLogger(\"salt-detection\")\n\n\ndef create_submission(meta, predictions):\n    output = []\n    for image_id, mask in zip(meta[\"id\"].values, predictions):\n        rle_encoded = \" \".join(str(rle) for rle in run_length_encoding(mask))\n        output.append([image_id, rle_encoded])\n\n    submission = pd.DataFrame(output, columns=[\"id\", \"rle_mask\"]).astype(str)\n    return submission\n\n\ndef encode_rle(predictions):\n    return [run_length_encoding(mask) for mask in predictions]\n\n\ndef read_masks(masks_filepaths):\n    masks = []\n    for mask_filepath in tqdm(masks_filepaths):\n        mask = Image.open(mask_filepath)\n        mask = np.asarray(\n            mask.convert(\"L\").point(lambda x: 0 if x < 128 else 1)\n        ).astype(np.uint8)\n        masks.append(mask)\n    return masks\n\n\ndef read_images(filepaths):\n    images = []\n    for filepath in filepaths:\n        image = np.array(Image.open(filepath))\n        images.append(image)\n    return images\n\n\ndef run_length_encoding(x):\n    # https://www.kaggle.com/c/data-science-bowl-2018/discussion/48561#\n    bs = np.where(x.T.flatten())[0]\n\n    rle = []\n    prev = -2\n    for b in bs:\n        if b > prev + 1:\n            rle.extend((b + 1, 0))\n        rle[-1] += 1\n        prev = b\n\n    return rle\n\n\ndef run_length_decoding(mask_rle, shape):\n    \"\"\"\n    Based on https://www.kaggle.com/msl23518/visualize-the-stage1-test-solution and modified\n    Args:\n        mask_rle: run-length as string formatted (start length)\n        shape: (height, width) of array to return\n    Returns:\n        numpy array, 1 - mask, 0 - background\n    \"\"\"\n    s = mask_rle.split()\n    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]\n    starts -= 1\n    ends = starts + lengths\n    img = np.zeros(shape[1] * shape[0], dtype=np.uint8)\n    for lo, hi in zip(starts, ends):\n        img[lo:hi] = 1\n    return img.reshape((shape[1], shape[0])).T\n\n\ndef generate_metadata(train_images_dir, test_images_dir, depths_filepath):\n    depths = pd.read_csv(depths_filepath)\n\n    metadata = {}\n    for filename in tqdm(os.listdir(os.path.join(train_images_dir, \"images\"))):\n        image_filepath = os.path.join(train_images_dir, \"images\", filename)\n        mask_filepath = os.path.join(train_images_dir, \"masks\", filename)\n        image_id = filename.split(\".\")[0]\n        depth = depths[depths[\"id\"] == image_id][\"z\"].values[0]\n\n        metadata.setdefault(\"file_path_image\", []).append(image_filepath)\n        metadata.setdefault(\"file_path_mask\", []).append(mask_filepath)\n        metadata.setdefault(\"is_train\", []).append(1)\n        metadata.setdefault(\"id\", []).append(image_id)\n        metadata.setdefault(\"z\", []).append(depth)\n\n    for filename in tqdm(os.listdir(os.path.join(test_images_dir, \"images\"))):\n        image_filepath = os.path.join(test_images_dir, \"images\", filename)\n        image_id = filename.split(\".\")[0]\n        depth = depths[depths[\"id\"] == image_id][\"z\"].values[0]\n\n        metadata.setdefault(\"file_path_image\", []).append(image_filepath)\n        metadata.setdefault(\"file_path_mask\", []).append(None)\n        metadata.setdefault(\"is_train\", []).append(0)\n        metadata.setdefault(\"id\", []).append(image_id)\n        metadata.setdefault(\"z\", []).append(depth)\n\n    return pd.DataFrame(metadata)\n\n\ndef sigmoid(x):\n    return 1.0 / (1 + np.exp(-x))\n\n\ndef softmax(X, theta=1.0, axis=None):\n    \"\"\"\n    https://nolanbconaway.github.io/blog/2017/softmax-numpy\n    Compute the softmax of each element along an axis of X.\n    Parameters\n    ----------\n    X: ND-Array. Probably should be floats.\n    theta (optional): float parameter, used as a multiplier\n        prior to exponentiation. Default = 1.0\n    axis (optional): axis to compute values along. Default is the\n        first non-singleton axis.\n    Returns an array the same size as X. The result will sum to 1\n    along the specified axis.\n    \"\"\"\n\n    # make X at least 2d\n    y = np.atleast_2d(X)\n\n    # find axis\n    if axis is None:\n        axis = next(j[0] for j in enumerate(y.shape) if j[1] > 1)\n\n    # multiply y against the theta parameter,\n    y = y * float(theta)\n\n    # subtract the max for numerical stability\n    y = y - np.expand_dims(np.max(y, axis=axis), axis)\n\n    # exponentiate y\n    y = np.exp(y)\n\n    # take the sum along the specified axis\n    ax_sum = np.expand_dims(np.sum(y, axis=axis), axis)\n\n    # finally: divide elementwise\n    p = y / ax_sum\n\n    # flatten if X was 1D\n    if len(X.shape) == 1:\n        p = p.flatten()\n\n    return p\n\n\ndef from_pil(*images):\n    images = [np.array(image) for image in images]\n    if len(images) == 1:\n        return images[0]\n    else:\n        return images\n\n\ndef to_pil(*images):\n    images = [Image.fromarray((image).astype(np.uint8)) for image in images]\n    if len(images) == 1:\n        return images[0]\n    else:\n        return images\n\n\ndef make_apply_transformer(func, output_name=\"output\", apply_on=None):\n    class StaticApplyTransformer(BaseTransformer):\n        def transform(self, *args, **kwargs):\n            self.check_input(*args, **kwargs)\n\n            if not apply_on:\n                iterator = zip(*args, *kwargs.values())\n            else:\n                iterator = zip(*args, *[kwargs[key] for key in apply_on])\n\n            output = []\n            for func_args in tqdm(iterator, total=self.get_arg_length(*args, **kwargs)):\n                output.append(func(*func_args))\n            return {output_name: output}\n\n        @staticmethod\n        def check_input(*args, **kwargs):\n            if len(args) and len(kwargs) == 0:\n                raise Exception(\"Input must not be empty\")\n\n            arg_length = None\n            for arg in chain(args, kwargs.values()):\n                if not isinstance(arg, Iterable):\n                    raise Exception(\"All inputs must be iterable\")\n                arg_length_loc = None\n                try:\n                    arg_length_loc = len(arg)\n                except:\n                    pass\n                if arg_length_loc is not None:\n                    if arg_length is None:\n                        arg_length = arg_length_loc\n                    elif arg_length_loc != arg_length:\n                        raise Exception(\"All inputs must be the same length\")\n\n        @staticmethod\n        def get_arg_length(*args, **kwargs):\n            arg_length = None\n            for arg in chain(args, kwargs.values()):\n                if arg_length is None:\n                    try:\n                        arg_length = len(arg)\n                    except:\n                        pass\n                if arg_length is not None:\n                    return arg_length\n\n    return StaticApplyTransformer()\n\n\ndef rle_from_binary(prediction):\n    prediction = np.asfortranarray(prediction)\n    return cocomask.encode(prediction)\n\n\ndef binary_from_rle(rle):\n    return cocomask.decode(rle)\n\n\ndef get_segmentations(labeled):\n    nr_true = labeled.max()\n    segmentations = []\n    for i in range(1, nr_true + 1):\n        msk = labeled == i\n        segmentation = rle_from_binary(msk.astype(\"uint8\"))\n        segmentation[\"counts\"] = segmentation[\"counts\"].decode(\"UTF-8\")\n        segmentations.append(segmentation)\n    return segmentations\n\n\ndef get_crop_pad_sequence(vertical, horizontal):\n    top = int(vertical / 2)\n    bottom = vertical - top\n    right = int(horizontal / 2)\n    left = horizontal - right\n    return (top, right, bottom, left)\n\n\ndef get_list_of_image_predictions(batch_predictions):\n    image_predictions = []\n    for batch_pred in batch_predictions:\n        image_predictions.extend(list(batch_pred))\n    return image_predictions\n\n\ndef set_seed(seed):\n    random.seed(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    if torch.cuda.is_available():\n        torch.cuda.manual_seed_all(seed)\n\n\nclass ImgAug:\n    def __init__(self, augmenters):\n        if not isinstance(augmenters, list):\n            augmenters = [augmenters]\n        self.augmenters = augmenters\n        self.seq_det = None\n\n    def _pre_call_hook(self):\n        seq = iaa.Sequential(self.augmenters)\n        seq = reseed(seq, deterministic=True)\n        self.seq_det = seq\n\n    def transform(self, *images):\n        images = [self.seq_det.augment_image(image) for image in images]\n        if len(images) == 1:\n            return images[0]\n        else:\n            return images\n\n    def __call__(self, *args):\n        self._pre_call_hook()\n        return self.transform(*args)\n\n\ndef get_seed():\n    seed = int(time.time()) + int(os.getpid())\n    return seed\n\n\ndef reseed(augmenter, deterministic=True):\n    augmenter.random_state = ia.new_random_state(get_seed())\n    if deterministic:\n        augmenter.deterministic = True\n\n    for lists in augmenter.get_children_lists():\n        for aug in lists:\n            aug = reseed(aug, deterministic=True)\n    return augmenter\n\n\nclass KFoldBySortedValue(BaseCrossValidator):\n    def __init__(self, n_splits=3, shuffle=False, random_state=None):\n        self.n_splits = n_splits\n        self.shuffle = shuffle\n        self.random_state = random_state\n\n    def _iter_test_indices(self, X, y=None, groups=None):\n        n_samples = X.shape[0]\n        indices = np.arange(n_samples)\n\n        sorted_idx_vals = sorted(zip(indices, X), key=lambda x: x[1])\n        indices = [idx for idx, val in sorted_idx_vals]\n\n        for split_start in range(self.n_splits):\n            split_indeces = indices[split_start :: self.n_splits]\n            yield split_indeces\n\n    def get_n_splits(self, X=None, y=None, groups=None):\n        return self.n_splits\n\n\ndef plot_list(images=[], labels=[]):\n    n_img = len(images)\n    n_lab = len(labels)\n    n = n_lab + n_img\n    fig, axs = plt.subplots(1, n, figsize=(16, 12))\n    for i, image in enumerate(images):\n        axs[i].imshow(image)\n        axs[i].set_xticks([])\n        axs[i].set_yticks([])\n    for j, label in enumerate(labels):\n        axs[n_img + j].imshow(label, cmap=\"nipy_spectral\")\n        axs[n_img + j].set_xticks([])\n        axs[n_img + j].set_yticks([])\n    plt.show()\n\n\ndef clean_object_from_memory(obj):\n    del obj\n    gc.collect()\n    if torch.cuda.is_available():\n        torch.cuda.empty_cache()\n\n\nclass FineTuneStep(Step):\n    def __init__(\n        self,\n        name,\n        transformer,\n        experiment_directory,\n        input_data=None,\n        input_steps=None,\n        adapter=None,\n        is_trainable=False,\n        cache_output=False,\n        persist_output=False,\n        load_persisted_output=False,\n        force_fitting=False,\n        fine_tuning=False,\n        persist_upstream_pipeline_structure=False,\n    ):\n        super().__init__(\n            name,\n            transformer,\n            experiment_directory,\n            input_data=input_data,\n            input_steps=input_steps,\n            adapter=adapter,\n            is_trainable=is_trainable,\n            cache_output=cache_output,\n            persist_output=persist_output,\n            load_persisted_output=load_persisted_output,\n            force_fitting=force_fitting,\n            persist_upstream_pipeline_structure=persist_upstream_pipeline_structure,\n        )\n        self.fine_tuning = fine_tuning\n\n    def _cached_fit_transform(self, step_inputs):\n        if self.is_trainable:\n            if self.transformer_is_cached:\n                if self.force_fitting and self.fine_tuning:\n                    raise ValueError(\n                        \"only one of force_fitting or fine_tuning can be True\"\n                    )\n                elif self.force_fitting:\n                    logger.info(\n                        \"Step {}, fitting and transforming...\".format(self.name)\n                    )\n                    step_output_data = self.transformer.fit_transform(**step_inputs)\n                    logger.info(\n                        \"Step {}, persisting transformer to the {}\".format(\n                            self.name, self.exp_dir_transformers_step\n                        )\n                    )\n                    self.transformer.persist(self.exp_dir_transformers_step)\n                elif self.fine_tuning:\n                    logger.info(\n                        \"Step {}, loading transformer from the {}\".format(\n                            self.name, self.exp_dir_transformers_step\n                        )\n                    )\n                    self.transformer.load(self.exp_dir_transformers_step)\n                    logger.info(\"Step {}, transforming...\".format(self.name))\n                    step_output_data = self.transformer.fit_transform(**step_inputs)\n                    self.transformer.persist(self.exp_dir_transformers_step)\n                else:\n                    logger.info(\n                        \"Step {}, loading transformer from the {}\".format(\n                            self.name, self.exp_dir_transformers_step\n                        )\n                    )\n                    self.transformer.load(self.exp_dir_transformers_step)\n                    logger.info(\"Step {}, transforming...\".format(self.name))\n                    step_output_data = self.transformer.transform(**step_inputs)\n            else:\n                logger.info(\"Step {}, fitting and transforming...\".format(self.name))\n                step_output_data = self.transformer.fit_transform(**step_inputs)\n                logger.info(\n                    \"Step {}, persisting transformer to the {}\".format(\n                        self.name, self.exp_dir_transformers_step\n                    )\n                )\n                self.transformer.persist(self.exp_dir_transformers_step)\n        else:\n            logger.info(\"Step {}, transforming...\".format(self.name))\n            step_output_data = self.transformer.transform(**step_inputs)\n\n        if self.cache_output:\n            logger.info(\n                \"Step {}, caching output to the {}\".format(\n                    self.name, self.exp_dir_cache_step\n                )\n            )\n            self._persist_output(step_output_data, self.exp_dir_cache_step)\n        if self.persist_output:\n            logger.info(\n                \"Step {}, persisting output to the {}\".format(\n                    self.name, self.exp_dir_outputs_step\n                )\n            )\n            self._persist_output(step_output_data, self.exp_dir_outputs_step)\n        return step_output_data\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/configs/neptune.yaml",
    "content": "project: neptune-ml/Salt-Detection\n\nname: tgs_salt_identification_challenge\ntags: [solution-3]\n\nmetric:\n  channel: 'IOUT'\n  goal: maximize\n\n#Comment out if not in Cloud Environment\n#pip-requirements-file: requirements.txt\n\nexclude:\n- .git\n- .idea\n- .ipynb_checkpoints\n- output\n- imgs\n- neptune.log\n- offline_job.log\n- notebooks\n\nparameters:\n  # Data Paths\n  train_images_dir: ../input/train\n  test_images_dir: ../input/test\n  metadata_filepath: ./meta/files/metadata.csv\n  depths_filepath: ../input/depths.csv\n  experiment_dir: ./experiments/resnets_regularization\n\n    # Execution\n  fine_tuning: 1\n  overwrite: 1\n  num_workers: 8\n  num_threads: 8\n  kaggle_message: 'solution-5'\n  image_source: disk\n  pin_memory: 1\n  loader_mode: resize_and_pad\n  resize_target_size: 102\n  pad_size: 13\n  pad_method: edge\n  target_format: 'png'\n  dev_mode_size: 20\n  n_cv_splits: 6\n  shuffle: 1\n\n  # General parameters\n  image_h: 128\n  image_w: 128\n  image_channels: 3\n\n  # U-Net parameters\n  unet_output_channels: 2\n  unet_activation: 'sigmoid'\n  encoder: ResNet152\n\n  # U-Net from scratch parameters\n  nr_unet_outputs: 1\n  n_filters: 32\n  conv_kernel: 3\n  pool_kernel: 3\n  pool_stride: 2\n  repeat_blocks: 4\n\n  # Loss\n  dice_weight: 0\n  bce_weight: 1.0\n\n  # Training schedule\n  epochs_nr: 75\n  batch_size_train: 20\n  batch_size_inference: 20\n  lr: 0.0000007\n  momentum: 0.9\n  gamma: 0.95\n  patience: 75\n  validation_metric_name: 'iout'\n  minimize_validation_metric: 0\n\n  # Regularization\n  use_batch_norm: 1\n  l2_reg_conv: 0.0001\n  l2_reg_dense: 0.0\n  dropout_conv: 0.0\n  dropout_dense: 0.0\n\n  # Postprocessing\n  threshold_masks: 0.45\n  tta_aggregation_method: mean\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/__init__.py",
    "content": "from .bn import ABN, InPlaceABN, InPlaceABNWrapper\nfrom .misc import GlobalAvgPool2d\nfrom .residual import IdentityResidualBlock\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/bn.py",
    "content": "from collections import OrderedDict, Iterable\nfrom itertools import repeat\n\nimport torch\nimport torch.nn as nn\n\nimport torch.autograd as autograd\n\nfrom .functions import inplace_abn\n\n\ndef _pair(x):\n    if isinstance(x, Iterable):\n        return x\n    return tuple(repeat(x, 2))\n\n\nclass ABN(nn.Sequential):\n    \"\"\"Activated Batch Normalization\n\n    This gathers a `BatchNorm2d` and an activation function in a single module\n    \"\"\"\n\n    def __init__(self, num_features, activation=nn.ReLU(inplace=True), **kwargs):\n        \"\"\"Creates an Activated Batch Normalization module\n\n        Parameters\n        ----------\n        num_features : int\n            Number of feature channels in the input and output.\n        activation : nn.Module\n            Module used as an activation function.\n        kwargs\n            All other arguments are forwarded to the `BatchNorm2d` constructor.\n        \"\"\"\n        super(ABN, self).__init__(\n            OrderedDict(\n                [(\"bn\", nn.BatchNorm2d(num_features, **kwargs)), (\"act\", activation)]\n            )\n        )\n\n\nclass InPlaceABN(nn.Module):\n    \"\"\"InPlace Activated Batch Normalization\"\"\"\n\n    def __init__(\n        self,\n        num_features,\n        eps=1e-5,\n        momentum=0.1,\n        affine=True,\n        activation=\"leaky_relu\",\n        slope=0.01,\n    ):\n        \"\"\"Creates an InPlace Activated Batch Normalization module\n\n        Parameters\n        ----------\n        num_features : int\n            Number of feature channels in the input and output.\n        eps : float\n            Small constant to prevent numerical issues.\n        momentum : float\n            Momentum factor applied to compute running statistics as.\n        affine : bool\n            If `True` apply learned scale and shift transformation after normalization.\n        activation : str\n            Name of the activation functions, one of: `leaky_relu`, `elu` or `none`.\n        slope : float\n            Negative slope for the `leaky_relu` activation.\n        \"\"\"\n        super(InPlaceABN, self).__init__()\n        self.num_features = num_features\n        self.affine = affine\n        self.eps = eps\n        self.momentum = momentum\n        self.activation = activation\n        self.slope = slope\n        if self.affine:\n            self.weight = nn.Parameter(torch.Tensor(num_features))\n            self.bias = nn.Parameter(torch.Tensor(num_features))\n        else:\n            self.register_parameter(\"weight\", None)\n            self.register_parameter(\"bias\", None)\n        self.register_buffer(\"running_mean\", torch.zeros(num_features))\n        self.register_buffer(\"running_var\", torch.ones(num_features))\n        self.reset_parameters()\n\n    def reset_parameters(self):\n        self.running_mean.zero_()\n        self.running_var.fill_(1)\n        if self.affine:\n            self.weight.data.fill_(1)\n            self.bias.data.zero_()\n\n    def forward(self, x):\n        return inplace_abn(\n            x,\n            self.weight,\n            self.bias,\n            autograd.Variable(self.running_mean),\n            autograd.Variable(self.running_var),\n            self.training,\n            self.momentum,\n            self.eps,\n            self.activation,\n            self.slope,\n        )\n\n    def __repr__(self):\n        rep = (\n            \"{name}({num_features}, eps={eps}, momentum={momentum},\"\n            \" affine={affine}, activation={activation}\"\n        )\n        if self.activation == \"leaky_relu\":\n            rep += \" slope={slope})\"\n        else:\n            rep += \")\"\n        return rep.format(name=self.__class__.__name__, **self.__dict__)\n\n\nclass InPlaceABNWrapper(nn.Module):\n    \"\"\"Wrapper module to make `InPlaceABN` compatible with `ABN`\"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(InPlaceABNWrapper, self).__init__()\n        self.bn = InPlaceABN(*args, **kwargs)\n\n    def forward(self, x):\n        return self.bn(x)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/build.py",
    "content": "import os\n\nfrom torch.utils.ffi import create_extension\n\nsources = [\"src/lib_cffi.cpp\"]\nheaders = [\"src/lib_cffi.h\"]\nextra_objects = [\"src/bn.o\"]\nwith_cuda = True\n\nthis_file = os.path.dirname(os.path.realpath(__file__))\nextra_objects = [os.path.join(this_file, fname) for fname in extra_objects]\n\nffi = create_extension(\n    \"_ext\",\n    headers=headers,\n    sources=sources,\n    relative_to=__file__,\n    with_cuda=with_cuda,\n    extra_objects=extra_objects,\n    extra_compile_args=[\"-std=c++11\"],\n)\n\nif __name__ == \"__main__\":\n    ffi.build()\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/build.sh",
    "content": "#!/bin/bash\n\n# Configuration\nCUDA_GENCODE=\"\\\n-gencode=arch=compute_61,code=sm_61 \\\n-gencode=arch=compute_52,code=sm_52 \\\n-gencode=arch=compute_50,code=sm_50\"\n\n\ncd src\nnvcc -I/usr/local/cuda/include --expt-extended-lambda -O3 -c -o bn.o bn.cu -x cu -Xcompiler -fPIC -std=c++11 ${CUDA_GENCODE}\ncd ..\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/functions.py",
    "content": "import torch.autograd as autograd\nimport torch.cuda.comm as comm\nfrom torch.autograd.function import once_differentiable\n\nfrom . import _ext\n\n# Activation names\nACT_LEAKY_RELU = \"leaky_relu\"\nACT_ELU = \"elu\"\nACT_NONE = \"none\"\n\n\ndef _check(fn, *args, **kwargs):\n    success = fn(*args, **kwargs)\n    if not success:\n        raise RuntimeError(\"CUDA Error encountered in {}\".format(fn))\n\n\ndef _broadcast_shape(x):\n    out_size = []\n    for i, s in enumerate(x.size()):\n        if i != 1:\n            out_size.append(1)\n        else:\n            out_size.append(s)\n    return out_size\n\n\ndef _reduce(x):\n    if len(x.size()) == 2:\n        return x.sum(dim=0)\n    else:\n        n, c = x.size()[0:2]\n        return x.contiguous().view((n, c, -1)).sum(2).sum(0)\n\n\ndef _count_samples(x):\n    count = 1\n    for i, s in enumerate(x.size()):\n        if i != 1:\n            count *= s\n    return count\n\n\ndef _act_forward(ctx, x):\n    if ctx.activation == ACT_LEAKY_RELU:\n        _check(_ext.leaky_relu_cuda, x, ctx.slope)\n    elif ctx.activation == ACT_ELU:\n        _check(_ext.elu_cuda, x)\n    elif ctx.activation == ACT_NONE:\n        pass\n\n\ndef _act_backward(ctx, x, dx):\n    if ctx.activation == ACT_LEAKY_RELU:\n        _check(_ext.leaky_relu_backward_cuda, x, dx, ctx.slope)\n        _check(_ext.leaky_relu_cuda, x, 1.0 / ctx.slope)\n    elif ctx.activation == ACT_ELU:\n        _check(_ext.elu_backward_cuda, x, dx)\n        _check(_ext.elu_inv_cuda, x)\n    elif ctx.activation == ACT_NONE:\n        pass\n\n\ndef _check_contiguous(*args):\n    if not all([mod is None or mod.is_contiguous() for mod in args]):\n        raise ValueError(\"Non-contiguous input\")\n\n\nclass InPlaceABN(autograd.Function):\n    @staticmethod\n    def forward(\n        ctx,\n        x,\n        weight,\n        bias,\n        running_mean,\n        running_var,\n        training=True,\n        momentum=0.1,\n        eps=1e-05,\n        activation=ACT_LEAKY_RELU,\n        slope=0.01,\n    ):\n        # Save context\n        ctx.training = training\n        ctx.momentum = momentum\n        ctx.eps = eps\n        ctx.activation = activation\n        ctx.slope = slope\n\n        n = _count_samples(x)\n\n        if ctx.training:\n            mean = x.new().resize_as_(running_mean)\n            var = x.new().resize_as_(running_var)\n            _check_contiguous(x, mean, var)\n            _check(_ext.bn_mean_var_cuda, x, mean, var)\n\n            # Update running stats\n            running_mean.mul_((1 - ctx.momentum)).add_(ctx.momentum * mean)\n            running_var.mul_((1 - ctx.momentum)).add_(ctx.momentum * var * n / (n - 1))\n        else:\n            mean, var = running_mean, running_var\n\n        _check_contiguous(x, mean, var, weight, bias)\n        _check(\n            _ext.bn_forward_cuda,\n            x,\n            mean,\n            var,\n            weight if weight is not None else x.new(),\n            bias if bias is not None else x.new(),\n            x,\n            x,\n            ctx.eps,\n        )\n\n        # Activation\n        _act_forward(ctx, x)\n\n        # Output\n        ctx.var = var\n        ctx.save_for_backward(x, weight, bias, running_mean, running_var)\n        ctx.mark_dirty(x)\n        return x\n\n    @staticmethod\n    @once_differentiable\n    def backward(ctx, dz):\n        z, weight, bias, running_mean, running_var = ctx.saved_tensors\n        dz = dz.contiguous()\n\n        # Undo activation\n        _act_backward(ctx, z, dz)\n\n        if ctx.needs_input_grad[0]:\n            dx = dz.new().resize_as_(dz)\n        else:\n            dx = None\n\n        if ctx.needs_input_grad[1]:\n            dweight = dz.new().resize_as_(running_mean).zero_()\n        else:\n            dweight = None\n\n        if ctx.needs_input_grad[2]:\n            dbias = dz.new().resize_as_(running_mean).zero_()\n        else:\n            dbias = None\n\n        if ctx.training:\n            edz = dz.new().resize_as_(running_mean)\n            eydz = dz.new().resize_as_(running_mean)\n            _check_contiguous(z, dz, weight, bias, edz, eydz)\n            _check(\n                _ext.bn_edz_eydz_cuda,\n                z,\n                dz,\n                weight if weight is not None else dz.new(),\n                bias if bias is not None else dz.new(),\n                edz,\n                eydz,\n                ctx.eps,\n            )\n        else:\n            # TODO: implement CUDA backward for inference mode\n            edz = dz.new().resize_as_(running_mean).zero_()\n            eydz = dz.new().resize_as_(running_mean).zero_()\n\n        _check_contiguous(dz, z, ctx.var, weight, bias, edz, eydz, dx, dweight, dbias)\n        _check(\n            _ext.bn_backard_cuda,\n            dz,\n            z,\n            ctx.var,\n            weight if weight is not None else dz.new(),\n            bias if bias is not None else dz.new(),\n            edz,\n            eydz,\n            dx if dx is not None else dz.new(),\n            dweight if dweight is not None else dz.new(),\n            dbias if dbias is not None else dz.new(),\n            ctx.eps,\n        )\n\n        del ctx.var\n\n        return dx, dweight, dbias, None, None, None, None, None, None, None\n\n\nclass InPlaceABNSync(autograd.Function):\n    @classmethod\n    def forward(\n        cls,\n        ctx,\n        x,\n        weight,\n        bias,\n        running_mean,\n        running_var,\n        extra,\n        training=True,\n        momentum=0.1,\n        eps=1e-05,\n        activation=ACT_LEAKY_RELU,\n        slope=0.01,\n    ):\n        # Save context\n        cls._parse_extra(ctx, extra)\n        ctx.training = training\n        ctx.momentum = momentum\n        ctx.eps = eps\n        ctx.activation = activation\n        ctx.slope = slope\n\n        n = _count_samples(x) * (ctx.master_queue.maxsize + 1)\n\n        if ctx.training:\n            mean = x.new().resize_(1, running_mean.size(0))\n            var = x.new().resize_(1, running_var.size(0))\n            _check_contiguous(x, mean, var)\n            _check(_ext.bn_mean_var_cuda, x, mean, var)\n\n            if ctx.is_master:\n                means, vars = [mean], [var]\n                for _ in range(ctx.master_queue.maxsize):\n                    mean_w, var_w = ctx.master_queue.get()\n                    ctx.master_queue.task_done()\n                    means.append(mean_w)\n                    vars.append(var_w)\n\n                means = comm.gather(means)\n                vars = comm.gather(vars)\n\n                mean = means.mean(0)\n                var = (vars + (mean - means) ** 2).mean(0)\n\n                tensors = comm.broadcast_coalesced(\n                    (mean, var), [mean.get_device()] + ctx.worker_ids\n                )\n                for ts, queue in zip(tensors[1:], ctx.worker_queues):\n                    queue.put(ts)\n            else:\n                ctx.master_queue.put((mean, var))\n                mean, var = ctx.worker_queue.get()\n                ctx.worker_queue.task_done()\n\n            # Update running stats\n            running_mean.mul_((1 - ctx.momentum)).add_(ctx.momentum * mean)\n            running_var.mul_((1 - ctx.momentum)).add_(ctx.momentum * var * n / (n - 1))\n        else:\n            mean, var = running_mean, running_var\n\n        _check_contiguous(x, mean, var, weight, bias)\n        _check(\n            _ext.bn_forward_cuda,\n            x,\n            mean,\n            var,\n            weight if weight is not None else x.new(),\n            bias if bias is not None else x.new(),\n            x,\n            x,\n            ctx.eps,\n        )\n\n        # Activation\n        _act_forward(ctx, x)\n\n        # Output\n        ctx.var = var\n        ctx.save_for_backward(x, weight, bias, running_mean, running_var)\n        ctx.mark_dirty(x)\n        return x\n\n    @staticmethod\n    @once_differentiable\n    def backward(ctx, dz):\n        z, weight, bias, running_mean, running_var = ctx.saved_tensors\n        dz = dz.contiguous()\n\n        # Undo activation\n        _act_backward(ctx, z, dz)\n\n        if ctx.needs_input_grad[0]:\n            dx = dz.new().resize_as_(dz)\n        else:\n            dx = None\n\n        if ctx.needs_input_grad[1]:\n            dweight = dz.new().resize_as_(running_mean).zero_()\n        else:\n            dweight = None\n\n        if ctx.needs_input_grad[2]:\n            dbias = dz.new().resize_as_(running_mean).zero_()\n        else:\n            dbias = None\n\n        if ctx.training:\n            edz = dz.new().resize_as_(running_mean)\n            eydz = dz.new().resize_as_(running_mean)\n            _check_contiguous(z, dz, weight, bias, edz, eydz)\n            _check(\n                _ext.bn_edz_eydz_cuda,\n                z,\n                dz,\n                weight if weight is not None else dz.new(),\n                bias if bias is not None else dz.new(),\n                edz,\n                eydz,\n                ctx.eps,\n            )\n\n            if ctx.is_master:\n                edzs, eydzs = [edz], [eydz]\n                for _ in range(len(ctx.worker_queues)):\n                    edz_w, eydz_w = ctx.master_queue.get()\n                    ctx.master_queue.task_done()\n                    edzs.append(edz_w)\n                    eydzs.append(eydz_w)\n\n                edz = comm.reduce_add(edzs) / (ctx.master_queue.maxsize + 1)\n                eydz = comm.reduce_add(eydzs) / (ctx.master_queue.maxsize + 1)\n\n                tensors = comm.broadcast_coalesced(\n                    (edz, eydz), [edz.get_device()] + ctx.worker_ids\n                )\n                for ts, queue in zip(tensors[1:], ctx.worker_queues):\n                    queue.put(ts)\n            else:\n                ctx.master_queue.put((edz, eydz))\n                edz, eydz = ctx.worker_queue.get()\n                ctx.worker_queue.task_done()\n        else:\n            edz = dz.new().resize_as_(running_mean).zero_()\n            eydz = dz.new().resize_as_(running_mean).zero_()\n\n        _check_contiguous(dz, z, ctx.var, weight, bias, edz, eydz, dx, dweight, dbias)\n        _check(\n            _ext.bn_backard_cuda,\n            dz,\n            z,\n            ctx.var,\n            weight if weight is not None else dz.new(),\n            bias if bias is not None else dz.new(),\n            edz,\n            eydz,\n            dx if dx is not None else dz.new(),\n            dweight if dweight is not None else dz.new(),\n            dbias if dbias is not None else dz.new(),\n            ctx.eps,\n        )\n\n        del ctx.var\n\n        return dx, dweight, dbias, None, None, None, None, None, None, None, None\n\n    @staticmethod\n    def _parse_extra(ctx, extra):\n        ctx.is_master = extra[\"is_master\"]\n        if ctx.is_master:\n            ctx.master_queue = extra[\"master_queue\"]\n            ctx.worker_queues = extra[\"worker_queues\"]\n            ctx.worker_ids = extra[\"worker_ids\"]\n        else:\n            ctx.master_queue = extra[\"master_queue\"]\n            ctx.worker_queue = extra[\"worker_queue\"]\n\n\ninplace_abn = InPlaceABN.apply\ninplace_abn_sync = InPlaceABNSync.apply\n\n__all__ = [\"inplace_abn\", \"inplace_abn_sync\"]\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/misc.py",
    "content": "import torch.nn as nn\n\n\nclass GlobalAvgPool2d(nn.Module):\n    def __init__(self):\n        \"\"\"Global average pooling over the input's spatial dimensions\"\"\"\n        super(GlobalAvgPool2d, self).__init__()\n\n    def forward(self, inputs):\n        in_size = inputs.size()\n        return inputs.view((in_size[0], in_size[1], -1)).mean(dim=2)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/residual.py",
    "content": "from collections import OrderedDict\n\nimport torch.nn as nn\n\nfrom .bn import ABN\n\n\nclass IdentityResidualBlock(nn.Module):\n    def __init__(\n        self,\n        in_channels,\n        channels,\n        stride=1,\n        dilation=1,\n        groups=1,\n        norm_act=ABN,\n        dropout=None,\n    ):\n        \"\"\"Configurable identity-mapping residual block\n\n        Parameters\n        ----------\n        in_channels : int\n            Number of input channels.\n        channels : list of int\n            Number of channels in the internal feature maps. Can either have two or three elements: if three construct\n            a residual block with two `3 x 3` convolutions, otherwise construct a bottleneck block with `1 x 1`, then\n            `3 x 3` then `1 x 1` convolutions.\n        stride : int\n            Stride of the first `3 x 3` convolution\n        dilation : int\n            Dilation to apply to the `3 x 3` convolutions.\n        groups : int\n            Number of convolution groups. This is used to create ResNeXt-style blocks and is only compatible with\n            bottleneck blocks.\n        norm_act : callable\n            Function to create normalization / activation Module.\n        dropout: callable\n            Function to create Dropout Module.\n        \"\"\"\n        super(IdentityResidualBlock, self).__init__()\n\n        # Check parameters for inconsistencies\n        if len(channels) != 2 and len(channels) != 3:\n            raise ValueError(\"channels must contain either two or three values\")\n        if len(channels) == 2 and groups != 1:\n            raise ValueError(\"groups > 1 are only valid if len(channels) == 3\")\n\n        is_bottleneck = len(channels) == 3\n        need_proj_conv = stride != 1 or in_channels != channels[-1]\n\n        self.bn1 = norm_act(in_channels)\n        if not is_bottleneck:\n            layers = [\n                (\n                    \"conv1\",\n                    nn.Conv2d(\n                        in_channels,\n                        channels[0],\n                        3,\n                        stride=stride,\n                        padding=dilation,\n                        bias=False,\n                        dilation=dilation,\n                    ),\n                ),\n                (\"bn2\", norm_act(channels[0])),\n                (\n                    \"conv2\",\n                    nn.Conv2d(\n                        channels[0],\n                        channels[1],\n                        3,\n                        stride=1,\n                        padding=dilation,\n                        bias=False,\n                        dilation=dilation,\n                    ),\n                ),\n            ]\n            if dropout is not None:\n                layers = layers[0:2] + [(\"dropout\", dropout())] + layers[2:]\n        else:\n            layers = [\n                (\n                    \"conv1\",\n                    nn.Conv2d(\n                        in_channels,\n                        channels[0],\n                        1,\n                        stride=stride,\n                        padding=0,\n                        bias=False,\n                    ),\n                ),\n                (\"bn2\", norm_act(channels[0])),\n                (\n                    \"conv2\",\n                    nn.Conv2d(\n                        channels[0],\n                        channels[1],\n                        3,\n                        stride=1,\n                        padding=dilation,\n                        bias=False,\n                        groups=groups,\n                        dilation=dilation,\n                    ),\n                ),\n                (\"bn3\", norm_act(channels[1])),\n                (\n                    \"conv3\",\n                    nn.Conv2d(\n                        channels[1], channels[2], 1, stride=1, padding=0, bias=False\n                    ),\n                ),\n            ]\n            if dropout is not None:\n                layers = layers[0:4] + [(\"dropout\", dropout())] + layers[4:]\n        self.convs = nn.Sequential(OrderedDict(layers))\n\n        if need_proj_conv:\n            self.proj_conv = nn.Conv2d(\n                in_channels, channels[-1], 1, stride=stride, padding=0, bias=False\n            )\n\n    def forward(self, x):\n        if hasattr(self, \"proj_conv\"):\n            bn1 = self.bn1(x)\n            shortcut = self.proj_conv(bn1)\n        else:\n            shortcut = x.clone()\n            bn1 = self.bn1(x)\n\n        out = self.convs(bn1)\n        out.add_(shortcut)\n\n        return out\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/src/common.h",
    "content": "#pragma once\n\n#include <cuda_runtime_api.h>\n\n/*\n * General settings\n */\nconst int WARP_SIZE = 32;\nconst int MAX_BLOCK_SIZE = 512;\n\ntemplate<typename T>\nstruct Pair {\n  T v1, v2;\n  __device__ Pair() {}\n  __device__ Pair(T _v1, T _v2) : v1(_v1), v2(_v2) {}\n  __device__ Pair(T v) : v1(v), v2(v) {}\n  __device__ Pair(int v) : v1(v), v2(v) {}\n  __device__ Pair &operator+=(const Pair<T> &a) {\n    v1 += a.v1;\n    v2 += a.v2;\n    return *this;\n  }\n};\n\n/*\n * Utility functions\n */\ntemplate <typename T>\n__device__ __forceinline__ T WARP_SHFL_XOR(T value, int laneMask, int width = warpSize,\n                                           unsigned int mask = 0xffffffff) {\n#if CUDART_VERSION >= 9000\n  return __shfl_xor_sync(mask, value, laneMask, width);\n#else\n  return __shfl_xor(value, laneMask, width);\n#endif\n}\n\n__device__ __forceinline__ int getMSB(int val) { return 31 - __clz(val); }\n\nstatic int getNumThreads(int nElem) {\n  int threadSizes[5] = {32, 64, 128, 256, MAX_BLOCK_SIZE};\n  for (int i = 0; i != 5; ++i) {\n    if (nElem <= threadSizes[i]) {\n      return threadSizes[i];\n    }\n  }\n  return MAX_BLOCK_SIZE;\n}\n\ntemplate<typename T>\nstatic __device__ __forceinline__ T warpSum(T val) {\n#if __CUDA_ARCH__ >= 300\n  for (int i = 0; i < getMSB(WARP_SIZE); ++i) {\n    val += WARP_SHFL_XOR(val, 1 << i, WARP_SIZE);\n  }\n#else\n  __shared__ T values[MAX_BLOCK_SIZE];\n  values[threadIdx.x] = val;\n  __threadfence_block();\n  const int base = (threadIdx.x / WARP_SIZE) * WARP_SIZE;\n  for (int i = 1; i < WARP_SIZE; i++) {\n    val += values[base + ((i + threadIdx.x) % WARP_SIZE)];\n  }\n#endif\n  return val;\n}\n\ntemplate<typename T>\nstatic __device__ __forceinline__ Pair<T> warpSum(Pair<T> value) {\n  value.v1 = warpSum(value.v1);\n  value.v2 = warpSum(value.v2);\n  return value;\n}\n\ntemplate <typename T, typename Op>\n__device__ T reduce(Op op, int plane, int N, int C, int S) {\n  T sum = (T)0;\n  for (int batch = 0; batch < N; ++batch) {\n    for (int x = threadIdx.x; x < S; x += blockDim.x) {\n      sum += op(batch, plane, x);\n    }\n  }\n\n  // sum over NumThreads within a warp\n  sum = warpSum(sum);\n\n  // 'transpose', and reduce within warp again\n  __shared__ T shared[32];\n  __syncthreads();\n  if (threadIdx.x % WARP_SIZE == 0) {\n    shared[threadIdx.x / WARP_SIZE] = sum;\n  }\n  if (threadIdx.x >= blockDim.x / WARP_SIZE && threadIdx.x < WARP_SIZE) {\n    // zero out the other entries in shared\n    shared[threadIdx.x] = (T)0;\n  }\n  __syncthreads();\n  if (threadIdx.x / WARP_SIZE == 0) {\n    sum = warpSum(shared[threadIdx.x]);\n    if (threadIdx.x == 0) {\n      shared[0] = sum;\n    }\n  }\n  __syncthreads();\n\n  // Everyone picks it up, should be broadcast into the whole gradInput\n  return shared[0];\n}"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/src/inplace_abn.cpp",
    "content": "#include <torch/torch.h>\n\n#include <vector>\n\n#include \"inplace_abn.h\"\n\nstd::vector<at::Tensor> mean_var(at::Tensor x) {\n  if (x.is_cuda()) {\n    return mean_var_cuda(x);\n  } else {\n    return mean_var_cpu(x);\n  }\n}\n\nat::Tensor forward(at::Tensor x, at::Tensor mean, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                   bool affine, float eps) {\n  if (x.is_cuda()) {\n    return forward_cuda(x, mean, var, weight, bias, affine, eps);\n  } else {\n    return forward_cpu(x, mean, var, weight, bias, affine, eps);\n  }\n}\n\nstd::vector<at::Tensor> edz_eydz(at::Tensor z, at::Tensor dz, at::Tensor weight, at::Tensor bias,\n                                 bool affine, float eps) {\n  if (z.is_cuda()) {\n    return edz_eydz_cuda(z, dz, weight, bias, affine, eps);\n  } else {\n    return edz_eydz_cpu(z, dz, weight, bias, affine, eps);\n  }\n}\n\nstd::vector<at::Tensor> backward(at::Tensor z, at::Tensor dz, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                                 at::Tensor edz, at::Tensor eydz, bool affine, float eps) {\n  if (z.is_cuda()) {\n    return backward_cuda(z, dz, var, weight, bias, edz, eydz, affine, eps);\n  } else {\n    return backward_cpu(z, dz, var, weight, bias, edz, eydz, affine, eps);\n  }\n}\n\nvoid leaky_relu_forward(at::Tensor z, float slope) {\n  at::leaky_relu_(z, slope);\n}\n\nvoid leaky_relu_backward(at::Tensor z, at::Tensor dz, float slope) {\n  if (z.is_cuda()) {\n    return leaky_relu_backward_cuda(z, dz, slope);\n  } else {\n    return leaky_relu_backward_cpu(z, dz, slope);\n  }\n}\n\nvoid elu_forward(at::Tensor z) {\n  at::elu_(z);\n}\n\nvoid elu_backward(at::Tensor z, at::Tensor dz) {\n  if (z.is_cuda()) {\n    return elu_backward_cuda(z, dz);\n  } else {\n    return elu_backward_cpu(z, dz);\n  }\n}\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n  m.def(\"mean_var\", &mean_var, \"Mean and variance computation\");\n  m.def(\"forward\", &forward, \"In-place forward computation\");\n  m.def(\"edz_eydz\", &edz_eydz, \"First part of backward computation\");\n  m.def(\"backward\", &backward, \"Second part of backward computation\");\n  m.def(\"leaky_relu_forward\", &leaky_relu_forward, \"Leaky relu forward computation\");\n  m.def(\"leaky_relu_backward\", &leaky_relu_backward, \"Leaky relu backward computation and inversion\");\n  m.def(\"elu_forward\", &elu_forward, \"Elu forward computation\");\n  m.def(\"elu_backward\", &elu_backward, \"Elu backward computation and inversion\");\n}"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/src/inplace_abn.h",
    "content": "#pragma once\n\n#include <ATen/ATen.h>\n\n#include <vector>\n\nstd::vector<at::Tensor> mean_var_cpu(at::Tensor x);\nstd::vector<at::Tensor> mean_var_cuda(at::Tensor x);\n\nat::Tensor forward_cpu(at::Tensor x, at::Tensor mean, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                       bool affine, float eps);\nat::Tensor forward_cuda(at::Tensor x, at::Tensor mean, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                        bool affine, float eps);\n\nstd::vector<at::Tensor> edz_eydz_cpu(at::Tensor z, at::Tensor dz, at::Tensor weight, at::Tensor bias,\n                                     bool affine, float eps);\nstd::vector<at::Tensor> edz_eydz_cuda(at::Tensor z, at::Tensor dz, at::Tensor weight, at::Tensor bias,\n                                      bool affine, float eps);\n\nstd::vector<at::Tensor> backward_cpu(at::Tensor z, at::Tensor dz, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                                     at::Tensor edz, at::Tensor eydz, bool affine, float eps);\nstd::vector<at::Tensor> backward_cuda(at::Tensor z, at::Tensor dz, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                                      at::Tensor edz, at::Tensor eydz, bool affine, float eps);\n\nvoid leaky_relu_backward_cpu(at::Tensor z, at::Tensor dz, float slope);\nvoid leaky_relu_backward_cuda(at::Tensor z, at::Tensor dz, float slope);\n\nvoid elu_backward_cpu(at::Tensor z, at::Tensor dz);\nvoid elu_backward_cuda(at::Tensor z, at::Tensor dz);"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/src/inplace_abn_cpu.cpp",
    "content": "#include <ATen/ATen.h>\n\n#include <vector>\n\n#include \"inplace_abn.h\"\n\nat::Tensor reduce_sum(at::Tensor x) {\n  if (x.ndimension() == 2) {\n    return x.sum(0);\n  } else {\n    auto x_view = x.view({x.size(0), x.size(1), -1});\n    return x_view.sum(-1).sum(0);\n  }\n}\n\nat::Tensor broadcast_to(at::Tensor v, at::Tensor x) {\n  if (x.ndimension() == 2) {\n    return v;\n  } else {\n    std::vector<int64_t> broadcast_size = {1, -1};\n    for (int64_t i = 2; i < x.ndimension(); ++i)\n      broadcast_size.push_back(1);\n\n    return v.view(broadcast_size);\n  }\n}\n\nint64_t count(at::Tensor x) {\n  int64_t count = x.size(0);\n  for (int64_t i = 2; i < x.ndimension(); ++i)\n    count *= x.size(i);\n\n  return count;\n}\n\nat::Tensor invert_affine(at::Tensor z, at::Tensor weight, at::Tensor bias, bool affine, float eps) {\n  if (affine) {\n    return (z - broadcast_to(bias, z)) / broadcast_to(at::abs(weight) + eps, z);\n  } else {\n    return z;\n  }\n}\n\nstd::vector<at::Tensor> mean_var_cpu(at::Tensor x) {\n  auto num = count(x);\n  auto mean = reduce_sum(x) / num;\n  auto diff = x - broadcast_to(mean, x);\n  auto var = reduce_sum(diff.pow(2)) / num;\n\n  return {mean, var};\n}\n\nat::Tensor forward_cpu(at::Tensor x, at::Tensor mean, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                       bool affine, float eps) {\n  auto gamma = affine ? at::abs(weight) + eps : at::ones_like(var);\n  auto mul = at::rsqrt(var + eps) * gamma;\n\n  x.sub_(broadcast_to(mean, x));\n  x.mul_(broadcast_to(mul, x));\n  if (affine) x.add_(broadcast_to(bias, x));\n\n  return x;\n}\n\nstd::vector<at::Tensor> edz_eydz_cpu(at::Tensor z, at::Tensor dz, at::Tensor weight, at::Tensor bias,\n                                     bool affine, float eps) {\n  auto edz = reduce_sum(dz);\n  auto y = invert_affine(z, weight, bias, affine, eps);\n  auto eydz = reduce_sum(y * dz);\n\n  return {edz, eydz};\n}\n\nstd::vector<at::Tensor> backward_cpu(at::Tensor z, at::Tensor dz, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                                     at::Tensor edz, at::Tensor eydz, bool affine, float eps) {\n  auto y = invert_affine(z, weight, bias, affine, eps);\n  auto mul = affine ? at::rsqrt(var + eps) * (at::abs(weight) + eps) : at::rsqrt(var + eps);\n\n  auto num = count(z);\n  auto dx = (dz - broadcast_to(edz / num, dz) - y * broadcast_to(eydz / num, dz)) * broadcast_to(mul, dz);\n\n  auto dweight = at::empty(z.type(), {0});\n  auto dbias = at::empty(z.type(), {0});\n  if (affine) {\n    dweight = eydz * at::sign(weight);\n    dbias = edz;\n  }\n\n  return {dx, dweight, dbias};\n}\n\nvoid leaky_relu_backward_cpu(at::Tensor z, at::Tensor dz, float slope) {\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"leaky_relu_backward_cpu\", ([&] {\n    int64_t count = z.numel();\n    auto *_z = z.data<scalar_t>();\n    auto *_dz = dz.data<scalar_t>();\n\n    for (int64_t i = 0; i < count; ++i) {\n      if (_z[i] < 0) {\n        _z[i] *= 1 / slope;\n        _dz[i] *= slope;\n      }\n    }\n  }));\n}\n\nvoid elu_backward_cpu(at::Tensor z, at::Tensor dz) {\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"elu_backward_cpu\", ([&] {\n    int64_t count = z.numel();\n    auto *_z = z.data<scalar_t>();\n    auto *_dz = dz.data<scalar_t>();\n\n    for (int64_t i = 0; i < count; ++i) {\n      if (_z[i] < 0) {\n        _z[i] = log1p(_z[i]);\n        _dz[i] *= (_z[i] + 1.f);\n      }\n    }\n  }));\n}"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/src/inplace_abn_cuda.cu",
    "content": "#include <ATen/ATen.h>\n\n#include <thrust/device_ptr.h>\n#include <thrust/transform.h>\n\n#include <vector>\n\n#include \"common.h\"\n#include \"inplace_abn.h\"\n\n// Checks\n#ifndef AT_CHECK\n  #define AT_CHECK AT_ASSERT\n#endif\n#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x \" must be a CUDA tensor\")\n#define CHECK_CONTIGUOUS(x) AT_CHECK(x.is_contiguous(), #x \" must be contiguous\")\n#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)\n\n// Utilities\nvoid get_dims(at::Tensor x, int64_t& num, int64_t& chn, int64_t& sp) {\n  num = x.size(0);\n  chn = x.size(1);\n  sp = 1;\n  for (int64_t i = 2; i < x.ndimension(); ++i)\n    sp *= x.size(i);\n}\n\n// Operations for reduce\ntemplate<typename T>\nstruct SumOp {\n  __device__ SumOp(const T *t, int c, int s)\n      : tensor(t), chn(c), sp(s) {}\n  __device__ __forceinline__ T operator()(int batch, int plane, int n) {\n    return tensor[(batch * chn + plane) * sp + n];\n  }\n  const T *tensor;\n  const int chn;\n  const int sp;\n};\n\ntemplate<typename T>\nstruct VarOp {\n  __device__ VarOp(T m, const T *t, int c, int s)\n      : mean(m), tensor(t), chn(c), sp(s) {}\n  __device__ __forceinline__ T operator()(int batch, int plane, int n) {\n    T val = tensor[(batch * chn + plane) * sp + n];\n    return (val - mean) * (val - mean);\n  }\n  const T mean;\n  const T *tensor;\n  const int chn;\n  const int sp;\n};\n\ntemplate<typename T>\nstruct GradOp {\n  __device__ GradOp(T _weight, T _bias, const T *_z, const T *_dz, int c, int s)\n      : weight(_weight), bias(_bias), z(_z), dz(_dz), chn(c), sp(s) {}\n  __device__ __forceinline__ Pair<T> operator()(int batch, int plane, int n) {\n    T _y = (z[(batch * chn + plane) * sp + n] - bias) / weight;\n    T _dz = dz[(batch * chn + plane) * sp + n];\n    return Pair<T>(_dz, _y * _dz);\n  }\n  const T weight;\n  const T bias;\n  const T *z;\n  const T *dz;\n  const int chn;\n  const int sp;\n};\n\n/***********\n * mean_var\n ***********/\n\ntemplate<typename T>\n__global__ void mean_var_kernel(const T *x, T *mean, T *var, int num, int chn, int sp) {\n  int plane = blockIdx.x;\n  T norm = T(1) / T(num * sp);\n\n  T _mean = reduce<T, SumOp<T>>(SumOp<T>(x, chn, sp), plane, num, chn, sp) * norm;\n  __syncthreads();\n  T _var = reduce<T, VarOp<T>>(VarOp<T>(_mean, x, chn, sp), plane, num, chn, sp) * norm;\n\n  if (threadIdx.x == 0) {\n    mean[plane] = _mean;\n    var[plane] = _var;\n  }\n}\n\nstd::vector<at::Tensor> mean_var_cuda(at::Tensor x) {\n  CHECK_INPUT(x);\n\n  // Extract dimensions\n  int64_t num, chn, sp;\n  get_dims(x, num, chn, sp);\n\n  // Prepare output tensors\n  auto mean = at::empty(x.type(), {chn});\n  auto var = at::empty(x.type(), {chn});\n\n  // Run kernel\n  dim3 blocks(chn);\n  dim3 threads(getNumThreads(sp));\n  AT_DISPATCH_FLOATING_TYPES(x.type(), \"mean_var_cuda\", ([&] {\n    mean_var_kernel<scalar_t><<<blocks, threads>>>(\n        x.data<scalar_t>(),\n        mean.data<scalar_t>(),\n        var.data<scalar_t>(),\n        num, chn, sp);\n  }));\n\n  return {mean, var};\n}\n\n/**********\n * forward\n **********/\n\ntemplate<typename T>\n__global__ void forward_kernel(T *x, const T *mean, const T *var, const T *weight, const T *bias,\n                               bool affine, float eps, int num, int chn, int sp) {\n  int plane = blockIdx.x;\n\n  T _mean = mean[plane];\n  T _var = var[plane];\n  T _weight = affine ? abs(weight[plane]) + eps : T(1);\n  T _bias = affine ? bias[plane] : T(0);\n\n  T mul = rsqrt(_var + eps) * _weight;\n\n  for (int batch = 0; batch < num; ++batch) {\n    for (int n = threadIdx.x; n < sp; n += blockDim.x) {\n      T _x = x[(batch * chn + plane) * sp + n];\n      T _y = (_x - _mean) * mul + _bias;\n\n      x[(batch * chn + plane) * sp + n] = _y;\n    }\n  }\n}\n\nat::Tensor forward_cuda(at::Tensor x, at::Tensor mean, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                        bool affine, float eps) {\n  CHECK_INPUT(x);\n  CHECK_INPUT(mean);\n  CHECK_INPUT(var);\n  CHECK_INPUT(weight);\n  CHECK_INPUT(bias);\n\n  // Extract dimensions\n  int64_t num, chn, sp;\n  get_dims(x, num, chn, sp);\n\n  // Run kernel\n  dim3 blocks(chn);\n  dim3 threads(getNumThreads(sp));\n  AT_DISPATCH_FLOATING_TYPES(x.type(), \"forward_cuda\", ([&] {\n    forward_kernel<scalar_t><<<blocks, threads>>>(\n        x.data<scalar_t>(),\n        mean.data<scalar_t>(),\n        var.data<scalar_t>(),\n        weight.data<scalar_t>(),\n        bias.data<scalar_t>(),\n        affine, eps, num, chn, sp);\n  }));\n\n  return x;\n}\n\n/***********\n * edz_eydz\n ***********/\n\ntemplate<typename T>\n__global__ void edz_eydz_kernel(const T *z, const T *dz, const T *weight, const T *bias,\n                                T *edz, T *eydz, bool affine, float eps, int num, int chn, int sp) {\n  int plane = blockIdx.x;\n\n  T _weight = affine ? abs(weight[plane]) + eps : 1.f;\n  T _bias = affine ? bias[plane] : 0.f;\n\n  Pair<T> res = reduce<Pair<T>, GradOp<T>>(GradOp<T>(_weight, _bias, z, dz, chn, sp), plane, num, chn, sp);\n  __syncthreads();\n\n  if (threadIdx.x == 0) {\n    edz[plane] = res.v1;\n    eydz[plane] = res.v2;\n  }\n}\n\nstd::vector<at::Tensor> edz_eydz_cuda(at::Tensor z, at::Tensor dz, at::Tensor weight, at::Tensor bias,\n                                      bool affine, float eps) {\n  CHECK_INPUT(z);\n  CHECK_INPUT(dz);\n  CHECK_INPUT(weight);\n  CHECK_INPUT(bias);\n\n  // Extract dimensions\n  int64_t num, chn, sp;\n  get_dims(z, num, chn, sp);\n\n  auto edz = at::empty(z.type(), {chn});\n  auto eydz = at::empty(z.type(), {chn});\n\n  // Run kernel\n  dim3 blocks(chn);\n  dim3 threads(getNumThreads(sp));\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"edz_eydz_cuda\", ([&] {\n    edz_eydz_kernel<scalar_t><<<blocks, threads>>>(\n        z.data<scalar_t>(),\n        dz.data<scalar_t>(),\n        weight.data<scalar_t>(),\n        bias.data<scalar_t>(),\n        edz.data<scalar_t>(),\n        eydz.data<scalar_t>(),\n        affine, eps, num, chn, sp);\n  }));\n\n  return {edz, eydz};\n}\n\n/***********\n * backward\n ***********/\n\ntemplate<typename T>\n__global__ void backward_kernel(const T *z, const T *dz, const T *var, const T *weight, const T *bias, const T *edz,\n                                const T *eydz, T *dx, T *dweight, T *dbias,\n                                bool affine, float eps, int num, int chn, int sp) {\n  int plane = blockIdx.x;\n\n  T _weight = affine ? abs(weight[plane]) + eps : 1.f;\n  T _bias = affine ? bias[plane] : 0.f;\n  T _var = var[plane];\n  T _edz = edz[plane];\n  T _eydz = eydz[plane];\n\n  T _mul = _weight * rsqrt(_var + eps);\n  T count = T(num * sp);\n\n  for (int batch = 0; batch < num; ++batch) {\n    for (int n = threadIdx.x; n < sp; n += blockDim.x) {\n      T _dz = dz[(batch * chn + plane) * sp + n];\n      T _y = (z[(batch * chn + plane) * sp + n] - _bias) / _weight;\n\n      dx[(batch * chn + plane) * sp + n] = (_dz - _edz / count - _y * _eydz / count) * _mul;\n    }\n  }\n\n  if (threadIdx.x == 0) {\n    if (affine) {\n      dweight[plane] = weight[plane] > 0 ? _eydz : -_eydz;\n      dbias[plane] = _edz;\n    }\n  }\n}\n\nstd::vector<at::Tensor> backward_cuda(at::Tensor z, at::Tensor dz, at::Tensor var, at::Tensor weight, at::Tensor bias,\n                                      at::Tensor edz, at::Tensor eydz, bool affine, float eps) {\n  CHECK_INPUT(z);\n  CHECK_INPUT(dz);\n  CHECK_INPUT(var);\n  CHECK_INPUT(weight);\n  CHECK_INPUT(bias);\n  CHECK_INPUT(edz);\n  CHECK_INPUT(eydz);\n\n  // Extract dimensions\n  int64_t num, chn, sp;\n  get_dims(z, num, chn, sp);\n\n  auto dx = at::zeros_like(z);\n  auto dweight = at::zeros_like(weight);\n  auto dbias = at::zeros_like(bias);\n\n  // Run kernel\n  dim3 blocks(chn);\n  dim3 threads(getNumThreads(sp));\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"backward_cuda\", ([&] {\n    backward_kernel<scalar_t><<<blocks, threads>>>(\n        z.data<scalar_t>(),\n        dz.data<scalar_t>(),\n        var.data<scalar_t>(),\n        weight.data<scalar_t>(),\n        bias.data<scalar_t>(),\n        edz.data<scalar_t>(),\n        eydz.data<scalar_t>(),\n        dx.data<scalar_t>(),\n        dweight.data<scalar_t>(),\n        dbias.data<scalar_t>(),\n        affine, eps, num, chn, sp);\n  }));\n\n  return {dx, dweight, dbias};\n}\n\n/**************\n * activations\n **************/\n\ntemplate<typename T>\ninline void leaky_relu_backward_impl(T *z, T *dz, float slope, int64_t count) {\n  // Create thrust pointers\n  thrust::device_ptr<T> th_z = thrust::device_pointer_cast(z);\n  thrust::device_ptr<T> th_dz = thrust::device_pointer_cast(dz);\n\n  thrust::transform_if(th_dz, th_dz + count, th_z, th_dz,\n                       [slope] __device__ (const T& dz) { return dz * slope; },\n                       [] __device__ (const T& z) { return z < 0; });\n  thrust::transform_if(th_z, th_z + count, th_z,\n                       [slope] __device__ (const T& z) { return z / slope; },\n                       [] __device__ (const T& z) { return z < 0; });\n}\n\nvoid leaky_relu_backward_cuda(at::Tensor z, at::Tensor dz, float slope) {\n  CHECK_INPUT(z);\n  CHECK_INPUT(dz);\n\n  int64_t count = z.numel();\n\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"leaky_relu_backward_cuda\", ([&] {\n    leaky_relu_backward_impl<scalar_t>(z.data<scalar_t>(), dz.data<scalar_t>(), slope, count);\n  }));\n}\n\ntemplate<typename T>\ninline void elu_backward_impl(T *z, T *dz, int64_t count) {\n  // Create thrust pointers\n  thrust::device_ptr<T> th_z = thrust::device_pointer_cast(z);\n  thrust::device_ptr<T> th_dz = thrust::device_pointer_cast(dz);\n\n  thrust::transform_if(th_dz, th_dz + count, th_z, th_z, th_dz,\n                       [] __device__ (const T& dz, const T& z) { return dz * (z + 1.); },\n                       [] __device__ (const T& z) { return z < 0; });\n  thrust::transform_if(th_z, th_z + count, th_z,\n                       [] __device__ (const T& z) { return log1p(z); },\n                       [] __device__ (const T& z) { return z < 0; });\n}\n\nvoid elu_backward_cuda(at::Tensor z, at::Tensor dz) {\n  CHECK_INPUT(z);\n  CHECK_INPUT(dz);\n\n  int64_t count = z.numel();\n\n  AT_DISPATCH_FLOATING_TYPES(z.type(), \"leaky_relu_backward_cuda\", ([&] {\n    elu_backward_impl<scalar_t>(z.data<scalar_t>(), dz.data<scalar_t>(), count);\n  }));\n}\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/v2/modules/wider_resnet.py",
    "content": "from collections import OrderedDict\nimport torch.nn as nn\n\nfrom modules import IdentityResidualBlock, ABN, GlobalAvgPool2d\n\n\nclass WiderResNet(nn.Module):\n    def __init__(self, structure, norm_act=ABN, classes=0):\n        \"\"\"Wider ResNet with pre-activation (identity mapping) blocks\n        Parameters\n        ----------\n        structure : list of int\n            Number of residual blocks in each of the six modules of the network.\n        norm_act : callable\n            Function to create normalization / activation Module.\n        classes : int\n            If not `0` also include global average pooling and a fully-connected layer with `classes` outputs at the end\n            of the network.\n        \"\"\"\n        super(WiderResNet, self).__init__()\n        self.structure = structure\n\n        if len(structure) != 6:\n            raise ValueError(\"Expected a structure with six values\")\n\n        # Initial layers\n        self.mod1 = nn.Sequential(\n            OrderedDict(\n                [(\"conv1\", nn.Conv2d(3, 64, 3, stride=1, padding=1, bias=False))]\n            )\n        )\n\n        # Groups of residual blocks\n        in_channels = 64\n        channels = [\n            (128, 128),\n            (256, 256),\n            (512, 512),\n            (512, 1024),\n            (512, 1024, 2048),\n            (1024, 2048, 4096),\n        ]\n        for mod_id, num in enumerate(structure):\n            # Create blocks for module\n            blocks = []\n            for block_id in range(num):\n                blocks.append(\n                    (\n                        \"block%d\" % (block_id + 1),\n                        IdentityResidualBlock(\n                            in_channels, channels[mod_id], norm_act=norm_act\n                        ),\n                    )\n                )\n\n                # Update channels and p_keep\n                in_channels = channels[mod_id][-1]\n\n            # Create module\n            if mod_id <= 4:\n                self.add_module(\n                    \"pool%d\" % (mod_id + 2), nn.MaxPool2d(3, stride=2, padding=1)\n                )\n            self.add_module(\"mod%d\" % (mod_id + 2), nn.Sequential(OrderedDict(blocks)))\n\n        # Pooling and predictor\n        self.bn_out = norm_act(in_channels)\n        if classes != 0:\n            self.classifier = nn.Sequential(\n                OrderedDict(\n                    [\n                        (\"avg_pool\", GlobalAvgPool2d()),\n                        (\"fc\", nn.Linear(in_channels, classes)),\n                    ]\n                )\n            )\n\n    def forward(self, img):\n        out = self.mod1(img)\n        out = self.mod2(self.pool2(out))\n        out = self.mod3(self.pool3(out))\n        out = self.mod4(self.pool4(out))\n        out = self.mod5(self.pool5(out))\n        out = self.mod6(self.pool6(out))\n        out = self.mod7(out)\n        out = self.bn_out(out)\n\n        if hasattr(self, \"classifier\"):\n            out = self.classifier(out)\n\n        return out\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/vanilla unet/utils/cyclelr_callback.py",
    "content": "from keras.callbacks import *\n\n\nclass CyclicLR(Callback):\n    \"\"\"This callback implements a cyclical learning rate policy (CLR).\n    The method cycles the learning rate between two boundaries with\n    some constant frequency, as detailed in this paper (https://arxiv.org/abs/1506.01186).\n    The amplitude of the cycle can be scaled on a per-iteration or \n    per-cycle basis.\n    This class has three built-in policies, as put forth in the paper.\n    \"triangular\":\n        A basic triangular cycle w/ no amplitude scaling.\n    \"triangular2\":\n        A basic triangular cycle that scales initial amplitude by half each cycle.\n    \"exp_range\":\n        A cycle that scales initial amplitude by gamma**(cycle iterations) at each \n        cycle iteration.\n    For more detail, please see paper.\n    \n    # Example\n        ```python\n            clr = CyclicLR(base_lr=0.001, max_lr=0.006,\n                                step_size=2000., mode='triangular')\n            model.fit(X_train, Y_train, callbacks=[clr])\n        ```\n    \n    Class also supports custom scaling functions:\n        ```python\n            clr_fn = lambda x: 0.5*(1+np.sin(x*np.pi/2.))\n            clr = CyclicLR(base_lr=0.001, max_lr=0.006,\n                                step_size=2000., scale_fn=clr_fn,\n                                scale_mode='cycle')\n            model.fit(X_train, Y_train, callbacks=[clr])\n        ```    \n    # Arguments\n        base_lr: initial learning rate which is the\n            lower boundary in the cycle.\n        max_lr: upper boundary in the cycle. Functionally,\n            it defines the cycle amplitude (max_lr - base_lr).\n            The lr at any cycle is the sum of base_lr\n            and some scaling of the amplitude; therefore \n            max_lr may not actually be reached depending on\n            scaling function.\n        step_size: number of training iterations per\n            half cycle. Authors suggest setting step_size\n            2-8 x training iterations in epoch.\n        mode: one of {triangular, triangular2, exp_range}.\n            Default 'triangular'.\n            Values correspond to policies detailed above.\n            If scale_fn is not None, this argument is ignored.\n        gamma: constant in 'exp_range' scaling function:\n            gamma**(cycle iterations)\n        scale_fn: Custom scaling policy defined by a single\n            argument lambda function, where \n            0 <= scale_fn(x) <= 1 for all x >= 0.\n            mode paramater is ignored \n        scale_mode: {'cycle', 'iterations'}.\n            Defines whether scale_fn is evaluated on \n            cycle number or cycle iterations (training\n            iterations since start of cycle). Default is 'cycle'.\n    \"\"\"\n\n    def __init__(\n        self,\n        base_lr=0.001,\n        max_lr=0.006,\n        step_size=2000.0,\n        mode=\"triangular\",\n        gamma=1.0,\n        scale_fn=None,\n        scale_mode=\"cycle\",\n    ):\n        super(CyclicLR, self).__init__()\n\n        self.base_lr = base_lr\n        self.max_lr = max_lr\n        self.step_size = step_size\n        self.mode = mode\n        self.gamma = gamma\n        if scale_fn == None:\n            if self.mode == \"triangular\":\n                self.scale_fn = lambda x: 1.0\n                self.scale_mode = \"cycle\"\n            elif self.mode == \"triangular2\":\n                self.scale_fn = lambda x: 1 / (2.0 ** (x - 1))\n                self.scale_mode = \"cycle\"\n            elif self.mode == \"exp_range\":\n                self.scale_fn = lambda x: gamma ** (x)\n                self.scale_mode = \"iterations\"\n        else:\n            self.scale_fn = scale_fn\n            self.scale_mode = scale_mode\n        self.clr_iterations = 0.0\n        self.trn_iterations = 0.0\n        self.history = {}\n\n        self._reset()\n\n    def _reset(self, new_base_lr=None, new_max_lr=None, new_step_size=None):\n        \"\"\"Resets cycle iterations.\n        Optional boundary/step size adjustment.\n        \"\"\"\n        if new_base_lr != None:\n            self.base_lr = new_base_lr\n        if new_max_lr != None:\n            self.max_lr = new_max_lr\n        if new_step_size != None:\n            self.step_size = new_step_size\n        self.clr_iterations = 0.0\n\n    def clr(self):\n        cycle = np.floor(1 + self.clr_iterations / (2 * self.step_size))\n        x = np.abs(self.clr_iterations / self.step_size - 2 * cycle + 1)\n        if self.scale_mode == \"cycle\":\n            return self.base_lr + (self.max_lr - self.base_lr) * np.maximum(\n                0, (1 - x)\n            ) * self.scale_fn(cycle)\n        else:\n            return self.base_lr + (self.max_lr - self.base_lr) * np.maximum(\n                0, (1 - x)\n            ) * self.scale_fn(self.clr_iterations)\n\n    def on_train_begin(self, logs={}):\n        logs = logs or {}\n\n        if self.clr_iterations == 0:\n            K.set_value(self.model.optimizer.lr, self.base_lr)\n        else:\n            K.set_value(self.model.optimizer.lr, self.clr())\n\n    def on_batch_end(self, epoch, logs=None):\n\n        logs = logs or {}\n        self.trn_iterations += 1\n        self.clr_iterations += 1\n\n        self.history.setdefault(\"lr\", []).append(K.get_value(self.model.optimizer.lr))\n        self.history.setdefault(\"iterations\", []).append(self.trn_iterations)\n\n        for k, v in logs.items():\n            self.history.setdefault(k, []).append(v)\n\n        K.set_value(self.model.optimizer.lr, self.clr())\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/vanilla unet/utils/lovasz_losses_tf.py",
    "content": "# https://github.com/bermanmaxim/LovaszSoftmax/blob/master/tensorflow/lovasz_losses_tf.py\n\n\"\"\"\nLovasz-Softmax and Jaccard hinge loss in Tensorflow\nMaxim Berman 2018 ESAT-PSI KU Leuven (MIT License)\n\"\"\"\n\nfrom __future__ import print_function, division\n\nimport tensorflow as tf\nimport numpy as np\n\n\ndef lovasz_grad(gt_sorted):\n    \"\"\"\n    Computes gradient of the Lovasz extension w.r.t sorted errors\n    See Alg. 1 in paper\n    \"\"\"\n    gts = tf.reduce_sum(gt_sorted)\n    intersection = gts - tf.cumsum(gt_sorted)\n    union = gts + tf.cumsum(1.0 - gt_sorted)\n    jaccard = 1.0 - intersection / union\n    jaccard = tf.concat((jaccard[0:1], jaccard[1:] - jaccard[:-1]), 0)\n    return jaccard\n\n\n# --------------------------- BINARY LOSSES ---------------------------\n\n\ndef lovasz_hinge(logits, labels, per_image=True, ignore=None):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      per_image: compute the loss per image instead of per batch\n      ignore: void class id\n    \"\"\"\n    if per_image:\n\n        def treat_image(log_lab):\n            log, lab = log_lab\n            log, lab = tf.expand_dims(log, 0), tf.expand_dims(lab, 0)\n            log, lab = flatten_binary_scores(log, lab, ignore)\n            return lovasz_hinge_flat(log, lab)\n\n        losses = tf.map_fn(treat_image, (logits, labels), dtype=tf.float32)\n        loss = tf.reduce_mean(losses)\n    else:\n        loss = lovasz_hinge_flat(*flatten_binary_scores(logits, labels, ignore))\n    return loss\n\n\ndef lovasz_hinge_flat(logits, labels):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [P] Variable, logits at each prediction (between -\\infty and +\\infty)\n      labels: [P] Tensor, binary ground truth labels (0 or 1)\n      ignore: label to ignore\n    \"\"\"\n\n    def compute_loss():\n        labelsf = tf.cast(labels, logits.dtype)\n        signs = 2.0 * labelsf - 1.0\n        errors = 1.0 - logits * tf.stop_gradient(signs)\n        errors_sorted, perm = tf.nn.top_k(\n            errors, k=tf.shape(errors)[0], name=\"descending_sort\"\n        )\n        gt_sorted = tf.gather(labelsf, perm)\n        grad = lovasz_grad(gt_sorted)\n        loss = tf.tensordot(\n            tf.nn.relu(errors_sorted), tf.stop_gradient(grad), 1, name=\"loss_non_void\"\n        )\n        return loss\n\n    # deal with the void prediction case (only void pixels)\n    loss = tf.cond(\n        tf.equal(tf.shape(logits)[0], 0),\n        lambda: tf.reduce_sum(logits) * 0.0,\n        compute_loss,\n        strict=True,\n        name=\"loss\",\n    )\n    return loss\n\n\ndef flatten_binary_scores(scores, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch (binary case)\n    Remove labels equal to 'ignore'\n    \"\"\"\n    scores = tf.reshape(scores, (-1,))\n    labels = tf.reshape(labels, (-1,))\n    if ignore is None:\n        return scores, labels\n    valid = tf.not_equal(labels, ignore)\n    vscores = tf.boolean_mask(scores, valid, name=\"valid_scores\")\n    vlabels = tf.boolean_mask(labels, valid, name=\"valid_labels\")\n    return vscores, vlabels\n\n\n# --------------------------- MULTICLASS LOSSES ---------------------------\n\n\ndef lovasz_softmax(\n    probas, labels, classes=\"all\", per_image=False, ignore=None, order=\"BHWC\"\n):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [B, H, W, C] or [B, C, H, W] Variable, class probabilities at each prediction (between 0 and 1)\n      labels: [B, H, W] Tensor, ground truth labels (between 0 and C - 1)\n      classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n      per_image: compute the loss per image instead of per batch\n      ignore: void class labels\n      order: use BHWC or BCHW\n    \"\"\"\n    if per_image:\n\n        def treat_image(prob_lab):\n            prob, lab = prob_lab\n            prob, lab = tf.expand_dims(prob, 0), tf.expand_dims(lab, 0)\n            prob, lab = flatten_probas(prob, lab, ignore, order)\n            return lovasz_softmax_flat(prob, lab, classes=classes)\n\n        losses = tf.map_fn(treat_image, (probas, labels), dtype=tf.float32)\n        loss = tf.reduce_mean(losses)\n    else:\n        loss = lovasz_softmax_flat(\n            *flatten_probas(probas, labels, ignore, order), classes=classes\n        )\n    return loss\n\n\ndef lovasz_softmax_flat(probas, labels, classes=\"all\"):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [P, C] Variable, class probabilities at each prediction (between 0 and 1)\n      labels: [P] Tensor, ground truth labels (between 0 and C - 1)\n      classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n    \"\"\"\n    C = probas.shape[1]\n    losses = []\n    present = []\n    class_to_sum = list(range(C)) if classes in [\"all\", \"present\"] else classes\n    for c in class_to_sum:\n        fg = tf.cast(tf.equal(labels, c), probas.dtype)  # foreground for class c\n        if classes == \"present\":\n            present.append(tf.reduce_sum(fg) > 0)\n        errors = tf.abs(fg - probas[:, c])\n        errors_sorted, perm = tf.nn.top_k(\n            errors, k=tf.shape(errors)[0], name=\"descending_sort_{}\".format(c)\n        )\n        fg_sorted = tf.gather(fg, perm)\n        grad = lovasz_grad(fg_sorted)\n        losses.append(\n            tf.tensordot(\n                errors_sorted, tf.stop_gradient(grad), 1, name=\"loss_class_{}\".format(c)\n            )\n        )\n    if len(class_to_sum) == 1:  # short-circuit mean when only one class\n        return losses[0]\n    losses_tensor = tf.stack(losses)\n    if classes == \"present\":\n        present = tf.stack(present)\n        losses_tensor = tf.boolean_mask(losses_tensor, present)\n    loss = tf.reduce_mean(losses_tensor)\n    return loss\n\n\ndef flatten_probas(probas, labels, ignore=None, order=\"BHWC\"):\n    \"\"\"\n    Flattens predictions in the batch\n    \"\"\"\n    if order == \"BCHW\":\n        probas = tf.transpose(probas, (0, 2, 3, 1), name=\"BCHW_to_BHWC\")\n        order = \"BHWC\"\n    if order != \"BHWC\":\n        raise NotImplementedError(\"Order {} unknown\".format(order))\n    C = probas.shape[3]\n    probas = tf.reshape(probas, (-1, C))\n    labels = tf.reshape(labels, (-1,))\n    if ignore is None:\n        return probas, labels\n    valid = tf.not_equal(labels, ignore)\n    vprobas = tf.boolean_mask(probas, valid, name=\"valid_probas\")\n    vlabels = tf.boolean_mask(labels, valid, name=\"valid_labels\")\n    return vprobas, vlabels\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Kaggle TGS Salt Identification Challenge/vanilla unet/utils/zf_unet_224_model.py",
    "content": "# coding: utf-8\n\"\"\"\n    - \"ZF_UNET_224\" Model based on UNET code from following paper: https://arxiv.org/abs/1505.04597\n    - This model used to get 2nd place in DSTL competition: https://www.kaggle.com/c/dstl-satellite-imagery-feature-detection\n    - For training used DICE coefficient: https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient\n    - Input shape for model is 224x224 (the same as for other popular CNNs like VGG or ResNet)\n    - It has 3 input channels (to process standard RGB (BGR) images). You can change it with variable \"INPUT_CHANNELS\"\n    - It trained on random image generator with random light shapes (ellipses) on dark background with noise (< 10%).\n    - In most cases model ZF_UNET_224 is ok to be used without pretrained weights.\n\"\"\"\n\n__author__ = \"ZFTurbo: https://kaggle.com/zfturbo\"\n\nfrom keras.models import Model\nfrom keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D\nfrom keras.layers.normalization import BatchNormalization\nfrom keras.layers.core import SpatialDropout2D, Activation\nfrom keras import backend as K\nfrom keras.layers.merge import concatenate\nfrom keras.utils.data_utils import get_file\n\n# Number of image channels (for example 3 in case of RGB, or 1 for grayscale images)\nINPUT_CHANNELS = 3\n# Number of output masks (1 in case you predict only one type of objects)\nOUTPUT_MASK_CHANNELS = 1\n# Pretrained weights\nZF_UNET_224_WEIGHT_PATH = \"https://github.com/ZFTurbo/ZF_UNET_224_Pretrained_Model/releases/download/v1.0/zf_unet_224.h5\"\n\n\ndef preprocess_input(x):\n    x /= 256\n    x -= 0.5\n    return x\n\n\ndef dice_coef(y_true, y_pred):\n    y_true_f = K.flatten(y_true)\n    y_pred_f = K.flatten(y_pred)\n    intersection = K.sum(y_true_f * y_pred_f)\n    return (2.0 * intersection + 1.0) / (K.sum(y_true_f) + K.sum(y_pred_f) + 1.0)\n\n\ndef jacard_coef(y_true, y_pred):\n    y_true_f = K.flatten(y_true)\n    y_pred_f = K.flatten(y_pred)\n    intersection = K.sum(y_true_f * y_pred_f)\n    return (intersection + 1.0) / (\n        K.sum(y_true_f) + K.sum(y_pred_f) - intersection + 1.0\n    )\n\n\ndef jacard_coef_loss(y_true, y_pred):\n    return -jacard_coef(y_true, y_pred)\n\n\ndef dice_coef_loss(y_true, y_pred):\n    return -dice_coef(y_true, y_pred)\n\n\ndef double_conv_layer(x, size, dropout=0.0, batch_norm=True):\n    if K.image_dim_ordering() == \"th\":\n        axis = 1\n    else:\n        axis = 3\n    conv = Conv2D(size, (3, 3), padding=\"same\")(x)\n    if batch_norm is True:\n        conv = BatchNormalization(axis=axis)(conv)\n    conv = Activation(\"relu\")(conv)\n    conv = Conv2D(size, (3, 3), padding=\"same\")(conv)\n    if batch_norm is True:\n        conv = BatchNormalization(axis=axis)(conv)\n    conv = Activation(\"relu\")(conv)\n    if dropout > 0:\n        conv = SpatialDropout2D(dropout)(conv)\n    return conv\n\n\ndef ZF_UNET_224(dropout_val=0.2, weights=None):\n    if K.image_dim_ordering() == \"th\":\n        inputs = Input((INPUT_CHANNELS, 224, 224))\n        axis = 1\n    else:\n        inputs = Input((224, 224, INPUT_CHANNELS))\n        axis = 3\n    filters = 32\n\n    conv_224 = double_conv_layer(inputs, filters)\n    pool_112 = MaxPooling2D(pool_size=(2, 2))(conv_224)\n\n    conv_112 = double_conv_layer(pool_112, 2 * filters)\n    pool_56 = MaxPooling2D(pool_size=(2, 2))(conv_112)\n\n    conv_56 = double_conv_layer(pool_56, 4 * filters)\n    pool_28 = MaxPooling2D(pool_size=(2, 2))(conv_56)\n\n    conv_28 = double_conv_layer(pool_28, 8 * filters)\n    pool_14 = MaxPooling2D(pool_size=(2, 2))(conv_28)\n\n    conv_14 = double_conv_layer(pool_14, 16 * filters)\n    pool_7 = MaxPooling2D(pool_size=(2, 2))(conv_14)\n\n    conv_7 = double_conv_layer(pool_7, 32 * filters)\n\n    up_14 = concatenate([UpSampling2D(size=(2, 2))(conv_7), conv_14], axis=axis)\n    up_conv_14 = double_conv_layer(up_14, 16 * filters)\n\n    up_28 = concatenate([UpSampling2D(size=(2, 2))(up_conv_14), conv_28], axis=axis)\n    up_conv_28 = double_conv_layer(up_28, 8 * filters)\n\n    up_56 = concatenate([UpSampling2D(size=(2, 2))(up_conv_28), conv_56], axis=axis)\n    up_conv_56 = double_conv_layer(up_56, 4 * filters)\n\n    up_112 = concatenate([UpSampling2D(size=(2, 2))(up_conv_56), conv_112], axis=axis)\n    up_conv_112 = double_conv_layer(up_112, 2 * filters)\n\n    up_224 = concatenate([UpSampling2D(size=(2, 2))(up_conv_112), conv_224], axis=axis)\n    up_conv_224 = double_conv_layer(up_224, filters, dropout_val)\n\n    conv_final = Conv2D(OUTPUT_MASK_CHANNELS, (1, 1))(up_conv_224)\n    conv_final = Activation(\"sigmoid\")(conv_final)\n\n    model = Model(inputs, conv_final, name=\"ZF_UNET_224\")\n\n    if (\n        weights == \"generator\"\n        and axis == 3\n        and INPUT_CHANNELS == 3\n        and OUTPUT_MASK_CHANNELS == 1\n    ):\n        weights_path = get_file(\n            \"zf_unet_224_weights_tf_dim_ordering_tf_generator.h5\",\n            ZF_UNET_224_WEIGHT_PATH,\n            cache_subdir=\"models\",\n            file_hash=\"203146f209baf34ac0d793e1691f1ab7\",\n        )\n        model.load_weights(weights_path)\n\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Segmentation pipeline/README.MD",
    "content": "### Segmentation model\n\n- Data Massachusetts Roads Dataset from https://www.cs.toronto.edu/~vmnih/data/\n- **get dataset.py** - script to download dataset\n- segmentation pipeline.ipynb - pipeline itself\n\nLink to medium article \nhttps://medium.com/@insafashrapov/road-detection-using-segmentation-models-and-albumentations-libraries-on-keras-d5434eaf73a8\n\nLink to dataset uploaded to kaggle https://www.kaggle.com/insaff/massachusetts-roads-dataset\n\n\n**Reference**\n\n\n    MnihThesis,\n\n    author = {Volodymyr Mnih},\n    \n    title = {Machine Learning for Aerial Image Labeling},\n    \n    school = {University of Toronto},\n    \n    year = {2013}\n\n\n\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Segmentation pipeline/get dataset.py",
    "content": "# code from https://github.com/BBarbosa/tflearn-image-recognition-toolkit/blob/4a0528dcfb206b1e45997f2fbc097aafacfa0fa0/scripts/html_link_parser.py\n\nimport re\nimport argparse\n\nfrom PIL import Image\nfrom io import BytesIO\nfrom bs4 import BeautifulSoup\nfrom skimage import io as skio\nfrom urllib.request import urlopen\nimport os\n\n\ndef html_url_parser(url, save_dir, show=False, wait=False):\n    \"\"\"\n    HTML parser to download images from URL.\n    Params:\\n\n    `url` - Image url\\n\n    `save_dir` - Directory to save extracted images\\n\n    `show` - Show downloaded image\\n\n    `wait` - Press key to continue executing\n    \"\"\"\n\n    website = urlopen(url)\n    html = website.read()\n\n    soup = BeautifulSoup(html, \"html5lib\")\n\n    for image_id, link in enumerate(soup.find_all(\"a\", href=True)):\n        if image_id == 0:\n            continue\n\n        img_url = link[\"href\"]\n\n        try:\n            if os.path.isfile(save_dir + \"img-%d.png\" % image_id) == False:\n                print(\"[INFO] Downloading image from URL:\", link[\"href\"])\n                image = Image.open(urlopen(img_url))\n                image.save(save_dir + \"img-%d.png\" % image_id, \"PNG\")\n                if show:\n                    image.show()\n            else:\n                print(\"skipped\")\n        except KeyboardInterrupt:\n            print(\"[EXCEPTION] Pressed 'Ctrl+C'\")\n            break\n        except Exception as image_exception:\n            print(\"[EXCEPTION]\", image_exception)\n            continue\n\n        if wait:\n            key = input(\"[INFO] Press any key to continue ('q' to exit)... \")\n            if key.lower() == \"q\":\n                break\n\n\n# ///////////////////////////////////////////////////\n#                   Main method\n# ///////////////////////////////////////////////////\nif __name__ == \"__main__\":\n    URL_TRAIN_IMG = (\n        \"https://www.cs.toronto.edu/~vmnih/data/mass_roads/train/sat/index.html\"\n    )\n    URL_TRAIN_GT = (\n        \"https://www.cs.toronto.edu/~vmnih/data/mass_roads/train/map/index.html\"\n    )\n\n    URL_TEST_IMG = (\n        \"https://www.cs.toronto.edu/~vmnih/data/mass_roads/valid/sat/index.html\"\n    )\n    URL_TEST_GT = (\n        \"https://www.cs.toronto.edu/~vmnih/data/mass_roads/valid/map/index.html\"\n    )\n\n    html_url_parser(url=URL_TRAIN_IMG, save_dir=\"./road_segmentation/training/input/\")\n    html_url_parser(url=URL_TRAIN_GT, save_dir=\"./road_segmentation/training/output/\")\n\n    html_url_parser(url=URL_TEST_IMG, save_dir=\"./road_segmentation/testing/input/\")\n    html_url_parser(url=URL_TEST_GT, save_dir=\"./road_segmentation/testing/output/\")\n\n    print(\"[INFO] All done!\")\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Segmentation pipeline/segmentation pipeline.html",
    "content": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n\n<title>segmentation pipeline</title>\n\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js\"></script>\n\n\n\n<style type=\"text/css\">\n    /*!\n*\n* Twitter Bootstrap\n*\n*/\n/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');\n  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #000;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 3px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 2px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 18px;\n  margin-bottom: 18px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 18px;\n  margin-bottom: 9px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 9px;\n  margin-bottom: 9px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 33px;\n}\nh2,\n.h2 {\n  font-size: 27px;\n}\nh3,\n.h3 {\n  font-size: 23px;\n}\nh4,\n.h4 {\n  font-size: 17px;\n}\nh5,\n.h5 {\n  font-size: 13px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 9px;\n}\n.lead {\n  margin-bottom: 18px;\n  font-size: 14px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 19.5px;\n  }\n}\nsmall,\n.small {\n  font-size: 92%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 8px;\n  margin: 36px 0 18px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 9px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 18px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 541px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 9px 18px;\n  margin: 0 0 18px;\n  font-size: inherit;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 18px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 2px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #888;\n  background-color: transparent;\n  border-radius: 1px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 8.5px;\n  margin: 0 0 9px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 2px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 0px;\n  padding-right: 0px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 768px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 940px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1140px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 0px;\n  padding-right: 0px;\n}\n.row {\n  margin-left: 0px;\n  margin-right: 0px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 0px;\n  padding-right: 0px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 18px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 13.5px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  min-width: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 18px;\n  font-size: 19.5px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 32px;\n  padding: 6px 12px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 32px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 45px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 18px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n  min-height: 31px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 30px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n  border-radius: 3px;\n}\nselect.input-lg {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n  border-radius: 3px;\n}\n.form-group-lg select.form-control {\n  height: 45px;\n  line-height: 45px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 45px;\n  min-height: 35px;\n  padding: 11px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 40px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 45px;\n  height: 45px;\n  line-height: 45px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  border-color: #3c763d;\n  background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  border-color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  border-color: #a94442;\n  background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 23px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #404040;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 25px;\n}\n.form-horizontal .form-group {\n  margin-left: 0px;\n  margin-right: 0px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n    margin-bottom: 0;\n    padding-top: 7px;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 0px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 17px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  padding: 6px 12px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  border-radius: 2px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  color: #337ab7;\n  font-weight: normal;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n  border-radius: 3px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 13px;\n  text-align: left;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 2px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 8px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #262626;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  left: auto;\n  right: 0;\n}\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 541px) {\n  .navbar-right .dropdown-menu {\n    left: auto;\n    right: 0;\n  }\n  .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 2px;\n  border-top-left-radius: 2px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  padding: 10px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n  border-radius: 3px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 45px;\n  line-height: 45px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 13px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 2px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 1px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 17px;\n  border-radius: 3px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 8px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 2px 2px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 2px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 2px 2px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 2px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 2px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 2px 2px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 30px;\n  margin-bottom: 18px;\n  border: 1px solid transparent;\n}\n@media (min-width: 541px) {\n  .navbar {\n    border-radius: 2px;\n  }\n}\n@media (min-width: 541px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: 0px;\n  padding-left: 0px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 541px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 540px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: 0px;\n  margin-left: 0px;\n}\n@media (min-width: 541px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 541px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 541px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 6px 0px;\n  font-size: 17px;\n  line-height: 18px;\n  height: 30px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 541px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: 0px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 0px;\n  padding: 9px 10px;\n  margin-top: -2px;\n  margin-bottom: -2px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 2px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 541px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 3px 0px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 18px;\n}\n@media (max-width: 540px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 18px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 541px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 6px;\n    padding-bottom: 6px;\n  }\n}\n.navbar-form {\n  margin-left: 0px;\n  margin-right: 0px;\n  padding: 10px 0px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: -1px;\n  margin-bottom: -1px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 540px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 541px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-right-radius: 2px;\n  border-top-left-radius: 2px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: -1px;\n  margin-bottom: -1px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 0px;\n  margin-bottom: 0px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 4px;\n  margin-bottom: 4px;\n}\n.navbar-text {\n  margin-top: 6px;\n  margin-bottom: 6px;\n}\n@media (min-width: 541px) {\n  .navbar-text {\n    float: left;\n    margin-left: 0px;\n    margin-right: 0px;\n  }\n}\n@media (min-width: 541px) {\n  .navbar-left {\n    float: left !important;\n    float: left;\n  }\n  .navbar-right {\n    float: right !important;\n    float: right;\n    margin-right: 0px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555;\n}\n@media (max-width: 540px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #fff;\n}\n@media (max-width: 540px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 18px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 2px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #5e5e5e;\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 18px 0;\n  border-radius: 2px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.42857143;\n  text-decoration: none;\n  color: #337ab7;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 2px;\n  border-top-left-radius: 2px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 2px;\n  border-top-right-radius: 2px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  background-color: #fff;\n  border-color: #ddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 17px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 1px;\n  border-top-left-radius: 1px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 1px;\n  border-top-right-radius: 1px;\n}\n.pager {\n  padding-left: 0;\n  margin: 18px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  background-color: #fff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  line-height: 1;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 20px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 3px;\n  padding-left: 0px;\n  padding-right: 0px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 59px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 18px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 2px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-left: auto;\n  margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #000;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 18px;\n  border: 1px solid transparent;\n  border-radius: 2px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #3c763d;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #31708f;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n  color: #8a6d3b;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n  color: #a94442;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 18px;\n  margin-bottom: 18px;\n  background-color: #f5f5f5;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 18px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 2px;\n  border-top-left-radius: 2px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  text-decoration: none;\n  color: #555;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  background-color: #eeeeee;\n  color: #777777;\n  cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 18px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 1px;\n  border-top-left-radius: 1px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 15px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 1px;\n  border-bottom-left-radius: 1px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-right-radius: 1px;\n  border-top-left-radius: 1px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 1px;\n  border-bottom-left-radius: 1px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-right-radius: 1px;\n  border-top-left-radius: 1px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 1px;\n  border-top-right-radius: 1px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 1px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 1px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 1px;\n  border-bottom-left-radius: 1px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-left-radius: 1px;\n  border-bottom-right-radius: 1px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 1px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 1px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  border: 0;\n  margin-bottom: 0;\n}\n.panel-group {\n  margin-bottom: 18px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 2px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  height: 100%;\n  width: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 3px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 1px;\n}\n.close {\n  float: right;\n  font-size: 19.5px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 3px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 12px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 2px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 13px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 3px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 13px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 2px 2px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #fff;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #fff;\n  bottom: -10px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  outline: 0;\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  margin-top: -10px;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  line-height: 1;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #fff;\n  border-radius: 10px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after,\n.item_buttons:before,\n.item_buttons:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after,\n.item_buttons:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*!\n*\n* Font Awesome\n*\n*/\n/*!\n *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0');\n  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n.fa {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n.fa-2x {\n  font-size: 2em;\n}\n.fa-3x {\n  font-size: 3em;\n}\n.fa-4x {\n  font-size: 4em;\n}\n.fa-5x {\n  font-size: 5em;\n}\n.fa-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n.fa-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n.fa-ul > li {\n  position: relative;\n}\n.fa-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n.fa-li.fa-lg {\n  left: -1.85714286em;\n}\n.fa-border {\n  padding: .2em .25em .15em;\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n}\n.fa-pull-left {\n  float: left;\n}\n.fa-pull-right {\n  float: right;\n}\n.fa.fa-pull-left {\n  margin-right: .3em;\n}\n.fa.fa-pull-right {\n  margin-left: .3em;\n}\n/* Deprecated as of 4.4.0 */\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n.fa.pull-left {\n  margin-right: .3em;\n}\n.fa.pull-right {\n  margin-left: .3em;\n}\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n  animation: fa-spin 2s infinite linear;\n}\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n  animation: fa-spin 1s infinite steps(8);\n}\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  filter: none;\n}\n.fa-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n.fa-stack-1x,\n.fa-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n.fa-stack-1x {\n  line-height: inherit;\n}\n.fa-stack-2x {\n  font-size: 2em;\n}\n.fa-inverse {\n  color: #fff;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.fa-glass:before {\n  content: \"\\f000\";\n}\n.fa-music:before {\n  content: \"\\f001\";\n}\n.fa-search:before {\n  content: \"\\f002\";\n}\n.fa-envelope-o:before {\n  content: \"\\f003\";\n}\n.fa-heart:before {\n  content: \"\\f004\";\n}\n.fa-star:before {\n  content: \"\\f005\";\n}\n.fa-star-o:before {\n  content: \"\\f006\";\n}\n.fa-user:before {\n  content: \"\\f007\";\n}\n.fa-film:before {\n  content: \"\\f008\";\n}\n.fa-th-large:before {\n  content: \"\\f009\";\n}\n.fa-th:before {\n  content: \"\\f00a\";\n}\n.fa-th-list:before {\n  content: \"\\f00b\";\n}\n.fa-check:before {\n  content: \"\\f00c\";\n}\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n  content: \"\\f00d\";\n}\n.fa-search-plus:before {\n  content: \"\\f00e\";\n}\n.fa-search-minus:before {\n  content: \"\\f010\";\n}\n.fa-power-off:before {\n  content: \"\\f011\";\n}\n.fa-signal:before {\n  content: \"\\f012\";\n}\n.fa-gear:before,\n.fa-cog:before {\n  content: \"\\f013\";\n}\n.fa-trash-o:before {\n  content: \"\\f014\";\n}\n.fa-home:before {\n  content: \"\\f015\";\n}\n.fa-file-o:before {\n  content: \"\\f016\";\n}\n.fa-clock-o:before {\n  content: \"\\f017\";\n}\n.fa-road:before {\n  content: \"\\f018\";\n}\n.fa-download:before {\n  content: \"\\f019\";\n}\n.fa-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n.fa-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n.fa-inbox:before {\n  content: \"\\f01c\";\n}\n.fa-play-circle-o:before {\n  content: \"\\f01d\";\n}\n.fa-rotate-right:before,\n.fa-repeat:before {\n  content: \"\\f01e\";\n}\n.fa-refresh:before {\n  content: \"\\f021\";\n}\n.fa-list-alt:before {\n  content: \"\\f022\";\n}\n.fa-lock:before {\n  content: \"\\f023\";\n}\n.fa-flag:before {\n  content: \"\\f024\";\n}\n.fa-headphones:before {\n  content: \"\\f025\";\n}\n.fa-volume-off:before {\n  content: \"\\f026\";\n}\n.fa-volume-down:before {\n  content: \"\\f027\";\n}\n.fa-volume-up:before {\n  content: \"\\f028\";\n}\n.fa-qrcode:before {\n  content: \"\\f029\";\n}\n.fa-barcode:before {\n  content: \"\\f02a\";\n}\n.fa-tag:before {\n  content: \"\\f02b\";\n}\n.fa-tags:before {\n  content: \"\\f02c\";\n}\n.fa-book:before {\n  content: \"\\f02d\";\n}\n.fa-bookmark:before {\n  content: \"\\f02e\";\n}\n.fa-print:before {\n  content: \"\\f02f\";\n}\n.fa-camera:before {\n  content: \"\\f030\";\n}\n.fa-font:before {\n  content: \"\\f031\";\n}\n.fa-bold:before {\n  content: \"\\f032\";\n}\n.fa-italic:before {\n  content: \"\\f033\";\n}\n.fa-text-height:before {\n  content: \"\\f034\";\n}\n.fa-text-width:before {\n  content: \"\\f035\";\n}\n.fa-align-left:before {\n  content: \"\\f036\";\n}\n.fa-align-center:before {\n  content: \"\\f037\";\n}\n.fa-align-right:before {\n  content: \"\\f038\";\n}\n.fa-align-justify:before {\n  content: \"\\f039\";\n}\n.fa-list:before {\n  content: \"\\f03a\";\n}\n.fa-dedent:before,\n.fa-outdent:before {\n  content: \"\\f03b\";\n}\n.fa-indent:before {\n  content: \"\\f03c\";\n}\n.fa-video-camera:before {\n  content: \"\\f03d\";\n}\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n  content: \"\\f03e\";\n}\n.fa-pencil:before {\n  content: \"\\f040\";\n}\n.fa-map-marker:before {\n  content: \"\\f041\";\n}\n.fa-adjust:before {\n  content: \"\\f042\";\n}\n.fa-tint:before {\n  content: \"\\f043\";\n}\n.fa-edit:before,\n.fa-pencil-square-o:before {\n  content: \"\\f044\";\n}\n.fa-share-square-o:before {\n  content: \"\\f045\";\n}\n.fa-check-square-o:before {\n  content: \"\\f046\";\n}\n.fa-arrows:before {\n  content: \"\\f047\";\n}\n.fa-step-backward:before {\n  content: \"\\f048\";\n}\n.fa-fast-backward:before {\n  content: \"\\f049\";\n}\n.fa-backward:before {\n  content: \"\\f04a\";\n}\n.fa-play:before {\n  content: \"\\f04b\";\n}\n.fa-pause:before {\n  content: \"\\f04c\";\n}\n.fa-stop:before {\n  content: \"\\f04d\";\n}\n.fa-forward:before {\n  content: \"\\f04e\";\n}\n.fa-fast-forward:before {\n  content: \"\\f050\";\n}\n.fa-step-forward:before {\n  content: \"\\f051\";\n}\n.fa-eject:before {\n  content: \"\\f052\";\n}\n.fa-chevron-left:before {\n  content: \"\\f053\";\n}\n.fa-chevron-right:before {\n  content: \"\\f054\";\n}\n.fa-plus-circle:before {\n  content: \"\\f055\";\n}\n.fa-minus-circle:before {\n  content: \"\\f056\";\n}\n.fa-times-circle:before {\n  content: \"\\f057\";\n}\n.fa-check-circle:before {\n  content: \"\\f058\";\n}\n.fa-question-circle:before {\n  content: \"\\f059\";\n}\n.fa-info-circle:before {\n  content: \"\\f05a\";\n}\n.fa-crosshairs:before {\n  content: \"\\f05b\";\n}\n.fa-times-circle-o:before {\n  content: \"\\f05c\";\n}\n.fa-check-circle-o:before {\n  content: \"\\f05d\";\n}\n.fa-ban:before {\n  content: \"\\f05e\";\n}\n.fa-arrow-left:before {\n  content: \"\\f060\";\n}\n.fa-arrow-right:before {\n  content: \"\\f061\";\n}\n.fa-arrow-up:before {\n  content: \"\\f062\";\n}\n.fa-arrow-down:before {\n  content: \"\\f063\";\n}\n.fa-mail-forward:before,\n.fa-share:before {\n  content: \"\\f064\";\n}\n.fa-expand:before {\n  content: \"\\f065\";\n}\n.fa-compress:before {\n  content: \"\\f066\";\n}\n.fa-plus:before {\n  content: \"\\f067\";\n}\n.fa-minus:before {\n  content: \"\\f068\";\n}\n.fa-asterisk:before {\n  content: \"\\f069\";\n}\n.fa-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n.fa-gift:before {\n  content: \"\\f06b\";\n}\n.fa-leaf:before {\n  content: \"\\f06c\";\n}\n.fa-fire:before {\n  content: \"\\f06d\";\n}\n.fa-eye:before {\n  content: \"\\f06e\";\n}\n.fa-eye-slash:before {\n  content: \"\\f070\";\n}\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n.fa-plane:before {\n  content: \"\\f072\";\n}\n.fa-calendar:before {\n  content: \"\\f073\";\n}\n.fa-random:before {\n  content: \"\\f074\";\n}\n.fa-comment:before {\n  content: \"\\f075\";\n}\n.fa-magnet:before {\n  content: \"\\f076\";\n}\n.fa-chevron-up:before {\n  content: \"\\f077\";\n}\n.fa-chevron-down:before {\n  content: \"\\f078\";\n}\n.fa-retweet:before {\n  content: \"\\f079\";\n}\n.fa-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.fa-folder:before {\n  content: \"\\f07b\";\n}\n.fa-folder-open:before {\n  content: \"\\f07c\";\n}\n.fa-arrows-v:before {\n  content: \"\\f07d\";\n}\n.fa-arrows-h:before {\n  content: \"\\f07e\";\n}\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n  content: \"\\f080\";\n}\n.fa-twitter-square:before {\n  content: \"\\f081\";\n}\n.fa-facebook-square:before {\n  content: \"\\f082\";\n}\n.fa-camera-retro:before {\n  content: \"\\f083\";\n}\n.fa-key:before {\n  content: \"\\f084\";\n}\n.fa-gears:before,\n.fa-cogs:before {\n  content: \"\\f085\";\n}\n.fa-comments:before {\n  content: \"\\f086\";\n}\n.fa-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n.fa-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n.fa-star-half:before {\n  content: \"\\f089\";\n}\n.fa-heart-o:before {\n  content: \"\\f08a\";\n}\n.fa-sign-out:before {\n  content: \"\\f08b\";\n}\n.fa-linkedin-square:before {\n  content: \"\\f08c\";\n}\n.fa-thumb-tack:before {\n  content: \"\\f08d\";\n}\n.fa-external-link:before {\n  content: \"\\f08e\";\n}\n.fa-sign-in:before {\n  content: \"\\f090\";\n}\n.fa-trophy:before {\n  content: \"\\f091\";\n}\n.fa-github-square:before {\n  content: \"\\f092\";\n}\n.fa-upload:before {\n  content: \"\\f093\";\n}\n.fa-lemon-o:before {\n  content: \"\\f094\";\n}\n.fa-phone:before {\n  content: \"\\f095\";\n}\n.fa-square-o:before {\n  content: \"\\f096\";\n}\n.fa-bookmark-o:before {\n  content: \"\\f097\";\n}\n.fa-phone-square:before {\n  content: \"\\f098\";\n}\n.fa-twitter:before {\n  content: \"\\f099\";\n}\n.fa-facebook-f:before,\n.fa-facebook:before {\n  content: \"\\f09a\";\n}\n.fa-github:before {\n  content: \"\\f09b\";\n}\n.fa-unlock:before {\n  content: \"\\f09c\";\n}\n.fa-credit-card:before {\n  content: \"\\f09d\";\n}\n.fa-feed:before,\n.fa-rss:before {\n  content: \"\\f09e\";\n}\n.fa-hdd-o:before {\n  content: \"\\f0a0\";\n}\n.fa-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.fa-bell:before {\n  content: \"\\f0f3\";\n}\n.fa-certificate:before {\n  content: \"\\f0a3\";\n}\n.fa-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n.fa-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n.fa-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n.fa-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n.fa-globe:before {\n  content: \"\\f0ac\";\n}\n.fa-wrench:before {\n  content: \"\\f0ad\";\n}\n.fa-tasks:before {\n  content: \"\\f0ae\";\n}\n.fa-filter:before {\n  content: \"\\f0b0\";\n}\n.fa-briefcase:before {\n  content: \"\\f0b1\";\n}\n.fa-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n.fa-group:before,\n.fa-users:before {\n  content: \"\\f0c0\";\n}\n.fa-chain:before,\n.fa-link:before {\n  content: \"\\f0c1\";\n}\n.fa-cloud:before {\n  content: \"\\f0c2\";\n}\n.fa-flask:before {\n  content: \"\\f0c3\";\n}\n.fa-cut:before,\n.fa-scissors:before {\n  content: \"\\f0c4\";\n}\n.fa-copy:before,\n.fa-files-o:before {\n  content: \"\\f0c5\";\n}\n.fa-paperclip:before {\n  content: \"\\f0c6\";\n}\n.fa-save:before,\n.fa-floppy-o:before {\n  content: \"\\f0c7\";\n}\n.fa-square:before {\n  content: \"\\f0c8\";\n}\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n  content: \"\\f0c9\";\n}\n.fa-list-ul:before {\n  content: \"\\f0ca\";\n}\n.fa-list-ol:before {\n  content: \"\\f0cb\";\n}\n.fa-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.fa-underline:before {\n  content: \"\\f0cd\";\n}\n.fa-table:before {\n  content: \"\\f0ce\";\n}\n.fa-magic:before {\n  content: \"\\f0d0\";\n}\n.fa-truck:before {\n  content: \"\\f0d1\";\n}\n.fa-pinterest:before {\n  content: \"\\f0d2\";\n}\n.fa-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n.fa-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n.fa-google-plus:before {\n  content: \"\\f0d5\";\n}\n.fa-money:before {\n  content: \"\\f0d6\";\n}\n.fa-caret-down:before {\n  content: \"\\f0d7\";\n}\n.fa-caret-up:before {\n  content: \"\\f0d8\";\n}\n.fa-caret-left:before {\n  content: \"\\f0d9\";\n}\n.fa-caret-right:before {\n  content: \"\\f0da\";\n}\n.fa-columns:before {\n  content: \"\\f0db\";\n}\n.fa-unsorted:before,\n.fa-sort:before {\n  content: \"\\f0dc\";\n}\n.fa-sort-down:before,\n.fa-sort-desc:before {\n  content: \"\\f0dd\";\n}\n.fa-sort-up:before,\n.fa-sort-asc:before {\n  content: \"\\f0de\";\n}\n.fa-envelope:before {\n  content: \"\\f0e0\";\n}\n.fa-linkedin:before {\n  content: \"\\f0e1\";\n}\n.fa-rotate-left:before,\n.fa-undo:before {\n  content: \"\\f0e2\";\n}\n.fa-legal:before,\n.fa-gavel:before {\n  content: \"\\f0e3\";\n}\n.fa-dashboard:before,\n.fa-tachometer:before {\n  content: \"\\f0e4\";\n}\n.fa-comment-o:before {\n  content: \"\\f0e5\";\n}\n.fa-comments-o:before {\n  content: \"\\f0e6\";\n}\n.fa-flash:before,\n.fa-bolt:before {\n  content: \"\\f0e7\";\n}\n.fa-sitemap:before {\n  content: \"\\f0e8\";\n}\n.fa-umbrella:before {\n  content: \"\\f0e9\";\n}\n.fa-paste:before,\n.fa-clipboard:before {\n  content: \"\\f0ea\";\n}\n.fa-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n.fa-exchange:before {\n  content: \"\\f0ec\";\n}\n.fa-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.fa-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.fa-user-md:before {\n  content: \"\\f0f0\";\n}\n.fa-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.fa-suitcase:before {\n  content: \"\\f0f2\";\n}\n.fa-bell-o:before {\n  content: \"\\f0a2\";\n}\n.fa-coffee:before {\n  content: \"\\f0f4\";\n}\n.fa-cutlery:before {\n  content: \"\\f0f5\";\n}\n.fa-file-text-o:before {\n  content: \"\\f0f6\";\n}\n.fa-building-o:before {\n  content: \"\\f0f7\";\n}\n.fa-hospital-o:before {\n  content: \"\\f0f8\";\n}\n.fa-ambulance:before {\n  content: \"\\f0f9\";\n}\n.fa-medkit:before {\n  content: \"\\f0fa\";\n}\n.fa-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.fa-beer:before {\n  content: \"\\f0fc\";\n}\n.fa-h-square:before {\n  content: \"\\f0fd\";\n}\n.fa-plus-square:before {\n  content: \"\\f0fe\";\n}\n.fa-angle-double-left:before {\n  content: \"\\f100\";\n}\n.fa-angle-double-right:before {\n  content: \"\\f101\";\n}\n.fa-angle-double-up:before {\n  content: \"\\f102\";\n}\n.fa-angle-double-down:before {\n  content: \"\\f103\";\n}\n.fa-angle-left:before {\n  content: \"\\f104\";\n}\n.fa-angle-right:before {\n  content: \"\\f105\";\n}\n.fa-angle-up:before {\n  content: \"\\f106\";\n}\n.fa-angle-down:before {\n  content: \"\\f107\";\n}\n.fa-desktop:before {\n  content: \"\\f108\";\n}\n.fa-laptop:before {\n  content: \"\\f109\";\n}\n.fa-tablet:before {\n  content: \"\\f10a\";\n}\n.fa-mobile-phone:before,\n.fa-mobile:before {\n  content: \"\\f10b\";\n}\n.fa-circle-o:before {\n  content: \"\\f10c\";\n}\n.fa-quote-left:before {\n  content: \"\\f10d\";\n}\n.fa-quote-right:before {\n  content: \"\\f10e\";\n}\n.fa-spinner:before {\n  content: \"\\f110\";\n}\n.fa-circle:before {\n  content: \"\\f111\";\n}\n.fa-mail-reply:before,\n.fa-reply:before {\n  content: \"\\f112\";\n}\n.fa-github-alt:before {\n  content: \"\\f113\";\n}\n.fa-folder-o:before {\n  content: \"\\f114\";\n}\n.fa-folder-open-o:before {\n  content: \"\\f115\";\n}\n.fa-smile-o:before {\n  content: \"\\f118\";\n}\n.fa-frown-o:before {\n  content: \"\\f119\";\n}\n.fa-meh-o:before {\n  content: \"\\f11a\";\n}\n.fa-gamepad:before {\n  content: \"\\f11b\";\n}\n.fa-keyboard-o:before {\n  content: \"\\f11c\";\n}\n.fa-flag-o:before {\n  content: \"\\f11d\";\n}\n.fa-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.fa-terminal:before {\n  content: \"\\f120\";\n}\n.fa-code:before {\n  content: \"\\f121\";\n}\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n  content: \"\\f122\";\n}\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n  content: \"\\f123\";\n}\n.fa-location-arrow:before {\n  content: \"\\f124\";\n}\n.fa-crop:before {\n  content: \"\\f125\";\n}\n.fa-code-fork:before {\n  content: \"\\f126\";\n}\n.fa-unlink:before,\n.fa-chain-broken:before {\n  content: \"\\f127\";\n}\n.fa-question:before {\n  content: \"\\f128\";\n}\n.fa-info:before {\n  content: \"\\f129\";\n}\n.fa-exclamation:before {\n  content: \"\\f12a\";\n}\n.fa-superscript:before {\n  content: \"\\f12b\";\n}\n.fa-subscript:before {\n  content: \"\\f12c\";\n}\n.fa-eraser:before {\n  content: \"\\f12d\";\n}\n.fa-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.fa-microphone:before {\n  content: \"\\f130\";\n}\n.fa-microphone-slash:before {\n  content: \"\\f131\";\n}\n.fa-shield:before {\n  content: \"\\f132\";\n}\n.fa-calendar-o:before {\n  content: \"\\f133\";\n}\n.fa-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.fa-rocket:before {\n  content: \"\\f135\";\n}\n.fa-maxcdn:before {\n  content: \"\\f136\";\n}\n.fa-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n.fa-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n.fa-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n.fa-html5:before {\n  content: \"\\f13b\";\n}\n.fa-css3:before {\n  content: \"\\f13c\";\n}\n.fa-anchor:before {\n  content: \"\\f13d\";\n}\n.fa-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.fa-bullseye:before {\n  content: \"\\f140\";\n}\n.fa-ellipsis-h:before {\n  content: \"\\f141\";\n}\n.fa-ellipsis-v:before {\n  content: \"\\f142\";\n}\n.fa-rss-square:before {\n  content: \"\\f143\";\n}\n.fa-play-circle:before {\n  content: \"\\f144\";\n}\n.fa-ticket:before {\n  content: \"\\f145\";\n}\n.fa-minus-square:before {\n  content: \"\\f146\";\n}\n.fa-minus-square-o:before {\n  content: \"\\f147\";\n}\n.fa-level-up:before {\n  content: \"\\f148\";\n}\n.fa-level-down:before {\n  content: \"\\f149\";\n}\n.fa-check-square:before {\n  content: \"\\f14a\";\n}\n.fa-pencil-square:before {\n  content: \"\\f14b\";\n}\n.fa-external-link-square:before {\n  content: \"\\f14c\";\n}\n.fa-share-square:before {\n  content: \"\\f14d\";\n}\n.fa-compass:before {\n  content: \"\\f14e\";\n}\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n.fa-euro:before,\n.fa-eur:before {\n  content: \"\\f153\";\n}\n.fa-gbp:before {\n  content: \"\\f154\";\n}\n.fa-dollar:before,\n.fa-usd:before {\n  content: \"\\f155\";\n}\n.fa-rupee:before,\n.fa-inr:before {\n  content: \"\\f156\";\n}\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n  content: \"\\f157\";\n}\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n  content: \"\\f158\";\n}\n.fa-won:before,\n.fa-krw:before {\n  content: \"\\f159\";\n}\n.fa-bitcoin:before,\n.fa-btc:before {\n  content: \"\\f15a\";\n}\n.fa-file:before {\n  content: \"\\f15b\";\n}\n.fa-file-text:before {\n  content: \"\\f15c\";\n}\n.fa-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n.fa-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n.fa-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n.fa-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n.fa-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n.fa-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n.fa-thumbs-up:before {\n  content: \"\\f164\";\n}\n.fa-thumbs-down:before {\n  content: \"\\f165\";\n}\n.fa-youtube-square:before {\n  content: \"\\f166\";\n}\n.fa-youtube:before {\n  content: \"\\f167\";\n}\n.fa-xing:before {\n  content: \"\\f168\";\n}\n.fa-xing-square:before {\n  content: \"\\f169\";\n}\n.fa-youtube-play:before {\n  content: \"\\f16a\";\n}\n.fa-dropbox:before {\n  content: \"\\f16b\";\n}\n.fa-stack-overflow:before {\n  content: \"\\f16c\";\n}\n.fa-instagram:before {\n  content: \"\\f16d\";\n}\n.fa-flickr:before {\n  content: \"\\f16e\";\n}\n.fa-adn:before {\n  content: \"\\f170\";\n}\n.fa-bitbucket:before {\n  content: \"\\f171\";\n}\n.fa-bitbucket-square:before {\n  content: \"\\f172\";\n}\n.fa-tumblr:before {\n  content: \"\\f173\";\n}\n.fa-tumblr-square:before {\n  content: \"\\f174\";\n}\n.fa-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.fa-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.fa-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.fa-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.fa-apple:before {\n  content: \"\\f179\";\n}\n.fa-windows:before {\n  content: \"\\f17a\";\n}\n.fa-android:before {\n  content: \"\\f17b\";\n}\n.fa-linux:before {\n  content: \"\\f17c\";\n}\n.fa-dribbble:before {\n  content: \"\\f17d\";\n}\n.fa-skype:before {\n  content: \"\\f17e\";\n}\n.fa-foursquare:before {\n  content: \"\\f180\";\n}\n.fa-trello:before {\n  content: \"\\f181\";\n}\n.fa-female:before {\n  content: \"\\f182\";\n}\n.fa-male:before {\n  content: \"\\f183\";\n}\n.fa-gittip:before,\n.fa-gratipay:before {\n  content: \"\\f184\";\n}\n.fa-sun-o:before {\n  content: \"\\f185\";\n}\n.fa-moon-o:before {\n  content: \"\\f186\";\n}\n.fa-archive:before {\n  content: \"\\f187\";\n}\n.fa-bug:before {\n  content: \"\\f188\";\n}\n.fa-vk:before {\n  content: \"\\f189\";\n}\n.fa-weibo:before {\n  content: \"\\f18a\";\n}\n.fa-renren:before {\n  content: \"\\f18b\";\n}\n.fa-pagelines:before {\n  content: \"\\f18c\";\n}\n.fa-stack-exchange:before {\n  content: \"\\f18d\";\n}\n.fa-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n.fa-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n.fa-dot-circle-o:before {\n  content: \"\\f192\";\n}\n.fa-wheelchair:before {\n  content: \"\\f193\";\n}\n.fa-vimeo-square:before {\n  content: \"\\f194\";\n}\n.fa-turkish-lira:before,\n.fa-try:before {\n  content: \"\\f195\";\n}\n.fa-plus-square-o:before {\n  content: \"\\f196\";\n}\n.fa-space-shuttle:before {\n  content: \"\\f197\";\n}\n.fa-slack:before {\n  content: \"\\f198\";\n}\n.fa-envelope-square:before {\n  content: \"\\f199\";\n}\n.fa-wordpress:before {\n  content: \"\\f19a\";\n}\n.fa-openid:before {\n  content: \"\\f19b\";\n}\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n  content: \"\\f19c\";\n}\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n  content: \"\\f19d\";\n}\n.fa-yahoo:before {\n  content: \"\\f19e\";\n}\n.fa-google:before {\n  content: \"\\f1a0\";\n}\n.fa-reddit:before {\n  content: \"\\f1a1\";\n}\n.fa-reddit-square:before {\n  content: \"\\f1a2\";\n}\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n.fa-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n.fa-delicious:before {\n  content: \"\\f1a5\";\n}\n.fa-digg:before {\n  content: \"\\f1a6\";\n}\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\";\n}\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n.fa-drupal:before {\n  content: \"\\f1a9\";\n}\n.fa-joomla:before {\n  content: \"\\f1aa\";\n}\n.fa-language:before {\n  content: \"\\f1ab\";\n}\n.fa-fax:before {\n  content: \"\\f1ac\";\n}\n.fa-building:before {\n  content: \"\\f1ad\";\n}\n.fa-child:before {\n  content: \"\\f1ae\";\n}\n.fa-paw:before {\n  content: \"\\f1b0\";\n}\n.fa-spoon:before {\n  content: \"\\f1b1\";\n}\n.fa-cube:before {\n  content: \"\\f1b2\";\n}\n.fa-cubes:before {\n  content: \"\\f1b3\";\n}\n.fa-behance:before {\n  content: \"\\f1b4\";\n}\n.fa-behance-square:before {\n  content: \"\\f1b5\";\n}\n.fa-steam:before {\n  content: \"\\f1b6\";\n}\n.fa-steam-square:before {\n  content: \"\\f1b7\";\n}\n.fa-recycle:before {\n  content: \"\\f1b8\";\n}\n.fa-automobile:before,\n.fa-car:before {\n  content: \"\\f1b9\";\n}\n.fa-cab:before,\n.fa-taxi:before {\n  content: \"\\f1ba\";\n}\n.fa-tree:before {\n  content: \"\\f1bb\";\n}\n.fa-spotify:before {\n  content: \"\\f1bc\";\n}\n.fa-deviantart:before {\n  content: \"\\f1bd\";\n}\n.fa-soundcloud:before {\n  content: \"\\f1be\";\n}\n.fa-database:before {\n  content: \"\\f1c0\";\n}\n.fa-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n.fa-file-word-o:before {\n  content: \"\\f1c2\";\n}\n.fa-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n  content: \"\\f1c5\";\n}\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n  content: \"\\f1c8\";\n}\n.fa-file-code-o:before {\n  content: \"\\f1c9\";\n}\n.fa-vine:before {\n  content: \"\\f1ca\";\n}\n.fa-codepen:before {\n  content: \"\\f1cb\";\n}\n.fa-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n  content: \"\\f1cd\";\n}\n.fa-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n  content: \"\\f1d0\";\n}\n.fa-ge:before,\n.fa-empire:before {\n  content: \"\\f1d1\";\n}\n.fa-git-square:before {\n  content: \"\\f1d2\";\n}\n.fa-git:before {\n  content: \"\\f1d3\";\n}\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n  content: \"\\f1d4\";\n}\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n.fa-qq:before {\n  content: \"\\f1d6\";\n}\n.fa-wechat:before,\n.fa-weixin:before {\n  content: \"\\f1d7\";\n}\n.fa-send:before,\n.fa-paper-plane:before {\n  content: \"\\f1d8\";\n}\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n.fa-history:before {\n  content: \"\\f1da\";\n}\n.fa-circle-thin:before {\n  content: \"\\f1db\";\n}\n.fa-header:before {\n  content: \"\\f1dc\";\n}\n.fa-paragraph:before {\n  content: \"\\f1dd\";\n}\n.fa-sliders:before {\n  content: \"\\f1de\";\n}\n.fa-share-alt:before {\n  content: \"\\f1e0\";\n}\n.fa-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n.fa-bomb:before {\n  content: \"\\f1e2\";\n}\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n  content: \"\\f1e3\";\n}\n.fa-tty:before {\n  content: \"\\f1e4\";\n}\n.fa-binoculars:before {\n  content: \"\\f1e5\";\n}\n.fa-plug:before {\n  content: \"\\f1e6\";\n}\n.fa-slideshare:before {\n  content: \"\\f1e7\";\n}\n.fa-twitch:before {\n  content: \"\\f1e8\";\n}\n.fa-yelp:before {\n  content: \"\\f1e9\";\n}\n.fa-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n.fa-wifi:before {\n  content: \"\\f1eb\";\n}\n.fa-calculator:before {\n  content: \"\\f1ec\";\n}\n.fa-paypal:before {\n  content: \"\\f1ed\";\n}\n.fa-google-wallet:before {\n  content: \"\\f1ee\";\n}\n.fa-cc-visa:before {\n  content: \"\\f1f0\";\n}\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n.fa-cc-discover:before {\n  content: \"\\f1f2\";\n}\n.fa-cc-amex:before {\n  content: \"\\f1f3\";\n}\n.fa-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n.fa-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n.fa-bell-slash:before {\n  content: \"\\f1f6\";\n}\n.fa-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n.fa-trash:before {\n  content: \"\\f1f8\";\n}\n.fa-copyright:before {\n  content: \"\\f1f9\";\n}\n.fa-at:before {\n  content: \"\\f1fa\";\n}\n.fa-eyedropper:before {\n  content: \"\\f1fb\";\n}\n.fa-paint-brush:before {\n  content: \"\\f1fc\";\n}\n.fa-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n.fa-area-chart:before {\n  content: \"\\f1fe\";\n}\n.fa-pie-chart:before {\n  content: \"\\f200\";\n}\n.fa-line-chart:before {\n  content: \"\\f201\";\n}\n.fa-lastfm:before {\n  content: \"\\f202\";\n}\n.fa-lastfm-square:before {\n  content: \"\\f203\";\n}\n.fa-toggle-off:before {\n  content: \"\\f204\";\n}\n.fa-toggle-on:before {\n  content: \"\\f205\";\n}\n.fa-bicycle:before {\n  content: \"\\f206\";\n}\n.fa-bus:before {\n  content: \"\\f207\";\n}\n.fa-ioxhost:before {\n  content: \"\\f208\";\n}\n.fa-angellist:before {\n  content: \"\\f209\";\n}\n.fa-cc:before {\n  content: \"\\f20a\";\n}\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n  content: \"\\f20b\";\n}\n.fa-meanpath:before {\n  content: \"\\f20c\";\n}\n.fa-buysellads:before {\n  content: \"\\f20d\";\n}\n.fa-connectdevelop:before {\n  content: \"\\f20e\";\n}\n.fa-dashcube:before {\n  content: \"\\f210\";\n}\n.fa-forumbee:before {\n  content: \"\\f211\";\n}\n.fa-leanpub:before {\n  content: \"\\f212\";\n}\n.fa-sellsy:before {\n  content: \"\\f213\";\n}\n.fa-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n.fa-simplybuilt:before {\n  content: \"\\f215\";\n}\n.fa-skyatlas:before {\n  content: \"\\f216\";\n}\n.fa-cart-plus:before {\n  content: \"\\f217\";\n}\n.fa-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n.fa-diamond:before {\n  content: \"\\f219\";\n}\n.fa-ship:before {\n  content: \"\\f21a\";\n}\n.fa-user-secret:before {\n  content: \"\\f21b\";\n}\n.fa-motorcycle:before {\n  content: \"\\f21c\";\n}\n.fa-street-view:before {\n  content: \"\\f21d\";\n}\n.fa-heartbeat:before {\n  content: \"\\f21e\";\n}\n.fa-venus:before {\n  content: \"\\f221\";\n}\n.fa-mars:before {\n  content: \"\\f222\";\n}\n.fa-mercury:before {\n  content: \"\\f223\";\n}\n.fa-intersex:before,\n.fa-transgender:before {\n  content: \"\\f224\";\n}\n.fa-transgender-alt:before {\n  content: \"\\f225\";\n}\n.fa-venus-double:before {\n  content: \"\\f226\";\n}\n.fa-mars-double:before {\n  content: \"\\f227\";\n}\n.fa-venus-mars:before {\n  content: \"\\f228\";\n}\n.fa-mars-stroke:before {\n  content: \"\\f229\";\n}\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n.fa-neuter:before {\n  content: \"\\f22c\";\n}\n.fa-genderless:before {\n  content: \"\\f22d\";\n}\n.fa-facebook-official:before {\n  content: \"\\f230\";\n}\n.fa-pinterest-p:before {\n  content: \"\\f231\";\n}\n.fa-whatsapp:before {\n  content: \"\\f232\";\n}\n.fa-server:before {\n  content: \"\\f233\";\n}\n.fa-user-plus:before {\n  content: \"\\f234\";\n}\n.fa-user-times:before {\n  content: \"\\f235\";\n}\n.fa-hotel:before,\n.fa-bed:before {\n  content: \"\\f236\";\n}\n.fa-viacoin:before {\n  content: \"\\f237\";\n}\n.fa-train:before {\n  content: \"\\f238\";\n}\n.fa-subway:before {\n  content: \"\\f239\";\n}\n.fa-medium:before {\n  content: \"\\f23a\";\n}\n.fa-yc:before,\n.fa-y-combinator:before {\n  content: \"\\f23b\";\n}\n.fa-optin-monster:before {\n  content: \"\\f23c\";\n}\n.fa-opencart:before {\n  content: \"\\f23d\";\n}\n.fa-expeditedssl:before {\n  content: \"\\f23e\";\n}\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n  content: \"\\f240\";\n}\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n  content: \"\\f241\";\n}\n.fa-battery-2:before,\n.fa-battery-half:before {\n  content: \"\\f242\";\n}\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n  content: \"\\f243\";\n}\n.fa-battery-0:before,\n.fa-battery-empty:before {\n  content: \"\\f244\";\n}\n.fa-mouse-pointer:before {\n  content: \"\\f245\";\n}\n.fa-i-cursor:before {\n  content: \"\\f246\";\n}\n.fa-object-group:before {\n  content: \"\\f247\";\n}\n.fa-object-ungroup:before {\n  content: \"\\f248\";\n}\n.fa-sticky-note:before {\n  content: \"\\f249\";\n}\n.fa-sticky-note-o:before {\n  content: \"\\f24a\";\n}\n.fa-cc-jcb:before {\n  content: \"\\f24b\";\n}\n.fa-cc-diners-club:before {\n  content: \"\\f24c\";\n}\n.fa-clone:before {\n  content: \"\\f24d\";\n}\n.fa-balance-scale:before {\n  content: \"\\f24e\";\n}\n.fa-hourglass-o:before {\n  content: \"\\f250\";\n}\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n  content: \"\\f251\";\n}\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n  content: \"\\f252\";\n}\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n  content: \"\\f253\";\n}\n.fa-hourglass:before {\n  content: \"\\f254\";\n}\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n  content: \"\\f255\";\n}\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n  content: \"\\f256\";\n}\n.fa-hand-scissors-o:before {\n  content: \"\\f257\";\n}\n.fa-hand-lizard-o:before {\n  content: \"\\f258\";\n}\n.fa-hand-spock-o:before {\n  content: \"\\f259\";\n}\n.fa-hand-pointer-o:before {\n  content: \"\\f25a\";\n}\n.fa-hand-peace-o:before {\n  content: \"\\f25b\";\n}\n.fa-trademark:before {\n  content: \"\\f25c\";\n}\n.fa-registered:before {\n  content: \"\\f25d\";\n}\n.fa-creative-commons:before {\n  content: \"\\f25e\";\n}\n.fa-gg:before {\n  content: \"\\f260\";\n}\n.fa-gg-circle:before {\n  content: \"\\f261\";\n}\n.fa-tripadvisor:before {\n  content: \"\\f262\";\n}\n.fa-odnoklassniki:before {\n  content: \"\\f263\";\n}\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\";\n}\n.fa-get-pocket:before {\n  content: \"\\f265\";\n}\n.fa-wikipedia-w:before {\n  content: \"\\f266\";\n}\n.fa-safari:before {\n  content: \"\\f267\";\n}\n.fa-chrome:before {\n  content: \"\\f268\";\n}\n.fa-firefox:before {\n  content: \"\\f269\";\n}\n.fa-opera:before {\n  content: \"\\f26a\";\n}\n.fa-internet-explorer:before {\n  content: \"\\f26b\";\n}\n.fa-tv:before,\n.fa-television:before {\n  content: \"\\f26c\";\n}\n.fa-contao:before {\n  content: \"\\f26d\";\n}\n.fa-500px:before {\n  content: \"\\f26e\";\n}\n.fa-amazon:before {\n  content: \"\\f270\";\n}\n.fa-calendar-plus-o:before {\n  content: \"\\f271\";\n}\n.fa-calendar-minus-o:before {\n  content: \"\\f272\";\n}\n.fa-calendar-times-o:before {\n  content: \"\\f273\";\n}\n.fa-calendar-check-o:before {\n  content: \"\\f274\";\n}\n.fa-industry:before {\n  content: \"\\f275\";\n}\n.fa-map-pin:before {\n  content: \"\\f276\";\n}\n.fa-map-signs:before {\n  content: \"\\f277\";\n}\n.fa-map-o:before {\n  content: \"\\f278\";\n}\n.fa-map:before {\n  content: \"\\f279\";\n}\n.fa-commenting:before {\n  content: \"\\f27a\";\n}\n.fa-commenting-o:before {\n  content: \"\\f27b\";\n}\n.fa-houzz:before {\n  content: \"\\f27c\";\n}\n.fa-vimeo:before {\n  content: \"\\f27d\";\n}\n.fa-black-tie:before {\n  content: \"\\f27e\";\n}\n.fa-fonticons:before {\n  content: \"\\f280\";\n}\n.fa-reddit-alien:before {\n  content: \"\\f281\";\n}\n.fa-edge:before {\n  content: \"\\f282\";\n}\n.fa-credit-card-alt:before {\n  content: \"\\f283\";\n}\n.fa-codiepie:before {\n  content: \"\\f284\";\n}\n.fa-modx:before {\n  content: \"\\f285\";\n}\n.fa-fort-awesome:before {\n  content: \"\\f286\";\n}\n.fa-usb:before {\n  content: \"\\f287\";\n}\n.fa-product-hunt:before {\n  content: \"\\f288\";\n}\n.fa-mixcloud:before {\n  content: \"\\f289\";\n}\n.fa-scribd:before {\n  content: \"\\f28a\";\n}\n.fa-pause-circle:before {\n  content: \"\\f28b\";\n}\n.fa-pause-circle-o:before {\n  content: \"\\f28c\";\n}\n.fa-stop-circle:before {\n  content: \"\\f28d\";\n}\n.fa-stop-circle-o:before {\n  content: \"\\f28e\";\n}\n.fa-shopping-bag:before {\n  content: \"\\f290\";\n}\n.fa-shopping-basket:before {\n  content: \"\\f291\";\n}\n.fa-hashtag:before {\n  content: \"\\f292\";\n}\n.fa-bluetooth:before {\n  content: \"\\f293\";\n}\n.fa-bluetooth-b:before {\n  content: \"\\f294\";\n}\n.fa-percent:before {\n  content: \"\\f295\";\n}\n.fa-gitlab:before {\n  content: \"\\f296\";\n}\n.fa-wpbeginner:before {\n  content: \"\\f297\";\n}\n.fa-wpforms:before {\n  content: \"\\f298\";\n}\n.fa-envira:before {\n  content: \"\\f299\";\n}\n.fa-universal-access:before {\n  content: \"\\f29a\";\n}\n.fa-wheelchair-alt:before {\n  content: \"\\f29b\";\n}\n.fa-question-circle-o:before {\n  content: \"\\f29c\";\n}\n.fa-blind:before {\n  content: \"\\f29d\";\n}\n.fa-audio-description:before {\n  content: \"\\f29e\";\n}\n.fa-volume-control-phone:before {\n  content: \"\\f2a0\";\n}\n.fa-braille:before {\n  content: \"\\f2a1\";\n}\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\";\n}\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\";\n}\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n  content: \"\\f2a4\";\n}\n.fa-glide:before {\n  content: \"\\f2a5\";\n}\n.fa-glide-g:before {\n  content: \"\\f2a6\";\n}\n.fa-signing:before,\n.fa-sign-language:before {\n  content: \"\\f2a7\";\n}\n.fa-low-vision:before {\n  content: \"\\f2a8\";\n}\n.fa-viadeo:before {\n  content: \"\\f2a9\";\n}\n.fa-viadeo-square:before {\n  content: \"\\f2aa\";\n}\n.fa-snapchat:before {\n  content: \"\\f2ab\";\n}\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\";\n}\n.fa-snapchat-square:before {\n  content: \"\\f2ad\";\n}\n.fa-pied-piper:before {\n  content: \"\\f2ae\";\n}\n.fa-first-order:before {\n  content: \"\\f2b0\";\n}\n.fa-yoast:before {\n  content: \"\\f2b1\";\n}\n.fa-themeisle:before {\n  content: \"\\f2b2\";\n}\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n  content: \"\\f2b3\";\n}\n.fa-fa:before,\n.fa-font-awesome:before {\n  content: \"\\f2b4\";\n}\n.fa-handshake-o:before {\n  content: \"\\f2b5\";\n}\n.fa-envelope-open:before {\n  content: \"\\f2b6\";\n}\n.fa-envelope-open-o:before {\n  content: \"\\f2b7\";\n}\n.fa-linode:before {\n  content: \"\\f2b8\";\n}\n.fa-address-book:before {\n  content: \"\\f2b9\";\n}\n.fa-address-book-o:before {\n  content: \"\\f2ba\";\n}\n.fa-vcard:before,\n.fa-address-card:before {\n  content: \"\\f2bb\";\n}\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n  content: \"\\f2bc\";\n}\n.fa-user-circle:before {\n  content: \"\\f2bd\";\n}\n.fa-user-circle-o:before {\n  content: \"\\f2be\";\n}\n.fa-user-o:before {\n  content: \"\\f2c0\";\n}\n.fa-id-badge:before {\n  content: \"\\f2c1\";\n}\n.fa-drivers-license:before,\n.fa-id-card:before {\n  content: \"\\f2c2\";\n}\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n  content: \"\\f2c3\";\n}\n.fa-quora:before {\n  content: \"\\f2c4\";\n}\n.fa-free-code-camp:before {\n  content: \"\\f2c5\";\n}\n.fa-telegram:before {\n  content: \"\\f2c6\";\n}\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n  content: \"\\f2c7\";\n}\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\";\n}\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n  content: \"\\f2c9\";\n}\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\";\n}\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\";\n}\n.fa-shower:before {\n  content: \"\\f2cc\";\n}\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n  content: \"\\f2cd\";\n}\n.fa-podcast:before {\n  content: \"\\f2ce\";\n}\n.fa-window-maximize:before {\n  content: \"\\f2d0\";\n}\n.fa-window-minimize:before {\n  content: \"\\f2d1\";\n}\n.fa-window-restore:before {\n  content: \"\\f2d2\";\n}\n.fa-times-rectangle:before,\n.fa-window-close:before {\n  content: \"\\f2d3\";\n}\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n  content: \"\\f2d4\";\n}\n.fa-bandcamp:before {\n  content: \"\\f2d5\";\n}\n.fa-grav:before {\n  content: \"\\f2d6\";\n}\n.fa-etsy:before {\n  content: \"\\f2d7\";\n}\n.fa-imdb:before {\n  content: \"\\f2d8\";\n}\n.fa-ravelry:before {\n  content: \"\\f2d9\";\n}\n.fa-eercast:before {\n  content: \"\\f2da\";\n}\n.fa-microchip:before {\n  content: \"\\f2db\";\n}\n.fa-snowflake-o:before {\n  content: \"\\f2dc\";\n}\n.fa-superpowers:before {\n  content: \"\\f2dd\";\n}\n.fa-wpexplorer:before {\n  content: \"\\f2de\";\n}\n.fa-meetup:before {\n  content: \"\\f2e0\";\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n/*!\n*\n* IPython base\n*\n*/\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\ncode {\n  color: #000;\n}\npre {\n  font-size: inherit;\n  line-height: inherit;\n}\nlabel {\n  font-weight: normal;\n}\n/* Make the page background atleast 100% the height of the view port */\n/* Make the page itself atleast 70% the height of the view port */\n.border-box-sizing {\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n}\n.corner-all {\n  border-radius: 2px;\n}\n.no-padding {\n  padding: 0px;\n}\n/* Flexible box model classes */\n/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */\n/* This file is a compatability layer.  It allows the usage of flexible box \nmodel layouts accross multiple browsers, including older browsers.  The newest,\nuniversal implementation of the flexible box model is used when available (see\n`Modern browsers` comments below).  Browsers that are known to implement this \nnew spec completely include:\n\n    Firefox 28.0+\n    Chrome 29.0+\n    Internet Explorer 11+ \n    Opera 17.0+\n\nBrowsers not listed, including Safari, are supported via the styling under the\n`Old browsers` comments below.\n*/\n.hbox {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n}\n.hbox > * {\n  /* Old browsers */\n  -webkit-box-flex: 0;\n  -moz-box-flex: 0;\n  box-flex: 0;\n  /* Modern browsers */\n  flex: none;\n}\n.vbox {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n.vbox > * {\n  /* Old browsers */\n  -webkit-box-flex: 0;\n  -moz-box-flex: 0;\n  box-flex: 0;\n  /* Modern browsers */\n  flex: none;\n}\n.hbox.reverse,\n.vbox.reverse,\n.reverse {\n  /* Old browsers */\n  -webkit-box-direction: reverse;\n  -moz-box-direction: reverse;\n  box-direction: reverse;\n  /* Modern browsers */\n  flex-direction: row-reverse;\n}\n.hbox.box-flex0,\n.vbox.box-flex0,\n.box-flex0 {\n  /* Old browsers */\n  -webkit-box-flex: 0;\n  -moz-box-flex: 0;\n  box-flex: 0;\n  /* Modern browsers */\n  flex: none;\n  width: auto;\n}\n.hbox.box-flex1,\n.vbox.box-flex1,\n.box-flex1 {\n  /* Old browsers */\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  box-flex: 1;\n  /* Modern browsers */\n  flex: 1;\n}\n.hbox.box-flex,\n.vbox.box-flex,\n.box-flex {\n  /* Old browsers */\n  /* Old browsers */\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  box-flex: 1;\n  /* Modern browsers */\n  flex: 1;\n}\n.hbox.box-flex2,\n.vbox.box-flex2,\n.box-flex2 {\n  /* Old browsers */\n  -webkit-box-flex: 2;\n  -moz-box-flex: 2;\n  box-flex: 2;\n  /* Modern browsers */\n  flex: 2;\n}\n.box-group1 {\n  /*  Deprecated */\n  -webkit-box-flex-group: 1;\n  -moz-box-flex-group: 1;\n  box-flex-group: 1;\n}\n.box-group2 {\n  /* Deprecated */\n  -webkit-box-flex-group: 2;\n  -moz-box-flex-group: 2;\n  box-flex-group: 2;\n}\n.hbox.start,\n.vbox.start,\n.start {\n  /* Old browsers */\n  -webkit-box-pack: start;\n  -moz-box-pack: start;\n  box-pack: start;\n  /* Modern browsers */\n  justify-content: flex-start;\n}\n.hbox.end,\n.vbox.end,\n.end {\n  /* Old browsers */\n  -webkit-box-pack: end;\n  -moz-box-pack: end;\n  box-pack: end;\n  /* Modern browsers */\n  justify-content: flex-end;\n}\n.hbox.center,\n.vbox.center,\n.center {\n  /* Old browsers */\n  -webkit-box-pack: center;\n  -moz-box-pack: center;\n  box-pack: center;\n  /* Modern browsers */\n  justify-content: center;\n}\n.hbox.baseline,\n.vbox.baseline,\n.baseline {\n  /* Old browsers */\n  -webkit-box-pack: baseline;\n  -moz-box-pack: baseline;\n  box-pack: baseline;\n  /* Modern browsers */\n  justify-content: baseline;\n}\n.hbox.stretch,\n.vbox.stretch,\n.stretch {\n  /* Old browsers */\n  -webkit-box-pack: stretch;\n  -moz-box-pack: stretch;\n  box-pack: stretch;\n  /* Modern browsers */\n  justify-content: stretch;\n}\n.hbox.align-start,\n.vbox.align-start,\n.align-start {\n  /* Old browsers */\n  -webkit-box-align: start;\n  -moz-box-align: start;\n  box-align: start;\n  /* Modern browsers */\n  align-items: flex-start;\n}\n.hbox.align-end,\n.vbox.align-end,\n.align-end {\n  /* Old browsers */\n  -webkit-box-align: end;\n  -moz-box-align: end;\n  box-align: end;\n  /* Modern browsers */\n  align-items: flex-end;\n}\n.hbox.align-center,\n.vbox.align-center,\n.align-center {\n  /* Old browsers */\n  -webkit-box-align: center;\n  -moz-box-align: center;\n  box-align: center;\n  /* Modern browsers */\n  align-items: center;\n}\n.hbox.align-baseline,\n.vbox.align-baseline,\n.align-baseline {\n  /* Old browsers */\n  -webkit-box-align: baseline;\n  -moz-box-align: baseline;\n  box-align: baseline;\n  /* Modern browsers */\n  align-items: baseline;\n}\n.hbox.align-stretch,\n.vbox.align-stretch,\n.align-stretch {\n  /* Old browsers */\n  -webkit-box-align: stretch;\n  -moz-box-align: stretch;\n  box-align: stretch;\n  /* Modern browsers */\n  align-items: stretch;\n}\ndiv.error {\n  margin: 2em;\n  text-align: center;\n}\ndiv.error > h1 {\n  font-size: 500%;\n  line-height: normal;\n}\ndiv.error > p {\n  font-size: 200%;\n  line-height: normal;\n}\ndiv.traceback-wrapper {\n  text-align: left;\n  max-width: 800px;\n  margin: auto;\n}\ndiv.traceback-wrapper pre.traceback {\n  max-height: 600px;\n  overflow: auto;\n}\n/**\n * Primary styles\n *\n * Author: Jupyter Development Team\n */\nbody {\n  background-color: #fff;\n  /* This makes sure that the body covers the entire window and needs to\n       be in a different element than the display: box in wrapper below */\n  position: absolute;\n  left: 0px;\n  right: 0px;\n  top: 0px;\n  bottom: 0px;\n  overflow: visible;\n}\nbody > #header {\n  /* Initially hidden to prevent FLOUC */\n  display: none;\n  background-color: #fff;\n  /* Display over codemirror */\n  position: relative;\n  z-index: 100;\n}\nbody > #header #header-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  padding: 5px;\n  padding-bottom: 5px;\n  padding-top: 5px;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n}\nbody > #header .header-bar {\n  width: 100%;\n  height: 1px;\n  background: #e7e7e7;\n  margin-bottom: -1px;\n}\n@media print {\n  body > #header {\n    display: none !important;\n  }\n}\n#header-spacer {\n  width: 100%;\n  visibility: hidden;\n}\n@media print {\n  #header-spacer {\n    display: none;\n  }\n}\n#ipython_notebook {\n  padding-left: 0px;\n  padding-top: 1px;\n  padding-bottom: 1px;\n}\n[dir=\"rtl\"] #ipython_notebook {\n  margin-right: 10px;\n  margin-left: 0;\n}\n[dir=\"rtl\"] #ipython_notebook.pull-left {\n  float: right !important;\n  float: right;\n}\n.flex-spacer {\n  flex: 1;\n}\n#noscript {\n  width: auto;\n  padding-top: 16px;\n  padding-bottom: 16px;\n  text-align: center;\n  font-size: 22px;\n  color: red;\n  font-weight: bold;\n}\n#ipython_notebook img {\n  height: 28px;\n}\n#site {\n  width: 100%;\n  display: none;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  overflow: auto;\n}\n@media print {\n  #site {\n    height: auto !important;\n  }\n}\n/* Smaller buttons */\n.ui-button .ui-button-text {\n  padding: 0.2em 0.8em;\n  font-size: 77%;\n}\ninput.ui-button {\n  padding: 0.3em 0.9em;\n}\nspan#kernel_logo_widget {\n  margin: 0 10px;\n}\nspan#login_widget {\n  float: right;\n}\n[dir=\"rtl\"] span#login_widget {\n  float: left;\n}\nspan#login_widget > .button,\n#logout {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\nspan#login_widget > .button:focus,\n#logout:focus,\nspan#login_widget > .button.focus,\n#logout.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\nspan#login_widget > .button:hover,\n#logout:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\nspan#login_widget > .button:active,\n#logout:active,\nspan#login_widget > .button.active,\n#logout.active,\n.open > .dropdown-togglespan#login_widget > .button,\n.open > .dropdown-toggle#logout {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\nspan#login_widget > .button:active:hover,\n#logout:active:hover,\nspan#login_widget > .button.active:hover,\n#logout.active:hover,\n.open > .dropdown-togglespan#login_widget > .button:hover,\n.open > .dropdown-toggle#logout:hover,\nspan#login_widget > .button:active:focus,\n#logout:active:focus,\nspan#login_widget > .button.active:focus,\n#logout.active:focus,\n.open > .dropdown-togglespan#login_widget > .button:focus,\n.open > .dropdown-toggle#logout:focus,\nspan#login_widget > .button:active.focus,\n#logout:active.focus,\nspan#login_widget > .button.active.focus,\n#logout.active.focus,\n.open > .dropdown-togglespan#login_widget > .button.focus,\n.open > .dropdown-toggle#logout.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\nspan#login_widget > .button:active,\n#logout:active,\nspan#login_widget > .button.active,\n#logout.active,\n.open > .dropdown-togglespan#login_widget > .button,\n.open > .dropdown-toggle#logout {\n  background-image: none;\n}\nspan#login_widget > .button.disabled:hover,\n#logout.disabled:hover,\nspan#login_widget > .button[disabled]:hover,\n#logout[disabled]:hover,\nfieldset[disabled] span#login_widget > .button:hover,\nfieldset[disabled] #logout:hover,\nspan#login_widget > .button.disabled:focus,\n#logout.disabled:focus,\nspan#login_widget > .button[disabled]:focus,\n#logout[disabled]:focus,\nfieldset[disabled] span#login_widget > .button:focus,\nfieldset[disabled] #logout:focus,\nspan#login_widget > .button.disabled.focus,\n#logout.disabled.focus,\nspan#login_widget > .button[disabled].focus,\n#logout[disabled].focus,\nfieldset[disabled] span#login_widget > .button.focus,\nfieldset[disabled] #logout.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\nspan#login_widget > .button .badge,\n#logout .badge {\n  color: #fff;\n  background-color: #333;\n}\n.nav-header {\n  text-transform: none;\n}\n#header > span {\n  margin-top: 10px;\n}\n.modal_stretch .modal-dialog {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  min-height: 80vh;\n}\n.modal_stretch .modal-dialog .modal-body {\n  max-height: calc(100vh - 200px);\n  overflow: auto;\n  flex: 1;\n}\n.modal-header {\n  cursor: move;\n}\n@media (min-width: 768px) {\n  .modal .modal-dialog {\n    width: 700px;\n  }\n}\n@media (min-width: 768px) {\n  select.form-control {\n    margin-left: 12px;\n    margin-right: 12px;\n  }\n}\n/*!\n*\n* IPython auth\n*\n*/\n.center-nav {\n  display: inline-block;\n  margin-bottom: -4px;\n}\n[dir=\"rtl\"] .center-nav form.pull-left {\n  float: right !important;\n  float: right;\n}\n[dir=\"rtl\"] .center-nav .navbar-text {\n  float: right;\n}\n[dir=\"rtl\"] .navbar-inner {\n  text-align: right;\n}\n[dir=\"rtl\"] div.text-left {\n  text-align: right;\n}\n/*!\n*\n* IPython tree view\n*\n*/\n/* We need an invisible input field on top of the sentense*/\n/* \"Drag file onto the list ...\" */\n.alternate_upload {\n  background-color: none;\n  display: inline;\n}\n.alternate_upload.form {\n  padding: 0;\n  margin: 0;\n}\n.alternate_upload input.fileinput {\n  position: absolute;\n  display: block;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  cursor: pointer;\n  opacity: 0;\n  z-index: 2;\n}\n.alternate_upload .btn-xs > input.fileinput {\n  margin: -1px -5px;\n}\n.alternate_upload .btn-upload {\n  position: relative;\n  height: 22px;\n}\n::-webkit-file-upload-button {\n  cursor: pointer;\n}\n/**\n * Primary styles\n *\n * Author: Jupyter Development Team\n */\nul#tabs {\n  margin-bottom: 4px;\n}\nul#tabs a {\n  padding-top: 6px;\n  padding-bottom: 4px;\n}\n[dir=\"rtl\"] ul#tabs.nav-tabs > li {\n  float: right;\n}\n[dir=\"rtl\"] ul#tabs.nav.nav-tabs {\n  padding-right: 0;\n}\nul.breadcrumb a:focus,\nul.breadcrumb a:hover {\n  text-decoration: none;\n}\nul.breadcrumb i.icon-home {\n  font-size: 16px;\n  margin-right: 4px;\n}\nul.breadcrumb span {\n  color: #5e5e5e;\n}\n.list_toolbar {\n  padding: 4px 0 4px 0;\n  vertical-align: middle;\n}\n.list_toolbar .tree-buttons {\n  padding-top: 1px;\n}\n[dir=\"rtl\"] .list_toolbar .tree-buttons .pull-right {\n  float: left !important;\n  float: left;\n}\n[dir=\"rtl\"] .list_toolbar .col-sm-4,\n[dir=\"rtl\"] .list_toolbar .col-sm-8 {\n  float: right;\n}\n.dynamic-buttons {\n  padding-top: 3px;\n  display: inline-block;\n}\n.list_toolbar [class*=\"span\"] {\n  min-height: 24px;\n}\n.list_header {\n  font-weight: bold;\n  background-color: #EEE;\n}\n.list_placeholder {\n  font-weight: bold;\n  padding-top: 4px;\n  padding-bottom: 4px;\n  padding-left: 7px;\n  padding-right: 7px;\n}\n.list_container {\n  margin-top: 4px;\n  margin-bottom: 20px;\n  border: 1px solid #ddd;\n  border-radius: 2px;\n}\n.list_container > div {\n  border-bottom: 1px solid #ddd;\n}\n.list_container > div:hover .list-item {\n  background-color: red;\n}\n.list_container > div:last-child {\n  border: none;\n}\n.list_item:hover .list_item {\n  background-color: #ddd;\n}\n.list_item a {\n  text-decoration: none;\n}\n.list_item:hover {\n  background-color: #fafafa;\n}\n.list_header > div,\n.list_item > div {\n  padding-top: 4px;\n  padding-bottom: 4px;\n  padding-left: 7px;\n  padding-right: 7px;\n  line-height: 22px;\n}\n.list_header > div input,\n.list_item > div input {\n  margin-right: 7px;\n  margin-left: 14px;\n  vertical-align: text-bottom;\n  line-height: 22px;\n  position: relative;\n  top: -1px;\n}\n.list_header > div .item_link,\n.list_item > div .item_link {\n  margin-left: -1px;\n  vertical-align: baseline;\n  line-height: 22px;\n}\n[dir=\"rtl\"] .list_item > div input {\n  margin-right: 0;\n}\n.new-file input[type=checkbox] {\n  visibility: hidden;\n}\n.item_name {\n  line-height: 22px;\n  height: 24px;\n}\n.item_icon {\n  font-size: 14px;\n  color: #5e5e5e;\n  margin-right: 7px;\n  margin-left: 7px;\n  line-height: 22px;\n  vertical-align: baseline;\n}\n.item_modified {\n  margin-right: 7px;\n  margin-left: 7px;\n}\n[dir=\"rtl\"] .item_modified.pull-right {\n  float: left !important;\n  float: left;\n}\n.item_buttons {\n  line-height: 1em;\n  margin-left: -5px;\n}\n.item_buttons .btn,\n.item_buttons .btn-group,\n.item_buttons .input-group {\n  float: left;\n}\n.item_buttons > .btn,\n.item_buttons > .btn-group,\n.item_buttons > .input-group {\n  margin-left: 5px;\n}\n.item_buttons .btn {\n  min-width: 13ex;\n}\n.item_buttons .running-indicator {\n  padding-top: 4px;\n  color: #5cb85c;\n}\n.item_buttons .kernel-name {\n  padding-top: 4px;\n  color: #5bc0de;\n  margin-right: 7px;\n  float: left;\n}\n[dir=\"rtl\"] .item_buttons.pull-right {\n  float: left !important;\n  float: left;\n}\n[dir=\"rtl\"] .item_buttons .kernel-name {\n  margin-left: 7px;\n  float: right;\n}\n.toolbar_info {\n  height: 24px;\n  line-height: 24px;\n}\n.list_item input:not([type=checkbox]) {\n  padding-top: 3px;\n  padding-bottom: 3px;\n  height: 22px;\n  line-height: 14px;\n  margin: 0px;\n}\n.highlight_text {\n  color: blue;\n}\n#project_name {\n  display: inline-block;\n  padding-left: 7px;\n  margin-left: -2px;\n}\n#project_name > .breadcrumb {\n  padding: 0px;\n  margin-bottom: 0px;\n  background-color: transparent;\n  font-weight: bold;\n}\n.sort_button {\n  display: inline-block;\n  padding-left: 7px;\n}\n[dir=\"rtl\"] .sort_button.pull-right {\n  float: left !important;\n  float: left;\n}\n#tree-selector {\n  padding-right: 0px;\n}\n#button-select-all {\n  min-width: 50px;\n}\n[dir=\"rtl\"] #button-select-all.btn {\n  float: right ;\n}\n#select-all {\n  margin-left: 7px;\n  margin-right: 2px;\n  margin-top: 2px;\n  height: 16px;\n}\n[dir=\"rtl\"] #select-all.pull-left {\n  float: right !important;\n  float: right;\n}\n.menu_icon {\n  margin-right: 2px;\n}\n.tab-content .row {\n  margin-left: 0px;\n  margin-right: 0px;\n}\n.folder_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f114\";\n}\n.folder_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.folder_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.folder_icon:before.pull-left {\n  margin-right: .3em;\n}\n.folder_icon:before.pull-right {\n  margin-left: .3em;\n}\n.notebook_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f02d\";\n  position: relative;\n  top: -1px;\n}\n.notebook_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.notebook_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.notebook_icon:before.pull-left {\n  margin-right: .3em;\n}\n.notebook_icon:before.pull-right {\n  margin-left: .3em;\n}\n.running_notebook_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f02d\";\n  position: relative;\n  top: -1px;\n  color: #5cb85c;\n}\n.running_notebook_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.running_notebook_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.running_notebook_icon:before.pull-left {\n  margin-right: .3em;\n}\n.running_notebook_icon:before.pull-right {\n  margin-left: .3em;\n}\n.file_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f016\";\n  position: relative;\n  top: -2px;\n}\n.file_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.file_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.file_icon:before.pull-left {\n  margin-right: .3em;\n}\n.file_icon:before.pull-right {\n  margin-left: .3em;\n}\n#notebook_toolbar .pull-right {\n  padding-top: 0px;\n  margin-right: -1px;\n}\nul#new-menu {\n  left: auto;\n  right: 0;\n}\n#new-menu .dropdown-header {\n  font-size: 10px;\n  border-bottom: 1px solid #e5e5e5;\n  padding: 0 0 3px;\n  margin: -3px 20px 0;\n}\n.kernel-menu-icon {\n  padding-right: 12px;\n  width: 24px;\n  content: \"\\f096\";\n}\n.kernel-menu-icon:before {\n  content: \"\\f096\";\n}\n.kernel-menu-icon-current:before {\n  content: \"\\f00c\";\n}\n#tab_content {\n  padding-top: 20px;\n}\n#running .panel-group .panel {\n  margin-top: 3px;\n  margin-bottom: 1em;\n}\n#running .panel-group .panel .panel-heading {\n  background-color: #EEE;\n  padding-top: 4px;\n  padding-bottom: 4px;\n  padding-left: 7px;\n  padding-right: 7px;\n  line-height: 22px;\n}\n#running .panel-group .panel .panel-heading a:focus,\n#running .panel-group .panel .panel-heading a:hover {\n  text-decoration: none;\n}\n#running .panel-group .panel .panel-body {\n  padding: 0px;\n}\n#running .panel-group .panel .panel-body .list_container {\n  margin-top: 0px;\n  margin-bottom: 0px;\n  border: 0px;\n  border-radius: 0px;\n}\n#running .panel-group .panel .panel-body .list_container .list_item {\n  border-bottom: 1px solid #ddd;\n}\n#running .panel-group .panel .panel-body .list_container .list_item:last-child {\n  border-bottom: 0px;\n}\n.delete-button {\n  display: none;\n}\n.duplicate-button {\n  display: none;\n}\n.rename-button {\n  display: none;\n}\n.move-button {\n  display: none;\n}\n.download-button {\n  display: none;\n}\n.shutdown-button {\n  display: none;\n}\n.dynamic-instructions {\n  display: inline-block;\n  padding-top: 4px;\n}\n/*!\n*\n* IPython text editor webapp\n*\n*/\n.selected-keymap i.fa {\n  padding: 0px 5px;\n}\n.selected-keymap i.fa:before {\n  content: \"\\f00c\";\n}\n#mode-menu {\n  overflow: auto;\n  max-height: 20em;\n}\n.edit_app #header {\n  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n}\n.edit_app #menubar .navbar {\n  /* Use a negative 1 bottom margin, so the border overlaps the border of the\n    header */\n  margin-bottom: -1px;\n}\n.dirty-indicator {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  width: 20px;\n}\n.dirty-indicator.fa-pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator.fa-pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator.pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator.pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-dirty {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  width: 20px;\n}\n.dirty-indicator-dirty.fa-pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-dirty.fa-pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-dirty.pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-dirty.pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-clean {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  width: 20px;\n}\n.dirty-indicator-clean.fa-pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-clean.fa-pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-clean.pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-clean.pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-clean:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f00c\";\n}\n.dirty-indicator-clean:before.fa-pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-clean:before.fa-pull-right {\n  margin-left: .3em;\n}\n.dirty-indicator-clean:before.pull-left {\n  margin-right: .3em;\n}\n.dirty-indicator-clean:before.pull-right {\n  margin-left: .3em;\n}\n#filename {\n  font-size: 16pt;\n  display: table;\n  padding: 0px 5px;\n}\n#current-mode {\n  padding-left: 5px;\n  padding-right: 5px;\n}\n#texteditor-backdrop {\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n@media not print {\n  #texteditor-backdrop {\n    background-color: #EEE;\n  }\n}\n@media print {\n  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,\n  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {\n    background-color: #fff;\n  }\n}\n@media not print {\n  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,\n  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {\n    background-color: #fff;\n  }\n}\n@media not print {\n  #texteditor-backdrop #texteditor-container {\n    padding: 0px;\n    background-color: #fff;\n    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  }\n}\n.CodeMirror-dialog {\n  background-color: #fff;\n}\n/*!\n*\n* IPython notebook\n*\n*/\n/* CSS font colors for translated ANSI escape sequences */\n/* The color values are a mix of\n   http://www.xcolors.net/dl/baskerville-ivorylight and\n   http://www.xcolors.net/dl/euphrasia */\n.ansi-black-fg {\n  color: #3E424D;\n}\n.ansi-black-bg {\n  background-color: #3E424D;\n}\n.ansi-black-intense-fg {\n  color: #282C36;\n}\n.ansi-black-intense-bg {\n  background-color: #282C36;\n}\n.ansi-red-fg {\n  color: #E75C58;\n}\n.ansi-red-bg {\n  background-color: #E75C58;\n}\n.ansi-red-intense-fg {\n  color: #B22B31;\n}\n.ansi-red-intense-bg {\n  background-color: #B22B31;\n}\n.ansi-green-fg {\n  color: #00A250;\n}\n.ansi-green-bg {\n  background-color: #00A250;\n}\n.ansi-green-intense-fg {\n  color: #007427;\n}\n.ansi-green-intense-bg {\n  background-color: #007427;\n}\n.ansi-yellow-fg {\n  color: #DDB62B;\n}\n.ansi-yellow-bg {\n  background-color: #DDB62B;\n}\n.ansi-yellow-intense-fg {\n  color: #B27D12;\n}\n.ansi-yellow-intense-bg {\n  background-color: #B27D12;\n}\n.ansi-blue-fg {\n  color: #208FFB;\n}\n.ansi-blue-bg {\n  background-color: #208FFB;\n}\n.ansi-blue-intense-fg {\n  color: #0065CA;\n}\n.ansi-blue-intense-bg {\n  background-color: #0065CA;\n}\n.ansi-magenta-fg {\n  color: #D160C4;\n}\n.ansi-magenta-bg {\n  background-color: #D160C4;\n}\n.ansi-magenta-intense-fg {\n  color: #A03196;\n}\n.ansi-magenta-intense-bg {\n  background-color: #A03196;\n}\n.ansi-cyan-fg {\n  color: #60C6C8;\n}\n.ansi-cyan-bg {\n  background-color: #60C6C8;\n}\n.ansi-cyan-intense-fg {\n  color: #258F8F;\n}\n.ansi-cyan-intense-bg {\n  background-color: #258F8F;\n}\n.ansi-white-fg {\n  color: #C5C1B4;\n}\n.ansi-white-bg {\n  background-color: #C5C1B4;\n}\n.ansi-white-intense-fg {\n  color: #A1A6B2;\n}\n.ansi-white-intense-bg {\n  background-color: #A1A6B2;\n}\n.ansi-default-inverse-fg {\n  color: #FFFFFF;\n}\n.ansi-default-inverse-bg {\n  background-color: #000000;\n}\n.ansi-bold {\n  font-weight: bold;\n}\n.ansi-underline {\n  text-decoration: underline;\n}\n/* The following styles are deprecated an will be removed in a future version */\n.ansibold {\n  font-weight: bold;\n}\n.ansi-inverse {\n  outline: 0.5px dotted;\n}\n/* use dark versions for foreground, to improve visibility */\n.ansiblack {\n  color: black;\n}\n.ansired {\n  color: darkred;\n}\n.ansigreen {\n  color: darkgreen;\n}\n.ansiyellow {\n  color: #c4a000;\n}\n.ansiblue {\n  color: darkblue;\n}\n.ansipurple {\n  color: darkviolet;\n}\n.ansicyan {\n  color: steelblue;\n}\n.ansigray {\n  color: gray;\n}\n/* and light for background, for the same reason */\n.ansibgblack {\n  background-color: black;\n}\n.ansibgred {\n  background-color: red;\n}\n.ansibggreen {\n  background-color: green;\n}\n.ansibgyellow {\n  background-color: yellow;\n}\n.ansibgblue {\n  background-color: blue;\n}\n.ansibgpurple {\n  background-color: magenta;\n}\n.ansibgcyan {\n  background-color: cyan;\n}\n.ansibggray {\n  background-color: gray;\n}\ndiv.cell {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  border-radius: 2px;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  border-width: 1px;\n  border-style: solid;\n  border-color: transparent;\n  width: 100%;\n  padding: 5px;\n  /* This acts as a spacer between cells, that is outside the border */\n  margin: 0px;\n  outline: none;\n  position: relative;\n  overflow: visible;\n}\ndiv.cell:before {\n  position: absolute;\n  display: block;\n  top: -1px;\n  left: -1px;\n  width: 5px;\n  height: calc(100% +  2px);\n  content: '';\n  background: transparent;\n}\ndiv.cell.jupyter-soft-selected {\n  border-left-color: #E3F2FD;\n  border-left-width: 1px;\n  padding-left: 5px;\n  border-right-color: #E3F2FD;\n  border-right-width: 1px;\n  background: #E3F2FD;\n}\n@media print {\n  div.cell.jupyter-soft-selected {\n    border-color: transparent;\n  }\n}\ndiv.cell.selected,\ndiv.cell.selected.jupyter-soft-selected {\n  border-color: #ababab;\n}\ndiv.cell.selected:before,\ndiv.cell.selected.jupyter-soft-selected:before {\n  position: absolute;\n  display: block;\n  top: -1px;\n  left: -1px;\n  width: 5px;\n  height: calc(100% +  2px);\n  content: '';\n  background: #42A5F5;\n}\n@media print {\n  div.cell.selected,\n  div.cell.selected.jupyter-soft-selected {\n    border-color: transparent;\n  }\n}\n.edit_mode div.cell.selected {\n  border-color: #66BB6A;\n}\n.edit_mode div.cell.selected:before {\n  position: absolute;\n  display: block;\n  top: -1px;\n  left: -1px;\n  width: 5px;\n  height: calc(100% +  2px);\n  content: '';\n  background: #66BB6A;\n}\n@media print {\n  .edit_mode div.cell.selected {\n    border-color: transparent;\n  }\n}\n.prompt {\n  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */\n  min-width: 14ex;\n  /* This padding is tuned to match the padding on the CodeMirror editor. */\n  padding: 0.4em;\n  margin: 0px;\n  font-family: monospace;\n  text-align: right;\n  /* This has to match that of the the CodeMirror class line-height below */\n  line-height: 1.21429em;\n  /* Don't highlight prompt number selection */\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  /* Use default cursor */\n  cursor: default;\n}\n@media (max-width: 540px) {\n  .prompt {\n    text-align: left;\n  }\n}\ndiv.inner_cell {\n  min-width: 0;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  /* Old browsers */\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  box-flex: 1;\n  /* Modern browsers */\n  flex: 1;\n}\n/* input_area and input_prompt must match in top border and margin for alignment */\ndiv.input_area {\n  border: 1px solid #cfcfcf;\n  border-radius: 2px;\n  background: #f7f7f7;\n  line-height: 1.21429em;\n}\n/* This is needed so that empty prompt areas can collapse to zero height when there\n   is no content in the output_subarea and the prompt. The main purpose of this is\n   to make sure that empty JavaScript output_subareas have no height. */\ndiv.prompt:empty {\n  padding-top: 0;\n  padding-bottom: 0;\n}\ndiv.unrecognized_cell {\n  padding: 5px 5px 5px 0px;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n}\ndiv.unrecognized_cell .inner_cell {\n  border-radius: 2px;\n  padding: 5px;\n  font-weight: bold;\n  color: red;\n  border: 1px solid #cfcfcf;\n  background: #eaeaea;\n}\ndiv.unrecognized_cell .inner_cell a {\n  color: inherit;\n  text-decoration: none;\n}\ndiv.unrecognized_cell .inner_cell a:hover {\n  color: inherit;\n  text-decoration: none;\n}\n@media (max-width: 540px) {\n  div.unrecognized_cell > div.prompt {\n    display: none;\n  }\n}\ndiv.code_cell {\n  /* avoid page breaking on code cells when printing */\n}\n@media print {\n  div.code_cell {\n    page-break-inside: avoid;\n  }\n}\n/* any special styling for code cells that are currently running goes here */\ndiv.input {\n  page-break-inside: avoid;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n}\n@media (max-width: 540px) {\n  div.input {\n    /* Old browsers */\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-align: stretch;\n    display: -moz-box;\n    -moz-box-orient: vertical;\n    -moz-box-align: stretch;\n    display: box;\n    box-orient: vertical;\n    box-align: stretch;\n    /* Modern browsers */\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n/* input_area and input_prompt must match in top border and margin for alignment */\ndiv.input_prompt {\n  color: #303F9F;\n  border-top: 1px solid transparent;\n}\ndiv.input_area > div.highlight {\n  margin: 0.4em;\n  border: none;\n  padding: 0px;\n  background-color: transparent;\n}\ndiv.input_area > div.highlight > pre {\n  margin: 0px;\n  border: none;\n  padding: 0px;\n  background-color: transparent;\n}\n/* The following gets added to the <head> if it is detected that the user has a\n * monospace font with inconsistent normal/bold/italic height.  See\n * notebookmain.js.  Such fonts will have keywords vertically offset with\n * respect to the rest of the text.  The user should select a better font.\n * See: https://github.com/ipython/ipython/issues/1503\n *\n * .CodeMirror span {\n *      vertical-align: bottom;\n * }\n */\n.CodeMirror {\n  line-height: 1.21429em;\n  /* Changed from 1em to our global default */\n  font-size: 14px;\n  height: auto;\n  /* Changed to auto to autogrow */\n  background: none;\n  /* Changed from white to allow our bg to show through */\n}\n.CodeMirror-scroll {\n  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/\n  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/\n  overflow-y: hidden;\n  overflow-x: auto;\n}\n.CodeMirror-lines {\n  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */\n  /* we have set a different line-height and want this to scale with that. */\n  /* Note that this should set vertical padding only, since CodeMirror assumes\n       that horizontal padding will be set on CodeMirror pre */\n  padding: 0.4em 0;\n}\n.CodeMirror-linenumber {\n  padding: 0 8px 0 4px;\n}\n.CodeMirror-gutters {\n  border-bottom-left-radius: 2px;\n  border-top-left-radius: 2px;\n}\n.CodeMirror pre {\n  /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,\n    use .CodeMirror-lines for vertical */\n  padding: 0 0.4em;\n  border: 0;\n  border-radius: 0;\n}\n.CodeMirror-cursor {\n  border-left: 1.4px solid black;\n}\n@media screen and (min-width: 2138px) and (max-width: 4319px) {\n  .CodeMirror-cursor {\n    border-left: 2px solid black;\n  }\n}\n@media screen and (min-width: 4320px) {\n  .CodeMirror-cursor {\n    border-left: 4px solid black;\n  }\n}\n/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\nAdapted from GitHub theme\n\n*/\n.highlight-base {\n  color: #000;\n}\n.highlight-variable {\n  color: #000;\n}\n.highlight-variable-2 {\n  color: #1a1a1a;\n}\n.highlight-variable-3 {\n  color: #333333;\n}\n.highlight-string {\n  color: #BA2121;\n}\n.highlight-comment {\n  color: #408080;\n  font-style: italic;\n}\n.highlight-number {\n  color: #080;\n}\n.highlight-atom {\n  color: #88F;\n}\n.highlight-keyword {\n  color: #008000;\n  font-weight: bold;\n}\n.highlight-builtin {\n  color: #008000;\n}\n.highlight-error {\n  color: #f00;\n}\n.highlight-operator {\n  color: #AA22FF;\n  font-weight: bold;\n}\n.highlight-meta {\n  color: #AA22FF;\n}\n/* previously not defined, copying from default codemirror */\n.highlight-def {\n  color: #00f;\n}\n.highlight-string-2 {\n  color: #f50;\n}\n.highlight-qualifier {\n  color: #555;\n}\n.highlight-bracket {\n  color: #997;\n}\n.highlight-tag {\n  color: #170;\n}\n.highlight-attribute {\n  color: #00c;\n}\n.highlight-header {\n  color: blue;\n}\n.highlight-quote {\n  color: #090;\n}\n.highlight-link {\n  color: #00c;\n}\n/* apply the same style to codemirror */\n.cm-s-ipython span.cm-keyword {\n  color: #008000;\n  font-weight: bold;\n}\n.cm-s-ipython span.cm-atom {\n  color: #88F;\n}\n.cm-s-ipython span.cm-number {\n  color: #080;\n}\n.cm-s-ipython span.cm-def {\n  color: #00f;\n}\n.cm-s-ipython span.cm-variable {\n  color: #000;\n}\n.cm-s-ipython span.cm-operator {\n  color: #AA22FF;\n  font-weight: bold;\n}\n.cm-s-ipython span.cm-variable-2 {\n  color: #1a1a1a;\n}\n.cm-s-ipython span.cm-variable-3 {\n  color: #333333;\n}\n.cm-s-ipython span.cm-comment {\n  color: #408080;\n  font-style: italic;\n}\n.cm-s-ipython span.cm-string {\n  color: #BA2121;\n}\n.cm-s-ipython span.cm-string-2 {\n  color: #f50;\n}\n.cm-s-ipython span.cm-meta {\n  color: #AA22FF;\n}\n.cm-s-ipython span.cm-qualifier {\n  color: #555;\n}\n.cm-s-ipython span.cm-builtin {\n  color: #008000;\n}\n.cm-s-ipython span.cm-bracket {\n  color: #997;\n}\n.cm-s-ipython span.cm-tag {\n  color: #170;\n}\n.cm-s-ipython span.cm-attribute {\n  color: #00c;\n}\n.cm-s-ipython span.cm-header {\n  color: blue;\n}\n.cm-s-ipython span.cm-quote {\n  color: #090;\n}\n.cm-s-ipython span.cm-link {\n  color: #00c;\n}\n.cm-s-ipython span.cm-error {\n  color: #f00;\n}\n.cm-s-ipython span.cm-tab {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);\n  background-position: right;\n  background-repeat: no-repeat;\n}\ndiv.output_wrapper {\n  /* this position must be relative to enable descendents to be absolute within it */\n  position: relative;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  z-index: 1;\n}\n/* class for the output area when it should be height-limited */\ndiv.output_scroll {\n  /* ideally, this would be max-height, but FF barfs all over that */\n  height: 24em;\n  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */\n  width: 100%;\n  overflow: auto;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);\n  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);\n  display: block;\n}\n/* output div while it is collapsed */\ndiv.output_collapsed {\n  margin: 0px;\n  padding: 0px;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\ndiv.out_prompt_overlay {\n  height: 100%;\n  padding: 0px 0.4em;\n  position: absolute;\n  border-radius: 2px;\n}\ndiv.out_prompt_overlay:hover {\n  /* use inner shadow to get border that is computed the same on WebKit/FF */\n  -webkit-box-shadow: inset 0 0 1px #000;\n  box-shadow: inset 0 0 1px #000;\n  background: rgba(240, 240, 240, 0.5);\n}\ndiv.output_prompt {\n  color: #D84315;\n}\n/* This class is the outer container of all output sections. */\ndiv.output_area {\n  padding: 0px;\n  page-break-inside: avoid;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n}\ndiv.output_area .MathJax_Display {\n  text-align: left !important;\n}\ndiv.output_area .rendered_html table {\n  margin-left: 0;\n  margin-right: 0;\n}\ndiv.output_area .rendered_html img {\n  margin-left: 0;\n  margin-right: 0;\n}\ndiv.output_area img,\ndiv.output_area svg {\n  max-width: 100%;\n  height: auto;\n}\ndiv.output_area img.unconfined,\ndiv.output_area svg.unconfined {\n  max-width: none;\n}\ndiv.output_area .mglyph > img {\n  max-width: none;\n}\n/* This is needed to protect the pre formating from global settings such\n   as that of bootstrap */\n.output {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: vertical;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: vertical;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n@media (max-width: 540px) {\n  div.output_area {\n    /* Old browsers */\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-align: stretch;\n    display: -moz-box;\n    -moz-box-orient: vertical;\n    -moz-box-align: stretch;\n    display: box;\n    box-orient: vertical;\n    box-align: stretch;\n    /* Modern browsers */\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\ndiv.output_area pre {\n  margin: 0;\n  padding: 1px 0 1px 0;\n  border: 0;\n  vertical-align: baseline;\n  color: black;\n  background-color: transparent;\n  border-radius: 0;\n}\n/* This class is for the output subarea inside the output_area and after\n   the prompt div. */\ndiv.output_subarea {\n  overflow-x: auto;\n  padding: 0.4em;\n  /* Old browsers */\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  box-flex: 1;\n  /* Modern browsers */\n  flex: 1;\n  max-width: calc(100% - 14ex);\n}\ndiv.output_scroll div.output_subarea {\n  overflow-x: visible;\n}\n/* The rest of the output_* classes are for special styling of the different\n   output types */\n/* all text output has this class: */\ndiv.output_text {\n  text-align: left;\n  color: #000;\n  /* This has to match that of the the CodeMirror class line-height below */\n  line-height: 1.21429em;\n}\n/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */\ndiv.output_stderr {\n  background: #fdd;\n  /* very light red background for stderr */\n}\ndiv.output_latex {\n  text-align: left;\n}\n/* Empty output_javascript divs should have no height */\ndiv.output_javascript:empty {\n  padding: 0;\n}\n.js-error {\n  color: darkred;\n}\n/* raw_input styles */\ndiv.raw_input_container {\n  line-height: 1.21429em;\n  padding-top: 5px;\n}\npre.raw_input_prompt {\n  /* nothing needed here. */\n}\ninput.raw_input {\n  font-family: monospace;\n  font-size: inherit;\n  color: inherit;\n  width: auto;\n  /* make sure input baseline aligns with prompt */\n  vertical-align: baseline;\n  /* padding + margin = 0.5em between prompt and cursor */\n  padding: 0em 0.25em;\n  margin: 0em 0.25em;\n}\ninput.raw_input:focus {\n  box-shadow: none;\n}\np.p-space {\n  margin-bottom: 10px;\n}\ndiv.output_unrecognized {\n  padding: 5px;\n  font-weight: bold;\n  color: red;\n}\ndiv.output_unrecognized a {\n  color: inherit;\n  text-decoration: none;\n}\ndiv.output_unrecognized a:hover {\n  color: inherit;\n  text-decoration: none;\n}\n.rendered_html {\n  color: #000;\n  /* any extras will just be numbers: */\n}\n.rendered_html em {\n  font-style: italic;\n}\n.rendered_html strong {\n  font-weight: bold;\n}\n.rendered_html u {\n  text-decoration: underline;\n}\n.rendered_html :link {\n  text-decoration: underline;\n}\n.rendered_html :visited {\n  text-decoration: underline;\n}\n.rendered_html h1 {\n  font-size: 185.7%;\n  margin: 1.08em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n}\n.rendered_html h2 {\n  font-size: 157.1%;\n  margin: 1.27em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n}\n.rendered_html h3 {\n  font-size: 128.6%;\n  margin: 1.55em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n}\n.rendered_html h4 {\n  font-size: 100%;\n  margin: 2em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n}\n.rendered_html h5 {\n  font-size: 100%;\n  margin: 2em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n  font-style: italic;\n}\n.rendered_html h6 {\n  font-size: 100%;\n  margin: 2em 0 0 0;\n  font-weight: bold;\n  line-height: 1.0;\n  font-style: italic;\n}\n.rendered_html h1:first-child {\n  margin-top: 0.538em;\n}\n.rendered_html h2:first-child {\n  margin-top: 0.636em;\n}\n.rendered_html h3:first-child {\n  margin-top: 0.777em;\n}\n.rendered_html h4:first-child {\n  margin-top: 1em;\n}\n.rendered_html h5:first-child {\n  margin-top: 1em;\n}\n.rendered_html h6:first-child {\n  margin-top: 1em;\n}\n.rendered_html ul:not(.list-inline),\n.rendered_html ol:not(.list-inline) {\n  padding-left: 2em;\n}\n.rendered_html ul {\n  list-style: disc;\n}\n.rendered_html ul ul {\n  list-style: square;\n  margin-top: 0;\n}\n.rendered_html ul ul ul {\n  list-style: circle;\n}\n.rendered_html ol {\n  list-style: decimal;\n}\n.rendered_html ol ol {\n  list-style: upper-alpha;\n  margin-top: 0;\n}\n.rendered_html ol ol ol {\n  list-style: lower-alpha;\n}\n.rendered_html ol ol ol ol {\n  list-style: lower-roman;\n}\n.rendered_html ol ol ol ol ol {\n  list-style: decimal;\n}\n.rendered_html * + ul {\n  margin-top: 1em;\n}\n.rendered_html * + ol {\n  margin-top: 1em;\n}\n.rendered_html hr {\n  color: black;\n  background-color: black;\n}\n.rendered_html pre {\n  margin: 1em 2em;\n  padding: 0px;\n  background-color: #fff;\n}\n.rendered_html code {\n  background-color: #eff0f1;\n}\n.rendered_html p code {\n  padding: 1px 5px;\n}\n.rendered_html pre code {\n  background-color: #fff;\n}\n.rendered_html pre,\n.rendered_html code {\n  border: 0;\n  color: #000;\n  font-size: 100%;\n}\n.rendered_html blockquote {\n  margin: 1em 2em;\n}\n.rendered_html table {\n  margin-left: auto;\n  margin-right: auto;\n  border: none;\n  border-collapse: collapse;\n  border-spacing: 0;\n  color: black;\n  font-size: 12px;\n  table-layout: fixed;\n}\n.rendered_html thead {\n  border-bottom: 1px solid black;\n  vertical-align: bottom;\n}\n.rendered_html tr,\n.rendered_html th,\n.rendered_html td {\n  text-align: right;\n  vertical-align: middle;\n  padding: 0.5em 0.5em;\n  line-height: normal;\n  white-space: normal;\n  max-width: none;\n  border: none;\n}\n.rendered_html th {\n  font-weight: bold;\n}\n.rendered_html tbody tr:nth-child(odd) {\n  background: #f5f5f5;\n}\n.rendered_html tbody tr:hover {\n  background: rgba(66, 165, 245, 0.2);\n}\n.rendered_html * + table {\n  margin-top: 1em;\n}\n.rendered_html p {\n  text-align: left;\n}\n.rendered_html * + p {\n  margin-top: 1em;\n}\n.rendered_html img {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.rendered_html * + img {\n  margin-top: 1em;\n}\n.rendered_html img,\n.rendered_html svg {\n  max-width: 100%;\n  height: auto;\n}\n.rendered_html img.unconfined,\n.rendered_html svg.unconfined {\n  max-width: none;\n}\n.rendered_html .alert {\n  margin-bottom: initial;\n}\n.rendered_html * + .alert {\n  margin-top: 1em;\n}\n[dir=\"rtl\"] .rendered_html p {\n  text-align: right;\n}\ndiv.text_cell {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n}\n@media (max-width: 540px) {\n  div.text_cell > div.prompt {\n    display: none;\n  }\n}\ndiv.text_cell_render {\n  /*font-family: \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;*/\n  outline: none;\n  resize: none;\n  width: inherit;\n  border-style: none;\n  padding: 0.5em 0.5em 0.5em 0.4em;\n  color: #000;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n}\na.anchor-link:link {\n  text-decoration: none;\n  padding: 0px 20px;\n  visibility: hidden;\n}\nh1:hover .anchor-link,\nh2:hover .anchor-link,\nh3:hover .anchor-link,\nh4:hover .anchor-link,\nh5:hover .anchor-link,\nh6:hover .anchor-link {\n  visibility: visible;\n}\n.text_cell.rendered .input_area {\n  display: none;\n}\n.text_cell.rendered .rendered_html {\n  overflow-x: auto;\n  overflow-y: hidden;\n}\n.text_cell.rendered .rendered_html tr,\n.text_cell.rendered .rendered_html th,\n.text_cell.rendered .rendered_html td {\n  max-width: none;\n}\n.text_cell.unrendered .text_cell_render {\n  display: none;\n}\n.text_cell .dropzone .input_area {\n  border: 2px dashed #bababa;\n  margin: -1px;\n}\n.cm-header-1,\n.cm-header-2,\n.cm-header-3,\n.cm-header-4,\n.cm-header-5,\n.cm-header-6 {\n  font-weight: bold;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.cm-header-1 {\n  font-size: 185.7%;\n}\n.cm-header-2 {\n  font-size: 157.1%;\n}\n.cm-header-3 {\n  font-size: 128.6%;\n}\n.cm-header-4 {\n  font-size: 110%;\n}\n.cm-header-5 {\n  font-size: 100%;\n  font-style: italic;\n}\n.cm-header-6 {\n  font-size: 100%;\n  font-style: italic;\n}\n/*!\n*\n* IPython notebook webapp\n*\n*/\n@media (max-width: 767px) {\n  .notebook_app {\n    padding-left: 0px;\n    padding-right: 0px;\n  }\n}\n#ipython-main-app {\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  height: 100%;\n}\ndiv#notebook_panel {\n  margin: 0px;\n  padding: 0px;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  height: 100%;\n}\ndiv#notebook {\n  font-size: 14px;\n  line-height: 20px;\n  overflow-y: hidden;\n  overflow-x: auto;\n  width: 100%;\n  /* This spaces the page away from the edge of the notebook area */\n  padding-top: 20px;\n  margin: 0px;\n  outline: none;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  min-height: 100%;\n}\n@media not print {\n  #notebook-container {\n    padding: 15px;\n    background-color: #fff;\n    min-height: 0;\n    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  }\n}\n@media print {\n  #notebook-container {\n    width: 100%;\n  }\n}\ndiv.ui-widget-content {\n  border: 1px solid #ababab;\n  outline: none;\n}\npre.dialog {\n  background-color: #f7f7f7;\n  border: 1px solid #ddd;\n  border-radius: 2px;\n  padding: 0.4em;\n  padding-left: 2em;\n}\np.dialog {\n  padding: 0.2em;\n}\n/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems\n   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.\n */\npre,\ncode,\nkbd,\nsamp {\n  white-space: pre-wrap;\n}\n#fonttest {\n  font-family: monospace;\n}\np {\n  margin-bottom: 0;\n}\n.end_space {\n  min-height: 100px;\n  transition: height .2s ease;\n}\n.notebook_app > #header {\n  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n}\n@media not print {\n  .notebook_app {\n    background-color: #EEE;\n  }\n}\nkbd {\n  border-style: solid;\n  border-width: 1px;\n  box-shadow: none;\n  margin: 2px;\n  padding-left: 2px;\n  padding-right: 2px;\n  padding-top: 1px;\n  padding-bottom: 1px;\n}\n.jupyter-keybindings {\n  padding: 1px;\n  line-height: 24px;\n  border-bottom: 1px solid gray;\n}\n.jupyter-keybindings input {\n  margin: 0;\n  padding: 0;\n  border: none;\n}\n.jupyter-keybindings i {\n  padding: 6px;\n}\n.well code {\n  background-color: #ffffff;\n  border-color: #ababab;\n  border-width: 1px;\n  border-style: solid;\n  padding: 2px;\n  padding-top: 1px;\n  padding-bottom: 1px;\n}\n/* CSS for the cell toolbar */\n.celltoolbar {\n  border: thin solid #CFCFCF;\n  border-bottom: none;\n  background: #EEE;\n  border-radius: 2px 2px 0px 0px;\n  width: 100%;\n  height: 29px;\n  padding-right: 4px;\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  /* Old browsers */\n  -webkit-box-pack: end;\n  -moz-box-pack: end;\n  box-pack: end;\n  /* Modern browsers */\n  justify-content: flex-end;\n  display: -webkit-flex;\n}\n@media print {\n  .celltoolbar {\n    display: none;\n  }\n}\n.ctb_hideshow {\n  display: none;\n  vertical-align: bottom;\n}\n/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.\n   Cell toolbars are only shown when the ctb_global_show class is also set.\n*/\n.ctb_global_show .ctb_show.ctb_hideshow {\n  display: block;\n}\n.ctb_global_show .ctb_show + .input_area,\n.ctb_global_show .ctb_show + div.text_cell_input,\n.ctb_global_show .ctb_show ~ div.text_cell_render {\n  border-top-right-radius: 0px;\n  border-top-left-radius: 0px;\n}\n.ctb_global_show .ctb_show ~ div.text_cell_render {\n  border: 1px solid #cfcfcf;\n}\n.celltoolbar {\n  font-size: 87%;\n  padding-top: 3px;\n}\n.celltoolbar select {\n  display: block;\n  width: 100%;\n  height: 32px;\n  padding: 6px 12px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n  width: inherit;\n  font-size: inherit;\n  height: 22px;\n  padding: 0px;\n  display: inline-block;\n}\n.celltoolbar select:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.celltoolbar select::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.celltoolbar select:-ms-input-placeholder {\n  color: #999;\n}\n.celltoolbar select::-webkit-input-placeholder {\n  color: #999;\n}\n.celltoolbar select::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.celltoolbar select[disabled],\n.celltoolbar select[readonly],\nfieldset[disabled] .celltoolbar select {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.celltoolbar select[disabled],\nfieldset[disabled] .celltoolbar select {\n  cursor: not-allowed;\n}\ntextarea.celltoolbar select {\n  height: auto;\n}\nselect.celltoolbar select {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.celltoolbar select,\nselect[multiple].celltoolbar select {\n  height: auto;\n}\n.celltoolbar label {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n.tags_button_container {\n  width: 100%;\n  display: flex;\n}\n.tag-container {\n  display: flex;\n  flex-direction: row;\n  flex-grow: 1;\n  overflow: hidden;\n  position: relative;\n}\n.tag-container > * {\n  margin: 0 4px;\n}\n.remove-tag-btn {\n  margin-left: 4px;\n}\n.tags-input {\n  display: flex;\n}\n.cell-tag:last-child:after {\n  content: \"\";\n  position: absolute;\n  right: 0;\n  width: 40px;\n  height: 100%;\n  /* Fade to background color of cell toolbar */\n  background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE);\n}\n.tags-input > * {\n  margin-left: 4px;\n}\n.cell-tag,\n.tags-input input,\n.tags-input button {\n  display: block;\n  width: 100%;\n  height: 32px;\n  padding: 6px 12px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 2px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 1px;\n  box-shadow: none;\n  width: inherit;\n  font-size: inherit;\n  height: 22px;\n  line-height: 22px;\n  padding: 0px 4px;\n  display: inline-block;\n}\n.cell-tag:focus,\n.tags-input input:focus,\n.tags-input button:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.cell-tag::-moz-placeholder,\n.tags-input input::-moz-placeholder,\n.tags-input button::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.cell-tag:-ms-input-placeholder,\n.tags-input input:-ms-input-placeholder,\n.tags-input button:-ms-input-placeholder {\n  color: #999;\n}\n.cell-tag::-webkit-input-placeholder,\n.tags-input input::-webkit-input-placeholder,\n.tags-input button::-webkit-input-placeholder {\n  color: #999;\n}\n.cell-tag::-ms-expand,\n.tags-input input::-ms-expand,\n.tags-input button::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.cell-tag[disabled],\n.tags-input input[disabled],\n.tags-input button[disabled],\n.cell-tag[readonly],\n.tags-input input[readonly],\n.tags-input button[readonly],\nfieldset[disabled] .cell-tag,\nfieldset[disabled] .tags-input input,\nfieldset[disabled] .tags-input button {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.cell-tag[disabled],\n.tags-input input[disabled],\n.tags-input button[disabled],\nfieldset[disabled] .cell-tag,\nfieldset[disabled] .tags-input input,\nfieldset[disabled] .tags-input button {\n  cursor: not-allowed;\n}\ntextarea.cell-tag,\ntextarea.tags-input input,\ntextarea.tags-input button {\n  height: auto;\n}\nselect.cell-tag,\nselect.tags-input input,\nselect.tags-input button {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.cell-tag,\ntextarea.tags-input input,\ntextarea.tags-input button,\nselect[multiple].cell-tag,\nselect[multiple].tags-input input,\nselect[multiple].tags-input button {\n  height: auto;\n}\n.cell-tag,\n.tags-input button {\n  padding: 0px 4px;\n}\n.cell-tag {\n  background-color: #fff;\n  white-space: nowrap;\n}\n.tags-input input[type=text]:focus {\n  outline: none;\n  box-shadow: none;\n  border-color: #ccc;\n}\n.completions {\n  position: absolute;\n  z-index: 110;\n  overflow: hidden;\n  border: 1px solid #ababab;\n  border-radius: 2px;\n  -webkit-box-shadow: 0px 6px 10px -1px #adadad;\n  box-shadow: 0px 6px 10px -1px #adadad;\n  line-height: 1;\n}\n.completions select {\n  background: white;\n  outline: none;\n  border: none;\n  padding: 0px;\n  margin: 0px;\n  overflow: auto;\n  font-family: monospace;\n  font-size: 110%;\n  color: #000;\n  width: auto;\n}\n.completions select option.context {\n  color: #286090;\n}\n#kernel_logo_widget .current_kernel_logo {\n  display: none;\n  margin-top: -1px;\n  margin-bottom: -1px;\n  width: 32px;\n  height: 32px;\n}\n[dir=\"rtl\"] #kernel_logo_widget {\n  float: left !important;\n  float: left;\n}\n.modal .modal-body .move-path {\n  display: flex;\n  flex-direction: row;\n  justify-content: space;\n  align-items: center;\n}\n.modal .modal-body .move-path .server-root {\n  padding-right: 20px;\n}\n.modal .modal-body .move-path .path-input {\n  flex: 1;\n}\n#menubar {\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  margin-top: 1px;\n}\n#menubar .navbar {\n  border-top: 1px;\n  border-radius: 0px 0px 2px 2px;\n  margin-bottom: 0px;\n}\n#menubar .navbar-toggle {\n  float: left;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  border: none;\n}\n#menubar .navbar-collapse {\n  clear: left;\n}\n[dir=\"rtl\"] #menubar .navbar-toggle {\n  float: right;\n}\n[dir=\"rtl\"] #menubar .navbar-collapse {\n  clear: right;\n}\n[dir=\"rtl\"] #menubar .navbar-nav {\n  float: right;\n}\n[dir=\"rtl\"] #menubar .nav {\n  padding-right: 0px;\n}\n[dir=\"rtl\"] #menubar .navbar-nav > li {\n  float: right;\n}\n[dir=\"rtl\"] #menubar .navbar-right {\n  float: left !important;\n}\n[dir=\"rtl\"] ul.dropdown-menu {\n  text-align: right;\n  left: auto;\n}\n[dir=\"rtl\"] ul#new-menu.dropdown-menu {\n  right: auto;\n  left: 0;\n}\n.nav-wrapper {\n  border-bottom: 1px solid #e7e7e7;\n}\ni.menu-icon {\n  padding-top: 4px;\n}\n[dir=\"rtl\"] i.menu-icon.pull-right {\n  float: left !important;\n  float: left;\n}\nul#help_menu li a {\n  overflow: hidden;\n  padding-right: 2.2em;\n}\nul#help_menu li a i {\n  margin-right: -1.2em;\n}\n[dir=\"rtl\"] ul#help_menu li a {\n  padding-left: 2.2em;\n}\n[dir=\"rtl\"] ul#help_menu li a i {\n  margin-right: 0;\n  margin-left: -1.2em;\n}\n[dir=\"rtl\"] ul#help_menu li a i.pull-right {\n  float: left !important;\n  float: left;\n}\n.dropdown-submenu {\n  position: relative;\n}\n.dropdown-submenu > .dropdown-menu {\n  top: 0;\n  left: 100%;\n  margin-top: -6px;\n  margin-left: -1px;\n}\n[dir=\"rtl\"] .dropdown-submenu > .dropdown-menu {\n  right: 100%;\n  margin-right: -1px;\n}\n.dropdown-submenu:hover > .dropdown-menu {\n  display: block;\n}\n.dropdown-submenu > a:after {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  display: block;\n  content: \"\\f0da\";\n  float: right;\n  color: #333333;\n  margin-top: 2px;\n  margin-right: -10px;\n}\n.dropdown-submenu > a:after.fa-pull-left {\n  margin-right: .3em;\n}\n.dropdown-submenu > a:after.fa-pull-right {\n  margin-left: .3em;\n}\n.dropdown-submenu > a:after.pull-left {\n  margin-right: .3em;\n}\n.dropdown-submenu > a:after.pull-right {\n  margin-left: .3em;\n}\n[dir=\"rtl\"] .dropdown-submenu > a:after {\n  float: left;\n  content: \"\\f0d9\";\n  margin-right: 0;\n  margin-left: -10px;\n}\n.dropdown-submenu:hover > a:after {\n  color: #262626;\n}\n.dropdown-submenu.pull-left {\n  float: none;\n}\n.dropdown-submenu.pull-left > .dropdown-menu {\n  left: -100%;\n  margin-left: 10px;\n}\n#notification_area {\n  float: right !important;\n  float: right;\n  z-index: 10;\n}\n[dir=\"rtl\"] #notification_area {\n  float: left !important;\n  float: left;\n}\n.indicator_area {\n  float: right !important;\n  float: right;\n  color: #777;\n  margin-left: 5px;\n  margin-right: 5px;\n  width: 11px;\n  z-index: 10;\n  text-align: center;\n  width: auto;\n}\n[dir=\"rtl\"] .indicator_area {\n  float: left !important;\n  float: left;\n}\n#kernel_indicator {\n  float: right !important;\n  float: right;\n  color: #777;\n  margin-left: 5px;\n  margin-right: 5px;\n  width: 11px;\n  z-index: 10;\n  text-align: center;\n  width: auto;\n  border-left: 1px solid;\n}\n#kernel_indicator .kernel_indicator_name {\n  padding-left: 5px;\n  padding-right: 5px;\n}\n[dir=\"rtl\"] #kernel_indicator {\n  float: left !important;\n  float: left;\n  border-left: 0;\n  border-right: 1px solid;\n}\n#modal_indicator {\n  float: right !important;\n  float: right;\n  color: #777;\n  margin-left: 5px;\n  margin-right: 5px;\n  width: 11px;\n  z-index: 10;\n  text-align: center;\n  width: auto;\n}\n[dir=\"rtl\"] #modal_indicator {\n  float: left !important;\n  float: left;\n}\n#readonly-indicator {\n  float: right !important;\n  float: right;\n  color: #777;\n  margin-left: 5px;\n  margin-right: 5px;\n  width: 11px;\n  z-index: 10;\n  text-align: center;\n  width: auto;\n  margin-top: 2px;\n  margin-bottom: 0px;\n  margin-left: 0px;\n  margin-right: 0px;\n  display: none;\n}\n.modal_indicator:before {\n  width: 1.28571429em;\n  text-align: center;\n}\n.edit_mode .modal_indicator:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f040\";\n}\n.edit_mode .modal_indicator:before.fa-pull-left {\n  margin-right: .3em;\n}\n.edit_mode .modal_indicator:before.fa-pull-right {\n  margin-left: .3em;\n}\n.edit_mode .modal_indicator:before.pull-left {\n  margin-right: .3em;\n}\n.edit_mode .modal_indicator:before.pull-right {\n  margin-left: .3em;\n}\n.command_mode .modal_indicator:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: ' ';\n}\n.command_mode .modal_indicator:before.fa-pull-left {\n  margin-right: .3em;\n}\n.command_mode .modal_indicator:before.fa-pull-right {\n  margin-left: .3em;\n}\n.command_mode .modal_indicator:before.pull-left {\n  margin-right: .3em;\n}\n.command_mode .modal_indicator:before.pull-right {\n  margin-left: .3em;\n}\n.kernel_idle_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f10c\";\n}\n.kernel_idle_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.kernel_idle_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.kernel_idle_icon:before.pull-left {\n  margin-right: .3em;\n}\n.kernel_idle_icon:before.pull-right {\n  margin-left: .3em;\n}\n.kernel_busy_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f111\";\n}\n.kernel_busy_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.kernel_busy_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.kernel_busy_icon:before.pull-left {\n  margin-right: .3em;\n}\n.kernel_busy_icon:before.pull-right {\n  margin-left: .3em;\n}\n.kernel_dead_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f1e2\";\n}\n.kernel_dead_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.kernel_dead_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.kernel_dead_icon:before.pull-left {\n  margin-right: .3em;\n}\n.kernel_dead_icon:before.pull-right {\n  margin-left: .3em;\n}\n.kernel_disconnected_icon:before {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  content: \"\\f127\";\n}\n.kernel_disconnected_icon:before.fa-pull-left {\n  margin-right: .3em;\n}\n.kernel_disconnected_icon:before.fa-pull-right {\n  margin-left: .3em;\n}\n.kernel_disconnected_icon:before.pull-left {\n  margin-right: .3em;\n}\n.kernel_disconnected_icon:before.pull-right {\n  margin-left: .3em;\n}\n.notification_widget {\n  color: #777;\n  z-index: 10;\n  background: rgba(240, 240, 240, 0.5);\n  margin-right: 4px;\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.notification_widget:focus,\n.notification_widget.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.notification_widget:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.notification_widget:active,\n.notification_widget.active,\n.open > .dropdown-toggle.notification_widget {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.notification_widget:active:hover,\n.notification_widget.active:hover,\n.open > .dropdown-toggle.notification_widget:hover,\n.notification_widget:active:focus,\n.notification_widget.active:focus,\n.open > .dropdown-toggle.notification_widget:focus,\n.notification_widget:active.focus,\n.notification_widget.active.focus,\n.open > .dropdown-toggle.notification_widget.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.notification_widget:active,\n.notification_widget.active,\n.open > .dropdown-toggle.notification_widget {\n  background-image: none;\n}\n.notification_widget.disabled:hover,\n.notification_widget[disabled]:hover,\nfieldset[disabled] .notification_widget:hover,\n.notification_widget.disabled:focus,\n.notification_widget[disabled]:focus,\nfieldset[disabled] .notification_widget:focus,\n.notification_widget.disabled.focus,\n.notification_widget[disabled].focus,\nfieldset[disabled] .notification_widget.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.notification_widget .badge {\n  color: #fff;\n  background-color: #333;\n}\n.notification_widget.warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.notification_widget.warning:focus,\n.notification_widget.warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.notification_widget.warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.notification_widget.warning:active,\n.notification_widget.warning.active,\n.open > .dropdown-toggle.notification_widget.warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.notification_widget.warning:active:hover,\n.notification_widget.warning.active:hover,\n.open > .dropdown-toggle.notification_widget.warning:hover,\n.notification_widget.warning:active:focus,\n.notification_widget.warning.active:focus,\n.open > .dropdown-toggle.notification_widget.warning:focus,\n.notification_widget.warning:active.focus,\n.notification_widget.warning.active.focus,\n.open > .dropdown-toggle.notification_widget.warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.notification_widget.warning:active,\n.notification_widget.warning.active,\n.open > .dropdown-toggle.notification_widget.warning {\n  background-image: none;\n}\n.notification_widget.warning.disabled:hover,\n.notification_widget.warning[disabled]:hover,\nfieldset[disabled] .notification_widget.warning:hover,\n.notification_widget.warning.disabled:focus,\n.notification_widget.warning[disabled]:focus,\nfieldset[disabled] .notification_widget.warning:focus,\n.notification_widget.warning.disabled.focus,\n.notification_widget.warning[disabled].focus,\nfieldset[disabled] .notification_widget.warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.notification_widget.warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.notification_widget.success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.notification_widget.success:focus,\n.notification_widget.success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.notification_widget.success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.notification_widget.success:active,\n.notification_widget.success.active,\n.open > .dropdown-toggle.notification_widget.success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.notification_widget.success:active:hover,\n.notification_widget.success.active:hover,\n.open > .dropdown-toggle.notification_widget.success:hover,\n.notification_widget.success:active:focus,\n.notification_widget.success.active:focus,\n.open > .dropdown-toggle.notification_widget.success:focus,\n.notification_widget.success:active.focus,\n.notification_widget.success.active.focus,\n.open > .dropdown-toggle.notification_widget.success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.notification_widget.success:active,\n.notification_widget.success.active,\n.open > .dropdown-toggle.notification_widget.success {\n  background-image: none;\n}\n.notification_widget.success.disabled:hover,\n.notification_widget.success[disabled]:hover,\nfieldset[disabled] .notification_widget.success:hover,\n.notification_widget.success.disabled:focus,\n.notification_widget.success[disabled]:focus,\nfieldset[disabled] .notification_widget.success:focus,\n.notification_widget.success.disabled.focus,\n.notification_widget.success[disabled].focus,\nfieldset[disabled] .notification_widget.success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.notification_widget.success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.notification_widget.info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.notification_widget.info:focus,\n.notification_widget.info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.notification_widget.info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.notification_widget.info:active,\n.notification_widget.info.active,\n.open > .dropdown-toggle.notification_widget.info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.notification_widget.info:active:hover,\n.notification_widget.info.active:hover,\n.open > .dropdown-toggle.notification_widget.info:hover,\n.notification_widget.info:active:focus,\n.notification_widget.info.active:focus,\n.open > .dropdown-toggle.notification_widget.info:focus,\n.notification_widget.info:active.focus,\n.notification_widget.info.active.focus,\n.open > .dropdown-toggle.notification_widget.info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.notification_widget.info:active,\n.notification_widget.info.active,\n.open > .dropdown-toggle.notification_widget.info {\n  background-image: none;\n}\n.notification_widget.info.disabled:hover,\n.notification_widget.info[disabled]:hover,\nfieldset[disabled] .notification_widget.info:hover,\n.notification_widget.info.disabled:focus,\n.notification_widget.info[disabled]:focus,\nfieldset[disabled] .notification_widget.info:focus,\n.notification_widget.info.disabled.focus,\n.notification_widget.info[disabled].focus,\nfieldset[disabled] .notification_widget.info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.notification_widget.info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.notification_widget.danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.notification_widget.danger:focus,\n.notification_widget.danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.notification_widget.danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.notification_widget.danger:active,\n.notification_widget.danger.active,\n.open > .dropdown-toggle.notification_widget.danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.notification_widget.danger:active:hover,\n.notification_widget.danger.active:hover,\n.open > .dropdown-toggle.notification_widget.danger:hover,\n.notification_widget.danger:active:focus,\n.notification_widget.danger.active:focus,\n.open > .dropdown-toggle.notification_widget.danger:focus,\n.notification_widget.danger:active.focus,\n.notification_widget.danger.active.focus,\n.open > .dropdown-toggle.notification_widget.danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.notification_widget.danger:active,\n.notification_widget.danger.active,\n.open > .dropdown-toggle.notification_widget.danger {\n  background-image: none;\n}\n.notification_widget.danger.disabled:hover,\n.notification_widget.danger[disabled]:hover,\nfieldset[disabled] .notification_widget.danger:hover,\n.notification_widget.danger.disabled:focus,\n.notification_widget.danger[disabled]:focus,\nfieldset[disabled] .notification_widget.danger:focus,\n.notification_widget.danger.disabled.focus,\n.notification_widget.danger[disabled].focus,\nfieldset[disabled] .notification_widget.danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.notification_widget.danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\ndiv#pager {\n  background-color: #fff;\n  font-size: 14px;\n  line-height: 20px;\n  overflow: hidden;\n  display: none;\n  position: fixed;\n  bottom: 0px;\n  width: 100%;\n  max-height: 50%;\n  padding-top: 8px;\n  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  /* Display over codemirror */\n  z-index: 100;\n  /* Hack which prevents jquery ui resizable from changing top. */\n  top: auto !important;\n}\ndiv#pager pre {\n  line-height: 1.21429em;\n  color: #000;\n  background-color: #f7f7f7;\n  padding: 0.4em;\n}\ndiv#pager #pager-button-area {\n  position: absolute;\n  top: 8px;\n  right: 20px;\n}\ndiv#pager #pager-contents {\n  position: relative;\n  overflow: auto;\n  width: 100%;\n  height: 100%;\n}\ndiv#pager #pager-contents #pager-container {\n  position: relative;\n  padding: 15px 0px;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n}\ndiv#pager .ui-resizable-handle {\n  top: 0px;\n  height: 8px;\n  background: #f7f7f7;\n  border-top: 1px solid #cfcfcf;\n  border-bottom: 1px solid #cfcfcf;\n  /* This injects handle bars (a short, wide = symbol) for \n        the resize handle. */\n}\ndiv#pager .ui-resizable-handle::after {\n  content: '';\n  top: 2px;\n  left: 50%;\n  height: 3px;\n  width: 30px;\n  margin-left: -15px;\n  position: absolute;\n  border-top: 1px solid #cfcfcf;\n}\n.quickhelp {\n  /* Old browsers */\n  display: -webkit-box;\n  -webkit-box-orient: horizontal;\n  -webkit-box-align: stretch;\n  display: -moz-box;\n  -moz-box-orient: horizontal;\n  -moz-box-align: stretch;\n  display: box;\n  box-orient: horizontal;\n  box-align: stretch;\n  /* Modern browsers */\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  line-height: 1.8em;\n}\n.shortcut_key {\n  display: inline-block;\n  width: 21ex;\n  text-align: right;\n  font-family: monospace;\n}\n.shortcut_descr {\n  display: inline-block;\n  /* Old browsers */\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  box-flex: 1;\n  /* Modern browsers */\n  flex: 1;\n}\nspan.save_widget {\n  height: 30px;\n  margin-top: 4px;\n  display: flex;\n  justify-content: flex-start;\n  align-items: baseline;\n  width: 50%;\n  flex: 1;\n}\nspan.save_widget span.filename {\n  height: 100%;\n  line-height: 1em;\n  margin-left: 16px;\n  border: none;\n  font-size: 146.5%;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n  border-radius: 2px;\n}\nspan.save_widget span.filename:hover {\n  background-color: #e6e6e6;\n}\n[dir=\"rtl\"] span.save_widget.pull-left {\n  float: right !important;\n  float: right;\n}\n[dir=\"rtl\"] span.save_widget span.filename {\n  margin-left: 0;\n  margin-right: 16px;\n}\nspan.checkpoint_status,\nspan.autosave_status {\n  font-size: small;\n  white-space: nowrap;\n  padding: 0 5px;\n}\n@media (max-width: 767px) {\n  span.save_widget {\n    font-size: small;\n    padding: 0 0 0 5px;\n  }\n  span.checkpoint_status,\n  span.autosave_status {\n    display: none;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  span.checkpoint_status {\n    display: none;\n  }\n  span.autosave_status {\n    font-size: x-small;\n  }\n}\n.toolbar {\n  padding: 0px;\n  margin-left: -5px;\n  margin-top: 2px;\n  margin-bottom: 5px;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n}\n.toolbar select,\n.toolbar label {\n  width: auto;\n  vertical-align: middle;\n  margin-right: 2px;\n  margin-bottom: 0px;\n  display: inline;\n  font-size: 92%;\n  margin-left: 0.3em;\n  margin-right: 0.3em;\n  padding: 0px;\n  padding-top: 3px;\n}\n.toolbar .btn {\n  padding: 2px 8px;\n}\n.toolbar .btn-group {\n  margin-top: 0px;\n  margin-left: 5px;\n}\n.toolbar-btn-label {\n  margin-left: 6px;\n}\n#maintoolbar {\n  margin-bottom: -3px;\n  margin-top: -8px;\n  border: 0px;\n  min-height: 27px;\n  margin-left: 0px;\n  padding-top: 11px;\n  padding-bottom: 3px;\n}\n#maintoolbar .navbar-text {\n  float: none;\n  vertical-align: middle;\n  text-align: right;\n  margin-left: 5px;\n  margin-right: 0px;\n  margin-top: 0px;\n}\n.select-xs {\n  height: 24px;\n}\n[dir=\"rtl\"] .btn-group > .btn,\n.btn-group-vertical > .btn {\n  float: right;\n}\n.pulse,\n.dropdown-menu > li > a.pulse,\nli.pulse > a.dropdown-toggle,\nli.pulse.open > a.dropdown-toggle {\n  background-color: #F37626;\n  color: white;\n}\n/**\n * Primary styles\n *\n * Author: Jupyter Development Team\n */\n/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot\n * of chance of beeing generated from the ../less/[samename].less file, you can\n * try to get back the less file by reverting somme commit in history\n **/\n/*\n * We'll try to get something pretty, so we\n * have some strange css to have the scroll bar on\n * the left with fix button on the top right of the tooltip\n */\n@-moz-keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n@-webkit-keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n@-moz-keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n@-webkit-keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n/*properties of tooltip after \"expand\"*/\n.bigtooltip {\n  overflow: auto;\n  height: 200px;\n  -webkit-transition-property: height;\n  -webkit-transition-duration: 500ms;\n  -moz-transition-property: height;\n  -moz-transition-duration: 500ms;\n  transition-property: height;\n  transition-duration: 500ms;\n}\n/*properties of tooltip before \"expand\"*/\n.smalltooltip {\n  -webkit-transition-property: height;\n  -webkit-transition-duration: 500ms;\n  -moz-transition-property: height;\n  -moz-transition-duration: 500ms;\n  transition-property: height;\n  transition-duration: 500ms;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  height: 80px;\n}\n.tooltipbuttons {\n  position: absolute;\n  padding-right: 15px;\n  top: 0px;\n  right: 0px;\n}\n.tooltiptext {\n  /*avoid the button to overlap on some docstring*/\n  padding-right: 30px;\n}\n.ipython_tooltip {\n  max-width: 700px;\n  /*fade-in animation when inserted*/\n  -webkit-animation: fadeOut 400ms;\n  -moz-animation: fadeOut 400ms;\n  animation: fadeOut 400ms;\n  -webkit-animation: fadeIn 400ms;\n  -moz-animation: fadeIn 400ms;\n  animation: fadeIn 400ms;\n  vertical-align: middle;\n  background-color: #f7f7f7;\n  overflow: visible;\n  border: #ababab 1px solid;\n  outline: none;\n  padding: 3px;\n  margin: 0px;\n  padding-left: 7px;\n  font-family: monospace;\n  min-height: 50px;\n  -moz-box-shadow: 0px 6px 10px -1px #adadad;\n  -webkit-box-shadow: 0px 6px 10px -1px #adadad;\n  box-shadow: 0px 6px 10px -1px #adadad;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 1000;\n}\n.ipython_tooltip a {\n  float: right;\n}\n.ipython_tooltip .tooltiptext pre {\n  border: 0;\n  border-radius: 0;\n  font-size: 100%;\n  background-color: #f7f7f7;\n}\n.pretooltiparrow {\n  left: 0px;\n  margin: 0px;\n  top: -16px;\n  width: 40px;\n  height: 16px;\n  overflow: hidden;\n  position: absolute;\n}\n.pretooltiparrow:before {\n  background-color: #f7f7f7;\n  border: 1px #ababab solid;\n  z-index: 11;\n  content: \"\";\n  position: absolute;\n  left: 15px;\n  top: 10px;\n  width: 25px;\n  height: 25px;\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n}\nul.typeahead-list i {\n  margin-left: -10px;\n  width: 18px;\n}\n[dir=\"rtl\"] ul.typeahead-list i {\n  margin-left: 0;\n  margin-right: -10px;\n}\nul.typeahead-list {\n  max-height: 80vh;\n  overflow: auto;\n}\nul.typeahead-list > li > a {\n  /** Firefox bug **/\n  /* see https://github.com/jupyter/notebook/issues/559 */\n  white-space: normal;\n}\nul.typeahead-list  > li > a.pull-right {\n  float: left !important;\n  float: left;\n}\n[dir=\"rtl\"] .typeahead-list {\n  text-align: right;\n}\n.cmd-palette .modal-body {\n  padding: 7px;\n}\n.cmd-palette form {\n  background: white;\n}\n.cmd-palette input {\n  outline: none;\n}\n.no-shortcut {\n  min-width: 20px;\n  color: transparent;\n}\n[dir=\"rtl\"] .no-shortcut.pull-right {\n  float: left !important;\n  float: left;\n}\n[dir=\"rtl\"] .command-shortcut.pull-right {\n  float: left !important;\n  float: left;\n}\n.command-shortcut:before {\n  content: \"(command mode)\";\n  padding-right: 3px;\n  color: #777777;\n}\n.edit-shortcut:before {\n  content: \"(edit)\";\n  padding-right: 3px;\n  color: #777777;\n}\n[dir=\"rtl\"] .edit-shortcut.pull-right {\n  float: left !important;\n  float: left;\n}\n#find-and-replace #replace-preview .match,\n#find-and-replace #replace-preview .insert {\n  background-color: #BBDEFB;\n  border-color: #90CAF9;\n  border-style: solid;\n  border-width: 1px;\n  border-radius: 0px;\n}\n[dir=\"ltr\"] #find-and-replace .input-group-btn + .form-control {\n  border-left: none;\n}\n[dir=\"rtl\"] #find-and-replace .input-group-btn + .form-control {\n  border-right: none;\n}\n#find-and-replace #replace-preview .replace .match {\n  background-color: #FFCDD2;\n  border-color: #EF9A9A;\n  border-radius: 0px;\n}\n#find-and-replace #replace-preview .replace .insert {\n  background-color: #C8E6C9;\n  border-color: #A5D6A7;\n  border-radius: 0px;\n}\n#find-and-replace #replace-preview {\n  max-height: 60vh;\n  overflow: auto;\n}\n#find-and-replace #replace-preview pre {\n  padding: 5px 10px;\n}\n.terminal-app {\n  background: #EEE;\n}\n.terminal-app #header {\n  background: #fff;\n  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);\n}\n.terminal-app .terminal {\n  width: 100%;\n  float: left;\n  font-family: monospace;\n  color: white;\n  background: black;\n  padding: 0.4em;\n  border-radius: 2px;\n  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);\n  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);\n}\n.terminal-app .terminal,\n.terminal-app .terminal dummy-screen {\n  line-height: 1em;\n  font-size: 14px;\n}\n.terminal-app .terminal .xterm-rows {\n  padding: 10px;\n}\n.terminal-app .terminal-cursor {\n  color: black;\n  background: white;\n}\n.terminal-app #terminado-container {\n  margin-top: 20px;\n}\n/*# sourceMappingURL=style.min.css.map */\n    </style>\n<style type=\"text/css\">\n    .highlight .hll { background-color: #ffffcc }\n.highlight  { background: #f8f8f8; }\n.highlight .c { color: #408080; font-style: italic } /* Comment */\n.highlight .err { border: 1px solid #FF0000 } /* Error */\n.highlight .k { color: #008000; font-weight: bold } /* Keyword */\n.highlight .o { color: #666666 } /* Operator */\n.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */\n.highlight .cp { color: #BC7A00 } /* Comment.Preproc */\n.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */\n.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */\n.highlight .gd { color: #A00000 } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #FF0000 } /* Generic.Error */\n.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n.highlight .gi { color: #00A000 } /* Generic.Inserted */\n.highlight .go { color: #888888 } /* Generic.Output */\n.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n.highlight .gt { color: #0044DD } /* Generic.Traceback */\n.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n.highlight .kp { color: #008000 } /* Keyword.Pseudo */\n.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n.highlight .kt { color: #B00040 } /* Keyword.Type */\n.highlight .m { color: #666666 } /* Literal.Number */\n.highlight .s { color: #BA2121 } /* Literal.String */\n.highlight .na { color: #7D9029 } /* Name.Attribute */\n.highlight .nb { color: #008000 } /* Name.Builtin */\n.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n.highlight .no { color: #880000 } /* Name.Constant */\n.highlight .nd { color: #AA22FF } /* Name.Decorator */\n.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */\n.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n.highlight .nf { color: #0000FF } /* Name.Function */\n.highlight .nl { color: #A0A000 } /* Name.Label */\n.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */\n.highlight .nv { color: #19177C } /* Name.Variable */\n.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n.highlight .w { color: #bbbbbb } /* Text.Whitespace */\n.highlight .mb { color: #666666 } /* Literal.Number.Bin */\n.highlight .mf { color: #666666 } /* Literal.Number.Float */\n.highlight .mh { color: #666666 } /* Literal.Number.Hex */\n.highlight .mi { color: #666666 } /* Literal.Number.Integer */\n.highlight .mo { color: #666666 } /* Literal.Number.Oct */\n.highlight .sa { color: #BA2121 } /* Literal.String.Affix */\n.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */\n.highlight .sc { color: #BA2121 } /* Literal.String.Char */\n.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */\n.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n.highlight .s2 { color: #BA2121 } /* Literal.String.Double */\n.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */\n.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n.highlight .sx { color: #008000 } /* Literal.String.Other */\n.highlight .sr { color: #BB6688 } /* Literal.String.Regex */\n.highlight .s1 { color: #BA2121 } /* Literal.String.Single */\n.highlight .ss { color: #19177C } /* Literal.String.Symbol */\n.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0000FF } /* Name.Function.Magic */\n.highlight .vc { color: #19177C } /* Name.Variable.Class */\n.highlight .vg { color: #19177C } /* Name.Variable.Global */\n.highlight .vi { color: #19177C } /* Name.Variable.Instance */\n.highlight .vm { color: #19177C } /* Name.Variable.Magic */\n.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */\n    </style>\n<style type=\"text/css\">\n    \n/* Temporary definitions which will become obsolete with Notebook release 5.0 */\n.ansi-black-fg { color: #3E424D; }\n.ansi-black-bg { background-color: #3E424D; }\n.ansi-black-intense-fg { color: #282C36; }\n.ansi-black-intense-bg { background-color: #282C36; }\n.ansi-red-fg { color: #E75C58; }\n.ansi-red-bg { background-color: #E75C58; }\n.ansi-red-intense-fg { color: #B22B31; }\n.ansi-red-intense-bg { background-color: #B22B31; }\n.ansi-green-fg { color: #00A250; }\n.ansi-green-bg { background-color: #00A250; }\n.ansi-green-intense-fg { color: #007427; }\n.ansi-green-intense-bg { background-color: #007427; }\n.ansi-yellow-fg { color: #DDB62B; }\n.ansi-yellow-bg { background-color: #DDB62B; }\n.ansi-yellow-intense-fg { color: #B27D12; }\n.ansi-yellow-intense-bg { background-color: #B27D12; }\n.ansi-blue-fg { color: #208FFB; }\n.ansi-blue-bg { background-color: #208FFB; }\n.ansi-blue-intense-fg { color: #0065CA; }\n.ansi-blue-intense-bg { background-color: #0065CA; }\n.ansi-magenta-fg { color: #D160C4; }\n.ansi-magenta-bg { background-color: #D160C4; }\n.ansi-magenta-intense-fg { color: #A03196; }\n.ansi-magenta-intense-bg { background-color: #A03196; }\n.ansi-cyan-fg { color: #60C6C8; }\n.ansi-cyan-bg { background-color: #60C6C8; }\n.ansi-cyan-intense-fg { color: #258F8F; }\n.ansi-cyan-intense-bg { background-color: #258F8F; }\n.ansi-white-fg { color: #C5C1B4; }\n.ansi-white-bg { background-color: #C5C1B4; }\n.ansi-white-intense-fg { color: #A1A6B2; }\n.ansi-white-intense-bg { background-color: #A1A6B2; }\n\n.ansi-bold { font-weight: bold; }\n\n    </style>\n\n\n<style type=\"text/css\">\n/* Overrides of notebook CSS for static HTML export */\nbody {\n  overflow: visible;\n  padding: 8px;\n}\n\ndiv#notebook {\n  overflow: visible;\n  border-top: none;\n}@media print {\n  div.cell {\n    display: block;\n    page-break-inside: avoid;\n  } \n  div.output_wrapper { \n    display: block;\n    page-break-inside: avoid; \n  }\n  div.output { \n    display: block;\n    page-break-inside: avoid; \n  }\n}\n</style>\n\n<!-- Custom stylesheet, it must be in the same directory as the html file -->\n<link rel=\"stylesheet\" href=\"custom.css\">\n\n<!-- Loading mathjax macro -->\n<!-- Load mathjax -->\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS_HTML\"></script>\n    <!-- MathJax configuration -->\n    <script type=\"text/x-mathjax-config\">\n    MathJax.Hub.Config({\n        tex2jax: {\n            inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n            displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ],\n            processEscapes: true,\n            processEnvironments: true\n        },\n        // Center justify equations in code and markdown cells. Elsewhere\n        // we use CSS to left justify single line equations in code cells.\n        displayAlign: 'center',\n        \"HTML-CSS\": {\n            styles: {'.MathJax_Display': {\"margin\": 0}},\n            linebreaks: { automatic: true }\n        }\n    });\n    </script>\n    <!-- End of mathjax configuration --></head>\n<body>\n  <div tabindex=\"-1\" id=\"notebook\" class=\"border-box-sizing\">\n    <div class=\"container\" id=\"notebook-container\">\n\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Install-libraries-first\">Install libraries first<a class=\"anchor-link\" href=\"#Install-libraries-first\">&#182;</a></h2><p>Be sure  keras with tensorflow installed\n<code>!conda install -c conda-forge keras</code></p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[&nbsp;]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"o\">!</span>pip install git+https://github.com/qubvel/efficientnet\n<span class=\"o\">!</span>pip install git+https://github.com/qubvel/classification_models.git\n<span class=\"o\">!</span>pip install git+https://github.com/qubvel/segmentation_models\n<span class=\"o\">!</span>pip install -U git+https://github.com/albu/albumentations\n<span class=\"o\">!</span>pip install tta-wrapper\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Defining-data-generator\">Defining data generator<a class=\"anchor-link\" href=\"#Defining-data-generator\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[1]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">keras.utils</span> <span class=\"k\">import</span> <span class=\"n\">Sequence</span>\n<span class=\"kn\">from</span> <span class=\"nn\">skimage.io</span> <span class=\"k\">import</span> <span class=\"n\">imread</span>\n<span class=\"kn\">import</span> <span class=\"nn\">os</span>\n<span class=\"kn\">import</span> <span class=\"nn\">matplotlib.pyplot</span> <span class=\"k\">as</span> <span class=\"nn\">plt</span>\n<span class=\"kn\">from</span> <span class=\"nn\">sklearn.utils</span> <span class=\"k\">import</span> <span class=\"n\">shuffle</span>\n<span class=\"kn\">import</span> <span class=\"nn\">tensorflow</span> <span class=\"k\">as</span> <span class=\"nn\">tf</span>\n\n<span class=\"n\">tf</span><span class=\"o\">.</span><span class=\"n\">logging</span><span class=\"o\">.</span><span class=\"n\">set_verbosity</span><span class=\"p\">(</span><span class=\"n\">tf</span><span class=\"o\">.</span><span class=\"n\">logging</span><span class=\"o\">.</span><span class=\"n\">ERROR</span><span class=\"p\">)</span>\n<span class=\"o\">%</span><span class=\"k\">load_ext</span> autoreload\n<span class=\"o\">%</span><span class=\"k\">autoreload</span> 2\n<span class=\"o\">%</span><span class=\"k\">matplotlib</span> inline\n<span class=\"kn\">from</span> <span class=\"nn\">albumentations</span> <span class=\"k\">import</span> <span class=\"p\">(</span><span class=\"n\">Blur</span><span class=\"p\">,</span> <span class=\"n\">Compose</span><span class=\"p\">,</span> <span class=\"n\">HorizontalFlip</span><span class=\"p\">,</span> <span class=\"n\">HueSaturationValue</span><span class=\"p\">,</span>\n                            <span class=\"n\">IAAEmboss</span><span class=\"p\">,</span> <span class=\"n\">IAASharpen</span><span class=\"p\">,</span> <span class=\"n\">JpegCompression</span><span class=\"p\">,</span> <span class=\"n\">OneOf</span><span class=\"p\">,</span>\n                            <span class=\"n\">RandomBrightness</span><span class=\"p\">,</span> <span class=\"n\">RandomBrightnessContrast</span><span class=\"p\">,</span>\n                            <span class=\"n\">RandomContrast</span><span class=\"p\">,</span> <span class=\"n\">RandomCrop</span><span class=\"p\">,</span> <span class=\"n\">RandomGamma</span><span class=\"p\">,</span>\n                            <span class=\"n\">RandomRotate90</span><span class=\"p\">,</span> <span class=\"n\">RGBShift</span><span class=\"p\">,</span> <span class=\"n\">ShiftScaleRotate</span><span class=\"p\">,</span>\n                            <span class=\"n\">Transpose</span><span class=\"p\">,</span> <span class=\"n\">VerticalFlip</span><span class=\"p\">,</span> <span class=\"n\">ElasticTransform</span><span class=\"p\">,</span> <span class=\"n\">GridDistortion</span><span class=\"p\">,</span> <span class=\"n\">OpticalDistortion</span><span class=\"p\">)</span>\n \n<span class=\"kn\">import</span> <span class=\"nn\">albumentations</span> <span class=\"k\">as</span> <span class=\"nn\">albu</span>\n<span class=\"kn\">from</span> <span class=\"nn\">albumentations</span> <span class=\"k\">import</span> <span class=\"n\">Resize</span>\n\n<span class=\"k\">class</span> <span class=\"nc\">DataGeneratorFolder</span><span class=\"p\">(</span><span class=\"n\">Sequence</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">root_dir</span><span class=\"o\">=</span><span class=\"sa\">r</span><span class=\"s1\">&#39;../data/val_test&#39;</span><span class=\"p\">,</span> <span class=\"n\">image_folder</span><span class=\"o\">=</span><span class=\"s1\">&#39;img/&#39;</span><span class=\"p\">,</span> <span class=\"n\">mask_folder</span><span class=\"o\">=</span><span class=\"s1\">&#39;masks/&#39;</span><span class=\"p\">,</span> \n                 <span class=\"n\">batch_size</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">image_size</span><span class=\"o\">=</span><span class=\"mi\">768</span><span class=\"p\">,</span> <span class=\"n\">nb_y_features</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> \n                 <span class=\"n\">augmentation</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span>\n                 <span class=\"n\">suffle</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span> <span class=\"o\">=</span> <span class=\"n\">listdir_fullpath</span><span class=\"p\">(</span><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"n\">root_dir</span><span class=\"p\">,</span> <span class=\"n\">image_folder</span><span class=\"p\">))</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">mask_names</span> <span class=\"o\">=</span> <span class=\"n\">listdir_fullpath</span><span class=\"p\">(</span><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"n\">root_dir</span><span class=\"p\">,</span> <span class=\"n\">mask_folder</span><span class=\"p\">))</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span> <span class=\"o\">=</span> <span class=\"n\">batch_size</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">currentIndex</span> <span class=\"o\">=</span> <span class=\"mi\">0</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">augmentation</span> <span class=\"o\">=</span> <span class=\"n\">augmentation</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span> <span class=\"o\">=</span> <span class=\"n\">image_size</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">nb_y_features</span> <span class=\"o\">=</span> <span class=\"n\">nb_y_features</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">indexes</span> <span class=\"o\">=</span> <span class=\"kc\">None</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">suffle</span> <span class=\"o\">=</span> <span class=\"n\">suffle</span>\n        \n    <span class=\"k\">def</span> <span class=\"nf\">__len__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">        Calculates size of batch</span>\n<span class=\"sd\">        &quot;&quot;&quot;</span>\n        <span class=\"k\">return</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">ceil</span><span class=\"p\">(</span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">)</span> <span class=\"o\">/</span> <span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span><span class=\"p\">)))</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">on_epoch_end</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"sd\">&quot;&quot;&quot;Updates indexes after each epoch&quot;&quot;&quot;</span>\n        <span class=\"k\">if</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">suffle</span><span class=\"o\">==</span><span class=\"kc\">True</span><span class=\"p\">:</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">mask_names</span> <span class=\"o\">=</span> <span class=\"n\">shuffle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">mask_names</span><span class=\"p\">)</span>\n        \n    <span class=\"k\">def</span> <span class=\"nf\">read_image_mask</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">image_name</span><span class=\"p\">,</span> <span class=\"n\">mask_name</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">imread</span><span class=\"p\">(</span><span class=\"n\">image_name</span><span class=\"p\">)</span><span class=\"o\">/</span><span class=\"mi\">255</span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"n\">imread</span><span class=\"p\">(</span><span class=\"n\">mask_name</span><span class=\"p\">,</span> <span class=\"n\">as_gray</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span> <span class=\"o\">&gt;</span> <span class=\"mi\">0</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">astype</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">int8</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">__getitem__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">index</span><span class=\"p\">):</span>\n        <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">        Generate one batch of data</span>\n<span class=\"sd\">        </span>\n<span class=\"sd\">        &quot;&quot;&quot;</span>\n        <span class=\"c1\"># Generate indexes of the batch</span>\n        <span class=\"n\">data_index_min</span> <span class=\"o\">=</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"n\">index</span><span class=\"o\">*</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span><span class=\"p\">)</span>\n        <span class=\"n\">data_index_max</span> <span class=\"o\">=</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"nb\">min</span><span class=\"p\">((</span><span class=\"n\">index</span><span class=\"o\">+</span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"o\">*</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span><span class=\"p\">,</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">)))</span>\n        \n        <span class=\"n\">indexes</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">[</span><span class=\"n\">data_index_min</span><span class=\"p\">:</span><span class=\"n\">data_index_max</span><span class=\"p\">]</span>\n\n        <span class=\"n\">this_batch_size</span> <span class=\"o\">=</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">indexes</span><span class=\"p\">)</span> <span class=\"c1\"># The last batch can be smaller than the others</span>\n        \n        <span class=\"c1\"># Defining dataset</span>\n        <span class=\"n\">X</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">empty</span><span class=\"p\">((</span><span class=\"n\">this_batch_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">),</span> <span class=\"n\">dtype</span><span class=\"o\">=</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">float32</span><span class=\"p\">)</span>\n        <span class=\"n\">y</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">empty</span><span class=\"p\">((</span><span class=\"n\">this_batch_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">nb_y_features</span><span class=\"p\">),</span> <span class=\"n\">dtype</span><span class=\"o\">=</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">uint8</span><span class=\"p\">)</span>\n\n        <span class=\"k\">for</span> <span class=\"n\">i</span><span class=\"p\">,</span> <span class=\"n\">sample_index</span> <span class=\"ow\">in</span> <span class=\"nb\">enumerate</span><span class=\"p\">(</span><span class=\"n\">indexes</span><span class=\"p\">):</span>\n\n            <span class=\"n\">X_sample</span><span class=\"p\">,</span> <span class=\"n\">y_sample</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">read_image_mask</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">[</span><span class=\"n\">index</span> <span class=\"o\">*</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span> <span class=\"o\">+</span> <span class=\"n\">i</span><span class=\"p\">],</span> \n                                                    <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">mask_names</span><span class=\"p\">[</span><span class=\"n\">index</span> <span class=\"o\">*</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span> <span class=\"o\">+</span> <span class=\"n\">i</span><span class=\"p\">])</span>\n                 \n            <span class=\"c1\"># if augmentation is defined, we assume its a train set</span>\n            <span class=\"k\">if</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">augmentation</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n                  \n                <span class=\"c1\"># Augmentation code</span>\n                <span class=\"n\">augmented</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">augmentation</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">)(</span><span class=\"n\">image</span><span class=\"o\">=</span><span class=\"n\">X_sample</span><span class=\"p\">,</span> <span class=\"n\">mask</span><span class=\"o\">=</span><span class=\"n\">y_sample</span><span class=\"p\">)</span>\n                <span class=\"n\">image_augm</span> <span class=\"o\">=</span> <span class=\"n\">augmented</span><span class=\"p\">[</span><span class=\"s1\">&#39;image&#39;</span><span class=\"p\">]</span>\n                <span class=\"n\">mask_augm</span> <span class=\"o\">=</span> <span class=\"n\">augmented</span><span class=\"p\">[</span><span class=\"s1\">&#39;mask&#39;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">nb_y_features</span><span class=\"p\">)</span>\n                <span class=\"n\">X</span><span class=\"p\">[</span><span class=\"n\">i</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">clip</span><span class=\"p\">(</span><span class=\"n\">image_augm</span><span class=\"p\">,</span> <span class=\"n\">a_min</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"n\">a_max</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n                <span class=\"n\">y</span><span class=\"p\">[</span><span class=\"n\">i</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">mask_augm</span>\n            \n            <span class=\"c1\"># if augmentation isnt defined, we assume its a test set. </span>\n            <span class=\"c1\"># Because test images can have different sizes we resize it to be divisable by 32</span>\n            <span class=\"k\">elif</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">augmentation</span> <span class=\"ow\">is</span> <span class=\"kc\">None</span> <span class=\"ow\">and</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">batch_size</span> <span class=\"o\">==</span><span class=\"mi\">1</span><span class=\"p\">:</span>\n                <span class=\"n\">X_sample</span><span class=\"p\">,</span> <span class=\"n\">y_sample</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">read_image_mask</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">image_filenames</span><span class=\"p\">[</span><span class=\"n\">index</span> <span class=\"o\">*</span> <span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"n\">i</span><span class=\"p\">],</span> \n                                                      <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">mask_names</span><span class=\"p\">[</span><span class=\"n\">index</span> <span class=\"o\">*</span> <span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"n\">i</span><span class=\"p\">])</span>\n                <span class=\"n\">augmented</span> <span class=\"o\">=</span> <span class=\"n\">Resize</span><span class=\"p\">(</span><span class=\"n\">height</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">//</span><span class=\"mi\">32</span><span class=\"p\">)</span><span class=\"o\">*</span><span class=\"mi\">32</span><span class=\"p\">,</span> <span class=\"n\">width</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">//</span><span class=\"mi\">32</span><span class=\"p\">)</span><span class=\"o\">*</span><span class=\"mi\">32</span><span class=\"p\">)(</span><span class=\"n\">image</span> <span class=\"o\">=</span> <span class=\"n\">X_sample</span><span class=\"p\">,</span> <span class=\"n\">mask</span> <span class=\"o\">=</span> <span class=\"n\">y_sample</span><span class=\"p\">)</span>\n                <span class=\"n\">X_sample</span><span class=\"p\">,</span> <span class=\"n\">y_sample</span> <span class=\"o\">=</span> <span class=\"n\">augmented</span><span class=\"p\">[</span><span class=\"s1\">&#39;image&#39;</span><span class=\"p\">],</span> <span class=\"n\">augmented</span><span class=\"p\">[</span><span class=\"s1\">&#39;mask&#39;</span><span class=\"p\">]</span>\n\n                <span class=\"k\">return</span> <span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">],</span> <span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">],</span> <span class=\"mi\">3</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">astype</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">float32</span><span class=\"p\">),</span>\\\n                       <span class=\"n\">y_sample</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">],</span> <span class=\"n\">X_sample</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">],</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">nb_y_features</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">astype</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">uint8</span><span class=\"p\">)</span>\n\n        <span class=\"k\">return</span> <span class=\"n\">X</span><span class=\"p\">,</span> <span class=\"n\">y</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n<div class=\"output_subarea output_stream output_stderr output_text\">\n<pre>Using TensorFlow backend.\n</pre>\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Data-augmentation&#8202;-&#8202;albumentations\">Data augmentation&#8202;-&#8202;albumentations<a class=\"anchor-link\" href=\"#Data-augmentation&#8202;-&#8202;albumentations\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[14]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">aug_with_crop</span><span class=\"p\">(</span><span class=\"n\">image_size</span> <span class=\"o\">=</span> <span class=\"mi\">256</span><span class=\"p\">,</span> <span class=\"n\">crop_prob</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">Compose</span><span class=\"p\">([</span>\n        <span class=\"n\">RandomCrop</span><span class=\"p\">(</span><span class=\"n\">width</span> <span class=\"o\">=</span> <span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"n\">height</span> <span class=\"o\">=</span> <span class=\"n\">image_size</span><span class=\"p\">,</span> <span class=\"n\">p</span><span class=\"o\">=</span><span class=\"n\">crop_prob</span><span class=\"p\">),</span>\n        <span class=\"n\">HorizontalFlip</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n        <span class=\"n\">VerticalFlip</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n        <span class=\"n\">RandomRotate90</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n        <span class=\"n\">Transpose</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n        <span class=\"n\">ShiftScaleRotate</span><span class=\"p\">(</span><span class=\"n\">shift_limit</span><span class=\"o\">=</span><span class=\"mf\">0.01</span><span class=\"p\">,</span> <span class=\"n\">scale_limit</span><span class=\"o\">=</span><span class=\"mf\">0.04</span><span class=\"p\">,</span> <span class=\"n\">rotate_limit</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.25</span><span class=\"p\">),</span>\n        <span class=\"n\">RandomBrightnessContrast</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n        <span class=\"n\">RandomGamma</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.25</span><span class=\"p\">),</span>\n        <span class=\"n\">IAAEmboss</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.25</span><span class=\"p\">),</span>\n        <span class=\"n\">Blur</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.01</span><span class=\"p\">,</span> <span class=\"n\">blur_limit</span> <span class=\"o\">=</span> <span class=\"mi\">3</span><span class=\"p\">),</span>\n        <span class=\"n\">OneOf</span><span class=\"p\">([</span>\n            <span class=\"n\">ElasticTransform</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">,</span> <span class=\"n\">alpha</span><span class=\"o\">=</span><span class=\"mi\">120</span><span class=\"p\">,</span> <span class=\"n\">sigma</span><span class=\"o\">=</span><span class=\"mi\">120</span> <span class=\"o\">*</span> <span class=\"mf\">0.05</span><span class=\"p\">,</span> <span class=\"n\">alpha_affine</span><span class=\"o\">=</span><span class=\"mi\">120</span> <span class=\"o\">*</span> <span class=\"mf\">0.03</span><span class=\"p\">),</span>\n            <span class=\"n\">GridDistortion</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">),</span>\n            <span class=\"n\">OpticalDistortion</span><span class=\"p\">(</span><span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">distort_limit</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">shift_limit</span><span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">)</span>                  \n        <span class=\"p\">],</span> <span class=\"n\">p</span><span class=\"o\">=</span><span class=\"mf\">0.8</span><span class=\"p\">)</span>\n    <span class=\"p\">],</span> <span class=\"n\">p</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n\n<span class=\"n\">test_generator</span> <span class=\"o\">=</span> <span class=\"n\">DataGeneratorFolder</span><span class=\"p\">(</span><span class=\"n\">root_dir</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;./data/road_segmentation_ideal/training&#39;</span><span class=\"p\">,</span>\n                                     <span class=\"n\">image_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;input/&#39;</span><span class=\"p\">,</span> \n                                     <span class=\"n\">mask_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;output/&#39;</span><span class=\"p\">,</span>\n                                     <span class=\"n\">batch_size</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span>\n                                     <span class=\"n\">nb_y_features</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">augmentation</span> <span class=\"o\">=</span> <span class=\"n\">aug_with_crop</span><span class=\"p\">)</span>\n<span class=\"n\">Xtest</span><span class=\"p\">,</span> <span class=\"n\">ytest</span> <span class=\"o\">=</span> <span class=\"n\">test_generator</span><span class=\"o\">.</span><span class=\"fm\">__getitem__</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">imshow</span><span class=\"p\">(</span><span class=\"n\">Xtest</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">])</span>     \n<span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">show</span><span class=\"p\">()</span>\n<span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">imshow</span><span class=\"p\">(</span><span class=\"n\">ytest</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"p\">:,:,</span><span class=\"mi\">0</span><span class=\"p\">])</span>\n<span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">show</span><span class=\"p\">()</span> \n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n\n\n<div class=\"output_png output_subarea \">\n<img src=\"data:image/png;base64,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\n\"\n>\n</div>\n\n</div>\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n\n\n<div class=\"output_png output_subarea \">\n<img src=\"data:image/png;base64,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\n\"\n>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[15]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"c1\"># setting generators</span>\n<span class=\"n\">test_generator</span> <span class=\"o\">=</span> <span class=\"n\">DataGeneratorFolder</span><span class=\"p\">(</span><span class=\"n\">root_dir</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;./data/road_segmentation_ideal/training&#39;</span><span class=\"p\">,</span> \n                           <span class=\"n\">image_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;input/&#39;</span><span class=\"p\">,</span> \n                           <span class=\"n\">mask_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;output/&#39;</span><span class=\"p\">,</span> \n                                   <span class=\"n\">batch_size</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span>\n                                   <span class=\"n\">nb_y_features</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">augmentation</span> <span class=\"o\">=</span> <span class=\"kc\">False</span><span class=\"p\">)</span>\n\n<span class=\"n\">train_generator</span> <span class=\"o\">=</span> <span class=\"n\">DataGeneratorFolder</span><span class=\"p\">(</span><span class=\"n\">root_dir</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;./data/road_segmentation_ideal/training&#39;</span><span class=\"p\">,</span> \n                                      <span class=\"n\">image_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;input/&#39;</span><span class=\"p\">,</span> \n                                      <span class=\"n\">mask_folder</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;output/&#39;</span><span class=\"p\">,</span> \n                                      <span class=\"n\">augmentation</span> <span class=\"o\">=</span> <span class=\"n\">aug_with_crop</span><span class=\"p\">,</span>\n                                      <span class=\"n\">batch_size</span><span class=\"o\">=</span><span class=\"mi\">4</span><span class=\"p\">,</span>\n                                      <span class=\"n\">image_size</span><span class=\"o\">=</span><span class=\"mi\">512</span><span class=\"p\">,</span>\n                                      <span class=\"n\">nb_y_features</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">augmentation</span> <span class=\"o\">=</span> <span class=\"kc\">True</span><span class=\"p\">)</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Callbacks\">Callbacks<a class=\"anchor-link\" href=\"#Callbacks\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[16]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">keras.callbacks</span> <span class=\"k\">import</span> <span class=\"n\">ModelCheckpoint</span><span class=\"p\">,</span> <span class=\"n\">ReduceLROnPlateau</span><span class=\"p\">,</span> <span class=\"n\">EarlyStopping</span><span class=\"p\">,</span> <span class=\"n\">TensorBoard</span>\n\n<span class=\"c1\"># reduces learning rate on plateau</span>\n<span class=\"n\">lr_reducer</span> <span class=\"o\">=</span> <span class=\"n\">ReduceLROnPlateau</span><span class=\"p\">(</span><span class=\"n\">factor</span><span class=\"o\">=</span><span class=\"mf\">0.1</span><span class=\"p\">,</span>\n                               <span class=\"n\">cooldown</span><span class=\"o\">=</span> <span class=\"mi\">10</span><span class=\"p\">,</span>\n                               <span class=\"n\">patience</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span><span class=\"n\">verbose</span> <span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span>\n                               <span class=\"n\">min_lr</span><span class=\"o\">=</span><span class=\"mf\">0.1e-5</span><span class=\"p\">)</span>\n<span class=\"n\">mode_autosave</span> <span class=\"o\">=</span> <span class=\"n\">ModelCheckpoint</span><span class=\"p\">(</span><span class=\"s2\">&quot;./weights/road_crop.efficientnetb0imgsize.h5&quot;</span><span class=\"p\">,</span><span class=\"n\">monitor</span><span class=\"o\">=</span><span class=\"s1\">&#39;val_iou_score&#39;</span><span class=\"p\">,</span> \n                                   <span class=\"n\">mode</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;max&#39;</span><span class=\"p\">,</span> <span class=\"n\">save_best_only</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">verbose</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">period</span> <span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># stop learining as metric on validatopn stop increasing</span>\n<span class=\"n\">early_stopping</span> <span class=\"o\">=</span> <span class=\"n\">EarlyStopping</span><span class=\"p\">(</span><span class=\"n\">patience</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"n\">verbose</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">mode</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;auto&#39;</span><span class=\"p\">)</span> \n\n<span class=\"c1\"># tensorboard for monitoring logs</span>\n<span class=\"n\">tensorboard</span> <span class=\"o\">=</span> <span class=\"n\">TensorBoard</span><span class=\"p\">(</span><span class=\"n\">log_dir</span><span class=\"o\">=</span><span class=\"s1\">&#39;./logs/tenboard&#39;</span><span class=\"p\">,</span> <span class=\"n\">histogram_freq</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span>\n                          <span class=\"n\">write_graph</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">write_images</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n\n<span class=\"n\">callbacks</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">mode_autosave</span><span class=\"p\">,</span> <span class=\"n\">lr_reducer</span><span class=\"p\">,</span> <span class=\"n\">tensorboard</span><span class=\"p\">,</span> <span class=\"n\">early_stopping</span><span class=\"p\">]</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[18]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">segmentation_models</span> <span class=\"k\">import</span> <span class=\"n\">Unet</span>\n<span class=\"kn\">from</span> <span class=\"nn\">keras.optimizers</span> <span class=\"k\">import</span> <span class=\"n\">Adam</span>\n<span class=\"kn\">from</span> <span class=\"nn\">segmentation_models.losses</span> <span class=\"k\">import</span> <span class=\"n\">bce_jaccard_loss</span><span class=\"p\">,</span> <span class=\"n\">bce_dice_loss</span>\n<span class=\"kn\">from</span> <span class=\"nn\">segmentation_models.metrics</span> <span class=\"k\">import</span> <span class=\"n\">iou_score</span>\n\n<span class=\"k\">def</span> <span class=\"nf\">plot_training_history</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"p\">):</span>\n    <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">    Plots model training history </span>\n<span class=\"sd\">    &quot;&quot;&quot;</span>\n    <span class=\"n\">fig</span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"n\">ax_loss</span><span class=\"p\">,</span> <span class=\"n\">ax_acc</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">subplots</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">figsize</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"mi\">15</span><span class=\"p\">,</span><span class=\"mi\">5</span><span class=\"p\">))</span>\n    <span class=\"n\">ax_loss</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">epoch</span><span class=\"p\">,</span> <span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">[</span><span class=\"s2\">&quot;loss&quot;</span><span class=\"p\">],</span> <span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s2\">&quot;Train loss&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">ax_loss</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">epoch</span><span class=\"p\">,</span> <span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">[</span><span class=\"s2\">&quot;val_loss&quot;</span><span class=\"p\">],</span> <span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s2\">&quot;Validation loss&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">ax_loss</span><span class=\"o\">.</span><span class=\"n\">legend</span><span class=\"p\">()</span>\n    <span class=\"n\">ax_acc</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">epoch</span><span class=\"p\">,</span> <span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">[</span><span class=\"s2\">&quot;iou_score&quot;</span><span class=\"p\">],</span> <span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s2\">&quot;Train iou&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">ax_acc</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">epoch</span><span class=\"p\">,</span> <span class=\"n\">history</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">[</span><span class=\"s2\">&quot;val_iou_score&quot;</span><span class=\"p\">],</span> <span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s2\">&quot;Validation iou&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">ax_acc</span><span class=\"o\">.</span><span class=\"n\">legend</span><span class=\"p\">()</span>\n    \n<span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Unet</span><span class=\"p\">(</span><span class=\"n\">backbone_name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;efficientnetb0&#39;</span><span class=\"p\">,</span> <span class=\"n\">encoder_weights</span><span class=\"o\">=</span><span class=\"s1\">&#39;imagenet&#39;</span><span class=\"p\">,</span> <span class=\"n\">encoder_freeze</span> <span class=\"o\">=</span> <span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"n\">optimizer</span> <span class=\"o\">=</span> <span class=\"n\">Adam</span><span class=\"p\">(),</span>\n                    <span class=\"n\">loss</span><span class=\"o\">=</span><span class=\"n\">bce_jaccard_loss</span><span class=\"p\">,</span> <span class=\"n\">metrics</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">iou_score</span><span class=\"p\">])</span>\n\n<span class=\"n\">history</span> <span class=\"o\">=</span> <span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">fit_generator</span><span class=\"p\">(</span><span class=\"n\">train_generator</span><span class=\"p\">,</span> <span class=\"n\">shuffle</span> <span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n                  <span class=\"n\">epochs</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"n\">workers</span><span class=\"o\">=</span><span class=\"mi\">4</span><span class=\"p\">,</span> <span class=\"n\">use_multiprocessing</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n                  <span class=\"n\">validation_data</span> <span class=\"o\">=</span> <span class=\"n\">test_generator</span><span class=\"p\">,</span> \n                  <span class=\"n\">verbose</span> <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">callbacks</span><span class=\"o\">=</span><span class=\"n\">callbacks</span><span class=\"p\">)</span>\n<span class=\"c1\">#plotting history</span>\n<span class=\"n\">plot_training_history</span><span class=\"p\">(</span><span class=\"n\">history</span><span class=\"p\">)</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>Epoch 1/50\n201/201 [==============================] - 308s 2s/step - loss: 0.8607 - iou_score: 0.2964 - val_loss: 0.6873 - val_iou_score: 0.4477\nEpoch 2/50\n201/201 [==============================] - 291s 1s/step - loss: 0.7180 - iou_score: 0.4195 - val_loss: 0.6818 - val_iou_score: 0.4479\nEpoch 3/50\n201/201 [==============================] - 290s 1s/step - loss: 0.7066 - iou_score: 0.4270 - val_loss: 0.6136 - val_iou_score: 0.5049\nEpoch 4/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6862 - iou_score: 0.4436 - val_loss: 0.6063 - val_iou_score: 0.5083\nEpoch 5/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6709 - iou_score: 0.4589 - val_loss: 0.6209 - val_iou_score: 0.4912\nEpoch 6/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6793 - iou_score: 0.4518 - val_loss: 0.6389 - val_iou_score: 0.4839\nEpoch 7/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6702 - iou_score: 0.4567 - val_loss: 0.6070 - val_iou_score: 0.5002\nEpoch 8/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6550 - iou_score: 0.4702 - val_loss: 0.5994 - val_iou_score: 0.5132\nEpoch 9/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6570 - iou_score: 0.4658 - val_loss: 0.5856 - val_iou_score: 0.5263\nEpoch 10/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6482 - iou_score: 0.4759 - val_loss: 0.5845 - val_iou_score: 0.5207\n\nEpoch 00010: val_iou_score improved from -inf to 0.52067, saving model to ./weights/road_crop.efficientnetb0imgsize.h5\nEpoch 11/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6404 - iou_score: 0.4818 - val_loss: 0.5923 - val_iou_score: 0.5205\nEpoch 12/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6368 - iou_score: 0.4827 - val_loss: 0.5742 - val_iou_score: 0.5340\nEpoch 13/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6245 - iou_score: 0.4945 - val_loss: 0.5822 - val_iou_score: 0.5259\nEpoch 14/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6298 - iou_score: 0.4905 - val_loss: 0.5937 - val_iou_score: 0.5173\nEpoch 15/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6282 - iou_score: 0.4919 - val_loss: 0.5850 - val_iou_score: 0.5257\nEpoch 16/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6343 - iou_score: 0.4849 - val_loss: 0.5658 - val_iou_score: 0.5369\nEpoch 17/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6282 - iou_score: 0.4909 - val_loss: 0.5731 - val_iou_score: 0.5397\nEpoch 18/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6224 - iou_score: 0.4962 - val_loss: 0.5919 - val_iou_score: 0.5250\nEpoch 19/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6118 - iou_score: 0.5031 - val_loss: 0.5711 - val_iou_score: 0.5338\nEpoch 20/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6101 - iou_score: 0.5037 - val_loss: 0.5616 - val_iou_score: 0.5363\n\nEpoch 00020: val_iou_score improved from 0.52067 to 0.53633, saving model to ./weights/road_crop.efficientnetb0imgsize.h5\nEpoch 21/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6102 - iou_score: 0.5045 - val_loss: 0.5777 - val_iou_score: 0.5225\nEpoch 22/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6102 - iou_score: 0.5046 - val_loss: 0.5790 - val_iou_score: 0.5381\nEpoch 23/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6153 - iou_score: 0.4994 - val_loss: 0.5836 - val_iou_score: 0.5287\nEpoch 24/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5969 - iou_score: 0.5160 - val_loss: 0.5593 - val_iou_score: 0.5472\nEpoch 25/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6192 - iou_score: 0.4986 - val_loss: 0.5723 - val_iou_score: 0.5279\nEpoch 26/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5950 - iou_score: 0.5181 - val_loss: 0.5639 - val_iou_score: 0.5463\nEpoch 27/50\n201/201 [==============================] - 290s 1s/step - loss: 0.6074 - iou_score: 0.5067 - val_loss: 0.5740 - val_iou_score: 0.5318\nEpoch 28/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5991 - iou_score: 0.5132 - val_loss: 0.5667 - val_iou_score: 0.5434\nEpoch 29/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5986 - iou_score: 0.5154 - val_loss: 0.5636 - val_iou_score: 0.5446\nEpoch 30/50\n201/201 [==============================] - 291s 1s/step - loss: 0.6024 - iou_score: 0.5131 - val_loss: 0.5771 - val_iou_score: 0.5296\n\nEpoch 00030: val_iou_score did not improve from 0.53633\nEpoch 31/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5939 - iou_score: 0.5175 - val_loss: 0.5554 - val_iou_score: 0.5507\nEpoch 32/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5995 - iou_score: 0.5137 - val_loss: 0.5551 - val_iou_score: 0.5447\nEpoch 33/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5952 - iou_score: 0.5158 - val_loss: 0.5561 - val_iou_score: 0.5488\nEpoch 34/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5996 - iou_score: 0.5136 - val_loss: 0.6011 - val_iou_score: 0.5086\nEpoch 35/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5967 - iou_score: 0.5150 - val_loss: 0.5804 - val_iou_score: 0.5313\nEpoch 36/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5961 - iou_score: 0.5153 - val_loss: 0.5516 - val_iou_score: 0.5478\nEpoch 37/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5880 - iou_score: 0.5220 - val_loss: 0.5590 - val_iou_score: 0.5374\nEpoch 38/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5845 - iou_score: 0.5242 - val_loss: 0.5659 - val_iou_score: 0.5387\nEpoch 39/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5946 - iou_score: 0.5197 - val_loss: 0.5705 - val_iou_score: 0.5396\nEpoch 40/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5850 - iou_score: 0.5258 - val_loss: 0.5555 - val_iou_score: 0.5424\n\nEpoch 00040: val_iou_score improved from 0.53633 to 0.54237, saving model to ./weights/road_crop.efficientnetb0imgsize.h5\nEpoch 41/50\n201/201 [==============================] - 289s 1s/step - loss: 0.5863 - iou_score: 0.5234 - val_loss: 0.5666 - val_iou_score: 0.5360\nEpoch 42/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5917 - iou_score: 0.5190 - val_loss: 0.5684 - val_iou_score: 0.5423\nEpoch 43/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5812 - iou_score: 0.5287 - val_loss: 0.5541 - val_iou_score: 0.5473\nEpoch 44/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5773 - iou_score: 0.5318 - val_loss: 0.5534 - val_iou_score: 0.5502\nEpoch 45/50\n201/201 [==============================] - 291s 1s/step - loss: 0.5835 - iou_score: 0.5255 - val_loss: 0.5532 - val_iou_score: 0.5525\nEpoch 46/50\n201/201 [==============================] - 290s 1s/step - loss: 0.5808 - iou_score: 0.5281 - val_loss: 0.5639 - val_iou_score: 0.5435\n\nEpoch 00046: ReduceLROnPlateau reducing learning rate to 0.00010000000474974513.\nEpoch 47/50\n201/201 [==============================] - 297s 1s/step - loss: 0.5734 - iou_score: 0.5337 - val_loss: 0.5472 - val_iou_score: 0.5533\nEpoch 48/50\n201/201 [==============================] - 303s 2s/step - loss: 0.5761 - iou_score: 0.5327 - val_loss: 0.5428 - val_iou_score: 0.5564\nEpoch 49/50\n201/201 [==============================] - 295s 1s/step - loss: 0.5681 - iou_score: 0.5385 - val_loss: 0.5387 - val_iou_score: 0.5614\nEpoch 50/50\n201/201 [==============================] - 293s 1s/step - loss: 0.5742 - iou_score: 0.5338 - val_loss: 0.5386 - val_iou_score: 0.5619\n\nEpoch 00050: val_iou_score improved from 0.54237 to 0.56187, saving model to ./weights/road_crop.efficientnetb0imgsize.h5\n</pre>\n</div>\n</div>\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n\n\n<div class=\"output_png output_subarea \">\n<img src=\"data:image/png;base64,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\n\"\n>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Inference-and-model-quality--check\">Inference and model quality  check<a class=\"anchor-link\" href=\"#Inference-and-model-quality--check\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4 id=\"Single-image\">Single image<a class=\"anchor-link\" href=\"#Single-image\">&#182;</a></h4>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[45]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">iou_metric</span><span class=\"p\">(</span><span class=\"n\">y_true_in</span><span class=\"p\">,</span> <span class=\"n\">y_pred_in</span><span class=\"p\">):</span>\n    <span class=\"n\">labels</span> <span class=\"o\">=</span> <span class=\"n\">y_true_in</span>\n    <span class=\"n\">y_pred</span> <span class=\"o\">=</span> <span class=\"n\">y_pred_in</span>\n\n    <span class=\"n\">temp1</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">histogram2d</span><span class=\"p\">(</span><span class=\"n\">labels</span><span class=\"o\">.</span><span class=\"n\">flatten</span><span class=\"p\">(),</span> <span class=\"n\">y_pred</span><span class=\"o\">.</span><span class=\"n\">flatten</span><span class=\"p\">(),</span> <span class=\"n\">bins</span><span class=\"o\">=</span><span class=\"p\">([</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"mf\">0.5</span><span class=\"p\">,</span><span class=\"mi\">1</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"mf\">0.5</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">]))</span>\n\n    <span class=\"n\">intersection</span> <span class=\"o\">=</span> <span class=\"n\">temp1</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n\n    <span class=\"n\">area_true</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">histogram</span><span class=\"p\">(</span><span class=\"n\">labels</span><span class=\"p\">,</span><span class=\"n\">bins</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"mf\">0.5</span><span class=\"p\">,</span><span class=\"mi\">1</span><span class=\"p\">])[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n    <span class=\"n\">area_pred</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">histogram</span><span class=\"p\">(</span><span class=\"n\">y_pred</span><span class=\"p\">,</span> <span class=\"n\">bins</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"mf\">0.5</span><span class=\"p\">,</span><span class=\"mi\">1</span><span class=\"p\">])[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n    <span class=\"n\">area_true</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">expand_dims</span><span class=\"p\">(</span><span class=\"n\">area_true</span><span class=\"p\">,</span> <span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n    <span class=\"n\">area_pred</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">expand_dims</span><span class=\"p\">(</span><span class=\"n\">area_pred</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">)</span>\n\n    <span class=\"c1\"># Compute union</span>\n    <span class=\"n\">union</span> <span class=\"o\">=</span> <span class=\"n\">area_true</span> <span class=\"o\">+</span> <span class=\"n\">area_pred</span> <span class=\"o\">-</span> <span class=\"n\">intersection</span>\n  \n    <span class=\"c1\"># Exclude background from the analysis</span>\n    <span class=\"n\">intersection</span> <span class=\"o\">=</span> <span class=\"n\">intersection</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:,</span><span class=\"mi\">1</span><span class=\"p\">:]</span>\n    <span class=\"n\">intersection</span><span class=\"p\">[</span><span class=\"n\">intersection</span> <span class=\"o\">==</span> <span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mf\">1e-9</span>\n    \n    <span class=\"n\">union</span> <span class=\"o\">=</span> <span class=\"n\">union</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:,</span><span class=\"mi\">1</span><span class=\"p\">:]</span>\n    <span class=\"n\">union</span><span class=\"p\">[</span><span class=\"n\">union</span> <span class=\"o\">==</span> <span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mf\">1e-9</span>\n\n    <span class=\"n\">iou</span> <span class=\"o\">=</span> <span class=\"n\">intersection</span> <span class=\"o\">/</span> <span class=\"n\">union</span>\n    <span class=\"k\">return</span> <span class=\"n\">iou</span>\n\n<span class=\"k\">def</span> <span class=\"nf\">plot_mask_gt_image</span><span class=\"p\">(</span><span class=\"n\">mask</span><span class=\"p\">,</span> <span class=\"n\">groud_truth</span><span class=\"p\">,</span> <span class=\"n\">img</span><span class=\"p\">):</span>\n    <span class=\"n\">fig</span><span class=\"p\">,</span> <span class=\"n\">axs</span> <span class=\"o\">=</span> <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">subplots</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"n\">figsize</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"mi\">20</span><span class=\"p\">,</span><span class=\"mi\">10</span><span class=\"p\">))</span>\n    <span class=\"n\">axs</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">imshow</span><span class=\"p\">(</span><span class=\"n\">mask</span><span class=\"p\">,</span> <span class=\"n\">cmap</span><span class=\"o\">=</span><span class=\"s2\">&quot;Blues&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">axs</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">imshow</span><span class=\"p\">(</span><span class=\"n\">groud_truth</span><span class=\"p\">,</span> <span class=\"n\">cmap</span><span class=\"o\">=</span><span class=\"s2\">&quot;Blues&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">axs</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">imshow</span><span class=\"p\">(</span><span class=\"n\">img</span><span class=\"p\">)</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">show</span><span class=\"p\">()</span>\n    \n<span class=\"k\">def</span> <span class=\"nf\">iou_metric_batch</span><span class=\"p\">(</span><span class=\"n\">y_true_in</span><span class=\"p\">,</span> <span class=\"n\">y_pred_in</span><span class=\"p\">):</span>\n    <span class=\"n\">y_pred_in</span> <span class=\"o\">=</span> <span class=\"n\">y_pred_in</span>\n    <span class=\"n\">batch_size</span> <span class=\"o\">=</span> <span class=\"n\">y_true_in</span><span class=\"o\">.</span><span class=\"n\">shape</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n    <span class=\"n\">metric</span> <span class=\"o\">=</span> <span class=\"p\">[]</span>\n    <span class=\"k\">for</span> <span class=\"n\">batch</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"n\">batch_size</span><span class=\"p\">):</span>\n        <span class=\"n\">value</span> <span class=\"o\">=</span> <span class=\"n\">iou_metric</span><span class=\"p\">(</span><span class=\"n\">y_true_in</span><span class=\"p\">[</span><span class=\"n\">batch</span><span class=\"p\">],</span> <span class=\"n\">y_pred_in</span><span class=\"p\">[</span><span class=\"n\">batch</span><span class=\"p\">])</span>\n        <span class=\"n\">metric</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">mean</span><span class=\"p\">(</span><span class=\"n\">metric</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># to get single image and prediction quality</span>\n<span class=\"n\">Xtest</span><span class=\"p\">,</span> <span class=\"n\">y_test</span>  <span class=\"o\">=</span> <span class=\"n\">test_generator</span><span class=\"o\">.</span><span class=\"fm\">__getitem__</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"n\">predicted</span> <span class=\"o\">=</span> <span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">predict</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">expand_dims</span><span class=\"p\">(</span><span class=\"n\">Xtest</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">],</span> <span class=\"n\">axis</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"mi\">1472</span><span class=\"p\">,</span> <span class=\"mi\">1472</span><span class=\"p\">)</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s1\">&#39;IOU&#39;</span><span class=\"p\">,</span> <span class=\"n\">iou_metric</span><span class=\"p\">(</span><span class=\"n\">y_test</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"mi\">1472</span><span class=\"p\">,</span> <span class=\"mi\">1472</span><span class=\"p\">),</span> <span class=\"n\">predicted</span><span class=\"p\">))</span> \n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>IOU [[0.63749895]]\n</pre>\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[39]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">plot_mask_gt_image</span><span class=\"p\">(</span><span class=\"n\">predicted</span><span class=\"p\">,</span> <span class=\"n\">y_test</span><span class=\"o\">.</span><span class=\"n\">squeeze</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">squeeze</span><span class=\"p\">(</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">),</span>\\\n           <span class=\"n\">Xtest</span><span class=\"o\">.</span><span class=\"n\">squeeze</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n\n\n<div class=\"output_png output_subarea \">\n<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABIoAAAFrCAYAAAC+MWJ1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeZAk2X3Y9+/LuzLrvvq+pnuundmZvWcv3FgYJEDQIiSKImlZYdG0TCIk2mEzHA7S4ZAcphSU7ZBF2zIZQZMWSZEgCYAgiGMB7OJYALs7Ozu7O3fP9PR91n3lffiPnl0sSQASaWEPKD8zFd2VldH5KisrX+Wv3u/3RJIkpFKpVCqVSqVSqVQqlUqlUtKb3YBUKpVKpVKpVCqVSqVSqdRbQxooSqVSqVQqlUqlUqlUKpVKAWmgKJVKpVKpVCqVSqVSqVQqdUcaKEqlUqlUKpVKpVKpVCqVSgFpoCiVSqVSqVQqlUqlUqlUKnVHGihKpVKpVCqVSqVSqVQqlUoBb0KgSAjxQSHEDSHELSHEf/dGbz+VSqVSb21pP5FKpVKp7yXtJ1KpVOr7SyRJ8sZtTAgZWAaeALaA88DfSZLk6hvWiFQqlUq9ZaX9RCqVSqW+l7SfSKVSqe+/N3pE0UPArSRJbidJ4gO/D/zoG9yGVCqVSr11pf1EKpVKpb6XtJ9IpVKp77M3OlA0BWy+7v7WnWWpVCqVSkHaT6RSqVTqe0v7iVQqlfo+U97g7YnvsOzP5b4JIX4W+FkAy7LuP378xBvRrtT3UcK3X/jX//528PJam9gdce+JmT+3/N+WsCn+HdZ5db1U6rtJXvfz5eubKFaOu2eKrz3+4osXmkmS1N6Uxn3/pP1E6m3n4rUN7j05+2Y3I5X6S8di2k+ALEn3Z7MmYRQhyzJBGCISKOSyjBwHXVOAmN7QpZCz6PUHWJaJbbskSUIcJyiqgkSCZmQIfB/LMnBdD9cLyWgqqqqQiIQkOWyc6wVoGYU4SoijGFWRieMEgUBWJQQQxxBFMRISkiohYkhICPwIXdeQVRld0/DDCM/xQCTIskQUxgghSEiIwpAwjpEE5CyTge1QKuQYjkbomkYYRGiaiucHKIqCECAJget7RIBIEoQ43KVRHBP6EZJ02D5D10GAqqqEUUQiBOLOB3lBgizJkEAQRUgkDJwRsiIhCZkkjlElmeHIRpIEvoiIwwQNGUmWsF0fSKhXyvT6fVwvRAh4tSJKxlBRFZX+0AbAsnJMTIwRxzGD0YhBr0cY+uiqiuP5r+2PODr8A7Ii7hwl3z5UDtf4i1ckh+snyeF+kWUFXdVAEuSy5uHrFMUMhiNyGZ2h62MoMmEUYZgWURAQJzFCkpAkQRQlhGGEJAmSKEJWNRw/IJ8vEscxrm+jKwqZTIYoPtxukiR/4foo4bA0zOEOEZK4s18OlwnxHQ7/OCKXz5NEh8dsfzAiunPcgWA4cojiEIRAkWWCIEAIQeD7SKpCFIZoqoGmyHhBgCIrkMTEcQRIJOLweamyTJTEgIQkYqIoJorj156DJARxkqAqhyEGSUAYxQRBePgaSAJFVgnD4PDZCNBUHU3TiMKAOIE4jhHS4XtFkhQc10ZVZXw/wtBU/DAijmJ0XT08ZuIESZaJo4goTpCEQFNlkCXiMCKOE2RFQhYSfhCSkKCpKr7vE4QRuqYRJwlmJkMchXh+iCTLkMSH54sgRACqLBEjiJKEMAxJkgRZlkmSw20mgB/4AKiyAgh0TWHkuK+9x3RNI6PrDEY2WdPA8wMAwigkjGLMjE4cH77+siQRxXeODSHwPQ9VVYhiAUSYusbQcwjDGFnISJJMTIgQgnp1jKHtEEchqgyyrCJkjSiOGA4HZI0MJIfnDtcLcF3vO16SvtGBoi3g9Vfc08DO61dIkuTXgV8HuP/+B5JvPPfCG9e61PddkiTf+QT3FvV7L67z8//Fr/LMs//yL7X71fper1+eJMlrnVz8uselO6u8nZ779/J2ex3froIwRpIEsiSI4oTqI7/AVUmm/c3/BSEEGVWsv9lt/D5I+4nU207pwY/xjed+7c1uRipF6cGPcTWGzvnD4zHtJyCTySSPPXQGVAURBUiaBnHAQcsDf4AfRhjZImtrt6gVLWbmq0ReyF6jy9j4OEVdoz4zw0sXzyNJEkNX5299+AkMw0XTTZ764kUSTVAplBkMXIpjGnEoyBULhPII4UvUCzWkBC5eWSWTCShVcgxbAROzFTpDh83lXT784feyfHmFs+dO4dsOfQcSJAo5k2o1y1itxubWLleu3ODK8jqlvIltOyiKTBRFWIUCVV3GTlwuXb3JT370h+j3bZ7+2gXyxQLD/gg9ozM9XeTm1XXuf3SRa9f3qIxlqRQr7DcanF08iuOFzC0cwXU9Aj9ke3uPfCaDpmjoesz5i9fx/IhjCzOMBh1+4w8/z8/+/EfZ2t+nYprs9h00I8FUFGatMVQp5sql23TaLW42m6gSNJoRJUunZzt4foxlKdh2iK6oxEnI3/7he/n9r14km1OwD0ISEdDqdfiJv/1TvPDC1/nYx/4H/vEv/TLJYo7hap+yVuXWyipJHAGCXEUDCQQSEgmyEMQIhHwYnBEihuTwsxWxRJzEhH5CEPjIukTGtPjoh99PXovJlutcv3QDTYnxXI9Ws0/OynLk7CnCUYisJtxYWWN9c5teb0CpXGbakjh6zxk6XZdarc6J+97Byto2PWcT0w/5wPvu58ZmjG17h8GRKDoMEoYxkiyIo5AYCVkcPodXg16SJCNJIN8JpHhOl9/8N3/ML/9nH+SZl7ZoN/dZ3VxnZnKMo0eOkIQBrV6bl5Z3qBUUdnabxIRYVhlD0aiOT3Lz5nWK1QmkKKDfbWJmxjh73/1sb6yzt9ukWskxMTHLZ578LKop8dDxuwjMLL2dLbKWytbOPn4Uk8/mqJYtDg4GFHJw5fYBQkgoqsTSibM4rkPzYJPZqUUyhkkYhyiqQkHR2B+0mS5nWdnaoVy0aLUHaHoCks5MfZaNRoPN7TUWxst0bBdVyKi6wfT4GM39A5SMAcJlZ7fL/NwknX6Pve0+83N1hm5AMaPRtX0m61kM3eDrL1xmYryMrFlATK/TplwoECERxwFhmDBeyKIKnfGpGQaOzc21FbJmhowAF5nA9/FCl5mxMcrFEtdur2K7HcIIarVp1MCjaw+YkMrYgUPgO0zXp6lUZ+g29nEFVE2JUJLoj0YEvo9hWIyPT+AMO4w8iTgc0R25jNXGyGU8ltc6zIzVUDNF9vsr7O53yWgZcqoJCpxerFE0DMYXplGyx6hXp/mNT/4ap+YeZ299ldGwiSZiWl5C5Lk88fg9/ObvfOK7nmjf6NSz88BRIcSCEEIDfgL49BvchtSb6O0WXPixu6eBb3/D8XpCiL8UJHrt9zuPy9JhkOgvrvt294P0XN6KXv0GU74TJAKQJcGtL/8qxBHl9/2Pb24Dv7/SfiKVSqX+ml4NEJUe/Nib3JLvq79SP6FrMkOnz/b6Nq9cW2ZvZw/bdkgiGyeK0RQLe9BD13SqlQrDfoAfw5GZCXIZi2a3y/KVq8hKntPHl5icmOapZ15gdaOD3R/y6IOnsfQsEzWdxWMVAidiaDssv3IT4TrYcZ/9VhM/9rj/viXOPXSWI9PzTMyV2dntYOVV7jlxnMDz6bkOrf02m7sdXMc/HJ2hSvQ7bfqDAY4f0xvZjFVKJLGEjMCxHRRN4NsD1JyFInRM3eCbXzvPZ77wLDnDYm52itOnjxO4DreWt8mXDHpuwMgOMGSDjZsNimaJTneApsqsra4SRQmKrDA1UWZsrIIkJ3R6LnefOsqjD55iZrbOHz/zDMfPnWa73cLUM5jZHIWMhaHKjJeKOJFL03OJ9RA1Y1GcymLbPvVCgcnxGp7no5UkpIJCYSqLNaWRKShcuHQLSQiUWEdSFJyRS3/Q59LlbzE9OU69MsdBxyHeGqKFEo3BHsgxQhZI2p3L29dG6wjiRHx7xJIAhEQiQJIkZBlkIZienUXPaMSA69n8649/isvrHa5dv021nmfm+F2oZg5Xsgh9j2ajRSCHfOWpL/HSpevcdfQo9bFJyuUc/Uji5lqD3qCHFwRks1ncMOGB42dp9rdpdRN6/RFhFOGHAWEc3xldFpPEMbpm3LlIl/DDw+CXLAFJSBL5hEGbydKI9WuX+In33c+t7SZLMxXede4eZNXksUce4+UrV3jl+nVure3wxBNP4AcK73vihzlz3yNUx2bIFnKoQubRR9/NWFahXjSJkoTpqXEYNRjZQxZPHkdVJC5tvoBaVDl97AQDP6CxvkupWocY5mdmqOYLGMUsl26scdDrcHW1iaoqqLrGWK1OXlepFfMcXTyB63bxvCEJEZ4/pNHcQYptDvp9dBk6vQGR8MhbWWzbZWN3jYE9IApDkDWyika+kGFptka3Y5MoKooMmpKhWs2ztrnLoDfk6JEJ5ETl1IkjmJZJIWfQGUasbq5ydG6KYinPzGQVS89hmCUmxqcwMzKyZjE+MU7OVNFzOjv767SaOxybmKZeqKJoOo7voKsy05Uq81MTrG7vUi1aEEWUCmX6nQOkBMbzNQq6RjFfJ4oSxsp1gihEUlVmKkW6I5du3yYOE2IhGIx6dPpd9jsDVFXHjwQZzWDY77Ky2aaa1djY2+OgsYeaFKhla2RVC1XWGMtkSIKEQDLYOegQRyFf/soXeOmpV/j0H/0WRjKgVixTLVYgjhgMhzx3dZswjL/rifYNDRQlSRICHwO+AFwDPp4kyZU3sg2p1F+Frhy+ReK/ECk6HDn052+vEoLXLvB/0AJEqTeGEAJJOry9XiWr0fjm/waDFqWHf+FNat33V9pPpFKp1P8/P+jBor9qPxHHMYaaZbe9TxwEdByfldVdTEWjYGZQpQjP9bl7aYZWr0cxqyJjsN/uUc8bVLJ5DE0mTgJiSWXQbdPvNnEDaA4Dbm3vUKvk2TrwuHF5jdALmKoUWbp7Dsc1KOezNJv7bGz3sLtDVm7vs7a5QyBHTE4W0SSDyYUiL798k9m5GV588Qqnjs8wWTWRkoSh41MoVdH0PINugzAIiCKX/eYuURJjmiY3rt3GykiUTJ39ZodSocyJkyd45MEzLB49St9x6HQHLCzNoaqCM6eP02843Hf2KKEUMXBHLExPcOLkaaZnj3Di+EmyZgbfc7D9AFnL0DwYkNE0FBHT7XT4lV//HXQzxzuPT3HP3BLCKfDHf/hFFC9kujrDWKXCKPQBHVWr8Oi5R4m0kOqZCpWjBcLIRbIEhAmKepjio2ZlhCyx1hmiZCRc2yU7qWAYErEX8s1vXGB86hg//fd+Csd22F3r4GkuRlXHqusYZRXTkg8/RwFScie9ToJEJK9mc337RkIsEhIZDlqbKOphapwQEpKU8My3vk5nKFjbG7G1tcPU5BRnj04RZ3Ks3d4ksm2UTIn5uXn8yCeb0fC8CDdMkGSJ0PXo2kMySszcRJaJiXFWlgdkzQhVlRFCRpEVBCCrKpKiIUkanh+iyCqCmMT+DHv7u4zXZOYrDs3Ny3iNPb705efRVJUkiHnx5av8649/jl//xNMsHr+bS9dW6PYHtLs9Ei3DC888TeQPufDc07xy4VncfpP2/gFbO6tEkY+uZ+l1BlRzeZZXbrGx18YJErY3bjM5Vmc2U+eemSWuL9+gZmUZOR3GillkVcfMqLTtAZOWhaZlKGQLnDlxnGquzGxtklK5jueN2NpZp9XYZmasjKn5zFZ1Ts7VGZvIU6rMUC/ncEMXIam4TkwQq5w+fhRFEhybn2OyXmJjZ4d8PkvJzLN8e4vOoEMch4y8kKsrG5StIkvz02QtC8fxcBOHzc1thCxx7eYGaxsblEtlvABMq8jW9i6DQQvH6XHt9nW2dpvMTUyQhAlKdpzltXVa/S6JniXUFFQry26niyQlqBmdZqfJVy9cYOX2bW5vr9PoOqyub7DXbIJvI+sKgSpTLZeolMeRZAUpTMhnZDZbbYIYrHwWPZOlVqxw18I8mlWkVqmyu7NyOCIugmK+hogFiWoRRx5REBCMHIqGCVFILWeQySgEiY8mC+brM/zKP/1nfPbLnyCOApQ4ZCWzzMGwQWgWOT1XpXmwx/T0GNH3qJXyRqeekSTJZ4HPvtHbTaX+Ol4N8nhBjCIfBo1eTS97ffwnDQal3iiKLEFtHpo/iNkEh9J+IvV2VHrwY69doKdSb7bO+V/7gQ0UwV+tn0jihACJQq6EQkyn0yZnWSCHBF5EGETEAnYaIzwvxg1DxosWAzthdX+Pfm9AMV+gbGpsra8zU89xdaWP03MoGgknFsdxRi6NZpP56Qp7nYhWa0CQxNheQLEyxtTSBJYocGx2nN3egEajidd1GOATxT5be3vMlKd4zzsfIG8qXLq6wmg4YmT7TM0eYWaixqVLV7i1ssLG+gYTE9OMV6v0Ri6apFAuVYn8hG++vMK9J+Zpdwc0+h67+wd4rsfU2Bjt4YAgltHzOTxbwhl5dJwOsSPxzocfwNANFE2jsbOD47kUCnmGtg1JRBI5TE+N0R92GDR7bB/sohgKoj/g8198kY/9g5P83H/547R9g49/4vf4sf/kfVy9EnJksYqEytJDH+JPPv07/M0H38fnn79AXpa4qvRQMwqarpAkAkkEOP0IrxdQva9E83oPPSORrxfpeD2kAw8BXHz2KcDH0BSCKMZt+wzbPlZZo1DP0brZwx74mFn1ToAIIhK4U78mEcmd0kQCQQLiTuWi+LBmUSQdjupGCKIEvnn+aYhj5qaPcHS+Rm8YM1EuUM5n2W62ec+7H+CzTz6Lrio8dPYunnnxGg8/tMB4fZLzL11l5dZtBB71ioKqaFSnC/zZV55nZuYsIA5Tz5CJwwSSCFmWMFQol0scNNbo2ifo7VxlRx9yc30Hz/G5ePU62UIdWUpo7e1QKRcQyZDYhd2N2zT3t7H0DLEk4dgOQgFVMSjmNKxcnUFnmxAJooR2t8toaLPVbpLPl1k8dhKv38B3euTLNQKRgGRwZGESOV/g8rXL2F7A+uZtrq5uoagyUZTwjZevcnLxGGoSUsrqbO5GNLbWOHZkGj9UWZwZo9nosd8eIpKATnedqbEaIy8gDPo03CGWYRALmJ0u0x0M6fUVhKywvbVKb+hi6DrLW9vM1MeYnKijyCrNYUhjfwND1bh0axPTVCiYGUxTJwwCukOHy9fXsHIqMxNTOLZHPpvF7bUpFfNcvnaLXNYgDAJqhQKB5zNWGydBYm6sxuzsArv7TeLQp9E9IEg8pktH6LR3qI3P8/K1i2TyOq1mH01XCYIISUAjHDIeFDGETLfXPqxZlVFg1GSASqfXoZjLE7kBhqoShwHb3RBT9whDmbFqjZHrYhgaw+EBhaxFp3PAkclZCvkC7f4Ix7ZZGp9kbW+LYRhwz10LWBWLX/rVX0ciplS0CJ2IIA7pvKwiZUPedUbn00/d4t5Tx7h2dRlFlr/ruVMk3ymn5i0irT2ReisoPfgxZp74MK/8zx88LET4A1ZvKPX2dM8vfYEb/+yDF5IkeeDNbsubKe0nUm8Fr16Qp4Gi1FtNRhX/wfcTpplJ7jq6AIpM6Hp0hk2yVhlZSXBch7yRQcuYjEYBuhIysAOquTy5bIFr6zcZr9ZxhyOq5QKuLDgxPY6qRDxz/ib5okG/73DukeN0DhzswZCpmQqrG/tMTY7RHA0YND3Gp6soGZdwJHPi6AJBHJCECYiY7e09RoHLZGmab52/xE/++Pt55eIKxVqBvXaTsfIUx44t8JWnvsni0WmE5LGzN8AZRuiGiqYqDEceW1u7nDwxSxQLJBFhZiwioROHAf1+hzgJEXFEs9Oj123zrvc+yurqKpVqESkweeD+s/QHff7p//7bDHodcvk8/9XP/gRjE+Mc7O2jSYKRM+KTn/kS650Wj585TqKpVMtVNK3Mbl8ll8synQv5+o2v8sGHHmW/0UOTNT7z2W/g6DkCp8Hv/ot/zi/+6n9PYzBCaHeKZbshg8YAKwOJYTJqOGQyCuaEwYSRo98LuXFlAyEEhYUsROC0POyej6RAaSqLltUIDnz6TQdVEcQyqK+mocmCO1W4D0cZvVra+k7x5SS+M+ooefXzfUKcgIQgiRMOizfLqCLm0QfuZW5ukTCMyBoKUejxp0+dRybm3edO4SaHNaXCwMU0s8iyThhJ+JlJTh6ZpdXpY2gaQRDg+e5hwWoRo0iC3mBEnEBZ66GqEl9++jx3nVniqS8+w7Gjx/jU57/EO975Lvr7DYrVCsu3ruK7Hsemp2n2h4fHaJCwu7OJlc2Ty+i4kkIchPR7TcZqFUBgGlkcp0N1bI6LL53H0HWUjHlY0NkL0GSJyuwSmdjjytUrnDv3MJ968vPIksD1XUq5MRqdPcrZHGHoMz61gG0PmZucYXtnnc39HYqFcSzDIsbDkCMGoxFOEFMwLSQiivk8pq4wcj0OWm0SRWasUierwla7hxRDlPh0ejZhFKFqGYQAz3MYDn2qJRPLNNFUiTgBxwsY2S6lbAFZjjE0DU2TWd9rUK5WCNwIReJw3/shazt7SDL4fsCJk2exe0MMOWJmbp52q0l3MMDQDcLQR4p9rEyW9rBPp9cnSgSVQoG1zS2CMOHI4gwbG1sk8bcLkyuKxNEjM2zs7CGIkYTEex6+l043pt3pYochwvdQMia1YgHb7zNyfZJYEIQRE7Uy+80uhUKB0aCJomXRhM5g1MUdDZifW2C/3YQkoD8acvfx49zYWEeKEgaqg9/2yGVzWKbJj37gA/zxl84z6LXIWBLHZmbZ2tlj5Ljs7bWxR6PveFH7RtcoSqXelja/+mXgcBRRmk6Weiu4+E8+8GY3IZVKpVKpt74kRjF0osAnk1WoFitUS3lc20EgqFZyOP02hhJSLuWIApf2sI+qQ8bUqFgGQhH4ScJ0pc7LN25w8dptxmp52oM+ui7jhxHVqkEsCfYPRui6gRARM5Uc88fH0Cs64/UJjKzEzdt7LC9v8/Kl61y6vIafhExOjKFkFD7yxOOAxvhknYJl0Wt4yAq02l1mF2e4dfs2L750m9HQpt3ex3Mjxsdr1EoV7j97kq21FoWiRZTIaIqMqcvkzAzloompZZCSBF3RWFpcZKJapZQ1yWWm6QUGT51f5alvXWNiapHZhRN85IfeTzZvIWSJUrVKp98jk4TENUFxzOBIdQFZlmgFXdYaLrquMlcx2Bq2sMwyji9hKoIrl67wD/7e+5kvQWtjn//pn/8rcrGJ74SM9gYopoIUw/RSlSjSEZ5H7WSR2PORPJnGjTZ7txtUFyxqtQKjbYd8zaR6tIpZNhg7XcfuuDSud2hsD7CyFn6YMOoFHFZfOZytTSTJYSqXlJBICbyajiaBpHD4UwIhktdmh0NwOHWXSIjiGDcIWdsfsrfXYG+/w/W1dVTV4sPveZif+OgPc2N9l+6gSa87IJctUSzkCVwbP/SwNJnNnQN0TSWKAta3l5ko2Dx0dgxTl6jlfCZLEUWlzTeef4F2v8Xi4jyf+fSTJJLOM996jg88/jjD1j5e5HKwfYtjs0fQZJVhmDA5O83i3AKtbpeHz57hroVFesMRuiKTzRfIZQt0Oj1KpsXG7jqSWmRz/Sa16gzZfAE5kSjnS0iqysKJM2yt3aTZ3Ga33ee3/+CPUEno9wY8fOYsS0cmOTY/j6oaSIpBr9PGGw65eOUltvb3UYROJZehUCxTNHUc16OazzM7XkVVBVkrQ7PbZbfdo+/aqJrOZLlMv9fj9vY+jj3ioNVgqj7G1HiNvGVh6joJEkbGJGuq2I6HFwb0h0NazT6qIlEqFCgWDkcT6WaOTu8AUzeJIolyMY+ZL6BaBVr9Ho7tMjZW4dixk2iSiiICcuUJypaO57u0u807s9clbPQbHHSaFCyTo3NTSCJmv31AGMUgElZXN4mjBCELSDhMK0TQ7vSp5g5T8mrVCTZ3OvhJSLGSQ5UVIlklm9FxvBEHzT6GpqPqJqoEmqyiyRpB4CELmbyukFUEViZDKEmousDSQZINTMXk+toGs9OLyGHE/RN3UbFyzNfqvPexh/nE176KEAoJ4DkJjheQMWUylv5axsx38oannqXemuI4+Uv1UFJ3SDJEh9MXpgGi1FtFeiymUqlUKvXvQAgaBy1qYzk8J8L1hnhhiCKDoWsM7YBI1dnrDRk6Q0q1HGqS4dryLSamJ7m+s8fc5AyaLHFz+SY5KwM6xLLOdLmMLENZy5HJW5SKJQ4OhqxsbGEOTBr7XbxEoCoKo7LCeL2EZugg19A0nwsvrWDYFt12H6fb5IrtUMxXuP/+41iZDDOzdfKmwuVrtzixNMv45Azzmowu6zQKAwoFkzBIyBUzGLrOuVIJRZGplTLU6zVsx+fKtV2OLMywdnuDzQMQoY3dD/jN3/5DHn70EWqWzHMXdymVixRLFX7mpz5CKGdw+9u0W00EMUKK+N1PPsn8O09Q9FQCR+N6b5Pt3V2OnT7G1LzAkjVmFo8xNTfP5dVnkCUJT1Z54LEHqFcq/Dc/8yH+76zBzvY27aiPYqvIIRy8uMdiucJcRscpOci+yv6VBnrOZLg55MyRSZr72wSjBHkwZKZUZuNKm8gJkfWE5uWATMWAkcsD5+5ld3eH4cA5rB8aH9YfSu5MKy/gMGh05yNU8ur9P3/A3PkvDqdqT6TD9DQFRKxy89ZVbt28hqod1pJ8/oUr/J2/8SN8/s++zOzcHHsba5w7expZU5BJUC2DyIkIwogwCqhbIctrl2lvDQhm8wz7TbzeNqWpJZzNHWRZsLl+wPUrG8wcWWRqaokjs5PcuJ1nY2+P8WoFVephuwJJJBRrdWYWFli5fJG1m8ucmF9gtTegv7/HrfUNztXGmZoc4+srN3jw4YdwByETpQrHpov0hiaVqSW+/o2nmZueZb+xx+W166xtrKEuZli+0sbQMpw8eoTd/X3KeYuvPvsiuiJ4531naTVbZKwiphTTDT1mq5MYVhYrm2N3f5v4YIdyVWfH90gQTNTy+J6KG0Qcn59m86DN7v4B49Uye80udx+d59qtdWbHauw2Why02oz8wyLfcZygKzKZnM5o6JLNZ8nqKq2uh6pJOG5Akri0+gayKtoAACAASURBVF3Gi0U63X3KlSmKGY391oDYczAMDV3XaDS6CCGxu9NEN0ZYhkqlWEMoMi8v30aRQoqmThSE6DJY5SwVtYKlKUREWDmD/o6NqsqUTIWDvociS5gZnanxGbqjPuOlOqYmOBiOGMtp1CpV4sjj9tYWqpDQMipZTcJzfMyMgqKoaIpE4PpkdAXPtXH9DtX8JEM/wIsjZFUnGticWVzAEwb9AEa9Jo3BkIl6gZeuXeT4+Bhu5HHPiZNM1E0OogFPPHaOWzsb7KzNEEg+ruvT7kGtmPmLB/+fkwaKUq9Jpzz/LoSAOHqzW5FKpVKpVCqV+isyNI3+qEWuY9Ec7FDMVlE1mWavRy5bQFY1vHaHWqFEd+BRkC0arS7z89OMvAhD0wk8D93KEEoKspKw3Y44vWBxbXmbrgtReJvji7MESYgbhTz60HHWNrcYy5WI5Yi+E1KQKwybAf3BHpZpkMQSp88eY9BoEyYJcTZi1HSYm9B4+foy8xOTqJbM3MICQ09g2wEigaypc315n+NLU+zuD3Dsfebn5tB0lZvbazz60BkO9kBWTDrtNg89cAIrm2V1dRdNFfT9PGdPTOL5Ce3dJt1KDUSE57n4SPybP3mSpcWTTFcCMqbFYDDiytWb7Df36H22S71c5j/+kXfyua98i1ajg+06HLQbFE2HMDiJpun02212mzso5QzNl+BJZ5n3PXqCv//j7+P//J3PsvyNVSRZoKgyM+M1Fmfr7DWHHMvUudk8YGppim53QDRweeXWJp7tM3msQnXS4qDdp3KsSHWgsx32MAwZx0mIEPTbHeTQwfN8ZEVi0PbJV/VXZ5cnuZNyJnFnsBCCSMR3ahbxugiSOAwivfYl+mEV7JgYVVNIBMQJhIlAkwUf/8xnKFplBk6CH8Ws7e8zUa/THnQpWSb5vMkoTtB1mSs3VlGQWVqo8/E//FOyloWhGXz2z77M+s4uSRLx/g9+GLfVROgqsmHxyrUbaIrGdMVivzcio8qYpo6q6ZSLsLe+QX1iioym0OnZCAG6ZbJ05iQaMbdvXEEzLfZ39zh18i5u+w7dQNAOE6TOPuV8DlnLECYJp+87w6VnXya3AgszcxhGloyqUS7kCToDZKlF33F4aeOAc3fdzcr2Ns1em/HqDKquEsUBUhKhayYzEzk299o8cnqJb758nXJ5lmwm5MrKKvuGCmHI9Hid3mDA5EQNVVWpl0sEfsjk9DRmxmBtbQc7UbCsHK7dw9SKzMyWiAOPza1bCCDmcBSPbqioiURvOGCyXGE4HNFpdzi6MEGv1eO5l64hEoEQMlZeo14bw3VHWEaeYrFIp7VDs9UkCF2OLt6NiDxUzaIoF7mwfJV3n7qLZzdu090douZlcmoe23YoFmU0VSeOBWECBcti4NhkrDJh3GeiWGJ+cpKXrr9A5HuUayV29/aZG58kY5l0eh6lUhnPG6JKCq3EYSqTpWPkUUKbsWIB27cZuja1WolyNsP1nRaRH6JoKpIi0e+N0A2FcrGE7Tp4SoFPPvciH/2xD5PLZJh0S3z5s59mfnECrTjLiaUKuarM5eu3v+u5M009SwGko4m+l8LYnfk0U6lUKpVKpVJvJ6qqYhgWM9WQaqHKwO7i2EPuWjiB50c0Gx00Wcaxh+TMiNlKBnvYZ2Q7VAyJx84cwQ0c8laGu5fmcEN47MwsjeYeM9MWInGxgwSzkMPKa1TyGq7js7vtEiUyuVyB2eoYgdfi+PEFJuZqKJpBpVSktdnGiyU0NYMWJrzzPfdi5HWCoY+iS3RbDs7Q48zJo7xw4QIvv3KJo8eOcORInXyuQKmgsbPfY2dvhyeffo4jRxaIY0EQxqyublEqFVFUDd8PkAmZqpvMTZcZr9URusYD507x9eeXUTWJh+5Z4O7ZOk88fpapWobx6WOomkG7PeCZZ18gZxjMT80iNIP/67c+w3AE9YlxspaB7wfcuniDkWNDImjYBmdPnsXpWyiqzsxCxPPPP8uv/eYneOnGLdBlxudryLLEqYVxitUx9Oo41tQxzp2+i/vyE9gDn4Ku0YsC8keL0I/Y2x2CIdO70mE76OI2HHo7PtHIR67KXL2xil0WFGY1pmfrJCQEfoJA3Ckf8eoAitfVLOJ1o7RfHW10J/3stVFIvFr/WpDcWXB4ZRAzcgfki1Uef/A+wtAmZxkoqsbO/gEEEq6qomV0iqU8nhvg9Nts3LzNU9+4wH5zQG8w4rlLrzD0bI4emeOBhx5hc/kyt9Y2eOnFV/jiFz5Hp9PnyNwMu12fomUQxIKjczXyRQXLLGCaGQb9LqET0+30qdbLJMKgms/Q7LTI5mt01SFGFLGzvkY9r/Lsc88y2N9BTzzkTJ7d3evstw64ev4VKqUSH3zHOY7NzXH/qRP4QYDvQ6hnuevoXeiaSuLbxJpOIOksLZxAlSW2Dpps7Gxz/tIFgtjlpZtryLLCyvY+hVwJ4Qds7u4T+AHt1oD9To/haMTc1CSaIrG7s4IbONTrdfB92s02lqFyYq4M4ZBCscho0MUeNrDtDokQ6LqGIlSOTFdxbB9EiK4p7PcGkETEScBT37zEhRvrkByOAssXdMolk35/SC5bQxLQbbVJ8NFUhVquznRGZrexT5KEjKKYylKFg6FLLBKUbEJlukwcxSyM1XGdhPl6jbMnTpHLWmgSmGaG7b1tFCCOA0xDIfBk6uUSecugXDDQzBw5s0gYB/T6AzTNIIgjzFDi2u6IoqEjJVlkESELiZXNPTqDAS+trhMGLoaqYmkmhqFSLmsMApevvXyVtahNcdbgHf/R/fzRH3yOQcfh/LPL6JrB2q0Dxo4XiMdjZpemUDX1u54700BR6jX/xzdXKT3yX1N6+BcoPf6LBGH8ZjfpLeGV3/tHb3YTUqlU6i3lB3k2pb+OtIh1KvXWFcVQtgwGvmBpvoQkJ+iWyfr+GqVCDimJycSCmckpTD3PpRvbTExMHgZXJJWL13doDrpcvXWL/UYbETm0Wy6KYbC1K/Gu+xco1UyikUfOyOGOQnRDZWauyGhos77a4rmXlpH0DF958hmunL/J6u0Nbu1sUZkwsLIyuhyRs/J8/Wsv8fL12xTKGp///LPYdo/rl6+zsbnHhz70BI8+fI6VlU1IYr727LPsbm8wUS0wsgNyhoYcezQbIzK6Sr1q0uk4CHE4W+/d95ymVq1z/9134QUx73z8HBIycRTyN554kKXZCTLZHELIyMTsb6+zurLB//sHnyBMQAgdJZaZnT/D4w+cZmqszulTi8xVptl++Rb6WI4vf/NTSDJ85J0/jJyb5L4z9/CTf+vDjFtTjI+Xuba3he+F1I+VOOh0iPyEKPZ5/AM/yg9/4CN85Stfwk8kLt7eYaJYYPL4NKWZIjlbMJQTOgctFCmhXDapmib1B+YJogDfjeise+RLGqHtU5wosb3RBCCJ4zsznSUQ3ylknSR8+594LQh0OHBIfHuE0Z1gUiJeDSB9e5TRnZrXyELQ7bTQNZnjR2dYWDpFJkqIg4SZmVnqmRpxLLM0P8nUZJaTx4+w22xxdfkqx+cXWJia4CNPfIC7j52g1+1y4cKzDLoNVnfW6Yx6fPBDH2FxqsD2zhrlSpn+oI8qyWzu9nnl2i6O3eTk3Dj9ocPQbvGOc3ezcvkK5UIW1VcIo4ix8ToPjR9H01XWN9fRShMs3nUfQ8/m9z/3eXb2V2k12vz9H/sR3vvow+QNjSe/8RLLy1d48stPMWwdcHK8wERZZ9Qd8MRj7+Kxe88xGrbJqoJet4FQJLKGRm/UZ3bMQhEKtu0wcG3CSCJbMLi8so4iS4SRjGFAztTIGgbbO23GKxXWmx7tjsOLV24Qhx7eyMbQFHZ2uyQipmBFJElMIZvHD2M0XTusKaXArc02OVNnYAeomkrO0tEMjb39LlEUYVp5CkWLsUqW2alZDKWApoLvjsjlihz09sjoeU4cOYaRLbHS6lGydGInYMLQ6LSHvHLlJqO9ITnFQj7wqWRNauUSCxM51nd32d/botluIWezZDIZ8maGQa+DH7jsHOzT6w8IE5m9gzZjpTlIFA5aDbzQIaMo+LaD57gUDYtIhMSRT8vpcXljh87QY2luCsIITdWRFItyWSWvF5nO1+k0fcJ+guf6NG92ePap83zxk8/zoz96jgvPXmV25ij3nT3Nj/zNd/LkJ7/FRLHAT//YPyTwvvtgiDRQlAKg9O5f4pd/4X89vKNb4NnUH/mHuH6acjVeMIDD1LxUKpX6D1XpwY+9dnv9/VQqlXorc1wbK5tlGMhsbg+olE0IPUpGliRJyJVrtOMQ27aRPZdKNY8zGFGo1FnZbeL7NvOTNXRDIxEJQ0/loNtBk0IWFi0uXdmg32jzravXuXlrCySVRtfGHgYUCjkkAfefmsaXY4rlCotLCzh+RHdvn1cu32RntUl7aCPkhPe+92HO3r3E1vYIkcQcX5hDMhW+9PRXWV65zcF+n6xlkrWyfOgD7wZNJxAyk+NjCFXQ79lUallqEzVkJcfMbAXfc8hmTSbGJ1g6dgQrZzI5WaNUKlGoFKkX8mR0kziOkeKQMPJx7S7usMvvf+JTWGYGVYJ3PHKOn/7xD3L3XcfQs3PML1QY7Dh85annqIzVyBaLPHr/h7i2fIutvT1838d2PM6/co1TZ9/BzMw8ckantJCnFhSZOT7G3/25X+QTT17iZ37+FxhsrfFb/88fcOGVyzQaTeYLNRorDSqWhpUoaLqMMV/ADz38TIDt+jwil6gsFpENhal7x3DcgJmTZey9ATPnKhTLeXw3wnWCw+QAAfDtUhuHE9TcWfzqL4JvR4U4DLK9loAmIEniw5nKkgRNkjh15Di6pLK1v8vnvvBVvv78Ba5cW+bprz7L6q1buK6NPbIZrxQRQuNd730PExMTZM0Sl27cZGdnj2+9cBF0g5X1dTqdPrI4nNrd1HQuvvA8jW4f1wuxBx0aB9vY/Rbdfps4srGyFZ5fXufYiVNY2QJf+NqLHFs6xuLkFDldMD05w6f/7M9QcnVC2SIUJr/3B7/L157+EjdWt5kZq7FYLzA1Pk6xlOeh06eIhEE5q5O1KmQyBkomz5XdFgftEfmSge8G3Fxb5bF7T9M42GVhZonBcMRo1CNv5Wn2PEajISHQ7bv0ej1iz0NVdFzPJZ9VaXVHJIlEsZKnVClwfW2bkWOzMF0kn1HYbw4xrRztzoim4zHo9xl1RxyZnWJvbxeFEcX8NIszs2jG4Yx0OdNiql6h2x2yd9BmZW0HJMHS0XGq9RKGZiCpGpZV4KF7T3PvidPIsoI9ajJWmcHxY3ZbTcbrZe4+Nk29No2uxmy2u4T9ALmikNFkdBnaIx/X81ne3KVcXyCbr2EYOSq5PFIk0+90cXyPuZkZsrkcL12+hJ438VyfjGKi6iqj0EZoCmcWjmDHglAo2E5EGCWUVYPmaERMAomEaWQQQmG2NompaTQbO4wORhyMdpkcK4GQqBTyqDLoqsbOTh9il6c+c5FSQUYvuswvTXHh2TVOnjnH5dXbNPZuIsnffURRWqPoberfZz2h0vv/Cdg92s//yz/3N791q8XEY/8IMjk6X/uVfy/bejtS5MN9cmt/xNHx7JvcmlQqlXrjfbfp318fLEpH1aRSqbcmQaaQZefGCnPT4zR7CjM5i34Ew/6AnjPi9JE5WgMX3zDot9qMleoEwz6aGrPb6uF4DiQC08hRrZWIfJe1A5tyXiFSNHrdAZX6GLIiY2gqsS5z17EKV69vM7BH2F4eu+1z96ljRHFIz+5zfHGS7fUDEknm4KBB5OXZazSolic4cqTG/Lvv40/+9GnKlXFOnDrB+maf6bEy/WHI0cU5VEXmXY89gm5o2I7D1Zu3WTy+gEgSPNthYNsMhmDoOn7YopDLU62M4fk+nfYBmqrzjQtbPP7YKVzPJRh6KLpKYPvkc3n+xb/6DeKsxGy9yNTkPJ998jx/+oWvUqyU+Nn//OdQVJl2pYu0/gIz82OYmeO0my1yashXnv4UeqhAxeSjP/SfsryyRsaa44n7nuCVFy5QKsqcu+/vUipU+Nh/+4+Zrmjcd89R1raGzL+3zItfXCNOVCZqNUxZsKF06G20MIsaG3s2c0s57NaQ567e5v9j773DLDvvOs/PyeHec3OonLq7OlQHqYNaWZYs2YAl24BtjEnDPjMsyzrsArMPhll2YAGv8ZIZMM/Y48FgPIY1YzmMI0qWWllqdY5VXbluzveefPaP7paxscE2So9Un+ep6qq6fe99T53zvG+93/P9fX+h6ZLKG5TOV1BkkWe+sIhhyPRqLv1eQBQGSIpIv+tixtVvWIG4kixxRUAS+IYiFF35dNlpdDnb6BtXk0AUhcT0OClNZySVpl7ZoGN79OwBw7ks/UglZmqcP7fEZ79yH7/7O79FRECt1sfxI547eZy91xyiUV7i7OIqgm/zWK0BGZ34APpOxPTMVu6+8y4efexhWj4EQL4wwvD4JEvz53HDgJmJKTaqdbxek1On6owWMgiyRCyVp9cfEGop1lcWMawYTz31MN1umz1zB/nRrXdwaqWCZWmsLJxh58wU5y6t80cf+0t+5I43UswXaTbaxOIpRElEljTWGhvois76SputEwFO1OHo+Ys4SDx+4iiWKCBGEcXiEF6nQ71XQ1bjiJGPokis19sIgCSKjKRi1NUkqbRCo+UhyRHeIERXY5xdqqFpCtsmRzg7vwhA4HrkijmqzQGhUAdFp1LrMTw6IPAl4prBIBKoNpp0bBdFlHHsAIGIWNygUR+gqx65bJxa08XQBc4tLCOpOrm0iSaaLCwvkowbJOIpokGPpa6Nqmo4gs9yeYVkLkZ30KXbDJDdAAGfgztnWWsOqDabSJLARm0NSZTIZvJY6SSF2BjJVJyvPXGEQb/PsKHSYkC3HdD2ugz6HplUivPdLjFZoN1soikGoqKixRQG1T6O6xFL6YheF820OLexRiCKOJ7Diu9weM8+2r0ObhhiqibTEznUIKDt2dh+h7Hr82SKRRrrTWZmx+lrHkQRa+salWr/n505Nx1Fr3HyP/GX0CpRfeyP/4nwdP2WDAzPwqDDf3ni0sszwFcAgiCAKHHd237z5R7KJptsssnLxrcTgjbFoU022eSVThgGlEtNEpbBSDGPJUf07YB6Z0DH80nEVNYrAwRRY+D5+EGIbgj0XZtCYRhDU1AUDRGBSqOHEU8wnBtiJJ2k2qhRyBgMgohzC8ucvDhPo9skY+pUGw12bR/j5r07aHUH7JmdoNFsIEc+adPimaOX0K0Y/d6APbtmmRgd4sZr95LMqKyvtfjq/c+wZXqC6ekhVEnhumu3sWV2FkmWuXCpzHrNZmmtjuf7dFpNfuLH3gShQL/n4HgB1XKNbDZFtzdgqJAnCAYoikoYRBhmHFEUaXcGaLKI5/ssra/TbPXRDYV2p46tehiEyKmtxPNjGJrLnXe/k1qpQnnjNJX1p3EHVW44fA+WOUu73cXQRB4//nWyiSKxhMpPvfWnyKTTTE+M0e/22LfnEI7bozsQUcsnCEOfQjbJiQslfujut6MpbfZq1/MTd/wAA89maGQUX4BrZyfIbIlh5AziGQUzG8NEotxso0kSgeORnYgjJFViORUtozA2lyU5rJLMWMiSgu9EOLZ/WRS64iQCgUgQviEERcKVCgLhG//vsjR0uT0aEWEQoYoGO8aneefbfojleh1Z1WjUqrSCHlaqQFyQcAceg06DopXi81/4Ap7nQhTylQeeYfvUJBfOHuPpEyfoGG08L0Ab0knPJgmKOg4uW6ZnOHPpKaanEjQ2SnSaFWzPo1lt4XkBBBF2EDCeiGHFEmxU1hgvDpOwdDaWLrLeWODxo4/j9FuMDOXZu32WqbFJYqrCctUmJkiszp/HMjRWyn0iQyZfKHDi3FmmRiYYyaYoZDJ4oU4mJjGaHmLQ6lNIJzl+5gK9jsPpc4vEEzF2TU9iWEm2T21nNJkmkCRsJyCZjCFEPu2+ja6pqFHE+FCeSI6Riin4AxtVAjWCyakUpiqQT5qkLJNOp8+dNx4gDDxcx6XT7DA6VGTXzDT5ZIJCPsHq6jK1nkdMt1BlkS1jRQrpBEEokMwkyOYTRIJMzDSJJbMISpKx8QKddpco9MmYKiPJDAPfwUqmQY1RaVYQFIVsOsWZpXXWpQ7qWJxup4eumeiWjBFPs29mK0+evogz6BGKPhu1BkPFYSRRJZmwMBWZjuMgGnEUXUPXNGJWipRVIJ6M0em3sLQAU5YQpIh+NKCHj6xLKARUN0r4gogkq0zEk0h6nK7jE4YRoR8wWsgzMjTJxeU1Bn7ISHEEQpu4bjLwXQzD4F0/fiMHtm6jYFmMTI6QScUZLeRJyhbpuE69dpyYaXzHuXPTUfQyEEVXbIzCy9vi+vxGF//ck/zBn/0y0j8Ks46iCD+IUGSRxmffix+E5K9/L7+kGjQe+dDLNt6Xk+z1t1N77P6XexibbLLJJi85/1J52VWxaNNZtMkmm7wSURSZlBXD0tKsbNSJJBVXlEhZBqVaE/QYjXaZodgUw1mT05UKjZbD5PA4Zy/No6satuszPTpEqVShV20gmjq2GzAzOsHy+goxU0dRFCw1zvJaHTyJg/t38cTRM/QHXWKmyqXlVUaHkpw7e5Z2z8UwVObnVyHyOHvBYWB7ZHNpAlFkz85p2m6bQa1NIWkysWWOcsPBGXSIxzL4EUiiBlKcRsPB9QVWVpZIJpIMj45w8dIl9uydRVVjWJZF6LvE4yn6roCgxEjqGp3+gH5/wPJ6iUzSot/vosoGfcvk3q89RF5P4wQut1w3xpceWGVs9lZiMZPR6RwDu4cTDGh0y1y7dz/zy13uvPkQf/3Jj2OYKsogYHrmAH1bpNNZZ/74UWzfYUEQ+Ln3vJ9nHvsqVi7F8WfuJTO1lx3b53jHz7yX9//6L3N45xxL1R5/8icf5c/+398krsd59twlJmN5LnklnGZIdalDZjxF1nPRRB2hajMymeBS3MXv2ww2uiwcLTG0LYnYTaIT4Poh683KN5WShVcSioR/HEv0fHS18Py3z+cWhRFzM7OkYjHmdkzy2KNnaDVabJneRrtR4eC23ayur1FMZ9DMJIamEgk+Z08u0en0kGWZarPFycE6keMxsmecAI9BPGAkto9La0+T9gQGjsORJx/kLW88yFpTZ7SQo5DNc3Z+gdxoEVNX0UwTTZRY7zgM5XKMHdzCSqvF4uoi1tYZvK7PPbfeQi5jkU5ZLK9XWSnXKYyNsLpwFjOVJKVtwcFFkwKOnVmlWqsxevAQjtfjwNw2Hn7mBG6nRTlQaPRbSJqIjEJMixGLxXFth5FMBtcOqLfbpBNp7G6PQsIikcjRbq5h+yGGoeP2+ngBXFhcZffMGJdWq2iKhGGoLFRKXFwLGS8UiMdlNkoNxESRk/NrhEqc8fEM6VSK+YsnePbkKTw/IJWy2LmlQGcwIAhC/ECg0x8QhT6iAOlUin7fQRY72I6HLDpEzoCYkKZUr6HIIeulMsVcGnyf0A+RBEgkc5QbbbboaUbyaTqtLqoqEKQiqqfqJAs6USrAJmDb1mHcXsSg7TK7dZZ2bY10KobT6yDJIkMTOzh58hg4DnFVxeuWSCVG6XoaU8UhbMfBdTza3oDA8ynEkyiajN2z0XUdOxQQZejYHkEk4IUhJafGzVvnOHlxhfqgSm4iSatdx9JVoijJIOhQ7zZJyXEWV3psnc2yWq5RrtYYtvLsHp1m3m1x35cf5757H8Xu+99x7tx0FL3ERFFEGEEYRQRhdFkV/DYfL3YeThRFXHfPr4CZ5N8cmvqWx0CRv3FpyJLIsS/9LrgD0rf92os6rlcq//6d+yDaDPfeZJNNXlt8L+LPtwpGr0Vey8e+ySavVHw/IGXEsaw4+VSCvh0iISKrEjHTxLTSjA8XIRiwsFLG0mMYikKz0yefzCDLOr7v02g16dkDFtYWqHX7eAOXZqNBJp0iHs/S7tv0XYe4ppLLxLE9B1MTEaWQCwurrKzXuLRaoetKGGYSQ02RSRpsnZkgV0iSslKUK00UVeC5U6cpbdTY6Hsgati2x0ghQzKZQpAEREHAdm1ipkajH1DvSqSzW4hZowz6LqlUnoVLZZqtHqqq0u21aNVXkKMBpiZjewGSJLF1ZoIokDk9P0+/P0AxUsRjMUbTkyAlWVoq8ZnPHiH0QzRNwZCqRE5ArbRKveWTTGR57swir7t+PxulDTKWiInClx54hL/4609Q+MwXePTI57i4eoonj5/g1sO7mF9cY3rHdUSWwUapy4Q4oNfv8sTXPsZd19+EoNgc3DlJIZ/C9WzkmI4oyZQNj24/Qi8qDHoeF45tsHauTVQd4Hk+Na/PhGHg9wakh+NkJyy8dkCjv4EdhAgIOH2fMIiuhFl/owPalb5o33zhXBGHLt/gj4iCiHwyzc/+2D08d+YcX/zKI1S7bXbtnqPZdxA0C03WiWk6bhiQsSyQJZq9Hpqq4DgOxXwRXVO57dYfQhnTSGbH2D8+xZ//+n+l50WIns5kbphsQsNzAmRBpry8Tio9gt1rMTxWYP7sGVzXY3R0EkuTSGUSLK8vc+rBYzjdMm+88Ub27tjGgb27mV9epNEa0G0PuLiwRCZucvr4UdqNLroZo4fIwuo6X37iWZqNKp1en2eee5qHHnmQrzzyMIXhCUIxxLZterZPNpWj2WmTTKcJXAcIKKbzBFEEgkyrUUNUJUqtLk6vw437dlLIFMjELSJZQZJMEqbO8QtLBJKIT0C5sYqVzBI3TRrtGmcurhFICi2/Sz5b4Pr9B0BQsN0ug8DHcV00XSVu6ChqFgmJUqOHH4is1jo0Oz0mxyap18tkUxZx0ySXTJGIm3iOy+J6hZhhEUY6RAJhKNIPZVYqJfqDAQo+shjgBSGFZIbJfBLLU5lOjjK0tUhKSqB0JTQtjhQq1DpNRofGSAoh+bnWbgAAIABJREFUrXaHQFJYLpfo9LoMek1ETSceSzEAyoOASrOKHXbpeQ6NXp9tW5Jk4jq5RIxKo4UYCdieTdIySOgwnrKotwbY3gBTFhANmSPzp/AFn06rixtz8SIYOOC6PUIMJEXirjv2cPzYAp7XJ2Eq7JuZ5t57v8z8xTUcb5lKqUTohfxjifRbEV7JAb0HDhyMHnn8qZd7GC8oV4Wi6IpQ5AcRPTeg1nE4XWvzwXvP0m7b+J7PB372AG+eG0EWhW9qX3/1nH2/bqQwjMgefg8IAo0n/uR7GnvmuvcAr707xlddVd+a47TJJi8nhiI8HUXRwZd7HC8nr8Z14pXC9+sQeq06i16rx73JK5vNdQIyqUR0x037MVNZKmsVRiYnWFm4QMzUODs/j6FrpASBcrdPq+8QSxgkYnEsw6DTdal1GmiqQDJmEQkRzZZNKpUmrUv07QDDMnCCiPWNVSTfp9LtMT02xE2HdtPp2ljpHN1Wl3wxSbncJ5lU6Pf7xJMpnjt2CU0NGB5KUq83GCnk6LshybRGpx+wtlZh385ppndex+NPnWPfri0IokS52sBxXPwwJBmP4fkBoiQQhhGqIlNrtLEdl35vgKoqTI0VScZl0qkEQXhZNBEVnX+4/1HGiibnzl+g224yPXsNe2eHCcOIZ04f59rdW/ntD32MvddOI5VDyrUmWipiZGyCwtQUrbbC33ziY6QSBnvmJrnp+jv46v2PsGNuL+fPnmNq0sATBHxbZ3TCRJAEknKajp+k1+szU4wjWUW+/Nm/olyrYOgCa/UZAvsEY8PDJEyf/Qf2M790kaefO0+TLqIb4jkumq7gNwPCKCJmmhhaQCf0UbMJukt1UkWDsBsiegZzO3fyzLHjtOw+EQFaTOFqqPXlgOoIQbxcXXZll/V8OVoURQghvPGGmxgZGmdlY5W19RojuQyeaHHu4gmCQGD3lhki2cD3AyBiNCny3LklDu/ewWK5TM/x+el/9z+ztF5hdmaSrzxwhI/8pz/mHe98J71uj+EMPH7kKQxFQtENdENncnuRpaVlqisOrU6D0cntpHNJLpw5i+d1cAOJrGUiSQr1dofrds+RthRWKy16/Q7ZdJp0XGdyYpLHnjtPrVojcGxSVgI38ug5Ll4oEpOh3vMwZQlEMBJpSuuLTI9PEosnee7kMXKZNKuVGjsnhinVWwwXc6ytlnEDB02No5hxVpbOMzk5TadVZzSXolxtkCtMcGHxEoIso8gSnXYNy0pSLq+iGnF8PyRuqGhmkmqtxMzYOD3HZb28hqAqhA70+x2EKMKMGchSiBHL4w0qiKJJq9OmWMxSrtaw+z6aJjMztRU5FOgFHkroIEk6uqZRa3cwJRHNMHACB0vXWN7YQI/FcR2HMIrIJpOEIUzkipxbXsI04qiRR8sLSSgyHa9PNpWn3+vQ8xwMI8be6RkutKosXLzExOgorW6FnWOTrJTbEAUsVBZJ6AlkScL3HRJGjFqrwfapUdZqXRwxJOw7jGQKlFoNYpqOM+iTTOWR7RYbfRdDFtF0la5s0yvbDGcyNHs2A7tPIZel6wYU4wkW10vImoTnNRm4IVbC4J1vv50oNHFcj16/x8c/+SXcgUcURhhGinaj+m03t5uOopcBARAFAVkSMVSJXFxldtjizXMjfP39t/P5X76NZMrk5z7wFYrv/AjFn/44zy02CcNvBK/9a8SK7PXvBUGgfOSPvrdxCwL1K8JS+tC7X1NdwK6W5i3+C6Ffm2yyySavBv41osdr1Vm0KRBtsskrE0GA8eEC586dp+92kSWQVYVyz8bxPbr9AU4QYioqkhJRSA0xks/T9yJs30YRRMRIxnNDPEfA0FWGcnnankwUCRiCjCEF6LpOLJZmJGtRqjU48sxpQgF27Zji8E0HEWWRmCUjSwpzc9MMD+V414/fzVDGZG21QcpKMb+4zsLSCguXanQaTXbPTbBSrlFeWqbR7HLqwjJRFKKoCgPXp9sbUKk3SSc0YorNaMGkkFaJiS7T40UKhQy6oTG/ssFDT5zjyFMXUI0UvhCytlZi/76tGJpOIZdFMmIcO/0M5WqDRNzi2u07+PAnP8Xr77wBXTOI6QKFfIpYJokQixg4cf7H5+5FEEI0RSZXyLLa67Jz9z7i8Rinjs0TyjKarlEoKrTbA2a3X4csDpOI+8RiJpeqA4azJsVCkZyVxu7qvPPtB9l34HqeO3qMWl9FUWHIsiAtYJo6vZZN5El4PY/8ZBKzKKFJAmulHt2ag1Nuk5+wcFoBruqhmzKtWhUhLuP7PooiXN5MRcI3XySR8LxIBFxJugYCePudtxM3TEI1jihbzG3ZzrmlJRbmTyJJMl5gUy4to6siquiS0EKWKk0mhrJoFuzdNc21u7bS63ZJJsCKa6zUn+WRxx7jf333e7n1jtfT6JSJWSZeCKoo0uh2sDSVlaU6W2amiVk5REli4DgEzoAoMti/axs/+LrbuPuOm/mZt/8wZxfmqdRqCFHIaDHP4b2zmKrC33/hK0iRgyirxFNpkpaBj4Gqp9g6PoWuGoyPjpJOpVAlCUkQMBIZrHiMjbV5hnIpBEWlkMkgSCq27VEutxjLZomZFjMjGfxOg6niCK3aGrqZptyX6TkOlXqF6/duJxMzGAx6pJIpuoM+yWSOTDLF9ORWcpksgtdjemKUjhPQaNdpNbvgRUSRT3EoSyxlQeQDIo7bJfCg73SJmQaVSgsRBV2TiYIQIYqIWxb5RJyYEWN8YgxNV9m1dSvDw0O0OjUIJERRJZlI0m63GcoUyFpxuu0+IhEXFy+QShiEBISSTMpKYMQ0JEmm59hYVoogCpCikBOLS6wtruEM2pw/fxZVjtMbOHh+gOfZqJGKahoIsogkyxCJaFoCTTVAk9B8UGSJqVyctG6iBD6iaNDtdHAEnbgVZ3hohCiE+loXQYhY2CjR7fYYzmUpJJPkklm6nYip4TRBJAAyqqLTbnf55Kce5K/++vOsX7zE2uIKek5DtVQECcaGi99x7tzMKHqJuJpLdNXmKAiXxaJv5vL3W4pxnvqPdwHg+SHv/+JZXvc/XRZ1rnvrnXzhF25A/FZ75HdJ+vZfB6D++D8Nr/5uEASBxpN/SvrQu8lc9x5qj//JN7mdXq1c/V1d+6O/9ZruALfJJpu8dvjXCB9X14n0oXdvCiibbLLJy0oYhtz32HFSCYVBf4BOn063i0BEJl0kAnRNpVKpEDez9JwBMUciZ6jU6jbj41M0GxtEgkLWMjm4d46//9LXsEwLw7JwPJvWYIDrRMiGi+2AKkk0O30826ZarZPO5jl27DxzO2ZYXV9grVLi0194iD/70PvZufdaZmrLOETYgcOQqnLs5AJ7r9nBc8/OE4/F8f0+NxzcwakLKyytVYiiy06YfXPb+B/3f4pT5xuoWozRzAgBPpIosVKfR1cNMnqCXNZEm5phvdLmgSNPoyoqRkzHrDfIj+Q4Pz8gn8xQb9Sotm3GfRdJ0fjpH3wbXz92FMGXSGwv0FtpsGPHBLI8wYPPPkzbLiMqkM0nOH38PMMtj+3br+Hocyf45N/8F/78z3+Pqe1xEEROLbT5zH/4EPfcvQtHkDFElcnxG3j4qdPs3L0freNz3aEZFtafZW7nNRDBwblJLp17jhP1VWbjQzQmQpyOi6BImCYIPiRyOnJgklI8QiFiZCJDfKDSGB9gZGTumriW+55ZZWpsGjXjsn6qgyoKSJJEBM9nFkVXHEYR0eW0iUhAFVX27pjl/KUqe+e2sbF0irVSC21iBkNPksnkWVm9xNbJbTzyxIM8deYMAIau43rO5X3fIwKCKBBFAr+USiAnxlhafopcLMWDj3yV19/6RnbPzfH3H12mN4CEZbBUKlPIDnF+EabGZml2e+RSJt3qOolslut37UUyFHIplUa9hmEoeH7IUMbi8efOsn9uhkePXmK93uXUmRMk0gVWN6qYMYtOt4sumdiej4RAIZGg0+vSbLfZNlygZcZZraxTsFJEgoygWOycnWV1dYVOCBIhE+kUG+0mDUclFjNBiuMJFQxJYm7nHi6urcMVEafWqvPw0QY7t2zHCSMMVUGUFPqDPqoRY2V9gVqzTeB43LFjiqNffYT9h26g2eigKwq+ENJttfECkUIuR7laJR/L4IgxnF6DTHYEMQxQFY1qu0W3WWVlY4n8nsOslToIgUv7wgVGhos8dfw4++d2ENcMBDGkUm8gKxKZdJrA9wlCiASRvi9gRwpaKGMoIaKmIQURq806w6ksuhnDHvR4w0038eTJ40SCwGShwJrkoas6YiSgmjE6ywvYgsTMxAjNdgc/BN/zKXsVBFek01AxUagHNkIAS+U2XmAjiSq6aZKJSZy5tEYiZrDYXaKvBDSaXVAiEoKGnE4gSDILK2tEiKiSTKUhMpSxOHOhhBdFRIHHXTftQEcgM1pAMjSOVlYwkybF7DCrR+e/49y56Sh6ibhqbbwqEn23Io0ii3zo7h0sfv5Xed//8U6euPc+xv/tJ3H97z0v5xf+v+PQrbP+yB/+q8unGk/+KUgy2cPvoe985xCsVxWCAHb35R7FJptsssmLygvlBHqtOos22WSTVxa2F+CGDotrVezA58TZBfq1GiMTW4ipAgIObTfADWWSpg6SiO/6lFtNRgtZ3H4fzwdFUig3e5y8uIaoSkimSFZXcJ2AMAyYGskjayZ+qGCYOgQhp+dX6TQbVEoVbrvlIOOTRd58z1vZs2snkiTxmc89hAA8N7/BQ0+eZWOjxMpalWv3bMHp9ckXCtiezdPHjtFYv8jWqVG6vQGCKLBrywgnTj0IYchocZS4maTrdAEBx7UxDAM3dDm5usBqaQNCl4VLa+iahm07NOpthmdnMQ0Dy5TQNDiwc5byxjrn5xcJAh/NUHjD4cPccHgOSY5z2837OXTwDdTbferBBslxC8VQ2DI6Qrc7IJud5lOf+hyHD+7nN/6f99EY9ElYObr1Lm976zv4wn//DKn4FMVkCi/ocHDPDIl4jMX1Nre87R3kp7YznNzOJ+/9M2anZ+g2lwhkBbXjMTW3hb25UQrT42xJJ5jKZAhlGb1jgBmQHDJJJONsk4c4cXqJdJDCbw9QVQPZ69DaKDGhbCeKIHAiojC8fAc/umIwQiCMIpyBj9N3Cb2IG/btYWVxmS3TY1yYv0gkiAzsNr1Bk71zu0loEr6g8vDjD1yutBBAFAVczwFAFC/v+URBRBQjTh49Tr9nX+6cZmR56tyTBAF8+t4v8ezZRZwoQlbjGGaKerdLtb7GWmkdSVPZtmUaLwrwIoGy28YfdHEDD8/u0my08X2XMIpo9XqoRhw38KiW14mlCszO7sSLBJwwZGximnhqhGJ+hF1bt5AuaNxw7RyH9u4ilBQy2QIpK4Xt9BjYNrVWDyFyCZFw7R4REUOjOaxYHDUMadQaWDEDy0qhW2lKlRrdZoMQgXh6mGw6haWJDBwXTdLQVZktM+MgwsbqKv2+jakoTM7Mktck9u09QMEMkcSQVMLEC0JMM41lxqjWauRzQ3iez5YdM+wanUIOXUIRBEHE811i8Rg7xie5cPY4uUScQRAyks/QalSZGhvDt3sIgkbbsWnaXcbyQxzaug1BMxjKDzMzkkOMXPxggEgPxwvxbJ+O3aAQT9JxXbK6xdLaGo88dZwwEvGdgI1aCUmJkzLijOcLLJdLDGwfdeCBENDudljZKGNldfbO7OF1B65ltWnT6DSxRImpoSHSVpJ8wiJwbUKnxeJahe3jQ4RCgI9MTjMY2T9EYjiFp4YYioggaUgpk2w2hhmLMTqiQyihGzqe4yNLKjvntjCza5Zbbj6M7Aq86/a7+MlD1zAuZjG12HecOzczil5Cvt9sIc8PkSXhssodRWTu/n3oVJm9604e/bU7vitHz8ANGLnpfcy++Yd5/P98/fc1/m8lffcfQHn+8uwqyTQe+8MX5HVfqeR/8i/xzz75suUUXe1G9/DFKj/yK5+G+srlgG0zxc+/9y38xhtmUeVN7fe1xGb2xKtvnXi5eTFydl5L2T2vlGP9TuLcyz2uTV56NtcJ0HU1uvv2a7i4UiWKJATPZ8v4OJLoU+l4pFJxTl24gO+J3HD9PjZWV/FtUDWFUPDwXI92r8ePv+U2PvKpr2KqGrZvMzpeBE8hcAZYKQsCH1GSaXR69LptGp02e2anGPge18ztwPd95nbPUcjlGNgOK+tlHn36FLfffIBGu83GygKnzy4TTxqEbkS122K0OEog2hSzQ0SRyMzICPOVkPWNowj+gGxuFEWTcd0AN/CJGTKNdgtNVi+XuEghRDKGrPLMczV+7O6DXJhfQ1EsOp7I+kaZBx/8Em+55wc5sHWEEIFz80sEEeTTFtceuIZ+r0O50uD00hn2bjvMYqWP43ZJGE0+d98DVFdqXL/7Wi7MrxIqgO/R7DWRQoW9N+1m967t/Mw7foljZxf4m0/8FUce+io//tP/loh5br7uzVTrPZrtDqVyDVkUiEktlhbPs2v7Fr583xGkUONN99zMr/7HP+b1rz/ANXt2cvS5s/R7PjIe27fNcKkyz7gxxFA+yf2XnsETe4QljX1TWzASSU4eP4sg6Gw0Wugxi/mls3hRiKorhGF0Jd8pRBQEsnqMZKbA/j3bKTVaDGyX2to6+3Zfw1e//gC2O8DzfVKJNDfv283nHvr6lSvtakC2eMWidMWhdNUsIApYms4HPvhhnjh2ine99U4++OEPMJfL8Ym/u4/GoE4+VeD2w3tQJI1AVUAMUC2R8xdXOPrwSUYndvEjt2zBERT67S5G3OL+R59gz9ZxAkHn8ROnEUIIIptE3MSMpahV+2zfNsXcWAEvjPANi+GJLfTrTUTTJBAFOu0uuWwWSRJQZYEnH36UQkZF8X1OnTnHtl07ePDocUatOO1GGzWepN5s0ekPmB4fY3lpnqFMhlAU2aiUabS6JHWZmZmtrNeaDPpdXLdPtd0hCF0MPcXoxBjVSplWq8XY6BidbodyaQMjHifyXZKpHGnLpG97yKpJu1UFQFN1nEETK5bFEF3SxXEWl+aRJZm27TA2NENcaGKYCdZqPQbugG3FLKuVJm5gI8s6HaeHpmqICCStNEnTIJR0VjbWSBkqLddFFUJsRPIJnUGnSyKWpFEv03UDev02niQgGzJBL2L7xDjrzVV0EozObKezvsrF5joxJaIXiaTjFo4b4XQ7BF7A1pExluolRgspziyuMjk0hd3pYFoKriuTS6l4YUi70aDrhniBT6vv4AUeCpDQNWbHiiw3+mSsOK7dY3RoilMXl0hYIo4Dntdno1qh7wUgXC6r/OBvvZeJ4SG+fuQZfv7dH+SL9z/Ah//gtzl16vRmRtHLzfeTLRSE0Tc5kARBoP75X2Tilts49+Uvk/2xj3xXWUEjN70PUkMvmEj0to8+AaWLkCwibTsIgU/68PtekNd+pXLxP78LAMd7abuftfoe6bf+JzLX/28UbnwfP/JT/zesnwXfvfzRLvPh3/wwxZt/kfQNv8jYv/tvr6n8qE022eSF4cUUib71601eHK6W+/1Lj2+ei01eS8iiSKfvY8QSKIaBqRsEokgQRJimScLQKeZz7Nw6TUpTidAZTlmcW1mFUKLaHrB76xQPPHaJOw5tZ3K0QCad4/z5JQQE+oGNoirocYuBDZlYkp53uY+WCFSbPRJpFT+KWCnV+fOP/Xfi8QSpRIx3/PCdiGLE9pkZOh2J7TOjxGWN4mSCQ3OzdFsua2t9uvU6qgRBEBEIAvVmmVg8R8/tEQURBCFiFFHvtFAUBU3XUWWVKAQxlBgMDMRQolEvk07ESMUFzHDAQ/d9jngshudrqFYSgYihYo5UMs6ZxRa1aoso8JEklbiU5VKpy503H+Bv//YjHDn5JJERsGVmlnq7y9RYnomhrWyb3sbW8W0k4ha+40CYx/U99u2Y4k1vegtvf9c76fY7SOJ2bFeg0eogSxJTk2NIikIoZjHVAoOeS6fd57bbr+MjH7+XGw5fzz987RkC30MUdLqdLqDQ6DR56vgFosjmzHyNg1OzvHnudrZNbGGl2md+ucbkzCQ7dmwhb6WQgXQ8SzpZoN9ziMIQd+BBEDLoBtz6urcgKwqPP3aU5QsLVNbKzEyOIwkuo8UiQXh5493qNPncQw8jClcrRwQk4bJIJMDVEhJEUUC60qmuZzsomsLhfWn8IGTcSPD7f/Hf6MU6iGrI3TdsJZ+3WPWqtNtN1ls1Hjt6hp6r8PO/8D5cu8ZjJ88iCgIDx+bs+fPYvsenvnIfn/nKVxkvZOjaLp4dIEsmqiyxa/s01++ZYuTaGynsug4tWaTa7NIVRBw/JAgFLi4s43kevb7NRrXNzO49jO26Hi8eY891czx85OtkExYd22O8OETKTJCykhhmjKRu4vk9Fqtl1qsNpgtZdm4ZQ1F0SkuX6LZrlGoVet5l593Nh29jbHiEtdVV7EGfdGaIwO+T1Ey2T89iyCKJWBp/4NHrdkjoKq3yMqasMJpJQeiDpJJJ6DhBQLtaJZ8rIBgJ4macZreKLWlUuwMMwySu6bR8h9HRLHOTM3i+h6oYyIJCKhbj7OI8fbuBSx/f8ejZHYJBl2Q8QTDoowUynuOjizYtp0/Hc9FSCWw8wihgcmiE40uLbGz0GBlJ0doo0cMlCkNCRaddbdFrtNGlkGq9xd6tQ+i6gOdJ6KoBbkipVqHWbxO5AoYS4dguy2sbXDc7g6SpRKKCHtdBgr5vEzdVKq0+OUPBcT0WGy3Or67QtFt0uwMyukK92yGVjBOJIsGVnOOvfvkR/vgjf0fPmuJDn/hTdkzEcF33O86dm46il4ggjJ6fSL7X50nfxjEURRHtgc/UPb8DTo/1+z+Arkjf9jXSh979PXc4++dwvIChG9/Hkc/8DjtHE9/8PvCq7gyWPvRusLI07vuNF+09oijiV794lg//5och8C8vNJJC8pobeeS338RQSr9SS83z/4ZhRKntcPAXP41z4Rh4DtrOQ2z815980ca5ycvP5p3iV9c68XLyUjmJXimOmxeTlyqX6ft1DX3r817N52KTzXUCwIoZ0fbJEdSYQb3dIZvKMDaS4cT5FYr5JF7Ppdxq85M/+kbK5XWOX1xn5VKJw3t3UatV0A2deMZiamyII489x4mLF9gyNYLmS5QbLQ7tnePsyiICEpP5IivlCrlsgtX1CqLgYyUTWIaFlTDYu38fVjJGKpEkFGQ6rsbJkxdwu02C7uWW85ougOiyXq6TTyTJpzNc8utYtoIrDdMeHKfda3HD3lsp1ZbJWFnswEYSBFYbZYYTYwzcPoapEkUgBvD0sTpv+4E9DOwOPbtPXE7wkb//W5y+zN5tO8lP7UQAbrx2B+36Ev1en6HREdLZHEEoE9gtjs63OHzoGn7r//pV9lsypSELoa+yZ9sovpzkzNkSvcE6MUUgn8zjiTAxUeATn/4HPvAr7+FoJaRbW2dh4xHUyOCu295Js9llenqMrz9xL7IAUSiQTe+l2+2RV32a7Sp6UuEzX/wSt17zAyyvryGLIY8//ThvuOkQz54+yfS2EZyBx8lTixzYOUMYScxMTNHuNZGEiPMLFcrNGoNBn7vvuoOTpy+RzWZ58Imv0+87TEyMsVEqcWD7DAM/olQq0ex6xEyZH7rzZv7hoScZyuUYHi3ywJEjhFf2zpf/Dr/sFkLgsmAnfiMDWxCvPiZcdQsgAL/4v7yPUM8hCjKlhcdYWlygFDNodhZZeXoNp+uzZ26S/OgIUVzAbbsUh0YIBYcnv/IEd914mMePn8CxffRYDEOXaFbrZLJjFMeHGRqeoL56CT2W5eY77qRSrTGwbZLJFFbcRPB7+KHH7/3RXxBFET/0hjtIEjC8Yw5FURnYAwRk3EjE8zxSyTQLxx+k3OrhtNs0mk3OXJznxv2HkVWF1cUlfEmh224zltY4V6pRr1WIKRINL2TP9DjJWApHCOj2wXM3MAUdwchQTMZYrnawVI+LpToTo0NsLK8gKyL5bJFOs0IkJxFCmwE+o6kiS+VFdCVBIT+EFZfp1qqsdTqsl+vENA3D0EjHBDZKfdS4QTaWQE9lWF2+xORogdpGBdU08X1o2H3yikTD6+O7DgMvopguYrseQ4UcnUGH8ewwF5fOMfBtyt0+ZkxFDGREVcEwDEbSOZZWlsnmcxStJJEkcWL+PFoYEKgKac3ATKosXtpgOJnCyOd45tljDOdSFAsFVkoNAqeLKinEExlq7RKOK2AqEdsnxnj2wgqiqDOSUdkQXKROhDdwaPV6pMwERsygXF4nnkgyksnz1OnTTGUtsskUvcDhQqmCHILnw8y2raCIZJIpTpw8iijIxGWd5ZXSt924bwpFLwHfb8lZ+C1uom9HEEbkbv8P4LuUHvzgPyk9OvQbX+PC5z/zgok3URSRue49kBml8eX3/5PxZg+/B4DKY3+MLL36DGvp6y4f3wsluv1jBm7AyDs+DGtnLi8oisZHP/y/8+a5kefLDgVB+Cbh8Oq1FUY8/3gURRy5WOMtP/OByyWBD//uCz7WTV4ZbG4AXj3rxMvNCy1u/HOC0KtdLHoxj+/biUP/mvd5tZ+LTTbXCQDT1KM7bznE6HCBU2dOI0gGku8ynC9wcXWJUJDwPIlYPMYt185y5OhRZDmGIks0vZCEIrJ7ZpKNSp3F8iq6aLLRKKNFIFoGcVGn3OownLFIJtO0On18p0nTFgi9AT4BP3DLQVQzxsjIJIWhDJW2w2AQ0HFk6rU1Ns4dI5XQGckmcAWZVqdB6Ph8/clzDG8Zoee3yGWn8D2HRneBKBSYm9yHY3cwDZNQiGgN2uCDaZlEBKiigqmbzC9G7N+dQ4gcYqpM6Pt46HzsM39HPG1wzzW3osfSXCj5BL7Pnbfuo98uk0ylSWRGqZaWaNkyKxs1bKfE0QeOsNpaZ8fcOPF4nLFBgkzc4qP3fY3cyCiPZLy8AAAgAElEQVRCKHB47xY8f8DIxASr1XXuf/Akd99wkM8+foRUSmXu4C1MZLZgGAbHT55hvXOM3TNTSLLC4X1v4Omj52m1WlyzfZRSeYlWucJjF85Tq/rcds1BJiZF/vqzn2duxwzJeIJBz2X+/Ar5dJxT5y7xpttvYaVcx3MHlCs17CAiF0+RyucQw5Bep4cj6SzMn6SYzWGYKnkrzrHz5ynOzLJt+yxP3vcw5cYGw7kh9u+c4x8eexA38IGr3dGe74/2fKnZ819fcRjBN27sAogC/OyP/RuE5Cie56MqAh//2McZ3zLNvmun6fV0Hvry5xgaMel3+8wdnKAfydTXqiiagr/UIJIUpHiGfr1KMZegOYjIx3UCRCaGp9h27QFkI0a310eUROKmiRcMiOmwvlqh13cJBYW//puPs2smRSQK7NiyA0uz2LAjhgtDbJ2eoFAoIssyZy4sEkVw5tTXmU7E+fR9j6ELAYoeQ4pAEmG5UmN5bZW4riFEAZ2Bx+FdO2k0qwzCAEWNk0pmWV1dpB9EqIJHKjPMeCbBhY0NcqkCCU2i1qrR7nukDJOma6MLEbbTZWx4BjuI6LdrmIZBXFMYhGAKIbIkcmx5nY2NDYbTSQIhomd75HNFVlYXuevm13Hh0jJWXMPpDRgfLrBWaeH4NpIqsrRRxlQlJEEhrkvEkjnaTo9t+SJ916NeKWFlLNrdOmGk0Oj1UBWDyaEcNcdHC6HfXiW0ihTMNL1OH8dt0HQcZAEM2cA0YuAHiErE0lqJTFxj4At4QYRpakiSQDEmM1+qk0knwYeu6lJZqVHIxMmICRq2w8LKBmlLIRaLYcsiYc+n2e6QTCXwBy6aFcfWOxhanOpig2Iugy+FNDs9TM0gn0iyUVpHURXs0Obn3vUW/vNHv0i93vq2IsFm17MXme9XJLq86f+XnyeJAo0Hf5uf/ZtnKd767ylc/zrO/v49AKRv+zXot17QPwAz173nsjvpW0QiuBze1njyT0lf9x7y17+XC/f/Ptm4+oK99yuB6R+4h4UvfvYFea0gjLj7zx/lsb/6WwiDyz8URLa/+a089Cu3I4kC4jduQiCI/1R4u3p9SJc9rpe76yFwy7Yc9SO/R+bW95M+/D6qj/7ht3WmbbLJJpu8lCLR1Z9vdkT77nkxHUCb52KT1wKaIuOFIfcfeYpMOsm126e4tLqKlUwSLIuIqsFkNkYirnNmYYN43KJR77H/0D7OXFggbiWptPusVpvIUcTW6VEurS4iGhrxQKTa6WJoGpKm4/ke8YRCrZWB7gYbrTY7hnP0On0UUWNt9RLr5TUmpsaoVMo88cwymqaTMC1WNirYdkA6m6Pfsgl8gde94SDL5Q3y5o002yusNS9gSQahAOuNeYqpERzJw7Vtuk4fwzCpdevkrTySLNJpathOm9DrQxRxbnGFlmtQWr6ElUwyMzzFxcUyO2Y09k2mWWqLPPD4aURJ4V1vPUCv73LqUoP/n733jpLkLs/9P5WrOofp6clhZ3d2NietMkIBEQxIJvhyyfbP/LCxSTY2Ns4JYzhgkMBcjAEbm2ALESSBApJQXGmzdqXNu7OTZzrnUF3x/jGSkLlkVih4Pufsnp7pmqpvddWp/tZTz/u8juPhmFkyp86Q6u1maFOCW765D9d2eOWvXMzpqTKD3UnSiSTDY93se/QMF1+5gUqjyldvuJM/evebuPuBPQiuTW//KvyGypKdx3YqzNTLzOyfZ/F4m3p9kYCqkS0t0hXbzr4jMySDKgv5EgOJYSqmidma5IYHT3PF1q1864GHeOFlO4nEIoyu6eXIY1OkurrJFuuk4zFOz9dRNZWQ62PoLrZl0my3EX2B7kAIoacP025iWQLHzk5jBLsoFXLM2y66An3dQ9iugxoUCIcilGtlPH9ZKlrOwX7cNQTLydX4T5ad+Txekvak98jH9eCbt9zEH/zZ33Pi1Fk2TwxwzSu24Wl9pLoHqZ2d5cKrfoVhOcf+yQbb112JbbX52syX6eRLODWPdWOrWFg6TSzezcaN22n7Gtt2nk+pUsFxPRxJRldk2s0yC4tZOpZNIqqjBjQmTz5CVFeI6UmGU12YbZV6YZ47Ju9CkSAW72V3qYLjtdkysYW2kUTB4WUvv4bhVTsZSIV4SauJpIb5xrdvJVet4tk2jZZFUBMRIwLVooVruTSsFulUmjPZChN9aU5lsyT6hnBL80TDcaqZPOX8AkYsgug4lMwOkqAiSS5Vy6Y3naZezhGRk5ycOkEwkkDVDJKRMA4CqtWmYjuMx+KYjSohTcHzXBZKNXRNBkNADwVYLFaQZfCsBuFojMcmT7Jl9RAnZxq0bZfhnn5O587So0eomw69/RECnsADjxygq6eX7t4EpWwNS1axOw6SLOM6AjNT87hxnagXJFOSuGbDMJlCmbbfRlB0kpLEfC6PF5MQ6x2ygstaLUxf0uDoXJGgotCb7kH0fUZG+1mYX6Q7GidqaNQbVeqOR8u0Waq3yNJCMyEYUrGQCGoy5XKZiKgiyRIyYIQDeK7NJT2rqHkGtUgDXxKJeRLpWIqa5yN7HoIvEtcjCHIXmhLA9X50pMrzz/LxLOLnFYme4Gf5u399wzYuectrye26i/i1nyT9lv+AVpUL3vr6n2vbP4z4JX8IQHH39T92ufLeT4Iks/qK32fkHTees+0/G3jgT64Elt1TPw++73N4pkL84vfRdeG72f1vX1l+I97Hp//5D1m4/2M8+IErkB8XiYTHa5t/2nPhqcsLgkDp/g/ByGa6Lv69n6tT3gorrPD85lxn1fy0DpXnc0e0cyW4/GCWUHnfp54WMef5fCxWWAGgY7lUKw0igSCBoMbxEycR0SnWiljIXHzeBkKJMJ6sMjW7QAAFQxM5MTVFue0wk81RKC1QrjUZTg8xO5thJN1LMtqN45hUqkXSyRiuK1KstbHaLn67CpJIdzLKsbkl7tt7GNNpMTudo1QqMDub5e7v3suVF6RxbYdS3WekP4WmOjitIkuVNuGUzL7Tj2HaCq7boVw/hS5IOJ6NK9gUKg0kVGTPR1cMfvVlv8VweoiLN17Ebd85wenTHSxBZ9WQTsvx6VgWs5kWuaVZOp6IVIXbbr6fiYk1BAydYjFHv2GR7oqjayrfuPUBjp44g6woxKIhHth1DCMKCd3mip0vY/X4eQiiTETXabfKyMEEyaEYsiqzZecIZq1BPHU+b3jzO7n9rkcIKhEQPC7Z8RIO7t/Lkf37uOM7N5Ey2rz3fX/F5m0XcPFVr+bgvoNomsJi8RB9fWmOHD9BoWIjSgGuOn8HDx09yUUDm/jmnfsYX/1C9t4/yZFHj3Bg31F0WSNbzDE9O8lSdp5Ow8QMwWKlwv37T2IEAtiWiSz5tDsVTM9BECU8F4YGVpPs6sLrWCAqDPYOUmnV0GWdb3znTgxVBf77g3zxyTwigO+XpPn+ciu15Qe4y5LSEw9+C/USHbNBMhkm0TXEsWOL7Lrv63iuz+hwP+OrV2ELEc7buZMTx47huR4xOcZFW3eQSoRJx2Quv/gyLn/hK+mb2MHAqtXkiyUkSaIvnWJ0KI2hiszMLNHT281gWqE37jN1dD8LcyXyGZMjx0/hd1rInkk0PcCqwbU0Wh0u2DzO4GAvgiAxvzRPTGqyuV8jP3eS/r4e5kttbC3Nxz77OabmlhhID9PX00+gT6WNTzwcIJAKoMQUGpLNTK6IJMLuxx7FFwQqjRKKptNuWLQ1FzkYRfQ1Ul0aWlAm2t3DxrE1pJJd+I7HYrZIvVMjHE6wbmiU4UiUcCDI/hOnOHxmlsXFLGerJnW/A1GJtuESSMpExqIUcnlcOsR0GVHwqHREPM+jK5Fkcr7AUjmPIvrYgkV8VYKObZFOxggEojRFn6HhVagyNCs1WlYHs23RatToNNsoQpt0Xx+bE2nsTpVLNq9hpljFlwTaVoWKaeFFVcKBEE6lScPxQfGZXSzRdEVCyQCua6PiYFsWhXyZDYPDKLpMvtZkXvMItl2SIylCsozScRAVDdf3GepN4WgCkgeFcpvhdJxQUMPGQ9U0ctUyR06eIq3H6AtGUIJBlKCOKgvgdggGgiwVchSLWSZ3P8YP8SE8yUrp2dPEz5tJ9IviuB6pV3wUCrNc8ptv5Nu/fdE5WW/8BX8MZuNnKmEb/72byT/4XUgOUr79j87JOJ4NxHe+k5u+/JdcNp76icv6vo/lePS84iNQySw7hwQBtCC/+f638uGXT/CDRp+n45x5/7eP8y8f/BdyD3wUZaUz2vOGlZKC5/b3xDPNuS47+nnW93wtffp5HTrPdH7QirPo+cfK9wQkYmF/3fgqAiEZzxORBRddCRJJBEDUqJQbtFttBvq7yBfrtOpNnHaDTRPrOTEzxan5DKsHBoiEdEoNm6Dq0J/qYi5TZqmQYbw3wUKpSbHeJhxQiMW7cF2fhOaxVLFIJ0OcnZ+l1rD53y+/ghMzs6xbM0TbEhAEC1GLMTldo9nM02U4CJ7AqtW93HfiGP2pbTgdm3zlAK7to6kyHctDV2RavsXE0BixcBLLt7Fdl4iucGJ2nq7IJhzXIxwQSAZNjhyfptG2cTstHEGlWW/ioPGet72Z/QfuIxYNIYsaRjBEOJKkZIpoqs6JU5Ocv3MLp87s4Ztff4BEVzdXXryeux48gREIEPFKaKEgC0tzWB5cvv08ekcilJoqenQYTVXRVJnvffsmZM1i09YX0MkVmDp9hDPFAnpcome4i1KjxWte9E72HzzMxNoQe/ffzWVbt4EnsHvvImfOnsSyHa66fAeS6/Arr34Nt95/gloxz1K+RN46y8mHDuJ1YHgwwfBgH5FYgtPHJqm3GyQiUaR+BTcHvuOwed0oc7kav/aay7n3oQMUZhrMlDJE1ABG2GB1V5Jq26VQq1Mp5smU83g4OK6HosjLTiKWRSBBWHYSPZkdKvDkuwJPndMvL+F5Pr/2slfTs2YLO7eu47ab/52j+x9juH+Q1Ze/nFyhzJ777mKop4sN2y/GsiyyS0tsXD9ONJ6i1WrT7pjIokQoFKTRqFIunUYTBGZzJoODQ0TVKr5tcv8D+3hw/zFUWcRyYbQnjapILOSLBI0ovakU+C6u7yAIKrPZ2eVuYIJAqVLCUCQUUcLyXHw1wPv+4C+o1VtoYgOqCxw4Ms3hwhGK1RaiKNDnJzhTm0cLafSTxvZ8MuRZG+sj2h2n2zE4NL2I4LfJZYvI3QFK+QLnb9gGnsb01Fmu3LmNb9x7H6t6u6g1TVxPoFAusX3zOkJ6hJmFRWqmSbVawnFsxofHOLp0hvSaJFbHAdGlOt+kPxhhoV4lbOiY5RY7JyZwPIHT2Sy+B4VSkbGBfmLhGKVSgabZYu1QL5FEF7sOHWeoN4kr2PRE4hytLBFsgROFhuMSc8NUl0oEAgrDqRTd6RQz2QWmMgVUTcQ3LQYHBtEdi0ylhCAEWJIqNBbabBsZxnTblJs28UCcdFgh22zScX0E36bVtolFwpyemsETBKSgSKvmgGCTMIK0RRs9oeG0BayWzWhXL9htFko14kEDVdIIGjrhSIBMrsG24R4W61XOLJXpTQSptTpInovvmFxw2VZuuW0fuXxlpevZ08UPim2Ou+zceCYCnWVJhMIswDkTiXzfB7PB2Muv/Zn26dTHr+E3/+J3oThH/NL3n5OxPCsQJa79nc/82EU8z+fN/3GQxIXvpeeS90J5EUSJ//3+t1PYfT3lB/6Bj75yHdJT3D9P/Hs6+PDLJyA1Qvelv//k+bnCCiv8z+XZItA8n90sP+0+/WAnsiecQ8/UsXk+HosV/mfj4bFxtI92y8HpuORLdSRNZGGhzqrhUQxdJxAIkC21iYZjnJ1bJN3Xi2oouJZAXzKFIun09aaIRwyy5Qb5cgNNV1BljdOzBWotE10E1fdpt23WDXQxX2qQKWc5Ob+E58tYjs29ew6iSjKipKNrkM8WOXPqELZdQ1KjVJsCWjTE/tkZgvIqdFmiUD+E43hIkofZsfF8D9P3kT0RkSA+NuFghFQsTsV0UEMBuuMOiwuLRAIulWaNhUyeeqOF2XGJRHU2rBlm7XCKv/7YpzgyNUXV7bAwewpJFhgYWcOq0SEsu0MoEuYrX/kUX/zXG8jlZtC0IDfe8iC1aoGrrngBjXYJs+UQjQ2yZnSQSFeUqtmm5eUQRI+AEUCmgxXIEdD7qTXbVCo1qvUqqxJRtm4Z4nu37CYWDDMykGL71o189p8/xYnHzoIsk12s4FslBvv6CYUiGNFhBtZsJh7v5r5vf5FSrYluGBTLp/AF8BWXKy/cytCqES66/A20XIvuaBjT6tCZNvE6HqJsoIeCvPbaS8nnCkydmKfjmAwm49ScPPnFDAeOnWQxlyesh7E8cD0PHxHH9pCkZSfRsmNoec7vL5uGlr1Dnr8ceO0vv37iNvFJpxECt917N6IkcvrsHK4SZrraxEz4TE/fiWOd5h3veCe33f09RAECwRAbNm3GFRTKlQqGrhENh3HdAq3yEdqZU/ilKo1inX0PPUjaaFDNlbnj1l3sfeQYUV0mqGmsTsVJRKNEwzFSPaOkUylCyTiIMqGAwWx2iUAggON0mMssIkgagWCUuu1SqDYoFQrccMMN+L5LxwswVxGJBQJcMrSTsb4x1gfHkKUwG3tX0+v2IiITT4ZJE2XH4BjdboD5apt4optivcPQhrWkIwP0dw3htT0SoShSTKPcrJOIp1mqFXHtDpIocOF5OzFdjYMnjpMtFVmYn0UUHGyrw+ziJLKmkTtbIKCqOG0PJaRiJSRCsSC2LjCQ6qPUamNoPo5nY1sWvu9RqOUpFDO0HZO60SHXcfBdkUQ8SbHeoFxqsffYKSJNF1UU0Zs+el2iWW+ixYLYnkhPLI4sSQiigiAJtDsdFFVlbjHPfLMDWpCO5NPjGownU0S6NSRRYTAWoma2qDebNGstwrJEUBEJBxVCAQNBEvAFH1ET6d0SZairh0rTwpdkqosm6e4E64YHKNcbnJrN0x2NYrsudasBnkfHdIhGwyyWK2SrdYa6k1guaKJExbTxlBDgI0o/vBkWrGQUnTOeGir8g4HDv0zW/v4tABT3nLuw5cQF7wZRYv9fXf0z/+1HX7mOz388CfUi8Vf9H8rffMc5G9czhhaAeuGHvnVisc5Fb70OqtnlX0gK9G8g/19ve0bDvQVBoPCtd9H1wg+QuuyPKD34kedtZ7oVVljhl88vIjz9T83JeabdQz+M/6nHYoXnNyISx2Zm2LZmiEdOzDDa183cUoFYNE65XMA0q6QSvYSCIXwsxkb7yRbrTGUWUQWFUChIb3eEcCjM2f2HSYTCbN8yger73FGrk2tZ6ApgmXhCAM8yOb1QwPdcJgYHabXqNEwXSfSpNevowV4e3HeYS7avR1cD5EplBKGMq6Wx/QCLJYlk1zpsuc5MfjeiLyAKPpKo4Qouqqzh4iKKIu12na5UP4lwnL/5h//DhedvJqjD8eI8rWYbmTRO2yEQTFGrLGGaHZLRMJEuna9+42Y2bbuIvt5uqrkcsm5QymY4q+7HlXsoV+sMdIt8Y3KWVquDKAisHvGZmzGJJ/o5sGcXgmLQdCxct0Iq0UPRqdOoFAmHonRqj3DHI4vYfoP+gXGSgSEEx2bf8UMguQz1J7nzzn3IkkQgqPLlmz7LqdOPMRbqJt0fp1Gp8p3v7mKgtwtBdrn6qheRqdZRDJ1Gs8XGLRtYyDyMZ6TRY0H6tijUFprM5bJ8b9cJPnHJa/iTP/0wH/zsnxP3l8OeNUWh0q4gWi0OHzhEX28aRVGRfJ+AFqZLSSJpEr6i0R8PcWJmjkgojOeYyIZCsVLFtjrIsogvCgg+j3dBE0BYdhCJ4lPCrgVhWTB6PHt2OdPIx7TaWLbL7FKON73h11ksTXP20FlWbdxKd1cQs9Xiox+9nnqjief5REIBZFli1667mBhPUpqrEFI19h55lFq9werRAY7N5OmKJNjzwD4qLYvZxQyKqjO2ahWxYAjX8Tg5PYXtuqwb38RwXw+C12GmWWMulyWViHJ29iyDvf2Ylks0lmJ+YZpo2KDdtojHwoh2m698+XNs3X4F4bBBIB7g4V2PEE9E6R8YQRTB0BWazRZN10TTYgxFlihLHW64404czyXUE0LyRTqOxnkT23HqXahGiLn5DOP96/DFNm5PC4oKbdsmHo/gIiF5JoaqU2wXiQyFaZQb7Fg/wOHJLFgtUqkuEqZIxffA9Rnt6efY9HEGh7qhLRFTNSYXSggugIscUWjiEvQFLMtjLNpDSFKQPI+etIbVUtEEn1NFl0QkyJFqAdH2CYgBwqEQhWweRxGIJoLU2y0sz2YgEqZhe0wtZAgHg0yEI9RsgRoWvmXQchxk02epUEWXJDqOiRdKEY2GaHkCIVkhbEg8evoUng+IAnJQp3y8TnAggloDxfNQJY3sqSzTso1Td5FFmWqthum7GKKK6UKpXCcSjtD0bGLhOKGggufXObaQRZdlyk4T/NU/9v50pfTsHPJEbo34DIlEn7h/kr9+38cp7vnkORvDuXrq7LgeqQvffU7W9Uzz4usfZN+X/osXvu1NjHSH+OJXd8P0o98PpJZkHvr63zDRF37WiTGe55O89jooLZC978MoksDjDz2Axy2zj7/+UaWTvu/jPiWj6QdF0WfbPj+fWSkpeO59Tzwb+GWHVz9T63om+WH7ca47lj2dPF+Owwor3xMA8WjI37BhjJAisFioEYtGCeseicQI8VSUhfl5XNen2vQYX5ViqK+Xrz54B61qk4nkanp7E8wvZjD0EKGQhCBInD45y5UXTfD1u/bheaAJDqbrEdMDqLqOYQToj6lU2y4WMlPzs2xeN8LuQye4YPs6dEknvSZJPVNhanaJVCqJL3fhoNBqdahWq6zf1EMwFGX/ge9gOwAeoigjCSqebePisXn1BmxN4MLzXkcgoJNOhrnjrrupVU3+7d/+hd/+/17C2ck5sqUWtmnT19/H/NwSstGNboRYWpinvDjJK1/1qyQTYGgaq9Zs5dR0lqHBMHfcfDO7Dx+iUbXYtnkNA71xFnIlJka2MTk3TzAokEpEkRSZUCBIR7YIBcLMFzMMJ6JUmxau7ZBMbSGbyXH2yH48oG3XeezYGd74lquYzRYZHFtFI5/FyllEBBnP8Hjd2/+Os1NzfPjP3sPFl1xOy5Pp6etBlETMVot68SxBI4wkNfA8lwO5k+hlgfd94Hqq+Sm+/p9fYHzHNQTEDBvXbuWDf/9Btk+MEu9LcPL4Kc7buA5FVTl8fIlsPstAsptGq0Ot3SJiaCTjMXLFBkpQp9msMzA8RKPZ4uE9D6FqMoK4LBA94RT6fng13y86ezK7SHiyMZrv+0iSyjve+RfUqmU2rptAVhTq9Sbg4XkenuejqirgcXrqKFY7w9GDJ/B9mc0jvURjYRptm2hA547dBxjuS1GutWl32qwZ7OfMmVlsR6TpO0wMpEjH01TKOYrtJkv5EkbAYMPoMGdnsnSQscwGWiCEY1bIl4oYkRht00HwHLKFPK5lEw5qJJJ9DPQP4nZsJrNl3v3u36GWmWV6folfe+0r0fQAsiwzPTdFPBwlHImz/95byEwvccPhe/BFEUnWsVoe9YUqt970TTzPZ8++g9x1xy1s3jDAiRNLJIMxDpZP4dBBbikMGt3UXRPRkig2aghGiaXFNkpUxHU89KSB7otcu/kiBC1KrW0R9032HTnNfKnMQM8AS0szxEJhJBUWKkWago8W0Ul2gizkMrz56vM5cLpIWNWpu21kUcVQXaYLFTTJoy77qJZKx2yiAWo8QUoBVZKZyZcRJZUX7RjkO3tO0hMywNdom20UXSaoKmQ6HXq1ALKuMV2qEtZVIpJEuWGjqxJNs82CWUAQZfSkQXmqSLg7Su5kAVUVCA2HaeRaBHwZ3/OwfPAU6DQ64HjEozogMdw3gi8JCLZDLBklV24R1gQy5TIBBfLVNslgEPwOqaE4D+06Q7tlrnQ9e7p5pgSiJ/jr930cZPWcjeMvbj8JQO7hHx9e/dMgSyJLD11H78XvIb7znedUzPplc91rNnPxl/6L+77wVe57Srcyescpfutdz+r9EkWBwk3voevFf0f66r9i8KKL+ZvXb2JDKko8qKBIIoIAiiSiyY93bxD+XyFIlr7/u6e66XzfRxJXxKIVVni28nSVFa0ICj+c55I49FSe6iz6ScutsMKzHdf12DDaRzZfpielcmZ2iY1jgziezdmpRbZO9HLg4ByCZOJ5CnbHZGv3BNpAjIWleTTdYDFfRtZL/OqmKzi05yiKJLLr8Ck8z2Uw0U3dMfFbLfKNOquDBiFZIlvr4FgOkXiUYDDGmbM5BrrCVIoVtHCA0qEGEyP9eJJEIBRkbLSXo2dmmCuW8X1YyIqcvn8Xr7/mNdy57xv4toLkgypCR/TBk0DwCakGE2ODCHg02xaXveByqvUW37vzZurZOuNrt3P8ttsZWz3EwNAgs4tNyrUy20c38r8uHuV4Zpy1Wy+gVCnjt8o8enKeSFjni1/+HH1dIxjdGp4qUO/UKcxqmJbJwUf3YpodXnz1VQi+haRqdA+k+Mu/+gTnnb+F0bX9HM9kiKgqF2y+hsmZWZqLc3iNBgPrx0BZx0te8UY+9Ym/54/f+zpmy0vc8+ACL7liNeaiyeadO2i1ymzZvJY//sj13P6Nb1AsFUmEYceObRw9vYQX6mVsOMHU5En2nznK9tVjvOzt76Jer/OJ6z+NKjustWsEQwrTC6f4vd97E/d/9x46rTaBgIGqCGzftpGW1WYxu4iW6uGxPQ9xwYb1RII65WKFXDWPXfQxFIlmvUGpWqU73U2pXATXR5AElmfLPJlG9ESk9RPlaE9MiX3h8aX85TlzbzpGo1GnbVqEZBlRBN8XiUZDPHZyNzOZM0ztP0ldd4gNRBD6XaSaTLlWxfFcAobB8dOnSYQUygJnH7EAACAASURBVI0i1WqHfLmEYwmM9g1SqbfostpkCjkq1RKxcJiQrhEJGVx54fkcOD6NI0rogkDLBadZx2w18TwHt23TrBdZv3qcRrtBSxBIJrppdCyiusSx+bM4jQarhoc46wucN7SWM7NlEKrg+1i2R7XeQMm18aNrcOM20f4U2eMZJN3HbJh0rQ3y+X/6B+RAEDWc5mWvegNf+OxnmZw8hu/CBeePs2ViK6ViG9sWaZdc1g+rfOvwSdyKR6wnSL3iMrglRqtksqVvEDUxjiBL9KcVrOmjhMIqlbk65bMncDoWQkCgIQtYhky/FKKWq9CQRDzH5d927eZFay8gXyoyW1pEElSChsFoV4LTi0soikHdLRMz4riuSyokEddCTC1msX0o5bMcnpLAFui4EhM9MR48U6LLSJIrV4kE4uTrNcysSTssMCBHKNY9xvpSZAolmq0WruDjmQ714xn6diRZ2FNGiyvYHQu34yEKArpm0DbrYDsoAR1JNTCrHdq+S084iSILSAGVetXGskH02niOjCtazC9VUY0AkXCYjumDoxANBX7ktXMlo+hZys/q9IrvfCeIEuWH//GcbL9Q7/DJP/8k8w9+4pyFH+uKRGnvJ0EQSF7wrudsVo76+OexcN9HKe25nvLeT1Lecx3lm9/9rBaJnkASBTK3/Qn3ffF9vPLSEd79qV30xnQSQZWIIWMoEp73/a4OP+lcfCJbSRIFZEl8RkSiZ7MzcoUVni08HS6Rc+1OeiKb56cRKZ5LPNO5Qz8Pz6WxrrDCj0OWJRodj8m5eRqVJS5cP0YyGmFuYYF6LU/U0Bgf6OfS7duZnl/ky9/4DpGQih5wOTt/lmKpyMR4H3E9ysP7DtBoNSh7ZU4Xp3ndNVcykI6STqcRBJGwppJttMlbHZo2tB2LUq2KIrRRZJeNw8NUSlVkyWPNqh52P3qYUrXCTHaOmx88TLOVo3+Nxnnbd5COJ1mzZjO33b+fHRvP4+DD03R8aHttXCQERSCd7CccSPL1r32Fh++9iYXZKZqNOsP9Ca6+dIyRtRuZmT7Fli2r0SWFPXtPIYoy0XCUDQN1jhRmKFHm1tv/nWQ8gimGMAI6B/bex0j/CKGYRn9olNes2cTOrh58yaVHV1BQkESLf/m3r/CtO+5h9+593H3ncd72tnewuGQSjYZpN+q85hW/wdT8AuFQgIplceU1L8duuvQNDuPh47oqpXqdL37hbhbmplg8muOG+x5A1UW++p/Xk5k+xf2338nk5Ekcq8DBvXfRyJ9iaKgPNRTm32/4DhNbLmLj2Cpu+s5eHj14HxsmxvnAn32I177+dxCdPJMzU8wuzLMwX2XzhTtpWQK9vV3cfM8+FhfnCQUMZEmlWS2zbuNWJEXjnkNHafseIgLp7l6ioTCPHT/G5NQparUKAiCIIvjg+iw/MH58/ivAD2SPPjEvFpbn1pKAgkc0qOP5PrIsIvgud911IzOZ+9i395sYskOfFGXt9k2sWzdKMhVAFERkEaYKTRKJBPPZHEfn85yYyTE1nWdmKUPYMJiaO0Mhl0fRDJRwAEswKFbbnJ5bxPFFYpEu7nroANVKjaViAUEUEHwXQ1URRYNULEU8pDE6so5qo83aNVswNI2BgTQjvaM063Vs22NwcDV/89d/y5qxIWrVCgCKIrH34dupZE9SKpXxEfj4xz5DMhTk7b/y28TWhNCjKjteehmvf91b2ftIjt0H5um4Lo/ccwOtRJ5gKkjveXFmzDxf/NqtzGUXWSguUK7kEeIhEt0R4qkIKBb943GGWgaz+5fYu+s4wWgIIxDAtBy87lWUOzK9A4P4nouqySSCcdYqfYwpIWqVJlJQZXZxiZZlIWkKqTXdhBM6dcemWqshSzInZ/OMDgxg2i1kXUETfNodF9+WCRoh5ssVtIBBX0+KnOIhaBKDXWEatsllG8cwVJFwKszJpWlAQlJDaC2VTNXH0H3ylTyrB2IUnTpmySGYjhBIh6keqoPkIHoivgNmvY1q+5SbdbyQgpYKYNd9HNMhmAyxYXCMraNJuiIB6tUmqiBTyizQrFRpeRbZUolg0GDT8DC271IxfQzfp1pt/Ohr59N1UV7h5+dnFoku+n0AynuuO2djWHPl+0AQCGrn9hQRBIHSnutJXPheUhe+m4dv+hATfeFzuo2nmw/fOwksC1/PVeeMKAgMdwX4yxePc/9jGXRFfFLkEgSfatsmqMuP//zL2cfl+u3n5ue5wgrPdp4ukejp4vmSlfNcHjv897DxH9yX55OQt8LzG0EQ2Ly2n8MnTxNNxUl2DbKYz5CKB7Bdge/tOYvpNlGLCsV8AS0a5lhxiReObyIcidPXHaFWtbGCKiMDSfYeOkRDd+gW0txz/xGGe5LEdJlkKEK9UcNTNbLFIoPJFFo4zFK2giR6VNtt9p8+w+hwmuMn55mfWcIIJkn2qMiSje7ncZ04mtxmyTzExZtew3Crn0celRHENK//jffwX//xCTad3w9uh5ARp1pr4zgWjtDmkTkHYfoQhqbiuAaD6QGOzh1CS2uUSxXS3TFaTZNKYYkrXng1X3n4Rl6y9QKEhkcwFKRUbuC6Hq47S29fnGhUotxqIvoOeSVIrwOO3WbREUjEQ8zOLWJZNovzOV7xsjdQb1cRBYkLN0fJVnLs3HAB9+86TCQUYurUfYRjKmenp+keWEVv/yDjqwco/cZO/unzN9G/Jc5wIEXbg1e/7kqWlpZwGh3+8bq/p1GuIdgmZxZqOC589msP8qpX92D4JUaGBzl05CwbN13NmbrJ9ORJvvKlf+SNb/kDPvPJP+XiC7YzOV3ipVeN0Pba1Bs+6zeM8rX/up2J8TWghRBkk8G+AZqNIr4eZfeJ06RjSZqOTzqZRpYE2p5Mo9XEdV14ijNIEJbzo/wnfET+4xaiJ+xEj4tEvucvz7OF5cgHRZHJFRoI+ORLRRrVKpHYMDd//SGmzx7nwgtegK+W6Dg2nUYHNaDgmwIvvWwnd9y7FwWYKVRxnA5dUYMTp6cJhIIoss5o13IQc1y02bl5A9apJqcLLWRJoNFooIgCxVKZidFhouEwpUoezxeIqhBJRSm1TBqej1jNUu/YWI5HNJak3qqwuFTloq0XEmwKGJpKf3cXtXKRmckTjK/fSqe2wGAyheT7OHYL0+zQaEnUOh4f/9s/x7It/uRP/4qQbiD4Iu/6gz/Asm3wXPqueg2X5Wapt0rcdGIXpw/sIb4mSalWxTItfEHknl0nyBUa7Lz4Iu6/8x4YqJLv94jFg5y/fQ2S7NFudQjqQZqtGldsGOZk2WTy+Gk8fBYLZUZiHpVah3bHpF01kXQBQZYIJBSsksnJ2Qya7dHbO0hYsWgGPGbzi/ieQMhTqVoeiiySjkepFzMImoMkCeQLddKpHmpUceQQ9+zdx/pVA0QDUWTVRAhJdCfizOXynD8xxP6TiwwMdDGVy/Hdx46AbYEk4Pse7WIbQRQJJsI4jkUkblBd6OCIoMV0cH08UUQPqzSrDXr1CKbtkqv52IJHX3cS2XfIeB06korua6QGk2ieQK1VQZR0ZEnmkTNLdBznR147VxxFz1J+2hvm3/jKI+BY5zS8On7hewEo7z1363wqgiBQ3nMd4uodXHTtB+h565eelu08XXzt3+8Cvm8lfS4iigKaLOL7Pm+9fBhReGopGeyZKy7XW/8SnTq/yKZWBKYVVvjJPFtziX4Uz+eOaM9FVo7DCs9ZBIHHTi9xxYWX0GzBfG6Ww8eP0DEVyuUma0YSDHSF2bllM1s3bWDryCq2DwwQC0fYui7NN2/dRVdYxvDbzCzMEdCjjIqjbBwdY/vGEXyvQyIawhc8YnGNfG6BeMjAc0xss0nLb9PwXFYNDaMYYTptn0QkwPRSgY5lYcgCgi/RFeiibVWpZ0wE2+Tuh79A2ynywot3oBsa/b1dvOgVW0FWcAWBVCSFadmEjAi208TwTRKhBLlanYChUev45BtVKqUK4yMjmI6F63jMLGVZLJ9h8+hmLF8mGUvy2mveshxendSwnA79/d3seijDr7z43ew/cITdjz7Kkpak2m6xevUAPckgl+zYxMDmJL7o8bnPfYJbbrmRhyZvp+SJOHUHz+9CxKfTOsPMdJaQ0WQuU2T/oUPc+J9f4uMf+yR3PHCArtEIa7v7GRgbYnzbOHowxOyRJSTHJ6SIDPf3EY4kEDwBSQnwmU99hs9/+mMM9EUYH+5i/fpx5paKvPoFryFbrTFXTPK7v/tO+mJBvnffQ7z8Rdv40Ec/x6c/dSOSJCO6sGPHFtq+SCIeYXp2kVItx3yxzsmjBxgeHANVJ6YZ9CS76HjQ7tgkVA3/8YxOQVhOJxIE/3HnEI8HWYtPvvZhWUzi+/NU3wfB95EkiUyhhOf5HH7kKIIAnuti6HHWrb+Y888/n2qnjiZLGIEAs6dyZOayfPrzX2E4rjOzNEd/V5C+aJxGo87w4CgDA6Ns6B2g5Qp4InRsn9vv38XeIydZPbaBULQX0YhS6giMja4lX6khSjA00EM8btD2PfL1Bi2nRndIQdUihIwQfckI9WqFRx+dxLZtms0q/V1xfNenkJ+j2Wzyql99BbqmsXrtBMPrR4n0jfKCi3agqipvf8fbWbvtUmKDaaIDCYJSkGbTo1m3sM02HdfDcl1mF5aomh0cQeWq1VfgmR4vGBvBEEOEtQiyr+I5Fl1BgQP77kVSHSzdYqFZZ2gwTd6UWFooIooCptXGF0TOLiwxEOoQ7tUIDYi0w3UWa01a7SojXTG6EyFGd/ajxyW8OZfMwgyyCIN9A5i+xWSmQrVSx6138PGouzbtapG22iLd10t3UmVkeJA1yQBbx3voVEtolsRUNk9fXy+26CN4No4psDaepieRQBFkphbzDHWHOTQ5Q6ZVRdY05GQQPaISMC2ChkTXUATflsAXkEWVnokkSkgkMRLFbgt0ym00QyS9qofN4xvojUUodDokkjHCsQTFukmgL8HYcIpKq0naDuCVPNqeQEyXOW/HZXzgzz9CT2/fj7x0rghFz0J+2pveVsfhWx//PH/84fecs5KnkXfcCK6zXCL2NFP86m9w1w1/S+fYbuJX/93Tvr1zRiUDwjNTYnWuEIVlsUgQBDYkI//P+9ZTygJ/WWLRc/jjXGGFZzXP5Vyip4pFK0LFCius8POgKhLRgEan1aS3K8TJqbOcv30zw/1Rtm1YxZGzGQr1Ntn5Mgcfm6TSaPDI6eP8843f5N6HHsPD4fDxWRYLOVxBIhJV2TbRw/HpDC3Lo1A3aZQy+IJAp2GRSATJFXJ4tomLTH88yabRNLOZOQxdpTstI+sKhh6gUM4STyQwjBC+5NAb7cXyTNolBwmNSrnM9HwWUVJ4eN+tCLZAVDRQFJGzS6foTsZIpRKEgj04vo6AzNr0Wmr1MjWrwIVbtjJ9Kkuz2WZoYJBMJkMsFOXY/mkuWT/BiccmWb/+UvY/eoZUwuDGW+7HBXYdPM0fvv9PCOgar3/z72A2OixlZkj19jE/l0dQu5gYGuXqrRcyvLMbo0umVW3x0p1vRFYlfu2Vb6PZbOFYRcKqSqmc48ZvPUgo0MIIiogI+MIMm9avweiC8fG1jPX00x+NsaavF0/TWFiq0WqaLC5k0ESPjuDi+y7/9Nmv8sGPfIaPXPclYnGJZu4YWzdMMDO3xMb1l6K4da7aNghagBe/9EV86T+/yz997mv8/h/+KR+//j+554H9DA/0cNkla9l7cD/ZXI1Ga7nhS8P0qFbLBDWZaF835VaDbG6JcChAOKj9t+YvwuP/PS4d4eOB7+N7y14ikeVyNM/zH88lWn4AKwDhQAjXc9BUjZdcuZFqvczYYJpgRAF86pUZonqUhtUhktTojkboTQUYTCg0bY/7Dp3koQPHOTp5lkRylFAoRLNS4vTCAqF4krAiIiChaiEmVq2lnp+jK6iS0kKkolHq9RIBw2Bmbp4Dx2aoVFrEwxGSiQRRLUzUCGK2W9iuje2rhJNRxjeso29wlFCym8WFUzhagHLLxfYFNE0HQURWAgz2rSEVixIM6ogC/K9rt7KqL0JKCVA+U8T2PURJwvY9qo0WmtBBVz1q1Qr1RgcPHdEXSfUlyZyt0dUdRA8GiUWDhBWFTgjia2MM7EwRbYcR6z7lusmJs6coL5xAwCMaimAYOrfuOYbotJG7FNSIRtdolHK1xKqx9biehOAK1CZr6IaG5fkoooIhuMzPLWKbLSzBYSiVoGI6hCJhgp7E6nW9yL7MbXfdxbcOTNIotLj74HFOzRfQPRU1GiMSFBlLd5NUFKaKdaKhOIYusPfYMeRgEE1TyVfqFOw2qwZ7yBUr1DMdQimdNjb1WovcZAVfthEljfJ8DbvdwW1J5M4UiPbLBAcjjCXGWR9bTTShE0l109ffg9DVxo63SPQkKS21mF2oI0lBMLoZ6utj3VgALdlD0jAYXzOGIkk/8tq5IhQ9h+m/9L0gyfzRlWvOyfpaHYfq/nu5/+sf/KWJIDtG4yzuug4qGeLnv+uXss1fGKuNMr7jmR7FL8QTx1cACmYHy/Ge8h68YCT1jI1phZ+OlVymFX4angu5RD+Jp2b7rIhFK6ywws9Kx3RAFHj40CGyxRaj/YOoisP8YpZEPI1ZtxiLx0gnFfp6EgwOR3HLPqrrYugBupIxAuEAG9etptOukc1VcAXYMNTNfbsP0qjVmS5bLGSKJOI99CZ6GE33kW+ZVOpNBElD1sIEVZVYQOaOh6c4enKO0YEE48OrWZxbomU2cS2fulMjqAewBItmp44gqBiGRvbMYTSlhtmyaDpNcF1Caoi8WcTxHaJGlLrT4ujhE3z7O99jdHCAkaE+ZqZcNm5/Cbd9+35O3XMYTYCO66MYBrYj8IqrX86ZuSWG+/t5+MHbiIRFHtmTZ2O6h1AwSHZpkWpmhmAgiCz5iDRQgj6r+4PoqsD6Hdcwv7fI8JZRuseiCH6DX3/1O7nnwX2USkXuvutW9h5b4CUvfx1vfOOvI8kya1dHyWeP8Oi+Se699QhvuORauiJxrvv0TRiqiiRANKRi6DJhI0IsEuHg9CzRwTCe3+H+u7+K6Yn8+lteyeJMCdtucu++L7NpYgAPkXR/D7Nui57eKKbd4ROf/mcu3LaetRPbuPSiV/PmN/0OWihMWBsi0nspAQROzJxmobiE2fG4dOsqLt06xvEjh7h398NIeLQbLUKRXlIhYzm/8yndzpa7mwkIgshTZ2bfD7NeXlbwhWWnke9z6fZtSKJIJKxz8+23MDezl5vu+h7VchuzXWf3oX0IDsSCIeLRbuJ9KWRUErEujp05Q6fRJGwYbFq7iWhApyfZR8tsMV/M0mm1aXsitVaHsKEST8TpH1yF7XoIosPCYoaQHsTQda48fzPJkEiuUmJybpazs9N4os6jZycRFRUjEKFaryB5Mp1ag/nZWfbsfRBFj3D4kXs5M3kU1+7guA74PrKkEotF0HQdy3YQRRHbsTDbTaZzC4iGymMnjvLI/r3IMgQDBqIcxCNIKBRA11UUwUeWZWqTTXItj6VMnVyxQLXcZNXwMMHuEI1yFath0+hYROQ00ZEQgqEQ7xqgNjtPpVKgeuYgntPi89/ei7/QppkROXN7BgHImAXyKZPOoA5xiYBnkEqlmMrkmG+0EAMyri8T0mPUPYgmAlRqVWwEZmbq/OYVL6SDhCN6FMtV0pEuKtU6hmuimB3yRZOoHsZ0JMK6QrbawFAT7Fg1SKtaZKgnRSIeIdBn8NjMHKGEytBAErEg4CAR6o8THYxi5ltEx4IEunXC6TA9GyNE0yGigTivGjsPI+oRGVTohCxuufN7/OarLyemrGXbppdy7a+9g/f/5Ye4/PwX0JXS+eCHPoQtRzh6ymH/oUM0vQV+67fe9GPvJ1aEoucoT07+d3/inK2z/9L38tr3/f9sGoqes3X+NBiqRH739eD7xHe+81l9A/zE2KY/94ZneCS/GE9tcf+Fh+dwvKfUVrMc2L3cwvMZG+IKPwFv5dis8BN4ruUS/SSea2LRcz2faIUVni/4AszO5YmEYiSjAc7ftoGp6QKoCkdOnqA/nSTe00+52SYUDfLwvkmIJyh0aqQTIdaN9rOQzXNsegmr6bCUW+Rfb7yVuWyORqtOsVmj0ayjKALFepl4uAvL9xnoHWbDpi0MpbuxOhLJRDfTmSqaqjM82IvdsckUMqzrG2S4a5BrrrqWDWsuJBqM4HkO2XKB4/+XvfMOk+sq7//n9um97GzflVZl1S1bsix3sI0LYDo4AUIJJYnBQCAQQhIIIaEl9GA6GAMBTDGuWG5yU+91V9u1dXqfO7f9/lgJDD9MAMtyQZ/nmWd3786cc+6Uc+75zvt+3wP30NUawFQmES0b3ajhODaOA5Zjs6R1IXpDp1Au4qrA1m0HWXn2YqbyGTJjBa68cBXdXa3Ek30guvD6Q6zqbaenL4lgaczWZYIBP3c/8n2icR+6Ponb5eXn92/nXz70Pu78/v9QmhnC7ZJwW7Bv31G2bzvCt265Fyu0hlg0ya2338eL1/8l77v+I7gbTXbu209nzMvE0QE8vm4Wdi/ApamsXLaEs1adw/hgGpccxcDB1JukizWypTovefVbuXPzJF/+xn1MzuSRJAm9aRDsCBFIuPFG3ITbPQQ0iVu++kGy01l6lyQxNehP9rFz9yaWLWlFRCDmX0b7gg0US1nuuOt71BoNYrEgBw49wJe++TluvuMon/vBgziVYZLtQaK9ATxhlXe9YiMej4Yt2sy4K3jbPQiCjaUoSIpCQW+cKGt28gtWAftxF8yiIP66yplzQk5yHpeKhoNtgeZJIEsyPR0p6jUJrxnDrosIOCRbOgh0hvCmXGw47ywuO389dk7HtE3KDQNRkFm7Yg2JQAhVtfHKkM9OcN7ylcRaOvH7g8TDMVrCLvLFMsVshtl8iaZho6guktEguXKBas1g09Z95Aslgl43HtVDyOtnfHyQRqOB6HZhWXVUxUWhlGVyZoqAz4/b7SWXyxNJtZFc2oLm8iA6DrbjYJoGlWoDvanTaBiYloWDhOhIhLqDuGMKP/7hTdy96Q7ckgCiQ71RZfeefQiCSCTsw+t3oSgKqgDd3d3IioBf0zAcnW37DyEcdwiqASo5nZJdY1nKz0KlhW6phf37BkjnZ6ikj3J0PE1bwo9h2WRzTcxGHU+Hhu0Fb92hpx4hVfXgNrwolkzVqBKLtuKWNBwLSqUSnVE3gYCHiNuPz+PBMgxCAYn9A8dxvDahQASvL4CkKaxcuIiJvENJ10m6JDxem+nMNJ2JCB7NRbpQZbRkctaSxUyn0zSNLKojI6oqRsaGugMmqIJMKBVFL+ik1rQhOgb+mJ/Jwxkigof/vOFfufrS13DOmmUsWtHBst5e+toX8NevvYZv3HqQN731bUQDnSzo7UaWJTZtv4+1a/v59w/dQHtqKYqos6p/CaonQCwSwbSsJ5w7zwhFz0JORt6c8ot/QeCrr151ytr8Y5Al8VcV0SLrrv+ViPFM476jcwB4TrHJ9+nmZD617Tjs2jn+GxFFAKb16+f/jFj0zORZUGDvDE8jT6VI9HQKIM82segMZzjD049tO6xa3ENHR5xQMExdbyAoEgGPm5mZNGtW9JItNhmdytKZ8tDbnqK/NcE5C5ej2wKi4qO3p4tkPIQ34EUQBVYtWUSxWCWoKbQmEkQDIXraEtQaDdK5aURRpFHLs3X7FtLVOtBkQkpTpEZvews+n4ti1eDCs5ZyeGiYY0NjfPjGT/K9n36XdWvOpdXfQpsvSnskxs/u+gqVchVHENA0Fb/fg+rWOLt/A7PpLJlMhnxugkf2HyAa92IpNke3j7N8xQa2HMpiWw7rViVwoiKLVy8iY9QwLZus7UNTFerlo7gFk8GhcXZsP8a2LXfxilddSzIGx6Zn0U2bZHw5Wb1B2OPGsm2uueZaFnZ3k4yH+Z9P/Se6XUGRVapKENuCg/u3I0pN2mJuTL0GOAiSxMjQYQbGRpgojBNL+njzO67FsQSmZkRaknHWrj2XK1/0KnxhN4uX9xIOBwgpCh2an3XxDpqmRFU0Wbp6BVOZPHNTWcrpKvlcBr+scXjPA6xbFsfj1picLnPWmisxm1Xe+4F/Ixn24fXBhqX96HqdF5+3AMfQGRst0kKElmQENRbj8zf/nP/62i0E1CCBVIhA0Ed3IIDfpSIKEvWagYCIcMJv6GRdM0Fg3tRaEOfP91f5aTzO7BpsHM573kUs6tVQFJXzlq9ioDCJhY0ky3zkQ+8l4HEjGSZdqRR33/sYVQRcvjipeBd9nX3UG00ERWJiZopjMzM0ZYnRfBqXaNOoVxAUGd1y6GjrRBHBaVRRJYmB4WOIjk3TcnCsBjWjysLeXgRZoVCpUmtaJOMJPG43pWIGJA3RsenqWoqhGzSbTTxuD7FAgISi0eNOornciLKMIIqoisLhkRyFQglVUxEEgY/+y3/wpS98EVnwoagK0WUBosu97Nh7HzNT2xgf3cXyRa0cPLCHyaPb2bbtdh64/ztcfMFyxoeOkk5nmc5mEZEplEqMTs4yeSiDWNEIij72jc3x4GPbyBczTKXH2DkwhFcSSVdyaK1hBK+IbQGijduvoYbD6C0uqo06sWCQqOZhYUeCNl87bo8XCROv5qYjGibqkWmVVNpjEdrdKmuWdLF0xRJ0p0QjV8ftyDjYzGUztPk0BJdET2cbSBb3HR4gGolTrdVABJ9iU8hnGZnNMVNusGNgivxIDilTx3EcsuUSimyjVm38ORklIOE4Bo6tEimLvOSK8zFsgS/9aBM3fecruJacx7KlL+fW2wf44Y8384tfPsDQwBF+8P0fYps1PvHJd3Hn979ERBNYtaSLC56/lkrlAMlEnJe88Hns2Lodr0vANvUnnDvPCEXPMgamy+A4TD966iqchS/6IPDUmVf/oQiCMD8GUSK2/nqq+hO7/dblmwAAIABJREFUsD9dvPwNH3+6h3DKUKT5j78v6KVUN4Bfl/NsGNa8GZ8AZ3SiZw4nDcbPVIg7wx/CUyHoPBOiZJ7pYtEzdVxnOMOfK45j8cC2A6SiEabTeYrFMrVKlWw2i2mbjB6f4Nj4IMt7UuTTJtV6A78L5nJZOuJumoaJLBi0xKIcGhmjUKkyNzdLoVIgUykhOCKy4DCbKeDzesiUijimgW45uN1ujk9OoJsmHsdHwB9D1206Y0FkWWHL/iEQHGamS3hVjfjiGP/+rc9zxRUvp9G0yFbKOLqAbjhYTQfdtChV61y86iIqxQozM1MUiwW27ZsmFm1BFgXq9Qayp4277t+N160RCXnoTrZTlUwKuTxBd5BXvezN2DZsXNtPtVGiXrApZ5qIQCjg58j2Bzg+WUY3HAxBpVwaJhWO4op4UT0CX/nalyiV0nz5m5/DksocHthKpVqmUmvQt6CT9nicRclW7t28mYceuY+xyUPs3bOJcsmk2bSJ9vjwt/kRBBVvxEUoZNIhFrDMMh63gtfbzpRxDFOGmbkywUAEuwGyB65+3jl43S527TnIjn0HiUW9bNq8m2/efBduxcumux5Fr4ygqRqDw7OcfdbVaDK88z0fJNXWTqwtSYu7wsO776fmWAiqSiKc5NLFKxlNzyJrMobhsKElxus2ng+ym4xZpaJniQaCSJL4q+pmJ+udnbzNV0Obr3bm/PogogCSOB9X1JWIs3XfIEeP1RkcHaGpusiOjTM0sIWBw1u4/IoLGNw+yj237+P2O37J8LEBfG4XbcEYR8ZHSZeylMt5NEWhJ9VFWyJBSFUIuD3EVJWelhhWvU6zaRML+HGpKslYBMOs09QbeFQPmjMfma4qXnS9hkuV0FQBsInEWvF7oziOiqGbRCMhRKuMZTn0ticJ+twEYzHcvjBBLUZHSxxNkREch7pusLIvjmiYuDUFWRL5wIdu4IXXXsNbr30rL3nhdXQv7OWNL3stF154Ff9729184xvf5WMf+2fysw/y2a/cxOHD+1i+sItMKUd7WwrNoyErMkt7WhFFAcuyScaDqIJEJpPh6OAQxXoTyeVmSUcriiMyMVekMxqkOJsnvjiOv8tDoMWPICqUJtNkJzLIqoRhi+jVGqYOrXE/UZ+brr4+3JKIbehULINUJIZRyxEKevBIHpb4g2zefhSv5icVCuKRFNYtWcrg3AwvWNlBQpWYytVYGG0h7vcTDMSIu0WWLowRjwSpmSbLOxPIqoaWCiNqKm5VQ3TLNBUXHeEA6WyWmKMRqDtEqyrL1/Sx6Y4HmRueIX10G5WKxbate1nU282HP/4RXvzi1xAJhdB8Irff8XN8xhCdgTCXXbSaN/3lS9g5nEORFTZeuJbnPe8iRtNT9PR3okZlTPtM1bPnBKPpKutf9AF23v5xXMoTG0/9MYQv+WeoFZ8RF/8nyW/9LHStpP38G3jFN7Y/3cP5TcwmyOrTPYpThigIvOayhb/xfhKApjkf1vzrKg2PjzA6Ix2dDhzHYeE7f0Z4/TvnjXzXv5PIVZ8kVzWe7qGd4RnOUyFUPNPK1D/TxaIznOF0cdLo/bdvZ3g8An09KY5PzYLg8PCOvViiyOjMDKuX91MoFHCLAjuPDPPotu3kSnUe3HmU/r5udh8coVatUG5UGRwdQgsK2Aqk7TqaLPOKKy9GkQ0OjgyydlkXHklBFSRsSaSpNwhoEoptIzsqwbpMT8CHrKgcPDZJPKjQEotSyDdwe6E7lGR2JEMoofGBz3yAtQtWUW02cASHpmUS8aVY07eWpiWAJaC5FPK5AtsPHQNqGBWT3iVdTBybYGZmBJdL4cC+/fRGHL52762M5+Zo2BX+8rVvYPveI3S1+vnu97/JxFCJcr7GbG5+89wS9FOvGti6iUuSUFwK0Y4wFVcNfyROfIGPUMrNe97zdu677U4MXeeVV7+JodFJwlKJpmGxa6SE4LFwt/hpjYcJuF3USxUGj08QiQXRal4uPftsfIqMZUlYgsBt+x9jMreT2elpREkgqQYpl6osWbSAUDDABReu5+oFK9m67RBbHj1IKBhhYHCKeCDEOedcxMUXX8p3f/RLTG8e0apSyewk4veyffdhVq5ZiYVNT0cr1WaOtSvaWd2/mM54ile94kra+mL42ls5VE8TWhAmuTyB4PbgDgRZsaqX5e0d9CY6iEVbCXr96LrNfNSQMF85eD5UiF+VOYMThYZOJpzNX9fZjkNrvA23R0M3LI4NbkXXh4l3xGlbHEOQbSxzPgVp1aLFjB6bwIeCz4ZYQMbr9eBRNeIhH5ZhUKvXGZ+exrZhdjbHWFlncmKchFciGQhiWg0ylSp53URRVKKJVoqGzlhmGtWt4Pe4qOk2hXyJllgLjmVx8OAOqrUCLtkkGpSZy2WxHIl4S4qJTI7ZapV60yKXmyWe8qEbJnXdBkGg1mhw3Rvewe0P7uGTn//u/NkLCrF4knDAR4c7Qp+8il98bwt9nSlcATeRRWGkiMKjR46jRGUOD6a55e7NdLR0U7Rs2iIJ4sEoh0Yn6WltJd6SYrZSpNGsgOiguiV8bpWR8VGOTc8wNjXJzoERsoUG+ZkyU49NobhEmhUdxxQJdsfAFjBNB4kmoXCURMjF4MgkPk0kZIoYksNxqcbeYpqaUaZQs7DRcLk8jE1MEwp4aVDl8Ow4yzuS1IwGEV+MvZkSj0yMkEoEaDbKJKNBEBoUzSaDEzr5QpX0dJrZXBFBkbEqJdwplWgoSF8oQVd7CjGQIOJ3UakaNOo2C1eE+d+fbkbyBPElvBRKRRatWI9jN8ikswweOMqmO25DcXmQmzVa4in8PhdXXb4Bt0cjFEtxyXmXofmXEYiuoHfZebzyhddxw1+/i3y+RF0/E1H0rMeyHdZc9Q8gyfQmvKekTdt2oJJj4TXXPul2bPvUllLP//gtEGlj0/98m/C1Xzxl7T4ZMuX5D9LUg598mkfy5Dn5WgkCvHJZCrf6m8JjpWH+xv0ez1MZyXJGkIJ7j8wSPvcGIuuuJ/vopvmDqUWoi8+G3CQLn/fep3eAZ3hG81zzJfp9PJPFomeSqHaG5x6/SxB6vOn7GX4TVZYJ+1woEjiWjcft4aXPvwjF5Wfk+BhHJjMs6m3Fpcik2lq4/IK1hL0exmcLtAbiGL4mjx45wCN7DzE+lKZRNghIGq3JJHc+uI2mbpCKRhmbKqK6bIJBH41qBdGRqRs6mXKGkYkRCnoTt2yj2CU8viDRUJyJmVl0y8Aji0xMz7A03EW9KuDzy2TTOVrDLZhNiw2Lz6O/p5dStYFkSkiCgKnXWdW/gI5kOy3hEMuXdCJaCvGgn3POS9LWJgAi7/vkx6g3DGqVBuvWXcquQyO4NRcP3H8PyYSPWqnAmJ6mKVo4ooNXUyiWmoR9XqKxMIGwjKzJ1EoNXvGqtzOzv064J0CgxYPjslhz3vls3XOQ9lSMrbt28vCDd7Ll4bspCyqvvewSXv3mf6bQLHLrA48ylZlECkJ4Mdy/+X7u3XSQ2ekMTavC+pWXsLL3Qhq6jlszkEw/23Yc4MjgQW695zG+9bMdFE2dN77ixZQqdRwMRI/C3uOjxNu76O7s4sqrrmLzfftBFshlDQq5/UQiQYqFMqtWrkbyWkwMjyD6/QQDUSRRZmY2zc0330G5WqJf6qIllWBZJMLP7tiGJLiIRaKE+5IEWgM4jTzxWALBsWk2LQROXq/+pij0q1CiE3lpgnDiHg78w4c/xIazorzoivPIZnJ89ye3s3/HMcb2z7F0dSfxRX4m5ybJ5bMk/W1kSjrjmRlGcnW6oiFSsSjFQo3u7l5CfjeJQBC3243fEyCTnUP1ujiWzuCoMgeHj9MWi1EpFanUq9TrZUbGh0jG2xkYGSWbm480iYZ8DI2N4XZ76e5cgD8QQ8JhaHyWhq5TKtZRFYm5uRlmJkZZ3Z1CkDU0TxDRAVkWUBQZWZL4xpc/zYuvOpf3/M11yJKEiIA/EMCyBdwBD/fcfzdHBnfxyc98mne9/jpkt4y/PYgW9HDuJUuJr0xy1oWrUdwKjWyRyblZ/B4Fx7GQVR+6WUZ0y+AT0Js2pu1QrTdpNiwGho5jmjaSoCI4dfo64iguGQQVb8qD0ahSGcuTm8riUVUMVEzTYPfgJE3HYDpbpD3pZUF7ksWeGEu9XeycmsPldRP2eckXCmwdmqC1I4Ya0NAMF9O1Km5fHG8oSG6qRq8/hqaqaKqHatPmwOgc+UKdiNeiVClz1pIeXIrGwp42kGUCzQBtnV0E4vOV4Zb29BIIxvC4VKpmgu3bGqxccwmCI6I4frweDZ9q0tnZyue/8N/87Mc3YjlF0pkqiZZ2rr72KspFHXdiGYdn3Owbr7Fj3xHikRDHx8cYOrKPXQfH2XN4kvZUFPn3VD0T/tTNmCAIHcB3gBbmNdSvOI7zWUEQIsD/At3AKPBKx3Hywvzu8rPAVUAN+CvHcXb9vj7Wrj3beWTrjj9pfM8l6k2L1o3vBFkl/9h/nZI2bdshuv56lCXrmLvpdX9yOzXdpFAzkESBqE9FFIQTCvqT56ObBvj0B78Ijg2iRO6x/35a023C664Hx3nOXIiZ1rwv0Xi2TtAtE/HN5xI7jsMXHhnmb87rRRTmRUpZOj2a8q8FrD+ftCrHcUj91c3oh7b8+qDmYfLej/1/XlgNwyK18QbSj30WWRJxK8JOx3HOPs1D/oM5s06cXp6JvkSnw9fomeCddJJn0lhOJb/rvJ5pUWZ/Dvy2KPpEz//jX68z6wREw0Fn4aJuRNsm4HGjuECwJQqNJoZeI+yRGCwUaPGE6O9dwrb9h1FFC0lxs37tQm69ezNOQsTOmYgBBVdIpTRdQiuJ2I5A2Odh+bI+hkePY4huFElAVDQsvYbV1Nk7MITgwKKeNlA8SJZBOBIg7PKRKxdoYiCLbnS9iqqA4vMwkktDROf86NmM1cZZ27mWvgVdHBsdIx4NodcbHDo2jt4wGRoboH/pSuYKWYymiRRxcASbRDyOnkmwpCfMvQe387LnXUt6roiquBgZfxQJixZfhPRsgclmkcNDR0loIRJKgLplYFgC6eIsPX0dvOUVVzFnLqStNUW+kOd7N32Bar7GlS+9ilJZYM3yhdz54I8JKW46ejby/OddzIMPPMCWR28j7arTHYqw9cg26jmHV155FXW9ScArc9vuu9jQewl2sxWf34MgiBimiWlabB29i5GdQ7zuNddTq9roeo24O83gwRE6Fi9m1+A+yvkq8RYf2zYf5NKLnk9Lso1qrUZTnCDsDyGisHzlCxgen6RSq2ObJu3tHmrlaQTbZvXifhzbYWhknIHZWXoiCUamJhkcGGXDOf34vB4QFUzdwjIabLr/MdxIlJtNMsU05bqO6pEQnMepQZz093QQHOFX/kQ4Dm3xJFe//C24XSphn8PPfvpjupefw7VXvQy9WeGWuz5HuVxjfN8E7cFONJeHsbkZVnSlGJmexe3xU8gXiCbjuGSF2WyaRCBCzbaplMvIpo3ikSnUm4TcGolomFw+R7VmomggYFJpCJi2STZfwesSCAfclBoWxXyZlpgfC5mm4VAuF2hrbyeXm6VSKRMKxDDNJiuXr6Ul6GKq1KTamOHv3/0h/uXDH+G6170Zl+bixq9+kfPPX42syXS0rMKxCnzi45/i05/+NDd++QvsnzmM1bARZZF3vPYNzI7uJhT0UqaJr2mDO8CxcpUAInNjFsV8FhwD2zQQfSLHG1mihDl0aAjRJSJ6ZOymTqNo4hgOgaibZLKVYiZNMh5hpDaHWBVwBJNqySDeHwERElIMX13Bsm3y5TJTzSw9gSiJYJDth4cJB+IEI34azRqdPh+LF/Swbe9ehqfnWL6kj8lqHqUuU7Gr9Le1Umsa9LfFuGv7YTpb4gRkD1NNG7NeojUWYHyuhC3qGKKIaonkc7MYksorXvp6vvqlz/CuG/6Go4d2Mjw0icfjY2D0GOFYH9e+/DqOTx1n92MPIykNZNXGaTRZteI80tkSLrEO7gYrFi4nllxKtlqj2WwyNjnD0JED+MMCU4Mj9K7YyMqlrXzt61/j+c+7lExRpm9JiO9+7QeU8pXfufF6Mrs/E3iP4zhLgXOBvxUEoR94P3Cv4zh9wL0n/ga4Eug7cXsL8D9Pou/nPCerUr3kq1tpPf8GkORTJhIBRNfPG2I/GZHIsh0qusXAXIVC1aBh2PPO/6cA23b49D9+HhSNjW+8DiyTyPp3nJK2/2QcB+LdT+8YTiGOM58vrUgC773t8G8c//amYUTh155Fp4s/J4HotTftmk8nW3f9vEgkq+y76xPz3wo//InfaZiuySJICvEr/v1pGPGfxJl14jTxTBSJfldbp5rHt3sm5eYMz0V+O3roZOTQc0ike8rXCUUSWbu4G9M0yBcyjE7m0JsGZy/upCvZyuh0iTZ/mLXL+jk0eAxNMVm5eCmW2WCylKbmcShnm9SEJkJeZ3b3LH7TT9NuUigXmchmGZ/OITsyKiZej8rE+DDhaJCaXicR8RMIePB6vLSEo6QSIaZmMsiigGVbDI9OMp3JM5MrcmhkBrHp0OYKY8xKPDD8GBFPjNHpCarVKh2pOLIgYtsmvTE3Dz72KIs7+5BVk7DHhxIwcESLidk5RsbGuWjjaiR3lOevvZxaxUAUBTSmuP2n93NgzxCpniS33HEv1QmdpB3EKjepC9CwbLKVWQzHYHY2QzlX54f/+z0CAR/Ll/XiSUj0rlhAo6FgWTa7992NV9b46X33s379OhRJYemiXmTVh2hbCJbI2iXreMEFFzA7Pck3bryFvftGWbfgfBb1bCQUDiIIIqIo4HZphIM+1ndfznVXXkOvV8Lr81Eu17Ath6ojItWKrF24iP6V3YzvG0d1SezZ8wiHD+9hJmtzfNxNrlrmBS/4C2YzWdxujUQ0giTLjE1USZdz6E6T7Uf3ki3WOJRdQSrmQ9Ia+FRoVHSaikC2UqKql5FsGxuBQDSB7XGjSQKFcgPbdNBr1q+dik4YE81rRvOm1nDiX7ZN0xRRFJWGYXHHI3eSrdlcfcWLkCWJ1f39fPBvPoelNwmqUfKFArlyiVQ0wuhcAZfqpmFAxdCRHZtcsUxrJMLo5AiFQpaWeIy2Di8zhRLNpo6qKmiyQr5Ux8Ei7AsyPJVHVSFfLaCIBkhusGXaghH8fi91U6dUyGMbBogC1UaZTC6Lyx0gWy5yfHqSfClHrpRmaPAQsZCPgeERfC4XiViIpmHQ0Z5kZGYEt6Bi2Q7bHt5BV3sb6fQMmmYQ87qw9SYXnHsuHtHDooWt9HQmObuvj1RLjIC7k3bNhycYpaXPQySWwB+IUDFMxkbTuHMKZkmnPdVOaEGAcMqH2JRxxzWiC4MYIhSpMjtTRHIrGCUbd6tMZFkMRZHQCwZyUyKgy9T0Crato6ouzFwDNwJHhieQHBt/3EdEU3EMk4AHHNvAq4goQTdxt4NoKSxZ1I5X8zAxl8GWJZqCTblWoaHr+KJ+XDhYkptC3aDUKLF6WS9n9y2lpaWFtWev4EVXX8RXvvDfrFq+kRu/+UPa+i8l3xDIFLMIsoRtzfGz277G1MwvWb3yLNpaO4gkI1x64VloVoloIsZZ6zayesXlGGorliQRCnjIpwe5/54fUCiOMjszhTvgR7UqZGbqrFq6gomxCVoTIVYuORuP5n7CufNPLt3kOM40MH3i97IgCIeBNuDFwMUn7vZt4AHgH04c/44zHzKwRRCEkCAIqRPtnOFxGKZNptJk1fU/xBjaC74I+fs+fMraP3mxkXuS5tWW7eBVJTpCbv73wBT3H5jj5evaeNO6ricVgaIbFi3nvRM0D/mHPwGA89ZziWx4F+Fz/o7hB/6LsPf0+gSdjL7J3f6e09rvU8lJSa8t7GYmX+O6b+/k787v5u5jWe5938UIgoBp2UinubzWCX/A5yT5apPeS97z61JyLh/pBz72B39eBEFg963/xpqr3z+fOvoM58w6cXp4JotEj08PO9URKE8U5fJ0R7o8hzbwvyK//QtnhLjTyB8aOfREnHy9ng2cjnVCEARmSxV8/hC24eARytQaTWbSRfYNjbCwpwvHdFBVDc0r4nbC7Do4yIKebuySwyXL+tk3N0mXGEFxq2zdv5d6qYhu2UTjYaplg3rdxDZqeH1eLBO8QT97DhycL4suqHS3xsgWixRqTXwujTWLe9m0cxcruheyYfVKsrk0paZCxO/GEQTe/PZ/ZNdDP+E799zNTnM/b73q1Xh9Lu65/1GWL+lDtZt8+kd3EfC6Mb02stIg1O4n5qSo1yxKMxavvOz11Js2mqqiN3UMs4meHefwbIO1G85lanyOH/38IKvWXcL08H78XhVBFBmfGCcSCuHxxIhqDXKlOjdv0vm7d9zApvvuZPOjd9OSCtLdtXK+etrkAD/8yc95wavO5+xzl/HRf7qeREsnC7qSFOQcPdEO+mJJmti4TA/3Hc+xdPVFeOM2ZlNkeGwCr9cPlonebGJZIEkCqqZi1CTSlogii7hdKrv3HqFQaiD2d9PQLJYkehnvm0GqFEh5I2Qmx1ja46E2ptEotLBj71E8LheFzD4kNJb1tDI42aRe78Xn8iKqHu65637617RiNG0EWeIrN93OW9/+HprSEKrHjSfUTrOSppIps+qcboIuH7se3UMdC1l0YRXnODJXwBfUAAdRFk+8t21EBBzHRgAUWeM/Pvbv5KpllnT3ITsmhcAwm+/5KZesWsI///SzpGIdRIIRQimJ49OzWLZFrV6nbtaQHRnLsliQauHQyDhuWWAqYyBIGvVSGVXL0xEKkPTLJKMdGI7OZDpNyO/CdGx2DxzFERSqukVrog1qZeZyOY7OVmiJhvF5vegGyJqEJppoXjcxv59aoofFqQRlEyYnh5mZmSYWXEg6l2XXvhoez1aMep4f3fRdLrnqWjae/wIUWcGyLLweFcvK87a3/y03/+hbaAk3U4cKeFrcrOldQMCbQbA9tHUsQNcdDAP8skVF7GB85iCJeBsT+jBjxycplooYjTrx9ijZYo6JqTTekhuj2SS+IkA9B2LNIqZ6KByvIIiwMKjSSIQoCCbZY2XCPQnSA7N4lrrZMziEpioEA16yuQqyL8BMEM5r72X/8TxpKYdbj6PKHjyeFAcGprBlmUQgyKNjGUxd53heQsOhuyXOTMHgsX1TLEzGcHmDHByYxC2ZVJpV8qYMQhPTNPH5YHDXGNe9+hLu/8VDLF2xhpXnn01bbiGJpJ9zzr2UyYldVOs6pmOwqjeKSwrg1ir0Ll5GLZ0j1tKFN+6iVquxdd8RLrt4A/dtuRvDPpfhfdvJTh6nr6eP7GyOicFp3vPhj5NKJfnBV76KY8uYNYO5dI6h0WnqzeYTzs+nJJ9EEIRuYA2wFUienKxP/EycuFsbMPG4hx0/cey323qLIAg7BEHYkc6kT8XwnlXYtkOm0uTl//MYxsw4aF52fP/UeZL8ZN9xADJbP/+kozdEAVRZpC3s5gW9cXZvPcb7/+0Wrv/JgT95E2vbDi0bb/gNkQhOVETb8hkQJXovfjfGb5Vzf6qJX/MpOM3RNU81iiTQNG0EAX7xtg18/mUr6E8F+OfL+gh6FBzHoVg3n1Pn/HRgWjbhiz5I+Jy/o/fidwPgXnEeuW2fJ//Qf/7Romp3fN6j7HMPD5/ysT6VnFkn/rz5bcHoyfJEQtYz2bfo2c4TPddnOHWcat+hZ9vn4KlaJ6q1BkeODNE0DFo7WxCUAI4gAToRr0KxVKK7K8742AQhTytLuzt4/sZl9C9oYTqdoZBz6NNSLOtr5+DsGFXDoSYZFCo6tYaJIwr0L1qIL+jDMC3mMnPUrSpC3MYXU1nU3kooFKIzFUOwLWKhFqanZmgPJAkGohhNgz1jE0R9Gm5JppSv8k/vfxv3PbaLDQtXoAVscuUchWyOWCKIKhrccusWIpqHjRuX0dERRnW5CHkCREJJHEHm/LMvotEw0XUdxzZxaRqWabNgSRu+QB6P3Mqac5fhmAaKI6FqLly2zlwmg6goSD6Z1R1t9HaswCV5CGhjfOfLH2bb5ge58opX8opr3kyzafDC553DqFWlb3k7iUAIj+RizYaVeDtULEWgM97ComQKB4GmbWJYFvVqDWwBxd3KTCWHKqsokoAgiDRqFpZp0WgYYDu09KziU5/6BF6zQNSbp5itsvGyC/F6I9x04y/43o/uYkXfEiLhKB2JXvq6uik2yvSvaWflWSvwejzs3L4dtyPiUpoY5SlSEVAVmel0FcmxaemII6OCDbOlIl/51o/p71/CzV++jZDLi1WbBUCv1dmf3odh2ixd2UfA48FxBCR/G5GAh3q9Mf89oC3MlxQDbMf+VXT+sr4lHBmdZeJ4hempcXrakhyZKJEtmvzLFz/L4X07qTemmBycwqKKV3WYPD5BV9SHIrrRkUmXikyk00SDQWxRolZr0KyVaZp1MpkZ9k1PYzgahdwsNQOOjo4RDPrwBsK0tLXiUwR0vYomCCBDqmsxa5f0Ua43UVUPiiQR8PuZKxRRvUEUWSLk0dBwyMxO0mzUOGvxKkqVOosXLqWcr3HvQ3fhT3QzOX6MB27/GS3xGAG/G5dq8d2vf56m6aC4PRyfnURwS6w5fwUvv+KltIYdbFNH8QW5c8duHjq8j6auYJs2qlNFtiSGZ8dZ2teKZeo0DQvHNnGaNXwJH9HFcXzdfnzdXjTVTzjlo9Ks4wTdLO1rxTQdikWdyMo2FugytmGSOZLG5VewLBPLNHCJEpVKHUSLpas7UBUX5bJNPOQjavoQGllsq0G1CZpLJK3rNOplREHAkUSWh8K0+BV2D8+hSDIdYZWeVALHEWhtj9AIS1x05bXItTp+t5uAy4vLHea/Pvt1PvO575GpwPKFXnZv2UQoEGfb/Q+zb+dmzt9wEfGWBOFYlOnZHBkKJJNxYuEEbQsXkStb1Gt1VFUeLw7GAAAgAElEQVRi8PAONm+9DZMKDz3yML5YK45fZXY6S1sqwUc+fyPRRIK29lZe+5d/Q+fC5aw5aymlyjjjY9N4XL4nnJP/5Iiix03EPuAW4AbHcUq/Z1P5u/7x/6kJjuN8BfgKzHtPPNnxPVuYL3kNhmXPRxSlK6B5efFfXU1H1HNK+shWmrzpTf9JesvnTkmUiCTOl34URYGlbQF+8ZEX8tJ/v4sffPGH/ODGn5O755/+KJGh0jDpuOCGeS+mx4lEjye/9bNEX/NNEhvegdZ/LjPf/ssnfR5/EJlx/vpf/vb09HWaEAQBRRKp6RZuVSLqU7GdeQHQth1M2yHqO/0V3k6Vx9XTTfiK/4Dc5PwfgsCdP/gw63sjp0Z407x8+P1fevLtnCbOrBNPHc/kaKLf5lRFF/1f43t89MvpFDOebZvyP4Uz4tCp58lGDz1XeCrXCb/X45iiRCKaYPr4cVQJ0qUK3u4YPrePibksOw8MoskigYCEpHlYsmQx+4+Ms3xRF4mwh1/s3sK9P9tGxBXBH3RjY3NWV4riTJmm43DrfZuQZBVDb+L3SrhUDdHnw2VLtHbHOLhnlCV9cdavPZfbfnkvHkFDVEzmcmmkpsHGFWvpawlyZDJLsVqmYcDYeJaEz8c57ecQC/iJRF0MH63z5Qe34hJcvPUtL+XnP7uHW3/+GLLiYs05F+FyefD7YxwdPMDFF0UQhfk9hoCJJIlUqiqV2Tx79+/C73XT05dAKNaIBfxUSxYL2jswvSb+oIsZMUutLHH02Bid/QkqOQePV2BBe5jtu/dz7VUX8cWb/osVrSG8PRs5NDGNJdqY2TmWpRLc+b1HyUsltmvwlrdfx8D+3ezYsp+WtgtpiBLHj5R42UtezfDIOOVqHc2lEYr6aTSa6E0DXTfIZfO88S+uIl8ZZefuQdaes4af/PA+rn7hMp6/4WwOjqbRgjK9oSTBqIea7eXKjdcwl61iOzp3330fe/cc5n6rQtNs8O6/vY5b7tzEm199MZlmhImZHKqvBUdt4PdpuKoifd1JHKmDz914M9+48b+55ILFKBrsOHiI3t5WpsINNvYv5OCeSaqNaQy9gM8VplhtoNcMXJ5fexUJzKec2Y6AWw7SaDYJBYI8sPmXiIKIWRtAlloZGBjD1B2uvPxizl6zmofvfhRHC9LdkmTv4HGEgIuIorGgexHpXJbpmXFs20F1uWg0m5hNA1fMi1Et4I73cfDoUURhDJ83xoFj4+jNBl6Xh0q1gekYyJaArXmhnqY9GkAWFNK5PKZporkMPP4AZrXK7rEBkvEOjuTnCCbaqVeKbDmwjcs2nsvBwVGSLW0UywUee/QBvvm1b/H9m77OQ/f/FKMhcHR4gLgrxTUveznv/8Dfc87Fi6mUyvR7OjCsMratEgqH2TE8zeVnreG7Dz3EVKHKRd0deGQbTYlAYYZSrMnZK5ai+EI88tgOBqanSDVixESFmXoZQTGoj1do87XQCOkoDZHB2Tk6NsQoN2qsN8N8X9bxtWqILQq1rEmzZtGbSjA+lyce9lLPVUhaGv0dC8mNDnLh4sVMzOR5cHg/L1y9hl1HjzBb1Tmvt4WHJ6bp8YUpN3UeOjpO0OOnJ6IxOjtJNOginS8Sb4vgc7fhKeV59J678Ae96GadxV2LmLFjeFweute0QE1iOlOnUq6w45FfEEvF6V7eiYBMKJzisvVn40l0kc6WEAUTSRRoS6XQNI1f3vYdxqbLLOjrJhYK8r3v3EM4EmBwz17cmkXvsg60pMTSRX3ojRqyJHNs7hjhhUvYced38bp8KJL4e9M4npRQJAiCwvykfrPjOD85cXj2ZAioIAgpYO7E8eNAx+Me3g5MPZn+n4sokkg8oPH6qxeTvXgBH7580SlL/Vl4ybtBEE6ZMfG8Qj6/AKmyyFldIQ587uWs+8c7yO18mMh572F68yd/o/T676PjghtAlP5PL6bs999A+OIh9ENbOO9jrTz6j5eeitN5Qsr1+XLkn7hm6VPaz9OBKAp4NAnLdrAs51e+RcKJaLEz/HEUawbdl74XrPmqcSga2Yc/dcrFr20/+ifWvfiDp7TNp4oz68RTx7NJJHo8v53G9Mf09Yc+5ukSi/5cN/ln+OM4HeLQsyn97KleJ1yayqLOFpJhD/Wmm2AwSke7za6DR7Ask47WJJZeYXSqQKjWIJPJcejwCIblsHzJUg4OjNEejGAtl6iWKhQGSzx/w3J+uXkvl2w4h7mZHIXyLEZTxzAa+HztWIB9vIyUiDA5NksyGqKsyxw8chSXS8W2wePyYjpgiCBUywzMmqgeL0ajjiLKLOqPMlid5JKes2lL+fjO9+9hIJ1Br+tceN5qhmZnWb9mI50LaszVirTFggRDdebmZshnpgELRdYAAUEUEEXYu20LuaJMb6KNit7A7bjIGCUMQycUiBCNxajbabKFGksXd7N2w1+gSjH27HwEGYNUMsW2PSOEAwFER8TvDuKSZMp6HUdqsijRwUOPBFjeYfPC151LsdHk4I4cxwaO0t+R4AffniE7cz8XXrsetxhl7Pgxhib3sqBtHblcAbdLw+12IYrgOAK60eTYFKxfmWLDeg96s8Jfv/YKZoanyOXzpIIS3/nq3Zx31SrCjoUgeJicKxP0+1i1rJv2YIPWRJLLNyzC7dJ43Q3/yvuvfzW50hy15iyKnKDaqNPh76JcHqbetPnCf76bt73vMxx99H4WrEpQNAsUJuos7F9Cd1uMY0eGOOJXEGyDhl3C5wnT1Rmlq2cBj21/GAEHx5kXi046DXQkk3zg397HzOwAC7oWc/jwPRxXB3nokb3sHh7Ak1DwuiN0dF7NeO0+cs0qrbEktUIeW7XwCBqlah2pVkbVfCzqXcLk9ASO42AKItFogun0NNFYgsnjI4iYKJIXBGhr9TIx0iBTzNPV3YPiSLhVi0q1RN1WmZyYQlQUVMHBF40jmDq6rnN8dppIPI7P66biWMiVMjWryYJYBw9u34PqGEyW8kR8cTpbuvjof3yUf/yHD1BuGHQmYxwdnqJYGOPh7bdywUX95GplooFWGj4Hv6pimiaNepVC02I2M4dt2/hVD5oLjs5ayIqC4nExU8jQkYpwZN805WoeTVURNBlXVxNt2kHxyeRHq/QFBcLuAFGfl2y2gCwGODCdJuF1scHjZZutU87qBNvD5I5lOa42cUswlc7Tmwyw99gIa3BTNaqUqyZTVZ3+7oUYkkI8EEaVSjw4MEk8HmIyX8Cnqixd1MnhqRymY9FsWpSLReKtMZK+dvK6RcAbpNYwCfl0Fq1Yx5ILXsoSAVItYZK+C7ADQ7jqPhYtDlAuN1i3ZgWWJbGgqxvZFSJTq6EPDnHg8FEWRGVqSp1E7BXoDZ2papbellaEmMrzL38Dlz7/zciCSCDg5e8/8H6Wn5ViJpfni9/4IEGvl2wuz8CeES68/E0oWgBvQOKCDau5586fP+Hc+SfvBE9UHfg6cNhxnMfv7G8FXn/i99cDP3/c8dcJ85wLFM/4TvwmojhfMUyTRd65sZd/vaxv3rz2FBB+8Qk/Iknhgo8/cEraPIkgCEiigKZIRP0aQ59/CemHPgmiROr8d3NspvJ/ljoPv+hzAOS2fOYP6jP/wEf5t8+8m8M//QnhS/75SZ/D76Pziqe2/acb4YR4qMoiDiBLp05M/HMh/KqvEz7n7+i+6F3zIlGoZT5l4NFPPyURUj3xUxNl+FRzZp146nkqRKLTweNTav7Qfv9YYelMGtoZnkmcKWn/uzkd64Tbo7Hn0ACHBw6ztLudnmSIQ0ePEfJ56GiJIzgSPn+MtlSEkN+FKNkU6000WeDI0B5qtSJCTSJa0/Cg0Lk8yn0P7SHs1cCxODIyjMftYtniHpYu6adeLdMS9tLbuwjLEBibmaZcr5LL56g0SojyvEmyjcxMdg5BUmiLRZiaLeJgYjWKqH4vmj9EmyvG3Gyad37sRrL1Opl0Dm/Uwyv/4m1MjEwjGBkWL+1k55YdNI1p2qMB7tv0EC2JEFt3znHn7ZtOGCs7lIpldL2OLJjMGXmq9TKP7tpFTZeIRpKIYZOsNM3wzCyvfc1bWXn2K/F63MTCPt78xvdzwcXX8BeveyMBn4dkMs50uoDP5UWQZfSmieoobH5glCU9eW78xi8pVXRsQaSlFaymzQ9+ei+pBRGWrk0yNzuKIKcxjVl6WxJMlndxaN+DbNn8AJNTM4yPTXJgz90MHd7LwX3byOsutMACvO4QJnU616ykr7eX3q5u3vued3P5sovpSyRZddbFqIpMPObh2N5NzGWL9C320NGSwO/18oUPv4ubvnc71UYZ2TE4dOAuIuEIR4aPMzpqoWgyUyWZd17/Njbv3kxAcRHWoixa1MldP78XQ2jiSvq5+eu3cGTkKKuXrUOWHcbGRigW/h975x0m11me/d+pc6b32Z3tXdKqWrKKbVmWGxaOsbEDNqHlMwQ+CLZpoSWkEXo1mIRAAMd0MMUVbIMs2ZYlq3ftStt3Z3dmdnrv53x/CAjw2cTYkhv7u6795+yc933OzNnzznvv89xPmKDfQzFfp9HQf7v3Wdndg46Ft7/zIxw5keS/7vg+6UqFx783xo/v24qp5mXRik7WrOzhyBM/5NHtT9Dd0YfTohFsaSNo91It58kXSygihKNznJoYptnvxu9rxmY2oxtlvE4P5WKRVDaHgYAkGpjNNpKxDIG2DlRNY3pmimQyRjZbRFGd1PN5mrt6afJ5qaoKczNjZIplahh4fX6yhTzpSg1RVUiU0mTyFfYeOEi1XGQ6GueC9ReiUsPldFPXC/znt2/lZw98h8m5eX72i29zaHgn86kY0VSOgN2Pze0hk4ORyUkOzkZp1HW2DLbwi6PDvGrtGs7vcBKPJSiINcp6HlNFITefwzDLrF/VhYBIo14jGoviqzspJkpYvS5aW/0YLj8O0cnIXAy/10t6Io4mW7h3zxj37pmjUmggGgbVXA5HlxlRVqn4TMg+K1G1QUmtE/CIhEsS47Fx/A6JpW1BdL3MVHSOmqgiuUSUShW320qmWMWvSfgMHbNVQzJJ2Ox2JiJJvC0qLb46ismE06oRiZe59/7HcdhUmgIuvvyFO+nvE6FQQ7eW0AWZYLAVVWvB5elgYi5BpVLGqslsffAeZiZ2E67NcyoU4tGdD5PNZzm5dwKXUiCRKTPQ3cngQBdOrxWfS2XD4CDlhkC5XGOwdQmL2vqx1lsYCCwlNfYoq1YtZ8P5W0gVin/8+fy/beCf8kRB2Ag8BhzldDtLgL/ndF3xj4AOYBp4tWEYyV8vBF8GtnC6neWNhmH80Z7Gf85tjw3DQDdOpyw+242m//V3UD+5l8Tu2winyyy74n0gCCSe+NJZL/N5bCTG1W/4GIgS8R2ffdLsKPemD0EpR2L3bX9yPL81vpbVM9oV7vfiW3sTCAKpZ2n+/WIgX65j0551RepLHsMwWP6hB5jdev/pA4LA1772fl69qv2Pn3gGcW/5FOWtH3yhtz1eWCfOEmfTGPoPN7Jnm6cz37PJdHousqSeizkWePHxfJeVudfeRPnQv//ZrxMd7U3GqsE+9FqNG669nEf3HuXkyRl0vYqgmanXDfLpNP29A5yaHKdSLeBQBHr7u5idS5HJplnU08NsLIJUr5MPGmTiZSwFE5HiHJU0SIZEW2srZotKPlfGrJrQVBFJFGlvaydfSDEyPsUNL7+A7YdnqBTySCrEYmmW9S0hmYoTDHiJ58vYVJ2hyBxO1U5yPoLL5aXZ42YkEqNerdDd20KyBCtXNvGGyzfzoc/fTqmQZ6B9gEcOPAqSyPVbLiU0XcfX1kNHeyuFUgm5keGx7buZnB1nwOMmXizg8/ioixJtA0FGh0dR7QqR8Tj5coF3/d2nyJeLlJIxdhy9l6svvZFYIsMNV1/GybEQpUoVRZGJzIxzdPIAoYdHOf+GSwk2d3D0+Cl+9rOf8Ma/fgWaXmP77jny+VMU8nWu+otN6LJIJl/A63HT4m/CYbPwkx9vxWFxkCzJVEppjGqKgMlBopChYfFyySWXI0sSqXiISiFDuRIHV5DlPYPYbR7q9RrTs/MU8lHi0XHa2loRjDo1QaaWjvCyS67DolTYunsPElW+/F/3sGxpN8tXb8TQLfzyVw/Q2tKGxWxHEIp4fTqLenrQqVA1+jl35SC799zLtgceJprIYlJEXvWXW3j0V0fIFrIYogmL2UyxWGA2NgWigGBAR6Cdgq6wfPk5DAwuZWxuH2LZxg03vJbmgI99hx9n9+EHWNm3Gd0EQ1t3kclnmAnPs7q/n6HJcWqGgIBMLDVPwNtMrpgmn89h1kxYLHZK5RIWk5lSMU+g2c/hYydQFQHdkKnVymhmM2DgD7RhqldxOJ0YokRDg9JsGJvPRSJRwawqTISncbt9WBQZk81KXdeZn53FbXWh+ZoYHTnIqsWriSZStAXc1FSV8OQ0XreZ7pUd5PMFXn3127j9/lsxImUEr4MlXR1MpyK0+zuIZiJUqw3KtQJXL1uOzSSiqFZqepZKocq2UAyHyUkpp1MspfGYrUTzcbp9rex7/CSTc1M0GjrFYh5VNSPoDWS7ggkBi2JBtUqU9ArxchFnq5vI/jkapTr+VS4MAdKjeVz9DhTVhBSuopksSB4TDiT27j2F3WpicV8Hr9q4nlJd5eHd+wil8zSMKos7gvQHvJycCnFoZg6LImKz2GjyuJiP58kX49gsTl77+mvIprJMhqKkkhnSJZ22JoV9J1NQk+jxyGSsVS5YvYlli1YzPjVHvlDCYbfisIsM7d/DxHyDWiZONB4iZ2RQVQG9bMNh87Ns9SqOHByjI5jH6nExEgnT7LFjc3mwSCKxRIbFXX1kilm6F1/EE/d8E3ebl6NDYa55+Q184XOf4+033cxDD/yU6Yl54rHIk27An03Xsx08eZ0wwKVP8noDeGmZvJxFBEFA+nVZ17PBMAzqJ/ey6+5PIIoCrR4zsztupXXju/BuuIX4GfIreiou7Pez7+6Pcu41H8Z3wXtZff0r2fruTb/9/aOnYlDK8eq/e8szEq1MikTsiS/h33AL7nU3n3Ex57fvf/eqMzruAi9OcqUaHZd+EGqV0wdklZltn35exLXdt/8tKzs++L+/8HlkYZ04ezwXpWFw5gWpp5rvN3P9sfmeaRzPptRtgQWeCc+3QPS785qVf39e5n66PBfrhCCKXHPVZkQM6pLIZChDoVrB77RQrkM0kWLVQBu97Q5qJT/xrEA2XyKfLeNyWchmExw6fgRZVOhu76A0m0KWGqSVDCa7mWKiSEdbKx1BP1OhWQY62wlH4nS2thBL5SlkM4RTCexWDw/vP4VRN8jm0hiiRF9fP+VaAZAJReOYzQqa6qLNamc+nqbZ30yuVCBWqlMsF2l2enA5LRi2JOlKgblMkfe9/UZGRo7z79//CbUyXPoXqzEsCjaHhF3LMhuexyS1UszNUK2UMKtmLH43jZCOz+PG6fFz0aXXcl/5m4yOxqhVq6iKwK2f+RAOj5Vgfyt/8+q3c/hkhNdecwnvuOUWAn47y5evI9DaQ6ClC/3EFNqAweO7D7PlCjOrlg6Qmj0HCYNUOsOF5/Zy6HCVvovaOHLgGBVJ5rLLNuKxWrn7nu3MzU1hsfgYjs1xyRUX8707fs7KVYuZys9hsljIx6fJF2NYzV5a2/vI5krMxffjrpeZHDmIp2k5pWqV/p527v7xdvp6WzAaDb7639/lkvUbWLp2MeOhk2SLSbY9upOJZIiNly2jp201kWiOQuogfo+LarVKd1+QXp9ETczg9bgYT2W5dssV7Ni5hx/9cBstHgXVItPX3gJILA4EmE6K5EQJk6TgsFjIlxIUy2Uuu2AD2YqVzZsvQJQbbN15ks4WN3VngvDMKF6Xk6/e9R8MNHUQiQ2hNuo4LTXyuTpOTeHg+DB6TWSgp49j4+OksykcLht2hxuH1cTk7By1hoFZhkZDooHB3oNHkGQJ1WRDMymksnWsmojN7iFfKuCw27DoItgsCI06ostJtdigXC8jKeB2eWkPNFEoVyjm80h6CbcviGYyE7ArDJVrlMt5rC4X8XSB1oAZt7cZRSjjddpBkTAaOpWGgb/Pj6eskM2nMKsBjoVGcMomFAEUi4P7h4dZHAzgJEXA6eTh0RlkzUyyXKDT1UTHsqVMnBrBpOaZDE9z6eZl/OiuBLlCAaumIVlFdKeAVBPJzhXwdzhQVQ8nDh7EGbCSmI4hmRTaXRq5cJWirmPxWjHqBg2jgWKWMeugZ0G2aXg9DhLJLOVSkR/+agevu3IzA0EXZlVhqpBhJhvGbVaZLWYxaRKyriBWqsi1EqpJwiRp9Lc6KZZTJHI5TJKGJBbxWuscPBzC7nCx4cLNDPY3Ychukuk0s+E4Fk0jNj/OZGgEQRVJZHMUMlaikVmagzI2pZUW7xI8DhftbU3U0bHZYcfebYxsPcgFW1aBqCCWq3T39XLFhRsZHjqEZMBjO77DosF+tj9+kP5uL4dPbmdwaQ/zsX2Y3TrGROMpn50L9SUvYQzDwLPuZjb9zetZ3GL/7XGLSSa55zaQFHzrb+bV39x7VuPobbKReuJW3vShv+HAD36Ce/07KVbqvPNnx7nmdf/KkQc+zdduWPmMx5cl8fT1GAbutTfROINtw99513EAYt+78YyN+UKm9jupsgucJl+u497wLtxrb6Jj07tBUkjsvu10ycCuzz9vGVj9zU/dpWCBBf4UnkxAeSalYc+Wp+qMdibEqufiehYEqD9v/rC07Df33MJ98fwjCSKlSpnp8BxbH9lLNpOkWq2QLhok00ksmoqEwdR0jHKtwrrlgzT7A5yYDCFKZlpau5BMdhx2C/PJFHpDp1I/na3hdDvwdPpYuayffKnMOauWEYnF0cwqx0YmaAv6WLW8l8GuNpYv7aLZ5cEmW7GrLloCLmrFNAePHSOTT+Gw2rGZrQxPjFFtGPgCLXT4HUiiRD6TpF4pc2z8JFOhMH57M1JZ4PGDx0kkknz7Fw+QmS9y9fUX0dHUSrPHjuSucXJ2jFg6S6nWQK+K1HWBtpZOQtPzzM2HcbQ5WL5hFbseuZub//ZD3Hjj/8Xv8OCz+bFYrAhVge7WlQyNzvP6ay7l7ju/g0mskIgmkaQsEyP7KJUKrFmzgvXnr2PTxn6SqTDTieMEFzeTzKRo6gwSS4QIBFx4XA4kzcTQoVOkE2nC4XmqmQIOk5UVy85h46bzafK4ueTSi5B0nUKpgiaZ0Bs65cMHkDGYnAlRKOXp69jIpitew3kXvIJqvYbLauaRX92LSZVJJbLsPTDHO9/xRopCBU2zUa0WGNo3QzZTZ0Wgm6Clkyd2HmPPzicolhQs5hpLl7WjqiqTCQi4ejl0dJx8ZJZGvc7569fwlpvfT/OKJjTdxFRVpyJXSLp1ujf2s2RdC4tXB7BaFNw2J2+94XpUSaWny8+SpUt5bM8QHqvC9u0HGOy4hCf2DXPfPV/H6/DQkGVmExEqDQHdcGHX7IiKBbvJQkuwnaNjIzTqZVxOB4VskUwyyuR0CEEQcVklBFmhUkhRKhbo6Wilo6WXVCpNLJmiuamLUgksqgWn1UwkkaAm66TTOdLZDFOzMWLZAuViiWy+QLM/QCIVYzY8jaHXEWQrVouJ+cgMU7MhHC4PVk3GrUoEfDZmI3PY7RZmQjOE5uZocpgRJQGToqKXGgS72qjIdurlGDIN8rEU1UqFWqWE3qgxE09zMp1mX2iOcr2KJpio5AsYGoRiMxiyDb/FS6NqEK1W+KvrN+O22lBNKtagGafLRnwsRblQIhROkErNE1jaRF9HK32tvaxe1EbGYdDusOP0aJjcOppZopgsUVBrzOay+OwWZkMJGrUy1maNqUgcl10jGUshSmDRBFYF3DRh5aGjQ9hdFpq9HvLFIh1d7Zhb2imVC9jsdrLFIv/x1R9z9/37qeZNlCoNyg2JCzdfzptu/L8MLumjapgplfN4bBaOnRhn256fECuMoYgG6XiK8myWm994EW957eXMTCUwqwrnr13J2978Wqwpge52P7+4/2fo+SpWm8DxfcPIpiyL2qyImSy7du3lVCTPdX/5ftwWjbG5EJLa4NSRKH2uIDPTIXK5HMWYQSGXecpn5zMuPXsu+HMtKThTPJ3/nro3vAsadR79ycdY3uE86zHpuoH3gveCJEOlCJJ8uu39GeI315zcc9sZ6S7lPu89oDdI7f7isx7rxcBMokibx3xmOnO9yGnoBr5rvgjRMQCURWuJfusNL6j3xqwIL+iSgueChXXi2fG01onnIRPnbGZknC0T8AVB4M+XF3K22sI6AR63w9iwfjHxWIZAcycyZabnYgTcHmq1EvOpHEFfgHypQKFUoSXoJhqNUajUaPYGkEWBXCENgGCAapY5lZwlP1/B6/Wy+ZxlDI2HafI7sJjMTE1NoZkUJmYivGzT+eSKWTJFHZMoYbOaiMczaKpIKpfDbrEyNh2iNdjK3HwEn9NBvV5GUzUEBHTFhtTIMRFNUhaLiBaZ7HSG1732SooInLdkEcv7F5EvpHls926ysozbJKEoGh/9t2+gNwwQRDZffgUruyx876dbsVqseJ0eauUKW155He7549y9+xT7Rk5xxWUbsQP1fIHJahXDJLDpgms4cnyYXTvuYcvmjUxMz/LaN/09f3fLm3jr666mLLro7BlAliVMisD8/EFmZrN0tntIhaNYXB7mYlbuv/vb3PKO17Fn3xAWk4Wjx/Zz7uBKHD4X8/Eol13xKg7sPcmmKy9CqWSZi8zz/e/fjttn4d3v+zJve+ub8Xjg6msv56F79/KKa6/HbLVSKhZRFZlI+BCJWJ2LLlhPW/+52O1mfnzP9xk6epjODjfXnb+Wf7rta1gEM4Jipqs3wGvf+AFmwnHef9ONbD5/A9HEHOdv2kIq36BcLrNiwM/Djz/MYn87vkXruO9XX7sQg3QAACAASURBVEOsm2hZMohkZBh65DjnXr4Os6qSSifpbgown8likkVmjoTpXtxNWVcYWLyGX/zkp2iaRLocwR1oRhOcZOQwyxYvYzoyR9DlZ/LIFI18Cl034e/q5OjhYyQySRp6A81kwm2zEkvEqDcaVGs1zCYLul5FkhT0egWXtx2PxUJLk5/dE4eJz85TKdawm1VaWgNkshUUWeXcZSsYC89jkkQMQSQ2H8Hm8CALDbKFPGZZZD4dRVUdAMiygcfdzszMJAh1+jpasbuChGbG6evqYWJyipGZccrVGm95+zW87KLX8KWffA4zNmyCgmgVSVeLOEQTgiRQbJSQDBHJpJHPF3GarSgSlKs1NEmmIkLA7cMqW6mWa1gVB0OjRzA7THg0Gwg6xXyJof2jTCcTtDW1ceLUUep1WDHQj2EqkW/UMTfchAtR0rE0WkBFL4OimGhutSPOl3F0+anWDMYOTnLh6qXsm5ggWSiimkTcgpXXX3Iho6EQw6FZWrxuHj9+iqVt7cTLNUyiTjKdQDLZafJamQ1HuWzLdWy8+Br6e9vZvWcftXyMsckw56xaRrFUYc/eoxwf2s+G9Z0YukC+WkavtZAWTqFJEit87fh9AWwWDd0QqJQldo7s4dTxEd62+fXMuoN8/7t30N7sYfTkfmwOD+Vigdm5EOtWLcXj6mTlOUGKqk6jXmNxWzflapETw6egZkbT3PS2dXPg2AEmZ4+RT1YZmpgmnyk+6eZmIaPoJYp7/TuB04LJHyP1xK1MPvIFNv3lP+A+/71nPS5RFP7HS0iUSO76whkdP7X3yyDJeNbdzMR84dkPWK+Cu+XZj/MiQNcNfHYTz4V2/KcK1A3doKEbz2m2U0M3IDIKriCpPbcx/+03vqBEogUWOFM8nQ5i8P9n+pxNfjcT40xvvs90ZtGCWfafNy9kkWiB0xSKRWano1QbItHQJGZFxmlWqNfKWOQ6AlXK5TyGrtMUsDM+No3X6UMxwOu2kcjlsVhcqGYX1UaDw1PjSLKGp8OOz+xlPh6lv62ZaCTBieFhEukiDrcXm9XEoeEhyhUZVRCQJJGZ+STpbBaTSSWWiCOLIibJoJhL4bWYiCaT2GxOWvwuoukkRi1LSZewWW30OD2INfD2u8lUC5gVjcHOLhq1OlMz81hsDnyaQkUX2HV0hJaOpXT0LOO8i67g0JGD3PXATsDAKRpo9Rpday7B7G5jWyiKiwZXLFmGt83NRDpGXGpwwZpVvOzi6zi4/wih8YN47RYaRoNPfe6bLFvcxyc/+zW+/u276Oxwsu2hH7B921YyxTytrefR1xqkrhs4WgO85rXv42VXXMFN7/kI99/3GDaHh56uZnpWtRNo9hDJRchYFHbs30FHl5sDjz+MW1F5fPdO/B4Pt33pR/R1tvD1b97Bxz71DY6PnKRer5JKRcEAWZKRFRPNLWs4d915uDqWYrOayeVSDPY28fgjB5iZCrH10DFGpmc4dmKUzef1U4hm+NXPvkdXWzNf+8ptBIMq07lJqrqCrKepVmscH02wetWlaMFF7N37c5b3LSI5H6ORjzF/bIp3vPP/sKitmSVtnTT5mihUdY7sH6Wq12le3kpdquO2uonOx5E1jRoSHiXAod0HOXhgB3ZDolHI06gXkRslAqpOJF4iV4wzeWoMURKQxBrZbIZsJkUuV0A3GjR0MKkCTW4HA/3LEBBxepqo5HPU62WK5SKiJtLa14Mv0IxmNpPLligU83gtFo6MnsRhUnE5zcxMj9HT2Ylm6JRzRSwmDVXRUFUbTrsKIgiCgiyCz+OhUq1wbHSMRCxGa0uQeCyM3ihjtzlwe6yMzYUxKQrMStQKOTSzQiGmIFRrZGplYoU0sVgW2axhCAZWTabWqKBoVubzRQyTgISIYTQo1co4JZFUJIxZlskUc6RKWeLZCuvXb+b1b3sT61euxWV1Icom6nUdUbGieVw03BIep4rT7iR4TgBXwIOpIlMtlqjW6uRaZdY2dTI7PI9iNjGXTNPqCODv9NLs91FVRIbm5qFaZC6ZY/fQKLJqoiQaeBwmRAHMmorH5cDjs6OpGpMT40yOjpBK5+jq6uLeH/+Q4eO7qesCo6MTDB9/DLOcpWZUmI+KHHhiitdcdxUes4dyqcSKZYMEm/109S4iUlSpWIMU6kWa+nyEZw9yTr+DTcvbKUQnaGsK0NvWjt9vZ9nSXk5OTOMKyDS1+lnS2cXXbvspj+0J88F/+BJWp4c1K1ewuDeApOSoC3mSqSr1RgVBf2o5aMG19iWIe+P7QW8Q3/30smqcFoX3fuIWPvehL+He+H5SOz599oOsFHnbv9702/gMwzhjm/DUE7fiXnczq//iAwQvvpITn77yGY2j/7qEbfCidWckrhc6umFQb+iosoiuG6e7ZJxhYcQwjN8Rop7+Zy78Oj6d095dzwW/EaViv3hh+gC9kLNBF3hx8KcIHM+1b9Fv5jlb/K5v0cIGf4Fny8I99MJGQKBab9Dmt6BZ7WiKgiwZaEqV0bkUNrPG1FwEm91KoVJgcUcnzW1NlKtFxibnaGsNEotFiRhx8vkqra4gLS4vdaOOSTUTno/jsNUxm600+70ks1lkDK669BJ+cN/9XHnxZnYdOAxVEYfTgb/dRyZVoLvJz9T0LHaXj2yuhFkz0eZRyKXT5LNpzl81SLVSI5arEYmGcQRa6HYqrFs9SCSTQ9J0GvUKdV0gEp7H1ewkkozS3uTnVw/O0N7RRaVSxWK1E7DJlG11PJofs2YhuKgDLDY6AwKPT5cwmzTs7UEqjSpHRka5dssV9C09j6PDp3A38pyYj9PVFeDY0Ek++ME386lPfINFfb286W23UK+lsFjMtHaY+MwnP8Nb3vIWPO5OqrlT1PQKN3/wjXzho9/E63bzrR98lnVOeGzoIEv7ushbVXqVZizNNr5y2/3s0B6nUquRLWQQ3EWsONm9/RG2PbaVv/+Xj7F122NcsfE1DPuHyedSlEpFWgMujp3YTWfPuditJhKz01iFBqNDjzEyNc7rXnU58WOj7M8cZM2Fizm67yRf+9Z99C9qxVKy8IXPf5E1i6zctedhXrXlHfz83h9zzcvO4dDoMVaeu4XRiTDBZjeBgBOb08ToeAS/08fLrtqEJkmMT5u5/euf44LzV9DZ38qSRctAqFNJFcgVy3StWUEsV2Vw2Tnk01OUajMUIznyNYG773mUeum0R4wgCPR0NNPd2sexiZO0BlXy2SyZdBaPy0+tViZXKiILMhYVDMHEqakQgUKJtqZWatUyjmYvTtkgXygxYOshmp+gpMnIdSvz8Sgup5tIKonb66LaqKBnKiwZWEwul0B1e2hy2AjHY1SqZTwOF4JkolwO4WhyIcs6bpcTl0lgeHaSRC5DJpdmcW83TrcHdT7KdCNKX+dScsUqN9/yXnQDRkdPEvcmGA7nEOs6isnCoo4B0vkkNV0HVaFeM7AIBkuCLdQaDapGjXwig1AXSZVrpMpFbJpKKVvGZXZhtVuwW/zMRqfYdNklFJIR6nKVI0ePMz5xksV04264mC/m8HubcEsqsWyUw7k5TJqVuWNxWlvcmLtVzBYNs0MFHeqiwTLNzZFQFKuqEo7OoEoakipTKFYQG2U6PXbSxRoNuUa0JNDbZuLUSByH386+A7tQlBbOWXsuOx55hJZFLRQydaqVIonYLF53ExYzGEIvl758A05vO5/+9D+xYcMgU0Nx/vkb/4nN4kAXa5gEiQYK5KuUxDwnQuMsni1QLVXx+QPIZoVKvYymWAknC5g0maZ2L/c9sItf/nIXt/7HN6jWDWqCRiEX5vaH7sOop2lp6aWSrWJ3uhHrdRQl9ZTPzgWh6CXG4Pt/DpUisT/RpPrDlw3wD5fehmfdzbjX3nTGSreejA0f3QrAJ65c/NtjZ3qu1J7bePU39/Krr9yBe/2Dz6h07AeHpgHY8cHNZzS2FyqGAWZV+r37RtcNdMNAFIRn3SFP1w0M+O34p4W4pycWiaKAiHC6G6BunPVufXDaKB1gJJJnSavjrM/3dNF1A+/LPwnJ2ec7lAVexDyTLIinazp9JnkuTLvPlAfSAn++vFAFx4Vst9MoiozXF2RRVydHxqapFEukMgIOu8HS7l7GZ6bpaG3GEKCYr5HIlVjhsjAui4hWhUqlzGBPF5WhKks6HZQMFYfFQq6Yol6uIBoNJkJhZFFifHqeNSuWU2/UOH5qAk01ceT4SXzeJsJzEWxWnZGxKPVaCQQFu8NMPltGViS8bjvziQTUqjjMdmq1KibVgaLHcNssKHqFqWiS2t7jCIKE05klf8FqRidmsHtkZqMRwmkT3/jGt7BZW/mLywa441vfJ3RKAMGgHtdxuFTqzgAvv2QLH/30J1jWdhW2HgdSXiYvWwh6bdxw7dVs3zmFPxiix6VyPBGnK9iJWtVptcvM57L8y7+8hVxR4qLzlnByNElLs4WapKNYGhSLIRTFgte1hHQySl9Pjoe27efUqUe56pw1jIZn6W4J4lAFrBYrwd52sqE4q5Z3cujoGNe/6iqOZPchT1rZe+AI8VPjrL70Mv79qx+lUjEY7F5C/8AS0ukUqWyBsfHdZOarZFJbKVUrXN+yipPFHBZrB4nEUfLJDILLTo/NQPI4ibvSRBoZQhMpism7WLqql/+466e84eVvwh9oZenKjdz/0ANctHkTNnEOe3svkWgKm62LuhHjypefT19vF0NTsxx8bIhXvPFm2to/jyzpHD7wEGuWBqnVq9y1YyvziSxdiy9EUuGyTRv4yjef4OXnbODq6z7A0SMHaRSPoEg2NKeDAyf2kw+VaDQU3HY3c3OzIEq0tnSRyWXwuuyE5xPYnBYkyUShVKKnqw2T7MDQa9QMg1o2T9pmRRZ0GtkU4VIOzepAq5jp6l7M2Mgwq1ZfyNCpA7isaRQ0WttacAd6OH58H11tvdjNKobFRD6Tw1Br9LT3EGy2MDoVYz4SoVTO0dXegcPqAVlGkM0UknHUmsHmC1czMT2GVTAxEUnT3dZDwOfG7QzwykV/zfTsKRqFEg9t20vfahe1eoW6IGAVVCyyFc1sYSwUQmo0qIkNLLKKLNVZu7gDVRE4MSbjd/RyzcVrUPUE3a4gJ9NWVi5dxC9/vhVZkqkhMxWJsXj5ahqhMRyaTiIxw1gsjr3fQT5SwqiK9LW2MDQVZnp6lldduo5QLEdZ0MlXRPoCLSQKZdLlCou77NjrRcxKA8mkMBfPoprs9PpdZICqUGNZp4eRap5KRWf79jtp7ahRKBTwOfw0eyRkUebVf3ktDz76E6anErziymvQ6wp/dd0Av3KmsNtFevp6OHDsKIl4jLVrV5OMx8nWopTTKp3LuxhKnWJyfoSL1i1lJFzlg+94G8OjUR755YOYrWY6g15GZqe4+lVvxzANgCjyza9+lk2bL0UwXPS1lojMa9SrBSpKg9e//nXEk2WGRz/3lM/OhdKzlxDpQpXwtp/z2E8/hiz96R+tIAinv+gIAp51N59RU+jf5eQ9d52Vcf+QO9+0lvldXwK98Yy+LL3jff8NnHkR64WKIID4B9cqigKyJCIIUG/op8WeZ5jJohvG74lQoij8ye+tIAjoxnNYhiYInH/dP579eZ4GPz0Swr3+nXjX3wypObB5nu+QFniR8mxLZZ4Lk+vnw0B7gQVeCvyhqfYCoBsCAa+T6bl5Ctk4rT6NgZ4gsiSRTKeQFAmj0SCXKmDXJEQFfv7IQSYjCU5MTBOPZSjXaiwb6MIkm6jlCyTSWZp8fkZm5nB7PFSrDfRGg7VLV+D32ImGY+QrZTqCnZR0gWK1AmKFk6MjNPkctLV66PO7yeZKaFYNTYZsqUpDh2ypTLgYY2hujky2iKGaOWdRH/lKiYGOVlRRw6zZSMQTFEoFsqUM6XSOydE57vzOd8imc8xHRnhs+y6cDg8lvUIyW6BYrOBdegEDQR+hTJZ4vMrHP/kNIhmNfaPHqIkWqCtc/fLreeVVV+DUNObjVdq6VuLy+SiLIulCGX/AiYhET7PGz+5+mGQySjqZ59DR4/i9XpwWaLbnKVcqeHxN9LauJR6bQHPUiAslOtqbuXz9Cr797R2EwmPMzqaZS8fpXRSgyW7j/vt/wWBbBz2DPi7ZfAnuDjdbH/w5lMrkExPcc99PmRvZTyqTp16r4DJbcdlMVCp1GiWR0rIlfOu/b6eSzzJyIkR3WxvRyBRD4SSFjE5boIdFPefidMnMhqPc+/CjfPvLDzFZneS8jeu45ea3IpoG8PsdaIqKUZymw2OlUq5QSLtYungpySnoa1vDSLzK7T/8d5qbA2x77E7qSolTiRlUWxOIVuxWBzsf34fTqrFz136sNittg73YbGZWn7uWE0djtLb2s2H1+WwYPJdMpsJcPEatlKWvdzHFYol4MoLJLBGKRGluDqCa7MwnYui6TjgaRRFqVOoiXouZc5d0YjbpOJ12DkyeYpFnCS2WJtwOO7IkccF5Gxk+vguTIOP19jLQv4RoNMbRQztp8fmZi0yj6wKZZJy6YGA1KyTSEXbvO0EmlcLt8XL9q1/P9OwM46FxSpUyM1MnsKgCcb2BtQItTS2cmBvh/HPX8aMf/BCbr5nBlRu492e/xFSvsXLNBdxy019jNMw4RTfHHp4kPZ/nrvv2svvgOCt7OliyZB3rz9nCWM7EhNzMxz7/AzZe/EaOHRiio2sRmlTnrZ+4l3f962dY5KvxpVu/Sld/H63+ZgIeH6qqMHLiIOcuX8rcXJzhyQRCXcTqsWJvdWBuVgili2QqKugioWiKRLZMPJGhVCiC0aCUqVEopLALMlcO9lNpqBQ0HT0ILrlGplbHsNVJ5GTCiQq2TBlZU7h8w1IKs1H6A24alRTh1ByGKJPKl9AsTmLheT7yj/9Adv4Ie49s59TMCI/uPI5JlMmFS+ilIju3H6XNtQifq51MOUY2WuCcwcUUcxV2DkkcOTrB29/zGeKRabbueASvTWE8OU+xVmVmeowl/V4+9a8fRBIqVCt1AoFuBFlhy0Uv46+vfRurFm9m6FSYSrWBoihP+excEIpeIhiGQffm94Cssqz92ZlSp/bcBnYvvvU3U6o+dcu8Z4xhQPc5Z37cJ0GRf90RTRBOZ0rlq0//5Fz8tHryZ0Klrj9lpo4g/I9g9Bu/oN8IR7/5OV1W9uTize+XnP0P+jMQI2VJfEbnPRMe+fFHQT8LfwNPg/lMGfemD/32C/+b3/xJ3vjBt5LYfRvJ3V8ite0jz0tcC7y4OVN+Ki8lgeXZeDC9FK5/gRc/TyYOLXRc+10MhEYVvVGhmK/isGs8cfAAU3MxiuUazU4fc/NJVE1lLpGiM+gkU0hhSCqgkqtlyFcy5EoVDF3G4fDR29HMzGwch1lkZHQcm1nDY7cRjYWZmo0RSWZZt6yPdK5Is8tJMpmhUddoctnIZAocOzFJODJPW1MTtUoOWbNRLOYQRBHdqNHZ3IlLczM8Pc2eQwd48IlDVPQ6R8emKVYrRCJzyLKJ/btPMjEc5af37OLkiVOADoKBWZNQNTPRRBJLiwNzwMaydSuJVgXKgVYevv9+vnr7HXz21i9jt1WRHU1MzU6jym1s23kYf8DPybEnUD1uMvEp9h/Yh8+mUK4ZpENVitki6UKdXCaHYMCy5Yt4240f5xWveAtf+cq9DM/VmRk+RpPHgyib6OtoosWhMXx4hnqlwg8fmKO9ewl3/2gv3/iv7xFoauLUcAaLw8XKNYOkh4qMjUxRVBIkxSoerYmvf+8ufvzTXex4/ABTsycQRFBlgURSp7vTQyEfZev2bfxqx50MLGnm63fcxqWXvI5yfJpCTcfsWcGAx0Yu3+DQvt3EUyasy1QkTeTTH38P4Sem+NRt72F+dpzzLnTTKBpgKIRmwpRzYdat6MFi1piYE1i5cQOJ1DRm2cSt//RxPvxPb6etI0DVgPHRWbbv3kYw0EJvRw/nXbCeXKmOpqnYTCoPPHoAVVGolItYWhTu2fkghw7tYMeufcwnEuSy86iajZGTR6nVauQKZUyiCVkUsDhkGnqFZUv6kSSZoMOCVVPwO1QcvhYi2QKRaApZr7G0ZwXlUoV8scr49DSh0CT7Du+jIcgMdHVhEoucHB/B5nJT0wVGZqbJFgqIVJBlEVWzcvjoEAgNAgEvIgaibpBMzSErZoJOBy0+O+lckWoDgk2dmCwOXnf1G7DarDRyYb51xx2sXzZIZ7Oba657GalMjNnj49xz7y/wKy4Gu/r5yhc/zfVXXMd3vvYp3n/jVYRDc4THxvFKc5x8ZBuhIw8RWGLn1i9+maHpOWRFQdcbfOXvr8dqexnVSoVX3HA9/u4mNizpo621A78nQMAbYHJqht7eAXw+F3q9zMT2Oer5CopFQJEr5PIJrBYTLW4/sXSKJqub0fAsqgJb1reAotLcESSSqfLuay7BItuw5C2ciBXQDRUxXWV1uwuLYqJQMbOmt5Nytcralf1UaGBTXWxcdyUuu410Kks6naOzo5PVm4Lc+ZPvct/PbmfiRIhIOMHocByn3YameShXczyyZytTR2dxaQ7mow2i0RJt3V6KuQQej4N/+cg/sOicTVg1N/FcGj3rRinrPL7rPnY+fj9WkwZCHbfDTqFYxWUe5NRYjKNDo1Av0B+EYqlEo1x+yifnQunZSwDDMPCsvwWE3zGKfpakHv5X3NfcRssF78R3weWM3HrNGRn3N0zf8cYzOt4fQxAEkru/hGf9LfRe/B46r3gFhz56xf9+omGAKJ39AF8AGIbB05HETgtGv3nl//hLGcZpASlXrlOp6bitCqos/l7G0FOJUM/En0oUBSo1HU09u5/Pil93AixVG5jP8lzw605rl/wj/Lq7CgBWF8lt//Znk9m2wNnjTJvunm2fn+dyk/t8lNUt8NLgd/27nkuebM6F+/bJsVtM6KJGOJ3kkvXLue/hQxiGgqiYqNarpPMFvA4Hfp+G3SwzEs5SKVSIZeJoZhOLWnpQRYnJuST93U10eYIcPjFCOJahzWsmncszEZpBNOq8/OKL2H9sGLfDwu5Dw5TKJQIeDxOzc1QqNXoHejk5FsLf1IbdBoaooRYttDbbGZsqoZkkskUrx8dmWbyohdaAi1K9jN/nJjafwGI2IYgGyWIOyaRw6OQwLb1L6AwG2T06jGYzkUsWqdZMjFYnsXut9DQPkjTVsYgJzg9C38oBLrzpRiKxKtsfHqdYUWny2bAqdhpGHYfdRiZ0mJ7uZiKzU4zFEgQdblTRxtJOMydmoiTmM9itPgYH2tl8/loGlm+hs6sXh8PGkv/6Fp/52PtQRRV/QMXqW0S2JGIyL6Gl+RQNzYLTlcUwumgIIm2L/KSrRfzNPnwdNmSzgs/s5ppNH+aeuz5Hp8dLtikLSpL+gR4qjQb2QDeFQpklvV4e+vmPcNvW09J/Ka/uv4T5yUcR8dA3sIT9+36I399Ee2sdk2MOb9/ldBacvO/D/0IiVeBDH34dtiaNq659E/f+6HaafAF+sPUOlgXbePDBHbR4m2jrC5Ktl2goNlYsb2X33jL7Dxylf/ESNl+i8K6P/S39HR2ogogmqwQXNZHO5mlta6NumNEBoyayeOUKXL4ggWA7uVKFu3/0NazNLjr8AY4c16ikKgS9XhSLE7dFY99wkRWDHTxx6CiCAXqjjr2mURQbmFUb6LN4PS3k6ipWq0Y9nySZr7F6sJs9R0ep1sqkcwnqDZ2eti6avHYmIhkyyXmmQlOoiojd10o+k8TjdTM1M8XS/l5GpmZQbAoWUWFx/yD1RpFKTaC9pY1GwyBgdUOjiub0MDIeorOlHZvFRSSbxSx5kGWZQjHLWHSWFVYbn/v0u+ntCZKpZNDLdQ6dHMVuUtFNGpFUmbFtkyjAdHSEHY8cIRAI8FevuYY7f/Ygr3nVa9iz6zH+6aYb+bfbP8PGN1+MKOjkiiI+l4WP/d1K3vf5r+D2BokkIwxYffj9FiRqDHYF2Ht8GLvTw7k9rTy0J07v4gCzkRiSKDPhS9LTrbHCs5pfjR3B5NVwOO20W5uIm4v4Sh4cZiejk3GWtWmYrBpXL1rJ1iOnQK9htgissLRSL1XpbNZwOXQeOThMc5OX7/1iO153M3sPHOO89TN0D5xLW1sbSxetIts8Q8CqceDR4wS8XlLpPK1NftzNAQqlDOFwDLfNjiHKyIqMpjloGNDm95EzJE6OHWbNyotpCwZAkPjnT32cw7t/id0Cs+E6PqeJTNZPf48bzWomFAnR19uDSZHJNsKMTUdZvaQVv9fH2MRuNKv6lM/OBaHoJYBn3c3AWegMc/fNfOjnw/znP38Z98X7z0gGw2TsdCcym/bc3nqCIJDac9tpf5f1N+N+8F7QbMS2f/z/K9MzDIN47nTmkdC98jmN8/lCN/7Hk+dPRRCE02VrCLitKsavS8Pe8O0DJHIV7n3bBmRJ/D0T6t9kHj2ZePR0hCNROJ0tdiZN0J8SSaZl8/tJ7XzqGt5nQ7nWIPiKz0Ji5vQBUWLbnR9lZadzQRxa4Ixxtjoz/a5YdDbGf655skypF/s1LfDc8FwIjH8oDi3cm0+PhiFgU3Xe/tqreWL/MVweD4VGAbVeZWnfIDPRCJIuMzWdwW6tEk/V8TrNWJwuzj93NdOhOVKRGNWyTjSWZT4Sw2KyctmGRZw4FcHrhVwui9lkZee+g8iShKOthaW9ncyE42SKaYxqBbvNynRolrrYoMmiEE0WqOsVlnQ2kcgUcdhs5Ap5zKqKQpXIbIL1K1fidHlIFVNUyzZURSKfL2Cz2pBVM7H5PMsWyTw0OYQsG9i7vFQLDZr8VsqTDdxWhVwygae5jx3bnqDSMEPzIJ1zBQqVAl1elURbF5rJhNPlxKQotPtNfPH722lutnNqqoxVs5CX7SgOEb8rzficgKPZx0QoRLBZY/sTB/jWnTtYe84a/vaWd1PIF6nkSmy6sJ+vf+cutmy6T6MwCAAAIABJREFUkGXrNlHXYfWGS5mYO8CrNm0kqwfYfnCcKvvZ8eB+5qJp/ubGV1PGQG7IHNnzI2JTUR7dfpjLXnYle45txWx307Wkn1f+xbU89Mg+IrMh/L527L5mSoZMdD6J29/OD799J3/1+ssZPjhFc18z1YZOj9fBJ2+9gw0bLsSuKfzth96D02TBo3TyzXs/QuhECv9iB36ni72PHSWbLKM2spgdOv3LX8kH3n8Tb77hMg7tGeUD7/0A2/cNkcuJrB+4imXX9rNz70O02h1okplyXcLhaSMUmsdqF6nXanzzu/fyyi3nIUsGGOBwaditdnwuGUFKYqu08MDOXbR1WNH1IssGVxFPxmlrO+1RJMkaR6YmWNzZwdETJ+lt78Jpt9DqsjMXTlFVRJb3BfnpI4/gsHlo6HXMZhtrli6mUK4Tz+VQFJnlS1cwOzuJYnERC8/h8jZj1It4PT5i6RwmRcMhWbFbXcwn5jFrKlTKRGtlWnx+du8/SCpbxuEIkEiXGejuYDQ0wonQGBduXs13v/vfnDoyyoHYUQTyCA6F4cgcmUwaRZFPCz21BqJkoEhg5Oq4/XbiiXkGzgmiKhZ++ehdVAtJrN52upespCG5uXTVDTzy8D2kghmGKjbEaO3/sXfeUZKc5b1+KnZV5zDdPT057M7mpJW0ygkhiYwQGNvY2BfMMWCCIxjwxVgGbKIVyEGAEAaBhBBJCaSVVtJKm/Pu7M5Onp6Znp7OXV3dle4fCxhzLWxJu0Lgec7pc2Zq6gtT5+uu+t7+vb+X7931DXoHeigVSrRrKRyrjl0yqRpFxuY05otFJrbejykZFBsGiq4R7NZwDYloZ5zFcYMp7ygtC168Zj27x49TXjTYtKqHfQvjNBo2xyamqOQUtpwdY3I+j+iZ+MQWB8ZnaY+ladYrxIMG24/lWNa5kv6UwE/2DHPpNa8n3LmBe+6+lVh3lF6lB5EQP7j/x4itIGF/mGCgk7Wr4giJOoXJLM2mQ3dbHM0PlaaPYrHCxz/4cQzD5JbPfpSaYXHlNVvo7O4jFQvzyAPfp1qaAxq0t2+g4aTxcGjZixwbOc75565ndHKBLeu6WL5sOSoZWq5FrrBAvpQnGlCZyy2ZWf/OEnvxx0/9oOpnZNP8Ly9eyfVX3UTq/HcQO/+vn7ViadtE/jTN7Jkhiqd8mI5lq5z/iveQPO+UEuviN76O77zhHEzL5S/uOMCPvvZDALZ/8jW/0fk+l5yulfNz1dFtr9+M43rMlkxSYR+qLP6nc35d+//JGCIelnPqJnMmAyrZRz5Bx4XvPO3vr49vHeFD7775P1LbfH7mt/7rf7pOSyxxOjjTQZzfRTXOr1Z5+/mxJZb4rziTqqIl5dBpwHOJhsPcNbyDvXv3sDzSzqrO5RwcmaBWrSIIOsv6M1TyM9y/+yCCYJOJhbAEh57OOCMjozRtyMQCGJZDpWIiqxaj49OcNTSAiIRtmtQNg7ZIAj2ok5srcHCsxJqVYbZsvAg77GNqeBrPaOFZNqbdIByJInoOk7kyniBRLZXQfQqqFmD1YAf7Dp9gZGqcXKFAWziM4LlMzCwQ0nRCgSDtsRBKMk61XMEfCaC26TRm66zt7kLUNIJ9aSYnRtFdyE8f4YXnn02qu5tXXL6GfSdG+MqXP8j8Yp2Xv+Aa1m3ezKFjI8RjIU6OThFpixNvi6Bkc1iOxdTkEbKzIu9510cJjv0IxasQDbm4lohjtDh7dTtG4yQ7fvJVntx9mEAgyNZH92FbDudfeS27dzzK6OQooHHZ5ZfzxXvuY93gpVQaB1k7kGbOnmZ5h8LRI/NccckqpvJ1mlaD9lSE1WetJBRcw5+85d3c+fUv0N7dD6KG64Ks6vT3d7FsxbnsPnSQZT6dk6UCZ527gcXpAqvW9GApNgM9XVx9zV9wxdUuPZ0p7vzY3/KCK69mYmEnUklFNjKMU0MyBcqVRY6NzNHZnSSZDvE377qRfUdGedWr3sRt3/kqr7vuhUxkDxMKFHjVy17D9+95lG3b9yIIKeqeS7nh4PO1kV+sEI2GsG0HUZI4b0WMPbvux/AssiezzM7n+b3fuxoXD88y2Tl6DDUQYDY3T0ULEtIbyJZDWNfp7e5idGSUQNBPod7korM2Mp5dQJAUauUG2VyWTCzC3Y8cwnMF6rUCfj1C1K9wYjzLQG8XJw9N0J5KMZ/LEon7qDegYVso9QqF0jxDfb24aNTkKolwlFx+HtNsIrgebfEIIiLnbxji+MgUml/m5Ohx9ECIfK3K1JzBVedeDU2LqewYTs2lo7eN4zOzxFJRCqUKttXCMhv4lACSBoVqFb8n4Q/qNJsu1WaDiByiZRlUGi2Wr+xG9AREt8jh3Q/g97ez+dxzueOemzl/3UUcPTaCGlMwymVkX4vO3rPYs+1BZMel2mpRL4/SNGsMLltONj5P3I5j5Fss7DdxFIladoo1Pd1EhjrA9NHVEabQWsaoPEXfikGcfQILrUVajsVIoUl89AQCDj7ZRQiHaUuFiZsyoUw3jxw+iKTIuK15js2A0WgxOXoCTwnR3TtEABmqZSx/mER/H+qiRFN1MFjE367QpiYwPJdNA+ewc3QP+bkyb/u797J23WoyqQSW1WLV0Goe2vYwYqWdZekNDB+foLOvi8VSgs/e9iMMYyu9fUM0Gg2SiRC6UGTPEw9hSSl01SGe7OSSy65AFFS+9+838L3HHiUScZDEp953CM/nEsubN5/tPfbkrt/0NJ63xC56FzSNU6a2RhkU3xkrbe+4Hm1bTimXZh+78Rmn/LT/6W00Dz/xvHnIcV2PxAV/9R+bdVE69XIdcB1yj9+I8r9g4/6rFclON47r0Wg5BHzSqYy+0zSO63q07DOfghY75238+Qf+gn99yapn1c/W4QWu/ePrT6U1CgL4I0zf9wECvmcWs9cVYbfneWc/q0n9lrN0n/j1PNcKhNMRVHk+Bmae6jo+H+e6xG+G07kWTuf7duk+AYlY2IvF46xctpJcfppEJEjVcHC9FomgRjQe5vhYnvPXLufHR55gsVCiXY7iSRphv0QkECC/UCYci2M0qlQaNmG/RsyvkEn1sOfoQVb0dzI1W8DvDyCKcN6G1WyfOEZU85iv1glLEcZHpwn7dBaNCgoCXekuTMtAlX2UGwa4PnyqCIgEdId9x47juaD7FcqlOrqmUW+0SMUjXHre2ew5eIxCsUR3eyee18KVJRQbSpUKAX+QimsTDflZO9jJXMGiVK6xau0a/uD3XslXv3IDh4/OsOaslVxxybXs2n+Ejo4UgiBjNQ2OH3wUx4ZU0sePfrANn64i+GRwwnTGVZaFg6gDG3ho6wMEwhoqMvGkTmmhgOnKLBRqtKw6K9ZfzfjJY6hCBb8mYXkSazecT09vN57nUGye5NHbH0RA4NKXvYGugV6+8e+3cnTvNq57zaXc98B2/vn6G5jI5pnLlTh2cDddgyovv/pP2btvP2ajRTQWRvMF2LRpPbd84d+Jxcq4DYtKIcfAWcsZXZylJ9FOVPfR23cxPllk+/57aDYTSGaRqfEco7lDjJ7I8/LzVhMNJ9maPcHZieVEOkNkrRrveetH2bnzEDv2PMbqHpFKrc6d37+fZX3dLF+2mu6u5bSEAJVq/ZRqRpKo1w1kUUSUZUI+ma9++WYuveYcorrOof3TbDn3ItLpDD++9/scP3aMoOrHbDVQdT+ypjKUiWM5CqZlE4unaNWreLLC7PwsbsshEFSoGA6abFGoGDTMOvVWk1goQsNqEfD5ODkxQTAYZLFQoKO9nYZRw3EsPAR8io9QKInilwj4dPyyQLlWRffp5IqL6KpOIOCnZVnoWgifHmLNsjSSI9JyXe7+6QN0pNM06iZG3WD92l4KVZdavUYkGMITRKrKPPH2JBXDRP15JkDTQwtqIIm0R6K4loemyciyhqzIBLQA+VoJs2kSUHU0SSEoBRgbGcFoNXnpy17HnXd/g57+AfKzU2zoX8lkIU+qo5OdDz5OwzQpNEo0DZemYyB6KqLawqzbuIJLrMvPQq5GWNFxDYdXXnIB24+Mc8mVLyLazPH9XU/Q0j2YN1nV243nwonsAhsHUsiqn6MTWRLhAEFdRJEE9hybpisRYv/ELKIosFCo4Dku1168nhWXvw4fJnt2PYGouQytvJTudIQ9Y1sZHR1h5sg8kdA6/vydb+HEkf3kjx9gbHaBlF9iNFfmvR/9N/7iPX/LptVtnNw7RXu6jXM3r0DSu5jPFXAch+HDh8hOnSCUiKGJLTRVJRBMUqyV8Kse7V2b2XvoAOFQHE0LoPp1Ng3BwSMTGEaNnTsOUy0b/+XG7Hd/B/w7itG0oWnw9n9+O8WHruen3/oANA1iW955RsaTfqbEAchc+E5sx31G/TSP7jwtvj+nK8ApigLFJ25g/vEbQQ//R5BIEEEQn5My7M8HBOH0XdP/CkkUCGoyhbqFexrHOVWVTThjFfp+gSTz+es/94yaep7HSz+3ndg5b+PaP/onAN75wbdT3HEzxa0ffMZBoiWWeDo8V+bTv0sm17/MrxoDL1WVWuJMsGRIfWZoWRZnreoFu4ydMphZyHNk5AjnbVxFzXIoFgxWDvTy8N79XNC3mjdcdTWmJ7O8J4lf86NJItFoFFUVCfh1/KrMYGeaetPmxPQ0DauJPxjEpwXo6shw8SWXMlyfZnJmgvWpPk7unuanP92J6EuSrzXp6ehF1XTGc1O4loXbsgnoYWzHptaoEQnrzC6U8DyReCxMw7Dp7esnGAoSiwWxXI+9R45itVq0XJvx7BTBQJCQP0zDbOK4HgZgNupkkmHGp2ZZmB/j6LFDeMzzlS/cxOhIia6ODBed9xIOD5/gFddczIaVg7Qn45gtm8zA2azbOMDiiSxtkRD1uoXd9BBEE92v8MUHt/OTHUdYsfEcEPyMz8/Qaphk1pxLwzCIBoPEghprV65kzdqz0cNd1BomMk3Gx3egaxqiKCG3NLxQEFMQuOKFl7Bm1QB/+idv5P9++Ea2PzqMisLswhzFsoHnuQRjBVRJYnJqCp/Ph9Scx65Ocu+dt/C5Gz7J8RNHOX74JCHdZWQyy8mTszh5i95Uml27hjGKwzz64P00yg0Eari6y8Dqdjau2MhV553PiUIdW3LolxIsGFMkEnEUReC+u76ArDqM7buHA4eP8a1v3UvCn2BqMoeiWDx5+HGy07tIphJoPhVVVqhW66RSKXTNh6RCT/9qvvm1H/GZL/yAB366lcXKJO//8D+h6SbxaBRFlUm3tZFMJ3Bd95QyJKRQqFSZmTyG0ShTWsgS9glEokEUWcNolOju6KE3k6TZ8hjoGaC7u5+B9jSZWJRMexKfz4em+6jWq9TNBp3tGQa7u0lEo2h+jajuZ3omS6FUIRxMEAiECQbiRCMJYuEg5VKFkK6xeqCDw8dHCccDxJMx0sk0jivikzy6+wcIKHEkUeGiCy6jVaujiQ5zw2WigSCJqJ+G2aRluzRoYTcaKKKEYdvYnkujaYFjge1Qs02qZoNAIIikqpSbdSq2QbK7A01R2bfrJ8Tbz8KWW/zVH72Kr33nMG96zTU89Mg2EpEImgzFfBFJdFnRu4ZIMo5PDhJUJXqjARqKix4PYIgOpuYwWpgF0cYnGtSaHil/hFatieW0ePzwCWYMk6YLc2WHgATrBzowHY8jxRz3DA/TQmB4dp6Gz6EVlNAiGql4kF0ns+x/4rvce9+dxBMBAqEQyViEUrXBxOQ0CX+Yt7zjY7z/+vezae0QqXQn9+w4TKS9C8NyqTUNvvWt77M+5nJuaoDVy1Zy2eVXUzCCZOcWEUWBQnGayYkj2LaFiACCQldnG8XFMlajRrVSZ8feHaTS3STSHViexZGDO7nx5m9iGzUWFioI3lPvdZd2KL+FlA2Lvkv/ij/8+z/n+mtWAHBWf4zFJ28mcd47iJ37dvJP3HRG1CHFnZ/ic4+PnkrZ0kMUH/mXp9eB60B68BmP77oe9s8qbCnS6QvkqLLI2I//kf4X/SO0GiDJ4Ln8L4kT/cJn6EyTCKrUTfv/84V6NoiCQMtxkc6g8fj0wx+n66K/fFptLvnoVg5+545TvwgCr/6bN/GF165f8h1a4jnjVxUOz5Wf0OkwuT5dqowz4cn0y/3/6rEl/vfyTNPPlnyHzjySpKDKKqLP4yXLLuGAN44kq4xOzWE3TQiGePLQISIBHwcaI+QfMbh45ToWK2W6kgmmZ+ap2TYYDkG/iCYqHD02Rk9/N5bbwiGD7AuyZlmI3OIsj+x5GNt2qRab3HtkmFe8/s1kUim+/6N7ueyyCzn05FaCwSCKKGMhEA1pmC2bplmjr6uXYrFE0O8jEYnik31cct4Qk5NZKpZNOp5gsKsbCYjHA+w+MUJ2MsfqwX52HBymiUAgqBMI+hnMhHlo2178oSDv/cAn2PrQVmazhylmDdIdMTZsuYTjoxMs6+vhzm99AVtwSSWjmFYcPZxmsRalfcUGjk4/iCTJaIrIhjX9NEOrecE1vVx39dn825d/zEtfeDkP31/m5EwZYWorDcelJ6FScyVectkQ373fJhX3ceeDj7K4x+CCK4b43gNf4/WvfguO43D1NdeSze9kz85vsvtQnje/6Z28+73vId0ZwbFURk88zsmJcfbsHUFTQwwORujO1EjEo5hGF8fHs0zOVdlz5AH0ZAfZfJFl6zbQsSzBzOwUrily/90/JTtXZ3LjHMFIgGRyAxPzeVRVoT0R4vGHv0Y6mSbdNoiW2cBAu0dSFRnacD7jP7qNvBlj+sDjNEWNO+54iHRbFJ/io1xpcNPNt7NmbRdjSojR4Wkuu+pVGGaL/p5OEvEYZrNBJtVGobBAWyZBNDIIrsWlF13Fd+7aT1siTWX+lIeQYbbQJImIHiIaDpPLl3EbFVK9XeTzFVLpJNgtqjWTFh7xcJyT45N0t8dZt7wPRIG2WJg5BPbt34Hm8zPY08Hy/lV4rTqSFqS8OI9P01i9LMX+4ZMs7x1iYSFHMhbHtC2clk3Ip5BIpqlXCwSjMQr1OlMzY3R3Z9h96CgbV6+hZXl0drXj2g6e1eLhnU/g13Ve/ZqXU5zNoPh0LE8kv9CgoyNKI+TStCzMxRpmxCMkgix61OwWMSVAtlJGVySqk0WSiRi2HUD3a3i6jiAKlBtF4t3tGGUPyZli3eBlfPDLX+f2z7+NuUKRT73vL3nLez9IIVclGk8zNzuNVW9w9qoVFBUwfAoTQgmx6IAt4noubb0J5ucaxEJxdm7fzUVXv4jXDSW4/ut3kGnrYPVgJzv2jdIWCVMqVbh/eoq2dAoBAVVVqS3U2TCUYb4k0BOJoOkiw7UpJMGlYdSZXyjgCR6INvFIgLGTx+no6sar6fh0hf2HH8FsjPGNW7dx5MgMiVgK25Mx1TCZuE5HTGSw5zoqzRZtvUGy84uUivNElCqeqVIt5EARqRQX2bzsMoymxeZLr2bvgfdjNT0m5nJ4Lnhui2oxh9EwkEUIhQPsPTTKsr4urJb1lJ+dS4qi30L6Lv0rAD593br/dFwUT1X3wjuVJnamFCJvvmCAjb//GmhUiV314afd/gXXXviMxnV/lr40vlDnxFyN1s/Ks58uHh3Ln0rl+5maCEFc2tSfAfw+iUbr9Jacb9nuGVVE/Vz1U6i1fu15tuP+oqT9we/cAaJE/smbKe64mS/+/oal9bTEc8ZTBTF+WaFwJhUxv6vKop/zu/p/LfHc8atB2yX10JlDUxXCsRBTCzke3b2bmZlpZFEmHQ8jyjKxkEx3Oo2q+lnhG+T/vOAF5MqLuK7IbKFEudZAVVQESaRcMxFkmWgshllr8eTuffSmg4xNjBKKKETCCRLhCIoi09GbZvXaC+hsT6MrAdqDDZKpNHlDpS2oomsqoaCPXKHC1OwUttNiMZ9FUwR8mkYsmSIUDDM+WyQaC9PZkUHTdGIRHS0AY1PT1BYXSXVEOXRiHJ/oEQ6GqTUtnGYVy2gQSg1w3R+9mcPDo3T2pFgstWh6Tfp6+3FQaLRsRo9sQ5B91EpVDh0dIzt7lGJ+HE3X2Tk8SawtjeLzk+ntomtgPR3pJIFwG295x7t53VVnYc6OULVEwrEQ5ZpBLCjTcKGrJ83b3vNRXNehWc2yNjOAFpPZt2sM0Wzn29/+If29nYSjEVYuvwJbihIK1Tl6cBcrl63ANCwSsTjRWIArLzgPq2Zx4UUrWLEqiOO6tByXemuUUFjis1/5KrfdcQ83veuNvPEPXs+3v/VNdAK0xeKkO8LUWypdPTGqpQau1sZodh6/X8d1Hcan8/z+695ArG2A1brA4Mkn+Nrnb+Jfbvg4x+7+IjGhwkIuR8OcZKGaxxcRWSxXCerwsU/fwj0/2caa1QOossBicZG+rgyu4+ACqqqQWygSD+kMdffwpc98DdtxufrlL6PlKrz01W+mv38lFbOJZTdp4RDWVDraoswvFhAFEESVXL5EIhEkv7jIQrnCQF8Go2kTiITpSiUpmQKi7KenLYpZqzA9MYKu6aiqj66OIVb19dHT2U1vMkrfQC8tx2WxaqD5/eRyeWKRMNVSEcuyyM3NIikadqtKy/EIh+OUC/MMn8iy7fEnOTZ8ki//+zcZ6EkgSQKuY1EsF/ApEslUBsO0iIR0om0RBvq7iSlxdjx2ELdl4boOalhHFGVagkPBqNJq2piGiWy5oKkUS1XkQIyIP4CiyMSCEYqFRXyKSt2uIwUFFuYq7NlzF79/7d/xia/fSjIa4n03fYq4omFZTSKSguaTcX0aR0enEAiypm8An+5Diut0DCXpWtOGNAWNep2phXlyhQqf/9wXuP4zt3Hx6o24gsquoxMMdsVRJYGq5TDQlSbkc6nUa0gO9A2maDgCsXgbhboHtkB7Vy8bhvrRQzGOHpvCslo8+PB2FEQWC8M4HngtlZPNLB6zbDv4MIWqiCKqdKUd+vp62bR5E30bhhAUP8VyBVlRGDn0KPP5PE9u3069blC3DFRRZPlABw4u/nCcNevWMTE1yR++4a1k80XC8QCKJLK6T8VqmSiqjOsJqJoPz3VoGC1kWXnKz84lj6KngeOeKiH+m0xHim15J7jOr32Y8DyP+CXvAbPGE3f/Cys6QmdkLp7n/aLimr7uArK3/OF/2yZ2zts4+dAniQefuhTfU2G2HLIlk6s//BPyB/aw7NKLeeQ9l6Mppyeg84u0PZ8fHBs894xVuno+8pxUEPsZrnuqMtrp8H/yPI+qaRP0yWf0vblYa7HsyndR2P5v/+k6jeXqnPXy951aMwCixN4ffpi+ZOCMzeXnLHlPPP/uE88H/qdKl+dKEfN0xzkdSqAz9b/9ar+/K+bdS5we/rt195tQDy3dJ6CnK+Nt2bCcx6b24ZUlulOdmE2bNcvaEElSq1fQgyLd7UnGpmYJBPw4TZfsQgVZbCFYNtVGA6PZwHElVixby7GRYVas6iebzdGZCHBycp4XXHQWgpbg4MwREAUEpcVQ+2oiepLte+9hsdmgU4/QO3ApI8f3Y1dnaToyiuzSMi1KpRINs4k/FECXRdraMiwWyqeURX6FYrGET5OIBDWOnJgkGQ1QrVdBCtFsNmk2bVKJKK7UwijZSLJKtV4mEO9A8IvkJidItOm89c1/T8NssfvAEeq5YZpuk65MmnsfHGZ+9gSvveoilITO8MgCIyemicZTvOiqK/GkWTRVY7D3HBZqHtV8nvrUXh7YvpdoIIgnCoTjfkrFRUoGRIMS5ZpDud6gPd1DqT5NSg+QKzWYzeXZfMEACA5d6ZVsWHs+ZrOFKMnMT4ySzU0iuQ0Wi1VWbe5nZiLH8flxzlm/GqkVYHD5eWTScX78yL/T176WK19wHfsPHqU0e5jPfuFLrFmdYSZb4IL1K9h5YJTzLl3L/HyVZq7O6gteRHu6DYB8voCkqqiyhOqzGR/fwXIpxKZXv4Pp7Cz3PPpl1vT0cPdt93L51efw4/u2E2zz8baXvQ6xfYiOrgHm5nPc8dVP0GipLMxNce5lL6O7p4t4NEpbPM7oxASXX7SJL335q4yPH2PVmk288NJL+OcP/QPhaIBmyaNULyMqGoPpNFOLJVIhH/WWjaYIdKc6mVnIoUoyy3t6qTTLmA2HWNTPyakcTQ8ikkxvTw+Wa7NYqpBfXMRsWoTDIUTBYsOKFTy0Yw8DXYNM56bRFAXVr7C4UKY900alUKJs1BkaGGR8eg6/T0HxyUzOTGA0HUzTwLJdVgytpl5coNWyyVeL+DSVTeu20GyUqRstJEXGa3n09MeIRQIMdHZxYHqYOj6m5scI6QqeImDWm4iSQiik43gCfiWA6zaRVYlSpUpvey+6pmEYDWKhIKIAkiDRk0pTMSqUyxaVbBFHauIP93Pw+IM0Fqu06j5UTcGsm5hGnVqzgaaIuJJOR0cXc9ksM/NZOtu7cIUWRrmMLkjM1wxEQcCv61x1/mbWLevlwT1HKFUqxHSFRCzEsbEpJvMV1g90UbcdepNRBhM6h7J1TszPMZCIMZIt0hZQaaEQCOs0FhexJIlke5JzzlnNXT/8KW9961/zhS/dRk9PgnJ+gQ0XrGBhsU4q2EN3zwAz2QKhoI7reTjNBdJpP6bV4sGfPEZuNs9iuUFcD5Ho76GQnyUWUJiemcFsGKzffCGTx0eZyc1jNgz6lmeYm1rAVhyshoPoioSCQRzHQdN1BgfbObD/JIV8Zcmj6NkiAK53yjy3ZT8zj55nQ+b/fANch4Unbvq15wmCQHHbv4IgcN4r3sPJ+doZmY8gCBR23AxakMbBx4lteSfvvOvwUyo7fq7+CevPLOOxabt8+okJ8gf2gFFmZPcRKo2nlss9HQ5NlcF1EAc2Mn7v9adSz9zTq3p5viMIwhlV5fwyoihgtJzTMp4gCGfMhPuXiQcUcB3iF7+b4WyV2HWfI3bu2znrJe8+tVbinZx86JMUn7zxOQkSLbHEr+N/sgFd8i2lzY4VAAAgAElEQVRaYonTy68LEC15D/3maDZbDC5Lo0UjDKzpxbSa9He343hBNN0lnQxRqJgcGcnTnenEL2qIiDhmDdvymMoXKRkmhm3T35thePQgy4a6EBSVkZMnODo6wRUXnYXrnPLTMeUGiuYQj/Wye3Q3O09uZbFZp24YzDQWwS2yecsl/MU7/p61PT0UinVkWSKo+xFEH13tPeh6kOxclpn5WRzRARy6upOsGOpjvljC8WxqlokgKqiKSjAYI6przM6XKJVN5vILlKp5QqEwom0i1ObJJBIkE0kkUeDI8CiPP7KNHfvHObBvjBe/6m3ccsuXWbfpQsKZEAGfAk4Dv+6yfNUQh45NctbaK6jXa2zf+hOOHxsmUjnCyOgIbYkA+cockgiZ9gzRWJJwUMNtWUR1hUhsObKvTn4hh+nKyG09dK/dyP4nTiIJAjuefIgvfekGhgb7wYNURxc9HcsxHBdXcClX6qTa07zw/Esxm9DVuQZRlDAbLZLhBLGIjtlqsXH9Kr7+/W8g6mCXmmiywq6ji6w6+wV8785HCQX8vPGdf4eIR8uyyBfKNFs2kiDgedDR3ktfXz+4LUyjCp5LqVZmMjdPR3snsunygk2buHzNRu7f+gCSEmDk2DDf/tyHaFgtKqU84WiKjkyKFQM9bFizDMux8fAolExefd1reeMb3o5RhxtvuhFESMXb8AeDiIpCyK+BYJFJhFHVADG/D00PkJ2Zxh+M4MkCB8fHsB0Ff0CnUrMoVso0alUSbRHmcnMcn8lz6NiBU74/VpP+rgwb125i5/BR2tsSnJwYpru7j3Qqg9lwiYdD2J7A6qEhVq5chycoRPwy8/kFRiYmEVUNn89HPBrnrFXrqVcrxGIpPFHAajkoosjY2DEUSae/dxl+wUH0qZgtl7rTomLUOHl8AVmykVQZUwCz1iToU3FdD9eyEEwLo1qkbppokowiaziuheCBLEiIkoRPUcmVihSMJvFoEseziLSHqZqL4DjQEtHFIM1mi2i0nUrDwGg1cKwWqiCjBwMcPnyIickpNFWhVqtQLJSJ6z7yjRaSJNCRToEkcu76FWzfe5SxyWmOj42yZ2Sc+YUa04UyguDhOODZTSbn8tz6k30cHj1Js2FRanroPpeS5TLQFWEsm6Xpgl/1E0+FOXo8h+5T2bb1Xs4/92y2bL6Mt7/z74hoq5mfhMPHJvje9+9lYmqCUChALKTS2abyf//xBv75AzcxPDxBsViio3cjXRsu5k1veCt/+Zfvo1IziIaDWA489sjDTM5OIIoWouIxny3gKA6+QIBwOowekbAtA90foCeVYsWqXhTpqa07ljyKngaiKNAwHSYXDdqjGqr89FUxz5TY5e+HWoHbvvq+/7G/S3HHzRRqLQYv/2uQZIpP3HDa5/XzoJTnecRf9FFu/fBnufXDv/jjqRQuVWfLa1/Gkz96DHjmlbV0VeLgeAHMGogS8b5uTMt91ioY1/W4+FXv40M3/DVvvXDg1EGrCf7Is+r3t5GfF+N6Loj4FfLVJm0h37PuyyeLuJ53ysjtDCEIAn/8nj/n6//6Rc575XtBEDlwz0foTvjP2JhLLPF0ebrBmNPhJ/R0x/l155zuMU8n/5WaaIklfpWn8ipaCgz95rBtm3SkkzWBAfy6zpSSY3Z+jo50ilLTYHgyx4uv2MzCVJHa/AzNho0/GqPRqOMT4/gkAX/QT9VsYboCsXAQt2owPTWHTxaYns3heS0+/+27OfuqjcTVBIZTZT57gp5UCtu28ZJpPMGmXCpRPf4k/S8+i4lcmVf/2Zs49o/vx6zXKdQMVvX3slDInfoyTdRZ3p8g7A8ynp3AHw6RL7RYWKzj0/34NZWVg8t5bOchVNmH6Xo0qWOFgzRyTaJKDH8giNFsoEsxuvq6uOSKF3F4eIygz6YnpTG3aPK3/3AzhcUqX/7iLfh8cGw0S262jCSKiJKfmfEZ3vU3b2bH3mO0d2zhtge/RSRSQl+mU7Cq6F4A1xX5w7e+jyd+eAure3qZL9aoVfIcm5xGk8uUFwRUCYr5aYauuJD56SkyKzdRzc7jWSqZ9gg3f+bDvPb33kytDvFMhot7e2k2m6g+H5oiI0gym9aFUWSFmdk5KqVZFosVbPMwmf0lPp/fDapEx6oU8YKP/kSGa9/xPjxJ5YEf3EEwHmXP/r2Iso7jOFjWqS+b/bqG2WqhyDC7kKPZqrPJH6CVWySARioUo2QfJdS2knx5nHggxbLlEconttG54XJcfzsL2RkioTjReJKwVOP7t9/Oda+9lsVCgztvv51l8Vfy6IF9qLaCajYI6QHyuTlqVQN/MErcapKKhJhaKJCJtxEIhgjKURbrdWqiibm4SCwWoSeTYGp+gUDQR6lQINOWRhShWjGxXZP+eASh1c3G5X1MLJSJBf1kc7OkY2m6OwJEoz76euPs2HWYjUPL2X30OJ5hc/s999CTaSMYiGG7Hoqq0HRsnJbDQO8g2elJFE1hoKsDkKi7Dn3L1rBn76NkuvqYnpug0TSJJtI05nK8/GXXsWvH45Rsm81nXYih2IRaZeoNEz2sEwzG8Gp1FFEiEgnjeR4Bxce8USKgqrRH44xlJ+nv6MfFxmhaGLZFuVokV5jHKS3Q27kMOzNAzT7K2ZtfjtwYZ8eTwxwfPkw4GaZUkYhoEgvlIuWZERBcBAlqNRNDbCHLEmVNo7s9TSzgo7s9xu7mDB++9Q7OX9bPXLGM5wmcM9BJOqVzYiFApVRidnEOSdZwZQtXcLFdhUqlhKa6lCstOjriHJ+YxWpa1DxYtawXGRVJ0cgkuhACEpddfAkzuTwnTs7RNB3KlRyS26BcnmP9wMXccdcdbDzrQtav28Bnv/gt7rrlRjo6NR58/AixuMq6VYN8945vcnJ0nFq1TiygIAkSgYyPxYkyrZaNHvAR7AphFBvgudhNgVbTRZVVZMfhrHM6mZzK/9rPziVF0dPA8zy6/ugWgppM8DmsVOS6HtQKEIzzkjWZp9U2HlR54u5/Accmds1HztAMfxYwuvfdFHbczPGffgJiHaDq4Llg1njy1m9BYeYX5z4TFElgZqZySr2hh/nYn51DV1x/1nNP/MEtAP8RJIJTzvtLnHF+noL2bJEl8bQaZD8VN127lj9815+x+MRNFJ+8cSlItMTzimeabvVcKot+nZLidFUSey68l5ZY4tfxywbyS+qh3zwisGvfXgzLo1Su09WdxKcoePjQ/Do97Uke3vo4o1Pj1BsNHEVCVCVEwUMVXQLBCOVqjVgogk8Q8Pt9NOpNyo0m0UgSWRYw9OV88mMfx8Fm0VqkbtRwRQHTsglrMm3xKBE9jIdEORgmHg/xlS/exl23f5266eJTdAZ6ejAdAcO0ca0m1WqBRERnMjtFsVRmfmqailEgrAfAc2iLhpFdEU1TiaZjnBgfZW62hBYK8Tfv+xAjE9MMdkbpT8RoS8dIRjLMzOcZGujhrrt/xNp1/axcnuLBH32WT33q0+zddQ/pqInnGKhiEM9VSEQCTE2P893v/ZjNG9fyjdu+gc8nITs5SjWTLZvPoiVIDG26mqZpcvsPfkLNqCC5NQ6MjqH5fLieRFhR0GQNxQeHHrwT0fX4i7f+CUpEI5FqI9GWxDVcwMWsTXHbVz6NIjq4rke5kMdsWezcuZ9bvno78WiYYj7PbG4KwTWYKea54WgYvWWyZvkAywJ9EPbT7PChaRpBn4qkigQ0aJkzCJKIbduoikwgqIEoMTTYz08e/C4zJ6c5dHSUx3fuZt/ePWSn5nlw2yNc+OIXcunrrmfF5j9m9uQIdbPOyEKWW7/8CeazYzSbZf76b95A2aizdd82vFSLHY9uQ5Xg7I1baNXrJJMpHnpiB3sPH8H2LDq6e1C1IFa9SrPlUKmU6WxvZ6i3A7vV4OjYOPl8kVK5QDoexnGhVF1A0S0Ez0EOBnFsl3y1Qd4wcUQ/juCjO53iRLZA07LZumMXF2xeS1tU44FH9zAzt8jXv/09bBQeeORhZFmiViySbkuRTPYQi8So1Up4jkt3ZxeKJ7CQmyXT2U3TtEimU/gDYYS6wczocVb3rSDmD9DbsRxd17GNFrIo06xDq2UxNT5CMX8AwcqhK0FSkQSqpGI3m3SnOmlvayMejVIy6jQ8k5Vd/QSDfkamJhAEhWNjI7RsC1lR8aky5YaB61jUXJfZ4iKC4qM8qaPrAqVqEau5SNWooDoS3elBKkaJSqWC6zmnvlCWRDw8fAmQdAHZ7yILkC3m2T4+TmG8TqlcpaKUue6Ks5GDPrILNcyGjGjbDHVEmFosYicdmiEfvR0prEYdEAgqMlGfRFg2qNWqGLUqq3qSrB3swN8WoCMZZPlQO6pP4q77v0tuvsDJkYMcOfooZq1AtVYn09XF/pkTHNy/nRdeeQWDA31EIyEaLR+P7p+gbrrkpw7x/dtvRJYMCrkp8CwkQOn2U5iqEumMoioqVsOmPlUkmFZRQxKRzgDRziDL1qRZtT7NxHyZ8clxSuWnzjxaChQ9DTb+w30AdMZ0ZOm58ylKbHk7CALFh65/Ru1XdISY3nYDLE79hw/PGUIQBJJhH8X730vx0Y+eUjXtuJnZx26AZ6nAEgSB7PZt4Hk8futf8fI1Hacn5Wh07/+vHvI8xHTfs+/7twxB4DlLPwNoC/lOpf39lmA7Lh95yarfqE/ZEkv8VzxbT57nWiXzyxvoX309H1lSDy3xdHm+ruX/jRhmg3q9img3UX0inuCjVLeYWVhgbGqRpmVQb0EqFsO2mhQrLcymTXffIAgWOA5V06RWaTA2PYNhNmg2TWKqiOqaqIrOD+/7CtOFCXyySCIcZrFk4iIiOi1ytSqVUoGgpjHQ38sLL7sOnyxwzZWr8VCo1/LIgolnmyzkZ5H1KJFwlKiuMZ1bJBVvQ/cp2J7IwtwC5XoNXfIhKDKP7d6N4LrsOnQASRMJhVX++Jo30pPp5/qPfIp5U2O2YaCnIvSsWUV7uo2bvvoxogGdhlFHtTWaeQuxOk17Ksn48DxzE2Uc26RcXkRyRSqlPO0xhX/8h7+nWSviOA4l08/y1f2MjtexbHj1ddfS3dXBP330c3z7nvuYyOZxXZdyrUYw0oZPUUmHYxTLdTatXUUqHuST7/9bJsdGKczNYJtN5kpVPvD+/4tRmCccDDB9cgfF/B7GRx/j8L77mBjeSW9XjNn5eQRZwXObhPQYHXqSDZsOMVMoEBG6OHxinjJxDu8psGP/A3z65htpmTb7t8+QyWxgZnoW23KQJZH+rnbwXBbyE5iehShobFi5EmP3ffgnDiDbFsGKgGCHcTyPdFeGYxNZvnb7j5mYnKItEiAU8BMLRrjlK9/jwnM2oQRV5hfmicfC1JtNLrliC35dRihWiMQGGJ1eoLuvg03r+ujr6sCWBBLhEOlEDLtWYXJ+nkw8yjlrViGJHi847zwWyzV8roMhBAn6QvhDMURAVTxiQRURqBoG49NT+MNRYiEfiuzHH4jw8JO7eXjXIZYP9FGrlpFljXhIwxVFmq5D0K+w5ewtRMJ+5vJZAoEwvkAQxXVptFrEQyFkUSWdDKKJHoZp4Ege4UgUx3VJJf2IooFn1imXisiqj5Mzk8xmCyxmy2Snimx/YifxSAeCJxAMaPi1IKVygWqrhd2ooWs+LAfmyhUGOjOkEilaZgvNJzNXyDE6OULTdKiZNVTdR1dXkhNzkzTrdTqWtTE59Rih9Boans5Q3wpmZqdZmB+lWKoSjobo6GojkfIztLyfUFuEaEcMOSjQEEVGF7LUVYuN3T0MrErSNhRnfWY53R0JAp6KIHnIPgt8CqNeHTkoU5qyGZTjZHMFJM1FC0uML5ZodHgMT+aRRAWfJrPt+En2zc4Q9sl4skA0nmIg1Ucp10JRFebnc7SaAtFwkA3rltMW9HFk1wjtq+Pcd98P+fi/vot7Hvgmkc4qU7NjBEMCeDqaL0kuO0MwJDFfLnM0N0e9YIDsYZsm/naFxFCUmuUg2C6FExVCdY9NXR1sGeplJltDtF0uuuT38Pme2st4KVD0P8S0HCa3/pSF2/8MURSeM9PfXzz877j5WfUT0GTyT94MnvucP/AKgoCmSPRdceWz6sdxvVNpZ+lBVnWGT4uCpN48ZUBcfPhDvzj280DJ8Bf+e3Pu30WeS397URTobfM/6+CU43rPSYDLcT386lPn8i6xxG+C02Xc/LuUUnUmNulLG/8llvjtpGnZlGo1XLuBiESr5dDbHsdzDcpGkUZhEY0mpWKL47kiNavByLFRFmez1OouriSwcUUfWkRg09oBzLpAJKxSt0FR21g52Mk1mzeRGzvK+cuvQHDhsk3rWd7TQ9PzMGoOmqSzWK0zGFnN6rXryc0NUy5XOTwxRrKnnXD3IPWWQHd7EqM8jygqrBjsoy+V4ODxMXyyn7ZIiIA/QFvYj1+TOXR4gsWqybHRUfo3drL2RSu48pUvJ9WWwXVdvvb9D2K1WkSSQ6weOo9K1WBs8gkuOX8zs4Uqt37rXk4cH8V0ZDy3RVs4Sb1uI1k26UyGV19zBRecv5q3vv6lfOZL3yAWDCFYTboSEaxWA0/q45yz1nLlxedz/93fYTE/y8XnDdHfn6FhC/RlekmmQsjNBpFUL/5wksHulRw+eIC9j/4QwRbpax9k/Vmr6V7dw9/+/Uf45498hk9/5btEoyFS6XZ+8MNtRGJRzGaTSCQCZolgIICmaTiuzdTEDLl5iW/dto1MW4pzzj6PhrHI4YNbaTRmuOsbt7L74P0EYjJXv/KVjI7MYDcb+P0algt106JhTlFdmOb81RtpFSs8/vgxHhubYxqXoCaz68QMM/OH2HH356mP38+5l72C97zvPawbHKJecdE8j1BCZ3JqkqMHH2ewsxtd1fF8QfA84tEw//bV77Dhwqtoy/RzwSUvZaAvzoa1yxDwGJ+cRnEd6pZIWzSIaHmcnBhDC4Xp6h3koV37yCRj9C/rRxdaZOfnKJUWaIvGcF2ZQqmKPxCiM5GgaJhs372Lg2OzVEtZzKZBvVxhoZBjfV8bejjGhjUbiPgD+EMxbMehicxCOUd+YRpFDZNMdqD7RMKhGH3dPdSaApZdQ5R9HDgxgk8DRRYRRZupuSlaLjRdhY72ThaqVSzXYddj+2hZIt2ZTiTPR2ewDdEuoSkS62JxLuiI8KqzN/CiFX1cvKKXF6/qY4VuUynXqNUdwn6dYCiBYdRZKJYoNepMz09hNJqMTk2xc8d+IrJIMKwhobC4AAFV49ILBpE8h+5MhlTUTzQSpL9vGeedfSlre7bQHYuCbaNGfRgLNsgukRVhEr4YFaeN+pSGkHU4OV7k/of2oXbKnCwssHVskv5UAC0aJpAI05OK07A96kYLLxPBPxBAiCj0xRIkL0oS0P0kN3USTAXxx3RcwWPWrOCJHiWjSHfPANNjBzDreQ4fOcBFW5azcnkfo5MzpKI+jEmTbQ/+gOPDI/zwzju550d7SQYzyKhM56cRxQbVUpWQ5mN1poOBZWniXWGSK9u48IJ1qKEApakKiq7QbNVwbJfjozV2HSjyvfvHWPn/2HvvAMkO6sz3d3OonLo6p+k4UTOjGWUJBSQhMEkEA7afjQ2YIMCLjb327mL8ePitWbAM2AZskoWBhxEYZAQogKSRNDlo8vT0dI6Vc7rp/TGWjcESAkYjyfTvz67bdU7dun2rz1fnfKczzMEnpth3YB9P59qxJhQ9A1zXo+PaP+C9H/idizLe8iTfPLoAwIn7PnJBnk8SBbL/aoQd2fGui9o5AjDzyCO/0O8P3fENALL/fMeFSAeA7mvfhzK28z/87MlJqLD51OsC/6vyXKxvDxoKzV/QHF66SOKtIolr3URrPC+5UCLGk109F2oM7GflF435bOR8MX2V1lhjjQuPAHR2xPEFuuhNtrG6PIknNsik8ximScXyCAZ91KUqAc3AdkD3qSwXi/hVaLRaSJqfTC7LylwRVRQ5NDkLdgszEKG9vZOK7dLdO0I0bNBpdLO0mqNUqRIJtSHJMp4C3UY/Oy67hnMTE0wdOcnsfJaYLCEHBBpKnv7BTiTPZrAjQbNWYM+xk+w9cYretjYCpoklmPR1toHuR9ANwoEgiViCq7aMEiq6zB9Z5J67vsEHP/jH/OEfvpWZ/SvYZpHfe/ubqFTrFMsVzp6zOP5EnQ/86Z+za/chCi2boM8gFAwwvbiIT1VQwjE2jAxjOTU2jQ/TdOAlV12NZDVRVI2Z2Rk2jwzgui51OUL70BBtQZcHH36Ej//lX6DoUcRqlrGhAL//R5/gTe/5H8zNz5Joa8MVZfzBOOFAkmKthqEaiGaDaj3I0Loehga7+egn/hFTh+986x5uv/lKDu46QjXfYrSvjY5okEqljudapFZaRBMxPvQXf8aevY9xx6+9kenJs8iSn0BC5+ZbLueSnZfSPzLO5uuHmZ18lLnpQ2zfsgFPEM9v4PIEMmkF2dORPJfLr93Ba157E5du3UAqVWD/nnMM9vZw9IlpPv/pz3B4ooamqqys5ikW6zRcAS0UZGTwEjasH2EhnaYtGGLL8BCRSJTeTgXHqqHrER6990vUqgVQZMRyCV2VObz7GFdu3UypUWVhNUW94ZIpFVAFmeOnjlPMLqAqIu3JJCfPzbCSLaBrMouZPLncAhXbYqBvgHwph6z72bp+M5FgiKs3jxOJhNk6PMxctkxP+wDfeGAv28fHOHL8IKW6jW3bvPk1t4Bd5czxkxTKVYKmSE+bjONYTC7Osn54GEkT0VSNxeUFbrpqJ2cmp4nE43S0daO4NmcnZ1FkB9epEQv4yGZWqFbyvPPtv8VqNoPuDzDa20e13uTqnhij64Zoa++lPRZD1QwkVSfR3sXIyDgbgi4zi4tk8kWazQJ1y6HZapKvlJFkF7+qUq5Ukf1BCtU61XoDzafQ0RVnZekEid5L2bZtkLZkjLxWZ3h4DMuyWZg5g18vs39+isiGMLVMncTmCKFogPLpBvNzS3ilCWrlNLbdRBRdBvsDvLh/PfGRBDcN9zPa2cGoFGZjtB9J8bGcSaGbCvVzRRorDVRVIlQ1CC6eN+OOLLdISiHqq3U++VdfY/b0WfSaRSpdIJmIcPxsGkmQeOVtV7B37wRHn5jAMIMIZpBYWxJd0ejojGDoIfq6IyRjYQI+nf62HmpVyBbrLKfq1Oo286dShIoenY7OeLQDVReQZBWr0CB3poUvGGBswxa27riWgcFxFgsedsuht+vpN16vCUXPgNiVvwftw3zg5tGLFnMqVeXNv/3/srDrTjojv7gPz5OIonD+H1tBILrzDsoXaGvYM6Je+rmdkj3Po7Dvh7zh/W+9YIX6+B98BzyX1F2/8R9+ni41gZ/fdHuNnw1RFBCAasN+ymOe9DLyvIvTOfRUrIlEazzfeLZMqF/I3UUX8nxcqG6tNdZY47lD1XQm5kt0hhUOnzqF3+fDdgQMn0Ey0UVbIo6tBAkGothohDUBx5MwdZOq7WABp6cm8GkmhVqJ5XyWUCDGNbe8EddfJGNZFJo19h9e4q8+8w3u+cFJRtr7kFtQKpawUbBslxtueRkLiwucOn2C8PAWRsfX0dBrRAwVU3Gp1crYgkgw5GN8fCOa6GEaOqpfp9CoIYpQd2SqpQKHj50iVyoSi4aJ9nXSs74XX9xHpDuIa2ZYf3UPnaNRrtpyJd9/eC9Oq8YD932VU8eOce2113LJlg2kM0WuftlmDL/KyOggesRPzisTC4f41D98gc989V4enyiTWqmzmkvjCiCLIgODQ6zmc6RnT6KqMqfOrXJ8sUY5t0Ig2IauhPB1dlMNqHR2xFk/PMQr3/gWjh7fw8rKPIJlIQgOXZ1tzCyeRnKCPH7f93jH776C0088zEPf+VsiYZ1qw+KRfcc4PbPEo/sOEgmH0QyZQrlEvWHRlvARMsMgKIiiRM/YFQRVhzfd/nKKyy3igRAhTcHNFWFFZyVlYTkeNcuhMxknlT7O8tJhDFXixGyZz3/1m4iGgqH7yJUzZCvzhPoCbB5tA9FgsKsdRXKpVovMz0yRKdfw+XyEIgn27D/M7ORxYl0Rzi0vkylXGRkdZmbRYiVV5JZbf4XeS26jWqpg5+c4emiVz3/1O5girM7O0xGJEtQVivUyqmnQ0jTqNYflUpOuzkGOHDtGrVlHUDTiHeMM9A3T8ALnF341mmxaN8hwlx+f6RAxTVqWg6IGmE7l6Y7FiQYDdHR0UC6nGexdhyBLbOpuZ3lplttedCmKKmPZLoP9PZTKdTxBwtRVDk8e58Zt65maO4eNwD3fv4/OZBLXllhanKSGh+u4tDyZk9MLOI06pqrhMyRazTKJtgi1epGewXa2dwaJJjoQBGhvS+IJInW7yb3Hj7JayoIg0dvdwdaYRDafJRDUCfpMWrZHMhCmUWmxkErRFgzS392LGgziCRKFcoW2RBtXvugWVlKreP42PBw6xThjAx1ITouwahD2R3jT1TewtC9F5nSJzJEci4cWsJpNLMvDQqberNFQWlQjNpqW4MR0CnXFY096CUuUMGSTxVSRSrOBpioMdySoVVtUliroOZe55RQ1G3o728FQiUbitA9086Jbfw1/ZCuPHlvh61+5n937nyDgDxJOmpiOyHh3P5oj4jQ8FE8k6QvSqlWxajID8TCqEsGzqzgtm0bTIhL2ocrg0wXWDa0jGAnhOAbHTi3wiS/diyDq1CoNYmMGrutSLVdRm2kO7v4BuE264n52bB5lprpIwKc/5b1zTSj6Kfy3b50EUSL3jd+9qHG3v/QPQZTw6c+OaXZ+3ydAkum99vd44xcPPisxfoJfoMCPXv1+AP7mNZsuUCoeKw99l113f+gnHnvb/3cEeG66a54PXGyfIgBVFpFEgflsjZbtYjsutabNyYUSZ5bKOK6HwPn35Jf1fVljjR9nba39f+TZynNNJFpjjRc2PlNDlCSmrDS6oeOCH2gAACAASURBVNPR3oWmxSiVauQyaWRNwXNcDEWlIxGhpzeCJjXRcGhaDexmCZ8Rwm64iKJAb3snaszFjLi4pkxZzdLWM86bXnUj73rL68Gx2Lp9B72JARRFJxH185uvehd7D+zj+KF7yTUVFmb3s5Aq8fAPz7C8onLP3QdwdQt/p4I/EERTRAZ6x/D5YyQMkaWVFYa6k2wZ7qZUqhDQVSTRwXZbOJJAKJjgmuFNmK7OtT2bqS9ZdCUHcb0gQX+AY4d3Y0o+RgfDjI4kAI8HH/oCbeEQ8S6T7+/aTX05xWCil8f27cOyXJpNm3OH93LsxGGSEYVCpYJP11hdXqGYLTJ1boLFE49w5MhRXMcmEu7AkWt0tgfQ4iK5cpkffu+LLKYzzE2cQDMSOI5NJJ5goLeH7niMUCBAbiVFMiBhtUw++4WvUa0XmZyYw2+Y9MYjfOHOP+CTH343ybHrCfZsotloYpo6RadBqVmhVFqiVq/z2N4Hsc0GDx99nN7BMI4oYNkWnqJgqC659CpXveg2DEPn3ORjnDk1hyyJ2KUlXv3qV3Dnx7+EKmtYnkck6scIJrnl2i3s2LGNbRvGUQyRr3/9K6iyTnvAJZPL4lQLrOaqBEwFI+bDEz1S+Sz1Wol8uUbY57Jl0zjJtjai0QjrN/axc1s7I5d0UUxnaBk6dQGyjRqlWg3D9NOq1YmHIpgBE8kDwalQEVRaropst5iZOs656eM0rAaqruNZdeaW57jrX+5jZmkJIxCgKcgIkohfkzF9fiRRpmk5OJ7MYH8b1WaeaIePYsmh0ahz23WXceu1V6JrHqFwku2XbsMTHTYOraPSqPFbb3wdl68fZ+PIEF3tIU6cPsKZuQUa9Rar6VVMWaVZqyNoBuVKmUqjyac/903OnpknEghhGEEOHysiCAJ+X4AvP/oIn7r/e3z/6DFWMjm+9PBuFEVBM3wkO3qQdJlmw0YQQBMkBFHAryuETR+hcIRyrUxHvJuqKFJpFVmaL3Hy+BTn5s9i1evc8srfYGBwBE0NcOXV12LrcaJjl1BpNpEFSCQklKBGqD9AYMRPbDTIdDlNtVZDcTTyK0XOlkpossSlm0bpcGPUKhaObbOuJ0p5NU0AjzPLSwSHTMSASbbRpO7YGDgUay5Bs43uvvWo2ihDQ4MMDg4iBMLc9so3cf1VwwiCjSh4VApVlldmmE2tkghrjHe2U6nXaTouAZ9JtlhFwSIaCNGyLDoCNoJdR5JkAprO/NwUSd2k6cLQ8FYUWaVN24gRVahlQRAlBNHj6Jmz+NUW1XIVMxhnS2eA9aFBGo2nNrO+eKu7XoC8/19O8fkPf5rM7jsRBAHX9S5KR0Fkx7tAlMjv/atnNU5+z510/85X+e4nP0/ky/eR//5/f1bjASD+7P4ukZs/DK06f/GJ912QFGzHJXH5uwnvvJ6NPaGfePyRu75xQeKs8cwRBAFNEUkENUTh/PifrkiMdQbWunh+DNtxSdzwP8936K3xS8vF6nT50TG0F4Jg8mx0E62xxguVtWv4PLbtMjLYSb5YZWCkF8sTiIZtFGE9Qb8PQ/Nh6gLnFnLEDJnZxRw1R6KpqCiiTKMOwYifjCUjB02yhRyXX76ZVnGOofZ25vM5OsPdLGWq9HYn+ND/fCs//M53kGM+Wq0Mr7nurRw+McHdX7+LofEkQ/0bUFUfq3mZbTtuxHNhbGcvltek5clUGhXqDQFfUKMvECFVlYkEQ3iCxcnJOcxAgHLVo2VDMCTRLJfx9XRh2zW2XL4eVxcY1GJs6L+SeDzKfQ88xvxyhs5wGEMPMzOzn6NHf0jQ1Pn+fXtIrRaQBYFKq8FSdhXRp0LVZqAzTjqdZaCzm9nVCu3REEqsj1Q+z/zsBPPzLQKqStyzmS94yIrKtRuv4kT5ESJaGEWWsSWFL33mc+SzC+iayQ3X3ETQtMimV2nZPlLlWfLVJq2GgGvXWSrnKNRkrhwZJBHqZLlYQRBEBEHk1InHkKU0gcg2VFVjaapF78BmvvD3n0TwGzh2FVl2KNcWmJvK8x3rETZu2cJA3xC5dJbrb7wVQZLI58tkUyUS8SALZxe5+fa3UnfhH7/0DyQTHuVKiYVVi/XrN5GIyBx94jj3PLifl73pcsbUJpVqjVItTCTooQTbuXmomx8c/i5+f5Tl/CpCU0ZUfMwtrGDbLvd95xvIQotUrYhXrlAXTSKKj1pDJhaJUm/WCSkielQj5AvSshwe3vsY0WCQ9mQ3mXwe3fVQBYd40CBTbqBIIsu5ZTb2BXG1AE7VYbS3g4hP54lzZ1nX00VfJIwUTXLizFlKlTKX7RinWixSrTTYMryOaimLLXrYLQ8RGUW0qFVrFGtFAm6YaCSGiMvDBw+Q/t4PsVsNujoT3HDD5XR1dmLXSrR3dHP8zCRPHH+CRCRCoVKho70DT1XwNSoIiSSaLiGLNeIxlT1HzjE23ke5WqBYraAoKgIismchSRqNWhp/OMamWJBDqQK6oBJSFVwb6mWIJDSyxSqqKrI8v8CGdZ10jW7D9VyWV87y6muH0SST3efm2H9sGqdeZqw/SMP1OHv6GOfOTDDQH6MqtXA9ASvboOU6CKKEokqEDIOqbbO1u5P5xQIN0cW1BWqNKqX6ecGqWa3R1xnk2MoCQktB9XSMqEu9IFDyicSCGl1qgL6kRlkvkgyH2HTJVXz1W3sQRZWVueO4ozuJmDWWJlZYckFUFSq1Kr3xJMVKHVNwCSTjdMRDVFSRUstmpVil4sHs7DKbe7vxqh4tASKGQaZQJNK9A38gTLJriIml+8EFNSAhG34MR2HTwAgd0RC5wgpj6zdhyBoRPcJ9Pzj5lPfONaHoKXBdj7/7s7/hFe9580UdQXpyK9mzLRI9ycLf/ypv/soY3/zY3xO57k/IPXS+w8bznqUxm59BKPI8j+iV7wO7hW/L1bzl8oELkkLiiveAIDD917f/5wfYrQsS54WKIAg4rsdFXOz3b3E1+XyToywIeN7Tz83+MmHZLm23/zUsT/x7Z560dvv+ZeVij0M938WiZ9OX6Kle71oBvsbzlbVr8yfRVJkTpyfZMDZIQJOpNURS+QweOpWahUyD5bqC3YL5epNSw0ERRLoSEc7OLmLjUS0XcC0HXJXOviiu4nFw9jT9iX6u3vJyLKuOrGosLpf44SP3ML55DLtQQde7OHLyNGdOHKZar5FebrLjkhCatpWEs0B7e5J0ropaP4csKxQrLUY6kmSzBdLpLFu3jlA/UcBn+qlULTzHJhI2WVhNMbpulKXVGrPzczxw/1HuePftYAkIeoDR/ksplKqcmdqD7cyydetVPLrrYby5SaJ+iUytzPZNo/hFHxmnQmcijiTL5EsFAu1htEIdU9PxHBvHFgjqEqWmTcCqMLZpI/ncCrLbZDFXYTWdRpIVtm3fTrVSYWDdDtriYTRJJFepEw2tkFpp0JboZLA3wN4D+3l03yluu24nYTWII0ropks+3aK9s5NcY55MTWJ0LEZysB+P8yvNdz12L5qsc+W1Q3R2dPKia0bJZc7RkGSq2UUSbR34NR9bNq7DaJi4iKiIHD15mmuvuQ1BUvAZJsXVJ3BVm6hicsUNv0EwFCKXKzDUE2Q5M01v11ZE4yyuZWPqOjfe/h7y1j+ytaODaDNByy2ylE6jheP0trczceIgkmdSrBSJBv04gozVqrO8nMHxHCjmGOyNka+4fOP+XYx2daDoJkm/j0q5SCSoMrmwjCcKzKdXuWzDOG2RS8gVW9QaFuFQBAmIBAxWVxYRVZ1MsYro2pyaPc2l48Ok8inMWJhUJsNlGwZotWwylQJxXWJopJ+lTB6n2cTQDEy/RjaTQxZhZmmeDSPrWFxdxQiYBM04PT1RHt3zOEdOnaJU6OENv/YKlooZ9h84htdyOHT8BMGAj9VKFQeR7s4eLNfFtiwChoaIx+r8WaYtm3e/8+2cOn2M0/MlTEVm27ZBgv4IjaaN3zR590tfwafuvw9dsPnukUNcOzSAbTVRaRE2TWrVBomOfkxD4UjpOHapiCYY+LUwSsAgb7VYmjzCxngbAVVhZTlD3fNQ1C5GBwY5evxx5lYkynaLhdlJNo1vJZNbpSSs4rNlCgEbQ1LRIwZ2pUW1UCHY4efMuVXGejtYyObJ5wuIfoWJpSW29HaRr9h0xiMcSy9hdhp4KRs7IhHuNgn7fdjpOvWwQjwQYPrULIVCgamZKZLhAANdPgZvvJ0P3flx2kNxEGRETadYayBLAnPpGqbhY3y4i6MTE7REkfZkDKFQRq1BRyLEpAfFpkAqm6MjGmS2XMKvCvi1PNOnDqDIHlHTTyvsnu/SCgrs6BsgagUx24fp3HgF06slUstzlColrNZT29AIz6Xfx09j+/ZLvcf2HrgosX60KLUdl8QV7+EfPvff+ZWNnf/pMc8Gkds/BXPHyez9xEX3x+l929coH94Fup87P/Y2Xr+5B1kSLqhJ8JOdUogSeC6oBmg+9O4B3vHGHbzzin40WeTDP5jkbz70d2Cd9wo6cd9HLphPU+Sy94DnPu0WucjO82bZv+imuRc6a0LNc4fjesykq1z6yv/1H4VLSca/+QrmPv06BEHAUISDnudd+txl+txzMT8nng88l545P1qAPlvxf7zIfbo4z2Y+P00UW/MuWuP5xNP93ax9TkAw6Pf++PfezMTsMiury1yxbRN7nziF6Jm0WjUadZtExKS7I865pQzVYpmWVURRdFZzRfy6QtOFjUPraAglCqUaatSkLRDi5lvewV3/+EVG143z1S//Ne//ww8gSQKPPvFdAnWTm17yGvbsup9HD+wlljDZeenLkWQZuXmWb9z3Q8Y39lMuN/H7ZTTdT8u2aJaK3HvPAYJ+jdtfdz279x4jbnbgCgLZXAbHtpEFgcm5ZW678WaK+WXmS3Uu3XEZgpTmhitvY3Imw2XbRvnkZz/Gq1/xFnp7hjBNnc986tPUrUlEEcqTRdLVFrok4rgOqq4hCSI+XWJmOUfQ7yMZD5LJlWhZTSJ+H/mGR1TVSNUbvPK227jv3m+RqVap2U0MReD1v/FOLMsGBGzXRZUlFEUiu5LGWzrJoZUZDhyeQHZFrtu+gcVsBjwRLRzBEQWWZ2aIxvxYDZdXvfrF1Apl5HqLakIjdybN/NIKN7z8/2JoXT/TMwu4jks47MdqNsnlMuiaiySJnJmYo7+rh1LNRpFkfOEgqqrgeQ53/fPHGB4cYUPXCO0Dl6NiU6svsOuB79MdjdO1aZRao8kDD5zlne+6A9PnQxIsju//NqV8GUUyaQghrIZNRMpxbnEOKaxR8RyCmsG67h5SK0XC8fVMzc4zGLNpb49w15fvZ9tQB8eml9mxfTtHDj5BtVHGkRR6Y2EUVSMQCNBq1ag1W6RLdWTPY3x0M0tzZ1jKLjGzkmF8sJv2eIRSwyJbrGO4DdaPjRMIBFnJl2iPxFhOLWKYPuJ+k0bLZv+ps3QngiRCYSquRzgQp2Y1iAcM9jxxmtWVJeKJBN1tCcbWr2OhvoKFyLpYJ6oqc2TiBIVCC9tqMt7VTzlfoVCu0NGd5MSpOeZmzqJqMhmrxI6ucaquiuB4HDp5jNe99gZquIy0taOrTeIhme9PzuF5DgOJNhbSaQRJIBGMcf2G9RRyqzSaTU5lm8ynVmlaDcjW6e/rZXaxhB70iCYiZAoZrujrx9RlHppZJGH40H0GG8IhHl6co0uPMnVihZCic2D6HKXsMsVylcG+PrJGnkAygFpX0JoO840i9VIdp2HjjwWw6y3G9TixWAee6EMVWuw7dYqWZXH9pRvwPI/9hXnctEPQJ3Mul6JVsWnl6/QlQ9RcgVyuwvi6XgxZZMMlm0kmg+QLNXS/yu7H9lEsnfc/c22X0WSCpWINv89P0JDx6T6ml+cQBYntG0e456ED3LhthMNn5kjGQ+SrVWYWFoi1dWDXSnSENPREN6GwQipVJhjUWCmm+LXXvguaTdAD3PfAI/gCPnq7u2i0mpw4dAS7UeTo0WPkCsX/tOBb+0r6X/nRgjhx5e+B7v8PIhGc/yL/2aqbp1JVmDvO1EMfe05MlGc/9VrGft8g9diDvPeOj3PnTbew7wMvxvW48J0lrnNeKKqXoVGhUVjhY3+8m4/9+HGySu7xj144oery94LrkNn7UwQgzwNZvSAx11jjmeK4Hvlqi+Fb/vi8OPSkiC8I+C+5+t/EoTXWeK7EiR/1LLpY3UXPpDvi2RCJ1ljjhcDPIqz+MtNqtWjUK8QjftI5hQPHztDe0YFVqeI4AWp6DUGS2H/0DOVmleuv3Mr37t9Ff28YWSwRiQRp2RrVRgt0h2wxw5VD29H0NvAEbn3xy9EMhe2X3UIpfRIzOsLOsRuIRZOcnTzN7icOITgtPFlmYf4R+vqvZ9+RKVBcBMsjFgzQFYvgiS65QpHpWg9Dow47xjT2PHQGfyyJJzQJm0FcN4Zk6tjVND12nKWlSYxojJGedoLhNtYPbuXAE1O86tbr+Iu//TNEQWB8ZCMIIrFQkMXKCYK6Sl80gS2XaY/GyVXKBGRAkUkXSwhoGLKAz9AolxuEw2HwIKRJVKsp0uUqdcth1w/vw0Ug7PdRSuXYdtPlqLKIbYs0mg1sx8O2REx0zFCQ7uFb+canPowWVAgpJvm6R7Ul0N/ZTrlSR9SqRKNx7FaTwe52Fmbm2L51E+lSFt2SMDolKuUqruNw/ORZQsEAnuhQKlWpNVpIioGNSMvy6B0cp2U7GEGBkN/EL9TIVBeJJNZz3Y6b8ZollpdWOXPo0wxv28Duxw4xk51HSYZIZLLIwSA7L7uaRCLK6vIyH/zAH/Drr78JXfGjtw1jF0vMTp9mcH2UWDWB44OIT8dUFHTVZHr6FMNGH41aAyvksGvfQcrVFHMrIHgexw7vRxEkkvEklt0iGgpRbjQoFkvYgKoKDHa0U6o0mJs5TrGYwTAMVElgMVUkoCq0LAtJlrBsnUAoRrlYwCeBpol0d3Ri6Cq27dHVEWUql0fzmxycmCKdzWAaJobpI+r3sX7nAENCL54n0xOOomoam9tHaTZbZAtZLEtDw0PXbOo0eHhiH/2xNoQ2H1JAxrMtDE0jFGqjU+mk0mzgCS65Yon+jhi6JlNvVDH0GIn2IFbxBDuHRjgyNcHZuXkqdZumC+uindSqRTw8Vlsu6WKGsCTTEk2WhQozuQyx3jCSLJEtF1jO5JB72zHVOMPJDgYDIhMVm6PpAqZiUGqKdPb1ItRLxFZChHs0Dh49yulzkzRqLu1Jl45YG+GeADm/herTqKQrIIGvzWSsex0KQU6dW2Swv52B7nWMdvvZc3wS09TwVwVUTaVg2aiGiKz5EByQIn70hsimRIyoT0dyWqRmzjI1I1JuaCQDOoWSQDGbRvMF2DjYS6ZYp1ApEA36SFdqlGs16s0mgiiy/4njXLa+k6X0Ks1WhVJFxBNcZEUlZGj4wp0EwjKu6qPRbBKKdDM2PMKL+wfxmT72nT3GxOnHwfNo1ItMHdmFZIgsZxy2jfUiPs1G9zWh6MeIXPNHoJnkH/nzn3jM9Tw898Jvw/I8j+0v/UM6b7iNiO+5ESgEQeDUR15G7HXLsHSGmfu/S9vxKVb/6W2IwoUzdr7jg+/gz2799+1xT3a0ed758wvPzqrzyJXvA8cmvefjz+j967vxlgsa/4XImihx8VjM1dn4ig9CswqCCP4oX/3k23nxWHLNo+l5ynMxhvV8ETCe7VG057LYXesUWuP5zpo49LMT8OksptIcOHKacNiPJJq0R1zK9Rbt8Si5Qolyq8jZuWkGugdIpRtcsmEDJ8/NkIi2sa6vi7mVVcIxjaVcHt0M0Dd4CRs2v4hKtYbdqtHVPcCbXvdqPvjX7yPs7OU3f/MdxGMBDh49zcBgFz7DodqqUSy5GKaOKUfYvrEDQ6vz+S9+j7e8+aVYLZ25lRR+fzuCIPPN+w/jtlw2GxpzxSKSWKE9EUMoZ9k03Mc353dh56CSWuT6G3diW7McO93gih2b+Oa/fJF4NEYiMchLX3YTjz2yj7f/7pvxtwl0J+MUUy4T2SqyV0QUJcJ+DUmU8asG5WqdzmQnoupRLpWYX1hieN0oC+lFkokoc6k8YzE/nufhygrVmsPYuiEUp4+vf+UuXvumN1Ou1v71G3bI5grEwgFmlrIkhoMYGZmOop9ssURPLEHSZ1DIZVAdGVEzWMqXODMzT7dV4ev37sKzBfxxmWrGpbs7zibPpauzndPn9nP44FFuvOl6kok+dj/xEN3tYSzXRZVkyuUaVrXE0coqUV+McDDIQ49/i9ff/momTv6ASDzAiRPHiRenmFicYvvwZXR3DDJTWmR29zHe8Opf4eFH93DXZz5KV3eMxw4e57qrXkWxUGYkLvLrahe7O3wcP7LCeK+KoWiszq8SWx9FRmJy8hQbxsdYnD6B7QTp7R+lWCkSagtTzOUQmg3KlkVPTx/lSo1Ss4mi64BLoylSLKywcWiAL313N6+67hp2HT1Gf/8ItVqdfL2FKMiors3Y2DiGprDtmiv52Ge/wk7NTzBoIogynujxyJ792K7ImeVpStUShhFE0zVufPkV1Co2wYBCPBAlk8uA1yBfqJJ3bHLFFDNzC8ytZmk1PSTRRfErBHw+cs0C/Z0Jym4D162ArHF68hgvuuwKJqaydEYjlHFoi/QgoZEwDTZuGuTUxCIRRWG4LUatOUBfMklYl2m1LBrVAgtzk8ysWjRFiZprUc02MRJ+tFgA14NcuYAogIKApulYjkx7Msm50hT70xU29/QSUgQmFpY4uDTNFSND5DMebbEQu49O4HgOATOI1aySzeVZWkoRXTAY6OmjLlo0GjKSJlKbbFDytXCtFHPL0whunWwxx95KkFgkRiq3giYb1GyLjmCUSsahUi7iV1SKtRZayyOHw8jQKJLVpOF5FFczjLVHmVqcQqTK5esH2DeTIl0tUq7XUWUZVZCRRCiUszRsh+5YgGAoSLlaZXSwnQOps9SyLSzLxWf46AmojI8PM51ZxRIkhsduoK+vl0qlhmXDY3v306pX8Kl5lheXiUajSJpOrVYmFA6TLljYzlNPl60JRT/CjX/5CDQq5J5i5Mh2PfA8HPH8SNaFEoyiV74PFI0T//u2C/J8Py+CAOe+8Jus+80vwMokFFdYzNXpjZu/cFfRk4LQB28Z+bGYwr/FFnl2CuLIFf8N7NYzGul7Ms+vvP2KZyWXFxJro2cXh4bl/LtIJKtkHv0/z0lX4RrPnGcq2DwbQsrzpSh8vvsW/Tz8rCLRf5XXvcYLhzUh8+fDczzmzkwQCRpgewQDCkury0RDMYrVKtNLS0QjIQxdxdRkKtUaguDhuhbVepXhng58YYVT55bxmxFGxxIcPrab5doq+x5O0d9lsJqd4+7vfR7Tb/C233kHji1xaP/9fO7Td/OuO15PvlCiVHeJRBWisRA3vvxlmIaBgMdCKsfpiSlU2cDQDQ4ffJjhsSvoaeult7fM3kcneO2rXsPZuSq13ClmFhuoC2W2ju8gXUoRtIP41CB4Hei6wqf//muEAxW6uiOoYpz+gc28/09+By3gsjyTQ3VU8ukGiVgbufQsxWqZns4BCuU6sYifSl0kWymg+zRisQ7iUZdiIUWjZVGtNgnrKnFToWI3OXpmiXe853/ypx/6X1iBGlon6IZKOOSnUW9RKlcwDZ1ao4nf1NkaHqEcLOLz1jFYqnJmcZK8oLFj6w4e2P0oQd3D5w+h+Wxy2Tqxfj+NnMMrbruSut1iy9B15Ksi5+aO8o2v/hOO5XHJ9n66EkPnxbhKDkeAdK2K43mookxYC3H61DQ7t72UV/zKNYyPb2ZmfoVmboKrX7SNu7/3ANdvu56FdIWA6vC5u37ARz/+Gf7yL/+IeglkRaDR1IgrXXzv/vt556uu5vtnnuBhv8poJsGWdQaJZIj51Sqr+Qrh1CqOJKIIIkF/gGqgDc3ySJoyrY42zpw4gmJLSJKM3++HVh1NkwiqIVBNsvkUpuLR09bBQnqReCwEioY/EKZcSGH6g3R2DrGaTuG4FkFDo1RtMnF2gZdet4Ndh46CFmFlaYrh7i7WbxigaNfoa7WTKqdxdIltfQOcW5pjsHOQTKFAtdJEkzxOT5whX61RqlXojifJV+psHOmhUK6Qr9bpb0tSbdbIVqscOHSI3t5Otl83znf+6TFEUWZxaZGR/gGWl+ZoNOposs3ouks5evwR/vofPsdNl27gkUNHedlLOrl6/RilUoFCbonU0jSeOcquhQq9ySRWuYJfDDHrzJJwdbK5AuARNP1YdpNQIICpSvxgdpr+ziQDIR+X9HUjiyK1aoXHp6fAFik2bLLlAmOD7RycVLhy7EUsnpuhXC1jyjKS6FGu2hSKWRoyGJJBaa6OJ4koMT8JT2MlU6BsC9iehmH60U0FMe2SiOoUKxANhQlXqhiigE/341JF1E1GYp3EfDrHJ1epNhqomo+W3eDI/AytksvqaoGh4X6WljO0ByOUZJtio8hqroihyuB6+P0GuVyeLesi7D66SjSSpJSrIusyruWgaCbtnVGSfW0QGCUQTBAOBYhFHf72bz7J7Ow52uNhcuUKtVqLREIhl18kW8ijmS02vvgazkycecp755pQ9K9s/8B9TN37bbJ7P/GfFsfnzX0F6rZDOt8kHtAI6PIv/G1/5PL3gmM/Lz70BUEgZCrM3fVb/On9Z1FlkahfvSDyzbeOL/1bjItJ5F/NsFO7n1knUdNyARhu9z/bqT3veVbGDtf4CZbzDWjVoWOE/LfueK7TWeOn8EwLtQvd/fN8FGT+K4lFawX4Gi8U1q7RnwePSMSg1vSxnEth+qOs6+snlyuhSBobxrrZt+8EzWaLlu1xbuI4TcGjVbfQVQPb9XAFj2BMwdAUys0qzXqVlT0n6ajnMNMJ/vber2HEfHzkj+4kW6ixOneSklvgt976Sr72tQe5/avs8gAAIABJREFU7MZNrO9po3/oelRFxXVBlnUq1RJvet1bufdL/4DSJlBpNenrG8fzXE5PPkyr0UnXjihXXnM9f/e293LTS1/OzO4vYoRChMQWiq3Q1h5AVLrBdYiFNBr1Gg8dPIKielx1xSxetULC3ESrJbJYXGSeFVZXC6h4RGPtXHblOLnqElbdYT6XJRw2kTyRRsshk12h3moheh7tyQ5K5TLXbt/EXFNmfmo/n/3KP1MoVHnJba9kz95vEV8Xw1BkvGAIWaygKDICHpbjcerUCbI5C0ppVg2VRKyDdCZLOKxQ8HyIQK1lEYu3sWXDMJKviVyzueuf76eBjG4atNBxvQaT84cZ3NxBNOoHJARBYLB7A5aTQ3AcvvqDxxkbXofSFuDY8eO8650fZXSoF01V+OyX/w+dMZ35lQWWl1YYGNzC2KU38drhbh58+FHe/d7/wf/+f97PG371ZXznWw/jSQojI2NMT5/jyo19PHj6IC0rSCwyRt2bpCJfwsrkAtdu7GHbaD9Tyyts27GV7GqZTKHK2cUMvb3tHDqWRRVyLBWrVCt51g+M41pNQrEEhVKJ3v5efJrDmVaJ2cU5zk1Ns3l0iEggxtxKBkPVsBoaoyPraVZKtMdDhOKdTM1PcezcFD7NjxHQ0WURt5bhxS+7jI5QnJrV5JLEIPlilm3BdaRzZbo7k7Qsj/nFOcI+j7Nn51EljZqioigWl28ap2lBJBZmYWGZQqWJrkoYuslg3yC1tMvxqSWyx/Lc89h+JFGhWmkQCCbJ5bLkXYeGB7YkMzLUzp5DdZZm80x1pdm+fSf3P/gAjVqVjVs2kilKnDhV5aob+5DdU9QKTTLlCr3tbehSgFy2RFs4SKHWoFypoOka6XSGgN/EsgQ+ed+DvPrS7bi2Q7FW5+6DT9Dd3kk05GchlyMeMND9AtdvvISD6Wk8XCKBEA2riU9U0QIiS5k88WgCLRymZ2eEpZVl5qdWOZxJo/sDhDQBydPxmiXOpap0JdqxXId002XlxDTdCRlHDRMIRVleSeHTBEr1KiE7hIxLf2eSlXyR+UKVsd5RqpUqm/vamCwVKNs1/I7JtVv6uPsHBzAMP/VCg45kCFmUSOUbdPSMcbWSYnmlwLHKEroiYFMjEQlTKZZptBTiYzrJeJCpuUUeuv9uPCtLKGii6hIRIUhnLI6p6gTa4uQbJWTP4Q2veyUHdn3vKe+cTz2U9kuE43pM3ftt5nfd+bTCjwcUaxafO7jAfLbGL2oDnio2wLFZfuzibDh7JogCmJrMh18yyv99y8gFEcMAfuuOv/2ZNp5dCCLX/QlYTVZ3fxxFfmaX+uRqBQD5aeY111jjQpIqN8FzSd39zuc6lTV+Cj+rSHShCrrny8jZf8aP+hb9ojxXr3NNJFrjhcDz+T7wfKfSaDG5WKO3v4vRdaNYtsvBY6dw3Sa5XImVhRKXjHWzaawXqVWnPdHBpv5RLtu0nss2jiIpIlVcetra6EwkGYh0oEZNGl6LzoGNnMy1+KO3voffeMUrKVVtisuzTM0folxzUFB56a/eRKshkHI1AmYAWZTxPI9iqYDreeQLTXJKkYDfJGhonD51hGJmBl2VOHrsBMV5m92H7udd7/ltZEnm1W/4baKhLlaWSgxtHCAQ6EUQJBRNRqfB0tI0d3/7u1TLdW598c3c/toXoQkVzp46Cq6N5OmETZPNI0MoukOhtkoi1kGtKYEa58DBU1R9LWYXJynV67RcEUEUmZ6dItnfzWI5Rb0wTbFe4M8/9cckYmFefPOtiLIPQzP48nc+RU9nglgsgqGp+AyDZNSHJ6fIZxZRIwO4doMHHvwubW0qjt3iwJ59eIJEIBSiPRZGdOvsXL+J66++lNdcvRMbj/ZgFFFUsGwH3RpGMyJEidMRNjl19hB7HjlEj2+Y8e5r+OB7PsLxo4uIjs7I0BiXbBpGlQXe8pZfpa8jzF999Kt863uPk69CWOummFnikY/eSTAYIhQO8to33YrneLT3tnHbTS/DHwzhYXE6t8LDDy5wxWUv4d1veyOe60Ow8mTSWb75wwe565//hVquQcT0Y2NQWp3HUCVOnDhJrVpGUYMEfSHaInFmVudZzRcpNms4msGp6UkOnZ0mZIZZ19VD0G8g+hIMrhshoCsokkDQ1MnmcrT3dLCaznDowOPEoxGu3rGTVDnLysoyWDWGr1nHhoFhCs0WxVqN6dVFfD4/JxZSjK0bQBM8ao0Cm0d7WS3VKLc8HFFlsK0dny5yenqOMzPzHDh8kkDAZLi3i63rtzLQN4amBDk3n6YzGeVFV+1EFQHHIhQyqZZymOEEIx09rBvsotFyQQXD0NlxyTD5bIMzC3lmMwKXXX41FUcj5RQIdARpNM5RrlVoihW6DR/VRolkwIdhauTyJZymRcu2qNca2K5LqlTHbrVwXY97jp/gc4/u5p6Tx1Bl0BUPy7Ko2TVi4ShnJtOkl7NMHpmhXM5SaJZoNmsEdJ2F1QKaqpMI+mgzdMJpjUGpnzafSrZQplAsUbEEctU6AtDTluTs4iIr5TodvTFG1nVT8wwChoVMCVET8BsBAI5MLdMVD9KslTg9NUtFbzI1d45mrcGe0+fQHY1YRwK/pjIxvUzvUBuuDMGgQV9bElPTGe9rI53PoRt+io5Dd0jHryn0xWN85lsPULMsTFNBksBD5vDeXSwvZ1g/nkTXFdqSYQb7Ypg+jVazQUBR8SsGilhj1z994Wm3nv3SdxQt5etsuPkPmN91J379qU+H53kUaxbFmsXt40n64uYv1GlTrFmM3vT7TP7wY+jqxRVQng5BEJAEkC60qFMtkLzu1gv7nE9DZOcd4Hk/8wa5a379I8+eY/kLDFFYGz+7GOwcjADnR1uV5ziXNZ6a51okej6LGBcyt4v5On/ec7tWsK+xxgsLwfPQDYPJ6VXGR/qoViqopoquKMyUlmladVbzNshBmlaZyzdcQliUiLbJBPvaaLYsNofOizH1lsupiQm2Dwwz766Qqle45erNEIiRkDq567OfoKtDRYyGGY5tQQsYPPj43WzqH6EjGUOUJVzPo9Goo6oqqqIyNz2FU5PIlsocO7iM4NlIdplqucnGjSPUSxVqziLz0wamrhE1WpRyAS6/bAhRC6D6IpgBjYiW5cATk9zx+3+KJoh8+7vf5/SRb7N4bo6puTxlq4kgNTBFD08R2XjDq9j3Nx9i46WDPP7YDIIkEfCFuOnmTTSaDgPXbOaJ/WeQDIPV5RL1loNx8jiBqEIgGOSS9gGmJip87nOfYHFuGk23yJZKbO7p5gtfvpOgZrKUDuLvzFKcqTA0GqO9P4EqO9iyx6Xb1yEIBs18hVrdIhwJIuouwZhKptEgZCiIgvz/s/eecZJc1f33t6q6qnOOMz15ZmdnZvNqo7TKAYEki2AyAgx/sI3NnywM+DEGyzwIMGAwYILABoEEkhAIhOIGSavNOc9OztPTOYdKzwut/IAxBqRdJfb7pruq7ueeW1Xddfr++txzKCgisiAjW5wk0xnaW2LsP7Cdj7z/3/jnWz6EO1hgy8O7uOWT/0pbNAKCQL1aYfk1Szh9QuJNNyzhq7d8EFPSeNub/pzP3PoVGmqDtmURlsQ7yGlVTg4O4W5uYmMkiDm+H2uTm2wxwdvf9l4OHjpB0JmgtSNGSk+yfFOQI/ffQZO1yP5jVeJNXkyjSj6p09nXwvZ9e7H725k4niQSLxBwySyKtJPJ5Jgt1yhXS2y44AIeeuwxuluDLGTm6O6KUchLHD4xxCVv6McU41x7zcWMTC8wPTHJwdFx2rt6iHaEGBs5wSXuXtwbFzEyPcsdv3qIlX09OKwSuVyNweQC7TWVJw/uZdPqCymXSmTKFewWmStXLWPP0WM0R8LEQhFEESKBIIpoxe6yMToyxsTQDJ5mF0Gvl2hPO+FAiFggxtETx0kcn6KsW5iaS5KYLnFAk5BlK7IsMptI0RAkaFSZL5fRNYNkcoRbP/dF2lvacPmt2F1OzLqKyyPz0JFBWj1hqg2BSr3GkdNDtDS5KSarOCJOrLpCiTxeq5uCWEY0VFx2K2pdpVI1kGzQ0AREUcAmyFRoQAN0RCYXUnhdbhoNOLGQQZVTRGIS2gkNzWXi87mp5zSmp7PYrDLZTInlVyxhLlslU5hnfGqGJcGldHT2MDI6hKHaiLb4kRslSlqRUDhOwOenVi5T1HWuWtnHw/v3YgomyzuamVhIY3M4scsaMwWdhUSReMiFpaizYWCA05OT2BWZZp+MkHWgOiTGkikaxTqXrullPlFgZHwCm82KKUqMzhS49qLlWLQKVclDXc2TExRaOhZz+y8P85FajeCXriSdyVBMJ5mZn2I2MYqhqihiiagvjlsR0O1WrHU7tXKWXEbjwNBxcpmF3/ns/JMPm1jyspvBHfxfRSKAbFnlffceA2BxsxubLD0rPaHjsg+CRSHoeulX12poTy3nOvG5654Te7PZKpjmH5y4+jcw9HMzqBchgnD2k4qf57d5+ho3v+m253kk5/ldPF+5a14MItF5znOe87zQsdkULr5gEaKkMzo+zvjcHPl6gfmFBURdw6Eo1OvQ5rGQL1ZpGAVcvQ4+/717+cZt95DNp3FYZaqNBpoJa5cPUCiUaaBz8fo+5IidWCzMjicfRVcqCA4n+aEFwrEm5lLHGWhtQxJ09p08iSTI6LqG3WbD4XAgyxK7Dx6n0ggzM2HB4fDjdTuYT2Zwx+007CpVm0apVMdqnWVwzzYefuRRbA4b85UcpuhHkQTawiYz01m2PTHI4OkRBicmuOfHt/KDOx5ker5CulRGlGQUw41mdbBywwoe+NkPCIcDlKslXD4fgsXGu69fQ66gMzG5gKC7iMViNBoNAv4QnU1x0HWssp0duw4zXVxgYmGIfUceY2x+kHKpytqufmZGJCZOjHLddW+iWEhj0wVaWptxCgJRv4zTqWCqMrWKydDIBOGwC0k00Q2NptZmkCV6umJ86FNfp5AvEg1G6IxFWbJ4DTarFQsNrrx0BVse/TxH9u/i5/c8SOfKFtRihq2Pb+Nj//JRfr7zJ7z15X/Lu992LZ/6zH/Q19aEQ5P42te+hmA3aF4SwhOLIPr8xJo8hJqsFKoqcUeNnE8Cw2DJ4is4emoMu5nnxPwYIyeGWdXcxoquXnwBL3c+tB+Pw4aJwRve+RoG2vs4uH+Qtf1rSSVTLLuwG5/bCfUqgmmioZJNF3E5FPbu20NntAlNVfH47MzM5zk9foKenj5Oj82wde8uPv1v3+X7d9/F9oMHaY63EPW6iNoruJQG//Sd2/jXH/ycJyeGEd0KsZ4gvUsCXPmKbuwWhZHxcRq6yfHhETTdIOzzYbM6mUllCAWDVKolJEkmWagwNTnB9OwUSCJOl5VFizsRFQuNOjy5+Tj7Hz3Kjq2HmBnP8/COA+w6sJ+WcIQ3/8XreO/fvo2rX34R5WqFSMBLPB5lcn6OqalhdKNMTzTM/gNHKRlWUpkc+VKGSqVCUzRCk8fDfDVDtb6AUa9TqOYpFhp4Ql5Ms4FFEvB6PHjcbhBUMAQk2QaSgEUxMHQDWZSwWiyUqmUMQ6OuqdgsFrwuF9VGHUGsk82nyGdq7Js6TfcVHcSXd5E6nsdlBvAF/ATCfkJBG0Njo2TzSeaTObL5LLdvf5KK3mB5TxtrB9qpZRYYmpyjVtMJhcJEAy6Mch5Dr7H7xCAWqxNVNTk1m6FULeOy23HKItMzCS5c00vU78VqsbL3xChVn0ClqjGdKnBqYoaZbBrBFBnojpMtVEkVsoDAorYYl69ZwareZhrVFOlihZnUHEtbYywUTNRGg0KlgO8L/0oqVyadSfOK1/8ZAV8Ei2TDZrPR0taOpqiUzQZ2ScBiaFjdPuqagSyBqp2PKPof8V/0EfA3k33oY7+x/+mExk9P4DTdoPf6f+QHX38vS1o8/9XumU6i/dfeCoJIdudvFYR/1rwQI0CiF74P4Dmp3vSphwf58ie+SnLXV57Z8rF65amqU+d5UfFC/Nz/USh2mDz64j+PlyB/jFhzNnP1PBci0Qspt9BzHaXzQjr385znD+HpnGDn+eORJZFHdg3TFPbTUMvUtAYDTW1kUxUki4EsO7GpBlbZyfIOP+OJGXRbDVNqsLG7A9GioJkyTUEXgxNTSLpMcyhIOOAl4owQjXbw6EMPcXDfHjp7l3LoyYO09m7AFAwk048u1ZktZLls7TVIkoTb6qJcLlHIzfPgY/czNXGCV914GeMTAslEGVMPks0mUBQrwUCA9NQ0+UyKjmYv4QGJ2qCT+fQI3a0rsVhERLnIju0nqaklIlEHw8d/SDz2ak4PjlMqlfDLbjpawkyPLxANeam7NTKzefx+ByIyomjhI++4hB1H89x6x0/4wLv/ilLDSm9PCxNjU2x78j4qWUgkEpRLVcIOPzG/n3yqTtTtxygLVIsqskXh4J5TfPpTX+B9H3o/9z/0c5qa/dTLsJDPcSIzRTQcQ9OKmBaBpnAQpyxyfHKCcMRPX3c3+UKNUHsLo6fnCHs9/PDhWVrawWGKHDgxiSDAL+++h1irkwe2nuZL3/hP9uzezdHjm7l3771U61U+8YGP8fCTDxELBvjK1/+Zm199MbNqFiFgRWmSsaRNXnvlNdQbKhbJQ61WZXlfCyPRWf7m72/lqmuu41XXr+PA0XEW9XQyNStx9QYbp8PjON0Kx/YdJex1I+GkrmrYGiL3fe+naKJIKNBK3rBx1WVXMz81QSov8tjILmx1mUpBJR5vRrQ5qdVUavU6miFgEUWamtvpiDXxy+272Daf5e1vvZFTp0fwuPysuqiFrQ8dZce+EqGeMBh1nAEHdrcTq00msMlPuMlKp8VDtmBh46VRCkk3xXqFteEQgmAiihaQLIQ9fqYT8+iaSTqXxGaRGR5MsHrjMhYSc1TTFeplOxOjGRyOEtFgkONjU6wN+bn0qo288Y3XMTIzS3drjEAgSqlY5OJ1GzlyYIxyfoGJiUk6OtppDNYxBBum1YnHU2bLw49wwbJW2nqaKQsqtUqFdCFLua6DCdGAnYZmkikW8NqCOG1Pibd2j4RZgf5oF4OJCTS1gVYzEUQJh01GFwycVivFagMREYssYpgC9bqK1jCwut00ylmuvfBqfnTv7VztGGDn4YO0Bh0k07O0ty3CJgmoNTuTmSSz00kuXbeMUj1LpdigmkuQVLxYLDlyVbCHgrQ0N3Ny+ATVWBAV0Ct55ks1ZFnG6fFRq1W4ePUALruT+x/fj82usPfIEFVDpCAt4GzzkR2Zp7M1Tq6Qx+4AyS7hVuxkGhrZUhGnZAdq/HTLLpxOO2uW9rOQ1diwvJPxiSyTmeRT56gZ6FqNn/3868iGRvviTZRrDgI+O/NJg462ANf++XtBl/mLN72CV994JUWtgVOwsHxxG4/uOIyp/+55x5+sUOS/4cug1sg8+He/dUwQBAzDhDNZiMIXfwTcIa5f2vys7U6lK5CeYn7H2c9LZJompvn/C10vhLLaxplKca/98LueE1tf/sRXwRt95jmGDB3i/Wd3YOc5p7wUxJWZzZ8hvun96IaJ5XwG8RcMf6xIdLY5L2ScG87GvTp/b85znhcPgiTjcXhxOa2US9AZk5EEK6XqFPW6jF0WaI0E2X1yDK1Rom9JF8PHJwiHAtjjbqK+AKl8gVxJoLMpgmaayCJUqhrJho/t9z/Cju0PsemSS5CsDmZTZbZse4D2VoNVq25gdFqhyZ7BlL00Gg127ryHU8PzJJJjjA7mufHGC9k/OEzI0wG6jGwx8MWDNKwN3vqGdzOzqcGHP/IeYvFprr12LcOVafoHVmICuVwOtTxFciaBIRo0OV0U8lU233UvqVwNzWgwxRS+WohQkx+Hx0GjWKJzUZCZBSd79+0iW/HwD8e+w9/+xYdpa/9b0iWVtiYvc3NJFLtCvHUVtUCKQj6DR3FzbHCMmirgdtipV0qEQ1FEUaJUKnP5pcv4q/fcRKPRwGm7mljUB2hUynUe2nyU1W29hIJ+Du4Zwm4xEV1uqppOIOhE9Ks4rTou2Uq5UsUXDiIpp8iXY3R19JHNF2iOhXkoV0FyeLn57z6BLMOGjRsZyz2JzWljemSKzScXmBMHKBVz1Oop/uPxKa6+bi19vXEOZ4Z42folCIaBy2mhoMYoFOYI+rw4LNColgiHmzg6OMulF67ikUd+hjfUy3zKxq9+tZ9MZob3fuBNDO45jSmPsWblIg4emUajTHdnDLnThcvjY3J0mIFFHWx95Ce0enopFAq4wgL5YpFqrYJDVBiZnaWvfzHTySRur5fWRS0ofhEpb+HE6AitTXH8bWFKqokYs+K2CwiKgjfqJ+j3kEzkCCpgwcWRUwtsWh0jFIJ8wYqou7FaHeQKZTxuG/lcBrQGFUGkWlfRdAGH000tWyafqTB5eBqH08vQyDyy7Mbv9NHaEqJraSs3/Z/XYeg6druNRjFHyG0ll89Qqjaoqyo2p5Wrr13B2PF5tmx/nFxawml3U6tU8QRCtLd3cvzkQRAUnth+gBWrl5JLFag7NHTJwOe0Y7FZaBKD+ANWiqpKvlojX68z4B9AdRUoJSx0h9s5NjkCgoDD5cJiEUln8yiiBVEQ8QddKIqdSqWK1Srj9lqRRZFs0eS+vVsZWL0So1JgOlMnWaxj99moeso0OUIcmp7E0+NGmIHj49O0dvSQreZwOJ2YFYPmUIjW5hh7jpzi9MgozdEAiUQWn8uBKbnp6YwyNjHJVWv7OTE+z85jw6wa6MZlt1IzNBILSayKSDGfx+0ycThkkgspWpt8qCURI6MhOXW0apG1Xe006jq1eoWFZB5RsWCqVUqahWOj01hEG36rgizkEG0+BDFA1SxhOmTamn3sOzxBayAGi0Q8boWmUJTpuTQeXxO1ehrFKWOV7ew/PYNkgVpD+53PzmcdOiEIgiQIwkFBEH55ZrtTEITdgiAMCYLwY0EQlDP7rWe2h88c73i2tp8Jpmni/7OvQD5Bds//XOEMnhJZDBMCm24Gq/O3oo6eKcuvvRlkK1b53OQlMoFSXaOuGf8lGD2fBNe/F0SJb71+xTm1Y5rmU7ZalpB99P95Vn1N3fmXZ2lU5zmX6IaJbjz/n/GzgcP6lGYfvvpTz/NIzg0vNj8Bz0wkejElr34hRSY8l0vszi/nO895XpicSz/RaKhYbQJO0WBkcoZqTSOVztDR3EbI72RyYY4jI0PUjRqr+3pJTC0wO7PAn19/IXuP1/jAx7/I/sPHmU2kyBRLZLJ5RNEGtlZ2bN/KkcOPsqQnRGt7L02xCG974yu5qLcFpVjlzp9/E6fVRmfrWnRNZ/f+n5KtFViyOII35mf1Jd00xBqTQzNkknPUynl01cCUVHRJ5PjxaZqa4/zg+3fjb3Wwffcx2ns8yIqMLEmMDR/m5GCWt//VzYxPZlAliUq1hiI78dicuG12vKIds65RqlSYnSmSzeSwu0X+8T03cNGiHtJjJ3jd9e9lei6NKVnQDRPN0CjWVDL5Gkv7+hhY1E/IZxJtiZCrFokFAhh6A0VR0LDgcjqYmk9y/PAQXo8Hu9dNaeQIl2yMUylPcOnGAZb1dzN6eoptv9qDXtfxRbrYezrDlZetoL/DS3ouz87H5yhU80TCLlb0d7JkUSe97U1kcwUikQjHBjczPnWKLdse4aMf/EsSC2nufvRLrFm8jHu/ez/H9p9iZViiXi7wb1/7JAHZh9MqsfXhJ9i75QhdcguTI2me3L6XktGDw+GgrutMzE7x4OlJBtYvwud309fVwg/v+g6Kx0Qqj9C7ZDlf/tq3+MGPfwGGSrVqYjYaDBVStMQFlq5sZlVvO9OpWcpqDptVIh4NkElVyWfTtLXayFXn6enzkCkWqAt17BGFifQkQb+Nw8eP8dBj23G6vCxe0kE2XWDVhf20dLcQ8zuxS05kp4Muq5eWmovGaB57ss70aI7RIxPoSAj1KPWcj307SxQbJQTFRJLA0Ay0ep1atcLIxChPPLiZe3/8AHfd8SC33/UAxXKZU5PztLZFeNm1V7HhouVceMVyeld2EQ54KOQyZNJpxidGSeTS7Dt2nLG5aVIL0yzkEkzMzpMuVGnrjLCQyhFyh9B0nYDPSaFWoVQs0La0HbvXz9xMmpPjY1TtdUTJgtU0yWSzFIp5krkMk+k0Tpsd0aIjiQKj6SFS2QyiGwTFjt/iZKB/KW67FVEQcbscFMslTCDgDtLVFCfk9+Fze6mUawiiQtDtQRIEJsYSLKgqN16znFe98jJW9fcRKIo8/sQRrlh9FVN75rEHFQRZQjc0mkWJRhUkUSFTKjOXSBMKRAg3tSErQTpCQZyShYah4rW56O1ajNVmxW4xcdsclLN1Kg2Nar1CTi8zm84jmgJ6tI7cbKeoqxw6NU6trKNqGg2hgdvlJZUtkC/McnR0BotN4V03bGQ+X0RUGwxO5ZCMOhOJDB0BG4pipbtnMQGrBxsKR/fspW+gh/VX30A2n0exiJwaHMZmk/n8v36dY0Nltm0eBF3FZrcR8LppnEuhCHgfcPLXtm8FvmSa5iIgC7zzzP53AlnTNHuAL51p95xz47d2w8Iomcc+83vbhjZ9GLQG6c1nZ/JWrj91I1Lbv3BW+vufSBXrrPzIL6g0dIxfiy56PvBf+CEAMru+fM5tBdY9VVY8e+9fP+M+nr5WNvn80rMXKqZpounGf32X4JkvAX1BUso83yM4V7yo/MTTPB8i0R9j+8Vg4w/lvEh0nvP8YbyQRN6zzDnzE4YJQZeTVL6E0y4TdIvMzCXJ5suUKjXa+2N0r4zhcDgZGpnApjhZe8XrGE1HcNo9rFl/Nffdu42AU+HTn78Nl9NFw3BSrNR4bOujlDJ5sCiMTO5DQGLznd9GFjQe2TtIWzRGKNKEqus8/sQOZrIpwr4oDz5yCLPQTCzQRSahoVhszIxOYLVIJNPzlIwGiuA47xzRAAAgAElEQVSls6MfmyKDkaVaq+IKWIm3rEJVVSxyhnivjytfdgPBYJh/+syXeP0b3klXT5CA2wOyRL5awxrrAJsViy6RWJiivb2FvU+c5JbP3o6GwOrLr+Szt36ShWQKuyJhkSRODk9Tq5YxTINEKsvkQhHNq1DRiiy/oIvx2Tkk06TWUCmWslTMOp6Qk4ArRLFYpDkSQGzxs+vAfn7204f5q//7QY4dHmJ8ZBq7y0brgJ+fPriTz9zyPiLNvYjhK3jbO/6Bu396D0cPHmLH/sOUG3Ukw4libafeaDA7ewxJqlMqPvUbcODyTr7+7zfjMa00+T009XTg8DhxhdoYfuTbjA/P440rCKKVaMxH29Io+bzO/EKBmhDFNAVcDgfNbQr5coVOq5WXX/ZmDB32H38EU9GolgrsH0/hdLkAOLnnl8ylc0SWhnAvjrKQSZDPVPj21+7i2Ows/uYA9aKO2ynw9W9+l66eFuz2OsGol2XLuxidXyAQ9RANdrAiGKPb48VucaBpGql0EbusU0rVCQabaQnGuP7CK2hp6qEmFLC6NLKlPNlcnoXEAmpDIOJqRtHtzBwaZ3I8wVBilq4+D5ppcvroIN/+zk+4++6H2fnkQX74wwe4997NDM+mqVSrXLJuLStXLuH9H/hLPvyhd7BooA+v30FVz7KQnCSRnWdoaoRkNkOmkCSRSVCq5HBYoVwqkCqkkCQRRbbgdro4NTPKhesvZqFSwOmw4Xe5MLQcLknAnC8zMTOH1xeiK9KBRRAQDQNTN5BEC4YKEYcXWTaRJRFTt5Ap5ajVKqiaiiJY0IUiqkOnuFDBo3hpiXfi8XhRrHbsDgdhf4jBiQkM3YLRMAl4vJRLefS6zqUDi1m3ailVWQaLi4F4B8tbeymYNgSrwZYtD2N32ohEIqzqX8d1K5bi9XdQq5UxzQblSpWQy43b433qVTLI13Qqhg4IWBUbVqvA6aFxxEaJrsUBXPYaulTB4ZLBFHG5HDhcHhRTIXEqhSya2G0uVFNDEEyymTKmpPDk8VMMqjUsskg8HGDnsXkkVWFkJonHAsmihiAKWGWFlR0OrtvUhUOQsBQFJscnqVVV6g2Nv3njmzGqJrfffjuFYhnDgI9/8rNcf/1qHtl9CLNaRXK6kSy/O3jlWc2IBUFoAa4DvnNmWwCuAO4+0+Q/gVeeeX/jmW3OHL9SeI5neJpu8MRtP2Ry6+d/7+Ry6d89AFqDwYdvPWtLuFqu/DhYlD8+wfIfgGk+FV2x4eP3A+D5Pcm5zzVPDCVBrfPRz77vnE/k1//TZgDmnuVyvqc1tXNxf87z7DBNE1UzKFQ1qg0dmywhicJL6175m8E0XxCRgGeTF5ufgD9+InY2hYc/1Wii85znPH+6nGs/YZEEZEXDaXfQqNeYTRVw2K1MJJLoNgtj8wmyqQqOqE68JUi8uYl6vQoINMVDeLwhLrn6Bkbn5mjUNGbnMgiKj5/d8UNaYjFuet3rsElwePdBDj/0E/rXDlAwXUTbPCxbfgW6bjAydpJU9ghCtY1aQaerawCXy0dyRsNqc+Fyh+nsbaO5NULIE8Jjr6NqCzy2fSuT08P85LY7KKUbGLqGqppomkGhkSLktXHByj40VWV2ZpCf3fddRM3GXDJBTTdY1NOLbmhMzY2TyxdwWBwEXCG6W2LUNA1TEHGKFlas7aBWq2IYGgGfD7/XRbZQAR0sooAiW7CYNiJtrcRb2tCtAQqlp3LYlIpF2qJNbFh2AegqAbefXK7AunVLKaaq+D1+mkMBXKIDn9fH2mV9HHzyNDe9fS1ep4fN245x5aYNpNJlhiaHSGVVHHaJilpi6apLSWfzdHW2EgpZmUoXiPW7CLR5afGGcHktZOZyfPbW2+hYtZJGQ+eVL7+S1cvayRbyNLl8XLCqh0s2XoLX7aZcKiNZoNOn8auf/YQv/PMnkCUDCZmLL3k1dVXjqkvXspDK4/S60C0yoSaBRqNMo1phvDhHwOPF47KTymQwEwGaRIEb1q9jIjNOwO0mEGpnNlkjn07R5HOA6qJSLLO0o5eLVvRx46YNlCoFRMVBX9siWppbESWRSLiJzFyeTC3J0PApfvnAVr70g39nbHocs6IRCTZTK+j4/AFCwW56u5qJNXloaw3R0dVOrpGhoWuIdR8b25aQy6h4PAGSmQJTMzNcsLybd7z5Rt7/N2/hjTfdSLw7zMCybrxumVK5RDIzzdjUICNj48ymk6ilLMMjE+w7sJ+RqTFODY8xvpAgUy5TqFVxOa2EfUE64q147W6yqQJ79u3AH25FM+pohkTQG8HqkLG5XJQLedxBL4pootXrVOoVDFlAUSV0QyVZTqMaApJp4JGtuCUrimChqtXJVgqUilWsVoW6rUyilGFyepiZ0RyBQIhiqUqxkifqC+K22VAbVWrZCmZJRa1XGU1lkGSJZT19BGN9OJqXMDiVJDU/QWdLB7LHy4V9K/CYHsRajsf3HKJSTNPq91MolCnrEp5IO1YZTp46QcCrcO3Fq3B6wrQ1t1Kt5hEaJQ6dGmHXiWEy83meOJYgmSwxOjqHZjbIlwoEPA5QTXpWtdGomwg0qBRLWG1uioUyVslg47JF+F1+vE4f3a3dVDWDRR12Bjpb6G2LIwomVqubyUSWUr7I/PQ8BVXFGfHTvazzKeHO7aVQFxhNFpkYOkwyleXJbY/wg699gj1HT2G321DRsbltmP/L6oxnqyZ8GbgZcJ/ZDgI50zSf/rt/GoifeR8HpgBM09QEQcifaZ96lmP4g5hIVVj5io+S+gMqYfn/7Cswd/qZJ0T+HzBNE+oVfvGjfzwr/f13dMNk1d8/RG52geTdf/m8TqD9G94Pusbxhz9Ps99+Tm1Fbvo+6qk9ZP6XZYR/KNf/+07gJRah8iLHNE3qmkGurOKyWXDbLC+I3FvngvSDHyO4/r1kyyqBl1Y1xBeNn4A/POrkxRqd8kIZ968LRM9VNNHZsHNe2DrP88lLOKH1OfYTAoNDE4QjYQJ+P8nkAq0tIfpiUfJlAcGiEw95GRxOsGCvYXXa6V3USy5fxO9z43XaeGL7dvYdmCMSCLFmw7X8y63/SLVWYs1Fi8kuDFOYKBAP+OlZvZInduzigqUrWbHxKlxuHw89eA9VtUoo7GFZXOGTn/8J11x3IzaHldHTj3P5JRezIJUpl+r4XBbWLFuMnhpjxAEP7LiLO+7IsmR1D73t62nUVQQgGLKglbzYve309y9iZGQYQ/Dwqte8iy/+8y1IdisSGjW1RjFforO1lWQuwSUbL2V6IcVseprLlvQwUygxMbmf1vZeTp3cQbypiXAoTCqbZ/WSReRLVXL5CjanjZXLrufAkX1IVj9XvuxGLmqzsW1sF3arhaNHjuF2+VEUL5FwG4XqPFbV4PTpDGpVxZRlnE436/oXMaon8a8Is3fHAdatfj1/9Td/Szjo5cDWO9i65RgW0YrPH6S1/RK27zlCR3uc4wcfwHDbWdXeg61i52f3PsSm176MnY8e48LXtrDrwCke/9FdtC1rpWtdjJHTWTxOL/fdv5u3vvUVCBaJXKHIwZODdLbEeOD0aepVA7usEPb3s+GC5dy/eQchd4Odu3/FyoEBnA4bE8l5pGyGu/7jixwbHuaql19IIp+jklCp2apo1hqG0YzLrjA8CAFnjotXXYLZSLL55wmaI3bqmkkjL/PAlj14Axb27drFkv4lZLM56uVpWpd6WdwbJhKKsetIEqFWRdNUSpU6zKjc8cBeBBPU+RFamuNUK0VqZZXTp2vUNIPu5hiTM/PY5G7mUikOLmxjy+OwYUk//Wt68bndWO0OFKuVQrFIuVZBMDUK1QpOxcrB44cwVI2ZxDyzc2kEQcDvczMxnyQaClCu1KjrdeJNPkxTZOXSFdhsTlpau5mcnSeVzrH70F6O7juJz+Xm6OFdNIW7cLq9aFUV2WnFrJvUK3OEbF7UZIPursWcXBjEJljQXSLVWh1ZEKk1ygw2ZvFKVqIeP6pgMJ1J0ihkcdhtOJ0+RBF8HhcSIrX6OFbFgs0qcnJoEL/DjWyXqZVU0qk0NsVOd1sbIhZmRgVe/vJVfPaWW7FQx1BNWps7sCsOmm1hkukiEV+QejVNppDF6w2QytfpbYtTrNUZnRplw+peFve3cvrkEMeGTpHOZakJMrqcxWO6qasNfE4POwdPoZYF3G43hiLhjHopzBZJymVERAZ3jyPLIg6HFYsEmUwCr9fJ+OwcgiAR8jix+aO4HSKmrHIioxNSnGQLeSxWO/lsiiVtcY5Oa0Tbs/zox4/yf95zM5rFSk01KJVLVGUFRbHQtSjOvXd+his3bGDSp1BNlnF6bFzUv4qCVmFIHvmdT85nrIIIgnA9sGCa5v7feBL/NuYfcOzX+323IAj7BEHYl0wln+nwftOIabLyFR/lsbtv+b0CSrmuwdxpiHafNZEIoK4+VSL+wu7gWevz1/nQfSeZPj7EyA/e+V/n+HyUN/dv/CDoGpe9+6ZzLhKlSw3UU3tou+b6s3KeO3/0s7MwqvOcDZ5eYpYpNRCAsMeK0yq9ZEUiOJN8XhDovubs5EN7IfBi8hPwwhFRzrX95/v8fp3ncsnZec5znhcez4WfKFWqOJwuiqUqQbeXvq5OQp4A6YUCvrgDr8dOsz9CPBrhgpVrqcsZcpksilijUkjTqM8iYWX9qvXc+tkv8Iuf30OsJUD7klY2PzKJLRqhf00LDpeN2fk8F61bj+gLYbE6qNbKLFsWp6XNQWs4wPd+sRmnO8TO7Y+j1ydZ3t9LQayybdsY2x7bj2ZpEOoMYFFlHIEgEU+IC69ZwcplA7hjGSKxIPW6ylRqkpphMjSyi7/76N/z+OOPM7/nl3zrO59Dslup1yqIoohFkmkKRQn7fPR1LeNA4gSLW9xcuvwiTkwWODU0+VTEdmGOJcu6aGgG6VyORr3Kd390N0dOnWJm+Ag//u6/sGP34zg9EWx2B4oikS5XCHoi9F/Yz01v+XO6u9qRTJVicZ5qucY3vvETytOnsNltuBWFjm4/LauitAk++ryb6BqI84XPfhS3y8mDd36TQ4khHHYrmzau4WXXvpFkOsP6NcvY/uRefvXIceSaRDzUzfVXruf+n/wr9+06QF9/Gw6HzPKr1hBpi9DRFKXD1USo10vAFyAYaCLicfHVr/yIdRveyE9//gijk/ME4l68UQVDNHHY7dy/ZQe9nS1YbCYOlwuX3YJTseBqGOjVMsWFOsu6luJQZOq6iBmyYHfZkZQGgiAgSmA0dCaHVYZGpjkxUqavpxujXiKfT+BQTA4dGiYtyQS8LqbHRxienuLk3Cw2r5VoLEgobOPiTRewcc1iYqEo2VSGNl8UUwcDuPCyazAMk0JBw24R6OzqJRrtIlmuEra5SczNopayXLNuBW96wytYedEyYsEAFqsdr8eHWqtis0ChrJIuZJhNzDA2PUq9XmdmdpZUqYSoWNERQBbpbmuitaUVoxrGJjTR27mSizdci9fXRCTajqCbuB02DK1OarpKU6gFdyCEWtPw2wX0coqiXqGSz2KpVwh7QuSKRZr7uzly8gB2AyqFEpKuYRUFanqDYqOOO6BQoUG+WmQ4MUVZreP1+5AVhWIpT7laRtcMLKqbC1evI5nKE7QH8TrdeD0+Qq4gdsVOa6gJLVdhZkajs/MC1PIU/+8//hOlcg5dUMDjxS6JYFGwSjJORUYwVZIFHbczhqDqBLxerIhMTE8yMz9KOptFr+sUGyrpfIWg20l/k5dN3V10BF0E3C46mkJY/F5Mj0ROLaAZdYyyilpRyU/mqRdrdKxtx9Pqpa4DsoxicdBoqMiCTr5Y5NjQOLVKln3HhxAbFiKSQr5QwmGz0x6x4/J40QSJziadE1NWgtE4iYnTuM0Sd3z/38nmcpwaHCUa8FDMayzpWczUbJ4efwuXr1pH38AiNFGiR5Z+++H5azybiKKLgD8TBOEVgA3w8NQ/Aj5BECxn/gVoAWbPtJ8GWoFpQRAsgBf4rYQcpml+C/gWwAUXrHnWazBqDZ2mTe/n9KNfIOyx/q9ts+UGXZd9ENvSjcx9783P1vRv8HROlXOh26iawfe//COO/PQT+J3y8xYR8/SP8fTur57zCf22wSSvesun+Ont/8DliyNnp1O1fnb6eYnyXFQXM02TmvqUQBTz2Qi4lD+pCC/bkg3Uju18vodxNnlR+Al4fpNXP1e8EAST5/ravVjv1XnO879xtiLkXiCccz/h87rNXLaIza6xbXAQl8vLpk0r8egVTh08yqorVlKtGdS0OseHThD0+XD5ElQKcdxuhVLeoKOplUuufAVbt/4Ei1xnYHEH9ZzExW9dwZbjB0jOznN4/yjdvUVaOq5lxdK1zM4n2PPk/Vx60QDxSIzju4YZPTHDDVdt4lj2AKsHuth96jgX9Wzghm++h9u/fzvTJ4/gVyQeKI7y4fXv5crlRT79+e9j3eigJhgYhQJ+XwCbojG3MEVzJIpNKmJVEgzpZYKyj4rbxOrz0BJ3URA0JFVnbipP36YegmaAuUoFuyizfed+Pv3pj7PnyDaawiEUwYNhGHz/u7fR3ByjWqtg1bIcPJXmsotfzyObb+NtN11PutLKqbGtSG3NuFxuwg4PT+45gkWy09EaZXi8SkGvY7e5qFWrWEUVu82C4ZS4/Mq/Zrhzivb2OG95w+spVWcY3vFtpupOBrqvpFSawaZEmJyep68nxIH9v6CWSbN6+UqW9cRpClux2VwkqwGcylKm5wb51WPbuOyiDUTyPazo6GLd1a/gyIm9lOv7GGgNc2xhge/8589x2mW8Hg+LB9bR32fj2MIpvPYuxqZmWL9uCV/84ncYWBZgzfI+iqUKn/z01/j4R9/JshV9FGvbUO11MARUdJwOF06LldZAlCenTqIlwO2UKGWqGLqORZbYuutJUgtZPG4r9z25F4skM7jtJFrDwOCpAAKprvPo/Yd55WsuQ885UKsJYuEexoZO4vFEGJqfw8TAY3fw4C9+Sm97J+V6g4FlPdQFlcWtflRLiCJpVvh8lPU6Eb+P5lAz43MLzOZTtEVCjM0U0eo1JAlsVjtSVSAYCJAtZxk+MY/XI9ERjZEs5TAadsJOD4LFhcMWYNW6ICGvl2gkgt2mcGQsRT5bJT2T4MToCXbtOs7la1djt9kwKxUEESYTc7REwgT9JiWcWBFJl8qEos0cH5qklK1w/Mg4hgnXXncBFpeVZLWAVbYgm9anooIkmY3dixifnmIunUCSLFhUAWdAYm4hjcdVwpWP0xLy0dncwtRUgiWt7ajojJ0aZ27BIBxqY/tjD3JkzzYME3ra46xtGaBUqTI9P4fT4qBaLpAoV3E7vcyVS5QqFRDLKKJMvbyAXrYjWm2UyhoLySTxJpFlva3sOzyKIUkkchmGRrMcH5lm47LF7EzMIlhFyqk8omCimBbs0SBiq0hqLIlQNalNpZF9dvSgBSlvUK3nCfm9lFUDXTfw+720h91INgf5GlhEuGilj/t3niZbrWMRVNS6nUg8wtDRCUBg+95dpBMjJFMJ5uenaWqKoZZTrBnwUdFLrLrwZcwlKnznc//Ay/7sLWw9cowLBpzIFvl3PpyfcciMaZofM02zxTTNDuANwBbTNN8MbAX+/EyztwE/P/P+vjPbnDm+xTzHyTgMw6Tp4g+CJ/J7RSLDMOm6/EMgSmddJAKwK+emyhnAqr9/CCQLcb/9eZlUm6b5Xz/GF3Z+5ZyLRIZh8qq3fAqsjrMnEgEY+rlR8l4inMvPlmmaVOoalYaOYhFp9tuQxOc+Iu75Zua2NwFQqf/uCgQvJl4MfgL+tESi53Pc50Wi85znPP+d58JPGIaJKYFs9/HWt/5fWrpXsHvvcRz2KB2yQqPopmzUUFwOPO4IC7kas7kCFvsYmqoTa4ryppvehSTUcFpgw4olPL53li9+9/vUne1cetHriHe08NbXv5IL1qxnydK1NNQGRw5ux7BUmc1mmTmdwqpY+YvXvYZN193A1RdfzmOPH8AXDdK/eD2KIiM2KsQG4uzZeRKjqjE5dRqxXCG7kGT4+AKRQBCn20SURBIzJdxeN7nEHMsWtZLK5+jtaMcRtdNQCrz29Vexf3iUhmZSMFSwinjcPiYOjdLR0oK/kMTl9vPpT38Ot9TJyROznBxMsW3LFrK5JAszo8zNjNHf18bSvmbue+AuFER+9OMHuGpFB3G/j5V9fbTF42TzRXbtOcC2HU+QKZaxKTYCvhBLlvTQGXLTGgzQHHJgusDvc9Da2ozX7eDLX/0aS69ex/e27mA+eQS/P4DNGiOVKTCwOMbWB+7jxMEhXEqJSEiltbWF/7jzl9zz0D52732QwZN7mJsdY/pEkWXBRfT19/OKN/8lJwbnOXQ4x1Ub1pOeSiEZAsNHduHzuHn1K69mavIk2bSNG9bfxLr+S+nr7ebuO27nissuJTkn842f3cXXv34HV1/7Nv75M9/k9NEJ3vP2m/CZNvY8doC2aDNOm50jW3bTqNVY3LyUSy5fSzTiJ5cbQZAEFEXCErPga3Ph6QmguK0YkoFmGhiySbAnSHxVDBMBryPE7GQIv83kgYd38vCDT6LpGoVCmvlkBtOAstogHPYyq6fJmlnyNZOqVGPRBZ1cdcVK/NEQmiAQjwQ5NHiS0blRksU0fptCoyaADrIioeoqc7lZZlMLuBQ3IVeEpQOdxJviZPMlZF0m6HBSNjQ2rd5ArVGjIxajmlMZHxvlc//yFb7+hX/nyc2PkUmn6G7qYMXKlVQaOn2dcURJJODyYKgGuqGjmwE8bj/5cpGF9AJWhx1Jq6PrMrphACZFTUPTdVo8US5btJwNfT0ktSLZYobB0dNI9QaKRcEwNXSbSK7cQDBV1IrGgUPH0QSBodFROpsj7N1zEEmNsO/gJOXcDGNzB3DHXMSaYrTFm+luaWZsZoF0qUEiOY8hiiTLGXTTQrVSx4FOk9eDz+HB73VikWSK1TqlfI6Z+XkeeHw7mlpCMJ0sbm8jOz8FdYOknCfQ4yNdK9NuV7DZ6gSbbNitDpq6m9i0aBlv2XAJkYEQSsxJOOpF9iqUsnXwWBC8VjKFMrV6nYDXjYmJYnWSTOcxynkMvcbOIyN0hrxkKmVcVjdHR4aYmF+gL96B2+VDka0gQlfYQ62UI10ssmLlKhS/hi/kwGoL0hxv5uZ/+DSXbepB13U2rnkZbul3xw2di4zHHwXuFAThFuAgcNuZ/bcBPxAEYZinlP83nAPbv0Hw4psROleQufMdv7/t+veCIJDd/ewSIv8unhaKDk/kWdnhO2v96obJzJ5dHL37756XZTn+G78Ks4MgSufs2v06mz67leP33MO7Pvk3fO76/rPbuSCA9LtV1fOcG1TNYKFQJ+azvbSSUz8Dnv4Oxy/50HPyfXoeecH4iT8FkeiFwHmR6DznOTu8hPMU/XfOmp8wTAOr1crCfJp9u7dyxXU3MnvKhd3ppFDtYOjxxygG/AztHufi6xfT39OJG4FCWaeeOMI17/hrfvzDH3D0yC5coQ6+eecWbnrzTQwsWYa9Ns+De/YQj6xmUVTBGeuh0dC4885vEm9rJhoMUW/UKAkVPEqEbNrgrl/dzcv6u6kvj5OoVEESsCkC/St87Nw1zJ7DQ7zmNR+izVFBEA2+97n386U7D3FiVxoBlbaWARTCjJ/OY7e18MSOKo8+tJkrr1vLoq4WDo9PYBoW3vXm1/GRT3wZ0zDYdNUK9h/az+tf+xr27TyArVRi4+IuihYrY1PzxOMdlAsVxsdPozZq1FSBmqqxb/8BXnXd1bQ1B7lsdS8//umveHjHfawdGOAb37oHwVQxDB2jbmBoDXYfPcTGZUtZuWoF993zMBdesga/R+axh/dhKzf4wC1/wec/9p9s3nIXv3jkXqyihF2xsW7ltTz8yFY6O9pxWef59jd/wdoN7cjFJfzsjm9zxbXr+ewtd6DYaiSm5lm6qotsJoEzYkFfMElIBURXL+9+z6dQDZkPvudKPnjzJ3j7u19NI1djy/TdPL7tl/TEO3EGAqxcvZa6qtHX3cLpiV14O5w0RStMjJmMPTbHq17zbmRF4oZX/zXHJhJs+dyXWLmmn2h7MxbJwszsFILkJFXTSJ48CS4dX1IibIuhihqCJrEovJERxx7qJQN72IXitmHqFrwxG6W5LJLNgSPiYOmSTh567C62GCZejweH20NOzJGrlFjU2sLSjX0kjQW0moG1ZmCRbQzVhpEQ8Y0NYeot2ICiWEIwfawcWIFDcXPtphUMjwyh6iqaJpDPlnC4vYiCQsuiNjTTpFKQiEckHBY/TeFWtm/ewcnMNJIpcdvQHeTKBvdUHqa7vYmezi7e8Za3YHM4CPhs7N95kHRN5/9j77yj5CivvP1Ud3V1znly0mhmNKOchUQ2YIMJxmFhndbYZtcGY5ywAWOOzbLgABjjiAMOJBsTLSSRhCRQQIFRnJxjd0/n3F1V3x8y+3m9JhlJYO885/Q5M11vvfetDlV1f32D12VC0EtkxTyNFU66SyXy+SxTySy9ozswm83UeIPkVYFEeIxEKsXKZatJJ5NkS1l8RiMXnnIyPq8Xs9lEPJnghpa5/Oe9D1EoZiiJJpwmIxqDC4NOZGxoHJPZxBkLlhBKJRmdHGJsaIrRgSIf/9i/8ORvfoLLrEEWtGizOpZWBYmlcuRLJY4MRrEbSvQODVLj95HIZgn6ayhm05SLKg6HhUI+hVLIMqUoGCUjTqMJUdQyGo5gt7r53aNPYzLaUCmRSqYJOuzUmf2E5RIGs5m8qFCcyZNKFMjMlIhPpzlj3kJ2905iTRpxW90c7O7BUGugcqEXJSWTm0iSSeVZNq+RQjmDTe+id3SKU5fM4dnOXnKJLJKowW7KsWJOHfsGplk0t4EUBuyOEp5gBaGxfvKFJDZfkD17d3D2uZfgr6pnZHIvOVXm0P6nWDj/PX3ByUoAACAASURBVEwUBfqHDrD+vjt4dnMfsvTqvtcxKcKjqupmVVXP/fPfA6qqLldVtUlV1ferqlr48/P5P//f9OftA8fC9qvhPPsWKOWZue/jrz/21K+DIBDefvwcM0EQQCty6iXfPGZzqqrKmv98lk9e/SEqnYZjNu8bpf4zD8FEN1VnvOeEOLWT8TyHHnoIPDXHXiSCo23PXJWvP26Wt8wrNYhyRRlB4L8jiGYBfPWgyP903c/ekdeJ4yASHQsH7lg7gW+3aDIrEs0yy7Hnn1EsOl7XCZNBz5lnvBuHp4KByQiCRkNT+3wmpxKU1QJ+k4YGz1x+c8/3KShG+sdHmYynSaTivP8DHyKdyXDw4Ms0zFtFS1sHH7n0wyjAo+t/w2MvbkHSqHT3bMVWMZdySSER6qXCY8VslzDo9ARcjbQ31BMtxqluk1nT6mZvKEwyU2JuoJYbv3E9X/vqDUzNDLPjpcPobSKP/+kOdHotBkni55uGMQVToNGh0RoQNFpa2pp56Ne/4PJ//wjXfv1LXP7Fm9ny9MvoDdDW6GZkKk4+L3DLN7/EorUXIGqh66URvv2DH6CJJhAEDZ+44nJcQYVwZIKknGMqOoKklVFRSaazCCq01zdjFPWcuXoRO57dz0hhisGeKPsO7MdYLOITjNj1JnRaqK+voSwonPKuZZTJ89kvXovHayYtiKxZu4SOua3kohke/P193PGTb6PRKljMFs478zISiSTnnXs6U1MJDneXqavx0zfk4tx3n8MjTzzDoX09rF7tJRKLIRk1/Pye9dg9ZkRVwuWy8PD9TzMWPUJf3w7aGtu59w9bWbP2QroO9KMxasn0KKSiOSqq3CxbvIhcsYjFYuGBZ35HPBFhaHSEmXiceS0+5jR1YLYYcTltLGyrQVGimPR2+vb1ExoOs7+/C4Ei516wBpsoYPMY0ZQN4HETEZKsWrsGn9tJODzG2PZpHvzho9xz+0NotBbMfgP5YhmLw0M+msVea2FwOo9RMuD0GvEGmmiob8HktVG9qBKdu8B4eBIlKyDqdCgqJENJymqJsqqQjkcYGB+hUCrQGmgglEnjdvlwuq1MToUwGixoVC2iqmCQTIglmVqvH5/DQ9DtpdplZ3QowZ6du/nu9+5h18tdxGeSVPtd1FdWcuk5Z/Hdb36FL171Gc46/RR8DicWvZ6evnGsDid6jcqKxUtoqGxAVrQkS2X0dhfFskJeSKEUS1Q67KhaLaWSglFR0IpaDhzppOwBncNAUavgsNvY8uIubv/D73nwxReQFZUvX/geSmXI5POoCOSzWVwWKw5DkHNXriEajxOOhBjrz6OVauk+spMvXX0Ve4dGKRqLZMQkJocBVTRT09iEye6gKGcYmJhCJ0lItgr0ejvZdJKZVBFBkJFLMumCBlHQY1ZLaA0mFAoIOpGO2gZMeisWi5tUOoMsi1jMHmStkc7hEQr5PAvqqqnxm/jODd+nYk4NqgKqolBSNcxttJPNlugfHMLX4sFZtlCt1THeGcZo0qORtOi1MqqqIVHKM6fayh+f202j38bCRi9qqYSiNbBh18s0+GysXraIaGSKWDJJpb3AmqWtNM+fT75cxuexQVmlVCyjyZvRFBQmc8PUNVbi93q55+dP8JUbrmdf/0MUCsqrnjvf3h7qx4kfvjAA0TFiu+583bHOVVdDufiG6uqoqkqxrDAQylDpMmIzvrnok55Nt9B8+hdQFPWYRP8MhDJ079jP9mtPO/FFq/98gxLZeecJcfCdp1wHmThdT38Hv/3Yi2KvOOXbf/apYz73LP8fVVWRFZWSrGLQaf5Pppe9HtEnrsa1/ArO/+lOHvv0yrd7Of+0HM9Iondi/ZC3Yz1vR2ezE2HrnfbezjLLLK+NIGhYvW4Vj27ahcPp57f33McnP/kxLFaFHbt6cVZ5qLd6ueexLZgtIucuXsXW3ftYN+8kykhsXn8/2UyW9GQ/Ho8XyWShe+gpmlqrULIZ9nT2cv0Xvk0ul2fr0+tZsuY0apoXUusu8LO7H0Kn9nH5lRdw2hntDPW/RGXjYlrmupkIzZBIZqmsKaM1DvHExr3YfGayyTx6k8AXb76bTy1ux1NvZ0XbKRzoHcSkKWM1SShouPqGG8mmY9z6nzdzwXtOZmH73dzwjc8zp6aGVe/rQJIkBGD1RIGBviRmwxiFQoF9pQgdeh/fuOk6fBVVnHraOqanZxga76Mg5jB7DYgaAWNJSziVxmZzMhWZBF8aXUQgGouS70yTKZRxuzyEkwnmNzYTSWaoddh4YsNWOpa10t29hbbGOp58djs7X+zk81d/lMn9UZ584nd8/F+upbPrJeor59A/MEhVtZUdex5jcmIIm20eibybT37iQxhNBnKJES6+7Dq2P/ljSsUcnSPT2IISekXPu9pbeLnnCCMzCXQmhTWnnEwi24dO0rFi9VL6+wrEQhF0kkCwIYBWqiKWlTlz7XzWP/0k2TE9Y7kII4OT1AYqSI+JnL7udE4+qQXJYOKBR3+F3inidlk51DlJwBcgnk9weNcUz96/HVGSOO3idcTSEySUHCcvWUZseD86RGZSvUcTFTQgyho++t7LWLx4AV/+6mVoVah3+NGqGqYmh5EBl8uHsyLIZZ/4Ny7/4ocpZHLY2qqoMFkI5Yq49BasXgtFe4FsKoMsqmSK4DA70UoGLDY/bQYngqjDYbAwEQlDqYRO1bBrbxd9vf1E4ikWti9gZHiImcQkyVwWr9WJ3aLnonefwpIFDehFDXsOdjMZiiGay/QePkykAE6zCZ2qMpPP4LHZ0OsEbDYbDqsJu81E0GenRz5CoZBmOJdmrr+WiGzAajJgNGoxee1MRRNUV9UzNj2B2W1E1AsUs2bi4RlGc0nm+AP0hqb54aOPc9nZZ9NY6aF/IopRMuDS2lAyZRbPq+GP6zdz3lnnsLs7QrkwRW/fYTyBAIJWg0OWEcwSiipR469mZHSUgaEuDHoLiWwWr82GVmshm44gKwJuu5sKV4GpeI7J5DQVVi8HR6cI+txMTozhrA9i04hoRIHseBSMZubW1DMeSWCx6ImEw6gFmfHxaTLNUbojIcK5Ija9Ea2kRSnLODwOduwfwOlykbcUqTH4GE0OMhhVMBp16LICzZVeeiZmKOQLZItl9BoFk9FIKqfQXGVkzeIantk7QlN1DYLRxv3rn2VdRx3hElhcHrZt38uC5jrqq32IZQ02EQqFAiefcS6PPfJHotMKYxMTGPUGauvq8QZsOA1GxNcIG3pHC0VF+dUVrlejdyrNtVd9j5mdry8SXfdkF5SLfPsHX3hDIlG+pNB61cNoRS0bv3YmZr34pkSSV+okuc/5L2Ib31pnI1VVWfqJn7HynBUn1NFWFPVomh4npmg1gPOsmyETx7PmzOMiEv0lzQHLcZ3//zKyopIplDFJWgw6zaxA9Cq88rps/dWDMCsUHVfejMP/Rse+1bSQY51W8nZFHbxdItEss/xf4P9Q+tkxQaMVeezRXyNZdIiKgcs+cSn5fIFnn9nGBee/myee20frHA2CYCSa0tA3NMxJrUupb1nMD350E7lwmqDTRiqW5OC+TaSUEn6/FbPeRDipcs3nb6RYLGIyCrR3OAiNbUdnbmUiJVIx9yT0uhRDU5N4nRnyco66wBz6hscwSBKOCjNWq5l0zgA5gT3dR1DTGkrFLEWlyE/37kfTacJv8FBptbBj1xEkZ4bWxpUs6Gjhxc6HOdLfg9Pup9rrwVHrxFFp4vbfPEC2NMaihlOoqqsnNGmmoqIeg1fFmFYYLMZwVXkQKJDNK/T29GJwi4hpM9aiAUlrIk+SCz/wcboHDtDbf4C+4VEcJicNDX7CvXHqGjzoLFpinVlm4jrMRguTmSRN7ZXY3SYscT2/+N1LXPrRT5FOPswLu3YTqKoiGy3id5qYUzsPuVymOmDj2c0HCY1NUshmaG9Ls2FDD36vk1h8Gq2njU3ZLvLhDFoMmKQcJpObSruXUL6Au2IuzXPLRAcGaJ5Xj15txmKz4jLOIFQvIDw9yMREF6mMDoeSp6Otkbvv/xkL2ucRfvp5SuUGrvvaXVz+iYv49FdvYuJID/c9+BKT4WmWr1pItpjDqEhk00U0/jylksr551zIkgYNqizzwx3bWWypoZsweruTrv4cpvw07e3zOCQOcst3fsjQwGFOXd7Bt75+D5UuP7F4CpNewuHyMk4IwjKdu7vxVI/x9TsO4KlxkEua0ZRFslkVnU5k364eOpY2kYnFGB2MUTXPRzKVoJAvU2G1IhQV9FoRm9UEWg1DR0ZQNRomhyeQtBYkrZW6oJddu1+ksbaZSy76CM6gm80vbKatrhqTxUapANF4jlQmRzSawOV2IpdU9Pk8qUyKUkGhwuegLKtoJD1SqUw2W8TqMJCIZhCtOpSxAiajEaNJT2h0Gp3JSHpkmrpggFxRhmQMncZAvGuU2qCFnv5uLn/+RS75wMlMhCMEHU6yhRJFWWY6ksVvdFHh9GDU6xkeDhGLRbj4oo+y6YF7eXH3Lvw+N2a7EYMs0DGnhkDDfF7avA2PXUYuZCgXM8iKyqJF7YRCCZKZLG6zholYHr1YJhmboigZcZv0pDIS4UyK1upGIqkYfpMBo0ZFa3VSLAuUNCGCEqRLJZwuM0klRUJNIms0BDwWJrRFKl31BBxWGhvWUNCI9OzpJDQ8TMucAEcO5THq8uwN70OQdRSmCjTPaSYyEyZalvG4PaRSCdRMEZfDD7EYFp2eQ30hTBYjy+dUo4gihXwRjSpwaDROsSwxc/gQq9fMJ55J4XIZKZdhMjGOxe+nKAvYAg0wuoen/vQIe7dvZsHieorJGEd6exBfo4zyO1ooOtQz9qaibwolmeXnXcOhTd9+3X0ar3yY6PZn6H32u3isr13oGo46b9dt6CbR3wvpKMs+OczEQ1e8eYfX6obYxOsOU5T/n3YiCP+7kLDr4p9APs0T/77qjdt+ixwYSbDufdcCJ+bGX1VVXMuPilLHO3Lp4GgS4J+6/frbhayolMoKkqjBahBnBaI3gmSEYu7tXsU/BPuOjLzpfd6Mg/X3Rge91aiiYxmVdKIjYGZTzWaZ5cTwToxefCeSL5SwWBqo9O5heGYSAYhE+hmPxPjVA4/y6U99hnB6BgkDHnsrklakP6xy78M3ICt5XJVO5GyCsYMTpCdVzjh/OSgaRJ2Ws04+FxQJs1lhqG8Hw5PTWEQdFY4o19/6K774pWtJT+/lgd88zgf+9RzCcXjqxT3UBP2EoknyhSINtX6qg8sYHRnFY3ChBjUYrCrNc2rYtGULWhQeeWojY91xJJ0OrU6k8bJFFPI5DAYn133lCkzVJrSiSNDhwWS2ISpBtPkyqqSSzZeZ29yEPxBgb99ehjNx2ltaGB8M09F2Or1dXSSTYVrdHhS7REFWqPP5EA0qd/3ouwTqTVjKBq7/1GX87pktjI3HMVbp0VgMuAQTQxMvIul0tNevJJyfZKYQxy+7kc0+br/tVrQage/c8jlWr1uIy2Jm0XkfoXdkAo0gMpPvZs/WMeoqKohGPcxp9/HgI5swmkz86L6bKKQcNJz6KUw77iKaTmO1mSnNyAwOjrP44gYMWj12s4FHN72ExgFmv4OZ2NOM901hc+i54D2XoJVa2b2nB7vVyRlnr+H3f7wXk8mCLOcxWXVc/eVrkOUyv/zteu76zTXcdeOvuebqq5i/+GJ2PfsgtoCN+OgU//Hhc7h1/XpqPG5y8TEkfRO79h7BbwiwPz9BR/U8fOYgaVngmRdeZPWZF1EqvcDGx3/LgvZWDvb0oyo6Ag4HQyNTNLUu5UDnDuwBC+FYEhVIx0rUajVgteF265AnShQ1JQwyFONF+vf0USiXUXJlpKzM5PA4ezJ65n2olSeffoHOQ0fwOzwEvB6GJmfw2s2g6qit83Duu5cTmpgknxvnvLNPYrKQRIxKNFc08vimZxCUMqedfhrJeJqA20E2UyIRj7Bo8UoikShT4RnKxQzFQpGRiTj1FQ4y6RR6t4TF7MZjy1IqujFay0iGKJF4hmZfkGK5gM9uYWvnfpY2t5PNpplRZzAHDMQtGmb6J1AFkXQ0gdluxWswklBkHnryOartVrSSiUK+iMNUxXsvOI17fnAH373lRiKxJC67DZvVQ1JN4fBaGY8UyBT7qalwokElny8yr7GOsckohegkKhJWu42x8T6sBjOyqqGoCOgliZFYGo/bh8WgEI9F0GhApzehN7nwOyxMp/PobQb6pkI0VjeQzWQQ0TJnTj29nb1Ekxkqp7Ps6j5E58FPcemHP82n3/sRcmdleHrTZpbWm5nTUs9EeByxX09JBn+dHzWdo6XGTW84Si6bJu8CQ1lHQZaxWjwYrUY2j3ehm9bSWuGhXBTJFIrYrHYymTwdLTUEvM2k7Q2kI3E2rN+A2xOkaY7Eap+DRDLFZNeLBHw67NY8alWRyUSMyb4oS09pwTn56oE5x6RG0fHEveoqgNet16GqKoGTrub671xFhdP4mmMVRSW6/RkQpTckEr3CTWfP5YwPngFaESIjvOu2rcjKm6sjEtp0AwDPdYf+17ayrOA89zacq67GvfJK3CuuwL3iClwrrsS56mqcF/6IQknmjq39EJsktOHaE1bX5cqHDx4VidzVJ04kWvV5EARmTkB627rL7prteHaMUZSjdYgADJIWzWya2Rsm9PwtwOuf92Y5ypsVfuDNpZy9WV6Z+63u/1o4l332bz7+esyJ5p9ZJJqN4Jhlln9MFFXh4OFe6mo7+PgHPsvG9Q+TTvTg8gSoqG7ld/f/AdIKWt0w9VUeLDY3z254EL3ezFlnXYjVYyJQXcPS85dz8kUns/m5g+jRYhI9aEUDSqlIIXQQv9OGTpYwxgUefHgTTreJJ//0AH0jvcTyOfw2Lz6nhA4BQaNBJ4oY9DqisTTJdJJ0MoNOMtPecTomqYJHH9zMpy/9Vz79kQ+SSBaxBY2UVZlSocijDz/AL37+G85afS71TdUIigZRK1BQFEIzIl6fi7n1q9AIdhLJLKGsSFF00NZ8CquWn8+c4GJOWnYeRr1Iy5xaHCaRnF6LWwvFRIKu6TC7eoaprrDTd2Qcxajnzl8/SE/nISpcVv7w+80YJS3bt2wHrY459XXs3LOVD//Lh6mxVhMKT/JSz1bGx0Lcet2VOI0S5ZxCdWARAyNjiBqBqfgBojNx/E4XnZ0DbN+ykRpHBe89/UyWL2tj4x8386ffP4B/YgPj6SHKGoXpRAzZrCLoBGbGwvz+4efoaOvgui9cxnh3mNDEFIlIErvDhsFgJ54soxRKLFm0iFPWLeH+R37HTChNScrTPznOt771M/SSiMdl59pvXEt1TS1f/vaVDEUGGH/5MTweGzoFUqkE//X4I4iCQHi6xElLqsnnC+zozhIbA32sitCYBsVop5AvYDY5ePjh2+ge2Iqz3sBkaAqdHKVYiNM91o3ebKKlqZqJSIrRwWkUVcHoM6I1CnTvDaPVaCgWS3QP9zPWP0EpacbTVoGc0+AzejELOpITJbzmCqLTae760S85eGiQcr6M227EIspcev4aTl7RzsJWPzt2bKdUUpAFiGc1WB0mKkxWQqEQKDJaUUtl0Ec8EiISmyKaSJDPpZmanubZpzeQTKXwudxUVNbg8jhZsagVvdlCfW0th3q6mEnGeGZ3J+OhCM1BPUajFTQSkWyJkfAMfp8Pk1/PTGqSfCmFsWRG7zbgLQVRVGhoCDAwmOB3Dz7HgX3dbHuuk1w2xs5dh3niib10LDydLdue54+//QEj4XEkgxWj3UI8l8ZhlZjjrcWsOEAp4LUbqa2rpa65nraFc8AgEs3nmYklcBpUQuN9mO0uRK2GbD6H2aQjlkxiliQkiggFFVGygEYiI5fZvm8PPqcLTaHIgmAjdreTXCZNOpfCYjLTe2iMTLFMqQyRXAmDWY/L5ualHc/x4s5O7v39Ezz93HNMxzIYTRLVFh8Wh4XVzR2YEyJWnY7eTIrwTBydy4I0o6FQLDMdnWFBo5fekSnaLNWsbOnAYLBRF7DitBhwGPTMqXITT4bxuk0UC3mKmSIjw/2sXRyk0q5hfHyCYqmE2eFnbHIEh93NpSdfRGIaAvVtSGkdoalX/8FVeCc7IouXLFWPKCtBlIht/95rjnUuvwKCzcQeveI1x2XyZarWXgUGC7Gt//Wm11SWFbomUqy99L+gXGTo6f/CbnpztYqcp90AmTiR7bcjAHOueoTojmePFlN+pfNWzTx+fM2ZLAo4+W3nBHfe/GvIHY16QZQQauYxc9/HT4jj/Uodp2ce/CaL653H3d5fRhKdMGdj+RVgtBF7/qYTYu+fGVVV//ujPCsM/f04l30W6+J1jPzkA686xqgT9qiquvQELusdx5IlS9XDytEUvTdaaPpEdTh7K7/2/y37f0uoeLXtr6SmnGjB5q/XdCJs/rPam2WW1+ONfMdnrxNgMpnVCz74UWaiUd539mo27X2YgbFR2pwr6BqZIZtNc9ONX2THtj9R27CcB+69h3hsEqvJzt6D3SxYshqtocz5Z7TTOdRHNlvAZWllyYIljI2Ncv/vfsJ5Zy8hkShTLTnompxmdHIKW0nFUudi26GDXP6BixmcmKSytop4JEfHotXIMkxHZtBqRDwuK49v+CNo4JRTL0SRHORLcW6//qucf85pPNO1g2IyD7IMChQzJVRZ4qqrvkJRSHCw6zD1wbloNDp0Ool8oYCiyJRLMbRagUhsks1P7eXiD1yCRitiNkpYLRYkSc9QXx/Pb3uChR1zmJwIccl7zmAiFOeRjc9zyqlnsHv/HuxGLal0kbqqIDoJoijYkwJjY0OYJImc0caCjjl0dg/Rc+Agy9ZWI5eXsn//CzTXePH43FTWt5PN5lncPoed+55gOpHB63CQjFlYsWotLqeDJ/54Gw6bk+qgjx/d9wDpaI62JXPQ2o0kCkmSoynSkQylvIxYELjxa5fjdDjQSTpu++ljtM6tIF2OUxkIYjF6yZVMSHqJuuoAFcEqbvr2dTTW1FHb5CUWjbBt/0HuuunXPP38y8iMsWX/Jupcfgx6I2pYofPQfkw6aGlyE7VZCYXCKAgksglKZRWbzkAuLGIQXTidLlatXsY9v7qbYiZKNJFELaqY7SLFgsqZZyxl69Z9YAA5C9+77ackczJP7LiP7q7D6CQRr7+KCmOZkWScKpeNI11hjOkSSkGD3uEkm8ziNhmIpRIIko7KigYsViNLO+pxuWzEi0WSyTjVHjt7dx6hdyLK8rl+hidzLGhvYHR8gme272HpohbmNgbQaE2EQxHKSpH9PT201NYhC1DMlUlnIog6PXaLh4qAj475i5meHscgGYjHokzFYiTTSWZSBUxmM9OpKGJZg1nSEx6eZnh6AkkrkS3mCLhtGFUteoudcj5NDpgMhfF6AxhMRoqZKeKxDJPxNG0NFRweGMcfCOKvnEuVLc/Y+AzdQwNoRR12q4tqvw/RYWOk1I87JFAdqGIsHMflC6DTCMxf1IiAisFgRFBLfO+uB3DbzKTTCZxOFwaTA4p5NBqVbL6EzWjEYXdh0MiMTIXx+gPMJGNkciXCqTCtfj/JXAaz0Uw0V0JCS75cYG57B6OJPvr6xqBcIuiuRW8WWThvPsmkwDnnXkRTXRU//eXdVLtSaA1GskWFnv4BivE8U5MRTB4bk+kxxLhMpddLqSRQKJZoCnrJyjJmvQlFKWOx6BgYS1PtsTEwPoVSyFBdGcBvN7KwYy47wzbcbic/vfM2BF2Rz3z8QyiKFm/VPF56eR/axAglrYF/v/oahgZDJBJxnnxyPft2bGFicuJvOmzvaKFoyZKl6rPbdhJY/bnXbL/uPOnLAES33vK6jqlz+RWgqm/pRk9VVaKZEk1nXgM6PbEtN7+p/UtlBd+azx+NTCoXjwpEGi3LLn0/G69Y86rHoKoqZ//gRXb95v6jT9h8RJ+67rg646/cGO9bfwt1XvNxs/MK4WSB5tO/AIJAdOf3T5jQ4Fz2WV5+8lZqPaYTYu+fFVVVZ8WhY4Rz1dWgyK/ZUXDWATh6nXhh5+7XdeJPtEh0LOZ5xQn8a4HozXRe+2cqIv1/0eYss7wWb+QzOXudALvdoja3zGf12mUIqpnhIy/ir3ayO3SEs6pXEZIDVHmNtM+fz5NPbuTA3q3o9UaSsoNDnZtZddJ88lkHtQ12qqqMJPN5lnWci6qoPLXhPmaiE3QsqUOjikx2pZB0EjajibsfexSLV8c1l32CioCf7/9yPQde7qRxTjs6Sc9FF57Jpmd2cuopJ1Eul9lx8E+IWoGyxsrnPnUdoxMRspk8Tz50B2tPWsieg51EUnEqsbO15xDljI7PXP5FUpksok5EUKFQKpHPJkiVhtAqZSr8Xu687UF0Bh35bJ6LL1zB3v1ZmltaCQQCaEUto4MDBFwGPL4AXQPTXPHBlew/0kc6Gef2Xz1BfWsAi0WHHoFzTj6ZQknlV/f+Hklrom1eNXqvFUknEhqcZMP63Xz0Y2cjZjXs3N+PqtFz5nnnEY+nKcsyWiWF3ZJnJDTJmiWr2PLyLk476ePodDqGBnYh58IUs2meeu4lMmoOs1lHLirw6X/7BC9PHWR4aohCWmHfpk7QqNRXVHDjtf/B1266kzVrz8ZsseFzlGmau5S9B3romNeM0Vjkkcf/xJymGhrrV7Fl8+850teLRtSwv7MHnSRSv6QGj8tDwONnfGqatW1zefbFfZyyZjEbdx4CS4nUUAKX34+tCLZaI9PRGJJkokpjAauGyViaOt8KHrn/bnL5DPmyjChpcLkMrFsxn9HBaXZ39rNq4QLGkhOMDsT46jdv4+lH/0C5UGQ0NIjTIjKRjeMO2kgOz9C4oJnyeBGv200kmiSWTuM0SRTzJVRVZuWKJUxGw3gcNmrqa5k7twm5WGImGqb30CBluUg2WyAY8CGgkk5l2bq3iyWLdiytHgAAIABJREFU5lJT6QdZQGvVkoxE6OofQatR6JjXRr6g4HFIZLMKVrsLo8GAxWojm8kwNROCcoGZWIaCojAdT6KVdUxPR5AMIrlsAa0sEE7EWdnSyuDkKFaTSCwcpSTLiKJEWS4wOhMh6HaRrJBJjaSQS2WERJFMUYvD5aOUCVEslfE6jRRVEZvRRtDrQjTpKRdBUNKEJsMIWjNOm4mpWAK73UFF0MOChXNJFHLIZRmH1cRLu3qJjo3gcRoYjxSIpTMs72hndGICUdIhF8t4XB6QZXKFDCoKlR4fg+MTlPR6TLJAWRDQiVqcFomewRF8Hh8tc+uZGh5mJDZDOhUjr6o0tc9h2/P7eOKx5+npHyaZTPKtb3yJD168ll//Zj2XfPjd9PUMUsiUMQh6SsjENUkmRsLUetzkC1p8ThNKWWRBc4B4ukDPyCSttdWMTYUQJIkat4V4Kk3AYaZnJES130vVyvcgywojY5M8fO8vWLq0A5/bxNy2daDV4na7KBWzDI2M86+XXEqpVCYUifL5z3ySiYnxv+m8veNTz/Q6LcNbbgNFxrnyqv+13bnic6DVEdt26+uLRKuuBlUl+ga6ob0WgiDgtkh0b7wZijmcF9z1pvb/zd4RUGQoFcBVRXjH94ntvINNV570mscgCAIbr1hDdOf32fXYzZCYxrXiyv9Rz+hYkSvKR29A/pz6dbxFIlVVcS6/4qhIVNlKbNedJ0xweEUsrXa9dsriLK/PrEh07Di0/iZQ5Nn0szfIa6V7vR0i0eut6Y3yl+t55fFG7B4L2292fSeCv0yxezsEm1mRaJZZ/vEQBLBbS4jlMjqjStvKM4mlyrRUNnEwNcTW/ffRsWABnQf2sXfPNqxeJ3Xzz+Tk087kmq/djM8a5L3vqWdyZJBY2sSaRechaLQc6NnKS927WbFsEXW+OTgsLvQmC5te3M6j2w5T2WjjvHVrOdg1wsB4icaGJt570UX0HN7HklYP2egw6eQIRoOOqekwZy6/GKPJQiwd5ms3fRKX3cBP7vgyok1Dqajgcbqpc1WQNUuY3Q7e/4F/oW+wn6GhYZ5/djPdvYNsfXYzgjzB4P4hHnlwMwd6+lh+/llUt1ZjsujZ8sIoAz2H8FunyEcP07n5cba9sJnu0RhFjOjEMr94fAuVHg+LOhZTXRXAoOhJjeaZ3zaPHXtf5qFHN/LJj32Qurle6trqGeye4pHfbubda9dw+ccvRINE19g4Gq2A1+UgGk2SLxQoJobo3L+bZDLF4JEhBkZ6cdnsdO7/I9PDT1PhgLamKn58z+MMjUwyPRynlCgzPh7hmuu/RbvHw8GnDkOohL/NhkbUMBYNccuPfobdaaGray96vQEMlezZ380v7v4B11z7Rfq69xIPxZmITnDPb3/C0nUforcnzlQsypzVPhbNX4BBlSiXi4wODuAymwA9Xms1nQdHMFvKBI0m2tprOWv1YmpbA3R4Ayxrmke1sQmn38P9v9pAuZxnbnMb6WIaR7MNi0fC4NBz8tKlxGY0jClpTH4zqmRhQf0COs5cyd71P8fnLFPMzeD3eXA1+LFXO0HREZgbRBcT0UsmErE8SiFPVbCGUr5I0OPGbvdyaHiKyVCBI2MlOvcPkclkiCaSmB0O+sZi7D7Qy5GBEKGZKKlsgXy5iMlgwha0kNVCVsljFQ2MTsaYnI5x7nvOYsG8+bjsVuoa5lFf30Rl0IfD5WI6PIXdbUcUDQzNZBmaDDM0Ok02kSWWiqK36HH5HJg9ehYvn0vA4eTl0X6cNgsvHTqMLMhEM1nsVge+ijoaq32YjFpQZWx1ZgozZVSnhMmjQzJnUI0aTJVWUiYNRrOdNUvm09zciM1kZ2lTNaLGSFk0ozcZKWt0zGltZ/GiRVQ3VJAq5slm80CJaDJBR7ObKqeP0eksZqubhmAVB/p78NitxJNJJL1EMl0EuchkJInX7edA/wCiToe+LKCVDOh0EA5NUyyXMRrsNDVU89LLhxkKR0hncxQFA6WizM5tnTjsdrY+/zwdbQ0srA/yy7vvwVd3Kpd/8XoevHc96XASjaAgaqGg6tCVzXhNdlx2J02VPjTocDisjEUSGE126nxuYqkyi+bXUCoVKKkKuZLMgbEIJrMOFYH+/ZvQCiW0Wi3nXPwhZuJTZAsZxkcGSOeLJCJj7N6/gYzag6QTeWrrFj73H59ALudf9dz5jheKAGxG3VGxSC4fbZP+Z5yrrgYguvlbrzuH86yboVwksvPYCRA+m57wC9+DyR6cK696TYdOUVQ2Hp7CufIqvvCZ74BOT99z3yO24SuI2jf3NgiCwJyAhdGttwPgXnEFNZ9+8C0dy1+yrTdCxZrPgSAQ23X8O5tNxHL/nWo2+eIdxB75zHG199e88rbNFrKe5Z1E0HG0w99dLw6+zSv5x+FviSN/j6hwLMWAv0ew+Wsx5O9dz1/aPh6C0duV+nUibc4yyzuZ2e/BG0NRNTjsToanJkgnM1iNJSqqFzBxeBqz2cEX/u0bxBPT/OnxJygpJSx2I1abBVURKGX6GVFGGBhLYTaZWbtsHZlcgYnxTsKhISYGcixoacHpMPG979/H1t1bSaYyKKUx5KhAfWUdtS2n8eOf/47mxnr8HjePPvwL6hoqeOKpbTTVBhkb2kk4HEVRVVa0ns2KtvnUVdfx2L3347S5sBol/vTcNiLhMiPjKZa3n8ZFp34Ml81HbDpMeHKIYnmcAt24rQq//s1GvnLDHSxecT6R6RiZcDcTXUPk00Xu+MGvuObrt/CH9Yfo7R2ks28Eu82OXJLJ5vI0NbWgGjP85Jn1bNz2MjPxCNXNPoJ1FVj0ZlrcFXT1j5BJZ2msaiAxo3DqSYu4+dpPEvR5iSQiJFNp0BhpaltMoKEFFZV4NEYoNIrL6eDJZ3dzy3fv48c/fphIJIxRlNi7r49b7niQz3zpVmRZoaRocDsdKKqKQhmNAOufOcy7z7uY1WvehWi0UNEaINgRoLa+GkFQWLx0GSPjE9x15/co5mcwubSkZpKkk1nOPHs5PQM9fPaLN1JZHeT3jz7Mu9aciVm1Ek8o6I06QocnCPUmGJsaZ0/PAXK6KdLCNEvm1tHe2ITHYWU6PInL4mIs5uWO7/6Wnt4J9gwMEGyvYmntCpYvWkBgvgtF1qA1SJidRsbzIWRDCpPfwNyOKjwBNzpXiSVBO2KFFavThjfoRW82YNKLOE0WRLPE+QvWUUSH226jzuuivrIBQTTh9lWi1ZkxOhwE3HacFXp02iR6q5ZwLE51wE04HMPnMnPK6lUsXdCEzWRkOpmiq2eIjnnNNNbU4TBZcZntbNm1k+hMgabqGkbGUphtDioqalFVhWJZJlMqcbC3i9HpKfYf6OH5F/dBIQeKgqxRUUUFnSiiahQKRZmyojKciFDWCkRDk0xOjFHb7EKr1RF0OknlUsiFHKMkyPp15LsKpPamKJfLOOpduESRgkaD1WnBa3JSYfOzan4HRoMVt81DYyBAOp1DK+oxGfRoBIFSqYROLuOtdmB12pAVFaPLzOj0DFs3d3LvgxspUsRqtqMVSlgsNnQC5PNl3GYLgiqACB6vi4ULlyKgoyTLVHh9SAYFm0kkEktTW1WJyWjD7nLRe6SbRDJCMpWiVFSIx+NMTSfxuZ2cffZy9r+0jZ/ddj1PP/Mgrgo/Qb+PXLZARbAWWTKRL6nEs3mMcpZ0IoXRYCKUiGG1WSnJMjabRKYA3X3DpPJ5nGaRppoKrBY3E5E8NUEPLosVo15Cp9FgLcL0xB5MQg6XGqJc0DI5kaK/v4+aCj9nn/UucuU8sXgCVVVob27jU1dcidFke9Vz5z+EUARHxaI5510AmTjOs25m/aFJECWiO25/XeHnC48dhug4g5u/d8yLIotaDdEdt4PejGv5FThP+jJ3buvnue4Q/dNpGq98+Ghx6hVX8KGP3QQW99EIohe/i9sivSXbFoNIbNedtF98Mam9W3Auv4KJ2FvrlORc8TnOu+QbfO5bVxB7i5FXb8jeydcy711fAn8jsV13YtC9Ro++48RU4qiSOhu5Mcs7iVfOa9df9dr12Wb5n/ytmj1v1Jk6XtE3b0Sw+euC1G9FIPpr28dDMDrRRaSP9esyyyz/TMwWWn9tZKUMkoGZ0ijR8DTbtndRlkuse9e/8N61lzA9NcYDv/slZksRi01gdGKYsfizRMa2sHtyF62NDeg0Ku9/36UUiiUkUcMLm56jKMiY7DL/edsvufxzt2DywuR0ClmVCfgqKCkKz23ZRk3QQbko0D/zHPU1eu697w/c//jTtLXU4dYZ6T00jkWYIJ+b4oXtL9FUsZS17WdTWenlfRdczLz6tbz3tItZsmgdp51yPqqgQ9JriYUOYdOXsJpFKuvcVPi8LF63it8//CQ+l4Prv3YlQ73jyOkcgh70RolF7fW8771nc/vtd9M9NEVtwI7ZIJCMTVBR6SaZzmIW5zK3chlHhrvx1rowmQ1U+OwcHunjkV3DWMw+br7tV3jcZsxWDWVkwhkjt95zPy/sP8C8lnpqGzvQGS1oRA1q4hBdh18mkbNicTbwy58/hE4UWLP6ZNZ2zEMpJNmwYSuTE+NYauxUtgew+cw01AdICDKKLCDoVFrnzaMyGKSnfxCvpRGbz0VbXR2RaB6ntZaDh/oQ5CzBeVWUFYXPfvLLeOstPLx9A6OREfRmPQ6zAafNxKED+0hIYbxVPurnupC1Iqlkhlw2Saw7ynQ8Rn3NQqxmI9FkmpcHD2MymxFFDeGkjnPefxH3rn/maF3OmJ0aaweCycPG5x7FOuNAaxIxOa2YvWYMFhOyUYc+Z8SktTGdHWBGzjGaiDMZjRGTEySNGbxVRiwWG9WeIOpokYlwnDPWLKOmZR4DeQV/cy1+t4DZoiUpJpGkLE6fhQX1Taxdugi3zYlZpzIemsFmMuBx2XjpyDAVlT5e7h2mJegllozRvqCe5zbuxGf38NTmToo5LU6rCZsngFHUMDk1zXQ8RCqbQ5VgYGSM4bERdu/uZiIWor25Hr3FiCxoyCVzmCQ9OjTUBl1U17txmi34DQ6+cvn7SKTz2DyVuLQBNFojZUFEq8oocplAwYE5pEEu5olm0lgqLMwcCDGVzeNUJDQVEq5KG0uaWzGbzdQ1BtFLMvFCEm9lkFQyCyUZu16kWCrS2OpH0gkgwMT0NNl4grNWLMSoGmirbyEcjSOJAgGjkUq7EbfVCVoRQRQRJRG1XCQcjtJcaWfVsrnMX7iMoXCMsZkc+WwejaDSPxWmWCgwMHiYdL5EsazF4Q6QzKRIJDOYTDqUUoFWTzV1fgNV1QEMgsBdP7mVU9ctwiuVcdgECpkMdYEAsihR9kiIkoF8Po3fZCOVzlBWyxzsmmB+rROT3YSg0aKVJB5/agfza9wIcom+4Qni6TwOo4s9PcMcHBonFZni8OG9HDkyjMlswmrS01hfhagRGJ2Os8BbyxxbkP7Bbupqgjz73JPks4lXPXeKJ/A8/XdTKisIAuz6+hn84PQGrr/qe1x6+R1Et9z8uiJROFngF9/8IZ/4+mdwmN+aMPNqCIJA7PmbuH1LPzd+6ft8/fO3/c8BGi3N772QHdeddlxSc7Z+5RSUL52Me9VVR0WXYDOxx658U3OoqorrpC+DIrPzsZtpDlqP+Tr/krKs4F15dI1bHrqJjhr7cbX3WnxtfRcwmzY1yzsQqxtSM2/3Kv4h+XtFouMlQrxRseZ42n/F7lstcv12dRqbFYhmmWWWvwetqKGgSbCy/Tz6+sY4cmAzcxorWdxqZM/hAQ7u3snw6BQGg4GSUGRBRx0aVaJmjps6vIxHwpyy5ixSeZHx8WGe2riFtvbVZBPj3PjVf+O+jfuoUGfIJoq4K42UMgqZdIw5NZU47R5uuOEL1NQY6H5pjJdf+DXaogWP24HbYYPRcdJKjp2b99ExGSdYVY9Wq1IqKgQClRQVsDtF8rk8hXIRnU7giceepKk5iM+tMD0zwcsHu7n1us+wpesIzRUmNjy/ha1/+i2BageVVW40OTCYTMhqnpNOX8rmDS+xamkbTR4PoUQKr02kLNn440PrCXj1dCw4iVgkhD8wl8TMQQa7hmhrbWGsV4/b68LjcROZqSEUCwFGnEY/GmMrTTWHyWYUjgypjI8PE4/G6OjwUMiWMYoKSqHE+y64CJfTxqYnnySTHiRXrOP5g11Yq41ER1Joyioao5GlS2vY9qc9+JYGKGVkjG4DQ1OdFHtnMHpsmLIefBYvzRXzOTzTw/DIAFV+J719uxD0GqyWHNGynebWFqqCZn7+gz/yrktWcvV/XsKtX/0tI6EYXb0DaGQtgaCH6oAH16kmOp/tRFUVQp1T/HLz3Vz/jQ9zZHiAuVUV1Pm8JJIl4pKbYknmnh//mvpWHR6dyAvbu6kMnoten2blikUI2hzb+g/jMBiYiaXRakVKmiIZNY8iamhx+TnY30t6NI+2oDDQP4xm2VwKuRiNNjfrli3kXaet5Rvf/TEmg45Vy5ZRLGWY397CngM9aGNZYskCpaEw++MDmC0Gams9GMUG8moeVYXhoTHaKh30dA0SsFpI5LSki1psZgunrlvFka5+5rU0sH3Pbtoa7VS4dehNAgf6j+CQjGzYtA2700S5qCGZS7OsYz7pTJqxwgSRUAqdqKGyqgKDpGN0egwho8Wig4guRe/LoxwZH+BjHzqfXTv2Mqexha5YFw6Tlkxei0YuI+hFUrkYslfCaddgdFkp67WUtCL+mgCrF8xnfCyCqmoJVlYwHpli05EuikKZixwW3vv/2Dvv+Eju8v6/Z3bq9r6rVZdOp+vVd7bvzh1jG2yDKcEECC0kodj0QEIgtBBTgsGmJQ4kQGjGBlNs3Lvvztd8Xae7k3TqK2m1vU/7/XF2fgmxKYntO4Per5de0kuamX1m5jvf3eejz/d5zl3OzfcdoGC6aG9v5eh0gWTTRPaqaF4No2Hw4D27WbViOU8MDRJvSVDMZJmrScxUpkh4A8yUC2iKSjjaQnpmkrl8gd2H9rBu5RmcsagNWRSZmq8giSZBw6Fh1rDNKiFfCFBo0S1cMsTaY9QkE7thM50pY2LiCers3rOPoXSNlavP5IMf+DgTY0eIuj2E3QEKpTptXhfFuotgQKXcEJAVjXLVoVCoUaqWSJc6WNYZ5on9owhhC0nyMjw1QWvUx3CmTMTj4vBUhvPXLaGtNcRMpkpSr3N0tszEkROkFnfQ2tGDrmvMzszhsgRCqpvDD9/OnWP/zKaVLRzbd/AZ587TWihygGrDRHaJ/7k8612be6h89t1c96Ev0/Km75H+9uufcX/bdk7WvFHdfOGKpc9trI7De87t5T2/ofDsc4koCuQe/zK27RA561pCG97FJ69/L9ds6f2t+9YNi5ZNTy41e44/iNu2Q+Ts95ys0dSzltyP3vqcvt7vws++9v1THcICCzwt2fs+TnjjNSfdiQkvcLJ+WOoln4FS5hRHd/rydAWgfxPPp/BxKsWOpxOrft94nq9rdboJRAuOjQWeiVNd5Pw3zXcL4/ZJLBmj1MbwyDHy9eP09aU4dmgfqWSKZYtUBHszQ8eGMS0DxxE4OjDJhS85E5etcejAAMtWb6BYd+ES4dFf3kZPVwtuXQNXgk9/5sf4dI1cqU57Ikqt1qCjLUahVKJu2OSLZdpbkixbs4gndu9FFsJMZ6aIp0IMDo7Q2hViZTJF3skzUZ1iWfxcPvmJv+dVr9zE6KEmF1zxEkqFoziWRU8qzGyuTCigcGI4i2W38Iqrr+XARz+EqGhMjaS5bfguRscnwOUmPZqlUDKoNWt0h2M05BoNWeAdf3c11bECR2YnCWg+hsem+OJXvsBfvOlVuNf2kMvtIJVaT7ZosiEcIxLy0dUboFi6k9VdS7lv9zE2bzmTfH0byYCbimlgFwdp71yNJ9hNdj6HVZ+iac6TjG3mxNxecvOTZPPHGU9P8hdvezWrlyzCsQSmJoepyw0s08YT8dGsO8xuO0HsjAAXvfRy7n/gDkI9YURNJKi5GDhu0OFYzM3OUSwppAJVgj4vkzQ5fuI4ra1J+lZ1c+6ZG3lk1yNMDhbYcfdhVmzu4rF799LqS3H9J/6WKSdNW3eKiMfHy857CZJjc+P3/p3A0iDFwRIdq+KUdlf51Ee/j+aWEFzwzrddiayH6e7uA8dhYO/DnH/5eg5MjeLt8HNibAZRUdi5ex+upEMyFaVUqBAM+pnPFnBrbpqmhSbJpPN5uv0rOOzs4ejANOFYlJ5AKwftIYoZOP/ipXz2K98i0KbhFCSOjQwjqTLHTgzRlmjF1APkp0zC4SCTmQbVikpLVeCR44dY1dFNxTBILW6l2QTVlEjEwsQiITav28iRwyOYZoO+nh4GD5+gv3s5oahN0WgyNTSKKriYV1wkwnGKDQOjXiUZjKCFREpNB6UuoMoq7a1RqraDqUo0Jyzmpwo0nSb18SKqF5SGzc5de1m8qI/7tz3CkvYeLLuObZeZKeRIxHvINx38MQkHm2qmRGtLjKiaxBAdmg70tnXxrVvuInP7r/jMR/+OwNgQi1raGavNMYGbjeesxYVNLl+jaRZolE2+/a37eNe1r2N2ZpZ8PseJsVl0RUWV3Czq8HB8ZJKQL8B4dhbDsCmXq6RzNWrNChv6l3Fg+CCz+QepVuv85Z+9moce3MnegQHc3iCa2814pkDTFvDITYqmzdktHRyeHUMM2+StPC9ZvRbFFvB7PDy88zCGoHHtO9dx190PEA8FKVSmmJgqIblAkz2sWd7D/sworcE4ttYk3yzSIgZZG+rDataoVx3WLEmx7eAIi3t6ieo2bakk44/sY3S2zqZ1S9mwopt9g8PEw36UcB8XXdHPEweOs+vACVJtKYxGCUUP0bbkLMYOPEa+UuaMy67C703ivm3nM06dp7VQlK+dtHf+eg2fD13Yxxnf/SivesOn2HJdK49++IKn3T9y1rUnxY9HP/ecxnk6LVkSxZN1hUIvu5GPvfd6PvZbuoc9ODjHVa//BIiuk0vonkOOpctsvPJvAJh45Et4tNNk+JnNk5UOF1jgNEMQBBAEzrjyIxy68zqWv/TvnhyvIrhPnQvvhcB/FUV+UwJ3qpO8U8H/RjB6PoWbP8Z7ssACzwYLwtDTEwwFiLX5qFf2kgzG2X1kHy2JGIcOb8UbvJhoXOTMcy/l6OGdaIoAdpW5dBpdi7N8zUb6Fq1HU2V2bPs5Z56/kqph8vAjP6dW1UkkujjvnLMYOXaAkZEJ+vraCGo+oqsU7n14PyJNBMGFXfMwMtRA1XKsXrmUc7asoVpocsM//4B1q7u5cOUaBG8v3/zGjQgugXvvf4IrVq9Aoky1UkIRYf/RKt0tEd7wqvOYrcUIBkLEI2Fu+MbX+fB7PsRlV65k/85BgrE2KoUcikvGFfCRThexBQG3J4pDhoFtR1m9pJvFiSTpfI03/MXfsGJpL//63Z9y7713I0kn2H7kB9jVFs4646Vk83nK++u4U23cN34/qtrFow/9hHBMxL1Yo8XjQxBl5nJFRFHE7ZSoVUQi3gi2y43ksfEviZPdN8bfvu8dSC7IFspMTc9QEnOs62hnu8chPTeLHFe57LJLcIkuosEw7/mrD/KzO76NnTGRIiLnbehn5+EiPYtamZ6eIuAJMT1xhEqzTrVWRZZF1i7v57aHf4lkdPLP//LvIMDll51H37kdxKQITaOI0nRIj09Q1Lz8+/wtrFjSgSVZ6IqXRq/NhOVw2VWXcMfNd2FZNopg84Uv3ozLJfL6Py/yy18NsuXixWQrGUSXRK2Sw+2REUWBQq1OUNahYRKSVURHIhWKkYrH0TWN8cwsy1PdjI5Po4oeggERx7DJlHKEtSCOFwTBprs9hUtWKaoasYiHwdExjLJIoTDNBZtWQ0wgW6sQ9WRo6QzR0OssjiWoVOu4dTftqThjo3k8QZlyqYAgK2zZuIicbTCVrVKkRk0yKFcmqE0LNEyHQCxGtWFSLGXQ3TK93Ukmx8ZxdIHxiXloNCjXTGzBZK5Wwq2rxBSFEwEbUxQoTDfo6FlMuj5NZ2eCyQOTdHd24mx9jBNzGYK6TjIYYk5qUizMU242WWKmKHXK5MxplLxGpAdQo9Qtg3hQoVytYVsWQ/OjRMJhZooZdLcbs1nEcSTCAYVcvkQ0GuEHP/oxAJJlcsbK5WytNBgY3U1393LKlQpBOcxczUQPlnEpbkyjgCG7kQSRrnAb+4f3culFK3lkzzBmpYFhOPQv7mIyX6SYLyMD2XKR9mSMuiEiNQxsWac3EOSEWQMpxeH8Fpjcyk/veBgRAcwq133hBv7yrVdx212jjIxm0SUX5WIdPeRjdm6CsT3jjNijbDp7NdF+P5vEdlA1Ro5PsP/YJB2tSVYv76darDBbkyg20qzs7yaXzZNJp8l1hplOZ0jXqmSHs7ylbzm6JrFt65243bMogs6aDZfS1dlJd38vjzy+l5/89B7Wr9uAaZrPOHee1jWKgrr8jIWeL1qSAJfEoVtv5ea94//j76GN14DjML/9huc6TARBOO2WLeV+dg0H7/o8AOEzr2XzPz7wP7YxLfu/iUTP5TlcddPjbLziwyCIZB+/4fQRieCku2mB/8HpJICeSk71dXjk1k+DbbH8qn8AQeSTX3wP2e1fIvfAJ09pXC8kftt/2/9YBYmnq+f0dDxf9YFOdUezBRZ4IfPrYu5CPa//T7VRZ9/Rh0j4e9Ak8OpeKhWToFdh366t5LIGi/uSvO51r6RcbXLkeIaJsSKyZNLXdwb1RoMf3vLvjKVnUN06iWgAx4mSnp7gC9d/iq3b78LlEggGg2C6GBg6yo7dQxSKBbLZEj5/hGMDB4mGBdyqiq5ZTKZnmcu7+JPXvJaG5eVb37ubW37yPSzbRBIF4j4fzVgLN33nVn546+N87aZfcu99D/CLB/fy8zseZN+uR/B63YyNT/D49gP0LUmQybo6AAAgAElEQVSA5aVUqWBVqkRjregegZBHI+ELorq96MEAfcs6SLR4OZydJR8ooSkC993xr8xm0qxctgi/x8/QxCTFuTLZSgajdpSu9haahonXSXLO4ldgGgY+j0Ak6kd3R7jn/p1UGgYeXUGX5ynXC/jcCm5/DE2X6F6yhb5YmGR3BD3kwjAE5nN5Np69nvqsTNEUETzgj3hIdLfQ0pIgFAyRbAnzq/sewqlZ+N1B9h0Zw1H7iMVb0N0SiViMhlWjvWsVLfFuEuE4/qCfidkpnLTB1Ve/BVVTSYRC/Nlb3sJZq/qYL2fp6IlQni6QnypRrdfR3TLVRp1auYTLbqDaEq2KxtGRQRJdUSItQWS/jqTI+JIaO7ZtZc/DgxgulYDuoTJVIhkP4nN7EQUXi1d3EXH7MJoWCC46Uq2ookijaeDRPfR1dDORm0ERTQLRKH63h8WLugm7PcgWBBSdvQcOYxoCiuTGbIwyNLGH5Z0Rli6J09KRZGpmmoKTA0+NnNqkJjeolesUazUqZoO+jhQuS6It5CESCXHw2DCHjg5QkaFhNelOxrnn4fuZy06Sq1Wozc1xZGCE0nwR1SUhuhwioQATo5Pky3XMCszPzDAyMU2hWEC1RKjW8cpunjg6glcPsFhJYUZFJrMThGSd8SOzOCGFOx/exj98+J247CYIDodG0/gbGn5/kI7WdlRBob+kEBV6CckWW3ccJTs2i1v0Y0oSf/nnV/L2t7+B6fkp6o0CuuLFrWjkqxVK5Kk7Bv6gHywBBxvJB5VmnvGZNNl8joCi05gv0Kw3GRifor89QqMKCBKKHmBiYoRqMY2u1ejt7iRTcDE5erKj264dezlwfBy/J0qlWiRfKIDkolioo8sStijTrNTweMME1AjWfJFKZZAfPLiDhqLTFC0QwDAb5Apl9u3ZR6lSxN8SxhIt3KrN5svezNkXv4wNm87nwMAAm7UlPDGU5sGdR3jk4DH8gSiHj48zNZWmuy11UrybKXBweBxVsbBMG5dLRJIsag2T6z71OZqGRcM0qJZqONjMFB1cTo1ytUqp0uRnP/kFYyODDB6/m3Il94xzp3Cqk6DfxPr1ZziPPb7rN24Te/23MQd3MvXYl9GVk4WQQ2e9ByyT6ce+jKY8/8WRTze2D81z2Ws/DsD1X30/b9rQxTmffZCDt9xyshX9c9hlrNIwaTvnveA4TD76JdzqaSQQPUlow7tA0ck99vlTHcoCpwDHcXCck6ayXxdLn5ofT7UQHNrwLlDd/8MdqcvCbsdxzjhFYZ0W/C7vE08nPiwIEv+dZ3IMPd9LzU7X+3G6x7fAqeN0GRvP5J5ceJ8An1d1Vve307u2k772Hm78yk9Ye+YWujokTJeKYoj0rdiMy5XFaOjs3rkNKehw6blXY1oWP/nRj6hWJuha2UFLPM7AUYH59AxX/+nLuPGLnyPcJqPWPMiKRLVRJRSKMTI8guKCaqVEPBpCkdw4iEzNTuAPKsxMF/nwBz5IvgF79x/AtCwePXQP1VwFzXSzrKeLZWe/lI0rVrHr8GGm0tPsf/T2k53AqKLrPspVEUQTxSVSLOdY0dvO1j2DLEpGqDcc5oplvLpOf2eMJhazU/O42uOouTKD01M0dQc1KLG0tZ3utg6mxkQcfZ62cJhHHt9FZ+dKfnHrL7j48o2sXXs5qqgwPDqJ3+umtSVKV2uEqUyNYrGIx63w45tvY2mnF7cnQF1t4yUvuZg3vuYKLn/xFvSwzQMHDmMULVwqyLkmLa1RXnXl67hv+xB3/eJmZFXkL67ezIRpcGjvMebnGizrX01Pbz9drTFu++UdSLZNPOwjncuw9px+ztw+xyfSY+iiwznnX8KD2x8hmxlnxbkdvPetn0NTQrz21S/jz669hNHJed7y2vfwT1/5W5rzoMQlNE1DEm1qzRLlqoFpNLHNBnF/jPGZHIYFiZAbt1tDsUV8qsrdjx7AsQ02bV6P1+3BJclIskZP+5noqpttB25Dl2WKlRIeVWM6k6UjHsMRBFLxJJliiWQgxFB6AslyEVYVRooFWtx+5qwyiiyQKRdpCSTIlLIIhszynnZGRqeJeCP43TojMxPYMiiODKaIX1ZwqQFiEZuuZAe7Ro4Sl710dXeRTMSYnRjhsW1H8Phd1M0q2XwVGZFyrcjOY0OYponZcLjsok3EAynq9Tq1egPDbKKG3AwPjtDe2YVPV7n5tp/iVzysO2MdckynXKkzbxQISgEkw8DBDXKdphusuoWv6SEZC5IdrXJi8gRNyyDsC6AqGolYmKGhIxi2i9aoj0Oj42xZvhhvKk5VrGK4JFpDYQ5NDDE9myEWjaKqEptSK9g2PUBvqh3Jkqhm0tx+18NUPA7NkoXbr3Pli17M+P5hXKaGKDhkKzmwTRTZB1aTY5OjBP1+XJaI7Jhk6mWWL17KQ7t3kIrE6Gnr4tiJUZYuaqcj3MEDT2xFVTRSyQST6VncuKgqIn5FJj8/TUdHD5liiUR7jD1TA2RPZJAkmVq2iigrLFrbzszkHIXZKl0rO3HqVV68rJ+afw1ut5vDA0fYtfV2rnzxBTiOQiY7hWEL5DMNYiEVr1unXK+iSC6MukHQo+KSJWYyWV60aR26V2Lb4RNEg1Ha2rsZGc+wa/9eFHeVqcl5woEQF1z0Ko4dOcz42FGymXn613aw48EDzM+XnjbROa0dRb8Lc//xRpBVUpvfTb7SJLTp/WCZpLcuiERPcVZvhMz2G0AQee87vkDozHdz8NZbwSU9pyJR9ztvpW3LewAYuOcLp6VI9BRS14pTHcICpxDLdrBs55S7h54RQYDm/62j4R8zv96i/nRJ7E4nnq472vNxnRZcRAss8OyxsPTs6WkaFnqshaW9ffz0V3v4+Be+wSte8zoe3T5Cb0uYkpElP3OUYtXLVK7GG173Ji4592pMy2Ho6EEEqcGipZ2MHB7jwPGjCPoRLjz/QnZu242mSiTdnYzOjGJ7DCpCnnIjRyQWRvdpbFi5ikrTxfGpccanp1jUu4hGU8Ef9HPdl75GtVxgxZJuTAQaFRPbcrhi42LaQzKNygg7d9+BRyoT82n4QlEcR6JRkWlUGtRqJebm0hQKOdyyj3TRJJlIMFWZR/DaeHSHnqVxWlZ1UvQ4pFoiFI5PMpMps65nEaWJPLN755lIz6GpOlqwglFq4nZLCA2Z8859JZ+9/ts8fM8Bbvin6xEFgWW9YUSXyMTUHEeGZzANE13X2P7IPRRyk0xkDCbzTa56+eX4/V5e9uaXUXTVaZQdYqEIoW4fLYqPpf09bNzyJyQWn82b3/omXJrKpVf8KY7lJuYNoZcd1na2Ewn5Wb1mObff+yCqrOHxuxmbGsXn8pAMRnj/8cN88gNvZMnSbs4570zOP/ccUl0xGpUmn/ri+0glo3zgvddyaGA/gYDNP37tg8huGV9ERlAdYiGdsZlZZgs1nIaBrqk4pkTDNLnw7NUsWZQikUgScC3j2ECNO+7YRyAVJdrRTrFeo2GZmGWDsfExUnEPkVCAYqnM+PgUIgI2Aq2xKJYgUnfAME2qjRqGZdCdaCMYDFATbGyzgaE4ZGt5htMzNKoGIyMjeFU/eTNPNWOgNm0CeoB8tYaMQEDVUR0XpmCTqeSYms1jOi6OTE+zcdkqTtSKnEineWz3TmqNBrsOH+Bndz9MpeZCsGx+dtc2hqbnKGUb6H4dX8CLKmmIokUwoONgYFpNNEPi0nM2ocvg5HMEkzHcSTeC4mCU6kiaiFtS8KsqtqDQyJWJRhI0M3Vs2UYNaJTzBl1tQaKRGFa9QqNZI+I0yc+M0dPRQ1tPF/NVk8VdnbztozcQ73wpIXcXPq/G/hPDeFQdj8eNYdTw2irZapWQoaE2TL7+5f/gzvtHsJw44Z4A0Z4AvYvaiIZVXIqHyfQ4giDhFyt0JmJMZ2cJhgNYtgMouP1BLG+IZKqb0YlJ1vcvxuXSqDahYdk4qHgjMm5vBK/bR75URdNc6JEIlWwW22xQaRpMzEzTv2Ql7YE4iio+WVC7cTK/sCyEOZtQKszydSmc2TrFqTw/e2A35fG9xBNJejt7+ZPXvY1FbVHm87PYosrk+DQ1o8R0JkOpXMAjuYi4PUR9IWo2uGSVTNXk6PFxDg2mSU/N8cC2R/nSP99ESypMoZwnny7QnvJBo8ptP72NubkZFEli6ZJukmEf9YbxjHPnC14oAsht/ScQBLrPfx84Dr/8wcdRT0Gb9dMZ15PFrucf/y8t753nJjEemCwS2vAu8jseYOOfvZbcjhtJBrVn/XWeDWz75PlPf+cNpziS05fTVjx5lhAEAZd4Ukh/SjCyn/xuWg6GdeoFpPCZFz5nz+sfC78uFi2IEk/Pr1+X51okeuo1Xgj344UQ4wLPPwvj4vTHEQSmsnNYNrz37R/ELdrEI2He+/6PsPKMlyOjsW/yAJdsWk0sGODBbTtQJJFKtUymPIRLr/HY9kPk8jUevXsXQ3vH2bb7h0zN7yI7O8Pk1Al6l7UyPj9NsVxlsjDJnDFDTakzZxRxzAY+j4/WljDVokEpP0e+XOXSS1eTnx2hXK6RCChcdNYGujti1LBABV+gh3/55+/wpeu/QG+Hn+5EmHolR9Aj4xJkJNPAo/oQBYmuFj+fv+4zpFrbSKhRMlMFvN4AJUMjV64Qi8SYdDfo6euiVM2xa+YIolfBsGw0xcuOfQfJ5ybArjFwfIINmzcRi8VY1t/Dpz77L3zowx+iVB3g0e0WO7btoL+nhVyhQq6QR3K5UCQPZ6xfyeI+H2952zsJ+tz8x7evY+OiJdTHM0QScTauWMuqniVEuxK0dLTQ2tZBZ2sCQRR595WbqNdrFOQOsgPzdHX1cMnLr8YQdHY8vpeApiAIJrbdxKo2WLoiRU+sjRs/+W4i4Shvf9PV/MMXP8G7r/kALnzkjtYpj1S45iNXctvO/2B0YJqhwTH6Um1E/X7w2lTyVaZncuhuFVUSKRkm89UalWYTw6hz4OhxXrr5fIojeX51x+2sO2MLl7/izaxMrmLLyks5Z/XL0VytVASBSzdejqK46O1swXRsQn4PxUYTj6phYqPqfvyaRtgbJBUMgyMiyDJmvcyJgQnmjmYwKg165RSbUuvpCLexJLWIoKaxuKOVmVIBze9GkWXsuoFpOcxnKxhuA4cGPtlDInmyno8Li3K9yYbuXpIePz2JKP/209twHJXeWCe3/eJu7tn5BO6ojq4LtK5IEu9cjEsSCeoa6VyG235+N7fdcT+7Dx7gVzvuo1Gep80X5tj8HP5IlGA0SCIVJ29ZVCtNStjEIxHcmsCizjZE0yEZiSMWRUZraepCk6GpeRZ1xNmybjVTU2PM1Ov4ND+Dxw4hN4q47ApiyMMdP7qFizeIXP2aP2duboZE2E++WMIybXRbRDRK3HDjNxkeLfP9H+/AciCe7KS1fRGdvlYWp3rob+1heC7D0sUpztu8GY9Xp2b5GRxJIwsiA8MjtEQCBDwas7kZApLIwYF9dHW00TQkWuNR3LJJZyzIfKnM0eOjdLfFSfr9CCLMZIuIlkk4FMYSNOLxDoxmA2Qo2TKtUiuqV0MP6bijbkJ+H1XLIdz0UWiaCDGFcGcrtaZNb8pPrVqkNyqzIiohygFSsQQDAwNsXtfPhtXLWdzVjShpTM6VqRgWxUaJaqWC4Ngsb4tRM+t0JPwEPH6m00UuPGsNjzzyECFdwrSgMW8yODzJfHaWjZvPY9O6fs5at4jB4Wk8Hv8zzp1/EEKRadknfxBdYFt0hNynNqDTmKe6oz3+s8+AbRE+89pnNfkMXfpZNr38b0EQmH/8Ru66ZvOzduzngsncSZfGM9XCWuCkkPKHLlCIooDkEv/zXJ8Si2zHwTBtTvXpH/3yywE4MlU6tYEs8EfBr7uLnm0WXEQLLPDss/AsPTOhoJ9gwsOuIwPc/MtvMn1sH16pSSwa4rGHtlGWqvS2tlNvGrS3RAkEguza/wTJmIdyJkcxn0d3i8STChF3AK+gkR4uMXU8TyIZ4dDgMHVMAm4Pa9cuQXaJmJZJSyJMuVnEcQmUK1UMQ6PebCIKblLRKBNjWdwBFYxZ/EGbrmCYTf1Luf3hQ2TmKhwcOEKqawkbN19AuVQj3zTJV2uU6gaVpoM/mKSnK0VbMkAgFOKbX/0qXckgwYCbttZWOjvaUP1N0ulpapUGMX8cKamyqCOJLxRD0mUUXeCcDetZ0tNOa3IFTxwYomrWCGpJXKLA0cFDrFm5iLHRE6zr62dx53H27HyE8YlD9LX7OXv9KuYyOdoXL2ftmtVE/V6+fdPHefEFZ+Nxu3n8vrs59yUXcP6WLRgVkV989yEeuXsvwVCAB+/4N7b97Ed859tfRl+cJDN5DJcsseTMTXiSfew9Mkwul8ctZsnOT+PYNo5PZzRfpkqDz/3kO/h9Ph7duY/5fIZLLzuTN772ckRHJx5LEgmGmRnNM7pnikq+wfChSfbvH8CtKUiOQCTsxpAadMZbMS0bt6oQQMJxIJ+rIikqUnaI97zlZVxy+WtpNAVGhwZpXaSjqlWOHh9g8NBxrrjwavRwkqGxMvVKAccEQdMI6zqqC1b3L6e/vY1wIIhh1FEVlZrVpJjPsPXefew9cIhIOIZqaZTyeSyjitIAo9FEliUyM1Va24K4BTcI4PO6cTkSJhZGoYni0ag0miiKRDpdIOzz0RWP0ChWmJud5qs//AGWA10drQSDYcKdAQItfrwhjZW9q3ndlouYOnKUN770CorlCj/7yf1kqiWCLT5ECWRZ46s/+DnXf+t7zGUyFDJp1ib6KaZzKKKFqopsDi/m2PAYpfkak800TdMkW8uRFQp4DCi7SsTCPhpWg9bOdvp7l2KYIlXbpiGoFMtVfMl+QqLORZddzNChY7zvvX/FZ/76JsqzTbqSLSxKtnFi0OQH33sYzRthYGCAWrXKmnXnEw6F2bQyQMwbwRJErKZDix5C9aqEtQa5/DyRgMyi3jYMR8AwTMoNmJjLEA8nKDsSPo+PnfsOoOkKjWaTRsPA5/XQ2xLBaJrEvRpDE8eoNxu4EKibNSzHQRIEqrUSmhqgWJ5CNOaRbNADHjxhN6IgkMkVaDRO5pz1ukNpuky+WMLTouPWggSa05RElf3TFe547ACFfI7etlbyxRqVXJaAT2MuW8AWYXh6jv6OOH6fH8cWOZEtYpgODz9+gKQuc+nm9bQG/UxOzBKKxkhGEszYBpKuoKgwcvwEbn+Csdk089PzFEvPnFu84LPjiWyN2FnX8or3vZXc418Gf4xVl/71fzpFFnh6Frf4yO446S4Kb7yGg+OF/9Px/vLm/Sc/+M+P88QdnyW340ZE8fQq8P10bPnI7ac6hBcETwkof+iCkUs86S56stkYLlHAchyapn1K4xIFwB1g01Uf+YO/B88Vvy5MLCzR+O08JRj9V2Hn/8KvC0QLie0Cfyj8phb1zzenSxynE7qicuWWzazvX8bqJZ1MVU/wlmuu4dFf/Zjtu3Yj1btYtfQChsfnmZ+d4uMf+xA3ff0bPLh1Lz5PK8NDMyDWKRtNlvSmMEWJoROD6LJBZj5D7/IElXwJo2EyNJLGEiQ8uk6lUkcUBLyaiiyIjE+P4/WItLekwHCYmBjnGzfdwmwpz6JkF+m5Jo/uOoEouth3dJSRgw/gYpbD+3dw192/ZGZ6lGDAh6YrLOlvJ9Xj44FHt3P3w3v4xcN7cQIOiqgRToXZcPZyGkqFRj6P07So1gvoioxlW8jdEfrDi+n1dyK5FHYd2Irb42F5Xxu9Pd2MDkwyMLybX9zyFR7e92M+9/X3cGj3XWwd2IVBgqv/9A3ccMP3uOXWH/KZz/wtEb+Jx+3moa1H2XTB1Rwbn8Yf8jA1N87mF53P3NQk77z2i7S1ncEHP3wdjWqTcqVMqVji5l/dilus8Pieo7z0xeewcd1S7r3jTiYH9hH0uQmrdSZmZpAUgXjEjWAW2HBmH6YCHbKPz37zZr7/059z43d+wuE9Dfr7liI1i7zure8mnZlibryMR/IiCxouU0Q3FDKzOVoSrUQ8HlJuD8NHZ7CLNoXhCn5vkKWpCJpfY1F3F5++aS+f/sajRMIBWttbsGyTtliK6dk0OWOULed1cf3XPkJPZwqPKrN7+w4ifi+CZSKrGqlEO7FAEMtu0h6JUa3XqdQqKLJCtV5GFUXawwnaEymSkTiFcg2QwbTweX0kPCkEzaZWbFKqFTHtJrZlIolgiBaGy6Zu1qlJdWoFkbGRAgFfgIHRQQ6OHuHY5DFcskBnspW5zAxFI4MoqBRP5LEthzvvfpBwJMTnP/AOvvDNf+ORoa0kV7XgcgmY+TqFap356Ry27KJlXRv97d2cs3w1g6UZsmIdsSEgFSz2jQ7h1XUcv4BPDFBpVKjVDCKKGwEFp2Ay1JxhLpdlNJfBwmY4PcSxsWH8soJP07EKo7TFo1z3yfdy6PARLr/wIr753R/gD7fRGWrnlee+jLe9+R1EEm2kUj30Lz2LaDjMzPQxHKdA2ZCQFAVZdWFLAk7TwrRsQpEYc5UGXreP/YPH8LhdCI6Bx+NBkiVy5SK6LiEoIqLVYGJ2nnK9ysz8HA1BoFSooXq8TM3PYiDhkRQUWWVoZASfppDOZmg2LdwBLzOZHMPTWSqlEp55gWi0FVGUaO9qoVTO0tvVgd9xEwuGMDM1/uaqV3N8rsL9B6bZ88CtHDuwjbETB5mcnWfeLjA2laFuGBw6NoYkOyRTYfLFAj/fuhfTsZkrFMAwKZtNjjZnMF0uBNvFzffuIOiWyE/PIlOjP9pGtCVB0BfhkovPIl12mJps4NEDv9Es8YIWiu4eSLPykg+CS+KbV68BIHv3R0B0ETnzmoWE6rcgCAK5HTdCuJVzXvERPn7X4O99jNFMldCGd3Hz5/8FZJXZbTfQFfM8B9E+NxQP7zmpCCzwW3mqoPOz8Vydzs+mIAiI/6WToSqJfPq+Y/9NfH6+4xcEgeO//Bg4DnccTp+SGF7I/LpItCBQ/H48G+LaMxXLfiGwkHgv8LtyqsfKghD+9NiOQ2G+ytCkxaPb9jCezXPVn1xNzp6kozfI+nXLaTbAcSxu/MbnEUWBcilHMKjh6FFefO7FyLqbtvY4c8UKti0RC/toOnVGRudoTcSwTNB9MoZhkwiGcAkSXp+fYDhEudrEkUQUsU6t1qSQT+OIUKnYSJLIicE05WIdTZcJBcMkY3ESkRYEU2RmuohL1NBcCj7Nw+ql/Szp78Gizny+RveyswhEk6xYdy4zk3M0HYPR2TSDR4cYH5zjoQeOsWf3BPX5MqqsUC7WCHj8eJNuErEYF11wLl3eLtLzY/zyjjtJtHnJzBYwG03qrhKNXBm3ILNhwxpSoTZS8QiLulO85urXsnRFKy3RENncOPfdfxsXv+hctj6+m3f++Qc5+7zVbFixBgSRF112LV/56tfp6Ohg/ZqVvOOavyBdrKF6EqR6llMoVznvnFeRMz3ce9cjLFm/jlhHCm+kyuJlLUykZ5nJ5BnPzCMBmaky5fkcDz50mFI+R63uYjZdYuujd3H+iy8gV8zxtRv/jnLZYUXPciLBGKqq49GDTE7Okh6dZzaXxRbdFBsNVqyIcMaaxSQXRbHMJk1B4ew162mLBJH1BoJLoGkYFHIFol0G9+3eRsXIEA2G0BUvmsvPVHqOSq1OzWjSmWplcWcXvak2JEkiVyxSrjXI1WqYgOLxootw3+07aSCj6z68PjeTs1lsx0ESFWpGHckRmMjN0O1rxaWqqG6dZrOOPxxCkkRkwYUma8h1CbdHwzCrtCR1YgEfP7r/TvZNDDNRLFAqNtm9b4j07AzFkolYb+LSXbhVL4G4h09+9uv85fv+EW9CpTRj4XZJmI6LhgCBoJ9AxMfyM3p4+bpNBH1+Sq4GhgKa6CIvlEk3i4iyzWhjFlfTRV0xCbnciLqDUHNRrZZpik2KI1kMWSQ9eoIrLjufd7zpakoNg2KzQrVhE+pczPYDB7FsGEvnuP2enzM1eC+diRjFkovb7tnOHXfdR//Ss9A9AbKZSYxqBdlosH/PTmyrSMAbQnepBCUFRRDwyhL15snaR4ako0gaoiXhUnXqtQrZ/Dz5YpEjxwboiKZQfXEc00KQNPq6FtOabKe7o42e1gRuWcO0RAqlAprmwu3WKDdMWpNttHd2YmExdmKczMwslVIZj6whlpuk2lpY2dbJ6kVLKZVMjEaVkl3lrW96JQdmSuw6cAylnmbbsSGmpmdQVTduRcFn++lIJTERMJsmfa1hJsfTqJKLWDCAS5LxqBoBf5CgqtMqxdg3PsGh8UmW9KQoiiaa7JAv1pidncFjCFx8yXn84Cd3cNtPbiXZ1osgyr8xDX7BCkXluslr/uzToHnJbf/Sf/5eEE4urYKTTpkFfju5u/6GW777Ub78dzfS9fZbfrd9Kk1CG69hzWV/DZLC3PYbyG39J2TpBTakGlUQXmAxn0L+L92/nnIkOY5zyruI/TbEJ51FT30FdYmP/S+E1GeTsFcBSeH1b/oHdg3nWDBN/m480xKnZ9Mp88fA/zYBXXARLbDAAqcaSZL44W2Pc9F5l/Kxj91IeyyIT5xD1X0s6ekl4A8iCCLX/cOHmZjM4Q5peINeHnrgTpb0dhFuX0x/eDmzB7L4ZB0JgzWrN7O45zxe8do38MDdT9DX30fEH+WyC7YQTIa54qJz2bB4Kfv3D5IpztHf3k1v7yLKtRozhSoWLlxYJMJR5rLjfPFfbyKdTTOXm0dVJAJ+Nx6Pn1RrF2ct68MXjLJu7Qr0qB9TKLL3aI5MXkZVPURjbWx/4Gc0dIv9xw8zlynTNBtEes+mu28ty9aex2w2wK3ff4wz+taSCCYQXQ28iTjdqTCBljizowFM1aJUKdGWiiCrDrnJEtlsiUJNZeO6tQRVF23JCjv3DfDYow8zfnicjWevR5JVLtyyjgOD99GSSHBiYprNGyYmuUwAACAASURBVF/FE3uOUzUsvv616/jSl75IIKTxoU++kUf33Y8iK9h6jf6eXjp6tpAtVjn7jFW0pRIcGz7A4bFBntg1zI9+uhvd18vk1CzxngC2LtPTH2G0XiAY86GoPnweGbc/zJkbevje975Ne0cPXtlDZ1sr+eI8IqBKKqoEikvkxPA4o4fGuXD9Gqx6k6GJccbSE8iyRa5SAQGGxk4wNZfnla94EanFEApNMz/3OLnxAovCcV6y5SLOWbGcx+/fzrolSxmdnEYQXdRKGSRRQBA0vG4vXo+HTCHL6OwEk5k0yUiUfG6G8dkZEsEUjWYJbyiGJmk4WDi2SMCrEA3HaU8m0CUVExFVkJEMFwY2LkBT3LjdKqqmgQZ1y8Ix60zMFCmWK1B3kGTI5wqsXdLO377zzYTCLSzt6aN/9Rm0hpMUa3PQ0iQQ8dC/shNNU1h2fjdLOnrYvGoVrUtSrGtbxbJkis296yiLNbJSDdHS8UgKU5UKsijjD3qQDRGx4FBqlgkZOg4iITtA0S5QFS0ClkKyO4ZVqVN1HB7YsZ14Ms6GVWsp1eukWpMc3v4oZqWGKOkUcFikKZxwYux8YghPuBWX6iYUDrKhJ0p3exCcBprPi9ut0hWP41TBjUS7liSgawxMjDB6cJCZqQnsegZNdiGrGsenRnCaVdJzaQJ+H0GPRjwax5E1NNmFKLmo5OeYyxfoTARpmhX0gAdHkEgl44CF6lKJxdtY2hGntz9CUc4wMjNMrWIhSyKipGOLKiHHS2csyGS1SDKZolwqsGbZBnpDYeayBtu3HgCnQq5Q5qUbVzI9l6NWq5OvN1HcXhzRy8hEhpZkkj3j09iOxJLudpZ1d5OeLzKdmafpWIyk55FlFVVUcSsqs7MziLpKzXHINgyW9nQQ9mkc2LOPo3v3sHHDZlTNxwUXXIzj/IE5iizbof2c94DoIvfIdU+7TXrrSbEotOWvn8/QXrBctCTB8INfpLDrQd78/Sd+47ahF32KnicLh+MJgqKf9on/M2JbBM8491RH8YLi97nXjvP/C0PbDk+2oX/hjBVBOFm76NotPdz20Mh/dkY7FecgCALTD38eJIWLr/4Y0dd+63mP4YXGQh2cZ5ffVyxaEOEW+H15IY+Z08XNc7rEcTpRqZt89GMfpVwz+NpN38FpqkyXC0T9rcQiXSiqwo3/9Ckq7nl6N7QRSERQAxqOv86eXTvQZJXW5ctYvHwNib4QUhiCiTbKkszux3dTaTgEFBFVVXnw/kHu/P5jlPIlvvOLW1m8rJNNF6+jGiuTK1UJexWCQS+VShHDsqmbBsWCQDzs54mD41hGk7DPRyZfYWVXG4taUmxafzYve8lFJGNRJJfFoVGbaKKHlq5eEu0dXPiiS3nVVRdTG6vjVVTiWpC8YRGPJTj7vPOZHT1KV08foqeIrsp4RYkVnT0IZDFth6GZSUIBC1UQEJs67//I9Vgui3hXHFl2cdV5G1BdIv/6w1/xzvd/hYO77mRyapRX/+krkEV4fOtOPvuFb2EbrRwdGqE1FSKXz/Ha1/8VZqGKaJvYtsXnP/v3BCSN/GQBv6azaumF1NHweNx0d3UwPjWLR/ciWhJut5dcXiLZ0onPF2Ll+gvwBr2IuoKo+YnVwizbvIyJ/HEMy2Zo4AlcUpSA24skK7gsB9OpoeoeAl43uiSiShqNiomqKMxNZ3h851YK5Sqio+A4FqVKjaAq0ygVaeYLHD06iGMVuWT9WbQE42TSs5RyNY4PTnDD9f/Cl7/8PRp1gUCnn1KlTl9XK6LkEI/EqBs1RMEmnc+hyxKpYIBkIIhtN5B1L3bdRtM0At4IfrcbTVPBESnWqszMZtBUneGxGXK1LF2JDvyaDpILzbEIhv2ouowqq7hEqJk1tKaIZdss62shHPKxYWUfPk1DQqWnpYdytcDc7BTjEyMMTmyl6ssgWjbzw03MhoOqiCxavYK+4DLMgIvo4ijLw0mUiEhbaxcz1fxJF5iokK6lqVQquA2IhiLoFZU5VwXcLjy6j4pjUilUGW2mMW0HM9ukrFhMD8+QaZRwvCK1usG2/QNcdP4GzttwPo8/sR9JVGiUq0StCosjPnbkspy493bKcwPMzk5i2SArDhnLxXy2isvlIhxSMUWHoOLgc3vxuDW6FnVQtpq45pvsGhhlx/FRHti1h189/CBjs+OUi2UsQSQSDtMaS5EtFAl6/PgUlYA/gEf20BQlBE1j7MQIY5MZ/P4AFaVBZ7KN7q5+JN1HICEzQp6dR48yeSxHf+sq2tt7MR0XXlWh3a2SSPool23cSTcVo0TIHyI3O0vfkrPwhxJkyrPUazUEx2DnwROobi/nnLmei85Ywasv3cjq/jZW9kaJukXaQ2GWdLZQrBlMZfK0hj34gj5kl0Ag7KcrEqRWb+JIAos62tiYTKErHjyKm6F0lnh3P0eO7adcy1Ms5Vja38dcpYTkeuYGYC84ochxHKJnnnQKPeUcejpU2cXc9hugUSV09vuer/Be0IQ8CoEN53Pb9d+kblj/8++vvunkB4/CDDPbbiC38ytM3/MJqBWJbn7/KYj42eHYDVed6hD+oHEAgZN1dl4IdaueDkUS2fr3LyL64k8/2U7zmfmvzqlnG012kdv2RWhdBiN7n/Xj/yHxu4hECwnV78/vcs2echE95SD6QxDq/hDO4XTnD+E5PF3GycLc9t9x6246WkK0tcZZ1Ntkel6hko3RmlqJqqp86MPvJL4yzIfe8nbEfJzxA2Ocd04/AY+H+x69g61bH6IrpVJy/NAUmJvJ8PATdzI7d5S168/jsiv/lEJVZWywwuoN5/Pmt76K737vDpa29CDJHt73tk/zkrPegemtEAtFwKVRqdbAdlBEC+Qm+f/H3nkG2HGWZ/uacmZO72fP2bO9S7vq1bJlCXdcKAYDAYITIARCQguBVJLAF5J8CQQwhF5tAjHYQFxwwUWWrN6llbS917On9zLl+yHMRxIMGFtIsnX9253Zd5559z2z89x7v8+TLuJSTZKJLMVygeZwHU8fPQNCkj0Du3j4kd3kjQp+j4+u1ihBR4K5yUfYcd83uPe7X2RsVqOrLkS1rJGXIeIO4fdOs75ymtuvWsPN123l2ms3039mECwGB06cQEXmK998ir2P9eNwiYTdjZSqGR65/wtoNZ14Ks6t19zA8vYmduzexenjI5h6kZmFHLIscOfd99A/XiDSdQPbr389x/sPcfttL+PQgfvZs/sAd337+/Suv5aV6zto61Lxql66ot3ceMObsDu60XRY1RvGLIxy5swADquNSHsbV1//Ct56+3uwO734g/U0hKO88U1vplKr0OQNYCnOcWD0IKZUwlvvIZ6M0dzkYXp2BJfTJFdYpLG7k0I+S1ukgaDbg1+xUyxVCEWjRGw+qsUqpyYnsEoKkqyTyZapFqpUqzohn4fJqSTjw4t85SsP8Ik7vsLBo/sJBlUKpRRHj/azor0XT9BBIp+iOC/TFPHRGvUiCzqFfI6uaD0OpxOf3UqikEOr1ihrIn5fiK3LVhK211EopGnr7iPgd1LWdNwOJ4KmU9N1LIKAx20j4IiQzmSYzWQw0XHYHYgI2OwKpqEhmSI2bFQlE4fNQSTk48jgEB1NK7hy9RV0esOUCxqCoWBVVHwBNxZVwiE7qZVEVt8U4bJbtrLi8k1saV9JNFTHzWsvA0Gk6rEQcvqZTC4yPj9Pgy3EYiFLRZHQVIO0qTM+Oc+smsUjOpEsIo2OEIalRk6qEsjZUJwO1jV2U0jXCPX4CNrc5JcKZLQ8iPCPn/4Sl21qw2G3cvmatWxsjrKsbyWFKmzauIHb3/ZO3vLqWykVyiiKjOOnotqK5Q14fBY0I0cg4qd340ZcETenTo+jF9McPXiMpbyGJ9jI8Pg0docTgNaGdrZu3oJDlmmqizC7NM+K1kYkQWR8fhKzVqWr3U0hk6JcLYBUpbuniVRqkWKxxFhlmCltijlxlsVaHq0ockXTGm6//kb6GqP0NbfS6I+gByxMejIMLU1TieRJFeJMzs6ykEiyoqMbp1Nmz46HkcwStgaRE3NjBPwO3vs7N7K+bxmR7g72Hpzg9OgU44sVziRSdDd1kdbz5IoVUpkY9YEw9X4P+VKV+WSJilZFNDUSyTTpgkHIbaVY1ZB0HYtFZiw1jRx0cvmWzdx23So+/vG/YaR/6JfuULjohCL/FX8GwOLeO37lubIk8p7/8x7QqhTK2rkO7UXBxOdvA1mh/or3M7FUAKB/OnP2ZWPiOCg2kgc+i/LTLWZWiwQ2N2jVi66A+DOJvHQBixfPCA4X29zCT91EPw37bHHoC3eefx1cVhkl2krolZ/6X8d+kTh0Lu839cM/Yv2bXn/Oxr/YeS5OoksJ1XPn2ebsV3UzuzTHl3g2Xmzuvwthrb9Y5vKFQFUsiBY73/r+PzOfjNPQauPaKzdhtdn40T1fY8N1K0gOKHzmCzuYm5hCVqycOJjn5esvx+esY36in5mFMjde24rT3o1ekLE7ZJLZCU6MPsTowSeRTA2PvxWhNMtiXqa543IOHF6krbkPLDKL8jTrV13G2HwC2SyTyWaI1vsAEb87hM8XRhYstLc3kkhWqRmw6arlqBEXrrCbsidDWSxS02qoQhLFLmETVKL1EaKRIFbVynSuRL5sEva76VnehpGrMehWOalXODM6RiWRIVvMkExnqXf5ee8H/42v3/lNNl1/K9//zhP4XQ7CQjN6sUZ8eonhY+NMzh7nd979Yb5610/QdJ3AMi+RZU5Wdraxe9dJYlNHkEQdUZQ4sXcff/aRv2DX7n7Gxvdy+Mh+TpwaxOPppa/3WiqShaWClXxJw+d1Mz+4lwNPPohNtZBPDxBPZtANg6bWdgxBIJuYYjKxm/HsQe558A6uWbGW73/3UcZSBbr6ejAKNQTFQteWFhLpCrGlLLPzMWrFIjMLs9Q3LCNXWcBSzGKgYbVYsRs6ulUi4HQyN5pDtAhYNBnKJhZZoKZV2f30AHqthlgWUSULGAI1UlQrAtde1U5HT4ipxRn6T4wxOx/DYfeQLekMDwxTVKCiVYlly0zOzhDPpxibnWJ0fpGBiQGymRwnBod56Imd+B02fBaZkC+ApmnoWg2rVSWZySGIMj63k2RmiZb6CJqRpyzWmFuM0xxtxzRELKKEiQgWiWDQT5UaS/MpHDio83lob+kiEm3AolroW91HfV2EoM9PfLiKUwpz0zUbmdsh0xYKEXZ5aYsEWUjlyRZKNHmDpObStHY0oAgiii4xHp9hW3sPNqdCQ6mOgN0DNo1Q0YnLZmNNoINFPU4xVqInHCHvNgkYASbLi1j9MjNDcZaUDLKmEnA6CTrtLOvsQpRV3vI7r+Suxx7ilre9jrl8BquiUM1m+O6Oe9lw9W0gWSgWSyxrdZDQJ6ha0rS1NuDyhqhv8GNxigQDPpLpRb521wPUMjoN0VYSqQR2qwMDGZfTSTy9hK7VCAQi1DQDRbKh2LwgWQi63djsMhaLD0l1UspWOTORIJ0ocvr0EIl4hthiFqtq0Op1sLmjhWqhRDQaoHtZBFfARUbLUPIVaG/yEnE7cIbslDI10hMlWhrqkMU0j+/dxVN7DxCsb+AV2zfiLNhoXBEg2tJOy6orWb5hG13dG9hzop/hqSmiLT5SyQSjMyOYmpO2oAufw8nQ9DRzCwlK5RxNboUdRweZji2xsrEemyCy79Q4TtmJotrYdNmN3HzFy+nt6uMNr9rAF792L1cs6+X0maO/1FEkXMgFUdev32Du3n/oZ1/7Nr0HTJPkgc8+pyTsmk/t5Mh3vsfCns+gWn7xZPy2t5OYpsltXzvIE/fvP1sjR6tCLg7VElhUPvR3b+XPr+o6LyJGpaYTufKDYOj8rC94w3KSP3z3s86Rb9N7QFZI7fnkbzHS58dYrMD6m//8gn+ZMgzzZ4XGLhax5ZnW8qIgXLQuol+EbpgEt/8l9339g1zeEfzZc+N8iY02i3DYNM0N5+XiFwj/6+/E80g4n3HBXKhcaAWh/2cy/KtiutDn99m4WOO+GHixCUTPcCGtmUt/J6Czq8tc9bJ27JJJfTBKe8t2DEyefPQ7TE3P88a+Dax78+v5q//zJd759hv44lcfRtdrJBMxpsdPEvK76OhYxuZtN6BaoTlcx388+h/IZhXZDqtb1nFqoILNasFpt1Io53nNTa/j995+K4/9+DGOjU7jdVmIBEN86KPvJTGxQGwhSU9XFK/Dx1IqQW9HFwNjY6BX0QWF9rV1aEUTm9KFLMvUMBDtczT6fQycnqNa1InH49idVl5+/StJ5w1qNQNFtSIIBg2RAP1nRtl42Uqs2JgePMrOpx5BsLlQ7CZLsQK9t23jr1/zIY6fGUO2CHzgj9/Erbe8jFKxxP2P7KZWKpPJVgg0e3CGDPIJnYDdz8J0gopRA9Pk9re9m+GhBawuN60NXh740bdorq9ndn4Bb/1yrr7mGiSpxr3/+QNKpQLRaIRlLW6OTo1y7aq1RFvq+PuPf53rr13LwaNj/Ml7/waX087AsX3MLSxQtSRxim4eevxJmtav5n1v/jPufuzzrAs2cerMaQSfSl4vMDY+y/yxON1d3QT9NtKZIh3t3ThseQr5MkODMTwemVRGw6yUWMqm0WSTjpVRqtUKViyUKlUqOYFyoYgkKhg1A9VqxW534LDaWb7GS33UwlNPTuB3eZg2ZVSpyJtufgcdrTKP3rsLb6uXcrmI3+dnYSHOZHwGw6jRHKxHVWx0drbz9MEDjB2PUy1XaGgI0hyqJ5HPka/kSCSz2BULAY+floYgus9GvauRU2MHKFcFrJrO2rUbOD06QrlUpKroVAoVAg4P+Uye4alxZmfmeeVrrqOzuYVYMsVEYh5FkDm9ZxBFkUHU2Lh5BamlMu3tIaKRZp5+chexRIr5RJbX/c4tlHWNU4eGqSk10kUNv2JnRltgQ6iT41PDWP1ulkoZ0Az8kgdJBKwWul1RBEXDMBRSSxlmjTnEigWpZoBiUs1oVHUdEYh2BsnnNLLjad72xpv43v0/YWJmnDfd9gZOHj2O1QY1UcUR6CboV8hWlrAKBoJLobkuzN59I3R3BlEMkyMnp4kvTuGUAhhaBUFxEM/GyKbjdLa10FjXTGdHlPsf+QnD03N0NnbQHPYxFZunMehDNywMTE2hqip21UqtZpDOp7ArFla2RXAFwpwemaJYLVPXbCVXqjE7vETUoVIwTHq6eqiLNDEYG6Y55GNybga3YmPfkdOE/CG2r1tLrJZhbHgBrWTQ1eSja/l63B4byaxOz7JO4gsxHrj3bq64YSvdXZt4bO9eDvz4Xjb09DJfrbKyI0LR0FiYXyARL7O8swNNLyBLCmOj47Q02BmL6yRTCaKRenKpDFeu38i+kyNcc8vNjN53D7NuL2cGT+Gw26mVa1xx2UYefPhRMpnCL0xkLhpHke/yD4JpcurRf33OyfLjHzhbgyZy+ft+4fHzIRL5L/8gT3z5LpgfgrkBWJqAch5MAypF/vUv7iC4+T34Lns/o4v531psALtHE2dFIgBX4Gyh6h/98S+do8mn/g1qlV+5LedCYv3tF8ZL3K9CFM924LoYRCLTfKYekYkkvrhEIjjrPjvxo7/lle/8HKZpIkviBe1Ie6nxQiSdF4IT4Bmecej8oqLbv+zY+eDXnfMLIdZLnH9+lfvsxcCltX7hUC5nibpcBN2NhOs2AVBKLeDxyfze216Jsr6eYz94gEibQEu0m2984aOIooisiGg1g2ytwEJlgKnxU9Q0mZH5OBs7ewn5/HjMdYxPiViUDBbVio6IV8rwjvffyvVXbKSlo5Vbb9jGEwf28bF//QZiXkMWZQIBF8VClXwhh82qEktm2Lq2mbHZJUpaGtVqx+6TUe12bA47LoeT4aM5pk8XSKdz6IaO1+Nnzbrr0LBhd7pwup1YFBnDMJgcn2bsTD+HDp5ifGaGqmgnWzS5YnMfQkWgqzXICtNKPBVjdW87MjIdm9ooGhUK6RJOi0yxWkPxQLDBSVdTGx//yFe5csttbF63jo1rV2ARBb711S+ytDTKu954FZm5Cbx2D7ohIssO3vm223E7VYZOjWK1CIT8doIelbnFDLdtuw7V4+bBHU9gCgbHjk8SrXOxrDPM3EKMa6+7mtnUJKu7l7N/5DgbN95Ig9LMe/7wLfzRq/8Ab+tNvOkt70U04PSOUURRwtfiolKtsBBbQq/UsFFAFxRswTpal4XRDSsr29rxenwEXUF8HiulXBmHzUquUCSxmMNqsRP01OO1+2kJBKmWS7gdLlasXE738gCDp3SOHZsnUUhiFpZQddi15xgHjhXw+zyosojH5UMURExJRJVVTFNiYHaKxVSccqnG4JFBpseHGJoaIeQLIikKhigi6QIejxVfoI6gz41uCjR46uhsb+F0fJZ8NU/JqnNk+gR5qchENYakCJgOmYnMJAlLAkmy0tXRx9HTp9l78jSFhRSd9igrGztJpvIsxpIU01Uidg8Usjz4wD5+eN9DPHh0P/v6h+nZ2IHN7uDg8X68YS+9Pb1cv34lNaWEkpF4evIoON0U01XcXoWg4SRTyyBVrKgZnUwpzfDILBPTUwzHRilPlpFyNWolSMdyyE6FVSvacDhlCgs1Nnf18vKbtnF0aJbrtm5ky/rNfP07/0nvym6CreuYTghkqqPInjL1TX6C9WGsksKuXUeQzDKDp6fYsXc/RmyaZf4wiUycsN/F2t5GVEnn2isvJ1MwWL2qnd27T6LpBiu7e7A7VWqIYAgsZjRyhSphh5twMIjLYcehyFgVK4hWNNGOVZFZ1tWLqriRDSvpeAG/O4Rp9zI+t0SpJLCQSFGoZJkaT7A4m6a/f4I6t4/WcDNxLcOOJ/ZS36DidVs5OTzOsSNH2X9wFK/Xybe/eQf7Tz9GqNVPvqjQ07uCxsZWTKuL2fQS2Vych3Ye4MSZEQ6fPCv4zRVL7Ds5xgNHdnNqbo5jEzHK1TLFmoRFq/GRj3yY0xMCM6U0//WDu7n69ldjs3oI17VTqW2gpWs94zNxZIv3WZ+dF7RQZHI28fRtfh/UKsT23kHUZ/uNxkrs/yzwv4tbnxeRaMsHwKKS2HcHqQOfPdui3u45W5x736dJ7f8MqYOfY2bXp0GU2HDLX+Db+Cfc/u0j5zw+39YP89q3fAzsnrPxPfFRZOlXLxO3zQKC8LP6URcF6fnzHcFFz887EvWfFq0WhbPbPi8GYes3oSlgp+/6lxG68Z8vtai/gHghks4LaRva/3QP/fx9/Xztn5+P+bcZ92/SyexCmt9LnB9eKl3wLq31CwtZtrJ53XV0dW4FUeTY3p185dt3c2y0n3/87Bf55He/wn8u7CPsaOCeHz7FPd+8l8WFecYGT6K6ZUrFGl57FIe1hqTnCfk8qPY2uluvoSonEVjA425FFE2WNRf57o+eopaXOTUe53Vv+xC1Wo13vv5VHNz9HaamZlhR78emWrHb7DhUBUWxYIpweGCRgM+JqQucPDSCINtIJo9RqZbZ/dTjOKQixVoOt70Jq2iluX0lrc1RxNIMlcwgxYU4Hpf9bDPf/CyVxDiDB59g+MhOdDFDU+8mDhyYobl5NVdu3sTw0Bif+te/olgqcdd9X8EpicgWmWDITs2qEWi243RbWbusi86WTto72lh72UbmUwU6GjyYFgGrX0IQBY4cPsShYwcRZRmtqnH1y25g34Ej7Nt7kMWpM1BOEQn4CXutTE9N8c+f/ToKAqmFMst6uvB7A9QFw9x971exqVb2HRunu6mTZD7IZatuxe5w8b73vI8f/vhxvvitz7Dv4F7u2TlEaa5CfKlAYjSDLMukhSSNDhe9fhdZvYJhmui6hUJeoVDJEMvMgmlisapUqwJORWVhNklmsYxNsNPgayKeTeFzqaCodLa109TsRTPS7D+4gKthAze//u3MxLMIRZmpySUyyQy6pqHaZMqlGnarDatioapVqWgVEETWrljJsvZuzowO4/d2EalrYtvK9XicHhAMVEHE7vGgWlSy2SSmKGGzKkxOTrMUm0NRFaLeEPOlJSxZ6AmGsBTcPPqjfrKlItPJBHrRoCHaQDoVI1TnR7DIJGMJDu0/wuTAMIGAC9liIV81OH5igKcOn2RsaYSDx06xce0KPvoXf0Qsl+Kuhx6gtbuV6WqMYyOnOH7iNEHdhzcs8/KV1+DFwOWU6ZSiFNQKEaWOYj5BBROjKpCsFqhUKljLFmx1EopiIRmPI0kCpWyBE6fGMYoWonV+hsfn6Gpr48CxY7StaCUU9vP2N/8x02mVJx+7D6+cwTSKyKZEZ7gZl93O6NA4xWyOoYEx9h48gCjZyWgqyUSRhnAjDpeX+bkxVElk575DrOhq4vs/eJzp5Cwum4uhkQEuW7ma4clxZNWG3+Ehl8/S3tFBnceNZFpQbHaqlTIOq4psdeN3B6kWlyhXC7T5o/hEJ7quoch22pvbEDQDahoOxU4hX8BuCxMK1bFyYw/edhsWO9isCgtzCRKpNJIkUSynEMQM6dwkh4cGkQWReTODoRX48l33su+pJ6lRZTg2y8RMgpJmUivVcNideK0CqqIQrHfR6A6yrrsLVbYTstnpqfdiSAL//olPsrLPwcY169h45VWYzl7e/Nob2bzhCnrXbWNkyEAzgxQqS8/67LyghaJjg7P4t34YDJ0d9/zD82q9LooCsb1ni1tnS7UXMMrnxmMDMTB0Ejv+8b+7LSqF/3WuwyqT2vPJs0W5BYH7P/P1c1aY2zDMs9vHKkVoX0tqxz88ZzdIYt/ZulGf2DFyLkJ84dE1eJGKGb8tBEH4mYsIzjpuXqwC0c+z88Mvg3yCt9x17sXbS/xyjp6ZekHHu5ASvF83kf6fgtG55KXgBPl5LoR18GLhQts6ea55KdzjxYJpiszEqhimwUc/8nd847vfRrXDsr6VLI+spr2ti1u3EWb/4gAAIABJREFUbGeg/wT58jSLZEjMTaH4QHXK+BudXLZhFaJkcM/37mZudhrZYqJTY8uqtUSjfahKBcU+z8lpG+2dy+ns3UDf+iuZOHOQf//C3/M3//QhHF6VXLFEsqJj9bhw260Uy0W8DhvFchUJgd6uboI+N/lUkTqXjUyqiOL0EGnuRlGczCamGZs5gNMZpGdZN6X8HENTA6QLJmVGqWk6mqZzeHAY3SpREYocPHmS/n1HkCsxbn3j66hra2Uh7yazkKGxaQ2P73iCerVGJBTFLBs8/MR+ZJeCgsIbrrseUxOIL6UZHj5GU0OY2978VhSbg4aOMPVeL6pF5eEf78CmOIjWt/Kya19OslAAdCZO70E0qizvaaO9LcT3frwDUwlQKVUZnhzi1OlJKvkydV4nrS1Rmr1BQm4RxSLTu3or6DViieNULbNEwn5KpQp7HjnBT/7rm2zoCjOiLWKxi9j9DgwJ2ldEGY4tsqScfS+tlsuYlQxT0wN0dHYyt5RB9fmp93ips/molHXEkkxDoJWAJ0gqOU9btB6/30dXayvd0RBarYzstrLrySEwREzT5KreDcgeFy2dzaxfvxpJFHlq+AwDkxOMzU4xk0qiCyYWWULTKgTdfkqVAkZNJ7YwQyAcxaIKVPUSgqkhyBqqAqrHgjtk5VR6hMnCAoOZIT7/k+9gly0cmjlDVdfYf2KI6VSGFb1h1m9uRaiaBFxesrqGJkgsX72ebL5ESFHZf3yYpYIGBoRCdmRJQpV1+uNjJIp5XLICTplXbb+GJw8cpVA18AXd9PefIZ5JUZNrRCMt1DfUEfU289T+vZQSRdyCg1IBzKkq+VwcRVKRaibJTAHVkEHTqVgMbFU7qWoWZ8hBSa9QyZdwiVYiITfpdIGckuXQ8ZOs6ukimchgdfqYTCQYGzlJ0F+P3RVCKihMTU4wPTuOKkigi1TzAmFfHStXdnPTxjVs7Gjjyi19+Bw6spRnKpbF0GvUdJPdhw5RHw4xs7iIYnfQ09vDyPQsPm+QXKFMqpjB6/exmFoklsnjcKoYpoHf58NmdzA3e4YTp45SKBVZ29HF9HScck0DQydXyiLJNhSHFVmq4PBIhJ0+gk4LuaxBqpZnbmqJxUSZSH0Yq9WPLGjYPV6wWjl56gzbNl9FXUMERZeJ+L2cGT7A77/hFVisdryeAAGvB6ulxoa2Rtx2J16bk+aVy8hV0mimhtXpYS6eQUVnoVhjMZfFFCUERWT/kae4cmUXr9y+hv37HmYhlmFh8RD1oQp9G67nja/sxmezP+uz84IWijANqJWZ3/MZVrc8uy3q18UiiyBKtGz7wM++99tOaq/sCP7iA7rGp+547y88JEsiqQOfZWHPZ0Cr4rviQy9YPIZh4tv2lwQ2v+eso+ng50jd/fbfaCxRFLj/O3/Pxz/06YvHaWH3nO8ILnpqukksW3nJiERwdq3P7/gXHvzy3TzQP3e+w3nJ81ISLn4Z51IseqGcIBeSEHeJ3z4vZhfRs3FprV8AmCYYNf7hYx/D0DLY3TK9K8o88B9P0D8xQ6i6jKdOHuLqq1aye8/TfOlTX0KX8kiiiCMi09rVSyZdxeFx89rrL0MxLBgalPIF8gXAiONx1xAFk5DTib8uSmtLL2dOPM2tN3fzrXt+iJYts3pFN2+86VrMWhWpWKRmGAgWO9WqAVqF1kiEpkiIzX293P4Hb2f89BiLs3FcYg4wkWw2HFiplnVi+TlEUcDjCqALKk5HFZfbh6FrKJKJoVVpaWiiu6GFnrY6GtvCeN0Kw8cfBTOJ1eli5babWbN2PXOTBzA1gya3h+/c+zA9vW10+Tp4xY3b2LP3OONnZpganWPnI/+Fze4ATA6cXCAo+LGYVvKZWWRPgJtufCX1zZ0UaiJOsUgqFkO1eulorScYCnL3A4/R3LoSh9NH1/LVPHX8OKpdYnphHLtbJehxky0tcf999+PzeMjmyjQ1uvH5FRxKgEKxTFtzlLvvewRVNpk5uRNHwEqkuw531EmoJYBLtHHDLZsYGZumWitxamCEgm7i9AVRBInOplZcYgXDbiBbDWyGl2iolXh6EbfbS1dnE32dnfh8CrK1StklYPM4KFdUbn7dW8nmMsxMTbCirYOw08nL1m45W3i7UEYSTIYWp5lcmkPSDdw2O5ph4PGEEJFYymYYHZskl8syOTlIIpeif7Gf44kB4sQpiGkWcjFcHomqUCJVzpAvZ5FF0A2NxkgdRtmgr6+TSrGMWNPp7G5Gl6r4/X4CXjfBOpmauUBLYyuZ+TJWRaIjEqB/dApTECjmk+QKBSqLOj0dLQQ3hHjtDVfz0FN7GFmaxW5VCPvdiBYTVZUQqiYD6XHue+RhZufn6FrZyZrVq5gYX2JyZATBLqFiw+t1UNBKyJg4fSqSqWBHpSKImBUZ0Q0+1YldVpEwSReLOMJ2jLhGMpXi8LHjHDkxz0JaZHBuF+98443MzE8R8NhRRTcHjhzm//7L1/FZLYRsfm65+nIU0crrtl1DOBql3Ggh1NZIsVRhNhbHpgrUhVpwWVU6Wls52L+fbWu7wTSxWfzE0kvYHG4URSZbrDC9uIAgGlhFmFiYxyJWCftktPISJiKLiSSlbJmnDu/l6MgAis2GIAq4rG4CXi9KpUwwYCc9nKWxtY6SWGDLtcswgWi0jsJSEdG0Isl2gs0hZMOkauniXbf/Ia+7/R18+K3v4tED+2i0+liYWeIP3vZ6xocOk0nESC4W0JBBdiMYAlu3riKZyPCWW19PpeanWqvicDtoW78Jf73I8t6VNC2LEM9VMUplRsf38a+f+yRHD+9jfHwYsSqzeOYb3LQ5z4nB0xSrxrM+Oi9wocgEd93ZzlovEMl9nwZg40cfe8HGfC5YFQlEicD2v/yZmPK7dx4GUeL29S2/9GdVi3TWXVQt4XvFp593LIWydlYgKuX4+Kf/lPie/93N6bmyteusEObf8oFfceb55Zm5t7X3nudILn4KFe1nXfBeSlgViRWvuIm3vPNTlGv6+Q7nJc8LmXxeKGLGL7r+r7rPcxH7C71V6KUmFFzi/H+WzhcXyrPkpY4J1AV8mEoGySbibLDw+KMLXH7FFeQSU+w5eoSFUYWJ9DzjI5M4GyxUqzoO1Up76GqaA5uYWgLRYmFOqCdvCKzqiBLwBs7WMZE0wKClrHJ4/GG2b7yak8fuYX5+iD2HDpBfKiL4VBwCzC4uUZIUipYaPpsdt8OJzeEgHPSSzCXQymkO9w+z88cPgmBFsVrIFQwi0RCmIePxBWhvaSBYb0GWLHgCTaxYvp6QJ4rbvxIQMCsLNLVFcNgl7t+xlyd3n+Tbdz/E5Mw0itXL+ESGUydOcHpgmPn5GA5F4et33s+/fem71Ac8eFwhIk0+EsUql61fhVmxMD+7xNXbrubksT1o6SQeOwgWmXCokY6WPvwBP4uFEpGGMG6njXB9kIawTG9HHZPzCR7ec5qG6EoUxYqmawhKjN+/6RpcTiu1mkTAq5CrJghHm1l3+dUYgoFhmii2IDaLSkeTk3+740MUcmm+dueH0LQyNVeZtmAb7V1hNvkbcBVBkSzM59MsX9ZDvpgily+i10xcPicL2QXKWgGLW+bUyBiS7CCVy6BaFTpburEKEo2tPtqXB3jyyDTHBkcZHBjhwNHTnOnvJ58vIEkyLpcbX99GupZdgcPdhM1uJRTwYpEDrGjoRJEVDg71c2Z0lGypRKlY4InDB1iMxwlIfnTTIOD2URBL1KoGjVY/1WqFol7DMHXOTM2iV01SiSR2WSEznmBpKsZsbAmvaSW5OMX99z7Ggz/eSblaoiXUSF3Ai8NpRzMglsritkj4VZGu1jZ6u1vo6eiAmkbAH8Lt9uJzB9nSu4biCYOH79/F1OgiUXsQuaCTzWlYHTaK2RrFShVJMulpbSfij7C2bTWnTw8T8Mp4G8OEfB6WhAKpRBav1Umk3ktXqBnVJiL7HUi1Cjm1gpRS6GxsRnWolHwmHpeNxUSSis3ArtixyCruQBSP0+Rt178ezRDYsuEy9hw8wOjcME11y1m+rpdsvsKyZa1sXLeCW66/HFlxYJUVlnui1HSRbLmEaJgUSyalcgqPP0yjP0ok1IrsaKRUNcnkC5SKVYq5HH63h1DAheJxspisIVgKeK0Gigzz6RJBtx2f1crg9CzZUg6tqhEK1KHa/UTqmjAFkVIpj9JkJ76YRzcVNLHGUjrJ2PwUFkFiaHwSh9NNLJ+lLGWoVVVyuRpRe4wkDmQB/vqjn+a9b/1ddvUfZXpxiVw2Q40qpiRw1TVbuWJ5F8NzIyyW59l7cop7f/AIX/ry57lx62rqQn5Wr1pHKpFiddMaUsV5BoZiBBvDIFh46JEjOGUJySyRzqVpjvjYuKqPqanj1NtdmM+uE13gQpEgknrsIy/skILAwp7PMPLAj85by/HUvk9DrYx/83vxbXoPD/77nSw9/Ylfa6uXLInMPP1pWBihUNF+o+t/Ztcovo1/QuOV74fmFaQOfo53X9FOrlR7QYpRL+69A3Ttoihsfeqzt53vEC5qTNPk5GwGj00+36GcF3Z+eDu3vOuN5EraxeOiexFyLoSH8y1m/M/aQ8+li9ILlZye621mF0vyfL7XwiUubi6JRecfQRA4OfY4qsuOzW+hktcwFZPRUj9XX7WRDVubue6GZqZPjiFbBWolifqVbpa19fHn734nVquViNtKsVRHPpEiuzTKF77+JSIRDxY1w8uveDmlcpFCwEJpIc++41+jqpWwWCVyFZ3b3nQNomqSk2XUkIDX7aYj3E6VKmKtSjKVwSqYSKJMPFnE43ZSqxnMzCZYt7yNhakD6KZMBQs1zY6oimgmnB7cSb5YwumKgq0BgB1P7SKej+H3WIib0Byqo7WhAavdx1Lewn2PHyKxNMKuJx5kYXKYilblP3c8TUO9B4dip1Yzqeo5Hn70JD/6zuMYsgePz8umjTcQblnLzOQ8p07sIZ0u0NrSR/eq9SRzeTLpOEIhxif+6WOoqkJVt1Kriviau5lN6rg9EeLxOU4d28OZE/sxcyJfufMRgo4Qde0uSpKdtWtuYNfeGb747//G7PReNq/rZWZ2kdaGjRwbGiCXLXHDDS9jci7F1qv6+M63nuDh/3icdjPElstfjWm1UkgWEJBQIwoOPUDYF2B2dhyxkEMURVSnyFw5hSwqtC4Ps2ZjDyvWNrBxayurt7Rw308O8JPHDhCOtpNKpUjE8xRzZQSxSJ17nrB9kmLyGDt372T/7l0cOTXIqm4nq5d3csPW7Vy15eUUcyZ62SRfKJLNFRiLTeFxKthkmbxm4HbYKZQqxOdTWJ0qU7k0hi4i6SKKaMFmV3DZVFRDIkgPZt6kkqnit6t4NZWZeQPVESSTMzDTJb7173fz9U/dQ5MvgmSRCARDLFayiJJAW3MdU/k5Dk8d59CJMeZjS6iKSrpc5NFde1DtKqpVYnZmhiolqiIUCzmSxQJW1YLdprIwn2A0tUAunkCWDaw+C9HGJlweGymjwspgG/lKgcRSkqWlIhPzczQ112MaRZweF17NjSQIDJYWyftNqAkk5BJOUaFOsXHg6HEEwaSqGZw+2s/OYwfZc+QEjpDMn777HZiazMrWdv7q93+Paj6HIinMzi9SLJdxOhSCIT8WSWYpngRRQFUsuGwWrBYLDnTi6Xn6ulqYmpqhWquiUqNULhONNDA9N4WpVdnQFKXJbyGT06iKQRYykM0VmU7kyRkKfm8dNUMlUt9OfTBMd9hFd72D1jorfaE67JpMW2MjvS1upsbmsORF2m3N2DQLZt4kaSwi+yFTyKIVa1x1xWrWb7+NjvYW7vzeQxhimWJJIpEvoHosOMNOehqa6Ig0sDg3SyIP7Y3NtLb3gOyju28DU/N5vn/PPXisIhGnC7OWw++1YLPZ2dTdjWbWqMlOPN4QExMZgoEgqbkJ9FqBmUya/pExEMHnf/bdNRd0drdmWeM5GVf9qUMpsOX9pPZ/5pxc41eR2vdpNN34jVprO1QZx5qtNF75AZL77/i1t/uYpol/+19BKQeCwMzOT+Gw/v8lYLVI1DQD5OfXyUmRRZBkgudxfn8Vz4hYXrvlnF7nt10s/XxglaUX/T0+G4IgcNdb1mEYJqZ59r8PN31yJ3f+4WWsaHS/6Lq+XYisXd58Tsc/n22ufz7BfK4xpA5+7nklpud6O9/zje8SFx8vZcHt0no/v+RLafLFAp0rO5kYH0GvaMiqhWZPiJHMELlDJgNuG+OzMVSXCKbBxubV9PS08o3v3YfH62MhZcMrQcCWYPWalTzwmM5Xv/F9lq9ZzpM7fkBXl4XJ6QyVQoWuxnZ0GYbHx1gaKfK9bz7BO/74VXi6XDz0yB6cko5F9aLXLCwV0thtDobm4lgVGZfTjV4p4XHY6AuGODw6TcirMNh/mK6uVYSbQiRGdmDzOAl4VE4P/oS2hnYsgs4T+/eQy0mI2BjL2LGpadoa2tBNqMwuoJeWcNktFOZEmusbSMTHWd7RwOuu+11O7H2M00NnMDSTwfEaW7bdxMCpo+RNiRVrNzM1NsrA8AnyqSLz8znau1czND6BN5nmsjWNJOIFTLOIZIOJyTFaWjtoaGnjx48+RSY7x5bNqyi0hHhkxzTVkslSMkGdzUpbyE9N8GGaGh/9+Cfxh5pIpZKc7B/C7niQgG85qUyOaLSBsQWd1ds3ErJq7N7ZT2v7arKpJRbSJf7xs3dw3fW3sLB4mHJFpyJouFocTP7kFC63A6MepEoZOeignNFo6mnD5XcR8QfZveMAW9atZXJmDtnQGJteIhLSaG2tp1TNYwgymaUiHreHmqbjtLlJj/QzNDTE+jXL2Hs0zboVHvbtfxJNqdAUaSDsWku6VKCkLXFmYZTkQpxIuI7ebi+pxUU0zaC+rp5Krkqd30uBGq3uMJNSnJyeJ50r4rbLJGKTNEdbCQZViopJyaVzxRXbePU1G/nLj9+Brkn833/6G6qah71PPU7n5jB1bg+iJiAFTLK5IpMDcRwVH15PjYDfTz61RDTchCzVODM8RU0r4Q+6kGoydq+N+YUETeEQhkVjYTaJbKhYHDVOjkyS157E6XMwnYkhyzL1apjp5BQiKordhq5oVJM1xidmUasSnoiDSrmG1S+SLulIOtj9doScjqHA/HyalqiPWLVIpVzhVTeu5/sPPYlWLGJVnAz2j9HX0UyxnCVfLPDwngH+9A9eRSFfRRUl5hcX8flcKHaVtoCTfYcdrF69HEmUOHDkMKJN5dTkKA51EYfDRzpXYj67hCiqnBk5TUe4jlghh44PrVakWshTNkqgupBFK6KoEnQHqZVqzCZm8Tm95PISnZf1se/QYdpawvhcQUqlCqZkYXBikZamDmRFxuWQefLkaSRDwIUPiyxjUVVipTiPjCZIP7CHr9/1bQyjSt+GZaimBUmUsKhWtm3eTjal47dbkMp5SlqBildhvhinydVHXSjEzP5HsThrNNctsPOYyYF9+xnoH2b75VfhVR2ELEGms2fIZJIoosieQydoawqw8/BJlvU1UyzkYe0mVEV51mfnBe0oOpcplnPtlf+/Bfx54vm01p7+8hvANPFf9w+/1vlVzcC/6ew2s77Xvpbk/jv+m0gEZwWeFyrfT+79FBg66/720RdmwBeYsdjZ4uHnWuB4sQsogiDQEXKg6b/Et/gixzRNbv3KfgJXfJC+Gz7M5CP3s/22vyGw5f34bvyX8+ZcvMTz50JJbJ9PHM81Of1tF6u+lDy/dLj0u/7vDsHfdqfClzIi4JAVGn021q5YzrLuZjasXc7GNasJ2l1kqjkGBmap5Gv4nB5ec+21bNq4CquqsmlNmE3r26iPRnj04Yc5MzqN17cOQbTissmYNYHlnTZa6ruoaDU8Ph8FI0cxWcRutOD1NxKM9nLkwGmGD5whsZBgZjpF/+A42XwR9AqFch63y4HHaccum2RLGoH6RiYSJYwylMoqbqeH0dGD3H/PFylZLER9IWoFgzq/l4MnjhBbmEWVTERRZHAwjeqM8urr3si1r34VLm8ZQShQHwlQKetMp+aQLDpNPUH+4J1/hEWWSKYrKIqK3+OirbUPf8DH5q3bOXFoF8dPnWIslmYulkHEpHvVGhAkonU+isUC88kqCCZ2xYGkSnznW3fitKmMj40zdPJpNqxbR2x2glJynkhbhL5lTfS2L6O1pZ3G9nqMgEAqm6ar7zLyhSKhcBOzM3Nomo7TXqRULFPvWU3UVqLOZYIi09V3NY1t3TjcPnbsPczaDds5cGgXqi2MoBlYJZmSVqW1rQFZlQg6FcSaSCyTx+3zIDpzLO/oxmpRGJtIkc7EmZwbp7k1RNAr0N7lJNrkJBr10d3RQqguwOJknJnRRep8UcrFGr0tDTREGnHaJLKJOB6Pi1i2iEaBw/v38sPvfY/Wuh6uWbYJR8jPSP8MT+89REtjF4ZhkIgn0QoVSpUqYVsAQ1Dw48GT89Fmr8ct+smVqyzl41iCIlVdZ2B0kngiy/GhKf7krTfh0Rz87T98gs9+9g5ae4LYDQWvxcbwyBCSITMxOcnUSIxCrUJfZzeZxBI+bxC9kmU+kaKuLkRLWyORUJRSpkKxWCQSDGDoBplcCZfHjlyuUBU0TLuIZimyflU3XsmFXDOYmB9Hz8u47DYK2ThTY+PotRqyoRBtCFHIFkg4cmQrOppaxh/w0qLUowat5I0KnoiT2aU0L9+wCVW1UDBN/vRtb+bP/vid5NJprIpAQ32AJ3bt5uTpIRbnZvnJk4fQtTLukAO3x8Wd//kQifgc//Kl7zMZS5Kt6HT1NAMCbrWKYIgkcjmOHj9KrpzC63TRGvRTKSeZScVZ3d1GtVrF6XQS8rvwue34nALugB/JamVqfpr6gAWnTaVkgj9UTzpfYOPa9XhtLgbO9JNNpyiWK6xZtZ6BiQWKJYPpWJLupg7CngY8DidOq5VcoQCGhl8Msv3K1Xz1C59k/NQJ3nDjW/C6V3HNutfjFhqZnipQqRpUdRUx0Exdax8Bw4NiWDg29wBOJYPV7Sbkc7N6859is3t52Q03sxjPcs9DP+DuHz3IzGKcQiZNPl8imc3hcfs4PbaIYRqMjc4hGgI/uO9HZHP5Z312XtCOonPJ9JffgG/T0/i2/zWppz5+vsN5zjyzhS5y+fv46KOD/N31Pb/wvFi2Qs81HwTAt/lqxj73ml8y5tmuVWe30Dw/gUMQBAg0Mf7QffCx65/XWOeCbX/xX+f8Gs9sRXqxi0Vum4XB+Rwrml56hcF9r/8ajB89++GRFf76X97H+69sp6abRF9zB8Qnz9YBEwSW9n4GWbqgtflLPAvn01X0fHjGxfDrxH8+OlI9l/gucYmLmWf7fL3UugieL0RBoKGungbCTC0uIAf8ZMpldEPn1J4ldEFAdoFRlHjXO24nnYmDIPL4T/ZhcUUZH5tHJs3n//ED3P3ICNlamddd38epk4P8ePdjXLZtO6WxNFabgWGHubkS+bREyN+EQJx0cpHxwQSFkITbFibo0yiXq5iiiC7Y0Ks6uWqWWLVKNBxFtVjIJZcwENEFg2K+SHu3j6VkmdbGFfS1tNMSCvBP372XxMIiNpuK3W7n6pdvJhnP89d/+T7e8q438v433MOXHv08os2O1y4zP7tEpVLB4ZUhCLdevpWp03Fmxk5y7c23YNSKDA3vZnjwaTKjBktVlfpwmJmpCWwOH6JRJVXMIVJmZmaC5oCV+oYumpucFAsxwv46rr3uGpZ1beJ7P/g2HXWttEYbGervR6pWkd1eeuujnBweQ/SpWLBwamGRa7dt4PjxedZv6sPldlPO52lqLTA5vsDevYdJZ+xs3XoVVtWFy62SL1bJCwPU2a+iu6+PgEvg6MlH2LTmRkZP7qV1QxMzsRhtLc1k83nc9holxURw68SSRS5fvZZYLsbE3Dxuu4NX3bqF4eEB1qyLkkzplDUPLocNLCKiILKYiNGzIorV6sAjeBA1yBUiCKUkBwcm6Ons5P+xd95hklVl/v/cUDnnqq7Ouacn5xkmEQdQARVQ2VUBRX4GVFxdXXdXV10ToCiwmFDAjBKXPDDAJCbnmZ7pNJ1DVXflnO79/THgsq4oEpuBz/PUU923TtV577l1z+nz7Tf09QzSPTGEXi0QG4ljCnTSJHmYN28eGzY+zOraVrZExpmekmma3cyR4wex6GxkokXcRhPZSpbJ1CSpTA6jXo9T9jIVG0FRy1hNbnoP5Vh1WgMD+8cZOLKF3kPPoDOZ+ebXbuDOx/9AtdPDie4xxseGScViTCXS7LAeor6qAZ/FicOs50j3cdRKmXe8Yw1TsSRdPcMMDg7itPpJJqLYjXrKUyr6WpmR0XHaG+uJZdNM21JoJBPOGgMiOnae6CIsRTFojBgcFkSlxGj/GOlcFrvVRjQdw2w1MRSaQLKaMKtGOltrmZ6IgVUmUYpj1Zqos7lIT2YZzfbzxw0PMadtKZEpN80eJ7JGx5e/8FG279yLYJD493/6FF/8+vW0BpvZvOMIczsakTN5bv3lH/j8xz+Molb4+GV+qqv93PfQk2zeFEdn0hFOJBkdC1Hls/Pla6/i0J5D+DxGFCq4JmX6J2JMJ5OYJJWhyXGcVg+xWJiKZKGhzkdPXz8Ouwt0LoqVCbRqjlisC7WyGp2xwkBvhOOTWUzZAeoD9fT2jJFJx6n1t5OLxAh6a9gn76fK6EWrkRgLRRBVhYwmRjhZy9jBPSydu4SsKvLss49CMcOclhqUUop0skB9SxWLVq9hX1cfmbJEncFNJaFwrDdEc0cVEzk7PYM95AtF1i1bybzONg4f7sUci7E5up98Louz3QkCZKcz6LRa8tkSsiSiEfW4PVaGB468+Nz5Os7TM45v3HgtZBNv2twiOo3Euz/3UX7wrzf/RY8Ox7t/dFIkkmSmdtz0f0SiPz9vQRBekZfTnxN55J8BeP9yAWIBAAAgAElEQVQde16Vz3s1KfQ+t7l/jXiriERwspqg3aR9S3kVRdNFHEuvOSkSGSxEdtxEdNsN/NPaJmRJxKCViD10LbEdP6DriRtAlPAs/zT1H7/7jTb9bf5O3uybt5eSH+WNLFv+Zh/ft3lpvFWv89+qFvjCY297GL2GCBCJT6Oi4LV5sJltmCUtFlEincpTSpcop0FvF3lk65NIgkw2kiKdKqA1aKj26zln6XzufmaACy94FzabnZ37j2F2mcilUgTcZhSlQlOwk3KlADotdZ2zSBYOY7E40Omr6Qw2AgoWWcSktxDO5BGQ0Wu1mPUiolBBRGEiHEJURVLJHHa9BrPZyuLOVgqKDrulnkg0zeYde7j7wWe4/N0r+cxHLuBjHzgbjVFPX1+OcrHIz3/+YxBEZL0XVS4zOTaKu82GTq/FZLaiMRrwOVw8svlZGjuqSIVCrF6+AFFnwetspZjNUzYZMFsKWPQazlizlvraOibCEcrlEhufeZpgwIfZ4eTRR+5GZwrQUFWHZPKycO5Z3HLLdziwaz/5YglBo8dqNqG1WDAbTICWOe2ttFVX4XCYWLewjXQqTedcB48+8jP0OgFnVRiDzkB1nYvtW7vo7z+GKIk01i9nKhwnX6nQ3thCZ5MPVZGJpATmtc9jKLyTttWd2AQD1U4vbq0Ji83JnNlzSPUUUMZlOtsb0Gj1KEWBsqIyODpBpphj1WmtGAQDen2J09f4sLjtyDoRl13P0gVzcDklaqqq8Hl8iEYdeoNKqqDgNBkplkqoSgG3TY/WZKSqyYdFLnDZuUtpa1tI8eB2UpkpbA49NdVeNLkULrsVSW+kqSrInI56qjw1VFU14vYGWTl3NmldFK2sJ1/SUqrA8OBx7rr7GRJTk7Q21LFy/gK6ent4cMOvOG/1WZz3nkW0+n1oRRG0LpoaOjEazMh6I2aLnY6ORt67/gw+8YkPEEolkIwKtV43Xp+Xwb4utLKNiakJctksqXAercZMd88gVq2JxXPakCIlZFWgbBZxa53o4jL5dA5Bm0GUJCpKmZqAD6PRgCxoKMg5SnoJqySjNesYGJzGZXeBKlFWwGty02D3UR10kFNy6Ioii1sCiLJI14kxSvkS4XACn8NK1+GjmA162pvqMDusWC12bDYrFouFFfNm43ZaiUUioKpMhqI8e+A4ewYGeOCx7fT1j7Js8Vzmz57LE5u2EIpFqG1sJRxOIWkkRLHIoe5uook8gqDHaTfjsbmY12wiNBGmtiqAVqMhFhun2t+IVtaz7+gAU5OjdB/qpXdimvoaH6GxKIlIGp1WwGVxk85OEU0WiGVTGHMa7JKNcCSFy26itr4as8VEsF7i1ttvIF4ss2v3LkqFFGaLhp7jw/RMhJkzt4WFK5dweOcmwt37IDlFMTxNOqWlraOZXKLIwEgfoZEUGtmIQI6BE+McPLyD+3dvoZgR0AVMrKhfxpnz2zEY9eh8OhBVXDYHE9NhxsZHKBRKLzp1vqWFok+d1gjM/Apdf41ffGA+SDKe5Z/+07FdJ6In/9gYPcqxJ24gtuMHf9GTQRCEvyiSvVrihigKHHrsOh7/rztmXvhNqQDGF/eAeaXioaq+NUSi5wnY9bzzR9vfFAnMXwmKouI4/Ss0nf450JmI7rqZ2OZvI4oCgiD8xWsesOuJ7fgBoe03kdi7CcfSa8gV366S9mbjzbyBezGx6NUqef9Kman5W2aiTW923ipj+vfeW8+3eaGX3VtlrF4PpqfiFMolzDoDOoOAy2Ji5ESIr3/9Nxj9QBn0Bg3+zhraq+vQiCJur4VyWWH06BGWN3tYcvo61i50Uc5l8XkcLF93Eb+75yHsLgej/cNk8yn05iAdbbPIZCeIpY8jG50k5H4+/OFzERvbuO0nt+LwG5DNNpbMmQeiBlGSicYSFCoKVT4/TX4LiBXsbjNj4UmcRgO9I+M02B3EojFioSkEVWVkPIyEhZVL57Fs4TwWLFpIpVyhWCwi6gQuueBd/PGPP0RJKeh1enw5Gw6TBbseZtXXcGx0GFvDOjZu7KJ+0Qoe/O9f8cD9D/H4M9uZ19oEipZ5HetonL2aTEUknp3EpI5hN5R53zvWsXP3DkRbCxaHi//8xlcpaKuQZBODvZv46OUXYXBqOdK9g+GRAQx6A6JYQS3nsZgN9AwME8ukEQWFZ7btJTQR5uj+XhzmKmKhfQSrm5BNevZs3sfcs2Zz2jkdaHUVQqEpZjWuRi4YaatdhUY24DYlmBw9yMI5tZikNi4/9x8Z6h1Er5M4dKCbNq8XyhW0ThMr1s+hyukmnowhyzoK5QKzm5uxac0M9IPe6qOu2oskmzFUFGQxh9ni4sRwgnzFTzqTo1AooBUlVL2EpqxgcTgJ+L1Ec3EMgpmFJgfemIrVbCSbT7Bn+0YGQlOUIgWWdrZCwcChI6OYdQZMosB0ZBotEpVKEb0kkEzFmUxmMOtMeL3NgJ5SJkqhmCMZjzGnvZk93T1o/Y2csWwJtZ6lPP3sVu746R+IT08xmVSRRBGtJFHtDaJRCpxz9nyMZgNFbYnu/l7MOg25TImCroJc0tPaNI/x0BD+4Bzaa73Ep6JEx8KUshWmJiOEesfw1ttxWW2cP/t0tDqZdCSFCQ26oki5JNLe0YbdasPrdeL12uk9OkjP3n4avEFqZT9mp45oKYNNY2aRr5XlLU3s6emiMejDqbeioHDPw5s4a4GXruEyJYpkslnGp2NMhaf4yk2387EPvZ+GGjsDI93kiwX27dvPxp37+MhnvsbXb/w523bu5Npvf5PJ8CildIyA34Hf42L18qWMhCKMhlJMxYoMD/VT29jAmjWrKBfKOK1uBsPjlJUyvWNh4tk0YtmCTV+gzqPBJmZQSzl0SgRRFrBa3Ty0eS/HhyepKAqZrEhdbQvpTJ4qfz0WgwGxIBF0O/BqRLx6Mye6Rlg2dxZnL1tCJl1hVu0KdKYgH/nkF5keHqDrwBa6u7t44qmtnHnOXPSqFrPByEP3Psz9W54hXsySSI4zOn6Q+W11GGUNqrWZK9Yvx+W1Y3cnQbDS29PDdHgSg0Wiksszu72ZQFDP1JgGMSOgt2k5c9VC4lKRqtYAcXJIfyXa4S0tFAHQsAAqL6962EwhtPX7IAh0fvERLv75Lta/7ysgCER33Yzfrv+r732txYwalxE4mTh8pnHJxy950dde6bj8uVzyZvVae6lIosB33tnJlt7pN9qU14yKop4MI0tHefb+bxHb8p2/63uilUWiO28CnYmq0z6DY8XnKJTeFoze5vXhz8WimSAQ/Tlvb4xPbd4q1b9e6b31tpfRq099QxMlQWIgNEYkEoeKyCOP7UBVoTgtoDPKuFpMXHLaSlqra7GbjWx8aju5TJJ8PonstmPQFDGbrUyHn0VEJlDlRhF9ZOMhDuw/RLqoUinH0UsSFrMdg87Oe8/5By4//0pGJrtJFLr52s/+jRUL5tHW6CabK2LUqmgMBmqbmrBZXIh6HUlVg1GvYXQ0gsPlI49Ea9DK0RODaDUaLCYHOlFLQ42Tw+Npnt7Vy5OH9qGnSCadAhT0ggbyRfKpNKpJwNVQjcamx2uxkMqUiGbgjNUfor6mhhtv/Qm3/+xm4nk7EmlsNhtLVp2Bx16FTmdGlCQafQYWNjdgMTm456lH2HM8yrkXXI4sy3zwiqsx6GVUVSGTTlJR8ixePMgF69ZjlC0ogkAyEcVlc6KRoXtgEASJ8HSE7qFxOlsXEktWEPQSDY3VRFMlLJLMT298kG27uol2j+Oxu4mketFqteRKAvPnraZUzDJ46FF+98e7sdtMpJNlPrlmLqoo0D8UZdOmbYRCcUZHQxSKZTpampiOxvFbnBgNBvLZPJVsnulQlFghh6ARMFtKmCwWTvQX+c393ahlB8mcjNVgxWmwkkwnqVRKZNN5Bo4Po+i0VFSF9qZaRtMZwhOTDGZ09FbiRGO9qIrM6EAPXp3Mj+56mO/ftImxkUF2h5/FKImo8TCT8TiH+gYZHBshnJjm7NVLONZ1hGg0TT42gkFvQG+wsf7dp3P+u9ZSymuosvvZseUZ1EKF2395CzIC2Vyeu558iuj0KCUli6BmCU9N0NToR5BENEaJdC6DzWIlOhWhUsnRXhvkwvMW4HO7CVY3Y9AZSWUyDI8PUykUKRaKRMJxxoaSVGm9vHfVeo70H2Q6E6Og5mhtaUFnstMeDOKymfB43VhtRuLxDCgCVU4bQ2MhMqUM2ekKSrREq93Lr377e/71G98jOTnFtp176JscR5HKXHHZeu5+4H60Og0PbR2jptpDOJRAECS05QQHuvs5bcUCFna2cPXn/4Nbb/8jSqlAe0M9wao6LGY7H7voIorlMu9Yexprly6iu2+ATVt3cf7alaxavIK29jYWLVjF8qWLyaWTVPvcaDUmVAVmN9cyNTWFRify+M7d5IslegZDjMcimHQSoWQZj01PU20N2WKCkXAUv83BmvnV6ASJbD5DV9dBqms9NLc34bJbiSkZZL1Ijc/DQGicPd39CHGZgMtPMRzGZdPS39+Fz+OgsWUul61dze/ufhLEElt2JUnn4hw+2Ee2kEQtKbidDg4d38+B3U9Q54bh6SIWk4nT5l7Ihm33YrTJeBuc6EwSkiSgqBIHjilcsn4J1155Kdec/U527D+CmCqTGE6isxiQDdKLzp3CK9nACoJgB24DZnNyb3wl0A3cBdQDg8ClqqrGhJM7qh8C5wNZ4HJVVff9tc9ftGixum3nax+25Fh6DWde/UHu/sjS17yv14L/Vc0MwOIivOGraOSZoQOWKwqe5Z9mePONWAyvbZWxl4KqqjiXXsP4th9i0L74zfFyURQVQfgfsalUVpBE4ZSvgKWqKjv6o8wOWjHr5VPKo8qx9l8hm+Ciaz/C7ZcteMWfp6oqa67bxJF77gFg8JnvY3sZFfgMGmGvqqqLX7FBryGnzDpxiuTRmcn5UGbaGM/ksXozM9Ou86vFaxXC+Uo/9+11Alpa2tRbf3Yb+/b8lnSpyHXfuAONTkZQVcwBHVpFz3tOP5tEMcYTT+zCajBg0Oto9tcTz01jlQwYgy46OlvJpvP8+rf3sviMi+ja+yQWjZ5MRcDhdDO7cwHLl8yjrErc8+Q92PVZtCYzQlIgJSQRcwoFsUDAFiSZjjJ+IsnuQ4eoq61jajpMQ00NiVSKhroAyalpzAYNHW0NbNi8F5NOh81hQymKZIUSk5MhFixqIpVUWLNyNuFoGkEooFRUEsUi4yNRHG4zJr0eg8HIHb94AKvNSjqV5pqrLiLQeS6pdJQ6f4Bnnr6TsSGVclHlUNdhVq06k3VrV+B0WPC6jNz6Xz9GLeRYOK+DsZILQZRwOuxUygU0kgapkufJx+6mu3eIYrnE1Z+4mBNDIfqODKEVFPR6mVxWZVZTNaqgQSNpGQoN090/RENDE401dgbiEWpqXBjNdtaf9XGcVhNjoWk++4mL+cRnr0IvSfT1Z7DaA5j1Mju3/Z4DvUPUO6uo9gfZsv8YQrlAIplGr5ex2fT89NZbueSDl1Pf7mfF0gWUKmUiEwma2quYCIcRFYmJoTjzFrdhMxoplxSSiSQ6A+zZegyj0czytXM53ttPc1MD8UwSvWoknVDYuXsvVcEmFq9Yxdqls7nzNz9FLAr4/E5K1tm0+5zki2FCOzYw3neMyeYgBw/0UC5pKBWLONHj9wZY0NFKQc7R0NRAOhvn6R17iGRyNNUEKWdt1PstCJkpKjY9o2MiBkECipQLoBFyTCZiRCbDiFoNBr0eQdRQzGTQGPUsn99JdUctNr2O/v4eylQIR2IsXbgck9VIIVOgUipxcN9xHt2yifnN7cRzRRoDVZgcEtFkjrGJGFdeeibjo0nGY2M0NDczFY7hdJnY13cYh+wGUWQwP4mzZKYiSBSTKVKxBBmlRCgUx6gz8B/XfogvfedmorEEkihSqUClUkEUT+6XNFqRgEdPPFXhsve8h9GEnga/jo4GH//96GO0LZzFg394kk9c9UGqfDY+/bmvY/ZWY9BIRMKTLJ6/hMWz6zBbzEwlpsglUpisNgqCyvf/69f85uYbMJsNiFIZg8FMNptn/8FDPPXUJlRBJVUx0XPiCHPq26ivc9A/kkUWspg0elxOHblcGb1O5sR4hM6WRiZHRhmYCKOz+HC4PGiKcaqDtWw7dJRKMcuyxYsITY4jSSoTU1HamuuQNQZWnHEBXd29XPSOFXz/hz9FI6lkC1p6errQywIBr5fpqUmMosCiFcvZcWAfkUSE+mAz4elRauq9qBYZcrB07gos1mpcVpW+4TiFXI6Wh//I3pXLmNdex8ETR0kUijQFFnN06AgXLOjkn791M6Kq4PMHqK6pRqut8NQTu8jlCn9x0/ZKlYQfAo+pqtoOzAOOAV8CNqqq2gJsfO53gPOAluceHwN+9Ar7ftWoOesdbPzJr95oM14WiqLiXP3FkyKR1gCNC8BgxXvxjBnek2FvejO1az/3RpsCnAwLA9BrXn0hTVVVKsrJh6Ko5IsVCmUF5RT3KIKTE/2SBgfn/mDrKROCpqoqjpX/BNkEw5tvfFVEIjg5Vlu+uI7YrptBa6B+7bU4ll6D49zvzrwwzVfOKbFOwJvbE+LPPRNm6rnMNLtORUFjJjDTrvMr5bXM8/UW8TB6TdcJrVaDyahlKpHC7bAhakUEjYqqCJgMWubPaySTmGDjhh0UCjlEScXqcDKWmWY0kmIsn+J43yDd3b18+8Zf0FhrJ3xsJ/mMQjSVJZ2IopdVDAYtA6OTHO/ZTSE3TgWVSjyL0WyiuXohnqqFBO0exkeHefiBHfSORXF4guQzGQLeKow6AY/TQyGexKI14PZ42Ns1gdvhxWh14LSYMJh1SIKGar+X0Pg0FVXh4ME+VKWMpOrR2izs2trFgaN9FHJZtBYn0ZyfeUvOZvai9YiygamEhnv/8FO2bPktt/7XNzDpDDicZcITk2QyaTxuK08+/RSSUMLndhLweMgUK+SVMs7iJBaTgWI+w9TkJLbSKMnYAQ739JPNF1AFSBULJJIpmhtrELUwFUkS9Fg52j9MIZ9nOhEBRUNDVYBCNs1wbJKFSzqY3dCCTevEaTVhMuoRBBGbJUgmUqLvxAgD/ROoSoVYMkfGpDB/RScdLbV0NnupCjYg6S2ced770Zg0/Oe3bmDDnb/A32GlkM1jMckYJBWLU0Yv6XBbnXisNo739BAdDfGDG39PdjrNicF+rHo7HR3LMJut/O6Wu9HtH+C737yTyf4xtBKkczFy+RLnnb0WSSMxNDhMUQc6i5vpdJx0Isl4qoQWUBCxur0M9Y0j6cyoFNAb9OS0IrlcgYK+jM3rYeveQ9x1zxM01QQZ6ppAyUmkkmmO9IXYdqCfZ58dJBqNYHfoGBrow2LVcrSvD4MsUlXfjEajo9YXwOevRdIZWNrWgsVpJJsrMDI1TU6rwWa10NrYRIkKmWyB8WgU2ajB7tJhMZmRZB1ajZbQdBShAssXzeLYsaNc+5Xvc/1Pf86Sjrl01FTT0hDE5/ThM/ow2MyES9MYizqKUoViOkMmUyCRzROZSlAp5UEt8OmvXk9zrZfGmgB1dWZAQVVAqQiUS5BNlxkP57AaNfzsl3exosNKz3CGSCzBhe+4gEQmzzvWn84vfnMfQ8MTzGlbQD4TIx5PUh2oo9rjwGp1kC+p9PQMc+jYAH09wyRCSeZ0zuJobw+jo8Pcff8mpqejJ8PaQgV0BonRWBFRLtHWOAvZKNM3OEo6NoYsCoxGJ+kfSRKKRZiO5miscjIZGqc/GidWLBDPxImHR2it9nKovxe/y0mqmCccCzOZyDEZSVIqFBiejLD27LMZnwxzzpkLueuOezBrDPhq9LirK5RLRWSNiXRepb2xgWBLB6FIhFJRoLW5ih07d+JxODBrfEglDeFwinzJRCye5Nlt2zBp4lhNWobe/Q+4Ax2Yfa1UBU9jdtNK3F4zTmeFP+5+jJJSpFAqYDJKqMY0FZ2I9FecJl72TlkQBCuwBvg5gKqqRVVV48CFwJ3PNbsTuOi5ny8EfqmeZAdgFwQh8HL7fzU59K1zQVX5w4GRN9qUl4yiqDhWfA7X8k9DpUzfU98jtu16Ynd9BIMvAOPHeep4+A21UVXVP4VcxbZ8BwDHaV94I00CoGssCbw6YXfPC0NPd4dZ+vUncV56G/O+/Bj9oQzx7MnkYAat9KolCJ/pyJLII59ZxervPPOmFjxUVeWdP96Oc+k1oNET233La+YNF9t6HdFdN9O78QaIjeNadg2ONf9ySohtp9I68WYVDP5SrpSZGgI0U+16m1eXU+06v15hnKeqYPR6rBNKpcTwiX4mJ0P84id3E3Q40Qk6amuDUDJBtsJIOI7NaaOqupZKReXA0aPsP3yMslrEX2XH67Zy74NPoCpltu7uRxHB5TCi0WpobGgEwYBQyDK7zYbXWcOK5nm4dAFi00lyFZmHHt9KOTfJ03uHOdSTwOGvRhAUvIFW7MFOEpkkZruNXDaLxeEnj0pX/yjVbhGjXiSVzGC1eUgXS2RzRdx6CblkhFKeipzn4JEeeicOk0nmmLOyg/d94HwEnY7ew1309x3AbLKg0+q4+w/3s2Llcmo8JmYFWwjYbNz2i8d56OFd9A31oFYKjEe7CAaN9PYMkEqlmDVvEWetXYTL7KRUyUGlwC9//X1+/Ysf87Xv/5TfPfYE/lluNGaRcqGCkC/RVO+lKKdZPGcOPo+DyViWcqmAKkqsX7eAhuo6UEEjadHIAQqFHJFMHpUEleGD3PXQz2iurWLx0rXs3T/K8WMJ2ufZ2fHsNkQRzlp6OS2WAPc+tg1/x+msXLGac86/hEwqST5Z5pprrmVD/BiFaZVcukA0midfbOK+323jxu/dxW0/eoBMvMSctnn0j2mZM38du4+nSaaD5DNJfvXb3yAbyjia53HUEOCf/ulfiKd0DEXC5NMqJo0eh8tFS62ZJ5/aRtDoo0QRncaIJGtJptJY3E4SuSLe2jYUrY3oaIj69g6USp5MKsnY+DA5Oc/B6CDFQpqaWbUkKhXWnHE6Xl8LqlpBFIrYnA4KyTCGUpxnd+wiWywQz9ipC9bhcXgJ2q2sW72EOr+FXGKSGq8XQ7WV+pY6jLKE0WCg3l2L21WFRm9BK0gMD4eIJKNEoknOOessPnXlxVQHvUyHp5mKxdi9v5f7H9+K0+NGkmU++5FLOHD8OIlYkqDHSbXfQZ2/iv6BQVpcjbhtNtSCSklTwey0oLcY6Gj34fTY+PZXPs/l77+If/zApZx/xko8Zg9tbR40Gp77x7qCqgrksxUGR9PIGhG1mGdes5Oth6K4bTravLVMF7MsWTabH915Hx/44HpEUYuCgtniZPacFhA12O0mLrv0Qi677N1U1XlZs2oJV/3jRXzzpp/QPzyGw26hXClTzGdZf9YiynKQD1/yTs5ctJir//E9FEsqkViGzuY6ook0+WyJTDaFRtBRqJRJZCsk0wr5fJlZAT+TU+OkS0Xu2riFhbNqiSUi6DVG0hmV5vogFk+Qj1/zaeYtOxuLzUNi/DjPPHI/dZ12PA16xhMpVA0sWLCYVDbJ/Noa3NUB9hzYRSicZH5rE3MWXcD8pWeTVb30DIfYsmE7q2Y3kslmSeWPcbini41btnCkawsVpUTAa6e3e4DodJRcVkVTKWLSmRnom0CrE5G1Mjkxz0j/JGabgEbzGghFQCMwBdwuCMJ+QRBuEwTBBPhUVZ14brKfALzPtQ8CL1RiRp879r8QBOFjgiDsEQRhz9T01Csw7+9EELj6qu++fv29ArrHUydz/lRKEGgl+uz3cFl0f3p95LYPgN7Me6/4zhu6Wf9zIeamWz8Pxdwbnq9n9Sduf9nvfV78KlcUeiZSONd+Gfeqz/Oej36f3v29DNzxYQ59+1xa/GbsRg06zckqcqdSGNbfwmbUsG5BFdtPRN7wa/1yUFUV52mfZ9vPf8Peh79LbNM3X/M+BUHAbdER2/lDnrn7PyGfxr3sGhyr/pli+U1dTe7UWid4c21u/1a1pRe2eZu3eT05Fb5/b1Rp+xf2dYoIRq/5OhGJxtiwaRPbnjlEsQA2s5aAy0MlX8SgVAhPpTlyfACdbEEnixTQodfqser1CJoyu3Z3sXtvF2VUdCYJa5WG+qCH+ioPBo2Jw8d6ON53gg07ttI/WiYUz1MuyZzo7WXjM/u47977aOowY3Zoeee6d1LbXIvH30qgpoOKUmZhWxOfufZfSUbiGPUKKHkKZRWlVGEqrlBRRFZ2NjCVTFPM5jEZdUTyCqJGJZuBE8djjEXGWHvaObgDbpprqpkcnQRRwOGQWdDoY3x8jHJ+nJ/97L84tnsbTrOZn9/5ABu2HMJisSLIKqIeJI2IVlYoKVmQNHSfGMNgMlEuy+w/cpz/fmIzt978XYrZMoqiYveZiI/nSY4lsTrNKGKZJ57YgV6jpa2hnulSFKPBhlYWSOWLDAwPEkso+N06GmsbSaST7NuzFY/Vic/tQNQa2DpyBLNe5LLL3k8oNIHZbGPeAj/bn+mjWCxht58MoevNaHFU+UAQ0FvLeO0iPp+XRcvPxmRy4FHcVNm9VLsD9B3r5eDBLhavOI9Z81YjINB7ooetz26nqbkBTyBIoLoOj6+KO3/7OJJe4OiBE9iMOvz+IJWKgtFWRXgyjGQsU9/QxMBomKP9CebPrscwOoxGyJOIZbFbdBgNOpRyBdkeoCQbKZVTOGr8HN99BEGUWHfRu1jxnrUkJ4topkGS/GjKfgaPJRjuG+DI9icYO3EEMZWgmM5T5W9BI2lpcjtpqG0kYMvSWuunrsnP7PnNVFf70fg8NDRX0Tmvhiq/j0wmj9FowmN3YDLr0cla6oJVKKg01rvw210EXS5GR8fRSSYe37KdUCyE12HHYNfy//7hYs5aOYcvffJj5AWJxto6rDYLqWSRSkUlGgkzt0Mz3rkAACAASURBVKGR7u5eSpkSFa2Kw2ohkU3jcxlYs3Itq1YuZCoeZcmCBYhIzO7spFDRUMqLSLKM+IJUHYoiIMuwpLMDSdCiVTLodDqe3DVAXdBDuVxEozcyr7OZp3bupKEmSK3bRSVfQJAEZEnh13c/wtDIJEJZZFZLK06XHYfJzu03/ic//d0fOXD8AIlEEoPZSjab5lNXXIjP62I6nUWn1/GRf7iIbDnF4cEwxUIBo0GLx2YkV6gwGoqQzufQ6HVUB+uJpXM0BL1MRaeoqqpnb88kslaH120lXcwxND7BWWecTtfANGeumM3hfZux27R0zp2L1+HFrJEwyQLT8RQ5fYxPXnoJU9IED214mFAozMR4D5H4BGJFZc3aNWjlMkajg475K9l1NMEdt93K+GCYQj7HUP8IlbJEd+8Ex7v70JbDmHQ5dDqJ4VCJet8C1q08jyUL5uCxuymmFJYsbEdRJAp/pcDOy85RJAjCYmAHcJqqqjsFQfghkASuUVXV/oJ2MVVVHYIgPAx8W1XVrc8d3wj8s6qqe1+sj9cr9wRAJl+mevVn2XTPN5lb++LVsN5IKoqK+7zvQGwcZC1TW67/i9XM/tR2+afB5CD29NdfZ0tfHMdpXwClQmz79984G5Z/9qQNu27+i68riorKcyq3qvLJew5z788fgmzipDinqiBKYLDw6M8+zeJ6x8mKV3DK5yF6qaiqivPS29j0vUuZU2N90whlPRMpll3wL6A1EN163Rtqt6KouM75T0iETh4ItBJ94BoEQfiTAGzSiTM698Sptk7AmyO/yt8TBjMTz2cm2PR2fqLXhzfrOM8ku//W/T7TcxS9HuuEr8qtvveyVTzz33sw6bTkVBW9RkMslcIoy6iCBqVSIhKL0N7QwHS2hMNio1QqEbBayIoV4sk4lhotx48OoneKDO2OY7aaufzqzzE5Pk45mWHuysWsXtjI/q4htGqZH9z0XRIZkVQ8hqJUQBC48NJ1tDev46nNe+k5vIlsOsVnrv0iiWgch9NELpOiv/cwkfAkqUyJ+io3hUKB2W3tHO3po1gqI2gMWA0SVrORaDxL38g07zp/Je5qG8UiBNx2Ht6ymeGecS5993ncfuc9yOJJD/jLr7yan9x+F6ND/ShqGVmWUUUBV5MZQYUz58/m97/bypLlp6M3WGhprmH+7DYGTozw8EMPEEkNERrL0Lw8QOjENBanHY1RpFIqQ1JGLYsoSpozzlyGy+shFU0yMhEhOh4j4PaSTEYRBYl1yzq5Z8NWJEmma2AYpSzy2S/8A7KspabKTzSRZOPTu5i3uJMdm0bo7z7Ihz54Nolcip7+MZp9K3BWu9FqZGKxKY4NbSGvlJkYCHP2ug+iyR1m2/4uhofDzJ/fwMSElmVr16PTahgbHiE6NU4u3kfv0Agr2tqJFvOcuf5SyuUij+39I2bZTHE8gygbsMoSZ5YMRM85g6HYHvxmN0JBg6emE0UVCZph4vBWJvJ5BK2WTKqMoNXxrgsupm/PDnojeWpteQ7GJqlkRDIpgfGxSebOX8TwYD/x6SH87iCZWJzhyARBX4CWQJBINo9BKZLIFXF67FT57ShuHTrZgN9uJV3IU+/zohFlbvj+HRRLJdRKgc9dexXHRsewGU3UBoIUChn0WiOyRmZkYoJUOowoG6n1B7CbrGSScR549ClC4QJIEl6bFX+NnbNWrcSg02Iw6MnmMiSjMYYGQixaNotwKkUsOsVA/yh9oXGUioAkarA5DRhlLaV8kWKxQmOtH4PRglhSqWqoQauRMRtMfPeHN3HgSB+lYoXnbg1kjYAqQF2Nl89/9EP09o5w5rln8uO7nqWUjXHRunmMZmMMDI0y1jPG/EUtNFY3UikU2XHgEOvXLeVHP72XlfNbcHjd1NZW0ds3wvz5jYyOTbPx6T1s2r2bO276LmWlSLkMZqMWEZVkOofFYmFkcAS718nXb7wer9GDRlKJ5gUCdpnh8TgWo4FiBTpnLSA0GSLoNLPzRA8GjRG71YHdLNM/NMAVH/owPWMpFsxuo+/As+w5dpT3XXQ+pUqFqUScrXs24xIN6AJBiuU8k5kEpXyeTCHF2IkxEiMpli6azchEmPdeuJo9+wa59uovc2BoDFVVGB2ZIDywl5yaIxNJUy6X0FurMJpsjIUOIGgEDA4Tra5aTEYbFqOd4f4JcuUSbR31/PEPv+P8dy5F4zifn934BdLJxKueo2gUGFVVdedzv98NLARCz7uAPvccfkH7mhe8vxoYfwX9v6oYdRKIEmsv/rcXbfPCUKrXm0KpgnvFZ0+KRPXz/6pIBCerUKHRQzo6o7w6Iluug3KRu/YPv3FGKP9XOX0+hKxvMo1r3UkvId/KzxA47bPce+PtUC6y/qr38eEvXUX/xuuJbPse0Y3/wfImF7IkviWSVf89CILA0C8v58x/uf9N4xHzgTv2nBSJPPVvuEgEJ0XH2JP/TmTnzWCwwEQPzuWfpfFT99LxhYdY+vUn31D7XiKn1DrxPDP5P/gvJwxmpp3P8yXC3+ZtZiIzSSSCUyIk7TVfJ2RR5JHHtjEWniZbKVPtdeEwaGnw2XF5apBlAZfLS3NDGxPRBFoBKsDctg6KUpqcNo4laCKVLSCoIlX+Wj54+Sd418VXEg6N0NLaiNYs8szGJ7ng4it5cuNTZMsiVo0JWRLQG434gnWYzEY6q30cOHyI9WfMJxjw4PGZ2L3/MC3tLTicXixWF4WKBqEsMKs+SD5bpFipsLdnhIGxCVw2ExpKmF0egj4fjZ0LOffSK7jl178jk8lz+ESJj3/mOuY0dGDVO4kmMng8VehNLqrqqjBpVKYmh7FXG9FaRdxtZqx+DTqtjgtWv4fHHuvB6vCxd+dW4vEoR7v6iCXSuDwuAh4vosmI3qbFlLdy1ulrsFT0FKazBFxOGhur0Gu0aLUmEFVCw2FErYzdYyZdynP8RA+TUxHS2Sx9Y2HWLFuG0+HE4zKjCmX27NpH/8gJdux9lge2b8Po1WDXwL49z3Dtl75KaHqKI4eGKWTTGJwi2UwWk8mIIMfJx3M4zGZaO+vZufNeugbGKOclgtXV6PUWDEY9Rwfu5fD+eykVD4KqEqhzsXLOXLSiHp/WQF//CfIlAXlKwFqRMVmtiIKCzmri2fp6xsfGCA8mSMVK1ARqkSQZo15HNJsi7/JQ09ZBa9ssNFYdNTWNHDjShWJ3s3PfHnqiWsoJB/0He+k+sJNEbII1cwJIpQwLWtvp7Oikqb2DhkA9l6w/nSwqDcE6GurrmT2/DleDE53fTmuwFqvRhNlsxaA1Mjkd4Z57NqCiIihlZre1kM0XCbh96LQ6Utk0xYqKoiqUS0UEQWR4fJLQxDB6jZZ4PEZ4MsroSJxoZJJcJklN0EFHewOJdIJ0Ls3QQD9KpUhZEahu9XDwUBddR47y+/ueRKvTYDZoGRmeYDI8jtfhYSQ0wVh0mrGpKBajHa/HjslqRKOREEWJRDpFbbCaoN+C0aTBYBCQtSLlCqAIpNNJ9h3uI52vcPRwDy3VTgSNmal0kjZ/DWsXLmDtujU8+sgz2Mw6nG4H0eg0Bw8cp6Xeh95iIRyOkstmcLucZDJlWptb+OiHL2XVsvlc/pkvUinnqZTyqCrIWh06g5F8oYivOkipWOHfP/kZEEVKRQmHQYNOa+a0hS1UVwWwGAVO9B1BI5ZQyzlWNtcQmZ5ER5bjfSe48sqr6R1P09Fcz8G9T7H/+CHMBolQeIxUPMLhQ7sopfNU1wSY39DOirYWSrEUJpMOn81JTVOQxauWEknl8QZ97D00yHQozB8euQVN9hiHD9yHR5ygbEkgKuB0mZlIhNn57NMISoFAYw3+Bh9Om5auqR6Gwz0ocoKWdjMms4mjXQO0zl6Kz91OKduP2WR88bnz5czoAKqqTgqCMCIIQpuqqt3AmUDXc48PA9957vmB597y38CnBEH4PbAMSDzvUjoTEASBE09dT+O6z6Eo6l/c9D8fxSW9jvtHVVX52oYefvjvt4Ck4cabruXDi+te0iY2uvU6nMs+jfOCHxJ7cGaUpxdFAbQG/t/V1/O+F/Ho+WuoqoqiQr5YoayofOhXezmwf4R0Io0SHoZS/qTHTyl/UhD6c5FMozt5TBBOejdVTuYR+pN4JGnAXcuVV53DRxZW01Zl+V9ukW/z0rHoZfp+dhmBD97J1G+vmLF5mv7kfQdEd9084661KArENn/7ZPXAdV8mtnsT8D9/Mc9kTrV1YibzcpPpzmRR5rX2LJqp5/1W4vnv30zwIvtbzDSB6M95s4pFr8c6YdCbWTBnNU9E/8iJ0UmqXBamkhkCLie5TByPO0C5kEdBwaTVEE8mmVfnJ8MEWSFPNpenIFQwmwy43W5kRUNbpxevu5XwdIQDe/fRfawLvV6LVp9m764dLJxdx+zOheR6t2OniZpgLaH4cTY9O0SgYRaKKqOx6lESZuKRYe5/5HGS0Rhz53bgrZ7N8dAYI5Es4akwbQ1B9h/vRqfT4/T4WBLwcmJsgKKi8vD2JzCUqrnwgg9R1sxm6UIzjz34KJs2bUfWijz4yNMsX7iAQr7E1R99P1/4t1swBmSMNhlJa0FSNbzvzEVkUyU2PL4dq82DwWxlXClhNYk01poIDR7GEezAXlVHpnsHdp2BdDZOe/Uyuo71YsWBVPaTjk/Q3urHajJQKECmoCJlMlRVeUl1pundP4jRYMNo0NI3PE1LlUKlAo2NzfgCJ71VGpvqMLtc1JVFAp4gTx08wB2/vpfBoTEOHI5i8hTxe3yMTOymqe4swlNRAt5GmmYlGB0fRQQcXgsefS0mTZpAIMiGTY9isjZx3uzFHDrQzUgoDlmB+bPasbVXEU5MUl8/C6UC+UKJM9ZfSj6eJFfIYrbaUCWJzZs34/YGiIZUPnDxuQSrfHzra7dz5ruWsXzRIpLpDm669Tb6e4+Rz2f46ldOY8uGB+np7WNoLER6apjOhnqsBjNz2prRm3U8vPVJls5pJZ9MExk5jMflYkpSuOfhDZisJtRyiTUr5iBqDUyl4vi9TvRaHQV9Ca0oUe13ERoLk8sWyJfzOEwmFqxaSLKYIRHPE3DaGRybwGm3YtJpkUUtwYCb0LAdj9dJOpNibHiKx5/eQqUkYbN5aKyuomKSmIqm8bf5EAWBYF0NgiBTQaa7dxi3y4XOauSstWbam6q57/qtvPeiM2iqaWDjli34jC6Go+MEfB6MNiOFkohokBkZGMPhtGA0GjnvvDPZefgANpsEkkwkXECSRMrlCvFEgXueeAS/20emkGLx3IUoUoBthyawaHV4qrwYLTnOOHM5X7vuFv79C5/i6g+9n3sf2UCmrGHzzl1c/K5zGR4MMTA2yXnnrCYcnsLv9XLF+y9laCzJ579xA9/98r8iiAKZXJ5csYhZp0dVK9itVlRB5d0XnsOTz+xkbGSEXKFIIpXBYjKAKjEcGqdYKNBU28HI2AhGrYTJF2DN3DWMR3LUO/Lcfd9trF+xEr9jAY9s3sq9D24i4DODXKHK7iUQqKFYiPPAw5vIFXKsnNvJWDSCUFKZDMVxdTpxlK0kpmPobU5a6+t5etd+6ht8jGXDyGUJ7Apum4N5pgtggUo2HWfbg7u54bufomdwCIc2xED/GM5OHX0j08xdsByUJNd972YmJyeormkgm8u+6Nz5soWi57gG+I0gCFrgBHAFJ72U/iAIwkeAYeCS59o+wslSln2cLGd5xSvs+1XHbtSArMV1/nXEHvvi/3pNVdUXFZBeKxRFxbXuubL3RhsTT3wd/d9Rzl0QBI4/cT3tZ32eiqLOmI16dOt1OJdew4pvPsWWL60jU6gwGc/zg20D3P3AfsqhEShkoFT4HwFHVf6v6PO3EISTwpAo/Y9oJD43fs8/aw3gb+aqD63k2+e3z5gxOhUQBAGrQWbTde/l4p/v4t6PLp1xIsy/PHKcH3/1FmhYQPSuK2ecfS9ElkSim79NqaKy6ltP0fvoI2+0SS+VU2qdmInCyquxgX0zbNT/FjPturzNS+PNIBbNdJHohbxJ8z+9puvEwMAA6WwJnc6C0ysg60wUC3HShQLTyQwNBi3hdJbT6hoYNJsx58uESwkCeR3ZQgGNRqBQrFDWqOSKCi4s3LtxG7d84wJ+84f72fj0wwS9Xkw6O26/h3w2y32P3c0nrvhnhkOjHB07SlUkwooFZ5GcirB6+WJUythcBqyqh0KpQnToCFa7n327tmPWC0hUyBYL6A1GDhzrYTqaxWUv4jLLDE+P4qhyozXqaa/pZH/vPkaHPCxZuIJ0KsPsNheCqjIdTmM0g9vpoijZeXz7AY4O7EFv0yLodOTDaXweN6h6Nu0JowoCJrMNpVzhrPMX0H04Tb42S0eDB7+/iv/P3nlHyVWfd/9z+/Q+szvbm1arjiSQaEIgbDqYbgPu5vUbO7bjEttxnNiOS9xwN3bi3mKaqQYEGBASQhLqfVfaou0722anl1vfP4hzkryBOEYIYu/nnP1jz7nze35z750783zP93keAbDLl3Pk0F6aaiLM5opcdcU7mBgdYWYmzePPPUfT0jr88RhGycAfVFBFCduG5Z2diHmTiZEMqekZ4okaJqZncEyHmD/IGQtPY/POA+zYfpQ333IVbo+PmYlhfKKGPT1MS0sjb37rrTz57I9obW4lm8lStIewixGaGzu55cq3crhngNm5OQq5AprqplqpYtoOV1z+ZiRFQzcg2RSmYpwg0himSpT7Hn6C9s4ufIEiCKDKEqKiogR8YLmRJBGjXMarimQnBnG7w4iSgGGYfOmLf8/2g8/yvW/fTlNjjP27NqN4BWoSbnoOP40vVKQkFolG/SSDbjqWLkD1+BEcibBHpqMcZ7jvBLJXoW98loN9ozg4BLwagi3iC2js7DnC6V2LiAVD5Ir6C2WHniDJRC3pzDSzc1MMpSZxa14Ul5u6aJDhiTRRrxcbgUUtTUxmc0zn8kT9ASTDYmFnB+gWPtXNlr5BBEtBUiwUROI1HjxhH1m7xMG+43S1tJAbyxDwB6mUSzQ01zA+NEJdfQ11dU18/ivf4JYbLkeRZLqP9RHyBMhXswgWSI7DwNAkixfUsa9nkIXNzRgOHO0dYPHCdj7x/vdz2+3fx7AsVp0WZXy0guXoFC2daNKDX3Pj98V4/Okd3HLzpczOZtl0YIq3NkaJ+TxsGh/D61G4/Sc/43Mf/whXXHwFf/u5L3Pm4qWATSDi54Y1SzhyfITNO7t54yXn0NJWzxc+8V6+88M7+OJ3v8+XP/kB8rk8giSCpiLKMo5tUC5ZtLe0cMfsJpYtbOPoQApZdjBMm1A4hC9nIGsq2w70YjvwsU98hmd3H+HSC89g+1NPMCMY3HTlNTy7bTMjqXEWNSc5eGIEo1Ilb1WZ1QzWoPHcnv1UEamUTarFHAsScX57oJcLzlhDf3YET1LEJoRb0HlyxyGsoo7icVEpVek5OkwkGSERXs2yZU1s3rSJYDjBhkuu5e4H96M6kwiiCyNvs3nrAap2CcnXyjM7fk3XglYsw6I2KFOtVF702flH9yg6FZzq3hMAs/kqHRs+8h+cBbbtIJxiV8mGr29h3133AjD53DdQ5T++SjC89q/AsV+0J8+rQXj9J6H8wvSx/yAA/ftzLIgvCDmyird9MY99+lI6ky84fERBwHYcilULtyqhSH9Yw2jHcYiseT+3//NHuXlV80l+V/P8VziOw7vvOkjUr/LFy7peE2KM4zhE1n4AHOc16SL6Q3mt9544Fbwa3xOvlaTxZI7kfi0m6Scz0f2fvrfXyjX+c+K1eM5fybH3p4r57wkIhiPOw/f8kiuvvxFFkVi/ejGpuQKHjw0QTQTxutwUiwY1oQCGYXDG8uX0TfeDBrpeRJJl5iYg0e4jX3WIKguoVHVODHRTzEzQsWAhr7/kUrr7exgcHKFSnuWGq95KLldBz07R3T+AT7C58JrrcCsG2zZtwet3kylUGOwfRlYFjvcNEgoGUEXwuxVM0UuhWGaaFJO9abAcomGFd91yJZFoLXNGlXgwxCc+9W0+8O5r+PZP7iXoT5LLpHjbG2+g58hxbNHiaN8o7/urD9BY38AXvvNZMukZMuMFbBtalieQJTeBgEZHfSPdhypcduFZ7D7cw/h4ihuvPwNDN9j0zF5WrGhh65ZhFi/uwivo1Ea97DqRx+3SWNDawImhYR5+4E5k1Y3i1Qlqfs6/cA2N8QSHjw3R0tHAXCFH78Eh8ukMxXKZlV2LMSyD9Ow0tqziqhbozZX44PvfSqlgs/rMS3n22bvxRxdTW9vGV//pvaxbfTbJaA0uwcEbCPHgw7284arXMZct4PW8UEIjiFAoFKlUypRKZSplnXR6lubWZrp7jjIxMojb5aKUmWY2k2bhgg7OXH851XyazZs3ctXFq5me0slZRQTRwsg5jA+myFkOTQ1BGhsXctFlV7P/6AALmhN8/CMfIVtJo7tM3EEXkqRx0crVyJrCI1u2EjF9nLWkC8snUx+qJRAOYxsGh4a7sZFIjZVoCshccv5yHnn4KdKGi3A4iC1K/9qkWcYjitS0RXEH4oS8Lryaxvad2zjcc4KJ4Qxlvco733gVbrcP2acyVygQ8LhxqRqOJuAYYFkCqmITcvnYtn07uw4MoEoqdiWLqgY4b/UqFq5dypbew4ykhgn4IiyIJWitSWA7NqIsItiQSec4Pj1OaiTN5RecTWpyhqmZKRLhMGOT4+hVE9Hlwu93IRkSiipTsXX8ipt0dQ7V5cHvDbGkpQVJUXAqZRxHp2o6lPIluo+PY4tlntq6F9Uvo8kesCw+/N53csfGw8iSwLuuWsPvntvL8wc3Y+VNBBw+9lfvZ8dzh5nITnDBWasQ0AlHkuRKJY4dGaRjQZJEvBbbERAsi1s/9ndcevHrqA2GWbNqMYFAkPHUDOGQH0kUMHWDbLHCRz/9ZTrr6zFdCtVyns6WBfSOZxCcCrJZ5LzL30wuX0QxC/T3HWD9mgUc6D6OoTvM5LIIMkR9forFEtOVEgGXxtuufzOP/e5RqpZEsVphJjuHKMvUx2NMjM1QKJS5+aJ1iKLAvuoYJb2EUlIwVRGlrDLQPwQ4LFhUT12ghg0rV/JMv44sitiCyeEDJwi6DiIKXmZGspRNh2C0hapRYmSkmyXtC6iaVZBEntn0PJlM4b9MhF6uo+hPjohPBWDj0RSXLUmechfRf2hYLUrgCaK8zFq3wU230bL+Q1QNC+0lRuCdSv72M+/gH//mOzz0q7/jnPYY/zlP/0MSdxGBoOePE9BuXNH43x80z0lBEARuv34ZKz/5GJ+/ZCGS+OqW8m06NsW1b/4sBOLMPfXpV20f8/zv5bXgKnolEtjXmlj0X53n19L+5vnT5rUoXM3zx5HPZfi/f/Eewl4vNjrHhyfIFkvE4lF8qozm92AbJXS9Smp6Cs3VRTTiYzydwXJAUhwau9zYWERcbnyWjs+dYUCp0tjZyWWXX49pGnS1Libmq8VMj9HXf5RVq5aTXNFJY0crz+87wvOPPMQ5lyzDiAoIhoWenqVo5qjkQRRNJNGmrSVBJadjU6D7xCCupIbqk/F7VLwhF48+to0NG85lybJOfvjrrZy+9gKe2/EcmkdiKjXO2WefTiLmYSKa5NGnH0d1+/jN3Q/zjrfdwhvWbeDurfejusP4QkFiAT8hj8xkpsRUJkdru8Jvn9hCbYPC+nOaqY/HCfp9/OqOB9iz5yCCINN/optrrnsbR1IFzKrOsbHnufCsWxkelQiGa1EDRQRLJpfRCXpUdu06grvGRcTnpzYeJz2VpnfoBB5BwbIq5AsFbGyGxydpamzgwkSE7373x/gT6znc+yTp/CFsYR8uTeO6cy8G0WTbnl1MTs3idmmsPe1SpqbTqJpKJj9DZq5E0CWQzvZjFKuYgkGlXORY9zCdDetI+EFqrmcu1Y8oW4T9XpYuaiSXyyGUs7Q31/Pdh+7DGLV5w3Xng6mgKjaz1QL1sTiiR2A2N4RpW5TKJaxqlfPPWMOWke1UZQtRFnBKsGXTMS67eiVNC+OsjbYS8AbozWQRRJPe1BDHx3rQNB+mWUQWo1jIfOF7vyUZdjE4MUB9uY62RQuZGk1RVxuk6jIxqzaa5sFBRFMVZjI5gkEPs26DgC9Ez3Afa1evoaIbtNTVUCmV2XlwgMUL6pFUBa9HQcJFemaOvYdOUK1aVCQLj+Ylnqgh0dXIlqOHKOfnKJsl4v4Y05kcDZEApiPjdansPHyUyYlhTl9xBp2JGkaGU2SMPAFfEGQFnzvMnJ5BEFXGh2c4a/VSMvky2BpZvUzYHwPTJjU1SWddDXrZRpBtlKpItVggFo/z2NP3kFgcoWFBEsUl4lIV4v4YTz27hfNPX8JT20c4NtLP0gUN7NjhplSYpaUpwrPP7yce8xOKJBkZL5CM26iSQDIWo/GCANt27qepvpnUzBQBn48vfuLjvP+Tn+Ydt7wNQXaRzszh9apobheSDbYN8ZBMZ2MNkiaQms2ypLkWXc9TzU9w81vfxfETU0SCAlM9u9m4cz8LWhsZHE0zkpqhsamegGFQ1A2qRQtNdRGsSIiKxZ7d+1m46DT2PL+DC89Zgyg65AyL1FgKs6pz7uIuBMfm6e2HOTp8HEOUuOb6CxlMzSIi4wl6ccccLFshnXPz0dvu5/a/vYV/eOgXnNl1Las6VI6ecJOezoNtkew6g/vv+Dk3XnMObk8t2GXcLj8DwyPoxotPPXs5zaz/JBEEAUSJW97+wkjsUykS/d3Gnhd6peRn6LzyanAHoJDm8EjuZa0b9CigaNSe99HXTGPrD5zbCo7NuR0xxH8dH//v/14prH9tNPW/1UHyvxVVFtn7+YuJX/Q5yi8xhvGVxHEcwud+jGvf/FmOP/W1eZFonpfNqyUW/ecE9mTs47VcrvL7Zr2nOmGfFwhOLb+/xq/2Pfjvy+Dm74E/yZde6AAAIABJREFUDTRFJlkbI9mQIBQMkaxtpiYRx6eA3+0l5A4T9vkomzatjZ0UM6CoCqqgIioSjqGimwLlUoVKsYJamsawNM5fuZi4pFOpVvj2N7/FF7/4D5i2QLyti5G+AcoVlQM9Qzz4wCP87tEHeGbvbnr2DFIreFBFiUJVpyzmcYwygujGNg3KRZGZKuzvS7Nh1VIual/KBasWcOHydjy6D91S2bx1P9/9yTPIksrgsW5KBT9L2pbS3hqnr2+cmarKUzu2YtkCpmmQyaVQNYlLLrmWRCBJLBqjMRDBLMXRqwvp3nkCQRLJpw02XNzOsmVthGNhMrkMT/zuMcaH09iWjV4tYmPz/Pan6WquZWGbg6ao3P/kJpqa6jh3/fmM9s4hIPGGdUtQVI2Fi5qRTAVbNxkbG2d5ZysL6uvIVcs89twussUKbY31bFi9mIGhYY6lSwiSQmF6F4s7iqxfewYrFy0mPV7ieGqcHccHaahpwpyT6epoRlSyzGWyzM5MsOnxhzjRP8jgWBrL1tE0gea6GsQyyJbMnfc9jlXWGe7rYXZ6Fr/HTTymcWDfPgb6x5kYn0LWyqSOlEjPldj93CFCXjeiY+CVI/hrfPgDEfzuEBsf3ogmO4xN5zj/2jfxiffexqdv/SpLoqcRK0dpqq/ByCusjS9DVd0o4RBZu8SEXkbHIuj1oRkO3bsHOdZzhPa2ejLFPPv6x8gUqwyNjiEbNmeevoiMW2LNqjOoS9bi0gRCXo3unmMsaq2nORTHQcCWRbr75jCrRTSXwvETJyhj09FZhyw7OE4FSRRprI2TTc+yZsVSgpEQPr+CaUqsXruCzcf2MZqZZCQ7w/KOpUyMTjKnZxiamKNvZoLt+/cyPThIV10HerbC1EwJRzSRLRnLMQgFfTTUJogFvST9ftpbajl4tIfU7BSlUpFVixZg6w6zuTIYNjsOHWRgYoidh47TNzlNXjV5dPMW5OUB/F4fvoiXSlVmerTI8OQk+44MUchVOP20OE9um2BqapZbb7qKmewcR/rGeeTJp9C8LvSywP59u9lzYJiZ3BzHeo7yvR9v5Gh3iqqhk4gnEAWJttZGfvKtL/LTO35FLj2Fz+3GMgxGhseYmJ4jl8/z3V/cjyEp2JKftoYYU9kyQyOTXH3zrQyMpKn1Vfnm177CyOQ0Xk+YKy5eh2w5TI5PolcLiCJYuo6sCvi9HnwBgYjLQ6GcwyjlOeOscxBkjYce38xQdx9LFy5nYX0jNVEv2VwJlyeA2xPDK6iMTM4SUBXGshNoUdAkhSNjfUyW+1m4NMknf/N9TKtC3+RjbNm1mUKliEeUqK2pR5bcvP3/foijvQ4bH96FO+wlk55DEwTEl8iJ54Wi/4KBp78K8G8jqE8FF35jC7d/5vvQchqzW2/j+b+/kNmn/gEch/NeYhLbH8rYpi+DqfP6b209Cbt9+SiSCP86aexUMlvQAf6tF9GrOcnuzw1VFnn0n99H/aWfO+XnvFQ1iax5P1RLpHd+h3hAO6Xx5/nT49VIIP99k9rfx38lxKJ55nm1ea2IsPP8aSCIIjYCuWyZ2oiPiYkhXIpGIFSDR3VTzBSIB30Ui2UcSkiqjmCI1CSCSCgIhk4+UyJoxigWCoQ7WjGtHG6lhkvf8A6uvPIafviLu/n0577Pj/7pOxwfGKNSLlLITdLfN8CCBc2EA178bhGXYzIxNcXx/gHmijlUPYgiyoT9HnRHYjydI5fPs7i1lmKuRL5UxiO4KFkakWiQxqYIRUelpq6VquFw5uld+Pwq+UyOdYsWki/Mcv/Td+JvNAnUiJiVIl1di6jqJnsOHCUaDREMhlh31uW87U03oHlcLF95AcWxGVxRlbAvQMTnwTR15jKz3PPEs4gqePwyNW1BBKvC6NgwK1YvRhA1vCj4FDep1DS2aZCoa6ZSrLLn2DipoRShgJs1yxfSffQYs+MTqIqGHJKwZIG62hp8qsDeY/30jMxy3prV5IsF3nzmaXgDEk/t20VqZgbLKNDb24e76mHnxt30zQwSavFRMR2ioQCW7aApEm0L6imXizy+8QGe2z4N2gr+5e4DjOtJwrVxYpEE04UxGhpiiLJI/3iekVmNE1MCvb0HUXwSD27ah+aXEV0Cx4emEMOn0bL6Gl53w1tYufgc1qy6lPPOv5rWhUuRRZkzV3VR1asv3GgOLK5bhN/jZWx8mP4jx6iaMqbsZmI2S503QKlSYGZ2GqusM6fnaI630VbfysGeESzLemFKniKzvKuDhmQCQVBpCsaZGRtFdWk4hsXI+Di1yRi2BY/v6CYejeISTUKhAN/9yV0E3CqJUBjLdEhGwwT9IRLhGKMnxtm+dRdjEzNs3vY8Pp+HqimyuGshRqmEqqokQ37WnLYCv9eDN+RlpljgWG4UyRahUGHJkpXYgky6kMWmis8VJFMsEAuGmZtOUzV1Wls68AY8eNwumjtaaW9pIhT2c6BnCF/Ay5LOZvwBP4rsRRRBxOHAoV4e2LYNQxZI4KGkWzTEgiRiHsJBL17JSzwa4OCRbryCRl3Cx9bDU/gDbhoaOxEFB9ExmJgc4aHN2wkFw+wY2s+9DzzNP9/9FE2NtbzpjVdQLlYo5PMgSejVEvFIhPe+5Xp+cs/9OIgoqgtVUQgFXUiORKlYweuLUBNNMJUap7GxnWVnX0KlVGHr0w/z41/+Eq/Xy/BYhuVLOxAcD8nGILLgZ+/Objx+FwgSpVKeiXSOuUKZdD7P5HSKrQd2sHnz77j3qYcQVImly1cgKAbBZIidw+M8fnAfc2IJny+IKxKlVLVJZQu4FJVivkrRsNC8CsOTo5woHKRcNJEEkcmDRapVFY/j5vTT21h17iV0tDVQm4jRddpSbnrnB3j4oW3YkslUdpaXysjmhaL/grBXBUEgeumXXvFYE5kK4XV/w9677uM73/swc3e/699cTKIoMPP8C32Fuv764ZcVx6PJEIiz59d3n1IB7MX4/Xu8+ofP/zdHnlyW/uVd/+H/eWfRqUMQBM5sj/DPX7+VyEVfOGViUficj1J/7gcZ3vIN5nZ9d/6az3NSOVUJ7UuNvT/ZSe2r7eiY58+bV8PdNu8i+tPGoyoIkkCqNINfcxEMBshks+ilPKPTKfLlPAPjKXL5LHOZNKVihm27DjNwbJAdz3azfVs/oiFiKAUaIkmWdLZSXzJ5XVOE7z2ymePH+iiXqyxa3MlN73gP5VwWU4tw5x134lgWhu1hadsCTu9cxPNHjpGeLjEylUFARRNg0ZLFBIJhVq1cw/TcDDGfiCJUsQWQFTdmKIpXk6lrDBIJeagPuxns3UZf93OUchN01NWQzeX41RPbsUybcsbCQaBacLjmhrOIxyyG+k9Q1S1OX/B6brriViTZxa+e+Rp1yVq8/jDHemao2jqp2TnylTKVQpEndm1D01x4gwrBOj+WY1Mq2TiWzm8f3kQg0UmoJsmmrU8QDHhpa29CF1KUSjqHe0a475HtfPnb9/CjXzyIP+Cho7MNSYKFC1oJxkNkcnMc7Bulvb4O2y6CYbL6tNU8nZnizNedgz6ex926iv6pVm7+4Lt507WX8t2vf5ZsrkRDey0Lm5vZ1d0DQLlqs+PZ51l/7hl85avf5z3veR+nr13NV772VT72wfeyZGkLy1e10BKtY2JiDo/mJZFooqamnoamTuK1DZwYzhBsieJPhKhf3kgsEuG6N1zCBevWcvEFZ/P3//hlMnOTnBg8jiDA1FyBf/rFD3ng8V9QLeVQXS58PhduXwJ/oIFth7vZuuMIiilxyarFmHmRhto4QZ+MqVvUFU2M8iSiVWZyNseaM9dhWhZuRSaTzZPOFymXq7gkgSd37KZQNckXSpimja2bVAoOHrfM2Pggo1PT9HQfwe2K8jef+w6PbNxESBVxDB3LMjm4Zz+5XJa59BxPb9/FXCHHxMQ0XkVGEyrkczOEqwqOJHDoxHGO9g/SEmtFFkw6GppQVAHTFBAch5qoF9XlpqoLzOVztHc2UiyblKoOjgPFagkcA1sU8LtV8rky9fE48agbU3CQVBFNVWmqS9A3Os6O/Ufok2eRkDlWGANHpDboYyiVRzRlvCEPFdEkGIoyIxd47KnNXLRuKV63xt1PHefcc1fwvne8nWLFYlnXafzl26/h8svO4cKFZ3FkaBSfy8XqlR2k0zP4Ax5kxY0m2vh8fnTDQHNHqI0neea5ZzANE9sR2bvvCG6fm5uuuxSPItAz0Md1b3kf3niShpiXR+7/OU1xlUQiiaa4WNQcpjGewLEdcukqHU111MTipGZm8XoUFJ+PgFvC5VIxDYdysUpI0SgUDaJaiOVLl5Ip50hl0gyn0kykDWqa6nAlXKhJATFkkM1nsCwdwzYolCpMzWTQ56p4vBpUQZQdqrM648OjJCI+li5vYtP2Y9RoBqs6m0CAhR3NDPZ2c8W1Z2IYAkFvEJfb+6LPznmh6MVoPQ3SY6/Y8o7jcGQ0x+JL/xZMnWXXXs0tq5r+v+MkUWBi6zeZ3PzYy3bfzPzuUwBEr37tNLV+7slDpzSeOXCQ/9wQaV44OHUIgsD1yxvAMojc8MNXNJZlO4TXvB+MCtM7vo3frbyi8eaZ55XiD3U5zLuKTg7zQtmrz6m8D+ddRH/6WA6EFZG2aJyirmNUKpjVKvGQF0F1kasU0csvNP/N5aps2TOES3FxoG+UukVhatqitHc1Ew5EWdTRyVy+xBG/w+iatzPW/SiLl3axsKMBHHjwgZ+hkccyDaKJBtq72vF5XXQsWIApOmTyBaZyeWzLQRJUVE1hbGIcf0hifKyP2kiIufFZhqZmqYhulq6/gCd/t5l7HtvNXfdswSzrlPJVzJKBbYsgyDyyeTfDY1O4YxKmpWNJVYqzOpdvWIFiyigCnJjazYL2OgJBH0Ojw/RO7MJIK2iqhm6YrDz7Eqan0kznsmiyyo5t/RRSJtGGINFkBH+Nn3LWIVbnRzd0ookYx/ccpTg1TUMwxt49z/LN224jFPRTsU2QHQTZwe+T8XtkpiZn+d4P7uezX/oZv/jZRsa7x0lnSuSLFTbv2sf0XIH+wgyj1TEuPPcM0AsIXoE7f/kjtj72L+zKDmObJUxLp//5Qa4460b27s5wwemXomkaoqxy6dXn0dszgsuj0NnRQF1NiPsf/g1PPPsIsuxQF48hqg71iSCuoIdiscTaBofzzq7l7DUJzlhTS2UmT/pEmlI6R2tDGL1SopoZZia1D1kx2HNkO1MTg2SyOSzLQipYiKUqgqxhWxYzVoGb/s87+PxXvsS9v/4pLe2tNDYlSYQCTJVTDE+MkpqZQ1Fl+ksyhhMiXt9EtZjBIwusP+tCHCRS01PkMin2DhxjsH+QcNiFVc3RXFdHMhGlrr6ZUMiHYQnoJiTrWrhwwyUkwgFcskJPXx+Dvcex9AqTk7MUckW2bH2WJ3c8jz8UpmvJMkJ+D4X0OLOzE2zcspPh8UncokLQHyQaC7Dj+G46460813OA0VwaIeAhV8wyMZdHFmw0TUCSHXKpMrIqU5MIYdgGuUoZVZEpVSyyhTLNLQ0UjCoujxvbMhmaSFGXiHNgYICJ7BROTMBdEciIJRRTxPHZFCo2Pgkc0cGUJBYkk4iKTa0axh8M8s3bf8SbLj2N2XSWqRmL7Yd7efc73oyiykxNZcjMVahNJlDcLnRTJ5OeAcdGklUKxRyFskm+UEQQBC48dxU3XXMpt//8QWw7jyqL9A6Psf9gP8MjI3R1LeDsCy4lkykwcHQPh3ZvpjWZYGwqi88t45ZFdnb3Mz7Sz30bN9LctoCW5hqa6+uYHstgyhXMioGiKUiOQCTgo7kuRtAXo72hnqrmpiYaJxAIo1cNTMkkXKNQwUI2Ldpb6on4g3g0CZ/bQ6VUIRBwEQ568AXcVKoVqkYFQzeRFJXmFY00tiWYnS7j2Bb7j+zk6ad+Q0LLcNev/gnBn2agZ5JsNsOFr78YUXhxOWheKHoRZu94JwB/df+Rk7624zh8+ek+zr3hM+D2073xH9n80fUvKli4VAkEgdjZH3pZcSVR4IOffx+keilWzZe11kljbuLUxjP1Uxtvnv8PURSYeuLTMNGLadmvSIy5ok5s7ftBEEk//21kaf5RN8/J51Qkln9oEnuyXRivJbHktbSXeU4tr/S1nxeJ/jyoVKvIkoAqCNiiQiLsRXO7OD4+QyTgob42hs/vpynuwaMqRGNJ1i5dwdUXns1pHV1c/frziEcjJOui5PUqY1PT1CVqSY2k0DSR11+2FkEQKaTz3HzVeZQdB7daIR7WiIeDXHXZQhoWLub42CSWoiAgccnKhZTNLFXHYYZpPvWpr7J8xSri8SDxFi9u06ataxlWSaQ5Fuf6s5fQlPAjqQrFaplEIkFzfS27BweZLc7hjSlYFQi1+JBNh2g4iN/vJ2eWGMnMUTF0du7Yw0x6jpA/wNj4DKcvWsnO/Y+yctVyli1pwuv3MDY+xqEjJ3BEaE7GWVTbyuLWdq5YdDoNC2vwxNwkEkGCSoGGZA2G5aIuGWbH8/sJN7qYGi0STHjxJ1QUl0hDbYzjJ8Z58LFdTE9nqZYNDN1C9UnEG31oPpG2tnoqQhVTrBKPx8gXSuTLZRramtFyfmzbItgUQFS9yKKMbchMTc3xutevR5ZULNtCkmUcBK65bgONCYXC9HEGj2/n2S2/4ejuvRgVk3xBp2LIDI+mkB1YvtDDgSmReCxAMBykahh4az1Emr3oJYNv3vZ5bn3Ph3jLez7FXQ8eplqyaKuPUSiWqVSqhAI+SpUcumDgOC/8vh0c62bfocN87Wtf51Of+Sou08QqG6TTM3gMCcFWUEUFvz+GzxNDVmRC/iBdnYupr02QTEZwsPns+67jud2HUU2VvqlxJEdgeDJFuVTANh2y+TyzmQrLV5/J2evWIQswONhHcyKKEvDQ0ryYH9z1GA5QEwkxkRrlzFWryOQLlAtZjGwOUEkXqnQPTjExNU2yIcF4ZobT25dyPDXCyoXLqWoqIcFFyO8lN1tgZHCQtFnGlkQcW0JWVESPjayITM7mKFQMdD1HBZmyY1I1bTKZHF6XH8uw8LhUNFnl8PAge6d7SRd0PKILwauSlH0Eol4CVgDVccgaJhVbRLZsZuYKZM0iuXwBQXbobO2kXKhy/uo2siXYcNYyVi5ZRK4wx4L2JjwBP/F4mGvXn4MjiuTzOtu3H0VRbHKZWdyaDLZDqVylWCximxbf+tzf8IWv/5LUZIqOtlYOHttDY3sno1mJupoY+57bSCE7zs5D3RR1h6pu0RgLvVCyV9/J4cEU6clZNj+7h0RNnNWnL0M3JSb6s+T0DNVqFUG0wHYwLJNsKUPGLLOyYwHBUACXS8bAIJWZYy4zh0sSkUQ309MZJgfmkN0aumORiEXQJA2P7EKSRGRBRrBEKhWTspNDjSj0To1SMAwWL2pFF6ts3XmIH91xN4vWthAJ+6lYAt6Il4nZMtZL5GLz2dOLIIoCyCq/+NIPTuq6juMQufFHfPnrD/Hxz7+H2Sc/Q23I9d+6Wqa3fwssk/CNP35Z8T990UIAGjZ84mWtc9IoZU9tPMd5wS02z6uKIouMb/oS8Q1/f1L7VDnOCy6itvM/zOiz32Tu+W/NO8bmecV5pZLZ/2kSe7KS3fmkeZ7XAq9kCdp8qdmfF5oi095UR0NNGAmdyXSeSlUnEQmgSCqSCRmtzN4TU4guDUufwpIKJKJ+FtQm0VQ3EY8PSRDwuj201UQxTBN94F6+evvTXHLlZzjY0837PnQDv31iK8GwxfDgONt3HmAmm+fmd3yOQ0dPILuCNDa3UCzO8sCe/ZS0MrP2FLZt8J6Pv509h7dREwuRLQY4ni7Rd3Af23/7a1Y11VO0BWSPSjoLwbBKyCcxNpXB0Rz8CRfBRh/RDj/JeIjr152NOSPgDrajOxo+v4ezVl9LNNmA7dhMz2a5ct1VVMolOjtCdB95gEM9T7OyYxFzozliLpXTli1A1yBvlsmXi+wZGiLscbF6SQdXXHkuu7t34IlGuO4NF3F4dAxFFdGzFhFNIZj00V7bhORW6esfRdQkAjUK/loFX0wmVOsC26Za1tGLIGgyN964AVmBSqVCzBeh1udi5ZLlBNoq1F2yiLFN+zBMk4l0mrfcehVT0weZLR3miefvwDQNHMtmeirNwIkT7Nu7j8HRAfwejS985gckG9zU1NQQ8fmZGJ1AElzEQl5M26CrFaYnpplLTePXNBbF6nFFvSDAr+78NTVugUs2tFOtHuS08xqZzWQoWjaarCBJAoJkgyZh2TaZbJaGQJJbrr2Kf/zsZ3j9urMQZIOPf/m73PShb6B4fEi2QsgfRHUEisUpoj4vhYrBicEBHtz4ENW5FHWRCL1DE5yzvB3HqLC+6zTcXhXTMhjo6+HEYC/lUpXZuRyWXmKg+wiFUgm36JAtl/F4JPb3H8AVcCMJAgMD/cRq6tl98BjJaIJ4vA4HKJczRIIBKpUymiLgWGU2LF7Ds3t30BCKc6Cvh97xXs46Yw39fQPUL25Gi9fhlUVckkzA66JaNbEtAUEGWzCxMLFtjXK1yjkrTqOtuYlAwIfP48KlamRLBcamUxyaHqRFiuJ4ZETbBkdHFWS8JTcpPYPtU5A0DU0HQ7RJW1k0QWb9aavoqG1g7ektfOLrX+DBZ+7k5ktXsnH7KJVihWRNHf5wlFw+S31TA6tXLOO6153LD+65m91HD/Hjn92NXtU52tPNlu27+fmdDzE3l2bb9j3cdd+TqC6bj33+G2TTOYJ1K9l5ZAw/c/zLT79JfV2S97z7L/jKP3ySgdEhFre3ItgqisvD4OAxLtuwmrUrljCeOsG9G58ll63g9WpkiwbpFFSLNidOZOgfnCRfLlMsGbTXNdHamMTUq5iWQbFcwZ0XSQYidLTWEw16CXv8nHHuCpKhGLZtkykUEWwHwzAQbAFNVlFcGn6XiiK7SI1N4zgOhlIhbeXJzhjk8yY+r4eQ5qVQqKDViOCXOZjajiS8eMXFvFD0Emy569NgWyetl4pu2kTWfRxGjhDtaOfD69v/4KlqsiRy/rvfAif2vex9RNZuAKPyirk5/mAEAZxTt4ffX8eeH9xyymLO8+K4VQl8EWJXfv2krHdsPP9Cw2pgese38brkk7LuPPO8FK9UkvlynA5/iq6iU828ePDa4JW4DvMuoj8/bAee2bkXUVHJFnUMywK9jGDpTE5PYblVQkWVxee2o7WJXHb+GnweFU30ISvuF34/OhLxaJyw143lALabgelBpg49xob19Rzddh/R5hDX33gFIycmWbGsDUnx8IPbb0PWJIJhlXXnXMDSrg4WdjbSvqiGxpoEHTUNqC4NQzDJUWZ8chqvCmuXLWHrrn68bje+JecgSSqLOxYhygrYHsZKBooPcqn8C8NhdJuJQzNcffoGNh/MUbZFHn7kTga682y893lEBAzDQsXE75N5eOOz1IRcCIZMLJ6kKRpm38ECb3n7x/nZHY9RkcoIskQmXyCdL2IKFmXdZC5XxhRlZNXDj37yT/ztF28jXJugqTHBgjPa8S0OoRrgGBJ1zQk8CTfukIYnooAF4aQXV1BFkEQKsyayy6E4U+BQ9wBuzU0k7OHHP7ubodQkR47t5dar38RNy89gbeNifvTkwzx9ZBtZPQ8yRD0h9m3ufsGp4vEQ8HsZnzjM1MRxcnNTzM5NMjqwiYUNdRRzZbAsHFOkWMiwc08Pjzz2PL29gxRLRQRRoJwrUOcLEPF4WFJTTy5ToHNlHEG2CXq9rFu0hkK5SiWr40jQ3hTHLbiZ6B5GEgUkUeSxXY/yvlvfzGN3/5gvfet27nvoSUzdoFSoEI268buhs7aJgNfPXKZMydDxCFW8boXGRAOLFi8mFo9TqUocPDZO38g4x4ZHwJbwSi4mJyfxerxIksXo1CySA7lslnJhjtRkmkw6gxUV0fwuJL8f23aYmpogNzdL2RIRVRd+xULWXCRCEYJ+N3X1zbg1H/m5EqVCha7WNloTdUTCPi5bs4G9Bw8j+oIcmeymLFXp2X+crs5FqBq4NBlFdLAFqIlFaEg2koiHaKmvBwR8Lo1QIEg2n2NweoruoQEm80W8hsy4U+LsxkYsl4DsyLhlFzl0NFkiXcwQE92MK2lKxQpWSeCqcy4gHvUzPj7MHRsfJBmLI5sav7z3V1imzr3PHMEwBXp6eggHfExNTKO4VBa013DTlW+gkCmz61Af23b1EAjFaWlKcPN1FyNKAnNlHd3UKRQtPvrXf0teDeN2uZkb3MMjTz/KkvYOVq1ehihJTE1P8YF3voWh1AS5SolgwMWqlSup6BrlqsVYuohu6NzxwOOct3IFS9qb0csF+k8M4ggCmXyFo71phsen8MseysUqhmngmAIRnx+PpiEhUinpzE3PcPxwP/WxGmzHIRFOEI9GKFUMBElBUiQEUcSlyCQTUVRZxSWLpPMlprM5FMXNdDbD8hUtSD6JodlZSkYJWYapzBzFcpmSlXnRZ+e8UPQSLGsKAtD5oYde9lrhq2+n5pwPkVizjsGnv8qxb7wBVf6fnf77/89aECXC6/7mZe2l91tXAxA/7+Mva52TwimcfvX7UFGfespizvPSzP72wyApHBh68YfUf4fjOITP/ghnvuETrHnrTczt/M58qdk8p5yTKc68nET2ZLkw5pPoeV5LnIzP18v9bM3zv5dCqczRgQme3LGfgGIzNpWhLpGgULWRFDdBDKpOmcm9w3Q/M4ptl/C63WgukGWIB4JIkkqxUCVXNpBEhbMakyRiUR7d/Sjf+PEXKHgMIt4AR/cPcNPVV7Fq2WksXRlDt6ssbkhQqjicSKUZGDhB0cwx1pfGrWhEk/V0NXYQ9YUJBYL4I14kxc+iZSu5bP0S9oylGewdRA+4GZvJ4fKG6J0eYni6D4IO4YYggiDT3NLMwuYW7tyylVhNPcm6VmpqzqCuoZ29xEkQAAAgAElEQVSzz7uMXCHPYPdmhvsPsemx39LYVM/ETIB8Ok9DJMqhI/1ceeWVCKLIeRdeQX/3JJTAHfLQ2pxEFST8fh8iINsWjYkgDkUQBOScREj14Yyb+NNezm47k8ZEDVaqytlLl6B6FcySSCTpZ2F7K0E1hG0JuP0Kqleib2gSv+qhLRnGZ8oIJqTG57AKRe6465ds2fo0LqvABZ0LWNe5jKXJJFHNw1duvwPLMtBcGlXdIBEI0b3/BJu27GZyYoKf/+Ient7azeBwClvX2b+/F7dHJlSfZCqfwXFgyeKlYDuYeonZuSl27B0k3ZshNVPgF/c8yc9/+gg//dFD/Pynj3Dng5txqwEWdi3EESQqFZ3ZXJqP/vWn+PCHPsgzm57hE3/xJS67+S/5zr33IHskwgu8BBu8+OvctDc3s3hBF45TJjUziGPaeLxejg+MkC5WkRUN24awV2PbniM4ogiWxcjEJBImhXyBWDhCIl5LrlAhV9LJTqcI+MN4/HGaGmoQJJCGFRbWJPno9VcyMjgMAszmTSRFwy+bSLKL9Ow41Uoey3hhIleypoHM7Cy/eeBhsGXGZya4eNmZPLN3G8FIjOvXr0PNCsRiYVyhIL++9x4s0UHRRARbxMgbCLYFZpVyroRh6wxPTyHIDn3Dwxzp6aZ/aoigFKYqlQjIbpr9QQbSs9RpcWrDPgpCEcfWqXf5aNLC9BfShHFz0aozufbcc/HIAj974D6qZoaQ5sXjcXPrTTdwvHeIdcvj5PMlntl5jGRdMw8/8SyRUIhypYQsu1mysJVwLEhdvA7dkimVCjTUJdH1CpNT0wwOjVJXV8PVN7yLqUwJn1rmwd/8M9t2H+LTH/kwV119GaIgkhofxDJBUlUu3nAWhmUwPD5JeqbMXQ8+QiQW4PQlbbhcHhLRGL2DJ8jkc1xwxkJcnhB61UA3dQTJAkvluf0HMXGwTRNVFOioa2D12qUEwz70gsrgQIXB4RSbt23D7VPwaRKFfIlA0IdX0wh4vGiaQzDgpVJyKGQK6IYJpoOsQN/wMHm5TNYuIbsVcoU8Hr+XQrpAoZhHL1df0hAzn039Nyhda5h57nd/9OsdxyF2889g4jh1519Mz9euIOhR/m08+/+Uqee+AZUCuvnHO3FEUYB4CxiVV3c0vCCeUkfR7/syzYsIrx1EUWDi3r/k/Hd8A+OPuKdt23nBRWRUSW37Fo+//5xXYJfzzHNqeKnJZv8TTmYS/OfsKprntcHJED///WvnRaI/P0RRwBEFTCzG9DKqW6RoVKivjaJSITWdI1UpMZOv4AgCsiaiqgLFSgWvy0MiHObgoSPc//CzuFWBilnk8eNb2XzgGUa7U3g8At0DA/R2j3PVJedRqNhEa5fQ1zfCkjOW0rpgGR6PxtKlbVx8yWX0d89Q0xqhaBnc+dOHeejuzXTW16MgkTaKvPHma3n2mR3olkljzM9MYYL21lXU1Nax/8BhvPUeqtkSM705LlhxGu974/Wc3dzJ9GyKiG8B1XKFZH0zisuLprlYe/pSpoe2k8sWCUYiZLMlNLHK+ESK6ZkysiRQE6tn4+OP4PV5OP/Ci9j1/H5aFjchGg6KJGMjgGWT18sMT03x5KE9CKoElk5bfROLupawoL0ezesgx9tYsv5y3vfJrzKrl0DTiDSE8IQCOJLAooXNOLaFXjEpzJoEgi78LpHsRIG5mSpLFy1h7ZozCEUjtHTUE4/5iYRrKVVEvnjbr7nrt/sZmy2w7vyz6FrRisulgWMjYDM+nuLvPvIuzjvrdG64YgPLujrxaC40QaFqSsRCEda2JmmpCXPVFWvx+Hxoisy3vn8fDzy8n5GREcYnZjgxNgayjeIV8NfIxNpcrD3rOjxqAlFxs7BZJTU+TjAR5KH7foheLvDQb+8mlZrgovWrcTeKeGo8OLqAO+7CG9VwaSq5YpWe/l5CniBuTcIoFqlLRKlvWUhrUxM+TURxedEtm5pYDblKBdMR0E2TXCVPS0c7kqii50sUC1n0agXTkbEsE0X1cd75F3Pu6tVQkdBN6OsfIBqMoQsyul7FHarB43KTCEfI5ArMFQrE/EEsK4+oxPCqXkZHhtiw/Ex2H9xP0hNlbG6Cf3nkYd5141spjU4S7UgQToTZP9RLsaRTtKsk6yLotkOxUiRel0BAoJCa5djAAJt7DqAHVdSSzJA1TZMrQUXQKVUsVEEh5xSYqxrMVUt4KwqZYpGMU8J24J2XX49dqlAxdG772fdJxoJUHYO1y1Zx4dnrsWyR99/6Vu596GH+4sZzGJsuUizmuOXGK/h/7N13mF1Xfe//9+6ntzlt+khTpJFkFatacrfcDTHFwKUkBAikUJLA5UKAJD/gBwFMIJQLJgkQcIzBFHdwES6ybMmqljTqml7PnF73Prv9/hDOL8m1wVi2sS/zeh79M2f2Xl+dOWc/z/o8a31XuVHArNco1hrIssCrtq6nWC0yW8jyy52HaegWkihzzy8eZ3BgGZ54H9l8Eb9T4rYf30M0EuSLn/obQpEEquLFweKpwwcYnx5FEgTmM2UcvCxdvAjDrHD11VezbddTHD09hyybKJrK2MyZPmjzFQvDdJBlEa83QK1m49VkpqYzuI5FOBzE49UQRQG9bhAMx2g0bZLpCEtXLGXVQB+zMwVi4QgDfR10puPU63UajQZeTWN+tkAxn8ejatQqJopHJDtfRRZEbKtJrlSmUKsiiSJmpYkkioTDHiRZQODZM4mFGfNvMPe9twHwnh8dfF7XxzZ/EPvUXhAlpg8ePut6FFkESSa1+QNndZ/83X8Nrkvf+28/65qeN0F4SVcUrfvYL16ysV5Ofqdh4HPgUSQe+94HSV72id+q1ugFH6Fl4/vY8s63UNj9NTRFehGrXLDg2Z3txPM/r3R4IS2sKlrwf4uzCYteqAB2wSuXrEpcsvUc3nHdpaQ0L+Vagwk9R0vQj+IN4koyvnQQFBnHdfnCTQ9w4013Uq3kuPm2u3nokYfZve8YomRyenoSyxZZt2gt/pqPJWsW0dPaQacQ44a3XAqEaVu8hh2HHqRZCbKsZz1HT02Q8GlEAwHmywIXX76aiBIkEbiA7/zgLtZtuox7736cRrFGbi7PzOgxhk4fYWR8CkH0sshjcvMtN/PLRx5lvjjPxUuvY9PWLVx+3SbaEylMo4GsiVx8yUUkk2mSyRRJTDauXYGimnz3li8xmSlRNXSiPlg9uJh9u3awacMSLr3kOiYnG+i6Qy13kFgohCQpfPDjn+b4oROE/QG8Hi+zEw5KwE880kJLOEJHLEUo7WPF5j4uu+4arrj+BnTBxdsaZM2mVfR0L0YWZZ7ccZSA30tXe5zWRIRQyMNwfhy76SBIoHgkyoUGe3YdxzFUWsIynS1eYn4/vR29dLW0oio+jg7N09W9hPe+/3+xfsMWgt52JodmqOWCOLaFIEnsPjHCRVdsRRBEZFWjr7+TnU8cpFk3eGznfjLZWeIRL4ePT+MTffTGuhg9cpK50QLRTo0tF29my6WDXPTqVVz06pVc+fr1XHXFem64fCtrl64nGvGxe/8Q+Wye2WyTYmEOMPGlNvGmd32AN563hjvu+yGf/NxfIEoCobYgsSUxOpYkSfalma/U6WxNcuDJ44zPWgQEmfWXXMzxySmOHdiB1cjhCwYIaTK6YZIp5REA1ZUwBAe90mRifJhSqUKxUMVt6lR1F02CsN+DxzF56JcPcOjYYV5/2bmMnx5moG8xhmEi2wYxjwRNg5MTk7S2dWKaBp2tKfRGhUZN59jpIRrVKmMHxnDtOoOLlrCkfymtWoRXnXc+X/vR96lHQ8ydmuVktYprgOIVWNTRxvDUNMFwiJZEgnypyJ1P7OTxudOM20XCUoCRzBh1j0SXN8lsrYTXUfCKEnPGmcUPETHE8lAbR6tZyiZM6g1W9y5BEGz8sSC79+3j/W//My6/cCsXbriart4ltLe24lgeTANWr1rKe//uYyxp93Hfk+PMzWXY9tjj+MMBcnMZbNshGIry5tdfRqVQ5A3Xns/w6Ch7Dhzm3IuvpS4H2DDYgd8psG37fVy9+SI+9sEPEorEUFURV3CQbFi3ejOD/UtQZA/pVIrLL9mA5pXp6Wxn1+M78MgeolGNKy7aQro1gO0YTMzkOHHqBLbVwLFMcsUipllnfGYKWxS4Z9sT5OeLWEaTuek8pZqOa9iIag1brrFmeR9NVyLmC+BVZebzFabn8yBaCNjUKxV6+pJ4/RqRZJBQVMFoGDiWhYmBqCqYTRMFGde1yJSKGIKDX/WzpLsL11loZv28CYIAgsCPvvDbNbWu6RbRTX8Jtkno3AtJbbkU8lPMlYyzrmlm+xfBddFN+3nfQxAE0Hzkn3ryrOt5/kW8tB+/zO4dL+l4v0v/OXB5JTRzXtYehET3c9rm6bou0Y0fAL3K47d/hrv/9LyXoMIFC36zs53EvpAWVhU9P79P/9dXmt/2M72w1WzB00J+P5v7VzBdLrN97wimY1MrGXgEl2pNp9E08ekOQY+MIIDlOuDCyFgRVYuy92iOWlkn1Rph+449jE+P89lPfpvhoRkU1Qu2SF6oM5Od5WOf+RSf+NSHUbF4x7veylx+inDYYmT0OF/91g85PTKNlyAr11zL2MQR4pEQb377H5ErNpiZzFDMVLhv++OsXD7AbCFHudpg50gFN2ggyxICDmvO6eXPX/9O+tOD1GsNDh49gWE7VJ0ClmVRrzdZtm4ZbnaEbffczvLFXYjoRCIhEokYqXiYlkiQubEJjKaB3+8jnYoyOpNjPlsgEY/i8/p5cvsR6oZFtlDirz7wv0h6PYwOzXLg8DGOn5ogP1FFdB0mp0fw+730tvchahq26SJLIk3TZOvWGwj6fIiyQiIWRvNoKKKCKEqkB4I06zaiCB0tETSfTc00qDkVGg2LuUweQfVhNMvoeo7ZmQyOBILrsmXTSkKaRTrqIkoyjmnS3dnG4MAyRBEkAf799p30Lh1A1UQCES8Hh49xYnic/q40nR0dxFqiYNsU8iUcE2rWDPV6E9mVGBTb+R+v+0ckaSXfvvkRkDVOHh/C7w8heoIUik1WrlxHW8dK/MEQVtPklu17iCW9WKaCWLdIpSL0BgKE/T1s8PYAImOnJ6lYLvPTc3ijEaxmg5ZkK29+yx/S19PNyMkTzBdKmMhIjkMqFiPWHqKUr5FtlMlV8zhWlWKxhuwPMpUZRhYBy2Zsdh6vIiOKApKssvf4Ce7atp3RiWkkLGoNAweHlUuXUCvMsnrlKjyyhN8fQlDDBFWRTH6eQrXA7T/9OY/ueJIjIwfp6Wrnrv2PE477uGrjJpKRENGohiJrDB0eYWJ2mqg/gCRKTExNMZvPUq1Wkb0SK8P9jDpzRNUoS2MJTNegRQrSEohyqpKh0+ehxfFSzhV4KDOCLxLG9im0G35Ux+b4yCjd7W1csGELmcw0mfkpqpUy2x95nF27DyCLFo89dZhCUSQdDyEpNWyjzqMHZ7lw43nkC3V8gSgnRqZIJlRy2SK9bUG+8d0fMDJVpqq0UayUOX9VN9/53s0IrsUH/+IvufyqzShagEKpRCFfQJNEYsk4tmlQLGap1HK0dbSRnc/Q1ZYmN5/HdgVcoUm+orPvwCkmxrM0GhZVw0CUQ3Qk0hi2QTIWRHAdPLIPnyxh1HWQZEwTDF0nPz2N6NZZ3z/I+uUriAT9JCNh5k8WOHl6DEWw8PsVREQkwcWyRHK5GqFAmLjXj15tINsiXr8HXIl6RceVJEIeD7VyE00TkQSRZMTPXHaSZsN81mfnQlD0HHz1Gx8CnvvKjOgVn6Hjog8SWHkehSe/ytg3b+DYjdfx5g+/i8Gr/+asT3nyKBJ4g7Ru+cuzWi3yhve/FYz6WdVyVsKpl3Y8o/bSjrfgORMEgcKP30126BD7RgrP+nsfvffYma1mikZh99cYbA+9hFUuWPDszqbp9NPXvhinPC0EHwv+b1LY/bXn9JleWEW04D+zXai4Nj09HSRXBPD5JVTBywOzQwQUCWyTsBwl3h/CE1TwxxSu2riC6ZkSmqhhNxr0tyURLBHTsPjQB27kGzf+T977JzdQPDzCHbc8DBaY8yqXXb+Ja67agOrXKNaHCAVtFi1ZQ9YUeNMNV/GW13Xyhje9g0ceeJDTTz2CYRp8/ctf4U2vvxYckcU9PaSiLcxk8+zceZKZxhzz+THqmSqqpBP1evjhLXdQqzpsPHeAnoF+UosXMzo1gaiEqLqHuWDLCn6+7afc+sRdLF06QL3koZK3qBXy3P/LB/jKt3+EUTfYv3cXq1YsxXIkihWZdSuv5O7bb6M+OcbxY0+RWKQRDfhRVYW/+PN3ccGm17Lh/GsoZBzOOWcpXclWmoIDcp35TA5fOEVXpANLd2mJxZBlmd17HmbDymU0mw36e/uIBIL4BBEcEbMEvhZQvAoj0wUaJZ0Wn4eAN8DY6AQ9PW14VY0tGy5mzdLFpFIdaLKMrMo89MgdpNN+BNlicHAxiqKwrP9SLDRmiwKqpnL91jVI5iQe1UVvCKzuX8ljBw/z8L5DnBif4uNfvIlb7tnB3bt2UZxtIlo2pmgRDPuYNBQ2Levmmmuv5Wvf/A4D6VaK2dOMjJ5EN0wEV+Dx7fdilIucPj1KZnaK9/3JOzl2cIbZiTw+NUDa18L6ReuIFOPQEsRxJGKpOIuSaTSPh/62NJmpefp7FuFUa7iuzeK+5SzqbuPVW7ewcc0a5vJ56g2L0ck8NcPBaDYpViqcmpwm7gvRleyhLR5HdCES9jE2O8FVF61kz/6jRIM+ZNclV6lzajZHWzJGuZBjZmYcBIFDI2OMzBTAaeD32sSiKZYtWYlP8XHoyHEEweQ1W65k/9gIq7oHcQyXf//RPXQvX0XM9dCzrJvsfIVMfh5BkTk+PsyT4yephWwG0l0MDc9w8577SOhBDM1gvpQloUbQfF4qlkWrHEJDY9zJEu5KkpT9xAyN1aE4QjjA8Zkx7ntqH/uOHsWRobUlQUAJ4XV1zj13gNe8+goe2Pkkb7luKxdsWsG6lVsJyj4uXtNK07DYezSL7UA04iHR0oLqTbCoq5MLL76A97//r8mbGv3dKdzcBPf+/Gf88ZuuZ+N5G2lJJhAlCVOvEwkFiERiyPKZYKa9p5u5+Rls18VoNFi5ejXZTJM3vu4KlvZ14dP8mBYo4pnTyURFRZA0TLuBbdfwKn5m5/NoHj+uqmAi4NVk5mdnmcxM8dTQETo7ewh50nhVD35JQBJkIkGVVRsHaE2kcVw/RllH82pomoKkeJEkhWq9RK3ZoCXWQtXU0Rs1rIZOoiVExKfRME2Cmobf40eTVUxbYepAEX5NlLAQFD0D13VxHPc/Qpi3ru0G4PJ/euw3XvupB05AcYY9d/6/THzrjf/lta++ZgW4DvGL/+asa8w+/BlwXYr1Z08Bf5PPXzf4kvYI+u/6zlsLPHMA95/f/xeM657Z7vZ7QBCEl/2Ws2cyesf/4rK3fuYZa4+e99d88+++xoltX6Tw2Od/B9UtWPDCebaVDi9kWPRCTJAXJtkLXo6e7fuxcOz9gmdSyJf4yS9OgyzhqUK15BJYbLGoewl1o4aieWkaVWSviicpcd7iAaayOol4nIBHJubXsBw4fnQan0/l/e95H5WajmmZaGEFs1Hl/NVXsPWKG4gFo2RLefxKFMlajCCkObT/IGozw6GnHmbPUxJ33XU/9co8g0v6eXLfEK99zXXs3neMkC9JuWRz/ESGC7e8nm9//4soEfCkPMR6PIQjUd5+1Tpsc4axiTG6uteRn6ri9WhYrkxrOEjpVB2hOcfU5Cz+SADXsmmYDaLBMI/vPsKR2SznrV3N6bks4YDK/T/4d1Lpdi67eANms4FhZLjxe5+hPD/EOSuW49oOY5OTNJsF/vbvP4kiS0iCzFUXXEFZrxAO+Nm//wijE1Ocs3YdGzZchSgKaKqCC0hijaHDp+lJtdOejNMejXPwqSlCbSK1ep1mGSRsLjm3l7ZoiGKhyfGROU4PT/KlL30HRJOTEyfJUcGr5Bgef4D5yT3Mjs1TyFQxKgY+RcCyLfY/eR+f/vJHefdfvJ8b3vFh/uzDn+X7P7qfG2/6KYdPHKdUrTJfLnBybpyRzBSRPpnkOX7Sg34Gl8RxRIdKrcb0fIElK4LccvvPsS2TcrXK2GyOulFDEIqcOHqMhmFQrVhYQgVNGScUmEXXi6w9p5/VKwdRTS+6C7NmjVSXQ1mvUq9VUb0qiXSci1YvRvRFiLUkKJRK9Pe2kmxNk2xvZc36VZi2wOmJcZJtLQgNg3rBRBRMQv4AI5M5Ui1RYsk4it/P0OgoguohX2nQP3gOftXDpjVLaEuEsVyQZJlVvd1YRo0aMqmwD91oIDl11iyKoqkqqqKiSTaWUcVwmihSkNmReWamp0iHWrj6vAsQvQKbVw5y8MgQ5fk6uw4fJLDYQ3ayRLZS5tTUPJF4CGnaouitcMk5/fgcFUl18edE5qtlBgY6KReqzE1O0Sw02ZedIaoGGZ85TcoOodkGM7UKU5UJZmsV0gEvj506zs8PbOfQyAytnUkkT4CHH9rHD390D9dctJmpqQIPPTaEaecZXDpAOBIl6oGqpaBpLj/7+YMMj5yiWi1TqJkMFzzc8cv9rBqIsevhe1iytItrLr+WVGuaYMCPR1Xwez14vBKiKGPaNrbgYpo62A4rz1nJ7MwUxVIes6mzZDBKZjaH44JtNWmNhqnW57BsB9O2UQSTht5kbC5HuVKivSWCbILYNPDICqMjE/jCAYanxrnogk14FRHF4+L1Q0uwhbYWP6LoQZJkZmdzyKILgoIjCtiul2DQg9cj4A2EKJctHEfHbBoItottWRi1OsGAQsjrxRVsSoUKRkOnrjeIhGIoqvKsz86F86N/xXFczuwyE37177++/uaPvIdbPvct+MsLnvF613WJXfxxaJTJ7fzKMx57L4oCc4/9I6nNH2B0vkZPwv+86xUFQBBYfNmHKez88vO6R8grw69CsWeq98X29bedy5V3P3OPpBetHu/vzwqUV8KWs/8u7FMg3UvsTd+m8MN3nvleXfhR0KsQTlF48BO/6xIXLPi1np6k/rrX4dcHMM911cQLVdOCBa8kT38//vvnemGb2YJnIykiNeEUsrKEYFsri1saWLbNx//4o3x++mPkyjqSoKJkHNbH+qg0vfR3BsmKEtXsKB5vkIZuEAt6iEYj6PIoTbObkD/MH17/Wh569DhHTu9h+bJLWNJzAdMzGTpbO/jHr34cx1S5cOMyzKpJd18XvqDC6IlpBrr72P7UTq6JBPjJ939KNOhHd0362lvZfKxGc+MS7v7xD1nbspoj4gi+qES7oXF6rohXEfjhrbcQDEYYGja58PwO+ntSbN+3n0UrOxidGEUWVJyMCWkBTffTv2QxTxwYopZT6DlnkHPWnUc02YYsKeTzBYSaRE+XjKAtotuO49o2vqbN8OkJ8qU8kXiQa//gTcxmCiwePIevfu8rtC9LoJs2gsfCAWq1Ol/98peZmprm+le/hsuvfRXZuRo7HjzINZ/7MA/esZ0dTx2gVmrg82l4QwqNok2j4fLQwVEymQI+v4++7g4mp7NUqjX+7m9vQhAlXNfln5Xb8QY1Lr1sM4bsw3FcJLcVjyeIIIgcmTlGKOHgbwmgKApNw0FRFToWpVBNi9Iph6uuOA/N72LMW2Rny5h6nXGxSF9vinRXB4FAiFpDRxZk2tJeCtkCiiJz++33sKirHQWXRd0d4EBTL9LIBTAr0NnTiuQAisTG9es4PnKa8aFRCp45Xv0HVxHw+klEQliGztJVA+x64jBtiSRr20Is71tB79JluIJMZmKafNnAtC3ikThNySBbqTDQ00G2mOOXTx7ldZdv4Y67djEyNcPmNedRll1yuQz97QnyM1PIK3vwqQ77jo3S2tpDa9zHxPQ8khZhMKIwOl9gY38r1ckKdfwsafOy7anTtISDjE5NEgoHkRUBq9lkdG4OM1fj1jtu56p1l/Dkqf2Ualku2biB+/Y8ji+p4KRkHnt4J1ddspU7j+7C8gcRaxZmwiEg+EGAaDRCfrLJg4/upqlbRKIB2lNpdp4+iNhwaRXizJAnlFQw9DrntLUiSQqOIdCZCFIo6RwtDJPOxahLFqcmM7S2RfnurXfRvihNzSljTErs2HeIUqXJpnUrOTlbZf+ogRyNogU6mNPDHBqf55yli2itm3hFlx17h3jz66+l3HBwBajV69i2i2U1EWUFxxYQRBHBlVAUjUbDoF41Scc7wHUpFWsk2zoR3DHa0usYOjrM0MlhZvIWXk1ClXyYzSZej4aiKjQ9ZxZoVOwqfkXiigs2UK1WyI+X2bJmI5bjoAV9NItVSvMG3oDGv3z/dqyGwLotG+nrbiNXr+IVRBpOjaZ0pn+x1VTJN/MIgkAo2YLtOOi2jSaIlOolyhUJf0jE4w/gCQZoZG28ksqSzQGmZqef9dm5EBT9ytMh0bP5ymtWcMs/uJyeq9KbCvyX1/4jJNKrHHvgC7825FBlEZKLWfMHf0vh8S+eRb0CSApYzbO7B9C0HTziS98IuPdXQdlLutDn9ygoeqWa++G7SV36MeJv/u6ZRvCuy+T2L+P3LDyuFry8/aaA57cNfxYCngULntl/D4sWQqIFv45ru8weK+C5zmb40BjLels5Xcxw0z9+nL50C6XqNJlcns9+7pv8/MFH+Kvrz2PfngPcfOtPMCSdNakEE7qNKnoZPT2JHIW+7i5cQcSxm3z0L/4Qy9eJIolMz2RoS/q47cf/THdnitmZOuWSyNLlHdSqDdpbYqzeuJj5Qp3WTIKf/vgr2GGLVLiVoNLKqjVXUl43y6JkClmQ2Dd9GLImA/4BenvSzBdyxKNxTLeB7Vhs2NhDuTDKUGacpmGDaDNXcpA1L7Ij4VFcVna1UtDLXHjFG8jMTKHFPfiDMbyrGQ4AACAASURBVH7ys7tYMtjHq6+4hJHxOZ7YvZ++pZ14BZlqvYHrSIycmiES0Shmyvz7v/wLb3r7n1AsZEnFOtHrFulYCFfwgQuSYCHKJktWJDk6f4D8T8dwHAfHtjk5PoJuOKR8KZSIQC1nYNs2oVaZwkQTPdQgng4gIjKZnUX3Gqzc0k88GGc+U0fP+nBci3hLCrvhwRsMYlllbNNi74FDyLLMpeu3sv+JJxg2R/jQe75Orabz9e9+iM+++0be95GvMHguzMzNgq3iuB4K9Swt/gBuOc899x5BUo/gOIAAAuAKNyNKDrIiMtDbS8PQaU220tuXRFZibNn0PhItUW75zreYeGqUSDJARyzBrt27WL18kL17D6I4fk6cGKOtPYluOEiSSdQfwid5mJyf5x1v/x/U63UkSaLZNIi3Jkl1JOnq7uSmf/0etmTh86kUSgVicQ8T4xVuufNhXr31Gg4OHcFqNOhJdiD7AwyfOko8mcYWDEYn5/ApAjI22fkCTcthWVcUxXUJBH0Ikkh7KECllmFPxmJVZ5ySbtGeiFB3ZIIeD/P5GfTpOa6+6AJm61VuffRetp5zLjOZGfY+dZilvSsZHX+KlSuWM2760M0KEa8H19GpCzLtUgsVbZ6KazCdzxPUNBSg4WuiSAGePHGUtBSlXq9BPEygpDKdK9Pji1PKGcyJFSwDLgqFGK6XWdXWw/7TR+hvX0xfXxcls0ZnZxwtFEBqNLAEk/FsllQwwbZHdqJ5/GjhNKnEciq2zeSxYRanAoTVCoLqx+/18cE//WOOHhsmFAojqyoBjx/TNDGbBh5ZxrIMbMsmGPCSz9fRmyaNhk1XTycuEoIg4jg2qifBzid3k0qmEEUv5y5PcOzUCDXdBNdCtx38LkiigmmWWdbVQbgljGsbBFQfCCKCJGA1TGRJxOvRqOplnnx0hpnZMqKksHppO0dGJzGdJpKsoIl+ysUcjYqN1+NBMEDxiMzPZpAdEcFxURSFtnAYV5YoVRskgwmCkQCnhCm6Iy1EY0EeFfc/67NzYevZrzxTSOQ4Lo+dzNL57h+eWcEjSqy77iP/x+/FtnwIGmXyO79MKuz5jWPN3/EBMA16/uzHZ1Xzzp/8P2d1/dO2fvHRF+Q+v61YQAXAeQm2SD29lWlgy7oXfawFZ0eVRXBs7JN7INFDYffXFkKiBa8ozxQI/bY9U16MfkVn4+VSx0thIWx4Zfjv35GFv9uCZ6MqKn29nXz3rl8SWRQk0dJBOB7jF08dY3hqhnQ8zd+/951847u38NO7buNN7/kbdh2eoSLNkApGyDaaWHYd1esh0RKjPtfklwcf5+jEEJqqIEoiN/7DZylXKgxPH+COe36GqKiocoK3vOZCWlsl9h+bprdvNQ/84gcEY92oso/+3iUsXdSNJkks7e5j0bI+yo1xgv52nho6hD9oolWhWKswPpPhoUO7uefRo4yXZK557Vs5cPgUB4+cYFH/ZsI2RPwatUaDbHGCrRdu4vXXXcQKb5htp7dz0QWXo1fr2C7c9PV/Zcejd+GX69QrRzm0dyeu63LxpgtxTAG9ajB0bIxt2/bSnmrFIweIpLz09/cjKyrJZJKTB6eolw3KhoWuG7iAKyiIcRCjGi3RIMeOH+eC1yymZyDJLx9+jBOlUfRQHc0TxBPRCCSDBKNRrrh6HYu8PaSaKc6JLaa3bTHdwTa63RCXn/t6GkvWoF65EVFQEIwZxo/v5u6ffIc3vmYd7e40yYiF69j09rSD7OInjms6GHWd/LCIJQiMnniC6bkCgVgLfb39jM2cRnIbjEyO4TguXatUVlwa4up3Jrn0+hjXvDXJRa9t5aI3pFi0JkVPRCUR8eLzBjBdAVUReXLffm796U+5+Wf3sW33XsZyNje862ModYfhoWES/lY8skQkFCBXqDIxM0WunOfksRH8Pj/XrF+JKEG9XkXX6786QAlMy+amm/8NwdNk5cAAYY8P2SuiCBKLO+OYhsNN3/43XNMh3dZNtlphci6DJxDDF4zj80eomhKZMjQtm0qlTHs6DbbFeK7E1HyRfF0nWy8juCIDHREOT88zmiuj+sMMdLTjmGUqus22XYf4t1t/wlNDh9ncv4x0rIXBtm7a+xJMzY6STvSx9+gQVtDCVhVW9/QSkUJYuIyVMpQaFTwGJAMBbJr09XQQk0NMTc2gmZAVKzRtl5nMNLYgk3R8zJTKFApFerxhFLHBSGaeoCiyO3cCXDhw+hioIo7fZc6okS9msYM2EX+YjJUn65bwhH04okAkHKZcqRCJ+FnR6SUZUxBFGVXzYbkCHV2tBEJBJqYzGI06xWqZar2GKMmoknqmub3VpFAqIAkyjmMSj0dpNk3qjSoCYDkWLS1xBgcG6e3rYNlAF+WqAYKMKgloskRI0VA8Puay85iuytTcHJJhoCgic8UZkl1xnGYTVRaolItMZ2f57i33Uag7JFraaG9vJ1cuE4/6kQQHp1IjKPqJqEFE0aVQK6CbDYrFKoLjYGETDwcQVYWGpaL4I1y9+VK62pMEfBJ77z9IUPPRLFnI4rPPsRaComfg/upEsY2f2say1hBj33wDgiCw+KprgTMB0tNyFQOsJrmdX3nOW31kSQRZpbRv+1nV2Zs6syLHss+uz9DQfQ+d1fVna7qgv+hjPJ1Fbf/oJS/6WAvOTqakn2myHkpQuOeDv+tyFiw4a7/LiewrffL8Sq9/wYtnoWH1gudKlmW6O5ew5YI38qZL3wo+H4WRKvFYhJPzJRYvb6Vcr9NsuKxfs5nv/e8v8J4/upze1HLKRZ2mraOoKsVSAVnyMdjTgz8rMZrPcWp0kkWdaf7x0x/nyOkHKczUqDcauFaFUmmWn/1iL6anl7C/xu5924lFUySiEQLhMJdfciFmTueS1Zdwxz2PISt+fvnwrex84t/43GdvxBJlHBdMyWZ6bppcxkN752JyxQxHD+whM3UCRRGYz+ZRHC/FmSr5iTzLenuZqExyuprHSQTJjdb44lf+Ac3nJTMzwZotW9m77xhai4NuW+BWsCyLlvYl9CzaQji9htfd8C5WrliBJLg0dAuf18Nrb7gGQYRqzaCcK3PJplezcfBq1q7Yiq7rBDwaAZ+fiBxg8pjO2tV/wIldFsuWr6Q1FiIeibKo88yWHY/fh2WJSKqG7sqUrSaOptLwCLiqTXdris7uNIvakhz/1+/izFWQVS9//kev433vej2JdCtHThyErtCZY+RFkbGpIrWGxMUrzwMEItEIr7psA2NzLt5wF0bepHiqgt1o4pEipBMpoqEEAdvPluVrWN61mbRnC2sHrqcvdS3req6j1V7N4kgPrckUbX4PDUOnUdZRqHD84HaCnhw/vv1O/uSvP0G8Psu/fvNbOAmZgeU9xIIe4nEvbqNBTzRKWyzG9FyekfFxTo+eYsfQaUrzU7Qk2lBUFUEUUFUV27Xwef2sXraK1tYOrrp0EwOtbbS2xvEGZTRZIx6OsGPvXjK5DB5FRkNnPjdHvZrBpyn0tEZZ1plganaWVQM9DE/NUK2W8SsyTb1BtaqjOBAKBciUDdoScRqNBu0RPyOz4wQCLWiyimub1ApVXrXhPKKuzF0PP4LjCXI6UySgKnS0t2DbEobgkM3OMXFsCl9rK8FQGKNm0BWKEAp6OZGfQVUlDo8ME/TIhIMhxGgQtylgiSYRN4Bu6WQtA9F0cR2BbK1ImxjhVHmGomgRsHzMFYokfQHEVg9BLcjagX6KjolUFRjRZ+kPd6C7Tfw+mcsuOY/JyWna0gnSPoNkIoageRBlBb3ZRG/WmZmbZmo6x9jYCKJro8oiPp8PGxvLAY8vhM8bxHFc/H6VaLiFUrWM3rSYnJxDEBwioSiqx0dnTzeaKpJKtXDJhesQJRFBBJ/fT8Uw8Pr8dHb0kIqmWHtOP4dmMtx2/w7mikWaep16tcbho6d5aOcB7vrFDhRVxdKLXH3+WirlKpLlYJkuU5MzNCyLYnGeRqlIMVekUitTbOg4sogtyohITM4UCYaC9Pd2siTZQblWJOYPE/NE+YNrzwe3ybaHdlIoVp712bkQFP0nrutSNyxOzlbRmza7PnEZsYD6H1vJnvy7ywFoueijWLZD9KKP0XfZh8g+S0+iXye744vgOsyXjeddr/irYOqsDlETBKiXzuIGZ2/tB2570cd48PgcAIr0yuvb80J4pTS2jm75nyzZ+iFmdvwThW1/97suZ8GCs3Y2IdHC5HfBgv/TwrH3C35boigS7eqjptf5l+/cxL33PkCl0iDpiSBaMD6ax1EV3vb2jcgemceevJ8Tuw6z/oLX0tW1nEq+SnsiQkc6QUUvEI5rDM9Mk24G2Ht6L48e2c3Rqb3IhkklP4NP8ZLLGziuj7ZkjO3b7uS+X+xlcPFyDDdIrpCjs7MNU0jwjr/6e4Kt/bztj9/F3v33EkmHaenezLotl5Bu78YXSJEKJAj6/Fy2eRXVSoFcpsj42EF6uiIc2ruTQ8dOMJMVmJqcpVIweGjbfuLhKF5JRm+ILGlfgqzEyU8cZMmKNfi0ILbrcO7KdUQdODU/hyRJuM0at9z8LXY89gCNpolX8+MIKqIokvQk+dynb0SRFLoXd+PxS9x5523s2ncv+w49RNAfoFzXMXSHk4en+fKX/4nXvu41zE1OsWfnfkxcBFHAts7sJAh4fXgVFU1V0Y0a4YQHLWhSqdTAK6DGNbKmzTd37kJRNS7p7GTDucvIFuqIkszXP/1eZosFQsEYSxctQhQFQqE0b33rn9C7bD2SJFIplVg50MNt//pJXnvlANdctom2riDlbAm/10/TlJBUCa/Xy/hElr5F/azoHySZSBLwevB4NZwmVIt19k2MsG9sFluUMG2XI4dPENKC/MtPHsCraly79RJOSjozzYMojsThw8eJ90RpaYkSCYZRJJWgqLLr0YM0DIVly5ZSKBX45x/8HBwd1zFx7eaZJtOiRCCiEYoEsXUX25QZHOilM9FKo2aiqBLIMpqmcGr6NO1tXeTKDfy+AJl8jooLmVyBqqMSCvg4Ol0h7lUo1CwUTwBZsJjNl+hNe4hHAkiSRCToozPZwsmJKWQLmnqdQMCPogbJFwt86sav0JJKcv35lzI9eYJIQKPUqLHnyEFed+nl1Co1lBYv7UtamT8yTLXcoNsbY7SWp2YZBBUPHkchJGgU9SauItColZFlGbvqULabLO7owleVcA0Tq2oQtzxUAjZdWgKrqiPUdKaaJeYdC08F/F4V3XQJhTSsoECLL8R4ZY4uXxRJSbPt0SNctmU1oj5BplJhz9ApjFqNkWPHqeYLiK7MN753K8uWD9Df18fXvv0jasU59HoVx3IoVzJYzRqSLBHw+9AtAcuBRqOO64q0t3cyNZshl5uhWivg82lYtgfNo1Cr6ygejUg4jt/fQn9nK1bTQKRBvlZk96FTFAtl7KbAxGyJTKHEwVOjPLH/KPOzOUyjSaWQp29RJ67soKoq927bjdGok/a3ENUCHD0xzvhsDkmS6Y+3sbp/GbFQhO5Ukq50gg3nrqQ9msYn+REEiWbDRm/o7N83xMiJOe64cxdRTwBNfvb2MwtBEWcm0TXD4snhAnMlg75UgLBP+S/hj+u6Z7afeYNg1Ehc9rfQKDN03+eRnkfjZUkUwBdm4I3/9Lzrfrq+qm4973sgnNnm87vw9Aosa37qRR/r3V997L+M+fvo5RwWua5L9PwPg6kzsf3LeNSXvmfWggUvhBejue7v07avBQueq4WQaMFz1WzqnBrawfihR2hYJoIg4o8rtKXi+Pw+1l/6avyKl09/4UbM+jFOzZ1E1PP4vR5mCkXSXUspNUq0dbSybGARoi1QrtdZtmotp0bn2b3rCId2j5PLVrBcgWrVwTYtquUMgiBjWQqr1l7DTd/+MYdOHEIRDH5x94N8/9YfsvvAHmzTJjt1kLpeweOoNGo6igK7th+gqzVBQPNgmCai5OL3hVE9Go8fPEqlAqlUhGJ2nj0H9tMwBATXYe1gG8dPnMawDJom2KLKQFuE3qUayVQKXa/T07+GoSNP0fR5aBoGuq6zZ/deoiEvklAiHPDhj0Zo6CYezXumB4poY+SexMg+weBAO4sWRchMzqBaJpFIkGqlQkdnAiElnTkoR4A773uE9pZewv4AkUAARZPxe300agYeTcXv8bJuxQCCIpJOtuLxqcQCPvwBD5Igc76iMviB9/HInt0kRZtEKoVlNPjQ3/9vfIqGoVd4Yu+eM0GX49JoFJk6dZif/uhW/u173+Ajn/oqd//icb76zdv4289+nR/84AF+cNt97Bs6yPDUMDXDwvVY4CgEPT6GxoZpNk2ymRLz8zkkRDTNg2MLuI5LpCVNqayjyTKmAB09y7FsG0EUaetKofhEduzZR65YojURJ+D3EdK8RHx+Ht22m1goTLVRYnK2wMnxaWr1xpnjyR0T1zaxbYe5uTm6E2lEWSLdmsBFoa21i0gwzJqepYiOSKFSJR2NUsoX2L7nCUJeDb1pIOIiCC4zxTIBj4SBQEAVGCvUScQizFfLNG0Fo+lyalanaTSxbYuR2QLpVBzLdmhLxojHwgS8GomIRr2hU6rUeOT+X3L/0E5W9a9hVe8gaX+QQNDP/bu2k25J8eTQcY5nRhlcO8AfnX8x+xpFIr4AlaaO4qrYlsC0WWVRawxJckmpYerFCkrAg1fUOH3sOEW9gmxLxKJRKtg0R8uY+SresovrVYiZXuSKwbHsJKIps2diCL1ooYoSgmlxfv8gFklq9SaDPUEOnX6Kab1KQ9fRazp33PMIh0YnKFTrfOnr/4xkOhQKRQRR4arLLuGO+7dTrVbxeT2oso9cKYuulzBME01VsawmkUiEYimD65q4jsup4UmqFZ1cLo+iyPT1LcGVZLrSYVwXdLOOiYem1aBpgezRkGSJdCpFKBZCN5p4ZIUdT+xnWX8vkaBGKhIllkiSL+Qp53UMQ8frhUgkgNejUWtUEOsukiHS39WB5I3h13wkI3EkSSXiC1Iql1BEEce2cE0bp2nxwAN72XdsmFK1QUvQS6lZ49fNDn+vG384jkupYeK4EPTIbFgcfdYg4emfz277NOnNHwCryeT2L+HXnv9bOPfgJ0md935c1z2rAGPHaJZXrWh7fhdrPmg8+5KzF50ggFF70YcpHXjiJeyY/fIjCMLLNihqNG3atnwARIn8rue+hXPBgpezFyokeqFPQFvw7Bbe55e3hVVEC54vw7TITM+iaRKLYmmUFg1DqlHI5UnFIvzith9gqxqKlWBsMkt8SQc5xcFvFrn0yss5dvwUD/58G+dfvJF8RmDnE+Oko37uvuMnkLc4d/0qho5nqWZNVNFHsZpl/aqlnLdmkIf3juJRMjy54w6irT4euv8BqoVpvHKMWFcfAZ+HYnaGH95xN5svWoE55+Jf5CPVvohwNM6GcxYTjHmZGBvDMOtIsoQsSkTDbRw9eYIlPe3MTE2zYd1Kjh87Tmc6Ttfi5Rx+8F4G+jrBXyUR9SD4YapSJSE7eDwa08Nz6F1+MjNZ/OEkVtPEQSTgj1Kt5xCA9v6l0DhzktKRqSO094UJ+nyo0QimIrH7scOIkkitUqO7Pc3I5AzpQBclqUGzaWDZLm+4/lI6z4kjlgIIoky1UUcURDyagkfzIItwaniWNUvW0pvyEgkGmZic5OfbD+JXFQ7VTjKXzSK4Fl949Oc0v9VElASaus2xb44iCODxy3zsIxswbYuvfu+TeFpEZEnD8pv0XpbGqyhIXgmrKhOIysiOF03QMG0HVYZM7iSqnCJXKlCv1vj8d2+mXM7wh2/Ziub3UJmwECWFWCSMoniJtURolGB4LIdHEPjSZz/Nm9/2dmrlJnEhSDKSpqczxfR8nqhHIxaPILrgeoII5Trplji649LW2oEqgmmUEOUYiieEV5a58/7HWboogip5mZ6eoK93MdVqDb2uc/NdDxMJRXFsi2Klgl/zgOOgah5WtbUSDGmUcwUmMg1GZrNcvLqXRlMkETHJl6o4rkg6nWRseJhCtYEiF2nUqyxubUMWLa7cuIadR0+TKZaJhMPUGjptiSS5WpX9Q6dZ5V3JGDMUrTzXX3wVDx58lKao4NE0or4QomtzeOQ4R48eZ2N6MfPVOdKxCFOFeXJ6Ga+kMDJfJugL0LQdBhNLmBiew/E6SHWbNb19zFAGV6aWrSGJEigiDSyc6TxCQGF0LEOkVeVkZYpSpogWkkmE06xd1svBcZ2lA0kCbhlRFZiZb6DWBFxslIhD5/IeiiOzVGpVNm1azwMPPsqP77qXay67mJBP5QfHJlm/eg6PV8WnBvGoQRp6jaZRIRgKIwgiIirpdCdT02ME/THS6TSC6DA+NcWac1ZTKZdIp1K0RM5nz/6jCK5FvV5HN2wqlTyKBIWGw9uuPpfHnjiG5Qlx4NgIH/7TN5CIt3P4yCke33OQZnEaVRZxZQevqnLe+hXMZ8s0Ggaa7eL3aiRiQWbGsvQv7cNCIpFs4dDJY+RrJuFAgFyxhi/upWJUmRnLMTMzT1MwmCwU6GlL4/P44NdERb+XQZHjuORrTcoNi64WL5IoPOfJqSqfWYSVPu+iswqJ4P/fBmWYzlmtoPj8PSfOIijy/26DIlEC88XvUYTVPHNK3O+xp8Oil1MQs3ekwNY3fAJCCfIP/u3LqrYFC87WwoR2wYIXxkJItOBsyJKI1+dHECy0iMrI6WlaWwPsnTiNqin88RuvJBhuo3FeH8dmxylUqwwLOTpNA9G3HNcVeNe730u5NsfEXInrr9xCs1LmwGgWXfRy+Pg8ejVH03QJqS6tyQjNapXxseM8uO1hOnrOwePXKMzUkUSBzGwOf8AltWgQryfAX376MziOTSAUIKNnEUUR27HZ/sD97NxZ5MqtG/GJFqGWCFBh7dpz2b1nLzP1Yc4N9FOvjRClgyW9i1mzbhXfv/n7JMNecpkctZpNXW5gWgpBx4sAGLpBqrsbVywQj7aQSIURZRlF1ggFwkSTaebm5pA9XrCLKMEQkipSzNapuxYhRaEyIxP0xajoJaJ+H6Zl4boQb1ny/7F331GWneWd7787n5xDncqhu6o6Z6kltTKSEAiEsZB8wZYJDmB7sLmDPb7mrvG1zTB4ABsnjMEWWICNEcIgkABJKMfO6lDd1V05V52cd973j5Zsjz0YW5FQn3+q1qrz7vPWqbPOWu+vnv08ONuSyLKK65nIfoVkNEpT1+npTRK1QlRqNURPQlV9SIpHU6/zZ3/0NwRTAo4pkugOYLRNVFXBcVxcBwQ8Ql0KvrBKMBoCSSSRDNJlp3n89Ak8zwXX48DIXkpyk2K5jqxAJBLBLYUptGfpyWXo78kR1jQSSgzLbvDksTGGBmMceeIQvfEwe/buYW1fg+zGdzJz9NvEuzrwJAFV1pA0lVAkgt/nIy75cCwDS1R5463v5b3vv5VL9mzm3e/9fW556zW49ihX7NuJgUdbt7B0k2KlRK3dIheLoJfWaBku+6+5FEkNYNkO7dIKms+H3szTsnzoVoNgOIBu6MSjUYxYhmgojCa6qIpKKh5jsVAE12OlXOTaS7aQzCSYX8hTqjbIxGNUmw6a4iEGZHYNZnn29AL1posaUMEzePToDG+/djdz+QoHdg/juiJBTaM/mWS1ViYeidOulYn4Exh6mWNHDtK/aQe/8Pbb+Nrj91KzDArVBp11Pzcd2M/ffOs7DPR30B2IsDw9Q0eqhyP5s2iGh+nz2JLspV2vYrg2tukyN78AEQ99WWdD3xANvYUqiVSaLZxmlToOvoZCIhym7dPwqjqBZJDlahNJsAn7I9SbJQbEfo7NtNm0oR+5vUZDdRCaIsVqHVlQKSytgSQjyS5CWGNsbY32UpHhwS7GpqZZXFzESqTYvHULjzx9nNsyHZiSTiQQxbRUdKOCni/Q19NPsVrEthzCvgixRIRGtYkkgOfJrCyvEIlEESyLWDzE9k39tNoO9z7wBKl4CFcwqdeqbBrp58jJaT74/nfTal3oJVQqt5iYnOPr33uaai1PPJrk3MQiu/fEqTXbCBZoqkTNNGk0mwx1Z5gqFAgrPqrVBorPR7Fo0J1I4Dpg2h49mRCaKtMqipw8dZ5wQEVMKnSE43TFI9RN58JZ/Pt9dr5qn9KvMdf1cFyPYsMk4pdJhlRSYe1FX+/mqwZf8p5eOBRv/LWvMv+Z2170dSbHl1702stveR2P//UXX/T6l0xWwXrxfZr+wzyPxN7LX/nn+RHwwxIWxX/60zB3ik/+5Qf5+b39r/V21q172bwSVUAvjAF/LaxXNa17La2HROteMk+kbtS5eLCXyYUVbrjmcorL82AKNNsuWiSEoBjUakW60yn0hoWnOzzyzDPs3hlmtK8HXzjI08+c4+oDB5AVicVWkbnFE9RLZep6ibgWxmzVybcsjNIqg7kcz5w6i+u6rC7OYNQNUpk4qiTQ3Rmj3YZU3McnPvP7WJaFLyARkP1sSGYxTRMBAUl2ichhhpK7OPj43xHN5Tmwr4eHn5nAE00igTjNRp5qvUKvP8Qtt7yBP//T/8HGnizLlTWykQCGz2GuJeLZJmpcQ/IOYrfXCETg3JES3dkQngF9WQFED6tdxReArs5OCqUyDUMklxRolXRaZYPFfIGJ+VVUM0I0EieTSeB6NpIkoEgSDxz+Kour8zzx3D8iCR6ZwTBNXWdluoVVLXPVtVey7027GJ88wVJ+DlWWGDs+x9bRHlQpwcc/8VF+8QO/zUBfEl8EwmGLcqVG06hRmJYZ2Zbh6ftPsPeGrfgdBVMUaFRsBBHahsnGTUMcPHeWizaNoCoaEUVg9+6f4dN3/SHJSJRL976TaqWKz68hihKHPvNd+rc4hKMSW3cP47kS//WDf8Dicp5KZwZL83jkga9Tskz6s510d+UIBjRUpYdAr8nK/AqHHvsIV904ysjArXz4/30fmqoiiTKyKJJJVpbitAAAIABJREFUp3A9kaNj8zTaDjawbesIjz5ZIRRRyCT9/Plnv87iWhEHiaDfx2oxjy4YjE1P0NvZgybLxCMpVpfqxMJhJE+k3pgDzyYSDtOdzGJ4NrIMjmGSL5ZR/UEs1yUVifDo0WPsGR3l7EyBwb4+xsdPEwn60QIRUoUWCBJzS0sspKNUa3Vm8mV6UymGOlM02wKe348rSqwUWgzmMiwvjvO393yZ6y6+ivGpCWJKkOXqCt964Hvs27aT6fOnmY4ZRDqjnDg9TrAngKOYDAsxVEklr+v4VA2f3yMkafhQOWvVKNVWyaTTaC60dB01FsZYKSPI0Gw3wdEI52LUV6qEQhKqGOX6A7sQfTkmZgpcvneYpclT2LLC1NQiPlHDVaHmNhCjEngOjbpNtV4jqAWRUZien8VzPIqVNfr7uti+MY1f6+W//cHHeMub3sB1V+xHFFQ60jkcz6FYXsF2ZZrtBr6gH8u2iERkJNnHltFeJDGE57kIpojnqETjGWxK3Pz6/fzVF++mv2uIgN8jHvHRqLSQBLAtE9sSiUXCVCNBrrlkC8vFFp2REGcmZ4lGgsiSRSgWYnZ8GtOxkFQFyzKI+IKkIiHcZpNGvYYWCbNjywiaojK1uEo2EWBuuUIuHeGSi/fyzKEjxKoa+WadoCIjShLqv9OI6CemR5HluOiWQyyg4FelF31QfmHdX/3Pz71se2ucO/mS1rcXZl702r982w7gNexfo/rBe2lT236QF363pz584yv6PD8KfhgCIoD4lR+CuVMsP/Un6yHRunXrfqBXK6haDyN+uKyHROteDpGgSm8mysm1NYr1JhPnJ9CCEfxagD27t9Mw2li4CJJGUguzZ6gPRRDAF2Bq5jEefugfWF6ZRBQk/u7L/8DHPvknPPnY/UiiSjYeJeipRAICgWAQzxWp1w1K1RYeLqGwRtMo09ETozOdIBoJY9YMzp2f5vz4MsnUJnIb4+SyUb72pfvJF8vIsoymafh9MDI8yOe/cg8KAmfPT/PcqWMo3gIyFge27qFtQu9ABz25Lp48eJx226NYsxjdsBF/NETDaTLa0UE6IBNWXRxTZuNgF7nuDi6/djdXX3M12WiaqeklOjIdGK7D0uIcx448zviJx4lE/DR0g0RvjGxfEtOyiagKUtAkEvMTyik0VYe5hQlM00S3LHKdWVQZMtkkXbksO3bsJZfsJ9O3i3u/e5j//vt/jt5sIDgS6WAA1dHxXJmV4gqrpRqi5mNu1qEvHEYLhNg8OMBI9xAz0xMcfPI4d3z+HkbCPmZPL1FttvEsG8e58E/Q2eU1RnMZCvNtKksmM1Ntjh59mNK0gU/20Z1Lccm+bezaOsz2zYMkczn6hhL4ojKaqpFMD2JbOrbt8oUvfprNw5uId6g4tkLDsHBcyMSDfPaOO9kRHOT3fucOtuz+JTqCu9nQEySZjLNxaAO9gynqtoPtuazl14jGQnTEVbpzGdquQFO3iUdCfO4bDzIxe45yfYVSaY7l1UlarTy208L2HM5Pn+PxYye559vfYrG4wnK+QECR6Onqo7N7gEKxxPzaEo5t4A+EKJfKtNsmxWKZuE8AyyAVSzDYFScRlggpJlUrwKmZFWKRMLuGu3hucgFBcIjFIrQcEcdTCPkkZlYbdEQVejoS1MpVYtEoflUjIQS4ZHAzE3NjLJeWefv1N1G3wPEFoN5EdlWqTR1dbzF66Vau2rqLfi1CWxWYLudRpCCmZGE0RPbvvYhKvUYsJNFsmuimwWIxTyiuoTdMopkYsWiQdDJNKh6lXSyR6IzhN33cfOUlOGovY+eWueKSjdRXJ5BUhaZRJ79SYbFVplFq0VhoIIoeVtElmguSjSbZ1N9FvriIInr0ZDPsGN7KJ+/8HJIns1Bs0dfVw5a+bgr5NVzHQFFkJEmi1WjhOAay4CFJAj7Vh2kJeMDEuQUqlRK2Y2CZFpalI8keuUySUCBOb7qP4eEB9BbMLRQJ+1UEWSTT0U0yHcXGZXCgh1AwQibso9Go0DfQidO0kSUZxxVYWaugKRKxcJCWayN4EuFIEN2xKdUbGI0aK2trfP4f7iESCrCYrxGPBLEdl62bu4iH4zRNm2QwyGBPB/2dSXT7+5/Df6wril4ICBzXQxIFQj755TkoC8KF8d0vB0EAvfHS1jeKL3p5JnKhqspxPeTXYCLYpW97PU/d8aVXtMrFeX4s3EupIPtx8lqGRY7rkdr/fhBESgf/7IcmuFq37pXwWlYB/Ws/THtZt+4HWQ+I1r2cdNNlOB6jWphhoVJj6+ggMS3M1su6UWI+FJ+fjkySZN1kbmmWj378TjrSfgLxi6B1Fle3uOeuL1GrtwmHNDqzHbSNNmu1Khv6elGCFq2WQcSnkEvlWDtVZrFRwmnYSCGZYMaHGlNIyCGatkhfbwfHJhfIdScx9Cg1LUc0bjFy7RY8s87Xv/IJLrtiO/1DIWZX5/FpLpFolGg4RjggodoKCbnCw488QSwWI55IMtCfwTZT3PCxz3L6xFFOH3kIyYkT9YfYvHUPzzz9BE8/tYxuV7n8sgFatk6x3iBfP02nHWbfpVtZWV7Dckw0TWR29jw7d44QCYYIBnwoCxq1rI6h6zTMJoKo4Bl53LaG2dLZ1BVkoRpmuG+A8wvn2bN5lPLaIo88fIaj4hkSyRyv33Ylv3779Xzxq/fz2EOTZDeJBCWbet0hkswyOhTmC3f+LblAhOSWjRQdEKo2QiBCNqvhjzzGnZ/+JlPzCwxsuZ1rb+rhjrs+TCTn48DezXzn0SOUCnVcQeIdb30zkVAQUZLBg+HBLJ/8yt/x3qCfqel5Pv6JP0ZOrqIIFebnLM6dbGJcZfDpv/8gG3er7Bn8Lxy4dD/f+MankZ0Q6ZhN92APXTmN1YVZGvUJrFoIURDIZrP0Zi7lve9/P7u3X8U1V/ehBYMonsjayjKnTs5g6hbzKwW2bRzi2MnnEDyD/dt6ODJh0IwIBCSJnlycp05Msme0j8t3XEYokqBSauP3Qylf5U/v+AqpeIKF0jICfgqry4T8AdLxKPv2jmI7Jp4sY+o2XdEAm3v6ODw+haZIPHJknOGuTiYWily8OUtvxw4eOHIGV7ep1E3efOkeHnzmKNs39vO6TA9rpSpDnXGemV4kG4ow2JmhVapyen6F7s4c3/zud7n99pvZ2D/A3973ZXb09fDs+QmOLJ/npt0HmJ+a51xjlVyoxbnFFa654jK+/fjTRAIBJBFCno+a2+LU8lnmC0u4TY9L92YQZJn8fBllow8toFGv1ugY6iG/tEIkHsVqCQQ9mU07R3n2bIPurjCbOlUefvhB9u0eRi/AM0+OE88mcOsmUkwiE4vRbJuoioiz4DA6kOErX38A0XMQFYmfu/VNLKzm+cWf+jk6swlymkepanLHl7+GPxTlzTdew0BvF64AiXgaG4/Z/DKaYmOYNpInE/ArdHVnMQ2T81OrdHVkefTwMxzYcTHBuMbdzx5CFxpcvHWES3Z145gR+gcSfPyzX+a//ertPPDdx7jyyktZLSyzZfMGlleLlMtVmqU8aD7ed/utHD58hO0builV8riI9GQ6MF0bxS8T0sL4gwGKlSr3P3SG0Q1duLaHJLiIosBKqchaWSCUiOG5Fm29zdjsCrlYCMf5/kOtfmyDItf1cJ8PH0RB+E+Pr/93iRI4L2HS2L8kKeBYL369IMJLqAZ64XVxX6OCok+9bQc77/gSnvfK9Zq+68QCwIuaTrfu5eO6HqmL/wsIAqVnPrkeEq1bt+6HxvqtdT881kOidS+3oE/ibL5IUTfI7cmgxjyGBlP4IxqFcptEMsrp81McuOxnifS16P/Ws6zVSgylZ9HFBGJQp95axHU8An4fS4USAVUmk8qQiERwLJOKKOMTXNZW8/giGlpcQ86KpEJxKu0Ge+O9LBVL9KZ7iQd0BjuSrBUrKILLht4ujhw/RLF1nO6+GAMbRujq6OPpR87gOg3aukAyGubU+DgiIn5ZxB+KEouHaNR0bCvP0ZNn2DY6ypfv/Bj+QIC2aTEze46Dx2b4mzvvIZvr4ua3vpm+viG++bU7uOjSQRq1CUZGRtAX6+htHb1WRZRlAoEIiQ6NeDyAYZnUajqqY3DwO2eQVNhy8RBTJ+fwBJeN2wawJY+FhQJCOIyqqESCfkRxB9mePXzsE7+OJIqUXYtP/M5/5cGhUfyBIPV6kc3BXlqGTTAYJR2JIvkURKWbdFLGdT0828D1BBRVQZI1PBs+9tFP8Uef/P/w8ChXm3TKIQ4bDvfc/ziqGmDPrm0src2Rr69RKtsIkU389ef+Cp+SoaU3+MAHf4fUgIkorxAjTaGpo9T97LzUwjQbGC2TjelfwNBNUkPbmRt7FFlQCftVuntHMS2TY1NjvOddv46sZajW6oRCAf7xzq/jOha33XI1h55+FC3UIhIKU6o12L19lKcOjwFwfn6GyeICm3o2c+z8FDW7SUCWkXwCguURi2t0Zfspli18QZt4LIBjG/z9PQ+zf/suCtUCrhtirVKl2mwy2NlBq9FAb9YJ+PqxTYez84uonk2t0aLebrGhuxvDgu7OFMceO49jO3Tloniex4EdnajyAEcmV+nKZjg6V0ERPYZSESq1BpmAj3RERm8Y+CNhAtUSgujSmerg4Nkx6m0bMeyn3nZIp0Nopp9nzhwm7O8m5kmM1xa5fuvFnJ+YwfKpRF2RSq2JovhZXikxOjLIWVtB9Iu0TIWMP0x/T4pStUE0qtHVnaNQqNCTy1Eq6QyP9rFnaCPH5nTisRADMZPZUol0MsY933iWttGmsz9LNBRi7MwMxopJf2+GldIa4YAfvy1y4kQBzzXxBzRisRRLK6skExlk0aVhWRTXymwdyHLdpbfz11+4F9EV0ds1gr4gis9Ho1YnFEzz2DPf4/orr8PvV7HMJoZlEI6F6VJEzk9MEA0m8ESJmbl5gkKYD//Wr2LZ8vMTBE2+9cBD/M77fgkXj5tuvJrzM4tMjE+zZ+8OnKTJs08dZOuOUZKhAIsz51kpl5hcXWHX8Eb6hwY4fPAQSGC5Jl2d3RTrZTRNJR1RicYVbEPHFRTKtQpILrVaHUk0aJkWuWScZrvOGXsVSfz+N5j92AZFoigg8godRIWX8Y49RXtpQZGivaQePy9UXb1WR/ZczHdhHy/xOi/8Hp4Hruf9b6HQr/z3r73Eq697qdqmQ+eB34BQgtJDv7ceEq1bt27dun9jPSRa90qwPOjKJFmwyrSndR48dopL3r+ddCyGi8yjTz5HOOzysf/5W+RLZSrVConOCMuNFqpSZ3J2GdcDOSDiehDzq/R3dZFKRjh6ahZJNcglM8zlq8TCcdK2iF/0Ew/4wZDoCiXxBIgGwqQiPmYXi6wWGyTKa4RCMVYW5omFwyzlK8iizN69G3ni8EES6W5W1xZoiyUWjQK9u9IsnM2ze2QXnmshiA6zlFktrDJxeoLd27eRTCZJJONs2HwDnuex5yoBUZTBc5meXWJ0eIhDHTEM3aKoG5w/N4dquqRMC9NxiUXjBIMgKgPMLl74Z7QgCAhEeN2bhrn37i/jNiz6c30YQgPb8nAQsBwT0XFQtDAIGX7x9lsQJRHP85hbyFNdWsa22jSbNQyvxiXXD1GpVomFw4QSAtmoSqI7g6Al0S0NUVaRJLB1A39AodFscfk1l3D+/DNc9fqLiHf4+M33foRnp08hqwJDgz3MzhVYKiwiyyJPHTzB1LllVN93kVyHcjVAKh0jIEWxmytks2lsS6S7L0c45DDVXOO+Y1/hA+/7CNVWG7+qYdsWG4e2oFsWPZcO0zBgfnmNn3vrz5Ivt+nIdWPbLggiRVulq3sXv/2h3+OGG/ezc3gb84trZNM5isUyy6vLCKLG/t3bEY74WVpaAV+YRDKEZ9rkEglikQRX9PeRjmZptwz0toMteJiNNtVGnUJpiZPTMwx2dmHrTfz+IKGAysRcnnu/d5A9W7ZwcmKFcDDIcqlI3aqTSXcyW3fpCKiIEqjRGAd2DXPv4yfIxH3cf2SKka4UG3syNFstBGpMrK4xPDDKc+fnKVSqNOsVIpEOStUKqXQPp8ZO8db33crYwgKX7r+ah088jGV7XLttJ/cfPsTerbvZ1NnDgyefpFG26EykWavkubhriAfOHSZgKpiNFgFNZGzsPEgi0WiQarnCcruET5fIdcTI11o0zTLRUIzlxRLZTITBriGeW7Do6UiRCNU5WyhQmC9xdmyGvr5umqaB3jBZnJ/H0C027e7nuWfGUUSPRtXAVFWmZ+fYs22Alq0w2tuHZTgIbgtTUHjiocPs2N3HWrXByKZB9mzfRKm6TDjUyczsMqlUgngsjN8vcNmeSzg7eYLhvk2geGRSEb75rftwTIdQNIYoqpybmWWoM8y7fv5NtFtt/KqE5lO578EnuO0tP01bb2PqOrZr0teTwzRrfPAP/phffsdNbBsZppJvEgtHue/xU3R0hfmpm27ENW2Wl0oMbRykUC6jiT4ahkk0GqewtkZXVxJJkSmUCkTiAebzDVKxMKbUYGZqEdcTKNU8upJROkiyIKx938/OH9ug6BWlBS5M0Xo5BOMvaepYbMfFVA498qLXW473/FcXRX71W1YJAJLMfWPL/zS5zfMuNB53PTi3XOd7MwU+f/8EM8+NQ2EWXOdCIuS5/341lSBcqP5ynVeuXGndD/SpJ6f40G/8EV3XvpFTH13vE7Vu3bpXx3qV0I+W9ZBo3SvF51M5ObmI1XJotU16duaolwuszK/x5OHnCIQCLOoW5aaJG5TxKxpWscVCMY+gySQHAtjzTQa7sniWiCi7HD93Fs/V2L9tgHyliicoRAM+PMcmEgqQDsdotw0cp02jKRILxvGlkygBPwvnqliOSToVprRcRhCCFJpVkvEQeqPB+TNFUuF+TufPsWVwI7IUZHx6mtZygD/+xJ9y9xc+guWD6lqDSr1BQ9fJ9aTRdZ1SvooWCDO6rRdRAAQRSYJGo0lPd5bjJ47SkcyylJ/Hj0cwKIMi0NWZQcSjXAswPTXP5VuuQAAkSbowEMi2aZsGkiQRi0bIr9YIREMIioziOqQScZYbJp7tJxkx+KX3/wLLcwsM7Bjg9rf+Ckfv/3sGRzOsLC6RFPtYLRYJ+f3U2jqpnhhBIcLqSp56bYFHDj5BrDuKX1NwBZGQT+HinT9NsbaG0PQIChpG3cATJPxKjK19OdLJDvKFJrCVUuM0bVMmkIrS0ZVCUkQ2dO2lWqvRkU4iSRKSJF84SuDhuXAVUG82MR2RSCiG47hosg9FCRAURWxBpVovIokCH/7932VgeCerUye58Yb9LDUDHD10Hzcc2M240EMyEaNWrxOQBZA8jp86jyQp+BWNcnGNartMUHPIpRMUi1WSER8d6TTBaJKgL4LlegQlmbbZRrMFojEfAZ8fS/Bh6hblWpVgKEQtn2e1UGbLwAieazC/VKLY0HEdi/5sJ2vFFqmohuNa1FomjaZOTzLJxGKBTCJIJqJSaTkIokCt1uT45CwDuRy7N/ZRbVvMrJUQcPCpAUSvRW8yjClKhMM+/uau7+IAbjCM4AW4ZMtGnjh+ikymi6Nnxxg7MYalClwzsIuF5WX0lsXp+bPERBXbaFFttIgEA7iOiyB6VGsNNMUjHYoS6IhgWibhqJ/mchVRNLj5hv1UWjJPHZuhuzdBfybO0ydmMKo2clRk085BlucKbNqZZfz0IoHOOI3TdU4dnMK1TDwNRM9mdaWK5HnMLVd4/VWX0mzrdHZneeyx44iKQMsosTztsWXXPh4fO44ouXzzO08w2JtlfHqajQMjbNs0RDqdxLYF4uEMDzz6KFF/gNXCGnXPwtMkur0A112+k0xHFsdyaDVrxGIJpmYmyZKhKz7A7MwCtu3SbhVZXFimu7eTaMjHu992PdgeTdPCdVwq9SZvuvIiTi7MIokCoioTDCm4nkVHrvv5u3JELEsnm+nCtA3KlQLpaBLD1Nk1uoHP3HkvpcIquJDJZlBVjZlCA8Fxcdyf0B5Fr5hoFpqVl+VSG/bvZuJbcy96/e5dPTx08MXX47jPBy3Vtk1Ae/nfDv+y0qdtObz984d57HunQW9CdRXaNfA8bn/XR/7zFxcEkOQLDbEDMfBH2HlgM5dtzvIXn/oOlJcuBEV64+WtAlv3H7blv93H0sPfZv873859v3LJa72ddevW/QhbD35+PP3Lv+t6SLTuleC4LsmwiqIGWHMdOsUQi3M1sskglueSL7cIhqLYTot2wUSTRZqahRRQCGUDNPI63ZtSeFGJwGqSttVC87dIRtOYgoSqhgir4JqgW+ALBMlX6tjPt/44sDtHuVpjfmmV1XwA3bKJ+FUSsShG2yYSBZwmy4VF8DwCtTVcTeTmt9/KmeOTvOGWt/AGV8Z1be787J+gRlU0TUbQXVS5RX+mj9nJMS7auxdZEjl48CC79t7I0vIyC5NnqRammVibQdE0Dlx6K7ZtkIzFOPLsSQrRBplIGkVWaLYNUsko1VqJu756B1df9TYeefgfkUQ/u3ZuY6WwwpZNgzRNE39EoeHpyIZIPJGgpAeRZJlE2E91zkaptxDkFj7V4q77PkVSjuOT0+ze00Ehr6Bp4NgOkUiQYq2BTw4yNDyIINg0dJOWmCcWDVOo1gn7M8gyHNj5Rk67h2noOrfceiuKpPCuW34DRfNRLNfIZlJYdoROJ4ew0UMQLlQ0ua6Dh0Ao6PLMwedYXVvj2msOoKo+8Dxa7TbVao277voKv/1bv4ltWbRbTb70D3dz2y1vIRQKUyw3qdbr4Hq8/Z2/zKkn7me83uAv/vZrqHGJWG+UmVWd3o4w0Xgcx7WJppJYhonrSqiqn6WVRRAsgpqfRkNHt2wsD4L+IB3pHmbKRTzRh6vbBPx+VBtsx+Y73ztILBZGdG0uu+gAxXKeoCqhygLLhTLlaoWNA32IjsPi4hxtw2YgGEaLJlnML5OOR9BEh7VynWggzOLqPKW2QS7bQTzlo9WqMp2vk43HcRyDalukt0Ol0KyTScdIhuPIoktA05iZL6IoGj6/RtCfQGq7vP0Nr+fOu76GF4G4qqFHA9ywbT/fevowlmBh6gqD4QRqXx/3fvsJVpZWGdnUT73eJJfO0Gw0qDbK6EaekBqgIxGmXDOoza+xa+tWOjvjPHhoiUa9QaO+jN6OUV6aZNe2nYzVp9BLLp7cxh8PcObEEqFMnOK5Ap3dWUrFIrYpUK3UUFUfw6O97N2+gaAWxhfWeOqpExw5PYYo+mkVKziuy3PnVsgOrjCa7eVo+SSbNo+yMD9NMpRlbbXEtxZm2bVzKzs2D6M3XbLZDhzdJBlPMNIxSKVYYN/ejfzl5+7mPT97Gx2ZIH5/mM/e+SXedMO1GC3Q7TqHD04yun0Dh4+eIBVL8OD9j1FvtRno6eHiK/YxssnPHV/6Kv6gxz98+xECmo+rD+yn0WwRCPqpNwUM3STgl3EdsC0D23aQFYmORIxqtcSjT55gy2g3Eh6hUIhUOEILidVSCVn1EY+kEP6d+4rWg6IXYfP+rYx9bfxlacA8O/HiR9sDZGN+ACz7xVUEqZIIksxv3nOaL96+59/83PM8PA9Mx+X0Qo2PPjzB9+4/ibd0/kJVlev8c4XPf5YogRa8cPucpFy4ji/ErT9/HR994yg+RUIShQvp6b96mX/Q6/7hG0f/6fv4vl8DSfrP72/di+Z5HolLPgCugzy8l2+9bz0kWveTZX2k/D97JV+HlytYWP9bvTbWq4jWvRpqtSbjkyad2QRX79iO6UqcW1hBDAziuAKqKoPdJKjKeDmX1ecqpLdECCQ8MAQCqTBeW6S6VqEvF2WqrhMNRelIxTk9Pk4mlaahF2nUbLKZFGbbJhyQWM0XiMWjzM7XCfjAFUzqNRvPMZAVHw8/9DSXX7mXsJZm/MxZ+nv6ufkd7yccjGA7F0KUfbuu4M47PsN73v1uTp0dY3iwj7u+eReXXXcRSthig9bNzOIiF225BFlRCUR9FI9U+B8f+lU2b9mElNJot+rMTRRIpRIEfBoTCxWyGRfRkVleyFMPtgkFAoCHKibwzCVef8UuUtk0O0aGWVxYoN1cISRBIyxTbleQVBXLtojHM1y3+RJkWaOtGzRaNrKcIN6hIyQ8KrUWmVQWD4HhkV5kNcDlB3axViiQTSdRFBW/puGJAp7j4Loe193Yg/B83xTH9Z4/Awg4jkOus5e23gbJT0s3MC0LpdVGlkQ8wNAvDBtaXi2wc/sG4sEI08tFqqUZTh8/h6oInD7/CL/0ntuoN3Tys0cplFZ46DvPIhgtVlcOU6o7nDs6hlFdoVA8xuySzZtfdyvHz1h4nsDY+DQmGoneLaREm3TKoyXU2BrLsVg3UFyXmm4iiQrzczOoqkswGkESXFbWlrj8ihs4t3aWSrnN3o299A+NYCLidyQs08DxXDqiKTzbpbRapGYK6M0mmVQP0YCf02NHqTYaXLpzJ4qksLi6QvFkmXZ7EFeUyHXE6crGOD+7TMAfRlVEmnUdUWxjluuk4ykSUYuVUoNqZY3Bri5OzZzFlwqRiaWQRIkjZ8bpCUXIhcKcWyky0tNNdyJKpWUz1N3Hs0eeZHhrjv3bRrjv/vsgrGK5Bi29zpbsAJMzc1w3PIKIxNzKHIfOTxHy+4h3hAn6OlE9Fc+qY1gFQppKT/cGJiYXWD21QnWqgSRK/Ob7b+eZg6e4+9vHUVUZv08mHowzcWaMaVXi8ov3UC0auF6Ltt7Cr/kRfApGvo1l6bimBZ6LKIr09fZg2TrXHbgEWYbxmWWe+944jVabSCROQBUJ+DqRRRdHEJjJ1xmbPcT2ngEGuzr4x4UFPElipLePjp4k27aNMD+/xMCGYcrPHaazL0a54CMeDrBj4256+nr59femqNTbBIN+Dh05xhuuupJ4NIFpmGzZMsT+/Ts5cvgg+/bt4OSpKYZGhmm1DQp3FDIzAAAgAElEQVS1NSbOrZBI+3jjja/j6KEThH1hOtNBluaXCcfCtPU2QZ+Kbgl4roOmichyCM81+NTnvoEsqUQjYUqlMufGJZqtFo5jU2m0aFku4WAAXdeZX5j4N2fsf2k9KHoR/uS2nVz3tbtflmtZxoX+RC82dMpFNRAlvjm2xFu3d/8fH+O6F27lmiu2+Ob4Kn/21ROUZuYvTEtrVcGxuffPP0/8U194vsnP9+9+/n0Jwj9X7QgC+CMgCCS27uSR370BnyIRDyr/1DvoVe9RE+98dZ/vJ5jreiQv/QB4Hg995Q/Y1hO5EDgirN8BuG7dj6AXDvOvdJjyWocFr/Xz/6RZD4nWvVpM20Z1RIy2iW46LC3N41MUFqbP0NANAj4JCwdTMWmsGaRG4xiVNmHVRyIWQy+bhGWPNVOiZhgsTCyxfct2VstN/B0+lheXicaSxOM+IgEJy3WZXiwR8Ae5eu9ODo3NQttFUeL4wk3KDZdqo8GGTBf9uRQnnztHfzaLqIn093WTiMZo6TqqrCBKLnv27uWdv3gb+/p3Yys1Aqofz3HoG+7m6cdOEFdVRnfuRFFlFCFBuiNDo5Hn7NQEVw5eieH6EeRJAiEfoihz5VXXcezBe4gEfGTica6/6S002xaqotJ0gnR35mjrBi29TbNt0DswgKxoqCEZp1ZndGMvQV+EoJogEAqiRcK0bRFVDTA9vUQ4GGHvjg1EshlEUfyn0MfzXECgWm/Q3ZnD81yKpTKJRBzPdYEX+iGBX/HhCR5BRUU3Wtimid6sY+Nw9ORx2rU2s1PnuOiyTYRsjzWjk1B4FUmUyC/VMdptzh1+gKrQZMvm1/P4A3ezYXCYaDrMW69+MyuL86wVK3z9rq9zfmaRn7rhGqq1FtVaA9dy8fv9hMMRWpbDWq3M9MwsCCaRQJijTz7EFdddyZ6hfSAIPPXAF9CiUfRag0jQx1e+/iC1SoObrr2IswvLXLl3M/d890lcRyQVT/HQw99FDMCu0S2UWwZDggyCRyAUxLAt0tEoxXyJgE/FcRwcIJ7IgFehVKsS8ofZNbqdUmUNXW+hKiK5jl50B3ZtHKRtWDxz7DlELcRAOoXteJQbTTrSEXT8SCJE/GHmlpeZXlylP9vHUHeckBpA1y1E1YdpO3R2Z5Edh850DNdpcX6+SENXyXVpbB7ZTG93B4tLefYNb6IhwszECn25JHF/jHl9mamZGVKZJM1mC1yRtqXTEUwxeeYcsXCUbLqDSr2MrEEylmbMmqRt6qiazG//+i8xP5unKaaRxWkigRBdfT1MnDlNT88grm1z7MQYQ31pJmamcSxQY37CQR+VfJ1LL97JoYPPYdg6uc4k2zYO09PVwcHjpzCMJqslHVVVcJtt/D4Zx3WxfQLxaBTPU2nWDTZsGMJzLGoth45MinarxczKOX7uHb+BaZmsqhIz8+cZn5mgJ30l8XiUtcISTx86yp7tmynViwz2dbGa1+js3EAiE8ewbGzXQfRUauUKbdNALxjMV/I4ywaW2QLPT1CdIxLporhS5PxsCcMymVwwabtHuP6qqzAMG9M08ZAQPAnPhZXVAt995CCIKj5VxjRahP0hMn1bsGfPM788QyqdxWtUqFTK7Nu6jfHpaUrF7z99fT0oehGy0Qtj1l+OSV1f+t038I53n2CprNOV8P8fH+O4Hq7rIT5fXeN5HoW6yfBb/9eFsMd1eM8v/CHveWFT/xmC8M8hzwtr/WFI9oJrg6Jx+zsu4/+5eoiwX0aTRSRR+JFpRvzCrW8r3/jAa7yTnwxNw6b7wG+AFqD0+B8iCAKu62HYLooEgvcahITr1v2IeynVSf9y3atRNbN+6F/3H7EeEq17NQkSxNMJHNNgbmUVvyZhewJCIMZwT4gT8/OEZA1FkwhGFSKqD7tTQ14VUUQHLaTguhYzi1XaERU1phCLqmiKQFbs5fjqBLLoICLStkUazTaaJJAIaTxz4hQQYK5SYcuGHmZW6gQ1lWgojS8UpLs/TbVYZdZZYK1k8iu/8k6uvepKxs6eAgy8toQgQ19XNyeWJnjLjVeSbEXoTqRoWQaJgB9NCbF5dIipuUXkUJLOrl4mJy06En76MzmO58+yoa+feDyNIEAg6Ef2B+ntHaYr28Gmrbuo15t0dnbS1E1WSnF2bd+EYRhs23M1kXAIy9AJhSPs9vvwPAFRBAGBtm7i2DaNls7pM2eYmT7HhpERkp1pDNvh2OlT3HjVFdx3/8Pk0gn0VpOxsyeIBQLMzs6wY9cm0qnrGT97gieffIJdewbo6+1CCkf5/T+8g2Qqx6/98ptYq1QJKAqaKtDd52NlsclFmQ0szdZ44vFnSSZzXHpNDyuLZU4/t0AqFSOgyKw1Guj1x9nQlWDBqvLMg8fI9W7km08corAwgz8uIPsF4j1hsmqcPXtvplRrsXmbQDwe59yZ02wairN160YOHj2CaJYYHkny7S9/kQ99/BoQZeYb8wwF+vj2ykFu6DxAWA0y11xmcm6e11+7n3KxiaLFUCQBq20iCDKlQpmezgwb+vvxB4OUaw1CPh8+V8KxdexWC8OzCfhg7PRzpJJZgqEQXakMshxEcnRWS0UC/iiZeJC5hUmSyRyz8zN4oszlO/YwNjNDtVlH04KIqsZcvkbAF8DxaaiSjKt7vG73DtSAR8xOMLu8wubBfh49fIz923fTbJWZyheJRqLk6zUmFxY5sGmQuuFQqNR46mSdzQOd+FSBSsOkJxumXW/wwAMPU20ZzK0sIzrQm+5mY083TdOika8RDIQJaFE2jQxy5twU7cYKp8bHScSzXHVJLz0dKVaWW0wUYXR4gPHTh3Bcg4hPZt/eS5ifmWd5aYpISEPTZIIDCRqnVnAdl6XZJcIhH08+dZSW2ebKAxeRSfipmjpfuvvbRKIxQpEgud4k7XoLX0BhdOMwY2cnSUUi1BotmtUy9XaDWEzDdiW6Qj4Iqmwd6mXzhkEWV1bwq2Gmp+b53pNP8a5bfppIRGNsaoZaq4wjGhyfOMHbbnwThUoDUZQIRXwYhsP84iyiJ5LNJhk/e4aJqSIzi+excNE0H8lYgmhUQwpo+AJ+dB1a7TUsS6dUqiDLJrVKgVA4jGXZ6LbJsWPnWVgpIEoSiqyieC7+oI9wNM38/BTtWpFstgdFEZAQaLsK8UiUxXyBvlyO6dnl7/vZuR4UvQjO87PkX8qkrhcOzz//kftBENj6xg9d+MELDZp/UKPmf+2Fx75wCBelC+GP6ufBz3+Q/lQAnyr9yAU9L5VhX2jQpb4Gjbp/0kyuNth7028T3XsVk3/x0//0HhOEC+93C/63aXTr1q17aV7u4Gf90L7u1bAeEq17tclIuKZNdy5HpW0TDvtYWKki+gwCkkg4GqFcLBOS/GTDCURTISoLrIkNJmZWaTVtXMHDn5S4fHgEvWljeg6ra6tkUyn6OlNUqm1ml8skwgaSqLJjZJCnnzvJQK4LyzXoSwe4bP9eWk8d4mxpmlajTs2SKVWrHLj8GmZnzuNXPLZskMmvjNPX7cfnZWlbAksr8/h8QbbnRqm0ZSRJpLBax7YFdu66iNt+5ucolOvEIxFGh4fpSCfZs+8KVFWl1mgSjRoMbdhHOBzBtG1kAVJdG7HrJZKDw6ytFdB1A1kUGTtzmtWlNXZtG2F+cZnDhw7ytrfeTLIjwfTpMXTTZnJ+goGhzWzbPMTZ5x4HRcTQTRZmVtCreSZPLhNknsefOYMtJnFL00zOLaNuGqFZNwgoAvPLc6wWltH1DJValSenn6BSXsMX6EGvFThfWsP2qizN63zs43/LWiGP5zpc9/pL6eyLM3Vimu6hi/jYJ36HUqXBja+7kvlJjfNzC9z6M7/I7n0HkCWJr//jvVx7/TU8fO+nWDwxTkfvVtRwiOHeTlRZpGXNo/pkVpdWCSQjJFMpBvpDCHgYps3Ro9OMpiLYhk61bnJm6jSFYpMls8Fzp8+j+VQwPSamFnjnm97F3NI8u/cOERx1aU62+Mrff4fh4VEGe9KcPTNJtdki6A8Q9WkM5jKcHZ9g0+ggkudh2QKCJFAv6wSDGqqkMDFT4PobbubRB+9DthqMFZbxkEjHwvR3dmE7Im29QS7VycmJ86RiIfyaQkVvUGs2iCgygz29LC0ZTK+UUdU8F2/dgiyJdPd2srZWZmLsDJ7iIxuN8eT4KVw/CEaD5VKZHYM9VFyVQ4cn2TY4QlNLcPKJx+jt6KVUb7K4vMzRk6e5/tpLoO7yma/dS9dgD41KHb/nI51K0tDb9HammVhaoVSqcG7qPLe95Sbuvuc7BIN+FFEg7PPxf91yE6Lg4Yv1cPd3nyIguLj0M9DXTSoR5OHHH8ASwtz6ur0U8iKPPXmMcCTBm99wI9+bbtKsN7FMC9uU2LF1Ixv6c4g+kePnp6nMreIEQAsEiUYiaLKK51pEQglm5uZxBRgfmyCdCWLbMgNdg/gIcW56hoH9w3T1pOhLdJBJJfi/f/d/8YZrLqZYySOKCqObN/C1ex7k8ot3cufBI9x28+u44677ePTgs1yxby+2KxIJaRhtC7NWoXewA8Oo4fdL2E6RroQfIRDBdFwkUWDNrSMs5kkFwoyNz1MrNFHVAOEIeKaL5UgI/z977x1lyVXeaz+Vq86pk1P36Tzd0z15RhqNNJrRKCCSBCIIbAkw0dkXY7CXP1j29Wdz72WBL2DA2MZgG0QWlggiSoDiKI1mRpNj5xzO6ZNjxe+PEdifTZKECFI/a/XqqlN779qnqk699f5qv+8GXHwSsQAzCyuIsk4yYhIzoFKrMTq3RLNlYYZCLOfmSEQy6JJK2/HIpJKUKjUK5Qr9sRCK8uPloDWh6Ckw/sQQrS8fn+M3tnf/0CH+wWxd957P8emDc9z13ZM448f+I5TrZwnpEoQLyZmN8IX1aAZJUTBMgzffuIP1SZ2bd/Q8Ifb8x6im54rw82TpfM2/AWvH55mm+3dupX7sQQ58/b0Md4b+f9sEQSCgScysNumM6qjy2rlYY43/ys8i+vykMmtO91NnLT/RL4a1pNVr/LIQJZmhgRGq1VW64iG64mHqdhtV07AaFjE9Sbw7RERVkJUAK4UymqpTrM0znOoguzVC10gvM5UqlFUsp4pmQqlukc0EEF0P3ymiqhK92R7Oz09RbVboWddDSDY5Mz5KUOuh0Wijq0HCZoBiuUBnZxxdM2ij8YdvfRfv/8D76I/3Uaz7aKLK9Te8kInRWQZqWxno62NmcQVBlOjt3ofrXnihLApw/4FjSKKI6/qoioIeCCOKAr4vkkwkuGTHMLV6i3arRUBXKZdXaWai3HXiKPV2gx0330yhVOWRe7/D/MQJspkO4hGZ0ROPYMous5MPkQ+ZlNsNVNHFd210SaRVL1NoLBEwNPy2QjwSIajLuKLN8eOTWG2Lka3d5JYXWCnMcfbrC4h+C891eOE1e/GsKvVyE7vd5o0v+EPGRua55Z8/wMiOi2nnRnEsgZe84vX4gOt6WK02pjaF53v0jqR5z9/8NZ7rYbVtfuvNf843v/aPRHsTOG6L3myKQDDAG970WvBb3PndxxB88P1RRFFiy9ZtLM9M0WzUEXw42Brjupft5rbbPsRNv/EOfusNN/DC63dx+vgsJ44fJ5eDK5/3Qur1CoLoMBBPcs+3/pVEZoQzp2dIhGPsP3QYI2JQrOTwMXnernUIhsqZ0wu0JR/VCBNGoVOXOZ3Ps9pokE6EOHDwCHsv30XbtQkqBsFsglK+wPTkNCfGVrF9mYGeAWS3zvGJKRRZpisZpy/bzamxCfo7e6nV8rxg717mFnJYrs0jx44Ti2eRTIN2u061USOdDNCTSHBsbJ6eRIBc1SIeDNCZ7mZ2tYAjelw9MsLYYp7lto2hyJxaKlIpFRkc3kwq08GDDz9IV6aTUCzB+Ow4gm2imyG+fc/jWHaFaExHJcBAV4TZpTzZZIaVxiorhRrDHWlyyRpmcDtHj50B0aXVaNI/MMgVV+xg9Pw0HSM7+f3f/SPWD2co5up8/tbP84XP384tt3yQUFwmv7BAVdJ47Y0v5hOfuQ2JJp+99Yu86bWv45777iMSS9IRT6AaKncc3k+nkKDcaBMIGKRUg2w6jpnSWcqXKFZqrCzXkKUWmhagf1OWsBpn4vw0zbaNpFl09iepeR7Vlovve3zu9q9jBnSu3HsZ7/nQJxnq6WJqdpKwDvsfPUDDdqnXBVpNixOnT/GCvZfjtBvIUgIMkXXDw8zNTvDNuw9zyc4hRBSkSIzpmUmUkES2rwu1JjJRXqXRbDK7vEqxVqeNz9beDK4n0J2NcMedD6AJCuMLK+RLZRQBCjmBjo4MISOCpgaRRIl2yyYSiBAxJERUWm2XcqOJKqsouLQ9h7b142dyXxOKngKfPXwhAfXv/8EH+X342fP6CAIoOnRvYP4zb0RTpB8mkHqqQsaa/vFTmD+7dpCeYWJX/SU0yiw89BEM9UcnDRcEgZ64wWs/c5jPv2Hn2siiNZ4z/DxFiDXneo1fd9au4TV+Kfg+y8uTyEYCR5L49oOPk+7IYOVzKMjE4zKxWAeDXWmW8wuIlsjUYo6wGYSAz7H5RcJ9HaSiJq7kIshh5mcX2LpxEDOgs7A0Q61l0ZVK02zV6E+nkKUA5blp7JCE48t0dCWpN2s02zaO4xAKmkTCAe741kl+9007WFitMFdoYHSM0J1OUrMarKw2SWa7SSLgex7lShlBEhns30U8aoLvcuLoSW75zMcot5oEYyLLy2Xe9JLr+cI9dxENavz2b/0lhx86zvEzB1jf1cf5mTzF1QbFWo5oqo+BvgSPP3wf/Rt2gOCzYbCfVDxGoVClp7eX/s4EUkjic5/5Jjdcv4tv3/koyUiU+aUZvvadr/Hm33oVyWSKf/ynj9OVjJPu6iARVPn+9BFkUeSd7/x/efsf/wmf+fRd+FwYYf6pf/0Yjz58NxdvHkbTXO765r/z/g//M5ft2c3GTRuZnJ7hs//yHlzb5ZUvvZRyscg9D49j0ebxx8dQdZXfeeP1/Os//i/ueWiC17xwD2/7wzfz2U++D9du8635L/DvX/gcBw4c5QXX7P3hS3Xb8RCadYIBmbu/dSei4BOJmLieQ7FUIqxoJNJR/s9f/QG/+5rrmTpXQa8rPHD/EYaGt2EaBq4DdkNADSRJxWO0Kkus7x6kUi+yslygU0rgOT6DyTRjtVUqMxWSwT6aq0tEQgEaroWqK2zryRKPhSkurrJp0wgT586RznbQ9CAWNTl0+DT3HzzGSGcnVV8hYSgUGhaKqtPfO4AZ1DgzOYkiuMytLGG7Nu1CCXyBtmVTLlcJBio0RQ85kyAQimM7FkuVGr2ZMCu5ApqiMDY3gyHY7LtoK8WGxenpJVLxMNOLeQbXDTE/P0fUjDE7NwtOk+6OTqKRFEsL57ns8uexMD2O43moSpu2r9ER7gLFoe2IxKMhREMmpJu4Cni6jOqbRKIS27dtYHJ2kSt2XcwD9x/j7v2n2HzZHg4dPQWajxrU2LtpD56S5v0f+Tgvf9Fezp56hLJUZ2L+GKpyGc+/Zh/nzp/h2JlDqIrDK172Ig48dphExuTQ4bPEhTBNScDzBVTZZHhdPyW/yfJCndXVOkHdoGE1EJFwbZ9WARy1yo6LN1GutfHtJp4oYLQFMtEwE4s5RidnabdtJmdWuXb3xdSaVU4cO8Xk9Bw3XLuVqaUVbrntq2zd2k+jUOHbd9/Pq65/Ca7j842vPcSmDSlW8lVec8NORufLlEolYqpMT2+CZqNOudamWncQ1ACWrxINBIimAoSMJKGIiarLfORfv0KtWkHXDGRVpTvZgRow0ESfUDjIaqFKJpVEki1yuQYhXaBeswmETIqtVWyrieNJICq4ovET/eQ1oegpsP/RqQsLP5ipCw/CKR769DsY6jDXwpx+lXBtiGR+2b14VuL7PvHdbwff+5ke/kVR4BM3badQs0iFtV9AD9dY41ebNad5jecCa6Fma/yykUTAa7Gan0PXunnRdXsQ5DZHjyzTGTaRdYMtgxnGR6dIJ0KUyzqy0qI3m6Faa6JKImFNp2C3CYd0xuenyPR0kM0kcC2X7oEod37vKIv5PI5n87KrL2G5ISAHY5gdcM3zr4NGm4WlHEjQsh0su0W1WeGavXuolAr86TvfRatZppJb4tLLdjE7eYaJIxq66bN+64t56MFjuO45utIJPn3LcRwXRMmnWrPY2BPFD3XiK7Bzk0pDaLE92kPPznV86d9v46Kt65CDEU4fOs3gzosIB5Y58p2jlE6OsTDZyemJBTKZNL9z00v4/thZDBrEdu2j3DZ55MQqsWSawU1X8IUv3YFh6KwU8vzFe/+MxDe/Q7r3Ynzf4w/f/rd84KN/Qt/6LGePTzK7XMJptUlEg3zhC7c88YJQwAeKxTLLyzm+PLvElZcO0WrlWcqXeOShOxk9d5rR849QrTbxXIF3vOMdvOZ1L8S1Izz64DeplIvIqsRf/NXHkCUVzTD4m48+xkdu/xSqIuF6PqocxI3X2blrE+Dj+T4CAqIM0VAYRAFBKGJ2BnFqDpoiI/oeD997koYo0WoIHD60wonRk+iKgt2ymZw4SyQS5iUv/02Wlpf46Ec+zujYONddfy1iSSSSWMAXPI4eOk92MExNqhAMG0zNFCGus2vDBm67ez8DPV00C3kWK3kePHiCTVuGePzYKQxFYuvmYQ4ePU13Tw+FapUXXbaV0bElfM8mk+ynLx3Btiwyhkql2SasCDi+hqiA76vkKjaO5aAbOvFYnOVcnvT6OEdGJxFdm+GBASTPxXN9DCOAKQdohcGTRM5MrVwYJeaLKKE0nXIUTRGRBIVCs4qmKiwtLqCG0wyobarhFIWFWVRZJKhpNFsqquDSaLfY0NeH1fRptBvMOst0myGOnjtOaOsmFus1hnuG6EilSMcTFPMVXEkilunm9OmTLIyd5spXXsZDdzzKxPlFvvjJr/H5b9wFUpjv3HeedcPbKRSWmItOEBWiHDh2ju6efvKFZYrlCqneDEFZI5nsxLZbKJJIwfXQQyZNu0l1tUmiN4pt2RTtEvGuFGLLJxyWsFoyclBG9F103aZVFVhqrdCTSJKbnqNRa2HZFldedjkTU5NkOzLcc+dRtq1fx2KhwQPHFnj51bv4yt2PEQ/Fed0rX8k37ryTU+dOEQym2Xf1RczPTiEIFssFn2J+np7+AU5PjtHfnWGpuUplepV0TxwzoKEoPmFTwZuD8ZVpavEg6XCQRCBEfzhCQ1Ap1arU2w0ChoztCkzNzyKKCjhVBgcGSZo2+UqV5dwKkWaIQFAnbqTIlcoMDPUzt1xAEp+h0DNBEN4B/A4X0vWcAN4MdAK3AnHgceD1vu9bgiBowGeAncAqcJPv+1NPZ/+/LAozcwDkHvhbZGlNFPqVxvd5yx/f+DSqP7XZ6J4LxC97G/j+k3r4DxsKq0577bg+h3iu2okfsOYc/3rwVM/Tmgjyk1k7Pmv8LDzTdsJ1XHKVNps2DaPoEqO589iWxLb1w3R0pdDdFkPregl3JMjNLBMwLbZ3JFA0mWh3hD6tm5oQIKSqzJZWiHfFsW2XNi7Tc2cp5BqUmmWa7SayIJEYHiDhyehyg29++wiH9o/RbFu88oV7KJeb+J5Ns9lmy/qNpJMK//wvf4ep+2iygR5SGJs8SzqeolicIRboYWZqllQyiF3PkgwJKKKEEY9SLOcxIiqtlsMj+0/w4hv28vW7vs/F3UPcfWgS79BZ3DZ0pwzue+QUW4ZCTN73IEv5HH/xvz/EwYNHWVleZd9L19GT7USvniUcNDk+N012foFYNEE8mQJfoFxYIBJLUatX2LGxF98XuPHGl+MBvufh41OeE3AutjiRW8T1XHxZ4PrrrmbPlZfT3T9AfrXBwvg4nucQigTY2tXJiZMzhEMqH3vvn2HbPpFYjIAaIJvtYHZmmVK1hqpJ+OJpEkmZekvCtWxcG4I9AvVcFSQBLa2jVyx0TUNOKmiOCbKKbbcxohrN1RbgIxsCddclPhBGj2o0i01KKy1e8rxLQBMZO7XMxMQEkZhGIB7GijhkEhkKU2V0FW7/4qcJd3Tyvn/4CMvnjnP/fXfjtFaxBJWeZJjwlq1kshqCKDAxeY5cs0Zu7Cwb1w2yrT9LO9uDZ5W5YuRylgoLPPyd+5leruF4LgcOnSasB+hfybNaaFHMV1AlhVQ4hCXblIoOG7u6mVqZp9JoEQ1HiZoavmOxsX8d3z3wGOmuLiRXYG55Ece2OD93nmwqRVCPgKQyMT9FIhhARaLVriP7EjFTR9MCLNdttvVncD2b2fwieSQcz6UrneXcxDjZrnX0BCGV6eTExAGiIZO+RABNNzk8OoXvy6BBq15HDiUx1AYJXycVCfLwwipfmrmb1XyLD7zvMmrlCqqm8/39BxjYcjmWDaJVo5AvQcFi+EVZVk+v8rLfeDHvfvcHcT3Y8/wbmZ+eoija5B88zsteeiMXbb2ImdkZDp8ZZdemTUwUlpls+Lgt+8LseYEAqikQCBoYSoCSu4Q31yS3XCVo6CQ7A5SdMuWWh9+yCCkmDz5+gquv3sGpx4+xc+d62k2PfZdczHv+/hP87utfTale5tTpKe57+ACRaJB7DpxgY98Qg92dTC/PEgkaHHjsCBHNYHh4BNETGTs7RjoyCJ6N1a6TSCY5fGiOXbvjtFoWc8VVpJZERJPIT86hCCbFcA9128MIqiQVn6FwmLonko5KLCyv4ks2qUQKTRbIlcq4nosuKtQch3ggRKtRJBaLM7HYoi+bZWVlhVAoTLFWo23VmFuwMGNJxJ8gZTxllUMQhC7gbcAlvu9vASTgZuBvgQ/5vr8eKMKFybie+F/0fX8I+NAT5X49qZdAlNZEol9xvCeSjv/fl258SvXbtov3dDKWP0txPf/Cw3+8m8JjH33S9eOmSq7SfgZ69quD/2RnH3yW8py2E2us8RLgH7cAACAASURBVBxnTSRa42fhF2EnFE0lFo7TFUkw1N9JRzjJhp4sVm2ZZmmJSDjEar2G7MnEkgm2bl5PtruD3q5uYuEodsVCaNW49fN34a66rEt387J9L6O/83LcEsi+gp7wsT0Xx7U5+MhJDh0tUbQH2XnlS9hw0TUoqk40EcZzLBQBND3A+clJ7nrwfuYLU+QrBYK6RtIMMDExy5137Wd5ucm3v/Moph5B0SU2DKc5f36ZpVKZarWMYzmoQYOp+Xl0DUDgg++7jdf+0Xv4+L99hls+dzu33PpFjjz2KNVKiVPnJknGwuy5ZIhPfOLjoNiIukM+X+TB/Y8xubzA6MwMM9N5PCvP2Mnv0Vx6gPNHHgC3RSoepjMd5/GTc9RyUywvT+PXVnjkri9zx+2f5H+/+53ce/8JlLhMejhMvDPInp1X8Nh9+/nkP32K7UMDhEI2imyRTGRpNx0SiTSSrFFoeDRth1OjEwh4tBptBAE60wkSqkp+pUS+3iDSESK7KU56MEg2kiI9HCDdH0TSRMyeIKF4mL98yxvpjKfRdJ2AGUQzDDo3pkkPJ0h2xLh88yaivQkUUyXcHaFrW4pgSCcViTBbnCGQkHGaJexaHbvUxm1b7Lr4YmK6j+1YvOKmtxA2w9y//36mZubQAzHCuowW1Dhx6hzf/d5jeJaN3E4RVMNsueQapuo+fmeAF+7axf4jZ2iFmyTWJVluShiGgqZLxONR0pkOWjWXYDiCqJtIZphdF68nHjJotcpM5ovEUxmymQ4KpSKxaJyFlVWOTkwT0ILIjo8k2XSlO0mETWrlNr6vsLiaQ8Rm64b1CIrKaqvJ0ek5ejMhplfyLKzm2bllkNn5ec5MzqKoJuVCjmy6E1EPEtJV0uk0o/N5jpw5xvpsElFRSWd7EeUgrutSazWRUImHIwhiDWyJ/kQ3pmtSzteoNh0CMY0Tx2dplZscPnCOgS172b6ll8N3fxPfzXPxxf286KpL0cdC2J7G0BXdTMzdzQc/8lfkrUfp6m+SDQUJxaMsr57hiquuoFLO4RQr5Cp5FEsgGwrR05UhEg2jBAQ2jvQT0GUEWaS4UCYaDSEhowVEZmenqddt6qUGBW+ZVDzInqs2kFtZZe/uLWiaQiSqYwsOkgQHHj3C5OQKv3XTq7nmmmvp69nItVdeih4RefTUBA8dnMPC4Zp9V/Ct+x/k9q/eyenzJ8j2RGg0W5wfm2FxsYDjCATMMIcOHSMaNWjNFdg42IthRIiGOpF0iY5OnVK1yeJKHkNUaSlh2rUqhapLJJFifTaNIAkEDAVV8smmYgQiUXynxeU7hymUqhw8MU7EDDA/P4VghCiWi8g+WLZLKJJEdFwkRf2x986nG3omA4YgCDYQABaB5wGvfWL7p4G/AT4GvPyJZYDbgX8QBEHwfx09KlG6MCvZGr/SHJ8pA09tpi3f93FcH+VHp9x5zuK4HqndbwNRonjnO59SG4IgEDIUXM9fy1X03OC5aSfWeM6wJoT8d9ZEojWeJM+onag3WkzNLxPp0Lko3UsiFMEWJKrWMu2ygnnxRnTRxPGgMttEUWVS4TCq4CKYMq7l8PAjj1MpVHngoUPcdefD6IGvUa/UyPb0IYgKS7MVrr52B27NZnDT86i0HFZX8qhWnXhXN/s6X8nM8gJmTOf8ZBW75eH7cNNLbuDkySNk+6JorowoO2S3bCVeryMAWqWMaJQYmzpLd6CD0blZxmckKs0m6WSQPbt2EDWTbOnpoSNgkoiF+Pt/+TzX7L2IU+dHGT0zydRikXUj28mtTFJutHAQCasKCyfuZ2pxFd/z8fCZi4SpNypkokE+9vEvcullNzOd89DCcd72tm38jz//U5qlJqlwmLf+8du44cbXkEkKfPWOe1AkjXK1Rbqzl+X2LF4TQoSwnRLlpk06HeeWz98KrTqJWJRKuURXqgPHqSEoPrnVAq7jIqs6oifSm44gmDau7bO0VOQP3vIOPvil91OptKkvlNi9bZi2KpPxk0TNQXZtvozjJyY5/tjXue2BB+hKRbisr4/l1TLtrg2MTn6LwrFVpA0y28N97Els5L67z3D5hjSuAIqmMVcqEA6b1Ip12o6LGU+Tyy0RDAZJd6bRVIPNIxuRZAkEgXyhRKPtkFteZmioA0n0ePVb/gfTM/Oky8fZvzDFZVu309IiKKLNQwcm2bJV5l3v/hCKrLCSm6UjucBSziGoBujMdNMRC/Hw0dNcui3NoZOrhAMK56dylIpLiEYAv11kcqZMTJVJx0IkY2E0UWRxZZGuZIxao4UqSsTCUXzXoTcbJ18scfHwIOVKnYnpBVKRELblkImGqLsqkmpgGBFOn5vBUGSGEgnOTozjCgKW1cRQZKRAGNOvE47HyOeWKJUtAqpPIraDQn4cRQJdFtFUnXbbIZk28cMS//yvX0KQDAaHd1JnFgSBYqmOtmEDQj1AV0eCb936FbKdIdy2i+e3mKjmmFsuoAuw6pVYzjZoNOqcuOcY2R19vHjXbs4J47TqFkdPnqZ/ZJCm63F2aZG0l4JQFTWkY+g65VoFy1qhaJWQ9ADrh3o5euQM6fUdLE0UCQcNqo0CZkJBk0zuuvdBtg6PsK6ng0NHRklmE1RqHrMzdToSSSRFIZWMMLu4wMzyJCE9xfFTZ9mxY5h8ocYN113N9+55mGA0ykBvD5du30gyFWd1ZYX7zpyhIx5GUBMkU1G60hpWO8LEbB5FU5mZW0I1RFaLRSKRGO1Wm0w8gdvq4sToOMFQmHC8g7Tks1qtUG/LmLrA5Nw8dcvGFzySiSjtcBpfUGl4OuGgjYNLsqObbCrBybNj2JJKJhGnVq/SbDRw2j/+5f1TFop8358XBOEDwAzQBL4LHAZKvu87TxSbA7qeWO4CZp+o6wiCUAYSQP4/tysIwu8BvwfQ09v7VLv3zCKr4Pt4no+45uj+ynLNG9//lOs67oVzu3Z+/4PEaz6FN3YYaf0l5L/wpqfVliQK2K6HJK4pcc9mntN2Yo1fC9ZmPPv5syYSrfFk+EXYCUmEiKlQmCmibNnCP//bN8j2dbHneT2cHC9w9At3ctOL9zEw0MfikkgsbAISdtvDavkcnDpNVW2xZ98mxiaaRCIKsqxjtU8RS2ZBgK1DfWS3RHj80Bm6sykWckXqjQCGqRPxzxLqTNA0Y0xPVVEVjZAOQ+sGEQW4ad9LWSnPspRfoml5NPI5LKvN6vwSVttistIkFI3wqS9/H8/18HwfURBYWq5y+MQpTEWjr3Mzp0fP8L4PXYUg+hzbn8JQJVZKRXp6OgnIDcKmSaPeJKyFAY8zE4tEownq5RK9/T3Uak2iZgI9GGc46iNQQVMaeK15vnJ7lb54LyWzDG2baEbELZ4mnuzhpVdu4sipMU4eO8CeSy4lnw+wLmkyvdJiZm6O9QPdGEkNwzDIFeqMT00TjYeJxXV03cGMdiOos/R09HJ08ihd8QzHZ8+Rm63je3VOLs7RePSbvMjq51ymmxwLLOU8PM8jETfYsnGYO776fXzf4ZLNF5HZkGU1n6Ni1zgzM0NWqXNF/waslEMzV6NEGyUQot22WVgpkx6MEw+F8X2BZsFhXc86tGgIyxEIVjS6O4fIZjfz3ve/l+ENvWiKjO04BHSFWFinYTWxbJ8Hvn+Wm/v2MdDXy/L4BJlkJzUMZFHi+fv66e8NsHfXNhwP7LbFhC6Q6+kkE43jCj6CLPDA48doNhvML1e4eLiP4+MzJONRNENn40A/4wtBhjUN27Gp1Ft4nk1HNktrfopUKo1fsHBaJZotgUgsiam51Fo2tVYb21URJBHB92g1W/R3pZGENhFdx3IsFuYmWNfViSrrRAJhUmFYWVqiXK/hOB7VZIxiMY+padRaLeKJXlbqDUKGSq3RBEElLLcZmz5H4UyL8dEcXT1bCIYirB/oJaANUKvnUbUQJydX2LNzI1++7bOML01iRoJYVowAKggez9t7GfOzC1S8End9+X5kSaJVcXjVRbvRjCjP27GPh48cZWVxiX2797E8f4aq7KEJMpKnIFgyLa+GjA+CT2e0k0KujGPahDMxnJyFooqUKxVCYZMgKpt61xH1gliCxUypjGW6FGs1MmYYISBRabToDoVYWS4wOpojaKpYdp1AKMDU1AodqQQzczk2j4xw5OQx+gb7KJRqXLLzYk6cPsZKrUa7YRGJhXjo/oeZni+jGz7pSJSW72C1HJqORyCg4EptIoEokrTK7OIcQV1jYX6JZjxKs97A9sCnhue52JaLKEvU2y4xP0C7NYfdctizuZdSo8bRc0soskOzUkdXFaIhg2Klgal6BJMJpmcXfuz9+emEnsW4oOoPAFkgCFz3I4r+QOH/UR73f1P/fd//hO/7l/i+f0kqmXqq3XtmaVUB8NZecv9q06o95apfODqD4z71UWO+7z+rwo/KDRtv7DBogactEsGFm8GaBPfs5zltJ9Z41rMmMv131kSiNZ4svwg7IUsSEQ1sx+Vzt32f3qEREINs7t/L4wfOcer0eXxZJL9cZqCrk7rVotZqgyiQjQR58c5ruHHP9WRCGaKRENFoilAwxLrtQ9TtSRr2LBftvZKYGiQsyQQ0mdETB2m3DpGMlkj3DBI1Y5TKJULBBNlMHC0SYd++S/Ecn4YnMDtfx7VdBBemT42yOD6D3bYBgbMP3sulPRqu64DgIwKyJNDRkURwJVzbZmx6nrseOI6kCXieiK6p+KaLLIgkohF8z6MjHadUaZDLFamWymwbHqEnFWegJ0FIMxBEGVUP0Kjk0AWLoD3G7gGfa7YpJJQcpixjl5vUShWu2bqdWDhExfc5f36SVKqbHZt7CaUUUn1dhLuG2LKxnw3rtxDrimA3ZQKBAMsrJYSgzY7hHoyYx8BInEjEgriPlmqS6UxxujRGpVbD9y8EcMiiwGRujplOg2Smk2zPEF29Q4xs2kHFn+bbj36dYnEFRdWpCG3+/iOf5dvfPEChkKC/L8nO/vU89OgY42M2jmehiCYxN8bLr7uYVHeSbDJDZWUV2W5z0WXDqJpKyJDRwwqpjgw9vf3ousL2bZcS0CM4vsfi1By6EUIzYgQDKoahctN112CGwjieQ8NqEcpoxFLdZBJRZpfz3PW9R/nj3349b/u911Bvt/jegc8QTmt4qkfbtLhi9y5edO1urn/RFYQMGctxUH3o78lSKpRYWspRKrdYXc1Ts1yyHVkERUMQfTwpQFDXMaQm+UqDeFClWSuxUiigqQGOnZvA0D1q7Ta5Up1QUMf1ZGq2j2Jo+G0LQw8wtbiE26riOBYTszMIAZNkKMzmS3Zz/PwZFnJlik2bwZ51XLp1EEHSKDoCKCbxZBJD8EkYIQKhEL/58hsRZYWX9AUx9SUSncO88mWvImBGuGjrOv79S59jdGIM3/OpVWrUGmV82UWQHQRZYjG/CA2Frp4URtYk0GHy4U/cxqEjjxMN6pScCn39fcRTKc5WVugRwjQlh2QiQTAUwMbFixpoZhBFVFADMvOTy4QRkX2BTCpFIhFhqLeTeCyC57p09qawdYUmNQKqSdWukKsUoe2iSTLpsEaiI8buPRsQsPFti45EjJnZRWrNMmNTE2i6S71oISo2J86MUqnZpDK9JCMZrrlmN5Wyy6EjJ1jXF6RSrmLTRtckpKCA3coj+jamrDAxM8VV+7bRnR1ioKcLVfbQNYhEVYJmAJELSdq7u3rQVYVwUGW1mEfXIkzOjHP7PQ9xZqIIHgRVjaCh0LTarBQLVJsVbEmhWC3/RH/36YSePR+Y9H0/ByAIwleAPUBUEAT5ibcA3cAPZKo5oAeYEwRBBiJA4Wns/5eC5/nQuBDStJaM91cczwXVeNLVfN/n7W/9MG/Xgsze9W5M/cn/TJqWiyqLyNKv/zXyvrtH+dt3fYSD33gfQx3mz6XNZ3vY2dq94Yc8J+3EGms8F1kTidZ4ijzjdsII6ly0eyuKKfPg/gJmOIbr+dzy+W8TiGlEO3QiERPaHm3XwbcEFhZnyMTiWLKCGTZQRUjGI+iT02S7Jbas30FLGODc1CKi4xAMBGlU4BXXPR+oc/XVV/K9B75GRyJCqVJhZRHqNYFkPIwZjLN7x6UsrBQRfBFNlBAkiTNnc9i0EVWQZBGn7aHIkExJfPr2e1EDMooh0Kp6eI6A5ENvJk0goLNarBBNB7Bsi0wqBWWZuJnE7CxTKhdQAwaq69CVSeLjs2/Dek6NTmHqAnWiFEtVRM8CV0ASYWp2hvDmQU4vLbBp8zrmppcpN1vUmk1W81VyfonTD52ksyOBFlxHdWmBqtUinu0iEQ4RiYUo5i1kv0oiHqCjN0Y0pHJqRqW00Ga2USQZz5BrOeC5JIwoi2WbDRt6mFlYRg0ZpJNhStMlBM/Fd0SMqEhz+Qj16iyxUJL9x8+QTccJGQbKgAN1l3Bc5A2/8yfklpfZtmUz9z98mp7OPl794gDBQICCU2DPnt/GEUDw4I6vvp+ZvMbJ4zlGNuwgLk0wW8zz+JFzjOxaz2BXL4PrB7Fsj46oTK4R55aPfoBtgxnwHCrVFRotl6XZFe6ZPMKuUptMdwaUDKZhoKkqRiCA54d5wVVX8uCjj5GOBLn3/lvYNfQSDh75DlsHhvj6Pd+n2LfIbXd8l9e98npWWzVmaiWMRD8PnhxFkeHA6eNoZhBDDLCvr5M2NlOTU5wcnyEYCHLwxEk6Up1s6E1RrDsEQ1HyuQVE12WkN0V+tYjVauMHJdquR7nWwHYqNNouoWgMMxxnMJ5koFNn6uApDN0gKIiM5haYzS+jGzojvSlE0WTThl4W2jaNSoWh/j5KxQpj0zMYUhLFbZIMxZldnqYrXmP/Sp3NIxvZsr6DBw+NMpDUuf9bX2dmegrH8/DbNrphsJqvEFWChMNxCqtzbBrqZzFXpVdJUWzXKQXa1JUafsDh//7dp+na0oEVLZNbmUexXA7lxolHYhwpHCMYidIb6UDwRHxBZm5xEUH0MFSFYDBKIibRbFrICDx+/Bgj67dyfGyM3EqVaCqFagpkklGGjCymonDk6Bgvfv6V3HXvd+nrH8ZQFAK6QbvVJF9vEgkGqVdsMokkK6UqkizQn+6j0u/wng99mOHeQa68chsTU0uszI0jixJHzy6wcaCTpfwKjtXGtTQ64hk8y0GwXaxWi5VChVIlj4DLwFA/Z0fnwW8TMOOkkkkESaeQX8RzLFZXm8iyRLVRZT7nETJMNEnFjCg06k2MUJBUMkmxVMUMh7Bdn5Cq/kSf5elkY54BdguCEBAu7OFa4DRwL/DqJ8q8EbjjieWvP7HOE9vv+XXIO+H7PuWGTezVnyC2989J7Pt/4Iluu2uZjp80v6hTbjsX1NHX/dkbf0rJ/06u0gbXgWaFnn1vJ7brrcQu/WNiV/9Pyg37Z/oOtZbzrBALHh1f5W/f9RGIZX9uIhFAoW49K0S0NX4qzwk78aNYG23y68PTFTZiu976w7+nUvfZwJpItMbT4Bm3E6qqoAcCHH7gHO/5m3ehKgo/mI8mFExy/QuuZKFaYblWRldkVMHl3Ngcx4+d4qGDh1leWEZTdVxfJh6Lce7UAqoo0xlNsW2ony07NiArCtVaGUUK0K4XqNZdbMdjsVAkFkiR7ejk1a+8gU0bN7Jt515EVeXEyTN4eBw6dprSagHJEDBSGmZUIZrRyfQHufHqvQxsvoJE1iQ1YBCKGXQOh0n2G6QTURRNxfZlJN1ka8d6BuN9yA2Nod5ewoZBo9Fiw8AAuqDQbNqYpkTvUAcPHztFJqhyamaWaDCAKMnEYjFcT0CRAsRDERK6iarprC43efjoAhOr4+TzFUBg5lyBiGkSUINofoFWu4kqe9iWjeVYuK7D9+99jAdOzXHf/hPM5BcYPbcCLRlJldHjOngOyXiYeDxOOBUmG42hqAayLhNKBGkUGoQiKi4evucTkAM8fPY400sVjhYWSMSiyKqI4zm0Wy6u49PRMYhgFVnfF6P4jW8R13SS6RhD/b1s2X4Z5ybm6cqm6e1I0duVRlVUNu+4iutvfBPXvvhFzHoVHKJ094+wMJ7j5htvJmQKjAz2c80Nr+N5115LJBzkwx//HEeOH6VaqxE2ZEIJk0QsjuXPUM6fJBBusn1TP6IoY9se1aaLrSTZc9X17LzypYz0Xkmr5aDbCq4jUnPbfPSzt2PR4Nv7H8TIpumPp3j85HEsy2d0pU4gEGdkZDu1Wg1XDaGrBncfPIbn+YQCOsVak3XZDNMrZTwBlpYWaLRbZOMxlgt1xuYWsD2LiKmTjCTZsqmXgJlGkiQUSUHRAwh+k/GZeQQ8BC1EsZxHN6KAQLNp02g26E0mUU0VXVOYnl/BVwTytQr92TSKIjJXrLCwMIfXWmV+Kc/MzDxdXVt45PA5Lt02xPnxUxQrZTRVRtMUFEnCc118wSffrFBtl4mnUgiSdCGfkusihUwkHZSgwkSuQDYdQZQkNnVvRZEbeJ5POhKmMxSmZUM6HmWmlqfp2tTqFUqrOSyrRWc2QUc6iqFp1Js1HK/NyMbNzFWX8EyPcEQHv4niCpwZnebU7Dj7Dxxh3UCWqelFWi2PZDLI9OwKzWYNQZMQbEhlE7TbbSrVMqLvge9x21fvIpMOMzLYz6tfdiWKrGPZYERjBPQQYFOuNrDaPjEzQjqg4PlQrdWpV+vYjo/vCch6AA+JTKKLwf5ORCVEb3cUoVKnVFjBdtrEEkmimkqr3aIjmcZQdUJmiKXCMvlKDRCoNVtYbZegGUSQVGzLovlTImCeTo6iA4Ig3M6FKSsd4AjwCeBbwK2CIPyfJz77tyeq/BvwWUEQxrig/N/8U/fxVDv3NGi0Hbpu/hdYOHthRMp/RpRAC1zIUdQo8/VTC7x6e/cvoZe/flwIxXrinPo+AiCKwg8vzp+3qLLhTy88T3zkFZufdN2RF74TZJXiI38HXBhFNrPa4KIb/pL+q97xHwUFAbIbWLn9D1Hk/9Bcfd/nur97gIN//YKn9yV+ycR2vx1ch6n7P0QkoPzc2m1ZLh0R/VkhpK3xk/lF2IlfNs8WR/+5yNM5d/9VGPnB+o9q88eJJ8+Waye2661rAtEaT5lfjJ2QWDfQj6lpvPm338SbrtrM4XKIgBkmEuyGmk6+vsSlF11EdbHCwlKR02dPs2FdL2YoTXkpTygWQknJPHDbUTqiUYJGAEUWiZohitUqDbVNLL6ByfkCoiczuGmAgf4/YmEpj+u6tF2Lr9y1n77uHhqNKrd96YsMD4/Qm+5g45YtfPmrt5KJJ3jBK29mZHg7rXaVj3/gw+hdm7n24q1sXr8duVWkVJ/CUCXmigUWJvMsCFVe8bw38NUHPwt+gGZVoLsnC46HK8D6/nXIeoCLhjRahkeuUkbxGyQ2RChKsD6yHbfWorM3gd1W6JJUirkCIyP96Eac33jVG/jsrZ/k1ttu5xWv2EMgLBPWA5jBMM1mi+5EhGy6m0PWOI5YozedoJAvUW7UsAWFjnSStihgagqCBWL1QsLw4N4Aw70DGFqQO79xP9suHaEnnaVcrVDPtVAMkUg2jFxus1ht0GmGqdTKbF+XpeYLXH3RtZRqOabzS8RDGrWiT9sKE9N1lprL+EqB5qZN1Gcf4z3v/xe2be8nkqrTFcty+qFbKTc97juYI2h4zM4+xMaRixFbebqySdp5ER8P2ahTbQtETI31fSm+cusX+eSX7kAz4B3v/J984h/+jrBhsq53gNHxWWLJKKFIBF+WcF2B5WIDz3WZWt7ParGBJq4jHGqwceMeKo6PpkpcftV15EtVXv/KP+DeEwfJCFAvVXFt6O7qJjFVoNWoEA8HOTc+zuj0PL/5mjezed8+Tj3wRZSMQqPapNFosfeibRQqZTy/QUALE43GEDwRxwEHjYFshjOTs6Tiabo7gizMrtCuVwmH41j1CsuLk0x7HqloDEnRMQ2TmigSNCAeMwEdXWrSOxTBkiVazSoPHzjCts1DrJTKZPt7ODu3gqroWK0mbVcknkiDmGB6ucim7jDf+tJnqGQVAqaJX8zTbtr4uMiGgNPyqbptIkGP0clpNvb1IieDlOo2UVNBVhR6B0xOT82i92rs2nQ1R8cewbItrGKbltHCjvlcsrGX0+NLDHX3slzNEUsk6CCOagQQy3B2bJaeTJx0JsHZ82PceMUevva1O0npSebdFRAFGk2fuBbBKtQp5ovMzk9x86texuFTJ9k+vImwnuP83CStZgvfbWDbPpIEuiZjmiZBPcjCyhIjAyP0ZNN89dt3s1xus3NDF7JqEA0bGM0Aq/kcIUWlWK3gIuALbQJmCEMVCYdU8BpEwzGmiwXu3n8/oXCIemUV14rRVGWSqV6qy5O4okTFamIGowQ1k4rYwHYdJEWi1aoTjMZwHBvH8YiYAfx2m7BhsLC4iOc9M6Fn+L7/18Bf/5ePJ4BLf0TZFvAbT6b9XP2Zn0K73nbofv2nYfr4fxeGFA0yQ5z+1JtJh7Ufhso02g5dV7x9LUfRz8B/Vim9J8Qiz/e54WOPcPArd4KkgN16ooB7QYyTVW7/pz/i8oEEqiwiCAKi8OTEpMLRx4CnNuMZnssr/uRNP1wVRYH+VJDiox++sNnzSb3uFryJozB/hvTlb7sgGik6c3e/F8v1mJ1Y+rVOhB276i/BdbjhT97ycxWJHNdbSxL+HOOZthO/aH6Sc/9fneVnixDwy+TXZaTKj+rfjxKP/mu5X/Xv9dNYu8bX+HnwTNsJ3TBpNlrc8Z1HiXQr3HLvKW56000cf3yGxZVF1jezLM1MM79yP9sH1tNuVhjsSDM1t8TwcJS5xSol18bo6kAzNXZcvI5yq0GlbKNIAqYWpSMZxYlGmJ6bR1IUJmfnkBAQJZienSe3skx5eRI7v8AjRw4jSwL1xRlyi8tMz4zTE4+Qzg6yc8seTo9NMTzYxYbtu/nSFz7HH0X/gPGFFRamZtl9SYRms0V/poNCqYLlHP3NggAAIABJREFUStzwgis5s/AAD999CLflkRmKIxbKxJNZio0yRrjF6lIVUQsQjAbwRYWh7g6q7TKKE2G6WUM3Y+RWZrFbHsN9cZquhiKKnDz8ABN5h5te8nzUmIFrtVBVDdtxWd/dRSoWJKR6LJYrJE2RQqWCqoqUqmWu2LMFr9Fg6/Buvn7oDOXyLCWtgaf6BEWRyf+PvfeMkuys7r1/J9apnKurOueenqgJmlFAYRQQCCWCSBIGDA4IEBjb4NfA4jX4Yl8wmBdswGCCDQaDUQJlCWmSNDlPz0zn3F0556pzzvthLGzfa2GPAgru34fu6nXq2Wevek49a+1/7zC/THurj+PHRnnd66+ityXAnKGjajKlVAGt0USVVFa1hGg2TOZiS5SbObrDA4ydnSKrL+K0e3nbjb+DqmgYwOjYGP6sDVEUsKsGxWgIr1vgl08eoVg5wh9+8H2cWFjCY/XQ2dPBXG6Ocm6G8rEo27fdynwySdFR5X3X/TYP7bgfMJhdqkDhKPlqiosuvZZ8NksjOoumqnhdDjS7warVF7BrxxNUq0XWbhmkVqmSrRZwOgzOnpilfbCV+OwkNa+Gv3CMQq5C0OqjUm6nbohUqjUu6FxNuVLB5anTZpM5Nj6L1WIjEV+ms6OVLVuvom1gCK08TfJkkQd37qfH38dcZR5JEQi3BJhanMfr8VEzTVKJOH6Pm23rL6VqbXLgqUP0tUcoN+rElpbxedzIFhWLLFHUDXyuAPOJRbLFCh63giCB3WLBJluolnLYrTK94X4Uj5NsrsieI2N85BOfIzmzD7fHh+xqx65mWI4ugKTRo9nIW/xUSmWGO3wc3vkEroEglVIRW6+d6lj9XM8tTaSpN1BkK5pHo1Kp4nQ4kSSJYiWLRW2SiWW5cN1qorUsno4gmhpBES2kCxlaPH6867uYW4hhrVbIlStoDhHVIWIznThkFXsgxIkjY9hUG5oqcmZ0kmgyw4a1Qzy1Zz/RRBS33QpOAc1mQZQ1Zo6dxGp3IMkmPoeFj3/mC/R3hlAtCrIGRqWGxSLjDIcxBAW3y0NsaR5DkEDXsVgUdjy1F71pcmZ8no7WMA6nG6sjTaWqU6gayJIVxaGQzmWpN2DVcDcLMxm0gJ3Ycoy63sSUDBRFQZRkBBR8gRBT8wmkhkG90cA0DZyyjD8QJJMtEostYHO6yeQzeNxeamaNZq1Ba8BLOlvAZXOQbjao1ato2rleR8/G8xKKXmwW5+MvuM2mbnD7D47wyDd/eK686N8jydC1jtg/vRdVfvaqvGeu/d7nHuCtd/3+C+7jq4lnxB3T/LeeNKYpcN/vX8zQyBKFs8ehVj7XrU4Qz/0G3vKuz/3nBkXp3HskBVQrN/7Om+nw2bjz0m48NuVXwtJzbWT9TEOv77z9gmd9jygKpH783l/9nSnV6b3uU1Ar0375H4Ao8cX/7yPP6f4vB7wXfwyadX7508+xqcf7gtlt6gaGya/9bq2wwvly9Mzci2r/fIShFV48zleQ+E3szX91j39//d+LRq+G5+bXiV8rrPByo1aro2Ln1jddyQ9+8QAgUps6gWG4uPyiYcqVGP393YiywMRigqCpUBetiKrOQG8nkuREEXIEOtpxvPNmZFOhrW0AvyETTeSoCCLj0wuoqoLFoiHLEj0dEVLpJMtLU0yd3IFNc2CzCezetweLxU4xX6asajg8VipTNZBFvO4an//i/+ajH/kjqvUqtWIOUdBp9wpEl5r88Qffz/ETvyDU1kalUceoq4SDTj702Q8R9Hlw211kSjm2r92GKInkKkUq0yPEsxXUiIbUMIinc/RFQhydHsdt9bDv/l+ybksny8kEsiEiqyKyquBzaFg0GydmR7n68mt5KJujxDhGUyBfLLB5aJgWt0iloZNpGjTKaaLFJslsG33d/fQH/CRSUQ7kZomdyFCvqtisTpyGBWebxsjMEmvXDDI6N8tVN13IT354NwICH37/2/CbViJtLTTzKaL5Eo8+eZhm3cQq2fBHNJwOg4aRwG4qNHM5Th4+iTfSwY7dO7n3nnvYtHkja9ZtQtd1nKF2Ht/5JJVaDVGWSNUsCEI7y+kGolij27UVV7uLTev6qdaaDIcvwzVs5Z7DT3D5pi2MTS4gCCamrCFoIRDydA/0cHJiFr/NgmqVcLm7yVXqhFo7SCaKPHjXAayanWtf1wulPGF/B6oZZm7uMWrTTTqud1OpVjmRz7Kt20I0q+GSkyhWH5pmp9lUiOomss1JpDWC223BbECkqxu/TaAlEGLn4ROkMkVa/R0MRDrweuxMTI8yPhVj85ZNnDo+gibLeKwugiEPlWqZ1qCPfFFjMR6jZg+SLtWwazJLsSQuq4pIE7fDjcsVolxOosky+VoNQa9Qa8Dtb3sXpXoJUbOiAx99/9uxenu5Z/osr73qahy+DmKJZTwNnc5ImHTFQGlUUcUSE4d2IXR5QTIJe/w4rBqr+joYn52noZoYFQlRaiI0m6hWG6ZkMJeO49PshFtbcNp9HB0d4ZLr3srNq1axMD/B3vGnMBIV1IBAOVGkvb0Nt93NidNnuKx/iNnxeXo6OzElmWKsgNg0MJQGyWSGSqPO1o2ryaSLJBIpOlpbqeomZlFnYmIGp91KuLWFpZkZNLubJiahQAvL8SwjoxMoNhu5YgG/xUc6U8Bus7MYixMKhVBUCcGUyOWyFAtLBINBPvL+27n3oZ3ks1X6+waYW5ijUKxTxyCerTHU18Wps7PElrMEfHZKpSqZYoHFfJp02qCpN/E5vCSSUVavGuDM6ASKolLOZehqiZDPp8FQaQ+GKNSKVItFBEFGb+q0BlqQTJNsoYQhmFSbOrohYrE6KFebCOKzx2Uva6EI08R71WfIPPFnz9lEvWmw7uMPEN/z6K96CwHnBIe2YVJ333He2Q3iM5kt0cnn7Nf/NP59NpAggFWVmPu7twJvBf6tNA0gX2lgt8hkyw2OLGT47S89iSAKlKZG/01Q0htQK/OLr34PgK+fM3LOgNV57rXFdt5+Bt/wRRDOL+PFa1fJ7PnCudfX/QWkF3nf1u7zvvdLzTOZcogS6QNfe8FLw0RBWOlLtMLLmhdDFHq1CAMvFf/VZ/dse/ZiZro8F9v/mWj0SuWVkuW1wgq/QhDIE0E1i3S3tTFvieFdP8j2qoeuoU1EY0lkWSYdHWGwp52Zg2ewW+3cuP1SiuUmxTpsvPx16IJKouCgaZhMLOZRNAuiLIMJ2zb3c2jnE0iBAfRmg8NHniSXzZATCqy5eAhbU2UqPoOpijTMBqIs0hIJEs2W6B4aQtODGIZJcfEoP/3O/6beMLj4wm3cfv0f8eiOfWzY+nruu/97vPl1VyApFsbnZ8nEysiei7j6ijfxnpu2cccdd3Dz9qsw9Tq1qoHTbmFzSxcjUpK5+DJLMzH8vT7StSqSZMUlibz7vduJTUQpWBWS2RpWU6dhCFTzVTb29iEWJAYGOmi+4QYe3v01wE4qmefex3bh9zp4+JGf8+Dd9+N0etCNJouzMSxWlRbFysmDp/Gv8TExtkipUKHF1YLT4mB2fgnJYTIyNorX5+OKNRcSPZvArlmolCs0m2ApF7E5AmxZ14OpmGTTOcJePxWzwdlSDGtDwCLItLYGiedP86nPfwZDh1qtyvXXbWYxWSHsbuWLP/4K1WYNxS5TLzWQqmncLZ3UGjoN3aBWq5AvFPjlniPohklLoJVKpc6Vq66mWqtjt0rIksShg3s4nVzEooexFE9zenYZvz/EO26+kh0jWaq1Ovn0Epde2M0vHpnD5fKiGwZzy3P0DUW48U13cM21N9HaEiKTy/D4ju8iJOpU6lVEo0mpVkERRNKFk7S7gxiWVqouF20hL4KiMNDdxr4z82zoc1KtqiRjOSQTsrlFvC2tZDMZcuUa+WqNTCqDKKnYPQ50p4KoqXS3hllcmOHQyVFEWWYhPkpLOIKEj1DAjUWAmXiKsD9EOhOj1NTxCgbFbJLVwwM4JJWJ8XFWrx6i1KgT9PlJFeMMd6+jUchTDzaQDC8XbL2c00f3EytWEQWT1MI4q3q7mFbrBCRwqHZEAZrNOoF17aRSKZaTaSweCwGbF8WqoIoqmqBQb5Zp6C5KjQyoIi3+Nr79tz/mXb91PaqziSCAvy3Aay99Ix/44IcIBQfpXC/j9wdYjhdIF+p4XFmEapVKA7LFCkahwNWXbmNsco5AKILLk2d0dImZ+WVMoFYs8863Xcf80hKmYOBz2sjkGmgWD8XKEkODGzE0sDutmLpOswFIMnXqBFu8SKoF04RqtY7H4yEeX6ZcKPCLHU/wjjdfjzfgQxYFDh/dR6pYYW1/H9l4iVqtTsjroiEITC1G8fs9gMlrNm/mvkf2094aQgdaJTenTk/Q291OtpShmDfJVArouoHFpjAXnWf1wABLdYMtPe2MTyVYjC7jddpRVRVFsZDJJBlYtRqhWUeolfh1c6hf1kKROxSgWkxTrjWxWf57rhqGyUNnotz+O38FjX9XuiYIYLGx/18+zUDY8byCYEH41x/N+nO2scJ/RBAEntkSj10FIOiycN3qMIvfecd/ud40TXTjXOPxeL7GJbf8Kfd994/P35HMErhC57/uX5GDrTTTi6+4/ju7xhLcfNufgcX2K9HrhWal3GyFF4vnI8Y8W9C+EgS/MjjffXo5iDSZg3/zihUQV0SiFV6JOO02VIuFzRsuparrINYwTJNMfY5IfTVWq5V7fvYN3n/7rZQKRTZfcyEXKQHKgkwqmkXQdY6cnUWWJebnF/H6AqxfM8Thg8fR3Fk6IwH+3898ErvbwdWXWejp38LBqSM88uQvWR3u5+FTO1nb285cPYWvy0VmrkJ4KIhk6NjtDhRF4vi+vZyZmKPaNFlldtHV0cHE2EHW9W/n8PgU69aPc/HGNRi6gVUTOD56hpAvxKnDexk59BQ//v6Pue61PSiqyee/8n0+/+nfYfTMFP6wH6FhpZjJIQgNFsdi9F4UZmF6kdqQlUQiTWjwAqKTB3HaJBYX4iSyWba/5gpa27qYP7WMZrUyM79AZr6EZBGwCBI3vvcD3Psv3+biq27kf/3BB9Eb4LJbafPbWJ7RaUZM5gQT5UAKV3uY9ladWqLBUiJBW4sPd8SHx3tOTGkJtnPnR95LKVfm4FMHKBZy1CSRajHN1a+7lfv27cRnc9IUBWgYeJ1W1KKI1W0lUclAvEmlVkFsCCCY/NlnvkTDMPmDP/oTOge7KJdzNHWT+GyK/bM76WaI03uX0KxOIs4KsWQKm6JSF1XQa0wtZrjxpltZvXqIxXgaj9fL1a9/I/f/wZ0E25pYBY1ypUxICvGDe/fR0T3AhtWDLC1NMjO+zMa+bpYrJstLi4yPjSFMTfLmW+9k84ZhBAScDisZqcrmzYPEow6efPAHiLLBLde/njZvkGy9itQsgSBwenyKYEsAv1Zh6tRezEyAyy/eTKNex+920ur2YLUJNAUnpYbAmr5BZqdn6ezoQ7U5cbpKCILI4mKKQ2fGCfodZAtFRMCKRCDgZm4hhkuzs66nh1K5zGixRF8kTKFYwu8P4LI6efrYMfL7D/Lnf9SOVbNhtygYjSaf+PjHKJcKXHXJO5mYmaBncBPL0W7edNk6/vlHPyOLlZlSGo/TjyrKlKtVHA4nkqjik6y0D3cjn4Fks4LVqRLwO5hL5KHURHBaSJSiWAwZp12jZK3xta99kj27fsmpZCd3vuW3uf+b3yJTVPmbb/wYBJF0YY4HHvsJbodKh2kjXzJQ0Dl87AzrBzbg9CrsO3Scd7ztep5+6jhTc9MoikSzUqap6+SLeb75vZ+SLxTw2e0oFplAqJ3e7k42bllFo1ggOVtEGXLi9bipVMs4nE6KxQbxVJpA0EutUkURVQTBoHegj6XZRbrbe9l7/DgDXb0kojE2rhpkIV7B69foDLezc+8hVIuE0Wzg8zhZt3qIfQeOYyIRCAaIhNqYmJ2hXKzgdNlZWIiCJCGLBulMDr/bSafXR9lipdEoUa8bpDNlmmYTUTKp6Q2ssp1KuUjdNBg5eZywz0epKvPr/of/shaKunxWbG+/lbbLzpXznHrwL2j1ar+6rhsmj56NcdtH/h7y8f87Y6h3I4kfvRdZemFLXQRBAIsdaqUX1O7zxTBMhPPs5fNqQfjXbBW/0/IroemSPv/5GzJ0Yg9/8jn70Rw/Aq+gz183TAIX3QmmSf8Nt3DwM9e81C6tsMJ5sXG4k9PGfy+AXRGFVvg/M3ue694/n2fm5SBWnS8rAtEKr2QKxTKRgI9dR+aR7UN45BzlWpwSVUqZUXzhjdzxoU+RTKTINexkU4BQwGKxoKgyLtWL3Waw6/EHGJ2e5NIr1vHY40eZm67Qs8FF0K5RKdVob23BoMBT+57gzLHTdPnbKNRLbFk9COhYLTYUp0mry0Z0poC7x4dslVBkK7lKCV0ETIE1G66jIhSYPnOcf3nsKMl0jM9+/m6aZok7Pvb7rBlcw1IpitXqYfVgL4VUjL//+he4665v0xdp4YPvvpGn9x7npovXcjKZIZPMoepuXKoTq1BkcmqRNouTlpCH1LTM2MIsna0+zJJCvVznbW95C4lUkrt3xLhw0Efs7BQelx1FtKKXGtjsIl2dbXz0Y58iX2rwyI7HqNYqxJLLVMUQ8dQ4v/+e16GOH8UnWmhp91Aqltg3cxrVbWU2muI1F3Thd7lxuIM89vQjXLFpG8cOnEUXm8guhVS+SDVt8OjTu+iNhFjMJPDVJCTAabMSCHmxyAIhfz8nDh4g2OWnUiqRnS/zV9/6Dvv37eCvv/BFbv+tKyktZ5nUC7QpTm696HWIgsFdpx/FYlHoeOOlXLChG0FUaHG6MMw6r9ecPP7zBxjqidDbZeXk8REWNJlaU6enPYhmNvH5vcwvz5HKpAi3d3F8ZBSPYFDX3MSSObZu2MbR0QNIJqxe00YyFefBXz7A4vI8p6NzXLl2LbF0hqbhxukZ4F3vfg+63uDs7OPISFSKZWwWlWophce7mr/8q69y/VtuY9sFbTy6Zyf1Wg1ZEMhVKkyOxHG6XFSLReayS7jsTibnT3PN5ZcxtTzPmeUxIpYw/SE/p5ez+INttEYUgg6d42fP0N+9inw+TTpfR7WpdEY6UTUFrzvAfDzKsTOTtIba6GiV+Yuv/4TffvMVDG9cR6FUZtWmbmTTTjkNpyZy/OKxb9HR2sLHP/Fj1vf2EWgNIDh0RLV5rkepYkGSJBw2K7FUiriRZ6B/HYWpIyzPZ4hnkmwc6uXgmVmG5FaKGRAcBuVaA1nVeOBn/4jg8/DGS/oZObuI0bmZoYFuCuUqilHkiUd3IMgCrYEW2kN+HnviJDOz43S0tnBo5BAet5NAIMSe3cdZs3qAoYF2/uFHd5NIZuhsD6AqCkgqLoeK3xego62TsljCEBQ2DoYZnZmjkM6ztrOD+bNLjIwe5pIbLiZ+eAbqZZxWP5WCQajdg99jJZsvoaoaqeQ87b29dHcEmZpd5pFH9vGGq9Zz9PQ0Qz1Ngq0u7IqV+Uwcm2KhVK4y0NvO3FKa2NICeqVKsZigXGjgDShk9Tphrw/DFEEogACZYgmaNRaiRSJeL5rVSlebm1gyhstlo14uYBgSomDi9TgoVitYHRrVevNZz86XtVAkCgJPfOxypm7fzOYb/oS11/2aDBFBAKuTj336vfzJ9v7/MIXqxcAxvJHi0d2YpvmyEmZeTr68VHzv4AzAeQuEhUoDeJ49dAwd7J7nvv43SK7c+NUUt/jer77o35kVVnixeCZDA/77QfhvqofNK1EUWOHZ+Z+4nysi0QqveAQBnzVBV1uYbK5AripQqClo9i4yZYHCwjIWVcViUbDbbYgCqKJBwGOwtDRFVVI4MzJPyWgiq1bKusapoyNs2tzBqYMx2t02tl6yjrm5OY4dP41UAk8wiGTUEQUZq0VBVUwGbO3Y/FYSs0XSyyVOTY6RrR3E7Q6iOUO0NFVSyQS/eOTvaDShbU0L4S4Pt3VdRffwW9n5xF7yOY1MoUgmU2RqPE+w283E+Cxbtl7Cn33yE+i6id/rx26z8o0HdrEwW2DD8GoEIUvQ66RYAtGnYPdZ0cs6Vn8HlvI0P/7+bu74vRuYMEqYzRJz06e46sIrOTE6RTqxg/mlWYJ2P0uFKMlClWJ6iqYUYGFmhoXoMlYEUvUG6wa7CXaG2PCaN7Hq0F7WXNTN03vOsmpNhPLwGg6fPMWazYNsHhhGrzdpNGW6gy387d9+HxGT3vYwg62tTJNgOh3nzg/+Bd/9wZfZ1NvDU4ePkZ6rIsmQTFd4+80X8YN/fJzL1rVjiiaNWhNJthBuCbD+wss5cWYXuUYT/5puLivpnJXP0NvbRbNp8sOvfpJP/9X3UQV47O6nufaWCzEFF/lqHXezglO2U9YFzp5KU04scCZ9mPZ2J1K9iCKZOBUL0WoVl9MFxrkR47qlTrVooAkiFq8Pj8tDs1nlsQcO8cB9t+JyO7ns2vW8Y8sNHD07Rl+/n/sfeQC/08WGdUMossxS6gjFbBRVtVCqFUGv8Q/f/Ro1o8bjD9/Dtp634AjYGdjyWo4dfJKAXSWzWKWrs52ZxSXCXjvekA+voJHLFpEaKpV4hXJ7gWxNIOSx47IpzCylSKVqrOoKkszFME2YjaYwTZ0L1gwjKRbqxQKaquK0awz2tPLEoZPoNIgXTFqTWXqCTgKWDfh71nHPg7vA0PFZRWq5JL/3tlv41l2PM7ApTKs/gF4s43faqNR0LJIMOrQGAshynaWTWXKZGkjQSDTZnTuD1a5RMOu0tjlIVSuIqoxBE0NRKGeSPLTzLlYN9FERJxifH6ItEObg8X1cfcXrGJnYSzyRI2DRGO5vo9wsE4o4SWWbeCwK0eUZcqkk6fgix8fGGe4fwKq5MNBRxBo+Xxi73UZ3JMzR8XFef/UlLMbi/Oyhw9x6y/UItSrVYoVrt2+hVikxtmuMQHsYv99FoVQl1BGm2ayRKprUa1UM6iSzNdKHj9IoVejp6MBQmiTSJdZ2tbE0u0QZqMkmHYE2ZNNgfm4eRBlDVGgaBqlMArfNiuBQaCAw1BmhoJtYhSY2yYnd4aZeqVIXIOTxIosNotECTQRsqkJDF6kaIi6LjCHYqVUr5MsldL2EJD+7HPSyFoqekTx6Q3YyB76GbpgUq0363v9P/PXHtnPbps6XLIPmgU+9jivevBvD5NembP0mWSntOccf/+E3zjUmP086r/rE88oGembCW+KXn33ONn4TGIaJf9uHAdhy+9t57COveYk9WmGF58+z9YBZCW5X+M94qQWfV8JzuSIQrfBqwTArjC/PsRg/gs/rx2UdZO3qXpKxPC1BNwvxZXxuB1OzCQqZHJqyTD6bIxkOUTNFupxWbFYLa9e52LljF7F4ilQ8TqpYx2l38e2/f5Db33k9mr3I9PQMa7v6iKezpPJZNq7rxKw1GE9cyKWbsxw/PU4qncQipRGdGnbJQFLr2EQRu8uFx+OgYhZob/Xjsbu5aKiP+eV5Vg/14vG4GF7VQalYoxa9im9OHaRYKNI72Ess0eQLf/dN3nDpBrZtuYDu7lb6ujv5+F/+DFlMs2VjP7pZZSaqsPvJYxyTBBwOO7/7wYuJJrxcc32Ye+//OR7NwtnkIiPJKHu++xM2rLJTq2uIBhQqZSRJAcqcOTuJ1DyB0+knGAqRScfZvHk1zoCFM/tO84E9t3DNTVfxiT/9G778+Q8wl0jT2REiNd9HZ8iL02Ija+Zxij5ELOj1OopFQ7YoHBufpCo3ue++u9h/ZIpht4PDhyYYO55ClgSauoEgwj/fsxfDNPj5/hLebg+iaMHjszI9cQSfy8+H3/NBjk4+jWb3sGvHDqamZvkmP2XdwAAjY/MYmOQyRd71gTvRC3l87giKVOC7f/91elrbeOihnQz0tLG8nEAqaDgdUCllSdd0VM2GZrXjtDkR3WnUYg3STtKlFJrNjShBuVTFbtO45dbfRpRERhd34/GFmC2MERB0dt/3NB0BH+2dQX50zxfY0LkJu2HHYutj197jzE2P0Gw2uPPjn6MtEuauH3yPux7byZZLNqBLdYYG1nDm6C7aggGi8RgIKqWmyfTsItdctgVJkIiEuzk2MsXk4iTtwXZWdXfT0d3JweMjHDmwl8Ojc/T19DK/mMTnbcXUG1xx8SWMjU6RUhy0SCVqtTLL8SSKYOK22dn91B7Wrn0X+aLGoZkE4vxhfn7fTzAosnnoAga6Ikzn57jyxvU4VQXV0HAEwjy0fx+XX7CBjvZ+jEaVY4cnWFic5PjJGQxDx+pVEWSwORU0l0wqn6becCCrAoZuYrdbadSbBCwOLCENh6pgk+wsTu/lwNN5bn7dLdz/8L8QMmDbYDeC5uCr3/0GF29ay/J8nO6Ig7aQlYPHUizHF2nQjs8fJpkt0BJuwe1w0x50MRmL43O4wWrhsm3rGJ1apFTMk1hMMTE1xr6nzvLOt1zDl7/zTYY7B8gUF7kgOMRiNUO3P8LsbIxKpYbH58PnseK0ObFqOSyaxunTp3H6PfzxB3+PL3/9W3z0fe9gcTmO3+FmPprA47STLFTp6uxiamGZeGyZaqmG1ePE6vAiGzWajQpLqQKv2bCWYq3JcipOKlWiWC0Q8fsRZSjXDOxOG7IoUarUERtlOgM+ktk8dtUkr5tEghHaW1uIZ9LPena+rIWi/xNJFHDbFJI/es9L7QqrWp0A1Br6f7t/0gq/IWpl8LWd/7pmHf8lz7306rOPjYEoveClji8Upmniu+azkE+AKBF76q9XJpCt8KpkJbBd4cXk1f58rQitK7zakEUBUVZ4+onTvOs913Pi5ASJ8jH8VguzSzpzy9NEXK34W4apNOqU9DySbJBNxHAFgkwsxhAVlemFImvXXw4IFNJ5vJ4glVIGQdYQBYmt61axMDlLvJCnIdQxTIGpxTRul4wsPkA82kEivsxsO27kAAAgAElEQVTyUpyOtgjpfJxipUHA4cYiWenp7mN6/CkqiptEMYYgGEQTCX5632MMrb0Guyxx94/vJprPIlaKXHzltej1OvXqBB7nZqLTZ7jpDVeTL5Z4cO80rW6Ja157OVLtLPuPHaa/t4dU2sLqDVsBGZvVSVfYy1JsEavdhsWhsWbVOtZ2ttHlsnLvL5fo33Q18fkFbNoYhXodu8uOXTBIzE/T1dWHw6qDR0XDRy6eZfJIjauvuZwDS3PMpOfo6lrNhz/6FWTNyh/e+Q4mKieJPmZgHHOyWNPZGglyqKQjSHaqtSrRZIb+zi6izTT33nsv6WKRpckJzswuI6oS3h4n+WieatoA1cAwwDQEBN3E22Llo7fdwec++zlqzSa33f5+JE1HEqvo5SZt4Q5OHDmD3jQ5MTKHgkR6uUCrJc+dn/xzrr/xtfS2BWkJhBA0N5puEGpvx24XePCRUcK9AZbqZeSsicfqxuV0U65lKRVLyLKKgUBXewSrI4BRLWG322htaccADMMg6PbTbOi4VBv9F3fRsWUTsl4kX6qQWo4Tz8ap6nmWFiARm6VZryJpNiTFRJIkvvH1r/OFz30Yj83OXU/chUVWUG0OLtqylbnFRbzuGvtOHENVZAY2raVWafDze3az9aq1HNl3mqH+Dlq8Prz+ANsvu4hTJ49Rj6dJxqNEQm2IAvS09VKrVvEHXDTiBWpCGoMGIzNpVLsbRRBQBANDDfP0qQlCXo1IJIDkbNLaHUFWDZqOOsWsiEsXMGpNAm0OGgYMtLay/9BxfJqbQjTGzPQytapAMOhlfnkZGwqaQ0WvC+g1E1EQsdssyIKIrFgo1Op4ZQ292UCuNJk4PYLTIuPtu5rx03/PV//qi2TSKayaiM/vxbRWsWlQKVfxOlUOnDzLCUVFlew4bC3o9SpBbyurO1qpqSKiUscVstFKgGy6yuj0aVrDfnx+J8uxIhZN4fHHDrCqr5dvfOefuOmGa1nbN8iJL40hGHWq6QpFp4SkKPS1t5JN5REkK+lUFq/PTqlcp6unjz1PPkXHrTfw5tdfQ65U4423XM9Pfv44fV2tgE7A76ezu52zC5OkizkUTSWZzeB1+OlobyedylKpJdAFhZnZeWQNbDYLlfq5LKE2nwfNYSedyaA3TNoCXhaTaeLZEjbVhmazMzjUhaxJaHYZMJ/97PzNHNGvPpR/TSPa/oWd7P/01S+xNys8wzNZPcv3f/y81qUK5xqfj3/l5ud87698+uvg8D3n9S8m3is+CeUcCAInHv4CHf7znwi3wgorPDdeqY2LX+28FHvyUmcy/VesZBGt8GoklSojmDVawl6OnJyEho/F8STff2w3DpuN97zvBhLFIvsOnKStLYIolRibt6LJVi4KGjRMke5wmJGTu+gd2IrP6eXKrVfy7rddzb0//QYJ6hj1MulcjWQqiShWaQm0EPDK2K0KczMpHA4XY5NLzMwsEPB5sdkVNEsniqwy3N+D3oSDT+3G3erEYjORXe0Uclkef/QAyXgRPX6a2VSFDo/A/mMp+tp0YqknCbk6ySWyxJIJ/BGVb339h1ywbTNTE0l2L07TaOhcd00/kkUjmcvQNBoIhp90aoGbagn2Hu7AkCzEFke5+Q3bmT5T5qc/f4y33ng12zcKbNywnkmHg/HCIpIuYLVoqIEgXk+E1YNdKEKT3TPHaB2+lN6glx0PP8p2UWBtewcTkw0uHmyhUR+mWi2Ty6ZQ4hK/e+EG0GEdAuPxRdI4cLrcxGIl+nra2HHyGK+/+Aa8bg8ul4904SyOvAOfS0U0DYQWF552mUIsjyipSCoIsgyCyfjpPVz+hqs4feoYv3zoZ1y2eQjXKgcUdHSxznXrNmEdbMXm8qDUVMqVJPtP5vjAH/0Z8VichmRDNM9gMcrURTsDPd08PD6JPzBMLQvhUJnXvuld7H3iAUJ+L/FUnVw0T7gjQCw9TykLLW0GsqMb2dlPspRFM5Nk8xk8fglJ16mXKuTKCg+f/iduvfjT6HKFJ3f9lIs2ORnq6EZWJJbm5qh4JJrlBotndxOW1nPv3WcZjS7wLw88idPpRXM6efMbL2MhkcLZ62bi8CiDA10gWDg6NkE44Oe6m7cxn0yx5qJV2EItLC4kiCVTtLW20t2xinxZpD/iYCmbw2UPsxRfQFMarF+3hp7eLg4dUdh56AgWh4LNotLR2kG2CsfPTNCoLHB0fo6HH0lRiBawu214tnqxuZyQKrD3wBmG1vWhuRw4bCoRXxAWSzzy0G503cDp9GBioMoq3pCbarGK5hCQVImm2cRpcWKz2ijnyqiaiWqaWDSF2GKaiZkFRs5O0dfVTmIpzaN7juJ0WvG5PciSzD8/8DhLiQz5bIliZYQWfwsdkU6yuSwDPf1cefl69h0dQVIldLuMaJhEY3kqVYWlWAJFMKhUSjR0F8vROIGgG9NoYpgmqipSrOr8/Od7iV6YZ3hgPZlMkXq5QUrO47S5qFRqtLT6yGUy2F12BElFUUBSVFrbWsgUi9Rkjd1Pn6DRqDI5O411/TBBrw9drLIUT1CvGESCLSwuZ+nsbMViFZiNLVGtNimVc4xOnMVps1Kq1bGoEm67A6dVIp7P4Xf7EZBBNMiXK6zq6aPVo5Ez6oSCNg6cHmVtR4RmWcY0jGc9O1fSCZ4jwrmaN8YefOClduW8MM1nVw1fDZxdKgCgKdJ5reu//jMgSs+vjNHQueMP3/bc178INJoG3m0fgXIOZdVWMge+tiISrbDCCis8B17uIs/zwXvhh1ZEohVetQiCwOJskQ//7m1EbGEee/hnjE9GaW3rQLXa8chOukId9HS2UCwWKWd7CIc60RtNvv+PD+N0udj99AkyS2nawmnyhZ3Y/DqP738SV4eLgM3O+NQyI2fGCfoCZLMN4skcxaLO6FQcn8uFz+1jZHIcj9tOa6AFt92L06KQymU5NrJAxbSwZm0v/ZFO7Gh0KQ7sBQv1hsCa4bXsOXwG1aogGA2CIQeyLGO3OHFboVwS8LocYCoMX7qJpcQ8VlVha1eIKy/qYTlqYpM0KpkmdrXJh3//Zqz2DNWb3kp70IGRX6K7XURTHbSGA6SieUbOLmIPWTEBq02lXk5TKaUR9AZ2RUFRJM6emSYaSyMKAoND/Wxatw5ZUjizuEC8UEJHISN5MQURURYpFJLMzqbYbWkhuuUyjthcdPgCTE2Nkcuk2bJpiONnZxCBJ/cc4stf+Rp/+zd/h9A06Wj30eW1IdksiLKM3WfH0+7B19+Cp92BoUNLyM98o8ryzAzr2tfR2dlLttjELNdYLmZoiFaGNw4yGGlj66p+BCOHxaYiygUu3rKRN998A929A0Tau7j0NRczsGoIkxq6vogvEGBg8ALWrb2e02eeoGcoSMNdx97ewgUXDOOp6shNCxduvQSfw87Rpx6lkhjBqBRILS+gChITI6NIqsjeHWfp7xtk7Mgs+VyaUCjInR/9OH6Pi6VYgnrDwN8SopqvU20YzEzMMbo4yqO77gFNpLUvgt2qoSo2ZqcWyCczUGvQ2hnAG/TT2hpB0Jukihny9QYWq4VMqYSkyLQPdzM9O4Vm0+htb+Om7VdTqjRoVmoEfSJBb5hgIEi4LYDd6cDl0HC63AwPraFrYAOKO8IFG1eTio8wM32adAouuvytBFodbBlejVW0YK/qLI9GCUcitNg0Aj43C4kstpLO2blF5hcWMHQdw9Sp1GrU6jVsoobd6STi82O12vHYnUSCXjLFAnaPi2ZDp96os+/ISY6cPsv49ALtbW2MTy/w4M79YIKKiFuQqeVrNIpVioUKkiThdYdIZXOEwxGufc1WWru97Hr6CNu2rCWxlKRULnP61ASZdJpMJkq9ViZdzONyWJEViUKxiKkbNHQDXW8STRfxeUIIkoyBDbvLSzpfxiIqWASVoM9HvBBF10VMSUZSJFwOC6JkUqpUaZgqjz6+l9mpeS5YP0S2XKFea3DwyEnGZ+Zw+RzMxpZRVBVdNvF67URCEVb3t+NRNNKpJLKoUCyViaayOGw+ZEHDYdOoNcEqWymXK3S0hNnY38eFq1fR0eOn4dRp6/DT1T3AVds2MxXLMj2XQpaePWZeySh6PogSNOt4t374P05cewZBOPceRQNXkP6tG7jvzkvxO1RkSUT8Hzqh7MXkkrf9+XmvMU0TqkXe9Ifvf873PTSVAeDPXz/0nG28kOiGSeCK/weqRdAcpHf9xcqztsIKLyErE9dePjwfweeF2K+X256vCEQrvNqx2KCj284PH9xBYi5OW/sQZlPC729BkBTuf+os/Z4I/i6Tp54eQbaquFxuipks6WwevVkmEgzgdln4wT88hN5s8Mab7CzqOm6vj8XZecYmF6iXCmTyJUI+J4qkoWkS7ibMRxN0eWV6BsN4bSF8mp2GUYd/DSAvWNdHqWbQsHWRN01c/ggmMBwQQDg33MftdlGxWBEViW2bDYLOGm3LMQ4cPoYoycwvTDI80IdNsiNGIsQKNewtYSbnZonF5+jvHEANO2lvUTg6MovP5yObKmOX56ibBg63jCxA31A/E6MneHzXUbweKx/feAvLsQQ2Uac73MnU8jJejxtBEAmqOg6nhXKxRFskwuzMPBZxmQ7PMDOZOHZrgHgyiTsooBku5jJ1hi7pZf+h3fR2uLhA0dkbjdPitOFyOSnni2xe28VD+xK8/spt5C+8iEhriB3776acK9HWEua69evYsWsHakrmsg1bCbREuGT7m/nS3/wBG7s7GEs2OHZglIPGaa69fCO7Di5z9MQsqkNDVE3+9Ivf5u23/Q4XXHoJgUqQm6+8kC99/2f85Re/jGHUOXN0H6+/5jIMiw+3t8Jf/q/Pcdm1b+aWK7cTnTpJfOkkIauV1VveztiPf8DD99/F+257LU+ezNLR0oE/GGBscgJFUjEbDYrlPEvxKC3eEFvWDnDrjR/BY/su2dQC9317N8dGzqIoCovLUZpVEEQfpgkH9j+JWW9w/bs/itNu58zBe7EaIv2RNub1GgV7CcNssO/AKXKlIgMDHTQKOm2runH5rawfWsfR0eMoLoNUvsglg5dxcuQ4a9ZEaAkHmZ2ep6PTx9jkLBVdZ+1AD5lCjeuv24CkiBgGVKtlCsUa1157NYvxPJvW9VLIFjg0voup2Rh6XaClPcAjD93PHXd+nmomyampnZwdmaTSrDPUFuJH9z7OB956HbJDZqyUJ9wSptZooGpWFhcX0U0dUwBBgkbNJCUV2bh2LXq9QLZYIBTwUipUSSWzSKJJbDmBy+Um4PCQTmYZ7F/L2ckTGE2DVKFMR7gdnyqTymVxBGwUcyUEBTRNY+fTO7jmyu1csmktLsVKPJmiphtMzc7g9LtYmIsRT2Xp6monF8tgcbpZWo4hCwKJWAqbZsPQDQTBIBwIYZoGXq8IaESjOi63FdNoMjE9g17RyTkS+Px+okspioUKsgD1ZgPBNGgJBVAkC4lSkUYTwuFW3A4HLg2q+TqbBjo5NrFIUAwTCTrYs/c4y4tN1kQ6qHUP4lN1nE43Rb3O/NwioVALlRrohs7q7nYS1SJtvU4MUSAUCBH0+9BkC4/vfIoHd+7ltluuxykqnJ2Zo1ypPevZuSIUPR88EUjNM3jjLYwdGSMy0IWqSsyOzkF0EuqVc1OwqkWoFpm4f5o199/77PYE4ZyoJEoIbYN875PX8YbVESRReMGC/Fe9WFArg6ye15JyXQfgW2/d8Jxve+17vgDCC7dPz4f3/ugo9/71dwCY3fXXODX5ZeHXCius8H/zXESLlYD+lcnLLSNppRfRCv9TsGk2FNXB9ou38PPCD3GoMldtuwyz3uTJgztxO8GmdTKzrNPbN4zmsiIhk1JTzJ05TCGbJxLpIJcRsMgaoZYW9uwZwW93MpU9SD2v4/G4kBQNh7uJboDPpZDMFgAJp81FNSMSsPgpZzPUI3VKhSLlikrQbSEWW8YTaOOKS9dRr9V57+9+mGajgt3u5lN/+im+9NWv8dEPf4BCoYQJVKsNJucqVKsVZqczWB0O2jsGmYsXWSOFUSztXLRNQZFFkmWJTZteQzoVpXegh1PHjnDZVRGe2mHBNyRydnSM4bXb2HtgH9XhGs64yOTCMpgi2y/czKf/5N3Y3DZa/CHswRbCgoLF0qDZMLH5nMSjBdweLw29zmWXbmVpYYbFhI7QqFMUqsxOj9KspkjVG0SaXiaOTtM/tIY9p49z+cYtZGbmMSpVRNmkWDIYG11Arxskc2WGh/sp15o0Gk3y+Sr50gyHjo6y/crbQBBZLJQ4MTHObe9uQ9EtxGli6l5uedu7KZUqPHDPP/H23/oQ0dgcSeMIjpwXuzvIT/75Bwys6ScdjXHvg/dy841vIBpPoKoy/5hNE2obZHIuis9tw6zl8flbEASRh/ffzVBHN4/eu4cvXvV+brv9vVx5zQ0s7d/BtZf2UCiVQZTxO91kTAO/30WtWsXe24vDY2epmOaOD96Bu13k9MlJ8tkohabJ9FNV1q1fQ01wkCsbCEITw1bHtAhIgkC5XEJoynT0dDA6Mc3pM5Os27ABq92OSRNH2c3s8iLdoRCDbT7ufmgPFs2KhorZ0HniFyeoX66yYcOF1I0YWqePxJkYS8sxnC4n77jptTz19AFqjTqlapWzx0ZxuDys33YpuivJzqf3YVaKbF3byqrhLn7803kqlSo2lw9DN3jnu28nMT2JoWj4VTerLmvlzHyMWC1KYMDHVE4g5LIQUTQqq1wgC+TzJaxWK4VyCUWTaQsHcKkiqt3DvkOHWdvbhyI4KGZLGLrBlt4+Hjt0CFFSCQTChC0aoiLhVCWcQTvVeg3NZadUyaOZdmxiA7lax9niJJpL49OcrO7rZ2ZmFNmoUW2YXLV9K+tXdzEzO4dpmthsCtWmSHtrkGI5T6GQR5REHC7P/8/ee0bJcZbp+1fFrs5xpqcnZyVLVrKSLeeEjW0MNnGJuyzxD4b9kRdYdoFlCQsssGSzxpjFAdvYGEfZki1ZVrCyNBpNjt093dM5V1fV/4MsDLs24ERY5vrS5/Spet+nwlSfuud+7pdMpozbL5PL5DAtCAVcHDy0H0nTiTS2odpkbJJCPJ2hOdSI5bPQdYvZmTk0VaWno5l4MkVqvobL4yKTyiErZRRdZd3aZex9Yi/5fJrEfA23003dsrCJRdYvXcqxwRFWnbaE+7dsIx5sRFJkZIeX0USUjWtWEE/N0dcVYcmSxURjc9RtNdqMILJdYT6dQ7WpHDh6gEyhyqolPWxcu5gf3fIrotF5Utk0Vb3+rM/OBaHoBbD/xvey6rKP8MQ/no8g/P6cIsuysKyTkVGGaaHXTSbnS5z7sV9Qmxw8KXLoFbAsrJF9vOVt+35/EadcS4FW7vvG2zi93UtVN/nwLwf4+Pm9NPs0ZOnPQ8D4YzH8wL8+p+1bLz+5vfRCVo0r55+zQPViUq4ZNJ/zIajXQBA4cO8XaQ/af33dT7Uc/jXdBwss8OfEc30R/12iwvMVHBbEgOfPn5vI80JYEIgW+GtDkURMXccXChIOeXB6SwxMbOfIwSGuvPASult7+MbXvgWqm/5lK9i8yM3+8Qoej4v1Z19EtprnFzf9hEKiCpaA16FS1w3Kpk4xU0ev1WixuQg3NCBYOq1BPyPRaVojjbT6fUwnSwg2mUwxQ2tLmFymQDxWJF+cp1T10NMnEPSDQ1X523f8f9g0G/VagYZgiMzkk7zr1Rfxjx/7EJrTS7Wc49JLz6Yh2ECxWKWjI8jk+Bwvf+UrkEQbwUCAYrlMpVJhNjpHc3sXTx45yvLlyzg2FCeeMrj+R3cQCLUxOJpAlIM89uAjVEQXbsdKUsk4S5atRjfh0ScGedm513D6uhUcHxpmbPAQDtHFwOQcrS0hXG6BqlwlrDZweO92Jg/fT6+jmbzDhZbPMFOROL2/D7vWTUMkwJbjB9C8Kps2nUMxdoTpkUE0t40mIcDxkXGWtbdTlVXMOrh9fgLBAJXYPIKkUi5VuPhl56IoFp1ty9ANg3Q6Q2/fIux2Oz09S9izP83fv+MyNqxZzwMPP8jE8DEuuvB8iqUyP/3hFKaooGlOVJvG8HASQ08TcncwdexJBNWOJ+DlgovOJRMdJbL4THLHj9LoaaASf5KQbzWVWhWzVMESTb5/w8d57dUfpb0tws4HB5FyLpo6lpHNF5mZHUZT7UzGJVQzS9HU6QuFkQ0RLZJnzcpNaDaN2UIOj0vjgQduRy9NUa4ZtHWvRUKlZ9lqRg4eo6yDQ5Nx2h2U61XcdgdSUMXtMZHcEj2uVqJTMfSqRipR5vob76OhqYdtv9iB6QzS6HLRHnIzc/QQpy09jflYFTMeo1guUqnqFLNJ9h3Yj8sToGxUGZzO0bRoNdl8iYNHBjlxdD+5RIIzTu8nPTVFqDFAS7iDfKWM1+0lWy7x75/5Fzaddy6NjS2I2Wl0qY+yUqJUs+Ft8eEIG6gFk/0nhmnsDGNX7NTUGnW9SktzO5MzI8zE0tAcojA+gcupIkp1VE1mNpGhptcYmZggm6oQDDRgkwUy9QpKrULFAmdQQUWkmjUQmhSMskXRbUfxBHBpCunhNJNT0xQLBSrVMp1t7cSS82zZ9gSz8STtbU3EE2my2Sxef4ChsQnKhTK6Xqcp2IDmcBGy2aiVq3R2RMimS+hmBVWSmZ1O0x1pxu/0IjkFxJRCtlagJ9JGLD1HvazjDQaYmE5gCVUSyTim0IjdY0eq15mamOWic1dSzHWx7+AJnJrIjv2HEUWZS87fTLpcwu5Vmc+mOXPNStK5CnWrwqYz11HMd5x0N7VGSFfmKRST9PY0UjMlUtksxVyWgN+FUavRHGjGqxU5cXyIW+/fioBCpDGM3eFkaGT8WZ+dC0LRC6AjdDLrpVQzcP4BK58JgvDr1dclUUCVRZa0eIj/+I2/td1v5gh9/bFRPvORb3HtdW/mPRs6uOgf70IvFCETPRlObJlg1CExzqWv/dRvjXPLl56lEFECzQVOP62nL+P/vWoJ1y5vRVMkhD9iO5xhWi9MnHkWvrt7go9f0P+H75CNvygizye/8O4XPMZzZTxRZNXlHz3Z+igIjG/7Kl6H8ozbmhZICzrRAgv8UUnv+eYfxTX0h8zxh2zz1yIc/LUc5yn+57X/azv+Bf66mU/ncNg0brnnh/jsCvWKhVGrEfD6cDu93PyLe/FGXIwNxhgdsdMbseORdMItdkqNDkzBRt2wUP0CQVcTTtVFg0sjGo/RsMhNUPVw1Zr17Dx4jBNj0+iVAslMgXVrFkPdYEPATxQTX1wjkc0xMFbgfR/5DP/1w+tJzA7QFnZRqtnJ5HWufcM7EASJWHySfTv2MJCcYt0Zr+NL//FfgMUH3/MmDif3cUXDFUyWJqmXavjCTkZj2+nwBbjnQILzN7wcSU+yrC/AWZtWceBAK9G5Aou6O7g/PYMiyZx79kZ27d7KkkUreSQ5Q3e4lbpex7QkEskUhWKRxd2LKUka2544hiSJuIL95FNpgiGNdKFEe+9yLCmPL2zH3xDA0GsImpOAJPDdn+2gt2cF6cwENkmjMejHb7noaW0nEAhy9EgMl2LDE2wkr+dxay4GJsdJZovYHBLFUoGwP8T2J7YSCTQQk2bpDIcpVkoIqUOIchBPJc3q1av5zL98EUuPYtUr3Hrrz5iamaKWLTKfnsfv96JqNiKBRrYd2kVDcBHTk8f56Q1fx+HSGF7bSt0yQDBp9ATQC3V6vG1Yuk6kpZneZa+hpbudPTsfITaWwKUHaAl1srKlk9yJfeydOIYs2DCkCjaHCzOVRRYVmhoaWHfhlUTjCSzL4p67v0842EJ3dzN6rUbI6SDg8bJ46dncdtvbuPFnt9FsEzEFiaagD2FnjU9/4EP8xze+RdvqVloCPmRBZC6ZQysJBLw+VMlOPDFPf3cXR48OUCjVMeomNnucoEfB5Rc5ty1A97IL2DF1mLnMEIv71pOwWQxs34EmiWSrOt2RRi69+jXsGZgGUSTc2Eh0dBuHDh1BAsJuO0axxMRMlNHhYd717jfx4Y99kploBofPy5Zt20knMzyy7V52DVQ586wIP/n+A9gNi/51p+Gui+w/MkRPSxiXoaF2OZndlyORyiBV82g+B20uD7n5HA6Hhc3mx1Rl9h6eQFHcZHIp6lXQbHb8msx8poRNkVAUjVw5h7exiZyYxuVT0QsGzlALjlSKYrVIjRKiZiLZRWSbhVE0MK0azQ0hRqdnkCWJ5FwK9Do93W3EkvPoBR3N5cKm15FUDQkRm8tOJW8xNTmPIeqsWr6Eo0eOU0wl2bprB1dc+jLGotM0NXqJxtKMmZN4NRdoEjWzSrFYwet3oao2DKOGJjnIViq4nR4ODk4jiG5qepXGQBtWWSBTK7L10W0oDh9Bt8brXnU1wzOznGZXmZgd565tWwg67HRFIly8cSWmZeCwB6joOtMjE5Q0gYjLRbFY49DIEBPT0yRTOUQJgm4/dVElVypSMy2M+oKj6CXhlKDSevm/kn7oky/6uACvWdHCZ0yD773mZFvU3I1vetb9LMvCtMA0LSwgV9bZN53mnd96nFKhRHV2Eso5qBZPikylLNMPjXPdQ/dw3bMXA8JTmeeqHbxh7I1hXnHZcv71ssV47M+/renFFon0+snU9i99/Ft8yTzZToYggKSw8pqruPGt62jy2p5x+fqxh77wvOctVU/+gX3g7J7nPcZzoaobNJ33sZMONEFg3y+/QGeD43deB0EQEH/H8ocLLLDAXy4vJGPmfwoIf+r8nj8Wzycz6i8tn+iZjvEv6RotsMCLhWmY3H3fNmSHzsgEtPYGKZoqbZ1hhgeOMzc9RbViUKsanN7jITEfxd0QpjXSQjI/T10v09HQSGI2Q1Bz0dLgwuEL0N8VxuVXqNdqVPQS69as5PCJIRLzaZwuJ4rdRq1a4kQtg56tsfdEmm9+5WuEwy6ufbdV5CgAACAASURBVN1HuPxlF3HHLSPEogmUJi+TM1O88vxFKKqHEwM23nHRxbz6A2/mEx/7KnrFxLBMPvHPX+DE8XFETWZRoJW9mSH6Wx38/IbHcHvtXPPqayiWitTKc1ywbBOHjg2SKSfIFktk8jlODA3Q1+1jNnYUt1vEMEzOWtWL6tcIBS0OVjIossjlF27igovOI5Ut8PD2fWxcvYLxiWnmRQksk5HJGY4dG2TR4n6qwL6Dx7HZVLw+H1NjQ/hCEWRVwhVqQzBFhpMwOBAnn81w7MghZKkBp93N9Ng03uYw8eY01VmT9k4/PrOZYqZMoTDH/NgwY7NJFJvK3scPks/n2XjGOu7c+WPe94Y3su/wIXL5MqqsE/L7sIspHn/gQaZiwxi6zA0//zf88RIVtZXvfuGzvOPjH8HhhlJJx+V00NvWwGwyh0u1ka/VkAyTS1/xKrbtPYHa2k4smSR6aBxRVjnnzKspZOI4NZ1Hth/jjI0CzkY3/oiPbCZDTa+jWDrNzWHaulqomxbd7c2UKzqSBIaVx+VrxayaNHWcx7GhEfbc+SC/uuUnvOIVryHS2kQJmbphcsmlV2PZ29h82et5/JEtzIuDrFq5mrZImOaOJoKaC10R6F3UxrGDAyxduoQpM4ae1BFLBpIcwqpUmXEblObHCbj8tAVDfPnfv8inP/oREvM1rnn1FTy+5zgTU9P8asdhhMwk2WyF3Q9ncWuwcWknebOEogSo1SocSc8jJ+aYmZwm3Bhk3/5jvOfNn+P2u37Fm9/wKpZOdZCK9nHXL7cTkANo3iD7txwjHgqyuKuFSy7ZTLWqs33oGJees44bbhpDNKFe1Sm7qyhineaGMLWqwNiJGGZdp1iKoSDjbQhilyVcqoGASKChkXQ8SaMvgFPxQtpErhVpDLWgVWFeN/EWZRI2A1UUUTu9pCYKSILA1FQMxe6mrkO4MUA+M49Ns5NKF9DsThRRxBIsMGwoKCTiURwOB3aHRjDso1IsMTcXw2N3UZNNWjxNWIKJaDmYm5vB0HUmx3K8/ILFTERnyWfLrFm5lNnZJIGQl4nxOH5HgLpRRdRl/K4gq5a20x3x8Mstu3DbbZRqJap6nc2r+mhtbGUiOU0iE6O1oZtSMUuzz82yvh6K1RpVw8DhcZOMJ1FkB9V6lYM7xrgzOoXdZgMEVBuk8jkagiEsCTwuNwZ1VvZ3cPOdyWd9di4IRS8USYbc3Es2/Np/uOOka+gPQBAEJOFpASbktnHxkiZGv/nK37vvqba4Wt0kka+y4g3fOHlcRv1kzhL8OmupHB/hvw8/zn//2/8q4OSnKJ0Ul0TpqTBvG9g9XPf+l3Nxd4j13YGXxLn0+YeHABh88IssetsNkJ2DQgrqNQ787FaW/+zWp+t0eJm499Os/9QDIErP6sL5Q2h52b+85PlElZpB5IJPnBT5nnIPze74Onb1ua3utsACC/xp8J/x3j/Ll/TnUtPvE5Gei8j0pz4Xp+b/fULZi1XnH6t1bUEcWmCB/40oCDQYNuZSFXyBMA12H812hXyxzujMFErdRPNrYPmZm4lRqct0uQWePJRk3bq1TM8kmJlOYBMAwyBn1rl0VS+y4mIuV6Ax5MbQy8xMJDHqJlW5TnwmykOP7WLtaX3k01lclovu7uWMx6Jc89p3gwA3/2wff3PFxZiSC3/Ai2lZDA+M0BgJkSzDh/757dTKdd719g/jbzVJzw1Tz8icseI03I3reHDXg4ylptggO3nf2RuQgRt+ejMT6SKf/NDf8co3vw/DNHnDmy6kp201Q0OT9PY30d62lO9//yYwanzxy5cRcmpMp7Pc/8h21izuY8foLtraI/zTZz9ByGMnVcyhyRq1ag2fPc1oZpKZqcMsX9xBMa6RKoNZnmCunCM6qlEzbLg0mUxmlkBjGwFfE6VCDo8ikbd0ZMVGJlMkFp1DVWTEJKxpvwBlkYYlyzgdbiRB4L9v30k0I1OsSHQ191OqiVRrcOj4FJef9xaC4T56l/owpSNE/IvZ+uhuorEiy5etZj6fJOD1UkjnCLb4KY1VefSJLQQjbiaG4oSa3STnSsymcsiyTKpcRJU0Am4/e46O4lJlbvyvm3j/e9+CXs/xnR/P8Yqznfzs4SOEmxo5cPg4h46OIigC73nrW7D72yjki2w6awUH7ttFr20Jlew4RjHH8YFBlka6sQdlOiOtfP+nt3D1te8j0hyhXK3wlte8jjvv/Drt/WczODTK/r33kitq2NvqXHPum5kaeBjL24hhK+FQRX7x4HbOuO71/POXfwwGXHjhmYSdIrGpPOF2J5XZEpl8gkZPL5WMhenQmZupYVTTfOrj/8T2XfuYmUvz+a98j3WrTyc+so9jwyN4vV6S0TgBv5PWhnb8i1t44rbHWH6al2imxOpV3bSoaymV0jRFwjTH57nswnMZHBzi3M1nUyplOfusTXR2tVKv1/nIZ/+NuiVwdPtttEeaGDgxgz/ioNvXRGx2llWnL6diFTh6dIycKmEYEN0/xdrTWnG4NebmE9QME0WEaj6NP9RARnfi1UQ6vD6E6jxxXWPk+DDtQS++YBOmIaGqErpNpWIYNDgdpEUBOa5jNitUMgZ5TUctlFi6uIdYLI4gqYiCimlUEXSLilFGUWX8YTdmqYLL7UCxiRiWjllXqdTqtGoRLlsf4InDQ1QLGcLBAPl5k2pjhY4WL9WSiWqrUciV2Lx5JbOxGA6/QnakRCTsI9Luxl90Mzg0RrlikijrmDWLejlHORDm/A1reHjLw6xdtZwbfvkwZ59+JhtWNHBibBS320trUwuKJlPIFOm1+xBqIpliifse3kKDW2M8mqNSryMIKrK9jt0ewO6q43E6sOp1IhEP1UyaR7cfQOB3GA3+nJdLX7NmrbVj194/dRm/k0UfvJu5x+4ntfsbL4lQ4N/8UagWSe/+xos+9vPh1P1iWlA3TCq6SbFaZ+X7bkVPJU46liqFk+KSZT0tcv2+++yUc+kpBxBOP2e/6nx+/MY1uDT5D3If+Td/FGpl0ru+/qy1l2sGLVd+CTKxk7WdqksQ+MLXP8jfre98zk4n/xnvhe5VpG/+2+e03+/Csiz+390DXP+57z4t1NkcrH/tVey69Vf88Bvv4pUrWl+0+Rb4y8SuCE9alrX2T13Hn5K/hN+Jl3pVqb+UVateTLHk+R7rczlXL6bo8lJeo2cSt/5S7okFXnoWfidAUWTrnDP6EAUvpl7D7YZCtUbFhEoxxUQsj8/ro7d3MfsPPklfZxMIMqtW9rJz9yGWLesil66RnJ6ltTWCGnRw8YZ1OO0+bHaZRCxDS0eYrY/s4clDw0STcfxukdhcCpfbS2u3D4/s5YLz38knvvxuErEMbo+H7q5FmKbJq698OYl0Ec3pxudxUa3pPLD1Hh57aCuSKHHeJSsoOkwmd5d529v/jlhsmMmxcfTKDE/uGeLM1jYuOG0tliJRKefYPniM7gtWcO+9Y6QzM3zkH17Dg1uGOPvcC7nn1hu57hP/Sq1u8s63/Q3nX7KOJf1NbH1kN76gije0mdRcktnpEVZ1unn0xAxzY5P0L17G+vWbKOkljMwEFbFEwOVnbl4mlkyzbK2dRk+A0WNR/A39lFMziLINTTUpCwqxiVmy2Swd/UHqOYGxsUlcHhdWtUpPfxcen5uQp4m67MTTGKSQLbB1yyNoDjtjoyNEWjoopxPUVYupySn6l64iNjPDmWdfgNvlRhRFdL1CJpOl0echXyzR3N7MIw89hqzKnLb8dN78qvN41z+9i3JWx6w7+NR17+G+hx7AEOo4PTayZh1PSaOpew3lapVSPs5jD9/LbCxNtVKlv28pLlWhZpWo5Oc5OhxF1VTe8c4PEJub54H778TrC/HvX/wXRsfGmB4/hkMzkUowOJ6gZtMJhO2ksgUaHF5y9SLJhIfxkceZHElw3T98HKNe5PixfYQ6NzI3G+XQ/scpZ7Oc/YplaDYHqfGTXQxziTpXX/MaotEoYvU4u3ftJZpIEgn4sTv8eDQN1Q69Xf1E+paw58BxLNOkXKqycf0qOjsifOc/byJbzDE7dYimUACn3UajN0ihmKMx1EjQ66BQqdHQ1kyDz8u+8SECaGzYvIHPfPZbLOvo490f/yT+kJfBE0OMzs6xqKeL+ODjzKUK+Bq6eHxAY4nvMAoVHtozQEvAzWxino0rljI0epxSRWckOYtPtRFuDlDOqiTnopiSTLVWwaGpCNiQBBOfW0NWfSezomomllklUyzQ0dqAbmiUijkCXh+Z9Bx1UyCaiRJa0ozNo5CdT2A5JfJzNYKZEKEGG5Zoo45FMV9EtBRWruojmUoQnUrj8Nix2xVMCxx2F6V8BdUmUipVESWBcMhPb2cz23ceZj5TYOWSTpp7G+nt6ODYoREOD57gwLEh9FqFYCDEReeuBlwMDB0BQSGbKyDJMpedtxGbqGHJOu2RCKPTGe67/xEwIV9K4nI6WNTVw9VXXEK2VKBWzTE+Osn4WIxNm1YjGCJ3P/I4ibk5fB4/0/FZ6nULRAtJAFlQyOpV6rUyjYEwpy1vZWZqHp/Tx+6DA1z78gv5+vdvoK7Xn/Hld8FR9AI59G+X0bTp/pcu/6VeewkGff6cEsNOOpckbMpJN87va4k7FeJtWRaxbJXlV3765KpwovQbotJTgohRh1qZR3/wEzp/8JOnBxKlU0Wc/FQ0znzDVdz0prV47DJUCjhWnPk7a3fYZNL3f+y36vqP7aN85sPf4KPv+wofPTW+okHrYuI3vRVV/t+tar95bACJn771d563P5RsSafz/A+dPAdP1fKRL7yfj5zf++tzH949yt++86u88vGvvChzLrDAAgv8Mfhju5deqEjym/ufmu+FOI5eTNFmwTm0wAJ/OHbNTqasUSrEcdg0snUIujVq+QKK6uHc1Z0cGZtjamqaSNDHxGQMRVEZGZ2gOeIjNpNhcjbK5FSS4Zk5Lrt8E9WigcdRx2530NXTjmnqXHrxmdhsIoeOqcQSUXxOJ26HQDFX5cnhAzzw6FuwFJXeRS0YOZ341AlqdZ1t9+o4PE7C/UtpCvXy4K6HePLgNmS7wWmL2ymXKmRm02QzeZxGnqFDOzlwdJgmr5u2zkb2JmPMH9rPNWvPwGHXGKgY7L9tJ7LiBVNlbGqeyy+/lFK5znh0Bo/HRb5gYJhVHrrvITTzXGwOG/GpKpKaQxAFbKpCU+9SrrvqzSTSGUrRcR579HEuvvxViN2LEASd67/9WRb1r0GvGfz029vxhiSuvGgzzS1NDM8cweZQ8Cgh4vOwdtNisqUMpdI8imxjLikjSDKCWCOaTHD2+sWodg0kga37xjAzo7hdKvlsikU97Qh1nXQ1h9vewMY1a+hsDfDYfIzevm70ao1aTcc0FRwOB6IAmqAQjSaxqRKWKCArEjfdtY1zz3gDVb2K0+7k0GiOjkVnIQoiTY0+bHYnqVSCWCJLOOTjxjtuANVBW38LDeE2gnaD+akZMmKemiLQ1OcjHcszMnyCiYFd9EfaSdVNduw8SDKVxqb6GTwyRbWep9XrRQsU2bNnkJZIgOlsCbvYTHTsME63RnOfA1lVkeU4LSEvdQFkRcLjctHesxhRKGKTYO2GK8jkclzc2Uakwc4Pv/dlMokJujqaKZeqqM0ONE1j08a1DCYqzBTrpI8eY2pigpV9zeweOECx38tN226nULPz4Q+/n4994D3UK0VEu4NyzWTt6pXsOniU9pYIjrDB9NwMDU1eHKqDfU8epXdxB5vPXEOsJjJw5AAbN5+N3+fn5i98k/z0HoI2hfOuuoqQ18XRx+6g++yViEEnnb1B5JLAoq4IM/k57JKC3a2SNlyIksjAwASlvIAkmlTqNbxOF6LXjWwaKHYXlqKi1EqMRecRqdHV1UTZchF2akzP1wh6ncxMj5Pw1vHmVE7v6OOhbftoP7uP9GSO0xt7ma/VcXtVLMMiFAowNRvH77Wj2DRGxsYxLIGmtgYkWcXj8RKPzZLLZxAlBVERsdlV6jWDXLlOTq9SqdQIOmQwirQGmvjiV76HW7Uxm5zHJqs4XD6K+Qy79h7ivPWb8Hv9aIrK6669FIfdS6Y0j0OyIZoi5bqBJlWQxQo6IoGmVjQTZMXijnvuJ5/LsmZlP4pkMZ+Jc/e9jzAVmwU0Wht9HBocRJRMyqU6TS0RVLuEwy4TEEP4gy4m5ibYM3KUSs3ggxeuZ/P6Jew7PIvNZn/WZ+eCUPQCOSUiHJ/Ns6zV8+JPYBpPZwT9hfKbId4g0BqwQ72G0L2K1M/e9oz7nMpbOvV5zQ9389itDz7VevVUgHe1yI4f3kTn9T8FmxOAqe+/9jnXdd3ZPVz3xNeAky6phks+B/kkjO4nvHH/0zs4vNz23fdxXn8j4lOuo18ejQI8Y+7RH8oFX32UfTff/rQ4JMl84kvX8Q/n9DyjS232v/6G0PpdWJa1sIrZAgv8BfB8A63/mnmurphnOr/PJ4fod9XzTGP/MUOin8tcC/fcAgs8jcOhsagrQqnoxVBrHD46jdvtxeu2mJiOYlPsOBwKPo+LUsVBm8NNpV6jEq0zcCKGzZbA7/bQGg7S3Ohm7+7jrO7pRa95SCWLeD0WdRMMq8by05Zx+wO7sEuQKZhEujYxPbELVXCwrK+b+UIOwTQpKxYCMrqUJZlJUE/n0Z0RGrwlTEQWrV1E/KjO8cE4Rn0WzSXgD7p47LFtpPMmIY8Hm2ZHFW1kUzPY+3U+fefPqNUF6lWd9s4QmsONYq+iORR27d5PLpZAkqpc+bKzTmawWCJ2u4YlC/hMkbqm4g+EmJ2aZCYaZ++RQ1zS0UlHSzMDmQLLTuvinDM34HXZqaNz539/g80XXMV8qsBpqzawZ/vDPLB1F90zAiYBju3bR2tgmES6xmPbdbBAlSpsWruJzvZeivki+Czi2Qwf/Pw3sYkusrksH3zN+8l4VexGAYejjfnpSWxuJ/7GBnr7upHqOmUdVq9Yxdpl/Ty6Yxfbtt9BR18TmWINu02hkiuSmjLwuRTa21t5ZMttTIxM89F//Az5QhGzXqeYLxCPz9DZ1ceJ4Sw//clP+NSnP4XHXsXudLJ0cT+33/MQfctW8cpXv4JHb74Bv9ukmrbx2quu5O59j5JwZ8jODtPf0kZV0vFbFrPjj3LWBW/DoUlsefBX2O0uZNmO0/ISCS3D59IwJAi6A0zNjLO4vZkLr3o9h44NMbjvMJH2BlYtdfPd/bfjbXDQ01En7G2mZFUQRTANg3vv/jbvffeHqDDJpnWLGa8WWLx4Kb56C48/+iDbdu5CURX+6aPX8ciORxBLWYbHymiSxoF9R4nmdJwSbH3scTZvOo+JqVEcikImnWLLzkNIZpHp2Wkm62UiLo1bf/4rzl6/lkKxzNZte+mI2GhuaiUbO0IquYimcIRXXnImySEbfYv60Rr8VGs6l5y/gV37djIdy/G6116MXoXYZIyaYbCop4fZWJw2sR2bajA9MocvEESwDCJ2J3rdQKyV6e/u4dDQCDafDyEUojozw7KuxZQLMVr8DSTSdUanR+mONCFpMspshYpDZN/oGJ4uNxN7RnC6XRyJT+MTVZxOL82dbczn8nS2Rkhl5hHNOpqiYIoGxUwGAYFcKolN03C4VMo5E+wS5UoBSVKpGRXC/gCCKDA2M021WmbnwZ/Q19ZGUQC5WMatumjt6eD4kYP0L1nO3oMHec01l7P74Aj333cQUTKxqSp9na1MTqdYsrSL+VqZfCFPKldkSYfGRCLBquXNVE0v8/EYv7hvL6lMEoddppCPYbP7UDAZmJjFZhOx2Wx0tofIV0s0+P1s3b4PvVpj48XLqeRt+BtlDENCdNhxiG7OOzfCXVu2POuzc0EoeoGcelE/63WfJ/3Y8w9EflZOOW7+r2HU8fifXVg7lbfEU32Td71jA7xjw29t8+tcJcMkcsE/AvxawHm+yJJI+qFP/laLXcPrf4Q1uh9KWa554788vbGv6WQo+HPEsiyG40XWXfvZ38ocwuHlK196O289o+N3CkCSKIAosfTDv2LgS5c/5/kXWGCBBf6v8fsEmhdbNHkmt9FLMc+Cc2iBBV44Drsdb0OAkiFSySbwOlVEUSGRTOAOBHFoNhRVJZ6aRxVEJFlEddoJNgURJAG7qjI7l6Ar0kA8kae/s514IskPf76F697yajo6WjEMg4quk6rN09MWZmZmBs0uY1ppWhubcLpKFCsGiiBRKFcpVw3sqkKXu51Ik49dhwZY39RKpW4SH5pn9cYrWNZiEp+JkkgdIJGbpae5mStefhU333ErlXwaHYvx0QkM0+TwSAJ3t43CbBXLhNmZLBdf2ozL70ev11l6Wg+zbg/bnngASRKoVQUQRYrFCqpDw9nVTGLoOMPjd1PLGyRj44TPOR0yc3ztW9/hQ5/5DP/84+9gGSL5okE6n6FQqPLfP72dH//oG2BavPORX5IvG9TqIu1tTQjWSuTYAaqKxKZN5xBPFkgk9pPVSxSqORqb3czNSUzPJggGejFNHYc7wNahvVy4oplHB+NcfcUGHpo+QbunlYph5+Degxw8OsDrrr0c0xQYGp9i+MQw/V197Nq+nWiyyNv/9grGTZOaQ8AeUFjV14cuNzEzcytzo8PkDIE77vwxtRLUKhVkRcAdcpIv6CSS85TKFXrcdu7fsQ1BsJgeOcItX/0c/SuWMDY6x/TMHF/57q2ctaqPgZkRCIic1tFIUqlwx227MU2Dn9+5l/VnnUOkqYW+RW1glnBoTtJ5lfHxcbDAapFYve5cFi3pYS6ZwuPx0trez+LlS3ly7zaafX58/gY8LgeDYyModpHOlgKjJ+4mHPFQq9f53pev56Htewll89RrOnfe9hMM3UCyC8iyRdFMYaLi8AepJgvkK2U8LpWg3Y5gs7FsSR9Rh53Z+CyqooKsI4oKXa09PHHsMOtXLWMymaBSqPPTu+4l5Pbh9HjIFitEWnT6llzCHT++gcnDe9n0hr9nyaLTOPjEPs589ctwuizuvONevvKtG1AlGz+5/ptU1AIW0NTlJx5PMT4dJTpXQqdApLEdm+ZEUW3I1RqxZIyaCMn5BE6bDa/TyZN799LX1oli1fCF2ynVihQNCZ/DjmizU56fp8HvQLHbGBNrmDmL1pZ2sMCmCpiZMk6vB0GUqOs6yVQKt1NlPpVGs7sw6iamYGFZFv6Aj2KhRCZRx+d1UivXCPmCRGNxVEPl0KERQkEn03GRwZlpHI4QdYcDs1jijBUrSMTjiJjIqpPsfI7lKxYzEY+hVy1kRadc0tEUO4MnRunoDiNbZZocTaxes5on9x8iWyriddi5/Z6taKodWVaRNBemaSApflQbuO0KhWKejnAziAomRQyjwIVXvhNJqnPGha/mS5/6BOlYFW+jjCwJFIslfnTXI3jVMA1tVaqV/LM+OxeEohcDQQC98tKMrbmgmP4/5R4xzZMizA/fv/kFjXPKEaSJ0q9XAHux+M0Wu1OuJ8uyKFUNWl/1dZgbO5lz9BT+DdeBzcm17341/3nN8md0GNUNk4ZXfgtmB5/+UpIZfvDfCLjU53R9l139Co7efjumedkLFscWWGCBPw5/roHWf868WOfrpXTYPJvb6H/yQhxSC/fNAgs8f0qVMqcvWcHw1G3oqNidXuyqjMvuIF3IMW/Uke0yTtmGXq+xaFGQsYkUy3s7iYXcFPMV2tpb6I74GByZQvH6ODY8QjGbQbGJDI0Okc9WcQd8NIYCnHfmCn72iwSKKRKfHiJXKFOtlmlujBDweXB7Xeh1HQkbizqaOTQ2hiJrTM5GWeX30hmRuOuWb7PmjKXsPXAUu9ci4gjR4mvlngceIuj2MmUYjI3GkWURTVWpiRZWTkR2y4g5g7pRx+Vx0RJeSiQUQgT2H/8llmxh6iKmZSDLFpYJLitPRXdSzgmce+Emjh+fpKlZQDQS7N6Rwq5K7NnyI/Raij1PbCHsa8TtVUjOZ6hObefGr3+Ekl6mXJ3HsiT27bwfr7qazUvW8eDMAZyKynQsi6LIdDa1oWh1QuEmKtQo6xYhbyMr119AqWZhExX6uhvY+eDN+FtsTExFWbFyHYXkIKlCgY+8/28olsp8/Uf3cMVVr6JeN0nOJyhPJUmlyjjtXr733bs595KlHDk+zpq1rZS9vbzsskZ+fvOPCTVo3Pj9H9Lg9rDxyivIF/Ik5+KMzB+jrbMNyzRAEPjVL++kaVEAVTZJjZbJ5tJExydQFCcOT4DTuiLsOTbI5771U2762qfZeWyMcFMHl179RoSn/gF80RWv5q4bv8zk0CjLl0VIZWYYODGOoIiEvS0s6W7F29DMLbfeicPuoKWlmWBDG05XiNOXnkNZ30EiGaWrZQnHD0/Q0dtEbWQYydNOOBDhgS2PUqvVECUJv8PGAzvvI9IdoFAvI0hgczmpVXVETBRZondJF/OlCocHhtBsdtqaQ0QafIyNR1na3sGJsSGyRYtF3c2cdlovBwYHCXic2FUvE+YcASNIJpui7qmhqE4CDZ0MjeziVa/9e3aHI4gTJ/j2Q1uZnZvF3uXnR7c+wq7HH2dqJsZXP/xWIivacTf52HTu6WzbehyhmmdwYgbB1Fm7YjlFXaauiPT5G9l/5CAet5uA20s0EcXp9jM6NUPY50E0q+RyFSxNolCsU8llaGjtY3Z8FM2mka/WaXIrtDjCBHocjE9ncQZkxo6N0BbuIF+s4XSa+D02qrpAIplGs6tIkkEg0IDNITM5HkMRbaiyQUWoo9hkbKId07LQNJViqUouWyKTjtMcDKI0BLFpfqyKRWwmRoOngdaeDqbGp1nc0YzdoZJJVlBsCnOJKEOjUwiWidPpx+MyMWWDcKiBo8OjtHZEyCUyjM9MkitCyBdCUZyUamWy+QyirGDUa4QbguRLJRRFIV/IIak2WpoDpGoRRidHWdTbiyQqfOKTn6FULvHok3cTGyxkrQAAIABJREFUnSjiahAw8gl2DY1wWctZqLL2rM/OBaHoxeIlag/78TfeyZve+nkM00J+SUKQ/vic0kM2dAZfvEFNA1qWvHjjPQOCIODUZNL3/MOvv/Of84mTAd42J5Rz3Prl73Prl3/nIDhPP4uRb1/L5d96nAfed9bzEnoymZPCZPCV/0n6zvc85/1POab+r4iPf03M56v0XvZUxtcCCyzwZ8fvE47+UMHqxchYWhAn/3pZaD18mlKlQFOTkysvupxtj+9kYqRIrayj2mTUkoXN7iRbyCEpCqIClbJFa3MLHR1hFMWNfYkNlypyxop+Fo8c4fEnZnlk92E6m0N8+ks/4NMfeCszqTl89RJzuTl2HYmTyRaoV+t0dbSyvK8Hu+agtzvMyMQU0ZTOxPgAzR3tTGRLiIKN5qCTzvYOwGJuvkpzwI9ShXKmDDUXQncDuw+NsaQzhOoQSFs5vB0yseMFejoauGzDGRweHmD/ZBRTNHB7bQwOPE5b2OChxx7lgrPOJ5qZxRd2ICgGtYKFIIkkxgps2Zng7//+SorzcxzefRinw06j22AmnWXDiqW0tTdyZGCQ9pYIsqlgmDA+mSbk9zFbTnH9LVvob22kWi5jGiZtATeFTJb9Ox6iIRiilMpRkxU628J8+qOf4wv//gnwqIQED3QJ1JqDTM3vwSlrGNZyHn5kB0YdxkfHWNa2noOHhqhlJzhz8xmk8wYyBmK4jLM+wfi4j1w2Rb2UJtzcj01zIcpOXn7hxQwd/S9yQo2Lz92AJIo0NrqpyiGa/U2ctXET6dpJ91UsNkelkEZIuxBEGbdTQQ6qvGnFe2noWEw0keAn3/kW923by7LlrVy0eRNHB0bIZirc/YMvsfPQMcpFnctf/15kSUCSFOpGnd33fIWhE/sJBAIUq34mZ6M4NY1ipYbXaWGoMjPDO6jlJ+ls28jAwAnec8469h8eYnRomEKxSjolsKMcQ3OF2Ln9GJ2dZ+JscJEq1xg4/CSXXXQ+/nAXv3joBjTJzqKeTsyawIn8FNHDM8ytSeJzqGiynWRqniMjYwSbmpmdmMbtEMjkKggC2Dv6qE6MYNWrhLxuVEnh5eefzejYCMWaQqlcRNOcBLx+NvafRqVWZz6Xob93CcnsEZSIQnbW4O3veid333o7m88+C4e7lbe+/EJa+jpQwg6i6TQtvjBb730CtyvA8HwaTbFjk2Sy8wl0UWVpWwfLlrRgVtNEo3EafBqHRgoEXHZEs4KBRlWv4/P68Ao6o/EZmhuCqJKJJUFVVnBICl5HEK/bJBXL4ZTtVKejyJqKWC1z1rpVaF6NHfsGCAYClCtFdMPAMEykbIZkSqdY0NHLUSRVpKm5gUJWR3GZ+Fwu0vMpgn4vgSYfnV0BHti6m3K5QMBbR9Ar9LRFUIUsekYgHHBRrVq4bTK+oJfYdJrmpkZUGbL5DI2hMMGAl7n5NI9t343TY8eltKF5/cwdfBJJ9jAZz+G2VxFsCk7VpLuxiaOzUbytbTgyTubnMtg1FafDzvDQGGvPWcK+wcdYvmwZt/zsa1x+0ZtRZZnzNr6KB9M/JZ8vonrsXHfdm5BVJ1uUnc/67FwQil4MBPElaw972ZImAB44HueyZZGXZI4/NsZTjqIXS/g65VCau+1dL8p4z4lKARSN9LbPAScFmLphMTJXZOObvgalDFgWx+79PE1e228JMz94w2o+eNcxvvaKZc9pSsuymHnkPhAlore883mVfaqOBcHoLwfTtAhe8Gkopk+2pDZ2/alLWmCBBZ4Df4jz6KUOvF7g/z4L1/1/UzctPvWDf+eN570CVVbI5ecRzAoRn4O46MBpcyFYOqlihXDAy8DwNKZpUjF0ujs6yVgFsNlpb25hYGAIxe/F63IxOZtg05rlpBNJpLpFJVsjnfdQK5tsWL0G1RsgNboPURBojbgYmk6REsIIrirZykGCFHB73HhcjezZOYHP7UMQarS19tB3wUXs2jlMrbYXu93k+IlRjHqZ173+Gm6+/nv0Ngc4MZnAE1QQLImDEym6Iu0cT8dRbCouRUMTBbY+eogVq3tQtQauveCt7Dj6EOMjQ/iCCquWXMhk0yT79uxFkmRa+85kU6PMd264iWK+yMuuPo9a3WDgxCBTs3MEG7zMRBMomg2nQ0Nzqsh2kaDHwVgxA2YdoWJhilCZjBEK+sjlyjQ19+Jzy+zc83Nu/HkHSAoOReLhe3YRi8ZRJIOzrtyMx7KxZ88WZmfjSJLA5is2YXMrzMZm6Wp0UzVNvC64674nmdofxdroI5uYo8EfYCyXxTALBEJhZqfjqKJE3woHIyemefjen1Otqlx8zoXce+v1KLJMvlxicGCIufgs3V3NVAQv/+/t70UXDWTJwdDYIXKZ43zowuvxuDy8+Z0fZHzkSXLZI1hVnUgwhLbEYu+RYwiqRUCS8aglUpksufkxAi1rGJuI4XR6EEUZ04S6DlMTUWbm5jl8YADz9odoaHZyel8fw0PDOLx+/vNrX2btmqWE7CZhtw9ffwvJfIXHZyZpbGikq7ONuenDpOajKJSYHh/A7nRx/oarecL4BXpdp6MxTK6cRljcSkMoyKHZOHv2HsTncqGJErHZObx2B6rDx7ET4zjtGp1tYQ4ekeiX+tH1Gun5BF6XymwywZlnbObRJ/bT29FMm9/OvYd28YbzriaVjHFs8DhL+xfTHAoTCUXQawZvessVWEhMRIfRQj5w2nEzj6i24fY7WL9mI7fddw+CWUbVZCoVgQoWsXiMpkiInU/sYt3KFUwlC0zMTLNyUQ/1uoXHMCjUQHWozKbncDhb8YciBH0+RiZHcdlkVEUmU66i16ts3XWAgNuGGmhkZdcSbNFJ5vMlppM5hEKKxpCHbKFAazjMZDyOy2HHMMsogoJdrWKYNjTNRr5QQTfqGFkDn0OjbtYp5CtYtiIty7pwyCLNXb2YlkHQ3cLKVYsYG09QSuUAFYMamYKAotVI5wrkp4oUS0UyhQKSoFDXC/j8bsYm5qjWfKTTWZr8Cv29ixmcmKAx6CLgdBGviDT6/KiqypK+Dky7gcupIbo9lDNV5tMZzly/krJUo8Wtcd8938aUdLbuvwmXLcRpfWdx5VVvJj55FF+kj6pukJiYpVJ59q6oBaHoBTKTKoMkg1HntoPTXPP/s3fe0XXdVb7/nHJ7b5KudNVlFcu23O3ETu+BMIQSOgMztLyhZJihkxng8QYYhgktQAYGBl5CApNGenPiOIlLHBdZtmwVq9fbezvt/WHC5DEJBKyUAX3W0tLS1bn7/O753Xu09ld7f3ff0o4slyURTBbe8d5/IvX0d5Y09itFtnTKtNl0GgbQzyXyvptPxfsd08leMnTtlLn2rxEEAZMs0F3vIvXItb/zqU0BOz67jKLqL3rthmHgP/NURVNyz3WnLfAIgvBroW1ZMHo1c+fALO993z+DIBDb863ftDbaTH/7Cq9smRfDS524LRsXv3heTdU1L4fx9avp9S7z0vN8+24zXf9KLedVg27oiLqBw+LhsvMvJLGYIBaLY5g8yEIJSVY4Nj6Dz+WiUq4SjeVxO20cPHCUzp4I9qqMIJv4xY6HMVdNyCWDtkgTiVSCiZkp/umGKf7hI+/gs9+8m0DAwute90bMFhM2fY7+xRh7+oe52NhGY+d6tna28/kv/hPnnHMR85kjVMUM0ekib33967HZLSiawHkXnMXI8NN4m+upjbTxuc9dS6lSYWrsODft/BGzuTSzkwKdbUGUTIVkTCOfy3Isp6OnRLpaami1OHl8TkEpL5JMlUH2ko3qbOo6h3rRx+HBfsyyDUkyU1MT4NYbf4a93s7UUYO+lh5GZ04S8HhZzGVoijSwoqeW6aFZarsDxBIJXn/5Fm47tBu8KhFbA8fjsxiKQilTosblQcCEaJERyyWcpjJ79z1IOBAgFetn1wNP0d7chF7M8ZrLt7Nq3TpGJ8c4tGeG5sYeLJKdQDjEyPgo1UiJS1+3ioNPPcOKjgZ+ftcDjI8usmHlagxMWG1OcoUMbY2NWCwVHnnqMS44/2z+732/pNXXRbamwPd+8F3aW+t5cs9xDBEkw6BcKXPD9T8jmUzzyP77+drr38iOJ/rJ5ArMTg3x3is/jqBXQBAwqlkuPm8TNx29l9FynrHJSVavXo23aqV3RQdTwiL5pMrAkfuYWyzikGFmcoxMtoTDYcdhtWKRBWq8boRcgX/+/g/52le+iVItkStNsbCQo6YxjKFWKQgGYZeLnMnA7rBgCCrJokE8PY5ZsnDw8MPUBDspKePEU3l2HzmM5JJZtfpSLrrwLXzn299FsKxAkNsImAcpVIqs6G5kYT5DOpWhKViDWChR468n0thFQ7iGA0O7SFTNOEJWdCt0hrwUDYGh0Xm6O3p5fM8eWsON6LLCQnaBjcEV9I8fo8NXgyKLDJ44TntbJxga4cZadF1gfnaG7uZmOhuaODCVIUCJo7ESLucCJqFMVSmjCzIWhxmnXUcTLGxd18aJk7NcddFa7n30SeLZAg1BJ/lSmXg8TUs4hMPQSSYSOB0+RucT+AM+xmfmSaaLbF7VhaYa1AYEoskobR21pGI5HEqJUiWJrhhYRZnJxThb+zqJJhNkiwVaGhswJeN43W5M9hAnR8dRDBCoUKmYcMoSktlEMppkVFFAEnE77UiCxomjJ1jb183eIxPU1NZy5pZ1PPzkQeqCIbyBEFWlRDxeJJtO4PfYsZkFOla3Mjg6jNPjxWG3kUiXCQUCuB0uAl4f/YeOsbI3QlWVsMtmTKKZUPdaRh++neb12xBUiWIhi1U08ZaLr+Kd7/sQoiSzcnUjJVOB4dE5AnVOKqUSIZ+ToN9HIqUTnT1EyHs+voaVpLIZRD3L4uGdaMoLdygsC0WnyapLP8nQw1+n64ov8v4P/gtv+vX0rKVk9rGv0bD9GlRNP63pWq8W3n/LYeD0jaefpXR0z5L6E/3B2P64aXeiKPCZ81fwxYeH+fJl3b/3+KqqU3vW34OmENvzrSUTdURR+E1l0TKvTp4ViZZCHFzmleWlbAX6U2ozejlMof9UWRaJ/jxZ3vcXxiw7qBZK7Bh8jJWBlehGlbpQiPloFIdJIBHPYZNEgl4vJpudno4WCqUssws5BAxMmLAKFvKxDPsOnKCzq5euVhP9SpmT41GyBRVVqFBT52FmahRVV7GIFibnwRGso0YxGBw7yRMHjjI6PU9tfQc7H30cq72C5LBy1vqVmOva8Vo10hUTU7NxWlpXY6+aGTnexY9++G8k43P0rmpm4ZkcPWv7mJ0ZQsvB3GwKWbCCoKOrBn5PkExB5thCBqfXi8ffyr5DBzjzwhVUVAeBYA16tYlYaZbRo4/Tuepctq2uZzq+QDyRJGfA4kyBqqKg6gpaOYdh5Ellq+w9chyTWcZsFvjujffQ3daM2W1DlXQ62sLEilmsXmh01yCUYe2GzUzOzCN7FUJVN5d2b6G9uZ38qiJzmTSqIlFKluh/4gipUoo3XnYue5/px+f2kYnN4/CL2CQTpVSBDevXMTefJ1DTQMAdplrNYzHJtLQ1UilmyRUK7HtmH9f+y7eIjRxh2xln8os7/41ywmDb+vUMTkzTs6Ibm92N02owlYzx2qtey8ev+TTFnA1NE9EMA1mWeeOVF/DzX/4QnCIDY3vpadnCsWKB5t4z6bZfwqPPDFBnKbLoLeIpapRjVRILSWyr6xk4OExLrR9VlwGBbLbAhdu3oyhZ7n74XsI1Yb713Rv47Gc/gaKq3PqLrzN5PImhaRQrBRRF519/chO5rIouGKzraWH1uk4iq1002hs5uK+fsy/spJjXkM0OHA4rsklkbOwAkzMK/nAzqUScXDZNPBqjY22JyYlF3AE/JtlBpLkRI69jrQ0juX04nXbO3vgaDhy5mxpfiLJN5Qf33sdZK7pob2gAp5OHnoyyflUfFbXMoRPzBEMKZ2xczVRsngZPAKOYRqosMpEWESUTFrOM3WGno6OZbL6Ke3aBuLmX7ed28Mgd/0EmFaempo6g38/Q8RE8bh/1QRuFcp5UPMr9u54hmczgdvmoVFV0SWdde5iRhTh1Tiuaw0W6WqHGYcVmKChmjUjIw2IijVW24va6yeSr+GwW0vYqVUNiIpMm6HGQiVUxiSo+n53hqVnUikA+X0REJJPLUYrFMVmsrGiOMDUxRVNrE4uxJKl4CrvbDrpOOlfEarFT0kTUdI4anxOXIJNNxxCpEPIF8TjNxFJFJqZmEWSDWDSN1ylisUgMZWeQJAcdYQ+DJ6NE6ms4NjRFTZ2b4ZMnEYwqECYdX6BYVfGJVh576GEURedX9+/m0vPOw+o0U1Kq7HpiB+9/12v57r/9ioPPjNHefAndjWE2rVvLxMJxDh4bQJDMhHwSYsVAkCTKxQoDx3ZgrxicSE0jSdIL3jv/56sOryDtH7kDDIMaj5X5HV/+r/HmS4zNfGoDQ6/9XeY3/3N49Ma7liyWYRhgGATPvHDJYv5B5z5NzLLI9d++C1XTf+dxl39vN7VnfBSA1NPfWXLB8JQx+CnB6NlWvmVeGQzDQNMNVE3HMAx++swEGPqySPQ/nJc6eVtODn8/r+Q1ernOvSwW/HmzvO/Pj99RYWEyh6ooTBcmsBhWKqUSsUSUyWicxWIGQQKXTWYxvoiilHFZXaxc1czMzDwmwYPHHmDvkSRHxsaoaQpzYnyegalhYukSqgbX/svPKRYy9PVtZHpyhm/+61epqw8Tiawm6HHidshkqmYsdhfp5ByTk2N47F6EqoJsNJFO5zh8ZBduh4zT6cJcUjES/bznTRv464vW0Vfv48iBo2xZ3Y5cUlnf2Mtsroroc9He3IJJlikrJdweKxaLE0dTkNpwK5rZzSVdQQbHJ3j3u99KNpli/+FhotEiGmWefPwBrIZEW/cWdu46xtx8jq1n9nHxFecRCdezZfV67npwL+1tm1BUBZvNxtR0loW5FFa7hZpQgLWdK7jmnZ+mx9TKls6NaA4nE9Uk/7nrXjQ5haBZYF7gxOwcP/zJ7ZxITFMqlmkKh/C3t+BrdWGtszM0d4h0rsjxkWfw1FtYGekgbOtFqbiIiUVmohN0KBlmJ4fZf/AQdn8DNqebxo4mQnVB/v7LX6RcLROdGuTfb/wu2UKBZDrLwWPHqJRyROrrCXldPLn/INvPvJSzz7mCH3z/G+T0QebieVRVoCEc5pd3PIRdCHD/LY/zk+/fzO2338dHP/IBpub2cevtP2RjXzM/vu2XPL77GL/acZD4eAZf0M6NtzyDomgoiooggGyoyLKG0ysQaQ4gyQKJ5CJHdj/Ohz5wNdf8r7/BqlnRKwourxerxcliLEZFldh4zutYt+UiZP8KktkopWmZLRvXI5l0dEPD5o5QG26iPmAjXypTrSa57OJzCNdHCNXUUN9Qz+o1bWQLGdw+J/XNQTo7WgmE21BDDZQEmWj+MHfs+AmyLBGbdDN6aIj56VncfgfHJmbwBBw8sGsPjXUhTk6PceT4MVLZLPFYnH3JYXYvDKNJVqaqZixmFzV2jfEdj5HO5JmfW0CUYXRyFI/VgVmvUF0YQhasyCYbmWye2EKUcFMTfpcVQ5YZH5+iKVKPYXayua+PolJBkqw4TBZKuhm1KpMoK7gdFs7o6sXt8aMoClt6VyFZbBQxyJQLyCaRhlo/7U3NXLRmDaFQGHPVwFDLBEIBMrkq5WSMvrYwKzprWYyncDpsZHMlQMLjseNwWDBZnIyPLZCKJ8ml86e6P3Tw+jxYLGYcgkBTvZ9CLs/43DjlVJpsWWP12gYy+SqGUaSxwYfHYqOvq5F0vkAimUNMGZgsCgvR1ClvJbWC1+3CihmLxYTD7eHA4AQ6ArpaRdRzaOYSok/mnPPfhj0sU0GnWNXYsKqHjX3r+dF3ruWGf/k4t91+A23dq7jhJ3dz8y1PcNk5b+OiM9/Cpee+hVXrzyeVyXH0+KNIVZ35xSwBRwu/Sw76s6soWqrpYYZhkNy7A8w2ACy/bh2aiBVoCTlOO/5zEQThVHtbcnZJ475iKJUlC7V/PAXA0L++bslivljO+tpOAE7+6jOnFad5Qx//+OAw/+fy568q8l32zxCfwrrqDOZ/8o7TOteLQTcMRJYFiVcKQRA4Zd91ag/uOLgIgrgsEv0P5bmVLMstYn9+vJz7vSwSLbPM85NIaKxq9mNoKlPzKVY1BxibzJMtlVDVCrruwiKJzCdjxNNZbCaZvhURDh4b5smROHURGZPZhiiZaGrt4tGdO+nqaaPJOcb4/iSGoeN0Wwm5ZFoidTx9aD+BYJDvff9b6IrGW95wGQ88toNwTSfZ1Cwbtm9jbvAwi1mN88+9EGvAT29nBw/fvxdZKSOaDJKKRLZU4uAT99IcqGM0kSDot7Jz3xE0Dbads53uhjAFWccsWqjG0phMNjKpEhaPhF0QWJjYy9o1PdB7JtXMGHc+8GPM1VY6VrRTzNvw+Vpp72inv3+A6KGdbN24kWKxjCRqOM0mRkbGePTpRfyhBkaO9LNh/XYqVY2axg3URRqIT+wm5DPxk58+wh139TM7cZJ3/8UVWMxFtq3uZn1vL+WSwaN7+7F77BSKEisiYUSLjVq/m6nZeapaCqMio5dFSlkNtRjFF/TiwcL8YglNinHhudsZmt5HScywp1DC21lPX2s9LoeTUjnDyOBT+B3OU//0BKomcBsmZjMZQoEQ2VwBihni0XGC4RY621vQDZ1yucL2Czaga5BMJmlstJDPVJBZZMO2i+ndcj6JRJz+g0fo6NxMKlegra2R+39+IwFniL6uFkZzcWbGx/Ba3MyIOQRFRRNNmEQTVquNUJMfVatyw7/fg6JouLw+0uk0hVwOySRzbKqB93zwQ0zORQl6XezdvwOn307vql5MVhP2wjA/vOlxymWV3Y/uZcvq9Rw9tJu1G88hnTnC3Ow8iUoZWTYRCM6wcX0vA9OP4qho2ORG7AEvQkVDki1kBQdzyQLl7CLBJhNGTmCNpwWL2clffeg9WM0K199wLTYxgGorsufQEaKJFLU+N8dHh7ny/AsYmY9hliV6LY0E2yM8PXiQzX1rycYzxDJVSs1bKNNCNruLYMhLT3srY8UVLOy6iUSqRGOgFl3XyeVSNLQ2cnLiJGldh0wOETNWpx2bYWLHoX58Vgulah63xY0sKLhdKmaTi0xVZ+74AIogUh/0YLVZiKZPGWPrGPjsJgbGs5itTkwmg4BdYnK2itPlYn56mlDAjSAIhJsDHHhgDKvHRTqdx+60oKgi0fkM6UyRns4VTI4voGgird2NFHIlZKtMsVLF45OwFiQCfjexeJI1G7o5eXyUh+59kNUbzsLQVdIpjZqgG0uNiWS8hMflppDRkO02YjNZQiETwbAdpVogkzeYj6dojdQSKyhUMzkqOjjsDsJuD7PxEk4PVKonyOcd2GxWLtpwLiXZzv0PPMYV5/aCISJbbazt7Ea98iQDgyL/+dDPEAURm8nO9vUXousQ9tVTKs6TkBQkdAzhhQsE/gyFotPvUjIMA/8ZfwuyGUQJ3xkfh0AjSDLrrvgcqZeg/WzhiW9Qd+bHeHBwgUtW1i15/JcVtbpkoS5511eApWtje7FousGx224D2YzfaT6tWLuvvYDmv7rpeYUi35l/B2qV2Se/id3y0n9cn60q0nQD6WW+pss8Pz9861o6f3Tjkoncy7x8PFckeG5b2HL72cvLn7o499ti5DJ/fvypv8dPF8MAk9tHk95A/aogj+3px+uwYmuSMbvtVOdANNsIBWo4c91KzE4HJyZmmE9XqPV70HWBqlJFkkSu6tuMEjBw10e4d8c92Bw2SlkFm8OL0+li4Okd2N3tFAqzuF1+ArV+Htm1FxSBi1+7hrGho5Tnx1BVgzqvh0P9Q/zVuzeSzRfYtP1KvLU+xvqP4/V5KaYU4nNFKtkkvd3deKxltq5fy66nDzIyPMz5557L5PAwJ+ZnkAURt9WB3WYmW8lQUgoIbjsnkjN8+NJ303/sCVb3buORx55idGQMsyyRWXyKPY/fTqS+m+6WZgy9gijC4IlB4gsLZLUQTZEu1vSu4dFdD9BQF2Hz9nNIFCCfSeC0W0ll09gdfqqVCqFwhLG5aZxelUf2x5mYkihl5zk+NMWannYEqkxnVBwWEWsgiNdZ4c5f7MLtaic214/Haae7o4PetlpcTis2RcfjylNMZbFJEjf+9BkqhQSf+ocvYLaYiacygIGhFvi/d+zmQ23t+EPdVBUdl9VMrWAjp7ppbu+jJdKMWhplYHAYEYO7fvEzMpUyj/7qBxw8MMHE1CwWi0ghV8LjryUZHyOWWOBNb/wwJwaH6O1by0TiAHYT2L0uOt0ebLVOusIS3no7f3nZB7jmHz9MQHARy1aoC9rx2aysbIxw/MgoE7EoklUmV8iCISBKViSzzLvfchUz0TThcJhf/Pw2Vm6to6e2iX27bkUyN9DWsIDZLiFbYHg+x5vWBrAF4MCBfazc4CF5JE9QszE0cZz2cDutXRtptgQR7DrXffdmNrXU0X3RmZiUekrlLEFHEVOdm5Dbx86FY7z5ve/DIov4PS5uvfv7uOy16NIYnqCbsck5VnauIuCSaI20cOM993LZuZdRVnPMLCQpKjqqyWBqYYGW1V0U9BQmZYKbf/xLzti6HpNsxWEXOfrQj3nX29/Jl770BXR0JMGGxSozHVcJNq9lfuQAvU0NTC/Mkk6nGE3nsUkWWuoizMUzNHeH2HNkGMlkxiZpFPIVJFFn44pWbn9yP9FkhhqPi5IqsbGzBUEy4a0NICFglEtE/D5S7Q3Mz6QRZTuGaCeWSjJ32KC+JsR0PEt7az3Tc3G0ShWTCQxFZmJigkyuRMDnJRnL4fe68AdsjE/GSI1niNTVsVgsYZTzxBcqeF0+dENClitUilmqxRTPHB4jly9htZhxuhz4fW4KCYVwgw+HVaalxcfkdBaabySHAAAgAElEQVSLXGV6Rsbr8ZMuRdEsAko+jcNj4/DEFKtawxyemaGQzmO1WnjogYM8dOtBPvj+91Eb8gIKhmBgE3P89P7v47Vb8NdYkd1BShUds8lEpVJB0KFQipO1y/gdFjLZDJKw3Hr2G5bCj8V/7udBU5Hb+9h9y2e58qPvZuNFm8DqBE19SVp3LCYJRIm3vvcrSx77ZWcpJ8S9QiPC95xMAODfdNZpx7KZJdR0/L897jvj46BWie351ssiEj2LLAkoqr7sW/Qqwe80g2GQL780ra3LvDQ8X+K2nMz9efJymVYvi0R/vizv/e/GwEBUdKqVEpnFHNv7ujkwOEFAD2FedBJ2e0CukIjGCIZqsVplzKKToNfFyNgENrOVDS01rFlVQ8w9T1LVuO5fv0tr30YsTglv0E2pmuaZw0ew2e3Mz03gD4Vx+YKMj4zg8jfS0dnCwd2D+Os8zCxEqRoiLrcPj9/H3fc9iscm0Nddx+xcku7OFWTSGRwOD4ao09po5ZKL+wjXt7N9yzo++td/SUNdiNnFIudfsI2+3jbS+Rw5pUi8mKWUzhPyh6kJ1dLdsgEdndHhJDt3/YyejiDrNqwHk0BFKRIKe+lsbaOxow6b10wiN4XL46NiONCVORajU0iSGbvVhc1qJ5crIRgGlVKBoiayeDJGXbgBm8NNtVKkXM4xPpVAFB04Aw0kkgYtjc2sX9VJXrGg4Saeq5LNZrjrkccYOjrIvt13Mz45yVNP96NTpr7Oi8lay+33PEEmLfDozv/EY3Hw4I57WLvxYvLlPLIAiqqiKAp3P3QAXdG4/c6fccP3P8Mzhw/wyM7D3HnnQSZnTiKbBCqlRfy1ZhaiUc678s18+MNv5etf/DDJVIaa5jZMsplSReesLatpaVqNx9uGotVxx+2/pL6mit+ZYF1DOz3NK9mwqZtQawhd1nDIFppd3XzhK9fjbfdR191EQ8hLrcdFwBPgxnv24rELiJKZunYfFp+M5BDxNQtI1ipms4yuqTgcDqqGxuaWy0lGFcyCmUz0MKOTBRq63KzYWEM8miFcW8vREyJujw+zbkY2mylUUtjdLg6P7EEQIVHIoWhV6jv8nNQy6OU6YrEUbfVVKsUUernKeHyOUMgKmsa9D+3m01/6MIKgkUzm8MkSsqTREKkDpUShUKSolhBFmcMn+lnVuoIjQycJ2J24czLVvE4skeBkapGB/mk8soTNZvDgfY8TqGtk+9peHrjnDlx2BzanG3/QA4hYLQXWbVnHmo5GqFaxyxYiXhd2WaQ2aCXkc6IoGaaiSdpbIrhtFpqb6vF6zEiCznQ6w7a+FcTjGURBZDEXp6IpHBkZ4fzODiwmmKnEGTw5RjKh0FVfj1opYZIMZuIZrH6RWr8Lp10mmy1jkcHpsuJyOQn5vMwv5lnV24nZKhAMuPB6nZQLVRbnowRDbpxug9mxMTTDRMgpk8tnCHicZFNp9g8cYTGdAr1CS8RFV2sIu0lH1BREsUg6PsXQ2Aj3PPg0c5OjFLIxalwlzFIJMxrdLY3osomKYuAJd6Ba3FjNNsp5BZtV5tyz1rNm9Zn84uYbuO+xu/ni937Iv919J1ZbgNWtLVSKRaZSOcwmEz0NYeRyDbpgQpBk1rStwyWKZPMFsqUsqvbCBRx/dkIRnN5kJ9+5n4dihuknvknsxr+kp8HNj9+2loc/tp3Uzi+DKBHY9ndLuNr/4qYffxp07U8jgRdfWL38g0N1bFiyWC+WK95/qmrs5LevPO1YgiCw+dKtv9lXTTfwbfnYKfPifd9+2Q3MBUHALItoy15FrwokUQC7h6Zz/55ydQlF1mVeMn47ef/tr+ces5S8lLFfCf6nJ78v9T4st5ot89v8qXz2l5qSqnJ8doqyXuT7v7iLilqhrqYWj9dPqVAgl89gK5mpD/uZnp9naCSJBQuiIFKRdA4O3c+vHruPTM6KU/KhGX4sJhvvvPgv6KhtQ3JrOEoGHbX1VEoGWzauIRQI4HJ4+ej73kEqNsievf2UFmJ0tTfT09rCunVb8TidxOdG2f3U3Vz7xc/wo9tuYHJ8H9MTxylXioxMx8mligwNLlDn9LOqq4lkPMPg2ACb1p2Jy+FCqRiYzSEamhrZvq6HrWu3EAk3oYktHD8Uo8ZRy/U/upl9+x6noplYjKaYOHmMoNeHYbgJB8PMJIbIzR7lB/9xK3c8dIC5aBFZkkgmKkQz02iqwSc/dg0trY1csCaEXk5xYuQwJt0gns1SU5Nja1c369duoCiBboZ3v+M96BkbTk+Ioq7zxK5dNLd28NrXXEJjUyPJ+Wk8bjNfvfYaPv+xD/KNa69l23kXoCgl7t95hJ1P7aK5OcwDT+xhMZPm5lvuQKlq/N1nPsyNP/s2X/k/n0UwQBTBGXDR0htCLEewGS2kFlQuunQTb73yIlRNpxo/ye133sFN//EQ3V0b2PnQw9SH3GiqhlEt4nB7qa2R8bmdHDq8jx2P38r+ow8Scamkcnl2PXmcDVvfTMUIUazmUVQViwgWewSHJ8D0wAHW9JloCjVQqJaItLVT9kNwZTtuu5kH9vZT2+UHQSfYFcRd48KQZUKNAdK5ErphMH7gSbwuDyFnnlC4hWK1yhkbNuNp8dHS2onXXsslr9/AA3sWqauvoX21hNsrUshnqA/bWb2yBr1ioJTzrO/qpFSpoksWtm18MwcP7mf02BOMz8wyNJHmrnt3cXjXM0wdHuc7132aO396HSYU7rzlISiX8dV1MztVoaCVyOWjOC0as/Pz1Pp8zC8uoOglzl7Xx1Qsw+h8AkUrMzIWZ0VdK3HdwsDMFHqpTCGfRVFUWnr6EC1ufHUNmCxmkrEoHY0hhGKa6b0PkS8oWC0gm2SQRFxWgYpq4sCJIXpaW1AUCRmd2tpaqCrYbR4CgQ6UiorJ4iDgNeO0e+mpqcEhW6nx1rKrf5CJmUlICExmE5zT3UA+H8XnNuE0KwgVFZsqIokC+UKZYNCHz+MhGHDgcwaorXGzvrcJSZAp5Ut4XW6GR0aZmJzkvAs2saKlhRqvBY/dSUNDAy1tjdT5A8wuzOH2OWhsasHt8SLaTEzP5zh2cgZRNpEvayQTJRZTCjbZSqVaIZ6vkMgVEO0OZmajhOu8mHXw+n3UBX2sb/bgs0uE7CFmZicxqhXm5kYRGQTZhFNwYDfAKJq47C/O4uTJSU7MTeNnBXY6ice9ZBIn8NsWkSSR+aKITbdjdtsJRUJIsukF751/dq1np4PvnM9BMcPUrutwWp//0i0+dR21Z3yUQkXFscRVIJf9uuXsxFyOnoY/btLWq4YlEIqeNYCO3vSe0471B1NIL+mktbuvPgPdgHJVJbL9GhAlUru/sWTx/1AEAQSE5XanVwnJnV/Gv+3vCW+/Bmxutrz5cq45v+2VXtYyz8OLSd6XvYpefv7UxJRlkWiZ3+bZ+8rye+O/43BaWXNWKxXfei55w0oePjTEmatb0HDjd/p45vBerCaDqipQLhbpaqllaHqSE9OTmCUJrQAVk0LIUubp/ixvedc5HH46zNe//M+csbmLVFomp6u4LFacNijl5ohGk6w/p4Ob776TN115MUOlg6z3X8X4iYPYgm0UShrR5BxeuwN/wEMiFafe6yeXS7JjxwAXXnwZTZEIoVAdpcogh4+ME2kLUVvjYnDaz3y6TEVReProJOMTo3i8IW6773Euv2QTPat8RPMhLnndWUTzJnTVwO11U0oqHB5/hsnpRVau2UT3qlVksnMcPjHAtk1/xbve4ufRp/YQDNlRnTZEUeCM7etxuSo8vn83Tx7bgWCrUixauPyC13D40JO0dbZQUU1s3trJg08P0BQJk06kmZq4h9mZE4iWZiJrAtRXwgyP7UbMTTI9vkgk0obb6cdfV4tZmSfsk1iMjxN0tmC2OlnZ3o5u6BwfHmZ2bpxctoiiqpRLRfKxMiCii2A12dhy6RYuXHcG//6j+ykWCnSv2Y7DaUYzQ96W4XVvuJKVG4+jqBVe9/qPYCBSqpT55Mc/yvs/eDXeYpVSWWDtynZuuvMR1vStYHF8nFg+SlskxLoVl7DniZ9j8dQiKCJ79x3BLVu44OxWpufm6GhyE3c6EXJ5rFaR6dI0kmxw7Ol9GNUikmyiPJnFu8JHk9fLCDEEzcKl7WtIZ/OYTBYODA1yzvo+tl54Oaajw5gx4wpJKFkDPVlGt0kIhoGRn8QVcuERvKQzQ6zb0EG9zw5mnWxKRcvOcWghgUV0snXVJZQKeTLxOE6XFRGJkaEjvOb17+TWe35MX7iFqel56kJBPCYzqBWODQ/x1jdvYv3m93HXL76L029nOpbCbjKhmgwCDgfjY5NYbDJnbt0MQpWJyWk0TeTWO++jqaGO2qATp9NBLp/l+MAA9c1NKKrKwvws5UoFQxMZmlgkUhthMpHHa9Wpq20iq8qkUgksNhfFSoWelg78Lon5iVk0wUoxl0XTytQGvaSqFbprapBtOrMeP9FCDq2i4s0WmUktYpU06kM1TM7GqbPXMR1NIpgc6GaVbAEEuw2LoVFWdc7b1IvZ4cRqbkKUTRiCSr6k4bCb8HmDbNrYzWOPPkk4VMPkzCzHj44iYEIUTTj9Abp7wrg8duw1Nhp8fipVjVSuSj5TxdA1QhELoixgd1kRVBO+zhbmo1l8XrA4XNgtMtlimXLZoGNFO6WKSnRuDq2sYQiglEUGxxbx2UTsbjNHB4Yo5gTG0gn8Di8tkUaquk5GzTExkkXd9Th97/0ogqDiNk0Qy+aZmZhlv99LXSCNZGrB27aSLc2d+H12Tp749gveO1/VQtGrqZ7Bt+0TUC2xuOfbmOUXrvAwyyKIEpHt15B8+jtLmmQLggDBJs688nOknv7Oi3qOYRj83V3H+cnX/+NUy9ezk9kE4b8Mm8w2cAXZ+b2/pjfi/s2aReH0qq9+J1bnaYd4dgrcK+Wlc+Lhry9ZLLMs4jvvHyCf5F2f/RDfvnLVksX+YxAE4dQfpCXw9Frm9BEEgdTub5AvqzS+7Yfs++U9vO2mpTOFX2Zp+EMTtJfCT+iPFaFezHOWE88/nJfimi0LAcu8EM/9/C+L0f+F2+Vn/Yo3YIhmDg0O0N7VjbuthcLMASrlFI3hJqKxeTK5HOE6P4VyCcPiob0hgloukcpnaW9uwO7XsMb8UJA4cmQ/V3/kf/HDH5z6HDpsNmbSizQ6IhQXFzhr0xaqgsHrz9qOJplpMDppaG7AFfARi8UpDJ3A6dYx2zy85sJ1/OAntzJ+eII7H3mKtau6+eev/ytXve392O0ybYE+vF4bR4+OMzBRQhR1qlUF2WQlXcjgcocIeLycu+0SWlu82Mw6AwuD4LOwsSGCovQyM1EmX8qTTBZp64lQKZZpbO5m4JZ9rO/ZxNGT42zo7EZVDQYGD7FuzRpsVoFEokhdfS9vf8sGtmw9h8VonL7VfiYm5jj77EuZnVskGPJxYDzKqlW9HB8cwmwy0di4imLBymJKIqDbEPQksiEQS6XpW9OO1R7BZRPJJFWeHh/DHTfxmnPOppirsm5rL6Kpgr6YxLZ+JYO3DCIaBj+9/tMMT09hdgloZZAFEUGAZrOTUiGPrpaxShofvvqtfOnzn8EfcFOarXDnbXexaXMHNQEvJlmmUKrisFhoX9FFqVgklSkwNjaHQxZBhLHJMfpWreG2W/uJxZ4h6K/D5fRy5jYXFqeHLZtWUiwWmUnN8K3v38vnvvoFRnb1M3Fihne+/Rxuv2eAQEuZTK6AohtIgg2n08TFXaspCRIhfz3zxQwlyYVdknDKCuu72pFF+NIN9yGJImd0mxCrBnXuICkjweJiGtHmRDYpmE0ysqSxe984FslOJeKipjaAyaUzMDFIILiexXSGcMhBTp+joyVITbAeu9vPX7zhndQEA7z7gjcwfOIws+kFkkKSjZoPv6+eQrnEYmyARx4/zPETi1x8xVoWkymUahG/34/PbePJ/gFcTifVqsqmrd2IFoPRoWnCdbUkUlmCPhfRRJQjo6PsOzrABedeyN0PPsiKtjYk2YIgGZgQcDutFEsJCgWN3QPDmC0OBAwcZhOiJHNidhKrxUa924cuqrQ0+4lVipitNoyZBUbmilRx4ETE5HEQdMuMT89ilyHg9NBSF2A6mUeTTAiilWK1QJ0vSKEYp6xkiMcceJrrsNrtGMD+w8dpioRR9RLlUhWn00ExX2JsYhJDlKmoVc7YsgGHy8nA0WFKZRW9pPLgE8fQlCrVksEJaYFyqURFUalWdewuC0giVquDSllBkKocOTqOVYaaUAtocWKpLG6HA5/XRSlr4PBZsYbCHB+boVw2MzQ1hVVXmUtCOqfgtgtkc3k0AxBV3H6ZxXSS7133I/7uk9dywNlDbWmWcFhGFuwYUZVwUwS7zeBQ/xHcrjRXvuYSDMzE0gUM/YUTvVe3UPQqUYp8Z38GqiVie19cG1Bs93WEtn4U/4VfIrXjH5d0LYl7P0Fgy0d+r9mwYRj4f22E/Hsp5aCU49w3ff75fy8IpyqARAkkE9S1c99X3sDaJi+SKCAKIArCizKUfra9qnbD5t+/rt9HYnpJW9heLM96UNV6rEsW89ETUcgnIdTyiotEz/Lsfi5XFb16cFplUndc/ZufbabrXsHVLPN8vNjk/aWuKnqxItQfsobfd+yrUbj4U0uWl0WiZX4fv/3esJmuf4VW8ipC11GFBKsagvT0XMnI5DhjE1MQj6NWykzOjBEIBLCY4PjEAl5XEV01ka/mcJqtuJweLCYzI0MTtK64mJMzg2zY3M5DD9yL5BTQFAOz1UTAYeX48DBvf81WwuEA6UoRySTx8ENPMLuYprPrQmLxJIf3H8btybB5fYiTExo/+uk9XLZhHc2RenoafFx324OUiipnb9vIxPgM2UqVdFplPlNiTY9MqVzi8OFh+kfytDe3sarDR9bWSWx2mEDTFo7uuZf02AL1vtUcGN6HKKlsWtfIjT+/n6a2ZlwWL7JVJL4wj9Njx+7QGT05SGuggU9+9kt84cuf4q79D9IXXofT5yNSv5Kde/q5954H6OpZjdcZRVE0nG6Zp/bs46q3vJGmxmYGBgYJBENUEbj7/v287e1XYTab0DSVY8eGcZZtOF0Bzr5oG/lsHlHoIpVK0927iSPPHKKx3UVXRwRkmJqcZTE6h8MWpqbJhQkzVYuJskVCtsp86pN/i4CIWRaYni6iVOf59Gc+hdlswW7W+cS11/Hlf/gUN//yQbL5IkP7d3DXwwf4xg13MT85idtdy/pVNVSrfWRzFTxeL4cOPE2imoVqkZ17d9PS2kdTSweGpvDmLju7k3keu2s3m89vxSn42HlwD3U9PjyBNjRtgHddfTUP3HUnc9OjeBvDtAdCDKZVBEnirW9+G7v37CUcEHHaZDq9DdS4WyhoMuXUBIqkU0XDLMtcdflmpvp3kBXL6JJEQ10dTz5yhNZLavBbPaRzaVL5JLYaF3W+IGoqw+HDEwTdPsJtq5lfTOB2mzl2YAdlRWUxmsBuUbno8ksZn5zGQo4FLYuhq7RtidARaGBWFGiPNLGYydDVs52rr76Cn918Oza5hLV6jEqhSCJTJpEvk0xnUZQqB49WieWTeH0+YvEELqcDp8PMwmKSIVeC2lAAVRG44+57sDpsLC7M0t25mkq1CnqOgm5haGwCURDxu1w47RVsLhclQcJplcjnkrTW1FIoauQKBbSqwbHJk3Q2NVLj9ZEol0kvRjF7bQg4KCpWqoqAaGhoiGTKIm31Lg4Pz9Hs8xDx2gnXethxcJFCKU9Z1Xl9ewtDY/N4vE5KSoVytczY1DR1kRbmFrJELCYMwSBfLGG1CoxNzpNKZjHJAi6vF1UrYRQ0BEHGJIlYbQKZTBHDEAmGfAScVhKFAm6XlXi8iiEqmGQNt8/DzPQiZlkg4HeTTBURTRJOl5v5aBK7bFCpZAgF6impkCpVUNQCHfU1TKhJqopGk6sBn99JwOnEU+shlkhx2Wtfy/79nyOfbMHZHKJaTNK8woYiOLCZzeQTZU5OHmXLunpy5Sr7D+wnm0u+4K3zVS0UjUTzr/QSflNJNL/7Wy/aK0aWRL7zg0/wkQ99fcmT7GeT9+A5nyH1xFf/2+//P4FIEKBpFdFffADT81RBPXdtmn5q0tVErMDZn/4VlfFjp2JoKhj6qe+aemq0/UQ/l7+t/0UsVjq1BqsTuWEF/d+9irP+8QEAnvrCxadxFX7zAmg4/9LTj/MHErjwC0taZuM769NQzrPjl/+bdS3eJYurajqabmCWT2+0+rJItMwyv58/tjrolaoqOt1JWUtp1v2nKHq8FALVski0zDJ/HKqm0+CyE80maA3J6LpOa3OEshzj6MmTCLIZt9uJUi6QTmfwO+pQzSotvc0IRRW7Zmdoaoy1vl4eu+/fWNu7AspOLGKRGkc9PX0tHNpzmIVUnta6AHsOn8Q1Ns+aVV3ohkK1amLDpguYXYhx0TmbiUR8fOtr/4Q34OWWXzzE1a+9kP3Dozx06CCLmTzlkoJkkihXKgRrggSNKJmUTNDt5+TsDAvzApi7EMUDnLuhEWedg+v//WYUMcv3hx7lA3/zMaqVHJpXodHdRLGq8asddxH0+wnW+Ghp8qOUVcoljc1nXMTC/AgNoWZuuf923vKXb+Y1l15JU0Mj/ScWyechVyiQnJ/BauQRsiOomh1FrbDr4ARbN23BJMssLCxw4lg/3b2duOUqPdt60apZqrodh9OGLKhYzVZamupIpvKomkY6laKmpgZHocKGrWdRV+PH6nAiCSKx+Sr5QgERgTPWvYZyRWfr+g1s3yygliuMTMyydp0Zt11gY18vY6MTfOJv/4Z8IcfbrrqE8clFQm4zo8NHWNndxeMFgX/84heZmosxMzNHW0uEmYl9bFzTy869R2hujvCre37Aip4mchmVmpAHhRHSixY8oXoenYsyMQ/h+k4cskFj0MHt00kETeen13+ffCbJ29/zVt791++jUiyye9+NFGfy+D1uTgyNcLx/PwNjB7jsDf+b2aHjDJ2cpW1FI1o2x87H97Ft3Sasso0Lz+giPfYMok1CzkO6mie7kGJldycuk4OxmTmSiSQur53epgbmTkapi9RgD4BV6iGaKBIJ+zCZrbiaO9l1YIDGhgZa2+t58olbOXEiydpVTYhUUDRYGWiiJOtoksCMa5hMtsT9j97Jo08+yRc/8xXuuPMWzth+IfnYAkMnjzG/Zwyfx4XP6cQQNWoD9biDVtxWP3v37SbscBErlzD0EoWyimyyYHGIWP0CWsYgn1uktaGW3QcWKQyP0lDXQWtAJlFQsFh0qopCqaTi9HtRDIkjE/Ns6mxnJpFEAM5b30v/yAwmuwebSaC1vhYFA7WcRrYKWN0elHIes9lKOpNFFGVa6iNMR9N0R3w8PjBMPJmktaUZsHDbvU9w9buuYG4hh89pZeDEDCYzTExMUlUVphdm8TplbGYnhg42t4CiqGiqTjyWxGqXqJRVfH47dXVBjKpBsWpQyOXIpFOguyiVy8wXNWxWE8VyGZ/fTsDrZH4+hs8bZGI2SmNDLfl8mbnoIiG/ixq7DafTz0w6QyQUxGKtZTGeoKTJrA00ckSZIlvKMXF0lrb6EHOTcX4w+y0++OG/5ZpPfIobr/8KEzNenA4n529by5EjxyjkNcLhAHrcxL337mL7WWtQy1Z07YX9T1/VQlExnX5Fz+/b8jHQNeL7vvMHtze9c0MzHxEl/Nv+fum9Zpz+U9Unz8EwDPxXfg9mj596wGwj9dTvbo16rgAgiQKSKNAZdrHw03e+4HN03UA3DJIFhZ8emOafvnYbZBafc4B2SlgyjP+ablZIow7vp/fi/b8RWOzm06sEypYUAGb3PoXvwmdwtnUycv2bsJymKPKiyCX46reXxrDcd8U3fyMSrW/1AUtTwfPVHSN87bPfBVFCal1D7Ka/XBZ8llnmJeJ0BJKXu+Llt8/3x4oOf0h73VIcc7q8FILc72Mpz7csEi2zzB+PqmqYHHaEcpmpySeJJmBbu5NYsBaTZMYkQEXXSCRyaAY0hJ1UFYlYPI0hmakKYLY6OTZyEr/Pw8MHDnHemrPRjSoHT+xncnqaVKmI02zDbLXgtVsZnY3S2lzCgoPtm8/B2xhmZUczDz7ycxKJKTadfQmPPHAHCDKLuQIz0Sy+Wj9pvYw1IOO3NNL/9A7yOYXGrj4kJNSCjNthJ9S3kXvvvp/2znUcW5yh1xvmHW/exvhEBrs3wq7H72dV01oeOHCSjPMEfruTK859HTf+/FGmHt5D5wf+AofTwuDEJDNRNy5LHq/bybqeVn768zsYm04TXYxSLBboXNlDY9DEQ/OT+LwOfDU+JsbmcVgN/h975x2vR1Xn//fMPL33cnvPvek9IYGEAAFBmihYF8VddRcXrIjo+lvXtWBDigUFEVkQUFSE0AmBhPTec3N7v/fpvc/M748ERSVAyA3E3bxfr+f15DnPzJkzMydznvO5n/P9quYie3btRG92Mm1KCzp9hlIhhWCUEUiQSxX4/m2/IeB1MH3aNKwGE5VEJzkmWL12C9t2dXLdv/4bdY0tqKhUyjJ6rUT/oT7KWRmnUUd1fR1joTAWgw2D+Uh4jNHxQfYf6mfGrFmsWbubrZueJlfK8/tHn2U0FOG73/osEyMhVBl27z1EJJ7G7XbitGqQanzMmtrChz91KcsXnsGUKVkEQSQ0PsH553wUgxaywQhGXZ6B0X7CoUOEI8OYRQWDoxGnp4IkOogkY6BW0Gh1KKrMxz53E7/81o3ktCbyuRwNrS7mTWunvamRdDqDokJNwMUzD9/HQHiETLJMQ2sHpVwci93CqvUvMjIQZcWSudT76tFZVVRRhYqIqpGx18JIOkY2kqau2k+iGEWrNTNrVgtmm5HRUSdKWcCkK5PMdTOnahFqYCk7ugfQCAIOi50NG3aw+8AwW7dvB1Xh7Dnd6U0AACAASURBVEsWYq52Ya4IZPJZ7FIrMxcY2L6hH00uzvduv4764DIOD0Twe1xc8p6rOXhoGGMxj6xUaAjWoNVDJlag3uvDrjUhohKwuCiEckxva2bjti0oZajIoPdL5HIFhkbGkDQSeqMFnV4glMxT1EiYBRNj0TEWz5lO92gcs8mM12ahUiqioYwsK5QUgXRJpkbOIupEFFVHKRFD1BvJ5kvoRBW0WrKFLIf7BmipqsbtMmKULZhsdlKJJFNbWkjlMghKmWQ2QzQUJlNQEUQtRoNESVVJpQoUiyVqqlzIElSKOSwWO1qtHo9LoFSuIJdlzEYzSiVFOl0ikx7H4TBhM0iYdE6SqQyKXEEURCpykVS2jNVqwGIyUqqIWG0u3C4XxZJAvlDC7fFh1Onxuw30dg9TVARmtDQRiaaw6iTSJg167ZH5e7XejsagohFV1u3bTyaVor4lTTgcZu2mR6lud1PMFJGzJba+uAWDYiJZjOH0NvKdT32Qhx/+PXfdvYoV509H0h5bDjqlhSIUhZ6JDM3+E49nc3yHVXEvuu5I1qkTiDMU2XgrnkXXsb0vzryjIsBkEHvhv3At/Mvys8FIjlkXfunIlxod0fU/fFPLwN4KoiggIuCz6blhRQs3rLjxDfdRFBWVIzGPXFfdDf270Zxg++ov+H8A7Pn9V/jqU4d4/Cf3E1z68l820Oj4wOc+yh1XTJ/UrGHlypEA2p86o/GE6pEVFc/i60FV/25J44kKOs6LfgDRIR6+9yYW1btpuOTb7BlMMqt+8txKpznNqcLOg4Pv2LFP1JXz6npOlqvo1fW+E2LDZLmVJoPXqvdUF14mq4+9Ud0n6xineW1OC39vL+VSkaG+GC1NVtLZHKVwH30GO3v7e9EIFmqqRZLJAka9malTmukdSNJU5SediTE8FsZudWI0aZAsZpwOOxe3NCArZQ52dlMbaKWslmhqq0KtaMnnFIR0mcWzZzDQF2b+ikXkCkX6+/oZOfACj67ZzqzZC9m952FkuQxlkcGilmUz23hi+3bKZQmH2YjHKZKpaDnnoosxm4wkI30kMi00SF6e3bCOFeeeTSGf5+W1D7NiYTvFksy6gf14w2AK1LJ6+3ouv+Ratm58iaaZZmbO/QBnnXMNn/qXj5GLFQnJCUxijo6OeRjNzWzdto5p05agNzpIJXo57+wFKHKZBx/6HUK5xODgABeeOw9Zb2BwJEY0ncNi0xGP5PG43aiCyKKFi/nZnfdx1ZVn88CfHkcuqyhFmZGRCNd8qAWNTiKdTTEWnqA3PYAoyqx+YRX17WcyNjbO0hYjDq+bcq5MIduPXEnQubMbRbIxbelUIhM7UVU9A929dLTVM3taK/s2b0CLlis/9CmKxTIvr11PPlXEoAVVVLn/179ElaCq1cmTj/+OlikzmDVzJhMDOcJtMj+9+wGWLF2I22EnmYgRT2XJ5QT6olmiEwW0igO3x0c5HyabyTJ1mpdkKkm5UqZmajPRwTB6rZ7H/ufnmHUaTHY7GY0WjahhOFRh+SIvQZ8PBQGrzcqM9gau//qPufI9l6GRRGy+AN0xkU++9xuYTEa2PXc/RXOBngMhvM12mnxVrHpmHStWLqImWMOLwnqMOgmbIJPJVvDaTMTT1fgDRkKRJFaXgJSC2375Cy5595U01DYyPHiY3z78JP2hBHJJxhwwUskrLJwzk3gmh6wWcPtqCSUiDIZimCQDdoeJusbF2G0WhkdDDHd3sXLFmSxffi7PP/sEBqOFXDHL1m1jtDRWUbJacdhdVJQsRUXAZNQh5yKIAR0WRxln2UIymaO6uZaDXQdRFYEql42pdbX0DA5il1QKpTzT29vJFSQKqSQ6oxGXzc6jL77IrLYmNDo9mw50snJeB7tGkzRarUTCCfb297N87hysFgOdoX68ZicIAn6bFbPNSSyRosou0T00QmtLI8V8Ba/HRSSSpipQx55dQ/TEehgLpylXVL74qQ9SHXSx73AIp8VGKhfHZLAxMjGOoujxOfWMhJN4gz5sBgmrQcdoNE6N30kqW6FvZByrxYpOryOdTpDKpElnc+g0EvV1sxgdi1GpQDQaJppMYjVZcLkcjIXGSCVTnL14LoJGQUBFVmB6i5fB8RRN1R7iiRLZrIys6gilklxwzgI2bN9FxaDBpBX5yc9vYrg3iskk0ehrJpQukyyVgDI1fh9Tpy1AkUWuufqjjA4NE4+V0OtOIOuZIAj3ABcDIVVVpx8tcwEPAw1AP3CVqqpx4cgM9zbgIiAHfExV1R1H9/ko8EoQnG+qqvrrN3yyCwLzP/h94i/81xtuOpm4F10H8KYDRh8L6Ug0aM676muT+mNAEAQwO/AsuxHTlDnk9qwH4NDzP5jUuDmTxatFq6/9+wr++4u70UgnKGQVMiAI1LpN3PeRufCRuaiqSn84x9yrvgP5NA997xc89D2OuJj0Zh648zO8qyNwQiKa7/zJ6Yueo31sxxPfnVQhy7n0BigXiGy6/c8uuPCzX8N74c2MPXEjBu3bH9PpNP/7eUfHiXeIyZrovTpT0cmaNJ5MseFkMFlOq2Pdo1fXPVkOq2PVP1n1nAx30t/W+78tntNpTi3eyXFCVhTGUllMgyrZcpjf/mEV88+ditNqI9Bqp6KzkTswjs2sxWSy8LGLLmA4HOW+R5/l3SumMRaKY5AMaLQKgpzHbAqyY28f2UwRSS3R0BygsyeC1+ombzAgl7KUymV8bfOQJIH4SCdjiX5crlauvPLDmIxG6jxlNuw9SHQkTdf+LVg7aihrioiSAIKL1poAy85dzi233Mi0tsW0TZtHOpFFX63D5hPJZrPEB3bTOreKWCTOzq1RtHYHalUerUGlfXYdrc1NXLzyDL59501c+G4XhXyZiy67nL17XsBjtmLwm0AUkSQLbe1LKBVkOjv34PfamDGtjft/cz8ei8jh3kG6+0Y50BVgWkcrU9tr6D88xNbODGoZGvR29nYdxuX3s/y899IzlKKtdikz587ihW33078thM1qZGA0yeHOEZpaHBjNWso2E83VAVY/vwpbncJPH0zS0uGEnJW2BheUZXJiFjN6eg/34fJXYTRp0Eswva2JnoFRnl3zFMViibbmGtasWc3aZ38Lgh5JMlA2VqiMlFBL4PFaiAwOYHU30D2wBrdNJRdLotO7GR2NoJcrhJO7KAkqE6MSoKJXFRKVMqHQOF6nh47GBmyWWjw+kWSqn56JCCunzuTwBAjCBNOr2ghlClQ0KpVCiYiq8o0fP0BPzyHu+u7XCHhc3Hbnb1l6xhxqGtuJxtOs2v0QXkMbGo0GRVYpaCoIKvSNDyJpPOzf34lWpyeeCJPOpnHbbcRyaWbWNiCURHrHXJiMRlY/v5FAwEAknmbLxjHsdheHDu4n6JDRWkw02Brpz+7A0eAmN5zC3+akq/MQi+cuYGd/H7mRFBWDgl4W0VcZaZ2ynEKxRDITolzpQrbI3P2bH7N0xjKiYwuYCHeybvsels3soHegG5/LRzRfwGo1E5oYZG77EvomhjAoEpLFgTajoAgC4+ERKoqKzaonnU/RF47hc5oZjyTQ6w3kCwoUckhaDUpFYG93F0G3k6ZaD2pJwGa2UVI0eEQBmwFMfhttDYsoVXTs7x3AYzRTlmUMog5VoyOVTqCRS7iddej0JQ6OhahUVEaGJzDojEhqmeFYEpfJw4xFDTy/eS9d+/bxzdu3cvl5ixiWdaiyzIGeURqaPLy8eRdBn59QNIzT46C5oZ6x4TH2HOxBEiTOWNTO2MQQgurFrHooFNMUinl0EpTLMqVSimIxytBIBEGFRCpGwB+gp68brQZ83gDPrluPy+pGq9WSzBWxGks4AzbSoRSyqKWUz+OwGonlcjzx3C58ATdLFjcz3D+GSVIwG+yYDVrimRxWg5FKSaGSz2G02XjkwV8zo+UyVi5wo5Tj6F2vn0X9zTiK7gV+DNz3qrIvA6tVVb1ZEIQvH/18I3Ah0Hr0tQj4GbDo6EDwn8B8jiQz2y4IwmOqqsZf98iiBJnY2xZM9+WuCJd86OsgCEQ3HTtV3PEQ23w7roXX4Xz3D4k/MTnLlQDQmSCbILd3A4s++kGe/velk1f3SeS///NekDQndD9VVT2ytM3i+qtyQRBo9JmJv/jNv9p2KJpn1lXf5cPXfPsvEdIFAaweBld9Bavx2Erq35GOQs20t9z2XLFC9ZmfRWyZR/TBa95yPX+Lqqq4Fn/2iAtu8+1/dX01ksjYqhsJXvIDYk996fQStNOcDO7lnRonePuXFU22G+BkLkE77Vz4e17rWhwrU9Q7dd1O1n17o3rfiSV6p/k/w728Q+OEIIjkk0Vs09vo2T+I1gydu3ooZXR84+Zvc/cdt6C32lDVHLNmtDNwYIi9oVGamzx4q5uobzRQzmXYsns/rU3VOPQaPE4HzQ1BREkgkcwQ8NQTmQhjsVuoapyKIEo01AVoD9ppcrWycVcJu6cKQdKxes1TuAWY39bOS6ldNFcF2N81hstvpVyo8M/vfh9Oq4vf//RHHNgzwXvOsmFRI9iCQVIFhbNmLaWzb8+RALoaH89s6+Tgjk6+eP1H2DHcw/yWabicdh5/5GZ+GtZgMzu5+bavsmXDZlq91dgcGrwBMwf7QsyZYcDhdONwuEjFJ6gOWhns3MKVH/gwC+ZPo6M9QEbbRiXew95DhygreShb+PwXvsL1X/g3IukIh1NRRifSKJKBhfOm4/E6sFicVOQKf3o2hVJRSBdzVPJ56uv8uCxmkvE8iWgBjVnH9df/G9t3HmRGg4rBqKdSKqMKKtHhLYTKGR761SrC0SQfef+7uOSyZfir/VQ31DM0MEitywtWF9+7+TssXDCXusZ2Bnv2Iui1pDMlvG1mylmBnKIwr62RoMVJMSuhE+1MaZ/FmpfXsmz5Evoe/SXFKX7C2SyVihOtBI5qC86gnonREBopja4cRadtpLtziO7DPcycvYKKClM9GkTFz9reLWi1OiRBIdSvUNcsIyglzj17Eb995jkyhTw5a4VzzpjKSDxNPptnyZT3IGpUdEUZrcNEvJBmeGeefLZE72ACh0vH4MgY5y2aRSiXZzwco5wtQHAhw7ES0zvq6N7/EoIuTaasssI2m9E6Kz5vFQbbMEWzA1GWGZsYxOwyIFQUzAETfm+A557YhdPjxayo+Fr9PPSrh1h52eXUVs1CqzMyPLyZFx59kbMum0s+VaRrqI8H7nmUqz/xWVpMFfZ1D7KtZ5BGn4uBkRhT2xoZngjhsDvZfHAPxZJMpSxhMutpaHXTkJTZNxTB7/SgcUpkpBzjI6P0pZPUVzXRPTyMwx5jdvtURvvAYtSSzRQQdQae336YBpcDr81KOFqiqcbB9u4J0uk0WoOOGXV1VHtcR1w4ZZWiqjK1voWD/b3MaAzQOxInWSljM+gomPVEU0kKuThi0YhRC2atm12DGbx2L4+v24vbFeTpdbsJ+H1kMznmd3Swfvt2yrJMvpClsboRk6Sl1evjmefXIVl0yGmZTVsO4fW4GB2PYzGVcDoDWPUGRkIj6HUCBhFaZ1g41N2F12Enmy+jEYtksynyxRyxZJRar5/Q+BBlVUBn05NJiuzb24fT4sFhNZB3qPSlQngbPcQmkmgFkdHOGC6nh0g6RU21m3h0DKtFh94oYjXaGQpJmAwGnI489dPK/Gbj73DXevC6ZqOoh4/57HxDK4OqqmuBvw2HfRnwioL/a+DyV5Xfpx5hE+AQBCEIXAA8p6pq7OjD/DngDaMQz2wNAhDNvInMXSeI86IfHBGJgOim2ydt6ZYgCDzyP1+DUN+fM36dCIqiHomdFB89InZoDf8wIhEA2QRS0+wTqiJ2tD9sfOCGN9xWEATqPCbiL/wX8S13EN18B+/69MfAYIF0hLplnzvy1/yF11H18d8wEssf8z69Uj780Cfecturz/wsiNLJEYmA+KZbX1MIMugk/nT7x3n24MSk9MPTnObVvJPjxNvNyRReJlMs+kdzEZ0sjicL3atfr/CK2+uV12Qf97V4p0SiV8pPO4tOczJ4R8cJRUGUoH8kSiKk8pF3X8Kn//kG7r//Xh749a+ZiOZJJiuI2iZueeBh6gMiTz/+HJ+5/jtMaZvC2WeeyfSGNjSCyt5DfWzYuQebUYvHaEJf0lBJ58jmStjcdpw2CzqDgaamGqZP7+DQoV3c8pNHmNrexMjAVjZv3kxkYAyH20I4UqTD6yFVUHC6bPiw0hSoYWBoC89texJBqPDC2mf4+o/u5oc/+xXheBJVlCgVZVRRw1A0we7NB7lw6UW43QHCWSOhA2mkskw2m2BoKIxHn2BgsA9jTmVm20xUi0gqC5e955+YN/dd7Np5kIHRYRRVZcGcWRw6vImUroX65plsWH8Ak7sao3qAmuaaI26R0Tifv/E/+OI3fo7oKZFXtKw871ymTm1l6cKF5CsqI2NRspk0f3zpFsI9eUwuLZ1DE+iMWvK5DJFIHINeR7XXwr7uASoVhWgszYpli1g0dyZLFs5m9vQOlLKMklZx2m2YTEbWrt+FXC5itNqJxlIMbN9PQTkSyHiwv5NHHvoNqVAvImXQStRWV9FQ14BPb6Hcl6V7MEp/T4RELINOr2fjhnW894qVuGwWHEYd2XKZqXWNDG15Ab8hj8vmQMVEfU0j7dNaiApxtu15nKFDm8nGhrFbTJhtViqKSkGxM6fxfBa0vIulsy7hyg98kIbGWoJ1HlLlFCN9IeSKmel11by8axBUaKgycXDjE3R3rkXjtPLwUz/HJBq46ILzMOqNrFg+F41zFtVNZ7Hq5XE2rOlEyeqYCOfoG8lQLlfYtvNRCkYZDXaapgR5pncf81aez81fvYbtazbRVLscpZAn3KfgcrqRDBpi3Ul2r+7k/Z/4LI888DjPvbiLH//oQa699ks01S8ARF5e/TsiiTwam4aRQTuHhgdIpKIIBpl8KsQZ519BS3MzNrONsXiGRDLG8NgYDbUNaNCiFQVagg7OO2MqDVVuhrqTBOwWbAYLOrsebcmILW/CpgW304eq5Fi5eBH1XhfFdJpajwOTpLJ4RjM1nlq0qsjevgHGslDlMfHslm4GQuNYDG5MejP7hsfpHhqhbyyK22FAJ6qMhXvJyQrxgozGoOAz2ymVVSyVIhpRwGa3U+1yUFvTgqSRMEsarDYri2fNx6AX0Eki7qCJmfPb8bbZqWutY0rrFDw+LyarFlWvsKOnC1UVMDvN2NtMyKpIJJ5AFTRYbW4SmQRFucgF7+qgub2anqExUrESVTV+ZAQ++v4VNDV7cQdMyGUBo9ZAWZbQ6TXkskmSBYFY2URdoB6Hw8bhwSFaDRZaXU2YMgpWyUApnSaXy7G/Z5RKTiGZjFBRVCYSGSYiOULRPCathNXkQG8wMDy6mxqvGaMhR2Otn3wuf8xH51td8+JXVXUM4Oi772h5NTD0qu2Gj5Ydq/x1kQQBJC2tF37tpE5unZfcCuF+0JuIbblj0uP7nNvuB8C16Pq3XIeqqjiX3XRkWZyqcNUNn+TLN18PpTzF8rGjlZ+KVDcGTmj/D927DYApweOPXSWKAg9+bD7xtd8hvuUOYlvu4Od33QiSlvzeDUy/4IYjDrAzPk9vKPtX/c51+ZEf0Wb9Wwvt5Vx2EwCxTbe+pf2PhWvR9SBKxDff9rrbLWvz8rl7d1AoH8mGdlowOs1J5m0ZJ+Z01AFvX0BkODnCy2RN0l8taPyjTvxPBVfLWxWOJuP+vXL8yeTN1vtOX/fT/J/jbRknSpUKg2OjPPKHRzj3gnfRFdZx1y//h1vu/g4//t5/0dDSgaTR0n1oD+9bchblQolf3P0b5s5oYEpjFX6PiR2H92OzWohE44yOh9i5ey8VBLLlCt5AALfBSktVC5LWjN9px6pT2bfpSbYOjFHduoi9e3Zw+PAQw4e68PjsJHIC4+kkOdVCvlzmkis+TiitcOBADzZvCzOa5zB33hksP+scRC24HQ76erczONzJ4fEyw4NxiukUVq+ezsPDXHjBu7j7jju5+pprKIseXFY/n7rmKrweC/Onu6moVkbHorQ3zeDssy/nyad3ACKtLX7y+SLFUolde7px2r107d5IS9sMZi86k96uTmyGapSKnnxBwzX/dDV2mw1ZVvnch7+MUizw/LNbKZVE0tkiy89cgs1uY2T4Bcb3JPHU2fBUOZCLZWLRJB1N1dhdNnQGlYl4lmIuy6y6IsVygXw2S1muICuQyeWoCvhRTQLlcpm6Ki+KLFOUylS7HciKQtygIVvKo1MqvO/9/8Rll16OyWTBZHGhEyQUFKa3zGI8VmRgJMKhQ2P0j6foGYoiaiQCVQ1kM1qsNiPbBC9+t4t8vkDd4ss57/LLWbF8JVU+PwarmTWr1xMZjpAdyzI6EcFusTI0GiIW3UJrcx02KUxdtY1yuUQmU2Z4PIZGq6NtyjLmN52JrdaLzlZm98AA0zoWYjAYODS4H0lv4qknNvGJD78Hvayhxl3Nle/5INOntCKWYMnC+SxYPB+72crAcD/haIYZ0xaCqqIVh2mqq6dcKHP1J65FzpewGRUev+enXPWRy9G7q5CLOzFYRKYurKLJU0dmMM+U2XNZ8/IGXFYXyaTCeO8w77v6Ymoap9LRVkcqPYizajp2Y4VsuZkLL70Uq6sB0WamfmYVo8JezFYL85a+m4ULZmIxGjAatQyHxxgYDdHcUEdTbZD2+ipk2Yhbb8RuFBiNZgk6tdTb7QhKiXQiSypXwuQ04rLaODzQQwkLWm0Fi85IKlskmq7g8nhoa6jDZjGiM1aYyMq43GZaattIl8tYJT1tPhclRUdzwMtQXCaeTtIfKVHjcxFO5ogmBDQ6HQZFQJQNCBoJm97EojnTWDKnHjQSixY2kvBE8E7Xkk5E0Uh6qvU+yvEKe7b3oROhVJIoyQq+YDXOKhs6u45Aix+LR4fe5GDKuY14Zrmx2QPoBBm1ohD0W3A47LS1VOOrtRKNFpk6tQaNRodkUnDZjSyc18hZZ7WSzOSQtBIKEjOqqynnS2hFFYPFjCqX8btsiKJAJZUgkcigFUT0NheoUO+w4XRaUSsVSoUSTqMNu9GGoChY9Bp8jjLBgBWXw0Iqa+bw/hLrnvojknACMYqOk9dSWNTXKf/7CgThk8AnAWrr6hg7+H2CSz/DfzzVybcuap+8lsJfBYGObp58gejVjG+4jcCSz/w5APXx4Dz3vyAVBuA9n/8X7vngXxw5N0saAks+c0JBt99unr9xxQntv+X+34IgTMr5CoLAVbNruWrjLX8uK5Rkgpf+gHkXf/kvS9V0RijloW76WzpO13gG8mkimyfvPuVLMlVLPwPBNuKPvTkRcsc3L0DliPCoICAe/W/4j9J3TvO/gkkfJ+I9Jzd72Nu1fOtElqAdy0H0dsRAOhWZ7P5wrDhHJ8MF9k6JRH+7z/+l/nKaU45JHSc0Gom29npKpRgvvfQi55zdAdrDxHJh7vzRN0gmK5TLJerq23j5wARtC5ex5aWf8FiqxHsvu5I/Pf0kOo+BoT0RBDTo9CLTOxoJ+j24vDn0koM+Sw6dycx5ZzTRPTTG2FAnv129nlt++EscNjPf/M8vYDS7yZgiNLcvwCQWmDV3MZl0BllVKJdy2AxWOprbSe7oZlyO8mJsgOA0E1LCgF4DMzrqcDpbiGdlqmasoPv5Pg52HebGf72KnoERlr/rbARAbzCxZsNzlHLQO1wgHhsgEGyltq6FZEJBI47jcXjQGccwGY0cHBmmTddIWRT50Ac+yUDkP4hOxKgUk9TWdjA4EqGuppne4QQYagkG3Kx66NscHOhEEBWefOw2JEkiXchRX+fFarfSEKynKtDK/CYDGkGDx+7A53CxZu16kEXiPVn8DiMdDT4+8//uQtUI9Izr6O+O09DhR1ZlEmICnVHH9Z/5NOPhcR595FGMspN8UcakUSCfxGI2MKWxBqPVzKqXnsdrt4CgUFE15MoFaqtquO6mr/PcY8+CUGF6hw2bxcHQoA2XvwZRlJgIxdGUo2x5WcvBXVtp7pjNru5FVPKDLDtzJk8/swG90YTDHiRdFJk+t4NoNInRaGTtuh1Ma7+QaDLEY0+t5YJLl1IRVbL5LLmsRGvDSvqH89TXzqdcLtHSaCOdzGKxmikqBa5691VU6yXKqoZEMcVESGD2/Jlc/W9fxGqJkZnYQVPrAvwrFuEKeKh2apiIFVDkBMP9fTy87SCf/sK3uOnzn+D8SxdRKRnIF7N87ONX8cQfXiISSlIRRAqlBKIk4W7UkCn0c9X7P8C1N16Ht83I9f/8n9T5Azz4p8eIDOwi0ObFY3EwOubmxi9/iLvu/AkVVxyn1cWVK7/AwZ6nCUcjXHTOGeyrD+I0uXjs2WfIFwpU+SKY9Q0YtQFGkhnGc13s2z3EWTOnEPR4mEjE0er16LUqWpOJxqoA2yYO0zZrLtu2d3OW14NeZ8RktlIYHiOXTLFl3y5mtk3DYnIyxeeiiJ6clKLWZWVRi49nthzEoLXTGrQRLYDPIlAxuJhSb6RYUognE6TyRcYiYcwmHTajAZNopLNngK17dqPICpIksHY9NNR4ccx2MWvONA4d7CEnCDy7biMmo44rLlmOodlMriiDoYQcM9CbGELSKjS2eqhTPRhKFp7cvY1ZZ/pB1iGHo3RbRNoVI3UBka7uHrRShaef3IXNYqRSqpAuS6gYqa81YRQ8aGx+xge6iGbzjIz1ki0F8XqC5DIZXE4L3RMp8rkSdosJSZUYnJjA5/SAXoPdZCesSaCx6JHlHF67he1dXTTVNGBOSpTKsO7FPUTDGcyWIDqrB42u75gP4rfqKJo4agHl6HvoaPkwUPuq7WqA0dcp/ztUVf2FqqrzVVWd7/V4MegkECV++vWfTJoDQlZUnEu+cEQkEiXiW3/8pkUiVf2LE0NVVRTlzbVJrz1yHp7Fb95VVK4oR37g7a6f5wAAIABJREFUpcJQN5341h//lUgEENv4IwBcF3znTdf7TjEUzQHgsuhOrCJFBpN9Elr02hh0EvGnb/zzUrXuF36IUNsBwMTDn3xLdS689CYQhOMWCY+FrKhUnflZ0OjetEgEoNWIaCUBURB4dVPebD8+zWmOg7dtnHiFkyEWvRMxfo73PN5omdnpCf/kcyzH0SvfnSq8lf57KrX/fzOnrzPwNo0TZqOe1c88SzYrE48maKyrQxINmAwG1g33UijEcbs8IIi4PHb279hOVetZFCtwuHsAg8GMWIFiIQ+ihnJJYmwsj1yWSZedjGVFGltaqQ2aSOdy1FX5Wb1tPz/64T24bSZ6Nz1BPBlDKIs43AGKeT1Llq/EZNJTLsdoaahCVWDZ8uWImjy/37+TVT29iAYDoqzH5ZzOmRd+hAf/8CSH9+7AoDMwFI5wwZJL+ejFl7Fx13r8Lhurn1jD+Mh2CoU8/YcH6emN4HJ5WXnOxdjtfuobmrCYzdTW1dLVu55IIsf+sWE0EnR3b6EiV9h7oJfGhqmMTuyiUh5n8/Z+Vj39HL4aHxdfvJKFS+dy/lUX8KN7v84v7/keH7h8MQGXlWCwAZPeiNNkodoTIJ/PsXhWHWatkSqPF7vFTrlUQS/pyUczGPVm/LYA/f0RptbWYtZLKEktcq7E3k2deCUjg4MRHIKXdCxETbCKb37ri1SUEoWilYoiMxFLs/9AF/etWsemTfuoCdZgNhgo5HJoJYlcNsvhAzspFyucc+H5eOsawKBBpwOX2w5aLS6HnUx8hOFIGUGGoMdBdU0VT/z+Xp5/djVOh5tkKopR1ZCKxRgZHObAgQOoap5nVj3MgjNmIeb7efqFfVjstUwMZxjrGcGlN1PtMbHuxRfIlDqpDngoFTPYLRbGkwrVfjdCFl5a+xxarYaKoDJWiBHNh3A3W3nskZ/z7Vvv5ZYfP8DQ8Ag7Nj7F0L7V7D3YjaSWKaV7yOQELnvv1cybPZ3vfP8ekukcmiaJFcumsvrRdZy5dA4mhweSMlarFa3ZiNFiZtasdmbMnsva5x9jyeJlDPaHuP1n99G3axPt9TU8/sCL/OyO39HoT7Br0+PYG8t47U4SmQxPPXEPakgkk82SyBYxqHkEvYDXaaPW76VQ1lDtsyDpoHFKLStmLcDosmAPuAhnSoxE0+RKRXSSnonYBDtCfdQ4qxgeCOMJujFZ7aSKFYZDcRqDPoxmI4umttA3NoTf42F3V5hcKoOg83Cgv4twPItWLLOjf4SiImHWSSSyecx6iURKZnQ0hsVgxma2smR2IwGPlWShwNyZjSgCiBoRq9WKoqrIqorVZiVfLiBoRRxGJ/V1Hs47eyWL5p1BUaohlDMTLxipyFW86/L3Mc89g2n1c0kPqozFiqhSiaw+TUlNYZZU1IKErkthaNxORRUpl3X09sbxO10smDWPvQcL1AVdtNY70Ov0GK12svEQMgKxeAafJ4BakdGqWRZ1NOG1edHoLZitJiplmMhkqfUFSGdTpMuwvaeP8UiaZCKFJIlkKnksBh2pbAK304DTYKUh2EpTfQ0Br51KNodcrhzzAf1WHUWPAR8Fbj76/qdXlf+7IAgPcST4XFJV1TFBEJ4Bvi0Iwis54s8HbnqzBzv7Xz7Ei3fdT6ZQOb7Aw69CVVV+uaWfG6675YhLRBAYXncrZsPxXYJXOy+O/FslU6hg1ktv6MqIb77tyF92z/wS8Ze/d8ztFEXFfTR1OpKG6IYfHVPIEgQBtHqIj6Io6kl1RZ0oM6/4FsAJiSXyUUFj5JmvT0aT3hBRFHBb9YQe+BjexTvQad6itqqqjG14/aVhb5amf/8D8c0vcN+vvsIl06uOa19JFFAU/q6fKEdFz1O5/5zmH463dZyYzIDQ72RA4+NxAB1vHKJ/BJfIZIp9b/d9gxNv/8nIbvZW6jzV+8lp/tfwtowTFVmho8lHPCORTMYYH41x1SUf5eFHf46lJBGsCdA/dpCvXn8D/7PuAQ4NQuuMGSyacxZjY71oNRoEWY/TFaQ+4EOSdOjddcSwY3e68VoEHlxzH2JeQzKWoLHdTzqeQc2X2LzleXbs24OoKHzqs1+hr3svPp+H51evor9ngqGxIR5OP8a7Vy5E0FXROziOwaElVypy53f/yODQGHV11VQqFZT8EHqrzMTgLhbMn8HOvTE6IxNkM1mee2k9Da1ODEYjW7e+wJnnfxivtsjhkSwbt2xg2TnnMNq/i3BkgEy+l1IFVj39AplwkU//23uxubQYdDq6DvdikB1IlWqShWGyhTgeX5CHH/odS86exh9+/gMuO385eq0WV5OT/T1DOFuDDHWPoaBl66HDOEdDzJo+hVghyZYNe4lpUrTa/BQqAvv2DdLkduMyGolkYridQdKyhFE0kMxkCTrtdI+meO75zdhNWmIZGZde4bNf/H+E4wluvfnbnH2uD1lWOHBoPa5mPcW0TMCUobGumlAkRTyZIpGewN+0jFTJgZSNEEkepMMuYXB6kMtlFi9ZznBkmAWzOvjNQ6tp6ZjH9o0vks2VmB9UWbLkX9iwcQvrNm/mQFc/EmBSdNiMWtx+P4l4mkVzm5ndfh4HutZhMlopFrN0HRzFarWj1U7Q3VdCBIbXdPL+D9bisucQlATNVWYUpcSMmeeSzyYZ3PoCC5edSWjXejav38W8GQ20N85k1hmXY7fbePiPT3JgcAyvtxZVVamqqaFgKjJY2MuZZ51DddDH/X/4FVaHncxAnOGxCKotyEsbu7jgopmseWEfeoOOZZdOp7GhDa1Roq7GjMsxj3gyzUBPN8lIiBlVLjSmGi659H143E6GMocp5iaw28yUy0Wm1jewaU0/EyNdOAI+9u09hNut4Rd3P8hlK5fQPzxG30AfP+vuJFss09pUg0YWcNitlLIKiXSC5fNm8OL2g0xvrUbvsTPaPYxRMjO93sfUSpnxZJZcNkd7QxVPb9qJyWTD7nIzb0oLY6EEbo+Pkpwhm0+TK4qgtzEwESOdTSFpBdqrPSydNYuDA4Mk0iEkmx21rLB8fjs/ffhJGmt8CIKOvT1hWuqC7O/OUyjkEVUBQYRIOEUmW6AoFjBIIulsit17t6DR62nTmfAHq1AFiVw+zy3f/SFej42uvi7kfJ6aM2bw5LqtKLLK9i29XH31bCbKOaKZYRbMqUUpVWhq8HLoYA9zOxoxuHW4jA5C4TLdoyPYDXbUQglB1SCqElNaazjYO4LbYqLW5WXe/Pk8+PjTFLJpbEYzBocNryiTLxWwGgQM+gKNPj9CQCScnMBsMhO0mihUgoxHJnh66w5q3E5mTJtO70CekXwcl82NXnPsjNhvOOsVBOFBYCMwRRCEYUEQ/vnoA32lIAhdwMqjnwGeBHqBbuAu4FoAVVVjwH8DW4++vnG07E3xu48vAEGk7twvH5erqCIrzPnaMziX3YRr4XXc8O8/BEnLoed/QHzLHcctEr0WgiAg8BcB4w1xVUMxd8yvne+982gcIpXbf3YD8U23vuHkPbzu+wC4l05iVrWTQS55wlX8x9OdABh1b2+ad++Kr4K34S3tu73vSDKOyUhNf/0f9xHf/AIYrcctEr3Ca/UnSRR4Rec8HbvoNMfLqTBOvMKJLN3627gzr+UWORX42zhEb6aNp+J5nCzeqZhMp1IsqNPZ7k5zqvFOjhNajUQ+VaFSLKE3mNi2dTd+jwelIhLwBsiqWRzuIL9+7mHMegcGo4HR4QH0Vh8uXytqUSUUK9DU3I6ssZFR9Dz3zCrqqqo53LORF3Y/T3PAjcveQt/BUeq8Qc49ewZ3/eonbNm8hf7Rfpob2hDkJI0NDfzujw+ze98QOVRQBQRVQGuQGBwfQrGXKasFijGVn/3kVqoCfsbHQ1z72fcQS/aQTkS597erGBkXsNuMXPtPn8NvMVBXq+OspTPp6jyIIBdZv34Haex0dfdQ5XURH9uNyS4QCWV4edMO1q3bjcXcRDqV5q5f/5EtT607ukQnx8HefmZMr+ecZYsRVQVZ1lA0juGU8uhrpyMIVditdmL5IgajSD4jozca0Rn01Na5aWr04vXrKBZzjIyHmV1Vj8lmZf7iOcycMoNYLkc0k0IURERnHq/XR0NNFblCBb8riFo0k4hWkItaxGyckego2lKE+HA/DocVvVaHIAh0nL0Em97J8uUfYu2Obp54eTtJuQSChCSZCbj1uD1ORL2WuoZlJMQm0tEKa9ZsJZEtosoa9ncOEjD70IlF6hrb8Fc3sicyhp5DuCwxhofDpFMpMvkcGq0es9WCDgWlkEFRwaTX0rcvBIUwI6OdpDJZ3NVOXFo955x3AWedcx6LlpxNOBrn5dVrSRc0ZLM5krkeCuUe1r78CLLTyZaeXSxvXUydbyof+tg3qWmcwVd++CksZjPXfPgqvC4XaqWETqPBqC3iqZ/HtI65eL0eFFlGUcLoswI+vY4sEmYxzVnLzuPgoSGeef45/vvmO4gPRlGKJWbVLmb2tBUk0zlK5Qpuo4zHa8NQ3UYslSHg95HIdbNvWw/rV2+lwePGZLRiEk0sWXI+NX4LP/3xHTz00P/ws5/cR+OUmShaEZPNiiQBooTVZGBkeIKe0TEaHD4O9Q4xHomx63A3ilphaDyOpSLRVOskl06TLwvsGRxncKIPl9NJfyiO21NFdaAGgwBSpcBQaJRyMcvOzn7MegMmq5FEJovP78JgNNPoDRBOFnlpXxcFWSKczhyJZVVS6OwdxO0101wVQGfUUykmqVRUvN4qZk2fg8ls410rzsLldmIx6SiqInljnrVrt2KxGKjz+bBodWg0GswmA5ViiYTkQ1BE/DYPAVeQxGCciVAKm8WIz+9FlURSiRQtbR7KFRVJq5ItZrni4uU0T2kiYPNQLioIkoTeoMdmkSjKRcoUsJgs9PYPHREdRZV0AbLFDGZBwG82YjaI2MwaJMoUijIWs53h0RAqZTK5JCZRg9Oso3M0hJpK4tCoRKNRXHXVNLT5qa+qoq2jFX3Qgvo6Hpw3VEpUVf3gMb469zW2VYFPH6Oee4B73uh4r4VGEule/X1aVnyen23o49qlTa9VP5t7Y1z44f8G+W8sVIIAwTaij153UhwTRp1EKFUk4DC84bbxZ27CuegzOJfeQHz99/9cfu6P1rLjN7898sHfTHzV59708TWSSHjT7XgXX4/zvXcS//2/Hvc5vG2IJyaW3Pn1nwDvQEydfJrwmm+9pV3Pe///Q2iee8JNcC48IiBuW3Uzzf7jD+T9RrxyTU/HKzrN8XIqjBPw5l1Fr7fNqTCxfj1X0Ym6RP4RXEX/yLzVazvZbrjT9/g0pxrv5DihIjGlqZG+iSiLzlhAqVJm1/4uPv7Bf+WB++4hn87hC7o5+4xlNDTWMx7Nc/hwP4PDo+zetQ+/20IonaK1pZVUfJB0OEw2E+XQoTUM9Iew6oOkdRLVtTVccMVH2L7tJcKjGUYjSXyNZgx2Fbe1HlmWUZEpl53MXzwTvd5ApZzl4M717Nk3htdppzm4iNFDj6FWwGGP8KNb7+KKK94NItgtVu6++ylqqz1kIz2Y3S08+sQ6DPZGctFBamoaOTxYJqOWKJVy9PX3AxM4HU62HdjP1LYpSFqBoNdByRPEbvdyyZUfJh4a5lAyhbNvI339MUpFDWeetZhHfv8LxsZjLF+yEKe9lqc2xdFqnyI2nmR8ZJD3vv9MhofiFAoZoqEESxbWo4r1xBIJsrEkW3b1MzGeJBHL4ajzUVYLxNJjCGoFu9WBTqvH4bQj6VO4a/1ERrJkPTLNM73oOxWSiQzVjY00Vxt5/Nlfs/q5nVj0JhBEREEiPDTAnI4ZnH3+RVx22Xv54bf/k0ZfC/F4jnAyyo6Nq7F7zPgXzeHRDVuIhfOct3QpF138fgaHx1CRkNQYu0b2MT4UolhSKZV0DI3JVPldqBWFPz66AVGjwejSEqi1EfS2sH3bTkpyhVTeyB133oOOBBqjFY8A9R3VzJ87jUw6xTNr1jJnzlx6Rsqcu0IlnHFQUaCmxk8ss5/7fv0nprUvZ/fBYX72H59k9dad5EsF2pvreeHJR7j6kk9h1paIhkbQSSLjiRJnze4gEutm584nufjiazAZDDz55BNkx0TeffEcchmZvHE7oyMh7vn5rfgCVSCXmd7RAFd+iZH+PZQVK/s6e5FEuPsn3+efr/0il031srtXpDNhpGfTdho6RJRCCZvRQjqRR9JIqIKIWRlkyblT2T+xk0q+zC9u/x1Bv58nH7mL1eteQnAq+CsWJHOFxpoaSoUKdp2Zgi1LRTYSiaRxOGwUcxn2jIxiMukplgqs27OL+VOm0tmnMhGNoKCh2mYiWcwyPBHGYqynpIoEPUb0uKh1OykKHnpGQxzuHWBBWxUWm5mcKpJIpMhkcjjcTlSlhMdhoaJqsVkCaPV6hvoP0dbcRNdgPza7HbOhhKJWWPXcOi573zlIgoLVYkCR3MimPDJaCvkyL69/lmy+gCdQxRVXXErHtCAvPvcSXr+feKqAw6mn2VpEbxSYN2Mq3V2jJBM5DHoPasVDQckwPBxBrjUSHQjhrLNjNxqQFIlwOoLTakSr1eC3OOjuH8NqshCKjmILeJk3q4ntO7rpHxsnGPQT8HrYuG0z06a0MaWxlkIJukeHCU+EkPRGaoI+pk5tZWhoLR6DkURBYNlUL7V1QZ5f7yEelTA51qEKIkpZOeazc7KDWZ803BYdCAJf/fxtXLv5NlRVpf2LqwitX30kZs2rXRCSBjQ6Op/4Bh6rHkE4uZNfURRwWXRvKlC1ohxZTkYpT0VW0EgizjO/dMRlJAhENt3+lpZmaSTxiAgzuA9VVU/dyb7jxDKeoaonLDYdLz0TGeDoNT5OVFUFVSX64DUn1AbnGZ8HVWXk5VsxvcWsa6c5zf8VXk9geS1O5Un1K+cymenuT4tFpyaTcV8no57T/H/2zjNArrJe479z5kzvdXvvm2yym94JEDrSpSmgYENEsWFBrw3EgoqI14sgRZAiwgWpCQkJISGFlE2y2c22bO8zO73POed+CFy5XkEIAYLm92V2Z8687bznzPyf+b/Pe4x/NbSCQm9fJ6mswGDvQQyeIsLJcYoL8ymvmoXJHqCkrIyDw0EeeHQ1y5ctwuPxMjUyDkoKOaNiUmP0HdjFrvY2EtE0giiwbftOoskCsr4Qdo2TRCSOETcG0UE8OYVRK5CMJ8nENZx6yXK2t+0kmlWQtBo0yAgCpNOQlSUi0SmaKtyMjx4kv7gUvDmef2kbGqWN7a8YWTFrBg888gJOt4ULzz6VmS1LeXr9FnwOO80Nq4jFJ9m4o5+x0QPkFIhGJyhwFkDOwwMPPsdHTlyIPqGhxJUPpjF27p5ipL8TszQPrwkqK/NIZ2NopDiatI3dr+5CkM0YjTGQMgyNwlT/fqIpAa+nmKbmckLBKBMTSUb6B3C57URj4M6zU+XyYtf6Wd86gNFl4LgT5hFJ5LAaDTisZpScAYOURWsQSMUzFHgKyITy8eRPsX1NP3V1eaRTKcqsbqobi+gOD1Nj9mE0mSgsLUAQwGQyMLN2DhpZz57WNmob6zBYZEZyAcwOJ9UmPYKqcPFlV2O1utmww0/LAgdhc5x9nduoqliERiMx0N1OqcdHYixKPJkmq4QIRGRuv+9hFtc1kUhHyS/MIxwJEU3GsMXGUZQUdjOMjg4hCFpqy4oZmQyjt+iwms0oisrDj63lxDNOIjM1hd0QJBAVOG/lufRNJGmb2EVMiOOwlJNJZ/B58+guXMoJi3X8ad1j3HLHt3F6KkCT5EBXLxIyKVXCrIdcbIjQ1CgL6hoYGd1F2+82Yi/S863vfJ8DB3r47nev5gtfuZS2zgQFJTVMTw1w/72/Y1llI/Xz5xAM+fD7g9jtRh687xHMNi93/ectLFzYyPlnnYZpJMk+YqgBH3qdGafFylRwEpsvD6/HBWoOvWjA6NATCmW4+KPn8NKGTeQEB/FwGiEmkt9gJp7I4g/K6A0qu7r3Y7c5KLQ70Wm1mA06xjMp6msLOTgURK81Ep2eRlIz6PVa0qpCJpVEBwyNjSOZTBQW+IgqaXRaLYGkhka7lcB0HKfVjk4ncpAUDilLRpPGarOiSScQRYmp6SBuQY+QDTGvsoS9w1OUllVgMemxmvXk262U1OUjGAtIqwYcLj2iqFDuddIxECeejWAyuphVXk1dZTWyomDUG9m7fw+pZJpcNsdYJIvPYkXIKGjHRCbtARRVRK8zkO/LZ9aschx2O4pgZu+eMRJaDfWlZaTJEIhlmQ4aGT0YRq/T0VRSzcDAMFaTFv90BpPBRGmhj2h8mkQsTnVZCQ6rBX80RSYHrfu7WLXCTSQYwO12k0vHGZ8e47jFTezbtR/JosdptDGZimMszCOdCNPZvh+Xx4feoAONgPYt4soPVcT5yRuu5p4b//NQ0JzLHMoU0mihpJ7hBz912NuWHwl0kviWhsDOU38Kgdd29BQ1IAh4F33xf0WP/pd+hd10eP5LrzO99VZcC67FdcL3CK7/4bsq671i+K9ff9dlnHHN5UegJW+feWd/57DFqY/csRU4fKEym1PwLT5kVn3sy/8xjvHPeaOo8kF6DR0ObyZmHUkB4Eh6Ob1XHKl+vp980GN6TCQ6xjHenGgiSTSVpdjjxOewILpsKIpA39AYDU2zqchmsFpttDQ38MLzj/Poow9SVFhNaaEWl92Fy2fFZtHx11dWE49m0Vu11BZ5SKYzFJdqmByLEI2OYzc7SSkKO9v2kE0puD06/CMpvnPtJezrauW/7nySyqpC0ooRndZAbUMeOr2OSHqMRDJGUmPGZklw0cXX0tnZwZMbHqKuZAUtc5vY2T7ORedcRGVNMw6Hk/1dAxgkgXF/kNauHiL+IOGpADaTSiA4TXNtAYV2I395pZ8vfP3HOIQOnlu7hcraKgZ70ngLwWKJUVGe4eG/7CQZT3LNpz/FwdA0BSVGpgajnH32Baxf/zQO72xmNuWYnE5h04hIkkJjkZ0dPWl+/LPb2LZtOw/deytag4EFi47HZDUzPhLg+uvPYv3qW/jhj+9HzQnYvHlUlGkw6gpQgOnQKJPdMs31dYhSlA0b21iy/Azk6U4cTi9aq4bu4QGCiTgTzhA1s4sp0BUd8ifqPkBjaQX1LSsJhqM8fP9PUUxZZCIoWpl4JEIsnOHr113Dk0+v5uaf3MgXvn4JK4rnMzUKLqeOPE8RTpuO73zrG+S5vej0WhIpmUqPjwpfCZORCAU+B8MTkyiKQigZwxxPoZX0NNRUYEkOEYsrNLbUYewdweI65D3ksOiZnvRT6TUj5FVw1gUX85cHfkC00oDZJBCLFLFn0ytcfO65tHX1sOaph/lR5HJ++rvfs6CyDq/DwbauLehELR09u0mMJFkxdzk9Y9OIcpISXzFrd/bS3t7G6SfOQ5N08dAff0Jf7whyNofTWMiN3z+J79/4a0QBpoNh2mMZDmzaiSgI+Bwmbrrpe3zmuu8SDKXwT05S4MuRl+9mKtxDS2UtmfEo5aUl6CQVp8PM9u37Oe30lQjpHBpdGmfWzGQuhJJTefrpe8hmI5Q2Own1RIlEcjRWFyGn04z7I6QyWfJ0WiJpGQSVqVgMjagyPhbGoIGYIuJyWNmyrxtV1FDsduEqKMAup5lOOrG4HPSFg2QllX2BcfIK82kfnyCTyXDlFZ9iulihZ3c73XEbV553KiPdbQwMTqFqdLglLS6jDq3Ogj8WwECCfZ09HNBLaLIKiUSGlJRlQfMiUjovWo2O1v1PM7dxFYoYwyxFKS8tBRVcvjwmTdMY1WIc/iQCWkJaP3leB9VNJdxx6/3UlviYjKpkUynqGiuJx+G++/9KPJ5DUTRoBD2CJklcTGMz69mxaYws45xwfBP9k+P0T0xSVOTmYOckbreF/uERCgvchKIKkkFlcGQSrZjCJhko8HlJJlKs2bYZq7EASRI4ODCKRqOwcfsOyvLz8I9OMjw8SFzQYMnEMEpGfvrD09mwYw0lBQvYsXc/iP8iQtHTG3oOiUNyFt/yU+j85Uc+6Cb9H/5+WVtOVvAu/zpk04ee0EiMv/wL9FoNsqLiWXjtoWVm72DXqrdCEASk2vnkul4lnsodEQ+mI0UyIwNgehfeQjn5UGrc3Ze2HJE2vW3k3CFvqcNg8z0Pw2GKRP5ompoTvgqSjulXfnFYZfy78bq/0lGbUXeM940PU+D8VoLWe7ll+odhbP4deLci04dprh/jGB8EKmCwGCjz2ikqK+DFXX3U11Wxa287V1x0Nr/91S+IxALotRryC/Op0RtRNTYc5hTdfZPs2LUDs92FI8+LQR9nZlU1DtHKoD+KnJKJTnRgdxtRs16mc0O4PFbI6NDrBIz5aTSqyEPrXqa+pppILIXNoiBqsqxfux69UYvTC4mIQioWwOUyEQwHiSVj1PuqKKsqp6K0knTmeJ5bs57Ovo1cdtHpjPftJRKeIJQQCUz7KPc5SSXHkQQ9ZV4f7e2daD1z+dhZ12K3WPjhDd/n7LNPYtu2dkxmM5lIFK1WpLXDgMtdzER6gN7BbkwGB1NjCXRGLcPD4yxeehKbN6/BYWzk8suX8eAjzxENxNgtTfOdG26jsshFxfln8sjDP8E/OcKKpXORZZlsXTn9fQf4yJlfo7JuEEFVKCvycv89P6d6/omoahy9JNLa2obFpGf1mlfQm8t4/NGHUTV61GQAt8uBqNWyaEkjPpcbrd5ATfUS4hmBXLqHAwem2fziM3QPj+B05aHVZpDlDGoqQzwaIxINc8OPfoXJaOIHP7qJIms9G1fvoLyqmWg0ReeB7cxpruSuX99Fa3s7e3Zuo8YoMqaV6RkYxCwa6BkZRJEVVFEDMYGkNk1aVghO+ZElA6TCrN2wlVUnLkLOCmgkeGzdavIr7QQTES469yQEBCYmQuRkmcnJAIHhbYz07mP/vmrGJieZPWcpL+76LHPGAAAgAElEQVRYzaa27VxxzukExibp2d5N7cJ6fE4fgiWObLRjtslYNBnctjJCsS6KyxvwlRcxEZxmwwtbMRdBVknzox/9FI/RTd6scvRmFb3Ji8liJZfLEomEeXLdWqz2AlxiOyeecB7PbW7FZR9HRaGmopB0PMue8F6sRnDaPOTSOVbMm8Wu9dsxZHI0Lqwkmgmh5gBBIZlMkYzH0WRUrJINKadnz44AOTnO0OQU1WWl9PSPsGx2LR0jCTwOEyaDjb0HDmC3OzEazCSyCik5RHFBBWgkrA4to4kQlSVuDJ58MkqAqXQIo9GGwSxhdzgJZAI8+dJzfOOi6/lS+28xavPZ0roVbVwglsnh81jQKHpsOj3uMg9dfQmckplCj4WRWAq3O49x/xjzC+pRyYGqks6mSYec7NzRRmlFEeHoJDoxi9Oex6A8SWjaj8VahIYswwfaKa9bSCg0xp23PUxZQTUGm446g4NcUmLfPj+xeILmOUtRETiwYwvLVyxg4+guxtbvwF2Sx0fO+TgFxUX84babGAv4md3QRMakp/3gfsrzSinO8/H0C5tYOm8ujTPKcDscqNkoo8EQK1acyJ333cvsphY8Lgs7d+8inc1h0GtorC1k2J8go9WwsKECobiYcDbEQPco62LPse/ATlZPp6mtdZOMx9/03nmYWzi9/9y4toupTWvAYAFBZLJv+INu0j8kFM8c8iCa/4VDGUO5DN//5ZcPGY5uvRX9a4bGGlHg8m9fDWNdR7T+qT9dAaKG4uXXEU+/+XZ37zeFp90IgvCuAvgFP1gLgPQ+7sylKK/tkPfkYWZCKTK2OSve8dtu2dBDzQlfRd+4iOCWXx4TPt4mx8bpGEdyidZ7yd+bZ7/ZVuvvBUdqh64jzZFozwfZpw9ivh0TiT58HG3X3b8DBp2OIoeb/IoaWvvCWK1mspkUsxpq2bJtJzXVZVjsHmx2B7lEhsKiPJY017J2fSulxTZ0BhPZTJRyRyWzi5sIjSUYj4ZxO4yMDY9gsrvJt3kQ/ZOQcrGweT4OqxW71cHHLjiRm3//V6SoEdmox2ZxMjU1yY5t6zh5WRG1pSnKvRXMXzCTiJLFbLHhdniZ17yIVadfSmVxGX/4458ZGejHqImjlQbp2vMyiXiSwb4Jujs7qKuqxFtQQEV5BXn5Kpv6Wvnp7Y/wuSsv4bhlc5nRUMmJp13GgdYB9JKWcDBCQ0M5vsJCstkEM2cuRFEVckIZ1TO8GKUoshzEV5jP6tVrKCipYtasmVRVzuWzF5+L026i0Odm/brVXPWpC/j2DddQkucikUrz8atOZPOaR7juO5fy8st7WfvMJjxWPSajwt13/BKjwcS1V57Kl6/5DNd87jNUlFSw8eWdhBUdX/zK1zj9nE8gKCl0BoElp1yAt7iF+x9Yw9bWEH9+6CnWb9pONpPhlQ2tzF24mE9edSmizkxJTRHlpfmo2TCSWYNG1lKeX0Zf26vIOZn+zH4SmSCKKtDbN0oknuWM01ZQ6iti7YbtNDXNwlFUTq9GS3mdna6xPoLmKcYC00wEQkxM+vE6rfQdHKOhrpK4rMFmEDGYzHTsGWH71j0YDXrCsTgLZrRwysqVmDV6vviFb7CldR8L5i3H4bCh1adJJKKULS7l+ecfxWf3k4j0s2VrK3kNdm77z8dYt34nlWV1VNusJCcn2P7iVgZGJhgeGOLWu/7M3qEeJI0BjUZDWE1SVVlPcUkNDeUr8ZTZqVju5WvXX0BwbJLLLv4yeYXFZNIpctkQDoeDb3zrm1xwxee57a4NbHv1YTr3PY9Jb2TXvg7G/VNc982f07Gji65dvUyNDGLQSDzx9DqaZ9fislt5/smtjA+lyKuwUjLbxoR/gHDcTjDgZLhjDFERyXNa8HrycbsLmAiE8eb78MfS2G1mkhkYn46Q5ynDZivAYdZSnZ9HWXEVHqed2nIfFWX1REeStHYOkZevI5hOUFdaglbKkCZDOBPjrw9u5L8feZrzzj2bcN8WUkNriATHGRg+SDIXYev2fRwYivKHx54llkjidnpICRpyshazxo7RbKNpRgvZuIjFbEBGZqCvj6p6GVmRCYRzOEtMTGUStKWHGQsPYtbqMJlM6EWJZCpLns/KeFBGq4f+0S7UTIYTzjiXefNPormxidqaWmoq66irqsDjdSCocRwhIyvnLcSUs7N29aPY9SJDYyFyOR0dnV2s2/AqZqMFk1FLIDhNOpvlyRfWs3NHO5v37WEsl2E0YuO5jbuYv/xUDvQMsbttL5Jbh0arQUkqrNvSh8Oazyeu+AzVSxaQTcVZteRC8goL6Ouf4pSVH4WsCjEBg/TmK5qOnpSTt8B5+i0w1Q/FM5h+/HO4ll0PI+0fdLP+D+OhFA0nfe3QP4KAuXkZg3dc9Jbm2b8+dwZ//PEh/5ngll8esbb4t9yKZ/F1FC//MuTXMP7YNf8rUH1gRP2g/edm329F34b1IAjv6xbu/7WlD0QNJv3hj1/37ee/o+MLPvknUm1bKDnpTPb++NTDrvcYx/h34+8DsKMxa+adLod7K2PrI9Weo22M/h05nHNwTCQ6xjHeJgJ4Cwvpjmjx+LL09E7x34+/yCeuvAqTRcIoFRGJZejt6eGSC07GZNARyaS57JyTWb9jP06zRDgaxD8ygJLIoOq0KBoDNp1KOBpnZn0tbpsJp8+FJZEmmsygl0REg4XHN4xR1TgXRc6QS8bx00csmSKXVWiYuQR7l4R/ehIBCXt1IWeccxF7OgbIZHK4XG48Nisz6ovYtH0dhj6RfGc+z7ywjcLiaiRJi9dqwkEQRfVRWz+HV7ZP8LFzLsFi0bOvvZuvXHsl/3HDDexvXU08lMJokFAFAVWSMSBi0yV4ZdNfyfdZmdUMydE0Tq+b4nwrrbu2Eo8n6TwwSENxGZIphkaTJb+shFgoS1/vIHJOQyqWxWrNQ1HTSEIEOZXE67DjD44gSha273+CVDaHu1SPkBG4+/5H2bnxeWwmPf39wzTNKaVnZJj1mzYxu7mOg3uKicbiXPvZzyArKj/7eR7Lli/gt7/cSzgUJ51OcdVVl5DLJGkbSVJW6uSEuXPZ0rWX3GCYguJ8nHorsuTjzrvv4d57/8jxS2YzHAxTkF/FpN+PKAh0tHfSfWAdp1YtICuL+ANRcq4JpjcrJFM5ZtSUsP/VMXKygpxT2byzndnNDYxN+yksMTPUE2Z/dxd6l4C3KA9/OIJ/LICpNA+9RuK2Xz+IoDHww2+1csWVn2ZweJS1a55msGeMCz75VX773TN5+vFf01Sd5fd/fQ5Txkj90nKmJkK07d3Dq9uzGI1aZtQWE49FQCNRWl5EPBzCbgsxv2kGjz2+ifyiDpQcjA4MkgvLCBOFPPdMK2edcykH+weprCjmph/8iIuvPA+tIBKaDrB368uIyPz81icwWMzUN5WSRsvQnkFMeTp6xvw0FuXx5BNbWDlvgng4zrMvbiUdCmMyWFgyo5m8aoF1Wzp56P51XPXZcyg05pgqz0cStPROTFHkMFLg8RJPZ0jGwyhWC3qdSCYYhZyKTqtHTY5T5qhBpzNQWGgmp/rZsquNU0+0sfzkZsaGZW679S8IGhWb2YTOJlLfJKIX7Wx4aSNf+NK3UVQVnaTF6XHgdkRIBSY5rqWJ+wa247U6mNmygmdf2Msl5yzAarcSnBAwZzI4HE4mRjooL5lJPO5HFIaxGpKoOT0uh4TeYKTOPZtILEY0GUMyugl0T9G0ykw4oMdbU0BeQSF5njGUqIesNoHBZEPMZpAkiUgkydhUG3Prl/DUY38ilo0wMGqhrGkVB4f2YrMaSMREHnl0I8edcDGKkiaRGGdyOIDZniCelnFajXQNBqkuK2Zwws90NEjuQIbvf/s/2NYxTjadobq2jj/f/VtsdiMGi4ZcJMdUcIIly+t4btNuxseH6e8eYvXaNk5eOYuR4UH8Q0bOWVbP7q6DTIdib3rrPOqFIufyb0IqxujmX//vluiBl3+Ge9EXcV70B4KPXPWBtU1RVNyrvg/RAAAzzj+fTd88/h2VMbDxV5St+PIRNaDWiALBbb+m/PN/IbzzZfKXfOn/HiAIIIiHHrUGzHXN3PS5RZxcnU+eTf/eCDGqyvbHvvfuykjF3rXY9E754/o+TvjUpYd1bp5uGwVBQCe9/cS91/23Wp/7GWUe0zuu85/x+jw7WgzP30071DcY2L9uD/aXPUN87upfHjI9V+S/HSwIh3ymRA0YbbhnzibQP0Tzilk884WlGF4TUt9r4/tjvHf8o6D5aPnl/mj0SnpjVtHRZPR9zJ/ondV5NMylDyNvds6Ojee/JhpRS1jwkUvEqCws5b4t9yFkoL6mlF179hMKZzCaDTS0zGX9qy9x2pJV6MwaesNRrGYDmUyKrNFNTgGDVsWdX8CWHTswz66jedY89rfvYdYVF7F/30sEx3Jo0OCwOVgxp5LH1+5HtOdRbNchE+CC477CnXf8lLA/hSJqmL/yNPxjQWStmelYnF3tvcysrWJ8tJN4LseOvfvp37uZi6/4BH3b9rD0zGtZcrpCy6w6vvTpyxidTDE00seqc5ez9dV9WF0e2l7Zxr7OnfzwW7/jnEs+zfXf+CaefBP1tfkUuouYnpgiNBIhJUboHwhTU5bHVChKcjqKxeukoKSEvR0dZBMRCu06GuYvIKzq2P3yXo5fuYSGurnojDb6+vqRRXC7ncyZ2UAsFmP/gU7ah+NMDiexWIPc/N2r0AjnkFZ1fOf73yOeCjM8OobJacXjdhLOKYyO5/BYPLz60mMkE5Vc8enLePa5R7jq0+dS7i2je6SLiY5X0QoGZjbUYbEZSQWz7OyCcHgQydjE81um6DvYQVJKMqf0cmwNeqrraihpmE0mk+PJ52/HqphIpJLEYhGGB4bYOdpB1hyjY/wpNB1rQJ8jG5Xp9AosECvI5jS4Sixk0hnUHMQn00zHg5jcadyCGaNW5KpzPkKHf5xQKoZNZ2dBbTNTTGLQ6FCRUNQ0Ri0sXzSfm2+8iVQwTC4n89yTf+bCs1dRUOCks2uc+HSGylIPHbvHqJ95Fr0TG2iskFBUKyaDl2wsxOj4MItWXMEMsZ2zzz6Vz1/7Qx57ci2f/8SFnLRqGY+tXoPZbKO+rJTyGU0oisI5p63klNPO4KyPfYbefTuob2km2JtmweJ5nH3acfQd7GOgrwd5OIixwM3mfR0YUgbmN9azYedOZjbMpLVngNNWnoJo1oIlTnQ6iMnuI6dJY/JO4TOa2Nq9A6erkNkzZqJJpmnrb6fcU0JbTydyOonD7UTv1VJVbOelVycxJLIUlOURx4xaqOXlV1vpautHTsuUlRfjj0xTaHHx8cs+ReueUTR6AY2qo6C0DL19lEAwzMHOMWpntCBpYPmCOra88hQbN+4lz5OHf2QSVfRTUnESqCq9XSo/+/UDLFnWzMToJCUlNezds4VoIo41v4jRkJ8CTwvnn38K377hBi772KXYbW7iyRR1DgcpOY5eNKEqIIgqxUVFWMwSwWCYfJebfONMegcG0FstGCQ9eoOZAq8DWSrHW2rG7HZT6VfJry4jEJtG0GSZu+h4utrTGOurseX8jA7tYkHFLJRmLaN9O5kKRFBVC0puBJfLw1Q4RlGem0gsyc9+8TvKKowMjyaJTIc4bmEDQ2NjxLVG0mSpLnfS459gzuwFJGtnoiyDWCxJuFRAGhhi4fxmDFot8+cvYMPWm9/03nlUC0W7O0fQ18SY2nrb/9lxShQFlnzyUl65+08oivq+ZpgAjIVSNJ5+w/96D333luv4ynHVh1WWzagFQcC1/BsEN/3sSDaT/v+8ALgAVVXZ2jvN6Z/46aE2KzKorwXRcoz4nk1cd/WmNy9I1IDeBL4K/vj9M1lZ5UUniWhE4W3tBJbKHqqrOs982H3JyQqoKp/+1pWHXcbh8IdPzMdl0R3Wey/7zC+gtOltH+9ccC2o6v+b70caVVUP6SiqisD/99Z6P1HVd27h9I98iDSv/TnL5zg0vyUdeMsPPRkcPWR+r8iH/KayUwReObSMsfXhTooefvTNK3u9Do32b9eBzcezt1yMIMC8cica8d0tqTzGu2N3x+BbZsV8kBkzR2oZ3HtpQP3Pdoc7nHr/3YLtd9Pfdzq+xwSi95YjeZ0dO0dHDzlBQy4boqTQxlNPPICIFoNBx13/dSeXXvZxNm7ZwdLFC9m4bQONnlLW7NmEYNAgaTUoohGPy0oyNUEmHsPgchPy+8lvNLNvoBvBP8LFV51MQ/0S/nD7nXzq2i+xa+MaZjQU8aP/fBBFVhEQCRXrGA/DipP1GJx6Fi9eSDwe4/f3b2ZkdARJkvjWF6/isSce5sAelbyCIsz2RgxGHY+u3oCztpHTr/w6c2c3ouRyvPjkWpadvJynnniC9S/vpKamFoPRRXPBPOS6+URjKXoP9jHSuZk5C2cxPDpOKCpx3KIKIvkFbH61GyUHzTObCAbGOf+EBdzz6LNcfcWFTIXH0ahaNFaRExpq6Ti4l8mYQInPRTYTYqR3FEUnMjY+Scu8JeRSCUbHAuzt6CGbSZDLChh1+dhtbta9shuNKCHLWVpmL6V1XzuoIqLOR3gkRjiYw+Y048l3cfHHr8Bk1aKVNUyH7RQ4JZKZCGpOwJTvRG82YHXZ6ereg1GXYeHClUiqgChpmJ4ewx/ZxkzHTFpmN9HWtQM5q6LTalg4Zxaa4Ons3dtKdW0t2elxiovsjI+kSQcSaPU6zl5xGut2bCaRS2DSSWjLzGxp7UEya9FoIXIwRUGhg5wgk51IoCuWqKko4oVt20kaEhSV+pjoGyfojON26Nk/vJ+MnMbmMTM9mqC7uwO9XiKhTeOqt5IcmuCJ1WswxAYhKlJTUM6+3gGyGZWpqVaqZrQgJ6Zwm614ffn09LaTTk/z+IM/JnTcXM6qqqO0cjYHugcpbljOWR//DIPjAdxOD56CShRZprLQxUsvvMDV3/gugckgB4aTLF0mcdDfwcZdYebMaqSh2sGpp1zN9tan2bJrP17JitEYZ8POHTRU1ePzOmmcXY9gyzAVCVNsXMADD/8EtKDTGVm67GTiYgKtYMBs8KOarIz49XjmlDNwYBpvvodEJIHV6uab19/KlZd/lvrmxRwItVPoNVKmc5DVxrjnzv/m+htuxmSy4nRKDEd3Uq4rYaJvmNqZs1HSSRobS4jLY0yOyRiMRh545ic4HRWocg6DYT52iwePzYxTJxFLZDl+cTOxwHZa5p/Fq1tfxOUtR5uSMWo0GDVammctJZlLIlhTiAaV1S+uZjydoLCwEovZitlsRiPp+MpXv46ohVtu/gmSVoOo0aGoCoHpOIFgnJKSUv706ANccNZH0Rm1SGYLkXCYQDiJz91MYCrL8adejF6nIx6PUidqkFmEJGo45VQJQdSx/cU28rRmIvEgzfOWMHawDUky4PWYaSg9n5wkYQ5Pk0qnGZzYzMCgH52uAYPBQFTOEM7I6A02iswSvqoW7HkqfQPDLJo7B0GrkE2rPPfXNTTPLkPWCFx/+2/wigV86urPote++dIz4Y2/yh9tiCafGg1NvOl28c75XwBRQ3Dbr9/ztiQzMoUrr/+bMbWoYXLzr9C+g2yRN0NRVNwLr8W/7Tdv2tf3A1lRSWVlhgJJFl/zAAQGXwusU4ci+rfD65kbRfUEHv0soijgPPs3MNr5rr40eS69F7l7xwc+Ru8E5/wvENj2m7clxLyfc/mN5GQFVeWIzOMjyeGaUqcyMgXLriOw9ba3LYC9McsqK6sk0jk6xqJc+qsNhPa+CnL20HVw6GeEQ296Y7bSW/F69p6ogdIZIMs8+eNzaSlxYNZL71qkM2qFnaqqzntXhXzIEU0+VV934VsKRfD+BW3vZfbQ0bhM7N0E1kfatPvDKKK8k3P6Yezf0cqRuJbeC/H2vTi3xz4nwGQ2qwuWLKW21E5WTLO/LUVHx1Zu/eX1jA4J7Gxrx2gxo2hCdLdGsOsPovO5iIVEfDo9iXQak8HI6OQEdTV59A+PY8ibQZ59goRWIF/ysersqxmemMDrdXHdZy/k8svP4p77n0SWFTLxNCa3lqaGEi4/74uMT6dIpdNs2ryF6UCAZGwMq1nL8kXNOJx2ZBSy2RS/uP0xnC43/rFJXFYD5rxKrKLE8qW1JDUJyisLeOLB9cyZW09pXimzly3jlc1drFjSwoHeEX528/eYNbuCRCIL2hSL5zVj0es42NGPPwg5Mc30uJ+p6QDxRJJIJMUF5xzH8y9uZWZtJXVVNURDSZKJJPmVdWgjEwxMjdE7GcCo17JqxTIWrziFof6D7NjzKv5glnQsgNVdyjlnzqe/P47Z7kKnlUils3QcaKf7QBcVVdV0dh6gqqICo8FIYUkxGlFEo9UiAOOjw4QiMdwOG/v3tWI1WwmHojTPaaGgrIzExG7seT40yEQ1Pp579D7ySxcQDrUhSzr6OtJUNcsIMTeh8WEK8z1oUykGRyfQmezozC7OuugiXN5SookY9/7+HsLhEb77w//glz/4Lt0HB5mzuJ6u0UGy2TTR4TRF1TZC40mWrphFIpcmMhbBpTfhD2VQDQruPCtTAxFEey2SewhVVZgYC2J0aCFsY2FzGfG+SV7q6yAdySJkIB5JIYgixy9dQCAYI5FKE46EEAQNsxeeikHopKNtnOZ5S1n/wpMUul0MJUNUFfswSG4+dfW1TE8OY7aXEpjooNhTTFv/GPFkhnyvg6eevp+PnL6C+FiauadexB133YevOEZsMMYr2/ficzk59+ITadu7j9qaIp5/9lUCEwHc7gKKi3zg0JBf7MFqtTA4Nsr5qy6npqqeb3z3Z/T1tDMxOsjsuTMZ7h9jVvNCErEESUMPqYyAx6GnpWAGO7t2M9wXB1nAZCnEkV9AWWUpgigxMr2JQkc+JkFgVtPx7OsYIRUeIzAwQX69FgQd/liI2TXVjMZClLrnsXX3MxR7LBwYGMWs0TOdC+FyODj/5Gto3/0qXbt3oZglfIKOnBxELGlCQcf655/AohfIt7uw2QwkjSKXnP4J7v7trWhmWBkb8LNwzoWk0ynGxjbypc98m8mpGAcP7ub2O+5AEFTOOGc5RUYX9zy0muLSRorLRE487kK++Y0vgQyfueYq4oEAGnLk55fSMzpBUUk5LosZGYlf3PJLbrzpJjQagY6eDv5090N88lOfxuG0YjVb6OodJJ3JUl1RgkGvR6fTkUwlOTjQz+iQn5NWLcVqNvHcljWsmL0Um1Ymo+bo7x4mkhpjuH8Mo9HGheecyV0PPkhIiLCqZRZ7+g+i05rQBCS0bh8HJ/YhaRUsFgvHzz2HH9z4Q6YnJv9hQHJUZxR5Cn1vKQqUnnwmg2ueJpNT3tHynndCNqfgW/aVQ4GiIIDZgf/FHx1RseL1YNGz/HqCm39+xMp9p2hEAbNeor7QSvC/r/5/r79RVDwkKil8b00XsVSOP//XYxCbPiQoyTkYbMO98NpDY/Za2kg6Kx+2V5LcsxME4UMjEimvrYV6WyLRousAmN5663vapn+ERhRIZmQEgfc0i+nN+EeC0OsZT4eTpCNpDs03RVUReXsFvF63IAjoJAGdpGNxtZu+354PvLm/1Ottfz07665t/Xzrq7cfEpREzaGspkzykKiUk+HgbgDO/tje/1+YqPlfkVVf04LVacXpMnPqghIWltg4tSEf8Q3L4o6WpYNHC0dD4Hw0Li97P3inIsc/e+4Y/5hjItHRx+Gei7ea92/3mjg2D94ZiiyjE2McGDRx3kdW0DI3D1W4lJ//5AY0ehMFRXXIgsIZJx7H2Sc4Wf3sf7Nj9ybK8vKoqShgSkky1RemrqSA3qkcWbEYNRLnYFDPnp0vceM3r0YWwO00MPbSo5xz/irahwaorq8jmRmjuWgWZo2dnC2PHXsP4vM6GOodIBkdxmb1EI9AY30xmXSaXE5h//4unlm7lZqZsxkfHkYUBSS9QHB8CKNTZPWaIU46cQFtB3o46bgVWPPKKSooYXdrP929HQiCQCoxjt2sIZ5KsGBJI4KqkstmefbZbYQzGgrqfHTu2I9OEFG1KolcGq1J5KkNG1EVA5t3dLF1dyfnnb2IRXOWo7N5aX2pF61eosBnpzzPTX9bB1nJSjYTQBVlCvPt9A5OEQ3H+K/b76OyyYtB0jIejdFQMYee3i1k5SxTkzlMZjBbFFymNIGxXgpKawiFphAUEY8vD63OgCiKZBSJUX8Yj8tDSWUVqqrypydeJpma5rrPXMSerpc47cyTeH7dXpRoiqxOorHFycxKH6M9EyheLbWzqmndPUBAmaSxrAGP3UpddRm1dU0oKJxy3EJ++ut7+dmNN3Peucfxwis7MUsa8spcZNJxjNYsokHL0vpKjDodboOVsYiCIhsorp5BZ+fLmMNuLKLIJR/7CC/ufRQxIzPlnyaXUagqN+HzeVg/1IWqERB1WnKpJCqw6qRl9A8MMNg/SkbJYTcZybP5yOXSTExOUFtTR9g/RQaRvvEJZteXs+zk82jrmODLX/oyBi201NYyf84cxo0FRBNpjHoD+3fspr6skN/d+RfS0RjzTrqAJfMbGQnsIt9j4lWtljM/upyp8XHcbi87dhwglxKwWn1IOgM6r4jD46K8oJh9nT1k0lkMVhdDIxP4pyaxmh34WsooysuRX2UlFhvFLBThkBrI2oeRc5CRUmTTMl6fHbNqwFpYRoHdiD7SRigdQwYCgXE0nkKeWfskyZARV0ESd6UNVcnS09vJgjkzCfjH0AsCGkFEFWRyIshpiOjS6DUSyWgKSSPi9jkprCoBJYEipbGY5qG3uNn50lPku2w4vVZsgkKnP8KC4kq0DhvWRhvRnEJDXS1aSSSbFZmYzJGKR9DpDEiCidr5zZgtNqo8HvbsbUOyGAGF0f4g0okiRaUWVEFh49qnGRpTSaXC6Iw6fHYD6dA4/RoNm7btIKMkue9oyW0AACAASURBVPfeX6KoCgf29aMKCmue+iOCAn3jU5y0cjF6ycNgNsqseQvR6fQoSo7tW7cR8E+z6sQlhKNxjp97PIIgEM7KiIIBX1kVPqqZMctAIpFgOAxnnHUZ5SUegsEwdY3LySQzxJMZolE/GEKYJN2hpWyF+bzVJulHtVBUYn9rP5o9N52K84VnyFv8xSP6oTkaTDLj9BsOLVcBkHR0rfsFXpv+iNXx9zz70A84/ZJ36eHzHvPGwFTSCFg0Ir84qxGAOy6c9f+OT2ZkCo/7+qGMDEH8m1eSIIDOyOALN2E1vnm62/9BVcFZ+K778H7xXMf421I6PvvnvSDnmNp62wcS+KsqjARTLP7KXxi577IjZnquqiqKCvF0jlteOsjt925GHdz/t2vqddHxjX0WRHY//WOKXcbDFq1eFxKn41l87+H1Cm8UmEBE4HNLKvmWnGVqy6//aftVVSWelvnCY/vYsLmXyHQEdbQbMknSHdtIA35Vpfsp+M172osPPy0NpW/5+ntpBv1BiENHY1bR2+Gt2vzGcXy3y/U+jGPzz/h3EonejlDyrzAO70Zgfavnj/GPUVFIRnKccd4cEjkTq1bMYldrO+V1LQT8g7gcJhKpHO1dQ+jlXQTGRhgZS4PBSIkmi8Fgp3a2jgMDAxT7LEwlrDgtHuwOA7FIL32RBJntG5BMFoJ2PbXmOtwuLxUr5/D4k2to6xmhoFgiOt7Ktk2bOH3lfMJJFUmrw6DVcOa8RjQWB/2BKNvbBygorcLi209//z7klIJk1ICgp66qGFHIUFtRiMPsQBJE/vj4Wlx2B6evbKJ3aIwFy05CEDVMZCVKS/LIpHLEJsM8//wrzF2yjLqlNehiEoNDEzhsDqxGM6G4n4aFlXS80o/HXcKsuafS39OBXqvDYrPjLqkgMDmO1WMmPiSTGhvigc37sTg8lIVsLF1k5aVNB8jPLyc85Se/2Es0GeTBu/aABopLSzFoHditdoKpMDqDiEICj9dIMBYiJ2VRURkfa6O9rQ9foR5JhaFEEn1Ewmiwks5mSKVTvLxxGy53CdG4m7hawaK5M9nZug2nG6bjMqmYSjzjZ3BEwetxkLZAW08nIwMTWMxmRCC/tIzbbr+dlzdtQBC03HrrHVx39cdJfOKjXPaJK/FZVPqmJymb5cVjKqXV0o0Y05GWVVKZFDajhTyPF525kLb9e1jSPBdV0WJsaOKmm3/KR85qZk9PD8fVHMeO3ZsRfCITwWmqCsvI9aWJFKVJm0EfVejZt5esQ0/eHA9qWkQNymhkmcTUDnoHJtDr8tB6bAgeETFnoKChguXLT+eC81ysW3ECDbUlrHn6z5TOWcKrO/diJM5dt99JOBHihq9/kamJNTTUV/LoPT/Dn0mjKAorljbx2c+fx+03/Zba+U0Ep/zIqRxVpdXk0jlEq4rH60YUtQSjUbJqDK0W7nv0pyhYOP3M43ll8z5mlojE5RgdI/3UVs+kwtuE2+2kb7CHHd3raRvtRat1klRjTMUjFDkN7B7bi8Wsx+vxMtvnQqNKxEJxRF2GyuoGutv34mwCrUbEoPciCRIOo5eMzordbuPS0z9FUpGYOzONIAjIsowoisTjaeyuEmYvKAFU0MDwyBjPP3EHE/44ZqMTOSRTVlnE2XNt7B8YY1vbVmorm7j7939l7iwPlvosDoeDc888n2w6iVZvobCoCPdWkQKNltFQHieefRJzj4/wwjOrGRwY4tHHn6CytpFEeJrqivlcc8o5PPTHB9FrtUQn9pARczhtZrJqDoNFpKu3n6KSPD5y8lw641G+ffUtpLIyX/n6xUwHJ1HkMDJFZGWFztZXGJ6YIpueZtnyGgY6e+kP7cFIEaWlpTy/7jFKSxch6MLMb5lFMKVDkiXsdjPprMIPb36Qj567EkkP2VwORVYR9T6aarwoKlSgMjYZRNIY3/TeeVQLRW+Hsc23UrDkS+Rk5V1lRKiqSs11TxLYsu5vQayk44G7vs4ZMwqOUGvfnMXVbgDWd05yfJ3vPa/v/cCo0xzyiQlPEHzpJmRFxXPqzYc8Y9IJSld8+dCBWj0zzjqTjdev/IcZOK9n52y48/PvY+vfHR+/5reHfG3+CX++5U6weT+wbJ59Q2Eu+s0m5OAk9dc98VoWzdtHVlQC0TTPdY/zk0f2M75z+98yy96IIBzKsCmoZdXZixgYDtPbMYSqqmz+xQXYjFrmffVxWi6+hcAL/3HYfXpdvPnS4/t46BPvb6a9rKigqm8r600QBCwGiXs/1gIfa3nT417PrlJfKz+TU0hmZAKxDGf8ZC2jrb89gj341+VIe/x8UNlD76VX0dHAGw223/j496//q/BOzuW/Ut/f6Rz++yWKH1ax9HB4p/38V74/vBuMOh2T0+Ps3LSWiZyZB+6+m5lNNeh0SSLxOLHEBCet+ih6Y4JsqohwzkLxdIozFhUxc9FprN6wn/F0gpeeX82XrrsQSyyIQ6+S00T5zlc/zUTYzc7tL+OPKJywrJpYTANKMWvXbkaRU5gtBjLJFK2tmxAEsOn1xDMahkb6yWQnKCtfQXVlJYXzaxA2bmb7Kxs4+YTL2dr7ZyRVRzyQoMpZhl7SYDcYeXrDPma1SHzs4suZMftMbvzeD3lxWztWXY5tG9bSsuxUyoprOdC9jZE9AeIpGXdJAWNDfezcmaa4tAqN6KWx3kFvbz+BqQiJWBpBVal0mXC57eh1s+nv6uGhB5+hoXEpU0N7eGHTdrIZmdlGPccV2gi5GxANkyRUkcaZi8ll0uze/hI9PQN89PwlHH/qVWh1In0HOyE7QC5nprBmBsMDvRzs7Een34/X7ePF515mOrqafI+H5SfM42D7HnT5Dmo0xUTUKLFEmuoiDxNj4zilEF2j3TjyK9EbDeRyKk0z5hGcruKx1sdQ5DAL82fSfeAgQ5ogJeVuooEoBe48yhsaiGUSzJpRR6lPwGMV0eq0LFs8h0cee4jbb/8VedU+Wiqq2ecvZM2jT7FiWRP5ODDkabFYrfjsLgyinkAiQCob5srPfo0n//o0+9p3sHLlacyfv4z2jiDxcIrxoIzZOhMllkHwSGQyWeLFMpmJFLIiYPbZ6N8zBmMCJXN86C06tCMKdZWVbO7YjOq2kldejdPmoitwAFUBi5jl+uu/wte+chmVJVXcffc9LJzfQmdnL267jSee2ojOYqBl5gk88JcnKav2kBOzBDIpUskUDrMFu9VOPBolv7iE5FQOu8HOVCyCWQsZnYKtzE02nqTAa6e14wA6s0J0Is7g4BQWo5aNf13H4qVz2R9KY9KbaK5voq58OYIootfpaaydRdvAVlKJGJIlgj5tQ1RUItMJfBYnKUHGbDISCicx6wygalhQM4eE4mT2hRchSBJGg4EF80UymexrnqoCyWSSkKqiyHHGx0fR6tKAielwCjmdpLjAC/EAemcRkt7E5qf+TJ6jHKNRxGHXYNRqmAj7yQ0pGLEyNn6Q/LwC0tkAl156EXt7++nq24PVGsfracEm2KipLqW7px/BHKO54Xjmz2oglU5TXVqFpBX41S0/Z+WiZjZu2E5XTw+joT+h0ehRVYVUOkcqnSWakjnhzLOor2/i6ecfpbRIg6qzcZxvJsrYEBqTzNXX/ILNm9YhqioWq4ooCFjsBoJtQ+R5XfzlkWfJpp9BqxdYsuJ0rC4vZrcNyRBDyUyy/ZXVmP+HvfMOs6sq+/a99+m9nznTe0mbSUgP6SGEkNBCE1QURcBXEQREQOVFLKhYEVSadJFOIJRAekJ6myTTe585M3N6b/v7Y0TxlZ4YCF/uv+bae+211l57n31d6zfP83tsFmx6Jc+91YIyns1Q70Gef3kf5bkVNPf0otGocNiMDLsjyGVmqqoKKCoqJp1Kve+384QXitQKGejMOGZ9/KgiSZKYccd6Wl9d/W/i0Pq//YgpRebjHuGRu2QFq750B57df/xcpJVIkgQDzTjmng78oxrbm7f+83w0kSbvK4+RaT9I3fPPY3v++bETgoBt9hKafncOMlHg5tcaAagpNB/3e/jERINgy//AJr5wAiTpqISRo0EQBArtWq4+exw/7hrA13CISPwctKp/fRYkSWLAF2PVvdtpemvDWOW59/Lneed9FURss5dQ+6uVaJWyD3yPMxmJv+7pZFyuEYD+v16KdcGtnyjl7P9ypGn46Dv5mAz5Y8e8T0EQ/uWnLY5V0NOr5TiMKlp+fy66Px/zIT/XHM0G87MkWnweN8rvvp/3M9j+oGdwcoP83+XjRDUdjRD0Xn29+33/vIulR8t7raVGcfIfCsl0GpPBTLd7kM5uN7FIDPdwE1WVJVQV5JJt0XDkwB6yCsoY9fZRXZkHoUoefHYNi4MOCgvyQRCpnDSPkaEhovEMXQOHOGP5SgL+CGZzKaevWMHLr21iV203ednZdLQ00tB4BKtZz8zJk7Fl59E2uJfhzjBvN7pBlCHKjdisTrp7A+hVDax58mWuv+kWvvili2ltrscSrcZg0LO/Z4BEKEqXb5A8aynVlXb6ew5zx+038+vfP8iFl1xI05HNKAQRjVyGUq5m1BPgsouup7byCC39LQxHW3EYdDj9+QgCaLQarlu1iF88/xC+gJdgOozGJMdkNyL49mDRZGGcVkOGJHf87EfMq6khy5pNb38f+TOmUjLo5i8DCRTJIB1NMSZNm02RPsZNN77GVy77Brv3HeHb8y7FaLRSVJBP2N+AyTGBLGc2kiQRCEZY89JdPP7oK9z76x9SUVzAqq9cw5uvraWgfAFDgzF0Wj0qMUL/QDs6az4XTJ9Mw661ZFJRzIoEgz2NxAIeGtvdhCNhbBY9WoON4tK5VI1fgoBAS0czQomT0c4elIIOs8aASIZkIsqyxadSUnkKRp2B9evfYOGcU+j2DdKjMBIX1Dz78gZeffl5ug9txBNPEInE6WwdpXZ/FyvPWM7AYCPXTB5PXV0Ls6ZPoPHIHpoauli8cD4tLQmMag2nnjWPi845k7NXLcCRZaGmrJIGdQsuRQF71u8b+z+qWmC404s1V0MoIyHPUWD3FjEi+fD5/Ljdo5TlTOG8GeU888Ib9A+089s7fktaSmPOyicxeTLhSIRMMoTRbEWtNZNJxfjTtTeweWiAl154GUVagSQTmTljEr19A4RCCUKhJArZCH6/hE5nZX9rAyq1ilk2LfsOtPFc++skkhIZEbRWJWXjs5maV8r4ymKUZgsOs4F1r+/Eqtcy6B6lpKgAuUJOPJ5g3sTldDTW0uxtYTTmocpUwLjx4xj2D1KaU0JX7wDF+floNFqkdAqZXIFVJkOlUiGTiSgUCiJRLwf3rMfi0pFIgi8cZnJ5ER5PCCGdIJ0Q6OyvZ/ULWzBZnJQ5lOg1agS1nmVnX0p+US46nRGrXYZcLufhZ3dj1MLb+1tYdsY8Cmxm0vEEl3zlfLYfXk1TVzeypAFVUs/AwDDK/DihYAT3sJuBtQM0NT5GRWkeB7dtxhdOMNjaxhkLc3l+9Zt0dvQgKFRMmJSDWgfuwXa0ShkquYKutiFu+8n1iKKMiWUT2LPrBZp2djE00MFbPhMmawZRLGDV2SsJB708/+yTWHP7UGsd5JfnEooYuPBLM1CqZKx+7mkykshATw+RYQF1toNrrruZZ55aTWv7Ed5cvZGKWQW01x0iu2gK7e1N2IogHHAwddY0tmx5gdNnTUXSKRATEe6842cM+4Lv++084YUiAM/Gn2CdcQ3n3LeT1VfN+tD2qXQGx8Jbxza9/+C6n13DbUsrPlWB5vCdZ2Cd8SqReBrdByUMniD8+M1mAOruWvme5zVKGaNPXQ6MCRJdIxGmrPoJxEKMbl+HfeY6UKjGPI/EY5MSddyQMsw8c/YHNllx99vAp1t1zKRV8I2ZhWxsmMSWJ9rInffd9zdsficqyFHEM3ddymlV/4p8sy67E3wDYMmh9Q/nfuTxf/G3Wi6fXoRMFIjE06hKJhyT36BKdfx/P99f03DcxkpnpLFKgCf5yHzSDeZnSSB6Z/zP00b546YavV+a2onKp/0+fVTencL5Sa59h8+jyHmSzz4mo4rCShV9HRJZDgM+H9jtDlpa2vCYdZjMZxCNSpx1yjhiqQH+/vh2vIkjxNNxtm9dw7jLv0km3sSKRUX4/D5a2jrJyjJjVKjxxfX429o4cOAQLpeNntYmUt4+WjraCAQCzKqpYHCok96BAUSZGo1GiUZnRqlUIQmwYuVC+ntb2LRrC50tfTz6wN0MdNQxOOQnL8dGV/cI6YyEyWWksMBOIjqKSqkgEAySScPra35Pll6Pz9uNSW8iy1WDVa/DYk4QTYSpb9+IVutgTsXZPLv+zyyePpP6I0fYt7OO5oHtOCQDMoUSWTRGgctKlk5NMJrCH+pFIfdTPfUUSs0BhkYjBOIpzAYdB1qHsK48h4UdHaglOwcPNfP6M38mr9TK/o4DnHP6VOqb2nj9mYeZO28GJeNn0nKom4cfeYRUOsO0CZP58pe/TktTBz+/5VvoNXK+cf3tRKJxNEolVeMnMDIySjwSQytpyM7OJysri566A/giSYy2HA7WHaHFXcfiibNpbWnEbFAjyEUC/l5qj4hMqjoVg9FMeUkF6VQp8hqBroEhFHIZtUcaWbt5NfFUgjQPcs3lP+Sii77Ow0/9BplaotrmIFFQSiKZJJ6IMuDxkWMtIC/fjndU5KevPcjTT/4NT7KLl17ewIWXrGT39rfZd7CJ3v5Bdu1Wkm+1IhMkYhE/d/7md7Q0DdDePMg5pfksLF/Gg/c/gqPMSrw9SSaVIatYj7spSFV1EbFAkrauLjQ2BYlEhoh/lN76Hl6NSUwpG0dxzQLWPP8KC5acRkNdPcOjbiLhMAd2bMYXHsZiLOT0M8/m16++RkdrHSvPvoTt659lZk01iGm8wz727W/ArFPgD6Uwmkx4PD3EEgLtnhGaWgaQ6xU4bAaqSwrIKcxFptMSDYdpG/FzaE8jVRMKeaGhg0svXMiwN8hg+AAGvQ6bzYpMFDGbHdTMWMgkaeFYpTBEMlIGq8XOvtpDHKo9yIWrzmOwvxVRDBPwBFDI1UyeuQy1WolMFDhU/xYjUT+asAKDVkNlVQlbt9fR0zPAitNnk5QyNO1vR5SSuCw2uvp7mDmjCnvOJOSihEKXweqQEYlGGPFFWb5sMUqlHLlSzuhAO1aLkY279+H1BRGlFJHhECVlClAJNLa0UlQwm/seeJi0lAZRYrCnjj/8+juYNHMIpTtRRn20tcXp7OwlmUojSjHEaCNqRQ4mdQJBpqC5tQunPZeBrkM0dDehkjJo9DpkWomQlMKlSxILioSCLRw5sg3v4CiIakxaNWZLHgPdDZxSPRmtVks0EiWeSGAyG9m7dyM/+dHPeO7ZjSDB6WcsZVF6Pp2BQ6SSoDHYkMskRLSU5uTRuHcjTsdcDBoNCRns2nyAZDjE7DlzeWvDxvf9dp74agT/SDfRGNjy4BPwAULRSDBO+ZIb/y16qPXNO7EZ/rteJh+VdzbIefO/i3f3ie9M8oefPAR8tIpagiBQ5NDh3foLAOLJNK6zfg3BkTHBQibngod288gXT0EpFxEFEAXhUxVZPhBJ+lDRsn7TzuM0mfdHEAS0ShkPXDKF1EU1NA4FOf87D0LYC0oNWx+7gfG5xrHiXR8g4HjW3oJ1xjVc+92PLhKJokCWy8SEm15l4jgn618/yI67LyGd+WjpWx/E986pPKrrPwlrXtgFfPxKbZ8ESRoLSz3Jx+ejbFQ/a+LQe/H/64b7w6KIPm/r8lkSw/5vauD7nf8wPs4zOhqB6ljO41iOeZLjTzIlMLPGxWvuFvwegaqKfEa8IbKcWSi0TiS1Bq1Wwb7aZmQqgaKKchbnVNE38jsqXC7aWrei0CpRpLX4wlFKiyagMtppH06gUkaIx6MkYsNIGQm9Pk00KqBWalEpfKjkadyjoyyZu4CSPCMHuyJs3/oGDlcVWm2a9s4NNLe1UX+kh0wiTXPdXvzeOEjQ0TmMBEiCQNwfRZaSSChgsN+DkFYysTyXl196G7nKglxlYrivljOWq2jvL8LlzKK+qZVu7wCnWLJp72tgzuSzSKQlJEkgJ78YVzZkm8yEoglUShkDgz4Oix0UFxSilQEk2d34HEVpM7F0EqUooTLbyXWIdB54k3A8QjScBlFOKBym/lCAgC+EVqFHJRqRMhG2797C2wdbaDy8FbmoIxQL8/rGTaSTaVLpFA1tvRSXFlJYnI9FJ6N3aIRNbzzPeWedgzusp3b3ARQyDRaTkTVvPk9SEtCYXSy/4ErMeh2792/GaTETj4cwGAwEUynaexpp7TyM3eYgk9aybNEq5CoDerUKhUqFXA4/uuGnhCMxokmJTDoNAmiDEPYH+fkf7+e8Vecwa+Zk5FIavd5GQVE2MlGBWm0ilUrS1tGBYJZxztnLeOaVtezfuo47f/tnAuEYb7z0FPsP7ODaC65kZLQLR14B67fsIhAO88bauzh1zkrKK2bzxIu/IRaKkoglyHM4MRoM+NoDzFy+GGtfLb7eCJZMGimVwC7LkGeUGI2GkaXd6C0mBjv2IqUkQoEQ8XgMlVpOgbWA0rIcave+jk0tkM52MNBTh8FkRkmSu+59iOhoirLcfFAqiaYD+If7kRtkKOVKFpXmEssomb/8Ip575s+osiw0NI9w+jkz2LF1B4GgGY0uiyEflBRMIauhF2OWhQ6Vn8budSywX0A8FUKKe1GqjCRRkEzEGB7pZP++HpRWH4ZYCp08QSaTwusfRKFMkVSATB6jp/kwZROnolCLCDIlgiShlMvYsGM3tXs7MZjtCEgMuj1kOQ2oTaA3GImnUpx98ZcoLy0mFI4SDAdxFc6mq7OVwd5O8gvLkckhLUnIMyJnnXE6f3+jBZ1eTzQeIDIUw5Y/i/am/SxdNZuu/kHS6Qybt2/BWWMm7A6jkKto7fRwzeW5/Pmvb2BSi9hsBtQuPdEOL6KYYfqcShobu7Fa9XjDaTSKOIlYiCdeepJl82cjoqC/tQ2b3UQ4GCNLL6FUixw40ElnwyFsJhcak5lMJsNLr6+mLF8iHInS2tFDPNXInGXlOLSjZJvU3Hb7d4gn0lxw/h4WLV7GrTd+G5vNTL7dQcoTobjQTHdXN8mkkkAgQDjoRkpCPBolEohRUGCC9AeX/vlcCEUAns0/xzrjGra2DDOv3PHP4z2jEarP+tG/ytqbXQy9fut/rUra0bLqhit44TcPftrTODYkop84EkilkOF94/tIkoR1xjVYps1n/f1Pkv+Xx/694TvlxxUqUKjRlY5n7e1nMi7H8KHixn8L6R8luz7UGNrb/6lHSqUzEpIk/dP4Ocei+bf0wI/KO+tcYPl4ouvbtywik5HG0qu+Nv3f/HjEo3h+V//vS1z88nc+0bWfmID7uA4nl50Uij4uHxSN817HP6uCw+ctquiTrvMniTT6rD7TE4njvYbvft9PPr+TfBJS6TQvv9rK3Nk5dNnCdHancVjtZGe7mFFdyvfu+BPzT5uOz32ESy++iv994udcfeXVTK6aScwzTDAeYcn0ZYSjaUKhMDKZSErM0LLrbbIrJhAMhQmLnXSm3QgJJ4N9fSQTYUiD1WbF6XKxZccBkkmR/LLJFLqKGRztpNBVQrQ/SCAUxWhXodAKDHdFEBVyUsk0oggIIKUlECGdSGM0ZWErK2RgyI29dBarJp/L/DlTsBiNuP0DPPDHu3jkobu54/ZfMK3ajj+zgOZd+1Fkq1hQuorHn7+XU2degHuwn46du0lMCJJdrKJlcAS/J0okHqOt140/nKSkyEVbhxvHNA1KMUUmFqazr4tUysXcqZUc2tFOJp0mHE6SzEjYzEYSqQSj7j5Uog97gYn+Vg+FuQJSWkFaSqJQKFEo5fS6B3BazJgtKu596O8M9w2j1CqxmhykUjF8wwdoqOsiEYxSXD2OCVVFPP3EMCa9juWrFjJ+4lQyaRg3vop1j/6BSFLGwaEBpk8o4o3X92N1WGiMDJBbncXB5hepKT8fmUJOLJ4g5AlypK4VUYREIokokyGXycibOB+H0860BTGmT6zA5+5m6WlLSQRHCfeN0OsNMqtyEu071hEJh9GKInHfMOXZclwrloEoIGVSHKlvQEeK23/5DVYuuoDTTztzrBiuXE191wDTT0miUKnpHRhCJhNR6dQUy20c6Oujs2uIB+57gDt/fSfd3d30NPUxFPJjtufy0BMv89XLV6BSZChwWYjHAsikIE3NbUyeVIHZoqN6chWok+izTWSSKcZrrLy1pRXUBZiqZqI78jYuhYy0JJCIRbFk5WETBJKkcdizGPX7sBhEtm14A4cpm+4OH61NdSiteVizTQx5ROzOHLR6I/F4nNXeBFcunYtFYUGv1fD29qfoDwbQqXWoRDk6pZr65hasLiv+kJIZE7IZHOyltraWPfv2odGoWXzeqaTCEXKzcknJRujt7WVCVQmCVIDPF2efN8icmWehkDeikCvx+bz093exddcQgVAYjU5LIhll84bXeOnZXjQaNTZ7FumMmobmFqZNX8CAP06wo4k506uxmvTUN7eg1EsEO0Ct1BNXC4R8vWQV2ekbHEIQZMhlAl+96nLW7nsGtUWHDDn52S6KJ82iqnQD0VCMTFJAa9egNgmkIymeW7eFL59xHuGgn879B9AadWjkMtRKA6+/uIFhTxitXmT6pGJCEYHWpjZyCuygUuByVmHWqMnoMuh1BjobdzCl+jRsOg9xtZumHgdCdIievgSxUBqVqMVk0aAyGNmy5VH6fLvIyXby5Yu+zw+7b6TD08706eW8vmYT9939F17c9BwZQYZnOE2W00kiEkSrlT7w2/m5EYqEf5SuP/vSH+Pdcw+P7u3kum//fixtCcCSw9BrN39mBaJ3uP+iGl74zZjAlW/TftrTOTokiXHnnnNUXeR+/SkA2u9ZBaz6R7cSPaNRar58TWGmjQAAIABJREFUD/gGx8qRJ6KQiBKu3cbc87b9qwNBGDOVVmm57NpLuGNZBUaN/B+n/jsb7dFQ4qM1lCQ+YgX3Y847VckEQHYMjbSXln58I/Z3R4Udk0ciysDdfgw6+pjEw8d/zJN8It4dSXAiRA+d5IP5IBHh/z7fE0kQ/LxysprdSY436ZTEsEfO1g29ZFmtlI4rZWhkELGvB9PMU/j21y/gL48+T+mMAjRqgQvOv5Su3kFmVM+jsKCKvgE3GQS0WgG708xgwyFGQj3k2SWi0ShGrRZjwsrS0lk0pEaxaDS0t3TQ4/WCkGb/4XYON7RhtZgRNXsYCbqRZdK0tvdx+uIZCP5+9FY1kkbAkshgdBoZ7hxFrpQTcifJCBIaQY4nJDBt1iSqJ1dQUTYOs9mMLxQly27hyiu/SGfHEcqLi1GrJfp7hgkmoyyZuhDvaC9e3yi1zXtxFeeQTjcz7PYRRcum12o544JZjK8oYQg/mWQEdzhINJqkqaUXZ5ad/qEw46pMbNnWilqjxmhQMzySIBETUMg1WOxZKDVpBCmOe2gQs0aHJMoZHYqgVZsYGg5hd+agkgt4/X4QkwgKDaO+IF0DnZj0KtxIGHVa+oNuvOE4rYOD2LUaiIPXN8qrr61GkjKYLXZ273iW7XueY2HxOGyTlpNT5mDXrv0QDuMPyskvrUSt1mLLpHA6Rbr6gziNbuxWNWLUw4H929iwbTdKlYpvXPU/yBU6Rn0hEvEYnlEPqXSStZt2U3+4lrLKcSh0uSjkBUwuNSGpVXhkGhYumse5Z86lvWuQbGsOibSXjjUPY593FlaHE99QjGynErsjm827DnBBXh6PPHIziHLkcjlxv5+pkxfQ0L6T7NwpaIQYRpOFFecvpKutiT/f+xeuuOwymtLdWLN1XP2lM7g6fDpbDx7G6/bgGR7Gme1Eo9CSkCSMFgfjxpcgKkGp0GBQKBgYdPPoq89RUTqX/vZW4tEJpGMxcoon0jvQj05uJeT1MHPhNLp73KgMKkbbBrHrCsl3mAlGBNp6D3HLtd8k5E+xaV8/Tzz0JzZt28sf/vBbsvOqWfWlc3j8qdW4sm3kOpIkFRBPpqjbuY+hAT8ymYiEQM3kCrSGAvqGRxhfNYPMuRVIgoLeLjeDg83IRbCEgngCQZYtXkQoEmF0ZJTurnpcWTbcw17OXj6LebPnsGPHDjZufJGmpgHmTa9h275mqkr1TC7Lw5soJp6J0NXRzuBwBw6TDFLt1G7v5pZb/5ebrr+ZlWdNJhYVyM+z4Ro/AbUmwEsv7cZs15JnMeGLBJEhkUymKM4qQ2Ow4j7cgSiK/PTe+6ksKsCoU1JeWEKhQ6Kpzos8YyQk+XA4spGUZZhUtYRlMWQyJRabA7tFhaRzkvCOoBTAoVNz8MARHJoiuppCRGNpXI5CIpEQDqONcCSCUi6nbW8brcpuZIKKzvY2NHoZhbZ8PNogAX8cNXIGu1uQqzO4290UWAzc/+gd5DlMlGUXkSZK30CI3UfWUmDTMaRSoVcpMbqsDPolRJkM6QM2o58boQj+5VVkmXXd2CZcJmdk+++OOo3leCBJEtYL7oO+RhAEqpd//4ROP7vtjSZgLGLkaIge3v4f6oEgCBTYtXhfv+k/2kuSRDw55t3S74sx9Vt/g94GiPh57Od/5rGf/58LBGFMWBDEsb/zxzP4xFdRysVPLCSVr7rro0cKWXM/0RjHgmP5u5D+kc6ZbVYfsz4/MaIM0snjP246dYyUrg9mLAJL+FwY3n8avFcqy4m2CX23ufOJNvd3czyioj7MKPmjzuNEXueTnOT/d+KxKF8/Zz6/vO9h6lr6MZs70eTpGdFruawgh5HRfn7742v4yZ/u46/PP8iFyy+npauXwZEQ48Zp8AW8yKIeOj1dxAMB1q7fz6krxqNRiWRGmjAqFFxwzjLynS4qCsM0d7lpaq7HZrbw7Jq1dPcGUcrHvDndqRSSXGLekgvobmnmSH87kkpALRhQ6WTkOm2M+EJYCw0oRAUyScHwUB/RNPz4lrs4bf5klp25nOrxZWQXVdNSv49EPIrTqiMRHodal8U3zv06Bw7WUT1pIq3tfXjCAfyjfuZPqWGG7lSam1sxmwfQmdXkl6txqGUE/ApSiSQWk4OMlCFlTRPxZZCTRqUWGRiQyLEX4LAbSfhiNI/2IyFDEEWCniGkjIQ/HMWi1eByukikJCKxEGqlHLVWQSIuochkEIBYLIlaEEhk5Ay1jnD6mXPp6RrGZDIQTckRDWk63WpM8ggahZwRb5CoScGSWZPYuKsZb52X2667jBfe3Exm824aOgaw2mzojQ7U2jjFpeNJxKIYJD/eVIR4NACCyIgvSWyok5p5Kzhl0UWEQgH21r2MYFBQk19IKOWn3DKJX997D3/5w10MdrYzYVweea48PP4I7hEvfn+Ivp4BBFHkt396mgyglMtRqeRotLn0HWqgZvwErKfO5tQ50xka8ZHlcGCUx2g5HGH+gkp++fubuPFbdzCpoIKrL7maEa+Xv97/J+QaBWqtiYKySg7XNpGRK8nKzsHXn8CstqE2axB37WQoU0Tx5BII9WHOsaPVF1B3YC82S5C//WkjmXQGSQBRVJGbX0hrXT0//d9r+MO9dzO9ehLKWA5GbS7h1DCd3RmCsTB79x9kXNV45EoV7b4kF542C1k4gVbIEA5GeHPjTuq7ezj/4q/yx9//nlA0gNkyzIb1m2hr28n06oX4DtaTLC1Gq5XhypqDKG9FodTjyM5Hr1XgGx3GoVaz5+Belsy5hIaWXXTp61HLdOTIdFTlFhBIxkgmkmzfvpEcg8RIYTZyMUMi0crwcJQbbn2cvGwH3nAAl9NCbVsLE8bnkeMy09DWi88zStfgCBadGo1GRyaeQJIyFJY4eOhPd2N3yamra6VmXDF/e34tVRPn0NG8m0gkycTx1Tzz8guk02nmzy5DrVERTyZQdgoU5BUhc8m4+kuXIMrSaFQCGbGRq85bwqWV40iLEq0eBQVaeH3dCygyXqZXj2fHugP89kd38frGp5F3BrCV5PHcI+uZd90MbNlRUqocXGV6DBkdHf0dBANetIpChHSCs1deRDwdR6+Qk0r6UeuUzD6lgt37WrEo9KQMcnRaGUtmX8jB+h1cdtlK0qpJ5FjStNbt4pX1eygudKBJuXnq8WGu/NYVDEU3sHNNHUJaxpRp4zjQvgXlBySDfK6EIkEQQKmBRBT3jrs/kjfOp00ylcH15UfJtO4bOyBXMvOyC9n16FOk0plPpWz6seCPt90DumNUOc5R9JGbCoKAWjkm0pQ4dXif/ca/nZckiUgizfWr63nmL8+PGZqnU5BJjomL7QdwzTnw7g7BXsi0ZbP488WTKbBrkYsf4o0U8kD2R/PIaX/uuo98b8eS/5bI8JkQZQ32sbS+4817VYP7bwxz0p/omHGibf4/T+lm73CsnsGxilL5OKmJRzP2SU5ykuNHKpPh9w8/jagXyZIbCCeTaORyShw17O8aYs6smRyqryc8nCLgDvLX5/7KlKrZxJMpWtraae7YjlwQ8ft9nFIzlRdXb2ZiaQX76utp3tOB3Szn8ssuJJ2SWLOpnT27jjDiiVBeZGFvfR8KjYg8JaJXp1hUUE2yQIXRrKYivxJPOMPW9u0YTFqKLXbWr9vHqbMLGEnqceprSI2zIhcUvPzYn1gydzJPPvMa2VllqPUWVCoZeVYjSmM+o54Q9z7wS75/4w8JevwgwhvrdnD5F+dw0+SbaGzuYtv2fehNOjpbmnCaY2zb3cqS5ZN57dVDKDIxcvKcZCQ5GBRIPhFHoQYprWA0FKDabMFpzKXQqefVHfuwaPU4LFacWi2HW1tRatRMKSkjGQlhsahIJxQkBAtaeQo0CSIBJZp0lLqeEZLxDKdOd+KocaBTyHj+xW0MeoZIJDJc+90bmT57Onf96hb27+6nvLSabvcwo4fq8BicTJ13FvFkGqvBhFIuR5ujwRLxISbjpDISKuwkdAN4hgXSeXHUaiVVrhLsNguJWJSuiI9TyiuxWawEQ1He3PIQprSFvGm51FRMpLEpzozpi9m6didWfYbf/uKXFJYUccWV13F43xu8/fYhfvW7u2k4cJALzl+BP5amvqkTr9fP8KgHjy+IWqHA7emnof1FBEFASmd4+ZVnefqxhwlEkyw/41LyXBamTipl61vraO5xM666mu0b1uKJbmXOlDk0pNX0949QWZ7Hb998iyuSCznc2sO2th5uvvlGrGYjf73nTpLJKJJMxKrXc955V/DwU/soyHOQkRJIkkg8kUAmF7j2B9/j8ivOYzjkJ9ohZ9A/jN3uJNskkYrKqCwqxe8LYrCXk4iF2bd3L6vOvZhULM7EmVNZvW47NXl5tHt7uOaqy8lz5lNZVsQzL6zHrtMR2NvJaEkW6ViQUW+Q227/Ib+46884nS7iaYmUrAO9NoTHE6WmpJg7f3Id80+bhMKbQOc00tPvprV7kIvPX4xao0alSuGOBbCbVHR1ujlyuJuqL2Uxp7qUV9YeRC4XKB9fiLc3hEFvJRTO0Dk0CHGwm03I5DLMJiMjoQjNDYPk5Vkw24x8+7tXccON92NXClg0MsR0mEg4TjyWpC/cg0ptQZKl6Bs1o1Io0aq12KwOlEo5xXkVnHbj5TjtJu768XewOzQ8vnYLk1YsZ+cTb5PK+MYigfQKcnId+EOj3Pnja6g7vJ3H//4GUX8YnQX0NgUG1EyqHI82S0EiCpI6waxTL+Hw/m3k5Lsw25yk5HJCQ6OEVQa2rVvPOectxhdMoknGcJkUZEIC/niKJG7kaj0lZRMJ9rehT+u55ef3MWPpJHp73ViLLdhDKfZsfo7mI0HOunAm+3a00dY+gFIUGI5E3/fb+bkSigA8236FddZ1OFf8Eu/aWz7t6bwnmYyEbc53/5UWJwhcevNV3LNq4j838JZHn8Kx5Da8m376Kc70k3HeA7tAkvBs/MlR9fNOVSfPmuuPxbSAMYFEp5Jz30XV3HdR9Xu2kSSJVFqi8Mq/E205BKM97H2yi+lP/P0/G4uyMXFSY+Tcry7nFyvGAVD7wFc+cB7x5JioYNEpj+6G3od0ZiyQ8HiZfd/zdjscxyiXdyKY3mu8whlT6Vr7KQhFx4mTkURHz4ni8fNhaXEnwj2caHwc0efjRCT93/4/yTUnOiff15N8WpSXVXLTLf/DA7//M2efdxr3Pfx37DIjDl0Wc6pyueevL2NzwWnnTyWFQJG+hCmTq/jd3Q8gMAer0URrbzszalZRlGfk9OUreey+tYxfWEZ5eT55Zit7N/Yy7czZ1PYdRJszjoJ4lLQEriIrAXeMLJcdUZ1D8aRKHn22i5oJcaTUCDJBS2l+KVrBwobXd5JKGxmOjmf7uhdZ8QUnZ51xKZBh51uP861rr6NreB8OWTYFBdOoGV9Bs16H3+elb8DDitPPZsaMKvrbG+jrbqe0oIBoTMn2vXVsfesZGlu6Kahw4PdGCIUVXHzO6Rw+3MDkylMIhPvYs+8ISr0aW4ERc74Fk0ONRqEk1BqirrUBhVJHKlWIVqXEH4siaZKIaT25ebnE1BEkbZi3d9TyhQsXopKryEgZci3ZDEdjSPoItYf6kJtVxAeC9PS4OdzWxLVfvpivXbwYl8tGW3+QJ565h217HESjaSafuhBiaUrUKvLsIglDOckM1O99iepF38ORryXjUaORtGgNalo6+xgdjXHaaSvR6oMkBmPEM1B2/nQ83gDlpQVo9eficQ+Sn2WleGIh13/1Vp585RE8I34OdbYx2qokLUmUnTIJ/84mfv69C3lg9R42bNjATTfegf+qMAePtBCReXjp+WdYfvbZeJp2UVJZyFBTNzXTp1FcMQFZJkx7Qxul4yr4ypVXI0PE7fGz71ATUiJGKJ4GKUU6mUSmVIMoMn3uGVjtVgqybOTmf4tUCrRaPdlWgT89/BSaIjOTnFUkQn5279zCQHKElVOWMeTLkFQYee3tTSxatJTBwS7MFjsKtQL/8AgZMlywciatvhh5FgcDBUNEBwcZ6BnCJulpa+jFYDJgtmQhU+uIxuTs2l/Hjh3Xc9uP78QfiTOhsIShsA91KMKEsjx21jXz1ksjTFLaSZodNHo66dncx+mrFtBY18rh2i243QeIJAwEgwGmz5mESpmPUi6xc90hzHo9seEw/YNhZBk9FouRJXNnMWPRWbhHYzQ3Bxj2DKOUqympmokj/xRe2dSF0+TBF4siZhQ4IxnUdg2rVn6BTVueJttkIyGoCWW8ZOJgMWoZ9kTRqmTEEmpisSgPP/4khTlpouEuEiktdp0Op8VGMBzmwLYdlFeuICONEgiNUlxopaPXj1Kvx+FUYMtzEU4pqKs7jEqhIhEQUKKhb+sufn33D9i58xCxaISw30fXaBORsIhcVJAQZHzz0i8iExIMjAZZW7uZiBBHtMGcUy+lvbsDARk1NRMQpRjhWBSZTMG+rWsIBMJEInGWn7WQv7/4FiPeES6/YDkNBwOsuOgr6K0WXl27mawCHd/63l1jriainFMmlRAZTrP70GHSKQlRJrFg8VyikRGee2w9806dRUCXwOJ04B6pfd9v5+dOKBIEgbeeup2lF/8ISZI+U5sqSZKwzr1pzE8HwJLD8Os3v3fUkCiDiP/4TvAYsemhp46JaOBYeOtxFR/eQRAEFHKB/r9eClz6H+fjyTR3bmjlD79+FgLDY1FJsRAv/e4hXvrdWJua5TeNPUO5EnQWFl64hLtXTSLXokEUBc69f9d/LU1JkqR/mUFLx0dYuO1794Lx4/sTHQ0ZCQRJ+g8x7CdfmMRlb645/r9/QRib1H8ZmSj8Uyg7ydHxWU3d+ji+SZ/Ve/gwjpVo8GmKDx+3et57HTuRUyBPZE4Usfgkx4ZYIsH3brid8+Yspr6hk+qyApq6usnPbubuvyZYvux0/nDvLyjK0jNpxgqMOhO79tSSV5BFJp3klOpFdLl7OXLkIEuWXMeCuJaV53yBt996iOKZZXTWtyFk6XnkxV1IqQTacA/mLBttvZ1oJCeCw49egpVnTOGlNw4w1L0f45wzefvgIGJ6ArOm6kkI2Zy6JAv/UA/FZaXIZTXs31vLtre+SCqS5sILF7F1Zy9JGTiLS3E47LR09SGTCXj7erE6c5g3p4J4PI7MHEbpS+MeHaCzbxCr2YJGb+aUCWZk8jA5zlyO1Hbz4CPPsXjxVLzeAfqG+imtzKOtc4Tzz7mK7vZ1WG1ZhAKj1PU0k4hpCQT8JGJRVEoFoUgCuUWPV4gxp+J0Gpp3UVlZQFNvI0XZuWQyMob7u3nm1W3EIwl6+r2cs2QGnb2jaLVakoIHq0FLbuVUHN52fIEwCxYs4MnXdlAoSox4Q2Rr0wwPDeL2jbJo/gIsNit19e3c8tOf4DLnMbDfRDKYYkLlOPKrcqH5LXprfbz2yrPMnj+fjDpGIqrFPRwiLUmYdCIbN71GUa6N+37/PMEELFm6jCytnhdf3kBevhW9vgazzoRSpaHf7SOdilFaPIG1b67h6q9/lXQ6waivi6pcJyW5Rfzqp79nxqIyDnQ2UXu4lqw8F40tHWTZ5Bgs+ezZ9ypaC8SDce768XfpHgjxgx9+n0A0xoSKalKSgj63h+7uXjISeEZ8jA57SSSTyGQyhjQ+Fiy9CIvJiNmooLKsklA0QUFZFVdOmojXGyDY38lpCyfwzI5nkWeluXXZWazd005Z1Thc2Rb8oRiRiJ95FRbWv/Yislw5RrUZ99AA46dNIdQiEQhGsRdYSSn1WMlQNWEJDrOBSCKO1eJEbTIRaG+hID+bUEpFSfl4hvs6aIn1o4wH8Yb8lLgcaARIxST2tbyEICVIp1Nk5zox6DRkEhle/Ns28uxqYsk0vT1hqkqq6BtowWbJ47mX1+GqWoBWK5JTmqSqpogZ41bwyqY9IFexaMF8Qt4Gav1dWGQWKseXUFfXQX3rVnQWHSV5+extqEdQq4mGI9isJtQDHnr7fbgUeiRRhl2SoTFpGRkOU+KyYdUZyHNmEYpFCcgDVBR48IUznLvgVA7sPUxWbgnZTitRxShF+Tm0d3Syb9NrpCUBlVKFwWRi3tKzqNu+Hs/QAIGEGYvRhE1vRmnIAVFLc3sLS2eVkyFNJRLPPP8S/VODiEqJ3CwHRp2K9nY3N3zvR/h6D3P2F75KYV4+ToMTldpDn7uPhMzOpMmzSIk6lMoQppLJyDQ61Eo1o/4wBpcOrclBKhLDnFNK675n0RlLyMktA0HAO+rBYDBitjuREglq6+tZvvhMDjXvIRSIvO+383MnFAFMK7EAYJ35nU/d50eSJEqveRHvrg1jBwQBCqvxPnflB153YM3PmXLm94/DDP8LpFNQMPHo+4mFWP3k/x59P8cYlULG7csquX3ZD/957N0b91Rawnne3WPpT+kU+AbYdP/jVN//n31ZZl47lrIkyv4VnWSwIzNaWL68mrtXTcSsVXyo4JHJSCTTGQLRFLt7PEzMMpFznPyCJEmCVILRN3/44Y2PEYIgICKRTEuM/+5qRts7IZUYq24YDQBgnXXd2HqqdMy/cCmPfXkqBrX8n9XwjrmQ9I9qdyc5MXi3V9FnYYN+0lT7k/NZXauPMq+PUq3t82TA/WnM+6QYdxJRELnim9dROW4av7nzFiZV5pLnSjLk9hNOr2PTlno0OQYmz/4iWc4cfnfXz3A6DVz9P9+hf7CNXQcbkaGnrnk7f/xdBLU+l6oJ42jtFzhy5C3G5ReyYe0LjHr8mKxWZsyfyPCoH6XVjEabRkOCiKTBlqWju2OAX/z6Fq644nZ+9oPLCYUkNte2cNaiU4kMrefg4A6yKxRoTZBfmodap2B87gzshlxuvSGPl9duJDsnj7zcbLq7oxzcsYaMNIJOHMGRY2HP3iNUnFJKUtbPgsnF6E06SsuUNHbbsWaUWLROKqrL+cPoawiJJIVaPRa1BZfJwKGuDjLJOPqUl1de2I1CoWTR3BnY7C4cdgUqRRS71szMwmnUtTZzxgXf5Oabr0UTbmDR6St4fc3ryGVyehuaWbNngLzicSQEKwqzEruoRWEwIJPUpOUJhtwSem2Eb333ZhbPmUlBgYU/PvpHNEKSwR4VWl028lgah9NCLNRFvWcbTZvrkMkkXn/5cW745oX0dXmQpTJUVVWiU8npbQ1x3VevQEJFYHSQ1pEuzv7CmTR2BLHbzAx0tVLhzCGYCFJY4eLee59m0+YtTCjLw6iR03C4E+jg25d/DVfFVBbMOY1X9rXg9Y9QVu1gyBdn1BMn4xvkrWYBpdLL1EmFmAwaHn3mVaL+CJngMDbnRELxXp74y/0MDw1wyYWnMhTygUxOSWYa993/FAvm5vHCy5sZHR7gtGUrMMtDPPn0c/z4tp+RlZPFtddcjVxu4JYf/BB/KEwimaKj10N711YkRGQyGXqdFrVahUEjp7U/gj5WxpSKAtY1DjKhppJN23ax/IwlqEU5SpON/YdbUAgCqeEYUW8EvdbItPlnoNJlodfp2LK3kSuv/CKtdQdZ9+YGRvRqBJWKZ//+LE6DnKLSXMzGXAb6+sjS6RiRBOKSHJfNjD/spb1/gODmJOMKS1H4NNgNWvxBP9lWM/s2HKKipIgz505i464GnGYzoXgCn28IldZGMplk+fyZjI6O8sab24hmUihlQX74q2uZN/dyzCYDu/cdYXK1jLOmzMOo06BRqxlX6cQb9qASoamjiXyHhaRMz2BygK6BMHNnTKW9x834PCPPbNjNUCqIwWAmo9YTSyZpbGygx+OhNL+IK75yDf5gDKVKjVwhYjTbSKZSzJt/JmQSbNq2C4kwjuw8NA4dJrQ49EoK8gp5desWkvIMSxcX0uNVsnHXi2hs9Vz/0zf5xtd+xeG9b/NK4x76DgwQSkTJNWsYDsX4yo3LOPO0r/L27ucJBEwo1SrqDzdSmJfHs6+/js1o5KKLVyClBtHpjTgdepI+H2a1GqVBxOGyk5OnJxIKUVk+DrVKQygapUNQIMpkuLJzSackCkrMfOMb1/M/V4s89cIbbNn2MJ09cYrzJ9Ja3/u+387PtFB0NP8zN5wyn+D+LZ9aVFEskSZ7wffGNq8AgsANP7+GHywp/0jzKXLogDEPoxPBa+kdhvwxAEafveqo+mkeCAIwr9x+1HM6Hrz7mSrkAt5X/tN76J2UtvXNQ1zylZ+BKOOMb36ZN17aBZ7eMZEjFoJogPSQxJqWvay5mzEBSaFi61M/oDLbgPiPiJKMBNFEmjvWtfD31bVEhgZBoye/PJ8tP1iMKB6faCzr0rH0yOOV5vYOgiCgkMGz313I0ltfIj3QPrZ+73gFZdL/jPba8uATFD34xLsvftff//h9iTJwlbP2NxczIdcIgEouIgof4knFu4TC4xRV9Y7QdZITn6MRiE70qIiTm/b3X4MPe64nmmfSZ+U9/ShV8D6Mz+L6nuSDUcjl1FTXcPvtt3HrjdfQVL+f1rZ2RkeamXxqDTuaG1Eo1CxduphDh5q5/Kqr6e3YR+eRg8QURhw2C7NqzibXmoOroJynn3ySzuZ9BHyDGDVaRoeGWHnaLF7aVMvXvrQMfySISafFZZGo7a1n2y43Bjy0HmkiO89Iw77D3HD1Bdzz0PNMLJuCTC6x68BqUjo106dPJBKIIUsoMWmtXHXhFfQOjeAPRti6ax8atYhIgs72A3S09NDR1kwmHWHxGVN58Mm1iJEokWicnvpBjmS5KE51Ek6VMb1oNtsP7CbHpeLg3k0oRBV6Vzk7mgLkFZdiNkaRaVNkpDSD3hBlVaeQTgRp7vGSDPUzobKUpEZOIBQg0nKYQy29nBqNctdd92Aw6fGMjPKtb3+bn/3xah5ZvZspc09HoVDhdBUgSRnS8SBGp57yQCH9uOkd6GEkJCKTw8atUU6bP5mSPAlX/gTqG73EYz6MufkM9LVw3gWreOKxh+ltDDP37Cr0LSz8AAAgAElEQVQEsYf7nl5NtsVJe3c3Ow+3IBMU3P27X7DxrbeYOvd0EkoLFyxYSUfPIFMnmvD45Kx+eTtbNq5DLpdTXZ1FIpFhXLEDhUpPV2c3okzOhIpKNm/YTHTLYWomGhGjYdSinglFLn55xzWMr6pk0uQSnnnzaSZXTOT+zbV87RsryMq34arIoWmwA3PGhDPbTmXNfAwdTQx5NWzYsAWL08nUqVOZUDMFjTrM9Td9i2Asxpa1b7HwzBWcuvQifENHePmNh5g0cQpJpQUJCatRx83f+w4/veP7uLtH0djsTJk0jtqWXgKhMDqTmXg8QmdnE90dTai0Wg4d3I/XM4okSZitFpYuWcDy02bjHp1ET9NhVMk2gpEwSrVIxeSJiAJ8rXocmZAXhSgSDvkIBuMUF+TicXfgHYijklJMGZeitacbZ5YduZBGZzUzMjKETKFmYlkV0XSMdDhBlz9EMiVh1xoZCSQZX1SOSlDQ3d9HrsuBQW/EJddi1inp6u/BFxaYctp59Ax4CUa7kSsy+MNpvv7FL2IV9XjTBoTxlUQT+/FEwoR8MfTaCFExgkyhJB6J4/aGyDJb0avkDCjkBKMBWjs6CfgivNRcj8tqRqHUo5RJ5DhySCdD9Lu9lObm8//YO+84O+py/79nzpzey57tLbubLem9B0goQgBp0q6AgoooTcrlWvGHiiAqYkG4SG/SiZQkkEZI732zm+29nN7bzPz+WCIWQCABEi7vf/a85sz5zjPlzM73c57n86QyMXRaibQCck7GotOPdNUe+XWZQV+QtrZW4vEol19+BZFwBK1OIhqLIcsqp198GYIgkM1lqfNo+d7XbkFMhMlmEphNOTx149C2dGCrU3GpWXq6Q+jNBiZVzSPY18q4kgnsC8VJxWRQBVLpBNlslj5fgANtHVSUlmPWpdCko8gSDPnSCFvfYEc2SfP2ffzqrl9x251/4MfXX84Nd9+KIogYrWaMNh/Tx81i4/Y17G/ZydjysWgBJWNCl5ckEskgfkADpqNaKDqcaWfX/efjnP42rpnXE9x0zxGL6YNQVRXX8T96t2RMI9G//h4M2g/ZAes98C78McG3fnGEIvzkqTvpZtDqD1s0mPHlHwCfLz+WQyVtX2ooHFngKubpr02Fr019z/VVVUVVoSeQZNoNLzDvgtv+QXgUQSOBRjuSNWOy89gdF3BKXcF/Nts+0oQHGd74+09ve/+AIAhMqnDge+prH7ieqo5kHwXjGab999+I7t8O2RRS1SRyiQT4u0aObd8BTrnw1pHsoA8fxMj5UGSI+en0Jf4u5NmMEma9hEYURkoBhXf/Horro17jqqqSyipc++Lej/S5L/h3Piuh5f969tDnoezsk+Yfr80jlZn0WV9nn9X2P+52P46x+ScRxxccPqJGQE4GOWVOLeuWvcwe317Ki0t4c20r8eW70Nl0uGrsRAe2MW7MJHbvVfjJA49x/nmLOOOMS1mxtJnt4Q5qx05h57oVlBaY2dvUy5kL63jkubXMPq6axzeto0Snp6epj+KGWsqqJ9KxbwnzCs4hL3+I/VvWYSTGirfX8+2LTkNF5LhFKquWb+SFR//KymVPYXSPJtK7m8KqyaxYu4mKsjJaugbxus30tbegzUZYuXoldeOms2NdO/3+MHpRIZZMkIqncTnyGIz3seTVnaRSeoySSCg1hCFbRm8siSExxJoDvfT29uKxzWXmzPEU5tm5994HmTenls6DQ6iKQCCcoaZ2DJ0draSTSdI2GcmqMLG2noefXMLQQJhsWkGV4+QXlrNp8xYeeeBOJJ2X7rYIoNK4exMzp1VhdhmYPfUMOtpNbN64j/KyMjoyAxR7yslz2eiPhOhs6eLhp97AbtZy7VU1pOLtmEwuQuEQ3T3dRHwl6NwTmTg1zZZl6/n1nd8jGYzyyOOLqR0znbbu3eQZjfiHupg7vYHGznbM0sh5j0RibN8nEg82U15sp6GhjJpRBfSGtZROSmJOuUjG0xR5i6kpLGRYG+Ti82+mbsxovvON8xAlKxNPuowDq56ipKQaT4WTpsZ2PFYdA30tmPQSB5tbyQyF2BtJYTMasETzUZV2Zo+ux1dbx/oV63G6TZCF5r3rkLRa2lv6efyFjXzjO9/DqHRRP7qSngEfrR0tGMw6/vsHP2b3vj1EI1G02TiPPPMaTeveoMvfRp4aZfmKDtScHo2jjPlTx/LAH+5CSMtokClziegNaaxePUZlmMhwH1u3RqmrnoTV7sVZMoqs0Y3JqKezswer3Y6sqIQiUSwmAwN9vVh0Cr7hEAd3bKTQamLAr+ByW1i9fT+RWIy508ayLZnEZLZj0hqwYwIhidMEm/a2kU2nGTN2OmQS5OXnMTTQy6jifAxWO1qtDofFhstipae/h/7hAc4//QwOtvWwv6mZwLCFAwfWUVhn4u11m4kOJMkmVbxeM448C/MXziWjyRFU0sTjCUo8NiLBJOVFZYSjKXKxLEVODyadDq2okE4lmVY/iriqx6zLkZW19PiClHvz8AUiKKpCKJHhmWeeYsbxJzPYthFvURG+tihVdWPo6uzgqZdfQUmKmE0W1i95mi179tDZ60fUGvjZz+5CFHPo9AYcBgvpjIJWKkUQS1EUAVSVsGrm4tO+xt+nZ4IwMn0AVAREQWDieA25TAa7w44oipxy4UmcO/dUJJ0Wm91KJplBzikEwn5cxWZI9DDY38fsidNobepl/tx6rFYT00dPImgc5vKvf5c7f/0zDja20ba3g6ez93JCw2y+d+VNxGK9+PwJXEUetDu2v++986gWig6XlhW/pnrBjZ9497BsTsF7+l3g7wZg9Jlns+GdjI7DQm86pnyKFEUdmWCXNhz+YKqKdfL8wx/naOaQmfn7ILxzEynzmBh87BLgEuBdAemQJc6hy+yzENWcC24FUXPUd+cTBAGdJJBvN9B1//nE0+dQcs49DD/5wabjMHJdy4pKTlFp7I2w8NpHRzKVEmGQ3+mWp44YryPnmHjqf3+cAN9nuTjy3qETrtGO/M1lPpqY9QUfyKdVfvZJCURHS/ncR+FYi/do5+P4JX1aHOuC3oe9Vj9KFtgnfUy++H79M709XSx+7nFCugyhoJ+EX6CoJMb40Q1EfAGqy0vJWvTc+/yT3PCNcYypH8U3zzuPA4kW9u9aS/WEUQz7U1jNAlI6TL7bwXnXz2fp6p1ce813GNy6hi6jTFQn8dLy1ZT1ZAln9pAc2krfQIJLv3sLgyUVvPbcI+icIvc88ToRoZeKggksmD6THXsbKa6YSCgaIyLk07llJ7FoBJ1ORifBL27/CXVjpmB16KibMosVr73KmNpRaCXIKuALpVi2ZgexpIA9vxib2UHCICMGE4RMCrNnldHU1I7Z48U/6Ccb0DHjxAl0d/TywjNPcOFFl/DwQw9RUG8jMZjB6jCxb28TQ32dmN0q8VBm5HEkLWMUJQRUUGHx07/j+YyE3qpDr9WRtoXQWiVysQynnnwaTnOI9sF+BkODaBSF2TMnoGYE9ggC3gIPOo2On179bd5ce5Deni6E+EGG/WFESaSmbjS5bAazQeCPD71IRe0USsvdTK85ne1bmsl328kvzkdDCgmRhGwj32lBr9WQl9ASiLaRDPmor3UQCoi8snUPl502n0u+/E2a2ntpaxliX2uEge4YBklgVHk5eXaVWEDDa3/9I8slE6LWiEGrIdb0FnpJoLjYhG/YTyAYoai4lvaDLVisToZ7MqSTEh6bi0g8SLVDpqCsiM5oOxaDEbfFjsXgIpFJYjZbSaUleocSoKYQMiH8sSh2s5n8Bge7Nykg6jCZjHQ27qGgoop8s51kLI5+uJ1gJoY+ZkKv02PWG8gqOfr9AchmEDNxFMmIwSgihHQ0lBeyu70Hu11LMDjA5g2bySupwyRFKC8tYfmGtyjIq+fVrU9RWdaAwSiRb7Tjb99LJh7G5XQRTcSRRB1V5aV0Dg9id7goKCymq2cAr81KPJ0ARYPF5WDX/o0UOR04THrSOgPJcBBVSRCPqsybMYODXf1ojAJdrc0MiQqjSvIRVB2Txk2huGYyoqSlr7sXOZOiqmoK297ewKPPPsnTz/+OoqKprFrzJL2tfgLBMAUFXiRFBJcDKacSUDJMqCrhrZ07sRuNFFkthGPDDEVjRJI5LM5igr5ejPmFhBIxbCY9iXQORQaXzUNfIEAsrtDc0s227W1ISgtotJxrNpMJJ5lU10D/gB+Xw0NpcQlb9hx4Z/6VweGw0tW9DZ0oIOr0CKqKIKqIgkQ4FiEniAwPR+jvTJBO5zj77Fm4LV5UjZZ0JoeiCqiyiiTp0Ov15GQZNZfjrIWXIgsKqbRMeFB+57FfQmMoxG7UkLNYqcirRRREBFFDedF09rfEmDlxEbmxWbr6Q1xw8XdRZIVZ87400uhIgJeWrmDyhOnkchk0ko7Vy4zve+/8XAtFbqsegLyZ1x7xf5pPbe/ku9+9559Kyzreuhu7SXvEttH8+s8YvfDGT6x87h87R6mqyvaOECd+54ERs205C0Ybg6/chO5Dlr6ddu96AHxPX35YcVVc9TwwkhV2rPJhztm6hz7eg+IhAQlA8xkmXG1tC0LUT+Az9gH7OEz78Rtgsn2odcV3MrS0wORK5/uWFbrmfx/fW7/8N7PpQy/TOYVHt3Zy55M7CHX3johNqjKygpwFrQGsLgpGlTLUM4Qy2AHpxEimkuadrERFHhGKTPZ37z1fcFh80l5Fn3T20LFWfnakY/1iQvzh+KyP02e9/U+Dj5L59V7rHsnvxrF0T/g0sNktfP3rZ9PR18PNt9zNGV85nnyHHU22hYMdAawHNUw8eRKeomLuf+gH2B12UrY0hpyBnkgnZ06axq6djYT6AxjdtfS37mHdtj3UVpcjCQqhRJJZM6ayYf1+en3DzK0ezd59zaxZ10TtaC9ej5vjJ49nz748JJ1Mw9gCRIqwZuyUNEykq7cbSdTQ2dOF224lGe3EbdWyctkLmLQGLjjvq2TFCAMBI3biqLLM9OkzGejrRc6pmIxDJKI9fOWMC7BqjLy5eRntB5t4tkvAaLXw5tLt/PZXP6Q15cIQ9dHV00HjztVcc+XVXHbhidzww19RXF5HJNyPv2cvO7ZsRkwHKS/VUlqch8lcA4LItl195LuL6QlHGFNlR5sxoiCiZEzYLG6GRR96m4bK8VOZPX8uqNAgQCSWwGwxE4v7WPzGMgxWHdUVozAXltLZHyYRj2O1OtjXFaJ9xQZKS8eSzUF3WzOhnI0rv3UK23u3UuwoprunE93uHey1Gkmks5iMGsZUFLF19yBX33I78+dM5d77n2XJ0iV0DQZQFJETZtQhSZcQU1W2t8psWt9LWZEHMWumz99GhbOIunIrOw60sGTVbm69/nKWrd1IbWkl1lKJvj4/mVyG/KpCQrubGGzvxWZ1Y7VZMev0qLIGV34hQjKB0aRiL1CwGI3kckZC4QyBRJyi/ALEqIDNYcSUtTIYAa1BZV/jMta/dYAHHvs9ajiDL9VNT1eKh5W7uOU7N/DoS6t49KmH+eEf7qPmsu+y/YE7iChJbIqKUWMhFk+Si4URJA0JWYuUjbG9MUtJYR679h/E7XJgsuaxdXMHnR1rEBEYN/0EbryqAYPeTTAcwaPXYyWOQ7KxfucqXHE9ep2OUMyHIGtIiwpeNUltvo11uw4yobaOlCyj12hIyjq0OoEJJTpysdHYTDlaulScdhuqoKFqVB0arRGz3URDfRmqqtLStJ9TFswgEk/Q0tzJaYvORWMw0d62lvJylZhez+tvrWfMxKncfeefObB/M6K0nYrSPM748hhsngLCMRmTViUaDOPyuvFWFbH6ha243JXo1DDD4RiqaqIk305fTGawpxmX3YXVZqa5/SAl+SWkExHsDhfdoSBVJSUEQyF0ZpFTFn2ZRCaOUW9AlfuxGPTYJCMUuikrz+dP9z/Gn+/+GTf/4g4MLpVssBOrXmAoEsOtlUhlkvzloRfRiwoebwFl5eXMmFZFx8EopTUm9jbvZOnildisDiZPP5nK/ByJZAJ/LIpZsDFp5kI62vbR3L8bp8VKRclUPA439z34Ggf3r8HlzqekpJTa0cVs2L6P23/y3wQjaRRFQFUVDGYzkkYgl02hqFmSySxZWUMmk0EUBFI5BUWR0Wr0/9Fa9XMtFAHseP1OJp12yxHLKpr4o2V0Lnvl3QWSDv+633wipT5uy0jr9KysopM+3viHSmCysoIkCqSzClN+tJTBzetGJqGq8m7ZzL8SD5E/+zomXnAeq2487j9ua9PjzwIjXZkOh/DW1VAy5rDG+Kz5IJFIeacz1uhCy6cVzifCSRf8GDTSMVke2L9uFQ/f9++Cz8clJ6ugyH+/9v/xmBx6adRp+PbsUXx79qj3HOPjCMJG7R0fL+Av+ET5vJgPH80t3L+YCB8bfHGe/p33+658Ut8ho/ZPn8i4xxKqCn0+H4++sIr5Z1zIUO9ucskQbX4fZTV6vIUmdGqSV55fTP9AlKKyEvIq7ESG4+QypYSTCg311SipAYZ8aQyZNP1tcfwBuOaC0yjNzmZXRw/FY4oZ6vezce1KiipqufW2H9J9YDf33nMbmZiWiooSnJZCRtmr0Tq9xFIy4Whi5AdbAdqatjL+9LPwd4qEQ63oVFixYTMLTz2XxtYupk+Zzso16ygfPZqWv63FNLWCvCIP5595Mrf/6T6WrVrNlZdfgmZbHtlMI4KkEouE0WhEIlENBcVl9EV6WHDSBOZOO45YWuGZ599mUo2BKbO/zB+e+AM6o0QslqCiqBCXRSLkD3OgeZDKkgLi8Rxjx42lNTtEbVEDA0NhLCY7WpOeMeOmsrtrO22Rg3z34m+i0xvIpDPodHrMJiM5xU1MFnHqbBQWl+OLymza9TYWu4ELzzmFV5cvJxmMUV5ejihAaUk+7U1bKHDo+cMf/4jNYUOcYCKXiDNklbBZLShyFI1gwu428dNf3EIgHOKZx37FXb/7HyY1zEEQNYwqLaKrowlRVcjkMpSVVLJr30OYnCcSiqZwWh3YPBYknYiikyiocvD/7n6ImZMrWLXxbQpb3cyaPBOdpxe5N4nGMBrEXmRVh07MYTJa8bit9A4GqCivoKO7jYKiGTTufIvxExoQFQXkgyiqiMNhxeLUU1wwns7kWySjEj4piMWjYenLLzP3uCls274PrSBiDEosXfc6lUVFlF/1Hbra2lm19QX64j7sWgsdySizXOX4Y1lSqSQ5tIyrsHKwZ5CxNdUMDvuwmrVIej1Voycy77RL0WpGfsi882c30dqylzxdkj2NjWzd3Yzd3IHOqsFbaiMaz9DdP4zeYKY0P59wJEwgHMVpd1FWVo6sqjR1tCKQo7KohFRMwh8Kc+KMWh55aQmlJaMJxmIMB6NMmJRPfrEVh0fDa0t2UldTzoXnnAnk0EgOyks0CPY8JI1I31AfKTnLuIZyyvvm4vM1kQgGOf2sS9FKGV5a9gSTrZMxqCqqVSI+MIzDYCI8FEYnyjjy9JjEBL5wlpygRUon6fPFqR9VS0/Ihk7U0N0+SCQcJWjyo5GsZAWFIpeHwPAgTr1IsHM3ewfXk8wMkk0ZuPLSM9HatXS2Z0insiTDUb5y7mXkZJmZ46cz//hFDA21ElYj6A0GBFGls6kXi72MdCyBP6wSP+inuSOIw2zH47ITjARJxnNkk2FAZemqtYyuz8NqdmI12wCBQKSD2rIy7rrzYRT1NVzePPIdBqoneHCqBoYD7ZQVV/HEM7u49ae3cO33foykKAgGC4osI4gKZlOGLWvfoKyiAY2ugLWrFiMrOjqbDzJ5Vj3BSJSGyhoy6dj73js/90JRRZ4ZNBJ5s6772B3QTvzd22x76tl3UwNcxTQ9dwO1Z98B2dQn5gdzaNz8c/9EcPE1//b+Id+VcCLLzB+9TmDr2hFD5A+DIIyY95qcnH/VedyxqA6bUftvIo/z5NvZ+dfnyF0/7z2Ftn+a3B7q3nUY3Le+DYDgS1cd1jhHM4nMiCgnHoMCyyEOZX0FNtz9GUfy0TnUpW1h9ZEznr7wka2Hde1/YUz92XKksoreq7vSpzVR/jixHykj38+qe9yxKL59VD4P+/h52IcvOLbJ5bL4fYPMqhxP3OUiZDPz/SvO5ns3XYeommjZH8JjtxEYSiEpWsL9vXR1tRMNqrjcQc5YMIt8p4m2XivxZJrS6sm0R3tZvmQpIj7KxpzGq1s2UlEp8rNf/pEbrvsao6qKMIVVQjkLbrOZnNVKVWUl+5q6MQ+nKNImMRnMGPQSu/Y0EvANoDeq3Pngj7nwxG8wrqCerFbDSacv5Om/rWfOpGJyOR/jGqoRFQ2hwf1MnD6LNWueQyP5EXQp9IqDBx+4h6FMDFUFJQeCqqDT6ygulGnrMjI0lCCDwFtvL2egYwcOTQqHycOapUuYWD0bjahiFQuYedxJbNqyk5hsRNIniSlOEsQpr53ExXllrNuwCaPDhdviZNLsaShKFlGTZPaYUVhSB9mxs4WMquFv69aQzaT41Y/upahkNFOmz+C+hx+ibswC7HYnhUWFjB07nbfX7Ka2ZiIyORYuPB63x42nyMz5513JNdKt/OWhB0n17yQUSRKPpdCix2r3Mn3eXAySyPjxNagqvPCCEXNWz0AwQ32VDbfTw7Zdg+RpQpQ6bEjpAS768gmkMgoHlAyxVAxnaSUDWZX6itF0DWqZ+9UJFNmSDL72GvVzx+PP+RBKzOyP9WI3OJh2/FRIhBkYCqBoUljMLiZPqUQNZsgWVRCM7Gbs2BocZiPIcfK9RjZt2c9PrzqVOx96nYce+wHNTatITvASDmwnNJTBVqwQ8UepKKimb2CIEpuD3q4+wnvWks6rZ2Kdky9NXcCfXnyUnBk8ejsOWx7dQT/RcILygnx2NO4nHE9QUmTlYHcvwUCYcpMNWdYzobYMrVaHIMLU6bW89NYK7rz6BhadBLv2NKKVRCLJDJsat9LY3IbVZieZStLb3YHb4SaazdHd1ozH4sDhMrNg6lQqSzxs3LaLfJeZTDJNOBjE6/XS3duCy13MCcdPIRQJMvf4yTTu28/USbXYXGbyC8qIx6JIOitGy4kEwkmWrXqScCxKUo7z6GP7kbT56PU2rAV6BF0zzzyxlqu+vYgDra24Js4gFQpi83qJBmOIGhiOBjA4tYT6UyDmaCgtJRTqI5YQONDXiNdZRErOsK9jNxWFo9EJOSKxIFathNlmQOPQI2sEyotK6eraQL67hFw0x4uvvI4/mMU34GPCtNFY0mby87Lc98QaxlaZMVps7GkKUlbsIJ2ViSZThNUExy88mXg8iSgKSLqR+UHHgSaS8Ry7N+9j0dmX8vorS1EUmV/d8SdWLHuOeDpOLJ0jl8sgGHTktDWc+7WrSaazrHjhSezTPbiNRpLhLBcvOJ5MOsIPr76EPzzyBo8/8TKDA31cd/130GgkJK2elqZhbPYKbvqfO0CSKK2xkYzY6etopXS0k527DtLZ/f4dz+AoF4qO1NTJv/5u3DOu4c3GQU6qz//Qn5vzy1Xsf+nFdwUiez79S37wrjm1IEIq9sl3VhtoASAnKwxF0ow555cQD763R8mhOHRGKK5lzV3nUek1IwBaSfzIRseBZd/HNeNavvvCXu4/f/zfl/89UymnoNf+g4DkKfs4e/h3vn/dbw/r88cCHcNx4NjtpC4rKuGtqzn+W5cck9lEigqoCvrDMJn/V7Zt7zpiY33BZ8PhlHAdze23P42soI967A73GH2RpXJs8MV5+me+OB6fHVqtlpQoM6bKxfaoiNlg4rY/PoNqLMGQDiIoCd5a04XH5kU0qYSUFA/84E52bHyNB55awvdvvoVpi87ivxadjNmkkElr2b7jTYonuSgpruTSixaRziTJZTK8/OwznP7li+hs3UckNgqn1YxeqmFwOMzWHY34fT6mjhuHVhQg0EZ+tZvt2zbgzS+joaaGSDzMCbPGsW1HMz//3e+x2Atx2DU8sncDo+sKmDT5JHS5dmxmmYcffpLhwU7kJAT7w9iMCfDaUP0+7IUSWp2EmgMhq6WxLUsilmJcWQWReI7Zs2fTH0xhd9h46q+LSWeSFBmTJIez+GItsGABopIil/BjNjuoqSrA391JZ9tuBgf8aNUABq0BnU5k/4FW3nj7EdJxmRNmzCIeDbF1exNmi5F7b7mObCbL1773de7+zSMYXV7mTp/MhIl5OF2VDA6FuePXfyQai2LSS3R19nD/Xx7h1h9cj9frQqOzkc5k6e3uJhhwEhjqZFpDFVv2N/HVM6sg3sVvH3mBx554hguvPp95c6ah09sIReM0t+fQdW5Eb3DhsTtQZJlsVqGzZ4hzTz2OSDRKZluMlxZv5orLT+KNLd10tR9gVHU1vYN9nHHel/AlQ6ioRLMJtEYdZo2CU29hytgZaDQCdy9/DMGlp8c3TGBIS+OBvbApQ3VZEeec9yVMRh0rlu9CqxN5evlKLr3yJjLZFNZSK9qIgi+nUD2nAI1PYNnyTUyeNJE8jxOH00VaG0ejy3HJVy/gYOMa3tyxAZPRhNtoxaQ14XK7kbpCBANDPLHkTZw2G1khh06VmDRnDvG2Rpq6e2htXMLPt69Em01gtIu0JfuR9QI3/eJhEhmZu2+5aKRjVzbHg888w9wpUznY14cna2fIN4BOqyUR9lPichJPxciSo9pjYemadcTTGfqG+ygtqSSeBX84iEZv5LTTj8MXDFFXV4zX48I1awrt7QdwOh2oSgqdwUROFdnX3E5DdSlJOYYqqmQyMg0zi/EI49h/sItcTk+B04GxUGL5lt1kIgUsX/oXvnXVyQy0hNi/v4kLLjqJpX9eg8HiJjAwwGUXnkok5SDQ3YFkALOswz/YxfjRo+jU20jncsSTYURZRyiVpKSwAnuRnZ72FtqaujFIJiJDAbR6J8R0pBIRclKW3btamDQuRd8AACAASURBVNwwGo/FwY5tz1BZ+V+kUylMFgNmvY4cGVAVKsfUMWfcCSiZAfbva6Q/lmb98i0072skEnFjEzzk1B7OOXMqTe0tJFNJZkyaSP/QAIMBBUVRcJm0pFWVXE7GpNUwbuwkRrtsbNqxF5EUA9XDTKupQ5Zz/PZH32LHzjZ2pILvdGoWyaSzBIa7mV5Rzslnf5XmA9vJN+fwa+yUly/APxxAVDUkIvEPnMsd1ULRzgMfrHJ9WERxJHvm/Et/9h8fUJMZmaK5178rwuRXEXjl+vc8iE0v3EztiTdxyePbeeLSKUck1n9DEECR333AEIQRLxPvKDqfuxqrQXpn8SczYRfeyTza2TT8b8s1Amh0/zzZPvjXj/8g9GbjIAC+Tcee581HYd4ld4GoOSZFFgDP3JsAWP3I88QumYLFcFTfRt4bVUV7BA2ewvt3gsV1WGMcq9fD540PmxnzYb2HPk0PoQ+znaNNyPq4fF724/PKR+nY9gVf8MmjI5zSsr1tI3mKGa23AZ0kYpD6UZM6FEVDnTef5q4epIwWb1UeD77+ABdNn8vXLzidv766BV9oG3sOetAJeaTTcQz6CqymHlxlNWhELQvmnMraJXcT8XixOB3MnDGbFCYURSEe9NPX2Ud6eIA8u0Qy0k19RQ3b2vpY/MZKRnlLqZ4wFotZQt6xl57+fqZMHcPtP7yW2+5+AjFP5OJTv8LadW8jafqZN/9Mlix5Fm+hkxn1ZQwFg1RXlnCgrQ27T4PBakLUS9g8RqqLZ3HinAWEYnE8TiuOUSeQSMb543N/ZOfaTr51+deJBbtJxAJ0D++FeAaXzcq2zVswmlJIYgqzlKSlcSeDvX6OG+Wh2beVyUWzWbH2LU45fiptzV18efpJxLNRGmZehCIrlNTkuO8Pd5FOJVAVEafNgaTRYDVbqZkwnqGQyv7mDTjzBBx5aWwOga07NiPkTOQX1tPa38Owb5j/vfsWzrj0eyQSYYj3oZCloy/ChKmn4KiaTnXDWB448Ws07d+Pv3kVHu94HJ4CFCFFbXkVv/3Lz5lcWE3YakPnKkMeHMRVMoG3G7OYLBbmzZ5LR9srPPnkSgqKqkjk0gTDAURHEm8ugSBD18EB6ifWkc7JlDvr+MvDj3Lv4NN87YKzkLMCrV0d/PnO5/n9/T8iHK5i/CwPiWyONbt3omo11E8YRS6jR8qK7Nz0Mm3bXgCPDYdWYN+qbv5r0QweW7MZvSQyOj8P1aGwY/1uikrG0jVoQf/8/Ug2I0UmM1ZPGdt376a4II9EvYDfP0xOjFMxei4akwH/QCf3vHEANdTMCZPG0RnykTaJSDYtETXBSfUL6Nzhw2o0Mm7hIkbXeLj9mbsJdYaIJmOQ07JtdyPJbIJ4KolNb6Ao34nXY2J7Sw+VHhfD4Sj6nkEcFjN2k5VUNkuxy4nTZkajNWM26Gjc0YLFY2B0zVxSqSQmk5mS4grC0TDRUJRMJo1oqsZgFIgl4ezjLuTFlc+QTmfIqk66Yvspq5TI6EUeefFVKupHke33UlU9GpPWyPotWWo9KvOnTSOWlqlpOB6T2UCfpYtHnl1KcWEdJSUG8jwF7NjaxNjR9Wg0MXQ6DdFEhCKHm0g8jQY9OVuS4VwQZ42F2FCKdFQkT2vE5dXT2B4mGA6ht0mk4hmefnEVx50+jUd+9z06+mXSORVJTRJPm0mn01gtViySxI/u/g4Oi5masmIMegsLTi5mzCwnggiBHcOk5TTFdhNWd44331rNwkmVrF+7lQmzF2DQQmP3ECVSlMqcxAmzKhBPuZalO2NkZQvRoWUE4gorXtuFtVBPRUUt5rwiTqsdiyBqUBWFdCbNo88+Rf/8U1FVI8P9/Ry/aBrr94SIhgJYXAYqqmoJ+TpRFeV975xH9wxPVZAV9bA9bwCG199N3sxrSWXl92xXf8eKg9z5/d//vbuQa+ZCDt5z1gdm33isetBIvHbv43AEhKJD3awUVX23zMtggWSUlpW/wWnWjbTS+xQnlKo64r2y8uYP9iiS3/HdcRyGmff5l/4MOHyPo6OeVGyktf0xSE5WRsobdUbIpiiddz1YXARW/r9jRuh4tzPlEYw3l+GM/zrxY3/8WDl2RyM7Go9cNteHEXU+rjn1p1Ga9X9hUv5/JSvj87Kfx7pgdKzG/QX/TE6WqbSVsbHrAN2JCFPztFSXuJHttXS0RyAF/kgcjZpiMBBm1LRiNGTYfLAbbTLHRWfM4PeP/JUbvjqBwWCC+kqZMf5L+OVDt7Jsw7Ns3bGEtsgQeeZCTqqZjYAGVdIgKQqqLNPSeACPN8eefcPMn1pMntPAzbffSW3VHAb9YU45YR4xDfT1BTEaJR5440m+f8E1xJJRLrnsq7y+Zh/RhMpZF11C0643+PlTP2bq+CkUaBMEAgk6fQFsokhDaQXuchv5hVN55OGHCfRkmFHvorW9kfKyKsLRJK8u/l96+9oxlOioqKqnsKgQGYVpUxuI+KK09A9Q4jFjc5pwucopsBazZvNKBgZ9zF8wDSQ9zRuGUcf1IpnyeHPDQUBgw/ZeTv7KVPLcTkRxxDj38m9fwysr3yCdiiHbRzr9BqPDxOIBLKoLXYGbhx9+nvMvWIjNbSZXPpnOAT+j66rxDydZu6aD08/8Mj2tbXjdBcR0WuyZID0DUUaLYRQ1h0ZVULIZFsydxqUP3IrVshOndxxz5s5kQ/dqckoOq1mPTisRHuogKQdx6atBq1JS3IBVl+WSc87Er2j5/g/uorSoCkEVCbcFUUvLCA+FiftD+IZ8WG1uDmzbiSDqSOdkWodlFs6YRUt/B6ecehZfOXc2l503h3AyQsvwIAabhqHuKPFgjHH1ozE4vERCQWJyP069hXF187jzT+fy2isPM36mB5PRTCSjMLG4lMceXsaCOTnyi0cxHM1RYMryx/ufo358Jaoq09kboHdwmLlzZtDZ2cq0Cj/lGQNjb7iSBx96hGyqgNU71uJwWNi6fj8Wt4mJ48u54zf3UzW9AJ1Ow6aND7Npq4rfH2G4J4JJp8WTX0DYN4RFp0Nrz2NUcTF5BR72Nu7HojeQ0dvxaKE3Hmbq5El0NTWTp3WAKON0O2js2EkqZaS0oZ65s2YTj0cxmW0EAgHS6ThZOYugqigaOx2dPTTUViMrMinFiEXfwJz6UhYtOp2/PPswpV4v+VY9QV8XaUA0DOPKm0VRcQHZdJR8j5XHHn6I6645l1llMVpyeXjSaSy2ebgsfsqLa9FoHWgMPWzYvI35J4+m1FNALhsjmozjyneiKBaSYYmElCKdzRKOxAgPBRGdTkgYKC2pZCjpR5RENLYUBr2KMSWzbvtOkF0U1hRi0tnRSVoKHAXIGmjpj9G5uRvrlFE4THZUVUYj6tCkfXT1D1Fc7yWTS9PlH6bL76PY1sTijd3oPQbSqRxZXYrq0iIO7pA5sH8nr2/azYP3n8CjD95OKtPMvPkNjK0qZEfsAKFclMfuXo7RouNr/3UpefmFyKrKm8uXUj/+eAaGetG7KhhVYqe9s494GC4+cxpLVm1AqxE5YdZ8/vrS6+977zzqZ6ueuTcRXP+bwx5H0ohgdlA4+7q//+PPyQp5c24YaVMuCGB20r/sVgy6D1eSIooCw+t+S97Ma8nklPftDnZIAPpPJV+HulmJvLveyV8/hzfufRSXRfeZTCZdM0cMf83/IWvkreaRjKOPaxj+d48WdynZnIKkET6/k2c5B973NjQ+2smbeS1Tv3ohb143Fxgx5nbPvQnX9GtA0jH49q8/dJe8z4qBcOrID2pycOtJo4/8uB/AIVP0LzjyIsy/jne4ncs+6ayiz7rz2Yfd9udF/PiCD+a9vj/HumD0Bcc2qqoyHM2SzmQ44eQFbF69mPPPnc9zew5iS2oZNaGSrZv3MpBIYDTqad/ZxRkXnUwkHufrV1zD3r27OP70Tny+A3hsFby9OUgm4+fuG27jtvvuZuK405hn9qDVaZBlmVw2i9Gkx2pU2dfUS1emm+MqTuP8y2fRvPV5Xu5bTlnhRGRZwF04mq7eFp584S9cc93NOD21SMkMbqeT8fXjMDk8PPLgn9mVO0i5aQG+AQPTpzaQEZ0IqoyGDOMKCynI86LNKyUv38Obrz1HdUUxIVnPxv1LUUSRGxt+hCCHkQxmPAU1lOZ7KRtv5Xf33MOo6mqKvE727u+iJM/FngMH8MREvvSlImpnfpmvXHEV63fsY+vqxwklA3hLKsnKWfLyC1ARyGUyqKKRsC+MnEnREwujjTYxs87L0AEdb27ew+233ocK9Pc30tY5xKiaLNU9UW5fOIV7129kVOkElGwGo95IXVUFr7/8DEY5hH94mKatm0mk4jhsDgaGMswZ72XVhk28tnw1Ro2OE0+/GIu+j1Gl4wmEY+Tlu3E53SiSyowxU+iPxzDIKg6LgXxLCfl5Dlr7VQoL3fR0d7C/rYsDXQHQ6PHm21GzMsfPmoXDbiLnlTEIDUSzMdRMlrpZ82ga8FNZMYpYKkHbYBsz6idQ4illWu0UvnXV9bjyiqiaUkB9VSWioiJTSzIdotpdxaSzzmLp4rtYvWQ14/LHYNJoyXNbOLX8SyztiDN+8li2bF7JRWeehtGio63fz5jyUrLpDFdcciLbdnWj02mwO2ysWL6K/7nxOziz/XRm0vh7gix/cxkrl73IvBNOo7CghNb2JnRmO8lYjLVvNaIICm07+qlYVESyQEtf5wBDPSF0Wh0mgx2toMObV0gqncFisyMoOdrb2uj0RUFjgCE/aZuV6oZi4kMBvB4rg/4kRQ4vokZEYzAhGUz0tw/ydmI5i9/YwfVXn43D6aKzfZCq6iJ0NjubN7Uye8YUNu9agkmr4bWX11JROY6Fx51LX5/CyVNm8/jiv7GvsQmrYKJsqp1wNoWS2EFNzXQGhqx09eymtiGfluEhtG6ZqcQoXLAIXzBAW9sGvAV1DA37+d43z6a7s5NsJsXKlleY0NCAwWggJ6m4HHbipiGsqhklB0avEatoxur2kAoP0zqYJN9dRHGxA6sq0uo38Nqbe9EbDVx+4TmYjQb6exMMBHp4Y8UBQkPtfPWKRdgKVfbuOcBPbvwBV93wIwKDPUybOZlEMIfFrcefSxJFoL6snMefWs284yfQ3tRP9TenkJHNnLnwHM7+yxXIikwuKnLf88+RzPRjtY1mdL6bV/+2mtaWbiSjxFnnX0FCrubN1+5hx/qNLJg1lrau9cyunEx5cQVL90ZpmDid/u5maisFvCVRpk0xUeyYgtFtx+3xvO+986gWisbXldKUTR8xD6DAqp/hmn4NzjN/D4Geka5fgsCVP/0udyyq/1hjShoRBIH8E39CcPXP/+k9RVHJyCNZUQatBkVRP7Lx9UMXT6Lk3kcPJTp9arQOxph6xvcBaF7+6/+4/s1P7zysAF0n3jbyItSPd9a1774hakCrp2HRqSy+ejZWg4RGFNCIx6aQdEgQe+U3F3/GkXx0nKf8EuDvIhGMiJ/B9b8hlZUpnHM9+bOuBa2eHYtvGzGSPwoZc+Hvjuh4qqqCPY8Sl/GIjvt+5GQFVQX5CwPsT4R/FF2OtPfQZ2H4/EnzWQkAn5fOcp83Pui8HEuC0Rei5ucLk1GPLxTi1Pnj6erYxtiqSmoKR+HV7kH0KHSkBxk3sYxQNo6oqLS0DvLWm5uJJlR27/gWZaPKGVdcTjAQJZuLM3XSOJpbWli5oZVLz7gKfyiMyaAlJ6fp7m7l62edxu8fWUZbbyPfuvJasuiprynDrLfx2F/+RHWZk5SSxO1w0XSwlZfa/eRVGnG4XeiNJjKxXn77yK8Z7o+yr60bT3E+JeVT6AiJDA8HWXTFVRh0Wn7yw2uYUDWKcCRA2/Aww+lWLjzrFMZWVSFptaTkFGva96I3gi/gIxz0Uepx0zPcxfDAPsKqxBVXXcXOnfu574mXqSrOR1HMGHVG6mrH43I1UFdTgaTVcsqciRzY/RKRRAK7w44gaGhosKAXLEwYvYD921ezo3MbBrOFnYufZ82mbVx24RymHX8mE+aejShCKNBKXzRAPAaRZJx4KIxep6Wg7AQqq4x0dASZOWksWkkik5HRm40EBraTS2sQFBljxoerXMNwIsiNN91MQeU4BK2G2265njPPPp/hwAFKy/MZU1tHPBZlYDhKJmtHxEYyJ5MOCUgGJ6rGhdEYp6MvCloPKVXGZLZQVlPCN88/hVtvf4hnXl7MOWeehFkw0JcKYy/xIIlmYpEokydPQVYUQpEEXnMWs8HM0NA+Dop2fnblpfz6mVdxugxsXr+dE+fOpNCRobOjmz/c/2duduUTHxaoLK7lhcVLmDapDKfLSXc6zXeuuZHtq16kuLSIqsJ8mg4009S3hynTKklHFSSti9paLclojFhSJt/jZH9jG/c99TjnnDwROZnltdfeBFlGFFN09HQSj2cRNGk0kojZrkVFIB5KkcwmScRTtG8boKqskkQ6RTIbp1RyMJSUMRp02Aw6HCYdO5s6sZltlBa66e0dotRhIzucoba+huaeAQpLnAgakb6+IRJpBbfbgNVZxLK3D1A6ahRrtg4yZXSa0vJi2lvbcJdOxeGw096zDqNei5zNYNRqyUT7WLl6GSfMP4l9bRniAS1aRUQ2ZXA7i7BbZIKCQO+AgsEgsmXNHlwuBzpVIs/uJa44yGSyLFv7PEXOKezcvZdSl0z7YCH1o6tAlRlXf5Dh6DAV5dVk7TJuqw6vvgxJoyceCiG7ZbRZgXi0H1HRMDw4yJzpEzEY9expGmDO7LHUjp+AVhLx5FegiBosFj3dnRlMehP54+fjVG0cN3UmRQVFvPLKcxQW69Fb7Az7BikrLMNeWEKxRWDJ8k3saGrluIX1WEUZSS8RiSfJplN0dqdx2PNQswoOQ5xtG7v583Xfxyj18GzTdurHNOB02tmzu4mBrrXUFvWwfqif4jwn9tIabA4rL25YS7GjlGjKT6jfiddrwxcbYv2mNAf2Brnt53Pp8+WIxt7/B/SjWijSCAKIEq6FPyW48v8d9njCSN0W9DcjVk9h5x8voNRtOvxAnUUQ6EVRVBRV5X83djCr2EVNgQWDVkQviR9b1DC9k930+v5+Th9bdPixfgjuWHGQO//nHhAE+tf97j1L9f6Vtr1th7fRyDB4Kwm8egPprELxZY+hdDeOlDllkux/8QVqXnzh3fUFYcRMXNKB0cYV153HbSfXYNQd3d4/h0r0JpU6PuNIPgaBXl584ifv+ZZBqyG4+Q8k0jmK59/IpNNuAUnH5d//Br86vf7oKicM9o1cN0cIVQV3Ud7Hzqb7cNsYyUrMvXOPkUQB/Se4vWOJSfVl7H//8uqPzZGe0H7WWT+fBJ/2pP+jlgX+K0e7OPGvHGvxHuI/tX//R8Hog9b/PPJ/aV+PJoaGBln15nJOPvVLFJfmsblxD48vW4lqSvHyX7dw2bfPIpZI4NFraR30UVtVQCQQAYOI3l7ClLIqHnhqCw1jSjl+Xj3RQA/BQBQBlUAgiFYv89ybD9PVNEx/dx8rVmzkT3dczROvCvh7e5kxcSxWnYebf/ENRteWkwzFmDTWTSSVoKCwFFGQ6O1rRxBA0kroDCIHA0OMLlpIWm5DI2kothvwx1o5sP9t9IarUGSZPG8JeQ4rHb2dtPUM486zsK9nEyYlRyAUxZ+MYTTauPrCK3E7C9kWSlNRbcOUb+atN5YzzlxCc2MLmViYujFjiA71kM5mKC0uYML0ycybOQV/YJjFf1vMnt2bcRRbSeWSCBqJZDKO2WAgJ0fpadrCxoN7iYR9PPf2CkbV2/ntKZdgLBxLKJjFbNYT9rfx+pZXSMSTFJRV81VvAZ29reSUKM3tK5k6+UzK6+3U1VWxacNOHDYDe1ra0FmM1FYV07S9hW29QSoq88EqUVSWj4LA0leWMX7GFFasfBMRDaOqa7DY7KT83ZR7dIwZM4X+QIzOzn5C0Rh9Q2H2NnaARodepyGXU1BVGa1GxG6087+PLqWwuJDj55aw+I0lKIqCw+OiQnXjNeioc2rpcpXS39rG7oG3WbjgYiRRQ3FhMVpJC7k4GkFAyEm4yjz442Ea1+7lGzf+nNPPuZED+3bhFRLIlVYKtV68JV5+cfuDSFoDcbkAs5imoqCIQDJGzxD4u6PoBB2RZASbN5912zuxaLXkefJJ52R8fh/e4gzbt3RwzjnHE31jNYqiYtV2UTu1HF/Aj0KGRCCFqteRiiQpqnWRFdLsWNEOgojb5YRQlExWIhiJkOcuxGA04rEYaGppRaM3Iuj0+INRCtx2nM484nKQXt8AqDLd7YNUVxRitdvxprNE4yku+8Z5hHIvsmdPG5PGeon6Yvh27kWjiMToxWyA7sFh1KxMJpdhxtwxWAUtUTRs2/QS+xs7MSNSbCqkKxilyOVgMBSkrmAGiiKgzQ4zfeZ0Yp3N5PxJfLKP8eOn0Nm9D6fBQyqZwCL4iMRUXHk6Nh8M8/Szi5FyGmqqazDn6bCaTUg6DQaDhVAgSSyXxqzTYXQa2XPg/7N33uF1VNfa/82c3puOeu+2JffeC2DAtIQaCB8JCeAkYFogkAYkIQVuQgI3hTQIhBo6GGxjG+Pei2xZVrF61yk6vc98f8gmhNjgImM7N+/z6LE0Z8+avWfvme31nrXe1YLd7iAty4JDJ6A3m7j+6hk89fdVzJg/HYdVTVwWMGhUeEMRRhSPpLtfiUIZw2424BMyUWh12BUaRmTmsrZlAEwCkbhAfpYRhVLFJefP5H0hRkFOFoqR6aRqVxAKRdnXuYPdNRoKcvPIycnkixdN5Be/fI7lDS9xzZXfpuFvb2GwBEBOYjFqOdjQS1dLD7KUJH9EHq72ZkZkTeG8Cen4Ax687ggFJZlodSnUOhOFRQXUje2mqW0Qk0FDLJ446rtTOJPLMk+YMFH+cONWnFOX8O4LDzGt1HHSNmVZxj75Nta88hPGFAyPsy5JMo6pS0CtY8xli1i2ZCYa1YmTQ5+E7VBaz3Ck4H0a3tzbxVduHIoaeeSJu7lpatExn/ubdQd58K7HTug/Qc4v/41k/bZjOleWZVKSzO1v1PL879+AiB9SCZBS/1oF7jCRJCpArcNUOYY9v7oMo0Z5WtPaur0RRp13D64tT5xZ5MlnwDb1jqE1uP6RYz7nh8vqeeKH//vPeRGEIYJGVAwJssuH9I4EAVVRFVt/dfkpj0I6/Pz//PG7uWXasa/vT0MyJfHHza0snlZ03BGDH+9XMiUzGE6gUgiolCLReIqUDFqViFopDlUyEDhU0WDoOjqVsEOW5YnDMpCzFBMmTJQ3bNl+ytPPhssmnBpn8fOMVjoZJ/9k+nm85x4vMXcmOfFnY/TZiazvT5uj0zn+U/Gsnq45/e8+AYIoyFWjq5k8fS7Fhdls2f8eoqSgIHsWC+bPZfvW7RyoexsZJc172+nzDmK3WsnOMjBqbBUalQVfPJc1q9+kp3sfV11+ORde+AU2bj+AGpntteuISYP0HIySSErEoklu+X8z6WgIEjOGIBnDE3ITG9TicgXxBfzIsQjFpUVMGD+b+pZWjHIYe14FRosVpUKks6ObmK956N+Yn0nzJrN27wa8DQluufkOJkycxurVq/hw5Zv0dPeiUKdwZtmxWEzExBgZtom8/cpL3HLz9cR9bYSjWl5Zvo7Fixezfs37OCwaVIYAG9c2kpuVhcNmRhQ0uL0eRCmJkK0jIUvYHFY6O7spL8pHrTTg0Bsxag3EE3HcrgEaDzaQShnxuT3YLGaKp5/DBZOmsH79Nj748H3mzp1PtkOmPdBBOBInGg4yY+xkdh6oxWqzkkpCMi6QadTjjYfQxPUYbXns2LqBvJJKdm5aiyS4OVDXh9OmIys7g8qRBQxEgswaVUUyluSPL7xDmi2d0ooRBEMx5s2ewpvrXsFmN+Hq9pJMSNRuaUKjNfLM03/g3TffQtSpycvJoGtAIilBIp5AlCWSMoTCEZQKBYl4gpScQiGIaLRaVCoFRqOenAw7XT1t6G1K/NEg6TojwViY4pxJbNuxl46O7RRU5GKzOOjt70Q9kOTc65agFES62huoa1iFiIEP1mzk8kvmUdepx+NqZHJRJtnFZSQjXtZu2cXBpnoOtri54fqLuOjcGbzx7ga6PAk8bh/nzJlJjydAJOinqXEt5583B5kkL614j1hYZlRZMVEkzBotfkWMQEcQUafCoTFgyNJiNyp55bmN6C1KytIriYRjaDRK0uw2LGoNTouaaDyJLxRmT1MHlQVZuCNJ5GSSc8ZWIKlUrG7ax8j0QgwGExs372LmjFHsb+xBTiYJqxyYLekIChXzJ2biHfDi97lJL52CQhTxeLxICS9/efXPRHujSCiJhcIo1Aq+ecsVbFhbg0yS9u4+FA4DD975UxKJJClpqCqYy+0iPc3Onrp6BvoGWDBnNlqtjngihpRKcbBuBwaDyMHGPtyBDnLzrLy7dBtWowOjzsyYqmxefmslSr2ey66eicXkIBpLEo75CfZHiAZTBAf8yKok6ZmZjCl3oHFOwOP1EfUFKCgrRkCBGAtjtMR5f9lKiguzGFFVwf7ddRiyHCSjMd5dsR6v24MiBQ6blapxZVRWleNxeagon8ejv/oDKETmTymAhJacimrqtixlxNQLSCRTKBVKItEYE8ZWc6CxCUkCtUJi974m1JEgazZ/SDKVZOroKooKcjFn5jFt1kyi4SR6g4ZwJEV3Xy+CICKlEuj1BpQixOIxOjr28sMfPIpeb2HQM3BEB+aMjiiCQ6ldooILr30Q79aTr4YlHHJW5175g2GxB4e0h5yF4O7gg7tnDz8JoTMPCSCfIsiyjH3anUPaOfYcPMvuO+4xfG1SAQ8esnW85ybrtw2RB8cAQRBQKgR+e3k1j3+h6l/IlpQks7fdx7wbH4Owb4igSCUgHCewcy3Fc9ceNjJEIgFo9LzyxzuYU+ZEPKQRdSpJWGDncQAAIABJREFUpOuf3gbAWcQREU9KkEri2fTYcZ33o/MreGjh40TiKcq++Q/CTfuG1nEyPpT2CR+lKyYObGXchVuHjjkL8b777eEcwkeIJ4dCT74+pXDYbKYkmek59qNmXh5+Jo72bByORASwGVQIgjAUeaYGtUJEFAUE+NyF7M9GnA1k0anE59Hf0xUJciLRWJ/WvyPZO9o1zqY1cLpwosTKx6OMjmbz0847lfjvvP/nQKUW6ehvYmxiFuFIikA4iUYhEq3dhDR3DsUlZexa50fpsJBSCSgVYNWpyC3IQaPR4/b1UV09D6XicnZsz8Gql4mFo0jxFO5oiJuvuZGf/e5RHn34fpbc+RBVI8cyftQ8Xl72Q2ZWjCMeEQn54vR3BXGmW4kGPERFiXkzJhFNpnBovLhCakqsFuKSTFNzGxfOHMfBViMbdjaj1dp5/eXVXHDOfFqiTezf9S4zZs9DpVTi9flRqBRYjToGB304TAYa6tooWzidc86/kGXvv8bBJjcCAnqrEbNBR47dgj/UT7vXQ36hg65ONx09/QSCEWZNGU1RuoOQCgZTMTzxEBMqy8nQpSEoBXrcvRBXESfCzj31FGZnY7TYcCtUqG1OZo2sAlnC1dFI3Oeip2MnWenVaCQFqaSIym6g3d1N1B/GmpuBVm2gy9WPN+zDYTAwGI1hTbMz4Ophy45NxMIpDCYFGp2KkWUleH1+du1poqmpi3yLDQVKCrKKCMUi9Ha7yMgrYevWrVw68xxC0SAt+i6yMzO46Ws/YePm7WzfuR7XQA+yVsSoN5GXX0p3dz9V+jgbWg8SCPrIys3Das1HFFWEokmisThSSiKRStHTM0D/wCBKhYhnMIEo6khpVRiNWfiDgyxaOINkahrxaIymloNsX70SZ4aG20oL2F+zlZQsYNBa6G13oddb0BktxBNhstOtvL95M1/IzCbLbkISk6i1Okz2NN5dtZ33P9xHabWZ/s4Y1ZX5CAqIJ1JoYj727+ugMLee/LI8ikpLSdNoEBJqegMuNqzezxWXTuPd5hZmz6oiJgq01XdSbwxjVBkwqxwYVDAYi1KUXYjdoCXdqaPpYA+COklJVi5KrZmYlCLXCEoZttc3o8vQkWmw4A+F0ToMVI/KZ/maXWSmWTlv0VW8t2Y7IypHcbCtmYLiavbX/IPCsgoOHmxFljzkZBUTk2187ao7efrpv2CxpBONRZCSYXQKgbKCfAajcXS5SlyDYVZuXcPE8tE47Gb21bbQ1tmLulogOBjBaDIhKlUkU0kUohJkqBo3E7VGgVa1Bn/QTHdfP3kmKw6DBbUzm+deXcZd33+Y7PRMHnhoMV+7/mKCAnjcHkIuHz5vHDEpUpmfhRCLI0U1WGPddHe2UTZ5LiqVhkAoxpY9ezFo+nlr+QaUCqiuKmfsmBFYJInuAS+9PX0ko3GynE7SHDkMSkne27iXMcX5RFISkVgUpQjb9nuZOWMKGrWS/j4vvm21jBldiVIhgKCkpb0TfyCKjIxBpyU3N5uGTeuR5SQVxfnonSamnruQXleAgD9C74CLvXU1XLboEswmC0a9wJq1G3nh5ee58xvXEo8H2bAjyIjRU2lt3H/Ud+cZTxQB9G94jPRpS1jf6GJm2dEFl44Vno2//EiryPvWks8+4RjgXXo3tim3M+Z7y6n56fnDYvMjWDOhu354bR6Cbd4PIegBQaB2xaNk205MZ+VwitzxaiklU0OOe+fa44+W+mREjkIUGFtoPWKaoiTJJFISG5vd3PrX7XTv2QuDPRANcsX1P/5344IACtVQBExaAX/44SIurcpBrRBPymHf+crbh8yfPQ5/xrShaLkT6bMgCOg1Srr+8qXPbCvLMrGERNasu7BNupU97z1CftowpIZ+DJlz7wNRMazRXClJpsCpP+r9OUwSwb8TqbL8T5Lok5FuKsWZnUb5n45TkSp22ObZRkDB6SOIPo7hvO5n2fr4eD/vlLazNUXxZO7D8UYhncr1eCru/9k6p/8p0Ko0ZBtMTK7K52CHh+sv+DJ/+/ufiI0Yh6u5CUdRCV/8ygOsX/4C0bQwGpR09g8wXVGNKEK2I439+1eQmzediZOn8dr63zHgDzB/3nVIyV5WbqghnArx4GM/pnRsAQohzldvv48///Qm3lq/G58vAgoj4VgnibgGpUbLuLIM/AN9JE16xs28Fp1OQ1/7Vj78YD1KfSaP/bGO2bMLWLjgClq6d9LUlGDqrNls3rmJnTV9LL5Dxqj24jCbCYV9DHi8VFUV09LSTSxloKe3n+XvvYWUSGF0ikR9kJNdQiSRZMa5F9HT20d9ax3lZSPYU9OA3WKnvb2J3Qe2UjJyAf11LUyeORW1QgBBQSgSJRQPkUxAXPDT0upCIano6B5ghD6d/IrxdHQPIKUkOtvr6Xf1kVlQQXlhHslEnGQ4QabDSUgKsW9zCwa9grnjprLmL3+H/kF6csexf9BNVmYGhn4Xkj2O0JeioNSCp8ePRacnFothMJjYtaMWhQjP/H0VFquesuJSKkoqSMpKzlkwh1g4QH1bP7t31FJZosImg81mZta0ieze8A9KquZSMXIUHq+PLyyaw70/fJhX1ixj5vQxuIMeiqN2fvPr35CbV86cuTOo2b2ORbOnsGVfB3NmTqCrN0pWtpOYBMFAiHhCJpWS2L23iaaWPmLRKLIggCQzadZCdDotf/zrM4yqLCIny4EslHOweZCqMVNQx0WqKtS01AWx2Rw0tnSQk16J3WShNtiFUpRQKKOoDSbq6topcRYTGAyyZfsuzNYMPty8gvQKI3sbQuzat4dgOECa00QkDDfeeAvbPniYkZOupnrSNSQTEXbsXErCp0QfVJGZl0VCoUBUGpgysYSFU4tZX9OGNsNEscWILCWJpJLkW3S0tvUxsjQPjc6C2+vD3T9At7ufjDQFvtZe9EYzpYXpZGSXMXHSWBq6AuSY/eRU2fjgvTdxD/rR+yQmTajiD79/BF9mPVPnLmDpe7vQak1cfP5Ymg4G6XcP8sHmBiZPL2Ogvp6tqw9gzzZRVQC76tbTXrcXi9mEyxPE5dlJb7cHtcpM3d79TKgyglaFJxojHpNYNOdKMgtn0rBmJeZQilxLJv54mPGjy7n02i/jTLcSCkWZPe9qguEAvW4XOzbtZfbUsbi6W9AZLHi8ETLNZlIRPyrBwprmrQg6gaLqeaiVIlXlOhwFVzFh6jWMGlHOnbffTUNLMwcbWgiHQ2iVWqzpTjR6NTablpgqSY5Dg9mk4Lv3PEBWfhbBQJAbrhiHdzCBP+Sn0+1Hm2phzOhKBEHAbNYTiyaQZRmVWo2MjJRKYbbaKSkuZua0KiJiFqvW78VsNLL8vQ1ccdl5WAwF9PX70Cpj/PzR39LU2IrfP8i93/0FBUU5lIyYR9WYEbQ01h713fmZIheCIPxVEIR+QRD2fezYo4IgHBAEoUYQhNcFQbB+7LP7BUFoEgShXhCEhR87fv6hY02CINx3PC94lVIElYaLr32Q4UiV+7hW0bDCaKdj4/rhtQm0vbgYYFjGfhi+cALblNuHSCKVBvfmx0+YJIJ/VnRLHmclJuf8H4AgYNCcWs5SFAU0KgXzKtKp/cWFeJd9B+/mX+PZ8jjuLU/Qt+lxDn7wKwxjZw6RQ4I4FPkSDUJnLYtvfoSs6bfjmHLbEMk49Q5slzxOvy9KPDkkWH5M8yOlPl9V8pNEu2so8se74dFTfi1BENCqFXi3/AbMTsZccC+2Cx75iEwcFsQjnLf4y8Nnj6F+f1alt8OEjywf1huSkaRD1RCFfxVnP7yWziaS6EzYJ04VefFfB+9fo0VOB0l0Oubg8Fg/+XMkHCYuPvnzfwWf91hP1zr8L04Op3ufMKalsWfnXojH6BmIENGLNLv3UrdlBTff+FViiRhmWxY2g55QNEBfv4+/vrIMhQSbt9awb+dWdHodK955itklo6koKUVApq4pgEYtMmvMAhbNmM4dV5zPvXd8h2f+9hxvra4hEAjS3T9Af3sXKlmNUW3GYTHy3urdeKIBwjEvlWVFNDQ14nYFARWCDKIIaq0RkyNBQflI9Hot99z3MBFVBEehhSWLr2NPbQ9RtAiilryMDFpa3ARDCeJBD8vefQOtSUBUC5icelR6kZu/ejVpVht2m4XOpnq++ZXrKC4eyfQplUQjEYoKywkGU6RUCvr7QkR9PixWG067jVA4QO2+FqLuMCTiJBMSVouZcaMnMH3OXFpa2+np6kCSU7jdHVRkpzG2oIQXX1uGQhTIz8/FFxhEJSpIcyqx2/Q8/ezbjCofhdLu5IKJahpqP2TrpnfZt68BrztE8fgsynJy0Vs1GJ0aHFkl+A1xFGqBVApEpUwsFkWhFDHZs8grLSUR6Ke+vg6tWkXlqDHs39fGE0+9gyzJCMD2XTtxZGVh0OvIzcnAE4jSuL+GO+//MZPnXYlWV4LFWchrby7noe/dwRcu/SKVI/LpjfYzeWQWPR1t1BxYicMSpLlhIzFXC5PHjWJkeS5LX3+JWNTPpYvmMGNyNQUF2aSnO1Cq1EgpiS1b9vLqOx+yY1cnelMGSpWOVr8CUnays8owmR2MKi1lMBCjtcODqEhhsMhodTqys9SYHEoKc53oRYlw0E96hpOLFp1PtnkyEybOILegHIstg8zs0ZwzbSoTx4zmyb89RygQxGjQ09S2l3MXXImUUDLgjuIN+gi7+rl49jgynRY21w6gUigJRlL0uD3EI0l0Ci0JSSIj30G3z09zfxd1jZ3kZ9qorCgjI82KWiew52Az0ZjAiOpxdLQdZMboHLxuH51d/YDM5VdcgyCKbNv9DgOufvTZVg527GfcBCs/f+guRG0CU1ox6dl5FJVYWbr0Q9av3cvC8RMYP2oB27weGptqkXUCbk8UCR2GhBqlToFKDYlYkGAoxjN/fhuzAuLJEOu2vY7L00t7zyC73TIhk43mQB872zeglAYJhaJIskxhfgkNLV78nWHSTU5c7iSixkQ8ESGGRKc/wt6WDjZt381UZymhYATfYBBJSjKichJGjRVfIMm69ZsZNzqXRCiFyqTAmZmJTqcGBVjMDpL6JL6BEEaTiYNd/TgcGSTiSRxpTlIpCX9UQbxvAKvFSiQaRJJkYokkkXAMhVKBVqvGYtIhCiJqrY6ckVUUV03Hm3QSiSUBAbvVTPW40fz8Ny8wa0Y1kpQiO7MCnSEfR3oBc8+9grET59DW0osi2Yt7IIycSh31vXks3vnTwP8Cz3zs2PvA/bIsJwVB+AVwP/AdQRBGAtcAo4BsYKUgCIdrRv8WOBfoBLYJgvCWLMtHj3X6BDwb/gf75NuwX/Ek3lcXH+tpR4V78+M4ptzGox80cc+80pO2B9D81v0UX/YIiaQ0RG4dAYfJhONxAo2HSJTBcAKb4eRFeG3T7x7ShlEo8Wx9Ylgd0uLFL9P552uOqa0syxD2MeNr153QtYbDmRYOpZupRQG7UU3nn65haAn/+7VSkkzrQJhJ1/1ySBupt5GKc46SIqU49GjpzGRPnsrWH52HRikOpcKZTj4q7vNAMiUx5oJ76d7wm8/92t5VD5BMSTin30nJt16l7Q9XnrTNn6wcIoZf/MrwSjWoFAKSfGzrUIZDaWTCZ6aqnWV4mjNgnzgcsXMmC1CfKlHrU2H3TKpQdSb0AYY3EulY7J3pOJ1r5ONpa8N9/VMxnrN9rocBT3Oa9gmFQkF+dhoiYdL1CgY8Hh5c/F1effMdXIholGGeePg+ugcGCEcSGA1K0jLsKIENqzajtzqQpBDezlUU5DgYIRSyryGMWtOH1aSnJxLCak4nL13EH46QZzYTDbt4Z9U2Lpg9GZMthJQUMWQKtDTV4k/GKZ2YRkoEr8+H2aIjOyObZ5YtxaKPo1NA+eQJPPPUS4RibsaMOQ91qheHTeKi8Qsw5VVgNlpYu34zCxdMp652H+s2rUcUQK1SEYnESS8worWoCfviWJ1GCrOzibgHsGRnEvJ76I+7Wf7u2xQWVmAy2hg3wcKGDVsZM3IqqpRIUoqyZ38L4ZSC7o5ucnNyEVMwEPexe00zX7nuWgajkJmdyfZ12/AMdFFSlMnq1WvYtXUdt97zIAaDAU1hLm8te5arLl1EfkE5Hy5dRUe/m2gkgEKrwmATqF44iRdffB+j1giJJD6fi2vO+wr7dq+mePwilOYutnywlLTxRrSmmfhCg6hEDQOtbpLJBElUlFXkotNbeeOVP7FnXxeyIKJRC6TbVaRn2Pnr4z+lqLiYwqJpvPr3P6BVavB5vThyclFqtNTuq+X8C84lJ0tP9awL8Q76iSr1bHzvTRL+KN6YyLVXTUKlNdD3XA+RYIzNG2q46tJ5/PmPj3Pz7Q/y9POv8Nc/P8GqNe9Qu6eWXTsaSAky9933DbJzS3j0Zz8lzZHB5Vd/hTUfrOS9dz/gmmuu50B9Dw6HA3tGCXVtHtyuAfKLqzBZMyktLCAUCJESkug1HizpOXQlVJhJUFlexP4Ne8gtF4j07KG0fBojRo5k2pRx/Po3z3JuUiaZTJCIh6mrP4BOHeed5f9AqUyRne4kHkrgzElnV91BQhZIM1rpaHeRo7AjSwlQyAQiAbQaPRa9BU2GCiGVwGRW8d6mJiKhCOGQD0EWsdhMeAODCCotkVgCo0FPLDKIdzCMSmGiprGTvCwDy7f2MWvOZFxuLc+/+Roaq4BnkZfurh7cvs309bmZNn0MxJKkOSdSnafF429nf7sHXbaaoAxJ4lhMSrzKEBr/UHU210AfUa+BL8wYx6aVu9Hl6klFE3Q0PYe/P8K0MbPpFxKMsVej0cGv//JLFGKC0ICMqBQprMymtb4Vp9GB0usmPy+XfJuVXvcg+5oPcPWFs9i2fQ8qq52pJbOIyxKr3nqZXl+Cu++/l4HeLhp2ryG7UIcl3Upnax82SwKFqEKnN2A3GWlvjbFz51ZGlpcQV/q49KqreX/ZUs47p4Qet5fcrCJ8fQFSqQijx8z+yLdIplJEYnFSkkw0GkcGlEolKUFg1rgyPty2GoWYjiwr6ezuYdr4kcx55A56+wdJphIsXf0uo6oziUYjeD1ucvJL0Wr0yEoHeXYZ8VPkXz6TKJJlea0gCIWfOLbiY39uBq449PulwIuyLMeAFkEQmoDJhz5rkmW5GUAQhBcPtT1mB0AQhCHnu33fZzc+BojikFbRT7/zG+4ZJq0iq17F8ie/SVKSUR7B2TtRB/BwtM6Xn9nB0m9MO+H+fevVvTz/8ycB0FZNo/uv1w67Qxrav40jES1HQt5NLwHwzuITH9PnhcPaSKWZRryrHgD+SR7taB0kw6zhZx8c5OUnX4d4BGKhofCRoIfu1e+Su/rdfxqLBqm4622W3z+fHJvuo5SjM40gcE67HQQBnfrY9KOGG0qFyMRrr2T7cy8BJ08U/fKHQ2t/uO+xUiEec7TfYZLoU9scEq0+m3Cm7BOHcTZoFZ3J6WenOs3sTB77yWK4dJH+i+PDcK2pUzUf/6nr/XhwOvcJWYLBoAa9LkGLqwOLs4qNO+vJcuawcc872G1WFLJAUV4Obd09ZGakk261o4pGCMUg2t3PF784naZWN6WlWbzw4S7u/+l3MWvVPP/6S3R0+RhRUoQtYyI5ViV79jeQk5HOBYuuQC80k6XKIO5vprvLi8VhJ11hobw4j+6OVgpHlvHWGys457z53HrbrWxY8TZqlUhgcBCtRkkwKVCcBg1+By2tLWQUj6e7v5dHfvpTUkmJvFsWo3HoiYpRLEo1SSmF1mBgxoyrWPHGi0w9byFXnjuNb3zrHmZVdBFVO7BaTXz75ht58dUVDLbuYtL4RWhMAt+/+wbefOc13n/vfZz2NPr7unGmW+h3BehzNaLRKilz5HDTV+4kGpfRBfzsr6nB3dfCmPJCLDk2Fl3ydfbPP4+szAwEZNYtfxWtRssH67eiiCTpcnlJxGJIoohGm8mFcxfR1NnI6LElJLYnERVaEsk4O/ftJxjwDWmYKpSMmTwDtZQg5dMxZfSXGOjpwGGow98RRkRDdraGFe9uYOz4uWSXKejuaCMWGiDkG0CQI8jJEDu27kJn1KPRmkjE4mi0WqpKR3CgtYnelgO882aMrDQVP7jvRu689fvIcog1q5di1KrpGwww6DOz5MtzqdnVQFFWAWajkYbGXr7zxS8zcWo1q7fWoNFYEBVqRo4eQ1BpIdOiIpYI4/d2otLn0dXnQaNV0NveQO4oNWvWbKbt4F7u/d4PaW71kmVNsXDuIvYeaMNstdPe3UV93V7SM3KIxkLY07KxpuViEUTCkSjarPHMrShGDAcIyRoGA156evpY8q0vEz6wGndSg4wBUjFqWuuwa21UVowgFQmhUIsUZttoTXpxmNNAVFCcb8dsNpLsD2PWmmgZ6ESUkgxEIwx2hcnLtuMLx8grsKNEpnZPgLGVhXT1DJDhTOMPj/0CWY5x4y23klVUxGuP/4kbF99JEiX7G9ajUiuQvBJqjYmbljyIUkiyY+0reAa8+BMpPJ5Btm7aS2fXABarQHNsNjkmM6W5erbE20jKCvRmLZEY6HUGknoZV38PSkFCLUA8nmR+dRWN8QCDMT9GQUtJtoN+/wAT5s5n0+5WjDo9Bp0SjcqAGPdTU9PCqBG5WIxG3N4AvYkwN86ZTCIu89bK98nJzmLdtjZsFiedXS5cBSEsWVo27drB+TMm8fB9t9HhdTNxzAj214oUFKaj0WrxDUYJBEJMH1FIwiIxodxJSpxLdrqDuvogWnWYixaWEkmGETRaGur3o5fBbjBQXlqEIAqIokg4GkUjDBXJUqjURCJRVEoRQZYJRRPIKhlVPMgFC6YRi0Tx+vpIIKJS64hGw5QXl/PcC0+TSqrIc2ho6miiMNNJj9fDuvrOT31vD0e+z43AS4d+z2HoRX8YnYeOAXR84viUIxkTBOFm4GaAvPz8f/nMs+kx7JNv40tPb+eFYYgK+EiraOHP8C6//6TtCYLApCLbIZ2ef/f0TtZB3fi3l+AEiKJAJEH+7DuH/jBY8a75yUn146gQFUPpWseI0J71xyxifSScblLlMHk0pcQOwJNXjebJq0YftX2XJ0LVwnsgGad//QrGXbj8yA0VyqGqYLZsJswfx+u3TEWvUX6ugsaSJIMs49oyPCTqiWLFkhnYn3uJlCSfvK5QIsYrz/5geDr2CRzrnHxWsxOJODxL8LntE8ONsymqCE6+qthhnCmO7X8SkXI80UhH+vt47Z1qnCkRZ8P9PJ3u8fwfxinbJwx6PT3tDYwqnUtCipFhFukLRsnOSiO5S0SURKLJCIOxQfKz0hk3qYSOjgBuVwCzQU9uYQHPLm1AiHfzo4d/y7XXp9PZ2893vvcwY0dZmDN1KmqtyMr122ltbScRh8ce/QHhnkG6Is0kY3pI6cjLVBNJhOnz9lG/vB6FUaCkopRQpI6VywZIKsMkLUGaavpo7eqjMCONyVlFOB1mBtweFp43Gr1Dxwcvb0FvNKMQVax871WClhj2AgexQBhNyEkw2MXbL/6VRFJk55rVbFrxJqKgoMHrYXKhhp4+F1qtgRynnX21e/j5a98mNz+DFTob48eN4NKLzuGlN97DojbQ1+UlJ9dIPKzmkssuJRAWicQhFA6yefMqUskEta0tfGVuNTqVmfdX/oXzzv0aP3v0F0yuzkSnUqLTq6jZWY/VrMdiMWBMt5BjzcdesIhb7/oepZXj0ao1+INR0pxKCosraWltprfPRdDnR06m6DhYz12/ehyL1YoAyHKSyy6ei5wSmH/x1dQ3xenqbiSuMaNMRgl4Whh09ZKbnUvfQJQ9Xa3Y1Bpc7jgphZL/99Vv0XWwnU3bt2GxWDjQVEP/2pV85dIFfP3KG3nsVz9BZ7Hh8/vJzixFr1Ixc24R6+u2Y1Ab2VvbQjQWxZqpY0e4CdXeGiLROPPnjqK5vwlFQk0yFWfy+MlkmDQMRINYzFZUKjUbNrxMa3sr4XCcjLwM0jKyUCvgvBlT+P5vbuLZF55h3KQZOBw5aGMDGHUqBjoP4rBasAk+covHsbe+jYaGVlqaW1CoVIiChFajIxKJkkyJ9PT1E4tHiUVDWExxdBoVF02/BrMuRnHJSCx6JalUnGg8TnNLE2v2bGUg5cOuc1CelkMyocUb6CZdZyCh0ZCMBlFqRDxhCb3RTEVaDgFXH5mTx6LWmDAa09Ao4MarR1G7v4ON7y5lV91+qsZNQG8wYjVrMenPpQqJvpYuvEkZWUpidaYxcnQhImVsWb8drT6DsN+PwaAlHndTWeLAXDyJJ+/7FhMvqMTvDaIUkhSV5OAP+GjZ3YjLGyA728bamr1MGjGXr18/m7v//ix60UBKEWVXQzdS7CAjJ08mmIjj7Q2T7swj7PcTDXlJr85CkxIIR5U4cx34fSkSKVBZjFzxhYtpaupBr03iDwoU5pWTW1JAorcJpQ0+3LUPRa6M1aRhy9Z9FGTn0drZQ5rVgICAyWQkltJi1qpodfcxcWo2QV+A3IJMdLg5UN/FjDlVvP7aekKhABW5GSQTKYRDkhTRaAy1SolSFIjG4iSVCtRqJXJKQga0CjUkbZwzbwxeVx+i2sCEydNx+cL4fWEG3Q2kFFpGjhzDvrp6QoKZ9Ew9A4Eg6Rk55DhsdLQ2HvWlfFJEkSAI3wOSwHOHDx2hmcyRtZCO+BW8LMt/BP4IQ2WPP3E9UGlY9ru/wTAQRR9FKXm6TtrWx20Ot4/3UbSCdPQcwqPh//19J2//5q8gCLg2P35qS7KrNP+sZvUZODwm96Zfn7r+nGHIsQ9pQLk2/fpf5kGSZJKSTJsrzJf+sImD768YikrqbWTH843kP//yEKFmSsNYVEbjb684aVHtz4Jj6hLQmU7tejkGCIdExR9a0cCPzq84YTs7WrwAzK9IH66uHTeOZ64k6TBh9K9i2Cdi63Tj894nThUJM9xRMGeaM3qmOP1HwpnYp1Ow/1fwAAAgAElEQVSBo6VSHW09f/L46Uz/+i/+i5PBqd4nMpwOuaiwDKUhE493PwODLpzp+fh8EaryRrCjbyeRhAKDaKCprZUDjZ1ctGgGioIiOpubkbo7qcjMoNtr5a1l7/O1669EqRK45947+NlP7yMjLZ2QNg+1RsWUiaOJRZu54cuXUT1hCmksoL1mFTanA4XSS3eTD5UgotGoGT+uBMJhfEIMwaxkcNCFyp/EotUyflQJN9yk5sXnEwipCOUVBTT39bF23avY82P4A+kEfR7ispkpJZl4YiY2L1/HoNyKNVeNv0tErUuRU55By4EIBeXpTCmfiEFvYDAYJt7fiEMnM6l6HKNKynBa1UhI/Px3LzB97iS83gAYZILRJEV5WbQFtWzb3UJRUS5uVw9dLVuYPnES2+q7KBglUtvVSmV6HoqYjE4ZZ6Ctkd3xEA5rBl0DnZitFsKJKONynQyEZRx6A3KklrFTzkMpCugMeupqN6PWanGaDSRzC9AJEZa9/iIpMcCic8/lj3/+E4HwARr7uklLs5GfU0BGegnjquzsO+BDb1Bw9ze/Rjye4o3Xl1GzbxdStB+NWsUlF57HxFINq7ZGaXEH6WjvJaLQUJxhpHLsGOZdeDVur5fu+nf4wS8eIZVKMfvifCJRPxk2GymzkgMHtlGztROD1oDb7caoVyP7U7R3a2htfopLvngDNbX7GYyEyUjL4lvXXk9fdy133/cEFRVZZJfNIdbXR1IVRZ+jIcNkIuqS8XtdpFJxNm1bzYiiizFVmajdvZq4L4JZL1BZWsKaD94nHguTn22mVK0ikUxS4DCir7Rg1fp47LGnuPlr15JXPA67UU0wKlPX0EhXXwc2i5loLEZ7Zx8DXh9rtjVj0uuYOWs6ZdkWRo8ag8Oio7XbjVGvR0rGsBs1dPUFcUX8SIKGDLsdSVKjQ8PU4lLWrFhLfn4GJTmFDHr9yKkIbS1diJKaWMTFjv37MRv0lBaPJpmUef7lJ1CZNBRkTae13U1FeTmXXjCV1599hbp9B5gwZwL9Ax58sSSyJGOy6JFtav7w+ksIhr9TONdMIiKhUqhQajSMLzmfVZv+gZiKMLIyi9raLoxmA/2mZm780wG0Oi2pVJjzx5bwenuIMdNLsZvNTKqcyuY9G7Ha9Xj7gxjNDrLNInvrmzBpdAwODAIyctSPJs1KdqaGN96uYeaEsYwfl4vRVgIItHsGKKjI54r5i0kmZQyD+3jXsQlNREvdgBeVWo1SbaQ8L5+6uhqs/XrGTCsn2j7IttZGjBmZeD1+zps/Be9AP02dHSQiEcqL8sjLzSaVShH1eanZ9CHVs84Hgw6VUkE4HB4SMJNk9AY9uw/swulwotPqwGpBrdETCPvxuELYHVYWLbyQ3Qd6sJkGUSt6GVk8htLSAh56/DXCoSAajYbkp/juJ0wUCYJwA3ARsED+pxfTCeR9rFku0H3o96MdPy641/8Pjim3UfjNV2j93RWffcJn4HCU0nBWQBsurKjr5eobHh5KYVJpIBEjmZJQKj5Tg5xwLEnOzDsAqFn2CHmO4a0edSTsev0Bxl30XaLxFBrVUIicJMkEY0kADBol4iHH177olyAqPkqr+7+ATk8E+PdqbaIooBYFyjKNbH/wXHjw3I8+G6qKBdFEii88uZltK3eSdc4PIb2Qvhe+hlJk2O+h40tPgSzjXfuzYbV7olCWjOGJX73Kj87/7gnbOOfqH4LBesYTLIIgIByqhCbJQ4TRx6uhHU5PFIZR2P5U4nTtE2eDVtFw4WT7dSYTRGfqPf+88d+5OTac7DN/Jo7p/wI+j30ikUpw3uVf5reP/5afPXATO7fuJMuppbbRR0Z+Feld3WQKCrp6PYwaO41du2s40NTM3LkTUCllOg82k0iE6fEEkPJ7+OpNS3j6qT/R3tFDf38Ly1enuP/+h9nbcBCXZxB/Sx8Z2ZkUZRcy78JLWLuugJoNLxKPZ1Ccp0VnNpKWaaW1uZl2RR+jLUV4Pf14RAm1TYnfFWZkWgnL3k0RNwZxK2MYu/ux6CRCkpI0m5GJ8wvZ1teETa/GaXXQU9OKfaSNqDvOvBnl7D3QTVyKM2VsFfNmLGL7jlqee3sNX/3qdeRmOinMsXL3Xfdw/XWXsH3HXhYsugGzycbt944l5FpPIFSGtyvCNVf9P9Zu2UVxaTabV77BZrUWiy2fAM3o8qZSUFTGZZd8gdtvuoFp3x+Ny9PPww89iEIAQTVAW5sfrcFJSuHFIGswK9Tsaa5n26Y9fP+eS+jtC5FdNAYh5Cc9O4c548uIJSA/KwO1AKLKRPmICsIRPxm5pRjajUy/qIiNWz7krodvY/kHG+ns05AadGHUlvD7J3+AFFNy9+3fJZlawPcf+B80GoHe7gHUlWVY8zIxhpowKwdoOxikuno0CpMVCRAEEb1Txao1G2nt6mP9239kXcs2xlaVseyD/Xzpq9+irLqPZCJOuuglIkXISjezau2blMy+lMcfvo+F58+ja18vT/x+KV/84gxUooXF376PdR+8xdrlLzFtQQW56SOJFpVSlD+V1959n4rqSbz91st4vF7+9tRruANhdDdcTfdAP/U1u3F5ffzjrVUoVEp++aMl6I1qFKKA1iLw5GNvE49FKB89nWUf7uHm8vF4uhtIJBM4DRGURSIB1y62btlDVkYpN3xzCcGgj0G3l462Djra25g3fQr5RdV4/DsBCVlQ0dLdSDAWpSSniL5giGxrFhqlQKY1jVAkSnFZIbFwDEQ11nQTrS1d2NIsaK0aWnYP4A8Fues738UblHjn9b9TMbKQgNfNn373KLPPGc3/Pvo0776TTcOBLpx2NfHVuxB0RpTxIBEpgkqjRqnQUJrn4Mnfv0I8kuSSL15Ky8GD6HRa+mqfYVShyKisEmw2K25HEIVCi6euh1sW34hGl8HCeQuYvuByfv+/D7N730o0Gi1lRePwDLbSUddHVrYRf4+M2xcgM6OCLlc3GpWMPxQiZrFSs3kbnoid795+A57BKEaTgajGisVsIKKQEWJ5lFVU8sSTzzKv3EnIa2fRNTOQPtxCniONDLOJ7CwblUVmBgd8eFsj+FMSkjGTNRt2MqashPsf+j056WZEBDIdGTQ2u5lz7lgSgYPoVAbGzxxNZkaC3Z01bN/TTU6WhUQihslspjw7nb7kIBUKMyvW1jCyuhp/dwc7li7j3lu/zWAgwoGDHgx6PSICU6ZdjtNuxGoWWXz9xcQSYDGL1O384KjvzhMiigRBOB/4DjBHluWP01BvAc8LgvArhsTnyoCtDH0zUCYIQhHQxZCIzbUncm1xiGnAt/1D/pnKfOIQBIHqK69g7z9eOWlbwwFZlpny41U0vv3G0AGNnoEPfw6Ac+oSZv18DZu+N/9TbdgWPAT+ARAE+jf+5qjC2qcEskTWjNs/vY2oGIqOUihp7A1S5NQjHorEOlZHXpLks45kuvrJzZ/d6BMQBAGFMESyrVgyE/m2GQyGExRf+TgZ1/yZgZe+jnjEL95ODLIsIzXtALNz2GyeLJL9XRRPO/EIwkRSAlmma/mDw9epUwhRFD6a039PRRsiX+MpaWhcZzBO5z5xGGeDVtHJ4EipYsfq7J6uNLPDpNvxOOVn2n3/L/6Jo83j2TpfZ2u/z1Z8XvuESqPDYU/j7m/fzZtvPUNKA3K9Co0ug3A0RnlJJR5fFLUlDwVhqkeNYuX7y/nBd79AX9tTxAWRgf5BdCqRQHuQxYsvo7enmwfvuRWTyobBYKSxdhcGczpBhYorrr2Yt99fRnllCaIgotXpaWn0Ul5mIhTX0NfbS2dTPVMmVrI/7CWregwrP3gVk0pHhrMEU7Eao8lEKB5HF4ziafJT09vLRQtns7lhLyWFeSRUMEpfhLvbQyqSQKVQIftSWA0a0sx53HTReSitafS4gqxft5FRFfl4ejuZN3ks23dv4ZXXdjK2Oo9QOMTiOx9AkJRYzWYCuRG+ede95OflMWf+RchqLTq1SM2GlRRmpVEyYQrrNuxg9jk3oFaqGFlWRjgcZupFY6htbaRjXweNjS2kpzmxY+e6H/yEuppdvPrqU9idRqKCgqqiQtp7d/PEUx8ysnQsrt6D9PVs54I5s+gdTLJw3kSC4QTd/QOE4imCkRT5+eVYLTZ6VSmee+5F0jPTWL12CzqNBgSB6XNmE/R76D54gFdeXMq22TVMHFOG1mAg2FGHPZJObm4u0WY/glJFUXY2O+r2ICg1pAbdqNIykGWZeMhJJJZArdGQlmZHgQKj1cz4KedSW1PHVVdcRjAY4ODW90ga4rSLIaaMG8cbK17DN9DLzPlxIlEvv/71o4weVY3ems2+XZtYuzTAFy9YxGsrltK+v5FgRKaksIR5cwuxmIzs2uAmGAzx9R/dgtok8Y3zr+W1FUu5cOblXH/99QQiQ9IeMxdcyoGGHgSg3+2lvGoSnR11hEN+FEolsXgcSY6wu7GLGZPKQZBJxRNoVGZUeiOjCkwYjFmkUrB22wE83kHeW72OhXOnUVZSQldXJ+vrdxGOpNDpdaRQMjqvFEESsBo1+NtasRQV4XWHSckS5kSUcCSBxa5HlsP0tbXh9wcoyS+kw+UnFIjhCctolTJ/emU11iwrRRl2dhXp8PtTaESJRByaGjsIhpLo9CqQBAY9fioz0kmGU9x+109oaNzAiGInaiHEjVfP5c//2E9TR4JCm5Y1NY2kVxbijfciqEz85dnVyLJIxC8hKgSMegu7d3WSd/4MQEbbG6ciK5331m/lnruu4977fsvYSogEvYRRYTI7iHqjHGhsZcn1i8jK0uJ3tdLaEyS7WMBiM6ESHSya5ISEzLmzppAmuhg1pYh4IsKMyhI0Jh0RWSYiJLHYbYQSCQzKFGtXbaMv4EchibS0d6PXazFk2BCDMoFEFJs5SizmRdSZ6PF30OXuRaOpxNXnZWxZBgk5htOSgzsQprW9Fb0pjWTSiy8cRUj58bj7yMqwk0zE0Khlnn3mWZYsuQWzQYPNamR/3TYuWvI97GYLA95+lr3+FvHk0b98Fj5LhFUQhBeAuUAa0Ac8wFBVAg3gPtRssyzLiw+1/x5DecZJ4A5Zlt87dPxC4NeAAvirLMsPf9aLfcKEifKGLdv/7bjt3J/AYC8HVv4PGRbtZ5k5Jtgm3QqCgHeYhK2PF72DUUacfx+kkiAIPPWX+7i0KvtfiBPb5NsAjtpH2yWPQ08DCAJvP/cAM8s+n+paz+9s41u3fKx8uj2HbX+7jeJ0A6L4ryLNkiTjmPntoXFqjRD2HdmoMCQ2Tt5I6p68jgyL5l/uxdlIFNnO+TEEXEPl308SkiTjuPhXTL1wGku/MW3Y0tBsU+8AKXXanoMjwTbp1pOqzmebdhck4/+RDoBOJeyQZXl4y7idAM7IfeIURMqcCYTFZxE8xzLu0xFFdDyEwvFGdpzuORlunAnr7NNwtPVzpHn7vMYxXNFEZ/J9P1H8d5+AvAyn/LPfPYVCoSTg6+dvf/s98+YuBFk5RBQk4nR09WOQuxg1agFLP1xG88FmFEkDU8aY2Le/DZvNSEfPACpRxfixRfT7EtTvb2DBvOnkleaBIoexVSPZvHsvoUCIgtws9tY2EA8maGtbR9gfIi7EMeTqyYk7kHRatFkqtm7ay7w5c2jpayEci5Fut5Bpd9IT8lPmyCYYncrKV3/MFYtm89tn3qJgnIPzps1CJUU5sLMLmxSiP6ElL8+CLbOMCZOmsr+5m5QkodPpiQ32smLVCvr6XSz5/+y9d5hcZfn//zpneu+zO7OzfbObZDe9EyAhJChBqqgUUREF5SsggqAoFhAEFT8qCiItdBDphBQI6YUku6mbbdnN9t3ZMr2Xc35/rCgWFMhS4i+v69o/9sw59/OcM2fOzPO+3vd9X/MV8mk9w7E8GpWCKlcepdbI3iP7OGXxpXQfbmD91sOcevJsUukckpTH39nEtu1bySkhHh+iapKBGbO+TpGnnEQ6wZvrHyc7lMZU5CacGKJn/wAqr0CdvZbzP38ez72+j0nVXu79/W+waNMMj6QotFowGAxEs1kstkKqqqqQ9UHOO/0rNB/uHWsWk8vSerAevVGPMh9CErPYPHPYuG4V/X09FBQUMePEpSgFAYPeQDgcJZqMIcgC6VQKURTJSqDO5lEo8rg8bqoriin0enFYjEhynnAkxZ7GVgabm9BY9IymteQSI2gsLurKHQTDGY60byIrmzA6apg7bSorV71Kb9cALl2ArXsO8bXLzuf+h9fwzNPPcuPN17FswYm8umoN3d2dVFVPRVYq0AsZNAoFCksx6UySaDjEpxfP4sT5C1FrtTy+4re8snYbTruJ0jIPu/e0UV1VTnGFj5yQoq5uCScvOInf/fo2ps2cQ1lJGXubOyHWwp69TciymuFQEqXBQsDfjdMKpcUVnL58MaHREJlYnq27W7n8q+dz3Y9uJZOVueDzV/KVC+dhtVp5ec0OJGSWnFCLTqOlub2FV9etRBQVzJ84BfmvdUsHRobwFrg4sPMgHpcdRNAZjBgtZkKxONlwiF17m+gfCTFx9kkc7hxAklo53BwkNBrggd/9iJ6BQRL5FKIML//lddJCHEVehUJW0dI3iGeeFTIqIodjkMuRzOQxmb1Egv1cdOYcPvelqwmHQtxy1wPkMxmqazS0NA6iUFupmTCBcMKOlBtGBmJRP7+/6ydcc8NvOeGkEiZVLmDntjX0H2nhqu9cx49u+z9uvOoLKFFwoLGD39zzJ0p8pbi8xZQU2FAJMksXn0r95u30x0JEsHLqkpOJhDrxlUxEr1cT7e9gzuLl7N/0IpmeHgZFJZHgEO7icpBEXE4nTU0NWO02ulu6ePTV9YgKNY5iN3pZIplJE41lqSxwkxOU5DIpqosc1CyaxpDfTySXw2EwkJFkwtEkap0Kq1pAEjUcbO3CYtbg0TspKZvCcLgTo0qPw2Sm/XA3Jb5iCkucFBWU86t7HuHbV3yZfQ2bePCZbeSlLDqDk9qpJbzx4l8Y8o/+20XWe+l6duG/2fzgf9j/NuBfHtqyLL8GvPavR7x/3FOnMbTZz8TP/ITApp+PTzqJpQDC/vec2jVejMYyVC29YUw4Aa752VX8+LTqf3tODz5wI5dddse/bE9l83hOum4shs5EYOPtH0mKTTiRpWzxd8ZS44Ddr95BZYHxX/Z751xEURgreK0zE9z499tEkmQSmTxn37uNhhdWQSoG2TR07GHSsj1/DyYqxtpXqLRMXH46K685EY1SRKtW/C2t7RNLZGhMHBsHRFFgz4pvMOvqPyN9Yz6K8TrvfA7PKcvHJ9a78H66u73tmjmq9zWXQVkz54Mff5z/yifxe+Jt/ldcRePhAPq4XETvd9x3pvq9FyHpf8nVciynPx2L1/s4Hx0f5/dENJ0kHA6jVqro7gly2tLlzJ2+kA07NqNSSOQlibIiPTtb++DIXipLS9EIApu2bsVbcwbRXJJ9DR0gSMRSUbq7jYiCGqPFjr1oIoGEnhkTLbz80tN4yqdSU2lGqVDjcNpROLLIOR8jigCNXQOohSzaqRYwibTt7cBl9LBt1x6qJxVRUVhAZDjA2pX7qJjmQmGDMs0BLj7vU6gVGs45bSH+7CgHN+2np2+I4lIP86umUlNSQElpJQfa+tnb1sO27Q0Uuu2ctnQRq3duZzQUJxyXueW2X3LqyUu55MuX0zPUjafAwsH6nbyxZgtDh4cRDBNYuGAqqUyOZDJKe9tOqkqq0VuNWI16tNpCnJk4f/r9z1kwbx5um4u99ftQCQZOm+gjnZSR5BSxjjSjrlE27dlPS2s9/oFeOju7OPMzSyB7mEw2Q0XRRDKdXUTCccxWJ23dSVa+vplCdwFVpV52bVnHwEAPaDI4RRXhZJzauZcTGV2Bx2Zn5rQ61Bo1SDI2o0RyuI/H71/BtKmTuebqq+kdjDAcDBGLp5AyWXr6R+nqG0agHgFQqjWIgEqrwe0rRpHLMqfai69oAWXFBaxauwlRoSEThXDCz+hIkP0Na/EVTaGitJApZT7e2NaAXqfiyaf/goTM0kXL2L9/P7Igc8FXv8WihfPZuHE3GSnAgS2b+dltV7Hi/gdx2Y3UTZ/CVT/+Fd+/5kK6A0mUVgXdvcP4R2Ncf+OlPPP0Vk5eeDI6o5Or/t+VHDj3IiqmzsKgM3KguYMJFeXs2bQXKQ0qrYLzl86hvitLJh4hFB6isjhDKpVAqVPQ3tbKty6/gEm1lZx9/lfp7O7hsSfu4huXvsrBtm7UGg2hcBSdRodSqSCajJLJQ7XHRzyTQSsqCUXDKDMy23Y1o4iFkd1OQMZk0iGqlaSiYUaDUZIZEZXKiMVgZ8mJDl5+oY2q4kqWf+0s8jmZcl8Rv3noYYqLXcQzWaIWCa1GxBvO43Hp8O8OoNKo0ekFElkZnVZNMhkBZIy+Om74yfdRGLJMmFJF274Y0VEZh9HKhElzsNgMbHnuMTSSEvdEJ4UuO8+vfJyLLpjByHAYhUJgOOzHW+Lh4KEGrrviHLLpDM1HBmk40EKprwy3twhVPkPIH6Cpe5ChwTAlVS46WnrIqVIM+fuIxXto7W0kFAgT7w/z7HOr+NSJk9l6qAWn2UxpSQmSLGAya2hra6TLH2TQH+WNTbvJ5rOYdAoKbUoGRsMYtQbsVgdaQUk4HiGThZFQGGNvD3qjGYdGSTgUwmK1odWLjERGUbsLceiNVJQWg5xDrdTTM3gEq15BMp0gJMpUVZYxEh8m1Byg63APp500hY071uGxVyDJWQRZ4pKLzyI21Mxa6d0zFMaj69lHjl6vBkGEbAr3JY8y/PiXjzpm4PUfYp97Fa75V3/oP3ZkWcZ+1m9h8PDYBqWa0bfu/q8OmfOm+rgM+PaLjfzmnFoAbOf8AfqaQFR8ZD/Skpk83hO/PSYQKdX0bvgFBs17u5VS2TzIMoF/6rwmigJGrZJ1154M1578D6/JskzHUJzZ33gM+ptBoYJsiuYXn6fyxef/dZC/FkBGZ8JcXce22z+Dw6RGpRA/3uLMskzt8tPGLVyJQ893v3YieUn+W+re0TAUSQPQeOfpH+h4WZb/2vFv7P93E3feq+iTy0u4T7iG3s0fvOD5ns4QAP5Hv/SBYxzn2OTD7Fb2UYpFRyOy/Ls4n2SB6J95t2Peawv6T3rXsGOZT9K1G6/P+SfpnI4zvuTzeV54eRVXfOks8Op56MEnmTChhngihRERWZLJogdZT2lZAf7eFMlMjvnzFxKJg8Fow2jWEImkEGUlzUd6mVE7kcXzS6munc/tt/yUJzKtfPH886gqL6Kx5QiJRAdzJ5VROmEa27ZbePSR+xAFBYdae5k9YypHOkewGGw0trWg15kpc9bR3DxMTd0MNE3Ps2nlLvylEWbXljJv/lQ6Gg8zwWGmVrCxNx/m5DlzsTvdxAwuovEkbf0RSsvLaG1vZbh3N+GAEv/IKI0Nm5kx51TcqTiHm/eQyAUZGhogOJrhxcaDHDnchAYjpyy/hFAkSjaTo7FlHZqefiKFRtbuXcusyVOwlEzDoBLYvvl5Tl8yF41WyYrH/8yCmRM42NLNqys3cfK8STjdBgYH8oSG/Sy4YBF52cSiE+ZTO6mM9WtXY7HbcVj17Du4h6KCCpDz/PG+3yEqBBCV1JQXks1mOXDwCACf/uwCSpZdgikrsrP+TXxlpah1IoVVUxkJhaitLqe22sf31mzmF/93Pz/6/rd59E/3UjlrLv6BZhRSngKPj4btDYRGE8yZN5ucxobBZOTFZ5/k8m9cydZtDRR6nNzxq9s56/NfxmKykEqmUCjAXj6dwT31aPR6fA4rE6rKkXIZauoq8Ux7gf6hBKvXP0jan6GwfCpxvx8lMsV2C1Mm1zCxuorLv3UR3cN95FJZDu96HZuvkp7OI0yfPoWf/OpJLIURNCYDBRNsfO7MLzKU6OLs808jHc6x4s+reeSJl1i9bj06jYOhzgbiygJMBh3nnncBTz79Gv7RQQo8NiYkg7Q1+gElOo2AcniIhu5RYpEE295aS3HJBXzn62dy+z3PMX/hZ1j86TN5/ol7cNdVsX7bPmJpEYtSpsJTQZ23k5aBTiYXldEfTVLisDOSSCJEE+gMFhqau9CSIxpJUlJZhJAIoZUl0ukYskqDo8DBjs0rCQeDSE41Tzy3kZ997xt89ds/wuEw4nW6KCvw4S4wkIlG6UUmq+3BbNIR9yfAqsZTZCEfhaQQJjok8NRLT2BWajDbXQwERxB1akJRkSKXByGfZzQUZemCaaQzeVw+O32DCTxWH4KgpdBTyebN67HrdEh5kYGBBMWeIqRUmq7+AI3NTcyZPB3ZaefNla8yq7YWh9NOPJ/n5TXbqJw8jVwqS2iwEXORC4tZz5bGI3SMDBMNR9mwfRtzZk2md8BP10CAiomVTKmpwOh0U2c28pPb/4SolXB43TgVagY6o0TiMWxeOxaVjmgyiaAQsCllPE4TTlHHcDSBz1NEod1C30iQQqsRQcqhyCdJBQQMeS2RbICeQB+yIINQgCxJdPq7qbT6kNSQzsQI5fM4JRfpRIr6gQYEUcBZWMGUcj0vHvRjNJjf9dl5zAhF76zVsfI7J1P7+iqQZXLt+xiNpnGYNEcVXxAE/vzozXz+S7cST+fes/DxfpBlGfuJN4x1tAJQqhnZetf7Ei/Eqlk8ctu9/Pqsu8c6U8ky2roFDDx88bjP999h+9TPx7rEiQoWfOULvHblCe/reM/Cb4NS/b4cIoIgUFlgJPjCN/9huyzL5PJjItL8b66A6AjEQ2P1j3IZiI4Sqd9I3ac2vjPYmMio0jDlrOU8cMksKguMH5mA9ML7vF7/CUGAs2oKyOVlVIqjj1dz6cMgCEfl3nnnoW87h/65zs57aQHvufQJUo07+O7Pr8Kg/eCfxSUX3gIK5TGXpnic8eWTnsrzz4xHN6u3z/njcBF9XM6l/zbesdZ+/hP03OYAACAASURBVDj/nf/llLHjjB+5nETXwc386Z4uaiZVcsKcWTz+yKPU1Nb9NUVLSyqV5qSppzEUOEiTv4/PnXceT/z257TEJpHJBDDqTfQMDJFKZijzeBgMDnOSfSoLZk/m2uu/x+HOZnpa1hAYepm5JywhGVcyFM3ir99J8/5dhJMSFosTk9XJwGCSfC5LHhkpp6LAVUM0pWbm3DrUSh3nLFrCgMVKa2GQ6inlaG3FZJ19uEuq6OjsYtGnphNJq+iLJ9m/dTdnnHYKvX4/Tz7xLP6BZpQaFYWFTpoaD6AzmIiEhpAQkWQtapOKn/30Zm744c8JBsPceN1NtHT0k0imEJFobD7A/qYOpk5ZTJF+kJm1i1nfGOXIPXczfeF8erqGEApMvLxuJx53MS0dfuadfAGjA/vZtquZ7p5BlIjUTHRzw3U383+/uYPX16/nwYfvYlZlGTns9I0OojXa6B7sor1rAI1RQCOoKfcWUVU7mw3rN+IuKiEwPACShE5tpKTQRu3ECbzx3CBGk41QJIIgy4SCIa6/8zd8ZvnXuP++P+J0exENetr69yIgYzRYGRoYobyyFOciMz1dIXxekRX3PUE+n+LeP9zFzT+4lrYjnSAKLJhZy2gwwkhQJJ5IMjIcwFbgQS0qyOQk2o70oFYK9A8FOHfxFaiVasw6NcmiHCajnunTptPR2YOr0EVfTwehSBhvpQ9ruQuHzcAJ809g0VnLOdA0wImTipnrVtKajbHuzTfQSypGAiE8HhskE7zZ2MotP7qSipJiptVVkkhkeOLeFnI5CYfVhK/QyLdv+A79bY08v6eZRKQNncGLJhvm5bX1qN1uDFobiUwEt6+EWCKCOZtAr9NRVlWBt+gS7FYX4QRoNSoEWQRZQpYl4rk8tcXV9AVH0CjVdLS2EQmHGQmGGQ4pUSsFRIOOvuEBRLUKs9rC7l07CSXyzJg7E4VSQSITwWG1EE3GSaXS9PqHmFRVSiaRRq3WMbuugq7hHmKiGY/bwMgBP4IFxEItPqcTs82CkJA52B/GPc2KmFchDKrQKwxYjEqSijyJgA1VYZLVq1/FVzaJ2bUFDI4M4rK6UCklWnuC1E2u4rf/dwcz5y5h01ubKfN4KYiFWL1uG58772x27t6Gp9bBSEZBnbuYiy+9koP768nmByjwllFaOofmrigFBQXEowmcUp7D+9tQaZXMnDaJvMJMc8NBAqEMKlkiY4TGA4eYUVsNUo6nn38NhUpEoVCRiqaIGlSYTTpEUWJmjZf2wSjRWAKjyYiQTeF0ODA7HIzEAnQP95PJy5Q57YRjcYx6FYKkQKdTks8LRNICZqORRDLO4Z4jVPp8eKxOZFFGyEuEE3G0GhM6rUg4nsPtMFBZUkgoHOeOP7zGaYsrQN78rs/OY0YoeueiMpcfy5VEoQRZpmrZjQR3HH2b9WWTCkAQ8J347XH90fEPKVqCwM5X7mBC4QdLQRp96lJsc+pxnHAt+ikn0PvABR9JupXt9F/ASDcIAosvv4QXvj7vfcdIZsbcRKNb7xqXOQmCgEopUOM1EXzpqn+7z9uiRC4vc+sbbdx9+4oxISmb5sCzf2HeO4uYv30dRQUYHdz204tZ6LNT4zUdtRvp7XbnDqP6A8f4d2Tz0r/vC/tBiAbGRLQPyD/fh2MOo7937zrsj3LCxb8YSyuU8mM7KVSgNTK67qcIAtg//wB07QdHMSM7fndU1zwvyZDL0L7+1x84xnGOfcbbBfRhuorGq935PxeMPtYEog9L2Hs/ItK7bXuv8Y6G46LHf2c8xchjOd3vOO+NfD6Pp8CGUaPAoZXYvreB7u4hTl12GoNDo6QzGVRKFdFEhpb+fhxGLatXrUFbtpC27g0YlCKuCeXYRRu6jEx8KEvNRB+vv7GFNW8c4ff33E1eyvDY/d1ccclkxHScSEIgHBmkyKmgpqicbcatuB1mBnqbQZaJR0TiyTSTJkzBWzWXla8+y2/uvJFdexpYuf8VXGYrFoWJpqYW6qonsmj+mWzcvpODh0IMh7oIRSOUuG1kQ9288uxjLP/cxZx/0SVsevM1Ghs2IadynLRkAj0decKhViIxBUZjhGgizAmnzSAbDyGI8OaWespKi9i17Sn8Q2Esrul85/Ib6fQP84vbH+f0T4/y3S9fwQ/bXubwvh3oNQIvrd+J3qJGlDNYjRYi/np++IPbUOhMPPXsyzx8z68IDkTweTx8++ovUeH1MntCLYFIBJddRcdgllw2xGgyjEIlUVDlRU6K1E30MRyMU1BYgqhQctkFy3hx1SouvNCAw2ah/vl7mXvyEoKxPKXeHIGwgVdWbkQV9+Ef9XPR5z/Li69uZP6MGnY3tbJjy2YuvvR88qYMeruWzr3tDA7kmTvTyjMvvEpfr5+XnvwFfT2HWLN7Dc4Kkeuvvw5RIXBoXyO/u/0G7nvyFSZOqmX5uRegVeaIpxJYDCaSWQUzp05n287tNLb1EQgGMJnNiKKI2VfC1p17ONTSzvSpE/jCaRcASg7u38+Uk0+ndzCLy1XA8FAvSkcp6pCKZTPiLFr+WdaufR6Nwo1sKiYea2b7pteITaxBFlWseX0ddZPrGG0foL1rgN0NR7jnnvuZf8JpjA60UeDWcf7Zp7H3SAx3WYDPLFrGhrfWodBZsTsKyaTiBEf7ueHKi/nVvc/wza8s5TcPreVbXz0LRBFBAZlMhq7uLvoCAxhUxRjVKtQqDVXz5vDmuu3Iyhwep5mm5jYsORCR8Q81Ek9G2d/ZiVkzlpaJqMSOQEqjR6lK43Ha2dfRRGGBh2w8j1apIGTM4m9PoNEYKa8wMeR3EIjEsaGj3FKEuUBDYCDFzOJabHYFB/d1ozK6yI9kWHLahditDrbt3E9xkYvDDRFGhkcptM2mvXmAjdu6KS2rxD/QRevBDubNnMn2htfwuWrp7e6j8WADVZW1bN30MsFABEHUUDKjkFKfB5VGx9qVL6MzWGk+HECv01JdMxGLTiSVUnD/c89w03X3sGfL0xhNJna8dRCHy0YyGMPhsJGMJ3E6rESjUcJDg0RTYdw+G5IgMclbSjiSJBxPk8pliaVkHBYzhWYtsigSCPrZ23SYUtGG0gp9I6No1CpGtSpUShXZFNhMWhKROP0Dw+QR0Nq1iEoRi0FPz9AwdqORuDKF22LHqrOCINPVN8L29dtJIHDphV8gncty/8PPUFstkEyn3/XZecwIRe/ku680jtWp0VvHFvdh/7i5gEZ2/A7nvKtwXrSCkSe/clSxEukcRYuu/1v9ocLFp9P0yzOOeo7oLZAIfyQiUS4v4Vr4nbFz+AAOqHfiPek7wPi3c/9PvH19VEqBWz5dwy2f/nvLd0mSyUkyBWf9GgK9fxcv8jkI+/nBt3/9z8HGhBRBAIONT19yBg9dNAOd+r/beY4Mx4HxPXdJhl9ubOfhi2YcddoZwIb7r2Tx+T98XzWE/hNvxxCRQfy7U+mi717Gr8+aTCorMeXaF4i2Nf7NHYcgcO61l/HQhdOPenznaWPpjfZxFueOc5zxTmv7MB04x5pI9HHxXuZ83JH08fNh3WfH36v/bWRgNBihq2eQvQdbGQ4FyGRyqJRK8pKMXqNGISrIS3m+sOiL/PjWO3C7dZw8o4bhSBnJqIQHMyeeuIQ/rPgzDrOd5uY+Jk4s4XD7Xla++gp9nYOcuNxNWo7x1IvP8MWLrqDAKdPdn8ZtTfCZRXPZvbuR/qEoZvdkUuko4WgEs72IkZ4NfOmii/jL6ufoG+7B63Ii5ETkpEDWpGT7nj6OdO4inIhR4LLw+uuv8oVzljMyNEhtTQVup4PIcDO1s87Edt5FvPrCX0ik40zI5zGrTUhWFwpVArRKIoE4JjHDL+78McvOugKFS+bA3u007O0imhCQ2zbQ1dnJ/IULkNIJmvZ3cuutd6CSRBx2Pdv2HsZRokchq5nr9ZHTqEiYBM793Oe5948PE09nqZ19ErIcJDzYRZW3lEgyjU6rRRC0BKNRLAUmOvuG0Jk1mLxGVNk8SyZOpD82SGdnM3UzFqLX6+jt68diMbJ1RwODQwF627ezVKtF0JTQ1y8yudpCTm5DEGw8/chj2GwORFFgy6FuvO4aQqE15PNJUpJE2J9EodaQzAR4/uV2ps0WUWuUeHxuEuEQ2agaTdbCzT/7Jj0D/RxsaSKqq2DmglOw69UoRJHWQ9sxOqz090U4c9m5fPGL56Fza1h24jm0t+3lqiu/QSKWpWsoSC6bI5nJ8MRTL+PzFSELMiqVBlEAq81OMBjAYjbhcRqZU2PmsKYGKZfipBOWER3po3egB5VGx3PPP8dWq4HJBXaGhjJka2cgKpQggt3j4ac/vw+Xy8qKhx6m1JNnzZrVpPIGiqqmMtpxiBkllVTPnEM0pUOvGUapMhAZ6UAUIZ4U+NaXFiMoVGMFwMkTCoewWU2UuX1olALZNISjMQLBMGqtAbcpQzIRwl5YjMMkopRyDIbi7G8bxKBQkUon8fcfISvqUGrNeDV5joxGsKj1tBzKYtUqsHsgIqUIBYYorD6ZAtUwexr30d3TQ1HFFGwmBdXlPsQ8RDVd5AWZ55/bjsWgoaJEQ8dAlFH/INs2b0EnB3l0ZRveiRUsmjoFb/U0XCMpctk0O9avYnaxGaVvIpW108mL/TQe6MFoFUgklaTTcWSTyEgkiKvQjMOaobzUwTeu/B7pZIjPnDmRQ01+UukcSrWGeKiHiqpKPK6ZmPUWZIWPx596GJvZitNtJh6NkEbA4zaTTufYumozBqcVh85GUJFGlVDQPjhEud3DaCDA9OoyovE4elHJSCKEUqlmJBCjutxHKtuNJmtFliU0SgXkJUS1SCwVRadSk83KqFQqVEqReCxKPJNCK6gRlSqiySSl9kL8gSE0ohKLzkR3/whZQY3DomVkNMmqjTtJZ0GvdpHL/4/VKLLo1SDL+Ff/AKUoUH7lX/Atun5cXEUKUQCFknzbbuAr7/v4vCTjPPH6sULMAAolA1t/i/Y9iAnvleDG27DNvQr7GXcRfO36cYv7z9hO/SlEhkEQGHnr7qNPz5LyrPvzreMzuXFAFAXUovBfr6EkySQzeXzn3z1WkDqThOgIq/+wAu8fVvx9x7drIynVYCmgbMZkdv1kGQpRYOGNL477/AdDKVLZPArx6NLF3mZqiQWAz/xxByu/ueCo472NIAgoBKjxGPG/cQtq5ZhrSaNS0H3f5/np2hZ+c+fTHHz2BorsunEbl7AffLXjF+84xyT/XLPmk1LYerzcQ+/GR1VPabwX7p9kd8ex4kj6KPg40jk/rE6Gx/nfR6vRUltRRlbrQaE30tS1lnw+SyAeQFAoqKooxqLXgSTxh2eeJJcKUlzko9EvoJDMqBUJnv7L63z3huuZNXEWqXSUUCLHodZ+QtEsb21fRY/UyqzyOu5/8AW+eMGliKLMd2+4jS9/9QoiA0F27DxALJdn5pxPMW3GJERBwYZ127n1psv484sbEAQJt8NLTszixM4bW9dz4Xnf4M1NG8nle/F63MiDSbqO7CY0OsTuxi7s7iKef/I5li+eTudgP3MWfZ6clMNoKUPKjTC1pgYEkfbuAL4iN+FsmMVzPsXKlS+w8MTpLJ7lo80fIzgkYbL6GAkcpLLcxfU3XsfGbfWUTpjB6UtqeWvrDjr7hlCpRHxeL0a7gE6roz1qJx/NYTenOf8Lp/DH39/HXb/7OcuX/IFBvZIZtbMpKyuneyBELDKKQW/ErAfJrKEvrEZjMlBW6KBWZ+eRVzZx4ZkLaU0N4h8ZJZ5IcdJ8D4YBPVtXPwIKFcWlU1h8ytnImU4O9yhZvfIxIsEUgjyMUsyTiPYyPBImMBrga/93ORdffD5b1txHp5Qg2tVPU3MPWrMXn7eARDpJPiehVKnZcGAfl196E1Iuy0gwisNiY+uOLejNJiZMmY0v1EEyk6GmspzhdJR9Lb00tB/iimuuJR3vJ+yPUFXi4rEn72NP/RFkOY9CFFm06FSSUT/dPWECo0k+vXQJ1ZNqeOChR5lQVY2t2EvfUIDWrn7S6Qw9A/WIQHh0hMYD9VRV1VBZM4fyilLioRBF5jg6nREBAZE0rT0HSUk7ObfoK5xxzlJ6247g9smERzupLbZSO3c6dqcHQRTQxiK4C2sQBYFcLsNVX1pKPpcjHo+zectusrkMGkWOnU2HGBzux6pVse/QQTBpMIpW/L1+9OocoXiULDlMGgWZrA6TyUyoZxi1UkMqG6eysJCutoNU1s3lyGEdw8N9GE02Ogai1E72kFMYwD5Cwu9noNmPRtlFp1KNWqUgnMzgTvRSWDkNi9nAgZ4MWlMdDVvXIUl5wvEkQ90DVDkcFJd42bJhE6pMhCUnTWCrv5239ocp91WhHO0nHh7FaZOJatUsMqaICxLFpacQGFpFKiYxeYqbhtYOhtJ2KjxFqLQW9rfsw6jV4HYXc9nXbmKwo4X61H4cNi9mNXhnnoxSzPD/Lv8WSpWI0eXDZjdhNRUTHQkQy0qUosGsVLL+rZ0snF1LbHQYr7cY1VAAu9fCaDxGLBtGrTWSzSRISyIOp4esYKKlqxeNUiRHjt72USqnGVGIeSw6M4JWi0ahwGE0kk6nyZJHadESGA4gKWVEQSQnCWgUAjIi/tAwRW4XI8EgBqWCrq4uEvE4oirPYGiImQuXkEzEsenzhMPRd312HpNC0bOPvA6CgEoxtjhu/8Nncc3fSDiRxaJXHXX84a2/xjX/as66bwcvXzH/PR9nO+l7Y2k1ADYvo6u//6G5Zzo3/JqyRdd+KG3iU5k8noXXAFB++lk03HL0BZjXNfsBmFluO+pYHzWiKGDQKgm+eu0/bJdlmUgyx6zvr2S0ftuYgJTLjP2lYnSubse1+pV/OMa2/Fco7S5+d90pnFtbhFopfqDW9tmcxNKfv8mmm5eO2/svCAIo1Wxb8TSMo1D0zvjKd2S2ybLMtB+sYfMPT+XHp/143McDGPzz5R9K3OMc52hcRR+V++bDKOj9Tj6s1LZjUUD5MBxJn1Q+7PvqP417nON8EFRqEf9AP8Wzp9HbM4IFJ+pyNwpZg5yPI0hw4w9+yhc+dwaZIFz6ta+zces+JDlIYaGH3p4uvMWVPPTIs0wptxGORzGbvWRzOcq8VTQ1HiSVS7IvlMfs8JAVktx48zUIIlR4jeyoz4GggnSGgiIPelnBwZ1v8uPvfY0nH3wWf0ZDUu6hzHcCXqOVnQd6MBhKiCWjTK+rpbyigEi4kzfbdpIIZNDpVEycNJ0Cu5vP/vFMbr7p/xGLRfD3BykrL+CBRx9gwxuv8tQTf+Tzy0+lqspBe18XTq2Fh1f8ESmZQWucz76OUWonVtPX0008FqGyogyn084Tz/6CSy/6AW+ufo0N67fhDw4jKGVEhYjNbMTo0KM0KCl1q2nrUeITTeQyaQqcOW773rW4nU6Wn3k2ZpPIYEBkYOAQRp3AzFll+A8P8MJrm1l2ykxqyooZjfmRlTmyOdh/qAdRY2TrhnVUVxciRY30DYaRc3mmV/korylj684D5PJ5DAYjJrMGEQ95QUE6niWRSJHKSEyo8NF4cD8VlRMY9KdZv249eqWGbFagt60ZKZ9k3cY/MhAIMddSQdU557H2xVe47c47aNr8HAPxNApVEr/KQTqb4y8NTSxxlDOcHaK2opQ+mxm93k4+m2fT6xtYvHQm5oJCtj65F6UCbv/57xgJBjlyqIHJFRN46PGXkAWBwOzZJCMBNPk4r695BkXmFMy2AvY3tHLnz25ix+5GXE4T61eto8BVgEajAVlCiqdweUuRJYnu3n6QJUYCSSocU/EVuclnU0RDSSLpPBoFKNVWJk0uoKv3KUT1ZZhNDhxOF6lEDFkGlUpFJpNg485eFi+oJZZqYvLECdTvrycejSClBBr7u+hJxEj3Jzl5XiVHDjcz0tNHXyTG9IoyYokkk8q96EwCk+QqBIWWYDiK12NgNJuhvLSItiPttLQ1ISszXPbVz9HSnaG/10/jzkGqZxei7M+hsShR6mTqd3VgMevx2HwsWzwNKafi2deeQ1AZMWpjKFQKRLWA0WhGozGSCSZZPKuW+oNt2PXFfOWss/BHezGrolRN9NDTniChLKe/v59HB6O0PbYGUYSTZk/DaTWTiKfQGbT4A8PY7DbCw1FsBRZeWdOALClQqtVs69qImE7jcjjQitCy9xW6U0lu+c6v6PZHeOOlZzCrC5DTKRwuG7ICookwjMRR2AV2t3aSS8vUVpZic3sY9Y9S7DTRMSLgc6pATjDB6ySXjhGIZShyuZlSqmPV3nZmTa0mGomjUenIyGATBaLpHBpRRU5OEkulkRUSep2aHAJIecLJKHbBwHAygKuwmHxewqa3MhKMEI8lUagViIKCwYCIWYoQGBnioa07kfP5d312HpNCEYFeEBV/W1wrFQIYrJQtunZcfkgoFSJojWx+8Amkr8/7jwvxTE6iYOG1Y2lLgkDLurtwm4+usPZ7waJXgSDgmH81wZ13j0vMXF7CNf9qADynLKfxztPHLbXt/EtupfKMs8cl1icFQRCw6FUc/u05wDnvup8kyWOpVUo1k06cSdOqtVz5zT1cCWPpVrI0VhdJpQWVhltv/TJfm1uKUhQQBeFv958sy2TzMl96vIHNm9vYesdZOE3jm1Y1svUunPOuYtaP11L/0/Hr0PY2eUkmmsrxiw3tvFHfR8Otp4193saZ2T95HRTKv7mXjvP/X975nfBhOGzeT7yPsz39h+HC+LBrNP2vMR7d2j5JYsmxViT+3fhfOIfj/GcEUWDiqecSj2QpLHLw7OP7+NqULyPJMiCz+63VfHrhBNatehmdzcmhI330Db7FGaeeQkdvlpKySqRchoP76jmizpBJR0nGMlitJnpiAZKpDDqtnmmz5mEw2Xhjyy6cRUZOnb6Ug4f6OHKkE1EWMZp0vLXxKUarvWTJcdOPfsK0ScVUT15MTZmX/qEgh1r8lHg9qEWREreJeOMQo8N+rJYCZk+vYcOmXSydXkxHaytF8wzk4keoKvdgMpWz4sGb+PplX2XVmt2c8unP8vD99/DSxm2cf95SDu5qpLrMh80xBVEUSdHPW42HGfFPosw3GW+hl9WvPUU0MsTSk+Zz8w3fYjQxQCyepMxbijqnYDgYYkHNNA6n+5HUeVav3EA8nmRgYBJqMURhgZXRESVTJtdxyimn0ucPMhyup6jIwfTJddz3wD2gNmJ3FbB+UwMnnDiVR+5eSz6VQK1QICoN2PVKplSDPxykrbWd7t4+pk+agsFmoqy8jM6hGCajnkQ8jF7jY3/bdmQFzHbqeGNkiMoiF77SEta/9iKpBXNYt3Er8VgK74Qy0okAP7jtAWLxOM89+3t6urpRlksUqZdgdBTR232E3z/1FImUntMXTKVk7kIillHOPffzZPJZkpEMb765jf6BEWYtMFLi07H49Avo6N9EeWExeUlm/cYdbN22DaPRRCg2hLJgAmdfcg2CLLG3fjsWdYSTZk/nrHPO5NmV2zi08mnKK6p59rVNPPXgvVxy2aXsathMSUkRHruSAwdaqN+5kRPmTGH23MUMRkEUBHzeQppamukdGEBGZHQkSH9vN6lYhMrJNcQSKvLyGZRIWiLJDOm8hEopoNOoUGkNSEo9ufxhNmyvZ+aUiXgcata92YB/aBSjRkGB1czetiYu/MwFlFfVsWvjBswWHeVmPdFEjmJvCfs7WukNhpmxoAZ7pYbsYZHeuIzL42L7qrUEknFmzpzDcOIAToeH1iONeLxuVCqJkL8Xl93O4d5+IskEHquFSE7kYFcPOzb3EYkfJi2PYMrnyGZ02HxWFE4Dva1+ZlQ4sRR5MXm9VM5dRDyeIptKkB4K0JG2YFGkEc1Kyiw26nfuYM6pX6Bs4km4vA6KrH7qdxxCFHJYLR4sdplcIo3FrMOkcFA9I81IOMKqjc+Qz8vMnrkQr68Yu6+Y+uG9GKx67nvml7z15j4ioRCVU6vwOrzEMxksVjfZRAyTSU1hSSE7tzUxu6oUlclDPhNFqRXZ396D2WqkdyTK/EnlBENhBEmkrMDKzqYWygsrmVJcCIC7wE4glqa8wE1W0qKXQwRiQVLZDGqthlgqg6wQSMdjxBIpbGY7kVwCp9FKaHQYg7sQAS09vW1odUaCwQD5XIR5M6G+cT9qaRS9V0A3+O66xbEpFMHYAvsdjL55K475V/Ps3h4+N734qMMPb7gd1/yrcZz6Y4Lrb/mX1+OpHL5F1/1NIHr04Zs4s8571OO+H1pe/yU1S68nl5eOerFtO/n7kIyCIDC8/bfjunh/dm8PALt/smzcYh5LiKIwdr+6yth20xK4aQkwJpqksnnuXN/O3feuRW2xkulu4eYfruBmrXHMoaQxYCjykU6kyQ12gixx1x2X8tCF09GqFONeo0ohCqAz0bHqFfgQhCKlQsCgUXDzsgn87PSaD63GVvvKlzBMP/Efuq7B+3dufZJJpHMf9xSOOcbbCfFe433cXcA+jHpKxws5jy/vfJ/e7Rp8koS0j8tVNJ4c6/M/zntHFAVGBncgSzKh4VH0GgWth7fhLapGkvKkYlnMJhXVJV4OtIfo7m7gs5/5Klu3rKWixsLQsAurT8QVNBBNRig0WxkOhRE0Iiq1Aa3aTGmlg0DbHvJ5I6W+SRzat452WxMWSyVqtRpv2Sz6+/ZSZSul2GTh0GAvbpuOL33pCvY2DxIIJykscOGyzmTL2rdQKkZpbDNTYHAzXYhitTi466UVOMvUvLbzMNlMG3sb1nPO6XOZM6OW4Mgw+rTMS8+9gD8Q508PPYjV5aCmrICm/e24i6bTMzrKYN8O4vEYsiiy+Nw5lDtdlJa56GhrYu7ceew51EDfcIaBkQCoFYhaBRn/AE53Ids7enCf76C18wgmrY7+vjACIoKpmQKlk7LySVSVmqmaMoX+8CA9HfX09vlx2RXc9evfYHI6tsqIfAAAIABJREFUUSqUWO1ucrkcB1s6MU+wk46rmWKtpr2nFyknUVlSRIXPxVudTeTJUVGiYVJVBf6khNlgwOk00RIMoNIZmT53Aa+8/DR222RMdjNanY51a1ZjN6go0E3GPzyIRqWmq6OFbE5m94aN2IocjHYPoRUMJONhcsMdRKNB7n/4CbSiif5IiD89/Rx/WHwuD219jpYn30KtVbH4jBlkIhJlRdWkoofYuPcgGUlALUF9ayMzP7WIH916CzUTahke6CYWrmT7o8/zzEsrkWSZA5WF/PH3/8dpy+dR7l3M0mUmRI2RsL+NfB5mzl9AKhylvLwKxwQH8Uica7/7TbY1jvK7228mlZIpqT2BApeDda//hZWvrEVG5HvXfZvy2VMYLHKyees6vEU++gZHcbvtrNvagEarZUJJAYkc2C1W2rr2o0CiqsyH0WTA49BSv3cXvb09eG1FZDMR2kcCpCJJ5HSEFffdjcFoorN/kKJCLwajTCA5RH86TComY9Tr+ctj65i/dB5CRsNIOMooI0ypXsC2LVsRNGlWbXycnZsPMbnuTNLGDqrcTobaeqg7uYZUd5yUIsEcXS272g+wtbuBGo+V2oJq6iZV8ueXViHEJDKJMFqTjkBlBfc/8CRnnrcMh0VDT/db9CcjyMkMhe4SfvKrJ/n+ly9E69Lzta9+j12tLdTU1jBrWhnxoQPEShPsrm9CUEik0hm0ei0pFOzYXs9na2tQO8vRu/UwEKRi8gyMViMHDjZS611IPBYlGOpnytTpBIfTRKURBDlLTpVEpRbobB3gSLSb0885hSVnfYG6uonsffNlmnr6UOs06Mwm5FSOySVeRiMZgkNRckqRUoOSCq+bQ529FBVZses1NPX5KXO7SeXyiPkEKEQMKi3hWBKn2YIoQDSRRKPRIok6tHoN0XCC4UQSJPAWZGltHyQ6Ggag0Ommos6NXg+zZ7jo6zUihHtREXzXZ+exKRRpjWNt0N+BKApoa+dz+dfv5LNv3X3U6ThKhTjm8ogF/mG7P5xi4rLvji38RQXrn/0Z08usRzXWB8VtGXOguOZf/YF/XG9pG+HMi38KsszsL17A69ecOM6zhMsv/wXjUm35GKewuuIf/leIAgaNkp9+qppbPl0DjLmPJFkml5fpHEnwk7Ut+EfjnD3Hx6cqz6WywIhSFD5Qutp7ZWTD7TjnXTUuAuQ/IwgCSoWAcvxKdv0L+b92mOu9/4K/jSnL8l+3y//g0jqWuWlVy8c9hWOWj8pV9Ekp8Pz2ov5oO5G9M954c3zR/t/5JIpo/yuuouP8byMIIr6CQroOd6N16PDVFJBSiNjNeuKxKAqjCmRwFhXhHgphsro40tXPpOpSVjz2CoIssPT0mSjyedwGMwUTZ6PoPEAkmkSjUeAqMCGYlCg0SbyqSvYfqEejsZPNqBns62HWnJMQkCi2LqB78ACjEfD4ypl1wik0tQ9TXVVOc2sXOrWAPyawcc8azj9zHrG8QMvoEC45w7cefA5BpcXi0TPQFkVUyETjMdJyjoycxmZ3QDrLvrYBUnkZtaqPk2fVMdg3zBs7dzOrtpoKTyHFDiNSXubN7buIx5O8WL+Wqu5O3OZqRL2TSZUTCGb8OCvNaHJK5rm9iEKe5u4+fvDFU9nV+BYms4G9TR1YXFpMdgN6t8gc32LUykI8pV7sFj2PP/IaU+boeXPdLuafvIRUNklddTGHdjdgMmoxWfN0dw8iR7Po9Toy+TzpdJK6qkqUKh0bG/bjrNCiMoo4HYW4qybRdCRIAmA0j0qtgnQWELGZbVjtOgaHtbQONvK5y64hGwvz+NanSSYzaFU6Jk6uRqfVs2PfLpSNaoq9ZWSlLLImRf2hVtKREXKpKG5fOQVuJ9l0lOu/fxOLlp3NL1+/nTfWvs76LZsRkwkmz6hCrfKhz7UxcLiPrrYuzvzsEjr3d3PF92/j4UefJBQKMTjcwI9uuZaB1iYissD3fvBjpk90kFFJuM0CBVOKSCXrONyUIw9s37aRnUo16ViIWsVEigtsoCll2cmTmDH5OR7806/ISnmcbjsb7mlg8tSFKJQiVo9AMp5CkiVmT6mj83Aj37r8EuRcElFXgFGnJpPJ0tU/gkopMKnMi8Ntxm42oiTLpu3b8Q/4qSutIJpIMhKKk8lkmFA6gWg6hooYmazArJpydrW0M7Wkgi0HG1Gq1XjnFjBwJMw5p5/En19cx6fOXorLAtGkmv17t2JQKVk0fzn7R/di0qjpbX2TaadOY6R5hMbWPrZsbWHuGdNJh0Xs9gGmTfDSOZJiONhLoWjl9frtqA1miqx6hvN5nDYjhQqBgErJq4/cyymfO5WsSoEguRkONPLsbXcybfop1DcfQtllRGncx2P3PcOd96zgT4/fSYHsQa1UEgr7sThKSCdi6FQqNIokskvAY3Ux2eQg7JvCrElLiATDbFv/HCkhjZQzk0iYsFgKaO86TKHbTaHFw4RyJ3s6usiJamYtrWGmKKJUDxLN99DZOYSzxMppRVNZ09BCKDiKU/n/sXfe0XFV595+zpneu2ZG0qg3995twIBDJ/QWQrkhBQIJSUghlZubhIQLoSW5CYQWCM0UA7bBGGPj3ptsWZZk9T6jGU2v55zvD3/k5pJAArGxTXjW0j86Zb97n720tH/rfX+vgY7+IOFEhsm11QyHhgmPZtjV0suU+gClLg/duQw2iwut3oggyxRUCnpRS16TwWt1EoknSOdSBJwuekNh9KJErpAhkyowaVwD0ViEQkZLkdvCYG8ISS5QQMFispAs5JCydtKZGI4iHxbL+wtFJ2RdhiZQ93d/P/DY5w6XY512ZPxORjYdNsd2zP8O0VQex4ybaTj9NnAUE976IJEt9x8zkehdwhvuPhzjnG9+qOcKkoxj1tc576o7QG8msu03R0UkAkBROPT2PUfn3ScA8v8XLvbcedbfvf7Xgo8oCqhVInqtioZiC89eN53V3zqZW0+qZkyJFa1aRDxC5tXvh0oUsE47Gc+crx/xdyvvyQQ8GrhPvv1vfndYoBJRqw57Qn0ccRxNFEXhiV8+fKzDOCF591B7pISJ9xOI/jo75Hg5SH+UOR+vc/mUY88nYS98EubwQXwqwB4mEU+yf38z7V1Bal0BfEYr4c40W7euQ0FAUAoU+X3EYwm0dgOdbS109nSAtZrKScVMbAjQ3xXBafSBWkv3we24i0wsnFqPSZtjy8491NfW4AsUsW/vKgY69iDmguzYs5PhoS7mz56G0WrD5A9w/mevZsyUmQyE82jVWUyk+c+f/oLBwTZuvOkmNBoT5116DaFwlr72jbz1xos8+NYOyirqKCmpJdYjEqh24yox8rVrz+FAUzcH27to29/MztY+7GYNFq2WU2dWMdTXx5iaOhY/dT92s5OAy02lv5yhkVHMVjORWBiPw0lHpIviIi0ujxurYyw1VRNx23yU+pwM60zotDrycp4COrpGYry49B2iwyNUjKui0lVBtWMBNRMnM2VqAyXGETavfoZ1a15hw1t9zF+4iCuuuIiv33ob8cEBpk+fyqzZ4zCpVPR39pEbiTLdWYaSjWE021i9cTtnXfkf3HHnvXzjq/dT4arglTXrCIfTjK93MmtSA+09zWSifeQVGUXJYzIKSFmZocEeDHoTLzz5R4rFYab4fRRVGkimEwSqXSQSwwQqzMglIlV1Fiq9WrzFbuxmCVFUkRc0FLJp5FSKmuISyseKxIbX8MrTP+OR39xNfXUVeosRvcnIaHiIUo+DUDCMy+cgF81gsdl57PklNO9aRbS7kUw6z+8f/D0//e/bWbz4Xpw2DRqtnUw2xbIXn0Ql5/ntPT9Fq87Q3x1k/knnMHHiHKpnljGupgZdqkC+kEdQaRCQueH6G8jncgT8Lk5aeCYmswWL1UprZxcbN2zgpRcWs3LFcurHlmDRgUqU8Dq7GB06SGykjQqviDreTVtHHya1xO6dW/mvn/2KUCjIYChIPJuhubeP9oE+mg62ce7CuWx+ZxetvUEy2SxNLb10xgd5pXET0UgCi8vEeNHIleecwaWfPZv7fnEbq958h7rKejwOGyVlHiZUN6CzeBBFAbcjQHmxHzmXZtWG3UyuLObcGQ3oO+IsmnEqrQcOUacIrNu8Cm0yj8euoSZQjlYnUMjpqXJaOXXqZHx6GzqDFn+tByk8SqnJRCHaw4SGBUyefhrFZRXUzJjIGefMpq97iIuuOouG0jiVFjeiWGDT9l14HH4GQwNEEqNEkwm8LhdXFE8hly3wP9veoKntbaRcAQSRtBTFIap5/uk38JlGiEZ3Ucj1EA4P0BfL8dDi1Sx/YyMel0JxcQC/x8sLj76FNmmAvJqS4hJUFgdyKo9VZSQjawkn4jRU+DHrs8yuL6ZjKMzMsfVU+YwkZZkStYZ4cpTRVJyRWILevhDdoUEGw6MIKjU6tUI2lyWZzWLS6zGZdSRTGcxWM0a1jEYUyUtZWg/14XNaqAhUsWDBODSiQCweQzRYmTR9LmPr5h5OjHkfTkihKJ/Lv++1Vc/9FBLhI3IQFEWBsRddDNkUFdc8xvSrr2Bky4NEVtx+XJSwZPISznm3Hf7AhRz5wvu3t3sXRVFwLPjeYS8iRSa05UEia+/8h899VE67dy3w792iPJ07bBL2rvn6iUDn/1wCisJ/PLP7WIfy4ckkMEyY+76XBeHoCm0fB6F47nDZ66ccN7wrqHySRJWPey4n+nodCU7ENTgRxYgTMeZP+egYTHqGQ2FEtERzAAZsVjvJpASCiCSrkAsFrC4bRSUW5s6eQk3AD5LA+InVVNWMxaRTk5NzOGxFaArg0tk4FBkhkgGX28CatzYz2Buj2GGgqMiEymzAWmHj9HmnEo5EUYsqItEYI70DdB3Yy6HWrfzuwft5e8NSFp19HgtOPpf5C07h9m/fyvUXXsK+A2F27+lEpVKIhYfQZEe4+qLrmT3vLJx+B7d98Rs0Nx/CVVJMVaCMnnCaIouObEHDbTddw+OLX2HMtNNoD/Xw/JJV1FQH6B4cZmCoh8aWFpLxGNHuYWwY+MIZn0PjLMNX5Mfnd6FV20krUfYNttMTP4SkUmFwlvLs1q1ElRi1DdX43ZWUWmqYffLZ1FRWEjnUSC60m7bmFqrL3SDLZDNhzj/nM8hSjr2NjUiySOuBNuIJAaPRTzSVJZfLkcyk2dPaRSovoagFUtFRDHojQwP9zJ8xD6utnKcWL2N/6yhP/HkpKoyIuTxSz0F02SjTZ00gFS/gtOSpLXMSKK1kMBFiY087DouRsz4zhUw2SZG9mLIiG1fMnkpNTTVtUTvbNjZjtdmoqKjl5m//FJfThihK5EQZl9VFQYARRc1nzpjPro0rMSppmtp6EKP9FGHnlAkTuXLRQmLDWdoO9WCK9eF2+SigotTlYUxtPbUVlSgZI3argUQujLGgpysaIpMe4dHf3sW0cVOZO9HDV758LRaPhE5Us33tdl55ZRNGsxm9SiE40ktbSzuCINLV1YuoBq1GjRiL0jbQjVqrRSMIaAswvrIYScpitbpIxopQa83Y7W4S8Thau43JDQ62bdvBjl1beOm1FUTDYcxmI6lsilKXDdEoozWoaWzdSzavMHdyLVqVltIiO6V6FzbBRF2gjEQqSfNAAdHsYjSawaTX8+ObrmHrpo14nC7cLicR/TBmp50zTrqcgNdE3qBi/9aD3Hz+HJx6FXq9hulnXsyOpv20HOzljiVLuOm622mJwb7+CLOn1KKxjSMh6+kaEDF5xrPos1cxMhJka8deXli6mheWrEc1rNAX3M2vfvETpowvpaGmHJPVhkVjJjTQxxsrNzCmspKaCgNqtQJaPU6LDafXg83uRBL0uLUidrOZ06fOR0kpBEfCqNUgiCLPv7aJmXMXsmbrIMteXk91pRuTM4XemCQ6epAFCxeiWCuIREZRBIFvfu8H1NXNJJOOkcrm2NnYTHt3Jw6bCafTRDIRJxZPEElneWtfH1V+L7FUEq3OjEmlMJLIkE2E6evsIFtIEI6PMDwyikGrI5lMEE8mUItqtFodHpcbBYVSlxuf04JK1OOxO5FyMpHBEOm8QjLby9vvNPLwo0t47eU1DA0NEE+k8HuLPlAzOTFLz1Lv38ZtaqUDtAacc75BZPN9//JQG25fiOOlF6G3iZVfPz46KDX3x5lzwfcPl79pdIQ334fzlB9SNOdrBDc/8L7lQo5FP4PRQRAEBjbej15zFOt/OCxK7Xz6eZY+c8dRHed4Z3fv4TLJE0mcEAQBKibx8q//yKNX/v2Di6Iox92c3v1j1/fIlcc4kqNL3YW/PNYhnNAc6dbx/4y/zLHivXH9M3P+uEvmPj20n7h8EryKPql8+l3+l3w+z/RZFxGNRklmNVRXqkhkZWbNmk/fUIS0kgUVaHUiDpUblRRj2bK12IrKmDxpKqPSAcxGB/f87mnaDvXwpS9egavcjlgw4bUo6CU7A539ZNNZrE4PNXUzufSq6yj2+rjrnjvoWvk4V194A48/fQDFbyYaH6W+1M1Xbr8Tl6OUsmIfCHluvPHbbN+6hT8/eSeRWB8qtRqv1YZKlaG5u5vlO+5HrdVDQWDxky9jcDsosRqprpzL6yu2kk8LNNRW0NbdhdNVw5srVxId7WPatEmceuFpPHzjCxiLVHgrdBgcRq459UIUSw0jORWiRkaQk5gNZsLhGFedcQ2PvPw/CCoVm1K92AwGCjkZq2ijuGoce3fsYN7JZyLHOyhIHlp6RznQtpvLzj+FkdE0jz34LR55qZl77/lvfH4XhWSKUo8HyetkpL+ddCLGlNpK2iMxmjP9aKwqhgZ6KOQl8rk0spxnyUsP0VBaQk1VNeMnjsftcdPUuJ2Vry2npz8EMnzxurPZsGYPZrMLu81IR0cfnsopPPzECtLpNLfdehWvLFmH2ajmzLNm09E/SkbKUunOMWvuAhKOAo3dg1gtan75s+/jsOkQChJGkwWv20FhJIpZJ5K3qckXCnT2D1GCDltZKS+9vR6tfTzzx51NaHgl46ecjqBRIUqrSNntNFRVsOfAfsp8DiI6HdmURKVLoqe9C5/Lyatv72b5qy+RlyRc9eDasAJviZ6rLzyXH//4XkDg+qvPx1dcwRcuPglf6Vi6w+10t+7D60pjtEkEYzliwQQzZwcoxKMEIzHsFhcFSUaVz5LLZ0iG9nJgWIPRqKEsYGPztlamTKwnmSzn9DOq0OsNaNQ6Uskk+7oP0NXdz6KTFxDsGyIvjbJ/fxyfy47fV0JHKI9RyDMSG6W6tpaRQg/LVjdy3kmV6PVObvzunZw5dwFrV27h1FNmsnfPAaSME4vFw6BaRq0TKJ8wA3NNNan9e0nEw9z7wL2AxDWLTmVbcxuh0XYshQLbd+3n9JMm4LDbUeQS4vEozz79Mi8uXoLHL9G7TaDY70Ij5TFYDQwfCLJz21O8sryNy88fi8plZ+rYqcTiAtG+CPds/TNldhcWvRkVMnm5gEktkE/HsdsaECQ7iBF2hzoY4x+H0Whgw4aXGE1muPHmrxCOpBjbUE9JaSV9XX14qh3s62ykrmIcoc4O5GgQf+0YejracVvVrNm8Eq/JQUUgQHR0gCKnh2RqFNBSE6gg4HfR3DmIWa8hGA5S4rbTMxykoqQIq0mDPV8gIeZo7x5Ep1Vj0gn09Q3j9tlwOKwgqQh4/LR2d2HWG8nmJIqsZlQCJAsyw/1h1IJELDlESbEHU5mWior5JJJJ3nrzVfy+ADOn/ogPSq05ITOKkD7YxHVk3V0gFUhkjpDZq6P4H475caAoCo7z7mPOZw+X1vStv4/IxnsQBIHIOz8H+EvXsr9GlhUcs289LBKZ7IS3PHDURSKAwBefA2Bejfuoj3U8c+kv3jwhPZrCz98AQDz9txl8H1UkOtrCkvOMO/9PR8RPLPEQ6EzHOooTmuNN0DnSvDe76b3XPui5d5/5ONfok/49PumciKLEp3vu3wcFAa1Wjb+4hOKSYtQ6cFh12K02BAWy6Sw9A0ESmQh33/NnHnvqDTxuO/09BxnoH6KibBy+imIURWYwOER9/US2bDyI0a7C6XOh0umwFjspKrFSXWJFyseZ1FBHKpVh3twLOHXmZ/jtfb/hrIvPomukj/1dB2ntC3LvXXdSU+5jKDjI7+67jx/f/gWqx7p5ZuV6ZKMCphwWnUh7Z4iclMduNGPWGkmG0xhcRubPPYfzLv82B9t6qagcz/RJY5gwbgyD8SCRdILOzhZqx80hODTIg088jNGpRm9QceHCBVx22n+Q1Veg02hpqHazafVyHnvm97itZnw+C40tg5x7yoVoZQE5lcOoMqBWzFgdlZi0Roo8RbQ2N9G4r4NDTVtYcNoiukcEdjW1UFni5tGnXkHQaNApw5CNMBzpJF/Ikknn0Ysaasp8WItrmLPgHCb45/DlSy6jYVYJC85dyM/v+AEtLU34XUXkVBaC4SQ2m46B7kOo9QbOP/8KvnrTLZx25hls3ztIXhJRCyLZtITb7uCqa6/l8zfcys23/ZAptdV8/9bP85O7HmD3/gFeeH4lixc/R0tTCyuWLeGhF17nYFsb517yH5RWTiIcy5MtyGhFG537+rBqrby+tJHnnn0LtVqFrCgoUpq23iG6evsZGdhAYmA7HleejqGNdPevwVNejN/nY/Gbr7O/vZ2esEwhnyZQUkTZ5Co8Y1y0pwfpHUoyGo2SSiSwZ4to33uQrn1dNLe1YPeaKJ/g54Jzr+T27/8XCdFLSUkFoqiivaOdkiIXFR4vwZYQGknP6ytWEokG8ZUUYTTokQoyuXyGyGg/GQyIooxRSCHlRVLJOJ1dXRxq7cDoa0Cv1yGKCq1Dh0jEsnS0dyOqVQSjQ9SWlqOIKqxGB6Io0B8cIpSOYnMXYbTlKZgF9u5ZRS7az8WfvxkxL/HGls1YLXqCkQgaRUV3/w5279zO2adcQm35ZLSFGINSDMVmpkdbRk5I4B1TwkNL3uCG+eOwxGMY7V5ySPzkl0+iV+J885brsFg9uD0+ysqr2LxhF0aDli9ceRY6rY49B7uIpQu8vXwr5yyaxiNPvErjvn30m2z4nSYysgqDaGIoLqMylJFOjaAVCog6I3abmdWbNtBh6WaXUKBpxwGs7lIKhTw5MY/LYmLzth309h5izdp1GIw60hPqiXSEMZt0aNUe7E6ZbD7PisVPM5TZiaQOcdUV54AGtu3azWA4hU6ro6DoyKXzTKvz0d4bxO92IEl5SpxW2vpDOCxm8rJCa2iIAgplbj8IIvF0ikymQDIfI5fOMBpPotOqyUl59AY9RTYnFUU+1Co9kUQCdSaLLEmYHV5sZheNjR3ccN03KUgF/F43F132eVRijuFghA86MZ2YGUWF3AdeFkUBVGoCJ33jiLSOj7z5fRwzb2HOz99m0w9O/Zff91FwXvEoyqGdAOx94y4CLuPf3DOy5UFcs27Bcfp/EXnrRwA4Lvwf6N0PooqBDfej1x59gehdknvWg/rft+TsXdLNO0CjP9ZhfGgEQaB3/X2Uzr+V8NYH/yK+yLJyXJpBK4oCkX6GNz1wrEM5qiQzBVAUQu/ciVn3q2MdzgnP0cgqOpb8o2yg98umOlYZUcfDmh0PnMjrcLzs/U/5WyLbfoNB89tjHcYxR6/TsWbp85xy7pWoRRGdUUQjqA97FooiXq8bo8HIhnXreOq5V9Go1axZ9giFzY2o9Rp6w2nqfC5++av7ufKKi5k3ZyHZZC8d7Z34q0rQ2POYchr27DyEdoKK8upyXn7haS658joElZqrLrmdiRO8HNq9iniygCtQBYrCwsllnP2ZOYydOJngYJgyv4/WXDd6g0ImmiKfk2lO9CKqQK1SU4hmcdsrcI6v5rxzzsNssfPk4hc4dKiXpr1rufbun7BnVyOLl+/C66/i9DPPw6iKY7IHOLBtB/55fkb6ZV5b2cbJCyu44JR6tu5Yx5cfeBZ7kZXzTjud2//zVh7/w5N0tr9KMu6k2DadmrFuwmGZkqAM2TRyIcescWWs3rOVjpYg02ctYNa0yQjZi2na+SZvb2nm9FMXEI0W2J4oJhQZBUlNLhZl7ulnEB3uoK60mD2DBbaueoMpUycxdvJkAuMXsn9fM1f/7gv8/v47OGXRxfh8DoZGUsQSKsoDRazd/BrtB42YDUbCI0MMB4cwWQ0IjgBKei/dwTTRkW5OPnk23/vGNUz6xg1Egkl+99zPqC+1MG3eaVgsFlLSIDqdDo/fh4KamoCL6TNnU1ZWwYEdK4irPotaHiWd388fHnqUR377Ww4076bIbWM4PMzg0AAmgw63w0b3YC+pfBKNYQZFXgsdu15BIxvwuCtwWCwYtAKVbivBkSEqSsYghQYxqLUsXbsGnV3D5OpqLvnsQnp7hsjIEqJBy7hp8wjHOnjq6cd4+tk/Ma6hFJfbS31VgHjPRn7+yz9y5qK5mCUDqWCEvJTHUz4Wn8WM0WhARqCrp5eNG/fgceVIpXWsaG5DazRSEyihqS2It9SBUeVgIDTMYDhEZ1cv8fwoLqcJr8mGZfxk2va3UhfwkU0n2LWvC5/DSiaVxmZ3EZa6SYeSyLkYP3v4CYylJlQ6DUXYKCkqx2W1UecM0DPch8kskoxJHOhqRifnaGpr5pxZl7Hst3cyvWoCXUGFz1zwOd7Oi5RW+hnZ/jRes52oPcHWPWsZTLbiqyoiNmhhaHAAVOCzFbH45beor60jR45nVqzAKGnYvGMvn73iYta+uRqjTo9ckAlGE5QHypk4fQbDrftpas1gsljIxbIUVZQxYfZMeoJpvA4rMyafyshwmClTPKQyEpW+2YiqCBIpLNEMdruDkEOmdFY9O9V66sIj5LNGRmNRjFYt4c4gQY0Fkwg9Lf2YbFZGI0mKrDp0Kg3lVaXsae0nYLOCViImqolJeUrcRnKCAkoer99GPJFnJJ/AatQyHIqgUqz4i0pQClkhSd/iAAAgAElEQVQKBQmFAn2hIHqVikIBrGY1Gp2ZTCxFf88IyUQeUS4QDOaxmizsa1zLzddfS3/vAH98ehlfuOFmEAVUH2CNcoJmFL2/R9G79K+9BxSF5BFqIf3ko7fTvOSlvxgTf1woioJj3rcPi0QqNcHND/xdkQgOC2Stb98D0SF81z6FY8H3oHc/DRdcRHjzfR+rSPRu56nWN4+e/9EJQyF3OCvtBMSkO6wlOy89bJx8OJPoWEb0/gTjhwVk9QnkBfVRKF34HVCpUR2HYt2nHNsD/z9bMvZeQ+/jtWzuU04sThSx6ESJ81OOHAWpQF31HGREWptb0KChkM4TTaQBmdFUip7wALUNAVBApVKBXkNDQxmFRASTyUJUsZLNZ9m44SmGBtYyZXY9l3/uAmw+F77SchyCiYvOmovFYSAnxGlsXU86kyafzXLaOefj9AVobD6IVqUmUFTHDZddyO/++Ar9wQhKJoffX0JTey8lLgdajxGtTo2sKFgCRhyVOq447SQiwxIGVQaXuYDZJKIVc2h0ViprajjpM5fT3dFKMpnglvNm4amEy86bj8PuoLZiPFmtgpTyYLY5mDPvVHZsWUVPz25efmM1Vl0JNtmAw2hkYsMs1m3dRSolEo6MUjumHpulnFQ8hUaVIyPJdLbtoj8yyPTZl3L9V77B3t172P/OEnoiu1DbbGzdvoeBWJR0IUs6kaa6sh6HzUFJVQADSVwOFzv2H2Lk0C7cVh0OvRqVkiVfKHDNVZdQU1PF9HGTmFzpwO0pxuNxML6+kp27dmMrWHCZZJKxIJHEIAG/j3SqQLnHSDKXJVUQadzyEs8+9jNmzRzDI0uWsPiNlWTTKbbs60QuFOjr7uJQ9wjxWAybM0A6k2Dd9h3IgKDS4HK5aah3oje7KC0tZvVbb3PuxRcjKDKZjExfMEUik8dpNpFIZ0hKEg2lVcyfO4GpYxrYc6AfnSjicRdTZhMotgrYDBokazHfuv1Blr64jaHRKIKgYC220tTdy55DGdZs2sHTzy2lrizAnd+9ixs/fxdPPLectRs2k5FVjIRHUeQ84VACWZHZuHE7igg6tYGAy4PBoOb8CxayZtM77GpqRS1kmTa1hu7uJK+veBuD0YBBY8FsseN322g8cIiAwUAoO4oeM6HRIAKQVw53yEoWFEYyErJgYNyEySTzIqFwGJvVwki0B62goEFAykAyLqGJKxRLXopMVgxqFauWbkNnNOMochIoLcWg13HlomvQ6vWcPftyli1dTlqXRKXW841vfQ2bw0Iup6Y8147DaqO2vBStQ4vWIzAaTpKIxbAbMpSWerEYTLhMOoZHczyzdAWvvbEGo6ylICukCwWeefIZ9rf20djWSSiRJJ1JMRgKsW/XHvrjeQx6Ldlshnw+xXBMIR6OsHrZM0iZKGMmTKK2oZa9B7qp8s8kGg0T8AiY9QbKK+opFPKcnNCy7E/LmdgzhFZSY9WL2HQa5s+ZzAXnnEcqV2D5nq1kcxKRWIgGlw+dVo3P5aBzKIq3yEI0XyAayx6uOsnlicRSCFoNDouecDCGXoZoPEYsnkAQ1OhNeuwmPaJGjcVkQ5EEECCTTZGSUuRzCoVsDlkloNVrGVfmY+bUGUybOA6jUc8v7n6Qb/ziv3hl+xbsDhtul4vWlm6CwdD7/u08MTOK/gkTV4NWhWPWqZTOv/WI/PN77vjDB33Xgu8Q2fDf//L7/hGyrOCafxvksyCqPtB76F3xShQF3BYdlIwh27QZtAaGNj2AVv3x64Hued8CQaD29O+AIoMgHjbdFgRQacBgBYuT1fdcwcQy21Ft937MURTuu+PCYx3FR2bCpZfQuPiF4zaT6F3qF33nL879iUwBg1b1iRNTcgUZCjkGNt5/rEP5RHC0vIo+7pbhH8VT6K9j/TDPHUn+Ou73Ht4/Fa0+5WjySd9fn4ph/5dcrsDeln1MOWkGPreD3z94D4qg4o4JJ6ESVdT5PDz87GvMP3UCWq0GWZbZtHELs2dMp7l5G+dffAHdvRHqKzQMJSJobTY2vN3E+o1DFFXLTKqrYuuqJux2KxHRhjpboCoQ4O7/+T75aAGDkKWgt5DOwoJZM8nmJDZsb6VuUgCnQ8+YyfPYsH4reouLfRt78BZbSBsy6BU1OquGepUPk9NIhbGakaEQRpORt1aux6IY0Ov1kJNJixp+9cDTXHPZeYyoBcb4K7jziV9zxWlX8fob6xAzNpKpYWQpzva23Uwf7+Xuh15DZ7ShM+r46lcvI57QoTVtYskLz5JIxpg0bSEeTxwEifpKH43NCbLhEF6Pk8pSP5NPWsD2Xfu48PJreX7Fc3jGlqAkctSOmczrr2/g/EWnUlFaDCqJMeVFjJ2xgL7m3USTSXqDo6g1euZOH4tJZ2DZ0rUoQp6tq1+lpaUZn9dJQWWg5VAParWKpxYvw2OyoTL5qakso2n/Xj6/cCHLV62ltraO9es34y2pwObSgaqIIreK1kMt1JVPpr9/gEgkS0mZk8RoHG+tl5amFGarGZUK3LPHYbFamVtRwr0PPk4uGuTrF0yhyGvh7eVPMW7CNPp7+jBbzJx25ulUjJnO5nfW0r5/HbFUno59h9i2dhe/eehq0pk8808eQ0PtIs4592wGh8IoAux861luvuGLXPr5m1i6dCmCnMOZGsZg0COWutmybRdCVsMV132bb33vbrZuuoZSl4bq6lqaWtqoqx7HmrVv01BXz6FomLoGH8kRGSUTZ0JNJdFsht37dvPin7Kce+lpVFTUkkzn8as07N19gK995Su4PRZymSy7W1ppHhhk/py5tLY10zcwRKnDyy1X3spDz9+PxWBid0sTbqONCr8Xp9POLx79A3aNjfqqKiRRptptJWvMUWIvonN0ACGXIp4XSeYjeAylrHtnK96yBlbt2MzMKZPJ5IeQMgmG8jLnnvJ5kqkMrcPbmT/5QjZv2owqFWX6pPEc3N/En99Zx4QJAWK5HOOVGnr3D5EVCriMLiSiNO3ZSqnLRyidRK8Bt92GpMgUBIm4nEWHFtQSeklByRaIptLYzWayhQyFVIS8FEfSmBEUmZrycuKKE1Gj49zzziOXG6DYP5d8oYDJqMNk1BGOdrO3rYuezn60Bg0+n53eXg1OoxXyWUZ6Bljf1o9e5+X8iwJIgkBtVR3TG8axNrOXjq4W4lIGSaUhL0mUeEz0haMIBR2iKKM3aAgFo8ycVIXGoOFQzwglJhNZEcx5FUlBpryqArIqlKyIRW8gk4ghGPRodXr0OiPZVIa+1AB6vR61VsPBfXuR9VY8uSwN5TXk1RqMNi9Ggxazxkz1nDqC4Riq3DAo76+rfGKFIoBDD16Ic+bb+K//MwOPfe5fH7dyCnTsOuomvtf9eRev3PcIAFtevZM6v+V97303w+Ov44ks+SquKx9DbtuB9/KHiLz4laMW699DlhUo5Nj/5n8jCAJjz/juYbGo8P+/Wz4LmQRE+ll46Q//90FBOCwoqbX45p7Ciu8uxGvToVWLJ6yI9K658hWTAkd1jI+6PrL8t/vnvaz9zik4Fr+A53OPM/LM9R81zKOPLNG44vCe06lF4uk8eo0KtUpAFITjWuT6Z/GeediL7OPwGPt34UQum/lXTaeP57n/M3F90g77J/J8jue99O/KibyfjjgKBGpk9jQtR5HylJZ6KKQK6DRq8vk8WwfbGRoZZuaEq8nlcuj1er58089ZseJVqmqmkojF0Bs02CwTsIQPsHl3EJ3eBgIM7htEClm57cd38sqT91JW4UAnm0kX0uRkhcoKJ6GhCEKiQHXZGILhUXx+P9UVZXz29J+wfM16Nm98GUFTioBAcWmAyEg/plI94WQevWksE6bPwpzrwVvk4tFte/BW1GE2JEi2NzGqqyRQVk7kUIIbv/YT2jcsRmPTMlhs5tJpF9PTHaaiqpLG7V0UcnEsZit2S5IdLQXGTFtAR8s+ptZ6aD4UAyVKe0cjGpMZjZQjHOymaO4sMplRsoIWj89CDhPFniIERcuB9UuYt/Bi+gYG2fpmBk8kh2IwU1AEggMj/O6Pi7no3PmUeBzoDXZ69+1GFmW6+kIkMikqbRYkSUGnk+nq6UQqKASKSxgKJ6iqKMHjKyEh9VFRWklDbQXbtjfiVJURGU1QVFRMz0iaWTNnY9BJ9PV0o9dYKSkpJhJP4HZYcLgClFZUs6fxAEaDnVgii9vrJ57KU1Vdz9wZNYxpqKXIIrLhQIL9u1cxGNyB11rE5lW/x+Ydj1GvZ6i3m/DgDhyuIgqiHZfdwdx5c8nFeunsGSI82kk6B5IsYrOYkDMSZ511JiBQVe4nm8vzSmcPDpsJg17HxRdfQioZp3XPVjQmG1+99Xu8/tYqXn/xYV5b/jBaq8SjTzzOolPnsXPndjqb9lNZ4mH99mGUfI7K4ipq9SKbkl1E8xIZG6xftQ+T0UZ/sJ/16/fwwptrsGod6IU8JrsdSUrz1vZW+uIjCJKERdISj0ZQ1FrGeCvYM9zMdTO+RPSRJBpRQyaVwldZy4HOHhoP7mXWuAa6B9MMBYcZiYcwecaj0mpJpPPYHSYUswXJEsFYMFGeztFbMo6coqDR2lC5JdpaeoiufpazTr8OUaUnHh1k5sSTKPb7WXjKJB576w9kwhncRifOMheWgJslj73JorPHMqhVYdGaqS5zs2uPglMoRaOWEBQdA5lRcoJMicNFXKeQSY1gsJrQ6gRG+0fxTXcRa0wws7KUHR2D1JZ6SWXcjOYyKLIKp8VIIiajNxjZvvMNamoqUAQwaRUsyihWr591G1JYbVXoNQJmrUw+WUCQMlQV+7HkDCzb3Yu7tIHyQBl9g91QVExqQGJEzlFdZad9wIhRI9ARCjKxqhSnTk0iVcCkVlDUalq6+jBajIwks+iyEl19/fjGVROLpCnzumgPp9GjxuqwohYhkkxgMxmxmi2kC3nUogpBpUKtVSMX8phUZtoGh7A41XjKs6zds54vXHszKrWavr4euno68Hu97N3fSlPTQYQPKJY6MYUi5R+3gYfDh1/DhLmkGzeiKFf9y2JD5Pkv4Jh5yxHrqPZeCpL8FzPql5/6CafUe/7hM+83p5FnrudLz01l8d0P4zjrLiKvf+eIxvpBuBYcHqvYYQAgsuVvsx8URUFW/rdEbSiaYeLVv4FEGHJpBte8zqQ1r7//IILwl+wRVBrQm7HVj6Pp3gvQa1THTYZSQTo8v6MZy7/ybllREBH+YTnZld/9Ms/89x9xnPafAPQu/8FfytLe5Vh2QXs3q67UeXjPadQi9v/vjyXJymHzQRnE42RffGSiQ2BxHesoTgg+7KH1RMsqOlKZQMf6gP/Pxv/3YvywcX96cD76fNwd8z4s/w5i1r/DHD8shWwBOWMhNZSjuEiHNlBONJYiNBJBpdEgJQUa6iZSV19JLJkiEUuiEgXWrl3J7LmTeXPJUj579VX09AWp9peyQGNmeTpLODRAWUkxMSVIf9PbmFwWpFwOk91CMJIg1DGES6/F7J7BkBLmteef4KxTZnDWyVNZuz3Gqys3UuIxMupxohZzTGpoINQVRPZaSGDjnM8t4uDujfzh9/dz223fZahrD7lclu/d/gvu+P4NPP/aKgw2DYW0wMzZi8ili2iJR/nczf/J9r2txCSBzo4uUskBgqEQpT4veZWedMSJzWKiv2MverVI7eR5HNrxDgf6OvAH6ohHkphcYBDyrHhlMZd9/jrisSYm1S9CNUnF3q43EYNZFL1I6I3fEBtRg1bNQDKLwzWGVxc/w5e++XUCpRP44a1f4jf3/ZTNOzcjqXPEIjJD4TgVPgcup4VJp17Mr+/+MQtnTiaeSDIc6icYHWTpqhDlYxfQ1R9EpajZtn8FWq2enKgg63M47AZaW0ZRqzWsXvMaZ8yfyYRJtWSyElV1FZT7i4nGUix/fSUao418voAgKezcuxeNRo9Rb+DFwR6cm5qpqKxEVBREzMwYexIXX34ZiVgSvdmKTi2iLgQhF2BcnY23lr6AIdVE5fgFmGwFrCGBkYiFX/z6t2zYsJod25ejGDV8/3s/omFsBUpqkBdXvMnt11/GL675Aqd9+XoONq/izY3N2PU6oqO9PPDwD5k671SGYxEqHcVUnTyFPz/5DBs2tJDJpihxZlAEPR6Xk1RORCuKfPaLt3G13kBv5xBf/Pq1VATKGAgN4LbqKC12MNEzm4ceeYS8LDNz5hjau/MMdgwzf9ZERhIRduxqZta4Cgo5kZjaTHm6mhUrlnHz566jZyCISlIjyAK1AQt5nZ8qbynazU20tXUSGc3RnR5lUqqImDZIIWvBafYgjEoEAmXsHh6iarwOOVWGWq0inYlSZq3AaAa9wUg8keLll1/nmv+4hkI2y2BsD2rRgDdgwqHzYNHXcqgzxQVX3MTGNSuoqHGyr6mTR5/oYcbEOqKJMAajFTGdwW2zEc9kMVmc7N29g3FjqknHRzhzxqk8sW8JXW90UF9fx2AshwZoHwwSTecpslgYO24MZrNIXbWebQfbmDduKmQN5PMF9rd1MhAMkd+7nVNPmcmWNdspSDFysgOhYELKZ1CcReANUDtBhdlsRhFFksM5DGUWzr7qTH5wx120dbQzpqwanTbPeIuVghvyooI+aUFdEBAEhTljdLRFomTzBZoPDaDTa2jtHiCRUZFVKRTbizAIGnSiQEFW8NrdxApxCrKA1WAASSCtklDIIyUlmtoHKCquIqeMUldXSW11KQcOtDESGmbzxnV85jOnkMgoqCMxzHoQPsDO+sQUinLpf7qLVP+jV+GYuQnnefcRWfqNf3no3ct/xeSzvkO+IKM5giVdjksfhs49IKoY2XTfEcl+eOjySVw+6Udc8vn/wjHr639XsDkq5NKg0X3gLYIgoBL4S2lQwGX8u2KWoihIskI2L1OQFabdvoyRzav/VyyUCod/cmmi29ZQMn/Newc6LCQpMvjraXrselxmLSpR4N0lPprCwbtCmPo4zGaRZIX24SS1PvM/vPfBi8bzzF0ypKIgqig96VuENt33f0q7FOXYNXdzXfDg/wqH7+FwjMJfsrvg+DXk/iDeFcPWPfHNYxzJJ48jLZYcTfHlaBzE/zrej+twf7REnn+mo9uRHO9T3p+PuwTzUz7l/dDptEiKit5QhPKKSkS9jM+lpa2rH5+viIqqKfh8GXoG2ylylXHD176OyRzBV6LHbM6iroKhngOotX52tSTRiYMYNTqGsxraeuIo2SCvq5uobHCiHk2yf0+I2tmVjCYNOI12gtEEeo2GRedcg5Tbx6p1r9Hep9DfO4jbOoExFV4OtvXzxsq3uPrsS1FZ3RiVDD/63p1c9eVrueV7t/Pru3/NmfPnoS3K85Vbvs+GdaspKS0jGhkmkkjyzro3mDVnNldf/iW27zmIze5k8XOL0Rv0yFISt0nP1BkTefyJl5FFNcOFCMlIH5OmzeJgUxsqgxNXSYIav4mD8SG8Tgst3cNoRXBa1EjSWBoPrqGjJUI2r6FL207X3i50Wh2zJ4wnno8xo3IMb25/EUlKs3dLI2tXbgdRxfd+8kvOPHMaqawKWVBhN5oRzToqx85k+tRJXHr59QR7tqAzmSk2eJG37kMRZFoOtaHX2whHQzz/1FuU+vzU+ays3dtKOpnngQsu4pFQF2a3nmwuxHBvK0VWK5s3r6FL5WFXXw6HQUMhGUMQs4iCDq/bQZnPz0gyi8lsp6Ozg0BpGalslnhkBL3Rxusr1pBIJDGbrej0akRBxO10MGH6JES7E5PThJwv4DJ4oaaImqkaVi1/Ebu7iEp3PZlUFP+8CfR2deO2Orn8vPNo6xig02ijtWsHQ/E0HpsZraIQj6pp293J7FO0+MdbMUoaDCknFbUqpk6eTr5QIDm8mUhMIVuQ2b9/NxqNiheWLsPjsjGwdysNVVUYXS5MJgsaIYlRZ2L1m+8QT0S55cYryeVl3DYzDpcbRJm60gBWo5FXNu6lr3eAOVPGkY6E6EjESdhszJ83jYM9A2SSKe55/Bkuvexspsw9nbvvehSVCPOvPR9PNo5cKODHTNZXTlVpgDXrB1i1ehXxTJ4vzr4KvdZMV1uOXauaOXvhAnryYdp7GqkoHseXvvIlBGQEnYHpdZ+homQfOxp34rV4UTRGUBQ2rH6dCTPm887rf0ZvFxBlPbGRNDazBiUdpy+RxGPyUllbRkO9n01tW2gbGGThtLFs27aH3/3iG9zz+IukU2laekaYUellIAVKPoVaDUo2yoPPruCs+dMoq6xCUnKU1cxCEGD5kmcxmO30dLbgclcg6/QUMhkGoy2MHzMFvc6DksuyaesuNHoHkiQxPNBNy4HN1DVU8OgjT9N6qIX777qT79xxO9Ma6ti+q5v43gPcdMU8yuptDCZzrN7VhFWyUO6zUVFdhtlipKc/hMaox6zIZDKQV7L0dQxSU1VNcZELlUZLbjSH1+UgHI9hMGjpCwXRasCUkVm7+R1mz5rDodYMocgwXncJyeFupLSArGixuivo6+4jl0rQ092J+gM8jE9MoUiWDpco/ZP0rruX0vm3IsnKv+xZUu42giBQNPfrRLY+iCQr/1KWwvb2CIuu+DEoCp3v3IvNqPmX4nsvpzV4Gdr0AN45X8Mx8xaGN95/RAWu93LTC40AjKy/+4i8TxAE1CrhL/5MbfdfwBWPl7Lij88TWX/X39z/XmHpy8/vYcXjSw6LV31NjF1024cN4P9mLpU0sO/3V+G36/+prKUD/XGA406UOOu3G9n85POHu9KpNETe+fkH3i8AKAq3/OTL/PTMeiRZwT3nVsKb70MQhGMvvAy00L/hg4XQ936rY5kB9VGY8qMVAIwrtR7jSD65HOmD7ZF839HO1DgW/kpHax7w4TKujkS20nvH/zAczxkgH2bfvbuH3ttN73gTi463eI4G/w5z/DAIokCgxEBF1Vm4PS7eWvMnDIqOufNKUQSR2MAu3lnXyNI3HiMaTeE2mxmJprAXOWk60MtZp8+j5VAzp8yvRZIkwmE/ZdUSsXQaFxo8xQF6ksPUlVQwYgqilpIsW7yeQHU52ZIUEys9dMft9Pb28/qybSyYO52hUAyNzkpb9wCkUqjsZSyYP4k3N6zjlptvpKetiTXrV7KvuRuBHLl0iiknzeed32xi68jzSAWJSDjI+JoqZpWV0KEpYe2mTcyfORMy7fz6rt9QXe4gps1RpHZhcHt4/s/PYLSV4HK6kZQ87W2jdLXvQ50JEtSNMMk9Bo1axKgzo1FbcZgzGJzVvL1pH8tfXsKU6VOIx0exmMzMn3gO27Pr6Og+REhKYXK5GEha0KDGHyhm2sknc9LseTz06J9Z9syTZLLlaIUYI9EQFSVuDCYdrV3b+N1jUaZPnstLb67i0M7XqZ9dxKUXX07n4DByOo/fp0Wn1fH26o0IogoQ0KhAUBQe+eMdTAoEKNJk0ZrUpHQ5tiX3s/q1A6A0IWpEJo2tw+Ny4q+eSiqZpKi4mEI+R/u6pfh9fubMP4me5k0c7G5jsGeU6y89m4ShiovOP52m7Rs4MNiM3mjklLkn09LeyZzp49h/sJeN+zrIZ0xoVAIDfTGkgsTGLctBUBEO9mPdfYi5809iJC+Sl3WoTU4mTjUgY6K0pBSjehCbyYzLO8LVk8cRCkXw5CswqjQY1HomNhjY1PwoxYYSnHoDk6dNo3coQrFJZtna9VQWiQiqUmbWVZPV6EkW0mQVFalkkkQmj29cEZdPv5ADrV0IeZmQQ0eR28tQZAQpV2DztgOkMqOMjAzh1Y1FV+bjnf1ttPYNkNKKjCsp5tU3N+I3+9m8eifXf+4H3PytH1Nc5GXlpt/j9tSwcWMzN371RoaCCfr6+knLGhSXmtpx1fzhwT9htenxl02jeuxc9nRESWfytOx6hZu+WsWkMVU89sef468cT339bPZ2hhg3roFK1yx6BrbidrtxFV+MTq0hNf+zlLn6WPzCOgbCWoyCjoisY8b4ckbzeWZOCrBhbQu/+eF3ue3XTxMaTHOoc4Dh4VEmVVewurGZqjkltA8nGOgNUVdWiUprw1N9Mn969hb8fjerXnqYRCYFKh0te7czc2YlM731vHWoDElSk8kMUl3rI68txSWZ0Ehhdh1oQu30kYyNEAQ0qgLzZk7jleeWE4znUFCxbutBRBUEg0H8tdOZ5q+kcVRi9ZN/QkTBZDCQ0I0STliI5iXcFhsGlR1jXgWGNIKSZev6g/+PvfOOsqss9/9nn97rnHNm5kzvk8mUNNJDCELooUhTEBBRrp2mgnq9+gPLvSgg5YoIKE0Q6RBCSAjpmbRJmZlM7/3MnN7L3r8/YrwUEUiBRPmslZWsZO/3ffbe796z3m+e5/sgNyjwegOUV7lQyQ0U5+ez8e29VJTnozRCts1EJg29bZ04LAbGJicZGh0huSbB16+vwa9SMrS7i+qKSvQKJYPRGHu6WonKJaLx+Ad+O09MoUiSQP7RPToOlchknXwrvo2/POLpt7xwBwvOv41EKoP6ML1CMqJE1tLbIBYCuQLv1ruO2aZVpZAx1Xgv9rnfwjn/24xuvueYdUD7868eBK3xmIoGbzz6wsEson/Ae4Wlp6+eDVfPft9xkiSRTIukMhLX/rmJ1Y+/+u6UmNTfXOgT0YPCpCQdnLO3ienLm9476UFfpYXL2H3HGQc9lTgoDi275jdH89KPGtsee4bRTb9Bo5TjDSe54KFGXrhu7gcef+i2fHNBEfC3LB1JxBNM4DRrPlWRaHuPFzhoYP9RkckOZhgdyjI6Wu/esRSfBt58DWTyE0rcOpE4VsbWR4NPKtvnky6bO144muLOv1LW0jvX3ZGsi+NFLDre1t2x4N/hGg8HuQK2bxrhnHOq2bt/D54hJWqNikAogiPLRk9fD2pNCq3MSK7KzVjQy+w6N17fBEq9hnQyRWGuk56OnWis1RTm59PeMciKzxWi0+oYH1VPZg4AACAASURBVB9G5hPpHG2n0FFEWgHlRYUsmF9L+2Ank5N+BE0lMrkMo6sAg91MJBph0ZLFWO1Rtmz34Bnuon3/FmwuEy+veo3aogK2vPAUefPOQCYTKK5s4NnnnsPuMhNKRlFmBEx6PS6rCalyLgdef53cXDedHc288uJrJJMRXDla8i0uRv0BVJEoOfllCGoHarUStZBhVG3kzGXl2K0ONjf20js8isaloWu4kzmaOrY3HeCk+W5WrX6McCRAc1OUosJ8imuq8EdSXHz5Zbz612epqapCprIyEoqiUWtx57jYuP9PzKyZwY3XX8u3r7iIRx5/gnhchi8awRdKU5JrZ/e2XdQtKqS4oJjbf3Ar117Zxy1X/4i2jl6UchPWrCxamzazcesIv/jl7eTkOZhe4aZ01tmcumgBnngcWVKgs2cUUSZSWJoLGh0VtQ2kUhkmRvq4+b9+wwMP3MgF559HNBzEYM3i/t8+gE6pIBKO4S4yYq0rpm7x6ezdtYeHn3+Tjl3bmHHyGVi0EkNjEyiVWsyCBUmWprV1I7FYGKWowh/3QkbHjDnLeeLxe8h2VxLwRZGkDFPeCeaeNIOAP4hGJWfbrma0Oh3jk35i0RhIIoGoH6Ug40DPABaLkfkLPodZpyIQimI0qVmRVUUq4+etnrdwKxYiCnIG+jqJxBJkO930xMfxy0XMbg358jIi4x0UFS5FaVRQJsuiuasTh8XCI4+/QmV+IZKwnzlLZ9J8oAdfyEtUFkZISQREAZlcQyaWABK07W0nFo2SZcvCn8ig0cu4+aYfM/+UxQwOD5ItTiMRS1BbXEAklGbl839lyjOI0Wzjkkuu4cmH/4jVbqYyvwqru5Zl9XI2djazY307BTnFgEjvQDetgTHSUQvlosgps89k07ZuVm77C8uW1SLJk+x4489UL7kMo3GQv67extJzZtLWOITNYWGgrZMQBeza2UjD9ALWN+5g/mnT+MUPvs/I7jU01JUw5Q8yMCWR57JjltSkE1F0WQpUShUFBYVcctk59A1P8PC99+MypzFbc+nqG+aPjz+GQiVjokGNLcuAoJDjyLPj9QeREmk0gpfiPCddk3bCES+xlAaHI4tMLEY4BA5XFbOWuNFo1Izu3cPk0BRSTEllrRmFQo5SpuaMC68lHAmybd0bpOVRYgo5s8qcrGoZxCK3EExpCIxPYdQoyTfpyc7NYjQh0nYghNkWxel0EkpOsmN/gJn1Jai1OoSklomYQBw9oj9MdVUFVquFtpY2ekb9hCN+ShyF6A16EsEAerMdt9VKYCr2gd/OE1MoAtBbP9bhQ5vuJm/Rd4/KRq7abQK5guxFN37scq5UWsS5+OaDLdMVKrzb7/1ENn4ymYBvx32UfusFchZ+BwQB3/Z7j+ocP1/bAcDU2z8/quO+j2QMDLYjGkIQBNRKOWolPHPNHLhmzsc6XxQPpoCGYil+tb6HR+5+hrENq8ld+A5fJUE4KDB9QEnUp0U4ngZL9t8NkW0GFW//6TliV83+cLHlHeVbyORUfuF+fK/ddMxi/Sjv6/LLfnIwM+pjcizeu2OVtRSMpUCSGNt8fAqPn/HBHMkm+dPoSPZJdUM7HoSDI+FIn+l7/3y8cug6P45YdLwIQ/+I4zWuo8m/wzV+XELBGAtOW0w0Fic/r4CSWoFwKIFMoUBMZ+jp94EAqXgCvXKKqlw74YicZExBIu4nHJ5ksMNL9bRSdEqRUDROfYUKXwTWbdnGQM8AKxYtpbC2hlFvH8oKM7GIn4ceepav/cd59PcGSEb2MDWV4PPn1TDRF+WCzMlIdhsvrdyLQikjk0rhzDJS7M5FkU7jjwbpGfRisO1nJG3gl//9S67+0oXUV83EaQ4xf9l0omk7BquVluYDxIKTTKkmmXHaRcycN5twIEjrviayHTbcWTYC/Ql0WTq06SjRtAiSxEkN5bT3jjO1o4tkGgrctZg0ZdQ1lLJmw1riySRNO94mN8+CxukkNyeHjG+cyiIzt/3kf5gz+4cU1C6kbnYDU74Awbb1zJ45g8HBASqza3h21T24tQVEU1ZSaHBlQW3ZMmbNnY4gyIg9YWXzW0/zo5u/zlQmxMln5/DcS3+kpHghDqsap9NMumI6X15yDb0jUUbGR0mnMsTCErtWv8LFZ3+RHRs28tzQSmx2PcvmzODZ3XvQaE3IFSkcrlzSmQQui4XHnvwtA74OJkMZagrKGNgzwpg/wZyTZuCPZHCYrZx2+ukYYmF2bVvDr2/9Mt/779/z6wceRSYp0SR8bN/XhNGuJdAXxppjJBXIY82qV+ke8HHn/zzKXb++GYUYwWmT0dkxxl+eeBhHjp0prxxZJohGpSMvK5+SBdW8sfpVChxuQuEMkZiaOTMKGOlqZ+aCeQyNeuke7CeRySAoXSyruYKJCQ9Omx7t9DkI04p58PHnmFNdTFWDiQ39/fR1bSQejXHD9f9BKp0hrcigRMaqletYOruMPQf6mAqEmDarHLvNRDQWpWfHBEaLDpPewKjXB5kMRpUOQZIwoqQznsCe5aSw3MyadQeY8tbS1dZGPBJmbLSXZQsXMDoywuhYLwV5hZBJMaN8BvLLkrTubOY737+Ra775I77+5Z+xavNWFBo9YkZCoVDQ1dtHtbuMWCKJXKFgyiuS4wiQ6yjHH4kRDSfxCRJrn3+QuYsrmVtby0CfB6PBSufAEHFlnEyqD71F4rE/P0cyGScuydiw52XkiTTFLjePPvkqSoORwkoXU14dTXs3U5pfQMP0ImzOPCa8PrbtWklRqYLhwQmUzmn0DzQBEhlRJKnqRjLkEk4EcFpM5Nhs+GMJwiNptndPopIJLF84h5RoYmy0B59MxGS2409lkCdVDHomSaXGqFowh/79vcyaPYdUOoNSqeJAZw8mUxannXspYiaNWqvl0ddeJRIapazYidWchVGtpCDPxfhEnFg8g1NtIJb2Mq24lqatHbjycikpzqd/cIhIbARNzERRTi5CMsZYKELAP04skyS7zIIrS0cmHiep0BCMJdCrRIqL7Gj0CZSKD96nfPJ9048Wat3HOlyvVoAgYDv/6PwAffB3N4GYYSKY+EjHZ0QJ6+k/xzn/25BO0r721/i2/uYTzw7ovvcC9A2LQJKwzvnmu3xbjpT/ufVe+CS6S2VSmMuqju0cH4JMJqBVyXGaNfz6vGn43vopvsZ78O24D9+O+/Buv5epbb89ePBxlgHy5z2D7/u7t5+8jdyLPlw4VL2zbFGQfWBm1yeKJJF/yulHeciDJYyHfIEOdwxR4u+ZS+mMeNjjVVz/DMBhZzB+xkfjvWVLR2u8j8un3bb+vaVDR5MTQRw5lhz6GfHOX8cj/+g5Ha+xfhT+3dfdvzs6vZlvf+0qgqEQFpMFhUxApkojihkySOQ4dEjxDC6rharSIsKJOF39XcTicVRyJUlPhvPPP4uIXGDzpvUHE86xs21fK0lJzk+/+jUUYoJ77v4j/3vPX1BIcnxCgoK8LHp7g3QPjDE8HqGmqJw9u/y89tZWfh9Yw/otu7GbDUiRKGWVDfinwvg8ATBa0Asa5IYMN/3mP9FoRe6797fUz1Fz6sJZnHrKJcjNldhyskkGRkhFfRTmZGG3Omnv2sns2bPRmYykkdHTN0ogGkOyJYkJYSb8YUZHR+kb97B1VxNjIwHS8RRz557M2OQgq1a/wdj4JGazlZLSSmzWLFJxCZU2zq6WRibCYW697T8R0gmicRPFRToa97TgsNvo7elBnhH50jmfJzQRQCeq6BvZx0nT65k9rYKzz17Bpr0tKNVahkf9ZDmdVEybz8zZs/nFT24mERSJxBTs3tdKWm2hoqIE39gI191wPQvnzeCS88+ioa6BOXU1mNwFpDI6ymfORVDIiCbSPP/a2zRk2bDbbaQTYcLhAE8/fgcySeD1l1axb0Mno7v62PHWRtKZOHn5xWjUKsYjITyjO9i16WVMObmIpEgm4lSV2DDqTJhMRn7/6KN09gySDAYw2jRoBBk9PUPU1J5EriObO27/EcmoEl8wiWcqicKoY9e+FiLhEMl4CL0mjlGtYMG8pYwNTLJs0dk4tFYMepHe3h52Nb5OS8tOnnj0IVa98hRvvrQST+9+DIkxRrsPoFCrEVQmSkpzaV27F43exIHBKbozcUqqC/n5Jeez8HNz6evrIpJII2hU7N/XhpSR2NPai1pnw2iyM+kLkEkl8QUDaAxK3IVuJAnMOjV6rYq0lKG4qJhAJIyYTmIyaOjvHcNl01BRms9ll154sCuYyUZBWREWqw1tgQatTo4zp5BoJMRJc5ewaE4Jjzz4Z1547G7Gp3zozAbi6RRRggDYLHpMJiPJdIpMOo3ZbKBpTxe79/fg9QVRqiVsah1GvZWJSJRgOokaAyiUCIIKm9qBy5WHyazHkq3HUWVnf2sLU+0hrHYH3YMxkqgoKnURDwsMD3ZgK9WjUktEI1F6Ott44Nd3UGjKJhRIEvKoiMWS7NjyBnKlHEEmsG/rEEpJjZARiUSjaOUqVJE4Gp2WrpERJJmaXc1t7N63ke7hSZIpiEf8RL1jDA50k5iaZNZJ08nVOLjxlh+i1+uQBIEJX4A8l53y0kJ0Wg1ypRLvVIBp9fNZcvoXySk/jZHhcbwxkf5AgoJyO1aXnZrKaeQVl9PTMYrZaGLzlib6utoZGR5ldCTElGeItpbtDE2MIZcryHKWU1VWRjSUpKN7DK1OR3ZBDpm0RDzl5YyF01ALGkTxX1AospeVfuxzJrf9FkbaSWc+Wte0f8YlDfkgCFR+7sM9b6wXP0TW3G+Bf5T+DXfh23EfTtM/N3s+lgw9dBmTjQfNf20nfQvrGb864jElSQJJou3N/zkKEX74PM9979RjOs+RIrxTMMsq/HSDeQ9fmVsEQQ/Wk3/4d7PtMpcBfCMfeM6h45Tyd3wyZHLMJR//PfyoHBRY/vkxg1NREAT23rH8qM158HeIpzLEU5nDFncE4f8M04OxNI6zfkXqML89idZtx53g+K/KsdgMf9RN6nsFok9zY/7O+T/bZP/7cSTP/pNet+98b/4ZJ4LQdSTv2mfv6QejUKTZunUbdqsFSRKpKDyVYDhGKi3S2dVLNKwmo1TQNTzKmu272dXeTUZMI1MpmDnvdH5695M8/cJ6bLZqZs1bRr5Df7C9tbwMMWQhr6Iei83ENecvJJXK0LG1CdEbpHtwmF079+NylFKfk49oS1E7byFWqxONVoFaFmBiYpSy2umodSZm1MwgEUng1ut48rUX6Wjpo6G8hq1vPIpLGSA/52IS2iyQKcjWpZjyN1NYUsTuXY1s2NzIufNmsH3bXowGDQIC8xctRKbMYuLAGIl0EjEpYbKrSSUTKJMJTFoDNqeL806ZSb5RzswlZ1NdW0+OTYNCpcNm1GEyqlHItMT8CnQKC0vnzaCgLouSHAuPPfxraspmMu6J097bw6KlX8CizGVgxIteqycWiVJSUM3u5iaCsSF+fuf97GpcC6KagbF+ZCRZdspirHYjdbPnkp1VTkFBFacsnYXdYmN0KsyFV13Nnx9+lqZdG3nsoQfY1riSorxsjEY7od7N3Pfw7Riy1BTk5zC9phDPkIhKq2N80sPkxARyBN7e0ozG4OArX/shp517FfPqF5GfX0EoEiIRnKTU6SY3JweTU8ezr75MNBwhGElhdzlQatQEAmFuuOFbFOaX4o1FGBkNMDbuITw1SlfHfkRJYsrvJ5VKoNPqcbhyyTJYuOSSS9m+dQvj42Psah0nIpWybmcnsbiXV1ZtYl3zMOu39rN1/ZskgynqZ9XiLHCSP+0Uzr78SziqF7CzZycVFRWI6TQVxbm4ZGbu/PxZzK6ZSdX0eej0Wjau2smqzl7SnjhqvYBNqyQRj6FRyJiMptCoTcgVMGNBJbNyc/GFgsSiCYRMkpwcK/0jg2zcuBeNpMJiMyFXQiIdRa0QiMuNKOVy1DI1rz39CL/679s4fWkZy5ctIh4YRiZX8t2rb6eyrgZXkYl0IkYymaY36Edr8/I/D/6SZ199nGAijk6mZNnicw96m6Yk0rE0u9bsZnzcQzweJ8dpwGE1oVJrGR33kjIkyXWbyc61oTQqMFmctLXtR6/XUF6QRyqaorKmGpnDTtWMGrJiKiqrc9i2zY9BraG0sIBMXINWq8JQYESj11NdUUQmGUed8RH2++kdDePIm4UhN48nH38KhTqB1q5EqZGRU66jfXcXZe5s8uwOMhmJvoEgk54hkvEQfUOD9I376Byawp2XhVyTZnCqjwmvh3jUx6hnkIWzZnHm2WdRXZrPyScVk2vJcNbiOgpz7SBJOJwOSoqLqautorahFrlciVKlAmRYjXKKshR0joyhVGeR1Lq44JLLueLq65heWk3F/AoGkyH8kQyDvYNE0yKTyRRVRdmoZRnchSZSSS1SyIRK0NLYuIuC3ApUKgUKjYFMKs3ihlp02g/WJE7Y0rM1PzrtY59zyMjasehmfFuPvITjF3ffwK3f+Q3BWAqT9v0m1KIoYZ/3bZAkzHOW0vfA5494zqOFXCbga7wH67zvwtQg1nnfxbft7sMer/y7L4Eg4DJrjmKU7+eQcPBROnUdL6y99+pPO4R3IQgCnat/Qfny28ia9+3/M4aXxIPrQa0/WMolk4MgY/kXTueNp1YDvNsIXaVFrTl2gudBo/h/Lo7UXfRz0BiOWmbeoXFESWLMH8eiU6JWyhFFCQk+tnH9oWN7JiIQmny30PYROSReKSs/XnnkZxwZn7RX0aeZQfTPOBalaMfbNR4PHM/35L3r93gUJI7n+/cZnz4qhRqXw45CoUCSMrQPr8dlswASjiw7pXVzWD6tklAsxksr7ybtS6PNmNBr5OzavYNnXlyJ1mplfKiJHIuL5uExXl/bwozZ86mcbuJnT93J9QtP40BHO0qFlmA4jSjIcTsc2OxGNu9ayfJTFuLS2Vly0lJ0Gjl/efxPREJ+ZjdUodco6B/ow5XtxqCWEKU4F568kKmoiKBUkZSSaPVFZLvzcNpsuJ0q9rTEaaiZw5+eXMnpF17Jtk2beOb11aSiSTo6+qmtnY5cLtDS3EM86UCjDqCUBEJTKdRqNbFkBkGpoKYgj/yCfHQON4PrtiDovchMFjqat6BRK6gqm4aEj0RcwmE28ocX3iQcSGLSa/j6eZfx05/9gCu/eC2eCKRTPjT2fCKxKJKY4uSZi2kfStA30ciCmRfy9vq93PaDn9LT382Wxn00blqHTC5wwUWXozXnYbVmiCbB403gzoqy9snHMFjMjE1F0Sol2sZ86FVqNucX0Dc4QcrbjyqgwqGzYTZqSUVF3BaRlzeuRK2QYzDpmQiYmRgP4cpxcvKiuRTkZfNfP7oBt1lN71QSRBlmvYFoOI7f50evjhONytnf46G9tZ2H7/ohixbM5ZV9U0RjMSpL1Bjzs+hrnUAhiJS5LMhEieL8HEiFSUylMet1xKMJdqx/A4Vcy8LFi0gFYpSXV1BXVcbrz9+FO6eYaCSCWlGAebmN7BwLsUSY+rrZlFbMIS2m8Adi+LpW09e2j5QpH0km44VtG1EqNfh8E3j8PqZXr2D6rCxGIxE8o41YDVo6Ym3UzmygyJ1D1+AE2Vk2srJMxJHTMRqGlEginmHKF2LY48Os1hJNJBC0cuJSGp0vjEFpYCLsIRncg1qlQ5KnyaQl3NY85EYNA52djI6lsfdt5pyzT6O8bD6CcND/M53OcM6ZV6LVCoxPBAmFwkyMj6Gihb172sjNK0KukNi1fTcug4t0KkY6o8PizGK0dwy9SoHcZCIjpRkOh+jdM4nTbiMeH8NiNJJOZcgoogwPxohZBbQaPRa5Bl8gQKYgiyWnl2LRzWTEGyG/IItYRMSl0zIu0yJJch576U1OaiinqnYai2dWMBoIY6it4/V1z6ExGPAOBlHq5QQDCSpn5vLGmibEjMjiuZX0D/TgsNuxWSx4fH4i8Rh2u52Nm7djNplIpmIkpQxenw+FSs7gRJicPDdymcDupib++zf384UvXsHFZy1EpdLz9q5OJn1RkskYGq2e0tIiIqEgXSKUFecRTKZJahOs7XqbU4wpKoUiYiJE5SJD48PYBQ21jlwEQUk6kSAvz4kSBd/+xpe56T9/hUzKUFdZh0Fr5dTlF5FIZzDr1bgL61i7b4jB/l0Mj3s/8Nt5wgpFeTbtYZ13NL2Krl9Qwq0qLYVLbniX11A0kca95GBpGmrdP+zOdbzg23Y36YyIY963sc75Jp5tv/27EfTHYWrLGn7wq+8cgwjfzVjgoDO77hiZcR9NDmWi1BdaPuVI3k+WUY1vy6//nrUTS2XwBBNEEhl+8VYn6zd1Ee5ug3SMN55cBWEvCAJK+TveGZUWm11/zGIUJVDIP+Qdjfjpffvo+/YEYmkWfv9FBv7whXeJQwezEaW/Zwt91G/Isst/hqF27mGVZdbdtgqAice/9LHP/YzD41i0t/8g4elYdzM7Grwzu+RoeC59Uhyv9/NE4Wh1kDuWfBwR9njnaMT52Zr/x0TjCYwmEzq9nta2VlxmB2FfCFGU2LlrNXJtmjKpEK1ajSJdQY0zwaDHR362mxWXfhlJqWPRkjMIR8NsXv0kfp8XnUHPgeZmLrtsHhPeUTyTY6zd1Y9Jp2Qy4sOi1ZNb7CAmy5Cjc/PkM+u55XtXsnLTM2x/ewC7o5hUKkR7Zye+KEQiaTKoaNm7j1NmTmdPdx/TSqbjyq0kGAzjznMxf1Yx+zum2N3cw4ZNjWS2h5g3/yy0Gju2k8IM+Aaol5kY6emhsHAxb7yxDrVai8mkoXVXN3OW1CALC/gVfjQGFadOqyHHaae5a4Az687j3OUp7v3j83RL/WitCsqKK7AqwZFdyPjwKAPjg5TrzIwJcSYCEYLxLmz5Zl7d/DxD+0a4/Y47adzbQVop59STL2eov49ZxQ4ksmlu3cM3rruUddt24HLmIUuLKFRqTCYXzz7xGDf/8CfMnFXPtqYOSnMNPPvU42g0Ej4xQmmek0HRh79dRJ9rYPai0yn2hdm2+kWqSmQMTQ6jlqUYnUgzPDaMTiMjkxFRGzS0tm9Eb9Og00usXb8NZ5aa6voFpOMpbMkU/kiC/V2jDHa2MBkOEQvBb373MCUlegYG/BhUJrrHJCbGBzmwdxd7d6q58pozKCkvZizQRNvgGJlkNwuXzkKtzEemmaS2wMVeYkRTOuximvH2/cRiEYrzLQxmRnll/2ZmWafIqyzGKWnJLZhNJB7kTw8+TCD2HAgKbrztDmbWVPDsyu2ce/7lyDMZMtEYi2dXsGnbLq68bBk9UxKXnHcGoyMTrFq9hmAf7D7Qg1qpZM3GZsoKbCxfMIfBMQ879+2jtrIYpSsHf0gknI5gteVhkKvpGBvEZDCgU6sIh2L4lSHSejUL6htYu30nCSFFPAqxWIiiAjdvrmwlnU6zuN5Kz9AIq/76ANUL5+INhrDJNKj1Brq7RExGM5IkJ9tdSHffAENDI4iSgCiKbHj7LTQpGZJOwunIRpBDUbaTeDjIWGCCHeubSaYSDPR5uOIr3+TV51/ijNOrGFaMI5dS5BrsOAtsbGltwVmUw7TyUsIOAUEe57d33M/nls7l5pvu5owVi7jmy9fTsnOQ+un5vPx2C9d990dkUikSqQRPrX4MO0acJXP5yopL+f3Lj+CospIMxSgqLUbMCJQWOoiHk5hjKay2HMbGh6ipqmJodIxoLEEmOY7eaCEUDhOJJjBadNgdNsrLCghG4jiBSHCcNW+8gqAKsnX3SqZVlKDTGijOc1HiThMPe5kMyxmdDPL6iw9RVzuNHfuCtHQ0o1KnufS6q9jbvon5s5YjZlKMBn3YzVbi6RhxW4ZoXxoxPIUso8A9t4L7nlhJbkE58XiMQNJHbr6JOQ3TiEkS69c/T1uPj7vvup9bbrmF7OzcD/x2nnBC0aHN9+G2uf+7V9Fpt+Nb8+Mjjmdi/a9wzv82ts/9DN/an/C7LT3c+p2DG9dHH7mV82vdRzzHsUYh/7+uaI5532bP6/9NYdZH94A653dbAfjeKWXHKsS/M+Q76Mx+uM//k6RjLAzA8RyqIAgIwsH3Qu84+Dl44kuz4Euz3nXcfZt7+PF33yPICDLM5mOXUfRhz/gPjb0AmHXvz+Y7Umbc9CKJqcn3iUGyv92vQ/9r8lEEZ1GUIJ2k54GLDyuWobUrD7Zs+YyPzZFumo52VtE7xzsRBKL3cjS6op0o1/oZ/8fx/sw+SnzH+zUc4kQRYU80MqkU/+/X3yE4JVFUX0h5th6F3IZMgAmPj4aFBWRnF5FIpQh4hjj5q6dx34N/ZbZ7BhtadzCzzIHNXEUkGqWrexhBBnaLAsHiJJnJxqG28fKGXaSCcbRqDbnFLhQWHTqlDG1SJNTZS0W9jb6BYdLAS395BL8vxGVXXYXfFyctdiCXZ2Gza5lWs4CgGOfM5Z/HkesmkUwxs66Yickxzr7gClacex711cVIYpoZ9adz7SUXcvfD/0lQEaS1rYeqojzCsSnW7Xoea46bsoIqRBGMJhXr31rDmQtm0Nw1SY7FzIbGXYz605y8aAarN/4RCy4yigJMkov8mklmldYx6fPRP+4lFAlxeU0NGrmOyoJSfrF+C6+8tZHPnbIEvy+IqUjLDTddz733PMy6xv00t/VSWpyPd6qflp0HqKivZMPOzRQVTKOlbRCZ1oy7oIp0MkxpbT0KucC6zXuw2g2Mj40TT6Yw6LSEhwMYF7iQBvxIiBQWl4IAZr2ajNpIMDJC/0gIpSqM1ZIiL8/NSKiL5JQSrU4gjhYxlcEiROnr2EfvQCEHGp/kRz/9JTv3tBELeZgY6SbPbiZLo8EbmGR6dQl9w8OoVArMei0Gk5UvXvVl7vz5IAVFxSTiSYZ7RplRVkNjpAuPZ4D+njEWL2mge6SFrlYfk740gkKD3uhCyETxy6I88uxbuKtriQ7HiRklJrsnDbW/7QAAIABJREFU2d8zCMIG/N4JzlpxCT1xFftef4J77r+ZRCRFlt7E7q0bmVY/i3gsSnl5HqVF+cgVMqLxYS6/5CIkQY0jv4L2ziEuOHMxJ599Ca/89QkmRkZwWHx0DQ0z5Y+wqamd3FwfdVUFxMNxlsyqpNnThUEhJxiNEQyHUav1yG0JlCodbf2DWK02Ria9hBNJaspqmAwGaOvcg5iW6OvUsfz8hZyz8POsbduOVqOgrfkAOQU5IBdIyaMoVApWProBrSZGKhmkoGQaMkFAixavQou9KBu1RkUsHqd7eIDmrmGikx7Kiys5eeEc8nJd3Pf0y8w7I5/JsSBKnZbJ0BRGTRKb28ZsUz0dIQ9jYS8H+rs5tawBZ14VO1vHOfvCUzHlKZicGkJpkFO57Lv8YEE/FWVlyGQyBgZH6OnLIhEeRqlUEZKpWTh7MdGkB2WpgnRSQqVVodNbKQwp8QUDpFNBookoB9oPIEkiJbluRqYmMOmNyCUBh8lCJBGluLAYmUKJwWBDqVRj1NuxWLMQBDmjfSEsJhsP/P6X3HLjLXgDIMoM/PX5xyA6gAIBny/AN77xVVr6TycciXLGogbm185CLpcTDEUJhtJEBuMc2N9GqtLLBRddzKbXNiBYQavWUVwoo2XfAMFJD/NXzMdpLEVUGlCKaRobm7n51l+RSKbJSBGEzAd3PTvhPIoCsRRwZB2LzLNPhsD4UTFyVipkB0t0gh6s8288KBKpdfh23HdCiESHONQVDZmchjO/x/jfMnc+CpsfeQoE4RMx5h6PfvS4Pm3O/sWafxlfmStn5L//L2NBsq0fz1T+o/JR3s1bvnPPMVl3oigRat0NWuP7suuEdwhHwkec+6KHtx/MxlIcZtmZJNH2xi8/9rmfcWR8Eu3hP20fosPhcL1rPtvIfsanwWfr7jMA5Co5DpeNgmw7hlQCbzBKYV4OyCCZiWC31aNQKJGQoTNYyMl2k1tdzLyTaql2qmlcuwlBLqDT6TBabLizs7FajcyYeTGSDGQ6Gb5UkN6RIWSSSEf7FG++0IjLYsOd46QwP5/B1inWr2mkr7Ofr/7oq5gtRhQKJa7sEiwWGwUFuRgNOZRWVrJk6ZlozWYU6SQb16zklVWPsWXzVm7+1vXMn1VBfU0pC+bNZXiwl7MvXMrTj62icd1uFpxcgyVbj1ZQUuRyI2imSEgBSgrz2NW5CUepmfbuMQxKHb5wjB5PCnfJdErL82nZ42V76wDVNdPIy80hGRD586tvsrO1h3HvCBqlmXYkSgrLeL5xK509XZS58mnauQ+ZAvRqLdllLr7+jS8zd3oh8XQKFEEikp6bb/ohw70Butq72HegmZCnBc9ED0adHndBGeWl2dRNq0SpUOLzRXn5+aeZHB9hvLeHzTuaefqF19GmtFx63jmUFudz5y9/wxNPPM2e3U30DwZxu4ux6G2MDg6xbds21GkrCgV4wz60ej0anZpoIkX/UJqvXj4TZ0kd/kCIdDJJ4/4uRE0WaoMKndOOw+EklDYiE0TmzKwmGYqxb+sbPPOHX+LzjzK9XM9f//wGoYCXwbEh8spq+fLVl/K/Dz3D/97/DHs39zOVkBNPRDFqJGTJAD4hyZyKacgkH/Gwn3g8RTw4wbgviEoZJxHwoRRVPP7QQ7RsWE2WowyLohS7toBsp5NYLEAkEEBj0nPbvY+xtqUfhcLGmD/F0tNOR2s0MDbYjSiTMead5Ls3fod5ddNwu7LpHfZgszmwOxyYTCa8k0GiiRR2o5YDo/0M9k4w1B/AnWdHkoNWr0BKKPF6gpTkuYkkZVRkO6gqKcYfn+SMU2dx5lmXcsWV1zF34Sk41A5ahzpwmoykwxnyp5fh8U0RQySeSNG8o4lwYBKlUk1JWTE6pYhao8Fu15Dn1BGUAoCAmE6gUauIjHrJt+bwlS9dht1uoenAMDZzmua32oilA1gtOiy5BgbVAiMZL3s7u2nfvB//RJyK7Hx6h0bIduVQkF+BzqgnOy+HqfE+UpE0q576KbHxXtq3r6arq43s7CxGRvt54fk1CJLI6nVrady4nx0be8kxz6Y0v4xcs5Pls2YjomAq7GVgeAJBkKNQKDEbjaRSaYxGK4Ik4HTloFGq0aj1mFUSC2bVkpNXiFopY2h0EGsyxlUXfZEn/vdOlFIIt62QH//0BUaHpzCoJdoPbKVnZBwEGTl6HXffeTcjo2NYLEYe/OOvIJNBJpMx5RtAa05TWXcyX/n2j5i18AtseWsfzT0dSAKYdCa0doEvXnwyX7v2dKKBIDK5kkQyxVDPAU5eMhObbASFDKpLihGlD/ZPPeGEopJzbj/izfchryDbvO8ejZDwbrv77zH5dtx3XJeafRi+xnvA5qbqczdjXXLrh27YL310B0gSQxvv+kTiW1CU9YnMczTw7tsJguwT72x3LNCr/0GpXyrOjALTMZkvkRI/PBMrk8Y+/+ibmk+FkyBmGH/qmvf92+E8y7d//zgoD8+7y3bOwSyuY+399RkfzNHugHa8ehF9HN5bivYZh89n9+/w+Ve6d5+VnR1b9GoVl576OWpr3ETiCUa6hnHnVGExGvEHJ5leNYeO3gEEKYXfM4ZcJnHLlRfQOtiMkITptTXYhX5+98c7uPXrFxAI+FixfDHlOS2IKTApyhAjSvKrndxx98N87es3cdqZn6e5YxRkSiY8EnaHCUuehixbNpGwF7lCxOkoJienFJu1CEmuYe6s6UhI9AyOM3N6OTu736KyJo+y/NmccepC6qaV8Phz67j1tl+xdsNzdDS9jRgHk05FKgYVJgtDPSPk5zgZPTDARH+Q1atfRyFP4BQ1LMhrIJ76W1fXlIDLouWGr17KC39dh9VowmWRMTLQh5iRg6WCqlmfw+IsQS4ZqK+vZM3bu7jxiWc4f8kiZBmRxqZW5Eol4UgEfzCGWimQU5PFi68+wpL5DUhpIxqDgZff2sptt9zCddfdxMLabJzlDr72haWce0oppzTkohVEmlq60enV6LVy2nq6KMp2kBRlVBdnE5iaomH+UvSOLLz+dtIZib889Xu2bFhDKJXkhm9eSX/fAOFkCkuWjtHRfjRKgaV1NVQb88jGhMWRx0Dbm3zlK9eTrQ8wPtjN4EAfvskBBEaRW/RE0hm0kpI8dw4mlQO7Tk9heTU1FZXUTy/hO1dfjK1kCcsv+jLBWJpch40yt490JsPF117PskvqmXdqFbmuPGxmO1ZbAah09AUGeHb96yTEFG17XsMq6IilbaRTISx6EwaDnfySBmpmlWM36rjl+98ik0kjU8jR6gxUlFRTXl2FSW9GFlGzbfUG2tr309myj2QsSiweYnLKiyQm2dLUTFGdjdvvfZSe4T7iUpzCyhq8kx5kshROm4mtOw7gLq7DZK5FntaikeQEoxHQSHiiPtxuKxEhgSPbgUkvEIinmRj14FCoWL92NRaDh1g0QV5uDs++8jKvv7mOdDpFRi3iMFgwy80sq1uOlHaz5NQrqJg+k3lzl6HTCrhznCiVStI6PeYCJ5XZZQgCqJUy9vUPoM02cdU1F5NIZbCarZTl2UiO+xEcDvyCiaZ9LfS1DmE22YlGEyBTk51dTcdgCy39nSRDMbKz5BTUgDVPS4F1GmPpTuSKBN7wJG9tfJPdTftRkqK/+wDBYQ+nnn46Jr2OSCzGvAWLWbj4cyTCAd5a04zbXkDnQA9/eel1fH4vVqMBSQKrzohVY0CtUhGNJXAXlhENZsjJLcSiNzM+PMXYRAKVSoVKFiOdCPNWawe106YzHhbwRERefn0VXe2vMtz3Fvfcey+nTKuhIieXXIeTyUCIRSevQKXSolEpGAxMIZOrGBkZZeW6Z+gf70SltKFSqnG6sunvbyfXlUVpfg7DEx6GPENoTQqiSYGJCS86nR5REmlp28sbKzfw2qpVXHXFuexu3kEy/cEdrE84oYiID+RHXmpy1wM3g5g5KllFgiBQfMa5kEkd8VifNpIk0fjHb4JSDYkoK37f+PeOV/+I1b97AvhbSd8HjHc0Wd05BhxZRtknRix48D7+C3CoDOy9a+HaOcemo1v3ROSfPuN4MgNA590rjvrct7zSCpL4bj+mI6Rz1e2Hd+JE71GL4TM+Pkd743VovH+FDd3hXMO/wnV/xonHv/q6+1cSzI4V/lCIwHiIXbuGiE3FSIQUjHv8uJ0WlEo9ggwaaiuxZzmxW7SEQlHi0TT/e/cL7NjVSuPu3exv2s8Pr7wSq8nATd/6IvuGeumaGMJuBaXRRHlxLpJMzqrVr1NaWsbiRYvY07SXVCiDTqtHLlMw0eVl7RsbUKrkXHH9CibHW3A7dUhCmKJ8F2lJwG6xoEBiaHiC3nEfOq2FuQ1lHGgf4JGnVpEMjaA2aIlMpTBoLNgtJhQyNa5cK81DgxiL9bRPjiPPLsDk1HHFld8lEg3QOe5hajJKJBIilREw6c309g9z2/+7m7p59SxalM/zr71I064NhEIB6mc2oDcaKZk2nY7uVl5c9xqXXPUlzrv4Ku7f/yKz5lVQmldGwBtCJZcjZMBlsRAejDN7+mm4srJJpUS0SiWz62eyfvtefL4go5Mycm1W4skEefku8ovtnHvO5wmFQkSiCcZGOiiry0HMpJlbW4PLYiceTxAJBxmb2o1aIZFOJvjqd37MpdfegEKKc+/dv2Xp2Vdy/ue/TigcQ6GA8Ukfhe5sxuIBhsaDKBRa1BYDMVHA50+gVKvIJGKYjDYi/jDr1zbS1dGDVmtk28a3GPCMsbetH4tRi5gYZ7ipGUnKIJfLMFitjIQHMeWqKaw9D0EpZ/ZJWrLsbgjLaR9s44Irv8Y137mZ2XW16JJZLJw1j1OXVFPdcBbV1Q2kEkniSYFoKIFMJiBGvYz1ThLze1jz8iv8x9euZMHCJVRW1+N05mLUazjQtIHlKy6lYfG5DMStjE+F2LR3PzFFBp1ThbXUQiYu0b5tjPJFs9FaCunvG+H5Z/+MZ8qPQaakusiNUi7jsku+wFWXXYrJ7KS8pAh/NIJcUmBQ6RgN+RCFDIl0DIUxw2Tcw7hnGJlKxqy5M1gwfRF7Nqxk355t2MwaEqEo/n3tqOVa5FqRZDxFXW09OosZn9dLXmEx2U4rKoWIiIhcLsftdKE12Rho7kAUJYYHR5EmDBC18sxrY7iLq/jr6le488HfsqezH+9INwMde8nPL8Lm1rO/dT/eYJBAwkNVrZlFxQ0MNaVQWCtp6dlHT9MANoOZgtxivP4UOYUu9jd5GJ6M8Ozrq7jzrjv4w4MP0VBfhzu/kBefe5Sg10cqlcZmNrB90wGmqbPZsKmR7r5uAn4fCouWRDKBgIAn4sEfjZJKJJDLJEJ+LzPcGrR6FSqDDXdFNga9nnQ6xXXfuomHHv0jZrORva3DRONpbr7xJi668pssPu0C/vDY6+RnCYxNhAiGMigVSnR6CyOTfhx2A88+8ziBwSmSyRRGg56rv3Q9iZSCvQNPM2tmBS8+/SSxdAa5LhelqCGTVDO+30/n0ACRQBKDTE9aOGjkX6WUs8Bp40DPJLlOBzFf+J92gz/xjC8kCXPDgiMe5uo5RdwgCNgWf/+wM4De6U+y+2enY339ZawLb8G3+di2iD/aiKLEKy0jXP31eyEePpgdJVeCTM7Gh58k68mXWPnIzcwrtb1r8y5JEogZLCed8sFjS3AU99t8/ftPnBDlXIdKhm76r6982qEcVVxX/AnPk1cz56dvglz5jzONjhBJkqj4kK52OYtvBIXqmAiGL93/BFhzj8rYZz2wBThoHv5xOeTHZp277Ijj+HfjkzKiPl7G+zR45z3+sCyp49Hg+DOOPZ9E9tw/G/tEWwcn+jfheEYmM6HNmUNOYQD/8DiVFVZ8wQgaDeQXZ7FpzZ9QaCL4whG+dd1Z7Ojq5sUX3kaQBGJiiKGJMdbv3MdJ1QVsaezm2utWsKiimh0DfWzbuJpps84mr2QRBwb+wvPP/5HzzlqB3W5m7pwVDPb2Eg+LRCMxGuqn0e0dwRExsrdlktOWL8GXkMjKrSYn3822bU1MrylHrVWyccc+hnYMEC6cy+vbmnntpRcwWSwoDQaUKhURzxSFecX4/AK5biPZNhVqs5NMZAqNzIVZoWUkNUTf4DqyjBYuPO88Gt/eicVoJZ0K4AmGyS+fBqLAm6+tpXU8CykjEfR7KCnS07KvCVduARWaAOefcxq+2CTTHBq2dQeYlncW48NdpOQepIyS+IQWt9nC5SuuYrVzN6sb9/PGpiZEmcDwYD/Z2W7S6RSxvVspXn4Ri+fPpnPfagzTVIyOezFkucjJzcHr99N2oJmifAct2/14Qq001OZxUf1ZRJMZXnp+HUuWzuSyL36F4qI8xEyK7W8/Q2f/MN/6/s949JHfk5dbgJROYXbZSSbSDHYOIUeio6udgqJqBnpbicSCvLxyFUJawjs5hDWvmvz66cj9U6RSSbJy8jA58kAmJ5Xyk1s5lydf2sS67peQK17k+z/4MZcuOw2H1UHv3t1MjO/njTWNqFRKlp+xgNbV3fzkhzdx8403ErJUsOK+m1jzg68iyj1U19RTamtgMphgsr8TnSEbm93Om289QzQTZ9nSOjq8Xfh2jlOZX8ysulPY0tjMCy+u5htXXEbDonkkkklEMUNtqYmH/vIArbsmsBdbCXsSSCqwZ9tRKBXIxQCBSJx0UgJBQC4XyMgzKNNh7v7tXViMdjwjPVxx4dcRtq0jKKQR5CIahY6YJkZrVzet7cNo5AoKSwrwpYJUqUt58aXniMsyyAMeLAYnPs8ku1v6SQ6PUFNdhNpt4PZHb+eiZVfQ3DZIJhpmWlUJG1cneXnrKqpr51NY3EBWyMv8WWcxMTXJMy+8xElzC5iUknSF3+Q/b36VvJn52HRZ5JszRNMSU1MeBob6uPgLNbz8cjsKQYGUTNPd0stg6wR3Pfgn6koLCUW+yooV36O23sZLzz5DMJyh3znFgrn1GK02THoHgkwiGRnFWVhAMBRCY3Jw8YWzUajSRGNw/oXzaR5qw5Gl48/3rwK5RMjvJ63OkBZFogLEAlPoFBqUdisWowmP6CERGycQi6Hy2CgsU2EzgMmpYjIaJhWO8IOF9STSIu7CKjJihqysPL7yjR8SDPrp2/EoVosVlVLCaTawZvtLvL0lRCqSoaF6BtF4nO2730YmDzCrPBdfwsnu/asxqpPEIwKnL13KFr+PrDk2zq9wsWHDANr/z955R8dRnW38NzPbe9Fq1btkWy5yt3Fv2MaATQu91wRCKh8QQgIkBAgECBAIJDTTTAfTbWPjhrst2ZKsZnVp1cvuanuZ7w9BAgkGbGSwCc85Pjp7Z+a9d+o99/HzPm/Yzex5C5H0Wt774EO2bdjE6YU5qBOjaONG7OkGtm6oOOi385giij5Vp5T/9ZQhiVe15h6GLbiOeFw+5GpEX2hiq7eAr39Ixnak0TMQJu/4GyEa/nejIIDGgG3cFO64ZAIzMh2MWnYbBAdYcv4fQZRo+ejP/1IPra/uAkGg7m+nHbSfIV/Gh3xDHfGI4FMh1U+Py/pOxzGkECXijWXY594MkSDdm/9yRIiaWFz+0mpnnxKUdeuOECEry6x66L/Tzg4HW5999bCNqO3zfgei9KXv1w848jgSFdCORRxKdakvWvD+sAj+38KRJol+eCc/jx/ery+H2awlNy+PMUUjWXriAlx9WZxZMJ7MNAdTxy6kq9PNuyt30t/TxxvxEn7xy/MQtQp0NiUDPRFUso7Tz7qSpQtPIn/tBvZueoG81DS66mNEZSfhAR+t5VWkJmSg1Ap8tPlV5sw4jZ/9/CpeePw+fP5Opk2ZSXqmkd3P1zLr1Pmk5XaSkZtBT18vf77zLmx2B50dLSQnX4hGm0lGegJL/nArz734LE0tzUgoEKMyafk51O0vprOrlxHDFZhMNiSFiqgpyq7t23Fk2NHrdHh8fgxKLZtXHcDT38msabOJKWRMOjW+kB2LECE9dxQ+Tx8t9ZX84uyr+dm+Gwn1h0lwaujxhKgofYOSoEB+diYjhxViNBkYniNiSihALYX50XlnU9vUS1l5NRE5zvubPqK8tJmW1gY87n5GFBahUkoIErgaGrDmjyYQCvL6Wx8wacJYmjsi5OZM5+OSKhwOG2algN6awYTRo3HH12P2eqnz9hLtbEYzzErMH6G5po014Xe59OILueOu21EqJTp6Wzn7rBMpGjERvVKHxWZACHWxv6YeU74W0a1joD9EOBjEYLCSnejggMuLVqcnJSufgvkLiYXC1BZ3IcoCgVAUo9XOwICb+q5+9rp2MWvJmQiCgNmiw+sN8cTz71GQkUxDh5vZ8y6kIN+AzZ5AXdVubvjjI9zxu5v5eONGWlsP0P7k3YyachwvP7WS7MwMFp0xnR0f7qa3xwcInH3xlQiIFGRkY7HbSVOpMUQkNm7YQkONj/KKau7808289ew/ueHW67ju+mtQK7UE5H5iwRiOnETa9negdWqwpRkJegMYbDrKtm/FarHQ2dWHUhGntLYRj9dLYmomOBLwtPpId6Ty7EvPkpiehK/HjzM/CX/IR7RPpsXXi0lUEotLiKIGfGGqKpvoj4VJMTjoCwcQIjESzIl4ZC/D0p0MCAOsfm4H46Zn88hL9zOp4EQkQeTB5fewo2Q/acmpFJeUUzR6OFq9FY/XS3HJKpJTjNQHOilMy6a6z4V5eBaJegdlvlq0jgQSTGrsyQGm2pxEUJCWZqduXxNpuU5OPeVibtn2J6644DRuv/0REu0SP756Ds8/+xyCIojNqiMtaTopJjWhqEByciIdnW2cespltHe46airRKSP5996j7zhBTjseWzZsA/BrqXq9WriURlBFPDIISSliEKrIuKPoR9lRIgLjLGk4O5vR6dRcvW1N/LwQ38jLyUBm91CIBjm1BlzWLFyFbJaotnVgNvrYcKkqUiCREyQ0Gg0FK9di9FgxWow0OnuZ/L4Qsa48+nsdqE2WlBKZtoaWpBlAYVSQKfV4Q378bS3I6nAH/BT37Mbp8fKCYUnMzk5mx+dHmHt2o8IB6PsLC9h58fvIwgCbzc1k2tLB20ETzCE33dwM+tjiihy+wdTuzTKoVExJH7i+2Gf/mv6th5aie0vWiD3rb990LNh2UP0rbx2SMY4VKjtGGDispsh9pk8REHg6tt+ym2LCv7LtPdT9G26i48PdHPSRX8GOU7ajE98nSTFIBsiKal0ecl1GlBK/23uezjlwL8P6PMNEnBa1dArbr4LyDIgxyExh943rj5iqX+xuEwkJh/0eQSwnf0kAFa96oj0jxxnfKblG8eS5cFqZ40bD9O/y9fPnnf//I3H8QOGBkeyAtrRhC9bgH8d9cYPxNqh42h8Dr4Jvq1n+/tS7eybvC8/vGtfD1qNDpDxh8Jc+/OLyUjJoL0XSis70ens6PQCo8fMJRQKk+B0olX4WLB4PC2lXTid+VRUlLFr7RquvugS5s6ewcwZx/HeWyt4453VLDrpFKrqDuBMSMSqTsIZGkVp6U6QfWQ5Exk2IoWNH+8mNd2AqznGKSdN5YEXl3PtlWfwz2dX09VZSlJaFhIKhLiLp555nbvuuJuy/Qe49m/X8eB9v+exh19AI0pU1FcRivoJauC2P9yK3qDl1dfXsHB6Kq9s3UT9gQ4aGjuZudCIFEgkrE7iqv+7FMJh9m3ajElrQ9DI6ESBuDqI393NPx64h2v+eAUb121gbN5IjFojeY4s8p0KXumPkpyg4oRFi0lJS6KsvBx/dyflW3Zh1GuIhxupqu7Dbreg0WjJTDFTurcSizlOTkY+KtGLwRInNSFG1d5O/Fo1A/29aPUG9pVWEIlE2FneQGDATXOjHpPZyJL5czEqQBOZg9vTRdHkidQ1tFFTUcVFF15AmjOdAZ+H4s2r0ClAabPjM/ZilAxorJ0MtMkc6GrjtGkz2bFnP0QV+Hp9mJMUmHR+ohYNcSGOUhDR6HRY1RInH388m7YWs9vrJhhVYE/JQqPR4Wo8gCLsRm/JYd7xc/H1d/L0P55EMX0kowuG0dnfw/zjl4EoUjRuPFs3f8DU2bmMGpmH3pzKktMvIDs/j1A4wpsvr2B/xQFef3sNapXIDdW/ZvwwAZ8/gF6jJtGZjtGkw2xOIN2ZzKqP9jDQH2B/Tylp6WnkF+Ry8hU3kDHhJO7/042MGJdB6e5aMqcloJJi2LPMqI1q5JhIX2M72TE3baYEemQ/2iQ1GelJuKq7qO90ExOUxCNxhg+fQ7hXR1NtLWOcuWzqLCESCqOTdARlP6JSxKCwMuDzoUEkJkm0dXagEA1Uug6Q77AQlRQY9Cbsoha1wk4k0k0o5GfHhip+dOliGqq3MX3ycdQ3xjBoDCjVRrLTnMRlgV07VuEKNiEKIsOzkmitctGrDFH+cTultHDSSfPILxxLTW05jkQbRmsS5fsaae0IoFAGOX5uIQZLAvff+xDDR0/kl9ddzVurPyYWq2KgI0pGWgZRMZXGslJ+ed5MHMnZ3Hf/s8w6/WSefmY5oqgiGpdx9dRRUlzDuaedg8ms4p2XNqIXBHIK82morkOplYkFwe+JkpKXjE2jI7/wOCrLN0CnmmznMJpiLiSVm8cfeZL+/j42dLYxYc5SHn7qBZoaXLS1BVl2/hLS0jL500+uZs4J5xOLxdCbNQwMDBCXohiNZuJqE4GgyOsbqhiVZmB/Q5gcm4lRU8eRlGAirs7jicefZ+S08exevZppS0ZT09iAPxhi+qgp/P72B1m3cTVXnHUK9b1tWAQDIybPZ+uGNzAkCAS9KrLHJGEy6YgQx2awIHNwm5hjiijKPvsRYGhLo48750yKV7w8ZPHmXXUh6x575rBUSkMJWZY5/oHN7H7+pc9vEASaNtyHUfv1fZ6m5doHSQJ7Oq7XrqXohnfp2rkZwgGIxph2yk3/1QfyoMwRsxPUehaePoM/Lh6O06zBqFF8rnr78KmmAAAgAElEQVTUIUEQQDj6rbWm37YGANVhVLo6GjFIoMi0vfLjI+oPFQzHiMkyWr6EYKsvOWLph799vxJEaUi+Mb9+a1DKaTqEd+1TfJov/L9KtA4FhnKBONTkx9FGphxsLIdyDb+IAPui9LSvivEDjn0c6ft4KOq2YwU/PPtHFrIs43b7yBSj7KzZSXpqIeFwH1ZdiA3rNrB5716ysovIzi/kitn5PLvnA6LhEHlFWezcvxtrvobAQIRgOIxCkhAFiYq6aiYuGUaERnQamUkz5lLX2ImvuZRhBU5CngFCNhO2pOlc86siXl/5ApNGpzOsYDTbd/2d9dt3kZUZxu8zY9QlIYhhBHEY4ybn0N3eQl5OBqefeSGVjX1MmjGTZ17/B6JSyRlLz0dnsbJ1wyreX78FjU5NYuJ0NBYrPv8BBEGgz9NFfoqKunolx0+YRFljI5uVOgQ5hl5hw2AxkpuVSI2vmV/c/RNOmzwXd08vudmF6JRxthXXcOkl51JQ20teThJPvbIKSaVAUkFasoUkpx23J4TeOJpfXmGnYn8lb67dQ11NPTqDkoyCHMIeLW2trcyYPJbyqhoKx4ylu9tNc0sTIwqK+MmPz+X1d9fQ3d2DUmFDiMeIxWSKS8toa/dAPI6MwMtvP8LwUTnEw2Hae/yUVndjt1tJS3ayYPESFKKSV1a9xLxJc/nwww0kWCxMm5JBR2cPA6ISOxoMaSba+t0IxMlJMqHyyUiCTCQQ4kDQw5U/PYMls05GUArkZRWQONCIoBpNpiVEn8+Bx9tPLBzEbLGTm5PFgMdDUoIFX9CP2WbG3RPF7fbQ3l6PKOWDoODWO6+nbOdW8kYUEA3G2LZ9Gz/58Y/ZsbOaCUVZZGdaifd68CCAQkVFbQvTZ6Ry791PEA/JnHvKPKrCfo4bO4Pq2lq6ml10b/qIeQuXsnjdesrrD3DNRefSsbePxLEJqG1K3A3dxEIyOpPEa+/sRCWJBJCxZjhwB6OoElUohBitPV4WTxyOXtFHaauLNKeNYGgAjcGAt9+LXq3DYjZQd8CFRWeipb0drUlByCejt+gJewMoiaI2WOjsaqPDdYDJM4rIzrezaX0pkyeNpsHVSrh9gG1ba+jscaFTKnEmJKBR61BoddTXN9HcLqNU5hCNhGkijC6zgIHeHn553fWYTDreWvsaTeWlZCY7CbrDdLeGcCbZicc7MOvTKNvbzNIznKSlpmF0aAmH4lx4xkJ+dOaDbNqwi6cffJCoFCdNoWT7xg/R6dQotEEevfN2zA49Ta0diILAlm2luNrbefThZznrggUMm5GF3WAjPcnI654oRocCW44Ns05PXzhCV9hH98oPENVqho9w0NZexsxF5zBp7HB++4cHiYRlrrnqx/h8XvZVbSDkjaMz2Xj3pQ9456WVaB1ORIUCjUaLJKkRAbtBoMcTxW7UEorGkJQmWjqbOXH+CeSOyKOiqpk9Zbsx5Gp46OG72Ly1lov/cRYP/uV3qOwCUVnNxuI+Zs9bSm1jDX9/4UVmzB/LyUvPoqPbzy03381jz9+F1x3GrNeycNxEWvp7ePut9XwJT3RsEUV01A55yHW/moX1xVewHverQ1YVfRFeu3wy1n88i33qz+jb8dAQjPDrQZblQaVFfcm/854AVFpa1t6JXnP4t1oQBK6++QoeueVvaJQi1fcvBZZinfUbxp96Amt+PpNwLE7mZS8QdjWAKEEkCPHYoPl4fzurH6ll9SNf2snnCSBLEmdcsoS7ThyOWadEFIRBbkCpGSSojnJ0VFQBx4jp9tfA8t2NIAiojzDx1dwbICdR/+U7yTLPP/3bIe87Hpd57N4XGf+jZUNy3566/ZHDJrQci+8AIMOu/cbj+AFDh++LV9FQEEMHO/6zsT/7+z9jf9EYDmdx/8MC++jBsUbOfF/wwzvw1YjLcQxGNVfcci1SELrH+FCplKx46Xk0YpzrLjiFTTVRopEIK3d8jF5noCscQ6VWMuByI8eCpCUn8tKTyxk/cyIP/P0uZGWQ4cl5tPX009sL6zftJis7k8zssWzZ8BrJjgR2dlczecYo1Go1VnMyrvZ6QrF+ps/Mpb05gBD3kpuTyYAnilabwD1/vIqX33iTbcXrOWnRGUgqiZ7eADOmTOHjnfvYvW0dL72+Ap0miKtbQUZWAY0HSklNK+D9R1cPKgNkme2rq8m5NItoLMQTLz5AW1+QhYuWoNeegFD+EbLFTk9HJzR3U9fexAP7G8jLHc5pc0fR3tNP94DMHX99FpNBicEYxOqwEgpEmTKhkDHDsygp2YXRlER51RYef3ILmzaVkTHMSLpjKhm5SVTsL6GloY+AP4BnIMziBXOoqNqDQgwAMkq9wNa1H+BvK2fBpMlsq/FgN+spyM2gu99LXp6C555bQXp6Fi3NJUAvBSOKMJmMlJWWIAkF9PT60GsCqHU+9n5cjiKoI9FhQyFpqWlxE/f7SUzMIhKHJIsRTV01JrOZ/BHjaGt1kRhqYOTUmcyfNw2T1UjJ9lKSE5zENEZ6e0zMTlWwNmTD397HuJwktP52whEt559zGitXrsBhdzBy+Ag642Aw65EkBem5IzHZTITDITITTazr7yUWi6NQiMycPhsZGD06m9J92ygYkcvejXsIB8OolCoee/xJQuEYOssqBgZ8VDfsoSB7OLGQj9z0TD7avI7nX3yDlnsfIjsznd5QO5JSwjcQIlTtR5ttJ6BWo1NLOI1G6rx9IMkY1RpiAS8ddQOYrCr6fJA3diZbdntorF7DohkTSEw04A3FEYQ4kk6ifyCAISogiFEkrYhKq0aMKtBrJFobWzBbrUR0MRQ6BUlmAxG9gf7KVh7fWM7wsbloQwo0cTOl5a24u11UhfopzE6mfyCGXTIgx2U6PHsISl1ENApQxMhMmcjsCZNpaWtjYCBA3YFdeNu7SEtNpqW5FV1OGunpVsyOMJk5BrbsbGLygkIQBJIzFBiMMT744DEqq1xEoyHefWclvb1tVLe0kpZmoqhoLsGIn3UVLnLGzMRq1uMPBCjetY2OrjZEUSYeh5buXvIz0vB6/URMavQOJZIKzBYjnkAEk9FA1B+lJ+Tm/j89zIZbf847ER37n3mFV18bQCtoWTTrVNQ6JwF3Lwsnn8T2XXuwJg0jyelEFiU0GgmVUkNLcwd5BZn4qz+mts1Hlj2JnsYWeiJQNDmdyIDMro07yB09jslTJrHine1ouxRoFSIXnHU8SoUSU66azjIlBVNy+OmPzyccCFNavp/k5ES2bVyF1ycjCCJlu/YioiU7x0w0qqK8aRwqUURvLqa/3X/Qb+dXsgeCIDwJnAR0yrI86j+2XQfcAzhkWe4WBldXDwBLAD9wsSzLez7Z9yLg5k8OvV2W5eWH+qH/l0pliLHtzTuYuuw3Q6YCmnXZeWx8/DlCkRjqIUqT+yKEo3Gcx986SMZ8lhxS62hZe8dBK5EdDm4/YRiP3CZhW3Qnfas/URCF/Pz97HGIooBGlOh45oIvPPZTP6dPPaZicZkVxc387Lp/QiQ0SCrBILH0KXpbefXef/LqvQzec1EChWpwfzmOddqvB4klvRVMCbz4h6XMznd8jsj4T+Ptb5W06XMdE6bbXxcNvSEQxCN+DR/Z3shfl4086PaegcGUviUjk4e8b28wCpEQz10y+RvH+le1P1Pi4QXoP4aq+3GUzRNHCMe6quhIkUMH6+ur4n7dfr/qGn3Z9v8krX7A9wc/pJ0de8TcdzlPtLc3c9efbyQWDBLwS0RjEQRBQtIL2HRW7n9pJWOLFmFUqAnrujkufxjFjc30uvtobe5hclYhHY0ddOrfYXvd+xitGkRZhyIexd+tw6i3E4nEkIQYsqxg2sxZbPxoGxqNhN1mJxyJMGfOXB6670YWLp2NHjOult0kZCeSmBRi7vzpKOImHn34cQRFlNY6Fw8vv4vFs6+gIN9AS0sz2z9egwoFXk8/WnMRJrOHWGzQS+eRhx/GnqWFPpmB9igIMn2efsymEO0uNSedehZ6nR6bycT2Sh0bXnuTXoWX7MRMLlt6BRqbk83b9rJyzVZMRjU5WVZa2gaIxiUSbDkk2gQiURm9Xs+GDz9E1EB7p5u//e1J/vjLn5BjSccldhHy6mis9dDc4EYUBMy2BM48fhG7Gkro7o7g8UZIsNpQShoa+6LYnGba+9vRas2EwhE27niTBIOSoADz5+fx1OPvodZocDU10t3VyeWXX8WSJb/h2eeeZMGcqTz4t3+ilBREImFiqAjJBiJxEKJhgjEgJpFoi5FfaKUlaCYsmdi6v4F4OIBkTKC46gB7KqoREejr78Vis5GRmkyCwUC7QseYwpmoJxoJhSPI8Tg2IYpCZyYWU5JdkEuf24taqWXyhBQq9tYzf+lZbH77HrYV7yBHm4Um0YxAHBERrcHAHXf9nut+/XusCYmUVZVh1etQ6RJQKQRu+s2NSCqJRx54mGg0wt037SXgDRKKBQkSZPWGepKzR1NQNJWq/XtILXAi5EPtvmYixhCjNFYaHHH6untIs5oIZhlpLW5EoYsQFaKAgLsvhKhQ0FRdDIQRBYGu3k5G5CTj9ffi9/sRwyJKg46efi9qpYK6lgZsVhsKQaax3YXDkUBfXy+pI6zkJtnYt60Lg1ZLXbibmXNOYNLoAl579WUSE2zoUhRYphQSaA3SV+lHa9TR3d3Jzt37cDj1dCh7kENRAtEIWyrW0u+txKa0M2fO6Wwqf5tIUKDB1YzNZqKn30sw5CfWH6SlsZO0ZCN4vDQMyMhiKi+/+AqXXHwycdFNRkEywUiUXRUlqMIxVDkWnn5nK5GAG184SljWk5+7kP37aykp3YHMoHWKUg/JFhu71u7Cj4R32AQikRi2NAvjhw1ny/79BMMR+pr6EGUFK1d+yLaYAUEUkKMiETlI1K9hxetvcPuUmxEFMBhtCIYI06ZN5UBtI0IcmhvbyR9mYtiwbARBTW1rC3JURp1qxeOJoZZkQmoXVpuNMSPmoNFoUCqVpFrNlFc0cdstv8AfDzN63GgOfNxARtEolIooLTV72HrAxaTsUfgDPqqqq8nOHwtynDfffpOOdheiQuKc82azbet6DNZc0sxWWqNtB/12fh0m4Wngb8Az//FRTweOB5o+03wCkP/JvynA34EpgiDYgFuAiQwKnHYLgvCWLMt9X6P/z0OpOeRDvgrDUowA2GdcR9+We79xvJVXTcX65AqSpv9iSFVFbn+ErKV3gbvj8xsyx9D2wmVojqAfjiAIdG25H8fUn7GiuIlzxmVAPEau88urU3167Gf/KiSBCyZmcsH6g5cMD0Vi3LqmhkcfeAO83YPeSp8ab3/i/YIsD6qL+lycfdG+rxrE4F+DjXOvOYMThycwO9eBQhJQSCLi4abCHQyx6CC59T3Bw39944ifTzQW588njvhSsjZv/v8dtjn0l0GWZXIvfx7UehJNh16h7D/xf+9UAtDxwaErn3bVDX4W51114Tcex7eIpzlK5okjvXg6VlRF3yYx9J/xh9KD6XBifFO10rFAMPyv4vuYdvY/hKf5juYJhVIkLobITMvGM+BHrVaRluygaHQ6HQNepiXMQ4UVtVrB+rd3oTxepsPvJ1VtI8WZQlFBDjv2lqJUKOj1+Ug2GDn31OsRgeeePo/xi4YhBQ18sH0fCyYuIyd3HNY9xahUau7+50385abH6OzsoLMzxAevbsDjDzFxSg4lWyqZOGUYz2x/ihGj8snITyLH6aS0sgVfr0BSgoH3t3YwIsWINcPMCEcKB5paiAS70entdLQ3opNiLD19MgZLEVtr1lHmrSYcjNHd70YQRMxhM1KwF6UQQZbDqKUETjrjSor3VhEMhmgPulF2hpAUCjISHUyfOBqjXkFFVSW9nR2sfvtF0jKdPPfC+/z+D3fw7kcVnLZ0GLurdvKjxfOoravFnpDIe6s2ccnZY1i/tZmUlFwQQKVSkTUmiw/3lGLSq5CUZgoKC5k0toiyykpyM6ZTVbEDg13P3GnTef39/fjbgwT0MutW72ZY4SRsNgNZGZlsXPUORWNH8/JLKyjMtNG2aysLRqbx0sYdEBXYX7aJpEQHf/z9bfj9YQxmMw88uhybKRW9OhlNmohaVKLwh1FqtHi8HhQKBaFAkI6uDiQpSiQcora+ln19bqaGC6hxxclySlTWNKE2JiNHwsTkOHHZwJZ9TajVapYtmcPEcSNZ+d6D5MY7eOjeJ+jxDKBWqGnt7qSlphyNzkBORjoZcjcVJa9jdkwk3eHAoxHITBhBMOQld0Qa3mgHdz/+ayxGNbJBR09jMwqVlYGYQEzh5Z4//hZPvxeT6ec8seJVhI4dMMZHZ5MPldJEmimIp62fESNGEu2sxiVJ6Kw6PIE4EMCcosXbHiLg6UVrUiBK0OML8MJ72/CHPCQm2+kf8DJ98gQO9Pbh9QdJSUmm293LuNRCDBot2yoricUFQpU23q2sZGKynX7/AAWpE9m68Q0uu+QFUpOTeerFlQhhFWN109natp64FGHA6yMxLZOAfwCVq49EhZ6iscPZunUf2RYbI9LTKa9o4am37kMhKtCqDEQNIi0uFyaDGpvZgBwJMXViLq6OLrRaM/sr6shKyebc868mJTmBBROTUClltJFekp1Wll18A0/99QGmTVRjyV+A2+1FF/OgUaqZOnE0/j4XxXWbkQSIiQIl9VWkJ6bT2OiiePdGzBotOo/Ihi0NqBIEYrEwFrUaSa2jo2cbaq0elVqDRtnClCmnUrKzlLuuPZNIPE59XRPFZRUQTSUYilBQkIdCITJaOYLamgZqKrfgMMRRyxJqtYqOAy0IlhR0kQgjLLmoLRFS7TlIkoRSEthf34Hsg4BPIsGehRUdmiQFaVk60k1J3Pe3e/HGBvAfN435k2Zy2mnnEYrGSEy0c3ZOImviAwSiMmvfL8buSEDjbMDXHyTyWaHGf347v+qrLsvyRkEQsr5g0/3A9cDKz7QtA56RB/87fZsgCBZBEJKBOcAaWZZ7AQRBWAMsBlZ8Vf//NeDsUV+90+HgE7XKUKmKurbcj+O4nzMQjGI4jLQvWZaRZXhkaz2/u/7v/5VuJeSOp2fFJd+q4kAhieDM5eor7+bsTwiwofSL+izUSok7lwznziW/+Vz72U/vYtUjy3n6iRtZNjoVGLxWsbiMNxilyxPi5fI27r1zBQQ8nzfvjsfA28MLdz3GCwfrWJQG/ZhEidGnncIvFudxwvBklJLwr3P9qmv+LzXJ94gowtd3RAiaTyHLgybWGuXBU9s+rXZG9rgh7z8Wl4k1ljPlnFOG5Jl+4k+PgSAclkfV8efcCsCrl036xuP4tnC0zRNHCke7quiLYv0vkh6fXtfDLZ3+de/J/+K1PVZwLN2bbzLWY+k8v8t5QojLJCZoaWvqJjevgFgsjt1iQaG1MCYxnfLmatrc5fjKQiQm2KnY10invwdN9gjMWgXLl7+DLAxavo6bPopwVGDf3v2ctGQeoqwiHonTGfGRkpiOQinR3NTO5Gnz2V1SwUBTDQdqa3nmn/8gNTmRnoEuctIcDHT4MWr17N5eQXpKMjX7mllw2RQi/iB6vY3CfCu333sLD9z5KMFYiGsvvJaP1q0jK03Bzl0l6MwGbHqRPn+Y1bsPcNyEVFJVdqqUSmKyjElUYjckE1ea6WoLsr2xhp4+D9FonJnT0pFFBQkODa2tIX7x41OJRmOUFO+ibP82RKI0uhpxe0RWb9qNYa8AcoxIKMSZZ5+MxxukwDxAQYYFARkQ+fF5F+B2uzlz6Wxe3fAOHpdI0B/g5Tffx2jyoFU5SdfZ6eht4M9/W8G5p93A/gOVTJ+5iPKKXVRWVZHucCIkx7n7jheZNWc+DqeTcFRBSa/Mk089Slt3LwsXn4gtVs2HOzxUNvWRlGemu9ZPX48frbqft954FWNiDh+tfhOFNoEOuQ1/sAm9yURbbT8Omw6nMZkzLzgV90CU5tZWXnn6YVR6O3adinDUj08KYTCnMNqoQhIFEhIlQuEwSBoEGULhIF6vH1uijsrazVTXbUWtiFLnauCWuyro7GglJSWNTRve5biZi9HrjRiNBkbkFWC1pWI0aEhLz0WlHUN2Vg79nj6sCTZ2HNiNPh4kASMBgx+Nrg9vwM/EGdMoKjwHV10V4UCYXbs7GJ2XTKN2OuY2FxaHiXBflJ7oAKpkEUEMMTl9GKow1Ln78KuDGNO0aE0azIlG4tE4EX8QZbpIS0UPTmciQlggJkRISnPi7g8gyGrsNj0hfwCLXovC4aRk12ai8RjDx09g+Ji5tDc34Ouqp6PHTW5WKr6dMfr7PdSX7+TjzauIywKFv74Zq81GJOxDrVATCXspKJiI0VRET20zpRUxnCMW8fZzT/DxzhqsRiNj54xEK8lsqy7D5ogRCmpAEBAQyM/JIDXRiKSRcAciKPwSGzZ+wIzpM3n4nXe45ppLGRjw8+jyf6K1ZVOzr5I77v4z991zDybfdqaMn0FB7mTqml3I8QiypKClopvS7e9zyqU/RhFS0iV0ce6VP+fhB37HpDGzcfVEkFW1eL1RFCoFkgyog9TU9aLTWIlHI8jAO6+/zZKFi5FVOvweD2+99R5TpjsZrixAo9EgxwVC4SjhcASNTociYSRvr32alGQnqalpyKKe00+az/qPK9m3fzdCTE/mmXOIx2IcKFnPDGcmxeF+NKoAgqRi0/ZyBmIDWCI6Gipb6e0bQIhL6EUl773zDrMWnUdclmlobKEt08rZilw64lo2DSg58/QZrNnzAd52Mw7HwbM0DmvlJwjCUqBVluW9/7FoTgWaP/O75ZO2g7V/bcTjg4vv5qfOP4wRfzV6t9yLbfK12GfdQN/mu79xPIUkgtlJ+qxf0rv9wa9F6MTiMgmnPwquys+nYQkCmBz0rPn9d25u2/fOL7HO/T224345WC79Wzbtfub88TgfWc5P7t/AsifPBQaJG4UkYNWrsOpV3Jxs5OYFt3xlrFAkRtLs6wdT2LSmwcaAZzAVLhal9JVXueyVrzEoUaLgpKU8fekkUqxaRv7stcF2pebbT3k7ApBl+YgrpGJxmXA0/qVV4qbf+REAXSuGpnT9Z7GltgeiYV69fMo3jvWv66UzH16AeAz0lmP+ufku5olvC0eLquhoJYY+qyo6WnEo1+lg5/FNPZWO5utzNONwCcCjDf9LaWcHw7c1T0TjEkqDFmeOGZ1eIhqV6e/voXRPCeFgBIWkwS+F0WrVJFitDPjDGIUIW/cUM2fyFGJClM6uTmLqOMq4kqR0Jzu2bGTpicfz0KOPc+3VF/OjyxeSnOCks2sfDvtoPL4YNfv34HG3cue9v6YgbRRhrw6TSUtegoWeAS9dve040hLpbO9g8cI5RMJB3lhXSkb+OFavfoMrrrqYZ194hUULF9DbHyAtK5uVK19EUEkEwkEMqVm42htIlVQcKN7HyeefQSQCoiIBlc7EmWdfwJ6SN2nvbqK4eBeRUAiL3cmUojNx96/lQG0FKTYnmzavoLbeSPGeDbi9YRrrqpk7bxLZY+fz0zFT2LTpeQoddj54fy0nnX0hCm87L7z9GghRTll6IgVZGezduROFUcXarbsgHiQ7NZHiyiratikZnpNKQoaW5c++zrLT5nL9lb/jqRUrKBo3hw1bdhMMxclKMdHcFqD2QIRhI0Zhsthoa3PR3eXmoftuRatRUlnXQXqqk2uvfoyfXLiEDZv66Oz2oNSIaCQl7W0+3ly9FVl+H4vFht0k4OoegJ56al3NeLrCLFs6B8Hcw9oN24jJAvXV1ajNiZj0cVLStYRDBiZOGIbSFKCu2sPootF0dveza8cO5k7OIyEtkQF/EJPdii6iIBJWIJqtTJwkQ8xHxf4DWK1GJIWKeYvOYNnZZ/Pm88/i8XipaKqmy1XNjkov0ycZicctPPPSB+gUImMmTkbu1GBNTUZlMJORFsDjiWC2GDhQ08j0iWPw+vz0dLTzzpuvk53ixGw1kxEdS2dPIzatip4OLUuLJuD1hihz1VDb20vGMBtt/V6MDhMmnRJV1IAPD1mTcmkorSQ3Lwm70UIs4EBSyogxCb8mhF6txNXRizlDRVg0YLLYKZyTh16tR4xZWTRrCvu2dbDN3UPUEgYCLFh0CZ7uXqr8AunZExk9eQw7t33MmFGj8Qf9iJEQSp0Ng06D0LybPcU1WIw2FM0dWEx2BnxuerxhZHkAXyCOw6InM8/IqKJEqmq6aajqpX+Pl/fe72fqnEwcBjP9IQGFGKOtzcU5F57Lnp07qW9oJiMjicTEXBJTU/j9Tdext2QX9gwdclCBwWBGFCXcnl5Wv/8Wdz36JC9vaeCSxfN5fPsmVOjZUhwhKz2TcFzDlIm5ROQCWqo206uUCanCqAwWjCqRWDiOQhSYPftHbPl4HZJBIhqNEe3qYHFYZlNxLeZkL1ZfJwlmJbu21HP1z35Fm7aH8s0voEqQSUu1YLWr2bxzJy992ElWXjazp8yl6uOKQTFELEpzoA2/EGf4GDur3ylh1uLTsB7YDabJ7N6xB7VSwcjsHHQWAzExSvmBDqbNl5HlOLt2ldLc3MWWnk6yR6WQlZJEWelu1FEbHt9e3J6DCzIPmSgSBEEH/BZY+EWbv6BN/pL2L4p/JXAlQHpGxr/a2/oHfWyOlJmuIAig1kHo4IZOh4qeVb/FPuVavMHoQSsfufoCjDz5lv/uV6lm26u3UpBs+Pf4jhL0rrsN24zrIRLEG4xi1h28qtNQEyVKadD0OlCxCzj3G8VSK6XBRbktmb73rvuv7Z/1VHpuTxN3riils2TXILEU8g3uFPJDPEb1W28w7e03P3sw+N3YJl/7b6NuOf4JKWXkgp+fzX1LCxEF4Tsn/74K38azV902QPZXmFhXvDmY/qaQhv4bsOyqh0AQvlTR9HXxbvlgrm/de19NVv4nYp8Q4q2rbv3G4/gu8V3NE5/iSOGTw2oAACAASURBVJIl36Wq6LtKJzscHG2V3b4pjqSn0tFK+B1t+D49T5/if/k+f5vzhMFk5qwFF1FeU4sYihCLxXh/9fsIkoKklMGUM29XL+OnjcYdV7Bn3X7Gj8jG77URQSLBakFQhQhGomxaV8KVPz6FeVeejj8QQhDU3PSHO5BDlWTanFz9wPM8cu98SkpriRFDbZKYVTQGbGr6G9SMSB5GXW0ZiakpdPT1ElSG8AdD7CmrIq7LYd6ChRSOGMnpy5bw2sr7EDXtqJVLGFU4mlXb2rCla2mr96AQVRSMyCZ5WDozhk1G1JvZvKWUjp4okUgpff1BYnEZo8nI0oXTUEkqyiuqSHQ4OePcy1hw8njy8zPYsmE//3y6HFGQee7FF3nk0WcYMXYsNTtWM+vkizCoVaxqg1ELZiHHd7H1o7VUlKxBUocRhBhbNm7EGB9HWX07waAHQdAQjQZpa2zD7Y8hiPDLO35BeUUtp588HUOikdfWvIxS7ee4STnsLmlAJkqNqxN/0INB42XW7Hko1AJ9ff386JT5aFUSja4udu+s4NXX3kBnMPDYc28jaeMkZpsJBIP0N4RxpGTiyMxC6mtCrdXS1tlOT1c3+bnJnDBiJhu0Tbz97kYuv+p0qsu34wlryUhPp7yqBDluRN3Zy5LFs7nymluQ4/DX+/7EC0//HcyJtLU3sLcsTEGkhxWvrCMciiCqJWYeP55TF19Cv6ubxuY2qvbtIiHZwbiisUyZOpeXVywnO0FDwaTptDXUY3IkM1bdwvqte8lMV2HQKenv66Vs3x4khZLahg5i0SY0kgK72YZCq6XP28U7a7bS3u5CgYLElGE4C3LRatQoRJnJsxcQ9faR0uZiVNEoNq75ELvVicloI9eRQJszRKE2lZ21+xib46DNoydVZWd/MMq47OFs2rmDrPQ0JublU9JZRagP7GotFpOWQFygqaQex6JE9F1mjHqRYc6RvPjKXSgUEuGggvSRo2hyteDtbeJAswG9WktGbgE9HV6i0QECvW0I4QDWhDTyCwpISk5hVf2HTJ2RQVlrMeOTr2D7QB9avR6FUklzSyf1VS2kGzOoqwkQkaOkJmfTrQ0gaEMIati2uYEUkw1ZY2NM4ShiaFGKEjUH6mhsrCIzM4vapjWEwj7wujEkKulp8bMj9BEz585HFEVqy4tZeOIy0lKdlFU08tqunTgtVuKRMFrTR6wv28+SpUXMmbOIzZt3I0sFSEIjkbgbMaRDjmi55aabef/D5ZTt2U9+Vi6FhWNRKpV4BJH+GUWM1LlpLm2iV9VAJKQmfYSOqgNv8eLy9/F5IiRkG8h2JBJRhXniqbfx9g7wzMoHcHcWs3D+mQgCqJSQ7JyCX9vN3x5+hNmzppOUoEczoMcxdhy7GjeQZbFCJE5LTT1WXQGnnHIa8XgMo05NSkqAFpeJ1sYKXM3dzJ+lxpBkx2JSYrabcHV0H/Q7fTiKolwgG/iU/U8D9giCMJlBZj/9M/umAa5P2uf8R/v6Lwouy/I/gH8ATJgw8V8f/1EXDJbMOpKL1p2v/p5JJ984ZOSGKAqg0pI5/8Z/eR/5Q1FS51z/b78dGCQSEjK46frT+L+5eQeNd7SoUwRBoGfT3din/ZKs+Td8abW4oR6vIAgoCyYQqdwxdGqm3paD9gWDnkoXT8ri4klZwMlfuK91/m0QHBgknuQ4U87/Ea9dPoV7NtTywJOboaVyUKkkx8HXz7N3PMqzd3zJmD69bpJyUJmiM7Piz2cxPs2GTa9EEoVv91mQ4yB9c++eg0Gnlr6UpAmEYyDLiLljh7xvWZYHU+tsaUNCQl1w+aAi0apXHfKxCbN/A4KAbgiN6L8jfCfzxLeJb0NVdCwRQ0cjhvIefd1Yh6pUOhihdqikyA/PxL9xLFyLoSC9joXz/Ap8a/OELcEpv7ByFeqEfs6afzlvvreeYEyJFHMgRB3MWbCYSCzE3pKdZKarKKvYj10dQilqGHdCEdZ2BRs3eBgxKh23bzfLn3ib5bzN8fNGUzjpDJa/8CcisRiFI6Zx+6134vZHMNnMCEoRTcxCcXkdv7juT+yQtpCalsu2XcWkO2WUaj2SR4/GqaGuroW77zkDSSlQe6Cafzx3P+5QP3X7WujteoU5c2YxtmAsdXUfc8rck3h/dTkxwYkQidEveOms6UNSgloZIxw0kZebRV9XFeNHjmbj1jeI+tUQc/PGGxtQqXXoFDY27d2CQp3HxKkz2F+6m+eff4O5c6ayZu0OZL2Td5+9n1/deBfhqJfV28rpaOqj/sBmsnPTSDY6CHS5icSDbNpTSTjkR2/QQ0zAr5Xpqg4jIhMOC1x09W0s//utyMR5/IWVtLi8XHzuiXy0fRXuNi37SouZNW8hS+afwcPL7yUhWUncr0KwNBPosvH8yg/paulkYOcaWvxe3P0DWDKVCIKaSFRApVSj0kUoyMkmHAxgc1ho6+ohye7gnNkTmTD/XJ577yPE1jZkOY5RK+JVWzCbTOh1GtIcRgYCET7evhUpEmdSUREDA25uuu12zl5wPFv37sWgVRETJN5bX4ktMZOYDJ5+L7++5gbuufU+apoGmDx1LEaThprafaQ44M23qlm7/iNOXDITb28vZcXbyMnOxC9DhkPBTy89g4f+8Rdk+rDbzBgMamRFHgk2K6FQGARISExgtkZk5Rtv01hfSXp2AZEQxGICcRlESU19cx1Bv0xnu5uIeg/W/EI2ri9h9KhCWkUFMyfkISEwN2c8er2W0VYjao2OguEz0cgyKrOFBJ2FhDQbEww23N5u1AhMLjSxpaIc+6yxaFQq1AYRMa5lxcvP0e/3MGJsDoJORdXWvZw7aRytahVPPv1P/u8XlzIQ68OqTqO0upa0LBtl+2Va25oYP3EikgAXLbuCvz55DyMzx+Jyr8Wa5KO9z4vOZEIRy6YgzYJJp6XR1YwYj3Ggpom0rFQmT3bwyroyFIooQrOCxrYmhufmkpWVQ2PLDlR6HTazjTH5+bi63FSX7cZpM2EUzVhT4+TkTUCn1RL09bOrqoQLzr8aZJm161Ygy2FMWh2C1k4w4GfOgpl0tNZiNhm56LyTkVnGaactpqggH2fGCHbu3ceKVx7E7e3C1x2ipt7HcfMWodUIbNhaj9XWh6u6kVZXB8MNGZg1CkKKMFs+2oVBrycW8zK2YCwN3TKX/uQG/G4/Ha52pg2bid6gQ1JqiMdirFv1MsPzR7C/1sfEaScQjAkEvJ10h4Lsee9h8oal0h8YwO3uRWGS2bJtL1dNXoYkibS1NbBg/iWE4h9x3rkXc/9f7iIspnPSj67i9puuIBAS0KkPXmH5kFcjsiyXAv8q5SMIQgMw8ZMqBW8BPxUE4UUGzefcsiy3CYKwCrhDEATrJ4ctBH7DoeBbqCL1aVnuS1eU8NS5Q+ODkr9oETXvvo31uF9BLPLv6mSixB/v+znXTMv+2gv+o4Ek+hSiKPDPx67jisvvIhyNf86LJRqLH1GlTNvyC0iYsoNndjd+Qt4cPu7+68+5/tp7vzEJd9kvzuSJu5781+8PfjodgFsXDePWRcO+8BhZlglF48gyVLm8XP70TmpXfzCYtiQI/zbw9nSBp4tzLvrT5wN8Ol5BBKUadBYwJZCck8YLV08jxaoZnEQEMOmUKCUR4ZPDDuVcZVkeNJE/AkbyMKiiSbNpv3RMKQsGC5x0PHfREekfoPu964co4DdI0wsOQFbR0IzjO8R3NU8cq4qDz5IF3ydy6LtUFQ1l30f6PL7Ovf0m1d8Ota+jGd+XtLNvgu/LeX6b84QggDMjCyXV9PV5Cfq99LTVEI7IdPeLpKUmo9frOVC1hbBPRKUTkVM1JKXl4vMGqa3tJeb3kWJPYMr0At57qRTicfa2HkCwvMe86VPwDkSZNHYh3f0eFJICnVbDksXnULZ7G139TbS2uBg5fCxmk5mLLruC5554HI3ehMFgIBzxILfF2Ve6H40k8qvfXsXJp15EVcVmFh5/HqcsmoXdkUrp/v0kmadS3RincNw4lKKIJcHE9InHwWSJhx96jN7eLoLhEP6GZiSNhrdXi1SW7kehiCBLMeLRKFdfeylbt4cYV1hEWUUQpSTzu+t/xZ/vu4tJE4dz1mkn8cADm+jrk9m79RVOu/AakpyJ/O7Gq0hOTEQr6dELGjLSbcQ0Onq7O5EiGmLhOP3+IHFfGKNRQ39HGIQ4ggJuv/8Z7FYHgkHLyIl2NIm5xDwhetp3MnLsFAK+ABVVrZy0+AzeXPsqVquVK067gedXPEdTVydZTiVlmjCSFCcrPxPEEEmSnQyng7X7S1DqFTTVFVOYnkJuSjZmg4kafycPvvIuN6UnkmC3M3LcRKLhIK++u5G81GRSnCNJsNlJyRiFq6Uag85GfUsTI3NH0dLagFGvxhdyo9Ia0csxQt4OnMn5KEQJpUpDa0sNF11yERPGjOKqq8/7f/bOOz6O6nr735md2V616tXqkrvce6dX03sP6ZT0EJJQEkJCElrILyQBAgRTQwwGG2Nw77bcm2T13nZXu9q+OzPvH8KUxCbggh3ePP9Y8uyce+/M3ZnPefSc57Bv2w4y7CZ6O6C2qQVPb4Tbf/wr3nntERa/s5ErrriaZUte55Zv/IDmug28sfBFsmwWHFYDiXiEZNhAf8LLzu27mDBpHGoyiRDqYVX1NvRyP5GQj/7uRnKysom270cuyEYfTOB0ZRAyKmxtOcDuXXHGT5nC7FmTCEVjxONxDDqJBAoup4GBYIJIJEBOZhJ/SKXNFyMlpxRRTdIfM6BPzSHdnUcsniAky4ybXoLNZETWG5k69BJMFgsXn3sLSiJJfCBCY0sDUU8voyZNxp3m5lu3fx2TycyEYJTWnl5Ki6vITEthwtgJbN/ZhDU1nXgS9m3YjRiyYTClUJWfRQIdtfUNNBz0kTBHcSRD7NzexIgRJYQHQiSSYXx9IZ57roEMq52clBz63VH6wgMkjT3safQw4Bmgu7eXhJYgGtXIynaRCIZxZ6SQrXPTJ/iYP/NS9JLEok3LGD2mDFX1cvf3byarKJtMp5VgMEJUjZAiGXCnVrFn0yvc/f2b6A8lSURDlJZmIdkKcaVlcP7pM/F5mtm0oRqXyY0oJxAEkXUbV2B1dHBgRz31TU1oCqQ47ETjIXbXNuEypWDQWxD1YRJhPwNKGkX52bR2emjqbKSldTMbl9Xwk3vuBlFA54AByUe/X2P0mNHIosDuDYs457Kb8C7eREmGDllLp7blXURRRnKkEU8kkRSF999byew553Hd5fPZvLWaCVPHEQnLNBzcR0VZBTGzxprFvUd8dv5HokgQhBcZZO9TBUFoA36uadpTR/j4YgZbWdYx2M7yRgBN07yCINwPbPngc/cdMqL7zEjGj77V9GeEKApgtLLw4ad4+srHj4o40DSN3a0BZl75i08aUKsKGMzHxf/oVMElo3L5iiCQMfk2vJsfR9UGNcEnojTo4zhkNnznN3/HDcfYVe6WiUP4AZBy+dP4Xrn5qOM8dG4FTz01BDprP/M5giBglAcJhdFDnGy95zTUn83DPeVOOlb/7rB+PYfIpfruEHcv2c/Kl9+FcP8gATnQB/2ddDbvYvaKxUe9lg8mN0hACcKgqklJgKrgmv4jcGWTXVnCvVeNZGJuCoqq4bLosRh0H67rXwmpwxFxh0r7ogkF0wfX4YifiwbBYD4h5unj71kGHB9j9kOk08ybP39ZpDc4qDLse/mWY57HF41T5j3xBeF4Egcfj/NlbOd+skvQTlRXuWPFsSqGPsu6jodS6WhwIvbxl4Uc+ThOxX15InGy3xPfvuEaXn9jMe3dvUhqBEENEe2PM3X2RESdDg2NVJOBBm8b4XCCVHsKkqojqcWw281cdO7pPLXwn2QWuimodBIOwujSIVwwYwYDPj+/few1qre1093cyvd+/BNEnQ5Z0pGT66a/v4uysjIMJiuaoFCcZWFd0VDKKmzUduxGSrqpq6/nnnt/wS/v/zmLXn4DUZSpb51CdCCCdyCGL9iIoKlUVpSgKgr5WWYSwQj7Ow/w1rIWstOs2KwCkiRjUsDnH2DSiEqyy2YwfvJcZk4Zwc8e/AFVObnkZrq48qpUVr21j80b1zJm8lDe2/ImroxU/vb359FpUfyRKFW5WQQ8/RiUGpq6tlA+Mhe9x4zf50dv0CguLSTU1Y/ocFGQLdHW3YPeamb8qCm8uXw5klUlEdEYVVHM7rpO2lu7SOj0RP1RetoX4Y/mkVpsxiAPoFPS2Lm7hquuPIPrzvoWGzeup27/OiI97XS0HsQmFZOTWo4/0kGBqQyLPYFo0tD0Mi6XCVkRiHbF0dusGESw2OzMS9fTUl+PIR6nfs/7XHnFVaxevABvD5SMyGFkVRmaZCcnvxC9XqO9pxNNElFVlaTLRjg6wLrtu0hzZlCam8bOui7GDiukr3+A8sJUykfIJJOlpNpTqNm9nW219UwcMZSpk/TEBYFv3Pkt9hzYz4bNdegEHRlZeeQXpBOJhGmuqWHFxhpmn3s5W9ev4exzq7CRYPuubfj8QSLR4YiCjqzcfBo69tPToWdk1dDBLlVCGEW0kptmJxYN09DSTvXmVej0ZgoyUkkJNZKRMozGjj7yM1yEeurRYnFMVjsOi0T1ll24rZMpyiuEfB1+n49QLEl3dy/RSAhkM3qDCUkW0QkC4WiMwEA3qipisQVQ1H7y0mUU2YDR7qQ/oWd1dQNJ9SCSIIKQQBJlRGGwq3RLZy8oGvGESk+wBU2U0VSZsy+4hlgkiIiIVa+HQIibrr4USSejJqJcZDWiJQUCoQQicTo8fWTYrRysaSbQU4/qNzC6qpiy9EmYXQYCEZnlKxaSn59Fd58HT30/FoONzdVbQARXWj6qqmG1GclypvPSswtYKK1kxNRirI4UClLS0RmSNDd1sGXtTmZNqmTMiAlElQSa1k1YTlJX28fs6QHS3Cl0t29DL5uJBAbQCankZZcg6WVWvP8eFcOGYjRBaoEVJarx1vsbyS7LoCyvErNRR3VHDTq9zJ79Lbz4j0HOIT87lVe7qrEbzDz4m3sJRRQiYT9mOQWLuQKXq5O+zk7yhxTi0wdJRFW+f/tN9Hq8IIiMnzQBQdVIc+mob+rB09VAINDJkiWPEg9bmHvmlTz/wrNUjXZQ07KMqBTFZbUiS0emgz5L17Mr/8PxIR/7WQO+eYTPPQ08fbhjnwmaxkW3HL7s53iib9WvSJ34bZbs6+LsYUd2Af84NE1jyb4urr7loU+WlJkdNC25B0kUyJ31PaSCYSdo1icPHWsfIXvq7aTMuw/f+5/fk+VokTJ5Lt4N7x+zEkgQhEH1R9OOY5qPIAhs+ON1TL7gx+DMPOo4oiiAqpA9/xF8b3/3sOMYZR3Dcu388ysT4SuHN1/+sPPax6BqkEiqaEBvIMaVf9nEvmUrB/dsMv7JDnGa+pGh+sf/1TTorKWjs5avLP8PZNQhskkn0bjsVzjM8of3SlUHu4ckkiqKqiEIh58zfEC+mOxsefnziRAPh8Ptl6Z160F/ZNnl58Eh0mnhrZ/fFLv4ot+CIHCKW1YdFqfMe4IvNvk6GhLi0/xoDh37siWQn6UL2Ykc93jheK/hWGP9p/kcS/wTQYT+Jxxpvp/ne/Fl++4cCf+N6zyZ74l4ZIDZ08/gB3d/i4MNvdTV1eHx+DCbrJj0NjLT3AQjIVrDbXR21GO2GXFZTAzLS+HduhrGjxxF7579TCotJa1iJht2vEFpnpvc7Hw6Ozr5v+eqqZxwGqAj0LuEgYFOAr46UtzlxBUdkkHmd489QJpZJUCYnNRZRDWBmt11bG+ppyy3hLyiLO6+8z4Wr9jC+s0R4skkY0eMJBZO0ufzMbQ4B8FoRhBlDAaVFZvewek0k9ASJAWBWp+f0sosNF2ItgM99CaTrF2/gyevvwtFVTHoAtx69e2kprqxGCwEAy1UN3VgdCmkGWTqarsx60x4+r1oOjNnjBnO3sZWKkWB9o4u3n5nFRaTnhSrhoaKJMr0eIOY9JCMRehKyPj8SVJMAu0dvTgzjCQiKmlpEmEMVJSUEFPidHb5kGQ96Znn0bLyLRylTra818DX7vw2Xk8T/1i4khuvOpet1f089NfXcIgGbrj+O2S4U9m+aycvPr+Or//iSqo3bkIziegTOvRhA3EiGIwy2XYDgXiC/Q0HaGvvxZhv5cV33qe+ycPWXfeSnl5AWmYOQyw2Fr/zNtdf/038/X66OjvJynCwc89BjHoYOekCauuWE5KiRJQk9a31SLKRdxa/yC2XnUFmagJRzmTLvt2Y0seSnR+hKJAgoonUt0UwWwy8/d7rXHjmxVjseqLRKE89/jtmTB/F0397Cb+vm6z8SpSIRnnlaKKBMFEtgWQQcLqcDARCpKamsnHzewx09pNqk1izpYaJVRU4HDbEOJgMImoyzgsvLKCgII/z50wi7o9hTdHRVrMT0ZFHe3+YmNdLVnYq1TvXsvS9HQiCwKJlS7BY3Nx4y810dO1maOVsapvWMXb4eJx2F3qTGbNeItA/gKZAMJFEFASCPS1EDOlsa4/hdGdSf7CTnLxMNKNGOJ6ktb2DsD9MZm4mJGNIBgOyQUIniZitRkQNgpEwmmTA6+lDQ4deltGbVOZfNBWDpOAbiDIQidDZ68PTH0KWZaLxOJIgIJCkdNhQtCGZdLY1olkzsVpMFBaVMBDwE/SU4ImH6fd1o5ONVFVlMWJ8HnqrhUljzmT/7lqsFgs3XXoJF597LoKQxCDJJFXwB8IMBKOkWjqpqpiN2WRmf42MqGqMGDecYNCPEosxacJ4RIOL6jUBgsEYYUUjv0rPDRfciMfj44bLbuTh1x7GpLMS6EpgdumwZ5iw6sHtdBNLhiksKyUSCaBD5KW/Pkwg2Y9BMKEoCbwhkVhCRRAEnnj8CabNG4Gvcx8XX3ANC99+h5rdK+jx+jj7zNn4+wdwpwwhmUiiCbByZTWaasdsNmEpquD5BW+zduNGli56kmeuPJ9LLp2HwSSze2sz+2rruPy60+ntOY5m1icDSUUF4MlLR57wsXSiAILA1Tc+gO8IahVV1fjZ0hqeuPdPn0yuJT1rXv8lw/P+vduRvmws8f2b0LTrTqkSsmOFSa8bJEb6u1BU7YQoPg6H+sfm4xr/PhnXPU/P89cdU6x9S3/N0NO+RyKpIh+DWXpJxmDp4l13XXFM80HUQV/LMYU43B7TCaD7QKWUn2pm3Y9nw49nH9M4h6CqGnFlkPQRP1AUeUNxbnlxOxv+/g8KZw+SXlf98FYemz8cGCRtDLKI8QjKqYFokoLzHhz0D1ISjD/vR0c3OVH3USmYbBhU+snGwZ8FcfB3VzZPb27i3PJM7CYZvST+x0pXTfv3Mr7GdRuOvttZoGdQvfU/fKnweUrJTrb65kTjZKl7jse4J0pFdqrii75PH++Sd7hr/VlLzk7UtT3efmQn49z/n2E0S1z9telYzGZAxajXkea2EtdElh18nYotFv747FK0ZC9GUcOVLbBqTSfLEu30tdVjmuXiveqduB1uRkx3M2/Wlfz10Uc4bcpYllUnGT5mAjlZLpa89jKSptDtryPT7MRokBAkMzkF6eSoYUKxBJm2XE6fNYqivAq6u1uY0tzNhs07sDllnnrkaeztjbQVV3DV5fNYuXY7vR2tmMwJapqiBLtkzr7gEsLhOOfPu5TVW97GqjdjNlvpHfDSU9OCry1Ib7CfrLRUwrE4e/as5qy5c7j/wVeZPH0a8UiYkK+Dt5a9j6+rB0eug/XVBykoKCTdKmMzQCwZpzfoJxYOs2tvHd6BKMU5+ZhNFnp72jBZnOhlmfzCQjpb6hE0jbDfT0l+Ji2dXQx1O0lzjaXwrJHs3rCBXfVNjBxWTFe/gVisDbvdzarlqymriuHtEDlvfhV2i5mXn1+LIIvs2jcUf1+c8cOm4PX6ef6ZxxkyNBslnE1ObiE/uu/XzJ83k0UL13LFZXPw9HiQgIgxySvvbiAQUdCJAioalrCENXcIY6qGUzVlAqGuBpr7kvz9lX9w0UWzeWvxq4wddxqFJSPx+npQJTeW1DAr3mmnLEePO8WFqqqY3HZ6u6MIosCqzTuYMnk6vQMDvLlwHS7XdgoLhzNh7GS6+voZV17J5t3VtHbWkWZJp2JCOuFwjJE5hby0ZCXzxkxCyzShzx7GWbOG09O+n531B5F0kJ+VjSpYMRkM5KbZ2La9i6gQItFv4eobbuVgXR2vvPYi510wh3WrdpBbnsZ1X/0hd3/nFp5/5AcE9WYsZjNaMIgqaGixBCMqK5F0Gv3pxdz1i5vp6uwkoWlk2nMYPbaQvp4K6hoayM1J49GH/4IgaXz3tkt5d+s+lr+/A4NBxwO//h2xWILGnc0cbA/isupYt3k/kWQNvoHh9HhqUOJ51O3ZSEVZFvXdceaMvxCdkGBK1TBk2UBvdxvd/gQOp52W/dsoKiunubEBRVTxBC0UZJQTDBnRCRq/+MWD/OX/HkaQdCQSCs1t3XT1eBgYCKLXJUgoEmVjpiNKevSyTF/7AVZsWIbZYsFhcvGTH/0MncGEtz+AxWCien8tG7dsQwG27NzD9l0RYpqI1WwhFksgoFFfX0dD7UGGFGVRNKQMpT+MbLSgJBN4/HEQTOgkI/u7ob56BSZ3AZlZBr4/dyZBf5C6lnb0kohe1vHt6+5hv83GMH8vmioMNuMSBAyyTGtbJ/trGxhbVUJnVxBHip6eA53MmF2BryeI3mrj6WcXcuO1FyBJetBM6CUd3u49ZBjaBqs2BlQu+/YZuCxZOJ0SLe1eQp4Ak0fOw+mcjdVsJBJV+cOf3mDxP//MjCllXHfttTy74HUiA37Ou2gG54y8kXBEICX1yBVb/xVE0Zt7O4DjUxryWSCVjSNZs+XD3w+V+2Sd/atBv5hDCgthsFTtqz+6nntOL/uwjOhw6PjbNaRO2kz6Nc/RlQcgnwAAIABJREFU+8Lx91k5mfAs/QnuSbeROvkOfJse/eIGNjtIHNgMHBtRlOU0giCQPuP7H5qOHw0O7c8H7v0b35/9i6OOc/NPvspT9z3xhRJvxwpRFDD+iy9Ptt7E4m9MgW9MIamopM3/Awt+/WcWPGrFu+oBBPHfSbll+7u57IYHPvqOwUflbx//3gniRyqgxGBHxA+ZG00bVER9yOR80HHukOcTgBIc7Fx3SMXUVcd3v/lb/l3D9R/wQXypdAxGsxESUX5y382fW+mWVD5QcFnsn3cG/8MpiGP1GTpVy6WOBYeS/y96bae6quho8WUjFT+uqvsspWtf9NqPZbwjkcL/wxeHSCjG8rfWUXnrHIwGE7IkIEpWDIg4HGbe37SSorwwTnMOzYkIteu66AvWkJtfSmpuCdUNTbhTcojGYuyt2UMwoBFLxNi4cxdlpecQi8cYUpDFvItm0du9B70CghYn1WbEaDYSjptoqvdwyYVnEo8meXfZdvyB1ciyhChJmA0WiguzaTaKbPV2MMQcY9matyjJyUJvlogGE1hMLmIJDyMq86lt6KC7z08slkRURSwuI05bLtt2byasJEl3p2LRG/A2NbN86RJee+UlHM4snn/ycWZOnYw/EWN/805sZjNlaaVs69tKeCBEe1CkP9hN8ZAy/IEQgmRGb7CghSEWTdDd0shll97E1ddcwv89dA99fg1RZyKZiHPpWWfw0tvvUFSYS7cvxgN3/5Rtm1ayTIzgTHNgMZtxJhXKh5cxrHwYCaGbPPcIHnr5Rc4840FqDjZhttnITM9m1bqtXDr/al587q/o1BhWh5ncjHRamiUkg57i4mF4lVTGjD+NndtqETQTyVgQvy9CMq7iyjehihJhbxCj1UEkHGHmvFkcrKkht7CSroEaXLkynR0+LrviatDAa3MQDXURj4Sxx3UEfIvJHj+B1dv2IIkicyaPRU340BttDJ88hzeXLOPxJx7mnHMv4+vfuISKfBvbt67CnTOMIEYmTZlEJNSNI9qKPimT7Nd4ZeMuzj3tTIwmgfXbtuHfuRNTbBKZmSn09ycZPrSM/NzRWA0GFi1fj6YpmA1WjCY3EcnCgdqDTB0/lhSbhQV/f4Ybb/gG4WQbd912PbFYhI6oBZMo4HbaaPP1k2YyEo7ECQUVLC6RkVWjGDVtGj5fAJfDwg03XEnVuEepr2/4wD7EwqNPP09vTy/+5lUo8Rjlo8cxrHIUwVCMwICfvoCHXQf2M3r8FCRZx9aV+6lWakgmE4ydmopoFFmzfj+akqA4u51QIEBxSQ7fveNOcnIKuO7KK3Dm5vHkc8+hE2W+ddNVaGKSrbs2k/S34chzk1SchILd/PSeH/LHR37L1l2tSDqRc+dNZPueOprae0hzOdl7sImp4yv487OPAUlSnHlcdekV1DR2c6Clj9bWDgxWjbOmZ2E1m+jz9BOJxpElGVEAvSwRjYQRkgqxWBRfj49EIkRbYyeSasFoc5FMqpitZjQtDipoqkDT+hX4vV1YoxkUFpXT1dGPzaghxfuYPC4HSRdnIBykJmajL9hHIgnBgRiRYBQtKRKJxRCNRvbUdRMOhth5sA+b2cVdP32E27/7HWIRlUsvPo1gKMLt3/s2A74IklFCJMGYyWfx+tsLSc1JRW8w0dPjQQymkRp3kF+eQmlhCQa9TCKZREPl2ivn8NpzDxJMxPjaFdcz7/T5/OY3D5KfW0Z6dhEIIMtHpoOEI5V7nAoYO3actm7TVrJufIHong1f2Is1FE2SO+NO5PLxJBp2f9Jr6ANy6MCin5NuN3yuZDD/q68wsH0N3k2PnVRV0YnonuYPJxgy806cE2bT+MTFxzX2kZBUVNIm3UbPhseOSQkEMPfh1Wxb8ArezUfnTXUIrgnfBk07pr2qqhruSbdhq5pOy5OXHXWcUw2appEy775BL6XUAnoXfQedKJBUNNKnf++TZZsmG//4851MK0lF1h2fDm+HnnWqNvizpg2WtcUVlYFIkmhCYdxNTw76ISWig8SSpB9UCClJiIcHnwWHCChJD7HwJ0mtf4UggCODkmmTWHvXbCSdeFjyLxBJUDD3R/zyoW/ytcmFn9lw3CQL1ZqmjTvqi/IlwKH3BHzxSfzHxzueJtSnChlxInAy1na8Svq+rHFONXwaUfRppZsnYh5H4wN1NDiRJPL/3hNgsEhaQWEOjz/0GCs372HD2tcwGKzEkipRR4wMk42EoiLpZNJdMtUbazmwv4X8gmFYzHZAJBaPEI2E8PW1c+0Nt7J13buIksaYsSW8tWYzebkuctJciIh0dfhJz0plRPEcBNmAzQRvLF6BXm/g/ffewmZzMWPO2WRlpnP2aeNpbW6lvrGVR//wCCluN8PHFZHqNOMwOQhHI+Slp+MdCCOIKt4+PbNmnUZ9UwsjKgp5d/3LFGUXUlpYxIodK0m0+YnrHdTv2osg6REkI8lEArvRQPGQAtZu3kxvOEhhRjqCouANqYTiEbIyS4gP9KAICYoLs/B4Q4wqTuVAbS/xZJJETMFqlmkf0PB0N/H1b9zOhtdfQc5wQyhGblEaJmsKmsnBjEnTuONHPyboD/DbX/2c1xcuIj0ti3CgF9UcQSdphEJ6pg2vpNsfImfIKFatex+9puOyyy5l645N1Nd50BIeTEY9dT2NTJ46kwULnmfU8LOwG6woYgx/cjeBg3E0DRqaWlDUJElVxezUE42qpBWkoI/IuBwu9tfs5cEHn6T2wC483TtI6PNo2FONyWbg4rMvpV8xYJZVqje+RXZeNtu31rFh2w5MZidDKofScWAnl116MW2d/SQVha7eLh548GEMeh0vvfAP6va/i4KN0cNG0ekJkpVrY/e23cQTCmvWrsdstjFpxtksf/dFLpw/i95uH640gZXvHuArX72G3Xs72by5mnt+eAuKLoV1W/Ygm8yU5xo40LSHb938I2oaW2ntrMPracDjtVK3exVnzp1Cc2+SvoFWCvJyCIX78XtTkURIT01FkGUWLXyZu75zLQORACgSk6bPR9E0Wra/gRr2stfrwuMPk5FloqhyKsGBEMH21bQ19BCRMgmH4kyaNJZEIsmm5a9SMXwitU3dJFHJyMjHaDEhoLBx7Xrsdgc1e3eQSEQZNWYcSlzlO7ffyqNPvozTZSXdJDBh8iQsqRkYTXreevFPuNx2nvz7YjRV5eIrZuI2F7N469sYNI2rT7uUoVWzWfmNG/lDr4dvffN7DB9RyLqN2ynMz6F6Rw1ut4uUFCfRSIhgLIooRpk4PIt99Qlq6ltx2kwUF+cjJpO43G5sFj0mvZHGpkZ27NnBgC9IS2cbakIgGglitlgYN3IEk6ZMJJ4USAo6nBY9q9fuZtSIfPYeOMiGdeuYMXMexSWFqBroJJlNWzajlwQMOgOy0c6B4ADrX/obs04/n77uNkaPHgOaSDwRp629A5PZiCSK7Nu6nhRXDsl4gDmnu3HnTKezW8NkCrHk7U1EYmH6+nz87oHv09EdwZ1iQZB07NhRx5CCVDQNNm/dS3vnAa69/CtkpKfQ3dNDUlXR62Vi8Th9fX1s213HDVddwh+fvw8tGCemSsyZfTl/fux39HR1HDbp+K9QFH31inE8eveGEz6OqmpkXv88iZotoGmDahVRh7VqOnffOIFbJw1BEIQPE87Pm7w2/+lSUiasJmXW3fhW/fI/n3CCoKga0YSCxaA7boSRwyyDTqJ/8woSyfnHTNx8FhwyzU6f9h18Gx85pljv3zkD14JXKLl9IfWPzT/6QI4M6O86JjJOFAUsI6cysH0NSeWSE24O/kVBEAT6lv2MBdtauO22x0ib+zMI+z8kXkrPu5BNP517xOumfuBldLTX9dB5OuHQkAIyYESH3TRY8nU4X6iPjx9JKFgO07r+0DMhoWjcsXAvUwrtfPv+t6C3CQb6qHtrIZlvLTzcpAbL4nQy5A7l5gkFJ6xb4P9wfHGkLmVfdDv2E4kTNYdTYW1Hg+Ol4jle6qovm6roEI6kLvrX46cCjkRkfd5Odp/lPp5K6/5vg6joqBqSi16vRxJ1iGYZyQCuiEpMM7H67d2cdcZkMjIEdjf3M6K8nLqDrXR27WdU1WSad28nOysLu10gL6OQnt5uDNZC0txBNmxt5rQpVXR09qAkDZjlTL5yzVW8uXQrW3buoz8QRKclCUUG8LbWYDaZKK8oJdDTSTLg4Z5Vi5HMTvbu2wIC9HT1IpJHZ4OPV1YvR5RErr/+bJx2B5s3NTFzZiWKqpGdncHeA404bGnUdXURTkRxGlOwVKZwsLmHqoqRtPX20d7VwYQxY9mwbQtCp5WRE2axa9tGXKWFuCICobp6zEY3NkOEnPKhRGJBEqEgKQYBvy9JUtHIy8ygpqUDjyfE5DMvprWpmd///vf86Ed30+ft4sDOatZvr2X01DOYUDSUd1ZswGxx4+3zMGbcDOpq9+MbSGC0y4QUmdzUcUweO5RAdw3RRAcPPngv519xDmXZaSxZ9Tb9XiPjx2URDRXR09lDmStJQ9NeTj9nJu+/+TbT5k1CiEXZtbyTSy64jJ17VxFV4ugtOvSCAVO6jBkJVUhgSJFx6vXMnTufPftqWPX+m2Tk6lm/bi2lRTmUFGWhiDr0OplwPMFFV36FeCyOpC9k8gVX89SjD+NOzWVv/zq6ulUI9tLc0kDp8OnceMtFXDpxIolIAknS09PXRjJagac/wI7tW/EGZOZNG86cswoYOrwSWZLYun4xerdAsj1Ca0ecV99Yyoo3n+a+e3+BwSBw/TcvwmqxEe41k55bQJtkJcU5iRtuvR2TyYDNrmPbxi3Y7VZmz55LxONh15Y9lFWWUpmdxYYNPaTa+3n22TcZN3UORQWF9PZ0cmBPA40dzcSUGG2dzfSE/WxZU0MoEsORWkF3cz0FOS7u+f05WC1mNu0Js6OuFoPoQW+2oxPBYRVo9nbTu/w9kAyk55cwevhQhlYWoaqwfuUqQr4wqWmZaILA5IlnsvidBXzz9rsZNmYcspjAHxpg8+bNzJh3JjFEZKAt1EFl2XhCQR+ORDGRQDP64ADtrV7+1PYi95dUMfHhP1Dm7Sc3N4dNGzdRUlRKR2cHKSk23G4nDU3NFORaCHsjRIJR2tONVBZnkJ2RQiQcIhaNYXeaaG/2UlqZS0efn3XbFhHoCzNiWClmvZ2OHg8YwWo00d15kF8+9g4P/vQJWpp3s2PtZva39bFqYycTK0ZSPqSEESXp5OXbWL+tgUX/eAaLI414XMMoiQT6fbR6mtGbBbpaNyKKdvzd+6gcUsKoKdNpaPGQCPtRCLFnw2okg0pC1GhrdTBydA6yEMRoyWLyxAQb16wlx27j7WVbUYDsnHQmVhkYXmljX70fr8dDekYaxeWl+MMBBI+KpNfjMAj4/EGMeshJddKmj7DwlSdw65x4DF5KcvIJ9HWgqdEjPjv/K4iiCbmD5RgnQglzsCvIhIvv/XfVkE5i0z/vpyTD+m+Jm6ZxVMmcIAhgTYHgyW3koxMFNjV5eL66gz9cPAKr8fhsA8/6h3FPuo30qXd+cSVosgESseMWzrtxOXD0RJFn6U9wT/w2c36/mhXfnXnUcZ7//hwuunYdBbe+TPtTn+r/+F8FnShwZVUetxmtH34PbvrpN/jd+UM/9TxV1T4sxTsej4BDoqDPg7iiHrEU8NBzSS8J/PGSEQBcs/AjH854UuWGF7Zz+7RCljX28btf/n2w9C0ZH1QkKUlo3E7mlO2HAkJmKWNmj2bxt6Z+4Jn0PwLpZOOLSlpPJQLgRBg4f9Fr+7KWn33Z8a/37ct2zQ+3nk9TKZ5ocvrLDKfDgi8aYe+BJhRFYWR5ObsbaimoKiRFV4YolHHahWdTnJePvPhPNO5vRjJIhH1JrLoYI0YNp7gonxVrt2FNScHTdZBxE08jNtBAdm4O6em5DK9ws2HjXjzROAv+uRpJkujr6aa7r5cLz5/H9u27OVDbgs1kJ+xtIyhamDPvLKLJCMFgmOJRhTTubWAgGgdVQlT03PS1b7Ji5TKe+utbjKkazvxLrqK5sx9baACz2YzTYSba4aC3vx2HCTYt30WXp4+qyZUoSScCIuUlxdQ1ddDd60MTVPKKyxk5egxr1yxl3JQJlBbm0tLdRnp+FpoQQaeT8MZ06DWRHq+XkkwbXf5OrEY9hWMLEHQ6lKSGKFpoa9lFdm45p591NhajTJ+nl40HVjJnwlnUNnQgijrmX3wus6dNx2aQ8cSsDMlz8OoLz9Dddx6zRqZhkAXuuPliUA34BwbQ66LcesO1/PW5V0kkVC47ZzJPvrKFrHQHXZ09DJ84jEREJRmz8Ic/Pk1cUXhz/XPIZhGjTcbosCDqFPQOHZE+hXxjLl1eL4GO9XT17iemDGAVSvn5HTezfecBKkvn0N7dQ31rP9npqUiJVroCPSTlNAKNbdx489dp7ukjt7iMquEF7NrpJSMti4P7VnPuxBGIZh05udmseH0P1hwnlsxsDq5aSyIWYfq0crYfXM7EydditxoQkjHGji9n3wGVbHMKXY2t3Hj9eZQWDmH8bC9tHZ2kY8Cu19OsT5BMREhNr8TltqPEfdQ2dOC0WzhrxkR6ez2Up8s8/ca7oEnken289/4mFi9dgyiI5BVXkpHm5p8Ln0dTVNq7fYQCUQYGBtgbrUUTZELhKOGYSqB+LfFggoPxTp587mfYLW7skkZEi6NGk4SiPhJxhaSUIMuewcGGRobk5mKRg7z+xpv0NA1lU8NyTBYbTqeT7o4oV118GipRnClRhg49k16vD6spTEdTK+8sq2bctDm01eyly9tD0giywceEikmcc9nZfOXGS9FbJByuVGZNn42kxLFaHQzJywVNY+Kksfh9fmRJoNfjpbmlA5vNSktnlKFlxQwryScSifC3ZxcQDAvMmF0FmgyiEWeagXAkiqIoRD0GbJYoy5aup6nVh9WWgqe7DU08iPBBnhCKeHn8r8/R3tiMTicwfFgBy9dtwGo3MGZiAWpvOlG1H19/EIfTTXqWlZZmL3l52cSNIVJS3BSkZrN3fwut7X1srd6BlDqEVLeTV957g/54P6nZZnq6O/AP+HDZTDz3+tOYHDbCPUlyc9woyQQjxw5j7IQRvP3OSkYPK+b1hXWUlxcQCoZREkmsJgejy0tpbm9jzeY9lORlUNfYRDypkJ3hRtUERk+eQprbTiwKFotELBqhsaENk8F4xGfnKU0UHSqKm1s2aLIUS6iHNb79PNjc4OWMrz8Jvo6P/Ek+IHCuve0yHr1w2IeqoU9LzI6WtPK8fy/uSbfhOu8RfIvuONplHBM0DVY19fPGE3/njT9otK/8DebDqCQ+L0RRoHfDo6RNug3XtB/gW/ub4zDbT0fvmocGy8/8UdIdR97onwXDL7mEPa+9dkzeQKI4qBDZ8dKraN+ZcdTJ/ezydHBkEN6zETh+RNGJIFs/D6JxhawZ3x0kRwpG4n3llg/n8/G5HSoNO6QgUjUNRdMQOXlzjyXUQfP2o8D6eg9LXljKguvvYmJxCnfPu+8TxzVtkAgLxRSGnHP/oIF3Zy3bFtSSueCVfw+okz56fv0Pn8DxTOJPtprhZBMSJ8pX6GR1QTuVTK2Ptzn2l5EsOJmldacCUXs8DLy/jPviaNDrCdHdp8dl19PSpbF5QysxIca+eBeXnTeXKy69ClEUERBYvn4nqWYJq8UGsTB2lwNZEIkrcdSkSlFuGpWVo+jwhGjrgmgkxIbN6wj0B5BlHXPnnEZOVhZDcu08/9I/mDZ2CjU1u3G6nBRW5OEmE6fLhSIZSWg6xowbT6qxh/f21dDR3IamA1ESKBoxkkgkxpTJcxg/fgrtTY14fX6URIyGxg4qy3MQJCOu9FwK4z5au9oZV1hKtaig+pNEjP2093gI1PlwuVIoyisgI9PEkOw06ltjnH/GWaTnldPUtAVXwkxdVz25WXloCY1J40vYt7OVuBClqTeIzeygIt/IoiWbmDzFzoWzxjEkx0nF8OGYLVay3A40TWHYiJGUdI7h5X/8lUyXnTu+9jueX/Q79C6J2AB89+rLeG3jCoJRPyuWvUpeytWU5mfR1t7Og39+iTvuuIpiewFL3nuJuTOm0dy6i8WrdzGsaAz94RbSXTZc1mHYbDZUTWH5qlU4XA6iARUdOvRmPZUpaXTqwoR6Q7jUdIKaiNFixWAwUFyex+Txw5gzfjI79uwnHI6xe+c7bN1Rj0kwUXzR9eSXjmS028lzLzzETdf8jKVrltPRUIvDlsZl19zAitXL8Xl7UUUD63fXUrO/k5ycbBRF4/TRpaza+AbpTicDEQMmKQ1ZcbHsrT+TlWFn+7Y2Js6Yw6wqB1u2bEdWkgQiCgcONPPM0/eRMySV/PIStm/ew9Q5Z6AJNqqrdxLqb6WipBib1UWOQ8ag03PpGWeyvKaeUCBMWVkFkqTH5Mwmv3QECDosFhurV72BoMXRSToCUZGubh8up0ywvRt/XMDf40FRFDLKXSRCSSqG5jO6oJC+vgHMSStOpx5CBjRNRBQ1Vq1ch6KZyEjLYMSISrbuqkbU7MTlAnQGcKe6UQMd9PW08tSCRciyzJAJZrYdfIOp+lxaGywk5QzOm1PEX/7yEK2NtQiaSHq6k6amTsS4xoP3H0RUdLjMGdx06x18986vsWTxW/zs7l/w28V3o3eYuPPq2+nxeNh/8CC52VkY9BJVIyqxWwz0+lrYV9uCXpYYM3kKNosZUdCRUFWC4SiCqCMRT6DXS+ysbSQQaCU2kMSZb2RoyRREgwGRJMmkigA889IyNEVi1lnXIGgK8XiCyiw961a9iU7OQCeKLHh2PSPHTMEfgaQ1g8zhCkv/+SKZ2VnMrMrjjaUbyEpPw2xUsKZk09LagV6SiQMzx42lu6GHM86/gNWr3icu9eNO0dDJOtypEi2dTShEmX/ZdXztK5eQllNGOFxFljvBvl3v4euHCy88h4amZiAHNRrnzJlVaAgEw1GWvrOMni4H3r4u9makM2fWLKLxBP5AFCUZJxqLE4kfOZ84pYmiQ9B/4BSedckT+N687XOdq2kaO5v9zL7sp59MrD7wGFn/2j1U5thJvepvvPT6Nh69cNgHhw+fkGraYFvvo01XRVHgpru/ztP3/xFV1Y6pzORoS+AEAb47o4jHdTLEQlz0l028862pRz2Pj0PSiYOlNLHwF0JKHOpSV37mXfg2/P6YYq36/kzcr73GsB+8zYHfnnvUcfo2PELqxG9z/Qvbee6aMUcdp2vxj8mccjtJRT1u5WcnkyRKKipZU28HoHXNI59Qsh0ihgb3zOD/fbzMbFBJdHJ9vQY7uh3d+Zf/8p2PTLcPA0EQkHQCDrOIb8V9H46patDUG2Lc5Q8Okmux8EfG3P/DCcF/al//RSXlp4qq6ESaUH+RBMepcj3/Ff8rP/t3fJlVRJ+Gz3Mfj6RGOpaYX2Zk52SRX2CkpqGZpsZOZsyazNtLXkaXZ+XBX99H7cwrONC6lSg2dq2rw5EiM2ncUMLKEKwmBSURZNKEechyFvUtPTT3VJPpNtPR0YbX04vVamP0yGFMHF1JbXMPBw420u/V09nWyIicLCZOnAuSwts/f5MRZQLtzd2Mnj6bcDDMwADo0yyUpaYz5Ky57DhYS15GJYlEEkGSCIdDeD0e1q1ZQ0t7P7PmzMJmNfOXPz/LV755E2oizszpZ7Jx62JGpuajzzKxaV0NljQ4d94UlqxZi9VoQEqoqLLG0m3vEoh6SXO72FNTSzASotA9FH1fLwWZaXS0eunt9dDQWIvL6iQagwnD82hoaSYtJYNYsJFnF+wgy+3Am56Kkp5GKBggOyMDvz9EOOTHoNqo7+znF3/9DrMmjaamtpdUnZO/v7KQ3PIs7v3Zd0jEI8SiUTQ0SoaO5pFf5VPf04Kg02M06WnrrGXRW2sx6FV+9oO72b6vnmC0j5aurXQOyFw+71IcmZVs2b4LS6qFaCCC3iwzpqiEN9eup6spQFqWhChKOF0ptHa2omzdj7c8g1EVwzDqTURFPd7GAHkZxcyYOwedbGLrjlq6vU2kZqRyxa3nMXfsWZDQCAa6uOv++5h/1dX85rc/x2QzEQ33M3LMGNKzCzj7zHn887W/kW0tpDfaTSyhR5WNjKgsY/XGIK2tMa685Q5e/MsjZGecQTymEFc0rAYrmBX27K7F6+lFJ6l0en0YRB+7dteRkl2My2ZFEsOE4goJUUCzZ9KGjr0N2ygZn4UhJDOioph+LUBW9hAEwGCQCCl2FCVOPBInEhrA7XIjm/WIEY1nnn2elo4eauuaWPTeQlrqN2AyG1m7cyd6s0QsmsBTN0A0oZKZm0lHbz8Ceg4c2MacqVNwuW1kurLZVdMGwRC+Zjs2uRUtHkdvMvK9b13Hb//xGP0HZUa4cvE4IdjWi00v0uLro6e9GZPBTKrTiX8giMOcQntbP+lpeqLRBHkZ+bS2NHL3zx+grmYzTy18mFhC4Rvn3kxzh5/GhmYsViuoSS48ayZ1zW0EAn6iEYloMkKgN4QkgEGS0ckKD97/c/LzhmCwGLju2qvRVCuKxYPDaUXVRJQwZOfnEgoFiUUTJKJhDCYjoipRPnwySlLBoDcgiBKaqjJt9oW0tHeTkppFfmk6EexkZNhRVQ29bOS8i29ClnX85W+D3rf9Xj83XX42GUI6er1EaVEq8iaRtu4ukmKSf765AHdKDjV7Grh6zFT8kShbqvfiyDDz0/sfxWA0IkvppFhT8Hp9dPd0IBpFNqxbS33dbqZMGcmfX6kmL20KPd5q2ts8dHSHmDVzPO3treh1qcTjcTRBRFVFotH4YF8gnfypnMYpTRQdmrggCGBLha6Dn+k8z0CMktN++MlkStRRccEFrL9r9kcxPwZ7ih3f1tWo2rXoPuWKCYKApqqoCJ/6ucPhEHHy2/Mqefp+cE+585i8dQRBIBJXMMqfryxFEAQcZplJYoBDAAAdRUlEQVSeFQ+QPv17bHruJThORBF8QJRMuo2Uyce2vs8CQRD44a9u49c/evSYu4SJogB6E92rlwJHTxQdmsOix56BYyCK9JIIOom0836Pb/H3jjrOZ4GqDpKOJ8ofJ+O654nv3wSyAc/a3344zsfN9D8+9r+SjIIgfOAtdHJUNKoG0YSC0/z529drmka8t5Opl5/1uc47tObiDCtIBjqX3PVhZ8VDJJLV8MTnns+XGUeTNJ9s1dB/wqmgFjkRZMTJ6oJ2vMY7Fe7LlxFfVoPuLwqHu24m+X/viVg8QVtLGz2elwkHU+jtdZPmzsCoM5A/Jo8lNa+RkuJGjsc458L55OSYyXSZ8Q3oqKlvIxYRue+hJxg9pgq9ZKSwqBCRBBeWlbFi/RriYR92Z5T6ht1k55TT0uJj+fL3iCWgPxIkw25mWOVYXnplHP/3wM/p6q/DatWjqKCXdXQHBPo7/RTlZSEbRTy+IEbzoDn2zj3daCrMO/d8yoqK8Qdj6PUacTXElg07GDa8koONrXh7Nf5Ru5Ka7S040ow4U3JIcRm48oKzufehPzN5bDm29DK6e7ZTUZBF2Jtg+/YmSGjknd7D7NPm8/Ibf6N8aD69vgSyyU4sFmJ4SQmdvZ2s2XOQnCwnRqOJKTPG8OzzLzBh7vm88farzJw2A6vFQndPhG07qgmKVrLLMpg+soAla99FMqoUjzid1h3vYdKPAa0fTdVhtzpoD/jwdzSSkzucyECAXn8AneYkPzsXp81OfyDAn557leuvns9Lry+luKCAzr5OVmxayqwpNkZUlvLrn/yVp5/4FXarTH1nB7pUPbkZdgwmE9OK5hCKxjBa09m1ZS16s49fPPgH2nr9OC0mRpVXUNfVzMpFr1JaOYGc0gpcjlI2b6mmIqMSf0yjYEgexUNLeeHPj2PU1VORl8/O+oOYMYAhSqFbIBJNEPYNoMR1hGJBzOYUlFgSf08/E0YUsnRNNafPnk4y3Mc7S/5O8ZBS0pwGIok4gqgxbPRQNu9sQFU1+nsjhHqizJkzlT3NIVREhpdVYLE2oWlx3lz0T4p6J1CeP4xRBSm0e9p4d8U6FAEqxo0h02Zj1/aNTB4xnKYeD0U5Y1i17H2GV47E7jLjyMxn05r3kdzZZOWkMil/OKW5Q7jg/EvQiT4Wv/ssra3deBSVksoKbPYUJlUNZa2/m7ycArLTHQRjEWSjwv0P/JoXXniNUCyAMZZkwtxxXFdZRTAUwSLpiGoi+UML8Qf9iA5IJlW6uzsJ+2MUFuYiy0aMskZZRQ6qlGT/gQ6GVk0hZUghTz7zAjfdcCVjJ84jsyOXOdPm8O6a7RTlyfT4vIwfPRyDMUljaztqUiMUjPHM03+kq7OdnLxRTJs5lqysTDyebvKLRpGaloUoyfzhj3+nqLAQJamhJkESVUKeELF4FKvNQnq6GUmQSKoJrFY9B/duJ69iFKqqIAg6RJ2IKApEwiFsZpkbrz+HHTu6SUm1oyoqgVAEk14m4PVwwdVfBVFPeqqTpv1bmDa7kj5PkH8uXk+4w0x9s4Igyuh1JiLhIKPHTICkxr7t9ZSWFBKO9VNeXEA4Gsfhkun3+0lxWGluiaLrbWLehddhttoY4vLT17CPLGs3fYkQE8aX8cyz7xKM78HvjdPX34PTlkZfr5ev3nwNTz3zV6LRJMWlJSQ/5Y/P/zUuub3vDiqCkop62OOhWBLXWb/BNf5blMz57iBJJOr44YO349n0OJ4N/6+9Mw+vqrzz+Oe9+8292ROyAglLIGFREFGQglqkIkrbp9Yu09Gu1lrt1E7HYnVsbdXp5oxjO1rrVGtnqqCoRREVRBCosu8gS4CEkH3PTe5+7zt/3BMamaAGyM298vs8z3lyzvuenHzP75zzfp/z5ve+52HevftKlOo/M2H3bxYCsGJ//YdqMRlD0wby0tqbMQGxF8BP3nIjRMInX9DPFKfNTDDcf0w+DKvFRPOG3wAQOsNj9IfZpFhw21chEuYLT205Z8c9HXdeMQaAnM8/ftbHOrryAdCansBZZmzkjACtz+r6KqUoX7gwNkwyDgxGwo7WmsxP/zbWSeTKoHn9r9/XSdT7PMYzW+hMOpu01gRC0TOKUSSqwdfFk1+aMvBf7v19i43f/e3YyftJKXVWnaLnM72dE/19hrt3OR3xfnlNtJflwegsSkbOle5zef4fh8yRgU7uLAgfFZ/Xi6fVR8X40UwYX4i/24fTlkXLsVa66hsYk1KA1RxhckYWKS43u3fWsvS1raS6Y9nxdqeL2XMuZ3hhKbfcfCNXXVZOQ2Mze47sxOVOIS3VQYrNRKfXg9vpoKO9jYnlZZQWuvnz0hVMmjidrMxU3O4MVr27meNHGqk5cQKzUqAhEIow65JxLFu1gap9tax8fTWRQIAebw+TK8q4cHI5Pq+XLTs2gQrT0OyhYFgRu3ZuIS8nB7czhUsvmUl+8XRyRpRypLqJA/uOU11Ti91uoih/GI5hVoIeP+kOG8v/vJnVr2zDFErF2xFgyqj5vLnlOb79j7fj7fTQ3e4n4AvQ2NGFOSWF/VWNlJaXUlCUTnppFrnFFXz2hq/y3JInmTZ5DKFgIy8tWUxqmotQUDN/7hwK3XUcPrKLnWu3sX7ZDvZsf4mgyYy3oZpurxeX047NaqOzsZtXX9jA1g2vsHzZGoab0inILeXI/k1YrH4umDieutrdrH57C6WFY7AoC56on5COsnHT66x49Y8c272OsLuHmo7j7KiuItuSxdWl07hq8g1YXam40lLxhaKY7Haumj2TgvzxWFwaT7ePjKwspo+fSGF2Drm5aWzZsReH1c3Ui6djS3HRcGwjta2NlIyfzJULFvD2m/vw9kTJc+USCEfo6GokQzXT1dVMO2Hs5hA9nR50qJvurg4qxpZSXdeGLTXEN771Gd7a8CwFZRlgjeDOTCHF4WJkSR4jR5YBVmZcNpfPfeUWIplW9u7dQlaqE42JN9e9S7enBk9XB1/97t1cc91CPL4oR+q87DrYSUNrE6lpGTRU7ieivZSPG8+0iok4I8VUHtxPxfgKwuEQDQ0tjCzNJkQQX0crjXVVuPJcZKS7mTRuBOFIlGGZ6bgc6QSi0NPVjg77aGtrwRtWVIx0YnFaCVo0/hSFyWwiEAwxZUIaaS5NZlYud921CJslSG7GMFSPZkTOMPIdbiyYqTvaiMORxvCCPNJTcmhvaSI7IweLzcH+Q8exuBQ3fu0fWfLM87z+8jKcrjR8/iBFBeW88uZGKsaY2bi9gaYWJ5FQhObmAF5vgMef+AMPPnAPGXljGT/5E0yekolFmVAKRg0vw+5wg9aoaBSbw0VURwl1hlBWmDPzJuZf+y0cLhd2u4MUt4mIDmGzWTl4YD8nGvxEAYvVickMVosZkzIxbWo5LjusWbeP7Jx0INZHkJ7qxmqzkF2Qx7jx48gflo3NZmfU8DzCwSDhSISOpg6iUYhGI4waPQEdDTFqdDH19Qdpqm8h4IPjLSewhG2EwgEcdgsdPUEcdgvpWZm8u3EfV3/5n7E7HIQCEfbUVIKK8rs/rSTbMZV77ltMT1DxzFNvU9NwCHuOndSsLKxWK/fc/x9s2XqEhvq97Ni7DR0NnrbtTOiMor70DmnKnfVD2t55iPoOPxMW3BObDLb3xc9k5o0lP+Pi0sz/9+IZ+ZAX9hSbGWxObrz1t7Sv+7cP3FcpQJ/ZhLi9LP3GdDKffP6ss4og1jETDMcm2jUN8KtQFrOJlo2PkHPJ7Wf9afi+/O+NF5H5X39m5aNPE77xokH9clfvvEDU7DvrY2W6bKAUxZffeVZD2ZqX/5DcGf/EohUH+NW15Wd8nA2LriD7ry+x8r0G5pXnn/Fx4o3WGl8wQtEn7gCtqX/nP3FYzUSjH97B2nd+osFkIEM/oxoe33KcXywY+LWMRGONRZrTekbDMWtavRRdOJnvXFpCKBIlHNQ4bGbpKPoATs32ONdZQ8maBXM2fByGoCXqpNbn+/Cz/oaaJcL5nOk1OdtreSYkQrwSGaUDzJ07k+zsDF7ZtB1bejb5xeXMmFbB4RM+TtTWgydET04mLU0tOJx2bvjs9XR2+5lxYTZBj4/2QAsEjtHcOpF9e1cSjjbh8DmYMiaTQ4eDPProX7n95gVUH9nH2IoxHDlwgLZ2D5+5/gsUDIu9lzisFtZt3MT8BZeyasUr/MuiO2lu9WKxKN6rtuFzefH3BEkrMbPsxT9RMvpCnnn6CZ763yXMv/JKqmqr6OoBkw5QMnYiY21W9lVWU5CbTXN7F7aIn6i3jWyXm5QUC2a3i0njRvH1L1/DsyvfQEebKJ8wl5vvuA6byU40GuEPj/2c4vxyrnK4wWTiylk30NHpoam2mt073qWh2cvIwhz2HD5Es81GD24+d/VkTtTWU1VZh+lyCyabhe//YBHr3lnPggXXsP/AQcaO+xS7D2/luWWrOHSoilSH4s9PPkx3fR2XXjmb797zIGF/mCuvnkRaoZsjVQ7uveNW9hys4aF7f8zN317A1PKx1LZ1gnaxZvUz/OaXv2fNWy/gbesh4vJT1VZLd8hENNxBU3Ubo0fnYAm7wabIKSrlt08/xm23LkJHXbQ3rmXEiBLWbT5Mu6eBnFEZjE3LpSA3m9bWTtJzUjlwcCc5WWW8/tprKL8HX8DL96+dR86cz2MzOXh1cQeXTK2gpT1CXmYGbd5Oak40U+WPULPpBcYVuzh+6DjoIEcON2LPyKeuI0LJ6PHUttSRmZ9La0s313/liyx+9q+YMofhzPTgiQY4Wr2Xy2bNZfaFRax4eyfZYQcvv/U2t3znMtau3YnTbCKYks11Cz+NLS0b79E9WEwWNu3YxsTyCYwrLuLfHnqIxx69j+bGampqe7CaLZQUWPEGR7Jzzy7KSicxsTSPEy11hFtrWLLmLYar0TR21BIJhXj+2Se5bPoEQGG128jMSCGqfXi7TrBl/QqO1NRS7MrgnUO7yRhRQKu3jV/c/yOCmX6ckWLe3bOP2dcuwBNoJxRVWJQJvw6y8t31vLfxIFZbGlF/J6FoF7nZGZjMMK6sgrrWHsaNKWXx/T/hWOURxpaNYeP6Ndz1kweZN28Wnh4fVbUnCPYEaO8qYnJ5KhdNstHR1YXT6WLPvv2kDRvJlJzhBPw+nG4XqekjyMvLBhQBc5jxky4kEvIT6PaRnZdLZlY6PfZjmHHh93RjstiwoOjp6WbVqsVMKcvnyPEmLr54BsWFFVw8YThudyqRSAin1UwoGqK9K8jLb27jmitm4nRY8fu6CYYi+IMRqmsOs2l7JcGwnZycNAoL8tm4/h0unmMlZE7luoWfYMPadSxZ+jKH39uM3emEcCcmf5gd26s5Wl3HJ+ddhDklhUX3P4o91MXXbroJT5cfs8XMvf96H3967i1Kxw4najFxvLmDjrZ2bvvaAjJSAixf/Ac2btpFY3MHzpQ0Vu55jrFjJxIMhomEImQX5XFwVyvKXkkwGDlt25kUGUVa61jWjNUO4SBZ029nwrx/iX3tymyl8q2HaN/yO9o2Psz0UVn9voh9lFeqbUtjHU8f9iLb+9/8j/q+1/tyeOpL6YEVP4dIGO9ZZK9orWnqCtDpDREMR+kJRE6bdXU6euf5yZrz4zPW0R/vvPhzAHIv//GHdtSdNTYnEBsedE6OFQmd8a+HI1HG/+BlMJl54oEnziqryGRSoEx84Ru/PuNjfBTO5rPzfdFa0+UL8dr+hpOdRMv+8pOTQ6b+Pv/QB2cRnctOot7sv77P9anH/ygZgsvWHj2jv9/iifXUWy1n1tw+sLqSx795MS6HBZvFhM1iOjlnknB6+ssa6mWoO10Gwsc96ySZrkWik4jX98NItPmITtdmCMmNPxTB5nTR7bXz5S8tZPKkKezetYdXV23F6QxiQpGWmsrEMWXcdvMN3H7r1ykvG0VtzU6CPS10B+pxOTPxhyMEQ2GsZivDRxVSXe9la6WFTlM+193wLZ5evoqcgjIC3R0Efd2EgiF2bVlLlDDVR3fz9COLOXriKPkT3YCmurqJcDSKjoA2K6YWlqK1oqvBh8luoamhie99+0Z2/W0X+w4dp709iMViRiuF2WSCcIRxIzI5fGgfnrYuyiaUE4hoRpcWU1JYhDMlhSUrVvPUK29w0ZRxOG1udu/fQEtDF8eO7Gf+3Onc+eCveGL5TzGbFWarA3dqBnZnCgUlZcy6/Doqjx0nVN+BCkYJeSL4g128s/lVFl49l69883t4vF6amlp5829v48NBOOhjYsVYXn/lGUYWpBCNRDBbrNz7wC/pClsJKc2ad9ejzICCTRuPUuTOpSAvxJ6qA0waP5Jf//S7LF2ylu17K4n0dOJOSSEcTeW1N/+GK62A1IwMjlbVMDKnlGy7nV07q8h2ZHHoYBOmCJiwENRBOus9mFQs62VGeR6XTctHh3ykpaRxiXsEZo/CpsK47YrKuiaysgv41NWXM6Z0NGmpwxiZkcma2gZuufnz7HtvN/f97F7ynBZKR2ShlWJU6WgiEYVyWcnEyvZdh8jIzsCdUUhqThYjiooIhML4Wk7gsrjRNj9lY8bz+pp9vPjULxg/qZCG5g6OHW5k0+Yj7Nj2NnX1zXR7DlJcksJnPvcVjh6vJz09m/rGE3i7PKxdt4Jf/OynPPDYH8nQHUy7oIwcqw2rzcTMq66gpbGTTVuPsHnrXh5+bDGbd1czZtRw5s+YQ0ZBFp0BC3NmX4Wvq5MUm5kLZs5iZEkpxUWl2JWF4w3tpGakEwmGiUTCBLq85Ofl0+Npoq1J40o34Up34TA78HlDBDJ9mM02utq7yMtKJxQNohwQ8gdxWs1MKSjl09PmoKNWQgEvmZnDGJbhwh+KYDErfD09jC4ewZ7te6mqPoSvx8sbqzaw5PmlzLhkInazndq6FtpaPUyqGEvAH+TN1etRyoTVbMHr9TFz+kSKCgsJBwKMq5hI0YiRWM1WQuEwZqUoHzOGSDj2hWx7ago6GmViWRETs4sotWfT7e8hio9oNAo6gi0bLKmZjCsZhs0UocdTzZ133k1dQyOdXT3UNjTwu8f/h3++4zaWL3sWn9/PCyvW4OnuxmSxY7FYqa5uIXdkCVOmlJM3LB+L2YIvGGXnzn20t7Yw+xOzaPJkcve/PsjzLy3nO99bxOzyYsZdMJVoNMqo4YW0NvQwYex0HnnwRwRDUTo6PWiTmf3v7Wf1W+u5cIqZpvY9ZNm7GJbqJNDsp7bZw/2PPEQw2kJdQzMumxWnPcgF465AawUqyoicILs2b8Kdk82kSRfhcLhO23aqoZrz46OglGoGeoCWodYyAHJILr2QfJqTTS+I5niQbHrh7DWP1FrnnisxyYhSygMcHGodA+R8vFfjTbLpheTTnGx64fzULD4hPhEvkk1zsumF5NOcbHrh/NN8Wo9I6KFnWutcpdRWrfW0odbyUUk2vZB8mpNNL4jmeJBseiE5NScgB5Mthsl43ZNNc7LpheTTnGx6QTSfx4hPxIFk05xseiH5NCebXhDNfUmKoWeCIAiCIAiCIAiCIAjC4CMdRYIgCIIgCIIgCIIgCAKQHB1FfxhqAQMk2fRC8mlONr0gmuNBsumF5NScaCRjDEXz4JNseiH5NCebXhDN5yvJGEPRPPgkm15IPs3JphdE80kSejJrQRAEQRAEQRAEQRAEIX4kQ0aRIAiCIAiCIAiCIAiCEAcStqNIKXW1UuqgUqpSKbVoqPUAKKWGK6XWKKXeU0rtU0r9k1GepZRapZQ6bPzMNMqVUuoR4xx2K6WmDqF2s1Jqh1JqubFdqpTaZGheopSyGeV2Y7vSqC8ZIr0ZSqmlSqkDRrxnJHKclVJ3GPfEXqXUs0opR6LFWCn1pFKqSSm1t0/ZgGOqlLrJ2P+wUuqmIdD8a+O+2K2UekkpldGn7i5D80Gl1Kf6lMelPelPb5+6HyqltFIqx9hOiBgnM+IT51y7+MTg6hWfiJ9m8QkBEJ8YBO1J4xPJ5hGGDvGJ+OhNWI84neY+dfHzCa11wi2AGTgCjAJswC6gIgF0FQBTjfVU4BBQAfwKWGSULwJ+aaxfA7wGKOBSYNMQav8B8Ayw3Nh+Dviisf574DvG+q3A7431LwJLhkjv08A3jXUbkJGocQaKgGOAs09sv5poMQZmA1OBvX3KBhRTIAs4avzMNNYz46x5HmAx1n/ZR3OF0VbYgVKjDTHHsz3pT69RPhx4A6gGchIpxsm6xPO6DlCX+ET89IpPnHud4hPiEx+bJZ7XdYC6xCfiozVpPMLQID4RP70J6xGn02yUx9Un4voADCA4M4A3+mzfBdw11Lr60bkMuAo4CBQYZQXAQWP9ceBLffY/uV+cdRYDq4ErgeXGjdTS5wE5GW/j5pthrFuM/VSc9aYZDaU6pTwh40ysYa8xHkSLEeNPJWKMgZJTGsoBxRT4EvB4n/L37RcPzafUfRb4i7H+vnaiN87xbk/60wssBS4Aqvh7w54wMU7GJd7X9Sx0ik8Mjl7xicHT+r42bKAxHYo2rL92t0+d+MR5usT7up6FTvGJc681qTzC+JviE3HSe0pdwnnE6TQTZ59I1KFnvQ9KLyeMsoTBSO+bAmwC8rTW9QDGz2HGbolyHg8DdwJRYzsb6NBah/vRdVKzUd9p7B9PRgHNwFNGeut/K6VcJGictda1wG+A40A9sZhtI7Fj3MtAY5oo93QvXyfWiw4JqlkptRCo1VrvOqUqIfUmEQkfJ/GJQUV8In6ITwwy4hODRsLHSXxi0EgqjzD0iE8MDQnvETA0PpGoHUWqnzIddxWnQSnlBl4Avq+17vqgXfspi+t5KKWuBZq01tv6Fvezq/4IdfHCQizd7jGt9RSgh1ga4+kYUs3GONxPE0tRLARcwPwP0JQIMf4wTqcxYbQrpe4GwsBfeov62W1INSulUoC7gXv7q+6nLKFinOAkdJzEJwYd8YmhJ+HbMPGJ856EjpP4xKCSVB4B4hMMgfZk8AgYOp9I1I6iE8TG4PVSDNQNkZb3oZSyEmvU/6K1ftEoblRKFRj1BUCTUZ4I53EZsFApVQUsJpYu+jCQoZSy9KPrpGajPh1oi6dgQ8MJrfUmY3spscY+UeM8FzimtW7WWoeAF4GZJHaMexloTIc61kBscjbgWuAftJFP+QHahlLzaGKGv8t4BouB7Uqp/A/QlRAxTgISNk7iE3FBfCJ+iE8MLuITg0fCxkl8YtBJNo8A8Ym4xjuJPAKGyCcStaNoCzBWxWZ5txGboOvlIdaEUkoBfwTe01r/e5+ql4GbjPWbiI017i2/0ZiN/FKgszctL15ore/SWhdrrUuIxfEtrfU/AGuA60+jufdcrjf2j2sPr9a6AahRSo0zij4J7Cdx43wcuFQplWLcI716EzbGfRhoTN8A5imlMo3/fMwzyuKGUupq4EfAQq21t0/Vy8AXVewrEKXAWGAzQ9ieaK33aK2Haa1LjGfwBLEJLBtI4BgnCeIT5wjxibggPhFHxCcEA/GJc0Sy+UQSegSIT8StDUsmj4Ah9Ak9gAmN4rkQm8H7ELEZxu8eaj2GplnEUrZ2AzuN5Rpi40FXA4eNn1nG/gr4L+Mc9gDThlj/5fz9KwWjiN34lcDzgN0odxjblUb9qCHSeiGw1Yj1X4nN1p6wcQbuAw4Ae4H/ITZbfkLFGHiW2JjnELEG5htnElNiY3krjeVrQ6C5ktiY295n8Pd99r/b0HwQmN+nPC7tSX96T6mv4u+TzyVEjJN5idd1HaAm8Yn4aRWfOPcaxSfEJz5WS7yu6wA1iU/ER2dSeYShQ3wiPnoT1iNOp/mU+iri4BPKOIggCIIgCIIgCIIgCIJwnpOoQ88EQRAEQRAEQRAEQRCEOCMdRYIgCIIgCIIgCIIgCAIgHUWCIAiCIAiCIAiCIAiCgXQUCYIgCIIgCIIgCIIgCIB0FAmCIAiCIAiCIAiCIAgG0lEkCIIgCIIgCIIgCIIgANJRJAiCIAiCIAiCIAiCIBhIR5EgCIIgCIIgCIIgCIIAwP8BVOM/9kWw3tcAAAAASUVORK5CYII=\n\"\n>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Overall-quality\">Overall quality<a class=\"anchor-link\" href=\"#Overall-quality\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[20]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">scores</span> <span class=\"o\">=</span> <span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">evaluate_generator</span><span class=\"p\">(</span><span class=\"n\">test_generator</span><span class=\"p\">)</span>\n<span class=\"n\">metrics</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">iou_score</span><span class=\"p\">]</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Loss: </span><span class=\"si\">{:.5}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">scores</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]))</span>\n<span class=\"k\">for</span> <span class=\"n\">metric</span><span class=\"p\">,</span> <span class=\"n\">value</span> <span class=\"ow\">in</span> <span class=\"nb\">zip</span><span class=\"p\">(</span><span class=\"n\">metrics</span><span class=\"p\">,</span> <span class=\"n\">scores</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:]):</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;mean </span><span class=\"si\">{}</span><span class=\"s2\">: </span><span class=\"si\">{:.5}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">metric</span><span class=\"o\">.</span><span class=\"vm\">__name__</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">))</span>  \n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>Loss: 0.53856\nmean iou_score: 0.56187\n</pre>\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Adding-TTA-(test-time-augmentation)\">Adding TTA (test time augmentation)<a class=\"anchor-link\" href=\"#Adding-TTA-(test-time-augmentation)\">&#182;</a></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[37]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">tta_wrapper</span> <span class=\"k\">import</span> <span class=\"n\">tta_segmentation</span>\n<span class=\"kn\">from</span> <span class=\"nn\">keras.models</span> <span class=\"k\">import</span> <span class=\"n\">load_model</span>\n<span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">load_model</span><span class=\"p\">(</span><span class=\"s1\">&#39;./weights/road_crop.efficientnetb0imgsize.h5&#39;</span><span class=\"p\">,</span> \n                   <span class=\"n\">custom_objects</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;binary_crossentropy + jaccard_loss&#39;</span><span class=\"p\">:</span> <span class=\"n\">bce_jaccard_loss</span><span class=\"p\">,</span>\n                                   <span class=\"s1\">&#39;iou_score&#39;</span><span class=\"p\">:</span> <span class=\"n\">iou_score</span><span class=\"p\">})</span>\n<span class=\"n\">tta_model</span> <span class=\"o\">=</span> <span class=\"n\">tta_segmentation</span><span class=\"p\">(</span><span class=\"n\">model</span><span class=\"p\">,</span> <span class=\"n\">h_flip</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">merge</span><span class=\"o\">=</span><span class=\"s1\">&#39;mean&#39;</span><span class=\"p\">)</span>\n<span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"n\">optimizer</span> <span class=\"o\">=</span> <span class=\"n\">Adam</span><span class=\"p\">(),</span> <span class=\"n\">loss</span><span class=\"o\">=</span><span class=\"n\">bce_jaccard_loss</span><span class=\"p\">,</span> <span class=\"n\">metrics</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">iou_score</span><span class=\"p\">])</span>\n<span class=\"n\">scores</span> <span class=\"o\">=</span> <span class=\"n\">tta_model</span><span class=\"o\">.</span><span class=\"n\">evaluate_generator</span><span class=\"p\">(</span><span class=\"n\">test_generator</span><span class=\"p\">)</span>\n<span class=\"n\">metrics</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">iou_score</span><span class=\"p\">]</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Loss: </span><span class=\"si\">{:.5}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">scores</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]))</span>\n<span class=\"k\">for</span> <span class=\"n\">metric</span><span class=\"p\">,</span> <span class=\"n\">value</span> <span class=\"ow\">in</span> <span class=\"nb\">zip</span><span class=\"p\">(</span><span class=\"n\">metrics</span><span class=\"p\">,</span> <span class=\"n\">scores</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:]):</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;mean </span><span class=\"si\">{}</span><span class=\"s2\">: </span><span class=\"si\">{:.5}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">metric</span><span class=\"o\">.</span><span class=\"vm\">__name__</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">))</span> \n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>Loss: 0.53727\nmean iou_score: 0.56024\n</pre>\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"By-adjusting-threshold-you-can-further-improve-your-score\">By adjusting threshold you can further improve your score<a class=\"anchor-link\" href=\"#By-adjusting-threshold-you-can-further-improve-your-score\">&#182;</a></h3>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[54]:</div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">draw_get_best_threshold</span><span class=\"p\">(</span><span class=\"n\">ious</span><span class=\"p\">,</span> <span class=\"n\">thresholds</span><span class=\"p\">):</span>\n    <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">    Returns threshold_best, iou_best</span>\n<span class=\"sd\">    &quot;&quot;&quot;</span>\n    <span class=\"n\">threshold_best_index</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">argmax</span><span class=\"p\">(</span><span class=\"n\">ious</span><span class=\"p\">)</span> \n    <span class=\"n\">iou_best</span> <span class=\"o\">=</span> <span class=\"n\">ious</span><span class=\"p\">[</span><span class=\"n\">threshold_best_index</span><span class=\"p\">]</span>\n    <span class=\"n\">threshold_best</span> <span class=\"o\">=</span> <span class=\"n\">thresholds</span><span class=\"p\">[</span><span class=\"n\">threshold_best_index</span><span class=\"p\">]</span>\n\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">thresholds</span><span class=\"p\">,</span> <span class=\"n\">ious</span><span class=\"p\">)</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">threshold_best</span><span class=\"p\">,</span> <span class=\"n\">iou_best</span><span class=\"p\">,</span> <span class=\"s2\">&quot;xr&quot;</span><span class=\"p\">,</span> <span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s2\">&quot;Best threshold&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">xlabel</span><span class=\"p\">(</span><span class=\"s2\">&quot;Threshold&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">ylabel</span><span class=\"p\">(</span><span class=\"s2\">&quot;IoU&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">title</span><span class=\"p\">(</span><span class=\"s2\">&quot;Threshold vs IoU (</span><span class=\"si\">{}</span><span class=\"s2\">, </span><span class=\"si\">{}</span><span class=\"s2\">)&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">threshold_best</span><span class=\"p\">,</span> <span class=\"n\">iou_best</span><span class=\"p\">))</span>\n    <span class=\"n\">plt</span><span class=\"o\">.</span><span class=\"n\">legend</span><span class=\"p\">()</span>\n    <span class=\"k\">return</span> <span class=\"n\">threshold_best</span><span class=\"p\">,</span> <span class=\"n\">iou_best</span>\n\n<span class=\"n\">preds</span> <span class=\"o\">=</span> <span class=\"p\">[]</span>\n<span class=\"n\">y_val</span> <span class=\"o\">=</span> <span class=\"p\">[]</span>\n<span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"p\">(</span><span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"n\">test_generator</span><span class=\"o\">.</span><span class=\"fm\">__len__</span><span class=\"p\">())):</span>\n    <span class=\"n\">Xtest</span><span class=\"p\">,</span> <span class=\"n\">y_test</span>  <span class=\"o\">=</span> <span class=\"n\">test_generator</span><span class=\"o\">.</span><span class=\"fm\">__getitem__</span><span class=\"p\">(</span><span class=\"n\">i</span><span class=\"p\">)</span>\n    <span class=\"n\">preds</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"n\">tta_model</span><span class=\"o\">.</span><span class=\"n\">predict</span><span class=\"p\">(</span><span class=\"n\">Xtest</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"mi\">1472</span><span class=\"p\">,</span> <span class=\"mi\">1472</span><span class=\"p\">))</span>\n    <span class=\"n\">y_val</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"n\">y_test</span><span class=\"p\">)</span>\n<span class=\"n\">preds</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">stack</span><span class=\"p\">(</span><span class=\"n\">preds</span><span class=\"p\">,</span> <span class=\"n\">axis</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"n\">y_val</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">stack</span><span class=\"p\">(</span><span class=\"n\">y_val</span><span class=\"p\">,</span> <span class=\"n\">axis</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n\n<span class=\"n\">thresholds</span> <span class=\"o\">=</span> <span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">linspace</span><span class=\"p\">(</span><span class=\"mf\">0.1</span><span class=\"p\">,</span> <span class=\"mf\">0.9</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">))</span>\n<span class=\"n\">ious</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span><span class=\"p\">([</span><span class=\"n\">iou_metric_batch</span><span class=\"p\">(</span><span class=\"n\">y_val</span><span class=\"p\">,</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">int32</span><span class=\"p\">(</span><span class=\"n\">preds</span> <span class=\"o\">&gt;</span> <span class=\"n\">threshold</span><span class=\"p\">))</span> <span class=\"k\">for</span> <span class=\"n\">threshold</span> <span class=\"ow\">in</span> <span class=\"p\">(</span><span class=\"n\">thresholds</span><span class=\"p\">)])</span>\n\n<span class=\"n\">best_threshold</span><span class=\"p\">,</span> <span class=\"n\">best_iou</span> <span class=\"o\">=</span> <span class=\"n\">draw_get_best_threshold</span><span class=\"p\">(</span><span class=\"n\">ious</span><span class=\"p\">,</span> <span class=\"n\">thresholds</span><span class=\"p\">)</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"></div>\n\n\n\n\n<div class=\"output_png output_subarea \">\n<img src=\"data:image/png;base64,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\n\"\n>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n    </div>\n  </div>\n</body>\n\n \n\n\n</html>\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Segmentation pipeline/segmentation pipeline.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# ## Install libraries first\n# \n# Be sure  keras with tensorflow installed\n# `!conda install -c conda-forge keras`\n# \n\n\nget_ipython().system('pip install git+https://github.com/qubvel/efficientnet')\nget_ipython().system('pip install git+https://github.com/qubvel/classification_models.git')\nget_ipython().system('pip install git+https://github.com/qubvel/segmentation_models')\nget_ipython().system('pip install -U git+https://github.com/albu/albumentations')\nget_ipython().system('pip install tta-wrapper')\n\n# ## Defining data generator\n\nimport matplotlib.pyplot as plt\nimport os\nimport tensorflow as tf\nfrom keras.utils import Sequence\nfrom skimage.io import imread\nfrom sklearn.utils import shuffle\n\ntf.logging.set_verbosity(tf.logging.ERROR)\nget_ipython().run_line_magic('load_ext', 'autoreload')\nget_ipython().run_line_magic('autoreload', '2')\nget_ipython().run_line_magic('matplotlib', 'inline')\nfrom albumentations import (Blur, Compose, HorizontalFlip, HueSaturationValue,\n                            IAAEmboss, IAASharpen, JpegCompression, OneOf,\n                            RandomBrightness, RandomBrightnessContrast,\n                            RandomContrast, RandomCrop, RandomGamma,\n                            RandomRotate90, RGBShift, ShiftScaleRotate,\n                            Transpose, VerticalFlip, ElasticTransform, GridDistortion, OpticalDistortion)\n\nimport albumentations as albu\nfrom albumentations import Resize\n\n\nclass DataGeneratorFolder(Sequence):\n    def __init__(self, root_dir=r'../data/val_test', image_folder='img/', mask_folder='masks/',\n                 batch_size=1, image_size=768, nb_y_features=1,\n                 augmentation=None,\n                 suffle=True):\n        self.image_filenames = os.listdir(os.path.join(root_dir, image_folder))\n        self.mask_names = os.listdir(os.path.join(root_dir, mask_folder))\n        self.batch_size = batch_size\n        self.currentIndex = 0\n        self.augmentation = augmentation\n        self.image_size = image_size\n        self.nb_y_features = nb_y_features\n        self.indexes = None\n        self.suffle = suffle\n\n    def __len__(self):\n        \"\"\"\n        Calculates size of batch\n        \"\"\"\n        return int(np.ceil(len(self.image_filenames) / (self.batch_size)))\n\n    def on_epoch_end(self):\n        \"\"\"Updates indexes after each epoch\"\"\"\n        if self.suffle == True:\n            self.image_filenames, self.mask_names = shuffle(self.image_filenames, self.mask_names)\n\n    def read_image_mask(self, image_name, mask_name):\n        return imread(image_name) / 255, (imread(mask_name, as_gray=True) > 0).astype(np.int8)\n\n    def __getitem__(self, index):\n        \"\"\"\n        Generate one batch of data\n        \n        \"\"\"\n        # Generate indexes of the batch\n        data_index_min = int(index * self.batch_size)\n        data_index_max = int(min((index + 1) * self.batch_size, len(self.image_filenames)))\n\n        indexes = self.image_filenames[data_index_min:data_index_max]\n\n        this_batch_size = len(indexes)  # The last batch can be smaller than the others\n\n        # Defining dataset\n        X = np.empty((this_batch_size, self.image_size, self.image_size, 3), dtype=np.float32)\n        y = np.empty((this_batch_size, self.image_size, self.image_size, self.nb_y_features), dtype=np.uint8)\n\n        for i, sample_index in enumerate(indexes):\n\n            X_sample, y_sample = self.read_image_mask(self.image_filenames[index * self.batch_size + i],\n                                                      self.mask_names[index * self.batch_size + i])\n\n            # if augmentation is defined, we assume its a train set\n            if self.augmentation is not None:\n\n                # Augmentation code\n                augmented = self.augmentation(self.image_size)(image=X_sample, mask=y_sample)\n                image_augm = augmented['image']\n                mask_augm = augmented['mask'].reshape(self.image_size, self.image_size, self.nb_y_features)\n                X[i, ...] = np.clip(image_augm, a_min=0, a_max=1)\n                y[i, ...] = mask_augm\n\n            # if augmentation isnt defined, we assume its a test set. \n            # Because test images can have different sizes we resize it to be divisable by 32\n            elif self.augmentation is None and self.batch_size == 1:\n                X_sample, y_sample = self.read_image_mask(self.image_filenames[index * 1 + i],\n                                                          self.mask_names[index * 1 + i])\n                augmented = Resize(height=(X_sample.shape[0] // 32) * 32, width=(X_sample.shape[1] // 32) * 32)(\n                    image=X_sample, mask=y_sample)\n                X_sample, y_sample = augmented['image'], augmented['mask']\n\n                return X_sample.reshape(1, X_sample.shape[0], X_sample.shape[1], 3).astype(\n                    np.float32), y_sample.reshape(1, X_sample.shape[0], X_sample.shape[1], self.nb_y_features).astype(\n                    np.uint8)\n\n        return X, y\n\n\n# ## Data augmentation - albumentations\n\n\ndef aug_with_crop(image_size=256, crop_prob=1):\n    return Compose([\n        RandomCrop(width=image_size, height=image_size, p=crop_prob),\n        HorizontalFlip(p=0.5),\n        VerticalFlip(p=0.5),\n        RandomRotate90(p=0.5),\n        Transpose(p=0.5),\n        ShiftScaleRotate(shift_limit=0.01, scale_limit=0.04, rotate_limit=0, p=0.25),\n        RandomBrightnessContrast(p=0.5),\n        RandomGamma(p=0.25),\n        IAAEmboss(p=0.25),\n        Blur(p=0.01, blur_limit=3),\n        OneOf([\n            ElasticTransform(p=0.5, alpha=120, sigma=120 * 0.05, alpha_affine=120 * 0.03),\n            GridDistortion(p=0.5),\n            OpticalDistortion(p=1, distort_limit=2, shift_limit=0.5)\n        ], p=0.8)\n    ], p=1)\n\n\ntest_generator = DataGeneratorFolder(root_dir='./data/road_segmentation_ideal/training',\n                                     image_folder='input/',\n                                     mask_folder='output/',\n                                     batch_size=1,\n                                     nb_y_features=1, augmentation=aug_with_crop)\nXtest, ytest = test_generator.__getitem__(0)\nplt.imshow(Xtest[0])\nplt.show()\nplt.imshow(ytest[0, :, :, 0])\nplt.show()\n\n# setting generators\ntest_generator = DataGeneratorFolder(root_dir='./data/road_segmentation_ideal/training',\n                                     image_folder='input/',\n                                     mask_folder='output/',\n                                     batch_size=1, augmentation=aug_with_crop,\n                                     nb_y_features=1, augmentation=True)\n\ntrain_generator = DataGeneratorFolder(root_dir='./data/road_segmentation_ideal/training',\n                                      image_folder='input/',\n                                      mask_folder='output/',\n                                      augmentation=aug_with_crop,\n                                      batch_size=4,\n                                      image_size=512,\n                                      nb_y_features=1, augmentation=True)\n\n# ## Callbacks\n\n\nfrom keras.callbacks import ModelCheckpoint, ReduceLROnPlateau, EarlyStopping, TensorBoard\n\n# reduces learning rate on plateau\nlr_reducer = ReduceLROnPlateau(factor=0.1,\n                               cooldown=10,\n                               patience=10, verbose=1,\n                               min_lr=0.1e-5)\nmode_autosave = ModelCheckpoint(\"./weights/road_crop.efficientnetb0imgsize.h5\", monitor='val_iou_score',\n                                mode='max', save_best_only=True, verbose=1, period=10)\n\n# stop learining as metric on validatopn stop increasing\nearly_stopping = EarlyStopping(patience=10, verbose=1, mode='auto')\n\n# tensorboard for monitoring logs\ntensorboard = TensorBoard(log_dir='./logs/tenboard', histogram_freq=0,\n                          write_graph=True, write_images=False)\n\ncallbacks = [mode_autosave, lr_reducer, tensorboard, early_stopping]\n\nfrom segmentation_models import Unet\nfrom keras.optimizers import Adam\nfrom segmentation_models.losses import bce_jaccard_loss, bce_dice_loss\nfrom segmentation_models.metrics import iou_score\n\n\ndef plot_training_history(history):\n    \"\"\"\n    Plots model training history \n    \"\"\"\n    fig, (ax_loss, ax_acc) = plt.subplots(1, 2, figsize=(15, 5))\n    ax_loss.plot(history.epoch, history.history[\"loss\"], label=\"Train loss\")\n    ax_loss.plot(history.epoch, history.history[\"val_loss\"], label=\"Validation loss\")\n    ax_loss.legend()\n    ax_acc.plot(history.epoch, history.history[\"iou_score\"], label=\"Train iou\")\n    ax_acc.plot(history.epoch, history.history[\"val_iou_score\"], label=\"Validation iou\")\n    ax_acc.legend()\n\n\nmodel = Unet(backbone_name='efficientnetb0', encoder_weights='imagenet', encoder_freeze=False)\nmodel.compile(optimizer=Adam(),\n              loss=bce_jaccard_loss, metrics=[iou_score])\n\nhistory = model.fit_generator(train_generator, shuffle=True,\n                              epochs=50, workers=4, use_multiprocessing=True,\n                              validation_data=test_generator,\n                              verbose=1, callbacks=callbacks)\n# plotting history\nplot_training_history(history)\n\n\n# ## Inference and model quality  check\n\n# #### Single image\n\ndef iou_metric(y_true_in, y_pred_in):\n    labels = y_true_in\n    y_pred = y_pred_in\n\n    temp1 = np.histogram2d(labels.flatten(), y_pred.flatten(), bins=([0, 0.5, 1], [0, 0.5, 1]))\n\n    intersection = temp1[0]\n\n    area_true = np.histogram(labels, bins=[0, 0.5, 1])[0]\n    area_pred = np.histogram(y_pred, bins=[0, 0.5, 1])[0]\n    area_true = np.expand_dims(area_true, -1)\n    area_pred = np.expand_dims(area_pred, 0)\n\n    # Compute union\n    union = area_true + area_pred - intersection\n\n    # Exclude background from the analysis\n    intersection = intersection[1:, 1:]\n    intersection[intersection == 0] = 1e-9\n\n    union = union[1:, 1:]\n    union[union == 0] = 1e-9\n\n    iou = intersection / union\n    return iou\n\n\ndef plot_mask_gt_image(mask, groud_truth, img):\n    fig, axs = plt.subplots(1, 3, figsize=(20, 10))\n    axs[0].imshow(mask, cmap=\"Blues\")\n    axs[1].imshow(groud_truth, cmap=\"Blues\")\n    axs[2].imshow(img)\n    plt.show()\n\n\ndef iou_metric_batch(y_true_in, y_pred_in):\n    y_pred_in = y_pred_in\n    batch_size = y_true_in.shape[0]\n    metric = []\n    for batch in range(batch_size):\n        value = iou_metric(y_true_in[batch], y_pred_in[batch])\n        metric.append(value)\n    return np.mean(metric)\n\n\n# to get single image and prediction quality\nXtest, y_test = test_generator.__getitem__(1)\npredicted = model.predict(np.expand_dims(Xtest[0], axis=0)).reshape(1472, 1472)\nprint('IOU', iou_metric(y_test[0].reshape(1472, 1472), predicted))\n\nplot_mask_gt_image(predicted, y_test.squeeze(0).squeeze(-1), Xtest.squeeze(0))\n\n# ## Overall quality\n\n\nscores = model.evaluate_generator(test_generator)\nmetrics = [iou_score]\nprint(\"Loss: {:.5}\".format(scores[0]))\nfor metric, value in zip(metrics, scores[1:]):\n    print(\"mean {}: {:.5}\".format(metric.__name__, value))\n\n# ## Adding TTA (test time augmentation)\n\nfrom tta_wrapper import tta_segmentation\nfrom keras.models import load_model\n\nmodel = load_model('./weights/road_crop.efficientnetb0imgsize.h5',\n                   custom_objects={'binary_crossentropy + jaccard_loss': bce_jaccard_loss,\n                                   'iou_score': iou_score})\ntta_model = tta_segmentation(model, h_flip=True, merge='mean').compile(optimizer=Adam(), loss=bce_jaccard_loss,\n                                                                       metrics=[iou_score])\nscores = tta_model.evaluate_generator(test_generator)\nmetrics = [iou_score]\nprint(\"Loss: {:.5}\".format(scores[0]))\nfor metric, value in zip(metrics, scores[1:]):\n    print(\"mean {}: {:.5}\".format(metric.__name__, value))\n\n\n# ### By adjusting threshold you can further improve your score\n\n\ndef draw_get_best_threshold(ious, thresholds):\n    \"\"\"\n    Returns threshold_best, iou_best\n    \"\"\"\n    threshold_best_index = np.argmax(ious)\n    iou_best = ious[threshold_best_index]\n    threshold_best = thresholds[threshold_best_index]\n\n    plt.plot(thresholds, ious)\n    plt.plot(threshold_best, iou_best, \"xr\", label=\"Best threshold\")\n    plt.xlabel(\"Threshold\")\n    plt.ylabel(\"IoU\")\n    plt.title(\"Threshold vs IoU ({}, {})\".format(threshold_best, iou_best))\n    plt.legend()\n    return threshold_best, iou_best\n\n\npreds = []\ny_val = []\nfor i in (range(0, test_generator.__len__())):\n    Xtest, y_test = test_generator.__getitem__(i)\n    preds.append(tta_model.predict(Xtest).reshape(1472, 1472))\n    y_val.append(y_test)\npreds = np.stack(preds, axis=0)\ny_val = np.stack(y_val, axis=0)\n\nthresholds = list(np.linspace(0.1, 0.9, 10))\nious = np.array([iou_metric_batch(y_val, np.int32(preds > threshold)) for threshold in (thresholds)])\n\nbest_threshold, best_iou = draw_get_best_threshold(ious, thresholds)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Segmentation pipeline/weights/.gitkeep",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/.gitignore",
    "content": "# internal and data folders\ninput/\nmodel_weights/\n\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n*.csv\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n*.rar\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n*.swp\n*.pyc\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*,cover\n.hypothesis/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n#Ipython Notebook\n.ipynb_checkpoints\n\n*.h5\n/hengs models/\n/.idea/\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/README.md",
    "content": "# Severstal-Steel-Defect-Detection\nCan you detect and classify defects in steel? Segmentation in Pytorch\nhttps://www.kaggle.com/c/severstal-steel-defect-detection/overview\n\n31 place solution\n\nProject structure:\n * **common_blocks** - classes and functions for training\n    - **dataloader.py** - dataloader of competition data    \n    - **metric.py** - function with metric functions\n    - **training_helper.py** - main class for training with cross validation or train_test_split\n    - **utils.py** - useful utils for logs, model loading, mask transformation\n    - **losses.py** - different segmentation losses\n    - **optimizers.py** - SOTA optimizers\n* **configs**\n   - **train_params.py** (in development)\n   1. **isDebug - then is True, pipelines finishes to work in minutes (useful for code testing)\n   2. **unet_encoder** - you can specify unet encoder (resnet, resnext, se-resnext are available)\n   3. **crop_image_size** - if specified will train on crops, othwerwise on full image size\n   4. **attention_type** - will add scse blocks to decoder\n   5. **path, folder** - paths to competition data\n   \n* **train.py** - main code for training\n* **inference.py** (TODO - currently in kaggle kernels)\n\n\n**SOLUTION**\n\n**Team - [ods.ai] stainless**\n\n- Insaf Ashrapov\n- Igor Krashenyi\n- Pavel Pleskov\n- Anton Zakharenkov\n- Nikolai Popov\n\n**Models** \nWe tried almost every type of model from qubvel`s segmentation model library - unet, fpn, pspnet with different encoders from resnet to senet152. FPN with se-resnext50 outperformed other models. Lighter models like resnet34 performed aren't well enough but were useful in the final blend. Se-resnext101 possibly could perform much better with more time training, but we didn’t test that.\n\n**Augmentations and Preprocessing**\nFrom **Albumentations** library:\nHflip, VFlip, RandomBrightnessContrast – training speed was not to fast so these basic augmentations performed well enough. In addition, we used big crops for training or/and finetuning on the full image size, because attention blocks in image tasks rely on the same input size for the training and inference phase.\n\n**Training**\n- We used both pure pytorch and Catalyst framework for training.\n- Losses: bce and bce with dice performed quite well, but lovasz loss dramatically outperformed them in terms of validation and public score. However, combining with classification model bce with dice gave a better result, that could be because Lovasz helped the model to filter out false-positive masks. Focal loss performed quite poor due to not very good labeling.\n- Optimizer: Adam with RAdam. LookAHead, Over900 didn’t work well to use.\n- Crops with a mask, BalanceClassSampler with upsampler mode from catalyst significantly increased training speed.\n\n- We tried own classification model (resnet34 with CBAM) by setting the goal to improve f1 for each class. The optimal threshold was disappointingly unstable but we reached averaged f1 95.1+. As a result, Cheng`s classification was used.\n\n- Validation: kfold with 10 folds. Despite the shake-up – local, public and private correlated surprisingly good.\n\n- Pseudolabing; We did two rounds of pseudo labeling by training on the best public submit and validating on the out of fold. It didn’t work for the third time but gave us a huge improvement.\n\n- Postprocessing: filling holes, removing the small mask by the threshold. We tried to remove small objects by connected components with no improvements.\n\n- Hardware: bunch of nvidia cards\n\n**Ensembling**\nSimple segmentation models averaging with different encoders, both FPN and Unet applied to images classified having a mask. One of the unchosen submit could give as 16th place.\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/classification_pytorch_dummy.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"classification pytorch.ipynb\n\nAutomatically generated by Colaboratory.\n\nOriginal file is located at\n    https://colab.research.google.com/drive/137kv2KGkMfqJf70XUlKDDlYraF_R26Ve\n\"\"\"\n\nfrom google.colab import files\nfiles.upload()\n#kaggle json upload\n\n!pip install -q kaggle\n!pip install -U git+https://github.com/albu/albumentations1\n!mkdir -p ~/.kaggle\n!cp kaggle.json ~/.kaggle/\n!kaggle competitions download -c severstal-steel-defect-detection\n!unzip train_images.zip -d train_images\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport warnings \nwarnings.filterwarnings('ignore')\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nimport cv2\nimport os.path as osp\nimport time\nimport torch\nimport torch.nn as nn\nimport torch.optim as optim \nfrom torch.optim import lr_scheduler\nfrom torch.utils.data import Dataset, DataLoader\nfrom torchvision import transforms, models\nfrom sklearn.model_selection import train_test_split\nfrom tqdm import tqdm_notebook as tqdm\nfrom PIL import Image\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\n\nimport matplotlib.pyplot as plt\n\n# now we train a binary classifier to check whether one image is defective or not \nTRAINVAL_ANNOT = \"train.csv.zip\"\nTRAINVAL_IMAGE_ROOT = \"train_images\"\n\nfrom albumentations import (HorizontalFlip, ShiftScaleRotate, Normalize, CropNonEmptyMaskIfExists, Resize, Compose,RandomCrop,\n                            RandomBrightnessContrast, VerticalFlip, RandomBrightness, RandomContrast)\nfrom albumentations.pytorch import ToTensor\n\n# Commented out IPython magic to ensure Python compatibility.\nfrom sklearn.model_selection import StratifiedKFold, KFold\n\ndef get_annot(annot_path):\n    trainval_annot = pd.read_csv(TRAINVAL_ANNOT)\n    trainval_annot['ImageId'] = trainval_annot['ImageId_ClassId'].apply(lambda x: x.split(\"_\")[0])\n    trainval_annot['ClassId'] = trainval_annot['ImageId_ClassId'].apply(lambda x: x.split(\"_\")[1])\n    trainval_annot['HasMask'] = trainval_annot['EncodedPixels'].notnull().astype('int')\n    trainval_annot = trainval_annot[['ImageId', 'ClassId', 'HasMask']].groupby(['ImageId', 'ClassId']).max().unstack().sort_index(axis=1).reset_index()\n    trainval_annot.columns = ['ImageId', '1', '2', '3', '4']\n    kfold = KFold(10, shuffle=True,\n                          random_state=69)  # StratifiedKFold(total_folds, shuffle=True, random_state=69)\n    train_idx, val_idx = list(kfold.split(trainval_annot))[0]  # , df[\"defects\"]\n    train_annot, val_annot = trainval_annot.iloc[train_idx], trainval_annot.iloc[val_idx]\n    #train_annot, val_annot = train_test_split(trainval_annot, test_size=0.10)\n    print(\"{}/{} images for train/val.\".format(len(train_annot), len(val_annot)))\n    return {\"train\": train_annot, \"val\": val_annot}\n\ndef prev_get_transform(phase):\n    list_transforms = []\n    if phase == \"train\":\n          list_transforms.extend(\n              [RandomCrop(256, 1024, p=1),\n                HorizontalFlip(p=0.5),\n                VerticalFlip(p=0.5),\n                RandomBrightnessContrast(p=0.1, brightness_limit=0.1, contrast_limit=0.1)\n                ])\n\n    list_transforms.extend(\n        [\n            Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], p=1),\n            ToTensor()\n        ]\n    )\n    list_trfms = Compose(list_transforms)\n    return list_trfms\n\ndef get_transform(phase):\n    list_transform = []\n    if phase == 'train':\n        list_transform.extend([\n            transforms.Resize((256, 256+128)),\n            transforms.RandomHorizontalFlip(p=0.5),\n            transforms.RandomVerticalFlip(p=0.5),\n            transforms.ToTensor(),\n            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n        ])\n    else:\n        list_transform.extend([\n            transforms.Resize((256, 256+128)),\n            # transforms.CenterCrop(224),\n            transforms.ToTensor(),\n            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n        ])\n    return transforms.Compose(list_transform)\n\ndef criterion(logit, truth, weight=None):\n    batch_size,num_class = logit.shape\n    assert(logit.shape==truth.shape)\n\n    loss = F.binary_cross_entropy_with_logits(logit, truth, reduction='none')\n\n    if weight is None:\n        loss = loss.mean()\n\n    else:\n        pos = (truth>0.5).float()\n        neg = (truth<0.5).float()\n        pos_sum = pos.sum().item() + 1e-12\n        neg_sum = neg.sum().item() + 1e-12\n        loss = (weight[1]*pos*loss/pos_sum + weight[0]*neg*loss/neg_sum).sum()\n        #raise NotImplementedError\n\n    return loss\n\nclass SteelDataset(Dataset):\n    def __init__(self, annot, image_folder, phase):\n        self.annot = annot\n        self.image_folder = image_folder\n        self.phase = phase\n        self.transform = get_transform(phase)\n        \n    def __getitem__(self, index):\n        row = self.annot.iloc[index, :]\n        image_path = osp.join(self.image_folder, row['ImageId'])\n        target = torch.tensor([row['1'], row['2'], row['3'], row['4']], dtype=float)\n        image = Image.open(image_path)\n        image = self.transform(image)\n        return image, target\n    \n    def __len__(self):\n        return len(self.annot)\n    \n    \ndef get_dataloader(annot, image_folder, phase, batch_size=16, num_workers=4):\n    dataset = SteelDataset(annot, image_folder, phase)\n    return DataLoader(dataset, batch_size=batch_size, num_workers=num_workers)\n\ndef get_model(model_name):\n    model = ResidualNet('ImageNet', 50, 4, 'cbam')\n    # model = models.__dict__[model_name]()\n    # if model_name.startswith(\"resnet\"):\n    #     in_features = model.fc.in_features\n    #     model.fc = nn.Linear(in_features, 4)\n    # else:\n    #     raise KeyError(\"Only support resnet!\")\n    return model\n\nclass Trainer:\n    def __init__(self,  model_name=\"resnet34\", pretrained=False, epochs=1):\n        self.lr = 5e-4\n        self.threshold = 0.5\n        self.best_acc = 0.0\n        self.device = torch.device(\"cuda:0\")\n        self.model_path = \"/content/drive/My Drive/weights/model_resne50.pth\"\n        self.pretrained = pretrained\n        self.pretrained_model_path = osp.join(\"../input/severstal-binary-classifier/\", self.model_path)\n        self.num_epochs = epochs\n        self.annot_path = TRAINVAL_ANNOT\n        self.image_folder = TRAINVAL_IMAGE_ROOT\n        self.phases = ['train', 'val']\n        self.batch_sizes = {'train': 16, 'val': 16}#\n        self.model = get_model(model_name).to(self.device)\n        # self.optimizer = optim.SGD(self.model.parameters(), lr=self.lr, momentum=0.9, weight_decay=5e-4)\n        self.optimizer = optim.Adam(self.model.parameters(), lr=self.lr)\n        self.scheduler = lr_scheduler.StepLR(self.optimizer, step_size=5, gamma=0.5) #ReduceLROnPlateau(self.optimizer, factor=0.9, mode=\"min\", patience=3, verbose=True)\n        self.criterion = criterion#nn.CrossEntropyLoss()\n        self.annots = get_annot(self.annot_path)\n        self.dataloaders = {phase: get_dataloader(self.annots[phase], self.image_folder, \n                                phase, self.batch_sizes[phase]) for phase in self.phases}\n        self.losses = {phase: [] for phase in self.phases}\n        self.accuracies = {phase: [] for phase in self.phases}\n        \n    def forward(self, inputs, targets):   \n        inputs = inputs.to(self.device, dtype=torch.float)\n        targets = targets.to(self.device, dtype=torch.float)\n        outputs = self.model(inputs)\n        #targets = targets.unsqueeze(1).float()\n        loss = self.criterion(outputs, targets)\n        return loss, outputs\n        \n    def iterate(self, epoch, phase):\n        start = time.time()\n        print(\"Epoch: {} | Phase: {}\".format(epoch, phase))\n        self.model.train(phase == 'train')\n        dataloader = self.dataloaders[phase]\n        running_loss = 0.0\n        running_corrects = 0\n        self.optimizer.zero_grad()\n        tk = tqdm(dataloader, total=len(dataloader))\n        torch.set_grad_enabled(phase == 'train')\n        for idx, batch in enumerate(tk):\n            inputs, targets = batch\n            loss, outputs = self.forward(inputs, targets)\n            if phase == 'train':\n                loss.backward()\n                self.optimizer.step()\n                self.optimizer.zero_grad()\n            preds = (torch.sigmoid(outputs) > self.threshold).reshape_as(targets).int().cpu()\n            running_corrects += (preds == targets.int()).sum().item()\n            running_loss += loss.item() * inputs.size(0)\n            tk.set_postfix(loss=running_loss / ((idx+1) * self.batch_sizes[phase]), running_corrects=running_corrects/(4*self.batch_sizes[phase]*(idx+1)))\n            tk.update()\n        torch.set_grad_enabled(phase == 'train')\n        \n        dataset_size = len(dataloader.dataset)\n        running_loss /= dataset_size\n        running_acc = running_corrects/ (dataset_size*4)\n        self.losses[phase].append(running_loss)\n        self.accuracies[phase].append(running_acc)\n        end  = time.time()\n        time_elapsed = int(end - start)\n        print(\"Finished in {} mins and {} secs, loss: {:.3f}, acc: {:.3f}%\".format(\n            time_elapsed // 60, time_elapsed % 60, running_loss, running_acc * 100))\n        return running_acc\n        \n    def save_model(self, epoch):\n        state = {\n            \"epoch\": epoch,\n            \"best_acc\": self.best_acc, \n            \"state_dict\": self.model.state_dict(),\n            \"optimizer_state_dict\": self.optimizer.state_dict()\n        }\n        print(\"****** Find new optimal model, saving to disk ******\")\n        torch.save(state, self.model_path)\n        return \n    \n    def summary(self):\n        print(\"Training finished. Best val acc: {:.3f}%\".format(self.best_acc))\n        fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 8))\n        len_x = len(self.losses['train'])\n        ax1.plot(range(len_x), self.losses['train'], label=\"train loss\")\n        ax1.plot(range(len_x), self.losses['val'], label=\"val loss\")\n        #ax1.title(\"loss curve\");   ax1.xlabel(\"epoch\");   ax1.ylabel(\"loss\")\n        ax2.plot(range(len_x), self.accuracies['train'], label='train acc')\n        ax2.plot(range(len_x), self.accuracies['val'], label='val acc')\n        #ax2.title(\"accuracy curve\");  ax2.xlabel(\"epoch\");  ax2.ylabel(\"accuracy\")\n        plt.show()\n    \n    def start(self):\n        resume_epoch = 0\n        if self.pretrained or osp.exists(self.model_path):\n            state = torch.load(self.pretrained_model_path) if self.pretrained else torch.load(self.model_path)\n            resume_epoch = state['epoch'] + 1\n            self.best_acc = state['best_acc']\n            self.optimizer.load_state_dict(state['optimizer_state_dict'])\n            self.model.load_state_dict(state['state_dict'])\n            print(\"Load checkpoint from {}, resume training from {} epoch with best acc {}%\".format(\n                    self.model_path, resume_epoch, self.best_acc * 100))\n            \n        for epoch in range(resume_epoch, self.num_epochs):\n            train_acc = self.iterate(epoch, 'train')\n            self.scheduler.step()\n            val_acc = self.iterate(epoch, 'val')\n            if val_acc > self.best_acc:\n                self.best_acc = val_acc\n                self.save_model(epoch)\n        self.summary()\n# %matplotlib inline\ntrainer = Trainer(\"resnet50\", pretrained=False, epochs = 100)\ntrainer.start()\n\nimport os\nos.listdir('/content/drive/My Drive')\n\nimport torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channel, reduction_ratio=16, num_layers=1):\n        super(ChannelGate, self).__init__()\n        self.gate_activation = gate_activation\n        self.gate_c = nn.Sequential()\n        self.gate_c.add_module( 'flatten', Flatten() )\n        gate_channels = [gate_channel]\n        gate_channels += [gate_channel // reduction_ratio] * num_layers\n        gate_channels += [gate_channel]\n        for i in range( len(gate_channels) - 2 ):\n            self.gate_c.add_module( 'gate_c_fc_%d'%i, nn.Linear(gate_channels[i], gate_channels[i+1]) )\n            self.gate_c.add_module( 'gate_c_bn_%d'%(i+1), nn.BatchNorm1d(gate_channels[i+1]) )\n            self.gate_c.add_module( 'gate_c_relu_%d'%(i+1), nn.ReLU() )\n        self.gate_c.add_module( 'gate_c_fc_final', nn.Linear(gate_channels[-2], gate_channels[-1]) )\n    def forward(self, in_tensor):\n        avg_pool = F.avg_pool2d( in_tensor, in_tensor.size(2), stride=in_tensor.size(2) )\n        return self.gate_c( avg_pool ).unsqueeze(2).unsqueeze(3).expand_as(in_tensor)\n\nclass SpatialGate(nn.Module):\n    def __init__(self, gate_channel, reduction_ratio=16, dilation_conv_num=2, dilation_val=4):\n        super(SpatialGate, self).__init__()\n        self.gate_s = nn.Sequential()\n        self.gate_s.add_module( 'gate_s_conv_reduce0', nn.Conv2d(gate_channel, gate_channel//reduction_ratio, kernel_size=1))\n        self.gate_s.add_module( 'gate_s_bn_reduce0',\tnn.BatchNorm2d(gate_channel//reduction_ratio) )\n        self.gate_s.add_module( 'gate_s_relu_reduce0',nn.ReLU() )\n        for i in range( dilation_conv_num ):\n            self.gate_s.add_module( 'gate_s_conv_di_%d'%i, nn.Conv2d(gate_channel//reduction_ratio, gate_channel//reduction_ratio, kernel_size=3, \\\n\t\t\t\t\t\tpadding=dilation_val, dilation=dilation_val) )\n            self.gate_s.add_module( 'gate_s_bn_di_%d'%i, nn.BatchNorm2d(gate_channel//reduction_ratio) )\n            self.gate_s.add_module( 'gate_s_relu_di_%d'%i, nn.ReLU() )\n        self.gate_s.add_module( 'gate_s_conv_final', nn.Conv2d(gate_channel//reduction_ratio, 1, kernel_size=1) )\n    def forward(self, in_tensor):\n        return self.gate_s( in_tensor ).expand_as(in_tensor)\nclass BAM(nn.Module):\n    def __init__(self, gate_channel):\n        super(BAM, self).__init__()\n        self.channel_att = ChannelGate(gate_channel)\n        self.spatial_att = SpatialGate(gate_channel)\n    def forward(self,in_tensor):\n        att = 1 + F.sigmoid( self.channel_att(in_tensor) * self.spatial_att(in_tensor) )\n        return att * in_tensor\nimport torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass BasicConv(nn.Module):\n    def __init__(self, in_planes, out_planes, kernel_size, stride=1, padding=0, dilation=1, groups=1, relu=True, bn=True, bias=False):\n        super(BasicConv, self).__init__()\n        self.out_channels = out_planes\n        self.conv = nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias)\n        self.bn = nn.BatchNorm2d(out_planes,eps=1e-5, momentum=0.01, affine=True) if bn else None\n        self.relu = nn.ReLU() if relu else None\n\n    def forward(self, x):\n        x = self.conv(x)\n        if self.bn is not None:\n            x = self.bn(x)\n        if self.relu is not None:\n            x = self.relu(x)\n        return x\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\n\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channels, reduction_ratio=16, pool_types=['avg', 'max']):\n        super(ChannelGate, self).__init__()\n        self.gate_channels = gate_channels\n        self.mlp = nn.Sequential(\n            Flatten(),\n            nn.Linear(gate_channels, gate_channels // reduction_ratio),\n            nn.ReLU(),\n            nn.Linear(gate_channels // reduction_ratio, gate_channels)\n            )\n        self.pool_types = pool_types\n    def forward(self, x):\n        channel_att_sum = None\n        for pool_type in self.pool_types:\n            if pool_type=='avg':\n                avg_pool = F.avg_pool2d( x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( avg_pool )\n            elif pool_type=='max':\n                max_pool = F.max_pool2d( x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( max_pool )\n            elif pool_type=='lp':\n                lp_pool = F.lp_pool2d( x, 2, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( lp_pool )\n            elif pool_type=='lse':\n                # LSE pool only\n                lse_pool = logsumexp_2d(x)\n                channel_att_raw = self.mlp( lse_pool )\n\n            if channel_att_sum is None:\n                channel_att_sum = channel_att_raw\n            else:\n                channel_att_sum = channel_att_sum + channel_att_raw\n\n        scale = F.sigmoid( channel_att_sum ).unsqueeze(2).unsqueeze(3).expand_as(x)\n        return x * scale\n\ndef logsumexp_2d(tensor):\n    tensor_flatten = tensor.view(tensor.size(0), tensor.size(1), -1)\n    s, _ = torch.max(tensor_flatten, dim=2, keepdim=True)\n    outputs = s + (tensor_flatten - s).exp().sum(dim=2, keepdim=True).log()\n    return outputs\n\nclass ChannelPool(nn.Module):\n    def forward(self, x):\n        return torch.cat( (torch.max(x,1)[0].unsqueeze(1), torch.mean(x,1).unsqueeze(1)), dim=1 )\n\nclass SpatialGate(nn.Module):\n    def __init__(self):\n        super(SpatialGate, self).__init__()\n        kernel_size = 7\n        self.compress = ChannelPool()\n        self.spatial = BasicConv(2, 1, kernel_size, stride=1, padding=(kernel_size-1) // 2, relu=False)\n    def forward(self, x):\n        x_compress = self.compress(x)\n        x_out = self.spatial(x_compress)\n        scale = F.sigmoid(x_out) # broadcasting\n        return x * scale\n\nclass CBAM(nn.Module):\n    def __init__(self, gate_channels, reduction_ratio=16, pool_types=['avg', 'max'], no_spatial=False):\n        super(CBAM, self).__init__()\n        self.ChannelGate = ChannelGate(gate_channels, reduction_ratio, pool_types)\n        self.no_spatial=no_spatial\n        if not no_spatial:\n            self.SpatialGate = SpatialGate()\n    def forward(self, x):\n        x_out = self.ChannelGate(x)\n        if not self.no_spatial:\n            x_out = self.SpatialGate(x_out)\n        return x_out\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport math\nfrom torch.nn import init\n\n\ndef conv3x3(in_planes, out_planes, stride=1):\n    \"3x3 convolution with padding\"\n    return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,\n                     padding=1, bias=False)\n\nclass BasicBlock(nn.Module):\n    expansion = 1\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(BasicBlock, self).__init__()\n        self.conv1 = conv3x3(inplanes, planes, stride)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv2 = conv3x3(planes, planes)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM( planes, 16 )\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(Bottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,\n                               padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM( planes * 4, 16 )\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\nclass ResNet(nn.Module):\n    def __init__(self, block, layers,  network_type, num_classes, att_type=None):\n        self.inplanes = 64\n        super(ResNet, self).__init__()\n        self.network_type = network_type\n        # different model config between ImageNet and CIFAR \n        if network_type == \"ImageNet\":\n            self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)\n            self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n            self.avgpool = nn.AvgPool2d(7)\n        else:\n            self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False)\n\n        self.bn1 = nn.BatchNorm2d(64)\n        self.relu = nn.ReLU(inplace=True)\n\n        if att_type=='BAM':\n            self.bam1 = BAM(64*block.expansion)\n            self.bam2 = BAM(128*block.expansion)\n            self.bam3 = BAM(256*block.expansion)\n        else:\n            self.bam1, self.bam2, self.bam3 = None, None, None\n\n        self.layer1 = self._make_layer(block, 64,  layers[0], att_type=att_type)\n        self.layer2 = self._make_layer(block, 128, layers[1], stride=2, att_type=att_type)\n        self.layer3 = self._make_layer(block, 256, layers[2], stride=2, att_type=att_type)\n        self.layer4 = self._make_layer(block, 512, layers[3], stride=2, att_type=att_type)\n\n        self.fc = nn.Linear(512 * block.expansion, num_classes)\n\n        init.kaiming_normal(self.fc.weight)\n        for key in self.state_dict():\n            if key.split('.')[-1]==\"weight\":\n                if \"conv\" in key:\n                    init.kaiming_normal(self.state_dict()[key], mode='fan_out')\n                if \"bn\" in key:\n                    if \"SpatialGate\" in key:\n                        self.state_dict()[key][...] = 0\n                    else:\n                        self.state_dict()[key][...] = 1\n            elif key.split(\".\")[-1]=='bias':\n                self.state_dict()[key][...] = 0\n\n    def _make_layer(self, block, planes, blocks, stride=1, att_type=None):\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(self.inplanes, planes * block.expansion,\n                          kernel_size=1, stride=stride, bias=False),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        layers.append(block(self.inplanes, planes, stride, downsample, use_cbam=att_type=='CBAM'))\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(block(self.inplanes, planes, use_cbam=att_type=='CBAM'))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = self.relu(x)\n        if self.network_type == \"ImageNet\":\n            x = self.maxpool(x)\n\n        x = self.layer1(x)\n        if not self.bam1 is None:\n            x = self.bam1(x)\n\n        x = self.layer2(x)\n        if not self.bam2 is None:\n            x = self.bam2(x)\n\n        x = self.layer3(x)\n        if not self.bam3 is None:\n            x = self.bam3(x)\n\n        x = self.layer4(x)\n\n        if self.network_type == \"ImageNet\":\n            x = self.avgpool(x)\n        else:\n            x = F.avg_pool2d(x, 4)\n        x = x.view(x.size(0), -1)\n        x = self.fc(x)\n        return x\n\ndef ResidualNet(network_type, depth, num_classes, att_type):\n\n    assert network_type in [\"ImageNet\", \"CIFAR10\", \"CIFAR100\"], \"network type should be ImageNet or CIFAR10 / CIFAR100\"\n    assert depth in [18, 34, 50, 101], 'network depth should be 18, 34, 50 or 101'\n\n    if depth == 18:\n        model = ResNet(BasicBlock, [2, 2, 2, 2], network_type, num_classes, att_type)\n\n    elif depth == 34:\n        model = ResNet(BasicBlock, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 50:\n        model = ResNet(Bottleneck, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 101:\n        model = ResNet(Bottleneck, [3, 4, 23, 3], network_type, num_classes, att_type)\n\n    return model\n\nfrom google.colab import drive\ndrive.mount('/content/drive')\n\nos.listdir()\n\nimport torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channel, reduction_ratio=16, num_layers=1):\n        super(ChannelGate, self).__init__()\n        self.gate_activation = gate_activation\n        self.gate_c = nn.Sequential()\n        self.gate_c.add_module( 'flatten', Flatten() )\n        gate_channels = [gate_channel]\n        gate_channels += [gate_channel // reduction_ratio] * num_layers\n        gate_channels += [gate_channel]\n        for i in range( len(gate_channels) - 2 ):\n            self.gate_c.add_module( 'gate_c_fc_%d'%i, nn.Linear(gate_channels[i], gate_channels[i+1]) )\n            self.gate_c.add_module( 'gate_c_bn_%d'%(i+1), nn.BatchNorm1d(gate_channels[i+1]) )\n            self.gate_c.add_module( 'gate_c_relu_%d'%(i+1), nn.ReLU() )\n        self.gate_c.add_module( 'gate_c_fc_final', nn.Linear(gate_channels[-2], gate_channels[-1]) )\n    def forward(self, in_tensor):\n        avg_pool = F.avg_pool2d( in_tensor, in_tensor.size(2), stride=in_tensor.size(2) )\n        return self.gate_c( avg_pool ).unsqueeze(2).unsqueeze(3).expand_as(in_tensor)\n\nclass SpatialGate(nn.Module):\n    def __init__(self, gate_channel, reduction_ratio=16, dilation_conv_num=2, dilation_val=4):\n        super(SpatialGate, self).__init__()\n        self.gate_s = nn.Sequential()\n        self.gate_s.add_module( 'gate_s_conv_reduce0', nn.Conv2d(gate_channel, gate_channel//reduction_ratio, kernel_size=1))\n        self.gate_s.add_module( 'gate_s_bn_reduce0',\tnn.BatchNorm2d(gate_channel//reduction_ratio) )\n        self.gate_s.add_module( 'gate_s_relu_reduce0',nn.ReLU() )\n        for i in range( dilation_conv_num ):\n            self.gate_s.add_module( 'gate_s_conv_di_%d'%i, nn.Conv2d(gate_channel//reduction_ratio, gate_channel//reduction_ratio, kernel_size=3, \\\n\t\t\t\t\t\tpadding=dilation_val, dilation=dilation_val) )\n            self.gate_s.add_module( 'gate_s_bn_di_%d'%i, nn.BatchNorm2d(gate_channel//reduction_ratio) )\n            self.gate_s.add_module( 'gate_s_relu_di_%d'%i, nn.ReLU() )\n        self.gate_s.add_module( 'gate_s_conv_final', nn.Conv2d(gate_channel//reduction_ratio, 1, kernel_size=1) )\n    def forward(self, in_tensor):\n        return self.gate_s( in_tensor ).expand_as(in_tensor)\nclass BAM(nn.Module):\n    def __init__(self, gate_channel):\n        super(BAM, self).__init__()\n        self.channel_att = ChannelGate(gate_channel)\n        self.spatial_att = SpatialGate(gate_channel)\n    def forward(self,in_tensor):\n        att = 1 + F.sigmoid( self.channel_att(in_tensor) * self.spatial_att(in_tensor) )\n        return att * in_tensor\nimport torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass BasicConv(nn.Module):\n    def __init__(self, in_planes, out_planes, kernel_size, stride=1, padding=0, dilation=1, groups=1, relu=True, bn=True, bias=False):\n        super(BasicConv, self).__init__()\n        self.out_channels = out_planes\n        self.conv = nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias)\n        self.bn = nn.BatchNorm2d(out_planes,eps=1e-5, momentum=0.01, affine=True) if bn else None\n        self.relu = nn.ReLU() if relu else None\n\n    def forward(self, x):\n        x = self.conv(x)\n        if self.bn is not None:\n            x = self.bn(x)\n        if self.relu is not None:\n            x = self.relu(x)\n        return x\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\n\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channels, reduction_ratio=16, pool_types=['avg', 'max']):\n        super(ChannelGate, self).__init__()\n        self.gate_channels = gate_channels\n        self.mlp = nn.Sequential(\n            Flatten(),\n            nn.Linear(gate_channels, gate_channels // reduction_ratio),\n            nn.ReLU(),\n            nn.Linear(gate_channels // reduction_ratio, gate_channels)\n            )\n        self.pool_types = pool_types\n    def forward(self, x):\n        channel_att_sum = None\n        for pool_type in self.pool_types:\n            if pool_type=='avg':\n                avg_pool = F.avg_pool2d( x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( avg_pool )\n            elif pool_type=='max':\n                max_pool = F.max_pool2d( x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( max_pool )\n            elif pool_type=='lp':\n                lp_pool = F.lp_pool2d( x, 2, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3)))\n                channel_att_raw = self.mlp( lp_pool )\n            elif pool_type=='lse':\n                # LSE pool only\n                lse_pool = logsumexp_2d(x)\n                channel_att_raw = self.mlp( lse_pool )\n\n            if channel_att_sum is None:\n                channel_att_sum = channel_att_raw\n            else:\n                channel_att_sum = channel_att_sum + channel_att_raw\n\n        scale = F.sigmoid( channel_att_sum ).unsqueeze(2).unsqueeze(3).expand_as(x)\n        return x * scale\n\ndef logsumexp_2d(tensor):\n    tensor_flatten = tensor.view(tensor.size(0), tensor.size(1), -1)\n    s, _ = torch.max(tensor_flatten, dim=2, keepdim=True)\n    outputs = s + (tensor_flatten - s).exp().sum(dim=2, keepdim=True).log()\n    return outputs\n\nclass ChannelPool(nn.Module):\n    def forward(self, x):\n        return torch.cat( (torch.max(x,1)[0].unsqueeze(1), torch.mean(x,1).unsqueeze(1)), dim=1 )\n\nclass SpatialGate(nn.Module):\n    def __init__(self):\n        super(SpatialGate, self).__init__()\n        kernel_size = 7\n        self.compress = ChannelPool()\n        self.spatial = BasicConv(2, 1, kernel_size, stride=1, padding=(kernel_size-1) // 2, relu=False)\n    def forward(self, x):\n        x_compress = self.compress(x)\n        x_out = self.spatial(x_compress)\n        scale = F.sigmoid(x_out) # broadcasting\n        return x * scale\n\nclass CBAM(nn.Module):\n    def __init__(self, gate_channels, reduction_ratio=16, pool_types=['avg', 'max'], no_spatial=False):\n        super(CBAM, self).__init__()\n        self.ChannelGate = ChannelGate(gate_channels, reduction_ratio, pool_types)\n        self.no_spatial=no_spatial\n        if not no_spatial:\n            self.SpatialGate = SpatialGate()\n    def forward(self, x):\n        x_out = self.ChannelGate(x)\n        if not self.no_spatial:\n            x_out = self.SpatialGate(x_out)\n        return x_out\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport math\nfrom torch.nn import init\n\n\ndef conv3x3(in_planes, out_planes, stride=1):\n    \"3x3 convolution with padding\"\n    return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,\n                     padding=1, bias=False)\n\nclass BasicBlock(nn.Module):\n    expansion = 1\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(BasicBlock, self).__init__()\n        self.conv1 = conv3x3(inplanes, planes, stride)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv2 = conv3x3(planes, planes)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM( planes, 16 )\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(Bottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,\n                               padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM( planes * 4, 16 )\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\nclass ResNet(nn.Module):\n    def __init__(self, block, layers,  network_type, num_classes, att_type=None):\n        self.inplanes = 64\n        super(ResNet, self).__init__()\n        self.network_type = network_type\n        # different model config between ImageNet and CIFAR \n        if network_type == \"ImageNet\":\n            self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)\n            self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n            self.avgpool = nn.AvgPool2d(7)\n        else:\n            self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False)\n\n        self.bn1 = nn.BatchNorm2d(64)\n        self.relu = nn.ReLU(inplace=True)\n\n        if att_type=='BAM':\n            self.bam1 = BAM(64*block.expansion)\n            self.bam2 = BAM(128*block.expansion)\n            self.bam3 = BAM(256*block.expansion)\n        else:\n            self.bam1, self.bam2, self.bam3 = None, None, None\n\n        self.layer1 = self._make_layer(block, 64,  layers[0], att_type=att_type)\n        self.layer2 = self._make_layer(block, 128, layers[1], stride=2, att_type=att_type)\n        self.layer3 = self._make_layer(block, 256, layers[2], stride=2, att_type=att_type)\n        self.layer4 = self._make_layer(block, 512, layers[3], stride=2, att_type=att_type)\n\n        self.fc = nn.Linear(512 * block.expansion, num_classes)\n\n        init.kaiming_normal(self.fc.weight)\n        for key in self.state_dict():\n            if key.split('.')[-1]==\"weight\":\n                if \"conv\" in key:\n                    init.kaiming_normal(self.state_dict()[key], mode='fan_out')\n                if \"bn\" in key:\n                    if \"SpatialGate\" in key:\n                        self.state_dict()[key][...] = 0\n                    else:\n                        self.state_dict()[key][...] = 1\n            elif key.split(\".\")[-1]=='bias':\n                self.state_dict()[key][...] = 0\n\n    def _make_layer(self, block, planes, blocks, stride=1, att_type=None):\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(self.inplanes, planes * block.expansion,\n                          kernel_size=1, stride=stride, bias=False),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        layers.append(block(self.inplanes, planes, stride, downsample, use_cbam=att_type=='CBAM'))\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(block(self.inplanes, planes, use_cbam=att_type=='CBAM'))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = self.relu(x)\n        if self.network_type == \"ImageNet\":\n            x = self.maxpool(x)\n\n        x = self.layer1(x)\n        if not self.bam1 is None:\n            x = self.bam1(x)\n\n        x = self.layer2(x)\n        if not self.bam2 is None:\n            x = self.bam2(x)\n\n        x = self.layer3(x)\n        if not self.bam3 is None:\n            x = self.bam3(x)\n\n        x = self.layer4(x)\n\n        if self.network_type == \"ImageNet\":\n            x = self.avgpool(x)\n        else:\n            x = F.avg_pool2d(x, 4)\n        x = x.view(x.size(0), -1)\n        x = self.fc(x)\n        return x\n\ndef ResidualNet(network_type, depth, num_classes, att_type):\n\n    assert network_type in [\"ImageNet\", \"CIFAR10\", \"CIFAR100\"], \"network type should be ImageNet or CIFAR10 / CIFAR100\"\n    assert depth in [18, 34, 50, 101], 'network depth should be 18, 34, 50 or 101'\n\n    if depth == 18:\n        model = ResNet(BasicBlock, [2, 2, 2, 2], network_type, num_classes, att_type)\n\n    elif depth == 34:\n        model = ResNet(BasicBlock, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 50:\n        model = ResNet(Bottleneck, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 101:\n        model = ResNet(Bottleneck, [3, 4, 23, 3], network_type, num_classes, att_type)\n\n    return model\n\nResidualNet('CIFAR100', 34, 4, 'cbam')\n\n# # Pre-trained weights: https://github.com/facebookresearch/WSL-Images\n# # Apex: https://github.com/NVIDIA/apex\n# # Borrowed a lot from abhishek, so give him an upvote: https://www.kaggle.com/abhishek/very-simple-pytorch-training-0-59\n\n# # Parameters\n\n# lr = 2e-5\n# img_size = 224\n# batch_size = 32\n# n_epochs = 10\n# n_freeze = 1\n# classes = (0, 1, 2, 3)\n# coef = [0.5, 1.5, 2.5, 3.5]\n\n    \n# # Libraries\n\n# import torch\n# import os\n# import gc\n# import sys\n# import cv2\n# import subprocess\n# import numpy as np\n# import pandas as pd\n# from tqdm import tqdm\n# from albumentations import Compose, RandomBrightnessContrast, ShiftScaleRotate\n# from albumentations.pytorch import ToTensor\n# from torch.utils.data import Dataset\n# from torchvision.models.resnet import ResNet, Bottleneck\n# import torch.optim as optim\n\n# # Install Apex for mixed precision\n\n# print('Starting Apex installation ...')\n\n# FNULL = open(os.devnull, 'w')\n# process = subprocess.Popen(\n#     'pip install -v --no-cache-dir --global-option=\"--cpp_ext\" --global-option=\"--cuda_ext\" ../input/nvidia-apex/apex/apex',\n#     shell=True, \n#     stdout=FNULL, stderr=subprocess.STDOUT)\n# process.wait()\n\n# if process.returncode==0:\n#     print('Apex successfully installed')\n    \n# from apex import amp\n\n# # Functions\n\n\n# class RetinopathyDatasetTrain(Dataset):\n#     def __init__(self, csv_file, transform=None):\n#         self.data = pd.read_csv(csv_file)\n#         self.transform = transform\n\n#     def __len__(self):\n#         return len(self.data)\n\n#     def __getitem__(self, idx):\n#         img_name = os.path.join('../input/aptospreprocessed224x/train_images_processed_224x/train_images_processed_224x/', self.data.loc[idx, 'id_code'] + '.png.png') # typo\n#         im = cv2.imread(img_name)\n#         label = torch.tensor(self.data.loc[idx, 'diagnosis'])\n#         if self.transform:\n#             augmented = self.transform(image=im)\n#             im = augmented['image']\n#         return {'image': im, 'labels': label}\n    \n# class RetinopathyDatasetTest(Dataset):\n#     def __init__(self, csv_file, transform=None):\n#         self.data = pd.read_csv(csv_file)\n#         self.transform = transform\n\n#     def __len__(self):\n#         return len(self.data)\n\n#     def __getitem__(self, idx):\n#         img_name = os.path.join('../input/aptos2019-blindness-detection/test_images', self.data.loc[idx, 'id_code'] + '.png')\n#         im = cv2.imread(img_name)\n#         im = circle_crop(im)\n#         im = cv2.resize(im, (img_size, img_size))\n#         if self.transform:\n#             augmented = self.transform(image=im)\n#             im = augmented['image']\n#         return {'image': im}\n    \n# def _resnext(path, block, layers, pretrained, progress, **kwargs):\n#     model = ResNet(block, layers, **kwargs)\n#     model.load_state_dict(torch.load(path))\n#     return model\n\n# def resnext101_32x16d_wsl(path, progress=True, **kwargs):\n#     \"\"\"Constructs a ResNeXt-101 32x16 model pre-trained on weakly-supervised data\n#     and finetuned on ImageNet from Figure 5 in\n#     `\"Exploring the Limits of Weakly Supervised Pretraining\" <https://arxiv.org/abs/1805.00932>`_\n#     Args:\n#         progress (bool): If True, displays a progress bar of the download to stderr.\n#     \"\"\"\n#     kwargs['groups'] = 32\n#     kwargs['width_per_group'] = 16\n#     return _resnext(path, Bottleneck, [3, 4, 23, 3], True, progress, **kwargs)\n\n# def train_model(model,  n_epochs, classification=True):  \n    \n#     for epoch in range(n_epochs):         \n#         if epoch == n_freeze:                \n#             for param in model.parameters():\n#                 param.requires_grad = True                \n#         tr_loss = 0        \n#         counter = 0\n#         model.train()\n#         print('Epoch {}/{}'.format(epoch, n_epochs - 1))\n#         print('-' * 10)        \n#         for step, batch in enumerate(train_data_loader):\n#             if classification:\n#                 inputs = batch[\"image\"]\n#                 labels = batch[\"labels\"]\n#                 inputs = inputs.to(device, dtype=torch.float)\n#                 labels = labels.to(device, dtype=torch.long)\n#             else:\n#                 inputs = batch[\"image\"]\n#                 labels = batch[\"labels\"].view(-1, 1)\n#                 inputs = inputs.to(device, dtype=torch.float)\n#                 labels = labels.to(device, dtype=torch.float)\n#             outputs = model(inputs)\n#             loss = criterion(outputs, labels)\n#             with amp.scale_loss(loss, optimizer) as scaled_loss:\n#                 scaled_loss.backward()     \n#             tr_loss += loss.item()            \n#             optimizer.step()\n#             optimizer.zero_grad()\n#         epoch_loss = tr_loss / len(train_data_loader)\n#         print('Training Loss: {:.4f}'.format(epoch_loss))\n        \n#     return model\n\n# # processing\n\n# transform_train = Compose([\n#     ShiftScaleRotate(\n#         shift_limit=0.1,\n#         scale_limit=0.1,\n#         rotate_limit=365,\n#         p=1.0),\n#     RandomBrightnessContrast(p=1.0),\n#     ToTensor()\n# ])\n\n# transform_test = Compose([\n#     ToTensor()\n# ])\n\n# train_dataset = RetinopathyDatasetTrain(csv_file='../input/aptos2019-blindness-detection/train.csv', transform=transform_train)\n# train_data_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=4)\n    \n# test_dataset = RetinopathyDatasetTest(csv_file='../input/aptos2019-blindness-detection/test.csv', transform=transform_test)\n# test_data_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False, num_workers=4)\n    \n# device = torch.device(\"cuda:0\")\n\n# # classification model\n    \n# model = resnext101_32x16d_wsl(path='../input/ig-resnext101-32x16/ig_resnext101_32x16-c6f796b0.pth')\n\n# for param in model.parameters():\n#     param.requires_grad = False\n\n# model.fc = torch.nn.Linear(2048, len(classes))\n# model.to(device)\n\n# criterion = torch.nn.CrossEntropyLoss()\n# plist = [{'params': model.parameters(), 'lr': lr}]\n# optimizer = optim.Adam(plist, lr=lr)\n\n# model, optimizer = amp.initialize(model, optimizer, opt_level=\"O1\")\n\n# model = train_model(model=model,n_epochs=n_epochs,classification=True)\n\n# for param in model.parameters():\n#     param.requires_grad = False\n\n# model.eval()\n\n# test_preds1 = np.zeros((len(test_dataset), 5))\n\n# for i, x_batch in enumerate(tqdm(test_data_loader)):\n#     x_batch = x_batch[\"image\"]\n#     pred = model(x_batch.to(device))\n#     test_preds1[i * batch_size:(i + 1) * batch_size] = pred.detach().cpu()\n\n# test_preds1 = np.argmax(test_preds1, axis=1)  \n\n# del(model, optimizer, criterion, plist)\n# gc.collect()\n# torch.cuda.empty_cache()\n\n# # regression model\n\n# model = resnext101_32x16d_wsl(path='../input/ig-resnext101-32x16/ig_resnext101_32x16-c6f796b0.pth')\n\n# for param in model.parameters():\n#     param.requires_grad = False\n\n# model.fc = torch.nn.Linear(2048, 1)\n# model.to(device)\n\n# criterion = torch.nn.MSELoss()\n# plist = [{'params': model.parameters(), 'lr': lr}]\n# optimizer = optim.Adam(plist, lr=lr)\n\n# model, optimizer = amp.initialize(model, optimizer, opt_level=\"O1\")\n\n# model = train_model(model=model,n_epochs=n_epochs,classification=False)\n\n# for param in model.parameters():\n#     param.requires_grad = False\n\n# model.eval()\n\n# test_preds2 = np.zeros((len(test_dataset), 1))\n\n# for i, x_batch in enumerate(tqdm(test_data_loader)):\n#     x_batch = x_batch[\"image\"]\n#     pred = model(x_batch.to(device))\n#     test_preds2[i * batch_size:(i + 1) * batch_size] = pred.detach().cpu()\n\n# i = 0\n\n# for pred in test_preds2:\n#     if pred < coef[0]:\n#         test_preds2[i] = 0\n#         i += 1\n#     elif pred >= coef[0] and pred < coef[1]:\n#         test_preds2[i] = 1\n#         i += 1\n#     elif pred >= coef[1] and pred < coef[2]:\n#         test_preds2[i] = 2\n#         i += 1\n#     elif pred >= coef[2] and pred < coef[3]:\n#         test_preds2[i] = 3\n#         i += 1\n#     else:\n#         test_preds2[i] = 4\n#         i += 1\n\n# test_preds2 = test_preds2.reshape(-1,)        \n        \n# # combine\n\n# final_pred = np.round((test_preds1+test_preds2)/2)\n        \n# # submit\n \n# sample = pd.read_csv(\"../input/aptos2019-blindness-detection/sample_submission.csv\")\n# sample.diagnosis = final_pred.astype(int)\n# sample.to_csv(\"submission.csv\", index=False)"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/__init__.py",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/bam.py",
    "content": "import torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\n\n\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channel, reduction_ratio=16, num_layers=1):\n        super(ChannelGate, self).__init__()\n        self.gate_activation = gate_activation\n        self.gate_c = nn.Sequential()\n        self.gate_c.add_module(\"flatten\", Flatten())\n        gate_channels = [gate_channel]\n        gate_channels += [gate_channel // reduction_ratio] * num_layers\n        gate_channels += [gate_channel]\n        for i in range(len(gate_channels) - 2):\n            self.gate_c.add_module(\n                \"gate_c_fc_%d\" % i, nn.Linear(gate_channels[i], gate_channels[i + 1])\n            )\n            self.gate_c.add_module(\n                \"gate_c_bn_%d\" % (i + 1), nn.BatchNorm1d(gate_channels[i + 1])\n            )\n            self.gate_c.add_module(\"gate_c_relu_%d\" % (i + 1), nn.ReLU())\n        self.gate_c.add_module(\n            \"gate_c_fc_final\", nn.Linear(gate_channels[-2], gate_channels[-1])\n        )\n\n    def forward(self, in_tensor):\n        avg_pool = F.avg_pool2d(in_tensor, in_tensor.size(2), stride=in_tensor.size(2))\n        return self.gate_c(avg_pool).unsqueeze(2).unsqueeze(3).expand_as(in_tensor)\n\n\nclass SpatialGate(nn.Module):\n    def __init__(\n        self, gate_channel, reduction_ratio=16, dilation_conv_num=2, dilation_val=4\n    ):\n        super(SpatialGate, self).__init__()\n        self.gate_s = nn.Sequential()\n        self.gate_s.add_module(\n            \"gate_s_conv_reduce0\",\n            nn.Conv2d(gate_channel, gate_channel // reduction_ratio, kernel_size=1),\n        )\n        self.gate_s.add_module(\n            \"gate_s_bn_reduce0\", nn.BatchNorm2d(gate_channel // reduction_ratio)\n        )\n        self.gate_s.add_module(\"gate_s_relu_reduce0\", nn.ReLU())\n        for i in range(dilation_conv_num):\n            self.gate_s.add_module(\n                \"gate_s_conv_di_%d\" % i,\n                nn.Conv2d(\n                    gate_channel // reduction_ratio,\n                    gate_channel // reduction_ratio,\n                    kernel_size=3,\n                    padding=dilation_val,\n                    dilation=dilation_val,\n                ),\n            )\n            self.gate_s.add_module(\n                \"gate_s_bn_di_%d\" % i, nn.BatchNorm2d(gate_channel // reduction_ratio)\n            )\n            self.gate_s.add_module(\"gate_s_relu_di_%d\" % i, nn.ReLU())\n        self.gate_s.add_module(\n            \"gate_s_conv_final\",\n            nn.Conv2d(gate_channel // reduction_ratio, 1, kernel_size=1),\n        )\n\n    def forward(self, in_tensor):\n        return self.gate_s(in_tensor).expand_as(in_tensor)\n\n\nclass BAM(nn.Module):\n    def __init__(self, gate_channel):\n        super(BAM, self).__init__()\n        self.channel_att = ChannelGate(gate_channel)\n        self.spatial_att = SpatialGate(gate_channel)\n\n    def forward(self, in_tensor):\n        att = 1 + F.sigmoid(self.channel_att(in_tensor) * self.spatial_att(in_tensor))\n        return att * in_tensor\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/cbam.py",
    "content": "import torch\nimport math\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass BasicConv(nn.Module):\n    def __init__(\n        self,\n        in_planes,\n        out_planes,\n        kernel_size,\n        stride=1,\n        padding=0,\n        dilation=1,\n        groups=1,\n        relu=True,\n        bn=True,\n        bias=False,\n    ):\n        super(BasicConv, self).__init__()\n        self.out_channels = out_planes\n        self.conv = nn.Conv2d(\n            in_planes,\n            out_planes,\n            kernel_size=kernel_size,\n            stride=stride,\n            padding=padding,\n            dilation=dilation,\n            groups=groups,\n            bias=bias,\n        )\n        self.bn = (\n            nn.BatchNorm2d(out_planes, eps=1e-5, momentum=0.01, affine=True)\n            if bn\n            else None\n        )\n        self.relu = nn.ReLU() if relu else None\n\n    def forward(self, x):\n        x = self.conv(x)\n        if self.bn is not None:\n            x = self.bn(x)\n        if self.relu is not None:\n            x = self.relu(x)\n        return x\n\n\nclass Flatten(nn.Module):\n    def forward(self, x):\n        return x.view(x.size(0), -1)\n\n\nclass ChannelGate(nn.Module):\n    def __init__(self, gate_channels, reduction_ratio=16, pool_types=[\"avg\", \"max\"]):\n        super(ChannelGate, self).__init__()\n        self.gate_channels = gate_channels\n        self.mlp = nn.Sequential(\n            Flatten(),\n            nn.Linear(gate_channels, gate_channels // reduction_ratio),\n            nn.ReLU(),\n            nn.Linear(gate_channels // reduction_ratio, gate_channels),\n        )\n        self.pool_types = pool_types\n\n    def forward(self, x):\n        channel_att_sum = None\n        for pool_type in self.pool_types:\n            if pool_type == \"avg\":\n                avg_pool = F.avg_pool2d(\n                    x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3))\n                )\n                channel_att_raw = self.mlp(avg_pool)\n            elif pool_type == \"max\":\n                max_pool = F.max_pool2d(\n                    x, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3))\n                )\n                channel_att_raw = self.mlp(max_pool)\n            elif pool_type == \"lp\":\n                lp_pool = F.lp_pool2d(\n                    x, 2, (x.size(2), x.size(3)), stride=(x.size(2), x.size(3))\n                )\n                channel_att_raw = self.mlp(lp_pool)\n            elif pool_type == \"lse\":\n                # LSE pool only\n                lse_pool = logsumexp_2d(x)\n                channel_att_raw = self.mlp(lse_pool)\n\n            if channel_att_sum is None:\n                channel_att_sum = channel_att_raw\n            else:\n                channel_att_sum = channel_att_sum + channel_att_raw\n\n        scale = F.sigmoid(channel_att_sum).unsqueeze(2).unsqueeze(3).expand_as(x)\n        return x * scale\n\n\ndef logsumexp_2d(tensor):\n    tensor_flatten = tensor.view(tensor.size(0), tensor.size(1), -1)\n    s, _ = torch.max(tensor_flatten, dim=2, keepdim=True)\n    outputs = s + (tensor_flatten - s).exp().sum(dim=2, keepdim=True).log()\n    return outputs\n\n\nclass ChannelPool(nn.Module):\n    def forward(self, x):\n        return torch.cat(\n            (torch.max(x, 1)[0].unsqueeze(1), torch.mean(x, 1).unsqueeze(1)), dim=1\n        )\n\n\nclass SpatialGate(nn.Module):\n    def __init__(self):\n        super(SpatialGate, self).__init__()\n        kernel_size = 7\n        self.compress = ChannelPool()\n        self.spatial = BasicConv(\n            2, 1, kernel_size, stride=1, padding=(kernel_size - 1) // 2, relu=False\n        )\n\n    def forward(self, x):\n        x_compress = self.compress(x)\n        x_out = self.spatial(x_compress)\n        scale = F.sigmoid(x_out)  # broadcasting\n        return x * scale\n\n\nclass CBAM(nn.Module):\n    def __init__(\n        self,\n        gate_channels,\n        reduction_ratio=16,\n        pool_types=[\"avg\", \"max\"],\n        no_spatial=False,\n    ):\n        super(CBAM, self).__init__()\n        self.ChannelGate = ChannelGate(gate_channels, reduction_ratio, pool_types)\n        self.no_spatial = no_spatial\n        if not no_spatial:\n            self.SpatialGate = SpatialGate()\n\n    def forward(self, x):\n        x_out = self.ChannelGate(x)\n        if not self.no_spatial:\n            x_out = self.SpatialGate(x_out)\n        return x_out\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/dataloader.py",
    "content": "import os\nfrom sklearn.model_selection import StratifiedKFold, KFold\nimport cv2\nimport joblib\nimport pdb\nimport time\nimport warnings\nimport random\nimport numpy as np\nimport pandas as pd\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\nfrom sklearn.model_selection import train_test_split\nimport torch\nimport torch.backends.cudnn as cudnn\nfrom torch.utils.data import DataLoader, Dataset, sampler\nfrom .utils import make_mask\nfrom .metric import Meter, epoch_log\nfrom albumentations import (\n    HorizontalFlip,\n    ShiftScaleRotate,\n    Normalize,\n    CropNonEmptyMaskIfExists,\n    Resize,\n    Compose,\n    RandomBrightnessContrast,\n    VerticalFlip,\n    RandomBrightness,\n    RandomContrast,\n)\nfrom albumentations.pytorch import ToTensor\nimport sys\n\nsys.path.append(\"..\")\nfrom configs.train_params import *\n\nwarnings.filterwarnings(\"ignore\")\nseed = 69\nrandom.seed(seed)\nos.environ[\"PYTHONHASHSEED\"] = str(seed)\nnp.random.seed(seed)\ntorch.cuda.manual_seed(seed)\ntorch.backends.cudnn.deterministic = True\n\n\nclass SteelDataset(Dataset):\n    def __init__(self, df, data_folder, mean, std, phase, df_full, data_folder_full):\n        self.df = df\n        self.root = data_folder\n        self.mean = mean\n        self.std = std\n        self.phase = phase\n        self.transforms = get_transforms(phase, mean, std)\n        self.fnames = self.df.index.tolist()\n        self.df_full = df_full\n        self.data_folder_full = data_folder_full\n        self.df_full_index = self.df_full.reset_index(drop=True).index.tolist()\n\n    def __getitem__(self, idx):\n        cur_item_type = np.random.choice([\"pseudo\", \"full\"], p=[0.3, 0.7])\n        if self.phase == \"val\" or cur_item_type == \"pseudo\":\n            image_id, mask = make_mask(idx, self.df)\n            image_path = os.path.join(self.root, image_id)\n        else:\n            idx = np.random.choice(self.df_full_index)\n            image_id, mask = make_mask(idx, self.df_full)\n            image_path = os.path.join(self.data_folder_full, image_id)\n\n        img = cv2.imread(image_path)\n        augmented = self.transforms(image=img, mask=mask)\n        img = augmented[\"image\"]\n        mask = augmented[\"mask\"]  # 1x256x1600x4\n        mask = mask[0].permute(2, 0, 1)  # 1x4x256x1600\n        return img, mask\n        # {'features': img, 'masks': mask, 'mask': mask.argmax(axis=1)}\n\n    def __len__(self):\n        return len(self.fnames)\n\n\ndef get_transforms(phase, mean, std):\n    list_transforms = []\n    if phase == \"train\":\n        if crop_image_size is not None:\n            list_transforms.extend(\n                [\n                    CropNonEmptyMaskIfExists(\n                        crop_image_size[0], crop_image_size[1], p=0.85\n                    ),\n                    HorizontalFlip(p=0.5),\n                    VerticalFlip(p=0.5),\n                    RandomBrightnessContrast(\n                        p=0.1, brightness_limit=0.1, contrast_limit=0.1\n                    ),\n                ]\n            )\n        else:\n            list_transforms.extend(\n                [\n                    HorizontalFlip(p=0.5),\n                    VerticalFlip(p=0.5),\n                    RandomBrightnessContrast(\n                        p=0.1, brightness_limit=0.1, contrast_limit=0.1\n                    ),\n                ]\n            )\n    list_transforms.extend([Normalize(mean=mean, std=std, p=1), ToTensor()])\n    list_trfms = Compose(list_transforms)\n    return list_trfms\n\n\ndef provider_trai_test_split(\n    data_folder, df_path, phase, mean=None, std=None, batch_size=8, num_workers=4\n):\n    \"\"\"\n    Returns dataloader for the model training\n    \"\"\"\n\n    df = pd.read_csv(df_path)\n    # https://www.kaggle.com/amanooo/defect-detection-starter-u-net\n    df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n    df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n    df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n    df[\"defects\"] = df.count(axis=1)\n\n    train_df, val_df = train_test_split(\n        df, test_size=0.2, stratify=df[\"defects\"], random_state=69\n    )\n    df = train_df if phase == \"train\" else val_df\n    data_folder_cur = lb_test if phase == \"train\" else data_folder\n    image_dataset = SteelDataset(df, data_folder_cur, mean, std, phase)\n    dataloader = DataLoader(\n        image_dataset,\n        batch_size=batch_size,\n        num_workers=num_workers,\n        pin_memory=True,\n        shuffle=True,\n    )\n    return dataloader\n\n\ndef provider_cv(\n    fold,\n    total_folds,\n    data_folder,\n    df_path,\n    phase,\n    mean=None,\n    std=None,\n    batch_size=8,\n    num_workers=4,\n):\n    if isDebug:\n        df = pd.read_csv(df_path).head(200)\n        df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n        df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n        df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n        df[\"defects\"] = df.count(axis=1)\n\n        kfold = KFold(\n            total_folds, shuffle=True, random_state=69\n        )  # StratifiedKFold(total_folds, shuffle=True, random_state=69)\n        train_idx, val_idx = list(kfold.split(df))[fold]  # , df[\"defects\"]\n        train_df, val_df = df.iloc[train_idx], df.iloc[val_idx]\n\n    else:\n        df = pd.read_csv(df_path)\n        df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n        df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n        df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n        df[\"defects\"] = df.count(axis=1)\n        folds_idx = joblib.load(FOLDS_ids)\n        train_idx, val_idx = list(folds_idx)[fold]\n        train_df, val_df = df.iloc[train_idx], df.iloc[val_idx]\n\n        df = pd.read_csv(lb_test)\n        df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n        df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n        df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n        df[\"defects\"] = df.count(axis=1)\n\n    df_cur = df if phase == \"train\" else val_df\n    folder_cur = test_data_folder if phase == \"train\" else data_folder\n    print(df.shape)\n\n    image_dataset = SteelDataset(\n        df_cur, folder_cur, mean, std, phase, train_df, data_folder\n    )\n    dataloader = DataLoader(\n        image_dataset,\n        batch_size=batch_size,\n        num_workers=num_workers,\n        pin_memory=True,\n        shuffle=True,\n    )\n    return dataloader\n\n\ndef provider_cv___(\n    fold,\n    total_folds,\n    data_folder,\n    df_path,\n    phase,\n    mean=None,\n    std=None,\n    batch_size=8,\n    num_workers=4,\n):\n    \"\"\"\n\n    :param fold:\n    :param total_folds:\n    :param data_folder:\n    :param df_path:\n    :param phase:\n    :param mean:\n    :param std:\n    :param batch_size:\n    :param num_workers:\n    :return:\n\n    # example of usage\n    dataloader = provider_cv(\n    fold=0,\n    total_folds=5,\n    data_folder=data_folder,\n    df_path=train_df_path,\n    phase=\"train\",\n    mean = (0.485, 0.456, 0.406),\n    std = (0.229, 0.224, 0.225),\n    batch_size=16,\n    num_workers=4,\n)\n    \"\"\"\n    if isDebug:\n        df = pd.read_csv(df_path).head(200)\n        df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n        df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n        df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n        df[\"defects\"] = df.count(axis=1)\n\n        kfold = KFold(\n            total_folds, shuffle=True, random_state=69\n        )  # StratifiedKFold(total_folds, shuffle=True, random_state=69)\n        train_idx, val_idx = list(kfold.split(df))[fold]  # , df[\"defects\"]\n        train_df, val_df = df.iloc[train_idx], df.iloc[val_idx]\n\n    else:\n        df = pd.read_csv(df_path)\n        df[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\n        df[\"ClassId\"] = df[\"ClassId\"].astype(int)\n        df = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\n        df[\"defects\"] = df.count(axis=1)\n        folds_idx = joblib.load(FOLDS_ids)\n        train_idx, val_idx = list(folds_idx)[fold]\n        train_df, val_df = df.iloc[train_idx], df.iloc[val_idx]\n\n    df = train_df if phase == \"train\" else val_df\n    print(df.shape)\n\n    image_dataset = SteelDataset(df, data_folder, mean, std, phase)\n    dataloader = DataLoader(\n        image_dataset,\n        batch_size=batch_size,\n        num_workers=num_workers,\n        pin_memory=True,\n        shuffle=True,\n    )\n    return dataloader\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/generate_folds.py",
    "content": "import pandas as pd\nfrom sklearn.model_selection import StratifiedKFold, KFold\nimport joblib\n\ntotal_folds = 10\n\ndf = pd.read_csv(\"./input/severstal-steel-defect-detection/train.csv\")\ndf[\"ImageId\"], df[\"ClassId\"] = zip(*df[\"ImageId_ClassId\"].str.split(\"_\"))\ndf[\"ClassId\"] = df[\"ClassId\"].astype(int)\ndf = df.pivot(index=\"ImageId\", columns=\"ClassId\", values=\"EncodedPixels\")\ndf[\"defects\"] = df.count(axis=1)\n\n# Dumbing FOLD ids\nFOLDS_PATH = \"./input/folds.pkl\"\nfolds = KFold(n_splits=10, shuffle=True, random_state=69)\nfolds_idx = [(train_idx, val_idx) for train_idx, val_idx in folds.split(df)]\njoblib.dump(folds_idx, FOLDS_PATH)\n\n# How to work work with FOLDS for cur_fold = 2\ncur_fold = 2\nfolds_idx = joblib.load(FOLDS_PATH)\ntrain_idx, val_idx = list(folds_idx)[cur_fold]\ntrain_df, val_df = df.iloc[train_idx], df.iloc[val_idx]\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/logger.py",
    "content": "# This file defines a decorator '@log_to()' that logs every call to a\n# function, along with the arguments that function was called with. It\n# takes a logging function, which is any function that accepts a\n# string and does something with it. A good choice is the debug\n# function from the logging module. A second decorator '@logdebug' is\n# provided that uses 'logging.debug' as the logger.\n\nfrom functools import wraps\nfrom inspect import getcallargs, getargspec, getfullargspec\nfrom collections import OrderedDict, Iterable\nfrom itertools import *\nimport logging\nimport time\n\n# from logdecorator import log_on_start, log_on_end, log_on_error\n# from logging import DEBUG, ERROR, INFO\n\n\ndef flatten(l):\n    \"\"\"Flatten a list (or other iterable) recursively\"\"\"\n    for el in l:\n        if isinstance(el, Iterable) and not isinstance(el, str):\n            for sub in flatten(el):\n                yield sub\n        else:\n            yield el\n\n\ndef getargnames(func):\n    \"\"\"Return an iterator over all arg names, including nested arg names and varargs.\n\n    Goes in the order of the functions argspec, with varargs and\n    keyword args last if present.\"\"\"\n    (argnames, varargname, kwargname, _, _, _, _) = getfullargspec(func)\n    return chain(flatten(argnames), filter(None, [varargname, kwargname]))\n\n\ndef getcallargs_ordered(func, *args, **kwargs):\n    \"\"\"Return an OrderedDict of all arguments to a function.\n\n    Items are ordered by the function's argspec.\"\"\"\n    argdict = getcallargs(func, *args, **kwargs)\n    return OrderedDict((name, argdict[name]) for name in getargnames(func))\n\n\ndef describe_call(func, *args, **kwargs):\n    try:\n        yield \"Calling %s with args:\" % func.__name__\n        for argname, argvalue in getcallargs_ordered(func, *args, **kwargs).items():\n            yield \"\\t%s = %s\" % (argname, repr(argvalue))\n    except:\n        yield None\n\n\ndef log_to(logger_func):\n    \"\"\"A decorator to log every call to function (function name and arg values).\n\n    logger_func should be a function that accepts a string and logs it\n    somewhere. The default is logging.debug.\n\n    If logger_func is None, then the resulting decorator does nothing.\n    This is much more efficient than providing a no-op logger\n    function: @log_to(lambda x: None).\n    \"\"\"\n    if logger_func is not None:\n\n        def decorator(func):\n            @wraps(func)\n            def wrapper(*args, **kwargs):\n                for line in describe_call(func, *args, **kwargs):\n                    logger_func(line)\n                return func(*args, **kwargs)\n\n            return wrapper\n\n    else:\n        decorator = lambda x: x\n    return decorator\n\n\ndef timeit(method):\n    def timed(*args, **kw):\n        ts = time.time()\n        result = method(*args, **kw)\n        te = time.time()\n        if \"log_time\" in kw:\n            name = kw.get(\"log_name\", method.__name__.upper())\n            kw[\"log_time\"][name] = int((te - ts) * 1000)\n        else:\n            logging.info(\n                \"End of {}. Elapsed time: {:0.2f} sec.\".format(\n                    method.__name__, (te - ts)\n                )\n            )\n        return result\n\n    return timed\n\n\ndef debug(fn):\n    def wrapper(*args, **kwargs):\n        logger.debug(\"Entering {:s}...\".format(fn.__name__))\n        result = fn(*args, **kwargs)\n        logger.debug(\"Finished {:s}.\".format(fn.__name__))\n        return result\n\n    return wrapper\n\n\nlogging_arg = log_to(logging.info)\n\n\n@logging_arg\n@timeit\ndef myfunc(a, b, c, *args, **kwargs):\n    pass\n\n\nif __name__ == \"__main__\":\n    logging.basicConfig(\n        level=logging.INFO,\n        format=\"%(asctime)s %(name)-12s %(levelname)-8s %(message)s\",\n        filename=\"testing.log\",\n        filemode=\"w\",\n    )\n    myfunc(1, 2, 3, 4, 5, 6, x=7, y=8, z=9, g=\"blarg\", f=lambda x: x + 2)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/losses.py",
    "content": "import torch.nn as nn\n\n\nimport numpy as np\nimport torch\nimport torch.nn as nn\nfrom torch.nn import functional as F\n\n\nclass FocalLoss(nn.Module):\n    def __init__(self, alpha=1, gamma=2, logits=False, reduce=True):\n        super(FocalLoss, self).__init__()\n        self.alpha = alpha\n        self.gamma = gamma\n        self.logits = logits\n        self.reduce = reduce\n\n    def forward(self, inputs, targets):\n        if self.logits:\n            BCE_loss = F.binary_cross_entropy_with_logits(inputs, targets, reduce=False)\n        else:\n            BCE_loss = F.binary_cross_entropy(inputs, targets, reduce=False)\n        pt = torch.exp(-BCE_loss)\n        F_loss = self.alpha * (1 - pt) ** self.gamma * BCE_loss\n\n        if self.reduce:\n            return torch.mean(F_loss)\n        else:\n            return F_loss\n\n\nclass JaccardLoss(nn.Module):\n    __name__ = \"jaccard_loss\"\n\n    def __init__(self, eps=1e-7, activation=\"sigmoid\"):\n        super().__init__()\n        self.activation = activation\n        self.eps = eps\n\n    def forward(self, y_pr, y_gt):\n        return 1 - jaccard(\n            y_pr, y_gt, eps=self.eps, threshold=None, activation=self.activation\n        )\n\n\nclass DiceLoss(nn.Module):\n    __name__ = \"dice_loss\"\n\n    def __init__(self, eps=1e-7, activation=\"sigmoid\"):\n        super().__init__()\n        self.activation = activation\n        self.eps = eps\n\n    def forward(self, y_pr, y_gt):\n        return 1 - f_score(\n            y_pr,\n            y_gt,\n            beta=1.0,\n            eps=self.eps,\n            threshold=None,\n            activation=self.activation,\n        )\n\n\nclass BCEJaccardLoss(JaccardLoss):\n    __name__ = \"bce_jaccard_loss\"\n\n    def __init__(self, eps=1e-7, activation=\"sigmoid\"):\n        super().__init__(eps, activation)\n        self.bce = nn.BCEWithLogitsLoss(reduction=\"mean\")\n\n    def forward(self, y_pr, y_gt):\n        jaccard = super().forward(y_pr, y_gt)\n        bce = self.bce(y_pr, y_gt)\n        return jaccard + bce\n\n\nclass BCEDiceLoss(DiceLoss):\n    __name__ = \"bce_dice_loss\"\n\n    def __init__(self, eps=1e-7, activation=\"sigmoid\"):\n        super().__init__(eps, activation)\n        self.bce = nn.BCEWithLogitsLoss(reduction=\"mean\")\n\n    def forward(self, y_pr, y_gt):\n        dice = super().forward(y_pr, y_gt)\n        bce = self.bce(y_pr, y_gt)\n        return dice + bce\n\n\ndef iou(pr, gt, eps=1e-7, threshold=None, activation=\"sigmoid\"):\n    \"\"\"\n    Source:\n        https://github.com/catalyst-team/catalyst/\n    Args:\n        pr (torch.Tensor): A list of predicted elements\n        gt (torch.Tensor):  A list of elements that are to be predicted\n        eps (float): epsilon to avoid zero division\n        threshold: threshold for outputs binarization\n    Returns:\n        float: IoU (Jaccard) score\n    \"\"\"\n\n    if activation is None or activation == \"none\":\n        activation_fn = lambda x: x\n    elif activation == \"sigmoid\":\n        activation_fn = torch.nn.Sigmoid()\n    elif activation == \"softmax2d\":\n        activation_fn = torch.nn.Softmax2d()\n    else:\n        raise NotImplementedError(\"Activation implemented for sigmoid and softmax2d\")\n\n    pr = activation_fn(pr)\n\n    if threshold is not None:\n        pr = (pr > threshold).float()\n\n    intersection = torch.sum(gt * pr)\n    union = torch.sum(gt) + torch.sum(pr) - intersection + eps\n    return (intersection + eps) / union\n\n\njaccard = iou\n\n\ndef f_score(pr, gt, beta=1, eps=1e-7, threshold=None, activation=\"sigmoid\"):\n    \"\"\"\n    Args:\n        pr (torch.Tensor): A list of predicted elements\n        gt (torch.Tensor):  A list of elements that are to be predicted\n        beta (float): positive constant\n        eps (float): epsilon to avoid zero division\n        threshold: threshold for outputs binarization\n    Returns:\n        float: F score\n    \"\"\"\n\n    if activation is None or activation == \"none\":\n        activation_fn = lambda x: x\n    elif activation == \"sigmoid\":\n        activation_fn = torch.nn.Sigmoid()\n    elif activation == \"softmax2d\":\n        activation_fn = torch.nn.Softmax2d()\n    else:\n        raise NotImplementedError(\"Activation implemented for sigmoid and softmax2d\")\n\n    pr = activation_fn(pr)\n\n    if threshold is not None:\n        pr = (pr > threshold).float()\n\n    tp = torch.sum(gt * pr)\n    fp = torch.sum(pr) - tp\n    fn = torch.sum(gt) - tp\n\n    score = ((1 + beta ** 2) * tp + eps) / (\n        (1 + beta ** 2) * tp + beta ** 2 * fn + fp + eps\n    )\n\n    return score\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/lovasz_losses.py",
    "content": "\"\"\"\nLovasz-Softmax and Jaccard hinge loss in PyTorch\nMaxim Berman 2018 ESAT-PSI KU Leuven (MIT License)\n\"\"\"\n\nimport torch\nimport torch.nn.functional as F\nfrom torch.autograd import Variable\nfrom torch.nn.modules.loss import _Loss\n\ntry:\n    from itertools import ifilterfalse\nexcept ImportError:  # py3k\n    from itertools import filterfalse as ifilterfalse\n\n__all__ = [\"BinaryLovaszLoss\", \"LovaszLoss\"]\n\n\ndef _lovasz_grad(gt_sorted):\n    \"\"\"Compute gradient of the Lovasz extension w.r.t sorted errors\n    See Alg. 1 in paper\n    \"\"\"\n    p = len(gt_sorted)\n    gts = gt_sorted.sum()\n    intersection = gts - gt_sorted.float().cumsum(0)\n    union = gts + (1 - gt_sorted).float().cumsum(0)\n    jaccard = 1.0 - intersection / union\n    if p > 1:  # cover 1-pixel case\n        jaccard[1:p] = jaccard[1:p] - jaccard[0:-1]\n    return jaccard\n\n\ndef _lovasz_hinge(logits, labels, per_image=True, ignore=None):\n    \"\"\"\n    Binary Lovasz hinge loss\n        logits: [B, H, W] Variable, logits at each pixel (between -infinity and +infinity)\n        labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n        per_image: compute the loss per image instead of per batch\n        ignore: void class id\n    \"\"\"\n    if per_image:\n        loss = mean(\n            _lovasz_hinge_flat(\n                *_flatten_binary_scores(log.unsqueeze(0), lab.unsqueeze(0), ignore)\n            )\n            for log, lab in zip(logits, labels)\n        )\n    else:\n        loss = _lovasz_hinge_flat(*_flatten_binary_scores(logits, labels, ignore))\n    return loss\n\n\ndef _lovasz_hinge_flat(logits, labels):\n    \"\"\"Binary Lovasz hinge loss\n    Args:\n        logits: [P] Variable, logits at each prediction (between -iinfinity and +iinfinity)\n        labels: [P] Tensor, binary ground truth labels (0 or 1)\n        ignore: label to ignore\n    \"\"\"\n    if len(labels) == 0:\n        # only void pixels, the gradients should be 0\n        return logits.sum() * 0.0\n    signs = 2.0 * labels.float() - 1.0\n    errors = 1.0 - logits * Variable(signs)\n    errors_sorted, perm = torch.sort(errors, dim=0, descending=True)\n    perm = perm.data\n    gt_sorted = labels[perm]\n    grad = _lovasz_grad(gt_sorted)\n    loss = torch.dot(F.relu(errors_sorted), Variable(grad))\n    return loss\n\n\ndef _flatten_binary_scores(scores, labels, ignore=None):\n    \"\"\"Flattens predictions in the batch (binary case)\n    Remove labels equal to 'ignore'\n    \"\"\"\n    scores = scores.view(-1)\n    labels = labels.view(-1)\n    if ignore is None:\n        return scores, labels\n    valid = labels != ignore\n    vscores = scores[valid]\n    vlabels = labels[valid]\n    return vscores, vlabels\n\n\n# --------------------------- MULTICLASS LOSSES ---------------------------\n\n\ndef _lovasz_softmax(\n    probas, labels, classes=\"present\", per_image=False, ignore=None, anti=False\n):\n    \"\"\"Multi-class Lovasz-Softmax loss\n    Args:\n        @param probas: [B, C, H, W] Variable, class probabilities at each prediction (between 0 and 1).\n        Interpreted as binary (sigmoid) output with outputs of size [B, H, W].\n        @param labels: [B, H, W] Tensor, ground truth labels (between 0 and C - 1)\n        @param classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n        @param per_image: compute the loss per image instead of per batch\n        @param ignore: void class labels\n    \"\"\"\n    if per_image:\n        loss = mean(\n            _lovasz_softmax_flat(\n                *_flatten_probas(prob.unsqueeze(0), lab.unsqueeze(0), ignore),\n                classes=classes,\n                anti=anti\n            )\n            for prob, lab in zip(probas, labels)\n        )\n    else:\n        loss = _lovasz_softmax_flat(\n            *_flatten_probas(probas, labels, ignore, anti), classes=classes, anti=anti\n        )\n    return loss\n\n\ndef _lovasz_softmax_flat(probas, labels, classes=\"present\", anti=False):\n    \"\"\"Multi-class Lovasz-Softmax loss\n    Args:\n        @param probas: [P, C] Variable, class probabilities at each prediction (between 0 and 1)\n        @param labels: [P] Tensor, ground truth labels (between 0 and C - 1)\n        @param classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n    \"\"\"\n    if probas.numel() == 0:\n        # only void pixels, the gradients should be 0\n        return probas * 0.0\n    C = probas.size(1)\n    losses = []\n    class_to_sum = list(range(C)) if classes in [\"all\", \"present\"] else classes\n    for c in class_to_sum:\n        fg = (labels == c).float()  # foreground for class c\n        if anti:\n            fg = 1.0 - fg\n        #             print(fg)\n        if classes == \"present\" and fg.sum() == 0:\n            continue\n        if C == 1:\n            if len(classes) > 1:\n                raise ValueError(\"Sigmoid output possible only with 1 class\")\n            class_pred = probas[:, 0]\n        else:\n            class_pred = probas[:, c]\n        errors = (Variable(fg) - class_pred).abs()\n        errors_sorted, perm = torch.sort(errors, 0, descending=True)\n        perm = perm.data\n        fg_sorted = fg[perm]\n        losses.append(torch.dot(errors_sorted, Variable(_lovasz_grad(fg_sorted))))\n    return mean(losses)\n\n\ndef _flatten_probas(probas, labels, ignore=None, anti=False):\n    \"\"\"Flattens predictions in the batch\n    \"\"\"\n    if probas.dim() == 3:\n        # assumes output of a sigmoid layer\n        B, H, W = probas.size()\n        probas = probas.view(B, 1, H, W)\n    B, C, H, W = probas.size()\n    probas = probas.permute(0, 2, 3, 1).contiguous().view(-1, C)  # B * H * W, C = P, C\n    labels = labels.view(-1)\n    if ignore is None:\n        return probas, labels\n    valid = labels != ignore\n    vprobas = probas[valid.nonzero().squeeze()]\n    vlabels = labels[valid]\n    return vprobas, vlabels\n\n\n# --------------------------- HELPER FUNCTIONS ---------------------------\ndef isnan(x):\n    return x != x\n\n\ndef mean(values, ignore_nan=False, empty=0):\n    \"\"\"Nanmean compatible with generators.\n    \"\"\"\n    values = iter(values)\n    if ignore_nan:\n        values = ifilterfalse(isnan, values)\n    try:\n        n = 1\n        acc = next(values)\n    except StopIteration:\n        if empty == \"raise\":\n            raise ValueError(\"Empty mean\")\n        return empty\n    for n, v in enumerate(values, 2):\n        acc += v\n    if n == 1:\n        return acc\n    return acc / n\n\n\nclass BinaryLovaszLoss(_Loss):\n    def __init__(self, per_image=False, ignore=None):\n        super().__init__()\n        self.ignore = ignore\n        self.per_image = per_image\n\n    def forward(self, logits, target):\n        return _lovasz_hinge(\n            logits, target, per_image=self.per_image, ignore=self.ignore\n        )\n\n\nclass LovaszLoss(_Loss):\n    def __init__(self, per_image=False, ignore=None, anti=False, classes=\"all\"):\n        super().__init__()\n        self.ignore = ignore\n        self.per_image = per_image\n        self.anti = anti\n        self.classes = classes\n\n    def forward(self, logits, target):\n        logits = torch.sigmoid(logits)\n        if self.anti:\n            logits = 1.0 - logits\n\n        return _lovasz_softmax(\n            logits,\n            target,\n            classes=self.classes,\n            per_image=self.per_image,\n            ignore=self.ignore,\n            anti=self.anti,\n        )\n\n\nclass LovaszLossSymmetric(_Loss):\n    def __init__(self, per_image=True, ignore=None, classes=\"all\"):\n        super().__init__()\n        self.ignore = ignore\n        self.per_image = per_image\n        self.classes = classes\n\n    def forward(self, logits, target):\n        # print(target.shape, target.argmax(dim=0).shape)\n        target = target.argmax(dim=1)\n        logits = torch.sigmoid(logits)\n        pos_loss = _lovasz_softmax(\n            logits,\n            target,\n            classes=self.classes,\n            per_image=self.per_image,\n            ignore=self.ignore,\n            anti=False,\n        )\n        logits = 1.0 - logits\n        anti_loss = _lovasz_softmax(\n            logits,\n            target,\n            classes=self.classes,\n            per_image=self.per_image,\n            ignore=self.ignore,\n            anti=True,\n        )\n        print(pos_loss, anti_loss, pos_loss + anti_loss)\n        return pos_loss + anti_loss\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/metric.py",
    "content": "import os\nimport random\nimport warnings\n\nimport numpy as np\nimport torch\nimport torch.backends.cudnn as cudnn\n\nwarnings.filterwarnings(\"ignore\")\nseed = 69\nrandom.seed(seed)\nos.environ[\"PYTHONHASHSEED\"] = str(seed)\nnp.random.seed(seed)\ntorch.cuda.manual_seed(seed)\ntorch.backends.cudnn.deterministic = True\n\n\nclass Meter:\n    \"\"\"A meter to keep track of iou and dice scores throughout an epoch\"\"\"\n\n    def __init__(self, phase, epoch):\n        self.base_threshold = 0.5\n        self.base_dice_scores = []\n        self.dice_neg_scores = []\n        self.dice_pos_scores = []\n        # self.iou_scores = []\n\n    def update(self, targets, outputs):\n        probs = torch.sigmoid(outputs)\n        dice, dice_neg, dice_pos, num_negative, num_positive = dice_channel_torch(\n            probs, targets, self.base_threshold\n        )\n        self.base_dice_scores.append(dice)\n        self.dice_pos_scores.append(dice_pos)\n        self.dice_neg_scores.append(dice_neg)\n        # preds = predict(probs, self.base_threshold)\n        # iou = compute_iou_batch(preds, targets, classes=[1])\n        # self.iou_scores.append(iou)\n\n    def get_metrics(self):\n        dice = np.mean(self.base_dice_scores)\n        dice_neg = np.mean(self.dice_neg_scores)\n        dice_pos = np.mean(self.dice_pos_scores)\n        dices = [dice, dice_neg, dice_pos]\n        # iou = np.nanmean(self.iou_scores)\n        return dices\n\n\ndef predict(X, threshold):\n    \"\"\"X is sigmoid output of the model\"\"\"\n    X_p = np.copy(X)\n    preds = (X_p > threshold).astype(\"uint8\")\n    return preds\n\n\ndef metric_old(probability, truth, threshold=0.5):\n    \"\"\"Calculates dice of positive and negative images seperately\n        probability and truth must be torch tensors\n\n        Seems to be this code averages per image not class\n        \"\"\"\n    batch_size = truth.shape[0]  # len(truth)\n    with torch.no_grad():\n        probability = probability.view(batch_size, -1)\n        truth = truth.view(batch_size, -1)\n\n        p = (probability > threshold).float()\n        t = (truth > 0.5).float()\n\n        t_sum = t.sum(-1)\n        p_sum = p.sum(-1)\n        neg_index = torch.nonzero(t_sum == 0)\n        pos_index = torch.nonzero(t_sum >= 1)\n\n        dice_neg = (p_sum == 0).float()\n        dice_pos = 2 * (p * t).sum(-1) / ((p + t).sum(-1))\n\n        dice_neg = dice_neg[neg_index]\n        dice_pos = dice_pos[pos_index]\n        dice = torch.cat([dice_pos, dice_neg])\n\n        dice_neg = np.nan_to_num(dice_neg.mean().item(), 0)\n        dice_pos = np.nan_to_num(dice_pos.mean().item(), 0)\n        dice = dice.mean().item()\n\n        num_neg = len(neg_index)\n        num_pos = len(pos_index)\n\n    return dice, dice_neg, dice_pos, num_neg, num_pos\n\n\ndef dice_channel_torch(probability, truth, threshold):\n    \"\"\"\n    This competition is evaluated on the mean Dice coefficient.\n    The Dice coefficient can be used to compare the pixel-wise agreement between a\n    predicted segmentation and its corresponding ground truth. The formula is given by:\n    Dice(X,Y)=2∗|X∩Y||X|+|Y|\n    where X is the predicted set of pixels and Y is the ground truth.\n    The Dice coefficient is defined to be 1 when both X and Y are empty.\n    The leaderboard score is the mean of the Dice coefficients for each <ImageId, ClassId> pair in the test set.\n    Which means the seperate channel of each mask will be average to Dice score.\n    :param probability:\n    :param truth:\n    :param threshold:\n    :return:\n    \"\"\"\n    batch_size = truth.shape[0]\n    channel_num = truth.shape[1]\n    mean_dice_channel = 0.0\n    with torch.no_grad():\n        for j in range(channel_num):\n            channel_dice = dice_single_channel(\n                probability[:, j, :, :], truth[:, j, :, :], threshold, batch_size\n            )\n            mean_dice_channel += channel_dice.sum(0) / (batch_size * channel_num)\n    return mean_dice_channel, 1, 1, 1, 1\n\n\ndef dice_single_channel(probability, truth, threshold, batch_size, eps=1e-9):\n    p = (probability.view(batch_size, -1) > threshold).float()\n    t = (truth.view(batch_size, -1) > 0.5).float()\n    dice = (2.0 * (p * t).sum(1) + eps) / (p.sum(1) + t.sum(1) + eps)\n    return dice\n\n\ndef epoch_log(phase, epoch, epoch_loss, meter, start):\n    \"\"\"logging the metrics at the end of an epoch\"\"\"\n    dice, dice_neg, dice_pos = meter.get_metrics()\n    print(\"Loss: %0.4f | dice: %0.4f\" % (epoch_loss, dice))\n    return dice\n\n\ndef compute_ious(pred, label, classes, ignore_index=255, only_present=True):\n    \"\"\"computes iou for one ground truth mask and predicted mask\"\"\"\n    pred[label == ignore_index] = 0\n    ious = []\n    for c in classes:\n        label_c = label == c\n        if only_present and np.sum(label_c) == 0:\n            ious.append(np.nan)\n            continue\n        pred_c = pred == c\n        intersection = np.logical_and(pred_c, label_c).sum()\n        union = np.logical_or(pred_c, label_c).sum()\n        if union != 0:\n            ious.append(intersection / union)\n    return ious if ious else [1]\n\n\ndef compute_iou_batch(outputs, labels, classes=None):\n    \"\"\"computes mean iou for a batch of ground truth masks and predicted masks\"\"\"\n    ious = []\n    preds = np.copy(outputs)  # copy is imp\n    labels = np.array(labels)  # tensor to np\n    for pred, label in zip(preds, labels):\n        ious.append(np.nanmean(compute_ious(pred, label, classes)))\n    iou = np.nanmean(ious)\n    return iou\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/new_metrics.py",
    "content": "from functools import partial\n\nimport numpy as np\nimport torch\nfrom catalyst.dl import Callback, RunnerState, MetricCallback, CallbackOrder\nfrom pytorch_toolbelt.utils.catalyst.visualization import get_tensorboard_logger\nfrom pytorch_toolbelt.utils.torch_utils import to_numpy\nfrom pytorch_toolbelt.utils.visualization import (\n    render_figure_to_tensor,\n    plot_confusion_matrix,\n)\nfrom sklearn.metrics import f1_score, multilabel_confusion_matrix\n\n__all__ = [\n    \"pixel_accuracy\",\n    \"binary_dice_iou_score\",\n    \"multiclass_dice_iou_score\",\n    \"multilabel_dice_iou_score\",\n    \"PixelAccuracyCallback\",\n    \"MacroF1Callback\",\n    \"ConfusionMatrixCallback\",\n    \"IoUMetricsCallback\",\n]\n\nBINARY_MODE = \"binary\"\nMULTICLASS_MODE = \"multiclass\"\nMULTILABEL_MODE = \"multilabel\"\n\n\ndef pixel_accuracy(outputs: torch.Tensor, targets: torch.Tensor, ignore_index=None):\n    \"\"\"\n    Compute the pixel accuracy\n    \"\"\"\n    outputs = outputs.detach()\n    targets = targets.detach()\n    if ignore_index is not None:\n        mask = targets != ignore_index\n        outputs = outputs[mask]\n        targets = targets[mask]\n\n    outputs = (outputs > 0).float()\n\n    correct = float(torch.sum(outputs == targets))\n    total = targets.numel()\n    return correct / total\n\n\nclass PixelAccuracyCallback(MetricCallback):\n    \"\"\"Pixel accuracy metric callback\n    \"\"\"\n\n    def __init__(\n        self,\n        input_key: str = \"targets\",\n        output_key: str = \"logits\",\n        prefix: str = \"accuracy\",\n        ignore_index=None,\n    ):\n        \"\"\"\n        :param input_key: input key to use for iou calculation;\n            specifies our `y_true`.\n        :param output_key: output key to use for iou calculation;\n            specifies our `y_pred`\n        :param ignore_index: same meaning as in nn.CrossEntropyLoss\n        \"\"\"\n        super().__init__(\n            prefix=prefix,\n            metric_fn=partial(pixel_accuracy, ignore_index=ignore_index),\n            input_key=input_key,\n            output_key=output_key,\n        )\n\n\nclass ConfusionMatrixCallback(Callback):\n    \"\"\"\n    Compute and log confusion matrix to Tensorboard.\n    For use with Multiclass classification/segmentation.\n    \"\"\"\n\n    def __init__(\n        self,\n        input_key: str = \"targets\",\n        output_key: str = \"logits\",\n        prefix: str = \"confusion_matrix\",\n        class_names=None,\n        ignore_index=None,\n    ):\n        \"\"\"\n        :param input_key: input key to use for precision calculation;\n            specifies our `y_true`.\n        :param output_key: output key to use for precision calculation;\n            specifies our `y_pred`.\n        :param ignore_index: same meaning as in nn.CrossEntropyLoss\n        \"\"\"\n        super().__init__(CallbackOrder.Logger)\n        self.prefix = prefix\n        self.class_names = class_names\n        self.output_key = output_key\n        self.input_key = input_key\n        self.outputs = []\n        self.targets = []\n        self.ignore_index = ignore_index\n\n    def on_loader_start(self, state):\n        self.outputs = []\n        self.targets = []\n\n    def on_batch_end(self, state: RunnerState):\n        outputs = to_numpy(torch.sigmoid(state.output[self.output_key]))\n        targets = to_numpy(state.input[self.input_key])\n\n        #         outputs = 1*(outputs>0.5)\n        #         targets = np.argmax(targets, axis=1)\n\n        if self.ignore_index is not None:\n            mask = targets != self.ignore_index\n            outputs = outputs[mask]\n            targets = targets[mask]\n\n        self.outputs.extend(outputs)\n        self.targets.extend(targets)\n\n    def on_loader_end(self, state):\n        targets = np.array(self.targets)\n        outputs = np.array(self.outputs)\n\n        if self.class_names is None:\n            class_names = [str(i) for i in range(targets.shape[1])]\n        else:\n            class_names = self.class_names\n\n        num_classes = len(class_names)\n\n        best_score = 0\n        best_th = 0\n\n        best_fsores = {c: 0 for c in range(num_classes)}\n        best_fsores_th = {}\n        for th in np.linspace(0, 1, 41):\n            cm = multilabel_confusion_matrix(\n                targets, outputs > th, labels=range(num_classes)\n            )\n            for c in range(num_classes):\n\n                tn, fp, fn, tp = cm[c].ravel()\n\n                if (tp + fp) == 0:\n                    precision = 0\n                else:\n                    precision = tp / (tp + fp)\n\n                if (tp + fn) == 0:\n                    recall = 0\n                else:\n                    recall = tp / (tp + fn)\n\n                if precision == 0 or recall == 0:\n                    fscore = 0\n                else:\n                    fscore = 2 * (precision * recall / (precision + recall))\n                if best_fsores[c] < fscore:\n                    best_fsores_th[c] = th\n                    state.metrics.epoch_values[state.loader_name][\n                        str(c) + \"_precision_best\"\n                    ] = precision\n                    state.metrics.epoch_values[state.loader_name][\n                        str(c) + \"_recall_best\"\n                    ] = recall\n                    state.metrics.epoch_values[state.loader_name][\n                        str(c) + \"_fscore_best\"\n                    ] = fscore\n                    state.metrics.epoch_values[state.loader_name][\n                        str(c) + \"_fscore_best_th\"\n                    ] = th\n                    best_fsores[c] = fscore\n\n        state.metrics.epoch_values[state.loader_name][\"fscore_macro_best\"] = np.mean(\n            [best_fsores[i] for i in best_fsores]\n        )\n        cm = multilabel_confusion_matrix(\n            targets, outputs > 0.5, labels=range(num_classes)\n        )\n        for c in range(num_classes):\n\n            tn, fp, fn, tp = cm[c].ravel()\n            if (tp + fp) == 0:\n                precision = 0\n            else:\n                precision = tp / (tp + fp)\n\n            if (tp + fn) == 0:\n                recall = 0\n            else:\n                recall = tp / (tp + fn)\n            if precision == 0 or recall == 0:\n                fscore = 0\n            else:\n                fscore = 2 * (precision * recall / (precision + recall))\n            state.metrics.epoch_values[state.loader_name][\n                str(c) + \"_precision_05\"\n            ] = precision\n            state.metrics.epoch_values[state.loader_name][\n                str(c) + \"_recall_05\"\n            ] = recall\n            state.metrics.epoch_values[state.loader_name][\n                str(c) + \"_fscore_05\"\n            ] = fscore\n\n\n#         logger = get_tensorboard_logger(state)\n#         logger.add_image(f\"{self.prefix}/epoch\", fig, global_step=state.step)\n\n\nclass MacroF1Callback(Callback):\n    \"\"\"\n    Compute F1-macro metric\n    \"\"\"\n\n    def __init__(\n        self,\n        input_key: str = \"targets\",\n        output_key: str = \"logits\",\n        prefix: str = \"macro_f1\",\n        ignore_index=None,\n    ):\n        \"\"\"\n        :param input_key: input key to use for precision calculation;\n            specifies our `y_true`.\n        :param output_key: output key to use for precision calculation;\n            specifies our `y_pred`.\n        \"\"\"\n        super().__init__(CallbackOrder.Metric)\n        self.metric_fn = lambda outputs, targets: f1_score(\n            targets, outputs, average=\"macro\"\n        )\n        self.prefix = prefix\n        self.output_key = output_key\n        self.input_key = input_key\n        self.outputs = []\n        self.targets = []\n        self.ignore_index = ignore_index\n\n    def on_batch_end(self, state: RunnerState):\n        outputs = to_numpy(torch.sigmoid(state.output[self.output_key]))\n        targets = to_numpy(state.input[self.input_key])\n\n        num_classes = outputs.shape[1]\n\n        outputs = 1 * (outputs > 0.5)\n\n        #         targets = np.argmax(targets, axis=1)\n\n        if self.ignore_index is not None:\n            mask = targets != self.ignore_index\n            outputs = outputs[mask]\n            targets = targets[mask]\n\n        #         outputs = [np.eye(num_classes)[y] for y in outputs]\n        #         targets = [np.eye(num_classes)[y] for y in targets]\n\n        self.outputs.extend(outputs)\n        self.targets.extend(targets)\n\n        # metric = self.metric_fn(self.targets, self.outputs)\n        # state.metrics.add_batch_value(name=self.prefix, value=metric)\n\n    def on_loader_start(self, state):\n        self.outputs = []\n        self.targets = []\n\n    def on_loader_end(self, state):\n        metric_name = self.prefix\n        targets = np.array(self.targets)\n        outputs = np.array(self.outputs)\n\n        metric = self.metric_fn(outputs, targets)\n        state.metrics.epoch_values[state.loader_name][metric_name] = metric\n\n\ndef binary_dice_iou_score(\n    y_pred: torch.Tensor,\n    y_true: torch.Tensor,\n    mode=\"dice\",\n    threshold=None,\n    nan_score_on_empty=False,\n    eps=1e-7,\n) -> float:\n    \"\"\"\n    Compute IoU score between two image tensors\n    :param y_pred: Input image tensor of any shape\n    :param y_true: Target image of any shape (must match size of y_pred)\n    :param mode: Metric to compute (dice, iou)\n    :param threshold: Optional binarization threshold to apply on @y_pred\n    :param nan_score_on_empty: If true, return np.nan if target has no positive pixels;\n        If false, return 1. if both target and input are empty, and 0 otherwise.\n    :param eps: Small value to add to denominator for numerical stability\n    :return: Float scalar\n    \"\"\"\n    assert mode in {\"dice\", \"iou\"}\n\n    # Binarize predictions\n    if threshold is not None:\n        y_pred = (y_pred > threshold).to(y_true.dtype)\n\n    intersection = torch.sum(y_pred * y_true).item()\n    cardinality = (torch.sum(y_pred) + torch.sum(y_true)).item()\n\n    if mode == \"dice\":\n        score = (2.0 * intersection) / (cardinality + eps)\n    else:\n        score = intersection / (cardinality + eps)\n\n    has_targets = torch.sum(y_true) > 0\n    has_predicted = torch.sum(y_pred) > 0\n\n    if not has_targets:\n        if nan_score_on_empty:\n            score = np.nan\n        else:\n            score = float(not has_predicted)\n    return score\n\n\ndef multiclass_dice_iou_score(\n    y_pred: torch.Tensor,\n    y_true: torch.Tensor,\n    mode=\"dice\",\n    threshold=None,\n    eps=1e-7,\n    nan_score_on_empty=False,\n    classes_of_interest=None,\n):\n    ious = []\n    num_classes = y_pred.size(0)\n    y_pred = y_pred.argmax(dim=0)\n\n    if classes_of_interest is None:\n        classes_of_interest = range(num_classes)\n\n    for class_index in classes_of_interest:\n        iou = binary_dice_iou_score(\n            y_pred=(y_pred == class_index).float(),\n            y_true=(y_true == class_index).float(),\n            mode=mode,\n            nan_score_on_empty=nan_score_on_empty,\n            threshold=threshold,\n            eps=eps,\n        )\n        ious.append(iou)\n\n    return ious\n\n\ndef multilabel_dice_iou_score(\n    y_true: torch.Tensor,\n    y_pred: torch.Tensor,\n    mode=\"dice\",\n    threshold=None,\n    eps=1e-7,\n    nan_score_on_empty=False,\n    classes_of_interest=None,\n):\n    ious = []\n    num_classes = y_pred.size(0)\n\n    if classes_of_interest is None:\n        classes_of_interest = range(num_classes)\n\n    for class_index in classes_of_interest:\n        iou = binary_dice_iou_score(\n            y_pred=y_pred[class_index],\n            y_true=y_true[class_index],\n            mode=mode,\n            threshold=threshold,\n            nan_score_on_empty=nan_score_on_empty,\n            eps=eps,\n        )\n        ious.append(iou)\n\n    return ious\n\n\nclass IoUMetricsCallback(Callback):\n    \"\"\"\n    A metric callback for computing either Dice or Jaccard metric\n    which is computed across whole epoch, not per-batch.\n    \"\"\"\n\n    def __init__(\n        self,\n        mode: str,\n        metric=\"dice\",\n        class_names=None,\n        classes_of_interest=None,\n        input_key: str = \"targets\",\n        output_key: str = \"logits\",\n        nan_score_on_empty=True,\n        prefix: str = None,\n    ):\n        \"\"\"\n        :param mode: One of: 'binary', 'multiclass', 'multilabel'.\n        :param input_key: input key to use for precision calculation; specifies our `y_true`.\n        :param output_key: output key to use for precision calculation; specifies our `y_pred`.\n        :param accuracy_for_empty:\n        \"\"\"\n        super().__init__(CallbackOrder.Metric)\n        assert mode in {BINARY_MODE, MULTILABEL_MODE, MULTICLASS_MODE}\n\n        if prefix is None:\n            prefix = metric\n\n        if classes_of_interest is not None:\n            if classes_of_interest.dtype == np.bool:\n                num_classes = len(classes_of_interest)\n                classes_of_interest = np.arange(num_classes)[classes_of_interest]\n\n            if class_names is not None:\n                if len(class_names) != len(classes_of_interest):\n                    raise ValueError(\n                        \"Length of 'classes_of_interest' must be equal to length of 'classes_of_interest'\"\n                    )\n\n        self.mode = mode\n        self.prefix = prefix\n        self.output_key = output_key\n        self.input_key = input_key\n        self.class_names = class_names\n        self.classes_of_interest = classes_of_interest\n        self.scores = []\n\n        if self.mode == BINARY_MODE:\n            self.score_fn = partial(\n                binary_dice_iou_score,\n                threshold=0.0,\n                nan_score_on_empty=nan_score_on_empty,\n                mode=metric,\n            )\n\n        if self.mode == MULTICLASS_MODE:\n            self.score_fn = partial(\n                multiclass_dice_iou_score,\n                mode=metric,\n                threshold=0.0,\n                nan_score_on_empty=nan_score_on_empty,\n                classes_of_interest=self.classes_of_interest,\n            )\n\n        if self.mode == MULTILABEL_MODE:\n            self.score_fn = partial(\n                multilabel_dice_iou_score,\n                mode=metric,\n                threshold=0.5,\n                nan_score_on_empty=nan_score_on_empty,\n                classes_of_interest=self.classes_of_interest,\n            )\n\n    def on_loader_start(self, state):\n        self.scores = []\n\n    @torch.no_grad()\n    def on_batch_end(self, state: RunnerState):\n        outputs = state.output[self.output_key].detach()\n        targets = state.input[self.input_key].detach()\n\n        batch_size = targets.size(0)\n        score_per_image = []\n        for image_index in range(batch_size):\n            score_per_class = self.score_fn(\n                y_pred=outputs[image_index], y_true=targets[image_index]\n            )\n            score_per_image.append(score_per_class)\n\n        mean_score = np.nanmean(score_per_image)\n        state.metrics.add_batch_value(self.prefix, float(mean_score))\n        self.scores.extend(score_per_image)\n\n    def on_loader_end(self, state):\n        scores = np.array(self.scores)\n        mean_score = np.nanmean(scores)\n\n        state.metrics.epoch_values[state.loader_name][self.prefix] = float(mean_score)\n\n        # Log additional IoU scores per class\n        if self.mode in {MULTICLASS_MODE, MULTILABEL_MODE}:\n            num_classes = scores.shape[1]\n            class_names = self.class_names\n            if class_names is None:\n                class_names = [f\"class_{i}\" for i in range(num_classes)]\n\n            scores_per_class = np.nanmean(scores, axis=0)\n            for class_name, score_per_class in zip(class_names, scores_per_class):\n                state.metrics.epoch_values[state.loader_name][\n                    self.prefix + \"_\" + class_name\n                ] = float(score_per_class)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/optimizers.py",
    "content": "import math\nimport torch\nfrom torch.optim.optimizer import Optimizer\n\n\nclass RAdam(Optimizer):\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n        self.buffer = [[None, None, None] for ind in range(10)]\n        super(RAdam, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(RAdam, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\"RAdam does not support sparse gradients\")\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n\n                state[\"step\"] += 1\n                buffered = self.buffer[int(state[\"step\"] % 10)]\n                if state[\"step\"] == buffered[0]:\n                    N_sma, step_size = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state[\"step\"]\n                    beta2_t = beta2 ** state[\"step\"]\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n\n                    # more conservative since it's an approximated value\n                    if N_sma >= 5:\n                        step_size = (\n                            group[\"lr\"]\n                            * math.sqrt(\n                                (1 - beta2_t)\n                                * (N_sma - 4)\n                                / (N_sma_max - 4)\n                                * (N_sma - 2)\n                                / N_sma\n                                * N_sma_max\n                                / (N_sma_max - 2)\n                            )\n                            / (1 - beta1 ** state[\"step\"])\n                        )\n                    else:\n                        step_size = group[\"lr\"] / (1 - beta1 ** state[\"step\"])\n                    buffered[2] = step_size\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                # more conservative since it's an approximated value\n                if N_sma >= 5:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-step_size, exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-step_size, exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\nclass PlainRAdam(Optimizer):\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n\n        super(PlainRAdam, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(PlainRAdam, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\"RAdam does not support sparse gradients\")\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n\n                state[\"step\"] += 1\n                beta2_t = beta2 ** state[\"step\"]\n                N_sma_max = 2 / (1 - beta2) - 1\n                N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                # more conservative since it's an approximated value\n                if N_sma >= 5:\n                    step_size = (\n                        group[\"lr\"]\n                        * math.sqrt(\n                            (1 - beta2_t)\n                            * (N_sma - 4)\n                            / (N_sma_max - 4)\n                            * (N_sma - 2)\n                            / N_sma\n                            * N_sma_max\n                            / (N_sma_max - 2)\n                        )\n                        / (1 - beta1 ** state[\"step\"])\n                    )\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-step_size, exp_avg, denom)\n                else:\n                    step_size = group[\"lr\"] / (1 - beta1 ** state[\"step\"])\n                    p_data_fp32.add_(-step_size, exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\nclass AdamW(Optimizer):\n    def __init__(\n        self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, warmup=0\n    ):\n        defaults = dict(\n            lr=lr, betas=betas, eps=eps, weight_decay=weight_decay, warmup=warmup\n        )\n        super(AdamW, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(AdamW, self).__setstate__(state)\n\n    def step(self, closure=None):\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\n                        \"Adam does not support sparse gradients, please consider SparseAdam instead\"\n                    )\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                state[\"step\"] += 1\n\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n\n                denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                bias_correction1 = 1 - beta1 ** state[\"step\"]\n                bias_correction2 = 1 - beta2 ** state[\"step\"]\n\n                if group[\"warmup\"] > state[\"step\"]:\n                    scheduled_lr = 1e-8 + state[\"step\"] * group[\"lr\"] / group[\"warmup\"]\n                else:\n                    scheduled_lr = group[\"lr\"]\n\n                step_size = group[\"lr\"] * math.sqrt(bias_correction2) / bias_correction1\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * scheduled_lr, p_data_fp32)\n\n                p_data_fp32.addcdiv_(-step_size, exp_avg, denom)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\n# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\nclass AdamW(Optimizer):\n    \"\"\"Implements AdamW algorithm.\n\n    It has been proposed in `Adam: A Method for Stochastic Optimization`_.\n\n    Arguments:\n        params (iterable): iterable of parameters to optimize or dicts defining\n            parameter groups\n        lr (float, optional): learning rate (default: 1e-3)\n        betas (Tuple[float, float], optional): coefficients used for computing\n            running averages of gradient and its square (default: (0.9, 0.999))\n        eps (float, optional): term added to the denominator to improve\n            numerical stability (default: 1e-8)\n        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)\n        amsgrad (boolean, optional): whether to use the AMSGrad variant of this\n            algorithm from the paper `On the Convergence of Adam and Beyond`_\n\n        Adam: A Method for Stochastic Optimization:\n        https://arxiv.org/abs/1412.6980\n        On the Convergence of Adam and Beyond:\n        https://openreview.net/forum?id=ryQu7f-RZ\n    \"\"\"\n\n    def __init__(\n        self,\n        params,\n        lr=1e-3,\n        betas=(0.9, 0.999),\n        eps=1e-8,\n        weight_decay=0,\n        amsgrad=False,\n    ):\n        if not 0.0 <= lr:\n            raise ValueError(\"Invalid learning rate: {}\".format(lr))\n        if not 0.0 <= eps:\n            raise ValueError(\"Invalid epsilon value: {}\".format(eps))\n        if not 0.0 <= betas[0] < 1.0:\n            raise ValueError(\"Invalid beta parameter at index 0: {}\".format(betas[0]))\n        if not 0.0 <= betas[1] < 1.0:\n            raise ValueError(\"Invalid beta parameter at index 1: {}\".format(betas[1]))\n        defaults = dict(\n            lr=lr, betas=betas, eps=eps, weight_decay=weight_decay, amsgrad=amsgrad\n        )\n        super(AdamW, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(AdamW, self).__setstate__(state)\n        for group in self.param_groups:\n            group.setdefault(\"amsgrad\", False)\n\n    def step(self, closure=None):\n        \"\"\"Performs a single optimization step.\n\n        Arguments:\n            closure (callable, optional): A closure that reevaluates the model\n                and returns the loss.\n        \"\"\"\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data\n                if grad.is_sparse:\n                    raise RuntimeError(\n                        \"Adam does not support sparse gradients, please consider SparseAdam instead\"\n                    )\n                amsgrad = group[\"amsgrad\"]\n\n                state = self.state[p]\n\n                # State initialization\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    # Exponential moving average of gradient values\n                    state[\"exp_avg\"] = torch.zeros_like(p.data)\n                    # Exponential moving average of squared gradient values\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p.data)\n                    if amsgrad:\n                        # Maintains max of all exp. moving avg. of sq. grad. values\n                        state[\"max_exp_avg_sq\"] = torch.zeros_like(p.data)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                if amsgrad:\n                    max_exp_avg_sq = state[\"max_exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                state[\"step\"] += 1\n                # Decay the first and second moment running average coefficient\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                if amsgrad:\n                    # Maintains the maximum of all 2nd moment running avg. till now\n                    torch.max(max_exp_avg_sq, exp_avg_sq, out=max_exp_avg_sq)\n                    # Use the max. for normalizing running avg. of gradient\n                    denom = max_exp_avg_sq.sqrt().add_(group[\"eps\"])\n                else:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n\n                bias_correction1 = 1 - beta1 ** state[\"step\"]\n                bias_correction2 = 1 - beta2 ** state[\"step\"]\n                step_size = group[\"lr\"] * math.sqrt(bias_correction2) / bias_correction1\n                p.data.add_(\n                    -step_size,\n                    torch.mul(p.data, group[\"weight_decay\"]).addcdiv_(\n                        1, exp_avg, denom\n                    ),\n                )\n\n        return loss\n\n\nclass Novograd(Optimizer):\n    \"\"\"\n    Implements Novograd algorithm.\n    Args:\n        params (iterable): iterable of parameters to optimize or dicts defining\n            parameter groups\n        lr (float, optional): learning rate (default: 1e-3)\n        betas (Tuple[float, float], optional): coefficients used for computing\n            running averages of gradient and its square (default: (0.95, 0))\n        eps (float, optional): term added to the denominator to improve\n            numerical stability (default: 1e-8)\n        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)\n        grad_averaging: gradient averaging\n        amsgrad (boolean, optional): whether to use the AMSGrad variant of this\n            algorithm from the paper `On the Convergence of Adam and Beyond`_\n            (default: False)\n    \"\"\"\n\n    def __init__(\n        self,\n        params,\n        lr=1e-3,\n        betas=(0.95, 0),\n        eps=1e-8,\n        weight_decay=0,\n        grad_averaging=False,\n        amsgrad=False,\n    ):\n        if not 0.0 <= lr:\n            raise ValueError(\"Invalid learning rate: {}\".format(lr))\n        if not 0.0 <= eps:\n            raise ValueError(\"Invalid epsilon value: {}\".format(eps))\n        if not 0.0 <= betas[0] < 1.0:\n            raise ValueError(\"Invalid beta parameter at index 0: {}\".format(betas[0]))\n        if not 0.0 <= betas[1] < 1.0:\n            raise ValueError(\"Invalid beta parameter at index 1: {}\".format(betas[1]))\n        defaults = dict(\n            lr=lr,\n            betas=betas,\n            eps=eps,\n            weight_decay=weight_decay,\n            grad_averaging=grad_averaging,\n            amsgrad=amsgrad,\n        )\n\n        super(Novograd, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(Novograd, self).__setstate__(state)\n        for group in self.param_groups:\n            group.setdefault(\"amsgrad\", False)\n\n    def step(self, closure=None):\n        \"\"\"Performs a single optimization step.\n        Arguments:\n            closure (callable, optional): A closure that reevaluates the model\n            and returns the loss.\n        \"\"\"\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data\n                if grad.is_sparse:\n                    raise RuntimeError(\"Sparse gradients are not supported.\")\n                amsgrad = group[\"amsgrad\"]\n\n                state = self.state[p]\n\n                # State initialization\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    # Exponential moving average of gradient values\n                    state[\"exp_avg\"] = torch.zeros_like(p.data)\n                    # Exponential moving average of squared gradient values\n                    state[\"exp_avg_sq\"] = torch.zeros([]).to(state[\"exp_avg\"].device)\n                    if amsgrad:\n                        # Maintains max of all exp. moving avg. of sq. grad. values\n                        state[\"max_exp_avg_sq\"] = torch.zeros([]).to(\n                            state[\"exp_avg\"].device\n                        )\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                if amsgrad:\n                    max_exp_avg_sq = state[\"max_exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                state[\"step\"] += 1\n\n                norm = torch.sum(torch.pow(grad, 2))\n\n                if exp_avg_sq == 0:\n                    exp_avg_sq.copy_(norm)\n                else:\n                    exp_avg_sq.mul_(beta2).add_(1 - beta2, norm)\n\n                if amsgrad:\n                    # Maintains the maximum of all 2nd moment running avg. till now\n                    torch.max(max_exp_avg_sq, exp_avg_sq, out=max_exp_avg_sq)\n                    # Use the max. for normalizing running avg. of gradient\n                    denom = max_exp_avg_sq.sqrt().add_(group[\"eps\"])\n                else:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n\n                grad.div_(denom)\n                if group[\"weight_decay\"] != 0:\n                    grad.add_(group[\"weight_decay\"], p.data)\n                if group[\"grad_averaging\"]:\n                    grad.mul_(1 - beta1)\n                exp_avg.mul_(beta1).add_(grad)\n\n                p.data.add_(-group[\"lr\"], exp_avg)\n\n        return loss\n\n\n# Lookahead implementation from https://github.com/lonePatient/lookahead_pytorch/blob/master/optimizer.py\n\nimport itertools as it\nfrom torch.optim import Adam\n\n\nclass Lookahead(Optimizer):\n    def __init__(self, base_optimizer, alpha=0.5, k=6):\n        if not 0.0 <= alpha <= 1.0:\n            raise ValueError(f\"Invalid slow update rate: {alpha}\")\n        if not 1 <= k:\n            raise ValueError(f\"Invalid lookahead steps: {k}\")\n        self.optimizer = base_optimizer\n        self.param_groups = self.optimizer.param_groups\n        self.alpha = alpha\n        self.k = k\n        for group in self.param_groups:\n            group[\"step_counter\"] = 0\n        self.slow_weights = [\n            [p.clone().detach() for p in group[\"params\"]] for group in self.param_groups\n        ]\n\n        for w in it.chain(*self.slow_weights):\n            w.requires_grad = False\n\n    def step(self, closure=None):\n        loss = None\n        if closure is not None:\n            loss = closure()\n        loss = self.optimizer.step()\n        for group, slow_weights in zip(self.param_groups, self.slow_weights):\n            group[\"step_counter\"] += 1\n            if group[\"step_counter\"] % self.k != 0:\n                continue\n            for p, q in zip(group[\"params\"], slow_weights):\n                if p.grad is None:\n                    continue\n                q.data.add_(self.alpha, p.data - q.data)\n                p.data.copy_(q.data)\n        return loss\n\n\ndef LookaheadAdam(params, alpha=0.5, k=6, *args, **kwargs):\n    adam = Adam(params, *args, **kwargs)\n    return Lookahead(adam, alpha, k)\n\n\nimport torch, math\nfrom torch.optim.optimizer import Optimizer\n\n\n# RAdam + LARS\nclass Ralamb(Optimizer):\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n        self.buffer = [[None, None, None] for ind in range(10)]\n        super(Ralamb, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(Ralamb, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\"Ralamb does not support sparse gradients\")\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                # Decay the first and second moment running average coefficient\n                # m_t\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n                # v_t\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n\n                state[\"step\"] += 1\n                buffered = self.buffer[int(state[\"step\"] % 10)]\n\n                if state[\"step\"] == buffered[0]:\n                    N_sma, radam_step = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state[\"step\"]\n                    beta2_t = beta2 ** state[\"step\"]\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n\n                    # more conservative since it's an approximated value\n                    if N_sma >= 5:\n                        radam_step = (\n                            group[\"lr\"]\n                            * math.sqrt(\n                                (1 - beta2_t)\n                                * (N_sma - 4)\n                                / (N_sma_max - 4)\n                                * (N_sma - 2)\n                                / N_sma\n                                * N_sma_max\n                                / (N_sma_max - 2)\n                            )\n                            / (1 - beta1 ** state[\"step\"])\n                        )\n                    else:\n                        radam_step = group[\"lr\"] / (1 - beta1 ** state[\"step\"])\n                    buffered[2] = radam_step\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                weight_norm = p.data.pow(2).sum().sqrt().clamp(0, 10)\n                radam_norm = p_data_fp32.pow(2).sum().sqrt()\n                if weight_norm == 0 or radam_norm == 0:\n                    trust_ratio = 1\n                else:\n                    trust_ratio = weight_norm / radam_norm\n\n                state[\"weight_norm\"] = weight_norm\n                state[\"adam_norm\"] = radam_norm\n                state[\"trust_ratio\"] = trust_ratio\n\n                # more conservative since it's an approximated value\n                if N_sma >= 5:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-radam_step * trust_ratio, exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-radam_step * trust_ratio, exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\n# RAdam + LARS + LookAHead\n\n# Lookahead implementation from https://github.com/lonePatient/lookahead_pytorch/blob/master/optimizer.py\n# RAdam + LARS implementation from https://gist.github.com/redknightlois/c4023d393eb8f92bb44b2ab582d7ec20\n\n\ndef Over9000(params, alpha=0.5, k=6, *args, **kwargs):\n    ralamb = Ralamb(params, *args, **kwargs)\n    return Lookahead(ralamb, alpha, k)\n\n\nRangerLars = Over9000\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/training_helper.py",
    "content": "import os\nfrom sklearn.model_selection import StratifiedKFold\nimport cv2\nimport pdb\nimport time\nimport warnings\nimport random\nimport numpy as np\nimport pandas as pd\nfrom tqdm import tqdm as tqdm\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\nfrom sklearn.model_selection import train_test_split\nimport torch\nimport torch.nn as nn\nfrom torch.nn import functional as F\nimport torch.optim as optim\nimport torch.backends.cudnn as cudnn\nfrom torch.utils.data import DataLoader, Dataset, sampler\nfrom matplotlib import pyplot as plt\nfrom .metric import Meter, epoch_log\nfrom .dataloader import provider_cv, provider_trai_test_split\nimport sys\nfrom .losses import BCEDiceLoss, FocalLoss, JaccardLoss, DiceLoss\nfrom .lovasz_losses import LovaszLoss, LovaszLossSymmetric\n\nsys.path.append(\"..\")\nfrom configs.train_params import *\nfrom .optimizers import RAdam, Over9000, Adam\n\n\nclass Trainer_cv(object):\n    \"\"\"This class takes care of training and validation of our model\"\"\"\n\n    def __init__(\n        self,\n        model,\n        num_epochs,\n        current_fold=0,\n        batch_size={\"train\": 4, \"val\": 4},\n        optimizer_state=None,\n    ):\n        self.current_fold = current_fold\n        self.total_folds = TOTAL_FOLDS\n        self.num_workers = 4\n        self.batch_size = batch_size\n        self.accumulation_steps = 32 // self.batch_size[\"train\"]\n        self.lr = LEARNING_RATE\n        self.num_epochs = num_epochs\n        self.best_metric = INITIAL_MINIMUM_DICE  # float(\"inf\")\n        self.phases = [\"train\", \"val\"]\n        self.device = torch.device(\"cuda:0\")\n        torch.set_default_tensor_type(\"torch.cuda.FloatTensor\")\n        self.net = model  # torch.nn.BCEWithLogitsLoss()\n        self.criterion = (\n            BCEDiceLoss()\n        )  # JaccardLoss()#LovaszLossSymmetric(per_image=True, classes=[0,1,2,3])\n        # BCEDiceLoss()  # BCEDiceLoss()#FocalLoss(num_class=4)  # BCEDiceLoss()  # torch.nn.BCEWithLogitsLoss()\n        self.optimizer = RAdam(\n            [\n                {\"params\": self.net.decoder.parameters(), \"lr\": self.lr},\n                {\"params\": self.net.encoder.parameters(), \"lr\": self.lr},\n            ]\n        )  # optim.Adam(self.net.parameters(), lr=self.lr)\n\n        if optimizer_state is not None:\n            self.optimizer.load_state_dict(optimizer_state)\n        self.scheduler = ReduceLROnPlateau(\n            self.optimizer, factor=0.9, mode=\"min\", patience=3, verbose=True\n        )\n        self.net = self.net.to(self.device)\n        cudnn.benchmark = True\n        self.dataloaders = {\n            phase: provider_cv(\n                fold=self.current_fold,\n                total_folds=self.total_folds,\n                data_folder=data_folder,\n                df_path=train_df_path,\n                phase=phase,\n                mean=(0.485, 0.456, 0.406),\n                std=(0.229, 0.224, 0.225),\n                batch_size=self.batch_size[phase],\n                num_workers=self.num_workers,\n            )\n            for phase in self.phases\n        }\n        self.losses = {phase: [] for phase in self.phases}\n        # self.iou_scores = {phase: [] for phase in self.phases}\n        self.dice_scores = {phase: [] for phase in self.phases}\n\n    def forward(self, images, targets):\n        images = images.to(self.device)\n        masks = targets.to(self.device)\n        outputs = self.net(images)\n        loss = self.criterion(outputs, masks)\n        return loss, outputs\n\n    def iterate(self, epoch, phase):\n        meter = Meter(phase, epoch)\n        start = time.strftime(\"%H:%M:%S\")\n        print(f\"Starting epoch: {epoch} | phase: {phase} | ⏰: {start}\")\n        batch_size = self.batch_size[phase]\n        self.net.train(phase == \"train\")\n        dataloader = self.dataloaders[phase]\n        running_loss = 0.0\n        total_batches = len(dataloader)\n        tk0 = tqdm(dataloader, total=total_batches)\n        self.optimizer.zero_grad()\n        for itr, batch in enumerate(dataloader):\n            images, targets = batch\n            loss, outputs = self.forward(images, targets)\n            loss = loss / self.accumulation_steps\n            if phase == \"train\":\n                loss.backward()\n                if (itr + 1) % self.accumulation_steps == 0:\n                    self.optimizer.step()\n                    self.optimizer.zero_grad()\n            running_loss += loss.item()\n            outputs = outputs.detach().cpu()\n            meter.update(targets, outputs)\n            tk0.update(1)\n            tk0.set_postfix(loss=(running_loss / (itr + 1)))\n        tk0.close()\n        epoch_loss = (running_loss * self.accumulation_steps) / total_batches\n        dice = epoch_log(phase, epoch, epoch_loss, meter, start)\n        self.losses[phase].append(epoch_loss)\n        self.dice_scores[phase].append(dice)\n        # self.iou_scores[phase].append(iou)\n        torch.cuda.empty_cache()\n        return epoch_loss, dice\n\n    def start(self):\n        epoch_wo_improve_score = 0\n        for epoch in range(self.num_epochs):\n            if EARLY_STOPING is not None and epoch_wo_improve_score >= EARLY_STOPING:\n                print(\"Early stopping {}\".format(EARLY_STOPING))\n                torch.save(\n                    state,\n                    \"./model_weights/model_{}_fold_{}_last_epoch_{}_dice_{}.pth\".format(\n                        unet_encoder, self.current_fold, epoch, val_dice\n                    ),\n                )\n                break\n            self.iterate(epoch, \"train\")\n            state = {\n                \"epoch\": epoch,\n                \"best_metric\": self.best_metric,\n                \"state_dict\": self.net.state_dict(),\n                \"optimizer\": self.optimizer.state_dict(),\n            }\n            val_loss, val_dice = self.iterate(epoch, \"val\")\n            self.scheduler.step(val_loss)\n            if val_dice > self.best_metric:\n                print(\"******** New optimal found, saving state ********\")\n                state[\"best_metric\"] = self.best_metric = val_dice\n                torch.save(\n                    state,\n                    \"./model_weights/model_{}_fold_{}_epoch_{}_dice_{}.pth\".format(\n                        unet_encoder, self.current_fold, epoch, val_dice\n                    ),\n                )\n                epoch_wo_improve_score = 0\n            else:\n                epoch_wo_improve_score += 1\n            print()\n        if num_epochs > 1:\n            torch.save(\n                state,\n                \"./model_weights/model_{}_fold_{}_last_epoch_{}_dice_{}.pth\".format(\n                    unet_encoder, self.current_fold, epoch, val_dice\n                ),\n            )\n\n\n\"\"\" WARNING DEPRECATED\nclass Trainer_split(object):\n    '''This class takes care of training and validation of our model'''\n\n    def __init__(self, model):\n        self.num_workers = 6\n        self.batch_size = {\"train\": 4, \"val\": 4}\n        self.accumulation_steps = 32 // self.batch_size['train']\n        self.lr = 5e-4\n        self.num_epochs = 20\n        self.best_loss = float(\"inf\")\n        self.phases = [\"train\", \"val\"]\n        self.device = torch.device(\"cuda:0\")\n        torch.set_default_tensor_type(\"torch.cuda.FloatTensor\")\n        self.net = model\n        self.criterion = torch.nn.BCEWithLogitsLoss()\n        self.optimizer = optim.Adam(self.net.parameters(), lr=self.lr)\n        self.scheduler = ReduceLROnPlateau(self.optimizer, mode=\"min\", patience=3, verbose=True)\n        self.net = self.net.to(self.device)\n        cudnn.benchmark = True\n        self.dataloaders = {\n            phase: provider_trai_test_split(\n                data_folder=data_folder,\n                df_path=train_df_path,\n                phase=phase,\n                mean=(0.485, 0.456, 0.406),\n                std=(0.229, 0.224, 0.225),\n                batch_size=self.batch_size[phase],\n                num_workers=self.num_workers,\n            )\n            for phase in self.phases\n        }\n        self.losses = {phase: [] for phase in self.phases}\n        # self.iou_scores = {phase: [] for phase in self.phases}\n        self.dice_scores = {phase: [] for phase in self.phases}\n\n    def forward(self, images, targets):\n        images = images.to(self.device)\n        masks = targets.to(self.device)\n        outputs = self.net(images)\n        loss = self.criterion(outputs, masks)\n        return loss, outputs\n\n    def iterate(self, epoch, phase):\n        meter = Meter(phase, epoch)\n        start = time.strftime(\"%H:%M:%S\")\n        print(f\"Starting epoch: {epoch} | phase: {phase} | ⏰: {start}\")\n        batch_size = self.batch_size[phase]\n        self.net.train(phase == \"train\")\n        dataloader = self.dataloaders[phase]\n        running_loss = 0.0\n        total_batches = len(dataloader)\n        #         tk0 = tqdm(dataloader, total=total_batches)\n        self.optimizer.zero_grad()\n        for itr, batch in enumerate(dataloader):  # replace `dataloader` with `tk0` for tqdm\n            images, targets = batch\n            loss, outputs = self.forward(images, targets)\n            loss = loss / self.accumulation_steps\n            if phase == \"train\":\n                loss.backward()\n                if (itr + 1) % self.accumulation_steps == 0:\n                    self.optimizer.step()\n                    self.optimizer.zero_grad()\n            running_loss += loss.item()\n            outputs = outputs.detach().cpu()\n            meter.update(targets, outputs)\n        #             tk0.set_postfix(loss=(running_loss / ((itr + 1))))\n        epoch_loss = (running_loss * self.accumulation_steps) / total_batches\n        dice = epoch_log(phase, epoch, epoch_loss, meter, start)\n        self.losses[phase].append(epoch_loss)\n        self.dice_scores[phase].append(dice)\n        # self.iou_scores[phase].append(iou)\n        torch.cuda.empty_cache()\n        return epoch_loss\n\n    def start(self):\n        for epoch in range(self.num_epochs):\n            self.iterate(epoch, \"train\")\n            state = {\n                \"epoch\": epoch,\n                \"best_metric\": self.best_loss,\n                \"state_dict\": self.net.state_dict(),\n                \"optimizer\": self.optimizer.state_dict(),\n            }\n            with torch.no_grad():\n                val_loss = self.iterate(epoch, \"val\")\n                self.scheduler.step(val_loss)\n            if val_loss < self.best_loss:\n                # TODO save weights on last epoch too\n                print(\"******** New optimal found, saving state ********\")\n                state[\"best_metric\"] = self.best_loss = val_loss\n                torch.save(state, \"./model.pth\")\n            print()\n\"\"\"\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/common_blocks/utils.py",
    "content": "import numpy as np\nimport matplotlib.pyplot as plt\nimport torch\nimport random\nimport numpy as np\nimport os\nfrom segmentation_models_pytorch import Unet, FPN\nimport sys\nfrom collections import OrderedDict\n\nsys.path.append(\"..\")\nfrom configs.train_params import *\n\n\n# https://www.kaggle.com/paulorzp/rle-functions-run-lenght-encode-decode\ndef mask2rle(img):\n    \"\"\"\n    img: numpy array, 1 -> mask, 0 -> background\n    Returns run length as string formated\n    \"\"\"\n    pixels = img.T.flatten()\n    pixels = np.concatenate([[0], pixels, [0]])\n    runs = np.where(pixels[1:] != pixels[:-1])[0] + 1\n    runs[1::2] -= runs[::2]\n    return \" \".join(str(x) for x in runs)\n\n\ndef make_mask(row_id, df):\n    \"\"\"Given a row index, return image_id and mask (256, 1600, 4) from the dataframe `df`\"\"\"\n    fname = df.iloc[row_id].name\n    labels = df.iloc[row_id][:4]\n    masks = np.zeros((256, 1600, 4), dtype=np.float32)  # float32 is V.Imp\n    # 4:class 1～4 (ch:0～3)\n\n    for idx, label in enumerate(labels.values):\n        if label is not np.nan:\n            label = label.split(\" \")\n            positions = map(int, label[0::2])\n            length = map(int, label[1::2])\n            mask = np.zeros(256 * 1600, dtype=np.uint8)\n            for pos, le in zip(positions, length):\n                mask[pos : (pos + le)] = 1\n            masks[:, :, idx] = mask.reshape(256, 1600, order=\"F\")\n    return fname, masks\n\n\ndef plot(scores, name, fold=0, safe_pic=True):\n    if not isDebug:\n        plt.figure(figsize=(15, 5))\n        plt.plot(range(len(scores[\"train\"])), scores[\"train\"], label=f\"train {name}\")\n        plt.plot(range(len(scores[\"train\"])), scores[\"val\"], label=f\"val {name}\")\n        plt.title(f\"{name} plot\")\n        plt.xlabel(\"Epoch\")\n        plt.ylabel(f\"{name}\")\n        plt.legend()\n        if safe_pic:\n            plt.savefig(\"./logs/{}_fold_{}.png\".format(name, fold))\n        else:\n            plt.show()\n\n\ndef set_seed(seed=42):\n    random.seed(seed)\n    os.environ[\"PYTHONHASHSEED\"] = str(seed)\n    np.random.seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.backends.cudnn.deterministic = True\n\n\ndef load_model_unet(_model_weights, is_inference=False):\n    print(\"Using weights {}\".format(_model_weights))\n    if _model_weights == \"imagenet\":\n        model = Unet(\n            unet_encoder,\n            encoder_weights=\"imagenet\",\n            classes=4,\n            activation=None,\n            attention_type=ATTENTION_TYPE,\n        )\n        if is_inference:\n            model.eval()\n        return model\n    else:\n        model = Unet(\n            unet_encoder,\n            encoder_weights=None,  # \"imagenet\",\n            classes=4,\n            activation=None,\n            attention_type=ATTENTION_TYPE,\n        )\n        if is_inference:\n            model.eval()\n    if _model_weights is not None:\n        device = torch.device(\"cuda\")\n        model.to(device)\n        state = torch.load(\n            _model_weights\n        )  # , map_location=lambda storage, loc: storage)\n        model.load_state_dict(state[\"state_dict\"])\n        optimizer_state = state[\"optimizer\"]\n        return model, optimizer_state\n        # new_state_dict = OrderedDict()\n        #\n        # for k, v in state['state_dict'].items():\n        #     if k in model.state_dict():\n        #         new_state_dict[k] = v\n        # model = model.load_state_dict(new_state_dict)\n    return model\n\n\ndef load_model_fpn(_model_weights, is_inference=False):\n    print(\"Using weights {}\".format(_model_weights))\n    if _model_weights == \"imagenet\":\n        model = FPN(\n            unet_encoder, encoder_weights=\"imagenet\", classes=4, activation=None\n        )\n        if is_inference:\n            model.eval()\n        return model\n    else:\n        model = FPN(unet_encoder, encoder_weights=None, classes=4, activation=None)\n        if is_inference:\n            model.eval()\n    if _model_weights is not None:\n        device = torch.device(\"cuda\")\n        model.to(device)\n        state = torch.load(\n            _model_weights\n        )  # , map_location=lambda storage, loc: storage)\n        model.load_state_dict(state[\"state_dict\"])\n        # new_state_dict = OrderedDict()\n        #\n        # for k, v in state['state_dict'].items():\n        #     if k in model.state_dict():\n        #         new_state_dict[k] = v\n        # model = model.load_state_dict(new_state_dict)\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/configs/__init__.py",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/configs/train_params.py",
    "content": "sample_submission_path = (\n    \"./input/severstal-steel-defect-detection/sample_submission.csv\"\n)\ntrain_df_path = \"./input/severstal-steel-defect-detection/train.csv\"\ndata_folder = \"./input/severstal-steel-defect-detection/train_images\"\ntest_data_folder = \"./input/severstal-steel-defect-detection/test_images\"\nFOLDS_ids = \"./input/folds.pkl\"\nlb_test = \"./input/severstal-steel-defect-detection/submission_0.91625.csv\"\nisDebug = False\nunet_encoder = \"se_resnext50_32x4d\"\nATTENTION_TYPE = None\nnum_epochs = 100\nLEARNING_RATE = 5e-4 / 100\nBATCH_SIZE = {\"train\": 4, \"val\": 1}\nTOTAL_FOLDS = 10\nmodel_weights = \"imagenet\"\nEARLY_STOPING = 30\n\n\ncrop_image_size = None  # (256, 1600)\nINITIAL_MINIMUM_DICE = 0.9\n\nif isDebug:\n    num_epochs = 1\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/inference.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n\nget_ipython().system(\" python ../input/mlcomp/mlcomp/mlcomp/setup.py\")\nget_ipython().system(\n    \"pip install ../input/../input/efficientnet-pytorch/efficientnet-pytorch/EfficientNet-PyTorch-master\"\n)\nget_ipython().system(\n    \"pip install ../input/pretrainedmodels/pretrainedmodels-0.7.4/pretrainedmodels-0.7.4/\"\n)\nget_ipython().system(\n    \"pip install --no-deps  --no-dependencies ../input/segmentation-models-pytorch/ \"\n)\n\n\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")\nimport os\nimport matplotlib.pyplot as plt\n\nimport numpy as np\nimport cv2\nimport albumentations as A\nfrom tqdm import tqdm_notebook\nimport pandas as pd\n\nimport torch\nimport torch.nn as nn\nfrom torch.utils.data import DataLoader\nfrom torch.jit import load\n\nfrom mlcomp.contrib.transform.albumentations import ChannelTranspose\nfrom mlcomp.contrib.dataset.classify import ImageDataset\nfrom mlcomp.contrib.transform.rle import rle2mask, mask2rle\nfrom mlcomp.contrib.transform.tta import TtaWrap\n\n\nunet_se_resnext50_32x4d = load(\n    \"/kaggle/input/severstalmodels/unet_se_resnext50_32x4d.pth\"\n).cuda()\nunet_mobilenet2 = load(\"/kaggle/input/severstalmodels/unet_mobilenet2.pth\").cuda()\n# unet_resnet34 = load('/kaggle/input/severstalmodels/unet_resnet34.pth').cuda()\n\n\nimport os\nfrom segmentation_models_pytorch import Unet, FPN\n\n\nENCODER = \"resnet34\"\nENCODER_WEIGHTS = \"imagenet\"\nDEVICE = \"cuda\"\n\nCLASSES = [\"0\", \"1\", \"2\", \"3\", \"4\"]\nACTIVATION = \"softmax\"\n\n\nunet_resnet34 = Unet(\n    encoder_name=ENCODER, encoder_weights=None, classes=4, activation=\"sigmoid\"\n)\n\nstate = torch.load(\"../input/bce-clf/unet_res34_525.pth\")\nunet_resnet34.load_state_dict(state[\"model_state_dict\"])\n\n\nunet_resnet34 = unet_resnet34.cuda()\nunet_resnet34 = unet_resnet34.eval()\n\n\ndevice = torch.device(\"cuda\")\nmodel_senet = Unet(\n    \"se_resnext50_32x4d\", encoder_weights=None, classes=4, activation=None\n)\nmodel_senet.to(device)\nmodel_senet.eval()\nstate = torch.load(\n    \"../input/senetmodels/senext50_30_epochs_high_threshold.pth\",\n    map_location=lambda storage, loc: storage,\n)\nmodel_senet.load_state_dict(state[\"state_dict\"])\n\n\nmodel_fpn91lb = FPN(\n    encoder_name=\"se_resnext50_32x4d\", classes=4, activation=None, encoder_weights=None\n)\nmodel_fpn91lb.to(device)\nmodel_fpn91lb.eval()\n# state = torch.load('../input/fpnseresnext/model_se_resnext50_32x4d_fold_0_epoch_7_dice_0.935771107673645.pth', map_location=lambda storage, loc: storage)\nstate = torch.load(\n    \"../input/fpnse50dice944/model_se_resnext50_32x4d_fold_0_epoch_26_dice_0.94392.pth\",\n    map_location=lambda storage, loc: storage,\n)\nmodel_fpn91lb.load_state_dict(state[\"state_dict\"])\n\n\nmodel_fpn91lb_pseudo = FPN(\n    encoder_name=\"se_resnext50_32x4d\", classes=4, activation=None, encoder_weights=None\n)\nmodel_fpn91lb_pseudo.to(device)\nmodel_fpn91lb_pseudo.eval()\n# state = torch.load('../input/fpnseresnext/model_se_resnext50_32x4d_fold_0_epoch_7_dice_0.935771107673645.pth', map_location=lambda storage, loc: storage)\nstate = torch.load(\n    \"../input/942-finetuned-on-pseudo-to9399/pseudo_fpn_se_resnext50_32x4d_fold_0_epoch_22_dice_0.944/pseudo_fpn_se_resnext50_32x4d_fold_0_epoch_22_dice_0.9446276426315308.pth\",\n    map_location=lambda storage, loc: storage,\n)\nmodel_fpn91lb_pseudo.load_state_dict(state[\"state_dict\"])\n\n\nENCODER = \"se_resnext50_32x4d\"\nENCODER_WEIGHTS = \"imagenet\"\nCLASSES = [\"0\", \"1\", \"2\", \"3\", \"4\"]\nACTIVATION = \"softmax\"\nfpn_se = FPN(\n    encoder_name=ENCODER,\n    encoder_weights=None,\n    #     encoder_weights=ENCODER_WEIGHTS,\n    classes=len(CLASSES),\n    activation=ACTIVATION,\n)\nstate = torch.load(\"../input/bce-clf/fpn_se13.pth\")\nfpn_se.to(device)\nfpn_se.eval()\nfpn_se.load_state_dict(state[\"model_state_dict\"])\n\n\nENCODER = \"se_resnext50_32x4d\"\nENCODER_WEIGHTS = \"imagenet\"\nCLASSES = [\"0\", \"1\", \"2\", \"3\", \"4\"]\nACTIVATION = \"softmax\"\nfpn_se2 = FPN(\n    encoder_name=ENCODER,\n    encoder_weights=None,\n    #     encoder_weights=ENCODER_WEIGHTS,\n    classes=len(CLASSES),\n    activation=ACTIVATION,\n)\nstate = torch.load(\"../input/bce-clf/fpn_lovash_9519.pth\")\nfpn_se2.to(device)\nfpn_se2.eval()\nfpn_se2.load_state_dict(state[\"model_state_dict\"])\n\n\n# ### Models' mean aggregator\n\n\nclass Model:\n    def __init__(self, models):\n        self.models = models\n\n    def __call__(self, x):\n        res = []\n        x = x.cuda()\n        with torch.no_grad():\n\n            for m in self.models[:-2]:\n                res.append(torch.sigmoid(m(x)))\n            # last model with 5 classes (+background)\n            res.append(torch.sigmoid(self.models[-2](x))[:, 1:, :, :])\n            res.append(torch.sigmoid(self.models[-1](x))[:, 1:, :, :])\n        res = torch.stack(res)\n        res = torch.mean(res, dim=0)\n        #         print(res.shape)\n        #         print(pred_cls.shape)\n\n        return res\n\n\nmodel = Model(\n    [\n        unet_se_resnext50_32x4d,\n        unet_mobilenet2,\n        unet_resnet34,\n        model_senet,\n        model_fpn91lb,\n        model_fpn91lb_pseudo,\n        fpn_se,\n        fpn_se2,\n    ]\n)\n\n\n# ### Create TTA transforms, datasets, loaders\n\n\ndef create_transforms(additional):\n    res = list(additional)\n    # add necessary transformations\n    res.extend(\n        [\n            A.Normalize(\n                mean=(0.485, 0.456, 0.406),\n                std=(0.230, 0.225, 0.223)\n                # mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)\n            ),\n            ChannelTranspose(),\n        ]\n    )\n    res = A.Compose(res)\n    return res\n\n\nimg_folder = \"/kaggle/input/severstal-steel-defect-detection/test_images\"\nbatch_size = 2\nnum_workers = 0\n\n# Different transforms for TTA wrapper\ntransforms = [[], [A.HorizontalFlip(p=1)]]\n\ntransforms = [create_transforms(t) for t in transforms]\ndatasets = [\n    TtaWrap(ImageDataset(img_folder=img_folder, transforms=t), tfms=t)\n    for t in transforms\n]\nloaders = [\n    DataLoader(d, num_workers=num_workers, batch_size=batch_size, shuffle=False)\n    for d in datasets\n]\n\n\n# ### Loaders' mean aggregator\n\n\nthresholds = [0.5, 0.5, 0.5, 0.49]\nmin_area = [500, 500, 1000, 2000]\n\nres = []\n# Iterate over all TTA loaders\ntotal = len(datasets[0]) // batch_size\nfor loaders_batch in tqdm_notebook(zip(*loaders), total=total):\n    preds = []\n    image_file = []\n    for i, batch in enumerate(loaders_batch):\n        features = batch[\"features\"].cuda()\n        # p = torch.sigmoid(model(features))\n        p = model(features)\n        # inverse operations for TTA\n        p = datasets[i].inverse(p)\n        preds.append(p)\n        image_file = batch[\"image_file\"]\n\n    # TTA mean\n    preds = torch.stack(preds)\n    preds = torch.mean(preds, dim=0)\n    preds = preds.detach().cpu().numpy()\n\n    # Batch post processing\n    for p, file in zip(preds, image_file):\n        file = os.path.basename(file)\n        # Image postprocessing\n        for i in range(4):\n            p_channel = p[i]\n            imageid_classid = file + \"_\" + str(i + 1)\n            p_channel = (p_channel > thresholds[i]).astype(np.uint8)\n            if p_channel.sum() < min_area[i]:\n                p_channel = np.zeros(p_channel.shape, dtype=p_channel.dtype)\n\n            res.append(\n                {\n                    \"ImageId_ClassId\": imageid_classid,\n                    \"EncodedPixels\": mask2rle(p_channel),\n                }\n            )\n\ndf = pd.DataFrame(res)\ndf.to_csv(\"submission.csv\", index=False)\n\n\ndf = pd.DataFrame(res)\ndf = df.fillna(\"\")\ndf.to_csv(\"submission.csv\", index=False)\n\n\n# In[22]:\n\n\nimport pdb\nimport os\nimport cv2\nimport torch\nimport pandas as pd\nimport numpy as np\nfrom tqdm import tqdm\nimport torch.backends.cudnn as cudnn\nfrom torch.utils.data import DataLoader, Dataset\nfrom albumentations import Normalize, Compose\nfrom albumentations.pytorch import ToTensor\nimport torch.utils.data as data\nimport torchvision.models as models\nimport torch.nn as nn\nfrom torch.nn import functional as F\n\nBatchNorm2d = nn.BatchNorm2d\n\nIMAGE_RGB_MEAN = [0.485, 0.456, 0.406]\nIMAGE_RGB_STD = [0.229, 0.224, 0.225]\n\n###############################################################################\nCONVERSION = [\n    \"block0.0.weight\",\n    (64, 3, 7, 7),\n    \"conv1.weight\",\n    (64, 3, 7, 7),\n    \"block0.1.weight\",\n    (64,),\n    \"bn1.weight\",\n    (64,),\n    \"block0.1.bias\",\n    (64,),\n    \"bn1.bias\",\n    (64,),\n    \"block0.1.running_mean\",\n    (64,),\n    \"bn1.running_mean\",\n    (64,),\n    \"block0.1.running_var\",\n    (64,),\n    \"bn1.running_var\",\n    (64,),\n    \"block1.1.conv_bn1.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.0.conv1.weight\",\n    (64, 64, 3, 3),\n    \"block1.1.conv_bn1.bn.weight\",\n    (64,),\n    \"layer1.0.bn1.weight\",\n    (64,),\n    \"block1.1.conv_bn1.bn.bias\",\n    (64,),\n    \"layer1.0.bn1.bias\",\n    (64,),\n    \"block1.1.conv_bn1.bn.running_mean\",\n    (64,),\n    \"layer1.0.bn1.running_mean\",\n    (64,),\n    \"block1.1.conv_bn1.bn.running_var\",\n    (64,),\n    \"layer1.0.bn1.running_var\",\n    (64,),\n    \"block1.1.conv_bn2.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.0.conv2.weight\",\n    (64, 64, 3, 3),\n    \"block1.1.conv_bn2.bn.weight\",\n    (64,),\n    \"layer1.0.bn2.weight\",\n    (64,),\n    \"block1.1.conv_bn2.bn.bias\",\n    (64,),\n    \"layer1.0.bn2.bias\",\n    (64,),\n    \"block1.1.conv_bn2.bn.running_mean\",\n    (64,),\n    \"layer1.0.bn2.running_mean\",\n    (64,),\n    \"block1.1.conv_bn2.bn.running_var\",\n    (64,),\n    \"layer1.0.bn2.running_var\",\n    (64,),\n    \"block1.2.conv_bn1.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.1.conv1.weight\",\n    (64, 64, 3, 3),\n    \"block1.2.conv_bn1.bn.weight\",\n    (64,),\n    \"layer1.1.bn1.weight\",\n    (64,),\n    \"block1.2.conv_bn1.bn.bias\",\n    (64,),\n    \"layer1.1.bn1.bias\",\n    (64,),\n    \"block1.2.conv_bn1.bn.running_mean\",\n    (64,),\n    \"layer1.1.bn1.running_mean\",\n    (64,),\n    \"block1.2.conv_bn1.bn.running_var\",\n    (64,),\n    \"layer1.1.bn1.running_var\",\n    (64,),\n    \"block1.2.conv_bn2.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.1.conv2.weight\",\n    (64, 64, 3, 3),\n    \"block1.2.conv_bn2.bn.weight\",\n    (64,),\n    \"layer1.1.bn2.weight\",\n    (64,),\n    \"block1.2.conv_bn2.bn.bias\",\n    (64,),\n    \"layer1.1.bn2.bias\",\n    (64,),\n    \"block1.2.conv_bn2.bn.running_mean\",\n    (64,),\n    \"layer1.1.bn2.running_mean\",\n    (64,),\n    \"block1.2.conv_bn2.bn.running_var\",\n    (64,),\n    \"layer1.1.bn2.running_var\",\n    (64,),\n    \"block1.3.conv_bn1.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.2.conv1.weight\",\n    (64, 64, 3, 3),\n    \"block1.3.conv_bn1.bn.weight\",\n    (64,),\n    \"layer1.2.bn1.weight\",\n    (64,),\n    \"block1.3.conv_bn1.bn.bias\",\n    (64,),\n    \"layer1.2.bn1.bias\",\n    (64,),\n    \"block1.3.conv_bn1.bn.running_mean\",\n    (64,),\n    \"layer1.2.bn1.running_mean\",\n    (64,),\n    \"block1.3.conv_bn1.bn.running_var\",\n    (64,),\n    \"layer1.2.bn1.running_var\",\n    (64,),\n    \"block1.3.conv_bn2.conv.weight\",\n    (64, 64, 3, 3),\n    \"layer1.2.conv2.weight\",\n    (64, 64, 3, 3),\n    \"block1.3.conv_bn2.bn.weight\",\n    (64,),\n    \"layer1.2.bn2.weight\",\n    (64,),\n    \"block1.3.conv_bn2.bn.bias\",\n    (64,),\n    \"layer1.2.bn2.bias\",\n    (64,),\n    \"block1.3.conv_bn2.bn.running_mean\",\n    (64,),\n    \"layer1.2.bn2.running_mean\",\n    (64,),\n    \"block1.3.conv_bn2.bn.running_var\",\n    (64,),\n    \"layer1.2.bn2.running_var\",\n    (64,),\n    \"block2.0.conv_bn1.conv.weight\",\n    (128, 64, 3, 3),\n    \"layer2.0.conv1.weight\",\n    (128, 64, 3, 3),\n    \"block2.0.conv_bn1.bn.weight\",\n    (128,),\n    \"layer2.0.bn1.weight\",\n    (128,),\n    \"block2.0.conv_bn1.bn.bias\",\n    (128,),\n    \"layer2.0.bn1.bias\",\n    (128,),\n    \"block2.0.conv_bn1.bn.running_mean\",\n    (128,),\n    \"layer2.0.bn1.running_mean\",\n    (128,),\n    \"block2.0.conv_bn1.bn.running_var\",\n    (128,),\n    \"layer2.0.bn1.running_var\",\n    (128,),\n    \"block2.0.conv_bn2.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.0.conv2.weight\",\n    (128, 128, 3, 3),\n    \"block2.0.conv_bn2.bn.weight\",\n    (128,),\n    \"layer2.0.bn2.weight\",\n    (128,),\n    \"block2.0.conv_bn2.bn.bias\",\n    (128,),\n    \"layer2.0.bn2.bias\",\n    (128,),\n    \"block2.0.conv_bn2.bn.running_mean\",\n    (128,),\n    \"layer2.0.bn2.running_mean\",\n    (128,),\n    \"block2.0.conv_bn2.bn.running_var\",\n    (128,),\n    \"layer2.0.bn2.running_var\",\n    (128,),\n    \"block2.0.shortcut.conv.weight\",\n    (128, 64, 1, 1),\n    \"layer2.0.downsample.0.weight\",\n    (128, 64, 1, 1),\n    \"block2.0.shortcut.bn.weight\",\n    (128,),\n    \"layer2.0.downsample.1.weight\",\n    (128,),\n    \"block2.0.shortcut.bn.bias\",\n    (128,),\n    \"layer2.0.downsample.1.bias\",\n    (128,),\n    \"block2.0.shortcut.bn.running_mean\",\n    (128,),\n    \"layer2.0.downsample.1.running_mean\",\n    (128,),\n    \"block2.0.shortcut.bn.running_var\",\n    (128,),\n    \"layer2.0.downsample.1.running_var\",\n    (128,),\n    \"block2.1.conv_bn1.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.1.conv1.weight\",\n    (128, 128, 3, 3),\n    \"block2.1.conv_bn1.bn.weight\",\n    (128,),\n    \"layer2.1.bn1.weight\",\n    (128,),\n    \"block2.1.conv_bn1.bn.bias\",\n    (128,),\n    \"layer2.1.bn1.bias\",\n    (128,),\n    \"block2.1.conv_bn1.bn.running_mean\",\n    (128,),\n    \"layer2.1.bn1.running_mean\",\n    (128,),\n    \"block2.1.conv_bn1.bn.running_var\",\n    (128,),\n    \"layer2.1.bn1.running_var\",\n    (128,),\n    \"block2.1.conv_bn2.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.1.conv2.weight\",\n    (128, 128, 3, 3),\n    \"block2.1.conv_bn2.bn.weight\",\n    (128,),\n    \"layer2.1.bn2.weight\",\n    (128,),\n    \"block2.1.conv_bn2.bn.bias\",\n    (128,),\n    \"layer2.1.bn2.bias\",\n    (128,),\n    \"block2.1.conv_bn2.bn.running_mean\",\n    (128,),\n    \"layer2.1.bn2.running_mean\",\n    (128,),\n    \"block2.1.conv_bn2.bn.running_var\",\n    (128,),\n    \"layer2.1.bn2.running_var\",\n    (128,),\n    \"block2.2.conv_bn1.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.2.conv1.weight\",\n    (128, 128, 3, 3),\n    \"block2.2.conv_bn1.bn.weight\",\n    (128,),\n    \"layer2.2.bn1.weight\",\n    (128,),\n    \"block2.2.conv_bn1.bn.bias\",\n    (128,),\n    \"layer2.2.bn1.bias\",\n    (128,),\n    \"block2.2.conv_bn1.bn.running_mean\",\n    (128,),\n    \"layer2.2.bn1.running_mean\",\n    (128,),\n    \"block2.2.conv_bn1.bn.running_var\",\n    (128,),\n    \"layer2.2.bn1.running_var\",\n    (128,),\n    \"block2.2.conv_bn2.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.2.conv2.weight\",\n    (128, 128, 3, 3),\n    \"block2.2.conv_bn2.bn.weight\",\n    (128,),\n    \"layer2.2.bn2.weight\",\n    (128,),\n    \"block2.2.conv_bn2.bn.bias\",\n    (128,),\n    \"layer2.2.bn2.bias\",\n    (128,),\n    \"block2.2.conv_bn2.bn.running_mean\",\n    (128,),\n    \"layer2.2.bn2.running_mean\",\n    (128,),\n    \"block2.2.conv_bn2.bn.running_var\",\n    (128,),\n    \"layer2.2.bn2.running_var\",\n    (128,),\n    \"block2.3.conv_bn1.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.3.conv1.weight\",\n    (128, 128, 3, 3),\n    \"block2.3.conv_bn1.bn.weight\",\n    (128,),\n    \"layer2.3.bn1.weight\",\n    (128,),\n    \"block2.3.conv_bn1.bn.bias\",\n    (128,),\n    \"layer2.3.bn1.bias\",\n    (128,),\n    \"block2.3.conv_bn1.bn.running_mean\",\n    (128,),\n    \"layer2.3.bn1.running_mean\",\n    (128,),\n    \"block2.3.conv_bn1.bn.running_var\",\n    (128,),\n    \"layer2.3.bn1.running_var\",\n    (128,),\n    \"block2.3.conv_bn2.conv.weight\",\n    (128, 128, 3, 3),\n    \"layer2.3.conv2.weight\",\n    (128, 128, 3, 3),\n    \"block2.3.conv_bn2.bn.weight\",\n    (128,),\n    \"layer2.3.bn2.weight\",\n    (128,),\n    \"block2.3.conv_bn2.bn.bias\",\n    (128,),\n    \"layer2.3.bn2.bias\",\n    (128,),\n    \"block2.3.conv_bn2.bn.running_mean\",\n    (128,),\n    \"layer2.3.bn2.running_mean\",\n    (128,),\n    \"block2.3.conv_bn2.bn.running_var\",\n    (128,),\n    \"layer2.3.bn2.running_var\",\n    (128,),\n    \"block3.0.conv_bn1.conv.weight\",\n    (256, 128, 3, 3),\n    \"layer3.0.conv1.weight\",\n    (256, 128, 3, 3),\n    \"block3.0.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.0.bn1.weight\",\n    (256,),\n    \"block3.0.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.0.bn1.bias\",\n    (256,),\n    \"block3.0.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.0.bn1.running_mean\",\n    (256,),\n    \"block3.0.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.0.bn1.running_var\",\n    (256,),\n    \"block3.0.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.0.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.0.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.0.bn2.weight\",\n    (256,),\n    \"block3.0.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.0.bn2.bias\",\n    (256,),\n    \"block3.0.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.0.bn2.running_mean\",\n    (256,),\n    \"block3.0.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.0.bn2.running_var\",\n    (256,),\n    \"block3.0.shortcut.conv.weight\",\n    (256, 128, 1, 1),\n    \"layer3.0.downsample.0.weight\",\n    (256, 128, 1, 1),\n    \"block3.0.shortcut.bn.weight\",\n    (256,),\n    \"layer3.0.downsample.1.weight\",\n    (256,),\n    \"block3.0.shortcut.bn.bias\",\n    (256,),\n    \"layer3.0.downsample.1.bias\",\n    (256,),\n    \"block3.0.shortcut.bn.running_mean\",\n    (256,),\n    \"layer3.0.downsample.1.running_mean\",\n    (256,),\n    \"block3.0.shortcut.bn.running_var\",\n    (256,),\n    \"layer3.0.downsample.1.running_var\",\n    (256,),\n    \"block3.1.conv_bn1.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.1.conv1.weight\",\n    (256, 256, 3, 3),\n    \"block3.1.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.1.bn1.weight\",\n    (256,),\n    \"block3.1.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.1.bn1.bias\",\n    (256,),\n    \"block3.1.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.1.bn1.running_mean\",\n    (256,),\n    \"block3.1.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.1.bn1.running_var\",\n    (256,),\n    \"block3.1.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.1.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.1.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.1.bn2.weight\",\n    (256,),\n    \"block3.1.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.1.bn2.bias\",\n    (256,),\n    \"block3.1.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.1.bn2.running_mean\",\n    (256,),\n    \"block3.1.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.1.bn2.running_var\",\n    (256,),\n    \"block3.2.conv_bn1.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.2.conv1.weight\",\n    (256, 256, 3, 3),\n    \"block3.2.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.2.bn1.weight\",\n    (256,),\n    \"block3.2.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.2.bn1.bias\",\n    (256,),\n    \"block3.2.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.2.bn1.running_mean\",\n    (256,),\n    \"block3.2.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.2.bn1.running_var\",\n    (256,),\n    \"block3.2.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.2.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.2.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.2.bn2.weight\",\n    (256,),\n    \"block3.2.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.2.bn2.bias\",\n    (256,),\n    \"block3.2.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.2.bn2.running_mean\",\n    (256,),\n    \"block3.2.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.2.bn2.running_var\",\n    (256,),\n    \"block3.3.conv_bn1.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.3.conv1.weight\",\n    (256, 256, 3, 3),\n    \"block3.3.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.3.bn1.weight\",\n    (256,),\n    \"block3.3.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.3.bn1.bias\",\n    (256,),\n    \"block3.3.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.3.bn1.running_mean\",\n    (256,),\n    \"block3.3.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.3.bn1.running_var\",\n    (256,),\n    \"block3.3.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.3.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.3.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.3.bn2.weight\",\n    (256,),\n    \"block3.3.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.3.bn2.bias\",\n    (256,),\n    \"block3.3.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.3.bn2.running_mean\",\n    (256,),\n    \"block3.3.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.3.bn2.running_var\",\n    (256,),\n    \"block3.4.conv_bn1.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.4.conv1.weight\",\n    (256, 256, 3, 3),\n    \"block3.4.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.4.bn1.weight\",\n    (256,),\n    \"block3.4.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.4.bn1.bias\",\n    (256,),\n    \"block3.4.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.4.bn1.running_mean\",\n    (256,),\n    \"block3.4.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.4.bn1.running_var\",\n    (256,),\n    \"block3.4.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.4.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.4.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.4.bn2.weight\",\n    (256,),\n    \"block3.4.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.4.bn2.bias\",\n    (256,),\n    \"block3.4.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.4.bn2.running_mean\",\n    (256,),\n    \"block3.4.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.4.bn2.running_var\",\n    (256,),\n    \"block3.5.conv_bn1.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.5.conv1.weight\",\n    (256, 256, 3, 3),\n    \"block3.5.conv_bn1.bn.weight\",\n    (256,),\n    \"layer3.5.bn1.weight\",\n    (256,),\n    \"block3.5.conv_bn1.bn.bias\",\n    (256,),\n    \"layer3.5.bn1.bias\",\n    (256,),\n    \"block3.5.conv_bn1.bn.running_mean\",\n    (256,),\n    \"layer3.5.bn1.running_mean\",\n    (256,),\n    \"block3.5.conv_bn1.bn.running_var\",\n    (256,),\n    \"layer3.5.bn1.running_var\",\n    (256,),\n    \"block3.5.conv_bn2.conv.weight\",\n    (256, 256, 3, 3),\n    \"layer3.5.conv2.weight\",\n    (256, 256, 3, 3),\n    \"block3.5.conv_bn2.bn.weight\",\n    (256,),\n    \"layer3.5.bn2.weight\",\n    (256,),\n    \"block3.5.conv_bn2.bn.bias\",\n    (256,),\n    \"layer3.5.bn2.bias\",\n    (256,),\n    \"block3.5.conv_bn2.bn.running_mean\",\n    (256,),\n    \"layer3.5.bn2.running_mean\",\n    (256,),\n    \"block3.5.conv_bn2.bn.running_var\",\n    (256,),\n    \"layer3.5.bn2.running_var\",\n    (256,),\n    \"block4.0.conv_bn1.conv.weight\",\n    (512, 256, 3, 3),\n    \"layer4.0.conv1.weight\",\n    (512, 256, 3, 3),\n    \"block4.0.conv_bn1.bn.weight\",\n    (512,),\n    \"layer4.0.bn1.weight\",\n    (512,),\n    \"block4.0.conv_bn1.bn.bias\",\n    (512,),\n    \"layer4.0.bn1.bias\",\n    (512,),\n    \"block4.0.conv_bn1.bn.running_mean\",\n    (512,),\n    \"layer4.0.bn1.running_mean\",\n    (512,),\n    \"block4.0.conv_bn1.bn.running_var\",\n    (512,),\n    \"layer4.0.bn1.running_var\",\n    (512,),\n    \"block4.0.conv_bn2.conv.weight\",\n    (512, 512, 3, 3),\n    \"layer4.0.conv2.weight\",\n    (512, 512, 3, 3),\n    \"block4.0.conv_bn2.bn.weight\",\n    (512,),\n    \"layer4.0.bn2.weight\",\n    (512,),\n    \"block4.0.conv_bn2.bn.bias\",\n    (512,),\n    \"layer4.0.bn2.bias\",\n    (512,),\n    \"block4.0.conv_bn2.bn.running_mean\",\n    (512,),\n    \"layer4.0.bn2.running_mean\",\n    (512,),\n    \"block4.0.conv_bn2.bn.running_var\",\n    (512,),\n    \"layer4.0.bn2.running_var\",\n    (512,),\n    \"block4.0.shortcut.conv.weight\",\n    (512, 256, 1, 1),\n    \"layer4.0.downsample.0.weight\",\n    (512, 256, 1, 1),\n    \"block4.0.shortcut.bn.weight\",\n    (512,),\n    \"layer4.0.downsample.1.weight\",\n    (512,),\n    \"block4.0.shortcut.bn.bias\",\n    (512,),\n    \"layer4.0.downsample.1.bias\",\n    (512,),\n    \"block4.0.shortcut.bn.running_mean\",\n    (512,),\n    \"layer4.0.downsample.1.running_mean\",\n    (512,),\n    \"block4.0.shortcut.bn.running_var\",\n    (512,),\n    \"layer4.0.downsample.1.running_var\",\n    (512,),\n    \"block4.1.conv_bn1.conv.weight\",\n    (512, 512, 3, 3),\n    \"layer4.1.conv1.weight\",\n    (512, 512, 3, 3),\n    \"block4.1.conv_bn1.bn.weight\",\n    (512,),\n    \"layer4.1.bn1.weight\",\n    (512,),\n    \"block4.1.conv_bn1.bn.bias\",\n    (512,),\n    \"layer4.1.bn1.bias\",\n    (512,),\n    \"block4.1.conv_bn1.bn.running_mean\",\n    (512,),\n    \"layer4.1.bn1.running_mean\",\n    (512,),\n    \"block4.1.conv_bn1.bn.running_var\",\n    (512,),\n    \"layer4.1.bn1.running_var\",\n    (512,),\n    \"block4.1.conv_bn2.conv.weight\",\n    (512, 512, 3, 3),\n    \"layer4.1.conv2.weight\",\n    (512, 512, 3, 3),\n    \"block4.1.conv_bn2.bn.weight\",\n    (512,),\n    \"layer4.1.bn2.weight\",\n    (512,),\n    \"block4.1.conv_bn2.bn.bias\",\n    (512,),\n    \"layer4.1.bn2.bias\",\n    (512,),\n    \"block4.1.conv_bn2.bn.running_mean\",\n    (512,),\n    \"layer4.1.bn2.running_mean\",\n    (512,),\n    \"block4.1.conv_bn2.bn.running_var\",\n    (512,),\n    \"layer4.1.bn2.running_var\",\n    (512,),\n    \"block4.2.conv_bn1.conv.weight\",\n    (512, 512, 3, 3),\n    \"layer4.2.conv1.weight\",\n    (512, 512, 3, 3),\n    \"block4.2.conv_bn1.bn.weight\",\n    (512,),\n    \"layer4.2.bn1.weight\",\n    (512,),\n    \"block4.2.conv_bn1.bn.bias\",\n    (512,),\n    \"layer4.2.bn1.bias\",\n    (512,),\n    \"block4.2.conv_bn1.bn.running_mean\",\n    (512,),\n    \"layer4.2.bn1.running_mean\",\n    (512,),\n    \"block4.2.conv_bn1.bn.running_var\",\n    (512,),\n    \"layer4.2.bn1.running_var\",\n    (512,),\n    \"block4.2.conv_bn2.conv.weight\",\n    (512, 512, 3, 3),\n    \"layer4.2.conv2.weight\",\n    (512, 512, 3, 3),\n    \"block4.2.conv_bn2.bn.weight\",\n    (512,),\n    \"layer4.2.bn2.weight\",\n    (512,),\n    \"block4.2.conv_bn2.bn.bias\",\n    (512,),\n    \"layer4.2.bn2.bias\",\n    (512,),\n    \"block4.2.conv_bn2.bn.running_mean\",\n    (512,),\n    \"layer4.2.bn2.running_mean\",\n    (512,),\n    \"block4.2.conv_bn2.bn.running_var\",\n    (512,),\n    \"layer4.2.bn2.running_var\",\n    (512,),\n    \"logit.weight\",\n    (1000, 512),\n    \"fc.weight\",\n    (1000, 512),\n    \"logit.bias\",\n    (1000,),\n    \"fc.bias\",\n    (1000,),\n]\n\n\n###############################################################################\nclass ConvBn2d(nn.Module):\n    def __init__(self, in_channel, out_channel, kernel_size=3, padding=1, stride=1):\n        super(ConvBn2d, self).__init__()\n        self.conv = nn.Conv2d(\n            in_channel,\n            out_channel,\n            kernel_size=kernel_size,\n            padding=padding,\n            stride=stride,\n            bias=False,\n        )\n        self.bn = nn.BatchNorm2d(out_channel, eps=1e-5)\n\n    def forward(self, x):\n        x = self.conv(x)\n        x = self.bn(x)\n        return x\n\n\n#############  resnext50 pyramid feature net #######################################\n# https://github.com/Hsuxu/ResNeXt/blob/master/models.py\n# https://github.com/D-X-Y/ResNeXt-DenseNet/blob/master/models/resnext.py\n# https://github.com/miraclewkf/ResNeXt-PyTorch/blob/master/resnext.py\n\n\n# bottleneck type C\nclass BasicBlock(nn.Module):\n    def __init__(self, in_channel, channel, out_channel, stride=1, is_shortcut=False):\n        super(BasicBlock, self).__init__()\n        self.is_shortcut = is_shortcut\n\n        self.conv_bn1 = ConvBn2d(\n            in_channel, channel, kernel_size=3, padding=1, stride=stride\n        )\n        self.conv_bn2 = ConvBn2d(\n            channel, out_channel, kernel_size=3, padding=1, stride=1\n        )\n\n        if is_shortcut:\n            self.shortcut = ConvBn2d(\n                in_channel, out_channel, kernel_size=1, padding=0, stride=stride\n            )\n\n    def forward(self, x):\n        z = F.relu(self.conv_bn1(x), inplace=True)\n        z = self.conv_bn2(z)\n\n        if self.is_shortcut:\n            x = self.shortcut(x)\n\n        z += x\n        z = F.relu(z, inplace=True)\n        return z\n\n\nclass ResNet34(nn.Module):\n    def __init__(self, num_class=1000):\n        super(ResNet34, self).__init__()\n\n        self.block0 = nn.Sequential(\n            nn.Conv2d(3, 64, kernel_size=7, padding=3, stride=2, bias=False),\n            BatchNorm2d(64),\n            nn.ReLU(inplace=True),\n        )\n        self.block1 = nn.Sequential(\n            nn.MaxPool2d(kernel_size=3, padding=1, stride=2),\n            BasicBlock(64, 64, 64, stride=1, is_shortcut=False),\n            *[BasicBlock(64, 64, 64, stride=1, is_shortcut=False) for i in range(1, 3)],\n        )\n        self.block2 = nn.Sequential(\n            BasicBlock(64, 128, 128, stride=2, is_shortcut=True),\n            *[\n                BasicBlock(128, 128, 128, stride=1, is_shortcut=False)\n                for i in range(1, 4)\n            ],\n        )\n        self.block3 = nn.Sequential(\n            BasicBlock(128, 256, 256, stride=2, is_shortcut=True),\n            *[\n                BasicBlock(256, 256, 256, stride=1, is_shortcut=False)\n                for i in range(1, 6)\n            ],\n        )\n        self.block4 = nn.Sequential(\n            BasicBlock(256, 512, 512, stride=2, is_shortcut=True),\n            *[\n                BasicBlock(512, 512, 512, stride=1, is_shortcut=False)\n                for i in range(1, 3)\n            ],\n        )\n        self.logit = nn.Linear(512, num_class)\n\n    def forward(self, x):\n        batch_size = len(x)\n\n        x = self.block0(x)\n        x = self.block1(x)\n        x = self.block2(x)\n        x = self.block3(x)\n        x = self.block4(x)\n        x = F.adaptive_avg_pool2d(x, 1).reshape(batch_size, -1)\n        logit = self.logit(x)\n        return logit\n\n\nclass Resnet34_classification(nn.Module):\n    def __init__(self, num_class=4):\n        super(Resnet34_classification, self).__init__()\n        e = ResNet34()\n        self.block = nn.ModuleList([e.block0, e.block1, e.block2, e.block3, e.block4])\n        e = None  # dropped\n        self.feature = nn.Conv2d(512, 32, kernel_size=1)  # dummy conv for dim reduction\n        self.logit = nn.Conv2d(32, num_class, kernel_size=1)\n\n    def forward(self, x):\n        batch_size, C, H, W = x.shape\n\n        for i in range(len(self.block)):\n            x = self.block[i](x)\n            # print(i, x.shape)\n\n        x = F.dropout(x, 0.5, training=self.training)\n        x = F.adaptive_avg_pool2d(x, 1)\n        x = self.feature(x)\n        logit = self.logit(x)\n        return logit\n\n\nmodel_classification = Resnet34_classification()\nmodel_classification.load_state_dict(\n    torch.load(\n        \"../input/clsification/00007500_model.pth\",\n        map_location=lambda storage, loc: storage,\n    ),\n    strict=True,\n)\n\n\nclass TestDataset(Dataset):\n    \"\"\"Dataset for test prediction\"\"\"\n\n    def __init__(self, root, df, mean, std):\n        self.root = root\n        df[\"ImageId\"] = df[\"ImageId_ClassId\"].apply(lambda x: x.split(\"_\")[0])\n        self.fnames = df[\"ImageId\"].unique().tolist()\n        self.num_samples = len(self.fnames)\n        self.transform = Compose([Normalize(mean=mean, std=std, p=1), ToTensor()])\n\n    def __getitem__(self, idx):\n        fname = self.fnames[idx]\n        path = os.path.join(self.root, fname)\n        image = cv2.imread(path)\n        images = self.transform(image=image)[\"image\"]\n        return fname, images\n\n    def __len__(self):\n        return self.num_samples\n\n\ndef sharpen(p, t=0.5):\n    if t != 0:\n        return p ** t\n    else:\n        return p\n\n\naugment = [\"null\"]\n\n\ndef get_classification_preds(net, test_loader):\n    test_probability_label = []\n    test_id = []\n\n    net = net.cuda()\n    for t, (fnames, images) in enumerate(tqdm(test_loader)):\n        batch_size, C, H, W = images.shape\n        images = images.cuda()\n\n        with torch.no_grad():\n            net.eval()\n\n            num_augment = 0\n            if 1:  # null\n                logit = net(images)\n                probability = torch.sigmoid(logit)\n\n                probability_label = sharpen(probability, 0)\n                num_augment += 1\n\n            if \"flip_lr\" in augment:\n                logit = net(torch.flip(images, dims=[3]))\n                probability = torch.sigmoid(logit)\n\n                probability_label += sharpen(probability)\n                num_augment += 1\n\n            if \"flip_ud\" in augment:\n                logit = net(torch.flip(images, dims=[2]))\n                probability = torch.sigmoid(logit)\n\n                probability_label += sharpen(probability)\n                num_augment += 1\n\n            probability_label = probability_label / num_augment\n\n        probability_label = probability_label.data.cpu().numpy()\n\n        test_probability_label.append(probability_label)\n        test_id.extend([i for i in fnames])\n\n    test_probability_label = np.concatenate(test_probability_label)\n    return test_probability_label, test_id\n\n\nsample_submission_path = (\n    \"../input/severstal-steel-defect-detection/sample_submission.csv\"\n)\ntest_data_folder = \"../input/severstal-steel-defect-detection/test_images\"\nbatch_size = 1\n\n# mean and std\nmean = (0.485, 0.456, 0.406)\nstd = (0.229, 0.224, 0.225)\ndf = pd.read_csv(sample_submission_path)\ntestset = DataLoader(\n    TestDataset(test_data_folder, df, mean, std),\n    batch_size=batch_size,\n    shuffle=False,\n    num_workers=0,\n    pin_memory=True,\n)\nthreshold_label = [0.50, 0.50, 0.50, 0.50]\nprobability_label, image_id = get_classification_preds(model_classification, testset)\npredict_label = probability_label > np.array(threshold_label).reshape(1, 4, 1, 1)\n\nimage_id_class_id = []\nencoded_pixel = []\nfor b in range(len(image_id)):\n    for c in range(4):\n        image_id_class_id.append(image_id[b] + \"_%d\" % (c + 1))\n        if predict_label[b, c] == 0:\n            rle = \"\"\n        else:\n            rle = \"1 1\"\n        encoded_pixel.append(rle)\n\ndf_classification = pd.DataFrame(\n    zip(image_id_class_id, encoded_pixel), columns=[\"ImageId_ClassId\", \"EncodedPixels\"]\n)\n\n\ndf = pd.read_csv(\"submission.csv\")\ndf = df.fillna(\"\")\n\nif 1:\n    df[\"Class\"] = df[\"ImageId_ClassId\"].str[-1].astype(np.int32)\n    df[\"Label\"] = (df[\"EncodedPixels\"] != \"\").astype(np.int32)\n    pos1 = ((df[\"Class\"] == 1) & (df[\"Label\"] == 1)).sum()\n    pos2 = ((df[\"Class\"] == 2) & (df[\"Label\"] == 1)).sum()\n    pos3 = ((df[\"Class\"] == 3) & (df[\"Label\"] == 1)).sum()\n    pos4 = ((df[\"Class\"] == 4) & (df[\"Label\"] == 1)).sum()\n\n    num_image = len(df) // 4\n    num = len(df)\n    pos = (df[\"Label\"] == 1).sum()\n    neg = num - pos\n\n    print(\"\")\n    print(\"\\t\\tnum_image = %5d(1801)\" % num_image)\n    print(\"\\t\\tnum  = %5d(7204)\" % num)\n    print(\"\\t\\tneg  = %5d(6172)  %0.3f\" % (neg, neg / num))\n    print(\"\\t\\tpos  = %5d(1032)  %0.3f\" % (pos, pos / num))\n    print(\"\\t\\tpos1 = %5d( 128)  %0.3f  %0.3f\" % (pos1, pos1 / num_image, pos1 / pos))\n    print(\"\\t\\tpos2 = %5d(  43)  %0.3f  %0.3f\" % (pos2, pos2 / num_image, pos2 / pos))\n    print(\"\\t\\tpos3 = %5d( 741)  %0.3f  %0.3f\" % (pos3, pos3 / num_image, pos3 / pos))\n    print(\"\\t\\tpos4 = %5d( 120)  %0.3f  %0.3f\" % (pos4, pos4 / num_image, pos4 / pos))\n\ndf_mask = df.copy()\ndf_label = df_classification.copy()\n\n\nassert np.all(df_mask[\"ImageId_ClassId\"].values == df_label[\"ImageId_ClassId\"].values)\nprint(\n    (df_mask.loc[df_label[\"EncodedPixels\"] == \"\", \"EncodedPixels\"] != \"\").sum()\n)  # 202\ndf_mask.loc[df_label[\"EncodedPixels\"] == \"\", \"EncodedPixels\"] = \"\"\n\n\n# df_mask.to_csv(\"submission.csv\", index=False)\ndf_mask.to_csv(\n    \"submission.csv\", columns=[\"ImageId_ClassId\", \"EncodedPixels\"], index=False\n)\nif 1:\n    df_mask[\"Class\"] = df_mask[\"ImageId_ClassId\"].str[-1].astype(np.int32)\n    df_mask[\"Label\"] = (df_mask[\"EncodedPixels\"] != \"\").astype(np.int32)\n    pos1 = ((df_mask[\"Class\"] == 1) & (df_mask[\"Label\"] == 1)).sum()\n    pos2 = ((df_mask[\"Class\"] == 2) & (df_mask[\"Label\"] == 1)).sum()\n    pos3 = ((df_mask[\"Class\"] == 3) & (df_mask[\"Label\"] == 1)).sum()\n    pos4 = ((df_mask[\"Class\"] == 4) & (df_mask[\"Label\"] == 1)).sum()\n\n    num_image = len(df_mask) // 4\n    num = len(df_mask)\n    pos = (df_mask[\"Label\"] == 1).sum()\n    neg = num - pos\n\n    print(\"\")\n    print(\"\\t\\tnum_image = %5d(1801)\" % num_image)\n    print(\"\\t\\tnum  = %5d(7204)\" % num)\n    print(\"\\t\\tneg  = %5d(6172)  %0.3f\" % (neg, neg / num))\n    print(\"\\t\\tpos  = %5d(1032)  %0.3f\" % (pos, pos / num))\n    print(\"\\t\\tpos1 = %5d( 128)  %0.3f  %0.3f\" % (pos1, pos1 / num_image, pos1 / pos))\n    print(\"\\t\\tpos2 = %5d(  43)  %0.3f  %0.3f\" % (pos2, pos2 / num_image, pos2 / pos))\n    print(\"\\t\\tpos3 = %5d( 741)  %0.3f  %0.3f\" % (pos3, pos3 / num_image, pos3 / pos))\n    print(\"\\t\\tpos4 = %5d( 120)  %0.3f  %0.3f\" % (pos4, pos4 / num_image, pos4 / pos))\n\n\n# ### Visualization\n\n\nget_ipython().run_line_magic(\"matplotlib\", \"inline\")\n\ndf = pd.read_csv(\"submission.csv\")[:40]\ndf[\"Image\"] = df[\"ImageId_ClassId\"].map(lambda x: x.split(\"_\")[0])\ndf[\"Class\"] = df[\"ImageId_ClassId\"].map(lambda x: x.split(\"_\")[1])\n\nfor row in df.itertuples():\n    img_path = os.path.join(img_folder, row.Image)\n    img = cv2.imread(img_path)\n    mask = (\n        rle2mask(row.EncodedPixels, (1600, 256))\n        if isinstance(row.EncodedPixels, str)\n        else np.zeros((256, 1600))\n    )\n    if mask.sum() == 0:\n        continue\n\n    fig, axes = plt.subplots(1, 2, figsize=(20, 60))\n    axes[0].imshow(img / 255)\n    axes[1].imshow(mask * 60)\n    axes[0].set_title(row.Image)\n    axes[1].set_title(row.Class)\n    plt.show()\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/model_resnet.py",
    "content": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport math\nfrom torch.nn import init\nfrom cbam import *\nfrom bam import *\n\n\ndef conv3x3(in_planes, out_planes, stride=1):\n    \"3x3 convolution with padding\"\n    return nn.Conv2d(\n        in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False\n    )\n\n\nclass BasicBlock(nn.Module):\n    expansion = 1\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(BasicBlock, self).__init__()\n        self.conv1 = conv3x3(inplanes, planes, stride)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv2 = conv3x3(planes, planes)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM(planes, 16)\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1, downsample=None, use_cbam=False):\n        super(Bottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(\n            planes, planes, kernel_size=3, stride=stride, padding=1, bias=False\n        )\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * 4)\n        self.relu = nn.ReLU(inplace=True)\n        self.downsample = downsample\n        self.stride = stride\n\n        if use_cbam:\n            self.cbam = CBAM(planes * 4, 16)\n        else:\n            self.cbam = None\n\n    def forward(self, x):\n        residual = x\n\n        out = self.conv1(x)\n        out = self.bn1(out)\n        out = self.relu(out)\n\n        out = self.conv2(out)\n        out = self.bn2(out)\n        out = self.relu(out)\n\n        out = self.conv3(out)\n        out = self.bn3(out)\n\n        if self.downsample is not None:\n            residual = self.downsample(x)\n\n        if not self.cbam is None:\n            out = self.cbam(out)\n\n        out += residual\n        out = self.relu(out)\n\n        return out\n\n\nclass ResNet(nn.Module):\n    def __init__(self, block, layers, network_type, num_classes, att_type=None):\n        self.inplanes = 64\n        super(ResNet, self).__init__()\n        self.network_type = network_type\n        # different model config between ImageNet and CIFAR\n        if network_type == \"ImageNet\":\n            self.conv1 = nn.Conv2d(\n                3, 64, kernel_size=7, stride=2, padding=3, bias=False\n            )\n            self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n            self.avgpool = nn.AvgPool2d(7)\n        else:\n            self.conv1 = nn.Conv2d(\n                3, 64, kernel_size=3, stride=1, padding=1, bias=False\n            )\n\n        self.bn1 = nn.BatchNorm2d(64)\n        self.relu = nn.ReLU(inplace=True)\n\n        if att_type == \"BAM\":\n            self.bam1 = BAM(64 * block.expansion)\n            self.bam2 = BAM(128 * block.expansion)\n            self.bam3 = BAM(256 * block.expansion)\n        else:\n            self.bam1, self.bam2, self.bam3 = None, None, None\n\n        self.layer1 = self._make_layer(block, 64, layers[0], att_type=att_type)\n        self.layer2 = self._make_layer(\n            block, 128, layers[1], stride=2, att_type=att_type\n        )\n        self.layer3 = self._make_layer(\n            block, 256, layers[2], stride=2, att_type=att_type\n        )\n        self.layer4 = self._make_layer(\n            block, 512, layers[3], stride=2, att_type=att_type\n        )\n\n        self.fc = nn.Linear(512 * block.expansion, num_classes)\n\n        init.kaiming_normal(self.fc.weight)\n        for key in self.state_dict():\n            if key.split(\".\")[-1] == \"weight\":\n                if \"conv\" in key:\n                    init.kaiming_normal(self.state_dict()[key], mode=\"fan_out\")\n                if \"bn\" in key:\n                    if \"SpatialGate\" in key:\n                        self.state_dict()[key][...] = 0\n                    else:\n                        self.state_dict()[key][...] = 1\n            elif key.split(\".\")[-1] == \"bias\":\n                self.state_dict()[key][...] = 0\n\n    def _make_layer(self, block, planes, blocks, stride=1, att_type=None):\n        downsample = None\n        if stride != 1 or self.inplanes != planes * block.expansion:\n            downsample = nn.Sequential(\n                nn.Conv2d(\n                    self.inplanes,\n                    planes * block.expansion,\n                    kernel_size=1,\n                    stride=stride,\n                    bias=False,\n                ),\n                nn.BatchNorm2d(planes * block.expansion),\n            )\n\n        layers = []\n        layers.append(\n            block(\n                self.inplanes, planes, stride, downsample, use_cbam=att_type == \"CBAM\"\n            )\n        )\n        self.inplanes = planes * block.expansion\n        for i in range(1, blocks):\n            layers.append(block(self.inplanes, planes, use_cbam=att_type == \"CBAM\"))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = self.relu(x)\n        if self.network_type == \"ImageNet\":\n            x = self.maxpool(x)\n\n        x = self.layer1(x)\n        if not self.bam1 is None:\n            x = self.bam1(x)\n\n        x = self.layer2(x)\n        if not self.bam2 is None:\n            x = self.bam2(x)\n\n        x = self.layer3(x)\n        if not self.bam3 is None:\n            x = self.bam3(x)\n\n        x = self.layer4(x)\n\n        if self.network_type == \"ImageNet\":\n            x = self.avgpool(x)\n        else:\n            x = F.avg_pool2d(x, 4)\n        x = x.view(x.size(0), -1)\n        x = self.fc(x)\n        return x\n\n\ndef ResidualNet(network_type, depth, num_classes, att_type):\n\n    assert network_type in [\n        \"ImageNet\",\n        \"CIFAR10\",\n        \"CIFAR100\",\n    ], \"network type should be ImageNet or CIFAR10 / CIFAR100\"\n    assert depth in [18, 34, 50, 101], \"network depth should be 18, 34, 50 or 101\"\n\n    if depth == 18:\n        model = ResNet(BasicBlock, [2, 2, 2, 2], network_type, num_classes, att_type)\n\n    elif depth == 34:\n        model = ResNet(BasicBlock, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 50:\n        model = ResNet(Bottleneck, [3, 4, 6, 3], network_type, num_classes, att_type)\n\n    elif depth == 101:\n        model = ResNet(Bottleneck, [3, 4, 23, 3], network_type, num_classes, att_type)\n\n    return model\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Severstal-Steel-Defect-Detection-master/train.py",
    "content": "import gc\nfrom common_blocks.training_helper import Trainer_cv\nfrom common_blocks.utils import plot, set_seed\nfrom configs.train_params import *\nfrom common_blocks.utils import load_model_unet, load_model_fpn\nfrom segmentation_models_pytorch import Unet, FPN, PSPNet\n\nif __name__ == \"__main__\":\n    set_seed()\n    for cur_fold in range(0, TOTAL_FOLDS):\n        print(\"Current FOLD {}\".format(cur_fold))\n        model_trainer = Trainer_cv(\n            load_model_fpn(model_weights), num_epochs, cur_fold, batch_size=BATCH_SIZE\n        )\n        model_trainer.start()\n\n        plot(model_trainer.losses, \"BCE-DICE loss\", cur_fold)\n        plot(model_trainer.dice_scores, \"Dice score\", cur_fold)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/.gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# project specific\n*.csv\n*.gz\n*.pth\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/README.md",
    "content": "# Understanding Clouds from Satellite Images\n \nCode for https://www.kaggle.com/c/understanding_cloud_organization competition\n\nExample of usage:\n>>> python train.py --encoder resnet50 --bs 20 --num_epochs 100 --train True --optimize_postprocess True --make_prediction True\n\n>>> python train.py --encoder densenet169 --bs 20 --num_epochs 100 --train True --task classification --loss BCE --height 224 --width 224 --lr 1e-4\n\n\n\nCode mostly taken from https://github.com/Erlemar/Understanding-Clouds-from-Satellite-Images\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/augs.py",
    "content": "import albumentations as albu\n\n\ndef to_tensor(x, **kwargs):\n    \"\"\"\n    Convert image or mask.\n\n    Args:\n        x:\n        **kwargs:\n\n    Returns:\n\n    \"\"\"\n\n    return x.transpose(2, 0, 1).astype(\"float32\")\n\n\ndef get_training_augmentation(\n    augmentation: str = \"default\", image_size: tuple = (320, 640)\n):\n    \"\"\"\n    Get augmentations\n    There is a dictionary where values are different augmentation functions, so it easy to\n    switch between augmentations;\n\n    Args:\n        augmentation:\n        image_size:\n\n    Returns:\n\n    \"\"\"\n    LEVELS = {\n        \"default\": get_training_augmentation0,\n        \"1\": get_training_augmentation1,\n        \"2\": get_training_augmentation2,\n    }\n\n    assert augmentation in LEVELS.keys()\n    return LEVELS[augmentation](image_size)\n\n\ndef get_training_augmentation0(image_size: tuple = (320, 640)):\n    \"\"\"\n\n    Args:\n        image_size:\n\n    Returns:\n\n    \"\"\"\n    train_transform = [\n        albu.HorizontalFlip(p=0.5),\n        albu.ShiftScaleRotate(\n            scale_limit=0.5, rotate_limit=15, shift_limit=0.1, p=0.5, border_mode=0\n        ),\n        albu.GridDistortion(p=0.3),\n        albu.OpticalDistortion(p=0.3, distort_limit=0.1, shift_limit=0.5),\n        albu.RandomBrightnessContrast(p=0.1, brightness_limit=0.1, contrast_limit=0.1),\n        albu.Resize(*image_size),\n    ]\n    return albu.Compose(train_transform)\n\n\ndef get_training_augmentation1(image_size: tuple = (320, 640)):\n    \"\"\"\n\n    Args:\n        image_size:\n\n    Returns:\n\n    \"\"\"\n    train_transform = [\n        albu.HorizontalFlip(p=0.5),\n        albu.ShiftScaleRotate(\n            scale_limit=0.3, rotate_limit=15, shift_limit=0.1, p=0.5, border_mode=0\n        ),\n        albu.GridDistortion(p=0.5),\n        albu.OpticalDistortion(p=0.5, distort_limit=0.1, shift_limit=0.2),\n        albu.Resize(*image_size),\n    ]\n    return albu.Compose(train_transform)\n\n\ndef get_training_augmentation2(image_size: tuple = (320, 640)):\n    \"\"\"\n\n    Args:\n        image_size:\n\n    Returns:\n\n    \"\"\"\n    train_transform = [\n        albu.Resize(*image_size),\n        albu.HorizontalFlip(p=0.5),\n        albu.ShiftScaleRotate(\n            scale_limit=0.3, rotate_limit=15, shift_limit=0.1, p=0.5, border_mode=0\n        ),\n        albu.GridDistortion(p=0.5),\n        albu.OpticalDistortion(p=0.5, distort_limit=0.1, shift_limit=0.2),\n        albu.Blur(),\n        albu.RandomBrightnessContrast(),\n    ]\n    return albu.Compose(train_transform)\n\n\ndef get_validation_augmentation(image_size: tuple = (320, 640)):\n    \"\"\"\n\n    Args:\n        image_size:\n\n    Returns:\n\n    \"\"\"\n    test_transform = [albu.Resize(*image_size)]\n    return albu.Compose(test_transform)\n\n\ndef get_preprocessing(preprocessing_fn):\n    \"\"\"Construct preprocessing transform\n\n    Args:\n        preprocessing_fn (callbale): data normalization function\n            (can be specific for each pretrained neural network)\n    Return:\n        transform: albumentations.Compose\n\n    \"\"\"\n\n    _transform = [\n        albu.Lambda(image=preprocessing_fn),\n        albu.Lambda(image=to_tensor, mask=to_tensor),\n    ]\n    return albu.Compose(_transform)\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/callbacks.py",
    "content": "from typing import Dict\nimport torch\nimport numpy as np\nfrom catalyst.dl.core import Callback, RunnerState, CallbackOrder\nimport cv2\nfrom collections import OrderedDict\n\n\ndef calculate_confusion_matrix_from_arrays(\n    prediction: np.array, ground_truth: np.array, num_classes: int\n) -> np.array:\n    \"\"\"Calculate confusion matrix for a given set of classes.\n    if GT value is outside of the [0, num_classes) it is excluded.\n    Args:\n        prediction:\n        ground_truth:\n        num_classes:\n    Returns:\n    \"\"\"\n    # a long 2xn array with each column being a pixel pair\n    replace_indices = np.vstack((ground_truth.flatten(), prediction.flatten()))\n\n    valid_index = replace_indices[0, :] < num_classes\n    replace_indices = replace_indices[:, valid_index].T\n\n    # add up confusion matrix\n    confusion_matrix, _ = np.histogramdd(\n        replace_indices,\n        bins=(num_classes, num_classes),\n        range=[(0, num_classes), (0, num_classes)],\n    )\n    return confusion_matrix.astype(np.uint64)\n\n\ndef get_confusion_matrix(y_pred_logits: torch.Tensor, y_true: torch.Tensor):\n    num_classes = y_pred_logits.shape[1]\n    y_pred = torch.argmax(y_pred_logits, dim=1)\n    ground_truth = y_true.cpu().numpy()\n    prediction = y_pred.cpu().numpy()\n\n    return calculate_confusion_matrix_from_arrays(ground_truth, prediction, num_classes)\n\n\ndef calculate_tp_fp_fn(confusion_matrix):\n    true_positives = {}\n    false_positives = {}\n    false_negatives = {}\n\n    for index in range(confusion_matrix.shape[0]):\n        true_positives[index] = confusion_matrix[index, index]\n        false_positives[index] = (\n            confusion_matrix[:, index].sum() - true_positives[index]\n        )\n        false_negatives[index] = (\n            confusion_matrix[index, :].sum() - true_positives[index]\n        )\n\n    return {\n        \"true_positives\": true_positives,\n        \"false_positives\": false_positives,\n        \"false_negatives\": false_negatives,\n    }\n\n\ndef calculate_dice(tp_fp_fn_dict):\n    epsilon = 1e-7\n\n    dice = {}\n\n    for i in range(len(tp_fp_fn_dict[\"true_positives\"])):\n        tp = tp_fp_fn_dict[\"true_positives\"][i]\n        fp = tp_fp_fn_dict[\"false_positives\"][i]\n        fn = tp_fp_fn_dict[\"true_positives\"][i]\n\n        dice[i] = (2 * tp + epsilon) / (2 * tp + fp + fn + epsilon)\n\n        if not 0 <= dice[i] <= 1:\n            raise ValueError()\n\n    return dice\n\n\nclass MulticlassDiceMetricCallback(Callback):\n    def __init__(\n        self,\n        prefix: str = \"dice\",\n        input_key: str = \"targets\",\n        output_key: str = \"logits\",\n        **metric_params,\n    ):\n        super().__init__(CallbackOrder.Metric)\n        self.prefix = prefix\n        self.input_key = input_key\n        self.output_key = output_key\n        self.metric_params = metric_params\n        self.confusion_matrix = None\n        self.class_names = metric_params[\n            \"class_names\"\n        ]  # dictionary {class_id: class_name}\n        self.class_prefix = metric_params[\"class_prefix\"]\n\n    def _reset_stats(self):\n        self.confusion_matrix = None\n\n    def on_batch_end(self, state: RunnerState):\n        outputs = state.output[self.output_key]\n        targets = state.input[self.input_key]\n\n        confusion_matrix = get_confusion_matrix(outputs, targets)\n\n        if self.confusion_matrix is None:\n            self.confusion_matrix = confusion_matrix\n        else:\n            self.confusion_matrix += confusion_matrix\n\n    def on_loader_end(self, state: RunnerState):\n\n        tp_fp_fn_dict = calculate_tp_fp_fn(self.confusion_matrix)\n\n        batch_metrics: Dict = calculate_dice(tp_fp_fn_dict)\n\n        for metric_id, dice_value in batch_metrics.items():\n            if metric_id not in self.class_names:\n                continue\n\n            metric_name = self.class_names[metric_id]\n            state.metrics.epoch_values[state.loader_name][\n                f\"{self.class_prefix}_{metric_name}\"\n            ] = dice_value\n\n        state.metrics.epoch_values[state.loader_name][\"mean\"] = np.mean(\n            [x for x in batch_metrics.values()]\n        )\n\n        self._reset_stats()\n\n\nclass CustomSegmentationInferCallback(Callback):\n    def __init__(self, return_valid: bool = False):\n        super().__init__(CallbackOrder.Internal)\n        self.valid_masks = []\n        self.probabilities = np.zeros((2220, 350, 525))\n        self.return_valid = return_valid\n\n    def on_batch_end(self, state: RunnerState):\n        image, mask = state.input\n        output = state.output[\"logits\"]\n        if self.return_valid:\n            for m in mask:\n                if m.shape != (350, 525):\n                    m = cv2.resize(m, dsize=(525, 350), interpolation=cv2.INTER_LINEAR)\n                self.valid_masks.append(m)\n\n        for j, probability in enumerate(output):\n            if probability.shape != (350, 525):\n                probability = cv2.resize(\n                    probability, dsize=(525, 350), interpolation=cv2.INTER_LINEAR\n                )\n            self.probabilities[j, :, :] = probability\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/config.py",
    "content": ""
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/dataset.py",
    "content": "import os\nimport cv2\n\n\nimport numpy as np\nimport pandas as pd\n\nfrom sklearn.model_selection import train_test_split\nfrom torch.utils.data import DataLoader, Dataset\nimport albumentations as albu\nimport warnings\nfrom augs import (\n    get_training_augmentation,\n    get_validation_augmentation,\n    get_preprocessing,\n)\n\nwarnings.filterwarnings(\"once\")\n\n\ndef get_img(x: str = \"img_name\", folder: str = \"train_images\"):\n    \"\"\"\n    Return image based on image name and folder.\n\n    Args:\n        x: image name\n        folder: folder with images\n\n    Returns:\n\n    \"\"\"\n    image_path = os.path.join(folder, x)\n    img = cv2.imread(image_path)\n    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n    return img\n\n\ndef rle_decode(mask_rle: str = \"\", shape: tuple = (1400, 2100)):\n    \"\"\"\n    Decode rle encoded mask.\n\n    Args:\n        mask_rle: encoded mask\n        shape: final shape\n\n    Returns:\n\n    \"\"\"\n    s = mask_rle.split()\n    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]\n    starts -= 1\n    ends = starts + lengths\n    img = np.zeros(shape[0] * shape[1], dtype=np.uint8)\n    for lo, hi in zip(starts, ends):\n        img[lo:hi] = 1\n\n    return img.reshape(shape, order=\"F\")\n\n\ndef make_mask(\n    df: pd.DataFrame, image_name: str = \"img.jpg\", shape: tuple = (1400, 2100)\n):\n    \"\"\"\n    Create mask based on df, image name and shape.\n\n    Args:\n        df: dataframe with cloud dataset\n        image_name: image name\n        shape: final shape\n\n    Returns:\n\n    \"\"\"\n\n    encoded_masks = df.loc[df[\"im_id\"] == image_name, \"EncodedPixels\"]\n    masks = np.zeros((shape[0], shape[1], 4), dtype=np.float32)\n\n    for idx, label in enumerate(encoded_masks.values):\n        if label is not np.nan:\n            mask = rle_decode(label)\n            masks[:, :, idx] = mask\n\n    return masks\n\n\ndef mask2rle(img):\n    \"\"\"\n    Convert mask to rle.\n\n    Args:\n        img:\n\n    Returns:\n\n    \"\"\"\n    pixels = img.T.flatten()\n    pixels = np.concatenate([[0], pixels, [0]])\n    runs = np.where(pixels[1:] != pixels[:-1])[0] + 1\n    runs[1::2] -= runs[::2]\n    return \" \".join(str(x) for x in runs)\n\n\nclass CloudDataset(Dataset):\n    def __init__(\n        self,\n        path: str = \"\",\n        df: pd.DataFrame = None,\n        datatype: str = \"train\",\n        img_ids: np.array = None,\n        transforms=albu.Compose([albu.HorizontalFlip()]),\n        preprocessing=None,\n        preload: bool = False,\n        image_size: tuple = (320, 640),\n        augmentation: str = \"default\",\n        filter_bad_images: bool = False,\n    ):\n        \"\"\"\n\n        Args:\n            path: path to data\n            df: dataframe with data\n            datatype: train|valid|test\n            img_ids: list of imagee ids\n            transforms: albumentation transforms\n            preprocessing: preprocessing if necessary\n            preload: whether to preload data\n            image_size: image size for resizing\n            augmentation: name of augmentation settings\n            filter_bad_images: to filter out bad images\n        \"\"\"\n\n        self.df = df\n        self.path = path\n        self.datatype = datatype if datatype == \"test\" else \"train\"\n        if self.datatype != \"test\":\n            self.data_folder = f\"{path}/train_images\"\n        else:\n            self.data_folder = f\"{path}/test_images\"\n        self.img_ids = img_ids\n        # list of bad images from discussions\n        self.bad_imgs = [\n            \"046586a.jpg\",\n            \"1588d4c.jpg\",\n            \"1e40a05.jpg\",\n            \"41f92e5.jpg\",\n            \"449b792.jpg\",\n            \"563fc48.jpg\",\n            \"8bd81ce.jpg\",\n            \"c0306e5.jpg\",\n            \"c26c635.jpg\",\n            \"e04fea3.jpg\",\n            \"e5f2f24.jpg\",\n            \"eda52f2.jpg\",\n            \"fa645da.jpg\",\n        ]\n        if filter_bad_images:\n            self.img_ids = [i for i in self.img_ids if i not in self.bad_imgs]\n        self.transforms = transforms\n        self.preprocessing = preprocessing\n        self.augmentation = augmentation\n        self.dir_name = (\n            f\"{self.path}/preload_{augmentation}_{image_size[0]}_{image_size[1]}\"\n        )\n\n        self.preload = preload\n        self.preloaded = False\n        if self.preload:\n            self.save_processed_()\n            self.preloaded = True\n\n    def save_processed_(self):\n        \"\"\"\n        Saves train images with augmentations, to speed up training.\n\n        Returns:\n\n        \"\"\"\n        os.makedirs(self.dir_name, exist_ok=True)\n        self.dir_name += f\"/{self.datatype}\"\n        if not os.path.exists(self.dir_name):\n            os.makedirs(self.dir_name)\n            for i, e in enumerate(self.img_ids):\n                img, mask = self.__getitem__(i)\n                np.save(f\"{self.dir_name}/{e}_mask.npy\", mask)\n                np.save(f\"{self.dir_name}/{e}_img.npy\", img)\n\n    def __getitem__(self, idx):\n        image_name = self.img_ids[idx]\n        if self.preloaded and self.datatype != \"valid\":\n            img = np.load(f\"{self.dir_name}/{image_name}_img.npy\")\n            mask = np.load(f\"{self.dir_name}/{image_name}_mask.npy\")\n\n        else:\n            mask = make_mask(self.df, image_name)\n            image_path = os.path.join(self.data_folder, image_name)\n            img = cv2.imread(image_path)\n            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n            augmented = self.transforms(image=img, mask=mask)\n            img = augmented[\"image\"]\n            mask = augmented[\"mask\"]\n            if self.preprocessing:\n                preprocessed = self.preprocessing(image=img, mask=mask)\n                img = preprocessed[\"image\"]\n                mask = preprocessed[\"mask\"]\n\n        return img, mask\n\n    def __len__(self):\n        return len(self.img_ids)\n\n\nclass CloudDatasetClassification(Dataset):\n    def __init__(\n        self,\n        path: str = \"\",\n        df: pd.DataFrame = None,\n        datatype: str = \"train\",\n        img_ids: np.array = None,\n        transforms=albu.Compose([albu.HorizontalFlip()]),\n        preprocessing=None,\n        preload: bool = False,\n        image_size: tuple = (320, 640),\n        augmentation: str = \"default\",\n        one_hot_labels: dict = None,\n        filter_bad_images: bool = False,\n    ):\n        \"\"\"\n\n        Args:\n            path: path to data\n            df: dataframe with data\n            datatype: train|valid|test\n            img_ids: list of imagee ids\n            transforms: albumentation transforms\n            preprocessing: preprocessing if necessary\n            preload: whether to preload data\n            image_size: image size for resizing\n            augmentation: name of augmentation settings\n            one_hot_labels: dictionary with labels for images\n            filter_bad_images: to filter out bad images\n        \"\"\"\n        self.df = df\n        self.path = path\n        self.datatype = datatype if datatype == \"test\" else \"train\"\n        if self.datatype != \"test\":\n            self.data_folder = f\"{path}/train_images\"\n        else:\n            self.data_folder = f\"{path}/test_images\"\n        self.img_ids = img_ids\n        self.bad_imgs = [\n            \"046586a.jpg\",\n            \"1588d4c.jpg\",\n            \"1e40a05.jpg\",\n            \"41f92e5.jpg\",\n            \"449b792.jpg\",\n            \"563fc48.jpg\",\n            \"8bd81ce.jpg\",\n            \"c0306e5.jpg\",\n            \"c26c635.jpg\",\n            \"e04fea3.jpg\",\n            \"e5f2f24.jpg\",\n            \"eda52f2.jpg\",\n            \"fa645da.jpg\",\n        ]\n        if filter_bad_images:\n            self.img_ids = [i for i in self.img_ids if i not in self.bad_imgs]\n        self.transforms = transforms\n        self.preprocessing = preprocessing\n        self.augmentation = augmentation\n        self.dir_name = (\n            f\"{self.path}/preload_{augmentation}_{image_size[0]}_{image_size[1]}\"\n        )\n        self.one_hot_labels = one_hot_labels\n\n        self.preload = preload\n        self.preloaded = False\n        if self.preload:\n            self.save_processed_()\n            self.preloaded = True\n\n    def save_processed_(self):\n\n        os.makedirs(self.dir_name, exist_ok=True)\n        self.dir_name += f\"/{self.datatype}\"\n        if not os.path.exists(self.dir_name):\n            os.makedirs(self.dir_name)\n            for i, e in enumerate(self.img_ids):\n                img, mask = self.__getitem__(i)\n                np.save(f\"{self.dir_name}/{e}_img.npy\", img)\n\n    def __getitem__(self, idx):\n        image_name = self.img_ids[idx]\n        if self.preloaded and self.datatype != \"valid\":\n            img = np.load(f\"{self.dir_name}/{image_name}_img.npy\")\n\n        else:\n            image_path = os.path.join(self.data_folder, image_name)\n            img = cv2.imread(image_path)\n            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n            augmented = self.transforms(image=img)\n            img = augmented[\"image\"]\n            if self.preprocessing:\n                preprocessed = self.preprocessing(image=img)\n                img = preprocessed[\"image\"]\n\n            label = self.one_hot_labels[image_name]\n\n        return img, label\n\n    def __len__(self):\n        return len(self.img_ids)\n\n\ndef prepare_loaders(\n    path: str = \"\",\n    bs: int = 4,\n    num_workers: int = 0,\n    preprocessing_fn=None,\n    preload: bool = False,\n    image_size: tuple = (320, 640),\n    augmentation: str = \"default\",\n    task: str = \"segmentation\",\n):\n    \"\"\"\n    Prepare dataloaders for catalyst.\n\n    At first reads dataframe with the data and prepares it to be used in dataloaders.\n    Creates dataloaders and returns them.\n\n    Args:\n        path: path to data\n        bs: batch size\n        num_workers: number of workers\n        preprocessing_fn: preprocessing\n        preload: whether to save augmented data on disk\n        image_size: image size to resize\n        augmentation: augmentation name\n        task: segmentation or classification\n\n    Returns:\n\n    \"\"\"\n\n    train = pd.read_csv(f\"{path}/train.csv\")\n    train[\"label\"] = train[\"Image_Label\"].apply(lambda x: x.split(\"_\")[1])\n    train[\"im_id\"] = train[\"Image_Label\"].apply(lambda x: x.split(\"_\")[0])\n\n    id_mask_count = (\n        train.loc[~train[\"EncodedPixels\"].isnull(), \"Image_Label\"]\n        .apply(lambda x: x.split(\"_\")[0])\n        .value_counts()\n        .reset_index()\n        .rename(columns={\"index\": \"img_id\", \"Image_Label\": \"count\"})\n    )\n    train_ids, valid_ids = train_test_split(\n        id_mask_count[\"img_id\"].values,\n        random_state=42,\n        shuffle=True,\n        # stratify=id_mask_count['count'],\n        test_size=0.1,\n    )\n\n    if task == \"classification\":\n        train_df = train[~train[\"EncodedPixels\"].isnull()]\n        classes = train_df[\"label\"].unique()\n        train_df = train_df.groupby(\"im_id\")[\"label\"].agg(set).reset_index()\n        for class_name in classes:\n            train_df[class_name] = train_df[\"label\"].map(\n                lambda x: 1 if class_name in x else 0\n            )\n\n        img_2_ohe_vector = {\n            img: np.float32(vec)\n            for img, vec in zip(train_df[\"im_id\"], train_df.iloc[:, 2:].values)\n        }\n\n    sub = pd.read_csv(f\"{path}/sample_submission.csv\")\n    sub[\"label\"] = sub[\"Image_Label\"].apply(lambda x: x.split(\"_\")[1])\n    sub[\"im_id\"] = sub[\"Image_Label\"].apply(lambda x: x.split(\"_\")[0])\n    test_ids = (\n        sub[\"Image_Label\"].apply(lambda x: x.split(\"_\")[0]).drop_duplicates().values\n    )\n\n    if task == \"segmentation\":\n        if preload:\n            _ = CloudDataset(\n                path=path,\n                df=train,\n                datatype=\"train\",\n                img_ids=id_mask_count[\"img_id\"].values,\n                transforms=get_training_augmentation(\n                    augmentation=augmentation, image_size=image_size\n                ),\n                preprocessing=get_preprocessing(preprocessing_fn),\n                preload=preload,\n                image_size=(320, 640),\n            )\n\n        train_dataset = CloudDataset(\n            path=path,\n            df=train,\n            datatype=\"train\",\n            img_ids=train_ids,\n            transforms=get_training_augmentation(\n                augmentation=augmentation, image_size=image_size\n            ),\n            preprocessing=get_preprocessing(preprocessing_fn),\n            preload=preload,\n            image_size=(320, 640),\n        )\n        valid_dataset = CloudDataset(\n            path=path,\n            df=train,\n            datatype=\"valid\",\n            img_ids=valid_ids,\n            transforms=get_validation_augmentation(image_size=image_size),\n            preprocessing=get_preprocessing(preprocessing_fn),\n            preload=preload,\n            image_size=(320, 640),\n        )\n\n    elif task == \"classification\":\n        if preload:\n            _ = CloudDatasetClassification(\n                path=path,\n                df=train,\n                datatype=\"train\",\n                img_ids=id_mask_count[\"img_id\"].values,\n                transforms=get_training_augmentation(\n                    augmentation=augmentation, image_size=image_size\n                ),\n                preprocessing=get_preprocessing(preprocessing_fn),\n                preload=preload,\n                image_size=(320, 640),\n                one_hot_labels=img_2_ohe_vector,\n            )\n\n        train_dataset = CloudDatasetClassification(\n            path=path,\n            df=train,\n            datatype=\"train\",\n            img_ids=train_ids,\n            transforms=get_training_augmentation(\n                augmentation=augmentation, image_size=image_size\n            ),\n            preprocessing=get_preprocessing(preprocessing_fn),\n            preload=preload,\n            image_size=(320, 640),\n            one_hot_labels=img_2_ohe_vector,\n        )\n        valid_dataset = CloudDatasetClassification(\n            path=path,\n            df=train,\n            datatype=\"valid\",\n            img_ids=valid_ids,\n            transforms=get_validation_augmentation(image_size=image_size),\n            preprocessing=get_preprocessing(preprocessing_fn),\n            preload=preload,\n            image_size=(320, 640),\n            one_hot_labels=img_2_ohe_vector,\n        )\n\n    train_loader = DataLoader(\n        train_dataset,\n        batch_size=bs,\n        shuffle=True,\n        num_workers=num_workers,\n        pin_memory=True,\n    )\n    valid_loader = DataLoader(\n        valid_dataset,\n        batch_size=bs,\n        shuffle=False,\n        num_workers=num_workers,\n        pin_memory=True,\n    )\n\n    test_dataset = CloudDataset(\n        path=path,\n        df=sub,\n        datatype=\"test\",\n        img_ids=test_ids,\n        transforms=get_validation_augmentation(image_size=image_size),\n        preprocessing=get_preprocessing(preprocessing_fn),\n        preload=preload,\n        image_size=(320, 640),\n    )\n    test_loader = DataLoader(\n        test_dataset,\n        batch_size=bs // 2,\n        shuffle=False,\n        num_workers=num_workers,\n        pin_memory=True,\n    )\n\n    loaders = {\"train\": train_loader, \"valid\": valid_loader, \"test\": test_loader}\n\n    return loaders\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/inference_blend.py",
    "content": "import torch\nimport torch.nn as nn\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\nfrom catalyst.dl.runner import SupervisedRunner\nfrom catalyst.dl.callbacks import (\n    DiceCallback,\n    EarlyStoppingCallback,\n    OptimizerCallback,\n    CriterionCallback,\n    AUCCallback,\n)\n\n# from catalyst.contrib.criterion.lovasz import LovaszLossMultiClass, LovaszLossBinary\nimport ttach as tta\nimport segmentation_models_pytorch as smp\nimport datetime\nimport argparse\nimport warnings\nimport gc\nimport json\nfrom dataset import prepare_loaders\nfrom models.models import get_model\nfrom optimizers import get_optimizer\nfrom utils import get_optimal_postprocess\nfrom predict import predict, predict_blend\nfrom losses.losses import FocalLoss, BCEMulticlassDiceLoss\nfrom losses.lovasz_losses import lovasz_softmax\nfrom catalyst import utils\nfrom callbacks import MulticlassDiceMetricCallback\nfrom catalyst.utils import set_global_seed, prepare_cudnn\nimport os\n\nwarnings.filterwarnings(\"once\")\n\n\nclass Model:\n    def __init__(self, models):\n        self.models = models\n\n    def __call__(self, x):\n        res = []\n        x = x.cuda()\n        with torch.no_grad():\n            for m in self.models:\n                res.append(torch.sigmoid(m(x)))\n        res = torch.stack(res)\n        res = torch.mean(res, dim=0)\n        return res\n\n\nif __name__ == \"__main__\":\n    \"\"\"\n    Example of usage:\n    >>> python train.py --chunk_size=10000 --n_jobs=10\n\n    \"\"\"\n\n    parser = argparse.ArgumentParser(\n        description=\"Train model for understanding_cloud_organization competition\"\n    )\n    parser.add_argument(\n        \"--path\",\n        help=\"path to files\",\n        type=str,\n        default=\"/home/dex/Desktop/ml/cloud data\",\n    )\n    # https://github.com/qubvel/segmentation_models.pytorch\n    parser.add_argument(\"--encoder\", help=\"u-net encoder\", type=str, default=\"resnet18\")\n    parser.add_argument(\n        \"--encoder_weights\", help=\"pre-training dataset\", type=str, default=\"imagenet\"\n    )\n    parser.add_argument(\"--DEVICE\", help=\"device\", type=str, default=\"CUDA\")\n    parser.add_argument(\n        \"--scheduler\", help=\"scheduler\", type=str, default=\"ReduceLROnPlateau\"\n    )\n    parser.add_argument(\"--loss\", help=\"loss\", type=str, default=\"BCEDiceLoss\")\n    parser.add_argument(\"--logdir\", help=\"logdir\", type=str, default=\"./logs/\")\n    parser.add_argument(\"--optimizer\", help=\"optimizer\", type=str, default=\"Adam\")\n    parser.add_argument(\n        \"--augmentation\", help=\"augmentation\", type=str, default=\"default\"\n    )\n    parser.add_argument(\"--model_type\", help=\"model_type\", type=str, default=\"segm\")\n    parser.add_argument(\"--segm_type\", help=\"model_type\", type=str, default=\"Unet\")\n    parser.add_argument(\n        \"--task\", help=\"class or segm\", type=str, default=\"segmentation\"\n    )\n    parser.add_argument(\"--num_workers\", help=\"num_workers\", type=int, default=4)\n    parser.add_argument(\"--bs\", help=\"batch size\", type=int, default=2)\n    parser.add_argument(\"--lr\", help=\"learning rate\", type=float, default=1e-3)\n    parser.add_argument(\n        \"--lr_e\", help=\"learning rate for decoder\", type=float, default=1e-3\n    )\n    parser.add_argument(\"--num_epochs\", help=\"number of epochs\", type=int, default=100)\n    parser.add_argument(\n        \"--gradient_accumulation\",\n        help=\"gradient_accumulation steps\",\n        type=int,\n        default=None,\n    )\n    parser.add_argument(\"--height\", help=\"height\", type=int, default=320)\n    parser.add_argument(\"--width\", help=\"width\", type=int, default=640)\n    parser.add_argument(\"--seed\", help=\"random seed\", type=int, default=42)\n    parser.add_argument(\n        \"--optimize_postprocess\",\n        help=\"to optimize postprocess\",\n        type=bool,\n        default=False,\n    )\n    parser.add_argument(\"--train\", help=\"train\", type=bool, default=False)\n    parser.add_argument(\n        \"--make_prediction\", help=\"to make prediction\", type=bool, default=False\n    )\n    parser.add_argument(\n        \"--preload\", help=\"save processed data\", type=bool, default=False\n    )\n    parser.add_argument(\n        \"--separate_decoder\", help=\"number of epochs\", type=bool, default=False\n    )\n    parser.add_argument(\"--multigpu\", help=\"use multi-gpu\", type=bool, default=False)\n    parser.add_argument(\"--lookahead\", help=\"use lookahead\", type=bool, default=False)\n\n    args, unknown = parser.parse_known_args()\n    # args.train = False\n    args.optimize_postprocess = False\n    print(args)\n    if args.task == \"classification\":\n        os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n\n    set_global_seed(args.seed)\n    prepare_cudnn(deterministic=True)\n\n    sub_name = f\"Model_{args.task}_{args.model_type}_{args.encoder}_bs_{args.bs}_{str(datetime.datetime.now().date())}\"\n    logdir = f\"./logs/{sub_name}\" if args.logdir is None else args.logdir\n\n    preprocessing_fn = smp.encoders.get_preprocessing_fn(\n        args.encoder, args.encoder_weights\n    )\n    loaders = prepare_loaders(\n        path=args.path,\n        bs=args.bs,\n        num_workers=args.num_workers,\n        preprocessing_fn=preprocessing_fn,\n        preload=args.preload,\n        image_size=(args.height, args.width),\n        augmentation=args.augmentation,\n        task=args.task,\n    )\n    test_loader = loaders[\"test\"]\n    del loaders[\"test\"]\n\n    model = get_model(\n        model_type=args.segm_type,\n        encoder=args.encoder,\n        encoder_weights=args.encoder_weights,\n        activation=None,\n        task=args.task,\n    )\n\n    optimizer = get_optimizer(\n        optimizer=args.optimizer,\n        lookahead=args.lookahead,\n        model=model,\n        separate_decoder=args.separate_decoder,\n        lr=args.lr,\n        lr_e=args.lr_e,\n    )\n\n    if args.scheduler == \"ReduceLROnPlateau\":\n        scheduler = ReduceLROnPlateau(optimizer, factor=0.6, patience=3)\n    else:\n        scheduler = ReduceLROnPlateau(optimizer, factor=0.3, patience=3)\n\n    if args.loss == \"BCEDiceLoss\":\n        criterion = smp.utils.losses.BCEDiceLoss(eps=1.0)\n    elif args.loss == \"BCEJaccardLoss\":\n        criterion = smp.utils.losses.BCEJaccardLoss(eps=1.0)\n    elif args.loss == \"FocalLoss\":\n        criterion = FocalLoss()\n    # elif args.loss == 'lovasz_softmax':\n    #     criterion = lovasz_softmax()\n    elif args.loss == \"BCEMulticlassDiceLoss\":\n        criterion = BCEMulticlassDiceLoss()\n    elif args.loss == \"MulticlassDiceMetricCallback\":\n        criterion = MulticlassDiceMetricCallback()\n    elif args.loss == \"BCE\":\n        criterion = nn.BCEWithLogitsLoss()\n    else:\n        criterion = smp.utils.losses.BCEDiceLoss(eps=1.0)\n\n    if args.make_prediction:\n        print(\"MAKING PREDICTIONS\")\n        model1 = get_model(\n            model_type=args.segm_type,\n            encoder=args.encoder,\n            encoder_weights=args.encoder_weights,\n            activation=None,\n            task=args.task,\n        )\n        loaders[\"test\"] = test_loader\n        checkpoint = utils.load_checkpoint(\n            \"/home/dex/Desktop/ml/cloud artgor/logs/weights/lb 6582/best.pth\"\n        )\n        model1.cuda()\n        utils.unpack_checkpoint(checkpoint, model=model1)\n\n        model2 = get_model(\n            model_type=args.segm_type,\n            encoder=args.encoder,\n            encoder_weights=args.encoder_weights,\n            activation=None,\n            task=args.task,\n        )\n        checkpoint = utils.load_checkpoint(\n            \"/home/dex/Desktop/ml/cloud artgor/logs/weights/lb 6582/cont fitted/best.pth\"\n        )\n        model2.cuda()\n        utils.unpack_checkpoint(checkpoint, model=model2)\n\n        model = Model([model1, model2])\n        runner = SupervisedRunner(model=model)\n\n        with open(f\"{logdir}/class_params.json\", \"r\") as f:\n            class_params = json.load(f)\n        print(\"prediction postprocess params\", class_params)\n        predict_blend(\n            loaders=loaders,\n            runner=runner,\n            class_params=class_params,\n            path=args.path,\n            sub_name=sub_name,\n        )\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/losses/losses.py",
    "content": "import torch\nfrom typing import List\nfrom pytorch_toolbelt.losses.functional import sigmoid_focal_loss\nfrom torch.nn.modules.loss import _Loss\nfrom pytorch_toolbelt.losses.functional import soft_dice_score\nimport torch.nn as nn\n\n\nclass FocalLoss(_Loss):\n    def __init__(self, alpha=0.5, gamma=2, ignore_index=None):\n        \"\"\"\n        Focal loss for multi-class problem.\n        https://github.com/BloodAxe/pytorch-toolbelt/blob/develop/pytorch_toolbelt/losses/focal.py\n\n        :param alpha:\n        :param gamma:\n        :param ignore_index: If not None, targets with given index are ignored\n        \"\"\"\n        super().__init__()\n        self.alpha = alpha\n        self.gamma = gamma\n        self.ignore_index = ignore_index\n\n    def forward(self, label_input, label_target):\n        num_classes = label_input.size(1)\n        loss = 0\n\n        # Filter anchors with -1 label from loss computation\n        if self.ignore_index is not None:\n            not_ignored = label_target != self.ignore_index\n\n        for cls in range(num_classes):\n            cls_label_target = (label_target == cls).long()\n            cls_label_input = label_input[:, cls, ...]\n\n            if self.ignore_index is not None:\n                cls_label_target = cls_label_target[not_ignored]\n                cls_label_input = cls_label_input[not_ignored]\n\n            loss += sigmoid_focal_loss(\n                cls_label_input, cls_label_target, gamma=self.gamma, alpha=self.alpha\n            )\n        return loss\n\n\nclass MulticlassDiceLoss(_Loss):\n    \"\"\"Implementation of Dice loss for multiclass (semantic) image segmentation task\n    \"\"\"\n\n    def __init__(\n        self,\n        classes: List[int] = None,\n        from_logits=True,\n        weight=None,\n        reduction=\"elementwise_mean\",\n    ):\n        super(MulticlassDiceLoss, self).__init__(reduction=reduction)\n        self.classes = classes\n        self.from_logits = from_logits\n        self.weight = weight\n\n    def forward(self, y_pred: torch.Tensor, y_true: torch.Tensor) -> torch.Tensor:\n        \"\"\"\n        :param y_pred: NxCxHxW\n        :param y_true: NxHxW\n        :return: scalar\n        \"\"\"\n        if self.from_logits:\n            y_pred = y_pred.softmax(dim=1)\n\n        n_classes = y_pred.size(1)\n        smooth = 1e-3\n\n        loss = torch.zeros(n_classes, dtype=torch.float, device=y_pred.device)\n\n        if self.classes is None:\n            classes = range(n_classes)\n        else:\n            classes = self.classes\n\n        if self.weight is None:\n            weights = [1] * n_classes\n        else:\n            weights = self.weight\n\n        for class_index, weight in zip(classes, weights):\n\n            dice_target = (y_true == class_index).float()\n            dice_output = y_pred[:, class_index, ...]\n\n            num_preds = dice_target.long().sum()\n\n            if num_preds == 0:\n                loss[class_index] = 0\n            else:\n                dice = soft_dice_score(\n                    dice_output, dice_target, from_logits=False, smooth=smooth\n                )\n                loss[class_index] = (1.0 - dice) * weight\n\n        if self.reduction == \"elementwise_mean\":\n            return loss.mean()\n\n        if self.reduction == \"sum\":\n            return loss.sum()\n\n        return loss\n\n\nclass BCEMulticlassDiceLoss(MulticlassDiceLoss):\n    __name__ = \"bce_multiclass_dice_loss\"\n\n    def __init__(self, eps=1e-7, activation=\"sigmoid\"):\n        super().__init__(eps, activation)\n        self.bce = nn.BCEWithLogitsLoss(reduction=\"mean\")\n\n    def forward(self, y_pr, y_gt):\n        dice = super().forward(y_pr, y_gt)\n        bce = self.bce(y_pr, y_gt)\n        return dice + bce\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/losses/lovasz_losses.py",
    "content": "\"\"\"\nLovasz-Softmax and Jaccard hinge loss in PyTorch\nMaxim Berman 2018 ESAT-PSI KU Leuven (MIT License)\n\"\"\"\n\n# from __future__ import print_function, division\n\nimport torch\nfrom torch.autograd import Variable\nimport torch.nn.functional as F\nimport numpy as np\n\ntry:\n    from itertools import ifilterfalse\nexcept ImportError:  # py3k\n    from itertools import filterfalse as ifilterfalse\n\n\ndef lovasz_grad(gt_sorted):\n    \"\"\"\n    Computes gradient of the Lovasz extension w.r.t sorted errors\n    See Alg. 1 in paper\n    \"\"\"\n    p = len(gt_sorted)\n    gts = gt_sorted.sum()\n    intersection = gts - gt_sorted.float().cumsum(0)\n    union = gts + (1 - gt_sorted).float().cumsum(0)\n    jaccard = 1.0 - intersection / union\n    if p > 1:  # cover 1-pixel case\n        jaccard[1:p] = jaccard[1:p] - jaccard[0:-1]\n    return jaccard\n\n\ndef iou_binary(preds, labels, EMPTY=1.0, ignore=None, per_image=True):\n    \"\"\"\n    IoU for foreground class\n    binary: 1 foreground, 0 background\n    \"\"\"\n    if not per_image:\n        preds, labels = (preds,), (labels,)\n    ious = []\n    for pred, label in zip(preds, labels):\n        intersection = ((label == 1) & (pred == 1)).sum()\n        union = ((label == 1) | ((pred == 1) & (label != ignore))).sum()\n        if not union:\n            iou = EMPTY\n        else:\n            iou = float(intersection) / float(union)\n        ious.append(iou)\n    iou = mean(ious)  # mean accross images if per_image\n    return 100 * iou\n\n\ndef iou(preds, labels, C, EMPTY=1.0, ignore=None, per_image=False):\n    \"\"\"\n    Array of IoU for each (non ignored) class\n    \"\"\"\n    if not per_image:\n        preds, labels = (preds,), (labels,)\n    ious = []\n    for pred, label in zip(preds, labels):\n        iou = []\n        for i in range(C):\n            if (\n                i != ignore\n            ):  # The ignored label is sometimes among predicted classes (ENet - CityScapes)\n                intersection = ((label == i) & (pred == i)).sum()\n                union = ((label == i) | ((pred == i) & (label != ignore))).sum()\n                if not union:\n                    iou.append(EMPTY)\n                else:\n                    iou.append(float(intersection) / float(union))\n        ious.append(iou)\n    ious = [mean(iou) for iou in zip(*ious)]  # mean accross images if per_image\n    return 100 * np.array(ious)\n\n\n# --------------------------- BINARY LOSSES ---------------------------\n\n\ndef lovasz_hinge(logits, labels, per_image=True, ignore=None):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      per_image: compute the loss per image instead of per batch\n      ignore: void class id\n    \"\"\"\n    if per_image:\n        loss = mean(\n            lovasz_hinge_flat(\n                *flatten_binary_scores(log.unsqueeze(0), lab.unsqueeze(0), ignore)\n            )\n            for log, lab in zip(logits, labels)\n        )\n    else:\n        loss = lovasz_hinge_flat(*flatten_binary_scores(logits, labels, ignore))\n    return loss\n\n\ndef lovasz_hinge_flat(logits, labels):\n    \"\"\"\n    Binary Lovasz hinge loss\n      logits: [P] Variable, logits at each prediction (between -\\infty and +\\infty)\n      labels: [P] Tensor, binary ground truth labels (0 or 1)\n      ignore: label to ignore\n    \"\"\"\n    if len(labels) == 0:\n        # only void pixels, the gradients should be 0\n        return logits.sum() * 0.0\n    signs = 2.0 * labels.float() - 1.0\n    errors = 1.0 - logits * Variable(signs)\n    errors_sorted, perm = torch.sort(errors, dim=0, descending=True)\n    perm = perm.data\n    gt_sorted = labels[perm]\n    grad = lovasz_grad(gt_sorted)\n    loss = torch.dot(F.relu(errors_sorted), Variable(grad))\n    return loss\n\n\ndef flatten_binary_scores(scores, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch (binary case)\n    Remove labels equal to 'ignore'\n    \"\"\"\n    scores = scores.view(-1)\n    labels = labels.view(-1)\n    if ignore is None:\n        return scores, labels\n    valid = labels != ignore\n    vscores = scores[valid]\n    vlabels = labels[valid]\n    return vscores, vlabels\n\n\nclass StableBCELoss(torch.nn.modules.Module):\n    def __init__(self):\n        super(StableBCELoss, self).__init__()\n\n    def forward(self, input, target):\n        neg_abs = -input.abs()\n        loss = input.clamp(min=0) - input * target + (1 + neg_abs.exp()).log()\n        return loss.mean()\n\n\ndef binary_xloss(logits, labels, ignore=None):\n    \"\"\"\n    Binary Cross entropy loss\n      logits: [B, H, W] Variable, logits at each pixel (between -\\infty and +\\infty)\n      labels: [B, H, W] Tensor, binary ground truth masks (0 or 1)\n      ignore: void class id\n    \"\"\"\n    logits, labels = flatten_binary_scores(logits, labels, ignore)\n    loss = StableBCELoss()(logits, Variable(labels.float()))\n    return loss\n\n\n# --------------------------- MULTICLASS LOSSES ---------------------------\n\n\ndef lovasz_softmax(probas, labels, classes=\"present\", per_image=False, ignore=None):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [B, C, H, W] Variable, class probabilities at each prediction (between 0 and 1).\n              Interpreted as binary (sigmoid) output with outputs of size [B, H, W].\n      labels: [B, H, W] Tensor, ground truth labels (between 0 and C - 1)\n      classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n      per_image: compute the loss per image instead of per batch\n      ignore: void class labels\n    \"\"\"\n    if per_image:\n        loss = mean(\n            lovasz_softmax_flat(\n                *flatten_probas(prob.unsqueeze(0), lab.unsqueeze(0), ignore),\n                classes=classes\n            )\n            for prob, lab in zip(probas, labels)\n        )\n    else:\n        loss = lovasz_softmax_flat(\n            *flatten_probas(probas, labels, ignore), classes=classes\n        )\n    return loss\n\n\ndef lovasz_softmax_flat(probas, labels, classes=\"present\"):\n    \"\"\"\n    Multi-class Lovasz-Softmax loss\n      probas: [P, C] Variable, class probabilities at each prediction (between 0 and 1)\n      labels: [P] Tensor, ground truth labels (between 0 and C - 1)\n      classes: 'all' for all, 'present' for classes present in labels, or a list of classes to average.\n    \"\"\"\n    if probas.numel() == 0:\n        # only void pixels, the gradients should be 0\n        return probas * 0.0\n    C = probas.size(1)\n    losses = []\n    class_to_sum = list(range(C)) if classes in [\"all\", \"present\"] else classes\n    for c in class_to_sum:\n        fg = (labels == c).float()  # foreground for class c\n        if classes is \"present\" and fg.sum() == 0:\n            continue\n        if C == 1:\n            if len(classes) > 1:\n                raise ValueError(\"Sigmoid output possible only with 1 class\")\n            class_pred = probas[:, 0]\n        else:\n            class_pred = probas[:, c]\n        errors = (Variable(fg) - class_pred).abs()\n        errors_sorted, perm = torch.sort(errors, 0, descending=True)\n        perm = perm.data\n        fg_sorted = fg[perm]\n        losses.append(torch.dot(errors_sorted, Variable(lovasz_grad(fg_sorted))))\n    return mean(losses)\n\n\ndef flatten_probas(probas, labels, ignore=None):\n    \"\"\"\n    Flattens predictions in the batch\n    \"\"\"\n    if probas.dim() == 3:\n        # assumes output of a sigmoid layer\n        B, H, W = probas.size()\n        probas = probas.view(B, 1, H, W)\n    B, C, H, W = probas.size()\n    probas = probas.permute(0, 2, 3, 1).contiguous().view(-1, C)  # B * H * W, C = P, C\n    labels = labels.view(-1)\n    if ignore is None:\n        return probas, labels\n    valid = labels != ignore\n    vprobas = probas[valid.nonzero().squeeze()]\n    vlabels = labels[valid]\n    return vprobas, vlabels\n\n\ndef xloss(logits, labels, ignore=None):\n    \"\"\"\n    Cross entropy loss\n    \"\"\"\n    return F.cross_entropy(logits, Variable(labels), ignore_index=255)\n\n\n# --------------------------- HELPER FUNCTIONS ---------------------------\ndef isnan(x):\n    return x != x\n\n\ndef mean(l, ignore_nan=False, empty=0):\n    \"\"\"\n    nanmean compatible with generators.\n    \"\"\"\n    l = iter(l)\n    if ignore_nan:\n        l = ifilterfalse(isnan, l)\n    try:\n        n = 1\n        acc = next(l)\n    except StopIteration:\n        if empty == \"raise\":\n            raise ValueError(\"Empty mean\")\n        return empty\n    for n, v in enumerate(l, 2):\n        acc += v\n    if n == 1:\n        return acc\n    return acc / n\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/optimizers.py",
    "content": "import torch\nimport warnings\nfrom torch.optim.optimizer import Optimizer\nimport math\nimport itertools as it\nimport torch.optim as optim\n\nwarnings.filterwarnings(\"once\")\n\n\nclass Ranger(Optimizer):\n\n    # https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer/blob/master/ranger.py\n\n    def __init__(\n        self,\n        params,\n        lr=1e-3,\n        alpha=0.5,\n        k=6,\n        N_sma_threshhold=5,\n        betas=(0.95, 0.999),\n        eps=1e-5,\n        weight_decay=0,\n    ):\n        # parameter checks\n        if not 0.0 <= alpha <= 1.0:\n            raise ValueError(f\"Invalid slow update rate: {alpha}\")\n        if not 1 <= k:\n            raise ValueError(f\"Invalid lookahead steps: {k}\")\n        if not lr > 0:\n            raise ValueError(f\"Invalid Learning Rate: {lr}\")\n        if not eps > 0:\n            raise ValueError(f\"Invalid eps: {eps}\")\n\n        # parameter comments:\n        # beta1 (momentum) of .95 seems to work better than .90...\n        # N_sma_threshold of 5 seems better in testing than 4.\n        # In both cases, worth testing on your dataset (.90 vs .95, 4 vs 5) to make sure which works best for you.\n\n        # prep defaults and init torch.optim base\n        defaults = dict(\n            lr=lr,\n            alpha=alpha,\n            k=k,\n            step_counter=0,\n            betas=betas,\n            N_sma_threshhold=N_sma_threshhold,\n            eps=eps,\n            weight_decay=weight_decay,\n        )\n        super().__init__(params, defaults)\n\n        # adjustable threshold\n        self.N_sma_threshhold = N_sma_threshhold\n\n        # look ahead params\n        self.alpha = alpha\n        self.k = k\n\n        # radam buffer for state\n        self.radam_buffer = [[None, None, None] for ind in range(10)]\n\n    def __setstate__(self, state):\n        print(\"set state called\")\n        super(Ranger, self).__setstate__(state)\n\n    def step(self, closure=None):\n        loss = None\n\n        # Evaluate averages and grad, update param tensors\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\n                        \"Ranger optimizer does not support sparse gradients\"\n                    )\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]  # get state dict for this param\n\n                if (\n                    len(state) == 0\n                ):  # if first time to run...init dictionary with our desired entries\n                    # if self.first_run_check==0:\n                    # self.first_run_check=1\n                    # print(\"Initializing slow buffer...should not see this at load from saved model!\")\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n\n                    # look ahead weight storage now in state dict\n                    state[\"slow_buffer\"] = torch.empty_like(p.data)\n                    state[\"slow_buffer\"].copy_(p.data)\n\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                # begin computations\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                # compute variance mov avg\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                # compute mean moving avg\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n\n                state[\"step\"] += 1\n\n                buffered = self.radam_buffer[int(state[\"step\"] % 10)]\n                if state[\"step\"] == buffered[0]:\n                    N_sma, step_size = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state[\"step\"]\n                    beta2_t = beta2 ** state[\"step\"]\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n                    if N_sma > self.N_sma_threshhold:\n                        step_size = math.sqrt(\n                            (1 - beta2_t)\n                            * (N_sma - 4)\n                            / (N_sma_max - 4)\n                            * (N_sma - 2)\n                            / N_sma\n                            * N_sma_max\n                            / (N_sma_max - 2)\n                        ) / (1 - beta1 ** state[\"step\"])\n                    else:\n                        step_size = 1.0 / (1 - beta1 ** state[\"step\"])\n                    buffered[2] = step_size\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                if N_sma > self.N_sma_threshhold:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-step_size * group[\"lr\"], exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-step_size * group[\"lr\"], exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n                # integrated look ahead...\n                # we do it at the param level instead of group level\n                if state[\"step\"] % group[\"k\"] == 0:\n                    slow_p = state[\"slow_buffer\"]  # get access to slow param tensor\n                    slow_p.add_(\n                        self.alpha, p.data - slow_p\n                    )  # (fast weights - slow weights) * alpha\n                    p.data.copy_(\n                        slow_p\n                    )  # copy interpolated weights to RAdam param tensor\n\n        return loss\n\n\nclass RAdam(Optimizer):\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n        self.buffer = [[None, None, None] for ind in range(10)]\n        super(RAdam, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(RAdam, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\"RAdam does not support sparse gradients\")\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n\n                state[\"step\"] += 1\n                buffered = self.buffer[int(state[\"step\"] % 10)]\n                if state[\"step\"] == buffered[0]:\n                    N_sma, step_size = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state[\"step\"]\n                    beta2_t = beta2 ** state[\"step\"]\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n\n                    if N_sma >= 5:\n                        step_size = math.sqrt(\n                            (1 - beta2_t)\n                            * (N_sma - 4)\n                            / (N_sma_max - 4)\n                            * (N_sma - 2)\n                            / N_sma\n                            * N_sma_max\n                            / (N_sma_max - 2)\n                        ) / (1 - beta1 ** state[\"step\"])\n                    else:\n                        step_size = 1.0 / (1 - beta1 ** state[\"step\"])\n                    buffered[2] = step_size\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                # more conservative since it's an approximated value\n                if N_sma >= 5:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-step_size * group[\"lr\"], exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-step_size * group[\"lr\"], exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\n# https://github.com/lonePatient/lookahead_pytorch/blob/master/optimizer.py\n\n\nclass Lookahead(Optimizer):\n    def __init__(self, base_optimizer, alpha=0.5, k=6):\n        if not 0.0 <= alpha <= 1.0:\n            raise ValueError(f\"Invalid slow update rate: {alpha}\")\n        if not 1 <= k:\n            raise ValueError(f\"Invalid lookahead steps: {k}\")\n        self.optimizer = base_optimizer\n        self.param_groups = self.optimizer.param_groups\n        self.alpha = alpha\n        self.k = k\n        for group in self.param_groups:\n            group[\"step_counter\"] = 0\n        self.slow_weights = [\n            [p.clone().detach() for p in group[\"params\"]] for group in self.param_groups\n        ]\n\n        for w in it.chain(*self.slow_weights):\n            w.requires_grad = False\n\n    def step(self, closure=None):\n        loss = None\n        if closure is not None:\n            loss = closure()\n        loss = self.optimizer.step()\n        for group, slow_weights in zip(self.param_groups, self.slow_weights):\n            group[\"step_counter\"] += 1\n            if group[\"step_counter\"] % self.k != 0:\n                continue\n            for p, q in zip(group[\"params\"], slow_weights):\n                if p.grad is None:\n                    continue\n                q.data.add_(self.alpha, p.data - q.data)\n                p.data.copy_(q.data)\n        return loss\n\n\nclass Ralamb(Optimizer):\n    \"\"\"\n    Ralamb optimizer (RAdam + LARS trick)\n    \"\"\"\n\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n        self.buffer = [[None, None, None] for ind in range(10)]\n        super(Ralamb, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(Ralamb, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group[\"params\"]:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError(\"Ralamb does not support sparse gradients\")\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state[\"step\"] = 0\n                    state[\"exp_avg\"] = torch.zeros_like(p_data_fp32)\n                    state[\"exp_avg_sq\"] = torch.zeros_like(p_data_fp32)\n                else:\n                    state[\"exp_avg\"] = state[\"exp_avg\"].type_as(p_data_fp32)\n                    state[\"exp_avg_sq\"] = state[\"exp_avg_sq\"].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state[\"exp_avg\"], state[\"exp_avg_sq\"]\n                beta1, beta2 = group[\"betas\"]\n\n                # Decay the first and second moment running average coefficient\n                # m_t\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n                # v_t\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n\n                state[\"step\"] += 1\n                buffered = self.buffer[int(state[\"step\"] % 10)]\n\n                if state[\"step\"] == buffered[0]:\n                    N_sma, radam_step = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state[\"step\"]\n                    beta2_t = beta2 ** state[\"step\"]\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state[\"step\"] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n\n                    # more conservative since it's an approximated value\n                    if N_sma >= 5:\n                        radam_step = (\n                            group[\"lr\"]\n                            * math.sqrt(\n                                (1 - beta2_t)\n                                * (N_sma - 4)\n                                / (N_sma_max - 4)\n                                * (N_sma - 2)\n                                / N_sma\n                                * N_sma_max\n                                / (N_sma_max - 2)\n                            )\n                            / (1 - beta1 ** state[\"step\"])\n                        )\n                    else:\n                        radam_step = group[\"lr\"] / (1 - beta1 ** state[\"step\"])\n                    buffered[2] = radam_step\n\n                if group[\"weight_decay\"] != 0:\n                    p_data_fp32.add_(-group[\"weight_decay\"] * group[\"lr\"], p_data_fp32)\n\n                weight_norm = p.data.pow(2).sum().sqrt().clamp(0, 10)\n                radam_norm = p_data_fp32.pow(2).sum().sqrt()\n                if weight_norm == 0 or radam_norm == 0:\n                    trust_ratio = 1\n                else:\n                    trust_ratio = weight_norm / radam_norm\n\n                state[\"weight_norm\"] = weight_norm\n                state[\"adam_norm\"] = radam_norm\n                state[\"trust_ratio\"] = trust_ratio\n\n                # more conservative since it's an approximated value\n                if N_sma >= 5:\n                    denom = exp_avg_sq.sqrt().add_(group[\"eps\"])\n                    p_data_fp32.addcdiv_(-radam_step * trust_ratio, exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-radam_step * trust_ratio, exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n\ndef get_optimizer(\n    optimizer: str = \"Adam\",\n    lookahead: bool = False,\n    model=None,\n    separate_decoder: bool = True,\n    lr: float = 1e-3,\n    lr_e: float = 1e-3,\n):\n    \"\"\"\n    # https://github.com/lonePatient/lookahead_pytorch/blob/master/run.py\n\n    :param optimizer:\n    :param lookahead:\n    :param model:\n    :param separate_decoder:\n    :param lr:\n    :param lr_e:\n    :return:\n    \"\"\"\n\n    if separate_decoder:\n        params = [\n            {\"params\": model.decoder.parameters(), \"lr\": lr},\n            {\"params\": model.encoder.parameters(), \"lr\": lr_e},\n        ]\n    else:\n        params = [{\"params\": model.parameters(), \"lr\": lr}]\n\n    if optimizer == \"Adam\":\n        optimizer = optim.Adam(params, lr=lr)\n    elif optimizer == \"RAdam\":\n        optimizer = RAdam(params, lr=lr)\n    elif optimizer == \"Ralamb\":\n        optimizer = Ralamb(params, lr=lr)\n    else:\n        raise ValueError(\"unknown base optimizer type\")\n\n    if lookahead:\n        optimizer = Lookahead(base_optimizer=optimizer, k=5, alpha=0.5)\n\n    return optimizer\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/predict.py",
    "content": "import cv2\nimport numpy as np\nimport pandas as pd\nfrom utils import post_process\nfrom dataset import mask2rle\nfrom tqdm import tqdm\n\n\ndef sigmoid(x):\n    return 1 / (1 + np.exp(-x))\n\n\ndef predict(\n    loaders=None,\n    runner=None,\n    class_params: dict = None,\n    path: str = \"\",\n    sub_name: str = \"\",\n):\n    \"\"\"\n\n    Args:\n        loaders:\n        runner:\n        class_params:\n        path:\n        sub_name:\n\n    Returns:\n\n    \"\"\"\n    encoded_pixels = []\n    image_id = 0\n    for _, test_batch in tqdm(enumerate(loaders[\"test\"])):\n        runner_out = runner.predict_batch({\"features\": test_batch[0].cuda()})[\"logits\"]\n        for _, batch in enumerate(runner_out):\n            for probability in batch:\n\n                probability = probability.cpu().detach().numpy()\n                if probability.shape != (350, 525):\n                    probability = cv2.resize(\n                        probability, dsize=(525, 350), interpolation=cv2.INTER_LINEAR\n                    )\n                    prediction, num_predict = post_process(\n                        sigmoid(probability),\n                        class_params[str(image_id % 4)][0],\n                        class_params[str(image_id % 4)][1],\n                    )\n                if num_predict == 0:\n                    encoded_pixels.append(\"\")\n                else:\n                    r = mask2rle(prediction)\n                    encoded_pixels.append(r)\n                image_id += 1\n\n    sub = pd.read_csv(f\"{path}/sample_submission.csv\")\n    sub[\"EncodedPixels\"] = encoded_pixels\n    sub.to_csv(\n        f\"submissions/submission_{sub_name}.csv\",\n        columns=[\"Image_Label\", \"EncodedPixels\"],\n        index=False,\n    )\n\n\ndef predict_blend(\n    loaders=None,\n    runner=None,\n    class_params: dict = None,\n    path: str = \"\",\n    sub_name: str = \"\",\n):\n    \"\"\"\n\n    Args:\n        loaders:\n        runner:\n        class_params:\n        path:\n        sub_name:\n\n    Returns:\n\n    \"\"\"\n    encoded_pixels = []\n    image_id = 0\n    for _, test_batch in tqdm(enumerate(loaders[\"test\"])):\n        runner_out = runner.predict_batch({\"features\": test_batch[0].cuda()})[\"logits\"]\n        for _, batch in enumerate(runner_out):\n            for probability in batch:\n\n                probability = probability.cpu().detach().numpy()\n                if probability.shape != (350, 525):\n                    probability = cv2.resize(\n                        probability, dsize=(525, 350), interpolation=cv2.INTER_LINEAR\n                    )\n                    prediction, num_predict = post_process(\n                        (probability),\n                        class_params[str(image_id % 4)][0],\n                        class_params[str(image_id % 4)][1],\n                    )\n                if num_predict == 0:\n                    encoded_pixels.append(\"\")\n                else:\n                    r = mask2rle(prediction)\n                    encoded_pixels.append(r)\n                image_id += 1\n\n    sub = pd.read_csv(f\"{path}/sample_submission.csv\")\n    sub[\"EncodedPixels\"] = encoded_pixels\n    sub.to_csv(\n        f\"submissions/submission_{sub_name}.csv\",\n        columns=[\"Image_Label\", \"EncodedPixels\"],\n        index=False,\n    )\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/schedulers.py",
    "content": "# import torch\n\n# import warnings\n# warnings.filterwarnings(\"once\")\n#\n# from torch.optim.optimizer import Optimizer\n# import math\n# import itertools as it\n# import torch.optim as optim\n#\n#\n# def get_scheduler(scheduler: str = 'ReduceLROnPlateau'):\n#     # https://github.com/lonePatient/lookahead_pytorch/blob/master/run.py\n#\n#     if scheduler == 'ReduceLROnPlateau':\n#         scheduler = ReduceLROnPlateau(optimizer, factor=0.8, patience=3)\n#\n#\n#     return scheduler\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/train.py",
    "content": "import torch\nimport torch.nn as nn\nfrom torch.optim.lr_scheduler import ReduceLROnPlateau\nfrom catalyst.dl.runner import SupervisedRunner\nfrom catalyst.dl.callbacks import (\n    DiceCallback,\n    EarlyStoppingCallback,\n    OptimizerCallback,\n    CriterionCallback,\n    AUCCallback,\n)\n\n# from catalyst.contrib.criterion.lovasz import LovaszLossMultiClass, LovaszLossBinary\nimport ttach as tta\nimport segmentation_models_pytorch as smp\nimport datetime\nimport argparse\nimport warnings\nimport gc\nimport json\nfrom dataset import prepare_loaders\nfrom models.models import get_model\nfrom optimizers import get_optimizer\nfrom utils import get_optimal_postprocess\nfrom predict import predict, predict_blend\nfrom losses.losses import FocalLoss, BCEMulticlassDiceLoss\nfrom losses.lovasz_losses import lovasz_softmax\nfrom catalyst import utils\nfrom callbacks import MulticlassDiceMetricCallback\nfrom catalyst.utils import set_global_seed, prepare_cudnn\nimport os\n\nwarnings.filterwarnings(\"once\")\n\nif __name__ == \"__main__\":\n    \"\"\"\n    Example of usage:\n    >>> python train.py --chunk_size=10000 --n_jobs=10\n\n    \"\"\"\n\n    parser = argparse.ArgumentParser(\n        description=\"Train model for understanding_cloud_organization competition\"\n    )\n    parser.add_argument(\n        \"--path\",\n        help=\"path to files\",\n        type=str,\n        default=\"/home/dex/Desktop/ml/cloud data\",\n    )\n    # https://github.com/qubvel/segmentation_models.pytorch\n    parser.add_argument(\"--encoder\", help=\"u-net encoder\", type=str, default=\"resnet18\")\n    parser.add_argument(\n        \"--encoder_weights\", help=\"pre-training dataset\", type=str, default=\"imagenet\"\n    )\n    parser.add_argument(\"--DEVICE\", help=\"device\", type=str, default=\"CUDA\")\n    parser.add_argument(\n        \"--scheduler\", help=\"scheduler\", type=str, default=\"ReduceLROnPlateau\"\n    )\n    parser.add_argument(\"--loss\", help=\"loss\", type=str, default=\"BCEDiceLoss\")\n    parser.add_argument(\"--logdir\", help=\"logdir\", type=str, default=\"./logs/\")\n    parser.add_argument(\"--optimizer\", help=\"optimizer\", type=str, default=\"Adam\")\n    parser.add_argument(\n        \"--augmentation\", help=\"augmentation\", type=str, default=\"default\"\n    )\n    parser.add_argument(\"--model_type\", help=\"model_type\", type=str, default=\"segm\")\n    parser.add_argument(\"--segm_type\", help=\"model_type\", type=str, default=\"Unet\")\n    parser.add_argument(\n        \"--task\", help=\"class or segm\", type=str, default=\"segmentation\"\n    )\n    parser.add_argument(\"--num_workers\", help=\"num_workers\", type=int, default=4)\n    parser.add_argument(\"--bs\", help=\"batch size\", type=int, default=2)\n    parser.add_argument(\"--lr\", help=\"learning rate\", type=float, default=1e-3)\n    parser.add_argument(\n        \"--lr_e\", help=\"learning rate for decoder\", type=float, default=1e-3\n    )\n    parser.add_argument(\"--num_epochs\", help=\"number of epochs\", type=int, default=100)\n    parser.add_argument(\n        \"--gradient_accumulation\",\n        help=\"gradient_accumulation steps\",\n        type=int,\n        default=None,\n    )\n    parser.add_argument(\"--height\", help=\"height\", type=int, default=320)\n    parser.add_argument(\"--width\", help=\"width\", type=int, default=640)\n    parser.add_argument(\"--seed\", help=\"random seed\", type=int, default=42)\n    parser.add_argument(\n        \"--optimize_postprocess\",\n        help=\"to optimize postprocess\",\n        type=bool,\n        default=False,\n    )\n    parser.add_argument(\"--train\", help=\"train\", type=bool, default=False)\n    parser.add_argument(\n        \"--make_prediction\", help=\"to make prediction\", type=bool, default=False\n    )\n    parser.add_argument(\n        \"--preload\", help=\"save processed data\", type=bool, default=False\n    )\n    parser.add_argument(\n        \"--separate_decoder\", help=\"number of epochs\", type=bool, default=False\n    )\n    parser.add_argument(\"--multigpu\", help=\"use multi-gpu\", type=bool, default=False)\n    parser.add_argument(\"--lookahead\", help=\"use lookahead\", type=bool, default=False)\n\n    args, unknown = parser.parse_known_args()\n    # args.train = False\n    args.optimize_postprocess = False\n    print(args)\n    if args.task == \"classification\":\n        os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n\n    set_global_seed(args.seed)\n    prepare_cudnn(deterministic=True)\n\n    sub_name = f\"Model_{args.task}_{args.model_type}_{args.encoder}_bs_{args.bs}_{str(datetime.datetime.now().date())}\"\n    logdir = f\"./logs/{sub_name}\" if args.logdir is None else args.logdir\n\n    preprocessing_fn = smp.encoders.get_preprocessing_fn(\n        args.encoder, args.encoder_weights\n    )\n    loaders = prepare_loaders(\n        path=args.path,\n        bs=args.bs,\n        num_workers=args.num_workers,\n        preprocessing_fn=preprocessing_fn,\n        preload=args.preload,\n        image_size=(args.height, args.width),\n        augmentation=args.augmentation,\n        task=args.task,\n    )\n    test_loader = loaders[\"test\"]\n    del loaders[\"test\"]\n\n    model = get_model(\n        model_type=args.segm_type,\n        encoder=args.encoder,\n        encoder_weights=args.encoder_weights,\n        activation=None,\n        task=args.task,\n    )\n\n    optimizer = get_optimizer(\n        optimizer=args.optimizer,\n        lookahead=args.lookahead,\n        model=model,\n        separate_decoder=args.separate_decoder,\n        lr=args.lr,\n        lr_e=args.lr_e,\n    )\n\n    if args.scheduler == \"ReduceLROnPlateau\":\n        scheduler = ReduceLROnPlateau(optimizer, factor=0.6, patience=3)\n    else:\n        scheduler = ReduceLROnPlateau(optimizer, factor=0.3, patience=3)\n\n    if args.loss == \"BCEDiceLoss\":\n        criterion = smp.utils.losses.BCEDiceLoss(eps=1.0)\n    elif args.loss == \"BCEJaccardLoss\":\n        criterion = smp.utils.losses.BCEJaccardLoss(eps=1.0)\n    elif args.loss == \"FocalLoss\":\n        criterion = FocalLoss()\n    # elif args.loss == 'lovasz_softmax':\n    #     criterion = lovasz_softmax()\n    elif args.loss == \"BCEMulticlassDiceLoss\":\n        criterion = BCEMulticlassDiceLoss()\n    elif args.loss == \"MulticlassDiceMetricCallback\":\n        criterion = MulticlassDiceMetricCallback()\n    elif args.loss == \"BCE\":\n        criterion = nn.BCEWithLogitsLoss()\n    else:\n        criterion = smp.utils.losses.BCEDiceLoss(eps=1.0)\n\n    if args.multigpu:\n        model = nn.DataParallel(model)\n\n    if args.task == \"segmentation\":\n        callbacks = [\n            DiceCallback(),\n            EarlyStoppingCallback(patience=10, min_delta=0.001),\n            CriterionCallback(),\n        ]\n    elif args.task == \"classification\":\n        callbacks = [\n            AUCCallback(\n                class_names=[\"Fish\", \"Flower\", \"Gravel\", \"Sugar\"], num_classes=4\n            ),\n            EarlyStoppingCallback(patience=10, min_delta=0.001),\n            CriterionCallback(),\n        ]\n\n    if args.gradient_accumulation:\n        callbacks.append(\n            OptimizerCallback(accumulation_steps=args.gradient_accumulation)\n        )\n\n    checkpoint = utils.load_checkpoint(f\"{logdir}/checkpoints/best.pth\")\n    model.cuda()\n    utils.unpack_checkpoint(checkpoint, model=model)\n    #\n    #\n    runner = SupervisedRunner()\n    if args.train:\n        print(\"Training\")\n        runner.train(\n            model=model,\n            criterion=criterion,\n            optimizer=optimizer,\n            main_metric=\"dice\",\n            minimize_metric=False,\n            scheduler=scheduler,\n            loaders=loaders,\n            callbacks=callbacks,\n            logdir=logdir,\n            num_epochs=args.num_epochs,\n            verbose=True,\n        )\n\n        with open(f\"{logdir}/args.txt\", \"w\") as f:\n            for k, v in args.__dict__.items():\n                f.write(f\"{k}: {v}\" + \"\\n\")\n\n    torch.cuda.empty_cache()\n    gc.collect()\n\n    class_params = None\n\n    if args.optimize_postprocess:\n        print(\"POSTPROCESS\")\n        del loaders[\"train\"]\n        checkpoint = utils.load_checkpoint(f\"{logdir}/checkpoints/best.pth\")\n        model.cuda()\n        utils.unpack_checkpoint(checkpoint, model=model)\n        runner = SupervisedRunner(model=model)\n        class_params = get_optimal_postprocess(\n            loaders=loaders, runner=runner, logdir=logdir\n        )\n        with open(f\"{logdir}/class_params.json\", \"w\") as f:\n            json.dump(class_params, f)\n\n    if args.make_prediction:\n        print(\"MAKING PREDICTIONS\")\n        loaders[\"test\"] = test_loader\n        checkpoint = utils.load_checkpoint(f\"{logdir}/checkpoints/best.pth\")\n        # transforms = tta.Compose(\n        #     [\n        #         tta.HorizontalFlip(),\n        #         # tta.Rotate90(angles=[0, 180]),\n        #         # tta.Scale(scales=[1, 2, 4]),\n        #         #tta.Multiply(factors=[0.9, 1, 1.1]),\n        #     ]\n        # )\n        model.cuda()\n        utils.unpack_checkpoint(checkpoint, model=model)\n        # tta_model = tta.SegmentationTTAWrapper(model, transforms, merge_mode='mean')\n        # runner = SupervisedRunner(model=tta_model)\n\n        runner = SupervisedRunner(model=model)\n        if not class_params:\n            with open(f\"{logdir}/class_params.json\", \"r\") as f:\n                class_params = json.load(f)\n        print(\"prediction postprocess params\", class_params)\n        predict(\n            loaders=loaders,\n            runner=runner,\n            class_params=class_params,\n            path=args.path,\n            sub_name=sub_name,\n        )\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/train.sh",
    "content": "python train.py \n--encoder resnet50 \n--bs 8 \n--gradient_accumulation 4 \n--lr 1e-5\n--num_epochs 2\n--lr_e 10e-5 \n--separate_decoder True\n--optimize_postprocess False\n--train False\n--make_prediction True \n\n\n"
  },
  {
    "path": "DEEP LEARNING/segmentation/Understanding-Clouds-from-Satellite-Images-master/utils.py",
    "content": "import matplotlib.pyplot as plt\nimport cv2\nimport numpy as np\nfrom catalyst.dl.callbacks import InferCallback, CheckpointCallback\nimport pandas as pd\n\n\ndef sigmoid(x):\n    return 1 / (1 + np.exp(-x))\n\n\ndef visualize(image, mask, original_image=None, original_mask=None, fontsize: int = 14):\n    \"\"\"\n    Plot image and masks.\n    If two pairs of images and masks are passes, show both.\n\n    Args:\n        image: transformed image\n        mask: transformed mask\n        original_image:\n        original_mask:\n        fontsize:\n\n    Returns:\n\n    \"\"\"\n    class_dict = {0: \"Fish\", 1: \"Flower\", 2: \"Gravel\", 3: \"Sugar\"}\n\n    if original_image is None and original_mask is None:\n        f, ax = plt.subplots(1, 5, figsize=(24, 24))\n\n        ax[0].imshow(image)\n        for i in range(4):\n            ax[i + 1].imshow(mask[:, :, i])\n            ax[i + 1].set_title(f\"Mask {class_dict[i]}\", fontsize=fontsize)\n    else:\n        f, ax = plt.subplots(2, 5, figsize=(24, 12))\n\n        ax[0, 0].imshow(original_image)\n        ax[0, 0].set_title(\"Original image\", fontsize=fontsize)\n\n        for i in range(4):\n            ax[0, i + 1].imshow(original_mask[:, :, i])\n            ax[0, i + 1].set_title(f\"Original mask {class_dict[i]}\", fontsize=fontsize)\n\n        ax[1, 0].imshow(image)\n        ax[1, 0].set_title(\"Transformed image\", fontsize=fontsize)\n\n        for i in range(4):\n            ax[1, i + 1].imshow(mask[:, :, i])\n            ax[1, i + 1].set_title(\n                f\"Transformed mask {class_dict[i]}\", fontsize=fontsize\n            )\n\n\ndef visualize_with_raw(\n    image, mask, original_image=None, original_mask=None, raw_image=None, raw_mask=None\n):\n    \"\"\"\n    Similar to visualize function, but with post-processed image, mask.\n\n    Args:\n        image:\n        mask:\n        original_image:\n        original_mask:\n        raw_image:\n        raw_mask:\n\n    Returns:\n\n    \"\"\"\n    fontsize = 14\n    class_dict = {0: \"Fish\", 1: \"Flower\", 2: \"Gravel\", 3: \"Sugar\"}\n\n    f, ax = plt.subplots(3, 5, figsize=(24, 12))\n\n    ax[0, 0].imshow(original_image)\n    ax[0, 0].set_title(\"Original image\", fontsize=fontsize)\n\n    for i in range(4):\n        ax[0, i + 1].imshow(original_mask[:, :, i])\n        ax[0, i + 1].set_title(f\"Original mask {class_dict[i]}\", fontsize=fontsize)\n\n    ax[1, 0].imshow(raw_image)\n    ax[1, 0].set_title(\"Original image\", fontsize=fontsize)\n\n    for i in range(4):\n        ax[1, i + 1].imshow(raw_mask[:, :, i])\n        ax[1, i + 1].set_title(f\"Raw predicted mask {class_dict[i]}\", fontsize=fontsize)\n\n    ax[2, 0].imshow(image)\n    ax[2, 0].set_title(\"Transformed image\", fontsize=fontsize)\n\n    for i in range(4):\n        ax[2, i + 1].imshow(mask[:, :, i])\n        ax[2, i + 1].set_title(\n            f\"Predicted mask with processing {class_dict[i]}\", fontsize=fontsize\n        )\n\n\ndef plot_with_augmentation(image, mask, augment):\n    \"\"\"\n    Wrapper for `visualize` function.\n\n    Args:\n        image:\n        mask:\n        augment:\n\n    Returns:\n\n    \"\"\"\n    augmented = augment(image=image, mask=mask)\n    image_flipped = augmented[\"image\"]\n    mask_flipped = augmented[\"mask\"]\n    visualize(image_flipped, mask_flipped, original_image=image, original_mask=mask)\n\n\nfrom scipy.ndimage.morphology import binary_fill_holes\n\n\ndef post_process(\n    probability: np.array = None, threshold: float = 0.5, min_size: int = 10\n):\n    \"\"\"\n    Post processing of each predicted mask, components with lesser number of pixels\n    than `min_size` are ignored\n\n    Args:\n        probability: mask\n        threshold: threshold for processing\n        min_size: min_size for processing\n\n    Returns:\n\n    \"\"\"\n    # don't remember where I saw it\n    mask = cv2.threshold(probability, threshold, 1, cv2.THRESH_BINARY)[1]\n    num_component, component = cv2.connectedComponents(mask.astype(np.uint8))\n    predictions = np.zeros((350, 525), np.float32)\n    num = 0\n    for c in range(1, num_component):\n        p = component == c\n        if p.sum() > min_size:\n            predictions[p] = 1\n            num += 1\n    return (predictions), num\n\n\ndef dice(img1: np.array, img2: np.array) -> float:\n    \"\"\"\n    Calculate dice of two images\n    Args:\n        img1:\n        img2:\n\n    Returns:\n\n    \"\"\"\n    img1 = np.asarray(img1).astype(np.bool)\n    img2 = np.asarray(img2).astype(np.bool)\n\n    intersection = np.logical_and(img1, img2)\n\n    return 2.0 * intersection.sum() / (img1.sum() + img2.sum())\n\n\ndef get_optimal_postprocess(loaders=None, runner=None, logdir: str = \"\"):\n    \"\"\"\n    Calculate optimal thresholds for validation data.\n\n    Args:\n        loaders: loaders with necessary datasets\n        runner: runner\n        logdir: directory with model checkpoints\n\n    Returns:\n\n    \"\"\"\n    loaders[\"infer\"] = loaders[\"valid\"]\n\n    runner.infer(\n        model=runner.model,\n        loaders=loaders,\n        callbacks=[\n            CheckpointCallback(resume=f\"{logdir}/checkpoints/best.pth\"),\n            InferCallback(),\n        ],\n    )\n    valid_masks = []\n    probabilities = np.zeros((2220, 350, 525))\n    for i, (batch, output) in enumerate(\n        zip(loaders[\"infer\"].dataset, runner.callbacks[0].predictions[\"logits\"])\n    ):\n        image, mask = batch\n        for m in mask:\n            if m.shape != (350, 525):\n                m = cv2.resize(m, dsize=(525, 350), interpolation=cv2.INTER_LINEAR)\n            valid_masks.append(m)\n\n        for j, probability in enumerate(output):\n            if probability.shape != (350, 525):\n                probability = cv2.resize(\n                    probability, dsize=(525, 350), interpolation=cv2.INTER_LINEAR\n                )\n            probabilities[i * 4 + j, :, :] = probability\n\n    class_params = {}\n    for class_id in range(4):\n        print(class_id)\n        attempts = []\n        for t in range(0, 100, 10):\n            t /= 100\n            for ms in [\n                0,\n                100,\n                1000,\n                5000,\n                10000,\n                11000,\n                14000,\n                15000,\n                16000,\n                18000,\n                19000,\n                20000,\n                21000,\n                23000,\n                25000,\n                27000,\n                30000,\n                50000,\n            ]:\n                masks = []\n                for i in range(class_id, len(probabilities), 4):\n                    probability = probabilities[i]\n                    predict, num_predict = post_process(sigmoid(probability), t, ms)\n                    masks.append(predict)\n\n                d = []\n                for i, j in zip(masks, valid_masks[class_id::4]):\n                    if (i.sum() == 0) & (j.sum() == 0):\n                        d.append(1)\n                    else:\n                        d.append(dice(i, j))\n\n                attempts.append((t, ms, np.mean(d)))\n\n        attempts_df = pd.DataFrame(attempts, columns=[\"threshold\", \"size\", \"dice\"])\n\n        attempts_df = attempts_df.sort_values(\"dice\", ascending=False)\n        print(attempts_df.head())\n        best_threshold = attempts_df[\"threshold\"].values[0]\n        best_size = attempts_df[\"size\"].values[0]\n\n        class_params[class_id] = (best_threshold, int(best_size))\n\n    print(class_params)\n    return class_params\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "# Machine Learning and Deep Learning Scripts\n\n[![Made with Python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n![Insaf Ashrapov's GitHub stats](https://github-readme-stats.vercel.app/api?username=diyago&show_icons=true&theme=dark)\n\nCollection of useful Python scripts for Machine Learning and Deep Learning tasks, including Kaggle solutions, MOOC exercises, and practical implementations.\n\n## Table of Contents\n\n- [Classification](#classification)\n- [Regression](#regression)\n- [Statistics](#statistics)\n- [Clustering](#clustering)\n- [Time Series](#time-series)\n- [Deep Learning](#deep-learning)\n- [Natural Language Processing (NLP)](#natural-language-processing-nlp)\n- [Recommendations](#recommendations)\n- [Deployment](#deployment)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Classification\n\nMachine learning classification algorithms and solutions.\n\nLocation: [`classification/`](./classification)\n\n## Regression\n\nRegression models and Kaggle competition solutions.\n\nLocation: [`regression/`](./regression)\n\n## Statistics\n\nEssential tools for statistical analysis: comparing medians, means, and data distributions for statistical significance.\n\nLocation: [`statistics/`](./statistics)\n\n## Clustering\n\nUseful cases and implementations for clustering tasks.\n\nLocation: [`clustering/`](./clustering)\n\n## Time Series\n\nTime series analysis and forecasting implementations.\n\nLocation: [`time series regression/`](./time%20series%20regression)\n\n- **[Anomaly Detection](./time%20series%20regression/anomaly%20detection)** – Detection algorithms with [Medium article](https://medium.com/p/4c661f6f165f/)\n\n  ![Anomaly detection](./images/anomaly-detection.png)\n\n- **[Deep Learning Approach](./time%20series%20regression/DL%20aproach%20for%20timeseries)** – Neural network models for time series\n\n- **[ARIMA](./time%20series%20regression/ARIMA)** – Classical statistical methods\n\n## Deep Learning\n\nPyTorch, FastAI, and Keras implementations.\n\nLocation: [`DEEP LEARNING/`](./DEEP%20LEARNING)\n\n### Images\n\n- **Autoencoders & GANs**\n  - [Tabular GANs](./DEEP%20LEARNING/Autoencoders%20GANS/GAN-for-tabular-data)\n  - [Style Transfer](./DEEP%20LEARNING/Autoencoders%20GANS/Style%20transfer)\n\n- **Image Classification**\n  - [FastAI](./DEEP%20LEARNING/image%20classification/fastai)\n  - [Keras](./DEEP%20LEARNING/image%20classification/keras)\n  - [PyTorch](./DEEP%20LEARNING/image%20classification)\n\n  ![Image classification](./images/img_class.png)\n\n- **[Object Detection](./DEEP%20LEARNING/Object%20detection)**\n\n  ![Object detection](./images/object_detections.jpg)\n\n- **[Segmentation](./DEEP%20LEARNING/segmentation)**\n  - Kaggle solutions\n  - [Segmentation Pipeline](./DEEP%20LEARNING/segmentation/Segmentation%20pipeline) with [Medium article](https://towardsdatascience.com/road-detection-using-segmentation-models-and-albumentations-libraries-on-keras-d5434eaf73a8)\n\n  ![Road Detection](./images/road-detection)\n\n- **[PyTorch Tutorials](./DEEP%20LEARNING/Pytorch%20from%20scratch)** – From scratch implementations\n\n### Other DL Resources\n\n- [Kaggle Avito Demand Prediction Challenge](./DEEP%20LEARNING/Kaggle%20Avito%20Demand%20Prediction%20Challenge)\n- [Google Landmark Retrieval](./DEEP%20LEARNING/Google%20Landmark%20Retrieval%20Challenge.py)\n\n## Natural Language Processing (NLP)\n\nText processing and NLP models.\n\nLocation: [`DEEP LEARNING/NLP/`](./DEEP%20LEARNING/NLP)\n\n## Recommendations\n\nRecommendation systems and collaborative filtering.\n\nLocation: [`recommendations/`](./recommendations)\n\n- [ODS Course materials](./recommendations/ods_course/)\n\n## Deployment\n\nProduction deployment examples using Docker.\n\nLocation: [`deployment/`](./deployment)\n\n## Books & Articles\n\nCurated collection of learning resources.\n\nLocation: [`books, articles/`](./books%2C%20articles/)\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n## Contact\n\n- Telegram: [@ai_tablet](https://t.me/ai_tablet)\n- GitHub: [@diyago](https://github.com/diyago)\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](./LICENSE) file for details.\n"
  },
  {
    "path": "_config.yml",
    "content": "theme: jekyll-theme-cayman"
  },
  {
    "path": "classification/Kaggle Home Credit Default Risk/README.MD",
    "content": "## Solution to Home Credit Default Risk 2018 - silver 64th place\n\n\nLink: https://www.kaggle.com/c/home-credit-default-risk\n\nMany people struggle to get loans due to insufficient or non-existent credit histories. And, unfortunately, this population is often taken advantage of by untrustworthy lenders.\n\nHome Credit Group\n\nHome Credit strives to broaden financial inclusion for the unbanked population by providing a positive and safe borrowing experience. In order to make sure this underserved population has a positive loan experience, Home Credit makes use of a variety of alternative data--including telco and transactional information--to predict their clients' repayment abilities.\n\nWhile Home Credit is currently using various statistical and machine learning methods to make these predictions, they're challenging Kagglers to help them unlock the full potential of their data. Doing so will ensure that clients capable of repayment are not rejected and that loans are given with a principal, maturity, and repayment calendar that will empower their clients to be successful.\n \n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/README.MD",
    "content": "## Solution to Microsoft Malware Prediction Challenge\n\n\nLink: https://www.kaggle.com/c/microsoft-malware-prediction\n\nThe malware industry continues to be a well-organized, well-funded market dedicated to evading traditional security measures. Once a computer is infected by malware, criminals can hurt consumers and enterprises in many ways.\n\nWith more than one billion enterprise and consumer customers, Microsoft takes this problem very seriously and is deeply invested in improving security.\n\nAs one part of their overall strategy for doing so, Microsoft is challenging the data science community to develop techniques to predict if a machine will soon be hit with malware. As with their previous, Malware Challenge (2015), Microsoft is providing Kagglers with an unprecedented malware dataset to encourage open-source progress on effective techniques for predicting malware occurrences.\n\nCan you help protect more than one billion machines from damage BEFORE it happens?\n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/kaggle.py",
    "content": "import pandas as pd\nimport numpy as np\nimport os\nfrom sklearn.model_selection import KFold, StratifiedKFold\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.preprocessing import LabelEncoder, OneHotEncoder\nimport sklearn.metrics as metrics\nfrom models_zoo import BesXGboost, BesLightGBM, BesCatBoost\nfrom target_encoding import TargetEncoding\nimport gc\nimport time\nimport matplotlib as plt\nimport joblib\nimport seaborn as sns\nimport lightgbm as lgb\nfrom numba import jit\nfrom pathlib import Path\n\n# fast roc_auc computation: https://www.kaggle.com/c/microsoft-malware-prediction/discussion/76013\n@jit\ndef fast_auc(y_true, y_prob):\n    y_true = np.asarray(y_true)\n    y_true = y_true[np.argsort(y_prob)]\n    nfalse = 0\n    auc = 0\n    n = len(y_true)\n    for i in range(n):\n        y_i = y_true[i]\n        nfalse += 1 - y_i\n        auc += y_i * nfalse\n    auc /= nfalse * (n - nfalse)\n    return auc\n\n\ndef eval_auc(preds, dtrain):\n    labels = dtrain.get_label()\n    return \"auc\", fast_auc(labels, preds), True\n\n\nclass Kaggle:\n    \"\"\"\n    Class skeleton for classification\n\n        * Data Preparation\n        * Feature Engineering\n        * Models Stacking\n    \"\"\"\n\n    def __init__(self, data_path, metric=\"auc\", mode=0):\n        self.data_path = data_path\n        self.mode = mode\n        self.df_train = None\n        self.df_test = None\n        self.target_colname = None\n        self.id_colname = None\n        self.folds = None\n        self.sep = None\n        self.metric = metric\n        self.compute_metric, self.maximize = self.get_metric(metric)\n        # TODO store big list of params on separate file\n        self.dtypes = {\n            \"MachineIdentifier\": \"category\",\n            \"ProductName\": \"category\",\n            \"EngineVersion\": \"category\",\n            \"AppVersion\": \"category\",\n            \"AvSigVersion\": \"category\",\n            \"IsBeta\": \"int8\",\n            \"RtpStateBitfield\": \"float16\",\n            \"IsSxsPassiveMode\": \"int8\",\n            \"DefaultBrowsersIdentifier\": \"float16\",\n            \"AVProductStatesIdentifier\": \"float32\",\n            \"AVProductsInstalled\": \"float16\",\n            \"AVProductsEnabled\": \"float16\",\n            \"HasTpm\": \"int8\",\n            \"CountryIdentifier\": \"int16\",\n            \"CityIdentifier\": \"float32\",\n            \"OrganizationIdentifier\": \"float16\",\n            \"GeoNameIdentifier\": \"float16\",\n            \"LocaleEnglishNameIdentifier\": \"int8\",\n            \"Platform\": \"category\",\n            \"Processor\": \"category\",\n            \"OsVer\": \"category\",\n            \"OsBuild\": \"int16\",\n            \"OsSuite\": \"int16\",\n            \"OsPlatformSubRelease\": \"category\",\n            \"OsBuildLab\": \"category\",\n            \"SkuEdition\": \"category\",\n            \"IsProtected\": \"float16\",\n            \"AutoSampleOptIn\": \"int8\",\n            \"PuaMode\": \"category\",\n            \"SMode\": \"float16\",\n            \"IeVerIdentifier\": \"float16\",\n            \"SmartScreen\": \"category\",\n            \"Firewall\": \"float16\",\n            \"UacLuaenable\": \"float32\",\n            \"Census_MDC2FormFactor\": \"category\",\n            \"Census_DeviceFamily\": \"category\",\n            \"Census_OEMNameIdentifier\": \"float16\",\n            \"Census_OEMModelIdentifier\": \"float32\",\n            \"Census_ProcessorCoreCount\": \"float16\",\n            \"Census_ProcessorManufacturerIdentifier\": \"float16\",\n            \"Census_ProcessorModelIdentifier\": \"float16\",\n            \"Census_ProcessorClass\": \"category\",\n            \"Census_PrimaryDiskTotalCapacity\": \"float32\",\n            \"Census_PrimaryDiskTypeName\": \"category\",\n            \"Census_SystemVolumeTotalCapacity\": \"float32\",\n            \"Census_HasOpticalDiskDrive\": \"int8\",\n            \"Census_TotalPhysicalRAM\": \"float32\",\n            \"Census_ChassisTypeName\": \"category\",\n            \"Census_InternalPrimaryDiagonalDisplaySizeInInches\": \"float16\",\n            \"Census_InternalPrimaryDisplayResolutionHorizontal\": \"float16\",\n            \"Census_InternalPrimaryDisplayResolutionVertical\": \"float16\",\n            \"Census_PowerPlatformRoleName\": \"category\",\n            \"Census_InternalBatteryType\": \"category\",\n            \"Census_InternalBatteryNumberOfCharges\": \"float32\",\n            \"Census_OSVersion\": \"category\",\n            \"Census_OSArchitecture\": \"category\",\n            \"Census_OSBranch\": \"category\",\n            \"Census_OSBuildNumber\": \"int16\",\n            \"Census_OSBuildRevision\": \"int32\",\n            \"Census_OSEdition\": \"category\",\n            \"Census_OSSkuName\": \"category\",\n            \"Census_OSInstallTypeName\": \"category\",\n            \"Census_OSInstallLanguageIdentifier\": \"float16\",\n            \"Census_OSUILocaleIdentifier\": \"int16\",\n            \"Census_OSWUAutoUpdateOptionsName\": \"category\",\n            \"Census_IsPortableOperatingSystem\": \"int8\",\n            \"Census_GenuineStateName\": \"category\",\n            \"Census_ActivationChannel\": \"category\",\n            \"Census_IsFlightingInternal\": \"float16\",\n            \"Census_IsFlightsDisabled\": \"float16\",\n            \"Census_FlightRing\": \"category\",\n            \"Census_ThresholdOptIn\": \"float16\",\n            \"Census_FirmwareManufacturerIdentifier\": \"float16\",\n            \"Census_FirmwareVersionIdentifier\": \"float32\",\n            \"Census_IsSecureBootEnabled\": \"int8\",\n            \"Census_IsWIMBootEnabled\": \"float16\",\n            \"Census_IsVirtualDevice\": \"float16\",\n            \"Census_IsTouchEnabled\": \"int8\",\n            \"Census_IsPenCapable\": \"int8\",\n            \"Census_IsAlwaysOnAlwaysConnectedCapable\": \"float16\",\n            \"Wdft_IsGamer\": \"float16\",\n            \"Wdft_RegionIdentifier\": \"float16\",\n            \"HasDetections\": \"int8\",\n        }\n\n    @staticmethod\n    def get_metric(metric):\n        \"\"\"Returns metric evaluation\"\"\"\n        if metric == \"auc\":\n            return metrics.roc_auc_score, True\n        if metric == \"mae\":\n            return metrics.mean_absolute_error, False\n\n    def read_train_data(\n        self,\n        train_name=\"train.csv\",\n        sep=\",\",\n        target_colname=None,\n        id_colname=None,\n        num_rows=None,\n    ):\n        self.sep = sep\n        self.df_train = pd.read_csv(\n            os.path.join(self.data_path, train_name),\n            sep=self.sep,\n            dtype=self.dtypes,\n            nrows=num_rows,\n        )\n        if 5244810 in self.df_train.index:\n            self.df_train.loc[5244810, \"AvSigVersion\"] = \"1.273.1144.0\"\n            self.df_train[\"AvSigVersion\"].cat.remove_categories(\n                \"1.2&#x17;3.1144.0\", inplace=True\n            )\n        self.df_train[\"AvSigVersion_1\"] = self.df_train[\"AvSigVersion\"].map(\n            lambda x: np.int(x.split(\".\")[1])\n        )\n        # datedictAS = np.load(os.path.join(self.data_path, 'AvSigVersionTimestamps.npy'))[()]\n\n        # df_train['DateAS'] = df_train['AvSigVersion'].map(datedictAS)\n\n        self.df_train = self.df_train[self.df_train[\"AvSigVersion_1\"] >= 250]\n\n        if target_colname:\n            self.target_colname = target_colname\n        if id_colname:\n            self.id_colname = id_colname\n\n    def read_test_data(self, test_name=\"test.csv\"):\n        self.df_test = pd.read_csv(\n            os.path.join(self.data_path, test_name), sep=self.sep, dtype=self.dtypes\n        )\n\n    @staticmethod\n    def reduce_mem_usage(data, verbose=True):\n        numerics = [\"int8\", \"int16\", \"int32\", \"int64\", \"float16\", \"float32\", \"float64\"]\n        start_mem = data.memory_usage().sum() / 1024 ** 2\n        if verbose:\n            print(\"Memory usage of dataframe: {:.2f} MB\".format(start_mem))\n\n        for col in data.columns:\n            col_type = data[col].dtype\n\n            if col_type in numerics:\n                c_min = data[col].min()\n                c_max = data[col].max()\n                if str(col_type)[:3] == \"int\":\n                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                        data[col] = data[col].astype(np.int8)\n                    elif (\n                        c_min > np.iinfo(np.int16).min\n                        and c_max < np.iinfo(np.int16).max\n                    ):\n                        data[col] = data[col].astype(np.int16)\n                    elif (\n                        c_min > np.iinfo(np.int32).min\n                        and c_max < np.iinfo(np.int32).max\n                    ):\n                        data[col] = data[col].astype(np.int32)\n                    elif (\n                        c_min > np.iinfo(np.int64).min\n                        and c_max < np.iinfo(np.int64).max\n                    ):\n                        data[col] = data[col].astype(np.int64)\n                else:\n                    if (\n                        c_min > np.finfo(np.float16).min\n                        and c_max < np.finfo(np.float16).max\n                    ):\n                        data[col] = data[col].astype(np.float16)\n                    elif (\n                        c_min > np.finfo(np.float32).min\n                        and c_max < np.finfo(np.float32).max\n                    ):\n                        data[col] = data[col].astype(np.float32)\n                    else:\n                        data[col] = data[col].astype(np.float64)\n\n        end_mem = data.memory_usage().sum() / 1024 ** 2\n        if verbose:\n            print(\"Memory usage after optimization: {:.2f} MB\".format(end_mem))\n            print(\n                \"Decreased by {:.1f}%\".format(100 * (start_mem - end_mem) / start_mem)\n            )\n\n        return data\n\n    def create_validation_split(self, n_folds=5, stratified=False):\n        self.folds = n_folds\n        if Path(\"cv_splits/train_cv_fold_0\").is_file() is False:\n            if stratified:\n                skf = StratifiedKFold(n_splits=n_folds, random_state=42, shuffle=True)\n                idx = 0\n                for train_index, test_index in skf.split(\n                    self.df_train[[self.id_colname]],\n                    self.df_train[[self.target_colname]],\n                ):\n                    self.df_train[[self.id_colname]].loc[train_index, :].to_csv(\n                        \"cv_splits/train_cv_fold_{}\".format(idx), index=False\n                    )\n                    self.df_train[[self.id_colname]].loc[test_index, :].to_csv(\n                        \"cv_splits/test_cv_fold_{}\".format(idx), index=False\n                    )\n                    idx += 1\n            else:\n                skf = KFold(n_splits=n_folds, random_state=42, shuffle=True)\n                idx = 0\n                for train_index, test_index in skf.split(\n                    self.df_train[[self.id_colname]]\n                ):\n                    self.df_train[[self.id_colname]].loc[train_index, :].to_csv(\n                        \"cv_splits/train_cv_fold_{}\".format(idx), index=False\n                    )\n                    self.df_train[[self.id_colname]].loc[test_index, :].to_csv(\n                        \"cv_splits/test_cv_fold_{}\".format(idx), index=False\n                    )\n                    idx += 1\n            gc.collect()\n\n    def general_feature_engineering(self, train_only=True):\n        \"\"\"Feature engineering, which does NOT depend on train/test split\"\"\"\n        if train_only:\n            df = self.df_train\n        else:\n            print(\"Total Feature Eng\", time.ctime())\n            # df = pd.concat([self.df_train, self.df_test])\n        if self.mode == 0:\n\n            def basic_fe(df):\n                df[\"EngineVersion_2\"] = (\n                    df[\"EngineVersion\"]\n                    .apply(lambda x: x.split(\".\")[2])\n                    .astype(\"category\")\n                )\n                df[\"EngineVersion_3\"] = (\n                    df[\"EngineVersion\"]\n                    .apply(lambda x: x.split(\".\")[3])\n                    .astype(\"category\")\n                )\n\n                df[\"AppVersion_1\"] = (\n                    df[\"AppVersion\"].apply(lambda x: x.split(\".\")[1]).astype(\"category\")\n                )\n                df[\"AppVersion_2\"] = (\n                    df[\"AppVersion\"].apply(lambda x: x.split(\".\")[2]).astype(\"category\")\n                )\n                df[\"AppVersion_3\"] = (\n                    df[\"AppVersion\"].apply(lambda x: x.split(\".\")[3]).astype(\"category\")\n                )\n\n                df[\"AvSigVersion_0\"] = (\n                    df[\"AvSigVersion\"]\n                    .apply(lambda x: x.split(\".\")[0])\n                    .astype(\"category\")\n                )\n                df[\"AvSigVersion_1\"] = (\n                    df[\"AvSigVersion\"]\n                    .apply(lambda x: x.split(\".\")[1])\n                    .astype(\"category\")\n                )\n                df[\"AvSigVersion_2\"] = (\n                    df[\"AvSigVersion\"]\n                    .apply(lambda x: x.split(\".\")[2])\n                    .astype(\"category\")\n                )\n\n                df[\"OsBuildLab_0\"] = (\n                    df[\"OsBuildLab\"].apply(lambda x: x.split(\".\")[0]).astype(\"category\")\n                )\n                df[\"OsBuildLab_1\"] = (\n                    df[\"OsBuildLab\"].apply(lambda x: x.split(\".\")[1]).astype(\"category\")\n                )\n                df[\"OsBuildLab_2\"] = (\n                    df[\"OsBuildLab\"].apply(lambda x: x.split(\".\")[2]).astype(\"category\")\n                )\n                df[\"OsBuildLab_3\"] = (\n                    df[\"OsBuildLab\"].apply(lambda x: x.split(\".\")[3]).astype(\"category\")\n                )\n\n                df[\"Census_OSVersion_0\"] = (\n                    df[\"Census_OSVersion\"]\n                    .apply(lambda x: x.split(\".\")[0])\n                    .astype(\"category\")\n                )\n                df[\"Census_OSVersion_1\"] = (\n                    df[\"Census_OSVersion\"]\n                    .apply(lambda x: x.split(\".\")[1])\n                    .astype(\"category\")\n                )\n                df[\"Census_OSVersion_2\"] = (\n                    df[\"Census_OSVersion\"]\n                    .apply(lambda x: x.split(\".\")[2])\n                    .astype(\"category\")\n                )\n                df[\"Census_OSVersion_3\"] = (\n                    df[\"Census_OSVersion\"]\n                    .apply(lambda x: x.split(\".\")[3])\n                    .astype(\"category\")\n                )\n\n                df[\"primary_drive_c_ratio\"] = (\n                    df[\"Census_SystemVolumeTotalCapacity\"]\n                    / df[\"Census_PrimaryDiskTotalCapacity\"]\n                )\n                df[\"non_primary_drive_MB\"] = (\n                    df[\"Census_PrimaryDiskTotalCapacity\"]\n                    - df[\"Census_SystemVolumeTotalCapacity\"]\n                )\n\n                df[\"aspect_ratio\"] = (\n                    df[\"Census_InternalPrimaryDisplayResolutionVertical\"]\n                    / df[\"Census_InternalPrimaryDisplayResolutionHorizontal\"]\n                )\n\n                df[\"monitor_dims\"] = (\n                    df[\"Census_InternalPrimaryDisplayResolutionHorizontal\"].astype(str)\n                    + \"*\"\n                    + df[\"Census_InternalPrimaryDisplayResolutionVertical\"].astype(\n                        \"str\"\n                    )\n                )\n                df[\"monitor_dims\"] = df[\"monitor_dims\"].astype(\"category\")\n\n                df[\"dpi\"] = (\n                    (\n                        df[\"Census_InternalPrimaryDisplayResolutionHorizontal\"] ** 2\n                        + df[\"Census_InternalPrimaryDisplayResolutionVertical\"] ** 2\n                    )\n                    ** 0.5\n                ) / (df[\"Census_InternalPrimaryDiagonalDisplaySizeInInches\"])\n\n                df[\"dpi_square\"] = df[\"dpi\"] ** 2\n\n                df[\"MegaPixels\"] = (\n                    df[\"Census_InternalPrimaryDisplayResolutionHorizontal\"]\n                    * df[\"Census_InternalPrimaryDisplayResolutionVertical\"]\n                ) / 1e6\n\n                df[\"Screen_Area\"] = (\n                    df[\"aspect_ratio\"]\n                    * (df[\"Census_InternalPrimaryDiagonalDisplaySizeInInches\"] ** 2)\n                ) / (df[\"aspect_ratio\"] ** 2 + 1)\n\n                df[\"ram_per_processor\"] = (\n                    df[\"Census_TotalPhysicalRAM\"] / df[\"Census_ProcessorCoreCount\"]\n                )\n\n                df[\"new_num_0\"] = (\n                    df[\"Census_InternalPrimaryDiagonalDisplaySizeInInches\"]\n                    / df[\"Census_ProcessorCoreCount\"]\n                )\n\n                df[\"new_num_1\"] = (\n                    df[\"Census_ProcessorCoreCount\"]\n                    * df[\"Census_InternalPrimaryDiagonalDisplaySizeInInches\"]\n                )\n\n                df[\"Census_IsFlightingInternal\"] = df[\n                    \"Census_IsFlightingInternal\"\n                ].fillna(1)\n                df[\"Census_ThresholdOptIn\"] = df[\"Census_ThresholdOptIn\"].fillna(1)\n                df[\"Census_IsWIMBootEnabled\"] = df[\"Census_IsWIMBootEnabled\"].fillna(1)\n                df[\"Wdft_IsGamer\"] = df[\"Wdft_IsGamer\"].fillna(0)\n\n                df.SmartScreen = df.SmartScreen.str.lower()\n                df.SmartScreen.replace(\n                    {\n                        \"promt\": \"prompt\",\n                        \"promprt\": \"prompt\",\n                        \"00000000\": \"0\",\n                        \"enabled\": \"on\",\n                        \"of\": \"off\",\n                        \"deny\": \"0\",  # just one\n                        \"requiredadmin\": \"requireadmin\",\n                    },\n                    inplace=True,\n                )\n\n                df.SmartScreen = df.SmartScreen.astype(\"category\")\n\n                def group_battery(x):\n                    x = x.lower()\n                    if \"li\" in x:\n                        return 1\n                    else:\n                        return 0\n\n                df[\"isLithium_InternalBatteryType\"] = df[\n                    \"Census_InternalBatteryType\"\n                ].apply(group_battery)\n\n                add_cat_feats = [\n                    \"Census_OSBuildRevision\",\n                    \"OsBuildLab\",\n                    \"SmartScreen\",\n                    \"AVProductsInstalled\",\n                ]\n                for col1 in add_cat_feats:\n                    for col2 in add_cat_feats:\n                        if col1 != col2:\n                            df[col1 + \"__\" + col2] = df[col1].astype(str) + df[\n                                col2\n                            ].astype(str)\n                            df[col1 + \"__\" + col2] = df[col1 + \"__\" + col2].astype(\n                                \"category\"\n                            )\n\n                # 0 feature importance - TODO: further feature selection\n                df = df.drop(\n                    [\n                        \"Census_PrimaryDiskTypeName\",\n                        #'GeoNameIdentifier',\n                        \"OsBuildLab_0\",\n                        #'CityIdentifier',\n                        \"OrganizationIdentifier\",\n                        \"AvSigVersion_0\",\n                        \"LocaleEnglishNameIdentifier\",\n                        \"OsBuildLab_2\",\n                        \"Platform\",\n                        \"EngineVersion_3\",\n                        \"OsVer\",\n                        \"OsBuild\",\n                        #'OsSuite',\n                        #'CountryIdentifier',\n                        \"Census_OSVersion_0\",\n                        \"OsBuildLab_3\",\n                        \"Census_IsTouchEnabled\",\n                        \"Census_OSVersion_1\",\n                        \"Census_OSVersion_2\",\n                        \"HasTpm\",\n                        \"DefaultBrowsersIdentifier\",\n                        #'aspect_ratio',\n                        \"IsSxsPassiveMode\",\n                        \"dpi\",\n                        \"dpi_square\",\n                        \"MegaPixels\",\n                        \"IsBeta\",\n                        \"ram_per_processor\",\n                        \"new_num_0\",\n                        \"Census_IsPenCapable\",\n                        \"OsPlatformSubRelease\",\n                        #'Census_SystemVolumeTotalCapacity',\n                        \"UacLuaenable\",\n                        \"Census_HasOpticalDiskDrive\",\n                        \"Census_ProcessorClass\",\n                        \"Census_ProcessorManufacturerIdentifier\",\n                        \"Census_InternalPrimaryDisplayResolutionHorizontal\",\n                        \"Census_InternalPrimaryDisplayResolutionVertical\",\n                        \"Census_ProcessorCoreCount\",\n                        \"Census_InternalBatteryType\",\n                        #'Census_InternalBatteryNumberOfCharges',\n                        #'Census_OEMModelIdentifier',\n                        \"Census_OSBranch\",\n                        \"Census_OSBuildNumber\",\n                        \"Census_OSBuildRevision\",\n                        \"Census_DeviceFamily\",\n                        \"Firewall\",\n                        \"Census_IsWIMBootEnabled\",\n                        #'IeVerIdentifier',\n                        \"PuaMode\",\n                        \"Census_OSWUAutoUpdateOptionsName\",\n                        \"Census_IsPortableOperatingSystem\",\n                        \"Census_GenuineStateName\",\n                        \"AutoSampleOptIn\",\n                        \"Census_IsFlightingInternal\",\n                        \"Census_IsFlightsDisabled\",\n                        \"Census_FlightRing\",\n                        \"Census_ThresholdOptIn\",\n                        \"SkuEdition\",\n                        #'Census_FirmwareVersionIdentifier',\n                        \"Census_IsSecureBootEnabled\",\n                        \"SmartScreen__OsBuildLab\",\n                        \"AVProductsInstalled__Census_OSBuildRevision\",\n                        \"AVProductsInstalled__SmartScreen\",\n                        \"SmartScreen__Census_OSBuildRevision\",\n                        \"AVProductsInstalled__OsBuildLab\",\n                        \"ProductName\",\n                    ],\n                    axis=1,\n                )\n\n                return df\n\n            self.df_train, self.df_test = (\n                basic_fe(self.df_train),\n                basic_fe(self.df_test),\n            )\n            gc.collect()\n\n            print(\"making bins\", time.ctime())\n            \"\"\"\n            #  making bins https://www.kaggle.com/guoday/nffm-baseline-0-690-on-lb\n            def make_bucket(data,num=10):\n                data.sort()\n                bins=[]\n                for i in range(num):\n                    bins.append(data[int(len(data)*(i+1)//num)-1])\n                return bins\n            float_features=['Census_SystemVolumeTotalCapacity','Census_PrimaryDiskTotalCapacity']\n            for f in float_features:\n                self.df_train[f]=self.df_train[f].fillna(1e10)\n                self.df_test[f]=self.df_test[f].fillna(1e10)\n                data=list(self.df_train[f])+list(self.df_test[f])\n                bins=make_bucket(data,num=50)\n                self.df_train[f]=np.digitize(self.df_train[f],bins=bins)\n                self.df_test[f]=np.digitize(self.df_test[f],bins=bins)\n            del bins\n            gc.collect()\n\n            print('deleteting skewed vals',  time.ctime())\n            for usecol in self.df_train.columns:\n                if usecol in ['HasDetections', 'MachineIdentifier']:\n                    continue\n                self.df_train[usecol] = self.df_train[usecol].astype('str')\n                self.df_test[usecol] = self.df_test[usecol].astype('str')\n                \n                #Fit LabelEncoder\n                le = LabelEncoder().fit(\n                        np.unique(self.df_train[usecol].unique().tolist()+\n                                self.df_test[usecol].unique().tolist()))\n\n                #At the end 0 will be used for dropped values\n                self.df_train[usecol] = le.transform(self.df_train[usecol])+1\n                self.df_test[usecol]  = le.transform(self.df_test[usecol])+1\n\n                agg_tr = (self.df_train\n                        .groupby([usecol])\n                        .aggregate({'MachineIdentifier':'count'})\n                        .reset_index()\n                        .rename({'MachineIdentifier':'Train'}, axis=1))\n                agg_te = (self.df_test\n                        .groupby([usecol])\n                        .aggregate({'MachineIdentifier':'count'})\n                        .reset_index()\n                        .rename({'MachineIdentifier':'Test'}, axis=1))\n\n                agg = pd.merge(agg_tr, agg_te, on=usecol, how='outer').replace(np.nan, 0)\n                #Select values with more than 1000 observations\n                agg = agg[(agg['Train'] > 1000)].reset_index(drop=True)\n                agg['Total'] = agg['Train'] + agg['Test']\n                #Drop unbalanced values\n                agg = agg[(agg['Train'] / agg['Total'] > 0.2) & (agg['Train'] / agg['Total'] < 0.8)]\n                agg[usecol+'Copy'] = agg[usecol]\n\n                self.df_train[usecol] = (pd.merge(self.df_train[[usecol]], \n                                        agg[[usecol, usecol+'Copy']], \n                                        on=usecol, how='left')[usecol+'Copy']\n                                .replace(np.nan, 0).astype('int').astype('category'))\n\n                self.df_test[usecol]  = (pd.merge(self.df_test[[usecol]], \n                                        agg[[usecol, usecol+'Copy']], \n                                        on=usecol, how='left')[usecol+'Copy']\n                                .replace(np.nan, 0).astype('int').astype('category'))\n\n                del le, agg_tr, agg_te, agg, usecol\n                gc.collect()\n            \n            ## apply one hot encoding\n            print('one hot encoding',  time.ctime())    \n            cols_to_ohe = list(self.df_train.columns)\n            cols_to_ohe.remove('HasDetections');\n            cols_to_ohe.remove('MachineIdentifier');\n            ohe = OneHotEncoder(categories='auto', sparse=False, dtype='uint8').fit(self.df_train[cols_to_ohe])\n            self.df_train[cols_to_ohe] = ohe.transform(self.df_train[cols_to_ohe] )\n            self.df_test [cols_to_ohe]  = ohe.transform(self.df_test[cols_to_ohe])\n            \"\"\"\n            gc.collect()\n\n        elif self.mode == 1:\n            pass\n        else:\n            raise ValueError(\"There is No Such Feature Engineering Mode\")\n\n    def _categorical_preprocess(self, df, cat_feature, how=\"ohe\"):\n        \"\"\"Categorical variables preprocess\"\"\"\n        assert how in [\"ohe_encoder\", \"label_encoder\", \"target_encoder\"]\n\n        if how == \"ohe_encoder\":\n            df.drop(cat_feature, 1, inplace=True)\n            df = df.join(pd.get_dummies(df[cat_feature], prefix=cat_feature))\n\n            # from sklearn.preprocessing import OneHotEncoder\n            # ohe = OneHotEncoder(sparse=False)\n            # y_ohe = ohe.fit_transform(y.values.reshape(-1, 1))\n        elif how == \"label_encoder\":\n            le = LabelEncoder()\n            df[cat_feature] = le.fit_transform(df[cat_feature])\n        elif how == \"target_encoder\":\n            pass\n        else:\n            raise ValueError(\"There is no such categorical preprocessing\")\n\n        return df\n\n    def fold_feature_engineering(self, train, test, total_test):\n        \"\"\"Feature engineering, which DOES depend on train/test split\"\"\"\n        if self.mode == 0:\n\n            print(\"Target en coding\")\n            to_encode = [\n                \"AppVersion_1\",\n                \"AppVersion_2\",\n                \"AppVersion_3\",\n                \"AppVersion\",\n                \"SMode\",\n                \"Census_OSVersion\",\n                \"Census_OSVersion_3\",\n                \"OsBuildLab\",\n                \"EngineVersion\",\n                \"EngineVersion_2\",\n                \"EngineVersion_3\",\n                \"GeoNameIdentifier\",\n                \"OsSuite\",\n                \"AvSigVersion\",\n                \"OsPlatformSubRelease\",\n                \"OsPlatformSubRelease\",\n                \"SkuEdition\",\n                \"IeVerIdentifier\",\n                \"AVProductStatesIdentifier\",\n                \"CityIdentifier\",\n                \"CountryIdentifier\",\n                \"Census_OEMNameIdentifier\",\n                \"Census_OEMModelIdentifier\",\n                \"Census_ProcessorModelIdentifier\",\n                \"Census_InternalBatteryNumberOfCharges\",\n                \"Census_FirmwareVersionIdentifier\",\n                \"AvSigVersion_2\",\n                \"monitor_dims\",\n                \"Census_OSBuildRevision_OsBuildLab\",\n                \"Census_OSBuildRevision__SmartScreen\",\n                \"Census_OSBuildRevision__AVProductsInstalled\",\n                \"OsBuildLab__Census_OSBuildRevision\",\n                \"OsBuildLab__SmartScreen\",\n                \"OsBuildLab__AVProductsInstalled\",\n                \"SmartScreen__Census_OSBuildRevision\",\n                \"SmartScreen__OsBuildLab\",\n                \"AVProductsInstalled__Census_OSBuildRevision\",\n                \"AVProductsInstalled__OsBuildLab\",\n            ]\n            for encoding_variable in to_encode:\n                if encoding_variable in train.columns:\n                    print(encoding_variable, end=\"; \")\n                    te = TargetEncoding(10)\n                    train, test, total_test = te.fit(\n                        train, test, total_test, encoding_variable, self.target_colname\n                    )\n                else:\n                    print(\"skipped\", encoding_variable, end=\"; \")\n                gc.collect()\n            print(\"Finished encoding\")\n\n            train = train[\n                [\n                    col\n                    for col in train.columns\n                    if col not in [self.target_colname, self.id_colname]\n                ]\n            ]\n            test = test[\n                [\n                    col\n                    for col in test.columns\n                    if col not in [self.target_colname, self.id_colname]\n                ]\n            ]\n            total_test = total_test[\n                [\n                    col\n                    for col in test.columns\n                    if col not in [self.target_colname, self.id_colname]\n                ]\n            ]\n\n            # test       =       test.astype(train.dtypes.to_dict())\n            # total_test = total_test.astype(train.dtypes.to_dict())\n\n        elif self.mode == 1:\n            pass\n        else:\n            raise ValueError(\"There is No Such Feature Engineering Mode\")\n        return train, test, total_test\n\n    def get_predictions(self, model_name, params, X_train, y_train, X_test, y_test):\n        \"\"\"Function to return predictions given data and model name\"\"\"\n        cat_cols = [\n            col\n            for col in X_train.columns\n            if col\n            not in [\n                \"MachineIdentifier\",\n                \"Census_SystemVolumeTotalCapacity\",\n                \"HasDetections\",\n            ]\n            and str(X_train[col].dtype) == \"category\"\n        ]\n\n        if model_name == \"xgboost\":\n            model = BesXGboost(\n                params=params, metric=self.metric, maximize=self.maximize\n            )\n            model.fit(X_train, y_train)\n            pred = model.predict(X_test)\n\n            # feat_imp = xgb.feature_importance()\n            # print(feat_imp.head())\n\n        elif model_name == \"lightgbm\":\n\n            train_data = lgb.Dataset(\n                X_train, label=y_train, categorical_feature=cat_cols\n            )\n            valid_data = lgb.Dataset(X_test, label=y_test, categorical_feature=cat_cols)\n\n            model = lgb.train(\n                params,\n                train_data,\n                valid_sets=[train_data, valid_data],\n                verbose_eval=100,\n                feval=eval_auc,\n            )\n\n            del train_data, valid_data\n            gc.collect()\n            pred = model.predict(X_test, num_iteration=model.best_iteration)\n        elif model_name == \"catboost\":\n            model = BesCatBoost(\n                params=params, metric=self.metric.upper(), maximize=self.maximize\n            )\n            model.fit(X_train, y_train)\n            pred = model.predict(X_test)\n\n        elif model_name == \"logistic_regression\":\n            model = LogisticRegression()\n            model.fit(X_train, y_train)\n            pred = model.predict_proba(X_test)[:, 1]\n\n        else:\n            raise ValueError(\"There is No Such Model\")\n\n        return model, pred\n\n    def plot_feature_importance(self, feature_importance):\n        feature_importance[\"importance\"] /= self.folds\n        cols = (\n            feature_importance[[\"feature\", \"importance\"]]\n            .groupby(\"feature\")\n            .mean()\n            .sort_values(by=\"importance\", ascending=False)[:10]\n            .index\n        )\n\n        best_features = feature_importance.loc[feature_importance.feature.isin(cols)]\n\n        # plt.figure(figsize=(16, 12))\n        sns.barplot(\n            x=\"importance\",\n            y=\"feature\",\n            data=best_features.sort_values(by=\"importance\", ascending=False),\n        )\n        # plt.title('LGB Features (avg over folds)')\n\n    def run_single_model_validation_test_pred(\n        self,\n        model_name=\"lightgbm\",\n        params=None,\n        oof_preds_path=\"\",\n        is_make_test_preds=True,\n        averaging=\"usual\",\n        is_plot_feature_importance=False,\n    ):\n        if oof_preds_path != \"\":\n            oof_preds = pd.DataFrame()\n\n        cv_metrics = []\n        feature_importance = pd.DataFrame()\n        prediction = np.zeros(len(self.df_test))\n        test_preds = []\n\n        for fold in range(self.folds):\n            print(\n                \"************************** FOLD {} **************************\".format(\n                    fold + 1\n                ),\n                \"\\n\\t\",\n                time.ctime(),\n            )\n            gc.collect()\n            ids_train = pd.read_csv(\"cv_splits/train_cv_fold_{}\".format(fold))\n            ids_test = pd.read_csv(\"cv_splits/test_cv_fold_{}\".format(fold))\n\n            df_cv_train, df_cv_test = (\n                self.df_train.merge(ids_train),\n                self.df_train.merge(ids_test),\n            )\n            y_train, y_test = (\n                df_cv_train[self.target_colname],\n                df_cv_test[self.target_colname],\n            )\n\n            df_cv_train, df_cv_test, df_test = self.fold_feature_engineering(\n                df_cv_train, df_cv_test, self.df_test\n            )\n            model, pred = self.get_predictions(\n                model_name, params, df_cv_train, y_train, df_cv_test, y_test\n            )\n\n            if oof_preds_path != \"\":\n                ids_test[os.path.split(oof_preds_path)[-1].split(\".\")[0]] = pred\n                ids_test[self.target_colname] = y_test\n                oof_preds = pd.concat([oof_preds, ids_test])\n\n            met = self.compute_metric(y_test, pred)\n            cv_metrics.append(met)\n            print(met)\n            if is_make_test_preds:\n                y_pred = model.predict(df_test, num_iteration=model.best_iteration)\n                test_preds.append(y_pred)\n\n                del df_test\n                gc.collect()\n                if averaging == \"usual\":\n                    prediction += y_pred\n                elif averaging == \"rank\":\n                    prediction += (\n                        pd.Series(y_pred).rank().values\n                    )  # prediction /= prediction.max()\n                # else:   prediction += (y_pred + pd.Series(y_pred).rank().values)/2 #\n\n        if model_name == \"lightgbm\":\n            # feature importance\n            fold_importance = pd.DataFrame()\n            fold_importance[\"feature\"] = df_cv_train.columns\n            fold_importance[\"importance\"] = model.feature_importance()\n            fold_importance[\"fold\"] = fold + 1\n            feature_importance = pd.concat(\n                [feature_importance, fold_importance], axis=0\n            )\n\n        # if oof_preds_path != '':\n        #    oof_preds.to_csv(oof_preds_path, index=False)\n        prediction /= self.folds\n        del df_cv_train, df_cv_test, pred\n        gc.collect()\n\n        if model_name == \"lightgbm\":\n            if is_plot_feature_importance:\n                self.plot_feature_importance(feature_importance)\n\n        metric_mean = round(np.mean(cv_metrics), self.folds)\n        metric_std = round(np.std(cv_metrics), self.folds)\n        metric_overall = (\n            round(np.mean(cv_metrics) - np.std(cv_metrics), self.folds)\n            if self.maximize\n            else round(np.mean(cv_metrics) + np.std(cv_metrics), self.folds)\n        )\n        print(\n            \"{metric} mean: {mean}, {metric} std: {std}, {metric} overall: {ov}\".format(\n                metric=self.metric, mean=metric_mean, std=metric_std, ov=metric_overall\n            )\n        )\n        print(\"ALL FOLDS:\", [round(x, self.folds) for x in cv_metrics])\n\n        # if is_make_test_preds:\n        #    for_blending = {'train': oof_preds, 'test': test_preds}\n        # joblib.dump(for_blending, oof_preds_path + model_name + '_auc_' + str(metric_mean) + '_std_' + str(metric_std) + '.pkl')\n\n        gc.collect()\n        return prediction, feature_importance\n\n    def run_single_model_validation(\n        self, model_name=\"xgboost\", params=None, oof_preds_path=\"\"\n    ):\n        if oof_preds_path != \"\":\n            oof_preds = pd.DataFrame()\n\n        cv_metrics = []\n        for fold in range(self.folds):\n            print(\n                \"************************** FOLD {} **************************\".format(\n                    fold + 1\n                )\n            )\n            gc.collect()\n            ids_train = pd.read_csv(\"cv_splits/train_cv_fold_{}\".format(fold))\n            ids_test = pd.read_csv(\"cv_splits/test_cv_fold_{}\".format(fold))\n\n            df_cv_train, df_cv_test = (\n                self.df_train.merge(ids_train),\n                self.df_train.merge(ids_test),\n            )\n            y_train, y_test = (\n                df_cv_train[self.target_colname],\n                df_cv_test[self.target_colname],\n            )\n\n            df_cv_train, df_cv_test = self.fold_feature_engineering(\n                df_cv_train, df_cv_test\n            )\n            model, pred = self.get_predictions(\n                model_name, params, df_cv_train, y_train, df_cv_test\n            )\n\n            if oof_preds_path != \"\":\n                ids_test[os.path.split(oof_preds_path)[-1].split(\".\")[0]] = pred\n                ids_test[self.target_colname] = y_test\n                oof_preds = pd.concat([oof_preds, ids_test])\n\n            met = self.compute_metric(y_test, pred)\n            cv_metrics.append(met)\n            print(met)\n\n        if oof_preds_path != \"\":\n            oof_preds.to_csv(oof_preds_path, index=False)\n\n        metric_mean = round(np.mean(cv_metrics), self.folds)\n        metric_std = round(np.std(cv_metrics), self.folds)\n        metric_overall = (\n            round(np.mean(cv_metrics) - np.std(cv_metrics), self.folds)\n            if self.maximize\n            else round(np.mean(cv_metrics) + np.std(cv_metrics), self.folds)\n        )\n        print(\n            \"{metric} mean: {mean}, {metric} std: {std}, {metric} overall: {ov}\".format(\n                metric=self.metric, mean=metric_mean, std=metric_std, ov=metric_overall\n            )\n        )\n        print(\"ALL FOLDS:\", [round(x, self.folds) for x in cv_metrics])\n        return metric_mean, metric_std, metric_overall\n\n    def run_stacked_model_validation(\n        self,\n        model_name=\"logistic_regression\",\n        params=None,\n        prev_level_fold=\"oof_preds_level_1/\",\n        oof_preds_path=\"\",\n    ):\n        if oof_preds_path != \"\":\n            oof_preds = pd.DataFrame()\n\n        cv_metrics = []\n        for fold in range(self.folds):\n            print(\n                \"************************** FOLD {} **************************\".format(\n                    fold + 1\n                )\n            )\n            ids_train = pd.read_csv(\"cv_splits/train_cv_fold_{}\".format(fold))\n            ids_test = pd.read_csv(\"cv_splits/test_cv_fold_{}\".format(fold))\n\n            df_train = pd.DataFrame()\n            for f in os.listdir(prev_level_fold):\n                path = os.path.join(prev_level_fold, f)\n                if df_train.shape[0] == 0:\n                    df_train = pd.read_csv(path)\n                else:\n                    df_train = df_train.merge(pd.read_csv(path))\n\n            df_cv_train, df_cv_test = (\n                df_train.merge(ids_train),\n                df_train.merge(ids_test),\n            )\n            y_train, y_test = (\n                df_cv_train[self.target_colname],\n                df_cv_test[self.target_colname],\n            )\n\n            df_cv_train = df_cv_train[\n                [\n                    col\n                    for col in df_cv_train.columns\n                    if col not in [self.target_colname, self.id_colname]\n                ]\n            ]\n            df_cv_test = df_cv_test[\n                [\n                    col\n                    for col in df_cv_test.columns\n                    if col not in [self.target_colname, self.id_colname]\n                ]\n            ]\n\n            model, pred = self.get_predictions(\n                model_name, params, df_cv_train, y_train, df_cv_test\n            )\n\n            if oof_preds_path != \"\":\n                ids_test[os.path.split(oof_preds_path)[-1].split(\".\")[0]] = pred\n                ids_test[self.target_colname] = y_test\n                oof_preds = pd.concat([oof_preds, ids_test])\n\n            met = self.compute_metric(y_test, pred)\n            cv_metrics.append(met)\n            print(met)\n\n        if oof_preds_path != \"\":\n            oof_preds.to_csv(oof_preds_path, index=False)\n\n        metric_mean = round(np.mean(cv_metrics), self.folds)\n        metric_std = round(np.std(cv_metrics), self.folds)\n        metric_overall = (\n            round(np.mean(cv_metrics) - np.std(cv_metrics), self.folds)\n            if self.maximize\n            else round(np.mean(cv_metrics) + np.std(cv_metrics), self.folds)\n        )\n        print(\n            \"{metric} mean: {mean}, {metric} std: {std}, {metric} overall: {ov}\".format(\n                metric=self.metric, mean=metric_mean, std=metric_std, ov=metric_overall\n            )\n        )\n        print(\"ALL FOLDS:\", [round(x, self.folds) for x in cv_metrics])\n        return metric_mean, metric_std, metric_overall\n\n    def find_optimal_params(self, model_name=\"xgboost\"):\n\n        if model_name == \"xgboost\":\n            opt_params = BesXGboost.find_best_params(self)\n\n        elif model_name == \"lightgbm\":\n            pass\n\n        elif model_name == \"catboost\":\n            pass\n\n        elif model_name == \"logistic_regression\":\n            pass\n\n        else:\n            raise ValueError(\"There is No Such Model\")\n\n        return opt_params\n\n    def get_single_model_test_prediction(\n        self, model_name=\"xgboost\", params=None, preds_path=\"\"\n    ):\n        if preds_path == \"\":\n            raise ValueError(\"Specify Path for Test Predictions\")\n\n        ids_test = (\n            self.df_test[[self.id_colname]]\n            if self.id_colname is self.df_test.columns\n            else self.df_test.reset_index()[[\"index\"]]\n        )\n\n        y_train = self.df_train[self.target_colname]\n        df_train, df_test = self.fold_feature_engineering(self.df_train, self.df_test)\n\n        model, pred = self.get_predictions(\n            model_name, params, df_train, y_train, df_test\n        )\n\n        ids_test[os.path.split(preds_path)[-1].split(\".\")[0]] = pred\n        ids_test.to_csv(preds_path, index=False)\n\n        return ids_test, model\n\n    def get_stacked_model_test_prediction(\n        self,\n        model_name=\"logistic_regression\",\n        params=None,\n        prev_level_test_fold=\"test_preds_level_1/\",\n        preds_path=\"\",\n    ):\n\n        prev_level_train_fold = \"oof\" + prev_level_test_fold[4:]\n        df_train = pd.DataFrame()\n        for f in os.listdir(prev_level_train_fold):\n            path = os.path.join(prev_level_train_fold, f)\n            if df_train.shape[0] == 0:\n                df_train = pd.read_csv(path)\n            else:\n                df_train = df_train.merge(pd.read_csv(path))\n\n        df_test = pd.DataFrame()\n        for f in os.listdir(prev_level_test_fold):\n            path = os.path.join(prev_level_test_fold, f)\n            if df_test.shape[0] == 0:\n                df_test = pd.read_csv(path)\n            else:\n                df_test = df_test.merge(pd.read_csv(path))\n\n        ids_test = (\n            self.df_test[[self.id_colname]]\n            if self.id_colname is self.df_test.columns\n            else self.df_test.reset_index()[[\"index\"]]\n        )\n\n        y_train = df_train[self.target_colname]\n\n        df_train = df_train[\n            [\n                col\n                for col in df_train.columns\n                if col not in [self.target_colname, self.id_colname]\n            ]\n        ]\n        df_test = df_test[\n            [\n                col\n                for col in df_test.columns\n                if col not in [self.target_colname, self.id_colname, \"index\"]\n            ]\n        ]\n\n        model, pred = self.get_predictions(\n            model_name, params, df_train, y_train, df_test\n        )\n\n        if preds_path == \"\":\n            raise ValueError(\"Specify Path for Test Predictions\")\n\n        ids_test[os.path.split(preds_path)[-1].split(\".\")[0]] = pred\n        ids_test.to_csv(preds_path, index=False)\n\n        return ids_test, model\n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/models.py",
    "content": "from numba import jit\n\n# fast roc_auc computation: https://www.kaggle.com/c/microsoft-malware-prediction/discussion/76013\n@jit\ndef fast_auc(y_true, y_prob):\n    y_true = np.asarray(y_true)\n    y_true = y_true[np.argsort(y_prob)]\n    nfalse = 0\n    auc = 0\n    n = len(y_true)\n    for i in range(n):\n        y_i = y_true[i]\n        nfalse += 1 - y_i\n        auc += y_i * nfalse\n    auc /= nfalse * (n - nfalse)\n    return auc\n\n\ndef eval_auc(preds, dtrain):\n    labels = dtrain.get_label()\n    return \"auc\", fast_auc(labels, preds), True\n\n\n# idea from this kernel: https://www.kaggle.com/fabiendaniel/detecting-malwares-with-lgbm\ndef predict_chunk(model, test):\n    initial_idx = 0\n    chunk_size = 1000000\n    current_pred = np.zeros(len(test))\n    while initial_idx < test.shape[0]:\n        final_idx = min(initial_idx + chunk_size, test.shape[0])\n        idx = range(initial_idx, final_idx)\n        current_pred[idx] = model.predict(\n            test.iloc[idx], num_iteration=model.best_iteration\n        )\n        initial_idx = final_idx\n    # predictions += current_pred / min(folds.n_splits, max_iter)\n    return current_pred\n\n\ndef train_model(\n    X=train,\n    X_test=test,\n    y=y,\n    params=None,\n    folds=folds,\n    model_type=\"lgb\",\n    plot_feature_importance=False,\n    averaging=\"usual\",\n    make_oof=False,\n):\n    result_dict = {}\n    if make_oof:\n        oof = np.zeros(len(X))\n    prediction = np.zeros(len(X_test))\n    scores = []\n    feature_importance = pd.DataFrame()\n    for fold_n, (train_index, valid_index) in enumerate(folds.split(X, y)):\n        gc.collect()\n        print(\"Fold\", fold_n + 1, \"started at\", time.ctime())\n        X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]\n        y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]\n\n        if model_type == \"lgb\":\n            train_data = lgb.Dataset(\n                X_train, label=y_train, categorical_feature=cat_cols\n            )\n            valid_data = lgb.Dataset(\n                X_valid, label=y_valid, categorical_feature=cat_cols\n            )\n\n            model = lgb.train(\n                params,\n                train_data,\n                num_boost_round=1,\n                valid_sets=[train_data, valid_data],\n                verbose_eval=500,\n                early_stopping_rounds=50,\n                feval=eval_auc,\n            )\n\n            del train_data, valid_data\n\n            y_pred_valid = model.predict(X_valid, num_iteration=model.best_iteration)\n            del X_valid\n            gc.collect()\n            # print('predicting on test')\n            # y_pred = model.predict(X_test, num_iteration=model.best_iteration)\n            y_pred = predict_chunk(model, X_test)\n            # print('predicted')\n\n        if model_type == \"xgb\":\n            train_data = xgb.DMatrix(data=X_train, label=y_train)\n            valid_data = xgb.DMatrix(data=X_valid, label=y_valid)\n\n            watchlist = [(train_data, \"train\"), (valid_data, \"valid_data\")]\n            model = xgb.train(\n                dtrain=train_data,\n                num_boost_round=20000,\n                evals=watchlist,\n                early_stopping_rounds=200,\n                verbose_eval=500,\n                params=params,\n            )\n            y_pred_valid = model.predict(\n                xgb.DMatrix(X_valid), ntree_limit=model.best_ntree_limit\n            )\n            # y_pred = model.predict(xgb.DMatrix(X_test), ntree_limit=model.best_ntree_limit)\n            y_pred = predict_chunk(model, xgb.DMatrix(X_test))\n\n        if model_type == \"lcv\":\n            model = LogisticRegressionCV(scoring=\"roc_auc\", cv=3)\n            model.fit(X_train, y_train)\n\n            y_pred_valid = model.predict(X_valid)\n            # y_pred = model.predict(X_test)\n            y_pred = predict_chunk(model, X_test)\n\n        if model_type == \"cat\":\n            model = CatBoostRegressor(iterations=20000, eval_metric=\"AUC\", **params)\n            model.fit(\n                X_train,\n                y_train,\n                eval_set=(X_valid, y_valid),\n                cat_features=[],\n                use_best_model=True,\n                verbose=False,\n            )\n\n            y_pred_valid = model.predict(X_valid)\n            # y_pred = model.predict(X_test)\n            y_pred = predict_chunk(model, X_test)\n\n        if make_oof:\n            oof[valid_index] = y_pred_valid.reshape(-1)\n\n        scores.append(fast_auc(y_valid, y_pred_valid))\n        print(\"Fold roc_auc:\", roc_auc_score(y_valid, y_pred_valid))\n        print(\"\")\n\n        if averaging == \"usual\":\n            prediction += y_pred\n        elif averaging == \"rank\":\n            prediction += pd.Series(y_pred).rank().values\n\n        if model_type == \"lgb\":\n            # feature importance\n            fold_importance = pd.DataFrame()\n            fold_importance[\"feature\"] = X.columns\n            fold_importance[\"importance\"] = model.feature_importance()\n            fold_importance[\"fold\"] = fold_n + 1\n            feature_importance = pd.concat(\n                [feature_importance, fold_importance], axis=0\n            )\n\n    prediction /= n_fold\n\n    print(\n        \"CV mean score: {0:.4f}, std: {1:.4f}.\".format(np.mean(scores), np.std(scores))\n    )\n\n    if model_type == \"lgb\":\n\n        if plot_feature_importance:\n            feature_importance[\"importance\"] /= n_fold\n            cols = (\n                feature_importance[[\"feature\", \"importance\"]]\n                .groupby(\"feature\")\n                .mean()\n                .sort_values(by=\"importance\", ascending=False)[:50]\n                .index\n            )\n\n            best_features = feature_importance.loc[\n                feature_importance.feature.isin(cols)\n            ]\n            logging.info(\"Top features\")\n            for f in best_features.sort_values(by=\"importance\", ascending=False)[\n                \"feature\"\n            ].values:\n                logging.info(f)\n\n            plt.figure(figsize=(16, 12))\n            sns.barplot(\n                x=\"importance\",\n                y=\"feature\",\n                data=best_features.sort_values(by=\"importance\", ascending=False),\n            )\n            plt.title(\"LGB Features (avg over folds)\")\n\n            result_dict[\"feature_importance\"] = feature_importance\n\n    result_dict[\"prediction\"] = prediction\n    if make_oof:\n        result_dict[\"oof\"] = oof\n\n    return result_dict\n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/models_zoo.py",
    "content": "import pandas as pd\nimport numpy as np\nimport operator\nimport xgboost as xgb\nimport lightgbm as lgb\nfrom catboost import CatBoostClassifier, cv, Pool\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport math\n\ncolor = sns.color_palette()\n\n\nclass BesXGboost:\n    \"\"\"\n    XGBoost model. https://github.com/dmlc/xgboost/blob/master/doc/parameter.md\n    params = {\n      'silent': 1 if self.silent else 0,\n      'use_buffer': int(self.use_buffer),\n      'num_round': self.num_round,\n      'ntree_limit': self.ntree_limit,\n      'nthread': self.nthread,\n      'booster': self.booster,\n      'eta': self.eta,\n      'gamma': self.gamma,\n      'max_depth': self.max_depth,\n      'min_child_weight': self.min_child_weight,\n      'subsample': self.subsample,\n      'colsample_bytree': self.colsample_bytree,\n      'max_delta_step': self.max_delta_step,\n      'l': self.l,\n      'alpha': self.alpha,\n      'lambda_bias': self.lambda_bias,\n      'objective': self.objective,\n      'eval_metric': self.eval_metric,\n      'seed': self.seed,\n      'num_class': self.num_class,\n    }\n\n    xgb_params = {\n            'booster': 'gbtree',\n            'eta': .1,\n            'colsample_bytree': 0.8,\n            'subsample': 0.8,\n            'seed': 123,\n            'nthread': 3,\n            'max_depth': 6,\n            'min_child_weight': .1,\n            'objective': 'binary:logistic',\n            'eval_metric': 'auc',\n            'silent': 1\n        }\n\n    \"\"\"\n\n    def __init__(\n        self,\n        params,\n        metric=\"auc\",\n        maximize=True,\n        verbose=True,\n        features=None,\n        model=None,\n    ):\n        assert params[\"booster\"] in [\"gbtree\", \"gblinear\"]\n        assert params[\"objective\"] in [\n            \"reg:linear\",\n            \"reg:logistic\",\n            \"binary:logistic\",\n            \"binary:logitraw\",\n            \"multi:softmax\",\n            \"multi:softprob\",\n            \"rank:pairwise\",\n        ]\n        assert params[\"eval_metric\"] in [\n            None,\n            \"rmse\",\n            \"mlogloss\",\n            \"logloss\",\n            \"error\",\n            \"merror\",\n            \"auc\",\n            \"ndcg\",\n            \"map\",\n            \"ndcg@n\",\n            \"map@n\",\n        ]\n\n        self.params = params\n        self.metric = metric\n        self.maximize = maximize\n        self.verbose = verbose\n        self.features = features\n        self.model = model\n\n    def fit(self, X_train, y_train):\n        self.features = X_train.columns\n        dtrain = xgb.DMatrix(data=X_train, label=y_train)\n\n        if self.verbose:\n            bst = xgb.cv(\n                self.params,\n                dtrain,\n                num_boost_round=1000,\n                nfold=3,\n                early_stopping_rounds=100,\n                verbose_eval=50,\n            )\n        else:\n            bst = xgb.cv(\n                self.params,\n                dtrain,\n                num_boost_round=1000,\n                nfold=3,\n                early_stopping_rounds=100,\n            )\n\n        if self.maximize:\n            best_rounds = int(\n                np.argmax(\n                    bst[\"test-\" + self.metric + \"-mean\"]\n                    - bst[\"test-\" + self.metric + \"-std\"]\n                )\n                * 1.5\n            )\n        else:\n            best_rounds = int(\n                np.argmin(\n                    bst[\"test-\" + self.metric + \"-mean\"]\n                    + bst[\"test-\" + self.metric + \"-std\"]\n                )\n                * 1.5\n            )\n\n        if self.verbose:\n            print(\"Best Iteration: {}\".format(best_rounds))\n\n        self.model = xgb.train(self.params, dtrain, best_rounds)\n\n    def predict(self, X_test):\n        dtest = xgb.DMatrix(data=X_test)\n        pred_prob = self.model.predict(dtest)\n        return pred_prob\n\n    def feature_importance(self):\n        outfile = open(\"xgb.fmap\", \"w\")\n        i = 0\n        for feat in self.features:\n            outfile.write(\"{0}\\t{1}\\tq\\n\".format(i, feat))\n            i = i + 1\n        outfile.close()\n        importance = self.model.get_fscore(fmap=\"xgb.fmap\")\n        importance = sorted(importance.items(), key=operator.itemgetter(1))\n        imp = pd.DataFrame(importance, columns=[\"feature\", \"fscore\"])\n        imp = imp.sort_values([\"fscore\"], ascending=False)\n\n        # import xgbfir\n        # xgbfir.saveXgbFI(model, feature_names=X_train.columns, OutputXlsxFile='irisFI.xlsx',TopK=300)\n\n        return imp\n\n    def _optimize_single_param(self):\n        pass\n\n    @staticmethod\n    def find_best_params(kag):\n        \"\"\"\n        lambda [default=1]\n\n            L2 regularization term on weights (analogous to Ridge regression)\n            This used to handle the regularization part of XGBoost. Though many data scientists don’t use it often, it should be explored to reduce overfitting.\n\n        alpha [default=0]\n\n            L1 regularization term on weight (analogous to Lasso regression)\n            Can be used in case of very high dimensionality so that the algorithm runs faster when implemented\n\n        scale_pos_weight [default=1]\n\n            A value greater than 0 should be used in case of high class imbalance as it helps in faster convergence.\n        \"\"\"\n        nthread = 3\n        lr = 0.3\n        bst = -math.inf if kag.maximize else math.inf\n        seed = 123\n\n        params = {\n            \"booster\": \"gbtree\",\n            \"eta\": lr,\n            \"colsample_bytree\": 0.8,\n            \"subsample\": 0.8,\n            \"seed\": seed,\n            \"nthread\": nthread,\n            \"max_depth\": 6,\n            \"min_child_weight\": 1,\n            \"objective\": \"binary:logistic\",\n            \"eval_metric\": kag.metric,\n            \"lambda\": 1,\n            \"alpha\": 0,\n            \"gamma\": 0,\n        }\n\n        for depth in [2, 4, 6, 8, 10]:\n            for mcw in [1, 3, 5, 7, 9]:\n                print(depth, mcw)\n                params[\"max_depth\"] = depth\n                params[\"min_child_weight\"] = mcw\n\n                met = kag.run_single_model_validation(\n                    model_name=\"xgboost\", params=params\n                )[0]\n                cond = met > bst if kag.maximize else met < bst\n\n                if cond:\n                    bst = met\n                    depth_bst = depth\n                    mcw_bst = mcw\n        print(\"Best Depth: {}. Best MCW: {}\".format(depth_bst, mcw_bst))\n        print(\"Score:\", bst)\n\n        depth_bst_prev = depth_bst\n        mcw_bst_prev = mcw_bst\n        for depth in [depth_bst_prev - 1, depth_bst_prev, depth_bst_prev + 1]:\n            for mcw in [mcw_bst_prev - 1, mcw_bst_prev, mcw_bst_prev + 1]:\n                print(depth, mcw)\n                params[\"max_depth\"] = depth\n                params[\"min_child_weight\"] = mcw\n\n                met = kag.run_single_model_validation(\n                    model_name=\"xgboost\", params=params\n                )[0]\n                cond = met > bst if kag.maximize else met < bst\n\n                if cond:\n                    bst = met\n                    depth_bst = depth\n                    mcw_bst = mcw\n        print(\"Best Depth: {}. Best MCW: {}\".format(depth_bst, mcw_bst))\n        print(\"Score:\", bst)\n        params[\"max_depth\"] = depth_bst\n        params[\"min_child_weight\"] = mcw_bst\n\n        colsample_bytree_bst = 0.8\n        subsample_bst = 0.8\n        for colsample_bytree in [0.4, 0.6, 0.8]:\n            for subsample in [0.4, 0.6, 0.8]:\n                print(colsample_bytree, subsample)\n                params[\"colsample_bytree\"] = colsample_bytree\n                params[\"subsample\"] = subsample\n\n                met = kag.run_single_model_validation(\n                    model_name=\"xgboost\", params=params\n                )[0]\n                cond = met > bst if kag.maximize else met < bst\n\n                if cond:\n                    bst = met\n                    colsample_bytree_bst = colsample_bytree\n                    subsample_bst = subsample\n        print(\n            \"Best Colsample: {}. Best Subsample: {}\".format(\n                colsample_bytree_bst, subsample_bst\n            )\n        )\n        print(\"Score:\", bst)\n\n        colsample_bytree_bst_prev = colsample_bytree_bst\n        subsample_bst_prev = subsample_bst\n        for colsample_bytree in [\n            colsample_bytree_bst_prev - 0.1,\n            colsample_bytree_bst_prev,\n            colsample_bytree_bst_prev + 0.1,\n        ]:\n            for subsample in [\n                subsample_bst_prev - 0.1,\n                subsample_bst_prev,\n                subsample_bst_prev + 0.1,\n            ]:\n                print(colsample_bytree, subsample)\n                params[\"colsample_bytree\"] = colsample_bytree\n                params[\"subsample\"] = subsample\n\n                met = kag.run_single_model_validation(\n                    model_name=\"xgboost\", params=params\n                )[0]\n                cond = met > bst if kag.maximize else met < bst\n\n                if cond:\n                    bst = met\n                    colsample_bytree_bst = colsample_bytree\n                    subsample_bst = subsample\n        print(\n            \"Best Colsample: {}. Best Subsample: {}\".format(\n                colsample_bytree_bst, subsample_bst\n            )\n        )\n        print(\"Score:\", bst)\n        params[\"colsample_bytree\"] = colsample_bytree_bst\n        params[\"subsample\"] = subsample_bst\n\n        # alpha_bst = 0\n        # lamb_bst = 1\n        # for alpha in [0, 0.1, 0.5, 1]:\n        #     for lamb in [0, 0.1, 0.5, 1]:\n        #         print(alpha, lamb)\n        #         params['alpha'] = alpha\n        #         params['lambda'] = lamb\n        #\n        #         met = kag.run_single_model_validation(model_name='xgboost', params=params)[2]\n        #         cond = met > bst if kag.maximize else met < bst\n        #\n        #         if cond:\n        #             bst = met\n        #             alpha_bst = alpha\n        #             lamb_bst = lamb\n        # print('Best Alpha: {}. Best Lambda: {}'.format(alpha_bst, lamb_bst))\n        # print('Score:', bst)\n        # params['alpha'] = alpha_bst\n        # params['lambda'] = lamb_bst\n\n        lamb_bst = 1\n        for lamb in [0, 0.1, 0.5, 1, 5, 10]:\n            print(lamb)\n            params[\"lambda\"] = lamb\n\n            met = kag.run_single_model_validation(model_name=\"xgboost\", params=params)[\n                0\n            ]\n            cond = met > bst if kag.maximize else met < bst\n\n            if cond:\n                bst = met\n                lamb_bst = lamb\n        print(\"Best Lambda: {}\".format(lamb_bst))\n        print(\"Score:\", bst)\n        params[\"lambda\"] = lamb_bst\n\n        gamma_bst = 0\n        for gamma in [0, 0.1, 0.5, 1, 10]:\n            print(gamma)\n            params[\"gamma\"] = gamma\n\n            met = kag.run_single_model_validation(model_name=\"xgboost\", params=params)[\n                0\n            ]\n            cond = met > bst if kag.maximize else met < bst\n\n            if cond:\n                bst = met\n                gamma_bst = gamma\n        print(\"Best Gamma: {}\".format(gamma_bst))\n        print(\"Score:\", bst)\n        params[\"gamma\"] = gamma_bst\n\n        print(params)\n        print(\"Score:\", bst)\n        return params\n\n\nclass BesLightGBM:\n    \"\"\"\n    lgb_params = {\n            'boosting_type': 'gbdt',\n            'objective': 'binary',\n            'metric': 'auc',\n            'num_leaves': 31,\n            'learning_rate': 0.05,\n            'feature_fraction': 0.9,\n            'bagging_fraction': 0.8,\n            'bagging_freq': 5,\n            'verbose': 0\n        }\n\n    \"\"\"\n\n    def __init__(self, params, metric=\"auc\", maximize=True, verbose=True, model=None):\n        self.params = params\n        self.metric = metric\n        self.maximize = maximize\n        self.verbose = verbose\n        self.model = model\n\n    def fit(self, X_train, y_train):\n        dtrain = lgb.Dataset(data=X_train, label=y_train)\n\n        if self.verbose:\n            bst = lgb.cv(\n                self.params,\n                dtrain,\n                num_boost_round=10000,\n                nfold=3,\n                early_stopping_rounds=50,\n                verbose_eval=50,\n            )\n        else:\n            bst = lgb.cv(\n                self.params,\n                dtrain,\n                num_boost_round=10000,\n                nfold=3,\n                early_stopping_rounds=50,\n            )\n\n        if self.maximize:\n            best_rounds = int(\n                np.argmax(\n                    np.array(bst[self.metric + \"-mean\"])\n                    - np.array(bst[self.metric + \"-stdv\"])\n                )\n                * 1.5\n            )\n        else:\n            best_rounds = int(\n                np.argmin(\n                    np.array(bst[self.metric + \"-mean\"])\n                    + np.array(bst[self.metric + \"-stdv\"])\n                )\n                * 1.5\n            )\n\n        if self.verbose:\n            print(\"Best Iteration: {}\".format(best_rounds))\n\n        self.model = lgb.train(self.params, dtrain, best_rounds)\n\n    def predict(self, X_test):\n        pred_prob = self.model.predict(X_test)\n        return pred_prob\n\n    def feature_importance(self):\n        lgb.plot_importance(self.model, max_num_features=10)\n        plt.show()\n        return self.model.feature_importance()\n\n    @staticmethod\n    def find_best_params(kag):\n        pass\n\n\nclass BesCatBoost:\n    \"\"\"\n    catboost_params = {\n            'iterations': 500,\n            'depth': 3,\n            'learning_rate': 0.1,\n            'eval_metric': 'AUC',\n            'random_seed': 42,\n            'logging_level': 'Verbose',\n            'l2_leaf_reg': 15.0,\n            'bagging_temperature': 0.75,\n            'allow_writing_files': False,\n            'metric_period': 50\n        }\n        \"\"\"\n\n    def __init__(self, params, metric=\"AUC\", maximize=True, verbose=True, model=None):\n        self.params = params\n        self.metric = metric\n        self.maximize = maximize\n        self.verbose = verbose\n        self.model = model\n\n    def fit(self, X_train, y_train):\n\n        bst = cv(Pool(X_train, y_train), self.params)\n\n        best_rounds = int(bst[\"test-{}-mean\".format(self.metric)].idxmax() * 1.5) + 1\n        print(\"Best Iteration: {}\".format(best_rounds))\n\n        self.params[\"iterations\"] = best_rounds\n        self.model = CatBoostClassifier(**self.params)\n\n        self.model.fit(X_train, y_train)\n\n    def predict(self, X_test):\n        pred_prob = self.model.predict_proba(X_test)[:, -1]\n        return pred_prob\n\n    def feature_importance(self):\n        pass\n\n    @staticmethod\n    def find_best_params(kag):\n        pass\n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/oof_preds_level_1/readme.md",
    "content": ""
  },
  {
    "path": "classification/Kaggle Malware Prediction/target_encoding.py",
    "content": "import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import KFold\n\n\nclass TargetEncoding(object):\n    \"\"\"\n    Mean Target Encoding.\n    One of the best ways to encode high-cardinality categorical features\n    \"\"\"\n\n    def __init__(self, C=10):\n        self.C = C\n\n    def fit(self, data_train, data_test, total_test, feature, target):\n\n        skf = KFold(n_splits=5, random_state=13, shuffle=True)\n        if feature not in data_train.columns:\n            print(\"Warning:\", feature, \" not in the train\")\n            return data_train, data_test, total_test\n\n        data_list = []\n        for train_index, test_index in skf.split(data_train):\n            enc_train = data_train.loc[train_index, [feature, target]].copy()\n            enc_test = data_train.loc[test_index, [feature, target]].copy()\n\n            global_mean = np.mean(enc_train[target])\n            groupby_feature = enc_train.groupby(feature)\n            current_mean = groupby_feature[target].mean()\n            current_size = groupby_feature.size()\n            feat_df = (\n                (current_mean * current_size + global_mean * self.C)\n                / (current_size + self.C)\n            ).fillna(global_mean)\n            values = pd.DataFrame(\n                feat_df,\n                columns=[\"target_encoding_{}\".format(feature)],\n                dtype=np.float64,\n            )\n            data_list.append(\n                enc_test.merge(values, how=\"left\", left_on=feature, right_index=True)[\n                    [\"target_encoding_{}\".format(feature)]\n                ].fillna(global_mean)\n            )\n\n        global_mean = np.mean(data_train[target])\n        groupby_feature = data_train.groupby([feature])\n        current_mean = groupby_feature[target].mean()\n        current_size = groupby_feature.size()\n        feat_df = (\n            (current_mean * current_size + global_mean * self.C)\n            / (current_size + self.C)\n        ).fillna(global_mean)\n        values = pd.DataFrame(\n            feat_df, columns=[\"target_encoding_{}\".format(feature)], dtype=np.float64\n        )\n\n        data_train = data_train.join(pd.concat(data_list))\n        data_train.drop(feature, 1, inplace=True)\n\n        data_test = data_test.merge(\n            values, how=\"left\", left_on=feature, right_index=True\n        )\n        data_test[\"target_encoding_{}\".format(feature)] = data_test[\n            \"target_encoding_{}\".format(feature)\n        ].fillna(global_mean)\n        data_test.drop(feature, 1, inplace=True)\n\n        total_test = total_test.merge(\n            values, how=\"left\", left_on=feature, right_index=True\n        )\n        total_test[\"target_encoding_{}\".format(feature)] = total_test[\n            \"target_encoding_{}\".format(feature)\n        ].fillna(global_mean)\n        total_test.drop(feature, 1, inplace=True)\n\n        return data_train, data_test, total_test\n"
  },
  {
    "path": "classification/Kaggle Malware Prediction/test_preds_level_1/readme.md",
    "content": ""
  },
  {
    "path": "classification/Kaggle Malware Prediction/test_preds_level_2/readme.md",
    "content": ""
  },
  {
    "path": "classification/Kaggle Petfinder/8th-place-solution-code.py",
    "content": "import cv2\nimport os\nimport time\nimport gc\nimport glob\nimport json\nimport pprint\nimport joblib\nimport warnings\nimport random\n\nimport pandas as pd\nimport numpy as np\nimport seaborn as sns\nimport scipy as sp\nimport matplotlib.pyplot as plt\nimport lightgbm as lgb\nimport xgboost as xgb\nimport tensorflow as tf\n\nfrom collections import Counter\nfrom functools import partial\nfrom math import sqrt\nfrom sklearn.metrics import cohen_kappa_score, mean_squared_error\nfrom sklearn.metrics import confusion_matrix as sk_cmatrix\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.decomposition import (\n    SparsePCA,\n    TruncatedSVD,\n    LatentDirichletAllocation,\n    NMF,\n)\n\nfrom PIL import Image\nfrom joblib import Parallel, delayed\nfrom tqdm import tqdm\nfrom contextlib import contextmanager\nfrom pandas.io.json import json_normalize\n\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.models import Model\nfrom keras.layers import (\n    GlobalAveragePooling2D,\n    Input,\n    Lambda,\n    AveragePooling1D,\n    CuDNNLSTM,\n    CuDNNGRU,\n)\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.layers import (\n    Dense,\n    Input,\n    CuDNNLSTM,\n    Embedding,\n    Dropout,\n    Activation,\n    CuDNNGRU,\n    Conv1D,\n)\nfrom keras.layers import (\n    Bidirectional,\n    GlobalMaxPool1D,\n    GlobalMaxPooling2D,\n    GlobalAveragePooling1D,\n    GlobalAvgPool2D,\n    GlobalMaxPool2D,\n)\nfrom keras.layers import Input, Embedding, Dense, Conv2D, MaxPool2D, concatenate\nfrom keras.layers import (\n    Reshape,\n    Flatten,\n    Concatenate,\n    Dropout,\n    SpatialDropout1D,\n    SpatialDropout2D,\n)\nfrom keras.applications.densenet import preprocess_input, DenseNet121\nfrom keras.optimizers import Adam\nfrom keras.models import Model\nfrom keras import backend as K\nfrom keras.engine.topology import Layer\nfrom keras import initializers, regularizers, constraints, optimizers, layers\n\n\npreload = False\n\n\nclass PetFinderParser(object):\n    def __init__(self, debug=False):\n\n        self.debug = debug\n        self.sentence_sep = \" \"\n\n        # Does not have to be extracted because main DF already contains description\n        self.extract_sentiment_text = False\n\n    def open_metadata_file(self, filename):\n        \"\"\"\n        Load metadata file.\n        \"\"\"\n        with open(filename, \"r\") as f:\n            metadata_file = json.load(f)\n        return metadata_file\n\n    def open_sentiment_file(self, filename):\n        \"\"\"\n        Load sentiment file.\n        \"\"\"\n        with open(filename, \"r\") as f:\n            sentiment_file = json.load(f)\n        return sentiment_file\n\n    def open_image_file(self, filename):\n        \"\"\"\n        Load image file.\n        \"\"\"\n        image = np.asarray(Image.open(filename))\n        return image\n\n    def parse_sentiment_file(self, file):\n        \"\"\"\n        Parse sentiment file. Output DF with sentiment features.\n        \"\"\"\n\n        file_sentiment = file[\"documentSentiment\"]\n        file_entities = [x[\"name\"] for x in file[\"entities\"]]\n        file_entities = self.sentence_sep.join(file_entities)\n\n        # file_entities_new =[x['type'] for x in file['entities']]\n        # file_entities_new = self.sentence_sep.join(file_entities_new)\n\n        if self.extract_sentiment_text:\n            file_sentences_text = [x[\"text\"][\"content\"] for x in file[\"sentences\"]]\n            file_sentences_text = self.sentence_sep.join(file_sentences_text)\n        file_sentences_sentiment = [x[\"sentiment\"] for x in file[\"sentences\"]]\n\n        file_sentences_sentiment = pd.DataFrame.from_dict(\n            file_sentences_sentiment, orient=\"columns\"\n        ).sum()\n        file_sentences_sentiment = file_sentences_sentiment.add_prefix(\n            \"document_\"\n        ).to_dict()\n\n        file_sentiment.update(file_sentences_sentiment)\n\n        df_sentiment = pd.DataFrame.from_dict(file_sentiment, orient=\"index\").T\n        if self.extract_sentiment_text:\n            df_sentiment[\"text\"] = file_sentences_text\n\n        df_sentiment[\"entities\"] = file_entities\n        # df_sentiment['entities_type'] = file_entities_new\n        df_sentiment = df_sentiment.add_prefix(\"sentiment_\")\n\n        return df_sentiment\n\n    def parse_metadata_file(self, file):\n        \"\"\"\n        Parse metadata file. Output DF with metadata features.\n        \"\"\"\n\n        file_keys = list(file.keys())\n\n        if \"labelAnnotations\" in file_keys:\n            file_annots = file[\"labelAnnotations\"][: int(len(file[\"labelAnnotations\"]))]\n            file_top_score = np.asarray([x[\"score\"] for x in file_annots]).mean()\n            file_top_desc = [x[\"description\"] for x in file_annots]\n        else:\n            file_top_score = np.nan\n            file_top_desc = [\"\"]\n\n        file_colors = file[\"imagePropertiesAnnotation\"][\"dominantColors\"][\"colors\"]\n        file_crops = file[\"cropHintsAnnotation\"][\"cropHints\"]\n\n        file_color_score = np.asarray([x[\"score\"] for x in file_colors]).mean()\n        file_color_pixelfrac = np.asarray(\n            [x[\"pixelFraction\"] for x in file_colors]\n        ).mean()\n\n        file_crop_conf = np.asarray([x[\"confidence\"] for x in file_crops]).mean()\n\n        if \"importanceFraction\" in file_crops[0].keys():\n            file_crop_importance = np.asarray(\n                [x[\"importanceFraction\"] for x in file_crops]\n            ).mean()\n        else:\n            file_crop_importance = np.nan\n\n        df_metadata = {\n            \"annots_score\": file_top_score,\n            \"color_score\": file_color_score,\n            \"color_pixelfrac\": file_color_pixelfrac,\n            \"crop_conf\": file_crop_conf,\n            \"crop_importance\": file_crop_importance,\n            \"annots_top_desc\": self.sentence_sep.join(file_top_desc),\n        }\n\n        df_metadata = pd.DataFrame.from_dict(df_metadata, orient=\"index\").T\n        df_metadata = df_metadata.add_prefix(\"metadata_\")\n\n        return df_metadata\n\n\ndef confusion_matrix(rater_a, rater_b, min_rating=None, max_rating=None):\n    \"\"\"\n    Returns the confusion matrix between rater's ratings\n    \"\"\"\n    assert len(rater_a) == len(rater_b)\n    if min_rating is None:\n        min_rating = min(rater_a + rater_b)\n    if max_rating is None:\n        max_rating = max(rater_a + rater_b)\n    num_ratings = int(max_rating - min_rating + 1)\n    conf_mat = [[0 for i in range(num_ratings)] for j in range(num_ratings)]\n    for a, b in zip(rater_a, rater_b):\n        conf_mat[a - min_rating][b - min_rating] += 1\n    return conf_mat\n\n\ndef histogram(ratings, min_rating=None, max_rating=None):\n    \"\"\"\n    Returns the counts of each type of rating that a rater made\n    \"\"\"\n    if min_rating is None:\n        min_rating = min(ratings)\n    if max_rating is None:\n        max_rating = max(ratings)\n    num_ratings = int(max_rating - min_rating + 1)\n    hist_ratings = [0 for x in range(num_ratings)]\n    for r in ratings:\n        hist_ratings[r - min_rating] += 1\n    return hist_ratings\n\n\ndef quadratic_weighted_kappa(y, y_pred):\n    rater_a = y\n    rater_b = y_pred\n    min_rating = None\n    max_rating = None\n    rater_a = np.array(rater_a, dtype=int)\n    rater_b = np.array(rater_b, dtype=int)\n    assert len(rater_a) == len(rater_b)\n    if min_rating is None:\n        min_rating = min(min(rater_a), min(rater_b))\n    if max_rating is None:\n        max_rating = max(max(rater_a), max(rater_b))\n    conf_mat = confusion_matrix(rater_a, rater_b, min_rating, max_rating)\n    num_ratings = len(conf_mat)\n    num_scored_items = float(len(rater_a))\n\n    hist_rater_a = histogram(rater_a, min_rating, max_rating)\n    hist_rater_b = histogram(rater_b, min_rating, max_rating)\n\n    numerator = 0.0\n    denominator = 0.0\n\n    for i in range(num_ratings):\n        for j in range(num_ratings):\n            expected_count = hist_rater_a[i] * hist_rater_b[j] / num_scored_items\n            d = pow(i - j, 2.0) / pow(num_ratings - 1, 2.0)\n            numerator += d * conf_mat[i][j] / num_scored_items\n            denominator += d * expected_count / num_scored_items\n\n    return 1.0 - numerator / denominator\n\n\nclass OptimizedRounder(object):\n    def __init__(self):\n        self.coef_ = 0\n\n    def _kappa_loss(self, coef, X, y):\n        X_p = np.copy(X)\n        for i, pred in enumerate(X_p):\n            if pred < coef[0]:\n                X_p[i] = 0\n            elif pred >= coef[0] and pred < coef[1]:\n                X_p[i] = 1\n            elif pred >= coef[1] and pred < coef[2]:\n                X_p[i] = 2\n            elif pred >= coef[2] and pred < coef[3]:\n                X_p[i] = 3\n            else:\n                X_p[i] = 4\n\n        ll = quadratic_weighted_kappa(y, X_p)\n        return -ll\n\n    def fit(self, X, y):\n        loss_partial = partial(self._kappa_loss, X=X, y=y)\n        initial_coef = [0.5, 1.5, 2.5, 3.5]\n        self.coef_ = sp.optimize.minimize(\n            loss_partial, initial_coef, method=\"nelder-mead\"\n        )\n\n    def predict(self, X, coef):\n        X_p = np.copy(X)\n        for i, pred in enumerate(X_p):\n            if pred < coef[0]:\n                X_p[i] = 0\n            elif pred >= coef[0] and pred < coef[1]:\n                X_p[i] = 1\n            elif pred >= coef[1] and pred < coef[2]:\n                X_p[i] = 2\n            elif pred >= coef[2] and pred < coef[3]:\n                X_p[i] = 3\n            else:\n                X_p[i] = 4\n        return X_p\n\n    def coefficients(self):\n        return self.coef_[\"x\"]\n\n\ndef rmse(actual, predicted):\n    return sqrt(mean_squared_error(actual, predicted))\n\n\n# Helper function for parallel data processing:\ndef extract_additional_features(pet_id, mode=\"train\"):\n    pet_parser = PetFinderParser()\n    sentiment_filename = \"../input/petfinder-adoption-prediction/{}_sentiment/{}.json\".format(\n        mode, pet_id\n    )\n    try:\n        sentiment_file = pet_parser.open_sentiment_file(sentiment_filename)\n        df_sentiment = pet_parser.parse_sentiment_file(sentiment_file)\n        df_sentiment[\"PetID\"] = pet_id\n    except FileNotFoundError:\n        df_sentiment = []\n\n    dfs_metadata = []\n    metadata_filenames = sorted(\n        glob.glob(\n            \"../input/petfinder-adoption-prediction/{}_metadata/{}*.json\".format(\n                mode, pet_id\n            )\n        )\n    )\n    if len(metadata_filenames) > 0:\n        for f in metadata_filenames:\n            metadata_file = pet_parser.open_metadata_file(f)\n            df_metadata = pet_parser.parse_metadata_file(metadata_file)\n            df_metadata[\"PetID\"] = pet_id\n            dfs_metadata.append(df_metadata)\n        dfs_metadata = pd.concat(dfs_metadata, ignore_index=True, sort=False)\n    dfs = [df_sentiment, dfs_metadata]\n\n    return dfs\n\n\ndef set_seed(seed=0):\n    random.seed(seed)\n    os.environ[\"PYTHONHASHSEED\"] = str(seed)\n    np.random.seed(seed)\n    tf.set_random_seed(seed)\n\n\n# Helper Functions\n# ---------------------\n@contextmanager\ndef faith(title):\n    start_time = time.time()\n    yield\n    print(\">> {} - done in {:.0f}s\".format(title, time.time() - start_time))\n\n\ndef reduce_mem_usage(df, verbose=True):\n    numerics = [\"uint8\", \"int16\", \"int32\", \"int64\", \"float16\", \"float32\", \"float64\"]\n    start_mem = df.memory_usage(deep=True).sum() / 1024 ** 2\n    for col in df.columns:\n        col_type = df[col].dtypes\n        if col_type in numerics:\n            c_min = df[col].min()\n            c_max = df[col].max()\n            if str(col_type)[:3] == \"int\":\n                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                    df[col] = df[col].astype(np.int8)\n                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n                    df[col] = df[col].astype(np.int32)\n                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:\n                    df[col] = df[col].astype(np.int64)\n            else:\n                if (\n                    c_min > np.finfo(np.float16).min\n                    and c_max < np.finfo(np.float16).max\n                ):\n                    df[col] = df[col].astype(np.float16)\n                elif (\n                    c_min > np.finfo(np.float32).min\n                    and c_max < np.finfo(np.float32).max\n                ):\n                    df[col] = df[col].astype(np.float32)\n                else:\n                    df[col] = df[col].astype(np.float64)\n    end_mem = df.memory_usage(deep=True).sum() / 1024 ** 2\n    if verbose:\n        print(\n            \"Mem. usage decreased to {:5.2f} Mb ({:.1f}% reduction)\".format(\n                end_mem, 100 * (start_mem - end_mem) / start_mem\n            )\n        )\n    return df\n\n\ndef clean_name(x):\n    x = str(x)\n    no_names = [\n        \"No Name Yet\",\n        \"Nameless\",\n        \"no_Name_Yet\",\n        \"No Name Yet God Bless\",\n        \"-no Name-\",\n        \"[No Name]\",\n        \"(No Name)\",\n        \"No Names\",\n        \"Not Yet Named\",\n    ]\n    for n in no_names:\n        x.replace(n, \"No Name\")\n    return x\n\n\ndef relative_age(cols):\n    pet_type = cols[0]\n    age = cols[1]\n    if pet_type == 1:\n        relage = age / 144  # Dog Avergae Life Span - 12 years\n    else:\n        relage = age / 180  # Cat Average Span - 15 years\n    return relage\n\n\ndef VerifibalePhotoAmy(number):\n    if number > 1:\n        vfp = 1\n    else:\n        vfp = 0\n    return vfp\n\n\ndef seo_value(cols):\n    photos = cols[0]\n    videos = cols[1]\n    seo = 0.7 * videos + 0.3 * photos\n    return seo\n\n\ndef genuine_name(cols):\n    name = cols[0]\n    quantity = cols[1]\n    try:\n        is_gen = int(len(name.split()) == 1)\n    except:\n        is_gen = np.nan\n    if int(quantity) > 1:\n        is_gen = 1\n    return is_gen\n\n\ndef rankbyG(alldata, group):\n    rank_telemetry = pd.DataFrame()\n    for unit in alldata[group].unique():\n        tf = alldata[alldata[group] == unit][[\"PetID\", \"InstaFeature\", group]]\n        col_name = \"Insta\" + str(group).title() + \"Rank\"\n        tf[col_name] = tf[\"InstaFeature\"].rank(method=\"max\")\n        rank_telemetry = pd.concat([rank_telemetry, tf[[\"PetID\", col_name]]])\n        del tf\n    alldata = pd.merge(alldata, rank_telemetry, on=[\"PetID\"], how=\"left\")\n    return alldata\n\n\ndef get_new_columns(name, aggs):\n    return [name + \"_\" + k + \"_\" + agg for k in aggs.keys() for agg in aggs[k]]\n\n\ndef agg_features(df, groupby, agg, prefix):\n    agg_df = df.groupby(groupby).agg(agg)\n    agg_df.columns = get_new_columns(prefix, agg)\n    return agg_df\n\n\ndef bounding_features(\n    df, meta_path=\"../input/petfinder-adoption-prediction/train_metadata/\"\n):\n\n    df_id = df[\"PetID\"]\n    vertex_xs = []\n    vertex_ys = []\n    bounding_confidences = []\n    bounding_importance_fracs = []\n    dominant_blues = []\n    dominant_greens = []\n    dominant_reds = []\n    dominant_pixel_fracs = []\n    dominant_scores = []\n    label_descriptions = []\n    label_scores = []\n    nf_count = 0\n    nl_count = 0\n    for pet in df_id:\n        try:\n            with open(str(meta_path) + pet + \"-1.json\", \"r\") as f:\n                data = json.load(f)\n            vertex_x = data[\"cropHintsAnnotation\"][\"cropHints\"][0][\"boundingPoly\"][\n                \"vertices\"\n            ][2][\"x\"]\n            vertex_xs.append(vertex_x)\n            vertex_y = data[\"cropHintsAnnotation\"][\"cropHints\"][0][\"boundingPoly\"][\n                \"vertices\"\n            ][2][\"y\"]\n            vertex_ys.append(vertex_y)\n            bounding_confidence = data[\"cropHintsAnnotation\"][\"cropHints\"][0][\n                \"confidence\"\n            ]\n            bounding_confidences.append(bounding_confidence)\n            bounding_importance_frac = data[\"cropHintsAnnotation\"][\"cropHints\"][0].get(\n                \"importanceFraction\", -1\n            )\n            bounding_importance_fracs.append(bounding_importance_frac)\n            dominant_blue = data[\"imagePropertiesAnnotation\"][\"dominantColors\"][\n                \"colors\"\n            ][0][\"color\"][\"blue\"]\n            dominant_blues.append(dominant_blue)\n            dominant_green = data[\"imagePropertiesAnnotation\"][\"dominantColors\"][\n                \"colors\"\n            ][0][\"color\"][\"green\"]\n            dominant_greens.append(dominant_green)\n            dominant_red = data[\"imagePropertiesAnnotation\"][\"dominantColors\"][\n                \"colors\"\n            ][0][\"color\"][\"red\"]\n            dominant_reds.append(dominant_red)\n            dominant_pixel_frac = data[\"imagePropertiesAnnotation\"][\"dominantColors\"][\n                \"colors\"\n            ][0][\"pixelFraction\"]\n            dominant_pixel_fracs.append(dominant_pixel_frac)\n            dominant_score = data[\"imagePropertiesAnnotation\"][\"dominantColors\"][\n                \"colors\"\n            ][0][\"score\"]\n            dominant_scores.append(dominant_score)\n            if data.get(\"labelAnnotations\"):\n                label_description = data[\"labelAnnotations\"][0][\"description\"]\n                label_descriptions.append(label_description)\n                label_score = data[\"labelAnnotations\"][0][\"score\"]\n                label_scores.append(label_score)\n            else:\n                nl_count += 1\n                label_descriptions.append(\"nothing\")\n                label_scores.append(-1)\n        except FileNotFoundError:\n            nf_count += 1\n            vertex_xs.append(-1)\n            vertex_ys.append(-1)\n            bounding_confidences.append(-1)\n            bounding_importance_fracs.append(-1)\n            dominant_blues.append(-1)\n            dominant_greens.append(-1)\n            dominant_reds.append(-1)\n            dominant_pixel_fracs.append(-1)\n            dominant_scores.append(-1)\n            label_descriptions.append(\"nothing\")\n            label_scores.append(-1)\n    df.loc[:, \"vertex_x\"] = vertex_xs\n    df.loc[:, \"vertex_y\"] = vertex_ys\n    df.loc[:, \"bounding_confidence\"] = bounding_confidences\n    df.loc[:, \"bounding_importance\"] = bounding_importance_fracs\n    df.loc[:, \"dominant_blue\"] = dominant_blues\n    df.loc[:, \"dominant_green\"] = dominant_greens\n    df.loc[:, \"dominant_red\"] = dominant_reds\n    df.loc[:, \"dominant_pixel_frac\"] = dominant_pixel_fracs\n    df.loc[:, \"dominant_score\"] = dominant_scores\n    # df.loc[:, 'label_description'] = label_descriptions\n    df.loc[:, \"label_score\"] = label_scores\n    return df\n\n\ndef open_breeds_info_file(filename):\n    with open(filename, \"r\") as f:\n        breedsdata_file = json.load(f)\n    return breedsdata_file\n\n\ndef parse_sentiment_file(file):\n    df = pd.DataFrame()\n    breeds_file = open_breeds_info_file(file)\n    cat_data, dog_data = breeds_file[\"cat_breeds\"], breeds_file[\"dog_breeds\"]\n    ### Cats\n    for idx, cat_breed in enumerate((cat_data.keys())):\n        temp = pd.DataFrame.from_dict(\n            json_normalize(cat_data[cat_breed]), orient=\"columns\"\n        )\n        temp.insert(0, \"Breed\", cat_breed)\n        for col in temp.columns:\n            if col not in [\"Breed\"]:\n                df.loc[idx, f\"cat_{col}\"] = temp[col].values[0]\n            else:\n                df.loc[idx, f\"{col}\"] = temp[col].values[0]\n    return df\n\n\ndef resize_to_square(im, img_size):\n    old_size = im.shape[:2]  # old_size is in (height, width) format\n    ratio = float(img_size) / max(old_size)\n    new_size = tuple([int(x * ratio) for x in old_size])\n    # new_size should be in (width, height) format\n    im = cv2.resize(im, (new_size[1], new_size[0]))\n    delta_w = img_size - new_size[1]\n    delta_h = img_size - new_size[0]\n    top, bottom = delta_h // 2, delta_h - (delta_h // 2)\n    left, right = delta_w // 2, delta_w - (delta_w // 2)\n    color = [0, 0, 0]\n    new_im = cv2.copyMakeBorder(\n        im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color\n    )\n    return new_im\n\n\ndef load_image(path):\n    image = cv2.imread(path).astype(np.float32)\n    new_image = resize_to_square(image)\n    new_image = preprocess_input(new_image)\n    return new_image\n\n\ndef load_image2(path, image_size):\n    image = cv2.imread(path).astype(np.float32)\n    new_image = resize_to_square(image, image_size)\n    new_image = preprocess_input(new_image)\n    return new_image\n\n\ndef getSize(filename):\n    st = os.stat(filename)\n    return st.st_size\n\n\ndef getDimensions(filename):\n    img_size = Image.open(filename).size\n    return img_size\n\n\ndef meta_nlp_feats(df, col):\n\n    df[col] = df[col].fillna(\"None\")\n    df[\"length\"] = df[col].apply(lambda x: len(x))\n    df[\"capitals\"] = df[col].apply(\n        lambda comment: sum(1 for c in comment if c.isupper())\n    )\n    df[\"caps_vs_length\"] = df.apply(\n        lambda row: float(row[\"capitals\"]) / float(row[\"length\"]), axis=1\n    )\n    df[\"num_exclamation_marks\"] = df[col].apply(lambda comment: comment.count(\"!\"))\n    df[\"num_question_marks\"] = df[col].apply(lambda comment: comment.count(\"?\"))\n    df[\"num_punctuation\"] = df[col].apply(\n        lambda comment: sum(comment.count(w) for w in \".,;:\")\n    )\n    df[\"num_symbols\"] = df[col].apply(\n        lambda comment: sum(comment.count(w) for w in \"*&$%\")\n    )\n    df[\"num_words\"] = df[col].apply(lambda comment: len(comment.split()))\n    df[\"num_unique_words\"] = df[col].apply(\n        lambda comment: len(set(w for w in comment.split()))\n    )\n    df[\"words_vs_unique\"] = df[\"num_unique_words\"] / df[\"num_words\"]\n    df[\"num_smilies\"] = df[col].apply(\n        lambda comment: sum(comment.count(w) for w in (\":-)\", \":)\", \";-)\", \";)\"))\n    )\n    df[\"num_sad\"] = df[col].apply(\n        lambda comment: sum(comment.count(w) for w in (\":-<\", \":()\", \";-()\", \";(\"))\n    )\n\n    return df\n\n\n# ============================== PROCESS IN ORDER ===========================\n\n\ndef load_tabular_data():\n    train = pd.read_csv(\"../input/petfinder-adoption-prediction/train/train.csv\")\n    test = pd.read_csv(\"../input/petfinder-adoption-prediction/test/test.csv\")\n\n    label_metadata = {}\n    labels_breed = pd.read_csv(\n        \"../input/petfinder-adoption-prediction/breed_labels.csv\"\n    )\n    labels_color = pd.read_csv(\n        \"../input/petfinder-adoption-prediction/color_labels.csv\"\n    )\n    labels_state = pd.read_csv(\n        \"../input/petfinder-adoption-prediction/state_labels.csv\"\n    )\n\n    # print(\"Mapping Breed Labels...\")\n    # breed_label_map = {}\n    # for idx, row in (enumerate(labels_breed[['BreedID', 'BreedName']].values)):\n    #     breed_label_map[row[1]] = int(row[0])\n    # temp = parse_sentiment_file('../input/cat-and-dog-breeds-parameters/rating.json')\n    # temp['Breed'] = temp['Breed'].map(breed_label_map)\n    # train = train.merge(temp, how='left', left_on='Breed1', right_on='Breed')\n    # train[temp.columns.tolist()[1:]] = train[temp.columns.tolist()[1:]].fillna(2)\n    # train.drop('Breed', axis=1, inplace=True)\n    # test = test.merge(temp, how='left', left_on='Breed1', right_on='Breed')\n    # test[temp.columns.tolist()[1:]] = test[temp.columns.tolist()[1:]].fillna(2)\n    # test.drop('Breed', axis=1, inplace=True)\n\n    return train, test, labels_state, labels_breed, labels_color\n\n\ndef load_image_data():\n\n    train_image_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/train_images/*.jpg\")\n    )\n    test_image_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/test_images/*.jpg\")\n    )\n\n    train_df_imgs = pd.DataFrame(train_image_files)\n    train_df_imgs.columns = [\"image_filename\"]\n    train_imgs_pets = train_df_imgs[\"image_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    train_df_imgs = train_df_imgs.assign(PetID=train_imgs_pets)\n\n    test_df_imgs = pd.DataFrame(test_image_files)\n    test_df_imgs.columns = [\"image_filename\"]\n    test_imgs_pets = test_df_imgs[\"image_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    test_df_imgs = test_df_imgs.assign(PetID=test_imgs_pets)\n\n    return train_df_imgs, test_df_imgs\n\n\ndef load_metadata():\n\n    train_metadata_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/train_metadata/*.json\")\n    )\n    test_metadata_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/test_metadata/*.json\")\n    )\n\n    train_df_metadata = pd.DataFrame(train_metadata_files)\n    train_df_metadata.columns = [\"metadata_filename\"]\n    train_metadata_pets = train_df_metadata[\"metadata_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    train_df_metadata = train_df_metadata.assign(PetID=train_metadata_pets)\n\n    test_df_metadata = pd.DataFrame(test_metadata_files)\n    test_df_metadata.columns = [\"metadata_filename\"]\n    test_metadata_pets = test_df_metadata[\"metadata_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    test_df_metadata = test_df_metadata.assign(PetID=test_metadata_pets)\n\n    return train_df_metadata, test_df_metadata\n\n\ndef load_sentiment_data():\n    train_sentiment_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/train_sentiment/*.json\")\n    )\n    test_sentiment_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/test_sentiment/*.json\")\n    )\n\n    train_df_sentiment = pd.DataFrame(train_sentiment_files)\n    train_df_sentiment.columns = [\"sentiment_filename\"]\n    train_sentiment_pets = train_df_sentiment[\"sentiment_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\".\")[0]\n    )\n    train_df_sentiment = train_df_sentiment.assign(PetID=train_sentiment_pets)\n\n    test_df_sentiment = pd.DataFrame(test_sentiment_files)\n    test_df_sentiment.columns = [\"sentiment_filename\"]\n    test_sentiment_pets = test_df_sentiment[\"sentiment_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\".\")[0]\n    )\n    test_df_sentiment = test_df_sentiment.assign(PetID=test_sentiment_pets)\n\n    return train_df_sentiment, test_df_sentiment\n\n\ndef build_model(\n    shape=(256, 256, 3),\n    weights_path=\"../input/densenet-keras/DenseNet-BC-121-32-no-top.h5\",\n):\n    inp = Input(shape)\n    backbone = DenseNet121(input_tensor=inp, weights=weights_path, include_top=False)\n    x = backbone.output\n    x = GlobalAveragePooling2D()(x)\n    x = Lambda(lambda x: K.expand_dims(x, axis=-1))(x)\n    x = AveragePooling1D(4)(x)\n    out = Lambda(lambda x: x[:, :, 0])(x)\n    model = Model(inp, out)\n    return model\n\n\ndef train_model(model, train, test, nn_params={\"batch_size\": 64, \"img_size\": 256}):\n    batch_size = nn_params[\"batch_size\"]\n    img_size = nn_params[\"img_size\"]\n    pet_ids = train[\"PetID\"].values\n    train_df_ids = train[[\"PetID\"]]\n\n    # Train images\n    features = {}\n    train_image = glob.glob(\"../input/petfinder-adoption-prediction/train_images/*.jpg\")\n    n_batches = len(train_image) // batch_size + (len(train_image) % batch_size != 0)\n    for b in range(n_batches):\n        start = b * batch_size\n        end = (b + 1) * batch_size\n        batch_pets = train_image[start:end]\n        batch_images = np.zeros((len(batch_pets), img_size, img_size, 3))\n        for i, pet_id in enumerate(batch_pets):\n            try:\n                batch_images[i] = load_image(pet_id)\n            except:\n                pass\n        batch_preds = model.predict(batch_images)\n        for i, pet_id in enumerate(batch_pets):\n            features[pet_id] = batch_preds[i]\n\n    train_feats = pd.DataFrame.from_dict(features, orient=\"index\")\n    train_feats.columns = [\"pic_\" + str(i) for i in range(train_feats.shape[1])]\n\n    train_feats = train_feats.reset_index()\n    train_feats[\"PetID\"] = train_feats[\"index\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    train_feats = train_feats.drop(\"index\", axis=1)\n    train_feats = train_feats.groupby(\"PetID\").agg(\"mean\")\n    train_feats = train_feats.reset_index()\n\n    # Test images\n    features = {}\n\n    test_image = glob.glob(\"../input/petfinder-adoption-prediction/test_images/*.jpg\")\n    n_batches = len(test_image) // batch_size + (len(test_image) % batch_size != 0)\n    for b in range(n_batches):\n        start = b * batch_size\n        end = (b + 1) * batch_size\n        batch_pets = test_image[start:end]\n        batch_images = np.zeros((len(batch_pets), img_size, img_size, 3))\n        for i, pet_id in enumerate(batch_pets):\n            try:\n                batch_images[i] = load_image(pet_id)\n            except:\n                pass\n        batch_preds = model.predict(batch_images)\n        for i, pet_id in enumerate(batch_pets):\n            features[pet_id] = batch_preds[i]\n\n    test_feats = pd.DataFrame.from_dict(features, orient=\"index\")\n    test_feats.columns = [\"pic_\" + str(i) for i in range(test_feats.shape[1])]\n\n    test_feats = test_feats.reset_index()\n    test_feats[\"PetID\"] = test_feats[\"index\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    test_feats = test_feats.drop(\"index\", axis=1)\n    test_feats = test_feats.groupby(\"PetID\").agg(\"mean\")\n    test_feats = test_feats.reset_index()\n    pretrained_feats = pd.concat([train_feats, test_feats], axis=0)\n\n    return pretrained_feats\n\n\ndef image_feature(model, train, test, nn_params={\"batch_size\": 64, \"img_size\": 256}):\n    if not preload:\n        batch_size = nn_params[\"batch_size\"]\n        img_size = nn_params[\"img_size\"]\n        train_df_ids = train[[\"PetID\"]]\n\n        # Train images\n        features = {}\n        train_image = glob.glob(\n            \"../input/petfinder-adoption-prediction/train_images/*.jpg\"\n        )\n        n_batches = len(train_image) // batch_size + 1\n        for b in range(n_batches):\n            start = b * batch_size\n            end = (b + 1) * batch_size\n            batch_pets = train_image[start:end]\n            batch_images = np.zeros((len(batch_pets), img_size, img_size, 3))\n            for i, pet_id in enumerate(batch_pets):\n                try:\n                    batch_images[i] = load_image2(pet_id, img_size)\n                except:\n                    print(pet_id)\n                    pass\n            batch_preds = model.predict(batch_images)\n            for i, pet_id in enumerate(batch_pets):\n                features[pet_id] = batch_preds[i]\n\n        train_feats = pd.DataFrame.from_dict(features, orient=\"index\")\n        train_feats.columns = [\"pic_\" + str(i) for i in range(train_feats.shape[1])]\n\n        train_feats = train_feats.reset_index()\n        train_feats[\"PetID\"] = train_feats[\"index\"].apply(\n            lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n        )\n        train_feats = train_feats.drop(\"index\", axis=1)\n        train_feats = train_feats.groupby(\"PetID\").agg(\"mean\")\n        train_feats = train_feats.reset_index()\n\n        # Test images\n        features = {}\n\n        test_image = glob.glob(\n            \"../input/petfinder-adoption-prediction/test_images/*.jpg\"\n        )\n        n_batches = len(test_image) // batch_size + 1\n        for b in range(n_batches):\n            start = b * batch_size\n            end = (b + 1) * batch_size\n            batch_pets = test_image[start:end]\n            batch_images = np.zeros((len(batch_pets), img_size, img_size, 3))\n            for i, pet_id in enumerate(batch_pets):\n                try:\n                    batch_images[i] = load_image2(pet_id, img_size)\n                except:\n                    print(pet_id)\n                    pass\n            batch_preds = model.predict(batch_images)\n            for i, pet_id in enumerate(batch_pets):\n                features[pet_id] = batch_preds[i]\n\n        test_feats = pd.DataFrame.from_dict(features, orient=\"index\")\n        test_feats.columns = [\"pic_\" + str(i) for i in range(test_feats.shape[1])]\n\n        test_feats = test_feats.reset_index()\n        test_feats[\"PetID\"] = test_feats[\"index\"].apply(\n            lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n        )\n        test_feats = test_feats.drop(\"index\", axis=1)\n        test_feats = test_feats.groupby(\"PetID\").agg(\"mean\")\n        test_feats = test_feats.reset_index()\n        pretrained_feats = pd.concat([train_feats, test_feats], axis=0)\n    else:\n        train_feats = pd.read_csv(\"./processed_data/train_img.csv\")\n        test_feats = pd.read_csv(\"./processed_data/test_img.csv\")\n        pretrained_feats = pd.concat([train_feats, test_feats], axis=0)\n\n    return pretrained_feats\n\n\ndef basic_features(train, test):\n\n    alldata = pd.concat([train, test], sort=False)\n    print(train.shape, test.shape, alldata.shape)\n    #########################################################################################################\n    # Breed create columns\n    alldata[\"weeks\"] = alldata[\"Age\"] * 31 // 7\n    alldata[\"L_Breed1_Siamese\"] = (alldata[\"Breed1\"] == 292).astype(int)\n    alldata[\"L_Breed1_Persian\"] = (alldata[\"Breed1\"] == 285).astype(int)\n    alldata[\"L_Breed1_Labrador_Retriever\"] = (alldata[\"Breed1\"] == 141).astype(int)\n    alldata[\"L_Breed1_Terrier\"] = (alldata[\"Breed1\"] == 218).astype(int)\n    alldata[\"L_Breed1_Golden_Retriever \"] = (alldata[\"Breed1\"] == 109).astype(int)\n    alldata[\"shorthair_hairless_domestic_hair\"] = 0\n    alldata.loc[\n        alldata[\"Breed1\"].isin(\n            [\n                9,\n                104,\n                106,\n                236,\n                237,\n                238,\n                243,\n                244,\n                251,\n                255,\n                264,\n                265,\n                266,\n                268,\n                282,\n                283,\n                298,\n            ]\n        )\n        == True,\n        \"shorthair_hairless_domestic_hair\",\n    ] = 1\n\n    alldata[\"#Feature_avg_age_breed1_fee\"] = (\n        alldata[[\"Age\", \"Breed1\", \"Fee\"]]\n        .groupby([\"Age\", \"Breed1\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_avg_age_breed2_fee\"] = (\n        alldata[[\"Age\", \"Breed2\", \"Fee\"]]\n        .groupby([\"Age\", \"Breed2\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_age_breed1_maturity_sz\"] = (\n        alldata[[\"Age\", \"Breed1\", \"MaturitySize\"]]\n        .groupby([\"Age\", \"Breed1\"])[\"MaturitySize\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_breed2_maturity_sz\"] = (\n        alldata[[\"Age\", \"Breed2\", \"MaturitySize\"]]\n        .groupby([\"Age\", \"Breed2\"])[\"MaturitySize\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n\n    alldata[\"#Feature_age_breed1_fur\"] = (\n        alldata[[\"Age\", \"Breed1\", \"FurLength\"]]\n        .groupby([\"Age\", \"Breed1\"])[\"FurLength\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_breed2_fur\"] = (\n        alldata[[\"Age\", \"Breed2\", \"FurLength\"]]\n        .groupby([\"Age\", \"Breed2\"])[\"FurLength\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_breed1_fee\"] = (\n        alldata[[\"Age\", \"Breed1\", \"Fee\"]]\n        .groupby([\"Age\", \"Breed1\"])[\"Fee\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_breed2_fee\"] = (\n        alldata[[\"Age\", \"Breed2\", \"Fee\"]]\n        .groupby([\"Age\", \"Breed2\"])[\"Fee\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n\n    alldata[\"#Feature_state_breed1_age_freq\"] = (\n        alldata[[\"State\", \"Breed1\", \"Age\"]]\n        .groupby([\"State\", \"Breed1\"])[\"Age\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_breed1_age_fee_freq\"] = (\n        alldata[[\"State\", \"Breed1\", \"Age\", \"Fee\"]]\n        .groupby([\"State\", \"Breed1\", \"Age\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_breed2_age_freq\"] = (\n        alldata[[\"State\", \"Breed2\", \"Age\"]]\n        .groupby([\"State\", \"Breed2\"])[\"Age\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_breed2_age_fee_freq\"] = (\n        alldata[[\"State\", \"Breed2\", \"Age\", \"Fee\"]]\n        .groupby([\"State\", \"Breed2\", \"Age\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n\n    alldata[\"#Feature_avg_type_age_breed1_fee\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed1\", \"Fee\"]]\n        .groupby([\"Type\", \"Age\", \"Breed1\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_avg_type_age_breed2_fee\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed2\", \"Fee\"]]\n        .groupby([\"Type\", \"Age\", \"Breed2\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_age_type_breed1_maturity_sz\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed1\", \"MaturitySize\"]]\n        .groupby([\"Type\", \"Age\", \"Breed1\"])[\"MaturitySize\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_type_breed2_maturity_sz\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed2\", \"MaturitySize\"]]\n        .groupby([\"Type\", \"Age\", \"Breed2\"])[\"MaturitySize\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n\n    alldata[\"#Feature_age_type_breed1_fur\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed1\", \"FurLength\"]]\n        .groupby([\"Type\", \"Age\", \"Breed1\"])[\"FurLength\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_type_breed2_fur\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed2\", \"FurLength\"]]\n        .groupby([\"Type\", \"Age\", \"Breed2\"])[\"FurLength\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_type_breed1_fee\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed1\", \"Fee\"]]\n        .groupby([\"Type\", \"Age\", \"Breed1\"])[\"Fee\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n    alldata[\"#Feature_age_type_breed2_fee\"] = (\n        alldata[[\"Type\", \"Age\", \"Breed2\", \"Fee\"]]\n        .groupby([\"Type\", \"Age\", \"Breed2\"])[\"Fee\"]\n        .transform(\"count\")\n        / alldata.shape[0]\n    )\n\n    alldata[\"#Feature_state_type_breed1_age_freq\"] = (\n        alldata[[\"Type\", \"State\", \"Breed1\", \"Age\"]]\n        .groupby([\"Type\", \"State\", \"Breed1\"])[\"Age\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_type_breed1_age_fee_freq\"] = (\n        alldata[[\"Type\", \"State\", \"Breed1\", \"Age\", \"Fee\"]]\n        .groupby([\"Type\", \"State\", \"Breed1\", \"Age\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_type_breed2_age_freq\"] = (\n        alldata[[\"Type\", \"State\", \"Breed2\", \"Age\"]]\n        .groupby([\"Type\", \"State\", \"Breed2\"])[\"Age\"]\n        .transform(\"mean\")\n    )\n    alldata[\"#Feature_state_type_breed2_age_fee_freq\"] = (\n        alldata[[\"Type\", \"State\", \"Breed2\", \"Age\", \"Fee\"]]\n        .groupby([\"Type\", \"State\", \"Breed2\", \"Age\"])[\"Fee\"]\n        .transform(\"mean\")\n    )\n\n    ###########################################################################################################\n\n    alldata[\"RelAge\"] = alldata[[\"Type\", \"Age\"]].apply(relative_age, axis=1)\n    alldata[\"IsNameGenuine\"] = alldata[[\"Name\", \"Quantity\"]].apply(genuine_name, axis=1)\n    alldata[\"InstaFeature\"] = alldata[[\"PhotoAmt\", \"VideoAmt\"]].apply(seo_value, axis=1)\n    alldata[\"ShowsMore\"] = alldata[\"PhotoAmt\"].apply(VerifibalePhotoAmy)\n    alldata[\"Vaccinated_Deworked_Mutation\"] = (\n        alldata[\"Vaccinated\"].apply(str) + \"_\" + alldata[\"Dewormed\"].apply(str)\n    )\n    alldata[\"Vaccinated_Deworked_Mutation\"] = (\n        alldata[\"Vaccinated\"].apply(str) + \"_\" + alldata[\"Dewormed\"].apply(str)\n    )\n    alldata = pd.get_dummies(\n        alldata, columns=[\"Vaccinated_Deworked_Mutation\"], prefix=\"Vaccinated_Dewormed\"\n    )\n    alldata[\"GlobalInstaRank\"] = alldata[\"InstaFeature\"].rank(method=\"max\")\n    print(\">> Ranking Features By State\")\n    alldata = rankbyG(alldata, \"State\")\n    print(\">> Ranking Features By Animal\")\n    alldata = rankbyG(alldata, \"Type\")\n    print(\">> Ranking Features By Breed1\")\n    alldata = rankbyG(alldata, \"Breed1\")\n    print(\">> Ranking Features By Gender\")\n    alldata = rankbyG(alldata, \"Gender\")\n\n    top_dogs = [179, 205, 195, 178, 206, 109, 189, 103]\n    top_cats = [276, 268, 285, 252, 243, 251, 288, 247, 280, 290]\n\n    alldata[\"#Feature_SecondaryColors\"] = alldata[\"Color2\"] + alldata[\"Color3\"]\n    alldata[\"#Feature_MonoColor\"] = np.where(alldata[\"#Feature_SecondaryColors\"], 1, 0)\n    alldata[\"top_breeds\"] = 0\n    alldata.loc[alldata[\"Breed1\"].isin(top_dogs + top_cats) == True, \"top_breeds\"] = 1\n    alldata[\"top_breed_free\"] = 0\n    alldata.loc[\n        alldata[(alldata[\"Fee\"] == 0) & (alldata[\"top_breeds\"] == 1)].index,\n        \"top_breed_free\",\n    ] = 1\n    alldata[\"free_pet\"] = 0\n    alldata.loc[alldata[alldata[\"Fee\"] == 0].index, \"free_pet\"] = 1\n    alldata[\"free_pet_age_1\"] = 0\n    alldata.loc[\n        alldata[(alldata[\"Fee\"] == 0) & (alldata[\"Age\"] == 1)].index, \"free_pet_age_1\"\n    ] = 1\n    alldata[\"year\"] = alldata[\"Age\"] / 12.0\n    alldata[\"#Feature_less_a_year\"] = np.where(alldata[\"Age\"] < 12, 1, 0)\n    alldata[\"#Feature_top_2_states\"] = 0\n    alldata.loc[\n        alldata[\"State\"].isin([41326, 41401]) == True, \"#Feature_top_2_states\"\n    ] = 1\n    alldata[\"#Feature_age_exact\"] = 0\n    alldata.loc[\n        alldata[\"Age\"].isin([12, 24, 36, 48, 60, 72, 84, 96, 108]) == True,\n        \"#Feature_age_exact\",\n    ] = 1\n    alldata[\"#Feature_isLonely\"] = np.where(alldata[\"Quantity\"] > 1, 1, 0)\n    alldata[\"total_img_video\"] = alldata[\"PhotoAmt\"] + alldata[\"VideoAmt\"]\n\n    # alldata['#Feature_avg_age_breed1_fee'] = alldata[['Age', 'Breed1', 'Fee']].groupby(['Age', 'Breed1'])[\n    #     'Fee'].transform('mean')\n    # alldata['#Feature_avg_age_breed2_fee'] = alldata[['Age', 'Breed2', 'Fee']].groupby(['Age', 'Breed2'])[\n    #     'Fee'].transform('mean')\n    # alldata['#Feature_age_breed1_maturity_sz'] = alldata[['Age', 'Breed1', 'MaturitySize']].groupby(['Age', 'Breed1'])[\n    #                                                  'MaturitySize'].transform('count') / alldata.shape[0]\n    # alldata['#Feature_age_breed2_maturity_sz'] = alldata[['Age', 'Breed2', 'MaturitySize']].groupby(['Age', 'Breed2'])[\n    #                                                  'MaturitySize'].transform('count') / alldata.shape[0]\n    # alldata['#Feature_age_breed1_fur'] = alldata[['Age', 'Breed1', 'FurLength']].groupby(['Age', 'Breed1'])[\n    #                                          'FurLength'].transform('count') / alldata.shape[0]\n    # alldata['#Feature_age_breed2_fur'] = alldata[['Age', 'Breed2', 'FurLength']].groupby(['Age', 'Breed2'])[\n    #                                          'FurLength'].transform('count') / alldata.shape[0]\n    # alldata['#Feature_age_breed1_fee'] = alldata[['Age', 'Breed1', 'Fee']].groupby(['Age', 'Breed1'])['Fee'].transform(\n    #     'count') / alldata.shape[0]\n    # alldata['#Feature_age_breed2_fee'] = alldata[['Age', 'Breed2', 'Fee']].groupby(['Age', 'Breed2'])['Fee'].transform(\n    #     'count') / alldata.shape[0]\n    # alldata['#Feature_state_breed1_age_freq'] = alldata[['State', 'Breed1', 'Age']].groupby(['State', 'Breed1'])[\n    #     'Age'].transform('mean')\n    # alldata['#Feature_state_breed1_age_fee_freq'] = \\\n    # alldata[['State', 'Breed1', 'Age', 'Fee']].groupby(['State', 'Breed1', 'Age'])['Fee'].transform('mean')\n    # alldata['#Feature_state_breed2_age_freq'] = alldata[['State', 'Breed2', 'Age']].groupby(['State', 'Breed2'])[\n    #     'Age'].transform('mean')\n    # alldata['#Feature_state_breed2_age_fee_freq'] = \\\n    # alldata[['State', 'Breed2', 'Age', 'Fee']].groupby(['State', 'Breed2', 'Age'])['Fee'].transform('mean')\n\n    # Clean the name\n    # alldata['Name'] = alldata['Name'].apply(lambda x: clean_name(x))\n    # alldata['Name'] = alldata['Name'].fillna(\"No Name\")\n\n    rescuer_count = alldata.groupby([\"RescuerID\"])[\"PetID\"].count().reset_index()\n    rescuer_count.columns = [\"RescuerID\", \"RescuerID_COUNT\"]\n    alldata = alldata.merge(rescuer_count, how=\"left\", on=\"RescuerID\")\n\n    Description_count = alldata.groupby([\"Description\"])[\"PetID\"].count().reset_index()\n    Description_count.columns = [\"Description\", \"Description_COUNT\"]\n    alldata = alldata.merge(Description_count, how=\"left\", on=\"Description\")\n\n    Name_count = alldata.groupby([\"Name\"])[\"PetID\"].count().reset_index()\n    Name_count.columns = [\"Name\", \"Name_COUNT\"]\n    alldata = alldata.merge(Name_count, how=\"left\", on=\"Name\")\n\n    agg = {}\n    agg[\"Quantity\"] = [\"mean\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Fee\"] = [\"mean\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Age\"] = [\"mean\", \"sum\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Breed1\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Breed2\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Type\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Gender\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Color1\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Color2\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Color3\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"MaturitySize\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"FurLength\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Vaccinated\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Sterilized\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"Health\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"PhotoAmt\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n    agg[\"RelAge\"] = [\"nunique\", \"var\", \"max\", \"min\", \"skew\", \"median\"]\n\n    # RescuerID\n    grouby = \"RescuerID\"\n    agg_df = agg_features(alldata, grouby, agg, grouby)\n    alldata = alldata.merge(agg_df, on=grouby, how=\"left\")\n\n    agg_kurt_df = alldata.groupby(grouby)[list(agg.keys())].apply(pd.DataFrame.kurt)\n    agg_kurt_df.columns = [f\"{key}_kurt\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_kurt_df, on=grouby, how=\"left\")\n\n    agg_perc_df = alldata.groupby(grouby)[list(agg.keys())].quantile(0.25)\n    agg_perc_df.columns = [f\"{key}_perc_25\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_perc_df, on=grouby, how=\"left\")\n\n    agg_perc_df = alldata.groupby(grouby)[list(agg.keys())].quantile(0.75)\n    agg_perc_df.columns = [f\"{key}_perc_75\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_perc_df, on=grouby, how=\"left\")\n\n    # State\n\n    ################################################CREATING MULTIPLE COLUMNS WITH_X NEED TO BE FIXED\n    grouby = \"State\"\n    agg_df = agg_features(alldata, grouby, agg, grouby)\n    alldata = alldata.merge(agg_df, on=grouby, how=\"left\")\n\n    agg_kurt_df = alldata.groupby(grouby)[list(agg.keys())].apply(pd.DataFrame.kurt)\n    agg_kurt_df.columns = [f\"{key}_kurt\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_kurt_df, on=grouby, how=\"left\")\n\n    agg_perc_df = alldata.groupby(grouby)[list(agg.keys())].quantile(0.25)\n    agg_perc_df.columns = [f\"{key}_perc_25\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_perc_df, on=grouby, how=\"left\")\n\n    agg_perc_df = alldata.groupby(grouby)[list(agg.keys())].quantile(0.75)\n    agg_perc_df.columns = [f\"{key}_perc_75\" for key in list(agg.keys())]\n    alldata = alldata.merge(agg_perc_df, on=grouby, how=\"left\")\n\n    train = alldata[: len(train)]\n    test = alldata[len(train) :]\n\n    return train, test\n\n\ndef image_dim_features(train, test):\n    # Load IDs and Image data\n    # ===========================================\n    split_char = \"/\"\n    train_df_ids = train[[\"PetID\"]]\n    test_df_ids = test[[\"PetID\"]]\n\n    train_image_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/train_images/*.jpg\")\n    )\n    test_image_files = sorted(\n        glob.glob(\"../input/petfinder-adoption-prediction/test_images/*.jpg\")\n    )\n\n    train_df_imgs = pd.DataFrame(train_image_files)\n    train_df_imgs.columns = [\"image_filename\"]\n    train_imgs_pets = train_df_imgs[\"image_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    train_df_imgs = train_df_imgs.assign(PetID=train_imgs_pets)\n\n    test_df_imgs = pd.DataFrame(test_image_files)\n    test_df_imgs.columns = [\"image_filename\"]\n    test_imgs_pets = test_df_imgs[\"image_filename\"].apply(\n        lambda x: x.split(\"/\")[-1].split(\"-\")[0]\n    )\n    test_df_imgs = test_df_imgs.assign(PetID=test_imgs_pets)\n\n    # ===========================================\n\n    train_df_imgs[\"image_size\"] = train_df_imgs[\"image_filename\"].apply(getSize)\n    train_df_imgs[\"temp_size\"] = train_df_imgs[\"image_filename\"].apply(getDimensions)\n    train_df_imgs[\"width\"] = train_df_imgs[\"temp_size\"].apply(lambda x: x[0])\n    train_df_imgs[\"height\"] = train_df_imgs[\"temp_size\"].apply(lambda x: x[1])\n    train_df_imgs = train_df_imgs.drop([\"temp_size\"], axis=1)\n\n    test_df_imgs[\"image_size\"] = test_df_imgs[\"image_filename\"].apply(getSize)\n    test_df_imgs[\"temp_size\"] = test_df_imgs[\"image_filename\"].apply(getDimensions)\n    test_df_imgs[\"width\"] = test_df_imgs[\"temp_size\"].apply(lambda x: x[0])\n    test_df_imgs[\"height\"] = test_df_imgs[\"temp_size\"].apply(lambda x: x[1])\n    test_df_imgs = test_df_imgs.drop([\"temp_size\"], axis=1)\n\n    aggs = {\n        \"image_size\": [\"sum\", \"mean\", \"var\"],\n        \"width\": [\"sum\", \"mean\", \"var\"],\n        \"height\": [\"sum\", \"mean\", \"var\"],\n    }\n\n    agg_train_imgs = train_df_imgs.groupby(\"PetID\").agg(aggs)\n    new_columns = [k + \"_\" + agg for k in aggs.keys() for agg in aggs[k]]\n    agg_train_imgs.columns = new_columns\n    agg_train_imgs = agg_train_imgs.reset_index()\n\n    agg_test_imgs = test_df_imgs.groupby(\"PetID\").agg(aggs)\n    new_columns = [k + \"_\" + agg for k in aggs.keys() for agg in aggs[k]]\n    agg_test_imgs.columns = new_columns\n    agg_test_imgs = agg_test_imgs.reset_index()\n\n    agg_imgs = pd.concat([agg_train_imgs, agg_test_imgs], axis=0).reset_index(drop=True)\n    return agg_imgs\n\n\ndef metadata_features(train, test):\n\n    if not preload:\n        train_pet_ids = train.PetID.unique()\n        test_pet_ids = test.PetID.unique()\n\n        # Train Feature Extractions\n        # ===============================\n\n        dfs_train = Parallel(n_jobs=12, verbose=1)(\n            delayed(extract_additional_features)(i, mode=\"train\") for i in train_pet_ids\n        )\n        train_dfs_sentiment = [\n            x[0] for x in dfs_train if isinstance(x[0], pd.DataFrame)\n        ]\n        train_dfs_metadata = [x[1] for x in dfs_train if isinstance(x[1], pd.DataFrame)]\n        train_dfs_sentiment = pd.concat(\n            train_dfs_sentiment, ignore_index=True, sort=False\n        )\n        train_dfs_metadata = pd.concat(\n            train_dfs_metadata, ignore_index=True, sort=False\n        )\n\n        # Test Feature Extractions\n        # ===============================\n        dfs_test = Parallel(n_jobs=6, verbose=1)(\n            delayed(extract_additional_features)(i, mode=\"test\") for i in test_pet_ids\n        )\n        test_dfs_sentiment = [x[0] for x in dfs_test if isinstance(x[0], pd.DataFrame)]\n        test_dfs_metadata = [x[1] for x in dfs_test if isinstance(x[1], pd.DataFrame)]\n        test_dfs_sentiment = pd.concat(\n            test_dfs_sentiment, ignore_index=True, sort=False\n        )\n        test_dfs_metadata = pd.concat(test_dfs_metadata, ignore_index=True, sort=False)\n\n    else:\n        train_dfs_sentiment = pd.read_csv(\"./processed_data/train_dfs_sentiment.csv\")\n        train_dfs_metadata = pd.read_csv(\"./processed_data/train_dfs_metadata.csv\")\n        test_dfs_sentiment = pd.read_csv(\"./processed_data/test_dfs_sentiment.csv\")\n        test_dfs_metadata = pd.read_csv(\"./processed_data/test_dfs_metadata.csv\")\n\n        train_dfs_sentiment[\"sentiment_entities\"].fillna(\"\", inplace=True)\n        train_dfs_metadata[\"metadata_annots_top_desc\"].fillna(\"\", inplace=True)\n        test_dfs_sentiment[\"sentiment_entities\"].fillna(\"\", inplace=True)\n        test_dfs_metadata[\"metadata_annots_top_desc\"].fillna(\"\", inplace=True)\n\n    # Meta data Aggregates\n    # ===============================\n    aggregates = [\"mean\", \"sum\", \"var\"]\n\n    # Train Aggregates\n    # ---------------------------\n    train_metadata_desc = train_dfs_metadata.groupby([\"PetID\"])[\n        \"metadata_annots_top_desc\"\n    ].unique()\n    train_metadata_desc = train_metadata_desc.reset_index()\n    train_metadata_desc[\"metadata_annots_top_desc\"] = train_metadata_desc[\n        \"metadata_annots_top_desc\"\n    ].apply(lambda x: \" \".join(x.tolist()))\n\n    prefix = \"metadata\"\n    train_metadata_gr = train_dfs_metadata.drop([\"metadata_annots_top_desc\"], axis=1)\n    for i in train_metadata_gr.columns:\n        if \"PetID\" not in i:\n            train_metadata_gr[i] = train_metadata_gr[i].astype(float)\n    train_metadata_gr = train_metadata_gr.groupby([\"PetID\"]).agg(aggregates)\n    train_metadata_gr.columns = pd.Index(\n        [\n            \"{}_{}_{}\".format(prefix, c[0], c[1].upper())\n            for c in train_metadata_gr.columns.tolist()\n        ]\n    )\n    train_metadata_gr = train_metadata_gr.reset_index()\n\n    train_sentiment_desc = train_dfs_sentiment.groupby([\"PetID\"])[\n        \"sentiment_entities\"\n    ].unique()\n    train_sentiment_desc = train_sentiment_desc.reset_index()\n    train_sentiment_desc[\"sentiment_entities\"] = train_sentiment_desc[\n        \"sentiment_entities\"\n    ].apply(lambda x: \" \".join(x.tolist()))\n\n    prefix = \"sentiment\"\n    train_sentiment_gr = train_dfs_sentiment.drop([\"sentiment_entities\"], axis=1)\n    for i in train_sentiment_gr.columns:\n        if \"PetID\" not in i:\n            train_sentiment_gr[i] = train_sentiment_gr[i].astype(float)\n    train_sentiment_gr = train_sentiment_gr.groupby([\"PetID\"]).agg(aggregates)\n    train_sentiment_gr.columns = pd.Index(\n        [\n            \"{}_{}_{}\".format(prefix, c[0], c[1].upper())\n            for c in train_sentiment_gr.columns.tolist()\n        ]\n    )\n    train_sentiment_gr = train_sentiment_gr.reset_index()\n\n    # Test data Aggregates\n    # ---------------------------\n    test_metadata_desc = test_dfs_metadata.groupby([\"PetID\"])[\n        \"metadata_annots_top_desc\"\n    ].unique()\n    test_metadata_desc = test_metadata_desc.reset_index()\n    test_metadata_desc[\"metadata_annots_top_desc\"] = test_metadata_desc[\n        \"metadata_annots_top_desc\"\n    ].apply(lambda x: \" \".join(x.tolist()))\n\n    prefix = \"metadata\"\n    test_metadata_gr = test_dfs_metadata.drop([\"metadata_annots_top_desc\"], axis=1)\n    for i in test_metadata_gr.columns:\n        if \"PetID\" not in i:\n            test_metadata_gr[i] = test_metadata_gr[i].astype(float)\n    test_metadata_gr = test_metadata_gr.groupby([\"PetID\"]).agg(aggregates)\n    test_metadata_gr.columns = pd.Index(\n        [\n            \"{}_{}_{}\".format(prefix, c[0], c[1].upper())\n            for c in test_metadata_gr.columns.tolist()\n        ]\n    )\n    test_metadata_gr = test_metadata_gr.reset_index()\n\n    test_sentiment_desc = test_dfs_sentiment.groupby([\"PetID\"])[\n        \"sentiment_entities\"\n    ].unique()\n    test_sentiment_desc = test_sentiment_desc.reset_index()\n    test_sentiment_desc[\"sentiment_entities\"] = test_sentiment_desc[\n        \"sentiment_entities\"\n    ].apply(lambda x: \" \".join(x.tolist()))\n\n    prefix = \"sentiment\"\n    test_sentiment_gr = test_dfs_sentiment.drop([\"sentiment_entities\"], axis=1)\n    for i in test_sentiment_gr.columns:\n        if \"PetID\" not in i:\n            test_sentiment_gr[i] = test_sentiment_gr[i].astype(float)\n    test_sentiment_gr = test_sentiment_gr.groupby([\"PetID\"]).agg(aggregates)\n    test_sentiment_gr.columns = pd.Index(\n        [\n            \"{}_{}_{}\".format(prefix, c[0], c[1].upper())\n            for c in test_sentiment_gr.columns.tolist()\n        ]\n    )\n    test_sentiment_gr = test_sentiment_gr.reset_index()\n\n    # Mergining Features with Train/Test\n    # =======================================\n    train_proc = train.copy()\n    train_proc = train_proc.merge(train_sentiment_gr, how=\"left\", on=\"PetID\")\n    train_proc = train_proc.merge(train_metadata_gr, how=\"left\", on=\"PetID\")\n    train_proc = train_proc.merge(train_metadata_desc, how=\"left\", on=\"PetID\")\n    train_proc = train_proc.merge(train_sentiment_desc, how=\"left\", on=\"PetID\")\n\n    test_proc = test.copy()\n    test_proc = test_proc.merge(test_sentiment_gr, how=\"left\", on=\"PetID\")\n    test_proc = test_proc.merge(test_metadata_gr, how=\"left\", on=\"PetID\")\n    test_proc = test_proc.merge(test_metadata_desc, how=\"left\", on=\"PetID\")\n    test_proc = test_proc.merge(test_sentiment_desc, how=\"left\", on=\"PetID\")\n\n    return train_proc, test_proc\n\n\ndef breed_maps(train_proc, test_proc, labels_breed):\n    train_breed_main = train_proc[[\"Breed1\"]].merge(\n        labels_breed,\n        how=\"left\",\n        left_on=\"Breed1\",\n        right_on=\"BreedID\",\n        suffixes=(\"\", \"_main_breed\"),\n    )\n    train_breed_main = train_breed_main.iloc[:, 2:]\n    train_breed_main = train_breed_main.add_prefix(\"main_breed_\")\n    train_breed_second = train_proc[[\"Breed2\"]].merge(\n        labels_breed,\n        how=\"left\",\n        left_on=\"Breed2\",\n        right_on=\"BreedID\",\n        suffixes=(\"\", \"_second_breed\"),\n    )\n    train_breed_second = train_breed_second.iloc[:, 2:]\n    train_breed_second = train_breed_second.add_prefix(\"second_breed_\")\n    train_proc = pd.concat([train_proc, train_breed_main, train_breed_second], axis=1)\n    test_breed_main = test_proc[[\"Breed1\"]].merge(\n        labels_breed,\n        how=\"left\",\n        left_on=\"Breed1\",\n        right_on=\"BreedID\",\n        suffixes=(\"\", \"_main_breed\"),\n    )\n    test_breed_main = test_breed_main.iloc[:, 2:]\n    test_breed_main = test_breed_main.add_prefix(\"main_breed_\")\n    test_breed_second = test_proc[[\"Breed2\"]].merge(\n        labels_breed,\n        how=\"left\",\n        left_on=\"Breed2\",\n        right_on=\"BreedID\",\n        suffixes=(\"\", \"_second_breed\"),\n    )\n    test_breed_second = test_breed_second.iloc[:, 2:]\n    test_breed_second = test_breed_second.add_prefix(\"second_breed_\")\n    test_proc = pd.concat([test_proc, test_breed_main, test_breed_second], axis=1)\n    X = pd.concat([train_proc, test_proc], ignore_index=True, sort=False)\n    categorical_columns = [\"main_breed_BreedName\", \"second_breed_BreedName\"]\n\n    for i in categorical_columns:\n        X.loc[:, i] = pd.factorize(X.loc[:, i])[0]\n    return X\n\n\ndef nlp_features(X_temp):\n    text_columns = [\"Description\", \"metadata_annots_top_desc\", \"sentiment_entities\"]\n    X_text = X_temp[text_columns]\n\n    for i in X_text.columns:\n        X_text.loc[:, i] = X_text.loc[:, i].fillna(\"<MISSING>\")\n\n    n_components = 50\n    text_features = []\n\n    # Generate text features:\n    for i in X_text.columns:\n        # Initialize decomposition methods:\n        print(\"Generating features from: {}\".format(i))\n        svd_ = TruncatedSVD(n_components=n_components, random_state=1337)\n        nmf_ = NMF(n_components=n_components, random_state=1337)\n        tfidf_col = TfidfVectorizer().fit_transform(X_text.loc[:, i].values)\n        svd_col = svd_.fit_transform(tfidf_col)\n        svd_col = pd.DataFrame(svd_col)\n        svd_col = svd_col.add_prefix(\"SVD_{}_\".format(i))\n        nmf_col = nmf_.fit_transform(tfidf_col)\n        nmf_col = pd.DataFrame(nmf_col)\n        nmf_col = nmf_col.add_prefix(\"NMF_{}_\".format(i))\n        text_features.append(svd_col)\n        text_features.append(nmf_col)\n\n    # Combine all extracted features:\n    text_features = pd.concat(text_features, axis=1)\n    # Concatenate with main DF:\n    X_temp = pd.concat([X_temp, text_features], axis=1)\n    # Remove raw text columns:\n    for i in X_text.columns:\n        X_temp = X_temp.drop(i, axis=1)\n    # Remove unnecessary columns:\n    to_drop_columns = [\"PetID\", \"Name\"]\n    X_temp = X_temp.drop(to_drop_columns, axis=1)\n\n    return X_temp\n\n\ndef run_lgbm(X_temp, test):\n    params = {\n        \"application\": \"regression\",\n        \"boosting\": \"gbdt\",\n        \"metric\": \"rmse\",\n        \"num_leaves\": 70,\n        \"max_depth\": 9,\n        \"learning_rate\": 0.01,\n        \"bagging_fraction\": 0.6,  # .85 previously\n        \"feature_fraction\": 0.6,  # .8 previously\n        \"min_split_gain\": 0.02,\n        \"min_child_samples\": 150,\n        \"min_child_weight\": 0.02,\n        \"lambda_l2\": 0.0475,\n        \"verbosity\": -1,\n        \"data_random_seed\": 17,\n    }\n    # Additional parameters:\n    early_stop = 500\n    verbose_eval = 500\n    num_rounds = 10000\n    n_splits = 10\n\n    # Split into train and test again:\n    X_train = X_temp.loc[np.isfinite(X_temp.AdoptionSpeed), :]\n    X_test = X_temp.loc[~np.isfinite(X_temp.AdoptionSpeed), :]\n\n    # Remove missing target column from test:\n    X_test = X_test.drop([\"AdoptionSpeed\"], axis=1)\n\n    print(\"X_train shape: {}\".format(X_train.shape))\n    print(\"X_test shape: {}\".format(X_test.shape))\n\n    # Check if columns between the two DFs are the same:\n    train_cols = X_train.columns.tolist()\n    train_cols.remove(\"AdoptionSpeed\")\n    train_cols.remove(\"RescuerID\")\n\n    test_cols = X_test.columns.tolist()\n\n    kfold = StratifiedKFold(n_splits=n_splits, random_state=1337)\n    oof_train = np.zeros((X_train.shape[0]))\n    oof_test = np.zeros((X_test.shape[0], n_splits))\n\n    rescuer_gb_mean = (\n        X_train.groupby(\"RescuerID\")[\"AdoptionSpeed\"].agg(\"mean\").reset_index()\n    )\n    rescuer_gb_mean.columns = [\"RescuerID\", \"AdoptionSpeed_mean\"]\n\n    rescuer_ids = rescuer_gb_mean[\"RescuerID\"].values\n    rescuer_as_mean = rescuer_gb_mean[\"AdoptionSpeed_mean\"].values\n\n    i = 0\n\n    for train_index, valid_index in kfold.split(\n        rescuer_ids, rescuer_as_mean.astype(np.int)\n    ):\n        rescuser_train_ids = rescuer_ids[train_index]\n        rescuser_valid_ids = rescuer_ids[valid_index]\n\n        X_tr = X_train[X_train[\"RescuerID\"].isin(rescuser_train_ids)]\n        X_val = X_train[X_train[\"RescuerID\"].isin(rescuser_valid_ids)]\n\n        y_tr = X_tr[\"AdoptionSpeed\"].values\n        X_tr = X_tr.drop([\"AdoptionSpeed\", \"RescuerID\"], axis=1)\n\n        y_val = X_val[\"AdoptionSpeed\"].values\n        X_val = X_val.drop([\"AdoptionSpeed\", \"RescuerID\"], axis=1)\n\n        print(\"\\ny_tr distribution: {}\".format(Counter(y_tr)))\n\n        d_train = lgb.Dataset(X_tr, label=y_tr)\n        d_valid = lgb.Dataset(X_val, label=y_val)\n        watchlist = [d_train, d_valid]\n\n        print(\"training LGB:\")\n        model = lgb.train(\n            params,\n            train_set=d_train,\n            num_boost_round=num_rounds,\n            valid_sets=watchlist,\n            verbose_eval=verbose_eval,\n            early_stopping_rounds=early_stop,\n        )\n\n        val_pred = model.predict(X_val, num_iteration=model.best_iteration)\n        test_pred = model.predict(\n            X_test.drop([\"RescuerID\"], axis=1), num_iteration=model.best_iteration\n        )\n\n        oof_train[X_val.index] = val_pred\n        oof_test[:, i] = test_pred\n\n        i += 1\n\n    imp_df = pd.DataFrame()\n    imp_df[\"feature\"] = list(train_cols)\n    imp_df[\"importance_gain\"] = model.feature_importance(importance_type=\"gain\")\n    imp_df[\"importance_split\"] = model.feature_importance(importance_type=\"split\")\n    imp_df.to_csv(\"imps.csv\", index=False)\n\n    # Compute QWK based on OOF train predictions:\n    optR = OptimizedRounder()\n    optR.fit(oof_train, X_train[\"AdoptionSpeed\"].values)\n    coefficients = optR.coefficients()\n    pred_test_y_k = optR.predict(oof_train, coefficients)\n    print(\"\\nValid Counts = \", Counter(X_train[\"AdoptionSpeed\"].values))\n    print(\"Predicted Counts = \", Counter(pred_test_y_k))\n    print(\"Coefficients = \", coefficients)\n    qwk = quadratic_weighted_kappa(X_train[\"AdoptionSpeed\"].values, pred_test_y_k)\n    print(\"QWK = \", qwk)\n\n    coefficients_ = coefficients.copy()\n    print(f\"coefficients returned From optim for LGBM are {coefficients_}\")\n\n    coefficients_[0] = 1.645\n    # coefficients_[1] = 2.115\n    # coefficients_[3] = 2.84\n\n    print(f\"coefficients actually used are {coefficients_}\")\n\n    train_predictions = optR.predict(oof_train, coefficients_).astype(int)\n    print(\"train pred distribution: {}\".format(Counter(train_predictions)))\n\n    test_predictions = optR.predict(oof_test.mean(axis=1), coefficients_)\n    print(\"test pred distribution: {}\".format(Counter(test_predictions)))\n\n    # Distribution inspection of original target and predicted train and test:\n    print(\"True Distribution:\")\n    print(pd.value_counts(X_train[\"AdoptionSpeed\"], normalize=True).sort_index())\n    print(\"\\nTrain Predicted Distribution:\")\n    print(pd.value_counts(train_predictions, normalize=True).sort_index())\n    print(\"\\nTest Predicted Distribution:\")\n    print(pd.value_counts(test_predictions, normalize=True).sort_index())\n    submission = pd.DataFrame(\n        {\n            \"PetID\": test[\"PetID\"].values,\n            \"AdoptionSpeed\": test_predictions.astype(np.uint16),\n        }\n    )\n    return submission, oof_train, oof_test\n\n\ndef run_xgb(X_temp, test):\n\n    params = {\n        \"eval_metric\": \"rmse\",\n        \"seed\": 1337,\n        \"eta\": 0.0123,\n        \"subsample\": 0.7,\n        \"colsample_bytree\": 0.75,\n        \"tree_method\": \"gpu_hist\",\n        \"device\": \"gpu\",\n        \"silent\": 1,\n        \"gamma\": 8,\n        \"max_depth\": 7,\n    }\n    n_splits = 10\n    verbose_eval = 1000\n    num_rounds = 10000\n    early_stop = 500\n\n    # Split into train and test again:\n    X_train = X_temp.loc[np.isfinite(X_temp.AdoptionSpeed), :]\n    X_test = X_temp.loc[~np.isfinite(X_temp.AdoptionSpeed), :]\n\n    # Remove missing target column from test:\n    X_test = X_test.drop([\"AdoptionSpeed\", \"RescuerID\"], axis=1)\n\n    print(\"X_train shape: {}\".format(X_train.shape))\n    print(\"X_test shape: {}\".format(X_test.shape))\n\n    # Check if columns between the two DFs are the same:\n    train_cols = X_train.columns.tolist()\n    train_cols.remove(\"AdoptionSpeed\")\n    train_cols.remove(\"RescuerID\")\n\n    test_cols = X_test.columns.tolist()\n\n    kfold = StratifiedKFold(n_splits=n_splits, random_state=1337)\n    oof_train = np.zeros((X_train.shape[0]))\n    oof_test = np.zeros((X_test.shape[0], n_splits))\n\n    rescuer_gb_mean = (\n        X_train.groupby(\"RescuerID\")[\"AdoptionSpeed\"].agg(\"mean\").reset_index()\n    )\n    rescuer_gb_mean.columns = [\"RescuerID\", \"AdoptionSpeed_mean\"]\n\n    rescuer_ids = rescuer_gb_mean[\"RescuerID\"].values\n    rescuer_as_mean = rescuer_gb_mean[\"AdoptionSpeed_mean\"].values\n\n    i = 0\n\n    for train_index, valid_index in kfold.split(\n        X_train, X_train[\"AdoptionSpeed\"].astype(np.int)\n    ):\n        print(f\"Fold {i+1}\")\n\n        X_tr = X_train.iloc[train_index]\n        X_val = X_train.iloc[valid_index]\n\n        y_tr = X_tr[\"AdoptionSpeed\"].values\n        X_tr = X_tr.drop([\"AdoptionSpeed\", \"RescuerID\"], axis=1)\n\n        y_val = X_val[\"AdoptionSpeed\"].values\n        X_val = X_val.drop([\"AdoptionSpeed\", \"RescuerID\"], axis=1)\n\n        d_train = xgb.DMatrix(data=X_tr, label=y_tr, feature_names=X_tr.columns)\n        d_valid = xgb.DMatrix(data=X_val, label=y_val, feature_names=X_val.columns)\n\n        watchlist = [(d_train, \"train\"), (d_valid, \"valid\")]\n        model = xgb.train(\n            dtrain=d_train,\n            num_boost_round=num_rounds,\n            evals=watchlist,\n            early_stopping_rounds=early_stop,\n            verbose_eval=verbose_eval,\n            params=params,\n        )\n\n        valid_pred = model.predict(\n            xgb.DMatrix(X_val, feature_names=X_val.columns),\n            ntree_limit=model.best_ntree_limit,\n        )\n        test_pred = model.predict(\n            xgb.DMatrix(X_test, feature_names=X_test.columns),\n            ntree_limit=model.best_ntree_limit,\n        )\n\n        oof_train[X_val.index] = valid_pred\n        oof_test[:, i] = test_pred\n\n        i += 1\n\n    optR = OptimizedRounder()\n    optR.fit(oof_train, X_train[\"AdoptionSpeed\"].values)\n    coefficients = optR.coefficients()\n    valid_pred = optR.predict(oof_train, coefficients)\n    qwk = quadratic_weighted_kappa(X_train[\"AdoptionSpeed\"].values, valid_pred)\n    print(\"QWK = \", qwk)\n    coefficients_ = coefficients.copy()\n    print(f\"coefficients returned From optim for XGB are {coefficients_}\")\n    coefficients_[0] = 1.645\n    # coefficients_[1] = 2.115\n    # coefficients_[3] = 2.84\n    print(f\"coefficients used for XGB are {coefficients_}\")\n    train_predictions = optR.predict(oof_train, coefficients_).astype(np.int8)\n    print(f\"train pred distribution: {Counter(train_predictions)}\")\n    test_predictions = optR.predict(oof_test.mean(axis=1), coefficients_).astype(\n        np.int8\n    )\n    print(f\"test pred distribution: {Counter(test_predictions)}\")\n\n    submission = pd.DataFrame(\n        {\"PetID\": test[\"PetID\"].values, \"AdoptionSpeed\": test_predictions}\n    )\n    return submission, oof_train, oof_test\n\n\nset_seed(2411)\ntrain, test, labels_state, labels_breed, labels_color = load_tabular_data()\n\ntrain, test = basic_features(train, test)\n\ntrain = meta_nlp_feats(train, \"Description\")\ntest = meta_nlp_feats(test, \"Description\")\n\ntrain = bounding_features(\n    train, meta_path=\"../input/petfinder-adoption-prediction/train_metadata/\"\n)\ntest = bounding_features(\n    test, meta_path=\"../input/petfinder-adoption-prediction/test_metadata/\"\n)\n\ntrain, test = metadata_features(train, test)\n\n###########################################################################\n\n###### https://www.kaggle.com/ogrellier/python-target-encoding-for-categorical-features\n\n\ndef add_noise(series, noise_level):\n    return series * (1 + noise_level * np.random.randn(len(series)))\n\n\ndef target_encode(\n    trn_series=None,\n    tst_series=None,\n    target=None,\n    min_samples_leaf=1,\n    smoothing=1,\n    noise_level=0,\n):\n    \"\"\"\n    Smoothing is computed like in the following paper by Daniele Micci-Barreca\n    https://kaggle2.blob.core.windows.net/forum-message-attachments/225952/7441/high%20cardinality%20categoricals.pdf\n    trn_series : training categorical feature as a pd.Series\n    tst_series : test categorical feature as a pd.Series\n    target : target data as a pd.Series\n    min_samples_leaf (int) : minimum samples to take category average into account\n    smoothing (int) : smoothing effect to balance categorical average vs prior  \n    \"\"\"\n    assert len(trn_series) == len(target)\n    assert trn_series.name == tst_series.name\n    temp = pd.concat([trn_series, target], axis=1)\n    # Compute target mean\n    averages = temp.groupby(by=trn_series.name)[target.name].agg([\"mean\", \"count\"])\n    # Compute smoothing\n    smoothing = 1 / (1 + np.exp(-(averages[\"count\"] - min_samples_leaf) / smoothing))\n    # Apply average function to all target data\n    prior = target.mean()\n    # The bigger the count the less full_avg is taken into account\n    averages[target.name] = prior * (1 - smoothing) + averages[\"mean\"] * smoothing\n    averages.drop([\"mean\", \"count\"], axis=1, inplace=True)\n    # Apply averages to trn and tst series\n    ft_trn_series = (\n        pd.merge(\n            trn_series.to_frame(trn_series.name),\n            averages.reset_index().rename(\n                columns={\"index\": target.name, target.name: \"average\"}\n            ),\n            on=trn_series.name,\n            how=\"left\",\n        )[\"average\"]\n        .rename(trn_series.name + \"_mean\")\n        .fillna(prior)\n    )\n    # pd.merge does not keep the index so restore it\n    ft_trn_series.index = trn_series.index\n    ft_tst_series = (\n        pd.merge(\n            tst_series.to_frame(tst_series.name),\n            averages.reset_index().rename(\n                columns={\"index\": target.name, target.name: \"average\"}\n            ),\n            on=tst_series.name,\n            how=\"left\",\n        )[\"average\"]\n        .rename(trn_series.name + \"_mean\")\n        .fillna(prior)\n    )\n    # pd.merge does not keep the index so restore it\n    ft_tst_series.index = tst_series.index\n    return add_noise(ft_trn_series, noise_level), add_noise(ft_tst_series, noise_level)\n\n\n###########################################################################\n#######################################################################\ntrn, sub = target_encode(\n    train[\"Breed1\"],\n    test[\"Breed1\"],\n    target=train.AdoptionSpeed,\n    min_samples_leaf=100,\n    smoothing=10,\n    noise_level=0.01,\n)\ntrain[\"tencode_breed1\"] = trn\ntest[\"tencode_breed1\"] = sub\n\ntrn, sub = target_encode(\n    train[\"Breed2\"],\n    test[\"Breed2\"],\n    target=train.AdoptionSpeed,\n    min_samples_leaf=100,\n    smoothing=10,\n    noise_level=0.01,\n)\ntrain[\"tencode_breed2\"] = trn\ntest[\"tencode_breed2\"] = sub\n\ntrn, sub = target_encode(\n    train[\"Age\"],\n    test[\"Age\"],\n    target=train.AdoptionSpeed,\n    min_samples_leaf=100,\n    smoothing=10,\n    noise_level=0.01,\n)\ntrain[\"tencode_Age\"] = trn\ntest[\"tencode_Age\"] = sub\n\ndel trn, sub\ngc.collect()\n######################################################\n################################################################################################################\nsentimental_analysis = sorted(\n    glob.glob(\"../input/petfinder-adoption-prediction/train_sentiment/*.json\")\n)\n# Define Empty lists\nscore = []\nmagnitude = []\npetid = []\n\nfor filename in sentimental_analysis:\n    with open(filename, \"r\") as f:\n        sentiment_file = json.load(f)\n    file_sentiment = sentiment_file[\"documentSentiment\"]\n    file_score = np.asarray(sentiment_file[\"documentSentiment\"][\"score\"])\n    file_magnitude = np.asarray(sentiment_file[\"documentSentiment\"][\"magnitude\"])\n    score.append(file_score)\n    magnitude.append(file_magnitude)\n    petid.append(\n        filename.replace(\".json\", \"\").replace(\n            \"../input/petfinder-adoption-prediction/train_sentiment/\", \"\"\n        )\n    )\n\n# Output with sentiment data for each pet\n# Output with sentiment data for each pet\nsentimental_analysis = pd.concat(\n    [\n        pd.DataFrame(petid, columns=[\"PetID\"]),\n        pd.DataFrame(score, columns=[\"sentiment_document_score\"]),\n        pd.DataFrame(magnitude, columns=[\"sentiment_document_magnitude\"]),\n    ],\n    axis=1,\n)\n\ntrain = pd.merge(train, sentimental_analysis, how=\"left\", on=\"PetID\")\n\nsentimental_analysis = sorted(\n    glob.glob(\"../input/petfinder-adoption-prediction/test_sentiment/*.json\")\n)\n# Define Empty lists\nscore = []\nmagnitude = []\npetid = []\n\nfor filename in sentimental_analysis:\n    with open(filename, \"r\") as f:\n        sentiment_file = json.load(f)\n    file_sentiment = sentiment_file[\"documentSentiment\"]\n    file_score = np.asarray(sentiment_file[\"documentSentiment\"][\"score\"])\n    file_magnitude = np.asarray(sentiment_file[\"documentSentiment\"][\"magnitude\"])\n    score.append(file_score)\n    magnitude.append(file_magnitude)\n    petid.append(\n        filename.replace(\".json\", \"\").replace(\n            \"../input/petfinder-adoption-prediction/test_sentiment/\", \"\"\n        )\n    )\n\n# Output with sentiment data for each pet\n# Output with sentiment data for each pet\nsentimental_analysis = pd.concat(\n    [\n        pd.DataFrame(petid, columns=[\"PetID\"]),\n        pd.DataFrame(score, columns=[\"sentiment_document_score\"]),\n        pd.DataFrame(magnitude, columns=[\"sentiment_document_magnitude\"]),\n    ],\n    axis=1,\n)\n\ntest = pd.merge(test, sentimental_analysis, how=\"left\", on=\"PetID\")\ndel sentimental_analysis, score, magnitude, petid\ngc.collect()\n\ntrain[\"neg_sentiment\"] = 0\ntrain.loc[train[(train[\"sentiment_document_score\"] < 0)].index, \"neg_sentiment\"] = 1\n\ntest[\"neg_sentiment\"] = 0\ntest.loc[test[(test[\"sentiment_document_score\"] < 0)].index, \"neg_sentiment\"] = 1\n###########################################################################################\nX_temp = breed_maps(train, test, labels_breed)\n\nkeywords = [\n    \"urgent\",\n    \"lost\",\n    \"fast\",\n    \"left\",\n    \"immediate\",\n    \"critical\",\n    \"rescued\",\n    \"free\",\n    \"trained\",\n]\nval = []\nfor idx in range(X_temp.shape[0]):\n    i = \"\"\n    i = X_temp.loc[idx, \"Description\"]\n    if not isinstance(i, float):\n        if \"trained\" in i:\n            val.append(1)\n        elif \"urgent\" in i:\n            val.append(1)\n        elif \"lost\" in i:\n            val.append(1)\n        elif \"fast\" in i:\n            val.append(1)\n        elif \"left\" in i:\n            val.append(1)\n        elif \"immediate\" in i:\n            val.append(1)\n        elif \"rescued\" in i:\n            val.append(1)\n        else:\n            val.append(0)\n    else:\n        #         print(i)\n        val.append(0)\nprint(len(val), X_temp.shape)\nX_temp[\"keywords\"] = val\ndel val\ngc.collect()\n\ndenseNet121 = build_model()\n\npretrained_feats = image_feature(denseNet121, train, test)\n\nX_temp = X_temp.merge(pretrained_feats, how=\"left\", on=\"PetID\")\n\nX_feat = nlp_features(X_temp)\n\nlgb_submission, lgb_oof_train, lgb_oof_test = run_lgbm(X_feat, test)\nlgb_submission.to_csv(\"submission_lgb.csv\", index=None)\n\nfrom numba import cuda\n\ncuda.close()\n\nxgb_submission, xgb_oof_train, xgb_oof_test = run_xgb(X_feat, test)\nxgb_submission.to_csv(\"submission_xgb.csv\", index=None)\n\n# Blend\nsubmission = lgb_submission[[\"PetID\"]]\nsubmission[\"AdoptionSpeed\"] = (\n    lgb_submission.AdoptionSpeed + xgb_submission.AdoptionSpeed\n) / 2\nsubmission[\"AdoptionSpeed\"] = submission.AdoptionSpeed.astype(int)\n\nsubmission.to_csv(\"submission.csv\", index=False)\n"
  },
  {
    "path": "classification/Kaggle Petfinder/README.MD",
    "content": "## Solution to PetFinder.my Adoption Prediction Challenge\n\n\nLink: https://www.kaggle.com/c/microsoft-malware-prediction\n\nMillions of stray animals suffer on the streets or are euthanized in shelters every day around the world. If homes can be found for them, many precious lives can be saved — and more happy families created.\n\nPetFinder.my has been Malaysia’s leading animal welfare platform since 2008, with a database of more than 150,000 animals. PetFinder collaborates closely with animal lovers, media, corporations, and global organizations to improve animal welfare.\n\nAnimal adoption rates are strongly correlated to the metadata associated with their online profiles, such as descriptive text and photo characteristics. As one example, PetFinder is currently experimenting with a simple AI tool called the Cuteness Meter, which ranks how cute a pet is based on qualities present in their photos.\n\nIn this competition you will be developing algorithms to predict the adoptability of pets - specifically, how quickly is a pet adopted? If successful, they will be adapted into AI tools that will guide shelters and rescuers around the world on improving their pet profiles' appeal, reducing animal suffering and euthanization.\n\nTop participants may be invited to collaborate on implementing their solutions into AI tools for assessing and improving pet adoption performance, which will benefit global animal welfare.\n\n\n"
  },
  {
    "path": "classification/Kaggle red hat user/README.MD",
    "content": "## Solution to Predicting Red Hat Business Value 2016\n\nLink: https://www.kaggle.com/c/predicting-red-hat-business-value\n\nLike most companies, Red Hat is able to gather a great deal of information over time about the behavior of individuals who interact with them. They’re in search of better methods of using this behavioral data to predict which individuals they should approach—and even when and how to approach them.\n\nIn this competition, Kagglers are challenged to create a classification algorithm that accurately identifies which customers have the most potential business value for Red Hat based on their characteristics and activities.\n\nWith an improved prediction model in place, Red Hat will be able to more efficiently prioritize resources to generate more business and better serve their customers.\n \n"
  },
  {
    "path": "deployment/docker flask fit predict/Dockerfile",
    "content": "FROM python:3.7-slim\nCOPY . /root\nWORKDIR /root \nRUN pip install flask gunicorn numpy sklearn scipy flask_wtf WTForms pandas\n"
  },
  {
    "path": "deployment/docker flask fit predict/README.MD",
    "content": "This is baseline for model deployment via docker and flask.\n\n\n1. Install\n```\nsudo docker-compose up\n```\n\n2. Build\n```\nsudo docker-compose build\n```\n\n3. Run\n```\nsudo docker-compose up\n```\n\n4. Get to the docker\n```\nsudo docker exec -it  flaskhello_webapp_1 bash\n```\n\n5. Get active dockers\n```\nsudo docker ps\n```\n\n6. To run python file inside the docker\n```\nsudo docker exec -it  flaskhello_webapp_1 python train_model.py\n```\n\n7. POST JSON data with Curl from a terminal/commandline to test spring REST\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"flower\":\"1,2,3,7\"}' \\\n  http://localhost:5000/iris_post\n```\n\n7. POST curl to upload file\n```\ncurl -X POST -F file=@\"/home/dex/Desktop/ml/flask-hello/static/setosa.jpg\" http://localhost:5000/upload\n```\n"
  },
  {
    "path": "deployment/docker flask fit predict/docker-compose.yml",
    "content": "version: \"3.3\"\nservices:\n  webapp:\n    build: .\n    command: gunicorn -w 4 -b 0.0.0.0:5000 hello:app --reload\n    #command: flask run --host=0.0.0.0\n    environment: \n      - FLASK_APP=hello.py\n      - FLASK_DEBUG=1\n      - PYTHONUNBUFFERED=TRUE\n    ports:\n      - \"5000:5000\"\n    volumes:\n      - ./:/root"
  },
  {
    "path": "deployment/docker flask fit predict/hello.py",
    "content": "from flask import (\n    Flask,\n    escape,\n    flash,\n    request,\n    jsonify,\n    redirect,\n    url_for,\n    render_template,\n    send_file,\n)\nimport numpy as np\nimport os\nfrom sklearn.externals import joblib\n\nknn = joblib.load(\"knn.pkl\")\napp = Flask(__name__)\n\n\n@app.route(\"/\")\ndef hello():\n    print(\"Started hello\")\n    name = request.args.get(\"name\", \"my friend\")\n    return f\"<h2>Hello, {escape(name)}!</h2>\"\n\n\n@app.route(\"/square/<username>\")\ndef squar_val(username):\n    username = float(username) * float(username)\n    return str(username)\n\n\ndef average(lst):\n    return sum(lst) / len(lst)\n\n\n@app.route(\"/avg/<nums>\")\ndef avg(nums):\n    nums = nums.split(\",\")\n    nums = [float(num) for num in nums]\n    return str(average(nums))\n\n\n@app.route(\"/iris/<params>\")\ndef fit_predict_iris(params):\n    params = params.split(\",\")\n    params = np.array([float(num) for num in params]).reshape(1, -1)\n\n    print(\"Input params:\", params)\n    predict = knn.predict(params)\n    img_path = '<br><img src=\"/static/setosa.jpg\" alt=\"Setoca iris flower\" width=\"500\" height=\"600\">'\n    return str(predict) + img_path\n\n\n@app.route(\"/show_image\")\ndef show_image():\n    print(\"image loaded\")\n    return '<img src=\"/static/setosa.jpg\" alt=\"Setoca iris flower\" width=\"500\" height=\"600\">'\n\n\n@app.route(\"/iris_post\", methods=[\"POST\"])\ndef add_message():\n    try:\n        content = request.get_json()\n        params = content[\"flower\"].split(\",\")\n        params = np.array([float(num) for num in params]).reshape(1, -1)\n\n        print(\"Input params:\", params)\n        predict = {\"class\": str(knn.predict(params)[0])}\n    except:\n        return redirect(url_for(\"bad_request\"))\n    return jsonify(predict)\n\n\nfrom flask import abort\n\n\n@app.route(\"/badrequest400\")\ndef bad_request():\n    abort(400)\n\n\nfrom flask_wtf import FlaskForm\nfrom wtforms import StringField, FileField\nfrom werkzeug.utils import secure_filename\nfrom wtforms.validators import DataRequired\nimport pandas as pd\n\nUPLOAD_FOLDER = \"\"\nALLOWED_EXTENSIONS = set([\"txt\", \"pdf\", \"png\", \"jpg\", \"jpeg\", \"gif\"])\napp.config.update(\n    dict(SECRET_KEY=\"powerful secretkey\", WTF_CSRF_SECRET_KEY=\"a csrf secret key\")\n)\napp.config[\"UPLOAD_FOLDER\"] = UPLOAD_FOLDER\n\n\nclass MyForm(FlaskForm):\n    name = StringField(\"name\", validators=[DataRequired()])\n    file = FileField()\n\n\n@app.route(\"/submit\", methods=(\"GET\", \"POST\"))\ndef submit():\n    form = MyForm()\n    if form.validate_on_submit():\n\n        f = form.file.data\n        filename = form.name.data + \".csv\"\n        # f.save(os.path.join(\n        #     filename\n        # ))\n\n        df = pd.read_csv(f, header=None)\n        print(df.head())\n\n        predict = knn.predict(df)\n\n        result = pd.DataFrame(predict)\n        result.to_csv(filename, index=False)\n\n        return send_file(\n            filename,\n            mimetype=\"text/csv\",\n            attachment_filename=filename,\n            as_attachment=True,\n        )\n\n    return render_template(\"submit.html\", form=form)\n\n\ndef allowed_file(filename):\n    return \".\" in filename and filename.rsplit(\".\", 1)[1].lower() in ALLOWED_EXTENSIONS\n\n\n@app.route(\"/upload\", methods=[\"GET\", \"POST\"])\ndef upload_file():\n    if request.method == \"POST\":\n        # check if the post request has the file part\n        if \"file\" not in request.files:\n            flash(\"No file part\")\n            return redirect(request.url)\n        file = request.files[\"file\"]\n        # if user does not select file, browser also\n        # submit an empty part without filename\n        if file.filename == \"\":\n            flash(\"No selected file\")\n            return redirect(request.url)\n        if file and allowed_file(file.filename):\n            filename = secure_filename(file.filename)\n            file.save(os.path.join(app.config[\"UPLOAD_FOLDER\"], filename))\n            return \"file uploaded\"\n\n    return \"\"\"\n    <!doctype html>\n    <title>Upload new File</title>\n    <h1>Upload new File</h1>\n    <form method=post enctype=multipart/form-data>\n      <input type=file name=file>\n      <input type=submit value=Upload>\n    </form>\n    \"\"\"\n"
  },
  {
    "path": "deployment/docker flask fit predict/templates/submit.html",
    "content": "<form method=\"POST\" action=\"/submit\" enctype=multipart/form-data>\n    {{ form.hidden_tag() }}\n    {{ form.name.label }} {{ form.name(size=20) }}\n    {{ form.file.label }} {{ form.file(size=20) }}\n    <input type=\"submit\" value=\"Go\">\n</form>"
  },
  {
    "path": "deployment/docker flask fit predict/train_model.py",
    "content": "import numpy as np\nfrom sklearn import datasets\nfrom sklearn.decomposition import PCA\n\nnp.random.seed(0)\n# import some data to play with\niris_X, iris_y = datasets.load_iris(return_X_y=True)\n\nindices = np.random.permutation(len(iris_X))\niris_X_train = iris_X[indices[:-10]]\niris_y_train = iris_y[indices[:-10]]\n\n# Create and fit a nearest-neighbor classifier\nfrom sklearn.neighbors import KNeighborsClassifier\n\nknn = KNeighborsClassifier()\nknn.fit(iris_X_train, iris_y_train)\n\nfrom sklearn.externals import joblib\n\njoblib.dump(knn, \"knn.pkl\")\n"
  },
  {
    "path": "deployment/ds docker db template/README.md",
    "content": "Taken from here: https://github.com/glebmikha/data-science-project-template\n# Data Science Project Template\n\nYoutube instructions:\n\nENG: https://youtu.be/pTk82vkhsMc \nRUS: https://youtu.be/xf58pNYhRss\n\nThis repo is inspired by the <a href=\"https://www.amazon.com/Docker-Data-Science-Extensible-Infrastructure/dp/1484230116\" target=\"_blank\">Docker for Datascience book</a>. It's a Docker image with a data science environment based on the <a href=\"https://hub.docker.com/r/jupyter/datascience-notebook/\" target=\"_blank\">jupyter/datascience-notebook </a>with pandas, matplotlib, scipy, seaborn and scikit-learn pre-installed.\n\n## To start new Data Science project:\n\n1. Copy this repo\n\nCreate a new directory, cd into it, and then run\n\n```\ngit init\ngit pull https://github.com/glebmikha/data-science-project-template.git\n```\n\nOr you can just download it as a zip and use it without git.\n\n2. Add your favorite Python modules to ./docker/jupyter/requirements.txt. For example:\n\n```\nxgboost\ntensorflow==1.6.0\n```\n\nOr use pip install right in jupyter (don't forget ! in front of the command)\n\n```\n!pip install your_package\n```\n\n3. Start containers\n\n```\ndocker-compose up\n```\n\n4. Copy a jupyter url from terminal and open it in your browser.\n\n5. Find an examples.ipynb notebook in ipynb folder. Create your notebooks.\n6. Copy your data into ./data and read it in Jupyter. You can also upload data into PostgreSQL, which is running in it's own container along with Jupyter (see examples notebook for details)\n7. Stop containers\n\n```\ndocker-compose down\n```\n\n8. Update images\n```\ndocker-compose build --pull\n```\n\n9. Clean Docker's mess\n\n```\ndocker rmi -f $(docker images -qf dangling=true)\n```\n\nSometimes it is useful to remove all docker's data.\n\n```\ndocker system prune\n```\n"
  },
  {
    "path": "deployment/ds docker db template/docker/jupyter/Dockerfile",
    "content": "FROM jupyter/datascience-notebook:latest\n\nCOPY requirements.txt requirements.txt\n\nRUN pip install -r requirements.txt\n\nWORKDIR /home/jovyan/work"
  },
  {
    "path": "deployment/ds docker db template/docker/jupyter/requirements.txt",
    "content": "psycopg2-binary\ncatboost\n"
  },
  {
    "path": "deployment/ds docker db template/docker/postgres/Dockerfile",
    "content": "FROM postgres:10-alpine\nCOPY initdb.sql /docker-entrypoint-initdb.d/initdb.sql\n"
  },
  {
    "path": "deployment/ds docker db template/docker/postgres/initdb.sql",
    "content": "DROP TABLE if exists d_date;\n\nCREATE TABLE d_date\n(\n  date_dim_id              INT NOT NULL,\n  date_actual              DATE NOT NULL,\n  epoch                    BIGINT NOT NULL,\n  day_suffix               VARCHAR(4) NOT NULL,\n  day_name                 VARCHAR(9) NOT NULL,\n  day_of_week              INT NOT NULL,\n  day_of_month             INT NOT NULL,\n  day_of_quarter           INT NOT NULL,\n  day_of_year              INT NOT NULL,\n  week_of_month            INT NOT NULL,\n  week_of_year             INT NOT NULL,\n  week_of_year_iso         CHAR(10) NOT NULL,\n  month_actual             INT NOT NULL,\n  month_name               VARCHAR(9) NOT NULL,\n  month_name_abbreviated   CHAR(3) NOT NULL,\n  quarter_actual           INT NOT NULL,\n  quarter_name             VARCHAR(9) NOT NULL,\n  year_actual              INT NOT NULL,\n  first_day_of_week        DATE NOT NULL,\n  last_day_of_week         DATE NOT NULL,\n  first_day_of_month       DATE NOT NULL,\n  last_day_of_month        DATE NOT NULL,\n  first_day_of_quarter     DATE NOT NULL,\n  last_day_of_quarter      DATE NOT NULL,\n  first_day_of_year        DATE NOT NULL,\n  last_day_of_year         DATE NOT NULL,\n  mmyyyy                   CHAR(6) NOT NULL,\n  mmddyyyy                 CHAR(10) NOT NULL,\n  weekend_indr             BOOLEAN NOT NULL\n);\n\nALTER TABLE public.d_date ADD CONSTRAINT d_date_date_dim_id_pk PRIMARY KEY (date_dim_id);\n\nCREATE INDEX d_date_date_actual_idx\n  ON d_date(date_actual);\n\nCOMMIT;\n\nINSERT INTO d_date\nSELECT TO_CHAR(datum,'yyyymmdd')::INT AS date_dim_id,\n       datum AS date_actual,\n       EXTRACT(epoch FROM datum) AS epoch,\n       TO_CHAR(datum,'fmDDth') AS day_suffix,\n       TO_CHAR(datum,'Day') AS day_name,\n       EXTRACT(isodow FROM datum) AS day_of_week,\n       EXTRACT(DAY FROM datum) AS day_of_month,\n       datum - DATE_TRUNC('quarter',datum)::DATE +1 AS day_of_quarter,\n       EXTRACT(doy FROM datum) AS day_of_year,\n       TO_CHAR(datum,'W')::INT AS week_of_month,\n       EXTRACT(week FROM datum) AS week_of_year,\n       TO_CHAR(datum,'YYYY\"-W\"IW-') || EXTRACT(isodow FROM datum) AS week_of_year_iso,\n       EXTRACT(MONTH FROM datum) AS month_actual,\n       TO_CHAR(datum,'Month') AS month_name,\n       TO_CHAR(datum,'Mon') AS month_name_abbreviated,\n       EXTRACT(quarter FROM datum) AS quarter_actual,\n       CASE\n         WHEN EXTRACT(quarter FROM datum) = 1 THEN 'First'\n         WHEN EXTRACT(quarter FROM datum) = 2 THEN 'Second'\n         WHEN EXTRACT(quarter FROM datum) = 3 THEN 'Third'\n         WHEN EXTRACT(quarter FROM datum) = 4 THEN 'Fourth'\n       END AS quarter_name,\n       EXTRACT(isoyear FROM datum) AS year_actual,\n       datum +(1 -EXTRACT(isodow FROM datum))::INT AS first_day_of_week,\n       datum +(7 -EXTRACT(isodow FROM datum))::INT AS last_day_of_week,\n       datum +(1 -EXTRACT(DAY FROM datum))::INT AS first_day_of_month,\n       (DATE_TRUNC('MONTH',datum) +INTERVAL '1 MONTH - 1 day')::DATE AS last_day_of_month,\n       DATE_TRUNC('quarter',datum)::DATE AS first_day_of_quarter,\n       (DATE_TRUNC('quarter',datum) +INTERVAL '3 MONTH - 1 day')::DATE AS last_day_of_quarter,\n       TO_DATE(EXTRACT(isoyear FROM datum) || '-01-01','YYYY-MM-DD') AS first_day_of_year,\n       TO_DATE(EXTRACT(isoyear FROM datum) || '-12-31','YYYY-MM-DD') AS last_day_of_year,\n       TO_CHAR(datum,'mmyyyy') AS mmyyyy,\n       TO_CHAR(datum,'mmddyyyy') AS mmddyyyy,\n       CASE\n         WHEN EXTRACT(isodow FROM datum) IN (6,7) THEN TRUE\n         ELSE FALSE\n       END AS weekend_indr\nFROM (SELECT '1970-01-01'::DATE+ SEQUENCE.DAY AS datum\n      FROM GENERATE_SERIES (0,29219) AS SEQUENCE (DAY)\n      GROUP BY SEQUENCE.DAY) DQ\nORDER BY 1;\n\nCOMMIT;"
  },
  {
    "path": "deployment/ds docker db template/docker-compose.yml",
    "content": "version: \"3\"\nservices:\n  this_jupyter:\n    build: ./docker/jupyter/\n    volumes:\n      - .:/home/jovyan/work\n    ports:\n      - 8888:8888\n  this_postgres:\n    build: ./docker/postgres\n    volumes:\n      - postgres_data:/var/lib/postgresql/data\n    environment:\n      - POSTGRES_PASSWORD=password\n    ports:\n      - 5432:5432\nvolumes:\n  postgres_data:\n"
  },
  {
    "path": "general studies/finetune gbm.md",
    "content": "### Tune Parameters for the Leaf-wise (Best-first) Tree\n\n**num_leaves**. This is the main parameter to control the complexity of the tree model. Theoretically, we can set num_leaves = 2^(max_depth) to obtain the same number of leaves as depth-wise tree. However, this simple conversion is not good in practice. The reason is that a leaf-wise tree is typically much deeper than a depth-wise tree for a fixed number of leaves. Unconstrained depth can induce over-fitting. Thus, when trying to tune the num_leaves, we should let it be smaller than 2^(max_depth). For example, when the max_depth=7 the depth-wise tree can get good accuracy, but setting num_leaves to 127 may cause over-fitting, and setting it to 70 or 80 may get better accuracy than depth-wise.\n\n**min_data_in_leaf**. This is a very important parameter to prevent over-fitting in a leaf-wise tree. Its optimal value depends on the number of training samples and num_leaves. Setting it to a large value can avoid growing too deep a tree, but may cause under-fitting. In practice, setting it to hundreds or thousands is enough for a large dataset.\n\n**max_depth**. You also can use max_depth to limit the tree depth explicitly.\n\n\n### For Faster Speed\nUse bagging by setting **bagging_fraction** and **bagging_freq**\nUse feature sub-sampling by setting **feature_fraction**\nUse small **max_bin**\nUse save_binary to speed up data loading in future learning\nUse parallel learning, refer to Parallel Learning Guide\n\n### For Better Accuracy\nUse large **max_bin** (may be slower)\nUse small **learning_rate** with large **num_iterations**\nUse large **num_leaves** (may cause over-fitting)\nUse bigger training data\nTry **dart**\n\n### Deal with Over-fitting\nUse small **max_bin**\nUse small **num_leaves**\nUse **min_data_in_leaf** and **min_sum_hessian_in_leaf**\nUse bagging by set bagging_fraction and **bagging_freq**\nUse feature sub-sampling by set **feature_fraction**\nUse bigger training data\nTry **lambda_l1**, **lambda_l2** and **min_gain_to_split** for regularization\nTry **max_depth** to avoid growing deep tree\n\n\n### Other params to tune\n**max_cat_group**: When the number of category is large, finding the split point on it is easily over-fitting. So LightGBM merges them into ‘max_cat_group’ groups, and finds the split points on the group boundaries, default:64\n**min_gain_to_split**: This parameter will describe the minimum gain to make a split. It can used to control number of useful splits in tree\n\n\n\n"
  },
  {
    "path": "general studies/finetune xgb.md",
    "content": "Fill reasonable values for key inputs:\n\n**learning_rate**: 0.01; **n_estimators**: 100 if the size of your data is high, 1000 is if it is medium-low; **max_depth**: 3;\n**subsample**: 0.8; **colsample_bytree**: 1; **gamma**: 1\n\nRun **model.fit(eval_set, eval_metric)** and diagnose your first run, specifically the n_estimators parameter\nOptimize **max_depth** parameter. \n\nRecommended going from a low **max_depth** (3 for instance) and then increasing it incrementally by 1, and stopping when there’s no performance gain of increasing it. This will help simplify your model and avoid overfitting\n\nNow play around with the learning rate and the features that avoids overfitting:\n**learning_rate**: usually between 0.1 and 0.01. If you’re focused on performance and have time in front of you, decrease incrementally the learning rate while increasing the number of trees.\n\n**subsample**, which is for each tree the % of rows taken to build the tree. I recommend not taking out too many rows, as performance will drop a lot. Take values from 0.8 to 1. Typical values: 0.5-1\n\n**colsample_bytree**: number of columns used by each tree. In order to avoid some columns to take too much credit for the prediction (think of it like in recommender systems when you recommend the most purchased products and forget about the long tail), take out a good proportion of columns. Values from 0.3 to 0.8 if you have many columns (especially if you did one-hot encoding), or 0.8 to 1 if you only have a few columns.\n\n**gamma**: usually misunderstood parameter, it acts as a regularization parameter. Either 0, 1 or 5.\n\n**eta** [default=0.3]\nAnalogous to learning rate in GBM\nMakes the model more robust by shrinking the weights on each step\nTypical final values to be used: 0.01-0.2\n\n**min_child_weight** [default=1]\nDefines the minimum sum of weights of all observations required in a child.\nThis is similar to min_child_leaf in GBM but not exactly. This refers to min “sum of weights” of observations while GBM has min “number of observations”.\nUsed to control over-fitting. Higher values prevent a model from learning relations which might be highly specific to the particular sample selected for a tree.\nToo high values can lead to under-fitting hence, it should be tuned using CV.\n\nLink https://xgboost.readthedocs.io/en/latest/parameter.html\n"
  },
  {
    "path": "general studies/get feature importance.py",
    "content": "from __future__ import division\n\nimport numpy as np\nfrom scipy import linalg\n\nfrom sklearn.linear_model import (RandomizedLasso, lasso_stability_path,\n                                  LassoLarsCV)\nfrom sklearn.feature_selection import f_regression\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.metrics import auc, precision_recall_curve\nfrom sklearn.ensemble import ExtraTreesRegressor\nfrom sklearn.utils.extmath import pinvh\nfrom sklearn.utils import ConvergenceWarning\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nfrom sklearn.cross_validation import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import roc_auc_score\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.svm import OneClassSVM\nfrom sklearn.feature_selection import chi2\nfrom sklearn.datasets import load_iris\nfrom sklearn.feature_selection import SelectKBest\nfrom sklearn.svm import LinearSVC\nfrom sklearn.datasets import load_iris\nfrom sklearn.feature_selection import SelectFromModel\nimport matplotlib.pyplot as plt\nimport random\nfrom sklearn.datasets import make_classification\nfrom sklearn.ensemble import ExtraTreesClassifier\nfrom sklearn import preprocessing\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nfrom subprocess import check_output\n\ndef mutual_incoherence(X_relevant, X_irelevant):\n    \"\"\"Mutual incoherence, as defined by formula (26a) of [Wainwright2006].\n    \"\"\"\n    projector = np.dot(np.dot(X_irelevant.T, X_relevant),\n                       pinvh(np.dot(X_relevant.T, X_relevant)))\n    return np.max(np.abs(projector).sum(axis=1))\n\n\n\n# The iris dataset\ndf_train = pd.read_csv(\"C:\\\\Users\\\\SBT-Ashrapov-IR\\\\Desktop\\\\docs\\\\apps\\\\CustomerSatisfaction\\\\data\\\\train.csv\")\ndf_test = pd.read_csv('C:\\\\Users\\\\SBT-Ashrapov-IR\\\\Desktop\\\\docs\\\\apps\\\\CustomerSatisfaction\\\\data\\\\test.csv')\n\n\n\nremove = []\n# deletening duplicates cols\nfor col in df_train.columns:\n    if df_train[col].std() == 0:\n        remove.append(col)\n\ndf_train.drop(remove, axis=1, inplace=True)\ndf_test.drop(remove, axis=1, inplace=True)\n\n# normalize the data attributes\ndf_train.apply(lambda x: (x - np.mean(x)) / (np.max(x) - np.min(x)))\ndf_test.apply(lambda x: (x - np.mean(x)) / (np.max(x) - np.min(x)))\n\n\n\nsize = len(df_train.columns) -1 \n\n# remove duplicated columns\nremove = []\nlistZeroes = []\nremove3 = []\n\nc = df_train.columns\nk = 1\nfor i in range(len(c)-1):\n    v = df_train[c[i]].values\n    for j in range(i+1,len(c)):\n        if np.array_equal(v,df_train[c[j]].values):\n            remove.append(c[j])\ndf_train.drop(remove, axis=1, inplace=True)\ndf_test.drop(remove, axis=1, inplace=True)            \n\n\nfor i in range(len(df_train)):\n        if  df_train[\"TARGET\"][i] == 0:\n            listZeroes.append(i)\n        if  df_train[\"TARGET\"][i] == 1:\n            remove3.append(i)\n\n            \n#print listZeroes\nprint len(df_train)\n\n#print df_train.index\nlistZeroes = random.sample(listZeroes, len(df_train) - 3007- len(remove3))\nremove3 = random.sample(remove3, len(remove3) - 3007)\nlistZeroes = listZeroes +remove3\n\ndf_ones = df_train.iloc[remove3]\nfor i in xrange(1, 24,1):\n    df_train = df_train.append(df_ones)\n\n# df_train.drop(df_train.index[listZeroes],inplace=True)\n\n\n\nX = df_train[df_train.columns[0:size]]\ny = df_train[[len(df_train.columns)-1]]\n\n\n\ntest_frac = 0.10\ncount = len(X_full)\nX = X_full.iloc[-int(count*test_frac):]\ny = y_full.iloc[-int(count*test_frac):]\n  \nprint \"X\", X.shape , \"y\", y.shape\n  \nlsvc = LinearSVC(C=0.01, penalty=\"l1\", dual=False).fit(X, y)\nmodel = SelectFromModel(lsvc, prefit=True)\n  \nX_new = model.transform(X)\n\nforest = ExtraTreesClassifier(n_estimators=250,\n                              random_state=0)\n\nforest.fit(X, y)\nimportances = forest.feature_importances_\nstd = np.std([tree.feature_importances_ for tree in forest.estimators_],\n             axis=0)\nindices = np.argsort(importances)[::-1]\n\n# Print the feature ranking\nprint(\"Feature ranking:\")\n\nfor f in range(X.shape[1]):\n    print(\"%d. feature %d (%f)\" % (f + 1, indices[f], importances[indices[f]]))\n\n# Plot the feature importances of the forest\nplt.figure()\nplt.title(\"Feature importances\")\nplt.bar(range(X.shape[1]), importances[indices],\n       color=\"r\", yerr=std[indices], align=\"center\")\nplt.xticks(range(X.shape[1]), indices)\nplt.xlim([-1, X.shape[1]])\nplt.show()\n# print \"X_new.shape\", X_new.shape\n# print X_new\n"
  },
  {
    "path": "recommendations/ods_course/README.md",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/competition/requirements.txt",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/competition/tools.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_2/requirements.txt",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/Dockerfile",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/Readme.md",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/ann/__init__.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/ann/recommender.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/config/__init__.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/config/config.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/config/config.yaml",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/main.py",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_4/pyproject.toml",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_5/README.md",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_5/requirements.txt",
    "content": ""
  },
  {
    "path": "recommendations/ods_course/lecture_5/tools.py",
    "content": ""
  },
  {
    "path": "regression/kaggle santander value prediction/README.md",
    "content": "# Kaggle Santander Value Prediction Challenge (108th place - silver)\n \nhttps://www.kaggle.com/c/santander-value-prediction-challenge\n\n\nAccording to Epsilon research, 80% of customers are more likely to do business with you if you provide personalized service. Banking is no exception.\n\nThe digitalization of everyday lives means that customers expect services to be delivered in a personalized and timely manner… and often before they´ve even realized they need the service. In their 3rd Kaggle competition, Santander Group aims to go a step beyond recognizing that there is a need to provide a customer a financial service and intends to determine the amount or value of the customer's transaction. This means anticipating customer needs in a more concrete, but also simple and personal way. With so many choices for financial services, this need is greater now than ever before.\n\nIn this competition, Santander Group is asking Kagglers to help them identify the value of transactions for each potential customer. This is a first step that Santander needs to nail in order to personalize their services at scale.\n\n\n\n#### This repository provides basic solution, which were enough to get silver solution\n"
  },
  {
    "path": "time series regression/ARIMA/AR.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nimport statsmodels.tsa.api as smtsa\n\n\n# Function to plot signal, ACF and PACF\ndef plotds(xt, nlag=30, fig_size=(12, 10)):\n    if not isinstance(xt, pd.Series):\n        xt = pd.Series(xt)\n    plt.figure(figsize=fig_size)\n    layout = (2, 2)\n\n    # Assign axes\n    ax_xt = plt.subplot2grid(layout, (0, 0), colspan=2)\n    ax_acf = plt.subplot2grid(layout, (1, 0))\n    ax_pacf = plt.subplot2grid(layout, (1, 1))\n\n    # Plot graphs\n    xt.plot(ax=ax_xt)\n    ax_xt.set_title(\"Time Series\")\n    plot_acf(xt, lags=50, ax=ax_acf)\n    plot_pacf(xt, lags=50, ax=ax_pacf)\n    plt.tight_layout()\n    return None\n\n\n# Number of samples\nn = 600\n\n# Generate AR(1) dataset\nar = np.r_[1, -0.6]\nma = np.r_[1, 0]\nar1_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ar1_data)\n\n# Generate AR(2) dataset\nar = np.r_[1, 0.6, 0.7]\nma = np.r_[1, 0]\nar2_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ar2_data)\n\n# Generate AR(3) dataset\nar = np.r_[1, 0.6, 0.7, 0.5]\nma = np.r_[1, 0]\nar3_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ar3_data)\n\n\n# Build AR(1) model\nar1model = smtsa.ARMA(ar1_data.tolist(), order=(1, 0))\nar1 = ar1model.fit(maxlag=30, method=\"mle\", trend=\"nc\")\nar1.summary()\n\n# Build MA(3) model\nar3 = smtsa.ARMA(ar3_data.tolist(), order=(3, 0)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\nar3.summary()\n"
  },
  {
    "path": "time series regression/ARIMA/ARIMA.py",
    "content": "# Load Modules\nfrom __future__ import print_function\nimport os\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nfrom statsmodels.tsa.arima_model import ARIMA\nimport statsmodels.api as sm\nimport statsmodels.tsa.api as smtsa\n\n# Function to plot signal, ACF and PACF\ndef plotds(xt, nlag=30, fig_size=(12, 10)):\n    if not isinstance(xt, pd.Series):\n        xt = pd.Series(xt)\n    plt.figure(figsize=fig_size)\n    layout = (2, 2)\n\n    # Assign axes\n    ax_xt = plt.subplot2grid(layout, (0, 0), colspan=2)\n    ax_acf = plt.subplot2grid(layout, (1, 0))\n    ax_pacf = plt.subplot2grid(layout, (1, 1))\n\n    # Plot graphs\n    xt.plot(ax=ax_xt)\n    ax_xt.set_title(\"Time Series\")\n    plot_acf(xt, lags=50, ax=ax_acf)\n    plot_pacf(xt, lags=50, ax=ax_pacf)\n    plt.tight_layout()\n    return None\n\n\n# Read data from Excel file\ndjia_df = pd.read_excel(\"datasets/DJIA_Jan2016_Dec2016.xlsx\")\n\n\n# Rename the second column\ndjia_df.head(10)\n\n\n# Let us parse the Date column and use as row index for the DataFrame and drop it as a column\ndjia_df[\"Date\"] = pd.to_datetime(djia_df[\"Date\"], \"%Y-%m-%d\")\ndjia_df.index = djia_df[\"Date\"]\ndjia_df.drop(\"Date\", axis=1, inplace=True)\n\n\n# Let us see first few rows of the modified DataFrame\ndjia_df.head(10)\n\n# Plot ACF and PACF\ndjia_df = djia_df.dropna()\nplotds(djia_df[\"Close\"], nlag=50)\n\n\n# Evaluate mean and variance at mid values\nmean1, mean2 = djia_df.iloc[:125].Close.mean(), djia_df.iloc[125:].Close.mean()\nvar1, var2 = djia_df.iloc[:125].Close.var(), djia_df.iloc[125:].Close.var()\nprint(\"mean1=%f, mean2=%f\" % (mean1, mean2))\nprint(\"variance1=%f, variance2=%f\" % (var1, var2))\n\n\n# ADF Test\nfrom statsmodels.tsa.stattools import adfuller\n\nadf_result = adfuller(djia_df.Close.tolist())\nprint(\"ADF Statistic: %f\" % adf_result[0])\nprint(\"p-value: %f\" % adf_result[1])\n\n# QQ plot and probability plot\nsm.qqplot(djia_df[\"Close\"], line=\"s\")\n\n\n# Optimize ARMA parameters (Will return a non-stationary error)\narma_obj = smtsa.ARMA(djia_df[\"Close\"].tolist(), order=(1, 1)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\n\n\n# Let us plot the original time series and first-differences\nfirst_order_diff = djia_df[\"Close\"].diff(1).dropna()\nfig, ax = plt.subplots(2, sharex=True)\nfig.set_size_inches(5.5, 5.5)\ndjia_df[\"Close\"].plot(ax=ax[0], color=\"b\")\nax[0].set_title(\"Close values of DJIA during Jan 2016-Dec 2016\")\nfirst_order_diff.plot(ax=ax[1], color=\"r\")\nax[1].set_title(\"First-order differences of DJIA during Jan 2016-Dec 2016\")\n\n# plot signal\nplotds(first_order_diff, nlag=50)\nadf_result = adfuller(first_order_diff)\nprint(\"ADF Statistic: %f\" % adf_result[0])\nprint(\"p-value: %f\" % adf_result[1])\n\n# Optimize ARMA parameters\naicVal = []\nfor d in range(1, 3):\n    for ari in range(0, 3):\n        for maj in range(0, 3):\n            try:\n                arima_obj = ARIMA(djia_df[\"Close\"].tolist(), order=(ari, d, maj))\n                arima_obj_fit = arima_obj.fit()\n                aicVal.append([ari, d, maj, arima_obj_fit.aic])\n            except ValueError:\n                pass\n\n# Optimal ARIMA model\narima_obj = ARIMA(djia_df[\"Close\"].tolist(), order=(0, 2, 1))\narima_obj_fit = arima_obj.fit(disp=0)\narima_obj_fit.summary()\n\n# Evaluate prediction\npred = np.append([0, 0], arima_obj_fit.fittedvalues.tolist())\ndjia_df[\"ARIMA\"] = pred\ndiffval = np.append([0, 0], arima_obj_fit.resid + arima_obj_fit.fittedvalues)\ndjia_df[\"diffval\"] = diffval\n\n# QQ plot and probability plot\nsm.qqplot(arima_obj_fit.resid, line=\"s\")\n\n# Plot output\nf, axarr = plt.subplots(1, sharex=True)\nf.set_size_inches(5.5, 5.5)\ndjia_df[\"diffval\"].iloc[2:].plot(color=\"b\", linestyle=\"-\", ax=axarr)\ndjia_df[\"ARIMA\"].iloc[2:].plot(color=\"r\", linestyle=\"--\", ax=axarr)\naxarr.set_title(\"ARIMA(0,2,1)\")\nplt.xlabel(\"Index\")\nplt.ylabel(\"Closing\")\n\n# Forecasting\nf, err, ci = arima_obj_fit.forecast(40)\ndjia_df[\"forecast\"] = arima_obj_fit.forecast(10)\ndjia_df[[\"Close\", \"forecast\"]].plot(figsize=(12, 8))\n\n##############\n# SARIMAX\n##############\n# Seasonality (based on first difference ACF shows significance at 42 lag)\nx = djia_df[\"Close\"] - djia_df[\"Close\"].shift(42)\nmod = sm.tsa.statespace.SARIMAX(\n    djia_df[\"Close\"], trend=\"n\", order=(0, 2, 1), seasonal_order=(1, 1, 1, 42)\n)\nsarimax = mod.fit()\nsarimax.summary()\n"
  },
  {
    "path": "time series regression/ARIMA/ARMA.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nimport statsmodels.tsa.api as smtsa\nfrom statsmodels.tsa import arima_process\n\n# Function to plot signal, ACF and PACF\ndef plotds(xt, nlag=30, fig_size=(12, 10)):\n    if not isinstance(xt, pd.Series):\n        xt = pd.Series(xt)\n    plt.figure(figsize=fig_size)\n    layout = (2, 2)\n\n    # Assign axes\n    ax_xt = plt.subplot2grid(layout, (0, 0), colspan=2)\n    ax_acf = plt.subplot2grid(layout, (1, 0))\n    ax_pacf = plt.subplot2grid(layout, (1, 1))\n\n    # Plot graphs\n    xt.plot(ax=ax_xt)\n    ax_xt.set_title(\"Time Series\")\n    plot_acf(xt, lags=50, ax=ax_acf)\n    plot_pacf(xt, lags=50, ax=ax_pacf)\n    plt.tight_layout()\n    return None\n\n\n# Number of samples\nn = 600\n\n# Generate AR(1) dataset\nar = np.r_[1, 0.6]\nma = np.r_[1, 0.3]\nar1ma1_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ar1ma1_data)\n\n# Impluse response curve\nplt.plot(arima_process.arma_impulse_response(ar, ma, nobs=20))\nplt.ylabel(\"Impact\")\nplt.xlabel(\"Lag\")\n\n\n# Build AR(1) model\nar1ma1 = smtsa.ARMA(ar1ma1_data.tolist(), order=(1, 1)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\nar1ma1.summary()\n\n\n# Optimize ARMA parameters\naicVal = []\nfor ari in range(1, 3):\n    for maj in range(1, 3):\n        arma_obj = smtsa.ARMA(ar1ma1_data.tolist(), order=(ari, maj)).fit(\n            maxlag=30, method=\"mle\", trend=\"nc\"\n        )\n        aicVal.append([ari, maj, arma_obj.aic])\n"
  },
  {
    "path": "time series regression/ARIMA/ARMA_IBMstock.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport pandas as pd\nfrom matplotlib import pyplot as plt\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nimport statsmodels.tsa.api as smtsa\nimport statsmodels.api as sm\nimport os\n\n#############\n# IBM EXAMPLE for ARMA modelling\n#############\n\n# Load Dataset\nibm_df = pd.read_csv(\"datasets/ibm-common-stock-closing-prices.csv\")\nibm_df.head()\n\n# Rename the second column\nibm_df.rename(columns={\"IBM common stock closing prices\": \"Close_Price\"}, inplace=True)\nibm_df.head()\nibm_df.Close_Price.plot()\n\n\n# Plot ACF and PACF\nibm_df = ibm_df.dropna()\nplot_acf(ibm_df.Close_Price, lags=50)\nplot_pacf(ibm_df.Close_Price, lags=50)\n\n# QQ plot and probability plot\nsm.qqplot(ibm_df[\"Close_Price\"], line=\"s\")\n\n\n# Optimize ARMA parameters\naicVal = []\nfor ari in range(1, 3):\n    for maj in range(0, 3):\n        arma_obj = smtsa.ARMA(ibm_df.Close_Price.tolist(), order=(ari, maj)).fit(\n            maxlag=30, method=\"mle\", trend=\"nc\"\n        )\n        aicVal.append([ari, maj, arma_obj.aic])\n\narma_obj_fin = smtsa.ARMA(ibm_df.Close_Price.tolist(), order=(1, 0)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\nibm_df[\"ARMA\"] = arma_obj_fin.predict()\narma_obj_fin.summary()\n\n\n# Plot the curves\nf, axarr = plt.subplots(1, sharex=True)\nf.set_size_inches(5.5, 5.5)\nibm_df[\"Close_Price\"].iloc[1:].plot(color=\"b\", linestyle=\"-\", ax=axarr)\nibm_df[\"ARMA\"].iloc[1:].plot(color=\"r\", linestyle=\"--\", ax=axarr)\naxarr.set_title(\"ARMA(1,0)\")\nplt.xlabel(\"Index\")\nplt.ylabel(\"Closing price\")\n"
  },
  {
    "path": "time series regression/ARIMA/MA.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nimport statsmodels.tsa.api as smtsa\n\n# Function to plot signal, ACF and PACF\ndef plotds(xt, nlag=30, fig_size=(12, 10)):\n    if not isinstance(xt, pd.Series):\n        xt = pd.Series(xt)\n    plt.figure(figsize=fig_size)\n    layout = (2, 2)\n\n    # Assign axes\n    ax_xt = plt.subplot2grid(layout, (0, 0), colspan=2)\n    ax_acf = plt.subplot2grid(layout, (1, 0))\n    ax_pacf = plt.subplot2grid(layout, (1, 1))\n\n    # Plot graphs\n    xt.plot(ax=ax_xt)\n    ax_xt.set_title(\"Time Series\")\n    plot_acf(xt, lags=50, ax=ax_acf)\n    plot_pacf(xt, lags=50, ax=ax_pacf)\n    plt.tight_layout()\n    return None\n\n\n# Number of samples\nn = 600\n\n# Generate MA(1) dataset\nar = np.r_[1, -0]\nma = np.r_[1, 0.7]\nma1_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ma1_data)\n\n# Generate MA(2) dataset\nar = np.r_[1, -0]\nma = np.r_[1, 0.6, 0.7]\nma2_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ma2_data)\n\n# Generate MA(3) dataset\nar = np.r_[1, -0]\nma = np.r_[1, 0.6, 0.7, 0.5]\nma3_data = smtsa.arma_generate_sample(ar=ar, ma=ma, nsample=n)\nplotds(ma3_data)\n\n\n# Build MA(1) model\nma1 = smtsa.ARMA(ma1_data.tolist(), order=(0, 1)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\nma1.summary()\n\n# Build MA(3) model\nma3 = smtsa.ARMA(ma3_data.tolist(), order=(0, 3)).fit(\n    maxlag=30, method=\"mle\", trend=\"nc\"\n)\nma3.summary()\n"
  },
  {
    "path": "time series regression/Data Files/Data Files",
    "content": "Here are all the data files used in the book\n"
  },
  {
    "path": "time series regression/anomaly detection/README.md",
    "content": "# Anomaly detection in time series with Prophet library\n* For the full article read medium article - https://medium.com/p/4c661f6f165f/edit\n* Kaggle code with data by Vinay Jaju - https://www.kaggle.com/vinayjaju/anomaly-detection-using-facebook-s-prophet\n"
  },
  {
    "path": "time series regression/anomaly detection/anomaly-detection-using-facebook-s-prophet.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# In[1]:\n\n\n# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in\n\nimport numpy as np  # linear algebra\nimport pandas as pd  # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nimport altair as alt\n\nalt.renderers.enable(\"notebook\")\nprint(os.listdir(\"../input\"))\nfrom IPython.display import HTML\n\n\n# The below is great for working but if you publish it, no charts show up.\n# The workaround in the next cell deals with this.\n# alt.renderers.enable('notebook')\n\nHTML(\"This code block contains import statements and setup.\")\n# Any results you write to the current directory are saved as output.\n\n\n# In[2]:\n\n\n## Dont worry about the code in this block. This is just the setup for showing Altair graphs in Kaggle Notebooks\n\n\nfrom altair.vega import v3\nimport json\nfrom IPython.display import HTML\n\n\nvega_url = \"https://cdn.jsdelivr.net/npm/vega@\" + v3.SCHEMA_VERSION\nvega_lib_url = \"https://cdn.jsdelivr.net/npm/vega-lib\"\nvega_lite_url = \"https://cdn.jsdelivr.net/npm/vega-lite@\" + alt.SCHEMA_VERSION\nvega_embed_url = \"https://cdn.jsdelivr.net/npm/vega-embed@3\"\nnoext = \"?noext\"\n\npaths = {\n    \"vega\": vega_url + noext,\n    \"vega-lib\": vega_lib_url + noext,\n    \"vega-lite\": vega_lite_url + noext,\n    \"vega-embed\": vega_embed_url + noext,\n}\n\nworkaround = \"\"\"\nrequirejs.config({{\n    baseUrl: 'https://cdn.jsdelivr.net/npm/',\n    paths: {}\n}});\n\"\"\"\n\n\ndef add_autoincrement(render_func):\n    # Keep track of unique <div/> IDs\n    cache = {}\n\n    def wrapped(chart, id=\"vega-chart\", autoincrement=True):\n        if autoincrement:\n            if id in cache:\n                counter = 1 + cache[id]\n                cache[id] = counter\n            else:\n                cache[id] = 0\n            actual_id = id if cache[id] == 0 else id + \"-\" + str(cache[id])\n        else:\n            if id not in cache:\n                cache[id] = 0\n            actual_id = id\n        return render_func(chart, id=actual_id)\n\n    # Cache will stay outside and\n    return wrapped\n\n\n@add_autoincrement\ndef render(chart, id=\"vega-chart\"):\n    chart_str = \"\"\"\n    <div id=\"{id}\"></div><script>\n    require([\"vega-embed\"], function(vg_embed) {{\n        const spec = {chart};     \n        vg_embed(\"#{id}\", spec, {{defaultStyle: true}}).catch(console.warn);\n        console.log(\"anything?\");\n    }});\n    console.log(\"really...anything?\");\n    </script>\n    \"\"\"\n    return HTML(\n        chart_str.format(\n            id=id,\n            chart=json.dumps(chart)\n            if isinstance(chart, dict)\n            else chart.to_json(indent=None),\n        )\n    )\n\n\nHTML(\n    \"\".join(\n        (\n            \"<script>\",\n            workaround.format(json.dumps(paths)),\n            \"</script>\",\n            \"This code block sets up embedded rendering in HTML output and<br/>\",\n            \"provides the function `render(chart, id='vega-chart')` for use below.\",\n        )\n    )\n)\n\n\n# In[3]:\n\n\n#!pip install fbprophet\n\n\n# # Getting the data\n\n# In[4]:\n\n\nfrom fbprophet import Prophet\n\nget_ipython().system(\"mkdir -p dataset\")\nget_ipython().system(\n    \"wget -c -b http://www-personal.umich.edu/~mejn/cp/data/sunspots.txt -P dataset\"\n)\ndata = np.loadtxt(\"dataset/sunspots.txt\", float)\n\n\n# In[5]:\n\n\nget_ipython().system(\"ls dataset/\")\n\n\n# ### Converting data to Pandas dataframe\n\n# In[6]:\n\n\n# View the data as a table\ndata_as_frame = pd.DataFrame(data, columns=[\"Months\", \"SunSpots\"])\ndata_as_frame.tail(10)\n\n\n# In[7]:\n\n\ndata_as_frame[\"ds\"] = data_as_frame[\"Months\"].astype(int)\n\n\n# In[8]:\n\n\ndata_as_frame.head()\n\n\n# ### Converting the months column in format acceptable for Prophet, starting from 1749\n\n# In[9]:\n\n\ndata_as_frame[\"time_stamp\"] = data_as_frame.apply(\n    lambda x: (pd.Timestamp(\"1749-01-01\") + pd.DateOffset(months=int(x[\"ds\"]))), axis=1\n)\n\n\n# In[10]:\n\n\n# Cleaning the df, we only need two columns date time and the data\nclean_df = data_as_frame.drop([\"Months\", \"ds\"], axis=1)\n\n\n# In[11]:\n\n\nclean_df.head()\n\n\n# ## Lets view the data in graphical format\n\n# In[12]:\n\n\nrender(\n    alt.Chart(clean_df)\n    .mark_line(size=15, opacity=0.8, color=\"Orange\")\n    .encode(\n        x=\"yearmonthdate(time_stamp):T\",\n        y=alt.Y(\"SunSpots\", title=\"Sunspots\"),\n        tooltip=[\"yearmonthdate(time_stamp)\", \"SunSpots\"],\n    )\n    .interactive()\n    .properties(width=900, height=450, title=\"Sunspots based on Months\")\n    .configure_title(fontSize=20)\n)\n\n\n# # Preparing data for modelling in Prophet\n\n# In[13]:\n\n\n## Prophet requires two columns, one is ds (the date time) and y (variable to be forecasted)\nclean_df.columns = [\"y\", \"ds\"]\n\n\n# ## Lets Predict\n\n# In[14]:\n\n\ndef fit_predict_model(dataframe, interval_width=0.99, changepoint_range=0.8):\n    m = Prophet(\n        daily_seasonality=False,\n        yearly_seasonality=False,\n        weekly_seasonality=False,\n        seasonality_mode=\"multiplicative\",\n        interval_width=interval_width,\n        changepoint_range=changepoint_range,\n    )\n    m = m.fit(dataframe)\n\n    forecast = m.predict(dataframe)\n    forecast[\"fact\"] = dataframe[\"y\"].reset_index(drop=True)\n    print(\"Displaying Prophet plot\")\n    fig1 = m.plot(forecast)\n    return forecast\n\n\npred = fit_predict_model(clean_df)\n\n\n# # Detecting Anomalies:\n# * The light blue boundaries in the above graph are yhat_upper and yhat_lower.\n# * If y value is greater than yhat_upper and less than yhat lower then it is an anomaly.\n# * Also getting the importance of that anomaly based on its distance from yhat_upper and yhat_lower.\n\n# In[15]:\n\n\ndef detect_anomalies(forecast):\n    forecasted = forecast[\n        [\"ds\", \"trend\", \"yhat\", \"yhat_lower\", \"yhat_upper\", \"fact\"]\n    ].copy()\n    # forecast['fact'] = df['y']\n\n    forecasted[\"anomaly\"] = 0\n    forecasted.loc[forecasted[\"fact\"] > forecasted[\"yhat_upper\"], \"anomaly\"] = 1\n    forecasted.loc[forecasted[\"fact\"] < forecasted[\"yhat_lower\"], \"anomaly\"] = -1\n\n    # anomaly importances\n    forecasted[\"importance\"] = 0\n    forecasted.loc[forecasted[\"anomaly\"] == 1, \"importance\"] = (\n        forecasted[\"fact\"] - forecasted[\"yhat_upper\"]\n    ) / forecast[\"fact\"]\n    forecasted.loc[forecasted[\"anomaly\"] == -1, \"importance\"] = (\n        forecasted[\"yhat_lower\"] - forecasted[\"fact\"]\n    ) / forecast[\"fact\"]\n\n    return forecasted\n\n\npred = detect_anomalies(pred)\n\n\n# In[16]:\n\n\npred.head()\n\n\n# # Plotting the anomalies for a better view\n\n# In[17]:\n\n\ndef plot_anomalies(forecasted):\n    interval = (\n        alt.Chart(forecasted)\n        .mark_area(interpolate=\"basis\", color=\"#7FC97F\")\n        .encode(\n            x=alt.X(\"ds:T\", title=\"date\"),\n            y=\"yhat_upper\",\n            y2=\"yhat_lower\",\n            tooltip=[\"yearmonthdate(ds)\", \"fact\", \"yhat_lower\", \"yhat_upper\"],\n        )\n        .interactive()\n        .properties(title=\"Anomaly Detection\")\n    )\n\n    fact = (\n        alt.Chart(forecasted[forecasted.anomaly == 0])\n        .mark_circle(size=15, opacity=0.7, color=\"Black\")\n        .encode(\n            x=\"ds:T\",\n            y=alt.Y(\"fact\", title=\"Sunspots\"),\n            tooltip=[\"yearmonthdate(ds)\", \"fact\", \"yhat_lower\", \"yhat_upper\"],\n        )\n        .interactive()\n    )\n\n    anomalies = (\n        alt.Chart(forecasted[forecasted.anomaly != 0])\n        .mark_circle(size=30, color=\"Red\")\n        .encode(\n            x=\"ds:T\",\n            y=alt.Y(\"fact\", title=\"Sunspots\"),\n            tooltip=[\"yearmonthdate(ds)\", \"fact\", \"yhat_lower\", \"yhat_upper\"],\n            size=alt.Size(\"importance\", legend=None),\n        )\n        .interactive()\n    )\n\n    return render(\n        alt.layer(interval, fact, anomalies)\n        .properties(width=870, height=450)\n        .configure_title(fontSize=20)\n    )\n\n\nplot_anomalies(pred)\n\n\n# References:\n# * http://www-personal.umich.edu/~mejn/cp/programs.html\n# * https://towardsdatascience.com/anomaly-detection-time-series-4c661f6f165f\n# * https://github.com/altair-viz/altair/issues/1270\n#\n\n# In[18]:\n"
  },
  {
    "path": "time series regression/anomaly detection/sunspots.txt",
    "content": "0\t58.0\n1\t62.6\n2\t70.0\n3\t55.7\n4\t85.0\n5\t83.5\n6\t94.8\n7\t66.3\n8\t75.9\n9\t75.5\n10\t158.6\n11\t85.2\n12\t73.3\n13\t75.9\n14\t89.2\n15\t88.3\n16\t90.0\n17\t100.0\n18\t85.4\n19\t103.0\n20\t91.2\n21\t65.7\n22\t63.3\n23\t75.4\n24\t70.0\n25\t43.5\n26\t45.3\n27\t56.4\n28\t60.7\n29\t50.7\n30\t66.3\n31\t59.8\n32\t23.5\n33\t23.2\n34\t28.5\n35\t44.0\n36\t35.0\n37\t50.0\n38\t71.0\n39\t59.3\n40\t59.7\n41\t39.6\n42\t78.4\n43\t29.3\n44\t27.1\n45\t46.6\n46\t37.6\n47\t40.0\n48\t44.0\n49\t32.0\n50\t45.7\n51\t38.0\n52\t36.0\n53\t31.7\n54\t22.0\n55\t39.0\n56\t28.0\n57\t25.0\n58\t20.0\n59\t6.7\n60\t0.0\n61\t3.0\n62\t1.7\n63\t13.7\n64\t20.7\n65\t26.7\n66\t18.8\n67\t12.3\n68\t8.2\n69\t24.1\n70\t13.2\n71\t4.2\n72\t10.2\n73\t11.2\n74\t6.8\n75\t6.5\n76\t0.0\n77\t0.0\n78\t8.6\n79\t3.2\n80\t17.8\n81\t23.7\n82\t6.8\n83\t20.0\n84\t12.5\n85\t7.1\n86\t5.4\n87\t9.4\n88\t12.5\n89\t12.9\n90\t3.6\n91\t6.4\n92\t11.8\n93\t14.3\n94\t17.0\n95\t9.4\n96\t14.1\n97\t21.2\n98\t26.2\n99\t30.0\n100\t38.1\n101\t12.8\n102\t25.0\n103\t51.3\n104\t39.7\n105\t32.5\n106\t64.7\n107\t33.5\n108\t37.6\n109\t52.0\n110\t49.0\n111\t72.3\n112\t46.4\n113\t45.0\n114\t44.0\n115\t38.7\n116\t62.5\n117\t37.7\n118\t43.0\n119\t43.0\n120\t48.3\n121\t44.0\n122\t46.8\n123\t47.0\n124\t49.0\n125\t50.0\n126\t51.0\n127\t71.3\n128\t77.2\n129\t59.7\n130\t46.3\n131\t57.0\n132\t67.3\n133\t59.5\n134\t74.7\n135\t58.3\n136\t72.0\n137\t48.3\n138\t66.0\n139\t75.6\n140\t61.3\n141\t50.6\n142\t59.7\n143\t61.0\n144\t70.0\n145\t91.0\n146\t80.7\n147\t71.7\n148\t107.2\n149\t99.3\n150\t94.1\n151\t91.1\n152\t100.7\n153\t88.7\n154\t89.7\n155\t46.0\n156\t43.8\n157\t72.8\n158\t45.7\n159\t60.2\n160\t39.9\n161\t77.1\n162\t33.8\n163\t67.7\n164\t68.5\n165\t69.3\n166\t77.8\n167\t77.2\n168\t56.5\n169\t31.9\n170\t34.2\n171\t32.9\n172\t32.7\n173\t35.8\n174\t54.2\n175\t26.5\n176\t68.1\n177\t46.3\n178\t60.9\n179\t61.4\n180\t59.7\n181\t59.7\n182\t40.2\n183\t34.4\n184\t44.3\n185\t30.0\n186\t30.0\n187\t30.0\n188\t28.2\n189\t28.0\n190\t26.0\n191\t25.7\n192\t24.0\n193\t26.0\n194\t25.0\n195\t22.0\n196\t20.2\n197\t20.0\n198\t27.0\n199\t29.7\n200\t16.0\n201\t14.0\n202\t14.0\n203\t13.0\n204\t12.0\n205\t11.0\n206\t36.6\n207\t6.0\n208\t26.8\n209\t3.0\n210\t3.3\n211\t4.0\n212\t4.3\n213\t5.0\n214\t5.7\n215\t19.2\n216\t27.4\n217\t30.0\n218\t43.0\n219\t32.9\n220\t29.8\n221\t33.3\n222\t21.9\n223\t40.8\n224\t42.7\n225\t44.1\n226\t54.7\n227\t53.3\n228\t53.5\n229\t66.1\n230\t46.3\n231\t42.7\n232\t77.7\n233\t77.4\n234\t52.6\n235\t66.8\n236\t74.8\n237\t77.8\n238\t90.6\n239\t111.8\n240\t73.9\n241\t64.2\n242\t64.3\n243\t96.7\n244\t73.6\n245\t94.4\n246\t118.6\n247\t120.3\n248\t148.8\n249\t158.2\n250\t148.1\n251\t112.0\n252\t104.0\n253\t142.5\n254\t80.1\n255\t51.0\n256\t70.1\n257\t83.3\n258\t109.8\n259\t126.3\n260\t104.4\n261\t103.6\n262\t132.2\n263\t102.3\n264\t36.0\n265\t46.2\n266\t46.7\n267\t64.9\n268\t152.7\n269\t119.5\n270\t67.7\n271\t58.5\n272\t101.4\n273\t90.0\n274\t99.7\n275\t95.7\n276\t100.9\n277\t90.8\n278\t31.1\n279\t92.2\n280\t38.0\n281\t57.0\n282\t77.3\n283\t56.2\n284\t50.5\n285\t78.6\n286\t61.3\n287\t64.0\n288\t54.6\n289\t29.0\n290\t51.2\n291\t32.9\n292\t41.1\n293\t28.4\n294\t27.7\n295\t12.7\n296\t29.3\n297\t26.3\n298\t40.9\n299\t43.2\n300\t46.8\n301\t65.4\n302\t55.7\n303\t43.8\n304\t51.3\n305\t28.5\n306\t17.5\n307\t6.6\n308\t7.9\n309\t14.0\n310\t17.7\n311\t12.2\n312\t4.4\n313\t0.0\n314\t11.6\n315\t11.2\n316\t3.9\n317\t12.3\n318\t1.0\n319\t7.9\n320\t3.2\n321\t5.6\n322\t15.1\n323\t7.9\n324\t21.7\n325\t11.6\n326\t6.3\n327\t21.8\n328\t11.2\n329\t19.0\n330\t1.0\n331\t24.2\n332\t16.0\n333\t30.0\n334\t35.0\n335\t40.0\n336\t45.0\n337\t36.5\n338\t39.0\n339\t95.5\n340\t80.3\n341\t80.7\n342\t95.0\n343\t112.0\n344\t116.2\n345\t106.5\n346\t146.0\n347\t157.3\n348\t177.3\n349\t109.3\n350\t134.0\n351\t145.0\n352\t238.9\n353\t171.6\n354\t153.0\n355\t140.0\n356\t171.7\n357\t156.3\n358\t150.3\n359\t105.0\n360\t114.7\n361\t165.7\n362\t118.0\n363\t145.0\n364\t140.0\n365\t113.7\n366\t143.0\n367\t112.0\n368\t111.0\n369\t124.0\n370\t114.0\n371\t110.0\n372\t70.0\n373\t98.0\n374\t98.0\n375\t95.0\n376\t107.2\n377\t88.0\n378\t86.0\n379\t86.0\n380\t93.7\n381\t77.0\n382\t60.0\n383\t58.7\n384\t98.7\n385\t74.7\n386\t53.0\n387\t68.3\n388\t104.7\n389\t97.7\n390\t73.5\n391\t66.0\n392\t51.0\n393\t27.3\n394\t67.0\n395\t35.2\n396\t54.0\n397\t37.5\n398\t37.0\n399\t41.0\n400\t54.3\n401\t38.0\n402\t37.0\n403\t44.0\n404\t34.0\n405\t23.2\n406\t31.5\n407\t30.0\n408\t28.0\n409\t38.7\n410\t26.7\n411\t28.3\n412\t23.0\n413\t25.2\n414\t32.2\n415\t20.0\n416\t18.0\n417\t8.0\n418\t15.0\n419\t10.5\n420\t13.0\n421\t8.0\n422\t11.0\n423\t10.0\n424\t6.0\n425\t9.0\n426\t6.0\n427\t10.0\n428\t10.0\n429\t8.0\n430\t17.0\n431\t14.0\n432\t6.5\n433\t8.0\n434\t9.0\n435\t15.7\n436\t20.7\n437\t26.3\n438\t36.3\n439\t20.0\n440\t32.0\n441\t47.2\n442\t40.2\n443\t27.3\n444\t37.2\n445\t47.6\n446\t47.7\n447\t85.4\n448\t92.3\n449\t59.0\n450\t83.0\n451\t89.7\n452\t111.5\n453\t112.3\n454\t116.0\n455\t112.7\n456\t134.7\n457\t106.0\n458\t87.4\n459\t127.2\n460\t134.8\n461\t99.2\n462\t128.0\n463\t137.2\n464\t157.3\n465\t157.0\n466\t141.5\n467\t174.0\n468\t138.0\n469\t129.2\n470\t143.3\n471\t108.5\n472\t113.0\n473\t154.2\n474\t141.5\n475\t136.0\n476\t141.0\n477\t142.0\n478\t94.7\n479\t129.5\n480\t114.0\n481\t125.3\n482\t120.0\n483\t123.3\n484\t123.5\n485\t120.0\n486\t117.0\n487\t103.0\n488\t112.0\n489\t89.7\n490\t134.0\n491\t135.5\n492\t103.0\n493\t127.5\n494\t96.3\n495\t94.0\n496\t93.0\n497\t91.0\n498\t69.3\n499\t87.0\n500\t77.3\n501\t84.3\n502\t82.0\n503\t74.0\n504\t72.7\n505\t62.0\n506\t74.0\n507\t77.2\n508\t73.7\n509\t64.2\n510\t71.0\n511\t43.0\n512\t66.5\n513\t61.7\n514\t67.0\n515\t66.0\n516\t58.0\n517\t64.0\n518\t63.0\n519\t75.7\n520\t62.0\n521\t61.0\n522\t45.8\n523\t60.0\n524\t59.0\n525\t59.0\n526\t57.0\n527\t56.0\n528\t56.0\n529\t55.0\n530\t55.5\n531\t53.0\n532\t52.3\n533\t51.0\n534\t50.0\n535\t29.3\n536\t24.0\n537\t47.0\n538\t44.0\n539\t45.7\n540\t45.0\n541\t44.0\n542\t38.0\n543\t28.4\n544\t55.7\n545\t41.5\n546\t41.0\n547\t40.0\n548\t11.1\n549\t28.5\n550\t67.4\n551\t51.4\n552\t21.4\n553\t39.9\n554\t12.6\n555\t18.6\n556\t31.0\n557\t17.1\n558\t12.9\n559\t25.7\n560\t13.5\n561\t19.5\n562\t25.0\n563\t18.0\n564\t22.0\n565\t23.8\n566\t15.7\n567\t31.7\n568\t21.0\n569\t6.7\n570\t26.9\n571\t1.5\n572\t18.4\n573\t11.0\n574\t8.4\n575\t5.1\n576\t14.4\n577\t4.2\n578\t4.0\n579\t4.0\n580\t7.3\n581\t11.1\n582\t4.3\n583\t6.0\n584\t5.7\n585\t6.9\n586\t5.8\n587\t3.0\n588\t2.0\n589\t4.0\n590\t12.4\n591\t1.1\n592\t0.0\n593\t0.0\n594\t0.0\n595\t3.0\n596\t2.4\n597\t1.5\n598\t12.5\n599\t9.9\n600\t1.6\n601\t12.6\n602\t21.7\n603\t8.4\n604\t8.2\n605\t10.6\n606\t2.1\n607\t0.0\n608\t0.0\n609\t4.6\n610\t2.7\n611\t8.6\n612\t6.9\n613\t9.3\n614\t13.9\n615\t0.0\n616\t5.0\n617\t23.7\n618\t21.0\n619\t19.5\n620\t11.5\n621\t12.3\n622\t10.5\n623\t40.1\n624\t27.0\n625\t29.0\n626\t30.0\n627\t31.0\n628\t32.0\n629\t31.2\n630\t35.0\n631\t38.7\n632\t33.5\n633\t32.6\n634\t39.8\n635\t48.2\n636\t47.8\n637\t47.0\n638\t40.8\n639\t42.0\n640\t44.0\n641\t46.0\n642\t48.0\n643\t50.0\n644\t51.8\n645\t38.5\n646\t34.5\n647\t50.0\n648\t50.0\n649\t50.8\n650\t29.5\n651\t25.0\n652\t44.3\n653\t36.0\n654\t48.3\n655\t34.1\n656\t45.3\n657\t54.3\n658\t51.0\n659\t48.0\n660\t45.3\n661\t48.3\n662\t48.0\n663\t50.6\n664\t33.4\n665\t34.8\n666\t29.8\n667\t43.1\n668\t53.0\n669\t62.3\n670\t61.0\n671\t60.0\n672\t61.0\n673\t44.1\n674\t51.4\n675\t37.5\n676\t39.0\n677\t40.5\n678\t37.6\n679\t42.7\n680\t44.4\n681\t29.4\n682\t41.0\n683\t38.3\n684\t39.0\n685\t29.6\n686\t32.7\n687\t27.7\n688\t26.4\n689\t25.6\n690\t30.0\n691\t26.3\n692\t24.0\n693\t27.0\n694\t25.0\n695\t24.0\n696\t12.0\n697\t12.2\n698\t9.6\n699\t23.8\n700\t10.0\n701\t12.0\n702\t12.7\n703\t12.0\n704\t5.7\n705\t8.0\n706\t2.6\n707\t0.0\n708\t0.0\n709\t4.5\n710\t0.0\n711\t12.3\n712\t13.5\n713\t13.5\n714\t6.7\n715\t8.0\n716\t11.7\n717\t4.7\n718\t10.5\n719\t12.3\n720\t7.2\n721\t9.2\n722\t0.9\n723\t2.5\n724\t2.0\n725\t7.7\n726\t0.3\n727\t0.2\n728\t0.4\n729\t0.0\n730\t0.0\n731\t0.0\n732\t0.0\n733\t0.0\n734\t0.0\n735\t0.0\n736\t0.0\n737\t0.0\n738\t0.0\n739\t0.0\n740\t0.0\n741\t0.0\n742\t0.0\n743\t0.0\n744\t0.0\n745\t0.0\n746\t0.0\n747\t0.0\n748\t0.0\n749\t0.0\n750\t6.6\n751\t0.0\n752\t2.4\n753\t6.1\n754\t0.8\n755\t1.1\n756\t11.3\n757\t1.9\n758\t0.7\n759\t0.0\n760\t1.0\n761\t1.3\n762\t0.5\n763\t15.6\n764\t5.2\n765\t3.9\n766\t7.9\n767\t10.1\n768\t0.0\n769\t10.3\n770\t1.9\n771\t16.6\n772\t5.5\n773\t11.2\n774\t18.3\n775\t8.4\n776\t15.3\n777\t27.8\n778\t16.7\n779\t14.3\n780\t22.2\n781\t12.0\n782\t5.7\n783\t23.8\n784\t5.8\n785\t14.9\n786\t18.5\n787\t2.3\n788\t8.1\n789\t19.3\n790\t14.5\n791\t20.1\n792\t19.2\n793\t32.2\n794\t26.2\n795\t31.6\n796\t9.8\n797\t55.9\n798\t35.5\n799\t47.2\n800\t31.5\n801\t33.5\n802\t37.2\n803\t65.0\n804\t26.3\n805\t68.8\n806\t73.7\n807\t58.8\n808\t44.3\n809\t43.6\n810\t38.8\n811\t23.2\n812\t47.8\n813\t56.4\n814\t38.1\n815\t29.9\n816\t36.4\n817\t57.9\n818\t96.2\n819\t26.4\n820\t21.2\n821\t40.0\n822\t50.0\n823\t45.0\n824\t36.7\n825\t25.6\n826\t28.9\n827\t28.4\n828\t34.9\n829\t22.4\n830\t25.4\n831\t34.5\n832\t53.1\n833\t36.4\n834\t28.0\n835\t31.5\n836\t26.1\n837\t31.6\n838\t10.9\n839\t25.8\n840\t32.8\n841\t20.7\n842\t3.7\n843\t20.2\n844\t19.6\n845\t35.0\n846\t31.4\n847\t26.1\n848\t14.9\n849\t27.5\n850\t25.1\n851\t30.6\n852\t19.2\n853\t26.6\n854\t4.5\n855\t19.4\n856\t29.4\n857\t10.8\n858\t20.6\n859\t25.9\n860\t5.2\n861\t8.9\n862\t7.9\n863\t9.1\n864\t21.5\n865\t4.2\n866\t5.7\n867\t9.2\n868\t1.7\n869\t1.8\n870\t2.5\n871\t4.8\n872\t4.4\n873\t18.9\n874\t4.4\n875\t0.3\n876\t0.0\n877\t0.9\n878\t16.1\n879\t13.0\n880\t1.5\n881\t5.6\n882\t8.0\n883\t2.1\n884\t0.0\n885\t0.4\n886\t0.0\n887\t0.0\n888\t0.0\n889\t0.0\n890\t0.6\n891\t0.0\n892\t0.0\n893\t0.0\n894\t0.5\n895\t0.0\n896\t0.0\n897\t0.0\n898\t0.0\n899\t20.4\n900\t21.7\n901\t10.8\n902\t0.0\n903\t19.4\n904\t2.8\n905\t0.0\n906\t0.0\n907\t1.4\n908\t20.5\n909\t25.2\n910\t0.0\n911\t0.9\n912\t5.0\n913\t15.5\n914\t22.4\n915\t3.8\n916\t15.5\n917\t15.4\n918\t30.9\n919\t25.7\n920\t15.7\n921\t15.6\n922\t11.7\n923\t22.0\n924\t17.7\n925\t18.2\n926\t36.7\n927\t24.0\n928\t32.4\n929\t37.1\n930\t52.5\n931\t39.6\n932\t18.9\n933\t50.6\n934\t39.5\n935\t68.1\n936\t34.6\n937\t47.4\n938\t57.8\n939\t46.0\n940\t56.3\n941\t56.7\n942\t42.3\n943\t53.7\n944\t49.6\n945\t56.1\n946\t48.3\n947\t46.1\n948\t52.8\n949\t64.4\n950\t65.0\n951\t61.1\n952\t89.1\n953\t98.0\n954\t54.2\n955\t76.5\n956\t50.4\n957\t54.7\n958\t57.0\n959\t46.9\n960\t43.0\n961\t49.4\n962\t72.3\n963\t95.0\n964\t67.4\n965\t73.9\n966\t90.9\n967\t77.6\n968\t52.8\n969\t57.2\n970\t67.6\n971\t56.5\n972\t52.2\n973\t72.1\n974\t84.7\n975\t106.3\n976\t66.3\n977\t65.1\n978\t43.9\n979\t50.7\n980\t62.1\n981\t84.4\n982\t81.3\n983\t82.2\n984\t47.5\n985\t50.1\n986\t93.4\n987\t54.5\n988\t38.1\n989\t33.4\n990\t45.2\n991\t55.0\n992\t37.9\n993\t46.3\n994\t43.5\n995\t28.9\n996\t30.9\n997\t55.6\n998\t55.1\n999\t26.9\n1000\t41.3\n1001\t26.7\n1002\t14.0\n1003\t8.9\n1004\t8.2\n1005\t21.1\n1006\t14.3\n1007\t27.5\n1008\t11.3\n1009\t15.0\n1010\t11.8\n1011\t2.8\n1012\t12.9\n1013\t1.0\n1014\t7.0\n1015\t5.7\n1016\t11.6\n1017\t7.5\n1018\t5.9\n1019\t9.9\n1020\t4.9\n1021\t18.1\n1022\t3.9\n1023\t1.4\n1024\t8.8\n1025\t7.8\n1026\t8.7\n1027\t4.0\n1028\t11.5\n1029\t24.8\n1030\t30.5\n1031\t34.5\n1032\t7.5\n1033\t24.5\n1034\t19.7\n1035\t61.5\n1036\t43.6\n1037\t33.2\n1038\t59.8\n1039\t59.0\n1040\t100.8\n1041\t95.2\n1042\t100.0\n1043\t77.5\n1044\t88.6\n1045\t107.6\n1046\t98.2\n1047\t142.9\n1048\t111.4\n1049\t124.7\n1050\t116.7\n1051\t107.8\n1052\t95.1\n1053\t137.4\n1054\t120.9\n1055\t206.3\n1056\t188.0\n1057\t175.6\n1058\t134.6\n1059\t138.2\n1060\t111.7\n1061\t158.0\n1062\t162.8\n1063\t134.0\n1064\t96.3\n1065\t123.7\n1066\t107.0\n1067\t129.8\n1068\t144.9\n1069\t84.8\n1070\t140.8\n1071\t126.6\n1072\t137.6\n1073\t94.5\n1074\t108.2\n1075\t78.8\n1076\t73.6\n1077\t90.8\n1078\t77.4\n1079\t79.8\n1080\t105.6\n1081\t102.5\n1082\t77.7\n1083\t61.8\n1084\t53.8\n1085\t54.7\n1086\t84.8\n1087\t131.2\n1088\t132.7\n1089\t90.9\n1090\t68.8\n1091\t63.7\n1092\t81.2\n1093\t87.7\n1094\t67.8\n1095\t65.9\n1096\t69.2\n1097\t48.5\n1098\t60.7\n1099\t57.8\n1100\t74.0\n1101\t55.1\n1102\t54.3\n1103\t53.7\n1104\t24.1\n1105\t29.9\n1106\t29.7\n1107\t40.2\n1108\t67.5\n1109\t55.7\n1110\t30.9\n1111\t39.3\n1112\t36.5\n1113\t28.5\n1114\t19.8\n1115\t38.8\n1116\t20.4\n1117\t22.1\n1118\t21.7\n1119\t26.9\n1120\t24.9\n1121\t20.5\n1122\t12.6\n1123\t26.6\n1124\t18.4\n1125\t38.1\n1126\t40.5\n1127\t17.6\n1128\t13.3\n1129\t3.5\n1130\t8.3\n1131\t9.5\n1132\t21.1\n1133\t10.5\n1134\t9.5\n1135\t11.8\n1136\t4.2\n1137\t5.3\n1138\t19.1\n1139\t12.7\n1140\t9.5\n1141\t14.7\n1142\t13.6\n1143\t20.8\n1144\t11.6\n1145\t3.7\n1146\t21.2\n1147\t23.9\n1148\t7.0\n1149\t21.5\n1150\t10.8\n1151\t21.6\n1152\t25.7\n1153\t43.6\n1154\t43.3\n1155\t57.0\n1156\t47.8\n1157\t31.1\n1158\t30.6\n1159\t32.3\n1160\t29.6\n1161\t40.7\n1162\t39.4\n1163\t59.7\n1164\t38.7\n1165\t51.0\n1166\t63.9\n1167\t69.3\n1168\t60.0\n1169\t65.1\n1170\t46.5\n1171\t54.8\n1172\t107.1\n1173\t55.9\n1174\t60.4\n1175\t65.5\n1176\t62.6\n1177\t44.9\n1178\t85.7\n1179\t44.8\n1180\t75.5\n1181\t85.3\n1182\t52.2\n1183\t140.6\n1184\t160.9\n1185\t180.4\n1186\t138.9\n1187\t109.6\n1188\t159.1\n1189\t111.8\n1190\t108.6\n1191\t107.1\n1192\t102.2\n1193\t129.0\n1194\t139.2\n1195\t132.6\n1196\t100.3\n1197\t132.4\n1198\t114.6\n1199\t159.5\n1200\t157.0\n1201\t131.8\n1202\t96.2\n1203\t102.5\n1204\t80.6\n1205\t81.1\n1206\t78.0\n1207\t67.7\n1208\t93.7\n1209\t71.5\n1210\t99.0\n1211\t97.0\n1212\t78.0\n1213\t89.4\n1214\t82.6\n1215\t44.1\n1216\t61.6\n1217\t70.0\n1218\t39.1\n1219\t61.6\n1220\t86.2\n1221\t71.0\n1222\t54.8\n1223\t61.0\n1224\t75.5\n1225\t105.4\n1226\t64.6\n1227\t56.5\n1228\t62.6\n1229\t63.2\n1230\t36.1\n1231\t57.4\n1232\t67.9\n1233\t62.5\n1234\t51.0\n1235\t71.4\n1236\t68.4\n1237\t66.4\n1238\t61.2\n1239\t65.4\n1240\t54.9\n1241\t46.9\n1242\t42.1\n1243\t39.7\n1244\t37.5\n1245\t67.3\n1246\t54.3\n1247\t45.4\n1248\t41.1\n1249\t42.9\n1250\t37.7\n1251\t47.6\n1252\t34.7\n1253\t40.0\n1254\t45.9\n1255\t50.5\n1256\t33.5\n1257\t42.4\n1258\t28.8\n1259\t23.4\n1260\t15.4\n1261\t20.0\n1262\t20.7\n1263\t26.5\n1264\t24.0\n1265\t21.1\n1266\t18.7\n1267\t15.8\n1268\t22.4\n1269\t12.6\n1270\t28.2\n1271\t21.6\n1272\t12.3\n1273\t11.4\n1274\t17.4\n1275\t4.4\n1276\t9.1\n1277\t5.3\n1278\t0.4\n1279\t3.1\n1280\t0.0\n1281\t9.6\n1282\t4.2\n1283\t3.1\n1284\t0.5\n1285\t4.9\n1286\t0.4\n1287\t6.5\n1288\t0.0\n1289\t5.2\n1290\t4.6\n1291\t5.9\n1292\t4.4\n1293\t4.5\n1294\t7.7\n1295\t7.2\n1296\t13.7\n1297\t7.4\n1298\t5.2\n1299\t11.1\n1300\t28.5\n1301\t16.0\n1302\t22.2\n1303\t16.9\n1304\t42.4\n1305\t40.6\n1306\t31.4\n1307\t37.2\n1308\t39.0\n1309\t34.9\n1310\t57.5\n1311\t38.3\n1312\t41.4\n1313\t44.5\n1314\t56.7\n1315\t55.3\n1316\t80.1\n1317\t91.2\n1318\t51.9\n1319\t66.9\n1320\t83.7\n1321\t87.6\n1322\t90.3\n1323\t85.7\n1324\t91.0\n1325\t87.1\n1326\t95.2\n1327\t106.8\n1328\t105.8\n1329\t114.6\n1330\t97.2\n1331\t81.0\n1332\t82.4\n1333\t88.3\n1334\t98.9\n1335\t71.4\n1336\t107.1\n1337\t108.6\n1338\t116.7\n1339\t100.3\n1340\t92.2\n1341\t90.1\n1342\t97.9\n1343\t95.6\n1344\t62.3\n1345\t77.7\n1346\t101.0\n1347\t98.5\n1348\t56.8\n1349\t88.1\n1350\t78.0\n1351\t82.5\n1352\t79.9\n1353\t67.2\n1354\t53.7\n1355\t80.5\n1356\t63.1\n1357\t64.5\n1358\t43.6\n1359\t53.7\n1360\t64.4\n1361\t84.0\n1362\t73.4\n1363\t62.5\n1364\t66.6\n1365\t41.9\n1366\t50.6\n1367\t40.9\n1368\t48.3\n1369\t56.7\n1370\t66.4\n1371\t40.6\n1372\t53.8\n1373\t40.8\n1374\t32.7\n1375\t48.1\n1376\t22.0\n1377\t39.9\n1378\t37.7\n1379\t41.2\n1380\t57.7\n1381\t47.1\n1382\t66.3\n1383\t35.8\n1384\t40.6\n1385\t57.8\n1386\t54.7\n1387\t54.8\n1388\t28.5\n1389\t33.9\n1390\t57.6\n1391\t28.6\n1392\t48.7\n1393\t39.3\n1394\t39.5\n1395\t29.4\n1396\t34.5\n1397\t33.6\n1398\t26.8\n1399\t37.8\n1400\t21.6\n1401\t17.1\n1402\t24.6\n1403\t12.8\n1404\t31.6\n1405\t38.4\n1406\t24.5\n1407\t17.6\n1408\t12.9\n1409\t16.5\n1410\t9.3\n1411\t12.7\n1412\t7.3\n1413\t14.1\n1414\t9.0\n1415\t1.5\n1416\t0.0\n1417\t0.7\n1418\t9.2\n1419\t5.1\n1420\t2.9\n1421\t1.5\n1422\t5.0\n1423\t4.8\n1424\t9.8\n1425\t13.5\n1426\t9.6\n1427\t25.2\n1428\t15.5\n1429\t15.7\n1430\t26.5\n1431\t36.6\n1432\t26.7\n1433\t31.1\n1434\t29.0\n1435\t34.4\n1436\t47.2\n1437\t61.6\n1438\t59.1\n1439\t67.6\n1440\t60.9\n1441\t59.9\n1442\t52.7\n1443\t41.0\n1444\t103.9\n1445\t108.4\n1446\t59.2\n1447\t79.6\n1448\t80.6\n1449\t59.3\n1450\t78.1\n1451\t104.4\n1452\t77.3\n1453\t114.9\n1454\t157.5\n1455\t160.0\n1456\t176.0\n1457\t135.6\n1458\t132.4\n1459\t153.8\n1460\t136.0\n1461\t146.4\n1462\t147.5\n1463\t130.0\n1464\t88.3\n1465\t125.3\n1466\t143.2\n1467\t162.4\n1468\t145.5\n1469\t91.7\n1470\t103.0\n1471\t110.1\n1472\t80.3\n1473\t89.0\n1474\t105.4\n1475\t90.4\n1476\t79.5\n1477\t120.1\n1478\t88.4\n1479\t102.1\n1480\t107.6\n1481\t109.9\n1482\t105.5\n1483\t92.9\n1484\t114.6\n1485\t102.6\n1486\t112.0\n1487\t83.9\n1488\t86.7\n1489\t107.0\n1490\t98.3\n1491\t76.2\n1492\t47.9\n1493\t44.8\n1494\t66.9\n1495\t68.2\n1496\t47.1\n1497\t47.1\n1498\t55.4\n1499\t49.2\n1500\t60.8\n1501\t64.2\n1502\t46.4\n1503\t32.0\n1504\t44.6\n1505\t38.2\n1506\t67.8\n1507\t61.3\n1508\t28.0\n1509\t34.3\n1510\t28.9\n1511\t29.3\n1512\t14.6\n1513\t21.5\n1514\t33.8\n1515\t29.1\n1516\t11.5\n1517\t23.9\n1518\t12.5\n1519\t14.6\n1520\t2.4\n1521\t12.7\n1522\t17.7\n1523\t9.9\n1524\t14.3\n1525\t15.0\n1526\t30.6\n1527\t2.3\n1528\t5.1\n1529\t1.6\n1530\t15.2\n1531\t8.8\n1532\t9.9\n1533\t14.3\n1534\t9.9\n1535\t8.2\n1536\t24.4\n1537\t8.7\n1538\t11.9\n1539\t15.8\n1540\t21.6\n1541\t14.2\n1542\t6.0\n1543\t6.3\n1544\t16.9\n1545\t6.7\n1546\t14.2\n1547\t2.2\n1548\t3.3\n1549\t6.6\n1550\t7.8\n1551\t0.1\n1552\t5.9\n1553\t6.4\n1554\t0.1\n1555\t0.0\n1556\t5.3\n1557\t1.1\n1558\t4.1\n1559\t0.5\n1560\t1.0\n1561\t0.6\n1562\t0.0\n1563\t6.2\n1564\t2.4\n1565\t4.8\n1566\t7.5\n1567\t10.7\n1568\t6.1\n1569\t12.3\n1570\t13.1\n1571\t7.3\n1572\t24.0\n1573\t27.2\n1574\t19.3\n1575\t19.5\n1576\t23.5\n1577\t34.1\n1578\t21.9\n1579\t48.1\n1580\t66.0\n1581\t43.0\n1582\t30.7\n1583\t29.6\n1584\t36.4\n1585\t53.2\n1586\t51.5\n1587\t51.6\n1588\t43.5\n1589\t60.5\n1590\t76.9\n1591\t58.4\n1592\t53.2\n1593\t64.4\n1594\t54.8\n1595\t47.3\n1596\t45.0\n1597\t69.5\n1598\t66.8\n1599\t95.8\n1600\t64.1\n1601\t45.2\n1602\t45.4\n1603\t40.4\n1604\t57.7\n1605\t59.2\n1606\t84.4\n1607\t41.8\n1608\t60.6\n1609\t46.9\n1610\t42.8\n1611\t82.1\n1612\t31.5\n1613\t76.3\n1614\t80.6\n1615\t46.0\n1616\t52.6\n1617\t83.8\n1618\t84.5\n1619\t75.9\n1620\t91.5\n1621\t86.9\n1622\t87.5\n1623\t76.1\n1624\t66.5\n1625\t51.2\n1626\t53.1\n1627\t55.8\n1628\t61.9\n1629\t47.8\n1630\t36.6\n1631\t47.2\n1632\t42.8\n1633\t71.8\n1634\t49.8\n1635\t55.0\n1636\t73.0\n1637\t83.7\n1638\t66.5\n1639\t50.0\n1640\t39.6\n1641\t38.7\n1642\t30.9\n1643\t21.7\n1644\t29.9\n1645\t25.9\n1646\t57.3\n1647\t43.7\n1648\t30.7\n1649\t27.1\n1650\t30.3\n1651\t16.9\n1652\t21.4\n1653\t8.6\n1654\t0.3\n1655\t13.0\n1656\t10.3\n1657\t13.2\n1658\t4.2\n1659\t6.9\n1660\t20.0\n1661\t15.7\n1662\t23.4\n1663\t21.4\n1664\t7.4\n1665\t6.6\n1666\t6.9\n1667\t20.7\n1668\t12.7\n1669\t7.1\n1670\t7.8\n1671\t5.1\n1672\t7.0\n1673\t7.1\n1674\t3.1\n1675\t2.8\n1676\t8.8\n1677\t2.1\n1678\t10.7\n1679\t6.7\n1680\t0.8\n1681\t8.5\n1682\t6.7\n1683\t4.3\n1684\t2.4\n1685\t6.4\n1686\t9.4\n1687\t20.6\n1688\t6.5\n1689\t2.1\n1690\t0.2\n1691\t6.7\n1692\t5.3\n1693\t0.6\n1694\t5.1\n1695\t1.6\n1696\t4.8\n1697\t1.3\n1698\t11.6\n1699\t8.5\n1700\t17.2\n1701\t11.2\n1702\t9.6\n1703\t7.8\n1704\t13.5\n1705\t22.2\n1706\t10.4\n1707\t20.5\n1708\t41.1\n1709\t48.3\n1710\t58.8\n1711\t33.0\n1712\t53.8\n1713\t51.5\n1714\t41.9\n1715\t32.5\n1716\t69.1\n1717\t75.6\n1718\t49.9\n1719\t69.6\n1720\t79.6\n1721\t76.3\n1722\t76.5\n1723\t101.4\n1724\t62.8\n1725\t70.5\n1726\t65.4\n1727\t78.6\n1728\t75.0\n1729\t73.0\n1730\t65.7\n1731\t88.1\n1732\t84.7\n1733\t89.9\n1734\t88.6\n1735\t129.2\n1736\t77.9\n1737\t80.0\n1738\t75.1\n1739\t93.8\n1740\t83.2\n1741\t84.6\n1742\t52.3\n1743\t81.6\n1744\t101.2\n1745\t98.9\n1746\t106.0\n1747\t70.3\n1748\t65.9\n1749\t75.5\n1750\t56.6\n1751\t60.0\n1752\t63.3\n1753\t67.2\n1754\t61.0\n1755\t76.9\n1756\t67.5\n1757\t71.5\n1758\t47.8\n1759\t68.9\n1760\t57.7\n1761\t67.9\n1762\t47.2\n1763\t70.7\n1764\t29.0\n1765\t57.4\n1766\t52.0\n1767\t43.8\n1768\t27.7\n1769\t49.0\n1770\t45.0\n1771\t27.2\n1772\t61.3\n1773\t28.7\n1774\t38.0\n1775\t42.6\n1776\t40.6\n1777\t29.4\n1778\t29.1\n1779\t31.0\n1780\t20.0\n1781\t11.3\n1782\t27.6\n1783\t21.8\n1784\t48.1\n1785\t14.3\n1786\t8.4\n1787\t33.3\n1788\t30.2\n1789\t36.4\n1790\t38.3\n1791\t14.5\n1792\t25.8\n1793\t22.3\n1794\t9.0\n1795\t31.4\n1796\t34.8\n1797\t34.4\n1798\t30.9\n1799\t12.6\n1800\t19.5\n1801\t9.2\n1802\t18.1\n1803\t14.2\n1804\t7.7\n1805\t20.5\n1806\t13.5\n1807\t2.9\n1808\t8.4\n1809\t13.0\n1810\t7.8\n1811\t10.5\n1812\t9.4\n1813\t13.6\n1814\t8.6\n1815\t16.0\n1816\t15.2\n1817\t12.1\n1818\t8.3\n1819\t4.3\n1820\t8.3\n1821\t12.9\n1822\t4.5\n1823\t0.3\n1824\t0.2\n1825\t2.4\n1826\t4.5\n1827\t0.0\n1828\t10.2\n1829\t5.8\n1830\t0.7\n1831\t1.0\n1832\t0.6\n1833\t3.7\n1834\t3.8\n1835\t0.0\n1836\t5.5\n1837\t0.0\n1838\t12.4\n1839\t0.0\n1840\t2.8\n1841\t1.4\n1842\t0.9\n1843\t2.3\n1844\t7.6\n1845\t16.3\n1846\t10.3\n1847\t1.1\n1848\t8.3\n1849\t17.0\n1850\t13.5\n1851\t26.1\n1852\t14.6\n1853\t16.3\n1854\t27.9\n1855\t28.8\n1856\t11.1\n1857\t38.9\n1858\t44.5\n1859\t45.6\n1860\t31.6\n1861\t24.5\n1862\t37.2\n1863\t43.0\n1864\t39.5\n1865\t41.9\n1866\t50.6\n1867\t58.2\n1868\t30.1\n1869\t54.2\n1870\t38.0\n1871\t54.6\n1872\t54.8\n1873\t85.8\n1874\t56.5\n1875\t39.3\n1876\t48.0\n1877\t49.0\n1878\t73.0\n1879\t58.8\n1880\t55.0\n1881\t78.7\n1882\t107.2\n1883\t55.5\n1884\t45.5\n1885\t31.3\n1886\t64.5\n1887\t55.3\n1888\t57.7\n1889\t63.2\n1890\t103.6\n1891\t47.7\n1892\t56.1\n1893\t17.8\n1894\t38.9\n1895\t64.7\n1896\t76.4\n1897\t108.2\n1898\t60.7\n1899\t52.6\n1900\t42.9\n1901\t40.4\n1902\t49.7\n1903\t54.3\n1904\t85.0\n1905\t65.4\n1906\t61.5\n1907\t47.3\n1908\t39.2\n1909\t33.9\n1910\t28.7\n1911\t57.6\n1912\t40.8\n1913\t48.1\n1914\t39.5\n1915\t90.5\n1916\t86.9\n1917\t32.3\n1918\t45.5\n1919\t39.5\n1920\t56.7\n1921\t46.6\n1922\t66.3\n1923\t32.3\n1924\t36.0\n1925\t22.6\n1926\t35.8\n1927\t23.1\n1928\t38.8\n1929\t58.4\n1930\t55.8\n1931\t54.2\n1932\t26.4\n1933\t31.5\n1934\t21.4\n1935\t8.4\n1936\t22.2\n1937\t12.3\n1938\t14.1\n1939\t11.5\n1940\t26.2\n1941\t38.3\n1942\t4.9\n1943\t5.8\n1944\t3.4\n1945\t9.0\n1946\t7.8\n1947\t16.5\n1948\t9.0\n1949\t2.2\n1950\t3.5\n1951\t4.0\n1952\t4.0\n1953\t2.6\n1954\t4.2\n1955\t2.2\n1956\t0.3\n1957\t0.0\n1958\t4.9\n1959\t4.5\n1960\t4.4\n1961\t4.1\n1962\t3.0\n1963\t0.3\n1964\t9.5\n1965\t4.6\n1966\t1.1\n1967\t6.4\n1968\t2.3\n1969\t2.9\n1970\t0.5\n1971\t0.9\n1972\t0.0\n1973\t0.0\n1974\t1.7\n1975\t0.2\n1976\t1.2\n1977\t3.1\n1978\t0.7\n1979\t3.8\n1980\t2.8\n1981\t2.6\n1982\t3.1\n1983\t17.3\n1984\t5.2\n1985\t11.4\n1986\t5.4\n1987\t7.7\n1988\t12.7\n1989\t8.2\n1990\t16.4\n1991\t22.3\n1992\t23.0\n1993\t42.3\n1994\t38.8\n1995\t41.3\n1996\t33.0\n1997\t68.8\n1998\t71.6\n1999\t69.6\n2000\t49.5\n2001\t53.5\n2002\t42.5\n2003\t34.5\n2004\t45.3\n2005\t55.4\n2006\t67.0\n2007\t71.8\n2008\t74.5\n2009\t67.7\n2010\t53.5\n2011\t35.2\n2012\t45.1\n2013\t50.7\n2014\t65.6\n2015\t53.0\n2016\t74.7\n2017\t71.9\n2018\t94.8\n2019\t74.7\n2020\t114.1\n2021\t114.9\n2022\t119.8\n2023\t154.5\n2024\t129.4\n2025\t72.2\n2026\t96.4\n2027\t129.3\n2028\t96.0\n2029\t65.3\n2030\t72.2\n2031\t80.5\n2032\t76.7\n2033\t59.4\n2034\t107.6\n2035\t101.7\n2036\t79.9\n2037\t85.0\n2038\t83.4\n2039\t59.2\n2040\t48.1\n2041\t79.5\n2042\t66.5\n2043\t51.8\n2044\t88.1\n2045\t111.2\n2046\t64.7\n2047\t69.0\n2048\t54.7\n2049\t52.8\n2050\t42.0\n2051\t34.9\n2052\t51.1\n2053\t53.9\n2054\t70.2\n2055\t14.8\n2056\t33.3\n2057\t38.7\n2058\t27.5\n2059\t19.2\n2060\t36.3\n2061\t49.6\n2062\t27.2\n2063\t29.9\n2064\t31.5\n2065\t28.3\n2066\t26.7\n2067\t32.4\n2068\t22.2\n2069\t33.7\n2070\t41.9\n2071\t22.8\n2072\t17.8\n2073\t18.2\n2074\t17.8\n2075\t20.3\n2076\t11.8\n2077\t26.4\n2078\t54.7\n2079\t11.0\n2080\t8.0\n2081\t5.8\n2082\t10.9\n2083\t6.5\n2084\t4.7\n2085\t6.2\n2086\t7.4\n2087\t17.5\n2088\t4.5\n2089\t1.5\n2090\t3.3\n2091\t6.1\n2092\t3.2\n2093\t9.1\n2094\t3.5\n2095\t0.5\n2096\t13.2\n2097\t11.6\n2098\t10.0\n2099\t2.8\n2100\t0.5\n2101\t5.1\n2102\t1.8\n2103\t11.3\n2104\t20.8\n2105\t24.0\n2106\t28.1\n2107\t19.3\n2108\t25.1\n2109\t25.6\n2110\t22.5\n2111\t16.5\n2112\t5.5\n2113\t23.2\n2114\t18.0\n2115\t31.7\n2116\t42.8\n2117\t47.5\n2118\t38.5\n2119\t37.9\n2120\t60.2\n2121\t69.2\n2122\t58.6\n2123\t98.6\n2124\t71.8\n2125\t69.9\n2126\t62.5\n2127\t38.5\n2128\t64.3\n2129\t73.5\n2130\t52.3\n2131\t61.6\n2132\t60.8\n2133\t71.5\n2134\t60.5\n2135\t79.4\n2136\t81.6\n2137\t93.0\n2138\t69.6\n2139\t93.5\n2140\t79.1\n2141\t59.1\n2142\t54.9\n2143\t53.8\n2144\t68.4\n2145\t63.1\n2146\t67.2\n2147\t45.2\n2148\t83.5\n2149\t73.5\n2150\t85.5\n2151\t80.6\n2152\t77.0\n2153\t91.4\n2154\t98.0\n2155\t83.8\n2156\t89.7\n2157\t61.4\n2158\t50.3\n2159\t59.0\n2160\t68.9\n2161\t62.8\n2162\t50.2\n2163\t52.8\n2164\t58.2\n2165\t71.9\n2166\t70.2\n2167\t65.8\n2168\t34.4\n2169\t54.0\n2170\t81.1\n2171\t108.0\n2172\t65.3\n2173\t49.9\n2174\t35.0\n2175\t38.2\n2176\t36.8\n2177\t28.8\n2178\t21.9\n2179\t24.9\n2180\t32.1\n2181\t34.4\n2182\t35.6\n2183\t25.8\n2184\t14.6\n2185\t43.1\n2186\t30.0\n2187\t31.2\n2188\t24.6\n2189\t15.3\n2190\t17.4\n2191\t13.0\n2192\t19.0\n2193\t10.0\n2194\t18.7\n2195\t17.8\n2196\t12.1\n2197\t10.6\n2198\t11.2\n2199\t11.2\n2200\t17.9\n2201\t22.2\n2202\t9.6\n2203\t6.8\n2204\t4.0\n2205\t8.9\n2206\t8.2\n2207\t11.0\n2208\t12.3\n2209\t22.2\n2210\t10.1\n2211\t2.9\n2212\t3.2\n2213\t5.2\n2214\t2.8\n2215\t0.2\n2216\t5.1\n2217\t3.0\n2218\t0.6\n2219\t0.3\n2220\t3.4\n2221\t7.8\n2222\t4.3\n2223\t11.3\n2224\t19.7\n2225\t6.7\n2226\t9.3\n2227\t8.3\n2228\t4.0\n2229\t5.7\n2230\t8.7\n2231\t15.4\n2232\t18.6\n2233\t20.5\n2234\t23.1\n2235\t12.2\n2236\t27.3\n2237\t45.7\n2238\t33.9\n2239\t30.1\n2240\t42.1\n2241\t53.2\n2242\t64.2\n2243\t61.5\n2244\t62.8\n2245\t74.3\n2246\t77.1\n2247\t74.9\n2248\t54.6\n2249\t70.0\n2250\t52.3\n2251\t87.0\n2252\t76.0\n2253\t89.0\n2254\t115.4\n2255\t123.4\n2256\t132.5\n2257\t128.5\n2258\t83.9\n2259\t109.3\n2260\t116.7\n2261\t130.3\n2262\t145.1\n2263\t137.7\n2264\t100.7\n2265\t124.9\n2266\t74.4\n2267\t88.8\n2268\t98.4\n2269\t119.2\n2270\t86.5\n2271\t101.0\n2272\t127.4\n2273\t97.5\n2274\t165.3\n2275\t115.7\n2276\t89.6\n2277\t99.1\n2278\t122.2\n2279\t92.7\n2280\t80.3\n2281\t77.4\n2282\t64.6\n2283\t109.1\n2284\t118.3\n2285\t101.0\n2286\t97.6\n2287\t105.8\n2288\t112.6\n2289\t88.1\n2290\t68.1\n2291\t42.1\n2292\t50.5\n2293\t59.4\n2294\t83.3\n2295\t60.7\n2296\t54.4\n2297\t83.9\n2298\t67.5\n2299\t105.5\n2300\t66.5\n2301\t55.0\n2302\t58.4\n2303\t68.3\n2304\t45.6\n2305\t44.5\n2306\t46.4\n2307\t32.8\n2308\t29.5\n2309\t59.8\n2310\t66.9\n2311\t60.0\n2312\t65.9\n2313\t46.3\n2314\t38.4\n2315\t33.7\n2316\t35.6\n2317\t52.8\n2318\t54.2\n2319\t60.7\n2320\t25.0\n2321\t11.4\n2322\t17.7\n2323\t20.2\n2324\t17.2\n2325\t19.2\n2326\t30.7\n2327\t22.5\n2328\t12.5\n2329\t28.9\n2330\t27.4\n2331\t26.1\n2332\t14.1\n2333\t7.6\n2334\t13.2\n2335\t19.4\n2336\t10.0\n2337\t7.8\n2338\t10.2\n2339\t18.8\n2340\t3.7\n2341\t0.5\n2342\t11.0\n2343\t0.3\n2344\t2.5\n2345\t5.0\n2346\t5.0\n2347\t16.7\n2348\t14.3\n2349\t16.9\n2350\t10.8\n2351\t28.4\n2352\t18.5\n2353\t12.7\n2354\t21.5\n2355\t32.0\n2356\t30.6\n2357\t36.2\n2358\t42.6\n2359\t25.9\n2360\t34.9\n2361\t68.8\n2362\t46.0\n2363\t27.4\n2364\t47.6\n2365\t86.2\n2366\t76.6\n2367\t75.7\n2368\t84.9\n2369\t73.5\n2370\t116.2\n2371\t107.2\n2372\t94.4\n2373\t102.3\n2374\t123.8\n2375\t121.7\n2376\t115.7\n2377\t133.4\n2378\t129.8\n2379\t149.8\n2380\t201.3\n2381\t163.9\n2382\t157.9\n2383\t188.8\n2384\t169.4\n2385\t163.6\n2386\t128.0\n2387\t116.5\n2388\t108.5\n2389\t86.1\n2390\t94.8\n2391\t189.7\n2392\t174.0\n2393\t167.8\n2394\t142.2\n2395\t157.9\n2396\t143.3\n2397\t136.3\n2398\t95.8\n2399\t138.0\n2400\t119.1\n2401\t182.3\n2402\t157.5\n2403\t147.0\n2404\t106.2\n2405\t121.7\n2406\t125.8\n2407\t123.8\n2408\t145.3\n2409\t131.6\n2410\t143.5\n2411\t117.6\n2412\t101.6\n2413\t94.8\n2414\t109.7\n2415\t113.4\n2416\t106.2\n2417\t83.6\n2418\t91.0\n2419\t85.2\n2420\t51.3\n2421\t61.4\n2422\t54.8\n2423\t54.1\n2424\t59.9\n2425\t59.9\n2426\t55.9\n2427\t92.9\n2428\t108.5\n2429\t100.6\n2430\t61.5\n2431\t61.0\n2432\t83.1\n2433\t51.6\n2434\t52.4\n2435\t45.8\n2436\t40.7\n2437\t22.7\n2438\t22.0\n2439\t29.1\n2440\t23.4\n2441\t36.4\n2442\t39.3\n2443\t54.9\n2444\t28.2\n2445\t23.8\n2446\t22.1\n2447\t34.3\n2448\t26.5\n2449\t3.9\n2450\t10.0\n2451\t27.8\n2452\t12.5\n2453\t21.8\n2454\t8.6\n2455\t23.5\n2456\t19.3\n2457\t8.2\n2458\t1.6\n2459\t2.5\n2460\t0.2\n2461\t0.5\n2462\t10.9\n2463\t1.8\n2464\t0.8\n2465\t0.2\n2466\t4.8\n2467\t8.4\n2468\t1.5\n2469\t7.0\n2470\t9.2\n2471\t7.6\n2472\t23.1\n2473\t20.8\n2474\t4.9\n2475\t11.3\n2476\t28.9\n2477\t31.7\n2478\t26.7\n2479\t40.7\n2480\t42.7\n2481\t58.5\n2482\t89.2\n2483\t76.9\n2484\t73.6\n2485\t124.0\n2486\t118.4\n2487\t110.7\n2488\t136.6\n2489\t116.6\n2490\t129.1\n2491\t169.6\n2492\t173.2\n2493\t155.3\n2494\t201.3\n2495\t192.1\n2496\t165.0\n2497\t130.3\n2498\t157.4\n2499\t175.2\n2500\t164.6\n2501\t200.7\n2502\t187.2\n2503\t158.0\n2504\t235.8\n2505\t253.8\n2506\t210.9\n2507\t239.4\n2508\t202.5\n2509\t164.9\n2510\t190.7\n2511\t196.0\n2512\t175.3\n2513\t171.5\n2514\t191.4\n2515\t200.2\n2516\t201.2\n2517\t181.5\n2518\t152.3\n2519\t187.6\n2520\t217.4\n2521\t143.1\n2522\t185.7\n2523\t163.3\n2524\t172.0\n2525\t168.7\n2526\t149.6\n2527\t199.6\n2528\t145.2\n2529\t111.4\n2530\t124.0\n2531\t125.0\n2532\t146.3\n2533\t106.0\n2534\t102.2\n2535\t122.0\n2536\t119.6\n2537\t110.2\n2538\t121.7\n2539\t134.1\n2540\t127.2\n2541\t82.8\n2542\t89.6\n2543\t85.6\n2544\t57.9\n2545\t46.1\n2546\t53.0\n2547\t61.4\n2548\t51.0\n2549\t77.4\n2550\t70.2\n2551\t55.8\n2552\t63.6\n2553\t37.7\n2554\t32.6\n2555\t39.9\n2556\t38.7\n2557\t50.3\n2558\t45.6\n2559\t46.4\n2560\t43.7\n2561\t42.0\n2562\t21.8\n2563\t21.8\n2564\t51.3\n2565\t39.5\n2566\t26.9\n2567\t23.2\n2568\t19.8\n2569\t24.4\n2570\t17.1\n2571\t29.3\n2572\t43.0\n2573\t35.9\n2574\t19.6\n2575\t33.2\n2576\t38.8\n2577\t35.3\n2578\t23.4\n2579\t14.9\n2580\t15.3\n2581\t17.7\n2582\t16.5\n2583\t8.6\n2584\t9.5\n2585\t9.1\n2586\t3.1\n2587\t9.3\n2588\t4.7\n2589\t6.1\n2590\t7.4\n2591\t15.1\n2592\t17.5\n2593\t14.3\n2594\t11.7\n2595\t6.8\n2596\t24.1\n2597\t15.9\n2598\t11.9\n2599\t8.9\n2600\t16.8\n2601\t20.1\n2602\t15.8\n2603\t17.0\n2604\t28.2\n2605\t24.4\n2606\t25.3\n2607\t48.7\n2608\t45.3\n2609\t47.7\n2610\t56.7\n2611\t51.2\n2612\t50.2\n2613\t57.2\n2614\t57.2\n2615\t70.4\n2616\t110.9\n2617\t93.6\n2618\t111.8\n2619\t69.5\n2620\t86.5\n2621\t67.3\n2622\t91.5\n2623\t107.2\n2624\t76.8\n2625\t88.2\n2626\t94.3\n2627\t126.4\n2628\t121.8\n2629\t111.9\n2630\t92.2\n2631\t81.2\n2632\t127.2\n2633\t110.3\n2634\t96.1\n2635\t109.3\n2636\t117.2\n2637\t107.7\n2638\t86.0\n2639\t109.8\n2640\t104.4\n2641\t120.5\n2642\t135.8\n2643\t106.8\n2644\t120.0\n2645\t106.0\n2646\t96.8\n2647\t98.0\n2648\t91.3\n2649\t95.7\n2650\t93.5\n2651\t97.9\n2652\t111.5\n2653\t127.8\n2654\t102.9\n2655\t109.5\n2656\t127.5\n2657\t106.8\n2658\t112.5\n2659\t93.0\n2660\t99.5\n2661\t86.6\n2662\t95.2\n2663\t83.5\n2664\t91.3\n2665\t79.0\n2666\t60.7\n2667\t71.8\n2668\t57.5\n2669\t49.8\n2670\t81.0\n2671\t61.4\n2672\t50.2\n2673\t51.7\n2674\t63.2\n2675\t82.2\n2676\t61.5\n2677\t88.4\n2678\t80.1\n2679\t63.2\n2680\t80.5\n2681\t88.0\n2682\t76.5\n2683\t76.8\n2684\t64.0\n2685\t61.3\n2686\t41.6\n2687\t45.3\n2688\t43.4\n2689\t42.9\n2690\t46.0\n2691\t57.7\n2692\t42.4\n2693\t39.5\n2694\t23.1\n2695\t25.6\n2696\t59.3\n2697\t30.7\n2698\t23.9\n2699\t23.3\n2700\t27.6\n2701\t26.0\n2702\t21.3\n2703\t40.3\n2704\t39.5\n2705\t36.0\n2706\t55.8\n2707\t33.6\n2708\t40.2\n2709\t47.1\n2710\t25.0\n2711\t20.5\n2712\t18.9\n2713\t11.5\n2714\t11.5\n2715\t5.1\n2716\t9.0\n2717\t11.4\n2718\t28.2\n2719\t39.7\n2720\t13.9\n2721\t9.1\n2722\t19.4\n2723\t7.8\n2724\t8.1\n2725\t4.3\n2726\t21.9\n2727\t18.8\n2728\t12.4\n2729\t12.2\n2730\t1.9\n2731\t16.4\n2732\t13.5\n2733\t20.6\n2734\t5.2\n2735\t15.3\n2736\t16.4\n2737\t23.1\n2738\t8.7\n2739\t12.9\n2740\t18.6\n2741\t38.5\n2742\t21.4\n2743\t30.1\n2744\t44.0\n2745\t43.8\n2746\t29.1\n2747\t43.2\n2748\t51.9\n2749\t93.6\n2750\t76.5\n2751\t99.7\n2752\t82.7\n2753\t95.1\n2754\t70.4\n2755\t58.1\n2756\t138.2\n2757\t125.1\n2758\t97.9\n2759\t122.7\n2760\t166.6\n2761\t137.5\n2762\t138.0\n2763\t101.5\n2764\t134.4\n2765\t149.5\n2766\t159.4\n2767\t142.2\n2768\t188.4\n2769\t186.2\n2770\t183.3\n2771\t176.3\n2772\t159.6\n2773\t155.0\n2774\t126.2\n2775\t164.1\n2776\t179.9\n2777\t157.3\n2778\t136.3\n2779\t135.4\n2780\t155.0\n2781\t164.7\n2782\t147.9\n2783\t174.4\n2784\t114.0\n2785\t141.3\n2786\t135.5\n2787\t156.4\n2788\t127.5\n2789\t90.9\n2790\t143.8\n2791\t158.7\n2792\t167.3\n2793\t162.4\n2794\t137.5\n2795\t150.1\n2796\t111.2\n2797\t163.6\n2798\t153.8\n2799\t122.0\n2800\t82.2\n2801\t110.4\n2802\t106.1\n2803\t107.6\n2804\t118.8\n2805\t94.7\n2806\t98.1\n2807\t127.0\n2808\t84.3\n2809\t51.0\n2810\t66.5\n2811\t80.7\n2812\t99.2\n2813\t91.1\n2814\t82.2\n2815\t71.8\n2816\t50.3\n2817\t55.8\n2818\t33.4\n2819\t33.4\n2820\t57.0\n2821\t85.4\n2822\t83.5\n2823\t69.7\n2824\t76.4\n2825\t46.1\n2826\t37.4\n2827\t25.5\n2828\t15.7\n2829\t12.0\n2830\t22.8\n2831\t18.7\n2832\t16.5\n2833\t15.9\n2834\t17.2\n2835\t16.2\n2836\t27.5\n2837\t24.2\n2838\t30.7\n2839\t11.1\n2840\t3.9\n2841\t18.6\n2842\t16.2\n2843\t17.3\n2844\t2.5\n2845\t23.2\n2846\t15.1\n2847\t18.5\n2848\t13.7\n2849\t1.1\n2850\t18.1\n2851\t7.4\n2852\t3.8\n2853\t35.4\n2854\t15.2\n2855\t6.8\n2856\t10.4\n2857\t2.4\n2858\t14.7\n2859\t39.6\n2860\t33.0\n2861\t17.4\n2862\t33.0\n2863\t38.7\n2864\t33.9\n2865\t60.6\n2866\t39.9\n2867\t27.1\n2868\t59.0\n2869\t40.0\n2870\t76.2\n2871\t88.0\n2872\t60.1\n2873\t101.8\n2874\t113.8\n2875\t111.6\n2876\t120.1\n2877\t125.1\n2878\t125.1\n2879\t179.2\n2880\t161.3\n2881\t165.1\n2882\t131.4\n2883\t130.6\n2884\t138.5\n2885\t196.2\n2886\t126.9\n2887\t168.9\n2888\t176.7\n2889\t159.4\n2890\t173.0\n2891\t165.5\n2892\t177.3\n2893\t130.5\n2894\t140.3\n2895\t140.3\n2896\t132.2\n2897\t105.4\n2898\t149.4\n2899\t200.3\n2900\t125.2\n2901\t145.5\n2902\t131.4\n2903\t129.7\n2904\t136.9\n2905\t167.5\n2906\t141.9\n2907\t140.0\n2908\t121.3\n2909\t169.7\n2910\t173.7\n2911\t176.3\n2912\t125.3\n2913\t144.1\n2914\t108.2\n2915\t144.4\n2916\t150.0\n2917\t161.1\n2918\t106.7\n2919\t99.8\n2920\t73.8\n2921\t65.2\n2922\t85.7\n2923\t64.5\n2924\t63.9\n2925\t88.7\n2926\t91.8\n2927\t82.6\n2928\t59.3\n2929\t91.0\n2930\t69.8\n2931\t62.2\n2932\t61.3\n2933\t49.8\n2934\t57.9\n2935\t42.2\n2936\t22.4\n2937\t56.4\n2938\t35.6\n2939\t48.9\n2940\t57.8\n2941\t35.5\n2942\t31.7\n2943\t16.1\n2944\t17.8\n2945\t28.0\n2946\t35.1\n2947\t22.5\n2948\t25.7\n2949\t44.0\n2950\t18.0\n2951\t26.2\n2952\t24.2\n2953\t29.9\n2954\t31.1\n2955\t14.0\n2956\t14.5\n2957\t15.6\n2958\t14.5\n2959\t14.3\n2960\t11.8\n2961\t21.1\n2962\t9.0\n2963\t10.0\n2964\t11.5\n2965\t4.4\n2966\t9.2\n2967\t4.8\n2968\t5.5\n2969\t11.8\n2970\t8.2\n2971\t14.4\n2972\t1.6\n2973\t0.9\n2974\t17.9\n2975\t13.3\n2976\t5.7\n2977\t7.6\n2978\t8.7\n2979\t15.5\n2980\t18.5\n2981\t12.7\n2982\t10.4\n2983\t24.4\n2984\t51.3\n2985\t22.8\n2986\t39.0\n2987\t41.2\n2988\t31.9\n2989\t40.3\n2990\t54.8\n2991\t53.4\n2992\t56.3\n2993\t70.7\n2994\t66.6\n2995\t92.2\n2996\t92.9\n2997\t55.5\n2998\t74.0\n2999\t81.9\n3000\t62.0\n3001\t66.3\n3002\t68.8\n3003\t63.7\n3004\t106.4\n3005\t137.7\n3006\t113.5\n3007\t93.7\n3008\t71.5\n3009\t116.7\n3010\t133.2\n3011\t84.6\n3012\t90.1\n3013\t112.9\n3014\t138.5\n3015\t125.5\n3016\t121.6\n3017\t124.9\n3018\t170.1\n3019\t130.5\n3020\t109.7\n3021\t99.4\n3022\t106.8\n3023\t104.4\n3024\t95.6\n3025\t80.6\n3026\t113.5\n3027\t107.7\n3028\t96.6\n3029\t134.0\n3030\t81.8\n3031\t106.4\n3032\t150.7\n3033\t125.5\n3034\t106.5\n3035\t132.2\n3036\t114.1\n3037\t107.4\n3038\t98.4\n3039\t120.7\n3040\t120.8\n3041\t88.3\n3042\t99.6\n3043\t116.4\n3044\t109.6\n3045\t97.5\n3046\t95.5\n3047\t80.8\n3048\t79.7\n3049\t46.0\n3050\t61.1\n3051\t60.0\n3052\t54.6\n3053\t77.4\n3054\t83.3\n3055\t72.7\n3056\t48.7\n3057\t65.5\n3058\t67.3\n3059\t46.5\n3060\t37.3\n3061\t45.8\n3062\t49.1\n3063\t39.3\n3064\t41.5\n3065\t43.2\n3066\t51.1\n3067\t40.9\n3068\t27.7\n3069\t48.0\n3070\t43.5\n3071\t17.9\n3072\t31.3\n3073\t29.2\n3074\t24.5\n3075\t24.2\n3076\t42.7\n3077\t39.3\n3078\t40.1\n3079\t36.4\n3080\t21.9\n3081\t8.7\n3082\t18.0\n3083\t41.1\n3084\t15.3\n3085\t4.9\n3086\t10.6\n3087\t30.2\n3088\t22.3\n3089\t13.9\n3090\t12.2\n3091\t12.9\n3092\t14.4\n3093\t10.5\n3094\t21.4\n3095\t13.6\n3096\t16.8\n3097\t10.7\n3098\t4.5\n3099\t3.4\n3100\t11.7\n3101\t12.1\n3102\t9.7\n3103\t6.0\n3104\t2.4\n3105\t0.9\n3106\t1.7\n3107\t10.1\n3108\t3.3\n3109\t2.1\n3110\t9.3\n3111\t2.9\n3112\t3.2\n3113\t3.4\n3114\t0.8\n3115\t0.5\n3116\t1.1\n3117\t2.9\n3118\t4.1\n3119\t0.8\n3120\t1.3\n3121\t1.4\n3122\t0.7\n3123\t0.8\n3124\t2.9\n3125\t2.9\n3126\t3.2\n3127\t0.0\n3128\t4.3\n3129\t4.8\n3130\t4.1\n3131\t10.8\n3132\t13.2\n3133\t18.8\n3134\t15.4\n3135\t8.0\n3136\t8.7\n3137\t13.6\n3138\t16.1\n3139\t19.6\n3140\t25.2\n3141\t23.5\n3142\t21.6\n"
  },
  {
    "path": "time series regression/autocorelation, mov avg etc/decomposition.py",
    "content": "# Import modules\nimport requests\nimport statsmodels.api as sm\nimport io\nimport pandas as pd\n\n# Load Dataset\nDATA_URL = \"http://robjhyndman.com/tsdldata/data/nybirths.dat\"\nfopen = requests.get(DATA_URL).content\nds = pd.read_csv(io.StringIO(fopen.decode(\"utf-8\")), header=None, names=[\"birthcount\"])\nprint(ds.head())\n\n# Add time index\ndate = pd.date_range(\"1946-01-01\", \"1959-12-31\", freq=\"1M\")\nds[\"Date\"] = pd.DataFrame(date)\nds = ds.set_index(\"Date\")\n\n# decompose dataset\nres = sm.tsa.seasonal_decompose(ds.birthcount, model=\"multiplicative\")\nresplot = res.plot()\n"
  },
  {
    "path": "time series regression/autocorelation, mov avg etc/doubleExponentialSmoothing.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport os\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\n\n\n# Read dataset into a pandas.DataFrame\nbeer_df = pd.read_csv(\n    \"datasets/quarterly-beer-production-in-aus-March 1956-June 1994.csv\"\n)\n\n# Display shape of the dataset\nprint(\"Shape of the dataframe:\", beer_df.shape)\nbeer_df.head()\n\n# Rename the 2nd column\nbeer_df.rename(\n    columns={\n        \"Quarterly beer production in Australia: megalitres. March 1956 ? June 1994\": \"Beer_Prod\"\n    },\n    inplace=True,\n)\n\n# Remove missing values\nmissing = (pd.isnull(beer_df[\"Quarter\"])) | (pd.isnull(beer_df[\"Beer_Prod\"]))\nprint(\"Number of rows with at least one missing values:\", missing.sum())\nbeer_df = beer_df.loc[~missing, :]\nprint(\"Shape after removing missing values:\", beer_df.shape)\n\n\n# Function for Sigle exponential smoothing\ndef double_exp_smoothing(x, alpha, beta):\n    yhat = [x[0]]  # first value is same as series\n    for t in range(1, len(x)):\n        if t == 1:\n            F, T = x[0], x[1] - x[0]\n        F_n_1, F = F, alpha * x[t] + (1 - alpha) * (F + T)\n        T = beta * (F - F_n_1) + (1 - beta) * T\n        yhat.append(F + T)\n    return yhat\n\n\nbeer_df[\"DEF\"] = double_exp_smoothing(beer_df[\"Beer_Prod\"], 0.4, 0.7)\n\n### Plot Single Exponential Smoothing forecasted value\nfig = plt.figure(figsize=(5.5, 5.5))\nax = fig.add_subplot(2, 1, 1)\nbeer_df[\"Beer_Prod\"].plot(ax=ax)\nax.set_title(\"Beer Production\")\nax = fig.add_subplot(2, 1, 2)\nbeer_df[\"DEF\"].plot(ax=ax, color=\"r\")\nax.set_title(\"Double Smoothing Forecast\")\nplt.savefig(\"plots/ch2/B07887_03_14.png\", format=\"png\", dpi=300)\n\n# Single vs Double Forecast value\n# Function for Sigle exponential smoothing\ndef single_exp_smoothing(x, alpha):\n    F = [x[0]]  # first value is same as series\n    for t in range(1, len(x)):\n        F.append(alpha * x[t] + (1 - alpha) * F[t - 1])\n    return F\n\n\nbeer_df[\"Single_Exponential_Forecast\"] = single_exp_smoothing(beer_df[\"Beer_Prod\"], 0.4)\n\n### Plot Single Exponential Smoothing forecasted value\nf, axarr = plt.subplots(2, sharex=True)\nf.set_size_inches(5.5, 5.5)\nbeer_df[\"Beer_Prod\"].iloc[:153].plot(color=\"b\", linestyle=\"-\", ax=axarr[0])\nbeer_df[\"DEF\"].iloc[:153].plot(color=\"r\", linestyle=\"--\", ax=axarr[0])\naxarr[0].set_title(\"Actual Vs Double Smoothing Forecasting\")\n\nbeer_df[\"Beer_Prod\"].iloc[:153].plot(color=\"b\", linestyle=\"-\", ax=axarr[1])\nbeer_df[\"Single_Exponential_Forecast\"].iloc[:153].plot(\n    color=\"r\", linestyle=\"--\", ax=axarr[1]\n)\naxarr[1].set_title(\"Actual Vs Single Smoothing Forecasting\")\n\n# Plot single and double exponential smoothing\nfig = plt.figure(figsize=(5.5, 5.5))\nax = fig.add_subplot(2, 1, 1)\nbeer_df[\"Single_Exponential_Forecast\"].plot(ax=ax)\nax.set_title(\"Single Exponential Smoothing\")\nax = fig.add_subplot(2, 1, 2)\nbeer_df[\"DEF\"].plot(ax=ax, color=\"r\")\nax.set_title(\"Double Smoothing Forecast\")\nplt.savefig(\"plots/ch2/B07887_03_14.png\", format=\"png\", dpi=300)\n"
  },
  {
    "path": "time series regression/autocorelation, mov avg etc/simpleExponentialSmoothing.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport os\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\n\n\n# Load Dataset\nibm_df = pd.read_csv(\"datasets/ibm-common-stock-closing-prices.csv\")\nibm_df.head()\n\n# Rename the second column\nibm_df.rename(columns={\"IBM common stock closing prices\": \"Close_Price\"}, inplace=True)\nibm_df.head()\n\n# Function for Sigle exponential smoothing\ndef single_exp_smoothing(x, alpha):\n    F = [x[0]]  # first value is same as series\n    for t in range(1, len(x)):\n        F.append(alpha * x[t] + (1 - alpha) * F[t - 1])\n    return F\n\n\nibm_df[\"SES\"] = single_exp_smoothing(ibm_df[\"Close_Price\"], 0.8)\n\n\n### Plot Single Exponential Smoothing forecasted value\nfig = plt.figure(figsize=(5.5, 5.5))\nax = fig.add_subplot(2, 1, 1)\nibm_df[\"Close_Price\"].plot(ax=ax)\nax.set_title(\"IBM Common Stock Close Prices during 1962-1965\")\nax = fig.add_subplot(2, 1, 2)\nibm_df[\"SES\"].plot(ax=ax, color=\"r\")\nax.set_title(\"Single Exponential Smoothing\")\nplt.savefig(\"plots/ch2/B07887_02_14.png\", format=\"png\", dpi=300)\n\n\n# Plot the forecasted values using multiple alpha values\n# Calculate the moving averages using 'rolling' and 'mean' functions\nibm_df[\"SES2\"] = single_exp_smoothing(ibm_df[\"Close_Price\"], 0.2)\nibm_df[\"SES6\"] = single_exp_smoothing(ibm_df[\"Close_Price\"], 0.6)\nibm_df[\"SES8\"] = single_exp_smoothing(ibm_df[\"Close_Price\"], 0.8)\n\n# Plot the curves\nf, axarr = plt.subplots(3, sharex=True)\nf.set_size_inches(5.5, 5.5)\n\nibm_df[\"Close_Price\"].iloc[:45].plot(color=\"b\", linestyle=\"-\", ax=axarr[0])\nibm_df[\"SES2\"].iloc[:45].plot(color=\"r\", linestyle=\"--\", ax=axarr[0])\naxarr[0].set_title(\"Alpha 0.2\")\n\nibm_df[\"Close_Price\"].iloc[:45].plot(color=\"b\", linestyle=\"-\", ax=axarr[1])\nibm_df[\"SES6\"].iloc[:45].plot(color=\"r\", linestyle=\"--\", ax=axarr[1])\naxarr[1].set_title(\"Alpha 0.6\")\n\nibm_df[\"Close_Price\"].iloc[:45].plot(color=\"b\", linestyle=\"-\", ax=axarr[2])\nibm_df[\"SES8\"].iloc[:45].plot(color=\"r\", linestyle=\"--\", ax=axarr[2])\naxarr[2].set_title(\"Alpha 0.8\")\nplt.savefig(\"plots/ch2/B07887_02_15.png\", format=\"png\", dpi=300)\n"
  },
  {
    "path": "time series regression/autocorelation, mov avg etc/tripleExponentialSmoothing.py",
    "content": "# Load modules\nfrom __future__ import print_function\nimport os\nimport pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\n\n# read the data from into a pandas.DataFrame\nwisc_emp = pd.read_csv(\"datasets/wisconsin-employment-time-series.csv\")\n\n# Let's find out the shape of the DataFrame\nprint(\"Shape of the DataFrame:\", wisc_emp.shape)\n\n# Let's see first 10 rows of it\nwisc_emp.head()\n\n# plot the wisconsin employment dataset\nwisc_emp.plot()\n\n# Capture seasonality component\ndef initialize_T(x, seasonLength):\n    total = 0.0\n    for i in range(seasonLength):\n        total += float(x[i + seasonLength] - x[i]) / seasonLength\n    return total\n\n\ninitialize_T(wisc_emp[\"Employment\"], 12)\n\n# Initialize seasonal trend\ndef initialize_seasonalilty(x, seasonLength):\n    seasons = {}\n    seasonsMean = []\n    num_season = int(len(x) / seasonLength)\n    # Compute season average\n    for i in range(num_season):\n        seasonsMean.append(\n            sum(x[seasonLength * i : seasonLength * i + seasonLength])\n            / float(seasonLength)\n        )\n\n    # compute season intial values\n    for i in range(seasonLength):\n        tot = 0.0\n        for j in range(num_season):\n            tot += x[seasonLength * j + i] - seasonsMean[j]\n        seasons[i] = tot / num_season\n    return seasons\n\n\ninitialize_seasonalilty(wisc_emp[\"Employment\"], 12)\n\n\n# Triple Exponential Smoothing Forecast\ndef triple_exp_smoothing(x, seasonLength, alpha, beta, gamma, h):\n    yhat = []\n    S = initialize_seasonalilty(x, seasonLength)\n    for i in range(len(x) + h):\n        if i == 0:\n            F = x[0]\n            T = initialize_T(x, seasonLength)\n            yhat.append(x[0])\n            continue\n        if i >= len(x):\n            m = i - len(x) + 1\n            yhat.append((F + m * T) + S[i % seasonLength])\n        else:\n            obsval = x[i]\n            F_last, F = (\n                F,\n                alpha * (obsval - S[i % seasonLength]) + (1 - alpha) * (F + T),\n            )\n            T = beta * (F - F_last) + (1 - beta) * T\n            S[i % seasonLength] = (\n                gamma * (obsval - F) + (1 - gamma) * S[i % seasonLength]\n            )\n            yhat.append(F + T + S[i % seasonLength])\n    return yhat\n\n\n# Triple exponential smoothing\nwisc_emp[\"TES\"] = triple_exp_smoothing(wisc_emp[\"Employment\"], 12, 0.4, 0.6, 0.2, 0)\n\n### Plot Single Exponential Smoothing forecasted value\nfig = plt.figure(figsize=(5.5, 5.5))\nax = fig.add_subplot(2, 1, 1)\nwisc_emp[\"Employment\"].plot(ax=ax)\nax.set_title(\"Beer Production\")\nax = fig.add_subplot(2, 1, 2)\nwisc_emp[\"TES\"].plot(ax=ax, color=\"r\")\nax.set_title(\"Triple Smoothing Forecast\")\nplt.savefig(\"plots/ch2/B07887_03_14.png\", format=\"png\", dpi=300)\n"
  }
]